科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航



ZDNet>服务器频道>ZD评测>AMD放弃开发SSE5 转而支持Intel AVX指令集

AMD放弃开发SSE5 转而支持Intel AVX指令集

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

AMD将放弃开发SSE5指令集,转而通过接口方式支持Intel的AVX指令集,现CPU内核的向量运算单元的相互支持,到2011年,英特尔将推出AVX,AMD届时也将支持。

来源:ZDNet编译 2009年05月19日

关键字:AVX SSE5 AMD

AMD将放弃开发SSE5指令集,转而通过接口方式支持Intel的AVX指令集,现CPU内核的向量运算单元的相互支持,到2011年,英特尔将推出AVX,AMD届时也将支持。

有人预测Intel和AMD将回避扩展指令的分割。同时,预计指令集的变更将对实行那个命令的CPU硬件设计带来巨大的影响。AMD在博客中透露将在2011年实现CPU AVX命令计划。2011年的CPU架构“Bulldozer”原先计划将支持SSE5。

到现在为止,AMD和Intel都把SIMD作为命令扩展的核心,并提倡各自不同的命令。2007年,AMD透露了包含积和演算的SSE5,去年春天Intel也发表了AVX和积和演算的FMA。两家厂商都完善了通用CPU内核中的矢量运算单元,不过指令集的实现与这个实现方法有着很大的不同。Intel注重扩大SIMD演算的数据长度,AMD注重增加数据操作和数据类型。当然,两者之间完全没有兼容性。

此次AMD更加接近Intel,同时也保持了自己的独特性。在明确了支持Intel方法的同时实现了SSE5指令集的扩展。

具体地说,在实现AVX命令的同时还增加了AMD本身的扩展指令。XOP (eXtended Operations)和CVT16是FMA4的命令群。

下图展示了这一概念。如图所示,AMD用绿色部分表示,Intel用青色部分表示,详细说明了两家公司的共通部分和不同部分。AMD的新策略弥补了Intel的方法,左边更清楚地说明了实现方法。如果从AMD看,功能性填补了SSE5和AVX两方面。

AMD命令扩展计划的变更

●积和演算的4种操作类型

此次变更使得SIMD演算的矢量长度从SSE5的128位增长到AVX的256位,同时也能实现8个并行的32位单精度浮点运算。SIMD存储器也从128位增加到256位。

对于那些不符合AVX命令的部分,将作为AMD单独扩展指令的XOP和CVT16,形成像下面一样的指令集。

·水平整数加减128位
·整数乘加128位
·矢量元素转移/旋转128位
·整数比较128位
·置换128位
·条件转移128位
·片段提取128位
·半精度转换128位

积和演算定义了支持4操作数的积和演算FMA4。Intel的FMA最初是支持4操作数,不过现在变成了3操作数格式。Intel FMA格式的功能性导致AMD研发出最新的FMA4格式。

变成3个源操作数是有必要的。譬如,1个存储器加上2个存储器的值得出结果。如果保存这个结果的话,需要第4个的操作数,不过,不能改变3个操作数的格式。因此必须最先计算出源操作数的一个结果。

为了能写入第4个操作数的结果,不能破坏源操作数的数据。而且对于3操作数的格式,必定会破坏了操作数的1个数据,这就是破坏性格式。因此正如上面所说,我们需要3个操作数格式,把存储器的值迁移出来。

AMD对FMA4抱有很大的信心。而且,在Intel的CPU路线图中,FMA命令比AVX命令推迟支持。AMD将可能在FMA命令支持方面走在了前端,率先支持FMA4。

有趣的是,最初这个关系与现在是截然相反的。当初,AMD的SSE5是3操作数,Intel的FMA是4操作数。Intel改变了像Larrabee New Instruction这样架构的3操作数格式,同时AMD也将指令编码改成了4操作数。

Intel指令集架构的进化(点击放大)

●将给AMD开发下一代Bulldozer带来很大影响

AVX的支持将对开发下一代CPU Bulldozer架构带来影响。AMD有关人员暗示说,由于受到AVX指令集发布的影响,AMD在2008年春天考虑将Bulldozer计划从2010年推迟到2011年。AMD谨慎地研究了如何开发始新矢量运算单元的前端指令集。但是AMD在最近的用户会议仍然使用了SSE5的名称。

同时AMD有关人员还表示将开发支持AVX 256位SIMD演算的硬件。这是可以理解的。首先,因为Bulldozer的设计已经相当尖端,再设计自己的运算单元就很难了。因为如果推迟到2011年发表CPU,2010年可以完成CPU硅样品的制造,从2008年春天就开始谈论计划的变更,时间上绰绰有余。通常,完成硅芯片的开发需要4年左右的时间。

实际,AMD最初支持AVX的256位SIMD,运算单元本身也是128位。过去也有AMD和Intel一起用64位运算单元实现128位SIMD运算的例子。在性能方面没有太大优势,运算单元128位SIMD也不能变更支持。当然,如果存储器需要扩展256位的话,存储器引擎等也需要扩展。

Intel AVX概要

●Bulldozer是集群化了的微架构?

Bulldozer的集群化微架构将实现更好的灵活性。

