首页> 中国专利> 一种LZ77压缩算法的匹配长度输出方法及装置

一种LZ77压缩算法的匹配长度输出方法及装置

摘要

本发明公开了一种硬件实现LZ77压缩算法的匹配长度输出方法及装置,并行度为N,包括按预设规则将获取的N个匹配长度信息进行两两分组得到M组;每组均依据该组的匹配长度信息中的两个起始位置和匹配起始位置判断该组中的两个匹配长度是否能归并,如果是,归并两个匹配长度得到归并后的匹配长度,当两个匹配长度相等时,将归并后的匹配长度代替起始位置较小的匹配长度;不等时,将归并后的匹配长度代替两个匹配长度中较大者;否则,不归并;当M组都不能归并时从N个匹配长度中选出最大的作为该算法最终输出的匹配长度;否则,从各个归并后的匹配长度中选出最大的作为该算法最终输出的匹配长度。本发明有效降低了数据压缩率、提高了数据压缩效果。

著录项

  • 公开/公告号CN106788447A

    专利类型发明专利

  • 公开/公告日2017-05-31

    原文格式PDF

  • 申请/专利权人 郑州云海信息技术有限公司;

    申请/专利号CN201611074812.6

  • 发明设计人 李龙;

    申请日2016-11-29

  • 分类号H03M7/30;

  • 代理机构北京集佳知识产权代理有限公司;

  • 代理人罗满

  • 地址 450018 河南省郑州市郑东新区心怡路278号16层1601室

  • 入库时间 2023-06-19 02:27:27

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-28

    授权

    授权

  • 2020-07-21

    专利申请权的转移 IPC(主分类):H03M7/30 登记生效日:20200701 变更前: 变更后: 申请日:20161129

    专利申请权、专利权的转移

  • 2017-06-23

    实质审查的生效 IPC(主分类):H03M7/30 申请日:20161129

    实质审查的生效

  • 2017-05-31

    公开

    公开

说明书

技术领域

本发明涉及数据压缩技术领域,特别是涉及一种硬件实现LZ77压缩算法的匹配长度输出方法。本发明还涉及一种硬件实现LZ77压缩算法的匹配长度输出装置。

背景技术

随着信息通信技术的快速发展,数据的产生量和交换量与日俱增。在进行数据存储或数据交换时,对数据进行压缩处理既可以节省数据存储所占用的空间,又可以节约数据交换所消耗的传输宽带。

对数据进行压缩一般采用无损压缩的方式,无损压缩是指利用数据的统计冗余进行压缩,并将压缩后的数据执行解压缩操作后得到的数据和压缩前的数据完全一致。LZ77压缩算法是无损压缩中常用的算法,其具有适中的压缩率和较快的压缩速度。

LZ77压缩算法既可以通过软件实现,又可以通过硬件实现。通过软件实现时,由中央处理器(CPU)对数据进行压缩处理,一方面,当处理海量数据时,压缩程序会消耗大量的中央处理器资源;另一方面,中央处理器执行软件压缩通常是一种串行行为,无法取得高效的处理速率。通过硬件实现时,不仅能采用并行处理的方式有效的提高压缩速率,还能够减轻中央处理器资源的占用。由于通过硬件实现LZ77压缩算法时,比较窗口的大小是固定的,当并行度为N时,即同时有N个比较窗口分别对N个字符串进行匹配,相应的得到N个匹配长度,LZ77压缩算法将N个匹配长度中最大的匹配长度作为LZ77压缩算法最终的匹配长度进行输出。但是,当字符串本身的匹配长度大于比较窗口的大小时,现有技术中输出的最大匹配长度为比较窗口大小的长度,即此时最大匹配长度是固定的,并且该最大匹配长度往往远小于软件实现时所采用的最大匹配长度,又因为,一般情况下最大匹配长度越大数据的压缩率越低,对数据的压缩效果越好,因此,现有技术中通过硬件实现LZ77压缩算法时采用固定的最大匹配长度,使得压缩率较高、数据的压缩效果不是很好。

因此,如何提供一种解决上述技术问题的硬件实现LZ77压缩算法的匹配长度输出方法及装置成为本领域的技术人员目前需要解决的问题。

