最終更新日:2026年10月5日
fe fe-technology computer-system
まず結論
命令フェッチでは、プログラムカウンタが「次の命令がある場所」を示し、主記憶から取り出した命令を命令レジスタに入れます。
FEでは、次の2つを切り分けるだけでもかなり解きやすくなります。
| 用語 | 保持するもの | 判断の合図 |
|---|---|---|
| プログラムカウンタ(PC) | 次に実行する命令のアドレス | 次の命令は「どこ?」 |
| 命令レジスタ(IR) | 取り出した命令そのもの | 今の命令は「何?」 |
直感的な説明
住所と手紙で考えると分かりやすいです。
次の命令の「住所」
住所から命令を取り出す
取り出した「命令」
命令の意味を解読
PC=住所、命令レジスタ=命令そのものと覚えると、役割が混ざりにくくなります。
定義・仕組み
プログラムカウンタ
プログラムカウンタ(Program Counter)は、次に実行する命令が格納されている主記憶上のアドレスを保持するレジスタです。
命令を順番に実行するときは次の命令へ進み、分岐命令などでは値が変更されます。
命令レジスタ
命令レジスタ(Instruction Register)は、主記憶からフェッチした命令を一時的に保持するレジスタです。
命令はその後、命令デコーダによって解読されます。
命令フェッチの流れ
試験では、まず次の流れを押さえれば十分です。
プログラムカウンタ
「次の命令はどこ?」
↓
主記憶から命令を取り出す
↓
命令レジスタ
「取り出した命令はこれ」
↓
命令デコーダ
「この命令は何をする?」
↓
実行
CPUの処理を細かな段階に分ける説明もありますが、最初から段階数を丸暗記するより、アドレス → 命令 → 解読 → 実行の役割を理解する方がFEでは切り分けやすくなります。
科目Aでどう出る?
図の穴埋めでは、矢印の前後を見るのがコツです。
たとえば、
主記憶 → ? → 命令デコーダ
なら、命令デコーダへ渡すのはアドレスではなく取り出した命令です。
したがって「?」は命令レジスタと判断できます。
一方、
次に実行する命令のアドレスを保持
とあればプログラムカウンタです。
どんな場面で使う?
CPUは主記憶に置かれたプログラムを、命令ごとに取り出して実行します。
そのとき、
- どこから命令を取るか → プログラムカウンタ
- 取り出した命令をどこに置くか → 命令レジスタ
- 命令の意味を調べる → 命令デコーダ
という役割分担があります。
よくある混同
プログラムカウンタと命令レジスタ
どちらも命令フェッチに関係しますが、保持するものが違います。
アドレスならPC、命令そのものなら命令レジスタです。
アキュムレータ
アキュムレータは、演算の途中結果などを保持するためのレジスタです。
「命令を保持する」という説明なら命令レジスタです。
データキャッシュ
データキャッシュは、CPUが利用するデータへのアクセスを高速化するためのキャッシュです。命令レジスタとは役割が異なります。
また、キャッシュは一般にCPUチップ内に実装されることも多いため、「CPUの外部だから違う」と位置だけで判断しないようにします。FEでは「何を保持するか」で切り分ける方が安全です。
まとめ
試験中は次の対応を思い出します。
次の命令のアドレス
→ プログラムカウンタ
取り出した命令そのもの
→ 命令レジスタ
命令の意味を解読
→ 命令デコーダ
演算途中の値
→ アキュムレータ
特に重要なのは、PC=住所、命令レジスタ=命令そのものです。
図の穴埋め問題では、名称だけを見るのではなく、その場所に「アドレス」と「命令」のどちらが入るのかを考えると選択肢を切りやすくなります。