2、硬件"猜测法"
  如果修改编译器有困难,也可以通过改变硬件来降低转移指令对流水线造成的影响,这就是硬件"猜测法"。
  在指令缓冲栈的入口处增设一个简单的指令分析器,当这个指令分析器检测到转移指令(包括无条件转移指令和条件转移指令)时,就按照猜测的方向预取指令,同时保留当前PC中的内容,以备猜错时恢复原来的程序执行方向。
  当指令执行部件执行完形成条件码的指令之后,判断转移是否成功。如果转移成功,则猜测正确。这种情况下,条件转移或无条件转移指令几乎对流水线不造成影响。如果转移不成功,则猜测错误,这时,要用保存下来的地址恢复程序计数器PC,清除指令缓冲栈,并重新开始取指令。

  上面介绍的两种"猜测法"都是针对循环程序的。由于控制循环的条件转移指令,其进入循环的概率要比出循环的概率大得多;因此,采用软件或硬件"猜测法"可以使转移指令对流水线的影响减少到很小。然而,在实际的程序中,还有大量的普通条件转移指令;例如,由高级语言中的"IF"语句编译产生的条件转移指令。这种条件转移指令转移成功与不成功的概率一般各为50%。对于这类条件转移指令,无论采用何种猜测法,其效果都是一样的。