文章插图
奇偶校验位【奇偶校验位】奇偶校验位 (Parity)多被套用于计算机硬体的错误检测中 。奇偶校验通常用在数据通信中来保证数据的有效性 。每个设备必须决定是否它将被用为偶校验、奇校验、或非校验 。传送设备添加1s在每个它传送的每条串上或决定这个数是偶数或奇数 。然后,它添加一个额外的位,叫做校验位,到这个串上 。如果偶校验在使用,校验位将这些位置为偶数;如果奇校验在使用,校验位将这些位置为奇数 。
基本介绍中文名:奇偶校验位
外文名:Parity
领域:计算机数据通信
分类:偶校验、奇校验、或非校验
套用:多用于计算机硬体的错误检测
相关名词:校验位
基本概况奇偶校验位 (Parity)是指偶数或者奇数或甚至对一个数字的性质 。奇偶校验通常用在数据通信中来保证数据的有效性 。每个设备必须决定是否它将被用为偶校验、奇校验、或非校验 。传送设备添加1s在每个它传送的每条串上或决定这个数是偶数或奇数 。然后,它添加一个额外的位,叫做校验位,到这个串上 。如果偶校验在使用,校验位将这些位置为偶数;如果奇校验在使用,校验位将这些位置为奇数 。
文章插图
奇偶校验位流程图奇偶校验位是一个表示给定位数的二进制数中 1 的个数是奇数还是偶数的二进制数 。奇偶校验位是最简单的错误检测码 。奇偶校验位有两种类型:偶校验位与奇校验位 。如果一组给定数据位中 1 的个数是奇数,那幺偶校验位就置为 1,从而使得总的 1 的个数是偶数 。如果给定一组数据位中 1 的个数是偶数,那幺奇校验位就置为 1,使得总的 1 的个数是奇数 。偶校验实际上是循环冗余校验的一个特例,通过多项式 x + 1 得到 1 位 CRC 。错误检测如果传输过程中包括校验位在内的奇数个数据位发生改变,那幺奇偶校验位将出错表示传输过程有错误发生 。因此,奇偶校验位是一种错误检测码,但是由于没有办法确定哪一位出错,所以它不能进行错误校正 。发生错误是必须扔掉全部的数据,然后从头开始传输数据 。在噪声很多的媒介上成功传输数据可能要花费很长的时间,甚至根本无法实现 。但是奇偶校验位也有它的优点,它是使用一位数据能够达到的最好的校验码,并且它仅仅需要一些异或门就能够生成 。参见汉明码中关于其它错误校正码的描述 。使用由于它很简单,所以奇偶校验位用于许多计算机硬体中遇到麻烦时能够重新操作或者通过简单的错误检测就能起到很大作用的场合 。例如SCSI汇流排使用奇偶校验位检测传输错误,许多微处理器的指令高速快取中也包括奇偶校验位保护 。因为指令快取数据是主记忆体数据的副本,所以在发现错误的时候能够抛弃错误数据并且重新取回数据 。在串列数据通信中,常用的格式是 7 个数据位、1 个校验位、1 到 2 个停止位 。这种格式用方便的 8 位位元组巧妙地适应了所有的 7 位 ASCII 字元 。也可以用其它的格式表示,8 位数据加上 1 个校验位可以传输任意的 8 位位元组数据 。在串列通信中,奇偶校验位通常是由UART这样的接口硬体生成、校验的,在接收方,通过接口硬体中的暂存器的状态位传给 CPU 以及作业系统 。错误数据的恢复通常是通过重新传送数据,这个过程通常由如作业系统输入输出程式这样的软体处理的 。记忆体检验对于记忆体的奇偶校验工作要从比特概念说起,比特(bit)是记忆体中的最小单位,也称“位”、它只有两个状态分别以1和0表示 。我们将8个连续的比特叫做一个位元组(byte) 。非奇偶校验记忆体的每个位元组只有8位,若它的某一位存储了错误的值,就会使其中存储的相应数据发生改变而导致应用程式发生错误 。而奇偶校验记忆体在每一位元组(8位)外又额外增加了一位作为错误检测之用 。比如一个位元组中存储了某一数值(1、0、0、1、1、1、1、0),把这每一位相加起来(1+0+0+1+1+1+1+0=5) 。若其结果是奇数,校验位就定义为1,反之则为0 。当CPU返回读取储存的数据时,它会再次相加前8位中存储的数据,计算结果是否与校验位相一致 。当CPU发现二者不同时就作出一定的反应 。现在主机板都可以使用带奇偶校验位或不带奇偶校验位两种记忆体条,但要注意两种不能混用 。上面的叙述描述了奇偶校验在电脑内是如何工作的 。需要说明的是,外围设备连线汇流排和I/O汇流排控制器使用的是奇数的奇偶错误校验方法 。奇偶位校验不是确实可信的错误校验方法,因为它可能两个“位”在传送时都发生可错误 。对于个人电脑内部的传输,这种可能性被认为是微乎其微的 。在一些大型机系统中,数据的完整性是非常重要的,三个“位”被分配用于奇偶校验 。奇偶校验也用于数据机之间的通讯 。这里,奇偶校验可以被选择是偶数的(一个连续的传输将形成一个偶数)还是奇数的 。用户也可以选择没有奇偶,意味着数据机没有传输或者校验位 。当没有奇偶可以选择(或者默认)时,它被假定为有其它的形式的校验以探测传输过程的任何错误 。没有奇偶通常也意味着校验位能被用于数据和传输加速 。在猫到猫的通信中,奇偶的类型在传输发生之前被传送和接受的数据机调整 。奇偶校验块一些冗余磁碟阵列(en:RAID)使用奇偶校验块实现冗余 。如果阵列中的一块磁碟出现故障,工作磁碟中的数据块与奇偶校验块一起来重建丢失的数据 。下面每列表示一个磁碟,假设 A1 = 00000111、A2 = 00000101 以及 A3 = 00000000 。A1、A2、A3 异或得到的 Ap 等于 00000010 。如果第二个磁碟出现故障,A2 将不能被访问,但是可以通过 A1、A3 与 Ap 的异或进行重建:A1 XOR A3 XOR Ap = 00000101冗余磁碟阵列A1 A2 A3Ap B1 B2Bp C1 C2C3 C4 Cp注意:数据块是格式 A#,奇偶校验块是 Ap 。