H08 — DDR5 On-Die ECC and Sideband ECC: On-Chip Error Correction vs System ECC
Key Insight: ECC is not just a technology. It is a commitment to data reliability.
ECC Types Introduced in DDR5
DDR5 has three types of ECC, working at different levels:
DDR5 ECC 的三层架构:
Layer 1:On-Die ECC(片内 ECC)
→ DRAM 颗粒内部,每颗颗粒自己纠错
→ 64bit 数据 + 4bit 内部 ECC(存在颗粒内部)
Layer 2:Sideband ECC(边带 ECC,DDR5 新增)
→ DIMM 上的额外 ECC,存储在独立的 ECC 区域
→ 64bit 数据 + 8bit Sideband ECC(存在于 DIMM 上)
Layer 3:System ECC(系统 ECC)
→ RDIMM/LRDIMM 上的外置 ECC 芯片(Register)
→ 72bit 数据(64bit + 8bit ECC)通过 ECC 芯片纠错
三层可以同时启用,实现最高级别的数据保护。On-Die ECC: Error Correction Inside the Die
On-Die ECC 工作原理:
DRAM 颗粒内部(DDR5 32Gb 颗粒):
- 核心阵列(Core Array)存储 64bit 数据
- 额外存储 4bit ECC(每 64bit 数据 + 4bit 纠错码)
- 写入时:CPU 写 64bit → 颗粒内部计算 4bit ECC → 存储
- 读取时:读取 64bit + 4bit → 内部纠错 → 返回 64bit 正确数据
为什么要 4bit ECC?
- 汉明码(SECDED)可以纠 1bit 检 2bit
- 4bit ECC 可以保护更大的数据块,减少内部错误率
On-Die ECC 的效果:
- DRAM 颗粒内部的比特翻转(α粒子、EMI等)会被自动纠正
- 颗粒到控制器之间的"Channel"错误减少
- 这不会减少最终的 UCE(Uncorrectable Error),但减少 CE(Correctable Error)
On-Die ECC 不等于系统 ECC:
- 它只工作在 DRAM 颗粒内部
- 控制器看到的还是 64bit 数据(不带 ECC)
- 它不能替代 RDIMM 的系统级 ECCSideband ECC: A New Feature of DDR5
Sideband ECC(边带 ECC):
DDR5 新增的功能,原因是 DDR5 的数据速率更高,
错误率比 DDR4 更高,所以加了额外的保护。
工作原理:
- 每个 DDR5 DIMM 有额外的 8bit ECC 通道(72-pin)
- 这 8bit ECC 不在主数据通道上,而是通过独立的"边带"传输
- CPU → 控制器:先发数据,再发 ECC(分两次)
结构:
传统 DDR4 ECC(72-bit):64 数据 + 8 ECC 合并传输
DDR5 Sideband ECC:64 数据 + 8 ECC 分开传输(边带)
Sideband 的优势:
- 不影响主数据通道的时序(ECC 计算不影响数据传输)
- 允许更灵活的 ECC 策略(控制器决定何时检查)
- DDR5-6400+ 的数据速率下,边带 ECC 比传统 ECC 更稳定
实际配置:
DDR5 UDIMM:40-bit × 2 通道(80 数据 + 10 ECC)
(不是 64+8,而是 40×2=80 数据 + 10 ECC)
DDR5 RDIMM:同样的边带 ECC + Register 芯片System ECC: External ECC Chip on RDIMM and LRDIMM
RDIMM 的 Register 芯片:
RDIMM(Registered DIMM)上的 Register 芯片:
- 位于 CPU 内存控制器和 DRAM 颗粒之间
- 缓存所有命令和地址信号(减轻负载)
- 还负责 ECC 计算和纠错(Server 版本)
工作原理:
CPU → 内存控制器 → Register(ECC纠错) → DRAM 颗粒
ECC 计算流程:
1. CPU 写 64bit 数据
2. 内存控制器计算 8bit ECC
3. 72bit 数据(64+8)发给 Register 芯片
4. Register 芯片存储和转发
5. 如果 Register 检测到错误(从 DRAM 读回时),它会:
- 纠正单比特错误(CE)
- 报告多比特错误(UCE)给 CPU
RDIMM vs UDIMM 的区别:
UDIMM(无寄存器):
- CPU 直接连接 DRAM 颗粒
- 适合 2~4 条,负载轻的系统
- 没有额外延迟,延迟最低
RDIMM(有寄存器):
- CPU 连接 Register,Register 连接 DRAM
- 适合 8~16 条,负载重的系统
- Register 增加 ~1ns 延迟
LRDIMM(Load-Reduced DIMM):
- Register + 数据缓冲(Data Buffer)
- 进一步减少负载,支持 16~32 条
- 延迟更高(~2ns),但容量最大Collaboration of the Three ECC Types
多层 ECC 保护的实际场景:
场景:α粒子击中 DRAM 颗粒内部的一个 Cell
第 1 层(On-Die ECC):
→ 颗粒检测到 1bit 翻转
→ 内部 SECDED 纠错,纠正这个 bit
→ 数据正常输出,控制器不知道发生了错误
场景:干扰更强,同时击中了 2 个 Cell
第 1 层(On-Die ECC):
→ 2bit 错误,On-Die ECC 无法纠正(只能纠1bit)
→ 报错给颗粒内部的 ECC 逻辑
第 2 层(Sideband ECC):
→ 读取时,数据 + Sideband ECC 传到控制器
→ 控制器检测到 2bit 错误
→ Sideband ECC 尝试纠正
第 3 层(RDIMM Register):
→ 如果是系统 ECC,Register 检测到错误
→ 单比特错误:纠正(CE),继续运行
→ 双比特错误:上报 UCE → MCE → 系统可能重启
这种多层保护让服务器的内存在极端环境下也能可靠运行。Summary
- On-Die ECC: Inside DDR5 dies; 4-bit ECC per 64-bit; protects against internal DRAM cell errors
- Sideband ECC: New DDR5 feature; 40-bit x 2 channels + 10-bit ECC; sideband transmission doesn’t use main channel bandwidth
- System ECC: Register chip on RDIMM/LRDIMM; 72-pin DIMM; 8-bit ECC; system-level protection
- Three-Layer Collaboration: On-Die → Sideband → System; layered protection; single-bit errors corrected at multiple layers; multi-bit errors ultimately reported as MCE
- Non-Substitutable: On-Die ECC is not the same as system ECC; it only works inside the die
Next (H09): How are memory modules manufactured? PCB production, die soldering, testing, and burn-in screening. Why can some modules reach 4800 while others only 2400?
Comments