CN107624179A - 高效固态驱动器数据压缩方案和布局 - Google Patents

高效固态驱动器数据压缩方案和布局 Download PDF

Info

Publication number
CN107624179A
CN107624179A CN201680030271.9A CN201680030271A CN107624179A CN 107624179 A CN107624179 A CN 107624179A CN 201680030271 A CN201680030271 A CN 201680030271A CN 107624179 A CN107624179 A CN 107624179A
Authority
CN
China
Prior art keywords
data
compressed
device described
compressed data
compression
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
Application number
CN201680030271.9A
Other languages
English (en)
Other versions
CN107624179B (zh
Inventor
J.B.卡恩
R.P.曼戈尔德
V.戈帕尔
R.S.加西亚
K.S.格里姆斯鲁德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN107624179A publication Critical patent/CN107624179A/zh
Application granted granted Critical
Publication of CN107624179B publication Critical patent/CN107624179B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

描述了涉及高效固态驱动器(SSD)数据压缩方案和布局的方法和装置。在一个实施例中,耦合到非易失性存储器的逻辑(例如从主机)接收数据并且压缩数据以生成经压缩的数据,之后将经压缩的数据存储在非易失性存储器中。经压缩的数据包括数据的经压缩的版本、经压缩的数据的大小、公共元信息,以及最终元信息。还公开和要求保护其它实施例。

Description

高效固态驱动器数据压缩方案和布局
相关申请
本申请在35 U.S.C. 365(b)之下要求对2016年6月26日提交的美国申请No. 14/751,450的优先权。所述申请No. 14/751,450特此通过引用在其整体上并入本文。
技术领域
本公开一般地涉及电子学领域。更特别地,一些实施例一般地涉及高效固态驱动器(SSD)数据压缩方案和布局。
背景技术
一般地,用于在计算系统中存储数据的存储器可以是易失性的(以存储易失性信息)或非易失性的(以存储持久性信息)。存储在易失性存储器中的易失性数据结构一般用于临时或中间信息,所述临时或中间信息被要求以在程序的运行时期间支持程序的功能性。另一方面,存储在非易失性(或持久性存储器)中的持久性数据结构超出程序的运行时而是可用的并且可以被重用。而且,在用户或程序员决定使数据持久之前,典型地首先将新的数据生成为易失性数据。例如,程序员或用户可以导致可由处理器直接访问的易失性主存储器中的易失性结构的映射(即实例化)。另一方面,在比如附连到输入/输出(I/O或IO)总线的旋转盘那样的非易失性存储设备或比如固态驱动器那样的非易失性存储器上实例化持久性数据结构。
随着处理器中的计算能力的增强,一个关注点是处理器可以访问存储器的速度。例如,为了处理数据,处理器可能需要首先从存储器提取数据。在数据处理完成之后,结果可能需要存储在存储器中。因此,存储器访问速度可以具有对总体系统性能的直接影响。
另一重要考虑是功耗。例如,在依赖于电池功率的移动计算设备中,减少功耗以允许设备在移动的同时进行操作是非常重要的。功耗对于非移动计算设备同样重要,因为过量的功耗可能增加成本(例如由于附加的功率使用、增加的冷却要求等)、缩短组件寿命、限制设备可以使用在的位置等。
硬盘驱动器提供相对低成本的存储解决方案并且使用在许多计算设备中以提供非易失性存储。然而,盘驱动器在与固态驱动器相比时使用大量功率,因为硬盘驱动器需要使其盘以相对高的速度自旋并且相对于自旋盘移动盘头以读取/写入数据。该物理移动生成热量并且增加功耗。而且,当与硬盘驱动器相比时,固态驱动器在执行读取和写入操作时快得多。为此目的,许多计算区段正在朝向固态驱动器迁移。
附图说明
参考随附各图来提供详细描述。在各图中,参考数字的一个或多个最左数位标识该参考数字首次出现在其中的图。不同图中的相同参考数字的使用指示类似或相同的项。
图1和4-6图示了可以用于实现本文所讨论的各种实施例的计算系统的实施例的框图。
图2图示了根据实施例的固态驱动器的各种组件的框图。
图3A、3B、3C、3D和3E图示了根据一些实施例的数据布局的框图。
图3F、3G和3H图示了根据一些实施例的用于压缩/解压缩的各种固态驱动器组件的框图。
具体实施方式
在以下描述中,阐述众多具体细节以便提供各种实施例的透彻理解。然而,可以在没有这些具体细节的情况下实践各种实施例。在其它实例中,并未详细描述公知的方法、过程、组件和电路以免使特定实施例模糊。另外,可以使用各种部件执行实施例的各种方面,所述部件诸如集成半导体电路(“硬件”)、组织成一个或多个程序的计算机可读指令(“软件”)或硬件和软件的某种组合。出于本公开的目的,对“逻辑”的引用应当意味着硬件、软件、固件或其某种组合。
目前,SSD可能比每兆字节基础上的更加传统的存储设备(诸如硬盘驱动器)更加昂贵。为此目的,可以在SSD中利用压缩以压缩数据,使得更多数据装入在SSD的相同部分上,从而导致每兆字节基础上的较低实现成本。此外,压缩可以导致对NAND的写入业务量的明显减少。写入业务量中的减少还导致写入放大中的对应减少,这暗示更好的性能、可靠性、损耗均衡和功耗。
为此目的,一些实施例涉及高效的固态驱动器(SSD)数据压缩方案和布局。这样的技术不限于SSD并且可以应用于任何类型的非易失性存储器,如以下进一步讨论的。更特别地,实施例提供了一种高效数据布局,其将压缩数据部分(或组块)大小和间接粒度二者考虑在内并且提供用于经压缩和未经压缩的数据块的均一数据布局。这样的技术还可以使得从功率损失中的恢复(诸如由PLI(即将发生的功率损失)技术提供的恢复,所述技术利用能量存储电容器或电池以完成进行中的命令并且向非易失性存储部提交临时存储的数据)和固件管理更加容易。另一实施例提供一种新颖的填补方案,其使得能够实现超标量数据解压缩,例如减少读取数据延时。又一实施例提供了一种用于未经压缩的数据(例如组织为数据的群组或组块)的自动数据旁路能力。
另外,尽管参考非易失性存储器(NVM)一般地讨论一些实施例,但是实施例不限于单个类型的NVM,并且可以使用任何类型的非易失性存储器或不同NVM类型的组合(例如以诸如固态驱动器(或SSD,例如包括NAND和/或NOR类型的存储器单元)之类的格式或可用于存储的其它格式,诸如存储器驱动器、闪速驱动器等)。存储介质(无论以SSD格式使用还是以其它方式)可以是任何类型的存储介质,包括例如以下中的一个或多个:纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)、闪速存储器、自旋力矩转移随机存取存储器(STTRAM)、电阻随机存取存储器、字节可寻址3维交叉点存储器、PCM(相变存储器)等。而且,可以使用诸如动态RAM(DRAM)之类的任何类型的随机存取存储器(RAM),其由功率储备(诸如电池或电容)后援以保留数据。因而,甚至能够在功率故障或功率中断期间保留数据的易失性存储器可以用于各种实施例中的存储。
本文所讨论的技术可以提供在各种计算系统(例如包括非移动计算设备,诸如台式机、工作站、服务器、机架系统等,和移动计算设备,诸如智能电话、平板电脑、UMPC(超移动个人计算机)、膝上型计算机、UltrabookTM计算设备、智能手表、智能眼镜、智能手镯等)中,包括参考图1-6所讨论的那些。更特别地,图1图示了根据实施例的计算系统100的框图。系统100可以包括一个或多个处理器102-1至102-N(在本文中一般称为“多个处理器102”或“处理器102”)。多个处理器102可以经由互连或总线104进行通信。每个处理器可以包括各种组件,为了清楚起见仅参考处理器102-1讨论其中的一些。相应地,其余的处理器102-2至102-N中的每个可以包括参考处理器102-1讨论的相同或类似的组件。
在实施例中,处理器102-1可以包括一个或多个处理器核106-1至106-N(在本文中称为“多个核106”或更一般地称为“核106”)、处理器高速缓存108(在各种实施例中其可以是共享高速缓存或私有高速缓存),和/或路由器110。处理器核106可以在单个集成电路(IC)芯片上实现。而且,芯片可以包括一个或多个共享和/或私有的高速缓存(诸如处理器高速缓存108)、总线或互连(诸如总线或互连112)、逻辑120、存储器控制器(诸如参考图4-6所讨论的那些)或其它组件。
在一个实施例中,路由器110可以用于在处理器102-1和/或系统100的各种组件之间进行通信。而且,处理器102-1可以包括不止一个路由器110。另外,许多路由器110可以在通信中以使得能够实现处理器102-1的内部或外部的各种组件之间的数据路由。
处理器高速缓存108可以存储被处理器102-1的一个或多个组件(诸如多个核106)利用的数据(例如包括指令)。例如,处理器高速缓存108可以在本地缓存在存储器114中存储的数据以用于由处理器102的组件更快地访问。如图1中所示,存储器114可以经由互连104与处理器102通信。在实施例中,处理器高速缓存108(其可以是共享的)可以具有各种级别,例如处理器高速缓存108可以是中级高速缓存和/或末级高速缓存(LLC)。而且,多个核106中的每一个可以包括1级(L1)处理器高速缓存(116-1)(在本文中一般称为“L1处理器高速缓存116”)。处理器102-1的各种组件可以直接地、通过总线(例如总线112)和/或存储器控制器或中枢与处理器高速缓存108通信。
如图1中所示,存储器114可以通过存储器控制器120耦合到系统100的其它组件。存储器114包括易失性存储器,并且可以可互换地称为主存储器。尽管将存储器控制器120示出为耦合在互连104与存储器114之间,但是存储器控制器120可以位于系统100中的其它地方。例如,在一些实施例中,可以在多个处理器102之一内提供存储器控制器120或其部分。
系统100还包括非易失性(NV)存储(或非易失性存储器(NVM))设备,诸如经由SSD控制器逻辑125耦合到互连104的SSD 130。因而,逻辑125可以控制通过系统100的各种组件对SSD 130的访问。另外,尽管在图1中将逻辑125示出为直接耦合到互连104,但是逻辑125可以可替换地经由存储总线/互连(诸如SATA(串行高级技术附连)总线、外围组件互连(PCI)(或快速PCI(PCIe)接口)等)与系统100的一个或多个其它组件通信(例如其中存储总线经由比如总线桥、芯片组(诸如参考图2和4-6所讨论的)等那样的某个其它逻辑耦合到互连104)。此外,在各种实施例中,逻辑125可以合并到存储器控制器逻辑(诸如参考图4-6所讨论的那些)中或提供在相同的集成电路(IC)设备上(例如在与SSD 130相同的IC设备上或者在与SSD 130相同的外壳中)。系统100还可以包括其它类型的非易失性存储部,诸如参考图4-6所讨论的那些,包括例如硬盘驱动器等。
另外,逻辑125和/或SSD 130可以耦合到一个或多个传感器(未示出)以接收指示由所述一个或多个传感器检测到的值或状态的信息(例如以一个或多个位或信号的形式)。可以与系统100(或本文讨论的其它计算系统,诸如例如参考包括图4-6的其它图所讨论的那些)的组件靠近地提供这些一个或多个传感器,以感测影响系统/平台的功率/热学行为的各种因素中的变化,所述因素诸如温度、操作频率、操作电压、功耗和/或核间通信活动等,所述组件包括多个核106、互连104或112、处理器102外部的组件、SSD 130、SSD总线、SATA总线、逻辑125等。
如图1中所图示的,系统100可以包括逻辑160,逻辑160可以位于系统100中的各种位置中(诸如所示出的那些位置,包括耦合到互连104、在处理器102内部等)。如本文所讨论的,逻辑160促进涉及一些实施例的一个或多个操作,诸如高效非易失性存储器(例如SSD)数据压缩方案和/或布局。
图2图示了根据实施例的SSD的各种组件的框图。逻辑160可以位于如所讨论的图1的系统100中的各种位置中,以及SSD控制器逻辑125内部。在SSD控制器逻辑125可以促进SSD 130与其它系统组件之间经由接口250(例如SATA、SAS、PCIe等)的通信的同时,控制器逻辑282促进逻辑125与SSD 130内部的组件之间的通信(或SSD 130内部的组件之间的通信)。如图2中所示,控制器逻辑282包括一个或多个处理器核或处理器284和存储器控制器逻辑286,并且耦合到随机存取存储器(RAM)288、固件存储部290和一个或多个存储器模块或管芯292-1至292-n(其可以包括NAND闪存、NOR闪存或其它类型的非易失性存储器)。存储器模块292-1至292-n经由一个或多个存储器通道或总线耦合到存储器控制器逻辑286。参考图1-6讨论的操作中的一个或多个可以由图2的组件中的一个或多个来执行,例如多个处理器284和/或控制器282可以压缩/解压缩(或以其它方式导致压缩/解压缩)写入到存储器模块292-1至292-n或从其读取的数据。而且,可以将图1-6的操作中的一个或多个编程到固件290中。另外,在一些实施例中,可以使用混合驱动器而不是SSD 130(其中存在多个存储器模块/介质292-1至292-n,诸如硬盘驱动器、闪速存储器或本文所讨论的其它类型的非易失性存储器)。在使用混合驱动器的实施例中,逻辑160可以存在于与混合驱动器相同的外壳中。
如以上所提到的,一些实施例允许以均一的格式写入经压缩的和未经压缩的数据(例如,或数据的群组/组块)二者。均一格式的使用可以降低固件复杂度。在实施例中,压缩令牌(其可以是一个或多个位)指示块是否已经被压缩(或者未被压缩)。压缩令牌可以位于一个或多个位中,所述一个或多个位通常用于在未经压缩的扇区中传达逻辑块寻址/地址(LBA)信息(所述信息一般指定存储在存储设备上的数据块的位置或(例如线性)地址。如以下将进一步讨论的,LBA和经压缩的块大小包括在压缩元数据中可以准许上下文重放,并且可以允许逻辑自动跳过起初未被压缩的那些块上的解压缩。为了最大紧凑性,一个实施例在512B扇区中打包原生4KB(4096B、4104B和4112B)扇区大小的(例如所有)变型。
无损数据压缩当可以通过解压缩过程准确地检索压缩和经压缩的数据时提供无数据损失。无损数据压缩可以在SSD中提供若干间接益处,诸如更大的备用区域(其可以直接翻译成更快的性能)、增加的(例如NAND)带宽(因为更少的数据被写入)、增加的ECC(纠错码)保护(因为如果发生压缩则需要用于更长奇偶校验位的空间实际上为空),等等。
作为该方案的实施例的说明性示例,可以使用4KsB扇区大小。将KsB限定为4096B、4104B或4112B的数据。在该方案中,压缩来自主机的完整数据有效载荷,其包括4096B/4104B/4112B的主机数据。为了在SSD中合并压缩,限定“压缩块或cblock”,其可以是4KsB数据块或更多。单独/分离地压缩每一个cblock,并且与在先的和接着的cblock独立地应对每一个cblock。
一般地,SSD采用逻辑到物理映射表,所述逻辑到物理映射表还称为间接表或闪存翻译表(FTL)。每一个间接系统具有在SSD内部追踪来自主机的数据的最小追踪粒度(通常512B,但是可以更多或更少)。由于间接追踪复杂度,还重要的是限定间接追踪粒度(诸如最接近的512B、1KB或其它大小)。为了间接系统中的追踪简易性,将经压缩的块填补到最接近的间接粒度边界。
数据压缩的主要缺陷之一是与数据读取相关联的增加的解压缩延时。一般地,经压缩的块仅能够由单个解压缩引擎解压缩,并且一个经压缩的块受限于该解压缩引擎的最大带宽。通过合并各种偏移(如以下所描述的),一些实施例可以提供超标量解压缩,这将允许不止一个解压缩引擎解压缩数据块。这可以增强解压缩性能并且有助于读取数据延时。一个实施例提供以下智能最接近的512B填补方案以用于使用在超标量数据解压缩中:
(a)对于要填满的N字节,取代于随后是2字节长度的N个0,实施例利用可以改进解压缩速度/延时的智能填补方案。
(b)对于N>2,可以存储2字节偏移字段,随后是指示存在一些偏移(例如所存储的多个偏移)的非零字节。在单个偏移的情况下,所存储的可以是对应于输入未经压缩的数据的大约50%的经压缩的流中的字节的偏移。当其已经消耗了输入数据缓冲器中(例如中途)的输入字节时,压缩器逻辑(例如逻辑160)可以维持/保存输出字节计数(偏移)。一般而言,这将不是经压缩的流的50%,因为经压缩的流的大小高度取决于在哪里找到匹配的串(以及其长度),以及在哪里编码文字字节。所保存的偏移值应当是可以被解压缩以生成原始未经压缩的数据的大约50%点处的数据的第一有效符号。在解压缩期间,如果检测到偏移,第二并行解压缩器逻辑将操作以有效地加倍性能。作为扩展,可以存储(符号对应于的)输入字节的偏移,使得可以在其正确地方中从并行单元直接写入经解压缩的数据。以上实施例可以扩展到更多并行解压缩器逻辑,例如四个并行解压缩器(存储经压缩的流中的四个偏移)等等。
而且,在一些实施例中,如果N<3,则可以不执行超标量解压缩,并且可以替代性地应用仅零填补的遗留方案。在该情况下,以下称为“偏移存在/类型”的“超标量解压缩元”的最后字节将指示不存在可以发生的超标量解压缩。当N<3时,可以对超出“超标量解压缩元”的其余空间进行零填补。对于N>3,它可以指示有多少索引可用。
图3A图示了根据实施例的未经压缩的4KsB数据扇区的框图。该数据扇区可以由例如主机提供。更具体地,图3A示出SSD介质上(例如NAND介质上)的未经压缩的和经压缩的数据布局,其中cblock大小为4KB,并且间接追踪粒度为512B。以512B的组块/块的形式表示经压缩的数据。其它组块/块大小和间接追踪粒度也是可能的。图3A的数据扇区还包括CRC(循环冗余校验)和LBA部分,如所示。
图3B图示了根据实施例的在非易失性(例如NAND)介质上写入的不可压缩的或未经压缩的数据的框图。可以最低限度将4KsB cblock向下压缩到502B,并且最小可接受的经压缩的大小将为6*512+502B或3574B或7个扇区。如果数据不可压缩到至少7个扇区,使用所有8个扇区以其未经压缩的形式写入它,如图3B中所示。
图3C图示了根据实施例的用于压缩到三个512B扇区和元数据的4KsB扇区的非易失性存储器(例如NAND)介质布局的框图。图3D图示了根据实施例的用于压缩到一个512B扇区加上18B元数据的4KsB的非易失性存储器(例如NAND)介质布局的框图。
参考图3C和3D,将经压缩的数据拆分成长度为512B的数据组块/部分,除了最后的组块之外。9B用于5字节的LBA信息和4字节的经压缩的CRC。每一个组块/部分伴随有9B公共元。图3C示出其中将4KsB片段压缩到三个组块的示例。图3D示出其中将4KsB片段压缩到一个组块或502B或更少的示例。在一个实施例中,如果将4KsB组块/部分压缩到一个扇区,则将仅存在所附连的单个压缩元数据。在实施例中,如果经压缩的数据不止一个扇区,则每一个扇区具有附连到它的压缩元。
在一些实施例中,存在两种形式的压缩元:(1)公共元:对所有经压缩的数据组块/部分是公共的;以及(2)最终元:用于其中将数据压缩到单个扇区或经压缩的块中的最后组块/部分的情况。以下给出这两种元类型内的样本字段:
(1)公共元或CMeta:
(i)压缩令牌:指示该组块被压缩。在实施例中,该压缩令牌的缺失指示未经压缩的块。这可以在与以未经压缩的形式的LBA相同的位置中。压缩令牌可以是负LBA值(以0xF为开始)以将其与作为正值的主机发布的LBA区分开。
(ii)扇区偏移:从经压缩的块的开始的偏移,例如第三经压缩的组块具有扇区偏移2。
(iii)大小字段:该字段指示基于零的计数方案中的扇区中的经压缩的块的总体大小。例如,如果块被压缩到3个扇区,该值将为2。当大小和扇区偏移相同时,超过针对超标量元的经压缩的数据的502B的某种额外信息是可用的。
(iv)用于对准的对准填补(26b)。
(2)最终元或FMeta:
LBA:4KsB块的5B的原始LBA;
CCRC:经压缩的数据之上计算的4B的CRC。
在一个实施例中,为了最大紧凑性,可以使用如图3B中所示的512B打包方案。元数据打包方案的其它变型是可能的。例如,在一些实施例中可以在没有粒度损失的情况下将元数据移动到经压缩的组块前面。或者,可以将间接追踪粒度设定为520B或528B。在图中示出的值要用作可能的情况的仅仅示例,并且绝不应当限制实施例的范围。
在一个实施例中,逻辑160是SSD控制器中的集成压缩引擎(诸如图2中所示)。压缩引擎可以不可知实际的压缩机制。压缩引擎可以采用一种或多种无损压缩算法(诸如LZ系列(Lempel-Ziv),例如包括Snappy、LZ4、LZ77等)。而且,在一些实施例中,图3B示出以各种大小4096/4104/4112的未经压缩的数据。从该未经压缩的格式,取决于发生多少压缩,人们可以得到图3C和3D中的经压缩的格式。图3C示出当未经压缩的4KsB块被向下压缩到三个扇区时的情况以及对应的布局格式,并且图3D示出当数据被向下压缩到一个扇区时的情况以及对应的布局格式。可以存在当4KsB被向下压缩到2、4、5、6和7个扇区时的其它情况,但是那些未示出,而同时参考图3D和3C描述的通用方案保持相同。
图3E示出根据实施例的超标量解压缩元/填补格式/布局的框图。如所示,填补可以按顺序包括以下字段:
0*(被示出为零填补)
2字节offset-in-comp-streamk|| <可选的2字节offset-in-original-streaml> ...
2字节offset-in-comp-stream2|| <可选的2字节offset-in-original-stream2> ...
2字节offset-in-comp-streaml || <可选的2字节offset-in-original-streamk>...
1字节偏移存在/类型(被示出为偏移存在/类型(lB))
而且,在一些实施例中,取决于多少空间可用于填补,如果Z<3则可以使用零填补,或者如果其大于3则一个或多个偏移可以用于超标量解压缩。图3E示出至少5B可用于超标量解压缩,并且可以容纳并行工作的至少2个解压缩引擎。如本文所讨论的,将标签从Z<2更新到Z<3指示该填补中的偏移存在/类型的计数。另一假设在于,可能需要至少2个字节用于该偏移。
图3F、3G和3H图示了根据一些实施例的提供数据压缩和解压缩的SSD组件的框图。更特别地,图3F示出CSDP(压缩安全数据路径)块,其执行针对从主机302传输至转移缓冲器320的数据的压缩/加密。图3G示出DSDP(解压缩安全数据路径)块,其执行针对从缓冲器320传输至主机302的数据的解压缩/解密。图3H示出用于内联压缩/解压缩的SSD架构的组件。虽然一些图可能一般地讨论NAND介质,但是实施例不限于NAND介质,并且可以利用其它类型的介质(诸如参考图2所讨论的那些)。
参考图3F,由主机302通过复用器304向CSDP逻辑306发送写入数据。CSDP逻辑306包括输入FIFO(先入先出)缓冲器308、多压缩引擎逻辑310、复用器311和316、解复用器312、加密逻辑314(其可以依照以下加密数据:由美国国家标准和技术会在2001年建立的高级加密标准(AES)和/或用于针对使用XTS高级加密标准(具有称为XTC的密文失窃(CTS)的基于XEX的调整码本模式(TCB)(XEX TCB CTS))的经加密的共享存储介质的已存储数据1619的加密的电气和电子工程师协会(IEEE)标准化工程)以及输出FIFO 318。一旦由主机302写入的数据由CSDP 306的组件处理,结果得到的数据在其被传输到转移缓冲器320之前存储在输出FIFO 318中(例如用于写入到SSD介质,诸如参考图2所讨论的)。在一些实施例中,可以在SSD 130的各种组件内提供CSDP逻辑,诸如逻辑160、逻辑282、存储器控制器286等。
参考图3G,将读取数据(源自SSD介质)存储在转移缓冲器320中并且将其转发至DSDP逻辑334。DSDP逻辑334包括输入FIFO缓冲器322、多解压缩引擎逻辑328、复用器326和330、解密逻辑324(其可以依照AES、AES-XTS等解密数据),以及输出FIFO缓冲器332。一旦读取数据由DSDP 334的组件处理,结果得到的数据在其被经由解复用器336传输至主机302之前存储在输出FIFO 332中。在一些实施例中,可以在SSD 130的各种组件内提供DSDP逻辑,诸如逻辑160、逻辑282、存储器控制器286等。而且,图3F和3G的一些组件可以组合或者在压缩/加密与解压缩/解密逻辑(诸如缓冲器308、318、322和332)之间共享。
参考图3H,在SSD 130中组合或共享图3F和3G的各种组件。主机302经由主机数据转移层逻辑352与CODEC(压缩/解压缩)逻辑350(例如包括CSDP 306和DSDP 334)通信(例如使用NVMe(或快速NVM,例如依照NVM主机控制器接口规范,修订本1.2,2014年11月3日)、SATA(串行高级技术附连)、SAS(串行附连的SCSI(小型计算机系统接口))等)。嵌入式CPU复合体354(其可以利用本文讨论的任何处理器实现,例如参考图1-2和/或4-6)可以控制逻辑350/352和/或转移缓冲器320的操作。转移缓冲器320然后向实际的介质(例如NAND介质并且经由一个或多个NAND通道)传送读取/写入数据。尽管参考NAND介质讨论了一些实施例,但是实施例不限于NAND介质,并且可以使用其它类型的NVM,诸如本文所讨论的。
一些实施例的若干益处可以如下:
(a)用于经压缩的和未经压缩的数据的布局是均一的。用于经压缩的和未经压缩的均一数据布局可以允许更简单的固件实现。可以在一些SKU(库存计量单元)中关断压缩,并且相同的固件可以容易地处置未经压缩的数据;
(b)超标量数据解压缩:通过使用以上解释的智能填补方案,使得多个解压缩引擎能够在经压缩的块上同时工作是可能的,以得到更低的读取数据延时;
(c)上下文重放:固件(例如逻辑160)可以具有读取压缩元数据并且找出LBA以及每一个经压缩的组块多大的能力以用于上下文重放目的。该嵌入式LBA在当驱动器关机时尚未写入上下文日志的情况下或在当存在任何带的上下文日志中致命的ECC时的情况下提供用于上下文重放的信息。固件读取每一页并提取LBA和大小信息并且将其逻辑更新到物理表。该机制还使得能够从划痕(scratch)重建整个上下文,倘若出现这样做的需要的话;和/或
(d)自动数据旁路:在压缩操作期间,可能的是将经压缩的和未经压缩的组块连续地写入到介质。组块经压缩还是未经压缩通过压缩令牌/标记来指示(例如指示数据未经压缩地写入的压缩令牌的缺失)。解压缩引擎具有自动检测未经压缩的组块并且与之前未经压缩的数据连续地移动它们的能力。这称为自动数据旁路模式。这允许读取时的高效数据解压缩,因为在没有任何解压缩的情况下向主机自动发送未经压缩的组块。由于这可以在硬件、固件(例如逻辑160)中自动化,因此介入被最小化;因而,减少系统的延时。
而且,压缩,作为独立特征,一般刚好减小写入到SSD的数据的数据大小并且因而通过降低的$/GB降低SSD的成本。其还提供其它间接益处:(1)改进SSD设备的耐久性,因为通过写入更少的数据,可以在设备的寿命内写入更多数据;要指出的是,每一个SSD设备可以在规定数目的程序/擦除循环内可靠地操作;(2)创建额外的空闲区域,其在SSD中可以用作“置乱空间”以用于改进设备的写入IOPS;(3)由于更低的设备I/O功率利用,降低功耗;和/或(4)改进SSD的写入速度,因为更少的数据必须被写入到设备,并且改进总线带宽。
图4图示了依照实施例的计算系统400的框图。计算系统400可以包括经由互连网络(或总线)404通信的一个或多个中央处理单元(CPU)402或处理器。多个处理器402可以包括通用处理器、网络处理器(其处理通过计算机网络403传送的数据)、应用处理器(诸如使用在手机、智能电话等中的那些)或其它类型的处理器(包括精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC))。可以利用各种类型的计算机网络403,包括有线(例如以太网、吉比特、光纤等)或无线网络(诸如蜂窝、3G(第三代手机技术或第3代无线格式(UWCC))、4G、低功率嵌入(LPE)等)。而且,多个处理器402可以具有单核或多核设计。具有多核设计的多个处理器402可以在相同集成电路(IC)管芯上集成不同类型的处理器核。而且,具有多核设计的多个处理器402可以实现为对称或非对称多处理器。
在实施例中,多个处理器402中的一个或多个可以与图1的多个处理器102相同或类似。例如,多个处理器402中的一个或多个可以包括处理器高速缓存108和/或多个核106中的一个或多个。而且,参考图1-3F讨论的操作可以由系统400的一个或多个组件执行。
芯片组406还可以与互连网络404通信。芯片组406可以包括图形和存储器控制中枢(GMCH)408。GMCH 408可以包括与存储器114通信的存储器控制器410(在实施例中,其可以与图1的存储器控制器120相同或类似)。存储器114可以存储数据,包括指令序列,所述指令序列由CPU 402或计算系统400中包括的任何其它设备执行。而且,系统400包括逻辑125、SSD 130和/或逻辑160(在各种实施例中,其可以如所图示的经由总线422、经由诸如404之类的其它互连等耦合到系统400,其中将逻辑125合并到芯片组406中)。在一个实施例中,存储器114可以包括一个或多个易失性存储(或存储器)设备,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其它类型的存储设备。还可以利用非易失性存储器,诸如硬盘驱动器、闪存等,包括本文所讨论的任何NVM。附加设备可以经由互连网络404进行通信,所述附加设备诸如多个CPU和/或多个系统存储器。
GMCH 408还可以包括与图形加速器416通信的图形接口414。在一个实施例中,图形接口414可以经由加速图形端口(AGP)或外围组件互连(PCI)(或快速PCI(PCIe)接口)与图形加速器416通信。在实施例中,显示器417(诸如平板显示器、触摸屏等)可以通过例如信号转换器与图形接口414通信,所述信号转换器将存储在诸如视频存储器或系统存储器之类的存储设备中的图像的数字表示翻译成由显示器解释和显示的显示信号。由显示设备产生的显示信号可以在由显示器417解释并且后续在显示器417上显示之前经过各种控制设备。
中枢接口418可以允许GMCH 408和输入/输出控制中枢(ICH)420进行通信。ICH420可以提供到与计算系统400通信的一个或多个I/O设备的接口。ICH 420可以通过外围桥(或控制器)424与总线422通信,所述外围桥(或控制器)424诸如外围组件互连(PCI)桥、通用串行总线(USB)控制器或其它类型的外围桥或控制器。桥424可以提供CPU 402与外围设备之间的数据路径。可以利用其它类型的拓扑。而且,多个总线可以例如通过多个桥或控制器与ICH 420通信。而且,在各种实施例中,与ICH 420通信的其它外设可以包括集成驱动电子器件(IDE)或一个或多个小型计算机系统接口(SCSI)硬盘驱动器、一个或多个USB端口、键盘、鼠标、一个或多个并行端口、一个或多个串行端口、一个或多个软盘驱动器、数字输出支持(例如数字视频接口(DVI))或其它设备。
总线422可以与音频设备426、一个或多个盘驱动器428和网络接口设备430(其例如经由有线或无线接口与计算机网络403通信)通信。如所示,网络接口设备430可以耦合到天线431以(例如经由电气和电子工程师协会(IEEE)802.11接口(包括IEEE 802.11a/b/g/n/ac等)、蜂窝接口、3G、4G、LPE等)与网络403无线通信。其它设备可以经由总线422进行通信。而且,在一些实施例中,各种组件(诸如网络接口设备430)可以与GMCH 408通信。此外,处理器402和GMCH 408可以组合以形成单个芯片。另外,在其它实施例中,图形加速器416可以被包括在GMCH 408内。
另外,计算系统400可以包括易失性和/或非易失性存储器(或存储部)。例如,非易失性存储器可以包括以下中的一个或多个:只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电EPROM(EEPROM)、盘驱动器(例如428)、软盘、致密盘ROM(CD-ROM)、数字多功能盘(DVD)、闪速存储器、磁光盘或能够存储电子数据(例如,包括指令)的其它类型的非易失性机器可读介质。
图5图示了根据实施例的以点对点(PtP)配置来布置的计算系统500。特别地,图5示出其中处理器、存储器和输入/输出设备通过数个点对点接口互连的系统。参考图1-4讨论的操作可以由系统500的一个或多个组件执行。
如图5中所图示的,系统500可以包括若干处理器,为了清楚起见仅示出其中的两个——处理器502和504。处理器502和504可以每个包括本地存储器控制器中枢(MCH)506和508以使得能够实现与存储器510和512的通信。存储器510和/或512可以存储各种数据,诸如参考图1和/或4的存储器114讨论的那些。而且,在一些实施例中,MCH 506和508可以包括存储器控制器120。另外,系统500包括逻辑125、SSD 130和/或逻辑160(在各种实施例中,其可以诸如所图示的经由总线540/544、经由到一个或多个处理器502/504或芯片组520的其它点对点连接等耦合到系统500,其中将逻辑125合并到芯片组520中)。
在实施例中,处理器502和504可以是参考图4讨论的处理器402中的一个。处理器502和504可以分别使用PtP接口电路516和518经由点对点(PtP)接口514来交换数据。而且,处理器502和504可以每个使用点对点接口电路526、528、530和532经由单独的PtP接口522和524与芯片组520交换数据。芯片组520可以进一步例如使用PtP接口电路537经由高性能图形接口536与高性能图形电路534交换数据。如参考图4所讨论的,在一些实施例中,图形接口536可以耦合到显示设备(例如显示器417)。
在一个实施例中,图1的处理器高速缓存108和/或多个核106中的一个或多个可以位于处理器502和504内(未示出)。然而,其它实施例可以存在于图5的系统500内的其它电路、逻辑单元或设备中。另外,可以遍及图5中图示的若干电路、逻辑单元或设备而分布其它实施例。
芯片组520可以使用PtP接口电路541与总线540通信。总线540可以具有与其通信的一个或多个设备,诸如总线桥542和I/O设备543。经由总线544,总线桥542可以与其它设备通信,所述其它设备诸如键盘/鼠标545、通信设备546(诸如调制解调器、网络接口设备或可以与计算机网络403通信的其它通信设备,如例如参考网络接口设备430所讨论的,包括经由天线431)、音频I/O设备和/或数据存储设备548。数据存储设备548可以存储可以由处理器502和/或504执行的代码549。
在一些实施例中,本文所讨论的组件中的一个或多个可以体现为片上系统(SOC)设备。图6图示了依照实施例的SOC封装的框图。如图6中图示的,SOC 602包括一个或多个中央处理单元(CPU)核620、一个或多个图形处理器单元(GPU)核630、输入/输出(I/O)接口640和存储器控制器642。SOC封装602的各种组件可以耦合到互连或总线,诸如在本文中参考其它图所讨论的那样。而且,SOC封装602可以包括更多或更少的组件,诸如在本文中参考其它图所讨论的那些。另外,SOC封装602的每个组件可以包括一个或多个其它组件,例如如参考本文中的其它图所讨论的那样。在一个实施例中,在一个或多个集成电路(IC)管芯上提供SOC封装602(及其组件),例如所述一个或多个集成电路(IC)管芯被封装到单个半导体器件中。
如图6中所图示的,SOC封装602经由存储器控制器642耦合到存储器660(其可以与在本文中参考其它图讨论的存储器类似或相同)。在实施例中,可以在SOC封装602上集成存储器660(或其部分)。
I/O接口640可以例如经由互连和/或总线耦合到一个或多个I/O设备670,诸如在本文中参考其它图所讨论的那样。一个或多个I/O设备670可以包括以下中的一个或多个:键盘、鼠标、触摸垫、显示器、图像/视频捕获设备(诸如相机或摄像机/录像机)、触摸屏、扬声器等。另外,在实施例中,SOC封装602可以包括/集成逻辑125/160。可替换地,可以在SOC封装602外部提供逻辑125/160(即作为分立的逻辑)。
以下示例关于另外的实施例。示例1包括一种装置,包括:耦合到非易失性存储器的逻辑,用于接收数据并且压缩数据以生成经压缩的数据,之后将经压缩的数据存储在非易失性存储器中,其中经压缩的数据包括数据的经压缩的版本、经压缩的数据的大小、公共元信息,以及最终元信息。示例2包括示例1的装置,其中公共元信息包括以下中的一个或多个:一个或多个填补位、经压缩的数据的大小、偏移以及压缩令牌。示例3包括示例2的装置,其中压缩令牌包括一个或多个位。示例4包括示例2的装置,其中压缩令牌存储在与逻辑块寻址(LBA)信息相同的空间中。示例5包括示例2的装置,其中压缩令牌指示数据的对应部分是否被压缩。示例6包括示例2的装置,其中压缩令牌的缺失指示数据的对应部分未被压缩。示例7包括示例2的装置,其中至少部分地基于压缩令牌的值或压缩令牌的缺失而执行经压缩的数据的解压缩。示例8包括示例1的装置,其中由多个解压缩逻辑执行经压缩的数据的解压缩。示例9包括示例1的装置,其中最终元信息包括以下中的一个或多个:经压缩的循环冗余代码(CRC)和LBA信息。示例10包括示例1的装置,其中所述逻辑访问公共信息数据或最终元信息以执行上下文重放或上下文重建。示例11包括示例1的装置,其中经压缩的数据和所接收的数据具有依照均一格式的布局。示例12包括示例1的装置,其中所述逻辑依照一种或多种无损压缩算法来压缩所接收的数据。示例13包括示例1的装置,其中在压缩之后加密或在解压缩之前解密经压缩的数据。示例14包括示例13的装置,其中依照高级加密标准加密或解密经压缩的数据。示例15包括示例1的装置,其中一个或多个填补位将经压缩的数据填补到最接近的间接粒度边界。示例16包括示例1的装置,其中存储器控制器包括所述逻辑。示例17包括示例1的装置,其中固态驱动器包括所述逻辑。示例18包括示例1的装置,其中非易失性存储器包括以下中的一个或多个:纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)、闪速存储器、自旋力矩转移随机存取存储器(STTRAM)、电阻随机存取存储器、字节可寻址3维交叉点存储器、PCM(相变存储器)和由功率储备后援以在功率故障或功率中断期间保留数据的易失性存储器。示例19包括示例1的装置,还包括与主机传送数据的网络接口。
示例20包括一种方法,包括:接收数据并且压缩数据以生成经压缩的数据,之后将经压缩的数据存储在非易失性存储器,其中经压缩的数据包括数据的经压缩的版本、经压缩的数据的大小、公共元信息,以及最终元信息。示例21包括示例20的方法,其中公共元信息包括以下中的一个或多个:一个或多个填补位、经压缩的数据的大小、偏移以及压缩令牌,并且最终元信息包括以下中的一个或多个:经压缩的循环冗余代码(CRC)和LBA信息。示例22包括示例20的方法,还包括通过多个解压缩逻辑解压缩经压缩的数据。示例23包括示例20的方法,还包括访问公共信息数据或最终元信息以执行上下文重放或上下文重建。示例24包括一种计算机可读介质,包括一个或多个指令,所述一个或多个指令当在一个或多个处理器上执行时将一个或多个处理器配置成执行一个或多个操作以:接收数据并且压缩数据以生成经压缩的数据,之后将经压缩的数据存储在非易失性存储器中,其中经压缩的数据包括数据的经压缩的版本、经压缩的数据的大小、公共元信息,以及最终元信息。示例25包括示例24的计算机可读介质,还包括一个或多个指令,所述一个或多个指令当在处理器上执行时将处理器配置成执行一个或多个操作以导致经压缩的数据通过多个解压缩逻辑的解压缩。示例26包括示例24的计算机可读介质,还包括一个或多个指令,所述一个或多个指令当在处理器上执行时将处理器配置成执行一个或多个操作以导致对公共信息数据或最终元数据信息的访问以执行上下文重放或上下文重建。
示例27包括一种计算系统,包括:包括具有一个或多个处理器核的处理器的主机;非易失性存储器;以及耦合到非易失性存储器的逻辑,用于从主机接收数据并且压缩未经压缩的数据以生成经压缩的数据,之后将经压缩的数据存储在非易失性存储器中,其中经压缩的数据包括未经压缩的数据的经压缩的版本、经压缩的数据的大小、公共元信息,以及最终元信息。示例28包括示例27的系统,其中公共元信息包括以下中的一个或多个:一个或多个填补位、经压缩的数据的大小、偏移以及压缩令牌。示例29包括示例28的系统,其中压缩令牌包括一个或多个位。示例30包括示例28的系统,其中压缩令牌存储在与逻辑块寻址(LBA)信息相同的空间中。示例31包括示例28的系统,其中压缩令牌指示数据的对应部分是否被压缩。示例32包括示例28的系统,其中压缩令牌的缺失指示数据的对应部分未被压缩。示例33包括示例28的系统,其中至少部分地基于压缩令牌的值或压缩令牌的缺失而执行经压缩的数据的解压缩。示例34包括示例27的系统,其中由多个解压缩逻辑执行经压缩的数据的解压缩。
示例35包括一种装置,包括执行如在任何前述示例中阐述的方法的部件。
示例36包括机器可读存储部,包括机器可读指令,所述机器可读指令在被执行时实现如在任何前述示例中阐述的方法或实现如在任何前述示例中阐述的装置。
在各种实施例中,在本文中例如参考图1-6讨论的操作可以实现为硬件(例如电路)、软件、固件、微代码或其组合,其可以被提供为例如包括有形(例如非暂时性)机器可读或计算机可读介质的计算机程序产品,所述介质具有存储在其上的用于对计算机编程以执行本文中讨论的过程的指令(或软件过程)。而且,作为示例,术语“逻辑”可以包括软件、硬件或软件和硬件的组合。机器可读介质可以包括诸如关于图1-6所讨论的那些之类的存储设备。
此外,这样的有形计算机可读介质可以作为计算机程序产品被下载,其中程序可以通过数据信号的方式(诸如在载波或其它传播介质中)经由通信链路(例如总线、调制解调器或网络连接)从远程计算机(例如服务器)转移到请求计算机(例如客户端)。
在本说明书中对“一个实施例”或“一实施例”的引用意味着结合实施例描述的特定特征、结构或特性可以被包括在至少一个实现中。短语“在一个实施例中”在本说明书中的各种地方中的出现可以或可以不都指代相同的实施例。
而且,在说明书和权利要求书中,可以使用术语“耦合”和“连接”连同其派生词。在一些实施例中,“连接”可以用于指示两个或更多元件与彼此直接物理或电气接触。“耦合”可以意味着两个或更多元件直接物理或电气接触。然而,“耦合”还可以意味着两个或更多元件可以不与彼此直接接触,但是仍可以与彼此协作或交互。
因此,尽管已经以特定于结构特征、数字值和/或方法动作的语言描述了实施例,但是要理解,所要求保护的主题可以不限于所描述的特定特征、数字值或动作。相反,特定特征、数字值和动作被作为实现所要求保护的主题的样本形式而公开。

