营盘街地铁口:64位的CPU是什么意思?

来源:百度文库 编辑:神马品牌网 时间:2024/05/06 07:40:30

1、EM64T定义

Intel官方是给EM64T这样定义的:EM64T全称Extended Memory 64 Technology,即扩展64 bit内存技术。EM64T是Intel IA-32架构的扩展,即IA-32e(Intel Architectur-32 extension)。IA-32处理器通过附加EM64T技术,便可在兼容IA-32软件的情况下,允许软件利用更多的内存地址空间,并且允许软件进行32 bit线性地址写入。EM64T特别强调的是对32 bit和64 bit的兼容性。

Intel为了实现EM64T,特别为处理器核心做出以下改进:

使用64 bit寄存器(register)和内存指针(memory pointers)

处理器新加入64 bit指令寄存器和内存指针是为了能实现64 bit内存寻址。具体的处理器支持物理内存和虚拟内存的寻址空间如下表:

处理器 虚拟内存寻址 物理内存寻址 物理内存容量
Prescott(Pentium4) 48 bit 36 bit 64 GB
Nocona(Xeon) 4 8 bit 36 bit 64 GB

增强的SSE(Stream SIMD Extensions)和GPRs(General-Purpose Registers)

Intel为新核心增加了8个64 bit GPRs(R8-R15),并且把原有GRPs全部扩展为64 bit,如前文所述这样可以提高整数运算能力。增加8个128 bit SSE寄存器(XMM8-XMM15),是为了增强多媒体性能,包括对SSE, SSE2和SSE3的支持。

看到这儿,也许你会有疑问。不是64 bit嘛,那为什么应用EM64T的处理器仅支持48 bit虚拟内存寻址和36 bit内存寻址,而SSE 寄存器却为128 bit?64 bit处理器的确最高可以支持64 bit内存寻址,但具体的支持能力还要看厂商设计,并不一定非要达到极限;SSE寄存器是专用寄存器,并非通用寄存器,因为它是专门针对多媒体数据处理指令而设计的,因此从诞生之日起,就比通用寄存器的数据位数要宽。

2、EM64T的运行模式

既然EM64T是一种兼容性很强的64 bit扩展技术,那么它是如何工作的呢?Intel为支持EM64T技术的处理器设计了两大类:传统IA-32模式(legacy IA-32 mode)和IA-32e扩展模式(IA-32e mode),两大类下又具体分为多种运行模式,如下表:

EM64T有这么多种复杂的运行模式,那么处理器是怎么识别的呢?

在支持EM64T技术的处理器内有一个称之为扩展功能激活寄存器(extended feature enable register,IA32_EFER)的部件,其中的Bit 10控制着EM64T是否激活。Bit 10被称作IA-32e模式有效(IA-32e mode active)或长模式有效(long mode active,LMA)。当LMA=0时,处理器便作为一颗标准的32 bit(IA32)处理器运行在传统IA-32模式;当LMA=1时,EM64T便被激活,处理器会运行在IA-32e扩展模式下。

下面我们先来说说IA-32e扩展模式下CPU的运行状况,看完之后传统IA-32模式下的情况也会一清二楚。

在IA-32e扩展模式下也有两种模式:兼容模式和64位模式。两者都需要64 bit操作系统和64 bit驱动程序的支持,但其中只有64位模式是真正的64 bit计算。在64位模式下,必须要有64 bit的操作系统、驱动程序和应用程序三者合作,此时处理器内的新增的8个64 bit GPRs((R8–R15)和8个128 bit SSE寄存器(XMM8–XMM15)才会被激活,原有的8个GPRs((RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP)宽度也会同时扩展为64 bit,并且64 bit指令指针启用。此时处理器才能利用64 bit指令操作来支持64 bit内存寻址,还可以进行双精度(64 bit)整数运算。

而在另一种兼容模式下,计算机允许在64 bit操作系统下不需要预编译就可以运行大多数传统16 bit或32 bit应用程序,这和传统IA-32模式下基本相同,只不过此时的操作系统和驱动程序都是64 bit的。在兼容模式下,64 bit应用程序也可以直接像传统32 bit程序那些运行,而不需要重新编译。

从上面的描述我们可以看出,在不同模式的转换中,处理最大的变化便是寄存器的改变。这正式因为64 bit与32 bit定义的最大不同就是在寄存器上,我们可以从下表看出寄存器的具体变化情况。

从上表我们可以清楚的看到处理器的寄存器在不同模式下的变化情况。虽然支持EM64T的Prescott核心拥有16个GPRs(通用寄存器),但他们并非任何时候都会工作的,Intel根据不同的运行模式定义了他们的工作状态。

在传统的IA-32架构中,也就是在传统模式和兼容模式下,处理器中有8个GPRs在运行状态。当运算数为16 bits时,AX、BX、CX、DX、DI、SI、BP、SP有效;当运算数为32 bits时,EAX、EBX、ECX、EDX、EDI、ESI、EBP、ESP有效。

在64位模式下,处理器默认的运算数为32 bits。但是,无论32 bit还是64 bit的运算数,GPRs都能够支持。此时如果运算数被指定为32 bits,那么EAX、EBX、ECX、EDX、EDI、ESI、EBP、ESP、R8D-R15D有效;如果运算数被指定为32 bits,那么RAX、RBX、RCX、RDX、RDI、RSI、 RBP、RSP、R8-R15有效。其中R8-R15是新增的8个GPRs。上述所有GPRs都可以存取byte、word、dword以及qword级别数据,这一级别数据都允许REX前缀。

随便提一下REX前缀。REX前缀是在64 bit模式下应用的一组新的指令前缀集。REX可以用来定义GPRs和SSE寄存器;可以定义一个64 bit运算数的大小;还可以由系统软件调用来定义扩展控制寄存器(extended control registers)。并非所有指令都需要加REX前缀。只有在指令设计到其中一个扩展寄存器或者要用64 bit运算数时才有必要加上REX前缀。如果加上了一个无意义的REX前缀,那会被自动忽略。

EM64T与64 bit IA-64的区别
众说周知,Intel曾经轻视AMD的x86-64架构,并独自开发了全新的64 bit IA-64架构,即基于EPIC(Explicitly Parallel Instruction Computing,显性并行指令计算)架构的Itanium(安腾)以及后续产品Itanium 2。那么Intel为什么还要重复开发64 bit技术EM64T呢?在此我们不对EPIC以及IA-64技术作讨论。只是简单说明一下IA-64与EM64T的重要区别。

IA-64的Intel开发的全新的64 bit架构,应用全新的指令集,是纯64 bit架构,与以往的IA-32以及RISC不兼容。Itanium 2处理器是基于EPIC模式并支持高指令并行。而EM64T是IA-32架构的一种64 bit内存扩展技术,基于Intel NetBurs微架构,这与纯64 bit处理器有着本质的区别。下表列出了Itanium 2与采用EM64T技术CPU的主要技术区别:

没次进行65bit运算 很好的电脑才有64啊 现在使用不会比32位好 一般的都是32

字长为64位的cpu.如果你硬件知识不够强,就只要知道这是一种主流新潮的cpu,不过现在使用不会比32位有什么提高。

64位内存寻址,完~

我的CPU就是64位的,没感觉怎么好用!总出一些毛病,不知是否与它有关!