高级向量扩展指令集(英语: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:

参见

参考资料

外部链接

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.