详谈陌生的SIMD和熟悉的SSE指令集

互联网 | 编辑: 李凯男 2008-02-28 11:30:00原创-特约 一键看全文

随着45nm制造工艺的Intel Penryn处理器的发布(包括双核心桌面处理器Wolfdale、四核心桌面处理器Yorkfield、双核心移动处理器Penryn等家族成员),一个新的名词又频繁地出现在我们眼前,这就是SSE4(Streaming SIMD Extensions,流指令扩展指令集),或者更准确的说法SSE4.1。

演进:逐步扩充的帝国

MMX发布于1997年,一共57条指令,除了emms、movd和movq这3个指令,其他所有的MMX指令都以字母p开头。MMX指令与FPU(浮点运算器)使用同样的8个通用寄存器,准确说是借用了FPU每个寄存器的前64位,这样MMX指令一次最多可以处理8个字节或者4个字或者2个双字或者1个4字的数据,理论上可以将运算速度最高提高8倍。

MMX与FPU共用寄存器证明了Intel的短视,因为如果FPU要使用寄存器,MMX这时必须暂时退出,等FPU用完之后才能恢复原状。加上早期Intel处理器具有很强的浮点运算能力,游戏开发者都喜欢采用浮点运算,冲突的结果就是MMX的作用大打折扣,甚至有时还会造成性能的瞬间剧降。

SSE指令集在不断地扩充

Intel没有沿用MMX的称呼,1999年的Pentium Ⅲ处理器上指令集改称SSE。SSE采用了单独的寄存器,解决了与FPU冲突的问题。8个128位单独的SSE寄存器,支持同时处理 4 个单精度浮点数,能够同时处理的数据比64位的MMX翻了一倍。SSE一共有70条指令,进一步提升了CPU多媒体处理能力。也从这时开始,SSE的名称固定了下来。

伴随Pentium 4而来的SSE2(2000年),从144个指令数目来看,简直就是一场大跃进。SSE2主要加入 64 位双精度浮点数及整型运算指令,以及加入处理器对 Cache 的控制指令以减低延迟。另外也可以简单地理解,就像可调用的函数,增加的新指令数目越多,SSE2能发挥作用的场合也越多。架构上SSE2则与SSE并无大的进步,仍然是8个128位寄存器,主要的增强在于SSE2可以处理双精度浮点数。

Pentium 4是Intel的黄金时期,也是生命周期最长的CPU产品。因此直到2004年发布Prescott核心的Pentium 4处理器,SSE家族才又添新丁SSE3,而这时SSE指令集已经是名满天下。这一次SSE3只有13个指令,主要特点是加入水平式寄存器整数运算,可对多个数值同时进行加法或减法运算,令处理器能大量执行 DSP 及 3D 一类的运算。浮点数转换成整数而不需要进行运算模式切换,避免模式切换时导致其他执行线程被延误,降低系统运算效能。其中为了利用HT超线程技术,特别增加了monitor 和mwait这两个指令。

2006年Intel酷睿处理器上的SSSE3(Supplemental Streaming SIMD Extension 3)指令集,命名让很多人都感到奇怪,甚至觉得应该叫SSE4才对。后来发现这种说法也不是空穴来风,SSSE3新增的16 条指令,原本计划收录在 SSE4 指令集中,后来Intel才决定提前发布。这16条指令进一步增强 CPU了在多媒体、图形图像和 Internet 等方面的处理能力。

随着Penryn处理器到来的SSE4,被视为继 2001 年以来最重要的多媒体指令集架构的改进,除扩展 Intel 64 指令集架构外,还加入有关图形、视频编码及处理、三维成像及游戏应用等指令,令涉及音频、图像和数据压缩算法的应用程序大幅受益。不过,SSE4 将分为 4.1 版本及 4.2 版本,4.1 版本共新增 47 条指令,主要针对向量绘图运算、3D游戏加速、视频编码加速及协同处理加速动作。下一代 45 nm的Nelahem处理器将会追加 SSE 4.2 版本,合共 54 条指令。

提示:试试键盘 “← →” 可以实现快速翻页 

一键看全文

本文导航

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