CN102841849A - 用于操作计算机化存储器的方法和系统 - Google Patents
用于操作计算机化存储器的方法和系统 Download PDFInfo
- Publication number
- CN102841849A CN102841849A CN2012101565170A CN201210156517A CN102841849A CN 102841849 A CN102841849 A CN 102841849A CN 2012101565170 A CN2012101565170 A CN 2012101565170A CN 201210156517 A CN201210156517 A CN 201210156517A CN 102841849 A CN102841849 A CN 102841849A
- Authority
- CN
- China
- Prior art keywords
- unit
- loss level
- subclass
- piece
- data
- 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.)
- Granted
Links
Images
Classifications
-
- 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
- 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/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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)
Abstract
在一种用于操作计算机化存储器的方法中,存储器被组织用于在这种存储器的单元内存储数据。针对单元(i)的集合中的每一个单元(i)确定损耗水平(c(i))。确定损耗水平(c(i))中的最大损耗水平(c_max)。接收选择用于数据擦除的一个或多个单元(i)的推荐子集,并且在子集中识别出其损耗水平(c(i))小于最大损耗水平(c_max)的至少一个单元(i)用于后续的数据擦除。
Description
技术领域
本发明涉及用于操作计算机化存储器的方法、计算机程序产品和设备。
背景技术
固态存储器设备包括可以将电子电路用于存储数据的可改写非易失性存储器设备。目前,固态存储器设备已经开始在某些领域例如用于笔记本电脑或台式电脑的大容量存储应用中代替常规存储设备例如硬盘驱动器和光盘驱动器。也在研究将固态存储器设备用于代替其他领域例如企业级存储系统中的常规存储设备。这是因为固态存储器设备提供了出色的带宽和优异的随机I/O(输入/输出)性能以及由于缺少可移动部件而带来的很有价值的鲁棒性。
但是,向固态存储器设备例如闪存存储器中写入数据需要注意到闪存技术中的细节:NAND闪存存储器以页面和块为单位组织。多个页面构成一个块。尽管读写操作能够应用于页面作为此类操作的最小单位,但是擦除操作只能应用于整个块。并且尽管在其他的存储技术中过时数据可以简单地重写为新数据,但是闪存技术需要先进行擦除操作,然后才能将新数据写入已擦除的块。
闪存技术中的另一个细节是如今的闪存存储器设备被限定为有限次数的编程擦除(PE)周期。闪存存储器设备通常具有定义其PE周期最大次数的耐用规格。因此,写入技术在被称为“异地写入”的应用中是将新数据或更新数据写入由自由页面分配器提供的某些自由页面,而不是将其写入驻留有过时数据的相同页面。包含过时数据的页面被标记为无效页面。通过这样的手段,由于避免了在块内直接重写数据所需的擦除循环,因此可以延长基于闪存的固态驱动器(SSD)并且还有日志结构文件系统的预期寿命。
但是,可用的自由页面可能会随着时间而耗尽。闪存存储器设备中的块也可能由混合的有效和无效页面占据。新的自由空间需要通过块回收过程建立,块回收过程也被称为垃圾收集过程,该过程回收由过时数据也就是无效数据占据的空间。块回收过程首先基于指定策略识别出要擦除的块。然后,驻留在这种块内的有效数据被复制/重新定位到包含自由页面的其他块,并最后擦除目标块以使它们变为可用于重写。
块回收机构引入了额外的读写操作,其范围取决于具体部署的策略以及系统参数。这种额外的写入也被称作“写入放大”现象。写入放大将不利地影响SSD的寿命和耐用度,原因在于它会在别处生成迟早需要再次擦除的数据,并且它会降低闪存存储器设备的整体性能。
闪存存储器设备甚至可能会在仅消耗了其块的一小部分时就停止工作。在此情况下,仍然可能有尚未使用或未充分使用的块。损耗均衡算法确保擦除更加均匀地分布在闪存存储器块上。
发明内容
根据本发明的一种应用,提供了一种用于操作计算机化存储器的方法,其中存储器被组织用于在存储器的单元集合内存储数据。针对集合中的每一个单元确定损耗水平,并且在确定的损耗水平中识别出最大损耗水平。接收选择用于数据擦除的一个或多个单元的推荐子集。在子集中识别出其损耗水平小于最大损耗水平的至少一个单元用于后续的数据擦除。识别步骤可以优选地包括:如果子集中每一个单元的损耗水平都等于最大损耗水平,那么除非是集合中其他的每一个单元的损耗水平都等于最大损耗水平,否则就放弃将子集中的每一个单元选择用于数据擦除。
在实施例中,所述方法可以包括以下的一种或多种特征:
-单元的损耗水平由过去应用于单元的擦除次数表示;与一个单元相关联的擦除次数在每一次擦除该单元后都增加;
-根据存储在所述子集中所述一个或多个单元内的数据特征推荐所述子集中的一个或多个单元以供选择用于数据擦除;
-单元集合中的每一个单元都包括子单元的集合,并且根据所述子集的一个或多个单元中包含有效数据的子单元数量推荐所述子集中的所述一个或多个单元以供选择用于数据擦除;
-识别步骤包括针对子集中的至少一个单元将所述单元的损耗水平与最大损耗水平相比较;
-所述子集包括多于一个单元,其中根据与子集中单元相关联的不同于损耗水平的特征将子集中的单元排序,并且识别出子集中具有优选特征且损耗水平小于最大损耗水平的至少一个单元用于后续的数据擦除;
-子集包括推荐供选择用于数据擦除的单个单元;
-所述子集包括多于一个单元,并且子集中的这些单元被连续地考察用于后续的数据擦除;
-第一识别器根据与子集中单元相关联的不同于损耗水平的特征识别出当前优选的单元,并且第二识别器根据与子集中单元相关联的损耗水平识别出当前优选的选择用于擦除的单元;
-单元集合中的每一个单元都包括子单元集合,并且其中第一识别器根据其包含有效数据的子单元数量识别出当前优选的单元;
-如果集合中每一个单元的损耗水平都等于最大损耗水平,那么就根据与子集中单元相关联的不同于损耗水平的特征识别出用于数据擦除的优选单元;
-单元集合中的每一个单元都包括子单元集合,并且选择用于擦除的单元在其包含有效数据的子单元数量方面是优选的。
根据本发明的另一种应用,提供了一种计算机程序产品,包括其中实施有计算机可读取程序代码的计算机可读取介质,计算机可读取程序代码包括被设置用于实现以上介绍的任何一种方法的计算机可读取程序代码。
根据本发明的再一种应用,提供了一种存储设备。存储设备包括有包含单元集合的存储器。控制器适合用于确定集合中每一个单元的损耗水平并在确定的损耗水平中识别出最大损耗水平。控制器进一步适合用于接收一个或多个单元中选择用于数据擦除的推荐子集。控制器进一步适合用于在子集中识别出其损耗水平小于最大损耗水平的至少一个单元用于后续的数据擦除,其中识别优选地包括:对于子集中的每一个单元,如果所述每一个单元的损耗水平都等于最大损耗水平,那么除非是集合中其他的每一个单元的损耗水平都等于最大损耗水平,否则就放弃将所述子集中的每一个单元选择用于数据擦除。
在一个实施例中,存储设备中的存储器是闪存存储器,包括形式为模块的单元并且每一个模块都包括形式为页面的子单元。
应该理解方法步骤可以用不同于方法权利要求中列举步骤的顺序执行。这种不同的顺序也应该被包括在步骤顺序如当前所列的此类权利要求的范围内。
介绍的涉及方法应用的实施例也应该被认为是结合任何其他种类例如装置、计算机程序产品等公开的实施例。
附图说明
通过参照当前为优选但仍然只是根据本发明结合附图获得的示范性实施例的下述详细说明可以更加完整地理解本发明及其实施例。
附图示出了:
图1是根据本发明实施例的方法流程图,
图2是根据本发明实施例的存储设备的方块图,
图3是根据本发明实施例的存储器控制器的方块图,以及
图4是表示通过本发明的方法实现的改进的损耗均衡的两张示意图。
具体实施方式
作为以下说明内容的引言,首先要指出的是本发明的主要方面涉及受损耗影响的存储器设备中的损耗均衡。这样的存储器设备优选地可以是固态存储器设备例如闪存存储器、相变存储器、磁随机存储器等。在下文中例如涉及块而不是单元时以及涉及页面而不是子单元,但是提及的可能都是闪存的技术术语。但是,仍然应该理解对于整个申请来说,无论是内容还是保护范围都不应该受限于闪存存储器技术。任何其他的固态存储技术都应该被涵盖在内,以日志方式利用存储设备的任何日志结构的文件系统也都应该被涵盖在内。
在这样的存储器设备中,监测存储器单元的集合的损耗以使得可以观测瞬时最大损耗。存储器单元的集合可以优选地包括存储器设备中所有的可用单元,或者可以包括用于在存储器设备中存储用户数据的所有可用单元,或者一般性地可以包括少于存储器设备中可用单元数量的多个单元。本文语境中的损耗可能更多地是使用问题而不是纯粹的年限问题。可以有各种方式用于确定损耗,但是,在优选的实施例中,可以将单元在过去经历的擦除周期的数量用作损耗水平的表示。在该示例中,损耗水平并不是关于允许或可实现的最大损耗水平的相对量度,而是可以与其他单元的损耗水平相比较的绝对量度。
优选的是针对每一个单元确定、监测并存储瞬时损耗水平。因此,单元的当前损耗状态每当需要时均为可用。在表示单元集合中相关单元瞬时损耗水平的所有变量中,搜索出指示最大损耗水平的变量。可以有不同的方式用于确定最大损耗水平以表示单元集合中损耗最严重的一个或多个单元。假设变量表明水平越高损耗就越大,那么对最大损耗水平的搜索可能会导致变量中的最大搜索。优选地,识别器识别出集合中每一个单元的瞬时最大损耗水平。根据目前的观点,针对集合内各单元确定的所有损耗水平识别出表示最大损耗的值可能就足够了,以至于学习这些单元中哪一个的损耗最严重可能并不那么重要。
经过整体处理之后,在某个时间点即可请求验证是否有一个或多个单元可以适合进行擦除并使所述单元可用于新的写入。接收这样的请求在下文中也可以被称为推荐用于数据擦除的一个或多个单元的子集。子集通常表示单元集合中一定数量的单元,该数量小于属于该集合的单元数量。但是,在不同的实施例中,单元子集可以与单元集合相同。在一个实施例中,可以有例如用于预选可供将来数据擦除的单元的过程,例如单元回收过程。在一个实施例中,这样的预选可以包括使某些单元与其他单元相比可以更好地适于擦除的特征,其中这样的特征可以不同于损耗,并且具体地不同于分配给相应单元的损耗水平。这样的特征例如可以是驻留在单元内的有效数据量,这是由于在异地写入的概念中任何仍然有效的数据都需要被重新定位到其他位置。在这样的方式中,预选可以包括对于单元有效性特征的评估。如果单元包括用于存储数据的子单元集合,那么这样的有效性特征可以取决于分配给相应单元中各个子单元的有效性特征。例如,可以为每一个子单元分配指示子单元包括有效或无效数据的标记。这样的标记可以被解读为子单元的特征。单元的特征可以得自于相关子单元特征的累加,并且可以得到表示其包含有效数据的子单元数量的整数。
推荐用于数据擦除的单元子集优选地可以包括以下情形之一:单个单元;多个单元;单元集合中的所有单元。只要子集包含多于一个单元,单元即可被接收为列表,或者以顺序方式逐一接收。由于单元的损耗水平可以与最大损耗水平相比较,因此可以评估任何一个推荐单元。在损耗水平小于最大损耗水平的情况下,目标单元通常可以适合用于进行擦除;但是,可以应用附加标准来确定是否最终选择目标单元进行擦除,或者是否还有生成的损耗水平小于最大损耗水平的其他单元可以遵照这样的不同标准而更好地适用。在此情形下,应尝试在子集中识别出用于后续数据擦除的至少一个单元,这至少一个单元的损耗水平小于最大损耗水平。
另一方面,放弃将子集中其损耗水平等于最大损耗水平的某个单元或每一个单元选择用于数据擦除可能是优选的。但是,在推荐用于选择进行数据擦除的子集中的所有单元都表现为损耗水平等于最大损耗水平的情况下,优选的是从子集以外的单元中识别出损耗水平小于最大损耗水平的单元。在识别出这种单元的情况下,这种单元就可以作为用于后续数据擦除的优选单元。在此情形下,单元集合中的所有单元可能都需要就其损耗水平进行审查。优选的是只有在集合中其他的每一个单元的损耗水平都等于最大损耗水平时,可以将推荐单元子集中的当前考虑单元识别用于数据擦除——尽管推荐单元子集中当前考虑单元的相关联损耗水平等于最大损耗水平,但是由于在单元集合中无法识别出损耗水平小于最大损耗水平的其他单元。在此情形下,根据不同于损耗的标准从单元子集中识别出至少一个单元用于擦除可能是优选的,原因在于从损耗的角度看在子集内推荐的单元中没有优选项;或者根据不同于损耗的标准从单元集合中识别出其中一个单元用于擦除可能是优选的,原因在于从损耗的角度看在集合内推荐的单元中没有优选项。
因此,在子集内推荐的所有单元都表现为损耗水平等于最大损耗水平的情况下,优选的是不擦除子集内推荐的任何块,而是改为将并非子集内推荐但是表现为损耗水平小于最大损耗水平的一个或多个块选择用于擦除,原因在于这样的单元仍然可以存在于单元集合中。在处理方面,这可以通过用损耗均衡过程取代块回收方案并且搜索这样的块来实施,或者通过使损耗均衡过程返回块回收方案并且请求推荐一个或多个另外的块来实施。
在块/页面技术中,损耗均衡过程从块集合中选择表现出的损耗水平小于集合内块中的瞬时最大损耗水平的一个或多个块进行擦除。这种方法与先前的方法相比具有以下优点:本方法能够与可以重点集中在不同于损耗的标准上的任何块回收方案相结合,并且因此可以与任何垃圾收集方案相结合,同时仍然为整体处理中的损耗问题分配足够的权重。为此,即可实施重点集中在避免写入放大上的用于回收块的过程,并且这种损耗均衡方法可以对由以损耗为代价不恰当地倾向于块选择的块回收方案做出的任何决策进行校正。
另外,本方法提供了出色的损耗均衡度,原因在于所有块中的损耗失衡在存储器设备的操作期间始终得以最小化。它避免了为保持块中充分的损耗均衡度而追加成本的操作。它延长了存储器设备的寿命,原因在于当存储器设备因为一个或多个块总体上超过了损耗水平阈值而被宣布为不可用时,所有块的使用度基本上是相同的。
因此,提出了一种用于在SSD设备中实现高效损耗均衡的新方法。通过监测块集合内每一个块的损耗水平,通过识别瞬时最大损耗水平并且通过选择表现出的损耗水平小于瞬时最大损耗水平的一个或多个块用于擦除,提出了一种适合用于固态存储设备的高效损耗均衡方法,由此使监测集合内的所有块都经历基本相同的使用度以延长设备寿命。同样的机制可以应用于其中被异地写入新数据或更新数据的任何存储器结构,也就是,对过时数据进行更新的数据不是被写入包含过时数据的子单元,而是被写入提供一系列将向其中写入数据的自由子单元的日志中。这样的子单元通常可以不是存储设备的组织结构中彼此连续的子单元,而是可以分散在存储设备中并且由分配引擎提供。这样的系统可以被称作日志结构的文件系统。
通常,这种损耗均衡过程是与块回收过程一起触发或者从块回收过程中出发,块回收过程相应地在需要重新组织自由块以用于向其写入新数据时开始,这需要预先擦除此类块上的所有数据。随着时间而写入设备的数据越多,可用的自由页面就越少,并且就可能需要回收新块用于自由块队列,也就是用于提供向其写入新数据或更新数据的自由已擦除块的队列。新的自由块需要从填充有有效和/或无效数据的块中回收。块回收过程首先基于指定策略识别出要清理的块。然后,仍然驻留在这些块内的有效数据被复制/重新定位到其他块,并最后擦除现已没有有效数据的块且使其重新变为可用于重写。尽管该过程需要一些额外增多的写操作,但是很明显通过这样的方法就可以避免立即擦除操作,而立即擦除操作可以导致比这些额外写操作的开销大得多的整体处理时间。
提出的实时损耗均衡方案能够与任何块回收方案相结合,并且在一个实施例中可以如下所述进行工作:每一个块的损耗水平都被寄存在一个单独的计数器中。称作最大值计数器的附加计数器被设置用于跟踪所有计数器中的瞬时最大值。在擦除块时,对应计数器的内容加一。而且,如果该新值超过了最大值计数器中的值,那么最大值计数器也加一。为了识别出用于再利用的块,块回收过程可以根据特定顺序考察块并且例如可以检查它们的有效页面数量。该过程在发现包含有效页面的数量且该数量满足指定标准的块时终止。根据提出的方案,该过程优选地在发现块的损耗小于到该时间点为止监测到的寄存在最大值计数器内的瞬时最大损耗时终止。
图1示出了根据本发明实施例的方法流程图。
在初始化步骤50,表示用于块i损耗水平的变量的擦除计数器<c(i)>针对块集合中的每一个块都被设定为零。擦除计数器<c(i)>表示过去应用于块i的擦除周期的变量,并且因此表示了块i的损耗水平,该损耗水平在某些情况下也被称作块的年龄。计数器<c_max>也被设定为零。计数器<c_max>给出表示分配给任何一个计数器<c(i)>的最大损耗水平。
在步骤51,例如考虑到用于写入新数据的资源有限而开始块回收过程。初始化步骤50当然也可以集成到开始步骤51中。在步骤52,<last>识别器也就是第一识别器被设定为-1。<last>识别器是用于目前已经可以由块回收过程选择(也就是当缺少提出的损耗均衡功能时可以由垃圾收集过程回收)的块的识别器。在同一步骤52,<last_WL>识别器也就是第二识别器被设定为-1。<last_WL>识别器是当存在提出的损耗均衡功能时用于被选择为由块回收过程回收的块的识别器。
在下文中,认为块回收过程可以根据指定顺序检查存储器设备中的块集合。顺序例如在其中要检查所有块的所谓贪婪垃圾收集过程的情况下可以是固定的,或者在满足一组标准时就停止搜索的情况下可以是动态的。搜索的结束在步骤59进行验证。在本示例中,块回收过程以指定顺序逐一考察块。块集合中的任何块在块回收过程中都要进行考察并且被推荐给损耗均衡功能,以使推荐用于数据擦除的块子集代表在块回收方案中检查的整个块集合。损耗均衡功能由包括随后将要介绍的步骤54至56的大括号部分表示。
如果损耗均衡功能无法实施,那么块回收过程就将块序列内的样本块j与到目前为止根据指定标准识别出的最佳块相比较。该比较在步骤57完成。到目前为止的最佳块被寄存在<last>识别器内。如果样本块j在所述标准方面优于<last>块,那么块j即可成为新的<last>块,也就是last=j,参见步骤58。如果样本块j表明在所述标准方面并不优于<last>块,那么最佳块就仍然是由<last>识别器指向的块,并且在步骤59可以验证在等候推荐的队列中是否还有另外的块。
但是,提出的方法引入了由步骤54至56实现的损耗均衡功能。由此,只要推荐了新的块j,就在步骤54确定该块j在识别出<last>块所依据的标准方面是否优于<last_WL>块。换句话说,确定正在考察的当前块j在所述标准方面是否优于到目前为止在损耗方面识别出的最佳块。如果不是这种情况(否),那么就跳转至步骤57,在此确定新块j是否优于到目前为止该类别中在所述标准方面识别出的最佳块。这是反映了目前在损耗方面的优选块同样也优于在其他标准方面的新块j的情况。但是,如果新块j在这些标准方面优于当前在损耗方面的最佳块,那么就执行步骤55并且将由变量c(j)表示的用于块j的损耗水平与由分配给计数器<c_max>的值表示的最大损耗水平相比较。如果块j的损耗水平不等于<c_max>内存储的最大水平,那么块j就成为新的<last_WL>块。
当序列用尽也就是已经没有更多推荐的块时,参见步骤59(否),那么除非是<last_WL>识别器等于-1或者是任何其他的表示无效损耗内容的值,否则<last_WL>识别器就包含有要回收的块,参见步骤62。当所有的块都产生相同的损耗时,这就等价于在步骤60中确认<last_WL>=-1,由于所有这样的块都产生由<c_max>指示的最大损耗,因此在步骤55中就没有识别出满足损耗标准的新块。在此情况下,要回收的块就是块回收过程在没有考虑损耗均衡功能,也就是<last_WL>=<last>时应该回收的块,参见步骤61。最后,在步骤62回收由<last_WL>识别器指示的块之后,其损耗计数器<c(last_WL)>也在步骤62加一,并且如果损耗计数器<c(last_WL)>随后超过了瞬时最大损耗水平<c_max>,那么<c_max>变量也要在步骤62中更新。然后,过程可以在步骤63结束,直至接收到用于块回收动作的新请求并且在步骤50触发初始化和在步骤51启动该过程为止。
显然,也可以设想其他的实施方式例如不使用<last>识别器的实施例。
不考虑损耗就将块识别为要回收的块所依据的上述标准可以包括以下的一项或多项内容:
-块中的有效页面数量;
-块中的无效页面数量;
-块中的自由页面数量;
-块的年龄;
-对该块最近写操作的时间;
-对该块最早写操作的时间;
-对该块写操作的频率(也就是该块的损耗)。
标准可以包括两种或多种上述参数的任意组合。标准可以包括将上述参数中的任何一种与阈值相比较并且标准可以在参数高于或低于阈值时得到满足。标准可以可选地在发现某一参数低于阈值时得到满足。标准可以包括将多个上述参数与单独分配的阈值相比较,或者标准可以在所有参数都高于或低于其对应阈值时得到满足。样本标准可以包括“块内的有效页面数量少于12并且块的年龄小于100”。
阈值可以是预定阈值并且在操作期间可以不变。阈值可以预先确定并且取决于存储器系统的特征。有利地,阈值可以根据存储器系统提供的每一个块中的页面数量而确定;和/或根据所有块内的有效子单元平均数与存储器内子单元总数之间的比值而确定。阈值可以是在操作期间可以取不同值的变量阈值。例如阈值可以取决于所有块内有效子单元的绝对数量或浮点(平均)数量与存储器内子单元总数之间的比值。阈值可以是可取决于其他参数的自适应阈值。阈值也可以相对于先前的阈值自适应,或者可以相对于先前识别块中有效子单元的实际数量自适应,具体地,在于是否采用先前识别块中有效子单元的数量作为用于阈值的新数值。或者,采用先前识别块中有效子单元数量的移动平均值作为用于阈值的新数值。
图2示出了根据本发明实施例的存储设备的方块图。存储设备1包括基于闪存的固态存储器2,具有块/页面式的存储器空间结构。其中几个块被标记为21。存储器控制器3控制闪存存储器2的动作,因此存储器可以被描述为计算机化的存储器。存储器控制器3具体地适合用于向存储器2写入数据和从存储器2读取数据,以及用于结合读写数据来执行所有的管理任务。具体地,存储器控制器3对块中的不同于其中包含有过时数据的一个或多个块(“异地写入”)的某一页面的更新写入。在这样做时,存储器控制器3将包含过时数据的一个或多个子单元标记为无效。存储器控制器3可以时常在块中执行搜索-而这样的搜索可能受限于包含有至少一个无效数据页面的块和/或根据其他标准受限-目的是为了识别出符合预定标准的一个或多个块。在优选的实施例中,搜索可以在识别出一个或指定数量个块符合指定标准时停止。这样的块随即建立起推荐给损耗均衡程序以供擦除的块子集。存储器控制器3可以随后执行损耗均衡程序以通过将每一个块的损耗水平与最大损耗水平相比较而在推荐块中识别出一个或多个块。只有在一个或多个推荐块表明损耗水平低于由根据损耗考察的任意块表现出的最高损耗水平时,这样的一个或多个块才可以被擦除。在擦除之前,存储器控制器3首先将该识别块中的有效页面的数据重新定位到另一个块中的页面,并且甚至可以重新定位到多个其他的块。在此情形下,存储器控制器3负责用于运行如上述实施例中的任意一个所述的方法。存储器控制器3进一步被连接至利用存储设备1来存储数据的主机4。因此,主机4向存储设备1发出读和/或写的指令。
为了实施如上述实施例中的任意一个所述的方法,存储器控制器3优选地提供优选存储在非易失性不可改写的存储介质(例如参见图3的ROM 31)内的计算机程序代码。存储控制器进一步提供RAM 32用于将程序代码载入,并且提供处理单元33用于运行RAM32内的程序代码。内部通信系统34被设置用于存储器控制器3中部件之间的通信,并且接口35被设置用于与闪存存储器通信,而另一个接口36可以被设置用于与主机之间的任何通信。
在图4a)的示意图中,示出了应用于块编号为0至1000的多个块(也就是用于上千个块)的等价于擦除周期数量的损耗。证实了提出的损耗均衡方法可以确保系统内的所有块在设备操作期间始终具有基本相同的损耗。在本示例中,存储器设备被认为是每一个块有16个页面,共有1000个块,占用率为0.8并且在随机少量写入的情况下工作。图4a)以小点示出了示出了在以等于10的窗口大小应用窗口式贪婪垃圾收集方案的假设下经过3千万次用户写操作之后的块损耗。这就意味着选择用于擦除的块就是前10个最老块中具有有效页面数量最少的块。根据图4a)中的示意图能够看出,块的损耗是在每一个块有4998到5017次擦除之间变化。相比之下,通过应用提出的损耗均衡方案,所有块都可以实现每一个块有5011或5012次擦除的基本均匀的损耗,正如图4a)中的两条水平线所示。实际上,提出的方法在存储器设备达到其寿命终点时实现基本均匀地利用所有块,而如果没有应用提出的方法,那么将会有相当数量的块不能充分利用。
参照图4b)中的示意图,考虑热流量和冷流量的情况并且假设有9%的块也就是90个块包含静态(冷)地址。静态地址包含随着存储器设备的寿命不会有过多改变的数据。图4b)以小点示出了在以等于100的窗口大小应用窗口式贪婪垃圾收集方案时经过6千万次用户写操作之后的块损耗。能够观察到9%的块只有1次损耗(未示出),而其余块的损耗则在每一个块有9878到9938次擦除之间变化(小点)。应用提出的方法得到的是如图4b)中的水平线所示的所有块中每一个块有9607或9608次擦除的均匀损耗。实际上,提出的方法在存储器设备达到其寿命终点时实现基本均匀地利用所有块,而如果没有应用提出的方法,那么将会有相当数量的块不能充分利用。
在本示例中,可以示意性地假设块的耐用度等于9918个周期并且如果有15%的块不再有效就将该设备宣布为不可用。因此,在缺少给出的损耗均衡方法的情况下,设备将在6千万次用户写入之后被宣布为不可用。相比之下,鉴于应用提出的损耗均衡方法在6千万次用户写入之后没有块达到其耐用度,因此就允许相当数量的额外写入。针对考虑的示例,这就允许在宣布设备不可用之前有额外的(9918-9607)*1000*16=5百万次用户写入,对应于将设备寿命增加了8%。这种寿命的增加无需引入额外的过程和复杂度即可获得,从而确保将损耗保持在极限范围内以避免设备被宣布为不可用。
正如本领域技术人员能够理解的那样,本发明的应用可以实施为系统、方法或计算机程序产品。因此,本发明特别是控制器形式的应用可以采用完全为硬件的实施例、完全为软件的实施例(包括固件、常驻软件、微型代码等)或者组合了软件和硬件应用的实施例的形式,它们基本上在本文中全都可以称为“电路”、“块”或“系统”。而且,本发明的应用例如读写方法可以采用在其上实施有计算机可读取程序代码的一种或多种计算机可读取介质内实施的计算机程序产品的形式。
可以使用一种或多种计算机可读取介质的任意组合。计算机可读取介质可以是计算机可读取信号介质或者计算机可读取存储介质。计算机可读取存储介质例如可以是但不局限于电、磁、光学、电磁、红外或半导体系统、装置或设备,或者是上述内容任意合适的组合。计算机可读取存储介质的更多具体示例(非穷举性列表)可以包括以下内容:具有一条或多条线路的电连接,便携式计算机磁盘,硬盘,随机存取存储器(RAM),只读存储器(ROM),可擦除可编程只读存储器(EPROM或闪存存储器),光纤,便携光盘只读存储器(CD-ROM),光存储设备,磁存储设备或上述内容任意合适的组合。在本文献的语境中,计算机可读取存储介质可以是能够包含或者存储程序以供使用或者与指令执行系统、装置或设备结合使用的任何实体介质。
计算机可读取信号介质可以包括例如在基带中或者作为载波的一部分与其中实施的计算机可读取程序代码一起传播的数据信号。这样的传播信号可以采用多种形式中的任何一种,包括但不限于电磁信号、光信号或其任意合适的组合。计算机可读取信号介质可以是并非计算机可读取存储介质并且能够通信、传播或者输送程序以供使用或者与指令执行系统、装置或设备结合使用的任意计算机可读取介质。
在计算机可读取介质上实施的程序代码可以利用任意合适的介质传输,包括但不限于无线、有线线路、光纤光缆、RF等或者上述内容任意合适的组合。
用于实现本发明应用中操作的计算机程序代码可以用一种或多种编程语言的任意组合编写,包括面向对象的编程语言例如Java、Smalltalk、C++等以及传统的过程编程语言例如C编程语言或类似的编程语言。程序代码可以完全在用户的计算机上运行,部分在用户的计算机上运行,作为单独的软件包运行,部分在用户的计算机上运行并且部分在远程计算机上运行,或者完全在远程计算机或服务器上运行。在后两种情形中,远程计算机可以通过任何类型的网络连接至用户的计算机,包括局域网(LAN)或广域网(WAN),或者连接可以通往外部计算机(例如使用互联网服务供应商通过互联网实现)。
以下根据本发明的实施例参照方法、装置(系统)和计算机程序产品的流程图和/或方块图来介绍本发明的各种应用。应该理解流程图和/或方块图中的每一个块以及流程图和/或方块图中的块组合都可以由计算机程序指令实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或用于生产机械的其他可编程数据处理装置的处理器以使得通过计算机或其他可编程数据处理装置的处理器执行的指令建立起用于实现流程图和/或方块图的一个或多个块中列举的功能/动作的方法。
这些计算机程序指令也可以被存储在能够引导计算机、其他可编程数据处理装置或以特定方式工作的其他设备的计算机可读取介质内,以使存储在计算机可读取介质内的指令生产出的制品包括有实现了流程图和/或方块图中的一个或多个块中列举的功能/动作的指令。
计算机程序指令也可以被载入到计算机、其他可编程数据处理装置或其他设备上以促使在计算机、其他可编程装置或其他设备上执行一系列操作步骤,从而生成计算机实现的过程,以使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或方块图中的一个或多个块中列举的功能/动作的过程。
附图中的流程图和方块图根据本发明的不同实施例示出了系统、方法和计算机程序产品的结构、功能和可以实施的操作。在这方面,流程图或方块图中的每一个块均可表示程序块、程序段或代码部分,其中包括用于实现一种或多种特定逻辑功能的一条或多条可执行指令。还应该注意到在某些可选的实施方式中,块中注明的功能可以脱离附图中标明的顺序完成。例如,相继示出的两个块实际上可以基本上同时执行,或者这两个块有时可以用相反的顺序执行,这取决于所涉及到的功能。还应该注意到方块图和/或流程图中的每一个块以及方块图和/或流程图中的块组合均可通过专用的基于硬件的系统实现以执行特定功能或动作,或者通过专用硬件和计算机指令的组合来实现。
Claims (15)
1.用于操作计算机化存储器的方法,所述存储器被组织用于在存储器的单元集合内存储数据,所述方法包括:
-确定集合中每一个单元(i)的损耗水平(c(i))并且在确定的损耗水平(c(i))当中识别出最大损耗水平(c_max),
-接收被选择用于数据擦除的一个或多个单元(i)的推荐子集;并且
-在所述子集中识别出其损耗水平(c(i))小于最大损耗水平(c_max)的至少一个单元(i)用于后续的数据擦除,
-其中识别优选地包括:对于子集中的每一个单元(i),如果所述每一个单元(i)的损耗水平(c(i))都等于最大损耗水平(c_max),那么除非所述集合中其他的每一个单元(i)的损耗水平(c(i))都等于最大损耗水平(c_max),否则就放弃将所述每一个单元(i)选择用于数据擦除。
2.如权利要求1所述的方法,其中所述集合中至少一个单元(i)的损耗水平(c(i))是根据应用于所述至少一个单元(i)的擦除次数确定的,擦除次数在每一次擦除单元(i)后都增加。
3.如权利要求1或权利要求2所述的方法,其中根据存储在所述子集中的所述一个或多个单元(i)内的数据特征推荐所述子集中的一个或多个单元(i)以供选择用于数据擦除。
4.如以上权利要求中的任意一项所述的方法,其中单元(i)的集合中的每一个单元(i)都包括子单元的集合,并且其中根据所述子集的一个或多个单元中包含有效数据的子单元数量,推荐所述子集中的所述一个或多个单元(i)以供选择用于数据擦除。
5.如以上权利要求中的任意一项所述的方法,其中识别步骤包括针对子集中的至少一个单元(i)将所述单元(i)的损耗水平(c(i))与最大损耗水平(c_max)相比较。
6.如权利要求5所述的方法,其中所述子集包括多于一个单元(i),其中根据与子集中单元(i)相关联的不同于损耗水平(c(i))的特征将子集中的单元(i)排序,并且其中识别出子集中具有优选特征且损耗水平(c(i))小于最大损耗水平(c_max)的至少一个单元(i)用于后续的数据擦除。
7.如以上权利要求中的任意一项所述的方法,其中所述子集包括推荐供选择用于数据擦除的单个单元(i)。
8.如权利要求1至6中的任意一项所述的方法,其中所述子集包括多于一个单元(i),并且其中子集内的单元(i)被连续地考察用于后续的数据擦除。
9.如权利要求8所述的方法,其中第一识别器(last)根据与子集中单元(i)相关联的不同于损耗水平(c(i))的特征识别出当前优选的单元(i),并且其中第二识别器(last_WL)根据与子集中单元(i)相关联的损耗水平(c(i))识别出当前优选供选择用于擦除的单元。
10.如权利要求9所述的方法,其中单元(i)的集合中的每一个单元(i)都包括子单元集合,并且其中所述第一识别器(last)根据其包含有效数据的子单元数量识别出当前优选的单元(i)。
11.如以上权利要求中的任意一项所述的方法,其中如果集合中每一个单元(i)的损耗水平(c(i))都等于最大损耗水平(c_max),那么就识别出根据与子集中单元(i)相关联的不同于损耗水平(c(i))的特征是优选的、用于数据擦除的优选单元(i)。
12.如权利要求11所述的方法,其中单元(i)的集合中的每一个单元(i)都包括子单元集合,并且其中选择用于擦除的单元(i)在其包含有效数据的子单元数量方面是优选的。
13.一种系统,包括被设置用于执行如权利要求1至11中任意一项所述方法步骤的装置。
14.一种存储设备,包括:
-包含单元(i)集合的存储器(2),以及
-控制器(3),用于
-确定集合中每一个单元(i)的损耗水平(c(i))并且在确定的损耗水平(c(i))当中识别出最大损耗水平(c_max),
-接收选择用于数据擦除的一个或多个单元(i)的推荐子集;
-在子集中识别出其损耗水平(c(i))小于最大损耗水平(c_max)的至少一个单元(i)用于后续的数据擦除,其中识别优选地包括:对于子集中的每一个单元(i),如果所述每一个单元(i)的损耗水平(c(i))都等于最大损耗水平(c_max),那么除非集合中其他的每一个单元(i)的损耗水平(c(i))都等于最大损耗水平(c_max),否则就放弃将所述每一个单元(i)选择用于数据擦除。
15.如权利要求14所述的存储设备,其中存储器(2)是闪存存储器,包括具有块形式的单元(i),并且其中每一个块都包括具有页面形式的子单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP11166647.5 | 2011-05-19 | ||
EP11166647 | 2011-05-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102841849A true CN102841849A (zh) | 2012-12-26 |
CN102841849B CN102841849B (zh) | 2015-10-28 |
Family
ID=46026257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210156517.0A Active CN102841849B (zh) | 2011-05-19 | 2012-05-18 | 用于操作计算机化存储器的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9218277B2 (zh) |
CN (1) | CN102841849B (zh) |
DE (1) | DE102012208141B4 (zh) |
GB (1) | GB2490991B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512049A (zh) * | 2015-11-23 | 2016-04-20 | 联想(北京)有限公司 | 一种存储器数据回收方法、装置及系统 |
CN110968268A (zh) * | 2019-11-15 | 2020-04-07 | 成都智邦科技有限公司 | 一种基于spiflash的存储管理方法及存储结构 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011198433A (ja) * | 2010-03-23 | 2011-10-06 | Toshiba Corp | メモリシステム |
US9141526B2 (en) * | 2010-09-16 | 2015-09-22 | International Business Machines Corporation | Reclaiming units by searching units for a predetermined criterion and storing data from a valid subunit |
GB2490991B (en) * | 2011-05-19 | 2017-08-30 | Ibm | Wear leveling |
US9274854B2 (en) * | 2012-07-27 | 2016-03-01 | International Business Machines Corporation | Contamination based workload management |
US9547586B2 (en) * | 2013-01-03 | 2017-01-17 | Macronix International Co., Ltd. | Metadata containers with indirect pointers |
GB2514354A (en) | 2013-05-20 | 2014-11-26 | Ibm | Managing storage devices having a lifetime of a finite number of operations |
US9348748B2 (en) | 2013-12-24 | 2016-05-24 | Macronix International Co., Ltd. | Heal leveling |
US9996303B2 (en) * | 2014-05-08 | 2018-06-12 | Kabushiki Kaisha Toshiba | Hybrid-HDD that gives up old NAND data at the last moment |
US20170068467A1 (en) * | 2015-09-04 | 2017-03-09 | HGST Netherlands B.V. | Wear management for flash memory devices |
DE102015223834A1 (de) * | 2015-12-01 | 2017-06-01 | Bayerische Motoren Werke Aktiengesellschaft | Elektronisches Steuergerät, Fortbewegungsmittel sowie Verfahren zur Verwendung eines beschreibbaren Speichermittels |
US9959058B1 (en) | 2016-03-31 | 2018-05-01 | EMC IP Holding Company LLC | Utilizing flash optimized layouts which minimize wear of internal flash memory of solid state drives |
US10157004B2 (en) * | 2016-04-14 | 2018-12-18 | Sandisk Technologies Llc | Storage system and method for recovering data corrupted in a host memory buffer |
EP3538984B1 (en) * | 2016-11-09 | 2022-05-18 | Jetico Inc. Oy | Method in data wiping of a mass storage |
WO2018124912A1 (en) | 2016-12-28 | 2018-07-05 | EMC IP Holding Company LLC | Data storage system tiering accounting for limited write endurance |
US10198195B1 (en) | 2017-08-04 | 2019-02-05 | Micron Technology, Inc. | Wear leveling |
JP2021099642A (ja) * | 2019-12-20 | 2021-07-01 | キヤノン株式会社 | 情報処理装置および情報処理装置の制御方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655819A (zh) * | 2008-08-18 | 2010-02-24 | 深圳市朗科科技股份有限公司 | 对半导体存储介质进行空块回收的方法、系统及设备 |
WO2010097065A1 (de) * | 2009-02-26 | 2010-09-02 | Hyperstone Gmbh | Verfahren zur verwaltung von flashspeichern mit gemischten speichertypen |
WO2010144139A2 (en) * | 2009-06-12 | 2010-12-16 | Micron Technology, Inc. | Methods, memory controllers and devices for wear leveling a memory |
US20100325340A1 (en) * | 2009-06-23 | 2010-12-23 | Seagate Technology Llc | Memory Wear Control |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2251324B (en) * | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
JP3641280B2 (ja) * | 1992-10-30 | 2005-04-20 | インテル・コーポレーション | フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法 |
US5388083A (en) * | 1993-03-26 | 1995-02-07 | Cirrus Logic, Inc. | Flash memory mass storage architecture |
US6973531B1 (en) * | 2002-10-28 | 2005-12-06 | Sandisk Corporation | Tracking the most frequently erased blocks in non-volatile memory systems |
US7409490B2 (en) | 2006-04-15 | 2008-08-05 | Yi-Chun Liu | Method of flash memory management |
KR100830580B1 (ko) * | 2006-10-20 | 2008-05-21 | 삼성전자주식회사 | 플래시 메모리 장치를 포함한 메모리 시스템의 데이터 복원방법 |
US20100174845A1 (en) * | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
GB2490991B (en) | 2011-05-19 | 2017-08-30 | Ibm | Wear leveling |
-
2012
- 2012-03-09 GB GB1204152.1A patent/GB2490991B/en active Active
- 2012-05-11 US US13/469,148 patent/US9218277B2/en not_active Expired - Fee Related
- 2012-05-15 DE DE102012208141.0A patent/DE102012208141B4/de active Active
- 2012-05-18 CN CN201210156517.0A patent/CN102841849B/zh active Active
- 2012-08-29 US US13/597,861 patent/US9274944B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655819A (zh) * | 2008-08-18 | 2010-02-24 | 深圳市朗科科技股份有限公司 | 对半导体存储介质进行空块回收的方法、系统及设备 |
WO2010097065A1 (de) * | 2009-02-26 | 2010-09-02 | Hyperstone Gmbh | Verfahren zur verwaltung von flashspeichern mit gemischten speichertypen |
WO2010144139A2 (en) * | 2009-06-12 | 2010-12-16 | Micron Technology, Inc. | Methods, memory controllers and devices for wear leveling a memory |
US20100325340A1 (en) * | 2009-06-23 | 2010-12-23 | Seagate Technology Llc | Memory Wear Control |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512049A (zh) * | 2015-11-23 | 2016-04-20 | 联想(北京)有限公司 | 一种存储器数据回收方法、装置及系统 |
US10198209B2 (en) | 2015-11-23 | 2019-02-05 | Lenovo (Beijing) Limited | Memory storage recycling |
CN105512049B (zh) * | 2015-11-23 | 2019-04-23 | 联想(北京)有限公司 | 一种存储器数据回收方法、装置及系统 |
CN110968268A (zh) * | 2019-11-15 | 2020-04-07 | 成都智邦科技有限公司 | 一种基于spiflash的存储管理方法及存储结构 |
CN110968268B (zh) * | 2019-11-15 | 2023-03-17 | 成都智邦科技有限公司 | 一种基于spiflash的存储管理方法及存储结构 |
Also Published As
Publication number | Publication date |
---|---|
GB2490991A (en) | 2012-11-21 |
US20120297123A1 (en) | 2012-11-22 |
DE102012208141B4 (de) | 2018-10-25 |
GB2490991B (en) | 2017-08-30 |
US9274944B2 (en) | 2016-03-01 |
DE102012208141A1 (de) | 2012-11-22 |
GB201204152D0 (en) | 2012-04-25 |
US20120324155A1 (en) | 2012-12-20 |
US9218277B2 (en) | 2015-12-22 |
CN102841849B (zh) | 2015-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102841849A (zh) | 用于操作计算机化存储器的方法和系统 | |
CN110245093A (zh) | 固态存储驱动器阵列中的工作负荷自适应超额配置 | |
US8806114B2 (en) | Dynamic storage hierarchy management | |
KR101173721B1 (ko) | 멀티레벨 데이터 저장 셀용 관리 동작 | |
CN101763309B (zh) | 非易失性存储装置、信息记录系统及信息记录方法 | |
US20130054873A1 (en) | Storage system cache using flash memory with direct block access | |
TW201227739A (en) | Method for performing block management, and associated memory device and controller thereof | |
US11016679B2 (en) | Balanced die set execution in a data storage system | |
CN102171663A (zh) | 管理缓存内容的存储 | |
EP1782176A2 (en) | Systems, methods, computer readable medium and apparatus for memory management using nvram | |
CN101874239A (zh) | 基于写入频率将数据写入不同的存储设备 | |
US20150006799A1 (en) | Solid-state drive management and control | |
US10204693B2 (en) | Retiring computer memory blocks | |
CN108829342B (zh) | 一种日志存储方法、系统及存储装置 | |
CN113924546A (zh) | 非易失性存储器中的磨损感知块模式转换 | |
CN110837477B (zh) | 一种基于寿命预测的存储系统损耗均衡方法及装置 | |
WO2009031727A1 (en) | Cache management method and cache device using sector set | |
US11733909B2 (en) | Secure-erase prediction for data storage devices | |
US20190391752A1 (en) | Block health estimation for wear leveling in non-volatile memories | |
US8499116B2 (en) | Managing wear on independent storage devices | |
CN116069252A (zh) | 一种zns ssd设备的控制方法、装置及设备 | |
CN117573582A (zh) | 一种多闪存控制器的控制方法及相关设备 | |
CN117632028A (zh) | 一种Flash存储器的数据管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |