在教科书"计算机组织与设计第5期",第366页 问题4.15.3
答案:
我想知道为什么失速周期为3?
数据路径中有五个流水线(IF,ID,EX,MEM,WB)阶段。
问题是分支结果是在EX阶段确定的。
我认为它应该是这样的:
IF ID EX MEM WB
nop
nop
IF ID EX MEM
失速周期是2,而不是3。
有人可以提供一些建议吗?
答案 0 :(得分:1)
这是管道的数据路径,可以在引用的书籍的第289页找到
如第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)的开头概述了分支的延迟。