纠错内存

维基百科,自由的百科全书
跳转至: 导航搜索
ECC RAM 每面均有9枚記憶體顆粒,比普通的多1枚

纠错内存Error-correcting code memory,縮寫ECC memory),即能够实现错误检查和纠正错误技术的内存。

技术原理[编辑]

在ECC技术出现之前,内存中应用最多的另外一种錯誤檢查技术,是奇偶校验位(Parity)技術。

数字电路中,最小的数据单位是“比特(bit)”,也叫“位元”。“比特”也是内存中的最小单位,它是通过“1”和“0”来表示数据高、低电平信号。在数字电路中8个连续的比特是一字节,不带“奇偶校验”的内存中的每个字节只有8位,若它的某一位存储出了错误,就会使其中存储的相应数据发生改变而导致应用程序发生错误。

而带有“奇偶校验”的内存在每一字节(8位)外又额外增加了一位用来进行错误检测。比如一个字节中存储了某一数值(1、0、1、0、1、0、1、1),把这每一位相加起来(1+0+1+0+1+0+1+1=5)。对于偶校验,若其结果是奇数,校验位就定义为1,反之则为0;对于奇校验则相反。当CPU返回读取存储的数据时,它会再次相加前8位中存储的数据,计算结果是否与校验位相一致。当CPU发现二者不同时就会试图纠正这些错误。

但奇偶校验位技术有个缺点,当内存查到某个数据位有错误时,由于不一定能确定错误在哪一个位,也就不一定能修正错误。所以带有奇偶校验的内存的主要功能仅仅是“发现错误”,并能纠正部分简单的错误。

此外,奇偶校验技术是通过在原来数据位的基础上增加一个数据位来检查当前8位数据的正确性,但随着数据位的增加,用来检验的数据位也成倍增加,就是说当数据位为16位时它需要增加2位用于检查,当数据位为32位时则需增加4位,依此类推。特别是当数据量非常大时,数据出错的几率也就越大,对于只能纠正简单错误的奇偶检验的方法就显得力不从心了。正是基于这样一种情况,错误检查和纠正(Error Checking and Correcting)应运而生了。

ECC与奇偶校验不同的是,如果数据位是8位,则需要增加5位来进行ECC错误检查和纠正。数据位每增加一倍,ECC只增加一位检验位。也就是说当数据位为16位时ECC位为6位,32位时ECC位为7位,数据位为64位时ECC位为8位,依此类推。在内存中ECC能够容许错误,并可以将错误自动更正,使系统得以正常的操作,不致因错误而中断。

误解[编辑]

部份人認為伺服器必須使用ECC内存,认为ECC内存效能較高,其实是一种謬誤。ECC内存之所以廣泛應用於伺服器領域,并非其效能,而是因为ECC內存的纠错能力,使伺服器保持稳定。事實上,ECC RAM要進行糾錯,它的效能比一般的non-ECC RAM還要低。

ECC本身并不是一种内存型号,也不是一种内存专用技术,它是一种广泛应用于各种领域的计算机指令中的指令纠错技术,确保服务器的正常运行。之所以说它并不是一种内存型号,那是因为并不是一种影响内存结构和存储速度的技术。它可以应用到不同的内存类型之中,正如上述的“奇偶校正”内存,它也不是一种内存。最开始应用这种技术的是EDO内存,现在的SDRAM也有应用。ECC内存主要是从SDRAM开始得到广泛应用,而新的DDR、RDRAM也有相应的应用,目前主流的ECC内存其实是SDRAM。

备注[编辑]

ECC内存还需要CPU主板支持,并在BIOS中进行相应的设置,目前只应用在大多数伺服器主板。