博客
关于我
CPU指令集——AVX2
阅读量:283 次
发布时间:2019-03-01

本文共 1312 字,大约阅读时间需要 4 分钟。

查看CPU支持的指令集与技术指南

1. 查看CPU支持的指令集

了解当前CPU支持的指令集对于优化计算性能至关重要。以下是查看CPU指令集的方法和相关信息:

方法总结

  • Windows 系统:可借助工具查看CPU指令集信息。
  • Linux 系统:通过命令 cat /proc/cpuinfo | grep flags 查看CPU指令集。

具体信息

Intel i7-7700 CPU 支持 AVX2 指令集,但不支持 AVX-512。AVX512-IFMA 为 Intel AVX512 指令集的一个扩展集,主要用于加速整数运算。基于 AVX512-IFMA 的实现可将速度提升至 AVX2 的 1.5 倍。

目前支持 AVX512-IFMA 的 CPU 主要包括 Cannon Lake(如 Intel® Core™ i3-8121U Processor)和 Ice Lake 系列处理器。

2. SIMD(单指令流多数据流)

SIMD 是并行计算中的重要技术。Flynn 分类法基于指令流和数据流的并发数量将计算机架构分为四类:

  • SISD(单指令单数据流):典型的串行机。
  • SIMD(单指令多数据流):单指令可同时操作多个数据流,支持 pipeline 和并行执行。
  • MISD(多指令单数据流):多条指令对应一个数据流,主要用于容错。
  • MIMD(多指令多数据流):多核超标量处理器和分布式系统。
  • 3. AVX(高级向量扩展)

    AVX 是 CPU 指令集的扩展,主要衍化包括:

    核心特性

    • AVX:支持 256 位宽 SIMD寄存器(YMM0-YMM7 在 32 位模式,YMM0-YMM15 在 64 位模式),低 128 位与 SSE 的 XMM 寄存器复用。
    • AVX2:引入 256 位宽整数运算指令,支持 Fused Multiply-Add(FMA)操作。
    • AVX-512:通过 EVEX 编码扩展至 512 位运算,提升性能。

    性能优势

    AVX 指令集遵循 IEEE-754 规范,支持 32 位单精度浮点数和 64 位双精度浮点数。YMM 寄存器可存储 8 个单精度浮点数或 4 个双精度浮点数,内存对齐建议为 16 字节或 32 字节。

    MXCSR 寄存器用于状态报告,除非使用 LDMXCSR 或 FXRSTOR 清理,否则会保持不变。

    4. AVX2 指令集详解

    根据《Intel® Advanced Vector Extensions Programming Reference.pdf》,AVX2 指令集包含以下新增指令:

    核心指令

  • PMULUDQ:乘法指令,可同时处理多个 unsigned doubleword 整数。
  • vpunpckldq:解密数据,支持低数据和高数据存取。
  • vpunpckhdq:类似于 vunpckldq,但处理高数据。
  • VPSHUFD:重组打包整数。
  • VPBLENDD:混合操作,用于数据混合。
  • VPERMD:全双精度元素置换。
  • VPSRLVD:变量位逻辑右移。
  • 这些指令延伸了 AVX 的功能,提升了计算效率。

    参考资料

  • CPU-Z 工具
  • Medium 文章
  • AVX-512
  • 转载地址:http://hqmx.baihongyu.com/

    你可能感兴趣的文章
    Python:修改 PATH 环境变量的平台无关方式
    查看>>
    Python:假与 0
    查看>>
    Python:函数使用
    查看>>
    Python:函数进阶
    查看>>
    Python:在整数的二进制表示中查找最长的二进制间隙
    查看>>
    Python:如何从二进制转换为 base 64 并返回?
    查看>>
    Python:如何以非阻塞方式读取子进程的标准输出
    查看>>
    Python:如何使用 plotly 制作阴影区域或交替背景颜色?
    查看>>
    Python:如何根据日期时间获取值的计数
    查看>>
    python:如何检测串行 COM 上的设备名称/ID
    查看>>
    Python:如何模拟 datetime.utcnow()?
    查看>>
    Python:如果DataFrames之间的其他值匹配,则对DataFrame中的值求和
    查看>>
    Python:字典思维
    查看>>
    Python:将 HEX 字符串转换为字节
    查看>>
    Python:将列表与范围列表合并
    查看>>
    Python:将列表列表初始化为一定大小,
    查看>>
    Python:带有生成器的给定集合的幂集
    查看>>
    Python:按字符的位置拆分字符串
    查看>>
    Python:替换嵌套字典中的值
    查看>>
    Python:爬取数据出现response.status_code为403解决方法
    查看>>