课程笔记

Lecture10 Error

错误分类

Hard Failure

  • 永久的物理缺陷导致的一个或者多个存储单元在持续为1或者0,或者错误的在10之间切换

  • 主要由现实中的恶劣环境,制造的缺陷,或者损伤引起

Soft Failure

  • 随机的,非破坏的改变了某个或者某些存储单元的内容,但是没有损坏存储器

  • 主要是电源问题或者α粒子的放射性衰减造成的

纠错

基本概念

通过某个函数得到一些数据存储额外信息,

主要流程

  • 对于M位的数据D,通过某个函数得到一个K位的C,一起存入

  • 取出的时候D’与C’,根据取出的D’与f得到C’’再与取出的C’进行比较

  • 没有错误就输出

  • 有错误检测是否能改正,改正了再输出,否则报错

奇偶校验

定义

  • 用一位数字判断D里的1到底是奇数还是偶数

  • 偶数校验:如果D里的1的数量是偶数,那么返回0,加上C过后,1的数量是偶数

  • 奇数如果D里的1的数量是奇数,返回0,否则返回1,为偶数校验的结果再与1取异或,加上C过后,1的数量是奇数

流程

  • 取S=C’’xorC’

  • 如果S等于1,那么说明两者不同,说明D’+C’中有奇数个错误发生,使得到的C’’发生值的变化

  • 如果S等于0,那么说明两者相同,说明D’+C’中有偶数个错误发生或者没有错误发生

优点缺点

  • 低能耗,简单

  • 但是不能定位到错误发生的准确位置,也不能用来纠错,当错误个数为偶数的时候无法判断,并且出错的概率需要很低,只能对一个很短的数据校验

为什么大批量的数据不使用奇偶校验

  • 在每个字符后再增加一位校验码会增加大量的开销,

  • 尤其是网络通信中,对传输的二进制比特流没有必要再分解成一个个字符,无法采用奇偶校验码,

  • 而且奇偶校验码以及海明码只能对于一位进行纠错,如果数据过长会增加多位出错的概率

Hamming Code

假设只有一位出错 也是校验一位 海明码是存在在数据内部的

定义

  • 把数据分为多个组,对每一个组进行奇偶校验

流程

  • M位分为K个组,共有M%K个组

  • 每个组需要一位,共需要K位

  • 读取数据的时候对每一个组取奇偶校验,得到一个新的K位code,与取出的K作比较

K的取法

  • 由于每种情况需要用一个K位的code,校验码来标记,那么2^k ≥m+r+1 (1就是没有错的那种情况)

  • 校验码的位置,在2的幂的位置,1,2,4,8,16位等等,其他位为数据位,用syndrome word标记他的位置

    • 位置从1开始算,C1对应位置0001,C2对应0010,C3对应0100,C4对应1000,依次类推

    • 位置1101的数,就由C1,C3,C4来校验,位置的最低位为1的数一起计算C1

检验

  • 最后根据取出得到的校验码和取出的校验码作比较,算出的S(故障字)即为出错的那一位的位置,在整个M+K中的位置

  • 如果只有一个1,说明是检测位错误,不用改正

SEC-DED

单一错误改正,两位错误检测,增加一位校验码,这个校验码由位置没有3个1的Data计算得到,即让每个D都参加三个校验码的形成过程

  • 数据中当有一位不同的时候,将会有三个Checkbits被改变

  • 得到的结果S如果只有一个1,说明是某个checkbit改变了

  • 如果只有两个1,说明在整个M+K中有两个error发生,并且找不到

  • 如果有三个1,能够定位到八个数据中错误的位置,S的低四位则为D的位置