CN103475375A - 一种lz77压缩算法硬件加速系统及加速方法 - Google Patents

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

Info

Publication number
CN103475375A
CN103475375A CN2013103971987A CN201310397198A CN103475375A CN 103475375 A CN103475375 A CN 103475375A CN 2013103971987 A CN2013103971987 A CN 2013103971987A CN 201310397198 A CN201310397198 A CN 201310397198A CN 103475375 A CN103475375 A CN 103475375A
Authority
CN
China
Prior art keywords
data
module
compression
byte
control module
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.)
Pending
Application number
CN2013103971987A
Other languages
English (en)
Inventor
李冰
尚壮壮
董乾
王刚
赵霞
刘勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southeast University
Original Assignee
Southeast University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Southeast University filed Critical Southeast University
Priority to CN2013103971987A priority Critical patent/CN103475375A/zh
Publication of CN103475375A publication Critical patent/CN103475375A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种LZ77压缩算法硬件加速系统及方法,该系统包括:数据输入控制模块,用于控制接口传输过来的数据以特定的方式缓存到数据缓存模块;数据缓存模块,用于缓存接口传输过来的数据同时为LZ77压缩模块提供待压缩数据源;LZ77压缩模块,用于对待压缩数据采用LZ77压缩方法进行压缩;数据输出控制模块,用于控制压缩后的数据传输至接口,以便接口读取压缩后的数据。本发明提供了一种LZ77压缩算法硬件加速系统及方法,采用可编程逻辑器件(FPGA)实现LZ77压缩算法,通过采用数据缓存模块加速LZ77压缩算法,从而有效的提高了现有LZ77压缩算法的处理效率。

Description

一种LZ77压缩算法硬件加速系统及加速方法
技术领域
本发明涉及数据压缩技术,尤其涉及一种LZ77压缩算法硬件加速系统及加速方法。
背景技术
随着互联网技术、云计算技术的发展,越来越多的数据需要存储,而这些海量数据的存储成本是非常高的,为了缓解这个问题,通常在数据进行存储前会对数据进行压缩处理,经过压缩后的数据可以大幅度提高磁盘的有效容量,提高读写操作时的输入输出(I/O)有效带宽,从而有效的降低互联网数据中心的成本,提高应用层程序的执行速度。
当前,压缩技术可以简单的分为有损压缩和无损压缩,有损压缩多用于视频、音频等领域,无损压缩则具有通用性,可以运用到各个领域。经调研发现,无损压缩方法有基于字典模式的压缩方法和基于统计模式的压缩方法,基于字典模式的压缩方法最著名的是LZ77算法,该算法复杂度适中,易于实现。然而,经过研究发现,由于软件串行执行的特点,LZ77算法的优越性很难发挥出来,因此,有针对性的提出一种LZ77压缩算法硬件加速系统和方法可以很好的解决这个问题,为LZ77算法、LZ77算法的变型算法、利用LZ77算法原理的Gzip算法、LZO算法等广泛运用于大数据处理环境中提供解决方案。
发明内容
本发明所要解决的技术问题在于克服现有技术的不足,提供一种LZ77压缩算法硬件加速系统及加速方法。
本发明具体采用以下技术方案解决上述技术问题:本发明设计了一种LZ77压缩算法硬件加速系统,包括数据输入控制模块、数据缓存模块、LZ77压缩模块和数据输出控制模块,其中:
所述数据输入控制模块用于将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块;
所述数据缓存模块用于存储上述8字节数据组,并在接收到LZ77压缩模块发出的读请求时,为该8字节数据组加上标示字节,将得到的9个字节长度的数据以数据源的形式传输至LZ77压缩模块;
所述LZ77压缩模块用于对上述待压缩的数据源采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块;
所述数据输出控制模块用于将上述LZ77数据包以8字节组包的形式输出。
作为本发明的一种优化结构:所述数据缓存模块包括M个随机存取存储器,所述M个随机存取存储器的输入端共同连接数据输入控制模块的输出端,所述M个随机存取存储器的输出端共同连接LZ77压缩模块的输入端,每个随机存取存储器的宽度为8字节,其中,M为大于等于2的自然数。
本发明还设计了一种基于权利要求1所述的LZ77压缩算法硬件加速系统的加速方法,包括如下具体步骤:
步骤(1):所述数据输入控制模块将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块;
步骤(2):所述数据缓存模块用于存储上述8字节数据组,并在接收到LZ77压缩模块发出的读请求时,为该8字节数据组加上标示字节,将得到的9个字节长度的数据以数据源的形式传输至LZ77压缩模块;
步骤(3):所述LZ77压缩模块将接收到的待压缩数据源采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块;
步骤(4):所述数据输出控制模块将上述LZ77数据包以8字节组包的形式传输至接口,以便接口进行读取。
本发明还设计了一种基于权利要求2所述的LZ77压缩算法硬件加速系统的加速方法,包括如下具体步骤:
步骤(1):所述数据输入控制模块将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块;
步骤(2):所述数据缓存模块将上述8字节数据组交替缓存至M个随机存取存储器,当LZ77压缩模块向其发起读请求时,所述读请求同时发送到所有随机存取存储器,所述数据缓存模块为随机存取存储器中的8字节数据组加上标示字节,即向LZ77压缩模块提供9个字节长度的数据,其中,M为大于等于2的自然数;
步骤(3):所述LZ77压缩模块将接收到的9个字节长度的数据采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块;
步骤(4):所述数据输出控制模块将上述LZ77数据包以8字节组包的形式输出。
作为本发明的一种优化方法:所述步骤(3)还包括如下具体处理:
步骤(31):所述LZ77压缩模块对接收到的9个字节长度的数据计算Hash值;
步骤(32):所述LZ77压缩模块根据上述Hash值再次向数据缓存模块发出读请求,从数据缓存模块中读取9字符;
步骤(33):所述LZ77压缩模块将此次读取的I个字符与历史字符进行对比,若匹配,则将收到的9个字节长度的数据采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块,若不匹配,则转而执行步骤(32)。
本发明与现有技术相比具有如下优点:
1.本发明提供了一种LZ77压缩算法硬件加速系统及加速方法,采用可编程逻辑器件(FPGA)实现LZ77压缩算法,通过采用数据缓存模块加速LZ77压缩算法,从而有效的提高了现有LZ77压缩算法的处理效率;
2.本发明所设计的一种LZ77压缩算法硬件加速系统及加速方法不排它,该硬件加速系统及加速方法也可以应用于利用LZ77压缩原理的算法中,如Gzip算法、LZO算法;LZ77变型和类似算法中,如LZW算法、LZSS算法,等。
附图说明
图1示出本发明所设计的一种LZ77压缩算法硬件加速系统的结构示意图;
图2示出本发明提供的一种LZ77压缩算法硬件加速系统的另一具体实施方式的结构示意图;
图3示出一般数据缓存模块的具体实施方式的结构示意图;
图4示出本发明提供的一种LZ77压缩算法硬件加速系统的一个实施例中数据缓存模块的具体实施方式的结构示意图;
图5示出本发明实施例提供的一种LZ77压缩算法硬件加速系统的加速方法流程图;
图6示出本发明设计的加速方法的另一具体实施例的流程图;
图7示出本发明所设计的加速方法的另一具体实施例的流程图;
图8示出本发明所设计的加速方法的一个具体应用例的流程图。
具体实施方式
下面结合附图对本发明作进一步的详细说明:
如图1所示,本发明设计了一种LZ77压缩算法硬件加速系统,包括数据输入控制模块、数据缓存模块、LZ77压缩模块和数据输出控制模块,其中:
所述数据输入控制模块用于将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块;
所述数据缓存模块用于存储上述8字节数据组,当LZ77压缩模块向其发起读请求时为8字节数据组加上标示字节,即将I个字节长度的数据以数据源的形式传输至LZ77压缩模块,其中,I=9;
所述LZ77压缩模块用于对上述待压缩数据源采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块;
所述数据输出控制模块用于将上述LZ77数据包以8字节组包的形式输出。
如图2所示,作为本发明的一种优化结构:所述数据缓存模块包括M个随机存取存储器,所述M个随机存取存储器的输入端共同连接数据输入控制模块的输出端,所述M个随机存取存储器的输出端共同连接LZ77压缩模块的输入端,每个随机存取存储器的宽度为N字节,其中,M为大于等于2的自然数,N=8。
图3示出一般数据缓存模块的具体实施方式的结构示意图;
如图3所示,采用RAM实现的传统的数据缓存模块,RAM的数据宽度为8字节,深度可以根据具体的设计进行配置,图中的X、Y代表任意字符。为方便说明,现在假设图2中的LZ77压缩模块向数据缓存模块发起读请求,请求读I=9个字符,则如图3所示,用Y表示的字符为所要读取的字符,不难发现,读取9个字符需要进行2次RAM读取,由于RAM自身硬件的因素,每读取一次数据时需要2~3个周期,读取两次则需要4~6个周期。
图4示出本发明提供的一种LZ77压缩算法硬件加速系统的一个实施例中数据缓存模块的具体实施方式的结构示意图;
如图4所示,采用两个RAM实现的数据缓存模块,其中,两个RAM可以和图2中两个RAM具有相同或相似结构,两个RAM的数据宽度为8字节,深度可以根据具体的设计进行配置,图中的的X、Y代表任意字符。
为方便说明,现在假设图2中的LZ77压缩模块向数据缓存模块发起读请求,请求读I=9个字符,则如图4所示,用Y表示的字符为所要读取的字符,则在读取时可以同时向两个RAM发送读地址和读使能,不难发现,读取9个字符只需要进行1次RAM读取,相比图3所示的传统的数据缓存模块,本设计可以节省2~3个周期,当需要频繁访问数据缓存模块时,本设计将节省大量的时间。
从图4所给出的实施例可以看出,当增加数据缓存模块中RAM的个数M时,或者增加RAM的宽度N时,可以满足在一次RAM读取中读取I个字符。
如图5所示,本发明还设计了一种LZ77压缩算法硬件加速系统的加速方法,包括如下具体步骤:
步骤(1):所述数据输入控制模块将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块;
步骤(2):所述数据缓存模块存储上述8字节数据组,当LZ77压缩模块向其发起读请求时为8字节数据组加上标示字节,即将I个字节长度的数据以数据源的形式传输至LZ77压缩模块,其中,I=9;
步骤(3):所述LZ77压缩模块将接收到的待压缩数据源采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块;
步骤(4):所述数据输出控制模块将上述LZ77数据包以8字节组包的形式传输至接口,以便接口进行读取。
如图6所示,作为本发明的一种优化方法:包括如下具体步骤:
步骤(1):所述数据输入控制模块将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块;
步骤(2):所述数据缓存模块将上述8字节数据组交替缓存至M个随机存取存储器之中的一个,当LZ77压缩模块向其发起读请求时,所述数据缓存模块为8字节数据组加上标示字节,即向LZ77压缩模块提供I个字节长度的数据,其中,M为大于等于2的自然数,I=9;
步骤(3):所述LZ77压缩模块将接收到的I个字节长度的数据采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块;
步骤(4):所述数据输出控制模块将上述LZ77数据包以8字节组包的形式传输至接口,以便接口进行读取。
如图7所示,作为本发明的一种优化方法:所述步骤(3)还包括如下具体处理:
步骤(31):所述LZ77压缩模块对接收到的I个字节长度的数据计算Hash值;
步骤(32):所述LZ77压缩模块根据上述Hash值再次向数据缓存模块发出读请求,从数据缓存模块中读取I个字符;
步骤(33):所述LZ77压缩模块将此次读取的I个字符对比当前字符与历史字符进行对比,若匹配,则将收到的I个字节长度的数据采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块,若不匹配,则转而执行步骤(32)。
图8示出本发明提供的加速方法的一个具体应用例的流程图;
步骤a:将输入的数据组包成N字节长度,例如,将输入的数据组包成N(N=8)字节长度;
步骤b:将长度为N字节的数据交替缓存至M个RAM之中的一个,例如,将数据输入控制模块传输过来的8字节存储在缓存模块中,当LZ77压缩模块发起读请求(请求读9个字节)时将数据传输给LZ77压缩模块;
步骤c:当LZ77模块发出读请求时,向LZ77压缩模块提供I个字节长度的数据,例如,向LZ77压缩模块提供I=9个字节长度的数据;
步骤d:计算Hash值,例如,采用Hash计算公式对待压缩字符计算Hash值;
步骤e:向数据缓存模块发出读请求,读取I个字符,例如,向缓存模块发出请求读取I=9个字符;
步骤f:对比当前读取的字符与历史字符,输出压缩结果,例如,比对结果为出现匹配,则输出压缩后的结果;
步骤g:控制压缩后的数据传输至接口,以便接口读取压缩后的数据,例如,控制压缩后的数据以8字节组包的方式传输至接口,方便接口处理数据。
参考前述本发明示例性的描述,本领域技术人员可以知晓本发明具有以下优点:
本发明提供了一种LZ77压缩算法硬件加速系统及加速方法,采用可编程逻辑器件(FPGA)实现LZ77压缩算法,通过采用数据缓存模块加速LZ77压缩算法,从而有效的提高了现有LZ77压缩算法的处理效率。
本发明提供了一种LZ77压缩算法硬件加速系统及方法,采用数据缓存模块加速算法的处理过程,而且数据缓存模块可以根据设计需要做适当调整,如可以更改RAM的个数M,更改RAM的位宽N,达到最优效果。
本发明提供了一种LZ77压缩算法硬件加速系统及方法,该硬件加速系统及方法也可以应用于利用LZ77压缩原理的算法中,如Gzip算法、LZO算法;LZ77变型和类似算法中,如LZW算法、LZSS算法等。

