由于错误预测的分支与2位预测器有什么额外的CPI?

时间:2018-01-18 16:22:17

标签: architecture cpu-architecture

在教科书"计算机组织与设计第5期",第366页 问题4.15.3

enter image description here

答案:

enter image description here

我想知道为什么失速周期为3?

数据路径中有五个流水线(IF,ID,EX,MEM,WB)阶段。

问题是分支结果是在EX阶段确定的。

我认为它应该是这样的:

IF ID EX MEM WB
   nop
      nop
         IF ID EX  MEM 

失速周期是2,而不是3。

有人可以提供一些建议吗?

1 个答案:

答案 0 :(得分:1)

{p} Isuru H正好在their comment

这是管道的数据路径,可以在引用的书籍的第289页找到

Data path with the inter-stage registers, showing that the PC is updated in the MEM stage

如第287页所述,PC在IF或MEM阶段进行更新

  

■选择PC的下一个值,在增量之间进行选择   PC和分支地址来自MEM阶段

强调我的

了解为什么在EX阶段执行分支时在MEM阶段更新PC的关键点是第289页的提示

  

PC可以被认为是一个流水线寄存器:一个为流水线的IF阶段供电。

这不仅显然意味着PC仅在时钟的上升/下降沿更新,而且PC不断呈现新值。

可以认为是

 write enable --
                |
 New            |
 value  .-------v-----.   Current value
-----> | Current value | --------->
        '-------------'
             PC

就像任何flip-flop一样。

让我们调用分支B,错误的路径W1,W2,W3,......上的指令以及右路径R1,R2,R3,......上的指令

当分支执行时,管道图就是这个

IF ID EX MEM WB
W2 W1 B

在B的EX阶段,PC显示地址W3

W3   .--.  W2
--> | W2 | -->
     '--'

因为这是IF阶段加法器计算的结果 当时钟到来时,分支将其输出写入EX / MEM寄存器,包括新PC值,PC用W3更新。
现在PC显示R1的地址

R1   .--.  W3
--> | W3 | -->
     '--'

但需要新时钟来锁存此值,因此只有当B存在MEM阶段时才能正确设置PC。

这是多周期管道图

IF ID EX MEM WB

B

W1 B

W2 W1 B           computing the branch outcome

W3 W2 W1 B        presenting the branch outcome to the PC

R1 W3 W2 W1  B    updated the branch outcome

注意在第4.8章(页316)的开头概述了分支的延迟。