Claims (25)

1.一种装置,包括:
耦合到非易失性存储器的逻辑,用于接收数据并且压缩数据以生成经压缩的数据,之后将经压缩的数据存储在非易失性存储器中,
其中经压缩的数据包括数据的经压缩的版本、经压缩的数据的大小、公共元信息,以及最终元信息。
2.权利要求1所述的装置,其中公共元信息包括以下中的一个或多个:一个或多个填补位、经压缩的数据的大小、偏移以及压缩令牌。
3.权利要求2所述的装置,其中压缩令牌包括一个或多个位。
4.权利要求2所述的装置,其中压缩令牌存储在与逻辑块寻址(LBA)信息相同的空间中。
5.权利要求2所述的装置,其中压缩令牌指示数据的对应部分是否被压缩。
6.权利要求2所述的装置,其中压缩令牌的缺失指示数据的对应部分未被压缩。
7.权利要求2所述的装置,其中至少部分地基于压缩令牌的值或压缩令牌的缺失而执行经压缩的数据的解压缩。
8.权利要求1所述的装置,其中由多个解压缩逻辑执行经压缩的数据的解压缩。
9.权利要求1所述的装置,其中最终元信息包括以下中的一个或多个:经压缩的循环冗余代码(CRC)和LBA信息。
10.权利要求1所述的装置,其中所述逻辑访问公共信息数据或最终元信息以执行上下文重放或上下文重建。
11.权利要求1所述的装置,其中经压缩的数据和所接收的数据具有依照均一格式的布局。
12.权利要求1所述的装置,其中所述逻辑依照一种或多种无损压缩算法来压缩所接收的数据。
13.权利要求1所述的装置,其中在压缩之后加密或在解压缩之前解密经压缩的数据。
14.权利要求13所述的装置,其中依照高级加密标准加密或解密经压缩的数据。
15.权利要求1所述的装置,其中一个或多个填补位将经压缩的数据填补到最接近的间接粒度边界。
16.权利要求1所述的装置,其中存储器控制器包括所述逻辑。
17.权利要求1所述的装置,其中固态驱动器包括所述逻辑。
18.权利要求1所述的装置,其中非易失性存储器包括以下中的一个或多个:纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)、闪速存储器、自旋力矩转移随机存取存储器(STTRAM)、电阻随机存取存储器、字节可寻址3维交叉点存储器、PCM(相变存储器)和由功率储备后援以在功率故障或功率中断期间保留数据的易失性存储器。
19.权利要求1所述的装置,还包括与主机传送数据的网络接口。
20.一种方法,包括:
接收数据并且压缩数据以生成经压缩的数据,之后将经压缩的数据存储在非易失性存储器中,
其中经压缩的数据包括数据的经压缩的版本、经压缩的数据的大小、公共元信息,以及最终元信息。
21.权利要求20所述的方法,其中公共元信息包括以下中的一个或多个:一个或多个填补位、经压缩的数据的大小、偏移以及压缩令牌,并且最终元信息包括以下中的一个或多个:经压缩的循环冗余代码(CRC)和LBA信息。
22.权利要求20所述的方法,还包括通过多个解压缩逻辑解压缩经压缩的数据。
23.权利要求20所述的方法,还包括访问公共信息数据或最终元信息以执行上下文重放或上下文重建。
24.一种计算机可读介质,包括一个或多个指令,所述一个或多个指令当在处理器上执行时将所述处理器配置成执行权利要求20至23中的任何一项的一个或多个操作。
25.一种装置,包括执行如在权利要求20至23中的任何一项中阐述的方法的部件。
CN201680030271.9A 2015-06-26 2016-05-31 高效固态驱动器数据压缩方案和布局 Active CN107624179B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/751,450 US20160378352A1 (en) 2015-06-26 2015-06-26 Efficient solid state drive data compression scheme and layout
US14/751450 2015-06-26
PCT/US2016/035079 WO2016209564A1 (en) 2015-06-26 2016-05-31 Efficient solid state drive data compression scheme and layout

