快闪存储器的写入控制方法及装置、读取控制方法及装置以及存储器系统与流程

文档序号:14680823发布日期:2018-06-12 22:13
本发明涉及一种快闪存储器的快闪存储器的写入控制方法及装置、读取控制方法及装置,以及存储器系统。
背景技术
::快闪存储器(flash)是一种非易失性的存储器,广泛应用于记忆卡、固态硬盘以及可携式多媒体播放器(portablemultimediaplayers)等电子设备。快闪存储器可分为N0R型快闪存储器和NAND型快闪存储器。为了保证数据安全,通常在快闪存储器的控制器设置有ECC(ErrorCheckingandCorrection)电路,用于数据恢复和纠错处理。ECC电路设置在快闪存储器的控制端,在数据写入阶段,将基于原始数据编码产生编码数据存储到快闪存储器中,在数据读取阶段,对编码数据进行译码才能获得原始数据。通过ECC编译码电路能够降低快闪存储器的误码率以及提高产品良率。但是随着快闪存储器制程工艺的发展,尤其是3DNAND型快闪存储器的兴起,使得3DNAND型快闪存储器在良率和误码率(BER,BitErrorRate)的差异性方面比以往的2D(planr)NAND型快闪存储器来得多,特别是在异常断电时,3DNAND型快闪存储器的存储块(block)常常发生1~2个存储页(page)的误码率,其远大于整体快闪存储器的误码率,并且无法通过ECC电路进行纠正。技术实现要素:有鉴于此,本发明实施例提出一种快闪存储器的写入控制方法及读取控制方法及装置,进行两个维度的编码和译码,以进一步降低快闪存储器的误码率,提升快闪存储器的可靠性和产品良率。根据本发明的第一方面,提供一种快闪存储器的写入控制方法,包括:按照第一方式切分原始数据,以获得多个第一资料;按照第二方式切分原始数据,以获得多个第二资料,所述多个第一资料中的任意一个和所述多个第二资料中的一个具有共同部分;对所述多个第一资料进行编码,以获得多个第一码元数据;对所述多个第二资料进行编码,以获得多个第二码元数据;以及将所述原始数据、所述多个第一码元数据和所述多个第二码元数据存储到所述快闪存储器的相应的存储位置。优选地,所述第一方式按照原始数据的语义方向切分所述原始数据以获得多个第一资料,所述第二方式切分所述多个第一资料中的每个第一资料,以获得多个切分部分,以及将所述多个切分部分组成所述多个第二资料,并且,组成每个第二资料的多个切分部分至少来自两个第一资料。优选地,每个第一资料存储于一个存储页中,每个第二资料存储于多个存储页中。优选地,所述第一资料、第一资料和所述第一码元数据存储于同一个存储块中,所述第二码元数据存储于相应的存储块之后的存储页中。优选地,采用第一编码方法对所述多个第一资料进行编码;以及采用第二编码方法对所述多个第二资料进行编码。优选地,所述第一编码方法为LDPC编码方法,所述第二编码方法为RS编码方法。根据本发明的第二方面,提供一种快闪存储器的读取控制方法,用于读取上述写入控制方法写入到快闪存储器内的数据,包括:从所述快闪存储器的相应位置读取编码数据,所述编码数据包括原始数据、第一码元数据和第二码元数据;以及根据所述第一码元数据和所述第二码元数据对所述原始数据进行迭代译码和纠错。优选地,所述根据所述第一码元数据和所述第二码元数据对所述原始数据进行迭代译码和纠错包括:采用所述第一编码方法对所述第一码元数据进行译码和纠错;根据所述第一码元数据的译码结果,采用第二编码方法对所述第二码元数据进行译码和纠错;以及根据所述第二码元数据的译码结果,采用所述第一编码方法对所述第一码元数据进行译码和纠错。优选地,还包括:当采用所述第一编码方法的所有码字和采用第二编码方法译码的所有码字均失败后,停止译码。根据本发明的第三方面,提供一种快闪存储器的写入控制装置,包括:切分模块,用于按照第一方式切分原始数据,以获得多个第一资料;以及按照第二方式切分原始数据,以获得多个第二资料,所述多个第一资料中的任意一个和所述多个第二资料中的一个具有共同部分;第一编码模块,用于对所述多个第一资料进行编码,以获得多个第一码元数据;第二编码模块,用于对所述多个第二资料进行编码,以获得多个第二码元数据;以及存储控制模块,用于将所述原始数据、所述多个第一码元数据和所述多个第二码元数据存储到所述快闪存储器的相应的存储位置。优选地,切分模块按照原始数据的语义方向切分所述原始数据以获得多个第一资料,并且切分所述多个第一资料中的每个第一资料,以获得多个切分部分,将所述多个切分部分组成所述多个第二资料,并且,组成每个第二资料的多个切分部分至少来自两个第一资料。优选地,所述存储控制模块控制每个第一资料存储于一个存储页中,以及每个第二资料存储于多个存储页中。优选地,所述存储控制模块控制所述第一资料、第一资料和所述第一码元数据存储于同一个存储块中以及所述第二码元数据存储于相应的存储块之后的存储页中。优选地,所述第一编码模块采用第一编码方法对所述多个第一资料进行编码;所述第二编码模块采用第二编码方法对所述多个第二资料进行编码。优选地,所述第一编码方法为LDPC编码方法,所述第二编码方法为RS编码方法。优选地,用于读取根据权利要求10至15任一项所述的快闪存储器的写入控制装置写入到快闪存储器内的数据,包括:读取模块,用于从所述快闪存储器的相应位置读取编码数据,所述编码数据包括原始数据、第一码元数据和第二码元数据;第一译码模块,用于根据所述第一码元数据进行译码和纠错;第二译码模块,用于根据所述第二码元数据进行译码和纠错;迭代控制模块,根据控制所述第一译码模块和所述第二译码模块进行迭代译码和纠错。优选地,还包括:所述迭代控制模块判断采用所述第一编码方法的所有码字和采用第二编码方法译码的所有码字均失败后,停止译码。根据本发明的第四方面,提供一种存储器系统,包括快闪存储器和存储器控制器,所述控制器包括上述写入控制装置和上述读取控制装置。本发明提供的写入控制方法,对原始数据进行两个维度的编码,以获得第一码元数据和第二码元数据并进行存储,同时提供读取控制方法,通过第一码元数据和第二码元数据迭代译码获取原始数据。该写入和读取控制方法提升了ECC电路能够处理的错误码数量,进而提高快闪存储器的可靠性。附图说明通过参照以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:图1是闪存系统的结构图;图2是本发明实施例的写入控制装置的结构图示意图;图3是根据本发明第一实施例将原始数据进行编码后的存储示意图;图4是根据本发明第二实施例将原始数据进行编码后的存储示意图;图5是根据本发明第三实施例将原始数据进行编码后的存储示意图。图6是本发明实施例的读取控制装置的结构图示意图;图7是本发明实施例的写入控制方法的流程图;图8是本发明实施例的读取控制方法的流程图。具体实施方式以下将参照附图更详细地描述本发明。在各个附图中,相同的元件采用类似的附图标记来表示。为了清楚起见,附图中的各个部分没有按比例绘制。此外,可能未示出某些公知的部分。图1是闪存系统的结构图。该闪存系统100例如是使用固态硬盘(SSD)的计算机系统。该计算机系统包括主机130。固态硬盘包括快闪存储器110和存储器控制装置120。主机130经由存储器控制装置120访问存储器130。在该闪存系统中,存储数据为原始数据经过编码产生的编码数据,在读取过程中对存储数据译码才能获得原始数据。主机110例如包括处理器。在使用状态中,该处理器从存储器130中加载程序或读取数据,以及向存储器130中写入数据。快闪存储器110由多个存储页面P_0至P_N组成,每个存储页面包括多个由浮动栅极晶体管构成的存储器单元M_0至M_K,每个存储器单元中存储一个或多个比特位(bit)的数据。存储器控制装置120通过向晶体管的控制栅极提供适当的检测电压,以读取存储器单元存储的数据。例如,假设存储器单元M_0存储3个比特位的数据,即可以存储的二进制数据为000,001,010,011,100,101,110,111(23),则存储器控制装置120需设置8个检测电压,并分别基于上述8个检测电压进行读取存储器单元存储的二进制数据。该假设仅为了说明的目的,并不以此为限。存储器控制器120例如是单独的集成电路芯片,包括读取控制装置(未示出)和写入控制装置(未示出),分别用于控制快闪存储器110的读取和写入。在写入操作期间,写入控制器对原始数据进行编码,从而生成存储数据,从而将存储数据写入快闪存储器110中。在读取操作期间,读取控制器从快闪存储器110中获取存储数据,然后进行译码以获得原始数据。图2是本发明实施例的写入控制装置的结构图示意图。参考图2,写入控制装置121包括缓存模块200、ECC编码电路201和存储控制模块205。缓存模块200用于接收从主机130发送的原始数据,并发送给ECC编码电路。ECC编码电路201接收到原始数据后,对原始数据进行编码,生成编码数据。这里的编码数据包括两部分内容:原始数据和码元数据。码元数据是根据原始数据中的选定的数据进行编码获得的数据,用于在读取错误发生时恢复和纠正出错数据。目前ECC编码电路流行的编码方法包括LDPC、RS和BCH等。存储控制模块205用于写入编码数据,将编码数据写入到相应的存储块(block)和存储页(page)中。快闪存储器的存储空间可分为存储块(block),每个存储块包含若干存储页,每个存储页包含若干字节(例如包含4K字节),每个字节为8比特位(bit)。不同型号的快闪存储器可能具有不同大小的存储块和存储页。现有的快闪存储器标准中,一个存储块包含64个存储页,一个存储页包含4k字节,但本发明不以此为限。NAND快闪存储器以存储页为单位进行读取和写入,以块为单位进行擦除。在本例中,ECC编码电路进一步包括第一编码模块202、第二编码模块203和切分模块204。切分模块204用于按照第一方式切分原始数据,获得多个第一资料,以及按照第二方式切分原始数据,获得多个第二资料,多个第一资料中的任意一个和多个第二资料中的一个具有共同部分。第一方式例如将原始数据按照原始数据的语义方向进行切分。例如,按照存储页的大小切分原始数据,即100k的原始数据可以切分为100k/4k=25个第一资料。第二方式例如将第一资料再分割成多个切分部分,选取多个第一资料的至少一个切分部分组成第二资料。例如如前所述,将4k的第一资料分成两个切分部分,25个第一资料的第一切分部分组成第二资料,25个第一资料的第二切分部分组成第二资料。但本发明的切分方式不以此为限。第一编码模块202用于根据第一资料和第一编码进行编码,获得第一码元数据。第二编码模块203根据第二资料和第二编码方法进行编码,获得第二码元数据。第一码元数据和第二码元数据以及原始数据由存储控制模块205写入到相应的存储页中。可选地,第一编码方法和第二编码方法各自为LDPC(LowDensityParityCheckCode)、RS(ReedSolomonCode)和BCH(Bose、Ray、Hocquenghem)中的一种。下面将结合附图对本实施例进行进一步的说明。图3是根据本发明第一实施例将原始数据进行编码后的存储示意图。图3以一个NAND快闪存储器的block为例进行说明。所述block包括256个存储页page0至page255,在存储页page0至page255中分别存储原始数据Din和码元数据PageCode0~PageCode255,在存储页page256~page257存储码元数据columnCode0~columnCode15。码元数据PageCode0~PageCode255是根据对应的一个存储页内的原始数据生成的码元数据,columnCode0~columnCode15是根据对应的多个存储页中的原始数据生成的码元数据。具体地,假设一个存储页能够存储20K字节的数据,则保留4K字节存储码元数据,则剩余16K字节存储原始数据,同时将16K存储空间切割为16等份,组合PageCode0~PageCode255中在相同位置的存储空间中存储的数据并对其进行编码处理,得到16个码元数据columnCode0~columnCode15。将码元数据columnCode0~columnCode15分别存储block之后的存储页page256~page257内。由此,得到了二维码元数据:横向和纵向码元数据。二维码元数据有利于进行数据译码,尤其在数据发生读取错误时,可以基于二维码元数据进行迭代纠错,从而提高ECC电路的纠错能力。应该指出的是,在本例中,码元数据可以采用相同或不同的编码方法生成,例如,均采用LDPC编码方法生成,或者,横向码元数据采用LDPC编码方法生成,纵向码元数据采用RS编码方法生成。图4是根据本发明第二实施例将原始数据进行编码后的存储示意图。图4以一个NAND快闪存储器的block为例进行说明。所述block包括256个存储页page0至page255,在存储页page0至page255中分别存储原始数据Din和码元数据PageCode0~PageCode255,在存储页page256~page257存储码元数据columnCode0~columnCode15。其中,PageCode0~PageCode255是对相应的存储页内存储的数据进行LDPC编码产生的码元数据。和图3不同之处在于,columnCode0~columnCode15为采用不同的码字(codeword)进行RS编码获得的码元数据。具体地,如图所示,假设一个存储页能够存储20K字节的数据,则保留4K字节存储码元数据,则剩余16K字节存储原始数据,同时将16K存储空间均匀切割为16等份,将奇数行的存储页中每2k数据组合在一起采用同一个码字进行RS编码,将偶数行的存储页中的每2k数据组合在一起采用同一个码字进行编码,生成码元数据。另外,相邻的数据尽量采用不同的码字,例如,上图相邻的数据分别采用RS0-RS3四种码字。由于相邻的数据采用不同的码字进行编码生成码元数据,使得读取时,整个存储页读取失败的可能性降低,例如可以通过相邻的码元数据译码相邻数据,以及通过相邻数据判断本数据等,从而使存储页读取失败的可能性大大降低。图5是根据本发明第三实施例将原始数据进行编码后的存储示意图。图5以两个NAND快闪存储器的block为例进行说明。在本例中,横向方向按照存储页进行编码,即和图3-4所示相同,在纵向方向采用的编码方式和图3和4不同。在本例中,将两个block当作一个整体进行纵向编码。奇数行和偶数行均采用RS进行编码,但是奇数行和偶数行用于编码的码字不相同,因此将其区别为RS0和RS1。进而,在第一个block之后的两个存储页中存储基于RS0产生的码元数据,在第二个block之后的两个存储页中存储基于RS1产生的码元数据。通过将一个block中对应的码元数据存储在两个不同的位置,能够降低码元数据被损坏或者被读取错误的概率,进而能够降低误码率。应该指出的是,图3~图5只用于示例性的描述,实际上,码元数据的存储位置可以任意变化,既可以和原始数据存放在同一存储块、存储页或相邻的存储块中,也可以存放在其他的存储块中。图6是本发明实施例的读取控制装置的结构图示意图。参考图6,读取控制装置122包括存储控制模块300和ECC译码电路301。存储控制模块300根据控制信号从相应的存储块和存储页中读取编码数据。编码数据包括原始数据和码元数据。ECC译码电路301获取存储器单元中存储的数据,对编码数据进行译码,并进行数据纠错处理。ECC译码电路包括迭代控制模块303、第一译码模块304和第二译码模块305。迭代控制模块303用于控制迭代译码过程,即控制第一译码模块304和第二译码模块305的交替执行。第一译码模块304用于采用第一编码方法进行译码纠错。第二译码模块305用于采用第二译码方法进行译码纠错。而且,当第一译码模块和第二译码模块均译码失败时,这时已经无法通过交替译码纠错译出更多的原始数据,此时应该停止译码。举例说明。对应于图3的写入的数据,可以先采用第一编码方法进行译码,译码存储页Page0~Page255的数据,但是如果在译码过程中Page10译码失败,则通过第二编码方法对columnCode0~columnCode15进行译码,由于在第一次译码中,已经将Page0~Page9以及Page11~Page255存储的数据译码成功,则基于columnCode0~columnCode15能够解出Page10的相应位置上的原始数据。即通过两次迭代获得所有的原始数据。当然,在其他的情况下,可能需要两次以上的迭代获得所有的原始数据。同理,对于图4和图5写入的数据,也可以通过第一译码模块和第二译码模块进行迭代译码纠错,从而获得更高的译码成功率。图7是本发明实施例的写入控制方法的流程图。所述写入控制方法应用于快闪存储器,具体包括以下步骤。在步骤S701中,按照第一方式切分原始数据,以获得多个第一资料。在步骤S702中,按照第二方式切分原始数据,以获得多个第二资料。原始数据例如二进制数据、ASCII数据等。通过两种不同的切分方式获得多个第一资料和多个第二资料。任意一个第一资料和至少一个第二资料具有共同部分。在步骤S703中,对多个第一资料进行编码,以获得多个第一码元数据。在步骤S704中,对多个第二资料进行编码,以获得多个第二码元数据。通过LDPC、BCH和RS等多种编码方法生成第一码元数据和第二码元数据。在步骤S705中,将原始数据、多个第一码元数据和多个第二码元数据存储到快闪存储器的相应的存储位置。原始数据、第一码元数据和第二码元数据可以分散存储在快闪存储器的相应位置,例如,原始数据按照存储页存储,在每个存储页后面存储有该存储页内的存储数据对应的第一码元数据。第二码元数据和原始数据存储在同一个存储块中,或者存储在原始数据所属的存储块之后的存储页中。图8是本发明实施例的读取控制方法的流程图。所述读取控制方法应用于快闪存储器,用于读取上述实施例的写入控制方法写入到快闪存储器内的数据,具体包括以下步骤。在步骤S801中,从快闪存储器的相应位置读取编码数据,编码数据包括原始数据、第一码元数据和第二码元数据。在步骤S802中,根据第一码元数据和第二码元数据对原始数据进行迭代译码和纠错。在读取的原始数据出现错误或者需要验证原始数据时,可以采用迭代译码和纠错进行检查和纠错。第一码元数据通过第一编码方法进行译码,第二码元数据通过第二编码方法进行译码,在此过程中,例如可以将第一编码方法的所有码字得到的正确数据代入到第二编码方法的译码过程中,得到更多的正确数据,直至最终得到所有的原始数据,或者直至最终无法译码出更多的数据为止。综上所述,本发明提供的写入控制方法在写入闪存存储器时进行两个维度的编码,并存储两个维度的编码数据,从而能够提高ECC电路的译码和纠错能力,进而提高闪存存储器的可靠性和产品良率。本发明实施例虽然以较佳实施例公开如上,但其并不是用来限定权利要求,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本实用新型权利要求所界定的范围为准。以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1