DRAM组件级故障预测模型,如何提升系统可靠性?-2

news2024/9/17 7:22:07

一、DRAM原理与可靠性

在深入探讨DRAM系统的可靠性问题前,我们需要明确几个基本概念。首先,故障指的是可能导致系统错误的物理缺陷,而错误则是系统实际状态与期望状态之间的差异。故障可分为暂时性故障和永久性故障:前者由外部因素如高能粒子撞击引发,后者则由持续存在的物理缺陷造成。当系统无法正常提供服务时,则视为发生故障。在错误控制中,若错误可检测但无法纠正,即为可检测不可纠正错误(DUE),而错误被误修正或未被发现时,可能导致静默数据损坏(SDC)。系统的可靠性是指在没有故障发生的情况下持续提供服务的能力,通常以故障间隔时间(FIT)衡量,即每十亿小时操作中发生一次故障。

为了确保数据完整性,DRAM子系统设计中融入了多项可靠性特性,其中最关键的一项便是错误检查与纠正(ECC)机制。ECC通过在数据旁存储冗余校验位来检测和纠正读取DRAM时发生的错误。ECC机制依据其纠正错误类型的不同进行分类,例如,单比特错误纠正(SEC)ECC只能纠正单比特错误,而单符号纠正(SSC)ECC则能纠正单一多比特符号内的多个错误。若单个符号覆盖整个DRAM设备,这就被称为单设备数据纠正(SDDC),ChipKill ECC即属于此类ECC。比特错误常用BCH码纠正,符号错误则常采用里德-所罗门(RS)码。ECC还可以根据编码解码器的位置分类,如行列级ECC使用冗余芯片在内存控制器处操作,而片上ECC则在DRAM芯片内的存储体使用冗余存储单元进行操作。

更多细节参考:数据中心内存RAS技术全景剖析

为预防瞬态故障导致不可纠正错误,DRAM子系统会定期读取每个存储位置进行错误检测和纠正,这一过程称为刷新(scrubbing)。

图片

DRAM结构方面,它由多个层级组成,最底层是DRAM单元,单元组成矩阵(mat),矩阵内的单元按列和行排列,同一列的单元通过位线连接到一个位线感知放大器(BLSA)。每个矩阵由行选择器(SWD)通过子字线控制。矩阵被组织成更大的数组单元,即子阵列,多个子阵列构成一个存储体(bank),而一个DRAM设备包含多个存储体。这些存储体共享外部连接通道,但各自独立控制,以便并发执行DRAM指令,隐藏单个指令的长延迟。每个存储体有自己的解码器和互连电路,行解码器分为多个层次,先选择子存储体、再选子阵列,最后选择SWD。数据最终通过列选择器和全局位线传输到DRAM设备的数据引脚(DQs)上。

图片

列重映射Column Remapping)是一种故障避免机制,允许系统在检测到某个特定列存在错误时,将其逻辑地址映射到预先预留的备用列上。这样,即便某些物理列不可用,也不会影响到整个存储体的功能。

  • 列重映射机制能够绕过硬件故障,避免由此导致的数据丢失或错误,提升了DRAM的整体可靠性。

  • 在制造过程中,每个DRAM芯片都可能含有少量的缺陷。通过列重映射,即使有少数列无法使用,芯片仍可正常工作,从而提高了产品的良品率和利用率。

不同设计中的列解码器和矩阵配置各异,但现代标准如DDR5、LPDDR5和HBM3都定义了特定的DQs与矩阵的对应关系,以及列解码的实现方式。这些细节对于理解和优化DRAM系统的可靠性至关重要。

二、内存故障公开数据集分析

为了构建组件级DRAM故障模型,研究团队对错误日志进行了深入分析,目的是将与每个DRAM模块相关的错误事件映射到其根本的组件级故障。通过识别所有受影响地址的错误模式,并基于最有可能产生该模式的组件故障对其进行分类,如单比特故障、位线感知放大器(BLSA)故障、子字线驱动器(SWD)故障等。通过决策树分类器,能够对99%的报告错误的行列进行分类,并基于影响的列、行、Bank、行列、模块数量,错误地址间的距离,以及是否报告了明确的故障进行判断。

