MIPS - 静态多问题转发

MIPS - Forwarding in static multiple-issue

在 MIPS 的静态双发流水线中,我可以在同一时钟周期中使用带有两条指令的转发路径 运行 吗?

例如:

1. add $t0, $t0, $t1 2. sw $t0, 0($t2)

我可以在同一个时钟周期执行这两条指令吗? sw 在执行 MEM 阶段时可以使用 add 的结果值。

对吗?

如果考虑典型的 5 级流水线(IF、ID、EX、MEM、WB),ADD 的输出将在 EX -> MEM 接口处可用。对于SW指令的MEM阶段,它需要内存地址,即0 + ($t2)和应该在$t0中的数据。但是 $t0 尚未更新,因为管道尚未达到 WB 阶段。然而,应该写入 $t0 的值在 EX->MEM 阶段可用。因此,您可以在这种情况下使用转发来执行 SW 指令,而无需等待 ADD 完成。