CN104881366B - 修复均化的方法与系统 - Google Patents

修复均化的方法与系统 Download PDF

Info

Publication number
CN104881366B
CN104881366B CN201410817365.3A CN201410817365A CN104881366B CN 104881366 B CN104881366 B CN 104881366B CN 201410817365 A CN201410817365 A CN 201410817365A CN 104881366 B CN104881366 B CN 104881366B
Authority
CN
China
Prior art keywords
memory block
tandem
reparation
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.)
Active
Application number
CN201410817365.3A
Other languages
English (en)
Other versions
CN104881366A (zh
Inventor
张育铭
李祥邦
吕函庭
张原豪
郭大维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Macronix International Co Ltd
Original Assignee
Macronix International Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Macronix International Co Ltd filed Critical Macronix International Co Ltd
Publication of CN104881366A publication Critical patent/CN104881366A/zh
Application granted granted Critical
Publication of CN104881366B publication Critical patent/CN104881366B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear 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)
  • Human Computer Interaction (AREA)

Abstract

本发明通过修复均化技术而提升存储器装置的耐久度。修复均化技术是一种使存储区块的修复周期更为分散的轻型解决方案。本文所描述的方法能够在不产生大量负担情况下实现修复均化。修复均化技术能显著的改善存储区块的存取效能(access performance)与有效寿命(effective lifetime)。长期而言,能使每一个存储区块的磨损次数降低。修复均化的作法可为:将自产生后鲜少被使用或从未被修改的数据(例如:只读性文件),搬移至经历过最多次、或经历过多次修复的存储区块。

Description

