一种硬件lz77压缩实现系统及其实现方法

文档序号:7523438阅读:339来源:国知局
专利名称:一种硬件lz77压缩实现系统及其实现方法
技术领域
本发明涉及数据压缩,特别是采用乒乓操作的硬件LZ77压缩实现系统及其实现方法。
背景技术
随着信息和通信技术的迅猛发展,数据交换量日益增大,大规模的数据处理也变的更加的繁杂。对于如此庞大的数据必须进行有效的压缩,才能够有效的减少数据的存储量,最大限度的合理利用有限的数据传输带宽。除此之外,压缩后的数据在一定程度上是对原始数据的加密,能够更好的保护数据。数据压缩可分成两种类型,一种叫做无损压缩,另一种叫做有损压缩。无损压缩是指使用压缩后的数据进行重构(或者叫做还原,解压缩),重构后的数据与原来的数据完全相同;无损压缩用于要求重构的信号与原始信号完全一致的场合。一个很常见的例子是磁盘文件的压缩。根据目前的技术水平,无损压缩算法一般可以把普通文件的数据压缩到原来的1/2 1/4。大多数压缩程序使用基于自适应字典的LZ算法来缩小文件。“LZ”指的是此算法的发明者Lempel和Ziv,“字典”指的是对数据块进行归类的方法。目前,绝大部分的压缩还是有软件实现,对数据的压缩处理操作仍然是由中央处理器(CPU)来完成的,当面对海量数据处理时,必然会占用大量的CPU资源,使得在进行数据压缩的同时进行其他操作变成了难题。除此之外,软件压缩是一种顺序进行的操作,无法取得高效率的并行运算。因此,如何有效的提高压缩算法的效率,减轻海量数据压缩给CPU带来的压力成为了现有的软件压缩解压缩技术的主要问题。

发明内容
本发明要解决的一个技术问题是提供一种硬件LZ77压缩实现系统和方法,能够有效的提高LZ77压缩算法的效率,将CPU从海量数据压缩中解脱出来。本发明为实现上述目的,采用如下技术方案
一种硬件LZ77压缩实现系统,其特征在于,该系统包括
PCIE接口模块,用于实现与上位机的通信;
数据直接访问模块DMA,用于实现数据的直接访问;
数据打包解包模块,用于实现数据通信时对数据的组包和解包操作;
数据写入缓存模块,用于缓存待压缩的数据;
压缩算法模块,用于实现重复字符串的查找,计算重复字符串的匹配长度,进行LZ77编码;
字典模块,用于存储历史字符串;
非定长码元拼接模块,用于将非定长的编码高速拼接成定长的数据块; 数据读出缓存模块,用于缓存压缩后的数据。其进一步特征在于,所述的数据写入缓存模块包括
两个如随机存取存储器RAM或者先入先出存储器FIFO的数据存储装置,用于存储待压缩的数据;
多路选择器,用于选择将待压缩的数据存储在两个数据存储装置中的其中一个数据存储装置;
通过多路选择器和两个数据存储装置实现数据写入的乒乓操作。所述的压缩算法模块包括
数据暂存模块,用于临时暂存一定量的数据;
字典读取模块,用于产生字典的读控制信号和读取字典中的数据;
最大长度匹配模块,用于计算出现重复字符串时的最大重复长度;
LZ77编码模块,用于对待压缩数据进行相应的编码;
字典更新模块,用于产生字典的写控制信号和更新字典中的数据。根据权利要求1所述的硬件LZ77压缩实现系统,其特征在于,所述的字典模块包括
哈希表模块,用于存储最新的历史字典信息;
字典链表模块,用于存储其他的历史字典信息;
索引初始化模块,用于初始化哈希表模块;
链表初始化模块,用于初始化字典链表模块。所述的非定长码元拼接模块包括
非定长码元到定长码元转换模块,用于将非定长的数据编码拼接成定长的数据;
文件大小计算模块,用于计算文件压缩后的数据个数,并与压缩前的文件数据个数比
较;
压缩模式选择模块,根据文件压缩前和压缩后的数据个数的多少选取压缩模式;
数据直接存储模块,用于当数据选择直接存储压缩模式时对数据的操作。所述的数据读出缓存模块包括
两个如随机存取存储器RAM或者先入先出存储器FIFO的数据存储装置,用于存储压缩后的数据;
写入数据多路选择器,用于选择将压缩后的数据写入两个数据存储装置中的其中一个数据存储装置;
读出数据多路选择器,用于选择读出两个数据存储装置中的其中一个数据存储装置中的数据。进一步的,上述字典模块的哈希表模块包括
两个如随机存取存储器RAM或者内容可寻址存储器CAM的数据存储装置,用于存储最新的历史字典信息;
写入多路选择器,用于选择使用两个数据存储装置中的其中一个数据存储装置存储最新的历史字典信息;
读出多路选择器,用于选择读取两个数据存储装置中的其中一个数据存储装置中的字典信息; 初始化多路选择器,用于选择初始化两个数据存储装置中的一个数据存储装置,交替初始化两个数据存储装置,提高压缩的效率。上述字典模块的字典链表模块包括
两个如随机存取存储器RAM或者内容可寻址存储器CAM的数据存储装置,用于存储其他的历史字典信息;
写入多路选择器,用于选择使用两个数据存储装置中的其中一个数据存储装置存储最新的历史字典信息;
读出多路选择器,用于选择读取两个数据存储装置中的其中一个数据存储装置中的字典信息;
初始化多路选择器,用于选择初始化两个数据存储装置中的一个数据存储装置,交替初始化两个数据存储装置,提高压缩的效率。上述非定长码元拼接模块的非定长码元到定长码元转换模块包括
非定长码元拼接成较短定长数据模块,用于将压缩算法模块输出的非定长编码拼接成较短的定长数据;
较短数据拼接成较长数据模块,用于将非定长码元拼接成较短定长数据模块输出的较短数据拼接成较长的数据,与非定长码元拼接成较短定长数据模块并行运行,加速了拼接的过程。一种硬件LZ77压缩实现方法,包括下述步骤
(1)缓存待压缩的数据;
(2)对字符串数据进行压缩编码;
(3)拼接非定长的数据;
(4)缓存压缩后的数据。其进一步特征在于,所述步骤(I)缓存待压缩的数据使用多路选择器控制待压缩的数据存储到两个数据存储装置中。所述步骤(2)对字符串数据进行压缩编码过程包括
压缩数据时,取一定量的数据进行哈希变换,在哈希表中查找,若未找到,则所取的一定量的数据是新字符,以新字符编码输出非定长编码,若找到,则所取的一定量的数据是重复字符串,以此为数据头寻找最大的匹配长度,以重复字符串编码输出非定长编码;
压缩过程中,根据哈希表和字典链表反馈的信号,对待压缩的数据进行相应的读取操作,对哈希表和字典链表中的数据进行相应的更新;
压缩过程中交替初始化和使用两个哈希表和两个字典链表。所述步骤(3)的拼接非定长的数据过程包括
利用移位寄存器将非定长的数据拼接成定长数据;
计算压缩后的数据个数,与压缩前数据个数比较,选取适当的压缩模式,若压缩后的数据个数多于压缩前的数据个数,选取直接存储的方式,从缓存待压缩的数据中读取,若压缩后的数据个数不多于压缩前的数据个数,选取压缩存储的方式;
添加压缩后的数据块头;
对压缩后的数据尾部进行字节对齐处理;
与压缩数据并行操作处理,提高了压缩的效率。
所述步骤(4)缓存压缩后的数据过程包括
使用写入数据多路选择器,选择将压缩后的数据写入两个数据存储装置中的其中一个数据存储装置;
若一个数据块已经完成压缩,则利用读出数据多路选择器,选择读出对应的数据存储装置中的数据。本发明通过一种硬件来实现LZ77压缩,能够有效的提高LZ77压缩算法的效率,将CPU从海量数据压缩中解脱出来。


