MIPS中的失速或泡沫
发布时间:2020-12-14 04:46:49 所属栏目:百科 来源:网络整理
导读:我需要多少档才能正确执行以下说明.我对自己的所作所为感到有些困惑,所以我在这里看专家的答案. lw $1,0($2); beq $1,$2,Label; 注意,检查分支是否发生将在解码阶段完成.但是在这种情况下,beq的源寄存器rs(在这种情况下为1美元)将在lw指令的回写阶段后更新.
我需要多少档才能正确执行以下说明.我对自己的所作所为感到有些困惑,所以我在这里看专家的答案.
lw $1,0($2); beq $1,$2,Label; 注意,检查分支是否发生将在解码阶段完成.但是在这种情况下,beq的源寄存器rs(在这种情况下为1美元)将在lw指令的回写阶段后更新.那么我们是否需要将新数据从内存阶段的内存转发到beq指令的解码阶段. 这是数据路径图: 解决方法
从内存中获取的值将写入管道的回写阶段中的寄存器文件.写入寄存器文件发生在时钟周期的前半部分,而寄存器文件的读取发生在时钟周期的后半部分.
因此,写入寄存器文件的值可以在与写入寄存器文件相同的时钟周期内读取.因此,转发在这里无效. 至于所需的停顿数量,您需要在管道中插入两个气泡,因为当beq指令处于解码阶段时,lw指令应处于写回阶段. 我希望这回答了你的问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |