MIPS 软件依赖
MIPS sw dependency
我对 MIPS 代码和依赖性有疑问。
如果我有以下 MIPS 代码。
没有任何转发单元如何工作?
需要插入多少个摊位?
7 ADD $t5, $t4, $t5
8 SUB $t5, $t5, $t3
9 SW $t5, 24($t0)
我认为:
第 7-8 行 WAW,RAW 相关性 t5 2 周期停顿
第 8-9 行 RAW 相关性 t5,1 个周期停顿
我说得对吗?还是我错过了什么?
第7行和第9行之间是否存在依赖关系?
我认为你很接近
ADD $t5, $t4, $t5
在ALU中执行,下一行需要回写$t5
。这意味着 MEM 和 WB 停顿,因此有 2 个周期。
SUB $t5, $t5, $t3
也在 ALU 中执行,这就是它停滞 2 个周期的原因。
SW $t5, 24($t0)
问题来了。我相信寄存器是在 ID 上读取的,这意味着这里的停顿将再次是 2 个周期,以等待 $t5
的 WB。看起来可能不是这样,但是直到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 | - | - | - |
+----+-----+-------+-------+
我对 MIPS 代码和依赖性有疑问。 如果我有以下 MIPS 代码。
没有任何转发单元如何工作?
需要插入多少个摊位?
7 ADD $t5, $t4, $t5
8 SUB $t5, $t5, $t3
9 SW $t5, 24($t0)
我认为:
第 7-8 行 WAW,RAW 相关性 t5 2 周期停顿
第 8-9 行 RAW 相关性 t5,1 个周期停顿
我说得对吗?还是我错过了什么?
第7行和第9行之间是否存在依赖关系?
我认为你很接近
ADD $t5, $t4, $t5
在ALU中执行,下一行需要回写$t5
。这意味着 MEM 和 WB 停顿,因此有 2 个周期。
SUB $t5, $t5, $t3
也在 ALU 中执行,这就是它停滞 2 个周期的原因。
SW $t5, 24($t0)
问题来了。我相信寄存器是在 ID 上读取的,这意味着这里的停顿将再次是 2 个周期,以等待 $t5
的 WB。看起来可能不是这样,但是直到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 | - | - | - |
+----+-----+-------+-------+