大数跨境

技术洞见 | DDR内存:数据到存储单元之前都经历了什么?

技术洞见 | DDR内存:数据到存储单元之前都经历了什么? 牛芯半导体
2025-12-12
1
导读:本文转载自AI内存引擎,转载文章仅供学习和研究使用。

本文转载自AI内存引擎,转载文章仅供学习和研究使用。

在数字系统中,数据如何从外部世界高效传输到内存的物理存储单元,是确保整个系统流畅运行的核心命题。DDR(双倍数据速率)内存作为现代计算设备的关键组件,其数据传输链路采用了精密的分层架构,通过多个核心组件的协同工作,实现了外部数据到内存行列存储单元的精准映射。


核心目标:

数据链路的本质映射


“数据从外部世界到内存中的行和列”,本质上是“外部数据请求”向DRAM物理存储单元的映射过程。这里的“外部世界”特指与内存交互的上游系统,包括CPU、GPU、外设控制器等,它们通过数据请求触发内存操作;而“内存中的行和列”则对应DRAM芯片内部的物理存储矩阵,每个交叉点的电容单元可存储1bit数据,是数据的最终归宿。理解这一过程,需要从系统层面的连接逻辑切入,逐层剖析各组件的功能与协作机制。


分层架构:

从物理层到逻辑层的协同设计


