首页> 中国专利> 保护元数据免受意外断电影响的装置和方法

保护元数据免受意外断电影响的装置和方法

摘要

本发明涉及保护元数据免受意外断电影响的装置和方法。一种系统,包括第一存储器,该第一存储器配置成存储第一元数据以将逻辑地址和物理地址相关联。第二存储器被配置成包括所述物理地址,以根据所述物理地址存储第一数据,以及在预先决定的一组物理地址的状态改变的时候存储所述第一元数据的部分。恢复模块,其配置成根据存储在所述第二存储器中的所述第一元数据的所述部分更新第一元数据。

著录项

  • 公开/公告号CN101840380A

    专利类型发明专利

  • 公开/公告日2010-09-22

    原文格式PDF

  • 申请/专利权人 马维尔国际贸易有限公司;

    申请/专利号CN201010134076.5

  • 申请日2010-03-12

  • 分类号G06F12/16(20060101);G06F12/10(20060101);

  • 代理机构11258 北京东方亿思知识产权代理有限责任公司;

  • 代理人宋鹤;南霆

  • 地址 巴巴多斯圣迈克尔

  • 入库时间 2023-12-18 00:48:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-03-10

    未缴年费专利权终止 IPC(主分类):G06F12/16 授权公告日:20150107 终止日期:20190312 申请日:20100312

    专利权的终止

  • 2015-01-07

    授权

    授权

  • 2012-04-04

    实质审查的生效 IPC(主分类):G06F12/16 申请日:20100312

    实质审查的生效

  • 2010-09-22

    公开

    公开

说明书

相关申请的交叉引用

本申请要求2009年3月12日提交的美国临时申请号No.61/159775的权益。上述申请的公开通过引用在此全部并入。

技术领域

当前的公开涉及保护和重建元数据。

背景

在此提供的背景描述以一般提供本公开的环境为目的。当前列出的发明人的工作,在此工作已在此背景部分中进行描述的程度上,以及本描述中不能另外地被限定为在递交时的现有技术的方面,无论是以明确或隐含的方式均不被视为相对于本公开的现有技术。

计算设备可以包括存储数据的各种可移动和不可移动的存储设备。存储设备可以包括易失性和非易失性存储设备二者,包括,但不限于,硬盘驱动器(HDD)、光存储驱动器、随机访问存储器(RAM)、只读存储器(ROM)、和可移动存储器。例如,可移动存储器可以包括闪存。

闪存可以包括用来仿真HDD的闪存驱动器(flash drive)。例如,计算设备可以将数据存储到闪存上,就好像该闪存是HDD一样。闪存驱动可以存储元数据,该元数据指示用户的数据是如何被存储到闪存驱动器上的。例如,元数据可以指示逻辑地址是如何与包含用户数据的闪存驱动器的真实物理地址对应的。

在计算设备的操作过程中,当用户数据被从闪存驱动器中读出和写入闪存驱动器时,元数据被更新并被存储在易失性存储器上。当计算设备断电时,元数据被转移到闪存驱动器上。

发明内容

一种系统,其包括配置成存储第一元数据以将逻辑地址和物理地址相关联的第一存储器。第二存储器配置成包括物理地址,以根据物理地址存储第一数据,以及在预先决定的一组物理地址的状态改变的时候存储第一元数据的部分。恢复模块配置成根据存储在第二存储器中的第一元数据的部分来更新第一元数据。

在其他特征中,第一元数据包括将逻辑地址和物理地址相关联的第一查找表。第一元数据包括将物理地址与逻辑地址相关联的第二查找表。预先决定的一组物理地址是宽擦除块单元(wide erase block unit,WERU)。第一元数据包括用于多个WERU的标识符,并且标识符与各自的仓(bin)对应。第一元数据包括活动日志,以指示用于多个WERU中的一个WERU的第一标识符何时改变。第二存储器在第一标识符改变的时候存储第一元数据的部分。

