大话 SDRAM 和 DDR 动态随机存取存储器

联合电子设备工程委员会JEDEC [ˈdʒeɪ dɛk],Joint Electron Device Engineering Council)是一个全球性的微电子行业标准制定组织,由其推出的各类半导体存储标准广为人知,例如:双倍速率 SDRAMDDR,Double Data Rate)、低功耗双倍速率 SDRAMLPDDR, Low Power DDR)、高带宽内存HBM,High Bandwidth Memory)、嵌入式多媒体卡e.MMC,Embedded Multi Media Card)、通用闪存UFS, Universal Flash Storage)、固态硬盘SSD,Solid State Drive),本文主要讨论 DDRLPDDR 内存颗粒相关的原理、引脚定义,以及对应的 PCB 布线规范。

最早推出的单数据率(SDR,Single Data Rate)类型 SDRAM 只能够在时钟信号的上升沿传递数据,而后续问世的 DDR1 则可以同时工作在时钟信号的上升沿与下降沿,从而在相同的时钟频率下实现了双倍的传输效率;而在 DDR2 又引入了 4 位预取(Prefetch)机制,后续的 DDR3 进一步将预取宽度提升至 8 位,并且为 命令/地址线 引入了全新的 Fly-by 拓扑(之前版本采用 T 型 拓扑),优化信号走线的同时降低时钟偏移。DDR4 则着重于 Bank Group 提升寻址效率,最新的 DDR5 则增加了 PMIC 电源管理(集成多通道降压 BuckLDO)以及 I³C 串行通信总线(即增强型 I²C 总线),同时预取宽度提升至 16 位,并且内置 ECC 错误校验。

Memory 存储器种类

随机存取存储器RAM,Random Access Memory)是一种能够高速随机存取数据的易失性存储器,可以将其具体划分为如下两种类型:

  1. 静态随机存取存储器SRAM,Static RAM)依靠晶体管组成的双稳态触发器来存储比特位,通常集成在芯片内部作为高速缓存使用;
  2. 动态随机存取存储器DRAM,Dynamic RAM)需要通过不断刷新充电来维持数据,广泛运用于 SoC 芯片与低速存储器(例如 NAND Flash)之间作为数据传输的桥梁;

同步动态随机存取存储器SDRAM,Synchronous DRAM)则在上述 DRAM 存储器的基础上引入了时钟同步机制,依次发展出下面两种类型:

  1. 单倍速率 SDRAMSDR,Single Data Rate SDRAM):只能在时钟信号的 上升沿 传输一次数据;
  2. 双倍速率 SDRAMDDR,Double Data Rate SDRAM):可以在时钟信号的 上升沿下降沿 各传递一次数据;

接下来,我们将上述繁琐的存储器种类划分,简明直观的总结为下面的示意图:

DDR 版本发展脉络

这里的表格统计了内存颗粒从 SDRAM 发展到 DDR1DDR2DDR3DDR4DDR5 的时间脉络:

版本 时间 总线频率 传输速率 工作电压 拓扑 预取位数 Bank 数量 Bank Group
SDRAM 1993 年 100~166 MHz 100~166 MT/s 3.3V T 型 1n 4
DDR1 2000 年 133~200 MHz 266~400 MT/s 2.5V T 型 2n 4
DDR2 2003 年 266~400 MHz 533~800 MT/s 1.8V T 型 4n 4~8
DDR3 2007 年 533~800 MHz 1066~1600 MT/s 1.5V Fly-by 型 8n 8~16
DDR4 2014 年 1066~1600 MHz 2133~3200 MT/s 1.2V Fly-by 型 8n 16 4 组
DDR5 2019 年 1600~3200 MHz 3200~6400 MT/s 1.1V Fly-by 型 16n 32 8 组

注意预取位数(Prefetch):是指一次读操作,能够从存储阵列当中读取到多少个数据位。

数据位宽 Data Width

位宽(Data Width):单个存储颗粒每 1 次能够并行传输的二进制位数(通常与 DQ 引脚的总数相匹配),常见存储颗粒的位宽主要有 x8x16x32。存储颗粒的位宽与颗粒数量的乘积,必须等于 SoC 内存控制器的位宽:

\[ 单颗粒位宽 \times 颗粒数量 = SoC 内存控制器的物理位宽 \]

例如对于拥有 64 bit 位宽的 SoC 控制器,其对应的存储颗粒可以按照如下方式进行搭配:

\[ \begin{align} &8 颗 \times 单颗8位 = 64 位 \\ &4 颗 \times 单颗16位 = 64 位 \end{align} \]

注意:常用的 DDR3/4 颗粒位宽是 x8,而 LPDDR3/4 颗粒的常用位宽为 x16;常用的 DDR5 颗粒位宽为 x8x16,而 LPDDR5 颗粒常用的位宽有 x16x32

DRAM 基本电路结构

动态随机存取存储器(DRAM,Dynamic Random Access Memory)的最小存储单元由 1 个晶体管 Transistor(通常采用 NMOS)与 1 个电容 Capacitor(存储电荷时为 1,没有电荷时为 0)构成,因而被称为 1T1S 结构。

