作者/机构:
Hoiju Chung (SK hynix America), Euisang Oh (SK hynix America), Seungmin Baek (SK hynix America), Hyeongshin Yoon (SK hynix America), Jaesung Yoo (SK hynix America), Sanghwan Lee (SK hynix America), Yongjun Lee (Microsoft), Arhatha Bramhanand (Microsoft), Brett Dodds (Microsoft), Yang Zhou (University of Illinois Urbana-Champaign), Nam Sung Kim (University of Illinois Urbana-Champaign)
本文针对 DRAM 技术缩减带来的可靠性挑战,提出了一套精细化的 DRAM 故障分类方法和相应的内存故障管理策略。研究的核心目标是建立一个不依赖于 DRAM 类型和技术节点的现场可靠性管理系统,并特别关注了首次集成片上 ECC (IDECC) 的 DDR5 DRAM 的错误行为。
核心问题与研究目标:
创新点与关键洞见:
关键洞见 1: DRAM 的故障和错误行为
关键洞见 2: 日志收集方法
关键洞见 3: 片上 ECC 对分类的影响
关键洞见 4: 内存 RAS 管理系统
这些发现为 DRAM 故障的诊断和缓解提供了宝贵的见解,并为未来内存系统的 RAS 功能开发提供了信息。
可靠性定义 本研究严格区分了失效(failure)、错误(error)和故障(fault)。失效是指导致不正确操作的事件。错误是故障在执行过程中的表现。故障是导致这种错误的原因。此外,故障移除是通过将故障从操作中排除来消除其影响的过程,而内存 RAS 行为是为移除内存故障而采取的故障移除措施。
系统级错误检测与纠正能力 DRAM 错误的分类取决于内存控制器中实现的 ECC 的错误检测和纠正能力【索引6,Basic concepts and taxonomy of dependable and secure computing,2004,IEEE Transactions on Dependable and Secure Computing】。现场可能发生的错误类型分为以下几类:
本节描述了 DDR4 和 DDR5 DRAM 的模块架构,为理解我们的 DRAM 故障分类方法提供必要的背景。
DDR4 2Rx4 RDIMM 架构 图1a 展示了在超大规模数据中心中广泛使用的 DDR4 2Rx4 ECC RDIMM 的架构。它包含两个 rank(2R),每个 rank 有 18 个 DDR4 x4 DRAM 芯片,其中两个芯片用于存储 ECC 校验位。DRAM 故障分析的一个关键方面是理解 DIMM DQs 和 DRAM 芯片 DQs 之间的连接。通常,DIMM DQs 和 DRAM DQs 之间的连接(或映射)是交错的(图1a-S),这种交错方式根据 DRAM 芯片在给定 DIMM 上的物理位置而变化,以优化信号完整性。因此,这种映射在不同的 DIMM 类型之间是不同的。这些映射信息可以从每个 DIMM 上安装的串行存在检测(SPD)中获取。此外,在某些情况下,为了减少因同时向一个 rank 内的所有 DRAM 芯片发送地址信号而引起的同步开关噪声(SSN),RDIMM 中的寄存器时钟驱动器(RCD)会根据 DRAM 芯片在 RDIMM 上的位置(图1a-L 或 R)和 rank ID(图1a-0 或 1)来反转地址信号。因此,在分析 DRAM 故障时,也必须考虑 DIMM 地址信号和 DRAM 地址(DA)信号之间的映射。
DDR5 2Rx4 RDIMM 架构 图1b 展示了自 2020 年起被超大规模数据中心开始部署的 DDR5 2Rx4 ECC RDIMM 的架构。与 DDR4 2Rx4 ECC RDIMM 相比,它有两个主要区别。首先,它将通道分为两个可独立寻址的子通道,以提供更高的内存级并行性(MLP)。其次,一个子通道提供 8 个数据位芯片和两个 ECC 校验位芯片(也称为 DDR5 10x4 ECC RDIMM)。因此,在一个 rank 内,DIMM DQs 和 DRAM 芯片 DQs 之间的连接在 DDR4 和 DDR5 2Rx4 ECC RDIMM 之间是不同的。此外,它在 RDIMM 上集成了一个电源管理 IC(PMIC),以提高向每个 DIMM 供电的效率。
要根据内存控制器观察到的显现错误来识别哪个 DRAM 电路组件存在故障,必须了解工业界的 DRAM 设备架构,这使我们能够确定 DRAM DQ 与导致在 DRAM DQ 处观察到的错误的故障 DRAM 电路组件之间的连接。本节首先描述两种代表性的工业界 DDR4 DRAM 设备架构。其次,描述一种工业界 DDR5 DRAM 设备架构。尽管工业界已开始部署 DDR5 DIMM,但 DDR4 DRAM 设备的架构与 DDR5 DRAM 设备的架构相似,并且数百万计的 DDR4 DIMM 已经部署并将至少在未来几年内继续使用。
深入理解 DRAM 架构 图 2 展示了 DDR4 x4 DRAM 设备的层次结构,它由四个 Bank Group (BG) 组成。一个 BG 包含四个 bank,每个 bank 都有一个二维的 MAT 阵列。MAT 是指一个由 $N_{BL}$ 条位线 (BL)、$N_{SWL}$ 条子字线 (SWL) 和 $N_{BL} \times N_{SWL}$ 个 DRAM 单元组成的阵列。我们将所有在字线 (WL) 和位线 (BL) 方向上对齐的 MAT 分别称为 RowMAT 和 ColMAT(图 2-R 和 C)。一个 RowMAT 和一个 ColMAT 中的 MAT 数量分别称为 $N_{MAT\_in\_RowMAT}$ 和 $N_{MAT\_in\_ColMAT}$。虽然 $N_{BL}$, $N_{SWL}$, $N_{MAT\_in\_RowMAT}$ 和 $N_{MAT\_in\_ColMAT}$ 在不同产品、代和制造商之间有所不同,但本文中我们假设它们分别为 1024、X、Y 和 8。
行激活过程 当接收到针对特定 bank 的激活 (ACT) 命令时,给定的行地址 (RA) 会以层次化的方式进行解码。行解码器 (RowDec) 首先驱动一条主字线 (MWL) 和预解码的行地址信号——FX 和 /FX (即反相的 FX),这些信号作用于与该 RA 对应的 RowMAT 内。一条 MWL 连接到 RowMAT 中跨越多个 MAT 的一组子字线驱动器 (SWD)。对于一个 RowMAT 的偶数地址行,有四个 SWD,每个都位于 RowMAT 中的 MAT[i] 和 MAT[i + 1] 之间,其中 i ∈ {0, 2, 4, 6} (图 2-E),并驱动两条 SWL。对于一个 RowMAT 的奇数地址行,有五个 SWD,分为两种类型:(T1) 三个 SWD,每个都位于 RowMAT 中的 MAT[i] 和 MAT[i + 1] 之间,其中 i ∈ {1, 3, 5},并驱动两条 SWL;(T2) 两个 SWD 分别位于 MAT[0] 和 MAT[7] 的边缘 (图 2-O),每个驱动一条 SWL。这种在 RowMAT 中跨 MAT 的 SWD 布局,在偶数和奇数地址行之间呈之字形交错,是必要的,因为一个 SWD 的高度是一个 MAT 中 SWL 高度的两倍。在 RowMAT 中,两个 MAT 之间跨越八行的四个 SWD 组(图 2-S)连接到一条 MWL,其中一个 SWD 由 FX 和 /FX 信号选择,以驱动一条或两条 SWL。随后,位于两个 RowMAT 之间的 $N_{BL} \times N_{MAT\_in\_RowMAT}$ (= 1024×8) 个位线传感放大器 (BLSA) 感测由这八条 SWL 激活的 DRAM 单元驱动的 BL,并将这些 DRAM 单元的位值存储在这些 BLSA 中。
精确定位故障 SWD 故障可能发生在上述任何 DRAM 电路组件中,当故障组件位于内存控制器访问这些位的信号路径上时,它们会表现为位值的错误。同时,我们基于对超大规模数据中心数百万个 RDIMM 的大规模现场监控分析发现,大多数错误是由故障的 SWD 和 SWD 相关组件引起的 (§4)。因此,为了进行精确的 DRAM 故障分析,必须正确确定在特定突发中观察到的四个 DRAM DQ 上的错误与导致这些错误的 SWD 位置之间的联系。
SWD 边界分析 图 3 首先描绘了一个 bank 中的一个 RowMAT,并显示了在每个 beat 中哪个 MAT 的 SWL 负责为四个 DRAM DQ 提供四位数据。此后,我们将第 i 个 beat 称为 B[i],其中 i ∈ {0, 1, ..., 7}。设备 A 分别在 B[i] 和 B[i+1] 时,为四个 DRAM DQ 提供来自特定 MAT 的 SWL(图 3 中蓝色的“SWL 边界”)激活的 DRAM 单元的 8 位数据。也就是说,RowMAT 中的不同 MAT 负责在不同 beat 时向四个 DRAM DQ 发送数据。同时,设备 B 根据 RA[m],仅提供来自一个 MAT 的 SWL 激活的 DRAM 单元的高 4 位或低 4 位,用于 B[i] 时的四个 DRAM DQ。也就是说,一个特定的 MAT 负责在特定的 beat 时向四个 DRAM DQ 发送四位数据。
故障影响范围 其次,基于对 SWL 边界的理解,图 3 还说明了在每个 beat 中哪个 SWD 负责为四个 DRAM DQ 提供四位数据(图 3 中蓝色的“SWD 边界”)。对于 RowMAT 的奇数和偶数地址行,分别由绿色和橙色的 SWD 驱动 SWL。对于奇数地址行,设备 A 使用左侧两个 SWD(图 3-1 和 2)或右侧两个 SWD 以及中间的 SWD(图 3-3)来驱动 SWL,分别为 B[0:1]、B[2:5] 和 B[6:7] 时的四个 DRAM DQ 提供四位数据。例如,当故障发生在图 3-2 处时,可能会导致 B[2:5](图 3-6)时四个 DRAM DQ 上的所有 16 位都出现错误,这可能或可能不被系统级 ECC 的错误覆盖范围所纠正。设备 B 使用所有五个 SWD 驱动 SWL,分别为 B[0]、B[1:2]、B[3:4]、B[5:6] 和 B[7] 时的四个 DRAM DQ 提供四位数据。对于偶数地址行,设备 A 使用左侧两个 SWD(图 3-4 和 5)或右侧两个 SWD 驱动 SWL,分别为 B[0:3] 和 B[4:7] 时的四个 DRAM DQ 提供四位数据。例如,如果故障发生在图 3-4 处,可能会在 B[0:3](图 3-7)时导致所有 16 位出现错误,这可能或可能不被系统级 ECC 的错误覆盖范围所纠正。设备 B 使用所有四个 SWD 驱动 SWL,分别为 B[0:1]、B[2:3]、B[4:5] 和 B[6:7] 时的四个 DRAM DQ 提供四位数据。由于来自一个 MAT 中 SWL 激活的 DRAM 单元的位在突发期间的每个 beat 中为四个 DRAM DQ 提供四位数据,因此我们将设备 A 和 B 称为突发对齐架构。
本节介绍了一种用于对 DRAM 故障进行分类的方法。我们将 DRAM 故障定义为“一个包含在特定时间段(观察期)内发生的所有错误,与 DRAM 层次结构对齐,并具有自身时间行为模式的分类”。我们的分类方法基于两个基本轴:错误的空间分布和错误的时间行为。错误的空间分布通过将物理地址(PA)转换为相应的 DRAM 地址(DA)来分析。然后根据 DIMM 中的层次结构进行分类,以识别故障位置。错误的时间行为根据错误在显现后持续的时间及其发生频率进行分类。这种分类有助于我们推断故障原因并预测未来的错误趋势。
我们在 §4.1、§4.2 和 §4.3 中详细解释了我们提出的分类方法。随后,在 §4.4 中讨论了选择观察期的理由。
空间故障分类定义 在一个观察期内,发生的错误会根据设备特定的体系结构层次进行累积。确定包含电路边界内所有错误的最小层次结构的过程称为空间故障分类。我们提出的方法首先区分局限于单个 bank 内的故障和跨越多个 bank 的故障。这种区分至关重要,因为错误模式及其预后意义根据故障是分布在单个 DRAM bank 内还是跨多个 bank 而有显著不同。
Intra-bank 故障 DRAM bank 是密集封装的有源和无源器件的集合,以重复结构排列。大多数 DRAM 故障都属于 intra-bank 故障类别,因为 bank 是最小特征尺寸电路的集合。
有界故障与无界故障 在各种类型的 intra-bank 故障中,某些故障边界尤为明显。有界故障(Bounded faults),记为 b,指局限于垂直和水平方向上相邻的 4 个 MAT 内的故障,这些 MAT 共享 BLSA 和 SWD(2×2 MAT,图 6 中的蓝色框)。而未局限于此边界内的故障则为无界故障(unbounded faults),记为 ub。除了 DRAM 单元,bank 内最容易出现故障的组件是 SWD、其控制逻辑、BLSA 以及与 BLSA 相关的电路,因为它们在 MAT 之间高度集成。典型的有界故障如图 7 所示。由于 SWD 由多个预解码信号如 $MWL(i)$ 和 $MWL(i+1)$ 激活,SWD 相关故障倾向于遵循与缺陷的层次位置相关的特定 RA 模式。例如,如果图 7d 中红色线所示的 $MWL(i+1)$ 信号发生故障,则会观察到在两个相邻 MAT 之间 RA 间隔为 8 的多个 SWL 上出现错误。
空间故障子类 根据错误的空间分布,DRAM 故障大致分为五大类:单地址(SA)故障、列(COL)故障、单行(ROW)故障、多行(MROW)故障、阵列 MAT(MAT)故障。此外,空间故障分类被细分为 20 个子类,这些子类取决于错误位位置的数量 (#error bit locations)、一个 ColMAT 中的 MAT 数量 (#$N_{MAT}$ ) 和一个 RowMAT 中的 MAT 数量 (#$N_{MAT}$),两个 MAT 在一个 ColMAT (adj $N_{MAT}$) 和一个 RowMAT (adj $N_{MAT}$) 中是否相邻,故障行的数量 (#faulty rows) 和故障列的数量 (#faulty cols),以及故障行之间的间隔 (#interval),提供了一个全面的分类法:
MAT 故障: 当错误出现在多个 RA 和多个 CA 上时分类。有 6 个子类:MR1C (#$N_{MAT}$ ≤ n; 取决于替换架构, #$N_{MAT}$ = 1, #faulty rows ≤ 2), MR1R (#$N_{MAT}$ ≤= 2, #faulty rows ≤ 2), MR2b (#$N_{MAT}$ ≤ 2, adj $N_{MAT}$), MRMC1b (#$N_{MAT}$= 1, #$N_{MAT}$ ≥ 1), MR2post (#$N_{MAT}$ ≥ 1, #$N_{MAT}$ ≤ 2), 和 MRMpost (其他)。
Inter-bank 故障 当错误在单个 DIMM 内的多个 bank 之间显现时,它们被归类为 inter-bank 故障。尽管这些故障的发生频率远低于 intra-bank 故障,但也能观察到与 DIMM 层次结构相关的错误边界。这类故障通常难以通过测试重现,但确实存在。根据经验观察,inter-bank 故障分为两大类:单芯片故障(Single-die faults)和多芯片故障(Multiple-die faults)。单芯片故障有两个子类:数据线故障(Data-line faults)和多 bank 故障(Multiple-bank faults)。数据线故障是由 bank 之间共享的数据线结构引起的故障,而多 bank 故障是可以影响多个 bank 的故障。此外,多芯片故障有 3 个子类:DIMM-IO 故障、Rank 故障和 DIMM 故障。DIMM-IO 故障涉及 DIMM 内 rank 之间共享的 DQ 通道。Rank 故障发生在 DIMM 的同一 rank 内。最后,DIMM 故障是影响 DIMM 内多个 rank 的故障。
时间故障分类方法 图 8a 展示了通过时间故障分析对故障进行分类的方法。瞬态故障(Transient faults,记为 t)表示在观察期内错误只发生一次。偶发性故障(Sporadic faults,记为 s)表示在观察期内错误发生不止一次,但在一个清理周期后消失。
错误存在持续时间 (DEP) 的定义 图 8b 说明了错误存在持续时间(Duration of Error Presence, DEP),即在观察期内错误存在的总时间。DEP 由两种操作决定:需求读取(demand read)和巡检(patrol scrub)。由于由主机需求驱动的读取操作在地址访问上是不规则的,确定错误状态的持续时间是模糊的。相反,巡检操作保证了周期性,从而能够估计错误状态的持续时间。间歇性故障(Intermittent faults,记为 i)表示在观察期内的 DEP 大于一个清理周期但小于或等于观察期的 50%。永久性故障(Permanent faults,记为 p)表示在观察期内的 DEP 超过观察期的 50%。时间故障分析结果为了解故障的状态或原因提供了见解,并作为决定是否采取后续 RAS 行为的参考。
观察期长度与准确性 图 9a 展示了基于不同观察期设置的准确性分析。x 轴表示观察期(6/12 小时,1/2/4/8/16 天),y 轴表示分类准确性。真实值是手动消除 32 天内收集的所有错误中的次要错误后的分类结果。在这项工作中,我们选择了 7 天的观察期,以确保从巡检中获得足够数量的读取,实现了 95% 的匹配率,且不同设备之间没有显著差异。
巡检与需求读取的影响 图 9b 进一步评估了分类准确性作为观察期长度的函数,并分开了需求读取日志和巡检日志。我们发现,巡检是准确进行 DRAM 故障分类的主要贡献者,在 7 天窗口下约占 75% 的正确匹配。当仅依赖巡检读取(-25%)或仅依赖需求读取(-70%)时,匹配率显著下降,这主要是由于瞬态 SB 故障的丢失。仅依赖需求读取的分类表现不佳,是因为其检测在 DRAM 架构中表现为故障 RA 模式的有界故障的能力有限。
硬件配置:
软件配置: 无明确提及,但基于上下文,系统运行在 Microsoft Azure 的生产环境中,使用其标准的操作系统和管理软件。
表1: 观察到的设备详情
* 设备小时数 = DIMM 数量 x 运行小时数
post 类型故障发生率极低,证明了本文提出的方法对现场 DRAM 故障具有很高的解释力。表2: 设备 A 和 B 的 Intra-bank 故障 (T: 瞬态, S: 偶发性, I: 间歇性, P: 永久性)
Inter-bank (bank 间) 故障分析:
故障分类的时间稳定性 (图 10):
仿真结果分析 (图 13):
实验结果:
结论:
表3: 设备 C 和伪 DDR5(由设备 B 仿真)的 Intra-bank 故障分类结果
表4: 设备 C 和 D 的 Intra-bank 故障分类
DFA 组成 DFA (DRAM Fault Analyzer) 包含三个基本组件:地址转换器(Address Translator)、故障分类器(Fault Classifier)和 RAS 行为顾问(RAS Action Advisor)。地址转换器负责将物理地址(PA)转换为 DRAM 地址(DA)。此外,地址转换器的另一个重要作用是评估当前输入的错误模式是否超出了 SWD 边界,以触发故障分类。故障分类器评估现场错误,以利用所提出的方法对 DRAM 故障进行分类。同时,RAS 行为顾问确定最佳的 RAS 行为,以减轻推断出的 DRAM 故障的影响。
DFA 控制代理 (DFACA) DFACA (DFA Controlling Agent) 以预定义的频率对日志进行周期性分析。此外,如果地址转换器检测到跨越 SWD 边界的错误模式,DFA 会向 DFACA 请求立即分析。收到此请求后,DFACA 指示 DFA 分析其日志存储库中存储的日志。然后,DFA 启动其功能——对 DIMM 故障进行分类,精确定位其位置,评估考虑平台 ECC 能力的 DUE 风险——并推荐内存 RAS 行为(图 14)。DFA 已部署在 Microsoft Azure 数据中心,作为内存可靠性管理系统的一个组成部分运行。
内存 RAS 行为建议 现场 DRAM 故障分类的目标之一是确定最合适的纠正措施。理想的内存 RAS 行为应是一种区域高效、有效(对行为有高置信度)且永久的解决方案,可在运行时应用,无需系统重置或重启。然而,现有的内存 RAS 行为都不能完全满足这些理想条件。
组合式 RAS 行为 基于此,我们提出了两种内存 RAS 行为的组合:运行时内存 RAS 行为(在当前电源周期内适用)和下一电源周期行为(在下一次启动或上电过程中生效)。值得注意的是,简单地启动一个 DIMM 也被视为一种 RAS 行为。软性封装后修复(sPPR, 【索引1, JEDEC Standard: DDR4 SDRAM, 2012; 4, JEDEC Standard: DDR5 SDRAM, 2020】)、页下线(Poff, 【索引11, Costa et al., A System Software Approach to Proactive MemoryError Avoidance, 2014, SC; 13, Du and Li, Combining error statistics with failure prediction in memory page offlining, 2019, MEMSYS; 14, Du et al., Fault-Aware Prediction-Guided Page Offlining, 2021, ICCD】)和 Bank 冗余(BnkSpr, 【索引20, Intel, 4th Gen Intel® Xeon® Scalable Processors: Reliability, Availability, and Serviceability, 2023】)是在不中断服务的情况下减轻故障影响的有用措施。另一方面,硬性封装后修复(hPPR)、DIMM 初始化(INIT)和 DIMM 移除(RMV)被认为是在下一次启动周期中采取的措施。在这种情况下,对当前电源周期中频繁观察到的 ROW 故障应用 sPPR 以保留 DRAM 数据,然后在下一次启动周期中根据记录的 sPPR 信息执行 hPPR,是有效且实用的 RAS 行为组合之一。同样,Poff 和 BnkSpr 也是下一次启动周期中可以考虑的选项。
表5: 每种 DRAM 故障的内存 RAS 行为
表6: 基于日志质量的 RAS 行为比较
本文建立了一套基于 DIMM 层次结构和故障错误行为的精细化 DRAM 故障分类方法。通过广泛的现场数据分析,我们验证了该分类方法对 DDR4 x4 和 DDR5 10x4 RDIMM 均适用。
我们方法的有界故障识别能力揭示了大多数现场 DRAM 故障局限于 2×2 相邻的 MAT 内,并且存在典型的故障 RA 模式。我们还提出了一种理解现场 DDR5 10x4 RDIMM 故障的方法,这是首款在服务器系统中使用 IDECC 的 DRAM,并基于此分类提出了选择合适 RAS 行为的框架。通过对比具有相同技术节点的 DDR4 x4 和 DDR5 10x4 RDIMM 的现场 DUE 率,我们得出结论,DDR5 DRAM 上的 IDECC 充当了有效过滤掉次要错误的良好过滤器。
随着最近的服务器系统尝试采用 LPDDRx 内存以应对功耗挑战,确保其可靠性尤为关键,因为 LPDDRx 和用于 AI GPU 系统的 HBMx 缺乏 rank 操作【索引32, NVIDIA GH200 Grace Hopper Superchip, 2023; 33, NVIDIA GB300 NVL72, 2024; 34, NVIDIA Grace, 2025】。我们的研究为实现 RAS 功能提供了见解,旨在对这些 DRAM 的有界故障实现高效的纠正能力【索引2, LPDDR4, 2014; 3, LPDDR5, 2019; 5, HBM3, 2022; 17, HBM3 RAS, 2021; 26, An 8.5-Gb/s/Pin 12-Gb LPDDR5 SDRAM, 2021; 37, A 3.2 Gbps/pin 8 Gbit 1.0 V LPDDR4 SDRAM, 2015; 38, A 192-Gb 12-High 896-GB/s HBM3 DRAM, 2022; 39, A 16 GB 1024 GB/s HBM3 DRAM, 2023; 40, A 16 GB 1024 GB/s HBM3 DRAM, 2022】。