内存芯片的BANK参数说明

<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

一.内存芯片的逻辑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就只能是二路交错。很多资料介绍 的以内存条的单面或双面来决定交错是错误的,实际上就是混淆了物理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芯片组的主板这么火了。

2.内存条购买标准的修正

  大家都知道这么一个购买常识:购买内存时尽量选用单面内存。 但是这个经验是来自这样一个背景:许多不正规的小厂使用低容量芯片(比如已经过时16Mbit)来制造目前使用的高容量内存条,由于单个芯片容量小,为了 达到较大的内存条容量,必然要增加芯片数目,而且这些过时的芯片很可能是一些翻新货,并且芯片之间电气参数的一致性也很差。不过根据分析更准确地讲购买原 则应该:是选择单物理BANK的内存。以前由于大多数单面内存都是单BANK内存,所以大家一直就是这个说法,实际上通过前面的分析我们知道内存条的面数 与物理BANK数是无关的。单个物理BANK,内存只要取一组64位数据,而不需要再切换到另外一个BANK读去另外一组64位数据,切换的时间省去了, 性能必然有提高。目前由于一个DIMM插槽最多支持两个物理BANK,BIOS设置中是对同一个内存插槽的两个BANK同时进行速度调节的,比如 BANK 0/1 DRAM Timing;BANK 2/3 DRAM Timing;BANK 4/5 DRAM Timing选项。,所以我们在选 择内存的时候应该根据内存条上芯片的编码,确定内存条是单BANK还是双BANK,排除下面讲到的DIMM插槽信号走线的影响,一根双BANK的内存条与 两根单BANK的内存条在性能上是没有多少差别的。能用一个插槽不要使用两个插槽的说法是没有依据的。总体上讲3个DIMM插槽在总容量满足要求的情况 下,使用BANK的数目愈少愈好。千万不要出现使用大量低容量芯片组装的条子占用3个DIMM全部6个BANK的情况。

3.DIMM插槽超频性能不一致与内存BANK无关

  前面我们说了尽量减少DIMM插槽的使用,但是有时从保护已有投资考虑,以前购买的 低容量内存又不好丢弃,所以有时可能还会出现同时使用三个DIMM插槽的情况,但需要注意的是这时不一定同时使用全部6个BANK,很可能只使用了3个 BANK。很多人发现这三个DIMM插槽所允许的最大速度是不同的(VIA主板BIOS允许分别对每个DIMM插槽进行速度调节),一般DIMM2最 高,DIMM1其次,DIMM3最差。这与内存条的BANK无关,这主要与内存BANK控制信号在主板上的走线有关,很多有4个DIMM插槽的BX主板, 由于BX主板最大只能支持6个BANK,所以DIMM3与DIMM4的信号走线是共享的,因此导致DIMM2与DIMM3走线设计不一致而导致两者的超频 性能相差极大。这也是一些内存甚至无法用在DIMM3和DIMM4插槽上的主要原因。那么DIMM1为什么超频性能还可以呢?主要是主板BIOS或北桥芯 片检测内存时是按照BANK编号的顺序进行的,他们要求第一条内存必须插在DIMM1上,所以设计时对其进行了一些电路上的优化。所有一切与内存的物理和逻辑BANK的结构和工作机理无关。

