Linus Torvalds:AMD/英特爾的x86微架構等級是”完全崩潰的垃圾”
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 生態系統顧問小組的重要成員,因此他的意見肯定具有一定的影響力。