图片

  • Cell故障是最常见的故障类型,因为DRAM设备中包含数十亿个存储单元。这种故障通常表现为DIMM错误模式中的唯一地址,或是少量完全不相关的地址(1-4个),这些地址在行、列乃至Bank上都不同。这类单比特错误分别占供应商A、B、C所有故障的85%、45%和47%。

  • 子字线故障影响单个mat中的单行,错误模式表现为单逻辑行地址中的多列错误,影响单个DQ。

  • 位线感知放大器(BLSA)故障影响垂直相邻两个mat的同一列,错误模式体现为限定行地址范围内的单列跨多行错误,与常见mat尺寸相匹配,同样影响单个DQ。

  • 子字线驱动器(SWD)故障影响同一子阵列内两个水平相邻mat的同一行地址。若SWD关联的两个mat属于同一逻辑子阵列,则影响单个逻辑行地址和两个DQ;若跨越两个逻辑子阵列,则影响两个逻辑行地址,且每逻辑行影响单个DQ。

图片

行解码器故障能导致单行、两行半页距离错误、行簇错误等多种模式,影响所有mat和所有4个DQ,且通常会导致故障。行解码器故障涉及一个多层次的解码过程,不同的故障级别会导致不同的错误模式。局部(子阵列级别)解码器负责解码主字线(MWL),并将其前解码的信号转发给各个mat。当解码器或MWL出现故障时,可能会引发以下几种错误模式:

  1. 单一行的错误;

  2. 两行错误,其间距为半个页面(64K行);

  3. 行簇错误;

  4. 两组行簇错误,每组间也是半个页面的间距。

上述任何一种情况下,故障都会影响到子阵列内的所有mat,因此影响所有4个DQ。鉴于此,这类故障很可能会导致系统失效。通过分析,约3%的单行故障导致了失效,这些被归因于行解码器故障,而其余单行故障则归咎于字线(wordline)或子字线驱动器(SWD)故障。

另外,还有一种相关的故障,它并非直接作用于MWL或解码器,而是影响到发送到子阵列的预解码位与一组SWD之间的连接。在这种情况下,物理子阵列中相邻两个mat的SWD集群出现故障。这会导致错误模式横跨一或两个行簇,具体取决于这两个受影响的mat是否位于同一个逻辑子阵列中。影响单个簇的行解码器故障会涉及到2个DQ,而影响两个簇的故障则影响单个DQ。观察发现,这类错误模式约有一半涉及两个1K行簇,另一半只涉及一个簇。利用这一特点,可以区分单行SWD故障和字线故障。同时,发现这类SWD连接故障在数据集中不会导致失效,因此将约12%的1K簇模式归因于上述MWL故障,其余归因于SWD连接故障。总体而言,这种簇状模式在供应商A、B、C中分别占比约为0.6%、0.4%、1.2%。

图片

  • 多列错误模式1和2(上图a/b):这些模式展示了一至两个大约16K行大小的簇,沿着单个缓存行粒度的列地址分布。这种模式下的故障很少导致系统失效,因此归因于单个子bank内部的列选择线(CSL)故障或靠近一列mat的两个CSL信号发生翻转的解码器故障。无论哪一种情况,这类故障都会影响单个DQ。虽然这两种情况在分析中未做区分,但导致两列错误的那种情况,按照以往模型会被分类为Bank级错误。

  • 多列错误模式3(上图c):该模式包括两个簇,它们之间相隔半个页面的距离(64K行)。这类错误被归因于列解码逻辑的故障,这种故障错误地映射了一或两列,并影响了子bank内的所有mat。尽管错误模式与CSL故障相似,但预期这类解码器故障会导致失败。观察到约9%的此类模式最终导致了故障,这部分被归因于解码器故障。

  • 多列错误模式4(上图d):与模式3类似,但导致失败的比例更高,约为40%。这同样归因于列解码逻辑的故障,但由于其更频繁地导致系统失效,因此强调了解码器故障在这类模式中的重要性。

通过这些多列错误模式的分析,我们可以看到,不同类型的列解码器或CSL故障如何在物理层面影响DRAM芯片的运行,并如何通过特定的错误模式表现出来。这些模式对于诊断和理解DRAM故障的根源至关重要,同时也帮助设计更有效的错误检测与校正机制,从而提高系统的整体可靠性。

图片

上图是关于DRAM故障类型诊断的统计图表,它通过总变分距离(Total Variational Distance, TVD)来评估疑似错误故障与所有可能故障类别之间的相似性或差异性。TVD是一种衡量两个概率分布之间差异的方法,值越小表示两个分布越接近,反之则差异越大。在这里,TVD被用来量化疑似故障原因与实际可能的故障源之间的匹配程度。

  • 条形本身:表示所有可能故障类别相对于疑似故障的TVD平均值。一个较低的条形高度意味着疑似故障与某些故障类型的平均距离较小,暗示着较高的匹配可能性。

  • 垂直线:代表一个标准差,它反映了数据的离散程度。如果垂直线较短,说明数据较为集中,意味着TVD值相对稳定;反之,如果垂直线较长,则说明数据分散,TVD值波动较大。

  • 红色圆点:表示针对疑似故障根本原因计算出的具体TVD值。这个点相对于条形的位置非常关键。如果红点位于条形的底部附近,表明疑似故障与计算出的最可能故障类别非常吻合,几乎确认了该疑似故障的原因。相反,如果红点远离条形底部,位于较高位置,这可能意味着当前的疑似原因并不准确,需要重新考虑或进一步调查。

