CN1701390A - 跟踪非易失性存储器系统中最频繁擦除区块 - Google Patents
跟踪非易失性存储器系统中最频繁擦除区块 Download PDFInfo
- Publication number
- CN1701390A CN1701390A CNA038247844A CN03824784A CN1701390A CN 1701390 A CN1701390 A CN 1701390A CN A038247844 A CNA038247844 A CN A038247844A CN 03824784 A CN03824784 A CN 03824784A CN 1701390 A CN1701390 A CN 1701390A
- Authority
- CN
- China
- Prior art keywords
- assembly
- erase count
- group
- memory
- block
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
- G11C16/3495—Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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)
- Non-Volatile Memory (AREA)
- Memory System (AREA)
- Filling Or Discharging Of Gas Storage Vessels (AREA)
- Radiation-Therapy Devices (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明揭示一种在一非易失性存储器系统中执行损耗平衡的方法和设备。根据本发明的一个方面,一种用于处理存储器系统的非易失性存储器中包括的组件的方法包括获得与复数个擦除组件相关联的擦除计数。所述复数个组件中包括的每个组件都具有关联擦除计数,所述计数指示该组件已经被擦除的次数。所述方法也包括将所述复数个组件中包括的若干擦除组件组成第一组,并且将与所述第一组相关联的擦除次数存储到所述存储器系统的一个存储器组件中。将所述第一组的所述若干组件分组通常包括选择所述复数个组件中包括的擦除组件,所述擦除组件具有与所述复数个组件相关联的擦除计数中的最高关联擦除计数。
Description
相关申请案的交叉参考
本发明涉及题为“AUTOMATED WEAR LEVELLING INNON-VOLATILE STORAGE SYSTEMS”的共同代决美国专利申请案第__号(代理人档案号SANDP005/SDK0278.000US);2002年10月28日提交的题为“WEAR-LEVELING IN NON-VOLATILE SYSTEMS”的共同代决美国专利申请案第10/281,739号(代理人档案号SANDP023/SDK0366.000US);2002年10月28日提交的题为“TRACKINGTHE LEAST FREQUENTLY ERASED BLOCKS IN NON-VOLATILEMEMORY SYSTEMS”的共同代决美国专利申请案第10/281,824号(代理人档案号SANDP026/SDK0366.003);2002年10月28日提交的题为“METHODAND APPARATUS FOR SPLITTING A LOGICAL BLOCK”的共同代决美国专利申请案第10/281,631号(代理人档案号SANDP028/SDK0371.000US);2002年10月28日提交的题为“METHOD AND APPARATUS FORGROUPING PAGES WITHIN A BLOCK”的共同代决美国专利申请案第10/281,855号(代理人档案号SANDP029/DSK0410.000US);2002年10月28日存档的标题为“METHOD AND APPARATUS FOR RESOLVINGPHYSICAL BLOCKS ASSOCIATED WITH A COMMON LOGICAL BLOCK”的共同代决美国专利申请案第10/281,762号(代理人档案号SANDP030/SDK0416.000US);美国专利第6,081,447号和第6,230,233号,上述各案以全文引用的方式并入本文中。
技术领域
本发明大致涉及海量数字数据存储系统。更明确地说,本发明涉及使与非易失性存储系统中的存储区域相关联的损耗大体上在所有存储区域中扩展的系统和方法。
背景技术
归因于存储系统压缩的物理尺寸和非易失性存储器可反复重编程的能力,非易失性存储器系统(例如闪存存储系统)的使用日渐增长。闪存存储系统的压缩的物理尺寸促使在装置中使用所述存储系统变得越来越流行。使用闪存存储系统的装置包括(但不限于)数字相机、数字摄像机、数字音乐播放器、手提式个人计算机和全球定位装置。对闪存存储系统中所含的非易失性存储器进行反复重编的能力使得使用和再使用闪存存储系统成为可能。
一般来说,闪存存储系统可包括闪存卡和闪存芯片组。闪存芯片组一般包括闪存组件和控制器组件。通常可配置闪存芯片组组装成一个嵌入式系统。所述组装件或主机系统的制造商通常要求组件形式的闪存(flashmemory)以及其它组件,然后将闪存和其它组件组装成一个主机系统。
尽管非易失性存储器,或者更具体地说闪存系统中的闪存存储区块,可以反复地编程及擦除,但是该区块损坏之前,也就是存储器开始变小之前每一区块或物理位置仅可擦除一定的次数。即每一区块都具有编写和擦除循环极限。在某些存储器中,在认为区块不能使用之前可以将区块擦除约一万次。在其它存储器中,在认为区块损坏之前该区块可擦除高达约十万次或者甚至一百万次。当一个区块损坏时,由此导致闪存系统的整个存储容量的一部分的使用损失或性能显着下降,例如存储数据损失或不能存储数据可能对闪存系统的用户产生不利影响。
在闪存系统内的区块上或物理位置上的损耗根据每一个区块的编写次数而变化。如果将一个区块,更一般地说一个存储组件编写一次就不能再有效地重编程,那幺编写和擦除循环的次数以及由此与所述区块相关联的损耗通常相对低。然而,如果重复写入和擦除(例如循环)一个区块,则与所述区块相关联的损耗通常将相对高。当主机(例如访问或使用闪存系统的系统)使用逻辑区块地址(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时增加。当擦除含有数据的区块时,数据区域和冗余区域都被擦除或清空。将擦除区块添加到备用区块库中,其含有与其它表格的擦除区块相比含有较小擦除计数的擦除区块。备用区块表实质上就是LFEB(最不频繁擦除区块)表。在本发明的一个实施例中,具有大擦除计数的擦除区块经添加到含有擦除区块的库,所述擦除区块含有比其它表的擦除区块更大的擦除计数。所述库为MFEB(最频繁擦除区块)表。擦除的区块的擦除计数增加1,并且根据所述计数的值将其保存在LFEB或者MFEB表中。
在初始化请求期间可访问擦除计数(例如擦除计数214)。当出现下列情况时,例如:当向系统(例如包括嵌入式闪存的系统)供电时,当系统内的备用区块运行减慢时,当用户发出平衡区块分配的请求时,以及当用户发出使区块使用更平均的请求时,可发出初始化请求。图3是根据本发明的一个实施例说明处理关于一个闪存系统的初始化请求的步骤的处理流程图。一般来说,可以通过用户开始或通过与闪存系统相关联的控制器,例如定期地或当满足触发条件时大体上自动地开始初始化请求。响应初始化请求的程序300从步骤304开始,其中实际接收初始化请求。通过与待初始化的闪存通信的处理器或控制器可以接收初始化请求。例如,可通过用户在打开主机电源时或当平衡区块分配时提出此请求。
一旦接收初始化请求,在步骤306中获得平均擦除计数。在一个实施例中,平均擦除计数存储在擦除计数区块中,将其写入与所述系统相关联的NAND存储器中。含有平均擦除计数的擦除计数区块(ECB)和每一区块的擦除计数存储于闪存的一个区块中。应了解当创建擦除计数区块时,例如,当开始格式化所述系统时,通常将在表格中的平均擦除计数和每一区块的擦除计数初始化为零值。计算平均擦除计数之后,获得在该系统中的实质上所有区块的擦除计数。如上文关于图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”从最不频繁擦除区块表中分离时,程序流程从步骤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 (46)
1.一种用于处理一存储器系统的一非易失性存储器中包括的组件的方法,所述方法包含:
获得与复数个组件相关联的擦除计数,其中所述复数个组件中包括的每个组件都具有一关联擦除计数,每个组件的所述关联擦除计数经配置以指示所述组件的被擦除次数;
将所述复数个组件中包括的若干组件组成第一组,其中将所述若干组件组成所述第一组包含选择所述复数个擦除组件中包括的擦除组件,其具有与所述复数个擦除组件相关联的所述擦数计数的最高关联擦除计数;和
将与所述第一组相关联的擦除计数存储到大体位于一表格内的存储器组件中,其中所述存储器组件与所述存储器系统相关联。
2.根据权利要求1所述的方法,其中将所述若干组件分组包括:
比较与所述复数个组件相关联的所述擦除计数;和
将组件的一预定数目识别为从所述复数个擦除组件中选择出的擦除组件的数目,所述擦除组件具有与所述复数个擦除组件相关联的所述擦除计数的最高关联擦除计数。
3.根据权利要求1所述的方法,其进一步包括:
获得一个与所述复数个组件相关联的平均擦除计数。
4.根据权利要求3所述的方法,其中将所述若干组件分组包括:
将与所述复数个组件相关联的所述擦除计数与所述平均擦除计数进行比较;和
将所述组件数目识别为从所述复数个擦除组件中选择出的组件的数目,其具有比所述平均擦除计数大出一预定余量的关联擦除计数。
5.根据权利要求1所述的方法,其进一步包括:
根据与每个组件相关联的所述擦除计数将所述第一组中的所述组件分类。
6.根据权利要求5所述的方法,其中将所述第一组中的所述组件分类包括将所述表格内的所述擦除计数分类。
7.根据权利要求5所述的方法,其进一步包括:
识别所述第一组中包括的一第一组件,所述第一组件具有与所述第一组相关联的最低擦除计数。
8.根据权利要求7所述的方法,其进一步包括:
解除所述第一组中与所述第一组件的关联;和
使所述复数个组件的一第二组件与所述第一组相关联,其中与所述第二组件相关联的所述擦除计数高于与所述第一组件相关联的所述擦除计数。
9.根据权利要求7所述的方法,其进一步包括:
计算一个与所述第一组相关联的平均擦除计数;
判定与所述复数个组件中包括的第二擦除组件相关联的所述擦除计数何时大于所述平均擦除计数;
当判定与所述第二组件相关联的所述擦除计数大于所述平均擦除计数时,解除所述第一组件与所述第一组的关联;和
当判定与所述第二组件相关联的所述擦除计数大于所述平均擦除计数时,使所述第二组件与所述第一组相关联。
10.根据权利要求9所述的方法,其中判定与复数个组件中包括的所述第二组件相关联的所述擦除计数何时大于所述平均擦除计数包括判定与所述第二组件相关联的擦除计数何时大于所述平均擦除计数的一预定百分比。
11.根据权利要求1所述的方法,其中所述非易失性存储器为闪存。
12.根据权利要求11所述的方法,其中所述复数个组件为区块,且所述第一组为一组最频繁擦除区块。
13.根据权利要求12所述的方法,其中获得所述擦除计数包括从所述擦除计数区块获得所述擦除计数。
14.根据权利要求11所述的方法,其中所述闪存为NAND闪存。
15.一种用于处理存储器系统的非易失性存储器中包括的组件的存储器管理系统,所述存储器管理系统包含:
用于获得与复数个组件相关联的擦除计数的编码装置,其中所述复数个组件中包括的每个组件都具有一关联擦除计数,每个组件的所述关联擦除计数经配置以指示所述组件的被擦除次数;
用于将所述复数个组件中包括的若干擦除组件组成第一组的编码装置,其中将所述若干组件组成所述第一组包括选择所述复数个组件中包括的擦除组件,其具有与所述复数个擦除组件相关联的所述擦数计数的最高关联擦除计数;和
用于将与所述第一组相关联的所述擦除计数存储为一存储器组件中数据结构的一部分的编码装置,所述存储器组件与所述存储器系统相关联。
16.根据权利要求15所述的存储器管理系统,其中用于将若干组件分组的所述编码装置包括:
用于比较与所述复数个组件相关联的所述擦除计数的编码装置;和
用于将组件的一预定数目识别为从所述复数个组件中选择出的组件数目的编码装置,所述组件具有与所述复数个擦除组件相关联的所述擦除计数的最高关联擦除计数。
17.根据权利要求15所述的存储器管理系统,其进一步包括:
用于获得一个与所述复数个组件相关联的平均擦除计数的编码装置,其中用于将所述若干组件分组的所述编码装置包括用于将与所述复数个组件相关联的所述擦除计数与所述平均擦除计数进行比较的编码装置,和用于将所述擦除组件数目识别为从所述复数个组件中选择出的组件数目的编码装置,所述组件具有比所述平均擦除计数大出一预定余量的关联擦除计数。
18.根据权利要求15所述的存储器管理系统,其进一步包括:
用于根据与每个组件相关联的所述擦除计数将所述第一组中的所述组件分类的编码装置;
用于识别所述第一组中包括的一第一组件的编码装置,所述第一组件具有与所述第一组相关联的最低擦除计数;
用于解除所述第一组与所述第一组件的关联的编码装置;和
用于使所述复数个组件的一第二擦除组件与所述第一组相关联的编码装置,其中与所述第二组件相关联的所述擦除计数高于与所述第一组件相关联的所述擦除计数。
19.根据权利要求15所述的存储器管理系统,其中所述非易失性存储器为闪存。
20.根据权利要求15所述的存储器管理系统,其中所述复数个组件为区块,且所述第一组为一最频繁擦除区块表。
21.根据权利要求15所述的存储器管理系统,其中所述闪存为NAND闪存。
22.一种存储器系统,其包含:
一第一存储器,所述第一存储器经配置以存储一个表格,所述表格经配置以包括与第一组擦除存储组件相关联的项,所述擦除存储组件具有大于与所述存储器系统相关联的平均擦除计数的关联擦除计数,所述第一组存储组件的每个存储组件的所述关联擦除计数器经配置以大体指示所述存储组件的被擦除次数;
一第二存储器,所述第二存储器经配置以包括复数个擦除存储组件,所述复数个存储组件包括所述第一组存储组件,其中使用与所述复数个存储组件相关联的擦除计数器判定所述平均擦除计数;和
一处理器,所述处理器经配置以访问所述第一存储器和所述第二存储器。
23.根据权利要求22所述的存储器系统,其中使用所述表格大体识别所述第一组存储组件。
24.根据权利要求22所述的存储器系统,其中所述第二存储器为闪存且所述第一组存储组件包括一第一组区块。
25.一种用于处理一存储器系统的一非易失性存储器中包括的组件的方法,所述方法包含:
识别一第一组擦除组件,其中所述第一组组件中包括的所述组件的损耗大于所述第一组组件中未包括的所述擦除组件的损耗;
将与所述第一组组件相关联的项放入一数据结构中;
对所述数据结构内的所述项进行分类;和
使用所述已分类的项识别所述第一组组件内的一第一组件,其中所述第一组件的损耗小于所述第一组组件中包括的其它组件的损耗。
26.根据权利要求25所述的方法,其中每个组件具有一关联擦除计数,且识别所述第一组组件包括:
识别所述关联擦除计数相对高的若干擦除组件;和
将所述关联擦除计数相对高的所述若干组件组成所述第一组。
27.根据权利要求26所述的方法,其中所述项包括所述第一组中所述组件的所述关联擦除计数。
28.根据权利要求26所述的方法,其进一步包含:
判定一第一平均擦除计数,使用所述第一组中每个组件的所述关联擦除计数判定所述第一平均擦除计数。
29.根据权利要求28所述的方法,其进一步包括:
判定未包含于所述第一组中的第二擦除组件的关联擦除计数何时大体超过所述第一平均擦除计数;
当判定所述第二组件的所述关联擦除计数大体超过所述第一平均擦除计数时,从所述第一组中移除所述第一组件,和
当判定所述第二组件的所述关联擦除计数大体超过所述第一平均擦除计数时,将所述第二组件添加到所述第一组中。
30.根据权利要求29所述的方法,其中从所述第一组中移除所述第一组件包括从所述数据结构中移除与所述第一组件关联的一项,且将所述第二组件添加到所述第一组中包括将与所述第一组组件相关联的一项放入一数据结构中。
31.根据权利要求30所述的方法,其进一步包括:
将所述数据结构内的所述项分类;和
使用所述已分类项识别所述第一组组件内的一第三组件,其中所述第三组件的损耗小于所述第一组组件中包括的其它组件的损耗。
32.根据权利要求25所述的方法,其中所述第一组组件中包括的所述组件大体上不能使用。
33.根据权利要求25所述的方法,其中所述组件的每一个包括一经配置含有数据的区段,且其中所述第一组组件中包括的所述组件的每一个中包括的所述区段大体上是空的。
34.根据权利要求25所述的方法,其中所述第一组组件中包括的所述组件的每一个大体上被擦除。
35.根据权利要求25所述的方法,其中所述非易失性存储器为闪存,且所述组件为区块。
36.一种存储器系统,其包括:
存储器组件;
一系统存储器组件;
用于识别一第一组所述擦除存储器组件的构件,其中所述第一组存储器组件中包括的所述存储器组件的损耗大于未包含于所述第一组存储器组件中的所述擦除存储器组件的损耗。
用于将与所述第一组存储器组件相关联的项放入与所述系统存储器组件相关联的一数据结构的构件;
用于将所述数据结构内的所述项分类的构件;和
使用所述已分类项识别所述第一组存储器组件内的一第一存储器组件的构件,其中所述第一存储器组件的损耗小于所述第一组存储器组件中包括的其它存储器组件的损耗。
37.根据权利要求36所述的存储器系统,其中每个存储器组件具有一个关联擦除计数,而且用于识别所述第一组组件的所述构件包括:
用于识别所述关联擦除计数相对高的若干组件的构件;和
用于将所述关联擦除计数相对高的所述若干组件组成所述第一组的构件。
38.根据权利要求37所述的存储器系统,其中所述项包括所述第一组中所述存储器组件的所述关联擦除计数。
39.根据权利要求37所述的存储器系统,其进一步包括:
用于判定一第一平均擦除计数的构件,使用所述第一组中每个组件的所述关联擦除计数判定所述第一平均擦除计数;
用于判定未包含于所述第一组中的一第二擦除存储器组件的关联擦除计数何时大体超过所述第一平均擦除计数的构件;
当判定所述第二存储器组件的所述关联擦除计数大体超过所述第一平均擦除计数时,用于从所述第一组中移除所述第一存储器组件的构件;和
当判定所述第二存储器组件的所述关联擦除计数大体超过所述第一平均擦除计数时,将所述第二存储器组件添加到所述第一组中的构件。
40.根据权利要求39所述的存储器系统,其中用于从所述第一组中移除所述第一存储器组件的所述构件包括用于从所述数据结构中移除与所述第一存储器组件相关联的项的构件,且用于将所述第二存储器组件添加到所述第一组中的所述构件包括用于将与所述第一组存储器组件相关联的项放入一数据结构的构件。
41.根据权利要求36所述的存储器系统,其中所述第一组存储器组件中包括的所述存储器组件大体上不能使用。
42.根据权利要求36所述的存储器系统,其中所述第一组存储器组件中包括的所述组件的每一个大体上已被擦除。
43.根据权利要求36所述的存储器系统,其中所述存储器组件为非易失性存储器区块。
44.一种用于处理与一非易失性存储器系统相关联的一组存储器组件的方法,所述方法包含:
将所述存储器组件组的所述擦除存储器组件的至少一个组成一第一组,其中对所述存储器组件的至少一个的擦除至少等于来自未分组到所述第一组中的所述擦除存储器组件组的存储器组件的擦除;
使未分组到所述第一组中的所述存储器组件能够被分配使用;和
当所述存储器组件的所述至少一个被包括于所述第一组中时,大体上防止所述所述存储器组件的所述至少一个被分配使用。
45.根据权利要求44所述的方法,其中所述存储器组件组的每个存储器组件都具有一所述存储器组件组的所述存储器组件被擦除次数的关联指示,并且将所述存储器组件的所述至少一个组成所述第一组包括基于所述存储器组件的所述至少一个的所述关联指示将所述存储器组件的所述至少一个组成所述第一组。
46.根据权利要求45所述的方法,其中所述存储器组件的所述至少一个具有一个比未分组到所述第一组的所述存储器组件的所述关联指示大的关联指示。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/281,670 | 2002-10-28 | ||
US10/281,670 US6973531B1 (en) | 2002-10-28 | 2002-10-28 | Tracking the most frequently erased blocks in non-volatile memory systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1701390A true CN1701390A (zh) | 2005-11-23 |
Family
ID=32228770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA038247844A Pending CN1701390A (zh) | 2002-10-28 | 2003-09-10 | 跟踪非易失性存储器系统中最频繁擦除区块 |
Country Status (10)
Country | Link |
---|---|
US (1) | US6973531B1 (zh) |
EP (1) | EP1559113B1 (zh) |
JP (2) | JP2006504221A (zh) |
KR (1) | KR20050059314A (zh) |
CN (1) | CN1701390A (zh) |
AT (1) | ATE387714T1 (zh) |
AU (1) | AU2003270545A1 (zh) |
DE (1) | DE60319407T2 (zh) |
TW (1) | TWI267866B (zh) |
WO (1) | WO2004040585A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101211314B (zh) * | 2006-12-31 | 2010-07-14 | 创惟科技股份有限公司 | 闪存资料读写寿命提升方法 |
CN101989458A (zh) * | 2009-07-31 | 2011-03-23 | 慧帝科技(深圳)有限公司 | 平均地使用一闪存的多个区块的方法、记忆装置及控制器 |
US8291152B2 (en) | 2009-01-07 | 2012-10-16 | Silicon Motion, Inc. | Method for operating non-volatile memory and data storage system using the same |
CN102918601A (zh) * | 2010-06-28 | 2013-02-06 | 国际商业机器公司 | 存储的单元/页/子页/块的损耗均衡 |
US8484406B2 (en) | 2009-03-03 | 2013-07-09 | Silicon Motion Inc. | Method of evenly using a plurality of blocks of a flash memory, and associated memory device and controller thereof |
CN103425597A (zh) * | 2012-05-18 | 2013-12-04 | 慧荣科技股份有限公司 | 数据储存装置和快闪存储器的区块管理方法 |
CN101496109B (zh) * | 2006-02-28 | 2014-03-26 | 飞思卡尔半导体公司 | 具有多块擦除模式的非易失性存储器及其方法 |
CN111261218A (zh) * | 2020-04-27 | 2020-06-09 | 深圳市芯天下技术有限公司 | 多颗Norflash样品同时测试的方法 |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE372578T1 (de) * | 2002-10-28 | 2007-09-15 | Sandisk Corp | Automatischer abnutzungsausgleich in einem nicht- flüchtigen speichersystem |
US7328301B2 (en) * | 2003-04-07 | 2008-02-05 | Intel Corporation | Dynamically mapping block-alterable memories |
US7139863B1 (en) * | 2003-09-26 | 2006-11-21 | Storage Technology Corporation | Method and system for improving usable life of memory devices using vector processing |
US7441067B2 (en) | 2004-11-15 | 2008-10-21 | Sandisk Corporation | Cyclic flash memory wear leveling |
US7315917B2 (en) | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US7224604B2 (en) * | 2005-03-14 | 2007-05-29 | Sandisk Il Ltd. | Method of achieving wear leveling in flash memory using relative grades |
US7516267B2 (en) * | 2005-11-03 | 2009-04-07 | Intel Corporation | Recovering from a non-volatile memory failure |
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 |
US7747813B2 (en) * | 2006-11-24 | 2010-06-29 | Sandforce, Inc. | Multi-memory device system and method for managing a lifetime thereof |
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 |
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 |
WO2008063647A2 (en) * | 2006-11-24 | 2008-05-29 | Sandforce Inc. | Delaying an operation that reduces a lifetime of memory |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US20080140724A1 (en) | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
US9495241B2 (en) | 2006-12-06 | 2016-11-15 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive data storage |
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 |
DE112006004187B4 (de) * | 2006-12-27 | 2015-09-10 | Intel Corporation | Verfahren, nicht-flüchtige Speichervorrichtung und Computersystem zum initiativen Abnutzungsausgleich für einen nicht-flüchtigen Speicher |
TW200828320A (en) * | 2006-12-28 | 2008-07-01 | Genesys Logic Inc | Method for performing static wear leveling on flash memory |
CN100504814C (zh) | 2007-01-17 | 2009-06-24 | 忆正存储技术(深圳)有限公司 | 闪存的区块管理方法 |
US7731365B2 (en) * | 2007-03-19 | 2010-06-08 | Johnson&Johnson Vision Care, Inc. | Method of fitting contact lenses |
KR20080085574A (ko) * | 2007-03-20 | 2008-09-24 | 삼성전자주식회사 | 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법 |
US7689762B2 (en) * | 2007-05-03 | 2010-03-30 | Atmel Corporation | Storage device wear leveling |
US7991942B2 (en) * | 2007-05-09 | 2011-08-02 | Stmicroelectronics S.R.L. | Memory block compaction method, circuit, and system in storage devices based on flash memories |
US7882301B2 (en) * | 2007-05-09 | 2011-02-01 | Stmicroelectronics S.R.L. | Wear leveling in storage devices based on flash memories and related circuit, system, and method |
US8041883B2 (en) * | 2007-05-09 | 2011-10-18 | Stmicroelectronics S.R.L. | Restoring storage devices based on flash memories and related circuit, system, and method |
US20080282024A1 (en) * | 2007-05-09 | 2008-11-13 | Sudeep Biswas | Management of erase operations in storage devices based on flash memories |
US7743203B2 (en) * | 2007-05-11 | 2010-06-22 | Spansion Llc | Managing flash memory based upon usage history |
US20080294813A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Managing Housekeeping Operations in Flash Memory |
US20080294814A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Flash Memory System with Management of Housekeeping Operations |
KR100857761B1 (ko) * | 2007-06-14 | 2008-09-10 | 삼성전자주식회사 | 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법 |
CN100538662C (zh) * | 2007-07-05 | 2009-09-09 | 炬力集成电路设计有限公司 | 一种基于局部采样的存储器的磨损平衡方法 |
US8296498B2 (en) * | 2007-11-13 | 2012-10-23 | Sandisk Technologies Inc. | Method and system for virtual fast access non-volatile RAM |
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 |
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 |
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 |
KR101401560B1 (ko) * | 2007-12-13 | 2014-06-03 | 삼성전자주식회사 | 반도체 메모리 시스템 및 그것의 마모도 관리 방법 |
US8656083B2 (en) * | 2007-12-21 | 2014-02-18 | Spansion Llc | Frequency distributed flash memory allocation based on free page tables |
JP4762261B2 (ja) * | 2008-03-12 | 2011-08-31 | 株式会社東芝 | メモリシステム |
JP2009266349A (ja) | 2008-04-28 | 2009-11-12 | Toshiba Corp | 不揮発性半導体記憶装置 |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
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 |
KR20100013485A (ko) | 2008-07-31 | 2010-02-10 | 삼성전자주식회사 | 메모리 장치 및 웨어 레벨링 방법 |
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 |
US8671258B2 (en) | 2009-03-27 | 2014-03-11 | Lsi Corporation | Storage system logical block address de-allocation management |
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 |
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 |
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 |
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 |
KR20110024832A (ko) * | 2009-09-03 | 2011-03-09 | 주식회사 하이닉스반도체 | 데이터 머지 효율이 향상된 반도체 스토리지 시스템 및 그 제어 방법 |
KR101086876B1 (ko) * | 2009-09-30 | 2011-11-25 | 주식회사 하이닉스반도체 | 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법 |
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 |
JP2011081561A (ja) * | 2009-10-06 | 2011-04-21 | Canon Inc | 情報処理装置 |
TW201120898A (en) * | 2009-12-07 | 2011-06-16 | Jmicron Technology Corp | Mehtod for wear-leveling and apparatus thereof |
US8677054B1 (en) * | 2009-12-16 | 2014-03-18 | Apple Inc. | Memory management schemes for non-volatile memory devices |
WO2012083308A2 (en) | 2010-12-17 | 2012-06-21 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
KR20120096212A (ko) * | 2011-02-22 | 2012-08-30 | 삼성전자주식회사 | 비휘발성 메모리 장치, 메모리 컨트롤러, 및 이들의 동작 방법 |
GB2490991B (en) * | 2011-05-19 | 2017-08-30 | Ibm | Wear leveling |
US10019353B2 (en) | 2012-03-02 | 2018-07-10 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for referencing data on a storage medium |
KR101989018B1 (ko) * | 2012-06-25 | 2019-06-13 | 에스케이하이닉스 주식회사 | 데이터 저장 장치의 동작 방법 |
US8750045B2 (en) | 2012-07-27 | 2014-06-10 | Sandisk Technologies Inc. | Experience count dependent program algorithm for flash memory |
CN102929794B (zh) * | 2012-09-26 | 2015-12-02 | 惠州市德赛西威汽车电子股份有限公司 | 一种eeprom的存储方法 |
KR20150044753A (ko) * | 2013-10-17 | 2015-04-27 | 에스케이하이닉스 주식회사 | 데이터 저장 장치의 동작 방법 |
TWI517165B (zh) * | 2014-03-31 | 2016-01-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 |
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 |
US9766819B2 (en) | 2014-12-30 | 2017-09-19 | Sandisk Technologies Llc | Systems and methods for managing storage endurance |
US10338817B2 (en) | 2014-12-30 | 2019-07-02 | Sandisk Technologies Llc | Systems and methods for storage recovery |
US10101939B2 (en) | 2016-03-09 | 2018-10-16 | Toshiba Memory Corporation | Storage system having a host that manages physical data locations of a storage device |
EP3333739B1 (en) * | 2016-12-09 | 2021-09-22 | Roche Diabetes Care GmbH | Device for performing at least one medical action |
US10552145B2 (en) * | 2017-12-12 | 2020-02-04 | Cypress Semiconductor Corporation | Memory devices, systems, and methods for updating firmware with single memory device |
DE102021116828A1 (de) | 2021-06-30 | 2023-01-05 | Harman Becker Automotive Systems Gmbh | Verfahren und Vorrichtung zur Überwachung einer Nutzlast eines Speichermediums |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07109717B2 (ja) | 1986-05-31 | 1995-11-22 | キヤノン株式会社 | メモリ書き込み制御方法 |
JP2685173B2 (ja) | 1986-05-31 | 1997-12-03 | キヤノン株式会社 | メモリ書き込み制御方法 |
US5268870A (en) | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
DE69033438T2 (de) | 1989-04-13 | 2000-07-06 | Sandisk Corp., Santa Clara | Austausch von fehlerhaften Speicherzellen einer EEprommatritze |
US5222109A (en) | 1990-12-28 | 1993-06-22 | Ibm Corporation | Endurance management for solid state files |
US5438573A (en) | 1991-09-13 | 1995-08-01 | Sundisk Corporation | Flash EEPROM array data and header file structure |
US6230233B1 (en) | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
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 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置およびその記憶制御方法 |
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 |
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 |
KR100297986B1 (ko) | 1998-03-13 | 2001-10-25 | 김영환 | 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법 |
US6260156B1 (en) | 1998-12-04 | 2001-07-10 | Datalight, Inc. | Method and system for managing bad areas in flash 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 |
JP2002032256A (ja) * | 2000-07-19 | 2002-01-31 | Matsushita Electric Ind Co Ltd | 端末装置 |
US6732221B2 (en) * | 2001-06-01 | 2004-05-04 | M-Systems Flash Disk Pioneers Ltd | Wear leveling of static areas in flash memory |
-
2002
- 2002-10-28 US US10/281,670 patent/US6973531B1/en not_active Expired - Lifetime
-
2003
- 2003-09-10 CN CNA038247844A patent/CN1701390A/zh active Pending
- 2003-09-10 AU AU2003270545A patent/AU2003270545A1/en not_active Abandoned
- 2003-09-10 JP JP2004548320A patent/JP2006504221A/ja active Pending
- 2003-09-10 EP EP03752244A patent/EP1559113B1/en not_active Expired - Lifetime
- 2003-09-10 WO PCT/US2003/028502 patent/WO2004040585A1/en active IP Right Grant
- 2003-09-10 AT AT03752244T patent/ATE387714T1/de not_active IP Right Cessation
- 2003-09-10 KR KR1020057007323A patent/KR20050059314A/ko not_active Application Discontinuation
- 2003-09-10 DE DE60319407T patent/DE60319407T2/de not_active Expired - Fee Related
- 2003-09-18 TW TW092125804A patent/TWI267866B/zh not_active IP Right Cessation
-
2009
- 2009-09-02 JP JP2009202432A patent/JP2010015591A/ja active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101496109B (zh) * | 2006-02-28 | 2014-03-26 | 飞思卡尔半导体公司 | 具有多块擦除模式的非易失性存储器及其方法 |
CN101211314B (zh) * | 2006-12-31 | 2010-07-14 | 创惟科技股份有限公司 | 闪存资料读写寿命提升方法 |
US8291152B2 (en) | 2009-01-07 | 2012-10-16 | Silicon Motion, Inc. | Method for operating non-volatile memory and data storage system using the same |
CN101770428B (zh) * | 2009-01-07 | 2013-02-27 | 慧国(上海)软件科技有限公司 | 非易失性存储器操作方法及使用该方法的数据储存系统 |
US8484406B2 (en) | 2009-03-03 | 2013-07-09 | Silicon Motion Inc. | Method of evenly using a plurality of blocks of a flash memory, and associated memory device and controller thereof |
CN101989458A (zh) * | 2009-07-31 | 2011-03-23 | 慧帝科技(深圳)有限公司 | 平均地使用一闪存的多个区块的方法、记忆装置及控制器 |
CN101989458B (zh) * | 2009-07-31 | 2013-10-30 | 慧帝科技(深圳)有限公司 | 平均地使用一闪存的多个区块的方法、记忆装置及控制器 |
CN102918601A (zh) * | 2010-06-28 | 2013-02-06 | 国际商业机器公司 | 存储的单元/页/子页/块的损耗均衡 |
US9170933B2 (en) | 2010-06-28 | 2015-10-27 | International Business Machines Corporation | Wear-level of cells/pages/sub-pages/blocks of a memory |
CN103425597A (zh) * | 2012-05-18 | 2013-12-04 | 慧荣科技股份有限公司 | 数据储存装置和快闪存储器的区块管理方法 |
CN103425597B (zh) * | 2012-05-18 | 2016-04-06 | 慧荣科技股份有限公司 | 数据储存装置和快闪存储器的区块管理方法 |
CN111261218A (zh) * | 2020-04-27 | 2020-06-09 | 深圳市芯天下技术有限公司 | 多颗Norflash样品同时测试的方法 |
CN111261218B (zh) * | 2020-04-27 | 2020-08-21 | 深圳市芯天下技术有限公司 | 多颗Norflash样品同时测试的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1559113B1 (en) | 2008-02-27 |
WO2004040585A1 (en) | 2004-05-13 |
AU2003270545A1 (en) | 2004-05-25 |
US6973531B1 (en) | 2005-12-06 |
ATE387714T1 (de) | 2008-03-15 |
TW200418038A (en) | 2004-09-16 |
JP2010015591A (ja) | 2010-01-21 |
DE60319407T2 (de) | 2009-03-19 |
EP1559113A1 (en) | 2005-08-03 |
KR20050059314A (ko) | 2005-06-17 |
TWI267866B (en) | 2006-12-01 |
DE60319407D1 (de) | 2008-04-10 |
JP2006504221A (ja) | 2006-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1701390A (zh) | 跟踪非易失性存储器系统中最频繁擦除区块 | |
CN1698036A (zh) | 跟踪非易失性存储器系统中最不频繁擦除区块 | |
CN1701309A (zh) | 非易失性存储系统中的损耗平衡 | |
US7287118B2 (en) | Maintaining an average erase count in a non-volatile storage system | |
US7254668B1 (en) | Method and apparatus for grouping pages within a block | |
US7702880B2 (en) | Hybrid mapping implementation within a non-volatile memory system | |
US7103732B1 (en) | Method and apparatus for managing an erase count block | |
US6831865B2 (en) | Maintaining erase counts in non-volatile storage systems | |
CN1705936A (zh) | 用于分割一逻辑块的方法及设备 | |
CN1720590A (zh) | 非易失性存储系统中的自动磨损平衡 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |