掌桥专利:专业的专利平台
掌桥专利
首页

数据恢复方法、存储器存储装置及存储器控制器

文献发布时间:2024-04-18 20:01:30


数据恢复方法、存储器存储装置及存储器控制器

技术领域

本发明涉及一种存储器管理技术,尤其是涉及一种数据恢复方法、存储器存储装置及存储器控制器。

背景技术

闪存尤其是NAND闪存是易失性存储器的一种,被广泛的应用于手机、笔记本电脑、云存储等存储领域。闪存的基本功能是保存数据,保证写入的数据和读出的数据的一致性是存储系统的基本要求。错误检查与校正码(ECC,Error Correcting Code),也称错误校正码,可用以于错误校正操作中对读出的数据的错误进行校正,是保证写入的数据和读出的数据的一致性,提高存储系统可靠性的重要手段。但错误校正码也有一定的纠错范围,如果读出数据的原始误码率较高,将会超出错误校正码的纠错能力,无法正确的恢复出写入的数据。

里德-所罗门码(Reed-solomon code,RS code)算法是一种数据恢复方式,在将主机系统的数据写入到存储器中的实体程序化单元时,一实体抹除单元(block)的实体程序化单元(data page)中的数据进行异或运算,并且存储此异或结果。在读取数据时,当此实体抹除单元中的任意一个实体程序化单元出错时,将异或结果与实体抹除单元中未出错的实体程序化单元中存储的数据互相异或,以计算出实体抹除单元中出错的实体程序化单元中存储的数据,从而达成数据恢复目的。

闪存的实体程序化单元的出错概率值具有分层现象,即某个连续的地址范围的实体程序化单元的出错概率值全部接近0,或者,某个连续的地址范围内实体程序化单元的出错概率值全部接近出错概率值上限,则存在密集的潜在的出错的实体程序化单元(errorpage)。

由于异或操作的特殊性,当且仅当一组实体程序化单元的error page不超过1个时,使用RS算法可以完成error page的数据恢复,所以一定地址范围内的实体程序化单元中的error page不能过多,否则会超出RS算法的恢复能力。

由于异或操作的特殊性,当且仅当一组实体程序化单元的error page不超过1时,使用RS算法可以完成error page的数据恢复。目前的分组方式是按照线性顺序对实体程序化单元进行遍历分组,倘若某一分组里的error page数目为0或者超过1时,将会导致无需RS算法进行数据恢复或者超出RS算法的数据恢复能力。

发明内容

本发明的实施例提供一种数据恢复方法、存储器存储装置及存储器控制器,可将潜在的密集的坏实体程序化单元分散到各子群组中。

本发明的实施例提供一种数据恢复方法,用于存储器模块,其中存储器模块包括至少一个存储器晶粒,每一个存储器晶粒具有多个实体抹除单元,每一个实体抹除单元具有多个实体程序化单元,该方法包括:获取每一个实体程序化单元的出错概率值;依据乱序算法打乱多个实体程序化单元,将多个实体程序化单元分组为多个第一群组,其中每一个第一群组包括多个第一类实体程序化单元以及多个第二类实体程序化单元;以及将每一个第一群组中的实体程序化单元分组至多个子群组中,其中每一个子群组至多包括一个第二类实体程序化单元。

本发明的实施例还提供一种存储器存储装置,包括连接接口、存储器模块以及存储器控制器。连接接口用以连接主机系统。存储器模块包括至少一个存储器晶粒,每一个存储器晶粒具有多个实体抹除单元,每一个实体抹除单元具有多个实体程序化单元。存储器控制器连接连接接口与存储器模块,其中存储器控制器用以获取每一个实体程序化单元的出错概率值。存储器控制器还用以依据乱序算法打乱多个实体程序化单元,将多个实体程序化单元分组为多个第一群组,其中每一个第一群组包括多个第一类实体程序化单元以及多个第二类实体程序化单元。存储器控制器还用以将每一个第一群组中的多个实体程序化单元分组至多个子群组中,其中每一个子群组至多包括一个第二类实体程序化单元。

