基于字典的内存页面压缩方法技术

技术编号:9739982 阅读:142 留言:0更新日期:2014-03-06 23:09
本发明专利技术公开了一种数据处理技术领域基于字典的内存页面压缩方法,主要解决目前压缩方法对内存页面压缩速度低的问题。主要特点为:以四字节为基本单元来压缩、解压缩内存页面数据;设计了新哈希函数和适合压缩内存页面的压缩格式。本发明专利技术的字典是用关键值访问的哈希表,从输入数据流中读入四个字节,用前两个字节做异或得到新字节A,用后两个字节做异或得到新字节B,用A的低位2比特与B的高位2比特做异或得到14比特的关键值;新压缩格式为:首字节前4比特记录重复字符长度,后4比特记录新四字符长度;从第二个字节记录剩余新四字符长度,再记录新四字符;然后记录内存页面剩余重复四字节的长度和指回距离。本发明专利技术编码简单,解码快速。

【技术实现步骤摘要】

本专利技术属于数据处理
,涉及设备内存的数据压缩方法。本专利技术在数据压缩时根据内存数据的特征采用新的数据压缩格式提高了压缩的速度,可用在内存受限的嵌入式移动设备中。
技术介绍
近年来,随着移动互联网的发展,移动设备越来越成为人们不可或缺的一种通信工具。由于移动设备的内存受限,如果能对其内存数据进行压缩,省出内存空间,则可以提高设备的整体性能。现代社会信息量的不断增长,人们对计算机系统的性能也提出了更高的要求,如更高的速度、更低的耗能、更小的体积、能存取更多的信息等等。为了达到上面的各种性能要求,人们提出了各种改进的方法。其中,比较廉价的改进方法之一是数据压缩技术。Lempel和Ziv于1977年提出了一种高效率的无失真压缩技术,即LZ77,该压缩算法的主要原理是利用较短的标记代表前面出现过的重复字串,标记格式为(重复长度,指回距离),如abcdekabcdeha,则可以编码成abcdek(5, 6)ha表不,这样从整体上而言,较短的信息代替较长的信息,从而达到了压缩的效果。1982年,James Storer和Thomas Szymanski在LZ77基础上将算法改进,提高了压缩率,提出了 LZSS算法。后来Lempel-Ziv-Oberhumer又在LZSS的基础上将算法做了改进,提高了压缩速度,提出了 LZO算法。LZO算法是一种基于字典的无损的数据压缩算法,具有压缩速度快、即时性的特点。该算法根据重复字符个数和指回距离设计了五种压缩格式,通过压缩格式的首字节大小区分这五种不同的格式。其主要步骤是(I)读取移动设备的内存数据与内存数据的长度;(2)判断所读数据是否为新数据,若所读数据没有记录在字典中,则判为新数据,并把新数据记入字典中,继续读取内存数据,直到未出现新数据为止;(3)若所读数据已记录在字典中,则根据重复数据的长度和指回距离进行压缩编码;(4)判断编码位置是否为内存数据结尾,若是则输出压缩后的数据和数据长度,并记录结束标志,否则返回步骤(2)继续读入新数据。该方法存在的不足之处是,目前32位系统是计算机的主流系统,考虑内存对齐的影响,内存中的数据绝大多数是以4字节为单位来写入的,而LZO算法是以一个字节为单位并不是完全适合压缩内存数据,这将花费更多的时间;LZ0初始设计目的是压缩长度不定的数据,而对于4K大小的内存页面,LZO的压缩格式并不适用。
技术实现思路
本专利技术的目的在于克服上述已有技术的不足,提出了一种,以能够更快速的压缩与解压缩内存页面,从而减少内存数据存取的延迟。实现本专利技术的技术方案是:根据内存页面的数据特征,设计一种新的哈希函数和内存页面的压缩格式(解压缩格式相同),以四字节为基本单元对内存页面进行压缩编码和解压缩,具体步骤如下:(I)读取移动设备中的内存数据与内存数据的长度;(2)判断所读数据是否为新数据,若所读数据没有记录在字典中,则判为新数据,并把该新数据记入字典中,继续读取内存数据,直到未出现新数据为止;(3)若所读数据已记录在字典中,则对所读数据用新的压缩格式进行压缩编码和解压缩;(4)判断是否编码到内存数据结尾,若是则输出压缩后的数据和数据长度,并记录结束标志,否则返回步骤(2),继续读入新数据;所述步骤(2)中的字典是根据关键值直接访问的哈希表,关键值是通过哈希函数计算得出,哈希函数的设计为:从输入数据流中读入四个字节,用前两个字节做异或操作得到新字节A,用后两个字节做异或操作得到新字节B,用新字节A的低位2比特与B的高位2比特做异或操作得到14比特的关键值;所述步骤(3)中的新的压缩格式以四字节为基本单元对内存页面压缩编码和解码,其格式为:I)首字节前4个比特记录重复四字符的长度,后4个比特记录新四字符的长度;2)从第二个字节开始记录剩余的新四字符长度,然后记录新四字符;3)在步骤2)新四字符记录完成之后,再记录内存页面剩余的重复四字符的长度和指回距离。指回距离是当前的重复四字符的位置与哈希表里记录的上一次四字符位置之间的距离。本专利技术中内存页面的压缩编码过程描述如下:1.1)先用首字节后4比特记录新四字符的长度,如果新四字符长度大于14,则首字节后4比特用15作为标记,从第二个字节开始记录剩余的新四字符长度,如果剩余的新四字符长度大于255,则记录一个字节0并将长度减255,直到剩余新四字符长度小于255,记录此剩余新四字符长度;1.2)在步骤1.1)新四字符长度记录完成之后,记录新四字符;1.3)用首字节前4比特记录重复四字符的长度,如果重复四字符长度大于14,则用首字节前4比特用15作为标记,然后记录剩余的重复四字符长度。如果剩余的重复四字符长度大于255,则记录一个字节0并将长度减255,直到剩余重复四字符长度小于255,记录此剩余重复四字符长度;1.4)在步骤1.3)完成之后,记录重复四字符的指回距离。本专利技术中内存页面的解压缩过程描述如下:2.1)读取压缩格式的首字节,判断首字节后4比特的大小,若小于15则为新四字符的长度,并输出新四字符;若等于15,新四字符长度加14,从第二个字节开始,若为字节0则新四字符长度加255,直到所读字节为非0,将新四字符长度加上此非0字节,并输出新四字符;2.2)判断步骤2.1)中首字节前4比特的大小,若小于15则为重复四字符的长度;反之,若等于15,重复四字符长度加14,继续读取,若字节为0,则重复四字符长度并加255,直到所读字节为非0,将重复四字符长度加上此非0字节;2.3)读取压缩格式的最后一个字节,即为重复四字符的指回距离,根据重复四字符的长度,输出重复四字符。与现有技术相比,本专利技术具有如下优点:与目前的LZO无损压缩算法相比,本专利技术所采用的新压缩格式简单,对内存页面数据的压缩与解压缩速度较快,同时压缩率基本相当,可以大幅提高移动设备的运行效率,测试结果也证明压缩时间与解压缩时间都提高了 60%。【附图说明】图1是本专利技术中的压缩和解压缩格式图;图2是本专利技术的压缩流程图;图3是本专利技术的解压缩流程图;【具体实施方式】下面结合图1对本专利技术的压缩和解压缩格式作进一步详细描述:I)用首字节前4个比特记录重复四字符的长度,后4个比特记录新四字符的长度;2)如果新四字符长度大于14,则首字节后4比特用15作为标记,从第二个字节开始记录剩余的新四字符长度。如果剩余的新四字符长度大于255,则记录一个字节0并长度减去255,直到剩余新四字符长度小于255,同时记录此剩余新四字符长度,新四字符长度记录完成之后,然后记录新四字符;3)如果重复四字符长度小于等于14,则用步骤I)中首字节前4比特表示重复四字符长度;如果重复四字符长度大于14,则首字节前4比特用15作为标记,然后记录剩余的重复四字符长度,如果剩余的重复四字符长度大于255,则记录一个字节0并长度减去255,直到剩余重复四字符长度小于255,同时记录此剩余重复四字符长度;4)在步骤3)完成之后,记录重复四字符的指回距离。下面结合图2对本专利技术压缩编码的实施过程作进一步详细描述:步骤一:从输入数据流中读入四个字符,做第一次哈希运算,进入步骤二 ;步骤二:判断四字节的位置是否合法,若合法进入步骤三,若不合法更新哈希表,返回步骤一;步骤三:判断哈希本文档来自技高网
...

