LZ系列压缩算法编解码速度优化方法技术

技术编号:32818374 阅读:21 留言:0更新日期:2022-03-26 20:15
本发明专利技术涉及一种LZ系列压缩算法编解码速度优化方法,数据编码时,一次性匹配长度为计算机字长的数据切片,减少匹配重复数据段所需的CPU周期数;累积未匹配数据并批量复制到编码输出缓存区,减少数据复制时所需的CPU周期数和额外开销;数据解码时,根据历史数据重复复制得到当前数据,若待复制数据长度小于当前位置跟历史数据位置之间的距离,直接批量复制;若大于,则采用循环批量复制的方式,历史数据位置保持不变,当前位置随着每次循环而更新,每次循环批量复制的数据长度均不大于当前位置跟历史数据位置之间的距离,减少数据复制时所需的CPU周期数和额外开销。本发明专利技术有效减少LZ系列压缩算法编解码时间,不降低算法的压缩率。缩率。缩率。

【技术实现步骤摘要】
LZ系列压缩算法编解码速度优化方法


[0001]本专利申请属于编解码
,更具体地说,是涉及一种LZ系列压缩算法编解码速度优化方法。

技术介绍

[0002]云计算时代离不开对海量数据的处理和传输,海量数据的传输往往需要占用超大的网络带宽,且一旦数据传输上出现问题,将严重影响云计算中心的整体性能。为提高海量数据的传输性能,往往需要在数据传输前进行数据压缩,通过有损/无损压缩算法来减少待传输的数据总量。一般来说,数字、文本、合成图像以及医疗图像等数据往往采用无损压缩,而自然图像、音频以及视频等数据则往往采用有损压缩。
[0003]作为最常用的无损压缩算法,LZ算法通过用历史数据的相关信息来表示当前数据的方式实现数据压缩。具体而言,LZ算法在每处理一个当前输入数据时,均会借助于字典信息找到之前处理过的、与当前输入数据的头部相匹配的数据段,并计算历史数据段与当前数据段之间数据匹配的长度,当匹配长度大于阈值时,采用(与当前匹配位置的距离,匹配长度)的二元组来替代当前输入数据,从而达到对输入数据压缩编码的效果。
[0004]根据实际编解码过程和字典实现方式的不同,LZ编码可以分为LZ77、LZ78等多个分支,并形成了LZO、LZMA以及LZ4等众多无损压缩软件。这些软件均基于LZ编码的基本思想,在各自实现上有所不同:如LZMA关注于压缩率的提高,具有最高的压缩比,但编解码时间最长;LZ4充分利用了cache缓存,采用16k大小、能完全载入L1 cache的哈希表来储存字典并简化检索,具有最快的编解码速度,但是这种速度的提升是以牺牲部分压缩率为代价的;LZO则致力于实现压缩速度和压缩率之间的平衡,在确保压缩率的同时尽可能实现快速压缩解压。
[0005]在实际应用中,部分应用对于提升数据压缩时的编解码速度有着迫切的需求。例如:在Linux操作系统启动过程中,会加载临时根文件系统Initrd镜像并解压为Initrd文件,Initrd镜像的解压速度对于Linux操作系统启动速度有着重要影响;在虚拟化领域的spice云桌面协议中,spice需要实时将虚拟机中的桌面发送给客户端进行显示,在发送桌面时,需要将桌面图像数据通过LZ算法进行数据压缩以便减少带宽压力,压缩算法的编解码速度也会直接影响客户端的体验效果。若采用LZ4算法进行编解码的话,编解码速度基本可以得到保证,但数据的压缩率降低也会带来其他方面的问题,因此,有必要在不影响压缩率的前提下,对LZ系列算法包括LZ4算法的编解码速度进行进一步优化。
[0006]现有技术的缺点(1) 中国专利技术专利“一种基于低延时的LZ无损压缩算法的FPGA实现系统”(专利号:CN106385260A)。该专利公开了一种基于低延时的LZ无损压缩算法的FPGA实现系统,包括输入缓存模块、输出缓存模块、移位寄存器、回读控制模块、匹配搜索模块、字符长度计算模块、匹配长度计算模块和输出控制模块。该专利是针对现有无损压缩硬件实现方法的缺陷,提供一种基于低延时的LZ(Lempel

Ziv,即Ziv和Lempel算法)无损压缩算法的FPGA实现
系统,是通过硬件实现方式而不是软件方式来加速LZ无损压缩算法的编码速度,需要配置专门的FPGA芯片,其使用范围受限,与现有系统和软件的集成效果还有待检验。
[0007](2) 中国专利技术专利“一种用于变电站二次在线监测的LZ进化无损压缩方法”(专利号:CN105281874A)。该专利提供了一种用于变电站二次在线监测的LZ进化无损压缩方法,在传输过程中建立“实时压缩字典”,并与变电站二次在线监测主站映像字典,从而在传输过程中直接传输字典序列即可。变电站二次在线监测主、子站在通信建立时,先同步“实时压缩字典”,再进行信息传输,而传输信息时大部分传输的是“实时压缩字典”中的序号,从而降低所需的网络带宽,提高数据传输效率,保证数据可靠、实时传送。该专利需要预先建立和同步“实时压缩字典”,适用于专用场景,而不适用于云计算的普遍场景。
[0008](3) 中国专利技术专利“一种改进型LZ4压缩算法的硬件实现系统”(专利号:CN105207678A)。该专利利用硬件电路实现改进型LZ4压缩算法,可以发挥出该压缩算法的最大性能,但该专利需要专用硬件电路的支持,且LZ4压缩算法的压缩率会比其他基于LZ变体的压缩算法要差一些。
[0009](4)中国专利技术专利“在基于LZ的压缩算法中在多个经压缩块之间共享初始词典和霍夫曼树”(专利号:CN105207678A)。该专利通过将数据字符串分割成块集,基于初始词典集和霍夫曼树集压缩每一块的方式,可以采用并行方式进行数据压缩,提升了压缩速度,但也因此可能导致压缩率会比其他基于LZ变体的压缩算法要差一些。同时,该专利在压缩前需要预先生成初始词典和霍夫曼树,可能导致额外的计算开销。
[0010](5) 中国专利技术专利“一种LZ编码的压缩方法、装置、设备及存储介质”(专利号:CN107565972A)。该专利致力于在异构并行加速平台下提高LZ编码的压缩率,但其代价是额外的计算开销,增加了压缩时间。
[0011](6) 美国专利技术专利“Literal handling in LZ compression employing MRU/LRU encoding”(专利号:US6218970B1)。该专利提供了一种在Lempel

