CN102483714B - 恢复闪存存储器设备中的索引页的系统及方法 - Google Patents

恢复闪存存储器设备中的索引页的系统及方法 Download PDF

Info

Publication number
CN102483714B
CN102483714B CN201080032931.XA CN201080032931A CN102483714B CN 102483714 B CN102483714 B CN 102483714B CN 201080032931 A CN201080032931 A CN 201080032931A CN 102483714 B CN102483714 B CN 102483714B
Authority
CN
China
Prior art keywords
index
page
block
metadata
index page
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
CN201080032931.XA
Other languages
English (en)
Other versions
CN102483714A (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.)
Apple Inc
Original Assignee
Apple Computer Inc
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 Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN102483714A publication Critical patent/CN102483714A/zh
Application granted granted Critical
Publication of CN102483714B publication Critical patent/CN102483714B/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/16Protection against loss of memory contents
    • 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
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/7201Logical to physical mapping or translation of blocks or pages

Abstract

公开了恢复存储在非易失性存储器中的索引页的技术,其中,索引页将逻辑扇区映射到物理页。易失性和非易失性存储器中的额外数据结构可由用于恢复索引页的技术使用。在一些实现方式中,与非易失性存储器中的数据块相关联的查找表可被用来提供与逻辑扇区到物理页的映射有关的信息。在一些实现方式中,与数据块相关联的查找表以及逻辑扇区和/或索引页的范围可被使用。

Description

