搜索文章:

首页  |  Java技术  |  Asp.net  |  Asp编程  |  VC/C++  |  Delphi  |  VB编程

新手充电:“带宽”家族的故事

一天,菜鸟笨笨红肿着眼睛跑进q博士诊所,说“挨打”了,q博士当即义愤填膺,表示要替菜鸟笨笨出这口气,菜鸟笨笨却破涕为笑:“偶跟人家打cs,画面的速度和精度总是比不上人家,结果每次被bt(爆头)的都是偶,还有屏幕一闪一闪的,几个回合下来,眼睛就受不了了……明明大家使用的都是mx440显卡嘛,呜呜!”q博士笑得前俯后仰:“呵呵!原来是‘带宽’欺负了你,下面就让我给你补上这一课吧。”
一、无处不在的带宽
  菜鸟笨笨:带宽这个名词听上去很抽象哦,究竟何谓带宽呢?它跟硬件性能又有什么样的关系?
  q博士:这里我打个比喻,带宽其实就像高速公路的路面宽度和允许的最大车速,而数据流则相当于公路上的车流(图1)。当车的数量很少时,路面宽一些和窄一些,对车速都没有任何影响;随着车流的逐渐增大,直至某个临界点,路面宽度对车流量的影响才一下子凸现出来,路面窄的话,就不能让更多的车辆在同一时间内通过,甚至造成大塞车。当然,我们也可以提高允许的最大车速,这样也能使得在单位时间内通过更多的车。
screen.width-300)this.width=screen.width-300 border=0 alt=click to open in new window>

图1
  有了上面这个形象的比喻,相信你就不难理解带宽了吧,从专业的角度去描述,带宽的意思是指波长、频率或能量带的范围,特指以每秒周数表示频带的上、下边界频率之差。也就是说带宽是用来描述频带宽度的,但是在数字传输方面,也常用带宽来衡量传输数据的能力,例如用它来表示单位时间内传输数据容量的大小、数据吞吐的能力。
对于很多配件来说,带宽都是决定其性能的重要参数之一,从机箱内主板的总线频率、内存、显卡,机箱外的显示器乃至网络,带宽的身影可谓无处不在。
二、系统总线和内存的带宽
  菜鸟笨笨:先给我具体解释一下系统总线和内存的带宽吧。
  q博士:好的。首先我们来看系统的工作过程。当cpu接收到用户的指令后,它会最先向cpu中的一级缓存(l1 cache)去寻找相关的数据,一级缓存里没有的数据,cpu会继续向下一级的二级缓存(l2 cache)寻找,由于一、二级缓存的容量有限,命中率很低,因此再向下就到达内存,最后才是硬盘。这里我们可以将内存看作是内存控制器(一般位于北桥芯片中)与cpu之间的桥梁或仓库。显然,内存的容量决定“仓库”的大小,而内存的带宽决定“桥梁”的宽窄,两者缺一不可,这也就是我们常常说道的“内存容量”与“内存速度”。
  由于目前系统处理的数据量都是相当巨大的,几乎每一步操作都得经过内存,它也是整个系统中工作最为频繁的部件。因此在内存容量一定的前提下,内存的带宽就在一定程度上决定了这个系统的表现。可光有内存的高带宽还不行,既然主板是cpu和内存的载体,因此其对内存带宽存在着一个“高度限制”,这就是我们平常所说的外部总线频率,或前端总线(fsb)。
  菜鸟笨笨:哦,这就是说,前端总线(fsb)频率是直接影响cpu与内存数据交换的速度,我买了高带宽的内存条子,还得有“高带宽”主板来支持,是这样吗?
  q博士:聪明!这就涉及到cpu、主板和内存之间的搭配问题。目前pc机上所能达到的前端总线频率有266mhz、333mhz、 400mhz、533mhz、800mhz几种,fsb与内存带宽相等的情况下,则不存在瓶颈问题,如果内存带宽小于fsb则形成内存带宽瓶径,就无法完全发挥系统的性能(图2)。