本发明的实施例还提供一种存储器控制器,包括主机接口、存储器接口、错误检查与校正电路以及存储器控制电路。其中,主机接口用以连接主机系统。存储器接口用以连接存储器模块,其中存储器模块包括至少一个存储器晶粒,每一个存储器晶粒具有多个实体抹除单元,每一个实体抹除单元包括多个实体程序化单元。存储器控制电路连接主机接口、存储器接口与错误检查与校正电路,其中存储器控制电路用以获取每一个实体程序化单元的出错概率值。存储器控制电路还用以依据乱序算法打乱多个实体程序化单元,将多个实体程序化单元分组为多个第一群组,其中每一个第一群组包括多个第一类实体程序化单元以及多个第二类实体程序化单元。存储器控制电路还用以将每一个第一群组中的多个实体程序化单元分组至多个子群组中,其中每一个子群组至多包括一个第二类实体程序化单元。

基于此,本发明提供的一种数据恢复方法、存储器存储装置及存储器控制器,可将潜在的密集的坏实体程序化单元分散到各子群组中,从而避免在使用RS算法对读取的数据进行解码时,由于同一个实体群组中的出错的实体程序化单元的数目过多而超出RS算法恢复数据的能力,导致无法恢复数据的情形。

附图说明

包含附图以便进一步理解本发明,且附图并入本说明书中并构成本说明书的一部分。附图说明本发明的实施例,并与描述一起用于解释本发明的原理。

图1是根据本发明的一实施例所示出的存储器存储装置的示意图;

图2是根据本发明的一实施例所示出的存储器控制器的示意图;

图3是根据本发明的一实施例所示出的管理存储器模块的示意图;

图4是根据本发明的一实施例所示出的多框架编码的示意图;

图5是根据本发明的一实施例所示出的数据恢复方法的流程图;

图6是根据本发明的一实施例所示出的基于排序的乱序算法的示意图;

图7是根据本发明的一实施例所示出的基于交换的乱序算法的示意图;

图8是根据本发明的一实施例所示出的步骤S505的具体流程图;

图9是根据本发明的一实施例所示出的第一实体程序化单元分组至子群组的示意图;

图10是根据本发明的一实施例所示出的第二实体程序化单元分组至子群组的示意图。

具体实施方式

现将详细地参考本发明的示范性实施例,示范性实施例的实例说明于附图中。只要有可能,相同元件符号在附图和描述中用来表示相同或相似部分。

图1是根据本发明的一实施例所示出的存储器存储装置的示意图。请参照图1,存储器存储系统10包括主机系统11与存储器存储装置12。主机系统11可为任意型态的计算机系统。例如。主机系统11可为笔记本计算机、台式计算机、智能手机、平板计算机、工业计算机等。存储器存储装置12用以存储来自主机系统11的数据。例如,存储器存储装置12可包括固态硬盘、U盘或其他类型的非易失性存储装置。主机系统11可经由串行先进技术总线附属(Serial Advanced Technology Attachment,SATA)接口、外设部件互连快速(PeripheralComponent Interconnect Express,PCI Express)、通用串行总线(Universal SerialBus,USB)或其他类型的连接接口电性连接至存储器存储装置12。因此,主机系统11可将数据存储至存储器存储装置12和/或从存储器存储装置12读取数据。

存储器存储装置12可包括连接接口121、存储器模块122及存储器控制器123。连接接口121用以将存储器存储装置12连接至主机系统11。例如,连接接口121可支援SATA、PCIExpress或USB等连接接口标准。存储器存储装置12可经由连接接口121与主机系统11通信。