修复均化的方法与系统
技术领域
本发明是有关于一种具有内存管理功能的存储器装置与系统。
背景技术
某些非挥发性存储器具有存取周期的耐久性限制(access cycle endurancelimitations)。例如,基于电荷捕捉(charge trapping)的闪存、相变化存储器(phasechange memory)等。其中,存取周期的耐久性限制可能是编程/抹除周期或设定/重设周期期间的限制。
对存储器的一给定存储区块而言,施加于其上的存取周期可能与存储于该存储区块的数据相关。因此,不同部分的存储器可能会在不同时间达到耐久性限制(endurancelimitations)。为解决此种问题,现已发展出耗损均化技术(wear leveling)。基本上,耗损均化技术会根据闪存的存储区块的编程与抹除周期,在不同的快闪存储区块间搬移数据。本发明的方法会将位于即将达到耐久性限制的存储区块内的常用数据,搬移至较少被使用的存储区块。应用程序能通过逻辑寻址架构(logical addressing schemes),掌握此类资料搬移的过程。尽管采用了耗损均化技术,会因为先进存储器耐久度变低的趋势下,制造更多主动搬移数据的负担,使得存储区块可使用的周期也随之降低。
对于存取次数(包含编程/抹除周期或设定/重置周期)已经达到一定程度的存储单元而言,也已发展出修复技术。某些类型的存取周期,例如读取周期,可能未被计入损耗均化的过程。通过这些修复过程,可以提升存储区块的耐久性。例如,对电荷捕捉闪存以及其它类型的非挥发性存储器而言,可通过热加速恢复(repair),或修复(heal)受损的存储单元,进而改善存储器装置的耐久性。例如:旺宏电子股份有限公司已获准的美国专利号US8,488,387。与热循环(thermal cycling)类似的作法也可以被应用至其他存储器技术。
虽然修复操作可以使存储单元恢复/修复至一定程度,但对某些技术而言,能够对存储单元修复的次数仍受到限制。例如,如果对存储器的同一个存储区块重复进行修复,则修复过程的效益将因而降低。
亟需发展出一种能够利用修复过程的优点而解决存储器的耐久性的技术。此外,能以最小的负担(overhead)防止存储区块被过度抹除或修复的技术也是迫切需要的。
发明内容
本发明叙述了通过修复均化而提升存储器耐久度的技术。修复均化是一个用于使存储区块的修复周期更为分散的逻辑程序。以下叙述的作法可以在不需要产生大量负担的情况下,达到修复均化的效果。修复均化技术能显著的改善存储区块的存取效能与有效寿命。长期而言,通过使修复次数的分布更加均匀的作法,可以降低基于每一个存储区块的存取次数而直接进行的损耗均化(wear leveling)。修复均化的作法可为:将自产生后鲜少被使用或从未被修改的数据(例如:只读性文件),搬移至经历过最多次、或经历过多次修复的存储区块。
修复均化技术发出一个修复指令,进而启动对损坏得存储区块进行恢复或修复的一个修复操作。修复均化技术可使存储区块间的修复周期次数的差异性缩小。并且,在进行损坏均化时,比较并缩小各存储区块间的使用差异性。在实施例中,当存储区块达到一个存取周期的限制(例如,一个抹除周期的临界值、一个重置周期的临界值、该存储区块出现无法存取的数据,或是该存储区块的数据目前错误率过高)时,通过发出修复指令而开始对存储区块进行一个修复操作。在实施例中,对一个存储区块进行位错误率(bit error rate,简称为BER)的侦测,并于该存储区块的位错误率达到一预设的位错误率的临界值时,发出修复指令而开始对存储区块进行修复操作。再者,在实施例中,因为用户的指令,或是一个显著事件(例如:系统重开机,或存储区块最近修复操作的次数达到一个预设时间的临界值)的经过时间,因而发出一个修复指令。
此处所描述的存储区块的修复次数是指:施加于存储区块的修复操作/周期次数。一个存储区块的存取次数代表自该存储区块经过前次修复后,所历经的与该存储区块的耐久性相关的至少一种存取周期的次数。以闪存为例,一个存取周期可以是一个抹除周期。在实施例中,在修复均化操作所使用的一个存储区块的存取次数,代表该存储区块自前次修复后所经过的存取周期。在实施例中,利用一个阵列而维持并存储每一个存储区块的修复次数与存取次数。
结合修复均化技术的系统可包含用于修复均化的逻辑。通过该逻辑而使存储区块的修复周期更为分散,最终能改善存储区块的持久性。并因此能够在不产生大量负担的情况下,延长存储区块的寿命。用于修复均化的逻辑可以硬件、软件或其组合实现。
在实施例中,确认包含鲜少被抹除的数据而未超过临界修复次数的存储区块,并将该些数据移动至最近被抹除超过临界修复次数的存储区块,进而实现修复均化。此程序让超过临界修复次数的存储区块减少达到临界存取次数的可能性。其中,临界存取次数用于指示后续的修复周期。
为了对本发明的上述及其他方面有更好的了解,下文特举优选实施例,并配合所附附图,作详细说明如下:
附图说明
图1A、图1B,其为本发明技术的系统架构。
图2,其为本发明技术所采用的数据结构的示意图。
图3,其为本发明技术的数据结构的一种阵列元素的举例。
图4,其为移动危险群组的一个例子。
图5,其为实现本发明技术逻辑的流程图的举例。
图6,其为计算机系统以软件方式实现本发明的简化方块图。
【符号说明】
系统架构 100 闪存转译层 140
地址转译器 141 修复均化器模块 110
闪存存储系统 120 存储器技术装置层 130
安全群组 210 危险群组 220
基底指标 230、303
修复串列 211、212、213、214、225
阵列结构 300 条目 301、304、305、306、307
实体存储区块地址 302
步骤 502、504、506、508、510、512、514、516、518、520、522、524、526、528、530、532、534、536
具体实施方式
以下为关于修复均化的实施例的详细描述,并可参考附图。
图1A和图1B举例说明两个系统架构100,每一个系统架构各自包含一个用于对闪存执行修复均化的修复均化器模块110。其他实施方式可适于其他类型的存储器。以闪存存储系统120为例,一个存储器存储系统可以包括两个用于控制存储器芯片的软件层。其中一层是存储器技术装置层(memory technology device layer,简称为MTD layer)130,另外一层是闪存转译层(flash translation layer)140。存储器技术装置层130是一个硬件抽象层,用以提供闪存转译层存取底层快闪芯片的基本功能(primitive functions),例如读取或写入。闪存转译层可包括一个地址转译器(address translator)141、清除器(garbagecollector or cleaner),和一个损耗均化器(wear leveler)。地址转译器141将被请求的逻辑区块地址(logical block address,简称为LBA)翻译为相对应的实体(physical)的存储区块与分页。垃圾收集器用于回收有些存储器(例如:闪存)因为一次写入特性(write-once property)以及异区更新(out-of-place update)的特性而产生的无效数据。损耗均化器是通过对存储区块分散抹除的方式,延长存储器芯片的寿命。在实施例中,修复均化技术被整合至各种类型存储器芯片的现有系统架构中。在图1A的实施例中,将修复均化器模块110整合至闪存转译层140。在图1B的实施例中,可共同使用修复均化器模块110与损耗均化器,将用于延长闪存的寿命的修复均化器模块110设置于闪存转译层140与存储器技术装置层130间,甚至以修复均化器模块110替换损耗均化器。
修复均化技术的一个重要面向是,搜寻和辨识休眠数据(dormant data)。修复均化技术可以通过控制逻辑实现的度量方式辨识休眠数据。若与存储在其他存储区块的数据相比时,存储区块所存储的数据已经较久未被更新时,可将其视为休眠数据。辨识休眠数据的作法可采用不同方式实现。例如,可以利用具有一定观察期(observation period)的修复串列(healing list)确认休眠数据。在实施例中,修复均化技术包含两个程序:调整程序(adjustment procedure)和冻结程序(freeze procedure)。这两个程序使用修复串列作为数据结构。只是,调整程序与冻结程序所使用的数据结构,并不以修复串列为限。实际应用时,只要能用于能管理多个条目的结构(例如:阵列、群组、树状结构等)即可。调整程序利用一个度量(例如:在给定的修复串列中最近最少被抹除的存储区块),有效率地搜寻并确认存储着冬眠数据的存储区块。在实施例中,确认在存储区块内存有休眠数据的方式是,将最近被清除或抹除的存储区块搬移至修复串列的前端(head of healing list)。其中,包含休眠数据的存储区块则聚集在修复串列的后端(tail of healing list)。在实施例中,会在每次有存储区块被抹除时启动调整程序。在进行搜寻与选择的过程中,调整程序可以通过无需复制任何最新数据(live data)的方式,确认包含休眠数据的存储区块。调整程序可利用此种数据结构和修复串列的组成,在所包含的存储区块的修复次数尚未超过临界修复次数(non-over-threshold)的串列中,搜寻与选择最近最少被清除的存储区块。其中,一个“被清除的存储区块”代表该存储区块已经被抹除或重置,或经由其他方式指示为可用。
冻结过程控制而使每个存储区块的修复次数更为均匀。当一个修复次数超过临界修复次数(over-threshold heal count)的存储区块被存取(例如被清除或抹除)时,调整程序将启用(invoke)冻结程序。当一个存储区块的修复次数已经达到或超过临界修复次数(heal count threshold)时,将其称为一个超过临界修复次数的存储区块。在实施例中,临界修复次数是根据存储区块所具有的最小修复次数(least amount of heal count),以及修复串列的数目决定。
当(多个)修复串列所包含的存储区块的修复次数超过临界修复次数时,该些修复串列被称为危险群组(danger group);当多个修复串列所包含的存储区块的修复次数未超过临界修复次数时,该些修复串列被称为安全群组(safety group)。修复均化技术的实施例将用于维护安全群组与危险群组的内容。与其他的存储区块相比,修复次数超过临界修复次数的存储区块更接近耐久性限制或是已经达到耐久性限制。因此,将这些修复次数超过临界修复次数的存储区块归类为危险群组。另一方面,对修复次数尚未超过临界修复次数的存储区块而言,较不像危险群组内的存储区块那么接近耐久性限制,因而将修复次数尚未超过临界修复次数的存储区块归类为安全群组。
每一次启用冻结程序时,会将先前由调整程序确认的休眠数据转移至位于危险群组中,最近被抹除的超过临界修复次数的存储区块。因为包含休眠数据的存储区块再被写入数据的机会低于其他存储区块的缘故,将休眠数据转移至超过临界修复次数的存储区块的作法,能够降低该存储区块在近期再被抹除与被修复的可能性。
请参见图2,其为本发明修复均化技术的实施例所使用的数据结构的示意图。如前所述,这些存储区块被划分成两个群组,分别被标记为安全群组210和危险群组220。对位于安全群组210内的存储区块而言,达到耐久性限制的风险并不像位于危险群组220的存储区块那么高。因此,位于安全群组210内的存储区块可以被任意抹除以及存储任何类型的数据。相对的,由于危险群组220内的存储区块都比安全群组210内的存储区块经过更多次的抹除与修复,所以属于危险群组220的存储区块不能再被任意的抹除,也不适合用于存储任何类型的数据。在实施例中,安全群组210内的存储区块被连接至多个修复串列211、212、213、214中的一个,修复串列211、212、213、214属于安全群组210的一部分。位于危险群组220中的所有存储区块共同连接至一个修复串列225。安全群组210和危险群组220所包含的修复串列的数量不需要被限定。在所述实施例中,总共有五个修复串列211、212、213、214、225,其中四个修复串列属于安全群组210,一个修复串列属于危险群组220。每一个修复串列可以是一个按照最近抹除顺序而排列的连接串列(linked list)。如图2所示,连接串列的左侧(前端)是最近最常被抹除的存储区块;连接串列的右侧(后端)是最近最少被抹除的存储区块。在一个存储区块被抹除后,调整程序便将这个最近被抹除的存储区块搬移至修复串列的前端,进而维持这个连接串列的先后顺序。由于修复串列的后端聚集着最近最少被抹除的存储区块,因此,调整程序可以根据存储区块在修复串列内的顺序而判断休眠数据的位置。
在实施例中,属于同一个修复串列中的存储区块具有相同或类似的修复次数(heal count)。在实施例中,位于同一个修复串列的所有存储区块均具有相同的修复次数。在实施例中,该数据结构包括一个用于指向修复串列的基底指标230。在图2中,基底指标230指向下方的修复串列211。在系统的所有存储区块中,位于修复串列211的存储区块所具有的修复次数最小。基底指标230可以指向任何一个修复串列。据此,任何修复串列均可能与系统中具有最小修复次数的存储区块相对应。在实施例中,在任何存储区块被修复前,所有存储区块的修复次数均为零。此时,所有的存储区块均属于被基底指标所指向的修复串列,其他的修复串列则是空的。
在实施例中,数据结构可包含任意数量的修复串列。系统中的存储区块间的耐受性差异(tolerated difference)取决于修复串列的数量。例如,图2所示的安全群组211包含四个修复串列211、212、213、214,以及由基底指标230指向的底部修复串列211。底部修复串列211内的存储区块是在系统的所有存储区块中,具有最小修复次数的存储区块。在此实施例中,在底部修复串列211上方的修复串列212所包含的存储区块的修复次数,会大于由基底指标230指向的底部修复串列211所包含的存储区块的修复次数(前后两个修复串列211、212所包含的存储区块的修复次数间的差值为1)。每一个修复串列所包含的存储区块的修复次数,会较前一个修复串列所包含的存储区块的修复次数多一次(差值为1)。连带的,在此实施例中,危险群组内的修复串列所包含的存储区块,其修复次数与由基底指标230指向的底部修复串列211的存储区块的修复次数相比时,两者的差值将大于或等于四。
在实施例中,调整程序会确认在修复串列中的休眠数据。在冻结程序中,经确认后的休眠数据被搬移至位于危险群组中的最近被抹除的存储区块中。因此,对位于危险群组中的多个超过临界修复次数的存储区块而言,在近期内再被抹除或修复的可能性,相对比位于安全群组中的存储区块更低。因为在抹除存储区块时,已经将休眠数据搬移至位于危险群组的存储区块内。因此,对危险群组内的存储区块而言,再继续增加其修复次数的机会较小。连带的,修复串列的数量会影响在系统中的存储区块的修复次数间的差异。
在实施例中,可以通过安排修复串列的方式而提升效能。存储区块所属的修复串列可以根据修复次数而分类。维持修复串列,以及在修复串列中搜寻某些特定存储区块的过程,可以通过一个组成元素(element)的数量与系统的存储区块数量相等的阵列达成。阵列内的每个元素包含一个索引与两个指针。该索引用于代表与其对应的修复串列,两个指标则用于形成双向串列(doubly linked list)。例如,在阵列中维持修复串列中第i个存储区块的连接串列的状态(linked-list status),因此可以不需要通过搜寻即可自阵列中取得第i个存储区块的连接串列的状态(linked-list status)。在随机存取存储器(RAM)的空间有限的实施例中,阵列可被划分为大小相等的块体(chunk),且每一个块体被存储在闪存内,并根据需要与否而加载至随机存取存储器(RAM)。
图3说明支持修复均化编程的一种阵列结构300。该阵列可以被存储在高速存储器(例如RAM)中。在计算机执行修复均化程序时,可对高速存储器进行存取。阵列结构300的条目(例如:条目301)可以包括多个数据字段,一个数据字段代表索引(index:)用于判断该修复串列的用途(基底指标所指向的修复串列、安全群组的修复串列、危险群组的修复串列),与该修复串列对应的实体存储区块为其成员(member)。一个数据字段包括指示先前存储区块的指针(前一区块指标)。若要对一个预定的索引(given index)建立双向串列(doublylinked list),则另包含一个指示后方存储区块的指针(后一区块指标)。指针可利用地址偏移(address offset)或是完整的实体存储区块地址(complete block address)代表在修复串列中的前一个存储区块或后一个存储区块。对于位于最小修复次数串列前端的条目而言,可在其前一区块指针的位置存储一个默认值(例如:-1),用于代表该条目是被基底指标(BASE PNTR)303所指向。阵列结构300中的条目也可用于维持与实体存储区块相对应的抹除次数(或其他存取次数),以及可在其他实施例采用的修复次数。
在阵列结构300中的条目可以在对存储器中与实体存储区块地址(physicalblock address,简称为PBA)(例如:实体存储区块地址302)对应的存储区块进行修复均化时而存取。因此,当一个给定的实体存储区块被侦测到要被抹除或其它相关的存取时,该存取的实体存储区块地址被用于取得与该实体存储区块对应的条目。存储在条目中的信息,可用于支持如上所述的修复均化过程中。
在上述的例子中,修复均化的过程将维护基底指标303,基底指针303被存储在缓存器或是计算机执行修复均化程序时,所能存取的其它存储器地址。基底指标303可以存储相对应修复次数最低的修复串列的前端存储区块的实体存储区块地址,此串列为安全群组内的一串列。
图中以箭头代表由基底指标开始进行搜寻,在条目中由基底指标303所存取的后一区块指标指向条目304。且,条目304的前一区块指标与基底指标303相符。条目304的后一区块指标指向条目305;条目305的后一区块指标指向条目306;条目306的后一区块指标指向条目307,依此类推。双向串列可以利用相反方向进行。举例说来,可以通过具有最小索引的串列后端(the end of the lower index list)的后一区块指标(next block point),以及通过在条目内存储的索引编号(index number)而判断具有后一索引的串列的前端。
例如:在经过修复程序后,当一个条目被从一个串列搬移到下一个串列时,该条目的索引编号也被改变。此外,该条目的先一区块指标和后一区块指标也被更新,进而在新的串列中适当位置插入该条目。此外,原本由该存储区块的后一区块指标所指向的(后方)存储区块,其前一区块指标也将被更新;以及,原本由该存储区块的前一指标所指向的(前方)存储区块,其后一区块的指标也会被更新。此外,随着存储器的抹除周期与修复周期变化,存储区块的抹除次数与修复次数也适时的更新。在实施例中,当系统中的存储区块为抹除周期或存取周期时,将启动调整程序维持或调整修复串列,让休眠数据聚集在由基底指标所指向的具有最小修复次数的修复串列。当存储区块被抹除后执行调整程序时,如果被抹除的存储区块的抹除次数还未达到临界抹除次数时,便将该被抹除存储区块的位置搬移到所属的修复串列的前端,如图2所示的存储区块5(PBA 5)。如果该被抹除存储区块的抹除次数已到达其当前的临界抹除次数(current erase count threshold),则对该被抹除存储区块进行修复操作,并将存储区块5(PBA 5)提升至与其具有相同修复次数的修复串列212的前端,作为该修复串列中最近被修复的存储区块。例如,如图2所标式的存储区块80(PBA80)。在实施例中,如果该被抹除存储区块的位错误率(bit error rate)已经达到位错误率的临界值(bit error rate threshold)时,利用修复操作修复该被抹除存储区块。因此,通过将被抹除存储区块与被修复存储区块搬移至具有相同修复次数的修复串列的方式,调整程序得以维护修复串列的内容。通过将被抹除的存储区块搬移至修复串列前端的方式,每一个修复串列的后端将各自对应于在串列中最近最少被抹除的存储区块。因此,存储在修复串列后端的存储区块内的数据,被抹除的可能性较低。通过搬移此类数据而降低存储区块被抹除的可能性的作法,可产生帮助。
在实施方式中,如果系统一共有N个修复串列,则前N-1个修复串列所包含的存储区块,其修复次数尚未超过临界修复次数,并将这N-1个修复串列视为安全群组;第N个修复串列(即,修复串列N-1)包含超过临界修复次数的存储区块,并因此将第N个修复串列视为危险群组。当位于不属于危险群组的修复串列i的存储区块,通过修复指令而进行修复时,将此存储区块移动至修复串列(i+1)%N的前端的位置。然而,如果危险群组中的存储区块被抹除,将启动冻结程序。冻结程序会将位于安全群组内的休眠数据,搬移至危险群组中将被抹除的存储区块,进而降低在近期对位于危险群组中的这个存储区块,再度进行抹除与修复的可能性。
根据本发明的实施例,在冻结程序被启用后,由被基底指标所指向的,与最小修复次数相对应的修复串列的后端,开始进行休眠数据的搜寻程序。由于调整程序会将休眠数据往被基底指针所指向的,与最小修复次数值相对应的修复串列的后端移动,因此,由此修复串列后端起算的第一个非闲置存储区块(non-free block)包含休眠数据。存储区块被判断为包含休眠数据后,先将该存储区块中的休眠数据搬移到危险群组中的抹除区块后,接着抹除原先包含休眠数据的存储区块。其后,若此一原本存有休眠数据的存储区块的抹除次数尚未达到临界抹除次数时,再将此存储区块搬移至与其相对应的修复串列的前端。
图2为冻结程序的一个例子。在危险群组220中的存储区块30(标示为PBA 30)被抹除,且冻结程序被启动以搜寻第一个非闲置的存储区块。在此实施例中,由基底指标230指向的修复串列211中的第一个非闲置的存储区块为存储区块22(标示为PBA 22)。存储区块22内的休眠数据被复制到存储区块30后,存储区块22被抹除。接着,由于存储区块22的修复次数尚未超过临界修复次数的缘故,存储区块22将被搬移至与其对应的修复串列211的前端。因为存储区块30现在存有休眠数据而在近期不太有机会再被抹除的缘故,存储区块30会被搬移到在危险群组的修复串列的后端。
通过冻结程序,对修复次数超过临界修复次数的存储区块进行抹除的可能性将降低。在实施例中,冻结程序进一步缩小所有存储区块间的修复次数的差值(heal countdifference)。在实施例中,被基底指标所指向的修复串列中的所有的存储区块如果都被修复,并且被搬移至与具有另一个修复次数的存储区块相对应的下一个修复串列。则基底指标所指向的修复串列变成空的,便移动基底指标的指向至下一个修复串列。原先被基底指标所指向的修复串列则变成危险群组的修复串列,并在一开始的时候清空。原本属于危险群组的修复串列,则成为在安全群组中与最大修复次数相对应的修复串列。图4说明这种以循环方式搬移危险群组的一个例子。在图4的这个例子中,位于基底指标230所指示的修复串列211仅剩的存储区块12(标示为PBA 12)在经过修复后,递增其修复次数。且存储区块12因而被提升到基底指标230上方的修复串列212。据此,使得被基底指标230所指向的修复串列211变成空的,所以将基底指标230搬移至下一个修复串列212。先前被基底指标230所指向的空的修复串列211现在作为危险群组220;且,先前属于危险群组220的修复串列225现在作为安全群组210。在实施例中,修复串列的顺序维持固定,而以循环方式移动危险群组。连带的,本发明技术所实现的每一个修复串列均会被基底指标所指向,而且每一个修复串列均会在一段时间内作为危险群组。
在实施例中,如果危险群组产生移动,原本在危险群组内的修复串列,将变成在安全群组中与具有最高修复次数的存储区块相对应的修复串列。在安全群组中,与具有最高修复次数的存储区块相对应的修复串列所包含的存储区块具有休眠数据,并在修复串列属于危险群组的时候,通过冻结程序将休眠数据搬移到这些存储区块。因此,在安全群组中具有最高的修复次数的存储区块在近期较不容易因为被修复的缘故而被搬移至新的危险群组内。因为在存储区块通过调整程序而被拉升至新的危险群组时,会导致许多抹除周期,进而引发修复周期。这种搬移危险群组的作法,能进一步减少冻结程序被启动的可能性。因此,安全群组内的修复串列的数目不仅影响存储区块的修复次数的最大耐受差异外,也影响启动冻结程序的频率。因此,在安全群组中的修复串列的数量,相当于把存储区块搬移到一个空的危险群组前的缓冲空间,因而可减少启动冻结程序的频率。
修复均化技术的负担源自于冻结程序,因为冻结程序会将休眠数据由安全群组复制到危险群组,连带将引起活动分页复制(live pages copying)。因此,与损耗均化技术相比时,损耗均化技术所需的活动分页复制产生的负担较大,本发明可通过减少启动冻结程序频率的方式产生较小的负担。
第一算法与第二算法为以拟程序代码(pseudo code)表示调整程序和冻结程序的实施例。这两个算法使用下述函数:
GET-HEALINGLIST(...)此函数根据所输入的存储区块而传回该输入存储区块所在的修复串列的索引。
IS-NEEDHEALING(...)此函数根据所输入的存储区块而传回该输入存储区块是否满足需要被修复的条件。这个函数可以通过对一种能代表该存储区块的修复状态的属性进行监测而完成。在实施例中,该条件可以是当该存储区块已到达其当前临界抹除次数(current erase count limit)。在实施例中,临界抹除次数可以是预设的临界值(presetthreshold),或者基于其他因子(例如:该输入的存储区块的修复次数,或是该输入的存储区块前次被抹除的时点)而决定。在实施例中,该条件可以是当该存储区块中的位错误率已经达到一个位错误率临界值。对一个存储区块侦测其位错误率的时点可早于此函数的执行或与此函数同时执行。一个存储区块的位错误率可以是当前的位错误率,或是经过一段期间的平均结果。位错误率临界值可以是预设的临界值,或者基于其他因素(包括该输入存储区块的修复次数,或是该输入存储区块先前的位错误率)而决定。
HEAL(...)此函数将修复指令发出至该输入存储区块。
REMOVE(......)此函数将该输入存储区块由其目前所属的修复串列中移除。在实施例中,可以通过修改双向串列中与该输入存储区块相连接的存储区块而完成。
INSERT-HEAD(...,...)与INSERT-TAlL(...,...)这两个函数分别将输入的存储区块加入至输入的修复串列的前端和后端。
IS-EMPTY(...)此函数传回输入的修复串列,或者由基底指标所指向的修复串列是否包含任何存储区块。
GET-LISTTAILELEMENT(...)此函数传回位于输入的修复串列后端的存储区块。
IS-NON-FREEBLOCK(...)此函数传回输入的存储区块是否包含有效的数据,例如有效的分页。
MOVETO(A,B)此函数将存储在输入的存储区块A的数据复制到到输入的存储区块B。输入的存储区块B必须是闲置的存储区块。在实施例中,存储在输入的存储区块A的数据将被抹除。
GET_LISTPREVELEMENT(...)此函数传回在修复串列中位于所输入的存储区块的前一个存储区块。例如,如图2所示,若输入的存储区块是存储区块PBA21,该函数将传回存储区块PBA22。
第一算法为因应一个存储区块被抹除而进行调整程序的实施例。在此实施例中,pha代表要被抹除的存储区块。base代表用于指向具有最小修复次数的修复串列的基底指标。(base+N-1)%N代表与危险群组对应的修复串列的索引。例如,在图2中,如果基底指标在五个修复串列中指向索引为0的修复串列,则在危险群组内的修复串列的索引为4。然而,当基底指针产生移位并指向索引为1的修复串列,则危险群组的索引为0。当本实施例的调整程序执行时,存储区块pba的常驻修复串列(residing healing list)的索引将被查找并存储为hl(第1行)。如果存储区块pda的状态显示存储区块pba需要被修复,例如达到其临界抹除次数或位错误率的临界值,且存储区块pba不属于危险群组(第2行),该存储区块pba将被修复并搬移到修复串列(hl+1)%N中(第3-5行)。位于修复串列(hl+1)%N内的存储区块所具有的修复次数,高于存储区块pba目前所属的修复串列内的存储区块所具有的修复次数。在所示的实施例中,危险群组内有一个修复串列;安全群组有N-1个修复串列。
如举例的算法所式,在调整程序中,如果存储区块pba位于危险群组的修复串列中,将启用第二算法所示的冻结程序,以减少该存储区块在近期内被抹除或修复的可能性(第7-8行)。或者,如果存储区块pba位于安全群组中的修复串列,该存储区块会被搬移至其常驻的修复串列hl的前端(第9-11行)。
经过调整程序的初始部分后(第1-11行),如果被基底指标所指向的修复串列是空的,基底指标前进至较基底指标原本指向的修复串列具有更高修复次数的修复串列(第12-13行)。对基底指标的移动,即是将危险群组搬移到原本被基底指标所指向的空的修复串列。此外,安全群组现在包含先前属于危险群组的修复串列。
第二算法所示的实施例为在危险群组中的存储区块pba要被抹除时启用的冻结程序。当冻结程序通过调整程序而被启用时,如果判断该存储区块pba需要被修复的条件成立,则对该存储区块pba进行修复,藉以防止该存储区块pba在修复指令被施加前被磨损(第1行)。在该存储区块pba被修复后,如果需要的话,冻结程序将在安全群组中,自被基底指标base所指向的修复串列的后端开始搜寻(第2-13行)。其中hl是目前搜寻的修复串列的索引,且dormant代表对被用于检查是否以有效分页形式存在有效数据的存储区块。如果存储区块dormant是一个非闲置存储区块,代表此存储区块包含有效分页,便结束搜索(第6行)。如果存储区块dormant是不包含任何有效分页的闲置存储区块时,则继续对该修复串列中的下一个成员进行搜寻,直到该修复串列结束为止。如果被基底指标所指向的修复串列只包含不具有效分页的闲置存储区块,则继续对具有较高修复次数的修复串列的后端开始搜寻。这个过程持续对每个具有更高的修复次数的修复串列进行,直到找到一个非闲置存储区块为止。冻结程序接着将存储区块dormant内的数据搬移至存储区块pba,接着基于系统架构(例如:模块或是分层的实现方式)而更新所对应的映像信息(mapping information)或是实体存储区块映像,因而能减少在近期对存储区块pba抹除或是修复的可能性(第7行)。由于在存储区块dormant内的休眠数据已经被复制到危险群组中的存储区块,存储区块dormant被搬移至相对应的修复串列的前端(第8-9行)。此外,将位于危险群组内的修复串列中的存储区块pba搬移至危险群组的修复串列的后端(第10-11行)。再者,在将数据由存储区块dormant搬移至存储区块pba后,因为不需要将相同的数据同时存放在两个存储区块的缘故,可以将存储区块dormant抹除。
流程图
图5为本发明的修复均化技术的实施例的简化流程图。此例的修复均化逻辑始于步骤502并开始维持存储区块的修复次数与抹除次数(步骤504)。如前所述,与每一个存储区块所对应的修复次数,以及清除或存取次数可被存储在一个阵列中。步骤504后接着执行步骤506,通过修复次数而对存储区块维持一组N个串列的条目。如前所述,在其他实施例中,串列的数量不需被限定,且每一个存储区块的串列的索引被存放在一个阵列中。如前所述,同一个串列中的存储区块并不一定具有相同的修复次数。例如,第一个串列包含的存储区块所具有的修复次数为1或2,且第二个串列所包含的存储区块所具有的修复次数为3或4。下一个步骤508用于使基底指针维持指向存储区块具有最小修复次数的修复串列。在以阵列内的元素代表存储区块的系统中,基底指针可以被存储为阵列中的一个元素。如前所述,若修复串列中的所有存储区块均被修复,并因而晋升至下一个修复串列,导致被基底指标所指向的修复串列为空的。在这种情况下,基底指标将指向下一个修复串列。对于该等串列,下一个步骤510将依照最近最常被抹除的存储区块至最近最少被抹除的存储区块而排列。如上所述,在实施例中,这个过程可以通过调整程序而完成,调整程序会将最近被抹除的存储区块放在修复串列的前端。反面来说,这代表最近最少被抹除的存储区块会位于修复串列的后端。
在建立数据结构后,下一个步骤512将判断第一存储区块的抹除周期。在前述实施例中,这种启发式过程称为调整程序。如步骤504所建立的,每个存储区块对应于一个抹除次数,在第一存储区块被确认进行的抹除周期后,下一个步骤514将递增第一存储区块的抹除次数。此步骤后执行步骤516,用于决定第一存储区块是否位于系统中与具有最大修复次数的存储区块对应的修复串列中。在前述实施例中,具有最大修复次数的该修复串列被启发式的称为危险群组。如果在步骤516中,确定第一存储区块所在的修复串列具有最大修复次数的存储区块,便接续执行步骤518、520、522、524、526、528。如前述实施例所述,这些步骤被启发式的称为冻结程序。
在举例的逻辑中,冻结程序的第一个步骤518决定第一存储区块的抹除次数是否已达到抹除周期的临界值。如前所述,此临界值可以基于该存储区块的修复次数而决定。如果第一存储区块已达到一个抹除周期临界值,便发出一个修复指令以修复第一存储区块520,并且将第一存储区块的修复次数加上1(步骤522)。在实施例中,如果条件指出第一存储区块需要进行修复操作(例如,存储区块的位错误率已经达到位错误率临界值)时,可以对第一存储区块发出修复指令。无论第一存储区块是否接收到一修复命令,下一步骤524均会将具有最小修复次数并包含有效存储区块修复串中,最近最少被抹除的存储区块判断为第二存储区块。请参照图2并搭配图5所举例的逻辑。存储区块PBA30是第一存储区块,且步骤524开始对被基底指标230所指向的串列211进行搜寻,并确认存储区块PBA22是包含最小抹除次数的存储区块的串列211中,最近最少被抹除的有效存储区块。需要注意的是,虽然存储区块PBA22被抹除的时点较存储区块PBA21和存储区块PBA20更近,但存储区块PBA21和存储区块PBA20并不是有效的存储区块。在确认第二存储区块后,下一个步骤526是将第二存储区块的数据复制到第一存储区块。请再次参考图2,第二存储区块PBA22的数据被复制到位于危险群组的存储区块PBA30。在下一个步骤528中,第二存储区块可搬移到与第二存储区块的修复次数对应的修复串列的最近被抹除端(前端)。再次参照图2与图5的逻辑,由箭头指示的步骤528指出将原本位于修复串列中间的存储区块PBA搬移至修复串列的前端。
如果步骤516判断第一存储区块不在具有最大修复次数的修复串列中,则接着执行一系列的步骤530、532、534、536。步骤530、532和534与先前提到的步骤518、520和522相似。一旦第一存储区块被抹除,并且不需要对第一存储区块进行修复,则步骤536会将第一存储区块搬移至与第一存储区块的修复次数相对应的修复串列的最近被抹除的一端(前端)。再次参考图2和本实施例逻辑的图5,步骤536的例子显示当存储区块PBA5被抹除时,存储区块PBA5并未接收到修复指令,并将存储区块PBA5搬移其当前的修复串列212的前端。另一个步骤536的例子显示,在存储区块PBA 80被抹除、修复后,将存储区块PBA 80由修复串列212搬移至在修复串列212上方的修复串列213。
计算机系统
图6是用于实现本发明的计算机系统710的简化方块图。需留意的是,前述实施例所述的修复均化逻辑,可以使用具有硬件、软件或其组合的计算机系统实现。
计算机系统710通常包括处理器子系统714,通过总线子系统712而与多个周边装置沟通。这些周边装置可包括存储子系统724(包含具有修复均化器的存储器子系统726与文件存储子系统728)、用户接口输入设备722、用户接口输出装置720以及网络接口子系统716。用户接口输入设备722与用户接口输出装置720让用户可以与计算机系统710进行互动。网络接口子系统716提供了一个接口到外部网络,包括一个至通信网络718的网络接口716,并经过通信网络718而耦接至其他计算机系统中与其对应的接口装置。通信网络718可包含许多互连的计算机系统和通信链接。这些通信连接可以是有线连接、光学连接、无线连接,或是其他用于沟通信息的机制。只是其通常是一个以IP为基础(IP based)的通信网络。在一个实施例中,通信网络718是因特网,但是在其他实施例中,通信网络718可以是任何合适的计算机网络。
网络接口的实体硬件组件有时被称为网络适配器(network interface card,简称为NIC),但其外观不一定为卡状,而可能以集成电路(integrated circuit,简称为IC)与主板直接连接,或是在单一集成电路芯片上与其他元件共同制造的巨晶元(macrocell)。
用户接口输入设备722可包含键盘、指向装置(如:鼠标、轨迹球、触摸板或绘图板)、扫描仪,整合至显示器的触控屏幕、音频输入设备(例如:音频识别系统、麦克风),以及其他类型的输入设备。一般说来,使用“输入设备”一词意指将信息输入至计算机系统710或至通信网络718的各种可能的装置和方法。
用户接口输出装置720可包括显示子系统、打印机、传真机,或非视讯显示器(如:音频输出装置)。显示子系统可包含阴极射线管(cathode ray tube,简称为CRT)、平板装置(例如液晶显示器)设备、投影装置或是其他用于创造视觉影像的机制。显示子系统也可提供非视觉显示,例如通过音频输出装置。在一般情况下,使用“输出装置”一词意指利用计算机系统710而将信息输出至用户或其他计算机系统的各种可能的装置和方法。
在存储子系统724存储的程序与数据用于提供本发明某些实施例的功能。例如,实施本发明的某些实施例功能的各种模块可以被存储在存储子系统724。这些软件模块一般由处理器子系统714执行。
存储器子系统726通常包括多种存储器,包括:在程序执行期间用于存储指令和数据的主随机存取存储器(RAM)730;以及存储固定指令的只读存储器(ROM)732。存储器子系统726可进一步包括如图1A、图1B所示的修复均化器模块的系统架构。文件存储子系统728对程序与数据文件提供耐久性的存储功能。文件存储子系统728可以包括一个硬盘(harddisk drive)、具有可移除式媒体(removable media)的软盘(floppy disk drive)、CD-ROM驱动器、光驱,或是可移动媒体磁带器(removable media cartridge)。本发明某些实施例的功能模块可在计算机可读媒体(computer readable medium)上实现,例如一个或多个CD-ROM,并且可以存储在文件存储子系统728。除了其他内容外,主存储器726还包含由处理器子系统714执行的计算机指令,让计算机系统执行如本文所述的功能。如本文所描述的,在“主机”或“计算机”上运行的程序与软件,是由处理器子系统714执行并响应存储器子系统726(包含任何此类指令与数据的其它本地端或远程存储区)所存储的指令与数据。
总线子系统712提供了一种让各种组件和计算机系统的子系统710彼此沟通的机制。虽然图中的总线子系统712仅以单个总线表示,但在其他实施例中,总线子系统可使用多个总线。
计算机系统710的类型可以是个人计算机、便携计算机、工作站、计算机终端、网络计算机、电视、大型主机(mainframe)、服务器群(server farm),或其他数据处理系统或用户装置。由于计算机和网络技术不断变化,图6所示的计算机系统710仅是一个特定的举例。计算机系统710的其它配置方式可能比图6所描绘的计算机系统具有更多或更少的组件。
本发明的技术能够在存储器必须再被抹除以供写入时,降低写入增益(Writeamplification),并可以增加存储器装置的耐久力。与其他用于提升耐久性的技术(例如,损耗均化技术)相比,本发明的技术进一步减少需要复制新的分页的情形;提供更好的存取效能,以及提升有效写入分页的数量。本发明技术的另一个优点是不需修改文件系统。
本发明技术可应用于具有寿命限制的存储器,包括相变存储器、闪存、磁性随机存取存储器,和电阻式随机存取存储器等。本技术可以利用计算机硬件,软件,或韧体的形式实现。
综上所述,虽然本发明已以优选实施例揭露如上,但是其并非用以限定本发明。本发明所属技术领域中普通技术人员,在不脱离本发明的精神和范围内,当可作各种的更改与修饰。因此,本发明的保护范围当视权利要求所界定者为准。

