CPU指令集——AVX2
1.查看CPU所支持的指令集
- 对于windows系统,可借助
CPU-Z
工具,可查看当前CPU所支持的指令集:
- 对于Linux系统,可运行
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系列处理器:
2. SIMD
SIMD的全称为:Single Instruction stream Multiple Data streams,对应的中文名为:单指令流多数据流。
SIMD为并行计算中的一种。
计算机架构Flynn分类法(1966年提出),根据指令流和数据流的并发数量分为:
- Single instruction stream single data stream(SISD),典型的串行机。
- Single instruction stream multiple data streams(SIMD),即单一指令可同时操作多个不同的数据流。指令可以pipeline方式顺序执行,也可通过多个功能单元并行执行。
- Multiple instruction streams single data stream(MISD),多条指令对应一个数据流。该架构除用于容错场景外(如多个系统同时操作相同的数据流,必须达成相同的结果),不常用。
- Multiple instruction streams multiple data streams(MIMD),多个自治处理器同时对不同的数据执行不同的指令。MIMD包括多核超标量处理器和分布式系统。
3. AVX
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+CA=A*B+CA=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寄存器复用。
AVX指令集遵循IEEE-754规范,其中的32-bit浮点数为单精度浮点数(float),64-bit浮点数为双精度浮点数(double)。因为AVX中的YMM寄存器为256-bit,所以若存储单精度浮点数32-bit,可存储8个,若存储双精度浮点数64-bit,可存储4个。
尽管VGX并不要求内存对齐,但是内存对齐有助于提升性能。如对于128-bit访问的16字节对齐和对于256-bit访问的32字节对齐。
MXCSR寄存器的0~5位除非使用LDMXCSR
或FXRSTOR
命令清理,否则将保持不变,分别代表无效的操作:denormal、除0、overflow、underflow和精度。
4. AVX2指令集
根据《Intel® Advanced Vector Extensions Programming Reference.pdf》有:
- 1) PMULUDQ - Multiply Packed Unsigned Doubleword Integers
- 2)vpunpckldq- Unpack Low Data
- 3)vpunpckhdq- Unpack High Data
- 4)VPSHUFD- Shuffle Packed Doublewords
- 5)VPBLENDD - Blend Packed Dwords
- 6)VPERMD - Full Doublewords Element Permutation
- 7)VPSRLVD——Variable Bit Shift Right Logical
参考资料:
[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》
CPU指令集——AVX2相关推荐
- 关于dorisdb 本地搭建virtual_box虚拟机设置CPU支持AVX2指令集
dorisdb安装文档要求 https://docs.dorisdb.com/zh-cn/main/quick_start/Deploy 解决办法 Intel VT-x和AMD-V是intel和amd ...
- opencv cpu指令集SSE/AVX
SSE与AVX指令集 SSE指令集是英特尔提供的基于SIMD(单指令多数据,也就是说同一时间内,对多个不同的数据执行同一条命令)的硬件加速指令,通过使用寄存器来进行并行加速.经过几代的迭代,最新的SS ...
- 如何查看CPU指令集
如何查看CPU指令集 芯片 指令集 Intel i5 x86.MMX.SSE.SSE2.SSE3.SSSE3.x86-64.SSE4.SSE4.2.EM64T.SSE4.1.VT-X.AES.AVX. ...
- CPU指令集是什么东西,以及指令集的架构有哪些(有哪些大类),以及具体的指令集都有哪些
这篇文章来自于农夫山泉,我们是大自然的搬运工,哈哈,文章来源于网络 https://blog.csdn.net/yu132563/article/details/55251534 这个问题包括CPU的 ...
- 计算机组成原理 — CPU — 指令集架构类型
目录 文章目录 目录 主流 CPU 指令集架构 CISC(复杂指令集计算机) x86 系列处理器 RISC(精简指令集计算机) ARM 系列处理器 PowerPC 系列处理器 MIPS 架构 RISC ...
- C 语言编程 — 结构化程序流的汇编代码与 CPU 指令集
目录 文章目录 目录 文章目录 为什么要保留汇编语言 顺序程序流 条件程序流 循环程序流 函数调用栈的工作原理 文章目录 <C 语言编程 - GCC 工具链> <C 语言编程 - 程 ...
- 【Java 虚拟机原理】Dalvik 虚拟机 ( 简介 | CPU 指令集 | Dalvik 虚拟机内存 )
文章目录 一.Dalvik 虚拟机简介 二.CPU 指令集 三.Dalvik 虚拟机内存 一.Dalvik 虚拟机简介 Android 5.05.05.0 之前使用的是 Dalvik 虚拟机 , 5. ...
- 【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )
文章目录 一.动态库打包配置 二.NDK 完整配置参考 三.参考资料 一.动态库打包配置 在 build.gradle 构建脚本中 , 配置 ndk 编译的动态库 CPU 架构类型 ; 在 " ...
- CPU指令集是什么东西
(已更正) 这个问题包括CPU的硬件结构和汇编语言的范畴. 这里梳理一下. 首先, 题主"李建国"自问自答的部分说的是正确的, CPU的指令集是软件与CPU这两个层级之间的接口, ...
- Intel CPU指令集以及运算加速
前沿 人工智能运算分析依赖CPU和显卡的运算能力 .查询CPU支持的指令集,当前加速会用到AVX2指令集,如何查询是否支持 工具下载 https://www.cpuid.com/softwares/c ...
最新文章
- 10 Java程序员面试宝典视频课程之Servlet
- qt中new与delete使用示例
- C#将dll打包到程序中
- C/C++:C语言小程序—批量重命名文件
- Swift-EasingAnimation
- gitlab创建分支上传文件_代码管理-gitlab使用方法建议
- android中播放gif动画之三
- 面料经纬向、正反面判别方法
- [转载] su和sudo
- mysql 导入,导出数据库
- AS3多人游戏开发—同步人物移动2
- java教程配置通达信,通达信公式转换JAVA,通达信20个经典公式
- 【教学类-10-01】20221025《空心图案4*2-有重复》( 随机图案拼贴)(大班主题《动物花花衣》)
- WorkNC编程软件配套英格索尔高速铣刀帮助奥迪加工
- ubuntu中文论坛
- 随便画一张,奥古斯丁的世界观 及 lambda
- 【连通域检测】基于形态学处理的连通区域检测matlab仿真
- ES实现自动补全查询
- confluence 制作流程图_超好用的流程图绘图工具你还没get吗?
- 好嗨哟,这5个超牛的资源网站,让你轻松无忧找资源!