一种适用于deflate格式的Huffman压缩编码字符频率统计装置的制作方法

文档序号:29818801发布日期:2022-04-27 10:49阅读:94来源:国知局
一种适用于deflate格式的Huffman压缩编码字符频率统计装置的制作方法
一种适用于deflate格式的huffman压缩编码字符频率统计装置
技术领域
1.本发明涉及计算机领域,并且更具体地涉及一种适用于deflate格式的huffman压缩编码字符频率统计装置。


背景技术:

2.随着时代的发展,人们使用和获取数据信息不再单纯的来自于书本,杂志,报刊等。同时伴随着移动互联,5g,社交网络,物联网,大数据,人工智能(ai),云计算,安全监控等技术的成熟与发展,使得各种数据正迅速的膨胀并变大,呈爆炸性增长的趋势。5g正在加速普及,越来越多的设备和便捷的联网条件给存储市场带来了前所未有的机会。随着数据量的急剧增长,不断对数据存储系统提出挑战。在所有这些技术当中,云计算技术相当于人的大脑,提供着大容量的数据存储以及高效的计算方式,计算资源和存储资源也更加集中。但是同时使得产生的海量的数据指数级增长,对现有的存储设备带来了巨大的压力。如何能够高效的传输和存储海量数据,同时对cpu不造成过大负荷影响的问题成为关键。因此,高效安全的数据压缩技术成为降低存储成本,节省存储资源有效方法。同时如果将压缩和解压缩任务交给专用硬件电路处理,会大幅减少cpu的负荷,并且在提升存储性能方面非常可观。
3.deflate是一种无损压缩标准,是由lz77编码和霍夫曼编码组合的编码形式。deflate中使用的霍夫曼编码就是“范式霍夫曼编码”,范式霍夫曼编码最早由schwartz提出,它是霍夫曼编码的一个子集。其中心思想是使用某些强制的约定,仅通过很少的数据便能重构出霍夫曼编码树的结构。
4.霍夫曼编码是对数据经过 lz77 压缩后的二次压缩,又进一步提高了压缩率,它是通过统计字符出现次数,对数据处理的可变长编码,利用字符出现的次数构造霍夫曼二叉树,从树的叶子节点到根节点进行编码,出现的越多的字符让短一些的码替换,同时出现次数少的字符被长一些的码替换掉,可以实现数据的总体大小减小,达到压缩的目的。
5.deflate格式的哈夫曼编码是lz77编码和哈夫曼编码的组合编码形式。数据首先经过lz77编码后以literal,length,distance三种形式存在。然后对literal,length,distance出现的频次进行统计(将literal和length作为一类信息和distance分别进行统计),针对统计到的不同频次,出现频次高的字符在哈夫曼编码时码长短,出现频次低的字符哈夫曼编码时码长,目前针对deflate格式huffman压缩编码的字符频次统计都是通过软件方式按照字节进行统计,统计效率比较低,验证影响系统编码性能,并且目前尚无相关硬件统计装置。


技术实现要素:

