CN110795272B - 用于在可变大小的i/o上促进的原子性和延迟保证的方法和系统 - Google Patents

用于在可变大小的i/o上促进的原子性和延迟保证的方法和系统 Download PDF

Info

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
Application number
CN201910711532.9A
Other languages
English (en)
Other versions
CN110795272A (zh
Inventor
李舒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN110795272A publication Critical patent/CN110795272A/zh
Application granted granted Critical
Publication of CN110795272B publication Critical patent/CN110795272B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1044Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

本申请提供用于在可变大小的I/O上促进的原子性和延迟保证的方法和系统。一个实施例促进数据存储。在操作期间,系统选择要在垃圾收集过程中回收的非易失性存储器的第一页面。系统确定第一页面是包括有效数据和无效数据的第一部分页面。该系统将来自第一部分页面的有效数据与来自第二部分页面的有效数据组合以形成第一完整页面,其中完整页面与非易失性存储器中的物理页面对齐。该系统将第一完整页面写入非易失性存储器的第一新分配的物理页面。

Description

用于在可变大小的I/O上促进的原子性和延迟保证的方法和 系统
相关的申请
本申请要求于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平面的页面缓冲区;以及
将所述传输的数据写入所述第二新分配的物理页面。
CN201910711532.9A 2018-08-02 2019-08-02 用于在可变大小的i/o上促进的原子性和延迟保证的方法和系统 Active CN110795272B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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