CN102971717B - 存储器访问表保存和复原系统及方法 - Google Patents

存储器访问表保存和复原系统及方法 Download PDF

Info

Publication number
CN102971717B
CN102971717B CN201180031597.0A CN201180031597A CN102971717B CN 102971717 B CN102971717 B CN 102971717B CN 201180031597 A CN201180031597 A CN 201180031597A CN 102971717 B CN102971717 B CN 102971717B
Authority
CN
China
Prior art keywords
memory
metadata
segmentation
lut
event
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.)
Expired - Fee Related
Application number
CN201180031597.0A
Other languages
English (en)
Other versions
CN102971717A (zh
Inventor
J·阿德勒
P·尼奥斯
L·托恩-萨特
G·霍
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.)
Mawier International Trade Co Ltd
Original Assignee
Mawier International Trade 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 Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN102971717A publication Critical patent/CN102971717A/zh
Application granted granted Critical
Publication of CN102971717B publication Critical patent/CN102971717B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0009Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
    • G11C14/0018Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell whereby the nonvolatile element is an EEPROM element, e.g. a floating gate or metal-nitride-oxide-silicon [MNOS] transistor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0054Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell
    • G11C14/0063Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell and the nonvolatile element is an EEPROM element, e.g. a floating gate or MNOS transistor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Library & Information Science (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种系统包括:第一存储器,被配置成存储具有第一元数据的第一查找表(LUT)。第二存储器被配置成存储具有第二元数据的第二LUT,其中第一元数据包括在逻辑地址与物理地址之间的第一映射。第二元数据包括在逻辑地址与物理地址之间的第二映射。控制模块被配置成更新第一元数据。控制模块被配置成在各预定时间基于第一元数据更新第二元数据的分段。每个分段引用第二LUT的预定数目的条目。

Description

存储器访问表保存和复原系统及方法
相关申请的交叉引用
本申请要求对2011年5月18日提交的第13/110,517号美国实用新型申请和2010年5月25日提交的第61/347,919号美国临时申请的优先权。上述申请的公开内容通过引用整体结合于此。
技术领域
本公开内容涉及存储和接收固态驱动的元数据。
背景技术
这里提供的背景技术描述是为了一般地呈现公开内容的背景。当前所称的发明人的工作在这一背景技术章节中描述该工作的程度上、以及该描述的可以在提交时未另外界定为现有技术的方面既未明确地也未暗示地承认为相对于本公开内容的现有技术。
数据存储系统可以包括各种可移除和不可移除的存储设备。存储设备可以包括易失性存储器设备和非易失性存储器设备、比如硬盘驱动(HDD)、光学存储驱动和具有快闪存储器的可移除固态驱动(SSD)。
存储设备的快闪存储器可以存储元数据。元数据可以包括逻辑到物理地址条目,这些条目用来将来自主机的逻辑地址转换成快闪存储器的物理地址。SSD的控制模块可以基于根据元数据确定的物理地址来访问快闪存储器中的位置。
在数据存储系统的操作期间,当从快闪存储器读取和/或向快闪存储器写入用户数据时更新并且在SSD的易失性存储器中存储元数据。当数据存储系统掉电时从易失性存储器向快闪存储器传送元数据。当数据存储系统恢复上电时向易失性存储器中重载向快闪存储器传送的元数据。这允许SSD维护在SSD的逻辑地址与物理地址之间的更新映射。
发明内容
提供一种系统并且该系统包括:第一存储器,被配置成存储具有第一元数据的第一查找表(LUT)。第二存储器,被配置成存储具有第二元数据的第二LUT,其中第一元数据包括在逻辑地址与物理地址之间的第一映射。第二元数据包括在逻辑地址与物理地址之间的第二映射。控制模块被配置成更新第一元数据。控制模块被配置成在各预定时间基于第一元数据更新第二元数据的分段。每个分段引用第二LUT的预定数目的条目。
在其它特征中,第一存储器包括易失性存储器。第二存储器包括非易失性存储器。在其它特征中,第二存储器被配置成存储第三元数据。第三元数据依赖于第一元数据或者第二元数据中的至少一个。控制模块被配置成在各预定时间中的每个预定时间更新第三元数据。
在其它特征中,第二存储器被配置成存储第三元数据。第三元数据依赖于第一元数据或者第二元数据中的至少一个。控制模块被配置成在与各预定时间不同的时间更新第三元数据。
在其它特征中,控制模块被配置成以预定间隔更新第三元数据。第三元数据依赖于第一元数据或者第二元数据中的至少一个。第三元数据包括用户数据的指针、系统数据的指针、存储器块中存储的数据量或者缺陷信息中的至少一个。在其它特征中,第三元数据依赖于第二LUT的时间相干版本。
在其它特征中,控制模块被配置成在第一存储器中更新第一元数据的一部分而同时在第二存储器中备份第一元数据的其它部分。在其它特征中,控制模块被配置成在所述第二存储器中备份所述第一LUT的第二分段的同时,向第二存储器写入用户数据、并且在第一存储器中更新第一LUT的第一分段。
在其它特征中,在通电事件期间,控制模块被配置成基于事件日志的条目更新第一存储器的分段,并且向第一存储器加载第二存储器的分段。事件日志的条目包括在系统的驱动丢失电源之前进行的、在物理地址和逻辑地址中的所选地址之间的元数据改变。
在其它特征中,控制模块被配置成:确定第一元数据的分段的冲刷时间;等待在冲刷事件之间的冲刷时段;以及通过从第一存储器向第二存储器复制第一元数据来在冲刷时间中的各冲刷时间冲刷第一元数据的分段。
在其它特征中,提供一种系统并且该系统包括:第一存储器,被配置成存储具有第一元数据的第一查找表(LUT)。第二存储器被配置成存储具有第二元数据的第二LUT。第一元数据包括在逻辑地址与物理地址之间的第一映射。第二元数据包括在逻辑地址与物理地址之间的第二映射。控制模块被配置成在通电事件期间向第一存储器上载第二存储器的分段,并且基于事件日志的条目更新第一存储器的分段。事件日志的条目包括在通电事件之前进行的在物理地址和逻辑地址中的所选地址之间的元数据改变。
在其它特征中,在通电事件期间并且当依赖于LUT的元数据未存储于第二存储器中时,控制模块被配置成从第二存储器向第一存储器上载至少全周期的分段。
在其它特征中,在通电事件期间并且当依赖于LUT的元数据存储于第二存储器中时,控制模块被配置成在从第二存储器向第一存储器上载依赖于LUT的元数据之前,从第二存储器向第一存储器上载至少全周期的分段。
在其它特征中,在通电事件期间,控制模块被配置成:确定系统的恰当掉电是否已经发生。当在系统的最后掉电事件之前向第二存储器冲刷第一LUT时发生恰当掉电。当系统的恰当掉电已经发生时,控制模块被配置成从第二存储器向第一存储器传送第二元数据,并且避免遍历事件日志。当系统的恰当掉电尚未发生时,控制模块被配置成从第二存储器向第一存储器传送第二元数据,并且遍历事件日志。
在其它特征中,控制模块被配置成在丢失固态驱动的电源的时间之前上载至少全冲刷周期的分段。从第二存储器向第一存储器上载至少全冲刷周期的分段。第一元数据包括至少全冲刷周期的分段。控制模块还被配置成从冲刷至少全冲刷周期的分段中的第一分段的时间到事件日志在丢失固态驱动的电源的时隙遍历事件日志以更新第一元数据。在丢失固态驱动的电源的时间之后执行通电事件。
在其它特征中,控制模块被配置成从第二存储器向第一存储器中上载分段。第一元数据包括上载的分段。上载的分段包括在依赖于LUT的元数据的冲刷事件之前和在事件日志在丢失固态驱动的电源的时隙之前的至少全冲刷周期的分段。控制模块被配置成从至少全冲刷周期的分段中的第一分段的时隙到事件日志在丢失固态驱动的电源时的时隙遍历事件日志以更新第一元数据。在丢失固态驱动的电源时的时间之后执行通电事件。
在其它特征中,在通电事件期间,控制模块被配置成:从第二存储器向第一存储器上载全周期的分段中的第一分段;从第一时隙到与固态驱动的掉电周期相关联的时隙遍历日志事件,包括加载并且基于事件日志的条目更新第一存储器中的全周期的分段;以及在从第一时隙到全周期的分段中的一个分段的时隙遍历事件日志之时,略过事件日志条目并且避免更新第一存储器中的与略过的事件日志条目相关联的条目。
本公开内容的更多适用领域将从具体实现、权利要求和附图中变得清楚。具体描述和具体示例仅旨在于示例而并非旨在于限制公开内容的范围。
附图说明
根据详细描述和附图,本公开内容将变得更为全面地理解,其中:
图1是根据本公开内容的数据存储系统的功能框图;
图2是图示了根据本公开内容的每个分配的时隙实现的全周期冲刷的查找表(LUT)状态图;
图3是图示了根据本公开内容的基于分段冲刷周期实现的LUT状态序列的LUT状态图;
图4是图示了根据本公开内容的用于分段冲刷周期实现的时间相干LUT时间的LUT状态图;
图5是图示了根据本公开内容的用于分段冲刷周期实现的同步的不依赖于LUT和依赖于LUT的元数据冲刷定时的LUT状态图;
图6是图示了根据本公开内容的用于分段冲刷周期实现的专用的依赖于LUT的元数据冲刷定时的LUT状态图;
图7图示了根据本公开内容的更新和备份LUT的方法;并且
图8图示了根据本公开内容的恢复LUT的方法。
具体实施方式
以下描述在性质上仅为示例并且决不旨在限制公开内容、其应用或者使用。为清楚起见,相同标号将在附图中用来标识相似要素。如这里所用,短语A、B和C中的至少一个应当解释为使用非排他逻辑或(non-exclusivelogicalOR)(A或B或C)。应当理解可以在不修改本公开内容的原理的情况下按不同顺序执行方法内的步骤。
如这里所用,术语模块可以指代以下各项、是以下各项的部分或者包括以下各项:专用集成电路(ASIC);电子电路;组合逻辑电路;现场可编程门阵列(FPGA);执行代码的(共享、专用或者组)处理器;提供描述的功能的其它适当部件;或者(诸如片上系统中)上述模块中的一些或者所有模块的组合。术语模块可以包括存储处理器执行的代码的(共享、专用或者组)存储器。
术语代码如上文所用可以包括软件、固件和/或微代码并且可以指代程序、例程、函数、类和/或其它对象。术语共享如上文所用意味着可以使用单个(共享)处理器来执行来自多个模块的一些或者所有代码。此外,单个(共享)存储器可以存储来自多个模块的一些或者所有代码。术语组如上文所用意味着可以使用处理器组来执行来自单个模块的一些或者所有代码。此外,可以使用存储器组来存储来自单个模块的一些或者所有代码。
一个或者多个处理器执行的一个或者多个计算机程序可以实现这里描述的装置和方法。计算机程序包括存储于非瞬态有形计算机可读介质上的处理器可执行指令。计算机程序也可以包括所存储的数据。非瞬态有形计算机可读介质的非限制示例为非易失性存储器、磁储存器和光学储存器。
固态驱动(SSD)可以使用查找表(LUT)以跟踪每个数据逻辑单元或者数据块在物理上存储于存储器中何处。LUT可以是具有由逻辑地址索引的物理位置的阵列或者其它适当数据分组。LUT可以用来在从存储器读取和/或向存储器写入时将逻辑地址转换成物理地址。可以在向物理位置写入更新(新)的数据之前使存储器的物理位置中的过时(旧)数据无效。当使过时数据无效并且向与过时数据相同的位置或者向新物理位置写入更新数据时修改LUT。
在存储器的每次写入操作期间,逻辑地址可以动态映射到物理地址。动态映射是指在写入操作期间向逻辑地址分配物理地址。每当向存储器写入数据时,在LUT中记录数据的逻辑地址和对应物理地址。由于动态映射,所以没有用于计算数据的物理位置的确定性方法。因而需要更新并且准确的LUT以访问先前存储的数据。
可以在易失性存储器中存储SSD的LUT并且当SSD上电(或者通电)时从易失性存储器访问SSD的LUT。出于性能目的(即,短访问时间)而在易失性存储器中存储LUT。可以在SSD掉电(或者断电)时从易失性存储器向非易失性存储器传送LUT。在SSD处于关断状态之前在非易失性存储器中存储LUT。
在SSD的操作期间,当丢失电源时可能丢失易失性存储器中存储的LUT的更新元数据。下文提供在丢失电源之前更新和维护LUT的备份的数据存储系统。另外,当丢失电源时,数据存储系统将LUT复原成在发生电源丢失之前的时间的状态。
在图1中,数据存储系统10包括主机12和SSD14。主机12可以是计算机、媒体播放器、移动电话、个人数字助理或者是包括SSD接口15的其它设备。SSD14可以连接到主机12和从主机12移除。例如SSD14可以是快闪驱动(flashdrive)。主机经由SSD接口访问SSD14的存储器。
SSD14包括固态系统16,该固态系统具有控制模块17、只读存储器(ROM)18、易失性存储器20和快闪(或者非易失性)存储器22。控制模块17执行SSD14的软件和固件的指令。例如控制模块17执行ROM18中存储的固件的指令。控制模块17也可以读取和执行易失性存储器20中存储的指令。例如易失性存储器20可以包括随机访问存储器(RAM)。
数据存储系统10也可以包括输入设备24、输出设备26和硬盘驱动(HDD)28。输入设备24可以包括键盘或者键区、鼠标、触屏、触板、麦克风和/或其它输入设备。输出设备26可以包括显示器、扬声器和/或其它输出设备。
数据存储系统10在SSD14中存储数据。SSD14可以仿真HDD(例如HDD28)。例如存储于HDD28中的数据也可以存储于SSD14中(即快闪存储器22中)。根据与物理分配地址(PAA)对应的逻辑分配地址(LAA)在快闪存储器22中存储数据。LAA是主机12用来指代快闪存储器22内的存储器位置的地址。PAA是快闪存储器22内的物理位置的地址并且由控制模块17用来访问物理位置。
控制模块17根据ROM18中存储的固件处理命令以读取和向快闪存储器22写入数据。例如当主机12向快闪存储器22的LAA写入用户数据时,控制模块17经由ROM18的固件选择对应PAA。控制模块17向PAA标识的快闪存储器22的位置存储用户数据并且在易失性存储器20中和/或在快闪存储器22中存储对应的元数据。元数据指示在LAA与对应PAA之间的关系或者映射。
元数据包括不依赖于LUT的元数据和依赖于LUT的元数据。不依赖于LUT的元数据包括具有LAA到PAA关联性的一个或者多个LUT。将LAA关联到PAA的主LUT50存储于易失性存储器20中。主LUT50的备份版本(被称为备份或者次LUT52)存储于快闪存储器22中。主LUT50关联快闪存储器22的每个LAA与分配的PAA。如果未向PAA分配特定LAA,则LAA可以与可识别无效PAA值关联。在使SSD14掉电之前从非易失性存储器20向快闪存储器22冲刷(flush)主LUT50。术语“冲刷”是指从易失性存储器20向快闪存储器22下载和保存LUT的至少部分。
提供在LAA与PAA之间的映射的元数据被称为不依赖于LUT的元数据。依赖于LUT的元数据是指如下元数据,该元数据依赖于不依赖于LUT的元数据。依赖于LUT的元数据也可以如各标号56、58标识的那样存储于易失性存储器20和快闪存储器22二者中。依赖于LUT的元数据56、58可以包括:指向用户数据和/或系统数据的指针;数据描述;缺陷信息;多少数据在存储器的块中(例如多少数据在快闪存储器22的块中)等。用户数据可以是指从主机12提供的并且存储于快闪存储器22中的数据。系统数据可以是指当执行ROM18中存储的固件时生成的数据。数据描述可以例如包括关于数据是用户数据还是系统数据的指示。缺陷信息可以包括缺陷在快闪存储器22的块内的位置。
在访问事件(读取事件或者写入事件)期间,主机12向控制模块17提供LAA以访问快闪存储器22中的位置。控制模块17访问主LUT50以将LAA转换成PAA。例如当读取命令请求与LAA关联的数据时,从对应的PAA实际取回数据。控制模块17然后在PAA处访问快闪存储器22。控制模块17可以例如当向快闪存储器22写入数据时向LAA分配未用PAA。更新主LUT50以反映LAA到PAA关联性。
在向快闪存储器22写入数据(例如用户数据)时更新易失性存储器20中存储的不依赖于LUT的元数据(主LUT50)。在数据存储系统10掉电之前,向快闪存储器22传送(冲刷)易失性存储器20中存储的元数据。冲刷的元数据可以包括依赖于LUT的元数据和不依赖于LUT的元数据。可以定期和/或在预定时间并且在使数据存储系统10和/或SSD14掉电之前执行元数据的冲刷。
备份LUT52和事件日志54用来在丢失电源之后加载和复原主LUT50。事件日志54可以存储于快闪存储器22中。事件日志是指随时间向LUT记录地址映射改变。例如主LUT50包括用于快闪存储器22的逻辑地址到物理地址的映射。在访问快闪存储器22的单元和/或块时,可以修改逻辑到物理的地址关联性。事件日志54用来跟踪随时间的地址映射改变并且可以用来在丢失电源(例如停电)的情况下恢复主LUT50的最新状态。事件日志54的每个条目可以与针对特定时间(或者时隙)的逻辑到物理地址映射的改变相关联。作为示例,事件日志54的条目可以包括逻辑地址和向该逻辑地址分配的物理地址。在图3和图4中示出了事件日志条目的示例。
可以基于预定备份时间、事件日志大小、加载时间和/或恢复(或者重建)时间要求调整元数据冲刷的频率。备份时间是指用于从易失性存储器20向快闪存储器22冲刷元数据(不依赖于LUT的元数据和/或依赖于LUT的元数据)的时间量。从易失性存储器20向快闪存储器22冲刷元数据越不频繁,为了恢复不依赖于LUT的元数据而需要的事件日志就越长。为了恢复主LUT50而需要的事件日志条目越多,主LUT50的恢复时间就越长。
事件日志54的大小可以例如是指快闪存储器22中存储的LAA到PAA映射改变条目的数目和/或专用于存储AA到PAA映射改变的一个或者多个数组(array)的长度。可以针对事件日志54分配快闪存储器22的部分。该部分的大小可以等于事件日志54的大小或者预定数目的事件日志条目以保证复原主LUT50。
加载时间可以是指用于在SSD14上电时从快闪存储器22向易失性存储器20传送元数据(不依赖于LUT的元数据和依赖于LUT的元数据)的时间。恢复时间可以包括加载时间和用于“遍历(walk)事件日志”的时间。短语“遍历事件日志”是指根据事件日志54中的条目更新易失性存储器20中的备份LUT52。这在下文更具体加以描述。
在SSD14的上电过程期间,从快闪存储器22向易失性存储器20传送(加载)不依赖于和依赖于LUT的元数据以建立在LAA与PAA之间的恰当更新的关联性。在SSD14的操作期间,在事件日志54中跟踪对易失性存储器20中存储的元数据的改变。更新快闪存储器22中存储的元数据以反映对易失性存储器20中存储的元数据的相同改变。对快闪存储器22中的元数据分段并且在预定时间而且在使SSD14断电之前更新该元数据。例如可以响应于元数据保存命令来更新快闪存储器22的元数据。可以根据ROM18的固件定期和/或在预定时间生成元数据保存命令。
在SSD14的掉电期间,控制模块17可以向快闪存储器22中冲刷包括主LUT50的整个易失性存储器20。在使SSD14上电时,控制模块17可以向易失性存储器20加载备份LUT52并且从备份LUT52的冲刷事件的时间到事件日志54中的最后条目遍历事件日志54以保证用最新改变更新备份LUT。
当在SSD14的操作期间意外丢失电源时,可能丢失对易失性存储器20中存储的元数据进行的改变。由于在SSD14断电之前未更新快闪存储器22中存储的元数据,所以快闪存储器22中的元数据可能未包括对主LUT50的最新改变。出于这一原因,快闪存储器22中的元数据的至少部分可能陈旧或者过时。在丢失电源之后的上电期间,可以从快闪存储器22向易失性存储器20传送旧元数据。这可能导致不恰当分配和取回快闪存储器22中的用户数据。为了纠正易失性存储器20中的元数据,控制模块14遍历事件日志54。在遍历事件日志54过程中,控制模块更新易失性存储器20中存储的元数据。
SSD14还可以包括上载定时器60。上载定时器60可以用来遍历事件日志54。上载定时器60可以在遍历事件日志54之时指代或者指向事件日志54的当前条目。这关于图8的方法进一步加以描述。
现在参照图1和图2,查找表(LUT)状态图100图示了每个分配时隙实现的全周期冲刷。“全周期冲刷”是指冲刷LUT的每个条目至少一次。LUT状态图100图示了主LUT50和事件日志54’在包括时隙1-14的各种时间的状态的示例。时间从时隙1到时隙14增加。针对时隙1-14中的每个时隙示出了主LUT50的状态的示例。示出了时隙11-14的条目作为如果在时隙10期间未丢失电源时的条目的示例。如果在时隙10期间丢失电源,则时隙11-14可能不存在。
示出了主LUT50包括6个条目104,但是主LUT50可以包括任何数目的条目。6个条目104中的每个条目具有关联的LAA和PAA。LAA由编号1-6代表并且在单列表106中被标识。将PAA示出为用于时隙1-14中的每个时隙的在主LUT50中的条目。例如将PAA示出为用于时隙1的1、2、7、4、5、6。类似地在时隙10,将PAA示出为10、14、15、16、5、13。在针对LAA更新PAA时,改变主LUT50中的对应条目以反映更新。例如在时隙2,用于第二LAA的PAA从2更新成8。
可以定期和/或在预定时间向快闪存储器22冲刷主LUT50的条目。可以在每个冲刷事件期间从易失性存储器20向快闪存储器22完全冲刷主LUT50。在图2中示出了三个冲刷事件A-C。
作为示例并且在上电时,可以用PAA1-6发起主LUT50。在时隙1,PAA3替换为用于LAA3的PAA7。接着,PAA8在时隙2替换用于LAA2的PAA2。可以针对时隙1-14中的每个时隙更新一个或者多个条目。在第一冲刷FLUSHA,主LUT具有PAA条目1、2、3、4、5、6。在第二冲刷FLUSHB,主LUT具有PAA条目10、8、12、9、5和11。在第三冲刷FLUSHC,主LUT具有PAA条目18、14、15、17、5和13。
如果例如在时隙10期间丢失电源(由虚线110标示),则可以在SSD14的下一次通电时复原主LUT50。可以从快闪存储器22向易失性存储器20上载主LUT的最后保存版本(10、8、12、9、5和11)。控制模块17可以从最后向时隙10保存主LUT50的时间起遍历事件日志54’以重建主LUT50。根据事件日志54’中的每个条目更新主LUT50。遍历事件日志54’的最终结果是具有在丢失电源时存在的条目(或者例如10、14、15、16、5、13)的主LUT。
在单个冲刷事件期间备份整个主LUT暂停主机12的操作。在对备份LUT50的更新期间暂停主机12向快闪存储器22的写入。暂停主机12以防止在冲刷主LUT50以更新整个备份LUT52之时修改主LUT50。控制模块17可以执行分段冲刷以最小化主机在冲刷事件期间暂停的时间量。关于图8示出和进一步描述分段冲刷的示例。
现在参照图1和图3,LUT状态图120图示了基于分段冲刷周期实现的LUT状态序列。分段冲刷是指在冲刷事件期间向备份LUT52冲刷主LUT50的部分。分段可以包括主LUT50的一个或者多个条目。主LUT50可以划分成任何数目的分段,并且可以调整更新每个分段的频率和顺序。
LUT状态图120图示了主LUT50在包括时隙1-14的各种时间的状态。将主LUT50示出为包括6个条目104。6个条目中的每个条目具有关联LAA和PAA。LAA由编号1-6代表并且在单列表106中被标识。针对时隙1-14中的每个时隙在主LUT50中示出了PAA。
图3的LUT状态图120除了LUT状态图120包括分段冲刷事件之外与图2的状态图100相似。每个分段冲刷事件如图所示包括向快闪存储器22冲刷主LUT50的1/3。在完成4个冲刷事件之后的图3的主LUT50与在完成2个冲刷事件之后的图2的主LUT50相同(即在图2的FLUSHB和图3的FLUSHD的主LUT条目是10、8、12、9、5、11)。
在相应时隙之间示出了分段冲刷事件FLUSHA-G。对于所示实现,针对每组两个时隙执行冲刷事件(或者每2个时隙1个冲刷事件)。在每个冲刷事件期间冲刷六个主LUT条目中的两个主LUT条目。例如在冲刷事件FLUSHA中冲刷具有LAA1、2和PAA1、2的分段。这提供快闪存储器中的冲刷分段的更新备份。
主LUT50的分段冲刷最小化在冲刷事件期间的瞬时主机性能减少。通过将全周期冲刷分解成若干更小大小或者分段冲刷事件,减少或者消除主机在每个冲刷事件期间暂停的时间量。也可以用更小冲刷分段并且在最小化主机性能减少之时维护平均主机吞吐量。使用图3的实现来冲刷每个分段的频率可以大于使用图2的实现来冲刷全周期或者整个LUT的频率。
可以在冲刷事件期间执行向未与冲刷的分段关联的逻辑和物理地址的主机写入请求。例如可以更新备份LUT52的部分而又向备份LUT的其它部分的LAA和/或PAA写入元数据并且向快闪存储器22写入用户数据。换而言之,可以向快闪存储器22的无如下对应备份LUT条目的LAA和/或对应PAA写入数据,这些对应备份LUT条目被冲刷事件更新。例如可以在冲刷事件FLUSHA期间向快闪存储器22的LAA和PAA3-6写入。
可以在冲刷分段之时暂停向与冲刷的分段关联的逻辑和物理地址的主机写入请求。防止主机12向快闪存储器22的在冲刷事件期间备份的LAA和/或PAA写入。这防止在备份LUT52中备份用于快闪存储器22的某些LAA和PAA的映射关联性之时向该LAA和PAA写入。
如果例如在时隙10丢失电源(由虚线110标示),则重建主LUT50。在下一通电事件期间基于备份LUT52和事件日志54’重建主LUT50。如果控制模块17从快闪存储器22向易失性存储器20上载保存的分段而未遍历事件日志54’,则所得LUT将是在不同时间的条目(例如用于FLUSHC、D、E的条目10、8、12、9、5、6)的组合。所得LUT不会是用于任何时隙的正确表示(即所得LUT不是时间相干的)。
不能在依赖于LUT的元数据的重建过程期间使用不是时间相干的LUT。为了解决这一问题,经由事件日志54’维护主LUT50的更新条目的历史和/或冲刷分段的历史。控制模块基于复原算法使用事件日志54’以将主LUT50重建成时间相干状态。在使用主LUT50以重建依赖于LUT的元数据之前将主LUT50更新成时间相干状态。复原算法可以存储于在快闪存储器22中并且在通电事件期间加载至易失性存储器20和/或存储于ROM18中。复原算法由控制模块17执行。
在主LUT50的重建期间,向易失性存储器20加载备份LUT52以提供主LUT50。由于在不同时隙冲刷备份LUT52的分段,所以分段代表LUT的不同部分在不同时间的状态。因而,主LUT50未在初始上载时的时间相干状态中。为了将主LUT50的状态改变成时间相干状态,控制模块17遍历事件日志54’以更新主LUT50的条目。事件日志54’可以存储于快闪存储器22中并且按照LAA到PAA关联性改变先前出现的顺序包括这些改变。根据事件日志54’、并且因此按照在丢失电源之前先前更新条目的顺序来改变主LUT50中的条目。事件日志54’中的每个条目包括用于特定LAA的新PAA。针对对应时隙在主LUT50的相应更新状态中示出了新PAA。
图2和图3示出了冲刷主LUT条目(或者不依赖于LUT的元数据)。除了不依赖于LUT的元数据之外,也可以在SSD14的操作期间冲刷依赖于LUT的元数据(或者随时间变化的元数据)。在图5和图6中示出了依赖于LUT的元数据冲刷事件的示例。也可以在丢失电源之后复原依赖于LUT的元数据并且包括遍历事件日志54’。
可以遍历事件日志54’以在易失性存储器20中建立时间相干LUT之后恢复依赖于LUT的元数据。通过确定用于开始遍历事件日志54’并且上载至少全周期分段的开始时间来建立时间相干LUT。控制模块17从开始时间遍历事件日志以在上载依赖于LUT的元数据之前在易失性存储器20中提供时间相干LUT。在当事件日志54’已经被遍历至少全周期分段的开始时间时的时间提供时间相干LUT。作为示例,开始时间可以与FLUSHC相关联。主LUT50可以在遍历事件日志至与FLUSHE相关联的时间之后在时间相干状态中。
在遍历事件日志54’之时,控制模块17基于事件日志54’中的条目和/或基于备份LUT52的分段更新主LUT50中的条目。按照的顺序先前在事件日志54’中更新条目的顺序更新主LUT50中的条目。一旦建立时间相干LUT,可以在建立时间相干LUT时的时间之后基于事件日志中的每个条目更新依赖于LUT的元数据。例如假设已经建立与FLUSHE的时间一样的时间相干LUT,控制模块17可以在FLUSHE之后遍历事件日志54’以修改主LUT条目和依赖于LUT的元数据。
现在参照图1和图4,LUT状态图150图示了用于分段冲刷周期实现的时间相干LUT时间。LUT状态图150图示了主LUT50在包括时隙1-14的各种时间的状态。示出了主LUT50为包括6个条目104,但是主LUT50可以包括任何数目的条目。6个条目104中的每个条目具有相关联的LAA和PAA。LAA由编号1-6代表并且在单列表106中被标识。
存在与分段LUT冲刷配合冲刷非依赖于LUT的元数据的若干方法。每种方法可以不同地影响主LUT50的重建过程。图4图示了为了提供时间相干LUT用于为具有六个条目的主LUT复原依赖于LUT的元数据而存储的最大数目的LUT分段和事件日志条目。
假设每隔一个冲刷事件全周期复原依赖于LUT的元数据一次(或者每5个分段冲刷大约一次),保存事件日志条目的至少5个分段冲刷事件(或者全周期中的分段数目的2倍减1)。换而言之,向快闪存储器22保存FLUSHA-E的分段,这包括在FLUSHA与FLUSHE之间的时隙期间的主LUT改变。也向快闪存储器存储器22保存在FLUSHA-E之后和在丢失电源时的时隙(即时隙10)之前的主LUT改变。存储5个分段条目可以视为用于具有3个分段的LUT表的“最坏情况”示例。分段条目数目可以基于何时最后冲刷依赖于LUT的元数据而少于5。
控制模块17可以使用重建算法和/或重建固件以往回引用FLUSHA作为用于开始遍历事件日志54’的起点。控制模块17可以从快闪存储器22向易失性存储器20上载用于FLUSHA的分段、然后从时隙1开始遍历事件日志54’以修改主LUT50中的条目。FLUSHA的时间从事件日志的末尾或者丢失电源时的时间起比两个全冲刷周期少一个分段。冲刷算法可以在SSD14的操作期间在快闪存储器22中存储比两个全周期少至少一个分段。冲刷算法可以存储于快闪存储器22中并且在通电事件期间上载至易失性存储器20和/或存储于ROM18中。
在加载用于FLUSHA的分段之后,控制模块17遍历事件日志54’以加载接下来的改变、比如在时隙1、2的LAA2、3到PAA8、7的地址改变关联性。然后上载用于FLUSHB的分段,继而针对在时隙4、3的LAA1、4到PAA10、9的地址改变关联性遍历事件日志54’。在加载分段并且基于事件日志54’执行对主LUT50的改变时,覆盖主LUT50(或者RAM)中的条目。为了完成全周期,覆盖主LUT50的用于FLUSHC的分段。在这一点(由虚线154标示),主LUT50是时间相干并且具有条目值10、8、7、9、5、6。
可以基于时间相干LUT复原依赖于LUT的元数据。可以基于始于FLUSHC的时间或者与FLUSHC相邻并且在FLUSHC之后的时隙的事件日志条目进一步更新依赖于LUT的元数据。可以通过例如从时隙5到时隙10遍历事件日志54’来更新依赖于LUT的元数据。
在遍历事件日志54’的其余部分以更新主LUT50之时可以不上载FLUSHD和E的分段。例如在与在FLUSHD和E之前的时隙(例如时隙2、3、4和6提供在FLUSHD和E中反映的改变)相关联地从事件日志54’获得与FLUSHD和E相关联的地址时可以不上载FLUSHD和E的分段。出于这一原因,加载FLUSHD和E的任务将在遍历事件日志54’时多余。
如果依赖于LUT的元数据不存在,则可以在通电事件期间保存和上载仅一个全冲刷周期的分段。例如即使在时隙10丢失电源时仍然可以先前存储并且在通电事件期间上载FLUSHC、D和E。这提供用于重建主LUT的全周期冲刷分段。当依赖于LUT的元数据未存在时无需在FLUSH分段C之前的冲刷分段(FLUSHA、B)。
现在参照图1和图5,LUT状态图160图示了用于分段冲刷周期实现的同步的非依赖于LUT和依赖于LUT的元数据冲刷定时。LUT状态图160图示了主LUT50在包括时隙1-14的各种时间的状态。示出了主LUT50为包括6个条目104。6个条目104中的每个条目具有关联LAA和PAA。LAA由编号106代表并且在单列表106中被标识。
在每个分段冲刷事件期间冲刷依赖于LUT的元数据(由框162代表)。通过在每个冲刷事件期间冲刷依赖于LUT的元数据,控制模块17能够通过在主LUT50的恢复期间往回引用仅一个全冲刷周期的分段来提供时间相干LUT。由于依赖于LUT的元数据在例如FLUSHE分段的时间可用,所以可以建立时间相干LUT。可以通过加载FLUSHC至FLUSHE的分段并且从FLUSHC到事件日志54’的末尾(或者到与丢失电源相关联的事件日志条目)遍历事件日志54’来建立时间相干LUT。
现在参照图1和图6,LUT状态图170图示了用于分段冲刷周期实现的专用的依赖元数据冲刷定时。LUT状态图170图示了主LUT50在包括时隙1-14的各种时间的状态。将主LUT50示出为包括6个条目104。6个条目104中的每个条目具有关联LAA和PAA。LAA由编号1-6代表并且在单列表106中被标识。
图6的实现包括在专用时间冲刷依赖于LUT的元数据,这由框172代表。可以在未冲刷主LUT50(或者不依赖于LUT的元数据)的某些LAA到PAA地址关联性(例如在行3-6中和在时隙6的关联性)时以及在冲刷主LUT50的其它LAA到PAA地址关联性(例如在行1和2中以及在时隙6的关联性)时冲刷依赖于LUT的元数据。作为备选,不依赖于LUT的元数据和依赖于LUT的元数据可以具有各自的冲刷时间。作为示例,可以在冲刷依赖于LUT的元数据之前或者之后冲刷不依赖于LUT的元数据。提供用于非依赖于LUT的元数据和依赖于LUT的元数据的专用冲刷时间减少用于执行每个冲刷的时间量。
在所示实现中,使用重建算法的控制模块17开始从FLUSHA的分段重建主LUT50以便建立截至FLUSHD的依赖于LUT的元数据。这提供了时间相干的LUT以重建食欲依赖于LUT的元数据。FLUSHD引用依赖于LUT的元数据自从电源(或者电源周期)丢失起的最近冲刷。
作为另一备选实现,当依赖于LUT的元数据存在于快闪存储器22中时,可以在相同时间段期间和/或同时上载FLUSHA-C的分段。可以始于FLUSHA的时间并且在上载FLUSHA-C的分段之后遍历事件日志54’。虽然主LUT在上载FLUSHA-C的分段时初始并不准确,但是遍历事件日志54’的动作提供始于FLUSHC的时间的时间相干LUT并且纠正主LUT50的条目以提供在时隙10的复原LUT。如上文描述的那样,事件日志54’包括用于特定时间的逻辑到物理地址映射改变。遍历事件日志包括用事件日志54’中的条目更新(或者替换)主LUT50中的条目。可以基于主LUT50中的更新条目来更新依赖于LUT的元数据的值。更新的值可以包括:指向用户数据和/或系统数据的指针;数据描述符;缺陷信息;多少数据在存储器块中等。
作为用于节省时间和资源的另一实现,可以在重建主LUT50时略过事件日志的条目。例如在图6中,在上载FLUSHA的分段之后,可以略过在时隙1的改变。由于通过上载用于FLUSHB的分段来覆写用于LAA3的从3到7的PAA改变,所以可以略过与时隙1相关联的改变。作为另一示例,可以略过所标出区域180中的分段,因为FLUSHB和FLUSHC考虑这些分段。
不可以略过在丢失电源之前和在最后冲刷依赖于LUT的元数据时的时间之后更新的事件日志条目。例如不可以略过在时隙7-10期间更新的事件日志条目,因为可以在时隙7-10中的每个时隙期间基于对主LUT50的改变来更新依赖于LUT的元数据。如果将略过这些事件日志条目之一,则所得到的依赖于LUT的元数据可能没有反映所有改变并且作为结果并不准确。
可以使用许多方法来操作图1的数据存储系统10,图7和图8提供示例方法。在图7中,示出了一种更新和备份LUT的方法。虽然主要关于图1和图5-6的实现描述以下任务,但是可以容易修改任务以适用于本公开内容的其它实现。可以迭代地执行任务。该方法可以始于200。
在204,控制模块17确定LUT冲刷时间。LUT冲刷时间可以是用于向备份LUT52冲刷主LUT50的分段的下一时间。控制模块17可以基于定期冲刷间隔或者冲刷时段确定冲刷时间。冲刷时段是指在分段冲刷事件之间的时间。可以基于全冲刷周期中的LUT分段的数目、启动恢复时间、最大主机延时时间等确定冲刷时间和/或冲刷时段。
启动恢复时间是指用于在丢失电源之后以及在通电事件期间恢复主LUT50的时间。冲刷时段越长,就越多条目保存于事件日志54中以恢复主LUT50。进行处理以恢复主LUT50的事件日志54的条目越多,启动恢复时间就越长。另外,冲刷时段越长,就越不频繁执行冲刷。越不频繁执行冲刷,在单个冲刷事件期间就冲刷主LUT50的越多条目和/或处理事件日志54的越多条目以恢复主LUT50。在单个冲刷事件期间冲刷主LUT50的越多条目,可能在冲刷事件期间经历越长主机延时时间(或者主机暂停的时间)。
在204,也可以确定依赖于LUT的元数据的冲刷时间和/或冲刷时段。可以基于不依赖于LUT的元数据的冲刷时间和/或冲刷时段确定依赖于LUT的元数据的冲刷时间和/或冲刷时段。例如可以设置依赖于LUT的元数据的冲刷时间与不依赖于LUT的元数据的冲刷时间相同或者不同。
在206,控制模块17可以在继续任务208之前等待不依赖于LUT的元数据的冲刷时段和/或依赖于LUT的元数据的冲刷时段。在208,控制模块17可以确定用于冲刷的一个或者多个LUT分段和/或是否冲刷依赖于LUT的元数据。控制模块17可以按照预定顺序在主LUT50的分段内循环并且基于先前冲刷的分段确定下一冲刷分段。
在210,控制模块17冲刷所选分段和/或依赖于LUT的元数据。如图5中所示,可以在冲刷不依赖于LUT的元数据时冲刷依赖于LUT的元数据。在212并且基于图6的实现,控制模块17确定是否已经冲刷主LUT50的所有分段。当已经冲刷所有分段时执行任务214,否则执行任务220。
在任务214,控制模块17确定是否存在待冲刷的依赖于LUT的元数据。当存在待冲刷的依赖于LUT的元数据时执行任务216,否则执行任务220。在216,控制模块17可以在执行任务218之前等待依赖于LUT的元数据的冲刷时段。在任务218,冲刷依赖于LUT的元数据。
在220,控制模块17确定是否存在掉电请求。当接收掉电请求时执行任务222,否则控制模块17可以返回到任务204。在222,从易失性存储器20向快闪存储器22冲刷所有LUT分段以在掉电事件之前更新备份LUT52。在224,使SSD14断电。该方法可以结束于226。
在图8中,示出了一种恢复LUT的方法。虽然主要关于图1和图5-6的实现描述以下任务,但是可以容易修改任务以适用于本公开内容的其它实现。可以迭代地执行任务。该方法可以始于300。
在302,使SSD14通电。在304,控制模块17确定SSD14是否恰当掉电。当在SSD14掉电之前向快闪存储器52冲刷(下载)整个主要LUT50并且在下载之后未对主LUT进行改变时使SSD14恰当掉电。控制模块17可以基于如与备份LUT52中的条目相比的、在事件日志54中的条目来确定恰当掉电已经发生。例如,如果在备份LUT52中反映事件日志54中的最后预定数目的条目(例如与全周期冲刷分段关联的条目数目),则SSD14的恰当掉电已经发生。当SSD14恰当掉电时执行任务306,否则执行任务310。
在306,控制模块17从快闪存储器22向易失性存储器20上载所有不依赖于LUT的元数据和依赖于LUT的元数据。该方法可以结束于308。
在310,控制模块17确定是否存在依赖于LUT的元数据。当不存在依赖于LUT的元数据时执行任务312,否则执行任务320。
在312,控制模块17加载备份LUT52的第一分段并且从最后冲刷第一(上载的)分段时的时间开始遍历事件日志54。第一分段是在事件日志54的末尾之前至少全冲刷周期的分段。在313,可以设置和使用加载定时器60以指向事件日志54的当前条目。加载定时器60的初始加载时间可以对应于第一分段的时间和/或与第一分段相邻并且在第一分段之后的时隙。
在314,针对加载时间并且基于事件日志54更新主LUT50中的逻辑到物理地址关联性和/或从快闪存储器22向易失性存储器20上载下一LUT分段。在316,控制模块17确定是否已经到达事件日志54的末尾。如果尚未到达事件日志54的末尾,则执行任务317,否则该方法可以结束于318。在317,可以递增上载时间以引用冲刷分段的下一时隙或者时间。
在任务320,控制模块17确定在丢失电源之前最后冲刷依赖于LUT的元数据时的时间(或者时隙)。这一时间可以称为最后依赖元数据时隙。在322,控制模块17确定在最后依赖元数据时隙之前至少全冲刷周期的时隙。这一时隙可以称为全冲刷周期时隙。
在324,控制模块17可以上载在全冲刷周期时隙之前的第一分段并且在全冲刷周期时隙开始遍历事件日志54。在325,可以设置和使用上载定时器60以指向事件日志54的当前条目。上载定时器60的初始上载时间可以对应于第一分段的时间和/或与第一分段相邻并且在第一分段之后的时隙。在326,针对上载时间并且基于事件日志54更新主LUT50中的逻辑到物理地址关联性和/或从快闪存储器22向易失性存储器20上载下一LUT分段。
在328,控制模块17确定是否加载全周期分段。当未加载全周期分段时执行任务327,否则执行任务320。当已经加载全冲刷周期分段并且控制模块17已经从全周期分段中的第一分段到最后分段遍历事件日志54时,时间相干LUT存在于易失性存储器20中。例如在图6中,第一分段可以与FLUSHA相关联,并且最后分段可以与FLUSHC相关联。从FLUSHA的时间到FLUSHC的时间遍历事件日志54而获得的主LUT50是时间相干LUT。
在330,基于时间相干LUT上载依赖于LUT的元数据。在332,控制模块17确定是否已经到达事件日志54的末尾。当尚未到达事件日志54的末尾时执行任务334,否则该方法可以结束于336。在334,控制模块17基于事件日志54更新主LUT50中的逻辑-物理地址关联性和/或基于事件日志54更新依赖于LUT的元数据。在335,递增上载定时器60。
图7和图8的上文描述的任务是为了作为说明性示例;可以根据应用而依序、同步、同时、连续、在重叠时间段期间或者按照不同顺序执行任务。
上文描述的实现提供RAM中存储的LUT。可能在丢失电源时擦除和/或丢失LUT的数据。为了复原LUT的数据,上文描述的方式在非易失性存储器中维护备份LUT和事件日志。可以在丢失电源之前定期更新备份LUT。基于备份LUT和事件日志在RAM中复原LUT。通过遍历事件日志在RAM中将LUT复原成LUT在丢失电源之前的最新状态。这在备份NUT的同时最小化与向非易失性存储器写入数据关联的主机延时时间。除了备份和复原LUT之外,也备份和复原其它元数据(即依赖于LUT的元数据)。
可以用多种形式实施公开内容的广义教导。因此,尽管本公开内容包括具体示例,但是不应这样限制公开内容的真实范围,因为其它修改将在研读附图、说明书和所附权利要求时变得清楚。

Claims (17)

1.一种系统,包括:
第一存储器,被配置成存储具有第一元数据的第一查找表(LUT);
第二存储器,被配置成存储(i)具有第二元数据的第二LUT,以及(ii)第三元数据,其中所述第一元数据包括在逻辑地址与物理地址之间的第一映射,其中所述第二元数据包括在所述逻辑地址与所述物理地址之间的第二映射,并且其中所述第三元数据依赖于所述第一元数据或者所述第二元数据;以及
控制模块,被配置成:
更新所述第一元数据,
在各预定时间基于所述第一元数据更新所述第二元数据的分段,其中所述第二元数据的所述分段中的每个分段引用所述第二LUT中的预定数目的条目;
在与所述各预定时间不同的时间更新所述第三元数据,
确定所述第二存储器是否最后被恰当掉电,
如果所述第二存储器没有最后被恰当掉电,则确定依赖于LUT的元数据是否被存储在所述第二存储器中,
在从所述第二存储器向所述第一存储器上载第一分段之后设置上载定时器,
基于所述上载定时器的时间,在所述第一LUT中更新逻辑-物理地址关联性或者从所述第二存储器向所述第一存储器上载下一分段,
如果存在在所述第二存储器中存储的依赖于LUT的元数据,则
如果分段的全冲刷周期还没有被上载则递增所述上载定时器,并且
如果分段的全冲刷周期已经被上载则基于所述第一LUT来上载所述依赖于LUT的元数据,以及
如果依赖于LUT的元数据并未存储在所述第二存储器中,则如果尚未达到事件日志的末端则递增所述上载定时器。
2.根据权利要求1所述的系统,其中:
所述第一存储器包括易失性存储器;并且
所述第二存储器包括非易失性存储器。
3.根据权利要求1所述的系统,其中所述第三元数据包括用户数据的指针、系统数据的指针、存储器块中存储的数据量或者缺陷信息中的至少一个。
4.根据权利要求3所述的系统,其中所述第三元数据依赖于所述第二LUT的时间相干版本。
5.根据权利要求3所述的系统,其中所述控制模块被配置成基于何时更新所述第二元数据来更新所述第三元数据。
6.根据权利要求1所述的系统,其中所述控制模块被配置成在所述第一存储器中更新所述第一元数据的一部分而同时在所述第二存储器中备份所述第一元数据的其它部分。
7.根据权利要求1所述的系统,其中所述控制模块被配置成当在所述第二存储器中备份所述第一LUT的第二分段的同时,向所述第二存储器写入用户数据、并且在所述第一存储器中更新所述第一LUT的第一分段。
8.根据权利要求1所述的系统,其中在通电事件期间,所述控制模块被配置成基于所述事件日志的条目更新所述第一存储器的分段,并且向所述第一存储器上载所述第二存储器的分段,其中所述事件日志的所述条目包括在所述系统的驱动丢失电源之前进行的、在所述物理地址和所述逻辑地址中的所选地址之间的元数据改变。
9.根据权利要求1所述的系统,其中所述控制模块被配置成:
确定所述第一元数据的分段的冲刷时间;
等待在冲刷事件之间的冲刷时段;以及
通过从所述第一存储器向所述第二存储器复制所述第一元数据来在所述冲刷时间中的各冲刷时间冲刷所述第一元数据的所述分段。
10.一种系统,包括:
第一存储器,被配置成存储具有第一元数据的第一查找表(LUT);
第二存储器,被配置成存储具有第二元数据的第二LUT,其中所述第一元数据包括在逻辑地址与物理地址之间的第一映射,并且其中所述第二元数据包括在所述逻辑地址与所述物理地址之间的第二映射;以及
控制模块,被配置成在通电事件期间向所述第一存储器上载所述第二存储器的分段,并且基于事件日志的条目更新所述第一存储器的分段,其中所述事件日志的所述条目包括在所述通电事件之前进行的在所述物理地址和所述逻辑地址中的所选地址之间的元数据改变;
其中,
在所述通电事件期间并且当依赖于LUT的元数据存储于所述第二存储器中时,所述控制模块被配置成在从所述第二存储器向所述第一存储器上载所述依赖于LUT的元数据之前,从所述第二存储器向所述第一存储器上载至少全周期的所述分段,
所述控制模块被配置为:
确定所述第二存储器是否最后被恰当掉电,
如果所述第二存储器没有最后被恰当掉电,则确定依赖于LUT的元数据是否被存储在所述第二存储器中,
在从所述第二存储器向所述第一存储器上载第一分段之后设置上载定时器,
基于所述上载定时器的时间,在所述第一LUT中更新逻辑-物理地址关联性或者从所述第二存储器向所述第一存储器上载下一分段,
如果存在在所述第二存储器中存储的依赖于LUT的元数据,则
如果分段的全冲刷周期还没有被上载则递增所述上载定时器,并且
如果分段的全冲刷周期已经被上载则基于所述第一LUT来上载所述依赖于LUT的元数据,以及
如果依赖于LUT的元数据并未存储在所述第二存储器中,则如果尚未达到事件日志的末端则递增所述上载定时器。
11.根据权利要求10所述的系统,其中在所述通电事件期间并且当依赖于LUT的元数据未存储于所述第二存储器中时,所述控制模块被配置成从所述第二存储器向所述第一存储器上载至少全周期的所述分段。
12.根据权利要求10所述的系统,其中在所述通电事件期间,所述控制模块被配置成:
确定所述系统的恰当掉电是否已经发生,其中当在所述系统的最后掉电事件之前向所述第二存储器冲刷所述第一LUT时发生恰当掉电;
当所述系统的恰当掉电已经发生时,从所述第二存储器向所述第一存储器传送所述第二元数据,并且避免遍历所述事件日志;并且
当所述系统的恰当掉电尚未发生时,从所述第二存储器向所述第一存储器传送所述第二元数据,并且遍历所述事件日志。
13.根据权利要求10所述的系统,其中所述控制模块被配置成:
在丢失固态驱动的电源的时间之前上载至少全冲刷周期的所述分段,其中从所述第二存储器向所述第一存储器上载所述至少全冲刷周期的所述分段,并且其中所述第一元数据包括所述至少全冲刷周期的所述分段;以及
从冲刷所述至少全冲刷周期的所述分段中的第一分段的时间到所述事件日志在丢失所述固态驱动的所述电源的时隙遍历所述事件日志以更新所述第一元数据,
其中在丢失所述固态驱动的所述电源的所述时间之后执行所述通电事件。
14.根据权利要求10所述的系统,其中所述控制模块被配置成:
从所述第二存储器向所述第一存储器中上载所述分段,其中所述第一元数据包括所述上载的分段,其中所述上载的分段包括在依赖于LUT的元数据的冲刷事件之前和在所述事件日志在丢失固态驱动的电源的时隙之前的至少全冲刷周期的所述上载的分段;以及
从所述至少全冲刷周期的所述分段中的第一分段的时隙到所述事件日志在丢失所述固态驱动的所述电源的所述时隙遍历所述事件日志以更新所述第一元数据,
其中在丢失所述固态驱动的所述电源的所述时间之后执行所述通电事件。
15.根据权利要求10所述的系统,其中在所述通电事件期间,所述控制模块被配置成:
从所述第二存储器向所述第一存储器中上载全周期的所述分段中的第一分段;
从第一时隙到与固态驱动的掉电周期相关联的时隙遍历所述日志事件,包括加载并且基于所述事件日志的条目更新所述第一存储器中的所述全周期的所述分段;以及
在从所述第一时隙到所述全周期的所述分段中的一个分段的时隙遍历所述事件日志的同时,略过事件日志条目并且避免更新所述第一存储器中的与所述略过的事件日志条目相关联的条目。
16.一种方法,包括:
在第一存储器中存储具有第一元数据的第一查找表(LUT);
在第二存储器中存储具有第二元数据的第二LUT,其中所述第一元数据包括在逻辑地址与物理地址之间的第一映射,并且其中所述第二元数据包括在所述逻辑地址与所述物理地址之间的第二映射;
经由控制模块更新所述第一元数据,其中所述更新包括在各预定时间基于所述第一元数据更新所述第二元数据的分段,并且其中所述分段中的每个分段引用所述第二LUT的预定数目的条目;
从所述第二存储器向所述第一存储器中上载所述分段,其中所述第一元数据包括所述上载的分段,并且其中所述上载的分段包括在依赖于LUT的元数据的冲刷事件之前的至少全冲刷周期的所述上载的分段;
确定所述第二存储器是否最后被恰当掉电,
如果所述第二存储器没有最后被恰当掉电,则确定依赖于LUT的元数据是否被存储在所述第二存储器中,
在从所述第二存储器向所述第一存储器上载第一分段之后设置上载定时器,
基于所述上载定时器的时间,在所述第一LUT中更新逻辑-物理地址关联性或者从所述第二存储器向所述第一存储器上载下一分段,
如果存在在所述第二存储器中存储的依赖于LUT的元数据,则
如果分段的全冲刷周期还没有被上载则递增所述上载定时器,并且
如果分段的全冲刷周期已经被上载则基于所述第一LUT来上载所述依赖于LUT的元数据,以及
如果依赖于LUT的元数据并未存储在所述第二存储器中,则如果尚未达到事件日志的末端则递增所述上载定时器。
17.根据权利要求16所述的方法,其中:
在所述第二存储器中存储第三元数据,其中所述第三元数据依赖于所述第一元数据或者所述第二元数据中的至少一个;以及
在所述各预定时间中的每个预定时间更新所述第三元数据。
CN201180031597.0A 2010-05-25 2011-05-19 存储器访问表保存和复原系统及方法 Expired - Fee Related CN102971717B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US34791910P 2010-05-25 2010-05-25
US61/347,919 2010-05-25
US13/110,517 2011-05-18
US13/110,517 US8886870B2 (en) 2010-05-25 2011-05-18 Memory access table saving and restoring system and methods
PCT/US2011/037164 WO2011149760A1 (en) 2010-05-25 2011-05-19 Memory access table saving and restoring system and methods

Publications (2)

Publication Number Publication Date
CN102971717A CN102971717A (zh) 2013-03-13
CN102971717B true CN102971717B (zh) 2015-12-16

Family

ID=44529868

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180031597.0A Expired - Fee Related CN102971717B (zh) 2010-05-25 2011-05-19 存储器访问表保存和复原系统及方法

Country Status (6)

Country Link
US (2) US8886870B2 (zh)
EP (1) EP2577471A1 (zh)
JP (1) JP5850048B2 (zh)
KR (1) KR101759690B1 (zh)
CN (1) CN102971717B (zh)
WO (1) WO2011149760A1 (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9128949B2 (en) 2012-01-18 2015-09-08 Cloudera, Inc. Memory allocation buffer for reduction of heap fragmentation
US9977612B1 (en) * 2012-05-11 2018-05-22 Western Digital Technologies, Inc. System data management using garbage collection and logs
US9037820B2 (en) 2012-06-29 2015-05-19 Intel Corporation Optimized context drop for a solid state drive (SSD)
US9524800B2 (en) 2012-09-26 2016-12-20 International Business Machines Corporation Performance evaluation of solid state memory device
US20140244897A1 (en) * 2013-02-26 2014-08-28 Seagate Technology Llc Metadata Update Management In a Multi-Tiered Memory
US9454474B2 (en) 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
CN104111872B (zh) * 2013-04-19 2016-02-17 腾讯科技(深圳)有限公司 系统事件的过滤方法、装置及终端
CN103399826B (zh) * 2013-08-15 2016-01-06 南京新联电子股份有限公司 一种基于nor flash的数据存储方法
JP2015219839A (ja) * 2014-05-20 2015-12-07 株式会社東芝 半導体メモリ装置、メモリコントローラの制御方法、及びメモリコントローラ
US11093562B2 (en) * 2014-08-04 2021-08-17 Ent. Services Development Corporation Lp Event stream processing
KR20170073792A (ko) * 2015-12-18 2017-06-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10162561B2 (en) 2016-03-21 2018-12-25 Apple Inc. Managing backup of logical-to-physical translation information to control boot-time and write amplification
KR102641107B1 (ko) 2016-07-29 2024-02-27 삼성전자주식회사 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
US20180095788A1 (en) 2016-10-04 2018-04-05 Pure Storage, Inc. Scheduling operations for a storage device
KR20180041898A (ko) * 2016-10-17 2018-04-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10853233B2 (en) 2016-10-18 2020-12-01 Toshiba Memory Corporation Reconstruction of address mapping in a host of a storage system
TWI591533B (zh) * 2016-11-25 2017-07-11 慧榮科技股份有限公司 可用於資料儲存裝置之資料儲存方法與資料回復程序、以及採用這些方法的資料儲存裝置
US10198354B2 (en) * 2017-03-21 2019-02-05 Intel Corporation Apparatus, system, and method to flush modified data from a volatile memory to a persistent second memory
KR20180128588A (ko) * 2017-05-24 2018-12-04 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
KR102234725B1 (ko) * 2017-05-30 2021-04-02 에스케이하이닉스 주식회사 컨트롤러 및 메모리 시스템 및 메모리 시스템의 동작 방법
CN107329909B (zh) * 2017-06-27 2020-07-07 郑州云海信息技术有限公司 一种数据管理方法及装置
CN108182154A (zh) * 2017-12-22 2018-06-19 深圳大普微电子科技有限公司 一种基于固态硬盘的日志文件的读写方法及固态硬盘
US10628051B2 (en) * 2018-07-13 2020-04-21 Seagate Technology Llc Reducing a data storage device boot time
CN109213690A (zh) * 2018-09-21 2019-01-15 浪潮电子信息产业股份有限公司 一种l2p表的重建方法及相关装置
KR102605566B1 (ko) * 2018-11-22 2023-11-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11086737B2 (en) * 2019-01-16 2021-08-10 Western Digital Technologies, Inc. Non-volatile storage system with rapid recovery from ungraceful shutdown
KR20210000414A (ko) * 2019-06-25 2021-01-05 에스케이하이닉스 주식회사 메모리 시스템
US11474865B2 (en) * 2019-08-23 2022-10-18 Micron Technology, Inc. Allocation schema for a scalable memory area
US11093317B1 (en) * 2020-01-27 2021-08-17 EMC IP Holding Company LLC Managing uncorrectable user data
US11409608B2 (en) * 2020-12-29 2022-08-09 Advanced Micro Devices, Inc. Providing host-based error detection capabilities in a remote execution device
KR20220124905A (ko) 2021-03-04 2022-09-14 삼성전자주식회사 메모리 저장 장치, 메모리 저장 장치의 구동 방법 및 호스트 장치의 구동 방법
US11720490B2 (en) * 2021-08-31 2023-08-08 Micron Technology, Inc. Managing host input/output in a memory system executing a table flush

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192195A (zh) * 2006-11-22 2008-06-04 北京华旗资讯数码科技有限公司 电子硬盘的存储空间的分组管理方法
CN101558392A (zh) * 2006-12-11 2009-10-14 马维尔国际贸易有限公司 混合非易失性固态存储器系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325531A (en) * 1989-06-30 1994-06-28 Digital Equipment Corporation Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines
US5802572A (en) * 1996-03-15 1998-09-01 International Business Machines Corporation Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache
US6691203B1 (en) * 2000-08-30 2004-02-10 Mosel Vitelic Corporation Integrated controller to process both optical reads and optical writes of multiple optical media
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US8244958B2 (en) 2005-05-09 2012-08-14 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
JP2008009527A (ja) 2006-06-27 2008-01-17 Toshiba Corp メモリシステム
JP4967680B2 (ja) * 2007-01-23 2012-07-04 ソニー株式会社 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
JP4301301B2 (ja) * 2007-02-05 2009-07-22 ソニー株式会社 不揮発性半導体記憶装置およびその管理方法
WO2008106686A1 (en) 2007-03-01 2008-09-04 Douglas Dumitru Fast block device and methodology
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8572309B2 (en) * 2009-03-12 2013-10-29 Marvell World Trade Ltd. Apparatus and method to protect metadata against unexpected power down
US11051711B2 (en) 2016-04-22 2021-07-06 New York University Noninvasive determination of electrical properties of tissues and materials using magnetic resonance measurements

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192195A (zh) * 2006-11-22 2008-06-04 北京华旗资讯数码科技有限公司 电子硬盘的存储空间的分组管理方法
CN101558392A (zh) * 2006-12-11 2009-10-14 马维尔国际贸易有限公司 混合非易失性固态存储器系统

Also Published As

Publication number Publication date
WO2011149760A4 (en) 2012-01-19
US20110296123A1 (en) 2011-12-01
US20150143174A1 (en) 2015-05-21
KR101759690B1 (ko) 2017-07-19
KR20130111228A (ko) 2013-10-10
US8886870B2 (en) 2014-11-11
JP5850048B2 (ja) 2016-02-03
CN102971717A (zh) 2013-03-13
WO2011149760A1 (en) 2011-12-01
US9639423B2 (en) 2017-05-02
EP2577471A1 (en) 2013-04-10
JP2013530455A (ja) 2013-07-25

Similar Documents

Publication Publication Date Title
CN102971717B (zh) 存储器访问表保存和复原系统及方法
JP5696118B2 (ja) 不揮発性メモリシステムのためのウィーブシーケンスカウンタ
TWI590049B (zh) 記憶體裝置與其操作方法
US9569518B2 (en) Efficiently storing and retrieving data and metadata
US8078908B2 (en) Data storage device and method
EP2329366B1 (en) Performing a pre-update on a non volatile memory
JP4996073B2 (ja) 世代別ガベージコレクションプログラム
CN105122220A (zh) 固态驱动器中的原子写入命令支持
JP6013626B2 (ja) 不揮発性メモリ書込み機構
JP2019512116A (ja) フラッシュメモリデバイスをリフレッシュする方法および装置
WO2007072317A2 (en) Non-volatile memory with block erasable locations
CN105260270A (zh) 一种Flash存储空间的动态恢复方法及装置
CN103164342A (zh) 数据可用性的挂载时协调
EP2174320A2 (en) Input/output control method and apparatus optimized for flash memory
CN108170614B (zh) 一种避免数据重复回收的方法、装置及固态硬盘
CN104516959A (zh) 一种管理数据库日志的方法及装置
JP2009205689A (ja) フラッシュディスク装置
KR101456104B1 (ko) 비휘발성 메모리를 위한 듀얼 버퍼링 파일 관리 방법, 파일 관리 시스템 및 대용량 저장 장치
US10025639B2 (en) Energy efficient supercomputer job allocation
JP5521437B2 (ja) 携帯端末装置、ソフトウェア更新方法及びプログラム

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20151216

Termination date: 20180519

CF01 Termination of patent right due to non-payment of annual fee