当前位置:在线查询网 > 在线百科全书查询 > CPU扩展指令集

CPU扩展指令集_在线百科全书查询


请输入要查询的词条内容:

CPU扩展指令集


CPU扩展指令集指的是CPU增加的多媒体或者是3D处理指令,这些扩展指令可以提高CPU处理多媒体和3D图形的能力。著名的有MMX(多媒体扩展指令)、SSE(因特网数据流单指令扩展)和3DNow!指令集。CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。



基本概况


CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分,而从具体运用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)、SEE3和AMD的3DNow!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。通常会把CPU的扩展指令集称为"CPU的指令集"。SSE3指令集也是规模最小的指令集,此前MMX包含有57条命令,SSE包含有50条命令,SSE2包含有144条命令,SSE3包含有13条命令。

精简指令集的运用


在最初发明计算机的数十年里,随着计算机功能日趋增大,性能日趋变强,内部元器件也越来越多,指令集日趋复杂,过于冗杂的指令严重的影响了计算机的工作效率。后来经过研究发现,在计算机中,80%程序只用到了20%的指令集,基于这一发现,RISC精简指令集被提了出来,这是计算机系统架构的一次深刻革命。RISC体系结构的基本思路是:抓住CISC指令系统指令种类太多、指令格式不规范、寻址方式太多的缺点,通过减少指令种类、规范指令格式和简化寻址方式,方便处理器内部的并行处理,提高VLSI器件的使用效率,从而大幅度地提高处理器的性能。

相关原理


CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分,而从具体运用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)、SEE3、SEE4和AMD的3DNow!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。我们通常会把CPU的扩展指令集称为”CPU的指令集”。SSE3指令集也是目前规模最小的指令集,此前MMX包含有57条命令,SSE包含有50条命令,SSE2包含有144条命令,SSE3包含有13条命令。目前SSE3也是最先进的指令集,英特尔Prescott处理器已经支持SSE3指令集,AMD会在未来双核心处理器当中加入对SSE3指令集的支持,全美达的处理器也将支持这一指令集。

基本分类


从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分,而从具体运用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)和AMD的3DNow!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。通常会把CPU的扩展指令集称为"CPU的指令集"。

服务器CPU按指令集分类


CISC指令集

