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位除非使用LDMXCSRFXRSTOR命令清理,否则将保持不变,分别代表无效的操作: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相关推荐

  1. 关于dorisdb 本地搭建virtual_box虚拟机设置CPU支持AVX2指令集

    dorisdb安装文档要求 https://docs.dorisdb.com/zh-cn/main/quick_start/Deploy 解决办法 Intel VT-x和AMD-V是intel和amd ...

  2. opencv cpu指令集SSE/AVX

    SSE与AVX指令集 SSE指令集是英特尔提供的基于SIMD(单指令多数据,也就是说同一时间内,对多个不同的数据执行同一条命令)的硬件加速指令,通过使用寄存器来进行并行加速.经过几代的迭代,最新的SS ...

  3. 如何查看CPU指令集

    如何查看CPU指令集 芯片 指令集 Intel i5 x86.MMX.SSE.SSE2.SSE3.SSSE3.x86-64.SSE4.SSE4.2.EM64T.SSE4.1.VT-X.AES.AVX. ...

  4. CPU指令集是什么东西,以及指令集的架构有哪些(有哪些大类),以及具体的指令集都有哪些

    这篇文章来自于农夫山泉,我们是大自然的搬运工,哈哈,文章来源于网络 https://blog.csdn.net/yu132563/article/details/55251534 这个问题包括CPU的 ...

  5. 计算机组成原理 — CPU — 指令集架构类型

    目录 文章目录 目录 主流 CPU 指令集架构 CISC(复杂指令集计算机) x86 系列处理器 RISC(精简指令集计算机) ARM 系列处理器 PowerPC 系列处理器 MIPS 架构 RISC ...

  6. C 语言编程 — 结构化程序流的汇编代码与 CPU 指令集

    目录 文章目录 目录 文章目录 为什么要保留汇编语言 顺序程序流 条件程序流 循环程序流 函数调用栈的工作原理 文章目录 <C 语言编程 - GCC 工具链> <C 语言编程 - 程 ...

  7. 【Java 虚拟机原理】Dalvik 虚拟机 ( 简介 | CPU 指令集 | Dalvik 虚拟机内存 )

    文章目录 一.Dalvik 虚拟机简介 二.CPU 指令集 三.Dalvik 虚拟机内存 一.Dalvik 虚拟机简介 Android 5.05.05.0 之前使用的是 Dalvik 虚拟机 , 5. ...

  8. 【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )

    文章目录 一.动态库打包配置 二.NDK 完整配置参考 三.参考资料 一.动态库打包配置 在 build.gradle 构建脚本中 , 配置 ndk 编译的动态库 CPU 架构类型 ; 在 " ...

  9. CPU指令集是什么东西

    (已更正) 这个问题包括CPU的硬件结构和汇编语言的范畴. 这里梳理一下. 首先, 题主"李建国"自问自答的部分说的是正确的, CPU的指令集是软件与CPU这两个层级之间的接口, ...

  10. Intel CPU指令集以及运算加速

    前沿 人工智能运算分析依赖CPU和显卡的运算能力 .查询CPU支持的指令集,当前加速会用到AVX2指令集,如何查询是否支持 工具下载 https://www.cpuid.com/softwares/c ...

最新文章

  1. 10 Java程序员面试宝典视频课程之Servlet
  2. qt中new与delete使用示例
  3. C#将dll打包到程序中
  4. C/C++:C语言小程序—批量重命名文件
  5. Swift-EasingAnimation
  6. gitlab创建分支上传文件_代码管理-gitlab使用方法建议
  7. android中播放gif动画之三
  8. 面料经纬向、正反面判别方法
  9. [转载] su和sudo
  10. mysql 导入,导出数据库
  11. AS3多人游戏开发—同步人物移动2
  12. java教程配置通达信,通达信公式转换JAVA,通达信20个经典公式
  13. 【教学类-10-01】20221025《空心图案4*2-有重复》( 随机图案拼贴)(大班主题《动物花花衣》)
  14. WorkNC编程软件配套英格索尔高速铣刀帮助奥迪加工
  15. ubuntu中文论坛
  16. 随便画一张,奥古斯丁的世界观 及 lambda
  17. 【连通域检测】基于形态学处理的连通区域检测matlab仿真
  18. ES实现自动补全查询
  19. confluence 制作流程图_超好用的流程图绘图工具你还没get吗?
  20. 好嗨哟,这5个超牛的资源网站,让你轻松无忧找资源!

热门文章

  1. keytool条目_keytool常用命令
  2. PGP加密并签名邮件 实验
  3. 好听无损的flac格式歌曲怎么转换成mp3格式的
  4. AUTOCAD圆角半径过大问题的思考和计算
  5. java 协同过滤算法_基于用户的协同过滤算法(Java实现或R语言实现)
  6. 计算机mac地址设置路由器,MAC地址修改教程
  7. 构建人人网社会化推荐引擎
  8. 智慧城管基础业务系统建设系统方案
  9. andorid 查看 Activity任务栈
  10. Mac下最好用的离线词典-欧陆词典破解版