【问题标题】:Number of nops to prevent pipeline harzards防止管道危害的 nop 数量
【发布时间】:2013-09-29 05:20:32
【问题描述】:

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

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

但是,我不太确定上面的答案,所以任何人都可以帮助我吗?

【问题讨论】:

    标签: computer-science mips computer-architecture


    【解决方案1】:

    似乎这里唯一需要考虑的是确保$t2 在下一个周期中击中beq 之前获得正确的值($t2 + 1)。答案实际上取决于将 $t2 的值写回内存或缓存需要多少个周期 - 您已经省略了该细节,但假设您只有一个 3 阶段管道并且每个操作需要 1 个周期我相信即使是单个 NOP 也可以工作:

    1. 在循环 0 中,lw 进入管道,因为来自 addi 的值变得可用
    2. 在循环 1 中,beq 比较 $t3$t2 的值,后者在上一个循环中可用

    无法确定您的实现是否支持这种类型的转发。安全的赌注是两个 NOP,但你遗漏了很多细节,而且我还没有足够的代表发表评论以澄清:( 希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 2016-07-22
      • 2011-09-09
      相关资源
      最近更新 更多