[发明专利]并行解压缩的硬件实现的系统及方法有效
申请号: | 201010167216.9 | 申请日: | 2010-05-10 |
公开(公告)号: | CN102244518A | 公开(公告)日: | 2011-11-16 |
发明(设计)人: | 欧阳剑;田甲子;李浩华 | 申请(专利权)人: | 百度在线网络技术(北京)有限公司 |
主分类号: | H03M7/40 | 分类号: | H03M7/40 |
代理公司: | 中国国际贸易促进委员会专利商标事务所 11038 | 代理人: | 刘震 |
地址: | 100080 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 并行 解压缩 硬件 实现 系统 方法 | ||
技术领域
本发明涉及数据解压缩技术,尤其涉及一种并行解压缩的硬件实现的系统及方法。
背景技术
在互联网的大规模数据处理中,对数据进行压缩和解压缩是非常重要的手段之一,其可以大幅度提高磁盘的有效容量,提高读写操作时输入输出(I/O)的有效带宽,从而有效降低互联网数据中心(IDC,Internet Data Center)的成本,提高应用层程序的执行速度。
当前,数据的压缩和解压缩一般采用Gzip算法,并通过软件算法的方式进行数据处理,Gzip算法里面有大量串行的位操作,使用软件算法进行处理的效率较低。
而且Gzip解压缩的算法均采用软件的方式来实现,具体来说,Gzip解压缩算法是一种多级查表的算法,采用多级查表的方式完成哈夫曼(Huffman)解码,也就是说解出一个码可能需要查表多次,该方法的优点是内存的使用量较少,对应大部分查找只需要一次查表即可以完成,效率较高,所以在软件里面使用广泛,但该算法并行度较低,在大规模的数据处理中会占用大量的CPU资源,不适合硬件实现。
以主频2.66GHz的CPU为例,其进行压缩的带宽是50Mb/s,解压缩的带宽是200Mb/s。在大规模数据处理中,待压缩解压缩的数据流巨大;因此,使用CPU进行压缩解压缩处理时必然要占用大量的CPU资源,在进行数据解压缩时CPU资源占用的问题则更为明显。
因此,如何大幅度提高解压缩的处理效率成为现有Gzip解压缩技术亟待解决的技术问题,尤其是能否针对现有Gzip解压缩算法提供相应的解决方案。
发明内容
本发明要解决的一个技术问题是提供一种并行解压缩的硬件实现的系统及方法,能够有效提高现有Gzip解压缩算法的解压缩处理效率。
本发明的一个方面提供了一种并行解压缩的硬件实现的系统,该系统包括:不定长的位操作模块,用于对待解压缩数据进行不定长的位操作,获取不定长的数据;哈夫曼码表恢复模块,用于根据不定长的数据,恢复哈夫曼码表;哈夫曼译码模块,用于根据哈夫曼码表,并行执行哈夫曼译码;以及解码模块,用于根据哈夫曼译码的结果,进行解码。
本发明提供的并行解压缩的硬件实现的系统的一个实施例中,不定长的位操作模块进一步包括:数据合并子模块,用于将输入端读取的待解压缩数据和数据缓存子模块中被移位操作后的数据进行合并,生成新的待解压缩数据;多路选择器,用于根据输入的缓存数据进行选择;如果缓存数据小于预定的位数,那么就把数据合并子模块合并后的数据选通并写入到数据缓存子模块中;否则,用移位后的数据来更新数据缓存子模块中的数据;数据缓存子模块,用于缓存数据合并子模块输入的新的待解压缩数据,以及向移位子模块输出不定长的待解压缩数据;移位子模块,用于对数据缓存子模决中的数据进行右移位操作,以丢弃上一周期使用的数据,并把移位操作后新生成的数据输出给数据合并子模块。
本发明提供的并行解压缩的硬件实现的系统的一个实施例中,哈夫曼码表恢复模块进一步包括:码长计算子模块,用于根据不定长的数据,计算各个编码数据对应的码长;码长存储子模块,用于存储码长计算子模块计算出的码长;哈夫曼码表恢复子模块,用于根据计算的结果,统计每个码长的个数,统计每个码长对应的symbol,以及对symbol排序后,根据每个码长恢复哈夫曼码表。
本发明提供的并行解压缩的硬件实现的系统的一个实施例中,哈夫曼译码模块进一步包括:位置换子模块,用于对输入数据进行位倒置,以复原输入数据;比较子模块,用于从复原后的数据中取出最大编码长度的数据,并与扩展初始码做并行比较;前导1检测子模块,用于根据比较子模块的比较结果,确定起始位是“1”的位置,从而确定当前数据的实际码长;码表初始地址子模块,用于根据前导1检测子模块确定的实际码长作为地址查询得到实际码长对应的哈夫曼码表的初始地址;数据裁剪子模块,用于根据位置换子模块输出数据和数据的码长对输出数据进行裁剪,保留码长位宽的低位数据,得到哈夫曼待译码数据。
本发明提供的并行解压缩的硬件实现的系统的一个实施例中,解码模块选用Lz77解码模块,用于根据哈夫曼译码的结果进行Lz77解码操作。
本发明提供的并行解压缩的硬件实现的系统的一个实施例中,Lz77解码模块进一步包括:解码控制子模块,用于根据哈夫曼译码模块获得的哈夫曼译码的数据结果生成读取或写入历史数据存储子模块的地址,完成数据匹配;历史数据存储子模块,用于根据解码控制子模块提供的地址存储所匹配的数据;校验子模块,用于对解码控制子模块获得的匹配数据进行CRC32校验,以判断解压缩的正确性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百度在线网络技术(北京)有限公司,未经百度在线网络技术(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010167216.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:客户端设定来电视铃以及分享视频的方法
- 下一篇:使用五个最近邻的故障像素替换