图1为本发明提供的硬件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压缩实现方法的一个具体应用实例的流程图,
具体实施方式
下面参照附图用本发明的一个示例性实施实例对本发明进行全面细致的描述和说明。图1为本发明提供的硬件LZ77压缩实现系统的结构示意图。如图1所示,硬件LZ77压缩实现系统100包括PCIE接口模块101、数据直接访问模块DMA102、数据打包解包模块103、数据写入缓存模块104、压缩算法模块105、字典模块106、非定长码元拼接模块107、数据读出缓存模块108。其中,PCIE接口模块101,用于实现与上位机的通信。例如,上位机配置PCIE对应的寄存器,实现上位机与硬件LZ77压缩实现系统间数据的通信。数据直接访问模块DMA102,用于实现数据的直接访问。例如,根据上位机配置的地址和数据长度,从磁盘或者数据存储装置中从指定的地址读取指定长度的数据,或者想指定的地址中写入指定长度的数据。 数据打包解包模块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包括士(^接口模块201、数据直接访问模块(DMA) 202、数据打包解包模块203、数据写入缓存模块204、压缩算法模块205、字典模块206、非定长码元拼接模块207、数据读出缓存模块208 ;其中PCIE接口模块201、数据直接访问模块(DMA) 202、数据打包解包模块203、压缩算法模块205、字典模块206、非定长码元拼接模块207、数据读出缓存模块208可以分别和图1中所示的PCIE接口模块101、数据直接访问模块(DMA) 102、数据打包解包模块103、压缩算法模块105、字典模块106、非定长码元拼接模块107、数据读出缓存模块108具有相同的结构,这里不再过多的阐述其具体的技术内容。如图2所示,数据写入缓存模块204进一步的包括数据存储装置2041、数据存储装置2042和多路选择器2043。其中,数据存储装置2041和数据存储装置2042,用于存储待压缩的数据。例如,可以采用随机存取存储器(RAM)或先入先出存储器(FIFO)等本专业认识所熟知的数据存储装置实现,数据存储装置的数据宽度(Width)和数据深度(D印th)可根据数据要求配置。多路选择器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可以分别和图1中所示的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包括士(^接口模块601、数据直接访问模块(DMA) 602、数据打包解包模块603、数据写入缓存模块604、压缩算法模块605、字典模块606、非定长码元拼接模块607、数据读出缓存模块608 ;其中PCIE接口模块601、数据直接访问模块(DMA) 602、数据打包解包模块603、数据写入缓存模块604、压缩算法模块605、非定长码元拼接模块607、数据读出缓存模块608可以分别和图1中所示的PCIE接口模块101、数据直接访问模块(DMA) 102、数据打包解包模块103、数据写入缓存模块104、压缩算法模块105、非定长码元拼接模块107、数据读出缓存模块108具有相同的结构,这里不再过多的阐述其具体的技术内容。如图6所示,字典模块606进一步包括哈希表模块6061、字典链表模块6062、索引初始化模块6063和链表初始化模块6064。
其中,哈希表模块6061,用于存储最新的历史字典信息。例如,“ab”[l]是之前压缩过的数据,而“ab” [2]是刚压缩好的数据,则哈希表模块6061会将最新的ab的信息即“ab” [2]的信息更新到哈希表模块6061中指定存储装置的指定位置。字典链表模块6062,用于存储其他的历史字典信息。例如,“ab” [I]是之前压缩过的数据,而“ab” [2]是刚压缩好的数据,则哈希表模块6061会丢弃较旧的ab的信息即“ab”[I]的信息,此时字典链表模块6062接收哈希表模块6061丢弃的ab的信息即“ab”[I]的信息,将其存储到字典链表模块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包括士(^接口模块801、数据直接访问模块(DMA) 802、数据打包解包模块803、数据写入缓存模块804、压缩算法模块805、字典模块806、非定长码元拼接模块807、数据读出缓存模块808 ;其中PCIE接口模块801、数据直接访问模块(DMA) 802、数据打包解包模块803、数据写入缓存模块804、压缩算法模块805、字典模块806、数据读出缓存模块808可以分别和图1中所示的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包括士(^接口模块1001、数据直接访问模块(DMA) 1002、数据打包解包模块1003、数据写入缓存模块1004、压缩算法模块1005、字典模块1006、非定长码元拼接模块1007、数据读出缓存模块1008 ;其中PCIE接口模块1001、数据直接访问模块(DMA) 1002、数据打包解包模块1003、数据写入缓存模块1004、压缩算法模块1005、字典模块1006、非定长码元拼接模块1007可以分别和图1中所示的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包括士(^接口模块14()1、数据直接访问模块(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,压缩数据时,取一定量的数据进行哈希变换,在哈希表中查找,若找 至IJ,则所取的一定量的数据是新字符,以新字符编码输出非定长编码,若找到,则所取的一 定量的数据时重复字符串,以此为数据头寻找最大的匹配长度,以重复字符串编码输出非 定长编码。例如,从暂存数据模块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中的 数据。如此的反复循环知道待压缩的数据全部传输完成,这一过程实现了数据传输的乒乓 操作,提高了压缩的效率。
参考上述本发明示例性的描述,本领域技术人员可以了解本发明具有如下的几个 优越性本发明提供了硬件LZ77压缩实现系统及方法,采用FPGA (Field Programmable Gate Arry)实现LZ77压缩功能,通过采用数据写入缓存模块、数据读出缓存模块的方法实现数 去写入和读出的乒乓操作,提高了 LZ77压缩的效率。
本发明提供了硬件LZ77压缩实现系统及方法,采用交替使用和初始化哈希表模 块和字典链表模块,实现了字典初始化与压缩的并行操作,从一定程度上提高了 LZ77压缩 的效率。
本发明提供了硬件LZ77压缩实现系统及方法,采用LZ77编码模块和非定长码元 拼接模块实现了 LZ77压缩编码和非定长码元高速拼接的并行操作,进一步提升了 LZ77压 缩的效率。
本发明提供了硬件LZ77压缩实现系统及方法,采用压缩模式选择模块和数据直 接存储模块实现了,数据直接存储和压缩存储两种模式,保证了 LZ77压缩的压缩比,确保 了压缩的性能。
尽管本发明此处具体化一些特定的例子示出和描述,然而本发明不限制于所实处 的细节,因为在不偏离本发明的精神以及在权利要求的范围和等同范围内,可以做出多种 改进和结构变化。因此,宽范围的并且如权利要求中所阐明的再某种意义上与本发明的范 围一致的解释附加的权利要求是适当的。
权利要求
1.一种硬件LZ77压缩实现系统,其特征在于,该系统包括 PCIE接口模块,用于实现与上位机的通信; 数据直接访问模块DMA,用于实现数据的直接访问; 数据打包解包模块,用于实现数据通信时对数据的组包和解包操作; 数据写入缓存模块,用于缓存待压缩的数据; 压缩算法模块,用于实现重复字符串的查找,计算重复字符串的匹配长度,进行LZ77编码; 字典模块,用于存储历史字符串; 非定长码元拼接模块,用于将非定长的编码高速拼接成定长的数据块; 数据读出缓存模块,用于缓存压缩后的数据。
2.根据权利要求1所述的硬件LZ77压缩实现系统,其特征在于,所述的数据写入缓存模块包括 两个如随机存取存储器RAM或者先入先出存储器FIFO的数据存储装置,用于存储待压缩的数据; 多路选择器,用于选择将待压缩的数据存储在两个数据存储装置中的其中一个数据存储装置; 通过多路选择器和两个数据存储装置实现数据写入的乒乓操作。
3.根据权利要求1所述的硬件LZ77压缩实现系统,其特征在于,所述的压缩算法模块包括 数据暂存模块,用于临时暂存一定量的数据; 字典读取模块,用于产生字典的读控制信号和读取字典中的数据; 最大长度匹配模块,用于计算出现重复字符串时的最大重复长度; LZ77编码模块,用于对待压缩数据进行相应的编码; 字典更新模块,用于产生字典的写控制信号和更新字典中的数据。
4.根据权利要求1所述的硬件LZ77压缩实现系统,其特征在于,所述的字典模块包括 哈希表模块,用于存储最新的历史字典信息; 字典链表模块,用于存储其他的历史字典信息; 索引初始化模块,用于初始化哈希表模块; 链表初始化模块,用于初始化字典链表模块。
5.根据权利要求1所述的硬件LZ77压缩实现系统,其特征在于,所述的非定长码元拼接模块包括 非定长码元到定长码元转换模块,用于将非定长的数据编码拼接成定长的数据; 文件大小计算模块,用于计算文件压缩后的数据个数,并与压缩前的文件数据个数比较; 压缩模式选择模块,根据文件压缩前和压缩后的数据个数的多少选取压缩模式; 数据直接存储模块,用于当数据选择直接存储压缩模式时对数据的操作。
6.根据权利要求1所述的硬件LZ77压缩实现系统,其特征在于,所述的数据读出缓存模块包括两个如随机存取存储器RAM或者先入先出存储器FIFO的数据存储装置,用于存储压缩后的数据; 写入数据多路选择器,用于选择将压缩后的数据写入两个数据存储装置中的其中一个数据存储装置; 读出数据多路选择器,用于选择读出两个数据存储装置中的其中一个数据存储装置中的数据。
7.根据权利要求4所述的硬件LZ77压缩实现系统,其特征在于,所述的哈希表模块包括 两个如随机存取存储器RAM或者内容可寻址存储器CAM的数据存储装置,用于存储最新的历史字典信息; 写入多路选择器,用于选择使用两个数据存储装置中的其中一个数据存储装置存储最新的历史字典信息; 读出多路选择器,用于选择读取两个数据存储装置中的其中一个数据存储装置中的字典信息; 初始化多路选择器,用于选择初始化两个数据存储装置中的一个数据存储装置,交替初始化两个数据存储装置,提高压缩的效率; 所述的字典链表模块包括 两个如随机存取存储器RAM或者内容可寻址存储器CAM的数据存储装置,用于存储其他的历史字典信息; 写入多路选择器,用于选择使用两个数据存储装置中的其中一个数据存储装置存储最新的历史字典信息; 读出多路选择器,用于选择读取两个数据存储装置中的其中一个数据存储装置中的字典信息; 初始化多路选择器,用于选择初始化两个数据存储装置中的一个数据存储装置,交替初始化两个数据存储装置,提高压缩的效率。
8.根据权利要求5所述的硬件LZ77压缩实现系统,其特征在于,所述的非定长码元到定长码元转换模块包括 非定长码元拼接成较短定长数据模块,用于将压缩算法模块输出的非定长编码拼接成较短的定长数据; 较短数据拼接成较长数据模块,用于将非定长码元拼接成较短定长数据模块输出的较短数据拼接成较长的数据,与非定长码元拼接成较短定长数据模块并行运行,加速了拼接的过程。
9.一种硬件LZ77压缩实现方法,包括下述步骤 (1)缓存待压缩的数据; (2)对字符串数据进行压缩编码; (3)拼接非定长的数据; (4)缓存压缩后的数据。
10.根据权利要求9所述的硬件LZ77压缩实现方法,其特征在于,所述步骤(I)缓存待压缩的数据使用多路选择器控制待压缩的数据存储到两个数据存储装置中。
11.根据权利要求9所述的硬件LZ77压缩实现方法,其特征在于,所述步骤(2)对字符串数据进行压缩编码过程包括 压缩数据时,取一定量的数据进行哈希变换,在哈希表中查找,若未找到,则所取的一定量的数据是新字符,以新字符编码输出非定长编码,若找到,则所取的一定量的数据是重复字符串,以此为数据头寻找最大的匹配长度,以重复字符串编码输出非定长编码; 压缩过程中,根据哈希表和字典链表反馈的信号,对待压缩的数据进行相应的读取操作,对哈希表和字典链表中的数据进行相应的更新; 压缩过程中交替初始化和使用两个哈希表和两个字典链表。
12.根据权利要求9所述的硬件LZ77压缩实现方法,其特征在于,所述步骤(3)的拼接非定长的数据过程包括 利用移位寄存器将非定长的数据拼接成定长数据; 计算压缩后的数据个数,与压缩前数据个数比较,选取适当的压缩模式,若压缩后的数据个数多于压缩前的数据个数,选取直接存储的方式,从缓存待压缩的数据中读取,若压缩后的数据个数不多于压缩前的数据个数,选取压缩存储的方式; 添加压缩后的数据块头; 对压缩后的数据尾部进行字节对齐处理; 与压缩数据并行操作处理,提高了压缩的效率。
13.根据权利要求9所述的硬件LZ77压缩实现方法,其特征在于,所述步骤(4)缓存压缩后的数据过程包括 使用写入数据多路选择器,选择将压缩后的数据写入两个数据存储装置中的其中一个数据存储装置; 若一个数据块已经完成压缩,则利用读出数据多路选择器,选择读出对应的数据存储装置中的数据。
全文摘要
本发明公布了一种硬件LZ77压缩实现系统,包括PCIE接口模块、数据直接访问模块、数据打包解包模块、数据写入缓存模块、压缩算法模块、字典模块、非定长码元拼接模块、数据读出缓存模块。一种硬件LZ77压缩实现方法,包括步骤1、缓存待压缩的数据;2、对字符串数据进行压缩编码;3、拼接非定长的数据;4、缓存压缩后的数据。本发明通过一种硬件来实现LZ77压缩,能够有效的提高LZ77压缩算法的效率,将CPU从海量数据压缩中解脱出来。
文档编号H03M7/30GK103023509SQ20121045532
公开日2013年4月3日 申请日期2012年11月14日 优先权日2012年11月14日
发明者张 林, 李玮, 李冰 申请人:无锡芯响电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1