基于NandFlash存储器阵列的数据校验方法与流程

文档序号:15998861发布日期:2018-11-20 19:11阅读:157来源:国知局

本发明涉及存储器技术领域,尤其涉及基于Nand Flash存储器阵列的数据校验方法。



背景技术:

Nand Flash存储器是Flash存储器的一种,属于非易失性存储设备,其内部采用非线性宏单元模式,具有容量大,改写速度快等优点。多片Nand Flash存储器可组成Nand Flash存储器阵列。Nand Flash存储器阵列被作为存储介质广泛应用于数码相机、MP3播放器、U盘等嵌入式产品中,以实现高速海量数据存储。

在Nand Flash存储器阵列的发展中,早期的Nand Flash存储器阵列的存储介质颗粒为单层单元(Single-Level Cell,SLC),SLC的每一个存储单元只能存储1位数据;随着存储器技术的发展,存储介质颗粒逐渐演变为多层单元(Multi-Level Cell,MLC),MLC的每个存储单元可以存储两位数据;接着推出了三层单元(Triple-Level Cell,TLC),TLC的每个存储单元可以存储三位数据。随着存储介质颗粒的发展,每个存储单元可存储的比特位增多,数据出现错误的概率也即随之增加。以镁光的SLC、MLC和TLC型Nand Flash存储器阵列为例,SLC型的Nand Flash存储器阵列不加校验的误码率约为10-8,MLC型Nand Flash存储器阵列不加校验的误码率约10-5,TLC型Nand Flash存储器阵列不加校验的误码率则会更高。

为此,可采用校验码对Nand Flash存储器进行存储纠错,目前常用的校验码有汉明码、RS码和CRC校验码。其中,汉明码只能纠正单比特错误,无法满足如今Nand Flash存储器阵列需要的纠错能力;RS码内部机制倾向于纠正突发错误,而对于Nand Flash存储器阵列来说,更多出现的是随机独立错误;CRC校验码的处理周期太长,无法满足实时性要求。并且,现有的汉明码、RS码和CRC校验码在精度、速度方面均达不到Nand Flash存储器阵列的要求,而高速、高精度的校验方法对于Nand Flash存储器阵列的高速读写意义重大。因此,急需一种能够对Nand Flash阵列存储进行高速、高精度校验的方法。



技术实现要素:

本发明实施例提供基于Nand Flash存储器阵列的数据校验方法,以至少解决现有的校验码不适用于Nand Flash存储器阵列的数据校验的问题,能够对Nand Flash存储器阵列进行快速、高精度的数据校验,从而保证Nand Flash存储器的存储控制器能够无差别读写Nand Flash存储器阵列。

为达到上述目的,本发明采用如下技术方案:

一种基于Nand Flash存储器阵列的数据校验方法,包括以下步骤:

步骤1,Nand Flash存储器阵列的存储控制器接收到读取命令后,根据读取命令读取Nand Flash存储器阵列对应地址存储的BCH码字;

步骤2,存储控制器根据BCH码字计算得到2t个伴随式校正子,进而判断2t个伴随式校正子是否均为零;若2t个伴随式校正子均为零,则表示BCH码字中不存在错误值,执行步骤3;若2t个伴随式校正子中存在非零的伴随式校正子,则表示BCH码字中存在错误值,执行步骤4;其中,t表示纠错能力数;

步骤3,存储控制器输出BCH码字;

步骤4,存储控制器利用BM迭代算法求解错误多项式的系数,从而得到错误多项式;利用并行钱搜索电路求解错误多项式的根,根据错误多项式的根确定BCH码字中错误值的位置,进而根据错误值的位置定位错误值并进行纠错,得到纠错后的BCH码字,输出纠错后的BCH码字。

基于本发明提供的基于Nand Flash存储器阵列的数据校验方法,通过伴随式校正子判断欲读取的BCH码字中是否存在错误值,在确定BCH码字中存在错误值后,利用BM迭代算法得到错误多项式,并采用并行钱搜索电路求解错误多项式以确定BCH码字中错误值的位置,进而根据错误值的位置定位错误值并进行纠错,得到纠错后的BCH码字。由于本发明方法在求解错误多项式的过程中采用了并行钱搜索电路,每个周期能够可并行检测多个元素,因此能够提高检测速度,实现对Nand Flash存储器阵列的快速、高精度的数据校验,从而保证Nand Flash存储器的存储控制器能够无差别读写Nand Flash存储器阵列。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为Nand Flash存储器阵列的存储控制器的组成示意图;

