修复均化的方法与系统的制作方法
【技术领域】
[0001] 本发明是有关于一种具有内存管理功能的存储器装置与系统。
【背景技术】
[0002] 某些非挥发性存储器具有存取周期的耐久性限制(accesscycleentrance limitations)。例如,基于电荷捕捉(chargetrapping)的闪存、相变化存储器(phase changememory)等。其中,存取周期的耐久性限制可能是编程/抹除周期或设定/重设周 期期间的限制。
[0003] 对存储器的一给定存储区块而言,施加于其上的存取周期可能与存储于该存储区 块的数据相关。因此,不同部分的存储器可能会在不同时间达到耐久性限制(emlurance limitations)。为解决此种问题,现已发展出耗损均化技术(wearleveling)。基本上, 耗损均化技术会根据闪存的存储区块的编程与抹除周期,在不同的快闪存储区块间搬移数 据。本发明的方法会将位于即将达到耐久性限制的存储区块内的常用数据,搬移至较少被 使用的存储区块。应用程序能通过逻辑寻址架构(logicalacMressingschemes),掌握此 类资料搬移的过程。尽管采用了耗损均化技术,会因为先进存储器耐久度变低的趋势下,审U 造更多主动搬移数据的负担,使得存储区块可使用的周期也随之降低。
[0004] 对于存取次数(包含编程/抹除周期或设定/重置周期)已经达到一定程度的存 储单元而言,也已发展出修复技术。某些类型的存取周期,例如读取周期,可能未被计入损 耗均化的过程。通过该些修复过程,可W提升存储区块的耐久性。例如,对电荷捕捉闪存W 及其它类型的非挥发性存储器而言,可通过热加速恢复(repair),或修复化eal)受损的存 储单元,进而改善存储器装置的耐久性。例如:旺宏电子股份有限公司已获准的美国专利号 US8, 488, 387。与热循环(thermal巧cling)类似的作法也可W被应用至其他存储器技术。
[0005] 虽然修复操作可W使存储单元恢复/修复至一定程度,但对某些技术而言,能够 对存储单元修复的次数仍受到限制。例如,如果对存储器的同一个存储区块重复进行修复, 则修复过程的效益将因而降低。
[0006] 亟需发展出一种能够利用修复过程的优点而解决存储器的耐久性的技术。此外, 能W最小的负担(overhead)防止存储区块被过度抹除或修复的技术也是迫切需要的。
【发明内容】
[0007] 本发明叙述了通过修复均化而提升存储器耐久度的技术。修复均化是一个用于使 存储区块的修复周期更为分散的逻辑程序。W下叙述的作法可W在不需要产生大量负担的 情况下,达到修复均化的效果。修复均化技术能显著的改善存储区块的存取效能与有效寿 命。长期而言,通过使修复次数的分布更加均匀的作法,可W降低基于每一个存储区块的存 取次数而直接进行的损耗均化(wearleveling)。修复均化的作法可为:将自产生后鲜少 被使用或从未被修改的数据(例如:只读性文件),搬移至经历过最多次、或经历过多次修 复的存储区块。
[0008]修复均化技术发出一个修复指令,进而启动对损坏得存储区块进行恢复或修复的 一个修复操作。修复均化技术可使存储区块间的修复周期次数的差异性缩小。并且,在进 行损坏均化时,比较并缩小各存储区块间的使用差异性。在实施例中,当存储区块达到一 个存取周期的限制(例如,一个抹除周期的临界值、一个重置周期的临界值、该存储区块出 现无法存取的数据,或是该存储区块的数据目前错误率过高)时,通过发出修复指令而开 始对存储区块进行一个修复操作。在实施例中,对一个存储区块进行位错误率化iterror rate,简称为BER)的侦测,并于该存储区块的位错误率达到一预设的位错误率的临界值 时,发出修复指令而开始对存储区块进行修复操作。再者,在实施例中,因为用户的指令,或 是一个显著事件(例如:系统重开机,或存储区块最近修复操作的次数达到一个预设时间 的临界值)的经过时间,因而发出一个修复指令。
[0009] 此处所描述的存储区块的修复次数是指;施加于存储区块的修复操作/周期次 数。一个存储区块的存取次数代表自该存储区块经过前次修复后,所历经的与该存储区块 的耐久性相关的至少一种存取周期的次数。W闪存为例,一个存取周期可W是一个抹除周 期。在实施例中,在修复均化操作所使用的一个存储区块的存取次数,代表该存储区块自前 次修复后所经过的存取周期。在实施例中,利用一个阵列而维持并存储每一个存储区块的 修复次数与存取次数。
[0010] 结合修复均化技术的系统可包含用于修复均化的逻辑。通过该逻辑而使存储区块 的修复周期更为分散,最终能改善存储区块的持久性。并因此能够在不产生大量负担的情 况下,延长存储区块的寿命。用于修复均化的逻辑可W硬件、软件或其组合实现。
[0011] 在实施例中,确认包含鲜少被抹除的数据而未超过临界修复次数的存储区块,并 将该些数据移动至最近被抹除超过临界修复次数的存储区块,进而实现修复均化。此程序 让超过临界修复次数的存储区块减少达到临界存取次数的可能性。其中,临界存取次数用 于指示后续的修复周期。
[0012] 为了对本发明的上述及其他方面有更好的了解,下文特举优选实施例,并配合所 附附图,作详细说明如下:
【附图说明】
[0013]图1A、图1B,其为本发明技术的系统架构。
[0014] 图2,其为本发明技术所采用的数据结构的示意图。
[0015] 图3,其为本发明技术的数据结构的一种阵列元素的举例。
[0016] 图4,其为移动危险群组的一个例子。
[0017] 图5,其为实现本发明技术逻辑的流程图的举例。
[0018]图6,其为计算机系统W软件方式实现本发明的简化方块图。
[0019]【符号说明】
[0020] 系统架构100 闪存转译层140
[0021] 地址转译器141 修复均化器模块110
[0022] 闪存存储系统120 存储器技术装置层130
[0023] 安全群组210 危险群组220
[0024]基底指柄 230、303
[00巧]修复串列 211、212、213、214、225
[0026]阵列结构 300 条目 301、304、305、306、307
[0027] 实体存储区块地址302
[0028]步骤日 02、504、506、508、510、512、514、516、518、520、522、524、526、528、530、532、 534.536
【具体实施方式】
[0029] W下为关于修复均化的实施例的详细描述,并可参考附图。
[0030] 图1A和图1B举例说明两个系统架构100,每一个系统架构各自包含一个用于对闪 存执行修复均化的修复均化器模块110。其他实施方式可适于其他类型的存储器。W闪存 存储系统120为例,一个存储器存储系统可W包括两个用于控制存储器巧片的软件层。其 中一层是存储器技术装置层(memoirtechnologydevicelayer,简称为MTDlayer) 130, 另外一层是闪存转译层(flashtranslationlayer) 140。存储器技术装置层130是一个 硬件抽象层,用W提供闪存转译层存取底层快闪巧片的基本功能(primitive化nctions), 例如读取或写入。闪存转译层可包括一个地址转译器(acMresstranslator) 141、清除器 (garbagecollectororcleaner),和一个损耗均化器(wearleveler)。地址转译器 141 将被请求的逻辑区块地址(logicalblockacMress,简称为LBA)翻译为相对应的实体 (physical)的存储区块与分页。垃圾收集器用于回收有些存储器(例如;闪存)因为一次 写入特性(write-onceprope;rty)W及异区更新(〇ut-〇f-placeupdate)的特性而产生的 无效数据。损耗均化器是通过对存储区块分散抹除的方式,延长存储器巧片的寿命。在实 施例中,修复均化技术被整合至各种类型存储器巧片的现有系统架构中。在图1A的实施例 中,将修复均化器模块110整合至闪存转译层140。在图1B的实施例中,可共同使用修复均 化器模块110与损耗均化器,将用于延长闪存的寿命的修复均化器模块110设置于闪存转 译层140与存储器技术装置层130间,甚至W修复均化器模块110替换损耗均化器。
[0031] 修复均化技术的一个重要面向是,捜寻和辨识休眠数据(dormantdata)。修复均 化技术可W通过控制逻辑实现的度量方式辨识休眠数据。若与存储在其他存储区块的数据 相比时,存储区块所存储的数据已经较久未被更新时,可将其视为休眠数据。辨识休眠数据 的作法可采用不同方式实现。例如,可W利用具有一定观察期(observationperiod)的修 复串列化ealinglist)确认休眠数据。在实施例中,修复均化技术包含两个程序;调整程 序(adjustmentprocedure)和冻结程序(freezeprocedure)。该两个程序使用修复串列 作为数据结构。只是,调整程序与冻结程序所使用的数据结构,并不W修复串列为限。实际 应用时,只要能用于能管理多个条目的结构(例如:阵列、群组、树状结构等)即可。调整程 序利用一个度量(例如;在给定的修复串列中最近最少被抹除的存储区块),有效率地捜寻 并确认存储着冬眠数据的存储区块。在实施例中,确认在存储区块内存有休眠数据的方式 是,将最近被清除或抹除的存储区块搬移至修复串列的前端化eadofhealinglist)。其 中,包含休眠数据的存储区块则聚集在修复串列的后端(tailofhealinglist)。在实施 例中,会在每次有
存储区块被抹除时启动调整程序。在进行捜寻与选择的过程中,调整程序 可W通过无需复制任何最新数据(livedata)的方式,确认包含休眠数据的存储区块。调 整程序可利用此种数据结构和修复串列的组成,在所包含的存储区块的修复次数尚未超过 临界修复次数(non-over-threshold)的串列中,捜寻与选择最近最少被清除的存储区块。 其中,一个"被清除的存储区块"代表该存储区块已经被抹除或重置,或经由其他方式指示 为可用。
[0032] 冻结过程控制而使每个存储区块的修复次数更为均匀。当一个修复次数超过临界 修复次数(over-t虹esholdhealcount)的存储区块被存取(例如被清除或抹除)时,调 整程序将启用(invoke)冻结程序。当一个存储区块的修复次数已经达到或超过临界修复 次数化ealcountthreshold)时,将其称为一个超过临界修复次数的存储区块。在实施例 中,临界修复次数是根据存储区块所具有的最小修复次数(leastamountofhealcount), W及修复串列的数目决定。
[0033]当(多个)修复串列所包含的存储区块的修复次数超过临界修复次数时,该些修 复串列被称为危险群组(dangergroup);当多个修复串列所包含的存储区块的修复次数未 超过临界修复次数时,该些修复串列被称为安全群组(safetygroup)。修复均化技术的实 施例将用于维护安全群组与危险群组的内容。与其他的存储区块相比,修复次数超过临界 修复次数的存储区块更接近耐久性限制或是已经达到耐久性限制。因此,将该些修复次数 超过临界修复次数的存储区块归类为危险群组。另一方面,对修复次数尚未超过临界修复 次数的存储区块而言,较不像危险群组内的存储区块那么接近耐久性限制,因而将修复次 数尚未超过临界修复次数的存储区块归类为安全群组。
[0034] 每一次启用冻结程序时,会将先前由调整程序确认的休眠数据转移至位于危险群 组中,最近被抹除的超过临界修复次数的存储区块。因为包含休眠数据的存储区块再被写 入数据的机会低于其他存储区块的缘故,将休眠数据转移至超过临界修复次数的存储区块 的作法,能够降低该存储区块在近期再被抹除与被修复的可能性。
[0035] 请参见图2,其为本发明修复均化技术的实施例所使用的数据结构的示意图。如前 所述,该些存储区块被划分成两个群组,分别被标记为安全群组210和危险群组220。对位 于安全群组210内的存储区块而言,达到耐久性限制的风险并不像位于危险群组220的存 储区块那么高。因此,位于安全群组210内的存储区块可W被任意抹除W及存储任何类型 的数据。相对的,由于危险群组220内的存储区块都比安全群组210内的存储区块经过更 多次的抹除与修复,所W属于危险群组220的存储区块不能再被任意的抹除,也不适合用 于存储任何类型的数据。在实施例中,安全群组210内的存储区块被连接至多个修复串列 211、 212、213、214中的一个,修复串列211、212、213、214属于安全群组210的一部分。位于 危险群组220中的所有存储区块共同连接至一个修复串列225。安全群组210和危险群组 220所包含的修复串列的数量不需要被限定。在所述实施例中,总共有五个修复串列211、 212、 213、214、225,其中四个修复串列属于安全群组210,一个修复串列属于危险群组220。 每一个修复串列可W是一个按照最近抹除顺序而排列的连接串列(linkedlist)。如图2 所示,连接串列的左侧(前端)是最近最常被抹除的存储区块;连接串列的右侧(后端)是 最近最少被抹除的存储区块。在一个存储区块被抹除后,调整程序便将该个最近被抹除的 存储区块搬移至修复串列的前端,进而维持该个连接串列的先后顺序。由于修复串列的后 端聚集着最近最少被抹除的存储区块,因此,调整程序可W根据存储区块在修复串列内的 顺序而判断休眠数据的位置。
[0036] 在实施例中,属于同一个修复串列中的存储区块具有相同或类似的修复次数 (healcount)。在实施例中,位于同一个修复串列的所有存储区块均具有相同的修复次数。 在实施例中,该数据结构包括一个用于指向修复串列的基底指标230。在图2中,基底指标 230指向下方的修复串列211。在系统的所有存储区块中,位于修复串列211的存储区块所 具有的修复次数最小。基底指标230可W指向任何一个修复串列。据此,任何修复串列均 可能与系统中具有最小修复次数的存储区块相对应。在实施例中,在任何存储区块被修复 前,所有存储区块的修复次数均为零。此时,所有的存储区块均属于被基底指标所指向的修 复串列,其他的修复串列则是空的。
[0037] 在实施例中,数据结构可包含任意数量的修复串列。系统中的存储区块间的耐受 性差异(tolerateddifference)取决于修复串列的数量。例如,图2所示的安全群组211 包含四个修复串列211、212、213、214,^及由基底指标230指向的底部修复串列211。底部 修复串列211内的存储区块是在系统的所有存储区块中,具有最小修复次数的存储区块。 在此实施例中,在底部修复串列211上方的修复串列212所包含的存储区块的修复次数,会 大于由基底指标230指向的底部修复串列211所包含的存储区块的修复次数(前后两个修 复串列211、212所包含的存储区块的修复次数间的差值为1)。每一个修复串列所包含的 存储区块的修复次数,会较前一个修复串列所包含的存储区块的修复次数多一次(差值为 1)。连带的,在此实施例中,危险群组内的修复串列所包含的存储区块,其修复次数与由基 底指标230指向的底部修复串列211的存储区块的修复次数相比时,两者的差值将大于或 等于四。
[0038] 在实施例中,调整程序会确认在修复串列中的休眠数据。在冻结程序中,经确认后 的休眠数据被搬移至位于危险群组中的最近被抹除的存储区块中。因此,对位于危险群组 中的多个超过临界修复次数的存储区块而言,在近期内再被抹除或修复的可能性,相对比 位于安全群组中的存储区块更低。因为在抹除存储区块时,已经将休眠数据搬移至位于危 险群组的存储区块内。因此,对危险群组内的存储区块而言,再继续增加其修复次数的机会 较小。连带的,修复串列的数量会影响在系统中的存储区块的修复次数间的差异。
[0039] 在实施例中,可W通过安排修复串列的方式而提升效能。存储区块所属的修复串 列可W根据修复次数而分类。维持修复串列,W及在修复串列中捜寻某些特定存储区块的 过程,可W通过一个组成元素(element)的数量与系统的存储区块数量相等的阵列达成。 阵列内的每个元素包含一个索引与两个指针。该索引用于代表与其对应的修复串列,两个 指标则用于形成双向串列(doublylinkedlist)。例如,在阵列中维持修复串列中第i个存 储区块的连接串列的状态(linked-liststatus),因此可W不需要通过捜寻即可自阵列中 取得第i个存储区块的连接串列的状态Qinked-liststatus)。在随机存取存储器(RAM) 的空间有限的实施例中,阵列可被划分为大小相等的块体(chunk),且每一个块体被存储在 闪存内,并根据需要与否而加载至随机存取存储器(RAM)。
[0040]图3说明支持修复均化编程的一种阵列结构300。该阵列可W被存储在高速存储 器(例如RAM)中。在计算机执行修复均化程序时,可对高速存储器进行存取。阵列结构300 的条目(例如:条目301)可W包括多个数据字段,一个数据字段代表索引(index;)用于 判断该修复串列的用途(基底指标所指向的修复串列、安全群组的修复串列、危险群组的 修复串列),与该修复串列对应的实体存储区块为其成员(member)。一个数据字段包括指 示先前存储区块的指针(前一区块指标)。若要对一个预定的索引(givenindex)建立双 向串列(doublylinkedlist),则另包含 指不后方存储区块的指针(后一区块指t不)。 指针可利用地址偏移(acMressoffset)或是完整的实体存储区块地址(completeblock acMress)代表在修复串列中的前一个存储区块或后一个存储区块。对于位于最小修复次数 串列前端的条目而言,可在其前一区块指针的位置存储一个默认值(例如;-1),用于代表 该条目是被基底指标炬ASEPNTR)303所指向。阵列结构300中的条目也可用于维持与实 体存储区块相对应的抹除次数(或其他存取次数),W及可在其他实施例采用的修复次数。
[0041] 在阵列结构300中的条目可W在对存储器中与实体存储区块地址(physical blockad化ess,简称为PBA)(例如:实体存储区块地址302)对应的存储区块进行修复均化 时而存取。因此,当一个给定的实体存储区块被侦测到要被抹除或其它相关的存取时,该存 取的实体存储区块地址被用于取得与该实体存储区块对应的条目。存储在条目中的信息, 可用于支持如上所述的修复均化过程中。
[0042] 在上述的例子中,修复均化的过程将维护基底指标303,基底指针303被存储在缓 存器或是计算机执行修复均化程序时,所能存取的其它存储器地址。基底指标303可W存 储相对应修复次数最低的修复串列的前端存储区块的实体存储区块地址,此串列为安全群 组内的一串列。
[0043] 图中W箭头代表由基底指标开始进行捜寻,在条目中由基底指标303所存取的后 一区块指标指向条目304。且,条目304的前一区块指标与基底指标303相符。条目304的 后一区块指标指向条目305 ;条目305的后一区块指标指向条目306 ;条目306的后一区块 指标指向条目307,依此类推。双向串列可W利用相反方向进行。举例说来,可W通过具有 最小索引的串列后端(theendofthelowerindexlist)的后一区块指标(nextblock point),W及通过在条目内存储的索引编号(indexnumber)而判断具有后一索引的串列
的 前端。
[0044] 例如;在经过修复程序后,当一个条目被从一个串列搬移到下一个串列时,该条目 的索引编号也被改变。此外,该条目的先一区块指标和后一区块指标也被更新,进而在新的 串列中适当位置插入该条目。此外,原本由该存储区块的后一区块指标所指向的(后方) 存储区块,其前一区块指标也将被更新;W及,原本由该存储区块的前一指标所指向的(前 方)存储区块,其后一区块的指标也会被更新。此外,随着存储器的抹除周期与修复周期变 化,存储区块的抹除次数与修复次数也适时的更新。在实施例中,当系统中的存储区块为抹 除周期或存取周期时,将启动调整程序维持或调整修复串列,让休眠数据聚集在由基底指 标所指向的具有最小修复次数的修复串列。当存储区块被抹除后执行调整程序时,如果被 抹除的存储区块的抹除次数还未达到临界抹除次数时,便将该被抹除存储区块的位置搬移 到所属的修复串列的前端,如图2所示的存储区块5(PBA5)。如果该被抹除存储区块的抹 除次数已到达其当前的临界抹除次数(州rrenterasecountt虹eshold),则对该被抹除 存储区块进行修复操作,并将存储区块5(PBA5)提升至与其具有相同修复次数的修复串 列212的前端,作为该修复串列中最近被修复的存储区块。例如,如图2所标式的存储区块 80(PBA80)。在实施例中,如果该被抹除存储区块的位错误率化iterrorrate)已经达到位 错误率的临界值化iterrorratet虹eshold)时,利用修复操作修复该被抹除存储区块。 因此,通过将被抹除存储区块与被修复存储区块搬移至具有相同修复次数的修复串列的方 式,调整程序得W维护修复串列的内容。通过将被抹除的存储区块搬移至修复串列前端的 方式,每一个修复串列的后端将各自对应于在串列中最近最少被抹除的存储区块。因此,存 储在修复串列后端的存储区块内的数据,被抹除的可能性较低。通过搬移此类数据而降低 存储区块被抹除的可能性的作法,可产生帮助。
[0045] 在实施方式中,如果系统一共有N个修复串列,则前N-1个修复串列所包含的存储 区块,其修复次数尚未超过临界修复次数,并将该N-1个修复串列视为安全群组;第N个修 复串列(即,修复串列N-1)包含超过临界修复次数的存储区块,并因此将第N个修复串列 视为危险群组。当位于不属于危险群组的修复串列i的存储区块,通过修复指令而进行修 复时,将此存储区块移动至修复串列(i+1) %N的前端的位置。然而,如果危险群组中的存 储区块被抹除,将启动冻结程序。冻结程序会将位于安全群组内的休眠数据,搬移至危险群 组中将被抹除的存储区块,进而降低在近期对位于危险群组中的该个存储区块,再度进行 抹除与修复的可能性。
[0046] 根据本发明的实施例,在冻结程序被启用后,由被基底指标所指向的,与最小修复 次数相对应的修复串列的后端,开始进行休眠数据的捜寻程序。由于调整程序会将休眠数 据往被基底指针所指向的,与最小修复次数值相对应的修复串列的后端移动,因此,由此修 复串列后端起算的第一个非闲置存储区块(non-化eeblock)包含休眠数据。存储区块被 判断为包含休眠数据后,先将该存储区块中的休眠数据搬移到危险群组中的抹除区块后, 接着抹除原先包含休眠数据的存储区块。其后,若此一原本存有休眠数据的存储区块的抹 除次数尚未达到临界抹除次数时,再将此存储区块搬移至与其相对应的修复串列的前端。
[0047] 图2为冻结程序的一个例子。在危险群组220中的存储区块30 (标示为PBA30) 被抹除,且冻结程序被启动W捜寻第一个非闲置的存储区块。在此实施例中,由基底指标 230指向的修复串列211中的第一个非闲置的存储区块为存储区块22(标示为PBA22)。存 储区块22内的休眠数据被复制到存储区块30后,存储区块22被抹除。接着,由于存储区 块22的修复次数尚未超过临界修复次数的缘故,存储区块22将被搬移至与其对应的修复 串列211的前端。因为存储区块30现在存有休眠数据而在近期不太有机会再被抹除的缘 故,存储区块30会被搬移到在危险群组的修复串列的后端。
[0048] 通过冻结程序,对修复次数超过临界修复次数的存储区块进行抹除的可能性将 降低。在实施例中,冻结程序进一步缩小所有存储区块间的修复次数的差值化ealcount difference)。在实施例中,被基底指标所指向的修复串列中的所有的存储区块如果都被修 复,并且被搬移至与具有另一个修复次数的存储区块相对应的下一个修复串列。则基底指 标所指向的修复串列变成空的,便移动基底指标的指向至下一个修复串列。原先被基底指 标所指向的修复串列则变成危险群组的修复串列,并在一开始的时候清空。原本属于危险 群组的修复串列,则成为在安全群组中与最大修复次数相对应的修复串列。图4说明该种 W循环方式搬移危险群组的一个例子。在图4的该个例子中,位于基底指标230所指示的 修复串列211仅剩的存储区块12(标示为PBA12)在经过修复后,递增其修复次数。且存 储区块12因而被提升到基底指标230上方的修复串列212。据此,使得被基底指标230所 指向的修复串列211变成空的,所W将基底指标230搬移至下一个修复串列212。先前被基 底指标230所指向的空的修复串列211现在作为危险群组220 ;且,先前属于危险群组220 的修复串列225现在作为安全群组210。在实施例中,修复串列的顺序维持固定,而W循环 方式移动危险群组。连带的,本发明技术所实现的每一个修复串列均会被基底指标所指向, 而且每一个修复串列均会在一段时间内作为危险群组。
[0049] 在实施例中,如果危险群组产生移动,原本在危险群组内的修复串列,将变成在安 全群组中与具有最高修复次数的存储区块相对应的修复串列。在安全群组中,与具有最高 修复次数的存储区块相对应的修复串列所包含的存储区块具有休眠数据,并在修复串列属 于危险群组的时候,通过冻结程序将休眠数据搬移到该些存储区块。因此,在安全群组中具 有最高的修复次数的存储区块在近期较不容易因为被修复的缘故而被搬移至新的危险群 组内。因为在存储区块通过调整程序而被拉升至新的危险群组时,会导致许多抹除周期,进 而引发修复周期。该种搬移危险群组的作法,能进一步减少冻结程序被启动的可能性。因 此,安全群组内的修复串列的数目不仅影响存储区块的修复次数的最大耐受差异外,也影 响启动冻结程序的频率。因此,在安全群组中的修复串列的数量,相当于把存储区块搬移到 一个空的危险群组前的缓冲空间,因而可减少启动冻结程序的频率。
[0050] 修复均化技术的负担源自于冻结程序,因为冻结程序会将休眠数据由安全群组复 制到危险群组,连带将引起活动分页复制(livepagescopying)。因此,与损耗均化技术相 比时,损耗均化技术所需的活动分页复制产生的负担较大,本发明可通过减少启动冻结程 序频率的方式产生较小的负担。
[0051]
[0052]
[0053] 第一算法与第二算法为W拟程序代码(pseudocode)表示调整程序和冻结程序的 实施例。该两个算法使用下述函数:
[0054]GET-HEALINGLISTC..)此函数根据所输入的存储区块而传回该输入存储区块所 在的修复串列的索引。
[00巧]IS-肥邸HEALINGC..)此函数根据所输入的存储区块而传回该输入存储区块是 否满足需要被修复的条件。该个函数可W通过对一种能代表该存储区块的修复状态的属 性进行监测而完成。在实施例中,该条件可W是当该存储区块已到达其当前临界抹除次数 (currenterasecountlimit)。在实施例中,临界抹除次数可W是预设的临界值(preset t虹eshold),或者基于其他因子(例如:该输入的存储区块的修复次数,或是该输入的存储 区块前次被抹除的时点)而决定。在实施例中,该条件可W是当该存储区块中的位错误率 已经达到一个位错误率临界值。对一个存储区块侦测其位错误率的时点可早于此函数的执 行或与此函数同时执行。一个存储区块的位错误率可W是当前的位错误率,或是经过一段 期间的平均结果。位错误率临界值可W是预设的临界值,或者基于其他因素(包括该输入 存储区块的修复次数,或是该输入存储区块先前的位错误率)而决定。
[0056]HEAL(...)此函数将修复指令发出至该输入存储区块。
[0057]REMOVE(......)此函数将该输入存储区块由其目前所属的修复串列中移除。在实 施例中,可W通过修改双向串列中与该输入存储区块相连接的存储区块而完成。
[0058]INSERT-HEAD 与INSERT-TA化该两个函数分别将输入的存储 区块加入至输入的修复串列的前端和后端。
[0059]IS-EMPTYC..)此函数传回输入的修复串列,或者由基底指标所指向的修复串列 是否包含任何存储区块。
[0060]GET-LISTTAILELEMENTC..)此函数传回位于输入的修复串列后端的存储区块。 [006。IS-N0N-FRE邸L0CKC..)此函数传回输入的存储区块是否包含有效的数据,例如 有效的分页。
[0062]M0VET0(A,B)此函数将存储在输入的存储区块A的数据复制到到输入的存储区块 B。输入的存储区块B必须是闲置的存储区块。在实施例中,存储在输入的存储区块A的数 据将被抹除。
[0063]GET_LISTPREVELEMENT(...)此函数传回在修复串列中位于所输入的存储区块的 前一个存储区块。例如,如图2所示,若输入的存储区块是存储区块PBA21,该函数将传回存 储区块PBA22。
[0064] 第一算法为因应一个存储区块被抹除而进行调整程序的实施例。在此实施例中, pha代表要被抹除的存储区块。base代表用于指向具有最小修复次数的修复串列的基底指 标。(base+N-1) %N代表与危险群组对应的修复串列的索引。例如,在图2中,如果基底指 标在五个修复串列中指向索
引为0的修复串列,则在危险群组内的修复串列的索引为4。然 而,当基底指针产生移位并指向索引为1的修复串列,则危险群组的索引为0。当本实施例 的调整程序执行时,存储区块pba的常驻修复串列(residinghealinglist)的索引将被 查找并存储为hi(第1行)。如果存储区块pda的状态显示存储区块pba需要被修复,例 如达到其临界抹除次数或位错误率的临界值,且存储区块pba不属于危险群组(第2行), 该存储区块pba将被修复并搬移到修复串列化1+1) %N中(第3-5行)。位于修复串列 化1+1) %N内的存储区块所具有的修复次数,高于存储区块pba目前所属的修复串列内的 存储区块所具有的修复次数。在所示的实施例中,危险群组内有一个修复串列;安全群组有 N-1个修复串列。
[0065] 如举例的算法所式,在调整程序中,如果存储区块pba位于危险群组的修复串列 中,将启用第二算法所示的冻结程序,W减少该存储区块在近期内被抹除或修复的可能性 (第7-8行)。或者,如果存储区块pba位于安全群组中的修复串列,该存储区块会被搬移 至其常驻的修复串列hi的前端(第9-11行)。
[0066] 经过调整程序的初始部分后(第1-11行),如果被基底指标所指向的修复串列是 空的,基底指标前进至较基底指标原本指向的修复串列具有更高修复次数的修复串列(第 12-13行)。对基底指标的移动,即是将危险群组搬移到原本被基底指标所指向的空的修复 串列。此外,安全群组现在包含先前属于危险群组的修复串列。
[0067] 第二算法所示的实施例为在危险群组中的存储区块pba要被抹除时启用的冻结 程序。当冻结程序通过调整程序而被启用时,如果判断该存储区块pba需要被修复的条件 成立,则对该存储区块pba进行修复,藉W防止该存储区块pba在修复指令被施加前被磨 损(第1行)。在该存储区块pba被修复后,如果需要的话,冻结程序将在安全群组中,自 被基底指标base所指向的修复串列的后端开始捜寻(第2-13行)。其中hi是目前捜寻 的修复串列的索引,且dormant代表对被用于检查是否W有效分页形式存在有效数据的存 储区块。如果存储区块dormant是一个非闲置存储区块,代表此存储区块包含有效分页,便 结束捜索(第6行)。如果存储区块dormant是不包含任何有效分页的闲置存储区块时, 则继续对该修复串列中的下一个成员进行捜寻,直到该修复串列结束为止。如果被基底指 标所指向的修复串列只包含不具有效分页的闲置存储区块,则继续对具有较高修复次数的 修复串列的后端开始捜寻。该个过程持续对每个具有更高的修复次数的修复串列进行,直 到找到一个非闲置存储区块为止。冻结程序接着将存储区块dormant内的数据搬移至存 储区块pba,接着基于系统架构(例如;模块或是分层的实现方式)而更新所对应的映像信 息(mappingin化rmation)或是实体存储区块映像,因而能减少在近期对存储区块pba抹 除或是修复的可能性(第7行)。由于在存储区块dormant内的休眠数据已经被复制到危 险群组中的存储区块,存储区块dormant被搬移至相对应的修复串列的前端(第8-9行)。 此外,将位于危险群组内的修复串列中的存储区块pba搬移至危险群组的修复串列的后端 (第10-11行)。再者,在将数据由存储区块dormant搬移至存储区块pba后,因为不需要 将相同的数据同时存放在两个存储区块的缘故,可W将存储区块dormant抹除。
[0068]流巧图
[0069] 图5为本发明的修复均化技术的实施例的简化流程图。此例的修复均化逻辑始于 步骤502并开始维持存储区块的修复次数与抹除次数(步骤504)。如前所述,与每一个存 储区块所对应的修复次数,W及清除或存取次数可被存储在一个阵列中。步骤504后接着 执行步骤506,通过修复次数而对存储区块维持一组N个串列的条目。如前所述,在其他实 施例中,串列的数量不需被限定,且每一个存储区块的串列的索引被存放在一个阵列中。如 前所述,同一个串列中的存储区块并不一定具有相同的修复次数。例如,第一个串列包含的 存储区块所具有的修复次数为1或2,且第二个串列所包含的存储区块所具有的修复次数 为3或4。下一个步骤508用于使基底指针维持指向存储区块具有最小修复次数的修复串 列。在W阵列内的元素代表存储区块的系统中,基底指针可W被存储为阵列中的一个元素。 如前所述,若修复串列中的所有存储区块均被修复,并因而晋升至下一个修复串列,导致被 基底指标所指向的修复串列为空的。在该种情况下,基底指标将指向下一个修复串列。对 于该等串列,下一个步骤510将依照最近最常被抹除的存储区块至最近最少被抹除的存储 区块而排列。如上所述,在实施例中,该个过程可W通过调整程序而完成,调整程序会将最 近被抹除的存储区块放在修复串列的前端。反面来说,该代表最近最少被抹除的存储区块 会位于修复串列的后端。
[0070] 在建立数据结构后,下一个步骤512将判断第一存储区块的抹除周期。在前述实 施例中,该种启发式过程称为调整程序。如步骤504所建立的,每个存储区块对应于一个抹 除次数,在第一存储区块被确认进行的抹除周期后,下一个步骤514将递增第一存储区块 的抹除次数。此步骤后执行步骤516,用于决定第一存储区块是否位于系统中与具有最大修 复次数的存储区块对应的修复串列中。在前述实施例中,具有最大修复次数的该修复串列 被启发式的称为危险群组。如果在步骤516中,确定第一存储区块所在的修复串列具有最 大修复次数的存储区块,便接续执行步骤518、520、522、524、526、528。如前述实施例所述, 该些步骤被启发式的称为冻结程序。
[0071] 在举例的逻辑中,冻结程序的第一个步骤518决定第一存储区块的抹除次数是否 已达到抹除周期的临界值。如前所述,此临界值可W基于该存储区块的修复次数而决定。 如果第一存储区块已达到一个抹除周期临界值,便发出一个修复指令W修复第一存储区块 520,并且将第一存储区块的修复次数加上1 (步骤522)。在实施例中,如果条件指出第一存 储区块需要进行修复操作(例如,存储区块的位错误率已经达到位错误率临界值)时,可W 对第一存储区块发出修复指令。无论第一存储区块是否接收到一修复命令,下一步骤524 均会将具有最小修复次数并包含有效存储区块修复串中,最近最少被抹除的存储区块判断 为第二存储区块。请参照图2并搭配图5所举例的逻辑。存储区块PBA30是第一存储区 块,且步骤524开始对被基底指标230所指向的串列211进行捜寻,并确认存储区块PBA22 是包含最小抹除次数的存储区块的串列211中,最近最少被抹除的有效存储区块。需要注 意的是,虽然存储区块PBA22被抹除的时点较存储区块PBA21和存储区块PBA20更近,但存 储区块PBA21和存储区块PBA20并不是有效的存储区块。在确认第二存储区块后,下一个 步骤526是将第二存储区块的数据复制到第一存储区块。请再次参考图2,第二存储区块 PBA22的数据被复制到位于危险群组的存储区块PBA30。在下一个步骤528中,第二存储区 块可搬移到与第二存储区块的修复次数对应的修复串列的最近被抹除端(前端)。再次参 照图2与图5的逻辑,由箭头指示的步骤528指出将原本位于修复串列中间的存储区块PBA 搬移至修复串列的前端。
[0072] 如果步骤516判断第一存储区块不在具有最大修复次数的修复串列中,则接着执 行一系列的步骤530、532、534、536。步骤530、532和534与先前提到的步骤518、520和522 相似。一旦第一存储区块被抹除,并且不需要对第一存储区块进行修复,则步骤536会将 第一存储区块搬移至与第一存储区块的修复次数相对应的修复串列的最近被抹除的一端 (前端)。再次参考图2和本实施例逻辑的图5,步骤536的例子显示当存储区块PBA5被抹 除时,存储区块PBA5并未接收到修复指令,并将存储区块PBA5搬移其当前的修复串列212 的前端。另一个步骤536的例子显示,在存储区块PBA80被抹除、修复后,将存储区块PBA 80由修复串列212搬移至在修复串列212上方的修复串列213。
[0073] 计算机系统
[0074] 图6是用于实现本发明的计算机系统710的简化方块图。需留意的是,前述实施 例所述的修复均化逻辑,可W使用具有硬件、软件或其组合的计算机系统实现。
[00巧]计算机系统710通常包括处理器子系统714,通过总线子系统712而与多个周边装 置沟通。该些周边装置可包括存储子系统724 (包含具有修复均化器的存储器子系统726 与文件存储子系统728)、用户接口输入设备722、用户接口输出装置720W及网络接口子系 统716。用户接口输入设备722与用户接口输出装置720让用户可W与计算机系统710进 行互动。网络接口子系统716提供了一个接口到外部网络,包括一个至通信网络718的网 络接口 716,并经过通信网络718而禪接至其他计算机系统中与其对应的接口装置。通信网 络718可包含许多互连的计算机系统和通信链接。该些通信连接可W是有线连接、光学连 接、无线连接,或是其他用于沟通信息的机制。只是其通常是一个WIP为基础(IPbased) 的通信网络。在一个实施例中,通信网络718是因特网,但是在其他实施例中,通信网络718 可W是任何合适的计算机网络。
[0076] 网络接口的实体硬件组件有时被称为网络适配器(networkinterfacecard,简 称为NIC),但其外观不一定为卡状,而可能W集成电路(integratedcircuit,简称为IC) 与主板直接连接,或是在单一集成电路巧片上与其他元件共同制造的巨晶元(macrocell)。
[0077] 用户接口输入设备722可包含键盘、指向装置(如;鼠标、轨迹球、触摸板或绘图 板)、扫描仪,整合至显示器的触控屏幕、音频输入设备(例如;音频识别系统、麦克风),W 及其他类型的输
入设备。一般说来,使用"输入设备"一词意指将信息输入至计算机系统710 或至通信网络718的各种可能的装置和方法。
[0078] 用户接口输出装置720可包括显示子系统、打印机、传真机,或非视讯显示器(如: 音频输出装置)。显示子系统可包含阴极射线管(cathoderaytube,简称为CRT)、平板装 置(例如液晶显示器)设备、投影装置或是其他用于创造视觉影像的机制。显示子系统也 可提供非视觉显示,例如通过音频输出装置。在一般情况下,使用"输出装置"一词意指利 用计算机系统710而将信息输出至用户或其他计算机系统的各种可能的装置和方法。
[0079] 在存储子系统724存储的程序与数据用于提供本发明某些实施例的功能。例如, 实施本发明的某些实施例功能的各种模块可W被存储在存储子系统724。该些软件模块一 般由处理器子系统714执行。
[0080] 存储器子系统726通常包括多种存储器,包括:在程序执行期间用于存储指令和 数据的主随机存取存储器(RAM)730 及存储固定指令的只读存储器(ROM)732。存储器子 系统726可进一步包括如图1A、图1B所示的修复均化器模块的系统架构。文件存储子系 统728对程序与数据文件提供耐久性的存储功能。文件存储子系统728可W包括一个硬盘 化arddisk化ive)、具有可移除式媒体(remov油lemedia)的软盘(floppydisk化ive)、 CD-ROM驱动器、光驱,或是可移动媒体磁带器(remov油lemediacartridge)。本发明某些 实施例的功能模块可在计算机可读媒体(computerread油lemedium)上实现,例如一个或 多个CD-ROM,并且可W存储在文件存储子系统728。除了其他内容外,主存储器726还包含 由处理器子系统714执行的计算机指令,让计算机系统执行如本文所述的功能。如本文所 描述的,在"主机"或"计算机"上运行的程序与软件,是由处理器子系统714执行并响应存 储器子系统726 (包含任何此类指令与数据的其它本地端或远程存储区)所存储的指令与 数据。
[0081] 总线子系统712提供了一种让各种组件和计算机系统的子系统710彼此沟通的机 审IJ。虽然图中的总线子系统712仅W单个总线表示,但在其他实施例中,总线子系统可使用 多个总线。
[0082] 计算机系统710的类型可W是个人计算机、便携计算机、工作站、计算机终端、网 络计算机、电视、大型主机(main化ame)、服务器群(serverfarm),或其他数据处理系统或 用户装置。由于计算机和网络技术不断变化,图6所示的计算机系统710仅是一个特定的 举例。计算机系统710的其它配置方式可能比图6所描绘的计算机系统具有更多或更少的 组件。
[0083] 本发明的技术能够在存储器必须再被抹除W供写入时,降低写入增益(Write amplification),并可W增加存储器装置的耐久力。与其他用于提升耐久性的技术(例如, 损耗均化技术)相比,本发明的技术进一步减少需要复制新的分页的情形;提供更好的存 取效能,W及提升有效写入分页的数量。本发明技术的另一个优点是不需修改文件系统。
[0084] 本发明技术可应用于具有寿命限制的存储器,包括相变存储器、闪存、磁性随机存 取存储器,和电阻式随机存取存储器等。本技术可W利用计算机硬件,软件,或初体的形式 实现。
[0085] 综上所述,虽然本发明已W优选实施例揭露如上,但是其并非用W限定本发明。本 发明所属技术领域中普通技术人员,在不脱离本发明的精神和范围内,当可作各种的更改 与修饰。因此,本发明的保护范围当视权利要求所界定者为准。
【主权项】
1. 一种用于操作具有多个存储区块的一存储器装置的方法,其特征在于,包含以下步 骤: 维持与位于该等存储区块内的存储区块对应的多个修复次数; 根据具有一第一修复次数的一第一存储区块的存取周期,寻找具有一第二修复次数的 一第二存储区块,并将该第二区块的数据复制到第一存储区块,其中该第二修复次数小于 该第一修复次数。2. 根据权利要求1所述的方法,其中还包含以下步骤: 维持与位于该等存储区块内的存储区块对应的多个存取周期的次数;以及 对于该等存取周期的次数达到一存取周期临界值的多个存储区块,对应地发出多个修 复指令至该存储器装置,进而增加该等修复次数。3. 根据权利要求1所述的方法,其中还包含以下步骤: 对位于该等存储区块内的存储区块监控多个修复状态指标的数值; 在该等修复状态指标的数值达到一修复状态指标的临界值时,发出多个修复指令并增 加该等修复次数; 自多个具有该第二修复次数的存储区块中,选择一最近最少被清除的存储区块作为该 第二存储区块;以及 维持一个数据结构,其中该数据结构是根据该等修复次数而对在该等存储区块内的存 储区块进行分类。4. 根据权利要求1所述的方法,其中还包含以下步骤: 对该等存储区块内的多个存储区块维持一组多个条目的多个串列,其中各该串列包含 N个成员,且N大于2 ; 将多个临界修复次数分配至该组的该等串列; 根据该等存储区块的该等修复次数与该等临界修复次数而将该等存储区块的条目插 入至该组的该等串列;以及 维持一基底指标,用于确认在该组指标所指示的串列,该串列包含了具有一起始临界 修复次数相对最低的存储区块的起始串列,其中在该组的其他串列可通过将基底指标偏移 N-I后模除(modulo) N后而寻址。5. 根据权利要求4所述的方法,其中还包含以下步骤: 通过对该组中将基底指标偏移N-I模除N后的串列内的存储区块进行侦测,确认该第一存储区块具有第一修复次数,其中当该基底指标指向空的串列时,将该基底指标递增后 模除N来指向下一串列。6. 根据权利要求4所述的方法,其中在该组的该等串列为多个连接串列,通过对该等 连接串列排序而确认在各该连接串列中,具有最近最少的一存取周期的多个存储区块,并 使位于各该连接串列后端的一存储区块具有最近最少的一存取周期,其中寻找该第二存储 区块的步骤包含以下步骤:将具一有效存储区块并具有一最小索引的连接串列中,具有最 近最少的一存取周期的存储区块确认为该第二存储区块。7. -种系统,其特征在于,包含: 一存储器,包含多个存储区块,该存储器是根据多个修复周期而设定;以及 一处理器,耦接于该存储器,包含一第一逻辑,用于维持与位于该等存储区块内的存储 区块对应的多个修复次数; 根据具有一第一修复次数的一第一存储区块的存取周期,寻找具有一第二修复次数的 一第二存储区块,并将该第二存储区块的数据复制到第一存储区块,其中该第二修复次数 小于该第一修复次数。8. 根据权利要求7所述的系统,其中该处理器包含一第二逻辑,用于维持与位于该等 存储区块内的存储区块对应的多个存取周期的次数;以及 对于该等存取周期的次数达到一存取周期临界值的多个存储区块,对应地发出多个修 复指令至该存储器装置,进而增加该等修复次数。9. 根据权利要求7所述的系统,其中该处理器还包含: 一第三逻辑,用于对位于该等存储区块内的存储区块监控多个修复状态指标的数值, 并于该等修复状态指标的数值达到一修复状态指标的临界值时,发出多个修复指令并增加 该等修复次数;以及 一第五逻辑,用于维持一个数据结构,其中该数据结构是根据该等修复次数而对在该 等存储区块内的存储区块进行分类; 其中该第一逻辑包含一第四逻辑,用于自多个具有该第二修复次数的存储区块中,选 择一最近最少被清除的存储区块作为该第二存储区块。10. 根据权利要求7所述的系统,其中该处理器还包含: 一第六逻辑,用于对该等存储区块内的多个存储区块维持一组多个条目的多个串列; 将多个临界修复次数分配至该组的该等串列;以及根据该等存储区块的该等修复次数与该 等临界修复次数而将该等存储区块的条目插入至该组的该等串列,其中各该串列包含N个 成员,且N大于2;以及 一第七逻辑,用于维持一基底指标,并确认在该组指标所指示的串列包含了修复次数 相对最低的存储区块,其中在该组的其他串列可通过将基底指标偏移N-I后模除N后而寻 址。11. 根据权利要求10所述的系统,其中该处理器还包含: 一第八逻辑,用于通过对该组中将基底指标偏移N-I后模除N后的串列内的存储区块 进行侦测,确认该第一存储区块具有该第一修复次数;以及 一第九逻辑,用于当该基底指标指向空的串列时,将该基底指标递增后模除N来指向 下一串列。12. 根据权利要求10所述的系统,其中在该组的该等串列为多个连接串列,且该处理 器更包含一第十逻辑,用于通过对该连接等串列排序而确认在各该连接串列中,具有最近 最少的一存取周期的多个存储区块,并使位于各该连接串列后端的一存储区块具有最近最 少的一存取周期,其中用于寻找该第二存储区块的该第一逻辑包含一第十一逻辑,用于将 具一有效存储区块并具有一最小索引的连接串列中,具有最近最少的一存取周期的存储区 块确认为该第二存储区块。
【专利摘要】本发明通过修复均化技术而提升存储器装置的耐久度。修复均化技术是一种使存储区块的修复周期更为分散的轻型解决方案。本文所描述的方法能够在不产生大量负担情况下实现修复均化。修复均化技术能显著的改善存储区块的存取效能(access performance)与有效寿命(effective lifetime)。长期而言,能使每一个存储区块的磨损次数降低。修复均化的作法可为:将白产生后鲜少被使用或从未被修改的数据(例如:只读性文件),搬移至经历过最多次、或经历过多次修复的存储区块。
【IPC分类】G06F12/06, G06F3/06
【公开号】CN104881366
【申请号】CN201410817365
【发明人】张育铭, 李祥邦, 吕函庭, 张原豪, 郭大维
【申请人】旺宏电子股份有限公司
【公开日】2015年9月2日
【申请日】2014年12月24日
【公告号】US20150177996
转载请注明原文地址:https://www.famiwei.com/read-8138709.html