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

Intel CPU指令队列提供静态分支预测?

甄成弘
2023-03-14

在Intel手册的第3卷中,它包含了硬件事件计数器的描述:

我一直认为分支地址计算器执行静态预测算法(当分支目标缓冲区不包含分支条目时)?

谁能证实以上两个是正确的吗?我什么也找不到。

共有1个答案

冯阳成
2023-03-14

如果在目标数组中找不到条件分支目标

怎么会找不到呢?您用一个位掩码对其进行掩码,以找到表中的索引并获得下一个分支目标。

那么,如果您在阅读结果后,检查呼叫地址与结果上的标记不匹配,您将得到一个“未接受”的结果。

IQ预测分支被取走

所以分支指标说“不拿”,而智商预测它会拿,我们就有矛盾了。

以智商为分枝目标来解决这一矛盾,只不过是“如果我们跳,我们就跳这里”,但智商预测我们跳不跳是基于更多的逻辑。

然后IQ会强制分支地址计算器发出一个Baclear。由BAC置位的每个BACLEAR在指令获取流水线中产生大约8个周期的气泡。

这在14-19级管道中是很好的。8个周期是指如果IQ可以从指令(结合PC)读取实际目标地址,如果需要在寄存器中读取该值(可能尚未退休),则可能需要更长的时间。

 类似资料:
  • 我的理解是,在处理器流水线的开始,指令指针(指向要执行的下一条指令的地址)在提取之后由分支预测器更新,以便这个新地址可以在下一个周期被提取。 但是,如果在管道的早期修改了指令指针,这是否会影响当前处于执行阶段的可能依赖于旧指令指针值的指令?例如,在进行时,需要将当前 EIP 推送到堆栈中,但是在分支预测期间更新指令指针时,这不会受到影响吗?

  • 问题内容: 我正在尝试提供静态html文件,但返回500错误(.py和模板目录上有editor.html的副本),这是我尝试过的全部操作: 这是响应: 问题答案: 将其简化为最简单的方法: 将静态资产放入子文件夹。 将Flask设置为默认值,也不要设置为默认值。 通过预配置访问静态内容以验证文件是否有效 如果仍然要重用静态文件,请使用,而不要使用斜杠: 这将 直接 在文件夹内查找文件。 假定您将上

  • 我一直在处理将一个站点从Apache迁移到Nginx的过程,我快要失去理智了。虚拟主机不想提供静态资源(css、js等),我似乎不知道为什么。服务器块看起来像这样: 我错过了什么?我知道这是因为我对Nginx缺乏经验,但任何建议都将不胜感激。 谢谢 更新 这似乎与我以前遇到麻烦的化名有关。如果我将我的文档根指向别名位置(),并尝试呈现没有别名的静态内容,它会呈现良好的效果。一旦我在网址中输入别名.

  • 问题内容: 我正在使用,我的django应用的结构如下 的是 在我尝试使用它为: 但是它没有加载并给出错误 我跑去收集所有静态文件。 为什么要加载CSS文件?是否缺少任何配置? 请提出建议。 问题答案: 根据文档正确的方式来加载静态文件是 这会工作

  • 我无法访问静态内容(angular app),甚至无法访问简单的索引。来自spring boot的html文件。我一直收到404错误。Spring没有为我提供这些静态文件。自从升级到Spring Boot 2.2.4后,我就遇到了这个问题。我必须升级以应对Zip64问题。 我的application.properties里有这样一句话: 我也有自己的staticResourceConfigurat

  • 我目前正在编写一个Intel 8042驱动程序,并编写了两个循环来等待一些缓冲区准备就绪: 如您所见,我在循环中插入了指令。我最近才知道它,很自然地想尝试一下。 由于 的内容是不可预测的,因为它是 I/O 读取,因此分支预测器将使用循环指令填充管道:经过一些迭代后,它会注意到总是采用一个分支,类似于这里的情况。 如果分支预测器真的在其预测中包含I/O指令,那么上述是正确的,我不确定。 那么分支预测