DDR内存系统的连接架构遵循“分层隔离”原则,每层专注解决特定问题,通过标准化接口实现高效协作,具体可分为三个核心层级:
物理层:DDR PHY的信号桥梁作用
DRAM芯片无法直接与ASIC或FPGA通信,两者的电信号特性(如电压、时序、信号完整性)存在天然差异,具体原因如下:
电压差异:DRAM芯片为了降低功耗,其工作电压通常较低,比如DDR4的标准电压一般在1.2V左右,DDR5则进一步降至1.1V。而ASIC或FPGA由于内部集成了大量不同功能的模块,其I/O接口电压可能更高,常见的有1.8V、2.5V等,以满足不同外围设备的连接需求。如果直接连接,高电压可能会损坏DRAM芯片的低耐压元件,而低电压信号在ASIC或FPGA侧可能无法被准确识别,导致通信失败。
时序差异:DRAM的工作时序是严格按照其规格定义的,例如数据传输的时钟频率、建立时间(Setup Time)和保持时间(Hold Time)等参数都有精确的要求。ASIC或FPGA的内部逻辑时序则是根据其设计的功能和性能需求确定的,与DRAM的时序参数很难自然匹配。比如,DRAM在高频工作时(如DDR5的8400Mbps),对时钟和数据的同步精度要求极高,而ASIC或FPGA输出信号的时序抖动可能较大,直接连接会导致数据采样错误。
信号完整性差异:DRAM与ASIC或FPGA之间的连接通常存在一定的传输距离,会引入寄生电容、电感等因素。DRAM的信号幅度较小,在传输过程中容易受到噪声干扰,导致信号完整性下降。而ASIC或FPGA输出的信号可能存在较大的边沿跳变,会产生电磁干扰(EMI),影响DRAM的正常工作。此外,高速信号传输时还会出现反射、串扰等问题,DRAM和ASIC/FPGA自身的输出驱动能力和接收灵敏度不同,难以直接应对这些信号完整性挑战。
DDR PHY是模拟电路与数字电路的复合体,其电路特性需同时满足物理信号处理与数字逻辑协同的需求,具体表现为:
模拟电路特性:PHY的模拟部分负责处理连续时间域的信号,具备高精度的电压调节能力,能将ASIC/FPGA的I/O电压(如1.8V)线性转换为DRAM所需的低电压(如DDR5的1.1V),且转换过程中需控制电压纹波在毫伏级,避免干扰敏感的DRAM电路。在信号驱动方面,模拟电路采用差分信号传输架构(如CK_t/CK_c时钟对),通过调整输出阻抗(通常为50Ω匹配传输线特性阻抗)减少反射,同时利用预加重电路增强信号高频分量——当信号跳变时,临时提升驱动电流以补偿传输线的高频衰减,使接收端能准确识别信号边沿。此外,模拟均衡器(如连续时间线性均衡器CTLE)是关键模块,它能动态补偿信号经过传输线后的频率衰减,将失真的方波信号恢复为接近理想的波形,确保在8400Mbps等高速率下仍能保持信号完整性。
数字电路特性:PHY的数字部分以同步逻辑为核心,包含高速时钟恢复电路(如CDR),通过相位检测器对比接收数据与本地时钟的相位差,驱动数字控制振荡器(DCO)生成与输入数据同步的采样时钟,同步精度需控制在几个皮秒内,以解决DDR总线的时序偏移问题。在数据处理上,数字电路实现串并转换(SERDES)功能——将外部1bit串行数据流转换为内部并行宽位宽数据(如32bit),便于后续与控制器通过DFI接口交互;同时集成CRC校验、8b/10b编码等纠错与编码模块,提升数据传输的可靠性。此外,数字状态机负责解析DFI接口的命令信号(如cke、cs_n),并转化为控制模拟电路的配置信号(如预加重强度、均衡器增益),实现模拟与数字域的协同控制。
正是由于这些特性,DDR PHY(物理层接口)作为物理层核心,承担着“信号翻译官”的角色:一方面将ASIC/FPGA输出的数字信号转换为DRAM可识别的电信号格式,另一方面通过预加重、均衡等技术抵消高速传输中的信号衰减与噪声。对于DDR5等高速内存(速率达8400Mbps),PHY还需精确控制时钟同步,确保数据在时钟上升沿与下降沿的双倍速率传输中不发生错位。
协议层:DFI的标准化衔接功能
DFI(DDR PHY Interface)协议是由JEDEC组织定义的标准化接口协议,旨在规范DDR控制器与DDR PHY之间的通信交互,是连接逻辑层与物理层的“语言桥梁”。其核心价值在于通过统一的信号定义和时序规范,打破不同厂商控制器与PHY的设计壁垒,实现跨平台兼容。
DFI协议的核心功能包括命令传递、数据交互、状态反馈和时序同步四大类。在命令传递上,控制器通过DFI向PHY发送DRAM操作命令(如行激活 ACT、读READ、写WRITE、预充电PRE),这些命令通过一组控制信号(如 dfi_cmd [2:0])编码传递,同时附带地址信息(dfi_addr [16:0])以指定操作的Bank、行、列地址。数据交互则通过双向数据总线(dfi_wrdata、dfi_rddata)实现,配合数据有效信号(dfi_wrdata_en、dfi_rddata_valid)标记有效数据区间,支持突发长度为4/8的连续数据传输。状态反馈机制中,PHY通过dfi_phy_rdy等信号告知控制器自身是否就绪,若检测到错误(如数据校验失败),可通过dfi_error信号触发控制器的重试逻辑。时序同步方面,DFI定义了参考时钟(dfi_clk)和同步信号(dfi_rst_n),确保控制器与PHY的所有交互都在统一时钟域下进行,避免时序混乱。
从交互流程来看,一次典型的读操作遵循“命令-地址-数据”的时序链:控制器先通过dfi_cmd发送读命令,同时在dfi_addr上输出目标列地址;PHY解析命令后,向DRAM发送物理层信号并等待数据返回;当数据从DRAM读出后,PHY通过dfi_rddata将数据传递给控制器,并置位dfi_rddata_valid表示数据有效。整个过程需严格遵循DFI规范的时序参数(如命令到数据的延迟 t_CAS),确保与DRAM的物理特性匹配。
DFI协议已历经多个版本演进(如DFI 4.0支持DDR5,DFI 5.0适配 LPDDR5),每个版本会根据新内存标准的特性(如更高带宽、更低功耗)扩展信号集,例如新增Bank Group地址信号或电源管理控制信号,但核心交互逻辑保持兼容,以保护用户的设计投资。
DDR PHY仅处理物理信号,无法理解上层逻辑命令,因此需要DFI作为中间协议层。这一标准化协议规定了控制器与PHY之间的通信规则:控制器通过 DFI发送命令类型、地址信息、数据有效指示等逻辑信号,PHY则通过DFI反馈数据就绪状态或错误信息。DFI的存在打破了硬件厂商的壁垒,使不同厂商的控制器与PHY可通过统一协议兼容,大幅降低了系统设计复杂度。
逻辑层:DDR控制器的中枢管理功能
DDR控制器是整个链路的“大脑”,是连接系统核心(如CPU、GPU、ASIC运算单元)与物理存储层(PHY+DRAM)的关键枢纽,其设计直接决定内存系统的吞吐量、延迟和稳定性。除了基础的命令生成与数据调度,其核心功能可细化为以下模块:
命令解码器与序列发生器:负责将上层的读/写请求转换为符合DRAM规范的命令序列。例如,一次完整的读操作需要先发送“行激活(ACT)”命令(附带行地址),间隔t_RCD(行到列延迟)后发送“读(READ)”命令(附带列地址),并在t_CAS(列地址选通延迟)后等待数据返回。控制器会根据 DRAM数据手册(如DDR5的JESD79-5)严格控制命令间的时序间隔,避免违反物理层限制(如同一Bank的连续激活命令需间隔t_RAS,防止电荷干扰)。
地址映射与转换单元:接收系统核心发送的逻辑地址(如CPU的虚拟地址或 GPU的线性地址),通过多级映射将其转换为DRAM可识别的物理地址(包含Bank Group、Bank、Row、Column字段)。例如,64位逻辑地址可能被拆分为:[Bank Group(2bit)| Bank(2bit)| Row(17bit)| Column(10bit)| 字节掩码(8bit)],映射规则需优化以分散热点地址(如避免连续逻辑地址集中在同一Bank,导致访问冲突)。
数据缓冲与FIFO管理:内置读写数据FIFO(先进先出缓冲区),用于平衡系统核心与DRAM的速度差异。当系统核心以突发模式写入数据时(如CPU一次写入64字节),控制器先将数据暂存至写FIFO,再按DRAM的突发长度(如8)拆分后逐批发送;读操作时,从DRAM连续接收的数据先存入读 FIFO,凑齐系统核心所需的块大小(如cache行64字节)后一次性返回,减少核心等待时间。FIFO深度通常为16-32个数据块,需匹配DDR带宽(如 25.6GB/s的DDR4需至32位宽×32深度的FIFO,避免数据溢出)。
带宽调度与仲裁器:当多个主机(如CPU、DMA控制器、显示核心)同时请求访问内存时,仲裁器根据优先级策略(如固定优先级、轮转调度、加权公平)分配总线资源。例如,实时性要求高的显示核心请求可能被赋予最高优先级,避免画面卡顿;而批量数据传输的DMA请求可采用低优先级,防止占用过多带宽。同时,调度器会通过“行缓冲命中优化”提升效率——若新请求的地址与当前激活的行相同(行命中),直接发送列命令;若不同(行失配),则先发送“预充电”命令关闭当前行,再激活新行,通过优先调度同一行的请求减少切换开销(行切换延迟可达数十ns,占访问时间的60%以上)。
电源与模式管理:支持DRAM的多种低功耗模式(如待机、自刷新、深度睡眠),当检测到内存空闲超过阈值(如100us)时,自动发送“自刷新(SREF)”命令,使DRAM进入低功耗状态(电流从激活态的100mA降至 10mA以下);当有新请求时,通过“退出自刷新(SREF_EXIT)”命令唤醒,整个过程需控制唤醒时间(t_XS)在系统容忍范围内(如<1us)。此外,还能动态调整DRAM的时钟频率(如从3200Mbps降至1600Mbps),在轻负载时降低功耗。
错误检测与校正(ECC):高端控制器集成ECC(错误检查与校正)引擎,对写入DRAM的数据生成校验码(如72位数据含8位校验位),读出时通过校验码检测并纠正单比特错误,发现多比特错误时触发中断。ECC功能对服务器、工业控制等可靠性要求高的场景至关重要,可避免内存软错误(如宇宙射线导致的比特翻转)引发系统崩溃。
初始化与训练模块:DRAM上电后,控制器自动执行初始化流程:发送“复位(RESET)”命令清除状态,配置模式寄存器(如MR0设置突发长度、MR1 设置CAS延迟),并通过“ZQ校准”命令调整PHY的输出阻抗,确保信号匹配。对于高速DDR(如DDR5),还需进行“写leveling”“读DQS训练”等校准操作,通过微调时序参数补偿PCB布线的延迟差异,确保数据采样准确。


