本文将mark下DDR5 Bounded Fault ECC技术的相关notes。

Prerequisite

Overview

Bounded Fault ECC 的核心是DDR5 通过约束 DRAM 内部故障(fault)到外部数据输出(DQ pins)的映射关系,使某些故障的影响范围是确定且有限的(bounded),因此 ECC 不需要按照“整颗 DRAM 芯片完全损坏”的最坏情况设计,从而降低 ECC 开销。

Why

先看传统 Chipkill。

一个 DRAM device 内部:

1
2
3
4
5
6
7
       DRAM device

Memory Array
|
----------------
| |
DQ0 DQ3

内部可能发生很多故障:

  • 一整列坏
  • 一些 row 坏
  • bank 坏
  • 外围电路坏

关键问题:

系统看到的是 DQ pin 上的数据错误,但不知道内部 fault 会扩散到多少 DQ。

例如一个 row fault:

  • 情况1
1
2
3
4
5
内部 fault



DQ0 出错
  • 情况2
1
2
3
4
5
内部 fault



DQ0,DQ1 出错
  • 情况3
1
2
3
4
5
内部 fault



DQ0,DQ1,DQ2,DQ3 全错

如果没有额外保证,系统只能按照最坏情况:

1
整个 DRAM device 可能失效

来设计 ECC。

这就是 Chipkill 的思想。

核心思想

DDR5 换了一种思路,不是:

“我假设 DRAM 任意地方都可能坏。”

而是:

“我在 DRAM 内部设计阶段限制故障传播范围,让系统知道某些 fault 最大会影响多少数据。”

这就是Fault Bounding(故障边界限制)

举个简单例子,假设某个 DRAM 内部 row fault。

传统 DRAM

1
2
3
4
5
6
7
8
Row fault

可能影响:

DQ0
DQ1
DQ2
DQ3

系统不知道范围,所以ECC保护4个DQ

DDR5 bounded fault

规定这个 row fault最多影响:

1
2
DQ0
DQ1

不会影响:

1
2
DQ2
DQ3

那么系统知道最大故障范围 = DQ0~DQ1,于是 ECC只需要覆盖这个bounded region,而不是整个 DRAM device。

要点

1
2
3
Bounded Fault =
某些定义好的 fault mode
具有确定的最大影响范围

例如:

  • 某些 row fault
  • 某些 column fault
  • 某些内部阵列故障

DDR5 标准规定这些 fault 到 DQ 的映射满足某些约束。

A Systematic Study of DDR4 DRAM Faults in the Field原文描述:

DDR5 bounded fault 的目标,是保证 DRAM 内部组件(例如 row)如何映射到 DRAM data pins,使系统设计者能够设计覆盖特定 fault mode 的 ECC。

所以重点是fault propagation boundary。

降低 ECC 成本

Chipkill保护整个 DRAM device

例如:

1
2
3
4
DQ0
DQ1
DQ2
DQ3

全部可能坏。

因此需要强ECC。

BF ECC保护有限范围

例如:

1
2
DQ0
DQ1

可能错误。

那么ECC只需要纠正这个范围即可。

所以:

1
2
3
4
5
6
7
保护范围减少

ECC校验位减少

减少ECC DRAM数量

降低成本 / 提高容量效率

Example

传统 Chipkill:

1
2
3
4
5
6
7
10×4

8颗 x4 DRAM:
数据

2颗 x4 DRAM:
ECC

即:

1
8 data + 2 ECC

如果使用 BF ECC:
因为故障范围已经被限制,可以:

  • 释放部分 ECC 位;
  • 或减少 ECC 芯片。

例如:

1
2
3
4
9×4

8颗数据
1颗ECC

A Systematic Study of DDR4 DRAM Faults in the Field指出:bounded fault ECC 可以释放校验位,甚至减少一个 DRAM device。

On-Die ECC与BF ECC 的关系

DDR5:

1
2
3
4
5
6
7
8
9
10
11
12
      DRAM chip内部

DRAM Cell Array
|
On-Die ECC
|
DQ pins
|
|
Memory Controller
|
外部 ECC

On-Die ECC解决DRAM芯片内部的小错误,例如:单 bit cell error。它发生在DRAM内部。

Bounded Fault ECC解决:经过DRAM输出之后,系统看到的较大fault。它发生在:Memory Controller侧。

两者关系:

1
2
3
4
5
6
7
On-Die ECC

过滤小错误

Bounded Fault ECC

降低外部ECC保护范围

BF ECC 的代价

可靠性下降

如果 fault 超过 bounded 范围:例如设计认为最多影响 DQ0,DQ1,但是实际:DQ0,DQ1,DQ2,DQ3都坏,那么BF ECC无法保证恢复。

这就是unbounded fault,A Systematic Study of DDR4 DRAM Faults in the Field通过 DDR4 field data 建模发现,一些 fault,例如:

  • two-column;
  • cluster-row;

可能属于 unbounded fault。

因此BF ECC 相比 Chipkill 会增加 UE(不可纠正错误)。

流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
           DRAM内部故障

|
|
+----------------+
| |
v v


普通 DRAM DDR5 BF设计

不知道影响范围 限制fault传播范围

| |
| |
v v

按最坏情况保护 按bounded范围保护


| |
| |

Chipkill Bounded Fault ECC


| |

ECC开销大 ECC开销小

总结

Chipkill Bounded Fault ECC
假设 一整颗 DRAM 可以坏 故障影响范围有限
保护范围 最大 较小
ECC 开销
成本
可靠性 更强 略弱
依赖 不需要 DRAM 保证 需要 DDR5 保证 fault bounding
可靠性 更高 略低

DDR5 不再让系统假设“一颗 DRAM 芯片可能完全坏掉”,而是在 DRAM 内部设计阶段限制某些 fault 的传播范围,使系统提前知道错误最多影响哪些 DQ pins。这样 ECC 就可以针对有限 fault boundary 设计,而不是采用保护整个 DRAM device 的 Chipkill,从而减少 ECC 校验开销,提高容量效率。

简单记:

1
2
3
4
5
Chipkill:
不知道坏多大 → 准备救整颗芯片

Bounded Fault ECC:
提前限制坏多大 → 只准备救这个范围

这也是为什么它叫 Bounded Fault(有边界的故障)


参考资料:

  1. A Systematic Study of DDR4 DRAM Faults in the Field(HPCA’25)
  2. Improving Memory Reliability by Bounding DRAM Faults(MEMSYS’20)