存储器模块122用以存储数据。存储器模块122可包括可复写式非易失性存储器模块。存储器模块122包括存储单元阵列。存储器模块122中的存储单元是以电压的形式来存储数据。例如,存储器模块122可包括单阶存储单元(Single Level Cell,SLC)NAND型快闪存储器模块、多阶存储单元(Multi Level Cell,MLC)NAND型快闪存储器模块、三阶存储单元(Triple Level Cell,TLC)NAND型快闪存储器模块、四阶存储单元(Quad Level Cell,QLC)NAND型快闪存储器模块、三维NAND型快闪存储器模块(3D NAND flash memorymodule)(可具有多个三阶或四阶存储单元)或其他具有相似特性的存储器模块。存储器模块122中的存储单元是以阵列的方式设置。

存储器控制器123连接至连接接口121与存储器模块122。存储器控制器123可用以控制存储器存储装置12。例如,存储器控制器123可控制连接接口121与存储器模块122以进行数据存取与数据管理。例如,存储器控制器123可包括中央处理单元(CPU)、图形处理单元(GPU),或是其他可编程的一般用途或特殊用途的微处理器、数字信号处理器(DigitalSignal Processor,DSP)、可编程控制器、专用集成电路(Application SpecificIntegrated Circuits,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)或其他类似装置或这些装置的组合。

在一实施例中,存储器控制器123亦称为快闪存储器控制器。在一实施例中,存储器模块122亦称为快闪存储器模块。存储器模块122可接收来自存储器控制器123的指令序列并根据此指令序列存取存储于存储单元中的数据。

图2是根据本发明的一实施例所示出的存储器控制器的示意图。请参照图1与图2,存储器控制器123包括主机接口21、存储器接口22、存储器控制电路23与错误检查与校正电路24。

主机接口21用以经由连接接口121连接至主机系统11,以与主机系统11通信。在本范例实施例中,主机接口504是兼容于SATA标准。然而,必须了解的是本发明不限于此,主机接口504亦可以是兼容于PATA标准、IEEE1394标准、PCI Express标准、USB标准、SD标准、UHS-I标准、UHS-II标准、MS标准、MMC标准、eMMC标准、UFS标准、CF标准、IDE标准或其他适合的数据传输标准。

存储器接口22用以连接至存储器模块122,以与存储器模块122通信。也就是说,欲写入至存储器模块122的数据会经由存储器接口22转换为存储器模块122所能接受的格式。

存储器控制电路23连接至主机接口21与存储器接口22。存储器控制电路23可经由主机接口21与主机系统11沟通并经由存储器接口22存取至存储器模块122。存储器控制电路23也可视为存储器控制器123的控制核心,其具有多个控制指令,在存储器存储装置12运作时这些控制指令会被执行以实现数据的写入、读取、抹除等运作。在不同实施例中,存储器控制电路23的控制指令可以是以固件形式、代码形式或硬件形式来实作,本发明不在此限制。在以下实施例中,对于存储器控制电路23的说明等同于对于存储器控制器123的说明。此外,存储器控制电路23还可包括一或多个缓冲存储器,其用以暂存数据。

错误检查与校正电路24电性连接至存储器控制电路23,并且用以执行错误检查与校正程序来确保数据的正确性。当存储器控制电路23从主机系统11接收到写入指令时,错误检查与校正电路24会为此写入指令对应的数据产生错误检查与校正码(Error Checkingand Correcting Code,ECC Code),并且存储器控制电路23会将数据与对应的错误检查与校正码写入至存储器模块122中。而当存储器控制电路23从存储器模块122中读取数据时,会同时读取错误检查与校正码。并且存储器控制电路23会依据读取出的错误检查与校正码对所读取的数据执行错误检查与校正程序。

图3是根据本发明的一实施例所示出的管理存储器模块的示意图。

请参照图1与图3,存储器模块122包括多个实体程序化单元,例如图3示出的实体单元301(0)~301(C)。存储器模块122是以实体程序化单元为基础来进行管理,每一个实体程序化单元都包括多个存储单元且用以非易失性地存储数据。多个实体程序化单元可组成一个实体抹除单元(例如,实体区块)。一个实体抹除单元中的多个实体程序化单元(或存储单元)可被同时抹除。此外,存储器控制电路23可配置多个逻辑单元311(0)~311(D)来映射至少部分的实体程序化单元。例如,一个逻辑单元可由一或多个逻辑地址组成。逻辑单元与实体程序化单元之间的映射关系则可记载于逻辑至实体映射表中。