数据流向:

从请求到存储的完整链路


以ASIC向DRAM写入1KB图像数据为例,全链路流程清晰展现了各组件的协同逻辑:当ASIC运算单元发起写请求时,控制器首先解析目标地址(如 0x20000000),生成行激活、列写入等命令;通过DFI将命令与拆分后的 128位数据块传递给PHY;PHY将逻辑信号转换为符合DRAM规范的高速物理信号,发送至内存芯片;最终,数据被精准写入对应行列的电容存储单元,完成从外部请求到物理存储的闭环。
我们可以通过可视化DRAM的内部结构,来理解数据在内存中的分布情况。从宏观层面来看,DRAM内部结构始于Bank Group(bank组),每个 BankGroup包含0到3号Bank(存储体),这样的Bank Group共有四个。所有这些Bank Group都由I/O缓冲器控制选通,并通过CMD(命令)寄存器和地址寄存器进行控制。
在数据传输过程中,地址的转换与解析是关键环节。在任何系统中,用户可编程逻辑通常是非标准的,其依赖于不同系统设计者提供的驱动程序。“用户”会发送一种称为逻辑地址的信息,该逻辑地址通过PHY接口被转换为物理地址,而DRAM只能识别物理地址。这一物理地址包含多个字段,如Bank Group(bank 组)、Bank(存储体)、Row(行)和Column(列)等,这些字段共同确定了数据在DRAM中的具体存储位置。
当我们提及“行和列”时,行和列的位置是通过行解码器和列解码器来确定的。行解码器会激活内存阵列中一条称为字线(word line)的线路,这一激活过程借助sense amplifiers(sense放大器)完成。之后,列地址会从加载到 sense放大器中的字(word)中读取部分数据,列的宽度被称为“位线(Bit Line)”,列的宽度是标准的,即4位、8位或16位,这与DQ总线宽度一致。一个×16的器件有两个Bank Group,而×4或×8的器件则有四个。
从更微观的角度看,DRAM中的位在物理上是一个存储电荷的电容,数据通过作为开关的晶体管流动。电容是一种无源元件,无法永久存储电荷,为了保留信息,电容需要定期刷新。当一行被激活时,一整页的数据会被加载到sense放大器中,ACT信号则控制着数据的移动以及sense放大器的工作。
内存密度
DRAM具有固定的尺寸,所有组织都需要遵循JEDEC规范中详细规定的尺寸。下面我们来看看如何计算DRAM的尺寸,这里以4Gb×8器件的DRAM容量计算为例。
对于一个×8器件,行地址位数为A0到A14,共15位,所以总行数为32k。
对于一个×8器件,列地址位数为A0到A9,共10位,所以总列数为1k。
每列的宽度为8位,Bank Group的数量为4,Bank的数量为4。
DRAM的总容量计算公式为:行数 × 列数 × 列宽 ×Bank Group数量 ×Bank数量。
将数值代入公式可得:32,000×1,000×8×4×4 = 4,096,000,000 位 = 4Gbits。
在实际应用中,单一DRAM器件的容量往往难以满足系统对内存容量的需求,而级联(cascading)技术则提供了一种在不显著增加整个子系统成本的前提下提升内存容量的有效方案。这种技术主要通过两种方式实现:深度级联(depth cascading)和宽度级联(width cascading)。
深度级联通常由“rank(秩)”来定义,通过这种方式,DRAM可以实现单秩、双秩或四秩的配置,从而有效增加系统的内存容量。在实际应用中,单个体积更大的内存器件(如16GB的DRAM)成本往往高于多个小容量器件的组合(如两个8GB的DRAM),此时秩的作用便凸显出来。秩的实现方式有两种:“die间(inter die)”是将两个不同的内存die焊接在同一块电路板上;“die内(intra die)”则是在一个双die封装中采用3D堆叠技术放置两个die。在这两种情况下,系统会通过两条片选线(CS_n)来选择不同的内存die,而地址线和数据线则为这些die所共享,以保证数据传输的统一性和高效性。
与深度级联不同,宽度级联在片选线的使用上更为简洁,仅需一条片选线,但其数据线分布在不同的die上。例如,一个8Gb×8的器件可以拆分为两个 4Gb×4的器件,通过宽度级联的方式连接,从而在不增加片选线数量的情况下,通过扩展数据通路的宽度来适配系统对内存容量和数据传输的需求。


