Intel首次在
45nm Penryn处理器中新增了
英特尔SSE4指令集,这是自最初
SSE指令集架构ISA推出以来添加的最大
指令集,其中包含了47条多媒体处理指令,进一步扩展了英特尔64指令集架构。之前45nm Penryn处理器的指令集版本为
SSE4.1,此次
Nehalem处理器在
SSE4.1指令集的基础上又加入了几条新的指令,称之为SSE4.2。
简介
SSE4.2
指令集新增的部分主要包括STTNI(STring & Text New Instructions)和ATA(Application Targeted Accelerators)两个部分。以往每一次的
SSE指令集更新都主要体现于
多媒体指令集方面,不过此次的SSE4.2指令集却是加速对XML文本的字符串操作、存储校验等。
更具体地说,SSE4.2 加入七个新指令:
CRC32、PCMPESTRI、PCMPESTRM、PCMPISTRI、PCMPISTRM、PCMPGTQ 与 POPCNT。
英特尔表示,采用SSE 4.2
指令集后,XML的解析速度最高是原来的3.8倍,而
指令周期节省可以达到2.7倍。此外,在ATA领域,SSE 4.2指令集对于大规模
数据集中处理和提高
通信效率都会发挥应有的作用,这些对于企业IT应用显然是有帮助的。当然,SSE 4.2指令集只有在软件对其支持后才会产生效果,相信Nehalem-EP上市,相关的优化与升级届时就会出现。
指令集介绍
SSE4的英文全称是:Streaming SIMD Extensions 4,是
英特尔自从
SSE2之后对ISA
扩展指令集最大的一次的升级扩展。新
指令集增强了从多媒体应用到
高性能计算应用领域的性能,同时还利用一些专用电路实现对于特定应用加速。
从指令数目上看,SSE4指令增加了的指令改进了整数和
浮点操作,支持
DWORD和
QWORD操作,新的
单精度FP操作、快速
寄存器操作、面向
性能优化的内存操作等等,包括了图形、图像、
数据装载各方面的革新,因此称其为SSE2以来最大的指令集变动也是不为过的。利用支持
SSE4指令集的
编译器编译之后,包括图形/图像处理、
视频处理、2D/3D创作、多媒体、游戏、内存敏感负载、
高性能计算等应用都会受益。
SSE4指令集分为两个版本:4.1和4.2,SSE4.1版本随着45nm Penryn发布,而SSE4.2版本会随着下一代架构
Nehalem发布,4.1包括47条指令,4.2包括7条指令。
技术领先 强大的SSE4指令集解析
据
Intel指出,在应用
SSE4指令集后,
Penryn增加了2个不同的32Bit向量整数乘法运算支持,引入了8位无符号 (
Unsigned)最小值及最大值运算,以及16Bit 及32Bit 有符号 (Signed) 及无符号运算,并有效地改善
编译器效率及提高向量化整数及
单精度代码的
运算能力。同时,SSE4 改良插入、提取、寻找、离散、跨步负载及存储等动作,令向量运算进一步专门化。
不仅如此,Intel SSE4指令集还进一步增强讯编码效果,例如可同时处理8个4-
byte宽度的SAD(Sums of Absolute Differences)运算,常用于新一代高清影像编码如VC.1及
H.264等规格中,令
视频编码速度进一步提升。因此在播放
高清视频的时候,即使在
软解的情况下也同样游刃有余。
有效地改善编译器效率及提高向量化整数及单精度代码的运算能力
SSE4 构建于
英特尔64
指令集架构 (Intel 64 Instruction Set Architecture) (ISA),该架构是开发 32 位和 64 位应用最为广泛应用的电脑架构。Intel SSE4 包含 54 条指令,主要分为两类:矢量化
编译器和媒体加速器,以及高效加速字符串和文本处理。矢量化编译器和媒体加速器可提供高性能的编译器函数库,如封包(同时使用多个
操作数)整数运算和
浮点运算,可生成性能优化型代码。此外,它还包括高度优化的媒体相关运算,如绝对差值求和、浮点
点积和内存负载等。矢量化编译器和媒体加速器指令可改进音频、视频和
图像编辑应用、
视频编码器、3D 应用和游戏的性能。高效加速字符串和文本处理包含多个压缩字符串比较指令,允许同时运行多项比较和搜索操作。由此受益的应用包括数据库和数据采掘应用,以及那些利用病毒扫描和
编译器等分析、搜索和
模式匹配算法的应用。
SSE4加入了6条浮点型点积运算指令,支持
单精度、
双精度浮点运算及浮点产生操作,且
IEEE 754指令 (Nearest, -Inf, +Inf, and Truncate) 可立即转换其路径模式,大大减少延误,这些改变会对游戏及 3D 内容制作应用有重要意义。此外,SSE4加入串流式负载指令,可提高以图形帧
缓冲区的读取数据
频宽,理论上可获取完整的快取缓存行,即每次读取64Bit而非8Bit,并可保持在临时缓冲区内,让指令最多可带来8倍的读取频宽效能提升,对于视讯处理、成像以及
图形处理器与
中央处理器之间的
共享数据应用,有着明显的效能提升。
统一CPU和GPU,Nehalem来临
Nehalem微架构最高支持4颗处理器的Quick Path多路服务器环境,单一芯片最高可拥有2、4及8颗核心,支持经改良的Hyper-Theading技术,令单颗处理器最高可支持16 Threads,而且Nehalem架构中的Havendale亦会内建绘图核心。新增SSE4.2
指令集及ATA指令集令
系统性能全面提升,令人期待。此外,新一代Nehalem会放弃FSB设计,采用全新的Quick Path Interconnect架构,已得知服务器版本的Nehalem处理器最高可拥有4组Quick Path Interconnect,并至少可组成四颗处理器的数据可直接互换的4Ways服务器架构。
英特尔每次在缓存和指令集上的小小改进都会对处理器的性能产生质的变化。最新的45nm Nehalem产品中会出现第二代
SSE4技术,这比45nm处理器更为强大,可以看成是一种流
SIMD扩展:SSE 4.2。据了解,Nehalem包含一个全新的ATA中心和文字与字符串处理引擎,这意味着该处理器对于文本的处理性能有很大提升。此外,基于
XML文件作为
病毒定义的
反病毒软件也可能因此而受益。
对于Nehalem的SSE4.2,
Intel的Gelsinger介绍说,这7条
指令集的用途各有不同,比如有面向CRC-32和POP Counts等特定应用的,有特别针对XML等的流式指令。Gelsinger称,新指令集可以把256条指令合并在一起执行,从而让XML类工作的性能提高3倍。
预计在2009年的第二季末,
Intel会推出内建绘图核心的处理器,
核心代号为Havendale,这是一颗针对主流级市场的
双核心处理器,采用45nm制程,支持SMT(Simultaneous Multi-Threading),L2 Cache容量最高为4M。虽然同样内建
内存控制器及
PCI-Express绘图接口,但它却不是原生设计,Havandale把绘图核心、PCI-Express绘图接口及内存控制器制作成一颗芯片,与
处理器核心采用MCP(Multi-
Chip Package)封装在一起,两者采用Quick Path Interconnect连接。相信大家更关心的是Intel能否真的把CPU和
GPU真正的同一!
新老对决 SSE4指令集绝对值得期待
Intel最新45nm处理器还加入了0.5倍频调节,增加了
SSE4指令集,Wolfdale增加了2个不同的32Bit向量整数乘法运算支持,引入了8 位无符号 (
Unsigned)最小值及最大值运算,以及16Bit 及32Bit 有符号 (Signed) 及无符号运算,并有效地改善编译器效率及提高向量化整数及
单精度代码的运算能力。同时,SSE4 改良插入、提取、寻找、离散、跨步负载及存储等动作,令向量运算进一步专门化。
此外,
SSE4加入串流式负载指令,可提高以图形帧缓冲区的读取数据频宽,理论上可获取完整的快取缓存行,即每次读取64Bit而非8Bit,并可保持在临时缓冲区内,让指令最多可带来8倍的读取频宽效能提升,对于视讯处理、成像以及
图形处理器与
中央处理器之间的共享数据应用,有着明显的效能提升。
在SSE4指令集中,共引入了47条新的多媒体运算指令。其中一条“streaming load instruction”流加载指令引起了广泛的注意。该指令为16bit同步加载指令,但加载结果会存储在高优先级的临时流缓冲中,绕过普通的CPU Cache。这一指令有利于GPU从CPU中高速共享数据,加速图像处理。
从Intel 45nm产品的性能以及规格来看都要比上一代的65nm产品有了长足的进步,同时在超频潜力上又有了一个质的飞跃。这让更多的I饭们看到冲击极限的希望。而且由于45nm制程在成本上会更低,因此在中低端市场的竞争中Intel 45nm制程的新处理器更具有
冲击力。
全新指令集
SSE是
英特尔提出的即
MMX之后新一代
CPU指令集,最早应用在PIII系列CPU上。已经得到了Intel PIII、P4、Celeon、Xeon、
AMD Athlon、
duron等系列CPU的支持。而更新的
SSE2指令集仅得到了P4系列CPU的支持,这也是为什么这篇文章是讲SSE而不是
SSE2的原因之一。另一个原因就是SSE和SSE2的
指令系统是非常相似的,SSE2比SSE多的仅是少量的额外
浮点处理功能、64位
浮点数运算支持和64位整数运算支持。
SSE为什么会比传统的浮点运算更快
因为它使用了128位的
存储单元,这对于32位的
浮点数来讲,是可以存下4个的,也就是说,SSE中的所有计算都是一次性针对4个浮点数来完成的,这种
批处理当然就会带来效率的提升。再来回顾一下SSE的全称:Stream SIMD Extentions(流
SIMD扩展)。SIMD就是single instruction multiple data,连起来就是“
数据流单指令多
数据扩展”,从名字人们就可以更好的理解SSE是如何工作的了。
提升的SSE4.2
SSE4指令集被认为是2001年以来
Intel最重要的指令集扩展,包含54条指令。 Intel在
Penryn处理器中加入了对SSE4.1的支持,共增加了47条新指令,提升了处理器在图形、3D
图像与游戏、
视频编码与影音处理等方面的性能表现。本次在
Nehalem处理器中,进一步支持了SSE4.2指令集。SSE4.2完整的实现了
SSE4指令集,相对于SSE4.1加入了7条新指令。
虽然SSE从理论上来讲要比传统的
浮点运算会快,但是他所受的限制也很多,首先,虽然他执行一次相当于四次,会比传统的浮点运算执行4次的速度要快,但是他执行一次的速度却并没有想象中的那么快,所以要体现SSE的速度,必须有Stream做前提,就是大量的
流数据,这样才能发挥
SIMD的强大作用。其次,SSE支持的
数据类型是4个32位(共计128位)
浮点数集合,就是C、
C++语言中的float[4],并且必须是以16位字节
边界对齐的(稍后会以代码来进行阐释,关于边界对齐的概念,读者可以参考论坛上的其它文章,都会有很详细的解答,这里就恕不赘述了)。因此这也给输入和输出带来了不少的麻烦,实际上主要影响SSE发挥性能的就是不停的对数据进行复制以适用应它的
数据格式。
SSE4.2指令集 大幅优化文本处理
英特尔
SSE4指令集最早出现于45纳米处理器上,首颗发布的Core 2 Extreme QX9650配备了
SSE4指令集的第一版,即SSE4.1,凭借着这一指令集,45纳米
酷睿2处理器的多媒体性能相对于65
纳米产品提升了70%,而在Nehalem Core i7上,预计会迎来SSE4
指令集的第二版,即SSE4.2。
新一代 Nehalem
微架构基于 Core 微架构的 SSE 4.1
指令集上,新增了 7 组 SSE 4.2 指令,有别于 SSE 4.1 主要针对加快处理器的多媒体处理,例如
图形显示、
视频编码及处理、 3D
图像处理、
计算机游戏等, SSE 4.2 主要针对字符串和文本处理指令应用。SSE 4.2 指令集可再细分为 STTNI 及 ATA 2 个组别; STTNI 主要是加速字符串及文本处理,例如 XML 应用进行高速查找及对比,相较以软件运算, SSE 4.2 提供约 3.8 倍的速度,提升及节省 2.7 倍
指令周期,对服务器应用有显著效能改善。
而 ATA 则是用作数据库中加速搜索和识别,其中 POPCNT 指令对于提高快速匹配和
数据挖掘上有很大帮助,能应用于 DNA 基因配对及语音辨识等,此外, ATA 亦提供硬件的 CRC32
硬件加速可用于通讯应用上,支持 32Bit 及 64Bit ,相较软件运算高出至少 6x 以上。
Intel C++ Compiler 10.x 及 Microsoft Visual Studio 2008 VC++ 均支持 SSE 4.2
指令集, Intel 预期在明年上半年,主要的
服务器软件会加入 SSE 4.2 支持。
Intel从
LGA 1366平台的Core i7-900系列处理器开始支持SSE4.2(Streaming SIMD Extensions 4.2)指令集,据
英特尔透露,SSE4.2指令集中新增的7条指令用途各不相同,有面向CRC-32和POP Counts的,也有特别针对XML的流式指令。SSE4.2指令集可以将256条指令合并在一起执行,让类似XML的工作性能得到数倍的性能提升。
实际上我们所说的
SSE4指令集共包括54条指令,在之前的Core 2处理器上已经实现了47条,被称为SSE4.1,而最后7条指令得以在Nelalem上实现,被称为SSE4.2。
Intel新发布的Lynnfield核心i7、
i5处理器依然保留了完整的SSE4.2
指令集,使CPU在多媒体应用上和XML文本的
字符串操作、存储校验
CRC32等方面有明显性能提升,并没有因为
市场定位而对指令集进行缩减。
优化文本处理
在45纳米Core架构时代,
Intel首次为旗下产品加入了
SSE4.1指令集,他的出现令
45nm工艺产品相比65nm产品的多媒体性能提升了将近70%。在
Nehalem架构产品上,Intel再一次添加了新的指令集SSE4.2,换来的性能提升自然不言而喻。
SSE 4.1版本的指令集增加了47条指令,主要针对向量绘图运算、
3D游戏加速、
视频编码加速及
协同处理的加速。英特尔方面指出,在应用
SSE4指令集后,45纳米
Penryn核心额外提供了2个不同的32位向量整数乘法运算支持,并且在此基础上还引入了8位无符号
最小值和
最大值以及16位、32位有符号和无符号的运算,能够有效地改善
编译器编译效率,同时提高
向量化整数和
单精度运算地能力。另外,SSE4.1还改良了插入、提取、寻找、离散、跨步负载及存储等动作,保证了向量运算地专一化。
经过我们的测试,
SSE4.1指令集的处理器比不具备此指令集的同档次处理器的视频编码效能提高了70%,在游戏中也有很明显的性能提升。而SSE4.2
指令集则将重点放在了文本处理上。据英特尔透露,
Nehalem的SSE4.2指令集中的7条指令用途各不相同,有面向CRC-32和POP Counts的,也有特别针对XML的流式指令。
帕特·基辛格表示,SSE4.2指令集可以将256条指令和并在一起执行让类似XML的工作性能提升3倍!
总结:即将发布的
酷睿i5处理器可以看做是Nehalem架构成熟后的产品,因为从这一代开始,
北桥的作用真正的被CPU完全取代,并且延续着每瓦性能这一理念。虽然酷睿i5遗憾的取消了
超线程技术,但是对于普通消费者来讲,超线程技术的缺失并不会给我们带来某些不变,反而到为消费者带来了更低的价格。综上所述,酷睿i5处理器可以看做是
Nehalem架构的普及先锋。
缓存架构新增
Nehalem处理器的缓存架构相对于之前的
奔腾4、
酷睿2产品,也有了较大的变化。随着45纳米制程的引入,
酷睿2处理器的最大
L2缓存已经达到12MB,类似于FSB,继续无休止地提升L2缓存并不一定能带来明显的效能改善,因此在Core i7(
酷睿i7)上,我们看到了一个全新的缓存架构。
从Core i7的缓存架构
示意图可以看出,它选用了共享L3缓存的方式来暂存数据。
桌面级四核心处理器的产品动用了8MB L3缓存。4个核心除了共享8MB L3缓存外,每颗核心内部还单独具备256KB的L2缓存,另外还为每颗核心配备了与Core架构极为类似的64KB L1缓存。
这里必须说一下缓存延迟问题。45纳米
酷睿2处理器的L2缓存延迟周期为15,而
Intel工程师表示
Nehalem架构的L3缓存可以达到30-40周期,不过每颗核心独立拥有的通用
L2缓存周期只有12,因此L3带来的高延迟问题一定程度上由L2进行了弥补。另一方面,4颗核心共享L3缓存,在数据命中失败后可直接重新从内存寻找数据,而不是在缓存中重新进行侦测。Intel称Nehalem上的L3缓存为Smart Cache,想必也是因为这些原因。
45纳米加入了
SSE4.1指令集,令处理器的多媒体处理能力得到最大70%的提升。在
Nehalem架构的Core i7处理器中,SSE4.2指令集被引入,加入了STTNI(字符串文本新指令)和
ATA(面向应用的加速器)两大优化指令。
STTNI主要针对XML进行文档和数据处理进行优化,使这一方面的应用性能达到上一代产品的3.8倍。ATA则主要增加
CRC32计算
校验码,另一方面让POPCNT用来计算一个16/32/64位整数里面中多少个为1的位。
目前
Intel C++ Compiler 10.x和Microsoft Visual Studio 2008 VC++均已经实现了对于SSE4.2的支持。具备SSE4.2指令集的
Nehalem Core i7处理器在办公应用中的性能将得到大幅度提。
提升办公性能
自Intel 在
P3时代加入了
SSE(
Streaming SIMD Extensions)
指令集之后,Intel 处理器的多媒体处理能力显著提升。这次相对于上一版本的
SSE4.1,SSE4.2指令集加入了STTNI(
字符串文本新指令)和ATA(面向应用的加速器)两大优化指令。STTNI主要针对XML进行文档和数据处理进行优化,使这一方面的应用性能达到上一代产品的3.8倍。ATA则主要增加
CRC32计算校验码,另一方面让POPCNT用来计算一个16/32/64位整数里面中多少个为1的位。
目前Intel C++ Compiler 10.x和Microsoft Visual Studio 2008 VC++均已经实现了对于SSE4.2的支持。具备SSE4.2指令集的Nehalem Core i7处理器在办公应用中的性能将得到大幅度提升。