Ziv数据压缩系统中处理文字的方法和系统,通过对字符的重新MRU/LRU编码排列来对lz编码进行优化。该方法适用于对文本类型数据的压缩,但并不适用于图像、程序等其他类型数据的压缩。
[0012](7) 国际专利技术专利“LEMPEL

ZIV (LZ)

BASED DATA COMPRESSION EMPLOYING IMPLICIT VARIABLE

LENGTH DISTANCE CODING”(专利号:WO2015171263A1)。该专利采用隐式变长距离编码的基于Lempel

Ziv(LZ)的数据压缩。可以减少压缩输出数据中的距离位长度,以进一步减小数据大小。但这种方式并不会减少压缩时间。
[0013](8) 美国专利技术专利“Method, apparatus and system for data block rearrangement for LZ data compression”(专利号:US20060018556A1)。该专利提供了一种为LZ数据压缩系统重新排列输入数据流以实现更高数据压缩的技术。它将每个接收到的数据块与预定数量的先前处理的数据块中的每个进行比较,形成亲和数组,使得亲和数组中的每个元素包括基于一个或多个匹配位置及其关联的匹配长度的亲和数;然后使用关联数组重新排列输入数据流中的数据块序列,以形成新的数据流;最后对新数据流进行编码以实现更高的数据压缩。该专利同样专注于实现更高的压缩率,但比较、重新排列以及重编码等操作会带来额外的计算开销,需要更长的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种LZ系列压缩算法编解码速度优化方法,包括对数据编码和数据解码两个过程的优化,其特征在于,在数据编码过程中,查找重复数据段时,通过一次性读取多个字节的数据切片进行匹配的方式提升重复数据段的匹配速度,具体为:在查找重复数据段时,不再是逐个字节匹配,而是一次性读取长度为计算机字长的数据切片进行匹配,只有数据切片匹配失败时,才对数据切片进行逐个字节匹配,以减少查找重复数据段所需的CPU周期数;输出未匹配数据时,通过累积未匹配数据并一次性批量输出的方式提升未匹配数据的输出速度,具体为:在输出未匹配数据时,不再是发现未匹配数据就立即输出,而是累积未匹配数据,直至发现下一个重复数据段后,才将累积的未匹配数据批量复制输出,减少复制所需的CPU周期数和额外开销。2.一种LZ系列压缩算法编解码速度优化方法,包括对数据编码和数据解码两个过程的优化,其特征在于,在数据解码过程中,通过采用直接批量复制和循环批量复制的方式,提升根据历史数据重复复制得到当前数据的速度,具体操作为:在根据历史数据重复复制得到当前数据时,不再是逐个字节复制,而是综合考虑历史数据位置与当前位置的距离以及待复制数据长度,若待复制数据长度小于当前位置跟历史数据位置之间的距离,则直接批量复制;若待复制数据长度大于当前位置跟历史数据位置之间的距离,则采用循环批量复制的方式,历史数据位置保持不变,当前位置随着每次循环而更新,每次循环批量...

【专利技术属性】
技术研发人员:李唯实谢明魏立峰张铎孙立明刘云
申请(专利权)人:麒麟软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1