恢复闪存存储器设备中的索引页的系统及方法
相关申请的交叉引用
本申请要求2009年7月24日提交的美国申请No.12/509,071的优先权。
技术领域
本主题一般涉及存储器映射。
背景技术
闪速存储器(flash memory)是一种电可擦除可编程只读存储器(EEPROM)。由于闪速存储器是非易失性的并且相对紧凑,因此它们被用来在手持计算机、移动电话、数字相机、便携式音乐播放器以及不适合其它存储解决方案(例如,磁盘)的许多其它设备中存储文件和其它持久性对象。不幸的是,闪存遭遇到两种限制。首先,仅可以通过擦除大块存储器来清除比特。其次,每块仅可以承受有限次数的擦除操作,之后,其不再能够可靠地存储数据。由于这些限制,通常需要复杂的数据结构和算法来有效地使用闪速存储器。这些算法和数据结构被用来支持高效的数据非原地(not-in-place)更新,减少擦除操作次数,并且使设备中的块的耗损平等。
闪速存储器不支持对物理存储器页的原地(in-place)更新或重写,除非包含该页的块首先被擦除。为了克服该缺陷,硬件和/或软件层通常被添加到闪存子系统。该层(常被称为闪存转化层(FTL))与闪速存储器一起可以通过将逻辑扇区映射到物理存储器页来模仿辅助存储设备。对于许多基于闪存的设备,FTL被实现为硬件控制器。该控制器可以包括处理器或微控制器以及少量易失性存储器(例如,RAM)。控制器可以负责将来自文件系统(例如,逻辑扇区)的读/写请求转化为闪存的具体块上的读/ 写操作,并且初始化“无用单元收集”(GC)以擦除脏块并再生(reclaim)空闲块。
闪存设备可以存储逻辑扇区到物理存储器页的映射。FTL可以使用所存储的该映射来标识逻辑扇区的物理位置。如果所存储映射的一部分(例如,页)丢失(例如,数据被损坏),则FTL可能不能够转化并执行来自文件系统的读/写请求。
发明内容
公开了恢复存储在非易失性存储器中的索引页的技术,其中,索引页将逻辑扇区映射到物理页。易失性和非易失性存储器中的额外数据结构可由用于恢复索引页的技术使用。在一些实现方式中,与非易失性存储器中的数据块相关联的查找表可被用来提供与逻辑扇区到物理页的映射有关的信息。在一些实现方式中,与数据块相关联的查找表以及逻辑扇区和/或索引页的范围可被使用。
相比于闪速存储器中的传统索引页恢复技术,所公开的索引页恢复技术提供了若干优点。这些优点中的一些包括但不限于:1)使得能够恢复单个索引页而不必处理整个文件系统,2)使得能够在运行时间恢复丢失的索引页,以及3)消除了重启设备以便恢复丢失索引页的需要。
附图说明
图1A是图示出用于利用查找表将逻辑扇区映射到物理页的示例存储器映射体系结构100的框图。
图1B是图示出包含数据页和相关联块TOC的示例数据块的框图。
图2A-2B是使用图1A-1B所示的存储器映射体系结构的示例索引页恢复操作的流程图。
图3A-3B是使用图1A-1B所示的存储器映射体系结构的另一示例索引页恢复操作的流程图。
图4是使用图1A-1B所示的存储器映射体系结构的示例经延迟索引页恢复操作的流程图。
图5A是用于实现图1-4和图6-7的存储器体系结构和操作的示例存储器子系统的框图。
图5B是图示出包括用于实现图1-4和图6-7的存储器体系结构和操作的存储器子系统的示例设备的系统体系结构的框图。
图6是可被用来恢复上面针对图1A-1B所述的存储器体系结构内的丢失索引页的示例索引超级块的框图。
图7是使用图1A-1B和图6所示的存储器映射体系结构内的超级块的示例索引页恢复操作的流程图。
具体实施方式
系统概述
图1A是图示出用于利用查找表将逻辑扇区映射到物理页的示例存储器映射体系结构100的框图。在一些实现方式中,易失性存储器(例如,RAM)中的查找表102保存非易失性存储器(例如,闪速存储器)中的查找表106的位置(例如,物理地址)。查找表106保存数据页108的物理地址。在一些实现方式中,易失性存储器中的高速缓存104保存最近被写入逻辑扇区的物理地址以允许更快读出。在所示示例中,查找表102也被称为索引TOC 102,查找表106也被称为索引表106或索引页,并且高速缓存104也被称为索引表高速缓存104。
在体系结构100中,索引TOC 102使得索引表106能够被存储在该非易失性存储器中。这是有利的,因为通常在控制器中可用的少量RAM由于控制器成本、面积和功耗的增加而无法被缩放。在一些实现方式中,易失性存储器可以基于其可用性或其它触发事件和/或操作模式而动态地被配置。
通过索引表106进行的逻辑扇区的示例映射
索引表106被描绘为具有示例索引页1-N。示例索引页1-N中的每页将逻辑扇区映射到各个数据页108。数据页108被描绘为被包含在数据块1-N中。例如,示例索引页1将逻辑扇区映射到数据块1和数据块N。如果索引页丢失(例如,页数据被损坏等),则该索引页所包含的逻辑扇区 到数据页的映射也丢失。下面描述用于恢复丢失的索引页的内容的技术。
具有块TOC的示例数据块
数据页108被描绘为包含示例块TOC 1-N。每个块TOC被描绘为对应于数据块。块TOC可被存储在对应数据块中并且可以包括将块中的页映射到逻辑扇区的信息。如下面将更详细描述的,与数据块相关联的块TOC可被用来重建丢失的索引页。
图1B是图示出包含数据页和相关联块TOC 122的示例数据块120的框图。如图所示,示例数据块120包括数据页1-N。块TOC 122被示为页N的一部分。块TOC 122可以存储将数据页1-N映射到对应逻辑扇区的信息。
易失性存储器中的示例数据结构
在一些实现方式中,可将数据块与存储在易失性存储器中的块表110(也称为块阵列)相关联,块表110可以包括:块状态(例如,空闲的、坏的、被分配的、当前的)、有效页数、擦除计数以及纠错码(ECC)修正计数。块表110还可以包括列出从最新(例如,最近最多被写入块)到最老(例如,最近最少被写入块)的数据块的数据块年龄结构112。块110另外可以包括提供每个数据块所对应的逻辑扇区的范围(例如,最小和最大)的数据块范围结构114。在一些实现方式中,数据块范围结构114可以提供每个数据块所对应的索引表106中的索引页的范围(例如,最大和最小)。数据块范围结构114可以跨越块表110中的数据块条目被实现。
在一些实现方式中,索引TOC 102的每个条目擦除索引表106的非易失性存储器中的物理地址以及去往索引表高速缓存104中的条目的指针。地址Oxff或其它指示符可被置于索引TOC 102条目中,以指示所希望的索引表106条目未被存储在索引表高速缓存104中。
在一些实现方式中,下面的结构需要在易失性存储器(例如,RAM)中被分配:索引表高速缓存中的多个空闲条目、当前数据块(例如,正被用于写或更新操作的块)、指向当前块中的下一空闲页的指针、当前块TOC(例如,存储在这样的块中的TOC,该块包含有将逻辑扇区映射到该 块中的页的信息)、当前索引块(例如,正被用于索引更新的块)、指向该索引块中的下一空闲页的指针、当前索引块TOC以及空闲块数。
在一些实现方式中,索引表高速缓存104的每个条目可以包括但不限于:保存数据的缓冲器(例如,2K缓冲器)、状态数据(例如,干净的、脏的、空闲的)、计数器(例如,串行计数器或者指示该特定块已被访问了多少次的计数)。
以上描述的数据结构是示例并且还可以基于应用来使用其它数据结构。将参考其它附图更详细描述数据结构。
示例索引页恢复操作
图2A-2B是使用图1A-1B所示的存储器映射体系结构的示例索引页恢复操作200的流程图。操作200利用数据块的块TOC中所包含的数据页到逻辑扇区映射来恢复丢失的索引页。
参考图2A,在一些实现方式中,操作200可以通过接收从非易失性存储器中的数据页进行读取或向非易失性存储器中的数据页进行写入的请求而开始(202)。在尝试处理所接收请求时,可以查询索引表(例如,索引表106)中的所请求数据页的物理地址。包含有用于所请求数据页的逻辑到物理地址映射的索引页可以被标识为丢失(203)。如果索引页包括阈值数目个错误(例如,一个错误、两个错误、等等),则该页可被标识为丢失。例如,如果在步骤202中寻找的逻辑到物理地址映射中包含错误,则该索引页可被标识为丢失。可以使用多种错误检测技术,例如校验和或循环冗余校验(CRC)。非易失性存储器中的最新数据库(例如,最近最多被写入的数据库)被选择(204),并且与所选块相关联的块TOC被读取(205)。可以从易失性存储器中的结构,例如块状态110中的数据块年龄结构112来标识最新数据块。如果所选数据块中的任何页对应于丢失的索引页(206),则用于每个对应页的条目被添加到丢失的索引页(208)。如果数据页通过丢失的索引页中的逻辑扇区被映射到,则该数据页可被确定为对应于丢失的索引页。可以参考块TOC中所包含的数据页到索引映射来作出这样的判断。
如果在添加了条目之后丢失的索引页不是全的(例如,尚未被完整地 重构出),或者如果所选数据块中没有页对应于丢失的索引页,则非易失性存储器中的下一最新数据块被选择(210),并且步骤205和206被重复。选择数据块并将其块TOC与丢失索引页中的逻辑扇区作比较的该循环被重复,直到丢失索引页完全被重构出为止。一旦丢失页变全(例如,被重构出),则可以与文件系统交叉引用重构出的索引页中的条目,以标识被删除(被再生的)数据页(214)。索引页可以负责跟踪空闲的数据页。为了确保重构出的索引页准确地列出空闲数据页,可以使用与文件系统的交叉引用。在一些实现方式中,数据块可以存储指示数据页是空闲的还是在使用中的元数据(例如,在块TOC中)。
重构出的索引页的索引块(例如,索引表106中的索引页的块)中所存储的数据可以被移到非易失性存储器中的新近被分配块(216)。索引页上的错误可以指示重构出的索引页所位于的块的物理问题。考虑到索引页对于存储器体系结构100的操作的重要性,将数据从可能有问题的块移到非易失性存储器中的新块是有利的。
可以用如下的伪代码来描述索引页恢复操作200:
步骤1:接收对要恢复的索引页的通知。
步骤2:将最新数据块的块TOC与丢失索引页所覆盖的逻辑扇区相比较。
步骤3:如果最新数据块中的任何页被丢失索引页覆盖,则将用于每个对应页的条目添加到丢失索引页。
步骤4:如果丢失索引页不是全的(例如,该索引页尚未完全被重构出),则针对下一最新数据块来重复步骤2-4。
步骤5:如果丢失索引页是全的(例如,该索引页已完全被重构出),则与文件系统交叉引用重构出的索引页以标识出被删除(被再生的)页(可选的)。
步骤6:将丢失索引页的索引块中的数据移到非易失性存储器中的新近被分配块(可选的)。
在一些实现方式中,强力(brute-force)重构可被执行,由此使得数据块及其关联块TOC顺序地被查看以重构出丢失页。相比之下,操作200 尝试通过根据数据块的年龄来搜索数据块从而更高效地定位与丢失索引页相关的数据块。操作200可以更快地定位相关数据块,因此必然地,与强力方法相比可以更快地重构出丢失索引页。按基于块年龄的增加顺序来查看数据块确保了在从“最新”到“最老”移动时,每个逻辑扇区的最新近副本可用。
另一示例索引页恢复操作
图3A-3B是使用图1A-1B所示的存储器映射体系结构的另一示例索引页恢复操作300的流程图。操作300使用数据块的块TOC中所包含的数据块到逻辑扇区/索引页范围(例如,数据块范围结构114)和数据页到逻辑扇区映射来恢复丢失的索引页。
参考图3A,在一些实现方式中,操作300可以通过接收从非易失性存储器中的数据页进行读取或者向非易失性存储器中的数据页进行写入的请求而开始(302)。在尝试处理所接收请求时,可以查询索引表(例如,索引表106)中的所请求数据页的物理地址。与上面对于图2A描述的标识丢失索引页的描述类似,包含有用于所请求数据页的逻辑到物理地址映射的索引页可以被标识为丢失(303)。与数据块相关联的范围被标识出(304)。如上所述,该范围(例如,最小和最大)可以是由该数据块覆盖的非易失性存储器中的索引页的范围或者逻辑扇区的范围。范围内被数据块覆盖的洞孔可被忽略(例如,该范围的中间处的未被数据块覆盖的部分可以被忽略)。如果所标识出的范围对应于丢失索引页(306),则所标识出的数据块可被添加到将被查看的数据块列表中(308)。如果由索引页覆盖的逻辑扇区落在所标识范围内(如果该范围覆盖逻辑扇区)或者如果索引页本身落在所标识范围内(如果该范围覆盖索引页),则该所标识范围可对应于索引页。如果存在要与丢失索引页相比较的更多数据块(310),则重复步骤304-310。步骤304-310可以被重复,直到每个数据块的范围已被比较为止。
参考图3B,从将被查看的数据块列表中选择数据块(312)。与上面对于图2A-2B描述的操作200的一部分类似,与所选数据块相关联的块TOC被读取,并且如果所选数据块中的任何页对应于丢失索引页 (316),则用于所选数据块中的每个对应页的条目被添加到丢失索引页中(318)。如果丢失索引页不是全的(例如,重构尚未完成)(320),或者如果所选数据块中没有页对应于丢失的索引页(316),则查询将被查看的数据块列表。如果该列表上存在更多数据块(322),则重复步骤312-322。步骤312-322被重复直到索引页已被重构出或者该列表上不存在更多数据块为止。如果丢失索引页是全的(例如,在索引中没有其余的洞孔)(320)或者所有数据块已被扫描(例如,没有要检查的更多数据块)(322),则该索引恢复操作完成。
如果丢失索引页是全的(320)或者如果将被查看的该数据块列表上没有更多数据块(322),则与上面参考图2B描述的交叉引用类似,可以与文件系统交叉引用包含在重构出的索引页中的条目以标识出被删除页(324)。与上面参考图2B描述的数据到新块的移动类似,存储在丢失索引页的索引块中的数据被移到非易失性存储器中的新近被分配块(326)。
可以用如下的伪代码来描述索引页恢复操作300:
步骤1:接收对要恢复的索引页的通知。
步骤2:将丢失索引页与数据块的逻辑扇区/索引页的范围相比较。
步骤3:如果该索引页落在该范围内,则将该数据块添加到将被查看的数据块列表中。
步骤4:针对每个数据块重复步骤2-3。
步骤5:从将被查看的数据块列表选择数据块。
步骤6:将所选数据块的块TOC与由丢失索引页覆盖的逻辑扇区相比较。
步骤7:如果所选数据块中的任何页被丢失索引页覆盖,则将用于每个对应页的条目添加到该丢失索引页。
步骤8:如果丢失索引页不是全的(例如,该索引页尚未完全被重构出),则针对将被查看的数据块列表上的每个数据块重复步骤5-8。
步骤9:如果丢失索引页是全的(例如,该索引页已完全被重构出),则与文件系统交叉引用重构出的索引页以标识出被删除(被再生 的)页(可选的)。
在一些实现方式中,恢复出的索引页可被移到非易失性存储器的另一页。使得索引恢复操作被执行的数据错误可以指示出索引页被存储的存储块的物理问题。丢失索引页的索引块中的数据可以被移到非易失性存储器的新近被分配块中。
索引页恢复操作300可以提供以下优点:1)相关数据块可以更快被标识出(例如,取代从非易失性存储器读取块TOC以确定相关性的是,可从易失性存储器访问页范围并与丢失索引页相比较),以及2)可以提高索引页恢复效率(例如,仅相关数据块从非易失性存储器被读取)。
示例经延迟索引页恢复操作
图4是使用图1A-1B所示的存储器映射体系结构的示例经延迟索引页恢复操作400的流程图。操作400立即恢复丢失索引页中的被请求逻辑扇区到数据页映射并且然后安排在以后的时间当设备空闲时来恢复该索引页。
在一些实现方式中,操作400可以通过接收从非易失性存储器中的数据页进行读取或者向非易失性存储器中的数据页进行写入的请求而开始(402)。在尝试处理所接收请求时,可以查询索引表(例如,索引表106)中的所请求数据页的物理地址。与上面对于图2A描述的标识丢失索引页的描述类似,包含有用于所请求数据页的逻辑到物理地址映射的索引页可以被标识为丢失(404)。
可以利用多种索引页恢复技术(例如操作200、操作300或上述强力技术)来定位所请求数据页的物理地址。例如,上面针对图2A-2B和图3A-3B描述的索引页恢复操作200和300可以被修改来定位丢失索引页内的单个条目而非整个索引页。在所请求数据页的物理地址被定位之后,用于所请求数据页的条目可被添加到丢失索引页(408)。另外,可以利用所定位的物理地址来执行接收到的从所请求数据页进行读取或者向所请求数据页进行写入的请求。
取代继续恢复整个索引页的是,对丢失索引页中剩余部分的重构可被安排来在空闲时段期间执行(410)。例如,该操作在其中被执行的闪速 存储器设备可以是蜂窝电话、便携式媒体播放器、嵌入式设备等。当用户未主动使用它们时,这些设备中的每个将经历空闲时间。例如,当便携式媒体播放器没有正播放媒体(例如,视频、音乐等)或者正从用户接收输入时,则经历空闲时间。在空闲时段期间,丢失索引的剩余部分(例如,不与所请求数据页相对应的部分)被重构(412)。
在一些实现方式中,对丢失索引页的剩余部分的重构被安排在如下空闲时段中:当闪速存储器设备正从外部源接收电力(例如,设备正被充电)时或者当便携式电源处于阈值水平之上(例如,电池具有超过50%的电荷)时。例如,恢复索引页对于闪速存储器设备来说可以是可能减少设备电荷的密集型处理。
另外,索引页的重构可以是一项时间密集型任务。通过仅重构丢失索引页中即刻需要的部分,操作400可以在设备正被使用的同时,准许该设备执行处理该请求的操作并且在将来的时间恢复该索引页,而不会影响性能。
示例存储器子系统
图5A是用于实现图1-4和图6-7的操作和存储器体系结构的示例存储器子系统的框图。在一些实现方式中,子系统500可以包括控制器502、非易失性存储器504和主机接口506。控制器502可以包括易失性存储器510(例如,RAM)和处理器508。易失性存储器510存储块TOC 512、块表513和索引表高速缓存514。易失性存储器510可以由处理器508基于可用性和任何其它合适因素而动态地被配置。非易失性存储器504可以包括索引表516和数据页518。子系统500可以包括为了清楚起见而从图5中被省略的其它组件。
在操作中,主机接口506可以通过总线(例如,IDE/ATT)从主机系统获取读/写请求。主机接口506可以包括用于接收数据、地址和控制信号的电路和软件。读/写请求可以包括逻辑扇区编号和要读/写的连续逻辑扇区的数目。
处理器508可以访问易失性存储器510并读取索引TOC 512以判断索引表高速缓存514是否包括该逻辑扇区的物理地址。如果索引表高速缓存 514包括上述物理地址,则将物理地址用于读/写操作。如果索引表高速缓存514不包上述括物理地址,则处理器508访问易失性存储器510以读取索引TOC 512从而获得非易失性存储器504中的索引表516的页地址。处理器508可以使用索引表516中的物理地址来在读/写操作期间执行到数据页518的存储器映射。块表513可以存储可被用来确定最新数据块的各块的块分配编号。另外,块表513可以存储如参考图1A、图2A-2B和图3A-3B描述的数据库的逻辑扇区和/或索引页的范围。多种技术可被用来建立被写入在块中的逻辑扇区和/或索引页的范围。在一些实现方式中,块的范围信息可被保持在存储器中并且在块更新期间被更新。在一些实现方式中,块的范围信息可以通过读出块TOC并扫描它以确定相关联块的范围而被标识出。
在一些实现方式中,数据页518、索引TOC 512和/或索引表516可被实现在一个或多个不同存储器设备上。
图5B是图示出示例设备520的框图,示例设备520包括用于实现图1-4和图6-7的操作和存储器体系结构的存储器子系统。在一些实现方式中,设备520例如是便携式设备,如媒体播放器设备、个人数字助理、移动电话、便携式计算机、数字相机等。
设备520包括主机控制器(或者所谓的“片上系统”或“SOC”)522和非易失性存储器528。设备520可选地可以在主机控制器522和非易失性存储器528外部的其它存储器。主机控制器522包括一个或多个处理器524和易失性存储器526。在一些实现方式中,易失性存储器526是静态随机存取存储器(SRAM)。主机控制器522执行各种处理操作和输入/输出操作,包括参考图2-4描述的操作。例如,主机控制器522可以接收并处理用户输入,生成输出,执行媒体(例如,音频、视频、图形)解码和处理操作、其它处理操作等。主机控制器522可以从易失性存储器526读取数据以及向易失性存储器526写入数据。主机控制器522还可以通过接口(未示出)向非易失性存储器528发出读或写操作。
在一些实现方式中,非易失性存储器528是与非门(NAND)闪速存储器。在一些其它实现方式中,非易失性存储器528例如是另一类型的非 易失性存储器,例如或非门(NOR)闪速存储器,其它类型的固态存储器,或者硬盘驱动器。设备520还可以包括为了清楚起见而从图5B中被省略的一个或多个其它组件。
示例索引超级块(Index Super Block)
图6是可用来恢复上面针对图1A-1B描述的存储器体系结构内的丢失索引页的示例索引超级块600的框图。超级块600可以提供这样的数据结构,在该数据结构中,丢失索引页可以被恢复而不依赖于数据库的块TOC。
该超级块600包括块602a-d。在所示示例中,块602a-d的每个是来自不同物理管芯(die)的相同块(例如,块1)。前三个块602a-c是存储索引页(例如,来自索引表106的索引页)的块。第四块602d是存储奇偶比特的块。对块602a-c的条带执行异或(XOR)运算可以得出存储在块602d中的奇偶比特。超级块中的条带包括来自每块的相应比特。在所示示例中,每行是一个条带。例如,通过执行以下运算来得出用于第一条带的奇偶比特:010 XOR 011 XOR 111=110。
存储在第四块602d中的奇偶比特可被用来通过对该条带中的其它块执行相同的异或运算来恢复丢失索引页。例如,在第四条带604a-c中,与块1 604b相关联的比特已丢失。利用604a、604c和604d执行异或运算就可以重获这些比特。例如,通过以下运算得到了奇偶比特110:000 XOR 101 XOR 011=110。可以通过利用604a、604c和604d执行相同运算来重获比特604b。例如,000 XOR 011 XOR 110=101。
超级块600被呈现用于说明性目的。任意数目的索引块(例如,2个、5个、10个等)可以结合存储奇偶比特的块来被使用。另外,每个条带中的比特的大小(例如,字、双字、页等)可以变化。奇偶比特以外的方法也可被用来纠正索引页错误,例如,使用纠错码(ECC)。
使用超级块的示例索引页恢复操作
图7是使用图1A-1B和图6所示的存储器映射体系结构内的超级块的示例索引页恢复操作700的流程图。索引页恢复操作700可以在不必使用包含在数据库中的块TOC的情况下来恢复索引页。
在一些实现方式中,操作700可以通过接收从非易失性存储器中的数据页进行读取或者向非易失性存储器中的数据页进行写入的请求而开始(702)。在尝试处理所接收请求时,可以查询索引表(例如,索引表106)中的所请求数据页的物理地址。与上面对于图2A描述的标识丢失索引页的描述类似,包含有用于所请求数据页的逻辑到物理地址映射的索引页可以被标识为丢失(703)。可以从与丢失索引页相对应的超级块标识出索引页的条带(704)。参考作为示例的图6所示的超级块,如果索引页604b丢失,则可以标识条带604a-d以恢复索引页604b。可以检查该条带中的其它索引页中的错误(706)。如果使用奇偶比特或另外的纠错技术(例如,ECC)(例如,如果条带中的另一索引页丢失,则奇偶性将不能准确地恢复索引页),则包含在该条带中的其它索引页之一中的错误可能导致问题。如果发现其它索引页之一包含错误,则可以使用另一索引页恢复操作(例如,索引恢复操作200-400)。来自排除了丢失索引页的该条带的比特随后被组合(例如,使用异或运算)以重构出丢失索引页(708)。
在索引页已被恢复之后,附加步骤(未示出)可被执行来确保所恢复索引页的完整性。这样的附加步骤可以包括:与参考图2B和图3B描述的步骤类似地,针对被删除页来交叉引用文件系统(取决于奇偶比特被更新的频率,这可能不是必要的),以及将用于丢失索引页的索引块移到非易失性存储器的新近被分配块。
操作700在恢复索引页方面可以提供的优点在于其在不必访问非易失性存储器中的数据库的块TOC的情况下恢复索引页。
已描述了多个实现方式。然而,将明白,可以作出各种修改。例如,一个或多个实现方式的元素可被组合、删除、修改或补充以形成另外的实现方式。作为又一示例,为了获得所希望的结果,在附图中示出的逻辑流程不一定要求所示出的特定顺序或依次顺序。另外,其它步骤可被提供,或者步骤可从所描述流程中被去除,并且其它组件可被添加到所描述系统或从所描述系统移除。因此,其它实现方式在权利要求的范围内。

