计算机组成原理学习笔记——数据的完整性

90 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

数据完整性

不论是内存漏电,还是外部的射线都有可能使内存的数据出错。我们叫这种现象为单比特翻转

奇偶校验

我们通常把8比特当成一组,然后用额外的一位来记录这8个比特中的1是偶数个还是奇数个,奇数个记为1,偶数个记为0。这额外的一位我们称它为校验码位。这样当8个比特中有一个比特发生了翻转我们通过校验位就可以知道出错了。

不过通过奇偶校验我们只能知道奇数个位的错误,如果两个比特为错误,它是判断不出来的。

还有就是通过奇偶校验,我们只能知道有错误,并不能把它纠正过来。

纠错码

纠错码,我们不仅可以知道哪里的数据错了,还可以把它纠正。海明码就是纠错码的一种。7-4海明码指的是有效数据位为7位,额外数据位用来纠错的是4位。

4位的校验位,可以表示一共16种情况。我们正确的数据是唯一的,所以就可以用另外15种情况去表示出错的情况。

那么问题来了,数据位只有7位,我们为什么不用3位(可以表示8种情况,唯一的正确情况+7种错误情况)就可以正好表示出错的7种情况了。我们要知道,发生单比特翻转,不仅仅是数据部分,也有可能是校验部分。如果我们7位数据只用3位校验码,我们出错就有10种可能,而3位校验码最多只能表示7种错误的情况。所以对于7位数据,最少也要用4位校验码。

纠错原理

我们拿4-3海明码来举例。

我们把4位数据位分别计作d1,d2,d3,d4,把校验位计作p1,p2,p3。我们从数据位拿走一位,让剩下的三位通过奇偶校验计算得出校验位。

image.jpeg

得到这7位正确的比特之后

如果这时候在数据位发生了单比特翻转那么:d1出错对应p1,p2与原来不同;d2出错对应p1,p3与原来不同;d3出错对应p2,p3与原来不同;d4出错对应p1,p2,p3与原来不同。

如果这时候在校验位发生了单比特翻转那么:p1出错对应p1与原来不同;p2出错对应p2与原来不同;p3出错对应p3与原来不同。

image.jpeg