在一实施例中,存储器控制电路23将存储器模块122逻辑地划分为数据区310、闲置区320与系统区330。逻辑上属于数据区310的实体单元301(1)~301(A)存储有来自主机系统11的数据(亦称为使用者数据)。数据区310中的实体程序化单元被标记后就会被关联至闲置区320。换言之,闲置区320中的实体单元301(A+1)~301(B)都已被标记且未存储有效数据。其中,闲置区320中的多个实体程序化单元可组成一个闲置实体抹除单元。

逻辑上属于系统区330的实体单元301(B+1)~301(C)是用以记录系统数据。例如,系统数据包括关于存储器模块的制造商与型号、存储器模块的实体抹除单元数、每一实体抹除单元的实体程序化单元数等。特别是,数据区310、闲置区320与系统区330的实体程序化单元的数量会根据不同的存储器规格而有所不同。

在一个存储单元可以存储多个比特(例如,MLC或TLC NAND型快闪存储器)的实施例中,属于同一条字线(或同一个字线层)的实体程序化单元至少可被分类为下实体程序化单元与上实体程序化单元。例如,在MLC NAND型快闪存储器中,一存储单元的最低有效位(Least Significant Bit,LSB)是属于下实体程序化单元,并且此存储单元的最高有效位(Most Significant Bit,MSB)是属于上实体程序化单元。下实体程序化单元的可靠度一般会高于上实体程序化单元的可靠度。在一范例实施例中,下实体程序化单元亦称为快页(fast page),而上实体程序化单元亦称为慢页(slow page)。换言之,以MLC NAND型快闪存储器为例,在MLC NAND型快闪存储器中,排列在同一条字线上的数个存储单元可组成2个实体程序化单元,其中包括由存储单元的最低有效位(亦称为,第一有效位)所组成的下实体程序化单元和由存储单元的最高有效位(亦称为,第二有效位)所组成的上实体程序化单元。

此外,在TLC NAND型快闪存储器中,一存储单元的最低有效位(LeastSignificant Bit,LSB)是属于下实体程序化单元,此存储单元的中间有效位(CenterSignificant Bit,CSB)是属于中实体程序化单元,并且此存储单元的最高有效位(MostSignificant Bit,MSB)是属于上实体程序化单元。

此外,在本范例实施例中,错误检查与校正电路24可以针对存储于同一个实体程序化单元中的数据进行单框架(single-frame)编码,也可以针对存储于多个实体程序化单元中的数据进行多框架(multi-frame)编码。单框架编码与多框架编码可以分别采用低密度奇偶检查校正码(low density parity code,LDPC)、BCH码、回旋码(convolutionalcode)或涡轮码(turbo code)等编码算法的至少其中之一。或者,在一范例实施例中,多框架编码还可以采用里德-所罗门码(Reed-solomon codes,RS codes)算法或异或(XOR)算法。此外,在另一范例实施例中,更多未列于上的编码算法也可以被采用,在此便不赘述。根据所采用的编码算法,错误检查与校正电路24可以编码欲保护的数据来产生相对应的错误更正码和/或错误检查码。为了说明方便,以下将经由编码产生的错误更正码和/或错误检查码统称为编码数据。

图4是根据本发明的一实施例所示出的多框架编码的示意图;

请参照图4,以编码实体程序化单元810(0)~810(E)所存储的数据来产生相对应的编码数据820为例,实体程序化单元810(0)~810(E)中的每一者所存储的至少部分数据可视为一个框架。在多框架编码中,是以每一个位(或,字节)所在的位置为依据来对实体程序化单元810(0)~810(E)中的数据进行编码。例如,位于位置801(1)的位b

