博客
关于我
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/

    你可能感兴趣的文章
    Oracle中的rownum 和rowid的用法和区别
    查看>>
    oracle中的大小写、字符、dual、数字、处理、日期、函数、显/隐式、时间、条件表达式case、decode、to_date、to_char、sysdate
    查看>>
    oracle中表和视图的区别,oracle中常用表和视图
    查看>>
    oracle之表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)
    查看>>
    Oracle从11g导出后导入10g
    查看>>
    oracle从备份归档日志的方法集中回收
    查看>>
    oracle优化器analyzed,Oracle 学习之 性能优化(十三) 索引
    查看>>
    Oracle修改字段类型
    查看>>
    Oracle修改表或者字段的注释
    查看>>
    oracle典型安装失败,安装oracle 10失败
    查看>>
    Oracle内存结构详解(四)--Oracle SGA其他组成部分
    查看>>
    Oracle函数与存储过程和程序包
    查看>>
    Oracle分析函数之LEAD和LAG
    查看>>
    Oracle分组取前n条记录
    查看>>
    Oracle分页sql
    查看>>
    Oracle创建database link(dblink)和同义词(synonym)
    查看>>
    oracle创建数据库的步骤
    查看>>
    Oracle创建用户、角色、授权、建表
    查看>>
    Oracle创建用户与授予表空间与权限
    查看>>
    oracle创建表(并且实现ID自增)
    查看>>