Pentium III处理器的单指令多数据流扩展指令(1)2010-09-27关键字 :Pentium,处理器,单指令多数据流扩展指令,SSE,指令集概要 :随着Intel Pentium III处理器的发布,给程序设计人员又带来了许多新的特性。利用这些新特性,程序员可以为用户创造出更好的产品. Pentium III和Pentium III Xeon(至强处理器)的许多新特性,可以使她能够比Pentium II和Pentium II Xeon处理器有更快的运行速度,这些新特性包括一个处理器序列号(unique processor ID)和新增SSE处理器指令集,这些新的指令集就像Pentium II在经典Pentium的基础上添加的MMX指令集.在这篇文章里,我们将向你展示Pentium III处理器和她的这些新特性,并且将着重讲述Pentium III处理器的新指令集.1.Pentium III处理器概要1999年2月,Intel发布了她的最新款处理器Pentium III处理器,和以往的新处理器推出一样,速度的提高是最主要的性能改善.Intel在发布她的新处理器时一贯遵循着摩尔定律,即每过18个月处理器的速度将提高一倍(the processor speed doubles every 18 months),但是Pentium III处理器的并没有比Pentium II的速度提高一倍,在Pentium II和Pentium II Xeon处理器运行在333MHz~400MHz时,Pentium III也只不过运行 在450MHz~550MHz而已,处理器的速度并没有多大的提高,但是性能的提升确是很明显的.从本质上说,Pentium III处理器只不过是一个运行在更高速度的Pentium II处理器,另外再增加了一些新的指令集:Streaming SIMD Extensions(单指令多数据流扩展指令集,或者称为SSE).这些新指令集的增加并不会影响原来的程序运行,因为Pentium III处理器采用的是完全兼容于原来Pentium II处理器的IA-32构架.如果Pentium III处理器的速度并没有比Pentium II有倍速的提高,那我们为什么还要去选购她呢?2.Pentium III处理器的新特性Pentium III处理器添加了两个有趣也是很有用的新特性:处理器序列号(processor serial number)和SSE指令集.由于Pentium III处理器的序列号涉及到用户隐私的争议,为了避免这种争议,在这里我们将把注意力放在Pentium III处理器的SIMD新指令集上.SSE包含一个SIMD的首字母,SIMD是Single Instruction Multiple Data(单指令多数据)的首字母的缩写.通常,处理器在一个指令周期只能处理一个数据,这叫做Single Instruction Single Data(单指令单数据),缩写为SIDI.和SIDI不同的是,如果处理器具有SIMD能力,那么她就可以在一个CPU指令周期同时处理多个数据.3.MMX vs SSEMMX和SSE都是在原来的处理器指令集的基础上添加的扩展指令集,都是SIMD(单指令多数据)指令,不同的是他们处理的数据类型不同. MMX只能在整数上支持SIMD,而SSE指令增加了单精度浮点数的SIMD支持.MMX可以进行同时对2个32位的整数操作,而SSE可以同时对4个32位的浮点数操作.MMX和SSE的一个主要的区别是MMX并没有定义新的寄存器,而SSE定义了8个全新的128位寄存器,每个寄存器可以同时存放4个单精度浮点数(每个32位长),他们在寄存器中排列顺序见下图1.

图一:新数据类型排列这里有一个问题,既然MMX没有定义新的寄存器,那么她又有什么寄存器可操作呢?事实上,MMX是和原来的浮点寄存器共享的.一个浮点寄存器是80位长的,她的低端64位被用做MMX的寄存器.这样,一个应用程序就不能在执行MMX指令的同时进行浮点操作了.同时,处理器还要花掉大量的时钟周期去维护寄存器状态从MMX操作和浮点操作之间的切换.SSE指令集就没有这些限制了.由于她定义了全新的寄存器,应用程序可以在进行整数SIMD操作(MMX)的同时进行浮点数的SIMD操作(SSE),同样,SSE还可以在执行浮点数的非SIMD操作的同时进行SIMD操作.MMX和SSE的寄存器排列见下图2.图2(a)是MMX和浮点数共享一个寄存器的情况,图2(b)是SSE的独立寄存器排列.

图二:MMX和SSE的寄存器MMX和SSE寄存器有一个共同点,那就是都有8个寄存器.MMX的寄存器被命名为mm0~mm7,SSE的寄存器名字是xmm0~xmm7.