gpt4 book ai didi

c - Linux内核: likely() vs unlikely()

转载 作者:行者123 更新时间:2023-11-30 17:40:46 25 4
gpt4 key购买 nike

这两种方法似乎在 Linux 内核代码中广泛使用。我知道分支预测的基础,但我想知道这两个函数如何影响 if() 语句的操作。它们还工作在 CPU 指令流水线级别吗?或者它处于内核代码级别更高的抽象级别?

作为 Linux 内核的初学者,我对了解这两种方法的内部工作原理非常感兴趣。谢谢!

最佳答案

在某些(微)架构上,编译器可以将分支提示编码到指令中,以告诉 CPU 分支预测单元是否可能采用该分支。

在其他架构上,分支预测单元的静态部分有足够的文档记录,可以使用它来生成更快的代码。例如,在大多数现代 x86 上,前向分支被静态预测为不被采用,而后向分支被预测为被采用(以实现更快的循环)。

最后,预测性缓存获取对于速度来说可能更重要。这主要取决于程序员,但对于指令缓存来说,如果编译器知道程序的哪一部分可能会被执行,并保持该部分足够小以适合缓存,那么它会有所帮助。

关于c - Linux内核: likely() vs unlikely(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21369681/

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