processor - 分支预测器如何知道它做出了错误的猜测?

标签 processor branch-prediction

我的问题来自Mystical's answer 。据我了解,您有一条分支指令,它可以转到另一条指令,例如0x123344,也可以继续执行。

如果分支预测器根据过去的模式对其中任何一个进行猜测,它如何意识到自己犯了错误并恢复它?

最佳答案

这一切都来自分级处理器,过去 CPU 的部分部分处于闲置状态,现在我们尽可能地利用每一小块。如果没有分支或条件事件,这会很顺利,但时不时我们需要改变正在发生的事情。

因此,正如 Mystical 所提到的,预测器会进行猜测,以便大多数时间空闲计算能力不会等待。处理器继续执行猜测的内容,并且当正在等待的前一条指令完成时,将与预测器进行比较。如果猜对了,则不会发生任何事情;如果猜错了,则会发送信号,并且预测点之后的阶段将被丢弃,并使用正确的值再次运行。

这在技术层面上的实现方式因架构而异。与其说这是一个恢复操作,不如说它使错误预测后计算的所有内容都无效,并且这些过程被重做。

关于processor - 分支预测器如何知道它做出了错误的猜测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11456903/

相关文章:

operating-system - 操作系统如何与声卡/视频卡等外围设备交互

linux - 我怎么知道我是否可以使用 FMA 指令集进行编译?

performance - 现代 CPU 中的小分支

mips - MIPS r10000 如何获取隐藏指令缓存延迟?

c++ - clock() 和 MPI_Wtime() 之间的区别

c - 有没有办法将条件分配转换为无分支代码?

c++ - 如何证明指令高速缓存限制的影响

c++ - 按概率对 if...else if 语句进行排序的效果是什么?

c# - 有没有办法在 C# 中限制 API 的处理器资源?