前回、科目Bの繰り返し処理から戻り、待ち行列理論を整理しました。今回は、科目Aのコンピュータシステム分野の入口として、「命令実行のしくみ」を整理します。
CPUの役割
CPUは、コンピュータの中で、命令を取り出して実行する中心的な部品です。プログラムに書かれた命令を、順番に取り出しては実行する、という動作を繰り返しています。
命令実行の基本サイクル
CPUが命令を実行するときは、次のような流れを繰り返しています。
- 命令の取り出し(フェッチ):メモリから、次に実行する命令を読み込む
- 命令の解読(デコード):読み込んだ命令が、どんな処理を指しているかを判断する
- 命令の実行(エグゼキュート):実際に処理を行う
- 結果の書き込み:処理した結果を、メモリやレジスタに書き込む
この一連の流れを「命令実行サイクル」と呼び、CPUはこれをひたすら高速に繰り返しています。
レジスタとは
レジスタは、CPUの内部にある、ごく少量のデータを一時的に置いておくための場所です。メモリよりもCPUに近い位置にあるため、読み書きの速度が非常に速いという特徴があります。
命令の実行中、計算に使う値や、計算結果は、いったんレジスタに置かれてから、必要に応じてメモリに書き込まれます。「メモリは大きいけど遅い」「レジスタは小さいけど速い」という対比で覚えておくと、後で学ぶメモリ階層の話ともつながりやすくなります。
パイプライン処理とは
パイプライン処理は、先ほどの「フェッチ→デコード→エグゼキュート→書き込み」という流れを、複数の命令で少しずつ重ねて実行する仕組みです。
1つの命令がデコードされている間に、次の命令のフェッチを始めてしまう、というイメージです。工場の流れ作業のように、各工程を並行して進めることで、全体の処理速度を上げることができます。
学習してみた感想
命令実行の流れは、最初は「フェッチ」「デコード」といった用語だけで身構えてしまいましたが、「取り出す→読み解く→実行する→書き込む」という日本語に置き換えると、意外と自然な流れだと感じました。
パイプライン処理も、流れ作業のイメージで捉えたことで、「なぜ速くなるのか」がすんなり理解できました。用語を先に日本語で言い換えてから覚える、というやり方が自分には合っているようです。
次回は、③に戻り、学習2週目の振り返りをまとめます。
