CN109344088B - 固态驱动器中的原子写入命令支持 - Google Patents

固态驱动器中的原子写入命令支持 Download PDF

Info

Publication number
CN109344088B
CN109344088B CN201811145543.7A CN201811145543A CN109344088B CN 109344088 B CN109344088 B CN 109344088B CN 201811145543 A CN201811145543 A CN 201811145543A CN 109344088 B CN109344088 B CN 109344088B
Authority
CN
China
Prior art keywords
logical
write command
page
atomic write
pages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811145543.7A
Other languages
English (en)
Other versions
CN109344088A (zh
Inventor
A·J·汤姆林
J·琼斯
R·N·马伦多尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN109344088A publication Critical patent/CN109344088A/zh
Application granted granted Critical
Publication of CN109344088B publication Critical patent/CN109344088B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits

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)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种在数据存储设备中执行原子写入命令的方法,所述数据存储设备包括易失性存储器和被配置为存储多个物理页的多个非易失性存储器设备。所述方法可以包括:在多个逻辑页(L页)中存储数据,所述多个L页中的每一个与逻辑地址相关联。可以在所述易失性存储器中维护逻辑到物理地址转换映射,并且所述逻辑到物理地址转换映射可以被配置为使得能够确定由每一个逻辑地址引用的数据在一个或多个物理页中的物理位置。由接收到的原子写入命令指定的数据可以被存储在一个或多个L页中。可以推迟对与存储由所述原子写入命令指定的数据的L页相关联的转换映射中的一个或多个条目的更新,直到存储由所述原子写入命令指定的数据的所有L页都已经以电力安全方式被写入。

Description

