コンピューター理論、チョットデキルようになりたい

コンピュータサイエンスの学び直しです

学び直し25日目:5章 コンピュータアーキテクチャ⑤:プロジェクト-CPU(1)

記録

Memory に続き、CPU の HDL を考え中。まだコードは書けてないけど、おぼろげに何をやったらよいかは見えてきた気がします。

考え方

A 命令、C 命令(4章参照)の意味をひとつずつ理解して、接続を考えればよい。つまり、instruction (16bit) の各ビット(=制御ビット)を、どこに・どのように接続すればよいか考えるだけ。以下、16bit のざっくりした内訳。

A, C 命令共通
  • 15bit:0 なら A 命令(0aaa aaaa aaaa aaaa)、1 なら C 命令(111a cccc ccdd djjj)
A 命令の場合
  • 14~0bit (aaa aaaa aaaa aaaa)
    • 定数 or データ操作するメモリアドレス or jump 後のメモリアドレス
C 命令の場合
  • 14, 13bit (11)
    • 未使用
  • 12bit (a)
    • ニーモニック。0 なら Aregister のデータ操作。1 なら Memory[A] のデータを操作
  • 11~6bit (cccc cc)
    • ALU への命令(どの bit を ALU のどこにつなぐかは、ALU の仕様参照)
  • 5bit (d)
    • 1 なら ALU の out を Aregister に保存
  • 4bit (d)
    • 1 なら ALU の out を Dregister に保存
  • 3bit (d)
    • 1 なら ALU の out を Memory[A] に保存
  • 2, 1, 0bit (jjj)
    • ALU の出力結果の正、負、ゼロと組合せて、PC の load, inc を決める。(And とか Or で組み合わせつつ PC に入力するはず)

今日の筋トレ