【发布时间】:2026-01-24 19:55:01
【问题描述】:
The Intel Architecture's Developer's Manual(Vol3A,第 8-26 节)说:
奔腾处理器和更新的处理器系列使用 分支预测技术,通过预取来提高性能 分支指令之前的分支指令的目的地是 执行。 因此,指令执行不是确定性的 执行分支指令时序列化。
这是什么意思?
听起来真的,真的很糟糕。听起来像 CPUID 这样的序列化指令会破坏分支预测(反之亦然),但这似乎不太可能。任何 ASM 人都可以帮助我理解“非确定性”在这种情况下的含义吗?
*为清晰起见进行了编辑
【问题讨论】:
-
你为什么在乎?超标量和乱序执行使您的处理器更快!
-
这取决于您所说的“中断分支预测”是什么意思;它不会产生不正确的结果(您似乎担心);它只是通过丢失投机执行的结果来潜在地减慢速度。
-
breaks = 使其分支到错误的点。我从“非确定性”这个短语中推断出这一点。
标签: assembly intel cpu-architecture branch-prediction