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前缀英语EVEX prefix编码将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英语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英语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:

參見

参考资料

  1. ^ Kanter, David. Intel's Sandy Bridge Microarchitecture. www.realworldtech.com. September 25, 2010 [February 17, 2018]. (原始内容存档于2019-08-16) (美国英语). 
  2. ^ 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) (美国英语). 
  3. ^ Intel Offers Peek at Nehalem and Larrabee. ExtremeTech. March 17, 2008. 
  4. ^ Intel® Celeron® 6305 Processor (4M Cache, 1.80 GHz, with IPU) Product Specifications. ark.intel.com. [2020-11-10] (英语). 
  5. ^ 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). 
  6. ^ 开胜® KH-20000系列处理器 - 兆芯. www.zhaoxin.com. [2024-10-31]. 
  7. ^ 开先® KX-5000系列处理器 - 兆芯. www.zhaoxin.com. [2024-10-31]. 
  8. ^ What's New - RAD Studio. docwiki.embarcadero.com. [2021-09-17]. 
  9. ^ GAS Changes. sourceware.org. [2024-05-03]. 
  10. ^ NASM - The Netwide Assembler, Appendix C: NASM Version History. nasm.us. [2024-05-03]. 
  11. ^ 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] 
  12. ^ FreeBSD 9.1-RELEASE Announcement. [May 20, 2013]. 
  13. ^ Linux 2.6.30 - Linux Kernel Newbies, [July 13, 2009] 
  14. ^ x86: add linux kernel support for YMM state, [July 13, 2009] 
  15. ^ Twitter, [June 23, 2010] 
  16. ^ Devs are making progress getting macOS Ventura to run on unsupported, decade-old Macs. August 23, 2022. 
  17. ^ Add support for saving/restoring FPU state using the XSAVE/XRSTOR., [March 25, 2015] 
  18. ^ Floating-Point Support for 64-Bit Drivers, [December 6, 2009] 

外部链接