一种四维奇偶校验码与汉明码相结合的存储器校验编码及检错纠错方法与流程

文档序号:15828999发布日期:2018-11-03 00:15阅读:1286来源:国知局

本发明属于集成电路空间辐射应用领域,涉及一种对存储器所存储的数据进行校验编码及检错纠错处理的方法。

背景技术

太空辐射效应尤其是单粒子效应对集成电路存储器件有着很大的威胁,入射的高能粒子很容易导致存储器中存储的数据位电平翻转,导致数据出错。为保证数据正确性,人们在数据写入存储器时通过编码获得校验码,然后在数据读出时译码来检错纠错。对于1位错误,汉明码有着良好的检错纠错能力,但对于多位翻转,汉明码则无能为力;常规的四维奇偶校验码虽然能够纠正3位错误,但其生成的校验码自我纠错存在很大的问题,具体来说:

在校验位有2位错误时,只能实现数据位的一位纠正,而且在某些情况下完全无法实现数据位的纠错,当校验位有1位错误时,数据位只能实现2位纠正,并且需要的算法非常复杂,需要大量的判断逻辑,硬件实现有一定难度,不适合单独用于存储器的检错纠错。专利文献cn102034555a采用了汉明码的编码方法,虽然在一定程度上减少了冗余开销,但无法避免汉明码只能实现2位检错一位纠正的问题。专利文献cn107886995a从对电路实现结构改进的出发,虽然通过树形结构、流水线以及交错结构提升了电路性能,实现了一定的多位检错能力,但其对存储单元纠错能力的提升远低于对检错纠错编码方法的改进。



技术实现要素:

本发明提出了一种四维奇偶校验码与汉明码相结合的存储器校验编码及检错纠错的方法,解决了常规四维奇偶校验码的校验位自我纠错存在很多限制与不足的问题,提高了存储器检错纠错的可靠性。

本发明的解决方案如下:

一种四维奇偶校验码与汉明码相结合的存储器校验编码方法,设m×n大小的存储块对应于一个编码单元;该存储器校验编码方法包括:

步骤1)对m×n大小的存储块,采用四维奇偶校验码进行编码,相应生成四种属性(编码对象)的校验位数据,作为第一重编码;

步骤2)将四种属性的校验位数据按照特定的排布方式通过汉明码进行编码组成一个编码单元,作为第二重编码;所述特定的排布方式为:该编码单元的任一存储单元与其周围的8个存储单元(上下左右以及4个相邻对角)所存储的校验位数据的属性均不相同。

基于以上方案,本发明还进一步作了如下重要优化:

以8×8大小的存储块为例,设8行记为a、b、d、e、f、g、h,8列记为0、1、2、3、4、5、6、7,即左上角第一个数据为a0,第二行第一个数据为b0,以此类推;则步骤1)生成四种属性的校验位数据具体是:

每行生成行校验位h0~h7;

每列生成列校验位v0~v7;

从左上角到右下角的对角线的数据生成校验位d0~d7,具体是:从左上角到右下角的对角线a0到h7上的8个数据生成校验位d0,对角线a1到g7上以及h0位的共8个数据生成校验位d1,对角线a2到f7上以及g0、h1位的共8个数据生成校验位d2;以此类推,直到a7位以及对角线b0到h6上的共8个数据生成校验位d7;

从右上角到左下角的对角线的数据生成校验位dd0~dd7,具体与以上d0~d7的生成模式相同,只不过对角线方向为右上角到左下角。

需要说明的是,上述以8×8大小的存储块为例的方案只是为了便于说明这一优化编码方式,而并不是强调8×8大小的存储块比其他存储大小更加适用本发明。以下同理。

以8×8大小的存储块为例,步骤2)中,第一重编码生成的32位校验位根据生成方式分为四组,每组8位数据组成一个数据组,对每组数据通过汉明码进行编码。

一种四维奇偶校验码与汉明码相结合的存储器检错纠错方法,对按照上述编码方法得到的编码单元进行解码,包括:

步骤1)运用汉明码的解码方式对第二重编码进行解码,通过汉明码能够检测并纠正1位错误以及检测出两位错误的能力判断其编码对象,也即第一重编码生成的校验位是否正确;

步骤2)若有两位错误,则返回数据(即第一重编码产生的校验位)的错误信息,舍弃;若只有一位错误,则直接纠正;

步骤3)采用所述四维奇偶校验码的解码方式,对纠正后的第一重校验码进行解码,判断存储器数据是否正确及纠正。

本发明具有以下优点:

