为什么需要泡沫?

时间:2015-09-04 16:44:23

标签: assembly mips cpu pipeline

请考虑以下MIPS说明:

lw $5, 8($5)
sw $5, 12($6)

现在,据我了解,Memory[8 + $5]在第5阶段开始时可供我们使用,而sw在第4阶段需要$5信息,因此我们可以转发。为什么我们还需要泡沫/摊位?

1 个答案:

答案 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阶段转发。