本文将mark下Post Package Repair(PPR)的相关notes。

What

PPR(Post Package Repair)是一种 DRAM内部的修复(repair)机制,通过备用 Row(spare row)替换故障 Row,使DRAM继续可靠工作

简单理解:

PPR = DRAM发现某个row永久失效后,把该row映射到备用row。

例如:

1
2
3
4
5
6
7
8
9
DRAM Bank

Row0
Row1
Row2 ----> faulty
Row3

Spare Row0
Spare Row1

执行PPR:

1
2
3
4
Row2  ----------+
|
v
Spare Row0

之后:

1
2
3
4
5
6
7
8
9
10
11
访问 Row2

|
v

DRAM内部repair logic

|
v

Spare Row0

对上层:

  • CPU不知道
  • OS不知道
  • 应用不知道

访问地址保持不变。

PPR属于Memory Sparing的一种

这里需要特别强调:
PPR不是独立于Memory Sparing之外的技术,而是Memory Sparing的一种具体实现

层次关系:

1
2
3
4
5
6
7
8
9
10
Memory Sparing
|
+----------------+
| |
DRAM内部Sparing System级Sparing
| |
| |
PPR Rank/DIMM Sparing
|
Spare Row

所以:

  • PPR:row级memory sparing
  • Rank sparing:rank级memory sparing

Why

DRAM故障通常是局部永久故障

DRAM长期运行后可能出现:

  • bad cell
  • bad row
  • weak row

错误趋势:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
正常

|
v

Correctable Error增加

|
v

Row failure

|
v

Uncorrectable Error

如果不处理:

1
2
3
4
5
6
7
Bad Row
|
v
UE
|
v
系统故障

PPR提供:

1
2
3
4
5
6
7
8
9
10
11
发现坏Row

|
v

替换Row

|
v

继续运行

ECC无法解决所有DRAM故障

ECC主要解决bit error

例如:

1
2
3
4
5
6
single bit flip

|
v

ECC correction

但是整个Row失效属于更大粒度故障:

1
2
3
4
Row failure
|
v
ECC能力不足

因此需要:

  • ECC:纠错
  • PPR:修复/替换坏资源

How

PPR依赖三个部分:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
       CPU

|
|
Memory Controller

|
DDR Command

|
v

DRAM

+-------------+
| Repair Logic|
| Spare Rows |
+-------------+

Bad Row
|
v
Spare Row

Step 1:发现故障Row

来源可能包括:

  • ECC error统计
  • Memory Patrol Scrub
  • DRAM内部检测
  • RAS软件策略

例如:

1
2
3
4
Bank 3
Row 100

CE数量持续增加

判断:

1
Row 100可能永久故障

Step 2:发送PPR命令

Memory Controller发送repair command:

1
Repair(Row100)

DRAM内部:

1
2
3
4
Row100
|
v
Spare Row

建立映射关系。

Step 3:后续访问自动重定向

之后:

1
2
3
CPU访问:

Bank3 / Row100

实际:

1
Bank3 / Spare Row

软件无感知。

分类

Intel Xeon 6 RAS文档中提到:

supports both runtime soft Post Package Repair (sPPR) and power-up hard Post Package Repair (hPPR)

也就是说:

  • sPPR:运行时修复
  • hPPR:启动阶段永久修复

Hard PPR (hPPR), for a permanent row repair, and Soft PPR (sPPR), for a temporary row repair.

hPPR

特点:永久修复

流程:

1
2
3
4
5
6
7
8
9
10
11
PPR

|
v

Repair information写入非易失存储

|
v

Power cycle后仍有效

适合:

  • 永久坏row
  • 长期修复

sPPR

特点:临时修复

流程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
运行期间发现坏row

|
v

建立临时repair mapping

|
v

继续运行

|
v

掉电失效

适合:

  • runtime recovery
  • 临时避免故障

PPR和Memory Sparing区别

二者关系:

PPR是Memory Sparing的一种。

区别主要在粒度:

PPR Rank/DIMM Sparing
粒度 Row Rank/DIMM
位置 DRAM内部 Memory Controller/平台
备用资源 Spare Row Spare Rank/DIMM
控制者 DRAM内部repair logic Memory Controller/RAS firmware

PPR vs ADDDC vs Chipkill

它们解决不同问题:

1
2
3
4
5
6
7
8
9
             DRAM Reliability

|
--------------------------------
| | |
ECC ADDDC PPR
| | |
bit error device fault row failure
correction correction repair

简单理解:

技术 解决的问题
ECC bit错误
Chipkill chip/device故障
ADDDC 预测device故障并增强保护
PPR 替换坏row

总结

Post Package Repair(PPR)是DDR5时代重要的DRAM RAS技术,本质是一种row-level Memory Sparing:当DRAM某个row出现永久故障时,利用备用row建立地址重映射,使坏row被透明替换,从而避免故障升级为系统错误。DDR5进一步支持sPPR(运行时临时修复)和hPPR(永久修复)。


参考资料:

  1. Unification of RAS feature control - Enhancing EDAC
  2. Intel® Xeon® 6 Processors with Performance-cores (P-cores): Reliability, Availability, and Serviceability
  3. Micron® DDR5 SDRAM: New Features
  4. Post Package Repair (PPR) Types and SEL Events on Purley and Whitley Platforms
  5. Post Package Repair (PPR)