【コンピュータ構成要素】先読みで加速する!分岐予測の仕組み|情報処理問題1000本ノック
CPUが命令を処理する際、次にどの道に進むかを「予測」して動く。プロセッサの処理効率を極限まで高めるための知的な制御手法「分岐予測」の概念を整理しましょう。
1. 問題:パイプラインの停止を防ぐ先回り実行
【 問題 】 CPUの高速化手法の一つで、条件分岐命令(if文など)の実行結果をあらかじめ予測し、その分岐先の命令を先行的に実行することで、パイプラインの乱れや停止(ハザード)を防ぐ技術を何と呼ぶでしょうか?
① スーパスカラ ② 分岐予測 ③ アウトオブオーダ実行 ④ キャッシュメモリ
2. 正解:CPUの制御手法に関する正解
正解: ② 分岐予測
3. 解説:結果を待たずに「投機的」に実行する
CPUは複数の命令を段階的に並行実行する「パイプライン処理」を行っています。しかし、条件分岐があると「どちらに進むか」が確定するまで次の命令を読み込めません。そこで、過去の履歴などから分岐先を予測し、先に計算を進めてしまうのが「分岐予測」です。
[ 分岐予測のポイント ]
・目的:条件が決まるまでCPUが待機してしまう「パイプラインハザード」を回避し、スループットを向上させる。
・投機的実行:予測に基づいて「たぶんこうなるだろう」と先行して実行することを指します。予測が外れた場合は、実行結果を破棄して正しい分岐先からやり直します。
[ 他の選択肢との違い ]
★ スーパスカラ:複数のパイプラインを持ち、複数の命令を同時に実行する物理的な仕組み。
★ アウトオブオーダ実行:命令の記述順序に縛られず、データが揃った命令から実行する仕組み。
★ キャッシュメモリ:CPUと主記憶(メモリ)の速度差を埋めるための高速な記憶装置。
・目的:条件が決まるまでCPUが待機してしまう「パイプラインハザード」を回避し、スループットを向上させる。
・投機的実行:予測に基づいて「たぶんこうなるだろう」と先行して実行することを指します。予測が外れた場合は、実行結果を破棄して正しい分岐先からやり直します。
[ 他の選択肢との違い ]
★ スーパスカラ:複数のパイプラインを持ち、複数の命令を同時に実行する物理的な仕組み。
★ アウトオブオーダ実行:命令の記述順序に縛られず、データが揃った命令から実行する仕組み。
★ キャッシュメモリ:CPUと主記憶(メモリ)の速度差を埋めるための高速な記憶装置。
1. 理解のコツ: 「もしAならこちら、Bならあちら」という結果を待たずに、過去の傾向から「次はAだろう!」と決め打ちして作業を進めておくイメージです。当たれば大幅な時短になり、外れても元の場所からやり直すだけという、リスクを取ってリターンを得る攻めの技術です。
2. 試験対策の視点: 「制御フロー」「先行的に実行」「パイプラインの効率化」といったキーワードがセットで登場します。高度試験では、予測が外れた際の損失(分岐ペナルティ)についても触れられることがあります。
4. まとめ
「条件分岐の結果を予測して、先行的に命令を実行する」。これが分岐予測の核となる定義です。ハードウェアがソフトの動きを先読みして、処理の「空白」を作らないようにする高度な工夫であることを押さえておきましょう!
PR