固态驱动器中的原子写入命令支持
本申请是于2014年3月12日提交的名称为“固态驱动器中的原子写入命令支持”的中国专利申请201480021440.3(PCT/US2014/024303)的分案申请。
背景技术
由于固态驱动器(SSD)中闪速存储器的本质,数据通常由页进行编程并且以块擦除。在SSD中的页一般大小是8-16千字节(KB),而块包含大量页(例如,256或512)。因此,SSD中特定的物理位置(例如,页)不能直接进行覆写,而不覆写相同块中页内的数据,这在磁性硬盘驱动中是可能的。这样,需要间接地址。传统的数据存储设备控制器管理数据存储设备上的闪速存储器并且与主机系统连接,其使用作为闪存转换层(FTL)的一部分的被称为逻辑块寻址(LBA)的逻辑到物理(L2P)映射系统。当新数据代替已经写入的较旧数据时,数据存储设备控制器使得新的数据写在新位置(因为数据存储设备不能直接覆写旧数据),并且更新逻辑映射以指向新的物理位置。此时,旧的物理位置不再保存有效数据。这样,旧的物理位置将最终需要在能够被再次写入之前被擦除。
通常,大的L2P映射表将逻辑条目映射到SSD上的物理地址位置。当写入到来时,该大的L2P映射表通常被保存在小段中。例如,如果发生随机写入,虽然系统可能不得不只更新一个条目,但是仍然必须要保存整个表或其部分,包括未被更新的条目,这是固有低效的。
图1示出了用于数据存储设备的传统逻辑块寻址(LBA)方案的方面。如图所示,映射表104包括针对数据存储设备的闪速存储器106定义的每一个逻辑块102的一个条目。例如,支持512字节逻辑块的64GB数据存储设备可以将自己呈现给主机作为具有125,000,000个逻辑块。映射表104中的一个条目包括闪速存储器106中的125,000个逻辑块中每一个的当前位置。在常规的数据存储设备中,闪存页保存有整数个逻辑块(即,逻辑块不跨闪存页)。在该常规示例中,8KB闪存页将保存有16个(大小为512字节的)逻辑块。因此,逻辑到物理映射表104中的每一个条目包含识别在其上存储有LBA的管芯的字段108,识别在其上存储有LBA的闪存块的字段110,识别闪存块内的闪存页的另一字段112,以及识别用于识别LBA数据开始于所识别出的闪存页中何处的闪存页内的偏移的字段114。映射表104的大尺寸防止该表被保存于SSD控制器内。照惯例,大的映射表104被保存在与SSD控制器连接的外部DRAM中。由于映射表104存储在易失性DRAM中,所以其必须在SSD加电时恢复,因为表的大尺寸,这将花费很长时间。
当写入逻辑块时,更新映射表104中的相对应的条目以反映逻辑块的新位置。当读取逻辑块时,读取映射表104中的相对应的条目以确定在闪速存储器中将要读取的位置。然后针对在映射表104中相对应的条目指定的闪存页来执行读取。当所读取的数据对于闪存页可用时,将在映射条目指定的偏移处的数据从闪存设备传送到主机。当写入逻辑块时,保存有“旧”版本数据的闪速存储器变成“垃圾”(即,数据不再有效)。需要注意的是,当写入逻辑块时,闪速存储器将初始包含至少两个版本的逻辑块;即,有效的、最近写入的版本(由映射表104指向),以及其至少一个其它的旧版本,其是陈旧的并且不再由映射表104中的任何条目所指向。这些“陈旧的”条目被称作“垃圾”,其占据了必须被计数、收集、擦除以及供将来使用可用的空间。这个过程被称作“垃圾收集”。
原子命令是一种完全执行或完全不执行的命令。由于电力循环通常是一些命令不能结束的原因,所以任何原子写入命令必须考虑电力循环问题。在基于闪存的数据存储设备中实现原子写入命令的传统方法不允许对未完全处理的原子写入命令的有效检测、对具有处理中的原子写入的块和元数据进行有效垃圾收集,或者依赖于在缓冲器中复制原子写入数据,由此增加了写入放大、系统复杂性并且生成空闲空间计数问题。
附图说明
图1示出了用于SSD的常规逻辑块寻址方案的方面。
图2是根据一个实施例的数据存储设备,以及这样的数据存储设备的物理和逻辑数据组织的方面的框图。
图3示出了根据一个实施例的逻辑到物理地址转换映射及其图示条目。
图4示出了根据一个实施例的用于更新逻辑到物理地址转换映射以及用于创建S日志条目的方法的方面。
图5是根据一个实施例的S日志的框图。
图6示出了根据一个实施例的S日志的一个条目的示例性组织。
图7是根据一个实施例的超级块(S块)的框图。
图8示出了根据一个实施例的超级页(S页)的另一视图。
图9A示出了根据一个实施例的逻辑到物理地址转换映射、S日志以及S块之间的关系。
图9B是根据一个实施例的S日志映射的框图。
图10是根据一个实施例的数据结构的框图,在所述数据结构中可以存储用于处理原子写入命令的原子序列号。
图11是示出了根据一个实施例的非原子写入和原子写入的方面的框图。
图12示出了根据一个实施例的包括用于原子写入的S日志条目的S日志的方面。
图13是根据一个实施例的用于处理原子写入命令的方法的流程图。
图14是根据一个实施例的用于处理原子写入命令的方法的其它方面的流程图。
图15A-D示出了根据一个实施例的槽号分配的处理。
图16A-C示出了根据一个实施例的局部原子写入命令的处理。
具体实施方式
系统概览
图2是示出了根据一个实施例的数据存储设备的物理和逻辑数据组织的方面的框图。在一个实施例中,数据存储设备是SSD。在另一实施例中,数据存储设备是混合驱动器,其包括闪速存储器和旋转磁性存储介质。本公开适应于SSD和混合实现方式二种,但是为了简单,将结合基于SSD的实现来描述各种实施例。根据一个实施例的数据存储设备控制器202可以被配置为与如附图标记218示出的主机耦合。控制器可以包括执行以下描述的由控制器执行的一些或全部功能的一个或多个处理器。主机218可以利用逻辑块寻址(LBA)方案。虽然LBA大小一般是固定的,但主机可以动态地改变LBA的大小。例如,LBA大小可以通过接口和接口模式而改变。事实上,虽然512字节是最常见的,但4KB也变得更加普通,如作为512+(520、528等)和4KB+(4KB+8、4KB+16等)格式。如图所示,数据存储设备控制器202可以包括页寄存器204或与页寄存器204耦合。页寄存器204可以被配置为使得控制器202能够从数据存储设备读取数据以及向数据存储设备存储数据。控制器202可以被配置为响应于来自主机218的数据访问命令对来自闪速存储器设备的阵列的数据进行编程并且从闪速存储器设备的阵列读取数据。虽然本文的描述提及闪速存储器,但可以理解的是存储器设备的阵列可以包括其它类型的非易失性存储器设备,例如,闪存集成电路、硫属化合物RAM(C-RAM)、相变存储器(PC-RAM或PRAM)、可编程金属化单元RAM(PMC-RAM或PMCm)、双向通用存储器(OUM)、阻抗RAM(RRAM)、NAND存储器(例如,单层单元(SLC)存储器、多级单元(MLC)存储器、或其任意组合)、NOR存储器、EEPROM、铁电存储器(FeRAM)、磁阻RAM(MRAM)、其它分立的NVM(非易失性存储器)芯片、或其任意组合。
页寄存器204可以被配置为使得控制器202从阵列读取数据以及将数据存储到阵列。根据一个实施例,闪速存储器设备的阵列可以包括管芯(例如,128个管芯)中的多个非易失性存储器设备,所述多个非易失性存储器设备中的每一个包括多个块,例如图2的206所示出的。其它页寄存器204(未示出)可以耦合到另一管芯上的块。闪存块的组合被分组到一起可以被称作超级块或S块。在一些实施例中,形成S块的个体块可以从一个或多个管芯、平面或其它级别粒度中选择。因此,S块可以包括分布于一个或多个管芯的、组合到一起的多个闪存块。以这种方式,S块可以形成闪存管理系统(FMS)在其上操作的单元。在一些实施例中,形成S块的个体块可以根据不同于管芯级别的粒度来选择,例如当存储器设备包括细分为例如平面的结构的管芯(即,块可以取自个体平面)的情况。根据一个实施例,可以在S块级别实施分配、擦除以及垃圾收集。在其它实施例中,FMS可以根据例如页、块、平面、管芯等的其它逻辑分组来执行数据操作。
接下来,闪存块206中的每一个包括多个闪存页(F页)208。每一个F页可以具有固定的大小,例如16KB。根据一个实施例,F页为给定闪存设备的最小程序单元的大小。如图3所示,每一个F页208可以被配置为容纳多个物理页,下文中被称为E页210。术语“E页”指的是存储在闪速存储器中的数据结构,在其上应用了误差校正码(ECC)。根据一个实施例,E页210可以形成在数据存储设备内进行物理寻址的基础,并且可以构成闪存读取数据传送的最小单位。因此,E页210可以(但不必)具有预定的固定大小(例如,2KB),并且确定ECC系统的有效载荷(例如,主机数据)的大小。根据一个实施例,每一个F页208可以被配置为在其边界内适应预定的多个E页210。例如,给定16KB大小的F页208以及每E页210固定大小2KB,如图3所示,八个E页210在单个F页208内适应。在任何情况下,根据一个实施例,包括ECC的E页210的2的幂次可以被配置为适应F页208。每一个E页210可以包括数据部分214,以及取决于E页210所在之处,还可以包括ECC部分216。数据部分214和ECC部分216在大小上都不需要是固定的。E页的地址唯一地识别E页在闪速存储器内的位置。例如,E页的地址可以指定闪存信道、在识别出的闪存信道内的特定管芯、管芯内的特定块、特定的F页,以及最后在所识别出的F页内的E页。
为了桥接主机在数据存储设备上的物理寻址和逻辑块寻址,引入逻辑页(L页)构造。L页在图3中由附图标记212示出,其可以包括FMS所使用的地址变换的最小单元。根据一个实施例,每一个L页可以与L页号相关联。因此,L页212的L页号可以被配置为使控制器202能够逻辑地引用存储在一个或多个物理页(例如,E页210)中的主机数据。L页212还可以用作压缩的基本单元。根据一个实施例,与F页208和E页210不同,由于要存储的数据压缩的可变性,L页212在大小上并不是固定的而在大小上可以改变。例如,因为数据的压缩性变化,所以可以将一种类型的4KB的数据压缩成2KB的L页,同时可以将不同类型的4KB的数据压缩成1KB的L页。由于这种压缩,所以L页的大小在最小压缩大小(例如,24字节)到最大未压缩大小(例如,4KB或4KB+)所定义的范围内可以变化。可以实现其它的大小和范围。如图3所示,L页212不需要与E页210的边界对齐。事实上,L页212不仅可以被配置为与F页208和/或E页210边界对齐的开始地址,而且可以被配置为与F页208或E页210的边界不对齐。也就是说,L页开始地址可以位于与F页208的开始地址或结束地址或者E页210的开始地址或结束地址的非零偏移处,如图3所示。由于L页212在大小上并不固定并且可能小于固定大小的E页210,所以多于一个的L页212可以在单个E页210内适应。类似地,由于L页212大小可能大于E页210,所以L页212可能跨越多于一个E页,并且可能甚至跨F页208的边界,如图3中附图标记111所示。
例如,当LBA大小为512或512+字节时,例如,假设未压缩的L页212可以是4KB到4KB+,则最大的八个连续LBA可以被封装到4KB的L页212中。应该注意的是,根据一个实施例,L页212的准确逻辑大小不重要,这是因为在压缩后,物理大小可能跨越从最小尺寸的几字节到全尺寸的几千字节。例如,对于4TB SSD设备,可以使用30位寻址来寻址可能存在于这种SSD中的每一个L页212。
为了阻碍较低页损坏错误,一个实施例利用非易失性缓冲器来暂时存储更新后的L页,至少直到每一个MLC的较低页和较高页被编程。在2012年11月13日递交的共同分配且未决的美国专利申请序列号13/675,913(代理人案号T5960)中提供了与使用这种缓冲器相关的额外细节,其全部公开通过引用合并于此。这种非易失性缓冲器在图2的附图标记211处示出。例如,非易失性缓冲器211可以包括大部分任意电力安全存储器,例如,磁随机存取存储器(MRAM),其以与DRAM可比的速度操作,同时以非易失性方式存储数据。缓冲器211的一部分可以用于支持原子写入命令,这将结合图10开始进一步描述。
地址转换映射和相关数据结构
图3示出了根据一个实施例的逻辑到物理地址转换映射及其图示条目。当主机数据被主机在L页212中引用并且当数据存储设备将L页212存储在一个或多个连续E页210中时,需要逻辑到物理地址转换映射来使得控制器202能够将L页212的L页号与一个或多个E页210相关联。这种逻辑到物理地址转换映射在图3的302处示出,并且在一个实施例中,其是具有每L页212一个条目的线性阵列。这种逻辑到物理地址转换映射302可以存储在易失性存储器306中,例如,DRAM或SRAM。图3还示出了用于四个不同L页212的逻辑到物理地址转换映射中的条目,图3中的L页212与标示为L页1、L页2、L页3和L页4的L页号相关联。根据一个实施例,存储在数据存储设备中的每一个L页可以由逻辑到物理地址转换映射302中的单个并且唯一的条目指向。因此,在与其发展的示例中,示出了四个条目。如302处所示,映射302中的每一个条目可以包括L页号,其可以包括包含被引用的L页的开始地址的物理页(例如,E页)的识别、物理页(例如,E页)中开始地址的偏移以及L页的长度。另外,多个ECC位可以为映射条目提供误差校正功能。例如,以及如图3所示的,并且假设E页大小为2KB,则可以按如下在逻辑到物理地址转换映射302中引用L页:E页1003、偏移800、长度1624,随后是预定量的ECC位(未示出)。也就是,在物理地址方面,L页1的开始在E页1300中(未对齐),而且位于距E页1003的开始物理位置等于800字节的偏移处。此外,压缩的L页1延伸1,624字节,从而跨E页边界到E页1004。因此,E页1003和1004中的每一个存储由L页号L页1所标示的L页212的一部分。类似地,由L页号L页2所引用的压缩的L页整体存储在E页1004中,并且在其400字节的偏移处开始,并且仅在E页1004中延伸696字节。与L页号L页3相关联的压缩的L页在E页1004的1,120字节的偏移处开始(仅与L页2的边界距离24字节),并且延伸4,096字节经过E页1005进入E页1006。因此,与L页号L页3相关联的L页跨越E页1004的一部分、E页1005的全部以及E页1006的一部分。最后,与L页号L页4相关联的L页在E页1006中的1,144字节的偏移处开始,并且延伸3,128字节以完全跨越E页1007,跨F页边界进入下一F页的E页1008。
共同地,这些组成逻辑到物理地址转换映射302的每一个条目的构成标识符字段(E页、偏移、长度和ECC)中的每一个例如大小可以是8字节。也就是,对于示例性4TB驱动器,E页的地址大小可以是32位,偏移大小可以是12位(对于高达4KB的E页数据部分),长度大小可以是10位,并且可以提供ECC字段。其它组织和位字段也是可能的。可以在每次写入或修改L页时创建这种8字节条目,以使得控制器202能够在闪速存储设备中跟踪在L页写入的主机数据。在逻辑到物理地址转换映射中的该8字节条目可以由L页号或LPN进行索引。换句话说,根据一个实施例,L页号用作对逻辑到物理地址转换映射302的索引。需要注意的是,在4KB扇区大小的情况下,LBA与LPN相同。因此,LPN可以组成易失性存储器中条目的地址。当控制器202从主机218接收读取命令时,可以从所提供的LBA推导出LPN,并且将所述LPN用于对逻辑到物理地址转换映射302进行索引以提取将在闪速存储器中读取的数据位置。当控制器202从主机接收到写入命令时,可以根据LBA构建LPN,并且可以修改逻辑到物理地址转换映射302。例如,可以在其中创建新的条目。取决于存储逻辑到物理地址转换映射302的易失性存储器的大小,LPN可以存储在单个条目中,或例如被分解为识别包含所讨论的L页的开始地址的E页(加ECC位)的第一条目和识别偏移和长度(加ECC位)的第二条目。因此,根据一个实施例,这两个条目可以一起对应于并且指向闪速存储器中的单个L页。在其它实施例中,逻辑到物理地址转换映射条目的具体格式可以不同于上述所示的示例。
由于逻辑到物理地址转换映射302可以存储在易失性存储器中,所以当易失性存储器开始或任何其它丢失电力时必须被重建。因此,这要求在非易失性存储器中存储一些机制和信息,来使得控制器202在开始之后或电源故障之后在控制器能够“知道”L页存储在非易失性存储器何处之前对逻辑到物理地址转换映射302进行重构。根据一个实施例,这种机制和信息可以具体实现在可以被称作系统日志或S日志的构造中。根据一个实施例,控制器202可以被配置为在多个非易失性存储器设备(例如,在一个或多个管芯、信道或平面中的一个或多个块206)中维持多个定义物理到逻辑地址对应的S日志。根据一个实施例,每一个S日志可以覆盖预定范围的物理页(例如,E页)。根据一个实施例,每一个S日志可以包括多个日志条目,每一个条目被配置为将一个或多个物理页(例如E页)与每一个L页的L页号相关联。根据一个实施例,每次控制器202重启或者无论何时必须重建逻辑到物理地址转换映射302时,控制器202读取S日志,并且根据从S日志条目读取的信息来重建逻辑到物理地址转换映射302。
图4示出了根据一个实施例的用于更新逻辑到物理地址转换映射以及用于创建S日志条目的方法的方面。如图所示,为了确保逻辑到物理地址转换映射302保持最新,当如框B41所示L页被写入或更新时,逻辑到物理地址转换映射302可以如B42处所示被更新。如B43处所示,S日志条目还可以被创建,在其内存储指向更新后的L页的位置的信息。以这种方式,当发生新写入时(例如,当主机发布写入到非易失性存储器时,当发生垃圾收集/耗损平衡时,等),逻辑到物理地址转换映射302和S日志都被更新。因此,到非易失性存储器设备以维持地址转换数据的电力安全副本的写操作可以被配置为由新创建的S日志条目(其大小可能仅几字节)被触发而不是重新保存逻辑到物理地址转换映射的全部或部分,从而降低写入放大率(WA)。更新S日志确保控制器202能够访问新更新的L页,以及确保当重启或其它影响存储逻辑到物理地址转换映射的非易失性存储器的信息擦除电力事件时可以对逻辑到物理地址转换映射302进行重构。此外,除了重建逻辑到物理地址转换映射302的效用之外,S日志还可用于运行有效的垃圾收集(GC)。事实上,S日志可以包含对所有L页号的最近更新,以及还可以包含陈旧条目、不指向有效L页的条目。
根据一个实施例,S日志可以构成写入到介质中的主闪存管理数据。根据一个实施例,S日志可以包括针对给定S块的映射信息,以及可以包括针对给定S块的物理到逻辑(P2L)信息。图5是示出了根据一个实施例的S日志的方面的框图。如图所示以及根据一个实施例,每一个S日志502覆盖非易失性存储器设备的预定物理区域(例如,闪存),例如,如506处显示的32E页,其利用5位来对其进行寻址。每一个S日志502可以由S日志号504来进行识别。用于存储主机数据的P2L信息的S日志号504可以包括由S日志覆盖的第一物理页的地址的一部分。例如,S日志502的S日志号例如可以包括由该S日志602覆盖的第一E页的27MSb。
图6示出了根据一个实施例的S日志502的一个条目602的示例性组织。S日志502的每一个条目602可以指向在E页物理定址的一个L页的开始地址。每一个条目602可以包括例如包含L页的开始E页的E页的多个LSb(例如,5个)。可以通过将这些5个LSb和头部中S日志号的27个MSb进行级联而获得完整的E页地址。随后,条目602可以包括L页号,其在识别出的E页中的偏移以及其大小。例如,S日志502的每一个条目602可以包括该S日志条目覆盖的第一E页的5个LSb,30位的L页号,9位的E页偏移以及10位的L页大小,加起来总共大约7字节的大小。在其它实施例中可以使用各种其它内部日志条目格式。
根据一个实施例,由于存储在L页的数据的压缩可变性或者主机配置,可变量的L页可以存储在物理区域中,例如等于32个E页的物理区域中,如图5中的506处所示。由于使用压缩和L页大小的随后的变化性,S日志502可以包括可变量的条目。例如,根据一个实施例,以最大压缩,L页的大小可以是24字节,而S日志502可以包括多于2,500个条目,引用与相同量的L页,每S日志条目602一个L页。
如上所述,S日志502可以被配置为包括针对给定S块的映射信息,并且可以包括针对给定S块的P2L信息。更准确地,根据一个实施例,S日志502可以包括针对在给定S块内的预定范围的E页的映射信息。图7是根据一个实施例的超级块(S块)的框图。如图所示,S块702可以包括每管芯一个闪存块(F块)804(也如图2中206所示)。因此,可以将S块702认为是F块704的集合,每管芯一个F块,其被组合到一起以形成闪存管理系统的单元。根据一个实施例,可以在超级块级别管理分配、擦除和GC。如图7所示,每一个F块704可以包括多个闪存页(F页),例如256或512个F页。根据一个实施例,F页可以是给定的非易失性存储器设备的程序的最小单元的大小。图9示出了根据一个实施例的超级页(S页)。如图所示,S页802可以包括S块的每块一个F页,意味着S页802跨越整个S块702。
图9A示出了根据一个实施例的逻辑到物理地址转换映射、S日志以及S块之间的关系。附图标记902表示逻辑到物理地址转换映射。根据一个实施例,逻辑到物理地址转换映射902可以通过L页号进行索引,因为在逻辑到物理地址转换映射中每L页的逻辑到物理地址转换映射902中可能存在一个条目。在闪速存储器中L页的开始的物理地址及其大小可以在映射条目中给出;即通过E页地址、E页内的偏移和L页的大小。如前所述,L页取决于其大小可以跨越一个或多个E页,并且可以跨越F页以及块。
如904处所示,易失性存储器(例如,DRAM)还可以存储S日志映射。S日志映射904中的条目存储与S日志物理位于非易失性存储器中何处相关的信息。例如,存储L页的开始的E页物理地址的27个MSb可以构成S日志号。易失性存储器中的S日志映射904还可以包括在非易失性存储器设备中S日志的地址,其在系统E页中引用。从易失性存储器中的S日志映射904的条目所引用的E-页中,可以提取对系统S块信息908做出的索引。系统S块信息908可以由系统S块(系统带中的S块)进行索引,并且可以包括关于S块的其它信息当中,系统S块中任何空闲或已用空间的大小。还从S日志映射904中,可以提取非易失性存储器设备中的S日志910的物理位置。
根据一个实施例,系统带不包括L页数据,并且可以包括所有的文件管理系统(FMS)元数据和信息。系统带可以被配置为仅针对可靠性和电源故障简单化的较低页。在正常操作期间,系统带除了在垃圾收集期间否则不需要被读取。根据一个实施例,针对全部WA优化,系统带可以与数据带相比被提供显著高的过供应。其它带可以包括:热带,其可以包括L页数据,并且被频繁更新;以及冷带,其是存储从垃圾收集过程保留的静态数据的存储器的物理区域,其可以不被频繁更新。根据一个实施例,系统带、热带和冷带可以由控制器固件在S块的基础上进行分配。
如上所述,非易失性存储器设备中的这些S日志中的每一个可以包括S日志条目的集合,并且例如覆盖32个E页的数据。非易失性存储器设备中的这些S日志910使得控制器202能够在启动时访问非易失性存储器中的S日志条目,使得控制器202能够在易失性存储器中不仅重建逻辑到物理地址转换映射902,而且能重建S日志映射904、用户S块信息906以及系统S块信息908。
非易失性存储器设备中的S日志还可以包括所有的陈旧L页信息,这可以在易失性存储器中的逻辑到物理地址转换映射902以及S日志映射904被重建之后的垃圾收集期间被忽略。因此,可以说S日志包括对逻辑到物理地址转换映射902所有当前有效更新以及一些陈旧更新的顺序历史。
图9B是根据一个实施例的S日志映射904的另一视图的框图。S日志映射904可以针对每一个S块引用多个S日志条目。根据一个实施例,S块号可以是S日志号的MSb。S日志映射904的大小可以与每S块的S日志条目数量乘以S块数量相关。因此,对S日志映射904进行索引可以通过引用S块号(S日志号的MSb)和该S块号的S日志条目来实施。控制器202还可以被配置为建立或重建S日志的映射,以及将所得到的S日志映射904存储在易失性存储器中。例如,当重启或电源故障的另一事件发生或在错误恢复之后的重启之后时,控制器202可以以预定的顺序次序来读取多个S日志,基于顺序地读取的多个S日志来建立存储在非易失性存储器设备中的S日志的映射,并且将所建立的S日志映射904存储在易失性存储器中。特别地,重建的S日志映射904可以被配置为包括每一个S日志的最近写入的版本的物理位置。事实上,根据一个实施例,在重建S日志映射904中,当发现较新的S日志时,可以覆写较旧的S日志的物理位置。换句话说,根据一个实施例中,可以通过处理器202基于被判定为有效的读取的S日志来重建S日志映射904。
原子写入命令
在一个实施例中,为了维护逻辑到物理地址转换映射的一致性以及为了提供用于从不成功(不完全)的原子写入命令恢复的机制,在逻辑到物理地址转换映射中的一个或多个原始条目应该优选地被维护直到原子写入命令被确定为已经被成功完成的这样的时间。这种机制使得能够确定不成功的原子写入命令,甚至在存在干涉电力故障事件并且必须保护对在非易失性存储器设备中存储的原始数据的访问时。根据一个实施例,为此可以使用原子序列号。
图10是根据一个实施例的原子序列号表数据结构1002的框图,其例如可以存储在电力安全存储器中,在该电力安全存储器中可以存储用于处理原子写入命令的原子序列号1011。根据一个实施例,电力安全存储器例如可以包括:具有电池备份的易失性存储器,当断电时被安全地存储到非易失性存储器设备并且在上电时被安全地恢复到易失性存储器的易失性存储器,或者例如MRAM。如图10所示,唯一的原子序列号1011中的每一个可以被存储在原子槽1015中。根据一个实施例,为了错误恢复目的,每一个原子槽1015可以与被应用到其原子序列号的CRC 1013的值相关联。例如,可以生成16位的CRC 1013以确保原子序列号在损坏的情况下能正确恢复。根据一个实施例,原子写入命令的每一个L页可以与原子槽1015中的一个相关联,其每一个可以被配置为存储对应于原子写入命令的原子序列号。一旦确定原子写入命令成功完成,就可以释放这种槽1015。所释放的槽随后可以被添加到空闲槽列表中,并且在后续原子写入命令期间再次被使用。
在一个实施例中,原子序列号可以关于单独的槽或槽的子组是唯一的。例如,所有原子序列号对于槽0而言都可以是唯一的,但是相对于用于槽1的原子序列号则不是唯一的。可以使用位或标记值来表示保证唯一性的不同组。
另外,在一个实施例中,可以通过这样的方式来使用槽:防止相同的槽用于连续的序列号。该方案防止了若干连续序列号可以用于同一槽的场景。在这种情况下,如果发生电力损耗并且向槽中写入序列号损坏,则当上电时不能确定在电力损耗之前正在使用的最大序列号是什么。如果不能确定最大序列号,则不能保证所分配的序列号的唯一性。
在图15A-D中示出了确保不在同一槽中使用连续的序列号的示例性方案。在图15A中,使用六个槽中的五个,并且将下一序列号10006分配给空闲槽号4,如图15B所示。在图15C中,槽号4被阻止分配给下一序列号10007,因为其刚被分配给之前的序列号10006。即使与序列号10006相关联的原子命令在其它命令之前完成并且槽号4变为第一空闲槽,情况也是这样。然而,序列号10007可以使用任意其它槽。所以在图15D中,当序列号10007变为可用时将其分配给槽号5。现在槽号5变为对序列号1008是禁止的,等等。该方案确保可以肯定确定已经使用的最大序列号。如果图15D反映了在加电时遇到的槽的条件,则将要使用的下一序列号可能是遇到的最大一个(在该情况下是10007),加上一些偏移(例如,2,从而10007+2=10009)。这确保所分配的下一序列号是唯一的,并且在电力循环之前未被使用。
根据一个实施例,可以使用原子序列号在关机或其它电力故障事件之后对逻辑到物理地址转换映射进行重构期间来过滤部分(例如,处理中的或中断的)原子写入。在一个实施例中,通过将原子写入命令的持续映射信息(例如,S日志条目)与在电力安全存储器中存在的原子序列号相关联直到完成命令,来使能过滤。在一个实施例中,当表示完成原子写入命令的完成的提交步骤时,改变相关联的原子号,并且当重构映射表时,在电力安全存储器中不存在匹配的序列号表示相关联的持续映射信息涉及完成的原子写入命令。
为了确保用于原子写入号的原子序列号没有受到电力故障事件的影响,根据一个实施例,可以将原子序列号存储在电力安全存储器中,其可以在对逻辑到物理地址转换映射进行重构期间被查阅。根据一个实施例,电力安全存储器可以包括MRAM,或者例如电池备份的RAM或者一些其它形式的非易失性RAM。被存储在其中的原子序列号可以依赖于原子写入命令是否已经成功完成的可靠指示符。为此,原子序列号可以被配置为唯一的。根据一个实施例,原子序列号可以被配置为在数据存储设备的设计寿命期间不重复。例如,唯一的序列号可以包括大序列的位,其每一个组合仅被使用一次。例如,大序列的位可以被初始化为所有为1或所有为0,并且当每次发生原子写入时是递增或递减的。例如,对于典型的2TB驱动器和4KB L页(根据一个实施例,L页的最大未压缩尺寸),48位的序列号足以提供5年期间每秒512K的唯一序列号。
根据一个实施例,可以修改本文所示出并且描述的物理到逻辑映射以适应原子写入命令。事实上如上所述,可以将数据存储在多个L页中,其每一个L页与逻辑地址相关联。在易失性存储器中维护的逻辑到物理地址转换映射继续使得能够确定每一个逻辑地址所引用的数据在一个或多个物理页中的物理地址。对于非原子命令,应当指出的是,由这种非原子写入命令指定的数据被存储在一个或多个L页中,并且在写入非原子数据的每一个L页被写入之后来更新逻辑到物理地址转换映射。
记住上述内容,根据一个实施例,可以针对原子写入命令来修改这种过程。事实上,当接收到原子写入命令时,由原子写入命令指定的数据可以被存储在一个或多个L页中,如非原子写入的情况。然而,对于原子写入,根据一个实施例,在原子写入数据的每一个L页之后不更新逻辑到物理地址转换映射。相反,可以推迟对逻辑到物理地址转换映射的更新,直到存储由原子写入命令指定的数据的所有L页都以电力安全的方式被写入。
在更新逻辑到物理地址转换映射之前,可以将与原子写入命令相关的映射信息写入到易失性存储器。根据一个实施例,这种映射信息可以包括存储由原子写入命令指定的数据的每一个L页在非易失性存储器设备中的物理地址的指示。具体地,根据一个实施例,用于存储由原子写入命令指定的数据的L页的映射信息可以包括逻辑到物理地址转换映射条目的等价物。根据一个实施例,这种条目可以与在逻辑到物理地址转换映射302中的其它条目分离地被存储在易失性存储器中,因为可以不更新逻辑到物理地址转换映射,直到由原子写入命令指定的所有数据都以电力安全的方式被写入。
图11示出了根据一个实施例的可以将存储由原子写入命令指定的数据的L页的物理位置的指示存储在易失性存储器中的方式。图11示出了根据一个实施例的逻辑到物理地址转换映射中的条目1106,以及存储这样的L页的E页针对非原子写入被存储在的非易失性存储器设备中的位置1110。图11还示出了根据一个实施例的存储由原子写入命令指定的数据的L页的物理位置1112的指示1108。注意,虽然以上述方式将由原子写入命令指定的数据写入到非易失性存储器设备中,但是可以不同地执行逻辑到物理映射。
逻辑到物理地址转换映射中的条目1106(对应于用于非原子写入命令的映射信息)例如可以符合图3所指定的格式,并且可以包括8字节LPN。在另一方面,根据一个实施例,存储由原子写入命令指定的数据的L页的物理位置1112的指示1108(对应于原子写入命令的映射信息)不是逻辑到物理地址转换映射中的条目。虽然该指示1108可能具有与图3所示的逻辑到物理地址转换映射条目相同的格式(例如,E页+偏移+长度),但是,根据一个实施例,这种指示1108可能未被存储在逻辑到物理地址转换映射中。事实上,根据一个实施例,这种指示1108可以与逻辑到物理地址转换映射分离地存储。
如图11所示,逻辑到物理地址转换映射可以被配置为存储跨数据存储设备的逻辑容量的至少一部分(例如,2TB或用于2TB驱动数据存储设备的其一部分)的映射条目。在图11中,这被称作正常范围1114。因此,正常范围1114可以被配置为包括逻辑到物理地址转换映射的映射条目,其将LBA映射到非易失性存储器设备的从第0个L页到最大L页的物理位置;也就是,多达数据存储设备的最大存储容量。根据一个实施例,原子范围1116可以开始于根据一个实施例的最大L页+1的正常范围之外。因此,将存储由原子写入命令指定的数据的L页的物理位置1112的指示1108写入到原子范围1116没有构成对逻辑到物理地址转换映射的更新。因此,可以理解的是,存储由原子写入命令指定的数据的L页的物理位置1112的指示1108可以写入到易失性存储器的任意其它部分,不管相同的易失性存储器是否存储逻辑到物理地址转换映射。因此,存储由原子写入命令指定的数据的L页的物理位置1112的指示1108例如可以被存储在易失性存储器1102的区域中而不是被存储在存储逻辑到物理地址转换映射的部分中,或者一起存储到另一易失性存储器中。存储由原子写入命令指定的数据的L页的物理位置1112的指示1108可以以与逻辑到物理地址转换映射中条目的相同方式指向存储这种L页的非易失性存储器设备1104中的物理位置1112。
根据一个实施例,在存储由原子写入命令指定的数据的所有L页被写入之后,可以用存储由原子写入命令指定的数据的L页的物理位置1112的指示来更新逻辑到物理地址转换映射。也就是,根据一个实施例,仅当存储由原子写入命令指定的数据的L页已经以电力安全的方式被写入时,可以用存储由原子写入命令指定的数据的L页的物理位置1112的指示1108来更新逻辑到物理地址转换映射。例如,在原子范围1116内的对应条目1108可以被复制到正常范围1114,这更新了逻辑到物理地址转换映射。注意,在非易失性存储器设备1104中对应于存储由原子写入命令指定的数据L页的物理位置1112没有改变,而只是指示1108(即,映射信息)的位置改变—不是在非易失性存储器设备中被指向的数据的物理位置。
根据一个实施例,在已经更新了逻辑到物理地址转换映射之后,可以将原子写入命令视为有效地完成。同时,成功完成原子写入命令可以向主机确认,因为由此指定的所有数据以电力安全的方式被存储,并且已经成功更新了逻辑到物理地址转换映射,由此即使在电力循环事件中也能维持逻辑到物理地址转换映射的一致性。
如上所述,根据一个实施例,仅当存储由原子写入命令指定的数据的所有L页已经以电力安全的方式被写入时,可以用存储由原子写入命令指定的数据的L页的物理位置1112的指示1108来更新逻辑到物理地址转换映射。根据一个实施例,为了确定是否已经以电力安全的方式存储了存储由原子写入命令指定的数据的所有L页,一个实施例包括修改用于原子写入命令的S日志条目。注意的是,S日志限定物理到逻辑地址对应性,每一个S日志包括被配置为将一个或多个物理页与每一个L页相关联的多个条目。根据一个实施例,用于存储由原子写入命令指定的数据的L页的S日志条目被配置为形成机制的一部分,所述机制使得能够在重构逻辑到物理地址转换映射时确定原子写入命令已经完成还是未被完成。这种对逻辑到物理地址转换映射的重构已经是必要的,例如,在发生电力故障事件时,所述事件使得重构逻辑到物理地址转换映射成为必要。事实上,如果在控制器202正在处理原子写入命令时发生电力故障事件,则存储由原子写入命令指定的数据的所有L页可以或者可以不以电力安全方式存储。此外,在电力循环事件中,存储由原子写入命令指定的数据的L页的物理位置1112的指示1108不再可用;因为这种指示被存储在易失性存储器中。根据一个实施例,针对原子写入命令修改的对应的S日志条目可以提供持续机制的部分,所述持续机制用于确定在电力故障事件之前是否已经成功完成原子写入。
根据一个实施例,通过引用用于存储由原子写入命令指定的数据的L页的一个或多个S日志条目以及被存储在电力安全存储器中用于所述原子写入命令的唯一序列号,控制器202可以确定是否已经成功完成原子写入命令。根据一个实施例,如果确定原子写命令没有成功完成,则在重构逻辑到物理地址转换映射期间不使用对应的一个或多个S日志条目,由此维持其一致性,并且确保遵守原子写入的全有或全无方面。然而,如果引用用于存储由原子写入命令指定的数据的L页的一个或多个S日志条目以及被存储在电力安全存储器中用于所述原子写入命令的原子序列号表明事实上成功完成了原子写入命令,则可以安全地使用对应的一个或多个S日志条目来重构逻辑到物理地址转换映射。
根据一个实施例,除了存储由原子写入命令指定的数据的一个L页(如图12所示的L页1206)在非易失性存储器设备中的位置的指示外,用于原子写入命令的S日志1202的每一个条目1210还可以包括如图12中1208所示的唯一的序列号。如图12中1208处所示,除了原子序列号外,根据一个实施例,用于原子写入命令的S日志1202的每一个条目1210还可以包括槽号。根据一个实施例,该槽号可以对应于电力安全存储器(例如,MRAM、电池备份的RAM或NVRAM)中定义的多个槽中的一个。这种电力安全存储器在图2中的211处示出。根据一个实施例,存储由原子写入命令指定的数据的一个L页(L页1206)在非易失性存储器设备中的位置的指示可以包括专门识别在原子写入命令期间制作的条目的原子头部。例如,除了非原子写入条目的正常头部(例如,包括与S日志号1204的27个MSb级联的L页的开始E页的E页的5个LSb)外,这种头部还可以包括原子槽号和用于所述槽的原子序列号。其它组织也是可能的。
根据一个实施例,对于每一个原子写入命令,可以生成非重复的原子序列号中的一个,并且将其保存于电力安全临时存储设备中多个槽中的一个内。根据一个实施例,对于每一个原子写入命令,在电力安全临时存储设备中定义的每一个槽可以存储相同的唯一序列号。所述相同的唯一序列号也被保存于一个或多个S日志的每一个条目或多个条目1210中,所述S日志包括用于存储由原子写入命令指定的数据的一个或多个L页的条目。根据一个实施例,仅当原子写入命令已经完成改变被存储在在电力安全临时存储设备中定义的槽中的唯一序列号时,表示提交原子写入命令。根据一个实施例,在向主机218确认完成原子写入命令之前,执行改变与原子写入命令相关联的唯一序列号,其表示完成原子写入命令。
在此时,这个改变的原子序列号对应于下一次发生的原子写入命令并且可以由其使用。改变与原子写入命令相关联的唯一序列号可以包括例如递增或递减当前序列号。因此,在电力安全临时存储设备中改变原子序列号可以用作保持用于确定给定的原子写入命令是否成功完成的机制的一部分。事实上,根据一个实施例,控制器202可以通过比较被存储在用于所述原子写入命令的一个或多个S日志条目中的唯一序列号与被存储在电力安全临时存储设备中的唯一序列号,来确定在重构转换映射期间原子写入命令是否已经完成(以及因此是否利用由原子写入指定的L页的S日志条目来更新逻辑到物理转换映射)。
因为唯一序列号仅在成功完成原子写入命令时改变,所以在对应于由原子写入命令指定的L页的S日志条目以及在电力安全临时存储设备中发现相同的唯一序列号表示对应的原子写入命令没有成功完成。也就是,在被存储在用于所述原子写入命令的一个或多个S日志条目中的唯一序列号与被存储在电力安全临时存储设备中的唯一序列号之间的匹配表示未完成原子写入命令。这种匹配还意味着没有向主机确认原子写入命令,以及S日志中的包括用于由原子写入命令指定的L页的条目的L页信息不应该用于重构逻辑到物理地址转换映射。不同于本文所修改的,可以根据2013年3月5日提交的共同分配和未决的美国专利申请序列号13/786,352(代理人案号T5944)所示出和描述的方法,来执行对逻辑到物理地址转换映射的重构,所述专利申请的全部内容通过引用合并于此。
在一个实施例中,当访问电力安全临时存储设备中的原子序列号时,可以执行检查以确保与原子序列号相关联的CRC的有效性。根据一个实施例,当被存储在用于原子写入命令的一个或多个S日志条目中的唯一序列号与被存储在电力安全临时存储设备中的原子序列号不相同时,所述一个或多个S日志条目用于更新逻辑到物理地址转换映射。然而,根据一个实施例,当在重构期间在被存储在用于原子写入命令的一个或多个S日志条目中的唯一序列号与被存储在电力安全临时存储设备中的唯一序列号之间存在匹配时,不使用所述一个或多个S日志条目来更新逻辑到物理地址转换映射,并且原子写入命令将像从未被执行过一样出现。
处理部分原子写入命令
在一个实施例中,存在额外的过程来对部分原子写入场景的剩余部分进行寻址。在一个实施例中,控制器追踪关于由部分完成的原子写入命令所影响的L页范围的额外信息。作为示例,当在重构期间在表示部分原子写入命令的序列号中发生匹配时,查询追踪表以确定由部分原子写入命令写入的数据的范围。
图16A-C示出了在一个实施例中使用的示例性追踪表,其被示出为对应于三个时期的三个版本。三幅图示出了追踪表如何追踪部分完成的原子写入命令。在所示的示例中,部分完成的原子命令意图写入到LPN(L页号)100到LPN 103,但是只写入到LPN 100和LPN102(由阴影框表示)。在LPN 101和LPN 103能够被写入之前命令被中断。图16A示出了在试图执行正在讨论的命令之前以开始处的默认值进行初始化的追踪表。在一个实施例中,最小和最大地址字段填充有默认地址值,例如分别地,最大值为FFFFF以及最小值为0。
在图16B中,追踪表已经记录了具有序列号N的原子命令已经写入到LPN 100的事实。如下将通过具有匹配的原子写入序列号的原子写入命令写入的LPN与最小和最大字段地址值进行比较。如果写入的LPN小于当前的最小值,则写入的LPN变为当前最小值。在图16A和图16B的示例中,由于LPN 100小于FFFFF,所以LPN 100代替FFFFF作为最小值。相反地,在最大字段,如果写入的LPN大于当前最大值,则写入的LPN变为当前最大值。因此在示例中,LPN 100也在最大字段中代替0。图16C示出了在写入LPN 102之后表的状态。最小字段保持未改变,因为LPN 102大于LPN 100,但是最大字段被更新为LPN 102。由于命令的每一个LPN都可以被乱序写入,所以追踪表能够追踪原子写入命令影响的L页范围,并且能够在命令没有完成时进行恢复。在执行过程中,最小和最大字段被填充并且与图中所示的各种原子序列号相关。
在一个实施例中,追踪使得能够在重构期间进行清理过程。在一个实施例中,作为重构的最后步骤之一,对于检测到的每一个部分完成的原子命令,发布复制命令以复制在追踪表中表示的从最小地址跨到最大地址的原始数据,从而原始数据被重新写入,由此生成新的S日志条目。这具有为将来电力循环消除部分原子写入的效果。继续在图16A-C中的本示例,当检测到具有序列号N的命令没有完成时,清理过程将重新写入LPN 100到102,从而LPN 100和102处的L页的原始版本在非易失性存储器中被重新写入,并且新的S日志条目被生成以负责新的写入。将来的重构将正确地说明原子写入未能完成的事实的原因,因为最新的S日志条目将表示在受影响的地址范围内的数据在失败的原子写入之前已经被复原为原始状态。
根据一个实施例,数据存储设备可以报告已经准备好在完成对逻辑到物理地址转换映射的重构之后立即处理主机命令(以及可选地其它内务处理活动,例如填充S日志映射904和易失性存储器中的其它表)。在这种实施例中,数据存储设备被配置为在处理主机(即,数据访问)命令时和/或之后执行空闲空间计数操作(例如包括重建一个或多个空闲空间表)。这种输入的主机命令可以改变S块的空闲空间计数。根据一个实施例,可以说明在每一个S块中存在的有效数据量的这种改变的原因。关于原子写入命令,根据一个实施例,如上所述,可以延迟空闲空间计数,直到存储由原子写入命令指定的数据的所有L页都被存储在非易失性存储器设备中并且确定原子写入命令已经完成之后。
垃圾收集
根据一个实施例,原子序列号影响在用户带(可以存储用户数据的地方)和系统带(其包括文件管理系统元数据和信息)上执行垃圾收集的方式。当在用户带的垃圾收集期间解析S日志,并且遇到原子写入条目(例如,由其头部识别)时,可以相对被存储在电力安全临时存储设备(例如,MRAM、电池备份的RAM或其它形式的非易失性RAM)中的原子序列号来检查在所指定的槽内的原子序列号。
例如,可以在非易失性缓冲器211中存储原子序列号。如果两者不匹配,则可以复制成功完成的原子写入命令和存储由原子写入命令指定的数据的L页,并且将其移动到另外一个或多个S块。当针对所复制和移动的数据生成新的S日志条目时,可以从L页的头部剥离其原子写入属性。然而,如果在指定槽中的原子序列号匹配(不太可能事件,因为将假设S块未被挑选用于垃圾收集)被存储在电力安全临时存储设备中的原子序列号,表示处理中的原子写入命令,以及然后对应的L页可以被复制,并且保持原子性,并且可以执行对映射信息(例如,图11中1108所示)的更新,所述映射信息包括存储有由原子写入命令指定的数据的L页的物理位置的指示。
当在系统带的垃圾收集期间解析S日志,并且遇到原子写入条目(例如,由其头部识别)时,可以相对被存储在电力安全临时存储设备(例如,MRAM)中的原子序列号来检查在所指定的槽内的原子序列号。如果两者不匹配,则成功完成的原子写入命令和存储由原子写入命令指定的数据的L页可以被复制,并且将其移动到另外一个或多个S块。在这种情况下,可以从L页的头部剥离其原子写入属性。然而,如果在指定槽中的原子序列号与被存储在电力安全临时存储设备中的原子序列号相匹配,则表示处理中的原子写入命令,以及然后对应的L页可以被复制并且移动到另外一个或多个S块,保持头部表示原子写入,并且包括存储由原子写入命令指定的数据的L页的物理位置的指示的映射信息(例如,图11的1108)可以被适当地更新。
概要-处理原子写入命令
图13是用于在数据存储设备中执行原子写入命令的方法的流程图,所述数据存储设备包括易失性存储器和被配置为存储多个物理页的多个非易失性存储器设备。如图所示,框B131需要接收原子写入命令,此时由原子写入命令指定的数据可以被存储在一个或多个L页中,如B132所示。在B133处,可以确定由原子写入命令指定的所有L页的数据是否都被存储在非易失性存储设备(例如,闪存)中。可以再次执行B132(B133的“否”分支),直到原子写入命令的所有L页实际上已经被存储(B133的“是”分支)。该操作用于延迟对逻辑到物理地址转换映射的更新,直到原子写入命令的所有这种L页被存储。当由原子写入命令指定的所有L页的数据已经被存储时,可以用存储由原子写入命令指定的数据的一个或多个L页来更新逻辑到物理地址转换映射,如B134处所示。
根据一个实施例,框B132A1和B132A2可以在框B132和B133之间执行,也就是,在更新逻辑到物理地址转换映射之前。如B132A1处所示,包括存储由原子写入命令指定的数据的每一个L页的物理位置的的指示映射信息(例如图11的1108)可以被存储在易失性存储器内。另外,对于存储由原子写入命令指定的数据的每一个L页,可以生成S日志条目,如B132A2处所示。如图13所示,所生成的S日志条目可以被配置为使得能够确定当对逻辑到物理地址转换映射进行重构时原子写入命令已经完成还是未完成。如图12所示,这种S日志条目可以包括L页和原子序列号以及存储这种序列号的槽号的指示。在一个实施例中,由原子写入命令写入的L页的头部包括相同的原子序列号和槽号信息。这允许即使没有写入对应的S日志条目时也进行重构。在一个实施例中将重构过程配置为处理没有发现日志条目的L页,并且使用这些L页中的头部信息来重建映射表。
如图14所示,可以通过改变电力安全临时存储设备(例如,图2中的211)中的原子序列号来提交原子写入,从而改变的原子序列号与在用于所述原子写入命令的生成的一个或多个S日志条目中的原子序列号不匹配,如B141所示。之后,可以将原子写入命令视为已经完成,并且将原子写入完成确认发送给主机,如B142所示。
结论
虽然已经描述了本公开的一些实施例,但是这些实施例仅通过示例方式呈现,而并且不是要限制本公开的范围。事实上,本文所描述的新颖的方法、设备和系统可以以多种其它形式具体实现。此外,在不偏离本公开的精神的情况下,可以做出本文所描述方法和系统形式的各种省略、替换和改变。随附权利要求及其等价物是要覆盖这种形式或修改,只要其落入本公开的范围和精神内。例如,本领域中的技术人员将理解在各种实施例中,实际的物理和逻辑结构可以不同于图中所示的那些。取决于实施例,在上面示例中所描述的某些步骤可以被移除,也可以添加其它步骤。另外,以上公开的具体实施例的特征和属性可以以不同方式被组合以形成额外的实施例,其所有都落入本公开的范围内。虽然本公开提供了某些优选实施例和应用,但对于本领域中的普通技术人员而言显然的是包括不提供本文所阐述的所有特征和优点的实施例的其它实施例也落入本公开的范围内。因此,本公开的范围是要仅通过参考随附权利要求来进行限定。

