数据压缩编码的流水线并行加速方法及其系统架构的制作方法

文档序号:9551783阅读:393来源:国知局
数据压缩编码的流水线并行加速方法及其系统架构的制作方法
【技术领域】
[0001]本发明涉及数据压缩的信息编码技术领域,特别涉及一种数据压缩编码的流水线并行加速方法及其系统架构。
[0002]
【背景技术】
[0003]随着云计算的迅速发展,数据量正在以惊人的速度增长。作为信息产业的发展趋势,大数据正变得越来越重要。与此同时也出现了问题:如何能够高效地处理这些TB级、PB级甚至更多的大数据?我们需要在网络环境中存储和传输这些大数据,这对存储空间、网络带宽和计算资源都是一种挑战。
[0004]数据压缩是节省数据存储和传输成本的一种明智的方法,然而面对大数据,传统的单任务压缩编码技术显得能力不足,压缩速度并不足够快。在压缩率保持不变的前提下,如何成倍地提高压缩速度就成为现实的问题。
[0005]首先介绍传统单任务压缩编码技术,这些技术在并行压缩技术下仍然适用: 传统压缩编码包括有损压缩和无损压缩两大类。由于有损压缩的末段总需要一个无损压缩编码过程,因此只须考虑无损压缩编码部分就能影响到压缩速度。
[0006]从理论分类的角度看,当前的无损压缩数学模型和方法可以分为如下3种类型:
1)基于概率统计的压缩,例如哈夫曼编码、算术编码等。这一类型中,基于马可夫链模型的PPM (Partial Predict1n Match,部分预测匹配)算法具有良好的压缩率。
[0007]2)基于字典索引的压缩,例如LZ77/LZSS算法、LZ78/LZW算法等。LZ系列的压缩模型具有速度上的优势。
[0008]3)基于符号的顺序和重复情况的压缩,例如游程编码、BWT (Burrows-Wheeler转换)编码等。
[0009]当前流行的压缩软件是以上基础压缩理论的复合应用。每种软件通常整合不同的压缩模型和方法来达到更好的压缩率效果。例如WinZip采用了 LZSS&Huffman编码,WinRAR采用了 LZSS&Huffman 编码,Bzip2 采用了 BWT&Huffman 编码,7_zip 采用了 LZSS& 算术编码(区间编码与算术编码本质相同)。还有其他压缩软件,例如PAQ、WinUDA等。它们可能有较高的压缩率,但速度较慢,不适合大数据压缩。
[0010]上述传统单任务压缩编码技术可继续在并行压缩中使用。一部分流行的压缩软件新版本中,就采用了一些现有的并行压缩技术。
[0011]现有的并行压缩编码技术来源于并行计算方法,主要包括:
1)多CPU/多核/多线程并行压缩:该方法是把数据分成多块,给多个进程或线程去进行同时压缩编码。这多个进程/线程在现代计算机的多CPU/多核/多线程硬件中能够达到并行加速的效果。
[0012]2) GPU/DSP等协处理硬件并行压缩:该方法也是把数据分成多块,给多个线程去进行同时压缩编码,但线程是放到显卡GPU、DSP之类的协处理硬件去执行。
[0013]3)专有硬件电路加速并行压缩:该方法采用FPGA、ASIC等专有硬件电路对数据进行压缩编码,达到并行加速的效果。但这种方法的成本较高,编码的复杂度及压缩率受到硬件电路规模的限制。
[0014]以上几种方法都属于并联式的并行压缩编码方法,其不足之处是数据需要分块,相当于压缩用的数据窗口大小限制在数据分块的大小,从而压缩率低于不分块的传统单任务压缩。

【发明内容】

