服务器 频道

IA32多媒体指令集革命 Intel SSE4前瞻

  自从Intel在P55C Pentium加入MMX(MultiMedia Extensions)指令以来,x86指令集就不断得到扩充,3D Now!之类的扩展集时有出现。这些指令集主要都是通过SIMD的方式来提升多媒体数据处理能力。

  指令数量达到57条的MMX扩展集属于侧重整数运算的扩展指令集,除了整数运算,浮点运算也是非常重要的,Intel在1999年首次在Pentium III处理器中引入了SSE(Streaming SIMD Extensions)扩展指令集来增强x86架构的浮点运算能力,SSE初代包括了70条新指令,其中包含提高3D图形运算效率的50条SIMD(单指令多数据技术)浮点运算指令、12条MMX 整数运算增强指令、8条优化内存中连续数据块传输指令。

  在SSE之后Intel很快在2000年的Willamette Pentium 4中推出了SSE2指令集,这个指令集的指令数目达到了非常之多的144条,用于提升双精度向量运算能力和128位向量整数运算能力,可见SSE指令集也并不是仅仅包括浮点运算的,SSE可以做看作是IA32架构按照形势需要而作的不断扩充。

  在2000年推出SSE2之后,Intel很久没有进行这方面的大扩充了,在2004年增加的SSE3只包括了13条新指令(首先在Prescott Pentium 4中出现),2006年增加的SSSE3(Supplemental Streaming SIMD Extensions 3)只包括32条新指令(首先在Core 2 Duo上出现),前者主要提升复数运算性能,后者主要改进了解码性能,或许是由于提前发布的缘故(原来计划包括在SSE4中),SSSE3并没有采用SSE4这样的命名。

  从指令数目上看,SSE4的47条也是2000年来最多的变化,同时,SSE4中增加了的指令改进了整数和浮点操作,支持DWORD和QWORD操作,新的单精度FP操作、快速寄存器操作、面向性能优化的内存操作等等,包括了图形、图像、数据装载各方面的革新,因此称其为SSE2以来最大的指令集变动也是不为过的。利用支持SSE4指令集的编译器编译之后,包括图形/图像处理、视频处理、2D/3D创作、多媒体、游戏、内存敏感负载、高性能计算等应用都会受益。

  SSE4指令集的具体指令如下图所示,按照目前的资料,SSE4指令集还将分为两个版本:4.1和4.2,SSE4.1版本将随着45nm Penryn发布,而SSE4.2版本将会随着Penryn的下一代Nehalem发布,4.1将包括47条指令,4.2将包括7条指令,因此下图的指令数目实际上并不是47,未来的SSE4.2指令数目也可能会有变动。

  对于Nehalem的SSE4.2,Intel的Gelsinger介绍说,这7条指令集的用途各有不同,比如有面向CRC-32和POP Counts等特定应用的,有特别针对XML等的流式指令。Gelsinger称,新指令集可以将256条指令合并在一起执行,从而让XML类工作的性能提高3倍。

0
相关文章