我对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行之间有依赖关系吗?
发布于 2015-05-30 10:39:52
我觉得你很接近
ADD $t5, $t4, $t5在ALU中执行,并需要为下一行写回$t5。这意味着一个失速的MEM和WB,因此2个周期。
SUB $t5, $t5, $t3 也是在ALU中执行的,这就是为什么它被停止了两个周期。
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 | - | - | - |
+----+-----+-------+-------+https://stackoverflow.com/questions/30544949
复制相似问题