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:

Bash
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

Bash
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 的系统级 ECC

Sideband ECC: A New Feature of DDR5

Bash
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

Bash
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

Bash
多层 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?


Last modified: 2024年6月20日

Author

Comments

Write a Reply or Comment

Your email address will not be published.