CPU(中央処理装置)は、プログラムの命令を取り出して解読し、演算や各部の制御を行う装置です。この章では、五大装置、命令サイクル、レジスタなどの構成要素を順につなげて学びます。
最後にクロックとCPIの関係も確認します。「クロックが高いほど必ず速い」「1クロックで必ず1命令を実行する」という覚え方を避け、性能計算の土台を作りましょう。
コンピュータの五大装置とCPUの役割
| 装置 | 役割 | 代表例・関係 |
|---|---|---|
| 入力装置 | 外部からデータを取り込む | キーボード、マウス、スキャナ |
| 記憶装置 | 命令やデータを保持する | 主記憶、SSD・HDDなどの補助記憶 |
| 演算装置 | 算術演算・論理演算を行う | CPUのALUなど |
| 制御装置 | 命令を解読し、処理の進行を制御する | CPUが担う制御機能 |
| 出力装置 | 結果を外部へ出す | ディスプレイ、プリンタ、スピーカー |
五大装置は機能による分類です。CPUは主に制御と演算を担います。実際の機器では複数の機能を一つの装置やチップにまとめることもあります。
命令サイクル:取り出しから結果の保存まで
CPUの基本動作は、次のような段階で説明できます。これは学習用の整理で、命令の種類やCPUの設計によって、必要な段階やその分け方は異なります。
- 命令フェッチ:命令のあるアドレスから、命令を取り出す。
- デコード:何を行う命令か、どのデータを使うかを解読する。
- オペランドの用意:演算対象の値をレジスタやメモリなどから得る。
- 実行:演算、アドレス計算、分岐条件の判定などを行う。
- 結果の書込み:命令に応じて結果をレジスタやメモリへ保存する。
命令は「行う操作」、オペランドは「その操作の対象」です。例えば加算なら、加算という操作と、足し合わせる値を区別して考えます。命令中に直接値を持つ形式もあります。
具体例:2つの値を加算する
【概念を示す疑似命令】 R1 ← R2 + R3 命令を取り出す ↓ 加算命令であることと対象のレジスタを解読する ↓ R2の値3、R3の値5を用意する ↓ 演算装置で3+5を計算する ↓ 結果8をR1へ保存する
この例では値はレジスタにあります。全ての命令がオペランドを主記憶から読み出したり、結果を主記憶へ書いたりするわけではありません。
CPUの構成要素を役割で区別
| 要素 | 役割 | 覚えるポイント |
|---|---|---|
| 制御装置 | 命令を解読し、必要な制御を行う | 何を、どの順序で行うか |
| ALU(算術論理演算装置) | 加減算やAND・ORなどを行う | 演算を担当 |
| レジスタ | 値・命令・アドレスなどを一時保持する | 用途に応じた種類がある |
| キャッシュメモリ | 命令やデータのコピーを保持してアクセスを速める | 主記憶との速度差を緩和 |
| バス・内部接続 | データ・アドレス・制御情報を運ぶ | 部品同士を結ぶ経路 |
プログラムカウンタと命令レジスタの違い
- プログラムカウンタ(PC):命令のアドレスを管理します。基本モデルでは「次に取り出す命令のアドレス」と整理します。分岐などによって進む先が変わります。
- 命令レジスタ(IR):取り出した命令を保持します。
- 汎用レジスタ:演算に使う値やアドレス、結果などを保持します。
PCはアドレス、IRは命令そのもの、と区別しましょう。パイプラインを持つCPUなどで見えるPCの値の詳細は、命令セットや実装の仕様に従います。
クロック周波数は「命令数/秒」ではない
クロック周波数は、1秒間のクロック数を表します。2GHzなら1秒間に20億クロックで、1クロックの時間(クロック周期)は1÷20億=0.5nsです。
一方、1命令当たりに平均で何クロック必要かを表すのがCPI(Cycles Per Instruction)です。1命令が複数クロックにまたがる場合も、複数命令の実行を重ねて平均CPIが1未満になる場合もあります。
単純な性能モデルでは、CPU実行時間=命令数×平均CPI÷クロック周波数で考えます。例えば命令数1,000万、平均CPIが2、クロック周波数2GHzなら、実行時間は0.01秒(10ms)です。
同じプログラムでも、命令数・CPI・メモリアクセスの影響などが変わるため、周波数だけで性能は決まりません。実行時間の計算では、問題で与えられた条件と単位をそろえましょう。
高速化に関係する仕組み
- パイプライン:異なる命令の処理段階を重ね、単位時間に完了する命令数を増やします。依存関係や分岐による待ちも考慮します。
- マルチコア:複数の処理コアを使います。処理が並列化できるかなどに左右され、コア数が2倍でも必ず速度が2倍になるわけではありません。
- キャッシュ:必要な命令やデータが見つかれば、主記憶へアクセスする負担を減らせます。
- FPU:浮動小数点演算を担当する演算機能です。
- SoC:CPUコアに加え、周辺機能などを一つのチップへ統合する構成です。
確認問題
クロック周波数2GHz、平均CPIが4のCPUで、800万命令を実行するとき、上記の単純なモデルでCPU実行時間は何秒でしょうか。
解答・解説を見る
0.016秒(16ms)です。800万×4=3,200万クロック。これを20億クロック/秒で割ります。GHzを命令数/秒と置き換えないことがポイントです。
CPUの動作を理解したら、noteで性能計算へ
クロック・CPIから計算問題まで、数字の意味をつなげて復習したい方へ。
関連noteでは、クロック周波数と周期、CPI、命令実行時間、MIPS、CPU性能比較、キャッシュのヒット率と実効アクセス時間を扱っています。この章で学んだ構成要素を、性能評価の学習へつなげられます。
教材の公開範囲・価格などはリンク先でご確認ください。

コメント