Claims (20)

1.一种用于恢复闪速存储器设备中的索引页的方法,包括:
响应于确定索引的至少一部分包括一个或多个错误,接收恢复索引的所述至少一部分的请求,所述索引将逻辑扇区映射到闪速存储器设备中的存储器物理页;
读取与所述闪速存储器设备中的存储器块相关联的第一元数据,其中所述第一元数据将该存储器块的物理页映射到逻辑扇区;
标识出由所述第一元数据映射的该存储器块的页对应于该索引中的所请求部分;以及
将与被标识为对应的页相对应的条目写到该索引中的所请求部分。
2.如权利要求1所述的方法,还包括:
基于多个存储器块中的每块新近被访问的时间来从所述多个存储器块中标识出存储器块,其中所标识出的存储器块最新近被访问。
3.如权利要求1所述的方法,还包括:
基于提供多个存储器块中的每块的范围的第二元数据来从所述多个块中标识出存储器的块,其中所标识出的存储器块的范围对应于该索引中的所请求部分。
4.如权利要求3所述的方法,其中,由所述第二元数据提供的范围包括针对所述多个块中的每块的由存储器块存储的逻辑扇区的范围。
5.如权利要求3所述的方法,其中,由所述第二元数据提供的范围包括针对所述多个块中的每块的与存储器块相对应的索引页的范围。
6.如权利要求3所述的方法,其中,所述第二元数据被存储在易失性存储器中。
7.如权利要求1所述的方法,还包括:
将该索引中的所请求部分的剩余部分安排为在所述闪速存储器设备空闲时被恢复。
8.如权利要求1所述的方法,还包括:
重复地读取第一元数据,标识逻辑扇区,并且写入所标识页直到该索引中所请求的部分被恢复为止。
9.如权利要求1所述的方法,还包括:
通过与存储与被删除存储器有关的信息的文件系统交叉引用被写入该索引中所请求的部分的条目来确定与所述条目相关联的存储器已被删除;以及
将所述条目重新写入该索引中的所请求部分以指示与所述条目相关联的存储器已被删除。
10.如权利要求1所述的方法,还包括:
分配新的存储器块;以及
将数据从与该索引相关联的存储器块转移到被分配的新存储器块。
11.一种用于恢复闪速存储器设备中的索引页的方法,包括:
响应于确定第一索引页的至少一部分包括一个或多个错误,接收恢复第一索引页的所述至少一部分的请求,所述第一索引页将逻辑扇区映射到闪速存储器设备中的存储器物理页,其中所述第一索引页是超级块的一部分,所述超级块将所述第一索引页与第二索引页和元数据页相关联;
通过将所述第二索引页的至少一部分与所述元数据页的至少一部分相组合来确定该索引中的所请求部分的数据;以及
将所确定的数据写入该索引中的所请求部分。
12.如权利要求11所述的方法,还包括:将所述第一索引、所述第二索引和所述元数据存储在所述闪速存储器设备的物理上不同的管芯上。
13.如权利要求11所述的方法,其中,利用异或XOR运算将所述第二索引页的至少该部分和所述元数据页的至少该部分相组合,以确定用于恢复该索引中的所请求部分的数据。
14.如权利要求11所述的方法,其中,将所述第二索引页的至少该部分与所述元数据页的至少该部分相组合是基于所述元数据页的至少该部分来执行的,所述元数据页包括奇偶信息,所述奇偶信息是先前通过利用XOR运算将所述第一索引页与所述第二索引页相组合而生成的。
15.一种能够恢复非易失性存储器中的索引页的系统,包括:
非易失性存储器;以及
控制器,该控制器被耦合到所述非易失性存储器并且可操作来:
响应于确定索引的至少一部分包括一个或多个错误,接收恢复索引的所述至少一部分的请求,所述索引将逻辑扇区映射到所述非易失性存储器的物理页;
读取与所述非易失性存储器的块相关联的第一元数据,其中所述第一元数据被存储在非易失性存储器中并且将所述非易失性存储器的该块的逻辑物理页映射到逻辑扇区;
标识出由所述第一元数据映射的所述非易失性存储器的该块的页对应于该索引中的所请求部分;以及
将与被标识为对应的页相对应的条目写到该索引中的所请求部分。
16.如权利要求15所述的系统,其中,所述控制器还被配置为:
基于多个存储器块中的每块新近被访问的时间来从所述多个存储器块中标识出存储器块,其中所标识出的存储器块最新近被访问。
17.如权利要求15所述的系统,其中,所述控制器还被配置为
基于提供多个存储器块中的每块的范围的第二元数据来从所述多个块中标识出存储器的块,其中所标识出的存储器块的范围对应于该索引中的所请求部分。
18.如权利要求17所述的系统,其中,由所述第二元数据提供的范围包括针对所述多个块中的每块的由存储器块存储的逻辑扇区的范围。
19.如权利要求17所述的系统,其中,由所述第二元数据提供的范围包括针对所述多个块中的每块的与存储器块相对应的索引页的范围。
20.如权利要求17所述的系统,还包括:易失性存储器,其存储所述第二元数据。
CN201080032931.XA 2009-07-24 2010-07-21 恢复闪存存储器设备中的索引页的系统及方法 Active CN102483714B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/509,071 US8468293B2 (en) 2009-07-24 2009-07-24 Restore index page
US12/509,071 2009-07-24
PCT/US2010/042696 WO2011011480A1 (en) 2009-07-24 2010-07-21 Restore index page

