数据压缩装置和方法以及包括数据压缩装置的存储系统的制作方法

文档序号:6515419阅读:128来源:国知局
数据压缩装置和方法以及包括数据压缩装置的存储系统的制作方法
【专利摘要】所提供的是数据压缩装置和方法以及包括数据压缩装置的存储系统。所述数据压缩方法包括:接收输入数据以及针对所述输入数据生成哈希键,利用所生成的哈希键搜索哈希表,以及如果确定所述输入数据是哈希命中,则使用所述哈希表压缩输入数据;以及利用所述输入数据搜索高速缓冲存储器,以及如果确定所述输入数据是高速缓冲命中,则使用所述高速缓冲存储器压缩所述输入数据。
【专利说明】数据压缩装置和方法以及包括数据压缩装置的存储系统
[0001]相关申请的交叉引用
[0002]本申请要求于2012年10月15日提交的第10-2012 - 0114265号韩国专利申请的优先权,其主题通过引用的方式并入此处。
【技术领域】
[0003]本发明构思涉及(多个)数据压缩装置、数据压缩方法以及包括数据压缩装置的存储系统。
【背景技术】
[0004]数据压缩技术已经以多种方式使用以降低向/从数据存储设备通信数据所需要的能量的量,提高数据传输速度,以及提高有限数据存储空间的利用。也就是说,如果使用数据压缩技术可以降低被写到数据存储设备和/或从数据存储设备读取的数据的大小,则必须由数据存储设备执行的读/写操作的总体数量可以显著地减少。并且针对特定数据存储设备,减少的读/写操作的数量将导致延长的运行使用寿命。

【发明内容】

[0005]根据本发明构思的一方面,提供了一种数据压缩方法,包括:接收输入数据以及针对所述输入数据生成哈希键(hash key),利用所生成的哈希键搜索哈希表,以及确定所述输入数据是否是哈希命中,当确定所述输入数据是哈希命中时,使用所述哈希表压缩输入数据,以及当确定所述输入数据不是哈希命中时,利用所述输入数据搜索高速缓冲存储器,以及确定所述输入数据是否是高速缓冲命中,当确定所述输入数据是高速缓冲命中时,使用所述高速缓冲存储器压缩所述输入数据。
[0006]根据本发明构思的另一方面,提供了一种数据压缩方法,包括:通过使用针对第一输入数据生成的哈希键搜索哈希表来确定第一输入数据是否是哈希命中,以及,通过使用不同于第一输入数据的第二输入数据搜索高速缓冲存储器来确定第二输入数据是否是高速缓冲命中,其中在第一系统时钟周期期间同时执行确定第一输入数据是否是哈希命中以及确定第二输入数据是否是高速缓冲命中。
[0007]根据本发明构思的另一方面,提供一种数据压缩装置,包括:哈希键发生器,被配置为接收输入数据以及提供相应的哈希键;控制单元,被配置为通过使用哈希键搜索哈希表确定所述输入数据是否是哈希命中,或者在确定所述输入数据不是哈希命中之后通过使用所述输入数据搜索高速缓冲存储器来确定所述输入数据是否是高速缓冲命中,以及提供与所述输入数据相应的压缩信息;以及编码器,被配置为基于所述压缩信息对所述输入数据进行编码,以及提供通过压缩所述输入数据得到的输出数据。
[0008]根据本发明构思的另一方面,提供了一种存储系统,包括:控制器,被配置为从主机接收输入数据以及提供通过压缩所述输入数据得到的输出数据;以及非易失性存储设备,其存储所述输出数据,其中所述控制器包括数据压缩装置,该数据压缩装置包括用于生成所述输出数据的哈希表以及高速缓冲存储器,以及所述数据压缩装置被配置为使用针对所述输入数据生成的哈希键搜索所述哈希表,以及确定所述输入数据是否是哈希命中,当确定所述输入数据是哈希命中时,所述数据压缩装置还被配置为使用所述哈希表生成所述输出数据,当确定所述输入数据不是哈希命中时使用所述输入数据搜索所述高速缓冲存储器,以及当确定所述输入数据是高速缓冲命中时使用所述高速缓冲存储器生成所述输出数据。
【专利附图】

