newsence
來源篩選

AVX2 is slower than SSE2-4.x under Windows ARM emulation

Hacker News

The author investigates whether compiling apps for AVX2 improves performance on Windows ARM via Prism emulation, only to discover that it is actually slower than using SSE2-4.x due to emulation overhead.

newsence

在 Windows ARM 模擬環境下 AVX2 的效能慢於 SSE2-4.x

Hacker News
10 天前

AI 生成摘要

我原本以為針對 AVX2 編譯的應用程式在 Windows ARM 的 Prism 模擬下會因為寬指令集補償而維持效能,但我錯了。這篇文章解釋了我如何發現 AVX2 實際上比 SSE2-4.x 慢,並分享了相關的測試數據與原因。

背景

本文探討在 Windows ARM 裝置上透過 Prism 模擬層執行 x86_64 應用程式時,使用 AVX2 指令集反而比舊有的 SSE2-4.x 慢的現象。作者透過 RemObjects 的編譯器工具鏈與數學函式庫進行基準測試,發現儘管 AVX2 擁有更寬的運算位元,但在模擬環境下的開銷卻抵消了硬體優勢,這引發了開發者對於跨架構模擬效率與指令集選擇的深入討論。

社群觀點

針對 AVX2 在模擬環境表現不佳的現象,社群討論首先聚焦於硬體架構的本質差異。多位評論者指出,AVX2 採用 256 位元暫存器,而主流的 ARM NEON 指令集僅支援 128 位元,這導致模擬層在處理寬向量指令時必須進行拆解或額外轉換,自然產生巨大的效能損耗。相比之下,SSE 系列指令集同樣基於 128 位元,能更直接地映射到 ARM 的硬體單元上,因此在模擬環境中表現更為穩定且快速。

關於指令集的普及度與必要性,社群內出現了分歧的聲音。有觀點認為 AVX2 應該被淘汰,理由是其對低階硬體不友善且提高了軟體運行的門檻;然而,多數技術參與者反駁了這一點,並引用 Steam 硬體調查數據指出,AVX2 的普及率已超過 95%,且在過去十年的多數 x86 處理器中已是標配。討論中也澄清了關於 AVX 指令集會導致處理器大幅降頻或過熱的迷思,指出這類嚴重的熱節流問題主要存在於早期的 Intel Skylake 架構,現代的 Intel 與 AMD 處理器在處理向量運算時已顯著改善了頻率調度機制。

此外,針對 ARM 陣營為何在寬向量支援上進度緩慢,社群展開了技術性的探討。雖然 ARM 推出了 SVE 與 SVE2 等可變長度向量擴展,理論上能支援高達 2048 位元的運算,但目前在消費級市場(如 Apple 或 Qualcomm 的晶片)中,硬體實作仍多停留在 128 位元。這造成了軟體開發者的兩難:即便 SVE 提供了優異的遮罩與預測功能,但若硬體底層的執行單元寬度不足,其效能便難以與成熟的 x86 向量指令集匹敵。部分評論者認為,這正是為何在 ARM 平台上,原生編譯始終優於任何形式的模擬,因為模擬層難以跨越暫存器寬度不對等的物理限制。

最後,社群達成了一項共識:SIMD 指令集早已不限於單純的數學運算,現代編譯器利用這些擴展進行自動向量化,能顯著提升雜湊表查詢、分支代碼優化及各類數據處理的效率。因此,AVX2 在模擬器上的頹勢並非指令集本身的缺陷,而是反映了當前 ARM 桌面硬體在追趕 x86 高階向量效能時仍存在的斷層。

延伸閱讀

  • Cloudflare 關於 Intel 頻率縮放與 AVX-512 危險性的早期探討。
  • Daniel Lemire 針對 AVX-512 降頻迷思的實測反駁。
  • Steam 硬體與軟體調查報告(關於指令集普及率數據)。
  • FEX-emu:一個利用 ARM SVE 提升模擬效率的開源 x86 模擬器專案。