专利名称:保护元数据免受意外断电影响的装置和方法
技术领域:
当前的公开涉及保护和重建元数据。背景在此提供的背景描述以一般提供本公开的环境为目的。当前列出的发明人的工 作,在此工作已在此背景部分中进行描述的程度上,以及本描述中不能另外地被限定为在 递交时的现有技术的方面,无论是以明确或隐含的方式均不被视为相对于本公开的现有技 术。计算设备可以包括存储数据的各种可移动和不可移动的存储设备。存储设备可以 包括易失性和非易失性存储设备二者,包括,但不限于,硬盘驱动器(HDD)、光存储驱动器、 随机访问存储器(RAM)、只读存储器(ROM)、和可移动存储器。例如,可移动存储器可以包括闪存。闪存可以包括用来仿真HDD的闪存驱动器(flash drive)。例如,计算设备可以将 数据存储到闪存上,就好像该闪存是HDD —样。闪存驱动可以存储元数据,该元数据指示用 户的数据是如何被存储到闪存驱动器上的。例如,元数据可以指示逻辑地址是如何与包含 用户数据的闪存驱动器的真实物理地址对应的。在计算设备的操作过程中,当用户数据被从闪存驱动器中读出和写入闪存驱动器 时,元数据被更新并被存储在易失性存储器上。当计算设备断电时,元数据被转移到闪存驱 动器上。
发明内容
一种系统,其包括配置成存储第一元数据以将逻辑地址和物理地址相关联的第一 存储器。第二存储器配置成包括物理地址,以根据物理地址存储第一数据,以及在预先决定 的一组物理地址的状态改变的时候存储第一元数据的部分。恢复模块配置成根据存储在第 二存储器中的第一元数据的部分来更新第一元数据。在其他特征中,第一元数据包括将逻辑地址和物理地址相关联的第一查找表。第 一元数据包括将物理地址与逻辑地址相关联的第二查找表。预先决定的一组物理地址是宽 擦除块单元(Wide erase block unit, WERU) 0第一元数据包括用于多个WERU的标识符, 并且标识符与各自的仓(bin)对应。第一元数据包括活动日志,以指示用于多个WERU中的 一个TORU的第一标识符何时改变。第二存储器在第一标识符改变的时候存储第一元数据 的部分。在其他特征中,第一元数据的部分包括与多个TORU中的一个TORU关联的第二查 找表的部分。恢复模块根据第二查找表的部分和活动日志更新第一查找表。当系统加电,恢复模块从第二存储器中检索第二查找表的部分和活动日志。一种方法,其包括,在第一存储器中存储第一元数据以将逻辑地址和物理地址相关联,在包括物理地址第二存储器中根据物理地址存储第一数据,在预先决定的一组物理 地址的状态改变时,在第二存储器中存储第一元数据的部分,以及根据存储在第二存储器 中的第一元数据的部分来更新第一元数据。在其他特征中,该方法还包括使用第一元数据中所包括的第一查找表将逻辑地址 和物理地址相关联。该方法还包括使用第一元数据中所包括的第二查找表将物理地址和逻 辑地址相关联。预先决定的一组物理地址是宽擦除块单元(WERU)。第一元数据包括用于多 个TORU的标识符,以及标识符相应于各自的仓。该方法还包括使用第一元数据中所包括的 活动日志指示用于多个WERU中的一个TORU的第一标识符何时改变。在其他特征中,该方法还包括在第一标识符改变时在第二存储器中存储第一元数 据的部分。第一元数据的部分包括与多个WERU中的一个TORU关联的第二查找表的部分。 该方法还包括根据第二查找表的部分和活动日志更新第一查找表。该方法还包括在系统加 电时,从第二存储器中检索第二查找表的部分和活动日志。在另外的其他特征中,以上所描述的系统和方法由计算机程序来实现,该程序通 过一个或更多处理来执行。该计算机程序能够存在于计算机可读的媒介中,例如,但不限 于,存储器、非易失性数据储存器,和/或其他适当的有形的储存媒介。根据详细描述、权利要求以及附图,本公开应用的其他领域将变得明显。详细描述 和具体的例子目的仅旨在于阐释,并不旨在于限制本公开的范围。
根据详细的描述和随附的附图,本公开将变得被更加充分地理解,其中图1是依照本公开的计算设备的原理框图;图2阐释了依照本公开的元数据查找表;图3阐释了依照本公开的宽擦除块单元(WERU)仓;图4阐释了依照本公开的逆向查找表;图5是依照本公开的处理器模块的原理框图;以及图6是依照本公开的元数据恢复方法的流程图。
具体实施例方式下面的描述在本质上仅仅是示例性的,且其目的绝不是限制本公开、其应用或其 使用。为清楚起见,将在附图中使用相同的参考数字以标识相似的组件。如在此使用的,使 用非排他的逻辑或,短语“A、B以及C中的至少一个”应该解释成意味着逻辑(A或B或C)。 应该理解,在不改变本公开原理的情况下,方法中的步骤可以按不同的顺序执行。如在此使用的,短语“模块”可用来指或包括专用集成电路(ASIC)、电子电路、执行 一种或多种软件或固件程序的处理器(共享的、专用的或组)和/或存储器(共享的、专用 的或组)、组合逻辑电路以及/或提供所描述的功能的其他合适的部件,或作为专用集成电 路(ASIC)、电子线路、执行一种或多种软件或固件程序的处理器(共享的、专用的或组)和 /或存储器(共享的、专用的或组)、组合逻辑线路以及/或其他提供所描述的功能的合适的部件的一部分。现在参考图1,计算设备10包括闪存模块12。计算设备10可以包括,但不限于,计 算机、媒体播放器、移动电话、个人数字助理、或可以包括闪存模块12的任何其他设备。闪 存模块12可以是可移动的存储器模块,如存储卡或USB闪存驱动器。闪存模块12包括处理器模块14、闪存16、非易失性存储器18、和主存储器20。处 理器模块14执行闪存模块12的软件和固件的指令。例如,处理器模块14可以执行存储在 非易失性存储器18中的固件的指令。处理器模块14也可以读取并执行存储在主存储器20 中的指令。例如,主存储器20可以包括易失性存储器,如随机访问存储器(RAM)。
闪存模块12与计算设备10的主机(host) 22通信。主机22与输入设备24和输 出设备26通信,也可以与辅助(secondary)储存器如HDD 28通信。输入设备24包括,但 不限于,键盘或键区、鼠标、触摸屏、触摸板、麦克风、和/或其他输入设备。输出设备26包 括,但不限于,显示器、扬声器、和/或其他输出设备。计算设备10在闪存模块12中存储数据。闪存模块12可以仿真HDD。例如,依照 逻辑块地址(LBA),数据被存储在HDD 28中,该逻辑块地址与HDD 28的物理块地址(PBA) 对应。典型地,HDD LBA是512字节。换句话说,主机22依照LBA引用(reference)HDD 28 中的数据,同时HDD 28依照PBA引用数据。相反地,数据依照逻辑分配地址(LAA)被存储在闪存模块12中(S卩,在闪存16 中),该逻辑分配地址相应于闪存16的物理分配地址(PAA)。仅作为示例,LAA为4096字 节。闪存分配单元(flash allocation unit,AU)相应于闪存16的读或写单元并且可以等 同于一个LAA。宽擦除块单元(WERU)是擦除操作单元并相应于多个(即,2048个)PAA。当计算设备10向LAA写数据时,闪存模块12 ( S卩,闪存模块12的固件)选择相应 的PAA,这被称为“分配”。例如,处理器模块14依照存储在非易失性存储器18中的固件处 理命令,以从闪存16读取数据和向闪存16写入数据。闪存模块12将数据存储在闪存16 的PAA,并将元数据存储在主存储器20中,该元数据指示LAA和相应的PAA之间的关系。例 如,元数据可以包括将LAA和PAA关联起来的查找表(LUT)。该查找表将每一个被分配的 LAA与PAA关联。如果特定的LAA没有被分配,则该LAA可以与可识别的无效PAA值关联。元数据也包括TORU描述数据,包括,但不限于,PAA有效性映射、WERU链接信息, 和擦除信息。每个WERU包括将该TORU与特定的仓(bin)关联起来的标识符。例如,WERU 可以与空闲(free)仓、有效仓、部分仓、或工作仓关联。空闲仓包括其PAA已准备好被写入 的TORU。有效仓包括其PAA是所有有效数据的TORU。部分仓包括既包含带有有效数据的 PAA,也包含带有无效数据的PAA( S卩,其LAA数据被随后写入其他地方的PAA)的TORU。工 作仓包括目前正在被写入的WERU。元数据也包括相应于闪存模块12的内部操作的数据,这些内部操作包括,仅作为 示例,耗损均衡、清除、和静态管理数据。当计算设备10从LAA中进行读取时,存储在主存储器20中的查找表指示应该从 哪个PAA中读取数据,并且闪存模块12相应地检索该数据。相反地,当计算设备10向一个 之前被写入的LAA写入,闪存模块12分配未使用的PAA给该LAA。数据被存储在新的PAA 中,LUT被相应地更新。这样,存储在主存储器20中的元数据使得能够分配和检索来自闪 存16中的适当的PAA中的数据。
当数据写入闪存模块12时,存储在主存储器20中的元数据被更新。在计算设备 10 (并且因此闪存模块12)断电之前,元数据被从主存储器20转移至闪存16。当计算设备 10被加电时,元数据被从闪存16转移至主存储器20,以在LAA和PAA之间建立适当的关联。 例如,元数据可以在计算设备10加电的过程中被转移至主存储器20。加电之后,在计算设备10的操作过程中对存储在主存储器20中的元数据所做的 任何改变将不会作用到闪存模块12上,直到断电,或直到对内部元数据保存命令做出响 应,其中内部元数据保存命令可以由闪存模块12的固件周期性地产生。当在计算设备10 的操作过程中意外掉电,对存储在主存储器20中的元数据所做的改变可能丢失。相应地, 存储在闪存16中的元数据没有更新(即,元数据是旧的),并相应于计算设备10的之前的 正常断电。在随后的加电时,旧的元数据被从闪存16转移至主存储器20,导致错误地分配 和检索闪存16中的数据。现在参考图2,存储在主存储器20中的元数据LUT 100将LAA 102和闪存模块12 的PAA 104关联起来。例如,当读取命令请求与LAA 106关联的数据时,数据实际上是从相 应的PAA 108中检索的。仅作为示例,如图2中所显示的,实心块指示与PAA 104中的一 个相关联的LAA 102,空心块指示不与PAA 104中的一个相关联的LAA 102。类似地,关于 PAA104,实心块指示存储数据并被分配给LAA 102中的一个的PAA 104。空心块指示不包含 数据的PAA 104。例如,LAA 106对应于PAA 108。相应地,从LAA 106请求的数据将从PAA 108中 进 行检索。相似地,从LAA 110请求的数据将从PAA 112中进行检索。相反地,当数据被写 入空的LAA 114时,空的或不包含有效数据的PAA(例如,PAA 116)将在分配的过程中被选 择。相应地,写入LAA 114的数据实际上将被写入PAA 116或工作中的TORU中的PAA 104 中的另一个。仅作为示例,WERU A-G中的每一个可以包括一组三个PAA 104。例如,WERU A禾口 E为工作中的TORU( S卩,目前正在被写入的WERU)。TORU B和D为部分TORU。TORU C为有 效 WERU。WERU F 禾口 G 为空闲 WERU。当数据被写入已经与PAA 122关联的LAA 120中时,第二 PAA 124被分配给LAA 120。当数据被再次写入LAA 120时,第三PAA 126被分配给LAA 120。换句话说,PAA 122 和124存储之前与LAA 120关联的旧的或失效的数据,PAA 126存储新数据。LUT 130代表存储在闪存16中的查找表。LUT 130在加电过程中被作为查找表 102转移给主存储器20。对LUT 102所做的任何改变不在存储在闪存16中的LUT 130中 反映出来。例如,LUT 130可以不指示随后的对LAA 132和134所做的改变。如图2中所显示的,当数据被写入PAA 104但是不在闪存16中被更新时,包括存 储在主存储器20中的LUT 100的元数据被更新。例如,存储在闪存16中的元数据指示在 计算设备10最近加电时的LUT 100的状态。相应地,存储在闪存16中的元数据可以指示 LAA 120仍然与PAA 122关联。如果计算设备10意外掉电,则存储在主存储器20中的元数据丢失。在下一次加 电时,存储在闪存16中的元数据被转移至主存储器20。相应地,从LAA 102中的一个读取 在掉电之前被写入的数据的请求将从PAA104中的一个检索旧的数据。例如,对从LAA 120 中读取数据的请求,数据将从PAA 122中检索而不是从PAA 126中检索。
现在参考图3,存储在主存储器20中的元数据包括将每一个TORU与仓200中特定的一个关联起来的数据。例如,WERUA和E与工作仓202关联。TORU B和D与部分仓204 关联。TORU C与有效仓206关联。TORU F和G与空闲仓208关联。存储在主存储器20中的元数据包括TORU活动日志(WAL)。WAL指示特定的TORU 何时改变状态。例如,WAL指示何时TORU从仓200中的一个移动到仓200中的另一个。例 如,当数据被写入空闲WERU F时,空闲TORU F移动至工作仓202,然后移动至部分仓204。 当TORU F被有效数据填满时,TORU F移动至有效仓206。现在参考图4,存储在主存储器20中的元数据包括逆向查找表(RLUT) 300。RLUT 300将闪存16的PAA 302与LAA 304关联。RLUT 300的一部分被周期性地存储在闪存16 中。例如,当特定的WERU从工作仓202移动到有效仓206时,与移动到工作仓202的TORU 相应的RLUT 300的一部分被存储在闪存16中。PAA 302和LAA 304(及如图2中所显示 的LAA 102和PAA 104)之间最近的(S卩,正确的)关联能够在意外掉电之后使用LUT 100、 RLUT 300、和 WAL 恢复。仅作为示例,如图4中所显示的,实心块指示存储数据并被分配给LAA304中的一 个的PAA 302。空心块指示不包含数据的PAA 302。关于LAA304,实心块指示与PAA 302中 的一个关联的LAA 304,空心块指示不与PAA 302中的一个关联的LAA 304。现在参考图5,处理器模块包括恢复模块400。仅作为示例,恢复模块400可以包 括或执行存储在非易失性存储器18中的固件。在加电时,计算设备10转移存储在闪存16 中的元数据至主存储器20,恢复模块400确定是否执行元数据恢复。例如,在正常的(即, 预定或有意图的)断电之后,元数据可以指示用户发起断电。如果元数据不指示用户发起 断电,则恢复模块400可以确定意外掉电发生,从而执行元数据恢复。在元数据恢复的过程中,恢复模块400根据WAL标识在掉电之前被写入或被擦除 的TORU。WAL指示特定的WERU何时从仓200中的一个移动至仓200中的另一个。对每一 个TORU,WAL包括一个时间(即,时间戳(timestamp)),该时间指示TORU何时被写入或擦 除。从而,WAL指示TORU中的哪些被写入(即,移动至工作仓202)和/或被擦除(即,移 动至空闲仓208)。恢复模块400根据WAL和RLUT 300更新存储在主存储器20中的元数据。例如, 恢复模块400更新TORU仓和LUT 100。恢复模块400移动TORU中的每一个至正确的仓。 换句话说,如果元数据指示WERU位于空闲仓208内,以及WAL指示该TORU被写入并被有效 数据填充,则恢复模块400移动该TORU至有效仓206。恢复模块400根据WAL移动每一个 WERU至仓200中恰当的一个。当WERU位于适当的仓内时,恢复模块400根据RLUT 300更新LUT100。从具有最 近活动的WERU (即,根据时间戳被最近写入和/或擦除的WERU)开始,恢复模块400为每一 个TORU执行逆向分配。再次参考图4,仅有RLUT 300的部分被存储在闪存16中,这些部分相应于被从一 个仓移动至另一个仓的WERU。例如,没有数据被写入WERU F和G。相应地,TORU F和G保 持与空闲仓208的关联,与TORUF和G相应的RLUT 300的部分没有被写入闪存16中。在 元数据恢复的过程中,恢复模块400不需要更新与WERU F和G相应的LUT 100的部分。相反地,MERU A和D例如从空闲仓208移动至部分仓204,以及存储在闪存16中的RLUT 300被相应地更新。从而,存储在主存储器20中的LUT 100中的数据可以不反映在 掉电之前对WERU A和D所做的改变。例如,PAA 310、312、314中的每一个可以与单个LAA 316关联。在元数据恢复过程中,恢复模块400根据WAL将TORU A和D标识为从仓200中的 一个移动至另一个的WERU。恢复模块400根据WAL进一步确定对WERUA进行了最近的改 变。因此,恢复模块400确定PAA 300包括最新的数据,并根据WAL、RLUT 300、和逆向分配 被适当地与LAA316关联。恢复模块400用每个TORU的适当关联更新LUT 100。在一些情况下,恢复模块400可能不能够确定PAA 302中之一是与LAA 304中的 哪一个关联。闪存16中的PAA中的每一个包括指示该PAA与哪一个LAA关联的数据。恢 复模块400可以读取存储在PAA中的数据来确定适当的LAA关联。恢复模块400还更新TORU描述数据,包括,但不限于,WERU有效性映射、链接 信息、和擦除信息(例如,每个WERU被擦除的次数)。WERU描述数据可以包括分配映射 (allocation map),该分配映射指示为工作仓202中的TORU读取PAA的每个时刻。现在参考图6,显示了元数据恢复方法500。在502,计算设备10被加电。在504, 恢复模块400从闪存16转移元数据至主存储器20。在506,恢复模块400确定计算设备10 是否被适当地断电。如果为真,方法500继续至508。如果为假,方法500继续至510。在 508,计算设备10继续正常操作,而不执行元数据恢复。在510,恢复模块400根据WAL移动每一个TORU至适当的仓。在512,恢复模块 400根据WAL和RLUT 300更新LUT 100。在514,恢复模块400根据存储在任何剩余的PAA 中的LAA关联数据来更新LUT 100。在516,恢复模块400更新TORU描述数据,计算设备10
继续正常操作。本公开的宽泛的教导内容可按多种形式来实施。因此,虽然本公开包括特定的例 子,但本公开的实际范围将不应该受限于此,因为基于对附图、说明书以及下面的权利要求 的研究,其他修改将变得很明显。
权利要求
一种系统,包括第一存储器,其配置成存储第一元数据以将逻辑地址和物理地址相关联;第二存储器,其配置成包括所述物理地址,根据所述物理地址存储第一数据,以及在预先决定的一组物理地址的状态改变的时候存储所述第一元数据的部分;以及恢复模块,其配置成根据存储在所述第二存储器中的所述第一元数据的所述部分来更新所述第一元数据。
2.如权利要求1所述的系统,其中所述第一存储器包括易失性存储器,所述第二存储 器包括闪存模块。
3.如权利要求1所述的系统,其中所述第一元数据包括第一查找表,以将逻辑地址和 物理地址相关联。
4.如权利要求3所述的系统,其中所述第一元数据包括第二查找表,以将物理地址与 逻辑地址相关联。
5.如权利要求4所述的系统,其中所述预先决定的一组物理地址为宽擦除块单元 WERU0
6.如权利要求5所述的系统,其中所述第一元数据包括用于多个WERU的标识符,以及 其中所述标识符相应于各自的仓。
7.如权利要求6所述的系统,其中所述仓包括工作仓、部分仓、有效仓、和空闲仓。
8.如权利要求6所述的系统,其中所述第一元数据包括活动日志,以指示用于所述多 个TORU中的一个TORU的第一标识符何时改变。
9.如权利要求8所述的系统,其中所述第二存储器在所述第一标识符改变的时候存储 所述第一元数据的所述部分。
10.如权利要求9所述的系统,其中所述第一元数据的所述部分包括与所述多个WERU 中的所述一个WERU关联的所述第二查找表的部分。
11.如权利要求10所述的系统,其中所述恢复模块根据所述第二查找表的所述部分及 所述活动日志更新所述第一查找表。
12.如权利要求11所述的系统,其中当所述系统加电时,所述恢复模块从所述第二存 储器中检索所述第二查找表的所述部分及所述活动日志。
13.一种方法,包括在第一存储器中存储第一元数据以将逻辑地址和物理地址相关联;在包括所述物理地址的第二存储器中根据所述物理地址存储第一数据;当预先决定的一组物理地址的状态改变时,在所述第二存储器中存储所述第一元数据 的部分;以及根据存储在所述第二存储器中的所述第一元数据的所述部分来更新所述第一元数据。
14.如权利要求13所述的方法,还包括使用包括在所述第一元数据中的第一查找表 将逻辑地址与物理地址相关联。
15.如权利要求14所述的方法,还包括使用包括在所述第一元数据中的第二查找表 将物理地址与逻辑地址相关联。
16.如权利要求15所述的方法,其中所述预先决定的一组物理地址为宽擦除块单元 (WERU)。
17.如权利要求16所述的方法,其中所述第一元数据包括用于多个WERU的标识符,以 及其中所述标识符对应于各自的仓。
18.如权利要求17所述的方法,还包括使用包括在所述第一元数据中的活动日志指示 用于所述多个WERU中的一个TORU的第一标识符何时改变。
19.如权利要求18所述的方法,还包括在所述第一标识符改变的时候在所述第二存储 器中存储所述第一元数据的所述部分。
20.如权利要求19所述的方法,其中所述第一元数据的所述部分包括与所述多个TORU 中的所述一个WERU关联的所述第二查找表的部分。
21.如权利要求20所述的方法,还包括根据所述第二查找表的所述部分和所述活动日 志来更新所述第一查找表。
22.如权利要求21所述的方法,还包括在所述系统加电时,从所述第二存储器中检索 所述第二查找表 的所述部分和所述活动日志。
全文摘要
本发明涉及保护元数据免受意外断电影响的装置和方法。一种系统,包括第一存储器,该第一存储器配置成存储第一元数据以将逻辑地址和物理地址相关联。第二存储器被配置成包括所述物理地址,以根据所述物理地址存储第一数据,以及在预先决定的一组物理地址的状态改变的时候存储所述第一元数据的部分。恢复模块,其配置成根据存储在所述第二存储器中的所述第一元数据的所述部分更新第一元数据。
文档编号G06F12/10GK101840380SQ20101013407
公开日2010年9月22日 申请日期2010年3月12日 优先权日2009年3月12日
发明者伦·尊室, 劳·恩古茵, 格沃羽赫·胡 申请人:马维尔国际贸易有限公司