本发明通过对编码方式进行改进,首先采用四维奇偶校验码实现对数据的3位检错,然后采用汉明码解决数量远少于数据位的四维奇偶校验位自身发生错误的检错纠错问题,从而解决了四维奇偶校验码的校验位自我纠错存在很多限制与不足的问题,可以在实现对数据位的3位纠错的基础上保证每一维校验位的2位检错与1位纠正,提高了存储器检错纠错的可靠性。

本发明还对四维奇偶校验码的编码方式进行了重要的优化,其生成的校验位减少到了32位,进一步减少了校验位出错的概率。

附图说明

图1为编解码实施流程。

图2为第一重校验码生成方式。

图3为第一重校验码存储方式。

图4第一重校验码三位翻转的一种情况。

具体实施方式

本发明的编解码总体实施流程如图1所示,分为两重编解,第一重编解采用本发明优化过的四维奇偶校验码进行编码,第二重编码以第一重编码生成的校验码为对象采用汉明码进行第二重编码。

在本发明的两重编码中,首先采用四维奇偶校验码进行第一重编码解决数据位多位翻转的问题,然后采用汉明码对第一重编码生成的校验位进行第二重编码,以此来解决四维奇偶校验码生成的校验位不能自我纠错的问题。汉明码的编码方式与奇偶校验码不同,它不是以块为单位进行编码,而是以n位数据组成的数据组进行编码,我们将第一重编码生成的校验位根据行、列、对角线以及反向对角线等不同分为四个数据组,每一组通过汉明码的编码方式生成自己的校验位,对其进行检错纠错。汉明码编码后生成的校验位具有自我纠错的能力,不会引起新的问题。虽然汉明码编码只能实现检2纠1,不过第一重编码生成的校验位较少,且单粒子效应引起的多位翻转所翻转的存储位一般相邻,还具有低频率的特点,所以,通过数据交织技术和定时刷新技术令第一重校验位的错误尽量保持在汉明码的检错能力内。

在数据读出进行解码时,首先对汉明码编码的第二重编码进行解码,判断第一重编码生成的校验位是否可靠,然后采用经检错纠错的校验位的第一重编码进行解码操作,判断所存储数据是否发生翻转以及进行检错纠错操作。

下面以8×8大小的存储块为例作详细说明:

本实施例以8×8大小的存储块为一个编码单元进行编码,8行记为a、b、d、e、f、g、h,8列记为0、1、2、3、4、5、6、7,左上角第一个数据即为a0,第二行第一个数据即为b0,以此类推。

第一层次的校验码生成如图2所示,重新设计了四维奇偶校验码校验位的生成方法,通过对斜对角线校验位产生方法的改进,将四维奇偶校验码生成的校验位从46个减少到32个。

首先令各行的8个数据进行模二相加(即8个数据依次进行异或操作),生成每一行对应的校验位,从上到下依次为h0~h7。然后令各列的8个数据模二相加,生成每一列对应的校验位,从左到右依次为v0~v7。

选取从左上a0到到右下角h7对角线上的8个数据进行模二相加生成校验位d0,选取从a1到g7对角线上的数据与h0共8个数据进行模二相加生成校验位d1,以此类推,依次生成d2~d6,直到通过a7与从b0到h6的对角线上的数据共8个生成校验位d7。

从右上角到左下角对角线上校验码的生成方式类似,依次生成校验位dd0~dd7。本发明提出的四维奇偶码产生方法在3位纠错的基础上仅需校验码32个。以上为第一重编码。我们将第一重编码生成的校验位根据行、列、对角线以及方向对角线等不同分为四个数据组,每一组通过汉明码的编码方式生成自己的校验位。

以如图3所示的存储方式(任一存储单元与其上、下、左、右以及相邻对角这8个存储单元所存储的校验位数据的属性均不相同)对第一重编码生成的校验位进行存储,通过数据交织技术和定时刷新技术令第一重校验位的错误尽量保持在汉明码的检错能力内。如图3所示,校验位数据是按照生成方式(即行、列、两个对角线)分组的,生成的四组数据分开存储(字母相同的为一组,每组标号0~7),每组中的数据并不在一行。所以分组的数量和存储块大小无关,只是每组的数据会增多。

如图4所示,虽然造成了数据的3位翻转,但其分别位于h,v,d三组数据中,每组只有一位数据发生了翻转,所以可以把错误全部纠正出来。

数据读出时,首先运用汉明码的解码方式对第二重的编码进行解码,通过汉明码检2纠1的能力判断第一重校验码的正确性。有2位错误,则数据出错,舍弃,一位错误,则纠正后对原始数据的第一重编码采用四维奇偶校验码的解码方式进行解码,判断数据是否正确及纠正。

本发明通过经优化的四奇偶校验码与汉明相结合的方式,在保证对数据位3位纠错的同时,实现对每一维校验位的2位检错、1位纠正,最多实现对校验位的8位检错、4位纠正。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1