当电容器存储电荷的时候,表达的就是高电平 1;而当电容器没有存储电荷的时候,表达的则是低电平 0

将海量的 1T1C 单元电路排列成由 Row Column 组成的二维矩阵(如下图所示),其中横向控制线称为 字线(Word Line),连接到一整行晶体管的栅极,用于控制电荷的充放。而列数据线称为 位线(Bit Line),连接到每一个列的电容器,负责提供充放电荷的流入流出路径:

Bank 与 Bank Group

把由 1T1C 单元组成的二维矩阵,拆解为多个独立的小型阵列就称为存储体(Bank),每一个 Bank 都可以被独立的激活、读写、预充、刷新,并且能够进行并行操作,从而降低读写延迟,提升通信带宽。

总结一下,DRAM 存储器(SDRAMDDR1/2/3)由多个 Bank 组成,每个 Bank 进一步由 1T1C 存储单元所构成的行列矩阵结构组成,其寻址层级依次为:

1
逻辑体(Bank)→ 行(Row)→ 列(Column)

SDRAMDDR1/2/3 的传输频率和速率相对比较低,Bank 层的并行操作已经能够满足要求。然而传输频率和速率更高的 DDR4/5,面对更大的数据吞吐量,就需要进一步将多个 Bank 划分为存储体组(Bank Group),从而规避存储单元的读写等待延迟,并且让内存控制器获得更多的并行操作通道,同时能够配合更高的预取宽度:

  • DDR4:拥有 4 个存储体组 Bank Group(每组由 4 个存储体 Bank 组成,总共 16 个 Bank);
  • DDR5:拥有 8 个存储体组 Bank Group(每组由 4 个存储体 Bank 组成,总共 32 个 Bank);

相应的,DDR4/5 的寻址层级依次调整为如下的形式:

1
逻辑体组(Bank Group)→ 逻辑体(Bank)→ 行(Row)→ 列(Column)

注意存储体组(Bank Group)能够避免单个 Bank 序列操作带来的延迟瓶颈,通过创建能够并行工作的独立子单元,使得内存控制器能够更加灵活高效的执行读写任务,减少因时序等待而产生的空闲时间,最大化内存总线的利用率和整体有效带宽。

SDRAM 与 DDR 的区别

经过数年的发展,内存经历了从同步动态随机存储器(SDRAM,Synchronous Dynamic Random Access Memory)到双倍数据率同步动态随机存储器(DDR,Double Data Rate Synchronous Dynamic Random Access Memory)的发展历程:

  1. 同步动态随机存储 SDRAM 名称当中的同步 Synchronous 是指其需要跟随来源于 SoC 内存控制器的外部时钟进行工作,而动态 Dynamic 表示的是由于 1T1C 结构当中电容需要不断刷新保持电荷,而随机寻址 Random Access 则表示可以随时进行任意地址访问。传统的 SDRAM 只能够在时钟信号的 上升沿 传递数据(1 个时钟周期只能传递 1 次数据),如下图所示:

  1. DDR 在本质上也属于 SDRAM 的一种,但是两者区别主要在于其命名中的双倍数据速率(Double Data Rate)表示其可以同时在时钟信号的 上升沿下降沿 进行数据传递(1 个时钟周期可以传递 2 次数据),从而有效提升了数据传输的效率,如下图所示:

如何进行读/写/刷新操作

读出操作

读取数据是一个多步骤过程。内存控制器会发送 Bank 地址行地址列地址 相关的信息,具体流程可以参考下面的示意图以及后续的文字描述:

  1. 首先,SoC 发送读命令给 DRAM 存储器,其中前 5 个比特位用于从 Bank Group 当中选取指定的 Bank
  2. 然后,该 Bank 内部所有字线全部被关闭(即关闭 NMOS 晶体管),断开电容的充放电路径;同时 Bank 内部所有位线预充电至满电容电压的约一半(假设电容充电至 1V 代表逻辑 1,放电至 0V 代表逻辑 0,那么这里就预充电至 0.5V);
  3. 接着,发送 16 位 行地址 激活指定行,当该行的存储单元被激活之后,便会向位线输出微弱电流,例如该行的某颗电容处于 1V 满电荷状态,电荷就会顺着位线进入感应放大器(Sense Amplifier)进行电平检测,进而判断出逻辑值 0 或者 1
  4. 最后,感应放大器的判断结果会传递给读驱动器(Read Driver),此时会将 8 条位线连接到读驱动器的 8 条线路,进而传递给 SoC(由于读操作会损耗电容当中存储的电荷,如果需要保持数据,就需要通过刷新操作补充电容当中的电荷);

写入操作

