Dependencies MIPS软件依赖项
我对MIPS代码和依赖性有疑问。 如果我有以下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中执行,需要为下一行写回$
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个周期的暂停。我想看看这不是你的情况,因为你从一开始就可能是对的。