本文共 2680 字,大约阅读时间需要 8 分钟。
cat /proc/cpuinfo | grep flags
来查看当前CPU所支持的指令集: 由此可知,Intel i7-7700CPU支持AVX2指令集,但是不支持AVX-512指令集。
AVX512-IFMA为Intel AVX512指令集的一个extension扩展集,主要用于加速整数运算。 根据https://medium.com/@hdevalence/even-faster-edwards-curves-with-ifma-8b1e576a00e9 可知,其基于AVX512-IFMA的实现是AVX2速度的1.5倍。目前支持AVX512-IFMA指令集的CPU主要有Cannon Lake(如Intel® Core™ i3-8121U Processor)和Ice Lake系列处理器:
SIMD的全称为:Single Instruction stream Multiple Data streams,对应的中文名为:单指令流多数据流。
SIMD为并行计算中的一种。 计算机架构Flynn分类法(1966年提出),根据指令流和数据流的并发数量分为:AVX为在CPU处理器上实现SIMD操作的指令集。主要衍化流程为:
AVX,全称为:Advanced Vector Extensions(又名,Sandy Bridge New Extensions),是Intel和AMD微服务器x86指令集的extension扩展。
AVX2扩充到了支持256bit的整数运算指令,引入了Fused-Multiply-Add(FMA)运算。所谓FMA,即可通过单一指令实现 A = A ∗ B + C A=A*B+C A=A∗B+C计算。
AVX-512通过使用新的EVEX prefix编码方式,将AVX扩充到了支持512-bit运算。
Intel AVX introduces support for 256-bit wide SIMD registers (YMM0-YMM7 in operating modes that are 32-bit or less, YMM0-YMM15 in 64-bit mode). The lower 128-bits of the YMM registers are aliased to the respective 128-bit XMM registers.
AVX硬件由16个256bitYMM寄存器(YMM0~YMM15)和1个32-bit control/status控制/状态MXCSR寄存器组成。其中YMM寄存器的低128位与Intel SSE指令集的128-BIT XMM寄存器复用。MXCSR寄存器的0~5位除非使用LDMXCSR
或FXRSTOR
命令清理,否则将保持不变,分别代表无效的操作:denormal、除0、overflow、underflow和精度。
根据《Intel® Advanced Vector Extensions Programming Reference.pdf》有:
参考资料:
[1] https://www.cpuid.com/softwares/cpu-z.html [2] https://medium.com/@hdevalence/even-faster-edwards-curves-with-ifma-8b1e576a00e9 [3] https://en.wikipedia.org/wiki/AVX-512 [4] https://en.wikipedia.org/wiki/Advanced_Vector_Extensions [5] https://software.intel.com/en-us/articles/introduction-to-intel-advanced-vector-extensions [6] https://en.wikipedia.org/wiki/SIMD [7] 《Intel® Advanced Vector Extensions Programming Reference.pdf》转载地址:http://hqmx.baihongyu.com/