在深入分析内存错误及其成因的过程中,我们发现了诸多新的见解,其中特别引人注目的是由解码器故障引发错误的相对普遍性。以往的研究通常从逻辑层面来描述故障,简单地将解码器故障归类为Bank级错误。然而,解码器故障的影响更为微妙,对于依赖On-Die ECC保护的系统来说,这一点尤为关键。

过往的特性分析主要集中在DDR DRAM通道上,其中访问操作会跨越整个rank中的多个设备。解码器故障仅影响单个设备,因此仅从该设备读取的数据会出现错误。在这种情况下,强大的纠错码(如RS码)能够轻易检测并修正这些错误。

然而,当ECC集成在芯片上时,所有数据及其冗余信息均源自单一的子阵列。一旦解码器出现错误,将导致整个纠错码词(包括数据和冗余信息)从错误位置读取。尽管片上ECC仍然接收到一个看似有效的码词,但从软件角度来看,数据实际上是错误的,从而导致严重的单比特纠正错误(SDC)失效。相比之下,如果我们把这些解码器故障视为Bank级错误,最可能的ECC结果将是检测到双比特不确定错误(DUE)。

图片

为了提升系统可靠性,我们提议通过将行地址和列地址纳入ECC码词中,将解码器错误引起的SDC转换为可检测的DUE,从而避免此类问题。我们借鉴了All-Inclusive (AI) ECC扩展数据ECC的方法,并对其进行调整以适应片上ECC。具体做法是使用行地址和列地址的异或运算来降低解码器的复杂度,并支持位级别的ECC。编码时,ECC编码器隐式地将行地址和列地址与数据一起作为编码消息的一部分。数据和地址共同生成片上冗余位,但只有数据和冗余信息被存储在内存中。读取时,从读命令中再次获取地址并加入从内存中检索到的码词中,ECC解码器尝试纠正任何错误。如果检测到错误或尝试对隐含附加的地址信息进行纠正,即报告DUE。

此方法以极高的概率检测解码器错误,有效避免了数据在无明显迹象的情况下被悄悄破坏,而且无需额外的冗余存储或昂贵的冗余解码器。我们的评估结果显示,通过地址保护措施显著降低了LPDDR5等内存技术的预期SDC发生率,改善程度达到数个数量级。

三、内存故障模拟器

故障与错误模拟器是一种高级工具,它通过精确模拟DRAM组件级的故障及其导致的错误,来预测现代及未来DRAM系统中操作性故障和内在故障的影响。相较于先前仅依据逻辑分类的模拟器,该模拟器更进一步,考虑了源于物理组件的重要相关性和界限,从而提供更为精准的故障分析。

  1. 精细的故障模拟:模拟器采用蒙特卡洛方法,对代表性的内存通道(例如DDR5的一个rank)进行故障注入实验,直至通道出现故障或模拟运行满五年(内存预期寿命)。这一过程中,即使出现仅能被纠正的错误,故障注入也会持续,以便评估由故障重叠导致的失败率。

  2. 高级可靠性评估:与仅理论验证错误纠正能力的模拟器不同,本模拟器通过额外的嵌套蒙特卡洛试验,对由注入故障产生的实际错误模式进行分析,并执行错误纠正码(ECC)来精确评估可靠性。这种方法尤其适用于模拟工艺尺寸缩放导致的故障影响及精确估计单比特纠正错误(SDC)率。

  3. 故障模型与组件级分析:模拟器依据组件级别的实证模型构建故障模型,并根据所评估的不同内存技术进行了调整。例如,它区分了与解码器相关的故障,避免了高估两行或矩阵级故障与其他故障间的潜在重叠,因为模型并未将这些故障归类为“bank”级。

  4. 内存技术的扩展:为了将基准DDR4设备的故障模型扩展到32Gb × 4 DDR5、×16 LPDDR5和HBM3,采用了两种方法。一种是保持每设备总的故障率不变,根据新内存技术中各组件数量与DDR4相比的变化来调整故障频率。另一种是直接从DDR4设备推导每个组件的故障率,再基于相同组件数量的增减,为新内存技术生成具有更高总故障率的模型。

