一种基于硬件快速实现GZIP压缩的方法及其应用技术

技术编号:32569905 阅读:11 留言:0更新日期:2022-03-09 16:56
本发明专利技术属于数据压缩领域,具体涉及一种基于硬件快速实现GZIP压缩的方法及其应用,包括:将待处理文本划分为多个大小为m字节的处理窗口,并行计算一个处理窗口中以每个字节为起始的m个字符串哈希值,将哈希值作为字典的索引地址。将当前待处理字符串存储到字典中同时读取历史候选字符串完成字符串初步匹配。读取的历史字符串和当前待处理字符串逐字节比较完成精细匹配得到每个字符串的匹配长度和匹配距离。引入匹配修剪算法消除并行处理窗口内和窗口间字符串的匹配交叠,解决算法间的依赖,提高数据并行处理能力。本发明专利技术实现了适用于硬件的高带宽全流水可扩展的无损压缩数据通路,根据硬件资源、吞吐率和压缩率之间的权衡,动态调节处理窗口大小。动态调节处理窗口大小。动态调节处理窗口大小。

【技术实现步骤摘要】
一种基于硬件快速实现GZIP压缩的方法及其应用


[0001]本专利技术属于数据压缩领域,更具体地,涉及一种基于硬件快速实现GZIP压缩的方法及其应用。

技术介绍

[0002]随着当前网络技术的不断发展,人类生产的数据量正在以指数级增长,基于网络的应用也日益增大,大量的数据需要在网络上传输,这样对数据的存储和传输提出了更高的要求。需要在有限的硬件资源条件下实现数据的存储并在有限的带宽下尽可能的传输更多的数据,所以在数据传输和存储之前对数据进行有效的压缩是非常有必要的。
[0003]GZIP是一种无损压缩算法,首先使用lz77算法寻找上下文相匹配的字符串,对于存在匹配的字符串用长度距离对其进行替换,从而消除重复信息,然后使用哈夫曼算法构造平均长度最短的码流。在传统应用中,基于软件的解决方案被广泛应用于数据压缩和解压缩,但是大规模的数据压缩解压缩会消耗大量的CPU和内存资源,同时存在处理速率低的性能瓶颈,无法满足大数据环境下的实时压缩处理需求。

技术实现思路

[0004]针对现有技术的缺陷和改进需求,本专利技术提供了一种基于硬件快速实现GZIP压缩的方法及其应用,其目的在于降低cpu的资源利用率。
[0005]为实现上述目的,按照本专利技术的一个方面,提供了一种基于硬件快速实现GZIP压缩的方法,其特征在于,包括:
[0006]将待压缩文本划分为不重叠的多个大小为m个字节的处理窗口;在一个时钟周期内,将当前处理窗口与其相邻的后一个处理窗口组成一个缓存窗口,从该缓存窗口中以当前处理窗口的每个字节为起始字节并往后文延伸构建长度为m的m个字符串,并同时计算所述m个字符串的哈希值;
[0007]在一个时钟周期内将所述m个字符串均匀存储到已在硬件上配置的K个单端口ram中,K取值为m的倍数;在存储每个字符串的同时读取与其具有相同哈希值的历史字符串,在下一个时钟周期内将每个字符串与对应读取的历史字符串逐字节匹配,得到每个字符串的匹配长度和匹配距离;
[0008]在一个时钟周期内,同步计算当前处理窗口对应的所述m个字符串的匹配延伸位置,计算方式为字符串的起始字节位置加上匹配长度,并选取匹配延伸位置最远的字符串作为当前处理窗口内的最优匹配字符串,将其它字符串中与最优匹配字符串发生匹配交叠的匹配部分修剪掉;对各处理窗口同步进行以下方式的懒惰匹配:对每个处理窗口的所述其它字符串,依序比较相邻两字符串的匹配长度,若前者大于后者,则将前者利用其匹配长度和匹配距离进行替换编码,并以同样方式比较以前者匹配延伸位置为起始字节的字符串与其相邻下一字符串的匹配长度;若前者小于后者,则对前者起始字节不处理,并以同样方式比较所述后者与其相邻下一字符串的匹配长度,直至遍历完成所述其它字符串,得到该
处理窗口对应的lz77压缩数据,其中,每个处理窗口的各次比较分配在不同的时钟周期内;
[0009]采用静态哈夫曼码表对lz77压缩数据编码,并经打包完成GZIP压缩。
[0010]进一步,在每个字符串的存储过程中,将每个字符串哈希值的高n bit作为选择ram的索引,其中,n取值为:K=2
n

