smartview:什么叫内存带宽

来源:百度文库 编辑:高校问答 时间:2024/05/10 19:51:34

一、 内存带宽的基础知识

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(钰创)等都提供专用的显存编号查询网站,相当方便。如三星的显存就可以到如下的地址下载,只要输入相应的显存颗粒编号即可(http://www.samsung.com/Products/Semiconductor/DRAM/index.htm)。此外,使用RivaTuner也可以检测显卡上显存的总位宽,大家打开RivaTuner在MAIN菜单即可看到。

现在的单通道内存控制器一般都是64bit的,8个2进制bit相当于1个字节,换算成字节是64/8=8,再乘以内存的运行频率,如果是DDR内存就要再乘以2,因为它是以sd内存双倍的速度传输数据的,所以
DDR266,运行频率为133MHz,带宽为133*2*64/8=2100MB/s=2.1GB/s
DDR333,运行频率为166MHz,带宽为166*2*64/8=2700MB/s=2.7GB/s
DDR400,运行频率为200MHz,带宽为200*2*64/8=3200MB/s=3.2GB/s

所谓双通道DDR,就是芯片组可以在两个不同的数据通道上分别寻址、读取数据。这两个相互独立工作的内存通道是依附于两个独立并行工作的,位宽为64-bit的内存控制器下,因此使普通的DDR内存可以达到128-bit的位宽,因此,内存带宽是单通道的两倍,因此
双通道DDR266的带宽为133*2*64/8*2=4200MB/s=4.2GB/s
双通道DDR333的带宽为166*2*64/8*2=5400MB/s=5.4GB/s
双通道DDR400的带宽为200*2*64/8*2=6400MB/s=6.4GB/s
关于瓶径问题:
CPU与北桥芯片之间的数据传输速率称前端总线(FSB),对于intel的主流平台,其采用Q/P总线技术,FSB=CPU外频*4,如赛扬4的外频为100,其FSB为400,数据带宽为3.2GB/s,P4A的外频为100,其FSB为400,数据带宽为3.2GB/s,P4B的外频为133,其FSB为533,数据带宽为4.2GB/s,P4C、P4E的外频为200,其FSB为800,数据带宽为6.4GB/s,对于AMD的主流平台,其采用EV6总线技术,FSB=CPU外频*2,对于Athlon XP,其外频为133,166,200,对应的FSB分别为266,333,400,数据带宽分别为2.1,2.7,3.2GB/s

FSB与内存带宽相等的情况下,则不存在瓶径问题,如果内存带宽小于FSB则形成内存带宽瓶径,无法完全发挥系统的性能。

因此对于对于intel的主流平台,如赛扬4的外频为100,其FSB为400,数据带宽为3.2GB/s,应该使用DDR400或双通道DDR200以上,P4A的外频为100,其FSB为400,数据带宽为3.2GB/s,应该使用DDR400或双通道DDR200以上,P4B和C4D的外频为133,其FSB为533,数据带宽为4.2GB/s,应该使用DDR533或双通道DDR266以上,P4C、P4E的外频为200,其FSB为800,数据带宽为6.4GB/s,应该使用双通道DDR400以上,对于AMD的主流平台,Athlon XP,其外频为133,166,200,应该分别使用DDR266,DDR333,DDR400,在这个平台上没必要使用双通道内存。
参考资料:http://myweb.jsphome.com/bbs/read.php?tid=469&page=e