此外,在图4的另一范例实施例中,用于产生编码数据820的数据也可能包括实体程序化单元810(0)~810(E)所存储的数据中的数据位(data bits)所对应的冗余位(redundancy bits)。以实体程序化单元810(0)所存储的数据为例,其中的冗余位例如是对存储于实体程序化单元810(0)中的数据位进行单框架编码而产生的编码数据。在本范例实施例中,假设在读取实体程序化单元810(0)中的数据时,从实体程序化单元810(0)中读取出的数据可以先使用实体程序化单元810(0)中的冗余位(例如,使用单框架编码产生的编码数据)来解码以对所读取出的数据进行错误侦测与更正。然而,当使用实体程序化单元810(0)中的冗余位进行解码发生失败(例如,解码后实体程序化单元810(0)中所存储的数据的错误位数大于一门坎值)时,可以使用重新读取(Retry-Read)机制以选择并使用其他的读取电压尝试从实体程序化单元810(0)中读取出正确的数据。而当无法通过重新读取(Retry-Read)机制从实体程序化单元810(0)中读取出正确的数据时,可以读取编码数据820以及实体程序化单元810(1)~810(E)的数据,并根据编码数据820以及实体程序化单元810(1)~810(E)的数据进行解码,以尝试更正实体程序化单元810(0)中所存储的数据中存在的错误。也就是说,在本范例实施例中,当使用单框架编码产生的编码数据进行解码发生失败以及使用重新读取(Retry-Read)机制进行读取发生失败时,会改用多框架编码产生的编码数据进行解码。

需先说明的是,以下实施例中,出错的实体程序化单元(error page)为实体程序化单元中错误的位(bit)数超过错误检查与校正码(ECC)的更正能力,导致存储于出错的实体程序化单元中的数据不能读取或者无法正确读取出来。

图5是根据本发明的一实施例所示出的数据恢复方法的流程图。

请参考图5,本实施例的方法适用于上述实施例中的存储器存储装置12,以下即搭配存储器存储装置12中的各项元件说明本实施例的详细步骤。值得注意的是,图5中各步骤可以是作为多个代码或是电路,本发明不加以限制。此外,图5的方法可以搭配以下范例实施例使用,也可以单独使用,本发明不加以限制。

于步骤S501中,存储器控制器123将从主机系统11接收的数据写入存储器模块122的多个实体程序化单元中。

于步骤S502中,在存储器控制器123读取实体程序化单元中的数据时,使用错误检查与校正操作无法对写入实体程序化单元中的数据进行解码。

于步骤S503中,存储器控制器123获取每一个实体程序化单元的出错概率值,其中,每一个实体程序化单元的出错概率值表示为:

f(x,y,z)=h公式1

其中,x为实体抹除单元的程序化/抹除(P/E)次数,y为实体程序化单元的ECC值,z为实体程序化单元中数据被读取的次数,h为实体程序化单元的出错概率值。对应每一个实体程序化单元的出错概率值分别为h1、h2...hn,其中1、2…n为实体程序化单元的序号,n为实体程序化单元的总数。

举例而言,x可从对应每一个实体抹除单元的P/E抹除次数表中查询,例如TLCNAND型快闪存储器中,其实体抹除单元的P/E抹除次数为3000-5000次,P/E抹除次数大于2500次数的实体抹除单元中的实体程序化单元的出错概率值比较大。

同样地,y可从对应于每一个实体抹除单元的坏块表中查询,坏块表中记录了对应每一个实体程序化单元的ECC值,可设定快闪存储器中的ECC值为60,并将ECC值分别为0-7,8-15,16-23,24-31,32-47的实体程序化单元进行分类管理。一般而言,快闪存储器会使用ECC值比较小的实体程序化单元来存储数据。而ECC值比较大的例如ECC值为48-60的实体程序化单元,其出错概率值比较大。

同样地,z从对应于每一个实体程序化单元的读次数表中查询。实体程序化单元的读次数越大,则其出错概率值越大。

