【IT168 资讯】如果你喜欢IT方面的技术,经常光顾一些电脑方面的网站和论坛,你一定会知道本年度电脑界最大的事件,那就是微软新一代Windows Vista多个版本的正式推出,这标志着个人电脑计算进入了一个新的平台领域。
除了炫丽的Aero、加强的用户体验和系统性能之外,Vista时代带来的最大改变就是:64位版本操作系统正式将成为主流的个人软件平台了。以前Window XP的64位版给人留下的糟糕的印象将会成为过去,近期的一些软件和驱动等都将同时并列提供32位和64位版下载,而以后恐怕只会有64位版了。
那么现阶段我们选择,到底是32位还是64位好呢?很多网友都有这个疑问,而大部分论坛里出现问答的大都是这种情形:
网友问:大家好,我装了一台新机,CPU是支持64位的,那我到底该装64位版操作系统还是32位版,大家的看法是如何的?我听说64位的兼容性不太好,请高手来指教!
高手回答:我看了你的帖子,很多人都有这个疑问,我建议你绝对要装32位版。首先正如同XP的64位版一样,64位Vista也是有很多兼容性问题,以后一定会让你很头疼,64位的普及还早,32位还有很长的生命。另外更重要的是,32位与64位的实际差别其实只是64位可以更好的使用4G大小的内存,所以32位足矣!
这种回复非常普遍,那么它有什么错误之处呢?其实是差之毫厘,谬以千里。长期以来,很多电脑高手都自我觉得32位计算和64位计算的真正差别只是内存方面的限制不同。内存利用方面确实是有差别吗?肯定的,但是这种简单的回答却掩盖了32位和64位之间99%的不同之处!
因为按照这个简单的逻辑,你也可以说,小时候玩的8位任天堂游戏机和现在的次时代Xbox360的唯一差别就是处理速度:大部分人都会同意这种说法,但是这却是错误的。
那么,如果内存是唯一的64位计算的提升方面之一,它的实际意义是什么?是如何实现的?更重要的是,我们为什么要选择64位呢?以下的文章内容我们将逐个解答这些问题,首先让我们来澄清一下一些概念,更深入的了解内存。
那么,64位究竟算个什么玩意?首先我们简单的将其阐述一下,在后文中将会仔细进行深入的解释。现在我们只要理解,64位指的就是计算机处理它得到的数据(也就是words)的方式。
“Words”(通常由数据和处理数据的指令所组成)是计算机计算的关键因素,我们可以认为,一个计算机系统可以处理的word的大小很好的标志了它处理和组织数据的速度。可以处理的word越大,计算机处理器每时钟周期可以计算通过的数据信息就越多,或者可以对数据进行更多、更为复杂的计算。
word的概念比较复杂,所以我们下文将会深入的探讨,现在我们必须要了解,64位计算系统在理论上来说每时钟周期可以处理两倍的数据信息——当然这并不是简单意味着计算机的运行速度提升一倍。
虽然64位计算听起来像是一个新鲜的概念,实际上这只是对桌面计算而言是如此。在服务器领域,IBM的7030 Stretch计算系统是第一个64位的计算机系统,早在1961年就问世了,从那以后,64位系统在高端服务器、计算处理、超级计算机等领域就是百花齐放,可谓结出硕果累累。
即使在服务器领域,64位计算进入“平常百姓家”也花了很长的时间。1994年,Intel联手HP,宣布了他们第一个进入64位服务器领域的计划,一年之后,Sun推出了针对企业级工作站的SPARC 64位原生系统,64位计算才在整个服务器领域普及开来。
![]() |
| 安腾构架图 |
在六年之后的2001年,Intel与惠普联手研究的结果推出了强大的Itanium系列产品线,命名为“Itanic”,寓意着其在商业领域的旗舰地位。当然,这时候64位还是局限在服务器领域,桌面PC用户只有眼馋的份。
将64位计算带到桌面来的是AMD,他们在2003年发布了Opteron和Athlon 64系列支持64位的处理器,尽管这些处理器并不是基于“纯正”的64位构架(毕竟还要考虑与现有操作系统和软件的兼容),它们却可以支持64位指令的扩展集,名为x86-64。
当时最大的问题是,不管是纯正的64位还是x86-64,没有操作系统的支持它是无法发挥其64位计算优势的,一直以来,服务器领域的Unix、Linux系统虽然支持64位,但是毕竟桌面用户很少使用,2005年微软发布64位版本的Windows XP之后,x86-64才真正有了用武之地。另外Apple方面,OS X系统在Tiger版本之前也不支持原生64位,因为Mac使用的PowerPC处理器,包括G5在内都不是64位的,尽管G5可以处理一些64位的指令。
在我们深入之前,先让我们来了解一下一些64位计算的基本概念:
关于32位和64位,在我们探讨计算机程序员所说的“高层次”的差别(编程的差别)之前,先需要理解一些“低层次”的差别,我们要谈的焦点就是“word”。
正如我们此前解释的,一个word就是一组要被同时处理的数据信息组合,它可能是你运行的程序里的一些数据,也可能是处理这些数据的一个指令。大多数时候指令或数据都是很长的,所以会被分割成几个word来被CPU处理。
那么,如果一些指令很大,而一些指令很小,word的大小要多少才合适呢?它的决定因素是什么?
有些时候是历史、兼容方面的原因,另外还有一个很大的因素对其有决定作用,那就是处理器的寄存器(register)。
寄存器用来保存参加运算的操作数和中间结果,它是一个CPU可以同时处理的数据最大值。因为寄存器是CPU可以同时处理的最大数据长度,所以把word的大小设定为寄存器的大小就是很有必要的,这样一来,CPU就可以永远每次都处理标准同样大小的数据了。
以上是寄存器的原因,那么历史的原因是什么呢?其实就是因为,最早的x86处理器——8086,它的构架定为16 bits大小寄存器,这意味着每条指令、每块数据以及每个内存寻址都必须是16 bits的。
小提示:1汉字=2字节=16位=2byte=16bit
这些基本的老式处理器不像现在的处理器这么智能,它们不允许数据分成多个word来处理,使得处理器的处理能力受到了很大的限制(本来频率又低……),如果要处理的数据大于16 bits,它会被分割来处理,如果数据小于16 bits大小,就必须填充到16 bits大小处理器才可处理。
近年来处理器性能频率得到了极大的提升,也提出了“桥接word”的处理概念,但是x86构架处理器还是需要受16 bits大小word处理方式的限制。而为了满足我们对计算机处理大量数据的日益增长的需求,计算机工程师们就开发除了一种分段管线的处理概念——一次多发出几个16bit word来同时处理。
![]() |
| 寄存器 |
这个概念就产生了我们现在所听到的32位和64位的区别:一个32位的处理器可以同时处理双word数据(dwords),也就是两个16-bit数据同时处理;而一个64位处理器可以同时处理四个word数据(qwords),也就是四个16-bit数据被同时处理。
现代的处理器没有是直接利用16-bit word的,那么为什么还要保留这个古老的原则呢?答案很简单,这就是出于兼容性的考虑,x86构架的整个目的就是为了创建一个可以因循的标准,所以会带来很大的历史负担。一个真正的64位处理器(例如Itanium、SPARC等)一点都不知道如何处理16-bit word指令数据,正如同一个16位处理器不知如何处理64-bit数据一样——它们一点都不兼容。
我们已经谈过了CPU寄存器,现在来谈谈人们谈到64位就会说的的“内存问题”。
CPU寄存器的一个重要类型就是内存寻址,它只有一个word大小,而且不能被桥接起来使用,CPU处理的数据块“流出”CPU之前就是呆在CPU的内存寻址里的。
听起来很复杂?让我们来做一个比喻:你要到一个远方朋友的家里,你必须要座火车、地铁、飞机等,你先走路来到车站座火车,但是火车一般不能直接将你带到你要去的地方,通常你需要转车。你要到哪个车站?什么时间?在车站的时候你要到哪里去?
内存寻址就是用来解决这些问题的,它保存着CPU处理过的数据在“流出”CPU之后的地址信息,这样CPU再次要使用这个数据的时候就可以马上找到它。数据们通过各种总线来进入CPU,被CPU所处理、变换,但是一次运算通常是不够的,之后数据还需要被带到RAM来做以后的处理之用。
寄存器就是隐藏在数据的后面,当CPU需要某个数据的时候告诉它数据的位置。寄存器是一个word大小,所以word越大,寄存器存储的信息或者说地址组合就越多,处理效率也就更高。
如果你的CPU是32位的,安装了32位的windows XP系统,你升级内存到了4G,却发现系统只能看到有3.2G,这个诡异的现象就是寄存器的限制在作怪。一个32位的操作系统只能寻址最大4G的地址,除了内存地址之外,还有核心和进程以及保留未来虚拟内存的地址等,所以Windows XP SP2的用户不可能利用完整的4G系统内存容量。
我们已经解决了内存寻址的问题,不过还没有完。内存问题是64位计算的最为显著的不同之处,这也是我们文章开始就谈到它的原因。不过64位使用qwords来代替dwords计算意义很多,并不能简单理解为保存数据的空间地址更长了——它还意味着可以存储更长的数据,或者可以存储更为复杂的对数据进行运算的指令。
64位计算来到桌面平台有两个方式,一是AMD的AMD64,另外就是Intel的EM64T技术,其实Intel的EM64T技术大部分都是对AMD64技术的复制,所以它们之间的差别不大,而它们跟IA-64的差别却是很大的。IA-64是Intel的安腾指令集,这是处理器通用领域的唯一真正64位指令集,而AMD没有真正完全64位的处理器。
AMD早在2003年就推出了x86-64指令,而Intel在2004年年中Prescott系列处理器上才开始部署x86-64兼容技术,发布Core构架之后,Intel将其重新命名为“Intel 64”,在所有的Core处理器中部署。
AMD64和Intel 64为x86世界带来了很多好处,首要就是x86-64为程序员们带来了“相关指令指针(relative pointers)”的概念,指针在程序代码中(机器代码或汇编代码)告诉一个程序下一步如何走和如何获取数据。指针之前的运作方式是必须绝对的,也就是说程序需要知道具体的物理内存地址或寄存器位置。
这种编程方式会导致效率低下,因为你必须要绝对的了解某一时刻哪个内存地址和寄存器是闲置的,如果某些原因导致其已满或写入不稳定,程序就会因为保护原因崩溃。另外一方面也意味着小的程序片段无规律杂乱的塞满空闲内存空间和寄存器,而不是被有效的组织。
而使用相关指令指针之后,每个程序都将运行在它自己的“虚拟空间”里,而不是运行在绝对的内存寄存器位置。这使得程序的载入和载出性能在机器代码层次大幅提升,这会使得负荷深重的内存、CPU与32位系统相比速度大升!
![]() |
| AMD64是第一个x86-64技术 |
x86-64中引入的一项备受争议的指令集是“NX Bit”,这是一种CPU核心安全技术,是“No eXecute(禁止执行)”的简称,我们可以把它可作是将内存和寄存器地址加上了一个类似优盘的写保护按键,当一个内存或寄存器地址被标志为“数据类型”的时候,就不允许它执行了,仅供数据使用,只有被标志为“可执行的指令集”的才可被执行,这种措施可以防止流行的“缓冲区溢出”式恶意攻击(这是x86系统的一大弊端,自从286时代就有了),这种恶意攻击就是通过把恶意指令放到数据存储里来偷偷执行,从而控制电脑。NX bit技术以后或许可以被用来做成一种硬件层次的版权内容保护技术。
除此之外,32位的代码运行在64位的系统上也有不少性能好处,AMD和Intel的64位扩展指令都可使特定的32位指令同一时钟周期执行两个,从而使程序运行加倍——虽然并不是对所有的程序都有效,却可以有效加快普通程序的运行速度。
另外我们还需要明白,这些增强的指令、提升的数据大小和内存寻址等64位带来的优势,如果计算机系统的其它部件不能够传输的话,它是毫无用处的,具体就是说,数据在北桥、内存和CPU之间的传输必须是同样的数据宽度,这样64位的扩展才能真正带来计算是上的性能优势。
系统总线方面,幸运的是,总线宽度要比CPU的64位宽度还要大,所以总线不会成为瓶颈,Intel平台方面G915之后就可以支持完整的64位总线,AMD平台也从nForce 3芯片组之后开始完整支持。
在Intel平台,内存带宽可能会成为一个64位计算的瓶颈,因为Intel目前的CPU都没有集成内存控制器,所以当数据和指令要达到内存的之前,必须要通过北桥才可以,导致数据传输的一个延迟。
虽然集成了内存控制器,但是AMD的HyperTransport总线模式还是有它的缺陷:为了要执行32位操作,HyperTransport总线发出一对32-bit words,为了要把这两个word连接起来,每个word内的几个bit位需要用来作为识别标志位,这样除去链接bit和用来标志NX bit的bit位,64位总线只能最高使用40位的内存寻址了。
虽然从64位寻址降低到40位寻址是很大的,但是对于用户的实际使用需求来说还没有太大影响,目前的Operton具有40位物理寻址和48位虚拟寻址方式,可寻址1TB的物理内存和256TB的虚拟内存,大多数人的桌面系统内存要达到1TB似乎还需要很长的时间,即使是对于未来的128位计算系统似乎1TB内存寻址也足够了。
当然,除了技术上的巨大进步之外,现在的64位计算世界还有很多缺陷,其中最大的缺陷就是,如果用户想要获得64位计算带来的性能优势,就必须使用独立设计的64位应用程序,而现在绝大多数的应用程序还是针对32位设计的。
我们已经说过,64位的编程和32位的编程是完全不兼容的,如果你在一台x86-64处理器上安装的是32位的操作系统,你就完全得不到64位计算带来的好处,因为代码不会使用64位的特性编译,软件都是如此,如果它是用32位设计编程的,那它自始至终都是32位运行方式的。
所以,如果你想要尝试64位计算的话,首先要考虑安装一个适合的64位操作系统,操作系统是基本的软硬件打交道的东西,如果你的操作系统不是64位的,你不能指望它利用x86-64扩展,更不能运行任何64位的软件。
现代主流的操作系统几乎都有一个64位版本,Windows Vista的64位版在64位特性支持方面比Windows XP 64位版进步了很多,所以值得普通用户选择,另外Tiger、Leopard版本的MAC OS也是很好的64位系统。这些系统都是“混合式”的,它们提供了32位和64位的执行路径,可以执行两种指令,所以不需要你必须安装64位版本的所有应用程序。
因为提供了执行64位程序的能力,这些混合式操作系统可以很好的利用64位内存寻址,而为了让32位程序也可以访问高层的内存地址和64位指令的特定位,程序都要运行在类似模拟器的“保护空间”内。这样操作系统就保证了64位程序运行的高性能和32位程序的兼容性。
Linux/Unix/BSD操作系统则是不同,它们都有核心级别的特殊“64位only”版,而且开源团队都开发了很多64位的应用程序来运行。所以如果你想要尝试纯正的64位计算带来的性能提升,可以选择这些系统,他们会给你带来性能的提升、安全性的增强和编译程序方面的很多加强。
而应用程序方面,MAC和Windows 64位的用户却只有很少的选择,不过情况也在逐渐好转。目前Adobe的设计软件都有了64位版,一些3D建模等作图设计方面的软件也都积极响应64位计算,游戏方面,最早的是FarCry推出了64位的加强版,而Value的Source engine可以在64位平台上得到不小的性能提升。
![]() |
| FarCry 64位版 |
![]() |
| Source Engine |
前途是光明的,道路是曲折的,64位计算的普及就是如此。目前64位计算领域面临的最大障碍就是各种硬件制造商的驱动兼容问题(linux/Unix平台还有模块兼容问题),一些大的硬件厂商,例如Linksys、Creative等还没有恰当的64位驱动提供给用户,所以使用这些硬件的用户就不能使用64位了。
换用64位计算系统需要重新的编译或安装,一些不懂太多技术的家庭用户可能会视其为畏途,而一些公司企业的计算机系统也会出于兼容或硬件限制等方面的原因不能上马64位,这些都使得64位计算的市场普及速度大大降低。
这是因为如此,导致一些在业内很有影响力的硬件厂商们在64位驱动的开发上消极怠工。这对于一些板卡厂商的产品来说不是太大的问题,比如虽然Linksys没有提供64位驱动下载,但是他们的网卡产品大都是采用了Broadcomm和Railink的芯片,所以从芯片厂商的网站上我们也可以下载到可以用的驱动。Linux爱好者们早早就开始64位驱动的开发,所以硬件方面的奥秘已经被揭开了,笔者在五台不同的电脑上安装了64位Vista,结果没有遇到令人太过头疼的驱动问题。
我们还要注意的是,64位计算在很多地方都是超前的,所以在硬件方面你就需要付出比32位高的额外的代价。
首先,对于64位计算来说,它可以寻址更大的内存,而且另一方面讲,必须有足够大的内存给它寻址才会有意义。因为指针长度增加了,再加上保护空间等内容,使得每个指令、内存地址等需要更大的内存和缓存才可流畅运行。所以同样的程序,在32位版操作系统上可能需要100M空间来运行,而到了64位上则需要105~110M空间,64位时代你必须升级内存,处理器的缓存也要够大。
因为目前64位计算机和操作系统在商业领域的渗透不多,所以大部分软件还没有很好的进行兼容,不够随着32位电脑逐渐淡出人们的视线,更多的软件作者们会开始尝试新系统带来的优势的。
不管你在读本文之前是已经对64位计算有所了解还是完全不懂,我们希望本文为你提供了更多详细准确的64位计算的知识。尽管在大众领域64位计算还很年轻,但是在工业领域已经有很长的应用历史了。现代的处理器、芯片组、显卡以及操作系统等都开始了向64位时代的进化,当很多用户都有64位的基础平台之后,应用软件也将开始完全64位化。
![]() |
| intel扣肉已经全部支持Intel 64技术 |
现在部署64位系统,你已经可以在Adobe Photoshop、Maya、Vue Infinite以及一些CAD软件中得到好处,还有不少游戏也有性能提升。而到未来将有更多的程序充分利用64位的优势,双执行的32位指令运算速度将会更快,完整的4G内存支持,执行过程受保护,更加稳定,整体的系统效率都将大幅提升。
64位计算面临硬件需求、驱动、软件缺乏等问题,所以现在它还是一个“如果你已经有了这样的条件,你应该使用上”的方案,而不是一个“我还没有呢,我应该马上换上!”的方案。但是不管你是XP、Vista还是linux/Unix系列的用户,你都要明白,64位计算正在快速发展之中,而且带给你的好处不仅仅是更好的内存利用而已。
原文地址:http://www.bit-tech.net/bits/2007/10/16/64-bit_more_than_just_the_ram/1
| 相关新闻 | 热点新闻 |
| 光芒耀眼 华硕新推两款GPS产品 [重庆]回馈用户 宇达电通GPS低价 [重庆]蓝牙通讯GPS 易行天下PN10 再曝新款式 索尼爱立信K850蓝黑版 即将震撼发布 WM6.1操作系统多图 环保概念 诺基亚首款绿色手机311 |