Claims (5)

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压缩算法硬件加速系统的加速方法,其特征在于,包括如下具体步骤:
步骤(1):所述数据输入控制模块将控制接口传输过来的数据打包成8字节数据组,并传输至数据缓存模块;
步骤(2):所述数据缓存模块用于存储上述8字节数据组,并在接收到LZ77压缩模块发出的读请求时,为该8字节数据组加上标示字节,将得到的9个字节长度的数据以数据源的形式传输至LZ77压缩模块;
步骤(3):所述LZ77压缩模块将接收到的待压缩数据源采用LZ77压缩方法压缩成LZ77数据包,并将LZ77数据包传输至数据输出控制模块;
步骤(4):所述数据输出控制模块将上述LZ77数据包以8字节组包的形式传输至接口,以便接口进行读取。
4.一种基于权利要求2所述的LZ77压缩算法硬件加速系统的加速方法,其特征在于,包括如下具体步骤:
步骤(1):所述数据输入控制模块将控制接口传输过来的数据打包成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)。
CN2013103971987A 2013-09-04 2013-09-04 一种lz77压缩算法硬件加速系统及加速方法 Pending CN103475375A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2013103971987A CN103475375A (zh) 2013-09-04 2013-09-04 一种lz77压缩算法硬件加速系统及加速方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2013103971987A CN103475375A (zh) 2013-09-04 2013-09-04 一种lz77压缩算法硬件加速系统及加速方法

