ECC校验是一种内存纠错原理。
ECC内存也就是纠错内存,具有发现错误,纠正错误的功能,目标是使系统的工作时趋于安全稳定。
内存作为电子器件的一种,工作过程中难免出错。内存错误分为硬错误和软错误。
- 硬错误:由于硬件的损害或缺陷造成,导致数据不正确,此类错误是无法纠正的。
- 软错误:随机出现的,例如在内存附近突然出现电子干扰等因素都可能造成内存软错误的发生。
ECC技术之,首先出现的是内存“奇偶校验(Parity)”
内存中最小单位为比特,也就是位(bit)。位只有两种状态:1或者0.
每8个连续的比特叫做一个字节(byte)。
不带奇偶校验的内存每个字节只有8位,如果其某一位存储了错误的值,就会导致其存储的相应数据发生变化,进而导致应用程序发生错误。
奇偶校验 是在每一字节(8位)之外又增加了一位作为错误检测位。在某字节中存储数据之后在其8个位上存储的数据是固定的。因为每个位只能有两种状态1或者0。
奇偶校验的局限性:
只能检测出作物而无法对其进行修正。同时虽然双位同时发生错误的概率相当低,奇偶校验却无法检测出双位错误。
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无法检查出来的错误位查出并将错误修正
学习链接: