一种lz77压缩算法硬件加速系统及加速方法

文档序号:7542387阅读:386来源:国知局
一种lz77压缩算法硬件加速系统及加速方法
【专利摘要】本发明公开了一种LZ77压缩算法硬件加速系统及方法,该系统包括:数据输入控制模块,用于控制接口传输过来的数据以特定的方式缓存到数据缓存模块;数据缓存模块,用于缓存接口传输过来的数据同时为LZ77压缩模块提供待压缩数据源;LZ77压缩模块,用于对待压缩数据采用LZ77压缩方法进行压缩;数据输出控制模块,用于控制压缩后的数据传输至接口,以便接口读取压缩后的数据。本发明提供了一种LZ77压缩算法硬件加速系统及方法,采用可编程逻辑器件(FPGA)实现LZ77压缩算法,通过采用数据缓存模块加速LZ77压缩算法,从而有效的提高了现有LZ77压缩算法的处理效率。
【专利说明】一种LZ77压缩算法硬件加速系统及加速方法
【技术领域】
[0001]本发明涉及数据压缩技术,尤其涉及一种LZ77压缩算法硬件加速系统及加速方法。
【背景技术】
[0002]随着互联网技术、云计算技术的发展,越来越多的数据需要存储,而这些海量数据的存储成本是非常高的,为了缓解这个问题,通常在数据进行存储前会对数据进行压缩处理,经过压缩后的数据可以大幅度提高磁盘的有效容量,提高读写操作时的输入输出(I/O)有效带宽,从而有效的降低互联网数据中心的成本,提高应用层程序的执行速度。
[0003]当前,压缩技术可以简单的分为有损压缩和无损压缩,有损压缩多用于视频、音频等领域,无损压缩则具有通用性,可以运用到各个领域。经调研发现,无损压缩方法有基于字典模式的压缩方法和基于统计模式的压缩方法,基于字典模式的压缩方法最著名的是LZ77算法,该算法复杂度适中,易于实现。然而,经过研究发现,由于软件串行执行的特点,LZ77算法的优越性很难发挥出来,因此,有针对性的提出一种LZ77压缩算法硬件加速系统和方法可以很好的解决这个问题,为LZ77算法、LZ77算法的变型算法、利用LZ77算法原理的Gzip算法、LZO算法等广泛运用于大数据处理环境中提供解决方案。

【发明内容】

[0004]本发明所要解决的技术问题在于克服现有技术的不足,提供一种LZ77压缩算法硬件加速系统及加速方法。
[0005]本发明具体采用以下技术方案解决上述技术问题:本发明设计了一种LZ77压缩算法硬件加速系统,包括数据输入控制模块、数据缓存模块、LZ77压缩模块和数据输出控制模块,其中:
[0006]所述数据输入控制模块用于将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块;
[0007]所述数据缓存模块用于存储上述8字节数据组,并在接收到LZ77压缩模块发出的读请求时,为该8字节数据组加上标示字节,将得到的9个字节长度的数据以数据源的形式传输至LZ77压缩模块;
[0008]所述LZ77压缩模块用于对上述待压缩的数据源采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块;
[0009]所述数据输出控制模块用于将上述LZ77数据包以8字节组包的形式输出。
[0010]作为本发明的一种优化结构:所述数据缓存模块包括M个随机存取存储器,所述M个随机存取存储器的输入端共同连接数据输入控制模块的输出端,所述M个随机存取存储器的输出端共同连接LZ77压缩模块的输入端,每个随机存取存储器的宽度为8字节,其中,M为大于等于2的自然数。
[0011]本发明还设计了一种基于权利要求1所述的LZ77压缩算法硬件加速系统的加速方法,包括如下具体步骤:
[0012]步骤(I):所述数据输入控制模块将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块;
[0013]步骤(2):所述数据缓存模块用于存储上述8字节数据组,并在接收到LZ77压缩模块发出的读请求时,为该8字节数据组加上标示字节,将得到的9个字节长度的数据以数据源的形式传输至LZ77压缩模块;
[0014]步骤(3 ):所述LZ77压缩模块将接收到的待压缩数据源采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块;
[0015]步骤(4):所述数据输出控制模块将上述LZ77数据包以8字节组包的形式传输至接口,以便接口进行读取。
[0016]本发明还设计了一种基于权利要求2所述的LZ77压缩算法硬件加速系统的加速方法,包括如下具体步骤:
[0017]步骤(I):所述数据输入控制模块将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块;
[0018]步骤(2):所述数据缓存模块将上述8字节数据组交替缓存至M个随机存取存储器,当LZ77压缩模块向其发起读请求时,所述读请求同时发送到所有随机存取存储器,所述数据缓存模块为随机存取存储器中的8字节数据组加上标示字节,即向LZ77压缩模块提供9个字节长度的数据,其中,M为大于等于2的自然数;
[0019]步骤(3):所述LZ77压缩模块将接收到的9个字节长度的数据采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块;
[0020]步骤(4):所述数据输出控制模块将上述LZ77数据包以8字节组包的形式输出。
[0021]作为本发明的一种优化方法:所述步骤(3)还包括如下具体处理:
[0022]步骤(31):所述LZ77压缩模块对接收到的9个字节长度的数据计算Hash值;
[0023]步骤(32):所述LZ77压缩模块根据上述Hash值再次向数据缓存模块发出读请求,从数据缓存模块中读取9字符;
[0024]步骤(33):所述LZ77压缩模块将此次读取的I个字符与历史字符进行对比,若匹配,则将收到的9个字节长度的数据采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块,若不匹配,则转而执行步骤(32)。
[0025]本发明与现有技术相比具有如下优点:
[0026]1.本发明提供了一种LZ77压缩算法硬件加速系统及加速方法,采用可编程逻辑器件(FPGA)实现LZ77压缩算法,通过采用数据缓存模块加速LZ77压缩算法,从而有效的提高了现有LZ77压缩算法的处理效率;
[0027]2.本发明所设计的一种LZ77压缩算法硬件加速系统及加速方法不排它,该硬件加速系统及加速方法也可以应用于利用LZ77压缩原理的算法中,如Gzip算法、LZO算法;LZ77变型和类似算法中,如LZW算法、LZSS算法,等。
【专利附图】

