MIPS中的停滞或气泡

MIPS中的停滞或气泡,mips,pipeline,Mips,Pipeline,正确执行以下指令需要多少个暂停。我对我所做的有点困惑,所以我来这里看看专家们的答案 lw$1,0($2) beq$1,$2,标签 注意,检查分支是否会发生将在解码阶段完成。但是在这种情况下,beq的源寄存器rs,即$1,将在lw指令的写回阶段后更新。所以我们需要将新数据从beq指令的内存级转发到解码级 以下是数据路径图: 从内存中提取的值在管道的回写阶段写入寄存器文件。对寄存器文件的写入发生在时钟周期的前半部分,而对寄存器文件的读取发生在时钟周期的后半部分 因此,写入寄存器文件的值可以在写入寄存

正确执行以下指令需要多少个暂停。我对我所做的有点困惑,所以我来这里看看专家们的答案

lw$1,0($2)

beq$1,$2,标签

注意,检查分支是否会发生将在解码阶段完成。但是在这种情况下,beq的源寄存器
rs
,即
$1
,将在lw指令的写回阶段后更新。所以我们需要将新数据从beq指令的内存级转发到解码级

以下是数据路径图:


从内存中提取的值在管道的回写阶段写入寄存器文件。对寄存器文件的写入发生在时钟周期的前半部分,而对寄存器文件的读取发生在时钟周期的后半部分

因此,写入寄存器文件的值可以在写入寄存器文件的相同时钟周期内读取。因此,转发在此处无效

至于所需的暂停次数,您需要在管道中插入两个气泡,因为当
beq
指令处于解码阶段时,
lw
指令应该处于写回阶段

我希望这能回答你的问题