Publications (2)

Publication Number Publication Date
CN107624179A true CN107624179A (zh) 2018-01-23
CN107624179B CN107624179B (zh) 2022-01-25

Family

ID=57586550

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680030271.9A Active CN107624179B (zh) 2015-06-26 2016-05-31 高效固态驱动器数据压缩方案和布局

Country Status (4)

Country Link
US (1) US20160378352A1 (zh)
EP (1) EP3314441B1 (zh)
CN (1) CN107624179B (zh)
WO (1) WO2016209564A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108536616A (zh) * 2018-03-28 2018-09-14 华中科技大学 一种提升pcm数据加密写性能和寿命的映射方法
CN111190844A (zh) * 2019-12-31 2020-05-22 杭州华澜微电子股份有限公司 一种协议转化方法及电子设备
CN114003169A (zh) * 2021-08-02 2022-02-01 固存芯控半导体科技(苏州)有限公司 一种用于ssd的数据压缩方法

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10168909B1 (en) * 2016-03-29 2019-01-01 Amazon Technologies, Inc. Compression hardware acceleration
US10684993B2 (en) * 2016-06-15 2020-06-16 International Business Machines Corporation Selective compression of unstructured data
US10353604B2 (en) 2016-12-27 2019-07-16 Intel Corporation Object transformation in a solid state drive
US11416236B2 (en) * 2017-07-07 2022-08-16 Qualcomm Incorporated Over-the-air (OTA) updating of partially compressed firmware
US11010233B1 (en) 2018-01-18 2021-05-18 Pure Storage, Inc Hardware-based system monitoring
US10747439B2 (en) 2018-03-02 2020-08-18 Intel Corporation Method and apparatus for power-fail safe compression and dynamic capacity for a storage device
CN111384964B (zh) * 2018-12-28 2022-05-31 上海寒武纪信息科技有限公司 数据压缩解压装置和数据压缩方法
KR102659832B1 (ko) 2019-03-05 2024-04-22 삼성전자주식회사 데이터 저장 장치 및 시스템
US11082449B2 (en) * 2019-10-24 2021-08-03 Cypress Semiconductor Corporation Remote memory diagnostics
US11755751B2 (en) 2019-11-22 2023-09-12 Pure Storage, Inc. Modify access restrictions in response to a possible attack against data stored by a storage system
US11651075B2 (en) 2019-11-22 2023-05-16 Pure Storage, Inc. Extensible attack monitoring by a storage system
US11720692B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Hardware token based management of recovery datasets for a storage system
US11615185B2 (en) 2019-11-22 2023-03-28 Pure Storage, Inc. Multi-layer security threat detection for a storage system
US11941116B2 (en) 2019-11-22 2024-03-26 Pure Storage, Inc. Ransomware-based data protection parameter modification
US20210382992A1 (en) * 2019-11-22 2021-12-09 Pure Storage, Inc. Remote Analysis of Potentially Corrupt Data Written to a Storage System
US11341236B2 (en) 2019-11-22 2022-05-24 Pure Storage, Inc. Traffic-based detection of a security threat to a storage system
US11675898B2 (en) 2019-11-22 2023-06-13 Pure Storage, Inc. Recovery dataset management for security threat monitoring
US11625481B2 (en) 2019-11-22 2023-04-11 Pure Storage, Inc. Selective throttling of operations potentially related to a security threat to a storage system
US11645162B2 (en) 2019-11-22 2023-05-09 Pure Storage, Inc. Recovery point determination for data restoration in a storage system
US11500788B2 (en) 2019-11-22 2022-11-15 Pure Storage, Inc. Logical address based authorization of operations with respect to a storage system
US11687418B2 (en) 2019-11-22 2023-06-27 Pure Storage, Inc. Automatic generation of recovery plans specific to individual storage elements
US11657155B2 (en) 2019-11-22 2023-05-23 Pure Storage, Inc Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system
US11720714B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Inter-I/O relationship based detection of a security threat to a storage system
US11520907B1 (en) * 2019-11-22 2022-12-06 Pure Storage, Inc. Storage system snapshot retention based on encrypted data
US11513686B2 (en) * 2020-05-05 2022-11-29 Nvidia Corporation Techniques for dynamically compressing memory regions having a uniform value
KR20220128791A (ko) * 2021-03-15 2022-09-22 삼성전자주식회사 비휘발성 메모리를 포함하는 전자 장치 및 그것의 비휘발성 메모리 관리 방법

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1037045A (zh) * 1988-04-08 1989-11-08 国际商业机器公司 对关系数据库的数据项(objelt)进行有效分析的系统和方法
CN1973287A (zh) * 2004-04-26 2007-05-30 斯多维兹有限公司 压缩存储用文件以及对压缩的文件进行操作的方法和系统
WO2007138599A2 (en) * 2006-05-31 2007-12-06 Storwize Ltd. Method and system for transformation of logical data objects for storage
US20100079314A1 (en) * 2008-09-30 2010-04-01 Apple Inc. Method and apparatus for compressing and decompressing data
CN103581675A (zh) * 2012-08-07 2014-02-12 上海算芯微电子有限公司 视频数据的压缩/解压缩方法及系统
CN103620564A (zh) * 2011-05-10 2014-03-05 马维尔国际贸易有限公司 用于存储器设备的数据压缩和紧缩
US20140281146A1 (en) * 2013-03-15 2014-09-18 Western Digital Technologies, Inc. Compression and formatting of data for data storage systems
CN104471547A (zh) * 2012-06-22 2015-03-25 美光科技公司 数据压缩及管理
CN104484132A (zh) * 2014-12-12 2015-04-01 华为技术有限公司 数据缩减的方法及装置
US20150102282A1 (en) * 2013-10-14 2015-04-16 Samsung Electronics Co., Ltd. Semiconductor memory device having three-dimensional cross point array
CN104583977A (zh) * 2012-08-23 2015-04-29 苹果公司 主机辅助的存储块的压缩
US9047189B1 (en) * 2013-05-28 2015-06-02 Amazon Technologies, Inc. Self-describing data blocks of a minimum atomic write size for a data store

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100621631B1 (ko) * 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US9195397B2 (en) * 2005-04-20 2015-11-24 Axxana (Israel) Ltd. Disaster-proof data recovery
US7987161B2 (en) * 2007-08-23 2011-07-26 Thomson Reuters (Markets) Llc System and method for data compression using compression hardware
DK2195724T3 (da) * 2007-08-28 2020-01-20 Commvault Systems Inc Energistyring af databehandlingsressourcer, såsom adaptiv energistyring af datalagringsoperationer
US7979670B2 (en) * 2008-01-24 2011-07-12 Quantum Corporation Methods and systems for vectored data de-duplication
WO2010064280A1 (en) * 2008-12-04 2010-06-10 Hitachi, Ltd. Storage system having volatile memory and non-volatile memory
CN102449607B (zh) * 2009-07-22 2015-05-27 株式会社日立制作所 具有多个闪存封装的存储系统
US8407562B2 (en) * 2009-09-01 2013-03-26 Marvell World Trade Ltd. Systems and methods for compressing data in non-volatile semiconductor memory drives
US9361044B2 (en) * 2011-03-28 2016-06-07 Western Digital Technologies, Inc. Power-safe data management system
CN102780685B (zh) * 2011-05-12 2015-11-25 国际商业机器公司 用于对数据进行压缩和加密的方法及系统
US8700834B2 (en) * 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8909855B2 (en) * 2012-08-08 2014-12-09 Avalanche Technology, Inc. Storage system employing MRAM and physically addressed solid state disk
US9116812B2 (en) * 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US9495288B2 (en) * 2013-01-22 2016-11-15 Seagate Technology Llc Variable-size flash translation layer
US9069474B2 (en) * 2013-08-20 2015-06-30 Seagate Technology Llc Retention based defecting in a hybrid memory system

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1037045A (zh) * 1988-04-08 1989-11-08 国际商业机器公司 对关系数据库的数据项(objelt)进行有效分析的系统和方法
CN1973287A (zh) * 2004-04-26 2007-05-30 斯多维兹有限公司 压缩存储用文件以及对压缩的文件进行操作的方法和系统
WO2007138599A2 (en) * 2006-05-31 2007-12-06 Storwize Ltd. Method and system for transformation of logical data objects for storage
US20100079314A1 (en) * 2008-09-30 2010-04-01 Apple Inc. Method and apparatus for compressing and decompressing data
CN103620564A (zh) * 2011-05-10 2014-03-05 马维尔国际贸易有限公司 用于存储器设备的数据压缩和紧缩
CN104471547A (zh) * 2012-06-22 2015-03-25 美光科技公司 数据压缩及管理
CN103581675A (zh) * 2012-08-07 2014-02-12 上海算芯微电子有限公司 视频数据的压缩/解压缩方法及系统
CN104583977A (zh) * 2012-08-23 2015-04-29 苹果公司 主机辅助的存储块的压缩
US20140281146A1 (en) * 2013-03-15 2014-09-18 Western Digital Technologies, Inc. Compression and formatting of data for data storage systems
US9047189B1 (en) * 2013-05-28 2015-06-02 Amazon Technologies, Inc. Self-describing data blocks of a minimum atomic write size for a data store
US20150102282A1 (en) * 2013-10-14 2015-04-16 Samsung Electronics Co., Ltd. Semiconductor memory device having three-dimensional cross point array
CN104484132A (zh) * 2014-12-12 2015-04-01 华为技术有限公司 数据缩减的方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108536616A (zh) * 2018-03-28 2018-09-14 华中科技大学 一种提升pcm数据加密写性能和寿命的映射方法
CN108536616B (zh) * 2018-03-28 2021-10-15 华中科技大学 一种提升pcm数据加密写性能和寿命的映射方法
CN111190844A (zh) * 2019-12-31 2020-05-22 杭州华澜微电子股份有限公司 一种协议转化方法及电子设备
CN114003169A (zh) * 2021-08-02 2022-02-01 固存芯控半导体科技(苏州)有限公司 一种用于ssd的数据压缩方法
CN114003169B (zh) * 2021-08-02 2024-04-16 固存芯控半导体科技(苏州)有限公司 一种用于ssd的数据压缩方法

