DDR3入门系列(一)——初识DDR3

1. DDR是什么

DDR的全称是 Double Data Rate Synchronous Dynamic Random-Access Memory,中文译为 双倍数据速率同步动态随机存取存储器。DDR SDRAM 自诞生以来(约 2000 年),凭借其显著的性能优势,已经完全取代了 SDR SDRAM,并成为过去二十多年个人电脑、服务器、工作站、笔记本电脑乃至许多其他电子设备(如游戏机、显卡)中使用的主导性内存技术

DDR 技术本身也在不断迭代更新,每一代都带来更高的速度、更大的容量和更低的电压/功耗:

  • DDR (DDR1): 第一代 DDR 内存。奠定了双倍速率的基础。

  • DDR2: 进一步提高了时钟频率和带宽,降低了工作电压(1.8V),改进了封装和信号完整性。引入了 Prefetch 技术(通常是 4-bit)。

  • DDR3: 再次大幅提升频率和带宽,电压进一步降低到 1.5V(后期有 1.35V 低电压版 DDR3L)。Prefetch 增加到 8-bit。成为长期的主流标准。

  • DDR4: 频率、带宽和容量(单条可达 32GB+)再次飞跃,工作电压降至 1.2V(也有 DDR4L)。改进了内部架构和可靠性。引入了 Bank Group 设计提升效率。

  • DDR5: 当前最新一代主流标准。

    • 核心电压进一步降至 1.1V

    • 带宽再次翻倍(甚至更高): 通过将每个内存模块(DIMM)的通道拆分成两个独立的 32-bit 子通道(相当于每个 DIMM 有 2 个 32-bit 通道),并显著提升基础频率。

    • 容量巨大提升: 单条容量可达 128GB 甚至更高。

    • 集成电源管理芯片: 将原本主板上的电压调节模块移到内存条本身,提高稳定性和供电效率。

    • 更强的纠错能力: 支持片内 ECC(并非所有消费级条都有,但架构支持)。

    • 更高的密度和能效比。

  • GDDR (Graphics DDR): 专为显卡设计的 DDR 内存变种,更侧重于极高的带宽(通过更宽的接口和更高频率实现),延迟相对较高。也有 GDDR5, GDDR6, GDDR6X, GDDR7 等迭代。


2. DDR的引脚定义(以DDR3L为例)

DDR引脚按功能可分为电源和地线、时钟信号、命令和地址总线、数据总线、系统管理总线及其他控制信号。

电源和地线:

  • VDD / VDDQ (Power Supply): 这是核心逻辑和输出缓冲区的供电引脚。对于 DDR3L,标准电压是 1.35V,但通常设计为兼容 1.5V (标准 DDR3 电压)。模块上会有多个 VDD/VDDQ 引脚分布以提供稳定的电流和降低噪声。

  • VSS / VSSQ (Ground): 对应的地线引脚。同样有多个分布,提供电流回路并降低噪声。VSSQ 是输出缓冲区专用的地。

  • VREFCA (Reference Voltage for CA bus): 提供给 命令/地址总线 接收器的参考电压。这个电压非常重要,通常设定为 VDDQ 的一半 (对于 1.35V VDDQ,VREFCA ≈ 0.675V;对于 1.5V VDDQ,VREFCA ≈ 0.75V)。接收器用它来判断 CA 总线上的信号是逻辑高还是低。

  • VREFDQ (Reference Voltage for DQ bus): 提供给 数据总线 接收器的参考电压。其设定方式与 VREFCA 相同 (VDDQ/2)。在 DDR3/DDR3L 中,VREFDQ 通常由内存控制器提供,并且可以是可编程的。

  • SPD_VCC / SPD_VSS: 提供给串行存在检测 EEPROM 的电源和地。

时钟信号:

  • CK / CK# (Differential Clock Inputs): 最重要的同步信号。这是一对差分时钟信号 (CK 是正相,CK# 是反相)。所有命令和地址的输入,以及数据的输入/输出,都以这对时钟的交叉点为参考点进行采样。 时钟频率决定了内存的运行速度 (如 DDR3L-1600 的核心时钟频率是 800MHz,但由于是 DDR,数据传输率是 1600 MT/s)。

  • CKE (Clock Enable): 时钟使能信号。当 CKE 为低时,DRAM 进入低功耗状态(如自刷新)。高电平时,时钟正常工作。