Claims (6)

1.一种在数据存储设备中执行原子写入命令的方法,所述数据存储设备包括易失性存储器和被配置为存储多个物理页的多个非易失性存储器设备,所述方法包括:
在多个逻辑页中存储数据,所述多个逻辑页中的每一个逻辑页与逻辑地址相关联;
在所述易失性存储器中维护逻辑到物理地址转换映射,所述转换映射被配置为使得能够确定由每一个逻辑地址引用的数据在一个或多个所述物理页中的物理位置;
接收所述原子写入命令;
在至少一个逻辑页中存储由所述原子写入命令指定的数据;
存储追踪在其中由所述原子写入命令指定的至少一些逻辑页的写入已经被完成的逻辑页的范围的信息,其中所写入的逻辑页能够被乱序写入;
如果所述原子写入命令没有完成,在重构时:
利用所存储的追踪信息来生成对在所述原子写入命令之前存在的所述范围内的逻辑页的当前版本进行复制的复制命令;以及
推迟对与存储由所述原子写入命令指定的数据的所述至少一个逻辑页相关联的所述转换映射中的至少一个条目的更新,直到存储由所述原子写入命令指定的数据的所有逻辑页都已经以电力安全方式被写入。
2.如权利要求1所述的方法,包括:
将所述原子写入命令的逻辑页与唯一序列号相关联。
3.如权利要求2所述的方法,其中存储追踪逻辑页的范围的信息包括:
更新通过其唯一序列号来存储原子写入命令的表格,其中所述表格与每一个原子写入命令的最小值和最大值相关联;
在所述表格中找到由所述原子写入命令写入的逻辑页的所述唯一序列号;
将与所述逻辑页相关联的号数和与所述唯一序列号相关联的所述最小值和最大值相比较;
如果所述号数小于所述最小值,则用与所述逻辑页相关联的所述号数更新所述最小值;以及
如果所述号数大于所述最大值,则用与所述逻辑页相关联的所述号数更新所述最大值。
4.一种数据存储设备控制器,包括:
处理器,所述处理器被配置为通过至少以下步骤在数据存储设备中执行原子写入命令,所述数据存储设备包括易失性存储器和被配置为存储多个物理页的多个非易失性存储器设备:
在多个逻辑页中存储数据,所述多个逻辑页中的每一个逻辑页与逻辑地址相关联;
在所述易失性存储器中维护逻辑到物理地址转换映射,所述转换映射被配置为使得能够确定由每一个逻辑地址引用的数据在一个或多个所述物理页中的物理位置;
接收所述原子写入命令;
在至少一个逻辑页中存储由所述原子写入命令指定的数据;以及
存储追踪在其中由所述原子写入命令指定的至少一些逻辑页的写入已经被完成的逻辑页的范围的信息,其中所写入的逻辑页能够被乱序写入;
如果所述原子写入命令没有完成,在重构时:
利用所存储的追踪信息来生成对在所述原子写入命令之前存在的所述范围内的逻辑页的当前版本进行复制的复制命令;以及
推迟对与存储由所述原子写入命令指定的数据的所述至少一个逻辑页相关联的所述转换映射中的至少一个条目的更新,直到存储由所述原子写入命令指定的数据的所有逻辑页都已经以电力安全方式被写入。
5.如权利要求4所述的数据存储设备控制器,其中所述处理器被配置为:
将所述原子写入命令的逻辑页与唯一序列号相关联。
6.如权利要求5所述的数据存储设备控制器,其中所述存储追踪逻辑页的范围的信息包括:
更新通过其唯一序列号来存储原子写入命令的表格,其中所述表格与每一个原子写入命令的最小值和最大值相关联;
在所述表格中找到由所述原子写入命令写入的逻辑页的所述唯一序列号;
将与所述逻辑页相关联的号数和与所述唯一序列号相关联的所述最小值和最大值相比较;
如果所述号数小于所述最小值,则用与所述逻辑页相关联的所述号数更新所述最小值;以及
如果所述号数大于所述最大值,则用与所述逻辑页相关联的所述号数更新所述最大值。
CN201811145543.7A 2013-03-15 2014-03-12 固态驱动器中的原子写入命令支持 Active CN109344088B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361793513P 2013-03-15 2013-03-15
US61/793,513 2013-03-15
US13/895,016 2013-05-15
US13/895,016 US9218279B2 (en) 2013-03-15 2013-05-15 Atomic write command support in a solid state drive
CN201480021440.3A CN105122220B (zh) 2013-03-15 2014-03-12 固态驱动器中的原子写入命令支持

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201480021440.3A Division CN105122220B (zh) 2013-03-15 2014-03-12 固态驱动器中的原子写入命令支持

