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

时间:2012-07-12 17:02:57

标签: processor branch-prediction

我的问题来自Mystical's answer。据我所知,你有一个分支指令,它可以转到另一条指令,比如0x123344,或者它可以继续执行。

如果分支预测器根据过去的模式从其中任何一个进行猜测,它如何意识到它已经犯了错误并将其还原?

1 个答案:

答案 0 :(得分:3)

这一切都来自分阶段处理器,过去CPU的部分空闲,现在我们尽可能地利用每一小块。如果没有分支或条件事件,这将是顺利的,但是现在我们需要改变正在发生的事情。

因此,正如Mystical所提到的那样,预测器会进行猜测,以便大部分时间空闲计算能力不会等待。处理器继续向前推进所猜测的内容,并且当正在等待的前一条指令完成预测器时,将其与之进行比较。如果它猜对了没有任何反应,如果它猜错了,就会发出一个信号,并且预测点之后的各个阶段被抛出并再次使用正确的值运行。

在技术层面如何做到这一点因架构而异。它不是一个回复动作,而是使得在错误预测之后计算的所有内容失效并重新执行这些过程。