E周刊第29期:SSE指令集 发展历程回顾

      所谓SSE指令集也叫单指令多数据流扩展,最早是由英特尔提出,是为了加强浮点运算、图像处理等多媒体应用的能力,能更好的对整个系统进行控制,提高处理性能的指令的集合。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。

      第一代的SSE指令集出现在Pentium III处理器中包括了70条指令,其中包含提高3D图形运算效率的50条SIMD(单指令多数据技术)浮点运算指令、12条MMX 整数运算增强指令、8条优化内存中连续数据块传输指令。理论上这些指令对目前流行的图像处理、浮点运算、3D运算、视频处理、音频处理等诸多多媒体应用起到全面强化的作用。


      SSE2指令集是Intel公司在SSE指令集的基础上发展起来的。相比于SSE,SSE2使用了144个新增指令,扩展了MMX技术和SSE技术,这些指令提高了广大应用程序的运行性能。随MMX技术引进的SIMD整数指令从64位扩展到了128 位,使SIMD整数类型操作的有效执行率成倍提高。双倍精度浮点SIMD指令允许以 SIMD格式同时执行两个浮点操作,提供双倍精度操作支持有助于加速财务、工程和科学应用。除SSE2指令之外,最初的SSE指令也得到增强,通过支持多种数据类型的算术运算,支持灵活并且动态范围更广的计算功能。SSE2指令可让软件开发员极其灵活的实施算法,并在运行诸如MPEG-2、MP3、3D图形等之类的软件时增强性能。


      SSE3指令是目前规模最小的指令集,它只有13条指令。它共划分为五个应运层,分别为数据传输命令、数据处理命令、特殊处理命令、优化命令、超线程性能增强五个部分,其中超线程性能增强是一种全新的指令集,它可以提升处理器的超线程的处理能力,大大简化了超线程的数据处理过程,使处理器能够更加快速的进行并行数据处理。


      SSE4指令集是Conroe架构所引入的新指令集。这项原本计划应用于NetBurst微架构Tejas核心处理器之上的全新技术也随着它的夭折最终没能实现,但是SSE4指令集出现在了Conroe上。SSE4指令集共包括16条指令,不过英特尔没有公布SSE4指令集的具体资料。这相当令人感到纳闷。也许英特尔是基于特殊的考虑,仅让少数合作软件厂商取得数据,只是这种作法实在很没有说服力就是了,天底下没有哪家处理器厂商,希望自己新增的指令越少人用越好。


      从SSE1到今年4月的SSE4都是由英特尔所提出,而AMD除了自己的指令集3DNow!以外,在其处理器中支持英特尔指令集的扩展一般都是跟在英特尔后面的。


      而近几天,AMD率先公布了最新的SSE5指令集规格,而且宣布新技术将会在2009年以后的AMD新一代Bulldozer核心处理器上出现。AMD虽然有对应功能的指令集但名称均有所不同,而这次突然命名为SSE5,无疑是断了Intel的“后路”,双方是否会因此惹出争议甚至对簿公堂还很难说。


     SSE5是128-bit指令集,一共有170条指令,其中基础指令64条,新增的最重要的有两条:


      首先是“三操作数指令”(3-Operand Instructions)。x86指令以往只能处理双操作数,而SSE5会提高到三操作数,达到RISC架构的水平,从而把多个简单的指令集整合到更高效的一个单独指令中,提高执行效率。


      然后是“熔合乘法累积”(Fused Multiply Accumulate,FMACxx)。该技术可以把乘法和其他算法结合起来,保证之用一条指令就能完成迭代运算,从而简化代码、提高效率,适用于真实图形着色、快速照相渲染、空间化音频、复向量(矢量)数学等场合。


      除此之外还有整数乘法累积指令(IMAC,IMADC)、置换与条件移动指令、向量比较与测试指令、精度控制舍入与变换指令等等。


      AMD表示,SSE5指令集的使命之一是增强高性能计算应用,并充分发挥多核心、多媒体的并行优势。SSE5将把以往只存在于高性能特殊架构里的功能引入到x86平台中,以此最大化每条指令的输出能力,并增强代码库。


      在AMD巴塞罗那下周就要面世的前提下,竞争已经日趋激烈。不只在核心的数量和架构上,而是在包括指令集在内的任何技术层面,都已经开始对位的争夺,竞争已经开始细分化,任何一点点的疏忽和劣势都有可能左右市场的走向,让自己陷入不利的境地。