防止管道危险的啤酒花数量

时间:2013-09-29 05:20:33

标签: computer-science mips computer-architecture

对于以下代码段,我需要插入最少数量的nops来解决所有潜在的管道危险。

lw $t3, 4($t5)
beq $t2, $t3, -2
addi $t2, $t2, 1 

我提出的解决方案是

lw $t3, 4($t5)           
beq $t2, $t3, -2 
addi $t2, $t2, 1
NOP     
NOP

但是,我不太清楚上面的答案,所以任何人都可以帮我这个?

1 个答案:

答案 0 :(得分:0)

这里似乎唯一关注的是确保$t2在下一个周期中beq被击中之前获得正确的值($ t2 + 1)。答案实际上取决于将$t2的值写回内存或缓存所需的循环次数 - 您已省略该详细信息,但假设您只有3级流水线并且每个操作都需要1我相信即使是单一的NOP也可以起作用:

  1. 在第0周期中,当lw的值可用时,addi进入管道
  2. 在第1周期中,beq比较了$t3$t2的值,该值在上一个周期中可用
  3. 无法确定您的实现是否支持此类转发。安全的赌注是两个NOP但你遗漏了很多细节,我还没有足够的代表留下评论澄清:(希望这会有所帮助。