情報処理試験を勉強していると、「命令レジスタってCPUの中にあるらしいけど、プログラムカウンタや汎用レジスタと何が違うの?」と混乱しがちです。この記事では、命令レジスタの役割を日常の例え話で噛み砕き、他のレジスタとの違いや試験での出題パターンまで整理します。
対象試験と出題頻度
命令レジスタは、基本情報技術者・応用情報技術者で出題されるテーマです。
CPUの命令実行サイクルやレジスタの種類を問う問題の中で、プログラムカウンタ・汎用レジスタ・アキュムレータなどとの区別が問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)覚えておくと有利
用語の定義
命令レジスタ(Instruction Register / IR)とは、一言で言うと
「メモリから取り出した命令を、デコード(解読)するまで一時的に保持するCPU内部のレジスタ」
のことです。
イメージとしては、「料理人の目の前に置かれた注文伝票ホルダー」です。
キッチンの料理人(CPU)は、ホール(メモリ)から届いた注文伝票をまずホルダーに挟みます。
伝票の内容を読み取ってから調理に取りかかるのであって、ホルダーなしでは「次に何を作ればいいか」がわかりません。命令レジスタはこのホルダーと同じ役割で、CPUが「次に何をすべきか」を読み解くための一時置き場です。
📊 命令レジスタの基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Instruction Register(IR) |
| 所属 | CPUの制御装置内 |
| 保持する内容 | メモリから読み出した「現在実行中の命令」 |
| 渡し先 | 命令デコーダ(解読器) |
解説
なぜ命令レジスタが必要なのか
CPUは主記憶(メモリ)に格納されたプログラムの命令を1つずつ取り出して実行します。
しかし、メモリへのアクセスにはCPU内部の動作に比べて時間がかかります。命令を取り出すたびにメモリと何度もやり取りしていては処理が遅くなるため、取り出した命令をCPU内部に一時保持しておく場所が必要です。
この「一時保持の場所」が命令レジスタです。
命令実行サイクルにおける位置づけ
CPUが命令を処理する流れ(命令実行サイクル)は、大きく次のステップで構成されます。命令レジスタが登場するのはステップ2です。
命令実行サイクルの流れ
▲ オレンジ枠が命令レジスタの出番。フェッチした命令を保持し、命令デコーダへ引き渡す
主要レジスタとの比較
CPU内部には複数のレジスタが存在し、それぞれ役割が明確に異なります。
過去問では「各レジスタの説明文を見分ける」形式が定番なので、以下の対比をしっかり頭に入れてください。
| レジスタ名 | 保持する内容 | 見分けキーワード |
|---|---|---|
| 命令レジスタ | メモリから読み出した命令そのもの | 「命令のデコード」「命令を保持」 |
| プログラムカウンタ | 次に実行する命令のメモリ上のアドレス | 「次の命令」「アドレスを保持」 |
| アキュムレータ | 演算結果を一時的に蓄積するレジスタ | 「演算結果」「蓄積」 |
| 汎用レジスタ | データや演算対象の値を自由に格納 | 「データを保持」「演算のために読み出し」 |
| フラグレジスタ | 演算結果の状態(ゼロ、負、桁あふれ等) | 「条件分岐」「演算結果の状態」 |
| ベースレジスタ | プログラムの先頭アドレス(基準値) | 「基準アドレス」「再配置」 |
| インデックスレジスタ | 命令のアドレス部に加算する修飾値 | 「修飾」「配列」「繰り返し」 |
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 命令レジスタの核心を3行で
・メモリから読み出した命令を一時保持し、命令デコーダに引き渡すCPU内レジスタ
・命令実行サイクルの「命令フェッチ」直後に内容が書き込まれる
・プログラムカウンタ(アドレスを保持)やアキュムレータ(演算結果を保持)との役割の違いが頻出論点
試験ではこう出る!
命令レジスタは、FE・APの科目A(旧午前)問題で「レジスタの役割を選べ」「命令実行の順序を並べ替えよ」の2パターンで繰り返し出題されています。
📊 過去問での出題実績
| 試験回 | 出題内容 | 命令レジスタの扱い |
|---|---|---|
| FE H23秋 問10 |
「プログラムレジスタの役割はどれか」を4択から選ぶ問題。 | 選択肢ウ「命令のデコードのために命令を保持」が命令レジスタの説明として登場(ひっかけ選択肢) |
| AP H29春 問8 |
上記FE H23秋 問10と同一構成の問題(流用)。 | FEとAPで同じ問題が出回る典型。選択肢の文言もほぼ同一 |
| AP R1秋 問9 |
再びプログラムカウンタの役割を選ぶ問題。 | 命令レジスタの説明文がひっかけ選択肢として配置されるパターンが定着 |
| AP R6秋 問8 |
パイプラインの命令実行制御の順序を選ぶ問題。 | 「主記憶から命令レジスタに読み込む=命令フェッチ」が解法のカギ |
📝 IPA試験での出題パターン
パターン1:「レジスタの役割を選べ」
プログラムカウンタの役割を問う問題で、命令レジスタ・汎用レジスタ・アキュムレータの説明文がひっかけ選択肢として並びます。キーワードの対応は「命令のデコードのために命令を保持=命令レジスタ」「次の命令のアドレスを保持=プログラムカウンタ」「演算結果の状態を保持=フラグレジスタ」です。ここだけは確実に押さえてください。
パターン2:「命令実行の順序を並べ替えよ」
命令フェッチ→命令デコード→実行→メモリアクセス→書込みのような順序を問う形式です。「命令フェッチ=主記憶から命令レジスタに命令を読み込む」という対応がわかれば、フェッチが最初に来ることが即座に判断できます。
試験ではここまででOKです。命令レジスタのビット幅やフリップフロップ構成といったハードウェア詳細は問われないので、深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. CPUの命令レジスタの役割として、最も適切なものはどれでしょうか?
- A. 次に実行する命令が格納されている主記憶上のアドレスを保持する。
- B. 条件付き分岐命令を実行するために、演算結果の状態(ゼロ、負、桁あふれなど)を保持する。
- C. 命令のデコードを行うために、メモリから読み出した命令を保持する。
正解と解説を見る
正解:C
解説:
命令レジスタは、主記憶から取り出した命令を一時的に保持し、命令デコーダへ引き渡すためのレジスタです。「命令のデコード」「命令を保持」という2つのキーワードが揃っている選択肢Cが正解です。
選択肢Aはプログラムカウンタ(プログラムレジスタ)の説明です。「次の命令のアドレス」という語句があればプログラムカウンタと判断します。選択肢Bはフラグレジスタ(ステータスレジスタ)の説明です。「演算結果の状態」「条件分岐」が出たらフラグレジスタです。
よくある質問(FAQ)
Q. 命令レジスタと命令デコーダの違いは何ですか?
命令レジスタは「命令を保持する記憶素子(ハードウェア)」であり、命令デコーダは「保持された命令を解読して制御信号を生成する回路」です。レジスタが伝票ホルダーだとすれば、デコーダは伝票を読んで指示を出す料理長に当たります。試験では別々の役割として問われることがあるため、混同しないよう注意してください。
Q. 命令レジスタの内容は毎回上書きされますか?
上書きされます。CPUが命令フェッチを行うたびに、新しい命令が命令レジスタに書き込まれ、前の命令は消えます。1命令ぶんの保持領域しか持たないため、同時に複数の命令を格納することはありません。
Q. パイプライン処理では命令レジスタはどうなりますか?
パイプライン処理では、命令フェッチ・デコード・実行などの各ステージが同時に並行動作します。そのため、各ステージ間にパイプラインレジスタ(ステージ間レジスタ)が設けられ、命令や中間結果を受け渡します。命令レジスタはフェッチステージとデコードステージの境界に位置するレジスタと捉えるとわかりやすいです。ただし、試験範囲では「パイプラインの並べ替え問題」レベルで十分であり、ステージ間レジスタの詳細構造まで問われることはありません。
Q. 命令レジスタは実務のプログラミングで意識することはありますか?
高級言語(Java、Python、C#など)で開発する場合、命令レジスタを直接意識する場面はありません。しかし、組込みシステム開発やアセンブリ言語を扱う領域では、CPUがどの命令をフェッチしているかを把握するためにデバッガ上で命令レジスタの値を確認することがあります。また、CPUアーキテクチャの設計者にとっては、命令レジスタのビット幅が命令セットの設計に直結する重要な要素です。