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

MIPS r10000 fetch如何隐藏指令缓存延迟?

夹谷斌蔚
2023-03-14

我正在研究mips r10000的不同管道阶段。本文指出,处理器每次从指令缓存中获取4条指令。但指令缓存的延迟必须超过一个周期,虽然我不知道指令缓存的准确命中延迟,但Haswell处理器中一级数据缓存的命中延迟大约为4个周期。

因此,如果我们假设一级指令缓存延迟为3-4个周期,那么处理器如何在每个周期提取4条指令?

共有1个答案

充运浩
2023-03-14

MIPS R10000有一个单周期延迟指令缓存,可以在一个缓存块中获取由四条指令组成的连续块,而无需对齐约束。

由于每个银行都可以独立寻址,如图中所示,可以访问十六个单词中包含的四个单词的任何连续序列。寻址行[0,0,0,0]获取字[0,1,2,3](字0-3);行[1,0,0,0]获取字[4,1,2,3](字1-4);行[1,1,0,0]获取单词[4,5,2,3](单词2-5)。。。;行[3,3,3,2]获取单词[12,13,14,11](单词11-14);行[3,3,3,3]获取单词[12,13,14,15](单词12-15)。

(同一银行可能会跨越缓存块边界,但随后必须并行确认两个缓存块命中。对以前访问的方式进行记忆将使这减少为对较大缓存块中顺序访问的常见情况进行一次集检查;一组将使用记忆方式,另一组将在输入新缓存块时执行正常检查。跨页是一个类似的问题。)

(多指令提取的一种常见替代方法具有自然对齐块的对齐约束,例如16字节。)

在第二个管道阶段(解码)检测到分支之前,此处理器不会重定向指令提取,因此,即使预测正确,执行的分支也会引入一个周期气泡。由于执行是在第四个管道阶段开始的,并且指令的执行顺序不正确,因此直到一些周期之后才可能确定错误的预测。(错误预测的执行分支可能会解码执行分支气泡中已经获取的指令,因为这些指令存储在“恢复缓存”中。)

指令缓冲可以消除这样的危险,因为由于数据依赖性和其他危险,吞吐量很少接近最大值。

一般来说,缓存可以在每次取数时提供多个字(自然对齐限制有助于提供区块的单个银行),或者在每个周期中访问多次(例如,指令缓存的管道化程度比管道的其他部分更高,或者使用昂贵的多端口SRAM)。

只要每个周期提供一个新地址,每个周期就可以执行多个连续指令的获取。如果每个周期有两个地址可用(预测),则可以在同一周期中获取一个分支后的指令。(另一种减少分支损失并提供其他分支后优化机会的方法是使用跟踪缓存。)

 类似资料:
  • 问题内容: 我正在尝试使用复选框和过滤器选项创建多选下拉列表。我试图隐藏列表,但我在外面单击却无法弄清楚。感谢你的帮助。 http://plnkr.co/edit/tw0hLz68O8ueWj7uZ78c 问题答案: 请注意,打开第二个弹出窗口(在具有多个选择的页面上)时,您的解决方案(问题中提供的Plunker)不会关闭其他框的弹出窗口。 通过单击一个框打开一个新的弹出窗口,单击事件将始终停止。

  • 问题内容: 在我中,我使用或下载档案的最新版本,例如: 使用或创建自己的图像层的语句。它将用作以后执行的缓存。 问题 :如何禁用该指令的缓存? 让类似 缓存失效的 东西在那里工作会很棒。例如,通过使用HTTP ETag 或查询 最后修改的 标头字段。这样就可以根据HTTP标头进行快速检查,以决定是否可以使用缓存的层。 我知道一些肮脏的技巧可以帮助例如在语句中执行下载Shell脚本。在我们的构建系统

  • 我想隐藏的动作条,当一个activity启动,当用户触摸屏幕显示几秒钟,然后再次隐藏。 下面是我想要的,但我想知道是否有更好的方法(忽略一些样式问题:魔术数字、逻辑重复等)。 我用的是ActionBarSherlock。 谢谢

  • 我想让我的Bash脚本对最终用户来说更加优雅。当Bash执行命令时,如何隐藏输出? 例如,当Bash执行时 以下内容将显示给执行Bash的用户: 现在我想对用户隐藏这一点,而是显示: 我怎样才能完成这项任务?我一定会帮助使脚本更加用户友好。如果发生错误,则应向用户显示。 我想知道如何显示相同的消息,而一组命令正在执行。

  • 问题内容: 单击Dialog_01的按钮 将隐藏 其窗口并打开Dialog_02。单击Dialog_02的按钮应 关闭 其窗口并 取消隐藏Dialog_01。如何实现呢? 问题答案: 将第一个窗口作为第二个窗口的父窗口: 如果您希望每次都显示相同的对话框,请执行以下操作: 和子窗口,而不是关闭它。

  • 问题内容: 如何将鼠标指针隐藏在X11下?我想使用内置库来执行此操作,而不要使用SDL(SDL_ShowCursor(0))或glut(glutSetCursor(GLUT_CURSOR_NONE))之类的东西。另外,无论指针处于什么位置,都应该隐藏鼠标指针,而不仅仅是在其自己的窗口中。 问题答案: 您可以创建并设置一个不可见的光标主题。这个技巧由maemo使用,因为在触摸屏设备上放置光标是毫无意