在其他特征中,第一元数据的部分包括与多个WERU中的一个WERU关联的第二查找表的部分。恢复模块根据第二查找表的部分和活动日志更新第一查找表。当系统加电,恢复模块从第二存储器中检索第二查找表的部分和活动日志。

一种方法,其包括,在第一存储器中存储第一元数据以将逻辑地址和物理地址相关联,在包括物理地址第二存储器中根据物理地址存储第一数据,在预先决定的一组物理地址的状态改变时,在第二存储器中存储第一元数据的部分,以及根据存储在第二存储器中的第一元数据的部分来更新第一元数据。

在其他特征中,该方法还包括使用第一元数据中所包括的第一查找表将逻辑地址和物理地址相关联。该方法还包括使用第一元数据中所包括的第二查找表将物理地址和逻辑地址相关联。预先决定的一组物理地址是宽擦除块单元(WERU)。第一元数据包括用于多个WERU的标识符,以及标识符相应于各自的仓。该方法还包括使用第一元数据中所包括的活动日志指示用于多个WERU中的一个WERU的第一标识符何时改变。

在其他特征中,该方法还包括在第一标识符改变时在第二存储器中存储第一元数据的部分。第一元数据的部分包括与多个WERU中的一个WERU关联的第二查找表的部分。该方法还包括根据第二查找表的部分和活动日志更新第一查找表。该方法还包括在系统加电时,从第二存储器中检索第二查找表的部分和活动日志。

在另外的其他特征中,以上所描述的系统和方法由计算机程序来实现,该程序通过一个或更多处理来执行。该计算机程序能够存在于计算机可读的媒介中,例如,但不限于,存储器、非易失性数据储存器,和/或其他适当的有形的储存媒介。

根据详细描述、权利要求以及附图,本公开应用的其他领域将变得明显。详细描述和具体的例子目的仅旨在于阐释,并不旨在于限制本公开的范围。

附图说明

根据详细的描述和随附的附图,本公开将变得被更加充分地理解,其中:

图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中(即,在闪存16中),该逻辑分配地址相应于闪存16的物理分配地址(PAA)。仅作为示例,LAA为4096字节。闪存分配单元(flash allocation unit,AU)相应于闪存16的读或写单元并且可以等同于一个LAA。宽擦除块单元(WERU)是擦除操作单元并相应于多个(即,2048个)PAA。

当计算设备10向LAA写数据时,闪存模块12(即,闪存模块12的固件)选择相应的PAA,这被称为“分配”。例如,处理器模块14依照存储在非易失性存储器18中的固件处理命令,以从闪存16读取数据和向闪存16写入数据。闪存模块12将数据存储在闪存16的PAA,并将元数据存储在主存储器20中,该元数据指示LAA和相应的PAA之间的关系。例如,元数据可以包括将LAA和PAA关联起来的查找表(LUT)。该查找表将每一个被分配的LAA与PAA关联。如果特定的LAA没有被分配,则该LAA可以与可识别的无效PAA值关联。

元数据也包括WERU描述数据,包括,但不限于,PAA有效性映射、WERU链接信息,和擦除信息。每个WERU包括将该WERU与特定的仓(bin)关联起来的标识符。例如,WERU可以与空闲(free)仓、有效仓、部分仓、或工作仓关联。空闲仓包括其PAA已准备好被写入的WERU。有效仓包括其PAA是所有有效数据的WERU。部分仓包括既包含带有有效数据的PAA,也包含带有无效数据的PAA(即,其LAA数据被随后写入其他地方的PAA)的WERU。工作仓包括目前正在被写入的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或工作中的WERU中的PAA 104中的另一个。

仅作为示例,WERU A-G中的每一个可以包括一组三个PAA 104。例如,WERU A和E为工作中的WERU(即,目前正在被写入的WERU)。WERU B和D为部分WERU。WERU 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中的元数据包括将每一个WERU与仓200中特定的一个关联起来的数据。例如,WERUA和E与工作仓202关联。WERU B和D与部分仓204关联。WERU C与有效仓206关联。WERU F和G与空闲仓208关联。

