维持非易失性存储系统中的平均擦除计数的制作方法

文档序号:6753146阅读:316来源:国知局
专利名称:维持非易失性存储系统中的平均擦除计数的制作方法
技术领域
本发明通常涉及大量数字数据存储系统。更明确地说,本发明涉及有效维持擦除计数的系统和方法,其用于允许与非易失性存储系统的存储区域相关联的损耗在大体上所有的存储区域中扩展。
背景技术
归因于存储器系统压缩的物理尺寸和非易失性存储器可反复编程的能力,如闪存存储系统的非易失性存储器系统的使用量在日渐增长。闪存存储系统的压缩的物理尺寸促进了这些存储系统在越来越流行的装置中的应用。使用闪存存储系统的装置包括(但不限于)数字相机、数字摄像机、数字音乐播放器、手提式个人计算机和全球定位装置。反复重编程闪存存储系统中包括的非易失性存储器的能力使得可以使用和再使用闪存存储系统。
一般来说,闪存存储系统可包括闪存卡和闪存芯片组。闪存芯片组一般包括闪存组件和控制器组件。通常可配置闪存芯片组以装配在一个嵌入式系统中。所述等装配件或主机系统的制造商通常要求组件形式的闪存(flashmemory)以及其它组件,然后将闪存和其它组件装配成一个主机系统。
尽管非易失性存储器或,更具体地说,闪存系统中的闪存存储区块可以反复编程和擦除,但是该区块损坏之前(即,存储器开始变小之前),每个区块或物理位置仅可擦除一定的次数。也就是说,每个区块具有一个编程和擦除循环极限。在某些存储器中,在认为区块不能使用之前可以将区块擦除近一万次。在其它存储器中,在认为区块损坏之前可以将该区块擦除高达约十万次或者甚至一百万次。当一个区块损坏,从而导致闪存系统的整个存储容量的一部分使用量损失或性能显著下降时,闪存系统的使用者可能受到不利影响,例如丢失存储数据或不能存储数据。
在闪存系统内的区块或物理位置的损耗取决于每个区块编程的次数。如果将一个区块,更一般地说一个存储元件编程一次,然后实际上永不重编程,那么与所述区块相关联的编程和擦除循环的次数且因此损耗通常相对低些。然而,如果反复写入和擦除一个区块(例如,循环地),那么与所述区块相关联的损耗通常将相对高些。因为主机(例如,访问或使用闪存系统的系统)使用逻辑区块地址(LBA)访问存储在闪存系统中的数据时,所以如果主机反复使用相同的LBA写入和重写数据,那么闪存系统内的相同物理位置或区块就被反复写入和擦除,其应为所属领域的技术人员所了解。
因此,所需要的是用于有效地且大体上“透明地”在闪存存储系统中执行损耗平衡的一种方法和一种设备。也就是说,所需要的是一种促进损耗平衡处理的系统,其促使与闪存存储系统相关联的物理位置中的更为平均的损耗,而不需要显著使用计算资源。

发明内容
本发明涉及用于维持非易失性存储器系统的系统存储器中的平均擦除计数的系统和方法。根据本发明的一个方面,一种用于判定存储器系统的非易失性存储器中的多个区块中的每个区块擦除的平均次数的方法包括获得指示每个区块擦除的次数的每个区块的擦除计数。一旦获得所有的擦除计数,就对该等擦除计数求和,且通过大体上使该总和除以区块的数目而产生指示多个区块中的每个区块擦除的平均次数的平均擦除计数。
在一个实施例中,擦除计数是从区块获得的。在这个实施例中,擦除计数可从区块的冗余或耗用区域获得。在另一个实施例中,擦除计数是从存储器系统中的擦除计数区块获得的,该擦除计数区块含有多个区块中的每个区块的擦除计数。
通过维持一个平均擦除计数,可容易获得整个存储器系统中的区块的平均擦除次数的特征。当擦除区块时,可不指示区块被擦除了多少次。结果,与区块相关联的损耗量不易于判定或估计。使用平均擦除计数来指示这样的区块可能擦除的次数允许判定区块的损耗的合理的估计。同样,损耗平衡可更为有效地实现。
根据本发明的另一方面,数据结构包括第一指示符,其提供复数个区块中的每个可用区块的擦除次数的指示;和第二指示符,其指示复数个区块中所包括的区块的总数。在一个实施例中,数据结构还包括含有第一指示符和第二指示符的标头。
根据本发明的另一方面,用于大体上准备擦除区块以供使用的方法包括获得擦除区块,获得表征复数个区块中的每个区块擦除的次数的指示符,和将表征复数个区块中的每个区块擦除的次数的指示符存储在擦除区块中作为擦除区块擦除的次数的指示。在一个实施例中,所述方法还包括判定擦除区块的擦除次数的指示符何时有效,和当判定擦除区块擦除的次数的指示符有效时,将擦除区块擦除的次数的指示符存储在擦除区块中。在这个实施例中,获得表征复数个区块中的每个区块擦除的次数的指示符包括大体上仅当判定擦除区块的擦除次数的指示符无效时,获得表征复数个区块中的每个区块擦除的次数的指示符,且存储表征复数个区块中的每个区块擦除的次数的指示符包括大体上仅当判定擦除区块的擦除次数的指示符无效时,存储表征复数个区块中的每个区块擦除的次数的指示符。
通过阅读以下详细描述且学习图式的各种图,本发明的这些和其它优点将会变得显而易见。


