我真的很困惑气泡、停顿和重复解码/获取之间的区别。我的文本是帕特森文本,第三版。
示例1:
add $3, $4, $6
sub $5, $3, $2
lw $7, 100($5)
add $8, $7, $2
Run Code Online (Sandbox Code Playgroud)
解决方案:
(使用图像,因为很难输入其中的内容)
在此示例/解决方案中,将五个气泡插入到第三条和第四条指令之间的新行中。
示例2:
lw $4, 100($2)
sub $6, $4, $3
add $2, $3, $5
Run Code Online (Sandbox Code Playgroud)
解决方案:
在此示例中,气泡包裹了时钟周期 4 中的第二条和第三条指令。在时钟周期 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
Run Code Online (Sandbox Code Playgroud)
对于示例 1,这也是一个有效的解决方案吗? …