一种基于硬件的可配置的数据压缩系统的制作方法
【技术领域】
[0001]本发明涉及数据压缩技术,尤其涉及一种基于硬件的可配置的数据压缩系统。
【背景技术】
[0002]在网络通信技术高速发展的时代,数据无损压缩技术逐渐体现出其独特的重要性,使其广泛应用在云存储、互联网通信中,如压缩文件系统、数据备份、网页前端服务等。数据无损压缩技术能够在不影响数据重构质量的前提下降低数据冗余度、减少信息在存储中占用的资源,客观上提高数据传输效率。
[0003]无损数据压缩技术主要分为两类,分别是基于字典的无损数据压缩技术以及基于统计的无损数据压缩技术;基于字典的无损数据压缩的代表为LZ77压缩算法,因为该算法不仅有着适中的压缩率同时与基于统计的无损压缩算法相比有着更快的压缩速率;另外LZ77算法作为基于字典的无损压缩算法的基础,有着不错的灵活性,如经过LZ77压缩算法处理过的数据,再次经过Huffman编码可以实现Gzip压缩,经过区间编码可以得到LZMA压缩,经过特定格式输出可以实现LZO压缩等等,而且这些压缩算法性能的好坏很大程度上收到LZ77压缩效果的影响。
[0004]当前,数据压缩一般通过软件算法的实现方式进行数据的压缩处理,但是软件算法进行压缩处理的效率较低,而且会占用大量的CPU资源,那么在处理大量数据时,软件算法的劣势将更加明显。
[0005]为了减少信息存储所消耗的资源以及处理压缩时所消耗的CPU资源,提高数据传输效率,使用硬件电路来实现数据的压缩有着极大的优势。一方面硬件电路在工作时有着高度并行性,能够极大的提升压缩速率;另一方面能够大量减少CPU资源的消耗,只需要在传输数据时使用占用CPU资源;加之,通过配置相应的参数来调整压缩率和压缩速率之间的平衡点,同软件实现相比压缩性能有着极大的提升。
[0006]综上所述,实现一种基于硬件的可配置的数据压缩系统在提高数据传输效率,减少存储资源、CPU资源消耗上面有着广泛的应用前景。并且该系统今后可以和Huffman编码系统,区间编码系统等级联,作为专用的硬件压缩系统,实现硬件与软件的兼容。
【发明内容】
[0007]本发明要解决的一个技术问题是提供一种基于硬件的可配置的数据压缩系统,能够有效地解决执行无损数据压缩时的效率问题,提高压缩性能。
[0008]为了实现上述目的,本发明提供一种基于硬件的可配置的数据压缩系统,包括:
[0009]字典维护模块,包括若干个Ram,构成字典以及字典缓冲区;所述字典缓冲区用于存放待压缩文件的数据块;
[0010]数据请求模块,向待压缩文件请求新的待压缩文件的数据块并将新的数据块写入字典维护模块的字典缓冲区中;
[0011 ] 压缩配置模块,根据不同的压缩级别配置压缩偏好;能够根据不同的压缩偏好选择相应的Hash(哈希)函数,调整压缩率与压缩速率之间的平衡点;
[0012]Hash计算模块,从字典维护模块的字典缓冲区中获取待压缩文件的数据块,将待压缩文件的数据块每3个字符的字符串作为当前字符串;根据压缩配置模块配置的压缩偏好计算当前字符串对应的Hash值并产生该Hash值在字典维护模块的字典缓冲区中的地址;并根据该Hash值判断字典维护模块的字典中是否存在与之具有相同Hash值的匹配串并输出相应的匹配结果;
[0013]匹配计算模块,接收Hash计算模块输出的匹配结果;若存在匹配字符串,从字典维护模块的字典缓冲区中获取相互匹配的当前字符串与匹配字符串并进行匹配比较;若匹配,则发送匹配信息给数据输出模块;若未匹配,则发送未匹配字符串给数据输出模块;若不存在未匹配字符串,从字典维护模块的字典缓冲区中获取未匹配字符串并发送给数据输出模块;在输出字符串时,可以同时执行匹配计算工作,两项工作可以并行执行。
[0014]数据输出模块,接收匹配计算模块的匹配信息以及未匹配字符串数据并输出到指定的缓冲FIFO中。
[0015]所述的字典维护模块进一步包括:
[0016]Ram状态检测模块,用于检测每个Ram的使用状态;
[0017]字典缓冲模块,采用4个16KB的Block Ram构成字典缓冲区,用于存放待压缩文件的数据;当LZ77的字典窗口不再占用使用过的Ram时,向该Ram写入新数据,保证文件连续地输入系统;
[0018]读写仲裁模块,规定匹配计算模块在读取数据时match读信号、literal读信号、hash读信号的优先级,并按照读写优先级顺序发送对应的读写信号。
[0019]所述字典缓冲模块最多占用3个Ram,最少占用I个Ram。所以能够保证剩余一个Ram在获取新的数据,这样使得文件连续读入字典缓冲区内,有利于压缩率的提升,避免了文件切块这种方法在重新构建字典时压缩率的损失。
[0020]所述的数据请求模块进一步包括:
[0021]请求信号控制模块,根据每个Ram的使用状态,为已使用过的Ram发送获得新数据的请求信号,并将新数据块写入该Ram中;在当前数据块处理的同时,通过不断为已使用过的Ram请求新的数据块,避免了等待新数据块所带来的时间消耗;
[0022]数据块计数模块,用于计算已输入的数据块个数并判断最后一个数据块存放于哪个Ram当中。
[0023]所述的压缩配置模块配置的压缩偏好为5种:压缩率最优、压缩率较好、默认、速率较好、速率最优。不同的压缩级别对应不同的参数配置,不同的参数配置又会影响压缩处理时对压缩率和压缩速率的偏好。
[0024]所述的Hash计算模块进一步包括:hash读数据模块、地址产生模块、hash模块以及hash链更新模块;
[0025]hash读数据模块,从字典维护模块的字典缓冲区中获取新的数据,以每3个字符一组作为当前字符串输出给hash模块计算其hash值;
[0026]地址产生模块,产生每组当前字符串输出时对应的字典内的地址;
[0027]hash模块,接收hash读数据模块读取的当前字符串并计算每组当前字符串的hash 值;
[0028]hash链更新模块,以当前字符串的hash值为地址从字典维护模块的字典中的head ram中获取数据,若head ram中有数据则说明字典中存在匹配串并输出匹配结果。
[0029]所述hash模块计算每组字符的Hash值根据不同的压缩偏好选择双hash函数或者单hash函数进行计算,产生两个15位的hash值或者一个15位的hash值。Hash计算模块提供的双hash函数可以极大的消除伪匹配信息。
[0030]所述的匹配计算模块进一步包括:
[0031]match读数据模块,用于根据Hash计算模块中相互匹配的当前串地址和匹配串地址发送读信号,从字典维护模块的字典缓冲区中获取当前字符串以及匹配字符串;
[0032]match接收数据模块,用于接收match读数据模块获取的当前字符串或者匹配字符串数据,并根据起始地址进行微调,使得当前字符串和匹配字符串数据头对齐;
[0033]匹配模块,用于计算当前字符串和匹配字符串的匹配长度和匹配距离并发送;匹配信息发送模块,用于存储匹配模块计算出的最大匹配长度和其对应的匹配距离,待所有匹配工作完成后发送匹配信息;
[0034]literal读数据模块,用于根据Hash计算模块中产生的未匹配字符串的起始地址和结束地址发送读信号,从字典缓冲区中获取待输出的未匹配字符串;
[0035]literal发送模块,用于发送literal读数据模块获取的未匹配的字符串以及所有数据处理完成后的EOB标志位。
[0036]本发明提供一种基于硬件的可配置的数据压缩系统与现有技术相比具有如下优占.V.
[0037]1、本发明使用可编程逻辑器件(FPGA)来实现数据压缩功能,附加相关与PC机通信的模块来实现该数据压缩系统,通过采用LZ77无损压缩算法,并根据该算法设计合理的硬件电路结构,从而有