我想知道在长管道中是否可行,当较年轻的分支指令已经被分支预测机制处理时,但由于管道长度,相应的lhr(或ghr,取决于实现)仍然没有更新为较旧分支的实际结果。
如果这是一个可行的方案,它是如何工作的?
你在问题中提到的场景似乎是合理的,但我怀疑这是否会导致任何与分支预测器相关的功能/性能问题。但是当我们有背靠背的分支时,以下是可能的结果-
- 较老的分支被正确预测 -由于分支被正确预测,预测器算法将使用预测结果并使用信息来预测较年轻的分支。更新不会影响预测结果,因为旧的分支已经被正确预测了。
- 较旧的分支被占用并且没有正确预测 -在这种情况下,较年轻的分支本身不在问题中,因为处理器无论如何都会压缩在较旧分支的阴影下进行的所有指令/更新。因此,这种预测将毫无用处。
同样适用于未采取分支和正确/错误预测的场景。希望这能回答你的问题。
是的,这绝对是可能的。当旧的分支没有被解决或者预测机制(不管它是什么)用旧分支的结果更新时,新的分支将基于可用的"过时的"历史被预测。