我的问题来自Mystical's answer 。据我了解,您有一条分支指令,它可以转到另一条指令,例如0x123344
,也可以继续执行。
如果分支预测器根据过去的模式对其中任何一个进行猜测,它如何意识到自己犯了错误并恢复它?
最佳答案
这一切都来自分级处理器,过去 CPU 的部分部分处于闲置状态,现在我们尽可能地利用每一小块。如果没有分支或条件事件,这会很顺利,但时不时我们需要改变正在发生的事情。
因此,正如 Mystical 所提到的,预测器会进行猜测,以便大多数时间空闲计算能力不会等待。处理器继续执行猜测的内容,并且当正在等待的前一条指令完成时,将与预测器进行比较。如果猜对了,则不会发生任何事情;如果猜错了,则会发送信号,并且预测点之后的阶段将被丢弃,并使用正确的值再次运行。
这在技术层面上的实现方式因架构而异。与其说这是一个恢复操作,不如说它使错误预测后计算的所有内容都无效,并且这些过程被重做。
关于processor - 分支预测器如何知道它做出了错误的猜测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11456903/