CN110780806B - 促进元数据和数据捆绑存储的原子性保证的方法和系统 - Google Patents
促进元数据和数据捆绑存储的原子性保证的方法和系统 Download PDFInfo
- Publication number
- CN110780806B CN110780806B CN201910697309.3A CN201910697309A CN110780806B CN 110780806 B CN110780806 B CN 110780806B CN 201910697309 A CN201910697309 A CN 201910697309A CN 110780806 B CN110780806 B CN 110780806B
- Authority
- CN
- China
- Prior art keywords
- data
- current
- page address
- stream
- physical page
- 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
Links
Images
Classifications
-
- 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/061—Improving I/O performance
-
- 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/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/10—Address translation
-
- 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/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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
- 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/0656—Data buffering arrangements
-
- 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
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
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)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一个实施例促进了用于存储数据流中元数据和数据的原子性保证。系统接收要写入所述存储设备的数据的第一流,其中,所述第一流包括与数据和相应元数据关联的多个I/O请求。响应于确定在数据缓冲器中存在与所述第一流的先前I/O请求关联的残留数据:系统将来自当前I/O请求的数据的第一部分附加到所述残留数据,以获得第一页面数据;所述系统将所述当前I/O请求的剩余部分写入至所述数据缓冲器,以获得当前残留数据;并且所述系统将所述第一页面数据写入至所述存储设备。因此,系统因此促进了用于第一数据流的每个I/O请求的数据和对应元数据的原子性保证。
Description
相关的申请
本申请要求于2018年7月30日提交的美国临时申请第62/712,133的优先权,临时申请代理人摘要码ALI-A15700USP,发明人为李舒和周平,名称为“促进元数据和数据捆绑存储的原子性保证的方法和系统”,该美国临时申请的公开通过引用完整地并入到本文中。
技术领域
本公开主要涉及数据存储领域。更具体地,本公开涉及促进元数据和数据捆绑存储的原子性保证的方法和系统。
背景技术
互联网和电子商务的普及持续产生了大量的数字内容。各种各样的存储系统和服务器不断被创建用于访问和存储这些数字内容。在云存储系统或集群存储系统中,多个应用可以共享底层系统资源(例如,存储设备的资源)。对于系统性能和满足任何服务质量(Qos)要求二者来讲,管理存储设备的资源是至关重要的。在过去传统的存储系统中,数据和对应的元数据(例如,来自输入的输入/输出(I/O)请求的数据)是分开写入的,导致两个单独的I/O写入操作来存储数据并且另外两个单独的I/O读取操作来随后访问数据。为了减少I/O操作的数量并提高整个存储系统的性能和效率,可以将数据及其对应的元数据“捆绑”在一起以提供原子性保证。然而,将数据和元数据捆绑在一起会导致(在一次事务中)要写入的数据的总大小或长度增加,并且增加后的长度通常与标准块大小不一致。这可能会对所依赖的并且要写入捆绑数据的特定类型的物理介质造成问题。
在前一代的与非(NAND)闪存(例如,二维平面NAND闪存或2D平面NAND)中,系统可以通过将数据写入页面区域并且通过将对应的元数据写入页面区域的界外区域来容纳插入到与相应数据相同的I/O请求中的元数据。然而,在当前一代的NAND闪存(如三维三层单元NAND或3D TLC NAND)中,界外区域并没有提供足够的空间来写入对应的元数据。
因此,在当前一代的存储设备中,问题仍然是如何捆绑数据及其对应的元数据以对将捆绑写入存储设备提供原子性保证。
发明内容
一个实施例促进了用于存储数据流中的数据和元数据原子性保证。在操作过程中,系统接收要写入所述存储设备的数据的第一流,其中,所述第一流包括与数据和相应元数据关联的多个I/O请求。响应于确定在数据缓冲器中存在与所述第一流的先前I/O请求关联的残留数据(residualdata):系统将来自当前I/O请求的数据的第一部分附加到所述残留数据,以获得第一页面数据;所述系统将所述当前I/O请求的剩余部分写入至所述数据缓冲器,以获得当前残留数据;并且所述系统在当前物理页面地址(PPA)处将所述第一页面数据写入至存储设备。因此,所述系统因而促进了用于第一数据流的每个I/O请求的数据和对应元数据的原子性保证。
在一些实施例中,所述第一部分始于与当前I/O请求中的当前写指针关联的第一逻辑页面地址(LPA)。所述系统将当前写指针设置于剩余部分的结尾。所述系统在数据结构中更新将第一逻辑页面地址映射到当前物理页面地址的条目。
在一些实施例中,响应于确定在所述数据缓冲器中不存在与第一流关联的残留数据,所述系统执行以下操作。系统向所述数据缓冲器写入来自当前的I/O请求的数据的第二部分,以获得第二页面数据,其中,所述第二部分始于与当前I/O请求中的当前写指针关联的第二逻辑页面地址(LPA)。所述系统将当前I/O请求的剩余部分写入至数据缓冲器,以获取当前残留数据。所述系统将当前写指针设置于所述剩余部分的结尾。所述系统在数据结构中更新将第二逻辑页面地址映射到当前物理页面地址的条目。
在一些实施例中,在将当前I/O请求的剩余部分写入数据缓冲器之后,系统将当前I/O请求成功的确认发送至接收数据的第一流的主机计算设备。
在一些实施例中,当前I/O请求中的剩余部分的始端对应于第三逻辑页面地址。所述系统在数据结构中更新将第三逻辑页面地址映射到与当前物理页面地址连续的下一物理页面地址的条目。
在一些实施例中,响应于确定当前残留数据相应于所述第一个流的尾部,所述系统执行以下操作。所述系统将零附加到所述当前残留数据以获得第三页面数据。系统在与当前物理页面地址的连续的下一个物理页面地址将所述第三页面数据写入到存储设备。所述系统在数据结构中更新将与所述当前残留数据关联的第四逻辑页面地址映射到下一个物理页面地址的条目。所述系统清除数据缓冲器中的所述当前残留数据。
在一些实施例中,确定所述残留数据对应于所述第一流的尾部包括:由存储设备的第一微处理器接收将第一页的数据写入至存储设备的命令;在基于与第一页面关联的逻辑页面地址的数据结构中,搜索要写入至所述第一页面的当前物理页面地址;在当前物理页面地址处通过将所述第一页面写入至存储设备执行所述命令;从数据结构中检索与输入I/O请求关联的下一个逻辑页面地址对应的第二物理页面地址;响应于确定第二物理页面地址为空,设置无效的物理页面地址作为第二物理页面地址;等待预定的时间段;在随后的时间从数据结构中检索第二物理页面地址;响应于确定第二物理页面地址已更新并且为空,确定残留数据不对应于所述第一流的尾部;响应于确定所述第二物理页面地址未更新,确定残留数据对应于第一流的尾部;以及响应于确定第二物理页面地址已更新并且不为空,确定第二物理页面地址已被修整且残留数据对应于第一流的尾部。
在一些实施例中,系统报告残留数据是否对应于第一流的尾部。
附图说明
图1示出了根据本申请的实施例的促进数据流中的数据和元数据的原子性保证的示例性环境。
图2示出了根据现有技术的如何将元数据存储在同一个物理页面的界外区域的示例性环境。
图3示出了根据本申请的实施例的促进数据流中的数据和元数据的原子性保证的示例性环境。
图4示出了根据本申请的实施例的包括瞬时缓存及尾部识别的促进数据流中的数据和元数据的原子性保证的示例性环境。
图5A提供了根据本申请的实施例的说明促进数据流中的数据和元数据的原子性保证的方法的流程图。
图5B提供了根据本申请的实施例的说明促进数据流中的数据和元数据的原子性保证的方法的流程图。
图6A提供了根据本申请的实施例的固态驱动器的示例性架构。
图6B提供了根据本申请的实施例的多个微处理器使用LPA到PPA的映射表进行关于尾部识别的通信的示例环境。
图7A提供了根据本申请的实施例的说明尾部识别确定和通信的方法的流程图。
图7B提供了根据本申请的实施例的说明尾部识别确定和通信的方法的流程图。
图8示出了根据本申请的实施例的促进数据流中的数据和元数据的原子性保证的示例性计算机系统。
图9示出了根据本申请的实施例的促进数据流中的数据和元数据的原子性保证的示例性装置。
在所述图中,相同的附图标记表示相同的附图元件。
具体实施方式
提供以下描述以使使任何本领域技术人员能够制造和使用所述实施例,并在上下文中提供特定应用及其需求。对本领域技术人员而言所公开的实施例的各种修改将是显而易见的,并且在不脱离本公开的精神和范围内,本文中限定的一般原则可以应用于其他实施例和应用。因此,本文中描述的实施例不限于所示的实施例,而是与符合本文中公开的原理和特征的最宽范围相一致。
综述
本文中描述的实施例提供了一种系统,该系统解决了对将一捆数据及其对应的元数据存储在存储设备中提供原子性保证的问题。
在过去传统的存储系统中,数据和对应的元数据(例如来自输入的输入/输出(1/O)请求的数据)是分开写入的,导致两个单独的I/O写入操作来存储数据并且另外两个单独的I/O读取操作来随后访问数据。为减少I/O操作的数量并提高整个存储系统的性能和效率,可以将数据及其对应的元数据“捆绑”在一起,以提供原子性保证。然而,将数据和元数据捆绑在一起会导致(在一次事务中)要写入的数据的总大小或长度增加,并且增加后的长度通常与标准块大小不一致。这可能会对所依赖的并且要写入捆绑数据的特定类型的物理介质造成问题。
在前一代的NAND闪存(例如,2D平面NAND闪存)中,系统可以通过将数据写入页面区域并通过将对应的元数据写入页面区域的界外区域来容纳插入到与相应数据相同的I/O请求中的元数据。然而,在当前一代的NAND闪存(如3D TLC NAND)中,如下关于图2所示,界外区域没有提供足够的空间来写入对应的元数据。因此,在当前一代的存储设备中,问题仍然是如何捆绑数据及其对应的元数据以对将捆绑写入存储设备提供原子性保证。
本文中描述的实施例通过提供如下的一种系统来解决该问题,所述系统从主机接收要写入存储设备的数据流,其中,该数据流包括各自与数据和对应的元数据关联的多个I/O请求。系统通过将数据写为第一逻辑扇区(例如,data_1)并通过将附加零的相应元数据写为第二逻辑扇区(例如,metadata_1+零)来执行第一I/O请求(data_1+metadata_1)。每个逻辑扇区对应于存储设备的依次排序的物理扇区(例如,物理页面)。当系统接收到下一个I/O请求(data_2+metadata2)时,系统读出最后一个逻辑扇区并通过移除附加的零来提取作为“残留数据”的有用的(即,非零)信息(在该情况下为metadata_1)),并且将残留数据与输入的捆绑数据的第一部分(例如,data_2的第一部分)连接以形成第三逻辑扇区,该第三逻辑扇区被写入存储设备。系统写入输入数据的剩余部分(例如,data_2的第二部分+metadata_2+0)以形成第四逻辑扇区,该第四逻辑扇区也被写入存储设备。下面结合图3来描述描绘了这些通信的示例性环境。
然而,这种方法可以导致高写入放大,如每个操作包括两个步骤:1)将零附加到残留数据或元数据以形成逻辑扇区,并且将所述逻辑扇区写入存储设备;2)从存储设备读出先前写入的扇区,丢弃零,附加来自下一个I/O请求的数据以形成新的逻辑扇区,并且将这个新形成的逻辑扇区写入存储设备。这个高写入放大可导致物理存储设备的高度磨损,并且还可减少每个I/O请求的延迟。这些问题会降低存储设备和整个存储系统的效率和性能。
本文中描述的实施例通过使用瞬时缓存和尾部识别方案来进一步改进上述方法。瞬时缓存涉及:将残留数据放在数据缓冲器或缓存中,而不是执行上面的第一操作;附加来自下一个I/O请求的数据,以在数据缓冲器中形成物理扇区;并且将物理扇区从数据缓冲器写入存储设备。尾部识别涉及识别流的尾部,这导致系统将零附加到残留数据(其被识别为当前I/O请求的尾部或尾部)以在数据缓冲器中形成物理扇区,并且将物理扇区从数据缓冲器写入存储设备。通过使用瞬时缓存和尾部识别,本文中描述的实施例可以消除一次写入操作(如在导致高写入放大的方法的第一步骤中)以及一次读取操作(如在同一方法的第二步骤中)。在下面结合附图4描述描绘了瞬时高速缓存和尾部识别的示例性环境。
因此,本文中描述的实施例提供了一种改进并提高存储系统的效率和性能的系统。通过利用瞬时缓存和尾部识别技术,该系统能够为写入存储设备的捆绑数据提供原子性保证。所述实施例还可减少写入放大和减少I/O操作的数量,这可以减轻存储设备的物理介质的损耗并因此提高物理介质的耐久性。这些优点使存储系统得到改进并且效率更高。
术语“原子性”是指每个事务都是不可分割并且不可消减的一系列操作的特性,使得要么事务中的每件事都发生,要么事务中什么都不发生。术语“原子性保证”是指确保以保证事务的原子性或不可分割性的方式执行此类事务。
术语“元数据”是指描述其他数据的数据。
术语“捆绑”或“捆绑数据”是指特定I/O请求中的数据及其对应的元数据。在本公开中,如下面关于图4描述的,以确保原子性保证的方式将一捆数据写入存储设备。
术语“存储设备”和“存储驱动器”是指具有可写入或存储数据的物理介质的设备或驱动器,例如具有与非(NAND)闪存存储器的固态驱动器(SSD)。术语“存储系统”是指具有一个或更多个存储设备或驱动器的设备或系统。
示例性环境及网络
图1示出了根据本申请的实施例的促进数据流中的数据和元数据的原子性保证的示例性环境。环境100可以包括服务器102,所述服务器102可以是存储设备或者具有多个存储驱动器的计算设备。每个存储驱动器,诸如固态驱动器(SSD)或硬盘驱动器(HDD),可以包括控制器和用于存储数据的多个物理介质。例如,SSD可以包含用于存储的NAND物理介质,HDD可以包含具有多个存储轨道的物理介质。服务器102可以通过网络与客户端计算设备(未显示)通信。服务器102也可以是可以包括与多个客户端服务器(未显示)通信的多个存储服务器的分布式存储系统的一部分。
服务器102可以包括:网络接口卡(NIC)104;掉电保护模块106;中央处理器(CPU)108;动态随机存取存储器双列直插存储器模块(DRAM DIMM)110;硬盘驱动器(HDD)112和116(分别具有控制器114和118);以及固态驱动器(SSD)120和124(分别具有控制器122和126)。
控制器可以包括到主机的接口和到非易失性存储器的接口。例如,在SSD 120中,SSD控制器122可以包括:主机接口132;多个微处理器134、136、138和140;数据缓冲器/SSD高速缓存142;奇偶校验模块144;纠错码(ECC)模块146;以及通道管理(或媒体接口)148。SSD控制器122可以与主机通信(例如,通过主机接口132和到达/来自主机130的通信)。SSD控制器122还可以与非易失性存储器通信(通过通道管理148)。非易失性存储器可以通过多个通道被访问。例如,NAND管芯152-154可以通过150通道被访问,NAND管芯162-164可以通过通道160被访问。
在操作期间,本文中描述的实施例中,SSD 120可以接收要写入SSD 120(例如,要存储在NAND介质的非易失性存储器,包括NAND管芯152-154和162-164)的第一数据流。微处理器134-140可以使用下面关于图3和图4描述的方法来将数据放在逻辑扇区中,所述方法涉及保持(数据流的多个I/O请求中的)当前I/O请求的数据和对应的元数据“捆绑”在一起。系统可以通过在原子事务中成功地将所有数据及其对应的元数据存储在一起来将每个捆绑保持在一起。系统可以通过在数据缓冲器/SSD高速缓存142中放置“残留数据”(即,来自当前捆绑中的没有形成完整物理扇区的任何剩剩余据)达一临时时间段(即,瞬时缓存)来完成这一点。系统可以从下一个捆绑附加数据以在数据缓冲器中形成一个物理扇区,并且将所述将物理扇区从数据缓冲器写入存储设备。系统还可以识别数据流的尾部或尾部,将零附加到残留数据以在数据缓冲器中形成物理扇区,并且将所述物理扇区从数据缓冲器写入存储设备。下面结合图4、图5A和图5B来描述描绘了瞬时高速缓存和尾部识别的示例性环境。
通过执行瞬时高速缓存和尾部识别,本文中描述的系统的实施例可以以高效和改进的方式提供原子性保证,使得每个事务都是一个不可分割的和不能消减的系列操作,其中要么事务中的每件事都发生,要么事务中什么都不发生。此外,要求保护的系统改善了写入放大,并且减少了在将数据流写入存储设备(例如,SSD 120的NAND管芯152-154和162-164)时提供原子性保证所必需的读取操作和写入操作的数量。
现有技术中的原子性保证
图2示出了根据现有技术的示出如何将元数据存储在同一个物理页面的界外区域的示例性环境200。环境200可以描述2D平面NAND闪存介质,并且可以包含物理块202和多个物理页面,诸如物理页面204和物理页面206。每个物理页面都可以包含要写入数据的区域以及要写入例如用于纠错编码(ECC)的奇偶校验位的界外(OOB)区域。例如,物理页面206可以包括包含页面数据232的第一区域以及作为界外区域234的第二区域。
数据可以以“捆”的形式写入物理页面,诸如捆206,包括数据208及其对应的元数据210。例如,数据208可以被写入到物理页面206的页面数据232部分,而元数据210可以写入至物理页面206的OOB 234部分。这提供了原子性保证,因为数据捆中的数据和元数据一起被写入,而不是将数据和元数据分开写入并且需要两个单独的I/O操作,如上所述。
在现有技术中的2D平面NAND闪存,噪声条件或“噪度”可以容忍,使得2D平面NAND闪存中的ECC并不会占用整个OOB区域,这在OOB区域在留下足够的空间来存储与存储在同一个物理页面区域的页面数据区域的数据对应的元数据。
然而,目前的技术包括3D TLC NAND,它通常具有比2D平面NAND闪存高的容量和密度。3D TLC NAND具有更高的噪声条件或噪度水平,并且可以使用低密度奇偶码(LDPC)进行校正以满足产品要求。在此情况下,3D TLC NAND的OOB区域可以提供必要的ECC,但是提供不足以存储任何附加数据(例如,与存储在页面数据区域中的数据对应的元数据)的空间。
因此,在当前一代的存储设备中,问题仍然是如何捆绑数据及其对应的元数据以对将捆绑写入存储设备提供原子性保证。
促进原子性保证的示例环境,以及相关的挑战
图3示出了根据本申请的实施例的促进数据流中的数据和元数据的原子性保证的示例性环境300。环境300可以包括逻辑单元1-5(302-310)。以对角线左斜线指示元数据。在操作期间,系统可以接收要写入存储设备的数据流,其可以包含多个I/O请求,每个I/O请求具有关联的数据和对应的元数据。例如,流311可以包括:数据d1 312和对应的元数据d1md314;数据d2 316和对应的元数据d2md 318;数据d3 320和对应的元数据d3md 322;以及数据d4 324和对应的元数据d4md 326。在t0 330时刻,系统可以通过以下操作在一个原子事务中写入d1 312+dlmd 314的捆(例如,当前I/O请求的数据和对应的元数据):将d1 312作为第一逻辑扇区(例如,如与SSD的NAND闪存存储器的物理页面大小一致的)写入NAND的第一物理扇区;将零附加到捆的剩余部分以形成第二逻辑扇区;将所述第二逻辑扇区(数据334,其包括d1md 314+零332)写入NAND。
随后,在时刻tl 340,系统可以通过以下操作写入同一数据流的下一捆(例如,下一个I/O请求的数据和对应的元数据):读出之前写入的扇区(数据334);丢弃零332;附加来自下一个I/O请求的数据以形成第三逻辑扇区;并且将所述第三逻辑扇区(数据342,其包括d1md 314+数据d21 316.1)写入NAND。作为同一事务的一部分,并且为提供原子性保证,系统也写入该下一个I/O请求的捆的剩余部分。也就是说,系统将零344附加到数据d22 316.2+d2md 318以形成第四逻辑扇区,并将所述第四逻辑扇区(数据346,其包括数据d22 316.2+d2md 318+零344)写入NAND。
系统继续以类似的方式写入数据流311的数据。即,在时刻t2 350,系统可以通过以下操作写入同一数据流的下一个捆(例如,下一个I/O请求的数据和对应的元数据):读出之前已写入的扇区(数据346);丢弃零344;附加来自下一个I/O请求的数据以形成第三逻辑扇区;并且将所述第三逻辑扇区(数据352,其包括d22 316.2+d2md 318+数据d31 320.1)写入NAND。作为同一事务的一部分,并且为提供原子性保证,系统还通过以下操作编写该下一个I/O请求的捆的剩余部分:将零354附加到数据d32 320.2+d3md 322以形成第四逻辑扇区,并且将第四逻辑扇区(数据356,其包括数据d32 320.2+d3md 322+零354)写入NAND。
随后,在时刻t3 360,系统可以通过以下操作写入同一数据流的下一包(例如,下一个I/O请求的数据和对应的元数据):读出之前写入的扇区(数据356);丢弃354零;附加来自下一个I/O请求的数据以形成第三逻辑扇区;并且将所述第三逻辑扇区(数据362,其包括d32 320.2+d3md 322+数据d41 324.1)写入NAND。作为同一事务的一部分,并且为提供原子性保证,系统还通过以下操作写入该下一个I/O请求捆的剩余部分:将零364附加到数据d42324.2+d4md 326以形成第四逻辑扇区,并且将所述第四逻辑扇区(数据366,其包括数据d42324.2+d4md 326+零364)写入NAND。
如上所述,环境300中所涉及的操作可以导致高的写入放大,因为每个操作包括两个步骤:1)将零附加到残留数据或元数据以形成逻辑扇区,并将所述逻辑扇区写入存储设备;以及2)读出之前写入的扇区,丢弃零,附加来自下一个I/O请求的数据以形成逻辑扇区,并将所述逻辑扇区写入存储设备。
例如,以下是对前面描述的操作的简短描述,示出了每个步骤中读取或写入的页数:
i.将d1+d1md+零写入NAND(2页面写)
ii.从NAND检索d1md+零(1页面读)
iii.将d1md+d2和d22+d2md+零写入NAND(2页面写)
iv.从NAND检索d22+d2md+零(1页面读)
v.将d22+d2md+d31和d32+d3md+零写入NAND(2页面写)
vi.从NAND检索d32+d3md+零(1页面读)
vii.将d32+d3md+d41和d42+d4md+零写入NAND(2页面写)
正如上面简短的描述所示,作为执行必要的步骤以将捆绑的数据保持在一起(例如,为数据流提供原子性保证)的结果,发生高写入放大。高写入放大会导致物理存储设备的高度磨损,还会增加每个I/O请求的延迟。这些问题会降低存储设备和整个存储系统的效率和性能这二者。
本文中描述的实施例中提供了一种降低写入放大的导致低度磨损的系统,并因此可提高存储设备的效率和性能这二者,如下面关于图4所描述的。
改进的用于促进原子性保证的示例环境
图4示出了根据本申请的实施例的包括瞬时缓存和尾部识别的促进数据流中的数据和元数据的原子性保证的示例性环境400。环境400可以包含逻辑单元1-5(401-405)。以对角线左斜线指示元数据。在操作期间,系统可以接收要写入存储设备的可包括多个I/O请求的数据流,每个I/O请求具有关联的数据和对应的元数据。例如,流411可以包括:数据d1412和对应的元数据d1md 414;数据d2 416和对应的元数据d2md 418;数据d3 420和对应的元数据d3md 422;以及数据d4 424和对应的元数据d4md 426。
在时刻t0 430,在处理数据流411的当前I/O请求时,系统可以通过以下操作在一个事务中写入d1 412+d1md 414(例如,当前I/O请求的数据和对应的元数据)的捆:将d1412作为第一逻辑扇区(例如,与SSD的NAND闪存存储器的物理页面大小一致)写入NAND的第一物理扇区;并将当前I/O请求的剩余部分写入临时高速缓存或数据缓冲器。例如,在当前I/O请求中,剩余部分包括d1md 414,d1md 414在时刻t1 432被写入数据缓冲器/SSD高速缓存401,并且被称为“残留数据”。因此,代替将零附加到剩余部分并将另一页面写入NAND,系统避免写入操作。此外,系统通过将残留数据保持在瞬时高速缓存中(例如,在数据缓冲器/SSD高速缓存401中保持达一临时时间段)来避免后续的读取操作。
随后,系统可以通过写入来自下一个I/O请求的数据的第一部分(数据d21 416.1)(即,通过在时刻t2 434将数据的第一部分附加到数据缓冲器401中的残留数据)来处理该下一个I/O请求并写入同一数据流的下一个捆(例如,下一个I/O请求的数据d2 416和对应的元数据d2md418),以获得数据的第一页面(数据444)。在时刻t3 440,系统可以将整个页面数据444写入NAND(在写入操作442中)。作为处理该下一个I/O请求的一部分,系统可以将该下一个I/O请求的剩余部分写入临时高速缓存或数据缓冲器,这导致当前残留数据。例如,在该下一个I/O请求中,剩余部分包括数据d22 416.2和d2md 418,d2md 418在时刻t4442被写入数据缓冲器401,并且被称为当前残留数据。因此,代替将零附加到剩余部分并将另一页面写入在随后的时间检索的NAND,系统避免了写入操作,并且还通过将残留数据保持在数据缓冲器中而不是仅将其写入例如针对下一个I/O请求在随后的时刻被检索的NAND来避免后续的读取操作。
随后,系统可以通过写入来自下一I/O请求的数据的第一部分(数据d31 420.1)(即,通过在时刻t5 444将数据的第一部分附加到数据缓冲器401中的(当前)残留数据)来处理该下一个I/O请求并写入同一数据流的下一个捆(例如,下一个I/O请求的数据d3 420和对应的元数据d3md 422),以获得数据的第一页面(数据454)。在时刻t6 450,系统可以将整个页面数据454写入NAND(在写入操作452中)。作为处理该下一个I/O请求的一部分,系统可以将该下一个I/O请求的剩余部分写入临时高速缓存或数据缓冲器,这导致当前残留数据。例如,在该下一个I/O请求中,剩余部分包括数据d32 420.2和d3md 422,d3md 422在时刻t7 452被写入数据缓冲器401,并且被称为当前残留数据。因此,代替将零附加到剩余部分并将另一页面写入NAND,系统避免了写入操作,并且还通过将残留数据保持在数据缓冲器中(在随后的时间检索,例如,用于下一个I/O请求。)而不是仅将其写入例如针对下一个I/O请求在随后的时刻被检索的NAND来避免后续的读取操作。
随后,系统可以通过写入来自下一个I/O请求的数据的第一部分(数据d41 424.1)(即,通过在时刻t8 454将数据的第一部分附加到数据缓冲器401中的(当前)残留数据)来处理下一个I/O请求并写入同一数据流的下一个捆(例如,下一个I/O请求的数据d4 424和对应的元数据d4md 426),以获得第一页面数据(数据464)。在时刻t9 460,系统可以将整个页面数据464写入NAND(在写入操作462中)。作为处理该下一个I/O请求的一部分,系统可以将该下一个I/O请求的剩余部分写入临时高速缓存或数据缓冲器,这导致当前残留数据。例如,在该下一个I/O请求中,剩余部分包括数据d42 424.2和d4md 426,d4md 426在时刻t10462被写入数据缓冲器401,并且被称为当前残留数据。因此,代替将零附加到剩余部分并将另一页面写入NAND,系统避免了写入操作,并且还通过将残留数据保持在数据缓冲器中而不是仅将其写入例如针对下一个I/O请求在随后的时刻被检索的NAND来避免后续的读取操作。
随后,系统可以确定残留数据对应于流的尾部(即,可以识别流的尾部)。在时刻t11 464,系统将零464附加到残留数据,以获得整个页面数据(数据474),并且在时刻t12470,将整个页面数据474写入NAND(在写入中操作472)。因为系统已经识别出当前流的尾部,所以可能出现空闲时间476,空闲时间476是没有处理或处置进入的I/O流或请求的时间。可以以与以上关于流411描述的相同的方式处理任何随后接收的数据流。
如上所述,环境400中涉及的操作可导致降低写入放大,因为代替将零附加到剩余部分并且将另一页面写入NAND,系统避免了写入操作,并且通过将残留数据保存在数据缓冲器中而不是将其写入例如针对下一个I/O请求在随后的时刻被检索的NAND来进一步避免后续的读取操作。
例如,以下是先前描述的操作的简要描述,示出了在每个步骤中读取或写入的页面的数量以及残留数据是否对应于流的尾部的指示符:
i.T0:将d1写入NAND(1页写入)
ii.T1:将d1md写入缓冲区<residual!=tail>
iii.T2:将d21写入缓冲区
iv.T3:将d1md+d21写入NAND(1页写入)
v.T4:将d22+d2md写入缓冲区<residual!=tail>
vi.T5:将d31写入缓冲区
vii.T6:将d22+d2md+d31写入NAND(1页写入)
viii.T7:将d32+d3md写入缓冲区<residual!=tail>
ix.T8:将d41写入缓冲区
x.T9:将d32+d3md+d41写入NAND(1页写入)
xi.T10:将d42+d4至缓冲区<residual!=tail>
xii.T11:将零附加到缓冲区
xiii.T12:将d42+d4md+零写入NAND(1页写入)
如上面的简短描述所示,作为利用瞬时高速缓存和尾部识别的结果,发生了降低的写入放大。给定类似的数据流(例如,诸如数据流311和411,具有相同量的捆绑数据),系统的实施例消除了一个写入操作和一个读取操作,同时实现了原子性保证的目的。这种降低的写入放大可导致物理存储设备的低水平的磨损,并且还可以减少每个I/O请求的延迟,这导致存储设备和整个存储系统的效率和性能这二者的增加。
因此,环境400描绘了在写入数据流时如何使用瞬时高速缓存和尾部识别可以为数据流的多个I/O请求中的捆绑数据提供原子性保证。因此,所描述的方法可以导致改进的和更高效的存储系统。
在存储设备中促进原子性保证的示例方法
图5A提供了根据本申请的实施例的用于促进数据流中的数据和元数据的原子性保证的方法500的流程图。在操作期间,系统从主计算设备接收要写入存储设备的第一数据流,其中,第一流包括与数据和对应元数据(操作502)关联的多个I/O请求。如果与第一流的先前I/O请求关联的残留数据存在于数据缓冲器中(判定504),则系统将来自当前I/O请求的数据的第一部分附加到残留数据以获得并填充数据的第一页面,其中,第一部分从与当前I/O请求中的当前写指针关联的第一LPA开始(操作506)。如果与第一流的先前I/O请求关联的残留数据与不存于数据缓冲器中(判定504),则系统将来自当前I/O请求的数据的第二部分写入数据缓冲器以获得并填充数据的第二页面,其中,第二部分从与当前I/O请求中的当前写指针关联的第二LPA开始(操作508)。
系统确定写入数据的第一或第二页面的当前PPA(操作510)。系统将当前I/O请求的剩余部分写入数据缓冲器以获得当前残留数据,其中,剩余部分的开始对应于第三LPA(操作512)。如图5B的标签A所描述的,操作继续。
图5B提供了根据本申请的实施例的说明促进数据流中的数据和元数据的原子性保证的方法520的流程图。在操作期间,系统将当前写指针设置于剩余部分的尾部(操作522)。系统向主机发送当前I/O请求成功(操作524)的确认。注意,只要将数据(即,作为残留数据)写入SSD的数据缓冲器或高速缓存,系统就可以向主机发送成功写入的确认。也就是说,部分由于SSD提供的掉电保护(如下面关于图6A所描述的),在向主机发送写入确认之前不需要首先将数据写入物理介质本身。
系统在当前PPA处将第一页面数据写入存储设备(操作526)。系统在数据结构中更新将第一LPA或第二LPA映射到当前PPA的条目(操作528)。系统还可以在数据结构中更新将第三LPA映射到与当前PPA连续的下一个PPA的条目。
如果当前残留数据不对应于第一流的尾部(判定530),则操作如图5A中的操作502所述的继续。如果当前残留数据确实对应于第一流的尾部(判定530),则系统将零附加到当前残留数据以获得并填充第三页面数据(操作532)。系统在与当前PPA连续的下一个PPA处将第三页面数据写入存储设备(操作534)。系统在数据结构中更新将与当前残留数据关联的第四LPA映射到下一PPA的条目(操作536)。系统从数据缓冲器中清除当前残留数据(操作538),并且操作返回。
具有多个微处理器的示例性固态驱动器;用于微处理器之间的尾部识别通信的示
例性方法
实现上述方法(图4、图5A和图5B)的一个实际问题涉及SSD的硬件架构。在单个SSD控制器中给定多个微处理器,任何微处理器都可以处理数据流中的任何逻辑扇区,其中每个逻辑扇区可以被指派给特定NAND管芯。理想地,在处理和写入相应的逻辑扇区期间,第一微处理器可以通过检查负责下一个LBA的第二微处理器是否忙碌来确定逻辑扇区是否包括流的尾部。然而,微处理器之间没有直接通信,这使得难以识别(并协调识别)流的尾部。
图6A提供了根据本申请的实施例的固态驱动器600的示例性架构。SSD 600可以包括SSD控制器601,SSD控制器601可以包括:主机接口602;输入数据缓冲器/SSD高速缓存604;多个微处理器(诸如606、608、610和612);奇偶校验模块614;纠错编码(ECC)模块616;以及媒体接口618,通过它可以访问去往/来自NAND 620、622、624和626数据。SSD 600还可以包括掉电保护模块630和DRAM 632,
如上所述,关于尾部识别,微处理器606-612没有彼此直接通信的手段。为了解决该问题,在本文中描述的实施例中,系统可以使用LPA到PPA映射表。图6B提供了根据本申请的实施例的多个微处理器使用LPA到PPA映射表(或数据结构)来进行关于尾部识别的通信的示例性环境640。环境640可以包括LPA到PPA映射表641,其可以包括具有LPA 642字段和对应的PPA 644字段的条目。例如,条目666可以包括LPA 1 650和对应的PPA 1 651,条目668可以包括LPA 2 652和对应的PPA 2 653。核心1 680可以对应于图6A的微处理器606。核心2 683可以对应于图6A的微处理器608;核心3 686可以对应于图6A的微处理器610;核心4689可以对应于图6A的微处理器612。
当第一微处理器接收针对相应逻辑扇区的写命令时,第一微处理器从数据结构中搜索并检索要写入相应逻辑扇区的当前PPA(例如,查找681以获得PPA1 651)。然后,第一微处理器将相应的逻辑扇区写入到当前的PPA。第一微处理器还从数据结构中检索对应于与输入I/O请求关联的下一个LPA的第二PPA(例如,查找682以获得PPA 2 653,“最初检索的第二PPA”)。第一微处理器等待预定时间量或时间段,并再次检索该第二PPA(“随后检索的第二PPA”)。系统将最初检索的第二PPA与随后检索的第二PPA进行比较,并确定该条目是否已被更新。如果条目已被更新,则缓冲的残留数据不对应于流的尾部。如果条目尚未更新(例如,一段时间,或者在预定时间量或时间段期间),则缓冲的残留数据对应于流的尾部,并且系统执行图5B的操作532-538(例如,将零附加至残留数据以获得第三页面数据,将所述第三页面数据写入NAND,并从数据缓冲器中清除当前残留数据)。
在一些情况下,第二PPA(无论是最初检索的第二PPA还是随后检索的第二PPA)可以为空。当已经修整了物理地址时,条目的值可以是空。如果在第二PPA的初始检索和随后的第二PPA的检索之间发生修整操作,则可能难以确定是否已正确处理残留数据。本文中描述的实施例通过写入特定的无效(但不为空)物理地址以覆盖空条目来解决该问题。在等待预定的时间量之后,系统再次读取条目(以获得随后检索的第二PPA)。如果随后检索的第二PPA已经用有效的物理地址更新,则系统可以确定写入了残留数据。如果随后检索的第二PPA尚未更新(并且仍然与特定的无效物理地址相同),则系统可以确定残留数据对应于流的尾部。如果随后检索的第二PPA为空,则系统可以确定已经修整了第二PPA并且已经写入了残留数据。
用于多个微处理器之间尾部识别确定和通信的示例性方法
图7A提供了示出根据本申请的实施例的用于尾部识别确定和通信的方法的流程图700。在操作期间,系统将当前I/O请求的剩余部分写入数据缓冲器以获得当前残留数据,其中剩余部分的开始对应于第三LPA(操作702,类似于操作512)。系统将当前写指针设置于剩余部分的尾部(操作704、操作522)。系统(向主机)发送当前I/O请求成功(操作706,操作524)的确认。系统在当前PPA将第一页面数据写入存储设备(操作708,类似于操作526)。系统在数据结构中更新将第一LPA或第二LPA映射到当前PPA的条目(操作710,类似于操作528)。
系统从数据结构检索将第二LPA映射到第二PPA(“初始第二PPA”)的条目(操作712)。如果第二PPA不为空(判定714),则系统等待预定的时间量(操作718)。如果第二PPA为空(判定714),则系统将无效PPA设置为第二PPA(操作716),并等待预定时间段(操作718)。该操作如图7B的标签B所述的继续。
图7B提供了示出根据本申请的实施例的用于尾部识别确定和通信的方法的流程图740。在操作期间,系统从数据结构中检索第二条目,以在随后的时间获得第二PPA(“后续的第二PPA”)(操作742)。如果第二PPA未被更新(即,如果初始第二PPA与随后的第二PPA不同)(判定744),则系统确定残留数据对应于第一流的尾部(操作746),并且系统向写入进程报告残留数据是否指示第一流的尾部并且是否要写入存储设备(操作754)。在这种情况下,在操作746之后,系统向写入进程报告残留数据指示第一流的尾部。
如果第二PPA被更新(即,如果初始第二PPA与后续第二PPA不同)(判定744),并且如果后续第二PPA为空(判定748),则系统确定后续第二PPA已经被修整并且残留数据对应于第一流的尾部(操作752)。系统向写入进程报告残留数据是否指示第一流的尾部并且是否要写入存储设备(操作754)。在这种情况下,在操作752之后,系统向写入进程报告残留数据指示第一流的尾部。
如果第二PPA被更新(即,如果初始第二PPA与后续第二PPA不同)(判定744),并且如果后续第二PPA不为空(判定748),则系统确定残留数据不对应于第一流的尾部,并且残留数据将与后续主机数据连接并由另一个微处理器处理(操作750)。系统向写入进程报告残留数据是否指示第一流的尾部并且是否要写入存储设备(操作754)。在这种情况下,在操作750之后,系统向写入进程报告残留数据不指示第一流的尾部。
因此,即使SSD的多个微处理器不能彼此直接通信以确定残留数据的状态(即,残留数据是否对应于流的尾部),系统也允许多个微处理器使用逻辑到物理映射表(例如,具有将LPA映射到对应PPA的条目的数据结构)来进行关于数据流尾部的识别的通信。这可以导致消除写入(两次)和读取许多逻辑扇区的需要,这反过来可以减轻SSD的负担,从而提高性能并延长物理介质的耐用性。
计算机系统示例
图8示出了根据本申请的实施例的促进数据流中的数据和元数据原子性保证的示例性计算机系统。计算机系统800包括处理器802、易失性存储器804和存储设备806。计算机系统800可以是计算设备或存储设备。易失性存储器804可以包括用作管理存储器的存储器(例如,RAM),并且可以用于存储一个或更多个存储器池。计算机系统800可以连接到显示设备810、键盘812和指示设备814。存储设备806可以存储操作系统816、内容处理系统818和数据832。
内容处理系统818可以包括指令,当由计算机系统800执行时,该指令可以使计算机系统800执行本公开中描述的方法和/或进程。例如,内容处理系统818可以包括用于接收和发送数据分组的指令,包括读取或写入数据的请求,I/O请求,要检索、编码、对齐和存储的数据,或者块或者数据页面。
内容处理系统818还可以包括用于接收要写入存储设备的第一数据流的指令,其中第一流包括与数据和对应的元数据关联的多个I/O请求(通信模块820)。内容处理系统818可以包括用于响应于确定与第一流的先前I/O请求关联的残留数据存在于数据缓冲器中的指令(缓冲器管理模块822):将来自当前I/O请求的数据的第一部分附加至残留数据以获得第一页面数据(残留数据处理模块826);将所述当前I/O请求的剩余部分写入数据缓冲器以获得当前残留数据(缓冲器管理模块822);以及在当前物理页面地址处将所述第一页面数据写入存储设备(数据写入模块830)。
内容处理系统818可以包括用于响应于确定与第一流关联的残留数据不存在于数据缓冲器中的指令(缓冲器管理模块822):将来自当前I/O请求的数据的第二部分写入数据缓冲器以从获取第二页面数据,其中所述第二部分从与当前I/O请求中的当前写指针关联的第二逻辑页面地址开始(缓冲器管理模块822);将当前I/O请求的剩余部分写入数据缓冲器以获得当前残留数据(残留数据处理模块826);将当前写指针设置于剩余部分的尾部(数据写入模块830);以及在数据结构中更新将第二逻辑页面地址映射到当前物理页面地址的条目(数据结构管理模块824)。
内容处理系统818还可以包括用于响应于确定当前残留数据对应于第一流的结尾的指令(尾部识别模块828);将零附加到当前残留数据以获得第三数据页面(残留数据处理模块826);在与到当前物理页面地址连续的下一个物理页面地址处将第三页面数据写入存储设备(数据写入模块830);在数据结构中更新将与当前残留数据关联的第四逻辑页面地址映射到下一个物理页面地址的条目(数据结构管理模块824);以及清除数据缓冲器中的当前残留数据(缓冲器管理模块822)。
内容处理系统818可以包括用于在数据结构中更新将逻辑页面地址映射到物理页面地址的条目的指令(数据结构管理模块824),例如,如上面关于图5A、图5B、图7A和图7B所描述的。
数据832可以包括作为输入所需的任何数据或者由本公开中描述的方法和/或进程生成的任何数据。具体地,数据832可以至少存储:要存储、写入、加载、移动、检索、访问、删除、编码、再循环、刷新或复制的数据;元数据;数据流;逻辑扇区或逻辑数据页面;物理扇区或物理数据页面;I/O请求;具有关联数据和元数据的I/O请求;数据的捆;包括数据和对应的元数据的捆绑数据;包括多个I/O请求的数据流;数据缓冲器中的残留数据;数据缓冲器;数据的页面;数据的一部分;当前写指针;当前残留数据;逻辑页面地址(LPA);物理页面地址(PPA);将LPA映射到相应的PPA的数据结构或表;数据结构或表中的条目;数据缓冲器中的残留数据是否对应于数据流的尾部的指示;附加的零;I/O请求成功的确认,包括写请求已成功完成;存储设备的多个微处理器中的一个的指示符;最初检索到的第二PPA;随后检索到的第二PPA;预定时间量或时间段;具有空值的PPA;无效PPA;PPA是否已更新的指示符;残留数据是否对应于流的尾部的确定或报告;奇偶信息;纠错码(ECC);数据的ECC码字;NAND数据缓冲器;特定NAND介质的指示符;编码的数据;对齐的数据;数据部分;以及奇偶校验部分。
图9示出了根据本申请的实施例的促进关于数据流中的数据和元数据的原子性保证的示例性装置900。装置900可以包括可以经由有线、无线、量子光或电通信信道彼此通信的多个单元或装置。装置900可以使用一个或更多个集成电路来实现,并且可以包括比图9中所示的单元或装置更少或更多的单元或装置。此外,装置900可以被集成在计算机系统中,或者被实现为能够与其他计算机系统和/或设备通信的单独设备。具体地,装置900可以包括单元902-912,单元902-912执行类似于图8的计算机系统800的模块820-830的功能或操作,包括:通信单元902;缓冲器管理单元904;数据结构管理单元906;残留数据处理单元908;尾部识别单元910;以及数据写入单元912。
在此详细描述中描述的数据结构和代码通常存储在计算机可读存储介质上,该计算机可读存储介质可以是可以存储供计算机系统使用的代码和/或数据的任何设备或介质。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、磁盘和光存储设备(诸如磁盘驱动器、磁带、CD(光盘)、DVD(数字通用盘或数字视频盘))、或者能够存储现在已知或以后开发的计算机可读介质的其他介质。
在具体实施方式部分中描述的方法和进程可以被体现为代码和/或数据,其可以被存储在如上所述的计算机可读存储介质中。当计算机系统读取并执行存储在计算机可读存储介质上的代码和/或数据时,计算机系统执行体现为数据结构和代码并存储在计算机可读存储介质中的方法和进程。
此外,上述方法和进程可以包括在硬件模块中。例如,硬件模块可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)以及现在已知或以后开发的其他可编程逻辑器件。当硬件模块被激活时,硬件模块执行硬件模块中包含的方法和进程。
仅为了说明和描述的目的,已经提供了本文所描述的前述实施例。它们并非旨在穷举或将本文所述的实施方案限制于所公开的形式。因此,许多修改和变化对于本领域技术人员来说是显而易见的。另外,以上公开内容并非旨在限制本文描述的实施例。本文中描述的实施例的范围由所附的权利要求限定。
Claims (17)
1.一种用于存储数据流中的数据和元数据的计算机实现的方法,所述方法包括:
接收要写入存储设备的数据的第一流,其中,所述第一流包括与数据和相应元数据关联的多个I/O请求;以及
响应于确定在数据缓冲器中存在与所述第一流的先前I/O请求关联的残留数据;
将来自当前I/O请求的数据的第一部分附加到所述残留数据,以获得第一页面数据:
将所述当前I/O请求的剩余部分写入至所述数据缓冲器,以获得当前残留数据;以及
在当前物理页面地址处将所述第一页面数据写入至所述存储设备;
其中,响应于确定所述当前残留数据对应于所述第一流的尾部,包括:由所述存储设备的第一微处理器接收将所述第一页面数据写入至所述存储设备的命令;在基于与第一页面关联的逻辑页面地址的数据结构中,搜索要写入至所述第一页面的所述当前物理页面地址;通过在所述当前物理页面地址处将所述第一页面写入至所述存储设备来执行所述命令;从所述数据结构中检索与传入的I/O请求关联的下一个逻辑页面地址对应的第二物理页面地址;响应于确定所述第二物理页面地址为空,设置无效的物理页面地址作为所述第二物理页面地址;等待预定的时间段;在随后的时间从所述数据结构中检索所述第二物理页面地址;响应于确定所述第二物理页面地址已更新并且为空,确定所述残留数据不对应于所述第一流的尾部;响应于确定所述第二物理页面地址未更新,确定所述残留数据对应于所述第一流的尾部;以及响应于确定所述第二物理页面地址已更新并且不为空,确定所述第二物理页面地址已被修整并且所述残留数据对应于所述第一流的尾部。
2.根据权利要求1所述的方法,其中,所述第一部分始于与所述当前I/O请求中的当前写指针关联的第一逻辑页面地址,并且其中,所述方法还包括:
将所述当前写指针设置于所述剩余部分的结尾;
在数据结构中更新将所述第一逻辑页面地址映射到所述当前物理页面地址的条目。
3.根据权利要求1所述的方法,其中,响应于确定在所述数据缓冲器中不存在与所述第一流关联的残留数据,所述方法还包括:
将来自所述当前I/O请求的数据的第二部分写入至所述数据缓冲器,以获得第二页面数据,
其中,所述第二部分始于与所述当前I/O请求中的当前写指针关联的第二逻辑页面地址;
将所述当前I/O请求的剩余部分写入至所述数据缓冲器,以获得当前残留数据;
将所述当前写指针设置于所述剩余部分的结尾;以及
在数据结构中更新将所述第二逻辑页面地址映射到所述当前物理页面地址的条目。
4.根据权利要求1所述的方法,其中,在将所述当前I/O请求的所述剩余部分写入至所述数据缓冲器之后,该方法还包括:
将所述当前I/O请求成功的确认发送至接收数据的所述第一流的主机计算设备。
5.根据权利要求1所述的方法,其中,所述当前I/O请求的所述剩余部分的始端对应于第三逻辑页面地址,并且其中,所述方法还包括:
在数据结构中更新将所述第三逻辑页面地址映射到与所述当前物理页面地址连续的下一个物理页面地址的条目。
6.根据权利要求1所述的方法,所述方法还包括:
将零附加到所述当前残留数据,以获得第三页面数据;
在与所述当前物理页面地址连续的下一个物理页面地址处将所述第三页面数据写入所述存储设备;
在数据结构中更新将与所述当前残留数据关联的第四逻辑页面地址映射到所述下一个物理页面地址的条目;以及
清除所述数据缓冲器中的所述当前残留数据。
7.根据权利要求1所述的方法,所述方法还包括:
报告所述残留数据是否对应于所述第一流的尾部。
8.一种用于存储数据流中的数据和元数据的计算机系统,所述计算机系统包括:
处理器;以及
存储器,所述存储器与所述处理器联接并且存储有当被所述处理器执行时使所述处理器执行方法的指令,其中,所述计算机系统包括存储设备,所述方法包括:
接收要写入所述存储设备的数据的第一流,其中,所述第一流包括与数据和相应元数据关联的多个I/O请求;以及
响应于确定在数据缓冲器中存在与所述第一流的先前I/O请求关联的残留数据;
将来自当前I/O请求的数据的第一部分附加到所述残留数据,以获得第一页面数据:
将所述当前I/O请求的剩余部分写入至所述数据缓冲器,以获得当前残留数据;以及
在当前物理页面地址处将所述第一页面数据写入至所述存储设备;
其中,响应于确定所述当前残留数据对应于所述第一流的尾部,包括:由所述存储设备的第一微处理器接收将所述第一页面数据写入至所述存储设备的命令;在基于与第一页面关联的逻辑页面地址的数据结构中,搜索要写入至所述第一页面的所述当前物理页面地址;通过在所述当前物理页面地址处将所述第一页面写入至所述存储设备来执行所述命令;从所述数据结构中检索与传入的I/O请求关联的下一个逻辑页面地址对应的第二物理页面地址;响应于确定所述第二物理页面地址为空,设置无效的物理页面地址作为所述第二物理页面地址;
等待预定的时间段;在随后的时间从所述数据结构中检索所述第二物理页面地址;响应于确定所述第二物理页面地址已更新并且为空,确定所述残留数据不对应于所述第一流的尾部;响应于确定所述第二物理页面地址未更新,确定所述残留数据对应于所述第一流的尾部;以及响应于确定所述第二物理页面地址已更新并且不为空,确定所述第二物理页面地址已被修整并且所述残留数据对应于所述第一流的尾部。
9.根据权利要求8所述的计算机系统,其中,所述第一部分始于与所述当前I/O请求中的当前写指针关联的第一逻辑页面地址,并且其中,所述方法还包括:
将所述当前写指针设置于所述剩余部分的结尾;
在数据结构中更新将所述第一逻辑页面地址映射到所述当前物理页面地址的条目。
10.根据权利要求8所述的计算机系统,其中,响应于确定在所述数据缓冲器中不存在与所述第一流关联的残留数据,所述方法还包括:
将来自所述当前I/O请求的数据的第二部分写入至所述数据缓冲器,以获得第二页面数据,
其中,所述第二部分始于与所述当前I/O请求中的当前写指针关联的第二逻辑页面地址;
将所述当前I/O请求的剩余部分写入至所述数据缓冲器,以获得当前残留数据;
将所述当前写指针设置于所述剩余部分的结尾;以及
在数据结构中更新将所述第二逻辑页面地址映射到所述当前物理页面地址的条目。
11.根据权利要求8所述的计算机系统,其中,在将所述当前I/O请求的所述剩余部分写入至所述数据缓冲器之后,该方法还包括:
将所述当前I/O请求成功的确认发送至接收数据的所述第一流的主机计算设备。
12.根据权利要求8所述的计算机系统,其中,所述当前I/O请求的所述剩余部分的始端对应于第三逻辑页面地址,并且其中,所述方法还包括:
在数据结构中更新将所述第三逻辑页面地址映射到与所述当前物理页面地址连续的下一个物理页面地址的条目。
13.根据权利要求8所述的计算机系统,所述方法还包括:
将零附加到所述当前残留数据,以获得第三页面数据;
在与所述当前物理页面地址连续的下一个物理页面地址处将所述第三页面数据写入所述存储设备;
在数据结构中更新将与所述当前残留数据关联的第四逻辑页面地址映射到所述下一个物理页面地址的条目;以及
清除所述数据缓冲器中的所述当前残留数据。
14.根据权利要求8所述的计算机系统,所述计算机系统还包括:
报告所述残留数据是否对应于所述第一流的尾部。
15.一种非暂时性计算机可读的存储介质,所述存储介质存储有当被计算机执行时使所述计算机执行方法的指令,该方法包括:
接收要写入存储设备的数据的第一流,其中,所述第一流包括与数据和相应元数据关联的多个I/O请求;以及
响应于确定在数据缓冲器中存在与所述第一流的先前I/O请求关联的残留数据;
将来自当前I/O请求的数据的第一部分附加到所述残留数据,以获得第一页面数据:
将所述当前I/O请求的剩余部分写入至所述数据缓冲器,以获得当前残留数据;以及
在当前物理页面地址处将所述第一页面数据写入至所述存储设备;
其中,响应于确定所述当前残留数据对应于所述第一流的尾部,包括:由所述存储设备的第一微处理器接收将所述第一页面数据写入至所述存储设备的命令;在基于与第一页面关联的逻辑页面地址的数据结构中,搜索要写入至所述第一页面的所述当前物理页面地址;通过在所述当前物理页面地址处将所述第一页面写入至所述存储设备来执行所述命令;从所述数据结构中检索与传入的I/O请求关联的下一个逻辑页面地址对应的第二物理页面地址;响应于确定所述第二物理页面地址为空,设置无效的物理页面地址作为所述第二物理页面地址;等待预定的时间段;在随后的时间从所述数据结构中检索所述第二物理页面地址;响应于确定所述第二物理页面地址已更新并且为空,确定所述残留数据不对应于所述第一流的尾部;响应于确定所述第二物理页面地址未更新,确定所述残留数据对应于所述第一流的尾部;以及响应于确定所述第二物理页面地址已更新并且不为空,确定所述第二物理页面地址已被修整并且所述残留数据对应于所述第一流的尾部。
16.根据权利要求15所述的存储介质,其中,响应于确定在所述数据缓冲器中不存在与所述第一流关联的残留数据,所述方法还包括:
将来自所述当前I/O请求的数据的第二部分写入至所述数据缓冲器,以获得第二页面数据,
其中,所述第二部分始于与所述当前I/O请求中的当前写指针关联的第二逻辑页面地址;
将所述当前I/O请求的剩余部分写入至所述数据缓冲器,以获得当前残留数据;
将所述当前写指针设置于所述剩余部分的结尾;以及
在数据结构中更新将所述第二逻辑页面地址映射到所述当前物理页面地址的条目。
17.根据权利要求15所述的存储介质,所述方法还包括:
将零附加到所述当前残留数据,以获得第三页面数据;
在与所述当前物理页面地址连续的下一个物理页面地址处将所述第三页面数据写入所述存储设备;
在数据结构中更新将与所述当前残留数据关联的第四逻辑页面地址映射到所述下一个物理页面地址的条目;以及
清除所述数据缓冲器中的所述当前残留数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862712133P | 2018-07-30 | 2018-07-30 | |
US62/712,133 | 2018-07-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110780806A CN110780806A (zh) | 2020-02-11 |
CN110780806B true CN110780806B (zh) | 2023-05-09 |
Family
ID=69179496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910697309.3A Active CN110780806B (zh) | 2018-07-30 | 2019-07-30 | 促进元数据和数据捆绑存储的原子性保证的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10871921B2 (zh) |
CN (1) | CN110780806B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11693772B2 (en) * | 2020-01-08 | 2023-07-04 | Samsung Electronics Co., Ltd. | System and method of using persistent memory to support small-sized data append for object store |
US11327684B2 (en) * | 2020-05-14 | 2022-05-10 | Western Digital Technologies, Inc. | Storage system and method for host memory access |
US20240143206A1 (en) * | 2022-10-26 | 2024-05-02 | Xilinx, Inc. | Memory controller to perform in-line data processing and efficiently organize data and associated metadata in memory |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1074050A (zh) * | 1992-01-02 | 1993-07-07 | 国际商业机器公司 | 具有双总线体系结构的计算机的总线控制逻辑 |
CN1617113A (zh) * | 2003-11-13 | 2005-05-18 | 国际商业机器公司 | 向物理内存分配虚拟内存的方法、存储控制器和计算机系统 |
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
Family Cites Families (168)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4775932A (en) | 1984-07-31 | 1988-10-04 | Texas Instruments Incorporated | Computer memory system with parallel garbage collection independent from an associated user processor |
EP0681721B1 (en) | 1993-02-01 | 2005-03-23 | Sun Microsystems, Inc. | Archiving file system for data servers in a distributed network environment |
US6148377A (en) | 1996-11-22 | 2000-11-14 | Mangosoft Corporation | Shared memory computer networks |
US5930167A (en) | 1997-07-30 | 1999-07-27 | Sandisk Corporation | Multi-state non-volatile flash memory capable of being its own two state write cache |
US6226650B1 (en) | 1998-09-17 | 2001-05-01 | Synchrologic, Inc. | Database synchronization and organization system and method |
US7966462B2 (en) | 1999-08-04 | 2011-06-21 | Super Talent Electronics, Inc. | Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips |
WO2001040903A2 (en) | 1999-12-06 | 2001-06-07 | Warp Solutions, Inc. | System and method for enhancing operation of a web server cluster |
US6981005B1 (en) | 2000-08-24 | 2005-12-27 | Microsoft Corporation | Partial migration of an object to another storage location in a computer system |
US7228441B2 (en) | 2000-09-27 | 2007-06-05 | Huron Ip Llc | Multi-server and multi-CPU power management system and method |
US6694451B2 (en) | 2000-12-07 | 2004-02-17 | Hewlett-Packard Development Company, L.P. | Method for redundant suspend to RAM |
WO2002052381A2 (en) | 2000-12-22 | 2002-07-04 | Warp Solutions, Inc. | System and method for intelligently distributing content over a communications network |
JP2003022209A (ja) | 2001-07-05 | 2003-01-24 | Nri & Ncc Co Ltd | 分散サーバーシステム |
US20030163633A1 (en) | 2002-02-27 | 2003-08-28 | Aasheim Jered Donald | System and method for achieving uniform wear levels in a flash memory device |
US7533214B2 (en) | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
US6988165B2 (en) * | 2002-05-20 | 2006-01-17 | Pervasive Software, Inc. | System and method for intelligent write management of disk pages in cache checkpoint operations |
JP4406604B2 (ja) | 2002-06-11 | 2010-02-03 | アシシュ エイ パンドヤ | Tcp/ip、rdma、及びipストレージアプリケーションのための高性能ipプロセッサ |
US7003620B2 (en) | 2002-11-26 | 2006-02-21 | M-Systems Flash Disk Pioneers Ltd. | Appliance, including a flash memory, that is robust under power failure |
CN100416573C (zh) | 2003-05-07 | 2008-09-03 | 睦塞德技术公司 | 利用电源岛管理集成电路上的功率 |
US20050038954A1 (en) | 2003-06-04 | 2005-02-17 | Quantum Corporation | Storage drive having universal format across media types |
US7051215B2 (en) | 2003-06-13 | 2006-05-23 | Intel Corporation | Power management for clustered computing platforms |
US7565454B2 (en) | 2003-07-18 | 2009-07-21 | Microsoft Corporation | State migration in multiple NIC RDMA enabled devices |
JP4371739B2 (ja) | 2003-09-02 | 2009-11-25 | 株式会社東芝 | シリアルataインタフェースを持つ電子機器及びシリアルataバスのパワーセーブ方法 |
US7173863B2 (en) | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
US7676603B2 (en) | 2004-04-20 | 2010-03-09 | Intel Corporation | Write combining protocol between processors and chipsets |
US7490239B2 (en) | 2005-01-07 | 2009-02-10 | First Data Corporation | Facilitating digital signature based on ephemeral private key |
US7480766B2 (en) | 2005-08-03 | 2009-01-20 | Sandisk Corporation | Interfacing systems operating through a logical address space and on a direct data file basis |
US7752382B2 (en) | 2005-09-09 | 2010-07-06 | Sandisk Il Ltd | Flash memory storage system and method |
US7631162B2 (en) | 2005-10-27 | 2009-12-08 | Sandisck Corporation | Non-volatile memory with adaptive handling of data writes |
US8260924B2 (en) | 2006-05-03 | 2012-09-04 | Bluetie, Inc. | User load balancing systems and methods thereof |
JP2007305210A (ja) | 2006-05-10 | 2007-11-22 | Toshiba Corp | 半導体記憶装置 |
US8924367B2 (en) | 2006-05-31 | 2014-12-30 | International Business Machines Corporation | Method and system for transformation of logical data objects for storage |
US7711890B2 (en) | 2006-06-06 | 2010-05-04 | Sandisk Il Ltd | Cache control in a non-volatile memory device |
CN101479686A (zh) | 2006-06-27 | 2009-07-08 | 皇家飞利浦电子股份有限公司 | 用于管理多个数据处理单元的功率消耗的设备和方法 |
JP2008077810A (ja) | 2006-09-25 | 2008-04-03 | Toshiba Corp | 不揮発性半導体記憶装置 |
KR100858241B1 (ko) | 2006-10-25 | 2008-09-12 | 삼성전자주식회사 | 하이브리드 플래시 메모리 장치 및 그것의 가용 블록 할당방법 |
US8344475B2 (en) | 2006-11-29 | 2013-01-01 | Rambus Inc. | Integrated circuit heating to effect in-situ annealing |
US7958433B1 (en) | 2006-11-30 | 2011-06-07 | Marvell International Ltd. | Methods and systems for storing data in memory using zoning |
US7852654B2 (en) | 2006-12-28 | 2010-12-14 | Hynix Semiconductor Inc. | Semiconductor memory device, and multi-chip package and method of operating the same |
IL187041A0 (en) | 2007-10-30 | 2008-02-09 | Sandisk Il Ltd | Optimized hierarchical integrity protection for stored data |
US8281061B2 (en) | 2008-03-31 | 2012-10-02 | Micron Technology, Inc. | Data conditioning to improve flash memory reliability |
KR101497074B1 (ko) | 2008-06-17 | 2015-03-05 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법 |
US9547589B2 (en) | 2008-06-18 | 2017-01-17 | Super Talent Technology, Corp. | Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive |
US8954654B2 (en) | 2008-06-18 | 2015-02-10 | Super Talent Technology, Corp. | Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance |
US8959280B2 (en) | 2008-06-18 | 2015-02-17 | Super Talent Technology, Corp. | Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear |
JP2010152704A (ja) | 2008-12-25 | 2010-07-08 | Hitachi Ltd | 計算機システムの運用管理システム及び管理方法 |
JP5834303B2 (ja) | 2008-12-30 | 2015-12-16 | ラウンド ロック リサーチ リミテッド ライアビリティー カンパニー | 作動温度範囲を拡張した不揮発性メモリ |
EP2396742A2 (en) | 2009-02-10 | 2011-12-21 | Uniloc Usa, Inc. | Web content access using a client device identifier |
US20100217952A1 (en) * | 2009-02-26 | 2010-08-26 | Iyer Rahul N | Remapping of Data Addresses for a Large Capacity Victim Cache |
US8166233B2 (en) | 2009-07-24 | 2012-04-24 | Lsi Corporation | Garbage collection for solid state disks |
US8918365B2 (en) | 2009-06-19 | 2014-12-23 | Blekko, Inc. | Dedicating disks to reading or writing |
US8996812B2 (en) | 2009-06-19 | 2015-03-31 | International Business Machines Corporation | Write-back coherency data cache for resolving read/write conflicts |
US20110055471A1 (en) | 2009-08-28 | 2011-03-03 | Jonathan Thatcher | Apparatus, system, and method for improved data deduplication |
US8688894B2 (en) | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
US8214700B2 (en) | 2009-10-28 | 2012-07-03 | Sandisk Technologies Inc. | Non-volatile memory and method with post-write read and adaptive re-write to manage errors |
US8144512B2 (en) | 2009-12-18 | 2012-03-27 | Sandisk Technologies Inc. | Data transfer flows for on-chip folding |
US9390035B2 (en) | 2009-12-21 | 2016-07-12 | Sanmina-Sci Corporation | Method and apparatus for supporting storage modules in standard memory and/or hybrid memory bus architectures |
US8443263B2 (en) | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
TWI409633B (zh) | 2010-02-04 | 2013-09-21 | Phison Electronics Corp | 快閃記憶體儲存裝置、其控制器與資料寫入方法 |
JP5598017B2 (ja) | 2010-02-24 | 2014-10-01 | 富士通株式会社 | 判定プログラム、方法及び装置 |
US8370297B2 (en) | 2010-03-08 | 2013-02-05 | International Business Machines Corporation | Approach for optimizing restores of deduplicated data |
JP2011198133A (ja) | 2010-03-19 | 2011-10-06 | Toshiba Corp | メモリシステムおよびコントローラ |
US8688897B2 (en) | 2010-05-28 | 2014-04-01 | International Business Machines Corporation | Cache memory management in a flash cache architecture |
JP4886877B2 (ja) | 2010-05-31 | 2012-02-29 | 株式会社東芝 | 記録媒体制御装置、及びその方法 |
US9401967B2 (en) | 2010-06-09 | 2016-07-26 | Brocade Communications Systems, Inc. | Inline wire speed deduplication system |
US8725934B2 (en) | 2011-12-22 | 2014-05-13 | Fusion-Io, Inc. | Methods and appratuses for atomic storage operations |
US8938624B2 (en) | 2010-09-15 | 2015-01-20 | Lsi Corporation | Encryption key destruction for secure data erasure |
US9244779B2 (en) | 2010-09-30 | 2016-01-26 | Commvault Systems, Inc. | Data recovery operations, such as recovery from modified network data management protocol data |
US8516284B2 (en) | 2010-11-04 | 2013-08-20 | International Business Machines Corporation | Saving power by placing inactive computing devices in optimized configuration corresponding to a specific constraint |
US10817421B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent data structures |
US9208071B2 (en) | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
US9176794B2 (en) | 2010-12-13 | 2015-11-03 | Advanced Micro Devices, Inc. | Graphics compute process scheduling |
US8826098B2 (en) | 2010-12-20 | 2014-09-02 | Lsi Corporation | Data signatures to determine successful completion of memory backup |
US9612978B2 (en) | 2010-12-31 | 2017-04-04 | International Business Machines Corporation | Encrypted flash-based data storage system with confidentiality mode |
US9251087B2 (en) | 2011-02-11 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for virtual memory management |
US9141527B2 (en) | 2011-02-25 | 2015-09-22 | Intelligent Intellectual Property Holdings 2 Llc | Managing cache pools |
US8452819B1 (en) | 2011-03-22 | 2013-05-28 | Amazon Technologies, Inc. | Methods and apparatus for optimizing resource utilization in distributed storage systems |
KR101717081B1 (ko) | 2011-03-23 | 2017-03-28 | 삼성전자주식회사 | 비휘발성 램과 휘발성 램을 버퍼 메모리로 사용하는 저장 장치 |
US20180107591A1 (en) | 2011-04-06 | 2018-04-19 | P4tents1, LLC | System, method and computer program product for fetching data between an execution of a plurality of threads |
US8832402B2 (en) | 2011-04-29 | 2014-09-09 | Seagate Technology Llc | Self-initiated secure erasure responsive to an unauthorized power down event |
US8904158B2 (en) | 2011-09-02 | 2014-12-02 | Lsi Corporation | Storage system with boot appliance for improving reliability/availability/serviceability in high density server environments |
KR20130031046A (ko) | 2011-09-20 | 2013-03-28 | 삼성전자주식회사 | 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법 |
US8843451B2 (en) | 2011-09-23 | 2014-09-23 | International Business Machines Corporation | Block level backup and restore |
KR20130064518A (ko) | 2011-12-08 | 2013-06-18 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
US9088300B1 (en) | 2011-12-15 | 2015-07-21 | Marvell International Ltd. | Cyclic redundancy check for out-of-order codewords |
US9213645B2 (en) | 2011-12-29 | 2015-12-15 | Sandisk Technologies Inc. | Command aware partial page programming |
US9043545B2 (en) | 2012-01-06 | 2015-05-26 | Netapp, Inc. | Distributing capacity slices across storage system nodes |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US8880815B2 (en) | 2012-02-20 | 2014-11-04 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Low access time indirect memory accesses |
US9218281B2 (en) * | 2012-05-04 | 2015-12-22 | Seagate Technology Llc | Maintaining ordering via a multi-level map of a solid-state media |
US9645917B2 (en) | 2012-05-22 | 2017-05-09 | Netapp, Inc. | Specializing I/O access patterns for flash storage |
US9092223B1 (en) | 2012-05-31 | 2015-07-28 | Google Inc. | Systems and methods to save power in data-center networks |
US9208820B2 (en) | 2012-06-29 | 2015-12-08 | International Business Machines Corporation | Optimized data placement for individual file accesses on deduplication-enabled sequential storage systems |
US20140019650A1 (en) * | 2012-07-10 | 2014-01-16 | Zhi Bin Li | Multi-Write Bit-Fill FIFO |
US9009402B2 (en) | 2012-09-20 | 2015-04-14 | Emc Corporation | Content addressable storage in legacy systems |
US8756237B2 (en) | 2012-10-12 | 2014-06-17 | Architecture Technology Corporation | Scalable distributed processing of RDF data |
US9405621B2 (en) | 2012-12-28 | 2016-08-02 | Super Talent Technology, Corp. | Green eMMC device (GeD) controller with DRAM data persistence, data-type splitting, meta-page grouping, and diversion of temp files for enhanced flash endurance |
US9141554B1 (en) | 2013-01-18 | 2015-09-22 | Cisco Technology, Inc. | Methods and apparatus for data processing using data compression, linked lists and de-duplication techniques |
US9432755B2 (en) | 2013-02-15 | 2016-08-30 | Futurewei Technologies, Inc. | Downstream burst transmission in passive optical networks |
US8984171B2 (en) | 2013-03-01 | 2015-03-17 | Silicon Motion, Inc. | Data storage device and flash memory control method |
US8751763B1 (en) | 2013-03-13 | 2014-06-10 | Nimbus Data Systems, Inc. | Low-overhead deduplication within a block-based data storage |
US9280472B1 (en) | 2013-03-13 | 2016-03-08 | Western Digital Technologies, Inc. | Caching data in a high performance zone of a data storage system |
KR102039537B1 (ko) | 2013-03-15 | 2019-11-01 | 삼성전자주식회사 | 불휘발성 저장 장치 및 그것의 운영체제 이미지 프로그램 방법 |
US10073626B2 (en) | 2013-03-15 | 2018-09-11 | Virident Systems, Llc | Managing the write performance of an asymmetric memory system |
US9195673B2 (en) | 2013-03-15 | 2015-11-24 | International Business Machines Corporation | Scalable graph modeling of metadata for deduplicated storage systems |
US9436595B1 (en) | 2013-03-15 | 2016-09-06 | Google Inc. | Use of application data and garbage-collected data to improve write efficiency of a data storage device |
US20140304452A1 (en) | 2013-04-03 | 2014-10-09 | Violin Memory Inc. | Method for increasing storage media performance |
KR101478168B1 (ko) * | 2013-04-17 | 2014-12-31 | 주식회사 디에이아이오 | 스토리지 시스템 및 스토리지 시스템의 쓰기 데이터 처리 방법 |
US9183103B2 (en) | 2013-05-31 | 2015-11-10 | Vmware, Inc. | Lightweight remote replication of a local write-back cache |
US9785545B2 (en) | 2013-07-15 | 2017-10-10 | Cnex Labs, Inc. | Method and apparatus for providing dual memory access to non-volatile memory |
KR102025180B1 (ko) * | 2013-08-08 | 2019-09-26 | 삼성전자주식회사 | 스토리지 시스템 및 그것의 쓰기 방법 |
DE112013007263T5 (de) | 2013-09-19 | 2016-04-07 | Intel Corporation | Techniken zur Zuweisung von Task-Anteilen bei verteilter Verarbeitung |
US20160232103A1 (en) | 2013-09-26 | 2016-08-11 | Mark A. Schmisseur | Block storage apertures to persistent memory |
US9251154B2 (en) | 2013-11-15 | 2016-02-02 | International Business Machines Corporation | Priority based reliability mechanism for archived data |
US9619155B2 (en) | 2014-02-07 | 2017-04-11 | Coho Data Inc. | Methods, systems and devices relating to data storage interfaces for managing data address spaces in data storage devices |
US20150301964A1 (en) | 2014-02-18 | 2015-10-22 | Alistair Mark Brinicombe | Methods and systems of multi-memory, control and data plane architecture |
US9880859B2 (en) | 2014-03-26 | 2018-01-30 | Intel Corporation | Boot image discovery and delivery |
GB2527296A (en) | 2014-06-16 | 2015-12-23 | Ibm | A method for restoring data in a HSM system |
US9240722B2 (en) | 2014-06-19 | 2016-01-19 | Dell Products Lp | Methods and systems for improving light load efficiency for power stages of multi-phase voltage regulator circuits |
US10044795B2 (en) | 2014-07-11 | 2018-08-07 | Vmware Inc. | Methods and apparatus for rack deployments for virtual computing environments |
US9542327B2 (en) | 2014-07-22 | 2017-01-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Selective mirroring in caches for logical volumes |
US9588977B1 (en) | 2014-09-30 | 2017-03-07 | EMC IP Holding Company LLC | Data and metadata structures for use in tiering data to cloud storage |
US9626286B2 (en) | 2014-10-03 | 2017-04-18 | Sandisk Technologies Llc | Hardware and firmware paths for performing memory read processes |
US9710330B2 (en) | 2014-10-15 | 2017-07-18 | Empire Technology Development Llc | Partial cloud data storage |
US10013169B2 (en) | 2014-12-19 | 2018-07-03 | International Business Machines Corporation | Cooperative data deduplication in a solid state storage array |
US20160179399A1 (en) | 2014-12-23 | 2016-06-23 | Sandisk Technologies Inc. | System and Method for Selecting Blocks for Garbage Collection Based on Block Health |
US10282211B2 (en) | 2015-01-09 | 2019-05-07 | Avago Technologies International Sales Pte. Limited | Operating system software install and boot up from a storage area network device |
US10234930B2 (en) | 2015-02-13 | 2019-03-19 | Intel Corporation | Performing power management in a multicore processor |
US9734051B2 (en) | 2015-02-16 | 2017-08-15 | Quantum Corporation | Garbage collection and defragmentation for solid state drives (SSD) and shingled magnetic recording (SMR) drives |
KR101927233B1 (ko) | 2015-03-16 | 2018-12-12 | 한국전자통신연구원 | 이기종 멀티-코어 시스템의 gpu 전력 측정 방법 |
US9911487B2 (en) | 2015-05-19 | 2018-03-06 | EMC IP Holding Company LLC | Method and system for storing and recovering data from flash memory |
US10069916B2 (en) | 2015-05-26 | 2018-09-04 | Gluent, Inc. | System and method for transparent context aware filtering of data requests |
US20160350002A1 (en) | 2015-05-29 | 2016-12-01 | Intel Corporation | Memory device specific self refresh entry and exit |
US9696931B2 (en) | 2015-06-12 | 2017-07-04 | International Business Machines Corporation | Region-based storage for volume data and metadata |
US9588571B2 (en) | 2015-07-08 | 2017-03-07 | Quanta Computer Inc. | Dynamic power supply management |
US10324832B2 (en) | 2016-05-25 | 2019-06-18 | Samsung Electronics Co., Ltd. | Address based multi-stream storage device access |
US10656838B2 (en) | 2015-07-13 | 2020-05-19 | Samsung Electronics Co., Ltd. | Automatic stream detection and assignment algorithm |
US9529601B1 (en) | 2015-07-15 | 2016-12-27 | Dell Products L.P. | Multi-processor startup system |
US10749858B2 (en) | 2015-09-04 | 2020-08-18 | Hewlett Packard Enterprise Development Lp | Secure login information |
US10120573B2 (en) | 2015-09-14 | 2018-11-06 | Microsoft Technology Licensing, Llc. | Modular sequential writing of data to data storage devices |
KR20170045806A (ko) | 2015-10-20 | 2017-04-28 | 삼성전자주식회사 | 반도체 메모리 장치 및 이의 동작 방법 |
US20170147499A1 (en) | 2015-11-25 | 2017-05-25 | Sandisk Technologies Llc | Multi-Level Logical to Physical Address Mapping Using Distributed Processors in Non-Volatile Storage Device |
US20170161202A1 (en) | 2015-12-02 | 2017-06-08 | Samsung Electronics Co., Ltd. | Flash memory device including address mapping for deduplication, and related methods |
US20170162235A1 (en) | 2015-12-02 | 2017-06-08 | Qualcomm Incorporated | System and method for memory management using dynamic partial channel interleaving |
US9965441B2 (en) | 2015-12-10 | 2018-05-08 | Cisco Technology, Inc. | Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics |
US10649681B2 (en) | 2016-01-25 | 2020-05-12 | Samsung Electronics Co., Ltd. | Dynamic garbage collection P/E policies for redundant storage blocks and distributed software stacks |
US10235198B2 (en) | 2016-02-24 | 2019-03-19 | Samsung Electronics Co., Ltd. | VM-aware FTL design for SR-IOV NVME SSD |
US20170249162A1 (en) | 2016-02-25 | 2017-08-31 | Red Hat Israel, Ltd. | Safe transmit packet processing for network function virtualization applications |
US10101939B2 (en) | 2016-03-09 | 2018-10-16 | Toshiba Memory Corporation | Storage system having a host that manages physical data locations of a storage device |
US10585809B2 (en) | 2016-04-01 | 2020-03-10 | Intel Corporation | Convolutional memory integrity |
US20170286311A1 (en) | 2016-04-01 | 2017-10-05 | Dale J. Juenemann | Repetitive address indirection in a memory |
US10866905B2 (en) | 2016-05-25 | 2020-12-15 | Samsung Electronics Co., Ltd. | Access parameter based multi-stream storage device access |
US11188270B2 (en) * | 2016-05-25 | 2021-11-30 | International Business Machines Corporation | Targeted secure data overwrite |
US10389839B2 (en) | 2016-06-01 | 2019-08-20 | Intel Corporation | Method and apparatus for generating data prefetches specifying various sizes to prefetch data from a remote computing node |
US10514862B2 (en) | 2016-07-21 | 2019-12-24 | Micron Technology, Inc. | Memory device including concurrent suspend states for different operations |
US10684795B2 (en) * | 2016-07-25 | 2020-06-16 | Toshiba Memory Corporation | Storage device and storage control method |
JP6274589B1 (ja) | 2016-09-28 | 2018-02-07 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置および連続読出し方法 |
US11644992B2 (en) | 2016-11-23 | 2023-05-09 | Samsung Electronics Co., Ltd. | Storage system performing data deduplication, method of operating storage system, and method of operating data processing system |
US10374885B2 (en) | 2016-12-13 | 2019-08-06 | Amazon Technologies, Inc. | Reconfigurable server including a reconfigurable adapter device |
US10496544B2 (en) | 2016-12-29 | 2019-12-03 | Intel Corporation | Aggregated write back in a direct mapped two level memory |
US10516760B2 (en) | 2017-03-17 | 2019-12-24 | Verizon Patent And Licensing Inc. | Automatic bootstrapping and dynamic configuration of data center nodes |
US10275170B2 (en) | 2017-04-10 | 2019-04-30 | Sandisk Technologies Llc | Folding operations in memory systems with single address updates |
TWI625620B (zh) | 2017-05-12 | 2018-06-01 | 威盛電子股份有限公司 | 非揮發性記憶體裝置及其讀取方法 |
US10474397B2 (en) | 2017-06-13 | 2019-11-12 | Western Digital Technologies, Inc | Unified indirection in a multi-device hybrid storage unit |
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 |
US10564856B2 (en) | 2017-07-06 | 2020-02-18 | Alibaba Group Holding Limited | Method and system for mitigating write amplification in a phase change memory-based storage device |
TWI631570B (zh) | 2017-09-04 | 2018-08-01 | 威盛電子股份有限公司 | 錯誤檢查糾正解碼方法與裝置 |
US10229735B1 (en) | 2017-12-22 | 2019-03-12 | Intel Corporation | Block management for dynamic single-level cell buffers in storage devices |
US10606693B2 (en) | 2017-12-28 | 2020-03-31 | Micron Technology, Inc. | Memory controller implemented error correction code memory |
-
2018
- 2018-11-27 US US16/201,353 patent/US10871921B2/en active Active
-
2019
- 2019-07-30 CN CN201910697309.3A patent/CN110780806B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1074050A (zh) * | 1992-01-02 | 1993-07-07 | 国际商业机器公司 | 具有双总线体系结构的计算机的总线控制逻辑 |
CN1617113A (zh) * | 2003-11-13 | 2005-05-18 | 国际商业机器公司 | 向物理内存分配虚拟内存的方法、存储控制器和计算机系统 |
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
Non-Patent Citations (3)
Title |
---|
Kyounghyun Park ; Minh Chau Nguyen ; Heesun Won."Web-based collaborative big data analytics on big data as a service platform".《IEEE》.2015,全文. * |
卢兴华,刘增良.数据残留与安全删除方法研究.微计算机信息.2005,(第23期),全文. * |
李顺芬 ; 陈小刚 ; 周密 ; 李鸽子 ; 王玉婵 ; 宋志棠 ; .基于PCRAM数据页聚簇的缓冲算法.中国集成电路.2014,(第Z1期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN110780806A (zh) | 2020-02-11 |
US10871921B2 (en) | 2020-12-22 |
US20200034079A1 (en) | 2020-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10649969B2 (en) | Memory efficient persistent key-value store for non-volatile memories | |
US10642522B2 (en) | Method and system for in-line deduplication in a storage drive based on a non-collision hash | |
US10423508B2 (en) | Method and system for a high-priority read based on an in-place suspend/resume write | |
US10877898B2 (en) | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements | |
US20140136769A1 (en) | Solid-state storage management | |
US20200225882A1 (en) | System and method for compaction-less key-value store for improving storage capacity, write amplification, and i/o performance | |
US9507705B2 (en) | Write cache sorting | |
US10996886B2 (en) | Method and system for facilitating atomicity and latency assurance on variable sized I/O | |
US11200159B2 (en) | System and method for facilitating efficient utilization of NAND flash memory | |
CN110780806B (zh) | 促进元数据和数据捆绑存储的原子性保证的方法和系统 | |
EP3338193B1 (en) | Convertible leaf memory mapping | |
US11567860B2 (en) | Memory system for updating mapping information | |
US20210303153A1 (en) | Method, device and computer program for data storage | |
CN116134519A (zh) | 存储器装置中的平衡的三层级读取干扰管理 | |
US11385833B2 (en) | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources | |
US10824554B2 (en) | Method and apparatus for efficiently sorting iteration with small sorting set | |
US10268399B2 (en) | Memory system using message monitoring and first and second namespaces | |
US11461173B1 (en) | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement | |
US11709781B2 (en) | Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same | |
US11934264B2 (en) | ECC parity biasing for Key-Value data storage devices | |
US12141074B2 (en) | Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same | |
US11476874B1 (en) | Method and system for facilitating a storage server with hybrid memory for journaling and data storage | |
US20240143512A1 (en) | Write buffer linking for easy cache reads | |
TW202321921A (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 |
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 |