谁是《西游记》的幕后指使人???- -| 回首页 | 2006年索引 | - -Plesk v8.0 for Linux Multi-Domains 下载 [含破解KEY]

早到的嚎头,64位中央处理器技术

关键词64位    CPU                                          

from:http://bbs.winzheng.com/viewthread.php?tid=1064275
Author:
frog_zjut

64位技术在现在来说,已经耳熟能详了。甚至于目前市场的CPU,除了部分老旧的型号外,无一例外的全部是支持64位的中央处理器。
但是由于其他硬件发展的限制(目前32位软件可以直接对少于4G的内存寻址,貌似个人用户很少有4G以上的吧,板子四插槽,还有单根内存最大容量1G等等条件限制),以及Wintel联盟的关系(微软在AMD推出64位CPU之后将近两年之后才推出了XP-64bit版本,让AMD想借以64bit的卖点荡然无存,给Intel足够的时间赶上来,而XP-64bit可以说是一个鸡肋,非完整64版本,驱动兼容差,按照微软的说法,VISTA出来之后,XP-64bit强被抛弃,而且就算是VISTA也同时支持32/64BIT版本,64位应用可否VISTA上发展起来还需要打个问号)应用软件发展(软件运行在64位,确实可以提高速度和性能,应为部分指令和数据传输,32bit需要两次执行,64bit的一次就可以了,但由于时日过短,现在针对个人PC的64位应用软件少的可怜)导致目前64位应用对于个人PC用户而言还是一个遥远的梦想。
64位技术是相对于32位而言的,这个位数指的是CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集就是运行64位数据的指令,也就是说处理器一次可以运行64bit数据。64bit计算主要有两大优点:可以进行更大范围的整数运算;可以支持更大的内存。
64bit处理器并非现在才有的,在高端的RISC(Reduced Instruction Set Computing,精简指令集计算机)很早就有64bit处理器了,比如SUN公司的UltraSparc Ⅲ、IBM公司的POWER5、HP公司的Alpha等。
目前X86系列CPU使用的64位技术主要有AMD公司的X86-64位(可能是为了市场需要,在A64上市之后,已经被命名位AMD64了,不过我还是习惯叫X86-64)技术、Intel公司的EM64T技术、和Intel公司的IA-64技术。其中IA-64是Intel独立开发,不兼容现在的传统的32位计算机,仅用于Itanium(安腾)以及后续产品Itanium 2,一般用户不会涉及到。
x86-64是AMD为Hammer系列开发的64位架构,而它是利用现有的x86-32基础上改进的。也就是说,基于x86-64的处理器可以完全向下兼容现有的所有32位应用程序。要完成这些运算AMD为其引入了少量的新寄存器,作为现有寄存器的扩充:


图片附件: pic1.jpg (2006-7-18 01:17, 23.69 K)


现在新增加了R8-R15通用寄存器(general-purpose registers GPR),这些寄存器都工作在64位模式下(这意味着在该模式下程序需要重新编译),原来的寄存器诸如EAX、EBX也由32位扩张至64位。在SSE单元中新加入了8个新寄存器以提供对SSE2的支持。寄存器数量的增加将带来性能的提升,比如说科学计算(顺便说一句,这也是K8与K7间一个明显的不同点,什么时候可以写点K8相对于K7的改进)。
寄存器的扩展方式如下:


图片附件: pic2.jpg (2006-7-18 01:17, 6.4 K)


从EAX到RAX的扩展就同15年前,Intel发布i386处理器时,将AX扩展为EAX的做法一样。当时i386在应用程序方面比起它的前辈i286来说,表现相当优秀。现在Hammer也采用了相同的做法:该处理器可以很轻松的运行32位代码,在这种情况下CPU是没有满负荷运行的。
为了同时支持32和64位代码及寄存器,X86-64架构允许处理器工作在以下两种模式:Long Mode(长模式)和Legacy Mode(遗传模式),Long模式有分为两种子模式(64bit模式和Compatibility mode兼容模式)。
64位模式所支持的新特性:
64位虚拟地址;
8个新增64位general-purpose registers通用寄存器;
64位通用寄存器扩展(包括老的EAX、EBX等等);
64位指令指针;
N新的相对指令指针寻址;
为指令,数据和堆栈分配独立的连续地址空间
1、兼容模式 CPU在64位操作系统里提供对16/32位应用程序的兼容支持。对16/32位软件的支持主要是通过建立相对独立代码段的原理实现的。和64位模式不同,这里的代码段可以在保护模式下正常工作。从应用程序的角度看,在保护模式下其所使用的处理器也就是普通32位x86处理器。而从操作系统的角度来看,常规的地址变换,中断以及系统数据结构操作都是在64位Long模式下进行的。
2、除了Long模式之外,x86-64被认为还支持Legacy模式,因此具备了兼容16/32位操作系统的能力。换句话说在Legacy模式下,处理器的运行和一刻普通的32位x86CPU没有区别。屏蔽了执行64位指令集的功能。该模式与现有的x86架构完全兼容。其中包括了对诸如片断内存、32位通用寄存器和指令指针的支持。
Intel官方是给EM64T这样定义的:EM64T全称Extended Memory 64 Technology,即扩展64bit内存技术。EM64T是Intel IA-32架构的扩展,即IA-32e(Intel Architectur-32 extension)。IA-32处理器通过附加EM64T技术,便可在兼容IA-32软件的情况下,允许软件利用更多的内存地址空间,并且允许软件进行32 bit线性地址写入。EM64T特别强调的是对32 bit和64 bit的兼容性。Intel为新核心增加了8个64 bit GPRs(R8-R15),并且把原有GRPs全部扩展为64 bit,这样可以提高整数运算能力。增加8个128bit SSE寄存器(XMM8-XMM15),是为了增强多媒体性能,包括对SSE、SSE2和SSE3的支持。
Intel为支持EM64T技术的处理器设计了两大模式:传统IA-32模式(legacy IA-32 mode)和IA-32e扩展模式(IA-32e mode)。在支持EM64T技术的处理器内有一个称之为扩展功能激活寄存器(extended feature enable register,IA32_EFER)的部件,其中的Bit10控制着EM64T是否激活。Bit10被称作IA-32e模式有效(IA-32e mode active)或长模式有效(long mode active,LMA)。当LMA=0时,处理器便作为一颗标准的32 bit(IA32)处理器运行在传统IA-32模式;当LMA=1时,EM64T便被激活,处理器会运行在IA-32e扩展模式下。(其实算是拷贝X86-64技术,目前的Intel CPU已经直接兼容X86-64技术了)。
单从技术上来说,貌似很不错。但实际上由于软件和系统的限制,目前的64BIT的CPU相比较32BIT的而言,毫无优势可言。准确的说,在32BIT环境应用下下,32位的处理器还要占优势(尤其是装64BIT的系统跑32BIT的软件)。
还有就是应为64BIT技术是添加额外的寄存器实现,也就是如果需要运行在64BIT模式的时候,将激活这些晶体管,于是就需要功率增加,发热增大(这个也就是以前为什么一些处理器在32BIT系统可以稳定的频率,到了64BIT系统里面需要加压后才可以稳定的原因)。
而且单从技术而言,X86-64/EM64T并没有实现完整的64BIT功能,就内存寻址方面而言,只支持40位物理内存寻址,48位虚拟内存寻址。

【作者: laozei】【访问统计:】【2006年09月14日 星期四 01:09】【 加入博采】【打印

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=5651799

回复

验证码:   
评论内容: