簡易CPU仕様案
by K.I
2000/12/13
Index
シーケンサとしての利用を想定した、簡易的なCPUの仕様案。
- 1bit ALU データバス1bitの8bitシリアル演算処理
- メモリ - 8bit×16word×16bank
- I/O - 8bit×16port(シフトレジスタ?)
- サブルーチン用スタック4段
- 割り込みは0番地へのジャンプ後、フラグにより分岐
- 1cycle = 20clock 完全同期型
- シリアル演算で完全同期のオリジナルアーキテクチャ
- 8bitインストラクションRISCコマンドセット
- シーケンサとして、bit操作命令を重視
- 条件ジャンプが無い代わりに、豊富な条件スキップ命令を持つ
- ±8の相対ジャンプ、任意のshift,rotateが可能(rightのみ)
- JSRはスタック方式のため、メモリを消費しない(4段まで)
- シリアル演算のため速度はかなり遅いが、シーケンスコントロールの自由度は大きい
[top]
[top]
1cycle = 20clock
[top]
5bitジョンソンカウンタによるステートマシンでクロックを生成する。1
Fetch/Executeの切替えは1bitのバイナリカウンタによって保持。
F 43210
-------
1 00000 F0 pre-fetch
1 00001 F1 fetch
1 00011 F2
1 00111 F3
1 01111 F4
1 11111 F5
1 11110 F6
1 11100 F7
1 11000 F8
1 10000 F9 post-fetch
0 00000 E0 pre-execute
0 00001 E1 execute
0 00011 E2
0 00111 E3
0 01111 E4
0 11111 E5
0 11110 E6
0 11100 E7
0 11000 E8
0 10000 E9 post-execute
1クロック生成の容易さから、ジョンソンカウンタを採用した。
[top]
8bitインストラクションのRISC形式のコマンドセット2。
hex binary mnemonic operation cz
--- --------- -------- ---------------------- --
00 0000 0000 nop No Operation xx
01 0000 0001 inv Invert 01
02 0000 0010 inc Increment **
03 0000 0011 dec Decrement **
04 0000 0100 ret Return Subroutine xx
05 0000 0101 inp Input xx
06 0000 0110 out Output xx
07 0000 0111 ---
08 0000 1000 skp z Skip if Zero xx
09 0000 1001 skp nz Skip if not Zero xx
0A 0000 1010 skp c Skip if Carry xx
0B 0000 1011 skp nc Skip if not Carry xx
0C 0000 1100 ret i Return Interrupt xx
0D 0000 1101 set z Set Zero 01
0E 0000 1110 set c Set Carry 1*
0F 0000 1111 hlt CPU Halt xx
1x 0001 aaaa ld aaaa Load 01
2x 0010 aaaa st aaaa Store 01
3x 0011 0bbb sft bbb Shift right 0*
3x 0011 1bbb rot bbb Rotate right 0*
4x 0100 kkkk bnk kkkk Change Bank xx
5x 0101 aaaa jps aaaa Jump Subroutine xx
6x 0110 aaaa --- jps reserve
7x 0111 aaaa jp aaaa Jump xx
8x 1000 iiii swap iiii swap I/O & set I/O bank xx
9x 1001 0rrr jr rrr Jump Relative Forword xx
9x 1001 1rrr jr -rrr Jump Relative Back xx
Ax 1010 aaaa add aaaa Add **
Bx 1011 aaaa sub aaaa Sub **
Cx 1100 aaaa and aaaa And 0*
Dx 1101 aaaa or aaaa OR 0*
Ex 1110 0bbb clr bbb Clear bit 01
Ex 1110 1bbb set bbb Set bit 01
Fx 1111 0bbb skp0 bbb Skip if bit=0 0*
Fx 1111 1bbb skp1 bbb Skip if bit=1 0*
--- --------- -------- ---------------------- --
aaaa: 4bit address
kkkk: 4bit bank address
iiii: 4bit I/O bank
bbb: bit location or shift count
rrr: ±8 relative value
flag x: no change, *: change, 0: low, 1: high
2確定ではない。特にI/O関係は未定。
[top]
以下は未定。
- パワーオンリセット
- カウンタースタートアップリセット
- ブラウンアウトリセット
- ウォッチドックタイマーリセット
- 割り込み用のレジスタが必要(アキュームレータを使う?)
- 割り込み許可フラグ
- 割り込みによる起動を示すフラグ
- ウォッチドックタイマーによる起動を示すフラグ
- 割り込み時のアキュームレータ、フラグの保存方法
- 割り込み時にバンクは保護されない。
- データメモリを分離して、データエリアのみにアクセスするようなコマンドセットにする。→ハーバードアーキテクチャ
- jp,jpsはジャンプテーブル(16 or 32程度)を使うコマンドにすることで、バンク切替えのオーバーヘッドを無くす。
[top]
[Homeに戻る]
⇒ Disqusの広告がうるさすぎるので基本は非表示にしました