制御装置・演算装置・レジスタからなるコンピュータの中央処理装置
CPU(Central Processing Unit=中央処理装置)とは、コンピュータの「頭脳」にあたる部品で、メモリから命令を取り出して解読し、計算や処理を実行する装置です。プロセッサとも呼ばれ、コンピュータの性能を最も大きく左右します。
身近な例で考えると、CPUは料理を作る一人のシェフのようなものです。レシピ(プログラム)を読んで(制御装置)、材料を切ったり混ぜたり計算したりして(演算装置)、途中の食材や計量結果を手元の作業台に置いておく(レジスタ)――この3つの役割を1つの部品の中でこなしています。
上の図解のとおり、CPUは大きく制御装置・演算装置(ALU)・レジスタ群の3つで構成され、外部の主記憶(メモリ)とバス(bus=データの通り道)でつながっています。
CPUの内部は、おもに次の3つの要素から成り立っています。
・制御装置(Control Unit):命令を解読し、各装置に「いつ・何をするか」の制御信号を送る司令塔
・演算装置(ALU):加算・減算などの四則演算や、AND・ORなどの論理演算を実行する計算機
・レジスタ群:CPU内にある最も高速な記憶場所。処理中のデータや命令を一時的に保持する
レジスタには用途ごとに種類があり、それぞれ名前と役割が対応しています。
| レジスタ | 名称 | 役割 |
|---|---|---|
| PC | プログラムカウンタ | 次に実行する命令のメモリ番地を保持 |
| IR | 命令レジスタ | 現在実行中の命令を保持 |
| ACC | アキュムレータ | 演算の対象・結果を保持 |
| MAR | アドレスレジスタ | アクセスするメモリ番地を保持 |
| MDR | データレジスタ | メモリと読み書きするデータを保持 |
| FLAG | フラグレジスタ | 演算結果の状態(ゼロ・桁あふれ等)を保持 |
レジスタはメモリよりはるかに高速ですが、その分容量はごくわずか(数十バイト程度)です。これはシェフの手元の作業台のようなもので、いま使うものだけを置く狭くて速い場所、と考えると分かりやすいです。
3つの要素は、制御装置を中心に連携して動きます。制御装置がメモリから取り出した命令を解読し、「演算装置よ加算せよ」「レジスタよこの値を保持せよ」と制御信号で指示を出すことで、1つの命令が実行されます。
具体的な役割分担は次のとおりです。
・制御装置:命令を解読し、他の装置に動作のタイミングと内容を指示する(オーケストラの指揮者)
・演算装置(ALU):制御装置の指示を受け、実際に足し算・引き算・論理演算を行う(演奏する楽器奏者)
・レジスタ:演算の入力値・結果や次の命令番地を一時保管し、すぐ取り出せるようにする(手元の楽譜立て)
役割を整理すると、「制御装置=命令を解読し制御信号を出す」「演算装置=計算を実行する」「レジスタ=高速な一時記憶」となります。とくに「演算は演算装置、指示は制御装置」と切り分けて理解すると混同しません。
CPUはプログラムを動かすために、4つのステップを高速に繰り返す仕組みになっています。この繰り返しを命令実行サイクル(フェッチ→デコード→実行→書き戻し)と呼びます。
4ステップの内容はそれぞれ次のとおりです。
・①フェッチ(Fetch):プログラムカウンタ(PC)が示すメモリの番地から、次に実行する命令を取り出す
・②デコード(Decode):取り出した命令を制御装置が解読し、「何をすればよいか」を理解する
・③実行(Execute):解読した内容にしたがって演算装置が計算を行う
・④書き戻し(Write-back):計算した結果をレジスタやメモリに保存する
なぜこのサイクルが大切かというと、すべてのプログラムの動作はこの4ステップの繰り返しで成り立っているからです。現代のCPUは1秒間に何億・何十億回とこのサイクルをこなしています。プログラムを「レシピ」に例えると、フェッチは「1行読む」、デコードは「意味を理解する」、実行は「実際に調理する」、書き戻しは「できた料理を皿に盛る」イメージです。
CPUの処理速度は、大きく2つの要素で決まります。
・クロック周波数(=CPUが1秒間に刻む「拍子」の回数):Hz(ヘルツ)という単位で表し、値が高いほど1秒あたりに実行できる命令が多くなる
・コア数:CPUの中に独立した処理回路(コア)がいくつあるか。コアが複数あると、別々の仕事を同時にこなせる(並列処理)
なぜクロック周波数が重要かというと、命令実行サイクルのすべてのステップがクロックの刻みに合わせて動くからです。1 GHz(=10億 Hz)のCPUは、1秒間に最大10億回のクロックを刻みます。クロック周波数を2倍にすれば、理論上の処理速度も2倍になります。
身近な例でいうと、クロック周波数は作業者の手の速さ、コア数は作業者の人数に相当します。速い手の人が1人(高クロック・1コア)でも、普通の速さの人が4人(並列・4コア)でも、それぞれ得意な仕事があります。現代のCPUは両方を組み合わせ、高クロック+多コアで高性能を実現しています。