1.DDR概念
DDR的全称应该为DDR SDRAM, 是Double Rata SDRAM的缩写,是双倍速率同步动态随机存储器。DDR内存是在SDRAM内存基础上发展而来。
SDRAM在一个时钟周期内只传输一次数据,它是在时钟的上升期进行数据传输,而DDR内存则是在一个时钟周期内传输两次数据,它能够在时钟的上升期和下 降期各传输一次数据,因此称为双倍率同步动态随机存储器,DDR内存可以于SDRAM相同的总线频率下达到更高的数据传输率,主要的作用为了和CPU频率同步。
DDR SDRAM已经经历了五代发展,分别是:
(1)第一代是DDR SDRAM,允许在时钟上边沿和下边沿传输数据,2bit数据读预期能力;
(2)第二代是DDR2 SDRAM, 4bit数据读预期能力,即两倍于上一代DDR内存预读取能力;
(3)第三代是DDR3 SDRAM, 支持8bit预读取能力;
(4)第四代是DDR4 SDRAM,支持8bit预读取能力
(5)第五代是DDR5 SDRAM,支持16bit预读取能力
2.DDR性能变化
从DDR到DDR5的主要变化包括耗电、容量、读取速率 :DDR5的工作电压已经降低到1.1v,芯片的容量已经越来越大,DDR5的预读取已经变为了16n。
Feature/Option | DDR | DDR2 | DDR3 | DDR4 | DDR5 |
---|---|---|---|---|---|
Voltage(V) | 2.5 | 1.8 | 1.5 | 1.2 | 1.1 |
Devices Width | x4,x8,x16 | x4,x8,x16 | x4,x8,x16 | x4,x8,x16 | x4,x8,x16 |
Die Density | 64Mb~1Gb | 128Mb~4Gb | 512Mb~8Gb | 2Gb~16Gb | 8Gb~64Gb |
Data Rates | 200~400MT/s | 400~800MT/s | 800~1600MT/s | 1600~3200MT/s | 3200~6400MT/s |
Prefetch | 2n | 4n | 8n | 8n | 16n |
Bank | 4 | 8 | 8 | 4 banks per group | 2 or 4 banks per group |
Bank Group | NA | NA | NA | 4 for x4/x8; 2 for x16 | 8 for x4/x8;4for x16 |
Burst Length | 2,4 or 8 | 4 or 8 | 8 | 8 | 16 |
随着DDR的演进,分别发生了以下的变化:
Devices Width:芯片位宽,芯片的数据宽度,一般为/4/8/16
Die Density: 芯片容量,其他相变存储器的容量可以设计的更大;
Data Rates:带宽,DDR的演技升级的目的之一就是增加芯片的带宽,DDR4最大带宽达到了3.2G,DDR5达到了6.4G;
Bank Group: bank组数量,整个颗粒的bank数量 = bank group * bank
3.DDR端口介绍
以DDR4 SDRAM 为例,介绍DDR的端口
3.1电源
Symbol | type | Description |
---|---|---|
VDD | Supply | Power supply:1.2v |
VDDQ | Supply | DQ Power supply:1.2v |
Vpp | Supply | DRAM activating power supply:1.2v |
VREFCA | Supply | reference voltage for control, command and address pin |
Vss | Supply | Ground |
VssQ | Supply | DQ Ground |
3.2 信号
Symbol | type | Description |
---|---|---|
CKE | Input | clock enable |
CS_N | Input | Chip select:ALL commands are masked when CS_n is registered HIGH |
ODT | Input | On-die termination: ODT enables termination resistance internal to the DDR4 SDRAM |
RESET_n | Input | Active LOW asynchronous reset: Reset is active when RESET_n is LOW, and inactive when RESET_n is HIGH |
DQ | I/O | Data input/output: Bidirectional data bus |
DQS_t, DQS_s | I/O | Output with READ data, input with WRITE data |
4 DDR 框架分析
4.1 如何访问一个存储单元
(1)发送一个片选信号,选中要操作的芯片
(2)发送bank地址,选择哪一个bank
(3) 发送行地址,选中要读取的行
(4)发送列地址,最终选中存储单元
(5)通过DQ将数据输出
4.2 如何计算单个芯片的容量
单个芯片容量 = (2^(行地址数+列地址数))*bank数
以1024Meg x 8 为例:
/*
Number of bank groups : 4
Bank group address: BG[1:0]
Bank count per group:4
Bank address in bank group :BA[1:0]
Row addressing :64k(A[15:0])
Column assressing :1k(A[9:0])
Page size :1kB
*/
//8位数据宽
内存容量 = (2^(number of bank group)x2^(bank count)x2^(row number)x2^(col number))
= 2^2x2^2x2^16x2^10x8 = 8Gbit = 1GByte = 1GB
Page size = 2^(col addressing number) *(DQ位数)/8 = 2^10 *8/8 = 1024B = 1024KB
4.3DDR4 功能模块框图
以MT40A512M16 512Meg x16为例进行分析:
(1)如图所示该芯片容量为8GB,有两种计算方法或者是两种解释
第一种:1.芯片容量 = 2^(bank addressing + row addreessing + col addressing)/8(变为byte,8bit变为1byte)x 芯片位宽
=2^(16+10+6)/8x 16=512MB x16 =8GB
第二种:2.芯片容量 = 2^(bank addressing + row addreessing + (col addressing- num of burst type))/8(变为byte,8bit变为1byte)x 芯片位宽x n-prefetch
=2^(16+7+6)/8x 16*8=512MB x16 =8GB
该芯片burst type功能占用col addressing 3 根线,实际的列地址只有7根
所以一个DRAM地址cell真实容量不是16bit,而是16x8 = 128bits,即16个字节,这也是预存取的真正意义。