【发布时间】:2016-11-16 10:30:53
【问题描述】:
我了解可能()/不太可能()宏的工作原理,并且我也了解分支预测。不幸的是,我没有在高级编程的上下文中学习分支预测。
我想知道的是,可能/不太可能宏中的评估是否会导致分段错误,这对分支预测历史甚至当前结果/管道有何影响。
我不明白,如果预测的验证没有完成,我们怎么知道它是成功还是失败?
【问题讨论】:
-
我认为这个问题的开头会分散您真正要问的内容,因为您想知道在推测性执行的分支被刷新的情况下分支预测是如何工作的,对吧?
-
并非如此。是否冲洗的决定取决于评估,不是吗?我的问题是,如果评估无法完成怎么办。在这种情况下系统的状态是什么?
-
是的,我就是这个意思。如果整个分支都被刷新,而不仅仅是它之后的代码。它与可能/不太可能完全无关,甚至也与异常无关(您可能只是破坏预测变量,异常是如此昂贵,以至于对 bp 准确性的影响并不重要) - 当这真正重要时'正在推测过去的几个分支,而您错误地预测了第一个分支。有几种解决方案。
标签: c gcc x86 branch-prediction likely-unlikely