首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分支目标预测与分支预测

分支目标预测与分支预测
EN

Stack Overflow用户
提问于 2014-03-19 21:58:32
回答 1查看 251关注 0票数 0

分支目标预测(BTP)与分支预测(BP)不同。据我所知,BTP会找到分支将跳转到的位置,而BP只是决定可能会采用哪个分支。

BTP依赖于BP吗?如果BTP不使用BP来预测采用哪个分支,它怎么可能知道分支的目标?

我不明白为什么会有这么大的差异?一旦分支被预测为被采用,查找目标不像读取指令中的地址那么简单吗?

EN

回答 1

Stack Overflow用户

发布于 2014-03-20 22:44:01

分支目标并不总是编码在代码中,您可以使用依赖于寄存器或内存读取的值的间接分支或调用和返回。在这些情况下,在实际到达分支之前预测地址是非常困难的。还要记住,CPU通常是流水线的,这意味着即使当前端到达分支(并需要决定跳到哪里)时,其结果可能与分支目标相关的先前指令仍未处于执行或内存读取阶段,因此如果存在此类依赖关系,则可能需要停止。

至于预测-我不会说它完全无关,但有一个巨大的差异,分支分辨率(采用/不采用)是一个位,目标更大,并且在程序生命周期内可能有许多不同的值。例如,一个x86 ret可能需要跳转到调用它的函数的任何地方(我给出这个例子,因为一些CPU已经针对这种情况进行了优化-查找返回堆栈缓冲区)。学习机制也可能非常不同,这取决于你实现的预测器,但更重要的是-模式可能不同-你可以有一个在99%的情况下采取的分支,但每次都有不同的目标,或者一个分支采取50%的时间,但几乎总是跳到同一个地方。

但是,您可以使用相同的启发式方法跟踪这两种类型的预测,通常是对分支历史模式的一些操作,因此大多数CPU可能会在预测器之间保持密切的关系。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22508211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档