6.有鉴于此,本发明实施例的目的在于提出一种适用于deflate格式的huffman压缩编码字符频率统计装置,通过使用本发明的技术方案,能够提升整个压缩系统的吞吐率,能
够最大限度发挥硬件的并行计算的特点,提升硬件电路的效率,该装置具有扩展性,通过传参的方式可以支持不同的统计数量。
7.基于上述目的,本发明的实施例的一个方面提供了一种适用于deflate格式的huffman压缩编码字符频率统计装置,包括:字节统计单元,字节统计单元配置为接收经过lz77编码后的数据并统计接收数据的总量;频率统计单元,频率统计单元包括频率分配模块和频率组合模块,频率分配模块配置为接收字节统计单元发送的数据,并统计数据中每个类型的字节出现的频率,频率组合模块配置为将频率分配模块统计出的频率进行累加;数据流控制单元,数据流控制单元配置为接收字节统计单元发送的数据,并根据字节统计单元统计的接收数据的总量和字节统计单元发送数据的量和类型控制字节统计单元接收数据。
8.根据本发明的一个实施例, lz77编码后的数据包括字符类型的数据、长度类型的数据和距离类型的数据,每种数据的大小为1个字节。
9.根据本发明的一个实施例,频率统计单元包括:八个相同的频率分配模块,每个频率分配模块分别接收字节统计单元发送的数据中的一个字节,每个频率分配模块包括若干组频率划分单元,频率分配模块配置为根据接收到的字节的类型和字节在deflate标准协议中映射的值在对应的频率划分单元中进行计数;加法器,加法器的数量与一个频率分配模块中的频率划分单元的数量相同,每个加法器的输入端分别连接八个频率分配模块中相同的频率划分单元的输出端,输出端连接到统计器的输入端,统计器的输出端输出每个字符的频率。
10.根据本发明的一个实施例,频率划分单元包括:累加器,累加器的一个输入端接收字节;计数器,计数器的输入端连接到累加器的输出端,输出端连接到累加器的另一个输入端。
11.根据本发明的一个实施例,每个频率分配模块中的liter0(字符0)频率划分单元至liter255(字符255)频率划分单元统计字符类型的数据出现的频率,len0(长度0)频率划分单元至len28(长度28)频率划分单元统计长度类型的数据出现的频率,dist0(距离0)频率划分单元至dist29(距离29)频率划分单元统计距离类型的数据出现的频率。
12.根据本发明的一个实施例,频率分配模块配置为接收到字节统计单元发送的数据中的一个字节后,判断字节的类型和字节在deflate标准协议中映射的值的大小,根据字节的类型和字节映射的值的大小将该字节发送到字节的类型和映射的值的大小对应的频率划分单元的累加器的输入端。
13.根据本发明的一个实施例,字节统计单元还配置为将接收数据的总量设定为32768个字节,每次向频率统计单元发送的数据量不超过8个字节。
14.根据本发明的一个实施例,数据流控制单元配置为判断字节统计单元接收到的数据的总量与待接收的数据量的和是否大于32768个字节,如果判断出字节统计单元接收到的数据的总量与待接收的数据量的和小于32768个字节,数据流控制单元控制字节统计单
元接收全部待接收的数据量。
15.根据本发明的一个实施例,数据流控制单元配置为判断字节统计单元接收到的数据的总量与待接收的数据量的和是否大于32768个字节,如果判断出字节统计单元接收到的数据的总量与待接的数据量的和大于等于32768个字节,数据流控制单元判断字节统计单元接收的数据的总量达到32768个字节时第32768个字节的类型,如果判断出第32768个字节的类型不为长度类型的数据,数据流控制单元控制字节统计单元只接收到第32768个字节的数据量。
16.根据本发明的一个实施例,数据流控制单元配置为如果判断出字节统计单元接收的数据的总量达到32768字节时第32768个字节的类型为长度类型的数据,数据流控制单元控制字节统计单元接收到第32768个字节并接收第32768个字节后的两个字节的数据量。
17.本发明具有以下有益技术效果:本发明实施例提供的适用于deflate格式的huffman压缩编码字符频率统计装置,通过设置字节统计单元,字节统计单元配置为接收经过lz77编码后的数据并统计接收数据的总量;频率统计单元,频率统计单元包括频率分配模块和频率组合模块,频率分配模块配置为接收字节统计单元发送的数据,并统计数据中每个类型的字节出现的频率,频率组合模块配置为将频率分配模块统计出的频率进行累加;数据流控制单元,数据流控制单元配置为接收字节统计单元发送的数据,并根据字节统计单元统计的接收数据的总量和字节统计单元发送数据的量和类型控制字节统计单元接收数据的技术方案,能够提升整个压缩系统的吞吐率,能够最大限度发挥硬件的并行计算的特点,提升硬件电路的效率,该装置具有扩展性,通过传参的方式可以支持不同的统计数量。
附图说明
18.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
19.图1为根据本发明一个实施例的适用于deflate格式的huffman压缩编码字符频率统计装置的示意图;图2为根据本发明一个实施例的频率统计单元的示意图。
具体实施方式
20.以下描述了本公开的实施例。然而,应该理解,所公开的实施例仅仅是示例,并且其他实施例可以采取各种替代形式。附图不一定按比例绘制;某些功能可能被夸大或最小化以显示特定部件的细节。因此,本文公开的具体结构和功能细节不应被解释为限制性的,而仅仅是作为用于教导本领域技术人员以各种方式使用本发明的代表性基础。如本领域普通技术人员将理解的,参考任何一个附图所示出和描述的各种特征可以与一个或多个其他附图中所示的特征组合以产生没有明确示出或描述的实施例。所示特征的组合为典型应用提供了代表性实施例。然而,与本公开的教导相一致的特征的各种组合和修改对于某些特定应用或实施方式可能是期望的。
21.基于上述目的,本发明的实施例的第一个方面,提出了一种适用于deflate格式的huffman压缩编码字符频率统计装置的一个实施例。图1示出的是该装置的示意图。
22.如图1中所示,该装置可以包括:字节统计单元,字节统计单元配置为接收经过lz77编码后的数据并统计接收数据的总量。经过lz77编码后的数据包括字符类型的数据(literal)、长度类型的数据(length)和距离类型的数据(distance),每种数据的大小为1个字节。字节统计单元配置为接收上述的数据,并且将接收数据的总量设定为32768个字节(即每次数据压缩量为32kb),每次向频率统计单元发送的数据量不超过8个字节,可以设计多个判断电路同时对数据流的每个byte进行判断,获取本次输入数据的有效个数,每个数据的到小都为1个字节,因此在到达32kb边界时需要数据流控制模块判断是否还接收数据,以及还需要接收几个字节的数据。字节统计模块还需要向后方的电路(单元)发送数据,每次发送的数据都为8个,在最后一次发送数据时,根据情况的不同可能出现小于8个字节的情况。
23.还包括频率统计单元,频率统计单元包括频率分配模块和频率组合模块,频率分配模块配置为接收字节统计单元发送的数据,并统计数据中每个类型的字节出现的频率,频率组合模块配置为将频率分配模块统计出的频率进行累加。如图2所示,频率统计单元包括八个相同的频率分配模块,每个频率分配模块分别接收字节统计单元发送的数据中的一个字节,即每个频率分配模块接收字节统计单元发送的8个字节数据中的一个字节,每个频率分配模块包括若干组频率划分单元,频率划分单元包括累加器,累加器的一个输入端接收字节,计数器,计数器的输入端连接到累加器的输出端,输出端连接到累加器的另一个输入端。频率分配模块配置为根据接收到的字节的类型和字节在deflate标准协议中映射的值在对应的频率划分单元中进行计数,每个频率分配模块中的liter0频率划分单元至liter255频率划分单元统计字符类型的数据出现的频率,len0频率划分单元至len28频率划分单元统计长度类型的数据出现的频率,dist0频率划分单元至dist29频率划分单元统计距离类型的数据出现的频率,频率分配模块配置为接收到字节统计单元发送的数据中的一个字节后,判断字节的类型和字节在deflate标准协议中映射的值的大小,根据字节的类型和字节映射的值的大小将该字节发送到字节的类型和映射的值的大小对应的频率划分单元的累加器的输入端,例如,当字符a(一个字节)进入到第一个频率分配模块中时,频率分配模块首先判断字符a为哪种类型的数据,判断出a为字符类型的数据,再判断字符a在deflate标准协议(deflate compressed data format specification,压缩数据格式规范)中映射的值的大小,字符a映射值的大小为90,因此第一个频率分配模块将该字符分配到liter90频率划分单元中,在该单元中进行计数,其他类型的字符计数的规则相同。频率统计单元包括频率组合模块,频率组合模块由若干个加法器构成,加法器的数量与一个频率分配模块中的频率划分单元的数量相同,每个加法器的输入端分别连接八个频率分配模块中相同的频率划分单元的输出端,输出端连接到统计器的输入端,统计器的输出端输出每个字符的频率。也就是说,每个加法器的输入端都连接8个频率划分单元的输出端,并且8个频率划分单元是相同的,即八个频率分配模块中的liter0频率划分单元连接到一个加法器,八个频率分配模块中的liter1频率划分单元连接到一个加法器,依次类推,通过加法器后就可以得到这些数据中所有字符出现的频率。
24.还包括数据流控制单元,数据流控制单元配置为接收字节统计单元发送的数据,
并根据字节统计单元统计的接收数据的总量和字节统计单元发送数据的量和类型控制字节统计单元接收数据。数据流控制单元判断字节统计单元接收到的数据的总量与待接收的数据量的和是否大于32768个字节,即判断接收的数据量是否会超过32kb的边界,如果判断出字节统计单元接收到的数据的总量与待接收的数据量的和小于32768个字节,数据流控制单元控制字节统计单元接收全部待接收的数据量。如果判断出字节统计单元接收到的数据的总量与待接的数据量的和大于等于32768个字节,数据流控制单元判断字节统计单元接收的数据的总量达到32768个字节时第32768个字节的类型,如果判断出第32768个字节的类型不为长度类型的数据,数据流控制单元控制字节统计单元只接收到第32768个字节的数据量。如果判断出字节统计单元接收的数据的总量达到32768字节时第32768个字节的类型为长度类型的数据,数据流控制单元控制字节统计单元接收到第32768个字节并接收第32768个字节后的两个字节的数据量,因为长度类型的数据后面两位是距离类型的数据,因此在达到32768个字节边界时,如果第32768个字节是长度类型的数据,那么也需要接收后两位距离类型的数据。
25.本发明的装置可并行处理8 byte数据,并实现三级流水。对输入的8byte 数据按字节判断数据类型(literal/length/distance)后,进行区间映射和频率统计。对literal类型的数据将其映射到闭区间[0, 255]对应的区间码上,对 length类型的数据将其映射到闭区间[0,28]对应的区间码上,对 distance 类型的数据将其映射到闭区间[0, 29]对应的区间码上,结束标志在256号区间码上。每个时钟周期对分别对byte0~byte7落在对应的区间码的计数器进行加一操作,统计出每个字节对应的各区间码出现的频率。当统计结束时,最后将 byte0~byte7对应的区间码计数器按照相同的区间码相加,统计出 literal、length和distance最终的各字符出现频率。本发明设计一种适合deflate格式huffman压缩编码的并行多流水设计字符统计装置,多级流水结构可以完成对输入的数据流的并行处理,这种多级流水的设计可以很好的发挥硬件的计算性能。同时本发明针对统计过程在32kb边界的特殊情况,给出了一种硬件解决方案,并且该方案可以扩展到8kb、16kb、24kb等不同的边界解决方案,说明书中的32768个字节是32kb代表的字节数(32*1024),也就是以32kb为实施例进行描述的,因此32768个字节的数据是可以根据预设值进行改变的,如果预设值为16kb,则是16384个字节。
[0026]
通过本发明的技术方案,能够提升整个压缩系统的吞吐率,能够最大限度发挥硬件的并行计算的特点,提升硬件电路的效率,该装置具有扩展性,通过传参的方式可以支持不同的统计数量。
[0027]
在本发明的一个优选实施例中,lz77编码后的数据包括字符类型的数据、长度类型的数据和距离类型的数据,每种数据的大小为1个字节。
[0028]
在本发明的一个优选实施例中,频率统计单元包括:八个相同的频率分配模块,每个频率分配模块分别接收字节统计单元发送的数据中的一个字节,每个频率分配模块包括若干组频率划分单元,频率分配模块配置为根据接收到的字节的类型和字节在deflate标准协议中映射的值在对应的频率划分单元中进行计数;频率分配模块配置为根据接收到的字节的类型和字节在deflate标准协议中映射的值在对应的频率划分单元中进行计数,每个频率分配模块中的liter0频率划分单元至liter255频率划分单元统计字符类型的数据出现的频率,len0频率划分单元至len28频率
划分单元统计长度类型的数据出现的频率,dist0频率划分单元至dist29频率划分单元统计距离类型的数据出现的频率,频率分配模块配置为接收到字节统计单元发送的数据中的一个字节后,判断字节的类型和字节在deflate标准协议中映射的值的大小,根据字节的类型和字节映射的值的大小将该字节发送到字节的类型和映射的值的大小对应的频率划分单元的累加器的输入端,例如,当字符a(一个字节)进入到第一个频率分配模块中时,频率分配模块首先判断字符a为哪种类型的数据,判断出a为字符类型的数据,再判断字符a在deflate标准协议(deflate compressed data format specification,压缩数据格式规范)中映射的值的大小,字符a映射值的大小为90,因此第一个频率分配模块将该字符分配到liter90频率划分单元中,在该单元中进行计数,其他类型的字符计数的规则相同。
[0029]
频率组合模块,频率组合模块由若干个加法器构成,加法器的数量与一个频率分配模块中的频率划分单元的数量相同,每个加法器的输入端分别连接八个频率分配模块中相同的频率划分单元的输出端,输出端连接到统计器的输入端,统计器的输出端输出每个字符的频率。也就是说,每个加法器的输入端都连接8个频率划分单元的输出端,并且8个频率划分单元是相同的,即八个频率分配模块中的liter0频率划分单元连接到一个加法器,八个频率分配模块中的liter1频率划分单元连接到一个加法器,依次类推,通过加法器后就可以得到这些数据中所有字符出现的频率。
[0030]
在本发明的一个优选实施例中,频率划分单元包括:累加器,累加器的一个输入端接收字节;计数器,计数器的输入端连接到累加器的输出端,输出端连接到累加器的另一个输入端。
[0031]
在本发明的一个优选实施例中,每个频率分配模块中的liter0频率划分单元至liter255频率划分单元统计字符类型的数据出现的频率,len0频率划分单元至len28频率划分单元统计长度类型的数据出现的频率,dist0频率划分单元至dist29频率划分单元统计距离类型的数据出现的频率。
[0032]
在本发明的一个优选实施例中,频率分配模块配置为接收到字节统计单元发送的数据中的一个字节后,判断字节的类型和字节在deflate标准协议中映射的值的大小,根据字节的类型和字节映射的值的大小将该字节发送到字节的类型和映射的值的大小对应的频率划分单元的累加器的输入端。
[0033]
在本发明的一个优选实施例中,字节统计单元还配置为将接收数据的总量设定为32768个字节,每次向频率统计单元发送的数据量不超过8个字节。
[0034]
在本发明的一个优选实施例中,数据流控制单元配置为判断字节统计单元接收到的数据的总量与待接收的数据量的和是否大于32768个字节(预设数量个字节),如果判断出字节统计单元接收到的数据的总量与待接收的数据量的和小于32768个字节,数据流控制单元控制字节统计单元接收全部待接收的数据量。
[0035]
在本发明的一个优选实施例中,数据流控制单元配置为判断字节统计单元接收到的数据的总量与待接收的数据量的和是否大于32768个字节,如果判断出字节统计单元接收到的数据的总量与待接的数据量的和大于等于32768个字节,数据流控制单元判断字节统计单元接收的数据的总量达到32768个字节时第32768个字节的类型,如果判断出第32768个字节的类型不为长度类型的数据,数据流控制单元控制字节统计单元只接收到第
32768个字节的数据量。
[0036]
在本发明的一个优选实施例中,数据流控制单元配置为如果判断出字节统计单元接收的数据的总量达到32768字节时第32768个字节的类型为长度类型的数据,数据流控制单元控制字节统计单元接收到第32768个字节并接收第32768个字节后的两个字节的数据量。
[0037]
本发明基于deflate格式提出了一种字符频次统计装置,对于传统的deflate格式的统计方式,本发明具有以下优势:1、设计了一种字符频次统计并行多级流水处理电路,并行处理8byte数据,从而可以提升整个压缩系统的吞吐率。
[0038]
2、可以实时处理数据流,并且在一个时钟周期可以输出本次输入数据的类型以及有效byte数量,可以最大限度发挥硬件的并行计算的特点,提升硬件电路的效率。
[0039]
3、对于基于deflate格式下,本发明针对统计边界提出一种硬件解决方案,并且具有扩展性,通过传参的方式,可以支持不同的统计数量,如:8kb、16kb、24kb,具有推广性。
[0040]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
[0041]
上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1