SDRM/DDR 寻址

来源:互联网 发布:停车场管理系统数据库 编辑:程序博客网 时间:2024/05/16 02:45


DDR内部组成

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。