Claims (12)

1.一种用于操作具有多个存储区块的一存储器装置的方法,其特征在于,包含以下步骤:
维持与位于该多个存储区块内的存储区块对应的多个修复次数;
根据具有一第一修复次数的一第一存储区块的存取周期,寻找具有一第二修复次数的一第二存储区块,并将该第二存储区块的数据复制到第一存储区块,其中该第二修复次数小于该第一修复次数。
2.根据权利要求1所述的方法,其中还包含以下步骤:
维持与位于该多个存储区块内的存储区块对应的多个存取周期;以及
对于该多个存取周期达到一存取周期临界值的多个存储区块,对应地发出多个修复指令至该存储器装置,进而增加该多个修复次数。
3.根据权利要求1所述的方法,其中还包含以下步骤:
对位于该多个存储区块内的存储区块监控多个修复状态指标的数值;
在该多个修复状态指标的数值达到一修复状态指标的临界值时,发出多个修复指令并增加该多个修复次数;
自多个具有该第二修复次数的存储区块中,选择一最近最少被清除的存储区块作为该第二存储区块;以及
维持一个数据结构,其中该数据结构是根据该多个修复次数而对在该多个存储区块内的存储区块进行分类。
4.根据权利要求1所述的方法,其中还包含以下步骤:
对该多个存储区块内的多个存储区块维持一组多个条目的多个串列,其中各该串列包含N个成员,且N大于2;
将多个临界修复次数分配至该组的该多个串列;
根据该多个存储区块的该多个修复次数与该多个临界修复次数而将该多个存储区块的条目插入至该组的该多个串列;以及
维持一基底指标,用于确认在该基底指标所指示的串列,该串列包含了具有一起始临界修复次数相对最低的存储区块的起始串列,其中在该组的其他串列可通过将基底指标偏移N-1后模除(modulo)N后而寻址。
5.根据权利要求4所述的方法,其中还包含以下步骤:
通过对该组中将基底指标偏移N-1模除N后的串列内的存储区块进行侦测,确认该第一存储区块具有第一修复次数,其中当该基底指标指向空的串列时,将该基底指标递增后模除N来指向下一串列。
6.根据权利要求4所述的方法,其中在该组的该多个串列为多个连接串列,通过对该多个连接串列排序而确认在各该连接串列中,具有最近最少的一存取周期的多个存储区块,并使位于各该连接串列后端的一存储区块具有最近最少的一存取周期,其中寻找该第二存储区块的步骤包含以下步骤:将具有有效存储区块并具有一最小索引的连接串列中,具有最近最少的一存取周期的存储区块确认为该第二存储区块。
7.一种修复均化的系统,其特征在于,包含:
一存储器,包含多个存储区块,该存储器是根据多个修复周期而设定;以及
一处理器,耦接于该存储器,包含一第一逻辑,用于维持与位于该多个存储区块内的存储区块对应的多个修复次数;
根据具有一第一修复次数的一第一存储区块的存取周期,寻找具有一第二修复次数的一第二存储区块,并将该第二存储区块的数据复制到第一存储区块,其中该第二修复次数小于该第一修复次数。
8.根据权利要求7所述的系统,其中该处理器包含一第二逻辑,用于维持与位于该多个存储区块内的存储区块对应的多个存取周期;以及
对于该多个存取周期达到一存取周期临界值的多个存储区块,对应地发出多个修复指令至该存储器装置,进而增加该多个修复次数。
9.根据权利要求7所述的系统,其中该处理器还包含:
一第三逻辑,用于对位于该多个存储区块内的存储区块监控多个修复状态指标的数值,并于该多个修复状态指标的数值达到一修复状态指标的临界值时,发出多个修复指令并增加该多个修复次数;以及
一第五逻辑,用于维持一个数据结构,其中该数据结构是根据该多个修复次数而对在该多个存储区块内的存储区块进行分类;
其中该第一逻辑包含一第四逻辑,用于自多个具有该第二修复次数的存储区块中,选择一最近最少被清除的存储区块作为该第二存储区块。
10.根据权利要求7所述的系统,其中该处理器还包含:
一第六逻辑,用于对该多个存储区块内的多个存储区块维持一组多个条目的多个串列;将多个临界修复次数分配至该组的该多个串列;以及根据该多个存储区块的该多个修复次数与该多个临界修复次数而将该多个存储区块的条目插入至该组的该多个串列,其中各该串列包含N个成员,且N大于2;以及
一第七逻辑,用于维持一基底指标,并确认在该基底指标所指示的串列包含了修复次数相对最低的存储区块,其中在该组的其他串列可通过将基底指标偏移N-1后模除N后而寻址。
11.根据权利要求10所述的系统,其中该处理器还包含:
一第八逻辑,用于通过对该组中将基底指标偏移N-1后模除N后的串列内的存储区块进行侦测,确认该第一存储区块具有该第一修复次数;以及
一第九逻辑,用于当该基底指标指向空的串列时,将该基底指标递增后模除N来指向下一串列。
12.根据权利要求10所述的系统,其中在该组的该多个串列为多个连接串列,且该处理器更包含一第十逻辑,用于通过对该多个连接串列排序而确认在各该连接串列中,具有最近最少的一存取周期的多个存储区块,并使位于各该连接串列后端的一存储区块具有最近最少的一存取周期,其中用于寻找该第二存储区块的该第一逻辑包含一第十一逻辑,用于将具有有效存储区块并具有一最小索引的连接串列中,具有最近最少的一存取周期的存储区块确认为该第二存储区块。
CN201410817365.3A 2013-12-24 2014-12-24 修复均化的方法与系统 Active CN104881366B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361920488P 2013-12-24 2013-12-24
US61/920,488 2013-12-24

