本发明专利技术公布了一种基于GZIP的压缩硬件系统及其加速方法,包括输入缓存单元,用于对输入数据进行缓存;LZ77编码单元;动态新字符/匹配长度Huffman编码频率统计控制单元;动态指回距离Huffman编码频率统计控制单元;动态新字符/匹配长度Huffman编码单元;动态指回距离Huffman编码单元;动态码字长度Huffman编码单元;静态新字符/匹配长度Huffman编码单元;静态指回距离Huffman编码单元;数据打包单元;输出缓存单元。本压缩硬件系统可实现GZIP压缩算法、做到与软件实现相兼容、提升GZIP压缩的数据吞吐率,使得数据压缩过程中无需CPU的干预。
【技术实现步骤摘要】
本专利技术涉及一种基于GZIP压缩硬件系统实现与加速方法;属于数据压缩
技术介绍
随着云计算技术的发展,海量数据存储和传输越来越严峻。因此,数据无损压缩技术得到广泛的应用以减少数据存储空间、提升数据传输效率。GZIPjPGNU ZIP压缩算法是非常著名的无损压缩算法,无专利保护,复杂度适中,适合硬件平台实现。 在传统的数据压缩领域中,基于软件平台的实现的方案得以广泛的运用,然而基于软件平台的实现方法中,占用太多CPU,即Central Processing Unit以及内存资源。在本专利技术中,给出了一种全新的GZIP硬件实现结构并提出了多种加速方案来提升整个系统性能,可以显著的减少CPU以及内存资源的消耗。高性能系统总线PCIE2. 0作为压缩卡与计算机之间进行通信桥梁,DMA,即Direct Memory Access通过PCIE2. 0接口把计算机内存中的数据传输给GZIP压缩内核,在内核压缩完毕之后,DMA再将压缩过的数据传递到就算计的内存中,在数据传递和压缩过程中无需CPU干预。
技术实现思路
本专利技术目的是针对现有技术存在的缺陷提供一种可实现GZIP压缩算法、做到软件压缩相兼容、提升GZIP压缩的数据吞吐率,使得数据压缩过程中无需CPU的干预的GZIP压缩硬件系统实现与加速方法。本专利技术为实现上述目的,采用如下技术方案一种基于GZIP的压缩硬件系统,该系统包括 一个输入缓存单元,用于对输入数据进行缓存; 一个LZ77编码单元,用于对输入数据进行LZ77编码; 一个动态新字符/匹配长度Huffman编码频率统计控制单元,用于对LZ77编码单元输出的新字符以及匹配长度进行统计; 一个动态指回距离Huffman编码频率统计控制单元,用于对LZ77编码单元输出的指回距离进行统计; 一个动态新字符/匹配长度Huffman编码单元,用于对LZ77编码单元输出的新字符以及匹配长度进行动态Huffman编码; 一个动态指回距离Huffman编码单元,用于对LZ77编码单元输出的指回距离进行动态Huffman 编码; 一个动态码字长度Huffman编码单元,用于对动态新字符/匹配长度Huffman树的信息及对动态指回距离Huffman树的信息进行编码;一个静态新字符/匹配长度Huffman编码单元,用于对LZ77编码单元输出之后的新字符/匹配长度进行静态Huffman编码; 一个静态指回距离Huffman编码单元,用于对LZ77编码单元输出之后的指回距离进行静态Huffman编码; 一个数据打包单元,用于判断采用直接存储、静态Huffman编码以及动态Huf fman编码三种模式中的一种,并按照固定的格式进行编码输出; 一个输出缓存单元,用于缓存数据打包单元输出的压缩之后的数据。优选的,所述输入缓存单元包括 两个数据块缓存单元,用于存放待压缩的原始数据; 两个数据选择单元,用于控制数据块缓存单元的读写控制权。优选的,所述LZ77编码单元包括 两对Head/Prev Hash表,用于对LZ77编码单元中编码字符串的快速匹配查找; 一个只读存储单元R0M,用于存放循环冗余校验码CRC32校验计算时的常数表; 一个新字符/匹配长度缓存单元,用于存放LZ77编码单元输出之后的新字符或者是匹配长度; 一个指回距离缓存单元,用于存放LZ77编码单元输出之后的指回距离; 一个主控状态机单元,用于对数据块缓存单元中的数据进行数据读取。优选的,所述动态新字符/匹配长度Huffman编码单元包括 一个新字符/匹配长度频率缓存单元,用于存放LZ77编码单元输出之后新字符以及匹 配长度的频率; 一个新字符/匹配长度父亲节点缓存单元,用于存放新字符以及匹配长度Huffman树中每一个节点的父亲节点,其中根节点除外; 一个新字符/匹配长度深度缓存单元,用于存放新字符以及匹配长度Huffman树中每一个节点在新字符以及匹配长度Huffman树中的深度; 一个新字符/匹配长度最小堆缓存单元,用于连续存放新字符以及匹配长度Huffman树中所有的节点; 一个新字符/匹配长度码字值缓存单元,用于存放新字符/匹配长度Huffman树中所有的叶子节点对应的Huffman编码的值; 一个新字符/匹配长度码字长度缓存单元,用于存放新字符以及匹配长度Huffman树中所有节点对应的一个Huffman编码的有效长度; 3个数据选择单元,分别用于控制新字符/匹配长度频率缓存单元、新字符/匹配长度码字值缓存单元、新字符/匹配长度码字长度缓存单元的控制权; 一个流水线乘法器单元,用于辅助计算数据块经过动态新字符以及匹配长度Huffman编码之后的大小; 一个主控状态机单元,用来根据新字符/匹配长度频率缓存单元中存放的待压缩数据块中每一个字符的频率信息,利用新字符/匹配长度父亲节点缓存单元、新字符/匹配长度深度缓存单元、新字符/匹配长度最小堆缓存单元去构造Huffman树,并将Huffman树的信息存放在新字符/匹配长度最小堆缓存单元中,在得到新字符/匹配长度Huffman树的信息之后,主控状态机单元遍历Huffman树得出Huffman树中每一个节点的码字长度,并对该节点加以判断;如果是叶子节点,则所述主控状态机单元继续从新字符/匹配长度缓存单元中读取该节点的频率,并利用流水线乘法器单元去计算出当前的这个字符经过Huffman编码之后的大小,再根据得出的Huffman树中每一个节点的码字长度去计算出Huffman树中每一个节点的码字值,主控状态机单元对这些节点加以判断,如果是叶子节点就将叶子节点的码字值存放进新字符/匹配长度码字值缓存单元中。优选的,所述动态指回距离Huffman编码单元包括 一个指回距离频率缓存单元,用于存放LZ77编码单元输出之后指回距离的频率; 一个指回距离父亲节点缓存单元,用于存放指回距离Huffman树中每一个节点的父亲节点,其中根节点除外; 一个指回距离深度缓存单元,用于存放指回距离Huffman树中每一个节点在指回距离Huffman树中的深度; 一个指回距离最小堆缓存单元,用于连续存放指回距离Huffman树中所有的节点; 一个指回距离码字值缓存单元,用于存放指回距离Huffman树中所有的叶子节点对应的Huffman编码的值; 一个指回距离码字长度缓存单元,用于存放指回距离Huffman树中所有节点对应的Huffman编码的有效长度; 3个数据选择单元,分别用于控制指回距离频率缓存单元、指回距离码字值缓存单元、指回距离码字长度缓存单元的控制权; 一个流水线乘法器单元,用于辅助计算数据块经过动态指回距离Huffman编码之后的大小; 一个主控状态机单元,用来根据指回距离频率缓存单元中存放的待压缩数据块中每一个字符的频率信息,并利用指回距离父亲节点缓存单元、指回距离深度缓存单元、指回距离最小堆缓存单元去构造Huffman树,并将Huffman树的信息存放在最小堆缓存单元中,在得到指回距离Huffman树的信息之后,主控状态机单元遍历Huffman树得出Huffman树中每一个节点的码字长度,并对该节点加以判断,如果是叶子节点,主控状态机单元将从新字符/本文档来自技高网...
【技术保护点】
一种基于GZIP的压缩硬件系统,其特征在于,该系统包括:一个输入缓存单元,用于对输入数据进行缓存;一个LZ77编码单元,用于对输入数据进行LZ77编码;一个动态新字符/匹配长度Huffman编码频率统计控制单元,用于对LZ77编码单元输出的新字符以及匹配长度进行统计;一个动态指回距离Huffman编码频率统计控制单元,用于对LZ77编码单元输出的指回距离进行统计;一个动态新字符/匹配长度Huffman编码单元,用于对LZ77编码单元输出的新字符以及匹配长度进行动态Huffman编码;一个动态指回距离Huffman编码单元,用于对LZ77编码单元输出的指回距离进行动态Huffman编码;一个动态码字长度Huffman编码单元,用于对动态新字符/匹配长度Huffman树的信息及对动态指回距离Huffman树的信息进行编码;一个静态新字符/匹配长度Huffman编码单元,用于对LZ77编码单元输出之后的新字符/匹配长度进行静态Huffman编码;一个静态指回距离Huffman编码单元,用于对LZ77编码单元输出之后的指回距离进行静态Huffman编码;一个数据打包单元,用于判断采用直接存储、静态Huffman编码以及动态Huffman编码三种模式中的一种,并按照固定的格式进行编码输出;一个输出缓存单元,用于缓存数据打包单元输出的压缩之后的数据。...
【技术特征摘要】
【专利技术属性】
技术研发人员:汤晓东,狄永清,李冰,李玮,
申请(专利权)人:无锡芯响电子科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。