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
完成。
在 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
完成。