于一实施例中,可依据出错概率值将实体程序化单元至少分类为第一类实体程序化单元以及第二类实体程序化单元。其中,第一类实体程序化单元可以是好实体程序化单元或正常或高品质的实体程序化单元,举例来说,实体程序化单元所属的实体抹除单元的P/E抹除次数小于2500次数或者ECC值比较小或者读次数较小的实体程序化单元可分类为第一类实体程序化单元。相对而言,第二类实体程序化单元可以是坏实体程序化单元或潜在故障或低品质的实体程序化单元,例如,实体程序化单元所属的实体抹除单元的P/E抹除次数大于2500次数或者ECC值比较大或者读次数较大的实体程序化单元可分类为第二类实体程序化单元。

于步骤S504中,存储器控制器123依据乱序算法打乱存储器模块122中的多个实体程序化单元;然后,将被打乱的多个实体程序化单元分组为多个第一群组,其中每一个第一群组包括多个第一类实体程序化单元以及多个第二类实体程序化单元,且每一个第一群组中的第二类实体程序化单元的数目相同,并且分组为同一个第一群组中的实体程序化单元属于不同的实体抹除单元。

以下结合图6至图7来说明如何依据乱序算法打乱存储器模块122中的多个实体程序化单元。

图6是根据本发明的一实施例所示出的基于排序的乱序算法的示意图。如图6所示,在一实施例中,包括9个实体程序化单元的第一群组(P0、P1、P2、P3、P4、P5、P6、P7、P8),存储器控制器123对每一个实体程序化单元随机的产生一个随机数,然后对随机数进行排序(例如于本实施例中,可将随机数由大到小排序,于另一实施例中,也可将随机数由小到大排序,本发明并不以此为限),在对随机数进行排序的同时移动第一群组中与随机数相对应的实体程序化单元,待移动实体程序化单元以排序完成后,即可以打乱第一群组中实体程序化单元,得到图6中所示的第二群组(P8、P2、P7、P6、P0、P5、P1、P4、P3)。

图7是根据本发明的一实施例所示出的基于交换的乱序算法的示意图。如图7所示,在一实施例中,包括9个实体程序化单元的第一群组(P0、P1、P2、P3、P4、P5、P6、P7、P8),在第1个实体程序化单元P0和第6个实体程序化单元P5之间产生一个随机数(随机数大于1),于本实施例中,所述随机数为4,交换实体程序化单元P5和实体程序化单元P3在第一群组中的位置,得到图7中所示的第二群组(P0、P1、P2、P5、P4、P3、P6、P7、P8)。显而易见地,所述随机数也可以大于6,只需要小于N即可,其中N为第一群组中的实体程序化单元的数目。

于步骤S505中,存储器控制器123将每一个第一群组中的实体程序化单元分组至多个子群组中,其中每一个子群组包括多个实体程序化单元,且每一个子群组至多包括一个第二类实体程序化单元。

图8是根据本发明的一实施例所示出的步骤S505的具体流程图。

步骤S505包括以下步骤S801至S805。具体而言,于步骤S801中,存储器控制器123将第一群组中的第一实体程序化单元分组至多个子群组中。

