CN108933599A - 一种霍夫曼编码实现方法、系统、设备及计算机存储介质 - Google Patents
一种霍夫曼编码实现方法、系统、设备及计算机存储介质 Download PDFInfo
- Publication number
- CN108933599A CN108933599A CN201810940547.8A CN201810940547A CN108933599A CN 108933599 A CN108933599 A CN 108933599A CN 201810940547 A CN201810940547 A CN 201810940547A CN 108933599 A CN108933599 A CN 108933599A
- Authority
- CN
- China
- Prior art keywords
- coding
- encoded
- document
- data
- huffman
- 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.)
- Granted
Links
Classifications
-
- 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)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请公开了一种霍夫曼编码实现方法、系统、设备及计算机存储介质,应用于FPGA中,其中该方法包括:获取待编码文档;按照设定的并行数对待编码文档进行霍夫曼编码,得到霍夫曼编码文档。本申请公开的一种霍夫曼编码实现方法,FPGA按照设定的并行数对待编码文档进行霍夫曼编码,得到霍夫曼编码文档,由于FPGA可并行对待编码文档进行霍夫曼编码,与现有技术中CPU串行对待编码文档进行霍夫曼编码相比,并行处理速度比串行处理速度快,所以本申请可以在一定程度上提高编码速度。本申请公开的一种霍夫曼编码实现系统、设备及计算机可读存储介质也解决了相应技术问题。
Description
技术领域
本申请涉及电子信息技术领域,更具体地说,涉及一种霍夫曼编码实现方法、系统、设备及计算机存储介质。
背景技术
霍夫曼编码(Huffman)是一种以最优二叉树为核心的无损压缩编码方式,在图像处理、文件传真、数学计算等领域有广泛应用。霍夫曼编码使用变长编码表对源符号进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。
现有的一种霍夫曼编码实现方法是借助CPU(Central Processing Unit,中央处理器)串行对待编码文档进行霍夫曼编码。
然而,随着科技的发展,人们对霍夫曼编码的编码速度有了更高的要求,现有的借助CPU来实现霍夫曼编码的方法的编码速度已不能满足要求。
综上所述,如何提高霍夫曼编码的编码速度是目前本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种霍夫曼编码实现方法,其能在一定程度上解决如何提高霍夫曼编码的编码速度的技术问题。本申请还提供了一种霍夫曼编码实现方法、系统、设备及计算机可读存储介质。
为了实现上述目的,本申请提供如下技术方案:
一种霍夫曼编码实现方法,应用于FPGA中,包括:
获取待编码文档;
按照设定的并行数对所述待编码文档进行霍夫曼编码,得到霍夫曼编码文档。
优选的,所述获取待编码文档,包括:
获取CPU发送的存储在所述FPGA的缓存空间中的所述待编码文档。
优选的,所述得到霍夫曼编码文档之后,还包括:
发送所述霍夫曼编码文档至所述缓存空间,以使所述CPU在所述缓存空间中读取所述霍夫曼编码文档。
优选的,所述按照设定的并行数对所述待编码文档进行霍夫曼编码之前,还包括:
获取所述CPU发送的存储在所述缓存空间中的Huffman码表,所述Huffman码表中包括所述待编码文档中每个待编码数据所属的区间对应的区间编码、每个所述待编码数据在自身所属的区间里的编码;
所述按照设定的并行数对所述待编码文档进行霍夫曼编码的过程中,包括:
对于进行霍夫曼编码的任一所述待编码数据,在所述Huffman码表中确定所述待编码数据所属的区间对应的区间编码,及所述待编码数据在自身所属的区间里的编码;
按照预设格式将所述待编码数据所属的区间对应的区间编码,及所述待编码数据在自身所属的区间里的编码进行组合,得到所述待编码数据的霍夫曼编码数据。
优选的,所述按照设定的并行数对所述待编码文档进行霍夫曼编码,包括:
获取设定的并行数;
从所述待编码文档中选取一组待编码数据,所述一组待编码数据中包含的所述待编码数据的数量小于等于所述并行数;
同时对所述一组待编码数据中的每一个所述待编码数据进行霍夫曼编码,得到所述一组待编码数据的编码结果;
判断是否完成对所述待编码文档的霍夫曼编码,若否,则返回执行所述从所述待编码文档中选取一组待编码数据的步骤,若是,则结束。
优选的,所述得到所述一组待编码数据的编码结果之后,所述判断是否完成对所述待编码文档的霍夫曼编码之前,还包括:
判断所述编码结果的长度与第二局部存储空间中缓存的编码结果的长度的和是否大于第一局部存储空间的存储长度,若是,则将所述编码结果拆分为两部分,第一部分所述编码结果的长度为所述第一局部存储空间的存储长度与所述第二局部存储空间中缓存的编码结果的长度的差值,第二部分所述编码结果的长度为所述编码结果的长度与所述第一部分所述编码结果的长度的差值,将所述第一部分所述编码结果并上所述第二局部存储空间中缓存的编码结果一起缓存至所述第一局部存储空间,将第二部分所述编码结果缓存至所述第二局部存储空间,将所述第一局部存储空间中缓存的编码结果转存至全局存储空间中;若否,则将所述编码结果存储至所述第二局部存储空间中;
所述判断是否完成对所述待编码文档的霍夫曼编码之后,还包括:
若完成对所述待编码文档的霍夫曼编码,则将所述第二局部存储空间中缓存的编码结果转存至所述全局存储空间中。
优选的,所述并行数包括16。
一种霍夫曼编码实现系统,应用于FPGA中,包括:
第一获取模块,用于获取待编码文档;
编码模块,用于按照设定的并行数对所述待编码文档进行霍夫曼编码,得到霍夫曼编码文档。
一种霍夫曼编码实现设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一所述的霍夫曼编码方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述的霍夫曼编码实现方法的步骤。
本申请提供的一种霍夫曼编码实现方法,应用于FPGA中,获取待编码文档;按照设定的并行数对待编码文档进行霍夫曼编码,得到霍夫曼编码文档。本申请提供的一种霍夫曼编码实现方法,FPGA按照设定的并行数对待编码文档进行霍夫曼编码,得到霍夫曼编码文档,由于FPGA可并行对待编码文档进行霍夫曼编码,与现有技术中CPU串行对待编码文档进行霍夫曼编码相比,并行处理速度比串行处理速度快,所以本申请可以在一定程度上提高编码速度。本申请提供的一种霍夫曼编码实现系统、设备及计算机可读存储介质也解决了相应技术问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种霍夫曼编码实现方法的第一流程图;
图2为实际应用中本申请实施例提供的一种霍夫曼编码实现方法的第二流程图;
图3为本申请实施例提供的一种霍夫曼编码实现系统的结构示意图;
图4为本申请实施例提供的一种霍夫曼编码实现设备的结构示意图;
图5为本申请实施例提供的一种霍夫曼编码实现设备的另一结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
现有的一种霍夫曼编码实现方法是借助CPU(Central Processing Unit,中央处理器)来实现霍夫曼编码。然而,随着科技的发展,人们对霍夫曼编码的编码速度有了更高的要求,现有的借助CPU来实现霍夫曼编码的方法的编码速度已不能满足要求。而本申请提供的一种霍夫曼编码实现方法可以提高霍夫曼编码的编码速度。
请参阅图1,图1为本申请实施例提供的一种霍夫曼编码实现方法的第一流程图。
本申请实施例提供的一种霍夫曼编码实现方法,应用于FPGA(Field-Programmable Gate Array,现场可编程门阵列)中,可以包括以下步骤:
步骤S101:获取待编码文档。
实际应用中,FPGA先获取待编码文档,待编码文档的内容及类型等可以根据实际需要确定。具体应用场景中,FPGA可以直接接收上传端口传输的待编码文档,也可以读取存储在自身的缓存空间中的待编码文档,缓存空间中的待编码文档可以是CPU预先存储的。
步骤S102:按照设定的并行数对待编码文档进行霍夫曼编码,得到霍夫曼编码文档。
相应的,FPGA在获取待编码文档后,可以按照设定的并行数对待编码文档进行霍夫曼编码,得到霍夫曼编码文档。并行数可以是预先设定的,也可以是实时设定的,本申请在此不做具体限定,此外,还可以通过CPU来设置FPGA的并行数,并行数的具体数值可以根据实际需要灵活确定。在FPGA获取CPU发送的存储在FPGA的缓存空间中的待编码文档的情况下,FPGA在得到霍夫曼编码文档之后,还可以发送霍夫曼编码文档至缓存空间,以使CPU在缓存空间中读取霍夫曼编码文档。
不难理解,FPGA按照设定的并行数对待编码文档进行霍夫曼编码,便意味着需要在FPGA中实现霍夫曼编码的功能。实际应用中,为了降低本申请提供的一种霍夫曼编码实现方法中FPGA的服务压力,FPGA在按照设定的并行数对待编码文档进行霍夫曼编码之前,还可以获取CPU发送的存储在缓存空间中的Huffman码表,Huffman码表中包括待编码文档中每个待编码数据所属的区间对应的区间编码、每个待编码数据在自身所属的区间里的编码;相应的,FPGA按照设定的并行数对待编码文档进行霍夫曼编码的过程中,对于进行霍夫曼编码的任一待编码数据,在Huffman码表中确定待编码数据所属的区间对应的区间编码,及待编码数据在自身所属的区间里的编码;按照预设格式将待编码数据所属的区间对应的区间编码,及待编码数据在自身所属的区间里的编码进行组合,得到待编码数据的霍夫曼编码数据。本实施例中,FPGA只负责根据Huffman码表对待编码数据进行霍夫曼编码,可以在一定程度上降低FPGA的服务压力,相应的,CPU负责Huffman码表的制作,CPU制作Huffman码表的过程可以如下:CPU统计待编码文档中每个待编码数据的出现频率,根据Huffman编码原则,按照每个待编码数据的出现频率构建Huffman树,确定每个待编码数据在Huffman树中所属的区间对应的区间编码及每个待编码数据在自身所属的区间里的编码,根据每个待编码数据在Huffman树中的所属的区间对应的区间编码及每个待编码数据在自身所属的区间里的编码构建Huffman码表,Huffman码表中还可以根据实际需要添加其他变量,本申请在此不做具体限定。在特定情况下,FPGA还可以代替CPU执行制作Huffman码表的过程,本申请在此不做具体限定。在CPU参与FPGA对待编码文档进行霍夫曼编码时,还可以借助CPU实现对FPGA的控制,比如借助CPU控制FPGA开始执行对待编码文档进行霍夫曼编码的操作,借助CPU控制FPGA暂停对待编码文档进行霍夫曼编码的操作等。
实际应用中,本申请实施例提供的一种霍夫曼编码实现方法可以采用如下方式实现:可以采用OpenCL(Open Computing Language,开放运算语言)高级语言生成在CPU上运行的主机端程序,以及面向FPGA的Kernel程序,然后,采用GCC(GNU Compiler Collection,GNU编译器套件)编译器对主机端程序进行编译,生成可在CPU上执行的可执行程序文件;采用Alteration SDK for OpenCL(AOC,OpenCL改造SDK)高层次综合工具对Kernel程序文件进行编译综合,生成可在PFGA上运行的AOCX文件;最后,在CPU上运行主机端程序,调用FPGA上的解压缩核心算法硬件电路进行硬件加速,CPU和FPGA之间采用PCI-E接口连接,进行数据通信,采用FPGA开发板上的DDR3内存作为数据缓存Buffer。主机端程序及Kernel程序所实现的具体功能可以参阅本申请相应实施例,本申请在此不再赘述。
实际应用中,FPGA按照设定的并行数对待编码文档进行霍夫曼编码的过程可以具体包括:获取设定的并行数;从待编码文档中选取一组待编码数据,一组待编码数据中包含的待编码数据的数量小于等于并行数;同时对一组待编码数据中的每一个待编码数据进行霍夫曼编码,得到一组待编码数据的编码结果;判断是否完成对待编码文档的霍夫曼编码,若否,则返回执行从待编码文档中选取一组待编码数据的步骤,若是,则结束。并行数可以为16等。在并行数为16的情况下,FPGA可以每次从待编码文档中取出16个待编码数据进行霍夫曼编码,具体的,可以将当前要编码的16个待编码数据在待编码文档中的存储位置索引存入编码候选数组bitpos数组中,bitpos数组中以data[0]至data[VEC-1]来存储每一个待编码数据对应的存储位置索引,也即data[i]存放相应的待编码数据在待编码文档中的存储位置索引,此时,FPGA只需对bitpos数组中的每个data[i]代表的待编码数据进行编码即可,相应的,FPGA完成对bitpos数据中每个data[i]完成霍夫曼编码后,bitpos数组中的待编码数据便已完成编码,此时可以重复将当前要编码的16个待编码数据在待编码文档中的存储位置索引存入bitpos数组,及对bitpos数组中的每个data[i]代表的待编码数据进行编码的操作,即可完成对待编码文档的编码。
实际应用中,为了提高FPGA的并行速度,FPGA得到一组待编码数据的编码结果之后,判断是否完成对待编码文档的霍夫曼编码之前,还可以包括:判断编码结果的长度与第二局部存储空间中缓存的编码结果的长度的和是否大于存储编码结果的第一局部存储空间的存储长度,若是,则将编码结果拆分为两部分,第一部分编码结果的长度为第一局部存储空间的存储长度与第二局部存储空间中缓存的编码结果的长度的差值,第二部分编码结果的长度为编码结果的长度与第一部分编码结果的长度的差值,将第一部分编码结果并上第二局部存储空间中缓存的编码结果一起缓存至第一局部存储空间,将第二部分编码结果缓存至第二局部存储空间,将第一局部存储空间中缓存的编码结果转存至全局存储空间中;若否,则将编码结果存储至第二局部存储空间中;判断是否完成对待编码文档的霍夫曼编码之后,若完成对待编码文档的霍夫曼编码,则将第二局部存储空间中缓存的编码结果转存至全局存储空间中。由于FPGA同时对并行数个待编码数据进行编码,可能出现并行数个待编码数据的编码结果过大的情况,此时,若将该并行数个待编码数据的编码结果存入一个存储空间中的话,由于编码结果的长度大于存储空间的长度,存储空间只能容纳部分编码结果,待存储空间将该部分编码结果转存后,才可以存储另一部分编码结果,也即另一部分编码结果会等待部分编码结果转存所需的时长,总体耗费时长为两次或多次编码结果转存所需的时长,耗时较多,从而影响下一组并行数个待编码数据的编码效率,为了不影响下一组待编码数据的编码效率,FPGA可以将编码结果分开存储在多个存储空间中,此时,FPGA可并行将编码结果存入多个存储空间,并行将多个存储空间中的编码结果转存,理论上只需一次编码结果转存所需的时长即可,可以在一定程度上提高编码效率。具体应用场景中,第一局部存储空间中可以缓存编码结果中高32位的编码结果,第二局部存储空间中可以缓存编码结果中低32位的编码结果等。
本申请提供的一种霍夫曼编码实现方法,应用于FPGA中,获取待编码文档;按照设定的并行数对待编码文档进行霍夫曼编码,得到霍夫曼编码文档。本申请提供的一种霍夫曼编码实现方法,FPGA按照设定的并行数对待编码文档进行霍夫曼编码,得到霍夫曼编码文档,由于FPGA可并行对待编码文档进行霍夫曼编码,与现有技术中CPU串行对待编码文档进行霍夫曼编码相比,并行处理速度比串行处理速度快,所以本申请可以在一定程度上提高编码速度。
请参阅图2,图2为实际应用中本申请实施例提供的一种霍夫曼编码实现方法的第二流程图。
实际应用中本申请实施例提供的一种霍夫曼编码实现方法可以包括如下步骤:
步骤S201:获取CPU发送的存储在FPGA的缓存空间中的待编码文档。
步骤S202:获取CPU发送的存储在缓存空间中的Huffman码表,Huffman码表中包括待编码文档中每个待编码数据所属的区间对应的区间编码、每个待编码数据在自身所属的区间里的编码。
步骤S203:从待编码文档中选取一组待编码数据加载至bitpos数组中,一组待编码数据中包含的待编码数据的数量小于等于并行数。
步骤S204:对于bitpos数组中的每一个待编码数据,同时在Huffman码表中确定待编码数据所属的区间对应的区间编码,及待编码数据在自身所属的区间里的编码。
步骤S205:按照预设格式将待编码数据所属的区间对应的区间编码,及待编码数据在自身所属的区间里的编码进行组合,得到待编码数据的霍夫曼编码数据,直至得到一组待编码数据的编码结果。
步骤S206:判断编码结果的长度与第二局部存储空间中缓存的编码结果的长度的和是否大于第一局部存储空间的存储长度,若是,则执行步骤S207,若否,则执行步骤S208。
步骤S207:将编码结果拆分为两部分,第一部分编码结果的长度为第一局部存储空间的存储长度与第二局部存储空间中缓存的编码结果的长度的差值,第二部分编码结果的长度为编码结果的长度与第一部分编码结果的长度的差值,将第一部分编码结果并上第二局部存储空间中缓存的编码结果一起缓存至第一局部存储空间,将第二部分编码结果缓存至第二局部存储空间,将第一局部存储空间中缓存的编码结果转存至全局存储空间中,执行步骤S209。
步骤S208:将编码结果存储至第二局部存储空间中,执行步骤S209。
步骤S209:判断是否完成对待编码文档的霍夫曼编码,若否,则返回步骤S203,若是,则执行步骤S210。
步骤S210:将第二局部存储空间中缓存的编码结果转存至全局存储空间中。
步骤S211:发送霍夫曼编码文档至缓存空间,以使CPU在缓存空间中读取霍夫曼编码文档。
本申请还提供了一种霍夫曼编码实现系统,其具有本申请实施例提供的一种霍夫曼编码实现方法具有的对应效果。请参阅图3,图3为本申请实施例提供的一种霍夫曼编码实现系统的结构示意图。
本申请实施例提供的一种霍夫曼编码实现系统,应用于FPGA中,可以包括:
第一获取模块101,用于获取待编码文档;
编码模块102,用于按照设定的并行数对待编码文档进行霍夫曼编码,得到霍夫曼编码文档。
本申请实施例提供的一种霍夫曼编码实现系统中,第一获取模块可以包括:
第一获取单元,用于获取CPU发送的存储在FPGA的缓存空间中的待编码文档。
本申请实施例提供的一种霍夫曼编码实现系统中,还可以包括:
发送模块,用于编码模块得到霍夫曼编码文档之后,发送霍夫曼编码文档至缓存空间,以使CPU在缓存空间中读取霍夫曼编码文档。
本申请实施例提供的一种霍夫曼编码实现系统中,还可以包括:
第二获取模块,用于编码模块按照设定的并行数对待编码文档进行霍夫曼编码之前,获取CPU发送的存储在缓存空间中的Huffman码表,Huffman码表中包括待编码文档中每个待编码数据所属的区间对应的区间编码、每个待编码数据在自身所属的区间里的编码;
编码模块可以包括:
确定单元,用于对于进行霍夫曼编码的任一待编码数据,在Huffman码表中确定待编码数据所属的区间对应的区间编码,及待编码数据在自身所属的区间里的编码;
组合单元,用于按照预设格式将待编码数据所属的区间对应的区间编码,及待编码数据在自身所属的区间里的编码进行组合,得到待编码数据的霍夫曼编码数据。
本申请实施例提供的一种霍夫曼编码实现系统中,编码模块可以包括:
第二获取单元,用于获取设定的并行数;
选取单元,用于从待编码文档中选取一组待编码数据,一组待编码数据中包含的待编码数据的数量小于等于并行数;
编码单元,用于同时对一组待编码数据中的每一个待编码数据进行霍夫曼编码,得到一组待编码数据的编码结果;
第一判断单元,用于判断是否完成对待编码文档的霍夫曼编码,若否,则提示选取单元执行从待编码文档中选取一组待编码数据的步骤,若是,则结束。
本申请实施例提供的一种霍夫曼编码实现系统中,还可以包括:
第一判断模块,用于编码单元得到一组待编码数据的编码结果之后,第一判断单元判断是否完成对待编码文档的霍夫曼编码之前,判断编码结果的长度与第二局部存储空间中缓存的编码结果的长度的和是否大于存储编码结果的第一局部存储空间的存储长度,若是,则将编码结果拆分为两部分,第一部分编码结果的长度为第一局部存储空间的存储长度与第二局部存储空间中缓存的编码结果的长度的差值,第二部分编码结果的长度为编码结果的长度与第一部分编码结果的长度的差值,将第一部分编码结果并上第二局部存储空间中缓存的编码结果一起缓存至第一局部存储空间,将第二部分编码结果缓存至第二局部存储空间,将第一局部存储空间中缓存的编码结果转存至全局存储空间中;若否,则将编码结果存储至第二局部存储空间中;
转存模块,用于第一判断单元判定完成对待编码文档的霍夫曼编码后,将第二局部存储空间中缓存的编码结果转存至全局存储空间中。
本申请实施例提供的一种霍夫曼编码实现系统中,并行数包括16。
本申请还提供了一种霍夫曼编码实现设备及计算机可读存储介质,其均具有本申请实施例提供的一种霍夫曼编码实现方法具有的对应效果。请参阅图4,图4为本申请实施例提供的一种霍夫曼编码实现设备的结构示意图。
本申请实施例提供的一种霍夫曼编码实现设备,包括存储器201及处理器202,存储器201中存储有计算机程序,处理器202执行存储器201中存储的计算机程序时实现如下步骤:
获取待编码文档;
按照设定的并行数对待编码文档进行霍夫曼编码,得到霍夫曼编码文档。
本申请实施例提供的一种霍夫曼编码实现设备,包括存储器201及处理器202,存储器201中存储有计算机子程序,处理器202执行存储器201中存储的计算机子程序时具体实现如下步骤:获取CPU发送的存储在FPGA的缓存空间中的待编码文档。
本申请实施例提供的一种霍夫曼编码实现设备,包括存储器201及处理器202,存储器201中存储有计算机子程序,处理器202执行存储器201中存储的计算机子程序时具体实现如下步骤:得到霍夫曼编码文档之后,发送霍夫曼编码文档至缓存空间,以使CPU在缓存空间中读取霍夫曼编码文档。
本申请实施例提供的一种霍夫曼编码实现设备,包括存储器201及处理器202,存储器201中存储有计算机子程序,处理器202执行存储器201中存储的计算机子程序时具体实现如下步骤:按照设定的并行数对待编码文档进行霍夫曼编码之前,获取CPU发送的存储在缓存空间中的Huffman码表,Huffman码表中包括待编码文档中每个待编码数据所属的区间对应的区间编码、每个待编码数据在自身所属的区间里的编码;对于进行霍夫曼编码的任一待编码数据,在Huffman码表中确定待编码数据所属的区间对应的区间编码,及待编码数据在自身所属的区间里的编码;按照预设格式将待编码数据所属的区间对应的区间编码,及待编码数据在自身所属的区间里的编码进行组合,得到待编码数据的霍夫曼编码数据。
本申请实施例提供的一种霍夫曼编码实现设备,包括存储器201及处理器202,存储器201中存储有计算机子程序,处理器202执行存储器201中存储的计算机子程序时具体实现如下步骤:获取设定的并行数;从待编码文档中选取一组待编码数据,一组待编码数据中包含的待编码数据的数量小于等于并行数;同时对一组待编码数据中的每一个待编码数据进行霍夫曼编码,得到一组待编码数据的编码结果;判断是否完成对待编码文档的霍夫曼编码,若否,则返回执行从待编码文档中选取一组待编码数据的步骤,若是,则结束。
本申请实施例提供的一种霍夫曼编码实现设备,包括存储器201及处理器202,存储器201中存储有计算机子程序,处理器202执行存储器201中存储的计算机子程序时具体实现如下步骤:得到一组待编码数据的编码结果之后,判断是否完成对待编码文档的霍夫曼编码之前,判断编码结果的长度与第二局部存储空间中缓存的编码结果的长度的和是否大于存储编码结果的第一局部存储空间的存储长度,若是,则将编码结果拆分为两部分,第一部分编码结果的长度为第一局部存储空间的存储长度与第二局部存储空间中缓存的编码结果的长度的差值,第二部分编码结果的长度为编码结果的长度与第一部分所述编码结果的长度的差值,将第一部分编码结果并上第二局部存储空间中缓存的编码结果一起缓存至第一局部存储空间,将第二部分编码结果缓存至第二局部存储空间,将第一局部存储空间中缓存的编码结果转存至全局存储空间中;若否,则将编码结果存储至第二局部存储空间中;判断是否完成对待编码文档的霍夫曼编码之后,若完成对待编码文档的霍夫曼编码,则将第二局部存储空间中缓存的编码结果转存至全局存储空间中。
本申请实施例提供的一种霍夫曼编码实现设备,包括存储器201及处理器202,存储器201中存储有计算机子程序,处理器202执行存储器201中存储的计算机子程序时具体实现如下步骤:设置并行数为16。
请参阅图5,本申请实施例提供的另一种霍夫曼编码实现设备中还可以包括:与处理器202连接的输入端口203,用于传输外界输入的命令至处理器202;与处理器202连接的显示单元204,用于显示处理器202的处理结果至外界;与处理器202连接的通信模块205,用于实现霍夫曼编码实现设备与外界的通信。显示单元202可以为显示面板、激光扫描使显示器等;通信模块205所采用的通信方式包括但不局限于移动高清链接技术(HML)、通用串行总线(USB)、高清多媒体接口(HDMI)、无线连接:无线保真技术(WiFi)、蓝牙通信技术、低功耗蓝牙通信技术、基于IEEE802.11s的通信技术。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如下步骤:
获取待编码文档;
按照设定的并行数对待编码文档进行霍夫曼编码,得到霍夫曼编码文档。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现如下步骤:获取CPU发送的存储在FPGA的缓存空间中的待编码文档。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现如下步骤:得到霍夫曼编码文档之后,发送霍夫曼编码文档至缓存空间,以使CPU在缓存空间中读取霍夫曼编码文档。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现如下步骤:按照设定的并行数对待编码文档进行霍夫曼编码之前,获取CPU发送的存储在缓存空间中的Huffman码表,Huffman码表中包括待编码文档中每个待编码数据所属的区间对应的区间编码、每个待编码数据在自身所属的区间里的编码;对于进行霍夫曼编码的任一待编码数据,在Huffman码表中确定待编码数据所属的区间对应的区间编码,及待编码数据在自身所属的区间里的编码;按照预设格式将待编码数据所属的区间对应的区间编码,及待编码数据在自身所属的区间里的编码进行组合,得到待编码数据的霍夫曼编码数据。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现如下步骤:获取设定的并行数;从待编码文档中选取一组待编码数据,一组待编码数据中包含的待编码数据的数量小于等于并行数;同时对一组待编码数据中的每一个待编码数据进行霍夫曼编码,得到一组待编码数据的编码结果;判断是否完成对待编码文档的霍夫曼编码,若否,则返回执行从待编码文档中选取一组待编码数据的步骤,若是,则结束。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现如下步骤:得到一组待编码数据的编码结果之后,判断是否完成对待编码文档的霍夫曼编码之前,判断编码结果的长度与第二局部存储空间中缓存的编码结果的长度的和是否大于存储编码结果的第一局部存储空间的存储长度,若是,则将编码结果拆分为两部分,第一部分编码结果的长度为第一局部存储空间的存储长度与第二局部存储空间中缓存的编码结果的长度的差值,第二部分编码结果的长度为编码结果的长度与第一部分所述编码结果的长度的差值,将第一部分编码结果并上第二局部存储空间中缓存的编码结果一起缓存至第一局部存储空间,将第二部分编码结果缓存至第二局部存储空间,将第一局部存储空间中缓存的编码结果转存至全局存储空间中;若否,则将编码结果存储至第二局部存储空间中;判断是否完成对待编码文档的霍夫曼编码之后,若完成对待编码文档的霍夫曼编码,则将第二局部存储空间中缓存的编码结果转存至全局存储空间中。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机子程序,计算机子程序被处理器执行时具体实现如下步骤:设置并行数为16。
本申请所涉及的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
本申请实施例提供的一种霍夫曼编码实现系统、设备及计算机可读存储介质中相关部分的说明请参见本申请实施例提供的一种霍夫曼编码实现方法中对应部分的详细说明,在此不再赘述。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种霍夫曼编码实现方法,其特征在于,应用于FPGA中,包括:
获取待编码文档;
按照设定的并行数对所述待编码文档进行霍夫曼编码,得到霍夫曼编码文档。
2.根据权利要求1所述的方法,其特征在于,所述获取待编码文档,包括:
获取CPU发送的存储在所述FPGA的缓存空间中的所述待编码文档。
3.根据权利要求2所述的方法,其特征在于,所述得到霍夫曼编码文档之后,还包括:
发送所述霍夫曼编码文档至所述缓存空间,以使所述CPU在所述缓存空间中读取所述霍夫曼编码文档。
4.根据权利要求2所述的方法,其特征在于,所述按照设定的并行数对所述待编码文档进行霍夫曼编码之前,还包括:
获取所述CPU发送的存储在所述缓存空间中的Huffman码表,所述Huffman码表中包括所述待编码文档中每个待编码数据所属的区间对应的区间编码、每个所述待编码数据在自身所属的区间里的编码;
所述按照设定的并行数对所述待编码文档进行霍夫曼编码的过程中,包括:
对于进行霍夫曼编码的任一所述待编码数据,在所述Huffman码表中确定所述待编码数据所属的区间对应的区间编码,及所述待编码数据在自身所属的区间里的编码;
按照预设格式将所述待编码数据所属的区间对应的区间编码,及所述待编码数据在自身所属的区间里的编码进行组合,得到所述待编码数据的霍夫曼编码数据。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述按照设定的并行数对所述待编码文档进行霍夫曼编码,包括:
获取设定的并行数;
从所述待编码文档中选取一组待编码数据,所述一组待编码数据中包含的所述待编码数据的数量小于等于所述并行数;
同时对所述一组待编码数据中的每一个所述待编码数据进行霍夫曼编码,得到所述一组待编码数据的编码结果;
判断是否完成对所述待编码文档的霍夫曼编码,若否,则返回执行所述从所述待编码文档中选取一组待编码数据的步骤,若是,则结束。
6.根据权利要求5所述的方法,其特征在于,所述得到所述一组待编码数据的编码结果之后,所述判断是否完成对所述待编码文档的霍夫曼编码之前,还包括:
判断所述编码结果的长度与第二局部存储空间中缓存的编码结果的长度的和是否大于第一局部存储空间的存储长度,若是,则将所述编码结果拆分为两部分,第一部分所述编码结果的长度为所述第一局部存储空间的存储长度与所述第二局部存储空间中缓存的编码结果的长度的差值,第二部分所述编码结果的长度为所述编码结果的长度与所述第一部分所述编码结果的长度的差值,将所述第一部分所述编码结果并上所述第二局部存储空间中缓存的编码结果一起缓存至所述第一局部存储空间;将第二部分所述编码结果缓存至所述第二局部存储空间,将所述第一局部存储空间中缓存的编码结果转存至全局存储空间中;若否,则将所述编码结果存储至所述第二局部存储空间中;
所述判断是否完成对所述待编码文档的霍夫曼编码之后,还包括:
若完成对所述待编码文档的霍夫曼编码,则将所述第二局部存储空间中缓存的编码结果转存至所述全局存储空间中。
7.根据权利要求4所述的方法,其特征在于,所述并行数包括16。
8.一种霍夫曼编码实现系统,其特征在于,应用于FPGA中,包括:
第一获取模块,用于获取待编码文档;
编码模块,用于按照设定的并行数对所述待编码文档进行霍夫曼编码,得到霍夫曼编码文档。
9.一种霍夫曼编码实现设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的霍夫曼编码方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的霍夫曼编码实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810940547.8A CN108933599B (zh) | 2018-08-17 | 2018-08-17 | 一种霍夫曼编码实现方法、系统、设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810940547.8A CN108933599B (zh) | 2018-08-17 | 2018-08-17 | 一种霍夫曼编码实现方法、系统、设备及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108933599A true CN108933599A (zh) | 2018-12-04 |
CN108933599B CN108933599B (zh) | 2021-10-29 |
Family
ID=64446022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810940547.8A Active CN108933599B (zh) | 2018-08-17 | 2018-08-17 | 一种霍夫曼编码实现方法、系统、设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108933599B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110620637A (zh) * | 2019-09-26 | 2019-12-27 | 上海仪电(集团)有限公司中央研究院 | 一种基于fpga的数据解压装置及方法 |
CN113746487A (zh) * | 2021-08-25 | 2021-12-03 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据压缩方法、装置及电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7737870B1 (en) * | 2007-09-04 | 2010-06-15 | Nortel Networks Limited | Bit-stream huffman coding for data compression |
CN101778278A (zh) * | 2008-12-30 | 2010-07-14 | 东部高科股份有限公司 | 图像编码器和图像编码方法 |
CN103326730A (zh) * | 2013-06-06 | 2013-09-25 | 清华大学 | 数据并行压缩方法 |
US9258013B1 (en) * | 2015-09-01 | 2016-02-09 | Rockwell Collins, Inc. | Data compression with Huffman code on multicore processors |
CN107404654A (zh) * | 2017-08-23 | 2017-11-28 | 郑州云海信息技术有限公司 | 一种jpeg图像解压缩方法、装置及平台 |
-
2018
- 2018-08-17 CN CN201810940547.8A patent/CN108933599B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7737870B1 (en) * | 2007-09-04 | 2010-06-15 | Nortel Networks Limited | Bit-stream huffman coding for data compression |
CN101778278A (zh) * | 2008-12-30 | 2010-07-14 | 东部高科股份有限公司 | 图像编码器和图像编码方法 |
CN103326730A (zh) * | 2013-06-06 | 2013-09-25 | 清华大学 | 数据并行压缩方法 |
US9258013B1 (en) * | 2015-09-01 | 2016-02-09 | Rockwell Collins, Inc. | Data compression with Huffman code on multicore processors |
CN107404654A (zh) * | 2017-08-23 | 2017-11-28 | 郑州云海信息技术有限公司 | 一种jpeg图像解压缩方法、装置及平台 |
Non-Patent Citations (3)
Title |
---|
H. RAHMANI等: "A parallel Huffman coder on the CUDA architecture", 《2014 IEEE VISUAL COMMUNICATIONS AND IMAGE PROCESSING CONFERENCE》 * |
倪泽峰 等: "并行哈夫曼编码器的硬件设计与实现", 《微电子学与计算机》 * |
胡荣 邹承明: "基于 OpenMP 的文件压缩与解压的并行设计模型", 《中南大学学报(自然科学版)》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110620637A (zh) * | 2019-09-26 | 2019-12-27 | 上海仪电(集团)有限公司中央研究院 | 一种基于fpga的数据解压装置及方法 |
CN113746487A (zh) * | 2021-08-25 | 2021-12-03 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据压缩方法、装置及电子设备和存储介质 |
CN113746487B (zh) * | 2021-08-25 | 2023-11-03 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据压缩方法、装置及电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108933599B (zh) | 2021-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109409518A (zh) | 神经网络模型处理方法、装置及终端 | |
CN104137076B (zh) | 用于验证应用的方法和设备 | |
CN101438319B (zh) | 使用多图形处理单元的改进的图形去阶梯 | |
KR101867127B1 (ko) | 폰트 명령 감소 기법 | |
US10884744B2 (en) | System and method of loop vectorization by compressing indices and data elements from iterations based on a control mask | |
KR102005227B1 (ko) | 데이터 처리 시스템과 이의 동작 방법 | |
CN105205014A (zh) | 一种数据存储方法和装置 | |
CN114723033B (zh) | 数据处理方法、装置、ai芯片、电子设备及存储介质 | |
US10044370B1 (en) | Lossless binary compression in a memory constrained environment | |
CN104202054A (zh) | 一种硬件lzma压缩实现系统及方法 | |
CN105493053A (zh) | 多核处理器中的高速缓存划分 | |
TWI498818B (zh) | 指示可變長度指令集的指令長度之技術 | |
CN104395881B (zh) | 动态型阵列的表达和变换 | |
CN109428602A (zh) | 一种数据编码方法、装置以及存储介质 | |
CN108933599A (zh) | 一种霍夫曼编码实现方法、系统、设备及计算机存储介质 | |
CN110008192A (zh) | 一种数据文件压缩方法、装置、设备及可读存储介质 | |
CN115509534A (zh) | 适配ai模型的编译方法、装置、存储介质及电子设备 | |
US8515882B2 (en) | Efficient storage of individuals for optimization simulation | |
US10318891B1 (en) | Geometry encoder | |
US10891758B2 (en) | Geometry encoder | |
US10103747B1 (en) | Lossless binary compression in a memory constrained environment | |
US10559093B2 (en) | Selecting encoding options | |
CN108932129A (zh) | 一种WebP编码过程中熵编码算法的加速系统及方法 | |
EP4377844A1 (en) | Mixing sparsity compression | |
CN110062241A (zh) | 一种Alpha通道数据的压缩方法、系统及相关组件 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |