AVX2指令集:AVX指令集的加强版

AVX2指令集:AVX指令集的加强版

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

AVX2指令集:AVX指令集的加强版

在2021年发布的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中,Intel定义了两个128位通道,分别是高通道和低通道,不同通道不能互取数据;到AVX2中,跨通道数据排列操作则实现了高低通道数据互通,效率更高。

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

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

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

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

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

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

(0)
上一篇 2021年8月31日 下午10:58
下一篇 2021年8月31日 下午11:08

猜你喜欢

电话

联系我们

1388-0022-916

在线咨询:点击这里给我发消息

邮件:1395700887@qq.com

工作时间:周一至周日,9:30-18:30,节假日无休

微信
微信
分享本页
返回顶部