マイクロアーキテクチャ
命令パイプラインの問題点の一つは、実行が継続できる前に進む方向が完全に決まっていなければならないような類の命令である。具体的には、条件分岐は、どちらの分岐に進むべきかを決定する前に、先行する命令の結果を知る必要がある。たとえば、「xが5より大きければこの処理、そうでなければこの処理」といった命令は、後続の命令をフェッチしてよいかを判断する前に、x の結果を待たなければならない。
簡単な4段パイプラインでは、遅延が最大3サイクルで、依然デコードを実行できる。しかし、クロック速度が向上すると、それにともなってパイプラインの段数が増え、現代のプロセッサでは20ステージ以上に達している。この場合、そうした命令が現れるたびにサイクルの大半CPUが停止してしまう。
解決方法、あるいはその一つは、投機実行、別名分岐予測である。分岐のどちらに進むは、実際には片方に偏っており、単純に処理を進めて 「xはおそらく5より小さいので、こちらの処理を開始」のようにして問題ない。予測の結果が正しければ、かなりの時間が節約できる。近代的な設計はさらに複雑な予測機構を持っており、過去の分岐の結果を監視して未来の分岐方向をかなりの精度で予測する。