請更新您的瀏覽器

您使用的瀏覽器版本較舊,已不再受支援。建議您更新瀏覽器版本,以獲得最佳使用體驗。

科技

Linus Torvalds 對 AVX-512 的批評是否公道

科技新報

更新於 2020年07月15日16:29 • 發布於 2020年07月16日08:45

身為電腦的基礎語言,一套在市場活躍的指令集架構,也會隨著應用需求而持續擴充,支配伺服器和個人電腦的 80x86,其 SIMD(單一指令,多重資料)指令集延伸也從 MMX 一路疊床架屋到 AVX-512。

最近英特爾向 GNU 編譯器套件 GCC 提交關於新一代 Xeon 處理器 Sapphire Rapids 和桌上型處理器 Alder Lake 的最佳化代碼,其中由大核 Golden Cove 與小核 Gracemont 組成的 Alder Lake,取消支援 AVX-512 指令集。無獨有偶,英特爾近期正式發表的 3D 封裝混合架構處理器 Lakefield,Sunny Cove 大核也封印 AVX-512。原因也很簡單,因為小核並未支援 AVX-512,為了避免應用程式執行錯誤,所以就「維持一致性」。

然後 Linux 之父 Linus Torvalds 開砲了:他希望 AVX-512 痛苦的死去(AVX-512 Dies A Painful Death),AVX2 已經夠用,英特爾不該為了高效能運算(HPC)這種特殊的應用和讓效能測試數據看起來更厲害「創造魔法指令集」而浪費大量電晶體,應更重視常規代碼,像 AMD 這樣給他更多核心與良好的單執行緒性能(程式使用 AVX-512 會激增耗電,強迫處理器降頻)。就算追求更強的浮點運算,GPU 的理論運算效能,還是比擁有 AVX-512 的 x86 處理器強大。

▲ Linus Torvalds。(Source:Krd / CC BY-SA

接著網路對此議論紛紛。有挺身支持,也有嗤之以鼻者,更多是路過看熱鬧的。在這之前,筆者必須先替各位複習一下 AVX-512 的現況,再瞧瞧 Linus 大神的情緒性批判是否公允。

AVX(Advanced Vector Extensions)是什麼?

x86 指令集史上最重要的擴張,沒有之一。除了定義 256 位元寬的 YMM 資料暫存器,更藉由新增的 VEX(Vector Extension)指令編碼欄位,「集縮」所有可能影響指令編碼長度的資訊,處理器不需讀取大半個指令,就可知道「這個指令大概想幹什麼」,不僅可簡化指令擷取單元和指令解碼器的設計,並達成三運算元指令與保留四運算元的擴充彈性。

講白話點,AVX 是「經由改良指令集架構,更好實做高效能處理器微架構」的案例,近年來另一個知名例子,則是邁向 64 位元的 ARMv8 取消引述執行(Predication)以便實做更強大的非循序指令預測執行。

也因此,英特爾也使用 VEX 編碼「再創造」舊指令,包含用來取代老舊 SSE 的 AVX-128,也鼓勵軟體開發者儘快轉移。如此一來,英特爾就更能放手一搏,研發處理器時專心對 AVX 最佳化,將電晶體預算集中在最常用指令的刀口上,舊指令跑得慢沒關係,維持相容性即可。

AVX-512 是什麼?

AVX-512 在 2013 年 7 月由英特爾發布,是繼 2011 年 Sandy Bridge 的 AVX 與 2013 年 Haswell 的 AVX2 後的再延伸,首度出現在 2016 年 6 月上市的 Xeon Phi 7200 系列(代號 Knights Landing),在 2017 年才登陸「正常」的高階 x86 處理器(Skylake-SP,Skylake-S)。

不難理解,AVX-512 打從一開始就不是給一般人使用的東西。

AVX-512 改善了什麼?

  • SIMD暫存器(ZMM)的長度和數量都倍增。
  • 追加四運算元指令(A=B×C+D)。

  • 向量指令集必備的遮罩(Mask)暫存器。

  • 向量指令集所需的運算元聚集(Gather)與分散(Scatter)指令。

那 AMD 的處理器目前有支援 AVX-512 嗎?

沒有,等 Zen 3 再看看。有趣的是,VIA 的 Centaur CHA,搶先在 AMD 之前相容 AVX-512。

為何連英特爾自家 x86 處理器都沒有全面性支援 AVX-512?

因為 AVX-512 的相關硬體很吃電晶體空間和耗電量,英特爾也是從 10 奈米製程的 Cannon Lake 開始,才逐漸「下放」AVX-512 到一般個人電腦產品線,在這之前也僅限於伺服器(Xeon)與高效能運算(Xeon Phi)。

Linus Torvalds 說到「單執行緒」效能是怎麼回事?

不必講到 AVX-512,執行 AVX 指令會降低處理器時脈這件事,更早就發生了,這會讓性能不升反降,像知名 CDN 業者 Cloudflare,維護人員早在兩年前就做過詳細分析。

那麼「市場零碎化」?

即使「支援 AVX-512」,每個處理器系列對應的版本細節也不一樣,原因跟英特爾幾年來汲汲營營於「人工智慧」息息相關,這讓 x86 處理器的相容性更零碎化,也提高了程式最佳化的困難度。過去一講到「x86 指令集缺乏業界標準」只會想到英特爾的競爭對手自行定義專用指令,如 Cyrix 的 EMMI / MMX-FP、AMD 的 3DNow! 和未成真的 SSE5,結果現在反而是英特爾自己家裡先亂起來。

像英特爾在 Xeon Phi 7205 系列(代號 Knights Mill)為了強化深度學習的 QVNNI(QFMA+VNNI)、Cascade Lake 為了強化推論效能而增加的 VNNI(16 位元短整數)、Cooper Lake 因應 Facebook 等大客戶的深度學習需求補上 BF16 浮點數格式,都讓 AVX-512 版本混亂不堪,還發生新型處理器的支援度不見得比舊產品完整的糟糕狀況。

Linus Torvalds 的情緒性批評公道嗎?

筆者在此不下結論,但各位可想想幾個問題:

  • 假如英特爾製程技術維持領先地位,今天會有這樣的「雜音」嗎?

  • 如果 AMD 日後也支援 AVX-512,也沒碰到英特爾的降低時脈麻煩,Linus Torvalds 的反應會不會不一樣?

  • 英特爾在主流桌上型處理器開了取消 AVX-512 第一槍,是否意味 AVX-512 將淡出個人電腦舞台?

最後,唯一可以確定的是,人有才氣,必有脾氣,看來 Linus Torvalds 這個人的脾氣真的很暴躁(Grumpy)。

查看原始文章

更多科技相關文章

01

英特爾已測試涉中晶片設備 外界憂可能用於先進製程

路透社
02

毛利率警示引發AI報酬疑慮 博通股價重挫11%

路透社
03

路透:輝達擬提高H200晶片產量 因應中國強勁需求

路透社
04

鴻海高雄Y15聯開案來了!砸159億打造南台灣旗艦總部、30%容積建安心宅:給足員工福利移居亞灣

今周刊
05

美參議員華倫籲黃仁勳出席聽證 說明川普售中國晶片決策

路透社
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...