CN110795272B - 用于在可变大小的i/o上促进的原子性和延迟保证的方法和系统 - Google Patents
用于在可变大小的i/o上促进的原子性和延迟保证的方法和系统 Download PDFInfo
- Publication number
- CN110795272B CN110795272B CN201910711532.9A CN201910711532A CN110795272B CN 110795272 B CN110795272 B CN 110795272B CN 201910711532 A CN201910711532 A CN 201910711532A CN 110795272 B CN110795272 B CN 110795272B
- Authority
- CN
- China
- Prior art keywords
- page
- data
- partial
- parity
- valid data
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- 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
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/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/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Abstract
本申请提供用于在可变大小的I/O上促进的原子性和延迟保证的方法和系统。一个实施例促进数据存储。在操作期间,系统选择要在垃圾收集过程中回收的非易失性存储器的第一页面。系统确定第一页面是包括有效数据和无效数据的第一部分页面。该系统将来自第一部分页面的有效数据与来自第二部分页面的有效数据组合以形成第一完整页面,其中完整页面与非易失性存储器中的物理页面对齐。该系统将第一完整页面写入非易失性存储器的第一新分配的物理页面。
Description
相关的申请
本申请要求于2018年8月2日提交的发明人为Shu Li、名称为“Method of SystemAtomicity Enforcement and Access Latency Assurance on Randomly Variable I/OSize”的美国临时申请第62/713,921号的权益,该申请的代理人案号为ALI-A14227USP,该申请的公开内容全部通过引用方式合并于此。
背景
技术领域
本公开一般地涉及数据存储领域,更具体地,本申请涉及用于在可变大小的输入/输出(I/O)请求上促进原子性和延迟保证的方法和系统。
背景技术
互联网和电子商务的普及,持续产生了大量的数字内容。各种存储系统和服务器不断被创建以访问和存储这些数字内容。在云存储系统或集群存储系统中,多个应用程序可以共享底层系统资源(例如,存储设备的资源)。对于系统性能和满足任何服务质量(Qos)的要求而言管理存储设备的资源都是至关重要的。当前应用程序可能需要写入不与物理介质的物理单元大小对齐的大小的数据(“可变大小的数据”或“可变大小的I/O”)。例如,写入硬盘驱动器(HDD)的数据可能是不与HDD的物理扇区对齐的大小的主机I/O的一部分。在这种情况下,任何与当前扇区的不适配的数据都被分割到两个不同的物理扇区,例如,I/O的第一部分被写入第一页,附加零值的I/O的第二部分被写入第二页。由于HDD支持原地重写,所以后续数据可以在检索第二部分并去掉零之后在前一I/O结束之后直接写入,而不会在延迟方面损失太多。
然而,在不支持原地重写的SSD中,以这种方式写入可变大小的数据(例如将其分割到两个不同的物理页面)可能会导致一定程度的低效。并非采用HDD的原地重写,只能通过如下方式在SSD中写入后续数据:从原始物理页面检索附加零值的先前I/O的第二部分,去掉零值,附加下一个I/O的第一部分,将新的部分(先前I/O的第二部分以及下一个I/O的第一部分)写入新的物理页面。这会导致增加的写入放大以及大量的“部分”页面,例如包含有效数据和无效数据的页面。大量的部分页面会更为频繁地触发垃圾收集过程,因而降低SSD的性能,增加NAND闪存的磨损。此外,这种在SSD中写入可变大小的数据的方式会导致用户存储空间减少。
因此,尽管允许原地重写的HDD可以跨不同的物理扇区写入可变大小的I/O,但是在SSD中写入可变大小的I/O仍然存在不支持原地重写的一些挑战。
发明内容
一个实施例促进数据存储。在操作过程中,系统选择在垃圾收集过程中要回收的非易失性存储器的第一页面。所述系统确定第一页面为包含有效数据和无效数据的第一部分页面。系统将来自第一部分页面的有效数据与来自第二部分页面的有效数据组合以形成第一完整页面,其中所述完整页面与非易失性存储器中的物理页面对齐。系统将第一完整页面写入非易失性存储器的第一新分配的物理页面。
在一些实施例中,第一部分页面还包括与有效数据和无效数据对应的噪声奇偶校验。所述系统检测垃圾收集过程中允许噪声的设置。所述系统从第一部分页面读取有效数据。系统从第二部分页面读取有效数据,其中来自第二部分页面的有效数据对应于第二部分奇偶校验。系统将第二部分奇偶校验与噪声奇偶校验累加。
在一些实施例中,系统将来自第一部分页面的读取的有效数据和噪声奇偶校验发送到奇偶校验累加模块。系统确定来自第二部分页面的有效数据。系统通过用零值填充对齐来自第二部分页面的有效数据。系统对来自第二部分页面的有效数据进行编码以获得第二部分奇偶校验,其中第二部分奇偶校验和噪声奇偶校验通过奇偶校验累加模块累加。
在一些实施例中,来自第二部分页面的有效数据与主机写操作、后台写入过程或垃圾收集过程相关联。
在一些实施例中,响应于确定第一页面为充满有效数据的第二完整页面:系统从第二完整页面读取有效数据;系统将所述读取数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;并且系统将传输的数据写入第二新分配的物理页面。
在一些实施例中,响应于检测垃圾收集过程中不允许噪声的设置:系统从要回收的第二页面读取所有数据;系统基于纠错码(ECC)在第二页面执行解码和编码。
在一些实施例中,响应于确定第二页面是充满有效数据的第二完整页面:系统从第二完整页面读取原始数据;该系统基于ECC对读取的原始数据进行解码以获得ECC解码数据;该系统基于ECC对ECC解码数据进行编码以获得ECC编码数据;系统传输ECC编码数据到第二新分配的物理页面的NAND平面的页面缓冲区;并且系统将传输的数据写入第二新分配的页面。
在一些实施例中,响应于确定第二页面为包含有效数据、空的空间、和与第三部分页面的有效数据相对应的第三部分奇偶校验的第三部分页面:系统从第三部分页面读取原始数据;该系统通过填充零值对从第三部分页面读取的数据进行对齐;该系统基于ECC对从第三部分页面读取的数据进行解码以获得ECC解码数据;该系统基于ECC对ECC解码数据进行编码以获得包括更新的第三部分奇偶校验的ECC编码数据;系统将第三部分页面的ECC编码数据发送到奇偶校验累加模块;该系统将来自第三部分页面的有效数据与来自第四部分页面的有效数据组合而形成第三完整页面,其中来自第四部分页面的有效数据对应于第四部分奇偶校验;系统通过奇偶校验累加模块将第四部分奇偶校验与更新后的第三部分奇偶校验累加;系统将第三完整页面中的数据传输到非易失性存储器的第二新分配页面的NAND平面的页面缓冲区;系统将传输的数据写入第二新分配的物理页面。
附图说明
图1示出了根据本申请的实施例的促进数据存储的示例性环境。
图2示出了与现有技术一致的促进数据存储的示例性环境。
图3A示出了根据本申请的实施例的促进数据存储(包括压缩和处理可变大小的I/O)的示例性环境。
图3B示出了根据本申请的实施例的促进数据存储(包括压缩和处理可变大小的I/O)的示例性环境。
图4示出了根据本申请的实施例的包括奇偶校验累加的促进数据存储的示例环境。
图5示出了根据本申请的实施例的促进数据存储(包括处理来自主机写操作和垃圾收集或后台写入过程的数据)的环境。
图6A示出了根据本申请的实施例的包括在垃圾收集期间在完整页面上ECC编码/解码的固态驱动器的示例性架构。
图6B示出了根据本申请的实施例的包括在垃圾收集期间部分页面上消除ECC编码/解码的奇偶校验累加模块的固态驱动器的示例性架构。
图7提供了图示出根据本申请的实施例的促进数据存储(包括处理可变大小的I/O和奇偶校验累加)的示例环境的示图。
图8A提供了根据本申请的实施例的促进数据存储的方法的流程图。
图8B提供了根据本申请的实施例的促进数据存储的方法的流程图。
图8C提供了根据本申请的实施例的促进数据存储的方法的流程图。
图8D提供了根据本申请的实施例的促进数据存储的方法的流程图。
图9提供了根据本申请的实施例的促进数据存储的方法的流程图。
图10示出了根据本申请的实施例的促进数据存储的示例性计算机系统。
图11示出了根据本申请的实施例的促进数据存储的示例性装置。
在图中,相同的附图标记指代相同的附图元素。
具体实施方式
提供以下描述以使使任何本领域技术人员能够制造和使用所述实施例,并在上下文中提供特定应用及其需求。对本领域技术人员而言所公开的实施例的各种修改是显而易见的。在不脱离本发明的精神和范围内,本发明中定义的一般原则可以应用于其他实施例和应用。因此,这里描述的实施例不限于所示的实施例,而是与符合本文公开的原理和特征的最宽范围相一致。
综述
本实施例提供一种系统,该系统解决在处理可变大小的I/O请求时确保原子性和延迟的问题。如上所述,当前应用程序可能需要写入不与物理介质的物理单元大小对齐的大小的数据(“可变大小的数据”或“可变大小的I/O”)。例如,写入HDD的数据可能是不与HDD的物理扇区对齐的大小的主机I/O的一部分,在这种情况下,任何与当前扇区的不匹配的数据都被分割到两个不同的物理扇区中,例如,I/O的第一部分写入到第一页面,附加零值的I/O的第二部分写入到第二页面。由于HDD支持原地重写,因此可以在检索第二部分并去掉零值后,在前一个I/O结束后直接写入后续数据,不会在延迟方面损失太多。
然而,在不支持原地重写的SSD中,以这种方式(例如,将其分割到两个不同的物理页面)写入可变大小的数据可能会导致一定程度的低效。并非采用HDD的原地重写,只能通过如下方式在SSD中写入后续数据:从原始物理页面检索附加零值的前一个I/O的第二部分,去掉零值,附加下一个I/O的第一部分,并将所述新部分(具有前一个I/O的第二部分以及下一个I/O的第一部分)写入新的物理页面。这可能导致增加写入放大,以及大量的“部分”页面,即,包含有效数据和无效数据的页面。大量的部分页面可以触发更频繁的垃圾收集过程,因而降低SSD的性能,并增加其NAND闪存的磨损。此外,这种在SSD中写入可变大小的数据的方式会导致用户存储空间的减少。
本文描述的实施例通过提供一个系统来解决这些挑战,该系统压缩可变大小的数据,以便将其放置到一个新的物理页面上,而不是将可变大小的I/O分割到两个单独的页面上。通过减少所涉及的页面数量(从两个页面减少到一个页面),系统可以确保事务中的原子性,从而可以改进写入和随后访问可变大小的I/O所涉及的延迟,如下有关图3B的描述。
此外,本文描述的实施例利用奇偶校验累加模块,其可以存储与来自多个部分页面的有效数据对应的增量奇偶校验,而且可以进一步将这些多个增量奇偶校验与相应的有效数据累加以形成一个与非易失性存储器(例如,SSD的NAND闪存)的物理页面对齐的完整页面。通过以该方式写入整个完整页面,本文描述的实施例可以减少数据存储中涉及的写入放大。如下有关图4和图7的描述。本文描述的实施例还可以另外处理通过允许“有噪声的”垃圾收集过程而回收的数据,同时基于错误纠正码(ECC)避免编码/解码的开销,如下有关图5、6A和6B中的描述。
因此,本文描述的实施例提供了一种系统,该系统改进并提高了存储系统的效率和性能。通过利用压缩,将传入的I/O放在新的物理页面中,而不是在两个页面上分割,一次累加奇偶校验填充和写入整个完整页面,并使用有噪声的垃圾收集,系统以多种方式提供了改进和增强。首先,该系统可以提供减少的写入放大,其可以导致SSD的NAND的寿命增加。其次,与传统系统相比,系统可以较低频率地触发垃圾收集,这可以提高SSD的性能。第三,系统可以更有效地对利用空间进行优化,为用户提供更大的存储容量。这有益于产生得到改进并且效率更高的存储系统。
“原子性”一词指的是每个事务不可分割和不可约的一系列的操作的特征,这样要么事务中的所有操作都发生,要么事务中什么都没有发生。术语“原子性保证”指确保这样的事务以保证事务的原子性或不可分割性的方式执行。术语“延迟保证”是指确保I//O请求的延迟满足预定的阈值,该阈值可以在服务级别协议(SLA)中定义,基于QoS需求或其他需求定义。
术语“存储设备”和“存储驱动器”是指具有可写入或存储数据的物理介质的设备或驱动器。存储设备的一个例子是具有诸如与非(NAND)闪存之类的非易失性存储器的固态驱动器(SSD)。术语“存储系统”是指具有一个或多个存储设备或驱动器的设备或系统。
术语“部分页面”是指同时包含有效数据和无效数据的页面。术语“完整页面”是指充满有效数据的页面。
术语“奇偶校验累加模块”是指能够执行包括与图5和图6B相关的此处描述的所述操作的单元、组件或模块。
术语“部分奇偶校验”是指与存储在各自及相应的物理页面中的部分数据相对应的奇偶性。
术语“增量奇偶校验”是指与多个部分页面的有效数据相对应的奇偶性。在本公开中,奇偶校验累加模块可以多个增量奇偶校验和部分奇偶校验与它们对应的有效数据累加,形成与非易失性存储器的物理页面对齐的完整页面。
示例性环境及网络
图1示出了根据本申请的实施例一个促进数据存储的示例性环境100。环境100可以包括服务器102,服务器102可以是存储设备或具有多个存储驱动器的计算设备。每个存储驱动器,如固态驱动器(SSD)或硬盘驱动器(HDD),可以包括一控制器和用于数据存储的多个物理介质。例如,SSD可以包含用于存储的NAND物理介质,而HDD可以包含具有多个存储轨道的物理介质。服务器102可以通过网络与客户端计算机设备(未显示)通信。服务器102也可以是包含多个存储服务器且用于与多个客户端服务器(未显示)通信的分布式存储系统的一部分。
服务器102可以包括:网络接口卡(NIC)104、中央处理器(CPU)106、动态随机存取存储器双内联存储模块(DRAM DIMM)108、硬盘驱动器(HDD)112和116(分别配有控制器114和118)以及固态驱动器(SSD)120和124(分别配有控制器122和126)。
控制器可以包括接入主机和接入非易失性存储器的接口,以及用于处理数据的模块。例如,在SSD 120中,SSD控制器122可以包括:主机接口130、循环冗余校验(CRC)模块132、加密模块134、压缩模块136、纠错(ECC)编码模块138、奇偶校验累加模块140、NAND通道管理接口142、ECC解码模块144、解压模块146、解密模块148和CRC模块150。在操作期间中,SSD控制器可以处理要通过主机接口130存储的数据。数据可以被压缩,从而提高SSD的存储容量的效率,如关于图3A的以下描述。进一步地,系统可以通过在新的物理页面存储可变大小的I/O,而不是将所述可变大小的I/O在两个单独的页面上分割,将可变大小的I/O保持在一起。这可以确保事务中的原子性,并且通过如下有关图3B所示的将所涉及的页面数量从两页减少到一页,可以进一步改进延迟(对于写入和后续访问可变大小的I/O)。
奇偶校验累加模块140可以存储来自多个部分页面的有效数据对应的增量奇偶校验,并且可以将这些多个增量奇偶校验与其相应的有效数据累加以形成完整页面,该完整页面与非易失性内存(例如,SSD的NAND闪存)的物理页面对齐。奇偶校验累加模块140可以将形成的完整页面发送到NAND通道管理接口142。通过这种方式写入整个完成页面,本文描述的实施例减少了数据存储中涉及的写入放大,从而反过来导致改进和更高效的整体存储系统。与奇偶校验累加模块140相关的操作在下面关于图4与图7进行描述。
系统还可以处理在涉及奇偶校验累加模块140和NAND通道管理模块142的“有噪声”垃圾收集过程被回收的数据,同时避免ECC编码/解码(ECC编码模块138和ECC解码模块144),如与下面与图5,6A和6B相关的描述。
现有技术中可变大小I/O的数据存储
图2示出了与现有技术一致的促进数据存储的示例环境200。环境200可以包括具有盘片230的硬盘驱动器(HDD)250,盘片230可以包括多个轨道,比如轨道232。轨道232可以包括与逻辑单元或扇区对应的物理部分,包括逻辑单元1 202,逻辑单元2 204,逻辑单元3206,和逻辑单元4 208。轨道232可以包括来自可变大小的I/O的数据(例如,数据d1 212,数据d2 216,和数据d3 220),来自所述可变大小的I/O的数据使用高写入放大的过程来写入轨道232,如下文所述。可以使用原地重写将数据写到HDD 250(和轨道232)。
例如,在t0时间,系统可以跨越对应于轨道232的两个逻辑单元的物理部分执行写操作240:1)数据d1 212的第一部分(即,数据d1h 212.1)被写入逻辑单元1 202对应的物理部分;及2)数据d1 212的第二部分(即数据d1t 212.2)后面加零值214,被写入逻辑单元2204对应的物理部分。
随后,为了在t1时间写入数据d2 216,系统可以执行读取操作242以获得d1t212.2和零值214,并去掉零值214。在t2时间,系统可以执行写操作244,可以再次跨越相应于轨道232的两个逻辑单元的物理部分执行写操作244;1)将数据d2 216的第一部分(即,数据d2h 216.1)被附加至逻辑单元2 204相应的物理部分中的d1t 212.2;及2)数据d2 216的第二部分(即数据d2t 216.2)被附加零值218,并被写入逻辑单元3 206相应的物理部分。
随后,为了在t3时间写入数据d3 220,系统可以执行读取操作246以获得d2t216.2和零值218,并去掉零值218。在t4时间,系统可以跨越与轨道232的逻辑单元相对应的物理部分执行写操作248:1)所有数据d3220附加到逻辑单元204对应的物理部分中的d2t216.2;2)由于数据d3 220是一个可变大小的I/O,它与轨道232的逻辑单元对应的物理扇区不对齐,因此系统可以附加零值222来形成完整的数据页,并将数据d2t 216.2、数据d3 220和零值222写入到逻辑单元3 206对应的物理部分。
因此,在t5时间,HDD 250的盘片230中的轨道232可以包含已基于原地重写被写入的数据,结果是:数据d1h 212.1、d1t 212.2、数据d2h 216.1、d2t 216.2,数据3 220。
然而,使用上述跨多个页面放置数据的方式将数据写入SSD由于SSD不支持原地重写会导致几方面的低效。从以便随后追加新数据的原始物理位置读出的数据被写入新的物理位置,这导致了几个缺点。例如,在一个SSD中,并非执行读操作242和后续的写操作244,SSD控制器从第一(原始)物理位置280执行读操作来读取d1t 212.2和零值214,然后随后执行后续写操作以将数据d1t 212.2和数据d2h 216.1写入第二物理位置282。类似地,并非执行读操作246和随后的写操作248,SSD控制器从第一(原始)物理位置284执行读操作读取d2t 216.2和零值218,然后执行后续的写操作以将数据d2t 216.2、数据d3 220和零值222写入第二物理位置286。
如图2所示,用于可变大小I/O对齐写入的附加零值会导致造成一些必须回收的物理页面的一些碎片或部分(例如,如在原始物理位置280和284的对角阴影数据区域指示的),这会造成多方面的低效。第一,显著的写入放大会导致非易失性内存和SSD本身的寿命缩短。其次,要回收数据的碎片或部分数量的增加会频繁触发垃圾收集,这会影响SSD性能并且增加磨损调平。第三,对空间的次优利用可能导致用户存储容量的减少。
本文描述的实施例提供利用压缩解决这些低效的系统,将可变大小的I/O放置在单个页面(而不是跨越两个单独的页面),实现奇偶校验累加模块,允许增量奇偶校验和高效的空间利用率,并允许物理页面从主机写操作和后台写/垃圾回收操作被填充。
用于促进数据存储,包括压缩和存储可变大小的I/O的示例环境
图3A举例说明了根据本申请的实施例的促进数据存储的示例环境300,促进包括压缩和处理可变大小I/O的数据存储。环境300可以包括物理页面310和311。可变大小的I/O可以以连续的方式放置在物理页面310和311中,例如,数据D1 312、数据D2 314、数据D3316和数据D4 318。该系统可以压缩数据D5 320(通过压缩操作328),在数据D4 318之后将数据D5 321(压缩后)存储到物理页面310中,所述系统还可以存储包括零值、奇偶校验信息或其他数据的尾部数据322。需要注意的是任何或所有数据D1-D4都可以在放入物理页面310之前类似地进行压缩。随后,数据D6 324可以放在物理页面311等中。因此,环境300示出了系统如何压缩数据以更有效地利用物理页面中的空间。
图3B举例说明了根据本申请的示例性的环境330,该环境330促进包括压缩和处理可变大小的I/O的数据存储。环境330可以包括物理页面340和341。可变大小的I/O可以按顺序压缩且放置到物理页面340和341中,例如数据D1 342、数据D2 344、数据D3 346、和数据D4 348。该系统可以压缩数据D5(未显示)获取数据D5(压缩后)350,并在存储数据D5(压缩后)350的物理页面340中确定不足的空间(通过不足空间操作358)。并非将数据D5(压缩后)350在两个物理页面分割,系统可以将尾部数据352存储在物理页面340中,并将全部数据D5(压缩后)350写入物理页面341。随后,数据D6 354可以放在物理页面341等中。因此,环境300说明了系统如何压缩数据(例如,(I/O)),以及如何将不适合单个物理页面剩余空间的任何可变大小的I/O存储在新的物理页面中。正如环境300中,环境330说明了系统如何更有效地利用物理页面中的空间,从而解决了现有技术的缺点和低效性。
本文描述的实施例提供了这样一种系统,该系统:减少写入放大的系统,从而可延长寿命;减少要回收的数据的碎片或部分的数量,从而减少触发垃圾收集的频率和减少磨损调平;并增加了空间利用的优化,可以提高用户的存储容量。
奇偶校验累加
在信息论中,一般规律是纠错码(ECC)的码字长度越长,纠错能力越强。一个典型的约定是将单个物理页面划分为多个部分,并将每个部分编码为ECC码字。因此,使用传统方法处理可变大小的I/O可能需要使用多个ECC码字,由于解码多个ECC码字所需的时间较长,这可能导致较长延迟。
本文描述的实施例通过使用累加奇偶校验将每个物理页面编码为单个ECC码字来解决此问题。图4示出了根据本申请实施例的促进包括奇偶校验累加的数据存储的示例性环境400。环境400指示可以包含用户数据402和奇偶校验数据404的奇偶校验矩阵。在t0时间440,系统可以写入数据ul 412及其对应的奇偶校验pl 422。在t1时间442,系统可以写入数据u2 414及其对应的奇偶校验p2 424。在t2 444时间,系统可以写入数据u3 416及其对应的奇偶校验p3 426。随后。系统可以写入一个尾部418,并可以形成一个完整的与SSD的非易失性内存的物理页面对齐的物理页面。即,在t3时间446,系统可以形成一个完整的物理页面,包括:数据ul 412、数据u2414、数据u3 416、和尾部数据418以及累加奇偶校验(“a/p”)430。累加奇偶校验430可以由例如图1、图6A和图6B的奇偶校验累加模块140计算或生成,并且可以包含一个如下关于图7所描述的噪声奇偶校验。也就是说,累加奇偶校验430可以包含pl+p2+p3。
因此,环境400描述了系统如何使用奇偶校验累加模块停止和恢复数据存储,包括在任意时刻附加可变大小的I/O。例如,在环境400中,如果数据u2是最后一个传入的块,那么系统可以生成相应的奇偶校验p2,并将p2和当前的奇偶校验p1累加(获得pl+p2),其可以被写入页面以完成ECC编码。由于NAND闪存是在页面级读取的,所以系统可以解码整个ECC码字来检索用户字节。因此,需要更少的奇偶校验位,这就为容纳用户比特(例如,用户数据402)提供了更多的空间。同样,当数据u3是最后一个传入的块时,系统可以生成相应的奇偶校验p3,并将p3与当前的奇偶校验p1+p2累加(获得pl+p2+p3)。通过以这种增量方式累加奇偶校验,系统可以提供一个增强的ECC,同时避免数据分块,从而允许在数据存储时任意停止和恢复。
此外,如上有关图1的描述,SSD控制器可以包括内部压缩模块136和内部解压模块146。需要注意的是,压缩和解压缩操作发生在数据路径中。在传统的系统中,当对齐大小的I/O(例如,与物理页面大小对齐的数据,如4千字节或512字节)在压缩后不再维持同样的对齐大小时,导致可变大小的I/O,存储之前压缩数据导致在元数据管理上的开销。然而,由于本文中描述的实施例专门考虑可变大小的I/O,并且SSD控制器的设计以及与NAND内存的交互已经处理了可变大小的I/O,因此本文中描述的实施例中的压缩所造成的开销微不足道。
来自主机写入和垃圾收集过程的实时页面填充的示例
垃圾收集是后台写操作中的最多消耗资源之一。在垃圾回收过程中,系统可以识别要回收的块。识别的块的每个页面可以包括有效数据和无效数据。如果要回收的各个页面包含有效数据,则系统必须在擦除识别的块(及其构成页面)之前复制或移动该有效数据到另一个位置。下面描述的实施例使用后台写I/O来填充SSD物理页面中的空位置,以便更有效地利用SSD的非易失性内存的空间。
图5示出了根据本申请的促进数据存储(包括处理来自主机写操作和垃圾收集或后台写过程)的环境500。在操作期间,SSD(通过其控制器)可以接收来自传入的主机写操作(例如,主机写入580,这可以是一个包括数据D5 545和数据D6 546的数据流)和后台操作(例如,垃圾收集/后台写入582,包括来自垃圾收集块508和510的各个页面的数据)两者的写操作。
系统可以通过将接收的数据放在物理页面560、561和562中,来处理来自主机写入580和后台写入582的数据,并优先处理从主机写入580接收到的数据。在放置或写入数据D1541、数据D2 542、数据D3 543和数据D4 544后,系统可以确定没有足够的空间放置或写入数据D5 545(如物理页面560上虚线包围的数据D5 545所示),而且有足够的空间来写入来自垃圾收集块510的数据G1 511。系统可以将数据G1 511放置在物理页面560中,将数据D5545放置在另一个物理页面(如物理页面561)中。在写入数据G1 511后,系统不一定要写入数据D5 545;实际上,系统可以在不同的物理页面上分别启动和结束。
此外,环境500还描述了当主机I/O暂停时(即,当检测到来自主机I/O的当前数据流的末尾时),系统可以通过放置经由后台写入582接收到的数据来继续利用未使用的时间间隙并在SSD的非易失性内存中完成打开的页面和打开的块。例如,如果主机写入580在数据D6 546后暂停或停止,并且系统已经成功地将数据D6 546放置在物理页面561,系统可以将数据G2 512、数据G3 514和数据G4 517写入物理页面561(也可以将数据Gk 524写入物理页面562)。
因此,本发明实施例所述的系统可以协调主机写入流与后台写入以有效利用SSD非易失性内存中的空间,以提高SSD本身以及整个存储系统的性能。
固态驱动器中后台写入的三种示例性模式;利用奇偶校验累加处理可变大小I/O
图6A提供了根据本申请的实施例的包括在垃圾收集期间在整个页面上的ECC编码/解码的固态驱动器的示例架构600。架构600可以包括SSD 120的SSD控制器122,如上述有关图1的描述所示。NAND通道管理接口142可以连接到SSD 120的非易失性内存,如NAND管芯612、614、616、618、620和622。在操作期间,系统可以通过从(NAND管芯620的)旧页面621中复制出数据并将复制出的数据放到(NAND管芯622的)新页面623中来执行垃圾收集过程。这个过程包括几个步骤。系统通过从NAND管芯620(通过通信630借助NAND接口142)检索数据来从旧页面621读取原始数据(有效数据和无效数据)。系统将读取的数据发送到ECC解码模块144进行ECC解码,去除任何无效数据中的噪声(通过通信632),然后将ECC解码的数据发送到ECC编码模块138进行ECC编码(通过通信634)。然后系统将ECC编码的数据发送到NAND接口142(通过通信636),以将其写入新页面623(通过通信638)。
但是,如果要回收的已识别数据页面(如页面621)包括有效数据和无效数据(如“部分页面”),则意味着要回收的数据不包括整个ECC码字。因此,上述操作(通过通信630-638)在整个ECC码字上执行,实际上,只有与ECC码字相关的部分数据需要回收。这可能导致延迟增加和写入放大。
需要注意的是,图6A中描述的后台写操作是将数据从一个NAND管芯移动到另一个NAND管芯,最终目的是以随后主机访问时成功地读出数据为条件放置数据。因此,只要噪声在一个可容忍的范围内(例如,在一个预定的阈值内),就无需总是为每个后台写入获取无错误的数据。该系统可以具有有噪声的垃圾收集是开还是关的指示,并且可以检测在垃圾收集过程中允许有噪声的条件或设置。
图6B提供了根据本申请的实施例的包括在垃圾收集期间消除部分页面上的ECC编码/解码的奇偶校验累加模块的固态驱动器的示例架构640。在操作期间,系统可以读出整个物理页面并将该整个物理页面中的数据写到另一个物理页面。这是一种不涉及任何错误纠正的直接的直线移动,如通信666中的虚线所示。系统仅需要将任何逻辑块地址(LBA)更新为闪存转换层(FTL)中的物理块地址(PBA)映射。
但是,如果系统确定要读出的页面是部分页面(包含有效数据和无效数据),则系统可以仅回收有效数据。并非对要回收的部分页面的整个相关码字进行解码,系统可以删除无效数据,但是在奇偶校验中保留无效数据的对应奇偶校验。这种保留的奇偶校验可以被称为附加奇偶校验并会导致对页面总的“噪声”奇偶校验。这种产生噪声的额外的奇偶校验可以在随后操作中的错误纠正中移除。
在操作期间,系统可以确定页面641是包括有效数据、无效数据、以及与有效数据和无效数据对应的噪声奇偶校验的第一部分页面。该系统可以通过检索来自NAND管芯620(通过通信650借助NAND接口142)的噪声校验和数据来从部分页面621中读取有效数据。该系统可以将读取到的带噪声奇偶校验的有效数据发送到奇偶校验累加模块140(通过通信652)。奇偶校验累加模块140可以执行有关图4和以下关于图7所述的操作。即,奇偶校验累加模块140可以:从第二部分页面读取有效数据及其对应的奇偶校验;将第二部分奇偶校验与噪声奇偶校验累加;并将来自部分页面641的有效数据与来自第二部分页面的有效数据以及带噪声的奇偶校验组合在一起,形成完整页面,这里的完整页面与SSD的非易失性内存中的物理页面对齐。奇偶校验累加模块140可以发送完整页面到NAND接口142(通过通信654),NAND接口142可以将完整页面写到NAND管芯622的新页面643(通过通信656)。
图7示出了根据本申请实施例的促进数据存储的示例性环境700,数据存储包括处理可变大小的I/O和奇偶校验累加。所述环境700在t0时间750可以包含一页面数据。该页面可以是与上面描述的与图6B相关的部分页面641对应的部分页面。此部分页面可以包含数据ul 710、数据u2 712、数据u3 714、尾部数据716和奇偶校验数据720(包括pl+p2+p3)。数据u3可以被标记为无效715。该系统在时间t1 754可以执行去掉无效数据功能752。该系统还可以在t2时间758在数据u4 718上执行填补/对齐/编码新数据功能756,从而可能产生一个包含零值722、数据u4 718、零值724、和奇偶校验728(其中包括p4)的物理页面。系统可以随后在t3时间762执行累加奇偶校验功能760,从而生成一个包括:数据ul 710、数据u2712、数据u4 718、尾部数据722以及奇偶校验730(包括pl+p2+p3+p4)的完整物理页面。需要注意的是,奇偶校验730被认为是有噪声的奇偶校验,由于它仍然包含与之前删除的无效数据u3 714对应的奇偶校验p3。在奇偶校验730中的p3产生的额外噪声可以在后续的纠错过程中消除。
促进数据存储的示例方法
图8A提供了一种根据本申请的实施例的用于促进数据存储的方法的流程图800。在操作期间,系统接收要存储在存储设备的非易失性内存中的第一数据(操作802)。系统处理所述第一数据,包括如上所述CRC、加密、压缩、ECC编码、和奇偶校验累加。例如,系统压缩第一数据以获得压缩后的第一数据(操作804)。如果压缩后的第一数据的大小小于第一(或当前)物理页面中的剩余大小(判定806),则系统将压缩后的第一数据放入第一物理页面(操作808)。系统为压缩后的第一数据生成奇偶校验(操作810),并将压缩后的第一数据的奇偶校验与第一物理页面的当前奇偶校验累加(操作812)。操作在判定820继续进行。
如果压缩后的第一数据的大小不小于第一物理页面中的剩余大小(判定806),则系统将压缩后的第一数据放入具有足够空间的第二物理页面中(操作814)。系统为压缩后的第一数据生成奇偶校验(操作816),并将压缩后的第一数据的奇偶校验与第二物理页面的当前奇偶校验累加(操作818)。操作在判定820继续进行。
如果系统没有检测到将第一或第二物理页面写入非易失性内存的条件(判定820),则操作将在操作802处继续。如果系统确实检测到将第一或第二物理页面写入非易失性内存的条件(判定820),系统将数据从第一或第二物理页面写入非易失性内存(操作822),操作在图8B的标签A处继续进行。
图8B示出了一种根据本申请的实施例的用于促进数据存储的方法的流程图830。在操作期间,系统选择要回收的非易失性内存的块(操作832)。该块可以包括多个页面。如果系统没有检测到允许有噪声的垃圾收集的设置或条件(判定834),操作在图8C的标签B处继续进行。
如果系统确实检测到允许有噪声的垃圾收集的设置或条件(判定834),系统将确定所选块的第一页面是完整页面还是部分页面(判定836)。即,系统确定第一页面是包含有效数据的完整页面,还是包含有效数据和无效数据的部分页面。如果第一页面是完整页面(判定836),系统将从第一完整页面读取数据,其中第一完整页面包含有效数据(并且只填充有效数据)(操作838)。系统直接将读取的数据传输到新分配的页面的NAND平面的页面缓冲区(操作840),并将从第一页面传输的数据写入新分配页面的物理位置(操作852)。操作返回。
如果第一页面是部分页面(判定836),则系统从第一部分页面读取数据,其中第一部分页面包括有效数据、无效数据、以及与有效数据和无效数据对应的噪声奇偶校验(操作842)。系统将有效数据和有噪声的奇偶校验从第一部分页面发送到奇偶校验累加模块(操作844)。系统将来自第一部分页面的有效数据与来自第二部分页面的有效数据组合以形成第一完整页面,其中来自第二部分页面的有效数据对应于第二部分奇偶校验(操作846)。来自第二部分页面的有效数据可以与主机写操作或后台写操作相关联,如上面关于图5的描述所示。系统通过奇偶校验累加模块,将第二部分奇偶校验与有噪声的奇偶校验累加(操作848)。系统将数据从第一完整页面传输到新分配页面的NAND平面的页面缓冲区(操作850)。即,系统将组合的有效数据和与第一完整页面对应的累加奇偶校验传输到页面缓冲区。系统将传输的数据从第一页面写入新分配页面的物理位置(操作852)。操作返回。
图8C示出了一种根据本申请的实施例的用于促进数据存储的方法的流程图860。在操作过程中,系统读取要回收的选择块的第二页面的整个页面,并在整个第二页面执行ECC解码和编码(操作862),如以上有关图6A的描述。系统确定所选块的第二页面是完整页面还是部分页面(判定864)。如果所选块的第二页面是部分页面(判定864),则在图8D的标签C处继续操作。
如果所选块的第二页面是完整页面(判定864),则系统从第二完整页面读取原始数据(操作866)。系统基于ECC对读取的原始数据进行解码,得到ECC解码数据(操作868)。系统基于ECC对ECC解码数据进行编码,得到ECC编码数据(操作870)。系统将ECC编码数据传输到第二新分配的页面的NAND平面的页面缓冲区(操作872),并将传输的数据写入第二新分配的页面的物理位置(操作874)。操作返回。
图8D提供了一种根据本申请的实施例的用于促进数据存储的方法的流程图。在操作过程中,系统从第二页面读取原始数据,其中第二页面为第三部分页面,包括有效数据、空的空间和与第三部分页面中的有效数据对应的第三部分奇偶校验(操作882)。系统通过填充零值对齐来自第三部分页面的读取数据(操作884)。系统基于ECC对第三部分页面进行解码,得到ECC解码数据(操作886)。该系统对ECC解码数据进行编码,以获得包括更新的第三部分奇偶校验的ECC编码数据(操作888)。系统将第三部分页面的ECC编码数据发送到奇偶校验累加模块(操作890)。系统将来自第三部分页面的有效数据与来自第四部分页面的有效数据组合,形成第三完整页面,其中来自第四部分页面的有效数据对应于第四部分奇偶校验(操作892)。来自第四部分页面的有效数据可以与主机写操作或后台写操作关联。
系统将第四部分奇偶校验与更新的第三部分奇偶校验累加(操作894)。系统将数据从第三完整页面传输到第二新分配页面的页面缓冲区(操作896)。从第三完整页面传输的数据可以包括组合的数据和累加奇偶校验。系统将传输的数据写入第二新分配页面的物理位置(操作898),然后操作返回。
图9提供了一种根据本申请的实施例的用于促进数据存储的方法的流程图900。在操作期间,系统选择在垃圾收集过程中要回收的非易失性存储器的第一页面(操作902)。系统确定第一页面是包含有效数据和无效数据的第一部分页面(操作904)。系统将来自第一部分页面的有效数据与来自第二部分页面的有效数据组合以形成第一完整页面,其中完整页面与非易失性存储器中的物理页面对齐(操作906)。系统将第一完整页面写入非易失性存储器的新分配的物理页面(操作908),然后操作返回。
示例性计算机系统
图10示出了一个根据本申请的实施例的促进数据存储的示例性计算机系统1000。计算机系统1000包括处理器1002、易失性内存1004、非易失性内存1006和存储设备1008。计算机系统1000可以是计算设备或存储设备。易失性内存1004可以包括作为受管理内存的内存例如RAM),并且可以用来存储一个或多个内存池。非易失性内存1006可以包括闪存或任何可用于持久存储的内存。计算机系统1000可以连接到显示设备1010、键盘1012和指点设备1014。存储设备1008可以存储操作系统1016、内容处理系统1018和数据1032。
内容处理系统1018可以包括指令,当指令由计算机系统1000执行时,可以导致计算机系统1000执行本公开中描述的方法和/或过程。例如,内容处理系统1018可以包括接收和传输数据分组的指令,包括读或写数据的请求、I/O请求、数据流、I/O、与主机写或后台写相关的数据、要检索、编码、对齐和存储的数据、和数据块或数据页面(通信模块820)。
内容处理系统1018可以进一步包括选择在垃圾收集过程(垃圾收集模块1022)中要回收的非易失性存储器的第一页面的指令。内容处理系统1018可以包含确定第一页面是包含有效数据和无效数据的第一部分页面的指令(垃圾收集模块1022)。内容处理系统1018还可以包括将来自第一部分页面的有效数据与第二部分页面的有效数据组合以形成第一完整页面的指令,其中完整页面与非易失性存储器的物理页面对齐(数据处理模块1024)。内容处理系统1018可以包含将第一完整页面写入非易失性存储器的第一新分配的物理页面的指令(数据写入模块1030)。
内容处理系统1018另外可以包含检测垃圾收集过程中允许噪声的设置的指令(垃圾收集模块1022)。内容处理系统1018可以包含从部分页面或完整页面读取有效数据和相应奇偶校验的指令(数据读取模块1028)。内容处理系统1018可以包含用于将第一奇偶校验和包含噪声奇偶校验的第二奇偶校验累加的指令(奇偶校验累加模块1026)。内容处理系统1018可以包含对齐、编码、填充、加密、解密、压缩、解压、ECC编码、ECC解码、CRC校验及处理数据的指令(数据处理模块1024)。
数据1032可以包括由本公开描述的方法和/或过程描述的任何需要作为输入或者生成作为输出的数据。特别地,数据1032可以至少存储:存储,写入,加载,移动,检索,访问,删除,编码,对齐,回收,刷新,检查,或复制的数据;元数据;数据流;逻辑扇区、数据块或数据页;物理扇区、数据块或数据页;I/O;主机I/O;主机写请求;后台写操作;垃圾收集过程;有效数据;无效数据;零值;有效数据的完整页面;包含有效数据和无效数据的部分页面;奇偶校验信息或数据;奇偶校验;部分奇偶校验;增量奇偶校验;噪声奇偶校验;噪声垃圾收集的指示、设置或条件;预定的阈值;累加奇偶校验;页面缓冲区或NAND平面或新分配的物理页面的指示符;以及纠错码(ECC)。
图11示出了根据本申请的实施例的促进数据存储的示例装置1100。装置1100可以包括多个可以通过有线、无线、量子光或电通信通道彼此通信的单元或装置。装置1100可以使用一个或多个集成电路来实现,并且可以包含比图11所示更少或更多的单元或装置。进一步地,装置1100可以集成在计算机系统中,或作为一个单独的能够与其他计算机系统和/或设备通信的设备实现。特别地,装置1100可以包括由执行类似于图10中计算机系统1000中模块1020-1030的功能或操作的单元1102-1112,包括:通信单元1102、垃圾收集单元1104、数据处理单元1106、奇偶校验校验累加单元1108、数据读取单元1110、以及数据写入单元1112。
本实施例中描述的数据结构和代码通常存储在计算机可读存储介质上,该计算机可读存储介质可以是任何可以存储代码和/或数据以供计算机系统使用的设备或介质。计算机可读存储介质包括,但不限于,易失性内存,非易失性内存,磁性和光学存储设备,如磁盘驱动器,磁带,CD(光盘),DVD(数字多功能光盘或数字视频光盘)或其他现在未知或后来发展起来的能够存储计算机可读介质的介质。
本实施例中描述的方法和过程可以体现为可以存储在上面描述的计算机可读存储介质中的代码和/或数据。当计算机系统读取和执行存储在计算机可读存储介质上的代码和/或数据时,计算机系统执行体现为数据结构和代码并存储在计算机可读存储介质中的方法和过程。
此外,上述方法和过程可以包含在硬件模块中。例如,硬件模块可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)和其他现在已知或后来开发的可编程逻辑设备。当硬件模块被激活时,硬件模块执行硬件模块中包含的方法和过程。
在此描述的上述实施例只用作说明及描述。它们并不是穷尽的或者用来将本文描述的实施例限制为本公开的形式。因此,许多修改和变化对于本领域的技术人员是显而易见的。此外,上述的公开不旨在限制这里描述的公开的实施例。这里描述的实施例的范围应由所附权利要求界定。
Claims (46)
1.一种促进数据存储的计算机实现方法,该方法包括:
选择在垃圾收集过程中要回收的非易失性存储器的第一页面;
确定所述第一页面为包含有效数据和无效数据的第一部分页面;
将来自所述第一部分页面的有效数据与来自第二部分页面的有效数据组合而形成第一完整页面,其中完整页面与非易失性存储器中的物理页面对齐;以及
将所述第一完整页面写入所述非易失性存储器的第一新分配的物理页面;
其中所述第一部分页面进一步包括:与所述有效数据和所述无效数据对应的噪声奇偶校验,以及其中所述方法进一步包括:
检测允许垃圾收集过程中噪声的设置;
从所述第一部分页面读取有效数据;
从所述第二部分页面读取有效数据,其中来自所述第二部分页面的有效数据对应于第二部分奇偶校验;以及
将所述噪声奇偶校验与所述第二部分奇偶校验累加。
2.根据权利要求1的方法,进一步包括:
将来自所述第一部分页面的所述读取的有效数据和所述噪声奇偶校验发送到奇偶校验累加模块;
确定来自所述第二部分页面的有效数据;
通过填充零值将来自所述第二部分页面的有效数据对齐;
对来自所述第二部分页面的有效数据进行编码,以获得所述第二部分奇偶校验;
其中,所述第二部分奇偶校验和所述噪声奇偶校验由所述奇偶累加模块累加。
3.根据权利要求1的方法,其中来自所述第二部分页面的有效数据与主机写操作、后台写入进程,或垃圾收集进程相关联。
4.根据权利要求1的方法,进一步包括:
响应于确定所述第一页面为填满有效数据的第二完整页面:
从所述第二完整页面读取有效数据;
将所述读取的数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的物理页面。
5.根据权利要求1的方法,进一步包括:
响应于检测在所述垃圾收集过程中不容许噪音的设定:
从要回收的第二页面读取所有数据;以及
在所述第二页面上,执行基于纠错码(ECC)的解码和编码。
6.根据权利要求5的方法,进一步包括:
响应于确定所述第二页面为充满有效数据的第二完整页面;
从所述第二完整页面读取原始数据;
基于ECC对所述读取的原始数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得ECC编码数据;
将所述ECC编码数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的页面。
7.根据权利要求5的方法,进一步包括:
响应于确定所述第二页面是包括有效数据、空的空间和与第三部分页面中的有效数据对应的第三部分奇偶校验的第三部分页面:
从所述第三部分页面读取原始数据;
通过填充零值将来自所述第三部分页面的读取数据对齐;
基于ECC对来自所述第三部分页面的读取数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得包括更新的第三部分奇偶校验的ECC编码数据;
将所述第三部分页面的所述ECC编码数据发送至奇偶校验累加模块;
将来自所述第三部分页面的有效数据与来自第四部分页面的有效数据组合而形成第三完整页面,其中来自所述第四部分页面的有效数据对应第四部分奇偶校验;
通过所述奇偶校验累加模块,将所述第四部分奇偶校验与更新的第三部分奇偶校验累加;
将所述第三完整页面中的数据传输到所述非易失性存储器的第二新分配的页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的物理页面。
8.一种促进数据存储的计算机实现方法,该方法包括:
选择在垃圾收集过程中要回收的非易失性存储器的第一页面;
确定所述第一页面为包含有效数据和无效数据的第一部分页面;
将来自所述第一部分页面的有效数据与来自第二部分页面的有效数据组合而形成第一完整页面,其中完整页面与非易失性存储器中的物理页面对齐;以及
将所述第一完整页面写入所述非易失性存储器的第一新分配的物理页面;
响应于确定所述第一页面为填满有效数据的第二完整页面:
从所述第二完整页面读取有效数据;
将所述读取的数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的物理页面。
9.根据权利要求8的方法,
其中所述第一部分页面进一步包括:与所述有效数据和所述无效数据对应的噪声奇偶校验,以及其中所述方法进一步包括:
检测允许垃圾收集过程中噪声的设置;
从所述第一部分页面读取有效数据;
从所述第二部分页面读取有效数据,其中来自所述第二部分页面的有效数据对应于第二部分奇偶校验;以及
将所述噪声奇偶校验与所述第二部分奇偶校验累加。
10.根据权利要求9的方法,进一步包括:
将来自所述第一部分页面的所述读取的有效数据和所述噪声奇偶校验发送到奇偶校验累加模块;
确定来自所述第二部分页面的有效数据;
通过填充零值将来自所述第二部分页面的有效数据对齐;
对来自所述第二部分页面的有效数据进行编码,以获得所述第二部分奇偶校验;
其中,所述第二部分奇偶校验和所述噪声奇偶校验由所述奇偶累加模块累加。
11.根据权利要求8的方法,其中来自所述第二部分页面的有效数据与主机写操作、后台写入进程,或垃圾收集进程相关联。
12.根据权利要求8的方法,进一步包括:
响应于检测在所述垃圾收集过程中不容许噪音的设定:
从要回收的第二页面读取所有数据;以及
在所述第二页面上,执行基于纠错码(ECC)的解码和编码。
13.根据权利要求12的方法,进一步包括:
响应于确定所述第二页面为充满有效数据的第二完整页面;
从所述第二完整页面读取原始数据;
基于ECC对所述读取的原始数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得ECC编码数据;
将所述ECC编码数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的页面。
14.根据权利要求12的方法,进一步包括:
响应于确定所述第二页面是包括有效数据、空的空间和与第三部分页面中的有效数据对应的第三部分奇偶校验的第三部分页面:
从所述第三部分页面读取原始数据;
通过填充零值将来自所述第三部分页面的读取数据对齐;
基于ECC对来自所述第三部分页面的读取数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得包括更新的第三部分奇偶校验的ECC编码数据;
将所述第三部分页面的所述ECC编码数据发送至奇偶校验累加模块;
将来自所述第三部分页面的有效数据与来自第四部分页面的有效数据组合而形成第三完整页面,其中来自所述第四部分页面的有效数据对应第四部分奇偶校验;
通过所述奇偶校验累加模块,将所述第四部分奇偶校验与更新的第三部分奇偶校验累加;
将所述第三完整页面中的数据传输到所述非易失性存储器的第二新分配的页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的物理页面。
15.一种促进数据存储的计算机实现方法,该方法包括:
选择在垃圾收集过程中要回收的非易失性存储器的第一页面;
确定所述第一页面为包含有效数据和无效数据的第一部分页面;
将来自所述第一部分页面的有效数据与来自第二部分页面的有效数据组合而形成第一完整页面,其中完整页面与非易失性存储器中的物理页面对齐;以及
将所述第一完整页面写入所述非易失性存储器的第一新分配的物理页面;响应于检测在所述垃圾收集过程中不容许噪音的设定:
从要回收的第二页面读取所有数据;以及
在所述第二页面上,执行基于纠错码(ECC)的解码和编码。
16.根据权利要求15的方法,
其中所述第一部分页面进一步包括:与所述有效数据和所述无效数据对应的噪声奇偶校验,以及其中所述方法进一步包括:
检测允许垃圾收集过程中噪声的设置;
从所述第一部分页面读取有效数据;
从所述第二部分页面读取有效数据,其中来自所述第二部分页面的有效数据对应于第二部分奇偶校验;以及
将所述噪声奇偶校验与所述第二部分奇偶校验累加。
17.根据权利要求16的方法,进一步包括:
将来自所述第一部分页面的所述读取的有效数据和所述噪声奇偶校验发送到奇偶校验累加模块;
确定来自所述第二部分页面的有效数据;
通过填充零值将来自所述第二部分页面的有效数据对齐;
对来自所述第二部分页面的有效数据进行编码,以获得所述第二部分奇偶校验;
其中,所述第二部分奇偶校验和所述噪声奇偶校验由所述奇偶累加模块累加。
18.根据权利要求15的方法,其中来自所述第二部分页面的有效数据与主机写操作、后台写入进程,或垃圾收集进程相关联。
19.根据权利要求15的方法,进一步包括:
响应于确定所述第一页面为填满有效数据的第二完整页面:
从所述第二完整页面读取有效数据;
将所述读取的数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的物理页面。
20.根据权利要求15的方法,进一步包括:
响应于确定所述第二页面为充满有效数据的第二完整页面;
从所述第二完整页面读取原始数据;
基于ECC对所述读取的原始数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得ECC编码数据;
将所述ECC编码数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的页面。
21.根据权利要求15的方法,进一步包括:
响应于确定所述第二页面是包括有效数据、空的空间和与第三部分页面中的有效数据对应的第三部分奇偶校验的第三部分页面:
从所述第三部分页面读取原始数据;
通过填充零值将来自所述第三部分页面的读取数据对齐;
基于ECC对来自所述第三部分页面的读取数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得包括更新的第三部分奇偶校验的ECC编码数据;
将所述第三部分页面的所述ECC编码数据发送至奇偶校验累加模块;
将来自所述第三部分页面的有效数据与来自第四部分页面的有效数据组合而形成第三完整页面,其中来自所述第四部分页面的有效数据对应第四部分奇偶校验;
通过所述奇偶校验累加模块,将所述第四部分奇偶校验与更新的第三部分奇偶校验累加;
将所述第三完整页面中的数据传输到所述非易失性存储器的第二新分配的页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的物理页面。
22.一种促进数据存储的计算机系统,所述系统包括:
处理器;以及,
连接到所述处理器的存储器,在所述存储器上存储有指令,当所述指令由处理器执行使得处理器执行一方法,其中所述计算机系统为存储设备,所述方法包括:
选择在垃圾收集过程中要回收的非易失性存储器的第一页面;
确定所述第一页面为包含有效数据和无效数据的第一部分页面;
将来自所述第一部分页面的有效数据与来自第二部分页面的有效数据组合而形成第一完整页面,其中完整页面与所述非易失性存储器中的物理页面对齐;以及,
将所述第一完整页面写入所述非易失性存储器的第一新分配的物理页面;
其中所述第一部分页面进一步包括:与所述有效数据和所述无效数据对应的噪声奇偶校验,以及其中所述方法进一步包括:
检测允许垃圾收集过程中的噪声的设置;
从所述第一部分页面读取有效数据;
从所述第二部分页面读取有效数据,其中来自所述第二部分页面的有效数据对应于第二部分奇偶校验;以及
将所述噪声奇偶校验与所述第二部分奇偶校验累加。
23.根据权利要求22的计算机系统,所述方法进一步包括:
将来自所述第一部分页面的所述读取的有效数据和所述噪声奇偶校验发送到奇偶校验累加模块;
确定来自所述第二部分页面的有效数据;
通过填充零值将来自所述第二部分页面的有效数据对齐;
对来自所述第二部分页面的有效数据进行编码,以获得所述第二部分奇偶校验;
其中,所述第二部分奇偶校验和所述噪声奇偶校验由所述奇偶校验累加模块累加。
24.根据权利要求22的计算机系统,其中来自所述第二部分页面的有效数据与主机写操作、后台写入进程,或垃圾收集进程相关联。
25.根据权利要求22的计算机系统,所述方法进一步包括:
响应于确定所述第一页面为填满有效数据的第二完整页面:
从所述第二完整页面读取有效数据;
将所述读取的数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;以及,
将所述传输的数据写入所述第二新分配的物理页面。
26.根据权利要求22的计算机系统,所述方法进一步包括:
响应于检测所述垃圾收集过程中不容许噪音的设置:
从要回收的第二页面读取所有数据;以及,
在所述第二页面上,执行基于纠错码(ECC)的解码和编码。
27.根据权利要求26的计算机系统,所述方法进一步包括:
响应于确定所述第二页面为充满有效数据的第二完整页面;
从所述第二完整页面读取原始数据;
基于ECC对所述读取的原始数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得ECC编码数据;
将所述ECC编码数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的页面。
28.根据权利要求26的计算机系统,所述方法进一步包括:
响应于确定所述第二页面是包括有效数据、空的空间和与第三部分页面中的有效数据对应的第三部分奇偶校验的第三部分页面:
从所述第三部分页面读取原始数据;
通过填充零值将来自所述第三部分页面的所述读取数据对齐;
基于ECC对来自所述第三部分页面的所述读取数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得包括更新的第三部分奇偶校验的ECC编码数据;
将所述第三部分页面的所述ECC编码数据发送至奇偶校验累加模块;
将来自所述第三部分页面的有效数据与来自第四部分页面的有效数据组合而形成第三完整页面,其中来自所述第四部分页面的有效数据对应第四部分奇偶校验;
通过所述奇偶校验累加模块,将所述第四部分奇偶校验与更新的第三部分奇偶校验累加;
将所述第三完整页面中的数据传输到所述非易失性存储器的第二新分配的页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的物理页面。
29.一种促进数据存储的计算机系统,所述系统包括:
处理器;以及,
连接到所述处理器的存储器,在所述存储器上存储有指令,当所述指令由处理器执行使得处理器执行一方法,其中所述计算机系统为存储设备,所述方法包括:
选择在垃圾收集过程中要回收的非易失性存储器的第一页面;
确定所述第一页面为包含有效数据和无效数据的第一部分页面;
将来自所述第一部分页面的有效数据与来自第二部分页面的有效数据组合而形成第一完整页面,其中完整页面与所述非易失性存储器中的物理页面对齐;以及,
将所述第一完整页面写入所述非易失性存储器的第一新分配的物理页面;
响应于确定所述第一页面为填满有效数据的第二完整页面:
从所述第二完整页面读取有效数据;
将所述读取的数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;以及,
将所述传输的数据写入所述第二新分配的物理页面。
30.根据权利要求29的计算机系统,
其中所述第一部分页面进一步包括:与所述有效数据和所述无效数据对应的噪声奇偶校验,以及其中所述方法进一步包括:
检测允许垃圾收集过程中的噪声的设置;
从所述第一部分页面读取有效数据;
从所述第二部分页面读取有效数据,其中来自所述第二部分页面的有效数据对应于第二部分奇偶校验;以及
将所述噪声奇偶校验与所述第二部分奇偶校验累加。
31.根据权利要求30的计算机系统,所述方法进一步包括:
将来自所述第一部分页面的所述读取的有效数据和所述噪声奇偶校验发送到奇偶校验累加模块;
确定来自所述第二部分页面的有效数据;
通过填充零值将来自所述第二部分页面的有效数据对齐;
对来自所述第二部分页面的有效数据进行编码,以获得所述第二部分奇偶校验;
其中,所述第二部分奇偶校验和所述噪声奇偶校验由所述奇偶校验累加模块累加。
32.根据权利要求29的计算机系统,其中来自所述第二部分页面的有效数据与主机写操作、后台写入进程,或垃圾收集进程相关联。
33.根据权利要求29的计算机系统,所述方法进一步包括:
响应于检测所述垃圾收集过程中不容许噪音的设置:
从要回收的第二页面读取所有数据;以及,
在所述第二页面上,执行基于纠错码(ECC)的解码和编码。
34.根据权利要求33的计算机系统,所述方法进一步包括:
响应于确定所述第二页面为充满有效数据的第二完整页面;
从所述第二完整页面读取原始数据;
基于ECC对所述读取的原始数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得ECC编码数据;
将所述ECC编码数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的页面。
35.根据权利要求33的计算机系统,所述方法进一步包括:
响应于确定所述第二页面是包括有效数据、空的空间和与第三部分页面中的有效数据对应的第三部分奇偶校验的第三部分页面:
从所述第三部分页面读取原始数据;
通过填充零值将来自所述第三部分页面的所述读取数据对齐;
基于ECC对来自所述第三部分页面的所述读取数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得包括更新的第三部分奇偶校验的ECC编码数据;
将所述第三部分页面的所述ECC编码数据发送至奇偶校验累加模块;
将来自所述第三部分页面的有效数据与来自第四部分页面的有效数据组合而形成第三完整页面,其中来自所述第四部分页面的有效数据对应第四部分奇偶校验;
通过所述奇偶校验累加模块,将所述第四部分奇偶校验与更新的第三部分奇偶校验累加;
将所述第三完整页面中的数据传输到所述非易失性存储器的第二新分配的页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的物理页面。
36.一种促进数据存储的计算机系统,所述系统包括:
处理器;以及,
连接到所述处理器的存储器,在所述存储器上存储有指令,当所述指令由处理器执行使得处理器执行一方法,其中所述计算机系统为存储设备,所述方法包括:
选择在垃圾收集过程中要回收的非易失性存储器的第一页面;
确定所述第一页面为包含有效数据和无效数据的第一部分页面;
将来自所述第一部分页面的有效数据与来自第二部分页面的有效数据组合而形成第一完整页面,其中完整页面与所述非易失性存储器中的物理页面对齐;以及,
将所述第一完整页面写入所述非易失性存储器的第一新分配的物理页面;
响应于检测所述垃圾收集过程中不容许噪音的设置:
从要回收的第二页面读取所有数据;以及,
在所述第二页面上,执行基于纠错码(ECC)的解码和编码。
37.根据权利要求36的计算机系统,
其中所述第一部分页面进一步包括:与所述有效数据和所述无效数据对应的噪声奇偶校验,以及其中所述方法进一步包括:
检测允许垃圾收集过程中的噪声的设置;
从所述第一部分页面读取有效数据;
从所述第二部分页面读取有效数据,其中来自所述第二部分页面的有效数据对应于第二部分奇偶校验;以及
将所述噪声奇偶校验与所述第二部分奇偶校验累加。
38.根据权利要求37的计算机系统,所述方法进一步包括:
将来自所述第一部分页面的所述读取的有效数据和所述噪声奇偶校验发送到奇偶校验累加模块;
确定来自所述第二部分页面的有效数据;
通过填充零值将来自所述第二部分页面的有效数据对齐;
对来自所述第二部分页面的有效数据进行编码,以获得所述第二部分奇偶校验;
其中,所述第二部分奇偶校验和所述噪声奇偶校验由所述奇偶校验累加模块累加。
39.根据权利要求36的计算机系统,其中来自所述第二部分页面的有效数据与主机写操作、后台写入进程,或垃圾收集进程相关联。
40.根据权利要求36的计算机系统,所述方法进一步包括:
响应于确定所述第一页面为填满有效数据的第二完整页面:
从所述第二完整页面读取有效数据;
将所述读取的数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;以及,
将所述传输的数据写入所述第二新分配的物理页面。
41.根据权利要求36的计算机系统,所述方法进一步包括:
响应于确定所述第二页面为充满有效数据的第二完整页面;
从所述第二完整页面读取原始数据;
基于ECC对所述读取的原始数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得ECC编码数据;
将所述ECC编码数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的页面。
42.根据权利要求36的计算机系统,所述方法进一步包括:
响应于确定所述第二页面是包括有效数据、空的空间和与第三部分页面中的有效数据对应的第三部分奇偶校验的第三部分页面:
从所述第三部分页面读取原始数据;
通过填充零值将来自所述第三部分页面的所述读取数据对齐;
基于ECC对来自所述第三部分页面的所述读取数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得包括更新的第三部分奇偶校验的ECC编码数据;
将所述第三部分页面的所述ECC编码数据发送至奇偶校验累加模块;
将来自所述第三部分页面的有效数据与来自第四部分页面的有效数据组合而形成第三完整页面,其中来自所述第四部分页面的有效数据对应第四部分奇偶校验;
通过所述奇偶校验累加模块,将所述第四部分奇偶校验与更新的第三部分奇偶校验累加;
将所述第三完整页面中的数据传输到所述非易失性存储器的第二新分配的页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的物理页面。
43.一种用于存储指令的非临时计算机可读存储介质,当所述指令由计算机执行时执行一种方法,该方法包括:
选择在垃圾收集过程中要回收的非易失性存储器的第一页面;
确定所述第一页面为包含有效数据和无效数据的第一部分页面;
将来自所述第一部分页面的有效数据与来自第二部分页面的有效数据组合而形成第一完整页面,其中完整页面与非易失性存储器中的物理页面对齐;以及
将所述第一完整页面写入所述非易失性存储器的第一新分配的物理页面;
其中所述第一部分页面进一步包括:与所述有效数据和所述无效数据对应的噪声奇偶校验,以及其中所述方法进一步包括:
检测允许所述垃圾收集过程中的噪声的设置;
从所述第一部分页面读取有效数据;
从所述第二部分页面读取有效数据,其中来自所述第二部分页面的有效数据对应于第二部分奇偶校验;以及
将所述噪声奇偶校验与所述第二部分奇偶校验累加。
44.根据权利要求43的存储介质,其中所述方法进一步包括:
将来自所述第一部分页面的所述读取的有效数据和所述噪声奇偶校验发送到奇偶校验累加模块;
确定来自所述第二部分页面的有效数据;
通过填充零值将来自所述第二部分页面的有效数据对齐;
对来自所述第二部分页面的有效数据进行编码,以获得所述第二部分奇偶校验,其中,所述第二部分奇偶校验和所述噪声奇偶校验由所述奇偶校验累加模块累加。
45.一种用于存储指令的非临时计算机可读存储介质,当所述指令由计算机执行时执行一种方法,该方法包括:
选择在垃圾收集过程中要回收的非易失性存储器的第一页面;
确定所述第一页面为包含有效数据和无效数据的第一部分页面;
将来自所述第一部分页面的有效数据与来自第二部分页面的有效数据组合而形成第一完整页面,其中完整页面与非易失性存储器中的物理页面对齐;以及
将所述第一完整页面写入所述非易失性存储器的第一新分配的物理页面;
响应于检测所述垃圾收集过程中不容许噪音的设置:
从要回收的第二页面读取所有数据;以及,
在所述第二页面上,执行基于纠错码(ECC)的解码和编码。
46.根据权利要求45的存储介质,其中响应于检测所述垃圾收集过程中不容许噪音的设置,所述方法进一步包括:
响应于确定所述第二页面为充满有效数据的第二完整页面;
从所述第二完整页面读取原始数据;
基于ECC对所述读取的原始数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得ECC编码数据;
将所述ECC编码数据传输到第二新分配的物理页面的NAND平面的页面缓冲区;以及
并将所述传输的数据写入所述第二新分配的页面;以及
响应确定所述第二页面是包括有效数据、空的空间和与第三部分页面中的有效数据对应的第三部分奇偶校验的第三部分页面:
从所述第三部分页面读取原始数据;
通过填充零值将来自所述第三部分页面的所述读取数据对齐;
基于ECC对来自所述第三部分页面的所述读取数据进行解码以获得ECC解码数据;
基于ECC对所述ECC解码数据进行编码以获得包括更新的第三部分奇偶校验的ECC编码数据;
将所述第三部分页面的所述ECC编码数据发送至奇偶校验累加模块;
将来自所述第三部分页面的有效数据与来自第四部分页面的有效数据组合而形成第三完整页面,其中来自所述第四部分页面的有效数据对应第四部分奇偶校验;
通过所述奇偶校验累加模块,将所述第四部分奇偶校验与更新的第三部分奇偶校验累加;
将所述第三完整页面中的数据传输到所述非易失性存储器的第二新分配的页面的NAND平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的物理页面。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862713921P | 2018-08-02 | 2018-08-02 | |
US62/713,921 | 2018-08-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110795272A CN110795272A (zh) | 2020-02-14 |
CN110795272B true CN110795272B (zh) | 2023-06-13 |
Family
ID=69228689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910711532.9A Active CN110795272B (zh) | 2018-08-02 | 2019-08-02 | 用于在可变大小的i/o上促进的原子性和延迟保证的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10996886B2 (zh) |
CN (1) | CN110795272B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11726869B2 (en) | 2019-08-20 | 2023-08-15 | Micron Technology, Inc. | Performing error control operation on memory component for garbage collection |
US11281392B2 (en) | 2019-08-28 | 2022-03-22 | Micron Technology, Inc. | Garbage collection in a memory component using an adjusted parameter |
JP2022047855A (ja) * | 2020-09-14 | 2022-03-25 | キオクシア株式会社 | メモリシステム |
US11899577B2 (en) * | 2020-11-24 | 2024-02-13 | Micron Technology, Inc. | Selective garbage collection |
CN112925778B (zh) * | 2021-02-25 | 2023-01-06 | 山东大学 | 一种电热冷综合能源系统数据处理方法及系统 |
JP2023044544A (ja) * | 2021-09-17 | 2023-03-30 | キオクシア株式会社 | メモリシステム |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3893071A (en) * | 1974-08-19 | 1975-07-01 | Ibm | Multi level error correction system for high density memory |
US4562494A (en) * | 1983-04-07 | 1985-12-31 | Verbatim Corporation | Disk drive alignment analyzer |
JP2003022209A (ja) * | 2001-07-05 | 2003-01-24 | Nri & Ncc Co Ltd | 分散サーバーシステム |
JP2011175422A (ja) * | 2010-02-24 | 2011-09-08 | Fujitsu Ltd | 判定プログラム、方法及び装置 |
US9740609B1 (en) * | 2016-02-19 | 2017-08-22 | International Business Machines Corporation | Garbage collection techniques for a data storage system |
CN107463513A (zh) * | 2016-06-02 | 2017-12-12 | 卡巴斯基实验室股份制公司 | 在存储位置之间转移控制的系统和方法 |
Family Cites Families (291)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1001316A (en) | 1910-12-27 | 1911-08-22 | Frank Edward Smith | Angle-gage for squares. |
US1023519A (en) | 1911-04-28 | 1912-04-16 | Frank M Hambright | Vehicle-lamp. |
US1022973A (en) | 1911-06-26 | 1912-04-09 | James M Russell | Trigger mechanism. |
US1031846A (en) | 1911-07-19 | 1912-07-09 | John H Grissinger | Gas-producer. |
US1043767A (en) | 1911-07-29 | 1912-11-05 | Erhard Junghans | Gas-turbine. |
US1019906A (en) | 1911-08-05 | 1912-03-12 | Mckee Schilling Permanent Mold Company | Casting apparatus. |
US1064252A (en) | 1911-12-20 | 1913-06-10 | Picturegraph Company | Film-gate for moving-picture machines. |
US1036172A (en) | 1912-02-09 | 1912-08-20 | Fritz L Andren | Bed-couch. |
US1064965A (en) | 1913-04-16 | 1913-06-17 | John L Funk | Combustion-nozzle. |
US4775932A (en) | 1984-07-31 | 1988-10-04 | Texas Instruments Incorporated | Computer memory system with parallel garbage collection independent from an associated user processor |
NL8402411A (nl) | 1984-08-02 | 1986-03-03 | Philips Nv | Inrichting voor het korrigeren en maskeren van fouten in een informatiestroom, en weergeeftoestel voor het weergeven van beeld en/of geluid voorzien van zo een inrichting. |
US4858040A (en) | 1987-08-25 | 1989-08-15 | Ampex Corporation | Bimorph actuator for a disk drive |
EP0681721B1 (en) | 1993-02-01 | 2005-03-23 | Sun Microsystems, Inc. | Archiving file system for data servers in a distributed network environment |
US5394382A (en) | 1993-02-11 | 1995-02-28 | International Business Machines Corporation | Method for the organization of data on a CD-ROM |
JP3215237B2 (ja) | 1993-10-01 | 2001-10-02 | 富士通株式会社 | 記憶装置および記憶装置の書き込み/消去方法 |
US5602693A (en) | 1994-12-14 | 1997-02-11 | Micropolis (S) Pte Ltd. | Method and apparatus for sensing position in a disk drive |
WO1997020310A1 (en) | 1995-11-28 | 1997-06-05 | Micropolis Corporation | Twin coil positioning device for use in a family of hard disk drives having interchangeable magnet components |
US5732093A (en) | 1996-02-08 | 1998-03-24 | United Microelectronics Corporation | Error correction method and apparatus on optical disc system |
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 |
US6098185A (en) | 1997-10-31 | 2000-08-01 | Stmicroelectronics, N.V. | Header-formatted defective sector management system |
US7200623B2 (en) | 1998-11-24 | 2007-04-03 | Oracle International Corp. | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
US6421787B1 (en) | 1998-05-12 | 2002-07-16 | Sun Microsystems, Inc. | Highly available cluster message passing facility |
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 |
US6457104B1 (en) | 2000-03-20 | 2002-09-24 | International Business Machines Corporation | System and method for recycling stale memory content in compressed memory systems |
US6658478B1 (en) | 2000-08-04 | 2003-12-02 | 3Pardata, Inc. | Data storage system |
US6795894B1 (en) | 2000-08-08 | 2004-09-21 | Hewlett-Packard Development Company, L.P. | Fast disk cache writing system |
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 |
US20020161890A1 (en) | 2000-12-22 | 2002-10-31 | Kailai Chen | System and method for intelligently distributing content over a communicatons network |
KR100856399B1 (ko) | 2002-01-23 | 2008-09-04 | 삼성전자주식회사 | 디코딩 방법 및 그 장치 |
KR20040073593A (ko) | 2002-01-24 | 2004-08-19 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 데이터 기억 장치 및 데이터 기억 장치를 다루는 방법 |
US7533214B2 (en) | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
US20030163633A1 (en) | 2002-02-27 | 2003-08-28 | Aasheim Jered Donald | System and method for achieving uniform wear levels in a flash memory device |
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 |
US7487264B2 (en) | 2002-06-11 | 2009-02-03 | Pandya Ashish A | High performance IP processor |
US7953899B1 (en) | 2002-08-21 | 2011-05-31 | 3Par Inc. | Universal diagnostic hardware space access system for firmware |
US7239605B2 (en) | 2002-09-23 | 2007-07-03 | Sun Microsystems, Inc. | Item and method for performing a cluster topology self-healing process in a distributed data system cluster |
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 |
KR100992177B1 (ko) | 2003-05-07 | 2010-11-04 | 모사이드 테크놀로지스 코포레이션 | 파워 아일랜드를 사용한 집적 회로의 파워 관리 |
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 |
US7130957B2 (en) | 2004-02-10 | 2006-10-31 | Sun Microsystems, Inc. | Storage system structure for storing relational cache metadata |
US6927930B1 (en) | 2004-02-10 | 2005-08-09 | Hitachi Global Storage Technologies Netherlands B.V. | Adaptive data format method integrating spare sectors |
US7676603B2 (en) | 2004-04-20 | 2010-03-09 | Intel Corporation | Write combining protocol between processors and chipsets |
JP4401895B2 (ja) | 2004-08-09 | 2010-01-20 | 株式会社日立製作所 | 計算機システム、計算機及びそのプログラム。 |
US7490239B2 (en) | 2005-01-07 | 2009-02-10 | First Data Corporation | Facilitating digital signature based on ephemeral private key |
DE102005032061B4 (de) | 2005-07-08 | 2009-07-30 | Qimonda Ag | Speichermodul, und Speichermodul-System |
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 | 半導体記憶装置 |
JP5431148B2 (ja) | 2006-05-31 | 2014-03-05 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ストレージ用論理データオブジェクトの変換方法およびシステム |
US7711890B2 (en) | 2006-06-06 | 2010-05-04 | Sandisk Il Ltd | Cache control in a non-volatile memory device |
US8132030B2 (en) | 2006-06-27 | 2012-03-06 | Koninklijke Philips Electronics N.V. | Device and a method for managing power consumption of a plurality of data processing units |
US20080065805A1 (en) | 2006-09-11 | 2008-03-13 | Cameo Communications, Inc. | PCI-Express multimode expansion card and communication device having the same |
JP2008077810A (ja) | 2006-09-25 | 2008-04-03 | Toshiba Corp | 不揮発性半導体記憶装置 |
US7761623B2 (en) | 2006-09-28 | 2010-07-20 | Virident Systems, Inc. | Main memory in a system with a memory controller configured to control access to non-volatile memory, and related technologies |
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 |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US7852654B2 (en) | 2006-12-28 | 2010-12-14 | Hynix Semiconductor Inc. | Semiconductor memory device, and multi-chip package and method of operating the same |
US7599139B1 (en) | 2007-06-22 | 2009-10-06 | Western Digital Technologies, Inc. | Disk drive having a high performance access mode and a lower performance archive mode |
US7861046B2 (en) | 2007-06-29 | 2010-12-28 | Sandisk Corporation | Secure digital host sector application flag compression |
JP4564520B2 (ja) | 2007-08-31 | 2010-10-20 | 株式会社東芝 | 半導体記憶装置およびその制御方法 |
US7917574B2 (en) | 2007-10-01 | 2011-03-29 | Accenture Global Services Limited | Infrastructure for parallel programming of clusters of machines |
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 |
US8195978B2 (en) | 2008-05-16 | 2012-06-05 | Fusion-IO. Inc. | Apparatus, system, and method for detecting and replacing failed data storage |
KR101497074B1 (ko) | 2008-06-17 | 2015-03-05 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법 |
US9123422B2 (en) | 2012-07-02 | 2015-09-01 | Super Talent Technology, Corp. | Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells |
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 |
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 |
JP2010152704A (ja) | 2008-12-25 | 2010-07-08 | Hitachi Ltd | 計算機システムの運用管理システム及び管理方法 |
CN101889313B (zh) | 2008-12-30 | 2014-12-03 | E·孔法洛涅里 | 具有扩展工作温度范围的非易失性存储器 |
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 |
US20100332922A1 (en) | 2009-06-30 | 2010-12-30 | Mediatek Inc. | Method for managing device and solid state disk drive utilizing the same |
JP5121792B2 (ja) | 2009-08-06 | 2013-01-16 | 株式会社東芝 | 半導体装置の製造方法 |
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 |
WO2011092532A1 (en) | 2010-01-28 | 2011-08-04 | Sandisk Il Ltd. | Sliding-window error correction |
TWI409633B (zh) | 2010-02-04 | 2013-09-21 | Phison Electronics Corp | 快閃記憶體儲存裝置、其控制器與資料寫入方法 |
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 | メモリシステムおよびコントローラ |
JP5017407B2 (ja) | 2010-03-24 | 2012-09-05 | 株式会社東芝 | 半導体記憶装置 |
US8745317B2 (en) | 2010-04-07 | 2014-06-03 | Densbits Technologies Ltd. | System and method for storing information in a multi-level cell memory |
CN102262557B (zh) | 2010-05-25 | 2015-01-21 | 运软网络科技(上海)有限公司 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
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 |
US8775868B2 (en) * | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US9244779B2 (en) | 2010-09-30 | 2016-01-26 | Commvault Systems, Inc. | Data recovery operations, such as recovery from modified network data management protocol data |
US20120089774A1 (en) | 2010-10-12 | 2012-04-12 | International Business Machines Corporation | Method and system for mitigating adjacent track erasure in hard disk drives |
US8429495B2 (en) | 2010-10-19 | 2013-04-23 | Mosaid Technologies Incorporated | Error detection and correction codes for channels and memories with incomplete error characteristics |
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 |
US9176794B2 (en) | 2010-12-13 | 2015-11-03 | Advanced Micro Devices, Inc. | Graphics compute process scheduling |
US9208071B2 (en) | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
US8793328B2 (en) | 2010-12-17 | 2014-07-29 | Facebook, Inc. | Distributed storage system |
US8826098B2 (en) | 2010-12-20 | 2014-09-02 | Lsi Corporation | Data signatures to determine successful completion of memory backup |
US8819328B2 (en) | 2010-12-30 | 2014-08-26 | Sandisk Technologies Inc. | Controller and method for performing background operations |
US9612978B2 (en) | 2010-12-31 | 2017-04-04 | International Business Machines Corporation | Encrypted flash-based data storage system with confidentiality mode |
US8909851B2 (en) | 2011-02-08 | 2014-12-09 | SMART Storage Systems, Inc. | Storage control system with change logging mechanism and method of operation thereof |
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 |
CN102693168B (zh) | 2011-03-22 | 2014-12-31 | 中兴通讯股份有限公司 | 一种数据备份恢复的方法、系统和服务节点 |
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 |
WO2012161659A1 (en) | 2011-05-24 | 2012-11-29 | Agency For Science, Technology And Research | A memory storage device, and a related zone-based block management and mapping method |
US8694719B2 (en) | 2011-06-24 | 2014-04-08 | Sandisk Technologies Inc. | Controller, storage device, and method for power throttling memory operations |
US8880977B2 (en) | 2011-07-22 | 2014-11-04 | Sandisk Technologies Inc. | Systems and methods of storing data |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US9344494B2 (en) | 2011-08-30 | 2016-05-17 | Oracle International Corporation | Failover data replication with colocation of session state data |
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 |
US8904061B1 (en) | 2011-12-30 | 2014-12-02 | Emc Corporation | Managing storage operations in a server cache |
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 |
US9362003B2 (en) | 2012-03-09 | 2016-06-07 | Sandisk Technologies Inc. | System and method to decode data subject to a disturb condition |
US9336340B1 (en) | 2012-03-30 | 2016-05-10 | Emc Corporation | Evaluating management operations |
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 |
US9747202B1 (en) * | 2013-03-14 | 2017-08-29 | Sandisk Technologies Llc | Storage module and method for identifying hot and cold data |
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 |
KR102039537B1 (ko) | 2013-03-15 | 2019-11-01 | 삼성전자주식회사 | 불휘발성 저장 장치 및 그것의 운영체제 이미지 프로그램 방법 |
US9195673B2 (en) | 2013-03-15 | 2015-11-24 | International Business Machines Corporation | Scalable graph modeling of metadata for deduplicated storage systems |
US10073626B2 (en) | 2013-03-15 | 2018-09-11 | Virident Systems, Llc | Managing the write performance of an asymmetric memory system |
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 |
US9141176B1 (en) | 2013-07-29 | 2015-09-22 | Western Digital Technologies, Inc. | Power management for data storage device |
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 |
US9093093B2 (en) | 2013-10-25 | 2015-07-28 | Seagate Technology Llc | Adaptive guard band for multiple heads of a data storage device |
US9251154B2 (en) | 2013-11-15 | 2016-02-02 | International Business Machines Corporation | Priority based reliability mechanism for archived data |
KR20150084244A (ko) | 2014-01-13 | 2015-07-22 | 삼성전자주식회사 | 메모리 장치, 메모리 시스템 및 메모리 장치의 동작 방법 |
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 |
US9542404B2 (en) | 2014-02-17 | 2017-01-10 | Netapp, Inc. | Subpartitioning of a namespace region |
US20150301964A1 (en) | 2014-02-18 | 2015-10-22 | Alistair Mark Brinicombe | Methods and systems of multi-memory, control and data plane architecture |
US9263088B2 (en) | 2014-03-21 | 2016-02-16 | Western Digital Technologies, Inc. | Data management for a data storage device using a last resort zone |
US9880859B2 (en) | 2014-03-26 | 2018-01-30 | Intel Corporation | Boot image discovery and delivery |
US9640201B2 (en) | 2014-04-10 | 2017-05-02 | Seagate Technology Llc | Band rewrite optimization |
US9383926B2 (en) * | 2014-05-27 | 2016-07-05 | Kabushiki Kaisha Toshiba | Host-controlled garbage collection |
US9015561B1 (en) | 2014-06-11 | 2015-04-21 | Sandisk Technologies Inc. | Adaptive redundancy in three dimensional memory |
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 |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US10114757B2 (en) | 2014-07-02 | 2018-10-30 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
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 |
US20160041760A1 (en) | 2014-08-08 | 2016-02-11 | International Business Machines Corporation | Multi-Level Cell Flash Memory Control Mechanisms |
US10430328B2 (en) | 2014-09-16 | 2019-10-01 | Sandisk Technologies Llc | Non-volatile cache and non-volatile storage medium using single bit and multi bit flash memory cells or different programming parameters |
US10114562B2 (en) | 2014-09-16 | 2018-10-30 | Sandisk Technologies Llc | Adaptive block allocation in nonvolatile memory |
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 |
US10127157B2 (en) | 2014-10-06 | 2018-11-13 | SK Hynix Inc. | Sizing a cache while taking into account a total bytes written requirement |
TWI537816B (zh) * | 2014-10-13 | 2016-06-11 | 慧榮科技股份有限公司 | 非揮發性儲存裝置與控制器進行的控制方法 |
US9710330B2 (en) | 2014-10-15 | 2017-07-18 | Empire Technology Development Llc | Partial cloud data storage |
US9129628B1 (en) | 2014-10-23 | 2015-09-08 | Western Digital Technologies, Inc. | Data management for data storage device with different track density regions |
US9508362B2 (en) | 2014-11-24 | 2016-11-29 | Seagate Technology Llc | Write management for interlaced magnetic recording devices |
CN105701028B (zh) | 2014-11-28 | 2018-10-09 | 国际商业机器公司 | 分布式存储系统中的磁盘管理方法和设备 |
US20160155750A1 (en) | 2014-11-28 | 2016-06-02 | Kabushiki Kaisha Toshiba | Semiconductor memory device and method for manufacturing the same |
US9852076B1 (en) | 2014-12-18 | 2017-12-26 | Violin Systems Llc | Caching of metadata for deduplicated LUNs |
US9311939B1 (en) | 2014-12-23 | 2016-04-12 | Western Digital Technologies, Inc. | Write-through media caching |
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 |
US9888064B2 (en) | 2015-02-11 | 2018-02-06 | International Business Machines Corporation | Load-balancing input/output requests in clustered storage systems |
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 |
US9916275B2 (en) | 2015-03-09 | 2018-03-13 | International Business Machines Corporation | Preventing input/output (I/O) traffic overloading of an interconnect channel in a distributed data storage system |
US9208817B1 (en) | 2015-03-10 | 2015-12-08 | Alibaba Group Holding Limited | System and method for determination and reallocation of pending sectors caused by media fatigue |
KR101927233B1 (ko) | 2015-03-16 | 2018-12-12 | 한국전자통신연구원 | 이기종 멀티-코어 시스템의 gpu 전력 측정 방법 |
KR102298661B1 (ko) | 2015-04-30 | 2021-09-07 | 삼성전자주식회사 | 저장 장치 및 그것의 초기화 방법 |
US9911487B2 (en) | 2015-05-19 | 2018-03-06 | EMC IP Holding Company LLC | Method and system for storing and recovering data from flash memory |
US9639282B2 (en) | 2015-05-20 | 2017-05-02 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices |
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 |
US9875053B2 (en) | 2015-06-05 | 2018-01-23 | Western Digital Technologies, Inc. | Scheduling scheme(s) for a multi-die storage device |
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 |
US9952769B2 (en) | 2015-09-14 | 2018-04-24 | Microsoft Technology Licensing, Llc. | Data storage system with data storage devices operative to manage storage device functions specific to a particular data storage device |
CN105278876B (zh) | 2015-09-23 | 2018-12-14 | 华为技术有限公司 | 一种固态硬盘的数据擦除方法及装置 |
US10120811B2 (en) * | 2015-09-29 | 2018-11-06 | International Business Machines Corporation | Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage |
DE102015116688B4 (de) | 2015-10-01 | 2022-11-24 | Infineon Technologies Ag | Speichereinheit und Verfahren zum Betrieb eines Speichereinheitssektors |
US10031774B2 (en) | 2015-10-15 | 2018-07-24 | Red Hat, Inc. | Scheduling multi-phase computing jobs |
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 |
US20170162235A1 (en) | 2015-12-02 | 2017-06-08 | Qualcomm Incorporated | System and method for memory management using dynamic partial channel interleaving |
US20170161202A1 (en) | 2015-12-02 | 2017-06-08 | Samsung Electronics Co., Ltd. | Flash memory device including address mapping for deduplication, and related methods |
US9965441B2 (en) | 2015-12-10 | 2018-05-08 | Cisco Technology, Inc. | Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics |
US20170177259A1 (en) | 2015-12-18 | 2017-06-22 | Intel Corporation | Techniques to Use Open Bit Line Information for a Memory System |
JP6517684B2 (ja) | 2015-12-22 | 2019-05-22 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
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 |
US9946596B2 (en) | 2016-01-29 | 2018-04-17 | Toshiba Memory Corporation | Global error recovery system |
CN107037976B (zh) | 2016-02-03 | 2020-03-20 | 株式会社东芝 | 存储装置及其工作方法 |
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 |
US10452490B2 (en) | 2016-03-09 | 2019-10-22 | Commvault Systems, Inc. | Data management and backup of distributed storage environment |
KR102511459B1 (ko) | 2016-03-17 | 2023-03-17 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 그 동작 방법 |
US20170286311A1 (en) | 2016-04-01 | 2017-10-05 | Dale J. Juenemann | Repetitive address indirection in a memory |
US10585809B2 (en) | 2016-04-01 | 2020-03-10 | Intel Corporation | Convolutional memory integrity |
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 |
US10866905B2 (en) | 2016-05-25 | 2020-12-15 | Samsung Electronics Co., Ltd. | Access parameter based multi-stream storage device access |
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 |
US10283215B2 (en) | 2016-07-28 | 2019-05-07 | Ip Gem Group, Llc | Nonvolatile memory system with background reference positioning and local reference positioning |
CN107799155B (zh) | 2016-09-06 | 2022-11-01 | 三星电子株式会社 | 包括列冗余的存储装置 |
JP6606039B2 (ja) | 2016-09-09 | 2019-11-13 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US10275165B2 (en) | 2016-09-12 | 2019-04-30 | Toshiba Memory Corporation | Memory controller |
JP6274589B1 (ja) | 2016-09-28 | 2018-02-07 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置および連続読出し方法 |
US10678432B1 (en) | 2016-10-04 | 2020-06-09 | Pure Storage, Inc. | User space and kernel space access to memory devices through private queues |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
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 |
US10445016B2 (en) | 2016-12-13 | 2019-10-15 | International Business Machines Corporation | Techniques for storage command processing |
US10496544B2 (en) | 2016-12-29 | 2019-12-03 | Intel Corporation | Aggregated write back in a direct mapped two level memory |
US10740042B2 (en) | 2016-12-30 | 2020-08-11 | Western Digital Technologies, Inc. | Scheduling access commands for data storage devices |
US10331514B2 (en) | 2017-03-17 | 2019-06-25 | Micron Technology, Inc. | Tiered error correction code (ECC) operations in 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 |
US10613944B2 (en) | 2017-04-18 | 2020-04-07 | Netapp, Inc. | Systems and methods for backup and restore of distributed master-slave database clusters |
TWI625620B (zh) | 2017-05-12 | 2018-06-01 | 威盛電子股份有限公司 | 非揮發性記憶體裝置及其讀取方法 |
US10319397B2 (en) | 2017-05-19 | 2019-06-11 | Seagate Technology Llc | Narrow band dwell monitoring |
US10474397B2 (en) | 2017-06-13 | 2019-11-12 | Western Digital Technologies, Inc | Unified indirection in a multi-device hybrid storage unit |
US10521375B2 (en) | 2017-06-22 | 2019-12-31 | Macronix International Co., Ltd. | Controller for a memory system |
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 |
US10838902B2 (en) | 2017-06-23 | 2020-11-17 | Facebook, Inc. | Apparatus, system, and method for performing hardware acceleration via expansion cards |
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 |
KR102389431B1 (ko) | 2017-08-22 | 2022-04-25 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US10579288B2 (en) | 2017-08-31 | 2020-03-03 | Micron Technology, Inc. | Prioritized security |
TWI631570B (zh) | 2017-09-04 | 2018-08-01 | 威盛電子股份有限公司 | 錯誤檢查糾正解碼方法與裝置 |
US10642522B2 (en) | 2017-09-15 | 2020-05-05 | Alibaba Group Holding Limited | Method and system for in-line deduplication in a storage drive based on a non-collision hash |
JP2019057172A (ja) | 2017-09-21 | 2019-04-11 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US10956279B2 (en) | 2017-12-04 | 2021-03-23 | International Business Machines Corporation | Managing big data on document based NoSQL databases |
US10606693B2 (en) | 2017-12-28 | 2020-03-31 | Micron Technology, Inc. | Memory controller implemented error correction code memory |
CN110058794B (zh) * | 2018-01-19 | 2022-11-01 | 上海宝存信息科技有限公司 | 用于动态执行垃圾回收数据储存装置与操作方法 |
US10585819B2 (en) | 2018-03-05 | 2020-03-10 | Samsung Electronics Co., Ltd. | SSD architecture for FPGA based acceleration |
EP3825850A1 (en) | 2018-05-04 | 2021-05-26 | Citrix Systems, Inc. | Computer system providing improved transfer protocol for remote computing using multiple virtual channels having different priorities. |
US10437670B1 (en) * | 2018-05-24 | 2019-10-08 | International Business Machines Corporation | Metadata hardening and parity accumulation for log-structured arrays |
KR20190139082A (ko) | 2018-06-07 | 2019-12-17 | 삼성전자주식회사 | 메모리 장치의 비트 에러율 균등화 방법 |
US11599557B2 (en) | 2018-06-12 | 2023-03-07 | Open Text Corporation | System and method for persistence and replication of changes to a data store |
US10921992B2 (en) | 2018-06-25 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency |
US10776263B2 (en) | 2018-06-27 | 2020-09-15 | Seagate Technology Llc | Non-deterministic window scheduling for data storage systems |
US11150836B2 (en) | 2018-06-28 | 2021-10-19 | Seagate Technology Llc | Deterministic optimization via performance tracking in a data storage system |
US10832768B2 (en) | 2018-07-03 | 2020-11-10 | Micron Technology, Inc. | Data storage based on data polarity |
US20200042223A1 (en) | 2018-08-02 | 2020-02-06 | Alibaba Group Holding Limited | System and method for facilitating a high-density storage device with improved performance and endurance |
US11086529B2 (en) | 2018-09-26 | 2021-08-10 | Western Digital Technologies, Inc. | Data storage systems and methods for improved data relocation based on read-level voltages associated with error recovery |
US20200167091A1 (en) | 2018-11-27 | 2020-05-28 | Commvault Systems, Inc. | Using interoperability between components of a data storage management system and appliances for data storage and deduplication to generate secondary and tertiary copies |
-
2019
- 2019-01-16 US US16/249,407 patent/US10996886B2/en active Active
- 2019-08-02 CN CN201910711532.9A patent/CN110795272B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3893071A (en) * | 1974-08-19 | 1975-07-01 | Ibm | Multi level error correction system for high density memory |
US4562494A (en) * | 1983-04-07 | 1985-12-31 | Verbatim Corporation | Disk drive alignment analyzer |
JP2003022209A (ja) * | 2001-07-05 | 2003-01-24 | Nri & Ncc Co Ltd | 分散サーバーシステム |
JP2011175422A (ja) * | 2010-02-24 | 2011-09-08 | Fujitsu Ltd | 判定プログラム、方法及び装置 |
US9740609B1 (en) * | 2016-02-19 | 2017-08-22 | International Business Machines Corporation | Garbage collection techniques for a data storage system |
CN107463513A (zh) * | 2016-06-02 | 2017-12-12 | 卡巴斯基实验室股份制公司 | 在存储位置之间转移控制的系统和方法 |
Non-Patent Citations (2)
Title |
---|
Oviliani Yenty Yuliana等."AFIS: Aligning detail-pages for full schema induction".《2016 Conference on Technologies and Applications of Artificial Intelligence (TAAI)》.2017,第220-227页. * |
韩志刚."一个内存分配器的设计和实现".《中国优秀硕士学位论文全文数据库•信息科技辑》.2012,第第2012年卷卷(第第3期期),第1-75页. * |
Also Published As
Publication number | Publication date |
---|---|
US10996886B2 (en) | 2021-05-04 |
CN110795272A (zh) | 2020-02-14 |
US20200042230A1 (en) | 2020-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110795272B (zh) | 用于在可变大小的i/o上促进的原子性和延迟保证的方法和系统 | |
US10642522B2 (en) | Method and system for in-line deduplication in a storage drive based on a non-collision hash | |
CN110832590B (zh) | 在基于相变存储器的存储设备中减轻写入放大的方法和系统 | |
US8799562B2 (en) | Storage apparatus and data control method for generating and storing format data and guarantee codes | |
US9875180B2 (en) | Systems and methods for managing storage compression operations | |
US9927998B2 (en) | Flash memory compression | |
US8214620B2 (en) | Computer-readable recording medium storing data storage program, computer, and method thereof | |
US10037245B2 (en) | Raid system performance enhancement using compressed data and byte addressable storage devices | |
TWI459396B (zh) | 資料寫入與讀取方法、記憶體控制器與記憶體儲存裝置 | |
US11481114B2 (en) | Storage apparatus and control method of storage apparatus | |
US10678443B2 (en) | Method and system for high-density converged storage via memory bus | |
CN112486725B (zh) | 一种对压缩数据进行纠错编码的方法和装置 | |
KR20110113422A (ko) | 저장 매체에 데이터를 저장하는 방법, 그를 이용한 데이터 저장 장치, 및 그것을 포함한 시스템 | |
US11074124B2 (en) | Method and system for enhancing throughput of big data analysis in a NAND-based read source storage | |
US11494115B2 (en) | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) | |
US9838045B1 (en) | Apparatus and method for accessing compressed data | |
US10437667B2 (en) | Raid system performance enhancement using compressed data | |
US11176033B2 (en) | Data storage devices and data processing methods | |
JP2020149195A (ja) | メモリシステム | |
CN110780806B (zh) | 促进元数据和数据捆绑存储的原子性保证的方法和系统 | |
CN116243858A (zh) | 一种数据写入方法、数据读取方法及装置 | |
CN114780018A (zh) | 用于促进多流顺序读取性能改进并减少阅读放大的方法和系统 | |
KR102032878B1 (ko) | 플래시 메모리 컨트롤러의 에러 정정 방법 | |
US11461173B1 (en) | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement | |
US11055231B2 (en) | Data storage devices and data processing methods of skipping editing of fields in H2F table when consecutive addresses are present in F2H table |
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 |