CN105103137A - 数据存储***的数据的压缩和格式化 - Google Patents
数据存储***的数据的压缩和格式化 Download PDFInfo
- Publication number
- CN105103137A CN105103137A CN201480015686.XA CN201480015686A CN105103137A CN 105103137 A CN105103137 A CN 105103137A CN 201480015686 A CN201480015686 A CN 201480015686A CN 105103137 A CN105103137 A CN 105103137A
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- size
- storage
- net load
- 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.)
- Granted
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/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00086—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy
- G11B20/0021—Circuits for prevention of unauthorised reproduction or copying, e.g. piracy involving encryption or decryption of contents recorded on or reproduced from a record carrier
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10527—Audio or video recording; Data buffering arrangements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/12—Formatting, e.g. arrangement of data block or words on the record carriers
- G11B20/1217—Formatting, e.g. arrangement of data block or words on the record carriers on discs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/217—Hybrid disk, e.g. using both magnetic and solid state storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/281—Single cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开用于数据存储***的数据的压缩和格式化的实施例。在一些实施例中,数据存储***能够在将固定大小的数据存储在介质上之前对其进行压缩,并格式化所获得的可变大小的压缩数据以用于存储在通常具有固定大小的存储粒度的介质上。一个或更多个模块压缩输入的主机数据并形成固定大小的存储单元的输出流,所述输出流包含压缩数据。存储单元存储在介质上。由此,增加容量、可靠性和性能。
Description
技术领域
本公开涉及计算机***的数据存储***。更具体地,本公开涉及存储***的数据的压缩和格式化。
背景技术
现代计算机***不断要求提高数据存储***容量、可靠性和性能。在1981年,用于个人计算机中的典型硬盘驱动器具有约10兆字节(MB)的容量。今天,硬盘驱动器的容量以百万兆字节(TB)来度量。利用叠瓦式磁记录来增加磁存储容量。另外,现代盘驱动器往往包括固态存储器以增强性能。提供用于提高数据存储***的容量、可靠性和性能的机制和体系结构是期望的。
附图说明
现在将参考下列附图来描述实施本发明各种特征的***和方法,其中:
图1示出根据本发明的一些实施例的主机***和数据存储***的结合。
图2示出由根据本发明的一些实施例的数据存储***采用的压缩和格式化。
图3示出根据本发明的一些实施例的数据存储***采用的压缩和格式化数据流。
图4是示出根据本发明的一些实施例在数据存储***中存储数据的过程的流程图。
图5是示出根据本发明的一些实施例检索存储在数据存储***中的数据的过程的流程图。
具体实施方式
虽然描述了特定实施例,但这些实施例只是示例方式提供,并不旨在限制本发明的保护范围。实际上,本文描述的新颖方法和***可以以各种其他形式体现。而且,在不偏离本发明保护范围的情况下,可以对本文所述的方法和***形式进行各种省略、替换和变更。
概述
数据存储***能够采用压缩技术来满足增加的容量、可靠性以及性能的需求。在将主机***数据存储在数据存储***之前压缩主机***数据通常使得压缩的数据具有比主机***提供的原始未压缩的数据更小的大小。因此,主机***提供的固定大小的主机数据单元在压缩后变成可变大小的数据单元。存储和检索此类可变大小的数据存在许多挑战。例如,在数据存储***介质中存储可变大小的数据可能需要对数据存储***存储数据和保持跟踪所存储的数据的方式进行相当大的改变。作为另一示例,因为主机***通常希望固定大小的数据在数据检索期间被返回,也可能有必要对数据检索机制进行相当大的更改。
在一些实施例中,提供用于压缩和格式化主机数据(或用户数据)以在数据存储***中存储的机制。数据存储***能够在将固定大小的数据存储在介质上之前压缩固定大小的数据并格式化所获得的可变大小的压缩数据以用于存储在通常具有固定大小存储粒度的介质上,诸如磁介质的扇区和非易失性固态存储器的页面。一个或更多个模块能够压缩输入主机数据并形成固定大小的“虚拟”存储单元(或存储单元)的输出流,其包含一个或更多个压缩主机数据单元、纠错和检测码(EDC)信息和用于解码存储单元的逻辑内容的元数据。虚拟存储单元用作压缩的主机数据的固定大小的容器。
在一些实施例中,在向数据存储***写入数据期间,未压缩的固定大小的主机数据单元被相邻的逻辑地址分组、EDC数据剥离并被压缩为一个或更多个可变大小的压缩数据单元。为了保持数据保护和检错以及恢复,压缩数据单元的未压缩数据用于确定附加到压缩数据单元的新EDC。压缩逻辑也形成可以包括主机逻辑地址和一定长度的压缩数据的压缩数据单元元数据。压缩净负荷能够包括元数据、确定的EDC和压缩的主机数据。可以附加一个或更多个压缩净负荷以形成固定大小的虚拟存储单元,所述一个或更多个压缩净负荷能够包括一个或更多个完全或部分净负荷。虚拟存储单元还能够包括用于解码虚拟存储单元的逻辑内容的元数据。例如,虚拟存储单元元数据能够包括第一压缩映射单元的偏移、虚拟数据单元块地址字段和序列号。附加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和映射单元EDC326。映射单元元数据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字节的映射单元EDC326,与净负荷中的主机数据单元的EDC数据的合计大小(32字节)相比,这产生28字节的节省。在一些实施例中,这种空间节省允许将元数据322包含在映射单元320中,而无需占用任何额外的空间。在一些实施例中,映射单元EDC326通过净负荷的开始逻辑地址布置(seed)。
在一些实施例中,映射单元320被压缩并且可选地被加密,以产生一个或更多个压缩映射单元330,如上面讨论的。这能够通过压缩和加密模块220执行。压缩的映射单元(诸如映射单元331、337或338)包括压缩净负荷334(对应于压缩映射单元)、压缩映射单元元数据332和映射单元EDC336,映射单元EDC336能够与EDC326相同。映射单元元数据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和经确定用于虚拟存储单元的内容的虚拟存储单元EDC348。虚拟存储单元元数据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。
上述用于一个或多个实施例中的封装方案在数据存储***中存在若干类型介质的混合介质环境(例如,具有固态存储器的混合硬盘)中特别有用。由于介质类型具有各种物理扇区/存储器单元大小,封装方案很容易在介质大小之间调节封装特性。因此,采用上述封装方案的控制器能够使用混合介质存储组件并处理从一个介质组件到另一介质组件的数据迁移,同时实现压缩和加密类***的需求。例如,虚拟存储单元大小能够根据存储目的地来调节。在一个实施例中,能够利用重新封装来无缝执行迁移,如果可能,被在线自动处理。而且,在一个实施例中,封装/拆包处理(包括必要的元数据处理、数据映射、压缩、解压缩、加密、解密)在硬件中自动进行,进一步提高整个***的性能。
写数据和读数据的过程
图4是示出根据本发明的一些实施例在数据存储***120中写入或编程数据的过程400的流程图。所示出的过程能够由控制器130和/或压缩和格式化模块134执行。在块402中,过程400接收来自主机***110的一个或更多个写数据命令。写数据命令指定将要写入对应逻辑地址的一个或更多个主机数据单元。主机数据单元具有固定的大小。过程400转换到块404,在404处,过程400将一个或更多个主机数据单元组合为一个或更多个映射单元。在一些实施例中,连续和匹配(例如,不交叉主机数据单元匹配边界)主机数据单元被组合为完全映射单元。过程400转换到块406,在406处,过程400压缩一个或更多个映射单元,从而获得压缩映射单元,该压缩映射单元由于压缩操作是可变大小的。过程400可选地加密压缩数据。在块408中,过程400将一个或更多个压缩映射单元组合为一个或更多个固定大小的虚拟存储单元。在块410中,过程400在介质140中存储组合的一个或更多个虚拟存储单元。
图5是示出根据本发明的一些实施例从数据存储***120读取或检索所存储的数据的过程500的流程图。所示出的过程能够由控制器130和/或压缩和格式化模块134执行。在块502中,过程500从主机***100接收读命令,所述读命令指定与存储在数据存储***120中的主机数据相关联的逻辑地址范围。过程500转换到块504,在504处,过程500识别包含将要被检索的主机数据的一个或更多个虚拟存储单元。在块506中,过程500从介质(和/或缓冲器)检索所识别的一个或更多个虚拟存储单元。过程500转换到块508,在508处,过程500识别或定位一个或更多个检索的虚拟存储单元中的一个或更多个压缩映射单元,其净负荷包含将要被检索的主机数据。如上面解释的,过程500能够跳过其净负荷不包含将要被检索的主机数据的压缩映射单元。过程500转换到块510,在510处,过程500解密(如果净负荷被加密)并且解压(如果净负荷被压缩)所识别的一个或更多个压缩映射单元的净负荷。在块512中,过程500拆包将要被检索的主机数据并向主机***110返回所述数据。
结论
所公开的用于数据存储***的数据的压缩和格式化的方法能够增加容量、可靠性和性能。在一些实施例中,如通过数据写和/或读速率测量的吞吐率增加,因为所存储和从介质检索的压缩数据在大小上更小。因为增加了读取率,能够减少主机***的恢复时间。这允许主机***在上电后更快速“唤醒”、重新启动、睡眠和/或冬眠事件。在一些实施例中,存储压缩数据增加介质的有效容量。这还能够降低成本,例如,因为可能需要更少的固态高速缓存存储器并增加高速缓存命中率和整体性能。在一些实施例中,尤其是对于固态存储器介质,实现更低的写放大和增加的供应量。
其他变体
本领域的技术人员将理解,在一些实施例中,附加或替代模块能够用于执行压缩和格式化。映射单元、压缩映射单元和/或虚拟存储单元能够包括附加或替代字段。在所公开的过程(诸如图4和图5中示出的过程)中采用的实际步骤可以不同于图中所示的那些步骤。能够使用附加***组件,并且所公开的***组件能够被组合或省略。根据所述实施例,上述步骤中的特定步骤可以被删除,可以添加其他步骤。
虽然已经描述了特定实施例,这些实施例仅通过示例来提供,并不旨在限制本公开的保护范围。实际上,本文描述的新颖方法和***可以以各种其他形式体现。而且,在不偏离本公开保护精神的情况下,可以对本文所述的方法和***进行各种形式的省略、替换和更改。所附权利要求及其等同体旨在覆盖落入本公开保护范围和精神内的各种形式或更改。例如,本文公开的***和方法能够应用到硬盘驱动器、混合硬盘驱动器等。此外,可以附加或替代地使用其他形式的存储装置(例如,DRAM或SRAM,电池备份的易失性DRAM或SRAM装置,EPROM,EEPROM存储器等)。作为另一示例,附图中示出的各个组件可以被实现为处理器、ASIC/FPGA上的软件和/或固件或专用硬件。而且,上述公开的具体实施例的特征和属性可以以各种方式结合,以便形成附加实施例,所有这些实施例落入本公开的范围内。虽然本公开提供一些优选实施例和应用,但是其他实施例对于本领域的技术人员来说是明显的,包括没有提供本文阐述的全部特征和优点的实施例,它们都落入本公开的范围内。因此,本公开的范围仅由所附权利要求限定。
Claims (46)
1.一种数据存储***,其包括:
非易失性存储器,即NVM,所述非易失性存储器经配置存储多个存储器数据单元,存储器数据单元是所述NVM中的存储单元;和
控制器,所述控制器经配置:
响应于从主机***接收到的写数据命令,所述命令与和多个逻辑地址相关联的多个主机数据单元相关联:
压缩所述多个主机数据单元以获得压缩净负荷,其中所述压缩净负荷的大小小于或等于所述多个主机数据单元的大小;
将所述压缩净负荷组合为压缩映射单元;
将所述压缩映射单元与一个或更多个附加压缩映射单元组合为存储单元,其中所述存储单元的大小与所述存储器数据单元的大小匹配;以及
在所述NVM中存储所述存储单元。
2.根据权利要求1所述的数据存储***,其中所述多个主机数据单元与多个连贯逻辑地址相关联。
3.根据权利要求1所述的数据存储***,其中所述控制器进一步经配置加密所述压缩净负荷。
4.根据权利要求1所述的数据存储***,其中所述压缩映射单元包括元数据部分,所述元数据部分指示与所述压缩净负荷的数据相关联的所述多个逻辑地址。
5.根据权利要求4所述的数据存储***,其中所述元数据部分未被压缩。
6.根据权利要求4所述的数据存储***,其中所述元数据部分未被压缩并且未被加密。
7.根据权利要求6所述的数据存储***,其中所述控制器进一步经配置加密所述压缩净负荷。
8.根据权利要求7所述的数据存储***,其中,所述控制器进一步经配置使用所述元数据部分重新封装所述压缩净负荷而不解密所述压缩净负荷。
9.根据权利要求7所述的数据存储***,其中所述重新封装与控制器执行的下列操作中的至少一个相关联:碎片整理存储在所述NVM中的数据,垃圾收集存储在所述NVM中的数据,以及将所述压缩净负荷组合为大小不同于所述存储单元的大小的另一个存储单元。
10.根据权利要求1所述的数据存储***,其中,所述存储单元中的所述附加的一个或更多个附加压缩映射单元包括与所述一个或更多个附加写数据命令相关联的主机数据单元。
11.根据权利要求1所述的数据存储***,其中所述控制器进一步经配置用填充数据填补所述压缩映射单元,所述填充数据的大小经选择使得所述存储单元的大小和所述存储器数据单元的大小匹配。
12.根据权利要求1所述的数据存储***,进一步包括缓冲器,其中:
所述控制器经配置使用所述缓冲器:
压缩所述多个主机数据单元以获得所述压缩净负荷;
将所述压缩净负荷组合为所述压缩映射单元;以及
将所述压缩映射单元与一个或更多个附加压缩映射单元组合为所述存储单元;并且
将所述存储单元从所述缓冲器传输到所述NVM。
13.根据权利要求1所述的数据存储***,其中所述控制器包括一个或更多个硬件模块,所述一个或更多个硬件模块经配置:
压缩所述多个主机数据单元以获得所述压缩净负荷;
将所述压缩净负荷组合为所述压缩映射单元;以及
将所述压缩映射单元与一个或更多个附加压缩映射单元组合为所述存储单元。
14.根据权利要求1所述的数据存储***,其中所述NVM包括固态存储器阵列和磁记录介质中的至少一个。
15.根据权利要求14所述的数据存储***,其中所述固态存储器阵列经配置存储第一大小的多个存储器数据单元,以及所述磁记录介质经配置存储第二大小的多个存储器数据单元,并且至少部分基于所述存储单元是否将要存储在所述固态存储器阵列或磁记录介质中,所述存储单元的大小与第一大小或第二大小匹配。
16.根据权利要求15所述的数据存储***,其中,所述控制器进一步经配置用填充数据填补所述压缩映射单元,所述填充数据的大小经选择使得所述存储单元的大小和所述第一大小或所述第二大小匹配。
17.根据权利要求1所述的数据存储***,其中所述控制器进一步经配置:
响应于从所述主机***接收到的读数据命令,所述命令与对应于包括多个主机数据单元的存储器数据单元的逻辑地址范围相关联:
识别并检索存储在所述NVM中的一个或更多个存储单元,所述NVM存储与所述读数据命令相关联的所述多个主机数据单元;
识别所检索的一个或更多个存储单元的一个或更多个压缩映射单元,其中所述一个或更多个压缩映射单元的合并压缩净负荷至少包括与所述读数据命令相关联的所述多个主机数据单元;
解压所识别的一个或更多个压缩映射单元的所述压缩净负荷;以及
向所述主机***返回从所述解压净负荷获得的所述多个主机数据单元。
18.根据权利要求17所述的数据存储***,其中,每个压缩映射单元包括元数据部分,所述元数据部分指示与所述压缩净负荷的主机数据相关联的多个逻辑地址,并且所述控制器经配置使用所述一个或更多个压缩映射单元的元数据部分识别所述一个或更多个压缩映射单元。
19.根据权利要求18所述的数据存储***,其中,每个压缩映射单元包括未压缩的元数据部分。
20.根据权利要求18所述的数据存储***,其中,每个压缩映射单元包括未压缩和未加密的元数据部分。
21.根据权利要求18所述的数据存储***,其中所述控制器进一步经配置在所检索的一个或更多个存储单元内,跳过不相关的压缩映射单元,所述不相关的压缩映射单元具有不指示所述不相关的压缩映射单元包括对应于和所述读数据命令相关联的逻辑地址范围中的任一逻辑地址的主机数据单元的元数据部分。
22.根据权利要求1所述的数据存储***,其中所述控制器进一步经配置将所述压缩映射单元的第一部分存储在第一存储单元中并将所述压缩映射单元的第二部分存储在第二存储单元中。
23.根据权利要求1所述的数据存储***,其中所述控制器进一步经配置将所述多个主机数据单元存储在映射单元中,并将所述映射单元的第一部分存储在第一存储单元中以及将所述映射单元的第二部分存储在第二存储单元中。
24.根据权利要求1所述的数据存储***,其中所述写数据命令与对应于所述多个主机数据单元的多个纠错和检测码相关联,并且所述控制器进一步经配置生成对应于所述多个主机数据单元的合计纠错和检测码,所述合计纠错和检测码数据的大小比一个或更多个纠错和检测码的合并大小小。
25.一种在非易失性存储***中存储数据的方法,所述非易失性存储***包括非易失性存储器即NVM,所述非易失性存储器经配置存储多个存储器数据单元,存储器数据单元是所述NVM中的存储单元,所述方法包括:
响应于从主机***接收写数据命令,所述命令与和多个逻辑地址相关联的多个主机数据单元相关联:
压缩所述多个主机数据单元以获得压缩净负荷,其中所述压缩净负荷的大小小于或等于所述多个主机数据单元的大小;
将所述压缩净负荷组合为压缩映射单元;
将所述压缩映射单元与一个或更多个附加压缩映射单元组合为存储单元,其中所述存储单元的大小与所述存储器数据单元的大小匹配;以及
在所述NVM中存储所述存储单元,
其中所述方法在控制器的控制下执行。
26.根据权利要求25所述的方法,其中所述多个主机数据单元与多个连续逻辑地址相关联。
27.根据权利要求25所述的方法,进一步包括加密所述压缩净负荷。
28.根据权利要求25所述的方法,其中所述压缩映射单元包括元数据部分,所述元数据部分指示与所述压缩净负荷的数据相关联的所述多个逻辑地址。
29.根据权利要求28所述的方法,其中所述元数据部分未被压缩。
30.根据权利要求28所述的方法,其中所述元数据部分未被压缩并且未被加密。
31.根据权利要求30所述的方法,进一步包括加密所述压缩净负荷。
32.根据权利要求31所述的方法,进一步包括使用所述元数据部分,重新封装所述压缩净负荷而不解密所述压缩净负荷。
33.根据权利要求31所述的方法,其中所述重新封装与下列操作中的至少一个相关联:碎片整理存储在所述NVM中的数据,垃圾收集存储在所述NVM中的数据,以及将所述压缩净负荷组合为大小不同于所述存储单元的大小的另一个存储单元。
34.根据权利要求25所述的方法,其中所述存储单元中的附加一个或更多个附加压缩映射单元包括与一个或更多个附加写数据命令相关联的主机数据单元。
35.根据权利要求25所述的方法,进一步包括用填充数据填补所述存储单元,所述填充数据的大小经选择使得所述存储单元的大小与所述存储器数据单元的大小匹配。
36.根据权利要求25所述的方法,其中所述NVM包括固态存储器阵列和磁记录介质中的至少一个。
37.根据权利要求36所述的方法,其中所述固态存储器阵列经配置存储第一大小的多个存储器数据单元,以及所述磁记录介质经配置存储第二大小的多个存储器数据单元,并且至少部分基于所述存储单元是否将要被存储在所述固态存储器阵列或所述磁记录介质中,所述存储单元的大小与第一大小或第二大小匹配。
38.根据权利要求37所述的方法,进一步包括用填充数据填补所述压缩映射单元,所述填充数据的大小经选择使得所述存储单元的大小与所述第一大小或所述第二大小匹配。
39.根据权利要求25所述的方法,进一步包括:
响应于从所述主机***接收读数据命令,所述命令与对应于包括多个主机数据单元的存储器数据单元的逻辑地址范围相关联:
识别并检索存储在所述NVM中的一个或更多个存储单元,所述NVM存储与所述读数据命令相关联的多个主机数据单元;
识别所检索的一个或更多个存储单元的一个或更多个压缩映射单元,其中所述一个或更多个压缩映射单元的合并压缩净负荷至少包括与所述读数据命令相关联的所述多个主机数据单元;
解压所识别的一个或更多个压缩映射单元的所述压缩净负荷;以及
向所述主机***返回从所述解压净负荷获得的所述多个主机数据单元。
40.根据权利要求39所述的方法,其中,每个压缩映射单元包括元数据部分,所述元数据部分指示与所述压缩净负荷的主机数据相关联的多个逻辑地址,并且所述控制器经配置使用所述一个或更多个压缩映射单元的元数据部分识别所述一个或更多个压缩映射单元。
41.根据权利要求40所述的方法,其中,每个压缩映射单元包括未压缩的元数据部分。
42.根据权利要求40所述的方法,其中,每个压缩映射单元包括未压缩和未加密的元数据部分。
43.根据权利要求40所述的方法,进一步包括在所检索的一个或更多个存储单元内,跳过不相关的压缩映射单元,所述不相关的压缩映射单元具有不指示所述不相关的压缩映射单元包括对应于和所述读数据命令相关联的逻辑地址范围中的任一逻辑地址的主机数据单元的元数据部分。
44.根据权利要求25所述的方法,进一步包括将所述压缩映射单元的第一部分存储在第一存储单元中并将所述压缩映射单元的第二部分存储在第二存储单元中。
45.根据权利要求25所述的方法,进一步包括将所述多个主机数据单元存储在映射单元中,并且将所述映射单元的第一部分存储在第一存储单元中以及将所述映射单元的第二部分存储在第二存储单元中。
46.根据权利要求25所述的方法,其中所述写数据命令与对应于所述多个主机数据单元的多个纠错和检测码相关联,并且所述方法进一步包括生成对应于所述多个主机数据单元的合计纠错和检测码,所述合计纠错和检测码数据的大小比一个或更多个纠错和检测码的合并大小小。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361798909P | 2013-03-15 | 2013-03-15 | |
US61/798,909 | 2013-03-15 | ||
US13/902,504 | 2013-05-24 | ||
US13/902,504 US9448738B2 (en) | 2013-03-15 | 2013-05-24 | Compression and formatting of data for data storage systems |
PCT/US2014/026701 WO2014151937A1 (en) | 2013-03-15 | 2014-03-13 | Compression and formatting of data for data storage systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105103137A true CN105103137A (zh) | 2015-11-25 |
CN105103137B CN105103137B (zh) | 2019-03-19 |
Family
ID=51533827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480015686.XA Active CN105103137B (zh) | 2013-03-15 | 2014-03-13 | 数据存储***的数据的压缩和格式化 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9448738B2 (zh) |
CN (1) | CN105103137B (zh) |
HK (1) | HK1217236A1 (zh) |
WO (1) | WO2014151937A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066393A (zh) * | 2017-01-12 | 2017-08-18 | 安徽大学 | 提高地址映射表中映射信息密度的方法 |
CN107133121A (zh) * | 2016-02-26 | 2017-09-05 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN107947799A (zh) * | 2017-11-28 | 2018-04-20 | 郑州云海信息技术有限公司 | 一种数据压缩方法及装置 |
CN108304277A (zh) * | 2017-01-12 | 2018-07-20 | 质子世界国际公司 | 闪速存储器中的纠错 |
CN109299108A (zh) * | 2018-11-05 | 2019-02-01 | 江苏瑞中数据股份有限公司 | 一种可变频率的wams实时数据库管理方法与*** |
CN109783008A (zh) * | 2017-11-13 | 2019-05-21 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN113726341A (zh) * | 2021-08-25 | 2021-11-30 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN114003169A (zh) * | 2021-08-02 | 2022-02-01 | 固存芯控半导体科技(苏州)有限公司 | 一种用于ssd的数据压缩方法 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9335950B2 (en) | 2013-03-15 | 2016-05-10 | Western Digital Technologies, Inc. | Multiple stream 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 |
US9542321B2 (en) * | 2014-04-24 | 2017-01-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Slice-based random access buffer for data interleaving |
US9397833B2 (en) * | 2014-08-27 | 2016-07-19 | International Business Machines Corporation | Receipt, data reduction, and storage of encrypted data |
US10216418B2 (en) * | 2015-06-01 | 2019-02-26 | Samsung Electronics Co., Ltd. | Storage apparatus and method for autonomous space compaction |
US11042328B2 (en) * | 2015-06-01 | 2021-06-22 | Samsung Electronics Co., Ltd. | Storage apparatus and method for autonomous space compaction |
US20160378352A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Efficient solid state drive data compression scheme and layout |
US10310774B2 (en) | 2015-12-24 | 2019-06-04 | Intel Corporation | Techniques for data storage protection and integrity checking |
US10572153B2 (en) | 2016-07-26 | 2020-02-25 | Western Digital Technologies, Inc. | Efficient data management through compressed data interfaces |
US9665302B1 (en) * | 2016-10-12 | 2017-05-30 | Divergent Storage Systems, Inc. | Method and apparatus for storing information using an intelligent block storage controller |
US9665303B1 (en) * | 2016-10-12 | 2017-05-30 | Divergent Storage Systems, Inc. | Method and apparatus for storing information using an intelligent block storage controller |
CN106877877B (zh) * | 2017-02-28 | 2020-11-27 | 苏州浪潮智能科技有限公司 | 一种在线数据压缩在存储中的集成方法及*** |
US11645131B2 (en) * | 2017-06-16 | 2023-05-09 | Cisco Technology, Inc. | Distributed fault code aggregation across application centric dimensions |
US10715177B2 (en) | 2017-06-20 | 2020-07-14 | Samsung Electronics Co., Ltd. | Lossy compression drive |
US10097202B1 (en) | 2017-06-20 | 2018-10-09 | Samsung Electronics Co., Ltd. | SSD compression aware |
KR20190074886A (ko) * | 2017-12-20 | 2019-06-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11086534B2 (en) | 2018-06-28 | 2021-08-10 | Apple Inc. | Memory data distribution based on communication channel utilization |
US11372547B2 (en) | 2020-02-13 | 2022-06-28 | International Business Machines Corporation | Compression of aging data during compaction |
US11907539B2 (en) | 2020-11-20 | 2024-02-20 | Samsung Electronics Co., Ltd. | System and method for stream based data placement on hybrid SSD |
US11500587B2 (en) | 2020-11-20 | 2022-11-15 | Samsung Electronics Co., Ltd. | System and method for in-SSD data processing engine selection based on stream IDs |
US20240086067A1 (en) * | 2022-09-14 | 2024-03-14 | Micron Technology, Inc. | Conversion of access data based on memory device size |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009025923A1 (en) * | 2007-08-23 | 2009-02-26 | Vhayu Technologies Corporation | A system and method for data compression using compression hardware |
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 (143)
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 |
US20010047473A1 (en) | 2000-02-03 | 2001-11-29 | Realtime Data, Llc | Systems and methods for computer initialization |
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 | 新科实业有限公司 | 将微致动器连接至驱动器臂悬架的方法和装置 |
US7015885B2 (en) | 2003-03-22 | 2006-03-21 | Active Optical Networks, Inc. | MEMS devices monolithically integrated with drive and control circuitry |
US7375874B1 (en) | 2003-03-22 | 2008-05-20 | Active Optical Mems Inc. | Light modulator with integrated 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 |
WO2005052927A1 (en) | 2003-11-27 | 2005-06-09 | Sae Magnetics (H.K.) Ltd. | Thin film piezoelectric micro-actuator for head gimbal assembly |
US20050195528A1 (en) | 2004-03-05 | 2005-09-08 | Bennin Jeffry S. | Coined ground features for integrated lead suspensions |
TWI312240B (en) | 2004-03-12 | 2009-07-11 | Sunplus Technology Co Ltd | Data compressed/decompressed device and associated application system |
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 |
JP2007537562A (ja) | 2004-05-14 | 2007-12-20 | ハッチンソン テクノロジー インコーポレーティッド | サスペンションアセンブリ用貴金属導電性リードの作製方法 |
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 |
KR20090102789A (ko) * | 2006-12-06 | 2009-09-30 | 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) | 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법 |
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 |
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 |
MX2010003496A (es) | 2008-07-31 | 2010-04-30 | Panasonic Corp | Medio de grabacion de informacion optico y aparato de grabacion y reproduccion. |
US8583835B1 (en) | 2008-08-06 | 2013-11-12 | Siliconsystems, Inc. | Command portal for executing non-standard storage subsystem commands |
US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
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 |
US7987162B2 (en) | 2009-03-06 | 2011-07-26 | Bluearc Uk Limited | Data compression in a file storage system |
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 |
US8254172B1 (en) | 2009-09-30 | 2012-08-28 | Western Digital Technologies, Inc. | Wear leveling non-volatile semiconductor memory based on erase times and program times |
US8243525B1 (en) | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8261012B2 (en) | 2009-10-30 | 2012-09-04 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal |
US8135903B1 (en) | 2009-10-30 | 2012-03-13 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory compressing data to improve performance |
US8171253B2 (en) * | 2009-10-30 | 2012-05-01 | Brocade Communications Systems, Inc. | Virtual disk mapping |
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 |
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 |
US8339748B2 (en) | 2010-06-29 | 2012-12-25 | Western Digital Technologies, Inc. | Suspension assembly having a microactuator bonded to a flexure |
US8447920B1 (en) | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
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 |
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 |
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 |
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 |
US9335950B2 (en) | 2013-03-15 | 2016-05-10 | Western Digital Technologies, Inc. | Multiple stream 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 |
-
2013
- 2013-05-24 US US13/902,504 patent/US9448738B2/en active Active
-
2014
- 2014-03-13 CN CN201480015686.XA patent/CN105103137B/zh active Active
- 2014-03-13 WO PCT/US2014/026701 patent/WO2014151937A1/en active Application Filing
-
2016
- 2016-04-27 HK HK16104803.1A patent/HK1217236A1/zh unknown
- 2016-08-29 US US15/250,264 patent/US10055171B2/en active Active
Patent Citations (3)
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弗森-艾奥) | 在存储控制器内服务对象请求的装置、***和方法 |
WO2009025923A1 (en) * | 2007-08-23 | 2009-02-26 | Vhayu Technologies Corporation | A system and method for data compression using compression hardware |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107133121A (zh) * | 2016-02-26 | 2017-09-05 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN107133121B (zh) * | 2016-02-26 | 2020-12-25 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN107066393B (zh) * | 2017-01-12 | 2020-06-09 | 安徽大学 | 提高地址映射表中映射信息密度的方法 |
CN108304277A (zh) * | 2017-01-12 | 2018-07-20 | 质子世界国际公司 | 闪速存储器中的纠错 |
CN107066393A (zh) * | 2017-01-12 | 2017-08-18 | 安徽大学 | 提高地址映射表中映射信息密度的方法 |
CN109783008B (zh) * | 2017-11-13 | 2022-04-26 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN109783008A (zh) * | 2017-11-13 | 2019-05-21 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN107947799B (zh) * | 2017-11-28 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种数据压缩方法及装置 |
CN107947799A (zh) * | 2017-11-28 | 2018-04-20 | 郑州云海信息技术有限公司 | 一种数据压缩方法及装置 |
CN109299108B (zh) * | 2018-11-05 | 2020-05-29 | 江苏瑞中数据股份有限公司 | 一种可变频率的wams实时数据库管理方法与*** |
CN109299108A (zh) * | 2018-11-05 | 2019-02-01 | 江苏瑞中数据股份有限公司 | 一种可变频率的wams实时数据库管理方法与*** |
CN114003169A (zh) * | 2021-08-02 | 2022-02-01 | 固存芯控半导体科技(苏州)有限公司 | 一种用于ssd的数据压缩方法 |
CN114003169B (zh) * | 2021-08-02 | 2024-04-16 | 固存芯控半导体科技(苏州)有限公司 | 一种用于ssd的数据压缩方法 |
CN113726341A (zh) * | 2021-08-25 | 2021-11-30 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN113726341B (zh) * | 2021-08-25 | 2023-09-01 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105103137B (zh) | 2019-03-19 |
US10055171B2 (en) | 2018-08-21 |
US20160371037A1 (en) | 2016-12-22 |
US20140281146A1 (en) | 2014-09-18 |
WO2014151937A1 (en) | 2014-09-25 |
US9448738B2 (en) | 2016-09-20 |
HK1217236A1 (zh) | 2016-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105103137A (zh) | 数据存储***的数据的压缩和格式化 | |
CN105074676A (zh) | 数据存储***的数据的多个流压缩和格式化 | |
US9760502B2 (en) | Encrypted transport solid-state disk controller | |
US9274978B2 (en) | Migration of encrypted data for data storage systems | |
US9176808B2 (en) | Storage device and nonvolatile memory device and operating method thereof | |
TWI506431B (zh) | 虛擬記憶體設備驅動器、用於在主機上執行之虛擬記憶體設備驅動器、刷新快閃記憶體的方法、快閃記憶體刷新的方法、超級增強耐力設備硬碟固體狀態驅動機耐用轉換層之方法、超級增強耐力設備及耐力快閃記憶體檔案系統 | |
KR102155191B1 (ko) | 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택 | |
US8910017B2 (en) | Flash memory with random partition | |
KR101912596B1 (ko) | 리던던트 어레이들을 통한 비휘발성 메모리 프로그램 실패 복구 | |
US10127166B2 (en) | Data storage controller with multiple pipelines | |
CN109976938B (zh) | 数据储存装置以及非挥发式存储器操作方法 | |
US20130205114A1 (en) | Object-based memory storage | |
JP2012518224A (ja) | メモリコントローラ及び方法におけるデータ完全性 | |
KR102218732B1 (ko) | 저장 장치 및 그것의 동작 방법 | |
TW201243590A (en) | Data writing and reading method, memory controller and memory storage apparatus | |
TW201518944A (zh) | 主機與控制器之間的轉換層劃分 | |
KR20180051703A (ko) | Raid 방식으로 데이터를 저장하는 스토리지 장치 | |
US9838045B1 (en) | Apparatus and method for accessing compressed data | |
US20220221987A1 (en) | Computing system including host and storage system | |
US20240070062A1 (en) | Nonvolatile memory, memory system, and control method of nonvolatile memory | |
TW201913353A (zh) | 資料儲存方法、記憶體控制電路單元及記憶體儲存裝置 | |
KR102032878B1 (ko) | 플래시 메모리 컨트롤러의 에러 정정 방법 | |
US20240094940A1 (en) | Memory system |
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: 1217236 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: 1217236 Country of ref document: HK |