CPU扩展指令集指的是CPU增加的多媒体或者是3D处理指令,这些扩展指令可以提高CPU处理多媒体和3D图形的能力。着名的有MMX(多媒体扩展指令)、SSE(网际网路数据流单指令扩展)和3DNow!指令集。CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬体电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。
基本介绍
- 中文名CPU扩展指令集
- 内容CPU增加的多媒体
- 指令分类CISC、RISC、X86-64
- 作用 提高微处理器效率
基本概况
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器件的使用效率,从而大幅度地提高处理器的性能。
基本分类
从现阶段的主流体系结构讲,指令集可分为複杂指令集和精简指令集两部分,而从具体运用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)和AMD的3DNow通常会把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
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
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在抢先放出了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指令的支持。
指令展望
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扩展模式下运行。