Dependencies MIPS软件依赖项

Dependencies MIPS软件依赖项,dependencies,mips,Dependencies,Mips,我对MIPS代码和依赖性有疑问。 如果我有以下MIPS代码 没有任何转发单元,它是如何工作的 需要插入多少个档位 7 ADD $t5, $t4, $t5 8 SUB $t5, $t5, $t3 9 SW $t5, 24($t0) 我认为: 7-8号线WAW,原始相关性t5 2循环失速 第8-9行原始相关性t5,1个循环失速 我说得对吗?还是我错过了什么 第7行和第9行之间是否存在依赖关系?我想你已经接近了 ADD $t5, $t4, $t5 在ALU中执行,需要为下一行写回$

我对MIPS代码和依赖性有疑问。 如果我有以下MIPS代码

没有任何转发单元,它是如何工作的

需要插入多少个档位

7   ADD $t5, $t4, $t5
8   SUB $t5, $t5, $t3 
9   SW  $t5, 24($t0)
我认为:

7-8号线WAW,原始相关性t5 2循环失速

第8-9行原始相关性t5,1个循环失速

我说得对吗?还是我错过了什么

第7行和第9行之间是否存在依赖关系?

我想你已经接近了

ADD $t5, $t4, $t5
在ALU中执行,需要为下一行写回
$t5
。这意味着MEM和WB暂停,因此需要2个周期

SUB $t5, $t5, $t3 
SW  $t5, 24($t0)
也在ALU中执行,这就是它暂停2个周期的原因

SUB $t5, $t5, $t3 
SW  $t5, 24($t0)
现在问题来了。我相信寄存器是在ID上读取的,这意味着这里的暂停将再次是2个周期,以等待WB of
$t5
。看起来可能不是这样,但在
SUB
的WB之前,
SW
可能必须等待ID。

编辑: 我写下了管道,以便更容易看到

+----+-----+-------+-------+
|    | ADD |  SUB  |  SW   |
+----+-----+-------+-------+
|  1 | IF  | -     | -     |
|  2 | ID  | IF    | -     |
|  3 | EX  | ID    | IF    |
|  4 | MEM | stall | stall |
|  5 | WB  | stall | stall |
|  6 | -   | EX    | ID    |
|  7 | -   | MEM   | stall |
|  8 | -   | WB    | stall |
|  9 | -   | -     | EX    |
| 10 | -   | -     | MEM   |
| 11 | -   | -     | WB    |
| 12 | -   | -     | -     |
+----+-----+-------+-------+

感谢您的回复,如果添加5个NOP 7添加$t5,$t4,$t5 2nops 8子$t5,$t5,$t3 3nops 9 SW$t5,24($t0),那么它可以正常工作?嗯,我也会在第9行前添加2个NOP,原因在最后一段。对不起,只是混淆了。WB阶段的子写回结果。如果我在第9行之前放置2个NOP,那么第9行的ID阶段将与SUB的WB处于同一个周期。@eclipse0922,我做了一些研究,发现例如MIPS 4K在内存操作中只使用1个周期的暂停。我想看看这不是你的情况,因为你从一开始就可能是对的。