在本周发布的一组补丁中,通过增加对最新LLVM Clang和GCC编译器的支持,可以在x86-64微架构的不同功能级别轻松创建Linux内核。在过去的一年里,“x86-64微体系结构功能级”已经被AMD和英特尔处理器作为常规级别采用,而不仅仅是由每个CPU/核心家族的代码编译器编译而成。
x86-64微架构的功能层面对于Glibc这样的HWCAPS非常有用,很多Linux发行版等软件对老X86-64的支持也逐渐被淘汰。
在标准的x86-64上,x86-64-v2规范大致相当于英特尔Nehalem和更新的SSE3/SSE4.1/SSE4.2/SSSE3,x86-64-v3相当于哈斯韦尔时代的CPU和更新的授权AVX/AVX2/BMI2/FMA(和其他扩展),然后x86-64-v4被视为avx-50。
本周的补丁将添加Kconfig选项来构建Linux内核。如果您想通过只满足较新的处理器来获得更优化的内核,您可以选择不同的x86-64微体系结构功能级别。支持x86-64微架构特性级的编译器是GCC 11及更高版本,或者LLVM Clang 12.0及更高版本。
围绕x86-64功能级别添加Kconfig所支持的相当基本的补丁集目前在内核邮件列表中,但我希望很快进入主线树。在实践中对其进行基准测试,看看这些功能级别对现代英特尔/AMDCPU的Linux内核有多大影响,将会很有趣。