现在的位置: 首页 > 算法优化 > 正文
AVX2指令集:AVX指令集的加强版
2020年05月16日 算法优化 ⁄ 共 1302字 暂无评论 ⁄ 被围观 0 views+

  对于指令集和AVX指令集不了解的朋友可以先看看《AVX是什么?AVX指令集技术与应用解析》。当年AVX在SE4指令集的基础上加入了256位矢量宽度、增强的数据排序、3/4个操作数、不对齐内存存取以及VEX编码方式,最直接的收益就是浮点性能最大提升了2倍。

  AVX2的新内容

  在2011年发布的AVX2则在此基础上加入了以下新内容:

  -整数SIMD指令扩展至256位

  -2个新FMA单元及浮点FMA指令

  -离散数据加载指令“gather”、新的位移和广播指令

  理论性能:整数和浮点性能翻倍

  其中最为重要的是对256位的整数SIMD的支持,并新增60条256位浮点SIMD指令,完善从AVX开始的256位扩展,理论上可再次提升整数和浮点运算速度。

  FMA指令集是AVX的扩展指令集,即熔合乘法累积,一种三元运算指令,允许建立新的指令并有效率地执行各种复杂的运算。熔合乘法累积可结合乘法与加法运算,通过单一指令执行多次重复计算,从而简化程序,从而使系统能快速执行绘图、渲染、相片着色、立体音效,及复杂向量运算等计算量大的工作。

  FMA则关系到浮点运算能力。Haswell架构中拥有2个新的FMA单元(Intel的FMA3指令),每个FMA单元支持8个单精度或4个双精度浮点数,每周期单/双精度FLOPs都要比AVX高1倍。

  FMA拥有20种指令形式,与3种操作数次序组合,形成60种新指令,为选择内存操作数或目的操作数提供了极大的灵活性。另外融合乘加还会自动选择多项式的计算过程,降低了延迟。

  AVX两个128位通道独立,AVX2实现互通

  在AVX中,Intel定义了两个128位通道,分别是高通道和低通道,不同通道不能互取数据;到AVX2中,跨通道数据排列操作则实现了高低通道数据互通,效率更高。

  新的离散数据加载指令是一种访问非连续内存的基本操作,可以加载8个双字节或者4个四字节到一个目的寄存器中,提供了一种新的矢量化途径。

  另外AVX2还加入了一些移位指令和广播指令,其中移位指令包括任意到任意SIMD数据置换与矢量移位,使矢量化更高效、可靠。

  实际应用:加强视频处理、游戏和专业计算性能

  理论可以说得很美好,但能不能投入到日常使用,能给性能带来多大的提升,才是用户最为关注的。

  AVX2加强了音频、视频处理、游戏以及专业计算性能,音频算法优化,视频算法优化,直播算法优化

  (1)目前大部分程序(包括操作系统以及游戏)的代码靠的主要是整数运算。AVX2指令集引入了对256位整数矢量指令的支持,让Haswell处理器的整数运算比上代架构有了更大提升,软件响应速度更快,运行更流畅。另外,较多使用整数运算的图像、视频处理也将受益。

  (2)新的 FMA单元加强了处理器浮点运算性能。对普通用户来说,游戏效果、3D动画以及视频播放是接触浮点运算最多的应用领域;浮点运算还是通用计算的主力。 AVX2指令集帮助Haswell处理器提升浮点运算性能,也就是说,Haswell处理器将能比Sandy Bridge和Ivy Bridge展现出更强的3D性能和更快更准的通用计算能力。





扫描仪打印机USB驱动程序开发外包

给我留言

您必须 [ 登录 ] 才能发表留言!