【附图说明】
[0009]图1是示出根据发明构思的特定实施例的数据压缩装置的框图;
[0010]图2是示出操作图1的哈希键发生器的一种方法的示意图;
[0011]图3是示出对于图1的哈希表的一种可能配置的示意图;
[0012]图4是示出对于图1的缓冲存储器的一种可能配置的示意图;
[0013]图5是示出对于图1的高速缓冲存储器的一种可能配置的示意图;
[0014]图6是概述根据本发明构思的特定实施例的数据压缩方法的流程图;
[0015]图7、图8、图9、图10和图11是进一步示出图6的数据压缩方法的部分补充细节的相应示意图;
[0016]图12A和图12B是概述根据本发明构思的特定实施例的数据压缩方法的相关流程图;
[0017]图13是进一步示出可以关于与本发明构思的实施例一致的数据压缩方法存在的特定定时考虑的操作示意图;
[0018]图14是概述根据本发明构思的特定实施例的数据压缩装置的框图;
[0019]图15是示出根据本发明构思的特定实施例的存储系统的基本框图;
[0020]图16是进一步示出图15的控制器的框图;
[0021]图17和图18是示出可以包括根据本发明构思的实施例的存储系统的特定应用的相应框图;以及
[0022]图19和图20是示出可以集成根据本发明构思的实施例的存储系统的特定电子设备的相应视图。
【具体实施方式】
[0023]现在将参考附图在某些补充细节中描述本发明构思的实施例。然而,本发明构思可以以许多不同形式具体实现而且不应当将本发明构思释为限制为仅所示出的实施例。而是,提供这些实施例以使得本公开全面彻底并且将本发明构思的范围充分地传达给本领域技术人员。本发明构思的范围由下面的权利要求及其等效物定义。贯穿所写的描述和附图,同样的参考标记和标签用来表示相同或类似元件、组件和/或步骤。
[0024]应当理解,当元件或层称为是〃在上〃或者〃连接至〃另一元件或层时,其可以直接在该另一元件或层上或者连接至另一个元件或层或者可以存在居间元件或层。相反,当元件称为是〃直接在上〃或者〃直接连接至〃另一元件或层时,不存在居间元件或层。如这里所使用的那样,术语“和/或”包括一个或多个相关联所列项的任一个或者它们的所有组合。[0025]在描述本发明构思的上下文中(特别是在下面权利要求的上下文中)术语“一”和“该”和“所述”和相似指示物的使用趋近描述的场景该发明构思将解释为既包括单数形式又包括复数,除非这里另有陈述或者上下文清楚地说明不是如此。术语"包括〃〃具有〃〃包含〃和〃含有〃将视为开放式术语(也即,意指〃包括但不限于〃),除非另作说明。
[0026]应当理解,尽管这里可以使用术语第一、第二等等用于描述各种元素,但是这些元素不应当受限于这些术语。这些术语仅被用于将一个元件与其它元件互相区分。因此,例如,下面讨论的第一元素、第一组件或第一区域可以被称为第二元素、第二组件或第二区域而不脱离本发明构思的教导。
[0027]除非另外定义,否则这里使用的全部技术术语和科学术语都具有本发明构思所属的领域的普通技术人员所通常理解的相同意义。而且,除非另外定义,否则所有在通用词典中定义的术语可以不被过度地解释。
[0028]图1是示出根据本发明构思的特定实施例的数据压缩装置的框图。在图1所提供的示范性场景中,图2示出哈希键发生器10的操作的一种可能方法;图3示出哈希表30的一个可能配置;图4示出缓冲存储器40的一个可能配置;以及图5示出高速缓冲存储器50的一个可能配置。
[0029]参考图1,数据压缩装置I包括哈希键发生器10、控制单元20、哈希表30、缓冲存储器40、高速缓冲存储器50和编码器60。
[0030]哈希键发生器10通常通过接收输入数据和针对输入数据提供相应哈希键来运行。例如,如图2中所示,假设当接收到第一输入数据(A0、A1、A2、A3)时,哈希键发生器10生成第一哈希键“Ka”,当接收第二输入数据(B0、B1、B2、B3)时,键发生器10生成第二哈希键“Kb”,当接收第三输入数据(CO、Cl、C2、C3)时,哈希键发生器10生成第三哈希键“Kc”。
[0031]在本发明构思的特定实施例中,XOR运算可以用作由键发生器10对输入数据执行的哈希函数(F哈希)。也就是说,哈希键发生器10可以将接收到的输入数据移位η位,其中“η”是自然数,然后相对于移位后的输入数据执行XOR运算以便生成相应的哈希键。
[0032]例如,假定图2中所示的第一种情况,哈希键发生器10在接收到第一输入数据(Α0、Α1、Α2、Α3)时将数据AO移位零位,Al移位一位,Α2移位两位,A3移位三位。然后,哈希键发生器10可以通过相对于移位的第一输入数据执行XOR运算来生成第一哈希键Ka。但是,本领域技术人员将认识到,使用对移位的输入数据的XOR运算仅仅是许多不同的哈希函数的一个示例,这些哈希函数可以通过本发明构思的实施例中的哈希键发生器用于生成哈希键。
[0033]控制单元20可以用于响应于输入数据及其相应哈希键(如由哈希键发生器10提供的)来生成“压缩信息”。然后可以将压缩信息提供给编码器60。
[0034]在控制单元20的场景中,术语“单元”应当被概括地解释为关于可以被可操作地配置为执行本领域普通技术人员一般理解的数据传送、数据计算和数据存储功能的(多个)各种软件、固件和/或硬件元件(例如,现场可编程门阵列、专用集成电路等等)。控制单元20可以有利地配置为结合可寻址存储器介质操作,并且可以使用一个或多个处理器实现。控制单元20可以包括特定软件组件或者结合特定软件组件操作,所述特定软件组件诸如面向对象的软件组件、类组件和任务组件、进程、函数、属性、程序、子例程、程序代码段、驱动器、固件、微码、电路、数据、数据库、数据结构、表、阵列和变量。[0035]在本发明构思的特定实施例中,控制单元20可以用于通过使用与输入数据相应的哈希键搜索哈希表30和缓冲存储器40来确定输入数据是否导致所谓的“哈希命中”。控制单元20还可以用来通过使用输入数据搜索高速缓冲存储器50确定输入数据是否导致所谓的“高速缓存命中”。在做出这些确定中的一个或两个之后,控制单元20将生成与输入数据关联的压缩信息,并且将压缩信息提供给编码器60。
[0036]现在参考图3,哈希表30被假定为包括哈希键字段、冲突计数字段和索引字段。这里,当哈希键发生器10使用由哈希键发生器10生成的哈希键作为键值搜索哈希表时使用哈希键字段。冲突计数字段可以用于记录由于使用相应哈希键而发生的哈希冲突的数目。索引字段可以用于存储指向缓冲存储器40中的数据位置的索引值(或者“索引”)。
[0037]在本发明构思的特定实施例中,哈希表30可以使用SRAM (静态随机存取存储器)来实现。
[0038]参考图4,从主机提供的输入数据临时存储在缓冲存储器40中。在本发明构思的特定实施例中,缓冲存储器40也可以使用SRAM来实现。
[0039]在图1所示的数据压缩装置中,缓冲存储器40被示出为整体组件。但是,不需要总是这样的情况。例如,在本发明构思的特定实施例中,可以分别由数据压缩装置外部的数据存储设备(参见例如图16的RAM1240和数据压缩装置1230)单独提供缓冲存储器40。
[0040]可以使用预定的索引指示存储在缓冲存储器40中的输入数据的具体位置。例如如图4中所示,第一数据(A0、A1、A2、A3)以值‘8’索引,第二数据(B0、B1、B2、B3)以值‘16’索引,第三数据(C0、C1、C2、C3)以值‘32’索引。可以使用索引字段将相应的索引存储在哈希表30 (例如,图3)。由此,存储在哈希表30中的每个哈希键都可以与相应索引和冲突计数值关联存储。
[0041]现在参考图5,高速缓冲存储器50被假定为包括引用计数字段、数据字段和索引字段。这里,引用计数字段可以用于存储指示相应输入数据被引用多少次的计数的值。数据字段存储相应的输入数据,索引字段存储相应的索引。
[0042]在哈希表30和高速缓冲存储器50的场景下,每个表格“条目”可以假定具有多个关联字段,例如如上所述。
[0043]在本发明构思的特定实施例中,高速缓冲存储器50可以使用多个触发器实现。也就是说,在本发明构思的特定实施例中,高速缓冲存储器50可以实现为包括多个触发器的寄存器文件。
[0044]如下面将另外详细描述的那样,控制单元20能够引用图1的压缩装置I内的哈希表30和高速缓冲存储器50中的条目,以便生成与相应的输入数据相应的压缩信息。
[0045]返回参考图1,编码器60从控制单元20接收压缩信息,并且将压缩的输入数据提供为“输出数据”。输出数据随后可以存储在数据存储设备(例如,非易失性存储器)中,和/或提供给外部电路。
[0046]—个或多个通常理解的数据压缩算法可以用于从本发明构思的实施例内的输入数据生成输出数据。例如,在本发明构思的特定实施例中,可以通过仅利用输入数据的位置和长度信息(例如,LZ序列算法,诸如LZ (Lempel-Ziv) 77、LZ78或者LZW(Lempel-Ziv-Welch))标识输入数据来获得输出数据。在本发明构思的其他实施例中,deflate算法,霍夫曼算法或者算术编码算法可以用于压缩输入数据以生成相应输出数据。[0047]在下文中,参考图6至图11,将描述根据本发明构思的实施例的数据压缩方法。
[0048]图6是概述根据本发明构思的特定实施例的数据压缩方法的流程图。图7、图8、图9、图10和图11进一步示出与图6的方法相关的一些细节。
[0049]为了描述的方便起见,与图1的数据压缩装置一起,假定图3的哈希表、图4的缓冲存储器40和图5的高速缓冲存储器50。
[0050]图6的方法开始于从输入数据生成哈希键(S100)。接下来,确定输入数据是否基于哈希键导致哈希命中(S110)。如果输入数据是“哈希命中”(也即,导致哈希命中或者SllO=是),则可以使用哈希表容易地生成与输入数据相应的压缩信息(S115)。
[0051]更具体地说,参考图1,控制单元20可以通过使用由哈希键发生器10生成的哈希键搜索哈希表30,来提取针对输入数据且与哈希键关联(或者“链接到哈希键”)的索引。然后,控制单元20从存储在缓冲存储器40中的数据当中提取由从哈希表30引用的索引所标识的“指示数据”。这里,如果与哈希键关联的输入数据等于所提取的指示数据,则已经发生哈希命中。因此,控制单元20使用从哈希表30引用的索引结合指示/输入数据的长度信息来生成用于压缩输入数据的压缩信息。
[0052]例如,假设接收以由缓冲存储器40中的值‘44’索引的第三数据(CO,Cl,C2,C3)作为到图1的数据压缩装置I的输入数据,并且因此哈希键发生器10生成第三哈希键,Kc。
[0053]如果控制单元20接下来使用第三哈希键Kc搜索哈希表30,则其将找到第三索引‘32’。使用该索引,控制单元20可以从存储在缓冲存储器40中的数据提取由第三索引‘32’标识的指示数据。用这样的方式,先前存储的第三数据(CO,Cl,C2,C3)可以被标识为存储在缓冲存储器40中的指示数据。
[0054]在这种情况下,因为输入数据和标识的指示数据是相同的,所以输入数据是哈希命中。因此,控制单元20可以使用针对指示数据的相应索引和长度信息(例如,如正在讨论的示例中假定的4字节)来生成用于压缩输入数据的压缩信息。由此,如果可以使用哈希表30完成输入数据的压缩,则不必确定是否已经使用高速缓冲存储器50完成压缩,并且可以省去该方法步骤。
[0055]但是,如果输入数据不是哈希命中(SllO=否),则控制单元20确定是否发生了哈希冲突(S120)。然后,如果已经发生了哈希冲突(S120=是),则哈希表的冲突计数增加(S125)。这里,术语“哈希冲突”意思是接收到的输入数据不同于从缓冲存储器40提取的指示数据。也就是说,如果输入数据和指示数据具有不同数据值但是具有相同的哈希键——如由给定哈希函数(F哈希)生成的,则会发生哈希冲突。
[0056]例如,现在假定第四输入数据(DO,Dl, D2,D3)已经先前存储在缓冲存储器40中,并且具有索引‘48’。但是,当再次在数据压缩装置I中接收到第四输入数据时,更进一步假定由键发生器10对于第四输入数据(DO,Dl, D2,D3)生成的哈希键是‘Ka’。在此条件下,控制单元20将使用哈希键‘Ka’搜索哈希表30,并且将返回索引‘8’。然而,使用该索引,控制单元20将提取存储在缓冲存储器40中的相应指示数据(也即,A0,Al,A2,A3)。因此,在这种情况下,因为标识的数据(DO,Dl, D2,D3)和指示数据(A0,Al,A2,A3)不相同,所以第四输入数据不是哈希命中,而是哈希冲突。
[0057]相反,如果从第四输入数据(DO,Dl, D2,D3)生成的哈希键假定为‘Kd’,并且因此在哈希表30中没有标识,则第四输入数据将不导致哈希命中或者哈希冲突。[0058]但是,控制单元20将在确定哈希冲突时将针对特定哈希键的冲突计数的值递增。
[0059]再次参考图6,控制单元20现在确定输入数据是否是高速缓冲命中(S130)。如果输入数据是高速缓冲命中,则使用高速缓冲存储器生成压缩信息(S135)。
[0060]例如,如果接收到第四输入数据(DO,Dl, D2,D3),则如上所述使用哈希表30的数据压缩将失败,并且由此必须确定是否可以使用高速缓冲存储器50完成数据压缩。因此,控制单元20确认输入数据是否被先前存储在高速缓冲存储器50中。但是,因为在正在讨论的示例中,第四输入数据(DO,Dl, D2,D3)先前尚未存储在高速缓冲存储器50中,所以当接收到第四输入数据时第四输入数据不导致高速缓冲命中(S130=否)。因此,在这种情况下,控制单元20不能使用高速缓冲存储器50对第四输入数据执行数据压缩。
[0061]而是,控制单元20现在确定对于哈希键的冲突计数是否大于或等于预定阈值(S140)。如果针对哈希键的冲突计数大于或等于预定阈值,则更新高速缓冲存储器(S145)。
[0062]再次,如上所述,现在假定接收到第四输入数据(DO,Dl, D2,D3)并且针对哈希键Ka的冲突计数变为3。这里,如果假设预定阈值是3,则针对哈希键Ka的冲突计数在如上所述递增之后变为等于预定阈值。因此,控制单元20将更新高速缓冲存储器50,如以下参考图8所述。由此,当冲突计数等于或者超出阈值时导致哈希冲突的任意输入数据将被存储在高速缓冲存储器50中。在这种情况下,在缓冲存储器40上以8索引的数据(A0,A1,A2,A3)以及在缓冲存储器40上以48索引的数据(DO,Dl, D2,D3)在高速缓冲存储器50中被更新。
[0063]作为前述的结果,必须添加“新数据”到高速缓冲存储器50中。但是,如果在高速缓冲存储器50中可用的存储空间不够,则具有最小引用计数值的数据可以被删除,并且可以添加新的数据到高速缓冲存储器50。这是因为,如果引用计数字段值较小,则在使用高速缓冲存储器50中存储的数据进行数据压缩处理的成功可能性较低。
[0064]返回参考图6,控制单元20现在将确定输入数据是否是当前输入流中的最后数据(S150)。如果输入数据不是最后的(S150=否),则用与输入数据相关的信息更新哈希表30(S160)。在上述接收到第四输入数据(D0,D1,D2,D3)的示例中,第四输入数据(DO,Dl,D2,D3)不是输入流的最后数据(图4),并且由此执行哈希表30的更新。具体地说,如图9中所示,将针对哈希键Ka的冲突计数增加1,并且将针对哈希键Ka的索引变为48。
[0065]接下来,假设在第一输入数据(A0,Al,A2,A3)被再次接收作为输入数据之后第一输入数据(A0,Al,A2,A3)在缓冲存储器40中又另外以值‘64’索引。哈希键发生器10将再次生成Ka作为针对第一输入数据的哈希键(参见图9)。如果生成了哈希键,则控制单元20通过利用所生成的哈希键Ka搜索哈希表(图9)来确定输入数据是否是哈希命中。但是,因为针对哈希键Ka的索引已经变为48,所以从缓冲存储器40提取的指示数据(图4)变为(D0,D1,D2,D3)。据此,在这种情况下,针对第一输入数据(A0,Al,A2,A3)的哈希命中不发生。另一方面,因为哈希冲突已经以如上所述的相同方式发生,所以针对哈希键Ka的冲突计数变为4。
[0066]接下来,控制单元20通过搜索第一输入数据(A0,Al,A2,A3)是否先前已经存储在高速缓冲存储器50 (图8)中,来确定第一输入数据(A0,Al,A2,A3)是否是高速缓冲命中。在这种情况下,因为用与哈希冲突相关的数据更新了高速缓冲存储器50 (图8),所以第一输入数据(A0,Al,A2,A3)存在于高速缓冲存储器50 (图8)中。也就是说,控制单元20能够通过搜索高速缓冲存储器50 (图8)识别针对第一输入数据(A0,Al,A2,A3)的索引是8。因此,控制单元20能够使用输入数据(A0,Al,A2,A3)的位置信息(例如,索引8)以及从高速缓冲存储器(例如,图8中的50)搜索的长度信息生成压缩信息。
[0067]另一方面,因为针对哈希键Ka的冲突计数变为4,所以这超出了预定阈值(例如,3)。因此,控制单元20更新图10中所示的高速缓冲存储器50。此时,因为与哈希冲突相关的数据(A0,Al,A2,A3)和(DO,Dl, D2,D3)已经存储在高速缓冲存储器50中,所以仅输入数据(A0,Al,A2,A3)的引用计数增加,如图所示。因为输入数据(A0,Al,A2,A3)还不是输入数据流的最后数据,所以如图11中所示更新哈希表30。参考图11,可以得知,针对哈希键Ka的冲突计数已经增加到4并且索引字段已经变为64。
[0068]如上所述,根据按照实施例的数据压缩装置和方法,哈希表30和高速缓冲存储器50两者都用来压缩输入数据。如果使用哈希表30和高速缓冲存储器50两者来压缩数据,则能够实现下列优点。
[0069]在仅使用哈希表30执行数据压缩的情况下,如果如上所述发生哈希冲突则数据压缩是不可能的。也就是说,如果与哈希冲突关联的数据交替地作为输入数据输入,则数据压缩比将大大降低。
[0070]为了避免上述哈希冲突现象,可以考虑改变生成种类多样的哈希键的哈希函数的方法。但是,哈希表的大小很可能会由于硬件限制而受到限制,并且由此不容易采用这样的方法。
[0071]但是,按照像上面描述的本发明构思的实施例,因为使用单独的高速缓冲存储器50管理导致哈希冲突的输入数据,所以即使已经交替地输入导致(多个)哈希冲突的数据,也可以保持相对高压缩比的数据压缩比。也就是说,在示出的实施例中,使用哈希表30作为用于数据压缩操作的词典、将已经发生哈希冲突的数据存储在高速缓冲存储器50中、并且使用高速缓冲存储器作为子词典,可以保持相对高的数据压缩比。而且,在示出的实施例中,因为高速缓冲存储器50在冲突的数目变为等于或者大于预定阈值时被更新,所以不需要进行不必要的写操作来将输入数据存储在高速缓冲存储器50中。
[0072]接下来,参考图1、图12A和图12B,将描述根据本发明构思的另一实施例的数据压缩方法。
[0073]图12A和图12B是概述根据本发明构思的另一实施例的数据压缩方法的相关流程图。在下文中,为了简要起见将省去先前描述的事项的说明。
[0074]首先,参考图12A,生成针对输入数据的哈希键(S200)。然后,基于所生成的哈希键确定输入数据是否是哈希命中(S210)。如果作为确定的结果,输入数据是哈希命中,则使用哈希表生成压缩信息(S215)。如果输入数据不是哈希命中,则确定是否发生了哈希冲突(S220)。如果作为确定的结果,已经发生了哈希冲突,则哈希表的冲突计数增加(S225)。因为这些操作没有大大不同于上面描述的实施例,所以将省去详细操作的说明。
[0075]接下来,参考图12B,确定输入数据是否是高速缓冲命中(S230)。如果输入数据是高速缓冲命中,则确认相对于输入数据是否存在已经生成的压缩信息(S232)。如果作为确认的结果不存在已经生成的压缩信息,则使用高速缓冲存储器生成压缩信息(S235)。
[0076]如果相对于输入数据没有发生哈希冲突并且在上面描述的步骤中使用哈希表30的压缩是可能的,则可以存在已经生成的压缩信息。但是,如果高速缓冲命中已经发生,但是不存在已经生成的压缩信息,则这意味着能够使用高速缓冲存储器50压缩这样的输入数据。因此,如果高速缓冲命中已经发生,但是不存在已经生成的压缩信息,则控制单元20使用高速缓冲存储器50生成压缩信息。
[0077]再次参考图12B,如果输入数据是高速缓冲命中并且相对于输入数据存在已经生成的压缩信息,则确认在使用高速缓冲存储器压缩输入数据时的压缩比是否比当使用哈希表压缩输入数据时的压缩比高(S236)。如果当使用高速缓冲存储器压缩输入数据时的压缩比比当使用哈希表压缩输入数据时的压缩比高,则更新压缩信息(S238)。也就是说,用使用高速缓冲存储器生成的压缩信息更新使用哈希表生成的现有压缩信息。
[0078]在压缩数据的过程中,输入数据可以是哈希命中和高速缓冲命中二者。在这种情况下,控制单元20可以将两种情况的压缩比进行比较,并且使用导致更高压缩比的方法压缩输入数据。
[0079]再次引用图12B,确定针对哈希键的冲突计数是否等于或者大于预定阈值(S240)。然后,如果针对哈希键的冲突计数等于或者大于预定阈值,则更新高速缓冲存储器(S245)。然后,确定输入数据是否是输入数据流的最后数据(S250)。如果作为确定的结果,输入数据不是最后数据,则更新哈希表(S260)。因为这些操作没有大大不同于上面描述的实施例,所以将省去详细说明。
[0080]如上所述,控制单元20可以首先确定输入数据是否是哈希命中,然后确定输入数据是否是高速缓冲命中。但是,本发明构思的实施例不局限于该特定次序步骤。在本发明构思的其它实施例中,控制单元20可以首先确定输入数据是否是高速缓冲命中,然后确定输入数据是否是哈希命中。
[0081]另一方面,根据本发明构思的特定实施例的数据压缩操作可以动态(on-the-fly)执行。
[0082]图13是示出根据本发明构思的特定实施例的数据压缩方法的特定定时考虑的操作图。
[0083]参考图13,如上所述的数据压缩操作可以在一个系统时钟周期期间同时执行。具体地说,在第一系统时钟周期Tl期间,可以执行针对第一输入数据INPUT DATAl的哈希键生成操作P。
[0084]然后,在第二系统时钟周期T2期间,可以同时执行针对第二输入数据INPUTDATA2的哈希键生成操作P和针对第一输入数据INPUT DATAl的哈希命中确定操作Q。
[0085]然后,在第三系统时钟周期T3期间,可以同时执行针对第三输入数据INPUTDATA3的哈希键生成操作P、针对第二输入数据INPUT DATA2的哈希命中确定操作Q和针对第一输入数据INPUT DATAl的高速缓冲命中确定操作R。
[0086]然后,在第四系统时钟周期T4期间,可以同时执行针对第四输入数据INPUTDATA4的哈希键生成操作P、针对第三输入数据INPUT DATA3的哈希命中确定操作Q、针对第二输入数据INPUT DATA2的高速缓冲命中确定操作R和利用压缩信息编码第一输入数据INPUT DATAl 的操作 S。
[0087]然后,在第五系统时钟周期T5期间,可以同时执行针对第五输入数据INPUTDATA5的哈希键生成操作P、针对第四输入数据INPUT DATA4的哈希命中确定操作Q、针对第三输入数据INPUT DATA3的高速缓冲命中确定操作R、利用压缩信息编码第二输入数据INPUT DATA2的操作S和使用针对第一输入数据INPUT DATAl的压缩信息更新哈希表的操作T。
[0088]在与本发明构思的特定实施例一致的数据压缩方法中,为了提高数据压缩效率,可以使用动态方法并行执行上面描述的数据压缩操作。另一方面,其中示例出的数据压缩需要的各个操作P至T仅仅是示范性的,并且由其它实施例并行执行的各个操作不局限于操作P到T。
[0089]再次参考图13,为了执行数据压缩操作,在特定系统时钟周期期间(例如,T5和T6),哈希表30必须能够同时被读取和写入。具体地说,在第五系统时钟周期T5期间,应当用针对第一输入数据INPUT DATAl的压缩信息更新(也即,写入)哈希表30,但是还必须同时从哈希表30读取以确定针对第四输入数据INPUT DATA4的哈希命中。因此,根据本发明构思的实施例的数据压缩装置可以通过能够支持这样的不同操作并行运行的结构来设计。
[0090]例如,如图1中所示的数据压缩装置I的哈希表30可以由DP_SRAM(双端口 SRAM)实现,以使得在单个系统时钟周期期间可以同时从哈希表读取和/或向哈希表写入。但是,本发明构思不局限于此,并且可以多样地修改所述数据压缩装置的实现方法。
[0091]图14是根据本发明构思的特定实施例的数据压缩装置的框图。图14的数据压缩装置2本质上与图1的数据压缩装置I相同,除了哈希表31的规格和操作特性之外。
[0092]参考图14,哈希表31可以通过将第二哈希表31b与第一哈希表31a划分开来实现。这里,第一哈希表31a和第二哈希表31b可以使用(例如)SP-SRAM (单端口 SRAM)来实现。在哈希表31是通过SP-SRAM实现的情况下,数据压缩装置2中哈希表31所占用的区域相对降低,并且由此能够小型化数据压缩装置2。而且,数据压缩装置2能够利用高频率系统时钟操作,并且由此能够提高数据压缩速度。
[0093]第一哈希表31a和第二哈希表31b可以在单个系统时钟周期期间交替地执行不同操作。这将参考图13的示例在一些额外细节上进行描述。在第五系统时钟周期T5期间,可以用针对第一输入数据INPUT DATAl的压缩信息更新第一哈希表31a,并且可以读取第二哈希表31b以便确定相对于第四输入数据INPUT DATA4的哈希命中。
[0094]而且,在第六系统时钟周期T6期间,可以用针对第二输入数据INPUT DATA2的压缩信息更新第二哈希表31b (也就是说,写入),并且可以读取第一哈希表31a以便确定相对于第五输入数据INPUT DATA5的哈希命中。
[0095]也就是说,在第一哈希表31a中,执行奇数编号的输入数据INPUT DATA K 3和5的读和写操作,并且在第二哈希表31b中,执行偶数编号的输入数据INPUT DATA2和4的读和写操作。但是,因为在系统时钟周期期间同时执行针对第一哈希表31a的读操作和针对第二哈希表31b的写操作,所以根据本发明构思的特定实施例的数据压缩装置2可以流畅地并行执行数据压缩操作,如图13中所示。
[0096]现在参考图15、图16、图17和图18,将描述根据本发明构思的实施例的存储系统及其各个应用示例。
[0097]图15是示出根据本发明构思的实施例的存储系统的总体框图。图16是进一步示出图15的控制器1000的框图。图17是示出图15的存储系统的一个可能应用示例的框图,图18是示出包括图17的存储系统的计算系统的框图。
[0098]参考图15,存储系统1000包括非易失性存储器件1100和控制器1200。[0099]非易失性存储设备1100可以是例如包括NAND或者NOR的闪存设备。但是,本发明构思不局限于这样的示例,并且在本发明构思的一些实施例中,非易失性存储设备110可以是PRAM (相变RAM)、FRAM (铁电RAM)和RRAM (电阻RAM)中的任意一个。
[0100]控制器1200连接到主机和非易失性存储设备1100。控制器1200可以被配置为响应于来自主机的请求访问非易失性存储设备1100。例如,控制器1200可以被配置为控制非易失性存储设备1100的读、写、擦除和后台操作。具体来说,在实施例中,控制器1200可以从主机接收输入数据并且输出通过压缩输入数据得到的输出数据。
[0101]另一方面,控制器1200可以被配置为提供非易失性存储设备1100和主机之间的接口。而且,控制器1200可以被配置为驱动用于控制非易失性存储设备1100的固件。举例来说,控制器1200还可以包括公知的构成元件,诸如RAM(随机存取存储器)、中央处理单元、主机接口和存储器接口。
[0102]在下文中,参考图16,将更详细地描述在本发明构思的一些实施例中的控制器1200的结构。
[0103]参考图16,控制器1200可以包括主机接口 1210、RAM1240、数据压缩装置1230、ECC1250、存储器接口 1260和中央处理单元1220。
[0104]主机输出操作命令(例如,读命令、写命令、擦除命令等等)、地址和数据到主机接口 1210。主机接口 1210包括用于执行主机与控制器1200之间的数据交换的协议。
[0105]举例来说,主机接口 1210可以包括诸如USB (通用串行总线)协议、MMC (多媒体卡)协议、PCI (外围组件互连)协议、PC1-E (快速PCI)协议、ATA (高级技术连接)协议、串行ATA协议、ESDI (增强小型盘接口)协议和IDE (集成驱动电子)协议之类的各种协议中的至少一个。
[0106]RAMl240被用作中央处理单元1220的运行存储器,并且可以由DRAM或者SRAM实现。在本发明构思的一些实施例中,RAM1240可以用作如上所述的缓冲存储器(图1中的
40),并且可以临时存储从主机输出的数据。
[0107]数据压缩装置1230可以压缩从主机输入的输入数据,并且提供压缩数据给非易失性存储设备1100或者将输入数据从主机分流给非易失性存储器设备1100。在实施例中,可以采用根据本发明构思的实施例的数据压缩装置I和2作为压缩装置1230。
[0108]ECC1250检测并校正从非易失性存储设备1100读取的数据或者写入非易失性存储设备1100的数据中的缺陷。ECC1250可以被配置为使用误差校验码来检测和校正从非易失性存储设备1100读取的数据的错误。图16示出ECC1250被提供作为控制器1200的构成元件,但是本发明构思不局限于此。在本发明构思的一些实施例中,ECC1250可以被提供作为非易失性存储设备1100的构成元件。
[0109]存储接口 1260与非易失性存储设备1100连接。例如,存储接口 1260可以包括NAND接口或者NOR接口。
[0110]中央处理单元1220可以执行针对控制器1200的数据交换的总体控制操作。尽管在图中未示出,但是在本发明构思的一些实施例中,本领域技术人员明显可见,存储系统1000还可以包括ROM (未示出),其中存储有用于与主机接口的代码数据。
[0111]再次引用图15,控制器1200和非易失性存储设备1100可以集成到一个半导体设备中。例如,控制器1200和非易失性存储设备1100可以集成到一个半导体设备中以便配置存储卡,诸如PC卡(PCMCIA (个人计算机存储卡网络互联))、紧凑型闪存(CF)卡、智能介质卡(SM 或者 SMC)、记忆棒、多媒体卡(MMC、RS-MMC、MMCmicro )、SD 卡(SD、miniSD、microSD或者SDHC)、通用闪存设备(UFS)等等之类。
[0112]在本发明构思的一些实施例中,控制器1200和非易失性存储设备1100可以集成到一个半导体设备中以便配置SSD (固态驱动器)。SSD包括被配置为将数据存储在半导体存储器中的存储设备。在存储系统1000用作SSD的情况下,连接到存储系统1000的主机的运行速度能够得到显著提高。
[0113]另举一例,存储系统1000可以提供作为电子设备的各种构成元件其中之一,电子设备诸如计算机、UMPC (超移动PC)、工作站、上网本、PDA (个人数字助理)、便携式计算机、网络平板、无线电话、移动电话、智能电话、电子书、PMP (便携式多媒体播放器)、便携式游戏机、导航设备、黑盒(black box)、数字相机、3维电视接收机、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、能够在无线环境下发送与接收信息的设备、构成家庭网络的各种电子设备其中之一、构成计算机网络的各种电子设备其中之一、构成车载资讯系统网络的各种电子设备其中之一、RFID设备或者构成计算系统的各种构成元件其中之一。
[0114]举例来说,非易失性存储设备1100或者存储系统1000可以安装为各种类型的封装。例如,非易失性存储设备1100或者存储系统1000可以封装和安装为PoP (层叠封装,package on package)、球栅阵列封装(ball grid array, BGA)、芯片尺寸封装(chip scale package, CSP)、有引线塑封载体(plastic leaded chip carrier, PLCC)、塑料双列直插式封装(plastic dual in-line package, PDIP)、晶片包中管芯封装(die inwaffle pack)、晶片形式的管芯封装(die in wafer form)、板上芯片技术(chip on board,COB)、陶瓷双列直插式封装(ceramic dual in-line package, CERDIP)、塑料公制四方扁平封装(plastic metric quad flat pack, MQFP)、薄型四方扁平封装(thin quad flatpack, TQFP)、小外型封装(small outline, S0IC)、缩小外型封装(shrink small outlinepackage, SS0P)、薄型小尺寸封装(thin small outline, TS0P)、薄型四方扁平封装(thinquad flat pack, TQFP)、系统级封装(system in package, SIP)、多芯片封装(multi chippackage, MCP)、晶片级制造封装(wafer-level fabricated package, WFP)、晶片级处理堆栈封装(wafer-level processed stack package, WSP)等等之类。
[0115]接下来,参考图17,存储系统2000包括非易失性存储器设备2100和控制器2200。非易失性存储设备2100包括多个非易失性存储芯片。多个存储芯片被划分为多个组。多个非易失性存储芯片的各个组被配置为通过一个公共通道与控制器2200通信。例如,示出多个非易失性存储芯片通过第一通道CHl至第k通道CHk与控制器2200通信。
[0116]在图17中,描述了多个非易失性存储芯片连接到一个通道。但是,能够理解,存储系统2000能够被修改以使得一个非易失性存储芯片连接到一个通道。
[0117]接下来,参考图18,计算系统3000包括中央处理单元3100、RAM(随机存取存储器)3200、用户接口 3300、电源3400和存储系统2000。
[0118]存储系统2000通过系统总线3500电连接至中央处理单元3100、RAM3200、用户接口 3300和电源3400。通过用户接口 3300提供的数据由中央处理单元3100处理并且存储在存储系统2000中。[0119]图18示出非易失性存储设备2100通过控制器2200连接到系统总线3500。但是,非易失性存储设备2100可以被配置为直接连接至系统总线3500。
[0120]图18示出提供了参考图17描述的存储系统2000。但是,存储系统2000可以用参考图17描述的存储系统1000替换。
[0121]举例来说,计算系统3000可以被配置为包括参考图15和图17描述的全部存储系统 1000 和 2000。
[0122]图19和图20是示出根据本发明构思的一些实施例的存储系统和计算系统能够应用于其的示范性电子设备。
[0123]图19示出平板PC,图20示出笔记本计算机。根据本发明构思的实施例的存储系统1000和2000和计算系统3000至少其中之一可以用于平板PC或者笔记本计算机中。对本领域技术人员明显可见的是,根据本发明构思的一些实施例的存储系统1000和2000以及计算系统3000能够应用于其它非示范性电子设备。
[0124]尽管为了图示的目的已经描述了本发明构思的优选实施例,但是本领域技术人员将理解,各种修改、添加和替换是可能的,而不脱离如所附权利要求公开的本发明构思的范围。
【权利要求】
1.一种数据压缩方法,包括: 接收输入数据并且针对所述输入数据生成哈希键; 利用所述哈希键搜索哈希表,并且确定所述输入数据是否是哈希命中,当确定所述输入数据是哈希命中时,使用所述哈希表压缩所述输入数据;以及 当确定所述输入数据不是哈希命中时,使用所述输入数据搜索高速缓冲存储器,并且确定所述输入数据是否是高速缓冲命中,当确定所述输入数据是高速缓冲命中时,使用所述高速缓冲存储器压缩所述输入数据。
2.如权利要求1所述的数据压缩方法,其中,所述确定所述输入数据是否是哈希命中包括: 使用所述哈希键从所述哈希表中提取针对所述输入数据的索引; 从存储在缓冲存储器中的数据提取由所述索引标识的指示数据;以及 当所述输入数据等于所述指示数据时确定所述输入数据是哈希命中。
3.如权利要求2所述的数据压缩方法,其中,所述使用所述哈希表压缩所述输入数据包括: 使用所述索引和所述指示数据的长度信息压缩所述输入数据。
4.如权利要求1所述的数据压缩方法,其中,所述确定所述输入数据是否是高速缓冲命中包括: 确定所述输入数据是否已经先前存储在所述高速缓冲存储器中。
5.如权利要求4所述的数据压缩方法,其中,所述使用所述高速缓冲存储器压缩所述输入数据包括: 使用从所述高速缓冲存储器中提取的针对所述输入数据的索引以及存储在所述高速缓冲存储器中的针对所述输入数据的长度信息压缩所述输入数据。
6.如权利要求1所述的数据压缩方法,还包括: 在确定所述输入数据不是哈希命中之后确定是否发生哈希冲突; 当确定发生所述哈希冲突时将针对所述哈希键的冲突计数递增;以及 如果针对所述哈希键的冲突计数等于或者大于阈值,则更新所述高速缓冲存储器。
7.如权利要求6所述的数据压缩方法,还包括: 在更新所述高速缓冲存储器之后更新所述哈希表。
8.如权利要求1所述的数据压缩方法,其中,所述确定所述输入数据是否是高速缓冲命中在确定所述输入数据是否是哈希命中之后执行。
9.如权利要求8所述的数据压缩方法,还包括: 当确定所述输入数据是哈希命中和高速缓冲命中时,比较当使用所述哈希表压缩所述输入数据时的第一压缩比与当使用所述高速缓冲存储器压缩所述输入数据时的第二压缩t匕,以便确定更高的压缩比,并且之后使用第一压缩比和第二压缩比中与所述更高的压缩比相应的一个来压缩所述输入数据。
10.如权利要求1所述的数据压缩方法,还包括: 将通过压缩所述输入数据生成的输出数据提供给非易失性存储设备。
11.一种数据压缩方法,包括: 通过使用针对第一输入数据生成的哈希键搜索哈希表,确定第一输入数据是否是哈希命中;以及 通过使用不同于第一输入数据的第二输入数据搜索高速缓冲存储器确定第二输入数据是否是闻速缓冲命中, 其中,在第一系统时钟周期期间同时执行确定第一输入数据是否是哈希命中和确定第二输入数据是否是高速缓冲命中。
12.如权利要求11所述的数据压缩方法,还包括: 基于压缩不同于第二输入数据的第三输入数据的结果更新所述哈希表, 其中,在第一系统时钟周期期间同时执行确定第一输入数据是否是哈希命中和更新所述哈希表。
13.如权利要求12所述的数据压缩方法,还包括: 针对不同于第三输入数据的第四输入数据生成哈希键;以及 基于压缩不同于第四输入数据的第五输入数据的结果,对第五输入数据进行编码, 其中,在第一系统时钟周期期间同时执行确定第一输入数据是否是哈希命中、针对第四输入数据生成哈希键和 对第五输入数据进行编码。
14.如权利要求13所述的数据压缩方法,还包括: 在针对第四输入数据生成所述哈希键之后,在第二系统时钟周期期间通过使用针对第四输入数据生成的哈希键搜索所述哈希表来确定第四输入数据是否是哈希命中;以及 在第三系统时钟周期期间通过利用第四输入数据搜索所述高速缓冲存储器来确定第四输入数据是否是高速缓冲命中。
15.如权利要求14所述的数据压缩方法,其中,所述第三系统时钟周期跟在第二系统时钟周期之后。
16.一种数据压缩装置,包括: 哈希键发生器,被配置为接收输入数据和提供相应的哈希键; 控制单元,被配置为通过使用所述哈希键搜索哈希表来确定所述输入数据是否是哈希命中,或者在确定所述输入数据不是哈希命中之后通过使用所述输入数据搜索高速缓冲存储器来确定所述输入数据是否是高速缓冲命中,以及提供与所述输入数据相应的压缩信息;以及 编码器,被配置为基于所述压缩信息对所述输入数据进行编码,并且提供通过压缩所述输入数据得到的输出数据。
17.如权利要求16所述的数据压缩装置,其中,所述哈希表包括第一哈希表和第二哈希表,以及 所述控制单元还被配置为在第一系统时钟周期期间确定在第一哈希表中所述输入数据是否是哈希命中,以及在第二系统时钟周期期间确定在第二哈希表中所述输入数据是否是哈希命中。
18.如权利要求17所述的数据压缩装置,其中,使用单端口静态随机存取存储器SP-SRAM实现第一哈希表和第二哈希表。
19.如权利要求16所述的数据压缩装置,其中,使用双端口静态随机存取存储器DP-SRAM实现哈希表。
20.如权利要求16所述的数据压缩装置,其中,所述哈希表包括记录哈希冲突的数目的冲突计数字段。
21.如权利要求16所述的数据压缩装置,其中,使用多个触发器实现所述高速缓冲存储器。
22.如权利要求16所述的数据压缩装置,还包括: 缓冲存储器,其由静态随机存取存储器SRAM实现,而且利用高速缓冲存储器和哈希表的索引来索引。
23.如权利要求16所述的数据压缩装置,其中,所述输出数据包括所述输入数据的位置信息和长度信息。
24.一种存储系统,包括: 控制器,被配置为从主机接收输入数据以及提供通过压缩所述输入数据得到的输出数据;以及 非易失性存储设备,其存储所述输出数据, 其中,所述控制器包括数据压缩装置,该数据压缩装置包括:用于生成所述输出数据的哈希表,和高速缓冲存储器,以及 所述数据压缩装置被配置为使用针对所述输入数据生成的哈希键搜索所述哈希表,以及确定所述输入数据是否是哈希命中,当确定所述输入数据是哈希命中时,所述数据压缩装置还被配置为使用所述哈希表生成所述输出数据,当确定所述输入数据不是哈希命中时使用所述输入数据搜索所述高速缓冲存储器,以及当确定所述输入数据是高速缓冲命中时使用所述高速缓冲存储器生成所述输出数据。
25.如权利要求24所述的存储系统,还包括: 缓冲存储器,其由所述高速缓冲存储器以及所述哈希表索引。
26.如权利要求24所述的存储系统,其中,所述非易失性存储器设备包括被划分为多个组的多个非易失性存储芯片,每个组经由公共通道分别与所述控制器通信。
【文档编号】G06F17/30GK103729307SQ201310480486
【公开日】2014年4月16日 申请日期:2013年10月15日 优先权日:2012年10月15日
【发明者】金泰焕, 孔骏镇, 金大旭, 徐万根, 孙弘乐 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1