首页 技术知识 ECC内存中的奇偶校验
ECC内存中的奇偶校验
2017-02-31

        ECC并非象常见的PC133,DDR400那样是内存的传输标准,ECC内存是具有错误校验和纠错功能的内存。ECC是Error Checking and Correcting的简称,它也是通过在原来的数据位上额外增加数据位来实现的。如8位数据,则需1位用于Parity(奇偶校验)检验,5位用于ECC,这额外的5位是用来重建错误的数据的。当数据的位数增加一倍,Parity也增加一倍,而ECC只需增加一位,所以当数据为64位时所用的ECC和Parity位数相同(都为8)。在那些Parity只能检测到错误的地方,ECC可以纠正绝大多数错误。若工作正常时,你不会发觉你的数据出过错,只有经过内存的纠错后,计算机的操作指令才可以继续执行。当然在纠错时系统的性能有着明显降低,不过这种纠错对服务器等应用而言是十分重要的,ECC内存的价格比普通内存要昂贵许多。  关于ECC内存中的奇偶校验奇是一种增加二进制传输系统最小距离的简单和广泛采用的方法。例如,单个的奇偶监督将使码的最小距离由一增加到二。   

       一个二进码字,如果它的码元有奇数个1,就称为具有奇性。例如,码字“1011010111”有七个1,因此,这个码字具有奇性。同样,偶性码字具有偶数个1。注意奇性检测等效于所有码元的模二加,并能够由所有码元的异或运算来确定。对于一个n位字,奇性由式(8-1)给出:   

       奇性=a0⊕a1⊕a2⊕…⊕an (8-1)   

       很明显,用同样的方式,我们也能够根据每一个码字的零的个数来构成奇偶监督。   

       单个的奇偶监督码可描述为:给每一个码字加一个监督位,用它来构成奇性或偶性监督。例如,在图8-2中,对于二进码就是这样做的。可以看出,附加码元d2,是简单地选来使每个字成为偶性的。因此,若有一个码元是错的,就可以分辨得出,因为奇偶监督将成为奇性。   

       在一个典型系统里,在传输以前,由奇偶发生器把奇偶监督位加到每个字中。原有信息中的数字在接收机中被检测, 如果没有出现正确的奇、偶性,这个信息标定为错误的,这个系统将把错误的字抛掉或者请求重发。注意,用单个的奇偶监督码仅能检出奇数个码元的错误。   

       例如考虑图8-4里的奇性监督码。把奇、偶监督位加到一个 8-4-2-1 BCD码,使之能够进行奇监督(将所有监督位反过来将产生偶监督码)。可以看到,如果将任何码字里的奇数个码元反过来,那么将成为偶性码,因而,无效的字是可以分辨出来的。然而,如果有两个或四个码元反过来,那末奇偶监督将仍然是奇性码,并且这个字被认为是正确的。只当一个给定的字里同时出现两个错误的概率被忽略不计时,单个的奇偶监督才是有效的,实际上,奇监督码比偶监督码可取,因为它排除了传输全0的情况。   

       十进数字 4 比特直接二进码 奇性监督位   

       8 4 2 1   0 0 0 0 0 1   1 0 0 0 1 0   2 0 0 1 0 0   3 0 0 1 1 1   4 0 1 0 0 0   5 0 1 0 1 1   6 0 1 1 0 1   7 0 1 1 1 0   8 1 0 0 0 0   9 1 0 0 1 1   

       图8-4 附加奇性监督位的BCD码   

       奇偶监督可以用在数字系统的主要接口设备中。由于在每个信息中加了多余度,仅当出现错误的概率和错误的危害足够大时,才采用奇偶监督码。   

       为了说明奇偶监督码的应用,考虑下例。假设以400比特/秒的速率传输四码位信息(100字/秒)。设由试验数据或适当的计算确定了任何单个码位出现错误的概率为3.1×10-5。因为,每个字包含四个码位,接收到错字的概率大约为1.25×l0-4,即在100字/秒的传输速率下,平均每80秒错一个字。   

       加一个奇偶监督位后,每个字需要五个码位,从而,将传输速率降低到80字/秒,能够检测一个错误,并且能指令发送机重发错了的信息以校正信息。出现两个错误的概率计算如下:如果五个码位是A、B、C、D、E,那么两个错误可能以下述10种组合出现。

        即 AB、AC、AD、AE 、BC、BD、BE 、CD、CE 、DE  出现任何一对的概率是(3.1×10-5)2,或9.6×10-10,因此,在单个字里出现两个错误的概率等于10× 9.6×10-10,或9.6×10-9。以80字/秒的新的传输速率, 可能以每1.3×10-6秒, 即平均每15天,出现一个未被检出的错误。因为三个错误能被检测出,四个码位错误的概率与两个错误相比可以忽略不计,因此,我们在这里不考虑任何更多的错误。   

        奇偶校验”。内存中最小的单位是比特,也称为“位”,位有只有两种状态分别以1和0来标示,每8个连续的比特叫做一个字节(byte)。不带奇偶校验的内存每个字节只有8位,如果其某一位存储了错误的值,就会导致其存储的相应数据发生变化,进而导致应用程序发生错误。而奇偶校验就是在每一字节(8位)之外又增加了一位作为错误检测位。在某字节中存储数据之后,在其8个位上存储的数据是固定的,因为位只能有两种状态1或0,假设存储的数据用位标示为1、1、1、0、0、1、0、1,那么把每个位相加(1+1+1+0+0+1+0+1=5),结果是奇数,那么在校验位定义为1,反之为0。当CPU读取存储的数据时,它会再次把前8位中存储的数据相加,计算结果是否与校验位相一致。从而一定程度上能检测出内存错误,奇偶校验只能检测出错误而无法对其进行修正,同时虽然双位同时发生错误的概率相当低,但奇偶校验却无法检测出双位错误。

定制专属于我的服务器
可选购标准配置的服务器产品,也可以根据自己需求定制专属服务器
开始定制
服务热线:400-028-1968 028-85099673 13881950196
工作时间:周一至周六 09:00-18:00(北京时间)
Copyright © 2024 成都网烁信息科技有限公司 版权所有
本网站直接或间接向消费者推销商品或者服务的商业宣传均属于“广告”(包装及参数、售后保障等商品信息除外)