DDR5 软件设计规范
编制日期 2026-10-05 | 版本号 Rev 1.4
面向 DDR5 SDRAM(JESD79-5)3200 ~ 8800 MT/s 的控制器驱动设计约定 —— 覆盖 PMIC 先行的上电初始化、双子通道并发寻址、模式寄存器与 MPC 体系、 七类训练(CA / CS / WL / Read Leveling / 内部 VREF / DFE / DCA)、 REFsb 与 RFM 刷新管理、片上 ECC 与系统级 ECC 的边界,逐条给出可落地的命令序列、时序门限与状态判据。
| 文档编号 | DDR5-SW-SPEC-001 |
|---|---|
| 版本 / 状态 | V1.0 · 正式发布 |
| 适用器件 | DDR5 SDRAM 3200 / 3600 / 4000 / 4400 / 4800 / 5600 / 6400 / 7200 / 8000 / 8800 MT/s,颗粒(FBGA-82 x8 / FBGA-102 x16)与模组(UDIMM / SODIMM / RDIMM / LRDIMM) |
| 参考标准 | JEDEC JESD79-5 · 目标型号 datasheet · 主控 DDR 控制器设计指南(PDG / Design Guide)· SPD / PMIC 规范 |
| 配套文档 | DDR5_电路设计指南.html(硬件 / 原理图 / 布线 / 端接 / 电源与 PMIC) |
0. 目的与范围
本规范约束 DDR5 器件在服务器 / PC / 边缘计算 / SoC 内存控制器中的软件行为:电源与 PMIC 就绪判定、上电与复位初始化、模式寄存器与 MPC 配置、训练流程、读 / 写 / 刷新命令时序、ZQ 与内部校准、ODT 与端接、ECC / CRC / 命令奇偶错误处理、低功耗与复位恢复。凡本文与器件 datasheet 冲突,以 datasheet 为准。
- 统一初始化序列:PMIC 配置并确认 Power Good → RESET_n 低 ≥ tPW_RESET → 释放后等 tXPR → 时钟稳定 → MRW 基础项(BL / CL / WR / RTT_PARK 等)→ ZQCL → 等 tZQINIT → 七类训练 → IDLE,固化一套标准流程。
- 统一寄存器配置:BL / CL / CWL / WR / RTP / RTT / DFE / VREF / DCA / 刷新 / ECC / CRC 全部通过
MRW或MPC写入;上电必须完整写一遍关键寄存器,不允许依赖上电默认值。 - 统一训练口径:两个子通道各自独立训练;逐 Byte Lane 独立扫描;VREF 与延时二维搜索;训练失败降频重试,禁止硬编码参数。
- 统一刷新与错误处理:以 tREFI 为节拍并按实测温度切换倍率;业务态优先 REFsb;RFM / ARFM 行锤防护必须启用;ECC / CRC / 奇偶错误有重试、计数告警与降频重训策略。
一句话结论:DDR5 是「双子通道 + 串行命令 + 训练决定存亡」的器件 —— 一次访问只覆盖 32 bit,靠 BL16 凑出 64 B 缓存行;命令全部由 CA 总线在 1~2 个 CK 内串行传输;
没有 PMIC 就绪就初始化、没有 DFE 与内部 VREF 训练、没有 CA 训练的采样点、没有按温度缩短的 tREFI、没有 REFsb 的细粒度调度、没有把片上 ECC 与系统级 ECC 区分开,都会让系统表现为偶发位错甚至完全无法训练。
文档使用说明
- 本文是《DDR5 电路设计指南》的软件配套篇:硬件篇解决「怎么接、怎么供电、PMIC 怎么配、怎么走线、怎么端接」,本文解决「控制器怎么初始化、怎么训练、命令怎么发、时序怎么等、错误怎么处理、热与功耗怎么闭环」。
- 命令码、寄存器位、时序值以 JESD79-5 与目标 datasheet 为准。不同厂商(Micron / Samsung / SK hynix / CXMT)、不同密度、不同速率档存在明显差异,移植前必须逐条核对。
- 文中 C 代码为协议骨架伪代码,演示流程与判断条件,非特定平台可直接编译的完整实现;
ddr5_cmd()、now_ns()、pmic_write()等为平台相关底层。 - 凡标注「典型」「约」的数值均为量级参考,仅用于排程与方案筛选,不能作为失败判据;判据一律取 datasheet 的 max / min。
① PMIC 未就绪不得开始 DRAM 初始化——DDR5 上电无响应的头号原因是 PMIC 未配置或未 Power Good; ② 训练参数禁止硬编码——VREF × 延时是二维搜索空间,必须用扫描结果,不做扫描等于把批次差异、高低温、电压波动的风险全部留给现场; ③ 两个子通道各自独立训练、独立保存结果——不能用 A 通道的参数顶替 B 通道; ④ 片上 ECC 不等于系统级 ECC——片上 ECC 只修阵列内部,不修链路传输错误,高可靠系统仍须 Side-band / Link ECC; ⑤ 时序门限一律按 datasheet max 留余量——typ 值只用来排程;温度越高 tREFI 越短,必须动态切换。
1 · 器件定位与子通道架构
DDR5 相对 DDR4 是架构级的升级,不是简单的提速:通道被拆成两个独立子通道、命令地址被串行化到 CA 总线、突发长度翻倍到 BL16、Bank 数翻倍到 32、电源调节下沉到模组 PMIC。软件若仍按 DDR4 的单通道模型调度,最多只能拿到一半带宽。
1.1 器件定位与关键参数
| 维度 | DDR5 取值 | 对软件的直接影响 |
|---|---|---|
| 通道形态 | 2 × (32 + 8) bit 子通道 | 调度器必须能并发向两个子通道下发命令;地址映射需跨子通道交织 |
| 突发长度 | BL16 / BC8 | 单子通道一次 BL16 = 64 B,正好一个缓存行;列地址按 16 突发对齐 |
| Bank 结构 | 8 BG × 4 Bank = 32 Bank | Bank 位更多;tFAW / tRRD 需按新结构核算;页命中率提升 |
| 命令传输 | CA 总线 1T / 2T | 必须做 CA 训练确定采样点;逻辑分析仪无法直读命令,需协议解码 |
| 电源 | VDD/VDDQ 1.1 V,VPP 1.8 V,模组 PMIC | 初始化前必须经管理总线配置 PMIC 并确认 Power Good |
| 刷新粒度 | REFab / REFsb / RFM / ARFM | 业务态优先 REFsb;必须启用行锤防护 |
| ECC 层次 | On-die + Link(CB)+ Side-band | 三层保护范围不同,不可互相替代 |
| 训练项 | CA / CS / WL / RL / VREF / DFE / DCA / Loopback | 训练时间与日志量较 DDR4 翻倍;两个子通道分别进行 |
1.2 双子通道与地址映射
一个 DIMM 在逻辑上被拆成两个完全独立的 32 bit 子通道(Sub-channel A / B),各有独立的 CK、CA、CS 与数据通路,可并行操作。软件必须显式感知这一结构:
- 一次访问只覆盖 32 bit:为凑出 64 B 缓存行,突发长度加倍到 BL16(16 拍 × 32 bit = 64 B)。「两个子通道 × BL16」才能拼出 128 B。
- 地址映射必须跨子通道交织:让连续地址交替落到 A / B 两个子通道。映射不当 → 带宽直接减半
- 调度器要能并发下发:把 DDR5 当单通道调度的控制器,只能用到一半的并发度。
- 两个子通道分别训练、分别保存结果:一个训练失败不应污染另一个的参数。
| 映射位 | 推荐来源 | 作用 | 常见错误 |
|---|---|---|---|
| 子通道选择位 | 物理地址低位(如 A[6]) | 让相邻缓存行分到 A / B,保证并发 | 用高位选子通道 → 连续访问全打在一侧 |
| Bank Group / Bank 位 | 地址中段 | 跨 BG 才能流水(tCCD_S 而非 tCCD_L) | 与子通道位重叠 → 同 BG 冲突加剧 |
| Row / Column 位 | 地址高位 / 次低位 | 提高行命中率与列突发效率 | 列低位未考虑 BL16 对齐 |
| Rank 位(多 Rank) | 可配置为高位或交织 | Rank 间交织可隐藏 tRC 约束 | 多 Rank 但地址连续落在同一 Rank |
子通道交织粒度建议取缓存行(64 B)或其整数倍:太小会让单个大块读写的子通道切换过于频繁、增加总线翻转惩罚;太大会让短突发集中在一个子通道。工程上以「连续 128 B 均匀分布在 A / B 两个子通道」为基线,再用实测带宽微调。
1.3 CA 总线与信号分组
DDR5 取消了 RAS# / CAS# / WE# / ACT# 与分立地址引脚,所有命令由 CA 总线在 1 个(1T)或 2 个(2T)CK 周期内串行传输。
| 信号组 | 成员 | 方向 | 软件关注点 |
|---|---|---|---|
| 命令地址 | CA[13:0]、CS_n | 主控 → DRAM | 1T / 2T 命令时序;CA 训练决定采样点;高频下常自动切 2T,属正常现象 |
| 时钟 | CK_t / CK_c(每子通道独立) | 主控 → DRAM | 初始化时必须先稳定;DCA 训练补偿占空比失真 |
| 数据 | DQ[31:0](每子通道) | 双向 | BL16 突发;逐 Byte Lane 训练 |
| 校验 | CB[7:0](每子通道) | 双向 | 同帧 ECC;不用时按 datasheet 处理,不得凭经验悬空 |
| 选通 / 掩码 | DQS_t/c ×4、DM_n ×4 | 双向 / 主控 → DRAM | Write Leveling 对齐 DQS 与 CK;Read Leveling 确定 DQS 门控 |
| 管理与告警 | ALERT_n、RESET_n、TEN | 双向 / 主控 → DRAM | ALERT_n 必须接中断并上拉;RESET_n 脉宽与释放时序;TEN 用于测试模式 |
| 模组管理 | I²C / I3C(PMIC、SPD Hub、RCD、TS) | 主控 → 模组 | 初始化第一段:配置 PMIC 电压、读 SPD、确认 Power Good |
高频下主控常自动切换到 2T 命令时序(命令占用两个 CK 周期),会损失少量带宽,这是为换取 CA 建立保持裕量的正常行为。不要把它当故障去「修」,应通过改善 CA 走线与端接来争取回到 1T。
2 · 术语与缩写
2.1 命令与寄存器术语
| 缩写 | 全称 | 含义与软件语义 |
|---|---|---|
| MRW / MRR | Mode Register Write / Read | 模式寄存器写 / 读。2T 命令;写后需满足 tMRD / tMOD 才能发下一条 |
| MPC | Multi-Purpose Command | 多用途命令,承载训练模式进出、DFE 使能、VREF 设置、Loopback 使能等 |
| ACT | Activate | 打开一行(2T);32 Bank 需要更多 Bank 位 |
| RD / WR | Read / Write | 1T 或 2T;携带列地址、BG/Bank 与 AP(自动预充电)标志 |
| PRE / PREA | Precharge(single / all) | 关闭行,为下一次 ACT 做准备 |
| REFab | All-Bank Refresh | 全 Bank 刷新,需满足 tRFC1;期间所有 Bank 不可访问 |
| REFsb | Same-Bank Refresh | 同 Bank 刷新,仅阻塞目标 Bank,其余 31 个可继续服务 |
| RFM / ARFM | Refresh Management / Adaptive RFM | 行锤缓解刷新:按激活计数对相邻行发起额外刷新 |
| ZQCL / ZQCS | ZQ Calibration Long / Short | ZQ 长 / 短校准,分别用于上电与运行期补偿 |
| SRE / SRX | Self Refresh Entry / Exit | 自刷新进入 / 退出;退出后需等待 tXS,读命令需 tXSDLL |
| PDE / PDX | Power-Down Entry / Exit | 掉电模式进入 / 退出 |
| BG / BA | Bank Group / Bank Address | DDR5 为 8 BG × 4 Bank;时序参数按同组 / 跨组分支 |
| CB | Check Bits | 每子通道 8 bit 校验位,与数据同帧传输(Link ECC) |
| RCD / DB | Registering Clock Driver / Data Buffer | RDIMM 的 CA/CK 寄存、LRDIMM 的 DQ 缓冲,训练与排错需额外考虑 |
2.2 训练与信号完整性术语
| 术语 | 含义 | 失败时的典型表现 |
|---|---|---|
| CA Training | 命令地址总线训练:确定 CA 的采样延时与 CA VREF | MRS 回读比对不一致;偶发命令丢失;完全无法初始化 |
| CS Training | 片选训练:多 Rank 时逐 Rank 单独训练 CS_n 时序 | 多 Rank 配置下某一 Rank 无响应 |
| Write Leveling | 写均衡:对齐 DQS 与 CK 的相位关系 | 写数据全错;训练阶段直接报 WL 失败 |
| Read Leveling | 读训练:确定 DQS 门控与逐 Byte Lane 的读延时 | 读数据错;高低温下窗口漂移出错 |
| Internal VREF Training | 内部参考电压训练:逐子通道、逐字节扫描最优 VREF | 高温 / 低压下随机错;窗口过窄告警 |
| DFE | Decision Feedback Equalization,判决反馈均衡 | 高插损通道眼图闭合;DFE 不收敛;高温后误码率上升 |
| DCA | Duty Cycle Adjuster,占空比调整 | CK 占空比失真 > 2% 时读写窗口不对称 |
| Loopback | 环回训练:DRAM 把接收到的数据回送给主控比对 | 需要 PCB 上 Loopback 网络连通,误接上拉 / 下拉则失败 |
| Eye / Margin | 眼图与裕量:训练窗口的宽度 | 窗口过窄 → 高低温失效;应取窗口中心而非边缘 |
| 1D / 2D Training | 一维(仅延时)/ 二维(延时 × VREF)扫描 | 只做 1D 会漏掉 VREF 维度的最优解 |
3 · 控制器架构与初始化
DDR5 的初始化比 DDR4 多出电源管理这一层:必须先完成 PMIC 配置并确认 Power Good,才能开始 DRAM 侧的复位与寄存器配置;之后是 ZQCL 与七类训练。任何一步跳过,都可能表现为「常温能跑、高低温死机」。
3.1 分层职责
pmic_write()、spd_read()。训练层不能直接发 MRW / MPC 命令(应调用协议层的 mrw() / mpc()),否则 tMRD / tMOD 与 DES 插入会被绕过;协议层不能自己决定延时、VREF 与 DFE 系数(应由训练层给值),否则训练结果会被硬编码覆盖;电源层必须在协议层之前完成,否则「上电无响应」无从排查。
3.2 上电初始化 16 步
以下为 DDR5 通用初始化骨架,步骤顺序不可调整;具体寄存器编号、位定义与等待门限以目标 datasheet 与主控 MRC 为准:
- 管理总线就绪:初始化 I²C / I3C,确认 SPD Hub、PMIC、温度传感器在线并可读。
- 读 SPD 并确定配置:容量、位宽、Rank 数、速率档、PMIC 电压档、RCD / DB 存在性。初始化后需与实际识别结果交叉校验。
- 配置 PMIC 输出电压:按 SPD 档位写 VDD / VDDQ / VPP(典型 1.1 V / 1.1 V / 1.8 V),并使能各路输出。
- 等待 Power Good:轮询 PMIC 状态位,确认所有电源轨在容差内(±3% 量级)。PMIC 未就绪 = DDR5 上电无响应头号原因
- 拉低 RESET_n(并按需处理 TEN),保持 ≥ tPW_RESET(典型 1 µs 量级,工程上建议与冷启动对齐取更长);其它输入可不确定。
- RESET_n 释放(拉高),等待 tXPR(典型数百 ns ~ µs 量级)。
- 启动并稳定 CK:时钟稳定 ≥ 10 ns 或 5 tCK(取大者)后方可发第一条命令;两个子通道各自的 CK 均需稳定。
- MRW 基础项第一批:突发长度 BL=16、CL、tWR / RTP、驱动强度、RTT_PARK。每条之间满足
tMRD。 - MRW 基础项第二批:CWL、RTT_WR / RTT_NOM_RD / RTT_NOM_WR、刷新与温度相关项、ECC / CRC 相关项。每条之间满足
tMRD。 - ZQCL:启动 ZQ 长校准,等待 tZQINIT(典型 1 µs 量级);校准窗口内通道保持静默,只发 DES。
- MPC 进入 CA / CS 训练模式 → 逐子通道扫描 CA 延时与 CA VREF → 用 MRS 回读比对确认采样正确 → 退出训练模式。
- MPC 进入 Write Leveling 模式 → 逐子通道、逐 Byte Lane 对齐 DQS 与 CK → 退出。
- Read Leveling / DQS 门控训练:确定读方向的门控窗口与逐 Lane 延时。
- 内部 VREF 训练:逐子通道、逐字节扫描 VREF 与延时的二维空间,取窗口中心。禁止硬编码。
- DFE 使能 + 系数训练,随后做 DCA(占空比)训练;若平台与颗粒支持,再做 Loopback 训练。
- 回到正常模式:确认所有训练模式位已清零,进入 IDLE;做一遍读写自检与容量 / 配置校验,然后开放正常访问。
① PMIC 未确认 Power Good 就发命令——表现为完全无响应,且容易被误判为焊接问题; ② ZQCL / 内部校准窗口内发了非 DES 命令——校准失真,阻抗与门限全部偏掉; ③ 训练模式位忘记清零——训练做完不退出,正常读写数据全错; ④ 只训练一个子通道或只用一个子通道的参数——另一个子通道在高温或低压时先崩。
3.3 复位与再初始化
电源稳定的情况下做热复位(不断电)流程如下:
- 停止所有新访问,等待在途事务完成;所有 Bank 预充电到空闲态。
- 拉低 RESET_n,保持 ≥ tPW_RESET;其它输入可不确定。
- 释放 RESET_n,等待 tXPR。
- 重新执行完整初始化(MRW 批次 → ZQCL → 全部训练),不得省略任何一步。
- 复位后按需做读写自检;若怀疑硬件状态变化,强制执行一次全量重训。
DDR5 复位后内部延时链、DFE 系数、VREF 档位全部回到默认,必须重跑训练。只重发 MRW 就恢复业务,是最典型的「复位后数据错」来源。
3.4 初始化伪代码
int ddr5_init(const struct ddr5_cfg *cfg)
{
int rc;
/* ---- 阶段 1:电源与模组管理(DDR5 新增) ---- */
rc = pmic_set_voltage(PMIC_RAIL_VDD, cfg->vdd_mv);
if (rc) return DDR5_ERR_PMIC;
rc = pmic_set_voltage(PMIC_RAIL_VDDQ, cfg->vddq_mv);
if (rc) return DDR5_ERR_PMIC;
rc = pmic_set_voltage(PMIC_RAIL_VPP, cfg->vpp_mv);
if (rc) return DDR5_ERR_PMIC;
rc = pmic_wait_power_good(POWER_GOOD_TIMEOUT_MS); /* 必须等,不能只写不等 */
if (rc) return DDR5_ERR_PMIC_PG;
/* ---- 阶段 2:复位与时钟 ---- */
gpio_set(RESET_N, 0);
delay_us(T_PW_RESET_US); /* ≥ tPW_RESET */
gpio_set(RESET_N, 1);
delay_ns(T_XPR_NS); /* ≥ tXPR */
clk_enable_and_wait_stable(); /* ≥ 10 ns 或 5 tCK,A/B 两个子通道 */
/* ---- 阶段 3:模式寄存器 ---- */
mrw(MR0, bl_cl_wr_encode(cfg)); wait_tmrd();
mrw(MR1, drv_rtt_encode(cfg)); wait_tmrd();
mrw(MR2, cwl_rttwr_encode(cfg)); wait_tmrd();
mrw(MR3, refresh_encode(cfg)); wait_tmrd();
mrw(MR4, ecc_crc_encode(cfg)); wait_tmrd();
mrw(MR5, misc_encode(cfg)); wait_tmod();
/* ---- 阶段 4:ZQ 长校准 ---- */
zq(ZQCL);
wait_ns(T_ZQINIT_NS); /* 窗口内只发 DES */
/* ---- 阶段 5:训练(逐子通道) ---- */
for (int ch = 0; ch < 2; ch++) {
rc = train_ca_cs(ch); if (rc) goto retry_lower_freq;
rc = train_write_leveling(ch); if (rc) goto retry_lower_freq;
rc = train_read_leveling(ch); if (rc) goto retry_lower_freq;
rc = train_internal_vref(ch); if (rc) goto retry_lower_freq;
rc = train_dfe(ch); if (rc) goto retry_lower_freq;
rc = train_dca(ch); if (rc) goto retry_lower_freq;
train_exit_all_modes(ch); /* 训练模式位全部清零 */
}
/* ---- 阶段 6:校验与开放 ---- */
rc = verify_capacity_and_config(cfg);
if (rc) return DDR5_ERR_CAPACITY;
return DDR5_OK;
retry_lower_freq:
cfg->speed_bin = lower_bin(cfg->speed_bin);
if (cfg->speed_bin < MIN_BIN) return DDR5_ERR_TRAIN_FAIL;
return ddr5_init(cfg); /* 降频后完整重来 */
}
4 · 模式寄存器与 MPC 体系
DDR5 的模式寄存器数量显著多于 DDR4,且训练相关设置被分散到多个 MR 与 MPC(多用途命令)中。软件侧的原则很简单:凡是影响电气行为的项,上电必须显式写一遍;凡是训练模式,进出必须成对且可回读确认。
4.1 寄存器总览与寻址
| 类别 | 可配置内容 | 写错 / 漏写的后果 |
|---|---|---|
| MR0–MR5(基础) | 突发长度 BL、CL、WR/RTP、驱动强度、ODT 基础项、CWL、RTT 系列 | 初始化第一批要写;写错会直接导致训练失败或读写全错 |
| 训练类 MR / MPC | Write Leveling 使能、Read Leveling 延时链、内部 VREF 档位与范围、DFE 使能 / 抽头 / 系数、DCA、CA 与 CS 训练模式、Loopback | 训练不收敛;或训练后未退出导致正常读写错 |
| ODT / 端接类 | RTT_NOM_RD、RTT_NOM_WR、RTT_WR、RTT_PARK、CA ODT | 信号反射与眼图闭合;多 Rank 时尤其明显 |
| 刷新类 | REFsb 使能、FGR 比例、RFM / ARFM 配置 | 刷新停顿过大;行锤防护失效 |
| 温度类 | 温度读出、热节流阈值、ALERT_n 温度事件使能 | 高温下刷新率不切换,数据保持失效 |
| ECC / CRC 类 | ECC 使能、写 CRC、错误状态与计数读出 | 错误可见性丧失;两侧配置不一致导致数据异常 |
MR(Mode Register)存「长期生效的配置」:BL、CL、端接、刷新、ECC 等,用 MRW 写、MRR 读;MPC 承载「动作型操作」:进入 / 退出某种训练模式、触发 DFE 系数加载、设置 VREF 档位、使能 Loopback。软件应按这个边界组织代码——配置走 MRW,动作走 MPC,不要混用。
4.2 MR0 突发长度与 CL
| 字段 | 取值 | 说明 |
|---|---|---|
| 突发长度 BL | BL16(默认)/ BC8 | BL16 与 64 B 缓存行天然对齐;BC8 用于不满 32 B 的访问以减少无用搬移 |
| CAS 延迟 CL | 随速率档(如 5600 MT/s 为 46) | 读命令到首个数据有效之间的 CK 数;与 tAA 强相关 |
| 写恢复 tWR / RTP | 按速率档编码 | DDR5 的 tWR 较 DDR4 明显变长,写调度要预留 |
| DLL / 内部时序复位 | 按需 | 触发内部时序重置的寄存器写后,等待时间更长(对应 tMOD) |
4.3 MR1–MR5 基础项
| MR | 主要字段 | 工程要点 |
|---|---|---|
| MR1 | 驱动强度(RON)、RTT_NOM_RD、RTT_NOM_WR | 驱动与端接成对配置;改驱动后需重训 |
| MR2 | CWL、RTT_WR、RTT_PARK | 写方向端接;多 Rank 时非目标 Rank 落在 Park 态 |
| MR3 | 刷新相关(FGR 比例、REFsb 使能)、RFM / ARFM | 业务态建议开 REFsb;行锤防护必须启用 |
| MR4 | ECC 使能、写 CRC、错误状态与计数读出 | 控制器与 DRAM 两侧必须一致;改动后重训 |
| MR5 | 杂项与器件特性配置 | 按 datasheet 逐位核对,RFU 位写 0 |
4.4 训练类 MR
| 训练项 | 承载方式 | 典型流程 |
|---|---|---|
| Write Leveling | MPC 进入 + MRW 使能 | 进入模式 → 逐 Lane 扫 DQS 相位 → 找 0→1 跳变 → 退出 |
| Read Leveling | MPC 进入 + MRW 延时链 | 进入模式 → 读已知图案 → 扫 DQS 门控与延时 → 退出 |
| 内部 VREF | MRW 档位 + MPC 触发 | 设范围与步进 → 二维扫描(延时 × VREF)→ 取窗口中心 → 写入 |
| DFE | MPC 使能 + 系数加载 | 使能 → 训练 / 加载系数 → 确认收敛 → 运行期支持重训 |
| DCA | MPC 触发 | 测量占空比失真 → 调整 → 复核读写窗口对称性 |
| CA / CS 训练 | MPC 进入 + 回读比对 | 进入模式 → 扫 CA 延时与 CA VREF → MRR 比对 → 退出 |
| Loopback | MPC 使能 | 使能反馈通路 → 回送比对 → 关闭;需 PCB 网络连通 |
4.5 刷新与温度类 MR
- REFsb 使能:开启后调度器可用同 Bank 刷新替代全 Bank 刷新,显著降低延迟尖峰。
- FGR 比例:Fine Granularity Refresh,把刷新开销摊薄,高温场景优先启用。
- RFM / ARFM:行锤缓解刷新的阈值与使能;由主控维护激活计数或由 DRAM 内部计数触发。
- 温度读出:从 DRAM 的温度 MR 读取,并与 SPD Hub 上的温度传感器(TS)交叉核对,取保守值。
- 热节流阈值与 ALERT_n 事件:配置阈值并使能告警,让温度事件通过 ALERT_n 上送到控制器中断。
4.6 MRW / MRR 准则
- 每次
MRW之间满足tMRD;触发内部时序动作的寄存器写后满足tMOD。 - 寄存器按整寄存器重写,不做「读改写位」的假设;所有 RFU 位写 0。
- 关键配置写完后用
MRR回读比对,不一致即报错,不静默继续。 - 训练模式进出成对:进入后有超时保护,退出后回读确认模式位清零。
- 改驱动强度、端接、ECC / CRC 等电气相关配置后,必须重新训练。
- 寄存器写入序列集中在一处管理,禁止散落在训练与业务代码中。