当前位置: 首页 > news >正文

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

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

http://www.dtcms.com/a/348768.html

相关文章:

  • FastAPI中定时任务的使用详解
  • Kernel Pwn 入门(五) 条件竞争 userfaultfd利用
  • PMP项目管理知识点-②项⽬环境
  • LeetCode 第464场周赛 第三天
  • 抽奖池项目测试
  • 【信息安全】英飞凌TC3xx安全调试口功能实现(调试口保护)
  • 解决Ubuntu22.04 安装vmware tools之后,不能实现文件复制粘贴和拖拽问题
  • AIStarter安装与调试:一键启动与收益中心教程
  • 为什么hive在处理数据时,有的累加是半累加数据
  • Codejock Suite ProActiveX COM Crack
  • C++如何将多个静态库编译成一个动态库
  • 【C++】 9. vector
  • golang3变量常量
  • 【golang长途旅行第30站】channel管道------解决线程竞争的好手
  • 在WSL2-Ubuntu中安装Anaconda、CUDA13.0、cuDNN9.12及PyTorch(含完整环境验证)
  • 深度学习与自动驾驶中的一些技术
  • 51c自动驾驶~合集18
  • 点评《JMeter核心技术、性能测试与性能分析》一书
  • 使用单个连接进行数据转发的设计
  • 大数据毕业设计选题推荐-基于大数据的北京市医保药品数据分析系统-Spark-Hadoop-Bigdata
  • 1688拍立淘接口数据全面解析详细说明(item_search_img)
  • Highcharts Maps/地图 :高性能的地理数据可视化方案
  • 打工人日报#20250824
  • CTFHub技能树 git泄露3道题练习--遇到没有master如何解决!!!
  • 一文掌握 Java 键盘输入:从入门到高阶(含完整示例与避坑指南)
  • 【大模型LLM学习】Research Agent学习笔记
  • c++随笔二
  • CI/CD企业案例详解
  • 从零开始学习概念物理(第13版)(1)
  • 问卷管理系统测试报告