Linux 之父 Linus Torvalds 可能是最善于抒发的时候大牛之一,不管您是否痛快,他的不雅点险些总口舌常风趣。在谋略新的 Linux KConfig(内核树立)构建的改动和添加时,Torvalds抒发了他对 AMD64 或 x86_64 架构功能级别的恼怒和不赞好意思。 他写谈:
移动一念念,咱们照旧不要干涉 x86-64 微体系缚构级别了。 这是个愚蠢的场地"。
扫数这个词"v2"、"v3"、"v4"等定名似乎齐是一些纵容的 glibc 东谈主工成品,杰出愚蠢,应该圆寂。
它与任何事情齐没相相关。 请不要在内核源代码中引入这种念念法。
我不知谈是谁念念出了"微架构级别"这个垃圾,但就我所知,这齐全口舌官方的,何况是一个齐全无理的模子。
微架构特质有一个杰出着实的模子,那等于 CPUID 位。 试图将这些位线性化在时候上是无理的,因为这些东西根柢不是某种线性发展。
更倒霉的是,这种"简化"实质上增多了复杂性。 当今,问题不再是"这个 CPU 维持 cmpxchgb16 辅导吗?",而是"'v3'到底是什么真谛?"
是以莫得。 咱们*不会*在内核中引入这种愚蠢的作念法。
Linus
x86-64 微体系缚构级别最早由 Red Hat 的 Florian Weimer 在 2020 年提议了,领先提议的是"A、B 和 C 级",期权交易自后又增多了"D 级"。
Linus Torvalds 对 NVIDIA 作念出的着名手势(图片来自阿尔托大学)
这些级别的主要作用是以时分/同步的时势对 CPU 功能进行分类,以简化硬件和操作系统/软件的兼容性和协同性,从而竣事更好的编译优化:
x86-64-v2(除其他外)维持流 SIMD 膨胀 4.2 (SSE4.2) 和补充流 SIMD 膨胀 3 (SSSE3)、POPCNT 辅导(适用于某些数据结构中的数据分析和位操作)以及 CMPXCHG16B(适用于并发算法的双字比拟和交换辅导)。
x86-64-v3增多了高达 AVX2 的向量辅导、MOVBE(用于大端数据拜谒)和其他位操作辅导。
x86-64-v4包含了部分 AVX-512 变体的矢量辅导。
Linus Torvalds 以为这些架构级别不是简化了问题,反而使事情变得愈加复杂,因为将硬件辅导和功能的发展线性化并不是一种实际的门径。
Torvalds 说得很有道理,因为咱们无为会发现,某些 CPU 辅导,比如 AVX,可能会出当今某些惩处器系列中,但自后又覆没了。 最近的一个例子是,英特尔在第 11 代 Rocket Lake 中引入了 AVX-512,随后又在后几代惩处器中取消了该辅导。
值得细心的是,Linus Torvalds 当今是最近竖立的x86 生态系统照顾人小组的进攻成员,因此他的成见详情具有一定的影响力。