加载字指令后面紧跟一个分支指令(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
我只想了解两种方式是否可行。此外,这些档位涉及哪些硬件操作?
答案 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
不是指令,它是一个管道阶段。