Publications (2)

Publication Number Publication Date
CN109344088A CN109344088A (zh) 2019-02-15
CN109344088B true CN109344088B (zh) 2020-04-07

Family

ID=51533826

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201811145543.7A Active CN109344088B (zh) 2013-03-15 2014-03-12 固态驱动器中的原子写入命令支持
CN201480021440.3A Active CN105122220B (zh) 2013-03-15 2014-03-12 固态驱动器中的原子写入命令支持
CN201811145782.2A Active CN109240942B (zh) 2013-03-15 2014-03-12 固态驱动器中的原子写入命令支持

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201480021440.3A Active CN105122220B (zh) 2013-03-15 2014-03-12 固态驱动器中的原子写入命令支持
CN201811145782.2A Active CN109240942B (zh) 2013-03-15 2014-03-12 固态驱动器中的原子写入命令支持

Country Status (7)

Country Link
US (3) US9218279B2 (zh)
EP (1) EP2972890A4 (zh)
KR (1) KR101920531B1 (zh)
CN (3) CN109344088B (zh)
AU (1) AU2014235629B2 (zh)
HK (1) HK1218012A1 (zh)
WO (1) WO2014150814A1 (zh)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7855916B2 (en) 2007-10-24 2010-12-21 Rao G R Mohan Nonvolatile memory systems with embedded fast read and write memories
US9218279B2 (en) 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US9170938B1 (en) 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device
US9047189B1 (en) * 2013-05-28 2015-06-02 Amazon Technologies, Inc. Self-describing data blocks of a minimum atomic write size for a data store
US10163510B1 (en) * 2013-08-09 2018-12-25 Ellis Robinson Giles System and method for atomic persistence in storage class memory
US9898410B2 (en) * 2013-09-10 2018-02-20 Intel Corporation Hybrid main memory using a fine-grain level of remapping
US9772781B2 (en) * 2013-11-27 2017-09-26 Ngd Systems, Inc. System and method for supporting atomic writes in a flash translation layer
US20150331624A1 (en) * 2014-05-19 2015-11-19 Kabushiki Kaisha Toshiba Host-controlled flash translation layer snapshot
GB2527529B (en) * 2014-06-24 2021-07-14 Advanced Risc Mach Ltd A device controller and method for performing a plurality of write transactions atomically within a non-volatile data storage device
US10430092B1 (en) * 2014-07-28 2019-10-01 Rambus Inc. Memory controller systems with nonvolatile memory for storing operating parameters
US9753649B2 (en) * 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
US20160291887A1 (en) * 2015-03-30 2016-10-06 Kabushiki Kaisha Toshiba Solid-state drive with non-volatile random access memory
US10140149B1 (en) * 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
JP6398102B2 (ja) * 2015-05-29 2018-10-03 東芝メモリ株式会社 メモリシステム
KR102374668B1 (ko) 2015-08-31 2022-03-17 삼성전자주식회사 전력 공급 중단의 경향에 따라 불휘발성 메모리를 다르게 관리하는 스토리지 장치
KR102501751B1 (ko) * 2015-09-22 2023-02-20 삼성전자주식회사 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
KR20170056767A (ko) * 2015-11-13 2017-05-24 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20170056765A (ko) * 2015-11-13 2017-05-24 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20170058482A (ko) * 2015-11-18 2017-05-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP2017107318A (ja) * 2015-12-08 2017-06-15 株式会社東芝 メモリシステム、情報処理装置および処理方法
US20170185354A1 (en) * 2015-12-23 2017-06-29 Intel Corporation Techniques for a Write Transaction at a Storage Device
US20170269834A1 (en) * 2016-03-18 2017-09-21 Silicon Motion, Inc. Data storage device and data management method thereof
US10126962B2 (en) * 2016-04-22 2018-11-13 Microsoft Technology Licensing, Llc Adapted block translation table (BTT)
US9940261B2 (en) * 2016-05-05 2018-04-10 Western Digital Technology, Inc. Zoning of logical to physical data address translation tables with parallelized log list replay
US10067881B2 (en) 2016-06-15 2018-09-04 Western Digital Technologies, Inc. Compression and caching for logical-to-physical storage address mapping tables
US9977626B2 (en) 2016-06-30 2018-05-22 Seagate Technology Llc Implementing scattered atomic I/O writes
KR20180019419A (ko) 2016-08-16 2018-02-26 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
JP6666813B2 (ja) * 2016-08-24 2020-03-18 キオクシア株式会社 記憶装置及びその制御方法
CN107797755B (zh) * 2016-09-05 2021-01-08 上海宝存信息科技有限公司 固态硬盘系统的原子写入方法以及使用该方法的装置
CN109690506B (zh) * 2016-09-16 2022-11-15 索尼公司 存储器控制器、存储器系统、信息系统和存储器控制方法
US10622089B2 (en) * 2016-10-18 2020-04-14 Toshiba Memory Corporation Storage system having a host that manages physical data locations of storage device
US10459644B2 (en) * 2016-10-28 2019-10-29 Western Digital Techologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory
TWI616807B (zh) * 2016-11-17 2018-03-01 英屬維京群島商大心電子(英屬維京群島)股份有限公司 資料寫入方法以及儲存控制器
US10325108B2 (en) * 2016-12-30 2019-06-18 Intel Corporation Method and apparatus for range based checkpoints in a storage device
CN108664212B (zh) * 2017-03-31 2024-01-19 北京忆恒创源科技股份有限公司 固态存储设备的分布式缓存
CN108664213B (zh) * 2017-03-31 2024-01-19 北京忆恒创源科技股份有限公司 基于分布式缓存的原子写命令处理方法与固态存储设备
CN108664210B (zh) * 2017-03-31 2024-04-05 北京忆恒创源科技股份有限公司 一种io命令控制的方法及控制系统、固态存储设备
US10141050B1 (en) * 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10635654B2 (en) * 2017-06-12 2020-04-28 Samsung Electronics Co., Ltd. Data journaling for large solid state storage devices with low DRAM/SRAM
CN109101185B (zh) * 2017-06-20 2023-08-11 北京忆恒创源科技股份有限公司 固态存储设备及其写命令和读命令处理方法
CN109213425B (zh) * 2017-06-30 2023-10-31 北京忆恒创源科技股份有限公司 利用分布式缓存在固态存储设备中处理原子命令
KR101966399B1 (ko) 2017-06-30 2019-04-08 단국대학교 산학협력단 원자적 연산을 이용한 파일 시스템 저널링 장치 및 방법
KR102270103B1 (ko) * 2017-07-11 2021-06-28 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US20190035445A1 (en) * 2017-07-31 2019-01-31 CNEX Labs, Inc. a Delaware Corporation Method and Apparatus for Providing Low Latency Solid State Memory Access
CN107632943B (zh) * 2017-08-30 2020-09-11 记忆科技(深圳)有限公司 一种固态硬盘数据保护的方法及固态硬盘
US10719446B2 (en) * 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
KR102457564B1 (ko) * 2017-09-20 2022-10-21 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10725904B2 (en) * 2017-12-13 2020-07-28 Micron Technology, Inc. Synchronizing NAND logical-to-physical table region tracking
CN108255741A (zh) * 2017-12-19 2018-07-06 深圳忆联信息系统有限公司 一种固态硬盘原子写入的方法及固态硬盘
TWI647566B (zh) * 2018-01-19 2019-01-11 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
KR102398540B1 (ko) * 2018-02-19 2022-05-17 에스케이하이닉스 주식회사 메모리 장치, 반도체 장치 및 반도체 시스템
US10795771B2 (en) * 2018-02-28 2020-10-06 Dell Products, L.P. Information handling system with reduced data loss in block mode
US11579770B2 (en) * 2018-03-15 2023-02-14 Western Digital Technologies, Inc. Volatility management for memory device
US10496334B2 (en) 2018-05-04 2019-12-03 Western Digital Technologies, Inc. Solid state drive using two-level indirection architecture
US10761978B2 (en) * 2018-10-25 2020-09-01 Micron Technology, Inc. Write atomicity management for memory subsystems
US10983918B2 (en) * 2018-12-31 2021-04-20 Micron Technology, Inc. Hybrid logical to physical caching scheme
US11061598B2 (en) * 2019-03-25 2021-07-13 Western Digital Technologies, Inc. Optimized handling of multiple copies in storage management
US11210093B2 (en) 2019-04-08 2021-12-28 Micron Technology, Inc. Large data read techniques
US11074189B2 (en) 2019-06-20 2021-07-27 International Business Machines Corporation FlatFlash system for byte granularity accessibility of memory in a unified memory-storage hierarchy
US10877900B1 (en) 2019-06-26 2020-12-29 Western Digital Technologies, Inc. Enabling faster and regulated device initialization times
US20210055878A1 (en) * 2019-08-20 2021-02-25 Micron Technology, Inc. Data compaction within the same plane of a memory component
KR20210023203A (ko) * 2019-08-22 2021-03-04 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP2021033849A (ja) 2019-08-28 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法
US11150841B2 (en) * 2020-02-10 2021-10-19 Western Digital Technologies, Inc. NAND dropped command detection and recovery
US11527300B2 (en) 2020-08-26 2022-12-13 Western Digital Technologies, Inc. Level dependent error correction code protection in multi-level non-volatile memory
US11436083B2 (en) 2020-09-04 2022-09-06 Western Digital Technologies, Inc. Data address management in non-volatile memory
US20220206713A1 (en) * 2020-12-30 2022-06-30 Samsung Electronics Co., Ltd. Storage device including memory controller and operating method of the memory controller
KR20220130526A (ko) * 2021-03-18 2022-09-27 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
US11467970B1 (en) * 2021-08-03 2022-10-11 Kioxia Corporation Metadata management in non-volatile memory devices using in-memory journal

