分岐先予測
一般に10命令に一回分岐すると予測される命令があるとされ、フェッチ帯域幅が実質的に減少することになる。命令キャッシュのレイテンシが大きいマシンでは、さらに損失が大きくなる。これを何とかするため、一部のマシンでは分岐先予測を行う。これは、分岐命令自体のアドレスから分岐先アドレスを予測するものである。このとき、予測アドレスを格納しておく領域をBTB(Branch Target Buffer)と呼ぶ。もっと積極的な予測方法として、現在実行している逐次命令列の先頭アドレスから、次に実行する逐次実行命令列の先頭アドレスを予測する方式もある。
これによって、上記の処理が以下のように削減される。
実行する最初の命令のアドレスのハッシュ値を生成
そのハッシュ値に対応した分岐先予測アドレスのリストをフェッチ
その中から、分岐予測で分岐すると予測されているアドレスを選択する。
予測器が使うRAMは命令キャッシュの5%から10%のサイズであり、そのフェッチは命令キャッシュのフェッチよりもかなり前に行われる。そのため、分岐先の命令キャッシュへのフェッチを前倒しできる。これでも不十分な場合は、分岐先アドレスのリストを並列処理する場合もある。