CN105183557A - 一种基于硬件的可配置的数据压缩系统 - Google Patents
一种基于硬件的可配置的数据压缩系统 Download PDFInfo
- Publication number
- CN105183557A CN105183557A CN201510528562.8A CN201510528562A CN105183557A CN 105183557 A CN105183557 A CN 105183557A CN 201510528562 A CN201510528562 A CN 201510528562A CN 105183557 A CN105183557 A CN 105183557A
- Authority
- CN
- China
- Prior art keywords
- module
- data
- dictionary
- hash
- matching
- 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.)
- Granted
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种基于硬件的可配置的数据压缩系统,包括字典维护模块、数据请求模块、数据压缩模块以及数据输出模块,本发明公开的可配置的硬件数据压缩系统,使用可编程逻辑器件(FPGA)来实现数据压缩功能,附加相关与PC机通信的模块来实现该数据压缩系统,通过采用LZ77无损压缩算法,并根据该算法设计合理的硬件电路结构,从而有效地提高数据压缩处理的效率。能根据不同的压缩级别调整LZ77压缩过程中对于压缩率和压缩速率的偏好程度,进一步可将数据压缩的结果进行不同编码以形成不同格式的压缩文件,达到硬件与软件的兼容。
Description
技术领域
本发明涉及数据压缩技术,尤其涉及一种基于硬件的可配置的数据压缩系统。
背景技术
在网络通信技术高速发展的时代,数据无损压缩技术逐渐体现出其独特的重要性,使其广泛应用在云存储、互联网通信中,如压缩文件系统、数据备份、网页前端服务等。数据无损压缩技术能够在不影响数据重构质量的前提下降低数据冗余度、减少信息在存储中占用的资源,客观上提高数据传输效率。
无损数据压缩技术主要分为两类,分别是基于字典的无损数据压缩技术以及基于统计的无损数据压缩技术;基于字典的无损数据压缩的代表为LZ77压缩算法,因为该算法不仅有着适中的压缩率同时与基于统计的无损压缩算法相比有着更快的压缩速率;另外LZ77算法作为基于字典的无损压缩算法的基础,有着不错的灵活性,如经过LZ77压缩算法处理过的数据,再次经过Huffman编码可以实现Gzip压缩,经过区间编码可以得到LZMA压缩,经过特定格式输出可以实现LZO压缩等等,而且这些压缩算法性能的好坏很大程度上收到LZ77压缩效果的影响。
当前,数据压缩一般通过软件算法的实现方式进行数据的压缩处理,但是软件算法进行压缩处理的效率较低,而且会占用大量的CPU资源,那么在处理大量数据时,软件算法的劣势将更加明显。
为了减少信息存储所消耗的资源以及处理压缩时所消耗的CPU资源,提高数据传输效率,使用硬件电路来实现数据的压缩有着极大的优势。一方面硬件电路在工作时有着高度并行性,能够极大的提升压缩速率;另一方面能够大量减少CPU资源的消耗,只需要在传输数据时使用占用CPU资源;加之,通过配置相应的参数来调整压缩率和压缩速率之间的平衡点,同软件实现相比压缩性能有着极大的提升。
综上所述,实现一种基于硬件的可配置的数据压缩系统在提高数据传输效率,减少存储资源、CPU资源消耗上面有着广泛的应用前景。并且该系统今后可以和Huffman编码系统,区间编码系统等级联,作为专用的硬件压缩系统,实现硬件与软件的兼容。
发明内容
本发明要解决的一个技术问题是提供一种基于硬件的可配置的数据压缩系统,能够有效地解决执行无损数据压缩时的效率问题,提高压缩性能。
为了实现上述目的,本发明提供一种基于硬件的可配置的数据压缩系统,包括:
字典维护模块,包括若干个Ram,构成字典以及字典缓冲区;所述字典缓冲区用于存放待压缩文件的数据块;
数据请求模块,向待压缩文件请求新的待压缩文件的数据块并将新的数据块写入字典维护模块的字典缓冲区中;
压缩配置模块,根据不同的压缩级别配置压缩偏好;能够根据不同的压缩偏好选择相应的Hash(哈希)函数,调整压缩率与压缩速率之间的平衡点;
Hash计算模块,从字典维护模块的字典缓冲区中获取待压缩文件的数据块,将待压缩文件的数据块每3个字符的字符串作为当前字符串;根据压缩配置模块配置的压缩偏好计算当前字符串对应的Hash值并产生该Hash值在字典维护模块的字典缓冲区中的地址;并根据该Hash值判断字典维护模块的字典中是否存在与之具有相同Hash值的匹配串并输出相应的匹配结果;
匹配计算模块,接收Hash计算模块输出的匹配结果;若存在匹配字符串,从字典维护模块的字典缓冲区中获取相互匹配的当前字符串与匹配字符串并进行匹配比较;若匹配,则发送匹配信息给数据输出模块;若未匹配,则发送未匹配字符串给数据输出模块;若不存在未匹配字符串,从字典维护模块的字典缓冲区中获取未匹配字符串并发送给数据输出模块;在输出字符串时,可以同时执行匹配计算工作,两项工作可以并行执行。
数据输出模块,接收匹配计算模块的匹配信息以及未匹配字符串数据并输出到指定的缓冲FIFO中。
所述的字典维护模块进一步包括:
Ram状态检测模块,用于检测每个Ram的使用状态;
字典缓冲模块,采用4个16KB的BlockRam构成字典缓冲区,用于存放待压缩文件的数据;当LZ77的字典窗口不再占用使用过的Ram时,向该Ram写入新数据,保证文件连续地输入系统;
读写仲裁模块,规定匹配计算模块在读取数据时match读信号、literal读信号、hash读信号的优先级,并按照读写优先级顺序发送对应的读写信号。
所述字典缓冲模块最多占用3个Ram,最少占用1个Ram。所以能够保证剩余一个Ram在获取新的数据,这样使得文件连续读入字典缓冲区内,有利于压缩率的提升,避免了文件切块这种方法在重新构建字典时压缩率的损失。
所述的数据请求模块进一步包括:
请求信号控制模块,根据每个Ram的使用状态,为已使用过的Ram发送获得新数据的请求信号,并将新数据块写入该Ram中;在当前数据块处理的同时,通过不断为已使用过的Ram请求新的数据块,避免了等待新数据块所带来的时间消耗;
数据块计数模块,用于计算已输入的数据块个数并判断最后一个数据块存放于哪个Ram当中。
所述的压缩配置模块配置的压缩偏好为5种:压缩率最优、压缩率较好、默认、速率较好、速率最优。不同的压缩级别对应不同的参数配置,不同的参数配置又会影响压缩处理时对压缩率和压缩速率的偏好。
所述的Hash计算模块进一步包括:hash读数据模块、地址产生模块、hash模块以及hash链更新模块;
hash读数据模块,从字典维护模块的字典缓冲区中获取新的数据,以每3个字符一组作为当前字符串输出给hash模块计算其hash值;
地址产生模块,产生每组当前字符串输出时对应的字典内的地址;
hash模块,接收hash读数据模块读取的当前字符串并计算每组当前字符串的hash值;
hash链更新模块,以当前字符串的hash值为地址从字典维护模块的字典中的headram中获取数据,若headram中有数据则说明字典中存在匹配串并输出匹配结果。
所述hash模块计算每组字符的Hash值根据不同的压缩偏好选择双hash函数或者单hash函数进行计算,产生两个15位的hash值或者一个15位的hash值。Hash计算模块提供的双hash函数可以极大的消除伪匹配信息。
所述的匹配计算模块进一步包括:
match读数据模块,用于根据Hash计算模块中相互匹配的当前串地址和匹配串地址发送读信号,从字典维护模块的字典缓冲区中获取当前字符串以及匹配字符串;
match接收数据模块,用于接收match读数据模块获取的当前字符串或者匹配字符串数据,并根据起始地址进行微调,使得当前字符串和匹配字符串数据头对齐;
匹配模块,用于计算当前字符串和匹配字符串的匹配长度和匹配距离并发送;匹配信息发送模块,用于存储匹配模块计算出的最大匹配长度和其对应的匹配距离,待所有匹配工作完成后发送匹配信息;
literal读数据模块,用于根据Hash计算模块中产生的未匹配字符串的起始地址和结束地址发送读信号,从字典缓冲区中获取待输出的未匹配字符串;
literal发送模块,用于发送literal读数据模块获取的未匹配的字符串以及所有数据处理完成后的EOB标志位。
本发明提供一种基于硬件的可配置的数据压缩系统与现有技术相比具有如下优点:
1、本发明使用可编程逻辑器件(FPGA)来实现数据压缩功能,附加相关与PC机通信的模块来实现该数据压缩系统,通过采用LZ77无损压缩算法,并根据该算法设计合理的硬件电路结构,从而有效地提高数据压缩处理的效率。
2、本发明通过数据请求模块连续请求数据,保证文件的连续读入,避免了因文件切割导致的压缩率损失。
3、本发明通过压缩配置模块配置提供的不同压缩级别的需求,对匹配长度、匹配距离、回溯次数、单双hash函数等参数进行设置,能够根据不同的压缩偏好选择相应的Hash函数,调整压缩率与压缩速率之间的平衡点,针对不同的需求,选择优化压缩率或优化压缩速率,提高了压缩时的灵活性。并且,本发明的双Hash函数能够极大程度上减少判断匹配串信息时所产生的伪匹配串信息的数量,有效地提升压缩效率。
4、本发明在处理匹配过程中,设计了一种处理匹配串和处理未匹配字符并行执行的处理结构,各个子处理模块独立并行地执行处理任务,尽可能地减少处理匹配过程所消耗的时间。
附图说明
图1示出本发明提供的一种基于硬件的可配置的数据压缩系统的结构示意图;
图2示出本发明提供的一种基于硬件的可配置的数据压缩系统的字典维护模块结构示意图;
图3示出本发明提供的一种基于硬件的可配置的数据压缩系统的数据请求模块结构示意图;
图4示出本发明提供的一种基于硬件的可配置的数据压缩系统的压缩配置模块结构示意图;
图5示出本发明提供的一种基于硬件的可配置的数据压缩系统的Hash计算模块结构示意图;
图6示出本发明提供的单双hash函数计算以及hash链更新的结构示意图;
图7示出本发明提供的一种基于硬件的可配置的数据压缩系统的匹配计算模块结构示意图;
图8示出本发明提供的一种LZ77输出结果的存储方式示意图;
图9示出本发明处理匹配信息和未匹配字符的方法的流程图。
具体实施方式
下面参照附图用本发明的示例性实施例对本发明进行更全面的描述和说明。参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
图1示出本发明提供的一种基于硬件的可配置的数据压缩系统的结构示意图。如图1所示,一种基于硬件的可配置的数据压缩系统包括:字典维护模块、数据请求模块,压缩配置模块、Hash计算模块、匹配计算模块以及数据输出模块共同构成数据压缩模块。
其中,字典维护模块,用于存放待压缩文件的数据块,监视每个BlockRam(块随机存储器)的使用状态,同时根据优先级的不同调整读写信号的输入输出顺序。例如,当字典窗口滑出一个Ram后,将该Ram的状态标记为已使用(used);若同时收到hash读数据信号和match读数据信号,则优先发送match读数据信号,然后发送hash读数据信号。
数据请求模块,用于发送新数据请求信号,并对已请求的数据块个数计数,根据总的数据块个数判断最后一个数据块存放的位置。例如,若一个Ram的状态为used,则发送一次新数据请求信号,待接收到新数据后将其写入该Ram;
压缩配置模块,用于根据不同的压缩级别配置压缩偏好。例如,将匹配长度设置为64、128,匹配距离设置为16k、32k等,不同的压缩级别对应不同的参数配置,不同的参数配置又会影响压缩处理时对压缩率和压缩速率的偏好。
Hash计算模块,用于从字典缓冲区中取出待压缩文件的数据块,将待压缩文件的数据块每3个字符的字符串作为当前字符串;计算当前字符串的hash值,根据其hash值判断字典内是否有相同的字符串出现过,最后输出匹配结果。例如,字符串A的地址为2E,字符串B的地址为1C,二者具有相同的hash值,则说明找到匹配串,然后向一个指定的缓冲FIFO中写入当前串地址以及匹配串地址。
匹配计算模块,接收Hash计算模块输出的匹配结果;从字典缓冲区中取出相互匹配的当前字符串和匹配字符串进行匹配比较或者取出未匹配字符串直接进行发送。例如,进行匹配计算时,根据压缩偏好的设置,连续取出若干当前字符串,然后在连续取出若干匹配字符串进行,边取边比较;若输出字符串时,可以同时执行匹配计算工作,两项工作可以并行执行。
数据输出模块,用于接受匹配计算模块发送过来的匹配串信息和未匹配字符信息,按照发送顺序,依次发送至最后的输出FIFO。例如,如果同时收到匹配串信息和未匹配字符信息,则优先输出未匹配字符信息,因为虽然未匹配字符处理和匹配处理同时进行,但是匹配串在字典缓冲区中的位置要晚于未匹配字符串的位置。
本发明提供了一种基于硬件的可配置的数据压缩系统,设计适合LZ77压缩算法的硬件电路结构,采用4块BlockRam实现字典滑动窗口的功能,保证文件的连续读入,压缩配置模块可以根据用户对压缩级别的需求,调整压缩率与压缩速率之间的平衡点,Hash计算模块提供的双hash函数可以极大的消除伪匹配信息,匹配计算模块提供输出匹配字符串过程与处理匹配过程同时执行的功能,从而有效提高压缩的处理效率。
图2示出本发明提供的字典维护模块的具体实施方式结构示意图。如图2所示,字典维护模块包括:读写仲裁模块、字典缓冲模块以及RAM状态检测模块。
其中,读写仲裁模块,用于接收匹配计算模块在读取字典缓冲模块的数据时的读写信号,按照读写信号的优先级顺序进行发送,对于字典缓冲模块中的同一个Ram的读信号和写信号不会同时出现,所以只对读信号进行优先级的划分,其中读信号的优先级的高低按照mat读信号、lit读信号、hash读信号排序,若产生读信号冲突,则优先发送mat读信号,待没有mat读信号时再发送lit读信号,hash读信号同理;根据读写信号地址的前2位,发送对应Ram的读写信号,若地址前两位为00,则发送第一个Ram的读写信号,若地址前两位为01,则发送第二个Ram的读写信号,以此类推。
字典缓冲模块,用于存放待压缩文件的数据,该模块由4个BlockRam构成,因为在字典窗口滑动的过程中,最多占用3个Ram,最少占用1个Ram,所以能够保证剩余一个Ram在获取新的数据,这样使得文件连续读入字典缓冲区内,有利于压缩率的提升,避免了文件切块这种方法在重新构建字典时压缩率的损失。
Ram状态检测模块,用于判断各个Ram的使用状态,根据当前处理指针在字典中的位置,判断Ram是是否处在使用中;例如字典大小为32K,若当前处理指针指在第4个Ram,那么第2、3、4Ram的状态为使用中(using),第1个Ram的状态为已使用(used),当新数据写入已使用的Ram后,该Ram的状态的变为已满(full)。
图3示出本发明提供的数据请求模块的具体实施方式结构示意图。如图3所示,数据请求模块包括:请求信号控制模块以及数据块计数模块。
其中,请求信号控制模块,用于根据Ram的使用状态向上位机发送新数据请求信号,若有Ram的使用状态为已使用(used),同时已请求的数据块个数没有达到整个文件的数据块个数,那么就向上位机发送新数据请求,并将上位机发送过来的数据块写入对应的Ram中。在当前数据块处理的同时,通过不断为已使用过的Ram请求新的数据块,避免了等待新数据块所带来的时间消耗;
数据块计数模块,用于统计已请求的数据块个数,当已请求的数据块个数用文件总的数据块个数一致时,根据最后一块数据块的写入信号,用一个4位的信号(最终块标志位)标识出最后一块数据块在哪个Ram中。举例来说,1000,表示第一块RAM中含有最后一个数据块,若为0100,则表示第二块RAM中含有最后一个数据块,若为0010,则为第三个RAM,以此类推。
图4示出本发明提供的压缩配置模块的具体实施方式结构示意图。如图4所示,压缩配置模块根据不同的压缩级别进行压缩偏好配置,共5种压缩偏好,分别为压缩率最优、压缩率较好、默认、速率较好、速率最优。最大匹配长度可以设置为64、96、128、160、256;最大匹配距离可以设置为8k、16k、32k;回溯匹配次数可以设置为4、8、10、12、16;其中默认的压缩偏好配置最大匹配长度为128,最大匹配距离16k,回溯匹配次数10,使用双hash函数;若偏好为压缩率则以上参数使用较大数值同时使用单hash函数,若偏好为速率则以上参数使用较小数值同时使用双hash函数。
图5示出本发明提供的Hash计算模块的具体实施方式结构示意图。如图5所示,Hash计算模块包括:hash读数据模块、hash模块、地址产生模块、hash链更新模块。
其中,Hash读数据模块,用于从字典缓冲区中获取新的数据,每次发送3个字节的数据给hash模块用来计算其hash值。
hash模块,用于计算每3个字节数据的hash值,该模块中有两种hash值计算方式,分别为双hash函数模式和单hash函数模式。双hash函数模式使用两个hash函数分别计算每3个字节数据的hash值,得到两个hash值;单hash函数模式使用1个hash函数计算每3个字节数据的hash值。
地址产生模块,用于配合hash模块产生相应的地址,每次hash模块发送出hash值时,该模块会同时发送出一个地址,表示该hash值对应的字符串在字典缓冲区中的位置。
hash链更新模块,用于根据hash值判断字典缓冲区中是否存在匹配串。根据压缩偏好决定使用双hash函数还是单hash函数,若使用双hash函数值从两个hash链头中取出的值要一致才能判断为匹配,若使用单hash函数值,则只要hash链头不为空,则判断为匹配。
图6示出本发明提供的单双hash函数计算以及hash链更新的具体实施方式结构示意图。如图6所示,hash链由链头(HeadRam1st和HeadRam2nd)以及链尾(PrevRam)组成,采用双hash函数判断时,还需另一个链头(HeadRam2nd),判断匹配时分别以Dualhash1st和Dualhash2nd为地址从两个HeadRam中获取数据,其中,Dualhash1st和Dualhash2nd分别为Hash模块中的双Hash函数计算出来的两个Hash值。若两个Ram中的数据一致且不为0则判断为匹配,更新链头(HeadRam1st和HeadRam2nd)时,需要同时对两个链头进行更新,分别以Dualhash1st和Dualhash2nd为地址,以str_addr(该hash值对应的字符串在字典中的位置)为内容更新链头,以str_addr为地址,以原来HeadRam1st的数据为内容更新链尾(PrevRam);输出匹配串信息至MatchFIFO,该FIFO宽度为32位,前16位存储的是当前串的地址(str_addr),后16位存储的是匹配串的地址(HeadRam1st中的内容)。使用单hash函数值时,只需要更新HeadRam1st即可,无需考虑另一个HeadRam。
图7示出本发明提供的匹配计算模块的具体实施方式结构示意图。如图7所示,匹配计算模块包括:match读数据模块、match接收数据模块、匹配模块、匹配信息发送模块、literal读数据模块、Literal发送模块。
其中,match读数据模块,用于根据当前串地址和匹配串地址以及压缩偏好向字典缓冲区中对应的Ram连续发送若干次读信号。若压缩偏好为默认,则最大匹配长度为128,那么根据当前串地址,向对应的Ram连续发送4次读信号,然后等待一个周期再根据匹配串地址连续发送4次读信号。
match接收数据模块,用于根据发送的读信号,从对应Ram处接收传来的当前串数据以及匹配串数据,并将当前串与匹配串开头对齐,发送给匹配模块计算匹配长度。
匹配模块,首先将match接收数据模块发来的当前串数据以32字节一组存入4个寄存器中(最大匹配长度128),然后待匹配串数据发送过来后,每周期接收一组(32字节)并进行匹配长度的计算,匹配完成后将本次匹配信息(匹配长度、匹配距离)发送给下一级模块。
匹配信息发送模块,用于收集匹配长度信息,并将最大匹配长度暂存,待所有匹配串与当前串匹配完成后按照指定格式输出最大匹配长度和对应的匹配距离。
literal读数据模块,用于根据未匹配字符起始地址和结束地址从字典缓冲区中获取未匹配字符串数据,并将新数据发送给下一级模块。
literal发送模块,用于根据未匹配字符起始地址和结束地址将所有的未匹配字符信息按照指定格式发送给下一级模块。每次最多发送3个字符,待整个文件中所有未匹配字符发送发成后,发送结束标志位EOB。
图8示出本发明提供的一种LZ77输出结果的存储方式示意图。如图8所示,LZ77输出结果存储方式包括标志位(FLAG)、匹配长度或单个字符(LEN/LIT)、匹配距离或单个字符(DIS/LIT)。
其中,FLAG,用于说明后面的数据是匹配信息或者字符信息或者EOB标志位。共3位,若为111,则表示后面为3个字节的字符;若为110,则表示后面为2个字节的字符;若为100,则表示后面为1个字节的字符;若为101,则表示后面匹配信息;若为011,则表示EOB标志位。
LEN/LIT,用于存放匹配信息中的匹配长度或者存储1个字节的字符信息,共8位,存放时匹配信息时,匹配长度需要减3,这样8位就可以表示256的最大匹配长度。
DIS/LIT,用于存放匹配信息中的匹配距离或者存储2个字节的字符信息,共16位,存放时匹配信息时,匹配距离需要减1。
不论是输出字符信息还是匹配信息,都按照此格式发送给数据输出模块,由于输出匹配信息和匹配信息是并行执行,所以输出匹配模块会根据优先顺序将这些信息发送至最后的缓冲FIFO中。
图9示出处理匹配信息和未匹配字符的方法的流程图。如图9所示,整个处理流程包括:
步骤1、从MatchFIFO中获取匹配所需的当前串地址和匹配串地址。
步骤2、将当前串地址同已处理地址进行比较,若当前串地址小于已处理地址,说明已经处理过这部分内容,则获取下一个匹配串信息;若当前串地址大于已处理地址,说明当前串地址与已处理地址之间为未匹配字符,那么将这些字符全部输出,同时进行匹配串的匹配工作,这两部分并行执行;若当前串地址等于已处理地址,说明只需要进行匹配串的匹配工作即可。
步骤3、根据当前串地址和匹配串地址,从字典缓冲区读取数据,根据压缩偏好的配置,连续地向字典缓冲区发送若干次读信号,尽可能地减少多次访问字典缓冲区所消耗的周期数。
步骤4、根据读信号的地址,连续地接收来自字典缓冲区的数据,并根据当前串地址和匹配串地址将其数据头对齐,传递给下一级模块。
步骤5、接收数据的同时根据匹配串地址从hash链上获取下一个匹配串地址,并传递给步骤3中的读数据模块,让其从字典缓冲区中获取新的匹配串数据。
步骤6、将发送来的当前串的数据储存至若干个32字节宽的寄存器中,然后接收匹配串数据,每周期接收一组32字节宽的匹配串数据并与当前串数据进行比较,并将匹配结果发送给下一级模块。
步骤7、将每次发送过来的匹配长度进行比较,只存储匹配长度最大的数据及其对应的匹配距离。
步骤8、若收到所有匹配串比较完成标志位,则将匹配长度减3,匹配距离减1。
步骤9、将匹配长度和匹配距离按照指定的格式进行发送。
步骤10、用于根据未匹配字符的起始地址和结束地址从字典缓冲区中获取未匹配字符数据。这部分和匹配串处理过程同时进行。
步骤11、接收新数据,存入宽32字节的寄存器中,并将未匹配的字符按照格式发送。
步骤12、每次发送到寄存器的第29个字节时,若未发送的字符少于3个,则不再请求新数据,否则请求新数据。
步骤13、若同时收到字符信息和匹配信息,优先输出字符信息,待字符信息输出完成后,再输出匹配信息。
处理匹配串时,发送读信号、接收新数据、获取新匹配地址、匹配计算、发送匹配信息等过程全部采用流水线设计,并且采用乒乓结构,独立并行执行,增加系统的并行性。尽可能的节省等待周期,加快系统处理效率。
参考前述本发明示例性的描述,本领域技术人员可以清楚的知晓本发明具有以下优点:
本发明提供一种基于硬件的可配置的数据压缩系统,使用可编程逻辑器件(FPGA)来实现数据压缩功能,附加相关与PC机通信的模块来实现整个数据压缩系统,通过采用LZ77无损压缩算法,并根据该算法设计合理的硬件电路结构,从而有效地提高数据压缩处理的效率。
本发明公开了一种基于硬件的可配置的数据压缩系统,通过配置不同的压缩偏好,可以调整压缩过程中压缩率和压缩速率的平衡点,针对不同的需求,选择优化压缩率或优化压缩速率,提高了压缩时的灵活性。
本发明公开了一种基于硬件的可配置的数据压缩系统,在优化压缩速率的条件下,设计使用一种双hash函数,能够极大程度上减少判断匹配串信息时所产生的伪匹配串信息的数量,有效地提升压缩效率。
本发明公开了一种基于硬件的可配置的数据压缩系统,在处理匹配过程中,设计了一种处理匹配串和处理未匹配字符并行执行的处理结构,各个子处理模块独立并行地执行处理任务,尽可能地减少处理匹配过程所消耗的时间。
本发明公开了一种基于硬件的可配置的数据压缩系统,待压缩文件经过压缩后按照一定格式存储在一个输出FIFO中,该FIFO可以同后续如Huffman编码模块、区间编码模块、LZO格式编码模块等等进行连接,可以方便地形成Gzip压缩文件、LZMA压缩文件、LZO压缩文件等等,使得其接口具有一定的扩展性。
本发明中所述具体实施案例仅为本发明的较佳实施案例而已,并非用来限定本发明的实施范围。即凡依本发明申请专利范围的内容所作的等效变化与修饰,都应作为本发明的技术范畴。
Claims (8)
1.一种基于硬件的可配置的数据压缩系统,其特征在于,包括:
字典维护模块,包括若干个Ram,构成字典以及字典缓冲区;所述字典缓冲区用于存放待压缩文件的数据块;
数据请求模块,向待压缩文件请求新的数据块并写入字典维护模块的字典缓冲区中;
压缩配置模块,根据不同的压缩级别配置压缩偏好;
Hash计算模块,从字典维护模块的字典缓冲区中获取待压缩文件的数据块,将待压缩文件的数据块每3个字符的字符串作为当前字符串;根据压缩配置模块配置的压缩偏好计算当前字符串对应的Hash值并产生该Hash值在字典维护模块的字典缓冲区中的地址;
并根据该Hash值判断字典维护模块的字典中是否存在与之具有相同Hash值的匹配字符串并输出相应的匹配结果;
匹配计算模块,接收Hash计算模块输出的匹配结果;若存在匹配字符串,从字典维护模块的字典缓冲区中获取相互匹配的当前字符串与匹配字符串并进行匹配比较;若匹配,则发送匹配信息给数据输出模块;若未匹配,则发送未匹配字符串给数据输出模块;若不存在未匹配字符串,从字典维护模块的字典缓冲区中获取未匹配字符串并发送给数据输出模块;
数据输出模块,接收匹配计算模块的匹配信息以及未匹配字符串并输出到指定的缓冲FIFO中。
2.根据权利要求1所述的一种基于硬件的可配置的数据压缩系统,其特征在于,所述的字典维护模块进一步包括:
Ram状态检测模块,用于检测每个Ram的使用状态;
字典缓冲模块,采用4个16KB的BlockRam构成字典缓冲区,用于存放待压缩文件的数据;当LZ77的字典窗口不再占用使用过的Ram时,向该Ram写入新数据,保证文件连续地输入系统;
读写仲裁模块,用于规定匹配计算模块在读取数据时match读信号、literal读信号、hash读信号的优先级,并按照读写优先级顺序发送对应的读写信号。
3.根据权利要求2所述的一种基于硬件的可配置的数据压缩系统,其特征在于,所述字典缓冲模块最多占用3个Ram,最少占用1个Ram。
4.根据权利要求1所述的一种基于硬件的可配置的数据压缩系统,其特征在于,所述的数据请求模块进一步包括:请求信号控制模块,根据每个Ram的使用状态,为已使用过的Ram发送获得新数据的请求信号,并将新数据块写入该Ram中;数据块计数模块,用于计算已输入的数据块个数并判断最后一个数据块存放于哪个Ram当中。
5.根据权利要求1所述的一种基于硬件的可配置的数据压缩系统,其特征在于,所述的压缩配置模块配置的压缩偏好为5种:压缩率最优、压缩率较好、默认、速率较好、速率最优。
6.根据权利要求1所述的一种基于硬件的可配置的数据压缩系统,其特征在于,所述的Hash计算模块进一步包括:hash读数据模块、地址产生模块、hash模块以及hash链更新模块;
hash读数据模块,从字典维护模块的字典缓冲区中获取新的数据,以每3个字符一组作为当前字符串输出给hash模块计算其hash值;
地址产生模块,产生每组当前字符串输出时对应的字典内的地址;
hash模块,接收hash读数据模块读取的当前字符串并计算每组当前字符串的hash值;
hash链更新模块,以当前字符串的hash值为地址从字典维护模块的字典中的headram中获取数据,若headram中有数据则说明字典中存在匹配串并输出匹配结果。
7.根据权利要求6所述的一种基于硬件的可配置的数据压缩系统,其特征在于,所述hash模块计算每组字符串的Hash值根据不同的压缩偏好选择双hash函数或者单hash函数进行计算,产生两个15位的hash值或者一个15位的hash值。
8.根据权利要求1所述的一种基于硬件的可配置的数据压缩系统,其特征在于,所述的匹配计算模块进一步包括:
match读数据模块,根据Hash计算模块中相互匹配的当前串地址和匹配串地址发送读信号,从字典维护模块的字典缓冲区中获取当前字符串以及匹配字符串;
match接收数据模块,接收match读数据模块获取的当前字符串或者匹配字符串数据,并根据起始地址进行微调,使得当前字符串和匹配字符串数据头对齐;
匹配模块,计算当前字符串和匹配字符串的匹配长度和匹配距离;
匹配信息发送模块,存储匹配模块计算出的最大匹配长度和其对应的匹配距离,待所有匹配工作完成后发送匹配信息;
literal读数据模块,根据Hash计算模块中产生的未匹配字符串的起始地址和结束地址发送读信号,从字典缓冲区中获取待输出的未匹配字符串;
literal发送模块,发送literal读数据模块获取的未匹配的字符串以及所有数据处理完成后的EOB标志位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510528562.8A CN105183557B (zh) | 2015-08-26 | 2015-08-26 | 一种基于硬件的可配置的数据压缩系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510528562.8A CN105183557B (zh) | 2015-08-26 | 2015-08-26 | 一种基于硬件的可配置的数据压缩系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105183557A true CN105183557A (zh) | 2015-12-23 |
CN105183557B CN105183557B (zh) | 2018-11-20 |
Family
ID=54905652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510528562.8A Active CN105183557B (zh) | 2015-08-26 | 2015-08-26 | 一种基于硬件的可配置的数据压缩系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105183557B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106385260A (zh) * | 2016-09-28 | 2017-02-08 | 中国电子科技集团公司第二十八研究所 | 一种基于低延时的lz无损压缩算法的fpga实现系统 |
CN107133102A (zh) * | 2017-05-04 | 2017-09-05 | 深圳大普微电子科技有限公司 | 一种数据处理系统和方法 |
CN107483055A (zh) * | 2017-08-04 | 2017-12-15 | 北京世纪铭辰科技有限公司 | 一种无损压缩方法及系统 |
CN109547420A (zh) * | 2018-11-07 | 2019-03-29 | 重庆金美通信有限责任公司 | 一种适用于无线链路的路由报文自适应回溯压缩方法 |
CN109802686A (zh) * | 2019-01-30 | 2019-05-24 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN111176583A (zh) * | 2019-12-31 | 2020-05-19 | 北京百度网讯科技有限公司 | 一种数据写入方法、装置和电子设备 |
CN112199343A (zh) * | 2020-12-03 | 2021-01-08 | 南京烽火星空通信发展有限公司 | 一种小数据块场景的数据压缩/解压缩加速方法 |
CN112905324A (zh) * | 2021-02-10 | 2021-06-04 | 山东英信计算机技术有限公司 | 一种基于电路状态的解压缩方法、系统及介质 |
CN116578542A (zh) * | 2023-07-13 | 2023-08-11 | 鹏钛存储技术(南京)有限公司 | 基于可配置逻辑的自适应压缩算法的硬件实现方法及系统 |
CN117093881A (zh) * | 2023-10-19 | 2023-11-21 | 深圳大普微电子股份有限公司 | 一种数据压缩方法、装置及电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030179114A1 (en) * | 2002-03-21 | 2003-09-25 | International Business Machines Corporation | Method and system for improving lossless compression efficiency |
CN103023509A (zh) * | 2012-11-14 | 2013-04-03 | 无锡芯响电子科技有限公司 | 一种硬件lz77压缩实现系统及其实现方法 |
US20140070966A1 (en) * | 2012-09-10 | 2014-03-13 | Canon Kabushiki Kaisha | Methods and systems for compressing and decompressing data |
CN103997346A (zh) * | 2014-05-12 | 2014-08-20 | 东南大学 | 一种基于流水线的数据匹配方法和装置 |
CN104660615A (zh) * | 2015-03-17 | 2015-05-27 | 东南大学 | 一种高效数据压缩加密系统 |
-
2015
- 2015-08-26 CN CN201510528562.8A patent/CN105183557B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030179114A1 (en) * | 2002-03-21 | 2003-09-25 | International Business Machines Corporation | Method and system for improving lossless compression efficiency |
US20140070966A1 (en) * | 2012-09-10 | 2014-03-13 | Canon Kabushiki Kaisha | Methods and systems for compressing and decompressing data |
CN103023509A (zh) * | 2012-11-14 | 2013-04-03 | 无锡芯响电子科技有限公司 | 一种硬件lz77压缩实现系统及其实现方法 |
CN103997346A (zh) * | 2014-05-12 | 2014-08-20 | 东南大学 | 一种基于流水线的数据匹配方法和装置 |
CN104660615A (zh) * | 2015-03-17 | 2015-05-27 | 东南大学 | 一种高效数据压缩加密系统 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106385260B (zh) * | 2016-09-28 | 2019-05-21 | 中电莱斯信息系统有限公司 | 一种基于低延时的lz无损压缩算法的fpga实现系统 |
CN106385260A (zh) * | 2016-09-28 | 2017-02-08 | 中国电子科技集团公司第二十八研究所 | 一种基于低延时的lz无损压缩算法的fpga实现系统 |
CN107133102A (zh) * | 2017-05-04 | 2017-09-05 | 深圳大普微电子科技有限公司 | 一种数据处理系统和方法 |
CN107483055B (zh) * | 2017-08-04 | 2020-06-16 | 北京世纪铭辰科技有限公司 | 一种无损压缩方法及系统 |
CN107483055A (zh) * | 2017-08-04 | 2017-12-15 | 北京世纪铭辰科技有限公司 | 一种无损压缩方法及系统 |
CN109547420A (zh) * | 2018-11-07 | 2019-03-29 | 重庆金美通信有限责任公司 | 一种适用于无线链路的路由报文自适应回溯压缩方法 |
CN109547420B (zh) * | 2018-11-07 | 2021-04-16 | 重庆金美通信有限责任公司 | 一种适用于无线链路的路由报文自适应回溯压缩方法 |
CN109802686B (zh) * | 2019-01-30 | 2022-12-06 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN109802686A (zh) * | 2019-01-30 | 2019-05-24 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN111176583B (zh) * | 2019-12-31 | 2021-03-30 | 北京百度网讯科技有限公司 | 一种数据写入方法、装置和电子设备 |
CN111176583A (zh) * | 2019-12-31 | 2020-05-19 | 北京百度网讯科技有限公司 | 一种数据写入方法、装置和电子设备 |
CN112199343A (zh) * | 2020-12-03 | 2021-01-08 | 南京烽火星空通信发展有限公司 | 一种小数据块场景的数据压缩/解压缩加速方法 |
CN112905324A (zh) * | 2021-02-10 | 2021-06-04 | 山东英信计算机技术有限公司 | 一种基于电路状态的解压缩方法、系统及介质 |
CN116578542A (zh) * | 2023-07-13 | 2023-08-11 | 鹏钛存储技术(南京)有限公司 | 基于可配置逻辑的自适应压缩算法的硬件实现方法及系统 |
CN116578542B (zh) * | 2023-07-13 | 2023-09-29 | 鹏钛存储技术(南京)有限公司 | 基于可配置逻辑的自适应压缩算法的硬件实现方法及系统 |
CN117093881A (zh) * | 2023-10-19 | 2023-11-21 | 深圳大普微电子股份有限公司 | 一种数据压缩方法、装置及电子设备和存储介质 |
CN117093881B (zh) * | 2023-10-19 | 2024-01-12 | 深圳大普微电子股份有限公司 | 一种数据压缩方法、装置及电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105183557B (zh) | 2018-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105183557A (zh) | 一种基于硬件的可配置的数据压缩系统 | |
CN104202054A (zh) | 一种硬件lzma压缩实现系统及方法 | |
CN101807207B (zh) | 一种基于内容差异比较的文档共享方法 | |
CN108287877B (zh) | 一种rib渲染压缩文件fpga压缩/解压缩系统及硬件解压方法 | |
CN105187533A (zh) | 一种数据传输的方法及装置 | |
CN102555550B (zh) | 一种基于多核处理器的高速印花机图像数据旋转处理系统及方法 | |
CN111723059B (zh) | 一种数据压缩方法、装置、终端设备及存储介质 | |
CN110602178B (zh) | 一种基于边缘压缩计算处理温度传感器数据的方法 | |
CN105553937A (zh) | 数据压缩的系统和方法 | |
CN103997514A (zh) | 一种文件并行传输的方法及系统 | |
CN104462456A (zh) | 基于生活数据处理的大数据系统 | |
CN115567589A (zh) | Json数据的压缩传输方法、装置、设备及存储介质 | |
CN111741057A (zh) | 一种用于对多源物联数据的归一采集系统及方法 | |
CN114036183A (zh) | 一种数据etl处理方法、装置、设备及介质 | |
CN114707651A (zh) | 一种规约运算的拓扑选择方法、装置、设备及介质 | |
CN105978574B (zh) | 在输入区块扫描时维持分类符号列的硬件数据压缩器 | |
CN113468196A (zh) | 用于处理数据的方法、装置、系统、服务器和介质 | |
US9197243B2 (en) | Compression ratio for a compression engine | |
CN116193296A (zh) | 一种容器化分布式数据采集处理方法、装置、设备及介质 | |
CN115248735A (zh) | 一种日志数据输出控制方法、装置、设备及存储介质 | |
WO2022188103A1 (zh) | 数据采集方法、装置、计算设备以及存储介质 | |
CN102918525B (zh) | 记录装置、记录系统、及记录装置的控制方法 | |
CN108255553B (zh) | 一种遥测地面站人机交互界面的图形处理方法和装置 | |
CN105007083A (zh) | 一种lz77压缩算法输出结果的存储方法 | |
CN112597225A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |