CPUとは何だろう
前回まででCPUを作るために必要な基礎的な知識を紹介した。これからCPUを作っていく事になるのだが、まずそのCPUとは何なのか? これから作るものが何なのか分からないと作りようがない。
「CPUとは中央演算装置、コンピュータの頭脳にあたる」という説明が良く見られるが、これからCPUを作るにはそれだけの理解ではたりない。どういう構造で何をしているのか。
まずCPUには主要装置として以下の装置が含まれる。(下図の赤枠の中の部分)
- ALU(演算装置):計算をする装置
- レジスタ:計算途中の値を一時的に保存する装置
- 制御装置:ALUやレジスタ間のデータの流れを制御する装置
- 命令デコーダ:メモリから読み出した命令を解釈する装置
- プログラムカウンタ:メモリの番地を指定する装置
加えて以下の周辺装置も必要である。
- クロック:CPU内の各装置の動作を同期させる信号
- メモリ:命令とデータを格納する装置
- 入力装置:計算データ等を入力する装置
- 出力装置:計算結果のデータ等を出力する装置

クロック
クロックとは、HiとLoを一定周期で繰り返すパルス波形のこと。プログラムカウンタ、制御装置、レジスタ等に入力しCPUを動作させる信号である。

メモリ
CPUに実行させる命令とデータを記憶させておく装置。メモリにはROMとRAMがあるが、今回作るCPUでは、このメモリはROMとする。
メモリは基本的には1区画が8bitになっており、1区画の中に命令やデータを1つずつ格納できる。そして、その何区が何個も連続している。区画は1区画毎に先頭から0、1、2…というアドレス(番地)が割り振られている。
下図の例ではアドレス0に0b0110 1101という値が格納されている。

プログラムカウンタ
メモリには命令が1つずつ格納されているのだが、CPUはこの命令をアドレス0から順々に実行していく事になる。プログラムカウンタとは次に実行するべきメモリのアドレスを指し示す装置である。
クロックが入力されるたびに指し示すアドレスをカウントアップして行く。

命令デコーダ
メモリから読み出した命令はそのままではCPUを動作させることが出来ない。命令デコーダは命令をCPUが解釈できる信号に変換する装置である。
制御装置
CPUはレジスタの値を演算装置に転送して計算したり、演算装置で計算した結果の値をレジスタに格納したりする。前者のデータの流れは”レジスタ→演算装置”となっているし、後者は”演算装置→レジスタ”となっており、それぞれでデータの流れる向きが違う。
制御装置は、メモリから読み取った命令に応じて、このデータの流れを切り替える装置である。
レジスタ
演算装置で計算した値や、入力装置から入力した値を一時的に格納する装置。データ幅はCPUによって様々だが、このレジスタのデータ幅が広いほどCPUで扱える命令やデータの範囲が広くなり、CPUは高性能になる。データ幅が8bitのものを8bitCPUとか、32bitのものを32bitCPUと呼んだりする。
レジスタは通常2つ以上あり、Aレジスタ、Bレジスタという様に個別の名前がつけられている。
データを一時的に格納するものにはRAMというメモリもあるが、レジスタはCPUに内蔵されておりRAMよりも超高速にデータの転送が可能となっている。RAMは計算結果を格納するのに対し、レジスタは更に一時的な計算途中の値などを格納する。
ALU(演算装置)
CPUの心臓部、計算をする装置。具体的にはレジスタや入力装置からデータを入力し、入力した値に対し加算や減算を行う。
入力装置
計算させたい値をCPUに入力する装置。
出力装置
計算した結果等の値を出力する装置。