これまでコンピュータの仕組みを理解するのに必要な基本的な回路について紹介してきました。これまでに見てきた回路の知識を基礎として、ここからはコンピュータの中で中心的な役割を果たす「CPU」という部品を一から設計してみたいと思います。「CPU」の構造を理解することができればコンピュータの仕組みをより深く理解することができます。

CPUとはCentral Processing Unitの略で、日本語では「中央処理装置」と呼ばれています。名前の通りコンピュータの行う作業を中心になって処理する装置です。

CPUの例としてはIntelのCore i5やCore i7、Pentiumといったパソコン用のものからPIC、H8、ARM、AVR、Z80などの比較的小さな機器制御用のものまで様々なものがあります。ここではCPUの中から最低限必要な機能だけを取り出し、できるだけ簡単なCPUを一から作ってみたいと思います。

以下の図が今回、相楽製作所が独自に開発した学習用CPUの設計図です。8ビットのCPUなので「SW8」と名付けました。

 

CPUの設計図

図67.学習用CPU「SW8」の設計図

 

(このサイトでは上記のCPUをVerilog-HDLというハードウェア記述言語で記述し、FPGAというデバイス上で動かすところまでを解説します。HDLの記述に興味のある方はこちらのページ「FPGAとVerilog HDLで作るCPU」にお進みください。)

 

図の中央付近にある大きめの長方形で描かれた「RAM」という部品がメモリ回路です。メモリ回路の右上に8ビットの出力端子、左下に8ビットの入力端子、そして左上に16ビットのアドレス入力端子が配置されています。「RAM」には読出し用と書込み用の2つのクロック入力端子があり、読出し用クロック信号が送られるとアドレス端子で指定された番地に記憶されていた内容が出力端子へと読み出されます。書込み用クロック信号が送られるとアドレス端子で指定された番地へ入力端子に入力された内容が書き込まれます。

※「RAM」とはRandom Access Memoryの略で記憶内容を書き換えることができる一般的なメモリ回路のことです。RAMの他にはROM(Read Only Memory)という安く作れる代わりに記憶内容を書き換えることができないメモリ回路もあります。

図の中央右上付近に描かれた「ALU」はArithmetic Logic Unitの略で、日本語では「演算装置」と呼ばれています。「A」と「B」という2つの入力端子を持っていて、入力された信号を足し算したり引き算したりしてその結果を出力することができる回路です。ALUの中には足し算回路や引き算回路の他にもAND回路やOR回路、NOT回路といった複数の回路が入っていて、それらの回路を必要に応じて切り替えて使うことができます。内部の接続回路を切り替えるには4ビットのコントロール用の入力端子を使って行います。また、演算の結果が0になったり、桁あふれを起こした場合に「1」の状態になるフラグという出力端子を持っています。

M1~M5までの番号が付いた台形の記号は信号経路を切り替えるマルチプレクサ回路です。そして矢印の線は信号が伝わる配線の経路を示していて、出力端子から入力端子の方向へ矢印が向かうように描かれています。

スポンサーリンク

「PC」と書かれた少し長めの長方形は「プログラムカウンタ」というレジスタ回路を示しています。プログラムカウンタは次に実行すべき作業命令が書かれたメモリ回路内の番地(アドレス)を常に示しています。このCPUではプログラムカウンタのサイズを16ビットにすることにしました。0番地から65535番地までのアドレスを扱うことができます。

その他の短めの長方形は全て8ビットのレジスタを表しています。これらには全て名前が付いていて、それぞれの大まかな役割は以下のようになっています。

「WR」レジスタ:計算途中の数値を一時保存しておくためのレジスタです。使用頻度が高く、とても重要なレジスタです。作業用のレジスタという意味でワーキングレジスタと呼びます。

「IR1」レジスタ:インストラクションレジスタという現在実行中の命令を保存しておくレジスタです。このCPUでは命令のサイズを16ビットにしたので8ビットのインストラクションレジスタを2つ使って命令を保存しています。IR1レジスタは2つあるインストラクションレジスタのうちの1つ目のレジスタで、命令を識別するための信号を保存する役割を持っています。このIR1レジスタに保存された識別信号に従ってCPU内の配線経路が変化したり、特定のレジスタの内容が更新されたりすることで命令が実行されるような仕組みになっています。

「IR2」レジスタ:IR2レジスタは2つあるインストラクションレジスタのうちの2つ目のレジスタで、命令で使用される数値やアドレス番号などを保存する役割を持っています。例えば「データ転送命令でワーキングレジスタに保存する数値」や、「足し算命令に使用する数値のアドレス番号」などが保存されます。

「HR」レジスタ:ハイアドレスレジスタというアドレス番号の上側の8ビット分を保存しているレジスタです。このCPUで使用するメモリ回路はアドレスのサイズが16ビットあるため、上で説明した8ビットサイズのIR2レジスタだけでは全てのビットを表現することができません。そこであらかじめHRレジスタに指定したいアドレスの上側8ビットを保存しておいて、IR2レジスタには指定したいアドレスの下側8ビットだけを保存するようにすればHRレジスタとIR2レジスタの2つを合わせて16ビットサイズのアドレスが表現できるようになります。HRレジスタは8ビット単位でデータを扱う8ビットコンピュータ上で、16ビットのアドレスを表現したい時に使われるレジスタです。

「P1」「P2」レジスタ:コンピュータの外部に接続する機器やセンサー等から数値を入力する時に使う入力端子です。

「P3」「P4」レジスタ:コンピュータの外部に接続する機器やモータドライバ等へ数値を出力する時に使う出力端子です。

 

次のページではCPUの動作を決定する「命令」の構造について解説していきます。

 

<戻る       次へ>

 

スポンサーリンク