Publications (1)

Publication Number Publication Date
CN103475375A true CN103475375A (zh) 2013-12-25

Family

ID=49800102

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2013103971987A Pending CN103475375A (zh) 2013-09-04 2013-09-04 一种lz77压缩算法硬件加速系统及加速方法

Country Status (1)

Country Link
CN (1) CN103475375A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104202054A (zh) * 2014-09-16 2014-12-10 东南大学 一种硬件lzma压缩实现系统及方法
CN104660615A (zh) * 2015-03-17 2015-05-27 东南大学 一种高效数据压缩加密系统
CN105207678A (zh) * 2015-09-29 2015-12-30 东南大学 一种改进型lz4压缩算法的硬件实现系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023509A (zh) * 2012-11-14 2013-04-03 无锡芯响电子科技有限公司 一种硬件lz77压缩实现系统及其实现方法
CN103095305A (zh) * 2013-01-06 2013-05-08 中国科学院计算技术研究所 一种硬件lz77的压缩实现系统及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023509A (zh) * 2012-11-14 2013-04-03 无锡芯响电子科技有限公司 一种硬件lz77压缩实现系统及其实现方法
CN103095305A (zh) * 2013-01-06 2013-05-08 中国科学院计算技术研究所 一种硬件lz77的压缩实现系统及方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104202054A (zh) * 2014-09-16 2014-12-10 东南大学 一种硬件lzma压缩实现系统及方法
CN104660615A (zh) * 2015-03-17 2015-05-27 东南大学 一种高效数据压缩加密系统
CN105207678A (zh) * 2015-09-29 2015-12-30 东南大学 一种改进型lz4压缩算法的硬件实现系统
CN105207678B (zh) * 2015-09-29 2018-10-26 东南大学 一种改进型lz4压缩算法的硬件实现系统

Similar Documents

Publication Publication Date Title
CN107027036A (zh) 一种fpga异构加速平台的解压缩方法、装置及系统
JP6366249B2 (ja) データ圧縮装置及び方法、データ圧縮装置を含むメモリシステム
CN104202054A (zh) 一种硬件lzma压缩实现系统及方法
KR101992274B1 (ko) 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들
CN105207678B (zh) 一种改进型lz4压缩算法的硬件实现系统
US10680643B2 (en) Compression scheme with control of search agent activity
US8593307B2 (en) Methods of compressing data in storage device
Bartík et al. LZ4 compression algorithm on FPGA
CN101699822A (zh) 一种文件上传方法、装置和海量存储系统
CN105553937A (zh) 数据压缩的系统和方法
CN104660615A (zh) 一种高效数据压缩加密系统
CN202931289U (zh) 一种硬件lz77压缩实现系统
CN104199951B (zh) 网页处理方法及装置
CN103095305A (zh) 一种硬件lz77的压缩实现系统及方法
CN103475375A (zh) 一种lz77压缩算法硬件加速系统及加速方法
US11231868B2 (en) System and method for performing computational storage utilizing a hardware accelerator
CN104954497A (zh) 一种云存储系统中数据传输方法和系统
CN103152606B (zh) 视频文件处理方法及装置、系统
CN104410424A (zh) 嵌入式设备内存数据的快速无损压缩方法
CN115395961A (zh) 基于联合中间件的数据无损压缩及加密传输方法
CN102521299A (zh) 资源描述框架数据的处理方法
KR102072412B1 (ko) 데이터 압축 회로의 동작 방법과 상기 방법을 수행할 수 있는 장치들
CN103106144B (zh) 一种内存索引压缩方法和装置
CN102316173A (zh) 网络地址聚合方法和装置
CN100401671C (zh) 一种文件传送方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20131225

WD01 Invention patent application deemed withdrawn after publication