当前位置: > 热文

再见SSE5 AMD宣布支持Intel AVX指令集

时间:2022-04-18 21:03:58 热文 我要投稿

AMD高级处理器架构师Dave Christie今天在AMD开发者博客上宣布,AMD公司本周已经决定,将支持Intel提出的AVX(高级矢量扩展)指令集,同时采用AVX架构重新改写AMD的SSE5指令集,重定义为XOP(eXtended Operations指令扩展),CVT16(半精度浮点转换)以及FMA4(4操作数乘加)。

让我们先来回顾一下此事的来龙去脉。2007年8月,AMD抢先宣布了SSE5指令集(之前从SSE到SSE4均为Intel制定),当时表示该指令集将于2009年推出的Bulldozer处理器中采用。但Intel随即表示,不会支持SSE5。转而在2008年3月,Intel宣布了Sandy Bridge微架构(Intel Tick-Tock策略:45nm Nehalem - 32nm Westmere - 32nm Sandy Bridge),其中将引入全新的AVX指令集。4月份,Intel公布了AVX指令集规范,随后开始不断进行更新。而到了08年11月,AMD的最新路线图显示,Bulldozer已经推迟到了2011年推出。

根据Dave Christie的说法,AMD在2007年宣布的SSE5指令集主要包括以下几项革新:3操作数指令甚至4操作数指令,置换与条件移动指令,乘加指令以及其他一系列解决现有SSE指令集缺陷的新指令。

而Intel在2008年4月公布的AVX指令集中,同样包含了SSE5指令集的多项新特性,包括3操作数指令/4操作数指令支持,乘加指令以及部分置换指令等,但实现形式与SSE5不同。并且,AVX指令集还加入了一些SSE5中没有的新特性:SIMD浮点指令长度加倍,为旧版SSE指令增加3操作数指令支持,为未来的指令扩展预留大量OpCode空间等。

由于SSE5和AVX指令集功能类似,并且AVX包含更多的优秀特性,因此AMD决定支持AVX指令集,避免让软件开发者因为要面对两套不同指令集而徒增开发难度。

不过,由于AVX指令集的制定权在Intel手中,未来还可能进行修改。AMD只能保证,其首款支持AVX指令集产品支持目前的最新版本:2009年1月发布的AVX第五版规范。并且,FMA乘加指令只支持到2008年8月的AVX第三版规范。

再来看FMA的问题。AMD此前在SSE5中就对FMA乘加指令进行了深入的开发,而Intel在2008年12月对AVX中的该指令定义进行了大幅度修改,仅支持3操作数乘加。AMD对此并不赞同,因此将保留旧版定义,并将其重新命名为FMA4(4操作数乘加)。在应用初期,AMD处理器中支持的FMA4将和Intel处理器FMA指令拥有不同的CPUID标签。而未来AMD也准备支持Intel的新版FMA定义,让其和FMA4并存。

和FMA的分歧类似,SSE5中还有一些和AVX并不包含的指令功能。AMD当然不舍得全盘放弃SSE5,因此将其中的特色功能采用AVX的指令架构重新定义,命名为XOP指令集扩展。

XOP保留的原SSE5指令包括:

Horizontal integer add/subtract水平整数加减

Integer multiply/accumulate整数乘加

Shift/rotate with per-element counts矢量元素转移/旋转

Integer compare整数比较

Byte permute置换

Bit-wise conditional move条件转移

Fraction extract片段提取

Half-precision convert半精度转换

简单来说,未来的AMD处理器将支持:

1. Intel的AVX指令集(FMA指令为低版本)。

2. XOP指令集扩展:即SSE5指令集中不被AVX包含的部分,采用AVX架构重写。

3. FMA4指令,未来可能兼容Intel的新版FMA指令。

AMD表示,支持这些新版指令的AMD64 SimNow!模拟器很快就会推出。实际产品方面,虽然在此文中没有提及,但预计现计划2011年的Bulldozer很可能是首款支持这批新指令集的AMD处理器。而Intel支持AVX指令集的32nm Sandy Bridge处理器将于2010年面世。

AVX后来者居上

最新推荐