忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【コンピュータシステム】外れてもいいから先にやる!「分岐予測と投機実行」|情報処理問題1000本ノック

プログラムの中には多くの「もし~なら(if文など)」という分岐が存在します。CPUがその結果を待たずに「次はおそらくこうなるだろう」と予測して突き進む、驚きの高速化技術を攻略しましょう。

1. 問題:パイプラインを止めない高度な推測技術

【 問題 】 CPUがプログラムの実行中、条件分岐命令の結果が確定する前に、過去の履歴などから分岐先を予測する技術を[   A   ]、その予測に基づいてあらかじめ後続の命令を実行しておくことを[   B   ]と呼びます。空欄に入る適切な組み合わせはどれでしょうか?

ア、A:キャッシュメモリ B:割込み処理
イ、A:分岐予測     B:投機実行
ウ、A:スーパースカラ  B:アウトオブオーダ
エ、A:レジスタ     B:フェッチ

2. 正解:プロセッサアーキテクチャに関する正解

正解: イ、A:分岐予測 B:投機実行

3. 解説:不確実な未来に賭けるスピードアップ

パイプライン処理は、分岐命令に弱いです。結果が出るまで待っていると、その間パイプラインが空っぽ(ストール)になってしまうため、CPUは「賭け」に出ます。

【図解:予測と実行のサイクル】

■ 分岐予測(Branch Prediction)
・「このループはさっきから何度も繰り返しているから、次もまた繰り返すはずだ」といった統計的なデータ(分岐履歴)から、次に行くべき道を予想します。

■ 投機実行(Speculative Execution)
・分岐予測で「こっちだろう」と決めた先の命令を、結果が出る前に実行してしまいます。
・予測が当たれば、そのまま結果を採用できるので爆速になります。
・予測が外れれば、実行した結果を捨てて、正しい道からやり直します。
[ なぜ「投機」と呼ぶのか ]
★ 資産運用の「投機(リスクを取ってリターンを狙う)」と同じ意味です。外れたときのリスク(やり直しのコスト)よりも、当たったときのリターン(高速化)の方が大きいと判断して実行するため、こう呼ばれます。

1. 理解のコツ: 「信号が青になるのを確信して、ブレーキから足を離して発進の準備をする」ようなものです。実際に青になればスムーズに加速できますが、万が一赤のままならブレーキを踏み直す必要がある、というイメージです。
2. 試験対策の視点: 「パイプラインハザードの解消法」としてセットで問われます。特に現代の高性能CPUでは、予測的中率は90%を優に超えており、この技術なしでは現在の処理能力は実現できません。


4. まとめ

「分岐を予測し、先に計算しておく」。これが分岐予測投機実行です。CPUの内部で行われている、高度な「予測と挑戦」がコンピュータの快適さを支えています。

PR