另外我们还需要明白,这些增强的指令、提升的数据大小和内存寻址等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位平台上得到不小的性能提升。
|