发明内容

本发明的目的是提供一种硬件实现LZ77压缩算法的匹配长度输出方法,在使用过程中,使LZ77压缩算法最终输出的匹配长度变大,有效的降低了数据的压缩率、提高了数据的压缩效果;本发明的另一目的是提供一种硬件实现LZ77压缩算法的匹配长度输出装置,其使用过程中具有与上述方法相应的优点。

为解决上述技术问题,本发明提供了一种硬件实现LZ77压缩算法的匹配长度输出方法,并行度为N,所述N为不小于2的正整数,所述方法包括:

获取LZ77压缩算法得到的N个匹配长度信息,所述匹配长度信息包括匹配长度、起始位置以及匹配起始位置;按照预设规则将N个所述匹配长度信息进行两两一组分组,分成M组,所述M为不小于1的正整数;

每组均依据该组中的两个所述起始位置和所述匹配起始位置判断该组中的两个所述匹配长度是否能进行归并,如果是,则将该组中的两个所述匹配长度进行归并,得到归并后的匹配长度,当所述该组中的两个所述匹配长度相等时,将所述归并后的匹配长度代替两个所述匹配长度中起始位置较小的匹配长度;当所述该组中的两个所述匹配长度不相等时,则将所述归并后的匹配长度代替该组中两个所述匹配长度中较大的匹配长度;否则,不归并;

判断是否M组都不能进行归并,如果是,则从N个所述匹配长度中选择出最大的匹配长度作为LZ77压缩算法的最终输出的匹配长度;否则,则从各个所述归并后的匹配长度中选择出最大的匹配长度作为LZ77压缩算法的最终输出的匹配长度。

优选的,每组中的两个匹配长度信息包括第一匹配长度、第一起始位置、第一匹配起始位置、第二匹配长度、第二起始位置和第二匹配起始位置,所述每组均依据该组中的两个所述起始位置和所述匹配起始位置判断该组中的两个所述匹配长度是否能进行归并的过程具体为:

每组均判断该组中的所述第一起始位置与所述第二起始位置之间的间距是否等于所述第一匹配起始位置与所述第二匹配起始位置之间的间距;

则相应的所述将该组中的两个所述匹配长度进行归并,得到归并后的匹配长度过程为:

所述第一起始位置与所述第二起始位置之间的间距和较大起始位置对应的匹配长度相加,将该和作为所述归并后的匹配长度;

或者所述第一匹配起始位置与所述第二匹配起始位置之间的间距和较大起始位置对应的匹配长度相加,将该和作为所述归并后的匹配长度。

优选的,所述按照预设规则将N个所述匹配长度信息进行两两一组分组的过程具体为:

将N个所述匹配长度信息中任意两个起始位置之间的间距不小于预设归并比较间距的两个匹配长度信息分为一组。

优选的,所述预设归并比较间距为1。

优选的,所述预设归并比较间距不小于2。

优选的,所述预设归并比较间距为3。

优选的,如上述任意一项所述的硬件实现LZ77压缩算法的匹配长度输出方法,所述N为4。

为解决上述技术问题,本发明提供了一种硬件实现LZ77压缩算法的匹配长度输出装置,所述装置包括:

分组模块,用于获取LZ77压缩算法得到的N个匹配长度信息,所述匹配长度信息包括匹配长度、起始位置以及匹配起始位置,并按照预设规则将N个所述匹配长度信息进行两两一组分组,分成M组;

归并模块,用于每组均依据该组中的两个所述起始位置和所述匹配起始位置判断该组中的两个所述匹配长度是否能进行归并,如果是,则将所述该组中的两个所述匹配长度进行归并,得到归并后的匹配长度,当所述该组中的两个所述匹配长度相等时,将所述归并后的匹配长度代替两个所述匹配长度中起始位置较小的匹配长度;当所述该组中的两个所述匹配长度不相等时,将所述归并后的匹配长度代替该组中两个所述匹配长度中较大的匹配长度;否则,不归并;

判断模块,用于判断是否M组都不能进行归并,如果是,则发送第一触发指令;否则,则发送第二触发指令;