执行写入操作的时候,SoC 会通过内存控制器将待写入的数据提前放置到数据总线,然后开启下面示意图所展示的一系列操作:

  1. 执行写入操作时,内存控制器(Memory Controller)通过地址总线给出地址信息(包含待写入的 行地址列地址);
  2. 接下来,关闭指定 Bank 对应的 NMOS 晶体管,隔离电容的充放电路径,同时将全部位线预充电至 0.5V感应放大器会根据电容的电荷存储状态,将位线设置到合适的电压);此时如果需要让新数据覆盖旧数据,内存控制器就会发出写使能(Write Enable)信号,通过行地址选通信号 RAS 激活目标行,并在位线完成预充电之后,将列地址送入到 SoC 内存控制器;
  3. 内存控制器会将指定的 8 条位线,连接到写驱动器(Write Driver),此时写入驱动器里已经事先准备好了 8 位待写数据。写驱动器的驱动能力远远强于感应放大器,所以能够轻松覆盖指定行列所对应的 1T1S 存储单元数据。此时 WE 写使能信号会被拉低置为 0,表示正式开始写入操作,接着数据总线上待命的数据就会被锁存,并且写入到指定地址的 DRAM 存储单元当中;

前述的读出和写入操作,都需要一个固定的时钟信号来协调同步,所以 行地址选通(RAS Row Address Strobe)、列地址选通(CAS,Column Address Strobe)、写入使能(WE,Write Enable)等控制信号的时序必须严格对齐(除此之外,其它的控制信号还有片选 CS、时钟 CK、数据掩码 DM、输出使能 OE、刷新 REF、预充电 PRE 等等)。

注意:对存储单元某一行执行完读写操作之后,必须要进行行预充电(Row Precharge),从而关闭当前行,防止残留电荷与新的电荷发生叠加损坏数据,并且重置感应放大器内部的比较电压。本质就是把当前已经激活的行撤销掉激活,从而让出通道资源给后续新行的访问。

刷新操作

刷新操作是读写周期当中,需要重复执行的关键操作,该操作主要围绕感应放大器来进行(JEDEC 规范明确每一个逻辑行,必须在 64ms 时间窗口内至少完成 1 次刷新,避免电容漏电导致数据丢失):

第一步:通过字线激活指定行,导通该行所有存储单元的 NMOS 晶体管,随后将位线电压设定为满电容电压的一半(例如 0.5V),此时存储单元内的 NMOS 晶体管会根据两端电压差,允许电容中存储的电荷双向流动;

第二步:检测已经预置为 0.5V 的位线电压变化,若某一列位线上 1T1S 存储单元的电容存在 1V 满电荷,该电容就会向外泄放少量电流,使得位线的电压小幅抬升。此时感应放大器就会根据这个电压变化,判定存储单元保存的逻辑值是 0 还是 1

第三步:将位线调整为标准电平(0V 或者 1V),将 1T1S 存储单元的充电至对应的标准电平,完成之后就关闭该行的选通,单次刷新流程结束;

注意:对存储单元执行读取操作之后,必须进行刷新操作。因为感应放大器判断逻辑值的时候,会损耗一部分电容当中保存的电荷,因而读取操作之后必须通过刷新操作,从而使其继续保持原有的逻辑电平状态。

总线拓扑 T 型 与 Fly-by

数据总线地址/命令/控制总线的物理连接拓扑结构,可以具体划分为如下三种类型:

  1. 点对点拓扑:每颗存储颗粒都拥有独立的传输通道,控制器与颗粒之间一对一连接,不会共享总线资源(例如下面示意图中的黄色传输线,通常针对每一颗 DDR 存储颗粒的 DQ / DQS / DM 这类数据线):

  1. Fly-by 菊花链串联拓扑:多颗存储颗粒使用一条直线串联到底,Fly-by 属于一种比较特殊的菊花链(Daisy Chain)拓扑结构,其必须通过 40Ω ~ 60Ω 终端电阻(VTT,Voltage Termination)来吸收末端反射 \(VTT = 终端匹配电压 = \frac{VDDQ}{2}\);(例如上面示意图中的黄色传输线,通常只针对 DDR 颗粒之间的共享信号,例如 A0 ~ A17 地址线,CK_t/CK_c 差分时钟线,RAS/CAS/WE/CS 等命令控制线):

  1. 双 T 型拓扑:过去的低速率 DDR3 采用的是这种拓扑结构,内存控制器的地址/命令控制信号会先进入到第 1 个 T 型节点,划分为两路走线之后,再在第 2 个 T 型节点继续被划分为两路(上面示意图里的绿色传输线就采用这种方式),这种方式最大可以支持到 \(2^N\) 个存储颗粒的连接(其中 N 为分支次数)。

注意数据线 DQDQSDM 作为高速双向信号,必须严格遵循点对点连接。而对于 地址时钟命令控制 相关的信号,DDR1/2DDR3 1066/1333 采用的是 T 型多分支拓扑,而 DDR3 1600DDR4/5 则必须使用 Fly-by 菊花链串联拓扑

DDR3 引脚定义与布线约束

LPDDR3 引脚定义与布线约束

DDR4 引脚定义与布线约束

LPDDR4 引脚定义与布线约束

DDR5 引脚定义与布线约束

LPDDR5 引脚定义与布线约束

DIMM 双列直插式储模块

大话 SDRAM 和 DDR 动态随机存取存储器

http://www.uinio.com/Electronics/DDR/

作者

Hank

发布于

2026-05-18

更新于

2026-05-18

许可协议