基本情報技術者 2018年 春期 午前(科目A) 問09
問題文
図はプロセッサによってフェッチされた命令の格納順序を表している。aに当てはまるものはどれか。

選択肢
ア:アキュムレータ
イ:データキャッシュ
ウ:プログラムレジスタ(プログラムカウンタ)
エ:命令レジスタ(正解)
🔒 解説は解答すると表示されます
命令レジスタの役割【午前解説】
正解の理由
正解: エ
図の流れは「主記憶から命令を取り出す(フェッチ)→取り出した命令を格納→命令デコーダへ供給」という一連です。命令デコーダに入力されるのは命令のビット列そのものであり、その直前で命令を保持するのが命令レジスタ(Instruction Register, IR)です。したがって a は命令レジスタであり、選択肢の中ではエが該当します。
図の流れは「主記憶から命令を取り出す(フェッチ)→取り出した命令を格納→命令デコーダへ供給」という一連です。命令デコーダに入力されるのは命令のビット列そのものであり、その直前で命令を保持するのが命令レジスタ(Instruction Register, IR)です。したがって a は命令レジスタであり、選択肢の中ではエが該当します。
解法ステップ
- 図の矢印の向きを確認し「データ(命令)の流れ」を追う。
- 命令デコーダの前にある要素は「命令そのものを渡す」役割であると仮定する。
- 選択肢を一つずつ当てはめて、役割が一致するか(アドレスか内容か、データか制御か)を判定する。
- 内容(命令ビット)を保持するものとして命令レジスタが最も適合するため選択する。
選択肢別の誤答解説
- ア: アキュムレータ
誤り。アキュムレータは演算ユニットで使うデータを一時保持する汎用的なレジスタで、フェッチした命令を直接デコーダへ渡す用途ではありません。 - イ: データキャッシュ
誤り。キャッシュは主記憶のコピーを保持して高速アクセスを行う階層的記憶装置で、図のように単一の命令をデコーダへ渡す「内部の直列要素」として表現するには不適切です。 - ウ: プログラムレジスタ(プログラムカウンタ)
誤り。プログラムカウンタは実行すべき命令のアドレスを指すレジスタであり、命令の内容を保持して命令デコーダへ渡す役割は担いません。 - エ: 命令レジスタ
正答。フェッチ直後の命令本体を格納し、命令デコーダへ供給する役割が命令レジスタに該当します。
よくある誤解
- プログラムカウンタ(PC)と混同する:PCは次に実行すべき命令のアドレスを保持するもので、命令の内容自体は保持しません。
- アキュムレータや汎用レジスタと混同する:アキュムレータは算術演算の対象データを保持するレジスタであり、命令の保管位置ではありません。
- キャッシュとレジスタの役割の混同:キャッシュはメモリ階層の高速コピーであり、命令デコーダへ直ちに渡すための「単一の命令保管場所」として図示されることは稀です。
補足コラム
命令レジスタ(IR)はフェッチ-デコード-実行サイクルで重要な役割を担います。多くのパイプライン化されたプロセッサでは、IRに相当するステージバッファや命令バッファがあり、並列処理や予測分岐のために命令が一時的に複数保持されることもあります。命令キャッシュ(I-cache)は命令取得の高速化に寄与しますが、図に示された「デコーダ直前での単一格納」はIRが本来の意味です。
FAQ
Q1: 命令レジスタと命令キャッシュの違いは何ですか?
A1: 命令レジスタは現在デコード中の単一命令を保持するレジスタで、命令キャッシュは複数の命令を高速に供給するためのキャッシュメモリです。機能とスコープが異なります。
A1: 命令レジスタは現在デコード中の単一命令を保持するレジスタで、命令キャッシュは複数の命令を高速に供給するためのキャッシュメモリです。機能とスコープが異なります。
Q2: プログラムカウンタは図のどこに関係しますか?
A2: PCは主記憶から命令を取り出す際の「どこを読むか」を示すアドレスを保持し、そのアドレスをメモリへ与えてフェッチを開始しますが、命令の内容を保持する場所ではありません。
A2: PCは主記憶から命令を取り出す際の「どこを読むか」を示すアドレスを保持し、そのアドレスをメモリへ与えてフェッチを開始しますが、命令の内容を保持する場所ではありません。
Q3: パイプライン化されたCPUではaは何になりますか?
A3: 単純に言えば命令レジスタ相当のステージバッファになります。実装によっては命令が複数ステージに分かれて保持されますが、役割は同様にデコーダへ命令を渡すことです。
A3: 単純に言えば命令レジスタ相当のステージバッファになります。実装によっては命令が複数ステージに分かれて保持されますが、役割は同様にデコーダへ命令を渡すことです。
関連キーワード: 命令レジスタ、命令デコーダ、フェッチ、プログラムカウンタ、アキュムレータ、キャッシュ、CPU内部構成

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

