文档库 最新最全的文档下载
当前位置:文档库 › 转-ECC详解

转-ECC详解

转-ECC详解
转-ECC详解

(转)

为什么市场上买的普通标准内存装入我的机器中,机器不认,更何况是正常工作呢?

为什么工作站和服务器所用的内存和台式机不同呢?都是因为ECC。究竟什么是ECC呢?

什么是ECC?

ECC是Error Checking and Correcting(错误检查和纠正)的简写。它广泛应用于各种领域的计算机指令中。而本文主要讲解ECC在计算机内存中的应用。ECC和奇偶校验(Parity)类似。然而,在那些Parity只能检测到错误的地方,ECC实际上可以纠正绝大多数错误。经过内存的纠错,计算机的操作指令才可以继续执行。

在内存中会发生什么样的错误呢?

绝大多数常见的内存出错都是:单位错,多位错,列错,行错。它们都比较相似。单位错大多发生在读一个完整的比特或词的时候有一位比特出错。当读相同的比特和词时总是同一位数据出错,则称为多位错。单位错发生在很多词中,就称列错或行错。

这些错误是怎样被纠正的?

ECC内存使用额外的比特(bit)存储一个用数据加密的代码。当数据被写入内存,相应的ECC代码与此同时也被保存下来。当重新读回刚才存储的数据时,保存下来的ECC代码就会和读数据时产生的ECC代码做比较。如果两个代码不相同,他们则会被解码,以确定数据中的那一位是不正确的。然后这一错误位会被抛弃,内存控制器则会释放出正确的数据。被纠正的数据很少会被放回内存。假如相同的错误数据再次被读出,则纠正过程再次被执行。重写数据会增加处理过程的开销,这样则会导致系统性能的明显降低。如果是随机事件而非内存的缺点产生的错误,则这一内存地址的错误数据会被再次写入的其他数据所取代。

ECC到底需要多少额外的空间呢?

加密ECC代码以及纠正一位错误,只需要很少的额外存储空间。和Parity不同的是ECC不会以数据位数的增加速度而增加。例如:数据的位数增加一倍,Parity也得增加一倍,而ECC只需增加一位。所以,一个系统中用8位数据,则需1位用于Parity检验,5位用于ECC。然而,一个32位数据需要4位作Parity,

7位作ECC。当数据带宽增加到64位则同时各需要8位分别作Parity和ECC。下表列出了不同带宽的数据所需要的不同位数的ECC和Parity。

Word Bits ECC Bits Parity Bits

8 5 1

16 6 2

32 7 4

64 8 8

128 9 16

就如您们所看见的一样,当数据为64位时所用的ECC和Parity位数相同。这就是为什么内存制造商用一对或几对36位内存模块造就ECC。例如:EDO+ECC就是36位内存模块。成对上就是72位,存储64位数据,多余的8位作ECC用。而SDRAM+ECC是72位内存模块。因而它是成单上,多余的8位作ECC 用。可能有的系统会应用到额外的ECC内存模块,但是工业标准的36位SIMM条在成本和实用性上更加吸引设计者和最终用户。

ECC是怎样被应用于现实世界中的?

含有ECC的系统可能对于ECC有着不同的用法。通常,当错误数据需要被纠正时,系统会记录下错误并把错误报告给系统管理者。如果数据被多次读出而没有被其他数据取代,则许多出错会被报告于相同的内存单元。如果系统关闭后这一相同的内存单元被纠正,一个故障很可能发生在内存中而且必须被替代。

相关文档