【ぶんきよそく】
分岐予測 とは?
最終更新:
💡 分岐先を予想し、命令の準備を先に進めるCPUの工夫
CPUが分岐の結果や行き先を確定前に予測し、その経路の命令を先に読み込む技術。分岐待ちの影響を減らす狙いがあり、投機的な実行につながる。予測が外れた場合は誤った経路の処理を取り消し、正しい経路へ戻る。
📌 このページのポイント
- 分岐するかどうかや、次に進む命令の位置を予測する
- 静的予測は命令などから判断し、動的予測は実行履歴を利用する
- 誤予測では誤った経路の結果を確定せず、正しい経路で再開する
- 精度や失敗時の負担はCPU・プログラムに依存し、投機実行の安全性にも関わる
分岐予測って何を予測してるの?
結果を待つと何が困るの?
CPUは複数の命令を段階に分けて処理しているので、次の経路が分からないと命令の供給が滞ることがある。予測でその待ち時間の影響を減らすんだ。ただし当たっても、メモリ待ちなど別の理由で処理が止まることはあるよ。
予測が外れたらどうなるの?
どうやって予測してるの?
命令の情報などから判断する静的予測と、過去の実行履歴を使う動的予測があるよ。ArmのCortex-R8の説明では両方を使う。どの方法を組み合わせるかはCPUの設計によって違うんだ。
最近のCPUならほとんど当たる?
取り消した計算は何も残らないの?
まとめ:ざっくりこれだけ覚えればOK!
「分岐予測」って出てきたら「分岐先を予想して、命令の処理を先に進めるための仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Branch Prediction」 = 分岐の予測
💬 branchは「枝」のことで、プログラムの実行経路が枝分かれするのを予測するから「分岐予測」と呼ばれるんだよ