CPUのしくみ — 命令が1周する流れを追う
CPU(中央処理装置)は、メモリに並んだ命令を1つずつ取り出して実行するだけの機械です。その1周 — フェッチ(取り出す)→ デコード(解読する)→ 実行する — をデータが配線の上を動く様子で追いかけ、小さなプログラムを1歩ずつ走らせてみましょう。
1. CPUの中身 — 命令が配線の上を旅する
CPUの中には、命令が入っている命令メモリ、いま何番目を実行中かを覚えるプログラムカウンタ(PC)、取り出した命令を一時保管する命令レジスタ(IR)、計算用の値をしまうレジスタ、そして足し算などを担うALU(演算装置)があります。命令はこの部品たちの間を、配線をたどって順番に旅していきます。
下のデモで、「1ステップ進む」を押すと1拍ずつ、「再生」で自動で、命令が1周する様子が見られます。4命令の小さなプログラムが繰り返し走ります。
データパス実行機 — フェッチ・デコード・実行を1歩ずつ
上の帯が今の拍(①フェッチ=水色 / ②デコード=黄 / ③実行=緑)。光る配線をデータの粒が動きます。実行の最後にALUの結果がレジスタへ書き戻され、PCが次の命令へ進みます。
POINT — 命令サイクル(フェッチ・デコード・実行)
CPUがしているのは、たったこれだけの繰り返し。①フェッチ:PCが指す命令をメモリから取り出しIRへ。②デコード:命令の意味(どのレジスタを読み、どんな演算をし、どこへ書くか)を解読。③実行:ALUで計算し結果をレジスタへ書き戻し、PCを次へ進める。これを電源が入っている間ずっと回し続けている。
2. サイクルは止まらない — ぐるぐる回り続ける
命令サイクルの本質は「終わったら次、また次」と回り続けること。1つの命令が実行し終わると、PCが1つ進み、また次の命令のフェッチから始まります。CPUは秒間に何億回もこの輪を回しています。
命令サイクルの輪 — 回り続ける3拍子
粒がフェッチ→デコード→実行と一周するたびに、実行した命令が1つ増えPCが進みます。この輪が速く回るほど、たくさんの命令を処理できます。
3. 実際の計算はどこで起きる? — ALUとレジスタ
足し算・引き算・論理演算といった実際の計算を担うのがALU(Arithmetic Logic Unit)です。2つの入力(レジスタの値)と「どの演算をするか」の指示を受け取り、結果を1つ返します。コンピュータの中では数はすべて2進数(ビットの並び)なので、下のデモでは4ビット(0〜15)で動かしてみましょう。
ALUで遊ぶ — 2つの数を演算する
左の2つが入力、真ん中がALU、右が結果。加算で16以上になると4ビットに収まらず桁上がり(キャリー)が立ちます。結果が0ならゼロフラグが点灯。CPUはこのフラグを見て分岐(if文)を判断します。
実行時間 = 命令数 × CPI ÷ クロック周波数
CPI = 1命令あたりの平均クロック数。速いCPUとは「命令数が少ない・CPIが小さい・クロックが高い」の掛け算。次の節はこの右端の話
4. クロックが速さを決める — GHzの正体
CPUの拍子をとる指揮者がクロックです。1秒間に何回チクタクするかがクロック周波数で、単位は Hz。3 GHz なら1秒間に30億回刻みます。この拍に合わせて命令サイクルが進むので、クロックが速いほど1秒あたりの処理が増えます(=「GHz」が大きいほど速い、の正体)。
クロック信号 — 1秒に何回チクタクするか
四角い波の1山が1クロック。周波数を上げると波が詰まって速く流れます。1命令=1クロックと単純化すると「毎秒◯億命令」。実際のCPUは1クロックで複数命令を処理する工夫(次レッスン)で、もっと稼ぎます。
注意 — 「GHzが高い=必ず速い」ではない
クロックが同じでも、1クロックで処理できる命令数(IPC)が違えば速さは変わる。だからGHzだけでCPUの優劣は決められない。さらにクロックを上げると発熱と消費電力が急増するため、現代のCPUは周波数を無理に上げずコアを増やす・1クロックあたりの仕事を増やす方向に進化してきた。
5. まとめ — CPUは「取り出して実行する」の繰り返し
- 命令サイクル:フェッチ(取り出す)→ デコード(解読)→ 実行(計算+書き戻し)を延々と繰り返すだけ。
- PC・IR・レジスタ・ALU:PCが場所を指し、IRが命令を保管し、レジスタが値を持ち、ALUが計算する。データは配線の上を旅する。
- クロックと性能:拍子の速さがクロック周波数。実行時間は「命令数 × CPI ÷ クロック」で決まる。
一歩先へ — 実はもっと賢く動いている
ここで見たのは「1命令が終わってから次」という素朴なモデル。現代のCPUは、フェッチ中に次の命令をデコードするパイプライン、1クロックで複数命令を同時発行するスーパースカラ、順番を入れ替えて空き時間を埋めるアウトオブオーダー実行、分岐の行き先を先読みする分岐予測まで駆使している。次の「パイプライン処理」で、この流れ作業のからくりに踏み込む。