图片

  1. ECC方案对比:针对不同内存技术,模拟器评估了多种ECC方案的可靠性,包括DDR5的SEC(136,128)片上ECC、HBM3的RS16(19,17)及简化版等,并考察了提出的地址保护机制对这些方案性能的影响。对于LPDDR5,尽管没有公开的片上ECC信息,但基于其访问粒度与HBM3相似,模拟器也评估了RS8(36,32)代码的可靠性,该代码具有12.5%的冗余度。

总之,该故障与错误模拟器通过精细的组件级分析和高级的可靠性评估方法,为DRAM系统的设计和优化提供了强大的支持,特别是在预测故障行为、评估ECC策略的有效性以及推动内存系统可靠性提升方面展现出巨大价值。

通过模拟含有DDR4内存的服务器系统,研究者验证了数据集中机器主要使用的ECC方案并非Chipkill级别。

  • 模拟结果显示,如果使用Chipkill级别的ECC,八个月内预计的故障数少于10次(接近1次),而数据集中观察到541次故障,因此可以排除Chipkill ECC的可能性。

  • 相反,当模拟较弱的ECC(只能纠正2-DQ错误)时,预测的故障数为870次,接近观测值,考虑到研究系统中采取了Page-offline和DIMM替换措施以降低故障风险,这一预测更为合理。此外,由于缺乏DQ级错误报告的限制,研究者通过比较不同假设下的模拟结果来进一步验证模型,发现模型在细粒度故障分析上具有优势。

开源的模拟器和模型:https://github.com/lpharch/DRAM_FAULT_SIM

参考文献: https://dl.acm.org/doi/fullHtml/10.1145/3613424.3614294

如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • 当CXL遇到NVMe,计算存储会发生什么?

  • 浅析SSD性能与NAND速率的关联

  • 浅析SSD性能与NAND速率的关联

  • 浅析MPS对PCIe系统稳定性的影响

  • DPU:值不值得托付下一代存储加速架构?

  • 论文解读|数据中心内存RAS技术全景剖析

  • 硬盘HDD:AI时代的战略金矿?

  • 断电的固态硬盘数据能放多久?

  • CXL-GPU: 全球首款实现百ns以内的低延迟CXL解决方案

  • 万字长文|下一代系统内存数据加速接口SDXI解读

  • 数据中心:AI范式下的内存挑战与机遇

  • WDC西部数据闪存业务救赎之路,会成功吗?

  • 属于PCIe 7.0的那道光来了~

  • 深度剖析:AI存储架构的挑战与解决方案

  • 浅析英伟达GPU NCCL P2P与共享内存

  • 3D NAND原厂:哪家芯片存储效率更高?

  • 大厂阿里、字节、腾讯都在关注这个事情!

  • 磁带存储:“不老的传说”依然在继续

  • 浅析3D NAND多层架构的可靠性问题

  • SSD LDPC软错误探测方案解读

  • 关于SSD LDPC纠错能力的基础探究

  • 存储系统如何规避数据静默错误?

  • PCIe P2P DMA全景解读

  • 深度解读NVMe计算存储协议

  • 浅析不同NAND架构的差异与影响

  • SSD基础架构与NAND IO并发问题探讨

  • 字节跳动ZNS SSD应用案例解析

  • CXL崛起:2024启航,2025年开启新时代

  • NVMe SSD:ZNS与FDP对决,你选谁?

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

  • 存储随笔《NVMe专题》大合集及PDF版正式发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1958018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谁说PDF编辑器都一样?这5款让你大开眼界!

如今,PDF文档已经成了咱们工作生活中必不可少的东西。无论是看学术报告、合同协议,还是日常阅读的电子书,都能在不同的设备上保持一致的格式,成了大家最爱用的文档格式之一。但是,面对这么多PDF编辑器,你是…

当我在星巴克连上家里的服务器,光猫桥接打通IPv6,你是值得的

我们的课程环境是构建在一个256GB内存,192核CPU的集群上,学员可以通过浏览器,输入地址访问。要在阿某云上租这样一个服务器,价格并不便宜。所以,这些服务器一直放在公司里,创业期间,公司也就是租…

Docker三大基础组件

Docker有三个重要的概念:仓库、镜像和容器 ,它们是Docker的三大基础组件,这三个组件共同构成了Docker的核心架构,使得Docker能够实现对应用程序的便捷打包、分发和运行。 Docker使用客户端-服务器体系结构。Docker客户端与Docker守…

angular入门基础教程(十一)与服务端数据交互

