兼容性方面的改进
Intel官方是给EM64T这样定义的:EM64T全称Extended Memory 64 Technology,即64位内存扩展技术,它是Intel IA-32架构(Intel Architectur-32 extension)的一个扩展,且兼容原来的架构。通过增加CPU的运算位宽扩展增加CPU和内存之间的位宽,从而让系统支持更大容量的内存(32bit处理器最多只能支持内存容量只有4GB,而64bit的最高则达64GB)。
|
寻址空间对应表
|
|
处理器
|
虚拟内存寻址
|
物理内存寻址
|
物理内存容量
|
|
Prescott(P4,普通PC处理器)
Nocona(Xeon,服务器处理器)
|
48 bit
|
36 bit
|
64 GB
|
为了实现64bit和32bit两种运算间的兼容,Intel在原来32bit处理器核心的基础上加入了8个64 bit GPRs(通用寄存器)和内存指针(memory pointers),从而实现了64 bit内存寻址。在理论上,虽然EM64T架构最高可以支持64 bit内存寻址,但由于设计和制造工艺等方面的因素,并非所有EM64T的处理器都能达到理论的上限,所以,在64 bit和32bit内存寻址之间提供一个48 bit的虚拟内存寻址,以增强两者间的兼容性。
EM64T模式的运行及识别
既然,EM64T是一种兼容性很强的64 bit扩展技术,那么它是如何工作的呢?
Intel为支持EM64T技术的处理器可分为两大类:传统IA-32模式和IA-32e扩展模式,两大类下具体又可分为多种运行模式,具体如下表:在支持EM64T技术的处理器内有一个称之为扩展功能激活寄存器(Extended Feature Enable Register,IA32_EFER)的部件,其中一个被称作长模式有效(Long Mode Active,LMA)的Bit10控制器控制EM64T是否被激活。当LMA=0时,处理器便作为一颗标准的32 bit(IA32)处理器运行在传统IA-32模式;当LMA=1时,EM64T便被激活,处理器会运行在IA-32e扩展模式下。
|
EM64T的运行模式
|
|
传统IA-32模式
|
IA-32e扩展模式
|
|
保护模式
|
真实地址模式
|
真实8086模式
|
兼容模式
|
64位模式
|
在IA-32e扩展模式下的兼容模式和64位模式,两者都需要64bit操作系统和64bit驱动程序的支持,但后者才是真正的64bit计算。在64bit模式下,必须要有64bit的操作系统、驱动程序和应用程序三者合作。此时,处理器内的新增的8个GPRs和8个SSE寄存器(XMM8 -XMM15)才会被激活,原有的8个GPRS(RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP)的宽度也会同时扩展为64bit,并且启用64bit指令指针。此时,处理器才能利用64bit指令操作来支持64bit内存寻址,进行双精度(64bit)整数运算。
而在另一种兼容模式下,计算机允许在64bit操作系统下不需要预编译就可以运行大多数传统16bit或32bit应用程序,这和传统IA-32模式下基本相同,只不过此时的操作系统和驱动程序都是64bit的。
从上面的描述我们可以看出,在不同模式的转换中,处理最大的变化便是寄存器的改变。这正是因为64bit与32bit定义的最大不同就是在寄存器上。我们可以从下表看出寄存器的具体变化情况。
|
|
64位模式
|
64兼容模式
|
|
名称
|
数量
|
容量bits
|
名称
|
数量
|
容量bits
|
|
通用寄存器(GPRs)
|
RAX,BX,
RCX,RDX,
RBP,RSI,
RDI,RSP,
R8-15
|
16
|
64
|
EAX, EBX, ECX,
EDX, EBP, ESI,
EDI, ESP
|
8
|
32
|
|
指令指针
|
RIP
|
1
|
64
|
EIP
|
1
|
32
|
|
浮点寄存器
|
ST0-7
|
8
|
80
|
ST0-7
|
8
|
80
|
|
多媒体寄存器
|
MM0-7
|
8
|
64
|
MM0-7
|
8
|
64
|
|
SSE寄存器
|
XMM0-15
|
16
|
128
|
XMM0-7
|
8
|
128
|
|
栈宽度
|
无
|
64
|
无
|
16或32
|
在上表中,我们可以清楚地看到处理器的寄存器在不同模式下的变化情况。虽然支持EM64T的Prescott核心拥有16个GPRs(通用寄存器),但他们并非任何时候都会工作的,Intel根据不同的运行模式定义了他们的工作状态。
支持EM64T的处理器型号
EM64T技术最早是被应用在采用了Nocona核心的Xeon处理器上,尽管Prescott核心支持EM64T技术,但直到最近的 Prescott 2M核心,EM64T才开始被激活。这样,支持此技术的处理器便有Xeon、Pentium 4 Extreme Edition以及Pentium 4 600系列等,具体的处理器型号请参阅下表。
|
处理器型号
|
主频
|
核心
|
L2
|
制程
|
前端总线FSB
|
接口
|
|
Xeon
|
2.80-3.60GHz
|
Nocona
|
1M/2M
|
90nm
|
800 MHz
|
Socket604
|
|
Pentium 4 Extreme Edition
|
3.73GHz
|
Prescott 2M
|
2M
|
90nm
|
1066 MHz
|
LGA775
|
|
Pentium 4 660
|
3.6GHz
|
Prescott 2M
|
|
90nm
|
800MHz
|
LGA775
|
|
Pentium 4 650
|
3.4GHz
|
Prescott 2M
|
2M
|
90nm
|
800MHz
|
LGA775
|
|
Pentium 4 640
|
3.2GHz
|
Prescott 2M
|
2M
|
90nm
|
800MHz
|
LGA775
|
|
Pentium 4 630
|
3.0GHz
|
Prescott 2M
|
2M
|
90nm
|
800MHz
|
LGA775
|
|