Publications (2)

Publication Number Publication Date
CN104881366A CN104881366A (zh) 2015-09-02
CN104881366B true CN104881366B (zh) 2017-12-15

Family

ID=53400057

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410817365.3A Active CN104881366B (zh) 2013-12-24 2014-12-24 修复均化的方法与系统

Country Status (3)

Country Link
US (1) US9348748B2 (zh)
CN (1) CN104881366B (zh)
TW (1) TWI534821B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108877863B (zh) 2017-05-16 2020-08-04 华邦电子股份有限公司 快闪存储器存储装置及其操作方法
TWI658471B (zh) * 2017-05-16 2019-05-01 華邦電子股份有限公司 快閃記憶體儲存裝置及其操作方法
US10170195B1 (en) 2017-12-06 2019-01-01 International Business Machines Corporation Threshold voltage shifting at a lower bit error rate by intelligently performing dummy configuration reads
US10891224B2 (en) * 2018-09-06 2021-01-12 Micron Technology, Inc. Maintaining data consistency in a memory sub system that uses hybrid wear leveling operations
US10891077B2 (en) * 2018-12-26 2021-01-12 Macronix International Co., Ltd. Flash memory device and controlling method thereof
TWI716234B (zh) * 2019-12-24 2021-01-11 睿寬智能科技有限公司 靜態耗損平均方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101196839A (zh) * 2006-12-06 2008-06-11 英业达股份有限公司 双快闪只读存储器的数据修复与同步方法
CN101599305A (zh) * 2008-06-04 2009-12-09 威刚科技股份有限公司 具有数据修复功能的储存系统及其数据修复方法
CN101740123A (zh) * 2008-11-10 2010-06-16 扬智科技股份有限公司 存储器的数据保护方法
CN103197995A (zh) * 2012-01-04 2013-07-10 百度在线网络技术(北京)有限公司 硬盘故障检测方法及装置
US8612669B1 (en) * 2010-06-28 2013-12-17 Western Digital Technologies, Inc. System and method for performing data retention in solid-state memory using copy commands and validity and usage data

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6251717B1 (en) 1998-09-30 2001-06-26 Advanced Micro Devices, Inc. Viable memory cell formed using rapid thermal annealing
US6009033A (en) 1998-11-24 1999-12-28 Advanced Micro Devices, Inc. Method of programming and erasing an EEPROM device under an elevated temperature and apparatus thereof
US7260758B1 (en) * 2001-09-07 2007-08-21 Lsi Corporation Method and system for performing built-in self-test routines using an accumulator to store fault information
US7709334B2 (en) 2005-12-09 2010-05-04 Macronix International Co., Ltd. Stacked non-volatile memory device and methods for fabricating the same
US7315474B2 (en) 2005-01-03 2008-01-01 Macronix International Co., Ltd Non-volatile memory cells, memory arrays including the same and methods of operating cells and arrays
US7301818B2 (en) 2005-09-12 2007-11-27 Macronix International Co., Ltd. Hole annealing methods of non-volatile memory cells
KR100673019B1 (ko) 2005-12-12 2007-01-24 삼성전자주식회사 적층 구조를 가지는 낸드형 비휘발성 메모리 장치, 그 형성방법 및 동작 방법
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US20070208904A1 (en) 2006-03-03 2007-09-06 Wu-Han Hsieh Wear leveling method and apparatus for nonvolatile memory
US7382654B2 (en) 2006-03-31 2008-06-03 Macronix International Co., Ltd. Trapping storage flash memory cell structure with inversion source and drain regions
US7704847B2 (en) 2006-05-19 2010-04-27 International Business Machines Corporation On-chip heater and methods for fabrication thereof and use thereof
US8060718B2 (en) 2006-06-20 2011-11-15 International Business Machines Updating a memory to maintain even wear
US8344475B2 (en) 2006-11-29 2013-01-01 Rambus Inc. Integrated circuit heating to effect in-situ annealing
KR20090097893A (ko) 2006-11-29 2009-09-16 램버스 인코포레이티드 작동열화를 반전시킬 가열회로가 내장된 집적회로
US8085615B2 (en) 2006-12-29 2011-12-27 Spansion Llc Multi-state resistance changing memory with a word line driver for applying a same program voltage to the word line
US7719048B1 (en) 2007-04-26 2010-05-18 National Semiconductor Corporation Heating element for enhanced E2PROM
US7737488B2 (en) 2007-08-09 2010-06-15 Macronix International Co., Ltd. Blocking dielectric engineered charge trapping memory cell with high speed erase
JP2010538497A (ja) 2007-09-05 2010-12-09 ラムバス・インコーポレーテッド 不揮発性半導体メモリ・デバイスにおける欠陥を修復するための方法および装置
KR20090037690A (ko) 2007-10-12 2009-04-16 삼성전자주식회사 비휘발성 메모리 소자, 그 동작 방법 및 그 제조 방법
US20090254729A1 (en) 2008-04-07 2009-10-08 Skymedi Corporation Method of wear leveling for a non-volatile memory
US20090276470A1 (en) 2008-05-05 2009-11-05 Vijayarajan Rajesh Data Processing System And Method
US8004918B2 (en) 2009-03-25 2011-08-23 Infineon Technologies Ag Memory cell heating elements
JP2013502647A (ja) 2009-08-21 2013-01-24 ラムバス・インコーポレーテッド インサイチュでのメモリのアニール
US8688894B2 (en) 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
CN102201259A (zh) * 2010-03-24 2011-09-28 建兴电子科技股份有限公司 非易失性存储器的平均抹写方法
US8488387B2 (en) 2011-05-02 2013-07-16 Macronix International Co., Ltd. Thermally assisted dielectric charge trapping flash
GB2490991B (en) 2011-05-19 2017-08-30 Ibm Wear leveling
US9251056B2 (en) 2012-06-01 2016-02-02 Macronix International Co., Ltd. Bucket-based wear leveling method and apparatus
US20150255175A1 (en) * 2014-03-10 2015-09-10 Advantest Corporation Memory testing and failure data filtering

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101196839A (zh) * 2006-12-06 2008-06-11 英业达股份有限公司 双快闪只读存储器的数据修复与同步方法
CN101599305A (zh) * 2008-06-04 2009-12-09 威刚科技股份有限公司 具有数据修复功能的储存系统及其数据修复方法
CN101740123A (zh) * 2008-11-10 2010-06-16 扬智科技股份有限公司 存储器的数据保护方法
US8612669B1 (en) * 2010-06-28 2013-12-17 Western Digital Technologies, Inc. System and method for performing data retention in solid-state memory using copy commands and validity and usage data
CN103197995A (zh) * 2012-01-04 2013-07-10 百度在线网络技术(北京)有限公司 硬盘故障检测方法及装置

