本文将mark下Adaptive Double Device Data Correction(ADDDC)的相关notes。

What

ADDDC 是一种针对 DRAM device(DRAM 芯片级故障)的自适应 ECC 保护技术。

核心思想:

Memory Controller 监测到某个 DRAM device 存在失效风险时,动态启用更强的 ECC 保护能力,使系统能够容忍该 device 失效,避免系统崩溃。

简单流程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
正常运行
|
v
普通ECC保护
|
检测到device错误趋势增加
|
v
开启 ADDDC
|
v
增强ECC保护
|
device最终失效
|
v
系统继续运行

Why

DRAM device 故障通常有演进过程

实际服务器中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
正常DRAM

|
v

Correctable Error (CE) 增加

|
v

Device退化

|
v

Device Failure

|
v

Uncorrectable Error (UE)

如果等到 device 完全失效:

1
2
3
4
5
6
7
Device failure
|
v
ECC无法恢复
|
v
系统故障

因此需要提前发现风险,并提升保护能力

为什么不一直使用 Chipkill?

Chipkill 同样可以容忍 DRAM device 故障。

但是 Chipkill 的问题:

持续性能开销

Chipkill 需要一直运行更强的 device-level ECC:

1
2
3
4
5
6
7
8
普通ECC:

bit error correction


Chipkill:

device failure correction

因此 Memory Controller 需要:

  • 更复杂ECC decoder
  • 更复杂的数据重构逻辑
  • 更高的访问处理复杂度

结果:

  • ECC decode latency增加
  • memory access path更复杂
  • 功耗增加

即:

即使DRAM完全健康,也一直支付高可靠性保护成本。

ECC资源/容量开销无法避免

Chipkill需要更多ECC冗余:

  • 通常采用 x4 DRAM organization
  • 需要更多ECC symbol

因此:

  • DIMM有效容量利用率降低
  • ECC开销增加

这一点 ADDDC无法消除

ADDDC主要优化的是性能开销,而不是ECC容量开销

How

ADDDC主要由Integrated Memory Controller(IMC)实现。

架构:

1
2
3
4
5
6
7
8
9
10
            CPU

|
|
Integrated Memory Controller
|
ECC / RAS Logic
|
|
DRAM DIMM

Step 1:监测 DRAM device 错误

Memory Controller统计:

  • Correctable Error (CE)
  • device错误趋势

例如:

1
2
3
4
5
6
Chip3:

CE:
10
100
10000

判断:

1
Chip3可能即将失效

Step 2:动态切换保护模式

正常:

1
2
3
Normal ECC

低开销

发现风险:

1
2
3
4
Normal ECC
|
v
ADDDC mode

切换到更强 ECC 保护。

Intel 文档强调:

The dynamic nature of the operation makes the performance implications material only after the DRAM device is detected to be failing.

含义:只有检测到 DRAM device 正在失效后,ADDDC带来的性能影响才出现。

Step 3:device失效后仍可恢复数据

例如:

1
2
3
4
DRAM:

Chip0 Chip1 Chip2 Chip3
X

ADDDC:

1
2
3
4
5
6
7
8
9
10
11
Chip3 failure

|
v

ECC reconstruction

|
v

Correct data

避免:

1
2
3
4
DRAM device failure
|
v
System crash

ADDDC vs Chipkill

Chipkill ADDDC
目标 容忍DRAM device故障 容忍DRAM device故障
保护方式 固定开启 动态开启
正常运行成本 持续存在 较低
故障风险出现后 无变化 提升保护
主要优化点 最高可靠性 可靠性与性能平衡

简单理解:

1
2
3
4
5
6
7
8
9
Chipkill:

一直穿防弹衣


ADDDC:

平时轻装运行
发现危险再穿防弹衣

ADDDC vs Memory Sparing

ADDDC Memory Sparing
核心 增强ECC纠错 替换故障内存
是否需要备用memory 需要
动作 继续使用device并纠错 切换到spare资源
目标 容忍故障 避免使用故障区域

总结

ADDDC 是一种预测驱动的 DRAM RAS 技术:Memory Controller 通过监控 DRAM device 错误趋势,在 device 即将失效时动态提升 ECC 保护能力,使系统能够容忍 device 级故障。

相比 Chipkill:

  • ADDDC不能消除ECC容量开销
  • 优势在于避免Chipkill长期开启带来的性能开销
  • 只有检测到故障风险时才进入高保护模式

演进关系:

1
2
3
4
5
6
7
8
9
10
11
普通ECC
|
v
Chipkill
(一直高保护,高可靠,高成本)

|
v

ADDDC
(预测故障,按需增强保护)

ADDDC 的核心价值就是:用故障预测换取更低的长期性能成本


参考资料:

  1. Intel® Xeon® 6 Processors with Performance-cores (P-cores): Reliability, Availability, and Serviceability
  2. New Reliability, Availability, and Serviceability (RAS) Features in the Intel® Xeon® Processor Family