CN105074676B - 数据存储***的数据的多个流压缩和格式化 - Google Patents
数据存储***的数据的多个流压缩和格式化 Download PDFInfo
- Publication number
- CN105074676B CN105074676B CN201480015727.5A CN201480015727A CN105074676B CN 105074676 B CN105074676 B CN 105074676B CN 201480015727 A CN201480015727 A CN 201480015727A CN 105074676 B CN105074676 B CN 105074676B
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- storage
- host
- group
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开数据存储***的数据的多个流压缩和格式化的实施例。在一些实施例中,数据存储***能够在将多个流的固定大小的主机数据存储在介质上之前对其进行压缩,并格式化所获得的可变大小的压缩数据以用于存储在通常具有固定大小的存储粒度的介质上。一个或更多个模块压缩输入的主机数据并形成固定大小的存储单元的多个输出流,所述多个输出流包含压缩数据。存储单元存储在介质上。由此,增加容量、可靠性和性能。
Description
技术领域
本公开涉及计算机***的数据存储***。更具体地,本公开涉及存储***的数据的多个流压缩和格式化。
背景技术
现代计算机***不断要求提高数据存储***容量、可靠性和性能。在1981年,用于个人计算机中的典型硬盘驱动器具有约10兆字节(MB)的容量。今天,硬盘驱动器的容量以百万兆字节(TB)来度量。利用叠瓦式磁记录来增加磁存储容量。另外,现代盘驱动器往往包括固态存储器以增强性能。提供用于提高数据存储***的容量、可靠性和性能的机制和体系结构是期望的。
附图说明
现在将参考下列附图来描述实施本发明各种特征的***和方法,其中:
图1示出根据本发明的一些实施例的主机***和数据存储***的结合。
图2示出由根据本发明的一些实施例的数据存储***采用的压缩和格式化。
图3示出根据本发明的一些实施例的数据存储***采用的压缩和格式化数据流。
图4A示出根据本发明的一些实施例的数据存储***采用的多个虚拟存储流。
图4B示出根据本发明的一些实施例的数据存储***采用的虚拟存储流。
图5是示出根据本发明的一些实施例在数据存储***中存储数据的过程的流程图。
具体实施方式
虽然描述了特定实施例,但这些实施例只是示例方式提供,并不旨在限制本发明的保护范围。实际上,本文描述的新颖方法和***可以以各种其他形式体现。而且,在不偏离本发明保护范围的情况下,可以对本文所述的方法和***形式进行各种省略、替换和变更。
概述
数据存储***能够采用压缩技术来满足增加的容量、可靠性以及性能的需求。在将主机***数据存储在数据存储***之前压缩主机***数据通常使得压缩的数据具有比主机***提供的原始未压缩的数据更小的大小。因此,主机***提供的固定大小的主机数据单元在压缩后变成可变大小的数据单元。存储和检索此类可变大小的数据存在许多挑战。例如,在数据存储***介质中存储可变大小的数据可能需要对数据存储***存储数据和保持跟踪所存储的数据的方式进行相当大的改变。作为另一示例,因为主机***通常希望固定大小的数据在数据检索期间被返回,也可能有必要对数据检索机制进行相当大的更改。作为又一示例,数据存储***吞吐率能够利用在物理上相邻存储在介质上的连贯逻辑地址来显著提高。不过,来自主机***的写入命令序列包括连续逻辑地址的多个交错(interleave)流是常见的。在采用压缩的数据存储***中对此类主机数据流进行去交错(de-interleave)导致进一步困难,因为压缩的数据跨越多个物理存储位置并且大小可变。
在一些实施例中,提供用于压缩和格式化主机数据(或用户数据)以在数据存储***中存储的机制。数据存储***能够在将固定大小的数据存储在介质上之前压缩固定大小的数据并格式化所获得的可变大小的压缩数据以用于存储在通常具有固定大小存储粒度的介质上,诸如磁介质的扇区和非易失性固态存储器的页面。一个或更多个模块能够压缩进来的主机数据并形成固定大小的“虚拟”存储单元(或存储单元)的输出流,其包含一个或更多个压缩主机数据单元、纠错和检测码(EDC)信息和用于解码存储单元的逻辑内容的元数据。虚拟存储单元用作压缩的主机数据的固定大小的容器。
在一些实施例中,通过使用多个写入流和/或虚拟数据流,交错(交叉存储)的主机写数据流被去交错、压缩和格式化。多个写入流能够独立去交错主机数据,以及多个虚拟数据流能够独立格式化压缩(或未压缩的)数据。去交错涉及将连续主机数据写入与非顺序主机数据写入分离以及将多个交错连续主机写入彼此分离。连续或基本连续压缩的主机数据存储在介质中的相邻或基本相邻物理存储器位置中。在一些实施例中,一个或更多个写入流的上下文能够根据需求被保存和恢复,诸如,当主机***提供应当由具体写入流处理的另外主机数据时。
***概述
图1示出根据本发明的一些实施例的主机***和数据存储***的结合100。如图所示,数据存储***120(例如,固态驱动器)包括控制器130和存储介质140。介质140包括非易失性固态存储器阵列150。固态存储器阵列150可以包括闪存集成电路、氧族化合物RAM(C-RAM)、相变存储器(PC-RAM或PRAM)、可编程金属化单元RAM(PMC-RAM或PMCm)、双向统一存储器(OUM)、电阻RAM(RRAM)、NAND存储器(例如,单级单元(SLC)存储器、多级单元(MLC)存储器或它们的任何结合)、NOR存储器、EEPROM、铁电存储器(FeRAM)、磁阻RAM(MRAM)、其他离散的NVM(非易失性存储器)芯片或它们的任何结合。介质140还包括磁存储装置160,磁存储装置160包括磁记录介质164。在一个实施例中,磁存储装置160利用叠瓦式磁记录。存储介质140能够进一步包括其他类型的存储装置。在一些实施例中,存储介质140能够只包括固态存储器阵列140或磁存储装置160中的一种。
控制器130能够经配置从主机***110的存储接口模块112(例如,装置驱动器)接收数据和/或存储存取命令。存储接口112通信的存储存取命令能够包括主机***110发出的写数据命令和读数据命令。读命令和写命令能够指定用于存取数据存储***120的逻辑地址(例如,逻辑块地址或LBA)。控制器130能够在介质140中执行接收到的命令。
数据存储***120能够存储主机***110通信的数据。换句话说,数据存储***120能够充当主机***110的存储器存储。为了促进这个功能,控制器130能够实现逻辑接口。逻辑接口能够向主机***110呈现数据存储***的存储器,作为能够存储用户数据的一组逻辑地址(例如,连贯地址)。内在地,控制器130能够将逻辑地址映射到介质140中的各种物理位置或地址。控制器130包括缓冲器132,缓冲器132能够包括易失性存储器,诸如随机存取存储器(RAM)(例如,DRAM、SRAM等)。在一个实施例中,缓冲器132在控制器130外部。控制器130还包括压缩和格式化模块134,其经配置压缩和格式化主机数据以用于存储在介质140中,并且解压缩和格式化存储数据以用于提供给主机***110。压缩和格式化模块134能够利用缓冲器132存储和检索数据并执行压缩和/或格式化任务,包括多个流压缩和/或格式化。在一个实施例中,压缩和格式化模块134在硬件诸如片上***(SoC)硬件模块中实现。硬件实现能够使用专用集成电路(ASIC)、现场可编程门阵列(FPGA)或它们的结合来实现。在另一实施例中,压缩和格式化模块134能够在固件中实现或实现为硬件和固件的结合。
在一些实施例中,主机***110在数据存储***120中存储数据并且数据存储***向主机***返回格式化为一个或更多个逻辑主机数据单元的数据。逻辑主机数据单元能够跨越逻辑地址范围,其中每个逻辑地址对应介质140中的物理位置。主机数据单元能够是任何合适大小(诸如512字节、1024字节(1KB)、2048字节(2KB)、4096字节(4KB)等)的固定大小的数据单元。在一个实施例中,主机***110采用512字节数据单元或扇区。在一些实施例中,介质140被划分为合适大小(诸如512字节、1024字节(1KB)、2048字节(2KB)、4096字节(4KB)等)的固定大小的物理介质存储单元(或存储器数据单元)。物理介质存储单元能够对应存储器的最小可编程和可读部分并且能够跨越各个存储器位置的物理地址。在一些实施例中,不同的介质类型包括不同大小的介质存储单元。例如,固态存储器阵列150能够被划分为芯片、块和页面(诸如2KB页面),并且磁记录介质164能够被划分为磁道、群集和扇区,诸如512字节扇区。
压缩和格式化
图2示出根据本发明的一些实施例的数据存储***120采用的压缩和格式化200。主机***110提供用于在数据存储***120中存储的主机数据(或用户数据)。主机***110能够提供固定大小的主机数据单元形式(诸如512字节的逻辑扇区)的主机数据。主机***110能够提供主机数据作为一个或更多个写数据命令的部分。在数据存储***120侧,压缩和格式化模块134压缩和格式化主机数据单元以用于存储在介质140中。
在一些实施例中,主机数据单元由映射单元模块210处理。映射单元能够被选择为主机数据单元大小的整数倍,诸如N×s1或s1/N,其中s1是主机数据单元大小(例如,512字节),并且N是整数。映射单元的大小能够经选择以便在通过压缩获得的存储空间的减小与存取存储在介质中的压缩和格式化数据相关联的延迟之间实现最佳或基本最佳平衡。在一些实施例中,映射单元构建器212将一个或更多个主机数据单元组合为一个或更多个映射单元。在一些实施例中,映射单元构建器212将连贯或连续的主机数据单元组合为一个或更多个映射单元。在一个实施例中,连贯或连续主机数据单元与连续的逻辑地址相关联。另外,大小等于主机数据单元大小的整数倍大小的匹配的主机数据单元能够存储在映射单元中。例如,假设主机***110发送具有对应于512字节逻辑扇区0-7、8-15和16-23的主机数据单元的写数据命令。假设映射单元构建器212经配置将匹配的4KB主机数据(或八个匹配的512字节逻辑扇区)组合为映射单元,其中,“匹配”是指开始(和结束)逻辑地址以及大小的匹配。对于上述示例,映射单元构建器212生成三个映射单元,其包含逻辑扇区0-7、8-15和16-23的主机数据单元。继续先前的示例,假设主机***110发送具有对应于逻辑扇区1-8的主机数据单元的写数据命令。这些主机数据单元与八个逻辑扇区相关联并具有4KB合计大小。不过,这些主机数据单元不与八个逻辑扇区的大块匹配(例如,介质存储单元边界线交叉)。就是说,这些主机数据单元的开始逻辑扇区是1,不是0。因此,映射单元构建器212生成如下面所讨论的两个单独的部分映射单元:第一个对应于逻辑扇区1-7,而第二个对应于逻辑扇区8。在一些实施例中,映射单元构建器212将非匹配的主机数据单元组合为映射单元。在一些实施例中,映射单元构建器212将非连贯或连贯以及非连续的主机数据单元组合为映射单元。
在一些实施例中,映射单元构建器212生成部分映射单元(或PMU),其包括比选定的或目标映射单元大小更少的主机数据。例如,假设主机***发送具有对应于512字节逻辑扇区0-10的主机数据单元的写数据命令,并假设映射单元构建器212经配置将匹配的4KB主机数据(或八个匹配的512字节逻辑扇区)组合为映射单元。映射单元构建器212生成对应于逻辑扇区0-7的主机数据单元的第一完全或完整映射单元和对应于逻辑扇区8-10的主机数据单元的第二部分映射单元。对应于和逻辑扇区8-10相关联的数据的部分映射单元能够在以后当主机***110将数据写入逻辑扇区11-15中时集成到完全映射单元中。
在一些实施例中,由映射单元模块210构建的映射单元(完全或部分)被压缩并且由压缩和加密模块220压缩可选地加密。在一些实施例中,数据压缩模块222首先压缩并随后可选加密所压缩的数据。加密在压缩后执行,因为加密数据被随机化并且可能是不可压缩的。在一些实施例中,使用无损压缩,诸如Lempel-Ziv-Welch(LZW)压缩。由数据压缩模块222生成的压缩映射单元(一个或更多)能够被称为压缩净负荷。在一些实施例中,部分映射单元未被压缩,以便以后更有效地集成到完全映射单元中。在一些实施例中,完全映射单元未被压缩。例如,一个未压缩的映射单元能够作为虚拟存储单元来存储,如下面解释的。
在一些实施例中,压缩(和可选加密)映射单元数据具有小于未压缩映射单元的大小的大小。因此,压缩映射单元能够具有可变大小。不过,如上面解释的,介质140能够具有固定大小的存储粒度,诸如固定大小的介质存储单元(或存储器数据单元)。例如,固态存储器阵列150能够包括存储器页面,其中,页面是最小可编程的和/或可检索的存储器单元。作为另一示例,磁记录介质164能够包括扇区,其中扇区是最小可编程和/或可检索存储器单元。压缩映射单元被提供给虚拟存储单元模块230,虚拟存储单元模块230将一个或更多个压缩映射单元(或在一些实施例中,未压缩的映射单元)组合为固定大小的存储单元以用于在介质中存储。
在一些实施例中,虚拟存储单元构建器232经配置将压缩映射单元组合为具有与介质存储单元的大小匹配的大小的虚拟存储单元。例如,虚拟存储单元的大小能够是介质存储单元的整数倍,诸如N×s2或s2/N,其中s2是介质存储单元大小,并且N是整数。在一个实施例中,虚拟存储单元的大小与介质存储单元的大小(诸如4KB)相同。在另一实施例中,虚拟存储单元的大小经选择使得一个或更多个压缩映射单元被组合为虚拟存储单元。在一些实施例中,不同大小的介质存储单元能够用于不同类型的介质。如图1所示,数据存储***120包括固态存储器140和磁存储装置160,磁存储装置160能够具有不同大小的介质存储单元。例如,固态存储器140能够包括大小为8KB的存储器页面,而磁记录介质164能够包括4KB扇区。虚拟存储单元构建器232能够组合两种类型的虚拟存储单元:在固态存储器140中被编程的8KB存储单元和写入磁记录介质164中的4KB存储单元。
在一些实施例中,包括一个或更多个压缩(或未压缩)数据单元的虚拟存储单元用填充数据填补,以便虚拟存储单元的大小与对应介质存储单元(例如,对应于虚拟存储单元将被存储的介质)的大小匹配。例如,假设压缩映射单元的大小为3.5KB,并使用4KB虚拟存储单元。虚拟存储单元构建器232能够将3.5KB压缩映射单元和0.5KB(或512字节)填充数据组合为虚拟存储单元。作为另一示例,假设两个压缩映射单元的合并大小为3.7KB,并使用4KB虚拟存储单元。虚拟存储单元构建器232能够将具有3.7KB的合并大小的两个压缩映射单元与0.3KB的填充数据组合为虚拟存储单元。填充数据能够包括一个或更多个合适的值,诸如所有零值。
在一些实施例中,压缩映射单元能够分离多个虚拟存储单元。压缩映射单元能够包括压缩净负荷或未压缩净负荷(例如,部分映射单元净负荷可以未压缩)。例如,假设第一压缩映射单元大小为1KB,第二压缩映射单元大小为3.5KB,第三压缩映射单元大小为3KB,则使用4KB虚拟存储单元。虚拟存储单元构建器232能够将第一压缩映射单元(大小为1KB)和3KB的第二压缩映射单元(或分离的压缩映射单元)组合为第一虚拟存储单元。此外,虚拟存储单元构建器232能够将剩下的0.5KB的第二压缩映射单元(或剩余压缩映射单元)、第三压缩映射单元(大小为3KB)和0.5KB的填充数据组合为第二虚拟存储单元。
在一些实施例中,组合为虚拟存储单元的多个压缩映射单元只包括连续主机数据单元。例如,包括对应于512字节逻辑扇区0-7的主机数据单元的第一压缩映射单元和包括对应于逻辑扇区8-15的主机数据单元的第二压缩映射单元被合并为虚拟存储单元。在一些实施例中,虚拟存储单元能够包括非连续主机数据单元。例如,包括对应于逻辑扇区0-7的主机数据单元的第一压缩映射单元和包括对应于逻辑扇区32-39的主机数据单元的第二压缩映射单元被合并为虚拟存储单元。
在一些实施例中,映射单元模块210、压缩和加密模块220和虚拟存储单元模块230操作存储在缓冲器132中的数据。就是说,映射单元、压缩映射单元和虚拟存储单元在缓冲器132中形成并***控。组合的虚拟存储单元能够存储在非易失性介质140中。
在一些实施例中,读数据包括执行与写数据相关联的相反操作。响应于从主机***接收到的读数据命令,该命令包括将要被检索的主机数据的逻辑地址,虚拟存储单元解构器234在介质140中(和/或缓冲器132中)识别或定位具有将要被检索的主机数据的一个或更多个虚拟存储单元。如下面解释的,虚拟存储单元解构器234能够使用映射数据用于执行识别。虚拟存储单元解构器234从检索的一个或更多个虚拟存储单元中识别一个或更多个压缩映射单元,所述一个或更多个压缩映射单元包含将要被检索的主机数据。数据解密器和解构器244解密(如果数据被加密)并解压(如果数据被压缩)一个或更多个压缩映射单元的净负荷以获得包含将要被检索的主机数据的一个或更多个映射单元。映射单元解构器214拆包(unpack)将要从一个或更多个映射单元中检索的主机数据。将要被检索的主机数据被返回到主机***110。
在一些实施例中,一个或更多个映射单元模块210、压缩和加密模块220和虚拟存储单元模块230在硬件(诸如一个或更多个片上***(SoC)硬件模块)中实现。硬件实现能够使用专用集成电路(ASIC)、现场可编程门阵列(FPGA)或它们的结合来实现。在另一实施例中,模块210、220和230能够在固件中实现或实现为硬件和固件的结合。
压缩和格式化以及使用多个流的格式化
图3示出根据本发明的一些实施例的数据存储***采用的压缩和格式化数据流300。数据流300能够由控制器130和/或压缩和格式化模块134实现。主机数据310作为一组主机数据单元312从主机***110接收。在一个实施例中,主机数据单元312是逻辑扇区,诸如512字节的逻辑扇区。主机数据单元312包括主机(或用户)数据以及能够检测错误和/或重构主机数据的纠错和检测(EDC)数据。在一个实施例中,EDC数据能够是奇偶校验数据校验和、循环冗余校验(CRC)数据或合适的纠错码。在一个实施例中,主机数据的512字节逻辑扇区包括4字节的EDC数据。
在一些实施例中,主机数据310被组合为一个或更多个映射单元320,如上面讨论的。这能够通过映射单元模块210执行。如上面解释的,映射单元320能够被选择为主机数据单元大小的整数倍。在一些实施例中,映射单元320包括一个或更多个主机数据单元324(其共同组成映射单元净负荷)、映射单元元数据322和映射单元EDC 326。映射单元元数据322能够包括下列信息:净负荷类型(例如,压缩或未压缩)、净负荷中的主机数据单元的计数(或数量)、净负荷中的一个或更多个主机数据单元的逻辑地址以及净负荷长度。在其他实施例中,元数据322能够包括附加或替代字段。在一些实施例中,当映射单元模块210将连续主机数据单元组合为映射单元时,净负荷中的第一主机数据单元的逻辑地址和主机数据单元大小足以识别和定位净负荷中的所有主机数据单元。例如,如果对应于512字节逻辑扇区0-7的主机数据单元被组合为4KB映射单元,则与逻辑扇区0相关联的开始逻辑地址和逻辑扇区大小(512字节)足以描述所有逻辑扇区。在此情况下,净负荷中的主机单元的计数设定为8。作为另一示例,如果对应于512字节的逻辑扇区0-4的主机数据单元被组合为部分映射单元,净负荷中的主机单元的计数设定为5。
在一些实施例中,针对映射单元的整个净负荷计算映射单元EDC326。映射单元EDC326的大小比与净负荷中的主机数据单元324相关联的EDC数据的合计大小小。例如,假设主机数据的512字节逻辑扇区包括4字节的EDC数据并且8个逻辑扇区(或4KB)被组合为映射单元320。能够生成4字节的映射单元EDC 326,与净负荷中的主机数据单元的EDC数据的合计大小(32字节)相比,这产生28字节的节省。在一些实施例中,这种空间节省允许将元数据322包含在映射单元320中,而无需占用任何额外的空间。在一些实施例中,映射单元EDC326通过净负荷的开始逻辑地址布置(seed)。
在一些实施例中,映射单元320被压缩并且可选地被加密,以产生一个或更多个压缩映射单元330,如上面讨论的。这能够通过压缩和加密模块220执行。压缩的映射单元(诸如映射单元331、337或338)包括压缩的净负荷334(对应于压缩的映射单元)、映射单元元数据332和映射单元EDC 336,映射单元EDC 336能够与EDC 326相同。映射单元元数据332能够包括下列信息:净负荷类型(例如,压缩或未压缩)、压缩净负荷中的主机数据单元的计数(或数量)、压缩净负荷中的一个或更多个主机数据单元的逻辑地址以及压缩净负荷长度。在其他实施例中,元数据332能够包括附加或替代字段。因为压缩产生可变大小的数据,压缩净负荷长度字段能够不同于两个或更多个不同的压缩映射单元,诸如压缩映射单元331、337和338。在一些实施例中,当连续主机数据单元被组合为映射单元并被组合为压缩净负荷时,压缩净负荷中的第一主机数据单元的逻辑地址和主机数据单元大小足以描述压缩净负荷中的所有主机数据。
在一些实施例中,当加密在压缩之后被执行时,压缩净负荷334和映射单元EDC336被加密。元数据332未被加密或压缩。元数据332能够描述压缩净负荷的内容,包括描述与压缩净负荷中的主机数据相关联的逻辑地址。因为在一些实施例中,主机***110向数据存储***120提供解密和/或加密密钥(一种或更多),不加密元数据332允许数据存储***针对各种背景或内务管理任务操控压缩净负荷,而不必首先执行解密。例如,数据存储***120能够执行垃圾收集而不必从主机***110获得解密密钥(一种或更多)。垃圾收集能够包括从虚拟存储单元省略或移除具有无效数据的一个或更多个映射单元。例如,假设虚拟存储单元包括对应于512字节的逻辑扇区0-7的主机数据单元的映射单元。进一步假设由于主机***活动,更新存储在逻辑扇区3中的主机数据,从而使对应于逻辑扇区3的虚拟存储单元中的数据无效。垃圾收集操作能够产生新的虚拟存储单元,其包括对应于逻辑扇区0-2和4-7的映射单元。作为另一示例,数据存储***120能够重新包装压缩净负荷而无需解密密钥(一种或更多)。重新包装能够包括压缩净负荷的碎片整理,诸如将部分映射单元组合为完全映射单元,格式转换,诸如在用于不同类型的介质上存储的不同大小的虚拟存储单元中存储虚拟存储单元净负荷,等等。碎片整理能够包括重新排序虚拟存储单元中的主机数据单元的映射单元。例如,假设虚拟存储单元包括对应于512字节的逻辑扇区0、1、3、2和4-7的主机数据单元的映射单元。碎片整理操作能够重新排序虚拟扇区中的映射单元,以便映射单元以对应于逻辑扇区0-7的主机数据单元的顺序来布置。在一些实施例中,碎片整理能够结合垃圾收集执行。例如,假设虚拟存储单元包括对应于512字节的逻辑扇区0、1、2、4、3和5-7的主机数据单元的映射单元。还假设由于主机***活动,更新存储在逻辑扇区2中的主机数据,从而使对应于逻辑扇区2的虚拟存储单元中的数据无效。结合碎片整理执行垃圾收集能够产生新的虚拟存储单元,其包括以此顺序对应于逻辑扇区0、1、3、4、5、6和7的映射单元。在一些实施例中,元数据332被加密和/或压缩。
在一些实施例中,部分、完全和/或多个压缩/未压缩映射单元被一个或更多个虚拟存储流(如下面描述的)组合为虚拟存储单元340。组合能够通过虚拟存储单元模块230执行。在一些实施例中,虚拟存储单元能够包括下列中的一个或更多个:未压缩映射单元(一个或更多)(完全和/或部分)、分离若干虚拟存储单元的一个或更多个压缩映射单元的部分(分离/剩余部分)、压缩映射单元(一个或更多)、填充数据等。在所示示例中,虚拟存储单元340包括一个或更多个完全或部分压缩映射单元344(共同组成压缩净负荷)、可选填充数据346(从而虚拟存储单元的大小与对应的介质存储单元的大小匹配)、虚拟存储单元元数据342和经确定用于虚拟存储单元的内容的虚拟存储单元EDC 348。虚拟存储单元元数据342能够包括下列信息:用于识别介质140中的虚拟存储单元的物理位置的虚拟存储单元逻辑地址,压缩净负荷中第一压缩映射单元的元数据字段的虚拟存储单元内的偏移以及虚拟存储单元的序列号(或者时间戳的另一形式)。在其他实施例中,元数据342能够包括附加或替代字段。
在一些实施例中,向主机***110返回存储的数据包括执行与写数据相关联的相反操作。响应于从主机***接收到的读数据命令,该命令包括将要被检索的主机数据的逻辑地址,虚拟存储单元模块230在介质140中(和/或缓冲器132中)识别或定位具有将要被检索的主机数据的一个或更多个虚拟存储单元340。在一些实施例中,虚拟单元存储单元模块230利用映射表(或另一合适的数据结构),该映射表反映主机***110用来寻址储存在数据存储***120中的数据的逻辑地址和存储与逻辑地址相关联的数据的虚拟存储单元之间的关联。虚拟存储单元模块230也能够使用虚拟存储单元元数据342从介质(和/或从缓冲器)中识别和检索具有将要被检索的主机数据的虚拟存储单元。
使用元数据332,虚拟存储单元模块230从所检索的一个或更多个虚拟存储单元识别一个或更多个压缩映射单元,一个或更多个压缩映射单元包含将要检索的主机数据。在一些实施例中,被检索的虚拟存储单元能够包括含有将要被检索的主机数据的一个或更多个压缩映射单元以及不包含探索的(sought-after)主机数据的一个或更多个压缩映射单元。这种分类能够使用压缩映射单元的元数据字段来执行。在此情况下,不包含将要被检索的主机数据的一个或更多个映射单元被跳过,从而提高数据传输操作的效率。例如,假设主机***110请求对应于逻辑扇区3的主机数据,但是所检索的映射单元包含对应于逻辑扇区0-7的主机数据。数据存储***能够只返回对应于逻辑扇区3的主机数据。作为另一示例,假设主机***110请求对应于逻辑扇区0-7的主机数据,并且第一检索的映射单元包含对应于逻辑扇区0-7的主机数据。进一步假设第二映射单元包含对应于逻辑扇区3的主机数据的“新鲜”(或最新)副本。数据存储***能够返回包含在第一映射单元中、逻辑扇区0-2和4-7的主机数据(从而跳过逻辑扇区3、包含在第一映射单元中的主机数据)并返回逻辑扇区3、包含在第二映射单元中的主机数据。数据压缩和加密模块220解密(如果数据被加密)并解压(如果数据被压缩)包含将要被检索的主机数据的一个或更多个压缩映射单元。映射单元模块210拆包将要从所获得的一个或更多个映射单元检索的主机数据。将要检索的主机数据被返回到主机***110。在一些实施例中,映射单元元数据322用于确保正确的数据被返回到主机***110。
在一些实施例中,多个读/写数据流或信道350经配置处理多个主机写和/或读数据流,这能够提供连贯和/或随机序列的主机数据单元。当主机***110写数据时,写数据流350能够将主机数据单元组合为一个或更多个映射单元320。例如,假设主机***110正在写入逻辑扇区0、100、1、101、2、102、3、103等的主机数据单元。就是说,主机***110正在写入两个交错连续的主机写数据流:0、1、2、3等(主机写数据流1)和100、101、102、103等(主机写数据流2)。主机写数据流1和2能够被分别分配给写数据流1和2。写数据流1和2去交错主机数据并将主机数据组合为映射单元(完全和/或部分)。写数据流1和2能够彼此独立操作。写数据流1和2能够保留或保持所分配的资源,诸如存储器,而主机***110继续写入由所述流处理的连续数据。这能够增加效率,因为最小化了上下文切换。在一些实施例中,写数据流350利用被组织为FIFO的存储器。例如,每个写数据流能够包括单独的FIFO。在其他实施例中,写数据流350采用替代和/或附加数据结构。
在一些实施例中,由写数据流350构建的映射单元320被压缩,并且可选地由压缩/加密模块360加密,压缩/加密模块360能够对应数据压缩模块222。在一些实施例中,由写数据流350构建的一个或更多个映射单元320未被压缩。例如,部分映射单元可以不被压缩,如旁路335所示。如上面解释的,压缩/加密模块360能够产生压缩的映射单元330(具有压缩或未压缩的净负荷)。压缩映射单元能够被虚拟存储单元模块370组合为虚拟存储单元340,虚拟存储单元模块370能够对应于虚拟存储单元构建器232。在一些实施例中,写数据流350、压缩/加密模块360和虚拟存储单元模块370对存储在缓冲器132中的数据进行操作并将数据存回缓冲器132中。
在一些实施例中,采用任何合适数量的写数据流350。写数据流350的数量可以与缓冲器132的容量和***资源的可用性平衡。在一些实施例中,一个或更多个写数据流350经保存用于后台操作,诸如垃圾收集、坏块管理、耗损均衡等。在一些实施例中,不同的写数据流350能够经保存用于不同介质类型的后台操作。例如,写数据流能够经保存用于固态存储器150的后台操作,以及另一写数据流能够经保存用于磁存储装置160的后台操作。
在一些实施例中,主机数据在一段时间被保留或保持在写数据流中。例如,假设主机***110正在写入用于512字节的逻辑扇区0、5、3等的主机数据单元,以及采用4KB映射单元。这个主机写数据流能够被分配给写数据流1。在一个实施例中,这些主机数据单元能够保持在写数据流1FIFO(或另一合适的数据结构)中,以便当主机***110提供逻辑扇区1、2、4、6和7的主机数据单元时,构建具有逻辑扇区0-7的主机数据单元的完全映射单元。
在一些实施例中,一个或更多个写数据流350的上下文被保存并在需要时被恢复。继续上面的示例,指定用于部分映射单元的写数据流2形成部分映射单元:第一个用于和逻辑扇区0相关联的主机数据,第二个用于和逻辑扇区5相关联的主机数据,以及第三个用于和逻辑扇区0相关联的主机数据。这些部分映射单元能够被组合为虚拟存储单元,虚拟存储单元能够存储在缓冲器132中。在一些实施例中,组合的虚拟存储单元内的主机数据单元序列中的下一个主机数据单元的偏移能够与映射单元EDC计算的状态被标记或保存。写数据流2的上下文(例如,逻辑扇区0、3和5的主机数据单元)被保存,以及分配给写数据流2的资源被解除分配。当主机***110提供逻辑扇区1、2、4、6和7的主机数据单元时,写数据流2的上下文被恢复,并且这些新的主机数据单元被分配给写数据流。所分配的写数据流能够是与写数据流2不同的流。所分配的写数据流能够将第一、第二和第三部分映射单元与逻辑扇区1、2、4、6和7的主机数据单元集成为完全映射单元(具有4KB净负荷)。在一个实施例中,其中,硬件可以支持N个流,上下文的保存充当其容量的虚拟扩展,以便能够跟踪和处理数量为M的流(M>N)。
在一些实施例中,虚拟存储单元流将逻辑扇区1、2、4、6和7的主机数据单元集成为包含逻辑扇区0、3和5的主机数据单元的虚拟存储单元。这能够通过采用所保存的偏移和EDC计算的状态来有效地执行。在其他实施例中,逻辑扇区1、2、4、6和7的主机数据单元在第四部分映射单元中被组合。写数据流能够将第一、第二、第三和第四映射单元组合为完全映射单元,该完全映射单元能够被压缩和组合为虚拟存储单元。当完成虚拟存储单元(或与介质存储单元匹配)时,虚拟存储单元能够存储在固态存储器150或磁存储装置160中。
在一些实施例中,完全映射单元能够在写数据流中完成。例如,假设主机***110写入逻辑扇区0-3的主机数据。这个数据能够被分配给写数据流。假设主机***110继续写数据。所分配的写数据流能够累积主机数据直到所累积的主机数据能够组合完全映射单元。继续上面的示例,当主机***110写入逻辑扇区4-7的主机数据单元时,所分配的写数据流能够组合完全映射单元。所分配的写数据流将逻辑扇区0-3的主机数据与逻辑扇区4-7的主机数据组合为完全映射单元,该完全映射单元能够被压缩、存储在虚拟存储单元中,并被写入固态存储器150或磁存储装置160中。
在一些实施例中,一个或更多个部分映射单元能够被合并为完全映射单元。例如,假设第一部分映射单元包括逻辑扇区0-3的主机数据以及第二部分映射单元包括逻辑扇区4-7的主机数据。第一和第二部分映射单元能够被合并为完全映射单元,该完全映射单元随后可以被压缩、存储在虚拟存储单元中,并被写入固态存储器150或磁存储装置160中。在一个实施例中,非连续数据被合并为完全映射单元。
在一些实施例中,部分映射单元能够作为完全映射单元来完成。例如,假设部分映射单元包括逻辑扇区0-3的主机数据。在以后的时间,主机***110写入逻辑扇区4-7的主机数据。部分映射单元净负荷和这个主机数据能够被合并为完全映射单元,该完全映射单元随后可以被压缩并存储在虚拟存储单元中。当完成虚拟存储单元(或与介质存储单元匹配)时,虚拟存储单元被写入固态存储器150或磁存储装置160中。在一个实施例中,部分映射单元净负荷和逻辑扇区4-7的主机数据被组合为未指定用于部分映射单元的写数据流中的完全映射单元。在一个实施例中,非连续数据被合并为完全映射单元。
在一些实施例中,能够更新映射单元数据。例如,部分映射单元能够与完全映射单元集成。假设使用4KB映射单元和虚拟存储单元,并且假设主机数据单元对应于512字节逻辑扇区。进一步假设虚拟存储单元包括用于对应于逻辑扇区0-7的主机数据单元的压缩净负荷。还假设主机***写入逻辑扇区5的新主机数据。这个主机数据能够由写数据流(例如,指定用于部分映射单元的写数据流)处理,并且部分映射单元被构建。这个部分映射单元能够与包括逻辑扇区0-7的主机数据的虚拟存储单元集成。虚拟存储单元能够以上述方式被定位,并且所更新的、逻辑扇区5的主机数据单元用于替代虚拟存储单元中该逻辑扇区的过时主机数据。
在一些实施例中,多个读数据流350或信道经配置处理多个主机读流,其能够检索连贯和/或随机序列的主机数据单元。读数据能够包括执行与写数据相关联的相反操作。例如,假设主机***110正在读取逻辑扇区0、100、1、101、2、102、3、103等的主机数据单元。就是说,主机***110正在读取两个交错连续的主机读数据流:0、1、2、3等(主机读数据流1)和100、101、102、103等(主机读数据流2)。主机读数据流1和2能够被分别分配给读数据流1和2。具有主机数据读流1请求的数据的虚拟存储单元被虚拟存储单元模块370定位和拆包,被解密/解压模块360解密(如果需要)和解压(如果需要),并被提供给读数据流1。类似地,具有主机数据读流2请求的数据的虚拟存储单元被模块370定位和拆包,被模块360解密(如果需要)和解压(如果需要),并被提供给读数据流2。读数据流1和2以主机***所希望的格式向主机***110返回主机数据。读数据流1和2能够彼此独立操作。在一些实施例中,读数据流能够配置有写数据流的一个或更多个上述特性。在一个实施例中,读数据流350的上下文能够被保存并在需要时被恢复。
图4A示出根据本发明的一些实施例的数据存储***120采用的多个虚拟存储流400A。虚拟存储流352、354、356和362经配置处理多个主机写和/或读数据流,其能够提供连贯和/或随机序列的主机数据单元。在一些实施例中,虚拟存储流经配置处理来自写数据流的映射单元并向读数据流提供虚拟映射单元。任何合适数量的虚拟存储流能够根据数据存储***120的可用资源来使用。在一些实施例中,部分映射单元被分配给虚拟存储流362的专用部分映射单元。在其他实施例中,部分映射单元被分配给任何虚拟存储流。在一个实施例中,图4A所示的流在硬件中实现。
在一些实施例中,第一去交错序列的主机数据单元被分配给虚拟存储流352,虚拟存储流352将压缩映射单元组合为虚拟存储单元的第一流。第二去交错序列的主机数据单元被分配给虚拟存储流354,虚拟存储流354将压缩映射单元组合为虚拟存储单元的第二流。虚拟存储流352和354能够彼此独立操作。在一些实施例中,如上面解释的,一个或更多个虚拟存储流的上下文能够被保存并在需要时被恢复。
在一些实施例中,一个或更多个虚拟存储单元被保留一段时间。例如,假设主机***110正在读取512字节的逻辑扇区0-4、100-104、5-7、105-107等。这对应于第一主机读数据流0-4、5-7等和第二主机读数据流100-104、105-107等。假设虚拟存储流352经分配处理第一主机读数据流,而虚拟存储流354经分配处理第二主机读数据流。虚拟存储流352能够定位包含逻辑扇区0-4和5-7的主机数据单元的虚拟存储单元。使用如上面解释的压缩映射单元元数据,逻辑扇区0-4的主机数据能够被拆包、解压(如果需要),并被返回给主机***。不是丢弃虚拟存储单元,虚拟存储流352能够保留虚拟存储单元,以便逻辑扇区5-7的主机数据在主机***110请求时可用。这能够提供更有效的数据检索。
图4B示出根据本发明的一些实施例的数据存储***120采用的虚拟存储流400B。在一个实施例中,流400B经配置处理写和/或检索连续数据的主机写和/或读数据流。例如,假设主机***110正在写入逻辑扇区4-69的主机数据。流400B能够将第一部分映射单元与对应于逻辑扇区4-7的主机数据单元组合。这个部分映射单元能够被存储在虚拟存储单元372、VSU 1中,以便允许虚拟存储流400B处理后续主机数据。接下来,流400B能够将对应于逻辑扇区8-63的匹配的主机数据单元组合为压缩映射单元并将压缩映射单元存储到完整虚拟存储单元374到376(VSU 2到VSU N-1)中。流400B能够将第二部分映射单元与剩余逻辑扇区64-69的主机数据单元组合。这个部分映射单元能够被存储在虚拟存储单元378、VSU N中。在一个实施例中,根据主机模式,可以不生成包含部分映射单元的虚拟存储单元372和378。例如,主机***110可以经编程完全匹配主机数据,诸如对应于逻辑扇区0-63的主机数据单元,以便流400B将虚拟存储单元与完全映射单元组合。在一个实施例中,数据存储***120根据可用资源实现任何合适数量的虚拟存储流400B。在一个实施例中,流400B(或多个流)在硬件中实现。
写数据的过程
图5是示出根据本发明的一些实施例在数据存储***120中写入或编程数据的过程500的流程图。所示出的过程能够由控制器130和/或压缩和格式化模块134执行。在块502中,过程500接收来自主机***110的一个或更多个写数据命令。写数据命令指定待写入至对应逻辑地址的一个或更多个主机数据单元,所述逻辑地址能够被分配给写数据流。主机数据单元具有固定大小。过程500转换到块504,在504处,过程500将一个或更多个主机数据单元组合为一个或更多个映射单元。如上面解释的,一个或更多个映射单元能够是完全或部分映射单元。在一个实施例中,如果一个或更多个主机数据单元与存储器数据单元(例如,扇区,页面等)匹配,过程500将一个或更多个主机数据单元组合为一个或更多个完全映射单元。否则,过程500将一个或更多个主机数据单元存储在一个或更多个部分映射单元中。在一些实施例中,过程500将一个或更多个主机数据单元组合为完全和部分映射单元。在块506中,过程500确定当前组合的映射单元是否是部分映射单元。如果映射单元是完全映射单元,则过程500转换到块516,在516处,过程500将映射单元分配给适当的虚拟存储流。在块518中,过程压缩映射单元的主机数据单元,从而获得压缩映射单元,所述压缩映射单元由于压缩操作是可变大小的。过程500可选加密压缩数据。在块520中,过程500将一个或更多个压缩映射单元组合为一个或更多个大小可变的虚拟存储单元。过程500转换到块512,在512处,过程500确定是否完成当前虚拟存储单元(或与介质存储单元匹配)或主机流是否被该过程视为完成(例如,主机在足够量的时间内停止写入连续数据,以便发生超时)。如果满足这些条件中的任一个条件,则过程500转换到块522,在522处,过程500将当前的虚拟存储单元存储在介质140中。在一个实施例中,如果完成主机流,则过程500能够向当前的虚拟存储单元添加填充数据以完成该虚拟存储单元并将完成的虚拟存储单元存储在介质140中。如果过程500在块512中确定未完成当前虚拟存储单元并且主机流未视为完成,则过程转换到块502,在502处,过程500继续处理主机数据。
如果在块506中,过程500确定当前组合的映射单元是部分映射单元,则过程转换到块508,在508处,过程500将部分映射单元分配给虚拟存储流的部分映射单元。如上面解释的,在一些实施例中,部分映射单元未被压缩,以便提高碎片整理效率。在块509中,过程500可选加密部分映射单元数据。在块510中,过程500将一个或更多个部分映射单元组合为虚拟存储单元。过程500转换到块512,在512处,过程500确定是否完成虚拟存储单元(或与介质存储单元匹配)或主机流是否被该过程视为完成(例如,主机在足够量的时间内停止写入连续数据,以便发生超时)。如果满足这些条件中的任一个条件,则过程500转换到块514,在514处,过程500将虚拟存储单元存储在介质140中。在一个实施例中,如果完成主机流,则过程500能够向虚拟存储单元添加填充数据以完成该虚拟存储单元并将完成的虚拟存储单元存储在介质140中。在一些实施例中,过程500不执行块514的操作,而缓冲器132中存在充足的空间。如果过程500在块512中确定未完成虚拟存储单元并且主机流未视为完成,则过程转换到块502,在502处,过程500继续处理主机数据。
结论
所公开的用于数据存储***的数据的多个流压缩和格式化的方法能够增加容量、可靠性和性能。在一些实施例中,在介质上的连贯或相邻存储器位置中存储压缩的连续主机数据至少改善了读取吞吐率。因为增加了读取率,能够减少主机***的恢复时间。这允许主机***在上电后更快速“唤醒”、重新启动、睡眠和/或冬眠事件。在一些实施例中,增加了写或编程吞吐率,因为大小更小的压缩数据存储在介质上。另外,存储压缩数据增加介质的有效容量。这还能够降低成本,例如,因为可能需要更少的固态高速缓存存储器并增加高速缓存命中率和整体性能。在一些实施例中,尤其是对于固态存储器介质,实现更低的写放大和增加的供应量。
其他变体
本领域的技术人员将理解,在一些实施例中,附加或替代模块能够用于执行压缩和格式化。映射单元、压缩映射单元和/或虚拟存储单元能够包括附加或替代字段。在所公开的过程(诸如图5中示出的过程)中采用的实际步骤可以不同于图中所示的那些步骤。能够使用附加***组件,并且所公开的***组件能够被组合或省略。根据所述实施例,上述步骤中的特定步骤可以被删除,可以添加其他步骤。
虽然已经描述了特定实施例,这些实施例仅通过示例来提供,并不旨在限制本公开的保护范围。实际上,本文描述的新颖方法和***可以以各种其他形式体现。而且,在不偏离本公开保护精神的情况下,可以对本文所述的方法和***进行各种形式的省略、替换和更改。所附权利要求及其等同体旨在覆盖落入本公开保护范围和精神内的各种形式或更改。例如,本文公开的***和方法能够应用到硬盘驱动器、混合硬盘驱动器等。此外,可以附加或替代地使用其他形式的存储装置(例如,DRAM或SRAM,电池备份的易失性DRAM或SRAM装置,EPROM,EEPROM存储器等)。作为另一示例,附图中示出的各个组件可以被实现为处理器、ASIC/FPGA上的软件和/或固件或专用硬件。而且,上述公开的具体实施例的特征和属性可以以各种方式结合,以便形成附加实施例,所有这些实施例落入本公开的范围内。虽然本公开提供一些优选实施例和应用,但是其他实施例对于本领域的技术人员来说是明显的,包括没有提供本文阐述的全部特征和优点的实施例,它们都落入本公开的范围内。因此,本公开的范围仅由所附权利要求限定。
Claims (26)
1.一种数据存储***,其包括:
固态非易失性存储器,即固态NVM,所述固态非易失性存储器经配置存储多个存储器数据单元,存储器数据单元是所述固态NVM中的存储单元;
缓冲器;和
控制器,所述控制器经配置:
处理从主机***接收到的多个写数据命令,所述命令与和多个逻辑地址相关联的多个主机数据单元相关联,所述控制器进一步被配置为:
在所述多个主机数据单元内,识别与连续逻辑地址相关联的第一组连续主机数据单元,所述第一组连续主机数据单元包括净负荷;
将所述净负荷组合为第一映射单元,其中所述第一映射单元与所述存储器数据单元匹配;
将所述第一映射单元压缩为第一压缩净负荷,其中所述第一压缩净负荷与所述存储器数据单元不匹配;
至少部分基于与所述第一压缩净负荷相关联的逻辑地址,从多个数据存储流选择第一数据存储流;使所述第一压缩净负荷与所述第一映射单元与第一数据存储流相关联;
在所述第一数据存储流内,至少将所述第一压缩净负荷组合为第一存储单元,其中所述第一存储单元与与所述存储器数据单元匹配;以及
在所述固态NVM中存储所述第一存储单元。
2.根据权利要求1所述的数据存储***,其中所述控制器进一步经配置:
将第二组连续主机数据单元组合为第二映射单元;
至少部分基于与所述第二组连续主机数据单元相关联的逻辑地址,从所述多个数据存储流选择第二数据存储流;并且
将所述第二映射单元与所述第二数据存储流相关联,其中所述第一组连续主机数据单元的主机数据单元与所述第二组连续主机数据单元的主机数据单元不连续。
3.根据权利要求1所述的数据存储***,其中,每个数据存储流经配置与和其他数据存储流相关联的逻辑地址序列不同的逻辑地址序列相关联。
4.根据权利要求1所述的数据存储***,其中所述控制器进一步经配置保存所述第一数据存储流的上下文并响应于从所述主机***接收另外的写数据命令而恢复所述上下文,所述另外的写数据命令与另外的一个或更多个逻辑地址相关联,所述另外的一个或更多个逻辑地址与和所述第一组连续主机数据单元相关联的多个逻辑地址连续。
5.根据权利要求1所述的数据存储***,其中,响应于确定所述净负荷未与所述存储器数据单元匹配,所述控制器进一步经配置:
将所述第一组连续主机数据单元组合为部分映射单元;
从多个数据存储流选择与所述第一数据存储流不同的第二数据存储流,其中所述第二数据存储流经指定用于组合部分映射单元;
使所述部分映射单元与所述第二数据存储流相关联;
在所述第二数据存储流内,至少将所述第一映射单元组合为第二存储单元,其中所述第二存储单元未与所述存储器数据单元匹配;以及
在所述缓冲器中存储所述第二存储单元。
6.根据权利要求1所述的数据存储***,其中响应于确定所述净负荷未与所述存储器数据单元匹配,所述控制器进一步经配置:
将所述净负荷连同至少一个另外净负荷组合为第二净负荷,其中所述至少一个另外净负荷包括一个或更多个主机数据单元并且所述第二净负荷与所述存储器数据单元匹配;
将所述第二净负荷压缩为第二压缩净负荷;
至少将所述第二压缩净负荷组合为第二存储单元;以及
当完成所述第二存储单元时,在所述固态NVM中存储所述第二存储单元。
7.根据权利要求6所述的数据存储***,其中所述控制器进一步经配置用填充数据填补所述第二存储单元,所述填充数据的大小经选择使得所述第二存储单元与所述存储器数据单元匹配。
8.根据权利要求1所述的数据存储***,其中响应于确定所述净负荷未与所述存储器数据单元匹配,所述控制器进一步经配置:
累积另外的一个或更多个主机数据单元;
将所述净负荷和另外的一个或更多个主机数据单元组合为第二映射单元,其中所述净负荷和另外的一个或更多个主机数据单元的集合与所述存储器数据单元匹配;
将所述第二映射单元压缩为第二压缩净负荷;
至少将所述第二压缩净负荷组合为第二存储单元;以及
在所述固态NVM中存储所述第二存储单元。
9.根据权利要求8所述的数据存储***,其中所述控制器进一步经配置:
在所述第一数据存储流内累积所述另外的一个或更多个主机数据单元;并
在所述第一数据存储流内至少将所述第一压缩净负荷的集合组合为所述第二存储单元。
10.根据权利要求1所述的数据存储***,其中所述控制器进一步经配置:
处理从所述主机***接收到的多个读数据命令,读命令与对应于包括多个主机数据单元的存储器数据单元的逻辑地址范围相关联:所述控制器进一步经配置:
将所述多个逻辑地址范围分离为多组连续逻辑地址范围;以及
使第一组连续逻辑地址范围与多个读数据流的第一读数据流相关联。
11.根据权利要求10所述的数据存储***,其中所述控制器进一步经配置使第二组连续逻辑地址与所述多个读数据流的第二读数据流相关联,并且其中所述第一组连续逻辑地址与所述第二组连续逻辑地址不连贯。
12.根据权利要求10所述的数据存储***,其中所述控制器进一步经配置:
识别并检索存储在所述固态NVM中的一个或更多个存储单元,所述NVM存储与所述第一组连续逻辑地址相关联的多个主机数据单元;
识别所检索的一个或更多个存储单元的一个或更多个压缩映射单元,其中所述一个或更多个压缩映射单元的合并压缩净负荷至少包括与所述第一组连续逻辑地址相关联的所述多个主机数据单元;
解压所识别的一个或更多个压缩映射单元的压缩净负荷;以及
向所述主机***返回与所述第一组连续逻辑地址相关联的所述多个主机数据单元。
13.根据权利要求1所述的数据存储***,其中与所述存储器数据单元匹配包括具有与所述存储器数据单元的大小整数倍的大小。
14.在一种包括固态非易失性存储器即固态NVM和缓冲器的数据存储***中的一种数据存储方法,其中所述固态NVM经配置存储多个存储器数据单元,存储器数据单元是所述固态NVM中的存储单元,所述数据存储方法包括:
响应于从主机***接收多个写数据命令,所述命令与和多个逻辑地址相关联的多个主机数据单元相关联:
在所述多个主机数据单元内,识别与连续逻辑地址相关联的第一组连续主机数据单元,所述第一组连续主机数据单元包括净负荷;
将所述净负荷组合为第一映射单元,其中所述第一映射单元与所述存储器数据单元匹配;
将所述第一映射单元压缩为第一压缩净负荷,其中所述第一压缩净负荷与所述存储器数据单元不匹配;
至少部分基于与所述第一压缩净负荷相关联的逻辑地址,从多个数据存储流选择第一数据存储流;
使所述第一压缩净负荷与所述第一映射单元与第一数据存储流相关联;
在所述第一数据存储流内,至少将所述第一压缩净负荷组合为第一存储单元,其中所述第一存储单元与与所述存储器数据单元匹配;以及
在所述固态NVM中存储所述第一存储单元,
其中,所述方法由所述数据存储***中的控制器执行。
15.根据权利要求14所述的数据存储方法,进一步包括:
将第二组连续主机数据单元组合为第二映射单元与第二数据存储流相关联;
至少部分基于与所述第二组连续主机数据单元相关联的逻辑地址,从所述多个数据存储流选择第二数据存储流;并且
将所述第二映射单元与所述第二数据存储流相关联,其中所述第一组连续主机数据单元的主机数据单元与所述第二组连续主机数据单元的主机数据单元不连续。
16.根据权利要求14所述的数据存储方法,其中,每个数据存储流经配置与和其他数据存储流相关联的逻辑地址序列不同的逻辑地址序列相关联。
17.根据权利要求14所述的数据存储方法,进一步包括保存所述第一数据存储流的上下文并响应于从所述主机***接收另外的写数据命令恢复所述上下文,所述另外的写数据命令与另外的一个或更多个逻辑地址相关联,所述另外的一个或更多个逻辑地址与和所述第一组连续主机数据单元相关联的多个逻辑地址连续。
18.根据权利要求14所述的数据存储方法,进一步包括:
响应于确定所述净负荷未与所述存储器数据单元匹配:
将所述第一组连续主机数据单元组合为部分映射单元;
从多个数据存储流选择与所述第一数据存储流不同的第二数据存储流,其中所述第二数据存储流经指定用于组合部分映射单元;
使所述部分映射单元与所述第二数据存储流相关联;
在所述第二数据存储流内,至少将所述第一映射单元组合为第二存储单元,其中所述第二存储单元未与所述存储器数据单元匹配;以及
当完成所述第二存储单元时,在所述缓冲器中存储所述第二存储单元。
19.根据权利要求14所述的数据存储方法,进一步包括:
响应于确定所述净负荷未与所述存储器数据单元匹配:
将所述净负荷连同至少一个另外净负荷组合为第二净负荷,其中所述至少一个另外净负荷包括一个或更多个主机数据单元并且所述第二净负荷与所述存储器数据单元匹配;
将所述第二净负荷压缩为第二压缩净负荷;
至少将所述第二压缩净负荷组合为第二存储单元;以及
在所述固态NVM中存储所述第二存储单元。
20.根据权利要求19所述的数据存储方法,进一步包括用填充数据填补所述第二存储单元,所述填充数据的大小经选择使得所述第二存储单元与所述存储器数据单元匹配。
21.根据权利要求14所述的数据存储方法,还包括:
响应于确定所述净负荷未与所述存储器数据单元匹配:
累积另外的一个或更多个主机数据单元;
将所述净负荷和另外的一个或更多个主机数据单元组合为第二映射单元,其中所述净负荷和另外的一个或更多个主机数据单元的集合与所述存储器数据单元匹配;
将所述第二映射单元压缩为第二压缩净负荷;
至少将所述第二压缩净负荷组合为第二存储单元;以及
在所述固态NVM中存储所述第二存储单元。
22.根据权利要求21所述的数据存储方法,其中所述累积包括在所述第一数据存储流内累积所述另外的一个或更多个主机数据单元,并且所述组合包括在所述第一数据存储流内至少将所述第一压缩净负荷的集合组合为所述第二存储单元。
23.根据权利要求14所述的数据存储方法,进一步包括:
响应于从所述主机***接收多个读数据命令,读命令与对应于包括多个主机数据单元的存储器数据单元的逻辑地址范围相关联:
将所述多个逻辑地址范围分离为多组连续逻辑地址范围;以及
使第一组连续逻辑地址范围与多个读数据流的第一读数据流相关联。
24.根据权利要求23所述的数据存储方法,进一步包括使第二组连续逻辑地址与所述多个读数据流的第二读数据流相关联,其中所述第一组连续逻辑地址与所述第二组连续逻辑地址不连贯。
25.根据权利要求23所述的数据存储方法,进一步包括:
识别并检索存储在所述固态NVM中的一个或更多个存储单元,所述NVM存储与所述第一组连续逻辑地址相关联的多个主机数据单元;
识别所检索的一个或更多个存储单元的一个或更多个压缩映射单元,其中所述一个或更多个压缩映射单元的合并压缩净负荷至少包括与所述第一组连续逻辑地址相关联的所述多个主机数据单元;
解压所识别的一个或更多个压缩映射单元的压缩净负荷;以及
向所述主机***返回与所述第一组连续逻辑地址相关联的所述多个主机数据单元。
26.根据权利要求14所述的数据存储方法,其中与所述存储器数据单元匹配包括具有与所述存储器数据单元的大小整数倍的大小。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361798023P | 2013-03-15 | 2013-03-15 | |
US61/798,023 | 2013-03-15 | ||
US13/902,485 US9335950B2 (en) | 2013-03-15 | 2013-05-24 | Multiple stream compression and formatting of data for data storage systems |
US13/902,485 | 2013-05-24 | ||
PCT/US2014/026863 WO2014152043A1 (en) | 2013-03-15 | 2014-03-13 | Multiple stream compression and formatting of data for data storage systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105074676A CN105074676A (zh) | 2015-11-18 |
CN105074676B true CN105074676B (zh) | 2019-05-31 |
Family
ID=51533933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480015727.5A Active CN105074676B (zh) | 2013-03-15 | 2014-03-13 | 数据存储***的数据的多个流压缩和格式化 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9335950B2 (zh) |
CN (1) | CN105074676B (zh) |
HK (1) | HK1217235A1 (zh) |
WO (1) | WO2014152043A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9448738B2 (en) | 2013-03-15 | 2016-09-20 | Western Digital Technologies, Inc. | Compression and formatting of data for data storage systems |
US9274978B2 (en) | 2013-06-10 | 2016-03-01 | Western Digital Technologies, Inc. | Migration of encrypted data for data storage systems |
WO2015167603A1 (en) * | 2014-04-29 | 2015-11-05 | Hewlett-Packard Development Company, L.P. | Maintaining files in a retained file system |
US10324832B2 (en) * | 2016-05-25 | 2019-06-18 | Samsung Electronics Co., Ltd. | Address based multi-stream storage device access |
US11461010B2 (en) | 2015-07-13 | 2022-10-04 | Samsung Electronics Co., Ltd. | Data property-based data placement in a nonvolatile memory device |
US10656838B2 (en) | 2015-07-13 | 2020-05-19 | Samsung Electronics Co., Ltd. | Automatic stream detection and assignment algorithm |
US10282324B2 (en) | 2015-07-13 | 2019-05-07 | Samsung Electronics Co., Ltd. | Smart I/O stream detection based on multiple attributes |
US9898202B2 (en) | 2015-11-30 | 2018-02-20 | Samsung Electronics Co., Ltd. | Enhanced multi-streaming though statistical analysis |
US9880780B2 (en) | 2015-11-30 | 2018-01-30 | Samsung Electronics Co., Ltd. | Enhanced multi-stream operations |
US10866905B2 (en) | 2016-05-25 | 2020-12-15 | Samsung Electronics Co., Ltd. | Access parameter based multi-stream storage device access |
US10572153B2 (en) | 2016-07-26 | 2020-02-25 | Western Digital Technologies, Inc. | Efficient data management through compressed data interfaces |
KR102229013B1 (ko) * | 2016-09-02 | 2021-03-17 | 삼성전자주식회사 | 자동 스트림 검출 및 할당 알고리즘 |
JP2018088137A (ja) | 2016-11-29 | 2018-06-07 | 東芝メモリ株式会社 | 半導体記憶装置 |
US20180150256A1 (en) * | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
CN106599701A (zh) * | 2016-12-06 | 2017-04-26 | 华为技术有限公司 | 一种硬盘加密方法、硬盘及硬盘加密设备 |
US10489085B2 (en) | 2018-02-28 | 2019-11-26 | Micron Technology, Inc. | Latency-based scheduling of command processing in data storage devices |
US20200151119A1 (en) * | 2018-11-08 | 2020-05-14 | Silicon Motion, Inc. | Method and apparatus for performing access control between host device and memory device |
CN109828931B (zh) * | 2019-01-25 | 2020-12-01 | 深圳忆联信息***有限公司 | 一种dram碎片管理方法及其装置 |
US11977479B2 (en) * | 2022-01-11 | 2024-05-07 | Western Digital Technologies, Inc. | Log file system (LFS) invalidation command and operational mode |
CN117289852A (zh) * | 2022-06-15 | 2023-12-26 | 戴尔产品有限公司 | 感知压缩率的数据去重 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101636712A (zh) * | 2006-12-06 | 2010-01-27 | 弗森多***公司(dba弗森-艾奥) | 在存储控制器内服务对象请求的装置、***和方法 |
US7706538B1 (en) * | 2006-04-14 | 2010-04-27 | Oracle America, Inc. | System, method and data storage device for encrypting data |
Family Cites Families (141)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5465186A (en) | 1994-01-26 | 1995-11-07 | International Business Machines Corporation | Shorted magnetoresistive head leads for electrical overstress and electrostatic discharge protection during manufacture of a magnetic storage system |
US5861661A (en) | 1995-12-27 | 1999-01-19 | Industrial Technology Research Institute | Composite bump tape automated bonded structure |
JP3883641B2 (ja) | 1997-03-27 | 2007-02-21 | 株式会社半導体エネルギー研究所 | コンタクト構造およびアクティブマトリクス型表示装置 |
JP3057037B2 (ja) | 1997-09-26 | 2000-06-26 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 超音波接着実行方法、サスペンション・アセンブリを変形させ維持させ解除する方法 |
US6295185B1 (en) | 1998-04-07 | 2001-09-25 | Seagate Technology Llc | Disc drive suspension having a moving coil or moving magnet microactuator |
TW366548B (en) | 1998-04-18 | 1999-08-11 | United Microelectronics Corp | Trench bump block and the application of the same |
US6601104B1 (en) | 1999-03-11 | 2003-07-29 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US6351352B1 (en) | 1999-06-01 | 2002-02-26 | Magnecomp Corp. | Separably bondable shunt for wireless suspensions |
US6381099B1 (en) | 1999-06-11 | 2002-04-30 | Magnecomp Corporation | Wireless suspension with interrupted load beam |
US7181608B2 (en) | 2000-02-03 | 2007-02-20 | Realtime Data Llc | Systems and methods for accelerated loading of operating systems and application programs |
JP3872945B2 (ja) | 2000-08-10 | 2007-01-24 | 株式会社日立グローバルストレージテクノロジーズ | ヘッド支持機構、ヘッド組立体及び情報記録装置 |
US6703566B1 (en) | 2000-10-25 | 2004-03-09 | Sae Magnetics (H.K.), Ltd. | Bonding structure for a hard disk drive suspension using anisotropic conductive film |
US6639757B2 (en) | 2001-01-10 | 2003-10-28 | Hutchinson Technology Inc. | Heat dissipation structures for integrated lead disk drive head suspensions |
US7386046B2 (en) | 2001-02-13 | 2008-06-10 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
US6757137B1 (en) | 2001-09-30 | 2004-06-29 | Magnecomp Corporation | Stiffness controlled disk drive suspension with limiter feature |
US6928721B2 (en) | 2001-10-05 | 2005-08-16 | Headway Technologies, Inc. | Method of manufacturing a magnetic read/write head and slider assembly |
US6656772B2 (en) | 2001-11-23 | 2003-12-02 | Industrial Technology Research Institute | Method for bonding inner leads to bond pads without bumps and structures formed |
CN1290082C (zh) | 2001-12-26 | 2006-12-13 | 新科实业有限公司 | 用于磁头组件的三部分设计的***和方法 |
US7218481B1 (en) | 2002-10-07 | 2007-05-15 | Hutchinson Technology Incorporated | Apparatus for insulating and electrically connecting piezoelectric motor in dual stage actuator suspension |
CN100359567C (zh) | 2002-11-19 | 2008-01-02 | 新科实业有限公司 | 将微致动器连接至驱动器臂悬架的方法和装置 |
US7375874B1 (en) | 2003-03-22 | 2008-05-20 | Active Optical Mems Inc. | Light modulator with integrated drive and control circuitry |
US7015885B2 (en) | 2003-03-22 | 2006-03-21 | Active Optical Networks, Inc. | MEMS devices monolithically integrated with drive and control circuitry |
US6856556B1 (en) | 2003-04-03 | 2005-02-15 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
CN1820320A (zh) | 2003-07-14 | 2006-08-16 | 新科实业有限公司 | 改进硬盘驱动中继柔性电路组件与hga挠曲电缆的电连接的***和方法 |
JP4031401B2 (ja) | 2003-08-05 | 2008-01-09 | 日本発条株式会社 | ディスクドライブ用サスペンション |
US6992862B2 (en) | 2003-08-28 | 2006-01-31 | Hitachi Global Storage Technologies Netherlands B.V. | Disk drive with controlled pitch static attitude of sliders on integrated lead suspensions by improved plastic deformation processing |
US20060157869A1 (en) | 2003-11-19 | 2006-07-20 | Industrial Technology Research Institute | Semiconductor substrate with conductive bumps having a stress relief buffer layer formed of an electrically insulating organic material |
CN100476954C (zh) | 2003-11-27 | 2009-04-08 | 新科实业有限公司 | 用于磁头万向悬挂支架组件的薄膜压电式微致动器 |
US20050195528A1 (en) | 2004-03-05 | 2005-09-08 | Bennin Jeffry S. | Coined ground features for integrated lead suspensions |
US7322094B2 (en) | 2004-04-27 | 2008-01-29 | Sae Magnetics (Hk) | Method for manufacturing a head stack assembly |
US20050243472A1 (en) | 2004-04-28 | 2005-11-03 | Sae Magnetics (H.K.) Ltd. | Head stack assembly and manufacturing thereof |
WO2005114658A2 (en) | 2004-05-14 | 2005-12-01 | Hutchinson Technology Incorporated | Method for making noble metal conductive leads for suspension assemblies |
JP2006049751A (ja) | 2004-08-09 | 2006-02-16 | Hitachi Global Storage Technologies Netherlands Bv | 磁気ディスク装置と、その配線接続構造及び端子構造 |
JP2006073053A (ja) | 2004-08-31 | 2006-03-16 | Tdk Corp | 光記録媒体 |
US7298593B2 (en) | 2004-10-01 | 2007-11-20 | Sae Magnetics (H.K.) Ltd. | Micro-actuator including a leading beam pivot part, head gimbal assembly and disk drive unit with the same |
US7515240B2 (en) | 2004-10-05 | 2009-04-07 | Au Optronics Corporation | Flat display panel and assembly process or driver components in flat display panel |
US7277988B2 (en) | 2004-10-29 | 2007-10-02 | International Business Machines Corporation | System, method and storage medium for providing data caching and data compression in a memory subsystem |
US20060098347A1 (en) | 2004-11-10 | 2006-05-11 | Sae Magnetics (H.K.) Ltd. | Micro-actuator, head gimbal assembly and disk drive unit with the same |
US7502256B2 (en) | 2004-11-30 | 2009-03-10 | Siliconsystems, Inc. | Systems and methods for reducing unauthorized data recovery from solid-state storage devices |
US20060146262A1 (en) | 2005-01-03 | 2006-07-06 | Chunghwa Picture Tubes., Ltd | Method and the plasma display panel with an improvement of overflow effect of anisotropic conductive adhesive film |
KR100789545B1 (ko) | 2005-03-07 | 2007-12-28 | 삼성전기주식회사 | 플립칩 실장 기술을 이용한 광변조기 모듈 패키지 |
JP4335886B2 (ja) | 2006-04-20 | 2009-09-30 | 日本発條株式会社 | ディスクドライブ用サスペンション |
US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
US8108692B1 (en) | 2006-06-27 | 2012-01-31 | Siliconsystems, Inc. | Solid-state storage subsystem security solution |
US7765373B1 (en) | 2006-06-27 | 2010-07-27 | Siliconsystems, Inc. | System for controlling use of a solid-state storage subsystem |
US7509441B1 (en) | 2006-06-30 | 2009-03-24 | Siliconsystems, Inc. | Systems and methods for segmenting and protecting a storage subsystem |
US7447807B1 (en) | 2006-06-30 | 2008-11-04 | Siliconsystems, Inc. | Systems and methods for storing data in segments of a storage subsystem |
TWI346826B (en) | 2006-10-26 | 2011-08-11 | Taiwan Tft Lcd Ass | Bonding structure and method of fabricating the same |
US8161227B1 (en) | 2006-10-30 | 2012-04-17 | Siliconsystems, Inc. | Storage subsystem capable of programming field-programmable devices of a target computer system |
US9734086B2 (en) * | 2006-12-06 | 2017-08-15 | Sandisk Technologies Llc | Apparatus, system, and method for a device shared between multiple independent hosts |
US8549236B2 (en) | 2006-12-15 | 2013-10-01 | Siliconsystems, Inc. | Storage subsystem with multiple non-volatile memory arrays to protect against data losses |
US7596643B2 (en) | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
JP4308862B2 (ja) | 2007-03-05 | 2009-08-05 | 日東電工株式会社 | 配線回路基板およびその製造方法 |
JP2008226385A (ja) | 2007-03-14 | 2008-09-25 | Fujitsu Ltd | ロングテールサスペンション、ヘッドスタックアセンブリ、記憶装置及びフレキシブルプリント基板の接合体 |
US7685338B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685337B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685374B2 (en) | 2007-07-26 | 2010-03-23 | Siliconsystems, Inc. | Multi-interface and multi-bus structured solid-state storage subsystem |
US7987161B2 (en) * | 2007-08-23 | 2011-07-26 | Thomson Reuters (Markets) Llc | System and method for data compression using compression hardware |
US8095851B2 (en) | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US8015692B1 (en) | 2007-11-07 | 2011-09-13 | Western Digital (Fremont), Llc | Method for providing a perpendicular magnetic recording (PMR) head |
JP2009129490A (ja) | 2007-11-21 | 2009-06-11 | Nitto Denko Corp | 配線回路基板 |
US8300823B2 (en) | 2008-01-28 | 2012-10-30 | Netapp, Inc. | Encryption and compression of data for storage |
US8078918B2 (en) | 2008-02-07 | 2011-12-13 | Siliconsystems, Inc. | Solid state storage subsystem that maintains and provides access to data reflective of a failure risk |
US7962792B2 (en) | 2008-02-11 | 2011-06-14 | Siliconsystems, Inc. | Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem |
US8263872B2 (en) | 2008-02-21 | 2012-09-11 | Apple Inc. | Method and apparatus for attaching a flex circuit to a printed circuit board |
US7733712B1 (en) | 2008-05-20 | 2010-06-08 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
WO2010013441A1 (ja) | 2008-07-31 | 2010-02-04 | パナソニック株式会社 | 光情報記録媒体及び記録再生装置 |
US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
US8583835B1 (en) | 2008-08-06 | 2013-11-12 | Siliconsystems, Inc. | Command portal for executing non-standard storage subsystem commands |
US8072709B2 (en) | 2008-11-07 | 2011-12-06 | Hitachi Global Storage Technologies, Netherlands B.V. | Flex cable for a hard disk drive having an interrogation trace |
US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
JP2010164344A (ja) | 2009-01-13 | 2010-07-29 | Nitto Denko Corp | 物質検知センサ |
US20100188778A1 (en) | 2009-01-29 | 2010-07-29 | Castagna Joseph T | Disk Drive Assembly Having Flexible Support for Flexible Printed Circuit Board |
US8090899B1 (en) | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
JP5396145B2 (ja) | 2009-05-15 | 2014-01-22 | 日本発條株式会社 | ディスク装置用フレキシャ |
US8370544B2 (en) | 2009-07-23 | 2013-02-05 | Stec, Inc. | Data storage system with compression/decompression |
US8243525B1 (en) | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
US8254172B1 (en) | 2009-09-30 | 2012-08-28 | Western Digital Technologies, Inc. | Wear leveling non-volatile semiconductor memory based on erase times and program times |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8135903B1 (en) | 2009-10-30 | 2012-03-13 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory compressing data to improve performance |
US8261012B2 (en) | 2009-10-30 | 2012-09-04 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal |
US8397107B1 (en) | 2009-12-11 | 2013-03-12 | Western Digital Technologies, Inc. | Data storage device employing data path protection using both LBA and PBA |
US8277649B2 (en) | 2009-12-14 | 2012-10-02 | General Electric Company | Membranes and associated methods for purification of antibodies |
US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
US9134918B2 (en) * | 2009-12-31 | 2015-09-15 | Sandisk Technologies Inc. | Physical compression of data with flat or systematic pattern |
US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
US8407449B1 (en) | 2010-02-26 | 2013-03-26 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8713066B1 (en) | 2010-03-29 | 2014-04-29 | Western Digital Technologies, Inc. | Managing wear leveling and garbage collection operations in a solid-state memory using linked lists |
KR101643273B1 (ko) | 2010-04-09 | 2016-08-01 | 삼성전자주식회사 | 저장 매체에 데이터를 저장하는 방법, 그를 이용한 데이터 저장 장치, 및 그것을 포함한 시스템 |
US8427346B2 (en) * | 2010-04-13 | 2013-04-23 | Empire Technology Development Llc | Adaptive compression |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8341339B1 (en) | 2010-06-14 | 2012-12-25 | Western Digital Technologies, Inc. | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk |
US8612669B1 (en) | 2010-06-28 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for performing data retention in solid-state memory using copy commands and validity and usage data |
US8447920B1 (en) | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
US8339748B2 (en) | 2010-06-29 | 2012-12-25 | Western Digital Technologies, Inc. | Suspension assembly having a microactuator bonded to a flexure |
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
US20120005557A1 (en) | 2010-06-30 | 2012-01-05 | Eitan Mardiks | Virtual copy and virtual write of data in a storage device |
US8639872B1 (en) | 2010-08-13 | 2014-01-28 | Western Digital Technologies, Inc. | Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk |
US8775720B1 (en) | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
US8638602B1 (en) | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
JP2012063645A (ja) | 2010-09-17 | 2012-03-29 | Nitto Denko Corp | 感光性樹脂組成物およびそれを用いた金属支持体付回路基板 |
US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
US8612804B1 (en) | 2010-09-30 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US8458435B1 (en) | 2010-12-20 | 2013-06-04 | Western Digital Technologies, Inc. | Sequential write thread detection |
US8392635B2 (en) | 2010-12-22 | 2013-03-05 | Western Digital Technologies, Inc. | Selectively enabling a host transfer interrupt |
US8683113B2 (en) | 2011-02-04 | 2014-03-25 | Western Digital Technologies, Inc. | Concurrently searching multiple devices of a non-volatile semiconductor memory |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US8769232B2 (en) | 2011-04-06 | 2014-07-01 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory module enabling out of order host command chunk media access |
US8751728B1 (en) | 2011-04-29 | 2014-06-10 | Western Digital Technologies, Inc. | Storage system bus transfer optimization |
US8862804B2 (en) | 2011-04-29 | 2014-10-14 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
US9021178B2 (en) | 2011-05-02 | 2015-04-28 | Western Digital Technologies, Inc. | High performance path for command processing |
US8503237B1 (en) | 2011-05-18 | 2013-08-06 | Western Digital Technologies, Inc. | System and method for data recovery in a solid state storage device |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8719531B2 (en) | 2011-06-14 | 2014-05-06 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
US8423722B1 (en) | 2011-08-26 | 2013-04-16 | Western Digital Technologies, Inc. | System and method for high performance command processing in solid state drives |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8977803B2 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Disk drive data caching using a multi-tiered memory |
US8724422B1 (en) | 2012-02-29 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for charging back-up charge storage element for data storage device using spindle phase switching elements |
US9003224B2 (en) | 2012-04-25 | 2015-04-07 | Western Digital Technologies, Inc. | Managing unreliable memory in data storage systems |
US8788778B1 (en) | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US8788880B1 (en) | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US20140223255A1 (en) | 2012-12-18 | 2014-08-07 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
US9448738B2 (en) | 2013-03-15 | 2016-09-20 | Western Digital Technologies, Inc. | Compression and formatting of data for data storage systems |
-
2013
- 2013-05-24 US US13/902,485 patent/US9335950B2/en active Active
-
2014
- 2014-03-13 WO PCT/US2014/026863 patent/WO2014152043A1/en active Application Filing
- 2014-03-13 CN CN201480015727.5A patent/CN105074676B/zh active Active
-
2016
- 2016-04-27 HK HK16104802.2A patent/HK1217235A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7706538B1 (en) * | 2006-04-14 | 2010-04-27 | Oracle America, Inc. | System, method and data storage device for encrypting data |
CN101636712A (zh) * | 2006-12-06 | 2010-01-27 | 弗森多***公司(dba弗森-艾奥) | 在存储控制器内服务对象请求的装置、***和方法 |
Also Published As
Publication number | Publication date |
---|---|
HK1217235A1 (zh) | 2016-12-30 |
US9335950B2 (en) | 2016-05-10 |
WO2014152043A1 (en) | 2014-09-25 |
US20140281302A1 (en) | 2014-09-18 |
CN105074676A (zh) | 2015-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105074676B (zh) | 数据存储***的数据的多个流压缩和格式化 | |
CN105103137B (zh) | 数据存储***的数据的压缩和格式化 | |
US10101942B1 (en) | System and method for hybrid push-pull data management in a non-volatile memory | |
US10055345B2 (en) | Methods, devices and systems for solid state drive control | |
US8910017B2 (en) | Flash memory with random partition | |
US10445246B2 (en) | Memory system and method for controlling nonvolatile memory | |
US8954694B2 (en) | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive | |
US9274978B2 (en) | Migration of encrypted data for data storage systems | |
US8898376B2 (en) | Apparatus, system, and method for grouping data stored on an array of solid-state storage elements | |
US8880544B2 (en) | Method of adapting a uniform access indexing process to a non-uniform access memory, and computer system | |
US10606760B2 (en) | Nonvolatile memory devices and methods of controlling the same | |
CN109992530A (zh) | 一种固态驱动器设备及基于该固态驱动器的数据读写方法 | |
US20130205114A1 (en) | Object-based memory storage | |
CN102662856B (zh) | 一种固态硬盘及其存取方法 | |
JPWO2015114754A1 (ja) | ストレージ装置 | |
US10503425B2 (en) | Dual granularity dynamic mapping with packetized storage | |
CN112148626A (zh) | 压缩数据的存储方法及其存储设备 | |
US11640336B2 (en) | Fast cache with intelligent copyback |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1217235 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1217235 Country of ref document: HK |