DDR5的On Die ECC

本文介绍了ECC(ErrorCorrectionCode)在数据安全和高可靠性中的作用,着重讲解了Rowhammer内存错误和两种ECC类型—边带ECC(在CPU到内存路径上实现)和OndieECC(在内存颗粒芯片上实现),并比较了它们的差异和适用场景。
摘要由CSDN通过智能技术生成

ECC的介绍:

ECC,全称是Error Correction Code,也就是用于检查并且纠正错误的一个机制。这对于数据安全和高可靠的应用来说非常重要。

ECC内存系统可以检查并且纠正出单bit的内存错误,而对于多比特的内存错误,取决于多比特的数量和ECC的算法,有可能会被纠正,也有可能只是被检测出来。接下来我们介绍一个典型的内存错误。

Row hammer——一种经典的内存硬件错误

在服务器行业工作久一点的朋友可能熟悉一种错误,叫做row hammer fault,这个错误在DDR3时代被暴露并且关注,并且在后续时间内被利用生成row hammer攻击。Row Hammer就是狂锤某一行,隔山打牛,让隔壁的行不寒而栗,在颤抖中改变立场。

这里再用通俗一点的语言解释一下row hammer:在之前的文章中我们介绍了DDR数据读取的过程,是通过ACT命令激活某一行row,读取到sense amp中,之后再写回到原来的cell。由于DDR芯片密度的增高,这种频繁的读写会对临近行(row)产生影响,多次之后甚至会造成该cell的电量变化,进一步引起电平翻转。

ECC内存系统的流程:

ECC的实现依赖于ECC的编码,在写入数据的时候,进行编码写入,而读出的时候,进行解码验证。

ECC内存系统的写入流程:

  1. CPU先将要写入的数据发给片上的内存控制器;

  2. 内存控制器基于数据产生ECC编码;

  3. 内存控制器将数据和ECC编码分别发到内存总线上的数据线和ECC数据线;(这里可以回顾之前对于DDR总线的介绍 DDR5基本介绍);

  4. 数据和ECC编码数据写入到DRAM芯片;

ECC内存系统的读取流程:

  1. CPU内存控制器发出读请求命令;

  2. 内存控制器把数据和ECC编码从内存中读出;

  3. 内存控制器基于读取的数据产生ECC编码;

  4. 内存控制器将读取的ECC编码和刚才产生的ECC编码进行对比验证。如果不同,则使用ECC机制将数据进行纠正或者检查。

以上就是我们常说的内存中使用的ECC的机制和流程,了解到这个,我们就可以对比性的解释了on die ECC。

ECC的分类:

On die ECC最大的不同就是,ECC的机制实现是在内存颗粒芯片上进行的,而不同于以上介绍的ECC,是在端到端的CPU到内存的通路上实现的。

前者我们叫做on die ECC的话,后者可以被称之为边带 ECC,边带是指它需要利用到额外的DDR数据线来进行传输。

解释及总结:

边带ECC:

边带ECC在CPU的内存控制器上实现了ECC的产生和验证逻辑,在内存总线上需要额外的bit,在内存条上需要额外的DRAM芯片储存ECC编码。因此,DDR5用于ECC的额外数据总线比例要比DDR4高,这是由于DDR5 sub channel的关系,不明白的朋友可以回顾之前的系列文章。

On die ECC:

作为在DDR5上的新特性,这个ECC机制在DDR5内存颗粒上实现,而不会暴露与内存颗粒芯片之外。所以on die ECC也不会对端到端的数据通信进行保护,它只是为了保护在内存颗粒芯片内部的数据储存的一致性。

On die ECC只能纠正单比特错误。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值