图2为本发明实施例提供的基于Nand Flash存储器阵列的数据校验方法的流程示意图;

图3为BM迭代算法的流程示意图;

图4为本发明实施例提供的一种钱搜索电路的逻辑组成示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1所示为本发明所依托的Nand Flash存储器阵列的存储控制器的组成示意图。

如图1所示,Nand Flash存储器阵列的存储控制器包括:物理层、介质接口层、存储器命令层、存储链路层、存储器维护和配置单元。其中,物理层连接Nand Flash存储器阵列,物理层与介质接口层连接,介质接口层与存储器命令层连接,存储器命令层与存储链路层连接,存储链路层与用户应用逻辑层连接;用户逻辑包含四个端口,分别连接用户应用逻辑层、存储器维护和配置单元、基础设施和状态采集单元。存储链路层提供用户逻辑级别接口服务,应用存储器命令层提供的命令控制字服务,同时为用户应用逻辑层提供存储器访问操作级别的数据接口。本发明实施例提供的方法正是应用于存储控制器存储链路层的数据校验方法,旨在为存储链路层提供无差错的通用存储访问链路,对Nand Flash存储器阵列进行零误码读写,保障数据存储的稳定性和安全性。

图2所示为本发明实施例提供的基于Nand Flash存储器阵列的数据校验方法的流程示意图。

如图2所示,本发明实施例提供的基于Nand Flash存储器阵列的数据校验方法,包括以下步骤:

步骤1,Nand Flash存储器阵列的存储控制器接收到读取命令后,根据读取命令读取Nand Flash存储器阵列对应地址存储的BCH码字。

步骤2,存储控制器根据BCH码字计算得到2t个伴随式校正子,进而判断2t个伴随式校正子是否均为零;若2t个伴随式校正子均为零,执行步骤3;若2t个伴随式校正子中存在非零的伴随式校正子,执行步骤4。

其中,t表示纠错能力数。

进一步的,步骤2中,存储控制器根据所述BCH码字计算得到2t个伴随式校正子,具体可以包括:

存储控制器根据BCH码字,利用预设公式,计算得到2t个伴随式校正子。

其中,所述预设公式为:

式中,i取1至2t之间的所有整数,w表示并行度,N表示BCH码字的位数,αi表示伽罗华域GF(213)上的第i个伽罗华域数,rj*w+k表示BCH码字的第j*w+k位,j和k均为整数。

步骤3,存储控制器输出BCH码字。

若2t个伴随式校正子均为零,则说明Nand Flash存储器阵列中存储的该BCH码字中不存在错误值,因此直接输出该BCH码字即可。

步骤4,存储控制器利用BM迭代算法求解错误多项式的系数,从而得到错误多项式;利用并行钱搜索电路求解错误多项式的根,根据错误多项式的根确定BCH码字中错误值的位置,进而根据错误值的位置定位错误值并进行纠错,得到纠错后的BCH码字,输出纠错后的BCH码字。

若2t个伴随式校正子中存在非零的伴随式校正子,则说明Nand Flash存储器阵列中存储的该BCH码字中存在错误值,因此需要搜索错误值的位置(即错误位置),进而根据错误值的位置定位该BCH码字中的错误值,纠错后输出BCH码字。至此,即得到纠错后的BCH码字,本发明提供的基于Nand Flash存储器阵列的数据校验方法即结束。

其中,步骤4中所述的BM迭代算法,即Perlekamp-Massey迭代算法,该算法是本领域求解错误多项式系数常用的迭代算法。BM迭代算法的流程图参见图3,包括如下步骤:

(1)初始化各项参数:Tempσ-1(x)=1;dq(-1)=1;i=1;σ-1(x)=1;

