管道摊位的决策

时间:2016-04-11 01:41:41

标签: mips pipeline cpu-architecture risc

加载字指令后面紧跟一个分支指令(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

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

1 个答案:

答案 0 :(得分: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.

re:你的更新:IF不是指令,它是一个管道阶段。

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