内存芯片的BANK参数说明相关推荐

  1. 内存中的rank跟bank有什么区别

    Rank是JEDEC创造的名词,系指在内存模组上的内存区块.倘若系统资料位元宽度是64bit,则每一个Rank就必须是64bit,当内存模组上有第二组64bit内存区块时,就称此模组为Double R ...

  2. sdram 时钟相位_SDRAM小结 — Windows Live

    1,SDRAM的地址线, 在 我们一般用的什么SRAM啊,PSRAM啊,RAM啊,一般而言都是有多少根地址线,然后可以算出寻址空间,比如有11根地址线,那寻址空间就是2的11 次方减1.但是SDRAM ...

  3. 【嵌入式开发】ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )

    文章目录 一. 内存 简介 1. 两大内存分类 ( 1 ) DRAM 简介 ( 定期刷新 | 速度慢 | 成本低 ) ( 2 ) SRAM 简介 ( 不需刷新 | 存取速度快 | 功耗大 | 成本高 ...

  4. 内存颗粒位宽和容量_SDRAM的逻辑Bank与芯片容量表示方法

    1.逻辑Bank与芯片位宽 讲完SDRAM的外在形式,就该深入了解SDRAM的内部结构了.这里主要的概念就是逻辑Bank.简单地说,SDRAM的内部是一个存储阵列.因为如果是管道式存储(就如排队买票) ...

  5. DDR从channel/rank/chip/bank/row/col/cell,DDR/GDDR/HBM

    DDR/GDDR/HBM请参考文献 1.ddr的层级结构 一个soc或者PC上的ddr都是有很多颗ddr single chip组成的.这么多颗ddr又组成了不同的层级.这些层级从大到小分为: cha ...

  6. DDR设计之地址和容量计算、Bank理解

    内存芯片的容量 存储单元数量=行数×列数(得到一个L-Bank的存储单元数量)×L-Bank的数量 例1: 一颗512MB/16位 的DDR3: 按以下计算公式: 2^3 * 2^16 * 2^10 ...

  7. 主流DDR2内存芯片编号解析

    本文主要内容转自有备无患 主流DDR2内存芯片编号解析仅限个人参考与学习记录,如有侵权请联系删除. 1 内存芯片编号 虽然DDR3内存规格早已经被确定,而且主流内存模组厂商也陆续发布了各自旗下的DDR ...

  8. 内存条的逻辑BANK和RANK(物理BANK)概念

    在内存上有一个参数:2R X16,1R X16, 1R X8-.. 这里的R就是Rank 既物理BANK,X16,X8,是指芯片位宽 何谓内存BANK: 内存的BANK其实分为两部分,逻辑BANK和物 ...

  9. 沧小海的《xilinx的A7系列芯片资源学习笔记》之第一部分:I/O BANK(三)

    目录 2.3 OSERDESE2与ISERDESE2 2.2.1 ISERDESE2 2.2.2 OSERDESE2 2.2.3 IO_FIFO 2.4 其他 2.3 OSERDESE2与ISERDE ...

最新文章

  1. 【BZOJ3963】[WF2011]MachineWorks cdq分治+斜率优化
  2. 【Flutter】Flutter 开源项目参考
  3. 在Linux系统的命令行中为MySQL创建用户的方法
  4. 【每日一题】4月8日题目精讲 黑白树
  5. 洛谷P2480 [SDOI2010]古代猪文(卢卡斯定理+中国剩余定理)
  6. numpy.ndarray索引/切片方式
  7. js for in 获得遍历数组索引和对象属性
  8. 推荐收藏 | SLAM优秀开源工程汇总
  9. linux7squid编译安装,CentOS 7.3 源码安装squid 4.12 及安装过程遇到的一些问题
  10. [ NOIP 1998 ] TG
  11. database design three form
  12. 【直接下载】x86_64-6.3.0-release-win32-seh-rt_v5-rev2
  13. 快手测试开发工程师面试
  14. 查看Win7的真实版本号方法
  15. Mysql 删除的数据恢复
  16. 10.1 单片机数字秒表程序
  17. 歌礼丙型肝炎新药临床试验申请获批
  18. 【转型JAVA CSS 基础day02】
  19. < ruby > / < rt > / < rp > 标签 定义注释(中文注音或字符)
  20. ROC曲线与AUC值

热门文章

  1. Win10连接打印机提示0x00004005错误的解决教程
  2. 现在我对工作和生活的想法
  3. python中globals用法_在Python中使用globals()的原因?
  4. python爬虫----图片爬取之高清原图
  5. 硬核玩家的必备!vivo Z3才是实至名归的游戏机
  6. GDP与人预期寿命的关系图----R
  7. git关联远程仓库操作方法
  8. conda安装指定版本TensorFlow
  9. mysql支持关系模型中哪些完整性约束_数据完整性约束(1)——实体完整性、参照完整性...
  10. 【前端】浅谈浏览器内核:渲染引擎、JS引擎