基本情報技術者 2016年 秋期 午前(科目A) 問10
問題文
CPUにおける投機実行の説明はどれか。
選択肢
ア:依存関係にない複数の命令を、プログラム中での出現順序に関係なく実行する。
イ:パイプラインの空き時間を利用して二つのスレッドを実行し、あたかも二つのプロセッサであるかのように見せる。
ウ:二つ以上のCPUコアによって複数のスレッドを同時実行する。
エ:分岐命令の分岐先が決まる前に、予測した分岐先の命令の実行を開始する。(正解)
CPUにおける投機実行の説明はどれか。【午前2 解説】
要点まとめ
- 結論→投機実行は分岐命令の結果を待たず、分岐予測に基づいて予想される命令列を先行実行し処理効率を高める技術です。
- 根拠→予測が正しければパイプラインの空きを埋めて性能向上、誤りなら実行結果を破棄して正しい経路に復帰する制御が行われます。
- 差がつくポイント→投機実行は分岐予測と密接に結びつきアウトオブオーダーやSMTと混同しやすいため用語と動作を正確に区別してください。
正解の理由
正解は エ です。投機実行(speculative execution)は、分岐命令の分岐先がまだ確定していない段階でCPUが分岐予測に基づいて「予測された分岐先の命令」を先に実行する手法を指します。予測が当たれば実行結果を採用してパイプラインの待ち時間を削減し、外れればその実行状態を破棄して正しい分岐先から再実行します。この説明は選択肢のエに該当します。
よくある誤解
- 投機実行=命令の順序を気にせず実行すること:これはアウトオブオーダー実行やスーパースカラーの説明に近く投機実行とは別概念です。
- 投機実行=複数スレッドを同時に走らせること:同時実行はSMT(ハイパースレッディング)やマルチコアの説明であり投機とは用途が異なります。
- 投機実行は常に安全:投機実行は性能向上手段ですが、Spectreなどの脆弱性を通じて情報漏えいを招くリスクがあります。
解法ステップ
- 問題文のキーワードを拾う:「投機実行」「分岐先」「予測」「先に実行」などを確認する。
- 各選択肢のキーワードとCPU技術を照合する:アウトオブオーダー、SMT、マルチコア、分岐予測のどれに該当するかを判定する。
- 分岐予測と分岐先を先行実行する説明があれば投機実行と一致するため正解とする。
- 用語の微妙な違い(予測の有無、スレッド/コア/命令単位の違い)を確認して誤答を除外する。
選択肢別の誤答解説
- ア: 「依存関係にない複数の命令を、プログラム中での出現順序に関係なく実行する。」
→ これはアウトオブオーダー実行(またはスーパースカラー)に該当します。投機実行は“分岐予測に基づく先行実行”が肝ですので該当しません。 - イ: 「パイプラインの空き時間を利用して二つのスレッドを実行し、あたかも二つのプロセッサであるかのように見せる。」
→ これはSMT(Simultaneous Multithreading)、製品名ではハイパースレッディングの説明です。投機実行ではスレッド切替や同時実行が目的ではありません。 - ウ: 「二つ以上のCPUコアによって複数のスレッドを同時実行する。」
→ これはマルチコア/並列実行の定義であり投機実行とは無関係です。 - エ: 「分岐命令の分岐先が決まる前に、予測した分岐先の命令の実行を開始する。」
→ これが投機実行そのものであり、正解です。実行を後から破棄できる仕組みと分岐予測の組合せが特徴です。
補足コラム
投機実行はCPU性能を引き出す重要な技術の1つで、分岐予測やパイプライン処理とセットで用いられます。近年では投機実行が原因でSpectreやMeltdownといったマイクロアーキテクチャの脆弱性が注目され、投機実行によって一時的に読み出したデータがキャッシュを介して副次的に漏れる問題が発見されました。これに対し、CPUベンダやOSベンダは予防策(スペキュレーションバリア、retpoline、マイクロコード更新等)を提供しています。性能と安全性のバランスを理解することが現代CPU設計と運用では重要です。
FAQ
Q1: 投機実行とアウトオブオーダー実行は同じですか?
A1: 異なります。投機実行は分岐予測に基づく「予測的に実行する」動作、アウトオブオーダーは依存関係が無い命令を順序を変えて実行する命令レベルの並列化です。両者は併用されることが多いです。
A1: 異なります。投機実行は分岐予測に基づく「予測的に実行する」動作、アウトオブオーダーは依存関係が無い命令を順序を変えて実行する命令レベルの並列化です。両者は併用されることが多いです。
Q2: 予測が外れたときCPUはどうするのですか?
A2: 投機で実行した命令の副作用(レジスタやメモリの一部)を破棄し、正しい分岐先から再実行して状態を整えます。一部の副作用(キャッシュ状態など)は完全には戻らない場合があります。
A2: 投機で実行した命令の副作用(レジスタやメモリの一部)を破棄し、正しい分岐先から再実行して状態を整えます。一部の副作用(キャッシュ状態など)は完全には戻らない場合があります。
Q3: 投機実行はセキュリティにどう影響しますか?
A3: 投機実行自体は合法な最適化ですが、誤った分岐で読み出したデータがキャッシュ等を通じて観測可能になることでサイドチャネル攻撃の媒介となる場合があります。対策としてソフト/ハードの修正が行われています。
A3: 投機実行自体は合法な最適化ですが、誤った分岐で読み出したデータがキャッシュ等を通じて観測可能になることでサイドチャネル攻撃の媒介となる場合があります。対策としてソフト/ハードの修正が行われています。
関連キーワード: 投機実行、分岐予測、パイプライン、アウトオブオーダー実行、スーパースカラー、SMT(ハイパースレッディング)、Spectre、キャッシュサイドチャネル

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

