MIPS 指令之间的空操作数

Numbers of no-ops betweeen MIPS instructions

我有如下指令序列:

I1 lw  , 40()
I2 add , , 
I3 sw  , 50()

问题是:

在没有转发的基本五级流水线中,I2和I3之间应该有多少个noop?

我觉得数字是2,而书上给出的解是1,我是不是漏了什么?任何线索表示赞赏。

题目实际上是Computer Organization and design, The Hardware/Software Interface Fourth editon的Exercise 4.13。

好吧,如果您的管道中没有转发,解决此冲突的唯一方法是 two noops。

    1    2    3    4    5    6    7    8    9
I1  IF   ID   EX   MEM  WB
I2       IF   ID   EX   MEM  [WB]
NOP           IF   ID   EX   MEM  WB
NOP                IF   ID   EX   MEM  WB
I3                      IF   [ID] EX   MEM  WB

从这个粗略的table可以清楚的看出,I2的Write Back和I3的Instruction Decode只有"aligned"两个noop。我假设你的教科书是错误的。