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