マイクロプロセッサELC-1の構成要素

マイクロプロセッサELC-1には、以下に示す構成要素がある。

図1. マイクロプロセッサELC-1のアーキテクチャ

PC プログラムカウンタ(16ビット)

次に実行する命令を読み出すメモリアドレスが記録されている。
アドレス相対ジャンプのための加算機能がある。 インクリメント(値を1増加)機能がある。

IR 命令レジスタ(8ビット)

メモリから読み出した命令コードが記録されている。

AC アキュムレータ(8ビット)

ALU(算術論理装置)による8ビット演算結果が格納される。 ALUの左入力として使用される。

WA ワイドアキュムレータ(16ビット)

ALU(算術論理装置)による16ビット演算結果が格納される。
ALUの左入力として使用される。
インクリメント(値を1増加)およびデクリメント(値を1減少)機能がある。
ただし、インクリメント、デクリメントはALUを使用せず、フラグも変化しない。

B 汎用レジスタ(8ビット)

任意の8ビットのデータを記憶する。
インクリメント(値を1増加)およびデクリメント(値を1減少)機能がある。
ただし、インクリメント、デクリメントはALUを使用せず、フラグも変化しない。

X 汎用レジスタ(16ビット)

任意の16ビットのデータを記憶する。
インクリメント(値を1増加)およびデクリメント(値を1減少)機能がある。
ただし、インクリメント、デクリメントはALUを使用せず、フラグも変化しない。

MAR メモリアドレスレジスタ(16ビット)

メモリに与えるアドレスデータを格納する。
インクリメント(値を1増加)機能がある。

MDR メモリデータレジスタ(8ビット)

メモリからのデータ読み出しでは、メモリから読み出したデータが格納される。 メモリへのデータ書き込みでは、メモリに書き込むデータをMDRに格納してからメモリ書き込み信号を与える。

MDRH メモリデータレジスタ(8ビット)

以下に述べるMDRWの上位8ビットに対応するレジスタである。 MDRから値を転送して保存することが可能であり、MDRH単独で8ビットデータを読み出すことはできない。

MDRW メモリデータレジスタ(16ビット)

MDRWは16ビットデータを読み出すことだけが可能な仮想レジスタであり、実際に16ビットレジスタが存在するのではない。 MDRWの値を参照(読み出す)場合、上位8ビットはMDRHの値、下位8ビットはMDRの値が使用される。

ALU 算術論理装置(Arithmetic-Logic Unit)

算術演算、論理演算、シフト操作を行う。 上の図に示すように、ALUへの2つの入力のうち、左入力はアキュムレータACまたはWAの内容である。 左入力がACの場合は8ビット処理、WAの場合は16ビット処理を行う。 ALUによる処理結果は、必ずACまたはWAに格納される(例外として、処理結果がどこにも格納されない場合がある)。 左入力・処理内容・結果転送先に応じて以下のようにデータが取り扱われる。

ALUが8ビット処理を行う場合

ALUが16ビット処理を行う場合

ALUの処理内容と処理結果に応じて、次に示す状態フラグの値が更新される。

S 符号フラグ(1ビット)

ALUによる演算結果のMSBが'1'の場合にセット(値1が代入)され、MSBが'0'の 場合にリセット(値0が代入)される。 2の補数表現を用いた符号つきデータの場合はMSBは符号ビットとなるので、Sの値によって演算結果の符号(正またはゼロか、負か)を知ることができる。

C 桁上げフラグ(1ビット)

ALUによる加算が桁上げ(carry)を起こした場合、および減算が桁借り(borrow)を起こした場合にセット(値1が代入)される。 また、ALUによるシフト操作により、データのMSBまたはLSBが代入される。

Z ゼロフラグ(1ビット)

ALUによる演算結果がゼロとなる場合にセット(値1が代入)される。それ以外では、リセット(値0が代入)される。

H 停止フラグ(1ビット)

プロセッサの命令実行/停止の状態を制御する。Hの値が1の場合はプロセッサは停止し、次に実行すべき命令の読み出しを行わない。

※注意

アキュムレータAC、レジスタWAの入力にはALUの出力が接続していることと、ALUの一方の入力は常にACの出力またはWAの出力に接続されていること、MDRHの入力はMDRの出力に接続されていること、を除いて、レジスタ間のデータ転送には制約は無い。 つまり、データ転送経路は無数にあり、同時に実行可能なデータ転送数はデータ転送経路数によって制約されることはない。

MARMDRはメモリアクセスの際には必ず所要の値によって内容が書き換えられる。 特に、命令フェッチの際にはプログラムカウンタPCの値がMARに転送され、命令コードがメモリからMDRに転送される。 したがって、ある命令から次の命令に進んだときに必ずMARMDRの内容は書き換えられるので、ある命令で生成したデータを以降の命令で使用したいからといって、そのデータ保存場所としてMARMDRを用いることはできない。


■メモリ

ELC-1のアドレスビット数は9ビットであり、メモリ空間は512語、アドレスは0(16進数の000)から511(16進数の1FF)までとなる。 レジスタMARの下位9ビットがメモリアドレスとして使用される。

メモリの動作を制御する信号WRがあり、 WR=0のとき読み出し動作、WR=1のとき書き込み動作を行う。

メモリアクセス
ELC-1に接続しているメモリのアクセス時間は、ELC-1のクロック周期未満であると仮定してよい。メモリの読み書きは、以下のように行う。

図2. メモリアクセスタイミング