选择模块,用于依据所述第一触发指令从N个所述匹配长度中选择出最大的匹配长度作为LZ77压缩算法的最终输出的匹配长度;还用于依据所述第二触发指令从各个所述归并后的匹配长度中选择出最大的匹配长度作为LZ77压缩算法的最终输出的匹配长度。

优选的,每组中的两个匹配长度信息包括第一匹配长度、第一起始位置、第一匹配起始位置、第二匹配长度、第二起始位置和第二匹配起始位置所述每组均依据该组中的两个所述起始位置和所述匹配起始位置判断该组中的两个所述匹配长度是否能进行归并的过程为:

每组均判断该组中的所述第一起始位置与所述第二起始位置之间的间距是否等于所述第一匹配起始位置与所述第二匹配起始位置之间的间距;

则相应的所述将该组中的两个所述匹配长度进行归并,得到归并后的匹配长度的过程为:

所述第一起始位置与所述第二起始位置之间的间距和较大起始位置对应的匹配长度相加,将该和作为所述归并后的匹配长度;

或者所述第一匹配起始位置与所述第二匹配起始位置之间的间距和较大起始位置对应的匹配长度相加,将该和作为所述归并后的匹配长度。

优选的,按照预设规则将N个所述匹配长度信息进行两两一组分组的过程为:

将N个所述匹配长度信息中任意两个起始位置之间的间距不小于预设归并比较间距的两个匹配长度信息分为一组。

本发明所提供的一种硬件实现LZ77压缩算法的匹配长度输出方法,在并行度为N的时,对LZ77压缩算法得到的N个匹配长度信息按照预设规则进行两两一组分组,共分成M组;对每组中的两个匹配长度进行判断,依据该组中的两个起始位置与两个匹配起始位置判断该组中的两个匹配长度是否能进行归并,当该组中的两个匹配长度能进行归并时将两个匹配长度进行归并,得到归并后的匹配长度,并当该组中的两个匹配长度相等时,将归并后的匹配长度代替两个匹配长度中起始位置较小的匹配长度;当该组中的两个匹配长度不相等时,将归并后的匹配长度代替将归并后的匹配长度代替该组中两个匹配长度中较大的匹配长度,否则,不对该组中的两个匹配长度进行归并。判断是否M组都不能进行归并,如果是,则将N个匹配长度中最大的匹配长度作为LZ77压缩算法的最终输出的匹配长度;否则,从各个归并后的匹配长度中选择最大的匹配长度作为LZ77压缩算法的最终输出的匹配长度。

由于归并后的匹配长度要大于归并前的两个匹配长度,所以从归并后的匹配长度中选择的最大的匹配长度比归并前的N个匹配长度中的任意一个都要大。因此,在采用硬件实现LZ77压缩算法并且当字符串本身的匹配长度大于比较窗口的长度时,采用本发明所提供的LZ77压缩算法的匹配长度输出方法,对N个匹配长度中可以进行归并的两个匹配长度进行归并,使LZ77压缩算法最终输出的匹配长度变大,降低了数据的压缩率,提高了数据的压缩效果。本发明提供了一种硬件实现LZ77压缩算法的匹配长度输出装置具有与上述方法相应的优点。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种硬件实现LZ77压缩算法的匹配长度输出方法的流程示意图;

图2为本发明提供的一种硬件实现LZ77压缩算法的匹配长度输出装置的结构示意图。

具体实施方式

本发明的核心是提供一种硬件实现LZ77压缩算法的匹配长度输出方法,在使用过程中,使LZ77压缩算法最终输出的匹配长度变大,有效的降低了数据的压缩率、提高了数据的压缩效果;本发明的另一核心是提供一种硬件实现LZ77压缩算法的匹配长度输出装置,其使用过程中具有与上述方法相应的优点。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

请参照图1,图1为本发明提供的一种硬件实现LZ77压缩算法的匹配长度输出方法的流程示意图。该方法包括:

S100:获取LZ77压缩算法得到的N个匹配长度信息,匹配长度信息包括匹配长度、起始位置以及匹配起始位置;按照预设规则将N个匹配长度信息进行两两一组分组,分成M组。其中,并行度为N,N为不小于2的正整数,M为不小于1的正整数;

