计算机组成原理 | 奇偶校验、循环冗余校验、海明校验

关注wx“印象编程”,排版更清楚~

校验方法

校验方式的核心作用是检测 / 纠正数据传输、存储或处理中的错误,保障信息准确性。408课程中主要是计算机组成原理和计算机网络中会详细学习和使用。

主要作用

1.计算机组成原理中的作用

  • 针对内存、CPU 缓存、磁盘等存储 / 处理场景,解决硬件噪声、电磁干扰导致的比特翻转问题。
  • 保障指令执行、数据读写的准确性,避免计算结果错误或系统崩溃。

2.计算机网络中的作用

  • 主要用于实现差错控制,比如OSI模型的数据链路层、网络层和传输层都有差错控制的功能。

校验码是通过某种校验方式生成的具有发现错误纠正错误的数据编码。原理是被校验数据(原始数据)中引入部分冗余信息(校验数据),得到最终的校验码(原始数据+校验数据)符合某种编码规则。

计算机组成原理-校验码结构.drawio

 

数据校验的流程:发送方对原始数据按照预定的编码规则进行编码,生产包含冗余信息的校验码,校验码传输给接收方,接收方利用预定的解码规则进行解析,并判断校验码是否符合编码规则,若不符合编码则说明出错了。

码距:码距是指编码中不同的两个二进制位之间的距离,又称为海明距离。且规定一个有效编码集中,任意两个码字的最小码距是该编码集的码距。校验码的目的就是扩大码距,码距越大,抗干扰能力、纠错能力越强;但数据冗余越大,编码效率却越低。

码距与纠错、纠错能力如下表:

码距检错、纠错能力
1d ≥ e+1可检测e个错误
2d ≥ 2t+1可纠正t个错误
3d ≥ e+t+1 && e ≥ t可检测e个错误并纠错t个错误

奇偶校验

奇偶校验是常见的简单校验码,通过检测二进制代码中1的个数的奇偶性进行数据校验;个数为奇数对应奇校验,个数为偶数对应偶校验。

简单奇偶校验

简单奇偶校验只有一个校验组、一个校验位,所以只能提供一位检错信息进行错误检查,无法纠错

编码规则:增加一个校验位P,使得最终的校验码中数学1的个数为奇数或偶数,最小码距是2

奇校验:整个校验码(有效信息位+校验位)中1的个数为奇数;

偶校验:整个校验码(有效信息位+校验位)中1的个数为偶数。

地址结构

计算机组成原理-奇偶校验码.drawio

 

交叉奇偶校验

多重奇偶校验是把原始数据信息按某种规律分成若干校验组,每个数据位至少两个以上的校验组,当校验码中的某一个位发生错误时,能在多个检错位中被指出,使得偶数位错误也可以被检查出,还可以指出最大可能是哪位出错,从而将其纠错。

交叉奇偶校验是最典型的例子。原理是将原始数据按矩阵形式排列(行 + 列划分),对每行、每列分别进行奇偶校验并添加对应校验位,形成 “行校验位 + 列校验位” 的双重校验组。

  • 每个数据位同时属于 “所在行” 和 “所在列” 两个校验组,满足 “一个数据位归属多个校验组” 的多重校验核心要求。
  • 接收端通过核对行、列校验结果:若某行和某列校验均失败,可定位到交叉点的数据位是错误位;
  • 既能检测出偶数个比特错误(突破简单奇偶校验的局限),还能定位并纠正单个比特错误,也可检测部分多比特错误。

循环冗余校验

 

地址结构

计算机组成原理-CRC地址结构.drawio

 

循环冗余校验码的思想
数据发送时,发生放和接收方双方约定一个“除数”,K个信息位+R个校验位作为”被除数“,添加校验位后需保证除法的余数为0。收到数据后,进行除法检查最终余数是否为0。若余数非0说明出错,则进行重传或纠错。

例题

求有效信息110CRC码,生成多项式。

有效信息是110则,即信息位为3位;

多项式是,而校验位为R位,R位为生产多项式最高次幂,即R=4。所以校验码位数为N=K+R=7。所以在信息位110后填充0000冗余为存放校验码。

接着,按模2除法:

计算机组成原理-CRC-例题.drawio

 

求得商,余数,最后得到的CRC码为1101001。(把最终余数1001替代进原来的0000冗余位)。

检错和纠错:发送方发生CRC1101001,接受方接收后用11101进行模2除。若余数为000代表没有出错。

注意:K个信息位,R个校验位,若生成多项式选择得当,且,则CRC码可纠正1位错误,但实际应用中一般只用来“检错”。

总结
循环冗余校验码构造

CRC码构造流程
①由生成多项式确定“除数”。若生产多项式中x的最高次幂为R,则“除数”有R+1
K个信息位+R0冗余位
③被除数、除数进行模2除,得到R位余数
K个信息位+R个余数=CRC

校验

CRC码校验逻辑
收到K+R位数据,与生成多项式模2除,计算R位余数
余数为0,说明无错误
余数非0,说明出错

检错、纠错能力

检错和纠错能力
可检测出所有奇数个错误
可检测出所有双比特错误
可检测出所有小于等于校验位长度的连续错误
若选择合适的生成多项式,且则可纠正单比特错

海明校验

海明码的设计思路是将信息位分组进行偶校验→多个校验位→多个校验位标注出错位置。

计算机组成原理-海明码结构.drawio

 

实现逻辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值