存储在主存储器20中的元数据包括WERU活动日志(WAL)。WAL指示特定的WERU何时改变状态。例如,WAL指示何时WERU从仓200中的一个移动到仓200中的另一个。例如,当数据被写入空闲WERU F时,空闲WERU F移动至工作仓202,然后移动至部分仓204。当WERU F被有效数据填满时,WERU F移动至有效仓206。

现在参考图4,存储在主存储器20中的元数据包括逆向查找表(RLUT)300。RLUT 300将闪存16的PAA 302与LAA 304关联。RLUT 300的一部分被周期性地存储在闪存16中。例如,当特定的WERU从工作仓202移动到有效仓206时,与移动到工作仓202的WERU相应的RLUT 300的一部分被存储在闪存16中。PAA 302和LAA 304(及如图2中所显示的LAA 102和PAA 104)之间最近的(即,正确的)关联能够在意外掉电之后使用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标识在掉电之前被写入或被擦除的WERU。WAL指示特定的WERU何时从仓200中的一个移动至仓200中的另一个。对每一个WERU,WAL包括一个时间(即,时间戳(timestamp)),该时间指示WERU何时被写入或擦除。从而,WAL指示WERU中的哪些被写入(即,移动至工作仓202)和/或被擦除(即,移动至空闲仓208)。

恢复模块400根据WAL和RLUT 300更新存储在主存储器20中的元数据。例如,恢复模块400更新WERU仓和LUT 100。恢复模块400移动WERU中的每一个至正确的仓。换句话说,如果元数据指示WERU位于空闲仓208内,以及WAL指示该WERU被写入并被有效数据填充,则恢复模块400移动该WERU至有效仓206。恢复模块400根据WAL移动每一个WERU至仓200中恰当的一个。

当WERU位于适当的仓内时,恢复模块400根据RLUT 300更新LUT100。从具有最近活动的WERU(即,根据时间戳被最近写入和/或擦除的WERU)开始,恢复模块400为每一个WERU执行逆向分配。

再次参考图4,仅有RLUT 300的部分被存储在闪存16中,这些部分相应于被从一个仓移动至另一个仓的WERU。例如,没有数据被写入WERU F和G。相应地,WERU F和G保持与空闲仓208的关联,与WERUF和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将WERU A和D标识为从仓200中的一个移动至另一个的WERU。恢复模块400根据WAL进一步确定对WERUA进行了最近的改变。因此,恢复模块400确定PAA 300包括最新的数据,并根据WAL、RLUT 300、和逆向分配被适当地与LAA316关联。恢复模块400用每个WERU的适当关联更新LUT 100。

在一些情况下,恢复模块400可能不能够确定PAA 302中之一是与LAA 304中的哪一个关联。闪存16中的PAA中的每一个包括指示该PAA与哪一个LAA关联的数据。恢复模块400可以读取存储在PAA中的数据来确定适当的LAA关联。

恢复模块400还更新WERU描述数据,包括,但不限于,WERU有效性映射、链接信息、和擦除信息(例如,每个WERU被擦除的次数)。WERU描述数据可以包括分配映射(allocation map),该分配映射指示为工作仓202中的WERU读取PAA的每个时刻。

现在参考图6,显示了元数据恢复方法500。在502,计算设备10被加电。在504,恢复模块400从闪存16转移元数据至主存储器20。在506,恢复模块400确定计算设备10是否被适当地断电。如果为真,方法500继续至508。如果为假,方法500继续至510。在508,计算设备10继续正常操作,而不执行元数据恢复。

在510,恢复模块400根据WAL移动每一个WERU至适当的仓。在512,恢复模块400根据WAL和RLUT 300更新LUT 100。在514,恢复模块400根据存储在任何剩余的PAA中的LAA关联数据来更新LUT 100。在516,恢复模块400更新WERU描述数据,计算设备10继续正常操作。

本公开的宽泛的教导内容可按多种形式来实施。因此,虽然本公开包括特定的例子,但本公开的实际范围将不应该受限于此,因为基于对附图、说明书以及下面的权利要求的研究,其他修改将变得很明显。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号