|
|
5.2.3 条件分支对流水线的影响 在一般情况下,猜测转移不成功的方向,其控制逻辑相对比较简单;因为在遇到条件转移指令时,可以让流水线按照原先的顺序继续往前流动。如图5.32所示,第i条指令是条件转移指令,第i+1、i+2、……条指令可以按虚线方向继续进入流水线执行。因为第i条条件转移指令所需要的条件码是由第i-1条指令给出;在一条由k个流水段的流水线中,第i-1条指令要等到第i+k-2条指令进入流水线时才能形成条件码。如果形成的条件码是转移不成功的,则猜测正确,流水线的吞吐率和效率没有降低,就好象没有条件转移指令一样;相反,如果形成的条件码是转移成功的,则猜测错误,必须改为沿实线方向执行。这时,首先作废流水线中已经执行的第i+1、i+2、……、i+k-2条指令,然后,再从分支点开始执行第p、p+1、……条指令。这种情况下,每执行一条条件转移指令,一条k段流水线就有k-2个流水段被浪费。 |