【技术保护点】
一种基于字典的内存页面压缩方法,设计一种新的哈希函数和内存页面的压缩格式,以四字节为基本单元对内存页面编码进行压缩编码和解压缩,具体步骤如下:(1)读取移动设备中的内存数据与内存数据的长度;(2)判断所读数据是否为新数据,若所读数据没有记录在字典中,则判为新数据,并把新数据记入字典中,继续读取内存数据,直到未出现新数据为止;(3)若所读数据已记录在字典中,则对所读数据用新的压缩格式进行压缩编码和解压缩;(4)判断编码位置是否为内存数据结尾,若是则输出压缩后的数据和数据的长度,并记录结束标志,否则返回步骤(2),继续读入新数据;所述步骤(2)中的字典是根据关键值直接访问的哈希表,关键值是通过哈希函数计算得出,哈希函数的设计为:从输入数据流中读入四个字节,用前两个字节做异或操作得到新字节A,用后两个字节做异或操作得到新字节B,用新字节A的低位2比特与B的高位2比特做异或操作得到14比特的关键值;所述步骤(3)中的新压缩格式以四字节为基本单元对内存页面压缩编码和解码,其格式为:1)首字节前4个比特记录重复四字符的长度,后4个比特记录新四字符的长度;2)从第二个字节开始记录剩余的新四字符长度,然后记录新四字符;3)在步骤2)新四字符记录完成之后,再记录内存页面剩余的重复四字符的长度和指回距离。...

【技术特征摘要】
1.一种基于字典的内存页面压缩方法,设计一种新的哈希函数和内存页面的压缩格式,以四字节为基本单元对内存页面编码进行压缩编码和解压缩,具体步骤如下: (1)读取移动设备中的内存数据与内存数据的长度; (2)判断所读数据是否为新数据,若所读数据没有记录在字典中,则判为新数据,并把新数据记入字典中,继续读取内存数据,直到未出现新数据为止; (3)若所读数据已记录在字典中,则对所读数据用新的压缩格式进行压缩编码和解压缩; (4)判断编码位置是否为内存数据结尾,若是则输出压缩后的数据和数据的长度,并记录结束标志,否则返回步骤(2),继续读入新数据; 所述步骤(2)中的字典是根据关键值直接访问的哈希表,关键值是通过哈希函数计算得出,哈希函数的设计为:从输入数据流中读入四个字节,用前两个字节做异或操作得到新字节A,用后两个字节做异或操作得到新字节B,用新字节A的低位2比特与B的高位2比特做异或操作得到14比特的关键值; 所述步骤(3)中的新压缩格式以四字节为基本单元对内存页面压缩编码和解码,其格式为: 1)首字节前4个比特记录重复四字符的长度,后4个比特记录新四字符的长度; 2)从第二个字节开始记录 剩余的新四字符长度,然后记录新四字符; 3)在步骤2)新四字符记录完成之后,再记录内存页面剩余的重复四字符的长度和指回距离。2.根据权利要求1所述的基于字典的内存页面压缩方法,其特征在于:内存页面的压缩编码过程描述如下: 2.1)先用首字节后4比特记录新四字符的长度,如...

【专利技术属性】
技术研发人员:宋彬裴远宋秉玺李慧玲甄立
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:

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

1