1、软件"猜测法"
  从上面的分析中已经看到,当转移不成功时,条件转移指令对流水线的影响比较小。因此,编译器在对源程序进行编译时,为了达到比较好的效果,要尽量降低转移成功出现的概率。
  如图8.27(a)所示的一个源程序,如果在一般编译器中进行编译,编译结果生成的目标程序,其转移成功的概率很高,不成功的只有一次,这种编译结果对流水线的影响非常大。如果在编译器中进行适当的处理,编译成如图8.27(b)所示的结果,转移成功与不成功的概率正好反过来。这种编译结果很适合在流水线中执行。例如,对于一个需要循环执行1000次的程序,其中,999次均转移不成功,只有一次转移成功,因此,条件分支指令对流水线影响很小。如果处理机支持复合型条件转移指令,编译器也可以把源程序编译成如图8.33(c)所示的结果。
图8.27 用编译器支持条件转移指令的执行

  软件"猜测法"的优点是不需要改变硬件结构,只要适当修改编译器就能够大幅度降低条件转移指令的影响。