其中,Tempσ-1(x)用于记录临时的错误位置多项式,dq(-1)用于记录迭代不满足关键方程时的差值,i表示迭代变量,σj(x)表示第j次的错误位置多项式;

(2)判断di=0,也即有无差值,无差值继续增加迭代变量,有差值跳转至3;

(3)添加多项式使其满足,此时多项式中便记录临时的错误位置;

(4)最多2t个错误位置穷举后,错误多项式σ(x)系数的求解即完成。

可见,BM迭代算法的主要思想在于:合理的初始化f0(x)和σ0(x),迭代得到最低次多项式f1(x)和σ1(x);然后,检验f1(x)和σ1(x)是否满足关键方程,若不满足则添加一个多项式使其满足,若满足,则令f2(x)=f1(x),σ2(x)=σ1(x)。如此这样,直至求得满足要求的f2t(x)和σ2t(x)。此时得到的σ2t(x)即为错误位置多项式。

本发明实施例的一种具体的实现方式中,如图4所示,本发明实施例步骤4中的并行钱搜索电路具体可以包括:t个子模块、t×(P-1)个第一乘法器以及P个加法器。其中,t个子模块依次标记为子模块1、子模块2、……子模块t,其中每个子模块均包括一个第二乘法器、一个两输入选择器和一个锁存器,t个子模块和一加法器构成第P通道;每t个第一乘法器和一个加法器构成第一至第P-1通道中的一个通道。

其中,在第P通道中,t个子模块中的t个两输入选择器的一输入端依次为错误多项式的t个系数σ1、σ2、……σt;每个两输入选择器的输出端均与第二乘法器的一输入端相连,t个第二乘法器的另一输入端分别为t个伽罗华域数;t个第二乘法器的输出端均与第P通道中加法器的输入端连接,同时每个第二个乘法器的输出端均经过锁存器后连接至其所在子模块的两输入选择器的另一输入端;加法器还有一个加数为σ0,σ0表示错误多项式的常数项。

第一至第P-1通道中,每个通道的第m个第一乘法器的一输入端与子模块m中的两输入选择器的输出端相连,m依次取1、2、3、……t;t个第一乘法器的另一输入端分别为t个伽罗华域数;t个第一乘法器的输出端均与同一通道中加法器的输入端相连,加法器的输出端作为错误多项式在伽罗华域本元n次幂处的取值,其中n等于该通道内第一个第一乘法器输入端的伽罗华域数对应的幂次。

其中,需要说明的是,图4中“MUX”表示两输入选择器,“Reg”表示锁存器,“+”表示加法器,“×”表示乘法器,σ1、σ2、……σt表示错误多项式的系数,ai表示伽罗华域本元。

具体的,步骤4中,存储控制器利用并行钱搜索电路求解错误多项式的根,可以包括:

存储控制器判断并行钱搜索电路的每个通道中的加法器的输出是否为零,将其中输出为零的通道对应的t个伽罗华域数确定为错误多项式的根。

进一步的,步骤4中,存储控制器根据错误多项式的根确定BCH码字中错误值的位置,进而根据错误值的位置定位错误值并进行纠错,得到纠错后的BCH码字,具体可以包括:

当错误多项式的根为(ai)β,存储控制器确定BCH码字中错误值的位置为BCH码字的第N-β位错误;

存储控制器对BCH码字的第N-β位进行翻转,翻转后的BCH码字即为纠错后的BCH码字。

其中,ai表示伽罗华域本元,β为整数,N表示BCH码字的位数。

基于本发明提供的基于Nand Flash存储器阵列的数据校验方法,通过伴随式校正子判断欲读取的BCH码字中是否存在错误值,在确定BCH码字中存在错误值后,利用BM迭代算法得到错误多项式,并采用并行钱搜索电路求解错误多项式以确定BCH码字中错误值的位置,进而根据错误值的位置定位错误值并进行纠错,得到纠错后的BCH码字。由于本发明方法在求解错误多项式的过程中采用了并行钱搜索电路,每个周期能够可并行检测多个元素,因此能够提高检测速度,实现对Nand Flash存储器阵列的快速、高精度的数据校验,从而保证Nand Flash存储器的存储控制器能够无差别读写Nand Flash存储器阵列。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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