コンピューターアーキテクチャ

分岐予測

パイプラインでは分岐が確定する前に次の命令を取得します。予測が外れると誤った経路を破棄するため、予測精度が重要です。

3つの分岐予測器の比較

1. パターンを選択(T=分岐、N=非分岐)

2. 分岐を順に実行

最上段が実際の結果、下が予測です。緑は正解、赤は不正解です。右は2ビットの現在状態です。

予測失敗時誤経路を破棄
1ビット前回と同じ予測
2ビット強い状態から2回で反転
現代のCPU95%以上の場合も

1ビットはループ境界で2回外す

Tが続いて最後にNとなるループでは、終了のNと次の開始Tで予測を外します。

2ビットは単発の例外に強い

強い分岐からNが来ても弱い分岐になり、まだTを予測します。強い状態から方向を変えるには2回必要です。交互パターンには単純な予測器は弱い場合があります。

コードでの影響

整列済み配列で if (x >= 128)を繰り返すと結果がまとまり予測しやすくなります。ランダムな順では難しく、性能差はCPUやコンパイラにも依存します。誤予測では パイプライン の処理を破棄するため、深い構造では代償が増えます。