DDR3 ECC 应用总结

文章目录

1 ECC 内存

ECC内存,即应用了能够实现错误检查和纠正技术(ECC)的内存条。一般多应用在服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳定。ECC是“Error Checking and Correcting”的简写,中文名称是“错误检查和纠正”。

1.1 ECC 内存与普通内存区别

一、板载的内存颗粒数量区别:ECC内存为服务器内存,该类内存条多了一颗ECC错误校验储存芯片(储存芯片数为奇数),ECC的应用可以保证服务器在运转中更安全稳定。而普通内存条储存芯片数为偶数。
二、应用的技术区别:ECC内存条添置ECC错误校验技术,经过错误校验、纠正,可以有效的保证服务器系统的稳定性和可靠性。而普通内存条不配备校正错误技术,因此字检测到错误时,并不能确定错误位置,也无法修正错误。
三、应用领域的区别:由于ECC内存能有效的保存和维持数据的完整性,同时配备校验和纠正技术,ECC内存进一步减少了数据崩溃情况,因此多应用于在金融等行业以及科学界等服务器及图形工作站上,普通内存条只能用于家用台式机。
DDR3 ECC 应用总结
四、内存条的容量区别:由于服务器的内存应用对于其容量要求更高,因此ECC内存条容量通常是以4GB起步,而普通内存条容量通常是以2GB起步,家用电脑上标配均为4~8GB的内存。
五、价格的区别:由于ECC内存条的技术含量更高,内存容量也较普通内存大。因此ECC内存条比普通内存的价格要贵。

2 ECC 技术简介

DDR3 ECC 应用总结

纠错码(ECC)方案是一种获得广泛使用的内存RAS(Reliability, Availability and Serviceability)功能。DDR控制器通过为实际数据生成ECC SECDED(单位纠错和双位检错)数据并存储到附加DRAM存储器中,可以对DRAM发送的数据进行单位纠错和双位检错。

2.1 ECC 技术原理

此部分内容摘自百度百科ECC内存
要了解ECC技术,就不能不提到Parity(奇偶校验)。在ECC技术出现之前,内存中应用最多的是另外一种技术,就是Parity(奇偶校验)。我们知道,在数字电路中,最小的数据单位就是叫“比特(bit)”,也叫数据“位”,“比特”也是内存中的最小单位,它是通过“1”和“0”来表示数据高、低电平信号的。在数字电路中8个连续的比特是一个字节(byte),不带“奇偶校验”的内存中的每个字节只有8位,若它的某一位存储出了错误,就会使其中存储的相应数据发生改变而导致应用程序发生错误。而带有“奇偶校验”的内存在每一字节(8位)外又额外增加了一位用来进行错误检测。比如一个字节中存储了某一数值(1、0、1、0、1、0、1、1),把这每一位相加起来(1+0+1+0+1+0+1+1=5)。若其结果是奇数,对于偶校验,校验位就定义为1,反之则为0;对于奇校验,则相反。当CPU返回读取存储的数据时,它会再次相加前8位中存储的数据,计算结果是否与校验位相一致。当CPU发现二者不同时就会试图纠正这些错误,但Parity有个缺点,当内存查到某个数据位有错误时,却并不一定能确定在哪一个位,也就不一定能修正错误,所以带有奇偶校验的内存的主要功能仅仅是“发现错误”,并不能纠正部分简单的错误。
通过上面的分析我们知道Parity内存是通过在原来数据位的基础上增加一个数据位来检查当前8位数据的正确性,但随着数据位的增加Parity用来检验的数据位也成倍增加,就是说当数据位为16位时它需要增加2位用于检查,当数据位为32位时则需增加4位,依此类推。特别是当数据量非常大时,数据出错的几率也就越大,对于只能纠正简单错误的奇偶检验的方法就显得力不从心了,正是基于这样一种情况,一种新的内存技术应允而生了,这就是ECC(错误检查和纠正),这种技术也是在原来的数据位上外加校验位来实现的。不同的是两者增加的方法不一样,这也就导致了两者的主要功能不太一样。它与Parity不同的是如果数据位是8位,则需要增加5位来进行ECC错误检查和纠正,数据位每增加一倍,ECC只增加一位检验位,也就是说当数据位为16位时ECC位为6位,32位时ECC位为7位,数据位为64位时ECC位为8位,依此类推,数据位每增加一倍,ECC位只增加一位。

在内存中ECC能够容许错误,并可以将错误更正,使系统得以持续正常的操作,不致因错误而中断,且ECC具有自动更正的能力,可以将Parity无法检查出来的错误位查出并将错误修正。

2.2 ECC 生成和校验顺序

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

2.3 ECC 方案

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 功能。
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 相比,延时损失更小。
DDR3 ECC 应用总结
Inline ECC 方案通常在使用 LPDDR 内存的应用中实现。LPDDR DRAM 具有固定信道宽度(LPDDR5/4/4X 信道宽度为 16 位),因此 inline 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 操作流程。
DDR3 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 操作流程。
DDR3 ECC 应用总结
Link-ECC 方案是一种 LPDDR5 功能,可保护 LPDDR5 链路或信道免受单位错误的影响。内存控制器计算 WR 数据的 ECC,并在特定位上发送 ECC 和数据。DRAM 基于接收到的数据生成 ECC,对照接收到的 ECC 数据进行校验,并纠正任何单位错误。控制器和 DRAM 在读取操作中的作用是相反的。请注意,link ECC 不针对内存阵列上的单位错误提供任何保护。然而,inline ECC 与 link ECC 相结合,通过提供端到端的单位错误防护,增强了 LPDDR5 信道的稳定性。图 5 描述了 link ECC 的 WR 和 RD 操作流程。
DDR3 ECC 应用总结

上一篇:遇到Nand Flash坏块怎么处理?


下一篇:springboot启动流程(二)SpringApplication run方法核心逻辑