分岐先予測
分岐先予測(英: Branch target prediction)とは、CPU内で分岐命令の分岐先アドレスを事前(命令キャッシュから命令をフェッチする前)に予測することである。
分岐先予測と分岐予測は異なる概念である。分岐予測は単に分岐するかしないかを予測することを指す。分岐先予測は、分岐命令を解析して分岐先アドレスが判明する前に、そのアドレスを予測することである。
近年では、命令キャッシュのキャッシュミス時のペナルティが大きくなり、フェッチ幅が大きくなってきている。このため、分岐先の決定がボトルネックになりつつある。このあたりの処理は次のようになる。
命令キャッシュがブロック単位で命令列をフェッチする。
そのブロック内の命令が走査され、分岐を特定する。
分岐予測で分岐すると予測されている最初の分岐命令を特定する。
その分岐命令の分岐先アドレスを計算する。
そのアドレスを含むブロックを命令キャッシュにフェッチする。
この処理に2サイクルかかるとしたら、分岐すると予測された命令がみつかる度に1サイクルを無駄にしてしまうことになる。