网络通信 频道

ECC内存查纠错技术

  ECC的英文全称是Error Checking and Correcting(错误检查和纠正),从这个名称就可以看出它的主要功能就是"发现并纠正错误"。

  与奇偶校验技术一样,ECC纠错技术也需要额外的空间来存储校正码,但其占用的位数跟数据的长度并非成线性关系。具体来说,它是以8位数据、5位ECC码为基准,随后每增加一个8位数据只需另增加一位ECC码即可。通俗地讲,就是一个8位的数据产生的ECC码要占用5位的空间;一个16位数据的ECC码只需在原来基础上再增加一位,也就是6位;而32位的数据则只需在原来基础上增加一位,即7位的ECC码即可,依次类推。

  ECC码将信息进行8位的编码,采用这种方式可以恢复1比特的错误。每当数据写入内存的时候,ECC码使用一种特殊的算法对数据进行计算,其结果称为校验位(check bits)。将所有校验位加在一起的和是"校验和"(check sum),校验和与数据一起存放。当这些数据从内存中读出时,采用同一算法再次计算校验和,并和前面的计算结果相比较,如果结果相同,说明数据是正确的,反之说明是错误的,ECC可以从逻辑上分离错误并通知系统。当只出现单比特错误的时候,ECC可以把错误改正过来而不影响系统运行。ECC的工作原理如图3-8所示。

  

图3-8  ECC查纠错原理

  除了能够检查到并改正单比特错误之外,ECC码还能检查到(但不改正)单DRAM芯片上发生的任意2个随机错误,并最多可以检查到4比特的错误。当有多比特错误发生的时候,ECC内存会生成一个不可隐藏的中断(non-maskable interrupt,NMI),系统会中止运行以避免出现数据恶化。

  显然ECC码的长度跟数据的长度成对数关系,当数据长度在64位以上的时候,ECC码在空间占用上就会凸现优势。此外,ECC校验最大的优点是如果数据中有一位错误,它不但能发现而且可以对其更正,ECC校验还可以发现2~4位错误(不能更正),当然这样的情况出现的几率是非常低的。但ECC码的校验算法比奇偶校验复杂不少,需要专门的芯片来支持,所以普通的电脑主板不一定支持。而且因为系统需要时间来等待校验的结果,所以ECC校验会降低系统速度2%~3%,但以这小小的代价换来系统稳定性的大大提高,可以说是非常值得的。

   ECC不是一种内存型号,而是一种内存技术,不仅以前的EDO内存可以有,SD内存也可有。现在主流的DDR、DDR2、DDR3内存同样可以有,所以在现在的服务器配置中都可见到"512 MB ECC DDR-400内存"之类的字样。那是因为ECC并不是一种影响内存结构和存储速度的技术,它可以应用到不同的内存类型之中,就像在前面讲到的"奇遇校验"内存一样。

0
相关文章