DDR SDRAM是double data rate synchronic dynamic random access memroy的英文缩写, 中文解释为双端速率的同步动态随机存储器。DDR,表示DDR架构,就是在一个时钟周期里,在I/O pin上传输两份数据words,提高了传输效率。 dynamic意为动态,表示掉电,数据丢失。ram表示,可以随机的对内存单元cell进行读写访问,而不必类似一些芯片需要顺序的读和写。 DDR由于其出色的性能被普遍当做主存,应用于计算机系统上。 以下对于DDR SDRAM的解读主要来源于阅读DDR spec 和 DDR2 spec. (https://www.jedec.org) 。需声明当我使用 DDR SDRAM时,是对于使用DDR技术的memory的一种统称。
DDR协议标准历史发展历程
引脚分布差异
DDR 的pin分布,重点需要关注下面:
CK (clock) : 时钟信号,决定频率。
BA (bank address) : bank的选择。像DDR,它有(BA0-BA1),内部最多有4个bank,而DDR2有(BA0-BA2),内部可以有8个bank。BA pin上的引脚值,可以决定当前选择了哪个bank,该bank可能会被执行激活,read,write或者预充电的操作。
A0-A15: 这是DDR2的address引脚配置,提供行和列地址,定位在(BA0-BA2)选定的bank array(阵列)中的具体位置。
DQ:数据引脚。用于数据的输入和输出,这个和每个cell存储的数据量有关。如果每个cell是4bit,那么就是X4,有4个 data pin。如果每个cell是8bit,那么就是X8,有8个data pin。
内部组织架构
DDR内部分为若干个bank, 如示意图所示。
bank是一个array阵列,由一个个cell组成。
cell | cell | cell |
cell | cell | cell |
cell | cell | cell |
上图是一个bank,其内部的组织架构简易图,以DDR2为例,实际上它的行数可以达到2^16行(A0-A15),列数也可以达到2^11(A0-A9,A11). 每个cell都有大小,一般是4bit,8bit和16bit. 也就是数据接口的大小,x4,x8,x16.
DDR读写流程
以DDR2为例,
1.通过配置BA0-BA2的pin管脚,选择需要进行读写的bank。
2.通过配置A0-A15的pin管脚,选择要进行读写的cell的行号。
3.通过配置A0-A15的pin管脚,选择要进行读写的cell的列号。
4.配置DQ数据管脚,进行数据的读/写操作。
内存表达方式
以下是DDR2 spec上截取的不同存储容量的bank address,row address 行,column address 列,的配置表。我们以256Mb的为例进行讲解。
256Mb 的容量,可以通过 64Mb X4 , 32Mb X8, 16Mb X 16来表示。
以64Mb X4 为例, 64Mb 表示cell的个数, X4表示4bit,表示一个cell的大小。
cell个数: 它的行地址是A0-A12来表示,则就是2^13, 列地址是A0-A9,A11,那就是2^11. 因此一个bank中cell的个数就是
2^24,即2^10*2^10*2^4 = 1K*1K*16= 16M。
bank个数: 4个
所以,总体cell的个数就是 16M * 4 = 64M, 且cell大小是4bit,所以 64M * 4bit 是256Mb.
Table 3 — 256 Mb addressing
Configuration | 64 Mb x 4 | 32 Mb x 8 | 16 Mb x 16 |
# of Banks | 4 | 4 | 4 |
Bank Address | BA0, BA1 | BA0, BA1 | BA0, BA1 |
Auto precharge | A10/AP | A10/AP | A10/AP |
Row Address | A0 - A12 | A0 - A12 | A0 - A12 |
Column Address | A0 - A9, A11 | A0 - A9 | A0 - A8 |
Page size | 1 KB | 1 KB | 1 KB |
Table 4 — 512 Mb addressing
Configuration | 128 Mb x 4 | 64 Mb x 8 | 32 Mb x 16 |
# of Banks | 4 | 4 | 4 |
Bank Address | BA0, BA1 | BA0, BA1 | BA0, BA1 |
Auto precharge | A10/AP | A10/AP | A10/AP |
Row Address | A0 - A13 | A0 - A13 | A0 - A12 |
Column Address | A0 - A9, A11 | A0 - A9 | A0 - A9 |
Page size | 1 KB | 1 KB | 2 KB |
Table 5 — 1 Gb addressing
Configuration | 256 Mb x 4 | 128 Mb x 8 | 64 Mb x 16 |
# of Banks | 8 | 8 | 8 |
Bank Address | BA0 - BA2 | BA0 - BA2 | BA0 - BA2 |
Auto precharge | A10/AP | A10/AP | A10/AP |
Row Address | A0 - A13 | A0 - A13 | A0 - A12 |
Column Address | A0 - A9, A11 | A0 - A9 | A0 - A9 |
Page size | 1 KB | 1 KB | 2 KB |
Table 6 — 2 Gb addressing
Configuration | 512 Mb x 4 | 256 Mb x 8 | 128 Mb x 16 |
# of Banks | 8 | 8 | 8 |
Bank Address | BA0 - BA2 | BA0 - BA2 | BA0 - BA2 |
Auto precharge | A10/AP | A10/AP | A10/AP |
Row Address | A0 - A14 | A0 - A14 | A0 - A13 |
Column Address | A0 - A9, A11 | A0 - A9 | A0 - A9 |
Page size | 1 KB | 1 KB | 2 KB |
Table 7 — 4 Gb addressing
Configuration | 1 Gb x 4 | 512 Mb x 8 | 256 Mb x 16 |
# of Banks | 8 | 8 | 8 |
Bank Address | BA0 - BA2 | BA0 -BA2 | BA0 - BA2 |
Auto precharge | A10/AP | A10/AP | A10/AP |
Row Address | A0 - A15 | A0 - A15 | A0 - A14 |
Column Address | A0 - A9, A11 | A0 - A9 | A0 - A9 |
Page size | 1 KB | 1 KB | 2 KB |