一种存储器检错纠错码生成方法

文档序号:6741539阅读:968来源:国知局
专利名称:一种存储器检错纠错码生成方法
技术领域
本发明涉及存储器加固编码领域,特别涉及一种存储器检错纠错码生成方法。
背景技术
检错纠错码(Error Detection and Correction, EDAC)是存储器加固的一种常用手段。目前已有多种编码方式用于不同的应用需求,如汉明码(Hamming Code),海思码(Hsiao Code),里德-所罗门码(Reed-Solomon Code)等等。各种编码方式虽然算法有所不同,但用于存储器加固时的基本工作方式是一样的。如附图1所示,为了实现纠检错的功能,存储器需要在原始数据之外增加若干位的存储空间用于存放校验位。用字母k来表示原始信息的位宽,字母η来表示加入校验位后的位宽,对应的编码也被称为(n,k)码。显然,η位的码字中有k位的原始信息,(n-k)位冗余的校验位。当进行写操作时,需要将原始信息通过编码电路以生成检验位,并一同存入存储器;而进行读操作时,将原始信息的数据再次通过编码电路,其结果和读出的检验位数据进行异或运算得到校正子,然后根据校正子对数据进行纠检错操作。其中要注意的是编码电路所生成的校验位与原始信息一同存储,因此解码电路不但要能够纠检原始信息中的错误,也要能够纠检校验位中的错误。目前各类系统中所采用的存储器种类繁多,应用面广泛,不同的存储器有着不同的应用环境和工作模式,对检错纠错码的需求也各不相同。已有的各种编码方式往往功能固定,如汉明码和海斯码只能进行“纠一检二”的功能,常见的奇偶校验码只能实现检测奇数位错误的功能,而RS码虽然能纠多位错,但代价较大。要实现不同能力的纠检错能力就需要掌握不同编码的计算原理,这对于存储器设计而言带来更多挑战。而且,用固定算法往往只能得到一种解码矩阵,无法对其进行进一步的优化。

发明内容
(一 )要解决的技术问题为此,本发明提出针对具体情况定制一种合适的校验矩阵,实现对不同要求的存储器加固编码进行定制的方法,通过校正子向量搜索的方法实现用最小的冗余度、面积和延时代价来完成特定加固的目标。( 二 )技术方案为实现上述目标,本发明提供了一种用于存储器加固的检错纠错码的生成方法,包括:步骤1、根据原始数据位宽和所需纠检错能力预估校验位个数;步骤2、初始化校验矩阵;步骤3、从待检验的校正子向量池中逐个搜索符合线性独立要求的校正子向量填入校验矩阵;步骤4、记录每次搜寻所产生的完整的校验矩阵,并改变向量搜寻的起始位置,重新进行搜索直至搜寻的起始位置穷尽整个校正子向量池;
步骤5、如果没有得到完整的校验矩阵,则增加校验位个数,并重复执行步骤2至4 ;步骤6、如果有多个完整的校验矩阵,则从中选择一个最优的校验矩阵作为检错纠错码。(三)有益效果本发明提供了一种通用的方式来生成各种要求不同的存储器加固编码,通过预估校验位个数,采用单位矩阵初始化整个校验矩阵,然后遍历搜寻整个向量空间来填充校验矩阵。用变换向量遍历的方式来得到各种不同的校验矩阵,并从中挑选最优者。采用本发明所提出的方法可以大大加快各种存储器检错纠错码的生成速度,无需再对各种编码算法进行研究便可得到较优结果。