CISC指令集,也称为复杂指令集,英文名是CISC,(Complex Instruction Set Computer的缩写)。在CISC微处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。其实它是英特尔生产的x86系列(也就是IA-32架构)CPU及其兼容CPU,如AMD、VIA的。即使是新起的X86-64(也被成AMD64)都是属于CISC的范畴。X86指令集是Intel为其第一块16位CPU(i8086)专门开发的,IBM1981年推出的世界第一台PC机中的CPU—i8088(i8086简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加了X87芯片,以后就将X86指令集和X87指令集统称为X86指令集。

虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486直到过去的PII至强、PIII至强、Pentium 3,最后到Pentium 4系列、至强(不包括至强Nocona),但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel公司所生产的所有CPU仍然继续使用X86指令集,所以它的CPU仍属于X86系列。由于Intel X86系列及其兼容CPU(如AMD Athlon MP、)都使用X86指令集,所以就形成了庞大的X86系列及兼容CPU阵容。x86CPU目前主要有intel的服务器CPU和AMD的服务器CPU两类。

RISC指令集

RISC是英文“Reduced Instruction Set Computing ” 的缩写,中文意思是“精简指令集”。它是在CISC指令系统基础上发展起来的,有人对CISC机进行测试表明,各种指令的使用频度相当悬殊,最常使用的是一些比较简单的指令,它们仅占指令总数的20%,但在程序中出现的频度却占80%。复杂的指令系统必然增加微处理器的复杂性,使处理器的研制时间长,成本高。并且复杂指令需要复杂的操作,必然会降低计算机的速度。基于上述原因,20世纪80年代RISC型CPU诞生了,相对于CISC型CPU ,RISC型CPU不仅精简了指令系统,还采用了一种叫做“超标量和超流水线结构”,大大增加了并行处理能力。RISC指令集是高性能CPU的发展方向。它与传统的CISC(复杂指令集)相对。相比而言,RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少。当然处理速度就提高很多了。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器全都采用RISC指令系统的CPU。RISC指令系统更加适合高档服务器的操作系统UNIX,Linux也属于类似UNIX的操作系统。RISC型CPU与Intel和AMD的CPU在软件和硬件上都不兼容。在中高档服务器中采用RISC指令的CPU主要有以下几类:PowerPC处理器 、SPARC处理器、PA-RISC处理器、MIPS处理器、Alpha处理器。

IA-64

EPIC(Explicitly Parallel Instruction Computers,精确并行指令计算机)是否是RISC和CISC体系的继承者的争论已经有很多,单以EPIC体系来说,它更像Intel的处理器迈向RISC体系的重要步骤。从理论上说,EPIC体系设计的CPU,在相同的主机配置下,处理Windows的应用软件比基于Unix下的应用软件要好得多。

Intel采用EPIC技术的服务器CPU是安腾Itanium(开发代号即Merced)。它是64位处理器,也是IA-64系列中的第一款。微软也已开发了代号为Win64的操作系统,在软件上加以支持。在Intel采用了X86指令集之后,它又转而寻求更先进的64-bit微处理器,Intel这样做的原因是,它们想摆脱容量巨大的x86架构,从而引入精力充沛而又功能强大的指令集,于是采用EPIC指令集的IA-64架构便诞生了。IA-64 在很多方面来说,都比x86有了长足的进步。突破了传统IA32架构的许多限制,在数据的处理能力,系统的稳定性、安全性、可用性、可观理性等方面获得了突破性的提高。

IA-64微处理器最大的缺陷是它们缺乏与x86的兼容,而Intel为了IA-64处理器能够更好地运行两个朝代的软件,它在IA-64处理器上(Itanium、Itanium2 ……)引入了x86-to-IA-64的解码器,这样就能够把x86指令翻译为IA-64指令。这个解码器并不是最有效率的解码器,也不是运行x86代码的最好途径(最好的途径是 直接在x86处理器上运行x86代码),因此Itanium 和Itanium2在运行x86应用程序时候的性能非常糟糕。这也成为X86-64产生的根本原因。

X86-64 (AMD64 / EM64T)

AMD公司设计,可以在同一时间内处理64位的整数运算,并兼容于X86-32架构。其中支持64位逻辑定址,同时提供转换为32位定址选项;但数据操作指令默认为32位和8位,提供转换成64位和16位的选项;支持常规用途寄存器,如果是32位运算操作,就要将结果扩展成完整的64位。这样,指令中有“直接执行”和“转换执行”的区别,其指令字段是8位或32位,可以避免字段过长。

x86-64(也叫AMD64)的产生也并非空穴来风,x86处理器的32bit寻址空间限制在4GB内存,而IA-64的处理器又不能兼容x86。AMD充分考虑顾客的需求,加强x86指令集的功能,使这套指令集可同时支持64位的运算模式,因此AMD把它们的结构称之为x86-64。在技术上AMD在x86-64架构中为了进行64位运算,AMD为其引入了新增了R8-R15通用寄存器作为原有X86处理器寄存器的扩充,但在而在32位环境下并不完全使用到这些寄存器。原来的寄存器诸如EAX、EBX也由32位扩张至64位。在SSE单元中新加入了8个新寄存器以提供对SSE2的支持。寄存器数量的增加将带来性能的提升。与此同时,为了同时支持32和64位代码及寄存器,x86-64架构允许处理器工作在以下两种模式:Long Mode(长模式)和Legacy Mode(遗传模式),Long模式又分为两种子模式(64bit模式和Compatibility mode兼容模式)。该标准已经被引进在AMD服务器处理器中的Opteron处理器。

而推出了支持64位的EM64T技术,再还没被正式命为EM64T之前是IA32E,这是英特尔64位扩展技术的名字,用来区别X86指令集。Intel的EM64T支持64位sub-mode,和AMD的X86-64技术类似,采用64位的线性平面寻址,加入8个新的通用寄存器(GPRs),还增加8个寄存器支持SSE指令。与AMD相类似,Intel的64位技术将兼容IA32和IA32E,只有在运行64位操作系统下的时候,才将会采用IA32E。IA32E将由2个sub-mode组成:64位sub-mode和32位sub-mode,同AMD64一样是向下兼容的。Intel的EM64T将完全兼容AMD的X86-64技术。Nocona处理器已经加入了一些64位技术,Intel的Pentium 4E处理器也支持64位技术。

应该说,这两者都是兼容x86指令集的64位微处理器架构,但EM64T与AMD64还是有一些不一样的地方,AMD64处理器中的NX位在Intel的处理器中将没有提供。

扩展指令集


综述

对于CPU来说,在基本功能方面,它们的差别并不太大,基本的指令集也都差不多,但是许多厂家为了提升某一方面性能,又开发了扩展指令集,扩展指令集定义了新的数据和指令,能够大大提高某方面数据处理能力,但必需要有软件支持。

MMX 指令集

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的作用大打折扣,甚至有时还会造成性能的瞬间剧降。 Intel没有沿用MMX的称呼,1999年的Pentium Ⅲ处理器上指令集改称SSE。SSE采用了单独的寄存器,解决了与FPU冲突的问题。8个128位单独的SSE寄存器,支持同时处理 4 个单精度浮点数,能够同时处理的数据比64位的MMX翻了一番。SSE一共有70条指令,进一步提升了CPU多媒体处理能力。也从这时开始,SSE的名称固定了下来。MMX指令集Intel代表处理器:Pentium MMX

SSE指令集

 SSE(Streaming SIMD Extensions,单指令多数据流扩展)指令集是Intel在Pentium III处理器中率先推出的。其实,早在PIII正式推出之前,Intel公司就曾经通过各种渠道公布过所谓的KNI(Katmai New Instruction)指令集,这个指令集也就是SSE指令集的前身,并一度被很多传媒称之为MMX指令集的下一个版本,即MMX2指令集。究其背景,原来"KNI"指令集是Intel公司最早为其下一代芯片命名的指令集名称,而所谓的"MMX2"则完全是硬件评论家们和媒体凭感觉和印象对"KNI"的 评价,Intel公司从未正式发布过关于MMX2的消息。

而最终推出的SSE指令集也就是所谓胜出的"互联网SSE"指令集。SSE指令集包括了70条指令,其中包含提高3D图形运算效率的50条SIMD(单指令多数据技术)浮点运算指令、12条MMX 整数运算增强指令、8条优化内存中连续数据块传输指令。理论上这些指令对目前流行的图像处理、浮点运算、3D运算、视频处理、音频处理等诸多多媒体应用起到全面强化的作用。SSE指令与3DNow!指令彼此互不兼容,但SSE包含了3DNow!技术的绝大部分功能,只是实现的方法不同。SSE兼容MMX指令,它可以通过SIMD和单时钟周期并行处理多个浮点数据来有效地提高浮点运算速度。

SSE指令集Intel代表处理器:Pentium III

SSE2指令集

SSE2(Streaming SIMD Extensions 2,Intel官方称为SIMD 流技术扩展 2或数据流单指令多数据扩展指令集 2)指令集是Intel公司在SSE指令集的基础上发展起来的。相比于SSE,SSE2使用了144个新增指令,扩展了MMX技术和SSE技术,这些指令提高了广大应用程序的运行性能。随MMX技术引进的SIMD整数指令从64位扩展到了128 位,使SIMD整数类型操作的有效执行率成倍提高。双倍精度浮点SIMD指令允许以 SIMD格式同时执行两个浮点操作,提供双倍精度操作支持有助于加速内容创建、财务、工程和科学应用。除SSE2指令之外,最初的SSE指令也得到增强,通过支持多种数据类型(例如,双字和四字)的算术运算,支持灵活并且动态范围更广的计算功能。SSE2指令可让软件开发员极其灵活的实施算法,并在运行诸如MPEG-2、MP3、3D图形等之类的软件时增强性能。Intel是从Willamette核心的Pentium 4开始支持SSE2指令集的,而AMD则是从K8架构的SledgeHammer核心的Opteron开始才支持SSE2指令集的。

SSE2指令集Intel代表处理器:老Pentium 4

SSE3指令集

SSE3(Streaming SIMD Extensions 3,Intel官方称为SIMD 流技术扩展 3或数据流单指令多数据扩展指令集 3)指令集是Intel公司在SSE2指令集的基础上发展起来的。相比于SSE2,SSE3在SSE2的基础上又增加了13个额外的SIMD指令。SSE3 中13个新指令的主要目的是改进线程同步和特定应用程序领域,例如媒体和游戏。这些新增指令强化了处理器在浮点转换至整数、复杂算法、视频编码、SIMD浮点寄存器操作以及线程同步等五个方面的表现,最终达到提升多媒体和游戏性能的目的。Intel是从Prescott核心的Pentium 4开始支持SSE3指令集的,而AMD则是从2005年下半年Troy核心的Opteron开始才支持SSE3的。但是需要注意的是,AMD所支持的SSE3与Intel的SSE3并不完全相同,主要是删除了针对Intel超线程技术优化的部分指令。

SSE3指令集Intel代表处理器:基于Prescott核心新Pentium 4

3D Now!(3D no waiting)指令集

3DNow!是AMD公司开发的SIMD指令集,可以增强浮点和多媒体运算的速度,并被AMD广泛应用于其K6-2 、K6-3以及Athlon(K7)处理器上。3DNow!指令集技术其实就是21条机器码的扩展指令集。

与Intel公司的MMX技术侧重于整数运算有所不同,3DNow!指令集主要针对三维建模、坐标变换 和效果渲染等三维应用场合,在软件的配合下,可以大幅度提高3D处理性能。后来在Athlon上开发了Enhanced 3DNow!。这些AMD标准的SIMD指令和Intel的SSE具有相同效能。因为受到Intel在商业上以及Pentium III成功的影响,软件在支持SSE上比起3DNow!更为普遍。Enhanced 3DNow!AMD公司继续增加至52个指令,包含了一些SSE码,因而在针对SSE做最佳化的软件中能获得更好的效能。

一个指令,同时处理多个数据的好创意,其他CPU当然也不会放过。AMD看到Intel MMX,眼红之下在K6 CPU里搞出了一个类似的3DNow!因为MMX与浮点数混用时性能会有下降的情况,支持浮点数并行处理的3DNow!找着了机会。其实是AMD占了Intel的便宜,因为很多程序员把3DNow!作为MMX的一个补充,处理整数的时候用MMX,处理浮点数的时候用3DNow!。

1999年的时候,AMD在Athlon处理器上又添加了几个指令,这就是3DNow!+,又被称为3DNow!2。不过看到大势已去,AMD终于放弃了在多媒体指令集上的抵抗,转而支持Intel SSE,这样双方一直到SSE3都相安无事。统一的标准其实是一件好事,要是一个软件分别有SSE版本和3DNow!+版本,开发者和用户很快都会不堪其扰。

但是最近AMD和Intel在多媒体指令集上又开始大打出手,大有分道扬镳的势头。与Intel SSE4.1针锋相对,AMD Phenom只支持SSE4A指令集,并且AMD在去年8月抢先放出了SSE5的风声,而Intel则断然拒绝支持AMD的SSE5,直到现在双方还相持不下。

SSE4指令集

SSE4指令集是Conroe架构所引入的新指令集。这项原本计划应用于NetBurst微架构Tejas核心处理器之上的全新技术也随着它的夭折最终没能实现,这不能不说是个遗憾,但是SSE4指令集出现在了Conroe上又让我们看到了希望。

SSE4指令集共包括16条指令,不过虽然扣肉处理器推出已经有一些时日,但目前英特尔仍没有公布SSE4指令集的具体资料。这相当令人感到纳闷。也许英特尔是基于特殊的考虑,仅让少数合作软件厂商取得数据,只是这种作法实在很没有说服力就是了,天底下没有哪家处理器厂商,希望自己新增的指令越少人用越好。

不过,从Intel Core微架构针对SSE指令所作出的修改被称之为“Intel Advanced Digital Media Boost”技术来看,未来SSE4将更注重针对视频方面的优化,我们认为SSE4主要改进之处可能将针对英特尔的Clear Video高清视频技术及UDI接口规范提供强有力的支持。这两项技术基于965芯片组,Intel的官方把Clear Video技术定义为:支持高级解码、拥有预处理和增强型3D处理能力。

值得一提的是,在SSE4中另一个重要的改进就是提供完整128位宽的SSE执行单元,一个频率周期内可执行一个128位SSE指令。Conroe中SSE的ADDPS(4D 32bit共128bit,单精度加法)、MULPS(4D 32bit共128bit,单精度乘法)和SSE2的ADDPD(2D 64bit共128bit,双精度加法)、MULPD(2D 64bit共128bit,双精度乘法),这四条重要SSE算术指令的吞吐周期都降低到1个周期,真正做到了英特尔宣称的每个周期执行一条128位向量加法指令和一条128位向量乘法指令的能力。

据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倍的读取频宽效能提升,对于视讯处理、成像以及图形处理器与中央处理器之间的共享数据应用,有着明显的效能提升。

据Intel资深工程师兼 Penryn 微架构主管 Stephen Fischer 表示,全新 DivX Alaph 内部测试版本已完全支持SSE4指令集, 1颗 3.33G Hz 的Yorkfield的运算效能,相比上代Intel Core 2 Duo QX6800快约105% ,其中约7成的增益来自SSE4指令集,效果令人满意。

SSSE3指令集

(Supplemental Streaming SIMD Extensions 3)内置于Intel公司微处理器中的多媒体关联的扩张指令集。是扩张了SSE3的产品,于2006年7月首次装载在Core 2 Duo处理器中。

SSE3装载了用一个命令一口气处理复数个数据的「SIMD」的处理方式,特别在处理语音和动画关联上能够高速地发挥力量。SSSE3是在 SSE3命令的基础上又添加了32个新命令的产品,其原名为TNI,是SSE4指令集的子集,包含有13条命令。目前SSSE3也是最先进的指令集,增强了CPU的多媒体、图形图象和Internet等的处理能力。

SSSE3指令集Intel代表处理器:65nm 酷睿2

SSE4.2指令集

在Nehalem架构的Core i7处理器中,SSE4.2指令集被引入,加入了STTNI(字符串文本新指令)和ATA(面向应用的加速器)两大优化指令。SSE4.2新加入的几条新指令有两类。第一类是字符串与文本新指令STTNI,STTNI包含了四条具体的指令。STTNI指令可以对两个16位的数据进行匹配操作,以加速在XML分析方面的性能。据Intel表示,新指令可以在XML分析方面取得3.8倍的性能提升。

第二类指令是面向应用的加速指令ATA。ATA包括冗余校验的CRC32指令、计算源操作数中非0位个数的POPCNT指令,以及对于打包的64位算术运算的SIMD指令。CRC32指令可以取代上层数据协议中经常用到的循环冗余校验,据Intel表示其加速比可以达到6.5~18.6倍;POPCNT用于提高在DNA基因配对、声音识别等包含大数据集中进行模式识别和搜索等操作的应用程序性能。 Intel也公布了支持新指令集的开发工具。这些工具涵盖了主流的编译开发环境。目前已明确支持SSE4.2的开发环境包括:Intel C++ Compiler 10.X、微软的Visual Studio 2008 VC++、GCC 4.3.1、Sun Studio Express等。程序员可以直接使用高级编程语言编程,编译器会自动生成优化结果。当然程序员也可以用内嵌汇编的方式来达到目的。

AMD64位技术

AMD的athlon 64系列处理器的64位技术是在X86指令集的基础上加入了X86-64的64位扩展X86指令集,这就使得athlon 64系列处理器可兼容原来的32位的X86软件,并同时支持X86-64的扩展64位计算,并且具有64位的寻址能力,使得它成为真正的64位X86构架处理器。在采用X86-64架构的Athlon 64处理器中,X86-64指令集中新增了几组处理器寄存器,它能够提供更加快速的执行效率。寄存器是处理器用来创建和储存CPU运算结果和其他运算结果的地方,标准的X86构架中包括8组通用寄存器,而在AMD的X86-64架构中又增加了8组,将通过寄存器的数目提高到了16组。在这基础之上,X86-64指令集还另外增加了8组128位的XMM寄存器,也叫做SSE寄存器。它能够给单指令多数据流技术(SIMD)运算提供更多的存储空间,这些128位的寄存器能够提供在矢量和标量计算模式下进行128位双精度处理,这也为3D数据处理、矢量分析和虚拟技术提供了良好的硬件基础。由于提供了更多的寄存器,按照X86-64标准生产的处理器可以更有效率的处理数据,在一个时钟周期内能够传输更多的信息。

EM64T技术

EM64T(Extended Memory 64 Technology)也就是Intel公司开发的64位内存扩展技术。它实际上就是Intel IA-32构架体系的扩展,既IA-32E(Intel Architectur-32 Extension)。Intel的IA-32处理器通过加入EM64T技术便可在兼容IA-32软件的情况下,允许软件程序利用更多的内存地址空间,并且允许程序进行32 位线性地址写入。Intel的EM64T所强调的是32位技术与64位技术的兼容性,为采用EM64T的处理器增加了8个64位通用寄存器,并将原有的32位通用寄存器全部扩展为64位,这样也提高了处理器的整数运算能力。另外增加的8个SEE寄存器也提供了对SSE、SSE2和SSE3指令的支持。

Intel的主流桌面处理器共有两个模式,传统的IA-32模式和IA-32E模式。在可支持EM64T指令的处理器内有一个扩展功能激活寄存器(Extended Feature Enable Register),称为IA-32_EFER的部件,它控制处理器的EM64T是否被激活。在普通情况下,处理器会作为一颗标准的IA-32处理器,如果在运行64位的软件或程序时,EM64T就会被激活,那么处理器便会在IA-32E扩展模式下运行。

指令展望


AMD表示,SSE5指令集的使命之一是增强高性能计算应用,并充分发挥多核心、多媒体的并行优势。SSE5将把以往只存在于高性能特殊架构里的功能引入到x86平台中,以此最大化每条指令的输出能力,并增强代码库。

SSE5是128-bit指令集,一共有170条指令,其中基础指令64条,新增的最重要的有两条:

首先是“三操作数指令”(3-Operand InstrUCtions)。x86指令以往只能处理双操作数,而SSE5会提高到三操作数,达到RISC架构的水平,从而把多个简单的指令集整合到更高效的一个单独指令中,提高执行效率。

然后是“熔合乘法累积”(Fused Multiply Accumulate,FMACxx)。该技术可以把乘法和其他算法结合起来,保证之用一条指令就能完成迭代运算,从而简化代码、提高效率,适用于真实图形着色、快速照相渲染、空间化音频、复向量(矢量)数学等场合。

除此之外还有整数乘法累积指令(IMAC,IMADC)、置换与条件移动指令、向量比较与测试指令、精度控制舍入与变换指令等等。

新的指令集


市面上Intel和AMD的桌面级处理器在X86指令集的基础上,为了提升处理器各方面的性能,所以又各自开发新的指令集。指令集中包含了处理器对多媒体、3D处理等方面的支持,这些指令集能够提高处理器对这某些方面处理器能力,但是需要有必要的软件支持。Intel的主流桌面处理器共有两个模式,传统的IA-32模式和IA-32E模式。在可支持EM64T指令的处理器内有一个扩展功能激活寄存器(Extended Feature Enable Register),称为IA-32_EFER的部件,它控制处理器的EM64T是否被激活。在普通情况下,处理器会作为一颗标准的IA-32处理器,如果在运行64位的软件或程序时,EM64T就会被激活,那么处理器便会在IA-32E扩展模式下运行。

相关分词: CPU 扩展 指令