2024年3月20日发(作者:韶采)
BANK的基本概念和常见问题
一.内存芯片的逻辑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(1M x 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就只能是二路交错。很
2024年3月20日发(作者:韶采)
BANK的基本概念和常见问题
一.内存芯片的逻辑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(1M x 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就只能是二路交错。很