据业内人士称,Bulldozer的CPU内核能同时运行多个线程。不过据AMD称,这与Intel的多线程技术有很大的不同。这不像Intel多线程是指同时运行2个线程,AMD的多线程技术是共享1个CPU内核资源,各线程有各自的通道。为此,彼此之间不会相互争夺资源,并行地跑线程。但是据称这就像多核技术一样地完全独立了内核而不是做并列线程,也就是说在多核中是共享的。

这就符合了AMD在美国的专利组织(United States Patent Application 20090006814,20090024836)通过的Bulldozer微建筑相符合。CPU内核被集群化,分成了2个资源,使之能够跑各自的线程。不过,这也可以通过共享资源使之成跑单一线程的架构。

对于Intel的SMT(Simultaneous Multithreading)来说,晶体管越多,多线程性能越高。一般认为严格的控制可以提高多线程和单线程的性能和效率。集群型微架构的专利发明者包括不少过去K8建筑的开发者。

预计这种微架构将被应用到矢量运算单元中。预计256位SIMD指令推出之后就可以运行1个256位SIMD单元,128位SIMD指令推出之后就可以并行地运行2个128位SIMD单元。这样的话,即使不是256位也很容易使矢量运算单元全面运行。

如果能够按计划推出Bulldozer微架构的话将能够实现这种灵活性。

不过Bulldozer是下一代CPU的重要组成部分,并逐渐集成更多系统功能,其中矢量运算如何与与Off-Road引擎结合是关键点。现在x86命令中的矢量运算接口从SSE5向AVX+XOP改变,但这个关键点是不变的。

AMD明确表示将在2011年发布面向台式机的Orochi处理器和面向服务器的Interlagos处理器,不过不知道AMD会不会在发布Bulldozer的时候开始采用AVX+XOP+FMA4。Intel则将在2011年推出Sandy Bridge的时候实现AVX。

Bulldozer多线程架构的推测

AMD CPU发展路线图(点击放大)

Intel和AMD的CPU架构发展路线图(点击放大)

●命令编码方式的变更

有人认为从SSE5向AVX的变更将对硬件设计影响最大的就是命令编码方式的变更。Intel在2008年春季IDF大会上强调了命令编码的革新,并表示AVX是一个重要点。新命令VEX (Vector Extension)就采用了AVX。

x86命令的增长使得扩展指令集变得更加容易。但是Intel表示,这个方法可能会让指令集变得更加复杂,从而导致二进制的冗余和增加CPU命令解码硬件的复杂性。

而且,延长的x86命令使得发现命令的源头更加困难,这与固定命令长度的RISC(Reduced Instruction Set Computer)有很大差异。因为必须增加执行单元的命令行数,所以命令的复杂化使得在短时间发现命令段落成为x86 CPU一个很大的问题。

VEX编码方式解决了这个问题。Intel解释说,VEXprefix将2字节和3字节的信息压缩成带前缀的信息编码。有效负载的前缀中包括了256位数据类型等新信息。所以,VEX是一项命令压缩技术。同时, IntelVEX的冗余性说明今后可以实现某种编码方式的命令扩展。

AVX的架构

●用VEX编码作为单独前缀

VEX的另一个优点就是前缀部分的命令格式是固定的,据称这使得命令解码比以前更容易。要是C4h是第4字节的话,C5h能必定处于ModRM,这样简单地计算出到第3字节的命令长度。同样为了今后命令格式的扩展,就不能让解码器的命令扩展更复杂。

实际AMD的SSE5格式也是基于相同理念的。SSE5格式使用3字节编码方式,最初的2b字节成为新的前缀,同样也使得命令解码比以前更容易。

但是SSE5的3字节编码方式不同于Intel的VEX编码方式。SSE5和AVX两种方式让解码器的互换变得更加复杂了,因此,这导致本来就功率消耗很大的解码器更加复杂。因此,AMD表示如果不普及SSE5的话,仍然存在SSE5和AVX相互转换的问题。

AMD考虑到这样的结果最终决定完全放弃SSE5编码,转而支持VEX编码方式。另外,AMD单独扩展XOP指令集,不用SSE5编码方式实现XOP,而是更接近VEX方式。总之,命令解码算法的转移很大程度上是针对CPU硬件方面来说的。

为了丰富Intel VEX编码,AMD将VEX作为扩展XOP的方式。但是AMD避开了在VEX中增加XOP的方法。

取而代之的是,AMD采用了与VEX相同的编码方式,使用了另外的前缀。对于VEX来说,前缀部分使用的是C4h或者C5。而XOP前缀字节改成了8Fh。虽然前缀不同,但是有效负载部分的格式与VEX是相同的。

而且,可以根据8Fh下面字节的mmmmm值来判断是POP命令还是XOP(不到8就是POP命令)。基本上两种编码方式是大体相同的。XOP的解码命令能兼容像VEX这样的算法。前缀字节如果是C4h或者8Fh的话(且mmmmm值在8以上),可以判定之后的格式大体是相同的,且使用对应的相同算法。因此,增加新的XOP指令集,相应地可以提高简化性。

AVX和XOP的命令格式(点击放大)

综合评分:8.07 分
云能力:7.1 分
营业额:54.2亿美元[2012]
云服务:AMD虚拟化

查看更多 >>

邮件订阅

如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅ZDNet技术邮件将是您的最佳途径之一。