Family Cites Families (110)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10177560A (ja) 1996-12-17 1998-06-30 Ricoh Co Ltd 記憶装置
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US6856556B1 (en) 2003-04-03 2005-02-15 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
US7389308B2 (en) 2003-05-30 2008-06-17 Microsoft Corporation Shadow paging
US7299314B2 (en) * 2003-12-31 2007-11-20 Sandisk Corporation Flash storage system with write/erase abort detection mechanism
US7502256B2 (en) 2004-11-30 2009-03-10 Siliconsystems, Inc. Systems and methods for reducing unauthorized data recovery from solid-state storage devices
US7480761B2 (en) 2005-01-10 2009-01-20 Microsoft Corporation System and methods for an overlay disk and cache using portable flash memory
US20060294300A1 (en) 2005-06-22 2006-12-28 Seagate Technology Llc Atomic cache transactions in a distributed storage system
US7516267B2 (en) * 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US8307148B2 (en) * 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7765373B1 (en) 2006-06-27 2010-07-27 Siliconsystems, Inc. System for controlling use of a solid-state storage subsystem
US8108692B1 (en) 2006-06-27 2012-01-31 Siliconsystems, Inc. Solid-state storage subsystem security solution
US7509441B1 (en) 2006-06-30 2009-03-24 Siliconsystems, Inc. Systems and methods for segmenting and protecting a storage subsystem
US7447807B1 (en) 2006-06-30 2008-11-04 Siliconsystems, Inc. Systems and methods for storing data in segments of a storage subsystem
US8161227B1 (en) 2006-10-30 2012-04-17 Siliconsystems, Inc. Storage subsystem capable of programming field-programmable devices of a target computer system
US8549236B2 (en) 2006-12-15 2013-10-01 Siliconsystems, Inc. Storage subsystem with multiple non-volatile memory arrays to protect against data losses
US7596643B2 (en) 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US7685337B2 (en) 2007-05-24 2010-03-23 Siliconsystems, Inc. Solid state storage subsystem for embedded applications
US7685338B2 (en) 2007-05-24 2010-03-23 Siliconsystems, Inc. Solid state storage subsystem for embedded applications
US8266391B2 (en) 2007-06-19 2012-09-11 SanDisk Technologies, Inc. Method for writing data of an atomic transaction to a memory device
US7685374B2 (en) 2007-07-26 2010-03-23 Siliconsystems, Inc. Multi-interface and multi-bus structured solid-state storage subsystem
US8095851B2 (en) 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US8041895B2 (en) * 2008-01-28 2011-10-18 Spansion Llc Translation table coherency mecahanism using cache way and set index write buffers
US8078918B2 (en) 2008-02-07 2011-12-13 Siliconsystems, Inc. Solid state storage subsystem that maintains and provides access to data reflective of a failure risk
US7962792B2 (en) 2008-02-11 2011-06-14 Siliconsystems, Inc. Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem
US7733712B1 (en) 2008-05-20 2010-06-08 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
US8583835B1 (en) 2008-08-06 2013-11-12 Siliconsystems, Inc. Command portal for executing non-standard storage subsystem commands
US8375151B1 (en) 2009-02-12 2013-02-12 Siliconsystems, Inc. Command portal for securely communicating and executing non-standard storage subsystem commands
US8219741B2 (en) 2008-10-24 2012-07-10 Microsoft Corporation Hardware and operating system support for persistent memory on a memory bus
US8266365B2 (en) 2008-12-17 2012-09-11 Sandisk Il Ltd. Ruggedized memory device
US8370603B2 (en) 2008-12-23 2013-02-05 Apple Inc. Architecture for address mapping of managed non-volatile memory
US9176859B2 (en) 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US8090899B1 (en) 2009-03-04 2012-01-03 Western Digital Technologies, Inc. Solid state drive power safe wear-leveling
US10079048B2 (en) 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
EP2476079A4 (en) * 2009-09-09 2013-07-03 Fusion Io Inc APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION
US8254172B1 (en) 2009-09-30 2012-08-28 Western Digital Technologies, Inc. Wear leveling non-volatile semiconductor memory based on erase times and program times
US8243525B1 (en) 2009-09-30 2012-08-14 Western Digital Technologies, Inc. Refreshing non-volatile semiconductor memory by reading without rewriting
US8990476B2 (en) * 2009-10-01 2015-03-24 Micron Technology, Inc. Power interrupt management
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
US8261012B2 (en) 2009-10-30 2012-09-04 Western Digital Technologies, Inc. Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal
US8135903B1 (en) 2009-10-30 2012-03-13 Western Digital Technologies, Inc. Non-volatile semiconductor memory compressing data to improve performance
US8103910B2 (en) 2009-11-13 2012-01-24 International Business Machines Corporation Local rollback for fault-tolerance in parallel computing systems
US8397107B1 (en) 2009-12-11 2013-03-12 Western Digital Technologies, Inc. Data storage device employing data path protection using both LBA and PBA
US8443167B1 (en) 2009-12-16 2013-05-14 Western Digital Technologies, Inc. Data storage device employing a run-length mapping table and a single address mapping table
TWI497293B (zh) 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
US8316176B1 (en) 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US8407449B1 (en) 2010-02-26 2013-03-26 Western Digital Technologies, Inc. Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8713066B1 (en) 2010-03-29 2014-04-29 Western Digital Technologies, Inc. Managing wear leveling and garbage collection operations in a solid-state memory using linked lists
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US8341339B1 (en) 2010-06-14 2012-12-25 Western Digital Technologies, Inc. Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk
US8612669B1 (en) 2010-06-28 2013-12-17 Western Digital Technologies, Inc. System and method for performing data retention in solid-state memory using copy commands and validity and usage data
US8447920B1 (en) 2010-06-29 2013-05-21 Western Digital Technologies, Inc. System and method for managing data access in non-volatile memory
US8521972B1 (en) 2010-06-30 2013-08-27 Western Digital Technologies, Inc. System and method for optimizing garbage collection in data storage
WO2012016089A2 (en) 2010-07-28 2012-02-02 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8639872B1 (en) 2010-08-13 2014-01-28 Western Digital Technologies, Inc. Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8638602B1 (en) 2010-09-10 2014-01-28 Western Digital Technologies, Inc. Background selection of voltage reference values for performing memory read operations
US8769190B1 (en) 2010-09-15 2014-07-01 Western Digital Technologies, Inc. System and method for reducing contentions in solid-state memory access
US8788779B1 (en) 2010-09-17 2014-07-22 Western Digital Technologies, Inc. Non-volatile storage subsystem with energy-based performance throttling
US8612804B1 (en) 2010-09-30 2013-12-17 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US8601313B1 (en) 2010-12-13 2013-12-03 Western Digital Technologies, Inc. System and method for a data reliability scheme in a solid state memory
US8601311B2 (en) 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
US8615681B2 (en) 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US8458435B1 (en) 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
US8392635B2 (en) 2010-12-22 2013-03-05 Western Digital Technologies, Inc. Selectively enabling a host transfer interrupt
US8868514B2 (en) * 2011-01-07 2014-10-21 Microsoft Corporation Transaction support for distributed data
US8683113B2 (en) 2011-02-04 2014-03-25 Western Digital Technologies, Inc. Concurrently searching multiple devices of a non-volatile semiconductor memory
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US8700951B1 (en) 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US8769232B2 (en) 2011-04-06 2014-07-01 Western Digital Technologies, Inc. Non-volatile semiconductor memory module enabling out of order host command chunk media access
US8862804B2 (en) 2011-04-29 2014-10-14 Western Digital Technologies, Inc. System and method for improved parity determination within a data redundancy scheme in a solid state memory
US8751728B1 (en) 2011-04-29 2014-06-10 Western Digital Technologies, Inc. Storage system bus transfer optimization
US9021178B2 (en) 2011-05-02 2015-04-28 Western Digital Technologies, Inc. High performance path for command processing
US8503237B1 (en) 2011-05-18 2013-08-06 Western Digital Technologies, Inc. System and method for data recovery in a solid state storage device
US8793429B1 (en) 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
US8719531B2 (en) 2011-06-14 2014-05-06 Western Digital Technologies, Inc. System and method for performing data retention that incorporates environmental conditions
US9075708B1 (en) 2011-06-30 2015-07-07 Western Digital Technologies, Inc. System and method for improving data integrity and power-on performance in storage devices
US8423722B1 (en) 2011-08-26 2013-04-16 Western Digital Technologies, Inc. System and method for high performance command processing in solid state drives
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US20130091331A1 (en) * 2011-10-11 2013-04-11 Iulian Moraru Methods, apparatus, and articles of manufacture to manage memory
US8977803B2 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US20140317337A1 (en) 2011-12-30 2014-10-23 Leena K. Puthiyedath Metadata management and support for phase change memory with switch (pcms)
US20150019792A1 (en) * 2012-01-23 2015-01-15 The Regents Of The University Of California System and method for implementing transactions using storage device support for atomic updates and flexible interface for managing data logging
US9213486B2 (en) 2012-02-22 2015-12-15 International Business Machines Corporation Writing new data of a first block size to a second block size using a write-write mode
US8724422B1 (en) 2012-02-29 2014-05-13 Western Digital Technologies, Inc. System and method for charging back-up charge storage element for data storage device using spindle phase switching elements
US9003224B2 (en) 2012-04-25 2015-04-07 Western Digital Technologies, Inc. Managing unreliable memory in data storage systems
US8788778B1 (en) 2012-06-04 2014-07-22 Western Digital Technologies, Inc. Garbage collection based on the inactivity level of stored data
US8966343B2 (en) 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US8788880B1 (en) 2012-08-22 2014-07-22 Western Digital Technologies, Inc. Efficient retry mechanism for solid-state memory failures
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9177638B2 (en) 2012-11-13 2015-11-03 Western Digital Technologies, Inc. Methods and devices for avoiding lower page corruption in data storage devices
US8954694B2 (en) 2012-11-15 2015-02-10 Western Digital Technologies, Inc. Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
US20140143476A1 (en) * 2012-11-16 2014-05-22 Rotem Sela Usage of cache and write transaction information in a storage device
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US20140223255A1 (en) 2012-12-18 2014-08-07 Western Digital Technologies, Inc. Decoder having early decoding termination detection
US9430376B2 (en) 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
US9009548B2 (en) 2013-01-09 2015-04-14 International Business Machines Corporation Memory testing of three dimensional (3D) stacked memory
US9218279B2 (en) 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
KR20140128819A (ko) 2013-04-29 2014-11-06 삼성전자주식회사 아토믹 라이트 방법
US9170938B1 (en) 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device