分层架构的设计智慧


DDR内存系统的分层设计体现了数字工程的核心思想:PHY专注于复杂的物理信号处理,控制器聚焦逻辑层的命令调度,DFI通过标准化协议实现两者的解耦。这种架构使各组件可独立优化——PHY厂商致力于提升信号速率,控制器厂商专注于优化调度算法,最终通过协议兼容形成高效系统。正如物流网络中“用户-快递站-运输车队”的分工模式,每个环节的专业化协作,共同支撑了数据在数字世界中的高效流转。

往期推荐

01

连续三年!牛芯半导体再获“中国芯”关键基础支撑优秀产品奖

▲ 点击阅读

02

牛芯半导体亮相ICDIA 2025展会,斩获“2025中国创新IC-强芯评选”生态贡献奖

▲ 点击阅读

03

牛芯半导体成功入围2024年度深圳高成长企业TOP100

▲ 点击阅读


牛芯半导体(深圳)股份有限公司(简称“牛芯半导体”)成立于2020年,聚焦提供IP授权与定制、IP代理服务、依托IP技术为客户提供芯片整体解决方案及芯片设计服务。


牛芯半导体在主流先进工艺布局SerDes、DDR等高中端接口IP,产品广泛应用于人工智能、消费电子、网络通信、数据存储、汽车电子、医疗电子等领域。


未来,牛芯半导体持续响应IP市场需求,适应不断演进的接口技术和日益拓展的接口互联场景,赋能数智时代下的千行百业。

【声明】内容源于网络
0
0
牛芯半导体
牛芯半导体,专注于高速互联技术的研发和持续创新,拥有完全自主可控的知识产权,提供全栈式接口IP授权和高速互联芯片的定制方案,赋能芯片国产化;已服务客户超百家,涵盖智能驾驶、人工智能、特种计算等领域,致力成为全球领先的高速互联半导体公司。
内容 96
粉丝 0
牛芯半导体 牛芯半导体,专注于高速互联技术的研发和持续创新,拥有完全自主可控的知识产权,提供全栈式接口IP授权和高速互联芯片的定制方案,赋能芯片国产化;已服务客户超百家,涵盖智能驾驶、人工智能、特种计算等领域,致力成为全球领先的高速互联半导体公司。
总阅读84
粉丝0
内容96