分岐予測器
if文やループの分岐の結果を、条件が実際に評価される前に推測するCPUの部品。パイプラインを止めないための仕組みで、現代の予測器は95〜99%を的中させる。これがなければ、現代のCPUは2〜5倍遅くなる。
方式にはバイモーダル(分岐ごとの2ビットカウンタ)、2レベル適応型(履歴パターン)、パーセプトロン系(現代のIntel/AMDのTAGE)がある。予測ミスはパイプラインのフラッシュを伴い、15〜20サイクルかかる。Spectre(2018年)は分岐予測器を訓練して、サイドチャネル経由でデータを漏らした。コードの工夫としては、ループの前に配列をソートして分岐を予測しやすくする手があり、分岐の多い処理では2〜6倍の高速化になることもある。GCCの __builtin_expect は、予測しやすい分岐をコンパイラに教えるヒントになる。