Also Published As

Publication number Publication date
US10254983B2 (en) 2019-04-09
WO2014150814A1 (en) 2014-09-25
KR101920531B1 (ko) 2018-11-20
HK1218012A1 (zh) 2017-01-27
US20160110128A1 (en) 2016-04-21
EP2972890A1 (en) 2016-01-20
AU2014235629A1 (en) 2015-11-05
KR20150132475A (ko) 2015-11-25
EP2972890A4 (en) 2016-11-30
AU2014235629B2 (en) 2019-08-15
US9594520B2 (en) 2017-03-14
CN109240942A (zh) 2019-01-18
US9218279B2 (en) 2015-12-22
US20140281145A1 (en) 2014-09-18
CN109344088A (zh) 2019-02-15
CN109240942B (zh) 2020-11-24
CN105122220A (zh) 2015-12-02
CN105122220B (zh) 2018-10-26
US20170344287A1 (en) 2017-11-30

Similar Documents

Publication Publication Date Title
CN109344088B (zh) 固态驱动器中的原子写入命令支持
US9513831B2 (en) Method and system for atomically writing scattered information in a solid state storage device
US10909030B2 (en) Enhanced trim command support for solid state drives
KR101916206B1 (ko) 고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들
US10055345B2 (en) Methods, devices and systems for solid state drive control
US9792067B2 (en) Trim command processing in a solid state drive
EP2920697B1 (en) Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
JP6210570B2 (ja) ソリッドステートドライブにおける物理論理マッピングのための方法、装置及びシステム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant