一种NAND闪存存储设备及其数据恢复方法
技术领域
本发明属于NAND闪存存储设备技术领域,尤其涉及一种NAND闪存存储设备及其数据恢复方法。
背景技术
近些年来,随着NAND闪存存储密度的提高和成本的降低,大容量的NAND闪存存储设备的应用越来越广泛。NAND闪存存储设备比基于磁盘的存储设备有很多优点,比如:较少的功耗、更好的抗物理撞击性和电磁兼容性、更小的物理尺寸、以及更轻的重量。NAND闪存广泛应用于手持设备,比如:媒体播放器、移动电话、平板电脑、便携音乐播放器等。最近几年,NAND闪存的应用扩展到个人电脑,笔记本电脑,数据中心等。并且随着半导体工艺特征尺寸的进步和单位存储单元价格的降低,NAND闪存存储单元有可能取代硬盘驱动器(HDD),从根本上改变电脑系统的存储方式。
NAND闪存的存储单元在结构上是由浮栅晶体管组成,浮栅晶体管以类似于与非门的形式串连在一起。NAND闪存可以分为单阶存储单元(Single-levelcell,SLC)和多阶存储单元(Multi-levelcell,MLC),所述单阶存储单元每个浮栅晶体管存储1比特的数据,所述多阶存储单元每个浮栅晶体管存储多比特数据。相对于单阶存储单元,多阶存储单元有以下缺点:1、寿命短(endurance),某些情况下,寿命只有SLC的1/10;2、访问速度慢,读取和写入的速度要比SLC慢很多;3、MLC一个存储单元可以存储多个有效数据位,可靠性大大降低。但是MLC具备存储密度高和成本低的特点,这使得MLC的应用远比SLC要广泛。
一个NAND闪存中包括一定数目的块(block),一个块可以进一步分为一定数目的页(page),一个块可以包含32,64,128,……个页,一个页中的数据大小可以是512Byte,1KByte,2KByte等。NAND闪存存储单元有三种基本操作:读、写、擦除。读和写以页为单位,擦除以块为单位。另外NAND闪存具有有限的寿命。存储单元在一定次数的擦除循环之后便会损坏。通常,单阶存储单元的NAND闪存(SLC)的擦除循环次数是100,000,多阶存储单元的NAND闪存(MLC)的擦除循环次数是3,000到10,000。
所有NAND闪存都受位交换现象的困扰。在某些情况下(擦除次数还没有达到寿命极限的时候,MLC发生的次数要比SLC多),一个比特位会发生错误,从这个比特位读出的数据与之前写入的数据不同。
一位的变化可能不是很明显,但是如果发生在一个关键文件,比如操作系统、配置文件或者其它敏感信息上,这个小小的故障可能导致严重的后果。因此在NAND闪存存储设备中必须采用错误检测/错误纠正(ErrorCorrectingCode,ECC)算法。但是,当NAND闪存中错误的数据超出错误检测/错误纠正的能力的时候,就会导致严重的后果。怎样进一步保证NAND闪存的可靠性仍然是一个值得进一步研究的问题。
发明内容
本发明所要解决的技术问题在于提供一种NAND闪存存储设备及其数据恢复方法,旨在解决采用传统的错误检测/错误纠正方法不能对部分数据进行恢复的问题。
本发明是这样实现的,一种NAND闪存存储设备的数据恢复方法,包括以下步骤:
步骤1:NAND闪存存储设备设置若干个通道,每个通道内设置若干个NAND闪存;所述通道包括数据通道和保护通道,所述数据通道用于存储数据,所述保护通道用于存储检验码,所述数据通道的个数大于或等于所述保护通道的个数;
步骤2:采用错误检测/错误纠正的算法对所述数据通道的数据进行恢复;
步骤3:在所述步骤2失效时,采用通道间异或算法对所述数据通道的数据进行恢复。
进一步地,所述数据通道的NAND闪存为单阶存储单元或多阶存储单元。
进一步地,所述步骤3中通道间异或算法包括以下步骤:
步骤31:设其中一组数据通道为A1、A2、……、An,该组数据通道所对应的保护通道为PA、QA、……、XA,其中数据通道的个数为n,保护通道的个数为m,n≥m;
步骤32:所述保护通道采用的计算公式为pa=a1+a2+……+an,qa=(2k1×a1)+(2k2×a2)+……+(2kn×an),……,xa=(2l1×a1)+(2l2×a2)+……+(2ln×an),其中,k1、k2、……、kn、……、l1、l2、……、ln均为整数,a1为数据通道1中标记为A1的NAND闪存中存储的数据,a2为数据通道2中标记为A2的NAND闪存中存储的数据,an为数据通道n中标记为An的NAND闪存中存储的数据,pa为保护通道n+1中标记为PA的NAND闪存中存储的数据,qa为保护通道n+2中标记为QA的NAND闪存中存储的数据,xa为保护通道n+m中标记为XA的NAND闪存中存储的数据,+为加法操作,×为乘法运算;
进一步地,所述加法操作用数字电路中的异或逻辑实现,幂指数中为2的整数幂时用移位运算实现。
本发明还提供一种NAND闪存存储设备,所述NAND闪存存储设备包括若干个通道、错误检测/错误纠正模块、异或逻辑电路模块和移位运算电路模块;所述通道包括数据通道和保护通道,所述数据通道用于存储数据,所述保护通道用于存储检验码,所述数据通道的个数大于或等于所述保护通道的个数;所述错误检测/错误纠正模块用于对所述数据通道的数据进行恢复;当所述错误检测/错误纠正模块失效时启动所述异或逻辑电路模块和所述移位运算电路模块进行通道间异或算法对所述数据通道的数据进行恢复,所述异或逻辑电路模块用于对通道中的数据执行加法运算,所述移位运算电路模块用于执行幂指数运算。
进一步地,将其中一组数据通道设为A1、A2、……、An,该组数据通道所对应的保护通道为PA、QA、……、XA,其中数据通道的个数为n,保护通道的个数为m,n≥m;
所述异或逻辑电路模块和所述移位运算电路模块一起进行如下运算对所述数据通道的数据进行保护,pa=a1+a2+……+an,qa=(2k1×a1)+(2k2×a2)+……+(2kn×an),……,xa=(2l1×a1)+(2l2×a2)+……+(2ln×an)对所述数据通道进行保护,其中,k1、k2、……、kn、……、l1、l2、……、ln均为整数,a1为数据通道1中标记为A1的NAND闪存中存储的数据,a2为数据通道2中标记为A2的NAND闪存中存储的数据,an为数据通道n中标记为An的NAND闪存中存储的数据,pa为保护通道n+1中标记为PA的NAND闪存中存储的数据,qa为保护通道n+2中标记为QA的NAND闪存中存储的数据,xa为保护通道n+m中标记为XA的NAND闪存中存储的数据,+为加法操作,×为乘法运算。
进一步地,所述数据通道的NAND闪存为多阶存储单元或单阶存储单元。
进一步地,所述通道包含若干NAND闪存。
本发明与现有技术相比,有益效果在于:本发明同时具有两种对数据恢复的方法,在多个通道的数据彻底损坏的时候,无法用错误检测/错误纠正的方法来恢复时,可能启用各通道间的异或校验算法进行多个通道的数据的恢复。通过双重恢复机制,大大提高了数据的可靠性。
附图说明
图1是本发明实施例提供的NAND闪存存储设备的结构图;
图2是本发明另一实施例提供的NAND闪存存储设备的结构图;
图3是本发明实例提供的NAND闪存存储设备的数据恢复方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明所述的一种NAND闪存存储设备的结构,在某一个或者多个通道的数据彻底损坏的时候,利用各通道之间的异或校验算法可以将该一个或者多个通道的数据恢复。NAND闪存存储设备同时具备错误检测/错误纠正,通道间异或算法双重校验机制,数据的可靠性大大提高。
如图1、图3所示,一种NAND闪存存储设备的数据恢复方法,包括以下步骤:
步骤1:NAND闪存存储设备设置若干个通道,每个通道内设置若干个NAND闪存103;所述通道包括数据通道101和保护通道102,所述数据通道101用于存储数据,所述保护通道102用于存储检验码,所述数据通道101的个数大于或等于所述保护通道102的个数。
步骤2:采用错误检测/错误纠正的算法对所述数据通道101的数据进行恢复。
步骤3:在所述步骤2失效时,采用通道间异或算法对所述数据通道101的数据进行恢复。
通道内采用传统的错误检测/错误纠正算法,再配合通道间的异或校验,数据的可靠性大大提高。
如图1所示,设所述NAND闪存存储设备有通道1,通道2,……,通道n,通道n+1,n+2,……,n+m,令m不大于n。通道1,2,……n称为数据通道101,通道n+1,n+2,……,n+m称为保护通道102。每个通道内有多个NAND闪存103,标记为A,B,C,D。所述的n,m及每个通道内NAND闪存103的数目可以根据不同的需求进行调整。所有通道中的第i个NAND闪存称为一组,比如,A1、A2、……、An、PA、QA、……、XA为一组,B1、B2、……、Bn、PB、QB、……、XB也为一组,每一组都有n+m个NAND闪存。图1中的P,Q,……,X等为保护通道的NAND闪存,所述数据通道101的NAND闪存和所述保护通道102的NAND闪存结构均相同,不同的地方在于所存储的内容不一样,所述数据通道101的NAND闪存是用来存储数据,所述保护通道102的NAND闪存用来存储检验码。
通道间异或算法为:所述保护通道采用计算公式pa=a1+a2+……+an,qa=(2k1×a1)+(2k2×a2)+……+(2kn×an),……,xa=(2l1×a1)+(2l2×a2)+……+(2ln×an)对所述数据通道进行保护,其中,k1、k2、……、kn、……、l1、l2、……、ln均为整数,a1为数据通道1中标记为A1的NAND闪存中存储的数据,a2为数据通道2中标记为A2的NAND闪存中存储的数据,an为数据通道n中标记为An的NAND闪存中存储的数据,pa为保护通道n+1中标记为PA的NAND闪存中存储的数据,qa为保护通道n+2中标记为QA的NAND闪存中存储的数据,xa为保护通道n+m中标记为XA的NAND闪存中存储的数据,+为加法操作,×为乘法运算。上述的描述可以理解为把计算公式当作一个n元一次方程组,在A1、A2、……、An当中有m个为未知数的时候,这些系数使得该n元一次方程组有唯一的解。其它各组的数据同样按照上述的算法进行保护。在数据恢复过程中,所述加法操作用数字电路中的异或逻辑实现,幂指数中为2的整数幂时用移位运算实现。
本发明还提供一个NAND闪存存储设备,所述NAND闪存存储设备包括若干个通道、错误检测/错误纠正模块、异或逻辑电路模块和移位运算电路模块;所述通道包括数据通道101和保护通道102,所述数据通道101用于存储数据,所述保护通道102用于存储检验码,所述数据通道101的个数大于或等于所述保护通道102的个数;所述错误检测/错误纠正模块用于对所述数据通道的数据进行恢复;当所述错误检测/错误纠正模块失效时启动所述异或逻辑电路模块和所述移位运算电路模块进行通道间异或算法对所述数据通道的数据进行恢复,所述异或逻辑电路模块用于对通道中的数据执行加法运算,所述移位运算电路模块用于执行幂指数运算。所述错误检测/错误纠正模块包含在所述NAND闪存103中,所述异或逻辑电路模块和所述移位运算电路模块包含在所述通道中。所述通道包含若干NAND闪存103,所述NAND闪存103的数量越多可以存储的数据就更多。
将其中一组数据通道设为A1、A2、……、An,该组数据通道所对应的保护通道设为PA、QA、……、XA,其中数据通道的个数为n,保护通道的个数为m,n≥m。所述异或逻辑电路模块和所述移位运算电路模块一起进行如下运算对一组数据通道的数据进行保护,pa=a1+a2+……+an,qa=(2k1×a1)+(2k2×a2)+……+(2kn×an),……,xa=(2l1×a1)+(2l2×a2)+……+(2ln×an)对所述数据通道进行保护,其中,k1、k2、……、kn、……、l1、l2、……、ln均为整数,a1为数据通道1中标记为A1的NAND闪存中存储的数据,a2为数据通道2中标记为A2的NAND闪存中存储的数据,an为数据通道n中标记为An的NAND闪存中存储的数据,pa为保护通道n+1中标记为PA的NAND闪存中存储的数据,qa为保护通道n+2中标记为QA的NAND闪存中存储的数据,xa为保护通道n+m中标记为XA的NAND闪存中存储的数据,+为加法操作,×为乘法运算。所述异或逻辑电路模块和所述移位运算电路模块重复上述的动作对其它数据通道的数据进行保护。
所述保护通道102为单阶存储单元或多阶存储单元,所述数据通道101为多阶存储单元或单阶存储单元。由于保护通道需要擦除的次数比数据通道需要擦除的次数多,优选的,保护通道102选用寿命长的单阶存储单元,而数据通道需要擦除的次数少,且多阶存储单元具备存储密度高和成本低的特点,优选的,数据通道选用寿命短的多阶存储单元。
在所述NAND闪存存储设备的结构当中,在设计时利用了以下的数学知识:在一个多元一次方程组中,当未知数的个数不超过方程组个数时,该方程组是可解的。同理在本结构当中,数据通道个数为n,保护通道个数为m,m不大于n。当数据通道中采用错误检测/错误纠正无法修复的错误通道个数不超过m的时候,数据通道中的数据是可以通过通道间异或算法进行修复的。
本发明的另一实施例,如图2所示,数据通道101的个数为4,保护通道102的个数为2,每个通道中都有两个NAND闪存,分别标记为A和B。采用所述的通道间异或算法进行保护的公式如下:pa=a1+a2+a3+a4,qa=(20×a1)+(21×a2)+(22×a3)+(23×a4),其中,a1为数据通道1中标记为A1的NAND闪存中存储的数据,a2为数据通道2中标记为A2的NAND闪存中存储的数据,a3为数据通道3中标记为A3的NAND闪存中存储的数据,a4为数据通道4中标记为A4的NAND闪存中存储的数据,pa为保护通道n+1中标记为PA的NAND闪存中存储的数据,qa为保护通道n+2中标记为QA的NAND闪存中存储的数据。
假设A1不能通过错误检测/错误纠正算法进行修复,通过通道间运算修复的结果如下:a1=pa-p',其中,p'=a2+a3+a4,pa=a1+a2+a3+a4。假设A1和A3不能通过错误检测/错误纠正算法进行修复。通过通道间异或校验算法进行修复的结果如下:a1=pa-p'-a3,其中,p'=a2+a4,q'=2×a2+8×a4,pa=a1+a2+a3+a4,qa=(20×a1)+(21×a2)+(22×a3)+(23×a4),此时PA、QA的数据pa和qa已经写入NAND闪存中,不需要重新计算。减法和加法可以用异或逻辑运算实现,2的整数幂用移位运算实现。
所述NAND闪存基本的三种数据操作为读、写、擦除。在写操作之前要先进行擦除操作。下面以A2为例说明NAND闪存进行操作时通道间异或运算的操作过程。擦除操作时,同时将A2,PA,QA的数据a2、pa、qa读出,把pa-a2的结果写入PA,将qa-2×a2的结果写入QA,然后将A2中的数据擦除。写入操作时,将PA和QA中的数据pa和qa读出,把pa+a2的结果写入PA,把qa+2×a2的结果写入QA,同时将一开始从A2中读出的数据a2写入A2。读出操作直接读出就好。当读操作的数据采用数据检测/数据纠正的方法无法修复的时候,根据不同错误个数的情况和上面的算式将同组中其它数据读出,然后进行运算对数据进行修复。
这样,保存在NAND闪存中的数据同时具备数据检测/数据纠正和通道间异或算法两种校验机制,数据的可靠性大大提高。但是当一组NAND闪存中的错误超过两个的时候,就超出了本实例的纠错能力,数据损坏将无法修复。
在本实施例当中,通道1、2、3,4当中的任何数据进行擦除/写入的时候,都需要将通道5,6中对应的NAND闪存中相应的数据进行擦除/写入,根据NAND闪存具有有限擦除寿命的特点,通道5,6中NAND闪存擦除/写入次数远远高于通道1-4。本实例中通道5,6采用寿命高的SLC。
在本实例中,1-4为数据通道,5,6为保护通道。数据通道和保护通道之间可以根据实际需求进行调整。比如,在对数据可靠性相对较低的应用环境中,将1-5作为数据通道,6为保护通道。通道间异或算法的多项式为:pa=a1+a2+a3+a4+a5,其中,a5为数据通道5中标记为A5的NAND闪存中存储的数据。
本发明所述的通道间的异或算法中,有n个数据通道,m个保护通道,且m不大于n。当m越大时,纠错能力越强,数据就越可靠,但是电路设计的复杂度也越高。数据通道的个数以及保护通道的个数根据实际应用环境的需要去设定。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。