我对气泡,档位和重复解码/提取之间的区别感到困惑。我的文字是Patterson的文字,第3版 例1:
add $3, $4, $6
sub $5, $3, $2
lw $7, 100($5)
add $8, $7, $2
解决方案:(使用图像,因为很难输出有什么内容)
在此示例/解决方案中,将FIVE气泡插入第3和第4条指令之间的新行。
示例2:
lw $4, 100($2)
sub $6, $4, $3
add $2, $3, $5
解决方案:Click here
在这个例子中,气泡在时钟周期4中包装第2和第3条指令。在时钟周期4中,重复I2的解码并重复I3的取指。
例1和2之间有什么区别?为什么在示例1中插入了一行气泡,而在示例2中,插入了气泡并重复解码/获取?它们在功能上是一样的吗?
如果它们在功能上相同,这是一个有效的解决方案,例如1?
I1: IF ID EX MEM WB
I2: IF ID EX MEM WB
I3: IF ID EX MEM WB
I4: IF NOP ID EX MEM WB
对于示例1,这也是一个有效的解决方案吗?
I1: IF ID EX MEM WB
I2: IF ID EX MEM WB
I3: IF ID EX MEM WB
I4: NOP IF ID EX MEM WB
这是否是例2的有效解决方案?
I1: IF ID EX MEM WB
I2: IF NOP ID EX MEM WB
I3: NOP IF ID EX MEM WB
这也是示例2的有效解决方案吗?
I1: IF ID EX MEM WB
I2: IF ID ID EX MEM WB
I3: IF IF ID EX MEM WB