第13回【科普】:什么是ECC?对内存产品有什么帮助?
温馨提示:这篇文章已超过842天没有更新,请注意相关的内容是否还可用!
大家都注意到去年发布新一代DDR5内存自带ECC纠错功能。
过去ECC应用在服务器产品中由特定的主板和CPU才能实现ECC功能,而现在DDR5内存通过内存集成的ECC芯片可以自行检测和纠正内存单元内的数据。
今天就来讨论下ECC纠错功能,大家有其他想法的可以在评论区进行补充
ECC是什么?
ECC的全称是 Error Checking and Correction or Error correctionCoding,是一种用于差错检测和修正的算法。
NAND闪存在生产和使用中都会有坏块产生,BBM就是坏块的管理机制。
那么为了在使用过程中减少坏块的产生,通过2种方式进行预防:
1、利用磨损平衡(WL)提前预防坏块产生;
2、已经产生“坏块”的引入ECC,通过ECC对“坏块”进行有效检测及纠正。
如果操作时序和电路稳定性不存在问题,NAND闪存出错的时候一般不会造成整个Block或Page不能读取甚至全部出错,而是整个Page中只有一个或几个bit出错,这个时候ECC针对出错的bit进行检测和纠正。
从DDR5自带ECC功能来看就是在内存中增加存储芯片,这样能检测和纠正内存单元中的数据错误,同时也能够有效提高DRAM芯片良率。
奇偶校验
在ECC技术出现之前,内存中应用最多的另外一种错误检查技术,是奇偶校验位(Parity)技术。
奇偶校验,即Parity Check,根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验通常用于确定数据是否出错。
在数字电路中,最小的数据单位就是叫“比特(bit)”,也叫数据“位”,“比特”也是内存中的最小单位,它是通过“1”和“0”来表示数据高、低电平信号。
在数字电路中8个连续的比特是一个字节(byte),如:字节中某一存储数值(1、0、1、0、1、0、1、1)相加是5,结果奇数。
采用偶校验,校验位就定义为1,5+1=6为偶数;
对于奇校验,则为0,5+0=5奇数。
当CPU读取存储的数据时,会再次把前8位中存储的数据相加,计算结果是否与校验位相一致(即下面讲到的与ECC签名是否一致)。
但Parity(奇偶校验位)的不足是:当内存查到某个数据位有错误时,不能准确定位存在错误的数据位,也就不一定能修正错误。
而且当数据量大时,数据出错的几率也就越大,对于只能纠正简单错误的奇偶检验的方法就无法纠正,由此出现错误检查和纠正(Error Checking and CorrecTIng)。
ECC的运作原理:
ECC是在奇偶校验的基础上发展起来,与奇偶校验技术一样,ECC纠错技术也需要额外的空间来储存校正码,但其占用的位数跟数据的长度并非成线性关系。
具体来说,它是以8位数据、5位ECC码为基准,随后每增加一个8位数据只需另增加一位ECC码即可。
也就是说当数据位为16位时ECC位为6位,32位时ECC位为7位,数据位为64位时ECC位为8位,依此类推,数据位每增加一倍,ECC位只增加一位。
所以ECC有更多位数的校验位,容错能力更强。
ECC纠错算法分类有哪些?
常用的闪存ECC 纠错算法有BCH (Bose–Chaudhuri–Hocquenghem codes)和LDPC(Low Density Parity Check Code)意思是低密度奇偶校验码。
目前SSD最普遍使用的ECC码是BCH码。
当数据写入的时候,控制器内部的ECC模块计算数据并生成ECC签名(由此提供可信的数据背书),一般来说这个步骤非常快,因此并不会影响整个SSD太多的性能表现。
ECC的签名一般来说都保存在NAND页后部的SA区域,当数据从NAND读取的时候ECC模块回去读取ECC签名,并对照相同与否来发现出现的错误。
如检测到数据错误就会生成独特的ECC算法(如BCH)进行修改。
如ECC纠正不过来, 一般会报ECC Fail, 用户表现为Read Fail,有时候ECC甚至诊测不到出错, 就会导致数据错误。
如果如果整个页甚至块出现大面积错误,那么只有RAID(RedundantArrays of Independent Disks磁盘阵列)这类的冗余保护才能修复了。
RAID由很多块独立的磁盘,可利用同位检查(Parity Check)的观念,当数组中任意一个硬盘发生故障时,仍可读出数据。在数据重构时,可将数据经计算后重新置入新硬盘中。
而关于LDPC处理技术在金泰克纯国产硬盘C320中有所应用内存ecc校验错误怎么办,下期会单独讲解LDPC处理技术。
ECC的错误认识
谈到服务器内存,大家都强调买ECC内存,认为ECC内存速度快,其实是一种错误地认识。
ECC内存成功之处并不是因为它速度快(速度只与内存类型有关),而是因为它有特殊的纠错能力,使服务器保持稳定。这种ECC纠错功广泛应用于各种领域的计算机指令中,是一种指令纠错技术。
ECC内存插到普通PC主板上吗?
目前消费类内存自带ECC功能的产品是DDR5,但DDR5防呆口与D4不同,在现有的DDR4平台上无法使用,需购买支持DDR5的主板。
且11代以及以前的处理器不支持DDR5内存内存ecc校验错误怎么办,所以需配置新的主板和处理器。
去年12月酷睿12代也正是对外发布,支持新一代DDR5内存。