于步骤S802中,存储器控制器123依据第一实体程序化单元的出错概率值计算每一个子群组的H值,其中H值为每一个子群组中的实体程序化单元的出错概率值的数学期望((意为仅有2次或2次实体程序化单元出错的概率)。此处,H值等于第一实体程序化单元的出错概率值h,因为此时每一个子群组只包括第一实体程序化单元。

于步骤S803中,存储器控制器123将第一群组中的第二实体程序化单元分组至多个子群组中,且将具有最小出错概率值的第二实体程序化单元分组至多个子群组中具有最大H值的子群组。

于步骤S804中,存储器控制器123重新计算多个子群组的H值。

于步骤S805中,存储器控制器123将第一群组中的第三实体程序化单元分组至多个子群组中,且将具有最小出错概率值的第三实体程序化单元分组至具有最大H值的子群组,直至将第一群组中的实体程序化单元分组至多个子群组中,且多个子群组的H值是相等或接近的。

以下结合图8至图10来说明如何将每一个第一群组的实体程序化单元分组至多个子群组中,使得每一个子群组中至多包括一个第二类实体程序化单元。

于一实施例中,存储器模块122包括260000(26w)个实体程序化单元,通过乱序算法将上述26W个实体程序化单元打乱以及将这些实体程序化单元分组至84个第一群组中(即第一群组G0、第一群组G1…第一群组G83)。其中每一个第一群组中包括3000个实体程序化单元。将每一个第一群组中的3000个实体程序化单元进一步分组至12个子群组中(即子群组g0、子群组g1…子群组g11),使得每一个子群组中包括250个实体程序化单元。

其中,对应于子群组g0、g1、g2、g3、g4、g5、g6、g7、g8、g9、g10、g11的H值分别为H0、H1、H2、H3、H4、H5、H6、H7、H8、H9、H10、H11,其中H值为子群组中的实体程序化单元的出错概率值的数学期望。

举例来说,对实体程序化单元P0至P249进行分组操作。如图9所示,首先对实体程序化单元P0至P11(即第一实体程序化单元)进行分组,分别将实体程序化单元P0分组至子群组g0,将实体程序化单元P1分组至子群组g1,以此类推,将实体程序化单元P11分组至子群组g11,计算对应于子群组g0至g11的H值,分别为H0至H11。

假如实体程序化单元P7的出错概率值h为0.3,即对应于子群组g7的H7为0.3,其他的子群组(子群组g0至g6、g8至g11)中的实体程序化单元均为第一类实体程序化单元,即其他的子群组的H值为0(即小于0.3)。如此,子群组g7相对于其它的11个子群组而言,其H值最大。

其次,继续对第一群组中的实体程序化单元进行分组操作,即对实体程序化单元P12至P23(即第二实体程序化单元)进行分组,如图10所示,由于实体程序化单元P7所属的子群组g7具有最大的H值(H7);因此,在此轮分组操作中,选择将其中h值最小的实体程序化单元P13分组至子群组g7。重新计算上述12个子群组的H值,得到子群组g7的H值为0.2,以及与其他的子群组的H值比较,判断子群组g7的H值是否仍最大,倘若子群组g7的H值仍最大,继续将h值最小的实体程序化单元分组至子群组g7。例如,在实体程序化单元P24至P35(即第三实体程序化单元)的分组操作中,继续将h值最小的实体程序化单元P30分组至子群组g7中。如此操作,倘若下一分组操作中,子群组g3的H值最大,则在实体程序化单元P36至P47的分组操作中,将h值最小的实体程序化单元P38分组至子群组g3中,直至将实体程序化单元P0至P249全部分组至子群组g0至g11中。如此,可实现每一个子群组中包括249个第一类实体程序化单元以及1个第二类实体程序化单元,可将潜在的密集的第二类实体程序化单元分散到各子群组中,以避免同一个子群组中的第二类实体程序化单元过多,而超出RS算法恢复数据的能力。

于步骤S506中,存储器控制器123将写入至实体程序化单元中的数据进行逻辑运算以产生错误检查与校正码,其中错误检查与校正码用以对实体程序化单元中的数据执行错误检查与校正操作,以恢复实体程序化单元中的数据。

基于此,本发明提供的一种数据恢复方法、存储器存储装置及存储器控制器,可将潜在的密集的坏实体程序化单元分散到各子群组中,从而避免在使用RS算法对读取的数据进行解码时,由于同一个实体群组中的出错的实体程序化单元的数目过多而超出RS算法恢复数据的能力,导致无法恢复数据的情形。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

相关技术
  • 一种无创呼吸机及无创呼吸机的控制方法
  • 一种基于无创呼吸机的呼吸控制系统及无创呼吸机
技术分类

06120116562529