メインコンテンツへ
コンピュータ構成要素

CPUの分岐予測(Branch Prediction)に関する記述として正しいものはどれか。

ア.動的分岐予測は予測精度が静的より低いが、実装が単純なのでRISCプロセッサに採用される。
イ.分岐予測を導入すると、予測が当たっても外れても常に同一のサイクル数で命令を実行できる。
ウ.分岐予測ユニットは条件分岐のみを対象とし、無条件ジャンプ命令には適用されない。
エ.分岐予測が外れた場合、投機的に実行したパイプラインをフラッシュして正しいパスを実行するため、ペナルティが生じる。正解

解説

分岐予測は「赤信号でも青だと賭けて走り出す」作戦。当たれば速い、外れたら急ブレーキ(パイプラインフラッシュ)でリカバリーしなければならないペナルティが待っている。

なぜ エ が正解か

エが正解。分岐予測外れ(misprediction)が発生すると、投機的に実行していた誤ったパスの命令をパイプラインからすべて破棄(フラッシュ)し、正しい分岐先から実行し直す。この切り替えにかかるサイクル数が「分岐ペナルティ」。現代のCPUでは分岐予測精度95-99%程度だが、外れたときのコストは10-20サイクル程度。

なぜ ア は間違いか

動的分岐予測(分岐履歴テーブルBHT等)は静的より高精度。実装は複雑だが、現代プロセッサの主流。

なぜ イ は間違いか

予測が当たればペナルティなし、外れればフラッシュのペナルティあり。サイクル数は変動する。

なぜ ウ は間違いか

無条件ジャンプも間接ジャンプ(コールスタック、BTB等)では予測が必要。特にindirect branchは予測対象。

出典: AI生成問題(学習用)