CN1698036A - 跟踪非易失性存储器系统中最不频繁擦除区块 - Google Patents
跟踪非易失性存储器系统中最不频繁擦除区块 Download PDFInfo
- Publication number
- CN1698036A CN1698036A CNA038247801A CN03824780A CN1698036A CN 1698036 A CN1698036 A CN 1698036A CN A038247801 A CNA038247801 A CN A038247801A CN 03824780 A CN03824780 A CN 03824780A CN 1698036 A CN1698036 A CN 1698036A
- Authority
- CN
- China
- Prior art keywords
- elements
- memory
- block
- erased
- erase
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明揭示一种在一非易失性存储器系统中执行损耗平衡的方法和设备。根据本发明的一个方面,一种用于处理一存储器系统的非易失性存储器中包括的元件的方法包括获得与复数个擦除元件相关联的擦除计数并且将若干元件组成第一组。每个元件都具有关联擦除计数,所述计数大体指示该元件已经被擦除的次数。将所述第一组的所述若干元件分组通常包括选择所述复数个元件中包括的元件,所述擦除元件具有与所述复数个元件相关联的擦除计数中的最低关联擦除计数。所述方法也包括将与所述第一组关联的所述擦除计数存储到大体位于一表格内的一存储器组件中。
Description
相关申请案的交叉参考
本发明涉及题为“AUTOMATED WEAR LEVELLING INNON-VOLATILE STORAGE SYSTEMS”的共同代决美国专利申请案第__号(代理人档案号SANDP005/SDK0278.000US);2002年10月28日提交的题为“WEAR-LEVELING IN NONVOLATILE SYSTEMS”的共同代决美国专利申请案第10/281,739号(代理人档案号SANDP023/SDK0366.000US);2002年10月28日提交的题为“TRACKINGTHE MOST FREQUENTLY ERASED BLOCKS IN NON-VOLATILEMEMORY SYSTEMS”的共同代决美国专利申请案第10/281,670号(代理人档案号SANDP025/SDK0366.002);2002年10月28日提交的题为“METHOD AND APPARATUS FOR SPLITTING A LOGICAL BLOCK”的共同代决美国专利申请案第10/281,631号(代理人档案号SANDP028/SDK0371.000US);2002年10月28日提交的题为“METHODAND APPARATUS FOR GROUPING PAGES WITHIN A BLOCK”的共同代决美国专利申请案第10/281,855号(代理人档案号SANDP029/DSK0410.000US);2002年10月28日存档的标题为“METHODAND APPARATUS FOR RESOLVING PHYSICAL BLOCKS ASSOCIATEDWITH A COMMON LOGICAL BLOCK”的共同代决美国专利申请案第10/281,762号(代理人档案号SANDP030/SDK0416.000US);美国专利第6,081,447号和第6,230,233号,上述各案以全文引用的方式并入本文中。
技术领域
本发明大致涉及海量数字数据存储系统。更明确地说,本发明涉及使与非易失性存储系统中的存储区域相关联的损耗大体上在所有存储区域中扩展的系统和方法。
背景技术
归因于存储系统压缩的物理尺寸和非易失性存储器可反复重编程的能力,非易失性存储器系统(例如闪存存储系统)的使用日渐增长。闪存存储系统的压缩的物理尺寸促使在装置中使用所述存储系统变得越来越流行。使用闪存存储系统的装置包括(但不限于)数字相机、数字摄像机、数字音乐播放器、手提式个人计算机和全球定位装置。对闪存存储系统中所含的非易失性存储器进行反复重编的能力使得使用和再使用闪存存储系统成为可能。
一般来说,闪存存储系统可包括闪存卡和闪存芯片组。闪存芯片组一般包括闪存组件和控制器组件。通常可配置闪存芯片组组装成一个嵌入式系统。所述组装件或主机系统的制造商通常要求组件形式的闪存以及其它组件,然后将闪存和其它组件组装成一个主机系统。
尽管非易失性存储器,或者更具体地说闪存系统中的闪存存储区块,可以反复地编程及擦除,但是该区块损坏之前,也就是存储器开始变小之前每一区块或物理位置仅可擦除一定的次数。即每一区块都具有编写和擦除循环极限。在某些存储器中,在认为区块不能使用之前可以将区块擦除约一万次。在其他存储器中,在认为区块损坏之前该区块可擦除高达约十万次或者甚至一百万次。当一个区块损坏时,由此导致闪存系统的整个存储容量的一部分的使用损失或性能显著下降,例如存储数据损失或不能存储数据可能对闪存系统的用户产生不利影响。
在闪存系统内的区块上或物理位置上的损耗根据每一个区块的编写次数而变化。如果将一个区块,更一般地说一个存储元件编写一次就不能再有效地重编程,那么编写和擦除循环的次数以及由此与所述区块相关联的损耗通常相对低。然而,如果重复写入和擦除(例如循环)一个区块,则与所述区块相关联的损耗通常将相对高。当主机(例如访问或使用闪存系统的系统)使用逻辑区块地址(LBA)访问存储在闪存系统中的数据时,所属领域的技术人员已了解如果主机重复地使用相同LBA写入和重写数据,则在闪存系统内的相同物理位置或区块重复地写入和擦除。
当某些区块已经实际损坏而其它区块相对地未损耗时,已经损坏区块的存在通常使闪存系统的整体性能大打折扣。除了与损坏的区块自身相关联的性能降级之外,当未损坏区块的数目不足以用于存储所要的数据时,闪存系统的整体性能也会大打折扣。通常,当闪存系统中存在临界数目的损坏区块时,甚至当闪存系统中的许多其它单元相对地未损坏时认为闪存系统已经不可用。当认为包括相对数目的相对损坏的区块的闪存系统已经不可用时,实际上浪费了许多与该闪存系统相关联的资源。
为了使闪存系统中的区块尽可能均匀损耗,通常执行损耗平衡操作。所属领域的技术人员将会了解,通常配置损耗平衡操作以允许与特定LBA相关联的物理位置或区块发生改变,使得相同的LBA不总是与相同的物理位置或区块相关联。通过改变LBA的区块关联,就会使一个特定区块在其它区块损坏前就完全损坏的可能性降低。
一种常规损耗平衡处理涉及交换用户或主机LBA的两个相对大的部分所映射到的物理位置。即,交换与存储单元的相对大的区相关联的所述LBA。通过来自用户系统的手动指令(例如通过使用主机)来启动这一交换,且因此所述交换对用户不透明。而且,涉及在存储单元的两个相对大的区之间移动数据的交换操作耗时,且因此效率低。此外,通过消耗与整个闪存系统相关的重要资源的相对长持续时间的交换操作,对整个闪存系统的性能会产生不利影响。所属领域的技术人员应了解,从第一位置移动数据通常涉及将所述数据复制到另一位置和从第一位置擦除所述数据。
其它常规的损耗平衡处理涉及允许区块损耗。一旦区块已实际损坏,存储有扇区的区块已经损坏或已经变得不可用,通过将与所述扇区相关联的地址映射到备用区域可重新指派已指派到区块的扇区。由于备用区域或区块的数目有限且重要,所以并非始终都存在与不可用区块相关联的扇区可映射的备用区域。另外,仅在区块变得不可用时有效重新映射扇区通常使整个闪存系统的性能降级。
因此,需要一种用于有效地且大体上“透明地”(transparently)在闪存存储系统中执行损耗平衡的方法和设备。即,需要一种损耗平衡处理,其促使与闪存存储系统相关联的物理位置的损耗更加平均而不需要显著使用计算资源。
发明内容
本发明揭示一种在一非易失性存储器系统中执行损耗平衡的方法和设备。根据本发明的一个方面,一种用于处理存储器系统的非易失性存储器中包括的元件的方法包括获得与复数个擦除元件相关联的擦除计数并且将若干元件组成第一组。每个元件都具有关联擦除计数,所述计数大体指示该元件已经被擦除的次数。将所述第一组的所述若干擦除元件分组通常包括选择所述复数个元件中包括的元件,所述擦除元件具有与所述复数个元件相关联的擦除计数中的最低关联擦除计数。所述方法也包括将与所述第一组关联的所述擦除计数存储到大体位于一表格内的存储器组件中。在一个实施例中,根据与每个元件关联擦除计数将第一组中的元件分类。在此实施例中,所述方法也可以包括识别具有与第一组关联的最低擦除计数的第一组中包括的擦除元件,从所述第一组中分离所述元件,并且使复数个元件的不同擦除元件与所述第一组关联。
为了维护一组损耗元件中非易失性存储器的已损耗的元件(例如扩充区块),通过防止已损耗元件被分配使用直到损耗较小的元件最终变的损耗更大来管理已损耗元件的损耗。因为有效地防止了擦除更频繁的元件的使用及由此再次擦除直到其它元件被更多地使用和擦除,所以可使所有元件的损耗平均化,当一个含有无效数据的区块被擦除时或者当需要一个区块代替大体已损耗区块时,如果将具有相对低的擦除计数的区块用作备用区块,那么通常可延长媒体的整体寿命。在使用存储于系统存储器中的表格有效跟踪的一组最小擦除区块中维持备用区块有助于分配损耗较小的区块覆盖损耗较大的区块。
根据本发明的另一方面,存储器系统包括一个存储表格的第一存储器,配置所述表格以包括与具有小于平均擦除计数的关联擦除计数的第一组擦除存储元件关联的项。配置第一组存储单元的每个存储单元的关联擦除计数器以大体指示存储单元擦除的次数。所述存储器系统也包括一个包括复数个存储元件的第二存储器,所述复数个元件包括所述第一组存储元件。使用与所述复数个存储元件关联的擦除计数器判断平均擦除计数。最后,存储器系统包括可以访问第一存储器和第二存储器的处理器。在一个实施例中,使用所述表格可识别第一组存储单元。
根据本发明的又一个方面,一种用于管理包括复数个区块的存储器的方法包括识别所述复数个区块中包含的一组擦除区块,并且识别所述擦除区块组中包含的第一组擦除区块。第一组擦除区块包括具有与所述擦除区块组中大体所有其它存储区块相比较低擦除计数的擦除区块。在一个存储器组件中创建一个包含复数个项的结构。所述项包括第一组中包含的擦除区块的擦除计数。使用所述已分类项存储所述项并且识别第一区块。在第一组擦除区块中包含的其它擦除区块之前配置第一区块以从第一组擦除区块中移除。换句话说,如果需要所述第一区块可为从第一组中换出的第一区块。
在一个实施例中,将所述复数个项分类包括使用所述第一组中包含的擦除区块的擦除计数将所述复数个项分类。在此实施例中,使用已分类项识别第一区块可包括识别具有与第一组中包括的大体所有其它擦除区块相比较低擦除计数的第一区块。
通过阅读以下详细描述及研究附图的各种图,本发明的这些和其它优点将变得显而易见。
附图说明
通过结合附图参考以下描述可最佳理解本发明,其中:
图1a是根据本发明的一个实施例包括非易失性存储器装置的通用主机系统的图形表示。
图1b是根据本发明的一个实施例的存储器装置(例如图1a的存储器装置120)的图形表示。
图2是根据本发明的一个实施例的闪存的一部分的图形表示。
图3是根据本发明的一个实施例说明处理关于一个闪存系统的初始化请求的步骤的处理流程图。
图4是根据本发明的一个实施例说明与处理静态区块的一种方法相关联的步骤的处理流程图。
图5a是根据本发明的一个实施例的系统存储器的图形结构图表示。
图5b是根据本发明的一个实施例的正常区块、最不频繁擦除区块和最频繁擦除区块的图形表示。
图6是根据本发明的一个实施例执行区块交换或者更新系统存储器中的整个存储器系统以使区块损耗更加平均的方法的图形表示。
图7是根据本发明的一个实施例的系统架构的图形结构图表示。
具体实施方式
尽管在区块损坏前每个区块通常仅可被擦除有限次,但闪存存储系统中的非易失性存储器存储区块可以反复编写和擦除。当区块损坏时,与包括损坏区块的闪存存储系统的总存储量的部分相关联的性能会发生相对地显著降级,而且存储在该部分的数据会丢失,或不能在该部分存储数据。
为了使区块在闪存存储系统中的损坏尽可能平均,要更为平均地利用区块。通过跟踪每个区块擦除的次数(例如通过利用擦除计数),可以更平均地使用系统中的存储器。一种擦数计数管理技术可以存储擦除计数,其跟踪在与区块相关联的冗余区域中的特定区块的擦除次数。可在系统存储器中建立表格,其大体上使区块在使用时与具有相对高的擦除计数的区块和具有相对低的擦除计数的区块有效隔离。当擦除使用中的区块时,该区块可适当地被“添加”到具有相对高擦除计数的区块表或具有相对低擦除计数的区块表中。同样,可从具有相对高擦除计数的区块表或者具有相对低擦除计数的区块表中将区块“移动”到区块映射表,即,使用一组区块表以大体上代替从区块映射表重新指派的任何区块。
通过对区块进行分类,由于更有效地管理每个区块的使用而使与区块相关联的损耗平均化从而可以更平均地利用区块。另外,将区块分类成表格使得容易识别具有低擦除计数的区块和具有高擦除计数的区块成为可能,而且因此不必利用大量的计算资源。因此,损耗平衡变得相对有效。结果大体上延长了闪存系统的寿命而没有显著影响闪存系统的性能。
闪存系统,或者更一般而言,非易失性存储器系统装置通常包括闪存卡和芯片组,典型地,闪存系统与一主机系统一同使用,以使所述主机系统可将数据写入闪存系统或者从闪存系统读取数据。然而,某些闪存系统包括嵌入式闪存系统和软件,该软件在主机上执行来大体上充当嵌入式闪存的控制器。先参考图1a,将描述包括一个非易失性存储器装置(例如,紧凑快闪卡或嵌入式系统)的一般主机系统。一主机或计算机系统100通常包括系统总线104,总线104允许微处理器108、随机访问存储器(RAM)112和输入/输出电路116进行通信。应了解,主机系统100一般可以包括其它组件,例如显示装置和网络连接装置(出于说明的目的而未展示)。
一般而言,主机系统100能够获取以下信息,其包括(但不限于)静态图像信息、音频信息和视频图像信息。这些信息可以实时获取,且能以无线方式传输到主机系统100。虽然主机系统100大体上可以是任何系统,但主机系统100一般是诸如数字相机、摄像机、蜂巢通信装置、音频播放器或视频播放器等系统。然而,应了解主机系统100通常大体上可以是存储数据或信息并检索数据或信息的任何系统。
应了解,主机系统100也可以是只能获取数据或只能检索数据的系统。即,主机系统100可以是存储数据的专用系统,或主机系统100可以是读取数据的专用系统。举例而言,主机系统100可以是经配置仅用于写入或存储数据的存储写入器。或者,主机系统100可以是例如MP3播放器的装置,其通常经配置来读取或检索数据但不获取数据。
非易失性存储器装置120(在一个实施例中是一个可移除非易失性存储装置)经配置与总线104连接来存储信息。一种可选的输入/输出块116可以允许非易失性存储器装置120与总线104间接连接。所属领域的技术人员将了解,当输入/输出块116存在时,其用于减少总线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是一个嵌入式NAND装置时,例如,非易失性存储器装置120可不包括控制系统128,但是存储器124和控制系统128,或控制器,可以是非易失性存储器装置120的主要组件。存储器124可以是在半导体基板上形成的存储器单元的阵列,其中通过在存储器单元的个别存储元件上存储两个或两个以上等级的电荷中的一个,一个或一个以上的位数据存储在个别的存储器单元上。对于所述系统而言,非易失性快闪电可擦除可编程只读存储器(EEPROM)是用于所述系统的普通类型存储器的一个实例。
当控制系统128存在时,其通过总线15与正在使用存储器系统来存储数据的主机计算机或其它系统通信。总线15通常是图1a的总线104的一部分。控制系统128还控制存储器124(其可包括存储器单元阵列11)的运行来写入由主机提供的数据,读取由主机请求的数据并执行操作存储器124的各种内务管理功能。控制系统128通常包括一个通用微处理器,其具有关联的非易失性软件存储器、各种逻辑电路及其相似物。通常还包括用于控制特定例行程序的性能的一个或一个以上状态机。
一般由控制系统128或微处理器108通过地址解码器17寻址存储器单元阵列11。解码器17向门极和阵列11的位线施加校正电压以将数据编写到由控制系统128寻址的一存储器单元组中,自所述存储器单元组读取数据或擦除所述存储器单元组。额外的电路19包括控制施加到阵列元件的电压的编程驱动器,其取决于待编写入寻址的单元组的数据。电路19还包括感应放大器和从寻址存储器单元组读取数据所必要的其它电路。待编写入阵列11的数据或最近从阵列11读取的数据通常存储在控制系统128内的缓存21中。控制系统128通常还含有用于临时存储命令和状态数据等的各种寄存器。
阵列11被划分为大量的区块0-N存储器单元。对于快闪EEPROM系统来说,普遍将区块作为最小擦除单元。也就是说,每个区块包含最小数目的一起擦除存储器单元。如图2所示,每个区块通常被划分为若干页面。页面通常是编写的最小单元。即,一个基本的编写操作将数据写入存储器单元的最小量一个页面中或从其中读取数据。数据的一个或一个以上区段通常存储在每个页面内。如图1b所示,一个区段包括用户数据和耗用数据。耗用数据通常包括错误校正代码(ECC),从页面的用户数据和耗用数据计算出所述错误校正代码。当将数据编入阵列11时,控制系统128的一部分23计算ECC,且当从阵列11读取数据时也会检查ECC。或者,将ECC存储在与其所从属的用户数据不同的页面或不同的区块中。
用户数据的区段通常是512个字节,对应于磁盘驱动中的区段的大小。耗用数据通常是附加的16个字节。数据的一个区段最一般包括在每个页面中,但两个或两个以上的区段可形成一个页面。任何数目的页面通常可形成一个区块。举例而言,可由8个到512个、1024个页面或更多的页面形成一个区块。选择一定数目的区块来为存储器系统提供所要的数据存储容量。阵列11通常被划分为一些子阵列(未图示),每个子阵列含有一定比例的区块,其在某种程度上相互独立运作以增加执行各种存储器操作的并行度。在美国专利第5,890,192号中描述了使用复数个子阵列的实例,其全文以引用的方式并入本文中。
当非易失性存储器124的一个特定区段(例如存储元件)连续地编写时,例如重复地写入和擦除时,与并非连续编写的区域相比所述特定区域的损耗通常较快。为了有效地“平均化”非易失性存储器124中的不同区域的损耗,可大体上自动地执行损耗平衡使得连续编写的区域进行较少的编写,而不连续编写的区域进行更多的编写。
一般地,为了执行损耗平衡,将一个被重复地编写区块(例如,与物理位置相关联的一组区段)与未重复编写的物理位置相关联的区块进行交换。即,已编写且因此重复擦除的物理区块可以与已编写并更不经常擦除的物理区块进行交换。
在本发明的一个实施例中,为了易于判断一个特定的物理区块是否经过反复编写和擦除,可存储一个对应所述区块的擦除计数。即,维持跟踪一区块擦除次数的计数器且在每次擦除区块时增加。这样的擦除计数可以用来促进判断一个特定的区块是否应该和一个不经常擦除的区块发生交换。图2是根据本发明的一个实施例的一部分闪存的图形表示。闪存200可被划分为复数个页面204。一般含有大约512个字节用户数据的每个页面204实际上包括一个冗余区域206,例如页面204a包括冗余区域206a。每个冗余区域206或耗用区域可包括约16个字节的信息,该信息通常包括(但不限于)群识别符216、更新索引212和擦除计数214。
通常,区块210中可包括任何数目的页面204。尽管应了解区块210中包括的页面数204可以广泛变化,但是为了便于说明,展示了包括在区块210中的页面204a、204b。在所述实施例中,区块210可经配置以包括约32个页面。举例而言,当闪存200包括约512兆位(MB)时,闪存200可实际被划分为约4096个区块,每个区块具有32个页面。
如上文提到的,每次从关联的区块擦除用户数据时擦除计数214会增加。举例而言,与区块210相关联的擦除计数214会在每次从区块210擦除数据增加。因为区块210中所包括的每个页面204a、204b通常具有擦除计数214,所以与每个页面204a、204b相关联的擦除计数214会在擦除区块210时增加。当擦除含有数据的区块时,数据区域和冗余区域通常被擦除或清空。将擦除区块添加到备用区块库中,其含有与其它表格的擦除区块相比含有较小擦除计数的擦除区块。备用区块表实质上为最不频繁擦除区块表。在本发明的一个实施例中,将具有相对大擦除计数的擦除区块添加到含有擦除区块的库,所述擦除区块具有比其它表中所含擦除区块更大的擦除计数。所述库(即含有具有更大擦除计数的擦除区块的库)为最频繁擦除区块表。刚擦除的区块的擦除计数增加1,并且根据所述擦除计数的值将其保存在最不频繁擦除区块表或者最频繁擦除区块表中。
在初始化请求期间可访问擦除计数(例如擦除计数214)。当出现下列情况时,例如:当向系统(例如包括嵌入式闪存的系统)供电时,当系统内的备用区块运行减慢时,当用户发出平衡区块分配的请求时,以及当用户发出使区块使用更平均的请求时,可发出初始化请求。图3是根据本发明的一个实施例说明处理关于一个闪存系统的初始化请求的步骤的处理流程图。一般来说,可以通过用户开始或通过与闪存系统相关联的控制器,例如定期地或当满足触发条件时大体上自动地开始初始化请求。响应初始化请求的程序300从步骤304开始,其中实际接收初始化请求。通过与待初始化的闪存通信的处理器或控制器可以接收初始化请求。例如,可通过用户在打开主机电源时或当平衡区块分配时提出此请求。
一旦接收初始化请求,在步骤306中获得平均擦除计数。在一个实施例中,平均擦除计数存储在擦除计数区块中,将其写入与所述系统相关联的NAND存储器中。含有平均擦除计数的擦除计数区块和每一区块的擦除计数存储于闪存的一个区块中。应了解当创建擦除计数区块时,例如,当开始格式化所述系统时,通常将平均擦除计数和每一区块的擦除计数初始化为零值。获得平均擦除计数之后,获得在该系统中的实质上所有区块的擦除计数。如上文关于图2所述,含有数据的特定区块的擦除计数存储在与该区块相关联的冗余区域中存储。因此,含有数据的大体所有区块的擦除计数可以包括访问与每个区块相关联的冗余区域,并且在初始化请求时将每个擦除计数存储在该擦除计数区块中。
在初始化请求的处理完成后,在擦除计数区块中更新擦除区块的擦除计数并非必要。因为擦除区块的冗余区域已被擦除,所以擦除计数区块一般保持其值。当关闭整个系统时,产生一个终止请求,使擦除计数区块更新以包含大体上所有区块的最新擦除计数。从最不频繁擦除区块表中检索属于最不频繁擦除区块的擦除区块的擦除计数。从最频繁擦除区块表中检索属于最频繁擦除区块的擦除区块的擦除计数。可从擦除计数区块中检索大体任何剩余擦除区块的擦除计数。
在步骤320中,在NAND存储器中分配区块映射表。所属领域的技术人员应了解,可以配置区块映射表以提供在逻辑区块地址(LBA)与物理区块地址之间的映射。此外,在步骤320中也分配最频繁擦除区块表和最不频繁擦除区块表。
通常确定最频繁擦除区块表的大小或另外配置最频繁擦除区块表以有效地持有与最频繁擦除的擦除区块有关的信息。即,配置最频繁擦除区块以持有在系统中有关具有最高擦除计数的擦除区块的信息,例如擦除计数和映射信息。类似地,通常确定最不频繁擦除区块表的大小或另外配置最频繁擦除区块表以有效地容纳具有最低擦除计数的擦除区块的信息。尽管最频繁擦除区块表的大小和最不频繁擦除区块表的大小会有很大变化,但是所述大小取决于待指派为最频繁擦除的区块数和待指派为最不频繁擦除的区块数。通常,一般确定擦除最频繁的擦除区块表的大小能容纳比最不频繁擦除区块表更小的擦除区块的信息。举例而言,可以确定最不频繁擦除区块表的大小以容纳大约七十个擦除区块的信息,而确定最频繁擦除区块表的大小以容纳大约十八个擦除区块的信息。或者,可以确定最不频繁擦除区块表的大小以容纳大约五十个擦除区块的信息,而确定最频繁擦除区块表的大小以容纳有关大约十个擦除区块的信息。
在步骤320分配表格之后,在步骤324中识别擦除区块。接着,在步骤328中,可以将“N”擦除区块指派给最频繁擦除区块并大体上将其指派给擦除最频繁的表格。在一个实施例中,“N”擦除区块可以是具有通过比较所有擦除计数而判断的最高擦除计数的“N”擦除区块。或者,基于与在步骤306中获得的平均擦除计数的比较可以判断存储在最频繁擦除区块表中的“N”个擦除区块。例如,“N”擦除区块可以是具有至少比平均擦除计数高一个给定百分比(例如约百分之二十五)的擦除计数的“N”擦除区块。
一旦有效填充最频繁擦除区块表,就可以识别“M”擦除区块且在步骤332中将其有效指派给最不频繁擦除区块表。所述“M”擦除区块一般可以是具有与该系统相关联的所有擦除区块的最低擦除计数的“M”擦除区块,或所述“M”擦除区块可以是具有至少比平均擦除计数低一个给定百分比的擦除计数的“M”擦除区块。所述”M”擦除区块实际上是适当时将指派给该区块映射表的备用区块。
在步骤336中将剩余擦除区块(即,未指派给最不频繁擦除区块表或最频繁擦除区块表)与“未擦除”区块一起指派给区块映射表。换句话说,将剩余擦除区块及含有不同于与冗余区域相关联的数据的区块与区块映射表相关联。
例如,用与对应区块相关的擦除计数和映射信息有效填充区块映射表、最不频繁擦除区块表及最频繁擦除区块表之后,在步骤338中可以判断平均擦除计数。判断平均擦除计数通常涉及对在步骤308中获得的单个区块的擦除计数求和,并用区块总数除以所述总和。
将在步骤338中计算的平均擦除计数存储在与所述系统相关联的擦除计数区块中。如上文所提及,将所述平均擦除计数存储在一个擦除计数区块中,将其写入与该系统相关联的NAND存储器中。当将平均擦除计数存储在所述擦除计数区块中时,可以在步骤342中处理静态区块或含有数据并具有相对低的相关擦除计数的区块。下文相关图4将描述与一种处理一静态区块的方法相关联的步骤。一旦处理所述静态区块,初始化请求的处理就完成了。
在与闪存相关联的一组区块中,在任何给定时刻,通常存在被擦除的区块和含有数据(例如,用户数据)的区块。含有数据的某些区块可认为是“普通”区块,而其他区块可认为是静态区块。静态区块是含有很少改变的数据的区块。换句话说,很少擦除静态区块。通常,静态区块可以与存储在闪存中的相对旧的文件、存储在闪存中的可执行程序或存储在闪存中的操作系统相关联。静态区块一般具有大体上比在闪存内的大部分区块的擦除计数低的擦除计数。在一个实施例中,如果区块的擦除计数低于与闪存系统相关联的平均擦除计数的一个给定的百分比,例如约百分之二十,就可以认为含有数据的区块是静态区块。
由于静态区块含有的数据很少改变,所以可以将包含在静态区块的数据复制到具有相对高的擦除计数的区块中。即,当特定物理区块的内容相对静态且因此一般不改变时,实际上可以将所述内容重新指派给具有相对高的擦除计数的不同物理区块以便使得具有相对低的擦除计数的原物理区块用于存储更频繁改变的内容。参考图4,根据本发明的一个实施例将描述与处理静态区块相关联的步骤,即图3的步骤342。在步骤404开始处理系统的静态区块的程序342,其中访问区块(例如,区块“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”相关的擦除计数增加。一个区块,例如区块“C”,在步骤428中可以从最不频繁擦除区块组移到最频繁擦除区块组中,使得区块“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包括在整个系统中,而且(例如)可为存储卡的组件或嵌入闪存460的主机装置的组件。系统存储器454经配置以存储区块可能相关联的区块映射表462。通常,可以使用区块映射表462以便将LBA与和闪存460相关联的物理区块关联。
系统存储器454还保持有最不频繁擦除区块表466和最频繁擦除区块表470,所述表格和区块映射表462一样,一般响应初始化请求而形成当格式化整个闪存系统时创建平均擦除计数474,将其配置以容纳在闪存460内的区块平均擦除计数。在一个实施例中,也配置擦除计数区块480以含有在闪存460中的大体上所有区块的擦除计数。每发出初始化请求一次,可以计算已更新的平均擦除计数,并将其存储在擦除计数区块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的平均擦除计数的一个给定百分比(例如大于约百分之二十)时,所述擦除区块514可被添加到最频繁擦除区块组510中。当一新区块522被实际上添加到最频繁擦除区块组510中时,区块组510中具有最低擦除计数的擦除频繁的区块522可被重新指派到组502中。通常可通过更新关联区块映射表、最不频繁擦除区块表和最频繁擦除区块表(未图示)来反映所述重新指派。
当拟擦除或更新组502中所包括的区块514时,通常发生组502、最不频繁擦除区块组506和最频繁擦除区块组510之间的区块交换。或者,区块的交换或更新可大体上在期望分配一备用区块供用于组502中的任何时候发生。下面参考图6,将根据本发明的一个实施例描述在一个总存储器系统中(例如具有嵌入式闪存的主机系统)执行区块交换以允许区块的更为平均的损耗的方法。一个执行区块交换或者更新的过程600从步骤604开始,在步骤604中从一区块映射表“获得”或者以其他方式使用所述区块映射表识别一个区块(例如区块“Y”)。所获得的区块是将被实际上从区块映射表中交换出用于复制或更新其内容的区块。
一旦获得区块“Y”,则在步骤608可从最不频繁擦除区块表中有效地获得一个区块,例如区块“X”。也就是说,使用最不频繁擦除区块表来识别适当的备用区块以从最不频繁擦除区块组中获得备用区块。一般来说,尽管应了解区块“X”可以大体上可为与最不频繁擦除区块组以及最不频繁擦除区块表相关联的任何区块,但是区块“X”是在最不频繁擦除区块组中具有最低擦除计数的区块。在步骤612中,将内容或者更明确的说存储在区块“Y”中的数据内容或者新的内容复制到区块“X”中,所述内容将替代“Y”的初始内容。
在步骤616中,在将区块“Y”的内容复制到区块“X”中之后,将区块“X”实际上移到区块映射表中或与其相关联。换句话说,有效更新与区块“Y”和区块“X”相关联的映射,使得先前映射到区块“Y”的LBA重新映射到区块“X”。当区块“X”被实际上移到区块映射表中时,在步骤620中擦除区块“Y”。具体而言,使用任何适当的技术可擦除存储在区块“Y”中的数据内容(例如用户数据)。存储在与区块“Y”相关联的冗余区域中的与区块“Y”相关联的擦除计数在步骤624中增加以指示区块“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还与系统管理器模块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处理及其它功能。
虽然已经描述了本发明的一些实施例,但是应了解在不偏离本发明的精神或范畴情况下可以许多其它具体形式来体现本发明。举例而言,在基于将每个区块和平均擦除计数作比较而将区块指派到最频繁擦除区块表和最不频繁擦除区块表的场所中,分别基于大体上绝对判定哪个区块具有最高的擦除计数且哪个区块具有最低的擦除计数而将区块指派到最频繁擦除区块表和最不频繁擦除区块表作为替代。换句话说,不用将个别的区块擦除计数和平均擦除计数作比较,区块擦除计数可实际上相互比较来判断其中可以插入区块的适当的表。
通常将最不频繁擦除区块表描述成保持具有和备用区块一样的相对低的擦除计数的区块的参考。实际分配备用区块以用于使用区块映射表的整个过程中,使得大体上任何时候都需要备用区块,提供具有在最不频繁擦除区块中参考的最低擦除计数的区块用于使用。换句话说,当区块映射表中识别的区块换出时,将在最不频繁擦除区块组中具有最小擦除计数的区块的参考移到区块映射表中。然而,应意识到在区块交换或更新处理期间,通常可从最不频繁擦除区块组中取出任何一个区块。使用最不频繁擦除区块表从最不频繁擦除区块中选择任何一个区块以移到区块映射表中可减少与整个系统关联的耗用,而最不频繁擦除区块表中的区块没有必要进行分类。
识别和处理静态区块通常增强了使整个存储器系统内的区块平均地损耗能力。然而,在一个实施例中,没有必要识别和处理静态区块。例如,如果系统内预先占用了相对少的静态区块,那么在不偏离本发明的精神或范畴的情况下可大体上排除静态区块的识别和处理。
虽然将非易失性存储器系统描述为通过关联存储器控制器来控制或使用与主机系统相关联的软件或固件来控制,但是应了解包括擦除计数管理的损耗平衡处理可应用于下述非易失性存储器系统,其与大体上位于非易失性存储器系统外部的控制器进行通信。使用控制器的合适存储器系统包括(但不限于)PC卡、压缩快闪卡、安全数字卡、多媒体卡和包含闪存和闪存控制器的嵌入式芯片组。通过使用加载到主机系统上的软件或固件来控制的存储器系统包括嵌入式存储器装置。在一个实施例中,使用上文描述的擦除管理计数而且不使用与存储器系统关联的控制器的存储器系统可使用与主机,例如,主计算机系统相关联的控制器来实现损耗平衡。也就是说主机可直接寻址和管理存储器,其中通过使用主机上的控制器来达到损耗平衡。
一般来说,与损耗平衡的各种不同的处理和方法相关联的步骤也大不相同。在不偏离本发明的范畴的精神下,通常可添加、移除、改变和重新排序步骤。以实例说明之,在处理起始请求时不必包含处理静态区块。同样,在一个实施例中,是否将一个新的擦除元件区块有效地放入最频繁擦除区块表中的判断可基于所述擦除区块是否具有大于与最频繁擦除区块表关联的最小擦除计数的擦除计数。例如,此判断可基于擦除区块的擦除计数是否超过与最频繁擦除区块表关联的所有区块的平均擦除计数某一百分比,例如大约百分之二十。当擦除区块的擦除计数超过平均擦除计数的某一百分比时,将最频繁擦除区块中具有最小擦除计数的区块移到最不频繁擦除区块表中,同时将所述擦除区块移到最频繁擦除区块表中。因此,应认为本发明的实例仅具说明性而非限制性,而且本发明并不限于本文给出的细节,在权利要求范围的范畴内可对本发明进行修改。
Claims (50)
1.一种用于处理一存储器系统的一非易失性存储器中包括的元件的方法,
所述方法包含:
获得与复数个元件相关联的擦除计数,其中所述复数个元件中包括的每个元件都具有一关联擦除计数,每个元件的所述关联擦除计数经配置以指示所述元件被擦除的次数;
将所述复数个元件中包括的若干元件组成第一组,其中将若干擦除元件组成所述第一组包含选择所述复数个元件包括的元件,其具有与所述复数个擦除元件相关联的所述擦数计数的最低关联擦除计数;和将与所述第一组相关联的擦除计数存储到大体位于一表格内的一存储器组件中,其中所述存储器组件与所述存储器相关联。
2.根据权利要求1所述的方法,其中将所述若干元件分组包括:
比较与所述复数个元件相关联的所述擦除计数;和
将元件的预定数目识别为从所述复数个擦除元件中选择出的所述元件数目,所述复数个擦除元件具有与所述复数个擦除元件相关联的所述擦除计数的最低关联擦除计数。
3.根据权利要求1所述的方法,其进一步包括:
根据与每个元件相关联的所述擦除计数将所述第一组中的所述元件分类。
4.根据权利要求3所述的方法,其中将所述第一组中的所述元件分类包括将所述表格内的所述擦除计数分类。
5.根据权利要求3所述的方法,其进一步包括:
识别所述第一组中包括的一第一元件,所述第一元件具有与所述第一组相关联的最低擦除计数。
6.根据权利要求5所述的方法,其进一步包括:
解除所述第一组与所述第一元件的关联;和使所述复数个元件的一第二元件与所述第一组相关联。
7.根据权利要求6所述的方法,其进一步包括:
解除所述第二元件与所述第二组的关联。
8.根据权利要求1所述的方法,其中所述非易失性存储器为闪存。
9.根据权利要求8所述的方法,其中所述复数个元件为区块,且所述第一组为一组最不频繁擦除区块。
10.根据权利要求9所述的方法,其中所述第一组元件包括备用区块。
11.根据权利要求9所述的方法,其中获得所述擦除计数包括从一擦除计数区块获得所述擦除计数。
12.根据权利要求9所述的方法,其中所述闪存为NAND闪存。
13.一种存储器系统,其包含:
一第一存储器,所述第一存储器经配置以存储一个表格,所述表格经配置以包括与一第一组擦除存储元件相关联的项,所述擦除存储元件具有小于与所述存储器系统关联的平均擦除计数的关联擦除计数,所述第一组存储元件的每个存储元件的所述关联擦除计数器经配置以大体指示所述存储元件已被擦除的次数;
一第二存储器,所述第二存储器经配置以包括复数个擦除存储元件,所述复数个存储元件包括所述第一组存储元件,其中使用与所述复数个存储元件相关联的擦除计数器判定所述平均擦除计数;和
一处理器,所述处理器经配置以访问所述第一存储器和所述第二存储器。
14.根据权利要求13所述的存储器系统,其中使用所述表格大体识别所述第一组存储元件。
15.根据权利要求13所述的存储器系统,其中所述第二存储器为闪存且所述第一组存储元件包括一第一组区块。
16.一种用于处理一存储器系统的一非易失性存储器中包括的元件的方法,所述方法包含:
识别一第一组元件,其中所述第一组元件中包括的所述擦除元件的损耗小于所述第一组元件中未包括的所述擦除元件的损耗;
将与所述第一组元件相关联的项放入一数据结构中;
对所述数据结构内的所述项进行分类;和
使用所述已分类的项识别所述第一组元件内的一第一元件,其中所述第一元件的损耗小于所述第一组元件中包括的其它元件的损耗。
17.根据权利要求16所述的方法,其中每个元件具有一关联擦除计数,且识别所述第一组元件包括:
识别所述关联擦除计数相对低的若干擦除元件;和
将所述关联擦除计数相对低的所述若干擦除元件组成所述第一组。
18.根据权利要求17所述的方法,其中所述项包括所述第一组中所述元件的所述关联擦除计数。
19.根据权利要求17所述的方法,其进一步包含:
判定未包括的一第二元件的关联擦除计数何时被擦除;
当判定所述第二元件被擦除时,从所述第一组中移除所述第一元件;
将所述第二元件的所述内容和拟代替所述第二元件的所述内容的新内容之一复制到所述第一元件内;
从所述第二元件中擦除所述内容;和
将所述第二元件添加到所述第一组。
20.根据权利要求19所述的方法,其中从所述第一组中移除所述第一元件包括从所述数据结构中移除与所述第一元件相关联的项,且将所述第二元件添加到所述第一组包括将与所述第一组元件相关联的项放入一数据结构中。
21.根据权利要求20所述的方法,其进一步包括:
将所述数据结构内的所述项重新分类;和使用所述已分类项识别所述第一组元件内的一第三元件,其中所述第三元件的损耗小于所述第一组元件中包括的其它元件的损耗。
22.根据权利要求16所述的方法,其中所述第一元件经配置以代替被擦除的所述第一组中未包括的一第二元件。
23.根据权利要求16所述的方法,其中所述元件的每一个包括一经配置含有数据的区段,且其中所述第一组元件中包括的所述元件的每一个中包括的所述区段大体上是空的。
24.根据权利要求16所述的方法,其中所述第一组元件中包括的所述元件的每一个大体上被擦除。
25.根据权利要求16所述的方法,其中所述非易失性存储器为闪存,且所述元件为区块。
26.一种存储器系统,其包括:
存储器元件;
一系统存储器组件;
用于识别一第一组所述擦除存储器元件的构件,其中所述第一组存储器元件中包括的所述存储器元件的损耗小于未包含于所述第一组存储器元件中的所述擦除存储器元件的损耗;
用于将与所述第一组存储器元件相关联的项放入与所述系统存储器组件关联的一数据结构中的构件;
用于将所述数据结构内的所述项分类的构件;和
使用所述已分类项识别所述第一组存储器元件内的一第一存储器元件的构件,其中所述第一存储器元件的损耗小于所述第一组存储器元件中包括的其它擦除存储器元件的损耗。
27.根据权利要求26所述的存储器系统,其中每个存储器元件具有一个关联擦除计数,而且用于识别所述第一组元件的所述构件包括:
用于识别所述关联擦除计数相对低的若干元件的构件;和
用于将所述关联擦除计数相对低的所述若干元件组成所述第一组的构件。
28.根据权利要求27所述的存储器系统,其中所述项包括所述第一组中所述存储器元件的所述关联擦除计数。
29.根据权利要求27所述的存储器系统,其进一步包括:
用于判断一第一平均擦除计数的构件,使用每个存储器元件的所述关联擦除计数判定所述第一平均擦除计数,其中用于识别所述第一组存储器元件的构件包括用于将所述第一组存储器元件包括的每个存储器元件的所述擦除计数与所述第一平均擦除计数进行比较的构件。
30.根据权利要求26所述的存储器系统,其进一步包括:
用于从所述第一组中移除所述第一存储器元件的构件;和
用于将所述第一组中未包含的第二存储器元件添加到所述第一组的构件。
31.根据权利要求30所述的存储器系统,其中用于从所述第一组移除所述第一存储器元件的所述构件包括用于从所述数据结构移除与所述第一存储器元件相关联的项的构件,且用于将所述第二存储器元件添加到所述第一组中的所述构件包括用于将与所述第一组存储器元件相关联的项放入一数据结构的构件。
32.根据权利要求26所述的存储器系统,其中所述第一组存储器元件中包括的所述存储器元件为备用存储器元件。
33.根据权利要求26所述的存储器系统,其中所述第一组存储器元件中包括的所述存储器元件的每一个大体上已被擦除。
34.根据权利要求26所述的存储器系统,其中所述存储器元件为非易失性存储器区块。
35.一种用于处理与一非易失性存储器系统相关联的一组存储器元件的方法,所述方法包含:
将所述存储器元件组的所述擦除存储器元件的至少一个组成第一组,其中所述存储器元件的所述至少一个大体上不多于来自未分组到所述第一组中的所述存储器元件组的存储器元件;和
使组成所述第一组的所述存储器元件能被分配使用,其中使组成所述第一组的所述存储器元件能被分配使用包括大体上防止分配使用组成所述第一组的所述存储器元件,直到所述第一组中未包含的一第一存储器元件包含与所述第一存储器元件解除关联的内容。
36.根据权利要求35所述的方法,其中所述存储器元件组的每个存储器元件都具有一所述存储器元件组的所述存储器元件已被擦除的次数的关联指示,并且将所述存储器元件的所述至少一个组成所述第一组包括基于所述存储器元件的所述至少一个的所述关联指示将所述存储器元件的所述至少一个组成所述第一组。
37.根据权利要求36所述的方法,其中所述存储器元件的所述至少一个具有一关联指示,其小于未分组到所述第一组的所述存储器元件的所述关联指示。
38.一种存储器管理系统,其包含:
用于获得与复数个元件相关联的擦除计数的编码装置,其中所述复数个元件中包括的每个元件都具有一关联擦除计数,每个元件的所述关联擦除计数经配置以指示所述元件被擦除的次数;
用于将所述复数个元件中包含的若干元件组成一第一组的编码装置,其中用于将所述若干元件组成所述第一组的所述编码装置包含用于选择包含于所述复数个元件中的擦除元件的装置,其具有与所述复数个擦除元件关联的擦数计数的最低关联擦除计数;和
用于将与所述第一组相关联的所述擦除计数大体分类到一存储器组件中的一表格内的编码装置。
39.根据权利要求38所述的方法,其中用于将所述若干元件分组的所述编码装置包括:
用于比较与所述复数个元件相关联的所述擦除计数的编码装置;和
用于将一元件预定数目识别为从所述复数个擦除元件中选择的元件的数目的编码装置,其具有与所述复数个擦除元件相关联的所述擦除计数的最低关联擦除计数。
40.根据权利要求38所述的存储器管理系统,其进一步包括:
用于根据与每个元件相关联的所述擦除计数将将所述第一组中的所述元件分类的编码装置。
41.根据权利要求40所述的存储器管理系统,其中用于将所述第一组中的所述元件分类的编码装置包括用于将所述表格内的所述擦除计数分类的编码装置。
42.根据权利要求40所述的存储器管理系统,其进一步包括:
用于识别所述第一组中包含的一第一元件的编码装置,所述第一元件具有与所述第一组相关联的最低擦除计数。
43.根据权利要求42所述的存储器管理系统,其进一步包括:
用于解除所述第一元件与所述第一组的关联的编码装置;
用于使所述复数个元件的一第二元件与所述第一组相关联的编码装置;和
用于解除所述第二元件与第二组的关联的编码装置。
44.根据权利要求38所述的存储器管理系统,其中所述非易失性存储器为闪存且所述复数个元件为区块,所述第一组为一组最不频繁擦除的区块。
45.根据权利要求44所述的存储器管理系统,其中所述第一组元件包括备用区块。
45.根据权利要求44所述的存储器管理系统,其中获得所述擦除计数包括从一擦除计数区块中获得所述擦除计数。
46.一种用于管理存储器的方法,所述存储器包括复数个区块,所述方法包含:
识别所述复数个区块中包括的一组擦除区块;
识别所述擦除区块组中包括的一第一组擦除区块,其中所述第一组擦除区块包括具有比所述擦除区块组中大体所有其它擦除区块更低的擦除计数的擦除区块;
在一存储器组件中创建一结构,其中所述结构包括数个项,所述数个项包括所述第一组中包括的所述擦除区块的擦除计数;
将所述数个项分类;和
使用所述已分类的数个项识别一第一区块,其中所述第一区块被配置成在所述第一组擦除区块中包括的所述其它擦除区块之前从所述第一组擦除区块中被移除。
47.根据权利要求46所述的方法,其中将所述数个项分类包括使用所述第一组中包括的所述擦除区块的所述擦除计数将所述数个项分类。
48.根据权利要求47所述的方法,其中使用所述已分类的项识别所述第一区块包括将所述第一区块识别为具有比所述第一组中包括的大体上所有其它擦除区块更低的擦除计数。
49.根据权利要求46所述的方法,其中所述擦除区块为擦除非易失性存储器区块,且所述存储器组件是一NAND存储器。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/281,824 | 2002-10-28 | ||
| US10/281,824 US7096313B1 (en) | 2002-10-28 | 2002-10-28 | Tracking the least frequently erased blocks in non-volatile memory systems |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN1698036A true CN1698036A (zh) | 2005-11-16 |
Family
ID=32228777
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CNA038247801A Pending CN1698036A (zh) | 2002-10-28 | 2003-09-10 | 跟踪非易失性存储器系统中最不频繁擦除区块 |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US7096313B1 (zh) |
| EP (1) | EP1559017A1 (zh) |
| JP (1) | JP2006504199A (zh) |
| KR (1) | KR20050084879A (zh) |
| CN (1) | CN1698036A (zh) |
| AU (1) | AU2003270529A1 (zh) |
| TW (1) | TWI249100B (zh) |
| WO (1) | WO2004040459A1 (zh) |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101256534B (zh) * | 2007-03-01 | 2010-10-06 | 创惟科技股份有限公司 | 闪存的高效率静态平均抹除方法 |
| CN101409108B (zh) * | 2007-10-09 | 2011-04-13 | 群联电子股份有限公司 | 平均磨损方法及使用此方法的控制器 |
| WO2011072538A1 (zh) * | 2009-12-17 | 2011-06-23 | 中兴通讯股份有限公司 | Nandflash擦除均衡的方法及装置 |
| CN101419842B (zh) * | 2008-11-07 | 2012-04-04 | 成都市华为赛门铁克科技有限公司 | 硬盘的损耗均衡方法、装置及系统 |
| CN102646447A (zh) * | 2011-02-22 | 2012-08-22 | 三星电子株式会社 | 非易失性存储器件、存储控制器及其方法 |
| CN104346286A (zh) * | 2013-07-25 | 2015-02-11 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
| CN111063383A (zh) * | 2018-10-17 | 2020-04-24 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
| CN112445720A (zh) * | 2019-08-29 | 2021-03-05 | 美光科技公司 | 对存储器子系统部件的存取频率进行分类 |
Families Citing this family (94)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2004040586A1 (en) * | 2002-10-28 | 2004-05-13 | Sandisk Corporation | Automated wear leveling in non-volatile storage systems |
| US6901498B2 (en) * | 2002-12-09 | 2005-05-31 | Sandisk Corporation | Zone boundary adjustment for defects in non-volatile memories |
| TWI243303B (en) * | 2003-11-14 | 2005-11-11 | Hon Hai Prec Ind Co Ltd | System and method for managing flash file stored in a flash memory |
| EP1758027B1 (en) * | 2003-12-30 | 2010-07-14 | SanDisk Corporation | Non-volatile memory and method with control data management |
| US7433993B2 (en) | 2003-12-30 | 2008-10-07 | San Disk Corportion | Adaptive metablocks |
| US7383375B2 (en) | 2003-12-30 | 2008-06-03 | Sandisk Corporation | Data run programming |
| US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
| US20060004951A1 (en) * | 2004-06-30 | 2006-01-05 | Rudelic John C | Method and apparatus to alter code in a memory |
| US20060069849A1 (en) * | 2004-09-30 | 2006-03-30 | Rudelic John C | Methods and apparatus to update information in a memory |
| US20060069850A1 (en) * | 2004-09-30 | 2006-03-30 | Rudelic John C | Methods and apparatus to perform a reclaim operation in a nonvolatile memory |
| US7441067B2 (en) | 2004-11-15 | 2008-10-21 | Sandisk Corporation | Cyclic flash memory wear leveling |
| US20060149891A1 (en) * | 2004-12-30 | 2006-07-06 | Rudelic John C | Relocated reclaim block |
| US7315917B2 (en) | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
| US20060256623A1 (en) * | 2005-05-12 | 2006-11-16 | Micron Technology, Inc. | Partial string erase scheme in a flash memory device |
| CN100533409C (zh) * | 2005-07-29 | 2009-08-26 | 松下电器产业株式会社 | 存储器控制器,非易失性存储设备,非易失性存储系统,和非易失性存储器地址管理方法 |
| US8291295B2 (en) | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
| US7631245B2 (en) * | 2005-09-26 | 2009-12-08 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
| US7426605B2 (en) * | 2005-09-30 | 2008-09-16 | Rudelic John C | Method and apparatus for optimizing flash device erase distribution |
| US7509471B2 (en) | 2005-10-27 | 2009-03-24 | Sandisk Corporation | Methods for adaptively handling data writes in non-volatile memories |
| US7631162B2 (en) | 2005-10-27 | 2009-12-08 | Sandisck Corporation | Non-volatile memory with adaptive handling of data writes |
| JP4791831B2 (ja) * | 2006-01-20 | 2011-10-12 | 株式会社東芝 | 半導体記憶装置 |
| JP4846384B2 (ja) * | 2006-02-20 | 2011-12-28 | 株式会社東芝 | 半導体記憶装置 |
| JP4836608B2 (ja) * | 2006-02-27 | 2011-12-14 | 株式会社東芝 | 半導体記憶装置 |
| JP4227149B2 (ja) * | 2006-04-19 | 2009-02-18 | 三菱電機株式会社 | 電子制御装置の情報記憶方法 |
| JP2007305267A (ja) * | 2006-05-15 | 2007-11-22 | Toshiba Corp | 半導体記憶装置 |
| KR100791325B1 (ko) * | 2006-10-27 | 2008-01-03 | 삼성전자주식회사 | 비휘발성 메모리를 관리하는 장치 및 방법 |
| US20080126685A1 (en) * | 2006-11-24 | 2008-05-29 | Radoslav Danilak | System, method, and computer program product for reducing memory write operations using an instruction set |
| US7747813B2 (en) * | 2006-11-24 | 2010-06-29 | Sandforce, Inc. | Multi-memory device system and method for managing a lifetime thereof |
| US7809900B2 (en) * | 2006-11-24 | 2010-10-05 | Sandforce, Inc. | System, method, and computer program product for delaying an operation that reduces a lifetime of memory |
| US7904619B2 (en) * | 2006-11-24 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for reducing memory write operations using difference information |
| US7904764B2 (en) * | 2006-11-24 | 2011-03-08 | Sandforce, Inc. | Memory lifetime gauging system, method and computer program product |
| US8090980B2 (en) * | 2006-12-08 | 2012-01-03 | Sandforce, Inc. | System, method, and computer program product for providing data redundancy in a plurality of storage devices |
| US7904672B2 (en) | 2006-12-08 | 2011-03-08 | Sandforce, Inc. | System and method for providing data redundancy after reducing memory writes |
| KR100881669B1 (ko) * | 2006-12-18 | 2009-02-06 | 삼성전자주식회사 | 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치 |
| KR100817204B1 (ko) * | 2006-12-22 | 2008-03-27 | 재단법인서울대학교산학협력재단 | 플래시 메모리의 매핑 방법 및 장치 |
| US7731365B2 (en) * | 2007-03-19 | 2010-06-08 | Johnson&Johnson Vision Care, Inc. | Method of fitting contact lenses |
| US7689762B2 (en) * | 2007-05-03 | 2010-03-30 | Atmel Corporation | Storage device wear leveling |
| US20080294814A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Flash Memory System with Management of Housekeeping Operations |
| US20080294813A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Managing Housekeeping Operations in Flash Memory |
| TWI362044B (en) | 2007-11-09 | 2012-04-11 | Transcend Information Inc | Storage apparatus and method for accessing data and for managing memory block |
| US8296498B2 (en) * | 2007-11-13 | 2012-10-23 | Sandisk Technologies Inc. | Method and system for virtual fast access non-volatile RAM |
| US7849275B2 (en) * | 2007-11-19 | 2010-12-07 | Sandforce, Inc. | System, method and a computer program product for writing data to different storage devices based on write frequency |
| US7903486B2 (en) * | 2007-11-19 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory |
| US9183133B2 (en) | 2007-11-28 | 2015-11-10 | Seagate Technology Llc | System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory |
| JP4461170B2 (ja) | 2007-12-28 | 2010-05-12 | 株式会社東芝 | メモリシステム |
| US8068365B2 (en) * | 2008-02-04 | 2011-11-29 | Mosaid Technologies Incorporated | Non-volatile memory device having configurable page size |
| WO2009097681A1 (en) | 2008-02-04 | 2009-08-13 | Mosaid Technologies Incorporated | Flexible memory operations in nand flash devices |
| US20100017566A1 (en) * | 2008-07-15 | 2010-01-21 | Radoslav Danilak | System, method, and computer program product for interfacing computing device hardware of a computing device and an operating system utilizing a virtualization layer |
| US20100017588A1 (en) * | 2008-07-15 | 2010-01-21 | Radoslav Danilak | System, method, and computer program product for providing an extended capability to a system |
| US20100064093A1 (en) * | 2008-09-09 | 2010-03-11 | Radoslav Danilak | System, method, and computer program product for converting data in a binary representation to a non-power of two representation |
| US20100146236A1 (en) * | 2008-12-08 | 2010-06-10 | Radoslav Danilak | System, method, and computer program product for rendering at least a portion of data useless in immediate response to a delete command |
| US8700840B2 (en) | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
| US8094500B2 (en) | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
| US8244960B2 (en) | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
| KR101586047B1 (ko) | 2009-03-25 | 2016-01-18 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 프로그램 방법 |
| US8230159B2 (en) | 2009-03-27 | 2012-07-24 | Lsi Corporation | System, method, and computer program product for sending logical block address de-allocation status information |
| US8090905B2 (en) * | 2009-03-27 | 2012-01-03 | Sandforce, Inc. | System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format |
| US20100250830A1 (en) * | 2009-03-27 | 2010-09-30 | Ross John Stenfort | System, method, and computer program product for hardening data stored on a solid state disk |
| US8671258B2 (en) | 2009-03-27 | 2014-03-11 | Lsi Corporation | Storage system logical block address de-allocation management |
| US8176295B2 (en) | 2009-04-20 | 2012-05-08 | Imation Corp. | Logical-to-physical address translation for a removable data storage device |
| US8065469B2 (en) | 2009-04-20 | 2011-11-22 | Imation Corp. | Static wear leveling |
| US20110004718A1 (en) * | 2009-07-02 | 2011-01-06 | Ross John Stenfort | System, method, and computer program product for ordering a plurality of write commands associated with a storage device |
| US9792074B2 (en) * | 2009-07-06 | 2017-10-17 | Seagate Technology Llc | System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips |
| US8140712B2 (en) * | 2009-07-17 | 2012-03-20 | Sandforce, Inc. | System, method, and computer program product for inserting a gap in information sent from a drive to a host device |
| US8516166B2 (en) * | 2009-07-20 | 2013-08-20 | Lsi Corporation | System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory |
| US8402242B2 (en) * | 2009-07-29 | 2013-03-19 | International Business Machines Corporation | Write-erase endurance lifetime of memory storage devices |
| US20110041005A1 (en) * | 2009-08-11 | 2011-02-17 | Selinger Robert D | Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System |
| US8108737B2 (en) * | 2009-10-05 | 2012-01-31 | Sandforce, Inc. | System, method, and computer program product for sending failure information from a serial ATA (SATA) solid state drive (SSD) to a host device |
| US8612804B1 (en) | 2010-09-30 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
| US9405670B2 (en) * | 2011-06-09 | 2016-08-02 | Tsinghua University | Wear leveling method and apparatus |
| US8898373B1 (en) | 2011-06-29 | 2014-11-25 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
| US8750045B2 (en) | 2012-07-27 | 2014-06-10 | Sandisk Technologies Inc. | Experience count dependent program algorithm for flash memory |
| US20160011782A1 (en) * | 2013-02-27 | 2016-01-14 | Hitachi, Ltd. | Semiconductor storage |
| US9466377B2 (en) | 2014-02-26 | 2016-10-11 | Infineon Technologies Ag | Method and device for processing an erase counter |
| US10114562B2 (en) | 2014-09-16 | 2018-10-30 | Sandisk Technologies Llc | Adaptive block allocation in nonvolatile memory |
| US9875039B2 (en) | 2014-09-30 | 2018-01-23 | Sandisk Technologies Llc | Method and apparatus for wear-leveling non-volatile memory |
| US9830087B2 (en) * | 2014-11-13 | 2017-11-28 | Micron Technology, Inc. | Memory wear leveling |
| US10691531B2 (en) | 2014-12-04 | 2020-06-23 | Western Digital Technologies, Inc. | Systems and methods for multi-zone data tiering for endurance extension in solid state drives |
| US10338817B2 (en) | 2014-12-30 | 2019-07-02 | Sandisk Technologies Llc | Systems and methods for storage recovery |
| US20170139826A1 (en) * | 2015-11-17 | 2017-05-18 | Kabushiki Kaisha Toshiba | Memory system, memory control device, and memory control method |
| CN107301015B (zh) * | 2016-04-15 | 2022-05-13 | 恩智浦美国有限公司 | 用于减少存储器设备上的压力的系统和方法 |
| US9817593B1 (en) | 2016-07-11 | 2017-11-14 | Sandisk Technologies Llc | Block management in non-volatile memory system with non-blocking control sync system |
| US10282111B2 (en) | 2016-07-29 | 2019-05-07 | Western Digital Technologies, Inc. | Adaptive wear levelling |
| CN106246168B (zh) | 2016-08-29 | 2017-09-19 | 中国科学院地质与地球物理研究所 | 一种近钻头钻具姿态随钻测量装置及测量方法 |
| CN106223937B (zh) | 2016-08-31 | 2017-09-29 | 中国科学院地质与地球物理研究所 | 一种适用于井下近钻头无线短传的接收装置 |
| CN106246169B (zh) | 2016-08-31 | 2017-09-01 | 中国科学院地质与地球物理研究所 | 一种适用于井下近钻头无线短传发射的机械装置 |
| CN106246167B (zh) | 2016-08-31 | 2017-07-14 | 中国科学院地质与地球物理研究所 | 近钻头恒功率无线短传方法及装置 |
| CN106246163B (zh) | 2016-08-31 | 2017-07-14 | 中国科学院地质与地球物理研究所 | 近钻头动态井斜测量方法及装置 |
| CN107025066A (zh) | 2016-09-14 | 2017-08-08 | 阿里巴巴集团控股有限公司 | 在基于闪存的存储介质中写入存储数据的方法和装置 |
| CN106527969B (zh) * | 2016-09-21 | 2017-09-19 | 中国科学院地质与地球物理研究所 | 一种寿命均衡的NandFlash存储器读写方法 |
| CN106640055B (zh) | 2016-11-21 | 2017-11-17 | 中国科学院地质与地球物理研究所 | 一种适用于随钻方位声波测井的接收装置 |
| CN106522925B (zh) | 2016-11-21 | 2018-04-13 | 中国科学院地质与地球物理研究所 | 一种随钻方位声波信号接收换能器封装装置 |
| CN106869907B (zh) | 2017-01-19 | 2019-08-06 | 中国科学院地质与地球物理研究所 | 基于电场理论的近钻头无线短传地面环境下标定方法 |
| US10578754B2 (en) | 2017-01-19 | 2020-03-03 | Institute Of Geology And Geophysics, Chinese Academy Of Sciences | Sinusoidal excitation method and apparatus for multi-pole acoustic logging while drilling |
Family Cites Families (34)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2685173B2 (ja) | 1986-05-31 | 1997-12-03 | キヤノン株式会社 | メモリ書き込み制御方法 |
| JPH07109717B2 (ja) | 1986-05-31 | 1995-11-22 | キヤノン株式会社 | メモリ書き込み制御方法 |
| US5268870A (en) | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
| EP0618535B1 (en) | 1989-04-13 | 1999-08-25 | SanDisk Corporation | EEPROM card with defective cell substitution and cache memory |
| US5222109A (en) | 1990-12-28 | 1993-06-22 | Ibm Corporation | Endurance management for solid state files |
| US6230233B1 (en) | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
| US5438573A (en) | 1991-09-13 | 1995-08-01 | Sundisk Corporation | Flash EEPROM array data and header file structure |
| JPH0750558B2 (ja) | 1992-09-22 | 1995-05-31 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 一括消去型不揮発性メモリ |
| JP2856621B2 (ja) | 1993-02-24 | 1999-02-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置 |
| US5388083A (en) | 1993-03-26 | 1995-02-07 | Cirrus Logic, Inc. | Flash memory mass storage architecture |
| US5485595A (en) | 1993-03-26 | 1996-01-16 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporating wear leveling technique without using cam cells |
| JP3507132B2 (ja) * | 1994-06-29 | 2004-03-15 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置およびその記憶制御方法 |
| US5954828A (en) | 1995-01-05 | 1999-09-21 | Macronix International Co., Ltd. | Non-volatile memory device for fault tolerant data |
| US5568423A (en) * | 1995-04-14 | 1996-10-22 | Unisys Corporation | Flash memory wear leveling system providing immediate direct access to microprocessor |
| US5907856A (en) | 1995-07-31 | 1999-05-25 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
| US5845313A (en) | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
| US5835935A (en) | 1995-09-13 | 1998-11-10 | Lexar Media, Inc. | Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory |
| US6125435A (en) | 1995-09-13 | 2000-09-26 | Lexar Media, Inc. | Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory |
| US5933847A (en) | 1995-09-28 | 1999-08-03 | Canon Kabushiki Kaisha | Selecting erase method based on type of power supply for flash EEPROM |
| US5860082A (en) | 1996-03-28 | 1999-01-12 | Datalight, Inc. | Method and apparatus for allocating storage in a flash memory |
| US5715193A (en) | 1996-05-23 | 1998-02-03 | Micron Quantum Devices, Inc. | Flash memory system and method for monitoring the disturb effect on memory cell blocks due to high voltage conditions of other memory cell blocks |
| US5956473A (en) | 1996-11-25 | 1999-09-21 | Macronix International Co., Ltd. | Method and system for managing a flash memory mass storage system |
| US5832493A (en) | 1997-04-24 | 1998-11-03 | Trimble Navigation Limited | Flash file management system |
| US6009496A (en) | 1997-10-30 | 1999-12-28 | Winbond Electronics Corp. | Microcontroller with programmable embedded flash memory |
| KR100297986B1 (ko) | 1998-03-13 | 2001-10-25 | 김영환 | 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법 |
| KR100533140B1 (ko) | 1998-09-04 | 2005-12-02 | 하이퍼스톤 아게 | 제한된 소거빈도의 메모리의 액세스제어방법 |
| US6226759B1 (en) | 1998-09-28 | 2001-05-01 | International Business Machines Corporation | Method and apparatus for immediate data backup by duplicating pointers and freezing pointer/data counterparts |
| US6260156B1 (en) | 1998-12-04 | 2001-07-10 | Datalight, Inc. | Method and system for managing bad areas in flash memory |
| US6282605B1 (en) | 1999-04-26 | 2001-08-28 | Moore Computer Consultants, Inc. | File system for non-volatile computer memory |
| US6426893B1 (en) | 2000-02-17 | 2002-07-30 | Sandisk Corporation | Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks |
| KR100644602B1 (ko) | 2000-10-11 | 2006-11-10 | 삼성전자주식회사 | 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조 |
| JP2002251884A (ja) * | 2001-02-21 | 2002-09-06 | Toshiba Corp | 半導体記憶装置及びそのシステム装置 |
| US6732221B2 (en) | 2001-06-01 | 2004-05-04 | M-Systems Flash Disk Pioneers Ltd | Wear leveling of static areas in flash memory |
| US6683817B2 (en) * | 2002-02-21 | 2004-01-27 | Qualcomm, Incorporated | Direct memory swapping between NAND flash and SRAM with error correction coding |
-
2002
- 2002-10-28 US US10/281,824 patent/US7096313B1/en not_active Expired - Lifetime
-
2003
- 2003-09-10 CN CNA038247801A patent/CN1698036A/zh active Pending
- 2003-09-10 EP EP03752227A patent/EP1559017A1/en not_active Withdrawn
- 2003-09-10 AU AU2003270529A patent/AU2003270529A1/en not_active Abandoned
- 2003-09-10 WO PCT/US2003/028429 patent/WO2004040459A1/en not_active Ceased
- 2003-09-10 KR KR1020057007322A patent/KR20050084879A/ko not_active Withdrawn
- 2003-09-10 JP JP2004548318A patent/JP2006504199A/ja active Pending
- 2003-09-18 TW TW092125790A patent/TWI249100B/zh not_active IP Right Cessation
Cited By (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101256534B (zh) * | 2007-03-01 | 2010-10-06 | 创惟科技股份有限公司 | 闪存的高效率静态平均抹除方法 |
| CN101409108B (zh) * | 2007-10-09 | 2011-04-13 | 群联电子股份有限公司 | 平均磨损方法及使用此方法的控制器 |
| CN101419842B (zh) * | 2008-11-07 | 2012-04-04 | 成都市华为赛门铁克科技有限公司 | 硬盘的损耗均衡方法、装置及系统 |
| WO2011072538A1 (zh) * | 2009-12-17 | 2011-06-23 | 中兴通讯股份有限公司 | Nandflash擦除均衡的方法及装置 |
| CN102646447A (zh) * | 2011-02-22 | 2012-08-22 | 三星电子株式会社 | 非易失性存储器件、存储控制器及其方法 |
| CN104346286B (zh) * | 2013-07-25 | 2017-08-22 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
| CN104346286A (zh) * | 2013-07-25 | 2015-02-11 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
| CN107329902A (zh) * | 2013-07-25 | 2017-11-07 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
| CN107329902B (zh) * | 2013-07-25 | 2020-12-22 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
| CN111063383A (zh) * | 2018-10-17 | 2020-04-24 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
| CN111063383B (zh) * | 2018-10-17 | 2023-10-27 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
| CN112445720A (zh) * | 2019-08-29 | 2021-03-05 | 美光科技公司 | 对存储器子系统部件的存取频率进行分类 |
| US11650933B2 (en) | 2019-08-29 | 2023-05-16 | Micron Technology, Inc. | Classifying access frequency of a memory sub-system component |
Also Published As
| Publication number | Publication date |
|---|---|
| US7096313B1 (en) | 2006-08-22 |
| JP2006504199A (ja) | 2006-02-02 |
| WO2004040459A1 (en) | 2004-05-13 |
| AU2003270529A1 (en) | 2004-05-25 |
| EP1559017A1 (en) | 2005-08-03 |
| KR20050084879A (ko) | 2005-08-29 |
| TWI249100B (en) | 2006-02-11 |
| TW200428213A (en) | 2004-12-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN1698036A (zh) | 跟踪非易失性存储器系统中最不频繁擦除区块 | |
| CN100492322C (zh) | 非易失性存储系统中的损耗平衡 | |
| CN100538660C (zh) | 管理擦除计数区块的方法和设备 | |
| US7287118B2 (en) | Maintaining an average erase count in a non-volatile storage system | |
| CN100385415C (zh) | 用于维护擦除计数的非易失性存储器系统、数据结构和区块 | |
| EP1559113B1 (en) | Tracking the most frequently erased blocks in non-volatile storage systems |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C12 | Rejection of a patent application after its publication | ||
| RJ01 | Rejection of invention patent application after publication |
Open date: 20051116 |