用于压缩输入数据的数据存储装置的制作方法

文档序号:13557283阅读:103来源:国知局
用于压缩输入数据的数据存储装置的制作方法

相关申请的交叉引用

本申请要求于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-zivrosswilliams)算法或其它公知的压缩算法。

压缩控制单元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。

根据本实施例,数据存储装置以包括多个页面的数据块为基础来压缩数据,从而提高数据的压缩率。

数据存储装置通过收集具有高相似性的页面来生成数据块,从而提高数据的压缩率。

数据存储装置选择性地压缩多个页面,从而防止由不必要的压缩引起的性能降低。

根据本实施例的表结构防止映射表的大小过度增加。

虽然为了说明的目的已经描述了各种实施例,但是对于本领域技术人员来说显而易见的是,在不脱离如权利要求所限定的本发明的精神和范围的情况下,可以进行各种变化和修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1