【发布时间】:2014-08-25 22:54:51
【问题描述】:
所以我确实搜索了这个问题,但我找到的答案我不太明白。
我对 CPU 的理解是,指令获取单元仅接收来自分支预测器的指令;然后它将通过 L1i 缓存/L2/L3/RAM 找到要执行的预测指令,然后离开它。
但是,我遇到的问题是;分支预测器如何知道它所做的是否正确?
【问题讨论】:
所以我确实搜索了这个问题,但我找到的答案我不太明白。
我对 CPU 的理解是,指令获取单元仅接收来自分支预测器的指令;然后它将通过 L1i 缓存/L2/L3/RAM 找到要执行的预测指令,然后离开它。
但是,我遇到的问题是;分支预测器如何知道它所做的是否正确?
【问题讨论】:
分支指令本身仍在执行,即,条件被评估并确定目标。对于条件分支,如果条件和目标都被正确预测,通常会通知预测器,以便可以将状态更新为强采用/未采用(如果先前的状态是弱采用/未采用)。1
如果条件或目标被错误地预测,预测器会从执行分支指令中接收正确的信息,错误预测路径中的指令会从流水线中清除,并在正确的地址处重新开始提取。
1 预测器可能会推测性地更新分支信息并纠正错误预测。推测更新对于全局历史向量来说是典型的,因为下一次预测需要该信息,而在发生错误预测之前通常不需要置信度信息。置信度信息可用于选择性动态预测、减少检查点、确定另一个线程的优先级、降低功耗等,但它通常仅用于防止单个事件改变预测方向。
【讨论】: