最高提升115% 英特尔45nm Penryn实测
● Penryn :新增47条SSE4指令
自Intel Pentium MMX 处理器开始,处理器新增SIMD(Single Instruction Multiple Data)多媒体指令集,可把多个批次性的指令组变成单一指令,以提升数据处理能力,后来Intel基于MMX指令发展出SSE(Streaming SIMD Extensions)指令集,直至Penryn处理器已发展至SSE4指令集。
MMX:1997年发布,全名为 MultiMedia eXtension,首颗支持MMX产品为 Pentium MMX 处理器,主要用作提升多媒体数据的处理能力,共有57条指令。
SSE:1999 年发布,全名为 Streaming SIMD Extensions,首颗支持SSE产品为 Pentium III处理器,除新增70条指令,进一步提升多媒体数据的处理能力,最重要的是解决了MMX指令与浮点指令不能同时处理的问题。
SSE2 :2001年发布,全名为Streaming SIMD Extensions 2,首颗支持SSE2产品为Pentium 4处理器,新增指令共144条,主要加入 64 位双精度浮点数及整型运算指令,以及加入处理器对Cache的控制指令以减低延迟,更重要的是完全解决SSE集指令需要占用浮点数据缓存器问题。
SSE3 :2004年发布,全名为Streaming SIMD Extensions 3,首颗支持的处理器为 Prescott核心的Pentium 4处理器,新增指令仅13条,主要特点是加入水平式缓存器整数运算,可对多笔数值同时进行加法或减法运算,令处理器能大量执行 DSP及3D性质的运算。浮点数数值转换成整数数值而不需要进行运算模式切换,避免模式切换时导致其它执行绪被延误,减损系统运算效能。
此外,SSE3 更针对多执行绪的应用程序进行执行非常好的化,使处理器原有的 Hyper-Theading 功能获得更佳的发挥。
SSE3指令集的补充版本,全名为 Supplemental Streaming SIMD Extension 3,首颗支持Intel Core微架构处理器,新增指令共16条,进一步增强 CPU在多媒体、图形图像和Internet等方面的处理能力,该16条指令原收录为 SSE4指令集中,之后决定提早加入至Core微架构产品中。
SSE4 :全名为Streaming SIMD Extension 4,被视为继2001年以来最重要的媒体指令集架构的改进,除扩展Intel 64指令集架构外,还加入有关图形、视频编码及处理、三维成像及游戏应用等指令,令涉及音频、图像和数据压缩算法的应用程序大幅受益。
据了解,SSE4将分为4.1版本及4.2版本,4.1版本将会首次出现于Penryn处理器中,共新增47条指令,主要针对向量绘图运算、3D游戏加速、视像编码加速及协同处理加速动作,包括:
Penryn SSE4 Instruction summary | ||
Instruction Category | Instructions | Benefits |
Packed DWORD Multiplies | PMULLD, PMULDQ | 提升编译器矢量运算效能 |
Floating Point Dot Product | DPPS, DPPD | 3D立体制作及游戏,支持CG及HLSL等语言 |
Multi-packed sum of absolute diffs& min pos | MPSADBW, PHMINPOSUW | 视频编码处理 |
Streaming Load | MOVNTDQA | 视频编码处理、绘图及GPU数据分享 |
Floating Point Round | ROUNDPS, ROUNDSS, ROUNDPD, ROUNDSD | 视频编码处理 、绘图、影音处理、2D/3D应用、多媒体及游戏等 |
Packed Blending | BLENDPS, BLENDPD, BLENDVPS, BLENDVPD, PBLENDVB, PBLENDDW | 编译器矢量运算及影音处理、多媒体、游戏等应用 |
Packed Integer Min and Max | PMINSB, PMAXSB, PMINUW, PMAXUW, PMINUD, PMAXUD, PMINDS, PMAXSD | |
Register Insertion/Extraction | INSERTPS, PINSRB, PINSRD, PINSRQ, EXTRACTPS, PEXTRB, PEXTRD, PEXTRW, PEXTRQ | |
Packed Format Conversion | PMOVSXBW, PMOVZXBW, PMOVSXBD, PMOVZXBD, PMOVSXBQ, PMOVZXBQ, PMOVSXWD, PMOVZXWD, PMOVSXWQ, PMOVZXWQ, PMOVSXDQ, PMOVZXDQ | |
Packed Test & Set | PTEST | |
Packed Compare for Equal | PCMPEQQ | |
Pack DWORD to Unsigned WORD | PACKUSDW |
● SSE4 :向量、浮点运算专门化 加入串流式负载指令
据Intel指出,在应用SSE4指令集后,Penryn增加了2个不同的32Bit向量整数乘法运算支持,引入了8 位无符号 (Unsigned)最小值及最大值运算,以及16Bit 及32Bit 有符号 (Signed) 及无符号运算,并有效地改善编译器效率及提高向量化整数及单精度代码的运算能力。同时,SSE4 改良插入、提取、寻找、离散、跨步负载及存储等动作,令向量运算进一步专门化。
SSE4加入了6条浮点型点积运算指令,支持单精度、双精度浮点运算及浮点产生操作,且IEEE 754指令 (Nearest, -Inf, +Inf, and Truncate) 可立即转换其路径模式,大大减少延误,这些改变将对游戏及 3D 内容制作应用有重要意义。
此外,SSE4加入串流式负载指令,可提高以图形帧缓冲区的读取数据频宽,理论上可获取完整的快取缓存行,即每次读取64Bit而非8Bit,并可保持在临时缓冲区内,让指令最多可带来8倍的读取频宽效能提升,对于视讯处理、成像以及图形处理器与中央处理器之间的共享数据应用,有着明显的效能提升。<