16

Khorina · 8月12日

搞DDR必懂的关键技术笔记:DDR RAS—内存中的纠错码 (ECC)

简介

双倍数据速率同步动态随机存取内存(DDR SDRAM 或简称 DRAM)技术如今已成为几乎所有应用的主内存,无论是在高性能计算 (HPC) ,还是在注重功耗、面积的移动应用中。

这要归功于 DDR 的诸多优势,包括高密度、简单架构、低延迟和低功耗。

作为规定内存标准的标准组织,JEDEC 定义并发展了四个 DRAM 类别,用于指导设计人员准确满足其内存要求:

  • 标准 DDR (DDR5/4/3/2)、
  • 移动 DDR (LPDDR5/4/3/2)、
  • 图形 DDR (GDDR3/4/5/6)
  • 高带宽 DRAM (HBM2/2E/3)。

image.png

图 1 显示了典型的片上系统 (SoC) 中的内存子系统的结构图,该内存子系统包括 DDR 内存控制器、DDR PHY、DDR 信道和 DDR 内存。

根据 JEDEC 的定义,DDR 信道由命令/地址和数据通道组成。以下显示的简化 DDR 内存可以代表上述四类中任何一类的 DRAM 内存组件。

内存子系统就像任何电子系统一样,也会因为设计故障/缺陷或任何一个部件中的电噪声而发生错误。

这些错误分为硬错误(由设计故障引起)或软错误(由系统噪音引起或者由 alpha 射线引起的内存阵列位翻转,等)。

顾名思义,硬错误是永久性的,软错误则是短暂性的。尽管从理论出发,大部分内存错误是由 DRAM(具有大型内存阵列,并且每生成一次标准都会为了缩小工艺节点而变得愈加密集)造成,但是执行从控制器到 DRAM 的端到端保护,对于整体内存子系统的稳定性是非常必要的。

为了在运行时处理这些内存错误,内存子系统必须具有先进的 RAS(可靠性、可用性和可维护性)功能,以在发生内存错误时进行修正,延长整个系统的正常运行时间。

如果没有 RAS 功能,系统很可能会因为内存错误而崩溃。但是,RAS 功能允许系统在出现可纠正的错误时继续运行,同时记录不可纠正错误的详细信息,以便将来进行调试。

作为内存 RAS 功能的 ECC

内存子系统中较常用的一种 RAS 方案是纠错码 (ECC) 内存。DDR 控制器通过为实际数据生成 ECC SECDED(单位纠错和双位检错)数据并存储到附加 DRAM 存储器中,可以对 DRAM 发送的数据进行单位纠错和双位检错。

ECC 生成和校验顺序如下:

  • ECC 数据由控制器根据实际的 WR(写入)数据生成。内存同时存储写命令的数据和 ECC 数据。
  • 在 RD(读取)操作期间,控制器从内存读取数据和相应的 ECC 数据。控制器利用接收到的数据重新生成 ECC 数据,并将其与接收到的 ECC 数据进行比较。
  • 如果两者匹配,则不会发生错误。如果不匹配,ECC SECDED 机制允许控制器纠正任何单 bit 错误并检测双 bit 错误。

这种 ECC 方案提供端到端的保护,以防止可能在控制器和内存之间的内存子系统中发生的单 bit 错误。

基于 ECC 的实际存储,ECC 方案可能有两种类型:side-band ECC 或 inline ECC。在 side-band ECC 中,ECC 数据存储在单独的 DRAM 上;在inline ECC 中,ECC 数据与实际数据一起存储在同一个 DRAM 上。

DDR5 和 LPDDR5 支持的数据速率远高于其前代产品,因此它们支持更多 ECC 功能,以增强内存子系统的稳定性。DDR5 中的 On-die ECC 和 LPDDR5 中的 Link ECC 就是两种此类 RAS 方案,可进一步增强内存子系统 RAS 功能。

image.png

ECC 方案

Side-band ECC

side-band ECC 方案通常在应用中使用标准 DDR 内存(如 DDR4 和 DDR5)实现。顾名思义,ECC 数据作为边带数据连同实际数据发送到内存。

例如,对于 64 位数据宽度,增加 8 个数位用于 ECC 存储。因此,当今企业级服务器和数据中心常用的 DDR4 ECC DIMM 具有 72 位宽。这些 DIMM 有两个额外的 x4 DRAM 或一个 x8 DRAM,用于额外的 8 位 ECC 存储。

因而在 side-band ECC 中,控制器会同时读写 ECC 数据和实际数据此 ECC 方案不需要额外的 WR 或 RD 开销命令。图 2 描述了 side-band ECC 的 WR 和 RD 操作流程。如果接收的数据没有错误,side-band ECC 与 inline ECC 相比,延时损失更小。