[0015]本发明的目的在于克服现有技术的缺点与不足,提供一种不影响压缩率的串联式并行压缩编码方法即数据压缩编码的流水线并行加速方法,以及相应的流水线式压缩编码系统架构。
[0016]本发明的目的至少通过以下的技术方案之一实现。
[0017]—种数据压缩编码的流水线并行加速方法,该方法把数据压缩编码过程划分为7个能自由选择的环节,依次是S0原始数据输入、S1预处理过滤、S2模式匹配、S3指令解析、S4概率统计预测、S5熵编码、S6压缩数据输出;
7个环节之中的S1至S5分别对应5个流水线部件,依次是U1预处理过滤器、U2模式匹配编码器、U3指令解析器、U4概率预测器、U5熵编码器;
5个流水线部件允许任意选择采用其中的2个以上,并将所采用的部件以任意次序组合,并相应加入不同的数据缓冲区,最终形成1条编码流水线;
每个不同的数据缓冲区存放设定格式的中间数据,使编码流水线中的各部件即编码过程的各环节能够以并行流水线(类似于CPU内部并行流水线)的方式对编码数据作并行处理,从而提高编码的速度;
编码流水线用于数据的无损压缩,或者用于有损压缩末段的无损压缩部分,实现并行加速编码且压缩率不受影响。
[0018]进一步实施地,所述不同的数据缓冲区,具体包括:
字符缓冲区,在U1预处理过滤器与U2模式匹配编码器之间;
命令缓冲区,在U2模式匹配编码器与U3指令解析器之间;
二进制缓冲区,在U5熵编码器之后;
如有部分所述流水线部件缺失,则前述相应的数据缓冲区合并或取消;
每个数据缓冲区采用双缓冲块或多缓冲块,从而支持数据并行读写而不出现共享冲关ο
[0019]进一步实施地,所述把数据压缩编码过程划分为7个环节,具体包括: s0.原始数据输入环节,即获取未压缩的数据;
51.预处理过滤环节,即根据数据源的不同类型特点,对未压缩数据作各种预处理编码,以便获得更高的压缩率或更快的压缩速度(本发明解决问题的技术方案仅涉及流水线环节划分方法,不涉及具体的预处理编码方式,典型的预处理编码如BWT(Burrows-Wheeler变换)编码、游程编码、BCJ (Binary-Command-Jump)编码、小波变换编码等);
52.模式匹配环节,即对上一环节编码后的数据进行字符串匹配,生成含有索引、长度、单字符或指令信息的编码(本发明解决问题的技术方案仅涉及流水线环节划分方法,不涉及具体的模式匹配编码方式,典型的模式匹配编码如基于字典的LZ77、LZSS、LZW编码等);
53.指令解析环节,即对上一环节编码后的数据进行解析,根据不同的字符串匹配长度、索引大小、单字符或指令属性的不同而进行分类,将数据分流到不同的概率统计模型中,以便提高概率预测的准确性:此解析环节在其他传统的数据压缩编码中通常不独立存在,而是与概率统计预测环节合在一起;
54.概率统计预测环节,即对上一环节分流过来的数据,用不同的概率模型进行统计和预测,以便给下一环节的熵编码提供概率数据(本发明解决问题的技术方案仅涉及流水线环节划分方法,不涉及具体的概率预测建模方式,典型的概率模型如PPM (PartialPredict1n Matching,部分匹配预测)算法模型、静态统计表模型等);
55.熵编码环节,即对上一环节提供的概率预测数据,以数学算法生成二进制压缩编码(本发明解决问题的技术方案仅涉及流水线环节划分方法,不涉及具体的熵编码方式,典型的铜编码如自适应算术编码或区间编码、自适应Huffman编码等);
56.压缩数据输出环节,即把上一环节得到的二进制压缩数据输出。
[0020]进一步实施地,所述的编码流水线中的各部件即编码过程的各环节能够并行处理,各部件是以串联方式组成流水线,同时运行一一此特征与并行压缩常见的“并联”方式相对;输入的数据依次通过编码流水线中各部件,每个部件只完成各自不同的处理环节,最后形成压缩数据(即实现压缩环节之间的纵向并行)一一此特征与并行压缩常见的输入数据分割和同时压缩处理(即压缩数据之间的横向并行)相对。
[0021]进一步实施地,所述的每个不同的数据缓冲区存放的设定格式的中间数据,包括以下缓冲区相对应的数据格式:
字符缓冲区,存放准备模式匹配的数据,并划分为2个以上无访问冲突的读写缓冲块; 命令缓冲区,存放专有的32位命令代码字,并划分为2个以上无访问冲突的读写缓冲块;
二进制缓冲区,存放准备输出的二进制压缩数据,并划分为2个以上无访问冲突的读写缓冲块。
[0022]进一步实施地,所述的每个数据缓冲区采用双缓冲块或多缓冲块,或所述的字符缓冲区、命令缓冲区及二进制缓冲区所分别划分出来的2个以上无访问冲突的读写缓冲块中:
每个缓冲块都既可读出数据,又可写入数据,但同一时间的单个缓冲块状态要么可读,要么可写,不能同时有超过1种状态;
每个缓冲块都能在可读、可写2种状态之间切换;
缓冲块可循环使用,当缓冲块编号计数器达到缓冲块个数减1时,计数器再加1会重新变成编号0。
[0023]进一步实施地,所述的命令缓冲区存放专有的32位命令代码字,
命令代码字以二进制32位为单位,按顺序存放压缩编码相关的信息,包括待压缩处理的单个字符、索引、长度和控制指令;
各种压缩编码相关的信息以统一的编码规则,组织成简化处理的32位命令代码字,编码规则包括: 0?Oxff:表示单个字符的ASCII编码值;
0x100?Oxlff:表示控制指令,后面跟32位的控制操作数(控制操作数的个数由具体的控制指令决定);
0x80000000?0x80000fff:表示字符串长度编码值,后面跟32位的字符串索引编码值;
索引编码值的编码规则包括:
0?0x7fffffff:2GB以下索引编码值;
0x80000001?Oxffffffff:1TB以下索引编码值(高31位),后面跟低32位的索引编码值。
[0024]
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1