管道中的决策暂停



加载字指令后面紧跟着(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

我只是想知道这两种方式是否可行。此外,这种停顿涉及什么硬件操作?

在您显示的简单管道中,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.

re:您的更新:IF不是指令,它是一个流水线阶段。


顺便说一句,在删除管道图之前,问题已经清楚得多了。您应该将它们放回中,并设置代码格式(选择文本并单击{}图标,或点击ctrl-k)

相关内容

  • 没有找到相关文章

最新更新