需要说明的是,当并行度为N时,即有N个固定的比较窗口同时对N个字符串进行匹配,LZ77压缩算法会得到N个匹配长度信息,每个匹配长度信息均包括匹配长度、起始位置和匹配起始位置,则LZ77压缩算法会得到N个匹配长度,可以表示为L1、L2…LN;N个起始位置,可以表示为S1、S2…SN;以及N个匹配起始位置,可以表示为D1、D2…DN。将这N个匹配长度信息按照预设规则进行两两一组的分组,最终分为M组,例如其中一组包括第m个匹配长度信息和第n个匹配长度信息,即包括信息Lm、Sm、Dm、Ln、Sn和Dn,其中,m≠n。

其中,匹配长度为前面出现的字符串中与比较窗口中当前字符串具有最大匹配长度的匹配串与该当前字符串之间重复的字符个数;起始位置为比较窗口、与前面出现的字符串具有最长匹配长度的字符串的起始字符对应的位置;匹配起始位置为前面出现的、与比较窗口中当前字符串具有最长匹配长度的字符串的起始字符所对应的位置。

S110:每组均依据该组中的两个起始位置和匹配起始位置判断该组中的两个匹配长度是否能进行归并,如果是,则将该组中的两个匹配长度进行归并,得到归并后的匹配长度,当该组中的两个匹配长度相等时,将归并后的匹配长度代替两个匹配长度中起始位置较小的匹配长度;当该组中的两个匹配长度不相等时,则将归并后的匹配长度代替该组中两个匹配长度中较大的匹配长度;否则,不归并;

需要说明的是,对每一组中的两个匹配长度进行判断其能否进行归并时,依据该组中的两个起始位置和匹配起始位置(也就是Sm、Sn、Dm和Dn)来判断该组中的两个匹配长度(即Lm和Ln)是否能进行归并,当Lm和Ln能进行归并时,则将Lm和Ln进行归并,得到归并后的匹配长度L;当Lm和Ln相等时,用归并后的匹配长度L代替Sm和Sn中较小者对应的匹配长度,如果Sm小于Sn,则用归并后的匹配长度L代替Lm;反之,则用归并后的匹配长度L代替Ln;当Lm和Ln不相等时,用归并后的匹配长度L代替Lm和Ln两者之中的较大者。

S120:判断是否M组都不能进行归并,如果是,进入S130;否则,进入S140;

S130:从N个匹配长度中选择出最大的匹配长度作为LZ77压缩算法的最终输出的匹配长度;

S140:从各个归并后的匹配长度中选择出最大的匹配长度作为LZ77压缩算法的最终输出的匹配长度。

具体的,当M组中的两个匹配长度都不能进行归并时,则从LZ77压缩算法得到的N个匹配长度中选择出最大的一个匹配长度作为LZ77压缩算法的最终输出的匹配长度,且最终输出的为(匹配距离,匹配长度),即此时的匹配长度为N个匹配长度中最大的匹配长度;当M组中有能进行归并的组时,则从各个归并后的匹配长度中选择出最大的匹配长度最为LZ77压缩算法的最终输出的匹配长度,且最终的输出形式仍旧为(匹配距离,匹配长度),即此时的匹配长度为各个归并后的匹配长度中最大的匹配长度。

作为优选的,每组中的两个匹配长度信息包括第一匹配长度、第一起始位置、第一匹配起始位置、第二匹配长度、第二起始位置和第二匹配起始位置,每组均依据该组中的两个起始位置和匹配起始位置判断该组中的两个匹配长度是否能进行归并的过程具体为:

每组均判断该组中的第一起始位置与第二起始位置之间的间距是否等于第一匹配起始位置与第二匹配起始位置之间的间距;

则相应的将该组中的两个匹配长度进行归并,得到归并后的匹配长度过程为:

第一起始位置与第二起始位置之间的间距和较大起始位置对应的匹配长度相加,将该和作为所述归并后的匹配长度;

或者第一匹配起始位置与第二匹配起始位置之间的间距和较大起始位置对应的匹配长度相加,将该和作为所述归并后的匹配长度。

