CPU一次只能对一个物理BANK进行访问和操作(因为一个物理BANK是64bit的位宽),那么内存条要保证一个周期内向数据总线提供或接收64bit的数据,而这些数据都是分别存储在内存条的的芯片中。那么内存条中有多个内存芯片,这64位数据到底是有一个芯片提供还是由所有芯片每个提供一部分呢?我们还是以上面的那颗256Mbit的芯片为例,根据芯片组的工作原理,目前还没有那家芯片生产厂家做出位宽16位以上的芯片,所以现在的芯片组设计时都是要求内存条上每个芯片均承担提供数据的任务,也就是说内存条上的每个芯片都要要对这64位数据做贡献,而那颗内存芯片的位宽是8位,因此用这个芯片组成内存条只需要8颗芯片即完成了64位数据并发任务,算下来,内存条的容量就是32 MB (256Mbit)×8=256MB的容量,假如是内存芯片的位宽是4位,那么需要的芯片数量必须是16颗,这时假如使用八颗位宽还是8位的64MB(512bit)芯片(单个芯片的总容量翻了一番)组装,尽管内存条上的总容量达到了256MB的要求,还是由于位宽不够是不能正常工作。要能工作就必须采用16位位宽的64MB(512bit)芯片。
586以上电脑的数据总线宽度都是64bit,即每次读取内存为64bit,SDRAM内存条的设计带宽也是64bit,内存条的带宽为条上各个内存芯片的带宽之和,基本条件为带宽之和应等于64bit或其倍数。假如出现了各个芯片位宽之和等于128。则分成两个64位,当读取一个64位部分时,另一个64位部分就不能读取,通常很多厂家就分别将这两部分放在内存的两面上。这就造成了许多人的错觉:双面是两个BANK的,单面是一个BANK的。实际根本不能这样认识,比如大度256MB内存,尽管两面16个芯片,但是由于内存芯片的位宽是4位(32Mbit×4),所以必须要有4×16=64才能达到系统所要求的位宽。这时由于芯片大小的限制,不可能将16颗芯片都放在一面上,所以只能设计成双面。对于64Mbit芯片 (4M*16) 来说,芯片带宽16bit,8颗芯片带宽=16*8=128bit(即两个BANK),4颗芯片带宽=16*4=64bit(即一个BANK)。两个物理BANK的情况只有出现在位宽超出了64位的情况下(即位宽出现了富余),由于芯片组任一时刻只能处理一个64位,所以才分成两个物理BANK。今后随着新一代数据总线位宽的提高,也许CPU的胃口就不是一次只能64位数据了,可能是128位甚至更多。
另外我们常说的内存交错设置并不是指的物理BANK的交错。也就是说不是内存条双面的交错,而是指内存芯片内部逻辑BANK的交错,如果芯片有4个BANK,那么就可以进行4路交错,如果只有两个BANK就只能是二路交错。很多资料介绍的以内存条的单面或双面来决定交错是错误的,实际上就是混淆了物理BANK和逻辑BANK的区别。
三.有关内存BANK的几个常见问题释疑
我们透彻地了解了上面介绍的物理BANK和逻辑BANK的概念之后,就不难对目前有关动态内存的几个热点问题做出解释了。
1.大容量内存不能为某些主板正确识别原因
系统在启动时,主板的北桥芯片会侦测这些内存条的参数,如果果发现位宽不支持,则终止检测,系统就挂了。因为位宽决定了一次CPU一次向内存芯片传递的数据量,只能一次64位数据并发。接下来检测BANK的单元格总数,如果这个单元格的数量超出了芯片组所支持的上限,那么就按芯片组所能支持的最大限度进行操作,在确定了数据深度/位宽之后再结合逻辑BANK数量,计算出芯片的实际可用总容量。换句话说逻辑BANK中的一些行与列可能就用不上了,假如芯片组对逻辑BANK数量不支持,那么多出来的逻辑BANK也将不起作用,后者的情况比较少见,现在的芯片组基本全是支持4BANK的。VIA的KT133芯片组甚至明确表示支持8BANK。
我们说内存识别出现问题,主要就是卡在芯片的这三个参数上,其中又以芯片的数据深度限制最为常见。事实上现在很多大容量内存不能为一些旧型号主板支持的主要原因就是芯片组对内存芯片的逻辑BANK数据深度有一定限制。我们知道芯片的容量主要由三个参数决定,也就是根据第一部分介绍的公式,首先是逻辑BANK的单元格数(数据深度),其次是逻辑BANK的位数。最后是逻辑BANK的个数。三者相乘得到芯片的容量,大家看到大度内存256MB为什么不能在440BX上用,就是由于BX芯片组只支持内存芯片的数据深度为4M,而不是8M,所以大度条子的内存芯片在BX板上被识别成4×4×4=64Mbit(8MB),而不是本来的8×4×4=128Mbit(16MB),现在很多大容量的内存没有在BANK数和位宽上提高多少,基本都是增加芯片的数据深度,而这是需要芯片组支持的,象INTEL的LX/BX/810/815等都只能支持最大4M(INTEL想让大家去选择P4+850+RDRAM的组合啊!司马昭之心,路人皆知!),而目前VIA系列的几款芯片组支持芯片任意位宽(尽管目前大部分内存芯片的位宽最高只有16位),单个逻辑BANK的容量(数据深度)最多支持32M的容量。从这点上大家也不难看出为什么现在VIA芯片组的主板这么火了。