前后端分离开发,少不了与后端进行数据接口的对接,在vue,react中我们要借助第三方的axios来进行数据请求。在ng中,为我们封装了了一层httpClient,我们直接使用即可 依赖注入 我们需要再次封装一次 import { HttpClie…

虚假的互联网信息?不妨从IT的角度理解【景观社会】

博主前言:“我思故我在”,笛卡尔的这一哲学命题,大抵上次还比较熟络的时光还是高中亦或复习考研政治的岁月里。这是一个光怪陆离的社会——或者说网络社会,形形色色的消息充斥在脑海之时,你是否还能认识真正的自己&…

3.2.微调

微调 ​ 对于一些样本数量有限的数据集,如果使用较大的模型,可能很快过拟合,较小的模型可能效果不好。这个问题的一个解决方案是收集更多数据,但其实在很多情况下这是很难做到的。 ​ 另一种方法就是迁移学习(transfer learning…

window长时间不关机,卡顿处理方法

window使用一短时间非常卡,快速处理办法如下: 1、windowR 输入%temp% 手动删除临时目录文件。 2、windowR输入cleanmgr 磁盘清理 3、恶意软件删除工具 删除流行恶意软件。

What Is RPC(Remote Procedure Call,远程过程调用)

RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,它允许一个计算机程序通过网络调用另一个计算机程序中的子程序(也就是远程过程),并获取返回值。RPC服务是分布式计算的重要基础&…

面向对象程序设计(C++)模版初阶

1. 函数模版 1.1 函数模版概念 函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本,可以类比函数参数,函数模版就是将函数参数替换为特定类型版本 1.2 函数模版格…

mlp与attention的计算时间复杂度分别为多少?PAtchtst为啥patch后为啥attention计算量降低?

感谢分享 看这篇博客的时候,因为patch后做了一个fc的映射,也是有计算的消耗嘛,好奇为什么说patchtst能够减小“注意力图的内存使用和计算复杂度减少了S倍,从而在计算资源有限的情况下允许模型查看更长的历史序列。“ 所以思考了一…

【时时三省】(C语言基础)循环语句while(2)

山不在高,有仙则名。水不在深,有龙则灵。 ——csdn时时三省 getchar和scanf的作用 示例: int main ( ) { char password[20] ( 0 ) ; printf ( "请输入密码:> " ); scanf ( " %s…

Redis:未授权访问

Redis Redis(Remote Dictionary Server)是一个开源的高性能键值对(key-value)数据库,支持多种类型的数据结构。 核心特性 内存存储:Redis将所有数据存储在内存中,能够提供极高的读写性能。 …

jumpserver web资源--远程应用发布机

1、环境 jumpserver:3.10.10 远程发布机:windows 2019 2、windows 2019准备 保证windows 正常登录,并且可以访问jumpserver 3、添加远程发布机 能正常连接就继续 可看到这里正常了 4、添加web资源 找到我们需要自动登录界面 获取相关元素选…

独立3D网络游戏《战域重甲》开发与上架经验分享

“ 小编阿麟:心之所向便是光,我们都是追光者!这位独立游戏开发者的产品能力已经不输给许多小团队,希望他的故事和经验分享,可以给走在同样道路上的朋友一些信心和帮助。 背景介绍 2023年年底的时候,我突然有一个很强的…

OpenGL3.3_C++_Windows(32)

demo SSAO SSAO 环境光照(Ambient Lighting):光的散射,我们通过一个固定的常量作为环境光的模拟,但是这种固定的环境光并不能很好模拟散射,因为环境光不是一成不变的,环境光遮蔽:让(褶皱、孔洞…

Qt Designer,仿作一个ui界面的练习(一):界面的基本布局

初学不要太复杂,先做一个结构简单的,大致规划一下功能分区,绘制草图: 最终的效果: 界面主要由顶边栏、侧边栏、内容区构成。顶边栏左边是logo,右边是时钟显示。侧边栏最上边是切换按钮,用以动画…

Notcoin 即将空投:你需要知道什么

Notcoin 于 2024 年 1 月推出,是 Telegram 上的一款边玩边赚游戏,用户可以通过点击硬币图标获得 Notcoin 代币 (NOT) 形式的奖励。NOT 建立在开放网络区块链(称为“TON 区块链”)上,由 Open Builders 创始人 Sasha Plo…

鸿蒙配置Version版本号,并获取其值

app.json5中配置版本号: 获取版本号: bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION).then((bundleInfo) > {let versionName bundleInfo.versionName; //应用版本号}).catch((error: BusinessE…

基于web的跨校区通勤车班次规划系统/校车管理系统

获取源码联系方式请查看文章结尾🍅 摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而…

STM32项目分享:智能台灯(机智云)系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.com/video/BV1My411q7fE…