[分析]真真假假?论Nocona的64位真实性
作者: 来源: 添加时间:2006-5-23 13:13:23最近有网友在论坛发贴说看到了这篇关于Nocona的新闻稿:“……(Intel宣称):Intel始终将安腾处理器作为IA64产品,而新至强始终被定位为32位处理器。目前众多服务器厂商将新至强作为64位处理器,都只是服务器厂商的行为,与Intel的市场策略无关……”,所以对Nocona是否为64位的处理器产生怀疑。那么到底Nocona到底是不是64位的处理器呢?回答是肯定的,Nocona的的确确是64位处理器,但是这个问题并不是这么简单,因为CPU的64位有着太多错综复杂的技术问题在里面。
★要清楚的分析这个问题还得从CPU的工作原理谈起:
先来看看CPU的内部结构:
CPU内部的工作单元可以分为算术逻辑单元ALU(Arithmetic Logic Unit)、寄存器组 RS(Register Set或Registers)、控制单元(Control Unit),要进行后面的讲解,还得逐一介绍一下每一部分的功能:
1.算术逻辑单元ALU:它运算器的核心,以全加器为基础,辅之以移位寄存器及相应控制逻辑组合而成,在控制信号的作用下可完成加、减、乘、除四则运算和各种逻辑运算,所以CPU处理数据和指令的模块就是ALU。
2.寄存器组RS:寄存器里面保存着那些等待处理的数据,或已经处理过的数据,由于CPU访问寄存器所用的时间要比访问内存的时间短,所以采用寄存器,可以减少CPU访问内存的次数,以此提高效率。
3.控制单元CU:它是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器0C(Operation Controller)三个部件组成,它工作是首选从存储器中取出各条指令,然后确定应该进行什么操作,最后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。
接着我们来分析一下CPU的工作流程:
首先是应用程序的指令(编译后的2进制指令)被送到控制单元中,指令译码器从指令寄存器IR中拿来指令,翻译成CPU可以执行的形式,然后决定完成该指令需要哪些必要的操作,它将告诉算术逻辑单元(ALU)什么时候计算,告诉指令读取器什么时候获取数值,告诉指令译码器什么时候翻译指令等等。
假如数据被送往算术逻辑单元,数据将会执行指令中规定的算术运算和其他各种运算。当数据处理完毕后,将回到寄存器中,通过不同的指令将数据继续运行或者通过DB总线送到数据缓存器中,当处理好的数据被交到存储单元就代表本次工作的结束。
★那么,CPU的位数是怎么回事?为什么64位处理器和32位处理器会存在性能上和通用性方面的区别呢?
是这样,我们说的一个位(bit)指的就是二进制数字中的一个位数,如“0011”这样一个二进制数据就是4位的,而“10110111”就是8位的,计算机中的数据和指令都是使用二进制表示,内存地址也是按二进制编排,如果一个CPU32位的内存地址寄存器,那么它就可以直接对长度为32位的二进制内存地址进行操作,可能是从这个地址所对应的内存存储单元上读取或者是写入一个字节(8位)的数据,由于地址长度是32位,所以这个地址数据的最大值为2的32次方(这个是基本的二进制计算知识,不了解二进制计算的朋友可以按计算器试试),而这个地址的1个基本单位是对应1个8位的内存存储空间(1个字节,Byte),所以32位CPU最大的直接内存寻址能力为2的32次方个字节,合约4G个字节,这就是为什么很多服务器都需要通过双CPU方式来获得大于4GB的内存寻址能力;而64位的CPU当然就可以支持2的64次方个字节的内存,这个数算出来实在太大,找不到一个用来表示它的单位,不过,64位的寻址能力绝对不止是Nocona产品资料上标着的256TB(记得还有媒体报道说64位CPU的内存寻址能力是8G,呵呵,这个就比较糊涂了),我们可以这样来算,1T=1024G,而1G是2的30次方,所以256T也只是2的48次方,很显然,64位的内存寻址能力远远大于这个所谓的256TB,当然,目前还没有任何一台服务器需要用到这么多的内存。
那么,很多媒体所报道的256TB又是怎么一回事呢?
其实是这样,AMD的X86-64和Intel的EM64T技术都是在X86-32技术上升级过来的,不像安腾和Power G5是一种脱胎换骨的纯64位技术,现在这两种技术都是只能支持40位大概1TB的物理内存寻址和48位大概256TB的虚拟内存寻址,这个寻址能力比我们刚才计算的真正的64位寻址能力差了XXXX倍(论坛语言习惯,意为很多很多),所以有人质疑应不应该把采用X86-64技术的Opteron和采用EM64T技术的Nocona列为64位处理器也是不无道理的。
既然这样,那有些媒体和经销商宣称Opteron和Nocona具备64位寻址能力又是怎么一回事?
情况有两种:一个是明知故犯,他们也知道在寻址方面这两种处理器根本达不到64位的要求,但是还是按照理论值找个含糊的说法说出来,也就是为了达到炒作的目的;另一个原因就是理所当然的以为采用64位技术的CPU就是支持64位寻址的,也算“难得糊涂”。
也就是说Opteron和Nocona都不具备真正的64位寻址能力,那为什么又说它们使用了64位技术?
是这样的,它们确实不支持2的64次方寻址,但是它们的ALU(请对照前面介绍的算术逻辑单元)是64位的,所以它具备64位处理器的运算能力,也确实比32位处理器拥有更加强悍的性能,为什么64位CPU的处理能力会比32位的强?举一个简单点的例子:假设存在一个浮点数,它占用的位数是64位,那么在一个32位的ALU中对这浮点数据进行运算的话就得分2次进行(严格的说不止两次,这里为了方便易懂,简单当作两次),而在64位的ALU中只需要一次运算就可以完成(严格的说也不是一次,按照刚才的简化原则当作是一次),所以64位的ALU在很大程度上决定了一个处理器是不是64位的,当然,纯正的64位处理器还要求寄存器、内存控制器都是64位的。
因此,Opteron和Nocona虽然都不具备真正的64位寻址能力,但是它们的ALU都是64位的,性能也确实大幅高于32位的产品(在操作系统和驱动、软件都支持64位的情况下),所以也可以说它们使用的是64位技术。
★通过上面的介绍,大家应该明白为什么媒体和经销商都说Nocona是64位产品,但Intel却说它不是真正的64位处理器了吧。其实严格说起来,EM64T和X86-64都不是标准的64位技术,只有Intel的安腾处理器和IBM的Power G5才是纯粹的64位。不过,由于Nocona的性能确实比上一代Xeon增强了,而且还有相应的新一代主板和内存技术与之配套,加上处理器的内存寻址能力也确实大大突破了4G的限制,最重要的是它完全可以正常运行64位的操作系统和64位软件,所以从应用角度从发,我们认为目前Nocona在使用时基本与一款地道的64位处理器无异,可以认为它就是一款64位处理器。