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 | -   | -     | -     |
+----+-----+-------+-------+