欢迎光临散文网 会员登陆 & 注册

【硬件科普】ECC内存是如何发现错误并纠正的?

2022-10-31 20:59 作者:xyjandyyk  | 我要投稿

这里以1号位和2号位作为奇偶检验位,不存储数据,用来校验1、3列和2、3列,在数据发送之前分别根据1、3列和2、4列当中1的个数是否为偶数来确定校验位为0或者1(奇数为1,偶数为0),接收方只要判断是否为偶数即可。当后面三列都没有错误,那么错误就在第一列。


同理4号和8号位作为2、4行和3、4行的校验位。


经过行和列的校验,就得到了错误位置。


为了避免0号数据位对纠错结果的影响,将0号位作为全盘校验位。


当出现两个错误,汉明码虽然不能判断出错位置,但是保证能检测到错误。


对于同时出现三个错误这种小概率事件,汉明码无法保护。


由于汉明码是基于二分法的检错,所以只需要在每个2^n位加入纠错位就可以支持任意长度的纠错。


ECC内存每个纠错块是72bit(8bit纠错码+64bit数据),因硬件实现简单广泛用于内存中。硬盘上有更高级的LDPC码实现。


位置信息和奇偶校验结果存在着有趣的联系,将1所对应的二进制编码全部提取出来进行异或运算,结果是0说明没有错误,不为0的结果对应错误的位置。所以汉明码只需要将所以1的位置进行异或运算就可以得出结果。

【硬件科普】ECC内存是如何发现错误并纠正的?的评论 (共 条)

分享到微博请遵守国家法律