请考虑以下MIPS说明:
lw $5, 8($5)
sw $5, 12($6)
现在,据我了解,Memory[8 + $5]
在第5阶段开始时可供我们使用,而sw
在第4阶段需要$5
信息,因此我们可以转发。为什么我们还需要泡沫/摊位?
答案 0 :(得分:1)
通常你要转发或放置一个气泡,除非你没有转发所需的数据,在这种情况下你可能需要停止。 在您的示例中,假设您的管道允许从MEM阶段转发到EX阶段。 你可以做一个时间图,显示每个指令在哪个阶段。
不转发:
time 1 2 3 4 5 6 7 8
lw $5, 8($5) IF ID EX MEM WB
sw $5, 12($6) IF ID-------> EX MEM WB
您必须停止两个周期才能使$5
可用于第二条指令的EX
阶段。
转发:
time 1 2 3 4 5 6 7
lw $5, 8($5) IF ID EX MEM WB
sw $5, 12($6) IF ID---> EX MEM WB
在这种情况下,从内存中读取的数据可以在EX
指令sw
阶段转发。