SDRM/DDR 寻址

来源:互联网 发布:尤里过知乎 编辑:程序博客网 时间:2024/06/07 08:01

逻辑Bank与芯片位宽

讲完SDRAM的外在形式,就该深入了解SDRAM的内部结构了。这里主要的概念就是逻辑Bank。简单地说,SDRAM的内部是一个存储阵列。因为如果是管道式存储(就如排队买票),就很难做到随机访问了。

阵列就如同表格一样,将数据“填”进去,你可以把它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)叫什么呢?它就是逻辑 Bank(Logical Bank,下文简称L-Bank)。

由于技术、成本等原因,不可能只做一个全容量的L-Bank,而且最重要的是,由于SDRAM的工作原理限制,单一的L-Bank将会造成非常严重的寻址冲突,大幅降低内存效率(在后文中将详细讲述)。所以人们在SDRAM内部分割成多个L-Bank,较早以前是两个,目前基本都是4个,这也是SDRAM 规范中的最高L-Bank数量。到了RDRAM则最多达到了32个,在最新DDR-Ⅱ的标准中,L-Bank的数量也提高到了8个。

这样,在进行寻址时就要先确定是哪个L-Bank,然后再在这个选定的L-Bank中选择相应的行与列进行寻址。可见对内存的访问,一次只能是一个L- Bank工作,而每次与北桥交换的数据就是L-Bank存储阵列中一个“存储单元”的容量。在某些厂商的表述中,将L-Bank中的存储单元称为Word (此处代表位的集合而不是字节的集合)。

从前文可知,SDRAM内存芯片一次传输率的数据量就是芯片位宽,那么这个存储单元的容量就是芯片的位宽(也是L-Bank的位宽),但要注意,这种关系也仅对SDRAM有效,原因将在下文中说明。



DDR内部是由多个存储阵列组成的,我们称这些存储阵列为bank,早期的SDRAM内部分割成两个bank,后来是4个,这是SDRAM规范中规定的最大bank数,在DDR2标准中,BANK的数目提高到8个。

每一个存储阵列就像表格一样,表格的每一个单元格是最小存储单元,大小可以为4, 8, 16,也就是位宽,位宽决定了数据线位数。如果想使用32bit的数据总线宽度,那么可以使用单片32bit内存芯片,或者使用两片16bit位宽的芯片拼接出 32bit。

整个芯片的总容量用如下公式计算:

单元格数目 = 行数 * 列数

总容量(单位bit) = bank数 * 单元格数目 * 单元格大小 = bank数 * 行数 * 列数 * 单元格大小

以K4B4G1646B 4Gbit为例,从它的datasheet可以看出存储配置为256MB x 16bit,bank数是8,row地址线A0~A14, column地址线A0~A9

总容量 4Gbit= 256MB * 16bit = 8 * 32MB * 16bit = 8 * 32K * 1K * 16bit

共有8个bank,每个bank是32K x 1K的单元格阵列,每单元格存储16bit数据。

芯片位宽

在K4B4G1646B芯片手册上,4Gbit容量的芯片,有下面三种规格1GB x 4, 512GB x 8, 256GB x 16。在相同的容量下,位宽出现了多种设计。1GB x 4的位宽需要8个芯片才能组成32bit数据线,但是总容量可高达32Gbit;如果使用1GB x 16则只需2个芯片即可组成32bit数据线,总容量为8Gbit。从上面可以看出,在设计中需要权衡芯片数,总容量。

SDRAM/DDR是怎么寻址的?

为了读取特定单元格的数据,在寻址时要首先确定是哪一个bank,然后在这个选定的bank中进行行列的寻址。在实际工作中,bank的地址与相应的行地址是同时发出的,此时这个命令称之为"行有效"或者“行激活”。在此之后,发送列地址寻址命令和具体的操作命令(读或写),这两个命令也是同时发送的。行列地址是可以复用的,一般来说DDR芯片的地址线为A0~A15,低地址线会被行列复用。以K4B4G1646B 4Gbit 256MB x 16bit内存芯片为例,A0~A14用做行地址,A0~A9用做列地址,这款芯片同时含有B0~B2用来选择bank。



http://blog.chinaunix.net/uid-20664418-id-1583561.html


0 0
原创粉丝点击