Publications (2)

Publication Number Publication Date
CN102483714A CN102483714A (zh) 2012-05-30
CN102483714B true CN102483714B (zh) 2015-06-10

Family

ID=43066897

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080032931.XA Active CN102483714B (zh) 2009-07-24 2010-07-21 恢复闪存存储器设备中的索引页的系统及方法

Country Status (5)

Country Link
US (1) US8468293B2 (zh)
EP (1) EP2282267A1 (zh)
KR (2) KR101257989B1 (zh)
CN (1) CN102483714B (zh)
WO (1) WO2011011480A1 (zh)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8812816B2 (en) * 2010-03-23 2014-08-19 Apple Inc. Garbage collection schemes for index block
US8726126B2 (en) 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US8762340B2 (en) * 2010-05-14 2014-06-24 Salesforce.Com, Inc. Methods and systems for backing up a search index in a multi-tenant database environment
US8204871B1 (en) * 2010-09-28 2012-06-19 Emc Corporation Extended file mapping cache for fast input-output
US8892981B2 (en) 2010-09-30 2014-11-18 Apple Inc. Data recovery using outer codewords stored in volatile memory
US8738882B2 (en) 2011-06-03 2014-05-27 Apple Inc. Pre-organization of data
US8924632B2 (en) 2011-09-16 2014-12-30 Apple Inc. Faster tree flattening for a system having non-volatile memory
US9235502B2 (en) 2011-09-16 2016-01-12 Apple Inc. Systems and methods for configuring non-volatile memory
US9104614B2 (en) * 2011-09-16 2015-08-11 Apple Inc. Handling unclean shutdowns for a system having non-volatile memory
US9026496B1 (en) * 2011-09-30 2015-05-05 Emc Corporation Efficient building of restore list
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US8370567B1 (en) * 2012-03-23 2013-02-05 DSSD, Inc. Storage system with self describing data
US8392428B1 (en) 2012-09-12 2013-03-05 DSSD, Inc. Method and system for hash fragment representation
CN103049390B (zh) * 2012-12-14 2016-03-09 华为技术有限公司 应用元数据的数据处理方法及存储系统
US9158678B2 (en) * 2013-03-13 2015-10-13 Kabushiki Kaisha Toshiba Memory address management system and method
US9069695B2 (en) 2013-03-14 2015-06-30 Apple Inc. Correction of block errors for a system having non-volatile memory
US20140281780A1 (en) * 2013-03-15 2014-09-18 Teradata Corporation Error detection and recovery of transmission data in computing systems and environments
CN103207916B (zh) * 2013-04-24 2017-09-19 曙光信息产业(北京)有限公司 元数据处理的方法和装置
WO2015130314A1 (en) 2014-02-28 2015-09-03 Hewlett-Packard Development Company, L.P. Mapping mode shift
US20150371536A1 (en) * 2014-06-20 2015-12-24 Ray Enterprises Inc. Universal remote control device
US9788067B2 (en) * 2014-06-20 2017-10-10 Ray Enterprises, LLC Caching programming data
US9600409B2 (en) * 2014-08-29 2017-03-21 EMC IP Holding Company LLC Method and system for garbage collection in a storage system based on longevity of stored data
US9378149B1 (en) 2014-08-29 2016-06-28 Emc Corporation Method and system for tracking modification times of data in a storage system
US10152412B2 (en) * 2014-09-23 2018-12-11 Oracle International Corporation Smart flash cache logger
US9792069B2 (en) * 2014-09-29 2017-10-17 Western Digital Technologies, Inc. Offline deduplication for solid-state storage devices
CN104317833B (zh) * 2014-10-10 2019-03-26 深圳市锐明技术股份有限公司 一种恢复系统文件索引的方法及装置
US10824362B2 (en) 2015-03-27 2020-11-03 Hewlett Packard Enterprise Development Lp File migration to persistent memory
WO2016160027A1 (en) 2015-04-02 2016-10-06 Hewlett Packard Enterprise Development Lp Page cache on persistent memory
WO2017066601A1 (en) * 2015-10-16 2017-04-20 Huang Yiren Ronnie Method and apparatus for providing hybrid mode to access ssd drive
US10157004B2 (en) * 2016-04-14 2018-12-18 Sandisk Technologies Llc Storage system and method for recovering data corrupted in a host memory buffer
CN106339280B (zh) * 2016-08-31 2019-05-24 四川效率源信息安全技术股份有限公司 一种重组展讯系统数据的方法
CN109032518A (zh) * 2018-07-19 2018-12-18 江苏华存电子科技有限公司 一种闪存内超级块的类型识别方法
CN111611258B (zh) * 2020-05-27 2023-09-19 杭州海康威视系统技术有限公司 流数据的恢复方法和存储设备
CN114328375A (zh) * 2020-09-29 2022-04-12 伊姆西Ip控股有限责任公司 用于存储管理的方法、设备和计算机程序产品
CN112698984B (zh) * 2020-12-17 2023-07-04 宁波三星医疗电气股份有限公司 嵌入式设备的数据库恢复方法、电子设备及介质
CN112700814A (zh) * 2021-01-05 2021-04-23 潍柴动力股份有限公司 Eeprom数据的读取方法、装置、电控设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101169751A (zh) * 2006-10-25 2008-04-30 三星电子株式会社 具有闪存设备的系统及其数据恢复方法
CN101458961A (zh) * 2007-10-31 2009-06-17 三星电子株式会社 非易失性存储设备中数据管理方法和映射表更新方法

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4323987A (en) * 1980-03-28 1982-04-06 Pitney Bowes Inc. Power failure memory support system
US5341330A (en) * 1992-10-30 1994-08-23 Intel Corporation Method for writing to a flash memory array during erase suspend intervals
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5689704A (en) * 1994-03-04 1997-11-18 Sony Corporation Recording medium, recording/playback device which uses commands in character string form for audio system control
US5935259A (en) * 1996-09-24 1999-08-10 Apple Computer, Inc. System and method for preventing damage to media files within a digital camera device
US6199076B1 (en) * 1996-10-02 2001-03-06 James Logan Audio program player including a dynamic program selection controller
JPH10260912A (ja) * 1997-03-17 1998-09-29 Mitsubishi Electric Corp メモリカード
SG82587A1 (en) * 1997-10-21 2001-08-21 Sony Corp Recording apparatus, recording method, playback apparatus, playback method, recording/playback apparatus, recording/playback method, presentation medium and recording medium
JPH11203191A (ja) * 1997-11-13 1999-07-30 Seiko Epson Corp 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体
US6427186B1 (en) * 1999-03-30 2002-07-30 Frank (Fong-Long) Lin Memory, interface system and method for mapping logical block numbers to physical sector numbers in a flash memory, using a master index table and a table of physical sector numbers
JP3873523B2 (ja) * 1999-05-21 2007-01-24 ソニー株式会社 再生装置
CA2338695C (en) * 1999-05-28 2009-07-07 Matsushita Electric Industrial Co., Ltd. Semiconductor memory card, playback apparatus, recording apparatus, playback method, recording method, and computer-readable recording medium
US7660941B2 (en) * 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US6816856B2 (en) * 2001-06-04 2004-11-09 Hewlett-Packard Development Company, L.P. System for and method of data compression in a valueless digital tree representing a bitset
DE10127198A1 (de) * 2001-06-05 2002-12-19 Infineon Technologies Ag Vorrichtung und Verfahren zum Ermitteln einer physikalischen Adresse aus einer virtuellen Adresse unter Verwendung einer hierarchischen Abbildungsvorschrift mit komprimierten Knoten
JP4362248B2 (ja) * 2001-09-03 2009-11-11 パイオニア株式会社 情報記録再生装置およびコンピュータプログラム
US6711663B2 (en) 2001-11-15 2004-03-23 Key Technology Corporation Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof
US7139937B1 (en) * 2002-08-15 2006-11-21 Network Appliance, Inc. Method and apparatus to establish safe state in a volatile computer memory under multiple hardware and software malfunction conditions
US8041878B2 (en) * 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7028139B1 (en) * 2003-07-03 2006-04-11 Veritas Operating Corporation Application-assisted recovery from data corruption in parity RAID storage using successive re-reads
US20060008256A1 (en) * 2003-10-01 2006-01-12 Khedouri Robert K Audio visual player apparatus and system and method of content distribution using the same
JP3912355B2 (ja) * 2003-10-14 2007-05-09 ソニー株式会社 データ管理装置、データ管理方法、不揮発性メモリ、不揮発性メモリを有する記憶装置及びデータ処理システム
US20050251617A1 (en) * 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US7143120B2 (en) * 2004-05-03 2006-11-28 Microsoft Corporation Systems and methods for automated maintenance and repair of database and file systems
JP4209820B2 (ja) * 2004-07-15 2009-01-14 株式会社ハギワラシスコム メモリカードシステム及び該メモリカードシステムで使用されるライトワンス型メモリカード、ホストシステムと半導体記憶デバイスとからなるシステム
US7366887B2 (en) * 2005-07-11 2008-04-29 Lenovo (Singapore) Pte. Ltd. System and method for loading programs from HDD independent of operating system
US20070016721A1 (en) * 2005-07-18 2007-01-18 Wyse Technology Inc. Flash file system power-up by using sequential sector allocation
JP5076411B2 (ja) * 2005-11-30 2012-11-21 ソニー株式会社 記憶装置、コンピュータシステム
US7917723B2 (en) * 2005-12-01 2011-03-29 Microsoft Corporation Address translation table synchronization
US7711923B2 (en) * 2006-06-23 2010-05-04 Microsoft Corporation Persistent flash memory mapping table
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
JP4967680B2 (ja) * 2007-01-23 2012-07-04 ソニー株式会社 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
US7596643B2 (en) * 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US8135900B2 (en) * 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8892831B2 (en) * 2008-01-16 2014-11-18 Apple Inc. Memory subsystem hibernation
US8397014B2 (en) * 2008-02-04 2013-03-12 Apple Inc. Memory mapping restore and garbage collection operations
US20090307409A1 (en) * 2008-06-06 2009-12-10 Apple Inc. Device memory management

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101169751A (zh) * 2006-10-25 2008-04-30 三星电子株式会社 具有闪存设备的系统及其数据恢复方法
CN101458961A (zh) * 2007-10-31 2009-06-17 三星电子株式会社 非易失性存储设备中数据管理方法和映射表更新方法

