0

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

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

4

1 回答 1

0

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

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

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

于 2014-01-26T22:31:36.480 回答