-1

加载字指令后紧跟分支指令(mips 32)。

lw r2, (0)r1;-- I swap registers here as opposed to my previous question
Beq r2, r3, target;

要生成执行图,IF ID EX MEM WB. 现在摊位应该在哪里BEQ

IF ID EX MEM WB
   IF *  *   ID EX

or 

IF ID EX MEM WB
   *  *  IF  ID  EX

我只是想了解这两种方式是否可行。此外,此类摊位涉及哪些硬件操作?

4

1 回答 1

1

在您展示的简单管道中,lw在获取下一个 insn 时仍在解码。在它们都被解码之前,管道无法判断它们是否存在冲突。

仔细想想你的第二个停顿在做什么:CPU 在当前一条指令被解码之前延迟获取下一条指令。它现在不知道这两条指令是什么。

IF ID EX MEM WB     lw
   *  IF ID  EX     beq  // lw isn't even decoded yet, and neither is this one, so no way to tell if they conflict.

回复:您的更新:IF不是指令,而是流水线阶段。


顺便说一句,在您删除管道图之前,这个问题要清楚得多。您应该使用代码格式将它们放回原处(选择文本并单击 {} 图标,或按 ctrl-k。)

于 2016-04-11T01:55:58.627 回答