本文将mark下DRAM Chipkill技术的相关notes。

Prerequisite

DRAM components

What

Chipkill 是一种高级内存 ECC 保护技术,它可以容忍一整颗 DRAM 芯片(chip)发生故障,而系统仍然能够正常运行。

简单理解:普通 ECC 只能保护几个 bit 出错,而 Chipkill 可以保护“一整颗 DRAM 芯片坏掉”。

Why

传统 ECC可以解决:

  • 单 bit 错误
  • 少量 bit 错误
1
2
3
4
5
6
DRAM
|
| 一个 bit 出错
v

ECC 修复

但是现代 DRAM 可能出现更严重的问题:

例如:

1
2
3
4
5
6
7
8
9
一个 DRAM 芯片损坏



大量 bit 同时错误



普通 ECC 无法恢复

原因是随着:

  • DRAM 容量越来越大
  • 芯片数量越来越多
  • 制程越来越小

单个 DRAM 芯片失效带来的影响越来越大

因此需要:

一种能够抵御“整个芯片坏掉”的保护机制。

这就是 Chipkill。

核心思想

一句话:

不要让一颗 DRAM 芯片负责一个完整的数据块,而是把数据分散到多个 DRAM 芯片,并增加额外校验信息,使任何一颗芯片坏掉后都能恢复数据。

普通 ECC

假设一个数据:

1
2
Data:
A B C D

可能来自Chip0,如果 Chip0 坏:

1
A B C D 全丢

ECC 很难恢复。

Chipkill

重新组织数据:

1
2
3
4
5
6
7
8
          数据分散

Chip0 A
Chip1 B
Chip2 C
Chip3 D

Chip4 校验信息

如果Chip2 坏,系统:

1
2
3
4
5
6
7
8
9
A
B
?
D
校验信息



恢复 C

所以:

1
2
3
一个 chip 故障

数据仍然可恢复

How

数据分散存储

不要:

1
一个 chip 保存连续数据

而是:

1
多个 chip 共同组成一个 ECC 数据块

这样一个 chip 故障,只影响部分数据。

增加更强 ECC 信息

除了数据,还保存:

1
数据 + 校验信息

当某个 chip 消失,通过校验信息,重新计算缺失数据。

Example

Chipkill vs 普通 ECC

普通 ECC Chipkill
保护范围 bit 错误 整个 DRAM chip 故障
主要目标 小错误 大规模故障
成本 更高
可靠性 一般 更高
应用 普通服务器 高可靠服务器/HPC

为什么叫 Chipkill?

名字含义:

即使一个 chip “被杀死”(kill),系统仍然能够工作。

也就是:

1
2
3
4
5
6
7
8
9
Chip failure



Chipkill ECC



系统继续运行

在 DRAM RAS 中的定位

现代内存保护通常是多层:

1
2
3
4
5
6
7
8
9
10
DRAM Cell
|
|
On-Die ECC
|
|
Chipkill ECC
|
|
系统软件 RAS

其中:

  • On-Die ECC: 解决 DRAM 内部小错误
  • Chipkill: 解决 DRAM 芯片级故障
  • OS/RAS: 负责故障隔离、替换等

价值

因为真实 DRAM fault 研究发现,错误并不只是:

1
单 bit error

还包括:

1
2
3
4
Row fault
Column fault
Bank fault
Chip fault

例如A Study of DRAM Failures in the Field(SC’12) 发现大量 multi-bit fault,并证明:

Chipkill 相比 SEC-DED(Single Error Correction Double Error Detection) ECC,可以显著降低不可纠正错误(UE)。论文中报告 Chipkill 可将节点因 DRAM 错误导致的失败率降低约 42 倍。

总结

通过数据分散 + 更强 ECC,让系统能够承受一整颗 DRAM 芯片失效,而不会丢失数据。它解决的是传统 ECC 无法处理的大规模 DRAM 故障问题,是服务器和 HPC 系统提高内存可靠性的关键技术。

AMDC

AMD’s Advanced Memory Device Correction (AMDC) which is designed to correct any number of faults occurring within a single DRAM device in a rank.

可以简单认为:

1
2
3
4
5
6
7
8
9
Chipkill
=
一种思想:
保护一颗 DRAM device 故障


AMDC
=
AMD 实现的一种类似 Chipkill 的机制

区别主要是:

  • Chipkill 是 IBM 提出的通用概念
  • AMDC 是 AMD 平台上的具体实现

A Systematic Study of DDR4 DRAM Faults in the Field论文中对 Chipkill的描述:

Chipkill ECC 可以纠正限制在单个 DRAM device 内的错误。

DDR5 DRAM Faults in the Field论文中对AMDC的描述:

纠正单颗 DRAM device 内任意数量的错误。

与OD-ECC的协作

1
2
3
4
5
6
7
DRAM 芯片内部:On-Die ECC

主要纠正芯片内部的单 bit 错误

内存控制器侧:Chipkill / AMDC

主要纠正一整颗 DRAM device 范围内的错误

The presence of OD-ECC in addition to AMDC can increase DRAM reliability by eliminating the risk that a single-bit fault in one DRAM device and a device fault in another DRAM device will be uncorrectable.

两者叠加后,On-Die ECC 先隐藏小规模单 bit 故障,Chipkill 再保护更严重的 device-level 故障。DDR5 DRAM Faults in the Field论文指出,这种组合能避免“一颗芯片已有单 bit 故障、另一颗芯片又发生 device fault”时直接变成不可纠正错误。


参考资料:

  1. Lecture 6: Chipkill, PCM
  2. A Study of DRAM Failures in the Field(SC’12)
  3. DDR5 DRAM Faults in the Field(DSN-S’25)
  4. Advanced Memory Device Correction (AMDC) for Servers
  5. A Systematic Study of DDR4 DRAM Faults in the Field(HPCA’25)