[0011]进一步,所述在一个时钟周期内将所述m个字符串均匀存储到已在硬件上配置的K个单端口ram中的过程中,对于需要访问同一个ram的多个字符串,在该ram中只存放位于前文的字符串。
[0012]进一步,对于每个地址的ram,采用三级缓存结构,当前的字符串存储到第一级缓存中,第一级缓存的输出存储到第二级缓存中,第二缓存的输出存储到第三级缓存中,以在哈希表项中存储多个哈希值相同的字符串。
[0013]进一步,在当前字符串的存储过程中,同时读取具有相同哈希值的三级缓存中的字符串,将当前存储的字符串与同时读取出的三个历史字符串进行逐字节匹配,得到三个候选的匹配长度和匹配距离,当三者的匹配长度都相同时,优先选择匹配距离最小的历史字符串用以记录当前存储的字符串的匹配长度和匹配距离;当三者的匹配长度不相同时,优先选择匹配长度最大的历史字符串用以记录当前存储的字符串的匹配长度和匹配距离。
[0014]进一步,若所述m个字符串存在多个匹配延伸位置相同的字符串,则将起始字节位置最小的字符串作为最优匹配字符串。
[0015]进一步,若当前处理窗口中的最优匹配字符串的匹配延伸至下一个处理窗口的字节位置,将当前处理窗口中最远延伸位置减去m作为下一个处理窗口开始进行最优匹配字符串选择的起始位置。
[0016]进一步,在一个时钟周期内采用m套静态哈夫曼码表分别对所述m个字符串对应的lz77压缩数据进行编码。
[0017]本专利技术还提供一种基于硬件快速实现GZIP压缩的系统,包括K个单端口ram,其中,每个地址的ram采用三级缓存结构,还包括:
[0018]数据馈送模块,用于将待压缩文本划分为不重叠的多个大小为m个字节的处理窗口;在一个时钟周期内,将当前处理窗口与其相邻的后一个处理窗口传输至哈希值计算模块;
[0019]所述哈希值计算模块,用于执行如上所述的一种基于硬件快速实现GZIP压缩的方法中的哈希值计算以及字符串的读写操作;
[0020]字符串匹配模块,用于执行如上所述的一种基于硬件快速实现GZIP压缩的方法中的字符串匹配操作,得到每个字符串的匹配长度和匹配距离;
[0021]匹配修剪模块,用于执行如上所述的一种基于硬件快速实现GZIP压缩的方法中的最优匹配字符串选取以及懒惰匹配,得到lz77压缩数据;
[0022]哈夫曼编码模块,用于采用静态哈夫曼码表对lz77压缩数据编码;
[0023]打包模块,用于对哈夫曼编码模块编码的数据打包,完成GZIP压缩。
[0024]本专利技术还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序被处理器运行时控制所述存储介质所在设备执行如上所述的一种基于硬件快速实现GZIP压缩的方法。
[0025]总体而言,通过本专利技术所构思的以上技术方案,能够取得以下有益效果:
[0026](1)本专利技术降低了cpu的资源利用率,将gzip算法的密集计算任务交给硬件处理。在不需要cpu参与的情况下,实现了的一种适配于软件的高带宽全流水可扩展无损压缩数据电路。
[0027](2)通过引用并行处理窗口、重新设计哈希表项、匹配修剪算法解决算法间依赖和高速的比特流打包模块。在尽量不影响压缩率的同时提高压缩算法的吞吐率,满足大数据环境下实时压缩处理需求。
[0028](3)本专利技术采用以下方法提高了吞吐率:将待压缩文本划分为多个大小为m字节的并行处理窗口,在一个时钟周期同时完成m个字符串哈希值计算;重新设计哈希表项RAM的组织方式,为了在一个时钟周期同时完成对m个字符串存储和候选字符串的初步筛选,需要对哈希表项在单个时钟周期内进行m次读写,为了尽可能避免哈希表项访问冲突,采用2m个单端口ram构造哈希表项;设计匹配修剪算法消除并行处理窗口内和并行处理本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于硬件快速实现GZIP压缩的方法,其特征在于,包括:将待压缩文本划分为不重叠的多个大小为m个字节的处理窗口;在一个时钟周期内,将当前处理窗口与其相邻的后一个处理窗口组成一个缓存窗口,从该缓存窗口中以当前处理窗口的每个字节为起始字节并往后文延伸构建长度为m的m个字符串,并同时计算所述m个字符串的哈希值;在一个时钟周期内将所述m个字符串均匀存储到已在硬件上配置的K个单端口ram中,K取值为m的倍数;在存储每个字符串的同时读取与其具有相同哈希值的历史字符串,在下一个时钟周期内将每个字符串与对应读取的历史字符串逐字节匹配,得到每个字符串的匹配长度和匹配距离;在一个时钟周期内,同步计算当前处理窗口对应的所述m个字符串的匹配延伸位置,计算方式为字符串的起始字节位置加上匹配长度,并选取匹配延伸位置最远的字符串作为当前处理窗口内的最优匹配字符串,将其它字符串中与最优匹配字符串发生匹配交叠的匹配部分修剪掉;对各处理窗口同步进行以下方式的懒惰匹配:对每个处理窗口的所述其它字符串,依序比较相邻两字符串的匹配长度,若前者大于后者,则将前者利用其匹配长度和匹配距离进行替换编码,并以同样方式比较以前者匹配延伸位置为起始字节的字符串与其相邻下一字符串的匹配长度;若前者小于后者,则对前者起始字节不处理,并以同样方式比较所述后者与其相邻下一字符串的匹配长度,直至遍历完成所述其它字符串,得到该处理窗口对应的lz77压缩数据,其中,每个处理窗口的各次比较分配在不同的时钟周期内;采用静态哈夫曼码表对lz77压缩数据编码,并经打包完成GZIP压缩。2.根据权利要求1所述的一种基于硬件快速实现GZIP压缩的方法,其特征在于,在每个字符串的存储过程中,将每个字符串哈希值的高n bit作为选择ram的索引,其中,n取值为:K=2
n
。3.根据权利要求1所述的一种基于硬件快速实现GZIP压缩的方法,其特征在于,所述在一个时钟周期内将所述m个字符串均匀存储到已在硬件上配置的K个单端口ram中的过程中,对于需要访问同一个ram的多个字符串,在该ram中只存放位于前文的字符串。4.根据权利要求1所述的一种基于硬件快速实现GZIP压缩的方法,其特征在于,对于每个地址的ram,采用三级缓存结构,当前的字符串存储到第一级缓存中,第一级缓存的输出存储到第二级缓存中,第二缓存的输出存储到第三级缓存中,以在哈希表项中存储多个哈希值相同的字符串。5.根据权利要求4所述的...

【专利技术属性】
技术研发人员:刘政林杨东海于润泽
申请(专利权)人:华中科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1