当前位置: 首页 > 知识库问答 >
问题:

MIPS中暂停或冒泡

江永安
2023-03-14

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

lw 1,0美元(2美元);

1美元,2美元,标签

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

以下是数据路径图:

共有1个答案

淳于乐池
2023-03-14

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

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

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

我希望这能回答你的问题。

 类似资料:
  • 关于pattersson书中提到的MIPS汇编语言,我有一个问题,就是在指令之间插入NOP以避免管道暂停。 考虑以下代码 我们看到在和之间存在$s5的RAW危险。在和之间还有$s5的WAW危险。所以我们必须插入两个NOP以避免停顿。换句话说,流水线图是 当要执行sw时,必须等待lw将数据放入寄存器。因此,存在一个泡沫。此外,当添加想要写入最终结果时,它必须等待上一条指令的完成()。这是另一个泡沫。

  • 在以下MIPS指令序列中(整个程序未显示): 我想确认两条指令之间所需的暂停次数(在5阶段MIPS管道的上下文中-IF、ID/Reg、EX、MEM、WB),有无转发。 我的理解: (a)如无转发: 在这种情况下,需要2个暂停(在周期5中,可以使用寄存器的分相访问在第二条指令的ID阶段读取R1) (b) 如果有转发: 在这种情况下,不需要暂停(周期4中第二条指令的EX-stage可以从周期3中第一条

  • 暂停脚本的当前线程。 #p::Pause ; 按一次 Win+P 会暂停脚本. 再按一次则取消暂停. Pause [, On|Off|Toggle, OperateOnUnderlyingThread?] 参数 On|Off|Toggle 如果为空或省略, 则它默认为 Toggle. 否则, 请指定下列单词的其中一个: Toggle:如果在当前线程下的潜在线程处于运行状态,则暂停当前线程,否则让潜

  • 问题内容: 考虑下面的代码…阅读前5行后,我试图暂停流: 输出(接下来复制)表明它在暂停后继续读取行。也许readline在缓冲区中排队了几行,并且无论如何都将它们喂给我…如果它继续在后台异步读取,这是有道理的,但是根据文档,我不知道该怎么做。应该有适当的行为。关于如何达到预期效果的任何建议? 问题答案: 因此,事实证明,即使在pause()之后,readline流也趋向于“滴落”(即泄漏一些额外

  • Android不会在焦点编辑文本中显示键盘,即使当点击它时,在暂停或停止片断后也是如此。例如我专注于编辑文本键盘显示,一切都好,然后我点击home按钮(或者只是离开片段)恢复相同的片段后,焦点仍然在编辑文本,但不能再次显示键盘。来自日志: w/InputMethodManager:当前服务视图不是焦点视图 我只有一个活动,在清单中包含以下信息: 活动Android:name=“.Presentat

  • 1.若要暂停训练,请按下该按钮。显示暂停。若要继续训练,请点击绿色箭头图标。 2.若要停止训练,在记录训练期间或处于暂停模式时长按该按钮三秒钟,直至计数器清零。或者您可以点击并按住显示屏上的红色停止按钮。 如果在暂停后停止训练,则暂停后经过的时间不包括在总训练时间内。