SSE4指令集的英文全称是:Streaming SIMD Extensions 4,是
英特尔自从SSE2之后对ISA
扩展指令集最大的一次的升级扩展。新指令集增强了从多媒体应用到高性能计算应用领域的性能,同时还利用一些专用电路实现对于特定应用加速。
简介
实际上,
SSE4指令集并不能完全说是一个独立的新技术,因为它是集成在2008年发布的
英特尔酷睿2代45纳米
处理器之中,这一代处理器集成了
SSE4.1指令集,之后的Nehalem架构及更新工艺的处理器则集成了
SSE4.2指令集,故SSE4指令集实际包括
SSE4.1和
SSE4.2指令集,该指令集可以说是处理器众多新技术之一。但之所以将其单独拿出来为大家解析,主要是考虑到随着人们生活水平的提高,大家对于
高清视频播放和解压的要求也越来越高。因此在本页中,编辑将详细为大家介绍SSE4指令集的特点,并加以相应的测试。
发展史
首先还是让我们回顾一下英特尔
处理器集成指令的历史,之后再引出SSE4指令集的诞生。自英特尔奔腾MMX
处理器开始,处理器新加入了SIMD(Single Instruction Multiple Data)
多媒体指令集。该
指令集可以把多批次的指令组编辑成为一条单一的指令,从而达到提升数据处理的能力。集成MMX指令的奔腾
处理器主要用作提升多媒体数据的处理能力,共有57条指令。
后来,英特尔于1999年发布了基于MMX指令的SSE指令集,全名Streaming SIMD Extensions。首颗支持SSE产品Pentium III
处理器,除新增70条指令之外,还进一步提升了多媒体数据的处理能力,最重要的是解决了MMX指令与浮点指令不能同时处理的问题。而随后在2001年发布的SSE2指令集,又在原来的基础上增加了144条新指令。其中除了主要负责64位双精度浮点数及整型运算和对Cache控制延迟降低两部分之外,更重要的是完全解决了SSE指令集需要占用浮点数据
暂存器问题。
时间前进至2004年,以Prescott为核心的英特尔
奔腾4处理器加入了SSE3指令集,新增指令仅13条,主要是对水平式暂存器整数的运算,可对多笔数值同时进行加法或减法运算,令处理器能大量执行DSP及3D性质的运算。此外, SSE3更针对多线程应用进行最佳化,使
处理器原有的Hyper-Theading功能获得更佳的发挥。
2005年后,作为SSE3指令集的补充版本,SSSE3出现在我们已经相对比较熟悉的
酷睿微架构处理器中,新增有16条指令,进一步增强CPU在
多媒体、图形图像和Internet等方面的处理能力。而英特尔方面本来是计划将该16条指令收录在后来的SSE4指令集中,但考虑到当时硬件升级速度的大幅提升,最终决定提早加入至
酷睿微架构产品中。故早期的SSE4容易与SSSE3混淆,包括老一代CPU-Z均将SSSE3直接认定为SSE4,但实际上真正的新SSE4指令集出现在2008年发布的新一代45nmCore 2处理器上,即第一版SSE4.1。
产生背景
接下来就是我们本页的主角SSE4指令集了。正如之前业界所盛传的那样,SSE4指令集被视为自2001年以来最重要的媒体
指令集架构改进。除了将延续多年的32位架构升级至64位之外,还加入了图形、
视频编码、处理、三维成像及
游戏应用等众多指令,使得
处理器在音频、
图像、数据压缩算法等多方面性能大幅度提升。
版本
不过与以往不同,英特尔将SSE4分为了4.1和4.2两个版本,因此45纳米Penryn核心
处理器中,只集成了
SSE4.1版本。而SSE4.2指令集则在新一代Nehalem架构处理器上为我们带出。那么新的SSE 4.1
指令集拥有哪些特别之处呢?一起来看看吧!
SSE4.1版本的
指令集新增加了47条指令,主要针对向量绘图运算、3D游戏加速、视频编码加速及
协同处理的加速。英特尔方面指出,在应用SSE4指令集后,45纳米Penryn核心额外提供了2个不同的32位向量整数乘法运算支持,并且在此基础上还引入了8位无符号最小值和最大值以及16位、32位有符号和无符号的运算,能够有效地改善
编译器编译效率,同时提高向量化整数和单精度运算地能力。另外,
SSE4.1还改良了插入、提取、寻找、离散、跨步负载及存储等动作,保证了向量运算地专一化。
SSE4.1还加入了6条
浮点型运算指令,支援单、双精度地
浮点运算及浮点产生操作。其中
IEEE 754指令可实现立即转换运算路径模式,大大减少延迟,保证数据运算通道的畅通。而这些改变,对于进行3D游戏和相关的图形制作是具有相当深远的意义。除此之外,
SSE4.1指令集还加入了串流式负载指令,可提高图形帧缓冲区的读取数据频宽,理论上可获取完整的
缓存行,即单次性读取64位而非原来的8位 ,并可保持在临时缓冲区内让指令最多带来8倍的读取频宽效能提升。对于
图形处理器与
中央处理器之间的数据共享起到重要作用。
SSE4.2则是在新一代Nehalem架构基于Core微架构的
SSE4.1指令集上,新增的7组指令,有别于SSE4.1主要针对加快处理器的多媒体处理,例如图形显示、视频编码及处理、3D图像处理、计算机游戏等,SSE4.2主要针对字符串和文本处理指令应用。SSE4.2
指令集可再细分为STTNI及ATA2个组别;STTNI主要是加速字符串及文本处理,例如XML应用进行高速查找及对比,相较以
软件运算,SSE4.2提供约3.8倍的速度,提升及节省2.7倍
指令周期,对服务器应用有显著效能改善。
完整的SSE4指令集已同时被2011年底AMD新推出的推土机架构处理器兼容支持。
软件特点
SSE4的两个子集(SSE4.1和SSE4.2)共包含54条指令,主要分为两类:矢量化编译器和媒体加速器,以及高效加速字符串和文本处理。
矢量化编译器
矢量化编译器和媒体加速器可提供高性能的编译器函数库,如
封包(同时使用多个
操作数)整数运算和
浮点运算,可生成
性能优化型代码。此外,它还包括高度优化的媒体相关运算,如绝对差值求和、浮点点积和内存负载等。矢量化编译器和媒体加速器指令可改进音频、视频和图像编辑应用、
视频编码器、3D应用和
游戏的性能。
媒体加速器
高效加速字符串和文本处理包含多个压缩字符串比较指令,允许同时运行多项比较和搜索操作。由此受益的应用包括数据库和数据采掘应用,以及那些利用病毒扫描和编译器等分析、搜索和模式匹配算法的应用。