応用情報技術者 2015年 春期 午前2 問10
問題文
CPUにおける投機実行の説明はどれか。
選択肢
ア:依存関係にない複数の命令を、プログラム中での出現順序に関係なく実行する。
イ:パイプラインの空き時間を利用して二つのスレッドを実行し、あたかも二つのプロセッサであるかのように見せる。
ウ:二つ以上のCPUコアによって複数のスレッドを同時実行する。
エ:分岐命令の分岐先が決まる前に、あらかじめ予測した分岐先の命令の実行を開始する。(正解)
CPUにおける投機実行の説明【午前2 解説】
要点まとめ
- 結論:投機実行とは、分岐命令の結果が確定する前に予測した分岐先の命令を先行して実行する技術です。
- 根拠:分岐命令の結果待ちによるパイプラインの停滞を防ぎ、CPUの処理効率を向上させるために用いられます。
- 差がつくポイント:投機実行は分岐予測と密接に関連し、誤った予測時には実行結果を破棄する仕組みがある点を理解することが重要です。
正解の理由
選択肢エは「分岐命令の分岐先が決まる前に、あらかじめ予測した分岐先の命令の実行を開始する」とあり、これは投機実行の定義そのものです。CPUは分岐命令の結果が判明するまで待つと処理が遅れるため、予測に基づいて先に命令を実行し、効率的に処理を進めます。
よくある誤解
投機実行は単に複数命令を同時に実行することではなく、分岐予測に基づく先読み実行である点を混同しやすいです。
解法ステップ
- 投機実行のキーワード「分岐命令」「予測」「先行実行」を確認する。
- 各選択肢の説明と照らし合わせ、分岐命令の結果待ちに関する記述を探す。
- 分岐先が決まる前に命令を実行する説明がある選択肢を特定する。
- それが選択肢エであることを確認し、正解とする。
選択肢別の誤答解説
- ア:依存関係のない命令を順序無視で実行するのはアウトオブオーダー実行の説明であり、投機実行とは異なります。
- イ:パイプラインの空き時間を利用して複数スレッドを実行するのはハイパースレッディング技術の説明です。
- ウ:複数CPUコアで複数スレッドを同時実行するのはマルチコア処理の説明で、投機実行とは別の概念です。
- エ:正解。分岐予測に基づき分岐先が決まる前に命令を実行する投機実行の説明です。
補足コラム
投機実行はCPUのパフォーマンス向上に不可欠な技術ですが、誤った予測により実行した命令は破棄されるため、無駄な処理も発生します。近年のCPUでは高度な分岐予測アルゴリズムと組み合わせて効率化が図られています。また、投機実行に関連するセキュリティ問題(例:Spectre脆弱性)も注目されています。
FAQ
Q: 投機実行とアウトオブオーダー実行は同じですか?
A: いいえ。投機実行は分岐予測に基づく先読み実行で、アウトオブオーダー実行は命令の依存関係を考慮して順序を変えて実行する技術です。
A: いいえ。投機実行は分岐予測に基づく先読み実行で、アウトオブオーダー実行は命令の依存関係を考慮して順序を変えて実行する技術です。
Q: 投機実行が失敗した場合はどうなりますか?
A: 予測が外れた場合、実行した命令の結果は破棄され、正しい分岐先の命令から再実行されます。
A: 予測が外れた場合、実行した命令の結果は破棄され、正しい分岐先の命令から再実行されます。
関連キーワード: 投機実行、分岐予測、パイプライン、CPU性能、ハイパースレッディング、アウトオブオーダー実行

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

