CN103095305A - 一种硬件lz77的压缩实现系统及方法 - Google Patents
一种硬件lz77的压缩实现系统及方法 Download PDFInfo
- Publication number
- CN103095305A CN103095305A CN2013100031452A CN201310003145A CN103095305A CN 103095305 A CN103095305 A CN 103095305A CN 2013100031452 A CN2013100031452 A CN 2013100031452A CN 201310003145 A CN201310003145 A CN 201310003145A CN 103095305 A CN103095305 A CN 103095305A
- Authority
- CN
- China
- Prior art keywords
- data
- compression
- module
- compressed
- dictionary
- 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
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供一种硬件LZ77的压缩实现系统及方法,该方法包括:步骤1.缓存待压缩的数据;步骤2.利用乒乓操作提取所述待压缩的数据,并交替使用哈希表和字典链表对其进行压缩编码;步骤3.对压缩编码后的数据中的非定长数据进行拼接处理;步骤4.缓存压缩后的数据和拼接处理后的数据。本发明采用FPGA实现LZ77压缩功能,通过采用数据写入缓存模块和数据写出缓存模块实现数据的乒乓写入和乒乓读取功能,采用字典模块实现字典的交替更新和使用,从而使得LZ77压缩算法模块达到最高的效率,并且通过压缩算法模块和非定长码元拼接模块的并行操作,提高现有的LZ77压缩算法的处理效率。
Description
技术领域
本发明涉及数据压缩技术,特别是涉及以一种硬件LZ77的压缩系统及方法。
背景技术
随着信息和通信技术的迅猛发展,数据交换量日益增大,大规模的数据处理也变的更加的繁杂。对于如此庞大的数据必须进行有效的压缩,才能够有效的减少数据的存储量,最大限度的合理利用有限的数据传输带宽。除此之外,压缩后的数据在一定程度上是对原始数据的加密,能够更好的保护数据。
数据压缩可分成两种类型,一种叫做无损压缩,另一种叫做有损压缩。
无损压缩是指使用压缩后的数据进行重构(或者叫做还原,解压缩),重构后的数据与原来的数据完全相同;无损压缩用于要求重构的信号与原始信号完全一致的场合。一个很常见的例子是磁盘文件的压缩。根据目前的技术水平,无损压缩算法一般可以把普通文件的数据压缩到原来的1/2~1/4。大多数压缩程序使用基于自适应字典的LZ算法来缩小文件。“LZ”指的是此算法的发明者Lempel和Ziv,“字典”指的是对数据块进行归类的方法。
目前,绝大部分的压缩还是有软件实现,对数据的压缩处理操作仍然是由中央处理器(CPU)来完成的,当面对海量数据处理时,必然会占用大量的CPU资源,使得在进行数据压缩的同时进行其他操作变成了难题。除此之外,软件压缩是一种顺序进行的操作,无法取得高效率的并行运算。
因此,如何有效的提高压缩算法的效率,减轻海量数据压缩给CPU带来的压力成为了现有的软件压缩解压缩技术的主要问题。
发明内容
本发明的发明目的是提供一种硬件LZ77的压缩实现系统及方法,以能够有效的提高LZ77压缩算法的效率,将CPU从海量数据压缩中解脱出来。
为实现上述目的,本发明提供了一种硬件LZ77的压缩实现系统,该系统包括:
数据写入缓存模块,缓存待压缩的数据;
压缩处理模块,利用乒乓操作提取所述待压缩的数据,并交替使用哈希表和字典链表对其进行压缩编码;
拼接处理模块,对压缩编码后的数据中的非定长数据进行拼接处理;
数据读出缓存模块,缓存压缩后的数据和拼接处理后的数据。
进一步的,所述数据写入缓存模块包括:
使用多路选择器将待压缩的数据,存储到两个数据存储装置中。
进一步的,所述压缩处理模块包括:
交替压缩模块,取部分数据进行哈希变换,在哈希表中查找,若未找到,则所述部分数据是新字符,以新字符编码输出非定长数据,若找到,则所述部分数据是重复字符,结合字典链表以此为数据头寻找最大的匹配长度,以重复字符编码输出非定长数据;
数据更新模块,压缩过程中,根据哈希表和字典链表反馈的信号,对待压缩的数据进行相应的读取操作,对哈希表和字典链表中的数据进行相应的更新。
进一步的,所述拼接处理模块包括:
转换处理模块,利用移位寄存器将所述非定长数据拼接成定长数据;
计算处理模块,计算压缩后的数据个数,与压缩前数据个数比较,若压缩后的数据个数多于压缩前的数据个数,选取直接存储的方式,若压缩后的数据个数少于压缩前的数据个数,选取压缩存储的方式;
对齐处理模块,添加压缩后的数据块头,并对压缩后的数据尾部进行字节对齐处理。
进一步的,所述数据读出缓存模块中:
若一个数据块未完成压缩,则使用写入数据多路选择器,选择将压缩后的数据写入数据存储装置;
若一个数据块完成压缩,则利用读出数据多路选择器,选择读出对应的数据存储装置中的数据。
为实现上述目的,本发明还提供一种硬件LZ77的压缩实现方法,该方法包括:
步骤1,缓存待压缩的数据;
步骤2,利用乒乓操作提取所述待压缩的数据,并交替使用哈希表和字典链表对其进行压缩编码;
步骤3,对压缩编码后的数据中的非定长数据进行拼接处理;
步骤4,缓存压缩后的数据和拼接处理后的数据。
进一步的,所述步骤1包括:
使用多路选择器将待压缩的数据,存储到两个数据存储装置中。
进一步的,所述步骤2包括:
步骤21,取部分数据进行哈希变换,在哈希表中查找,若未找到,则所述部分数据是新字符,以新字符编码输出非定长数据,若找到,则所述部分数据是重复字符,结合字典链表以此为数据头寻找最大的匹配长度,以重复字符编码输出非定长数据;
步骤22,压缩过程中,根据哈希表和字典链表反馈的信号,对待压缩的数据进行相应的读取操作,对哈希表和字典链表中的数据进行相应的更新。
进一步的,所述步骤3包括:
步骤31,利用移位寄存器将所述非定长数据拼接成定长数据;
步骤32,计算压缩后的数据个数,与压缩前数据个数比较,若压缩后的数据个数多于压缩前的数据个数,选取直接存储的方式,若压缩后的数据个数少于压缩前的数据个数,选取压缩存储的方式;
步骤33,添加压缩后的数据块头,并对压缩后的数据尾部进行字节对齐处理。
进一步的,所述步骤4中:
若一个数据块未完成压缩,则使用写入数据多路选择器,选择将压缩后的数据写入数据存储装置;
若一个数据块完成压缩,则利用读出数据多路选择器,选择读出对应的数据存储装置中的数据。
本发明的有益功效在于:
1.采用FPGA(Field Programmable Gate Arry)实现LZ77压缩功能,通过采用数据写入缓存、数据读出缓存的方法实现数去写入和读出的乒乓操作,提高了LZ77压缩的效率。
2.采用交替使用和初始化哈希表和字典链表,实现了字典初始化与压缩的并行操作,从一定程度上提高了LZ77压缩的效率。
3.采用LZ77编码和非定长码元拼接实现了LZ77压缩编码和非定长码元高速拼接的并行操作,进一步提升了LZ77压缩的效率。
4.采用压缩模式选择和数据直接存储实现了数据直接存储和压缩存储两种模式,保证了LZ77压缩的压缩比,确保了压缩的性能。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1A为本发明的硬件LZ77的压缩实现系统示意图;
图1B为本发明的硬件LZ77的压缩实现方法流程图;
图1C为本发明提供的硬件LZ77压缩实现系统的结构示意图;
图2为本发明提供的硬件LZ77压缩实现系统的一个具体实施方式的结构示意图;
图3为本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中数据写入缓存模块的具体实施方式的结构示意图;
图4为本发明提供的硬件LZ77压缩实现系统的另一个具体实施方式的结构示意图;
图5为本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中压缩算法模块的具体实施方式的结构示意图;
图6为本发明提供的硬件LZ77压缩实现系统的另一个具体实施方式的结构示意图;
图7为本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中字典模块的具体实施方式的结构示意图;
图8为本发明提供的硬件LZ77压缩实现系统的另一个具体实施方式的结构示意图;
图9是本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中非定长码元拼接模块的具体实施方式的结构示意图;
图10为本发明提供的硬件LZ77压缩实现系统的另一个具体实施方式的结构示意图;
图11为本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中数据读出缓存模块的具体实施方式结构示意图;
图12为本发明提供的硬件LZ77压缩实现系统的另一个具体实施方式的结构示意图;
图13为本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中哈希表模块或者字典链表模块的具体实施方式的结构示意图;
图14为本发明提供的硬件LZ77压缩实现系统的另一个具体实施方式的结构示意图;
图15为本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中非定长码元到定长码元转换模块的具体实施方式的结构示意图;
图16为本发明提供的硬件LZ77压缩实现方法的流程图;
图17为本发明提供的硬件LZ77压缩实现方法的另一个实施实例的流程图;
图18为本发明提供的硬件LZ77压缩实现方法的另一个实施实例的流程图;
图19为本发明提供的硬件LZ77压缩实现方法的另一个实施实例的流程图;
图20为本发明提供的硬件LZ77压缩实现方法的另一个实施实例的流程图;
图21为奔放名提供的硬件LZ77压缩实现方法的一个具体应用实例的流程图。
具体实施方式
下面参照附图用本发明的一个示例性实施实例对本发明进行全面细致的描述和说明。
图1A为本发明的硬件LZ77的压缩实现系统示意图。如图1A所示,该系统包括:
数据写入缓存模块100,缓存待压缩的数据;
压缩处理模块200,利用乒乓操作提取所述待压缩的数据,并交替使用哈希表和字典链表对其进行压缩编码;
拼接处理模块300,对压缩编码后的数据中的非定长数据进行拼接处理;
数据读出缓存模块400,缓存压缩后的数据和拼接处理后的数据。
进一步的,所述数据写入缓存模块100包括:
使用多路选择器将待压缩的数据,存储到两个数据存储装置中。
进一步的,所述压缩处理模块200包括:
交替压缩模块,取部分数据进行哈希变换,在哈希表中查找,若未找到,则所述部分数据是新字符,以新字符编码输出非定长数据,若找到,则所述部分数据是重复字符,结合字典链表以此为数据头寻找最大的匹配长度,以重复字符编码输出非定长数据;
数据更新模块,压缩过程中,根据哈希表和字典链表反馈的信号,对待压缩的数据进行相应的读取操作,对哈希表和字典链表中的数据进行相应的更新。
进一步的,所述拼接处理模块300包括:
转换处理模块,利用移位寄存器将所述非定长数据拼接成定长数据;
计算处理模块,计算压缩后的数据个数,与压缩前数据个数比较,若压缩后的数据个数多于压缩前的数据个数,选取直接存储的方式,若压缩后的数据个数少于压缩前的数据个数,选取压缩存储的方式;
对齐处理模块,添加压缩后的数据块头,并对压缩后的数据尾部进行字节对齐处理。
进一步的,所述数据读出缓存模块400中:
若一个数据块未完成压缩,则使用写入数据多路选择器,选择将压缩后的数据写入数据存储装置;
若一个数据块完成压缩,则利用读出数据多路选择器,选择读出对应的数据存储装置中的数据。
图1B为本发明的硬件LZ77的压缩实现方法流程图。如图1B所示,该方法包括:
步骤1,缓存待压缩的数据;
步骤2,利用乒乓操作提取所述待压缩的数据,并交替使用哈希表和字典链表对其进行压缩编码;
步骤3,对压缩编码后的数据中的非定长数据进行拼接处理;
步骤4,缓存压缩后的数据和拼接处理后的数据。
进一步的,所述步骤1包括:
使用多路选择器将待压缩的数据,存储到两个数据存储装置中。
进一步的,所述步骤2包括:
步骤21,取部分数据进行哈希变换,在哈希表中查找,若未找到,则所述部分数据是新字符,以新字符编码输出非定长数据,若找到,则所述部分数据是重复字符,结合字典链表以此为数据头寻找最大的匹配长度,以重复字符编码输出非定长数据;
步骤22,压缩过程中,根据哈希表和字典链表反馈的信号,对待压缩的数据进行相应的读取操作,对哈希表和字典链表中的数据进行相应的更新。
进一步的,所述步骤3包括:
步骤31,利用移位寄存器将所述非定长数据拼接成定长数据;
步骤32,计算压缩后的数据个数,与压缩前数据个数比较,若压缩后的数据个数多于压缩前的数据个数,选取直接存储的方式,若压缩后的数据个数少于压缩前的数据个数,选取压缩存储的方式;
步骤33,添加压缩后的数据块头,并对压缩后的数据尾部进行字节对齐处理。
进一步的,所述步骤4中:
若一个数据块未完成压缩,则使用写入数据多路选择器,选择将压缩后的数据写入数据存储装置;
若一个数据块完成压缩,则利用读出数据多路选择器,选择读出对应的数据存储装置中的数据。
图1C为本发明提供的硬件LZ77压缩实现系统的结构示意图。
如图1C所示,硬件LZ77压缩实现系统包100括:PCIE接口模块101、数据直接访问模块(DMA)102、数据打包解包模块103、数据写入缓存模块104、压缩算法模块105、字典模块106、非定长码元拼接模块107、数据读出缓存模块108。
其中,PCIE接口模块101,用于实现与上位机的通信。例如,上位机配置PCIE对应的寄存器,实现上位机与硬件LZ77压缩实现系统间数据的通信。
数据直接访问模块(DMA)102,用于实现数据的直接访问。例如,根据上位机配置的地址和数据长度,从磁盘或者数据存储装置中从指定的地址读取指定长度的数据,或者想指定的地址中写入指定长度的数据。
数据打包解包模块103,用于实现数据通信时对数据包的组包和解包操作。例如,从上位机读取数据时,解析传输至数据写入缓存模块的数据包,去除数据包头、数据包尾和数据校验信息;向上位机写入数据时,将从数据读出缓存模块中读取的数据添加数据包头、数据包尾和校验信息。
数据写入缓存模块104,用于缓存待压缩的数据。例如,从模块的接口写入待压缩的数据,经过数据写入缓存模块104,可以以乒乓方式读取待压缩的数据,减少待压缩数据的读取时间。
压缩算法模块105,用于将实现重复字符串的查找,计算重复字符串的匹配长度,进行LZ77编码。例如,从数据缓存模块104中读取一定量得字符串数据,对字符串进行哈希变换,从字典模块106中查找,根据字典模块106的反馈信号判断索取字符串数据是否为重复字符串,若是则寻找最大的匹配长度并编码输出,若不是,则以新字符编码输出;同时,根据字典模块106的反馈信号,从字典模块106中读取数据以获得最大的匹配长度,或者向字典模块106中写入最新的字典信息,完成字典模块106中数据的更新。
字典模块106,用于存储历史字符串。例如,一定量的字符串数据经过压缩算法模块105之后,会产生相应的控制信号,与字典模块106之间进行数据通信,将最新的字典信息存储在字典模块106中。
非定长码元拼接模块107,用于将非定长的编码高速拼接程定长的数据块。例如,一定量的字符串数据经过压缩算法模块105后变成了非定长的LZ77编码,非定长码元拼接模块107会将这些非定长的LZ77编码高速拼接成定长的数据。
数据读出缓存模块108,用于缓存压缩后的数据。例如,一个数据块已经完成数据压缩,利用读出数据多路选择器,选择读出对应的数据存储装置中的数据,同时,利用写入数据多路选择器,选择将压缩后的数据写入到另外一个数据存储装置中,利用两个存储装置的交替读写实现了读出压缩数据的乒乓操作。
图2为本发明提供的硬件LZ77压缩实现系统的一个具体实施方式的结构示意图。
如图2所示,硬件LZ77压缩实现系统200包括:PCIE接口模块201、数据直接访问模块(DMA)202、数据打包解包模块203、数据写入缓存模块204、压缩算法模块205、字典模块206、非定长码元拼接模块207、数据读出缓存模块208;其中PCIE接口模块201、数据直接访问模块(DMA)202、数据打包解包模块203、压缩算法模块205、字典模块206、非定长码元拼接模块207、数据读出缓存模块208可以分别和图1C中所示的PCIE接口模块101、数据直接访问模块(DMA)102、数据打包解包模块103、压缩算法模块105、字典模块106、非定长码元拼接模块107、数据读出缓存模块108具有相同的结构,这里不再过多的阐述其具体的技术内容。
如图2所示,数据写入缓存模块204进一步的包括:数据存储装置2041、数据存储装置2042和多路选择器2043。
其中,数据存储装置2041和数据存储装置2042,用于存储待压缩的数据。例如,可以采用随机存取存储器(RAM)或先入先出存储器(FIFO)等本专业认识所熟知的数据存储装置实现,数据存储装置的数据宽度(Width)和数据深度(Depth)可根据数据要求配置。
多路选择器2043,用于选择将压缩后的数据写入两个数据存储装置中的其中一个数据存储装置。例如,通过多路选择器2043将数据交替的写入数据存储装置2041和数据存储装置2042中,以实现数据写入的乒乓操作。
图3为本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中数据写入缓存模块的具体实施方式结构示意图。
如图3所示,数据写入缓存300模块包括:数据存储装置301、数据存储装置302和多路选择器303。再实施实例中具体的操作为,当硬件LZ77压缩系统初始化后,系统将开始向数据写入缓存模块300接口处写入待压缩数据,通过多路选择器(MUX)303选择将待压缩数据写入到两个数据存储装置中的一个,当一个数据存储装置已经数据写满,同时另一个数据存储装置已经数据读空时,向另一个数据存储装置中写入新的待压缩数据,如此的交替循环向两个数据存储装置中写入数据,以实现数据写入的乒乓操作,这个过程将持续到所有的数据块全部传输完毕为止。
从上述叙述中可见,通过数据写入缓存300可以实现数据写入的高度连续性,提高了在数据压缩时针对数据读操作的效率。
图4为本发明提供的硬件LZ77压缩实现系统的另一个具体实施方式的结构示意图。
如图4所示,硬件LZ77压缩实现系统400包括:PCIE接口模块401、数据直接访问模块(DMA)402、数据打包解包模块403、数据写入缓存模块404、压缩算法模块405、字典模块406、非定长码元拼接模块407、数据读出缓存模块408;其中PCIE接口模块401、数据直接访问模块(DMA)402、数据打包解包模块403、数据写入缓存模块404、字典模块406、非定长码元拼接模块407、数据读出缓存模块408可以分别和图1C中所示的PCIE接口模块101、数据直接访问模块(DMA)102、数据打包解包模块103、数据写入缓存模块104、字典模块106、非定长码元拼接模块107、数据读出缓存模块108具有相同的结构,这里不再过多的阐述其具体的技术内容。
如图4所示,压缩算法模块405进一步包括:数据暂存模块4051、字典读取模块4052、最大长度匹配模块4053、LZ77编码模块4054和字典更新模块4055。
其中,数据暂存模块4051,用于临时暂存一定量的数据。例如,读取m Byte的数据暂存在数据暂存模块4051中,便于压缩算法模块405的高效哈希变换。
字典读取模块4052,用于产生字典的读控制信号和读取字典中的数据。例如,对数据暂存模块4051中的数据进行哈希变换后,产生对应的控制信号和地址信号,读取字典中指定位置的信息,根据字典的反馈信息判断数据暂存模块4051中的数据是否为重复字符串,若是,则进行压缩处理;若不是,则进行不压缩处理。
最大长度匹配模块4053,用于计算出现字符串时的最大重复长度。例如,已经压缩过的数据中有“ab”和“abcde”,待压缩的数据为“abcde”,则通过最大长度匹配模块可以计算出重复字符串的最大重复长度,一定程度上提高了压缩的性能。
LZ77编码模块4054,用于对待压缩的数据进行相应的编码。例如,当字典读取模块4052反馈信号判定数据为重复字符串,同时由最大长度匹配模块4053计算出了最大匹配长度,则LZ77编码模块4054用重复字符串对应的编码方式进行编码替代原来的数据;当字典读取模块4052反馈信号判定数据为新字符时,则LZ77编码模块4054用新字符对应的编码代替原来的数据。
字典更新模块4055,用于产生字典的写控制信号和更新字典中的数据。例如,当确定字符为新字符或者字符串为重复字符串后,需要将字符或字符串的信息更新到字典中,字典更新模块产生字典的写控制信号,将字符或者字符串的信息写到相应字典的指定位置中。
图5为本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中压缩算法模块的具体实施方式的结构示意图。
如图5所示,压缩算法模块500包括:数据暂存模块501、字典读取模块502、最大长度匹配模块503、LZ77编码模块504和字典更新模块505。
数据暂存模块501中存储一定量的数据,由字典读取模块502针对其中的数据进行哈希变换后,产生相应的控制信号从字典中读取数据,根据字典反馈的信号判定数据是否为重复字符串,若是,则启动最大长度匹配模块503,计算重复字符串的最大重复长度,启动LZ77编码模块504进行重复字符串编码,若不是,则启动LZ77编码模块504进行新字符编码,同时,根据字典反馈的信号向字典中写入所需数量的更新数据。
由上述可见在压缩算法模块500中,对数据的读写操作及其的频繁,数据暂存模块501在一定的程度上减少了部分数据的读写操作,提高了哈希变换的效率,同时压缩算法模块500是一个相对较为独立的模块可以与其他的模块并行运行,因此将写入数据缓存300的功能发挥到了一个比较理想的状态。
图6为本发明提供的硬件LZ77压缩实现系统的另一个具体实施方式的结构示意图。
如图6所示,硬件LZ77压缩实现系统600包括:PCIE接口模块601、数据直接访问模块(DMA)602、数据打包解包模块603、数据写入缓存模块604、压缩算法模块605、字典模块606、非定长码元拼接模块607、数据读出缓存模块608;其中PCIE接口模块601、数据直接访问模块(DMA)602、数据打包解包模块603、数据写入缓存模块604、压缩算法模块605、非定长码元拼接模块607、数据读出缓存模块608可以分别和图1C中所示的PCIE接口模块101、数据直接访问模块(DMA)102、数据打包解包模块103、数据写入缓存模块104、压缩算法模块105、非定长码元拼接模块107、数据读出缓存模块108具有相同的结构,这里不再过多的阐述其具体的技术内容。
如图6所示,字典模块606进一步包括:哈希表模块6061、字典链表模块6062、索引初始化模块6063和链表初始化模块6064。
其中,哈希表模块6061,用于存储最新的历史字典信息。例如,“ab”[1]是之前压缩过的数据,而“ab”[2]是刚压缩好的数据,则哈希表模块6061会将最新的ab的信息即“ab”[2]的信息更新到哈希表模块6061中指定存储装置的指定位置。
字典链表模块6062,用于存储其他的历史字典信息。例如,“ab”[1]是之前压缩过的数据,而“ab”[2]是刚压缩好的数据,则哈希表模块6061会丢弃较旧的ab的信息即“ab”[1]的信息,此时字典链表模块6062接收哈希表模块6061丢弃的ab的信息即“ab”[1]的信息,将其存储到字典链表模块6062中指定存储装置的指定位置。
索引初始化模块6063,用于初始化哈希表模块6061。例如,当完成一个数据块的压缩,需要压缩另一个数据块时,需要对哈希表进行清空操作,此时索引初始化模块6063相应的对哈希表模块6061进行清空初始化操作。
链表初始化模块6064,用于初始化字典链表模块6062。例如,当完成一个数据块的压缩,需要压缩另一个数据块时,需要对字典链表进行清空操作,此时链表初始化模块6064相应的对字典链表模块6062进行清空初始化操作。
图7为本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中字典模块的具体实施方式的结构示意图。
如图7所示,字典模块700包括:哈希表模块701、字典链表模块702、索引初始化模块703和链表初始化模块704。
压缩数据时,哈希表模块701反馈数据,用以判断待压缩的数据时新字符还是重复字符串,一旦确定后,哈希表模块701接收最新的字典信息,将较旧的字典信息丢弃;字典链表模块702接收哈希表模块701丢弃的数据,并将其存储作为其他的历史字典信息;当硬件LZ77压缩系统初始化或者当完成一个数据块压缩时,索引初始化模块703和链表初始化模块704启动,将哈希表模块701和字典链表模块702中的数据清空。
图8为本发明提供的硬件LZ77压缩实现系统的另一个具体实施方式的结构示意图。
如图8所示,硬件LZ77压缩实现系统800包括:PCIE接口模块801、数据直接访问模块(DMA)802、数据打包解包模块803、数据写入缓存模块804、压缩算法模块805、字典模块806、非定长码元拼接模块807、数据读出缓存模块808;其中PCIE接口模块801、数据直接访问模块(DMA)802、数据打包解包模块803、数据写入缓存模块804、压缩算法模块805、字典模块806、数据读出缓存模块808可以分别和图1C中所示的PCIE接口模块101、数据直接访问模块(DMA)102、数据打包解包模块103、数据写入缓存模块104、压缩算法模块105、字典模块106、数据读出缓存模块108具有相同的结构,这里不再过多的阐述其具体的技术内容。
如图8所示,非定长码元拼接模块800进一步包括:非定长码元到定长码元转换模块8071、文件大小计算模块8072、压缩模式选择模块8073和数据直接存储模块8074。
其中,非定长码元到定长码元转换模块8071,用于将非定长的数据编码拼接程定长的数据。例如,有非定长的数据编码A和B,其中A编码长度为16,B编码长度为20,则经过非定长码元到定长码元转换模块8071可变成定长的数据和剩余的编码,定长的数据可以是8位、32位或者64位等,同时在压缩后的数据块前添加数据块头,并且当数据块尾字节不对齐时补齐,使数据字节对齐。
文件大小计算模块8072,用于计算文件压缩后的数据个数,并与压缩前的文件数据个数比较。例如,文件数据压缩前的数据个数为32K,而压缩后的数据个数为20K。对以上的两个信息进行比较,反馈相应的状态和信号给压缩模式选择模块8073.
压缩模式选择模块8073,用于根据文件压缩前和压缩后的数据个数的多少选取压缩模式。例如,如果数据压缩前的数据个数为32K,压缩后的数据个数为20K,则选取压缩存储模式;如果压缩前的数据个数为1K,压缩后的数据个数为2K,则选取直接存储模式。
数据直接存储模块8074,用于选择直接存储压缩模式压缩数据时对数据的操作。例如,如果压缩前得数据个数为1K,压缩后的数据个数为2K,压缩模式选择模块8073选择直接存储模式,数据直接存储模块8074启动,直接从数据写入缓存模块中读取对应的数据,并添加相应的数据块头。
图9为本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中非定长码元拼接模块的具体实施方式的结构示意图。
如图9所示,非定长码元拼接模块900包括:非定长码元到定长码元转换模块901、文件大小计算模块902、压缩模式选择模块903和数据直接存储模块904。
当有非定长码元从非定长码元拼接模块900的接口输入时,非定长码元到定长码元转换模块901将非定长码元进行暂存和拼接操作直至能够组成定长码元时输出,同时文件大小计算模块902计算出经过非定长码元到定长码元转换模块901处理后的数据的个数,并与压缩前的数据个数进行比较,把结果告诉压缩模式选择模块903,选取合适的压缩模式,如果压缩模式选择模块903选取的是直接存储模式,启动数据直接存储模块904。
通过上述的内容可见,非定长码元拼接模块900与压缩算法模块之间完全是一个并行运行的流水线结构,这样大大的加快了数据压缩的效率。
图10为本发明提供的硬件LZ77压缩实现系统的另一个具体实施方式的结构示意图。
如图10所示,硬件LZ77压缩实现系统1000包括:PCIE接口模块1001、数据直接访问模块(DMA)1002、数据打包解包模块1003、数据写入缓存模块1004、压缩算法模块1005、字典模块1006、非定长码元拼接模块1007、数据读出缓存模块1008;其中PCIE接口模块1001、数据直接访问模块(DMA)1002、数据打包解包模块1003、数据写入缓存模块1004、压缩算法模块1005、字典模块1006、非定长码元拼接模块1007可以分别和图1C中所示的PCIE接口模块101、数据直接访问模块(DMA)102、数据打包解包模块103、数据写入缓存模块104、压缩算法模块105、字典模块106、非定长码元拼接模块107具有相同的结构,这里不再过多的阐述其具体的技术内容。
如图10所示,数据读出缓存模块1008包括:数据存储装置10081、数据存储装置10082、写入数据多路选择器10083和读出数据多路选择器10084。
其中,数据存储装置10081和数据存储装置10082,用于存储压缩后的数据,可以采用随机存取存储器(RAM)或者先入先出存储器(FIFO)等本专业人士所熟知的存储装置实现。
写入数据多路选择器10083,用于选择将压缩后的数据写入两个数据存储装置中的其中一个数据存储装置。例如,要将压缩后数据存入数据存储装置10081,则写入数据多路选择器10083选通数据接口和数据存储装置10081之间的信号和数据通路,从而可向数据存储装置10081中写入压缩后的数据。
读出数据多路选择器10084,用于选择读出两个数据存储装置中的其中一个数据存储装置中的数据。例如,当前正在向数据存储装置10081中写入压缩后的数据,同时,有数据读出信号产生,则将数据存储装置10082中的数据读出;同样如果正在向数据存储装置10082中写入压缩后的数据,同时,有数据读出信号产生,则将数据存储装置10081中的数据读出。
图11为本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中数据读出缓存模块的具体实施方式的结构示意图。
如图11所示,数据读出缓存模块1100包括:数据存储装置1101、数据存储装置1102、写入多路选择器1103和读出多路选择器1104。
当正在执行数据压缩时,由写入多路选择器1103选择数据存储装置1101或数据存储装置1102用来存储压缩后的数据,同时若有数据读出信号产生,则由读出多路选择器1104选择另外一个数据存储装置,并读取该数据存储装置中的数据。例如,写入多路选择器1103选择数据存储装置1101用于存储压缩后的数据,若此时有读出信号产生,则由读出多路选择器1104选择数据存储装置1102,并将其中的数据读出,当数据存储装置1102中的数据全部读出,等待完成一个数据块得压缩,即数据存储装置中1101中的数据已准备好可以读出时,写入多路选择器1103转而选择数据存储器1102用于存储压缩后的数据,如此反复,实现了数据读出的乒乓,提高了数据读出时的效率。
由上述过程可见,数据读出缓存模块1100与压缩算法模块和非定长码元拼接模块也是并行运行的,这也从一定程度上加速了压缩的效率。
图12为本发明提供的硬件LZ77压缩实现系统的另一个具体实施方式的结构示意图。
如图12所示,硬件LZ77压缩实现系统1200包括:PCIE接口模块1201、数据直接访问模块(DMA)1202、数据打包解包模块1203、数据写入缓存模块1204、压缩算法模块1205、哈希表模块12061、字典链表模块12062、索引初始化模块12063、链表初始化模块12064、非定长码元拼接模块1207、数据读出缓存模块1208;其中PCIE接口模块1201、数据直接访问模块(DMA)1202、数据打包解包模块1203、数据写入缓存模块1204、压缩算法模块1205、索引初始化模块12063、链表初始化模块12064、非定长码元拼接模块1207、数据读出缓存模块1208可以分别和图6中所示的PCIE接口模块601、数据直接访问模块(DMA)602、数据打包解包模块603、数据写入缓存模块604、压缩算法模块605、索引初始化模块6063、链表初始化模块6064、非定长码元拼接模块607、数据读出缓存模块608具有相同的结构,这里不再过多的阐述其具体的技术内容。
如图12所示,哈希表模块12061进一步包括:数据存储装置120611、数据存储装置120612、多路选择器120613和初始化多路选择器120614;字典链表模块12062进一步包括:数据存储装置120621、数据存储装置120622、多路选择器120623和初始化多路选择器120624。
其中数据存储装置120611和数据存储装置120612,用于存储最新的历史字典信息。数据存储装置120621和数据存储装置120622,用于存储字典的其他历史字典信息。
多路选择器120613,用于选择使用两个数据存储装置中的其中的一个数据存储装置存储最新的历史字典信息;多路选择器120623,用于选择使用两个数据存储装置中的其中一个数据存储装置存储其他的历史字典信息。
初始化多选择器120614,用于选择初始换两个数据存储装置中的一个数据存储装置,交替初始化两个数据存储装置,提高压缩的效率;同样初始化多路选择器120624也是起到这个作用。
图13为本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中哈希表模块或者字典链表模块的具体实施方式的结构示意图。
如图13所示,哈希表模块或者字典链表模块1300包括:数据存储装置1301、数据存储装置1302、多路选择器1303和初始化所路选择器1304。
压缩数据时,多路选择器1303选择需要使用的数据存储装置1301或数据存储装置1302,用选择的数据存储装置存储字典信息,同时初始化多路选择器1304选择另一个数据存储装置对数据存储装置中的字典信息进行清空操作。
由上述的过程可见,在压缩的过程中通过两对字典数据的交替使用和初始化,加块了压缩的效率。
图14为本发明提供的硬件LZ77压缩实现系统的另一个具体实施方式的结构示意图。
如图14所示,硬件LZ77压缩实现系统1400包括:PCIE接口模块1401、数据直接访问模块(DMA)1402、数据打包解包模块1403、数据写入缓存模块1404、压缩算法模块1405、字典模块1406、非定长码元到定长码元转换模块14071、文件大小计算模块14072、压缩模式选择模块14073、数据直接存储模块14074、数据读出缓存模块1408;其中PCIE接口模块1401、数据直接访问模块(DMA)1402、数据打包解包模块1403、数据写入缓存模块1404、压缩算法模块1405、字典模块1406、文件大小计算模块14072、压缩模式选择模块14073、数据直接存储模块14074、数据读出缓存模块1408可以分别和图8中所示的PCIE接口模块801、数据直接访问模块(DMA)802、数据打包解包模块803、数据写入缓存模块804、压缩算法模块805、字典模块806、文件大小计算模块8072、压缩模式选择模块8073、数据直接存储模块8074、、数据读出缓存模块808具有相同的结构,这里不再过多的阐述其具体的技术内容。
如图14所示,非定长码元到定长码元转换模块14071进一步包括:非定长码元拼接成较短定长数据模块140711和较短数据拼接成较长数据模块140712。
其中,非定长码元拼接成较短定长数据模块140711,用于将压缩算法模块输出的非定长编码拼接成较短的定长数据。例如,压缩算法模块输出编码中分别有:1比特、3比特、5比特、7比特、16bit,需要将这些数据拼接成8比特的整字型数据。
较短数据拼接成较长数据模块140712,用于将非定长码元拼接成较短定长数据模块140711输出的较短定长数据拼接成较长的数据。例如,将8比特的数据拼接成32比特或者64比特的数据。
图15为本发明提供的硬件LZ77压缩实现系统的一个具体实施实例中非定长码元到定长码元转换模块的具体实施方式的结构示意图。
如图15所示,非定长码元到定长码元转换模块1500包括:非定长码元拼接成较短定长数据模块1501和较短数据拼接成较长数据模块1502。
进行非定长码元到定长码元的拼接时,非定长数据传至非定长码元到定长码元转换模块1500的数据输入接口,先由非定长码元拼接成较短定长数据模块1501将非定长的编码拼接成较短的定长数据,再有较短数据拼接成较长数据模块1502将较短的定长数据拼接成较长的符合数据传输格式要求的定长数据输出,这个过程中,数据的拼接是流水化的,具有高速拼接的功能,与此同时也大大的减少了硬件资源的消耗。
图16为本发明提供的硬件LZ77压缩实现方法的流程图。
如图16所示硬件LZ77压缩实现方法的流程1600包括:步骤1601、步骤1602、步骤1603和步骤1604。
其中,步骤1601,缓存待压缩的数据。例如,利用多路选择器303、数据存储装置301和数据存储装置302实现数据乒乓写入的操作。
步骤1602,对字符串数据进行编码。例如,从暂存数据模块501中取数据送入字典读取模502中进行哈希变换,根据哈希表模块701的反馈信号判断所取数据是新字符还是重复字符串,结合最大长度匹配模块503和字典链表模块702计算得出最大的匹配长度和最大匹配字符串的指针后,送入LZ77编码模块504中进行LZ77非定长编码输出;同时,字典更新模块505将压缩了的数据信息,更新到哈希表模块701和字典链表数据模块702中。
步骤1603,拼接非定长的数据。例如,非定长数据送至非定长码元拼接成较短定长数据模块1501输出较短定长数据,再由较短数据拼接成较长数据模块1502输出传输数据指定的数据长度,结合文件大小计算模块902、压缩模式选择模块903和数据直接存储模块904选择适当的压缩模式输出压缩后的数据,同时,由文件大小计算模块902向压缩后的数据中添加数据块头信息,由压缩模式选择模块903将数据块尾进行字节对齐处理。
步骤1604,缓存压缩后的数据。例如,压缩后的数据送至读出数据缓存模块,由写入多路选择器1103选择将压缩后的数据存储在数据存储装置1101或者数据存储装置1102中;同时,由读出多路选择器1104选择将数据存储装置1101或者数据存储装置1102中压缩后的数据读出。
图17为本发明提供的硬件LZ77压缩实现方法的另一个实施实力的流程图。
如图17所示,硬件LZ77压缩实现方法的流程包括:步骤17011、步骤1702、步骤1703和步骤1704,其中步骤1702、步骤1703和步骤1704分别与图16所示的步骤1602、步骤1603和步骤1604进行相同或者相似的操作,在此不再进行过多的叙述。
步骤17011,使用数据多路选择器选择将待压缩的数据写入到两个数据存储装置中的其中一个数据存储装置中。例如,数据刚开始压缩,数据多路选择器303将待压缩的数据写入到数据存储装置301中,等到数据存储装置301中的数据写入完成时,数据多路选择器303将下个待压缩数据块写入到数据存储装置302中,等到数据存储装置302中的数据写入完成和数据存储装置301中的数据压缩完成,则多路选择器将数据写入到数据存储装置301中;或者在压缩过程中,正在压缩数据存储装置301中的待压缩数据时,多路选择器303将下一个待压缩的数据块写入到数据存储装置302中,等到数据存储装置302中的数据写入完成和数据存储装置301中的数据压缩完成,则多路选择器将数据写入到数据存储装置301中。如此的反复循环知道待压缩的数据全部传输完成,这一过程实现了数据传输的乒乓操作,提高了压缩的效率。
图18为本发明提供的硬件LZ77压缩实现方法的另一个实施实例的流程图。
如图18所示,硬件LZ77压缩实现方法的流程1800包括:步骤1801、步骤18021、步骤18022、步骤18023、步骤1803和步骤1804,其中步骤1801、步骤步骤1803和步骤1804分别图16中的步骤1601、步骤1603和步骤1604进行相同或者相似的操作,在此不再进行过多的叙述。
步骤18021,压缩数据时,取一定量的数据进行哈希变换,在哈希表中查找,若找到,则所取的一定量的数据是新字符,以新字符编码输出非定长编码,若找到,则所取的一定量的数据时重复字符串,以此为数据头寻找最大的匹配长度,以重复字符串编码输出非定长编码。例如,从暂存数据模块501中取数据送入字典读取模502中进行哈希变换,根据哈希表模块701的反馈信号判断所取数据是新字符还是重复字符串,结合最大长度匹配模块503和字典链表模块702计算得出最大的匹配长度和最大匹配字符串的指针后,送入LZ77编码模块504中进行LZ77非定长编码输出。
步骤18022,压缩过程中,根据哈希表和字典链表的反馈信号,对待压缩的数据进行相应的读取操作,对哈希表和字典链表中的数据进行相应的更新。例如,当经过哈希变换后确定字符是新字符时,字典更新模块505控制向哈希表模块701和字典链表模块702中更新字典信息;同时结合数据暂存模块501从数据存储模块301或者数据存储模块302中再次读取一定量的数据。
步骤18023,压缩过程中,交替初始化和使用两个哈希表和字典链表。例如,当哈希表模块701或者字典链表模块702中的多路选择器1303选择使用数据存储装置1301存储字典数据,则索引初始化模块703和链表初始化模块704分别对哈希表模块701和字典链表模块702中的数据存储装置1302进行清空或者初始化操作;当数据块压缩完成,要进行下一个数据块的压缩时,则初始化数据存储装置1301,选取数据存储装置1302用于字典存储。
由上述过程见,通过交替初始化和使用两个哈希表和字典链表可以实现字典的乒乓操作使用,提高了压缩的效率。
图19为本发明提供的一种硬件LZ77压缩实现方法的另一个实施实例的流程图。
如图19所示硬件LZ77压缩实现方法的流程1900包括:步骤1901、步骤1902、步骤19031、步骤19032、步骤19033、步骤19034和步骤1904,其中步骤1901、步骤1902和步骤1904分别与图16中的步骤1601、步骤1602和步骤1604进行相同或者相似的操作,在此不再进行过多的叙述。
步骤19031,利用移位寄存器将非定长的数据拼接成定长的数据。例如,非定长的数据送入非定长码元拼接成较短定长数据模块1501中拼接成8比特或者16比特的数据输出,再经过较短数据拼接成较长数据模块1502将较短的数据拼接成满足数据传输要求长度的较长定长数据。
步骤19032,计算压缩后的数据个数,预压缩前数据个数比较,选取适当的压缩模式,若压缩后的数据个数多于压缩前的数据个数,选取直接存储方式,从缓存待压缩的数据中读取,若压缩后的数据个数不多于压缩前的数据格式,选取压缩存储的方式。例如,经过文件大小计算模块902的计算后,压缩前的数据为1K,而压缩后的数据变为2K,则压缩模式选择模块903选择启动数据直接存储模块904从数据写入缓存模块中的数据存储装置301或者数据存储装置302中直接读取数据;但如果压缩前的数据为32K,压缩后的数据为20K,则压缩模式选择模块903选择压缩存储模式。
步骤19033,添加压缩后的数据块头。由文件大小计算模块902将数据头信息添加在压缩后的数据块的最前面。
步骤19034,对压缩后的数据尾部进行字节对齐处理。例如,假设压缩后的数据最后一个数据不满一个字节为“11”,则由压缩模式选择模块903对数据尾部进行字节对齐操作,将“11”补齐为“11001100”。
上述的过程与图16中的步骤1602是并行执行的,可见,这样的结构可以大大的提高压缩的效率。
图20为本发明提供的硬件LZ77压缩实现方法的另一个实施实例的流程图。
如图20所示,硬件LZ77压缩实现方法的流程2000包括:步骤2001、步骤2002、步骤2003、步骤20041和步骤20042,其中步骤2001、步骤2002和步骤2003分别和图16中的步骤1601、步骤1602和步骤1603进行相同或者相似的操作,在此不再进行过多的阐述。
步骤20041,使用写入数据多路选择器,选择压缩后的数据写入两个数据存储装置中的其中一个数据存储装置。例如,数据压缩时,写入数据多路选择器1103将压缩后的数据写入到数据存储装置1101中,等到该数据块中的数据全部压缩完成时,写入数据多路选择器1103将选择数据存储装置1102用于压缩后的数据的存储,同时如果有读出信号产生则读出数据存储器1101中的数据,等到数据存储装置1101中的数据读出完成和数据块压缩再次完成,则多路选择器将压缩后的数据写入到数据存储装置1101中。如此的反复循环知道待压缩的数据全部传输完成,这一过程实现了数据传输的乒乓操作,提高了压缩的效率。
步骤20042,当一个数据块已经完成压缩,则利用读出多路选择器,选择读出对应的数据存储装置中的数据。例如,数据压缩时,当有读出信号产生时,数据存储装置1101在被写入多路选择器1103使用时,读出数据多路选择器1104选择读取数据存储装置1102中的数据。如此的反复循环知道待压缩的数据全部传输完成,这一过程实现了数据传输的乒乓操作,提高了压缩的效率。
图21为本发明提供的硬件LZ77压缩实现方法的一个具体应用实例的流程图。
如图21所示,硬件LZ77压缩实现方法的流程2100包括:步骤2101、步骤2102、步骤2103、步骤2104、步骤2105、步骤2106、步骤2107、步骤2108、步骤2109和步骤2010。
步骤2101,使用数据多路选择器选择将待压缩的数据写入到两个数据存储装置中的其中一个数据存储装置中。例如,数据刚开始压缩,数据多路选择器303将待压缩的数据写入到数据存储装置301中,等到数据存储装置301中的数据写入完成时,数据多路选择器303将下个待压缩数据块写入到数据存储装置302中,等到数据存储装置302中的数据写入完成和数据存储装置301中的数据压缩完成,则多路选择器将数据写入到数据存储装置301中;或者在压缩过程中,正在压缩数据存储装置301中的待压缩数据时,多路选择器303将下一个待压缩的数据块写入到数据存储装置302中,等到数据存储装置302中的数据写入完成和数据存储装置301中的数据压缩完成,则多路选择器将数据写入到数据存储装置301中。如此的反复循环知道待压缩的数据全部传输完成,这一过程实现了数据传输的乒乓操作,提高了压缩的效率。
步骤2102,压缩数据时,取一定量的数据进行哈希变换,在哈希表中查找,若找到,则所取的一定量的数据是新字符,以新字符编码输出非定长编码,若找到,则所取的一定量的数据时重复字符串,以此为数据头寻找最大的匹配长度,以重复字符串编码输出非定长编码。例如,从暂存数据模块501中取数据送入字典读取模502中进行哈希变换,根据哈希表模块701的反馈信号判断所取数据是新字符还是重复字符串,结合最大长度匹配模块503和字典链表模块702计算得出最大的匹配长度和最大匹配字符串的指针后,送入LZ77编码模块504中进行LZ77非定长编码输出。
步骤2103,压缩过程中,根据哈希表和字典链表的反馈信号,对待压缩的数据进行相应的读取操作,对哈希表和字典链表中的数据进行相应的更新。例如,当经过哈希变换后确定字符是新字符时,字典更新模块505控制向哈希表模块701和字典链表模块702中更新字典信息;同时结合数据暂存模块501从数据存储模块301或者数据存储模块302中再次读取一定量的数据。
步骤2104,压缩过程中,交替初始化和使用两个哈希表和字典链表。例如,当哈希表模块701或者字典链表模块702中的多路选择器1303选择使用数据存储装置1301存储字典数据,则索引初始化模块703和链表初始化模块704分别对哈希表模块701和字典链表模块702中的数据存储装置1302进行清空或者初始化操作;当数据块压缩完成,要进行下一个数据块的压缩时,则初始化数据存储装置1301,选取数据存储装置1302用于字典存储。
步骤2105,利用移位寄存器将非定长的数据拼接成定长的数据。例如,非定长的数据送入非定长码元拼接成较短定长数据模块1501中拼接成8比特或者16比特的数据输出,再经过较短数据拼接成较长数据模块1502将较短的数据拼接成满足数据传输要求长度的较长定长数据。
步骤2106,计算压缩后的数据个数,预压缩前数据个数比较,选取适当的压缩模式,若压缩后的数据个数多于压缩前的数据个数,选取直接存储方式,从缓存待压缩的数据中读取,若压缩后的数据个数不多于压缩前的数据格式,选取压缩存储的方式。例如,经过文件大小计算模块902的计算后,压缩前的数据为1K,而压缩后的数据变为2K,则压缩模式选择模块903选择启动数据直接存储模块904从数据写入缓存模块中的数据存储装置301或者数据存储装置302中直接读取数据;但如果压缩前的数据为32K,压缩后的数据为20K,则压缩模式选择模块903选择压缩存储模式。
步骤2107,添加压缩后的数据块头。由文件大小计算模块902将数据头信息添加在压缩后的数据块的最前面。
步骤2108,对压缩后的数据尾部进行字节对齐处理。例如,假设压缩后的数据最后一个数据不满一个字节为“11”,则由压缩模式选择模块903对数据尾部进行字节对齐操作,将“11”补齐为“11001100”。
步骤2109,使用写入数据多路选择器,选择压缩后的数据写入两个数据存储装置中的其中一个数据存储装置。例如,数据压缩时,写入数据多路选择器1103将压缩后的数据写入到数据存储装置1101中,等到该数据块中的数据全部压缩完成时,写入数据多路选择器1103将选择数据存储装置1102用于压缩后的数据的存储,同时如果有读出信号产生则读出数据存储器1101中的数据,等到数据存储装置1101中的数据读出完成和数据块压缩再次完成,则多路选择器将压缩后的数据写入到数据存储装置1101中。如此的反复循环知道待压缩的数据全部传输完成,这一过程实现了数据传输的乒乓操作,提高了压缩的效率。
步骤2110,当一个数据块已经完成压缩,则利用读出多路选择器,选择读出对应的数据存储装置中的数据。例如,数据压缩时,当有读出信号产生时,数据存储装置1101在被写入多路选择器1103使用时,读出数据多路选择器1104选择读取数据存储装置1102中的数据。如此的反复循环知道待压缩的数据全部传输完成,这一过程实现了数据传输的乒乓操作,提高了压缩的效率。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (10)
1.一种硬件LZ77的压缩实现系统,其特征在于,所述系统包括:
数据写入缓存模块,缓存待压缩的数据;
压缩处理模块,利用乒乓操作提取所述待压缩的数据,并交替使用哈希表和字典链表对其进行压缩编码;
拼接处理模块,对压缩编码后的数据中的非定长数据进行拼接处理;
数据读出缓存模块,缓存压缩后的数据和拼接处理后的数据。
2.根据权利要求1所述的压缩实现系统,其特征在于,所述数据写入缓存模块包括:
使用多路选择器将待压缩的数据,存储到两个数据存储装置中。
3.根据权利要求1所述的压缩实现系统,其特征在于,所述压缩处理模块包括:
交替压缩模块,取部分数据进行哈希变换,在哈希表中查找,若未找到,则所述部分数据是新字符,以新字符编码输出非定长数据,若找到,则所述部分数据是重复字符,结合字典链表以此为数据头寻找最大的匹配长度,以重复字符编码输出非定长数据;
数据更新模块,压缩过程中,根据哈希表和字典链表反馈的信号,对待压缩的数据进行相应的读取操作,对哈希表和字典链表中的数据进行相应的更新。
4.根据权利要求1所述的压缩实现系统,其特征在于,所述拼接处理模块包括:
转换处理模块,利用移位寄存器将所述非定长数据拼接成定长数据;
计算处理模块,计算压缩后的数据个数,与压缩前数据个数比较,若压缩后的数据个数多于压缩前的数据个数,选取直接存储的方式,若压缩后的数据个数少于压缩前的数据个数,选取压缩存储的方式;
对齐处理模块,添加压缩后的数据块头,并对压缩后的数据尾部进行字节对齐处理。
5.根据权利要求1所述的压缩实现系统,其特征在于,所述数据读出缓存模块中:
若一个数据块未完成压缩,则使用写入数据多路选择器,选择将压缩后的数据写入数据存储装置;
若一个数据块完成压缩,则利用读出数据多路选择器,选择读出对应的数据存储装置中的数据。
6.一种硬件LZ77的压缩实现方法,其特征在于,所述的方法包括:
步骤1,缓存待压缩的数据;
步骤2,利用乒乓操作提取所述待压缩的数据,并交替使用哈希表和字典链表对其进行压缩编码;
步骤3,对压缩编码后的数据中的非定长数据进行拼接处理;
步骤4,缓存压缩后的数据和拼接处理后的数据。
7.根据权利要求6所述的压缩实现方法,其特征在于,所述步骤1包括:
使用多路选择器将待压缩的数据,存储到两个数据存储装置中。
8.根据权利要求6所述的压缩实现方法,其特征在于,所述步骤2包括:
步骤21,取部分数据进行哈希变换,在哈希表中查找,若未找到,则所述部分数据是新字符,以新字符编码输出非定长数据,若找到,则所述部分数据是重复字符,结合字典链表以此为数据头寻找最大的匹配长度,以重复字符编码输出非定长数据;
步骤22,压缩过程中,根据哈希表和字典链表反馈的信号,对待压缩的数据进行相应的读取操作,对哈希表和字典链表中的数据进行相应的更新。
9.根据权利要求6所述的压缩实现方法,其特征在于,所述步骤3包括:
步骤31,利用移位寄存器将所述非定长数据拼接成定长数据;
步骤32,计算压缩后的数据个数,与压缩前数据个数比较,若压缩后的数据个数多于压缩前的数据个数,选取直接存储的方式,若压缩后的数据个数少于压缩前的数据个数,选取压缩存储的方式;
步骤33,添加压缩后的数据块头,并对压缩后的数据尾部进行字节对齐处理。
10.根据权利要求6所述的压缩实现方法,其特征在于,所述步骤4中:
若一个数据块未完成压缩,则使用写入数据多路选择器,选择将压缩后的数据写入数据存储装置;
若一个数据块完成压缩,则利用读出数据多路选择器,选择读出对应的数据存储装置中的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013100031452A CN103095305A (zh) | 2013-01-06 | 2013-01-06 | 一种硬件lz77的压缩实现系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013100031452A CN103095305A (zh) | 2013-01-06 | 2013-01-06 | 一种硬件lz77的压缩实现系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103095305A true CN103095305A (zh) | 2013-05-08 |
Family
ID=48207510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013100031452A Pending CN103095305A (zh) | 2013-01-06 | 2013-01-06 | 一种硬件lz77的压缩实现系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103095305A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475375A (zh) * | 2013-09-04 | 2013-12-25 | 东南大学 | 一种lz77压缩算法硬件加速系统及加速方法 |
CN103997346A (zh) * | 2014-05-12 | 2014-08-20 | 东南大学 | 一种基于流水线的数据匹配方法和装置 |
CN104202054A (zh) * | 2014-09-16 | 2014-12-10 | 东南大学 | 一种硬件lzma压缩实现系统及方法 |
CN105610447A (zh) * | 2015-10-29 | 2016-05-25 | 吴均 | 基于lz77算法的分区编码压缩方法 |
WO2016177050A1 (zh) * | 2015-07-21 | 2016-11-10 | 中兴通讯股份有限公司 | 消息传输方法和装置 |
CN106875538A (zh) * | 2017-01-20 | 2017-06-20 | 深圳怡化电脑股份有限公司 | 获取冠字号信息的方法和装置 |
CN106998244A (zh) * | 2017-05-31 | 2017-08-01 | 中国科学院半导体研究所 | 以太网数据帧的前向纠错系统、方法及编码、解码装置 |
CN108809320A (zh) * | 2017-04-28 | 2018-11-13 | 华为技术有限公司 | 一种基于lz77的数据压缩方法、设备及终端 |
CN109672449A (zh) * | 2018-12-13 | 2019-04-23 | 武汉中元华电科技股份有限公司 | 一种基于fpga快速实现lz77压缩的装置及方法 |
CN111162792A (zh) * | 2019-12-19 | 2020-05-15 | 深圳市航天泰瑞捷电子有限公司 | 一种电力负荷数据的压缩方法及装置 |
CN113630123A (zh) * | 2021-06-30 | 2021-11-09 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据压缩系统及方法 |
WO2022126361A1 (zh) * | 2020-12-15 | 2022-06-23 | 清华大学 | 可重构处理器的配置加载系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5526363A (en) * | 1995-05-16 | 1996-06-11 | Telco Systems, Inc. | Multicontext compression system with shared data structures |
CN101572552A (zh) * | 2009-06-11 | 2009-11-04 | 哈尔滨工业大学 | 基于内容可寻址存储器的高速无损数据压缩系统 |
CN103023509A (zh) * | 2012-11-14 | 2013-04-03 | 无锡芯响电子科技有限公司 | 一种硬件lz77压缩实现系统及其实现方法 |
-
2013
- 2013-01-06 CN CN2013100031452A patent/CN103095305A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5526363A (en) * | 1995-05-16 | 1996-06-11 | Telco Systems, Inc. | Multicontext compression system with shared data structures |
CN101572552A (zh) * | 2009-06-11 | 2009-11-04 | 哈尔滨工业大学 | 基于内容可寻址存储器的高速无损数据压缩系统 |
CN103023509A (zh) * | 2012-11-14 | 2013-04-03 | 无锡芯响电子科技有限公司 | 一种硬件lz77压缩实现系统及其实现方法 |
Non-Patent Citations (6)
Title |
---|
孙圣: "《基于FPGA的Dflate算法核心模块设计》", 《软件导刊》, vol. 9, no. 5, 30 May 2010 (2010-05-30) * |
李玉爽等: "基于LZO算法的嵌入式告诉无线数据采集系统", 《点在测量技术》, vol. 34, no. 7, 31 July 2011 (2011-07-31) * |
李锦明等: "《实时无损数据压缩算法硬件实现的研究》", 《哈尔滨工业大学学报》, vol. 38, no. 2, 28 February 2006 (2006-02-28) * |
李雷定: "《中国优秀硕士学位论文全文数据库》", 15 November 2009, article "基于FPGA的数据实时无损压缩系统设计" * |
王忠孝等: "关于Lempel-Ziv77压缩算法及其实现的研究", 《计算机研究与发展》, vol. 33, no. 5, 31 May 1996 (1996-05-31) * |
陈宏臣等: "《基于FPGA高速实时图像数据处理系统的研究》", 《微计算机信息》, vol. 26, no. 12, 15 January 2010 (2010-01-15) * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475375A (zh) * | 2013-09-04 | 2013-12-25 | 东南大学 | 一种lz77压缩算法硬件加速系统及加速方法 |
CN103997346A (zh) * | 2014-05-12 | 2014-08-20 | 东南大学 | 一种基于流水线的数据匹配方法和装置 |
CN103997346B (zh) * | 2014-05-12 | 2017-02-15 | 东南大学 | 一种基于流水线的数据匹配方法和装置 |
CN104202054A (zh) * | 2014-09-16 | 2014-12-10 | 东南大学 | 一种硬件lzma压缩实现系统及方法 |
WO2016177050A1 (zh) * | 2015-07-21 | 2016-11-10 | 中兴通讯股份有限公司 | 消息传输方法和装置 |
CN106375177A (zh) * | 2015-07-21 | 2017-02-01 | 中兴通讯股份有限公司 | 消息传输方法和装置 |
CN105610447A (zh) * | 2015-10-29 | 2016-05-25 | 吴均 | 基于lz77算法的分区编码压缩方法 |
CN105610447B (zh) * | 2015-10-29 | 2018-06-19 | 吴均 | 基于lz77算法的分区编码压缩方法 |
CN106875538A (zh) * | 2017-01-20 | 2017-06-20 | 深圳怡化电脑股份有限公司 | 获取冠字号信息的方法和装置 |
CN108809320B (zh) * | 2017-04-28 | 2021-05-18 | 华为技术有限公司 | 一种基于lz77的数据压缩方法、设备及终端 |
CN108809320A (zh) * | 2017-04-28 | 2018-11-13 | 华为技术有限公司 | 一种基于lz77的数据压缩方法、设备及终端 |
CN106998244A (zh) * | 2017-05-31 | 2017-08-01 | 中国科学院半导体研究所 | 以太网数据帧的前向纠错系统、方法及编码、解码装置 |
CN109672449A (zh) * | 2018-12-13 | 2019-04-23 | 武汉中元华电科技股份有限公司 | 一种基于fpga快速实现lz77压缩的装置及方法 |
CN109672449B (zh) * | 2018-12-13 | 2023-03-10 | 武汉中元华电科技股份有限公司 | 一种基于fpga快速实现lz77压缩的装置及方法 |
CN111162792A (zh) * | 2019-12-19 | 2020-05-15 | 深圳市航天泰瑞捷电子有限公司 | 一种电力负荷数据的压缩方法及装置 |
WO2022126361A1 (zh) * | 2020-12-15 | 2022-06-23 | 清华大学 | 可重构处理器的配置加载系统及方法 |
CN113630123A (zh) * | 2021-06-30 | 2021-11-09 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据压缩系统及方法 |
CN113630123B (zh) * | 2021-06-30 | 2023-08-18 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据压缩系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103023509A (zh) | 一种硬件lz77压缩实现系统及其实现方法 | |
CN103095305A (zh) | 一种硬件lz77的压缩实现系统及方法 | |
CN202931289U (zh) | 一种硬件lz77压缩实现系统 | |
CN104331269B (zh) | 一种嵌入式系统可执行代码压缩方法及代码解压缩系统 | |
CN102970043B (zh) | 一种基于gzip的压缩硬件系统及其加速方法 | |
CN105207678B (zh) | 一种改进型lz4压缩算法的硬件实现系统 | |
CN102244518B (zh) | 并行解压缩的硬件实现的系统及方法 | |
CN102457283B (zh) | 一种数据压缩、解压缩方法及设备 | |
US8665124B2 (en) | Compression format for high bandwidth dictionary compression | |
US20050086452A1 (en) | Enhanced boolean processor with parallel input | |
CN104202054A (zh) | 一种硬件lzma压缩实现系统及方法 | |
EP4030628A1 (en) | Near-storage acceleration of dictionary decoding | |
CN107027036A (zh) | 一种fpga异构加速平台的解压缩方法、装置及系统 | |
US9479194B2 (en) | Data compression apparatus and data decompression apparatus | |
CN108886367A (zh) | 用于压缩和解压缩数据的方法、设备和系统 | |
US20130086339A1 (en) | Method and apparatus for high bandwidth dictionary compression technique using delayed dictionary update | |
CN103268299B (zh) | 一种应用于PXI Express总线测试系统的通用数据压缩IP核 | |
Benini et al. | A class of code compression schemes for reducing power consumption in embedded microprocessor systems | |
CN103078647A (zh) | 一种lz77压缩算法的硬件解码实现系统及方法 | |
CN111832257B (zh) | 编码数据的条件转码 | |
Shcherbakov et al. | A parallel adaptive range coding compressor: algorithm, FPGA prototype, evaluation | |
CN108932315A (zh) | 一种数据解压的方法以及相关装置 | |
RU2450441C1 (ru) | Способ и устройство сжатия данных | |
US7071854B1 (en) | Hardware-implemented LZW data decompression | |
US20210157485A1 (en) | Pattern-based cache block compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130508 |