在存在重现的霍夫曼树的情况下加速解压缩的方法和系统的制作方法

文档序号:8264966阅读:367来源:国知局
在存在重现的霍夫曼树的情况下加速解压缩的方法和系统的制作方法
【技术领域】
[0001] 本发明涉及计算机,更具体地,涉及在计算存储环境中,在存在重现的霍夫曼树的 情况下,加速解压缩。
【背景技术】
[0002] 在当今社会,计算机系统很常见。可在工作场所、家里或者学校见到计算机系统。 计算机系统可包括数据存储系统或磁盘存储系统,以处理和存储数据。近年来,软件技术和 硬件技术都已经历令人惊异的发展。借助新技术,增加了越来越多的功能,并为这些电子设 备的使用提供更大的便利。最新的计算机技术引入的最值得注意的变化之一是图像、视频 和音频的包含,以增强计算系统的能力。在多媒体时代,待处理的信息量大大增加。处理大 数据文件的一种普遍方法是压缩数据,以便存储或传输。于是,处理非常大量的信息是要解 决的关键问题。于是,需要提高数据压缩的效率。

【发明内容】

[0003] 在一个实施例中,提供一种在计算环境中,在存在重现(reoccurring)的霍夫曼 树的情况下,加速解压缩的方法。在一个实施例中,只是作为例子,比较霍夫曼树的紧束描 述和最近使用的霍夫曼树紧束(compaction),以便识别匹配,而不是根据每个数据块的压 缩块的头部重构霍夫曼树,从而避免霍夫曼树重构的开销。
[0004] 在另一个实施例中,提供一种在计算环境中,利用至少一个处理器设备,在存在重 现的霍夫曼树的情况下,加速解压缩的计算机系统。计算机系统包括计算机可读介质和与 计算机可读介质操作通信的处理器。在一个实施例中,只是作为例子,处理器设备中的至少 一个处理器设备比较霍夫曼树的紧束描述和最近使用的霍夫曼树紧束,以便识别匹配,而 不是根据每个数据块的压缩块的头部重构霍夫曼树,从而避免霍夫曼树重构的开销。
[0005] 在另一个实施例中,提供一种在计算环境中,利用至少一个处理器设备,在存在重 现的霍夫曼树的情况下,加速解压缩的计算机程序产品。计算机可读存储介质具有保存在 上面的计算机可读程序代码部分。计算机可读程序代码部分包括比较霍夫曼树的紧束描述 和最近使用的霍夫曼树紧束,以便识别匹配,而不是根据每个数据块的压缩块的头部重构 霍夫曼树,从而避免霍夫曼树重构的开销的可执行部分。
[0006] 除了上述例证方法实施例之外,提供其它的例证系统和计算机产品实施例,所述 其它的例证系统和计算机产品实施例提供相关的优点。提供以上的
【发明内容】
,从而简化地 介绍下面在【具体实施方式】中进一步说明的原理的选择。
【发明内容】
部分并不打算识别要求保 护的主题的关键特征或基本特征,也不意图帮助确定要求保护的主题的范围。要求保护的 主题并不局限于解决在【背景技术】中提及的任意或所有缺陷的实现。
【附图说明】
[0007] 为了易于理解本发明的优点,将参考在附图中图解说明的具体实施例,更详细地 说明上面简述的发明。显然,这些附图描述本发明的实施例,于是不应视为对本发明范围的 限制,通过利用附图,更特定和详细地说明和解释本发明,附图中:
[0008] 图1图解说明具有其中可实现本发明的各个方面的例证存储设备的计算机存储 环境;
[0009] 图2A图解说明表示其中可实现本发明的各个方面的计算机系统中的数据压缩系 统的硬件结构的例证方框图;
[0010] 图2B图解说明表示其中可实现本发明的各个方面的计算机系统中的数据存储系 统的硬件结构的例证方框图;
[0011] 图3是图解说明其中可实现本发明的各个方面的,在存在重现的霍夫曼树的情况 下,加速Inflate速度的例证方法的流程图;
[0012] 图4是图解说明其中可实现本发明的各个方面的,在存在重现的霍夫曼树的情况 下,加速Inflate速度的另一种例证方法的流程图;
[0013] 图5是图解说明其中可实现本发明的各个方面的,在存在重现的霍夫曼树的情况 下,加速Inflate速度的另一种例证方法的流程图。
【具体实施方式】
[0014] 随着对更快、更强大和更高效的信息存储方式的需求日益增大,存储技术的优化 正在变成关键挑战。逻辑数据对象(数据文件、图像文件、数据块等)可被压缩,以便传输 和/或存储。数据压缩技术可用于减少待保存和/或传送的数据量,以便分别降低存储容 量和/或传输时间。在一个实施例中,霍夫曼树可被反复使用,这降低计算效率,产生利用 一组有限/重新出现的霍夫曼树压缩的数据的缓慢解压缩。从而,需要在计算环境中,在存 在重现的霍夫曼树的情况下,加速解压缩。换句话说,本发明提供利用多组有限和/或重新 出现的霍夫曼树压缩的数据的解压缩的显著改善。
[0015]在一个实施例中,使用Deflate,Deflate是在具有由各种浏览器和加速器支持 的压缩/解压缩标准的RFC1951中定义的无损数据压缩算法。Deflate利用消除重复的 Lempel-Ziv算法(LZ77)和霍夫曼编码的组合。在一个实施例中,提供利用软件和硬件的 Deflate标准的各种实现(例如,Zlib压缩器)。Deflate标准由顺序采用两种不同的压缩 算法组成:首先采用重复查找Lempel-Ziv算法(LZ77)类压缩,之后采用霍夫曼编码压缩。 霍夫曼编码是基于"霍夫曼树"的熵编码。为了对数据进行霍夫曼编码和解码,系统必须预 先知道正在使用霍夫曼树。为了适应解压缩(例如,"Inflate"操作),所述霍夫曼树被编 写在每个压缩块的头部。在一个实施例中,在Deflate标准中,对于霍夫曼树,存在两种选 项。一个选项是"静态"树,它是为所有压缩器和解压缩器所知的单一硬编码霍夫曼树。利 用静态树的优点在于其描述不必被写入压缩块的头部,并且为即时解压缩作好准备。另一 方面,"动态"树专用于在手头的数据块,于是,动态树的准确描述必须被写入输出中。
[0016]在一个实施例中,霍夫曼编码可利用基于熵的变长码表对源符号编码,并且如前 所述,被定义成静态的或动态的。在静态霍夫曼编码中,利用在RFC中定义的固定表(SHT), 编码各个文字(literal)或距离。不过,在动态霍夫曼编码中,构成特殊编码表,以更好地 适应被压缩数据的统计信息。在多数情况下,与SHT相比,利用DHT获得更好的压缩比(例 如,质量),代价是降低压缩率(例如,性能)和增大设计复杂性。静态和动态霍夫曼编码 方法最好地反映压缩率和压缩比之间的内在折衷。静态霍夫曼方法实现比可能的压缩比低 的压缩比。这归因于不管输入数据块的内容地利用固定编码表。例如,随机数据和四字母 DNA序列常常利用相同的霍夫曼表编码。
[0017] 与利用静态霍夫曼编码相比,利用动态霍夫曼编码可提高压缩比,但是一般费时, 并且需要复杂的硬件。在维持有效率的性能的同时提高压缩比的一种解决方案是分析到来 数据流的第一部分,并投机性地选择将对整个数据使用的预定的预置字典(而不是通用静 态字典)。找出具有相似性质的文件(例如,两个英文文本文件)的统计信息之间的高相 关度。这种相关度被用于构成预定的DHT预置。匹配的预置产生两全其美的结果:接近于 DHT的压缩比和接近于SHT的压缩率。这种方法提供一种具有使用的一组有限的重新出现 的霍夫曼树的设置。
[0018] 应注意,每个数据块具有头部,所述头部(除了其它以外)还指示该数据块是利 用动态树还是利用静态树进行霍夫曼编码。如果树是动态树,那么所述头部还包括将用于 关于对应块的Inflate的霍夫曼树的紧束描述。Deflate标准紧束地编写霍夫曼树(以优 化总的输出大小)。在Inflate(例如,解压缩)期间,首先读取紧束的树描述,随后张开紧 束的树,并准备适当的数据结构,以便利用霍夫曼树,只有这样才能够开始实际的解压缩处 理。这种树建立和准备过程费时,于是,与利用静态树压缩的数据相比,利用动态树压缩的 数据往往具有明显更低的解压缩速度。当写块较小时,解压缩时间的这种差异变得更加明 显,因为对于每个写块,都编写动态树。在Inflate期间,树准备的开销较高,因为每棵树编 码较少的用户数据。尽管如此,动态霍夫曼树仍然有益,因为动态霍夫曼树提供的压缩比一 般远远好于静态树的压缩比。注意,随着主数据系统上的实时压缩的引入,对较小的写块利 用Deflate变得更重要。在一些Deflate实现中,较小的一组霍夫曼树可被反复重用。当被 压缩数据性质相同时,这是有益的-在压缩期间,不必在许多树建立方面进行投入,然而同 质数据在数据的大部分内仍能受益于单一的霍夫曼树(就压缩比来说)。例如,通过把单一 的专用霍夫曼树用于英文,英文文本通常获得良好的压缩比(对任何其它语言来说同样如 此)。为了与标准兼容,仍然必须在每个压缩块的头部编写这种专用树。不过,反复重用霍 夫曼树会降低计算效率,产生利用一组有限/重现的霍夫曼树压缩的数据的缓慢Inflate 速度。
[0019] 从而,需要在计算环境中,在存在重现的霍夫曼树的情况下,加速Inflate速度。 换句话说,本发明提供利用多组有限/重现的霍夫曼树压缩的数据的Inflate速度的显著 改善。在一个实施例中,只是作为例子,比较编码的霍夫曼树和最近使用的霍夫曼树紧束, 以识别匹配,而不是根据各个数据块的压缩块的头部重构霍夫曼树,以避免霍夫曼树重构 的开销。
[0020] 在一个实施例中,只是作为例子,本发明首先比较编码树(例如,编码的霍夫曼 树)和最近使用的树紧束,而不是根据各个块的压缩块的头部重构霍夫曼树。当发现匹配 时,本发明避免树重构
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1