応用情報技術者 2019年 秋期 午前2 問09
問題文
CPUのプログラムレジスタ (プログラムカウンタ)の役割はどれか。
選択肢
ア:演算を行うために、 メモリから読み出したデータを保持する。
イ:条件付き分岐命令を実行するために、 演算結果の状態を保持する。
ウ:命令のデコードを行うために、メモリから読み出した命令を保持する。
エ:命令を読み出すために、 次の命令が格納されたアドレスを保持する。(正解)
CPUのプログラムレジスタ (プログラムカウンタ)の役割【午前2 解説】
要点まとめ
- 結論:プログラムカウンタは「次に実行する命令のメモリアドレスを保持」するレジスタです。
- 根拠:CPUは命令を順番に実行するため、次の命令位置を管理する必要があります。
- 差がつくポイント:命令のデコードや演算結果の保持と混同せず、プログラムカウンタの役割を正確に理解することが重要です。
正解の理由
プログラムカウンタ(PC)は、CPUが次に実行すべき命令のメモリアドレスを保持します。命令のフェッチ段階でこのアドレスを使い、命令をメモリから読み出します。命令実行後はPCの値が更新され、次の命令アドレスを指すため、プログラムの順次実行を可能にします。
したがって、「エ: 命令を読み出すために、次の命令が格納されたアドレスを保持する。」が正解です。
したがって、「エ: 命令を読み出すために、次の命令が格納されたアドレスを保持する。」が正解です。
よくある誤解
プログラムカウンタは命令の内容や演算結果を保持するものではなく、命令のアドレスを管理する役割である点を誤解しやすいです。
解法ステップ
- プログラムカウンタの名称から「プログラムの位置を示すレジスタ」と推測する。
- 各選択肢の役割をCPUの命令実行サイクル(フェッチ→デコード→実行)に照らし合わせる。
- 命令の読み出しに使うアドレスを保持するのがプログラムカウンタであると判断する。
- 他の選択肢はデータ保持や演算結果の状態保持など、別のレジスタの役割であると区別する。
選択肢別の誤答解説
- ア: メモリから読み出したデータを保持するのは「汎用レジスタ」や「データレジスタ」の役割であり、プログラムカウンタではありません。
- イ: 演算結果の状態を保持するのは「フラグレジスタ」や「ステータスレジスタ」で、条件分岐の判定に使われます。
- ウ: 命令のデコードに使う命令を保持するのは「命令レジスタ」であり、プログラムカウンタとは異なります。
- エ: 次の命令のアドレスを保持し、命令の順次実行を管理するプログラムカウンタの正しい説明です。
補足コラム
プログラムカウンタは「命令カウンタ」とも呼ばれ、CPUの制御フローの根幹を担います。分岐命令やジャンプ命令が実行されると、PCの値は変更され、プログラムの実行順序が変わります。これにより条件分岐やループ処理が可能になります。
FAQ
Q: プログラムカウンタはどのタイミングで更新されますか?
A: 命令のフェッチ後、通常は次の命令アドレスに自動的にインクリメントされます。分岐命令時は指定されたアドレスに書き換えられます。
A: 命令のフェッチ後、通常は次の命令アドレスに自動的にインクリメントされます。分岐命令時は指定されたアドレスに書き換えられます。
Q: プログラムカウンタと命令レジスタの違いは何ですか?
A: プログラムカウンタは「命令のアドレス」を保持し、命令レジスタは「実際に読み出した命令の内容」を保持します。
A: プログラムカウンタは「命令のアドレス」を保持し、命令レジスタは「実際に読み出した命令の内容」を保持します。
関連キーワード: プログラムカウンタ、命令フェッチ、CPUレジスタ、命令実行サイクル、制御フロー

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