image.png

Inline ECC

Inline ECC 方案通常在使用 LPDDR 内存的应用中实现。LPDDR DRAM 具有固定信道宽度(LPDDR5/4/4X 信道宽度为 16 位),因此 side-band ECC 对于此类内存而言是一种昂贵的解决方案。

例如,对于 16 位数据宽度,需要为 7 位或 8 位 ECC 位宽的 inline ECC 额外分配 16 位 LPDDR 信道。此外,7 或 8 位 ECC 数据字段仅部分填充了 16 位额外的通路,导致存储效率低下,还给地址命令信道带来额外负载,可能会对性能有所影响。因此,inline ECC 成为更适合用作 LPDDR 内存的解决方案。

Inline ECC 中的控制器不需要额外的信道来存储 ECC,而是将 ECC 数据存储在存储实际数据的同一 DRAM 信道中。因此,内存信道的总体数据宽度与实际数据宽度相同。

在 inline ECC 中,16 位信道内存被分区,使得内存的专用部分被分配给 ECC 数据存储。当 ECC 数据未与读写数据一起发送时,控制器为 ECC 数据生成单独的开销 WR 和 RD 命令。因此,实际数据的每条 WR 和 RD 命令都伴有一条 ECC 数据的开销 WR 和 RD 命令。

高性能控制器通过在一条 ECC WR 命令中封装几个连续地址的 ECC 数据,以此来降低此类 ECC 命令的损失。同样,控制器在一条 ECC RD 命令中读取内存发出的若干连续地址的 ECC 数据,并且可以将读出的 ECC 数据,应用于该连续地址产生的实际数据。

因此,流量模式越有序,此类 ECC 开销命令造成的延迟损失越小。图 3 描述了 inline ECC 的 WR 和 RD 操作流程。

image.png

On-die ECC

每一代 DDR 的发展,DRAM 容量通常都会增加。DRAM 供应商通常也会缩小工艺技术,以实现更高的速度和更经济的量产。面对更高的容量和速度以及更小的工艺技术,DRAM 内存阵列出现单位错误的可能性会增加。

为进一步改善内存信道,DDR5 DRAM 配备额外的存储器,只用于 ECC 存储。On-die ECC 是一种高级 RAS 功能,可获得 DDR5 系统的支持以实现更高的速度。DDR5 DRAM 为每 128 位数据额外设置 8 位的 ECC 存储空间。

DRAM 内部计算 WR 数据的 ECC,并将 ECC 数据存储在额外的存储器中。在读取操作中,DRAM 读出实际数据以及 ECC 数据,并且可以纠正任何读数据位上的任何单位错误。因此,on-die ECC 进一步保护 DDR5 内存阵列免于产生单位错误。

由于此方案无法针对 DDR 信道上发生的错误提供任何保护,所以 on-die ECC 会与 side-band ECC 结合使用,以增强内存子系统上的端到端 RAS。图 4 描述了 on-die ECC 的 WR 和 RD 操作流程。

image.png

Link ECC

Link-ECC 方案是一种 LPDDR5 功能,可保护 LPDDR5 链路或信道免受单位错误的影响。内存控制器计算 WR 数据的 ECC,并在特定位上发送 ECC 和数据。DRAM 基于接收到的数据生成 ECC,对照接收到的 ECC 数据进行校验,并纠正任何单位错误。

控制器和 DRAM 在读取操作中的作用是相反的。请注意,link ECC 不针对内存阵列上的单位错误提供任何保护。然而,inline ECC 与 link ECC 相结合,通过提供端到端的单位错误防护,增强了 LPDDR5 信道的稳定性。图 5 描述了 link ECC 的 WR 和 RD 操作流程。

image.png

结语

纠错码 (ECC) 方案是一种获得广泛使用的内存 RAS 功能。使用标准 DDR 内存的应用通常实现 side-band ECC,而使用 LPDDR 内存的应用则实现 inline ECC。

DDR5 和 LPDDR5 信道具有更高的速度,因此 SI 效应很明显,现在,甚至 DDR5 和 LPDDR5 DRAM 也分别支持 on-die ECC 和 link ECC

参考资料

作者:TrustZone
文章来源:TrustZone

推荐阅读

更多物联网安全,PSA等技术干货请关注平台安全架构(PSA)专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入PSA技术交流群,请备注研究方向。
推荐阅读
关注数
4570
内容数
191
Arm发布的PSA旨在为物联网安全提供一套全面的安全指导方针,使从芯片制造商到设备开发商等价值链中的每位成员都能成功实现安全运行。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息