Also Published As

Publication number Publication date
KR20110117045A (ko) 2011-10-26
CN102483714A (zh) 2012-05-30
US20110022780A1 (en) 2011-01-27
US8468293B2 (en) 2013-06-18
KR20110010580A (ko) 2011-02-01
EP2282267A1 (en) 2011-02-09
KR101257989B1 (ko) 2013-04-24
WO2011011480A1 (en) 2011-01-27

Similar Documents

Publication Publication Date Title
CN102483714B (zh) 恢复闪存存储器设备中的索引页的系统及方法
US8909851B2 (en) Storage control system with change logging mechanism and method of operation thereof
US8706989B2 (en) Data storage device with power-off recovery system and method thereof
US8423710B1 (en) Sequential writes to flash memory
KR101562781B1 (ko) 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성
US10176190B2 (en) Data integrity and loss resistance in high performance and high capacity storage deduplication
US8397014B2 (en) Memory mapping restore and garbage collection operations
US9335950B2 (en) Multiple stream compression and formatting of data for data storage systems
CN105573681B (zh) 一种ssd盘片内部raid组建方法及系统
TWI645404B (zh) 資料儲存裝置以及非揮發式記憶體操作方法
KR101678868B1 (ko) 플래시 주소 변환 장치 및 그 방법
CN107003942A (zh) 对用于增强存储设备的性能和持久性的解除映射命令的处理
CN106484319A (zh) 用于非易失性存储器的支持无效命令
CN103984605A (zh) 在多层存储器结构中存储纠错码
CN105122220A (zh) 固态驱动器中的原子写入命令支持
TW201145020A (en) Physical compression of data with flat or systematic pattern
JP2016507847A (ja) 限定的書込み耐久性を有するキャッシュのためのセット間ウェアレベリング
US20130124782A1 (en) Solid state drive and method for constructing logical-to-physical table thereof
CN106095699A (zh) 用于快闪存储器的可扩展spor算法
KR101369408B1 (ko) 스토리지 시스템 및 이의 데이터 전송 방법
CN105095352A (zh) 应用于分布式系统的数据处理方法及装置
CN103389943A (zh) 控制装置、存储装置及存储控制方法
Chung et al. C-HYFLUR: Recovery for Power-off Failure in Flash Memory Storage Systems Using Compression Scheme for HYbrid FLUsh Recovery
CN107608626B (zh) 一种基于ssd raid阵列的多级缓存及缓存方法
CN112395260A (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
C14 Grant of patent or utility model
GR01 Patent grant