gpt4 book ai didi

c++ - 分支预测 vs 分支目标预测

转载 作者:可可西里 更新时间:2023-11-01 16:38:12 26 4
gpt4 key购买 nike

我理解的对吗,if 语句更依赖于分支预测,而 v-table 查找更依赖于分支目标预测?关于v表,没有“分支预测”,只有目标预测?

试图了解 CPU 如何处理 v 表。

最佳答案

分支预测是预测分支是否会被采用。分支目标预测是预测分支要去的地方。这两件事是独立的,可以在所有组合中发生。

这些例子可能是:

无条件分支,固定目标

  • 无限循环
  • goto 语句
  • breakcontinue 语句
  • if/else 语句的“then”子句结束(跳过 else 子句)
  • 非虚函数调用

无条件分支,可变目标

  • 从函数返回
  • 虚函数调用
  • 函数指针调用
  • switch语句(如果编译成跳转表)

条件分支,固定目标

  • if 语句
  • switch语句(如果编译成一系列if/else语句)
  • 循环条件测试
  • &&|| 运算符
  • 三元?: 运算符

条件分支,变量目标

  • 在正常情况下不太可能出现,但编译器可能会结合上述两种情况合成一个作为优化。例如,在 x86 上,编译器可能会优化代码,如 if (condition) { obj->VirtualFunctionCall(); } 如果由于尾调用优化而出现在函数末尾,则进入条件间接跳转,如 jne *%eax

关于c++ - 分支预测 vs 分支目标预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21608874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com