【附图说明】
[0028]图1示出本发明所设计的一种LZ77压缩算法硬件加速系统的结构示意图;
[0029]图2示出本发明提供的一种LZ77压缩算法硬件加速系统的另一【具体实施方式】的结构示意图;
[0030]图3示出一般数据缓存模块的【具体实施方式】的结构示意图;
[0031]图4示出本发明提供的一种LZ77压缩算法硬件加速系统的一个实施例中数据缓存模块的【具体实施方式】的结构示意图;
[0032]图5示出本发明实施例提供的一种LZ77压缩算法硬件加速系统的加速方法流程图;
[0033]图6示出本发明设计的加速方法的另一具体实施例的流程图;
[0034]图7示出本发明所设计的加速方法的另一具体实施例的流程图;
[0035]图8示出本发明所设计的加速方法的一个具体应用例的流程图。
【具体实施方式】
[0036]下面结合附图对本发明作进一步的详细说明:
[0037]如图1所示,本发明设计了一种LZ77压缩算法硬件加速系统,包括数据输入控制模块、数据缓存模块、LZ77压缩模块和数据输出控制模块,其中:
[0038]所述数据输入控制模块用于将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块;
[0039]所述数据缓存模块用于存储上述8字节数据组,当LZ77压缩模块向其发起读请求时为8字节数据组加上标示字节,即将I个字节长度的数据以数据源的形式传输至LZ77压缩模块,其中,1=9 ;
[0040]所述LZ77压缩模块用于对上述待压缩数据源采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块;
[0041]所述数据输出控制模块用于将上述LZ77数据包以8字节组包的形式输出。
[0042]如图2所示,作为本发明的一种优化结构:所述数据缓存模块包括M个随机存取存储器,所述M个随机存取存储器的输入端共同连接数据输入控制模块的输出端,所述M个随机存取存储器的输出端共同连接LZ77压缩模块的输入端,每个随机存取存储器的宽度为N字节,其中,M为大于等于2的自然数,N=8。
[0043]图3示出一般数据缓存模块的【具体实施方式】的结构示意图;
[0044]如图3所示,采用RAM实现的传统的数据缓存模块,RAM的数据宽度为8字节,深度可以根据具体的设计进行配置,图中的X、Y代表任意字符。为方便说明,现在假设图2中的LZ77压缩模块向数据缓存模块发起读请求,请求读1=9个字符,则如图3所示,用Y表示的字符为所要读取的字符,不难发现,读取9个字符需要进行2次RAM读取,由于RAM自身硬件的因素,每读取一次数据时需要2?3个周期,读取两次则需要4?6个周期。
[0045]图4示出本发明提供的一种LZ77压缩算法硬件加速系统的一个实施例中数据缓存模块的【具体实施方式】的结构示意图;
[0046]如图4所示,采用两个RAM实现的数据缓存模块,其中,两个RAM可以和图2中两个RAM具有相同或相似结构,两个RAM的数据宽度为8字节,深度可以根据具体的设计进行配置,图中的的X、Y代表任意字符。
[0047]为方便说明,现在假设图2中的LZ77压缩模块向数据缓存模块发起读请求,请求读1=9个字符,则如图4所示,用Y表示的字符为所要读取的字符,则在读取时可以同时向两个RAM发送读地址和读使能,不难发现,读取9个字符只需要进行I次RAM读取,相比图3所示的传统的数据缓存模块,本设计可以节省2?3个周期,当需要频繁访问数据缓存模块时,本设计将节省大量的时间。
[0048]从图4所给出的实施例可以看出,当增加数据缓存模块中RAM的个数M时,或者增加RAM的宽度N时,可以满足在一次RAM读取中读取I个字符。
[0049]如图5所示,本发明还设计了一种LZ77压缩算法硬件加速系统的加速方法,包括如下具体步骤:
[0050]步骤(I):所述数据输入控制模块将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块;
[0051]步骤(2):所述数据缓存模块存储上述8字节数据组,当LZ77压缩模块向其发起读请求时为8字节数据组加上标示字节,即将I个字节长度的数据以数据源的形式传输至LZ77压缩模块,其中,1=9 ;
[0052]步骤(3):所述LZ77压缩模块将接收到的待压缩数据源采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块;
[0053]步骤(4):所述数据输出控制模块将上述LZ77数据包以8字节组包的形式传输至接口,以便接口进行读取。
[0054]如图6所示,作为本发明的一种优化方法:包括如下具体步骤:
[0055]步骤(I):所述数据输入控制模块将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块;
[0056]步骤(2):所述数据缓存模块将上述8字节数据组交替缓存至M个随机存取存储器之中的一个,当LZ77压缩模块向其发起读请求时,所述数据缓存模块为8字节数据组加上标示字节,即向LZ77压缩模块提供I个字节长度的数据,其中,M为大于等于2的自然数,1=9 ;
[0057]步骤(3):所述LZ77压缩模块将接收到的I个字节长度的数据采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块;
[0058]步骤(4):所述数据输出控制模块将上述LZ77数据包以8字节组包的形式传输至接口,以便接口进行读取。
[0059]如图7所示,作为本发明的一种优化方法:所述步骤(3)还包括如下具体处理:
[0060]步骤(31):所述LZ77压缩模块对接收到的I个字节长度的数据计算Hash值;
[0061]步骤(32):所述LZ77压缩模块根据上述Hash值再次向数据缓存模块发出读请求,从数据缓存模块中读取I个字符;
[0062]步骤(33):所述LZ77压缩模块将此次读取的I个字符对比当前字符与历史字符进行对比,若匹配,则将收到的I个字节长度的数据采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块,若不匹配,则转而执行步骤(32)。
[0063]图8示出本发明提供的加速方法的一个具体应用例的流程图;
[0064]步骤a:将输入的数据组包成N字节长度,例如,将输入的数据组包成N (N=8)字节长度;
[0065]步骤b:将长度为N字节的数据交替缓存至M个RAM之中的一个,例如,将数据输入控制模块传输过来的8字节存储在缓存模块中,当LZ77压缩模块发起读请求(请求读9个字节)时将数据传输给LZ77压缩模块;
[0066]步骤c:当LZ77模块发出读请求时,向LZ77压缩模块提供I个字节长度的数据,例如,向LZ77压缩模块提供1=9个字节长度的数据;
[0067]步骤d:计算Hash值,例如,采用Hash计算公式对待压缩字符计算Hash值;
[0068]步骤e:向数据缓存模块发出读请求,读取I个字符,例如,向缓存模块发出请求读取1=9个字符;
[0069]步骤f:对比当前读取的字符与历史字符,输出压缩结果,例如,比对结果为出现匹配,则输出压缩后的结果;
[0070]步骤g:控制压缩后的数据传输至接口,以便接口读取压缩后的数据,例如,控制压缩后的数据以8字节组包的方式传输至接口,方便接口处理数据。
[0071]参考前述本发明示例性的描述,本领域技术人员可以知晓本发明具有以下优点:
[0072]本发明提供了一种LZ77压缩算法硬件加速系统及加速方法,采用可编程逻辑器件(FPGA)实现LZ77压缩算法,通过采用数据缓存模块加速LZ77压缩算法,从而有效的提高了现有LZ77压缩算法的处理效率。
[0073]本发明提供了一种LZ77压缩算法硬件加速系统及方法,采用数据缓存模块加速算法的处理过程,而且数据缓存模块可以根据设计需要做适当调整,如可以更改RAM的个数M,更改RAM的位宽N,达到最优效果。
[0074]本发明提供了一种LZ77压缩算法硬件加速系统及方法,该硬件加速系统及方法也可以应用于利用LZ77压缩原理的算法中,如Gzip算法、LZO算法;LZ77变型和类似算法中,如LZW算法、LZSS算法等。
【权利要求】
1.一种LZ77压缩算法硬件加速系统,其特征在于,包括数据输入控制模块、数据缓存模块、LZ77压缩模块和数据输出控制模块,其中: 所述数据输入控制模块用于将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块; 所述数据缓存模块用于存储上述8字节数据组,并在接收到LZ77压缩模块发出的读请求时,为该8字节数据组加上标示字节,将得到的9个字节长度的数据以数据源的形式传输至LZ77压缩模块; 所述LZ77压缩模块用于对上述待压缩的数据源采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块; 所述数据输出控制模块用于将上述LZ77数据包以8字节组包的形式输出。
2.根据权利要求1所述的一种LZ77压缩算法硬件加速系统,其特征在于,所述数据缓存模块包括M个随机存取存储器,所述M个随机存取存储器的输入端共同连接数据输入控制模块的输出端,所述M个随机存取存储器的输出端共同连接LZ77压缩模块的输入端,每个随机存取存储器的宽度为8字节,其中,M为大于等于2的自然数。
3.一种基于权利要求1所述的LZ77压缩算法硬件加速系统的加速方法,其特征在于,包括如下具体步骤: 步骤(I):所述数据输入控制模块将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块; 步骤(2):所述数据缓存.模块用于存储上述8字节数据组,并在接收到LZ77压缩模块发出的读请求时,为该8字节数据组加上标示字节,将得到的9个字节长度的数据以数据源的形式传输至LZ77压缩模块; 步骤(3 ):所述LZ77压缩模块将接收到的待压缩数据源采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块; 步骤(4):所述数据输出控制模块将上述LZ77数据包以8字节组包的形式传输至接口,以便接口进行读取。
4.一种基于权利要求2所述的LZ77压缩算法硬件加速系统的加速方法,其特征在于,包括如下具体步骤: 步骤(I):所述数据输入控制模块将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块; 步骤(2):所述数据缓存模块将上述8字节数据组交替缓存至M个随机存取存储器,当LZ77压缩模块向其发起读请求时,所述读请求同时发送到所有随机存取存储器,所述数据缓存模块为随机存取存储器中的8字节数据组加上标示字节,即向LZ77压缩模块提供9个字节长度的数据,其中,M为大于等于2的自然数; 步骤(3):所述LZ77压缩模块将接收到的9个字节长度的数据采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块; 步骤(4):所述数据输出控制模块将上述LZ77数据包以8字节组包的形式输出。
5.根据权利要求4所述的一种LZ77压缩算法硬件加速方法,其特征在于,所述步骤(3)还包括如下具体处理: 步骤(31):所述LZ77压缩模块对接收到的9个字节长度的数据计算Hash值;步骤(32): 所述LZ77压缩模块根据上述Hash值再次向数据缓存模块发出读请求,从数据缓存模块中读取9字符; 步骤(33): 所述LZ77压缩模块将此次读取的I个字符与历史字符进行对比,若匹配,则将收到的9个字节长度的数据采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块,若不匹配,则转而执行步骤(32)。
【文档编号】H03M7/30GK103475375SQ201310397198
【公开日】2013年12月25日 申请日期:2013年9月4日 优先权日:2013年9月4日
【发明者】李冰, 尚壮壮, 董乾, 王刚, 赵霞, 刘勇 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1