Bank
Bank (内存库) 在内存行业里,Bank至少有三种意思,所以一定要注意。 1、在SDRAM内存模组上,"bank 数"表示该内存的物理存储体的数量。(等同于"行"/Row) 2、Bank还表示一个SDRAM设备内部的逻辑存储库的数量。(现在通常是4个bank)。 3、它还表示DIMM 或 SIMM连接插槽或插槽组,例如bank 1 或 bank A。这里的BANK是内存插槽的计算单位(也叫内存库),它是电脑系统与内存之间数据总线的基本工作单位。只有插满一个BANK,电脑才可以正常开机。举个例子,奔腾系列的主板上,1个168线槽为一个BANK,而2个72线槽才能构成一个BANK,所以72线内存必须成对上。原因是,168线内存的数据宽度是64位,而72线内存是32位的。主板上的BANK编号从BANK0开始,必须插满BANK0才能开机,BANK1以后的插槽留给日后升级扩充内存用,称做内存扩充槽。
一.内存芯片的逻辑BANK
在芯片的内部,内存的数据是以位(bit)为单位写入一张大的矩阵中,每个单元我们称为CELL,只要指定一个行(Row),再指定一个列(Column),就可以准确地定位到某个CELL,这就是内存芯片寻址的基本原理。这个阵列我们就称为内存芯片的BANK,也称之为逻辑BANK(Logical BANK)。由于工艺上的原因,这个阵列不可能做得太大,所以一般内存芯片中都是将内存容量分成几个阵列来制造,也就是说存在内存芯片中存在多个逻辑BANK,随着芯片容量的不断增加,逻辑BANK数量也在不断增加,目前从32MB到1GB的芯片基本都是4个,只有早期的16Mbit和32Mbit的芯片采用的还是2个逻辑BANK的设计,譬如三星的两种16MB芯片:K4S161622D(512K x 16Bit x 2 BANK)和K4S160822DT(1Mx 8Bit x 2 BANK)。芯片组本身设计时在一个时钟周期内只允许对一个逻辑BANK进行操作(实际上芯片的位宽就是逻辑BANK的位宽),而不是芯片组对内存芯片内所有逻辑BANK同时操作。逻辑BANK的地址线是通用的,只要再有一个逻辑BANK编号加以区别就可以了(BANK0到BANK3)。但是这个芯片的位宽决定了一次能从它那里读出多少数据,并不是内存芯片里所有单元的数据一次全部能够读出
每个逻辑BANK有8M个单元格(CELL),一些厂商(比如现代/三星)就把每个逻辑BANK的单元格数称为数据深度(Data Depth),每个单元由8bit组成,那么一个逻辑BANK的总容量就是64Mbit(8M×8bit),4个逻辑BANK就是256Mbit,因此这颗芯片的总容量就是256Mbit(32MB)。
内存芯片的容量是一般以bit为单位的。比如说32Mbit的芯片,就是说它的容量是32Mb(b=bit=位),注意位(bit)与字节(Byte)区别,这个芯片换算成字节就是4MB(B=Byte=字节=8个bit),一般内存芯片厂家在芯片上是标明容量的,我们可以芯片上的标识知道,这个芯片有几个逻辑BANK,每个逻辑bank的位宽是多少,每个逻辑BANK内有多少单元格(CELL),比如64MB和128MB内存条常用的64Mbit的芯片就有如下三种结构形式:
①16 Meg x 4 (4 Meg x 4 x 4 banks) [16M╳4]
②8 Meg x 8 (2 Meg x 8 x 4 banks) [8M╳8]
③4 Meg x 16 (1 Meg x 16 x 4 banks) [4M╳16]
表示方法是:每个逻辑BANK的单元格数×逻辑BANK数量×每个单元格的位数(芯片的位宽)。芯片逻辑BANK位宽目前的工艺水平只能最多做到16位,因此大家看到几乎所有的芯片逻辑BANK位宽只可能4/8/16三者之一。以前16Mbit的芯片基本采用的单个芯片两个逻辑BANK,但是到了64Mbit基本就都是4个逻辑BANK设计了
二.内存条的物理BANK
通常主板上的每个内存插槽分为两段,这个大家从VIA主板BIOS设置中的BANK 0/1 DRAM Timing选项很容易推理得到,实际上也就是两个BANK,不过这里的BANK概念与我们前面分析芯片内部结构时提到的BANK可不一样。简单地说这个BANK就是内存和主板上的北桥芯片之间用来交换数据的通道,目前以SDRAM系统为例,CPU与内存之间(就是CPU到DIMM槽)的接口位宽是64bit,也就意味着CPU一次会向内存发送或从内存读取64bit的数据,那么这一个64bit的数据集合就是一个内存条BANK,很多厂家的产品说明里称之为物理BANK(Physical BANK),目前绝大多数的芯片组都只能支持一根内存包含两个物理BANK,但是针对某个具体的条子,很多人想当然,认为每个DIMM插槽使用内存条的面数来区分占用几个BANK通道,单面的(16M,64M)只占用一个物理BANK,而双面的(32M,128M)则需占用两个物理BANK。实际上物理BANK与面数是无关的,PCB电路可以设计成双面和单面,也可把全部芯片(16颗)放在一面上(至少从理论上是完全可能)。有些内存条单面就是一个物理BANK,但有些双面才是一个物理BANK,所以不能一概而论。256MB内存条就是一个典型的例子,虽然是双面并多达16枚芯片,但仍然是单个物理BANK的。要准确知道内存条实际物理BANK数量,我们只要将单个芯片的逻辑BANK数量和位宽以及内存条上芯片个数搞清楚。各个芯片位宽之和为64就是单物理BANK,如果是128就是双物理BANK。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的区别。
阅读(751) | 评论(0) | 转发(0) |