CN107632776B - 用于压缩输入数据的数据存储装置 - Google Patents
用于压缩输入数据的数据存储装置 Download PDFInfo
- Publication number
- CN107632776B CN107632776B CN201710060875.4A CN201710060875A CN107632776B CN 107632776 B CN107632776 B CN 107632776B CN 201710060875 A CN201710060875 A CN 201710060875A CN 107632776 B CN107632776 B CN 107632776B
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- write
- address
- control unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- 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/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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
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)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据存储装置,其可以包括:存储器单元阵列;数据缓冲器,其配置为从主机提供的输入数据生成包括多个页面的数据块;数据压缩器,其配置为压缩数据块并将压缩过的数据块作为写入数据输出;写入队列,其配置为以页面为基础存储写入数据;映射表,其配置为存储逻辑地址和数据块地址之间的映射关系以及数据块地址和物理地址之间的映射关系;以及控制器,其配置为控制将从写入队列输出的写入数据存储在存储器单元阵列中的操作,使得包括任何一个压缩过的数据块的一部分和另一压缩过的数据块的一部分两者的页面写入存储器单元阵列。
Description
相关申请的交叉引用
本申请要求于2016年7月19日提交的申请号为10-2016-0091456的韩国专利申请的优先权,其全文通过引用并入本文。
技术领域
本发明的示例性实施例涉及一种数据存储装置,且更特别地,涉及一种用于压缩并存储数据的数据存储装置。
背景技术
包括诸如SSD(固态驱动器)的半导体存储器装置的数据存储装置需要高成本以存储大容量数据。
在NAND闪速存储器的情况下,多条位信息被存储在一个单元中。因此,单元的寿命趋于降低。
因此,已经开发了一种压缩并存储数据的技术,从而降低对存储容量的成本,同时增加数据存储装置的寿命。
基于NAND的存储器装置以页面为基础来存储数据。当页面数据被压缩时,其长度不以页面为基础进行排序。
因此,当以页面为基础存储压缩数据时,页面的一部分可能被浪费,使得更加难以增加存储容量。
例如,在将页面大小设置为8千字节的假设下,当对应于四个页面的32千字节的数据被压缩成17千字节的数据时,17千字节的数据被存储在三个页面中。在这种情况下,浪费了7千字节的存储空间。
因此,需要一种能够压缩并存储数据同时防止浪费存储空间的改进技术。
发明内容
本发明的各种实施例涉及以包括多个页面的数据块为基础来压缩并存储数据的数据存储装置。
各种实施例还涉及通过收集在诸如数据模式的特性上具有高相似性的页面来生成数据块从而提高数据的压缩率的数据存储装置。
各种实施例还涉及选择性地压缩并存储多个页面的数据存储装置。
各种实施例还涉及能够减小映射表的大小的数据存储装置。
在实施例中,数据存储装置可以包括:存储器单元阵列;数据缓冲器,其配置为从主机提供的输入数据生成包括多个页面的数据块;数据压缩器,其配置为压缩数据块并将压缩过的数据块作为写入数据输出;写入队列,其配置为以页面为基础存储写入数据;映射表,其配置为存储逻辑地址和数据块地址之间的映射关系以及数据块地址和物理地址之间的映射关系;以及控制器,其配置为控制将从写入队列输出的写入数据存储在存储器单元阵列中的操作,使得包括任何一个压缩过的数据块的一部分和另一压缩过的数据块的一部分两者的页面写入存储器单元阵列。
附图说明
通过以下参照附图对本发明的各种实施例的详细描述,本发明的上述和其它特征和优点对本发明所属领域内的技术人员更加明显,在附图中:
图1是示出根据本发明的实施例的数据存储装置的框图;
图2是用于描述图1的数据存储装置生成包括多个页面的数据块的方法的简图。
图3是用于描述图1的数据存储装置选择性地压缩数据块的方法的简图。
图4是用于描述图3的压缩控制单元的操作的状态简图。
图5是示出图1的映射表的示例的简图。
图6是示出将数据块存储在图5的映射表中的物理页面中的状态的简图。
图7是示出图1的映射表的另一示例的简图。
图8是示出将数据块存储在图7的映射表中的物理页面中的状态的简图。
图9是示出图1的映射表的另一示例的简图。
图10是示出将数据块存储在图9的映射表中的物理页面中的状态的简图。
图11是用于描述图1的数据存储装置将存储在写入队列中的数据写入存储器单元阵列中的方法的框图。
图12是示出图1的写入队列的操作的简图。
具体实施方式
在下文中,根据本发明的数据存储装置及其操作方法将参照附图通过本发明的示例性实施例来描述。然而,本发明可以不同的形式实施并且不应该被解释为限于本文所述的实施例。而是,这些实施例被提供以详细描述本发明至本发明所属领域内的技术人员可以实施本发明的技术方案的程度。
将理解的是,本发明的实施例不限于附图中所示的细节,附图不一定按比例绘制,并且,在一些实例中,比例可能已经被放大以更清楚地描述本发明的某些特征。虽然使用了特定的术语,但将理解的是,所使用的术语只是为了描述特定的实施例,而并不旨在限制本发明的范围。
应进一步注意到的是,在下面的描述中,为了便于理解本发明而描述了具体细节,然而,本发明可以在没有这些具体细节中的一些的情况下实施。还应注意到的是,已知的结构和/或进程可能仅被简要地描述或者完全未被描述,以避免用不必要的已知细节使本公开模糊。
还应当注意的是,在某些情况下,如对相关领域技术人员将显而易见的是,结合一个实施例描述的元件(也称为特征)可以被单独使用或与另一实施例的其它元件结合使用,除非另有特别说明。
在下文中,将参照附图详细描述本发明的各种实施例。
图1是示出根据本发明的实施例的数据存储装置1000的框图。
根据图1的实施例的数据存储装置1000可以包括控制器100、数据缓冲器200、数据压缩器300、映射表400、存储器单元阵列500以及写入队列600。
存储器单元阵列500可以是以页面为基础读取并写入数据的存储器装置。例如,存储器单元阵列500可以包括闪速存储器单元阵列或另一类型的存储器单元阵列。在实施例中,存储器单元阵列500可以是NAND闪速存储器单元阵列。
控制器100可以控制向/从存储器单元阵列输入/输出数据的操作,例如,向/从NAND闪速存储器单元阵列输入/输出数据的操作。
控制器100可以执行由闪速转换层(FTL)所执行的操作,诸如地址映射操作、垃圾收集操作、磨损均衡操作等。
在本实施例中,控制器100可以控制数据缓冲器200、数据压缩器300、映射表400以及写入队列600。
数据缓冲器200可以临时存储从主机1提供的输入数据,并且输出从其生成的数据块。
在本实施例中,数据块可以包括一个页面或者两个或更多个页面。优选地,数据块可以包括两个或更多个页面。
在本实施例中,将四个页面形成一个数据块的情况作为示例来说明。
控制器100可以控制数据缓冲器200基于从主机1提供的输入数据生成数据块的操作。
例如,当生成数据块时,控制器100可以改变从主机提供的输入数据的顺序。该操作将参照图2详细描述。
数据压缩器300可以压缩从数据缓冲器200输出的数据块或者可以不压缩该数据块,并且将该数据块提供至写入队列600。
在本实施例中,控制器100可以通过确定是否压缩数据块来控制数据压缩器300的操作。
当控制器100命令数据压缩器300压缩数据块时,数据压缩器300压缩数据块并将压缩过的数据块作为写入数据提供至写入队列600。当控制器100命令数据压缩器300不压缩数据块时,数据压缩器300将数据块作为写入数据提供至写入队列600,而不压缩数据块。该操作将参照图3和图4详细描述。
控制器100控制以页面为基础将存储在写入队列600中的写入数据存储到存储器单元阵列500中的操作。该操作将参照图11和图12详细描述。
映射表400可以存储主机1所请求的逻辑地址与存储器单元阵列500的物理地址之间的映射关系。
在本实施例中,数据块可以包括多个页面。
映射表400可以存储逻辑地址和数据块之间的第一映射关系以及数据块与物理地址之间的第二映射关系。例如,在实施例中,映射表400可以包括第一表和第二表(参见图7)。第一表可以存储逻辑地址和数据块之间的第一映射关系,第二表可以存储数据块和物理地址之间的第二映射关系。
控制器100可以根据数据块是否被压缩来控制第一表和第二表。该操作将参照图5至图10详细描述。
图2是用于描述图1的数据存储装置1000生成包括来自多个页面的数据的数据块的方法的简图。
数据缓冲器200以页面为基础存储来自主机1的输入数据210。
在图2中,图2的上部(A)示出了输入数据210被新存储在已经存储多个页面的数据缓冲器200中的状态。
控制器100可以包括特性比较单元110和缓冲器控制单元120。
特性比较单元110可以将从主机1提供的输入数据210的特性与已经存储的页面的对应特性进行比较,以确定输入数据210是否包括具有与已经存储的页面相似的特性的页面。
缓冲器控制单元120可以根据特性比较单元110的比较结果来调整从主机1提供的输入数据210的顺序。例如,当特性比较单元110找到具有与输入数据210相似的特性的已经存储的页面时,缓冲器控制单元120可以控制数据缓冲器200将输入数据210移动到对应页面的下一位置。
例如,特性比较单元110可以分析输入数据210的模式,并且确定输入数据210是否为具有与已经存储的页面相似的数据模式的页面。
页面的数据模式可以表示为通过应用散列函数计算的散列值。作为参考,散列函数可以是可以用于将任意大小的数据映射到固定大小的数据的任何函数。散列函数的返回值可以称为散列值。
在图2中,附图标记“A”、“B”、“C”和“D”表示对应于现有页面的散列值。
特性比较单元110可以计算输入数据210的散列值。
例如,特征比较单元110可以计算Rabin-Karp指纹并将Rabin-Karp指纹用作散列值。
假设所计算的输入数据210的散列值是A'。
特征比较单元110可以将所计算的散列值与其它页面的现有散列值进行比较,以找到具有最相似的散列值的页面。
当没有相似的散列值时,特征比较单元110可以显示没有具有相似散列值的页面。
例如,特征比较单元110可以将“最小散列”技术应用到输入数据210的散列值和其它页面的散列值,以确定输入数据和现有页面之间的相似性。
当特性比较单元110找到具有相似散列值的页面时,缓冲器控制单元120控制数据缓冲器200将输入数据210移动到具有相似散列值的页面的下一位置。
在图2中,下部(B)示出了所计算的输入数据210的散列值由附图标记“A'”表示,并且输入数据移动到具有与散列值A'相似的散列值A的页面的下一位置。
在所描述的实施例中,数据缓冲器200可以输出数据块220,其中数据块220包括具有如由它们的散列值所确定的相似数据模式的四个页面。当具有相似数据模式的页面一起压缩时,可以提高压缩率。
在图2的实施例中,数据缓冲器200可以通过考虑每个页面的数据模式来调整页面顺序。
在另一实施例中,可以按顺序收集输入数据以生成数据块。
图3是示出图1的数据存储装置1000选择性地压缩数据块的方法的简图。
在实施例中,数据压缩器300可以压缩输入数据块并将压缩过的数据块作为写入数据输出。
当其重复性通过编码和压缩去除的诸如压缩视频数据的数据被额外压缩时,数据的大小可能由于解压缩所需的元数据而在压缩之后增加。
因此,在本实施例中,提供了不压缩所有数据块而是仅选择性地压缩某些数据块的选择性压缩方法。
如图3的实施例中所示的,控制器100可以包括压缩控制单元130和映射控制单元140。压缩控制单元130和映射控制单元140可以是除了图2中所示的缓冲器控制器120和特性比较单元110之外的。
在图3的实施例中,根据压缩控制单元130的控制,数据压缩器300可以将数据块作为写入数据输出而不压缩数据块,或者可以压缩数据块并将压缩过的数据块作为写入数据输出。
在此使用的压缩算法可以包括LZRW(Lempel-Ziv Ross Williams)算法或其它公知的压缩算法。
压缩控制单元130监测压缩率。当低压缩率持续时,压缩控制单元130控制数据压缩器300将数据块作为写入数据输出而不压缩数据块。否则,压缩控制单元130可以控制数据压缩器300压缩数据块并将压缩过的数据块作为写入数据输出。
例如,压缩控制单元130可以通过对每五个数据块的压缩率进行采样来确定控制信号。
采样周期可以根据实施例而不同。
映射控制单元140可以响应于从压缩控制单元130输出的控制信号来控制映射表400。
在采样操作期间,压缩控制单元130控制数据压缩器300压缩数据块,并且接收压缩过的数据以计算压缩率。
本发明的发明人通过依次压缩文件数据的实验发现压缩率具有预定的局部性。
基于上述发现,通过采样操作,压缩控制单元130可以在低压缩率持续时确定具有低压缩率的数据被聚集在对应区域中,并且可以在高压缩率持续时确定具有高压缩率的数据被聚集在对应区域中。然后,压缩控制单元130可以基于采样结果来控制是否压缩数据块。
图4是用于描述图3的压缩控制单元130的操作的状态简图。
在本实施例中,当连续预定次数获得表示压缩率低于阈值的采样结果时,压缩控制单元130可以控制数据压缩器300不压缩数据块。相反,当连续预定次数获得表示压缩率等于或高于阈值的采样结果时,压缩控制单元130可以控制数据压缩器300压缩数据块。
例如,在图4的实施例中,当连续两次获得表示压缩率低的采样结果时,压缩控制单元130指示数据压缩器300不执行压缩。这在下文中利用表示压缩控制单元130的状态的状态S10至S40更详细地解释。在图4的实施例中,压缩控制单元130可以在四个状态S10至S40中操作。
在状态S10和S20中,压缩控制单元130控制数据压缩器300压缩数据块,并且在状态S30和S40中,压缩控制单元130控制数据压缩器30不压缩数据块。
当在状态S10中,基于可以如上述每五个块执行的采样操作,确定例如压缩率高时,保持状态S10并且压缩控制单元130继续控制数据压缩器300以压缩输入数据块。当在状态S10中,基于采样确定在状态S10中压缩率低时,状态S10转换到状态S20。在状态S20中,压缩控制单元130继续控制数据压缩器300以压缩输入数据块。
当在状态S20中,基于采样确定在状态S20中压缩率高时,状态S20转换回状态S10。当在状态S20中,基于采样确定在状态S20中压缩率低时,状态S20转换到状态S30。在状态S30中,压缩控制单元130控制数据压缩器300以不压缩输入数据块。因此,当两个连续的压缩率采样被确定为低时,压缩控制器130可以从压缩执行状态S10切换到非压缩执行状态S30。
当在状态S30中,确定在状态S30中压缩率高时,状态S30转换到状态S20,并且当确定在状态S30中压缩率低时,状态S30转换到状态S40。
当确定在状态S40中压缩率低时,保持当前状态S40,并且当确定在状态S40中压缩率高时,状态S40转换到状态S30。
在本实施例中,当通过压缩四个页面获得的结果大小大于三个页面时,压缩控制单元130确定压缩率低。否则,压缩控制单元130确定压缩率高。
当数据块未被压缩时,控制器100将包括在数据块中的四个页面存储到存储器单元阵列500中而不压缩数据块,并且映射表400存储逻辑地址和物理地址之间的映射关系。
当数据块被压缩时,控制器100将通过压缩数据块获得的写入数据存储到写入队列600中,并且映射表400存储逻辑地址和数据块地址之间的映射关系以及数据块地址和物理地址之间的映射关系。
根据数据块是否被压缩,映射控制单元140可以响应于从压缩控制单元130输出的控制信号来控制映射表400以存储逻辑地址、物理地址和数据块地址之间的映射关系。
图5示出了图1的映射表400的示例。图6是示出将数据块存储在图5的映射表400中的物理页面中的状态的简图。
映射表400可以包括第一表410和第二表420。
第一表410可以存储逻辑地址与物理地址和数据块地址中的一个之间的映射关系,第二表420可以存储数据块地址与物理地址之间的映射关系。
在本实施例中,逻辑地址和物理地址可以表示基于页面的地址。
在第一表410中,第一字段存储逻辑地址,第二字段存储物理地址或数据块地址。
在本实施例中,物理地址和数据块地址可以写入相同的字段。因此,使用不同范围的地址以区分物理地址和数据块地址。
假设将0到999的数字用作物理地址,并且将1000之后的数字用作数据块地址。
因此,基于第二字段的值来确定对应的逻辑地址的页面是否被压缩是可能的。
在本实施例中,由于物理地址和数据块地址共享一个字段,所以可以减小第一表410的大小。
在另一实施例中,可以添加标志字段以确定存储在第一表410的第二字段中的值是物理地址还是数据块地址。在这种情况下,第一表410的大小可由于标志字段而增加。
当数据块被存储而没有被压缩时,映射控制单元140可以控制映射表400以将逻辑地址和物理地址之间的映射关系存储在第一表410中。
当数据块被压缩并被存储时,映射控制单元140可以控制映射表400以将逻辑地址和数据块地址之间的映射关系存储在第一表410中,并且将数据块地址和物理地址之间的映射关系存储在第二表420中。
在图5中,逻辑地址0、1、2和3被分配给物理地址34、12、21和35,并且逻辑地址10、11、12和13被分配给数据块地址1001。
在图5中,第二表420可以包括数据块地址字段、物理地址字段、偏移字段和长度字段。
数据块地址字段可以存储数据块地址,物理地址字段可以存储从其开始存储压缩过的数据块的物理地址,偏移字段可以存储关于对应于数据块地址的压缩过的数据块在物理地址中的起始位置的信息,长度字段可以存储压缩过的数据块的长度。
当一个页面被划分为多个子页面时,偏移可以定义为子页面的顺序。
在本实施例中,假设页面的大小是8千字节并且一个页面被划分为16个子页面。此时,一个子页面由512字节组成。
根据实施例,子页面的大小可以被设置为各种值。
在本实施例中,当写入压缩过的数据块时,从先前写入的压缩过的数据块的下一子页面开始写入压缩过的数据块,这使得可以避免剩余空间的消耗。
在图5中,将一个压缩过的数据块写入连续的物理地址。
因此,在图6中,将对应于数据块地址1001的压缩过的数据块写入到从第36页面的第10子页面开始的空间,即从第36页面的第5120字节到第38页面的第11子页面的空间。
由于数据的长度是17000字节,所以可能浪费第38页面的第11子页面的104字节。然而,与相关技术相比,浪费的空间的大小显著减小。
当减小子页面的大小时,可以减少物理页面中的空间浪费。然而,由于需要增加存储在偏移字段中的数据中所包含的位的数量,所以第二表420的大小可能被增加。
在下文中,解释了将两个连续的压缩过的数据块存储在映射表中的情况。
图7是示出图1的映射表400的另一示例的简图。图8是示出将数据块存储在图7的映射表400中的物理页面中的状态的简图。
如图7所示,逻辑地址10、11、12和13对应于数据块地址1001,逻辑地址35、36、41和45对应于数据块地址1002。
将数据块地址1001的压缩过的数据块写入到从第36页面的第10子页面到第38页面的第11子页面的空间,并且具有17000字节的长度。
在数据块地址1001的压缩过的数据块之后写入数据块地址1002的压缩过的数据块。
因此,数据块地址1002的压缩过的数据块从第38页面的第12子页面开始写入。
由于数据块地址1002的压缩过的数据块具有11200字节的长度,所以数据块地址1002的压缩过的数据块一直写入至第40页面的第1子页面。
此时,在第40页面的第1子页面中产生64字节的剩余空间。
在下文中,解释了将对应于数据块地址的多个物理地址存储在映射表中的情况。
图9是示出图1的映射表400的另一示例的简图。图10是示出将数据块存储在图9的映射表400中的物理页面中的状态的简图。
在图9中,第二表420可以包括根据压缩过的数据块写入的顺序写入的物理地址和偏移。
也就是说,将数据块地址1001的压缩过的数据块按顺序写入到整个第10页面和从第36页面的第10子页面到第37页面的空间。
图9的实施例具有的优点在于,压缩过的数据块不需要存储在连续物理地址中,而是根据映射顺序存储在不连续的物理地址中。然而,由于需要额外存储物理地址,所以第二表的大小可能增加。
如上面参照图5至图10所述的,可以将压缩过的数据块从页面的中间开始写入。
在NAND闪速存储器装置的情况下,以页面为基础执行写入操作。因此,可以延迟对压缩过的数据块的写入操作直到下一个压缩过的数据块输入到写入队列600以使页面完整。
图11是用于描述图1的数据存储装置1000将存储在写入队列600中的数据写入存储器单元阵列500中的方法的框图。
在本实施例中,控制器100可以进一步包括写入控制单元150。
写入队列600可以页面为基础存储从数据压缩器300输出的写入数据。写入控制单元150可以通过参考从映射表400提供的物理地址来控制写入队列600以页面为基础将从数据压缩器300提供的写入数据存储到存储器单元阵列500中的操作。
图12是用于描述图1的写入队列600的操作的简图。
在图12中,假设在图8中的数据块地址1001的压缩过的数据块和数据块地址1002的压缩过的数据块顺序输入。
此外,假设第36页面的第0至第9子页面存储在写入队列600中。
当输入数据块地址1001的压缩过的数据块时,写入队列600通过填充第36页面的第10到第15子页面来使第36页面完整。
然后,写入控制单元150控制对第36页面的写入操作。此时,写入控制单元150可以通过参考映射表400来区分物理地址。
由于数据块地址1001的压缩过的数据块完全填充第37页面,所以写入控制单元150控制对第37页面的写入操作。
由于写入队列600中只有对应于数据块地址1001的压缩过的数据块的第38页面的第0到第11子页面填充有压缩过的数据块,所以写入控制单元150等待而不对第38页面执行写入操作。
然后,当将数据块地址1002的压缩过的数据块输入到第38页面的第12至第15子页面时,写入控制单元150控制对第38页面的写入操作。
由于数据块地址1002的压缩过的数据块完全填充写入队列600中的第39页面,所以写入控制单元150控制对第39页面的写入操作。
由于写入队列600中只有对应于数据块地址1002的压缩过的数据块的第40页面的第0和第1子页面填充有压缩过的数据块,所以写入控制单元150不对第40页面执行写入操作,而是等待直到使第40页面完整。
也就是说,控制器100可以通过参考从映射表400提供的物理地址来控制将从写入队列600输出的写入数据存储在存储器单元阵列500中的操作,使得将包括任何一个压缩过的数据块的一部分和另一压缩过的数据块的一部分两者的页面写入到存储器单元阵列500。
根据本实施例,数据存储装置以包括多个页面的数据块为基础来压缩数据,从而提高数据的压缩率。
数据存储装置通过收集具有高相似性的页面来生成数据块,从而提高数据的压缩率。
数据存储装置选择性地压缩多个页面,从而防止由不必要的压缩引起的性能降低。
根据本实施例的表结构防止映射表的大小过度增加。
虽然为了说明的目的已经描述了各种实施例,但是对于本领域技术人员来说显而易见的是,在不脱离如权利要求所限定的本发明的精神和范围的情况下,可以进行各种变化和修改。
Claims (20)
1.一种数据存储装置,其包括:
存储器单元阵列;
数据缓冲器,其配置为基于主机提供的输入数据生成包括多个页面的数据块,所述多个页面具有相似的数据模式;
数据压缩器,其配置为压缩所述数据块并将压缩过的数据块作为写入数据输出;
写入队列,其配置为以页面为基础存储所述写入数据;
映射表,其配置为存储逻辑地址和数据块地址之间的映射关系以及所述数据块地址和物理地址之间的映射关系;以及
控制器,其配置为控制将从所述写入队列输出的所述写入数据存储在所述存储器单元阵列中的操作,使得包括任何一个压缩过的数据块的一部分和另一压缩过的数据块的一部分两者的页面写入所述存储器单元阵列。
2.根据权利要求1所述的数据存储装置,其中所述控制器包括:
特性比较单元,其配置为比较从所述主机提供的所述输入数据的特性;
缓冲器控制单元,其配置为根据所述特性比较单元的比较结果调整所述输入数据的顺序。
3.根据权利要求2所述的数据存储装置,其中所述缓冲器控制单元根据所述特性比较单元的比较结果来调整所述输入数据的顺序,使得具有相似特性的数据彼此靠近地布置。
4.根据权利要求1所述的数据存储装置,其中所述控制器包括:
压缩控制单元,其配置为控制所述数据压缩器将所述数据块或压缩过的数据块作为所述写入数据输出。
5.根据权利要求4所述的数据存储装置,其中所述控制器进一步包括:
映射控制单元,其配置为根据所述压缩控制单元的控制来控制所述映射表,
其中当所述压缩控制单元控制所述数据压缩器不压缩所述数据块时,所述映射控制单元控制所述映射表将所述物理地址映射至所述逻辑地址,并且
当所述压缩控制单元控制所述数据压缩器压缩所述数据块时,所述映射控制单元控制所述映射表将所述数据块地址映射至所述逻辑地址并将所述物理地址映射至所述数据块地址。
6.根据权利要求4所述的数据存储装置,其中所述压缩控制单元在每个预定的周期中对所述数据块的压缩率进行采样,并且根据采样结果控制是否执行压缩。
7.根据权利要求6所述的数据存储装置,其中当连续预定次数获得表示所述压缩率低于阈值的采样结果时,所述压缩控制单元控制所述数据压缩器不压缩所述数据块,并且当连续所述预定次数获得表示所述压缩率等于或高于所述阈值的采样结果时,所述压缩控制单元控制所述数据压缩器压缩所述数据块。
8.根据权利要求1所述的数据存储装置,其中所述映射表包括:
第一表,其用于存储所述逻辑地址和所述数据块地址之间的映射关系;以及
第二表,其用于存储所述数据块地址和所述物理地址之间的映射关系,
其中所述第二表进一步存储关于对应于所述数据块地址的压缩过的数据块在所述物理地址中的起始位置的偏移信息以及压缩过的数据块的长度。
9.根据权利要求8所述的数据存储装置,其中所述第二表中的一个数据块地址映射至一个物理地址。
10.根据权利要求9所述的数据存储装置,其中所述控制器控制所述存储器单元阵列将对应于数据块地址的压缩过的数据块写入到一个物理地址或者两个或更多个连续的物理地址。
11.根据权利要求8所述的数据存储装置,其中所述第二表中的一个数据块地址映射至不连续的两个或更多个物理地址,并且所述两个或更多个物理地址根据对应于所述一个数据块地址的压缩过的数据块被写入的顺序来映射。
12.根据权利要求11所述的数据存储装置,其中所述控制器控制所述存储器单元阵列将对应于所述数据块地址的压缩过的数据块写入至不连续的两个或更多个物理地址。
13.根据权利要求1所述的数据存储装置,其中所述写入队列通过将从所述数据压缩器输出的第一压缩过的数据块的一部分和在所述第一压缩过的数据块之后从所述数据压缩器输出的第二压缩过的数据块的一部分结合来形成一个页面。
14.根据权利要求1所述的数据存储装置,其中所述控制器包括写入控制单元,其配置为以页面为基础将从所述写入队列输出的所述写入数据写入至所述存储器单元阵列,并且
所述写入控制单元不对任何一个压缩过的数据块的一部分执行写入操作,直到另一压缩过的数据块的一部分输入到所述写入队列以使所述页面完整。
15.根据权利要求14所述的数据存储装置,其中所述写入队列以页面为基础输出包括任何一个压缩过的数据块的一部分和另一压缩过的数据块的一部分的写入数据。
16.一种数据存储装置,其包括:
存储器单元阵列;
数据缓冲器,其配置为基于主机提供的输入数据生成包括至少两个页面的数据块,所述至少两个页面具有相似的数据模式;
数据压缩器,其配置为选择性地压缩所述数据块并将压缩过的数据块作为写入数据输出;
写入队列,其配置为以页面为基础存储所述写入数据;
映射表,其配置为存储逻辑地址、数据块地址和物理地址之间的映射关系;以及
控制器,其配置为通过参考存储在所述映射表中的所述物理地址,以页面为基础控制来自所述写入队列的所述写入数据到所述存储器单元阵列的写入操作。
17.根据权利要求16所述的数据存储装置,其中对包括第一压缩过的数据块的一部分和第二压缩过的数据块的一部分的页面执行所述写入操作,并且
所述控制器控制不对所述第一压缩过的数据块的一部分执行所述写入操作,直到所述第二压缩过的数据块的一部分输入到所述写入队列以使所述页面完整。
18.根据权利要求16所述的数据存储装置,其中所述控制器包括:
特性比较单元,其配置为分析所述输入数据的特性以输出比较结果;
缓冲器控制单元,其配置为控制所述数据缓冲器以根据所述比较结果调整所述输入数据的顺序;
压缩控制单元,其配置为控制所述数据压缩器将所述数据块或压缩过的数据块作为所述写入数据输出;
映射控制单元,其配置为根据所述压缩控制单元的控制来控制所述映射表;以及
写入控制单元,其配置为控制所述写入队列以便以页面为基础将所述写入数据写入至所述存储器单元阵列。
19.根据权利要求18所述的数据存储装置,其中当所述压缩控制单元控制所述数据压缩器不压缩所述数据块时,所述映射控制单元控制所述映射表将所述物理地址映射至所述逻辑地址,并且
当所述压缩控制单元控制所述数据压缩器压缩所述数据块时,所述映射控制单元控制所述映射表将所述数据块地址映射至所述逻辑地址并将所述物理地址映射至所述数据块地址。
20.根据权利要求16所述的数据存储装置,其中所述映射表包括:
第一表,其用于存储所述逻辑地址和所述数据块地址之间的映射关系;以及
第二表,其用于存储所述数据块地址和所述物理地址之间的映射关系,其中所述第二表进一步存储关于对应于所述数据块地址的压缩过的数据块在所述物理地址中的起始位置的偏移信息以及压缩过的数据块的长度。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160091456A KR102525061B1 (ko) | 2016-07-19 | 2016-07-19 | 입력 데이터를 압축하여 저장하는 데이터 저장 장치 |
KR10-2016-0091456 | 2016-07-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107632776A CN107632776A (zh) | 2018-01-26 |
CN107632776B true CN107632776B (zh) | 2021-01-01 |
Family
ID=60988528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710060875.4A Active CN107632776B (zh) | 2016-07-19 | 2017-01-25 | 用于压缩输入数据的数据存储装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10481797B2 (zh) |
KR (1) | KR102525061B1 (zh) |
CN (1) | CN107632776B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9495288B2 (en) * | 2013-01-22 | 2016-11-15 | Seagate Technology Llc | Variable-size flash translation layer |
WO2018165939A1 (en) * | 2017-03-16 | 2018-09-20 | Intel Corporation | Flash data compression decompression method and apparatus |
CN110609708B (zh) * | 2018-06-15 | 2023-10-27 | 伊姆西Ip控股有限责任公司 | 用于数据处理的方法、设备和计算机可读介质 |
CN108959117B (zh) * | 2018-06-22 | 2021-01-19 | 深圳忆联信息系统有限公司 | H2d写操作加速方法、装置、计算机设备及存储介质 |
KR20200006378A (ko) * | 2018-07-10 | 2020-01-20 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그것의 동작방법 |
CN109062808A (zh) * | 2018-09-17 | 2018-12-21 | 浪潮电子信息产业股份有限公司 | 一种ssd开发性能的测试方法、装置及相关设备 |
JP7034132B2 (ja) * | 2019-12-20 | 2022-03-11 | 株式会社日立製作所 | ストレージシステムおよびストレージシステムのデータ圧縮方法 |
US11853568B2 (en) * | 2020-10-21 | 2023-12-26 | EMC IP Holding Company LLC | Front-end offload of storage system hash and compression processing |
CN113419975B (zh) * | 2021-06-11 | 2023-03-17 | 联芸科技(杭州)股份有限公司 | 存储器的控制系统及地址映射方法和地址映射装置 |
JP2023070797A (ja) | 2021-11-10 | 2023-05-22 | キオクシア株式会社 | メモリシステムおよび方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110320915A1 (en) * | 2010-06-29 | 2011-12-29 | Khan Jawad B | Method and system to improve the performance and/or reliability of a solid-state drive |
CN103514249A (zh) * | 2013-06-20 | 2014-01-15 | 易乐天 | 一种数据自精简方法和系统及存储装置 |
CN103530062A (zh) * | 2012-07-03 | 2014-01-22 | 群联电子股份有限公司 | 数据存储方法、存储器控制器与存储器存储装置 |
US9367557B1 (en) * | 2013-09-26 | 2016-06-14 | Emc Corporation | System and method for improving data compression |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110138707A (ko) | 2010-06-21 | 2011-12-28 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 쓰기 방법 |
KR101888074B1 (ko) | 2012-01-09 | 2018-08-13 | 삼성전자주식회사 | 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법 |
US10222988B2 (en) * | 2014-04-22 | 2019-03-05 | Hitachi, Ltd. | Efficient management storage system via defining of several size units in advance |
US9575661B2 (en) * | 2014-08-19 | 2017-02-21 | Samsung Electronics Co., Ltd. | Nonvolatile memory systems configured to use deduplication and methods of controlling the same |
JP6067819B1 (ja) * | 2015-10-21 | 2017-01-25 | 株式会社東芝 | 階層化ストレージシステム、ストレージコントローラ、並びに重複排除及びストレージ階層化のための方法 |
-
2016
- 2016-07-19 KR KR1020160091456A patent/KR102525061B1/ko active IP Right Grant
-
2017
- 2017-01-19 US US15/409,725 patent/US10481797B2/en active Active
- 2017-01-25 CN CN201710060875.4A patent/CN107632776B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110320915A1 (en) * | 2010-06-29 | 2011-12-29 | Khan Jawad B | Method and system to improve the performance and/or reliability of a solid-state drive |
CN103530062A (zh) * | 2012-07-03 | 2014-01-22 | 群联电子股份有限公司 | 数据存储方法、存储器控制器与存储器存储装置 |
CN103514249A (zh) * | 2013-06-20 | 2014-01-15 | 易乐天 | 一种数据自精简方法和系统及存储装置 |
US9367557B1 (en) * | 2013-09-26 | 2016-06-14 | Emc Corporation | System and method for improving data compression |
Non-Patent Citations (1)
Title |
---|
"Compression and SSD: Where and How?";Zuck;《Inflow’ 14》;20141005;第1-10页 * |
Also Published As
Publication number | Publication date |
---|---|
US20180024748A1 (en) | 2018-01-25 |
CN107632776A (zh) | 2018-01-26 |
KR20180009574A (ko) | 2018-01-29 |
KR102525061B1 (ko) | 2023-04-21 |
US10481797B2 (en) | 2019-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107632776B (zh) | 用于压缩输入数据的数据存储装置 | |
US8806108B2 (en) | Semiconductor storage apparatus and method of controlling semiconductor storage apparatus | |
US9229876B2 (en) | Method and system for dynamic compression of address tables in a memory | |
US9690490B2 (en) | Method for writing data, memory storage device and memory control circuit unit | |
US9753847B2 (en) | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping | |
US10339046B1 (en) | Data moving method and storage controller | |
KR101818578B1 (ko) | 비휘발성 메모리를 갖는 시스템을 위한 동적 및 정적 데이터의 처리 | |
US10191840B2 (en) | Mapping table updating method, memory control circuit unit and memory storage device | |
US9965198B2 (en) | Internally preconditioning solid state drives for various workloads | |
US10073771B2 (en) | Data storage method and system thereof | |
US20140344524A1 (en) | Adaptive over-provisioning in memory systems | |
CN106802867B (zh) | 固态储存装置及其数据编程方法 | |
KR101730151B1 (ko) | 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템 | |
US10324661B2 (en) | Storage device and operating method thereof | |
KR101649357B1 (ko) | 데이터 저장 장치, 그것의 동작 방법, 그리고 그것을 포함한 스토리지 서버 | |
KR20070046864A (ko) | 플래쉬 화일 시스템에서 가상-물리 주소 변환 방법 및시스템 | |
US20170024153A1 (en) | Mapping table accessing method, memory control circuit unit and memory storage device | |
CN106372000B (zh) | 映射表更新方法、存储器控制电路单元及存储器存储装置 | |
CN113961140B (zh) | 数据处理方法及对应的数据储存装置 | |
JP2012113343A (ja) | 記憶装置 | |
US10387579B2 (en) | Data pattern detecting device, semiconductor device including the same, and operating method thereof | |
US11176033B2 (en) | Data storage devices and data processing methods | |
JP2020149195A (ja) | メモリシステム | |
US9001585B1 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US20160110112A1 (en) | Data writing method, memoey control circuit unit and memory storage apparatus |
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 |