CN105306951A - 数据压缩编码的流水线并行加速方法及其系统架构 - Google Patents
数据压缩编码的流水线并行加速方法及其系统架构 Download PDFInfo
- Publication number
- CN105306951A CN105306951A CN201510653690.5A CN201510653690A CN105306951A CN 105306951 A CN105306951 A CN 105306951A CN 201510653690 A CN201510653690 A CN 201510653690A CN 105306951 A CN105306951 A CN 105306951A
- Authority
- CN
- China
- Prior art keywords
- data
- pipeline
- buffer
- coding
- link
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 91
- 238000013144 data compression Methods 0.000 title claims abstract description 38
- 230000001133 acceleration Effects 0.000 title abstract 2
- 239000000872 buffer Substances 0.000 claims abstract description 129
- 238000007906 compression Methods 0.000 claims abstract description 43
- 230000006835 compression Effects 0.000 claims abstract description 43
- 230000008569 process Effects 0.000 claims abstract description 20
- 238000012545 processing Methods 0.000 claims abstract description 12
- 230000000875 corresponding effect Effects 0.000 claims description 14
- 230000003139 buffering effect Effects 0.000 claims description 12
- 238000001914 filtration Methods 0.000 claims description 7
- 229910002056 binary alloy Inorganic materials 0.000 claims description 6
- 230000002596 correlated effect Effects 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 230000008034 disappearance Effects 0.000 claims description 2
- 230000015572 biosynthetic process Effects 0.000 claims 1
- 238000000638 solvent extraction Methods 0.000 abstract 1
- 238000005516 engineering process Methods 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000005059 dormancy Effects 0.000 description 2
- 238000004064 recycling Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了数据压缩编码的流水线并行加速方法及其系统架构,所述方法把数据压缩编码过程划分为7个可自由选择的环节;除了数据输入输出环节之外,中间的5个环节分别对应5个流水线部件;前后两个部件之间加入不同的数据缓冲区,形成1条编码流水线;每个数据缓冲区存放特定格式的中间数据,使编码流水线中的各部件能够并行处理,类似于CPU的并行流水线,从而提高编码的速度。本发明同时公开了数据压缩编码流水线的系统架构。本发明的方法、流水线系统及专用编码格式,能够在不影响压缩率的前提下,使数据压缩编码的速度比传统的单任务编码速度成倍数地提高。
Description
技术领域
本发明涉及数据压缩的信息编码技术领域,特别涉及一种数据压缩编码的流水线并行加速方法及其系统架构。
背景技术
随着云计算的迅速发展,数据量正在以惊人的速度增长。作为信息产业的发展趋势,大数据正变得越来越重要。与此同时也出现了问题:如何能够高效地处理这些TB级、PB级甚至更多的大数据?我们需要在网络环境中存储和传输这些大数据,这对存储空间、网络带宽和计算资源都是一种挑战。
数据压缩是节省数据存储和传输成本的一种明智的方法,然而面对大数据,传统的单任务压缩编码技术显得能力不足,压缩速度并不足够快。在压缩率保持不变的前提下,如何成倍地提高压缩速度就成为现实的问题。
首先介绍传统单任务压缩编码技术,这些技术在并行压缩技术下仍然适用:
传统压缩编码包括有损压缩和无损压缩两大类。由于有损压缩的末段总需要一个无损压缩编码过程,因此只须考虑无损压缩编码部分就能影响到压缩速度。
从理论分类的角度看,当前的无损压缩数学模型和方法可以分为如下3种类型:
1)基于概率统计的压缩,例如哈夫曼编码、算术编码等。这一类型中,基于马可夫链模型的PPM(PartialPredictionMatch,部分预测匹配)算法具有良好的压缩率。
2)基于字典索引的压缩,例如LZ77/LZSS算法、LZ78/LZW算法等。LZ系列的压缩模型具有速度上的优势。
3)基于符号的顺序和重复情况的压缩,例如游程编码、BWT(Burrows-Wheeler转换)编码等。
当前流行的压缩软件是以上基础压缩理论的复合应用。每种软件通常整合不同的压缩模型和方法来达到更好的压缩率效果。例如WinZip采用了LZSS&Huffman编码,WinRAR采用了LZSS&Huffman编码,Bzip2采用了BWT&Huffman编码,7-zip采用了LZSS&算术编码(区间编码与算术编码本质相同)。还有其他压缩软件,例如PAQ、WinUDA等。它们可能有较高的压缩率,但速度较慢,不适合大数据压缩。
上述传统单任务压缩编码技术可继续在并行压缩中使用。一部分流行的压缩软件新版本中,就采用了一些现有的并行压缩技术。
现有的并行压缩编码技术来源于并行计算方法,主要包括:
1)多CPU/多核/多线程并行压缩:该方法是把数据分成多块,给多个进程或线程去进行同时压缩编码。这多个进程/线程在现代计算机的多CPU/多核/多线程硬件中能够达到并行加速的效果。
2)GPU/DSP等协处理硬件并行压缩:该方法也是把数据分成多块,给多个线程去进行同时压缩编码,但线程是放到显卡GPU、DSP之类的协处理硬件去执行。
3)专有硬件电路加速并行压缩:该方法采用FPGA、ASIC等专有硬件电路对数据进行压缩编码,达到并行加速的效果。但这种方法的成本较高,编码的复杂度及压缩率受到硬件电路规模的限制。
以上几种方法都属于并联式的并行压缩编码方法,其不足之处是数据需要分块,相当于压缩用的数据窗口大小限制在数据分块的大小,从而压缩率低于不分块的传统单任务压缩。
发明内容
本发明的目的在于克服现有技术的缺点与不足,提供一种不影响压缩率的串联式并行压缩编码方法即数据压缩编码的流水线并行加速方法,以及相应的流水线式压缩编码系统架构。
本发明的目的至少通过以下的技术方案之一实现。
一种数据压缩编码的流水线并行加速方法,该方法把数据压缩编码过程划分为7个能自由选择的环节,依次是S0原始数据输入、S1预处理过滤、S2模式匹配、S3指令解析、S4概率统计预测、S5熵编码、S6压缩数据输出;
7个环节之中的S1至S5分别对应5个流水线部件,依次是U1预处理过滤器、U2模式匹配编码器、U3指令解析器、U4概率预测器、U5熵编码器;
5个流水线部件允许任意选择采用其中的2个以上,并将所采用的部件以任意次序组合,并相应加入不同的数据缓冲区,最终形成1条编码流水线;
每个不同的数据缓冲区存放设定格式的中间数据,使编码流水线中的各部件即编码过程的各环节能够以并行流水线(类似于CPU内部并行流水线)的方式对编码数据作并行处理,从而提高编码的速度;
编码流水线用于数据的无损压缩,或者用于有损压缩末段的无损压缩部分,实现并行加速编码且压缩率不受影响。
进一步实施地,所述不同的数据缓冲区,具体包括:
字符缓冲区,在U1预处理过滤器与U2模式匹配编码器之间;
命令缓冲区,在U2模式匹配编码器与U3指令解析器之间;
二进制缓冲区,在U5熵编码器之后;
如有部分所述流水线部件缺失,则前述相应的数据缓冲区合并或取消;
每个数据缓冲区采用双缓冲块或多缓冲块,从而支持数据并行读写而不出现共享冲突。
进一步实施地,所述把数据压缩编码过程划分为7个环节,具体包括:
S0.原始数据输入环节,即获取未压缩的数据;
S1.预处理过滤环节,即根据数据源的不同类型特点,对未压缩数据作各种预处理编码,以便获得更高的压缩率或更快的压缩速度(本发明解决问题的技术方案仅涉及流水线环节划分方法,不涉及具体的预处理编码方式,典型的预处理编码如BWT(Burrows-Wheeler变换)编码、游程编码、BCJ(Binary-Command-Jump)编码、小波变换编码等);
S2.模式匹配环节,即对上一环节编码后的数据进行字符串匹配,生成含有索引、长度、单字符或指令信息的编码(本发明解决问题的技术方案仅涉及流水线环节划分方法,不涉及具体的模式匹配编码方式,典型的模式匹配编码如基于字典的LZ77、LZSS、LZW编码等);
S3.指令解析环节,即对上一环节编码后的数据进行解析,根据不同的字符串匹配长度、索引大小、单字符或指令属性的不同而进行分类,将数据分流到不同的概率统计模型中,以便提高概率预测的准确性:此解析环节在其他传统的数据压缩编码中通常不独立存在,而是与概率统计预测环节合在一起;
S4.概率统计预测环节,即对上一环节分流过来的数据,用不同的概率模型进行统计和预测,以便给下一环节的熵编码提供概率数据(本发明解决问题的技术方案仅涉及流水线环节划分方法,不涉及具体的概率预测建模方式,典型的概率模型如PPM(PartialPredictionMatching,部分匹配预测)算法模型、静态统计表模型等);
S5.熵编码环节,即对上一环节提供的概率预测数据,以数学算法生成二进制压缩编码(本发明解决问题的技术方案仅涉及流水线环节划分方法,不涉及具体的熵编码方式,典型的熵编码如自适应算术编码或区间编码、自适应Huffman编码等);
S6.压缩数据输出环节,即把上一环节得到的二进制压缩数据输出。
进一步实施地,所述的编码流水线中的各部件即编码过程的各环节能够并行处理,各部件是以串联方式组成流水线,同时运行——此特征与并行压缩常见的“并联”方式相对;输入的数据依次通过编码流水线中各部件,每个部件只完成各自不同的处理环节,最后形成压缩数据(即实现压缩环节之间的纵向并行)——此特征与并行压缩常见的输入数据分割和同时压缩处理(即压缩数据之间的横向并行)相对。
进一步实施地,所述的每个不同的数据缓冲区存放的设定格式的中间数据,包括以下缓冲区相对应的数据格式:
字符缓冲区,存放准备模式匹配的数据,并划分为2个以上无访问冲突的读写缓冲块;
命令缓冲区,存放专有的32位命令代码字,并划分为2个以上无访问冲突的读写缓冲块;
二进制缓冲区,存放准备输出的二进制压缩数据,并划分为2个以上无访问冲突的读写缓冲块。
进一步实施地,所述的每个数据缓冲区采用双缓冲块或多缓冲块,或所述的字符缓冲区、命令缓冲区及二进制缓冲区所分别划分出来的2个以上无访问冲突的读写缓冲块中:
每个缓冲块都既可读出数据,又可写入数据,但同一时间的单个缓冲块状态要么可读,要么可写,不能同时有超过1种状态;
每个缓冲块都能在可读、可写2种状态之间切换;
缓冲块可循环使用,当缓冲块编号计数器达到缓冲块个数减1时,计数器再加1会重新变成编号0。
进一步实施地,所述的命令缓冲区存放专有的32位命令代码字,
命令代码字以二进制32位为单位,按顺序存放压缩编码相关的信息,包括待压缩处理的单个字符、索引、长度和控制指令;
各种压缩编码相关的信息以统一的编码规则,组织成简化处理的32位命令代码字,编码规则包括:
0~0xff:表示单个字符的ASCII编码值;
0x100~0x1ff:表示控制指令,后面跟32位的控制操作数(控制操作数的个数由具体的控制指令决定);
0x80000000~0x80000fff:表示字符串长度编码值,后面跟32位的字符串索引编码值;
索引编码值的编码规则包括:
0~0x7fffffff:2GB以下索引编码值;
0x80000001~0xffffffff:1TB以下索引编码值(高31位),后面跟低32位的索引编码值。
本发明提供的实现所述方法的数据压缩编码的流水线系统架构,该架构包括5个可选的流水线部件,依次是U1预处理过滤器、U2模式匹配编码器、U3指令解析器、U4概率预测器、U5熵编码器,分别对应5个编码环节,依次是S1预处理过滤、S2模式匹配、S3指令解析、S4概率统计预测、S5熵编码;
5个流水线部件允许任意选择采用其中的2个以上,以任意次序组合,并在两个部件之间相应设置有不同的数据缓冲区,最终连接成1条编码流水线;
每个数据缓冲区采用双缓冲块或多缓冲块。
各流水线部件是以串联方式组成流水线——此特征与并行压缩常见的“并联”方式相对。
本发明与现有技术相比,具有如下优点和有益效果:
本发明的方法及其系统架构,压缩编码流水线可用于数据无损压缩,或者有损压缩末段的无损压缩部分,两种情况下均能实现并行加速编码,同时压缩率不会受到影响。因为采用的是串联式的并行,无须作并联式数据分块导致并行任务的每个数据窗口缩小。
而且本发明的流水线并行压缩编码与传统单任务压缩编码相比,并不改变压缩之后的结果。因此编码后的压缩数据既能用流水线并行方式解压缩,也能直接用传统单任务方式解压缩。相反,现有并联式的并行压缩编码经历过任务分解,不能直接用传统单任务方式解压缩,必须用相对应的并行解压缩方式,或者对传统单任务解压缩方式作必要的改造。
还有,本发明的压缩编码流水线与现有并联式并行技术不冲突,完全可以将本发明与现有并行技术相结合,形成串-并联式的并行压缩编码架构,进一步提高压缩编码速度。
附图说明
图1为本发明所述的一种数据压缩编码的流水线并行加速系统的架构示意图;
图2为本发明所述的一种数据压缩编码的流水线中任意一个并行压缩编码环节的数据缓冲区构造示意图;
图3为本发明所述的一种数据压缩编码的流水线中任意一个并行压缩编码环节的统一流程图。
具体实施方式
下面结合实施例及附图对本发明的其中一种具体实施方式作进一步详细的描述,但本发明的实施方式不限于此,需指出的是,以下描述和附图中若存在未特别详细说明之过程或符号,均是本领域技术人员可以参照现有技术理解或实现的。
一种数据压缩编码的流水线并行加速方法即基于流水线并行加速的数据压缩编码方法即,包括下述实现方式的组合:
把数据压缩编码过程划分为7个环节,依次是S0原始数据输入、S1预处理过滤、S2模式匹配、S3指令解析、S4概率统计预测、S5熵编码、S6压缩数据输出;
7个环节之中的S1至S5分别对应5个流水线部件,依次是U1预处理过滤器、U2模式匹配编码器、U3指令解析器、U4概率预测器、U5熵编码器;
5个流水线部件以U1至U5的次序组合,一部分前后两个部件之间加入不同的数据缓冲区,共3个数据缓冲区,最终形成如图1所示的1条编码流水线;
每个数据缓冲区采用如图2所示的多缓冲块,从而支持数据并行读写而不出现共享冲突;
各流水线部件是以“串联”方式组成流水线。
与所述的方法对应的一种数据压缩编码的流水线系统架构,包括:
5个流水线部件,依次是U1预处理过滤器、U2模式匹配编码器、U3指令解析器、U4概率预测器、U5熵编码器,分别对应5个编码环节,依次是S1预处理过滤、S2模式匹配、S3指令解析、S4概率统计预测、S5熵编码;
3个数据缓冲区,具体包括:字符缓冲区,在U1预处理过滤器与U2模式匹配编码器之间;命令缓冲区,在U2模式匹配编码器与U3指令解析器之间;二进制缓冲区,在U5熵编码器之后;
流水线部件U1至U5,以及3个数据缓冲区,以所述的“串联”方式组成如图1所示的1条编码流水线。
所述的数据压缩编码过程划分为7个环节,具体包括:
S0.原始数据输入环节,即获取未压缩的数据;
S1.预处理过滤环节,把未压缩的数据转化为BWT编码;
S2.模式匹配环节,把BWT编码转化为LZ77编码,并进一步转化为命令缓冲区存放的专有32位命令代码字;
S3.指令解析环节,把LZ77编码进行解析,根据不同的字符串匹配长度、索引大小、单字符或指令属性的不同而进行分类,将数据分流到L0至L4长度模型,以及L1至L5索引模型中,以便提高概率预测的准确性;
S4.概率统计预测环节,对各类分流过来的数据,分别用多个相互独立的PPM算法模型进行统计和预测,生成提供给熵编码环节的概率数据;
S5.熵编码环节,根据概率数据,以自适应算术编码算法生成二进制压缩编码;
S6.压缩数据输出环节,把二进制压缩数据输出。
所述的编码流水线中的部件U1至U5是以“串联”方式组成流水线,同时运行;输入的数据依次通过各部件,每个部件只完成各自不同的处理环节,最后形成压缩数据,即压缩环节之间的纵向并行。
所述的每个数据缓冲区采用多缓冲块,如图2所示,其特征在于:
数据缓冲区所划分出来的N(N≥2)个读写缓冲块中,每个缓冲块同一时间的状态要么是可读,要么是可写,并且能在2种状态之间切换;
缓冲块可循环使用,当缓冲块编号计数器达到缓冲块个数N-1时,计数器再加1会重新变成编号0。
所述的命令缓冲区存放专有的32位命令代码字,包括:
命令代码字以二进制32位为单位,按顺序存放待压缩处理的单个字符、索引、长度、控制指令及其他压缩编码相关的信息;
各种压缩编码相关的信息以统一的编码规则,组织成简化处理的32位命令代码字,编码规则包括:
0~0xff:表示单个字符的ASCII编码值;
0x100~0x1ff:表示控制指令,后面跟32位的控制操作数(控制操作数的个数由具体的控制指令决定);
0x80000000~0x80000fff:表示字符串长度编码值,后面跟32位的字符串索引编码值;
索引编码值的编码规则包括:
0~0x7fffffff:2GB以下索引编码值;
0x80000001~0xffffffff:1TB以下索引编码值(高31位),后面跟低32位的索引编码值。
下面结合图示,对该方法及其系统架构的一个实施例,做更进一步的介绍:
如图1,一种数据压缩编码的流水线并行加速系统架构,包括:
5个流水线部件,依次是U1预处理过滤器101、U2模式匹配编码器103、U3指令解析器105、U4概率预测器112、U5熵编码器110,分别对应5个编码环节,依次是S1预处理过滤、S2模式匹配、S3指令解析、S4概率统计预测、S5熵编码;
概率预测器112中,包含长度分离部件106、5级长度模型107、索引分离部件108、5级索引模型109,能够把数据分流到独立的概率模型中,以便得到更准确的预测数据;
3个数据缓冲区,具体包括:字符缓冲区102,在U1预处理过滤器101与U2模式匹配编码器103之间;命令缓冲区104,在U2模式匹配编码器103与U3指令解析器105之间;二进制缓冲区111,在U5熵编码器110之后;
流水线部件U1至U5,以及3个数据缓冲区,以所述的“串联”方式组成1条编码流水线。
如图2,数据压缩编码流水线中任意一个并行压缩编码环节的数据缓冲区,划分成N(N≥2)个读写缓冲块,在缓冲块编号201中,N个缓冲块分别用编号0、1、…、N-1表示;
每个缓冲块同一时间的状态要么是可读,要么是可写,用状态标志202表示,并且能在2种状态之间切换;
缓冲块可循环使用,当缓冲块编号计数器达到缓冲块个数N-1时,计数器再加1会重新变成编号0;
缓冲块的数据区203中,根据实时编码情况可分为无数据的区域204和有数据的区域205;
当前处理环节写入了数据的部分,就成为有数据的区域205;
下一处理环节读取了数据的部分,就成为无数据的区域204。
以上内容已经对本发明的实施作了充分说明,以下再从本领域技术人员的角度提供一实施例(相关符号或代码若未特别说明,可参照现有技术理解),如图3,一种数据压缩编码的流水线并行加速方法,包括流水线中各个编码环节的同时进行,而其中任意一个环节的编码方法,包含以下顺序的步骤:
S301至S303是本环节初始化的步骤,S304至S311是读取数据的步骤,S312是编码处理的步骤,S313至S318是写入数据的步骤。
S301:使iRead的值等于本环节的数据缓冲区号。在本实施例图1的流水线中,U1预处理过滤器的iArea=0,U2模式匹配编码器的iArea=1,以此类推。字符缓冲区的区号是1,命令缓冲区的区号是2,以此类推。还有隐含的原始数据缓冲区的区号是0。
S302:把本环节的iRead、pRead、iWrite、pWrite都置0。其中,iRead是正在读取的缓冲块编号,iWrite是正在写入的缓冲块编号,pRead是当前读指针,pWrite是当前写指针。iRead、pRead指向编号为iArea的数据缓冲区,iWrite、pWrite指向编号为iArea+1的数据缓冲区。本环节的读取缓冲区,就是上一环节的写入缓冲区。
S303:把缓冲块状态标志blockState[iArea+1][iWrite]置为WRITABLE(可写)。
S304:判断缓冲块状态标志blockState[iArea][iRead]是否为READABLE(可读),是则转S306,否则转S305。
S305:休眠等待一个短暂时间,该时间可设定、可调整,然后转S304。
S306:判断本环节是否已经没有更多需要编码处理的数据,是则转S307,否则转S308。
S307:做缓冲区收尾工作,包括填充数据、设置缓冲块标志位,然后本环节处理结束。
S308:判断当前读指针pRead是否达到缓冲块长度BLOCK_LENGTH[iArea],即当前缓冲块是否已经读取完数据,是则转S309,否则转S310。
S309:置缓冲块状态标志blockState[iArea][iRead]为WRITABLE(可写),也就是上一环节可以写入数据到该缓冲块了。把本环节正在读取的缓冲块编号iRead切换到下一缓冲块(循环使用),即iRead=(iRead+1)%BLOCK_AMOUNT[iArea],同时把读指针pRead指向该缓冲块的开头,即pRead=0。然后转S304。
S310:读取缓冲块的数据,从block[iArea][pRead]处开始读取,所取数据长度为iReadSize。
S311:移动当前读指针,即pRead=pRead+iReadSize。
S312:对读取的数据进行本环节的编码处理,生成的数据长度为iWriteSize,数据暂存于临时内存buffer[iArea]。具体的编码操作由本环节的功能决定。
S313:把buffer[iArea]中的数据写入缓冲块block[iArea+1][iWrite][pWrite]处开始的区域,写入数据长度为iWriteSize。
S314:移动当前写指针,即pWrite=pWrite+iWriteSize。
S315:判断当前写指针pWrite是否达到缓冲块长度BLOCK_LENGTH[iArea+1],即当前缓冲块是否已经写满数据,是则转S316,否则转S306。
S316:置缓冲块状态标志blockState[iArea+1][iWrite]为READABLE(可读),也就是下一环节可以读取该缓冲块的数据了。把本环节正在写入的缓冲块编号iWrite切换到下一缓冲块(循环使用),即iWrite=(iWrite+1)%BLOCK_AMOUNT[iArea+1],同时把写指针pWrite指向该缓冲块的开头,即pWrite=0。然后转S317。
S317:判断缓冲块状态标志blockState[iArea+1][iWrite]是否为WRITABLE(可写),是则转S304,否则转S318。
S318:休眠等待一个短暂时间,该时间可设定、可调整,然后转S317。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (9)
1.一种数据压缩编码的流水线并行加速方法,其特征在于:
把数据压缩编码过程划分为7个能自由选择的环节,依次是S0原始数据输入、S1预处理过滤、S2模式匹配、S3指令解析、S4概率统计预测、S5熵编码、S6压缩数据输出;
7个环节之中的S1至S5分别对应5个流水线部件,依次是U1预处理过滤器、U2模式匹配编码器、U3指令解析器、U4概率预测器、U5熵编码器;
5个流水线部件允许任意选择采用其中的2个以上,并将所采用的部件以任意次序组合,并相应加入不同的数据缓冲区,最终形成1条编码流水线;
每个不同的数据缓冲区存放设定格式的中间数据,使编码流水线中的各部件即编码过程的各环节能够以并行流水线的方式对编码数据作并行处理,从而提高编码的速度;
编码流水线用于数据的无损压缩,或者用于有损压缩末段的无损压缩部分,实现并行加速编码且压缩率不受影响。
2.根据权利要求1所述的数据压缩编码的流水线并行加速方法,其特征在于所述不同的数据缓冲区,具体包括:
字符缓冲区,在U1预处理过滤器与U2模式匹配编码器之间;
命令缓冲区,在U2模式匹配编码器与U3指令解析器之间;
二进制缓冲区,在U5熵编码器之后;
如有部分所述流水线部件缺失,则前述相应的数据缓冲区合并或取消;
每个数据缓冲区采用双缓冲块或多缓冲块,从而支持数据并行读写而不出现共享冲突。
3.根据权利要求1所述的数据压缩编码的流水线并行加速方法,其特征在于所述把数据压缩编码过程划分为7个环节,具体包括:
S0.原始数据输入环节,即获取未压缩的数据;
S1.预处理过滤环节,即根据数据源的不同类型特点,对未压缩数据作各种预处理编码,以便获得更高的压缩率或更快的压缩速度;
S2.模式匹配环节,即对上一环节编码后的数据进行字符串匹配,生成含有索引、长度、单字符或指令信息的编码;
S3.指令解析环节,即对上一环节编码后的数据进行解析,根据不同的字符串匹配长度、索引大小、单字符或指令属性的不同而进行分类,将数据分流到不同的概率统计模型中,以便提高概率预测的准确性;
S4.概率统计预测环节,即对上一环节分流过来的数据,用不同的概率模型进行统计和预测,以便给下一环节的熵编码提供概率数据;
S5.熵编码环节,即对上一环节提供的概率预测数据,以数学算法生成二进制压缩编码;
S6.压缩数据输出环节,即把上一环节得到的二进制压缩数据输出。
4.根据权利要求1所述的数据压缩编码的流水线并行加速方法,其特征在于所述的编码流水线中的各部件即编码过程的各环节能够并行处理,各部件是以串联方式组成流水线,同时运行;输入的数据依次通过编码流水线中各部件,每个部件只完成各自不同的处理环节,最后形成压缩数据即实现压缩环节之间的纵向并行。
5.根据权利要求1所述的数据压缩编码的流水线并行加速方法,其特征在于所述的每个不同的数据缓冲区存放的设定格式的中间数据,包括以下缓冲区相对应的数据格式:
字符缓冲区,存放准备模式匹配的数据,并划分为2个以上无访问冲突的读写缓冲块;
命令缓冲区,存放专有的32位命令代码字,并划分为2个以上无访问冲突的读写缓冲块;
二进制缓冲区,存放准备输出的二进制压缩数据,并划分为2个以上无访问冲突的读写缓冲块。
6.根据权利要求2或5所述的数据压缩编码的流水线并行加速方法,其特征在于所述的每个数据缓冲区采用双缓冲块或多缓冲块,或所述的字符缓冲区、命令缓冲区及二进制缓冲区所分别划分出来的2个以上无访问冲突的读写缓冲块中:
每个缓冲块都既可读出数据,又可写入数据,但同一时间的单个缓冲块状态要么可读,要么可写,不能同时有超过1种状态;
每个缓冲块都能在可读、可写2种状态之间切换;
缓冲块可循环使用,当缓冲块编号计数器达到缓冲块个数减1时,计数器再加1会重新变成编号0。
7.根据权利要求5所述的数据压缩编码的流水线并行加速方法,其特征在于所述的命令缓冲区存放专有的32位命令代码字,
命令代码字以二进制32位为单位,按顺序存放压缩编码相关的信息,包括待压缩处理的单个字符、索引、长度和控制指令;
各种压缩编码相关的信息以统一的编码规则,组织成简化处理的32位命令代码字,编码规则包括:
0~0xff:表示单个字符的ASCII编码值;
0x100~0x1ff:表示控制指令,后面跟32位的控制操作数;
0x80000000~0x80000fff:表示字符串长度编码值,后面跟32位的字符串索引编码值;
索引编码值的编码规则包括:
0~0x7fffffff:2GB以下索引编码值;
0x80000001~0xffffffff:1TB以下索引编码值,后面跟低32位的索引编码值。
8.一种实现权利要求1所述方法的数据压缩编码的流水线系统架构,其特征在于:
该架构包括5个可选的流水线部件,依次是U1预处理过滤器、U2模式匹配编码器、U3指令解析器、U4概率预测器、U5熵编码器,分别对应5个编码环节,依次是S1预处理过滤、S2模式匹配、S3指令解析、S4概率统计预测、S5熵编码;
5个流水线部件允许任意选择采用其中的2个以上,以任意次序组合,并在两个部件之间相应设置有不同的数据缓冲区,最终连接成1条编码流水线;
每个数据缓冲区采用双缓冲块或多缓冲块。
9.根据权利要求8所述的数据压缩编码的流水线系统架构,其特征在于各流水线部件是以串联方式组成流水线。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510653690.5A CN105306951B (zh) | 2015-10-11 | 2015-10-11 | 数据压缩编码的流水线并行加速方法及其系统架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510653690.5A CN105306951B (zh) | 2015-10-11 | 2015-10-11 | 数据压缩编码的流水线并行加速方法及其系统架构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105306951A true CN105306951A (zh) | 2016-02-03 |
CN105306951B CN105306951B (zh) | 2019-04-09 |
Family
ID=55203626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510653690.5A Active CN105306951B (zh) | 2015-10-11 | 2015-10-11 | 数据压缩编码的流水线并行加速方法及其系统架构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105306951B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108832935A (zh) * | 2018-05-31 | 2018-11-16 | 郑州云海信息技术有限公司 | 一种rle算法实现方法、系统、设备及计算机存储介质 |
CN109828789A (zh) * | 2019-01-30 | 2019-05-31 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN110233627A (zh) * | 2019-05-22 | 2019-09-13 | 深圳大学 | 一种基于流水式的硬件压缩的系统及方法 |
CN110727463A (zh) * | 2019-09-12 | 2020-01-24 | 无锡江南计算技术研究所 | 一种基于动态信用的零级指令循环缓冲预取方法及装置 |
CN111565191A (zh) * | 2020-05-07 | 2020-08-21 | 南通保利佳服务外包有限公司 | 一种数据压缩、传输系统及方法 |
CN112671413A (zh) * | 2020-12-25 | 2021-04-16 | 浪潮云信息技术股份公司 | 基于LZSS算法和Sunday算法的数据压缩方法及系统 |
CN113746486A (zh) * | 2021-09-15 | 2021-12-03 | 北京中科胜芯科技有限公司 | 一种针对fpga配置码流并行流水线式解压缩装置 |
CN114268793A (zh) * | 2021-12-21 | 2022-04-01 | 北京达佳互联信息技术有限公司 | 编码方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1124889A (zh) * | 1993-12-23 | 1996-06-19 | 株式会社理光 | 数据并行编码和译码的方法和装置 |
US20060152394A1 (en) * | 2005-01-13 | 2006-07-13 | Via Technologies, Inc. | Decoding device with multi-buffers and decoding method thereof |
-
2015
- 2015-10-11 CN CN201510653690.5A patent/CN105306951B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1124889A (zh) * | 1993-12-23 | 1996-06-19 | 株式会社理光 | 数据并行编码和译码的方法和装置 |
US20060152394A1 (en) * | 2005-01-13 | 2006-07-13 | Via Technologies, Inc. | Decoding device with multi-buffers and decoding method thereof |
Non-Patent Citations (2)
Title |
---|
孙钟秀: "《操作系统教程 第3版》", 31 August 2003 * |
钟宇: "基于云计算的教育信息平台关键技术研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108832935A (zh) * | 2018-05-31 | 2018-11-16 | 郑州云海信息技术有限公司 | 一种rle算法实现方法、系统、设备及计算机存储介质 |
CN109828789A (zh) * | 2019-01-30 | 2019-05-31 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN109828789B (zh) * | 2019-01-30 | 2020-11-27 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN110233627A (zh) * | 2019-05-22 | 2019-09-13 | 深圳大学 | 一种基于流水式的硬件压缩的系统及方法 |
CN110233627B (zh) * | 2019-05-22 | 2023-05-12 | 深圳大学 | 一种基于流水式的硬件压缩的系统及方法 |
CN110727463A (zh) * | 2019-09-12 | 2020-01-24 | 无锡江南计算技术研究所 | 一种基于动态信用的零级指令循环缓冲预取方法及装置 |
CN111565191A (zh) * | 2020-05-07 | 2020-08-21 | 南通保利佳服务外包有限公司 | 一种数据压缩、传输系统及方法 |
CN112671413A (zh) * | 2020-12-25 | 2021-04-16 | 浪潮云信息技术股份公司 | 基于LZSS算法和Sunday算法的数据压缩方法及系统 |
CN112671413B (zh) * | 2020-12-25 | 2022-09-06 | 浪潮云信息技术股份公司 | 基于LZSS算法和Sunday算法的数据压缩方法及系统 |
CN113746486A (zh) * | 2021-09-15 | 2021-12-03 | 北京中科胜芯科技有限公司 | 一种针对fpga配置码流并行流水线式解压缩装置 |
CN114268793A (zh) * | 2021-12-21 | 2022-04-01 | 北京达佳互联信息技术有限公司 | 编码方法及装置 |
CN114268793B (zh) * | 2021-12-21 | 2024-04-16 | 北京达佳互联信息技术有限公司 | 编码方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105306951B (zh) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105306951A (zh) | 数据压缩编码的流水线并行加速方法及其系统架构 | |
CN110518917B (zh) | 基于Huffman编码的LZW数据压缩方法及系统 | |
CN107565971B (zh) | 一种数据压缩方法及装置 | |
CN100466739C (zh) | Cabac解码系统及方法 | |
CN106407285B (zh) | 一种基于rle和lzw的优化比特文件压缩与解压缩方法 | |
CN114697672B (zh) | 基于游程全零编码的神经网络量化压缩方法及系统 | |
EP2901285B1 (en) | A system and a method for executing sql basic operators on compressed data without decompression process | |
CN109871362A (zh) | 一种面向流式时序数据的数据压缩方法 | |
CN102970043A (zh) | 一种基于gzip的压缩硬件系统及其加速方法 | |
US20180102788A1 (en) | Data compressing device, data decompressing device, and data compressing/decompressing apparatus | |
CN112953550A (zh) | 数据压缩的方法、电子设备及存储介质 | |
CN112527754A (zh) | 基于按位变长存储的数值型数据压缩方法及系统 | |
CN105302915B (zh) | 基于内存计算的高性能数据处理系统 | |
CN104156990A (zh) | 一种支持特大型数据窗口的无损压缩编码方法及系统 | |
CN110771161A (zh) | 数码透视法 | |
CN116016606A (zh) | 一种基于智慧云的污水处理运维数据高效管理系统 | |
CN115131449A (zh) | 点云处理方法、装置及计算机设备、存储介质 | |
CN103209328A (zh) | 多源卫星图像实时在线处理技术方法及装置 | |
CN106878714A (zh) | 对视频量化参数解码的方法 | |
CN115882867B (zh) | 一种基于大数据的数据压缩存储方法 | |
Andrzejewski et al. | GPU-PLWAH: GPU-based implementation of the PLWAH algorithm for compressing bitmaps | |
CN110349635A (zh) | 一种基因测序数据质量分数的并行压缩方法 | |
CN102088607A (zh) | 基于jpeg2000标准的mq编码方法和电路 | |
CN104199352B (zh) | 基于fpga的区间编码硬件实现系统 | |
CN115567058A (zh) | 一种结合预测与编码的时序数据有损压缩方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
OL01 | Intention to license declared | ||
OL01 | Intention to license declared |