K8神威终于显露!纯64位应用全球首测
测试标题K8神威终于显露!纯64位应用全球首测
2005年04月18日 00:00 作者:凤臣 编辑:常凤臣 文章出处:泡泡网原创
AMD在2003年秋天发布了他们的Athlon64系列处理器,将PC带入了64位运算的时代,从而揭开了64位运算的崭新一幕。
然而,这一幕却似乎有些遗憾在里面,64位的舞台已经搭建完毕,但是我们却不见舞台上的演员出现,让大家看到了一场没有演员的表演。
Athlon64的三大尴尬:
1. 没有操作系统支持。 虽然微软在Athlon64发布的时候临时推出了一个操作系统,但是这个操作系统是个测试版,而且距最终的发售版本差的有些远。
如何获取WinXP 64-bit beta版的官方说明(点击放大)
2.没有应用软件支持。 在操作系统尚不完备的时候,自然是没有Windows下应用程序的支持了,不要说真正能够实用的应用软件,甚至连一些测试64位性能的软件也是凤毛麟角般的少见。
3.游戏是雷声大雨点小。 对于个人用户,游戏是计算机的非常重要的功能,在Athlon64发布的时候,已经有多家游戏公司表示将推出64位的游戏,其中包括我们熟悉的UT2004以及后来的Farcry。然而,我们却没有见到过任何一个公司如约推出64位游戏,这倒不能怪这些游戏厂商,因为谁也不会在一个没有稳定的操作系统上花很大精力做一个游戏的。
但是,我们并没有看到我们非常喜欢的Athlon64系列的处理器带着悲伤离开,而是在处理器市场收到了广大消费者的喜爱。可以说Athlon64最终还是非常成功的,只不过这一成功并非单纯凭借其64位性能,那么它凭借的是什么呢?
Athlon64的成功之本:
1.Athlon64系列处理器支持32位运算。 这可以说是最重要一点,在没有64位运行环境和软件的情况下,消费者可以在目前的操作系统和软件上体验到Athlon64很好的性能。
2.Athlon64系列还支持其他的64位环境。 出了Windows,Athlon64系列以及它的同胞兄弟Opteron都支持其他的64位操作系统,比如Linux,FreeBSD等操作系统,这些系统由于源代码开放,所以安全性和效率非常高,是服务器第一选择的操作系统。
A64是毫无疑问的性能之王
3.Athlon64拥有出色的性能。 从2003年秋天到现在,Athlon64大家已经接触了有一年半的时间了。在这一年半的时间里,我们看到了各种Athlon64的测试,并且也亲身体验了Athlon 64的性能,Athlon64性能可以说让我们非常满意,无论是游戏性能或者是日常的办公应用,Athlon64都表现出了非常高的水平,就目前而言,Athlon 64 FX55仍然是拥有最好性能的处理器。
64位的处理器的推出,绝对是业界非常大的一次变革,其意义甚至比PCI-Express架构的推出更具有历史意义,因为PCI-E架构只不过是十年之变,而由32位转换为64位则是20年之变。
面对竞争对手的的这记重拳,Intel在最开始显得反而非常从容,是什么让他们能够这样?他们真的不慌么?
事情发展到了今天,我们也可以回头看看了,Intel当时并不是不慌,而是装作不慌,因为他们早早就将64位运算处理器纳入了日程。
在Prescott内核发布的时候,就有人放出了对核心图片的分析,一针见血的指出Prescott内核是支持64位运算的。这个消息让所有人都为之震惊,当然,除了Intel自己。
点击查看大图
但是,最初的Prescott并没有开启64位运算的功能,直到今天,Intel采用Prescott做出了P4 6XX系列的处理器,支持64位的运算。事实表明,Intel这一举动是正确的,因为在这一年半的时间里,Athlon64的64位性能对于普通的消费者几乎形同虚设。
有人说,这一切都是因为Intel在等着微软的64位操作系统的正式发布,因为过早的发布会带来同样的尴尬。
有人说,这一切都是微软在等着Intel,说微软在等着Intel把处理器能够做好了才发布操作系统。
那么,他们到底谁说的对呢?我们今天不妨来先安插一段小花絮,收集一下读者的意见。
其实无论是Intel在等微软,还是微软在等Intel,现实的情况却是AMD等了他们两个长达一年半的时间,也是广大的消费者等了他们一年半的时间。
不过值得庆幸的是我们终于等到了这一天,或者说是马上就要等到了。以下两件事情便能证明这一点:
1.微软的Windows XP X64位版本终于放出了RTM(Release To Manufacture)版本。
2.Intel将于近期发布其采用Prescott的P4 600系列处理器,这将是Intel首款在PC平台支持64位运算的处理器。
显而易见,凭借这两家软硬件巨头的加盟,便足以让我们听到64位运算来临的脚步声。
今天我们暂且不讨论Intel的P4 600系列的情况,我们先来谈谈Windows XP
的64位版本操作系统。毕竟离开了软件,硬件便只是一堆冷冰冰的机器而已。
作为目前世界上最大的软件公司,微软已经不再简单的是一个软件公司了,它已经成为一个帝国,一个能够一呼百应的软件帝国,一个能够制定游戏规则的帝国。虽然微软并不是唯一,Windows并不是唯一,我们还有很多选择,但是我们却不能否定微软以及Windows平台在整个IT业界的统治地位。
前面我们提到,微软在2003年就已经推出了64位的操作系统,不过那是一个很不完备的操作系统,其中带的DirectX还是8.1版本。而今天这个RTM版本的发布又意味着什么呢?让我们一起来看看……
在发布之后的很长的一段时间内,微软对于Windows XP 64位版本一直保持着不温不火的态度。在很长一段时间内,WindowsXP 64位版本一直保持着“Beta”的版本号,离成熟与普及还相差很远。
直到2005年,WindowsXP 64位版本再次引起了大家的注意,这主要是因为微软在2005年年初突然放出了Windows XP Professional x64 Edition RC1,RC就是Release Candidate(候选版本)的简称。
WinXP X64 RC1
RC版本的释放,代表着距离这款操作系统最终的发布已经不远了,人们开始再次关注起这个几乎被大家忘掉的操作系统。
没有等多长时间,Windows XP Professional x64 Edition RC2也发布了,按照微软的习惯来讲,通常是不会放出RC3的,RC2的发布说明距离正式版本的时间已经越来越接近了。果然,微软终于在近期放出了Windows XP Professional x64 Edition RTM(Release To Manufacture)版本,PCPOP评测室有幸在第一时间拿到了这个版本。
对于硬件和软件而言,处理器显然是平台,而操作系统则是演员。但对于操作系统和应用软件而言,真正要体现64位实力的还是要靠后者这些真正的“演员”。在硬件早已齐备,而操作系统也接近成熟的时候,我们的测试就决不能停留在之前的那种“在64位系统上运行32位程序”的状态。我们今天要对新的操作系统和我们熟悉的Athlon64处理器进行一次真正的64位之旅,也就是完全使用全新的64位应用程序对64位平台进行性能考验。
那么,现在的问题就是应用程序的问题了,那么到底有没有应用程序能够在64位系统上以64位指令集运行呢?答案是肯定的。
近日,我们拿到了来自AMD的测试软件包,其中就有一些能够在64位操作系统下运行的64位应用软件。这些64位应用软件包括:
1.NVIDIA Blobby Dancer
2.DivX Encorder
3.Mini-Gzip
4.RSA
5.Streams
为了让我们能够对64位的性能优势有一个更明确的了解,这些软件均同时提供了32位和64位两个版本,今天我们就用这些软件对Athlon64处理器进行一次真正的64位测试。
硬件系统
处 理 器
AMD Athlon64 4000+
主 板
华硕 A8V
内 存
威刚 DDR400 512MB × 2
硬 盘
Seagate 7200.7 60GB
显 示 器
爱国者 998FD
驱动程序
显卡驱动
NVIDIA Forceware 71.84 64bit 版本
操作系统
英文 Windows XP X64 SP1
英文 Windows XP SP1
这次我们的测试采用了三种方案以全面考证64位计算对软硬件系统的影响:
1.采用64位系统运行64位程序。
2.采用64位系统运行32位程序。
3.采用32位系统运行32位程序。
我们这样安排的主要目的就是想通过这样的测试了解到64位操作系统对32位程序的兼容性,以及在真正的64位环境下的优势。
我们都知道,处理器所处理的普通指令一般由操作码(OP Code)和操作数(Operand)组成。其中操作数可以是等待处理的数据,也可以是待处理数据的内存地址。而操作码则描述将要对操作数进行何种处理。
需要强调的是,通常所说的64位指令,并不是指指令的全长或操作码的长度为64位,而是指操作数所能达到的最大位数为64位。通过下面的图示,我们可以很好地理解64位指令和64位处理器的本质。
64位指令工作原理示意图
由于操作数一般需要存放在通用寄存器中,因此64位处理器通用寄存器的尺寸也必须是64位。这样我们就很容易理解K8处理器里通用寄存器结构的上半部分(指RAX-RSP部分,下半部分我们后边再提)。如下图所示:
K8通用寄存器的扩展,点击查看详图
从上面的图示可以看出,相对于传统的X86处理器而言,K8在进行64位扩展的时侯,把8个通用寄存器增加到了64位,同时增加了指令指针寄存器的位数为64位。
至于寻址方面,由于地址数据只不过是整数操作数中的一种,因此同样使用GPR。这样,64位处理器所能处理的地址数据长度自然就增加到了64位,从而大大增加了处理器的寻址空间。
当然,为了简化起见,以上我们所说的操作数,只不过是现代CPU所处理的操作数中的整数数据(地址数据)。它们由处理器中的ALU(算术逻辑单元)和AGU(地址生成单元)进行处理,一般使用通用寄存器(GPR)来保存。实际上,我们还需要处理通常保存在浮点寄存器、MMX以及XMM寄存器里的浮点以及其它多种数据。
不过,在我们进一步谈这些除了整数和地址数据外其它数据类型在64位处理器中的处理状况前, 我们必须首先了解一些有关寄存器和数据类型的基本知识。
我们知道:整数、地址、指令指针和浮点数据是按照数据形式来划分的,CPU所要处理的3种主要数据类型。此外我们还可以根据数据需要CPU进行处理的类型,来将它们分为标量数据和矢量数据两大类。
通常我们把需要CPU进行不同处理的单个数据称为标量数据(Scala Data)。标量数据既可以是整数数据,也可以是浮点数据。其中整数标量数据的存放区一般为通用寄存器(GPR),浮点标量数据的存放区一般为浮点寄存器(FPR)。
与标量数据相对的是矢量数据(Vector Data)。所谓矢量数据就是指一列需要由处理器作相同处理的数据集合。比如处理器在做MP3编码的过程中,需要对内存中的音频文件里的各字节数据作相同的MP3编码操作。那么通常使用MMX或SSE这类单指令多数据流(SIMD)指令,将数个字节打包为一组矢量数据,存放在MMX或SSE寄存器中,再送往相应的功能单元进行统一操作。
和标量数据一样,这些矢量数据既可以是整数数据,也可以是浮点数据。矢量数据以封包的形式批量存放在MMX(对于使用MMX、3DNow!进行操作的数据而言)和XMM(对于使用SSE、SSE2进行操作的数据而言)寄存器中。
通过下面的图,我们可以更好地了解标量数据和矢量数据的区别:
标量与矢量数据
以下,我们整理了标量数据和矢量数据在X86-32位处理器以及AMD的X86-64处理器中所用寄存器的具体区别如下表:
实际上,MMX和XMM通过寄存器映射的方法,也可以参与标量浮点数据的存储。同时数据类型也远不止整数、浮点这两类基本数据类型,还包括有指令指针数据、BCD数据,位数据等。要把这些情况一一说清,显然不是一两篇文章能解决得了问题的。
幸好,这些省略的部分与我们的结论并没有影响,因此我们叙述时使用了简化的措施。需要更详细完整的资料,您可以参考Intel的IA32以及AMD的X86-64架构编程指导书。
从上表我们可以看见,K8的64位扩展部分似乎仅对于整数、地址数据有效。对浮点和向量数据则仍然保持原样。
经过上面的分析,我们似乎可以得出这样的结论,那就是:我们能从K8向64位的扩展所获得的好处,只不过是可以在同样一条指令中,处理更大数值的整数数值以及管理空间更大的内存区域而已。而在32位的情况下,由于通用寄存器只能容纳最大32位的数据,因此显然要花费更多条指令对尺寸超过32位的数据进行处理。
这种改进对服务器、科学计算这样的领域虽然具有一定的意义,但显然并不是普通家用环境急需的改进。试问在近期普通应用中,有多少情况下会用到超过232这样大的整数数值和超过4GB的内存空间呢?
然而,如果你因此低估了K8和X86-64指令集的实力,那就大错特错了。
我们都知道,X86指令集本身属于一种复杂指令集(CISC)。长期以来,使用X86指令集的处理器架构一直沿用寄存器结构。 相比那些使用精简指令集(RISC)的处理器架构来说,由于程序可见的寄存器数量较少,因此造成传输延迟,性能以及流水线工作效率相对落后,从而给X86架构处理器的表现造成了影响。同时程序和编译器的优化难度也较大。
虽然近代的X86处理器中都增加了许多程序不可见的内部寄存器,并通过寄存器换名(Register Rename)技术变相地增大通用寄存器的数量,来弥补这一不足。然而这种措施由于只能通过处理器的硬件控制来实施,程序员无法根据需要来,灵活控制实际的寄存器使用状况,显然不如直接增加可见的通用寄存器来的有效。
而K8针对上述问题作出了改良。处理器在64位状态下工作时,增加了大量的程序员可见寄存器以供编程者使用,如下图:
X86-64的寄存器扩展(点击察看大图)
可以说,这些额外增加的寄存器(我们姑且称之为“寄存器扩展“吧),才是真正能为桌面用户带来的好处之所在!
不过,尽管如此,我们也只能在K8的64位模式下,才能全部用到这些多出来的寄存器扩展资源(紫色部分的寄存器)。因为为了兼容以往的X86指令,K8所用的X86-64指令集将其所支持的指令分成了如下表所示的数个部分:
如上表所见,前面我们所说到的令人激动的寄存器扩展功能,并不是“即插即用“的。它需要我们将操作系统向64位转换,同时重新按64位的编程规范编译应用程序。在其它模式下,我们根本无法享受到这些好处。
首先我们来看看来自NVIDIA的Blobby Dancer,这个软件是一个3D的程序,也是今天我们测试过程中唯一的一个3D程序。这个软件的内容是一个由液体组成的人在不断的跳舞,不同的系统能够导致不同的帧速率,这也是我们评判性能的标准。
这个软件中包含32bit版本和64bit版本两个部分,分作两个可执行程序。
测试方法:原本在NVIDIA提供的这个软件中是没有提供测试功能的,我们注意到,AMD提供的软件中包含有两个独立的可执行程序,这两个可执行程序会自动调用NVIDIA提供的应用程序进行测试。
测试的基准是记录一段时间的帧速率,取平均值,帧速率越高的性能越好。
我们看到,在这个测试中,64位系统体现出了非常好的性能,64位的程序能够比32位的程序成绩高30%以上。
同时我们注意到,在32位环境下运行的测试,成绩非常低,这起初让我以为是测试环境出了什么问题,但是后来通过3DMark检验,发现32位的系统并没有什么问题,在这个测试中仍然是这个成绩。
作为我们最为关心的项目,3D测试中我们看到64位的优势还是很大的,这样的情况大大增强了我们对于64位系统的信心,因为我们几乎可以预料到在全面64位化的时候,所有游戏的帧速率将提高30%,这是多么美好啊。
&nbV>
接下来我们看看DivX Encorder这个测试软件,这个软件的主要作用是将视频文件压缩成为MPEG-4视频,采用的编码方式是Divx 5.03。
这个程序是一个基于命令行的程序,需要用Windows的命令行程序进入。测试的基准是看压缩过程需要的时间,时间越短的性能越好。
DivX压缩的这个项目也是同样的重要,因为这是一个非常考验处理器性能的应用。在这个测试中,我们感受到了WinXP Pro X64的威力,在这个操作系统下,无论是采用32位的程序还是64位的程序,都有非常好的表现,甚至在32位程序运行的时候效率还要好一些。
不同的操作系统做同一件事情,效率能够相差一倍,这样的差距真的是非常大了。由此可见,WinXP X64版的性能还是非常令人满意的。
如果让我们注意一下具体的各个部分的情况,又能发现一些有意思的事情:
对于IO部分,操作系统对于成绩影响比较大,采用64位操作系统的性能要好。
对于编码压缩,程序的版本影响较大,64位的程序的性能要明显好于两个32位的程序。
第三个程序名叫Mini-GZIP,这是一个压缩工具,它采用的核心算法是
ZLIB 算法,这个软件的作用就是将文件进行压缩。
在这个软件的测试中,是将一个25MB的文本文件压缩,在这个过程中记录所需要的时间,时间越短性能越好。
在这个压缩程序的测试中,我们看到在纯64位环境下的性能仍然是最好的,而且是大幅领先于另外的两个程序。不过,我们在这个测试中发现,在纯32位模式下的成绩要好于在64位环境下使用兼容模式运行32位程序的成绩。
这也是一个测试软件,这个软件的主要作用是采用RSA加密算法,对文件进行加密。同样的,这个软件也需要命令行方式执行。
这个测试中有数个测试程序,我们分别运行了32位的版本和64位的版本以比较成绩的差别。在这轮测试中我们看到,在64位环境下运行64位程序,效能仍然是最好的,不过性能的差异没有前面的那些程序那样夸张了。
这个测试是我们看到的性能差距最小的一个测试,因为这个测试的主要内容是查看内存的带宽,和处理器的运算关系不是很大,所以这部分的成绩和硬件架构的关系更大。
不过也正是因为这样的成绩,才能够反映出A64架构中对于32位和64位两种模式都有非常好的兼容性,这大概就是A64能够在两种模式下都表现非常好的原因之一吧。
说实话,在这次测试之前,笔者自己都对这次的测试有所顾虑,因为我们并不知道在64位环境下的性能究竟会如何,不过通过我们的测试,当我们看到那些百分之好几十的领先幅度的时候,我们不禁为64位暗自叫好。
这次的测试软件是由AMD公司提供的,我们可以注意到,这些测试软件还是包含的比较全面的,从媒体处理,到3D游戏,从压缩编码,再到加密解密,可以说这次的测试包括了处理器常用的几个方面。
通过今天的测试,我们很明显的感受到了64位的威力,也明白了为什么AMD早早的就在64位上做出如此大的努力,同样也明白了Intel为什么也要转身投入64位的阵营了。
随着时间的推进,Intel的P4 6XX系列将于近期正式浮出水面,微软的WinXP X64操作系统的正式版也将于近期发布,这些信息都在预示着一件事,这就是真正的64位大战一触即发。
不过,对于这场大战,我们似乎还少了一些东西,这就是64位的应用程序,说是应用程序,其实初期也就是测试程序,如何能够全面反映出64位系统下的性能,单单靠今天我们的这几个软件是不够的。目前已经有越来越多的测试程序放出了64位的版本,我们PCPOP的处理器频道(CPU.PCPOP.COM)将随时关注这些信息,在第一时间给大家带来最新最公正的测试。
0人已赞
关注我们