Linux内核:likely() vs unlikely()
- 论坛
- Linux内核:likely() vs unlikely()
19 浏览
匿名的
0 Comments
在一些(微)架构中,编译器可以将分支提示编码到指令中,告诉CPU分支预测单元该分支可能会被执行。
在其他架构中,分支预测单元的静态部分被充分记录,可以用它来生成更快的代码。
例如,在大多数现代x86架构中,前向分支被静态预测为不会被执行,而后向分支被预测为会被执行(以加快循环速度)。
最终,预测性缓存获取可能更重要以提高速度。这主要取决于程序员,但对于指令缓存来说,如果编译器知道程序的哪部分可能会被执行,并且将该部分保持足够小以适应缓存,那么这可以帮助提高效率。
据我所知,自从P4以来,英特尔就没有再使用静态分支预测提示了...
我认为我足够小心地说了显式的分支提示并不常见。然而,当CPU首次遇到分支时,它必须猜测。通常情况下,第一次遇到的前向分支不会被预测为执行,而后向分支会被预测为执行。对于现代的微架构来说,这一点仍然成立。