CN103392207B - 非易失性存储的自身日志记录和层级一致性 - Google Patents
非易失性存储的自身日志记录和层级一致性 Download PDFInfo
- Publication number
- CN103392207B CN103392207B CN201280009888.4A CN201280009888A CN103392207B CN 103392207 B CN103392207 B CN 103392207B CN 201280009888 A CN201280009888 A CN 201280009888A CN 103392207 B CN103392207 B CN 103392207B
- Authority
- CN
- China
- Prior art keywords
- data
- write
- cell
- timestamp
- interface
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
具有非易失性存储器(NVM)的非易失性存储系统提供自身日志记录和层级一致性,从而启动低延迟恢复和强制单元访问握手。主机地址和NVM中的地址之间的映射经由一个或多个映射条目来维持,从而启用对写入至NVM的主机数据的位置。NVM中存储的对象包括足够信息以恢复仅在对象本身内的对象。NVM以一个或多个数据流、映射流和检查点流的形式来管理。主机数据被写入数据流,映射条目被写入映射流,而映射条目和其他数据结构的检查点被写入检查点流。嵌入流中的时间标记使得能够在恢复期间确定流的所选部分彼此不一致且将被丢弃。
Description
相关申请的交叉引用
在所附的申请数据表、请求书和传送信(视情况,如果有的话)中提出了对该申请的优先权要求。在即时申请的类型所允许的范围内,本申请为了所有目的通过引用而合并了以下申请,这些以下申请全部由在提出本发明时的即时申请共有:
于2011年10月5日提交的美国临时申请(案号为SF-10-06,并且序列号为61/543,707),第一署名发明人为Earl T.COHEN,且题为“SELF-JOURNALING AND HIERARCHICALCONSISTENCY FOR NON-VOLATILE STORAGE”。
技术领域
非易失性存储技术及制造的进步对于提供成本、可盈利性、性能、效率和使用实用性的提高是必要的。
背景技术
除非被明确认定为被公开或众所周知,否则为了上下文、定义或比较的目的而包括的本文所提到的技术和概念不应被解释为承认这些技术和概念是以前公知的或者是现有技术的一部分。为了所有目的,通过引用将本文中所引用的包括专利、专利申请和出版物的所有参考文献(如有的话)的全部内容无论是否明确结合都为了全部目的通过引用结合于此。
发明内容
本发明可以以多种方式实现,例如作为处理、制造物、装置、系统、组合物和诸如计算机可读存储介质的计算机可读介质(例如,光学和/或磁性大容量存储设备中的诸如磁盘的介质,或具有诸如闪存的非易失性存储器的集成电路)或通过光学或电子通信链路发送程序指令的计算机网络。具体实施方式提供了能实现在上文认定的领域中的成本的改善、盈利、性能、效率和使用实用性的提高的本发明的一种或多种实施方式的论述。具体实施方式包括用于促进对具体实施方式的其余部分的理解的介绍。该介绍包括根据本文描述的概念的系统、方法、制品和计算机可读介质中的一个或多个的示例性实施方式。如在结论中更详细讨论,本发明涵盖所提出的权利要求的范围内的所有可能修改和变更。
附图说明
图1A示出了包括使用自身日志记录和层级一致性来管理诸如闪存的SSD的非易失性存储的控制器的固态磁盘(SSD)的实施方式的所选细节。
图1B示出了包括图1A的SSD的一个或多个示例的系统的各种实施方式的所选细节。
图2示出了映射逻辑块地址(LBA)的逻辑页面号(LPN)部分的实施方式的所选细节。
图3示出了访问在读取单元地址的非易失性存储器(NVM)以产生被组织为各种读取单元的集体具有以读取单元的量来测量的长度的读取数据的实施方式的所选细节。
图4A示出了读取单元的一个实施方式的所选细节。
图4B示出了读取单元的另一实施方式的所选细节。
图5示出了具有大量域的报头的实施方式的所选细节。
图6示出了多个NVM设备的块、页面和读取单元的所选细节。
图7示出了R块的实施方式的所选细节。
图8示出了经由具有第一级映射(FLM)和一个或多个第二级映射(SLM)页面的二级映射将LBA映射到NVM中所存储的逻辑块(LB)的实施方式的所选细节。
图9示出了包括写入SLM和FLM信息以及各种形式的自身日志记录和时间戳记录的接收并将数据从主机写入NVM的各种实施方式的所选细节。
图10示出了将主机和/或再循环数据、映射信息以及检查点先进先出(FIFO)部分流至NVM的各种实施方式的所选细节。
图11示出了例如在故障之后恢复和/或重建FLM和SLM信息和其他NVM管理数据结构的所选细节。
附图中的参考符号列表
具体实施方式
以下将伴随示出本发明的所选细节的附图一起提供对本发明的一个或多个实施方式的详细描述。将结合实施方式来描述本发明。本文的实施方式应被理解为仅是示例性的,本发明明确地不限于本文中的任何或所有实施方式或者受到其限制,且本发明涵盖许多替代、修改和等同物。为避免阐述单调,各种字标签(诸如:第一、最后、某些、各种、进一步、其他、具体的、选择、一些和显著的)可应用于分开的实施方式组;如本文所使用的,这些标签并明确地不意在表达质量或任何形式的偏爱或偏见,而只是为了方便在独立组之间区分。所公开的处理的一些操作顺序在本发明的范围内是可变的。每当多个实施方式用于描述处理、方法和/或程序指令特征的变化的情况下,其他实施方式均被设想为根据预定的或动态确定的标准来执行分别对应于多个实施方式中的多个的多个操作模式中的一个的静态和/或动态选择。大量具体细节在以下描述中提出,以提供对本发明的透彻理解。为示例的目的而提供细节,且本发明在没有一些或所有细节的情况下根据权利要求来实践。为了清晰起见,与本发明相关的技术领域中已知的技术资料未被详细描述,使得本发明未被不必要地模糊。
绪论
本绪论仅为便于更迅速理解具体实施方式而包括;因为任何绪论的段落必须是整个主题的缩略观点且不表示详尽或限制描述的意思,所以本发明不限于在绪论中提出的概念(包括明确的示例,如有的话)。例如,以下绪论仅对某些实施方式提供受空间和组织限制的概述信息。在整个说明书的其余部分中讨论了许多其他实施方式(包括权利要求将最终采用的那些)。
缩写
本文中所定义的各种简略缩写(例如,首字母缩写词)中的至少一些是指本文所使用的特定元件。
缩略语 | 描述 |
AHCI | 高级主机控制器接口 |
API | 应用程序接口 |
ATA | 高级技术附件(AT附件) |
BCH | 博斯-乔赫里-霍克文黑姆码 |
CAM | 内容可寻址存储器 |
CD | 光盘 |
CF | 紧凑式闪存 |
CMOS | 互补金属氧化物半导体 |
CPU | 中央处理器 |
CRC | 循环冗余校验 |
DAS | 直接附接存储 |
DDR | 双倍数据速率 |
DMA | 直接存储器访问 |
DNA | 直接NAND访问 |
DRAM | 动态随机存取存储器 |
DVD | 数字多用途光盘或数字视频光盘 |
DVR | 数字视频录像机 |
ECC | 错误校正码 |
eMMC | 嵌入式多媒体卡 |
eSATA | 外部串行高级技术附件 |
FIFO | 先进先出 |
FLM | 一级映射 |
FUA | 强制单元访问 |
GPS | 全球定位系统 |
HDD | 硬盘驱动器 |
I/O | 输入/输出 |
IC | 集成电路 |
IDE | 集成驱动电子装置 |
JPEG | 联合图像专家组 |
LAN | 局域网 |
LB | 逻辑块 |
LBA | 逻辑块地址 |
LDPC | 低密度奇偶校验 |
LPN | 逻辑页面号 |
MLC | 多层单元 |
MMC | 多媒体卡 |
MPEG | 运动图像专家组 |
NAS | 网络附接存储 |
NCQ | 原生命令队列 |
NVM | 非易失性存储器 |
ONA | 优化NAND访问 |
ONFI | 开放NAND闪存接口 |
OS | 操作系统 |
PC | 个人计算机 |
PCIe | 快速外围组件互连(快速PCT) |
PDA | 个人数字助理 |
PHY | 物理接口 |
POS | 销售点 |
RAID | 廉价/独立磁盘冗余阵列 |
RASIE | 独立硅片冗余阵列 |
ReRAM | 阻变随机存取存储器 |
RS | 里德-索罗蒙码 |
SAN | 存储附接网络 |
SAS | 串行连接小型计算机系统接口(串行SCSI) |
SATA | 串行高级技术附加(串行ATA) |
SCSI | 小型计算机系统接口 |
SD | 安全数字 |
SDR | 单倍数据速率 |
SLC | 单层单元 |
SLM | 二级映射 |
SMART | 自监测分析和报告技术 |
SRAM | 静态随机存取存储器 |
SSD | 固态磁盘/驱动器 |
UFS | 统一闪存存储器 |
USB | 通用串行总线 |
VF | 虚拟函数 |
WAN | 广域网 |
某些非易失性存储系统(诸如以闪存作为NVM实现的某些SSD)的第一挑战是如何有效且可靠地为存储在非易失性存储系统的NVM中的数据提供数据完整性。第一挑战的示例是在从主机(例如,计算主机或接口主机)至SSD发送写入时到将写入有关的所有效果保存在非易失性存储系统的NVM(例如,闪存)中时,以一致的方式来维持与控制非易失性存储系统(例如,SSD的控制器中包括的)相关的数据结构。例如,写入和保存之间发生的故障(例如,死机、电源故障或其中的SSD或电路的各种类型的故障)表示非易失性存储系统能够进行处理(例如,经由一项或多项恢复技术)以确保数据完整性的情形。
第一挑战的另一示例是有效处理高可用性应用程序的写入(例如,具有FUA位组的SATA写入),其中主机要求高可用性写入(在文中其他地方有时称为“FUA”写入)被公认为仅在无错误地完成之后由存储系统完成。如果高可用性写入的延迟被最小化,则会产生较高的性能。要注意的是,除FUA写入之外的全部(在本文其他地方有时称为“非FUA”写入)都被公认为在某些实施方式和/或使用场景下尽管完成,但在发生故障时甚至也无法保证非FUA写入的某些数据保存在NVM中。设想实施方式支持高可用性写入和各种协议中的其他类型的写入,这些协议诸如SAS、SATA、光纤通道、PCIe和启用主机与存储系统之间的存储通信的任何协议。
某些NVM技术(诸如某些类型的NAND闪存)中的第二个挑战是如何经由闪存中的数据位置的可靠动态映射来可靠地获得对某些非易失性存储系统(例如,某些SSD实现)来说足够的性能。由于闪存仅在擦除之后可写入,因此执行动态映射。例如,当SSD从主机接收具体LBA的写入时,分配新页面(或在某些实施方式中,一个或多个页面的一个或多个部分诸如一个或多个读取单元)来存储写入的写入数据。读取单元的示例是与独立较低级ECC处理兼容的闪存的最小部分(例如,单个读取单元足以使用较低级ECC来校正单个读取单元中的错误)。使具体LBA与新页面(或一个或多个页面的部分诸如一个或多个读取单元)相关联的映射经更新使得从主机至具体LBA的未来读取操作返回写入数据。
在某些实施方式中,动态映射经由一级映射进行。例如,动态映射包括将LBA应用于单个表并获得存储有与LBA对应的数据的NVM中的位置。在某些实施方式中,映射经由二级映射进行。例如,在概念上,动态映射包括将LBA应用于第一表(例如,FLM),获得第二表的一部分(例如,SLM的一部分)的指针,并且然后将LBA应用于该部分并获得存储有与LBA对应的数据的NVM中的位置。
第二挑战的示例是即便例如在用于写入的数据写入和映射更新之间发生故障也要维持并管理映射。例如,在至少一部分情况下,如果在发生故障之前写入数据保存在闪存中但映射(例如,与保存写入数据对应的映射的一种或多种更新)没有保存在闪存中,则执行技术(诸如在重置和/或再次施加功率之后)以使得能够从闪存中恢复保存的写入数据的至少一部分。在某些实施方式和/或使用场景下,一旦将写入数据非易失地保存就确认FUA写入,与任何对应映射更新是否也非易失地保存无关,这在某些情况下使得能够改进性能。在另一情况下,如果映射(或映射的一种或多种更新)保存到闪存但对应写入数据的至少一部分没有保存到闪存(例如,由于故障),则执行技术(诸如在重置和/或再次施加功率之后)以便识别映射(或映射的一种或多种更新)与已经保存到闪存的数据不一致。例如,作出映射的一部分指向自擦除之后尚未被写入或尚未被写入对应写入数据的闪存的一部分的确定。在又一情况下,如果在相关联写入数据和对应映射信息(或其任意更新)已经保存在闪存中之后确认FUA写入,则在某些实施方式和/或使用场景下,产生相对较大的性能损失。相对较大的性能损失由于某些协议(例如,SATA)的有限的队列、将写入数据和映射信息写入闪存的编程时间、以及减少写入放大的积累映射写入的能力的降低中的一个或多个而出现。
在某些实施方式和/或使用场景下,前述挑战中的一个或多个通过应用于诸如用于SSD的非易失性存储,或由SSD控制器或NVM(例如,闪存)控制器管理的自身日志记录和/或层级一致性来处理。例如,当存在故障时,自身日志记录和/或层级一致性的组合使得能够整体或部分地重建映射信息。在某些情况下,使用自身日志记录和层级一致性技术重建映射信息比不使用该技术重建更有效。再如,自身日志记录和层级一致性的组合使得能够进行相对低延迟的FUA握手。
在某些实施方式和/或使用场景下,自身日志记录和/或层级一致性在概念上涉及NVM在其中进行管理的单元(例如,本文其他地方描述的R块)、如何写入NVM管理单元(例如,记录带)以及如何管理管理单元的写入(例如,作为流)。R块的示例是NVM块的集合(例如,来自SSD中的每个NVM芯片(die)的一个块,而块中的NVM位置以条带形式写入)。带的示例是信息连续写入其中(例如,按具体的时间顺序),且可选地填充有具有相似属性和/或特性的信息的R块的集合。流的示例是以下记录带(band),该记录带被管理使得在该记录带内按与为了写入NVM而出现信息的相同顺序将信息写入NVM(例如,在较晚的时间出现的信息之前写入在较早的时间出现的信息)。在概念上,写入作为流来管理的记录带的信息以按时间顺序组织的类似FIFO的方式流入NVM。因为成功写入具体NVM芯片在诸如电源故障的某些情况下是不可预测的,所以在流的末端写入的数据在某些情况下具有“孔”。例如,流中的最后被写芯片(在电源故障之前)成功写入,但具有流的数据的较早部分的先前芯片没有成功写入,从而在先前芯片的位置产生了孔(例如,无效的、不可校正的和/或缺失的数据)。
某些实施方式以多个流来操作。例如,流包括主机数据(例如,与来自主机的写入命令相关联的写入数据)和再循环数据(例如,从NVM的一部分移至另一部分以使NVM的较大连续部分可使用的数据)的一个或多个数据流。例如,流包括用于映射信息(诸如用于确定NVM具体主机写入数据被存储在哪里)的一个或多个映射流。例如,流包括用于存储数据结构的整个或部分图像的一个或多个检查点流,该数据结构用于管理NVM数据存储(诸如映射信息和使用统计数据)。
自身日志记录使得能够仅使用在具体对象中可用的信息来恢复与具体对象一致的信息。例如,主机数据与识别主机数据与哪些LBA对应的信息一起存储在NVM中。再如,再循环数据与识别再循环数据与哪些LBA对应的信息一起存储在NVM中。在某些实施方式和/或使用场景下,自身日志记录连同知道被写入的所有数据的顺序一起,可以完全恢复映射信息和其他数据结构(尽管很慢)。例如,读取SSD的所有(自身日志记录的)数据可以重建使LBA与NVM中的物理位置相关联的映射。
层级一致性使得能够确定数据结构的哪个版本由另一个数据结构的哪个版本来管理,版本例如是由于单独写入和/或设置检查点的信息导致的。例如,数据流优先于映射流,而映射流优先于检查点流。故障导致来自流的信息彼此相对无序地存储在NVM中。与流中的信息一起存储的时间标记(例如,纪元报头和/或时间戳)使得能够确定存储在NVM中的流信息的相对顺序。在某些实施方式和/或使用场景下,与层级一致性相结合的自身日志记录使得能够完全、迅速恢复映射信息和其他数据结构。例如,通过从映射流读取映射的版本并使用仅从领先该映射版本的部分数据流获得的更新来更新映射,来快速恢复使LBA与NVM中的物理位置相关联的映射。
在某些实施方式中,层级一致性使得能够使用滚动检查点。诸如映射的数据结构的滚动检查点在分开的相应时间保存数据结构的部分的状态,使得在保存比数据结构的滚动检查点中的一个大的数字之后保存整个数据结构。因为操作在滚动检查点的保存之间继续,所以滚动检查点中的每一个都是在数据结构的相应部分被滚动检查点保存的相应时间的数据结构的相应部分的快照。然而,不一定存在已经保存的整个数据结构的单个的时间一致的副本。在某些实施方式和/或使用场景下,与时间戳结合的层级一致性使得能够从比包含数据结构的流具有层级优先的其他流中的滚动检查点和信息恢复整个数据结构的单一的时间一致的副本。在进一步的实施方式和/或使用场景下,滚动检查点的使用能够诸如通过影响延迟、通过最小化正常处理由于检查点设置导致的中断和/或延时的持续时间,来使检查点设置对系统行为的破坏性较小。
在包括自身日志记录和层级一致性的上下文中的恢复技术包括将检查点存储(滚动)至NVM,并且响应于故障,处理存储的(滚动的)检查点以重建跟踪LBA至NVM位置一致的映射信息。
在各种实施方式中,数据流(例如具有主机写入数据和再循环数据)的数据页面、映射流(例如具有SLM条目或其更新)的映射页面以及NVM中存储的检查点流(例如具有FLM条目或其更新)的检查点页面中的一个或多个是自身日志记录的。例如,页面(如果存在的话)包含确保单独的数据结构的一致性所需的信息。但这并不意味着对诸如由时间标记提供的时间观有要求的数据结构之间的一致性。数据带(例如,包括数据页面)和映射带(例如,包括映射条目和/或更新)作为流来管理,并按时间顺序(time order)组织(至少在流中)。
在某些实施方式和/或使用场景下,诸如存储在NVM中的每个主机页面与包含主机页面的主机页面地址(诸如LBA)的报头相关联。因而,如果已将主机页面写入NVM,则相关联的主机页面地址(来自对应报头)表示被写入的主机页面是哪个主机页面。如果与主机页面的写入对应的SLM条目没有记录到NVM中(例如,在发生故障之前),则主机页面本身包含足以重建SLM条目的信息(主机页面地址)。在某些环境下,从数据容器重建数据的能力被称为引用完整性。
在某些实施方式中,层级一致性定义数据结构的顺序,使得在被单独写入和/或经检查点设置的多个数据结构之中,可识别数据结构中的最高优先级数据结构(或其一部分)。例如,当数据带、映射带和检查点FIFO全部一致时(例如,全部按时间顺序),数据带优先于映射带,并且映射带优先于检查点FIFO。
根据各种实施方式,映射是以下各项中的一个或多个:使主机协议的LBA与NVM中的物理存储地址相关联的一级映射、二级映射、多级映射、直接映射、相关映射和任何其他构件。例如,在某些实施方式中,二级映射包括使LBA的第一函数与多个二级映射页面中的一个的NVM中的相应地址相关联的一级映射,并且二级映射中的每一个使LBA的第二函数与对应于LBA的数据的NVM中的相应地址相关联。在进一步的实施方式中,LBA的第一函数和LBA的第二函数的示例是除以每个二级映射页面中所包括的条目的固定数量时获得的商和余数。多个二级映射页面统称为二级映射。在本文中,对映射的一个或多个条目的引用指的是任意类型映射的一个或多个条目,该任意类型映射包括一级映射、二级映射的一级、二级映射的二级、多级映射的任意级或具有条目的任何其他类型的映射。
根据各种实施方式,二级映射(或多级映射的较低级)的映射页面的每一个满足以下各项中的一项或多项:包括与其他映射页面相同数量的条目;包括与至少一部分其他映射页面不同数量的条目;包括与其他映射页面相同粒度(granularity)的条目;包括与其他映射页面具有不同粒度的条目、包括全部具有相同粒度的条目;包括具有多个粒度的条目;包括指定映射页面的格式和/或布局的各报头;以及具有表示映射页面的条目的任何其他格式、布局或组织。例如,第一二级映射页面具有每条目4KB的粒度规格,第二二级映射页面具有每条目8KB的粒度规格并且只具有第一二级映射页面的条目的多少的一半。
在进一步的实施方式中,较高级映射的条目包括对应的较低级映射页面的格式和/或布局信息。例如,一级映射中的每个条目包括相关联的二级映射页面中的条目的粒度规格。
在某些实施方式中,映射包括多个条目,每个条目使一个或多个LBA与信息相关联,该信息选择性地包括存储有LBA数据的NVM中的各自的位置。例如,LBA规定了512B扇区,并且映射中的每个条目与LBA的对齐的八扇区(4KB)区域相关联。
根据各种实施方式,映射的条目的信息包括以下各项中的一个或多个:NVM中的位置;NVM中读取单元的地址;要读取以获得NVM中所存储的相关联的LBA的数据的读取单元的数量;NVM中所存储的相关联的LBA的数据的大小,该大小的粒度任选地和/或可选地大于一个字节;相关联的LBA的数据不存在于NVM中的指示,诸如由于相关联的LBA的数据被修整;相关联的LBA的数据的属性,包括施加给相关联的LBA的数据的任何非标准修饰符;以及相关联的LBA的数据的任何其他元数据、属性或性质。
在某些实施方式中,NVM中的地址被分组为多个区域以减少表示其中一个地址所需的位数。例如,如果I/O设备的LBA被分成64个区域,并且NVM被分成64个区域(每个LBA区域对应一个),则与具体LBA相关联的映射条目需要的地址位少了6个,因为NVM中的区域中的一个能够由具体LBA的区域确定。根据各种实施方式,LBA的区域和NVM的区域之间的关联是以下各项中的一个或多个:相等、直接关联,诸如一对一的数值函数、查询表、动态映射以及使两组数字相关联的任何其他方法。
在各种实施方式中,NVM中的位置包括多个读取单元中的一个的地址,以及读取单元中的长度和/或跨度。长度是NVM中所存储的多个数据项中的一个具体数据项的大小,该具体数据项与包括长度的映射的条目相关联。根据各种实施方式,长度具有以下各项中的一项或多项的粒度:一字节、一个以上的字节、一个读取单元、指定的一小部分读取单元、根据数据项中的一个的最大允许压缩率的粒度、以及用于跟踪存储使用量的任何其他粒度。跨度是存储有具体数据项的相应部分的多个读取单元,诸如整数个读取单元。在进一步的实施方式和/或使用场景下,在读取单元跨度中的第一读取单元和/或读取单元跨度中的最后读取单元任选地和/或可选择地存储多个数据项中的一些或全部。在某些实施方式和/或使用场景下,长度和/或跨度被编码地存储,诸如通过将长度(在具有编码的长度和/或跨度的上下文中有时称为大小)作为对跨度的补偿来存储。在某些实施方式和/或使用场景下,未使用的长度和/或跨度的编码对额外信息(诸如非标准修饰符的表示或诸如相关联数据项是否存在于NVM中的表示)进行编码。
将NVM中的位置编码为位置和长度使NVM中所存储的数据的大小改变。例如,第一4KB区域被压缩为400B大小,其完全存储在单个读取单元中,并具有一个读取单元的长度,而第二4KB区域是不可压缩的,跨越一个以上的读取单元,并具有一个以上读取单元的长度。在进一步的实施方式中,在与LBA的区域相关联的存储的读取单元中具有长度和/或跨度使得能够仅读取NVM的所需部分来检索LBA的区域的数据。
在某些实施方式中,映射的每个条目包括信息,有时称为元数据,指定与条目相关联的LBA的区域的属性。在进一步的实施方式中,诸如通过使区域的多个LBA中的每一个具有分别的元数据规范,至少一部分元数据的粒度比区域的粒度细。根据各种实施方式,元数据包括可适用于和/或用于修改和/或控制与区域相关联的NVM中的数据的写入、访问、读取和/或再循环的一个或多个非标准修饰符。
示例性实施方式
作为具体实施方式的绪论的结束,接下来是一系列示例性实施方式,这些示例性实施方式包括明确列举为“EC”(示例性组合)的至少一些实施方式,这些示例性实施方式根据本文描述的概念提供对各种实施方式类型的额外描述;这些示例并不意味着是彼此排斥的、详尽的或限制性的;且本发明不限于这些示例性实施方式,而是涵盖所公布的权利要求及其等同物的范围内的所有可能的修改和变更。
EC1)一种方法,包括:
按第一顺序将一系列数据单元排列在非易失性存储器(NVM)中,数据单元中的每一个与多个时间戳中的相应的一个相关联;
按第二顺序将一系列数据映射单元排列在NVM中,数据映射单元中的每一个与时间戳中的相应的一个相关联;
其中数据映射单元中的每一个包括数据单元中对应数据单元的NVM中的位置;并且
其中与数据单元中的每一个相关联的相应时间戳在与对应数据映射单元相关联的相应时间戳处或之前。
EC2)根据EC1所述的方法,其中:
数据单元中的每一个对应于从主机至相应逻辑块地址(LBA)的相应数据写入;
数据单元中的前一个数据单元和后一个数据单元对应于至相应LBA中的同一个LBA的数据写入中的数据写入;并且
前一个数据单元不具有数据映射单元中的相关数据映射单元。
EC3)根据EC1所述的方法,在电源故障之后,进一步包括:
确定数据单元中的最新有效且连续的(相邻的)数据单元;
确定数据映射单元中的最新有效且连续的数据映射单元,其中与数据映射单元中的最新有效且连续的数据映射单元相关联的相应时间戳在与数据单元中的最新有效且连续的数据单元相关联的相应时间戳处或之前;
仅将数据映射单元中的数据映射单元恢复至数据映射单元中的最新有效且连续的数据映射单元;并且
其中在恢复中忽略与相应时间戳中的任意一个相关联的数据映射单元中的任意一个,所述相应时间戳在与数据单元中的最新有效且连续的数据单元相关联的相应时间戳之后。
EC4)根据EC1所述的方法,其中数据单元是数据存储单元。
EC5)一种方法,包括:
将一系列数据存储单元写入非易失性存储器(NVM),数据存储单元中的每一个与多个时间戳中的相应的一个相关联;
将一系列数据映射单元写入NVM,数据映射单元中的每一个与时间戳中的相应的一个相关联;
其中数据映射单元中的每一个包括数据存储单元中对应数据存储单元的NVM中的位置;并且
其中与数据存储单元中的每一个相关联的相应时间戳表示相对年龄(relativeage),所述相对年龄等于或老于(older)与对应数据映射单元相关联的相应时间戳表示的相对年龄。
EC6)根据EC5所述的方法,其中数据存储单元的写入符合第一顺序并且数据映射单元的写入符合第二顺序。
EC7)根据EC5所述的方法,其中数据存储单元根据第一顺序布置在NVM中并且数据映射单元根据第二顺序布置在NVM中。
EC8)根据EC1、EC6或EC7所述的方法,其中第一顺序不同于第二顺序。
EC9)根据EC5所述的方法,其中:
数据存储单元中的第一个对应于从主机至具体逻辑块地址(LBA)的第一数据写入;
数据存储单元中的第二个对应于从主机至具体LBA的第二数据写入;
第一数据写入按时间顺序在第二数据写入前;并且
数据映射单元中没有一个与第一数据存储单元对应。
EC10)根据EC6所述的方法,在事件之后,进一步包括:
根据第一顺序确定数据存储单元中的最新有效且连续的一个;
根据第二顺序确定与表示相对年龄的相应时间戳中的一个相关联的数据映射单元中的最新有效且连续的数据映射单元,所述相对年龄等于或老于与数据存储单元中的最新有效且连续的一个相关联的相应时间戳表示的相对年龄;以及
根据第一和第二顺序仅将数据映射单元中的数据映射单元恢复至数据映射单元中的最新有效且连续的数据映射单元。
EC11)根据EC6所述的方法,进一步包括:
根据第一顺序确定数据存储单元中的第一个,所述第一个是数据存储单元中的最新有效且连续的一个;
根据第二顺序确定与表示相对年龄的相应时间戳中的一个相关联的数据映射单元中的最新有效且连续的数据映射单元,所述相对年龄等于或老于与数据存储单元中的最新有效且连续的一个相关联的相应时间戳表示的相对年龄;
根据第一顺序确定数据存储单元中的第二个,所述第二个是与表示相对年龄的相应时间戳中的一个相关联的数据存储单元中的最新数据存储单元,所述相对年龄等于与数据映射单元中的最新有效且连续的数据映射单元相关联的相应时间戳表示的相对年龄或在此之前;以及
根据第一和第二顺序,仅使用来自数据存储单元中的第二个的数据单元中的数据单元通过数据存储单元中的第一个将数据映射单元中的数据映射单元恢复至数据映射单元中的最新有效且连续的数据映射单元。
EC12)根据EC11所述的方法,进一步包括:
针对先前未写入NVM的数据映射单元中的每个修改的数据映射单元来识别与最旧更新相关联的时间戳中的相应时间戳,所述相应时间戳等于与数据存储单元中的具体数据存储单元相关联的相应时间戳,修改的数据映射单元包括具体数据存储单元的NVM中的位置;以及
在写入与相应时间戳中的一个相关联的数据存储单元中的一个处或之前,将先前未写入NVM的修改的数据映射单元中的每一个写入NVM,所述相应时间戳大于继与修改的数据映射单元的最旧更新相关联的相应时间戳之后的确定量。
EC13)根据EC10所述的方法,进一步包括相对于恢复忽略具有表示相对年龄的相应时间戳的数据映射单元中的任意一个,所述相对年龄小于数据存储单元中最新有效且连续的数据存储单元的相应时间戳表示的相对年龄。
EC14)根据EC10所述的方法,其中事件包括故障。
EC15)根据EC14所述的方法,其中故障包括以下各项中的一个或多个:
电源故障,
死机,以及
电路故障。
EC16)根据EC4或EC5所述的方法,其中数据映射单元中的至少两个包括相同位置,所述相同位置是数据单元的至少两个数据单元的相同位置。
EC17)根据EC4或EC5所述的方法,进一步包括使用数据存储单元中的至少一部分存储与数据存储单元相关联的相应时间戳,以及使用数据映射单元中的至少一部分存储与数据映射单元相关联的相应时间戳。
EC18)根据EC4或EC5所述的方法,其中数据存储单元的相应时间戳的足够时间戳使用数据存储单元进行存储,使得数据存储单元中的每一个与相应数据存储单元的相应时间戳之间的关联可通过读取NVM来确定。
EC19)根据EC4或EC5所述的方法,其中数据存储单元的相应时间戳的至少一部分中的每一个存储在具有相关联数据存储单元的NVM中。
EC20)根据EC4或EC5所述的方法,其中数据映射单元的相应时间戳的足够时间戳使用数据映射单元进行存储,使得数据映射单元中的每一个与相应数据映射单元的相应时间戳之间的关联可通过读取NVM来确定。
EC21)根据EC4或EC5所述的方法,其中数据映射单元的相应时间戳的至少一部分中的每一个存储在具有相关联数据映射单元的NVM中。
EC22)根据EC4或EC5所述的方法,其中数据存储单元中的具体数据存储单元存储在相应时间戳与具体数据存储单元相关联的NVM中,并且数据映射单元中的具体数据映射单元存储在相应时间戳与具体数据映射单元相关联的NVM中。
EC23)一种方法,包括:
根据存储流将多个存储单元写入非易失性存储器(NVM),存储单元中的每一个包括数据部分和对应时间戳部分;
根据映射流将多个映射单元写入NVM,映射单元中的每一个包括条目部分和对应时间戳部分;
其中至少一部分条目部分中的每一个可以通过指定数据部分中的至少对应数据部分来确定将相应逻辑块(LB)写入NVM中的哪里;
其中时间发生顺序(temporal order)由时间戳部分表示,存储单元时间戳根据彼此的相对时间戳顺序单调递增,并且映射单元时间戳根据彼此的相对时间戳顺序单调递增;并且
其中当写入NVM的映射单元中的至少一个具有时间戳部分时,存在至少一个具体时间点,所述时间戳部分根据时间发生顺序晚于根据时间发生顺序的在具体时间点时写入NVM的存储单元时间戳部分的最新时间戳部分。
EC24)根据EC23所述的方法,其中写入存储单元按与存储单元时间戳部分表示的时间发生顺序对应的时间顺序写入存储单元,并且写入映射单元按与映射单元时间戳部分表示的时间发生顺序对应的时间顺序写入映射单元。
EC25)根据EC23所述的方法,进一步包括根据检查点流将一个或多个检查点单元写入NVM,检查点单元中的每一个包括映射部分和对应时间戳部分,并且其中检查点时间戳部分根据彼此的相对时间戳顺序单调递增。
EC26)根据EC25所述的方法,其中检查点单元的写入按与检查点时间戳部分表示的时间发生顺序对应的时间顺序写入检查点单元。
EC27)根据EC25所述的方法,其中连续一组预定数量的检查点单元至少包括条目部分符合于此的映射的整个检查点。
EC28)根据EC27所述的方法,进一步包括至少部分基于映射部分和/或检查点单元时间戳部分中的一个或多个的一个或多个部分来恢复映射。
EC29)根据EC28所述的方法,其中恢复进一步至少部分基于条目部分和/或映射单元时间戳部分中的一个或多个的一个或多个部分。
EC30)根据EC29所述的方法,其中恢复进一步至少部分基于数据部分和/或存储单元时间戳部分中的一个或多个的一个或多个部分。
EC31)根据EC30所述的方法,其中数据部分中的每一个包括一个或多个数据单元以及对应的一个或多个报头,报头中的每一个识别数据单元中的相应对应数据单元和LB中的一个LB之间的相应映射,映射可以确定LB中的相应LB作为数据单元中的相应数据单元写入NVM中的哪里,并且其中恢复进一步至少部分基于写入NVM的存储单元中包括的相应报头中的一个或多个。
EC32)根据EC31所述的方法,其中条目部分中的具体条目部分确定相应LB的相应数据部分,相应数据部分包括报头中的具体报头,并且具体报头识别数据单元中的具体数据单元和具体条目部分的相应LB之间的相应映射。
EC33)根据EC27所述的方法,其中映射是一级映射。
EC34)根据EC33所述的方法,进一步包括缓存和/或缓冲映射的至少一部分;并且其中映射部分中的至少一个的至少一部分符合缓存和/或缓冲。
EC35)根据EC27所述的方法,其中映射是包括第一级映射和第二级映射的二级映射,映射部分对应于第一级映射的部分,条目部分对应于第二级映射的条目。
EC36)根据EC35所述的方法,进一步包括缓存和/或缓冲第一级映射和/或第二级映射的至少一部分;并且其中映射部分和条目部分中的至少一个的至少一部分符合缓存和/或缓冲。
EC37)根据EC27所述的方法,其中映射部分中的每一个符合具有,根据时间发生顺序,比相应映射部分的对应时间戳部分早的对应时间戳部分的所有条目部分。
EC38)根据EC25所述的方法,其中一个具体时间点是第一具体时间点,并且当写入NVM的检查点单元中的至少一个具有时间戳部分时,存在至少第二具体时间点,所述时间戳部分根据时间发生顺序晚于根据时间发生顺序的在第二具体时间点时写入NVM的映射单元时间戳部分的最新时间戳部分。
EC39)根据EC25所述的方法,其中一个具体时间点是第一具体时间点,并且当写入NVM的检查点单元中的至少一个具有时间戳部分时,存在至少第二具体时间点,所述时间戳部分根据时间发生顺序晚于根据时间发生顺序的在第二具体时间点时写入NVM的存储单元时间戳部分的最新时间戳部分。
EC40)根据EC23所述的方法,其中多个存储单元是第一多个存储单元,存储流是第一存储流,并且进一步包括根据第二存储流将第二多个存储单元写入NVM,第二存储单元中的每一个包括数据部分和对应时间戳部分,并且第二存储单元时间戳部分根据彼此的相对时间戳顺序单调递增。
EC41)根据EC40所述的方法,其中第二存储单元的写入按与第二存储单元时间戳部分表示的时间发生顺序对应的时间顺序写入第二存储单元。
EC42)根据EC40所述的方法,其中第二存储单元中的至少一个按时间顺序在第一存储单元中的两个之间写入,并且至少一个第二存储单元时间戳部分根据时间发生顺序在两个第一存储单元时间戳部分之间。
EC43)根据EC40所述的方法,其中第一多个存储单元的数据部分中的至少一个包括来自主机的与主机数据写入命令相关的主机数据,并且其中第二多个存储单元的数据部分中的至少一个包括响应于再循环操作从NVM读取的再循环数据。
EC44)根据EC23所述的方法,其中时间戳部分被编码以便可以根据时间发生顺序经由比较后的时间戳部分的数值比较来比较时间戳部分。
EC45)根据EC44所述的方法,其中数值比较忽略比较后的时间戳部分的一个或多个连续最高有效位。
EC46)根据EC44所述的方法,其中如果比较后的存储单元时间戳部分中的具体存储单元时间戳部分在数值上与比较后的映射单元时间戳部分中的具体映射单元时间戳部分相同,则通过预先确定,当时间戳部分相同时,比较后的存储单元时间戳部分早于比较后的映射单元时间戳部分,来确定比较。
EC47)根据EC46所述的方法,其中数值身份忽略比较后的时间戳部分的一个或多个连续最高有效位。
EC48)根据EC23所述的方法,其中条目部分中的每一个都符合具有对应时间戳部分的所有数据部分,所述时间戳部分根据时间发生顺序早于相应条目部分的对应时间戳部分。
EC49)根据EC23所述的方法,其中存储单元中的每一个以原子的方式写入。
EC50)根据EC23所述的方法,其中映射单元中的每一个以原子的方式写入。
EC51)根据EC23所述的方法,其中数据部分中的至少一个包括来自主机的与主机数据写入命令相关的主机数据。
EC52)根据EC23所述的方法,其中数据部分中的至少一个包括响应于再循环操作从NVM读取的再循环数据。
EC53)根据EC23所述的方法,其中数据部分中的每一个包括一个或多个数据单元和对应的一个或多个报头,报头中的每一个识别数据单元中的相应对应数据单元和LB中的一个LB之间的相应映射,映射可以确定LB中的相应LB作为数据单元中的相应数据单元写入NVM中的哪里。
EC54)根据EC53所述的方法,其中报头中的每一个连续写入相应数据单元由相应报头识别的NVM中。
EC55)根据EC2、EC9、EC43或EC51所述的方法,进一步包括根据数据写入与主机交互。
EC56)根据EC55所述的方法,其中交互与存储接口标准兼容。
EC57)根据EC2、EC9、EC43或EC51所述的方法,其中主机是计算主机,并且进一步包括根据数据写入来操作计算主机。
EC58)根据ECl、EC5或EC23所述的方法,其中NVM包括一个或多个闪存。
EC59)根据EC58所述的方法,进一步包括经由闪存接口与闪存交互。
EC60)一种有形计算机可读介质,其中存储有当由处理元件执行时使处理元件执行和/或控制包括以下各项的操作的一套指令:
按第一顺序将一系列数据单元排列在非易失性存储器(NVM)中,数据单元中的每一个与多个时间戳中的相应的一个相关联;
按第二顺序将一系列数据映射单元排列在NVM中,数据映射单元中的每一个与时间戳中的相应的一个相关联;
其中数据映射单元中的每一个包括数据单元中对应数据单元的NVM中的位置;并且
其中与数据单元中的每一个相关联的相应时间戳在与对应数据映射单元相关联的相应时间戳处或之前。
EC61)根据EC60所述的有形计算机可读介质,其中:
数据单元中的每一个对应于从主机至相应逻辑块地址(LBA)的相应数据写入;
数据单元中的前一个数据单元和后一个数据单元对应于至相应LBA中的同一个LBA的数据写入中的数据写入;并且
前一个数据单元不具有数据映射单元中的相关数据映射单元。
EC62)根据EC60所述的有形计算机可读介质,其中操作进一步包括:
在电源故障之后,确定数据单元中的最新有效且连续的数据单元;
在电源故障之后,确定数据映射单元中的最新有效且连续的数据映射单元,其中与数据映射单元中的最新有效且连续的数据映射单元相关联的相应时间戳在与数据单元中的最新有效且连续的数据单元相关联的相应时间戳处或之前;
仅将数据映射单元中的数据映射单元恢复至数据映射单元中的最新有效且连续的数据映射单元;并且
其中在恢复中忽略与相应时间戳中的任意一个相关联的数据映射单元中的任意一个,所述相应时间戳在与数据单元中的最新有效且连续的数据单元相关联的相应时间戳之后。
EC63)根据EC60所述的有形计算机可读介质,其中数据单元是数据存储单元。
EC64)一种有形计算机可读介质,其中存储有当由处理元件执行时使处理元件执行和/或控制包括以下各项的操作的一套指令:
将一系列数据存储单元写入非易失性存储器(NVM),数据存储单元中的每一个与多个时间戳中的相应的一个相关联;
将一系列数据映射单元写入NVM,数据映射单元中的每一个与时间戳中的相应的一个相关联;
其中数据映射单元中的每一个包括数据存储单元中对应数据存储单元的NVM中的位置;并且
其中与数据存储单元中的每一个相关联的相应时间戳表示相对年龄,所述相对年龄等于或老于与对应数据映射单元相关联的相应时间戳表示的相对年龄。
EC65)根据EC64所述的有形计算机可读介质,其中数据存储单元的写入符合第一顺序并且数据映射单元的写入符合第二顺序。
EC66)根据EC64所述的有形计算机可读介质,其中数据存储单元根据第一顺序布置在NVM中并且数据映射单元根据第二顺序布置在NVM中。
EC67)根据EC60、EC65或EC66所述的有形计算机可读介质,其中第一顺序不同于第二顺序。
EC68)根据EC64所述的有形计算机可读介质,其中:
数据存储单元中的第一个对应于从主机至具体逻辑块地址(LBA)的第一数据写入;
数据存储单元中的第二个对应于从主机至具体LBA的第二数据写入;
第一数据写入按时间顺序在第二数据写入前;并且
数据映射单元中没有一个与第一数据存储单元对应。
EC69)根据EC65所述的有形计算机可读介质,其中操作进一步包括:
在事件之后,根据第一顺序确定数据存储单元中的最新有效且连续的一个;
在事件之后,根据第二顺序确定与表示相对年龄的相应时间戳中的一个相关联的数据映射单元中的最新有效且连续的数据映射单元,所述相对年龄等于或老于与数据存储单元中的最新有效且连续的一个相关联的相应时间戳表示的相对年龄;以及
根据第一和第二顺序仅将数据映射单元中的数据映射单元恢复至数据映射单元中的最新有效且连续的数据映射单元。
EC70)根据EC65所述的有形计算机可读介质,其中操作进一步包括:
根据第一顺序确定数据存储单元中的第一个,所述第一个是数据存储单元中的最新有效且连续的一个;
根据第二顺序确定与表示相对年龄的相应时间戳中的一个相关联的数据映射单元中的最新有效且连续的数据映射单元,所述相对年龄等于或老于与数据存储单元中的最新有效且连续的一个相关联的相应时间戳表示的相对年龄;
根据第一顺序确定数据存储单元中的第二个,所述第二个是与表示相对年龄的相应时间戳中的一个相关联的数据存储单元中的最新数据存储单元,所述相对年龄等于与数据映射单元中的最新有效且连续的数据映射单元相关联的相应时间戳表示的相对年龄或在此之前;以及
根据第一和第二顺序,仅使用来自数据存储单元中的第二个的数据单元中的数据单元通过数据存储单元中的第一个将数据映射单元中的数据映射单元恢复至数据映射单元中的最新有效且连续的数据映射单元。
EC71)根据EC70所述的有形计算机可读介质,其中操作进一步包括:
针对先前未写入NVM的数据映射单元中的每个修改的数据映射单元来识别与最旧更新相关联的时间戳中的相应时间戳,所述相应时间戳等于与数据存储单元中的具体数据存储单元相关联的相应时间戳,修改的数据映射单元包括具体数据存储单元的NVM中的位置;以及
在写入与相应时间戳中的一个相关联的数据存储单元中的一个处或之前,将先前未写入NVM的修改的数据映射单元中的每一个写入NVM,所述相应时间戳大于继与修改的数据映射单元的最旧更新相关联的相应时间戳之后的确定量。
EC72)根据EC69所述的有形计算机可读介质,其中操作进一步包括相对于恢复忽略具有表示相对年龄的相应时间戳的数据映射单元中的任意一个,所述相对年龄小于数据存储单元中最新有效且连续的数据存储单元的相应时间戳表示的相对年龄。
EC73)根据EC69所述的有形计算机可读介质,其中事件包括故障。
EC74)根据EC73所述的有形计算机可读介质,其中故障包括以下各项中的一个或多个:
电源故障,
死机,以及
电路故障。
EC75)根据EC63或EC64所述的有形计算机可读介质,其中数据映射单元中的至少两个包括相同位置,所述相同位置是数据单元的至少两个数据单元的相同位置。
EC76)根据EC63或EC64所述的有形计算机可读介质,其中操作进一步包括使用数据存储单元中的至少一部分存储与数据存储单元相关联的相应时间戳,以及使用数据映射单元中的至少一部分存储与数据映射单元相关联的相应时间戳。
EC77)根据EC63或EC64所述的有形计算机可读介质,其中数据存储单元的相应时间戳的足够时间戳使用数据存储单元进行存储,使得数据存储单元中的每一个与相应数据存储单元的相应时间戳之间的关联可通过读取NVM来确定。
EC78)根据EC63或EC64所述的有形计算机可读介质,其中数据存储单元的相应时间戳的至少一部分中的每一个存储在具有相关联数据存储单元的NVM中。
EC79)根据EC63或EC64所述的有形计算机可读介质,其中数据映射单元的相应时间戳的足够时间戳使用数据映射单元进行存储,使得数据映射单元中的每一个与相应数据映射单元的相应时间戳之间的关联可通过读取NVM来确定。
EC80)根据EC63或EC64所述的有形计算机可读介质,其中数据映射单元的相应时间戳的至少一部分中的每一个存储在具有相关联数据映射单元的NVM中。
EC81)根据EC63或EC64所述的有形计算机可读介质,其中数据存储单元中的具体数据存储单元存储在相应时间戳与具体数据存储单元相关联的NVM中,并且数据映射单元中的具体数据映射单元存储在相应时间戳与具体数据映射单元相关联的NVM中。
EC82)一种有形计算机可读介质,其中存储有当由处理元件执行时使处理元件执行和/或控制包括以下各项的操作的一套指令:
根据存储流将多个存储单元写入非易失性存储器(NVM),存储单元中的每一个包括数据部分和对应时间戳部分;
根据映射流将多个映射单元写入NVM,映射单元中的每一个包括条目部分和对应时间戳部分;
其中至少一部分条目部分中的每一个可以通过指定数据部分中的至少对应数据部分来确定将相应逻辑块(LB)写入NVM中的哪里;
其中时间发生顺序由时间戳部分表示,存储单元时间戳根据彼此的相对时间戳顺序单调递增,并且映射单元时间戳根据彼此的相对时间戳顺序单调递增;并且
其中当写入NVM的映射单元中的至少一个具有时间戳部分时,存在至少一个具体时间点,所述时间戳部分根据时间发生顺序晚于根据时间发生顺序的在具体时间点时写入NVM的存储单元时间戳部分的最新时间戳部分。
EC83)根据EC82所述的有形计算机可读介质,其中写入存储单元按与存储单元时间戳部分表示的时间发生顺序对应的时间顺序写入存储单元,并且写入映射单元按与映射单元时间戳部分表示的时间发生顺序对应的时间顺序写入映射单元。
EC84)根据EC82所述的有形计算机可读介质,其中操作进一步包括根据检查点流将一个或多个检查点单元写入NVM,检查点单元中的每一个包括映射部分和对应时间戳部分,并且其中检查点时间戳部分根据彼此的相对时间戳顺序单调递增。
EC85)根据EC84所述的有形计算机可读介质,其中检查点单元的写入按与检查点时间戳部分表示的时间发生顺序对应的时间顺序写入检查点单元。
EC86)根据EC84所述的有形计算机可读介质,其中连续一组预定数量的检查点单元至少包括条目部分符合于此的映射的整个检查点。
EC87)根据EC86所述的有形计算机可读介质,其中操作进一步包括至少部分基于映射部分和/或检查点单元时间戳部分中的一个或多个的一个或多个部分来恢复映射。
EC88)根据EC87所述的有形计算机可读介质,其中恢复进一步至少部分基于条目部分和/或映射单元时间戳部分中的一个或多个的一个或多个部分。
EC89)根据EC88所述的有形计算机可读介质,其中恢复进一步至少部分基于数据部分和/或存储单元时间戳部分中的一个或多个的一个或多个部分。
EC90)根据EC89所述的有形计算机可读介质,其中数据部分中的每一个包括一个或多个数据单元以及对应的一个或多个报头,报头中的每一个识别数据单元中的相应对应数据单元和LB中的一个LB之间的相应映射,映射可以确定LB中的相应LB作为数据单元中的相应数据单元写入NVM中的哪里,并且其中恢复进一步至少部分基于写入NVM的存储单元中包括的相应报头中的一个或多个。
EC91)根据EC90所述的有形计算机可读介质,其中条目部分中的具体条目部分确定相应LB的相应数据部分,相应数据部分包括报头中的具体报头,并且具体报头识别数据单元中的具体数据单元和具体条目部分的相应LB之间的相应映射。
EC92)根据EC86所述的有形计算机可读介质,其中映射是一级映射。
EC93)根据EC92所述的有形计算机可读介质,其中操作进一步包括缓存和/或缓冲映射的至少一部分;并且其中映射部分中的至少一个的至少一部分符合缓存和/或缓冲。
EC94)根据EC86所述的有形计算机可读介质,其中映射是包括第一级映射和第二级映射的二级映射,映射部分对应于第一级映射的部分,条目部分对应于第二级映射的条目。
EC95)根据EC94所述的有形计算机可读介质,其中操作进一步包括缓存和/或缓冲第一级映射和/或第二级映射的至少一部分;并且其中映射部分和条目部分中的至少一个的至少一部分符合缓存和/或缓冲。
EC96)根据EC86所述的有形计算机可读介质,其中映射部分中的每一个符合具有,根据时间发生顺序,比相应映射部分的对应时间戳部分早的对应时间戳部分的所有条目部分。
EC97)根据EC84所述的有形计算机可读介质,其中一个具体时间点是第一具体时间点,并且当写入NVM的检查点单元中的至少一个具有时间戳部分时,存在至少第二具体时间点,所述时间戳部分根据时间发生顺序晚于根据时间发生顺序的在第二具体时间点时写入NVM的映射单元时间戳部分的最新时间戳部分。
EC98)根据EC84所述的有形计算机可读介质,其中一个具体时间点是第一具体时间点,并且当写入NVM的检查点单元中的至少一个具有时间戳部分时,存在至少第二具体时间点,所述时间戳部分根据时间发生顺序晚于根据时间发生顺序的在第二具体时间点时写入NVM的存储单元时间戳部分的最新时间戳部分。
EC99)根据EC82所述的有形计算机可读介质,其中多个存储单元是第一多个存储单元,存储流是第一存储流,并且进一步包括根据第二存储流将第二多个存储单元写入NVM,第二存储单元中的每一个包括数据部分和对应时间戳部分,并且第二存储单元时间戳部分根据彼此的相对时间戳顺序单调递增。
EC100)根据EC99所述的有形计算机可读介质,其中第二存储单元的写入按与第二存储单元时间戳部分表示的时间发生顺序对应的时间顺序写入第二存储单元。
EC101)根据EC99所述的有形计算机可读介质,其中第二存储单元中的至少一个按时间顺序在第一存储单元中的两个之间写入,并且至少一个第二存储单元时间戳部分根据时间发生顺序在两个第一存储单元时间戳部分之间。
EC102)根据EC99所述的有形计算机可读介质,其中第一多个存储单元的数据部分中的至少一个包括来自主机的与主机数据写入命令相关的主机数据,并且其中第二多个存储单元的数据部分中的至少一个包括响应于再循环操作从NVM读取的再循环数据。
EC103)根据EC82所述的有形计算机可读介质,其中时间戳部分被编码以便可以根据时间发生顺序经由比较后的时间戳部分的数值比较来比较时间戳部分。
EC104)根据EC103所述的有形计算机可读介质,其中数值比较忽略比较后的时间戳部分的一个或多个连续最高有效位。
EC105)根据EC103所述的有形计算机可读介质,其中如果比较后的存储单元时间戳部分中的具体存储单元时间戳部分在数值上与比较后的映射单元时间戳部分中的具体映射单元时间戳部分相同,则通过预先确定,当时间戳部分相同时,比较后的存储单元时间戳部分早于比较后的映射单元时间戳部分,来确定比较。
EC106)根据EC105所述的有形计算机可读介质,其中数值身份忽略比较后的时间戳部分的一个或多个连续最高有效位。
EC107)根据EC82所述的有形计算机可读介质,其中条目部分中的每一个都符合具有对应时间戳部分的所有数据部分,所述时间戳部分根据时间发生顺序早于相应条目部分的对应时间戳部分。
EC108)根据EC82所述的有形计算机可读介质,其中存储单元中的每一个以原子的方式写入。
EC109)根据EC82所述的有形计算机可读介质,其中映射单元中的每一个以原子的方式写入。
EC110)根据EC23所述的有形计算机可读介质,其中数据部分中的至少一个包括来自主机的与主机数据写入命令相关的主机数据。
EC111)根据EC82所述的有形计算机可读介质,其中数据部分中的至少一个包括响应于再循环操作从NVM读取的再循环数据。
EC112)根据EC82所述的有形计算机可读介质,其中数据部分中的每一个包括一个或多个数据单元和对应的一个或多个报头,报头中的每一个识别数据单元中的相应对应数据单元和LB中的一个LB之间的相应映射,映射可以确定LB中的相应LB作为数据单元中的相应数据单元写入NVM中的哪里。
EC113)根据EC112所述的有形计算机可读介质,其中报头中的每一个连续写入相应数据单元由相应报头识别的NVM中。
EC114)根据EC61、EC68、EC102或EC110所述的有形计算机可读介质,其中操作进一步包括根据数据写入与主机交互。
EC115)根据EC114所述的有形计算机可读介质,其中交互与存储接口标准兼容。
EC116)根据EC61、EC68、EC102或EC110所述的有形计算机可读介质,其中主机是计算主机,并且进一步包括根据数据写入来操作计算主机。
EC117)根据EC60、EC64或EC82所述的有形计算机可读介质,其中NVM包括一个或多个闪存。
EC118)根据EC117所述的有形计算机可读介质,其中操作进一步包括经由闪存接口与闪存交互。
EC119)一种装置,包括:
经启用以按第一顺序将一系列数据单元排列在非易失性存储器(NVM)中的第一硬件逻辑电路,数据单元中的每一个与多个时间戳中的相应的一个相关联;
经启用以按第二顺序将一系列数据映射单元排列在NVM中的第二硬件逻辑电路,数据映射单元中的每一个与时间戳中的相应的一个相关联;
其中数据映射单元中的每一个包括数据单元中对应数据单元的NVM中的位置;并且
其中与数据单元中的每一个相关联的相应时间戳在与对应数据映射单元相关联的相应时间戳处或之前。
EC120)根据EC119所述的装置,其中第一硬件逻辑电路的至少一部分是共享硬件逻辑电路,该共享硬件逻辑电路也是第二硬件逻辑电路的至少一部分。
EC121)根据EC119所述的装置,其中:
数据单元中的每一个对应于从主机至相应逻辑块地址(LBA)的相应数据写入;
数据单元中的前一个数据单元和后一个数据单元对应于至相应LBA中的同一个LBA的数据写入中的数据写入;并且
前一个数据单元不具有数据映射单元中的相关数据映射单元。
EC122)根据EC119所述的装置,进一步包括:
经启用以在电源故障之后确定数据单元中的最新有效且连续的数据单元的第三硬件逻辑电路;
经启用以在电源故障之后确定数据映射单元中的最新有效且连续的数据映射单元的第四硬件逻辑电路,其中与数据映射单元中的最新有效且连续的数据映射单元相关联的相应时间戳在与数据单元中的最新有效且连续的数据单元相关联的相应时间戳处或之前;
经启用以仅将数据映射单元中的数据映射单元恢复至数据映射单元中的最新有效且连续的数据映射单元的第五硬件逻辑电路;并且
其中在恢复中忽略与相应时间戳中的任意一个相关联的数据映射单元中的任意一个,所述相应时间戳在与数据单元中的最新有效且连续的数据单元相关联的相应时间戳之后。
EC123)根据EC119所述的装置,其中数据单元是数据存储单元。
EC124)一种装置,包括:
经启用以将一系列数据存储单元写入非易失性存储器(NVM)的第一硬件逻辑电路,数据存储单元中的每一个与多个时间戳中的相应的一个相关联;
经启用以将一系列数据映射单元写入NVM的第二硬件逻辑电路,数据映射单元中的每一个与时间戳中的相应的一个相关联;
其中数据映射单元中的每一个包括数据存储单元中对应数据存储单元的NVM中的位置;并且
其中与数据存储单元中的每一个相关联的相应时间戳表示相对年龄,所述相对年龄等于或老于与对应数据映射单元相关联的相应时间戳表示的相对年龄。
EC125)根据EC124所述的装置,其中第一硬件逻辑电路的至少一部分是共享硬件逻辑电路,该共享硬件逻辑电路也是第二硬件逻辑电路的至少一部分。
EC126)根据EC124所述的装置,其中数据存储单元的写入符合第一顺序并且数据映射单元的写入符合第二顺序。
EC127)根据EC124所述的装置,其中数据存储单元根据第一顺序布置在NVM中并且数据映射单元根据第二顺序布置在NVM中。
EC128)根据EC124所述的装置,其中:
数据存储单元中的第一个对应于从主机至具体逻辑块地址(LBA)的第一数据写入;
数据存储单元中的第二个对应于从主机至具体LBA的第二数据写入;
第一数据写入按时间顺序在第二数据写入前;并且
数据映射单元中没有一个与第一数据存储单元对应。
EC129)根据EC126所述的装置,进一步包括:
经启用以在事件之后根据第一顺序确定数据存储单元中的最新有效且连续的一个的第三硬件逻辑电路;
经启用以在事件之后根据第二顺序确定与表示相对年龄的相应时间戳中的一个相关联的数据映射单元中的最新有效且连续的数据映射单元的第四硬件逻辑电路,所述相对年龄等于或老于与数据存储单元中的最新有效且连续的一个相关联的相应时间戳表示的相对年龄;以及
经启用以根据第一和第二顺序仅将数据映射单元中的数据映射单元恢复至数据映射单元中的最新有效且连续的数据映射单元的第五硬件逻辑电路。
EC130)一种装置,包括:
经启用以根据存储流将多个存储单元写入非易失性存储器(NVM)的第一硬件逻辑电路,存储单元中的每一个包括数据部分和对应时间戳部分;
经启用以根据映射流将多个映射单元写入NVM的第二硬件逻辑电路,映射单元中的每一个包括条目部分和对应时间戳部分;
其中至少一部分条目部分中的每一个可以通过指定数据部分中的至少对应数据部分来确定将相应逻辑块(LB)写入NVM中的哪里;
其中时间发生顺序由时间戳部分表示,存储单元时间戳根据彼此的相对时间戳顺序单调递增,并且映射单元时间戳根据彼此的相对时间戳顺序单调递增;并且
其中当写入NVM的映射单元中的至少一个具有时间戳部分时,存在至少一个具体时间点,所述时间戳部分根据时间发生顺序晚于根据时间发生顺序的在具体时间点时写入NVM的存储单元时间戳部分的最新时间戳部分。
EC131)根据EC130所述的装置,其中第一硬件逻辑电路的至少一部分是共享硬件逻辑电路,该共享硬件逻辑电路也是第二硬件逻辑电路的至少一部分。
EC132)根据EC130所述的装置,其中第一硬件逻辑电路按与存储单元时间戳部分表示的时间发生顺序对应的时间顺序写入存储单元,并且第二硬件逻辑电路按与映射单元时间戳部分表示的时间发生顺序对应的时间顺序写入映射单元。
EC133)根据EC130所述的装置,进一步包括经启用以根据检查点流将一个或多个检查点单元写入NVM的第三硬件逻辑电路,检查点单元中的每一个包括映射部分和对应时间戳部分,并且其中检查点时间戳部分根据彼此的相对时间戳顺序单调递增。
EC134)根据EC133所述的装置,其中第三硬件逻辑电路按与检查点时间戳部分表示的时间发生顺序对应的时间顺序写入检查点单元。
EC135)根据EC133所述的装置,其中连续一组预定数量的检查点单元至少包括条目部分符合于此的映射的整个检查点。
EC136)具有或参照存储接口标准的任意前述EC,其中存储接口标准包括以下各项中的一项或多项:
通用串行总线(USB)接口标准,
紧凑式闪存(CF)接口标准,
多媒体卡(MMC)接口标准,
嵌入式MMC(eMMC)接口标准,
Thunderbolt接口标准,
UFS接口标准,
安全数字(SD)接口标准,
记忆棒接口标准,
xD图片卡接口标准,
集成驱动电子装置(IDE)接口标准,
串行高级技术附件(SATA)接口标准,
外部SATA(eSATA)接口标准,
小型计算机系统接口(SCSI)接口标准,
串行连接小型计算机系统接口(SAS)接口标准,
光纤通道接口标准,
以太网接口标准,以及
快速外围组件互连(PCIe)接口标准。
EC137)具有或参照闪存接口的任意前述EC,其中闪存接口与以下各项中的一项或多项兼容:
开放NAND闪存接口(ONFI),
切换模式接口,
双倍数据速率(DDR)同步接口,
DDR2同步接口,
同步接口,以及
异步接口。
EC138)具有或参照计算主机的任意前述EC,其中计算主机包括以下各项中的一项或多项:
计算机,
工作站计算机,
服务器计算机,
存储服务器,
存储附接网络(SAN),
网络附接存储(NAS)设备,
直接附接存储(DAS)设备,
存储器具,
个人计算机(PC),
膝上电脑,
笔记本电脑,
上网本电脑,
平板设备或电脑,
超极本电脑,
电子阅读设备(电子阅读器),
个人数字助理(PDA),
导航系统,
(手持式)全球定位系统(GPS)设备,
汽车控制系统,
汽车媒体控制系统或计算机,
打印机、复印机或传真机或多合一设备,
销售点(POS)设备,
现金出纳机,
媒体播放器,
电视机,
媒体记录器,
数字视频录像机(DVR),
数码相机,
蜂窝手机,无绳电话手机,以及
电子游戏机。
EC139)具有或参照至少一个闪存设备的任意前述EC,其中至少一个闪存设备的至少一部分包括以下各项中的一项或多项:
NAND闪存技术存储单元,以及
NOR闪存技术存储单元。
EC140)具有或参照至少一个闪存设备的任意前述EC,其中至少一个闪存设备的至少一部分包括以下各项中的一项或多项:
单层单元(SLC)闪存技术存储单元,以及
多层单元(MLC)闪存技术存储单元。
EC141)具有或参照至少一个闪存设备的任意前述EC,其中至少一个闪存设备的至少一部分包括以下各项中的一项或多项:
基于多晶硅技术的电荷存储单元,以及
基于氮化硅技术的电荷存储单元。
EC142)具有或参照至少一个闪存设备的任意前述EC,其中至少一个闪存设备的至少一部分包括以下各项中的一项或多项:
基于二维技术的闪存技术,以及
基于三维技术的闪存技术。
系统
在某些实施方式中,诸如SSD的I/O设备包括SSD控制器。SSD控制器充当SSD的主机接口和NVM之间的桥接器,并执行经由SSD的主机接口从计算主机发送的主机协议的命令。至少一部分命令指示SSD写入并读取具有分别从计算主机和向计算主机发送的数据的NVM。在进一步的实施方式中,SSD控制器经启用以使用映射来在主机协议的LBA和NVM中的物理存储地址之间转换。在进一步的实施方式中,映射的至少一部分用于I/O设备的私有存储(对计算主机不可见)。例如,计算主机不可访问的LBA的一部分被I/O设备用来管理对日志、统计或其他私有数据的访问。
在某些实施方式中,访问NVM中不同大小配量的压缩数据在某些使用场景下具有提高的存储效率。例如,SSD控制器从计算主机接收(未压缩)数据(例如,与磁盘写入命令相关),压缩该数据,并将压缩后的数据存储到闪存中。响应于来自计算主机的后续请求(例如,与磁盘读取命令相关),SSD控制器从闪存中读取压缩数据,对压缩数据进行解压,并向计算主机提供未压缩数据。根据不同大小量子将压缩数据存储在闪存中,量子大小由于压缩算法、操作模式和各种数据的压缩效率等而变化。SSD控制器通过查阅所包括的映射表对数据进行部分解压以确定报头存储在闪存中的位置。SSD控制器解析从闪存获得的报头以确定适当的(压缩)数据存储在闪存中的位置。SSD控制器对来自闪存的适当的数据进行解压以产生未压缩数据并将其提供给计算主机。在即时应用中,解压(及其变型)与减压(及其变型)同义。
在各种实施方式中,SSD控制器包括与计算主机交互的主机接口、与NVM诸如闪存交互的接口以及用于控制接口并进行(和/或控制进行的各方面)压缩和解压,以及较低级冗余和/或纠错、较高级冗余和/或纠错及使用独立硅元件的动态较高级冗余模式管理的电路。
根据各种实施方式,某些主机接口与USB接口标准、CF接口标准、MMC接口标准、eMMC接口标准、Thunderbolt接口标准、UFS接口标准、SD接口标准、记忆棒接口标准、xD图片卡接口标准、IDE接口标准、SATA接口标准、SCSI接口标准、SAS接口标准和PCIe接口标准中的一个或多个兼容。根据各种实施方式,计算主机是计算机、工作站计算机、服务器计算机、存储服务器、SAN、NAS设备、DAS设备、存储器具、PC、膝上电脑、笔记本电脑、上网本电脑、平板设备或电脑、超极本电脑、电子阅读设备(诸如电子阅读器)、PDA、导航系统、(手持式)GPS设备、汽车控制系统、汽车媒体控制系统或计算机、打印机、复印机或传真机或多合一设备、POS设备、现金出纳机、媒体播放器、电视机、媒体记录器、DVR、数码相机、蜂窝手机、无绳电话手机和电子游戏机中的所有或任意部分。在某些实施方式中,接口主机(诸如SAS/SATA桥接器)作为计算主机和/或作为计算主机的桥接器进行操作。
在各种实施方式中,SSD控制器包括一个或多个处理器。控制器执行固件以控制和/或进行SSD控制器的操作。SSD控制器与计算主机通信以发送并接收命令和/或状态以及数据。计算主机执行操作系统、驱动和应用程序中的一个或多个。计算主机与SSD控制器的通信任选地和/或可选地是经由驱动和/或经由应用程序进行的。在第一示例中,与SSD控制器的所有通信是经由驱动进行的,并且应用程序向驱动提供驱动转换为SSD控制器的具体命令的较高级命令。在第二示例中,驱动实现旁通模式并且使应用程序能够经由驱动向SSD控制器发送具体命令。在第三示例中,PCIe SSD控制器支持一个或多个虚拟函数(VF),从而启用应用程序,一旦配置,就绕过驱动而与SSD控制器直接通信。
根据各种实施方式,某些SSD与由磁性和/或光学非易失性存储器(诸如,HDD、CD驱动器及DVD驱动器)所使用的形状因数、电接口和/或协议兼容。在各种实施方式中,SSD使用零或零以上奇偶码、零或零以上RS码、零或零以上BCH码、零或零以上维特比或其他格子码及零或零以上LDPC码。
图1A示出了包括使用自身日志记录和层级一致性来管理非易失性存储,诸如闪存的SSD控制器的SSD101的实施方式的所选细节。SSD控制器用于管理诸如经由NVM元件(例如,闪存)实现的非易失性存储。SSD控制器100经由一个或多个外部接口110与主机(未示出)通信耦合。根据各种实施方式,外部接口110是以下各项中的一项或多项:SATA接口;SAS接口;PCIe接口;光纤通道接口;外部接口(诸如10千兆以太网);任意前述接口的非标准版本;定制接口;或用于将存储和/或通信和/或计算设备互连的任何其他类型的接口。例如,在某些实施方式中,SSD控制器100包括SATA接口和PCIe接口。
SSD控制器100进一步经由一个或多个设备接口190与包括一个或多个存储设备(诸如,闪存设备192的一个或多个示例)的NVM199通信耦合。根据各种实施方式,设备接口190是以下各项中的一项或多项:异步接口;同步接口;单倍数据速率(SDR)接口;双倍数据速率(DDR)接口;DRAM兼容DDR或DDR2同步接口;ONFI兼容接口(诸如,ONFI2.2or ONFI3.0兼容接口);切换模式兼容闪存接口;任意前述接口的非标准版本;定制接口;或用于连接至存储设备的任何其他类型的接口。
在某些实施方式中,每一个闪存设备192具有一个或多个个别闪存芯片194。根据闪存设备192的具体闪存设备的类型,具体闪存设备192中的多个闪存芯片194任选地和/或可选地并行访问。闪存设备192只表示经启用以与SSD控制器100通信耦合的一种类型的存储设备。在各种实施方式中,任何类型的存储设备都是可使用的,诸如SLC NAND闪存、MLCNAND闪存、NOR闪存、使用基于多晶硅或氮化硅技术的电荷存储单元的闪存、基于二维或三维技术的闪存、只读存储器、静态随机存取存储器、动态随机存取存储器、铁磁性存储器、相变存储器、赛道存储器、ReRAM或任何其他类型的存储器设备或存储介质。
根据各种实施方式,设备接口190被组织为:一条或多条总线,其中每条总线具有闪存设备192的一个或多个示例;一个或多个总线组,其中每条总线具有闪存设备192的一个或多个示例,其中组中的总线通常被并行访问;或至设备接口190的闪存设备192的一个或多个示例的任何其他组织。
继续图1A,SSD控制器100具有一个或多个模块,诸如主机接口111、数据处理121、缓冲器131、映射141、再循环器151、ECC161、设备接口逻辑191以及CPU171。图1A中所示的具体模块和互连仅仅表示一个实施方式,可以想到一些或所有模块以及未示出的其他模块的多种布置和互连。在第一示例中,在某些实施方式中,存在两个或两个以上主机接口111来提供双通道。在第二示例中,在某些实施方式中,数据处理121和/或ECC161与缓冲器131组合。在第三示例中,在某些实施方式中,主机接口111直接与缓冲器131耦合,并且数据处理121任选地和/或可选地对于存储在缓冲器131中的数据进行操作。在第四示例中,在某些实施方式中,设备接口逻辑191直接与缓冲器131耦合,并且ECC161任选地和/或可选地对于存储在缓冲器131中的数据进行操作。
主机接口111经由外部接口110发送和接收命令和/或数据,并且,在某些实施方式中,经由标签跟踪113来跟踪单独命令的进程。例如,命令包括指定要读取的数据的地址(诸如LBA)和量(诸如LBA配量,例如扇区的数量)的读取命令;作为响应,SSD提供读取状态和/或读取数据。再如,命令包括指定要写入的数据的地址(诸如LBA)和量(诸如LBA配量,例如扇区的数量)的写入命令;作为响应,SSD提供写入状态和/或请求写入数据且随后任选提供写入状态。对于又一示例,命令包括指定不再需要分配的一个或多个地址(诸如一个或多个LBA)的解分配命令(例如,修整命令);作为响应,SSD相应地修改映射且任选提供解分配状态。在某些上下文中,ATA兼容TRIM命令是示例性解分配命令。对于又一示例,命令包括超级电容器测试命令或数据强化成功查询;作为响应,SSD提供适当状态。在某些实施方式中,主机接口111与SATA协议兼容,并且,使用NCQ命令而启用以具有最多32条待处理命令,每条命令有表示为数字0至31的唯一标签。在某些实施方式中,标签跟踪113经启用以使经由外部接口110接收的命令的外部标签与用于在SSD控制器100处理过程中跟踪命令的内部标签相关联。
根据各种实施方式,揭示以下各项中的一个或多个:数据处理121任选地和/或可选地处理在缓冲器131与外部接口110之间发送的一些或所有数据;以及数据处理121任选地和/或可选地处理存储在缓冲器131中的数据。在某些实施方式中,数据处理121使用一个或多个引擎123来执行以下各项中的一项或多项:格式化;重新格式化;转码;以及任何其他的数据处理和/或操控任务。
缓冲器131存储自设备接口190发送至外部接口110/自外部接口110发送至设备接口190的数据,在某些实施方式中,缓冲器131另外存储由SSD控制器100使用的系统数据(诸如某些或全部映射表)以管理闪存设备192的一个或多个情况。在各种实施方式中,缓冲器131具有以下各项中的一个或多个:用于临时存储数据的存储器197;用于控制去往和/或来自缓冲器131的数据的移动的DMA133;用于提供较高级错误校正和/或冗余功能的ECC-X135;和其他数据移动和/或操控功能。较高级冗余功能的示例是类似于RAID的能力(例如,RASIE),其中冗余在闪存设备(例如闪存设备192的多个闪存设备)级和/或闪存芯片(诸如闪存芯片194)级上而非在磁盘级上。
根据各种实施方式,揭示以下各项中的一个或多个:ECC161任选地和/或可选地处理在缓冲器131和设备接口190之间发送的一些或所有数据;以及ECC161任选地和/或可选地处理存储在缓冲器131内的数据。在某些实施方式中,ECC161用于提供较低级错误校正和/或诸如根据一个或多个ECC计算的冗余功能。在某些实施方式中,ECC161实现以下各项中的一个或多个:CRC码;汉明码;RS码;BCH码;LDPC码;维特比(Viterbi)码;格子码;硬判决码;软判决码;基于擦除的码;任何错误检测和/或纠正码;以及上述的任意组合。在某些实施方式中,ECC161包括一个或多个解码器(诸如LDPC解码器)。
设备接口逻辑191经由设备接口190控制闪存设备192的实例(instance)。设备接口逻辑191经启用以根据闪存设备192的协议将数据发送到或从闪存设备192发送数据。设备接口逻辑191包括调度193,从而经由设备接口190可选地顺序控制闪存设备192的实例。例如,在某些实施方式中,调度193经启用从而将对于闪存设备192的实例的操作排队,并且当单独的闪存设备192(或闪存芯片194)的实例可用时,选择性地地将操作发送至单独的闪存设备192(或闪存芯片194)的实例。
映射141在用于外部接口110上的数据寻址与用于设备接口190上的数据寻址之间转换,使用表143将外部数据地址映射至NVM199中的位置。例如,在某些实施方式中,映射141经由由表143提供的映射将用于外部接口110上的LBA转换成针对一个或多个闪存芯片192的块和/或页地址。对于自驱动制造或解分配起就未曾被写入的LBA,该映射指向缺省值以传回LBA是否被读取。例如,在处理解分配命令时,修改该映射以使得对应于解分配的LBA的条目指向缺省值中的一个。在各种实施方式中,存在各种缺省值,其各自具有对应指针。多个缺省值使得能够将某些解分配的LBA(诸如在第一范围中)读取为一个缺省值,同时其他解分配的LBA(诸如在第二范围中)读取为另一个缺省值。在各种实施方式中,缺省值由闪存、硬件、固件、命令和/或基元引数(primitive argument)和/或参数、可编程寄存器或其各种组合定义。
在某些实施方式中,映射141使用表143从而在外部接口110上使用的地址和设备接口190上使用的数据寻址之间执行和/或查询转换。根据各种实施方式,表143为以下各项中的一个或多个:一级映射;二级映射;多级映射;映射缓存;压缩映射;一个地址空间至另一个地址空间的任何类型映射;以及上述的任意组合。根据各种实施方式,表143包括以下各项中的一个或多个:静态随机存取存储器;动态随机存取存储器;非易失性存储器;NVM(诸如闪存);缓存存储器;片上存储器;片外存储器;和上述的任意组合。
在某些实施方式中,再循环器151执行垃圾收集。例如,在某些实施方式中,闪存设备192的实例包含在可重写入之前必须擦除的块。再循环器151经启用以例如通过扫描映射141保持的映射来确定闪存设备192的实例的哪些部分正在活跃地使用(例如,经分配而非经解分配),然后使闪存设备192的实例的未使用(例如,解分配)部分通过擦除未使用部分而可用于写入。在进一步的实施方式中,再循环器151经启用以移动存储在闪存设备192的实例内的数据,以使闪存设备192的实例的更大的连续部分可用于写入。
在某些实施方式中,闪存设备192的实例可选地和/或动态地经配置、管理和/或使用以具有用于存储不同类型和/或性质的数据的一个或多个记录带。记录带的数目、布置、大小和类型可动态地改变。例如,将来自计算主机的数据写入热(活跃)记录带,而将来自再循环器151的数据写入冷(较少活跃)记录带中。在某些使用场景下,如果计算主机写入长的顺序流,则热记录带的大小增加,而如果计算主机随机写入或几乎不写入,则冷记录带的大小增加。
CPU171控制SSD控制器100的相应部分。CPU171包括CPU内核172。根据各种实施方式,CPU内核172为一个或多个单核或多核处理器。在某些实施方式中,CPU内核172中的相应处理器内核是多线程的。CPU内核172包括指令和/或数据缓存器和/或存储器。例如,指令存储器包括能使CPU内核执行软件(有时称为固件)以控制SSD控制器100的指令。在某些实施方式中,CPU内核172执行的一些或所有固件存储在闪存设备192的实例上(例如,如图1B中的NVM199的固件106示出的)。
在各种实施方式中,CPU171进一步包括:在经由外部接口110接收的命令处于进程的同时来跟踪和控制该命令的命令管理173;控制缓冲器131的分配和使用的缓冲器管理175;控制映射141的转换管理177;控制数据寻址的一致性并避免诸如外部数据访问和再循环数据访问之间冲突的一致性管理179;控制设备接口逻辑191的设备管理181;控制身份信息的修改和通信的身份管理182;以及任选其他管理单元。根据各种实施方式,CPU171执行的任何或所有管理功能是由硬件、软件(诸如在CPU内核172或经由外部接口110连接的主机上执行的固件)或其任何组合进行控制和/或管理的。
在某些实施方式中,CPU171经启用以执行其他管理任务,例如,以下各项中的一个或多个:收集和/或报告性能统计;实现SMART;控制电力排序、控制和/或监测和/或调整电力消耗;对电力故障做出响应;控制和/或监测和/或调整时钟速率;以及其他管理任务。
各种实施方式包括与SSD控制器100类似并且与各种计算主机的操作兼容的计算主机闪存控制器,诸如,经由主机接口111和/或外部接口110适配。各种计算主机包括以下各项中的一个或其任何组合:计算机、工作站计算机、服务器计算机、存储服务器、SAN、NAS设备、DAS设备、存储器具、PC、膝上电脑、笔记本电脑、上网本电脑、平板设备或电脑、超极本电脑、电子阅读设备(诸如电子阅读器)、PDA、导航系统、(手持式)GPS设备、汽车控制系统、汽车媒体控制系统或计算机、打印机、复印机或传真机或多合一设备、POS设备、现金出纳机、媒体播放器、电视机、媒体记录器、DVR、数码相机、蜂窝手机、无绳电话手机和电子游戏机。
在各种实施方式中,SSD控制器(或计算主机闪存控制器)的所有或任意部分在单个IC、多芯片IC的单芯片、多芯片IC的多个芯片或多个IC上实现。例如,缓冲器131在与SSD控制器100的其他元件相同的芯片上实现。再如,缓冲器131在与SSD控制器100的其他元件不同的芯片上实现。
图1B示出了包括图1A的SSD的一个或多个示例的系统的各种实施方式的所选细节。SSD101包括经由设备接口190与NVM199耦合的SSD控制器100。该图示出了各类实施方式:直接与主机耦合的单个SSD,各自经由相应外部接口分别直接与主机耦合的多个SSD,以及经由相应互连元件间接与主机耦合的一个或多个SSD。
作为直接与主机耦合的单个SSD的示例性实施方式,SSD101的一个示例经由外部接口110直接与主机102耦合(例如,省略、绕过或穿过切换器/光纤/中间控制器103)。作为各自经由相应外部接口直接与主机耦合的多个SSD的示例性实施方式,SSD101的多个示例中的每一个经由由外部接口110直接与主机102耦合(例如,省略、绕过或穿过切换器/光纤/中间控制器103)。作为经由相应互连元件间接与主机耦合的一个或多个SSD的示例性实施方式,SSD101的一个或多个示例中的每一个分别间接与主机102耦合。每个间接耦合经由与切换器/光纤/中间控制器103耦合的外部接口110以及与主机102耦合的中间接口104的相应示例。
包括切换器/光纤/中间控制器103的实施方式的某些实施方式还包括经由存储器接口180耦合且SSD可访问的卡存储器112C。在各种实施方式中,SSD、切换器/光纤/中间控制器103和/或卡存储器中的一个或多个包括在物理可识别的模块、卡或可插入元件(例如,I/O卡116)上。在某些实施方式中,SSD101(或其变型)对应于与作为主机102操作的起始器耦合的SAS驱动器或SATA驱动器。
主机102经启用以执行主机软件115的相应元件,诸如OS105、驱动107、应用程序109和多设备管理软件114的各种组合。虚线箭头107D表示主机软件←→I/O设备通信,例如,经由驱动107及应用程序109(经由驱动107或直接作为VF)自SSD101的示例中的一个或多个发送至OS105中的一个或多个及自OS105的一个或多个接收至SSD101的示例中的一个或多个的数据。
OS105包括和/或经启用以借助与SSD交互的驱动(概念上由驱动107示出)操作。Windows的各种版本(例如,95、98、ME、NT、XP、2000、Server、Vista及7)、Linux的各种版本(例如,Red Hat、Debian及Ubuntu)及MacOS的各种版本(例如,8、9及X)是OS105的示例。在各种实施方式中,驱动是借助标准接口和/或协议诸如SATA、AHCI或NVM Express)操作的标准和/或通用驱动(有时称为“紧缩套装”或“预安装”),或者任选定制和/或供应商具体以启用SSD101所具体的命令的使用。某些驱动器和/或驱动具有穿过模式以启用应用级程序,诸如经由最佳化NAND访问(有时称为ONA)或直接NAND访问(有时称为DNA)技术的应用程序,以将命令直接通信至SSD101,使得定制应用程序能够甚至借助通用驱动使用SSD101所具体的命令。ONA技术包括以下各项中的一个或多个:非标准修饰符(提示)的使用;供应商具体命令的使用;非标准统计诸如根据可压缩性的实际NVM使用的通信;以及其他技术。DNA技术包括以下各项中的一个或多个:提供对NVM的未经映射读取、写入和/或擦除存储的非标准命令或供应商具体命令的使用,诸如通过绕过I/O设备原本将进行的数据的格式化来提供对NVM的更直接访问的非标准或供应商具体命令的使用;以及其他技术。驱动的示例是不具有ONA或DNA支持的驱动、ONA启用的驱动、DNA启用的驱动及ONA/DNA启用的驱动。驱动的进一步示例是供应商提供、供应商开发和/或供应商增强驱动及客户端提供、客户端开发和/或客户端增强驱动。
应用级程序的示例是不具有ONA或DNA支持的应用程序、ONA启用的应用程序、DNA启用的应用程序及ONA/DNA启用的应用程序。虚线箭头109D表示应用程序I/O设备通信(例如,经由驱动绕过或经由用于应用程序的VF绕过),例如,ONA启用的应用程序及与SSD通信(诸如不具有使用OS作为媒介物的应用程序)的ONA启用的驱动。虚线箭头109V表示应用程序←→I/O设备通信(例如,经由用于应用程序的VF绕过),例如DNA启用的应用程序和与SSD通信(诸如不具有使用OS或驱动作为媒介物的应用程序)的DNA启用的驱动。
在某些实施方式中,NVM199的一个或多个部分用于固件存储,例如固件106。固件存储包括一个或多个固件图像(或其部分)。例如,固件图像具有(例如)通过SSD控制器100的CPU内核172执行的固件的一个或多个图像。再如,固件图像具有(例如)在固件执行期间有CPU内核参考的常数、参数值及NVM设备信息的一个或多个图像。固件的图像对应于(例如)当前固件图像及零或零以上先前(相对于固件更新)固件图像。在各种实施方式中,固件提供通用、标准、ONA和/或DNA操作模式。在某些实施方式中,经由任选由驱动通信和/或提供的密钥或各种软件技术来启用固件操作模式中的一个或多个(例如,一个或多个API“未经锁定”)。
在缺少切换器/光纤/中间控制器的某些实施方式中,SSD经由外部接口110直接与主机耦合。在各种实施方式中,SSD控制器100经由其他控制器,诸如RAID控制器的一个或多个中间阶层与主机耦合。在某些实施方式中,SSD101(或其变型)对应于SAS驱动器或SATA驱动器,且切换器/光纤/中间控制器103对应于扩展器,该扩展器又与起始器耦合,或可替代地,切换器/光纤/中间控制器103对应于桥接器,该桥接器经由扩展器间接与起始器耦合。在某些实施方式中,切换器/光纤/中间控制器103包括一个或多个PCIe切换器和/或光纤。
在各种实施方式中,诸如在其中主机102作为计算主机(例如,计算机、工作站计算机、服务器计算器、存储服务器、SAN、NAS设备、DAS设备、存储器具、PC、膝上电脑、笔记本电脑和/或上网本电脑)的某些实施方式中,计算主机任选经启用以与一个或多个本地和/或远程服务器(例如,任选服务器118)通信(例如,经由任选I/O&存储设备/资源117以及任选LAN/WAN119)。例如,通信启用SSD101元件的任意一个或多个的本地和/或远程访问、管理和/或使用。在某些实施方式中,通信完全地或部分地经由以太网。在某些实施方式中,通信完全地或部分地经由光纤通道。在某些实施方式中,LAN/WAN119表示一个或多个局域和/或广域网,诸如服务器场中的网络、耦合服务器场的网络、城域网和互联网中的任意一个或多个。
在各种实施方式中,SSD控制器和/或计算主机闪存控制器结合一个或多个NVM一起实现为非易失性存储组件,诸如USB存储组件、CF存储组件、MMC存储组件、eMMC存储组件、Thunderbolt存储组件、UFS存储组件、SD存储组件、记忆棒存储组件和xD图片卡存储组件。
在各种实施方式中,SSD控制器(或计算主机闪存控制器)的所有或任何部分或其功能在主机(例如,图1B的主机102)中实现,控制器要与该主机耦合。在各种实施方式中,SSD控制器(或计算主机闪存控制器)的所有或任何部分或其功能经由硬件(例如,逻辑电路)、软件和/或固件(例如,驱动软件和/或SSD控制固件)或其任意组合来实现。例如,ECC单元(诸如,类似于图1A的ECC161和/或ECC-X135)的功能或与该ECC单元相关联的功能经由软件在主机上实现且部分经由固件和硬件的组合在SSD控制器中实现。再如,再循环器单元(诸如类似于图1A的再循环器151)的功能或与该再循环器单元相关联的功能部分地经由软件在主机上实现且部分地经由硬件在计算主机闪存控制器中实现。
映射操作
图2示出了映射LBA的LPN部分的实施方式的所选细节。在某些实施方式中,读取单元是可独立读取的最细粒度的NVM,诸如NVM的页面的一部分。在进一步的实施方式中,读取单元对应于(较低级)错误校正码的校验位(有时称为冗余)和由校验位保护的所有数据。例如,图1A的ECC161经由校验码诸如经由LDPC码来实现错误校正,并且读取单元除由LDPC编码位保护的数据位之外还对应于实现LDPC码的编码位。
在某些实施方式中,映射141诸如经由表143(如图1A所示)将LBA211的LPN213部分映射成LPN的映射信息221。LPN的映射信息(诸如LPN的映射信息221)有时被称为映射条目。据说映射141使LPN与对应映射条目相关联。在各种实施方式中,映射经由一个或多个相关查找,经由一个或多个非相关查找,和/或经由一个或多个其他技术。
在某些实施方式中,SSD控制器100为潜在和/或活动主动使用中的每个LPN维持一个映射条目。
在某些实施方式中,LPN的映射信息221包括相应读取单元地址223和读取单元的长度225。在某些实施方式中,存储长度和/或跨度,诸如通过将长度存储为相对于跨度的补偿来在读取单元的长度225的所有或任意部分中进行编码。在进一步的实施方式中,第一LPN与第一映射条目相关联,第二LPN(不用于第一LPN,但引用大小与由第一LPN引用的逻辑页面的大小相同的逻辑页面)与第二映射条目相关联,并且第一映射条目的读取单元中的相应长度不同于第二映射条目的读取单元中的相应长度。
在各种实施方式中,在同一时间点,第一LPN与第一映射条目相关联,第二LPN(不同于第一LPN)与第二映射条目相关联,并且第一映射条目的相应读取单元地址与第二映射条目的相应读取单元地址相同。在进一步的实施方式中,与第一LPN相关联的数据和与第二LPN相关联的数据都存储在NVM199中的同一设备的同一物理页面中。
根据各种实施方式,读取单元地址223与以下各项中的一个或多个相关联:NVM中的开始地址;NVM中的结束地址;任意前述的补偿;以及用于识别与LPN213相关联的NVM的一部分的任何其他技术。
图3示出了在读取单元地址访问NVM以产生被组织为相应读取单元的读取数据,集体具有在读取单元配量中测得的长度的实施方式的所选细节。根据各种实施方式,第一读取单元313是以下各项中的一个或多个:在NVM的地址空间中具有最低地址的读取数据311中的读取单元之一;读取单元的固定读取单元;读取单元的任意读取单元;读取单元的可变读取单元;以及通过任何其他技术选择的读取单元之一。在各种实施方式中,通过读取不超过由单位单元的长度225指定的数量的读取单元来启用SSD控制器100以访问NVM199并产生读取数据311。
图4A示出了读取单元(诸如图3的读取单元313或315)作为读取单元401A的一个实施方式的所选细节。在各种实施方式和/或使用场景下,报头1441A至报头N419A是连续的,并且由每个报头识别的相应数据区域(诸如经由相应补偿)继最后一个报头之后是连续的。数据区域集体形成数据字节421A。按位置顺序存储数据区域,并且该位置顺序匹配存储报头的位置顺序。例如,鉴于第一报头,在读取单元开始时,第二报头和第三报头连续紧接着第一报头。第一数据区域(通过第一报头中的第一补偿识别的)连续紧接着第三报头。第二数据区域(通过第二报头中的第二补偿识别的)连续紧接着第一报头。类似地,第三数据区域(通过第三报头识别的)连续紧接着第二数据区域。
图4B示出了读取单元(诸如图3的读取单元313或315)作为读取单元401B的另一实施方式的所选细节。在各种实施方式和/或使用场景下,报头标记(HM)410B是表示以下连续的报头(报头1411B、报头2412B…报头N419B)的数量的任选初始域(诸如1字节域)。数据区域(数据字节421B、数据字节422B…数据字节429B)分别由报头(报头1411B、报头2412B…报头N419B)识别并按位置顺序存储,该位置顺序与存储报头的位置顺序相反。报头开始于读取单元的初端,而对应数据区域开始于读取单元的末端。在某些实施方式中,数据区域中的数据字节(例如,数据字节421B、数据字节422B…数据字节429B)按递增顺序(匹配位置顺序的字节顺序)排列,而在其他实施方式中,数据字节沿相反顺序(相对于位置反向的字节顺序)排列。在某些实施方式中,报头标记在读取单元中使用,其中报头和数据字节按同一位置顺序存储(例如,如图4A所示)。
在某些实施方式中,任选填充字节413A(或413B)符合与具体LPN相关联的数据的粒度。例如,在某些实施方式中,如果数据字节421A(或集体为数据字节421B、数据字节422B…数据字节429B)具有少于固定量的剩余空间,诸如8字节,在存储与除了报头1411A至报头N419A(或报头1411B、报头2412B…报头N419B)的最后一个报头之后的所有报头相关联的数据之后,与最后报头相关联的LPN的数据开始于后续读取单元。在进一步的实施方式中,最后报头中的具体补偿值(例如,所有补偿值)表示与最后报头相关联的LPN的数据开始于后续读取单元。
图5示出了具有大量域的报头(诸如,图4A的报头1411A至报头N419A或图4B的报头1411B至报头419B中的任意一个)的实施方式的所选细节。在某些实施方式中,报头为固定长度(例如,每个报头的长度为相同数量的字节)。报头501包括域类型511、最后指示符513、标志515、LPN517、长度519和补偿521。根据各种实施方式,报头501包括和/或与纪元523相关联和/或任选地和/或可选地附加有或前面加有纪元523。类型域识别数据字节的类别。例如,类型域表示数据字节的类别为主机数据(例如,逻辑页面数据)或系统数据(例如映射信息或检查点信息)中的一个。最后域表示报头是数据字节之前的最后报头。在具有报头标记的某些实施方式中,任选省略最后域。LPN域是报头与其相关联的LPN。LPN域启用报头解析以通过(例如)搜索报头中LPN域与具体LPN匹配的报头来确定与具体LPN相关联的报头中的具体报头。长度域是数据字节的字节长度(例如,数据有多少字节在与报头501相关联的数据字节421A中)。在某些实施方式中,补偿域中的补偿根据具体粒度(例如,8字节粒度)进行取整。纪元域是识别对象的写入顺序的时间标记,相对于相同或不同流的其他对象,报头是该对象的一部分。
在各种实施方式中,与具体LPN相关联的一部分或所有信息存储在与具体LPN相关联的映射条目、与具体LPN相关联的报头或这两者中。例如,在某些实施方式中,长度519的一些或所有存储在映射条目中,而不是报头中。
图6示出了多个NVM设备(例如,一个或多个闪存芯片)的块、页面和读取单元的所选细节。
每个设备(诸如设备601,603…609中的任意一个)提供被组织为块(诸如设备601的块631,633…639;设备603的块661,663…669;等等)的存储。在某些实施方式中,每个设备包括整数个块并且块是擦除的最小配量。块反之包括页面(诸如块631的页面621,623…629;块661的页面651,653…659;等等)。在某些实施方式中,每个块包括整数个页面并且页面是写入的最小配量。页面反之包括读取单元(诸如页面621的读取单元611,613…619;页面651的读取单元641,643…649;等等)。根据各种实施方式,揭示以下各项中的一项或多项:读取单元是读取和错误校正的最小配量;每个页面包括整数个读取单元;相关组的两个或多个页面包括整数个读取单元;并且读取单元任选和/或可选跨越页面边界。设备中的信息的读取和/或写入根据顺序诸如“读取单元优先”顺序或“页面优先”顺序执行。图中所示的读取单元的读取单元优先顺序的示例开始于读取单元611,接着是641,671,613,643,673,等等,结束于679。图中所示的读取单元的页面优先顺序的示例开始于读取单元611,接着是613,619,641,643,649,671,673,等等,结束于679。
在各种实施方式中,闪存芯片601,603…609对应于图1A的一个或多个独立闪存芯片194中的相应。在某些实施方式中,设备601,603…609是不到NVM199的所有的一部分。例如,在各种实施方式中,数据在多组闪存芯片上被独立条带化,并且多组闪存芯片中的每一个可独立访问。
在某些实施方式中,各种NVM管理功能(例如,读取、循环、擦除、编程/写入和/或与使用NVM有关的功能中的任意一个或多个)在逻辑片和/或段中执行,有时称为R块。在各种实施方式中,R块被举例说明为例如闪存的相应芯片(例如,所有芯片,不包括完全地或部分地出现故障的芯片的所有芯片,和/或一个或多个所选子集的芯片)上的逻辑片或者段。例如,在具有R闪存芯片的闪存中,每个闪存芯片具有N个块,每个R块是总共N个R块中的来自一起取出的每个闪存芯片的第i块。再如,在具有R闪存芯片的闪存中,每个具有N个块,每个R块是总共N/2个R块中的来自每个闪存芯片的第i和第(i+l)块。对于又一示例,在具有多个双平面设备的闪存中,每个R块是来自每个双平面设备的第i偶数块和第i奇数块。
可以设想用于以R块形式进行管理的闪存块的其他布置,包括虚拟和物理块地址之间的映射以确保即使某些块不可操作,R块也具有来自每个芯片的一个块。在各种实施方式中,每个闪存芯片中的N个块中的一部分被用作备用件使得虚拟和物理块地址之间的映射具有备用(或者未使用)块以取代R块中有缺陷的块。
图7示出了R块的实施方式的所选细节。该图示出了具有66个闪存芯片(闪存芯片710.65…710.0)的实施方式。示出了块、页面和块以R块进行管理。每个闪存芯片被示为具有N个块(诸如闪存芯片710.65的块710.65B0、块710.65B1…块710.65BB)。R块的具体示例是每个R块是来自每个闪存芯片的第i块,综合起来,诸如R块760.0是来自闪存芯片710.65的块710.65B0,来自闪存芯片710.64的块0(未明确示出),…,至闪存芯片710.0的块710.0B0。因此,总共具有N个R块(R块760.0,R块760.1…R块760.R)。R块的另一具体示例是每个R块是来自每个闪存芯片的第i和第i+1块,综合起来(例如,来自闪存芯片710.65的块710.65B0和710.65B1,来自闪存芯片710.64的块0和1,…,至来自闪存芯片710.0的块710.0B0和710.0B1。因此,如果每个闪存芯片中具有N个块,则具有N/2个R块。
在成对或按相关联的组处理块作为形成R块的一部分的各种实施方式中,来自相关联组的块的每个块的相应页面也被视为单元,诸如用于写入,形成较大的多块页面。例如,在具有偶数和奇数块的各种双平面实施方式中,偶数块中的具体块的第一页面和奇数块中的相关联块的第一页面被视为用于写入的单元,任选和/或可选作为用于读取的单元。类似地,偶数块中的具体块的第二页面和奇数块中的相关联块的第二页面被视为一个单元。根据各种实施方式,本文中所使用的NVM的页面指的是以下各项中的一个或多个:NVM的单个页面;NVM的多块页面;用于写入的NVM的任选和/或可选被视为用于读取的一个或多个单元页面的多块页面;以及NVM的任何其他分组或关联页面。
在某些实施方式中,由于忽略了故障(例如,不良)块,因此不是所有R块的大小都相同。例如,如果块710.0B0有缺陷且不可用,则R块760.0具有的块比R块760.1少一个。
在某些实施方式中,每个R块包含R块报头,诸如具体形式的报头501,并且类型域指定R块的类型(例如不是数据类型)。在进一步的实施方式中,R块报头在R块中的多个块中重复,诸如在R块中的每个块中的第一页面中重复。根据各种实施方式,R块报头包括以下各项中的一个或多个:R块类型;R块记录带;R块序列号;先前R块编号和其他信息。R块类型表示R块中包含的信息的类型,诸如主机数据信息、映射信息或检查点信息。R块记录带指出多个记录带中的哪一个包括R块。例如,R块记录带指定热数据记录带、冷数据记录带、映射记录带或检查点记录带中的一个。R块序列号针对所使用的每个R块增加一次,并提供R块创建的顺序。在某些使用场景下,R块序列号按照记录带,而在其他使用场景下,R块序列号是综合的。先前R块编号使记录带中的给定记录带中的R块能够以相反的顺序(时间向后推移)连接在一起。
在某些实施方式中,恢复包括(诸如开始于)确定R块中的每一个的R块报头,以及使用R块报头的内容来确定每个记录带中的最后(最新写入的)R块。
自身日志记录和层级一致性
子日志的示例是对象何时包括足够信息以只恢复对象本身中的对象(例如,使用LBA对应的LB存储LBA)。层级一致性的示例是经由检查被结构化的另一数据的版本来确定要使用哪种版本的数据结构。例如,具体时间标记识别的数据版本优先于具体时间标记识别的映射版本,而该映射版本优先于具体时间标记识别的检查点版本。在某些实施方式和/或使用场景下,结合层级一致性技术使用自身日志记录技术使得比没有使用此等技术更有效地进行映射重建和/或低延迟FUA握手。
在各种实施方式中,映射(从LBA至读取单元,诸如图1A的映射141的所有或任意部分)为一级映射、二级映射或多级映射,并且被实现为以下各项中的一个或多个:表、CAM、散列表、搜索树、使密钥(诸如LBA)与值(诸如读取单元地址)相关联的任意结构或其任意组合。在某些实施方式中,映射包括保持频繁访问和/或废条目的缓存。映射缓存被实现为表、CAM、散列表、搜索树、使密钥(诸如LBA)与值(诸如读取单元地址)相关联的任意结构或其任意组合中的一个或多个。
在各种实施方式中,经由将长度存储在与每个LBA相关联的映射条目中,写入数据被作为逻辑页面、NVM的页面、单一读取单元或作为前述中的一个或多个进行存储。主机以LB(由LBA寻址)的最细粒度提供写入数据。在各种实施方式中,来自主机的LB任选和/或可选被压缩并消耗不到一个读取单元、一个读取单元、一个以上读取单元、非整数个读取单元或其他尺寸。
在进一步的实施方式中,主机提供比LB的粒度更细的粒度,诸如扇区粒度的写入数据。例如,扇区为512B,并且每个LB包括8个连续扇区。数据大小小于LB的大小或具有仅导致具体LB的一部分被写入的主机的写入操作作为读取-修改-写入操作来处理。
在某些实施方式中,使用读取单元作为示例,映射使具体LBA与相应读取单元地址和相应长度和/或跨度相关联,诸如在读取单元中(例如,由映射141映射到读取单元地址223和读取单元的长度225的LBA211,如图2所示,其中读取单元225的长度编码长度,作为具体LBA的数据的大小,和跨度,作为要读取以获得数据的读取单元的数量)。存储具体LBA引用的逻辑块(LB),开始于由相应读取单元地址寻址的NVM中的具体读取单元并跨越使用相应宽度给出的多个读取单元。例如,一个的跨度表示LB包含在具体读取单元中。在各种实施方式和/或实现中,具体读取单元没有存储任何其他LB,或存储小部分或一个或多个其他LB。
具体读取单元包括开始于具体读取单元的一个或多个LB中的每一个的报头(例如,图4A的报头1411A至报头N419A以及图4B的半透1441B、报头2412B…报头N419N)。报头中的每一个包括LB的存储在具体读取单元中的相应LBA(例如,图5的报头501的LPN517和/或补偿521)。例如,与具体LBA相关联的报头中的具体报头包括具体LBA。在各种实施方式中,报头包括其他信息诸如:发现LB的读取单元的补偿、LB上使用的压缩类型的表示、按字节存储的LB的长度以及其他信息。
设想各种实施方式,诸如相对于数据组织和/或排序使用各种技术中的一个或多个来将报头和数据存储在读取单元中,没有开始LB的读取单元中是否存在报头,报头是表示读取单元开始还是结束,以及报头是存储在报头分别对应的数据的第一读取单元中还是最后读取单元中。
自身日志记录属性的示例是前面提到的存储读取单元中存储的一个或多个LB的一个或多个LBA(诸如在读取单元的一个或多个报头中)。在将读取单元写入闪存之后,自身日志记录属性可以恢复LBA的映射信息和对应LB数据(例如,从报头中),因为单独处理读取单元可以恢复映射信息。
在各种实施方式和/或使用场景下,使用恢复技术(例如,响应于意外的功率损耗、故障或扰乱和/或防止将数据存储到NVM的其他事件)。例如,通过定期写出信息来维持检查点以便可以全部或部分从故障中恢复。在某些实施方式中,检查点具有多个条目,每个条目在活动流至非易失性存储系统(例如,SSD的NVM)的一定程度上提供恢复信息。在各种实施方式中,相应检查点条目包括不同类型的信息,诸如在不同时间记录的不同检查点信息。
在某些实施方式中,写入滚动检查点,其中多个检查点条目各自包括一个或多个数据结构的一部分(诸如第一级映射的一部分和/或R块使用计数表的全部)。滚动检查点分配随时间保存检查点信息的成本(例如,性能成本、至NVM的额外写入成本以及NVM的管理费成本)。在某些实施方式中,滚动检查点可以只锁定在检查点创建期间经检查点设置的数据结构的一部分,可以保留未锁定的数据结构的剩余部分,从而可供非检查点使用。
例如,在各种实施方式中,检查点条目的至少一部分(但不一定是全部)包括空闲R块列表(按打算使用空闲R块的顺序存储)。检查点经写入使得在恢复过程中,(a)检查点可定位在NVM中,(b)可确定最新检查点条目,(c)在某些实施方式中,检查点按正向和/或反向时间顺序可复制。例如,在NVM中,按FIFO顺序将检查点写入具体位置(因此稍后的条目在较早的条目之后)。最后,写入检查点FIFO“隐藏”并使用较新的条目擦除和/或重写最旧条目。写入检查点FIFO任选包括使用时间戳写入以便可以确定检查点条目的相应阶段(例如,驱动FIFO中的最新和最旧条目)。在各种其他实施方式中,除FIFO之外的数据结构(例如,往复式结构、表和经启用以存储检查点条目的其他数据结构)用于存储检查点。尽管在某些实施方式中,检查点FIFO是先进先出数据结构,但在其他实施方式中,检查点FIFO使用其他结构,诸如队列、流或按预定顺序写入的可随机访问的结构来实现。
在某些实施方式中,在一个或多个数据流中写入数据。因为主机提供写入数据,所以即使数据用于非连续区域(例如,非相关组的LBA),也可将写入数据聚合到R块中。写入数据的数据流与主机写入活动的日志类似,因为数据流记录有主机写入的数据(尽管不一定,但在所有实施方式中,数据按相同顺序来自主机)。在各种实施方式中,再循环活动(从已经全部和/或部分重写的R块再循环空闲空间)涉及再循环数据流,而主机写入活动涉及与再循环数据流分开的主机数据流。在进一步的实施方式中,将主机数据写入第一R块,并将同时再循环数据写入第二不同R块。在某些使用场景下,将再循环(冷)数据与新写入的(热)数据分开是有利的。在进一步的实施方式中,主机数据的一些,诸如被确定为冷数据的主机数据的一部分被可选地写入第二R块。
根据各种实施方式,定期及时创建检查点条目,诸如响应于主机命令和/或响应于指定量的活动(例如,指定量的主机写入数据,指定量的映射引用,和/或指定量的废映射信息)。在进一步的实施方式中,不同结构在不同时间和/或根据不同规则进行检查点设置。
在各种实施方式中,检查点包括一个或多个数据结构中的一部分或全部,诸如:第一级映射、映射缓存、R块使用表、R块统计诸如擦除计数、其他统计诸如错误计数或基于R块或其他累积的读取干扰信息、空闲列表和非易失性存储系统中使用的其他状态信息和/或表。
在某些实施方式中,全部或部分包括于一个或多个检查点条目中的数据结构用于恢复处理。在诸如具有滚动检查点的进一步的实施方式中,多个检查点条目用于恢复数据结构,诸如第一级映射。
在一个示例中,在恢复过程中,检查点FIFO用于查找检查点FIFO的检查点的条目中保存的空闲R块的一个或多个列表中的一个。然后读取空闲R块的最新列表中的R块以查找已经使用R块中的哪些(因为所使用的R块不处于擦除状态,所以可以确定)。在某些使用场景下,在故障之前写入R块的一小部分,并且写入的R块的一小部分是可以恢复的。扫描空闲R块的最新列表中的R块中的读取单元以查找读取单元中的任何报头。报头包括表示读取单元中存储的LB的LBA。检查映射(器可以确定LBA的数据存储在NVM中的哪里)以确定映射中是否缺少任意LBA。例如,如果用于LBA之一的映射的条目指的是比在其中发现LBA的读取单元旧的读取单元。如果映射过期,则更新映射。在某些使用场景下,相同LBA在第一读取单元中找到,随后在第二读取单元中找到,例如,当在检查点期间不止一次写入LBA时。因而,在该示例中,从概念上看,数据读取单元依次在恢复期间进行处理,且在某些情况下,如果在读取单元中的报头中不止一次找到相同LBA,则在恢复期间不止一次更新映射中的相同条目。在另一个示例中,从概念上看,对数据读取单元进行后向处理(而不是依次处理,例如前向处理)并且丢弃重复写入相同LBA。
各种技术用于使映射和写入NVM的写入数据同步。一些技术可适用于具有一级映射的实施方式,而其他技术可适用于具有二级或多级映射的实施方式。
在某些实施方式中,通过将一部分或全部映射写入检查点条目来定期对映射进行检查点设置。在某些实施方式中,将整个映射写入检查点FIFO。在其他实施方式中,将映射写入NVM中的具体往复式位置(并且任选通过时间戳)。在其他实施方式中,NVM中表示将映射写入NVM中的哪里的地址被写入检查点FIFO。在其他实施方式中,一次为映射检查点设置一个部分,使得整个映射在多个检查点条目上进行检查点设置(例如,滚动检查点)。在某些使用场景下,一次为映射检查点设置一个部分可以降低对某些命令,诸如主机写入命令的延迟的上限。
在某些实施方式中,为了解决任何一致性问题,施加层级一致性写入排序以确保一致性,例如,在将对应更新映射条目写入NVM之前,总是将写入数据写入NVM。例如,在某些实施方式中,仅在写入数据致力于NVM之后才更新映射条目,并且写入数据包括记录有写入数据与此相关联的LBA的报头。在此期间,映射的未决定更新保持在另一个结构,诸如映射缓存中。在某些实施方式中,映射缓存包括表示条目是否“未决”的映射缓存中的每个条目的信息(例如,等待完成将写入数据写入NVM)。通过延迟更新经检查点设置的映射版本直至将写入数据写入NVM,映射的检查点总是比写入数据旧,并且明确定义了映射和写入数据之间的一致性,因为来自写入数据报头的LBA映射信息优先于来自映射的任何彼此矛盾的(旧的)信息。
通过使用层级一致性写入排序,映射(如NVM中存储的且在恢复过程中恢复的)总是只包括比来自数据读取单元的信息早的信息。恢复映射总是比来自恢复数据读取单元的任何数据旧,并且恢复数据读取单元中的报头(例如,根据检查点FIFO中的空闲R块的列表确定的)用于更新映射。
在某些二级映射实施方式中,第二级映射条目定期存储在NVM中。第二级映射页面(其包括多个第二级映射条目)包括具有第一级映射索引的映射报头,并且与第一级映射索引相关联的FLM的条目指向第二级映射页面。第一级映射索引为第二级映射页面提供自身日志记录属性。层级一致性写入排序经扩展以便首先将写入数据写入NVM,在完成写入数据的写入之后,仅将包含与写入数据相关联的第二级映射条目中的具体映射条目的第二级映射页面写入NVM,并且在完成第二级映射页面写入之后,仅更新指向第二级映射页面的第一级映射条目(指的是第二级映射页面的更新位置)。空闲R块的列表任选和/或可选包括用于存储第二级映射条目以及写入数据的R块。在某些实施方式中,空闲R块的一个列表用于第二级映射条目,空闲R块的另一个列表用于数据,并且R块隔离中两个列表之间。两个列表可以从第二级映射页面中的报头中恢复第一级映射,类似于从数据读取单元中恢复一级映射。因而,第一级映射的检查点总是比恢复的第二级映射页面旧(并且第一级映射使用恢复的第二级映射页面中的报头进行更新)。类似地,第二级映射页面比写入数据旧,并且第二级映射页面使用恢复的数据读取单元中的报头来更新。
在某些实施方式中,诸如在具有滚动检查点的某些实施方式中,将额外日志报头添加至数据读取单元和/或映射读取单元以便记录检查点事件。日志报头包括新型记录事件,并且信息用于帮助恢复。例如,将日志报头写入数据读取单元以表示映射的一部分与数据流中的此点一致(例如,已经进行检查点设置)。
在某些实施方式中,日志报头表示在数据流中恢复过程追溯到什么时候开始。例如,使用滚动检查点,并且在具有忽略一个或多个数据结构的检查点信息的某些检查点条目的进一步的实施方式中,恢复开始使用对应于所有数据结构全部进行检查点设置的最新时间点的信息进行处理。例如,如果映射在N个检查点条目上分成N块进行检查点设置,则在对应于对所有N块映射进行检查点设置之后的最新时间的数据页面中的位置(称为“最深处的点”)开始恢复。
在某些实施方式中,日志报头表示在某个点上一致的数据结构的一部分。继续上述映射恢复示例,在最深处的点,已经对N块映射中的第一片进行了检查点设置(并且在稍后的时间里在数据流中没有通过定义最深处的点进行检查点设置)。继第一块映射之后并影响第一块映射的所有更新适用于映射。然而,其他块映射仅在遇到表示数据流中的后续数据尚未记录在检查点中的对应日志报头之后才进行更新。
在某些实施方式中,层级一致性数据和/或数据结构的时间顺序由时间戳和/或序列号确定。即,通过比较时间戳和/或序列号来确定是在对应更新映射条目之后还是在此之前将写入数据写入NVM。时间戳和/或序列号任选地和/或可选地例如在保持写入/再循环数据、映射信息和/或检查点条目的的相应流中输出以提供流之间的更新顺序的规范,该规范相对于执行至NVM的物理写入的顺序是不变的。在进一步的实施方式中,时间戳和/或序列号在流中输出作为特殊类型的报头(称之为纪元报头)。每个纪元报头包括当前时间戳和/或序列号(称之为纪元)(例如,图5的纪元523)。
在各种实施方式中,纪元随着每个数据写入推进和/或增加,并且可唯一确定已经进行数据写入的顺序。在进一步的实施方式中,由数据写入中的具体数据写入产生的数据结构更新分配有具体数据写入的纪元。当将数据结构更新连同具体数据写入的纪元一起写入流时,具体数据写入和数据结构更新的顺序由指定具体数据写入的纪元和数据结构更新的纪元的相应纪元报头确定,与具体数据写入和数据结构更新被写入NVM的顺序无关。
根据各种实施方式,纪元报头根据以下各项中的一项或多项输出:每一个数据写入一次;仅使用某些数据写入;定期在数据流中;每一个NVM页面至少一次;以及每一个记录带切换一次。在具有单个数据记录带的第一示例中,每一个NVM页面至少输出纪元报头一次,其使用数据流的数据写入。在数据流的每个页面中提供纪元报头可以在无需读取多个页面的情况下确定页面中的数据的纪元。在具有多个数据记录带(诸如热记录带和冷记录带)的第二示例中,每一个NVM页面至少输出纪元报头一次,其写入与记录带无关,另外无论先前的数据写入是否是与当前数据写入不同的记录带之一(称之为记录带切换)。每一个记录带切换至少提供纪元报头一次可以确定每个数据写入的纪元,即使不是所有数据写入都具有相应纪元报头。进一步地,每一个记录带切换至少提供纪元报头一次可以通过在记录带之间提供一致的写入顺序将两个或两个以上记录带,诸如热记录带和冷记录带,视为单个流。
在某些实施方式中,具有多个纪元序列。在第一示例中,分离纪元顺序用于新写入与再循环数据。数据结构更新分配有来自一个或多个纪元序列的纪元,这主要取决于相关联的数据写入。在第二示例中,至NVM的数据写入使用第一纪元(例如,来自第一纪元序列的第一纪元)盖上时间戳,并且至NVM的第二级映射写入使用第二纪元(例如,来自第二纪元序列的第二纪元)盖上时间戳。第二级映射的更新分配有对应于相关数据写入的第一纪元值,并且第一级映射的更新分配有对应于相关第二级映射写入的第二纪元值。映射流任选和/或可选具有两个类型的纪元报头,一个用于第一纪元值,一个用于第二纪元值。
尽管前文描述了映射的恢复,但其他数据结构类似地可使用自身日志记录和层级一致性恢复。例如,R块使用计数表类似地可进行检查点设置和恢复。在某些实施方式中,R块使用计数包括每个R块中的有源(不重写)LB的数量的计数。
自身日志记录和层级一致性属性同样可适用于缓存(部分)数据结构。例如,映射缓存包括映射的废条目。在某些实施方式中,映射缓存条目中的每一个对应于多个第二级映射页面中的一个,第二级映射页面中的每一个包括多个第二级映射条目,并且如果具体映射缓存条目中的任意第二级映射条目是废条目,则映射缓存条目中的具体映射缓存条目是废条目。映射缓存根据层级一致性定期记录在检查点条目中(总而言之,以滚动检查点的方式,或通过定期刷新映射缓存的废条目)。在某些实施方式中,以每映射条目为基础遵循层级一致性。继续该示例,当将映射缓存的一部分保存在检查点条目中时,只对与所完成的写入数据(例如,通过致力于NVM而进行非易失性存储的写入数据)对应的映射条目进行检查点设置。例如,如果映射条目中的条目已经更新并且对应数据尚未进行非易失性存储,则延迟对更新的映射条目进行检查点设置直至对应数据进行非易失性存储为止。
在某些实施方式中,映射缓存包括每个条目两个读取单元地址,例如层级一致性的读取单元地址和未决读取单元地址。对非易失性存储系统的读取访问经启用以使用未决读取单元地址来定位最新数据(例如,其存储在通过待决至NVM的写入的读取单元寻址来访问的数据缓存中)。然而,检查点操作经启用以使用层级一致性的读取单元地址。当将写入数据写入NVM中时,将受影响的映射缓存条目中的对应未决地址复制到层级一致性地址(然后可用于进行检查点设置)。
在各种实施方式中,映射缓存的多个条目中的每一个对应于多个第二级映射页面中的一个,第二级映射页面中的每一个包括多个第二级映射条目,并且如果具体映射缓存条目中的任意第二级映射条目是废条目,则映射缓存条目中的具体映射缓存条目是废条目。根据各种实施方式,映射缓存的废条目中的每一个是以下各项中的一个或多个:与指定废条目的最旧更新的纪元的时间戳相关联;与指定废条目的最新更新的纪元的时间戳相关联;与当前数据写入的纪元相关联。在某些实施方式中,在指定废条目的最旧更新的纪元的相关时间戳大于当前数据写入的纪元之后的预定量之前,刷新废条目中的每一个。在某些实施方式中,存储在具有废条目的刷新条目的NVM中的时间戳是与刷新废条目相关联的时间戳中的任意一个或多个。
可能存在其他方案,诸如使用分开的层级一致性且未决映射缓存,诸如使用被复制至层级一致性映射缓存的未决映射缓存中的条目,因为所述条目被写入NVM。
在某些实施方式中,诸如用于动态映射LBA(即,当正在写入LBA时)的映射缓存的动态结构仅以检查点设置的形式存在于NVM中。例如,结构,不同于映射本身,不具有永久存储。例如,在某些实施方式中,只对映射缓存中的废条目进行检查点设置,并且如果映射缓存在扩展期间不具有废条目(并且检查点FIFO已经隐藏),则不存在映射缓存的检查点。因为动态结构存在于检查点中(在必要时),在恢复期间动态结构同样可以在故障之后重建。
特定实施方式
各种特定实施方式实现可适用于非易失性存储系统中的自身日志记录和层级一致性和/或与其相关的一项或多项技术。二级映射方案经由写入映射流和检查点流进行管理,其中主机数据和再循环数据写入一个或多个数据流。恢复二级映射方案的FLM和SLM元件使用来自检查点流的信息,随后是来自映射流的信息,之后是来自数据流的信息。在恢复期间,数据流优先于映射流,并且映射流优先于检查点流。
图8示出了作为LBA至NVM位置映射800的经由具有FLM和一个或多个SLM页面的二级映射将LBA映射到NVM中所存储的LB的实施方式的所选细节。二级映射经由与一个或多个第二级元件(从概念上讲被示为单个元件SLM页面820)耦合的第一级元件(FLM810)来实现。FLM包括多个条目(SLM页面/长度810.1...SLM页面/长度810.M)。FLM的每个条目指向SLM页面(诸如SLM页面820)中的一个。SLM页面包括多个条目(LB页面/长度820.1...LB页面/长度820.N)。SLM页面的每个条目指向数据开始的NVM中的位置(例如,至少存储用于LBA的主机写入数据的初端的读取单元)。除法器(整数除法器822)例如从可编程硬件寄存器接收参数(SLM条目/SLM页面(CSR)823)以除以输入LBA,从而确定要选择哪个FLM条目以及要选择哪个SLM条目(其在所选FLM条目指向的SLM页面内)。除法器与FLM和SLM页面耦合。
在各种实施方式中,该图示图1A的映射141和/或表143的所选细节或与其有关的所选细节。例如,在某些实施方式中,映射141和/或表143实现映射信息的一个或多个缓存,诸如FLM的一个或多个条目和/或SLM的一个或多个条目。FLM和/或SLM的整个图像保持在NVM(例如,图1A的NVM199)中,例如当缓存取代先前缓存的FLM和/或SLM条目时更新。在某些实施方式中,FLM和/或SLM整个图像经由滚动或往复式球检查点来实现,每个检查点是各自整个映射图像的一部分。
在操作中,将LBA821出现给整数除法器822。除法器将LBA除以如SLM条目/SLM页面(CSR)823提供的每个SLM页面的SLM条目数量,从而得到商数(FLM索引822Q)和余数(SLM页面索引822R)。商数用于选择FLM条目中的一个,并读取所选FLM条目的页面域(SLM指针810S)。页面域用于选择SLM页面中的一个(例如,SLM页面820),并且余数用于(例如,作为补偿)选择所选SLM页面的条目。所选SLM页面条目的页面域用于选择NVM,诸如具体读取单元中的具体位置,在该具体位置存储有与所出现的LBA对应的LB的至少初端(LB指针820L)。在各种实施方式中,LB指针包括NVM的读取单元的地址(例如,图2的读取单元地址223)。在某些实施方式中,每个SLM条目包括表示要读取多少读取单元才获得FLM条目的页面域指定的所有相应SLM页面(例如,图2的读取单元的长度225)的长度域(例如,编码大小和/或跨度)。
在各种实施方式中,商数被用作访问缓存器,诸如SLM页面的全相关缓存器的密钥。如果缓存器中存在具体SLM页面命中,则在不访问NVM的情况下在缓存器中找到具体SLM页面的最新副本。在某些实施方式和/或使用场景下,对多个SLM页面提供快速访问使得对NVM的随机访问进行更有效的处理和/或使得对NVM的多个独立流的连续数据访问进行更有效的处理(例如,对LBA的第一区域的第一流的连续数据访问穿插对LBA的第二区域的第二流的连续数据访问)。
图9示出了接收并将数据从主机写入NVM的各种实施方式的所选细节作为数据、映射和检查点写入处理900,包括写入SLM和FLM信息,以及各种形式的自身日志记录和时间戳记录。处理还可适用于源自再循环操作的数据。处理从概念上看具有两个部分,第一部分与适当的主机(或再循环)数据有关(接收并写入数据910),第二部分与映射数据有关(创建并写入映射条目920)。进一步地,对所示的操作中的所选操作进行检查点设置(对元素进行检查点设置995)。
处理在收到主机写入命令(或再循环操作数据产生)之后开始(开始901)。然后获得主机(或再循环)数据(从主机接收数据911)。然后诸如经由压缩、加密、填充和/或各种格式化操作转换数据以便写入NVM,(格式化数据912)。随后,诸如经由表示数据对应于哪个LBA的报头将自身日志记录信息插入数据中(自身日志记录数据913)。在某些实施方式中,报头包括长度和/或补偿和/或其他信息,诸如如图5所示。然后,诸如经由报头中的纪元域将时间标记插入数据中(给数据盖上时间戳914)。在各种实施方式中,插入时间标记作为具体类型的报头。随后,数据、报头和时间标记与其他主机(或再循环)数据和报头信息聚合在一起(缓冲数据915)。当聚合足够信息之后,将聚合信息写入NVM(将数据写入NVM916)。
数据的格式化(格式化数据912)提供部分用于创建映射条目的信息,开始于二级映射的第二级(为数据创建SLM条目922),二级映射指向写入有数据的NVM中的位置,诸如读取单元地址和读取单元的长度。在某些实施方式中,部分通过确定数据写入NVM中的哪里,如缓冲数据915确定,来提供创建映射条目的进一步信息。然后,诸如经由提供对应于SLM条目的FLM索引的报头将自身日志记录信息插入条目中(自身日志记录SLM条目923)。在某些实施方式中,报头包括长度、补偿和/或其他信息,诸如如图5所示。随后,诸如经由报头中的纪元域将时间标记插入条目中(给SLM条目盖上时间戳924)。在各种实施方式中,插入时间标记作为具体类型的报头。然后,条目、报头和时间标记与其他SLM条目和报头聚合在一起(缓冲SLM条目925)。当聚合足够信息之后,将聚合信息写入NVM(将SLM条目写入NVM926)。在某些实施方式中,聚合SLM条目至少部分经由一个或多个缓存进行。
SLM条目的创建(为数据创建SLM条目922)通过创建指向SLM条目的FLM条目(为SLM条目创建FLM条目932)来提供部分用于完成映射条目的创建的信息。类似于SLM条目,存在自身日志记录和时间标记插入(自身日志记录FLM条目933和给FLM条目盖上时间戳934),随后缓冲并写入NVM(缓冲FLM条目935和将FLM条目写入NVM936)。在将数据、SLM条目和FLM条目写入NVM之后(将数据写入NVM916,将SLM条目写入NVM926并将FLM条目写入NVM936),处理完成(结束999)。
在某些实施方式中,SLM条目被组织成SLM页面并且将SLM页面缓存在例如缓存器中,从而在将SLM页面写入NVM(自身日志记录SLM条目923以将SLM条目写入NVM926)之前启用SLM页面的条目的多个更新(为数据创建SLM条目922)。SLM页面中的缓存SLM页面中的每一个经启用以累积来自一个或多个数据写入的更新,并且任选地和/或可选地直至相应缓存SLM页面由缓冲器刷新才写入NVM。根据各种实施方式,写入具有缓存SLM页面中的刷新SLM页面的NVM的时间标记是以下各项中的一个或多个:对应于影响刷新SLM页面中的条目的最新数据写入的时间标记;对应于自缓存之后影响刷新SLM页面中的条目的最早数据写入的时间标记;对应于当前数据写入的时间标记;以及对应于映射流的时间标记。
在某些实施方式中,部分将FLM条目写入NVM作为滚动检查点的一部分,从而在将FLM的部分写入NVM(自身日志记录FLM条目933以将FLM条目写入NVM936)之前启用FLM的部分的条目的多个更新(为SLM条目创建FLM条目932)。FLM的部分中的每一个经启用以累积来自一个或多个SLM条目的更新,并且任选地和/或可选地直至制作FLM的部分的检查点才写入NVM(例如,作为滚动检查点的一部分)。根据各种实施方式,写入具有FLM的部分中的一个的NVM的时间标记是以下各项中的一个或多个:对应于影响FLM的部分中的条目的最新数据写入的时间标记;对应于自对FLM的部分进行最后检查点设置之后影响FLM的部分中的条目的最早数据写入的时间标记;对应于当前数据写入的时间标记;以及对应于映射流的时间标记,诸如具有FLM的部分中的对应更新的SLM条目的映射流中的时间标记。
在各种实施方式中,例如经由报头插入的自身日志记录信息包括在如图4A、图4B和图5中所示的报头中。在某些实施方式中,FLM信息的聚合至少部分经由一个或多个缓存器进行,而与缓存(如果有的话)SLM信息无关,或可替代地集合SLM信息的缓存。
在各种实施方式和使用场景下,继续进行从接收至写入NVM的数据处理(格式化数据912以将数据写入NVM916),其与从创建至写入NVM的映射处理无关(为数据创建SLM条目922以将SLM条目写入NVM926和/或为SLM条目创建FLM932条目以将FLM条目写入NVM936)。进一步地,在各种实施方式和使用场景下,从创建至写入NVM的SLM和FLM处理(分别为数据创建SLM条目922以将SLM条目写入NVM926和/或为SLM条目创建FLM条目932以将FLM条目写入NVM936)彼此独立继续进行。数据、SLM和FLM处理全部或部分彼此并行发生,仅由与创建SLM条目(格式化数据912以便为数据创建SLM条目922)和创建FLM条目(为数据创建SLM条目922以便为SLM条目创建FLM条目932)有关的相关性限制。
在各种实施方式中,除了写入数据之间的处理(接收并写入数据910)和映射条目的处理(创建并写入映射条目920的SLM和FLM有关部分)独立(因而全部或部分并行或重叠)之外,910中的每一个中的处理和920的SLM和FLM有关部分完全或部分并行,重叠和/或流水线进行。例如,接收第一主机数据(从主机911接收数据)并同时格式化第一主机数据(格式化数据912),并行接收第二主机数据(从主机接收数据911)。再如,创建第一SLM条目(为数据创建SLM条目922),然后同时对第一SLM条目进行自身日志记录处理(自身日志记录SLM条目923),并行创建第二SLM条目(为数据创建SLM条目922)。进一步地,与创建第二SLM条目(和自身日志记录第一SLM条目)并行创建第一SLM条目的FLM条目(为SLM条目创建FLM条目932)。
在某些实施方式中,稍后的操作经启用以比在稍后操作之前开始的操作早完成。在第一示例中,没有规定将至两个不同记录带的数据写入写入NVM的顺序。在第二示例中,缓存SLM页面使得在更新来自比稍后数据希尔早的数据写入的SLM条目之前,可以更新来自待写入NVM的稍后数据写入的SLM条目。
在各种实施方式中,插入时间标记是可选的,任选的和/或被忽略(例如,忽略或仅可选地插入给数据盖上时间戳914、给SLM条目盖上时间戳924和给FLM条目盖上时间戳934中的一项或多项)。进一步地,写入映射信息被延迟直至完成数据信息的写入(或写入映射信息响应于完成数据信息的写入来执行)。例如,将SLM条目信息记录到NVM中等待完成将数据写入NVM(例如,将SLM条目写入NVM926取决于将数据写入NVM916,如完成916C所示)。继续该示例,将FLM条目信息记录在NVM中等待完成将SLM信息写入NVM(例如,将FLM条目写入NVM936取决于将SLM条目写入NVM926,如完成926C所示)。恢复处理使用写入NVM的所有FLM信息,以及写入NVM的所有SLM信息,因为直至事先写入有FLM和SLM信息指向的数据信息才写入FLM和SLM信息。因而,NVM上的数据和映射信息彼此一致。
在某些实施方式中,选择性插入时间标记。例如,不将连续时间标记插入NVM的相同页面以便进行存储在相同页面中的连续数据写入,仅插入时间标记中的第一个。时间标记的后续时间标记的值从第一时间标记的值和干预连续数据写入的数量推断而得。
在各种实施方式中,插入时间标记,从而彼此独立地,诸如完全或部分彼此并行或无序地写入数据、SLM和FLM信息。在某些实施方式和/或使用场景下,独立写入可以比依赖写入(例如,从概念上看由完成916C和完成926C所示)支持更有效的处理(例如,较低延迟和/或较高带宽)。
在具体操作场景下,数据写入是NVM的数据流(例如将数据写入NVM916是数据流),并且映射写入是NVM的映射流和/或检查点流(例如,将SLM条目写入NVM926以及将FLM条目写入NVM936分别是映射流和检查点流)。延迟数据写入中的一项或多项(诸如由于等待与写入数据流冲突的擦除操作完成)。与此同时,映射流写入中的至少一个与擦除操作全部或部分并行发生,使得与延迟写入数据中的至少一部分对应的至少一个映射条目的写入在写入延迟写入数据之前完成。随后,完成擦除操作,然后完成延迟数据写入。如果在完成延迟数据写入之前存在故障,则后续恢复可基于数据和映射流中的时间标记的检查来确定是否忽略与延迟数据写入对应的任意映射流写入。具体地,与延迟写入对应的映射流写入的时间标记在数据流写入的最新(例如,最近或最新)之前(例如,更近或更新)。
在各种实施方式中,插入映射信息的自身日志记录是任选的和/或被忽略(例如,忽略自身日志记录SLM条目923和自身日志记录FLM条目933中的一个或多个)。
在某些实施方式和/或使用场景下,对该图的元素中的一个或多个进行检查点设置(对元素进行检查点设置995)。在相应时间点将检查点写入NVM以便在某些场景下支持更有效和/或更健壮的恢复处理。例如,聚合数据、SLM信息和FLM信息中的一个或多个(缓冲数据915、缓冲SLM条目925和缓冲FLM条目935)包括在检查点中。在各种实施方式中,恢复处理使用检查点中包括的时间标记来确定是否忽略检查点的某些部分。例如,如果数据流的最新部分(对应于缓冲数据915)没有比检查点的最新SLM部分(对应于将SLM条目写入NVM926)更晚的时间标记,则在恢复处理期间丢弃检查点的最新SLM部分。
图10示出了流主机和/或再循环数据、映射信息和至NVM的检查点FIFO部分的各种实施方式的所选细节。示出了R块的三个流,一个用于数据写入(数据R块1020),一个用于更新SLM写入(SLM(映射)R块1030),一个用于数据结构检查点写入,诸如FLM的部分(检查点FIFOR块1040),对应于相应数据、映射以及以流形式管理的检查点记录带。“纪元”元素对应于时间标记,例如,相应报头中的时间戳(诸如图5的纪元523所示)。在图10中,根据相应流顺序,时间从左至右为最不接近至最接近。进一步地,该图还表示每个流中的写入顺序,诸如通过NVM的页面受到写入NVM的粒度的限制。具有NVM的页面中的一个的元素从概念上看按示出的顺序写入,即使同时进行物理写入。因而,数据R块的元素按以下顺序写入:纪元-11021E(最不接近),数据-11021、纪元-21022E,数据-21022、纪元-31023E,数据-31023(最接近)。映射R块的元素按以下顺序写入:纪元-11031E(最不接近),SLM-11031、纪元-21032E,SLM-21032、纪元-31033E,SLM-31033(最接近)。检查点映射R块的元素按以下顺序写入:纪元-11041E(最不接近),FLM-11041、纪元-21042E,FLM-21042、纪元-31043E,FLM-31043(最接近)。
数据R块中的信息具有精确一致性,因为数据R块中的信息确定已经将什么有效存储在NVM中。精确一致性指的是支持来自写入NVM的数据结构的最新部分的数据结构的有效状态的完全恢复的数据结构(包括写入NVM的数据)的属性。精确一致性与多个数据结构之间的一致性不同。例如,两个数据结构各自具有精确一致性,但彼此不一致,因为数据结构中的一个反映了其他数据结构中不存在的状态变化。在某些实施方式和/或使用场景下,恢复的目的是确定自最近可能时间起彼此同样一致的数据结构的精确想干版本。
映射R块中的信息是更新SLM页面的类似FIFO的流,并且用于维持如至少部分存储在映射R块中的SLM的精确相干。在某些情况下,映射R块中的信息与写入NVM的数据不一致,诸如由于与数据R块中的信息不一致的SLM页面,例如由于比数据R块中的对应信息更新的SLM页面。
检查点R块中的信息是FLM和其他数据结构的部分或所有的FIFO(或流),并且用于维持FLM的精确想干和其他数据结构的精确或近似想干。然而,类似于映射R块,在某些情况下,检查点R块中的信息与其他R块中的信息不一致,诸如比映射或数据R块中的对应信息更新的FLM条目。
在某些实施方式和/或使用场景下,检查点FIFO中存储的某些数据结构仅大致想干或与其他数据结构不一致。在第一示例中,针对NVM中的每个块维持读取干扰计数,并且在多个部分中的检查点FIFO中对读取干扰计数进行检查点设置,例如,随时间均匀分布的一次四分之一的读取干扰计数。当恢复读取干扰计数时,恢复的读取干扰计数不与使用中的读取干扰计数的任意版本相干,因为四个部分中的每一个都来自不同时间点。在第二示例中,在检查点FIFO中对R块使用信息进行检查点设置,但不需要对应时间戳。恢复过程中恢复的R块使用信息的最新版本是相干的,但在某些情况下,与其他数据结构不一致。
从概念上看,该图表示恢复操作期间的流优先级。R块的数据流中的信息优先于R块的映射流中的信息,而R块的映射流中的信息优先于R块的检查点流中的信息。因为流之间的写入排序良好(同时,在某些实施方式和/或使用场景下,流中的每一个中的写入排序良好),所以需要额外信息来确定流之间的写入的一致性排序。在各种实施方式和/或使用场景下,时间戳和/或时间标记,诸如纪元值,可以确定写入多个记录带和/或流的相对顺序。
如图所示,写入R块的数据流、映射流和检查点流彼此一致,如下。数据写入中的每一个在与相应数据写入对应的相应SLM更新之前,反之,SLM更新中的每一个在任意相应检查点写入之前,检查点写入包括(例如,作为FLM条目)相应SLM更新的指针。具体地,SLM-11031映射至数据-11021,并且在写入纪元-11031E和SLM-11031开始之前完成数据-11021的写入。进一步地,FLM-11041包括SLM-11031的指针,并且在写入纪元-11041E和FLM-11041开始之前完成SLM-11031的写入。类似依赖性和写入排序适用于数据-21022,纪元-21032E和SLM-21032,以及纪元-21042E和FLM-21042,以及数据-31023,纪元-31033E和SLM-31033,和纪元-31043E和FLM-31043。
在某些实施方式中,R块的流之间的一致性用如下纪元值表示。纪元-11031E与纪元-11021E相同,或可替代地表示纪元-11031E在纪元-11021E之后写入。纪元-11041E与纪元-11031E相同,或可替代地表示纪元-11041E在纪元-11031E之后写入。类似地,纪元-21032E与纪元-21022E相同(或表示在其之后写入),并且纪元-21042E与纪元-21032E相同(或表示在其之后写入)。类似地,纪元-31033E与纪元-31023E相同(或表示在其之后写入),并且纪元-31043E与纪元-31033E相同(或表示在其之后写入)。
在各种实施方式和/或使用场景下,保留每个流中的写入顺序,如图所示。然而,R块的流之间的相对写入时间不同于图所示的。例如,在写入数据-2开始之前(但在写入数据-11021完成之后),完成写入纪元-21032E和SLM-21032。因而,SLM-21032相对于数据-21022暂时不一致,如表示比纪元-21032E表示的旧的阶段的R块的数据流的最新写入时间标记)纪元-11021E)所表示的。如果在完成写入纪元-21022E和数据-21022之前出现故障,则SLM-21032的临时不一致性就变得持久。为了解决不一致性,后续恢复处理可丢弃SLM-21032(基于比纪元-11021E更新的纪元-21032E)。再如,如果继在写入R块的映射流中的对应SLM更新之前写入R块的检查点流中的FLM条目之后是故障和后续恢复处理(在写入对应SLM更新之前),则恢复处理丢弃FLM条目。
该图示出了与FLM的所有条目对应的检查点R块的流的区域(完成FLM1050)。该区域与分多个部分(例如,块)对FLM进行检查点设置的某些实施方式对应。如图所示,三个任选和/或可选重叠的部分(FLM-11041、FLM-21042和FLM-31043)集体形成FLM的所有条目的检查点,尽管部分中的每一个来自不同时间,并因此本身不是FLM的相干图像。恢复处理经启用以从FLM和其他数据结构的检查点恢复FLM的相干且一致的版本。类似地,恢复处理经启用以从映射流和其他数据结构中的映射的可能不相干副本恢复映射的相干且一致的版本。
在某些实施方式中,部分通过确保以原子单元来执行具体数据结构的多个相关更新和具体数据结构的后续时间戳设置,至少相对于具体数据结构的检查点,来维持具体数据结构的一致性。例如,考虑在检查点FIFO中进行检查点设置的R块使用计数数据结构。数据流中的数据写入的具体数据写入与数据流中的对应纪元值相关联。具体数据写入提高了包含数据写入的R块的使用率,并且降低包含与相同LBA相关联的先前数据写入作为具体数据写入的R块的使用率。根据数据写入更新R块使用计数数据结构包括三个操作:提高包含数据写入的R块的使用计数;降低包含先前数据写入的R块的使用计数;以及给具有具体数据希尔的对应纪元值的R块使用计数数据结构盖上时间戳。如果R块使用计数数据结构的检查点经启用以便在执行三个操作中的至少一个之后以及在完成所有三个操作之前发生,检查点可记录R块使用计数数据结构的不一致版本,并且诸如在电源故障之后的R块使用计数数据结构的恢复会导致不反映恢复之后的R块的实际使用的不一致值。相应地,在各种实施方式中,相对于检查点以原子方式执行根据每个数据写入的R块使用计数数据结构的相应更新。
图11示出了例如在故障之后恢复和/或重建FLM和SLM信息(诸如图2和图8中的一个或多个中所示的)和其他NVM管理数据结构的所选细节作为FLM和SLM恢复处理1100。恢复和重建操作与结合如图9和图10的一个或多个中所示的自身日志记录和层级一致性技术的操作兼容。
如图11所示的处理响应于故障之后的事件,例如恢复/重建请求、软或硬重置或开机而开始(开始1101)。定位检查点R块的最后(例如,最新写入的)R块,并定位最后检查点R块中的最后(例如,最新写入的)信息(定位FIFO结束1111)。然后,对连续比最新写入的早的检查点R块的部分进行处理直至重建FLM的整个图像为止。在某些实施方式中,FLM重建处理包括定位最新的FLM部分以及定位最旧时间标记(定位最新FLM块和最旧纪元1112),然后自最旧时间标记起重建FLM(自最旧纪元1113起恢复FLM)。在某些实施方式和/或使用场景下,FLM的一个或多个稍后部分由于孔,诸如由于在电源发生故障时无法完成的写入,而不与较早部分连接在一起。在恢复期间丢弃不与较早部分连接在一起的部分。
在基于检查点R块重建FLM之后,比重建FLM更新(根据使用更新存储的时间标记)的任何SLM更新适用于FLM(根据SLM更新来更新FLM1114)。然后,针对比任何对应SLM条目(根据数据更新来更新SLM1115)更新(根据使用写入数据存储的时间标记)的任何数据写入来更新SLM。然后完成处理(结束1199),并且FLM、SLM和其他数据结构是相干且一致的,以便用于操作SSD的NVM。
在某些实施方式中,通过确保在预定量的纪元值中(称为映射刷新间隔)将缓存的任何修改SLM条目刷新到NVM来限制进行处理以更新SLM的写入数据的量。例如,每个修改SLM条目(或每个修改SLM页面)自最后刷新相应修改SLM条目(或SLM页面)起跟踪修改的最早纪元值,并在相应修改SLM条目(或SLM页面)在最新数据写入之后多达10,000个纪元值之前刷新相应修改SLM条目(或SLM页面)。当从更新的数据写入重建SLM时,仅将最新的大约10,000个数据写入(如通过纪元值测得的)视为SLM更新,因为任何旧数据写入已经被写入NVM。
在某些实施方式中,恢复处理针对数据流、映射流和检查点FIFO中的每一个确定相应最新有效纪元和相应最早所需的纪元。恢复处理从在检查点FIFO的最早所需纪元和检查点FIFO的最新有效纪元之间发现的FLM的部分恢复FLM。在映射流中的最早所需纪元和映射流中的最新有效纪元之间的映射流中发现的SLM更新适用于FLM,以便FLM与映射流一致。来自在数据流中的最早所需纪元和数据流中的最新有效纪元之间的数据流中发现的数据写入的更新然后适用于SLM,以便SLM与数据流一致。在各种实施方式和/或使用场景下,诸如当缓存不能保持恢复所需的所有更新时,将更新从数据流中的数据写入应用于SLM任选地和/或可选地将SLM条目和/或页面从缓存刷新到映射流。在恢复期间刷新的SLM条目和/或页面更新FLM的条目,反之在恢复期间任选地和/或可选地将FLM的一个或多个部分写入检查点FIFO。在各种实施方式中,恢复处理的完成将“恢复完成”标记,诸如具体类型的报头,写入一个或多个流。
在某些实施方式中,数据流中的最新有效纪元是数据流中的最后写入纪元值(对应于数据流中的数据写入),该最后写入纪元值与恢复所需的数据流的所有前述部分连接在一起。映射流中的最新有效纪元是映射流中的最后写入纪元值(对应于映射流中的SLM条目和/或页面写入),且在数据流中的最新有效纪元处或之前,该最后写入纪元值与恢复所需的映射流的所有前述部分连接在一起。检查点FIFO中的最新有效纪元是检查点FIFO中的最后写入纪元值(对应于检查点FIFO中的FLM的一部分),且在映射流中的最新有效纪元处或之前,该最后写入纪元值与恢复所需的检查点FIFO的所有前述部分连接在一起。在进一步的实施方式中,检查点FIFO中的最新有效纪元也与一个或多个其他数据结构的连续检查点相关联,诸如与R块使用空间数据结构相关联。
在某些实施方式中,检查点FIFO中的最早所需纪元是FLM的最新部分的纪元值,以便在检查点FIFO中的最早所需纪元和检查点FIFO中的最新有效纪元中获得FLM的一个完整(尽管不相关)版本。映射流中的最早所需纪元是映射流中的最新SLM条目和/或页面的纪元值,该最早所需纪元是在检查点FIFO中的最早所需纪元处或之前。数据流中的最早所需纪元是最新数据写入的纪元值,该最早所需纪元在映射流中的最新有效纪元之前不迟于映射刷新间隔。
在某些实施方式和/或使用场景下,诸如当已经存在故障时,在恢复期间发现数据流中的孔。在孔之前的信息是有效的,而继孔之后的信息是无效的。任选将日志记录添加到数据流中(例如在恢复期间)以表示孔和恢复表示的开始之间的信息是无效的,而在开始恢复表示之后的信息是新有效信息的开始。在各种实施方式中,恢复表示的开始是表示恢复处理的开始特殊类型的报头,诸如日志报头。
在某些情况下,恢复处理为相对低延迟。例如,如果在相对较长的时间内没有写入或再循环时故障是功率损耗,则不存在适用于FLM的SLM更新,并且不存在尚未在SLM中反映的数据写入。可替代地,在其他情况下,恢复处理为相对高延迟。例如,如果故障使得检查点R块和/或映射R块全部或基本上不一致,则读取存储有效数据信息的所有数据R块以重建FLM,并且SLM也整体重建。在其他情况下,恢复处理为中间延迟。例如,如果故障使得检查点R块完好无损,并且相对较少的映射更新尚未在检查点R块中反映出来,并且相对较少的数据写入也尚未在映射R块中反映出来,则需要对FLM和SLM进行相对较少的重建。
在各种实施方式中,图6-11的一个或多个元件与图1A的一个或多个元件对应或相关。例如,图6的设备601,…,609中的一个或多个集体对应于NVM199的所有或部分。再如,图7的闪存芯片710.65,…,710.0集体对应于闪存芯片194的示例。对于又一示例,图10中所示的R块的流存储在NVM199的所有或部分中。在各种实施方式中,图1A的一个或多个元件管理、控制和/或实现与本文其他地方描述的自身日志记录和/或层级一致性有关的技术的所有或任意部分。例如,CPU171的软件执行能力的一部分用于管理映射信息的恢复(例如,如图11所示)。再如,缓冲器131的所有或部分实现如图9中所述的缓冲的所有或任意部分。
额外实现/实施方式信息
在各种实施方式中,如图8-11所述的操作和/或功能的所有或任意部分例如由一个或多个状态机实现。状态机的示例性实现包括硬件(例如,逻辑门和/或电路、专用状态机电路或硬连线控制电路)、软件(例如,固件或微码)或硬件和软件的组合。在某些实施方式中,状态机中的一个或多个至少部分经由一个或多个硬件图像、一个或多个驱动和/或一个或多个应用程序来实现。作为具体示例,状态机中的一个或多个部分经由图1A的SSD控制器100、部分经由CPU内核172执行的固件、部分经由图1B的固件106、部分经由驱动107和/或部分经由应用程序109来实现。
在各种实施方式中,由图8-11所述的操作和/或功能的所有或任意部分例如在一致性管理179、转换管理177和/或图1A的映射中的任意一个或多个的控制下和/或根据其中任意一个或多个经由硬件和/或固件技术的任意组合来实现。
示例性实现技术
在某些实施方式中,由实现自身日志记录和层级一致性以管理非易失性存储(例如,使用闪存)的系统,计算主机闪存控制器,和/或SSD控制器(诸如图1A的SSD控制器100)执行的操作的所有或任意部分的各种组合,和处理器、微处理器、片上系统、专用集成电路、硬件加速器或提供上述操作中的所有或部分的其他电路的部分由与计算机系统进行的处理兼容的规范来指定。该规范符合各种描述,例如,硬件描述语言、电路描述、网表描述、掩码描述或布局描述。示例描述包括:Verilog、VHDL、SPICE、SPICE变体诸如PSpice、IBIS、LEF、DEF、GDS-II、OASIS或其描述。在各种实施方式中,处理包括解释、编译、模拟和合成的任何组合以生成、验证或指定适于包括在一个或多个集成电路上的逻辑和/或电路。根据各种实施方式,每个集成电路可根据多种技术来设计和/或制造。该技术包括可编程技术(例如,场或掩码可编程门阵列集成电路)、半定制技术(诸如整体或部分基于单元的集成电路)和全定制技术(诸如基本上专用的集成电路)及其任意组合,或与集成电路的设计和/或制造兼容的其他任何技术。
在某些实施方式中,通过执行和/或解释一个或多个程序指令,通过解释和/或编译一个或多个源和/或脚本语言语句,或通过执行通过编译、转换和/或解释以编程和/或脚本语言语句表达的信息生成的二进制指令来进行所有或部分如计算机可读介质所述的操作的各种组合,该计算机可读介质存储有一组指令。语句与任何标准的编程或脚本语言(例如,C、C++、Fortran、Pascal、Ada、Java、VBscript和Shell)兼容。一个或多个程序指令、语言语句或二进制指令任选存储在一个或多个计算机可读存储介质元件上。在各种实施方式中,一些、所有或相应部分的程序指令实现为一种或多种功能、例程、子例程、线内例程、过程、宏或其部分。
结论
在该说明书中作出的某些选择仅仅是便于制备文本和附图,除非有相反的表示,否则这些选择本身不应解释为表达所述实施方式的结构或操作相关的额外信息。选择的示例包括:用于数字编号的设计的具体组织或分配以及用于识别和引用实施方式的特征和元件的元件标识符(例如,插图编号或数字标志符)的具体组织或分配。
词语“包括(includes)”或“包括(including)”具体意在被理解为对描述开放式范围的逻辑组的抽象,且并不指传达物理包含物,除非后面明确跟随词语“之内”。
尽管为了描述和理解清晰的目的,已在一些细节中描述了上述实施方式,但本发明不限于所提供的细节。有许多本发明的实施方式。所公开的实施方式是示例性的,而不是限制性的。
应理解,构造、布置和使用的许多变化可能与说明书一致,且处于已公布的专利的权利要求的范围内。例如,互连和功能单位的位宽度、时钟速率和所使用的技术的类型根据每个组件块中的各种实施方式而可变。给于互连和逻辑的名称仅是示例性的,且不应被解释为限制所描述的概念。流程图和流程图过程、动作和功能元件的顺序和布置根据各种实施方式可变化。同样地,除非特别说明与此相反,否则指定的值范围、使用的最高值和最低值或其他具体的规范(诸如闪存技术类型;以及寄存器和缓存器中的条目或级别的数量)仅是所描述那些实施方式,期望跟踪实现技术的改进和变化,且不应被解释为限制。
可采用本技术已知的功能等效的技术,而不是用于实现各种组件、子系统、操作、功能、例程、子例程、在线例程、程序、宏或其部分的那些所述技术。还应理解,实施方式中的许多功能方面可在硬件(即,一般专用电路)或软件(例如,经由编程的控制器或处理器的某些方式)中选择性实现,以作为取决于设计约束和更快处理的技术趋势(促使先前在硬件中的功能迁移至软件)和更高的集成密度(促使先前在软件中的功能迁移至硬件)的实施方式的功能。各种实施方式中的具体变化包括但不限于:划分的差异;不同的形状因数和配置;使用不同的操作系统和其他系统软件;使用不同接口标准、网络协议或通信链路;以及当根据具体应用的独特工程和商业限制实现在本文中描述的概念时预期的其他变化。
已通过很好地超越需要用于所描述的实施方式的很多方面的最小实现的细节和环境背景描述了实施方式。本领域的普通技术人员将认识到,一些实施方式省略了公开的组件或特征,且无需改变剩余元件之间的基本合作。因此,应理解多数公开的细节不需要实现所描述的实施方式的各方面。在剩余元件可与现有技术相区别的范围内,被省略的组件和特征不限于本文中所描述的概念。
设计的所有这些变化是在由所描述的实施方式传达的教学上的非实质性变化。还应理解,本文中描述的实施方式对其他的计算和网络应用具有广泛的实用性,且并不仅限于所描述的实施方式的具体应用或行业。因此,本发明将被解释为包括涵盖在所公布的专利的权利要求的范围内的所有可能的修改和变更。
Claims (63)
1.一种存储系统,包括:
用于按第一顺序将一系列数据单元排列在非易失性存储器(NVM)中的构件,所述数据单元中的每一个与多个时间戳中的相应的一个相关联;
用于按第二顺序将一系列数据映射单元排列在所述非易失性存储器中的构件,所述数据映射单元中的每一个与所述时间戳中的相应的一个相关联;
用于确定所述数据单元中的最新有效且连续的一个的构件;
用于确定所述数据映射单元中的最新有效且连续的一个的构件,其中与所述数据映射单元中的最新有效且连续的一个相关联的相应时间戳在与所述数据单元中的最新有效且连续的一个相关联的相应时间戳处或之前;
用于仅恢复直到所述数据映射单元中的最新有效且连续的一个为止的所述数据映射单元中的多个的构件;
其中,所述数据映射单元中的每一个包括所述数据单元中的对应的一个在所述非易失性存储器中的位置;
其中,与所述数据单元中的每一个相关联的相应时间戳在与对应的数据映射单元相关联的相应时间戳处或之前;且
由此,与在与所述数据单元中的最新有效且连续的一个相关联的相应时间戳之后的任何相应时间戳相关联的任何所述数据映射单元都在恢复中被忽略。
2.根据权利要求1所述的系统,其中:
所述数据单元中的每一个与从主机至相应逻辑块地址(LBA)的相应数据写入对应;
所述数据单元的前一个数据单元和后一个数据单元对应于至相应逻辑块地址中的同一个逻辑块地址的所述数据写入中的多个;并且
所述前一个数据单元不具有所述数据映射单元中的相关联的一个数据映射单元。
3.根据权利要求1所述的系统,进一步包括用于与主机交互以通信从所述非易失性存储器读取的信息和/或写入至所述非易失性存储器的信息的构件。
4.根据权利要求3所述的系统,其中用于交互的所述构件与以下各项中的一个或多个兼容:
通用串行总线(USB)接口标准,
紧凑式闪存(CF)接口标准,
多媒体卡(MMC)接口标准,
Thunderbolt接口标准,
UFS接口标准,
安全数字(SD)接口标准,
记忆棒接口标准,
xD图片卡接口标准,
集成驱动电子装置(IDE)接口标准,
串行高级技术附件(SATA)接口标准,
小型计算机系统接口(SCSI)接口标准,
光纤通道接口标准,
以太网接口标准,以及
快速外围组件互连(PCIe)接口标准。
5.根据权利要求4所述的系统,其中所述多媒体卡(MMC)接口标准包括嵌入式MMC(eMMC)接口标准。
6.根据权利要求4所述的系统,其中所述串行高级技术附件(SATA)接口标准包括外部SATA(eSATA)接口标准。
7.根据权利要求4所述的系统,其中所述小型计算机系统接口(SCSI)接口标准包括串行连接小型计算机系统接口(SAS)接口标准。
8.根据权利要求3所述的系统,其中所述主机包括以下各项中的一个或多个:
计算机,
存储服务器,
存储附接网络(SAN),
网络附接存储(NAS)设备,
直接附接存储(DAS)设备,
存储器件,
电子阅读设备,
个人数字助理(PDA),
导航系统,
全球定位系统(GPS)设备,
汽车控制系统,
打印机、复印机或传真机或多合一设备,
销售点(POS)设备,
现金出纳机,
媒体播放器,
媒体记录器,
数码相机,
蜂窝手机,
无绳电话手机,以及
电子游戏机。
9.根据权利要求8所述的系统,其中所述计算机包括以下各者中的一或多者:
工作站计算机;
服务器计算机;
个人计算机(PC);
笔记本电脑;
上网本电脑;
平板设备或电脑;和
超极本电脑。
10.根据权利要求8所述的系统,其中所述汽车控制系统包括汽车媒体控制系统或汽车媒体控制计算机。
11.根据权利要求8所述的系统,其中所述媒体播放器包括电视机。
12.根据权利要求8所述的系统,其中所述媒体记录器包括数字视频录像机(DVR)。
13.根据权利要求8所述的系统,进一步包括所述主机的所有或任意部分。
14.根据权利要求1所述的系统,进一步包括用于与包括所有或部分的所述非易失性存储器的一个或多个闪存交互的构件。
15.根据权利要求14所述的系统,其中用于交互的所述构件与以下各项中的一个或多个兼容:
开放NAND闪存接口(ONFI),
切换模式接口,
同步接口,以及
异步接口。
16.根据权利要求15所述的系统,其中所述同步接口包括双倍数据速率(DDR)同步接口。
17.根据权利要求16所述的系统,其中所述双倍数据速率(DDR)同步接口包括DDR2同步接口。
18.根据权利要求14所述的系统,其中所述闪存中的至少一个包括以下各项中的一个或多个:
NAND闪存技术存储单元,以及
NOR闪存技术存储单元。
19.根据权利要求14所述的系统,其中所述闪存中的至少一个包括以下各项中的一个或多个:
单层单元(SLC)闪存技术存储单元,以及
多层单元(MLC)闪存技术存储单元。
20.根据权利要求14所述的系统,进一步包括所述闪存中的所有或任意的一个或多个。
21.一种存储系统,包括:
用于将一系列数据存储单元写入非易失性存储器(NVM)的构件,所述数据存储单元中的每一个与多个时间戳中的相应的一个相关联,其中所述数据存储单元的写入根据第一顺序;
用于将一系列数据映射单元写入所述非易失性存储器中的构件,所述数据映射单元中的每一个与所述时间戳中的相应的一个相关联,其中所述数据映射单元的写入根据第二顺序;
用于根据所述第一顺序确定所述数据存储单元中的最新有效且连续的一个的构件;
用于根据所述第二顺序来确定与表示相对年龄的所述相应时间戳中的一个相关联的所述数据映射单元中的最新有效且连续的一个的构件,该相对年龄等于或老于由与所述数据存储单元中的所述最新有效且连续的一个相关联的相应时间戳表示的相对年龄;以及
用于根据所述第一顺序和所述第二顺序来仅恢复直到所述数据映射单元中的所述最新有效且连续的一个为止的所述数据映射单元中的多个的构件;
其中,所述数据映射单元中的每一个包括所述数据存储单元中的对应的一个在所述非易失性存储器中的位置;并且
其中,与所述数据存储单元中的每一个相关联的相应时间戳表示等于或老于由与对应的数据映射单元相关联的相应时间戳表示的相对年龄的相对年龄。
22.一种存储系统,包括:
用于将一系列数据存储单元写入非易失性存储器(NVM)的构件,所述数据存储单元中的每一个与多个时间戳中的相应的一个相关联,其中所述数据存储单元的写入根据第一顺序;
用于将一系列数据映射单元写入所述非易失性存储器中的构件,所述数据映射单元中的每一个与所述时间戳中的相应的一个相关联,其中所述数据映射单元的写入根据第二顺序;
用于根据所述第一顺序确定所述数据存储单元中的第一个的构件,所述数据存储单元中的第一个是所述数据存储单元中的最新有效且连续的一个;
用于根据所述第二顺序确定与表示相对年龄的所述相应时间戳中的一个相关联的所述数据映射单元中的最新有效且连续的一个的构件,该相对年龄等于或老于由与所述数据存储单元中的最新有效且连续的一个相关联的相应时间戳表示的相对年龄;
用于根据所述第一顺序确定所述数据存储单元中的第二个的构件,所述数据存储单元中的第二个是与表示相对年龄的所述相应时间戳中的一个相关联的所述数据存储单元中的最新的一个,该相对年龄等于或在预定量上先于由与所述数据映射单元中的最新有效且连续的一个相关联的相应时间戳表示的相对年龄;
用于根据所述第一顺序和所述第二顺序来仅使用来自所述数据存储单元中的第二个到所述数据存储单元中的第一个的所述数据单元中的多个来恢复直到所述数据映射单元中的最新有效且连续的一个为止的所述数据映射单元中的多个的构件;
其中,所述数据映射单元中的每一个包括所述数据存储单元中的对应的一个在所述非易失性存储器中的位置;并且
其中,与所述数据存储单元中的每一个相关联的相应时间戳表示等于或老于由与对应的数据映射单元相关联的相应时间戳表示的相对年龄的相对年龄。
23.根据权利要求21或22所述的系统,其中:
所述数据存储单元中的第一个对应于从主机至特定逻辑块地址(LBA)的第一数据写入;
所述数据存储单元中的第二个对应于从所述主机至所述特定逻辑块地址的第二数据写入;
所述第一数据写入按时间顺序在所述第二数据写入之前;并且
所述数据映射单元中没有一个与第一数据存储单元对应。
24.根据权利要求22所述的系统,进一步包括:
用于针对先前未写入所述非易失性存储器的数据映射单元中的每个修改的数据映射单元来识别与最旧更新相关联的所述时间戳中的相应的一个时间戳的构件,所述相应的一个时间戳等于与所述数据存储单元中的特定的一个相关联的相应时间戳,所述修改的数据映射单元包括特定的数据存储单元的在所述非易失性存储器中的位置;以及
用于在写入与所述相应时间戳中的一个相关联的所述数据存储单元中的一个时或之前,将先前未写入所述非易失性存储器的所述修改的数据映射单元中的每一个写入所述非易失性存储器的构件,所述相应时间戳中的所述一个多于预定量地落后与所述修改的数据映射单元的最旧更新相关联的相应时间戳。
25.根据权利要求21或22所述的系统,进一步包括用于与主机交互以通信从所述非易失性存储器读取的信息和/或写入至所述非易失性存储器的信息的构件。
26.根据权利要求25所述的系统,其中用于交互的所述构件与以下各项中的一个或多个兼容:
通用串行总线(USB)接口标准,
紧凑式闪存(CF)接口标准,
多媒体卡(MMC)接口标准,
Thunderbolt接口标准,
UFS接口标准,
安全数字(SD)接口标准,
记忆棒接口标准,
xD图片卡接口标准,
集成驱动电子装置(IDE)接口标准,
串行高级技术附件(SATA)接口标准,
小型计算机系统接口(SCSI)接口标准,
光纤通道接口标准,
以太网接口标准,以及
快速外围组件互连(PCIe)接口标准。
27.根据权利要求26所述的系统,其中所述多媒体卡(MMC)接口标准包括嵌入式MMC(eMMC)接口标准。
28.根据权利要求26所述的系统,其中所述串行高级技术附件(SATA)接口标准包括外部SATA(eSATA)接口标准。
29.根据权利要求26所述的系统,其中所述小型计算机系统接口(SCSI)接口标准包括串行连接小型计算机系统接口(SAS)接口标准。
30.根据权利要求25所述的系统,其中所述主机包括以下各项中的一个或多个:
计算机,
存储服务器,
存储附接网络(SAN),
网络附接存储(NAS)设备,
直接附接存储(DAS)设备,
存储器件,
电子阅读设备,
个人数字助理(PDA),
导航系统,
全球定位系统(GPS)设备,
汽车控制系统,
打印机、复印机或传真机或多合一设备,
销售点(POS)设备,
现金出纳机,
媒体播放器,
媒体记录器,
数码相机,
蜂窝手机,
无绳电话手机,以及
电子游戏机。
31.根据权利要求30所述的系统,其中所述计算机包括以下各者中的一或多者:
工作站计算机;
服务器计算机;
个人计算机(PC);
笔记本电脑;
上网本电脑;
平板设备或电脑;和
超极本电脑。
32.根据权利要求30所述的系统,其中所述汽车控制系统包括汽车媒体控制系统或汽车媒体控制计算机。
33.根据权利要求30所述的系统,其中所述媒体播放器包括电视机。
34.根据权利要求30所述的系统,其中所述媒体记录器包括数字视频录像机(DVR)。
35.根据权利要求30所述的系统,进一步包括所述主机的所有或任意部分。
36.根据权利要求21或22所述的系统,进一步包括用于与包括所有或部分的所述非易失性存储器的一个或多个闪存交互的构件。
37.根据权利要求36所述的系统,其中用于交互的所述构件与以下各项中的一个或多个兼容:
开放NAND闪存接口(ONFI),
切换模式接口,
同步接口,以及
异步接口。
38.根据权利要求37所述的系统,其中所述同步接口包括双倍数据速率(DDR)同步接口。
39.根据权利要求38所述的系统,其中所述双倍数据速率(DDR)同步接口包括DDR2同步接口。
40.根据权利要求36所述的系统,其中所述闪存中的至少一个包括以下各项中的一个或多个:
NAND闪存技术存储单元,以及
NOR闪存技术存储单元。
41.根据权利要求36所述的系统,其中所述闪存中的至少一个包括以下各项中的一个或多个:
单层单元(SLC)闪存技术存储单元,以及
多层单元(MLC)闪存技术存储单元。
42.根据权利要求36所述的系统,进一步包括所述闪存中的所有或任意的一个或多个。
43.一种存储系统,包括:
用于根据存储流将多个存储单元写入非易失性存储器(NVM)的构件,所述存储单元中的每一个包括数据部分和对应时间戳部分;
用于根据映射流将多个映射单元写入非易失性存储器的构件,所述映射单元中的每一个包括条目部分和对应时间戳部分;
其中,至少一部分所述条目部分中的每一个使得能够通过至少指定所述数据部分中的对应的一个来确定将相应的逻辑块(LB)写入非易失性存储器中的哪里;
其中,时间发生顺序由时间戳部分表示,存储单元时间戳部分根据关于彼此的时间戳顺序单调递增,并且映射单元时间戳部分根据关于彼此的时间戳顺序单调递增;并且
其中,存在至少一个特定时间点,此时写入至所述非易失性存储器的映射单元中的至少一个具有时间戳部分,该时间戳部分根据时间发生顺序晚于在所述特定时间点写入至所述非易失性存储器的所述存储单元时间戳部分中的根据时间发生顺序的最新时间戳部分。
44.根据权利要求43所述的系统,其中用于写入所述存储单元的构件按与由所述存储单元时间戳部分表示的时间发生顺序对应的时间顺序写入所述存储单元,并且用于写入所述映射单元的构件按与由所述映射单元时间戳部分表示的时间发生顺序对应的时间顺序写入所述映射单元。
45.根据权利要求43所述的系统,进一步包括用于根据检查点流将一个或多个检查点单元写入所述非易失性存储器的构件,所述检查点单元中的每一个包括映射部分和对应时间戳部分,并且检查点时间戳部分根据关于彼此的时间戳顺序单调递增。
46.根据权利要求43所述的系统,进一步包括用于与主机交互以通信从所述NVM读取的信息和/或写入至所述非易失性存储器的信息的构件。
47.根据权利要求46所述的系统,其中用于交互的所述构件与以下各项中的一个或多个兼容:
通用串行总线(USB)接口标准,
紧凑式闪存(CF)接口标准,
多媒体卡(MMC)接口标准,
Thunderbolt接口标准,
UFS接口标准,
安全数字(SD)接口标准,
记忆棒接口标准,
xD图片卡接口标准,
集成驱动电子装置(IDE)接口标准,
串行高级技术附件(SATA)接口标准,
小型计算机系统接口(SCSI)接口标准,
光纤通道接口标准,
以太网接口标准,以及
快速外围组件互连(PCIe)接口标准。
48.根据权利要求47所述的系统,其中所述多媒体卡(MMC)接口标准包括嵌入式MMC(eMMC)接口标准。
49.根据权利要求47所述的系统,其中所述串行高级技术附件(SATA)接口标准包括外部SATA(eSATA)接口标准。
50.根据权利要求47所述的系统,其中所述小型计算机系统接口(SCSI)接口标准包括串行连接小型计算机系统接口(SAS)接口标准。
51.根据权利要求46所述的系统,其中所述主机包括以下各项中的一个或多个:
计算机,
存储服务器,
存储附接网络(SAN),
网络附接存储(NAS)设备,
直接附接存储(DAS)设备,
存储器件,
电子阅读设备,
个人数字助理(PDA),
导航系统,
全球定位系统(GPS)设备,
汽车控制系统,
打印机、复印机或传真机或多合一设备,
销售点(POS)设备,
现金出纳机,
媒体播放器,
媒体记录器,
数码相机,
蜂窝手机,
无绳电话手机,以及
电子游戏机。
52.根据权利要求51所述的系统,其中所述计算机包括以下各者中一或多者:
工作站计算机;
服务器计算机;
个人计算机(PC);
笔记本电脑;
上网本电脑;
平板设备或电脑;和
超极本电脑。
53.根据权利要求51所述的系统,其中所述汽车控制系统包括汽车媒体控制系统或汽车媒体控制计算机。
54.根据权利要求51所述的系统,其中所述媒体播放器包括电视机。
55.根据权利要求51所述的系统,其中所述媒体记录器包括数字视频录像机(DVR)。
56.根据权利要求51所述的系统,进一步包括所述主机的所有或任意部分。
57.根据权利要求45所述的系统,进一步包括用于与包括所有或部分的所述NVM的一个或多个闪存交互的构件。
58.根据权利要求57所述的系统,其中用于交互的所述构件与以下各项中的一个或多个兼容:
开放NAND闪存接口(ONFI),
切换模式接口,
同步接口,以及
异步接口。
59.根据权利要求58所述的系统,其中所述同步接口包括双倍数据速率(DDR)同步接口。
60.根据权利要求59所述的系统,其中所述双倍数据速率(DDR)同步接口包括DDR2同步接口。
61.根据权利要求57所述的系统,其中所述闪存中的至少一个包括以下各项中的一个或多个:
NAND闪存技术存储单元,以及
NOR闪存技术存储单元。
62.根据权利要求57所述的系统,其中所述闪存中的至少一个包括以下各项中的一个或多个:
单层单元(SLC)闪存技术存储单元,以及
多层单元(MLC)闪存技术存储单元。
63.根据权利要求57所述的系统,进一步包括所述闪存中的所有或任意的一个或多个。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161543707P | 2011-10-05 | 2011-10-05 | |
US61/543,707 | 2011-10-05 | ||
PCT/US2012/058583 WO2013052562A1 (en) | 2011-10-05 | 2012-10-04 | Self-journaling and hierarchical consistency for non-volatile storage |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103392207A CN103392207A (zh) | 2013-11-13 |
CN103392207B true CN103392207B (zh) | 2017-08-04 |
Family
ID=48044124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280009888.4A Expired - Fee Related CN103392207B (zh) | 2011-10-05 | 2012-10-04 | 非易失性存储的自身日志记录和层级一致性 |
Country Status (7)
Country | Link |
---|---|
US (2) | US8949517B2 (zh) |
EP (1) | EP2764516A4 (zh) |
JP (1) | JP2014534503A (zh) |
KR (2) | KR101522848B1 (zh) |
CN (1) | CN103392207B (zh) |
TW (1) | TWI516931B (zh) |
WO (1) | WO2013052562A1 (zh) |
Families Citing this family (138)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8245101B2 (en) | 2007-12-27 | 2012-08-14 | Sandisk Enterprise Ip Llc | Patrol function used in flash storage controller to detect data errors |
WO2013022915A1 (en) | 2011-08-09 | 2013-02-14 | Lsi Corporation | I/o device and computing host interoperation |
KR101522848B1 (ko) * | 2011-10-05 | 2015-05-26 | 엘에스아이 코포레이션 | 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성 |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9396110B2 (en) * | 2012-12-21 | 2016-07-19 | Advanced Micro Devices, Inc. | Non-volatile hybrid memory |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9395924B2 (en) | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US10642505B1 (en) | 2013-01-28 | 2020-05-05 | Radian Memory Systems, Inc. | Techniques for data migration based on per-data metrics and memory degradation |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
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 |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9235509B1 (en) | 2013-08-26 | 2016-01-12 | Sandisk Enterprise Ip Llc | Write amplification reduction by delaying read access to data written during garbage collection |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
JP6400695B2 (ja) * | 2013-10-21 | 2018-10-03 | アビニシオ テクノロジー エルエルシー | データユニットの集合のチェックポイント作成 |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
CN103546579B (zh) * | 2013-11-07 | 2017-01-04 | 陈靓 | 一种用数据日志提高分布式存储系统可用性的方法 |
US9244785B2 (en) * | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
KR102190670B1 (ko) * | 2014-03-03 | 2020-12-14 | 삼성전자주식회사 | 마이그레이션 관리자를 포함하는 메모리 시스템 |
CN104899114B (zh) * | 2014-03-07 | 2018-03-20 | 中国科学院苏州纳米技术与纳米仿生研究所 | 一种固态硬盘上的连续时间数据保护方法 |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
WO2015147817A1 (en) * | 2014-03-26 | 2015-10-01 | Hewlett-Packard Development Company, L.P. | Nvm object |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
CN104951383A (zh) * | 2014-03-31 | 2015-09-30 | 伊姆西公司 | 用于监测硬盘的健康状况的方法和装置 |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9606870B1 (en) * | 2014-03-31 | 2017-03-28 | EMC IP Holding Company LLC | Data reduction techniques in a flash-based key/value cluster storage |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US9990298B2 (en) | 2014-05-12 | 2018-06-05 | Western Digital Technologies, Inc | System and method for caching solid state device read request results |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US9208077B1 (en) | 2014-05-30 | 2015-12-08 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Forced map entry flush to prevent return of old data |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US9690720B2 (en) | 2014-06-03 | 2017-06-27 | Qualcomm Incorporated | Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device |
US9632953B2 (en) | 2014-06-03 | 2017-04-25 | Qualcomm Incorporated | Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
TWI540582B (zh) * | 2014-07-10 | 2016-07-01 | 群聯電子股份有限公司 | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US10552085B1 (en) | 2014-09-09 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for directed data migration |
US9542118B1 (en) * | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US10025843B1 (en) | 2014-09-24 | 2018-07-17 | EMC IP Holding Company LLC | Adjusting consistency groups during asynchronous replication |
CN104461391B (zh) * | 2014-12-05 | 2019-08-02 | 上海宝存信息科技有限公司 | 一种存储设备元数据管理处理方法及系统 |
US20160259754A1 (en) | 2015-03-02 | 2016-09-08 | Samsung Electronics Co., Ltd. | Hard disk drive form factor solid state drive multi-card adapter |
CN106155812A (zh) | 2015-04-28 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种对虚拟主机的资源管理的方法、装置、系统及电子设备 |
US10656838B2 (en) | 2015-07-13 | 2020-05-19 | Samsung Electronics Co., Ltd. | Automatic stream detection and assignment algorithm |
US10089196B2 (en) | 2015-07-14 | 2018-10-02 | Shannon Systems Ltd. | Methods for reconfiguring a storage controller when control logic fails and apparatuses using the same |
CN106648439B (zh) * | 2015-07-14 | 2019-11-29 | 上海宝存信息科技有限公司 | 于控制逻辑错误时重新配置存储控制器的方法及装置 |
US10552058B1 (en) | 2015-07-17 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for delegating data processing to a cooperative memory controller |
US11983138B2 (en) | 2015-07-26 | 2024-05-14 | Samsung Electronics Co., Ltd. | Self-configuring SSD multi-protocol support in host-less environment |
US10108503B2 (en) * | 2015-08-24 | 2018-10-23 | Western Digital Technologies, Inc. | Methods and systems for updating a recovery sequence map |
US10552335B2 (en) * | 2015-09-25 | 2020-02-04 | Beijing Lenovo Software Ltd. | Method and electronic device for a mapping table in a solid-state memory |
US10019193B2 (en) * | 2015-11-04 | 2018-07-10 | Hewlett Packard Enterprise Development Lp | Checkpointing a journal by virtualization of non-volatile random access memory |
CN105512054B (zh) * | 2015-12-09 | 2018-11-09 | 上海兆芯集成电路有限公司 | 主机接口控制器以及储存装置控制方法 |
US10152527B1 (en) | 2015-12-28 | 2018-12-11 | EMC IP Holding Company LLC | Increment resynchronization in hash-based replication |
US9927985B2 (en) * | 2016-02-18 | 2018-03-27 | SK Hynix Inc. | Method of dynamic table journaling |
US10866905B2 (en) | 2016-05-25 | 2020-12-15 | Samsung Electronics Co., Ltd. | Access parameter based multi-stream storage device access |
US9830098B1 (en) | 2016-07-11 | 2017-11-28 | Silicon Motion, Inc. | Method of wear leveling for data storage device |
US11461258B2 (en) | 2016-09-14 | 2022-10-04 | Samsung Electronics Co., Ltd. | Self-configuring baseboard management controller (BMC) |
US11144496B2 (en) | 2016-07-26 | 2021-10-12 | Samsung Electronics Co., Ltd. | Self-configuring SSD multi-protocol support in host-less environment |
US20190109720A1 (en) | 2016-07-26 | 2019-04-11 | Samsung Electronics Co., Ltd. | Modular system (switch boards and mid-plane) for supporting 50g or 100g ethernet speeds of fpga+ssd |
US10372659B2 (en) | 2016-07-26 | 2019-08-06 | Samsung Electronics Co., Ltd. | Multi-mode NMVE over fabrics devices |
US10210123B2 (en) | 2016-07-26 | 2019-02-19 | Samsung Electronics Co., Ltd. | System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices |
US10346041B2 (en) | 2016-09-14 | 2019-07-09 | Samsung Electronics Co., Ltd. | Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host |
US9946489B2 (en) * | 2016-07-27 | 2018-04-17 | Western Digital Technologies, Inc. | Multi-stream journaled replay |
US10229000B2 (en) | 2016-08-09 | 2019-03-12 | Seagate Llc | Erasure codes to prevent lower page corruption in flash memory |
KR102229013B1 (ko) * | 2016-09-02 | 2021-03-17 | 삼성전자주식회사 | 자동 스트림 검출 및 할당 알고리즘 |
US20180101312A1 (en) | 2016-10-06 | 2018-04-12 | Netflix, Inc. | Techniques for generating and operating on in-memory datasets |
US9720785B1 (en) | 2016-10-14 | 2017-08-01 | International Business Machines Corporation | Variable checkpointing in a streaming application that includes tuple windows |
US9678837B1 (en) | 2016-10-14 | 2017-06-13 | International Business Machines Corporation | Variable checkpointing in a streaming application with one or more consistent regions |
CN108153482B (zh) * | 2016-12-05 | 2021-09-07 | 厦门旌存半导体技术有限公司 | Io命令处理方法与介质接口控制器 |
US10719495B2 (en) * | 2017-02-09 | 2020-07-21 | Micron Technology, Inc. | Stream selection for multi-stream storage devices |
US10303560B2 (en) * | 2017-02-14 | 2019-05-28 | Dell Products L.P. | Systems and methods for eliminating write-hole problems on parity-based storage resources during an unexpected power loss |
JP6779821B2 (ja) * | 2017-03-24 | 2020-11-04 | キオクシア株式会社 | メモリシステム及びデータの読み出し方法 |
US20180300083A1 (en) * | 2017-04-12 | 2018-10-18 | Hewlett Packard Enterprise Development Lp | Write-ahead logging through a plurality of logging buffers using nvm |
CN108733575B (zh) * | 2017-04-20 | 2022-12-27 | 深圳市得一微电子有限责任公司 | 一种断电重启后逻辑对物理映像表的重建方法、固态硬盘 |
US11048624B2 (en) * | 2017-04-25 | 2021-06-29 | Samsung Electronics Co., Ltd. | Methods for multi-stream garbage collection |
US10528295B2 (en) * | 2017-04-29 | 2020-01-07 | International Business Machines Corporation | Intra-tier data migration to segregate zombie storage from dead storage |
KR102234725B1 (ko) * | 2017-05-30 | 2021-04-02 | 에스케이하이닉스 주식회사 | 컨트롤러 및 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10635654B2 (en) * | 2017-06-12 | 2020-04-28 | Samsung Electronics Co., Ltd. | Data journaling for large solid state storage devices with low DRAM/SRAM |
US10691340B2 (en) * | 2017-06-20 | 2020-06-23 | Samsung Electronics Co., Ltd. | Deduplication of objects by fundamental data identification |
US10275162B2 (en) | 2017-06-23 | 2019-04-30 | Dell Products L.P. | Methods and systems for managing data migration in solid state non-volatile memory |
US10176046B1 (en) * | 2017-06-29 | 2019-01-08 | EMC IP Holding Company LLC | Checkpointing of metadata into user data area of a content addressable storage system |
TWI633434B (zh) * | 2017-07-12 | 2018-08-21 | 宏碁股份有限公司 | 管理固態硬碟之方法、系統及電腦可讀取媒體 |
CN107728937B (zh) * | 2017-09-15 | 2020-09-04 | 上海交通大学 | 一种使用非易失性内存介质的键值对持久存储方法及系统 |
CN107784121B (zh) * | 2017-11-18 | 2020-04-24 | 中国人民解放军国防科技大学 | 一种基于非易失内存的日志文件系统的小写优化方法 |
KR20190074886A (ko) * | 2017-12-20 | 2019-06-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US20190214087A1 (en) * | 2018-01-09 | 2019-07-11 | Western Digital Technologies, Inc. | Non-volatile storage system with decoupling of write transfers from write operations |
TWI662409B (zh) * | 2018-01-23 | 2019-06-11 | 祥碩科技股份有限公司 | 實體區域頁面位址轉換器與實體區域頁面清單存取方法 |
US10691354B1 (en) | 2018-01-31 | 2020-06-23 | EMC IP Holding Company LLC | Method and system of disk access pattern selection for content based storage RAID system |
TWI651650B (zh) * | 2018-02-05 | 2019-02-21 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法及使用所述方法的儲存控制器 |
US10585791B2 (en) * | 2018-03-20 | 2020-03-10 | Intel Corporation | Ordering of memory device mapping to reduce contention |
US10636495B2 (en) | 2018-06-12 | 2020-04-28 | Western Digital Technologies, Inc. | Adjustable read retry order based on decoding success trend |
US11347653B2 (en) * | 2018-08-31 | 2022-05-31 | Nyriad, Inc. | Persistent storage device management |
CN110928737B (zh) * | 2018-09-19 | 2021-05-18 | 华为技术有限公司 | 监控样本进程的内存访问行为的方法和装置 |
US10922178B2 (en) * | 2018-10-31 | 2021-02-16 | Hewlett Packard Enterprise Development Lp | Masterless raid for byte-addressable non-volatile memory |
CN111143230B (zh) * | 2018-11-02 | 2022-03-29 | 群联电子股份有限公司 | 数据整并方法、存储器存储装置及存储器控制电路单元 |
TWI709042B (zh) * | 2018-11-08 | 2020-11-01 | 慧榮科技股份有限公司 | 用來進行關於容錯式磁碟陣列的映射資訊管理之方法與裝置以及儲存系統 |
CN109450689B (zh) * | 2018-11-19 | 2022-02-22 | 郑州云海信息技术有限公司 | 一种日志打印方法、装置、存储介质和计算机设备 |
CN109558337B (zh) * | 2018-11-30 | 2023-09-19 | 北京同有飞骥科技股份有限公司 | 高速缓存的动态访问方法、装置及存储介质 |
US10845991B2 (en) * | 2018-12-03 | 2020-11-24 | EMC IP Holding Company LLC | Shallow memory table for data storage service |
US11163693B2 (en) * | 2019-07-30 | 2021-11-02 | EMC IP Holding Company LLC | Hash-based one-level mapping for storage clusters |
TWI743562B (zh) * | 2019-09-11 | 2021-10-21 | 英業達股份有限公司 | 資料記錄系統的操作方法 |
KR20210041158A (ko) | 2019-10-04 | 2021-04-15 | 삼성전자주식회사 | 기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법 |
KR20210041159A (ko) | 2019-10-04 | 2021-04-15 | 삼성전자주식회사 | 정정 가능한 독출 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법 |
KR20210044086A (ko) * | 2019-10-14 | 2021-04-22 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 데이터 저장 시스템 |
US11726921B2 (en) * | 2020-05-21 | 2023-08-15 | Seagate Technology Llc | Combined page footer for parallel metadata storage |
US11620234B2 (en) | 2020-06-29 | 2023-04-04 | Western Digital Technologies, Inc. | Operation-deterministic write operations for data recovery and integrity checks |
TWI733568B (zh) | 2020-08-27 | 2021-07-11 | 慧榮科技股份有限公司 | 記憶裝置、快閃記憶體控制器及其存取方法 |
KR20220037184A (ko) * | 2020-09-17 | 2022-03-24 | 삼성전자주식회사 | 스토리지 장치, 스토리지 시스템 및 스토리지 시스템의 동작 방법 |
KR20220101349A (ko) | 2021-01-11 | 2022-07-19 | 삼성전자주식회사 | 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치 |
JP2022172698A (ja) * | 2021-05-06 | 2022-11-17 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置、情報処理システム、および情報処理方法 |
CN113255262B (zh) * | 2021-06-07 | 2021-09-28 | 上海国微思尔芯技术股份有限公司 | 对象分配方法、装置、计算机设备和存储介质 |
TWI773395B (zh) | 2021-06-22 | 2022-08-01 | 慧榮科技股份有限公司 | 記憶體控制器與連結識別方法 |
US20230015697A1 (en) * | 2021-07-13 | 2023-01-19 | Citrix Systems, Inc. | Application programming interface (api) authorization |
JP7457740B2 (ja) * | 2022-03-03 | 2024-03-28 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1924830A (zh) * | 2001-01-19 | 2007-03-07 | 三因迪斯克公司 | 编程和读取更新数据的非易失性存储器系统和方法 |
CN101576834A (zh) * | 2009-05-08 | 2009-11-11 | 西安蓝海本立信息科技有限公司 | 基于时间戳建立数据视图的连续数据保护系统及方法 |
CN101930404A (zh) * | 2010-08-27 | 2010-12-29 | 威盛电子股份有限公司 | 存储装置及其操作方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1153235A (ja) * | 1997-08-08 | 1999-02-26 | Toshiba Corp | ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム |
KR100445134B1 (ko) * | 2002-01-31 | 2004-08-21 | 삼성전자주식회사 | 플래시 메모리 안정화기능을 구비한 호스트 기기 및 그 방법 |
US6968439B2 (en) * | 2002-08-29 | 2005-11-22 | Micron Technology, Inc. | Single segment data object management |
US20060174067A1 (en) | 2005-02-03 | 2006-08-03 | Craig Soules | Method of caching data |
US7594073B2 (en) * | 2006-09-29 | 2009-09-22 | Intel Corporation | Method and apparatus for caching memory content on a computing system to facilitate instant-on resuming from a hibernation state |
TW201007734A (en) * | 2008-08-06 | 2010-02-16 | Genesys Logic Inc | Flash memory control apparatus having signal-converting module |
US7925925B2 (en) * | 2008-12-30 | 2011-04-12 | Intel Corporation | Delta checkpoints for a non-volatile memory indirection table |
US9753847B2 (en) * | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
KR101522848B1 (ko) * | 2011-10-05 | 2015-05-26 | 엘에스아이 코포레이션 | 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성 |
-
2012
- 2012-10-04 KR KR1020137029137A patent/KR101522848B1/ko active IP Right Grant
- 2012-10-04 WO PCT/US2012/058583 patent/WO2013052562A1/en active Application Filing
- 2012-10-04 CN CN201280009888.4A patent/CN103392207B/zh not_active Expired - Fee Related
- 2012-10-04 JP JP2014534661A patent/JP2014534503A/ja active Pending
- 2012-10-04 EP EP12838511.9A patent/EP2764516A4/en not_active Withdrawn
- 2012-10-04 KR KR1020147015582A patent/KR101562781B1/ko not_active IP Right Cessation
- 2012-10-04 US US13/988,019 patent/US8949517B2/en not_active Expired - Fee Related
- 2012-10-05 TW TW101137008A patent/TWI516931B/zh not_active IP Right Cessation
-
2015
- 2015-02-01 US US14/611,258 patent/US9886383B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1924830A (zh) * | 2001-01-19 | 2007-03-07 | 三因迪斯克公司 | 编程和读取更新数据的非易失性存储器系统和方法 |
CN101576834A (zh) * | 2009-05-08 | 2009-11-11 | 西安蓝海本立信息科技有限公司 | 基于时间戳建立数据视图的连续数据保护系统及方法 |
CN101930404A (zh) * | 2010-08-27 | 2010-12-29 | 威盛电子股份有限公司 | 存储装置及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US20170161191A1 (en) | 2017-06-08 |
EP2764516A4 (en) | 2015-07-08 |
KR20130132662A (ko) | 2013-12-04 |
JP2014534503A (ja) | 2014-12-18 |
CN103392207A (zh) | 2013-11-13 |
US20140082261A1 (en) | 2014-03-20 |
TW201324150A (zh) | 2013-06-16 |
WO2013052562A1 (en) | 2013-04-11 |
KR101522848B1 (ko) | 2015-05-26 |
US9886383B2 (en) | 2018-02-06 |
KR20140084337A (ko) | 2014-07-04 |
TWI516931B (zh) | 2016-01-11 |
KR101562781B1 (ko) | 2015-10-23 |
US8949517B2 (en) | 2015-02-03 |
EP2764516A1 (en) | 2014-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103392207B (zh) | 非易失性存储的自身日志记录和层级一致性 | |
CN103902403B (zh) | 经由冗余阵列的非易失性存储器编程故障恢复 | |
CN103942010B (zh) | 用于写入非易失性存储器的方法和系统及有形非临时性计算机可读介质 | |
CN103942114B (zh) | Nvm地址、跨度及长度映射/转换的存储地址空间 | |
CN103858116B (zh) | I/o设备及计算主机互操作 | |
KR101564569B1 (ko) | 상위-레벨 리던던시 정보 계산 | |
CN103348330B (zh) | 采用独立硅元件的动态较高级冗余模式管理 | |
CN103620563A (zh) | 用于非易失性存储器的可变超量配置 | |
CN106990977A (zh) | 主机看到的设备固件更新效果的管理 | |
CN109976664B (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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160301 Address after: California, USA Applicant after: Seagate Technology LLC Address before: California, USA Applicant before: LSI Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170804 Termination date: 20181004 |