第1个回答 2014-02-16
一、 内存带宽的基础知识
1. 何谓内存带宽
从功能上理解,我们可以将内存看作是内存控制器(一般位于北桥芯片中)与CPU之间的桥梁或与仓库。显然,内存的容量决定“仓库”的大小,而内存的带宽决定“桥梁”的宽窄,两者缺一不可,这也就是我们常常说道的“内存容量”与“内存速度”。除了内存容量与内存速度,延时周期也是决定其性能的关键。当CPU需要内存中的数据时,它会发出一个由内存控制器所执行的要求,内存控制器接著将要求发送至内存,并在接收数据时向CPU报告整个周期(从CPU到内存控制器,内存再回到CPU)所需的时间。毫无疑问,缩短整个周期也是提高内存速度的关键,这就好比在桥梁上工作的警察,其指挥疏通能力也是决定通畅度的因素之一。更快速的内存技术对整体性能表现有重大的贡献,但是提高内存带宽只是解决方案的一部分,数据在CPU以及内存间传送所花的时间通常比处理器执行功能所花的时间更长,为此缓冲区被广泛应用。其实,所谓的缓冲器就是CPU中的一级缓存与二级缓存,它们是内存这座“大桥梁”与CPU之间的“小桥梁”。事实上,一级缓存与二级缓存采用的是SRAM,我们也可以将其宽泛地理解为“内存带宽”,不过现在似乎更多地被解释为“前端总线”,所以我们也只是简单的提一下。事先预告一下,“前端总线”与“内存带宽”之间有着密切的联系,我们将会在后面的测试中有更加深刻的认识。
�2. 内存带宽的重要性
内存带宽为何会如此重要呢?在回答这一问题之前,我们先来简单看一看系统工作的过程。基本上当CPU接收到指令后,它会最先向CPU中的一级缓存(L1 Cache)去寻找相关的数据,虽然一级缓存是与CPU同频运行的,但是由于容量较小,所以不可能每次都命中。这时CPU会继续向下一级的二级缓存(L2 Cache)寻找,同样的道理,当所需要的数据在二级缓存中也没有的话,会继续转向L3 Cache(如果有的话,如K6-2+和K6-3)、内存和硬盘。由于目前系统处理的数据量都是相当巨大的,因此几乎每一步操作都得经过内存,这也是整个系统中工作最为频繁的部件。如此一来,内存的性能就在一定程度上决定了这个系统的表现,这点在多媒体设计软件和3D游戏中表现得更为明显。3D显卡的内存带宽(或许称为显存带宽更为合适)的重要性也是不言而喻的,甚至其作用比系统的内存带宽更为明显。大家知道,显示卡在进行像素渲染时,都需要从显存的不同缓冲区中读写数据。这些缓冲区中有的放置描述像素ARGB(阿尔法通道,红,绿,蓝)元素的颜色数据,有的放置像素Z值(用来描述像素的深度或者说可见性的数据)。显然,一旦产生Z轴数据,显存的负担会立即陡然提升,在加上各种材质贴图、深度复杂性渲染、3D特效,其工作量可想而知。在更多情况下,显存带宽的重要性超越了显存容量,这点我们将在后文的测试中有详细说明。
3.如何提高内存带宽
内存带宽的计算方法并不复杂,大家可以遵循如下的计算公式:带宽=总线宽度×总线频率×一个时钟周期内交换的数据包个数。很明显,在这些乘数因子中,每个都会对最终的内存带宽产生极大的影响。然而,如今在频率上已经没有太大文章可作,毕竟这受到制作工艺的限制,不可能在短时间内成倍提高。而总线宽度和数据包个数就大不相同了,简单的改变会令内存带宽突飞猛进。DDR技术就使我们感受到提高数据包个数的好处,它令内存带宽疯狂地提升一倍。 当然,提高数据包个数的方法不仅仅局限于在内存上做文章,通过多个内存控制器并行工作同样可以起到效果,这也就是如今热门的双通道DDR芯片组(如nForce2、I875/865等)。事实上,双通道DDR内存控制器并不能算是新发明,因为早在RAMBUS时代,RDRAM就已经使用了类似技术,只不过当时RDRAM的总线宽度只有16Bit,无法与DDR的64Bit相提并论。内存技术发展到如今这一阶段,四通道内存控制器的出现也只是时间问题,VIA的QBM技术以及SiS支持四通道RDRAM的芯片组,这些都是未来的发展方向。至于显卡方面,我们对其显存带宽更加敏感,这甚至也是很多厂商用来区分高低端产品的重要方面。同样是使用DDR显存的产品,128Bit宽度的产品会表现出远远胜过64Bit宽度的产品。当然提高显存频率也是一种解决方案,不过其效果并不明显,而且会大幅度提高成本。值得注意的是,目前部分高端显卡甚至动用了DDRII技术,不过至少在目前看来,这项技术还为时过早。
4.如何识别产品的内存带宽
对于内存而言,辨别内存带宽是一件相当简单的事情,因为SDRAM、DDR、RDRAM这三种内存在外观上有着很大的差别,大家通过下面这副图就能清楚地认识到。唯一需要我们去辨认的便是不同频率的DDR内存。目前主流DDR内存分为DDR266、DDR333以及DDR400,其中后三位数字代表工作频率。通过内存条上的标识,自然可以很方便地识别出其规格。相对而言,显卡上显存带宽的识别就要困难一些。在这里,我们应该抓住“显存位宽”和“显存频率”两个重要的技术指标。显存位宽的计算方法是:单块显存颗粒位宽×显存颗粒总数,而显存频率则是由"1000/显存颗粒纳秒数"来决定。一般来说,我们可以从显存颗粒上一串编号的最后2两位看出其纳秒数,从中也就得知其显存频率。至于单块显存颗粒位宽,我们只能在网上查询。HY、三星、EtronTech(钰创)等都提供专用的显存编号查询网站,相当方便。如三星的显存就可以到如下的地址下载,只要输入相应的显存颗粒编号即可