需要说明的是,例如每组中的两个匹配长度信息包括第一匹配长度、第一起始位置、第一匹配起始位置、第二匹配长度、第二起始位置和第二匹配起始位置分别对应的是Sm、Dm、Lm、Sn、Dn和Ln。那么,判断该组中的两个匹配长度(即Lm和Ln)是否能进行归并是对Sm、Dm、Sn和Dn之间的关系进行判断,也就是通过判断Sn和Sm之间的间距与Dn和Dm之间的间距是否相等。在Sm小于Sn的情况下,当Sn-Sm=Dn–Dm时,Lm和Ln能进行归并,当Sn-Sm≠Dn–Dm时,Lm和Ln不能进行归并。

一般情况下,N个比较窗口由左向右依次排列对相应的字符串进行匹配,在这种情况下,归并后的匹长度为|Sm-Sn|与较大起始位置对应的匹配长度之和,或|Dm-Dn|与较大起始位置对应的匹配长度之和。即当Sm小于Sn,归并后的匹配长度L=Ln+Sn-Sm或者L=Ln+Dn-Dm;反之,归并后的匹配长度L=Lm+Sm-Sn或者L=Lm+Dm-Dn

作为优选的,按照预设规则将N个匹配长度信息进行两两一组分组的过程具体为:

将N个匹配长度信息中任意两个起始位置之间的间距不小于预设归并比较间距的两个匹配长度信息分为一组。

需要说明的是,也就是当|Sm-Sn|的值不小于预设归并比较间距时,将第m个匹配长度信息和第n个匹配长度信息分成一组。当然,不仅限于按照上述方法对N个匹配长度信息进行两两一组分组,还可以按照其他预设规则进行分组,本发明在此不做特殊的限定,能实现本发明的目的既可。

作为优选的,预设归并比较间距为1。

当预设归并比较间距为1时,即将N个匹配长度信息中的任意两个分为一组,一共分成CN2组,也就是对N个匹配长度信息中的任意两个进行判断,判断这两个匹配长度是否能进行归并,这种做法判断次数较多,则最终的压缩效果好。

作为优选的,预设归并比较间距不小于2。

作为优选的,预设归并比较间距为3。

需要说明的是,预设归并比较间距大于等于2,例如,预设归并比较间距为2或3或4或5等。当预设归并比较间距为2时,即将N个匹配长度信息中任意两个起始位置的间距不小于2的两个匹配长度信息分为一组。预设归并比较间距较大时,例如预设归并比较间距为5时,M相比于预设归并比较间距为1时较少,此时占用的资源较少。

当然,预设归并比较间距的具体数据可以根据实际情况进行设定,本发明在此不做特殊的限定,能实现本发明的目的即可。

作为优选的,本实施例中上述任意一项的硬件实现LZ77压缩算法的匹配长度输出方法,N为4。

当然,N还可以为其他正整数,其具体数值可以根据实际情况而定,本发明在此不做特殊的限定,能实现本发明目的即可。

下面将对并行度为4时,即N=4时的情况做具体举例说明,此时比较窗口为4个:

由当前处理字符(s)(第二个sentence的首字母)开始的字符串和其前面的字符串比较,查找匹配的字符串。

This sentence is an easy sentence to compress.

第一个窗口

This sentence is an easyto compress.

第二个窗口

This sentence is an easyto compress.

第三个窗口

This sentence is an easyto compress.

第四个窗口

This sentence is an easyto compress.

四个窗口同时比较的过程如下:

第一个窗口

This sentence is an easyto compress.

该比较窗口得到的第一匹配长度信息包括:匹配长度L1=4,匹配距离Dist1=20(匹配距离即比较窗口中与前面具有最长匹配的字符串的起始字符(第二个sentence的首字符s)与前面第一个sentence的首字符s的距离),起始字符位置S1=25(起始字符即第二个sentence的首字符s的位置),匹配起始位置D1=5(匹配起始位置即第一个sentence的首s的位置,也就是前面出现的匹配串的起始字符的位置)。

第二个窗口

This sentence is an easyto compress.

