【计算机组成原理·笔记】存储器校验

存储器校验

为什么要检验

电磁环境不稳定,会导致存储器电容的充电放电,造成数据丢失与错误。

怎么校验编码

合法代码集

将拿到的二进制编码与合法代码对比,能找出唯一一个最小的错位,就能纠错
编码的检测和纠错能力与合法代码集中任意两组代码之间位数差异的最小值有关

  • 差1位 - 检0、纠0
  • 差2位 - 检1、纠0
  • 差3位 - 检1、纠1
  • 差4位 - 检2、纠1
  • 差5位 - 检2、纠2

  • 目测规律是每多1位后的位差为偶数时,比上一级检测能力+1,奇数时,纠错能力+1
编码最小距离

任意两组代码之间位数差异的最小值有关,即编码最小距离(L)

L - 1 = D + C, D ≥ C

D是检测位数,C是纠错位数

汉明码

汉明码是一种采用奇偶校验1和分组校验2(非划分) 的具有1位纠错能力的二进制编码
可以根据对各组的校验结果比对和不同组的重叠元素快速定位到出错的位置上

![[汉明码示例图.excalidraw.svg]]
记组 P1(1,3,5,7), P2(2,3,6,7), P3(4,5,6,7) (这些数字只是标记一下位置)
假设最多只存在一位错误,对P1, P2 和 P3组的校验情况如下时:

P1P2P3出错说明
000
1001只有P1错了,那必然只在P1独有的位置出错,即1
1015P1和P3错了但P2没错,必然出错在仅P1和P3的交叉位置,即5
0116P2和P3错了但P1没错,必然出错在仅P2和P3的交叉位置,即6
1117P1,P2和P3都错了,必然错在3组的公共区域,即7
如何分组

对汉明码:二进制编码从右往左数,第几位为1就是第几组

求汉明码
  • 求校验位数

新增检测位可以提高检测和纠错能力,记原代码长度n,为使其具有纠错能力,至少需要增加k位检测位,组成 n+k 位的新代码:

$2^k ≥ n + k + 1 $

如:0101,k=4,则需要3位校验码组成7位的汉明码
检测位Ci处于汉明码中 1,2,4…2^(k-1) 的位置:

序号1234567
名与值 C 1 C_1 C1 C 2 C_2 C2 b 4 b_4 b4=0 C 4 C_4 C4 b 3 b_3 b3=1 b 2 b_2 b2=0 b 1 b_1 b1=1
  • 组数:n
  • 求每组( g i g_i gi)组员:组 g i g_i gi 读占有汉明码中第 2 i − 1 2^i-1 2i1 位,组 g i g_i gi 和 组 g j g_j gj 公共独占 ( 2 i − 1 2^i-1 2i1 + 2 j − 1 2^j-1 2j1 ) 位,依次类推可得所有元素
  • 根据奇偶校验,用异或运算求校验位:如组 g 1 g_1 g1 的 0 & 1 & 1,同0异1,得 1 & 1,得 0,以此类推

最终得 C 1 C_1 C1=0, C 2 C_2 C2=1, C 4 C_4 C4=0,汉明码为 0100101

脚注


  1. 奇校验:判断二进制码中1的个数为奇数;偶校验:1的个数为偶数 ↩︎

  2. 将码分成几组分开校验,分为划分式和非划分式(有重叠) ↩︎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值