用于在闪速eeprom存储页中重构可靠性数据的方法和装置的制作方法

文档序号:6781454阅读:138来源:国知局

专利名称::用于在闪速eeprom存储页中重构可靠性数据的方法和装置的制作方法
技术领域
:本发明涉及一种从闪存中读取数据的方法。该方法还涉及一种数据处理装置。
背景技术
:现代IC设计越来越基于以新的组合对预先存在的功能单元(IP单元)进行重新使用。这样的IP单元可以包括例如数据处理单元、存储单元和接口单元。闪存(特别是NAND闪存)通常用作非易失性存储介质。闪存由大量(通常数千个)存储块组织而成。每个存储块可再分成若干个(通常几十个,如32或64)存储页。闪存的内容不能被任意修改。只能逐存储块地擦除数据,并且逐存储页地写数据。于是,如果要将新数据写入闪存,则仅当所写入的是整个存储页的一部分时才可能写入。仅当存储页已经擦除后才可以写入该存储页。否则首先必须擦除该存储页所属的整个存储块。闪存和其它固态存储器之间的一个重要区别在于,不能保证闪存装置中的所有存储器单元在装运后工作正常。有可能某些存储器单元失效。在操作期间,出错的存储器单元的数量还可能增加。因此需要冗余数据来检测错误,并且优选地能够从失效的存储器单元中恢复数据。冗余数据在文中也记做ECC数据。为了便于校正错误,除了初始想要存储的数据(用户数据)之夕卜,闪存装置还预留了空间来存储ECC数据。ECC单元准备根据用户数据计算ECC数据,并使用ECC数据来校正所存储的用户数据。已知各种错误校正检测方法,包括例如里德所罗门法和汉明法。早期版本的闪存通常具有大小为528字节的存储页。存储空间包括存储用户数据之外的空余来存储ECC数据。除去用户数据和ECC数据,闪存的存储页还提供少量字节的额外空间来存储公知为带外数据(OOB)的数据。基于闪存的文件系统通常使用此额外空间来存储例如有关页的健康(是否有缺陷)的信息等元数据(metadata)。此外,此额外存储空间还被制造商用来存储存储器可靠性数据以标记有缺陷的存储块。这是唯一确保可以正确读取的位置。在闪存的构造中,此额外存储空间可以较为坚固。但这并非是一种需求,而是由制造商来保证可读。任何不是此情况的装置将不会装运。每个闪存芯片都要在工厂中经历的测试程序都相当精细,能够可靠检测出有缺陷的存储块。例如,测试中对芯片施加高温和低温以及高电压和低电压。强烈建议使用存储器可靠性数据,因为它可以显著降低数据丢失的可能。在最早的小存储页闪存芯片中,528个字节中的前512个字节保留为用户数据,下面6个字节用于OOB数据,最后IO个字节用于ECC数据。应用于这些早期闪存芯片上的失效块标记方案是,每个存储块中第一和第二页的第517个字节(空余区域中的第6字节)指示该存储块是否可靠。如果该字节不等于0xFF,则该存储块被认为是不可靠的。对于16位的装置,失效块标记放置在每个块的第一和第二页的第256个和第261个字(额外空间的第一和第六个字)。普通可得到的闪存IP是基于512+16字节的页。接口通过提供硬件ECC来加速闪存的读写。ECC硬件检测错误,并可选地试图校正错误。然而,如今绝大多数的大闪存装置都具有较大存储页如2K字节,甚至4kB存储页的装置也在开发中。这些现代闪存装置与普通可用的闪存接口IP不兼容。这些较大页的装置在用户数据和ECC数据中安排有另外的OOB数据。例如在2k字节的页中,前2048个字节用于用户数据,下面24个字节用于OOB数据,最后40个字节用于ECC数据。解决这种不兼容性的一般方法是将大的存储页看作各自具有ECC的小页的集合。这使得必须将OOB数据传送至大页中的不同位置,而无法确保能够正确读取。从而丧失了另外的软件兼容性。
发明内容本发明的一个目的是提供将IP块所提供的数据存储在闪存中的方法,该方法能避免OOB数据丢失。本发明的另一个目的是提供一种数据处理系统,该数据处理系统在避免OOB数据丢失的同时能够在操作期间提供数据存储。根据本发明,这些目的是通过如权利要求1所述的读取数据的方法、如权利要求3所述的存储数据的方法以及如权利要求4所述的数据处理系统来实现的。根据权利要求1的方法允许使用一种适于和具有较大页大小的闪存一起使用的应用,同时重新使用一种适用于具有较小页大小的闪存的错误校正/检测装置。根据权利要求3的方法允许使用一种适于和具有较大页大小的闪存一起使用的应用,同时重新使用一种适用于具有较小页大小的闪存的错误保护装置。类似地,如权利要求4和5所述的数据处理系统允许使用一种适于和具有较大页大小的闪存一起使用的应用,同时重新使用一种适用于具有较小页大小的闪存的错误保护装置。在所述应用的起始通常扫描整个闪存,并针对闪存的每个存储块来检验存储器可靠性指示符。在此处理过程中,在例如易失性存储器(如DRAM)的存储器中构建失效块表。该失效块表可以例如包括一列指向失效块的指针,或者简单的为指示每个块是否可靠的列表。如果在操作期间控制器检测到一个块的错误量超过了预定程度,则更新用于所述块的存储器可靠性指示符。用于该指示符的一个新值(指示该块不可靠)存储在闪存中。在根据本发明的方法和系统中,可靠性指示符在工作页和在存储页中具有相同的相对位置。于是可靠性指示符被可靠地存储,因为或者制造商会使用更可靠的技术来6存储原始指示符,或者扩展的测试会确保此存储空间可靠。这样得到的数据排列方式是有益的。希望在具有较大存储页的数据处理系统中重新使用用于具有较小存储页的闪存的错误保护/检测/校正装置的技术人员,将会均等地分割工作页的用户数据。这将具有如下效果,即可靠性指示符被存储在存储页中偏离确保可靠位置的一个相对位置处。参照附图来详细说明本发明的这些及其它方面。在附图中图1示意性地示出了现有技术电子装置。图2示出了用于第一类闪存装置的第一存储惯例。图3示出了用于第二类闪存装置的第二存储管理。图4示出了在第二类闪存装置中存储数据的传统方式。图5示出了用根据本发明的方法在第二类闪存装置中存储数据的方式。图6示意性示出了根据本发明的装置。图7示出了根据本发明的第一方法。图8示出了根据本发明的第二方法。具体实施例方式图1示意性地示出了现有技术电子装置,其包括用于提供和/或消耗数据的处理单元10和闪存20。数据处理单元通过数据总线30和控制线40耦接至控制闪存20的接口50。接口50经由数据总线31和控制线41耦接至闪存。数据处理单元10是例如数字信号处理器的处理器,但也可以是例如SRAM的存储器。接口50和闪存20被设计为通过数据总线31交换数据。数据按照图2所示的格式存储在闪存的存储页中。存储页具有N个数据单元的大小。在此N二528,其中数据单元是字节。在存储页中,具有512字节的第一段为用户数据保留,总共6字节的第二段包括管理数据(包括存储器可靠性数据,记做OOB),第三段被保留为10字节的冗余数据。冗余数据可以包括允许检测和/或校正用户数据中的错误的任何数据。在图中将冗余数据记做ECC。存储器可靠性数据可以包括指示存储页在闪存中的存储位置的可靠性的指示符,或者是指示一组包括存储页的位置(例如块)的指示符。该指示符一般由存储器的制造商基于严格的测试程序提供。但是,如果输出处理单元10或者其上所处理的应用检测到当试图读取该页时发生不可克服的错误,则对初始指示一个存储位置可靠的指示符赋一个指示不可靠的值。具有528个字节的页大小的闪存已使用了很长时间。具有较大存储页(宏页)的闪存类型已逐渐开发出来。图3以示例的形式示出了这样一种更现代的闪存的存储页的布局。在此示例中,存储页具有总共2112字节的大小,包括用于用户数据的2048字节的第一段,用于管理数据(包含可靠性数据)的24字节的第二段,以及用于冗余数据的40字节的第三段。期望能够结合更新类型的闪存来使用现有接口,以避免从头开始开发每个单元。图4示出了实现此目的的一般方式。将具有图2所示格式的数据包序列(4个包)存储在宏页中,其中所述格式用于使用较小页大小的闪存。这具有如下缺点存储器可靠性数据被存储在比制造商所选择的位置相比较而言不可靠的位置处。图6示出了根据本发明的数据处理系统的实施例。数据处理系统包括闪存120,闪存120具有划分成多个存储页的存储空间。每个存储页都包括指示存储器的存储区域可靠性的存储器可靠性指示符。闪存的接口150(也记做控制器)耦接至闪存120,接口150包括用于保护数据避免在存储到闪存120中时发生错误、并且用于在从闪存120中取出数据时检测和/或校正数据中的错误的装置。数据处理单元IOO耦接至控制器150。数据处理单元具有访问工作页P的通路。数据处理系统还包括数据重排列装置105,用于将工作页P中的数据再分成多个段P1、P2、P3和P4。每个段均包括一部分用户数据,最后一段还另外包括管理信息(包括存储器可靠性指示符)。控制器150具有用于存储一个段的缓冲器151。控制器150用相应的冗余数据扩展段Pl、P2、P3和P4,并将扩展后的段Pl'、P2'、P3'和P4'写入闪存的缓冲器121。如果此缓冲器已满,则闪存将内容写入一个存储页122。在所示实施例中工作页P包括2048字节的用户数据和24字节的管理数据。当写入闪存时,重排列装置105将数据重排列成4个段,其中前3个段Pl、P2和P3均包括518字节的用户数据。四个段的最后一个P4包括494字节的用户数据和24字节的管理信息。每当把一个段存储到控制器150的缓冲器151中时,控制器150都计算IO个冗余字节的数量。最终存储在闪存的页122中的数据具有图5所示的格式。于是可靠性指示符在存储空间中和在工作页中具有相同的相对位置。由处理单元100驱动的应用程序将会在数据处理系统的启动期间生成失效块列表。在本发明的数据处理系统中,闪存120的控制器150用相比闪存20的存储页而言具有较小大小的页进行操作。这样的优点是,控制器150仅需要传送包括管理数据的存储页122的内容的一部分来得到可靠性指示符。这节省了启动时间。在读数据时,控制器150被设置为取出一个存储页的连续扩展的段P1'、P2,、P3'和P4',并对每个段应用错误检测和/或错误校正。数据重排列装置105将扩展段的校正后数据并入工作页P,以由数据处理单元100使用。其中校正后的用户数据连续排列,可靠性指示符具有与存储页P'中相同的相对位置。图7示出了用于从闪存中读取数据的根据本发明的方法的第一实施例。在步骤S1,将计数器n初始化为l。在步骤S2,从闪存的缓冲器121读取段n。在步骤S3,对段n应用错误检测/校正,并且将检验/校正后的数据暂存在例如工作页中。在步骤S4,计数器加一。9在步骤S5,检验计数器的值是否大于值2M。如果大于值2M则继续执行步骤S6。否则控制流程返回步骤S2。在步骤S6,将数据重排列成图3所示的格式。在步骤S6完成后可以重复步骤Sl至S6。由于在进行错误校正后不再需要ECC数据,因此除了已经用作工作页的空间之外不需要另外的缓冲空间来进行重排列。优选地是,当校正后数据已经在步骤S3存储之后,重排列已经在空闲中进行。在上述步骤中,段n的用户数据可以紧挨着写在段n-l的用户数据之后。当写入最后一段时,仍然在前一段所写入空间之后的第一个空闲位置开始写入。在写入最后一段的前464字节之后,保留30字节的空间。随后将24字节的管理数据写入工作页,然后将最后一段的最后30字节的用户数据写入保留空间。图8示出了用于将数据从工作页存储到闪存的存储页的方法。在步骤Sll,将计数器n初始化为l。在步骤S12,从工作页中选择用户数据的段n。在步骤S13,根据用户数据创建冗余数据以进行错误保护。在步骤S14,将用户数据和冗余数据写入存储页。在步骤S15,计数器n加一。在步骤S16,验证计数器的值是否小于值2M。如果小于值2M则控制流程返回步骤S12。否则控制流程继续进行步骤S17。在步骤S17,根据工作页的段2M创建数据包,包括464字节的第一用户数据量、24字节的管理数据和30字节的第二用户数据量。在步骤S18,根据用户数据和管理数据创建冗余数据以进行错误保护。在步骤S19,将包括冗余数据的数据包写入存储页。现在将数据重排列成图5所示的格式,于是可靠性指示符具有与工作页中相同的相对位置。上文描述了本发明的一个实施例,包括一个具有2048B(除了24字节的管理数据和40字节的冗余数据)的存储页的闪存,和一个为512B(除了6字节的管理数据和IO字节的冗余数据)的页提供错误校正的控制器。本发明同样可以应用于其它数据处理系统,其中控制器对页大小比控制器所控制的闪存的页小的页进行操作。当使用下表所示的页格式时,任何类型k的控制器都可用于任一个类型大于k的闪存。其中"用户数据"一栏示出了用户数据的字节数,"管理数据"一栏示出了管理数据的字节数,"冗余数据"一栏示出了冗余数据的字节数。<table>tableseeoriginaldocumentpage11</column></row><table>注意本发明的保护范围不受文中所述实施例的限制。该系统的各部分可以硬件、软件或其组合的形式实现。例如,控制器150可以由可适当编程的通用可编程微控制器实现。或者,所述控制器可以部分地或全部由专用硬件实现。其可以例如包括专用硬件以在空闲时重排列数据。各个组件均可以构造为单个集成电路。或者各个组件也可以作为芯片组获得。权利要求中的参考标号不对本发明的保护范围构成限定。"包括"一词并不排除未在权利要求中提到的部分。元件前面的"一个"并不排除多个元件的情况。形成本发明一部分的装置既可以专用硬件的形式实现,也可以编程的通用处理器的形式实现。本发明体现在每个新特征或特征组合中。权利要求1.一种用于从闪存中读取数据的方法,所述闪存具有存储在多个存储页中的数据,每个存储页均包括用户数据、冗余数据和管理数据,其中管理数据包括用来指示存储器的存储区域的可靠性的可靠性指示符,所述方法包括如下步骤读取连续段中的存储页,每个段均包括一部分用户数据和一部分冗余数据,最后一段还另外包括带有可靠性标识符的管理数据;对每个段应用错误检测/校正;将各段的校正后数据并入工作页,其中校正后的用户数据连续排列,可靠性指示符具有与存储页中相同的相对位置。2.根据权利要求1的用于读取数据的方法,其中冗余数据在工作页中存储为连续的数据块。3.—种用于将工作页中的数据存储到闪存的存储页中的方法,其中工作页中的数据至少包括一部分用户数据以及包含存储器可靠性指示符的管理数据,所述方法包括如下步骤将工作页细分成多个段,每个段均包括一部分用户数据,并且最后一段还另外包括存储器可靠性指示符;对每个段应用错误保护以创建冗余数据;将各个段作为连续的部分一起存储在存储页中,其中可靠性指示符具有与工作页中一样的相对位置。4.一种数据处理系统,包括闪存(120),具有划分成多个存储页(P,)的存储空间,每个存储页均包括管理数据,所述管理数据包含用来指示存储器的存储区域的可靠性的存储器可靠性指示符;用于闪存的控制器(150),其耦接至闪存,并且包括用于保护数据避免在存储到闪存中时发生错误、并且用于在从闪存中取出数据时检测和/或校正数据中的错误的装置;数据处理单元(100),其耦接至控制器(150)并具有访问工作页(p)的通路,所述工作页(p)包括用户数据的第一段以及包含存储器可靠性指示符的管理信息的第二段;所述数据处理系统的特征在于数据重排列装置(105),其用于将工作页中的数据细分成多个段,每个段均包括一部分用户数据,并且最后一段还另外包括包含存储器可靠性指示符的管理信息;所述数据处理系统的特征还在于,控制器(150)被设置为连续为每个段生成冗余数据并且将各个连续段的内容连同其各自的冗余数据写入存储页(122)。5.根据权利要求4的数据处理系统,其中控制器(150)还被设置为取出从存储页(122)中得到的连续段的数据,并对每个段应用错误检测和/或校正,其中数据重排列装置还被设置为将各段的校正后数据合并到工作页(P)中以由数据处理单元使用,其中校正后的用户数据连续排列,并且其中可靠性指示符具有与存储页(122)中相同的相对位置。全文摘要一种数据处理系统,包括闪存(120),其具有划分成多个存储页(P’)的存储空间。每个存储页都包括用来指示存储器的存储区域的可靠性的存储器可靠性指示符。耦接至闪存的是用于闪存的控制器(150),其包括用于保护数据避免在存储到闪存中时发生错误、并且用于在从闪存中取出数据时检测和/或校正数据中的错误的装置。数据处理单元(100)耦接至控制器(150)并具有访问工作页(P)的通路,工作页(P)包括用户数据的第一段以及包含存储器可靠性指示符的管理信息的第二段。数据处理系统的特征在于数据重排列装置(105),其用于将工作页中的数据细分成多个段。每个段均包括一部分用户数据,并且最后一段还另外包括包含存储器可靠性指示符的管理信息。控制器(150)被设置为连续为每个段生成冗余数据并且将各个连续段的内容连同其各自的冗余数据写入存储页(122)。文档编号G11C29/00GK101558452SQ200780045123公开日2009年10月14日申请日期2007年12月3日优先权日2006年12月7日发明者伊沃·默格勒,罗伯特·曼宁,迈克尔·詹姆斯申请人:Nxp股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1