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]