Also Published As

Publication number Publication date
WO2016209564A1 (en) 2016-12-29
EP3314441A1 (en) 2018-05-02
EP3314441B1 (en) 2021-10-20
CN107624179B (zh) 2022-01-25
US20160378352A1 (en) 2016-12-29
EP3314441A4 (en) 2019-03-13

Similar Documents

Publication Publication Date Title
CN107624179A (zh) 高效固态驱动器数据压缩方案和布局
US9760502B2 (en) Encrypted transport solid-state disk controller
JP6443794B2 (ja) ホストとコントローラとの間でパーティション化された変換レイヤ
US9851910B2 (en) Scalable data structures for control and management of non-volatile storage
US9329991B2 (en) Translation layer partitioned between host and controller
KR102155191B1 (ko) 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택
CN101636712B (zh) 在存储控制器内服务对象请求的装置、系统和方法
KR101454807B1 (ko) 상위-레벨 리던던시 정보 계산
TWI609263B (zh) 可變大小快閃轉變層
US20120272123A1 (en) Data writing method, memory controller and memory storage apparatus
TWI459396B (zh) 資料寫入與讀取方法、記憶體控制器與記憶體儲存裝置
TW201443640A (zh) 儲存位址空間對非揮發性記憶體位址,跨度及長度映射與轉換
CN103858116A (zh) I/o设备及计算主机互操作
JP2015524975A (ja) 不揮発性メモリのための混合粒度の上位レベルの冗長
US20160239666A1 (en) Non-deterministic encryption
CN105308581A (zh) 数据存储系统的加密数据的迁移
CN102591737A (zh) 数据写入与读取方法、存储器控制器与存储器储存装置
CN104571940A (zh) 储存装置及其相关系统
CN106920572A (zh) 内存管理方法、内存控制电路单元及内存储存装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant