2

我的问题来自神秘的回答。据我了解,您有一个分支指令,它可以转到另一条指令,比如,0x123344或者它可以继续执行。

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

4

1 回答 1

3

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

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

在技​​术层面如何做到这一点因架构而异。它与其说是一种还原动作,不如说是它使在错误预测之后计算的所有内容无效,并且这些过程被重做。

于 2012-07-12T17:24:51.687 回答