该比较窗口得到的第二匹配长度信息包括:匹配长度L2=4,匹配距离Dist2=20(匹配距离即比较窗口中的起始字符e与第一个sentence字符串中的匹配串ente的起始字符e之间的距离),起始字符位置S2=26(起始字符即比较窗口中起始字符e的位置),匹配起始位置D2=6(匹配起始位置即第一个sentence字符串中的匹配串ente中起始的字符e的位置)。

第三个窗口

This sentence is an easyto compress.

该比较窗口得到的第三匹配长度信息包括:匹配长度L3=4,匹配距离Dist3=20(匹配距离即比较窗口中的起始字符n与第一个sentence字符串中的匹配串nten的起始字符n之间的距离),起始字符位置S3=27(起始字符即比较窗口中起始字符n的位置),匹配起始位置D3=7(第一个sentence字符串中的匹配串nten的起始字符n的位置)。

第四个窗口

This sentence is an easyto compress.

该比较窗口得到的第四匹配长度信息包括:匹配长度L4=4,匹配距离Dist4=20(匹配距离即比较窗口中的起始字符t与第一个sentence字符串中的匹配串tenc的起始字符t之间的距离),起始字符位置S4=28(起始字符即比较窗口中起始字符t的位置),匹配起始位置D4=8(第一个sentence字符串中的匹配串tenc的起始字符t的位置)。

假设预设归并比较间距为2,则S2-S1=26-25=1,S3-S1=27-25=2,S4-S1=28-25=3,S3–S2=27-26=1,S4–S2=28-26=2,S4–S3=28-27=1,因为只有当Sn-Sm大于或等于2时,才能将两个起始位置对应的匹配长度信息分成一组,则此时可以将四个匹配长度信息分成三组,即:

第一组包括第一匹配长度信息和第三匹配长度信息;

第二组包括第一匹配长度信息和第四匹配长度信息;

第三组包括第二匹配长度信息和第四匹配长度信息。

判断各组中的两个匹配长度是否能进行归并的过程具体为:第一组中S3-S1=27-25=2,D3-D1=7-5=2,即该组中的两个起始位置之间的间距等于两个匹配起始位置之间的间距,所以该组中的两个匹配长度L1和L3可以进行归并,具体归并后的匹配长度为L=L3+S3-S1=6,并用L代替L1

第二组中S4-S1=28-25=3,D4-D1=8-5=3,即该组中的两个起始位置之间的间距等于两个匹配起始位置之间的间距,所以该组中的两个匹配长度L1和L4可以进行归并,具体归并后的匹配长度为L’=L4+S4-S1=7,并用L’代替L1

第三组中S4–S2=28-26=2,D4-D1=8-6=2,即该组中的两个起始位置之间的间距等于两个匹配起始位置之间的间距,所以该组中的两个匹配长度L2和L4可以进行归并,具体归并后的匹配长度为L”=L4+S4–S2=6,并用L”代替L2

由于,L’>L且L’>L”,所以LZ77压缩算法最终输出的匹配长度为L’,最后输出结果为(20,7)。

对于上述具体例子,现有技术中从L1、L2、L2和L4中选出最大的匹配长度作为LZ77压缩算法最终输出的匹配长度,即此时LZ77压缩算法最终输出的匹配长度为4,最后的输出结果为(20,4)。采用本发明中所提供的LZ77压缩算法的匹配长度输出方法,从各个归并后的匹配长度中选出最大的匹配长度作为LZ77压缩算法最终输出的匹配长度,即此时LZ77压缩算法最终输出的匹配长度为7,最后输出结果为(20,7),使LZ77压缩算法最终输出的匹配长度变大,在一定程度上降低了压缩率,有效的提升了压缩效果。

本发明所提供的一种硬件实现LZ77压缩算法的匹配长度输出方法,在并行度为N的时,对LZ77压缩算法得到的N个匹配长度信息按照预设规则进行两两一组分组,共分成M组;对每组中的两个匹配长度进行判断,依据该组中的两个起始位置与两个匹配起始位置判断该组中的两个匹配长度是否能进行归并,当该组中的两个匹配长度能进行归并时将两个匹配长度进行归并,得到归并后的匹配长度,并当该组中的两个匹配长度相等时,将归并后的匹配长度代替两个匹配长度中起始位置较小的匹配长度;当该组中的两个匹配长度不相等时,将归并后的匹配长度代替将归并后的匹配长度代替该组中两个匹配长度中较大的匹配长度,否则,不对该组中的两个匹配长度进行归并。判断是否M组都不能进行归并,如果是,则将N个匹配长度中最大的匹配长度作为LZ77压缩算法的最终输出的匹配长度;否则,从各个归并后的匹配长度中选择最大的匹配长度作为LZ77压缩算法的最终输出的匹配长度。

