CN104202054A - 一种硬件lzma压缩实现系统及方法 - Google Patents
一种硬件lzma压缩实现系统及方法 Download PDFInfo
- Publication number
- CN104202054A CN104202054A CN201410472712.3A CN201410472712A CN104202054A CN 104202054 A CN104202054 A CN 104202054A CN 201410472712 A CN201410472712 A CN 201410472712A CN 104202054 A CN104202054 A CN 104202054A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- compressed
- compression
- lzma
- 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
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种硬件LZMA压缩实现系统,该系统包括:PCIE接口模块,其连接上位机,以与上位机进行通信;进入数据直接访问模块DMA,用于实现直接访问数据;数据读入缓存模块,用于缓存待压缩数据;LZ77压缩编码模块,用于对待压缩数据进行LZ77算法压缩编码,并产生数据读入缓存模块和区间编码模块的相关控制信号;区间编码模块,用于实现区间编码,对LZ77压缩后数据进行二次压缩;数据读出控制模块,用于将区间编码模块输出的压缩数据拼接成更适应外部高速总线的数据类型,并缓存拼接后的数据;外出数据直接访问模块DMA,用于实现直接访问数据。本发明提供的硬件LZMA压缩实现系统有效提高了基于软件的LZMA压缩算法的处理速率,将CPU从海量数据压缩处理中释放出来。
Description
技术领域
本发明涉及数据压缩技术领域,特别涉及一种硬件LZMA压缩实现系统及实现方法。
背景技术
随着云计算技术的兴起和发展,海量数据的存储和传输问题成为了主要面临的挑战,为此,云计算未来发展的主要任务之一是需要寻找到解决数据压缩的最优方法,来大幅度的降低数据的存储空间,提升数据传输的吞吐率。
压缩技术可以简单分为有损压缩和无损压缩,有损压缩多应用与音频领域,无损压缩具有通用性,可以运用多个领域。无损数据压缩是指经过压缩后的数据再通过解压缩,解压缩后的数据和原始数据完全一致,也就是说数据经过压缩后信息不受损失,还能完全恢复到压缩前完全相同的数据。
LZMA(Lempel-Ziv-Markov chain-Algorithm)是一种用于实现无损压缩的算法,由Igor Pavlov于1998年提出,目前在7ZIP 中被用作默认的压缩算法,其对数据的压缩率普遍高于其他常见压缩算法。LZMA压缩算法由LZ77算法(Abraham Lempel和Jacob Ziv于1977 年提出)和自适应区间编码算法组成。LZMA压缩算法高效的数据压缩率能够显著的减少存储数据所需空间、提升数据带宽的效率。虽然LZMA压缩算法可以取得很好的数据压缩率,但是基于软件的LZMA压缩算法压缩速率很慢,并且在数据压缩的过程中占用了大量的CPU资源,对海量数据进行处理时,长时间占用大量CPU资源,使得在进行LZMA 数据压缩的同时进行其他操作变成了难题。
因此,针对目前基于软件的LZMA压缩算法压缩速率低的问题,有必要提出一种硬件LZMA压缩实现系统及方法,以有效提高压数据压缩时的执行效率,从而有效的降低压缩所消耗的时间和CPU资源。
发明内容
本发明的目的旨在提供一种硬件LZMA压缩实现系统及其实现方法,相比基于软件的LZMA算法压缩,具有较好的数据压缩效果,同时拥有较高的数据吞吐量,以有效提高压数据压缩时的执行效率,从而有效的降低压缩所消耗的时间和CPU资源。
为实现上述目的,本发明提供一种硬件LZMA压缩实现系统,该系统包括:PCIE接口模块,其连接上位机,以与上位机进行通信;进入数据直接访问模块DMA,用于实现直接访问数据;数据读入缓存模块,用于缓存待压缩数据;LZ77压缩编码模块,用于对待压缩数据进行LZ77算法压缩编码,并产生数据读入缓存模块和区间编码模块的相关控制信号;区间编码模块,用于实现区间编码,对LZ77压缩后数据进行二次压缩;数据读出控制模块,用于将区间编码模块输出的压缩数据拼接成更适应外部高速总线的数据类型,并缓存拼接后的数据;外出数据直接访问模块DMA,用于实现直接访问数据。
进一步地,所述数据读入缓存模块包括:三个多路选择器,其中两个写入数据多路选择器用于选择将待压缩的数据存写入两个数据存储装置中一个,其中一个读出数据多路选择器用于将两个存储装置中的数据交替加载到输出数据总线上;两个存储装置如随机存取存储器RAM或先进先出存储器FIFO等存储装置,用于存储待压缩的数据;通过三个多路选择器、两个数据存储装置和相应的控制信号实现数据写入的乒乓操作。
进一步地,所述LZ77编码模块包括:LZ77压缩算法控制模块,用于产生数据读入缓存模块、字典模块和区间编码的相关控制信号,将从数据读入缓存模块读取待压缩数据和从字典模块读取已编码的数据字符信息进行匹配是否为重复数据字符,在匹配计算的同时对字典模块进行相应的更新操作,并对待压缩数据进行LZ77算法压缩编码;字典模块,用于存储已编码的字符信息。
进一步地,所述区间编码模块包括:区间编码算法控制模块,用于实现用区间编码算法对LZ77压缩后数据进行二次压缩,以及产生概率存储模块的控制信号;概率存储模块,实时存储不同数据包类型对应的编码参考概率并提供给区间编码算法控制电路进行编码。
进一步地,所述数据读出缓存控制模块包括:数据拼接模块,用于拼接压缩后的数据更适应外部高速总线的数据类型;数据读出缓存模块,用于缓存输出的数据。
进一步地,所述LZ77压缩算法控制模块包括:哈希暂存模块,用于存储当前位置开始的几十个字节的未压缩数据; 当前数据暂存模块,用于存储当前待压缩对齐的数据;匹配数据暂存模块,用于存储需要进行对比匹配的数据,这些数据都是已经被压缩编码的数据;最大长度匹配模块,用于计算产生两个数据流中出现重复字符串时的最大匹配长度;LZ77编码状态控制模块,用于对待压缩数据进行最优的LZ77压缩编码,以及产生上述模块的控制信号。
进一步地,所述字典模块包括:四个数据存储装置,用于实现级联哈希链表结构,一次性快速定位4个数据。
为实现上述目的,本发明还提供一种硬件LZMA压缩实现方法,包括下述步骤:
(1)缓存接口传输过来的待压缩数据;
(2)对待压缩数据进行LZ77压缩编码;
(3)对LZ77压缩后数据进行区间编码;
(4)缓存压缩后的数据并将压缩后数据传输至接口。
进一步地,所述步骤(1)缓存接口传输过来的待压缩数据过程包括:
通过两个写入数据多路选择器控制待压缩的数据存储到两个数据存储装和一个读出数据多路选择器交替输出两个数据存储装置中的待压缩数据。
进一步地,所述步骤(2)对待压缩数据进行LZ77压缩编码过程包括:
压缩数据初始化期间,对LZ77压缩编码模块中待压缩数据读入缓存进行初始化,同时,同步输出区间编码模块的初始化信号,并等待开始LZ77压缩编码的控制信号;
压缩数据时,对新的待压缩数据进行哈希变换,根据字典模块的返回值区分当前处理的数据时新字符还是重复字符,如果数据是新字符,以新字符LZ77编码输出,如果是重复字符,用过对当前待压缩数据和已经编码后的数据进行匹配计算出最大长度重复字符数据,将待压缩数据以重复字符LZ77编码输出。
压缩过程中,在当前待压缩数据和已经编码后的数据进行最大长度匹配的计算同时对字典模块中的数据信息进行相应的更新操作。
进一步地,所述步骤(3)对LZ77压缩后数据进行区间编码过程包括:
区间编码时,根据一定的判定机制判断输入待压缩数据字符类型,区间编码算法控制模块根据当前输入数据字符串的类型跳转到不同的状态,从概率存储模块中取出本种类型的参考编码概率字段,再给出编码子电路的控制信号,并驱动编码电路进行逐位编码;
编码结束后,新区间的计算完成,此时对相应的概率进行更新,并对区间值进行输出。
进一步地,所述步骤(4)缓存压缩后的数据并控制压缩后数据传输至接口:
数据拼接模块使用移位寄存器实现将区间编码输出的数据拼接成更适应外部高速总线的数据类型;
数据读出缓存使用两个写入数据多路选择器将压缩后的数据写入两个数据存储装置中的其中一个数据存储装置,通过一个读出数据多路选择器交替读出存储器装置中的数据。
本发明通过一种硬件来实现LZMA压缩,有效的提高了基于软件的LZMA压缩算法的处理速率,将CPU从海量数据压缩处理中释放出来。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1为本发明提供的硬件LZMA压缩实现系统的结构示意图;
图2为本发明提供的硬件LZMA压缩实现系统的一个具体实施方式的结构示意图;
图3为本发明提供的硬件LZMA压缩实现系统的一个具体实施实例中数据读入缓存模块的具体实施方式的结构示意图;
图4为本发明提供的硬件LZMA压缩实现系统的另一个具体实施方式的结构示意图;
图5为本发明提供的硬件LZMA压缩实现系统的一个具体实施实例中LZ77压缩编码模块的具体实施方式的机构示意图;
图6为本发明提供的硬件LZMA压缩实现系统的另一个具体实施方式的结构示意图;
图7为本发明提供的硬件LZMA压缩实现系统的一个具体实施实例中区间编码模块的具体实施方式的机构示意图;
图8为本发明提供的硬件LZMA压缩实现系统的另一个具体实施方式的结构示意图;
图9为本发明提供的硬件LZMA压缩实现系统的一个具体实施实例中数据读出控制模块的具体实施方式的机构示意图;
图10为本发明提供的硬件LZMA压缩实现系统的另一个具体实施方式的结构示意图;
图11为本发明提供的硬件LZMA压缩实现系统的一个具体实施实例中LZ77压缩算法控制模块的具体实施方式的机构示意图;
图12为本发明提供的硬件LZMA压缩实现系统的另一个具体实施方式的结构示意图;
图13为本发明提供的硬件LZMA压缩实现系统的一个具体实施实例中字典模块的具体实施方式的机构示意图;
图14为本发明提供的硬件LZMA压缩实现方法的流程图;
图15为本发明提供的硬件LZMA压缩实现方法的另一个实施例的流程图;
图16为本发明提供的硬件LZMA压缩实现方法的另一个实施例的流程图;
图17为本发明提供的硬件LZMA压缩实现方法的另一个实施例的流程图;
图18为本发明提供的硬件LZMA压缩实现方法的另一个实施例的流程图;
图19为本发明提供的硬件LZMA压缩实现方法的一个具体应用实例的流程图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
图1为本发明提供的硬件LZMA压缩实现系统的结构示意图。如图1所示,硬件LZMA压缩实现系统100包括:PCIE接口模块101、进入数据直接访问模块102、数据读入缓存模块103、LZ77压缩编码模块104、区间编码模块105、数据读出控制模块106、外出数据直接访问模块107。PCIE接口模块101,其连接上位机,以与上位机进行通信。PCIE接口模块101根据上位机配置PCIE对应的寄存器,实现上位机与硬件LZMA压缩实现系统间数据的通信。进入数据直接访问模块102可以根据上位机配置的地址和数据长度,从磁盘或者数据存储装置中从指定的地址读取指定长度的数据。这样,进入数据直接访问模块102可以实现直接访问数据。数据读入缓存模块103,其连接所述进入数据直接访问模块102,用于待压缩数据的暂存。例如,从进入数据直接访问模块102读取待压缩的数据,用乒乓操作方式将待压缩数据写入数据存储装置,以缓存待压缩数据。这样,可以实现减少LZ77压缩编码模块104读取待压缩数据的时间。LZ77压缩编码模块104,其连接所述数据读入缓存模块103,用于对待压缩数据进行LZ77算法压缩编码,并产生数据读入缓存模块和区间编码模块的相关控制信号。例如,LZ77压缩编码模块104在从数据读入缓存模块103读取预定量的待压缩数据之后,对这些数据进行LZ77压缩编码,压缩编码完成后将压缩后的数据编码发送给区间编码模块105。区间编码模块105,其连接所述LZ77压缩编码模块104,并对LZ77压缩编码数据进行区间编码以获得区间编码数据,从而实现对数据的二次压缩。例如,预定量的数据字符经过LZ77压缩编码模块104后变成了LZ77压缩编码,区间编码模块105将LZ77压缩后的编码数据进行二次区间算法编码压缩。数据读出控制模块106,其连接所述区间编码模块105,用于将区间编码模块输出的压缩数据拼接成更适应外部高速总线的数据类型,并缓存拼接后的数据。例如,一个数据块已经完成LZ77压缩编码和区间编码后,数据读出控制模块106将压缩后的数据拼接成更适应外部高速总线的数据类型,并缓存拼接后的数据。这样,可以减少外出数据直接访问模块107的读取时间。外出数据直接访问模块107,其分别连接PCIE接口模块和数据读出控制模块,用于实现直接访问数据。例如,根据上位机配置的地址和数据长度,向磁盘或者数据存储装置中指定的地址中写入指定长度的数据。
图2为本发明提供的硬件LZMA压缩实现系统的一个具体实施方式的结构示意图。如图2所示,硬件LZMA压缩实现系统200包括:PCIE接口模块201、进入数据直接访问模块202、数据读入缓存模块203、LZ77压缩编码模块204、区间编码模块205、数据读出控制模块206、外出数据直接访问模块207;其中PCIE接口模块201、进入数据直接访问模块202、数据读入缓存模块203、LZ77压缩编码模块204、区间编码模块205、数据读出控制模块206、外出数据直接访问模块207可以分别和图1中所示的PCIE接口模块101、进入数据直接访问模块102、数据读入缓存模块103、LZ77压缩编码模块104、区间编码模块105、数据读出控制模块106、外出数据直接访问模块107具有相同的结构,这里不再过多的阐述其具体的技术内容。
如图2所示,数据读入缓存模块203进一步地包括:写入数据多路选择器2031、写入数据多路选择器2032、数据存储装置2033、数据存储装置2034、读出数据多路选择器2035。
其中,写入数据多路选择器2031和写入数据多路选择器2032用于将待压缩数据写入两个数据存储装置当中一个。例如,通过写入数据多路选择器2031和写入数据多路选择器2032将待压缩数据交替写入数据存储装置2033和数据存储装置2034中,以实现乒乓操作方式写入待压缩数据。
数据存储装置2033和数据存储装置2034,用于存储待压缩的数据。例如,可以采用随机存取存储器RAM或先进先出存储器FIFO等数据存储装置,数据存储装置2033和数据存储装置2034的数据深度和数据宽度可以根据数据要求配置。
读出数据多路选择器2035,用于交替从两个数据存储装置读出待压缩数据。例如,通过读出数据多路选择器2035交替从数据存储装置2033和数据存储装置2034读出待压缩数据;写入数据多路选择器2031、写入数据多路选择器2032、数据存储装置2033、数据存储装置2034和读出数据多路选择器2035五个模块实现了乒乓操作方式的数据读写,提高LZ77压缩编码模块204读取数据的效率,这从一定程度上加速LZMA压缩编码的效率。
图3为本发明提供的硬件LZMA压缩实现系统的一个具体实施实例中数据读入缓存模块的具体实施方式的结构示意图。
如图3所示,数据读入缓存模块300包括:写入数据多路选择器301、写入数据多路选择器302、数据存储装置303、数据存储装置304和读出数据多路选择器305。在实施实例中具体操作为,当硬件LZMA压缩系统初始化后,通过选择信号选择写入数据多路选择器301和写入数据多路选择器302当中一个,并将待压缩数据对应存储到数据存储装置303和数据存储装置304中,再通过读出数据多路选择器305交替从数据存储装置303和数据存储装置304中读取待压缩数据,实现了乒乓操作方式的数据读写,这个过程将持续到所有待压缩数据全部传输完毕为止,从一定程度上加速LZMA压缩系统的编码效率。
图4为本发明提供的硬件LZMA压缩实现系统的另一个具体实施方式的结构示意图。
如图4所示,硬件LZMA压缩实现系统400包括:PCIE接口模块401、进入数据直接访问模块402、数据读入缓存模块403、LZ77压缩编码模块404、区间编码模块405、数据读出控制模块406、外出数据直接访问模块407;其中PCIE接口模块401、进入数据直接访问模块402、数据读入缓存模块403、LZ77压缩编码模块404、区间编码模块405、数据读出控制模块406、外出数据直接访问模块407可以分别和图1中所示的PCIE接口模块101、进入数据直接访问模块102、数据读入缓存模块103、LZ77压缩编码模块104、区间编码模块105、数据读出控制模块106、外出数据直接访问模块107具有相同的结构,这里不再过多的阐述其具体的技术内容。
如图4所示,LZ77压缩编码模块404进一步包括:LZ77压缩算法控制模块4041、字典模块4042。
其中,LZ77压缩算法控制模块4041,用于产生数据读入缓存模块403、字典模块4042和区间编码模块404的相关控制信号,将从数据读入缓存模块403读取待压缩数据和从字典模块4042读取已编码的数据字符信息进行匹配是否为重复数据字符,在匹配计算的同时对字典模块进行相应的更新操作,并对待压缩数据进行LZ77算法压缩编码。例如,首先LZ77压缩算法控制模块4041向数据读入缓存模块403产生读取待压缩数据的信号和读取待压缩数据,然后向字典模块4042产生读取已经压缩编码的数据字符信息的信号和读取已经压缩编码的数据字符信息,将字典模块4042中的已经压缩编码的数据字符信息与待压缩数据进行匹配,如果新数据字符,则LZ77压缩算法控制模块4041按新数据字符LZ77压缩编码输出到区间编码模块404中,如果是重复数据字符,则LZ77压缩算法控制模块4041按重复数据字符LZ77压缩编码输出到区间编码模块404中。
字典模块4042,用于存储已编码的字符信息。例如,字典模块404中存储了已经编码的字符信息,传输给LZ77压缩算法控制模块4041用来与待压缩数据进行匹配是新字符还是重复字符。
图5为本发明提供的硬件LZMA压缩实现系统的一个具体实施实例中LZ77压缩编码模块的具体实施方式的机构示意图。
如图5所示,LZ77压缩编码模块500包括:LZ77压缩算法控制模块501、字典模块502。在实施实例中具体操作为,当硬件LZMA压缩系统初始化后, LZ77压缩算法控制模块501读取到待压缩数据和从字典模块502读取已编码的数据信息进行匹配是否为重复数据字符,如果新数据字符,则LZ77压缩算法控制模块501按新数据字符LZ77压缩编码输出,如果是重复数据字符,则LZ77压缩算法控制模块501按重复数据字符LZ77压缩编码输出,在匹配计算的同时对字典模块中的进行相应的更新已编码的数据信息。
图6为本发明提供的硬件LZMA压缩实现系统的另一个具体实施方式的结构示意图。
如图6所示,硬件LZMA压缩实现系统600包括:PCIE接口模块601、进入数据直接访问模块602、数据读入缓存模块603、LZ77压缩编码模块604、区间编码模块605、数据读出控制模块606、外出数据直接访问模块607;其中PCIE接口模块601、进入数据直接访问模块602、数据读入缓存模块603、LZ77压缩编码模块604、区间编码模块605、数据读出控制模块606、外出数据直接访问模块607可以分别和图1中所示的PCIE接口模块101、进入数据直接访问模块102、数据读入缓存模块103、LZ77压缩编码模块104、区间编码模块105、数据读出控制模块106、外出数据直接访问模块107具有相同的结构,这里不再过多的阐述其具体的技术内容。
如图6所示,区间编码模块605进一步包括:区间编码算法控制模块6051、概率存储模块6052。
其中,区间编码算法控制模块6051,用于实现用区间编码算法对LZ77压缩后数据进行二次压缩,以及产生概率存储模块的控制信号。例如,从LZ77压缩编码模块604收到LZ77压缩后编码数据,根据一定的判定机制判断输入已LZ77压缩编码数据字符类型,区间编码算法控制模块6051根据当前输入数据字符串的类型跳转到不同的状态,从概率存储模块6052中取出本种类型的参考编码概率字段,再给出编码子电路的控制信号,并驱动编码电路进行逐位编码,编码结束后,新区间的计算完成,此时对概率存储模块6052中的概率进行更新,并对区间值进行输出。
概率存储模块6052,用于实时存储不同数据包类型对应的编码参考概率并提供给区间编码算法控制模块进行编码。例如,概率存储模块6052中存储了参考编码概率数据,提供给区间编码算法控制模块6052来对LZ77压缩后编码数据进行区间编码。
图7为本发明提供的硬件LZMA压缩实现系统的一个具体实施实例中区间编码模块的具体实施方式的机构示意图。
如图7所示,区间编码模块700包括:区间算法控制模块701,概率存储模块702。在实施实例中具体操作为,接收到LZ77压缩后编码数据,根据一定的判定机制判断输入已经LZ77压缩编码数据字符类型,区间编码算法控制模块701根据当前输入数据字符串的类型跳转到不同的状态,从概率存储模块702中取出本种类型的参考编码概率数据信息,再给出编码子电路的控制信号,并驱动编码电路进行逐位编码,编码结束后,新区间的计算完成,此时对概率存储模块702进行更新参考编码概率数据信息,并对区间值进行输出。在LZMA压缩实现系统中,区间编码模块700对LZ77压缩后数据进行二次压缩编码,从而提高文件的压缩率,采用了流水线的设计思想,将区间编码模块独立于LZ77压缩编码模块之外,使得区间编码模块和 LZ77编码模块能够高速的并行运转,从一定程度上加速LZMA压缩系统的编码效率。
图8为本发明提供的硬件LZMA压缩实现系统的另一个具体实施方式的结构示意图。
如图8所示,硬件LZMA压缩实现系统800包括:PCIE接口模块801、进入数据直接访问模块802、数据读入缓存模块803、LZ77压缩编码模块804、区间编码模块805、数据读出控制模块806、外出数据直接访问模块807;其中PCIE接口模块801、进入数据直接访问模块802、数据读入缓存模块803、LZ77压缩编码模块804、区间编码模块805、数据读出控制模块806、外出数据直接访问模块807可以分别和图1中所示的PCIE接口模块101、进入数据直接访问模块102、数据读入缓存模块103、LZ77压缩编码模块104、区间编码模块105、数据读出控制模块106、外出数据直接访问模块107具有相同的结构,这里不再过多的阐述其具体的技术内容。
如图8所示,数据读出控制模块806进一步包括:数据拼接模块8061、数据读出缓存模块8062。
其中,数据拼接模块8061,用于拼接压缩后的数据更适应外部高速总线的数据类型。例如,区间编码后的数据是8bits的数据流,而外部接口读写是64bits的数据流,通过数据拼接模块8061将区间编码后的8bits的数据流传输集中到64bits的数据流时,适当的对数据格式进行调整,再发送给数据读出缓存模块8062,这样无需长时间的占用数据总线,可以有效的提高数据总线的利用率。
数据读出缓存模块8062,用于缓存输出的数据,与数据读入缓存模块803具有相同的内部模块结构,同样采用乒乓操作方式对数据进行缓存,数据读入缓存模块803已经在图3详细介绍了内部模块结构工作,这里不再重复的阐述其具体的技术内容。
图9为本发明提供的硬件LZMA压缩实现系统的一个具体实施实例中数据读出控制模块的具体实施方式的机构示意图。
如图9所示,数据读出控制模块900包括:数据拼接模块901,数据读出缓存模块902。在实施实例中具体操作为,本发明LZMA压缩实现系统中数据读出控制模块900在数据读出之前,为了能够高效的使用外部总线接口,数据拼接模块901采用数据拼接的方式将区间编码后的8bits的数据流拼接成为64bits的数据流,使得数据的读写与外部接口统一,以32KB 为一个数据块进行数据输出,将数据传输集中在一个时间段内,这样就无需长时间的占用数据总线,可以有效的提高数据总线的利用率,并且当输出完成时,适当的对数据格式进行调整(由于总线接口输出的数据为大端格式,所以可能需要对最后的一个64bits 数据进行移位操作,以满足大端格式的要求),数据拼接模块901对区间编码后的数据完成拼接工作后,将拼接后的数据发送给数据读出缓存模块902,数据读出缓存模块902采用乒乓操作的方式将数据缓存和数据读出有效的分时操作,不仅可以大大提高数据读出控制器的效率,同时也可以使得外部总线带宽可以被高效的利用,在一定程度上加速了LZMA压缩编码的效率。
图10为本发明提供的硬件LZMA压缩实现系统的另一个具体实施方式的结构示意图。
如图10所示,硬件LZMA压缩实现系统1000包括:PCIE接口模块1001、进入数据直接访问模块1002、数据读入缓存模块1003、LZ77压缩算法控制模块10041、字典模块10042、区间编码模块1005、数据读出控制模块1006、外出数据直接访问模块1007。其中PCIE接口模块1001、进入数据直接访问模块1002、数据读入缓存模块1003、LZ77压缩算法控制模块10041、字典模块10042、区间编码模块1005、数据读出控制模块1006、外出数据直接访问模块1007;可以分别和图4中所示的PCIE接口模块401、进入数据直接访问模块402、数据读入缓存模块403、LZ77压缩算法控制模块4041、字典模块4042、区间编码模块405、数据读出控制模块406、外出数据直接访问模块407;具有相同的结构,这里不再过多的阐述其具体的技术内容。
如图10所示,LZ77压缩算法控制模块10041进一步包括:哈希暂存模块100411、当前数据暂存模块100412、匹配数据暂存模块100413、最大长度匹配模块100414和LZ77编码状态控制模块100415。
其中,哈希暂存模块100411,用于存储当前位置开始的几十个字节的未压缩数据。例如,哈希暂存模块100411存储读入数据缓存模块发来的当前位置开始处理的几十个字节的为压缩数据,当LZ77压缩算法控制模块10041开始工作,读取这些数据,并对这些数据进行哈希变换,和字典中的数据信息进行比对判断是否为重复字符数据。
当前数据暂存模块100412,用于存储当前待压缩对齐的数据。例如,当前数据暂存模块100412用来存储当前待压缩对齐的数据,发送给最大长度匹配模块100414模块与匹配数据暂存模块100413中的数据进行对齐匹配。
匹配数据暂存模块100413,用于存储需要进行对比匹配的数据,这些数据都是已经被压缩编码的数据。例如,匹配数据暂存模块100413用于存储需要进行对比匹配的数据,发送给最大长度匹配模块100414模块与当前数据暂存模块100412中的数据进行对齐匹配。
最大长度匹配模块100414,用于计算产生两个数据流中出现重复字符串时的最大匹配长度。例如,最大长度匹配模块100414用于对当前数据暂存模块100412中和匹配数据暂存模块100413中的两个数据流进行对齐匹配,计算出重复字符串的最大匹配长度,并发送给LZ77编码状态控制模块100415。
LZ77编码状态控制模块100415,用于对待压缩数据进行最优的LZ77压缩编码,以及产生上述模块的控制信号。例如,LZ77编码状态控制模块100415用于读取哈希暂存模块100411中的当前待压缩数据,进行哈希变换,根据字典模块的的数据区分当前处理位置上的数据是新字符还是重复字符,如果是新字符,LZ77编码状态控制模块100415按新字符LZ77编码输出,如果是重复字符,LZ77编码状态控制模块100415接受到最大长度匹配模块100414计算出当前数据暂存模块100412中和匹配数据暂存模块100413中的两个数据流重复字符串的最大匹配长度,并将当前待压缩数据按重复字符LZ77编码输出。
图11为本发明提供的硬件LZMA压缩实现系统的一个具体实施实例中LZ77压缩算法控制模块的具体实施方式的机构示意图。
如图11所示,LZ77压缩算法控制模块1100包括:哈希暂存模块1101、当前数据暂存模块1102、匹配数据暂存模块1103、最大长度匹配模块1104和LZ77编码状态控制模块1105。在实施实例中具体操作为,本发明LZMA压缩实现系统中LZ77压缩算法控制模块1100接收到LZ77编码的相关控制信号开始工作,读取哈希暂存模块1101中的当前待压缩数据进行哈希变换,将哈希变换值与历史字典数据信息进行对比判断是否为重复字符数据,如果是新字符数据,LZ77编码状态控制模块1105将待压缩数据按新字符LZ77压缩编码输出,如果是重复字符,最大长度匹配模块1104通过读取当前数据暂存模块1102中对齐的当前待压缩数据和匹配数据暂存模块1103中对齐的已编码数据,进行最大长度匹配,将结果发送给LZ77编码状态控制模块1105将待压缩数据按重复字符LZ77压缩编码输出,在计算的同时更新字典中的数据信息。
图12为本发明提供的硬件LZMA压缩实现系统的另一个具体实施方式的结构示意图。
如图12所示,硬件LZMA压缩实现系统1200包括:PCIE接口模块1201、进入数据直接访问模块1202、数据读入缓存模块1203、LZ77压缩算法控制模块12041、字典模块12042、区间编码模块1205、数据读出控制模块1206、外出数据直接访问模块1207。其中PCIE接口模块1201、进入数据直接访问模块1202、数据读入缓存模块1203、LZ77压缩算法控制模块12041、字典模块12042、区间编码模块1205、数据读出控制模块1206、外出数据直接访问模块1207,可以分别和图4中所示的PCIE接口模块401、进入数据直接访问模块402、数据读入缓存模块403、LZ77压缩算法控制模块4041、字典模块4042、区间编码模块405、数据读出控制模块406、外出数据直接访问模块407;具有相同的结构,这里不再过多的阐述其具体的技术内容。
如图12所示,字典模块12042进一步包括:数据存储装置120421、数据存储装置120422、数据存储装置120423和数据存储装置120424。
其中,数据存储装置120421或数据存储装置120422或数据存储装置120423或数据存储装置120424,用于存储已LZ77编码的数据信息。例如,LZ77压缩算法控制模块12041读取数据存储装置中的已LZ77编码的数据信息进行与待压缩数据信息做比较判断是否为重复字符数据。
图13为本发明提供的硬件LZMA压缩实现系统的一个具体实施实例中字典模块的具体实施方式的机构示意图。
如图13所示,字典模块1300包括:数据存储装置1301、数据存储装置13042、数据存储装置1303和数据存储装置1304。在实施实例中具体操作为,本发明LZMA压缩实现系统中字典模块1300用数据存储装置1301、数据存储装置13042、数据存储装置1303和数据存储装置1304存储已编码的数据信息,用四个数据存储装置实现了字典模块1300的级联哈希链表结构,根据当前位置的数据哈希变换值作为地址,一次性可以快速的定位4个数据,从一定程度上加速LZMA压缩系统的编码效率。
图14为本发明提供的硬件LZMA压缩实现方法的流程图;
如题14所示,硬件LZMA压缩实现方法的流程1400包括:步骤1401、步骤1402、步骤1403和步骤1404。
其中,步骤1401,缓存接口传输过来的待压缩数据。例如,利用写入数据选择器301、写入数据选择器302、数据存储装置303、数据存储装置304、读出数据多路选择器305实现数据乒乓操作方式存储待压缩数据。
步骤1402,对待压缩数据进行LZ77压缩编码。例如,LZ77编码状态控制模块1105初始化后开始工作,读取哈希暂存模块1101中的存储的当前待压缩数据进行哈希变换,将哈希变化值作为地址,一次性定位字典模块1300中数据存储装置中4个数据进行比对,判断是否为重复字符数据,如果是新字符数据,则LZ77编码状态控制模块1105按照新字符数据LZ77压缩编码输出,如果是重复字符数据,最长长度匹配模块1104读取当前数据暂存模块1102中对齐的当前待压缩数据和匹配数据暂存模块1103中对齐的已编码数据进行计算匹配重复的字符最大长度,将结果发送给LZ77编码状态控制模块1105将待压缩数据按重复字符LZ77压缩编码输出,在计算的同时更新字典模块1300中的数据存储装置中的数据信息。
步骤1403,对LZ77压缩后数据进行区间编码。例如,接收到LZ77压缩后编码数据,根据一定的判定机制判断输入已经LZ77压缩编码数据字符类型,区间编码算法控制模块701根据当前输入数据字符串的类型跳转到不同的状态,从概率存储模块702中取出本种类型的参考编码概率数据信息,再给出编码子电路的控制信号,并驱动编码电路进行逐位编码,编码结束后,新区间的计算完成,此时对概率存储模块702进行更新参考编码概率数据信息,并对区间值进行输出。
步骤1404,缓存压缩后的数据并将压缩后数据传输至接口。例如本发明LZMA压缩实现系统中数据读出控制模块900在数据读出之前,为了能够高效的使用外部总线接口,数据拼接模块901采用数据拼接的方式将区间编码后的8bits的数据流拼接成为64bits的数据流,使得数据的读写与外部接口统一,以32KB 为一个数据块进行数据输出,将数据传输集中在一个时间段内,这样就无需长时间的占用数据总线,可以有效的提高数据总线的利用率,并且当输出完成时,适当的对数据格式进行调整,数据拼接模块901对区间编码后的数据完成拼接工作后,将拼接后的数据发送给数据读出缓存模块902,数据读出缓存模块902采用乒乓操作的方式将数据缓存。
图15为本发明提供的硬件LZMA压缩实现方法的另一个实施例的流程图;
如图15所示,硬件LZMA压缩实现方法的流程包括:步骤15011、步骤1502、步骤1503和步骤1504,其中步骤1502、步骤1503和步骤1504分别与图14所示的步骤1402、步骤1403和步骤1404进行相同或者相似的操作,在此不再进行过多的叙述。
步骤15011,通过两个写入数据多路选择器控制待压缩的数据存储到两个数据存储装和一个读出数据多路选择器交替输出两个数据存储装置中的待压缩数据。例如,数据刚开始压缩,通过选择信号选择写入数据多路选择器301和写入数据多路选择器302当中一个,并将待压缩数据对应存储到数据存储装置303和数据存储装置304中,再通过读出数据多路选择器305交替从数据存储装置303和数据存储装置304中读取待压缩数据,实现了乒乓操作方式的数据读写,这个过程将持续到所有待压缩数据全部传输完毕为止,从一定程度上加速LZMA压缩编码效率。
图16为本发明提供的硬件LZMA压缩实现方法的另一个实施例的流程图;
如图16所示,硬件LZMA压缩实现方法的流程包括:步骤1601、步骤16021、步骤16022、步骤16023、步骤1603和步骤1604,其中步骤1601、步骤1503和步骤1504分别与图14所示的步骤1401、步骤1403和步骤1404进行相同或者相似的操作,在此不再进行过多的叙述。
步骤16021,压缩数据初始化期间,对LZ77压缩编码模块中待压缩数据读入缓存进行初始化,同时,同步输出区间编码模块的初始化信号,并等待开始LZ77压缩编码的控制信号。例如,在压缩数据初始化期间,通过LZ77编码状态控制模块1105发送初始化控制信号对哈希模块1101、当前数据暂存模块1102、匹配数据暂存模块1103、最大长度匹配模块1104、字典模块1300和区间编码模块700等模块进行初始化,等待LZ77压缩编码开始工作的控制信号,准备开始进行压缩编码。
步骤16022,压缩数据时,对新的待压缩数据进行哈希变换,根据字典模块的返回值区分当前处理的数据时新字符还是重复字符,如果数据是新字符,以新字符LZ77编码输出,如果是重复字符,用过对当前待压缩数据和已经编码后的数据进行匹配计算出最大长度重复字符数据,将待压缩数据以重复字符LZ77编码输出。例如,压缩数据时,LZ77编码状态控制模块1105读取哈希暂存模块1101中当前暂存的待压缩数据,进行哈希变换,将哈希变化值作为地址,一次性定位字典模块1300中数据存储装置中4个数据进行比对,判断是否为重复字符数据,如果是新字符数据,则LZ77编码状态控制模块1105按照新字符数据LZ77压缩编码输出,如果是重复字符数据,最长长度匹配模块1104读取当前数据暂存模块1102中对齐的当前待压缩数据和匹配数据暂存模块1103中对齐的已编码数据进行计算匹配重复的字符最大长度,将结果发送给LZ77编码状态控制模块1105将待压缩数据按重复字符LZ77压缩编码输出。
步骤16023,压缩过程中,在当前待压缩数据和已经编码后的数据进行最大长度匹配的计算同时对字典模块中的数据信息进行相应的更新操作。例如,压缩过程中,如果字典模块匹配结果是重复字符,则最长长度匹配模块1104读取当前数据暂存模块1102中对齐的当前待压缩数据和匹配数据暂存模块1103中对齐的已编码数据进行计算匹配重复的字符最大长度,在计算的同时,实时更新字典模块1300中存储的已编码数据信息。
图17为本发明提供的硬件LZMA压缩实现方法的另一个实施例的流程图;
如图17所示,硬件LZMA压缩实现方法的流程包括:步骤1701、步骤1702、步骤17031、步骤17032和步骤1704,其中步骤1701、步骤1702和步骤1504分别与图14所示的步骤1401、步骤1402和步骤1404进行相同或者相似的操作,在此不再进行过多的叙述。
步骤17031,区间编码时,根据一定的判定机制判断输入待压缩数据字符类型,区间编码算法控制模块根据当前输入数据字符串的类型跳转到不同的状态,从概率存储模块中取出本种类型的参考编码概率字段,再给出编码子电路的控制信号,并驱动编码电路进行逐位编码。例如,区间编码算法控制模块701接收到LZ77压缩后的编码数据,根据一定的判断机制判断输入待区间编码压缩数据字符类型,区间编码算法控制模块701根据当前输入数据字符串的类型跳转到不同的状态,从概率存储模块702中读取本种类型的参考编码概率字段,再给出编码子电路的控制信号,并驱动编码电路进行逐位编码。
步骤17032,编码结束后,新区间的计算完成,此时对相应的概率进行更新,并对区间值进行输出。例如,区间编码算法控制模块701在完成一次待区间编码数据的编码,新区间的计算也随之完成,此时对概率存储模块702中的数据进行更新,最后区间编码算法控制模块将区间编码后的值输出。
图18为本发明提供的硬件LZMA压缩实现方法的另一个实施例的流程图;
如图18所示,硬件LZMA压缩实现方法的流程包括:步骤1801、步骤1802、步骤1803、步骤18041和步骤18042,其中步骤1801、步骤1802和步骤1803分别与图14所示的步骤1401、步骤1402和步骤1403进行相同或者相似的操作,在此不再进行过多的叙述。
步骤18041,数据拼接模块使用移位寄存器实现将区间编码输出的数据拼接成更适应外部高速总线的数据类型。例如,本发明LZMA压缩实现系统中数据读出控制模块900在数据读出之前,为了能够高效的使用外部总线接口,数据拼接模块901采用数据拼接的方式将区间编码后的8bits的数据流拼接成为64bits的数据流,使得数据的读写与外部接口统一,以32KB 为一个数据块进行数据输出,使用移位寄存器将数据传输集中在一个时间段内,这样就无需长时间的占用数据总线,可以有效的提高数据总线的利用率,并且当输出完成时,适当的对数据格式进行调整,数据拼接模块901对区间编码后的数据完成拼接工作后,将拼接后的数据发送给数据读出缓存模块902,加速了LZMA压缩编码的效率。
步骤18042,数据读出缓存使用两个写入数据多路选择器将压缩后的数据写入两个数据存储装置中的其中一个数据存储装置,通过一个读出数据多路选择器交替读出存储器装置中的数据。步骤18042和图15所示的步骤15011进行相同或者相似的操作,在此不再进行过多的叙述。
图19为本发明提供的硬件LZMA压缩实现方法的一个具体应用实例的流程图。
如图19所示,硬件LZMA压缩实现方法的流程1900包括:步骤1901、步骤1902、步骤1903、步骤1904、步骤1905、步骤1906、步骤1907和步骤1908
步骤1901,通过两个写入数据多路选择器控制待压缩的数据存储到两个数据存储装和一个读出数据多路选择器交替输出两个数据存储装置中的待压缩数据。例如,数据刚开始压缩,通过选择信号选择写入数据多路选择器301和写入数据多路选择器302当中一个,并将待压缩数据对应存储到数据存储装置303和数据存储装置304中,再通过读出数据多路选择器305交替从数据存储装置303和数据存储装置304中读取待压缩数据,实现了乒乓操作方式的数据读写,这个过程将持续到所有待压缩数据全部传输完毕为止,从一定程度上加速LZMA压缩编码效率。
步骤1902,压缩数据初始化期间,对LZ77压缩编码模块中待压缩数据读入缓存进行初始化,同时,同步输出区间编码模块的初始化信号,并等待开始LZ77压缩编码的控制信号。例如,在压缩数据初始化期间,通过LZ77编码状态控制模块1105发送初始化控制信号对哈希模块1101、当前数据暂存模块1102、匹配数据暂存模块1103、最大长度匹配模块1104、字典模块1300和区间编码模块700等模块进行初始化,等待LZ77压缩编码开始工作的控制信号,准备开始进行压缩编码。
步骤1903,压缩数据时,对新的待压缩数据进行哈希变换,根据字典模块的返回值区分当前处理的数据时新字符还是重复字符,如果数据是新字符,以新字符LZ77编码输出,如果是重复字符,用过对当前待压缩数据和已经编码后的数据进行匹配计算出最大长度重复字符数据,将待压缩数据以重复字符LZ77编码输出。例如,压缩数据时,LZ77编码状态控制模块1105读取哈希暂存模块1101中当前暂存的待压缩数据,进行哈希变换,将哈希变化值作为地址,一次性定位字典模块1300中数据存储装置中4个数据进行比对,判断是否为重复字符数据,如果是新字符数据,则LZ77编码状态控制模块1105按照新字符数据LZ77压缩编码输出,如果是重复字符数据,最长长度匹配模块1104读取当前数据暂存模块1102中对齐的当前待压缩数据和匹配数据暂存模块1103中对齐的已编码数据进行计算匹配重复的字符最大长度,将结果发送给LZ77编码状态控制模块1105将待压缩数据按重复字符LZ77压缩编码输出。
步骤1904,压缩过程中,在当前待压缩数据和已经编码后的数据进行最大长度匹配的计算同时对字典模块中的数据信息进行相应的更新操作。例如,压缩过程中,如果字典模块匹配结果是重复字符,则最长长度匹配模块1104读取当前数据暂存模块1102中对齐的当前待压缩数据和匹配数据暂存模块1103中对齐的已编码数据进行计算匹配重复的字符最大长度,在计算的同时,实时更新字典模块1300中存储的已编码数据信息。
步骤1905,区间编码时,根据一定的判定机制判断输入待压缩数据字符类型,区间编码算法控制模块根据当前输入数据字符串的类型跳转到不同的状态,从概率存储模块中取出本种类型的参考编码概率字段,再给出编码子电路的控制信号,并驱动编码电路进行逐位编码。例如,区间编码算法控制模块701接收到LZ77压缩后的编码数据,根据一定的判断机制判断输入待区间编码压缩数据字符类型,区间编码算法控制模块701根据当前输入数据字符串的类型跳转到不同的状态,从概率存储模块702中读取本种类型的参考编码概率字段,再给出编码子电路的控制信号,并驱动编码电路进行逐位编码。
步骤1906,编码结束后,新区间的计算完成,此时对相应的概率进行更新,并对区间值进行输出。例如,区间编码算法控制模块701在完成一次待区间编码数据的编码,新区间的计算也随之完成,此时对概率存储模块702中的数据进行更新,最后区间编码算法控制模块将区间编码后的值输出。
步骤1907,数据拼接模块使用移位寄存器实现将区间编码输出的数据拼接成更适应外部高速总线的数据类型。例如,本发明LZMA压缩实现系统中数据读出控制模块900在数据读出之前,为了能够高效的使用外部总线接口,数据拼接模块901采用数据拼接的方式将区间编码后的8bits的数据流拼接成为64bits的数据流,使得数据的读写与外部接口统一,以32KB 为一个数据块进行数据输出,使用移位寄存器将数据传输集中在一个时间段内,这样就无需长时间的占用数据总线,可以有效的提高数据总线的利用率,并且当输出完成时,适当的对数据格式进行调整,数据拼接模块901对区间编码后的数据完成拼接工作后,将拼接后的数据发送给数据读出缓存模块902,加速了LZMA压缩编码的效率。
步骤1908,数据读出缓存使用两个写入数据多路选择器将压缩后的数据写入两个数据存储装置中的其中一个数据存储装置,通过一个读出数据多路选择器交替读出存储器装置中的数据。步骤1908和步骤1901进行相同或者相似的操作,在此不再进行过多的叙述。
参考上述本发明示例性的描述,本领域技术人员可以了解本发明具有如下的几个优越性:
本发明提供了硬件LZMA压缩实现系统及实现方法,采用FPGA(Field Programmable Gate
Arry)实现LZMA压缩功能,通过采用数据读入缓存模块、数据读出缓存模块实现数据写入和读出的乒乓操作,以及数据拼接模块有效的提高数据总线的利用率,提高了LZMA压缩编码的效率。
本发明提供了硬件LZMA压缩实现系统及实现方法,采用四个级联的存储装置组成了字典模块,这种级联结构一次性可以快速定位字典模块中4个已编码数据信息,从一定程度上提高了LZMA压缩的效率。
本发明提供了硬件LZMA压缩实现系统及实现方法,采用LZ77编码模块和区间编码模块,区间编码模块用于对LZ77压缩后的数据进行二次压缩,从而提高了数据的压缩率,为了进一步地达到加速LZMA压缩算法的目的,本发明采用流水线的设计思想,将区间编码模块独立于LZ77压缩编码模块之外,使得这两个模块能够高速的并行运转,从而提高了LZMA压缩编码的效率。
尽管本发明此处具体化一些特定的例子示出和描述,然而本发明不限制于所实处的细节,因为在不偏离本发明的精神以及在权利要求的范围和等同范围内,可以做出多种改进和结构变化。因此,宽范围的并且如权利要求中所阐明的再某种意义上与本发明的范围一致的解释附加的权利要求是适当的。
本技术领域技术人员可以理解,本发明可以涉及用于执行本申请中所述操作中的一项或多项操作的设备。所述设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备,所述通用计算机有存储在其内的程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、随即存储器(RAM)、只读存储器(ROM)、电可编程ROM、电可擦ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁性卡片或光线卡片。可读介质包括用于以由设备(例如,计算机)可读的形式存储或传输信息的任何机构。例如,可读介质包括随即存储器(RAM)、只读存储器(ROM)、磁盘存储介质、光学存储介质、闪存装置、以电的、光的、声的或其他的形式传播的信号(例如载波、红外信号、数字信号)等。
本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来生成机器,从而通过计算机或其他可编程数据处理方法的处理器来执行的指令创建了用于实现结构图和/或框图和/或流图的框或多个框中指定的方法。
本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种硬件LZMA压缩实现系统,其特征在于,包括:
PCIE接口模块101,其连接上位机,以与上位机进行通信,其中:所述通信包括:PCIE接口模块从上位机输入待压缩数据和/或PCIE接口模块向上位机输出已压缩数据;
进入数据直接访问模块102,其连接所述PCIE接口模块,并根据所述上位机中配置的地址和数据长度,从指定的地址读取指定长度的数据;
数据读入缓存模块103,其连接所述进入数据直接访问模块102,并从所述进入数据直接访问模块102读取待压缩的数据,用乒乓操作方式将待压缩数据写入数据存储装置,以缓存待压缩数据;
LZ77压缩编码模块104,其连接所述数据读入缓存模块103,用于在从所述数据读入缓存模块103读取预定量的待压缩数据之后,对待压缩数据进行LZ77算法压缩编码以获得LZ77压缩编码数据,并且产生数据读入缓存模块和区间编码模块的相关控制信号;
区间编码模块105,其连接所述LZ77压缩编码模块104,并对LZ77压缩编码数据进行区间编码以获得区间编码数据;
数据读出控制模块106,其连接所述区间编码模块105,并将所述区间编码数据拼接成更适应外部高速总线的数据类型,并缓存拼接后的数据;
外出数据直接访问模块107,其分别连接PCIE接口模块和数据读出控制模块,并根据所述上位机中配置的地址和数据长度,向指定的地址中写入定长度的数据。
2.根据权利要求1所述的硬件LZMA压缩实现系统,其特征在于,所述数据读入缓存模块包括:
第一写入数据多路选择器,用于选择将待压缩的数据存写入第一数据存储装置中;
第二写入数据多路选择器,用于选择将待压缩的数据存写入第二数据存储装置中;
至少一个读出数据多路选择器,分别连接第一数据存储装置和第二数据存储装置,以将第一数据存储装置和第二数据存储装置中的数据交替加载到输出数据总线上;
通过三个多路选择器、两个数据存储装置和由LZ77压缩编码模块提供的相应控制信号实现数据写入的乒乓操作。
3.根据权利要求1所述的硬件LZMA压缩实现系统,其特征在于,所述LZ77编码模块包括:
字典模块,用于存储已编码的字符信息;
LZ77压缩算法控制模块,用于产生数据读入缓存模块、字典模块和区间编码模块的相关控制信号,将从数据读入缓存模块读取待压缩数据和从字典模块读取已编码的数据字符信息进行匹配是否为重复数据字符,在匹配计算的同时对字典模块进行相应的更新操作,并对待压缩数据进行LZ77算法压缩编码。
4.根据权利要求1所述的硬件LZMA压缩实现系统,其特征在于,所述区间编码模块包括:
区间编码算法控制模块,用于实现用区间编码算法对LZ77压缩后数据进行二次压缩,以及产生概率存储模块的控制信号;
概率存储模块,用于实时存储不同数据包类型对应的编码参考概率并提供给区间编码算法控制模块进行编码。
5.根据权利要求1所述的硬件LZMA压缩实现系统,其特征在于,所述数据读出缓存控制模块包括:
数据拼接模块,用于拼接压缩后的数据更适应外部高速总线的数据类型;
数据读出缓存模块,用于缓存输出的数据。
6.根据权利要求3所述的硬件LZMA压缩实现系统,其特征在于,所述LZ77压缩算法控制模块包括:
哈希暂存模块,用于存储当前位置开始的几十个字节的未压缩数据;
当前数据暂存模块,用于存储当前待压缩对齐的数据;
匹配数据暂存模块,用于存储需要进行对比匹配的数据,这些数据都是已经被压缩编码的数据;
最大长度匹配模块,用于计算产生两个数据流中出现重复字符串时的最大匹配长度;
LZ77编码状态控制模块,用于对待压缩数据进行最优的LZ77压缩编码,以及产生上述模块的控制信号。
7.根据权利要求3所述的硬件LZMA压缩实现系统,其特征在于,所述字典模块包括:
四个数据存储装置,用于实现级联哈希链表结构,一次性快速定位4个数据。
8.一种硬件LZMA压缩实现方法,其特征在于,包括下述步骤:
(1)缓存接口传输过来的待压缩数据;
(2)对待压缩数据进行LZ77压缩编码;
(3)对LZ77压缩后数据进行区间编码;
(4)缓存压缩后的数据并将压缩后数据传输至接口。
9.根据权利要求8所述的硬件LZMA压缩实现方法,其特征在于,所述步骤(1)缓存接口传输过来的待压缩数据过程包括:
通过两个写入数据多路选择器控制待压缩的数据存储到两个数据存储装和一个读出数据多路选择器交替输出两个数据存储装置中的待压缩数据。
10.根据权利要求8所述的硬件LZMA压缩实现方法,其特征在于,所述步骤(2)对待压缩数据进行LZ77压缩编码过程包括:
压缩数据初始化期间,对LZ77压缩编码模块中待压缩数据读入缓存进行初始化,同时,同步输出区间编码模块的初始化信号,并等待开始LZ77压缩编码的控制信号;
压缩数据时,对新的待压缩数据进行哈希变换,根据字典模块的返回值区分当前处理的数据时新字符还是重复字符,如果数据是新字符,以新字符LZ77编码输出,如果是重复字符,用过对当前待压缩数据和已经编码后的数据进行匹配计算出最大长度重复字符数据,将待压缩数据以重复字符LZ77编码输出;
压缩过程中,在当前待压缩数据和已经编码后的数据进行最大长度匹配的计算同时对字典模块中的数据信息进行相应的更新操作。
11.根据权利要求8所述的硬件LZMA压缩实现方法,其特征在于,所述步骤(3)对LZ77压缩后数据进行区间编码过程包括:
区间编码时,根据一定的判定机制判断输入待压缩数据字符类型,区间编码算法控制模块根据当前输入数据字符串的类型跳转到不同的状态,从概率存储模块中取出本种类型的参考编码概率字段,再给出编码子电路的控制信号,并驱动编码电路进行逐位编码;
编码结束后,新区间的计算完成,此时对相应的概率进行更新,并对区间值进行输出。
12.根据权利要求8所述的硬件LZMA压缩实现方法,其特征在于,所述步骤(4)缓存压缩后的数据并控制压缩后数据传输至接口:
数据拼接模块使用移位寄存器实现将区间编码输出的数据拼接成更适应外部高速总线的数据类型;
数据读出缓存使用两个写入数据多路选择器将压缩后的数据写入两个数据存储装置中的其中一个数据存储装置,通过一个读出数据多路选择器交替读出存储器装置中的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410472712.3A CN104202054A (zh) | 2014-09-16 | 2014-09-16 | 一种硬件lzma压缩实现系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410472712.3A CN104202054A (zh) | 2014-09-16 | 2014-09-16 | 一种硬件lzma压缩实现系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104202054A true CN104202054A (zh) | 2014-12-10 |
Family
ID=52087296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410472712.3A Pending CN104202054A (zh) | 2014-09-16 | 2014-09-16 | 一种硬件lzma压缩实现系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104202054A (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104749429A (zh) * | 2015-04-08 | 2015-07-01 | 四川拓普测控科技有限公司 | 雷电过电压信号无损压缩记录系统 |
CN105007083A (zh) * | 2015-08-13 | 2015-10-28 | 东南大学 | 一种lz77压缩算法输出结果的存储方法 |
CN105207678A (zh) * | 2015-09-29 | 2015-12-30 | 东南大学 | 一种改进型lz4压缩算法的硬件实现系统 |
CN105553483A (zh) * | 2015-12-09 | 2016-05-04 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种产生lz77的方法及装置 |
CN105790768A (zh) * | 2014-12-19 | 2016-07-20 | 珠海全志科技股份有限公司 | 数据存储方法和系统 |
CN106385260A (zh) * | 2016-09-28 | 2017-02-08 | 中国电子科技集团公司第二十八研究所 | 一种基于低延时的lz无损压缩算法的fpga实现系统 |
WO2017092564A1 (en) * | 2015-12-03 | 2017-06-08 | Huawei Technologies Co., Ltd. | Data streaming unit and method for operating the data streaming unit |
CN107852174A (zh) * | 2015-07-03 | 2018-03-27 | 基麦提松科技公司 | 固定长度数据的压缩方法 |
WO2019242554A1 (zh) * | 2018-06-19 | 2019-12-26 | 敦泰电子有限公司 | 数据分阶压缩传输方法及实现该方法的器件和电子设备 |
US10565182B2 (en) | 2015-11-23 | 2020-02-18 | Microsoft Technology Licensing, Llc | Hardware LZMA compressor |
CN111159074A (zh) * | 2019-12-31 | 2020-05-15 | 山东超越数控电子股份有限公司 | 一种基于FPGA的超大规模数据hash运算加速卡 |
CN111835359A (zh) * | 2019-04-22 | 2020-10-27 | 深圳捷誊技术有限公司 | 压缩装置、存储介质及重复信息查询、更新的方法和装置 |
WO2020232683A1 (zh) * | 2019-05-22 | 2020-11-26 | 深圳大学 | 一种基于流水式的硬件压缩的系统及方法 |
CN112579547A (zh) * | 2021-01-27 | 2021-03-30 | 深圳市亿联无限科技有限公司 | 嵌入式系统镜像文件压缩方法及装置 |
CN112803950A (zh) * | 2021-01-05 | 2021-05-14 | 上海臣星软件技术有限公司 | 一种数据压缩方法、装置、设备及计算机存储介质 |
TWI729996B (zh) * | 2015-09-25 | 2021-06-11 | 美商英特爾股份有限公司 | 使用硬體及軟體來解壓縮之系統、方法及裝置 |
CN113300715A (zh) * | 2021-05-20 | 2021-08-24 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据处理方法、装置、硬件压缩设备以及介质 |
CN114077554A (zh) * | 2022-01-20 | 2022-02-22 | 广州匠芯创科技有限公司 | 一种数据解码方法、系统、设备及介质 |
CN114244373A (zh) * | 2022-02-24 | 2022-03-25 | 麒麟软件有限公司 | Lz系列压缩算法编解码速度优化方法 |
CN114442954A (zh) * | 2022-01-26 | 2022-05-06 | 山东云海国创云计算装备产业创新中心有限公司 | 一种lz4编码压缩装置 |
WO2023011145A1 (zh) * | 2021-08-06 | 2023-02-09 | 华为技术有限公司 | 一种通信方法及装置 |
CN117119120A (zh) * | 2023-10-25 | 2023-11-24 | 上海伯镭智能科技有限公司 | 基于多台无人驾驶矿车的协同控制方法 |
Citations (4)
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的压缩实现系统及方法 |
CN202931289U (zh) * | 2012-11-14 | 2013-05-08 | 无锡芯响电子科技有限公司 | 一种硬件lz77压缩实现系统 |
CN103475375A (zh) * | 2013-09-04 | 2013-12-25 | 东南大学 | 一种lz77压缩算法硬件加速系统及加速方法 |
-
2014
- 2014-09-16 CN CN201410472712.3A patent/CN104202054A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023509A (zh) * | 2012-11-14 | 2013-04-03 | 无锡芯响电子科技有限公司 | 一种硬件lz77压缩实现系统及其实现方法 |
CN202931289U (zh) * | 2012-11-14 | 2013-05-08 | 无锡芯响电子科技有限公司 | 一种硬件lz77压缩实现系统 |
CN103095305A (zh) * | 2013-01-06 | 2013-05-08 | 中国科学院计算技术研究所 | 一种硬件lz77的压缩实现系统及方法 |
CN103475375A (zh) * | 2013-09-04 | 2013-12-25 | 东南大学 | 一种lz77压缩算法硬件加速系统及加速方法 |
Non-Patent Citations (1)
Title |
---|
Hardware implementation of LZMA data compression algorithm;Leavline E J, Singh D A A G;《International Journal of Applied Information System(IJAIS)》;20130331;正文第52页第1栏第51行至第2栏第7行,第53页第1栏第1行至第5行,第53页第1栏第1-13行,说明书附图1 * |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105790768A (zh) * | 2014-12-19 | 2016-07-20 | 珠海全志科技股份有限公司 | 数据存储方法和系统 |
CN105790768B (zh) * | 2014-12-19 | 2018-12-25 | 珠海全志科技股份有限公司 | 数据存储方法和系统 |
CN104749429A (zh) * | 2015-04-08 | 2015-07-01 | 四川拓普测控科技有限公司 | 雷电过电压信号无损压缩记录系统 |
CN107852174A (zh) * | 2015-07-03 | 2018-03-27 | 基麦提松科技公司 | 固定长度数据的压缩方法 |
CN105007083A (zh) * | 2015-08-13 | 2015-10-28 | 东南大学 | 一种lz77压缩算法输出结果的存储方法 |
TWI729996B (zh) * | 2015-09-25 | 2021-06-11 | 美商英特爾股份有限公司 | 使用硬體及軟體來解壓縮之系統、方法及裝置 |
CN105207678B (zh) * | 2015-09-29 | 2018-10-26 | 东南大学 | 一种改进型lz4压缩算法的硬件实现系统 |
CN105207678A (zh) * | 2015-09-29 | 2015-12-30 | 东南大学 | 一种改进型lz4压缩算法的硬件实现系统 |
US10565182B2 (en) | 2015-11-23 | 2020-02-18 | Microsoft Technology Licensing, Llc | Hardware LZMA compressor |
CN108293027A (zh) * | 2015-12-03 | 2018-07-17 | 华为技术有限公司 | 数据流送单元和用于操作数据流送单元的方法 |
WO2017092564A1 (en) * | 2015-12-03 | 2017-06-08 | Huawei Technologies Co., Ltd. | Data streaming unit and method for operating the data streaming unit |
US10419501B2 (en) | 2015-12-03 | 2019-09-17 | Futurewei Technologies, Inc. | Data streaming unit and method for operating the data streaming unit |
CN108293027B (zh) * | 2015-12-03 | 2020-10-09 | 华为技术有限公司 | 数据流送单元和用于操作数据流送单元的方法 |
CN105553483B (zh) * | 2015-12-09 | 2018-12-21 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种产生lz77的方法及装置 |
CN105553483A (zh) * | 2015-12-09 | 2016-05-04 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种产生lz77的方法及装置 |
CN106385260B (zh) * | 2016-09-28 | 2019-05-21 | 中电莱斯信息系统有限公司 | 一种基于低延时的lz无损压缩算法的fpga实现系统 |
CN106385260A (zh) * | 2016-09-28 | 2017-02-08 | 中国电子科技集团公司第二十八研究所 | 一种基于低延时的lz无损压缩算法的fpga实现系统 |
TWI695591B (zh) * | 2018-06-19 | 2020-06-01 | 開曼群島商敦泰電子有限公司 | 資料分階壓縮傳輸方法及實現該方法的器件和電子設備 |
CN110618960A (zh) * | 2018-06-19 | 2019-12-27 | 敦泰电子有限公司 | 数据分阶压缩传输方法及实现该方法的器件和电子设备 |
WO2019242554A1 (zh) * | 2018-06-19 | 2019-12-26 | 敦泰电子有限公司 | 数据分阶压缩传输方法及实现该方法的器件和电子设备 |
CN111835359A (zh) * | 2019-04-22 | 2020-10-27 | 深圳捷誊技术有限公司 | 压缩装置、存储介质及重复信息查询、更新的方法和装置 |
CN111835359B (zh) * | 2019-04-22 | 2022-03-22 | 深圳捷誊技术有限公司 | 压缩装置、存储介质及重复信息查询、更新的方法和装置 |
WO2020232683A1 (zh) * | 2019-05-22 | 2020-11-26 | 深圳大学 | 一种基于流水式的硬件压缩的系统及方法 |
CN111159074A (zh) * | 2019-12-31 | 2020-05-15 | 山东超越数控电子股份有限公司 | 一种基于FPGA的超大规模数据hash运算加速卡 |
CN112803950A (zh) * | 2021-01-05 | 2021-05-14 | 上海臣星软件技术有限公司 | 一种数据压缩方法、装置、设备及计算机存储介质 |
CN112579547A (zh) * | 2021-01-27 | 2021-03-30 | 深圳市亿联无限科技有限公司 | 嵌入式系统镜像文件压缩方法及装置 |
CN112579547B (zh) * | 2021-01-27 | 2024-01-23 | 深圳市亿联无限科技有限公司 | 嵌入式系统镜像文件压缩方法及装置 |
CN113300715B (zh) * | 2021-05-20 | 2022-08-19 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据处理方法、装置、硬件压缩设备以及介质 |
CN113300715A (zh) * | 2021-05-20 | 2021-08-24 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据处理方法、装置、硬件压缩设备以及介质 |
WO2023011145A1 (zh) * | 2021-08-06 | 2023-02-09 | 华为技术有限公司 | 一种通信方法及装置 |
CN114077554A (zh) * | 2022-01-20 | 2022-02-22 | 广州匠芯创科技有限公司 | 一种数据解码方法、系统、设备及介质 |
CN114077554B (zh) * | 2022-01-20 | 2022-06-21 | 广州匠芯创科技有限公司 | 一种数据解码方法、系统、设备及介质 |
CN114442954A (zh) * | 2022-01-26 | 2022-05-06 | 山东云海国创云计算装备产业创新中心有限公司 | 一种lz4编码压缩装置 |
CN114442954B (zh) * | 2022-01-26 | 2024-05-03 | 山东云海国创云计算装备产业创新中心有限公司 | 一种lz4编码压缩装置 |
CN114244373A (zh) * | 2022-02-24 | 2022-03-25 | 麒麟软件有限公司 | Lz系列压缩算法编解码速度优化方法 |
CN117119120A (zh) * | 2023-10-25 | 2023-11-24 | 上海伯镭智能科技有限公司 | 基于多台无人驾驶矿车的协同控制方法 |
CN117119120B (zh) * | 2023-10-25 | 2023-12-22 | 上海伯镭智能科技有限公司 | 基于多台无人驾驶矿车的协同控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104202054A (zh) | 一种硬件lzma压缩实现系统及方法 | |
CN102970043B (zh) | 一种基于gzip的压缩硬件系统及其加速方法 | |
JP6366249B2 (ja) | データ圧縮装置及び方法、データ圧縮装置を含むメモリシステム | |
US7924183B2 (en) | Method and system for reducing required storage during decompression of a compressed file | |
CN105207678B (zh) | 一种改进型lz4压缩算法的硬件实现系统 | |
CN107027036A (zh) | 一种fpga异构加速平台的解压缩方法、装置及系统 | |
CN103458460B (zh) | 对信号数据进行压缩和解压缩的方法和装置 | |
CN103997346B (zh) | 一种基于流水线的数据匹配方法和装置 | |
US9836248B2 (en) | In-memory data compression complementary to host data compression | |
CN108287877B (zh) | 一种rib渲染压缩文件fpga压缩/解压缩系统及硬件解压方法 | |
JP2018520576A (ja) | 意味論的値のデータ圧縮及び解凍のための方法、装置、及びシステム | |
CN103023509A (zh) | 一种硬件lz77压缩实现系统及其实现方法 | |
CN103095305A (zh) | 一种硬件lz77的压缩实现系统及方法 | |
CN110021369B (zh) | 基因测序数据压缩解压方法、系统及计算机可读介质 | |
JP2014132750A (ja) | データ圧縮方法と、該方法を行う装置 | |
CN105183557A (zh) | 一种基于硬件的可配置的数据压缩系统 | |
CN109672449B (zh) | 一种基于fpga快速实现lz77压缩的装置及方法 | |
CN104376584A (zh) | 一种数据压缩的方法、计算机系统和装置 | |
JP6835285B1 (ja) | データ圧縮方法、データ圧縮装置、データ圧縮プログラム、データ伸長方法、データ伸長装置およびデータ伸長プログラム | |
US9455742B2 (en) | Compression ratio for a compression engine | |
CN108933599B (zh) | 一种霍夫曼编码实现方法、系统、设备及计算机存储介质 | |
CN108932315A (zh) | 一种数据解压的方法以及相关装置 | |
Shcherbakov et al. | A parallel adaptive range coding compressor: algorithm, FPGA prototype, evaluation | |
CN116683914A (zh) | 数据压缩方法、装置和系统 | |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141210 |
|
RJ01 | Rejection of invention patent application after publication |