命令和地址总线:

  • CS# (Chip Select): 片选信号(低电平有效)。当 CS# 为低时,该 DRAM 模块才会响应命令总线上的命令。

  • RAS# / CAS# / WE# (Command Pins): 行地址选通、列地址选通、写使能(均为低电平有效)。这三个信号与 CS# 一起组合,在时钟的有效边沿 定义具体的操作命令(如激活 ACT,读 READ,写 WRITE,预充电 PRE,刷新 REF 等)。内存控制器通过改变这些信号的状态来发出指令。

  • A0-A16 (Address Inputs): 地址输入引脚。用于传输 行地址 (Row Address) 和 **列地址 (Column Address)**。具体传输的是行还是列地址,由当前发出的命令决定(如 ACT 命令后面跟的是行地址,READ/WRITE 命令后面跟的是列地址)。A10 在特定命令(如 PRE)中有特殊用途(如控制预充电是单 Bank 还是所有 Bank)。A12 在 DDR3 中用于 Bank 地址(BA0-BA2)的扩展或特定功能(如设置 BC4 或 BL8 突发长度)。

  • BA0-BA2 (Bank Address Inputs): Bank 地址输入。DDR3/DDR3L 芯片内部被划分为多个独立的存储体(Bank)。BA0-BA2 用于选择当前操作针对哪个 Bank(通常 8 个 Bank,需要 3 位地址)。地址命令会同时指定 Bank 和行/列地址。

  • ODT (On-Die Termination): 片内终端电阻使能。用于控制数据总线上的终端电阻是否启用。当写操作时,目标 DRAM 芯片的 ODT 会被使能,以匹配传输线阻抗,减少信号反射,提高信号完整性。读操作时,通常由内存控制器端的终端电阻工作。

数据总线:

  • DQ0-DQ63 (Data Input/Output): 64 位双向数据总线。这是实际读写数据通过的通道。每个引脚对应数据的一位。在读写操作期间传输数据。

  • DM / DBI (Data Mask / Data Bus Inversion):

    • DM (Data Mask): (通常标记为 DM0-DM7 或 DM0-DM9,取决于模块 ECC 与否) 写操作的字节掩码(低电平有效)。在写操作时,如果某个 DM 信号为低,则对应的字节(8 位 DQ)数据会被屏蔽,不会被写入 DRAM。用于部分写入。

    • DBI (Data Bus Inversion): (在部分 DDR3/DDR3L 模块中使用,特别是 LPDDR3,但在标准 DDR3L DIMM 中不普遍) 数据总线翻转。用于指示当前传输的数据是否被翻转,目的是减少同时切换的输出数量,从而降低功耗和噪声。

  • DQS / DQS# (Data Strobe): 数据选通信号(差分对)。这是数据采样的关键同步信号。

    • 每个数据字节组(通常是 8 位 DQ)对应一对 DQS/DQS#。

    • 读操作时:由 DRAM 发出。数据总线 DQ 上的数据在 DQS/DQS# 的交叉点(上升沿和下降沿)被内存控制器采样。DDR 特性体现在上升沿和下降沿都采样数据。

    • 写操作时:由内存控制器发出。数据总线 DQ 上的数据需要在 DQS/DQS# 的交叉点(上升沿和下降沿)被 DRAM 采样。内存控制器需要精确控制 DQS 与 DQ 之间的时序关系(写均衡)。

  • TDQS / TDQS# (Termination Data Strobe): (在 x8 配置下替代 DM 功能) 主要用于在 x8 组织的 DRAM 中提供可选的终端电阻功能。在标准 DIMM 模块中较少直接关注。

系统管理总线:

  • SDA / SCL (Serial Data / Serial Clock): I²C 串行总线信号。连接到 DIMM 上的 SPD (Serial Presence Detect) EEPROM 芯片。主板 BIOS/UEFI 通过这个总线读取 SPD EEPROM 中存储的关于该内存模块的关键信息(如容量、速度、时序参数、制造商、电压要求等),以便自动配置内存控制器。

其他控制信号:

  • RESET# (Reset): 复位信号(低电平有效)。强制 DRAM 进入已知的初始化状态。

  • PAR (Command/Address Parity): (可选) 命令/地址总线奇偶校验位。用于检测命令/地址传输过程中的错误。


3. DDR的组成架构

如图所示是存储器的顶层架构形式,这里以DDR3的架构为例,我们主要通过其中的Bank、Row和Column来说明其工作原理。

  • Bank (BK)

    • 基础单元:每个 Bank 是独立的存储矩阵(由电容+晶体管组成的 DRAM 单元阵列)。

    • 独立性:不同 Bank 可并行操作(如 Bank0 读数据时,Bank1 可预充电)。

    • 数量:DDR4 通常 4 Bank/Group × 4 Group = 16 Banks;DDR5 可达 8 Bank/Group × 8 Group = 64 Banks。

  • Row (行)

    • 物理结构:一行是存储矩阵中的 水平单元序列(所有 Column 的集合)。

    • 激活操作:访问数据前需先激活(Activate)整行,将其内容读入 Bank 的 行缓冲器(Row Buffer)

  • Column (列)

    • 最小访问单元:一列是行中的 单个存储单元(实际访问以 Burst Length 为单位,如 BL=8 即连续 8 个列)。

    • 访问方式:通过 列地址选通(CAS) 从行缓冲器读取/写入数据。

DDR的工作原理分为以下几个步骤(以读为例):

  1. 步骤1:选择目标地址。 内存控制器发送地址信号:Bank地址|Row地址|Column地址。

  2. 步骤2:激活行。 先根据Bank地址选中目标Bank,然后根据Row地址选中目标行,目标行的数据被读取到该Bank的行缓冲器。耗时tRCD,约10-20ns。

  3. 步骤3:读取列。 发送READ命令和Column地址,从行缓冲器中定位目标列。数据通过DQ总线以双倍速率(时钟上升/下降沿)输出。

  4. 步骤4:预充电,发送PRE命令。 将行缓冲器数据写回原行(刷新电容电荷),最后关闭当前行,为访问新行做准备。耗时tRP,约10-20ns。

关键时序约束 tRC(ROW Cycle Time) = tRAS(行激活时间) + tRP。需要注意防止Bank冲突,即同一Bank未预充电时访问新行会触发等待(严重降低性能)。


4. DDR内存大小的计算公式

以一种DDR型号的芯片手册中的说明为例,计算DDR的内存大小,以256Meg x8这片DDR3为例,它的行地址位宽为[14:0],列地址位宽为[9:0],Bank位宽为[2:0],数据位8位,那么此片DDR3内存大小:2¹⁵ × 2¹⁰ × 2³ × 8 = 2Gb = 256MB

其中每个Bank的内存大小为: 2¹⁵ × 2¹⁰ × 8 = 0.25Gb = 32MB

本期分享结束,感谢大家看完,私信我可获取相关资料

本文是作者在华为工作期间写的篇对DDR3全面的总结,当时有好几年经常接触DDR3的设计与测试,期间总结了大量的知识点,于是业余时间汇总起来写成本文,因为DDR3属于业界通用的器件,其中知识也不涉及到公司秘密,所以分享出来供大家参考。 文章摘要: DDR,在PC、手机、通信设备等产品中广泛应用。而随着技术发展以及用户需求提高,内存不断升级,从SDRAM, DDR, DDR2、再到DDR3,现在DDR4也开始大规模应用。其特点就是速率、容量不断提高,而且性能、功耗方面也不断优化。内存技术是很多软件、硬件、逻辑、测试工程师们关注的重点。但由于其复杂程度较高,同时,英文资料复杂,理解困难,而中文资料能较全面详细描述DDR3的文献匾乏、零散。记得刚接触DDR3时真是头雾水,直在其表面徘徊很久。身边小伙伴也是同感。 作者所从事的硬件领域常常接触DDR,在这方面有些难忘的经历,期间也积累了些知识。出于经验传承的目的,特写下本文。内存已经历多代,但很多知识是相通的,本文拿当前主流的DDR3作为重点去讲解。出于能力水平及篇幅原因,本文未能周全深入描述DDR3所有特性或者某些地方存在错误,还望读者谅解和指正。同时,本书在些地方引用了其他文献中的图文,会在相应地方加以说明。在此,衷心希望本文能给能给想了解DDR3技术的同学提供帮助。 本文分为以下八章内容: 第DDR3基础 第二章 DDR硬件设计 第三章 DDR3几个关键技术 第四章DDR3工作流程、参数详解 第五章 DDR3训练 第六章 DDR3信号完整性测试 第七章 DDR3问题案例 第八章 SDRAM、DDRDDR2、DDR3DDR4对比
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力!奋斗!!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值