图1是本发明中采用检错纠错码对存储器进行加固的原理框图;图2是本发明中存储器检错纠错码生成方法的流程图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实例对本发明作进一步的详细说明。图1示出了本发明采用检错纠错码对存储器进行加固的原理框图。如图1所示,采用检错纠错码对存储器进行加固需要实现编码模块、校正子计算模块和纠检错模块。所述编码模块,在写操作时,用于在原始数据输入存储器时计算相应的校验位并一同存入存储器,在读操作时,同样对原始数据进行计算得到校验结果。所述校正子计算模块,在读操作时,用于将编码模块所计算得到的校验结果和所存储的校验位进行异或操作,并得到校正子。所述纠检错模块用于根据所述校正子计算模块得到的校正子对存储器数据进行纠错检错。本发明中,所述编码模块通过实现一校验矩阵的功能来实现对原始数据的编码。以下将详细介绍该校验矩阵的原理及生成过程。定义k位的原始数据向量为D,n位的码字向量即经编码模块加入校验位后的数据为C。可以通过一个大小为kXn的生成矩阵G将向量D转为向量C。生成矩阵G可分为两部分:Ik与P。其中Ik为k位宽的单位矩阵,P为kX (n-k)的编码矩阵,用来根据k位的原始数据得到相应的(n-k)位的校验位。可见,所述编码模块实现的就是编码矩阵P所代表的功能。需注意的是由于存储器内的数据都是二进制的数据,因此这里所用的矩阵也都是二进制域内的矩阵,其加法等同于位操作中的异或操作(对于二进制域内的加法,0+0 = 0,1+0 = 1,1+1 = 0)。以针对8位数据进行纠单错的汉明码为例说明,加入矩阵P如下所示:
权利要求
1.一种用于存储器加固的检错纠错码的生成方法,包括: 步骤1、根据原始数据位宽和所需纠检错能力预估校验位个数; 步骤2、初始化校验矩阵; 步骤3、从待检验的校正子向量池中逐个搜索符合线性独立要求的校正子向量填入校验矩阵; 步骤4、记录每次搜寻所产生的完整的校验矩阵,并改变向量搜寻的起始位置,重新进行搜索直至搜寻的起始位置穷尽整个校正子向量池; 步骤5、如果没有得到完整的校验矩阵,则增加校验位个数,并重复执行步骤2至4 ; 步骤6、如果有多个完整的校验矩阵,则从中选择一个最优的校验矩阵作为检错纠错码。
2.如权利要求1所述的方法,其特征在于,所述校验矩阵由n-k单位矩阵和kX(n-k)的编码矩阵组成,其中k为原始数据位宽,n为编码数据位宽,所述编码数据包括原始数据和校验位。
3.如权利要求2所述的方法,其特征在于,在写操作时,利用所述编码对原始数据进行编码生成并存储校验位,在读操作时,利用所述编码矩阵对原始数据进行编码,并将得到的结果与所存储的校验位进行异或运算得到校正子,然后根据校正子对数据进行纠检错操作。
4.如权利要求1所述的方法,其特征在于,所述待检验的校正子向量池为包含非全O所有二进制向量,且其中不包含单位向量,其位宽为校验位个数。
5.如权利要求1所述的方法,其特征在于,对于二进制向量,线性独立指各个向量之间相互异或后结果不为O。
6.如权利要求2所述的方法,其特征在于,步骤2中所述初始化校验矩阵为初始化其中的单位矩阵,并将所述编码矩阵设置为待填充部分。
7.如权利要求6所述的方法,其特征在于,步骤3具体为从校正子向量池中逐个提取校正子向量,并计算所提取的校正子向量与校验矩阵中相应数量的向量之间的线性独立性,并将与校验矩阵中相应数量的向量之间具有线性独立要求的校正子向量填充到校验矩阵待填充部分。
8.如权利要求1所述的方法,其特征在于,步骤4中,改变后的搜索起始位置大于前次搜索到的第一个有效向量,所述第一个有效向量为前次搜索时第一个填入校验矩阵的校正子向量。
9.如权利要求1所述的方法,其特征在于,步骤6中根据硬件实现上的差别选择最优的校验矩阵。
10.如权利要求7所述的方法,其特征在于,所述相应数量根据纠错检错能力确定。
全文摘要
本发明公开了一种用于存储器加固的检错纠错码的生成方法。该方法包括根据原始数据位宽和所需纠检错能力预估校验位个数;初始化校验矩阵;从待检验的校正子向量池中逐个搜索符合线性独立要求的校正子向量填入校验矩阵;记录每次搜寻所产生的完整的校验矩阵,并改变向量搜寻的起始位置,重新进行搜索直至搜寻的起始位置穷尽整个校正子向量池;如果没有得到完整的校验矩阵,则增加校验位个数,并重复执行步骤2至4;如果有多个完整的校验矩阵,则从中选择一个最优的校验矩阵作为检错纠错码。采用本发明所提出的方法可以大大加快各种存储器加固编码的生成速度,无需再对各种编码算法进行研究便可得到较优结果。
文档编号G11C29/42GK103151078SQ20131008696
公开日2013年6月12日 申请日期2013年3月19日 优先权日2013年3月19日
发明者周玉梅, 王雷, 戴睿, 刘海南, 蒋见花 申请人:中国科学院微电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1