screen.width-300)this.width=screen.width-300 border=0 alt=click to open in new window>

图2
 因此对于intel的主流平台,如赛扬4和老p4的外频均为为100 mhz,其fsb为400 mhz,数据带宽为3.2gb/s,应该使用ddr400或双通道ddr200以上;p4b和赛扬d的外频为133 mhz,其fsb为533 mhz,数据带宽为4.2gb/s,应该使用ddr533或双通道ddr266以上;p4c、p4e已及新p4a的外频为200 mhz,其fsb为800 mhz,数据带宽为6.4gb/s,应该使用双通道ddr400以上。对于amd的主流平台,athlon xp外频分为133 mhz、166 mhz、200 mhz,应该分别使用ddr266、ddr333、ddr400内存。
菜鸟笨笨:上面你提到fsb为400mhz的时候,数据带宽为3.2gb/s,具体是怎么计算的呢?
  q博士:这里给你一个计算数据带宽的公式:带宽=工作频率×总线宽度/8(计算带宽时位和字节的换算)。sdr和ddr都是64bit的总线宽度,只是ddr可以在时钟信号的上升沿和下降沿都传送数据,因此计算得到的相应带宽要×2。因此我们可以得到以下结果:
  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(图3),就是芯片组可以在两个不同的数据通道上分别寻址、读取数据。这两个相互独立工作的内存通道是依附于两个独立并行工作的,位宽为64bit的内存控制器下,因此使普通的ddr内存可以达到128bit的位宽,因此,内存带宽是单通道的两倍,因此:
screen.width-300)this.width=screen.width-300 border=0 alt=click to open in new window>

图3
  双通道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
   菜鸟笨笨:经你这么一说我就明白许多了,呵呵!但我在选购内存的时候,如何识别产品的内存带宽呢?
   q博士:这比较简单,例如对于目前主流的ddr内存来说,可分为ddr266、ddr333、ddr400,一直到ddr533。其中后三位数字代表其工作频率。通过内存条上的标识(图4),可以很方便地识别出其规格。需要指出的是,超过400mhz的都是非标准的内存规格,例如 ddr533,目前还没有可与之配合的cpu推出,只能通过超频实现。
screen.width-300)this.width=screen.width-300 border=0 alt=click to open in new window>

图4
三、显存带宽
  菜鸟笨笨:还是回到我那个麻烦事吧,为什么被“爆头”的总是我?难道这也与带宽有关?
  q博士:哈!这就是我正想说的,关于显存带宽的问题。从上面给出的带宽计算方法可知,带宽不仅和时钟频率有关,还和存储单元的数据总线位数有关。显存在显卡上发挥着重要的作用,而各种显卡芯片支持显存的位数也是有差异的。现在让我来看看你的显卡……嗯,采用图形芯片是geforce 4 mx440(图5),理论上支持128bit的显存,可是……
screen.width-300)this.width=screen.width-300 border=0 alt=click to open in new window>

图5
  菜鸟笨笨:可是什么了?你快说说吧!
q博士:说出来你可别生气。有些厂家为了把产品的市场价格打得更低,吸引贪图便宜的消费者注意,就在显存上进行“缩水”,推出了显存位数仅有标准产品一半的“经济型”显卡。例如你用的这款显卡,虽然和标准版一样是使用6ns的显存,但由于显存位数是64位,显卡的显存带宽只有166mhz ×64位/8=1.3gb /s。因此其性能在理论上只有标准产品的一半,在运行要求较高的3d游戏时,纹理、材质的渲染速度跟不上,画面出现延迟的现象就不足为怪了。
  菜鸟笨笨:呜呜!原来是上了js的当,可现在什么都晚了,q博士快教我以后怎么识别这种缩水显卡啊。
  q博士:亡羊补牢,未为晚也。这里教你认识两种不同封装的显存:microbga封装的显存颗粒,基本成正方形,并没有引脚外露(图6)。为 tsop封装的显存颗粒,成矩形,引脚是外露的(图7),因此从外观上我们就可以很轻易地区分出这两种显存。就目前市场上的产品来说,采用 microbga封装的显存颗粒,每颗的带宽一般是32bit,板载4颗的话,一共就是足量的128bit了;而采用tsop封装的显存一般都是 16bit的,这样一共需要8颗才能达到标准的128bit,通常是平均分布在pcb板的正反两面。像你这块显卡,采用的是tsop封装的显存,但只在正面集成了四颗,故一共只有16bit×4=64bit。
