x86和x64

来源:互联网 发布:网络水军是什么 编辑:程序博客网 时间:2024/05/21 15:04

如今面对着铺天盖地的关于64位处理的宣传,有些人可能会产生这样的想法:64位可以让游戏以两倍于以前的速度运行,把粗糙的3D模型转化为平滑而逼真的模型,甚至把一台普通的PC变为超强的游戏机。 另一方面,再听听反面的声音:为什么我们要买并不需要的产品?
事实上,这两种看法都有所偏袒。很明显,64位不可能带来两倍的计算速度,不可能重现当初由8位过渡到16位的那种革命性改变。但64位也不可能是毫无意义的。无论AMD64还是Intel的EM64T,它们都是x86指令的64位扩展,64位能支持更大的内存寻址空间,能带来更简洁的编程模型,并且完全向下兼容32位应用程序,这些都是提高性能的有利因素。
为了帮助大家真正地了解64位到底能有多大的提升,我们测试了AMD和Intel的64位处理器,操作系统是最新版本的64位Windows XP。看看目前桌面市场上最快的处理器在64位和32位应用程序的性能。
64位基础知识
最初,是AMD作为业界的先锋,首先跨入64位(台式机范围)。开始,他们把这种技术叫做x86-64。后来出于市场原因,AMD干脆重新命名为AMD64。实际上,最初AMD K8的微内核就叫做AMD64。面对咄咄逼人的AMD,Intel也加入对64位的支持,当然,名字不能和AMD一样,于是乎EM64T就诞生了。讲到这里,大家应该明白AMD64和EM64T师出同门,他们是相互兼容的。对于普通用户,他们可以说是一样的。
无论叫什么名字,最新的桌面处理器都已经支持64位技术了,包括AMD的Athlon64和Opteron系列,以及Intel的Pentium4 600系列和最新的Xeon。Intel宣称桌面系列的处理器都将支持EM64T,包括低端的Celeron。而AMD并没有承认Sempron系列也将支持AMD64,但是迫于Celeron的压力AMD也很由可能这样做。
时至今天,各种支持64位处理器的Linux已经随处可见。然而微软支持x86-64的Windows XP仍然只有beta版本,直到4月份,Windows XP Professional x64 Edition正式版才能问世(注意和支持Itanium的Windows XP 64-bit Edition完全不同)。一旦Windows XP x64 Edition正式上市,64位的市场才能真正活跃起来,所以大家也一定想了解64位计算对自己到底意味着什么。
从正面的角度来说,改变的并不是很多。Windows x64仍然能运行32位应用程序,而且几乎没什么区别。微软把这种兼容技术叫做WOW64,那些32位应用程序就像运行在32位的Windows一样。但区别还是有的,设备的驱动程序必须重新编译,原有的32位驱动是不能使用的。大多数情况下,Windows x64集成了常用设备的驱动,所以我们无需安装任何额外的驱动就能测试Intel 925X和nForce4的平台。否则,设备供应商必须提供64位驱动才能在Windows x64上正常工作。 例如RealTek和NVIDIA,它们分别提供了64位的声卡和显卡驱动,ATI也推出了beta版本的64位显卡驱动。但是,并不是所有的厂商都发布了64位驱动。
仍然存在着一些程序,它们不能简单地过渡到64位。例如WinXP x64就集成了两个版本的IE浏览器,分别是32位和64位的。系统默认的浏览器是32位的IE,因为几乎所有的ActiveX控件都是32位编码的,很难想像我们只用某种软件的部分功能。同样的,一些直接硬件访问的系统级软件可能会产生某种不可预计的后果,尽管微软很努力,但可以估计一些补丁程序是必不可少的了。当然,最终所有的程序都会顺利过渡到64位,它们只能支持64位的处理器和操作系统。
64位的优点
当AMD研发出x86-64架构时,同时也解决了传统x86固有的一些缺点。其中最重要的就是内存,原来只支持32位的寻址范围,因此最大支持的内存是4GB。4GB对普通的桌面电脑来说的确足够了,但由于市场需要,一些入门级服务器及工作站使用的也是桌面平台,对它们而言,4GB内存的限制就显得捉襟见肘了。
从更深的层次来讲,32位寻址空间的缺陷不仅仅停留在表面的容量上。在默认情况下,Windows XP对应用程序的限制是最大只能使用2GB的内存空间,为系统级任务保留了2GB内存。(Intel为x86发明了一种物理内存扩展技术PAE,使得Windows的Server版本能访问128GB的内存,但是PAE的页面调度效率比较低。)
同时,一部分用户数据在不断增长,从高分辨率的数码相机,到HD视频,还有需要使用512MB显存的游戏。科学计算和技术工作站也一直受到32位寻址的限制。
通过把寻址总线扩展到64位,最大的寻址空间可达2的64次方字节,基本上可以说是没有限制了,每个时钟单位可以传送16字节的数据。目前AMD64处理器支持的寻址空间是40位,也就是1TB,虚拟地址空间可达48位,也就是256TB。WinXP x64支持128GB的物理内存和16TB的虚拟内存。Windows的系统缓存由原有32位的1GB增加到64位的1TB。即使是WinXP x64中的32位应用程序,系统也能为他们各自分配4GB的空间。
简单的说,64位克服了老x86架构的寻址范围的限制,虽然这种改善不能直接带来性能上的提升,但做为计算机最核心的部分,这种改进还是非常关键的。
寄存器
实际上,提升性能最关键的因素是x86-64架构中添加的寄存器。x86-64总共添加了8个常规用途寄存器(GPRs), 总数目达到了16。这16组寄存器都能支持64位的数据。同时x86-64还添加了8组128位的SSE/SSE2寄存器,总数目也达到了16。
实际上,性能还于编码的复杂程度密切相关,复杂的程序需要很多嵌套的循环,更多的寄存器可以提供更高的执行效率。

原创粉丝点击