通过参考与随附图式相结合的以下描述可最佳理解本发明,其中图1a是根据本发明的一个实施例的包括一个非易失性存储器装置的通常的主机系统的图解表示。
图1b是根据本发明的一个实施例的存储器装置(例如,图1a的存储器装置120)的图解表示。
图1c是包括一个嵌入式非易失性存储器的主机系统的图解表示。
图2是根据本发明的一个实施例的一部分闪存的图解表示。
图3是根据本发明的一个实施例的一个处理流程图,其说明与处理一个和一个闪存系统相关的初始化请求相关联的步骤。
图4是根据本发明的一个实施例的处理流程图,其说明与处理静态区块的一种方法相关联的步骤。
图5a是根据本发明的一个实施例的系统存储器的图解结构图表示。
图5b是根据本发明的一个实施例的普通区块、最不频繁擦除区块和最频繁擦除区块的图解表示。
图6是根据本发明的一个实施例的一种在整个存储器系统的系统存储器中执行区块交换/更新以允许区块更为平均的损耗的方法的图解表示。
图7是根据本发明的一个实施例的系统架构的图解结构图表示。
图8a是根据本发明的一个实施例的擦除计数区块的图解表示。
图8b是根据本发明的一个实施例的一个擦除计数区块中的一个页(例如,图8a的擦除计数区块800的页810a)的图解表示,且该页大体上被划分成多个位置。
图8c是根据本发明的一个实施例的一个擦除计数区块中的一个页(例如,图8a的擦除计数区块800的页810a)的图解表示,且该页大体上被划分成多个字节。
图8d是根据本发明的一个实施例的一个擦除计数区块中的一个页(例如,图8a的擦除计数区块800的页810a)的图解表示,其含有擦除计数和指示一个特定的区块不可用的一项。
图9是根据本发明的一个实施例的一个擦除计数区块的一个标头(例如,图8a的擦除计数区块800的标头820)的图解表示。
图10是根据本发明的一个实施例说明与在首先格式化非易失性存储器系统的非易失性存储器时,初始化一个擦除计数区块的一种方法相关联的步骤的处理流程图。
图11是根据本发明的一个实施例说明与响应一个初始化要求而更新一个擦除计数区块的一种方法相关联的步骤的处理流程图。
图12根据本发明的一个实施例说明与获得一个备用区块的擦除计数的一种方法相关联的步骤的处理流程图。
图13是根据本发明的一个实施例说明一种计算平均擦除计数的方法的处理流程图。
具体实施例方式
闪存存储系统中的非易失性存储器存储区块可以反复编程和擦除,但在区块损坏前每个区块通常仅可被擦除有限次,当区块损坏时,与包括损坏区块的闪存存储系统的总存储量的部分相关联的性能会发生相对显著的降级,而且存储在该部分的数据可能会丢失,或不可能在该部分存储数据。
为了增加区块在闪存存储系统中较为平均损坏的可能性,可以更为平均地利用区块。通过跟踪每个区块擦除的次数(例如通过利用擦除计数),可以更平均地使用系统中的存储器。一种擦除计数管理技术可以在与区块相关联的冗余区域中存储擦除计数,其跟踪特定区块的擦除次数。可在系统存储器中建立表格,其大体上使在使用中的区块与具有相对高的擦除计数的区块和具有相对低的擦除计数的区块有效分开。当擦除使用中的区块时,该区块可在适当时被“添加”到具有相对高的擦除计数的区块表或具有相对低的擦除计数的区块表中。同样,可从具有相对高的擦除计数的区块表或者具有相对低的擦除计数的区块表中将区块“移动”到区块映射表中,以大体上取代已从区块映射表进行重新指派的任何区块,区块映射表即使用中的一组区块表。
通过对区块进行分类,因为可以更有效地管理每个区块的使用而平均化与区块相关联的损耗,所以可以更平均地利用区块。另外,将区块分类为表使得能容易识别具有低擦除计数的区块和具有高擦除计数的区块,而且因此不必利用大量的计算资源。因此,损耗平衡相对有效的进行。结果可大体上延长了闪存系统的寿命而没有显著影响闪存系统的性能。
为了促进区块分类,在闪存系统中可分配一个擦除计数区块。这个区块可经配置以含有大体上所有区块的擦除计数,该等区块可以用于在闪存系统中存储数据。当擦除区块时,通常擦除了区块的擦除计数。通过在擦除计数区块中存储具有关联擦除计数的大体所有区块的擦除计数,可易于获得擦除区块的擦除计数,例如,通过读取来自擦除计数区块的擦除计数。
闪存系统或更为普遍的非易失性存储器装置一般包括闪存卡和芯片组。通常闪存系统和一个主机系统结合使用,使得主机系统可以将数据写入闪存系统或从闪存系统读取数据。然而,某些闪存系统包括嵌入式闪存系统和软件,该软件在主机上执行来大体上充当嵌入式闪存的控制器。先参看图1a,将描述包括一个非易失性存储器装置(例如,压缩闪存卡或嵌入式系统)的通常的主机系统。主机或计算机系统100通常包括系统总线104,其允许微处理器108、随机访问存储器(RAM)112和输入/输出电路116进行通信。应了解,主机系统100一般可包括其它组件,例如,显示装置和连网装置,其出于说明目的而未图示。
一般来说,主机系统100可以获取以下信息,其包括(但不限于)静态图像信息、音频信息和视频图像信息。这些信息可以实时获取,且可以无线方式传输到主机系统100。虽然主机系统100大体上可以是任何系统,但主机系统100一般是如数字相机、摄像机、蜂巢式通信装置、音频播放器或视频播放器的系统。然而,应了解,主机系统100通常大体上可以是存储数据或信息和检索数据或信息的任何系统。
应了解,主机系统100也可以是只能获取数据或只能检索数据的系统。也就是说,主机系统100可以是存储数据的专用系统,或主机系统100可以是读取数据的专用系统。举例而言,主机系统100可以是经配置仅用于写入或存储数据的存储记录器。或者,主机系统100可以是如MP3播放器的装置,其通常经配置来读取或检索数据,且不获取数据。
非易失性存储器装置120(在一个实施例中是一个可移除非易失性存储器装置)经配置而与总线104连接来存储信息。一种可选的接口区块130可允许非易失性存储器装置120直接和总线104连接。当存在时,输入/输出电路区块130用于减少总线104上的负载,如所属领域的技术人员将会了解的。非易失性存储器装置120包括非易失性存储器124和一个可选的存储器控制系统128。在一个实施例中,非易失性存储器装置120可实施于单个芯片或电路小片上。或者,可在一个多芯片模块上实施非易失性存储器装置120或在多个离散组件上实施,该等离散组件可以形成一个芯片组且可以一起用作非易失性存储器装置120。下文将关于图1b更详细地描述非易失性存储器装置120的一个实施例。
非易失性存储器124(例如,如NAND闪存的闪存)经配置以存储数据,使得如果需要可以访问及读取数据。适当时也可以擦除存储在非易失性存储器124中的数据,但应了解,非易失性存储器124中的某些数据可以是不可擦除的。一般可通过存储器控制系统128控制存储数据,读取数据和擦除数据的过程,或当没有存储器控制系统128时,可通过由微处理器108执行的软件来控制。可以管理非易失性存储器124的运作,使得通过实质促使非易失性存储器124的区产生大体平均的损坏而大体上最大化非易失性存储器124的寿命。
通常将非易失性存储器装置120描述为包括一个可选的存储器控制系统128,即一个控制器。通常,非易失性存储器装置120可以包括独立芯片用于非易失性存储器124和存储器控制系统128(即,控制器)功能。举例而言,当包括(但不限于)PC卡、压缩快闪卡、多媒体卡和安全数字卡的非易失性存储器装置包括可在一个独立的芯片上实施的控制器时,其它非易失性存储器装置可不包括在一个独立的芯片上实施的控制器。在一个实施例中,其中非易失性存储器装置120不包括独立的存储器和控制器芯片,可将存储器和控制器功能集成在单个芯片中,如所属领域的技术人员将会了解的。或者,可由微处理器108提供存储器控制系统128的功能,例如在一个实施例中,其中非易失性存储器装置120不包括存储器控制器128,如上文所讨论的。
参考图1b,根据本发明的一个实施例将更详细地描述非易失性存储器装置120。如上所述,非易失性存储器装置120包括非易失性存储器124且可包括存储器控制系统128。存储器124和控制系统128或控制器可以是非易失性存储器装置120的组件,但是当存储器124是嵌入式NAND装置时,非易失性存储器装置120可不包括控制系统128,如参考图1c将论述的。存储器124可以是形成于半导体基板上的存储器单元的阵列,其中通过在存储器单元的个别存储元件上存储两个或两个以上电荷电平之一,将一个或一个以上的数据位存储在该等个别的存储器单元上。对于该等系统来说,非易失性快闪电可擦除可编程只读存储器(EEPROM)是普通类型存储器的一个实例。
当存在时,控制系统128通过总线15与正在使用存储器系统来存储数据的主计算机或其它系统通信。总线15通常是图1a的总线104的一部分。控制系统128还控制存储器124(其可包括存储器单元阵列11)的运作来写入主机提供的数据,读取主机请求的数据且执行操作存储器124的各种内务处理功能。控制系统128通常包括一个通用微处理器,其具有关联的非易失性软件存储器、各种逻辑电路等。一般还包括一个或一个以上状态机用于控制特定例行程序的性能。
一般由控制系统128或微处理器108通过地址解码器17定址存储器单元阵列11。解码器17可对门极和阵列11的位线施加校正电压以将数据编程到由控制系统128定址的一组存储器单元中,从其中读取数据或对其进行擦除操作。额外的电路19可包括控制施加到阵列元件的电压的编程驱动器,其取决于待编程入一组定址的单元的数据。电路19还可包括感应放大器和必要用于从一组定址的存储器单元读取数据的其它电路。待编程入阵列11的数据或最近从阵列11读取的数据可存储在缓冲存储器21中,该缓冲存储器既可在控制系统128的外部也可在控制系统128的内部,如图示。控制系统128通常还可含有用于临时存储命令和状态数据等的各种寄存器。
阵列11被划分为许多区块0-N个存储器单元。对于快闪EEPROM系统来说,可将区块作为擦除的最小单元。也就是说,每个区块可含有最小数目的一起擦除的存储器单元。每个区块通常被划分为许多页,如图2中说明。页可以是编程的最小单元。也就是说,一个基本的编程操作可将数据写入存储器单元的最小值一个页中或从其中读取数据。数据的一个或一个以上的区段通常存储在每个页内。如图1b所示,一个区段包括使用者数据和耗用数据。耗用数据通常包括错误校正代码(ECC),其从区段的使用者数据计算而得。当将数据编程入阵列11时,控制系统128的一部分23可计算ECC,且当从阵列11读取数据时也可检查ECC。或者,ECC可存储在与其所属的使用者数据不同的页或不同的区块中。
使用者数据的区段通常是512个字节,对应于磁盘驱动器中的扇区的大小。尽管应了解,耗用数据中所包括的字节数目可以有很大变化,但是耗用数据通常是附加的16个字节。数据的一个区段最一般是包括在每个页中,但两个或两个以上的区段可形成一个页。通常任何数目的页都可形成一个区块。举例而言,可由8个到512,1024个页或更多的页形成一个区块。选择区块数目来为存储器系统提供所要的数据存储容量。阵列11可被划分为一些子阵列(未图示),每个子阵列含有一定比例的区块,其在某种程度上相互独立运作以增加执行各种存储器操作的并行度。在美国专利第5,890,192号中描述了使用多个子阵列的实例,其全文以引用的方式并入本文中。
在一个实施例中,将如NAND闪存的非易失性存储器嵌入系统中,例如,主机系统。图1c是包括一个嵌入式非易失性存储器的主机系统的图解表示。主机或计算机系统150通常包括系统总线154,其允许微处理器158、RAM 162和输入/输出电路166及主机系统150的其它组件(未图示)进行通信。非易失性存储器174(例如,闪存)允许将信息存储在主机系统150中。在非易失性存储器174与总线154之间可以提供接口180以使信息可从非易失性存储器174中读取或将其写入非易失性存储器174中。
通过微处理器158可以管理非易失性存储器174,该微处理器有效地执行经配置以控制非易失性存储器174的软件和固件之一或两者。也就是说,微处理器158可以运行代码装置(未图示),即,软件代码装置或固件代码装置,其允许控制非易失性存储器174。这些代码装置,可以使非易失性存储器174中的物理区块被定址,并可以使信息存储在物理区块中或从其中读取或从其中擦除,这些代码装置可以是封装有微处理器158内部CPU、独立快闪ROM或在非易失性存储器174内部的闪存,其将在下文中描述。
当连续对图1a的非易失性存储器124的一个特定区(例如存储元件)编程(例如反复地写入和擦除)时,这个特定区域一般比不连续编程的区域损坏得快。为了有效地“平均化”非易失性存储器124中的不同的区域的损耗,可大体上自动地执行损耗平衡,使得连续编程的区域进行较少的编程,而不连续编程的区域进行较多的编程。
一般地,为了执行损耗平衡,一个区块,例如,与反复编程的物理位置关联的一组区段可以和与不反复编程的物理位置关联的一个区块进行交换。也就是说,经过反复编程且随之擦除的物理区块可以与不经常编程和擦除的物理区块进行交换。
在本发明的一个实施例中,为了易于判定一个特定的物理区块是不是经过反复编程和擦除,而将一个擦除计数存储在区块中。也就是说,维持一个跟踪区块发生多少次擦除的计数器且在区块每次擦除时加1。这样的擦除计数可以用来便于判定一个特定的区块是否应该和另一个不经常擦除的区块进行交换。图2是根据本发明的一个实施例的一部分闪存的图解表示。闪存200可被划分为多个页204。一般含有大约512个字节的使用者数据的每个页204实际上包括一个冗余区域206,例如,页204a包括冗余区域206a。每个冗余区域206或耗用区域可包括高达约16个字节的信息,该信息通常包括(但不限于)一个组识别符216、一个更新索引212和一个擦除计数214。
通常,区块210中包括任何数目的页204。尽管应了解,区块210中所包括的页204的数目可以有很大变化,但为了便于说明,区块210中显示为包括页204a、204b。在所述实施例中,区块210可经配置以包括约64个页。举例而言,当闪存200包括约512兆位(Mb)时,闪存200可实际被划分为约2048个区块,每个区块具有64个页。
如先前所提到的,每次从关联的区块擦除使用者数据时擦除计数214会加1。举例而言,每次从区块210擦除数据时,擦除计数214(其与区块210关联)会加1。因为区块210中所包括的每个页204a、204b通常具有擦除计数214,所以在擦除区块210时与每个页204a、204b相关联的擦除计数214会递增。
一般来说,当擦除含有数据的区块时,区块的数据区域和冗余区域都被擦除或清空。通常将擦除区块添加到备用区块池中,所述备用区块池含有具有比其它擦除区块(例如,其它表的擦除区块)的擦除计数小的擦除计数的擦除区块。备用区块表实质上可以是最不频繁擦除区块表,在下文会有所描述。在本发明的一个实施例中,将具有大擦除计数的擦除区块添加到含有比其它表的擦除区块大的擦除计数的擦除区块的池中。含有具有大擦除计数的擦除区块的池可以是最频繁擦除区块表,其在下文也有所描述。一个刚擦除的区块的擦除计数会递加1,且取决于计数值而被保存在最不频繁擦除区块表或最频繁擦除区块表中。
返回到图2,在初始化请求期间可访问擦除计数,例如擦除计数214。当出现下列情况时可发出初始化请求,例如,当向一个系统(例如包括嵌入式闪存的系统)供电时,当系统内的备用区块运行减慢时,当使用者发出平衡区块分配的请求时,以及当使用者发出使区块使用更平均的请求时。图3是根据本发明的一个实施例的一个处理流程图,其说明与处理一个有关闪存系统的初始化请求相关联的步骤。一般来说,可以通过使用者起始初始化请求或(例如)周期性地或当满足触发条件时通过与闪存系统相关联的控制器大体上自动起始初始化请求。响应初始化请求的程序300在步骤304开始,其中实际接收初始化请求。可通过与待初始化的闪存通信的控制器或处理器来接收初始化请求。例如,可由使用者通过主机在供电时或当平衡区块分配时提出这个请求。
一旦接收到初始化请求,就在步骤306中获得平均擦除计数。在一个实施例中,将平均擦除计数存储被写入与该系统相关联的NAND存储器中的擦除计数区块中,但应了解,平均擦除计数可被存储在或写入与结构相关联的NAND存储器中的大体上任何的数据结构中。所述擦除计数区块(ECB)含有平均擦除计数且每个区块的擦除计数存储于闪存的一个区块中。应了解,当创建一个擦除计数区块时(例如,当最初格式化所述系统时),通常将在表中的平均擦除计数和每一区块的擦除计数初始化为零值。在下文将关于图8a描述擦除计数区块。获得平均擦除计数之后,便获得系统中的大体上所有区块的擦除计数。如上文关于图2所述,含有数据的特定区块的擦除计数可以存储在与该区块相关联的冗余区域中。因此,获得含有数据的大体上所有区块的擦除计数可以包括访问与每个区块相关联的冗余区域,并将每个擦除计数存储在擦除计数区块中。
在初始化请求时,从擦除计数区块获得擦除区块的擦除计数。因为区块的冗余区域已被擦除,所以擦除计数区块通常保持其值。当关闭整个系统时,通常产生一个终止请求,使得擦除计数表经更新而含有大体上所有的区块的最新的擦除计数。在任何给定时刻,一个区块属于最频繁擦除区块表、最不频繁擦除区块表、擦除计数区块或属于区块映射表。属于擦除计数区块的区块的擦除计数存储在区块的冗余区域中。含有数据的区块的擦除计数通常属于区块映射表且存储在冗余区域中。属于区块映射表的擦除区块的擦除计数具有零擦除计数,这是因为该区块实际从未使用。从最不频繁擦除区块表或最频繁擦除区块表中的区块获得擦除计数涉及从该表中得到该值,这是因为该等表的每一项通常含有擦除区块的区块号与其擦除计数。当完成初始化请求的处理时,通常使用所有区块的当前擦除计数更新该擦除计数区块。
在步骤320中,在系统存储器(例如,主机系统存储器)中分配区块映射表。所属领域的技术人员应了解,区块映射表可经配置以提供在逻辑区块地址(LBA)与物理区块地址(PBA)之间的映射。此外,在步骤320中也分配最频繁擦除区块表和最不频繁擦除区块表。
通常确定最频繁擦除区块表的大小或另外配置最频繁擦除区块表以有效地保持与经过最频繁擦除的擦除区块有关的信息。也就是说,最频繁擦除区块经配置以保持有关系统中具有最高擦除计数的擦除区块的信息,例如,擦除计数和映射信息。类似地,通常确定最不频繁擦除区块表的大小或另外配置最不频繁擦除区块表以容纳有关具有最低擦除计数的擦除区块的信息。尽管最频繁擦除区块表的大小和最不频繁擦除区块表的大小可以有很大变化,但是该等大小取决于待指派为最频繁擦除的区块的数目和待指派为最不频繁擦除的区块的数目。通常,一般确定最频繁擦除区块表的大小以容纳比最不频繁擦除区块表少的擦除区块的信息。
举例而言,可确定最频繁擦除区块表的大小以容纳约十八个擦除区块的信息,而可确定最不频繁擦除区块表的大小以容纳与约七十个擦除区块相关的信息。或者,可确定最频繁擦除区块表的大小以容纳约十个擦除区块的信息,而可确定最不频繁擦除区块表的大小以容纳约五十个擦除区块的信息。
在步骤320分配表之后,在步骤324中识别擦除区块。接着,在步骤328中,可以将“N”擦除区块指派为最频繁擦除区块并实质上指派给最频繁擦除表。在一个实施例中,“N”擦除区块可以是通过比较所有的擦除计数而判定的具有最高擦除计数的“N”擦除区块。或者,可基于与在步骤306所获得的平均擦除计数的比较而判定存储在最频繁擦除区块表中的“N”擦除区块。例如,“N”擦除区块可以是具有至少比平均擦除计数高一个给定百分比(例如,约25%)的擦除计数的“N”擦除区块。
一旦实际填充最频繁擦除区块表,就可以识别“M”擦除区块且实际上在步骤332中将其指派给最不频繁擦除区块表。该等“M”擦除区块一般可以是具有与该系统相关联的所有擦除区块的最低擦除计数的“M”擦除区块,或该等“M”擦除区块可以是具有至少比平均擦除计数低一个给定百分比的擦除计数的“M”擦除区块。该等“M”擦除区块实际上是备用区块,在适当时会将其指派给区块映射表。
在步骤336中将剩余的擦除区块(即,未指派给最不频繁擦除区块表或最频繁擦除区块表的擦除区块)与“未擦除”区块一起指派给区块映射表。换句话说,使剩余擦除区块和含有非相关冗余区域中的数据的区块与区块映射表产生关联。
在(例如)用与对应的区块相关的擦除计数和映射信息有效填充区块映射表、最不频繁擦除区块表和最频繁擦除区块表之后,在步骤338中可以判定平均擦除计数。判定平均擦除计数通常涉及对在步骤308中获得的个别区块的擦除计数求和,并用区块总数除该总和。虽然可响应初始化请求而判定平均擦除计数,但应了解,可大体上在任何时候更新或另外判定平均擦除计数。下文将相关图13描述与计算平均擦除计数的一种方法关联的步骤。
将在步骤338中计算出的平均擦除计数存储在与该系统相关联的擦除计数区块中。如先前所提到的,将该平均擦除计数存储在一个擦除计数区块中,该平均擦除计数被写入与该系统相关联的NAND存储器中。在将平均擦除计数存储在该擦除计数区块中后,可以在步骤342中处理静态区块或含有数据并具有相对低的关联擦除计数的区块。下文将相关图4描述与处理静态区块的一种方法相关联的步骤。一旦处理完静态区块,就完成了处理初始化请求的过程。
在与闪存关联的一组区块中,通常在任何给定时刻具有被擦除的区块和含有数据(即使用者数据)的区块。含有数据的某些区块可认为是“普通”区块,而其它区块可认为是静态区块。静态组态是含有很少改变的数据的区块。换句话说,很少擦除静态区块。通常,静态区块可以与存储在闪存中的相对旧的文献、与存储在闪存中的可执行程序或与存储在闪存中的操作系统相关联。静态区块一般具有大体上比在闪存内的大部分区块的擦除计数低的擦除计数。在一个实施例中,如果区块的擦除计数低于与闪存系统关联的平均擦除计数一定百分比(例如大约20%),就可以认为含有数据的区块是静态区块。
因为静态区块含有很少改变的数据,所以可以将包含在静态区块中的数据复制到具有相当高的擦除计数的区块中。也就是说,当特定物理区块的内容相对是静态的且因此,一般不改变时,实际上可以将该等内容重新指派给具有相对高的擦除计数的不同物理区块以便使用具有相对低的擦除计数的原物理区块用于存储较频繁改变的内容。将参看图4,根据本发明的一个实施例描述与处理静态区块相关联的步骤,即图3的步骤342。在步骤404开始处理系统的静态区块的过程342,在步骤404中访问未擦除区块(例如,区块“A”)的擦除计数。一旦访问了区块“A”的擦除计数,就在步骤408中作出有关未擦除区块“A”的擦除计数和与该系统相关联的平均擦除计数相比是否很低的判定。
尽管可以基于大体上任何适当的标准判定未擦除区块“A”的擦除计数与平均擦除计数相比是否低,但是在一个实施例中,基于区块“A”的擦除计数是否具有比与平均擦除计数的几分之一相关联的值低的值作出该判定。举例而言,当擦除计数小于平均擦除计数的预定百分比时,可以认为区块“A”的擦除计数低。
如果在步骤408中判定区块“A”的擦除计数与平均擦除计数相比不是很低,就指示该区块“A”很可能不是静态区块。
应了解,尽管即使不认为区块“A”的擦除计数很低,区块“A”也可以是静态区块,但是在这种情况下的区块“A”的擦除计数实际上不触发区块“A”与另一区块的交换。从而完成静态区块的处理过程。
或者,如果在步骤408中判定区块“A”的擦除计数与平均擦除计数相比很低,就暗示可以将区块“A”的内容写入具有相对高的擦除计数的区块中,使得具有其低擦除计数的区块“A”可以自由的用于存储相对频繁改变的数据。换句话说,当与平均擦除计数相比区块“A”的擦除计数很低时指示该区块“A”是静态区块。同样,处理流程从步骤408移到步骤412,其中将区块“A”识别为静态区块。一旦将区块“A”识别为静态区块,在步骤416中,可从由最频繁擦除区块表识别的一组最频繁擦除区块中获得一个区块,即区块“B”。
获得区块“B”之后,在步骤420中将区块“A”的内容复制到区块“B”中。也就是说,在步骤420中将区块“A”中含有的使用者数据复制到区块“B”中。一旦将区块“A”的内容复制到区块“B”中,就在步骤424擦除区块“A”。通常,当擦除区块“A”时,与区块“A”相关联的擦除计数递增。在步骤428中,将一个区块(例如区块“C”)从最不频繁擦除区块组移到最频繁擦除区块组中,使得区块“C”的关联从最不频繁擦除区块表变为最频繁擦除区块表。换句话说,从最不频繁擦除区块表分离区块“C”且使其与最频繁擦除区块表产生关联。此移动允许有效地打开最不频繁擦除区块表中的空间以容纳区块“A”,其具有低擦除计数并因此是该系统中最不频繁擦除区块之一。通常,区块“C”是最不频繁擦除区块表中的具有最高擦除计数的区块。
在将区块“C”从最不频繁擦除区块组中移出或另外将区块“C”从最不频繁擦除区块表中分离后,处理流程从步骤428移到步骤432,其中在步骤432中实际上将区块“A”从区块映射表移到最不频繁擦除区块表中。接着,在步骤434中,使包括先前在区块“A”中含有的内容的区块“B”与区块映射表产生关联。所属领域的技术人员应了解,将区块“B”“移动”到区块映射表通常包括将与区块“A”相关联的逻辑区块地址映射更新为目前与区块“B”相关联。当在最频繁擦除区块表中出现有关区块“C”的信息,在区块映射表中出现有关区块“B”的信息,且在最不频繁擦除区块表中出现有关区块“A”的信息时,就完成了处理静态区块的过程。应了解,可以重复过程342直到已识别并处理完与系统相关联的大体上所有的静态区块。
一般来说,当将初始化请求发送到整个闪存系统时,在系统存储器(例如图1a的RAM 112)中可创建区块映射表、最不频繁擦除区块表和最频繁擦除区块表。为了建立表,可以首先在系统存储器中分配空间以容纳该等表。
如上所提到的,在系统存储器中创建区块映射表、最不频繁擦除区块表和最频繁擦除区块表,以及平均擦除计数。平均擦除计数和每个区块的擦除计数也会写入擦除计数区块。图5a是根据本发明的一个实施例的系统存储器的图解结构图表示。系统存储器454和闪存460包括在整个系统中,且(例如)实际上可以是存储卡的组件或如NAND存储器的闪存460嵌入的主机装置的组件。系统存储器454经配置以存储区块可能相关联的区块映射表462。通常,可使用区块映射表462以使LBA与和闪存460相关联的物理区块产生关联。
系统存储器454还保持有最不频繁擦除区块表466和最频繁擦除区块表470,该等表和区块映射表462一样,一般响应初始化请求而形成。当格式化整个闪存系统时创建平均擦除计数474,其经配置以保持闪存460中的区块的平均擦除计数。在一个实施例中,擦除计数区块480经配置以含有在闪存460中的大体上所有区块465的擦除计数。每发出一次初始化请求,可计算出更新的平均擦除计数,并将其存储在擦除计数区块480中。
图5b是根据本发明的一个实施例的一组“普通”区块、一组最不频繁擦除区块和一组最频繁擦除区块的图解表示。一组区块502包括区块514,其可以是通常含有使用者数据的普通或静态区块,或其可以被擦除但不是最频繁擦除区块或最不频繁擦除区块。一组最不频繁擦除区块506通常包括具有整个系统中的擦除区块的最低的擦除计数的区块518,而一组最频繁擦除区块510通常包括具有整个系统中的擦除区块的最高的擦除计数的区块522。一般来说,区块518实际用作备用区块。
当擦除区块514时,可判定擦除区块514是具有相对低的关联的擦除计数或相对高的关联的擦除计数。当擦除区块514具有相对低的关联的擦除计数时,可将擦除区块514添加到最不频繁擦除区块组506。另一方面,当擦除区块514具有相对高的关联的擦除计数时,可将擦除区块514重新指派给最频繁擦除区块组510。
可大体上具有任何大小的最不频繁擦除区块组506可以是一个排序组。也就是说,可基于擦除计数来大体上对区块518排序。通常在一个对应的最不频繁擦除区块表中(未图示)反映该排序,该表中含有和区块518相关联的项。举例而言,每次一个新的区块518被移到最不频繁擦除区块组506或经添加到其中或另外与其相关联时,可基于擦除计数实质上对区块518排序,使得在最不频繁擦除区块组506中的最不频繁擦除区块518可以是将被重新指派给(例如)组502的下一个区块518。换句话说,当需要将复制入数据的一个新区块时,使用最不频繁擦除区块表识别区块518的擦除最少的区块518,且将其从最不频繁擦除区块组506中取出。通常,当擦除含有不需要的数据的区块514时,该区块514可存储在最不频繁擦除区块组506中,且因此可更新最不频繁擦除区块表,也就是说,对应于添加区块的一项会包括在最不频繁擦除区块表中。
和存储在最不频繁擦除区块组506中的区块518类似的最频繁擦除区块组510中的区块522也可基于擦除计数而进行大体上排序。通常可通过对用于识别区块522的最频繁擦除区块表中的项(未图示)进行排序而实施排序。在一个实施例中,可计算出与区块522相关联的平均擦除计数,即可判定最频繁擦除区块组510的平均擦除计数。当擦除组502的区块514,且发现擦除区块514的擦除计数超过最频繁擦除区块组510的平均擦除计数一个给定的百分比(例如大于约20%)时,可将擦除区块514添加到最频繁擦除区块组510。当新区块522被实际添加到最频繁擦除区块组510中时,可将具有最低擦除计数的频繁擦除的区块组510中的区块522重新指派给组502中。通常可通过更新关联区块映射表、最不频繁擦除区块表和最频繁擦除区块表(未图示)而反应该等重新指派。
当擦除或更新组502中所包括的区块514时,通常发生组502、最不频繁擦除区块组506和最频繁擦除区块组510之间的区块的交换或更新。或者,对于将经分配而用于组502中的备用区块来说,可大体上在任何需要的时候发生区块的交换或更新。下面参考图6,将根据本发明的一个实施例描述在整个存储器系统中(例如具有嵌入式闪存的主机系统)执行区块交换或更新以允许区块的更为平均的损耗的一种方法。在步骤604开始执行区块交换或更新的过程600,在步骤604中,从区块映射表“获得”一个区块(例如区块“Y”)或另外使用区块映射表进行识别。所获得的区块是将被实际上从区块映射表中交换出用于复制或更新其内容的区块。
一旦获得区块“Y”,在步骤608中,从最不频繁擦除区块表有效获得一个区块(例如区块“X”)。也就是说,使用最不频繁擦除区块表来识别适当的备用区块以从最不频繁擦除区块组中获得备用区块。一般来说,区块“X”是在最不频繁擦除区块组中具有最低擦除计数的区块,但应了解,区块“X”可以大体上是和最不频繁擦除区块组且随之的最不频繁擦除区块表相关联的任何区块。在步骤612中,将存储在区块“Y”中的数据内容或即将取代区块“Y”的原内容的新内容复制到区块“X”中。
在步骤616中,在将区块“Y”的内容复制到区块“X”中之后,将区块“X”实际上移到区块映射表中或与其相关联。换句话说,有效更新与区块“Y”和区块“X”相关联的映射,使得先前映射到区块“Y”的LBA重新映射到区块“X”。当区块“X”被实际上移到区块映射表中时,在步骤620中擦除区块“Y”。详细来说,可使用大体上任何适合的技术擦除存储在区块“Y”中的数据内容(例如,使用者内容)。在步骤624中存储在与区块“Y”相关联的冗余区域中的与区块“Y”相关联的擦除计数加1以指示区块“Y”已再一次被擦除。应了解,在一个实施例中,实际存储在擦除计数区块中的“Y”的擦除计数可以更新。
在步骤628中,识别在最频繁擦除区块表中具有最低擦除计数的区块。如上所述,在一个实施例中,在最频繁擦除区块表中参考的区块根据其各自的擦除计数进行排序。对区块排序可包括在最频繁擦除区块表中根据区块的擦除计数定位区块的参考。因此,识别具有最低擦除计数的区块通常涉及访问经配置以容纳具有最低擦除计数的区块参考的最频繁擦除区块表中的位置的区块参考。
一旦识别出在最频繁擦除区块表中参考的具有最低擦除计数的区块,处理流程从步骤628移到步骤632,在该步骤中,判定区块“Y”的擦除计数是否大于在最频繁擦除区块表中参考的具有最低擦除计数的区块的擦除计数。如果判定区块“Y”的擦除计数不大于在最频繁擦除区块表中参考的具有最低擦除计数的区块的擦除计数,那么指示区块“Y”不能认为是频繁擦除的。因此,处理流程从步骤632进行到步骤636,在步骤636中,将区块“Y”移到最不频繁擦除区块组中且实际上移到最不频繁擦除区块表中,即,将对应于区块“Y”的一项添加到最不频繁擦除区块表中。应了解,在一个实施例中,将区块“Y”移到最不频繁擦除区块组中可包括使用每个区块的擦除计数大体上重新对最不频繁擦除区块表中的所有的区块参考进行排序。在将区块“Y”实际上移到最不频繁擦除区块表中之后,便完成了交换或更新区块的过程。
回到步骤632,如果步骤632的判定是区块“Y”的擦除计数超过了与最频繁擦除区块表相关联的最低擦除计数,那么指示区块“Y”应该被移到最频繁擦除区块组中且实际上移到最频繁擦除区块表中。为了给最频繁擦除区块表中待参考的区块“Y”留出空间,实际上需要从最频繁擦除区块表中移除一个区块,例如最频繁擦除区块表中参考的具有最低擦除计数的区块。同样,在步骤640中,在最频繁擦除区块表中参考的具有最低擦除计数的区块被移到最不频繁擦除区块组中,且实际上被移到最不频繁擦除区块表中。将区块移到最不频繁擦除区块组中可包括根据每个区块的擦除计数对最不频繁擦除区块表中的区块参考重新排序。
在将最频繁擦除区块表中的具有最低擦除计数的区块移出最频繁擦除区块表之后,在步骤644中,将区块“Y”实际上移到最频繁擦除区块表中。在一个实施例中,将区块“Y”移到最频繁擦除区块组中且因此实际上移到最频繁擦除区块表中可包括根据每个区块的擦除计数对最频繁擦除区块重新排序,包括区块“Y”。当区块“Y”实际上被移到最频繁擦除区块表中时,便完成了交换或更新区块的过程。
一般来说,以软件提供与维护表、处理初始化请求和执行损耗平衡相关联的功能(例如,响应交换或更新区块的请求)作为(例如)程序代码装置或作为主机系统的固件。图7显示与提供到一个主机系统以进行损耗平衡的软件或固件相关联的一个合适的系统架构的一个实施例。一个系统架构700通常包括各种模块,该等模块可包括(但不限于)应用接口模块704、系统管理器模块708、数据管理器模块712、数据完整性管理器716和装置管理器和接口模块720。一般来说,可使用可由处理器(例如图1a的处理器108)访问的软件代码装置或固件来实施系统架构700。一般来说,应用接口模块704可经配置来与闪存(未图示)进行通信,或更一般的,与媒体进行通信以在初始化请求的过程期间初始化媒体。应用接口模块704还可从与媒体相关联的区段、簇或页进行读取和写入。通常,除了与媒体进行通信之外,应用接口模块704还与系统管理器模块708和数据管理器模块712进行通信。
一般来说,应用接口模块704经配置以与主机、操作系统或使用者直接进行通信。应用接口模块704还与系统管理器模块708和数据管理器模块712进行通信。当使用者要读取、写入或格式化闪存时,使用者发送请求到操作系统,该等请求传到应用接口模块704。应用接口模块704依据请求而将请求引导到系统管理器模块708或数据管理器模块712。
系统管理器模块708包括系统初始化子模块724、擦除计数区块管理子模块726和电源管理区块子模块730。系统初始化子模块724通常经配置以能处理初始化请求,且通常与擦除计数区块管理子模块726进行通信。在一个实施例中,系统初始化子模块724允许更新区块的擦除计数,且大体上负责创建最不频繁擦除区块表和最频繁擦除区块表。
擦除计数区块管理子模块726包括促使存储区块的擦除计数的功能(例如,在擦除计数区块中)和促使计算平均的擦除计数的功能及使用个别的擦除计数进行更新的功能。换句话说,擦除计数区块管理子模块726实际上允许对擦除计数分类并允许维持一个平均的擦除计数。另外,在一个实施例中,擦除计数区块管理子模块726也大体上在整个系统初始化请求期间使擦除计数区块中大体上所有区块的擦除计数同步。虽然擦除计数区块管理子模块726可经配置以使平均擦除计数存储于擦除计数区块中,但是应了解,电源管理区块子模块730可作为替代用于存储平均擦除计数。
除了与应用接口模块704通信之外,系统管理器模块708还与数据管理器模块712和装置管理器和接口模块720进行通信。与系统管理器模块708和应用接口模块704通信的数据管理器模块712可包括提供页或区块映射的功能。数据管理器模块712还可包括与操作系统和文件系统接口层相关联的功能。
装置管理器和接口模块720通常提供一个闪存存储器接口,且包括与硬件提取相关联的功能,例如I/O接口,所述装置管理器和接口模块与系统管理器模块708、数据管理器712和数据完整性管理器716进行通信。数据完整性管理器模块716提供ECC处理及其它功能。
如上所述,非易失性存储器系统中的每个区块的擦除计数可存储在擦除计数区块中,其为存储在系统中或与该非易失性存储器系统关联的NAND存储器中的保留区块。所述擦除计数区块除含有每个区块的擦除计数之外还可以含有平均擦除计数。图8a是根据本发明的一个实施例的擦除计数区块的图解表示。一般确定擦除计数区块800的大小使得擦除计数区块800对包括擦除计数区块800的整个非易失性系统中每个区块(即物理区块)包括一定数目的位。可以选择实际上分配给每个区块的位数使得通过已分配的位可容纳区块的整个擦除计数。在一个实施例中,擦除计数区块800可对每个区块包括约三个字节,这是因为三个字节一般足以容纳约一百万的擦除计数。当在包括每区块64个页的约2048个区块的512Mb系统中为每个区块分配三个字节时,可以确定擦除计数区块800的大小以包括约12个页,例如,约六千个字节。
擦除计数区块800包括页810,如所属领域的技术人员应了解的,该等页常包括可用于存储如擦除计数的数据的约512个字节。如图示,第一页810a可经配置以含有区块“0”到“169”的擦除计数项,而第二页810b可经配置以含有区块“170”到“339”的擦除计数项。如下文将有关图8b和8c所描述的,因为第一页810a的字节3-5经配置以含有对应于区块“1”的擦除计数项,所以当写入或读取区块“1”(即,物理区块“1”)的擦除计数时,可以访问第一页810a的字节3-5。
除了包括页810之外,擦除计数区块800还包括一般可处于擦除计数区块800中的大体任何地方的标头820。下文将参考图9讨论标头820,标头820可以是擦除计数区块800中的页,其包括和非易失性闪存相关的信息,该非易失性闪存包括与存储在页810中的擦除计数相关联的区块。
图8b是根据本发明的一个实施例在一个擦除计数区块中的一个页(例如,图8a的擦除计数区块800的页810a)的图解表示。页810a经配置以保持有对应于约一百七十个物理区块的项830。如图示,项830含有区块的擦除计数使得页810a中的第一项830a经配置以含有区块“0”的擦除计数,且第二项830b经配置以含有区块“1”的擦除计数。页810a的最末项830d经配置以保持区块“169”的擦除计数。
每一项830包括大体上相同的字节数。如图8c所示,对应于区块“0”的项830a可以是在页810a中的字节0-2,而对应于区块“2”的项830c可以是在页810a中的字节6-8。如先前提到的,每一项830可以包括大约三个字节,但应了解,在每一项830中的字节数和随之的页810a中的项830的数目可以变化。举例而言,在一个实施例中,每一项830可以包括大约四个字节。
尽管页810a中的每一项830经配置以含有一个擦除计数,但是项830可不必含有一个擦除计数。举例而言,当(如)由于生产或制造缺陷导致特定区块不可用且不可以写入或从其中读取时,该区块一般将不具有擦除计数。因而,如图8a的擦除计数区块800的擦除计数区块一般不会具有含有用于不可用区块的擦除计数的项。或者,替代保持擦除计数,不可用区块的项830可以保持经配置以将区块识别为不可用的指示符或标记。
图8d是根据本发明的一个实施例在一个擦除计数区块中的一个页(例如,图8a的擦除计数区块800的页810a)的图解表示,其含有擦除计数和指示一个特定的区块不可用的一项。当一个区块可用时,或可以写入或读取时,该区块一般将具有擦除计数。举例而言,当擦除区块“0”一百次时,页810a的项830a可以含有值“100”,该页经配置以含有对应于区块“0”的一个擦除计数。类似地,当擦除区块“1”三十次时,页810a的项830b可含有值“30”。
如果已经将区块“2”识别为不可用的区块,例如通过存储在区块“2”中的标记,那么对应于区块“2”的页810a的项830c可以含有经配置以指示区块“2”不可用的标记。在一个实施例中,在项830c中的标记“FFFFFF”可指示由于制造缺陷区块“2”不可用。应了解,大体上任何标记可用于指示区块不可用。
如上文的讨论,如图8a中的擦除计数区块800的擦除计数区块一般包括标头820,在一个实施例中,该标头是擦除计数区块800中的页,其含有一般涉及非易失性存储器系统中的区块的信息。下面参考图9,将根据本发明的一个实施例描述擦除计数区块的标头,例如,图8a的擦除计数区块800的标头820。标头820可包括可用于存储信息的约512个字节,该标头可处于擦除计数区块中的大体任何地方。存储在标头820中的信息一般包括签名850a和划分信息850b。签名850a可用于安全核查。
虽然平均擦除计数可存储在非易失性存储器系统的系统存储器中的大体任何地方,但是,在所述实施例中,平均擦除计数存储成标头820中的信息850b。
当将电源提供给包括擦除计数区块的非易失性存储器系统时,一般初始化或另外创建擦除计数区块。换句话说,当首先格式化非易失性存储器系统的非易失性存储器时一般初始化擦除计数区块。参考图10,将根据本发明的一个实施例描述与在首先格式化非易失性存储器系统的非易失性存储器时,初始化擦除计数区块的一种方法相关联的步骤。过程1000在步骤1004开始,其中检查非易失性存储器系统中的所有区块,或更明确地说,所有的物理区块。检查该等区块可包括检查所述区块的内容以判定哪些区块可能不可用,即,由非易失性存储器的制造商识别为不可用。从而,在步骤1008中,识别非易失性存储器中不可用的区块。识别该等不可用的区块可涉及识别含有标记(例如,如“FFFFFF”的特定标记)的每个区块,已知该等标记将该区块识别为具有或另外包括制造缺陷的区块。
一旦识别出大体上所有不可用的区块,就在步骤1012中在擦除计数区块中将不可用的区块标记为或以其他方式识别为不可用。将特定区块标记为不可用可包括将一特定标记或代码放入该擦除计数区块中为该区块保留的用于该区块为不可用的部分中。应了解,在擦除计数区块中标记不可用的区块通常还包括更新该擦除计数区块的标头以包括非易失性存储器中的不可用区块的总数的计数。
在擦除计数区块中标记不可用的区块之后,在步骤1016中初始化未擦除的可用区块或不具有制造缺陷的区块的擦除计数。初始化所述擦除计数可包括将未擦除的每个区块的擦除计数设定为零值。区块的擦除计数通常存储在与该区块相关联的冗余或开销区域的至少一个中。然后,在步骤1020中可以在擦除计数区块中设定对应于可用区块(已擦除和未擦除的可用区块)的擦除计数。通常,可以将存储在擦除计数区块中的擦除计数设定或另外初始化为零值,或对于一未擦除的区块来说,将擦除计数设定为与存储在其对应未擦除区块的擦除计数相同的值。换句话说,未擦除的区块的擦除计数一般与存储在擦除计数区块中的对应于该区块的位置中的擦除计数相同。一旦将擦除计数设定为擦除计数区块中的项时,就可以在步骤1024中在擦除计数区块中设定平均擦除计数。如先前所讨论的,平均擦除计数可存储在擦除计数区块的标头中。当将可用区块的擦除计数都初始化为零值时,就可以最初将平均擦除计数设定为零值。在设定完平均擦除计数之后,就完成了格式化非易失性存储器系统中包括的非易失性存储器的过程。
在非易失性存储器系统中每处理初始化过程一次,就可以更新擦除计数区块中的项。然而,应了解,一般可在大体上任何时候(例如,响应由使用者发出的命令)更新擦除计数区块。下面参考图11,将根据本发明的一个实施例描述与响应一个初始化请求而更新一个擦除计数区块的一种方法相关联的步骤。在步骤1108开始更新擦除计数区块的过程1100,其中获得一个未擦除的可用区块。所属领域的技术人员应了解,未擦除的可用区块一般含有数据,且实际上处于使用中。在步骤1108中获得擦除计数区块中所存储的未擦除的可用区块的擦除计数项。换句话说,读取擦除计数区块中的对应于未擦除的可用区块的擦除计数中的项。一旦读取在步骤1108中获得的未擦除的可用区块的擦除计数的项,就在步骤1116中判定擦除计数项是否具有比存储在未擦除的可用区块中的擦除计数小的一个值。
如果在步骤1116中判定存储在擦除计数区块中的未擦除的可用区块中的擦除计数项小于存储在未擦除的可用区块的擦除计数,那么就指示存储在擦除计数区块中的擦除计数项不是最新的。因此,处理流程从步骤1116移到步骤1120,其中,更新作为对应于未擦除的可用区块的项而存储在擦除计数区块中的擦除计数。更新擦除计数项一般涉及将未擦除的可用区块的当前擦除计数存储在擦除计数区块中。一旦更新了擦除计数项,在步骤1124中作出有关是否有更多的未擦除的可用区块要处理的判定。
当在步骤1124中判定有更多未擦除的可用区块要处理时,处理流程就返回到步骤1108,在该步骤中获得另一个未擦除的可用区块。或者,当判定已处理完大体上所有的未擦除的可用区块时,例如,当已更新擦除计数区块中的大体上所有的未擦除的可用区块的擦除计数项时,在步骤1128中重新计算非易失性存储器中的所有可用区块的平均擦除计数。所属领域的技术人员应了解,可通过对存储在擦除计数区块中的所有擦除计数求和,接着将该和除以存储在擦除计数区块中的擦除计数的数目来判定平均擦除计数,如下文相关图13将描述的。重新计算平均擦除计数之后,在步骤1132中将重新计算出的平均擦除计数存储在所述擦除计数区块中。如先前所讨论的,平均擦除计数可存储在擦除计数区块的标头中。一旦存储了平均擦除计数,就完成了响应初始化请求而更新擦除计数区块的过程。
返回到步骤1116,当判定擦除计数区块中的所获得的未擦除可用区块的擦除计数项不小于存储在所获得的未擦除的可用区块中的擦除计数时,就暗示在擦除计数区块中的擦除计数项是最新的。同样,处理流程从步骤1116大体上直接移到步骤1124,在该步骤中判定是否有更多未擦除的可用区块要处理。
如先前所讨论的,区块的擦除计数存储在与该区块相关联的冗余或耗用区域的至少一个中。举例而言,区块的擦除计数可至少存储在与该区块的第一页相关联的冗余区域中。然而,当擦除区块时,通常擦除区块的包括擦除计数的大体上所有的内容。因此,当获得擦除区块以供使用时,即,当从如最不频繁擦除区块表的备用区块池中获得擦除区块时,该擦除区块将不包括擦除计数。
通常,可从擦除计数区块中读取从可用的备用区块池中所获得的擦除区块(即,备用区块)的擦除计数。图12是根据本发明的一个实施例说明与获得一个备用区块的擦除计数的一种方法相关联的步骤的处理流程图。在步骤1204开始获得备用区块的擦除计数1200的过程,在该步骤中从擦除计数区块中读取所获得的备用区块的擦除计数项。明确地说,读取存储在擦除计数区块中的对应于备用区块的擦除计数的位。接着在步骤1208中作出有关擦除计数项中的位是否有效的判定。也就是说,判定备用区块的擦除计数项中的位是否表示先前所存储的擦除计数,或备用区块的擦除计数项中的位是否表示其它事务,例如,该等位是否将备用区块识别为由于成长缺陷而成为先前不可用。
如果在步骤1208中判定从擦除计数区块读取的擦除计数项或擦除计数实际上并不是有效的擦除计数,那么处理流程从步骤1208移到步骤1212,在该步骤中,如果该擦除区块是从该备用区块池获得的,那么从备用区块池中移除这个擦除区块,或者如果该擦除区块不是从该备用区块池获得的,那么不将其添加到备用区块池。
或者,如果在步骤1208中判定擦除计数区块中的备用区块的擦除计数项的内容可有效用于擦除计数,那么处理流程从步骤1208进行到步骤1216,在该步骤中将擦除计数项的内容设定为备用区块的擦除计数。换句话说,如果从擦除计数区块中读取的备用区块的擦除计数是有效的擦除计数,那么将从擦除计数区块中读取的擦除计数设定为备用区块的实际擦除计数。将备用区块的擦除计数设定为从擦除计数区块中所读取的擦除计数之后,就完成了获得备用区块的擦除计数的过程。
一般来说,与计算或重新计算平均擦除计数相关联的步骤可大不相同。图13是根据本发明的一个实施例说明计算平均擦除计数的一种方法的处理流程图。在步骤1304开始计算平均擦除计数区块的过程1300,在该步骤中获得所有可用区块的擦除计数。未擦除的可用区块和已擦除的可用区块具有相关联的擦除计数,而不可用的区块通常既不具有擦除计数也不具有可得的擦除计数,大体上只能获得可用区块的擦除计数。通常从擦除计数区块获得擦除计数,但应了解,可替代从未擦除的可用区块的冗余区域获得未擦除的可用区块的擦除计数。
一旦获得可用区块的擦除计数,就在步骤1308中对可用区块的擦除计数求和。也就是说,将可用区块的擦除计数加在一起。然后,在步骤1312中,判定可用区块的总数。通过从擦除计数区块获得区块的总数和不可用的区块的总数,然后从区块的总数减去不可用的区块的总数,来判定可用区块的总数。或者,可通过在所有区块中的有效循环和维持所有可用区块的运行计数获得可用区块的总数。
在获得可用区块的总数之后,在步骤1316中将所有的可用区块的擦除计数的总和除以可用区块的总数来产生一个平均的擦除计数。一旦可用区块的总数与擦除计数的总和相除,就完成了产生一个平均的擦除计数的过程。
虽然仅描述了本发明的一些实施例,但是应了解在不偏离本发明的精神或范畴的情况下可以许多其它具体形式来体现本发明。举例而言,擦除计数区块的大小和该擦除计数区块中的标头的位置会有很大变化。另外,擦除计数区块的标头的内容还可以依据特定系统的需要而变化。
虽然将非易失性存储器系统描述成通过关联存储器控制器来控制或使用与主机系统相关联的软件或固件来控制,但是应了解,包括擦除计数管理的损耗平衡处理可应用于下述非易失性存储器系统,其与大体上位于非易失性存储器系统外部的控制器进行通信。使用控制器的合适的存储器系统包括(但不限于)PC卡、压缩快闪卡、多媒体卡、安全数字卡和包括闪存和闪存控制器的嵌入式芯片组。通过使用加载到主机系统上的软件或固件来控制的存储器系统包括嵌入式存储器装置。在一个实施例中,可以使用上文描述的擦除管理技术和擦除计数区块管理技术而不使用与存储器系统相关联的控制器的存储器系统可以使用与主机(例如主计算机系统)相关联的控制器来实施损耗平衡。也就是说,主机可直接定址和管理存储器,其中通过使用主机上的控制器来实现损耗平衡。
一般将擦除计数区块描述成包括很多页的区块。然而,应了解,可配置系统存储器中的大体上任何合适的数据结构以保持擦除计数和平均擦除计数。
在一个实施例中,擦除计数区块可大体上仅包括对应于非易失性存储器系统中的区块的擦除计数的项。在这个实施例中,擦除计数区块的标头中通常含有的信息可存储在与擦除计数区块分开的数据结构或区块中。也就是说,当配置擦除计数区块大体上仅含有有关与区块相关联的擦除计数的项时,如平均擦除计数的信息可不必存储在擦除计数区块中,或更明确地说,不必存储在擦除计数区块的标头中。
或者,替代存储在擦除计数区块的标头中,可在擦除计数区块中的大体上任何地方存储平均擦除计数。
将平均擦除计数描述为通过对所有的可用区块的擦除计数求和,然后使可用区块的擦除计数的总和除以可用区块的总数而判定。应了解,代替将总和除以可用区块的总数,该总和也可以除以区块的总数。另外,在一个实施例中,可通过使用当前的平均擦除计数来表示每个不可用区块的擦除计数,使得平均的擦除计数中实质上虑及每个区块而有效地对所有的区块的擦除计数求和来判定平均擦除计数。所有的擦除计数的总和,包括可用区块的实际擦除计数和每个不可用区块的当前平均擦除计数,然后可除以区块的总数而产生一个新的或更新的平均擦除计数。
代替计算实际反应区块总数中的每个区块的平均擦除次数的平均擦除计数,可计算每个区块擦除次数的其它特征。举例而言,可判定区块(例如可用区块)的总数中的每个区块擦除的中间次数。
虽然已描述了使用擦除计数区块来维持存储器系统中的区块的擦除计数,但应了解,还可以使用擦除计数区块来维持会被擦除的大体上任何存储器元件的擦除计数。举例而言,在一个实施例中,擦除计数区块或数据结构可维持页而不是区块的擦除计数。
通常,与损耗平衡的各种处理和方法相关联的步骤可以有很大变化。在不偏离本发明的范畴的精神下,通常可添加、移除、改变和重新排序步骤。因此,应认识到,本发明的实例仅具有说明性而不具有限制性,而且本发明并不限于本文给出的详细描述,且在附加权利要求范围的范畴内可对本发明进行修改。
权利要求
1.一种数据结构,所述数据结构被配置在与一非易失性存储器系统相关联的一系统存储器中,所述非易失性存储器系统包括一个包括复数个区块的非易失性存储器,所述数据结构包括一第一指示符,所述第一指示符经配置以提供所述复数个区块中的每个区块被擦除次数的一指示;和一第二指示符,所述第二指示符经配置以指示所述复数个区块中所包括的区块的一总数。
2.根据权利要求1所述的数据结构,其进一步包括一标头,其中所述标头经配置含有所述第一指示符和所述第二指示符。
3.根据权利要求1所述的数据结构,其中所述第一指示符是一个平均擦除计数,所述平均擦除计数经配置以指示所述复数个区块中的每个区块被擦除的平均次数。
4.根据权利要求1所述的数据结构,其中所述非易失性存储器是一个NAND闪存。
5.一种非易失性存储器系统,其包括一非易失性存储器,所述非易失性存储器包括复数个区块;一系统存储器;和用于在所述系统存储器中指示所述复数个区块中所包括的每个区块被擦除的平均次数的构件。
6.根据权利要求5所述的非易失性存储器系统,其中,用于在所述系统存储器中指示所述复数个区块中所包括的每个区块被擦除的平均次数的构件包括用于在一个数据结构中指示所述复数个区块中所包括的每个区块被擦除的平均次数的构件。
7.根据权利要求6所述的非易失性存储器系统,其中所述数据结构是一个擦除计数区块。
8.根据权利要求5所述的非易失性存储器系统,其中所述非易失性存储器是一个NAND闪存。
9.一种判定一存储器系统的一非易失性存储器中的多个区块中的每个区块被擦除的平均次数的方法,所述方法包括获得所述多个区块中的每个区块的一擦除计数,所述多个区块中的每个区块的所述擦除计数经配置以指示所述多个区块中的每个区块被擦除的次数,其中区块的所述数目是所述非易失性存储器中可用区块的一总数;产生所述多个区块的所述擦除计数的一个总和;和产生所述平均擦除计数,所述平均擦除计数经配置以指示所述多个区块中的每个区块被擦除的平均次数,其中产生所述平均擦除计数包括大体上将所述总和除以区块的所述数目。
10.根据权利要求9所述的方法,其中所述多个区块中的一第一区块的所述擦除计数是从所述第一区块获得的。
11.根据权利要求10所述的方法,其中所述第一区块的所述擦除计数是从所述第一区块的一个冗余区域获得的。
12.根据权利要求9所述的方法,其中所述多个区块的一第一区块的所述擦除计数是从所述存储器系统中的一擦除计数区块获得的,所述擦除计数区块经配置以含有所述多个区块中的每个区块的所述擦除计数。
13.根据权利要求9所述的方法,其中所述多个区块中的每个区块是一个可用区块。
14.根据权利要求9所述的方法,其中所述非易失性存储器是一个NAND闪存。
15.一种用于从一非易失性存储器系统的一非易失性存储器中大体上准备一擦除区块以供使用的方法,所述非易失性存储器包括复数个区块,其中所述复数个区块包括所述擦除区块,所述方法包括获得所述擦除区块;获得一个表征所述复数个区块中的每个区块被擦除次数的指示符;和将表征所述复数个区块中的每个区块被擦除次数的所述指示符存储在所述擦除区块中作为所述擦除区块被擦除次数的一指示。
16.根据权利要求15所述的方法,其进一步包括判定所述擦除区块的被擦除次数的一指示符何时可用,其中获得表征所述复数个区块中的每个区块被擦除次数的所述指示符包括在判定所述擦除区块被擦除次数的所述指示符无效时,获得表征所述复数个区块中的每个区块被擦除次数的指示符,且存储表征所述复数个区块中的每个区块被擦除次数的所述指示符包括在判定所述擦除区块的被擦除次数的所述指示符可用时,存储表征所述复数个区块中的每个区块被擦除次数的所述指示符。
17.根据权利要求16所述的方法,其进一步包括当判定所述擦除区块的被擦除次数的所述指示符可用时,将所述擦除区块的被擦除次数的所述指示符存储在所述擦除区块中,其中当将所述擦除区块的被擦除次数的所述指示符存储在所述擦除区块中时,表征所述复数个区块中的每个区块的被擦除次数的所述指示符不存储在所述擦除区块中。
18.根据权利要求17所述的方法,其中表征所述复数个区块中的每个区块的被擦除次数的所述指示符是一个平均擦除计数,其大体上指示所述复数个区块中的每个区块擦除的平均次数。
19.根据权利要求17所述的方法,其中存储所述擦除区块的被擦除次数的所述指示符包括将所述擦除区块的被擦除次数的所述指示符存储在所述擦除区块的一开销区域中。
20.根据权利要求17所述的方法,其中将表征所述复数个区块中的每个区块的被擦除次数的所述指示符存储在所述擦除区块中包括将表征所述复数个区块中的每个区块的被擦除次数的所述指示符存储在所述擦除区块的一开销区域中。
21.根据权利要求15所述的方法,其进一步包括判定所述擦除区块的被擦除次数的一指示符何时可用;和当判定所述擦除区块的被擦除次数的所述指示符可用时,将所述擦除区块的被擦除次数的所述指示符存储在所述擦除区块中。
22.一种非易失性存储器系统,其包括一非易失性存储器,所述非易失性存储器包括多个区块;用于获得所述多个区块中的每个区块的一擦除计数的构件,所述多个区块中的每个区块的所述擦除计数经配置以指示所述多个区块中的每个区块的被擦除次数;用于产生所述多个区块的所述擦除计数的一总和的构件;和用于产生所述平均擦除计数的构件,所述平均擦除计数经配置以指示所述多个区块中的每个区块被擦除的平均次数,其中,用于产生所述平均擦除计数的所述构件包括用于大体上将所述总和除以区块的所述数目的构件。
23.根据权利要求22所述的非易失性存储器系统,其中所述多个区块的一第一区块的所述擦除计数是从所述非易失性存储器系统中的所述第一区块和一擦除计数区块之一获得的,所述擦除计数区块经配置含有所述多个区块中的每个区块的所述擦除计数。
24.一种非易失性存储器系统,其包括一非易失性存储器,其包括复数个区块;用于从所述复数个区块获得一个擦除区块的构件;用于获得表征所述复数个区块中的每个区块被擦除次数的一指示符的构件;和用于将表征所述复数个区块中的每个区块的被擦除次数的所述指示符存储在所述擦除区块中作为所述擦除区块的被擦除次数的一个指示的构件。
25.根据权利要求24所述的非易失性存储器系统,其进一步包括用于判定所述擦除区块的被擦除次数的一指示符何时可用的构件;和用于在判定所述擦除区块的被擦除次数的所述指示符可用时,将所述擦除区块的被擦除次数的所述指示符存储在所述擦除区块中的构件。
26.一种存储器系统,其包括一非易失性存储器,其包括复数个存储器元件;代码装置,其获得所述多个存储器元件中的每个存储器元件的一擦除计数,所述多个存储器元件中的每个存储器元件的所述擦除计数经配置以指示所述多个存储器元件中的每个存储器元件的被擦除次数,其中存储器元件的所述数目是非易失性存储器中可用存储器元件的一总数;代码装置,其产生所述多个存储器元件的所述擦除计数的一总和;代码装置,其产生所述平均擦除计数,所述平均擦除计数经配置以指示所述多个存储器元件中每个存储器元件被擦除的平均次数,其中产生所述平均擦除计数的所述代码装置包括大体上将所述总和除以存储器元件的所述数目的代码装置;和一存储区域,其存储所述代码装置。
27.根据权利要求26所述的存储器系统,其中所述存储器元件是区块。
28.根据权利要求27所述的存储器系统,其中所述多个存储器元件中的一第一存储器元件的所述擦除计数是从所述第一存储器元件和一擦除计数区块之一获得的,所述擦除计数区块经配置含有所述多个区块中的每个区块的所述擦除计数。
29.根据权利要求27所述的存储器系统,其中所述多个存储器元件中的每个存储器元件是一个可用区块。
30.根据权利要求26所述的存储器系统,其中所述非易失性存储器是一个NAND闪存。
31.一种存储器系统,其包括一非易失性存储器,所述非易失性存储器包括复数个存储器元件,其中所述复数个存储器元件包括所述擦除存储器元件;代码装置,其获得所述擦除存储器元件;代码装置,其获得表征所述复数个存储器元件中的每个存储器元件的被擦除次数的一指示符;代码装置,其将表征所述复数个存储器元件中的每个存储器元件的被擦除次数的所述指示符存储在所述擦除存储器元件中作为所述擦除存储器元件的被擦除次数的一指示;和一存储区域,其存储所述代码装置。
32.根据权利要求31所述的存储器系统,其进一步包括代码装置,其判定所述擦除存储器元件的被擦除次数的一指示符何时可用;和代码装置,其在判定所述擦除存储器元件的被擦除次数的所述指示符可用时,将所述擦除存储器元件的被擦除次数的所述指示符存储在所述擦除区块中。
33.根据权利要求31所述的存储器系统,其中所述复数个存储器元件是复数个区块。
34.根据权利要求33所述的存储器系统,其中所述复数个区块是复数个可用区块。
35.根据权利要求31所述的存储器系统,其中所述非易失性存储器是一个NAND闪存。
36.一种用于维持一存储器系统中的一平均擦除计数的方法,所述平均擦除计数经配置以指示与所述存储器系统相关联的一非易失性存储器的多个区块中的每个区块被擦除的平均次数,所述存储器系统进一步包括一系统存储器,所述方法包括对与所述多个区块中的每个区块相关联的擦除计数求和,每个擦除计数经配置以指示所述多个区块中的一个关联区块的被擦除次数,其中对所述擦除计数求和产生一总和;使所述总和除以区块的所述数目,其中使所述总和除以区块的所述数目产生所述平均擦除计数;和将所述平均擦除计数存储在所述系统存储器中。
37.根据权利要求36所述的方法,其进一步包括响应所述存储器系统中的一初始化请求而初始化所述平均擦除计数。
38.根据权利要求37所述的方法,其中初始化所述平均擦除计数包括将所述平均擦除计数设定为约为零的一个值。
39.根据权利要求36所述的方法,其进一步包括在将所述平均擦除计数存储在所述系统存储器中之后,更新所述平均擦除计数。
40.根据权利要求39所述的方法,其中更新所述平均擦除计数包括对与所述多个区块中的每个区块相关联的更新的擦除计数求和,每个更新的擦除计数经配置以指示所述多个区块中的一关联区块被擦除的次数,其中对所述更新的擦除计数求和产生一个更新的总和;使所述更新的总和除以区块的所述数目,其中使所述更新的总和除以区块的所述数目产生一个更新的平均擦除计数;和将所述平均擦除计数和所述更新的擦除计数一起存储在所述系统存储器中。
全文摘要
本发明揭示用于维持非易失性存储器系统的系统存储器中的平均擦除计数的方法和设备。根据本发明的一个方面,一种用于判定存储器系统的非易失性存储器中的多个区块中的每个区块被擦除的平均次数的方法包括获得指示每个区块被擦除的次数的每个区块的擦除计数。一旦获得所有的擦除计数,就对该等擦除计数求和,且通过将该总和实质上除以区块的数目而产生指示多个区块中的每个区块被擦除的平均次数的平均擦除计数。
文档编号G11C16/34GK1701389SQ03824782
公开日2005年11月23日 申请日期2003年9月10日 优先权日2002年10月28日
发明者罗伯特·张, 巴赫曼·卡瓦迈, 法施德·萨伯特-沙吉 申请人:桑迪士克股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1