Also Published As

Publication number Publication date
TW201532064A (zh) 2015-08-16
US20150177996A1 (en) 2015-06-25
US9348748B2 (en) 2016-05-24
CN104881366A (zh) 2015-09-02
TWI534821B (zh) 2016-05-21

Similar Documents

Publication Publication Date Title
CN104881366B (zh) 修复均化的方法与系统
US10430084B2 (en) Multi-tiered memory with different metadata levels
CN103425595B (zh) 数据储存装置和闪存的区块管理方法
US8880544B2 (en) Method of adapting a uniform access indexing process to a non-uniform access memory, and computer system
CN106708425A (zh) 分布式多模存储管理
CN105786412B (zh) 非易失性存储器装置的操作方法
CN106469122B (zh) 有效数据合并方法、存储器控制器与存储器储存装置
CN106874211A (zh) 存储器系统及非易失性存储器的控制方法
CN106776376B (zh) 缓冲存储器管理方法、存储器控制电路单元及存储装置
TWI423022B (zh) 記憶體管理方法、記憶體控制器與記憶體儲存裝置
CN106708424A (zh) 对用户数据执行选择性底层暴露映射的设备和方法
US20080082727A1 (en) Header blocks for flash memory writes
US8516184B2 (en) Data updating using mark count threshold in non-volatile memory
US10922234B2 (en) Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US20190138226A1 (en) Memory system and method for controlling nonvolatile memory
CN109408417A (zh) 存储装置的地址映射方法和操作方法
CN106557432A (zh) 缓冲存储器管理方法、存储器控制电路单元及存储装置
CN109491588A (zh) 存储器管理方法、存储器控制电路单元与存储器存储装置
US20130054877A1 (en) Data writing method, memory controller and memory storage apparatus
CN107025063A (zh) 内存管理方法、内存储存装置及内存控制电路单元
CN110390985A (zh) 存储器管理方法、存储器存储装置及存储器控制电路单元
CN109840218A (zh) 有效数据管理方法以及存储控制器
CN106775479A (zh) 存储器管理方法、存储器储存装置及存储器控制电路单元
CN107102951B (zh) 存储器管理方法、存储器控制电路单元与存储器储存装置
CN106445397B (zh) 存储器管理方法、存储器控制电路单元及存储器存储装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant