AVX指令集
外觀
進階向量擴充指令集(英語:Advanced Vector Extensions,簡稱AVX)是x86架構微處理器中的指令集,由英特爾在2008年3月提出,並在2011年第一季度發佈的Sandy Bridge系列處理器中首次支援[1]。AMD在隨後的2011年第三季度發佈的Bulldozer系列處理器中開始支援AVX[2]。AVX指令集提供了新的特性、指令和編碼方案。
AVX是X86指令集的SSE延伸架構,如IA16至IA32般的把暫存器XMM 128bit提升至YMM 256bit,以增加一倍的運算效率。此架構支援了三運算指令(3-Operand Instructions),減少在編碼上需要先複製才能運算的動作。在微碼部分使用了LES LDS這兩少用的指令作為延伸指令Prefix。[查證請求]
AVX2指令集將大多數整數命令操作擴充到256位,並引入了熔合乘法累積(FMA)運算。AVX-512則使用新的EVEX字首編碼將AVX指令進一步擴充到512位元。Intel Xeon Scalable處理器支援AVX-512。
支援
[編輯]CPU對AVX指令集的支援情況
[編輯]- 英特爾
- Sandy Bridge(2011年Q1)及更新的的處理器(除賽揚和奔騰)均支援[3]
- Tiger Lake(2020年Q3)及更新的的奔騰和賽揚處理器均支援[4]
- AMD:
- 推土機微架構(2011年Q4)及更新的處理器均支援[5]
編譯器和組譯器對AVX指令集的支援情況
[編輯]- Absoft編譯器支援-mavx選項
- Free Pascal編譯器從2.7.1版本開始為AVX和AVX2提供-CfAVX和-CfAVX2選項
- Delphi從RAD studio v11.0 Alexandria版本開始支援AVX2和AVX512[8]
- GNU組譯器從GNU Binutils 2.19版本開始支援AVX[9]
- 4.6版本的GCC和11.1版本的Intel編譯器套件開始支援AVX
- Open64編譯器從4.5.1版本開始使用-mavx標誌支援AVX
- PathScale編譯器支援-mavx選項
- Vector Pascal編譯器通過-cpuAVX32選項支援AVX
- Visual Studio 2010/2012 編譯器通過行內函數(intrinsic)和 /arch:AVX選項支援AVX
- NASM從2.03版本開始支援 AVX,並在 2.04 版本中,進行了許多與 AVX 相關的錯誤修復和更新[10]
作業系統對AVX指令集的支援情況
[編輯]AVX通過256 位寬的YMM暫存器添加了新的暫存器狀態,因此需要作業系統顯式支援,以在上下文交換時正確儲存和恢復AVX的擴充暫存器。以下作業系統版本支援 AVX:
- DragonFly BSD:在2013年初添加支援
- FreeBSD:在2012年1月21日提交的修補程式中添加支援,[11]該修補程式包含在9.1穩定版中[12]
- Linux:內核版本2.6.30(發佈於2009年6月9日[13])開始支援[14]
- macOS:從10.6.8版本(Snow Leopard,發佈於2011年6月23日)開始支援。[15]macOS Ventura 不支援沒有AVX2指令集的 x86 處理器[16]
- OpenBSD:在2015年3月21日添加支援[17]
- Solaris:在 Solaris 10 Update 10 和 Solaris 11 中開始支援。
- Windows:在 Windows 7 SP1(KB976932)、Windows Server 2008 R2 SP1、[18]Windows 8、Windows 10 中提供支援
- Windows Server 2008 R2 SP1 結合 Hyper-V 需要熱修復(KB2568088)以支援 AMD AVX(Opteron 6200 和 4200 系列)處理器
- Windows XP 和 Windows Server 2003 在內核驅動和用戶應用程式中都不支援 AVX
參見
[編輯]參考資料
[編輯]- ^ Kanter, David. Intel's Sandy Bridge Microarchitecture. www.realworldtech.com. September 25, 2010 [February 17, 2018]. (原始內容存檔於2019-08-16) (美國英語).
- ^ Hruska, Joel. Analyzing Bulldozer: Why AMD's chip is so disappointing - Page 4 of 5 - ExtremeTech. ExtremeTech. October 24, 2011 [February 17, 2018]. (原始內容存檔於2019-08-16) (美國英語).
- ^ Intel Offers Peek at Nehalem and Larrabee. ExtremeTech. March 17, 2008.
- ^ Intel® Celeron® 6305 Processor (4M Cache, 1.80 GHz, with IPU) Product Specifications. ark.intel.com. [2020-11-10] (英語).
- ^ Butler, Michael; Barnes, Leslie; Das Sarma, Debjit; Gelinas, Bob. Bulldozer: An Approach to Multithreaded Compute Performance (PDF). IEEE Micro. March–April 2011, 31 (2): 6–15. S2CID 28236214. doi:10.1109/MM.2011.23. (原始內容 (PDF)存檔於May 19, 2024).
- ^ 开胜® KH-20000系列处理器 - 兆芯. www.zhaoxin.com. [2024-10-31].
- ^ 开先® KX-5000系列处理器 - 兆芯. www.zhaoxin.com. [2024-10-31].
- ^ What's New - RAD Studio. docwiki.embarcadero.com. [2021-09-17].
- ^ GAS Changes. sourceware.org. [2024-05-03].
- ^ NASM - The Netwide Assembler, Appendix C: NASM Version History. nasm.us. [2024-05-03].
- ^ Add support for the extended FPU states on amd64, both for native 64bit and 32bit ABIs, svnweb.freebsd.org, January 21, 2012 [January 22, 2012]
- ^ FreeBSD 9.1-RELEASE Announcement. [May 20, 2013].
- ^ Linux 2.6.30 - Linux Kernel Newbies, [July 13, 2009]
- ^ x86: add linux kernel support for YMM state, [July 13, 2009]
- ^ Twitter, [June 23, 2010]
- ^ Devs are making progress getting macOS Ventura to run on unsupported, decade-old Macs. August 23, 2022.
- ^ Add support for saving/restoring FPU state using the XSAVE/XRSTOR., [March 25, 2015]
- ^ Floating-Point Support for 64-Bit Drivers, [December 6, 2009]