由于归并后的匹配长度要大于归并前的两个匹配长度,所以从归并后的匹配长度中选择的最大的匹配长度比归并前的N个匹配长度中的任意一个都要大。因此,在采用硬件实现LZ77压缩算法并且当字符串本身的匹配长度大于比较窗口的长度时,采用本发明所提供的LZ77压缩算法的匹配长度输出方法,对N个匹配长度中可以进行归并的两个匹配长度进行归并,使LZ77压缩算法最终输出的匹配长度变大,有效的降低了数据的压缩率、提高了数据的压缩效果。

实施例二

请参照图2,图2为本发明提供的一种硬件实现LZ77压缩算法的匹配长度输出装置的结构示意图,在上述实施例的基础上:

该装置包括:

分组模块1,用于获取LZ77压缩算法得到的N个匹配长度信息,匹配长度信息包括匹配长度、起始位置以及匹配起始位置,并按照预设规则将N个匹配长度信息进行两两一组分组,分成M组;

归并模块2,用于每组均依据该组中的两个起始位置和匹配起始位置判断该组中的两个匹配长度是否能进行归并,如果是,则将该组中的两个匹配长度进行归并,得到归并后的匹配长度,当该组中的两个匹配长度相等时,将归并后的匹配长度代替两个匹配长度中起始位置较小的匹配长度;当该组中的两个匹配长度不相等时,将归并后的匹配长度代替该组中两个匹配长度中较大的匹配长度;否则,不归并;

判断模块3,用于判断是否M组都不能进行归并,如果是,则发送第一触发指令;否则,则发送第二触发指令;

选择模块4,用于依据第一触发指令从N个匹配长度中选择出最大的匹配长度作为LZ77压缩算法的最终输出的匹配长度;还用于依据第二触发指令从各个归并后的匹配长度中选择出最大的匹配长度作为LZ77压缩算法的最终输出的匹配长度。

作为优选的,每组中的两个匹配长度信息包括第一匹配长度、第一起始位置、第一匹配起始位置、第二匹配长度、第二起始位置和第二匹配起始位置每组均依据该组中的两个起始位置和匹配起始位置判断该组中的两个匹配长度是否能进行归并的过程为:

每组均判断该组中的第一起始位置与第二起始位置之间的间距是否等于第一匹配起始位置与第二匹配起始位置之间的间距;

则相应的将该组中的两个匹配长度进行归并,得到归并后的匹配长度的过程为:

第一起始位置与第二起始位置之间的间距和较大起始位置对应的匹配长度相加,将该和作为所述归并后的匹配长度;

或者第一匹配起始位置与第二匹配起始位置之间的间距和较大起始位置对应的匹配长度相加,将该和作为所述归并后的匹配长度。

作为优选的,按照预设规则将N个匹配长度信息进行两两一组分组的过程为:

将N个匹配长度信息中任意两个起始位置之间的间距不小于预设归并比较间距的两个匹配长度信息分为一组。

需要说明的是,当并行度为N时,对于本发明所提供的硬件实现LZ77压缩算法的匹配长度输出装置中的分组模块在获取LZ77压缩算法得到的N个匹配长度信息后还需要对这些匹配长度信息进行存储,主要采用起始位置存储器、匹配长度存储器和匹配起始位置存储器对相应的N个起始位置、N个匹配长度以及N个匹配起始位置进行存储,起始位置存储器、匹配长度存储器和匹配起始位置存储器的存储空间的大小可以根据具体需要进行设定。

对于本实施例所提供的硬件实现LZ77压缩算法的匹配长度输出装置所采用的具体方法请参照上述方法的实施例,本发明在此不再赘述。

本发明提供了一种硬件实现LZ77压缩算法的匹配长度输出装置具有与上述方法相应的优点。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号