关于ddr存储容量的问题--8Megx16x8banks

有人问我镁光ddr中的容量及型号中8Megx16x8banks的含义,解答如下:

以镁光1Gb ddr2为例:1Gb ddr2有三种型号:

MT47H256M4 – 32 Meg x 4 x 8 banks
MT47H128M8 – 16 Meg x 8 x 8 banks
MT47H64M16 – 8 Meg x 16 x 8 banks

例如:MT47H64M16 – 8 Meg x 16 x 8 banks

8Meg: ddr中的存储bank的深度为8M的存储大小,也就是8x1024x1024的大小

中间的16:代表每个bank的读写位宽为16bit

8banks:代表这个ddr的型号有8个bank

总上所属:该ddr2的型号含义为:有8个读写位宽为16bit,读写深度为8M的ddr2,存储容量计算为:8M x 16bit x 8 =1Gb。

该型号的ddr结构如下:

有关ddr的其他属于摘录如下:

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详解 随着内存价格的下调,不少网友都为自己的机器配置了高容量内存,增大内存容量不但可以提高读写速度,而且会适当的提高系统性能;但是,单条大容量内存在一些主板上(时间比较长的主板)不是无法识别,就是识别错误(容量识别错误)。

具体是什么原因造成的呢?首先我们了解一些内存的知识,相信网友会在其中找到答案的。

一.内存芯片的逻辑BANK 我们知道主板上使用的32MB/64MB/128MB的内存条都是由若干内存芯片焊接在4层或6层电路板上组成的,因此首先我们必须对内存芯片的内部结构有个清楚的认识,在芯片的内部,内存的数据是以位(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进行xx作(实际上芯片的位宽就是逻辑BANK的位宽),而不是芯片组对内存芯片内所有逻辑BANK同时xx作。逻辑BANK的地址线是通用的,只要再有一个逻辑BANK编号加以区别就可以了(BANK0到BANK3)。但是这个芯片的位宽决定了一次能从它那里读出多少数据,并不是内存芯片里所有单元的数据一次全部能够读出,DQ数据输入/输出线只有8根而不是32根,可以发现4个BANK是分时工作的,任一时刻只可能有一个BANK的数据被存取,0-3是它们的编号。每个逻辑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设计了,今后随着生产工艺水平的提高估计单个芯片8个甚至16个逻辑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。目前的芯片组最多支持2个物理BANK。所以内存厂家生产的内存条都不可能超过2个物理BANK。  

 CPU一次只能对一个物理BANK进行访问和xx作(因为一个物理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的单元格总数,如果这个单元格的数量超出了芯片组所支持的上限,那么就按芯片组所能支持的最大限度进行xx作,在确定了数据深度/位宽之后再结合逻辑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的结构和工作机理无关。

时间: 2024-10-08 12:11:58

关于ddr存储容量的问题--8Megx16x8banks的相关文章

zedboard如何从PL端控制DDR读写(一)

看了一段时间的DDR手册,感觉大体有一点了解了,想要实际上板调试,然而实验室可用的开发板不多,拿了一块zynq板看了看,DDR确实有,但是已经集成了控制器,而且控制器还放到了PS端,PL只能通过AXI接口访问.     无奈另外两块开发板也这样,索性就用AXI去控制吧,正好还能再复习一遍AXI. 先简单介绍一下zynq,其全称是ZedBoard Zynq Evaluation and Development Kit  , FPGA芯片型号为xc7z020clg484-1. 片内包含一个丰富特性的

深入分析DDR(转载)

文/IT168评测室特约 Myddn [IT168评测室]最近,假如你仔细的观察PC领域发生的变化,你就会注意的一个新鲜的术语“DDR2”频频出现.顾名思义,DDR2就是第二代双倍速率同步动态随机存储器,这个名字听上去很拗口,实际上我们只要知道它的缩写是DDR SDRAM就行了.就目前的发展看来,DDR2绝对不是纸上谈兵,它的平台已经准备好了,不出意外的话,Intel七月份就会发布支持DDR2的芯片组925X和915.明年,DDR2就会成为PC上普遍使用,甚至是主流的内存类型. 因此,我们应该了

zedboard如何从PL端控制DDR读写(五)

有了前面的一堆铺垫.现在终于开始正式准备读写DDR了,开发环境:VIVADO2014.2 + SDK. 一.首先要想在PL端通过AXI去控制DDR,我们必须要有一个AXI master,由于是测试,就不自己写了,直接用package IP生成,方法如下: 1.选择package IP工具 2.创建新的AXI外设 3.接口类型选择Full,模式选择master,如果你不关心里面的详细实现过程,那么直接finish就好了.(后面我们会继续分析里面的过程) 二.创建好了IP,自然要加入到IP库里,如图

DDR的前世与今生(二)

SDRAM与DDR SDRAM SDRAM是比较久远的事情了,但我们一说到它肯定不会和DDR混淆,我们通常理解的SDRAM其实是SDR SDRAM,为SDRAM的第一代,而DDR1则为第二代,乃至到我们现在使用的DDR4,其实为第五代SDRAM,在此需要澄清一下.以示区别,后续文章里面用SDR来特指SDR SDRAM,而DDR就特指DDR SDRAM了. 就像很多人回复的一样,他们的本质区别就是周期操作方式(也称时钟采样)的差异,这就导致后面设计上很大的不同.SDR都是"单数据传输模式"

i.MX6开发板的DDR参数设置-迅为

DDR Stress Test Tool 提供了两种用途.首先,它可以用来对校准DDR3,以便于MMDC PHY delay settings和PCB配对,来达到最佳的DRAM新能.整个过程是全自动的,因此客户可以在较短的时间内让他们的DDR3工作起来. 另外,该工具可以运行内存压力测试,用来验证DDR3的功能和可靠性.压力测试可以用来验证硬件连接.MMDC寄存器参数和DDR3模式寄存器设置.测试最重要的目的是让客户验证DDR3在他们的自己的板子上运行稳定.Calibration 在i.MX6处

DDR工作原理(转载)

原文地址:http://www.cnblogs.com/shengansong/archive/2012/09/01/2666213.html DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”.DDR SDRAM在原有的SDRAM的基础上改进而来.也正因为如此,DDR能够凭借着转产成本优势来打败昔日的对手RDRAM,成为当今的主流.本文只着重讲讲DDR的原理和DDR SDRAM相对于传统SDRAM(又称SDR SDRAM)的不同. DDR的核

(四)ubuntu学习前传—uboot中对Flash和DDR的管理

1.uboot阶段Flash的分区 (1)所谓分区,就是说对Flash进行分块管理.(2)PC机等产品中,因为大家都是在操作系统下使用硬盘的,整个硬盘由操作系统统一管理,操作系统会使用文件系统帮我们管理硬盘空间.(管理保证了文件之间不会互相堆叠),于是乎使用者不用自己太过在意分区问题.(3)在uboot中是没有操作系统的,因此我们对Flash(相当于硬盘)的管理必须事先使用分区界定(实际上在uboot中和kernel中都有个分区表,分区表就是我们在做系统移植时对Flash的整体管理分配方法).有

zedboard如何从PL端控制DDR读写(六)

上一节说到了DDR寻址的问题,如下图: 从官方文档上我们看到了DDR的地址是从0008_0000开始的,那么我们开始修改Xilinx给我们提供的IP核代码.其实很简单,上一节已经分析了地址停留在0000_1000的原因,现在我们只需要把write_burst_counter的位宽变大就可以了. 从上表看到地址范围由全0到全1,计算一下就知道需要的宽度为27,即 C_NO_BURSTS_REQ = 26; 重新打包IP核,生成比特流.开始调试 由于从0003_0000开始的地址是保留位,理论上来说

i.MX6 DDR 参数设置

DDR Stress Test Tool 提供了两种用途.首先,它可以用来对校准DDR3,以便于MMDC PHY delay settings和PCB配对,来达到最佳的DRAM新能.整个过程是全自动的,因此客户可以在较短的时间内让他们的DDR3工作起来. 另外,该工具可以运行内存压力测试,用来验证DDR3的功能和可靠性.压力测试可以用来验证硬件连接.MMDC寄存器参数和DDR3模式寄存器设置.测试最重要的目的是让客户验证DDR3在他们的自己的板子上运行稳定. Calibration 在i.MX6