ここからは前のページで紹介したCPUの設計図を見ながら各命令の詳細な動作について説明していきたいと思います。

CPUは1つの命令を実行するのに何段階かのステップを必要とします。それは特定のレジスタの値を更新したり、信号の経路を切り替えたりする作業に使われます。このCPUでは以下に示すように7段階のステップを通して1つの命令を実行する構造にしました。

※「待機」の状態とはCPUにリセット信号が入力されている時に入る状態です。リセット信号が入った時点で強制的に「待機」の状態へ送られます。

 

状態遷移図

図69.命令が実行される7段階のステップ

 

各ステップへの移動はCPU内で作られるクロック信号によって行われ、クロック信号が1発送られるたびに次のステップへと進みます。

JUMP命令

識別番号

00001

 

IR2の値の使い方

ジャンプ先のアドレス番号

 

動作の詳細

JUMP命令はプログラムカウンタの値をIR2で指定されたアドレス番号に書き換えることで、プログラム上の好きな位置へと処理の流れを飛ばすことができる命令です。例えばメモリ回路上の0番値から順番に命令が実行されてきたとして、8番値まで実行された時にJUMP命令が出てきてIR2の値が0番値を指定していたら、CPUは8番値の次の命令に進むのではなく最初の0番値にまで戻って再び同じ処理を繰り返します。

 

実際の回路の詳細動作

RAM読込1 ※全命令共通動作

「M3」のマルチプレクサは下側の経路に接続された状態にして「RAM」へ読出し用クロック信号を送る。この時、「PC」の示すアドレス番号が「M3」を通して「RAM」のアドレス入力端子へと接続されているので、「PC」の示すアドレス番号に従って「RAM」の内容が出力端子へと読み出される。この時「M2」は今後の動作に備えて下側の経路に接続された状態にしておく。

 

IR1読込 ※全命令共通動作

「PC」で指定されたアドレスの場所に保存されていた命令が「RAM」の出力端子に読み出された状態になるので、「IR1」レジスタへクロック信号を送り、命令の8ビット分(識別番号が書き込まれている方)を「IR1」へ記憶する。さらにこの時「M2」が下側の経路に接続された状態であるので「PC」の値に+1だけカウントアップされた値が「M2」を通して「PC」の入力端子へと接続された状態になっている。この状態で「PC」へクロック信号を送り、「PC」の値を+1だけカウントアップする。

スポンサーリンク

 

RAM読込2 ※全命令共通動作

再び「RAM」へ読出し用クロック信号を送り、+1だけカウントアップされた「PC」の示すアドレス番号に従って「RAM」の内容を出力端子へ読み出す。

 

IR2読込

「IR2」レジスタへクロック信号を送り、命令の8ビット分(ジャンプ先のアドレス番号)を「IR2」へ記憶する。この時「M2」は今後の動作に備えて上側の経路に接続された状態にしておく。

 

実行1

この段階では「HR」レジスタの値と「IR2」レジスタの値が連結した状態で16ビットのアドレス番号となり、「M2」を通して「PC」の入力端子へと接続されている。この状態で「PC」へクロック信号を送り、「PC」の内容を指定されたアドレス番号へと書き換える。

 

実行2

次の命令に備えて「M2」は下側の経路に接続された状態に戻しておく。

 

実行3

動作完了。

 

CPUの設計図

 

 

<戻る       次へ>

 

スポンサーリンク