screen.width-300)this.width=screen.width-300 border=0 alt=click to open in new window>

图6
screen.width-300)this.width=screen.width-300 border=0 alt=click to open in new window>

图7
四、显示器的带宽
  菜鸟笨笨:我发现我的屏幕也很闪啊,看一会眼睛就觉得累,这又是怎么回事?
  q博士:这种现象一般是由于屏幕的刷新率太低造成的。排除用户设置的原因,刷新率主要受显示器带宽的制约。
  何谓显示器的带宽呢?它是指显示器每秒钟所扫描的像素数量,也就是说在单位时间内,每条扫描线上显示的像素点的总和,单位是mhz(兆赫兹)。带宽代表的是显示器的一个综合指标,也是衡量一台显示器好坏的重要指标。这里指的主要是crt显示器,液晶显示器因为采用了不同的显示原理,所以带宽的重要性并没有crt突出。
  菜鸟笨笨:那显示器的高带宽对我们到底有什么好处呢?
  q博士:高带宽意味着在同一分辨率下(例如1024×768)可以实现更高的屏幕刷新率。大家知道,在使用crt的时候,为保证长时间注视屏幕而眼睛不疲劳,刷新率最低也要调到75hz,一般都要调到85hz才能满足使用要求(图8)。
screen.width-300)this.width=screen.width-300 border=0 alt=click to open in new window>

图8
  而对于lcd来说,由于液晶板本身并不发光,只是液晶分子控制光线的偏转或通过,发光的是背光源,即荧光灯管,在使用的时候即使把刷新率调到 60hz你也不会感到屏幕在闪烁,“刷新率”对lcd来说已经没有多大意义了。当然,我们也可以反过来说,高带宽在同一刷新率下(例如85mhz)可实现更高的屏幕分辨率、较高的图像稳定性和更真切的信号通道。因此我们在购买17寸crt显示器时,最低也得要求其带宽为110mhz,这时显示器在1024 ×768的标准分辨率下,最高可以设置为85hz的刷新率,人眼不会感觉到屏幕在闪烁。当然,如果你像q博士一样,习惯采用1280×1024的分辨率,则你至少要选择带宽为202mhz的产品。
五、网络带宽
  菜鸟笨笨:如果我玩的是网络对战游戏,那网络带宽对游戏速度也会有影响的吧?
  q博士:呵呵!懂得举一反三了,不错!不过在通讯和网络领域中,带宽的含义与上述所说的带宽在本质上有些差别,它指的是网络信号可使用的最高频率与最低频率之差,或者说是“信道带宽”(bandwidth)。
  我们同样可以用高速公路来作比喻:在高速路上,它所能承受的最大交通流量就相当于网络的数据运输能力,而这条高速路允许形成的宽度就相当于网络的带宽。显然,带宽越高,数据传输可利用的资源就越多,因而能达到越高的速度;除此之外,我们还可以通过改善信号质量和消除瓶颈效应实现更高的传输速度。因此上网速度的快慢也不一定全是由于带宽小造成的,它还同设备(如modem)的速度、isp的承受能力、所访问网站的人数等等因素有很大的关系。

()

相关文章:
© 2006   www.java-asp.net