在MIPS的静态双发布管道上,我可以使用在同一时钟周期内运行的两条指令的转发路径吗?
例如:
1. add $t0, $t0, $t1 2. sw $t0, 0($t2)
我可以在同一个时钟周期执行这两条指令吗? sw 可以在执行MEM阶段时使用 add 的结果值 .
sw
add
那是对的吗?
如果考虑典型的5级流水线(IF,ID,EX,MEM,WB), ADD 的输出将在 EX -> MEM 接口处可用 . 对于 SW 指令的 MEM 阶段,它需要内存地址,即 0 + ($t2) 和应该在 $t0 中的数据 . 但是 $t0 尚未更新,因为管道尚未达到 WB 阶段 . 但是,应该写入 $t0 的值可以在 EX->MEM 阶段获得 . 因此,您可以在此方案中使用转发来执行 SW 指令,而无需等待 ADD 完成 .
ADD
EX -> MEM
SW
MEM
0 + ($t2)
$t0
WB
EX->MEM
1 回答
如果考虑典型的5级流水线(IF,ID,EX,MEM,WB),
ADD
的输出将在EX -> MEM
接口处可用 . 对于SW
指令的MEM
阶段,它需要内存地址,即0 + ($t2)
和应该在$t0
中的数据 . 但是$t0
尚未更新,因为管道尚未达到WB
阶段 . 但是,应该写入$t0
的值可以在EX->MEM
阶段获得 . 因此,您可以在此方案中使用转发来执行SW
指令,而无需等待ADD
完成 .