分枝预测(branch preDICtion)和推测执行(speculation execution)是CPU动态执行技术中的主要内容,动态执行是目前CPU主要采用的先进技术之一。采用分枝预测和动态执行的主要目的是为了提高CPU的运算速度。推测执行是依托于分枝预测基础上的,在分枝预测程序是否分枝后所进行的处理也就是推测执行。
由于程序中的条件分枝是根据程序指令在流水线处理后结果再执行的,所以当CPU等待指令结果时,流水线的前级电路也处于空闲状态等待分枝指令,这样必然出现时钟周期的浪费。如果CPU能在前条指令结果出来之前就能预测到分枝是否转移,那么就可以提前执行相应的指令,这样就避免了流水线的空闲等待,相应也就提高了CPU的运算速度。但另一方面一旦前指令结果出来后证明分枝预测错误,那么就必须将已经装入流水线执行的指令和结果全部清除,然后再装入正确指令重新处理,这样就比不进行分枝预测等待结果后再执行新指令还慢了(所以IDT公司的WIN C6就没有采用分枝预测技术)。这就好象在外科手术中,一个熟练的护士可以根据手术进展情况来判断医生的需要(象分枝预测)提前将手术器械拿在手上(象推测执行)然后按医生要求递给他,这样可以避免等医生说出要什么,再由护士拿起递给他(医生)的等待时间。当然如果护士判断错误,也必须要放下预先拿的器械再重新拿医生需要的递过去。尽管如此,只要护士经验丰富,判断准确率高,那么当然就可以提高手术进行速度。
因此我们可以看出,在以上推测执行时的分枝预测准确性至关重要!所以通过Intel公司技术人员的努力,现在的Pentium和Pentium Ⅱ系列CPU的分枝预测正确率分别达到了80%和90%,这样虽然可能会有20%和10%分枝预测错误但平均以后的结果仍然可以提高CPU的运算速度。