CN106664101B - 自适应速率压缩散列处理装置 - Google Patents
自适应速率压缩散列处理装置 Download PDFInfo
- Publication number
- CN106664101B CN106664101B CN201580047069.2A CN201580047069A CN106664101B CN 106664101 B CN106664101 B CN 106664101B CN 201580047069 A CN201580047069 A CN 201580047069A CN 106664101 B CN106664101 B CN 106664101B
- Authority
- CN
- China
- Prior art keywords
- hash
- literal
- operations
- buffer
- words
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
根据相对于前面的文字集参考多个文字集的散列算法来处理输入文件以促进拷贝‑偏移命令产生。通过产生所述文字集的散列及查找散列表中的对应条目而识别前面的实例。可通过将查找请求置于FIFO缓冲区中而存取所述散列表。当所述FIFO缓冲区填满时,暂停散列链的产生直到所述FIFO缓冲区不再填满为止。当发现重复文字时,同样地暂停所述散列链的产生。所述散列链用于例如根据LZ算法而产生命令文件。用行程长度命令替换连续文字的行程。可接着使用霍夫曼编码对所述命令文件进行编码。
Description
相关申请案
本申请案主张2014年8月12日提出申请的且标题为“自适应速率压缩散列处理器(Adaptive Rate Compression Hash Processor)”的第62/036,453号美国临时案的权益。
技术领域
本发明涉及用于压缩数据的系统及方法。
背景技术
软件压缩很好理解且在公用域中可易于存取用于如GZIP等程序的源代码。考虑到GZIP压缩是基于DEFLATE[2]算法及霍夫曼(Huffman)编码[3],因此针对高带宽应用在硬件中进行用以实施压缩的算法是相对复杂的。压缩的意图是后期在数据流中使用所述数据流中早期出现的拷贝命令。因此,所有压缩实施方案均需要一搜索历史缓冲区及某一类型的比较长度函数以确定可用于拷贝命令的最长长度。用以在先前历史中实施搜索匹配的一种方法是实施散列函数,所述散列函数将可变长度字符串映射到可用于比较正压缩的数据流的固定值。
图1表示GZip的压缩算法的功能性硬件框图。输入数据102由实施(举例来说)LZ7/LZ78算法的模块108的散列模块104散列。将散列数据进行比较以由LZ CMD模块108按蓝波-立夫[4]算法或类似算法产生拷贝或文字命令。一旦收集对待压缩数据的统计,所述统计便被进行霍夫曼译码且接着被压缩以作为经压缩输出数据110而被发送出去。
本文中所揭示的系统及方法提供用于散列输入数据的经改进方法。
附图说明
为了将易于理解本发明的优点,将参考所附图式中所图解说明的具体实施例再现以上简略描述的对本发明的较特定说明。应理解,这些图式仅描绘本发明的典型实施例且因此并非被视为对本发明的范围的限制,透过使用附图将运用额外特异性及细节来描述及阐释本发明,在附图中:
图1是根据现有技术的用于实施压缩方案的组件的示意性框图;
图2是根据本发明的实施例的图解说明散列及散列链的产生的图式;
图3是根据本发明的实施例的用于产生散列链的方法的过程流程图;
图4是根据本发明的实施例的用于实施散列的电路的示意性框图;
图5是根据本发明的实施例的用于实施散列抑制的装置的示意性框图;
图6是根据本发明的实施例的用于散列抑制的方法的过程流程图;且
图7是适于实施根据本发明的实施例的方法的计算机系统的示意性框图。
具体实施方式
将易于理解,可将如在本文中大体描述及各图中图解说明的本发明的组件布置并设计成各种各样的不同配置。因此,如各图中所表示的对本发明的实施例的以下较详细说明并不打算限制如所主张的本发明的范围,而是仅表示根据本发明的目前所涵盖实施例的某些实例。参考图式将最佳地理解目前所描述实施例,其中通篇中相似部件由相似编号标示。
响应于此项技术的目前状态且(特定来说)响应于此项技术中通过当前可用设备及方法尚未完全解决的问题及需要已开发本发明。
可利用一或多个计算机可用或计算机可读媒体的任何组合,包含非暂时性媒体。举例来说,计算机可读媒体可包含以下各项中的一或多者:便携式计算机磁盘、硬盘、随机存取存储器(RAM)装置、只读存储器(ROM)装置、可擦除可编程只读存储器(EPROM或快闪存储器)装置、便携式光盘只读存储器(CDROM)、光学存储装置及磁性存储装置。在选定实施例中,计算机可读媒体可包括可含有、存储、传递、传播或传输供由指令执行系统、设备或装置使用或连同指令执行系统、设备或装置一起使用的程序的任何非暂时性媒体。
用于实施本发明的操作的计算机程序代码可以一或多种编程语言的任何组合而写入,所述编程语言包含面向对象的编程语言(例如Java、Smalltalk、C++等等)及常规过程编程语言(例如“C”编程语言或类似编程语言)。所述程序代码可作为独立软件封装在计算机系统上整体地执行、在独立硬件单元上执行、在与所述计算机相隔某一距离的远程计算机上部分地执行,或者在远程计算机或服务器上整体地执行。在于远程计算机或服务器上整体地执行的情景中,远程计算机可透过任何类型的网络(包含局域网络(LAN)或广域网络(WAN))连接到所述计算机,或者可与外部计算机进行连接(举例来说,使用因特网服务提供者透过因特网而进行)。
下文参考根据本发明的实施例的方法、设备(系统)及计算机程序产品的流程图图解及/或框图而描述本发明。将理解,所述流程图图解及/或框图的每一框及所述流程图图解及/或框图中的框的组合可由计算机程序指令或代码实施。这些计算机程序指令可被提供到通用计算机、专用计算机或其它可编程数据处理设备的处理器以产生机器,使得所述指令(其经由计算机或其它可编程数据处理设备的处理器执行)形成用于实施所述流程图及/或框图的一或若干框中所规定的功能/行为的手段。
这些计算机程序指令还可存储于非暂时性计算机可读媒体中,所述非暂时性计算机可读媒体可引导计算机或其它可编程数据处理设备以特定方式起作用,使得存储于计算机可读媒体中的指令产生包含指令手段的制品,所述指令手段实施流程图及/或框图的一或若干框中所规定的功能/行为。
还可将计算机程序指令加载到计算机或其它可编程数据处理设备上以致使在计算机或其它可编程设备上执行一系列操作步骤,以产生计算机实施的处理程序,使得在计算机或其它可编程设备上执行的指令提供用于实施流程图及/或框图的一或若干框中所规定的功能/动作的处理程序。
参考图2及3,使用散列200来迅速对稍后将按蓝波-立夫(LZ)算法及其它压缩衍生物压缩的文件、字符串或其它数据集202的大部分或全部可能参考编索引。图2中展示可产生的散列表204及散列链206的实例。散列表204及散列链206的填充可使用图3的方法300执行。如根据本文中所揭示的方法而产生的散列表204及散列链206可经处理以根据此项技术中已知的任何方法(明确地,LZ算法)而压缩原始数据集202。
在步骤302处,检索当前位置P处的文字对N。首次地,文字对P可等于零。在图2的实例中,位置P等于X且N等于‘ab’。方法300可包含确定304相对于文字N是否应抑制散列链的产生。此可包含执行图5的方法600。如果未发现304散列受到抑制,那么方法300可包含产生306文字对N的散列(即,Hash(N)),其中Hash()是散列函数。图4中展示实例性散列函数及实施电路。
接着可查找308散列表204中在地址Hash(N)处的条目E。在图2的实例中,针对第一次出现的文字对‘ab’,E的值为零。举例来说,针对根据方法300而处理的每一扇区或数据文件,可将散列表204初始化为零。
接着可将E的值存储310于散列链206中的位置P处。在图2的实例中,值0存储于散列链206中用于‘ab’的第一实例的位置X处。还可将P的值写入312散列表204中的地址Hash(N)处。在所图解说明实例中,可将X的值写入散列表204中的地址Hash(‘ab’)处。
如果位置P是最后文字或文字对的位置,那么将发现314数据文件被完成且方法将结束。否则,将递增P的值以指向下一文字(即,P=P+1文字位置),且方法将在步骤302处继续进行。举例来说,对于字符串‘abcd’,在P=0处将首先处理文字对‘ab’。在P=1处,将处理文字对‘bc’,以此类推。即使在确定304散列受到抑制时,仍可执行步骤314及316,如图3中所展示。
在图2的实例中,步骤304到312的下一迭代将致使响应于检测到‘ab’下一次出现在位置Y处而从地址Hash(‘ab’)检索X的值。因此,将X写入散列链206中的位置Y处且将Y写入散列表中的地址Hash(‘ab’)处。
响应于检测到‘ab’下一次出现在位置Z处,从散列表204中的地址Hash(‘ab’)检索值Y。因此,将Y写入散列链206中的位置Z处且将Z写入散列表中的地址Hash(‘ab’)处。
如易于显而易见,散列表204及散列链206现在使一文字对的初次出现与所述相同文字对的一或多次后续出现相关。散列链中的位置X处的值指向位置Y。因此,当查找以文字‘ab’开始的字符串时,可遵循散列链206中对应于给出值Hash(‘ab’)的对的位置的指针而不必评估整个原始数据集。如上文所述,处理散列表204及/或散列链206以压缩原始数据集的方式可包含此项技术中已知的任何方法,例如LZ算法。
参考图4,散列函数(Hash())用于产生确定性索引,所述确定性索引是针对2个字节可存在的总共64K概率的子集。举例来说,8个位的2个字节(例如,字节0及字节1)各自可表示2^8个可能字符及(2^8)*(2^8)=64KB的可能字符组合。散列函数产生将所需搜索空间减小到2^13的13位散列或具有两个不同字节组合的概率的1/8的8K可能组合。此针对任何随机两字节组合产生相同散列值。
图4中展示用于产生散列值的电路的实例。如显而易见,字节400、402的位7到0被输入到13个“异或非”门404的阵列。如显而易见,如果N+3<=7,那么字节402在位置N处的位被输入到具有字节400的位置N+3处的位的“异或非”门,或如果N+3>7,那么字节402在位置N处的位被输入到具有字节400的位置N+3-7处的位的“异或非”门。同样地,对于至多为N=4的N值,字节400的位置N处的每一位被输入到具有位置N+3处的位的“异或非”门。
参考图5,由于散列是基于字节的,因此通过使用具有在不需要大面积开销的情况下允许多个同时写入的多个存储器组的散列处理器可满足根据方法300来处理多个散列的挑战,这是因为单端口存储器可用于存储器组。FIFO可用于在将多个字节对写入到相同存储器组时处置散列冲突意向。当FIFO填满时,散列处理器关闭散列计算及散列链接操作(例如,图3的方法300)。关闭散列计算及散列链接会减小压缩速率,这是因为新散列值并未产生且因此稍后无法被索引以用于按LZ算法进行拷贝。
散列处理器500可使用图5中所展示的电路500来操作以计算每一字节对的散列值。举例来说,散列处理器500可使用散列限制引擎504来检测FIFO 506何时填满及何时存在针对写入的组冲突,使得散列处理器500可将散列产生抑制到对应于完整FIFO 506的SRAM散列组508,借此允许FIFO 506外流。通过抑制散列,散列处理器500能够以对压缩速率来说最小的成本维持高处理量。由于新散列值意指数据已经不太可压缩了,因此仅损失可忽略压缩量。当散列处理器500遇到正被重复的文字时,散列处理器500使用文字行程长度引擎510来抑制相同文字字符的至多16个字节的散列产生,以使用于产生拷贝命令的散列链接的散列冲突的数目最小化。
在某一实施例中,8个存储器组508可连同8个FIFO 506一起用于产生处理5个两字节对从而有效地产生四个散列值所需的散列数据及平滑功能性。每一平滑FIFO 506可针对8个写入存储器组508实施为16深FIFO以处理在计算仅四个散列时出现的散列冲突。任何数目个存储器组508可连同任何数目个FIFO 506一起用于产生正被散列的任何文字对的散列冲突的平滑功能性,只要所述数目超过需要存储的散列的所需数目即可。举例来说,对于需要较小带宽的应用,可使用四个组508写入及FIFO 506而非实例性实施方案中的八个来产生两个散列。在散列处理因FIFO 506填满而被停止之前,平滑FIFO 506可经实施具有比16深或浅的深度,如图6的方法600中所概述。
散列处理器500可实施图6中所展示的方法600。举例来说,对数据文件或字符串的压缩可在步骤602处开始且可包含根据图3的方法300产生604散列及散列链。如果发现606相同文字(即,重复文字),那么方法600可包含确定所述文字是否为第16个连续重复文字。如果否,那么产生所述文字的散列可受到抑制610,一直到第16个连续重复文字为止。如果确定612字符串或文件中的数据被完成,那么发送614数据以进行LZ匹配514过程,此过程根据霍夫曼译码或某一其它方法而用准备进行编码的命令文件中的拷贝/文字命令来替换文字。如上文所描述的字符串或文件中所识别的重复文字的行程可用“行程长度”文字来替换,所述“行程长度”文字用重复文字的数目及到重复文字的第一实例的位置的偏移来替换重复文字。在一些实施例中,命令文件中针对单个字符文字行程(即,重复文字的行程)的行程长度可被约束为始终指向16字符偏移的倍数。以此方式,行程长度拷贝命令将提供超过90%的压缩速率,此提供压缩速率与实施行程长度拷贝命令的复杂性之间的良好平衡。
在一些实施例中,步骤606到610的行程长度散列抑制可限于关联到匹配长度窗口的每隔一个字符或n的倍数个字符。举例来说,可每隔一个字符或每n个字符执行评估606及可能抑制610一次,其中n是大于2的整数。在一些实施例中,指示重复文字的字符串的行程长度命令可指重复文字的紧接在重复文字的字符串之前的初始实例或与自重复文字的字符串的偏移的多个文字位置。因此,在步骤606处确定文字被重复可包含评估文字在方法600的当前迭代中正处理的文字之前的任何任意偏移处是否被重复。
如果发现612较多数据将保留在文件或字符串中,那么处理在步骤604处相对于字符串或文件中的下一文字对继续进行。
方法600可进一步包含确定616用于散列组508的FIFO缓冲区506是否填满。如果是,那么可关闭618对所述FIFO缓冲区506的散列处理且处理在步骤612处继续进行。如果否,那么所述方法可包含确定612字符串或文件的数据是否已全部被处理,且如果否,那么散列及散列链的产生可在步骤604处继续进行。否则,针对所述字符串或文件执行步骤614。
图7是图解说明实例性计算装置700的框图。计算装置700可用于执行各种过程,例如本文中所论述的那些过程。计算装置700可充当服务器、客户端或任何其它计算实体。计算装置可执行如本文中所论述的各种功能。计算装置700可为各种各样的计算装置中的任一者,例如桌上型计算机、笔记型计算机、服务器计算机、手持式计算机、平板计算机等等。在一些实施例中,含有实施本文中所揭示的方法的电路的硬件装置可包含于计算装置700中或嵌入下文所列的计算装置的组件中的任一者中。
计算装置700包含一或多个处理器702、一或多个存储器装置704、一或多个接口706、一或多个大容量存储装置708、一或多个输入/输出(I/O)装置710及显示装置730,此等全部耦合到总线712。处理器702包含执行存储器装置704及/或大容量存储装置708中所存储的指令的一或多个处理器或控制器。处理器702还可包含各种类型的计算机可读媒体,例如高速缓冲存储器。
存储器装置704包含各种计算机可读媒体,例如易失性存储器(例如,随机存取存储器(RAM)714)及/或非易失性存储器(例如,只读存储器(ROM)716)。存储器装置704还可包含可重写ROM,例如快闪存储器。
大容量存储装置708包含各种计算机可读媒体,例如磁带、磁盘、光盘、固态存储器(例如,快闪存储器)等等。如图7中所展示,特定大容量存储装置为硬盘驱动器724。大容量存储装置708中还可包含各种驱动器以实现从各种计算机可读媒体的读取及/或到各种计算机可读媒体的写入。大容量存储装置708包含可装卸媒体726及/或不可装卸媒体。
I/O装置710包含允许将数据及/或其它信息输入到计算装置700或从计算装置700检索数据及/或其它信息的各种装置。实例性I/O装置710包含光标控制装置、键盘、小键盘、麦克风、监视器或其它显示装置、扬声器、打印机、网络接口卡、调制解调器、镜头、CCD或其它图像俘获装置等等。
显示装置730包含能够向计算装置700的一或多个用户显示信息的任何类型的装置。显示装置730的实例包含监视器、显示终端、视频投影装置等等。
接口706包含允许计算装置700与其它系统、装置或计算环境互动的各种接口。实例性接口706包含任何数目个不同网络接口720,例如到局域网络(LAN)、广域网络(WAN)、无线网络及因特网的接口。其它接口包含用户接口718及外围装置接口722。接口706还可包含一或多个用户接口元件718。接口706还可包含一或多个外围接口,例如用于打印机、指向装置(鼠标、跟踪垫等)、键盘等等的接口。
总线712允许处理器702、存储器装置704、接口706、大容量存储装置708及I/O装置710彼此通信以及与耦合到总线712的其它装置或组件通信。总线712表示数种类型的总线结构中的一或多者,例如系统总线、PCI总线、IEEE 1394总线、USB总线等等。
出于图解目的,程序及其它可执行程序成分在本文中展示为离散块,但应理解,此些程序及成分可在各种时间驻存于计算装置700的不同存储组件中,且由处理器702执行。另一选择为,本文中所描述的系统及过程可以硬件或者硬件、软件及/或固件的组合而实施。举例来说,一或多个专用集成电路(ASIC)可经编程以实施本文中所描述的系统及过程中的一或多者。
在不背离本发明的精神或本质特性的情况下,本发明可体现为其它具体形式。所描述实施例在各方面均应视为仅为说明性的而非限制性的。因此,本发明的范围由所附权利要求书而非由前述说明指示。属于权利要求书的等效内容的意义及范围内的所有改变均将涵盖于权利要求书的范围内。
参考文献
[1].J.Gailly and M.Adler,GZIP:The Data Compression Program,1993,http://www.gzip.org/.
[2]DEFLATE Compressed Data Format Specification version 1.3.IETF.May1996.p.1.sec.Abstract.RFC 1951.Retrieved 11 Nov.2012.
[3]D.A.Huffman,"A method for the construction of minimum-redundancycodes"Proc.IRE 40(9).pp.1098-1101.1952.
[4].Ziv,J.;Lempel,A.(1978)."Compression of individual sequences viavariable-rate coding".IEEE Transactions on Information Theory 24(5):530.
Claims (17)
1.一种用于压缩数据的方法(300),其包括:
执行第一数目个操作,所述第一数目个操作包含:
从输入数据集(102、202)检索当前位置P处的文字集N(302);
产生散列值Hash(N),其中Hash()是具有输出的散列函数,所述输出具有比N(306)少的位;及
评估与散列表(204)相关联的缓冲区(506)的状态;执行第二数目个操作,所述第二数目个操作包含:
在执行所述第一数目个操作之后,响应于与所述散列表(204)相关联的所述缓冲区(506)填满(616),避免将对Hash(N)的查找请求添加到所述缓冲区(506)、递增所述当前位置P(316)以参考所述输入数据集中的下一文字集N且重复所述第一数目个操作;
在执行所述第一数目个操作之后,响应于与所述散列表(204)相关联的所述缓冲区(506)未填满:
查找所述散列表(204、308)中的地址Hash(N)处的条目E;
将所述条目E存储于散列链(206、310)中的所述位置P处;
将用以将位置P写入为所述散列表(204)中的所述地址Hash(N)处的所述条目E的写入请求添加到所述缓冲区(506);
处理来自所述缓冲区(506)的用以将位置P写入为所述散列表(204、312)中的所述地址Hash(N)处的所述条目E的所述写入请求;及
递增所述当前位置P以参考所述数据集(316)中的下一文字位置;及
重复执行所述第二数目个操作直到到达所述数据集的末尾为止;及
使用所述散列链(206)来压缩所述输入数据集(102、202)。
2.根据权利要求1所述的方法(300),其进一步包括:响应于N包含相同于紧接的前面文字且小于所述文字的阈值数目个连续实例的文字,避免将对Hash(N)的所述查找请求添加到所述缓冲区(506)且递增所述当前位置P以参考所述数据集(102、202)中的下一文字位置。
3.根据权利要求1所述的方法(300),其中使用所述散列链(206)来压缩所述输入数据集(102、202)包括:根据蓝波-立夫算法(106)来产生拷贝或文字命令。
4.根据权利要求3所述的方法(300),其中根据所述蓝波-立夫算法(106)来产生拷贝或文字命令包括:针对每一字符串通过以下操作用参考相同字符串及先前出现的字符串的拷贝及偏移命令来替换命令集中的所述数据集(102、202)中的字符串:
识别所述每一字符串的初始文字集;
识别对应于所述初始文字集的散列链(206);
在所述散列链(206)中所参考的对应于所述初始文字集(606)的位置处专门地搜索一或多个相同字符串。
5.根据权利要求4所述的方法(300),其进一步包括对所述命令集进行霍夫曼译码。
6.一种用于压缩数据的设备,其包括:
存储器组(508);
电子装置,其经编程以:
以输入文件(102、202)中的初始文字位置作为当前位置开始,通过执行第一数目个操作而针对所述输入文件(102、202)中的多个文字集中的每一文字集从所述输入文件(102、202)产生散列链(206),所述第一数目个操作包含:
产生所述当前位置处的文字集的散列值,
在所述存储器组(508)中以所述散列值检索条目,
将所述条目写入到所述散列链(206)中映射到所述当前位置的位置,
将所述当前位置以所述散列值写入所述存储器组(508)中,及
使所述当前位置前进到所述输入文件(102、202)中的下一文字位置;
重复所述第一数目个操作直到到达所述输入文件(102、202)的末尾为止;
在产生所述散列链(206)期间,响应于检测到所述文字集包含为所述输入文件(102、202)中的前面文字的复制品的文字而暂停执行所述第一数目个操作的一部分;及
输出所述散列链(206)。
7.根据权利要求6所述的设备,其中所述电子装置进一步经编程以针对至多15个连续文字暂停执行所述第一数目个操作的所述部分,但仍执行使所述当前位置前进到所述输入文件(102、202)中的所述下一文字位置,所述15个连续文字相同于位于所述15个连续文字之前的文字。
8.根据权利要求7所述的设备,其中所述电子装置进一步经编程以将所述散列链(206)输出到命令产生模块且处理所述散列链(206)以产生包含针对所述输入文件(102、202)中的重复文字字符串的拷贝偏移命令的命令文件。
9.根据权利要求8所述的设备,其中所述命令产生模块进一步经编程以将前面为所述文字的前面实例的连续文字实例的行程替换为描述到所述输入文件(102、202)中的所述前面实例的偏移及所述文字的连续实例的所述行程中的文字的数目的行程长度命令。
10.根据权利要求9所述的设备,其中所述命令产生模块实施蓝波-立夫算法(106)。
11.根据权利要求10所述的设备,其中所述电子装置进一步经编程以使用霍夫曼译码对所述命令文件进行编码。
12.根据权利要求6所述的设备,其进一步包括缓冲区(506);
其中所述电子装置进一步经编程以通过将写入请求添加到所述缓冲区(506)及处理来自所述缓冲区(506)的所述写入请求而将所述当前位置以所述散列值写入所述存储器组(508)中。
13.根据权利要求12所述的设备,其中所述电子装置进一步经编程以在所述散列链的产生期间响应于检测到所述缓冲区(506)填满而暂停执行所述第一数目个操作的所述部分,但仍执行使所述当前位置前进到所述输入文件(102、202)中的所述下一文字位置,直到所述缓冲区(506)不再填满为止。
14.一种用于压缩数据的设备,其包括:
存储器组(508);
缓冲区(506),其对应于所述存储器组(508);
电子装置,其经编程以:
以输入文件(102、202)中的初始文字位置作为当前位置开始,通过执行第一数目个操作而针对所述输入文件(102、202)中的多个文字集中的每一文字集从所述输入文件(102、202)产生散列链(206),所述第一数目个操作包含:
产生所述当前位置处的文字集的散列值,
在所述存储器组(508)中以所述散列值检索条目,
将请求将所述条目写入到所述散列链(206)中映射到所述当前位置的位置的写入请求添加到所述缓冲区(506),
执行来自所述缓冲区(506)的所述写入请求,
将所述当前位置以所述散列值写入所述存储器组(508)中,及
使所述当前位置前进到所述输入文件(102、202)中的下一文字位置;
重复所述第一数目个操作直到到达所述输入文件(102、202)的末尾为止;
在所述散列链(206)的产生期间,响应于检测到所述缓冲区(506)填满而暂停执行所述第一数目个操作的一部分,但仍执行使所述当前位置前进到所述输入文件(102、202)中的所述下一文字位置,直到所述缓冲区(506)不再填满为止;及
输出所述散列链(206)。
15.根据权利要求14所述的设备,其中所述电子装置进一步经编程以响应于检测到所述每一文字集包含为所述输入文件(102、202)中的前面文字的复制品的文字而暂停执行所述第一数目个操作的所述部分,但仍执行使所述当前位置前进到所述输入文件(102、202)中的所述下一文字位置。
16.根据权利要求15所述的设备,其中所述电子装置进一步经编程以针对至多15个连续文字暂停执行所述第一数目个操作的所述部分,但仍执行使所述当前位置前进到所述输入文件(102、202)中的所述下一文字位置,所述15个连续文字相同于位于所述15个连续文字之前的文字。
17.根据权利要求14所述的设备,其中所述电子装置进一步经编程以将所述散列链(206)输出到命令产生模块且处理所述散列链(206)以产生包含针对所述输入文件(102、202)中的重复文字字符串的拷贝偏移命令的命令文件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462036453P | 2014-08-12 | 2014-08-12 | |
US62/036,453 | 2014-08-12 | ||
PCT/US2015/044846 WO2016025591A1 (en) | 2014-08-12 | 2015-08-12 | Adaptive rate compression hash processing device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106664101A CN106664101A (zh) | 2017-05-10 |
CN106664101B true CN106664101B (zh) | 2020-04-03 |
Family
ID=55302299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580047069.2A Active CN106664101B (zh) | 2014-08-12 | 2015-08-12 | 自适应速率压缩散列处理装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9934234B2 (zh) |
EP (1) | EP3195481B1 (zh) |
JP (1) | JP6770506B2 (zh) |
KR (1) | KR101866151B1 (zh) |
CN (1) | CN106664101B (zh) |
WO (1) | WO2016025591A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9916320B2 (en) * | 2015-04-26 | 2018-03-13 | International Business Machines Corporation | Compression-based filtering for deduplication |
CN105791832B (zh) * | 2016-03-08 | 2019-02-01 | 湖南千年华光软件开发有限公司 | 数据编码方法和数据解码方法及其系统 |
US10528539B2 (en) | 2016-07-01 | 2020-01-07 | Intel Corporation | Optimized selection of hash collision chains |
US10331558B2 (en) * | 2017-07-28 | 2019-06-25 | Apple Inc. | Systems and methods for performing memory compression |
US10224957B1 (en) * | 2017-11-27 | 2019-03-05 | Intel Corporation | Hash-based data matching enhanced with backward matching for data compression |
US10097201B1 (en) * | 2017-11-30 | 2018-10-09 | Intel Corporation | LZ77 compression of data with data runs |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1388443A (zh) * | 2001-05-28 | 2003-01-01 | 佳能株式会社 | 用于数据压缩的方法、装置、计算机程序和存储介质 |
US8653992B1 (en) * | 2012-06-17 | 2014-02-18 | Google Inc. | Data compression optimization |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4929946A (en) | 1989-02-09 | 1990-05-29 | Storage Technology Corporation | Adaptive data compression apparatus including run length encoding for a tape drive system |
JPH0936747A (ja) * | 1995-07-18 | 1997-02-07 | Toshiba Corp | データ圧縮方法及びデータ圧縮装置 |
WO2004110027A1 (en) | 2003-06-06 | 2004-12-16 | Computer Associates Think, Inc. | System and method for compressing url request parameters |
US7966424B2 (en) * | 2004-03-15 | 2011-06-21 | Microsoft Corporation | Data compression |
US7483426B2 (en) * | 2004-05-13 | 2009-01-27 | Micrel, Inc. | Look-up table expansion method |
US7307552B2 (en) | 2005-11-16 | 2007-12-11 | Cisco Technology, Inc. | Method and apparatus for efficient hardware based deflate |
US7796059B2 (en) * | 2009-01-16 | 2010-09-14 | Tatu Ylonen Oy | Fast approximate dynamic Huffman coding with periodic regeneration and precomputing |
US8610606B2 (en) * | 2011-11-24 | 2013-12-17 | International Business Machines Corporation | Compression algorithm incorporating dynamic selection of a predefined huffman dictionary |
US9035809B2 (en) * | 2012-10-15 | 2015-05-19 | Seagate Technology Llc | Optimizing compression engine throughput via run pre-processing |
US9231615B2 (en) * | 2012-10-24 | 2016-01-05 | Seagate Technology Llc | Method to shorten hash chains in Lempel-Ziv compression of data with repetitive symbols |
US8766827B1 (en) * | 2013-03-15 | 2014-07-01 | Intel Corporation | Parallel apparatus for high-speed, highly compressed LZ77 tokenization and Huffman encoding for deflate compression |
CN105229980B (zh) * | 2013-04-11 | 2018-11-16 | 马维尔以色列(M.I.S.L.)有限公司 | 利用可变关键字大小的精确匹配查找的方法及设备 |
-
2015
- 2015-08-12 US US14/824,703 patent/US9934234B2/en active Active
- 2015-08-12 EP EP15832170.3A patent/EP3195481B1/en active Active
- 2015-08-12 KR KR1020177006488A patent/KR101866151B1/ko active IP Right Grant
- 2015-08-12 JP JP2017506990A patent/JP6770506B2/ja active Active
- 2015-08-12 WO PCT/US2015/044846 patent/WO2016025591A1/en active Application Filing
- 2015-08-12 CN CN201580047069.2A patent/CN106664101B/zh active Active
-
2018
- 2018-04-02 US US15/943,227 patent/US10817474B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1388443A (zh) * | 2001-05-28 | 2003-01-01 | 佳能株式会社 | 用于数据压缩的方法、装置、计算机程序和存储介质 |
US8653992B1 (en) * | 2012-06-17 | 2014-02-18 | Google Inc. | Data compression optimization |
Also Published As
Publication number | Publication date |
---|---|
US20160048531A1 (en) | 2016-02-18 |
US9934234B2 (en) | 2018-04-03 |
JP2017530592A (ja) | 2017-10-12 |
JP6770506B2 (ja) | 2020-10-14 |
WO2016025591A1 (en) | 2016-02-18 |
US20180225298A1 (en) | 2018-08-09 |
KR20170040343A (ko) | 2017-04-12 |
EP3195481B1 (en) | 2022-07-13 |
CN106664101A (zh) | 2017-05-10 |
EP3195481A1 (en) | 2017-07-26 |
KR101866151B1 (ko) | 2018-06-08 |
EP3195481A4 (en) | 2018-04-18 |
US10817474B2 (en) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106664101B (zh) | 自适应速率压缩散列处理装置 | |
KR101841103B1 (ko) | Vlsi 효율적인 허프만 인코딩 장치 및 방법 | |
JP6381546B2 (ja) | 多バイト・フレームのパイプライン化圧縮のための方法、符号化データ・ストリームへの高帯域圧縮のための装置、およびコンピュータ・プログラム製品 | |
US9264068B2 (en) | Deflate compression algorithm | |
JP2021527376A (ja) | データ圧縮 | |
US11733867B2 (en) | System and method for multiple pass data compaction utilizing delta encoding | |
CN104811209A (zh) | 一种抗最长匹配检测的压缩文件数据嵌入方法及装置 | |
JP2018152887A (ja) | 改善されたファイルの圧縮及び暗号化 | |
US9059729B1 (en) | Statistical compressibility determination system and method | |
US10585626B2 (en) | Management of non-universal and universal encoders | |
Chakraborty et al. | A Dictionary based Efficient Text Compression Technique using Replacement Strategy | |
CHETAN et al. | Performance Analysis of Data Compression Using Lossless Run Length Encoding | |
US11811428B2 (en) | System and method for data compression using genomic encryption techniques | |
US20240072825A1 (en) | System and method for encrypted data compression | |
US20240154622A1 (en) | System and method for extracting data from a compressed and encrypted data stream |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180207 Address after: Idaho Applicant after: Micron Technology, Inc. Address before: American California Applicant before: Ted systems Limited by Share Ltd |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |