CN113890540A - 一种并行加速lz77解码方法及装置 - Google Patents
一种并行加速lz77解码方法及装置 Download PDFInfo
- Publication number
- CN113890540A CN113890540A CN202111123970.7A CN202111123970A CN113890540A CN 113890540 A CN113890540 A CN 113890540A CN 202111123970 A CN202111123970 A CN 202111123970A CN 113890540 A CN113890540 A CN 113890540A
- Authority
- CN
- China
- Prior art keywords
- data
- pair
- decoded
- decoder
- distance
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 230000001133 acceleration Effects 0.000 title claims abstract description 33
- 238000007906 compression Methods 0.000 claims abstract description 32
- 230000006835 compression Effects 0.000 claims abstract description 32
- 230000005540 biological transmission Effects 0.000 claims description 10
- 230000006837 decompression Effects 0.000 abstract description 22
- 238000004590 computer program Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 238000013144 data compression Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 241000532784 Thelia <leafhopper> Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请公开了一种并行加速LZ77解码方法及装置,包括:控制LZ77解码器读取多个待解码数据单元,并将多个所述待解码数据单元分别进行组合以得到不同的组合数据对;所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对之间的组合;根据所述组合数据对中所述待解码数据单元的类型控制所述LZ77解码器解码输出相应的目标数据,并通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,以得到解码后数据。本申请同时读取多个待解码数据单元,解决串行拷贝延迟过大的问题,同时增设片上RAM缓存,极大降低对片外内存的访问频率,有效降低访存延迟及访存带宽压力,提高解压缩性能。
Description
技术领域
本发明涉及数据解压缩技术领域,特别涉及一种并行加速LZ77解码方法及装置。
背景技术
在多种数据压缩解压缩算法组合库中,多是根据压缩阶段的不同采用多个压缩算法组合进行压缩以追求更高的压缩率,LZ77算法作为性能与压缩率均衡性较好的压缩算法被广泛采用为基于重复性的压缩阶段的压缩算法。但由于LZ77算法压缩原理的限制,解码过程中会涉及到大量的数据拷贝操作,且由于数据顺序性,即后边的拷贝依赖于拷贝时刻数据指针之前0~MAX_D数据域的所有数据,所有拷贝过程必须严格保持顺序执行。目前,在软件实现中可以通过各种优化手段以及特殊的编程实现加速该串行过程,但本质并未脱离串行顺序执行的低效过程,这也限制了以LZ77压缩算法作为其中一个压缩组件的压缩算法解压缩过程的整体性能。
因此,如何降低LZ77解码过程中大量数据拷贝产生的数据依赖以及提高解码过程的串行效率低下的问题,是本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本发明的目的在于提供一种并行加速LZ77解码方法及装置,同时提供相应的设备及存储介质,能够同时读取多个待解码数据单元,解决串行拷贝延迟过大的问题,同时增设片上RAM缓存,极大降低对片外内存的访问频率,有效降低访存延迟及访存带宽压力,提高解压缩性能。其具体方案如下:
本申请的第一方面提供了一种并行加速LZ77解码方法,包括:
控制LZ77解码器读取多个待解码数据单元,并将多个所述待解码数据单元分别进行组合以得到不同的组合数据对;其中,所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对之间的组合;
根据所述组合数据对中所述待解码数据单元的类型控制所述LZ77解码器解码输出相应的目标数据,并通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,以得到解码后数据。
可选的,所述控制LZ77解码器读取多个待解码数据单元,并将多个所述待解码数据单元分别进行组合以得到不同的组合数据对,包括:
控制LZ77解码器读取两个待解码数据单元以及上个时钟周期输出的目标数据中的距离数据,并将多个所述待解码数据单元以及所述距离数据分别进行组合以得到不同的组合数据对;其中,所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对以及所述距离数据之间的组合。
可选的,所述根据所述组合数据对中所述待解码数据单元的类型控制所述LZ77解码器解码输出相应的目标数据,包括:
当所述组合数据对为(原字符,原字符),则控制所述LZ77解码器解码输出所述组合数据对中每个原字符的低8位比特位;
当所述组合数据对为(原字符,距离数据),则控制所述LZ77解码器解码输出所述组合数据对中原字符的低8位比特位;
当所述组合数据对为距离长度对,则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对;
当所述组合数据对为(距离长度对,原字符),则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对以及原字符的低8位比特位;
当所述组合数据对为(距离长度对,距离数据),则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对。
可选的,当所述组合数据对为(原字符,距离数据)或(距离长度对,距离数据),控制所述LZ77解码器解码输出所述组合数据对中原字符的低8位比特位或所述组合数据对中的距离长度对之后,还包括:
将所述组合数据对中的距离数据输出至下个时钟周期,以便下个时钟周期的所述LZ77解码器读取所述距离数据并将多个所述待解码数据单元以及所述距离数据分别进行组合以得到不同的组合数据对。
可选的,所述通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,包括:
通过数据拷贝模块将解码输出的原字符的低8位比特位写入片上RAM队列尾部;
和/或通过数据拷贝模块从当前片上RAM队列尾部向前偏移解码输出的距离长度对中的长度数据个数据量的位置起读入解码输出的距离长度对中的距离数据个数据,并将该读入数据写入当前片上RAM队列尾部。
可选的,所述通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,以得到解码后数据之后,还包括:
将每个时钟周期中所述片上RAM缓存上的解码后数据通过突发信号的数据传输方式拷贝至片外内存。
可选的,所述将所述片上RAM缓存上的解码后数据通过突发信号的数据传输方式拷贝至片外内存之前,还包括:
判断写入位置是否与从所述片上RAM缓存向片外内存拷贝解码后数据的拷贝位置一致,如果否,则执行将所述片上RAM缓存上的解码后数据通过突发信号的数据传输方式拷贝至片外内存的步骤。
可选的,所述并行加速LZ77解码方法,还包括:
通过设置多路所述LZ77解码器对多个所述待解码数据单元进行解码处理。
本申请的第二方面提供了一种并行加速LZ77解码装置,包括:
数据单元组合模块,用于控制LZ77解码器读取多个待解码数据单元,并将多个所述待解码数据单元分别进行组合以得到不同的组合数据对;其中,所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对之间的组合;
解码输出模块,用于根据所述组合数据对中所述待解码数据单元的类型控制所述LZ77解码器解码输出相应的目标数据,并通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,以得到解码后数据。
可选的,所述并行加速LZ77解码装置还包括流水处理模块,用于控制各个模块之间采用流水线技术进行操作。
本申请的第三方面提供了一种电子设备,所述电子设备包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述并行加速LZ77解码方法。
本申请的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述并行加速LZ77解码方法。
本申请中,先控制LZ77解码器读取多个待解码数据单元,并将多个所述待解码数据单元分别进行组合以得到不同的组合数据对;其中,所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对之间的组合;然后根据所述组合数据对中所述待解码数据单元的类型控制所述LZ77解码器解码输出相应的目标数据,并通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,以得到解码后数据。可见,本申请通过控制LZ77解码器读取多个待解码数据单元,解决串行拷贝延迟过大的问题,然后将多个待解码数据单元分别进行组合以得到包括原字符、距离长度对的不同组合数据对。在此基础上,根据组合数据对中待解码数据单元的类型解码输出相应的目标数据,提高解压缩性能。同时增设片上RAM缓存,通过数据拷贝模块对目标数据进行处理后写入片上RAM缓存,极大降低对片外内存的访问频率,有效降低访存延迟及访存带宽压力。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种并行加速LZ77解码方法流程图;
图2为本申请提供的一种现有的压缩/解压缩过程示意图;
图3为本申请提供的一种长度距离对解码原理示意图;
图4为本申请提供的一种具体的并行加速LZ77解码架构图;
图5为本申请提供的一种具体的并行加速LZ77解码方法流程图;
图6为本申请提供的一种并行加速LZ77解码装置结构示意图;
图7为本申请提供的一种并行加速LZ77解码电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,在软件实现中可以通过各种优化手段以及特殊的编程实现加速该串行过程,但本质并未脱离串行顺序执行的低效过程,这也限制了以LZ77压缩算法作为其中一个压缩组件的压缩算法解压缩过程的整体性能。针对上述技术缺陷,本申请提供一种并行加速LZ77解码方案,通过控制LZ77解码器读取多个待解码数据单元,解决串行拷贝延迟过大的问题,然后将多个待解码数据单元分别进行组合以得到包括原字符、距离长度对的不同组合数据对。在此基础上,根据组合数据对中待解码数据单元的类型解码输出相应的目标数据,提高解压缩性能。同时增设片上RAM缓存,通过数据拷贝模块对目标数据进行处理后写入片上RAM缓存,极大降低对片外内存的访问频率,有效降低访存延迟及访存带宽压力。
图1为本申请实施例提供的一种并行加速LZ77解码方法流程图。参见图1所示,该并行加速LZ77解码方法包括:
S11:控制LZ77解码器读取多个待解码数据单元,并将多个所述待解码数据单元分别进行组合以得到不同的组合数据对;其中,所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对之间的组合。
本实施例中,首先控制LZ77解码器读取多个待解码数据单元,然后将多个所述待解码数据单元分别进行组合以得到不同的组合数据对;其中,所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对之间的组合。不难理解,LZ77算法是由Ziv和Lempel于1977年发表的一种数据压缩算法。LZ77算法包含一个动态窗口和一个预读缓冲器。动态窗口是个历史缓冲区,它被用来存放历史已输入字符串的前n个字节的有关信息。预读缓冲器是被用来存放待输入的m个字节。在历史缓冲区中寻找与待输入的m个字符中的最匹配的字符串,包括所述原字符和所述距离长度对。如果匹配的字符串长度大于最小匹配长度,那么就输出一对〈长度(length),距离(distance)〉数组。长度(length)是匹配的数据长度,而距离(distance)说明了在历史已输入字符串中向后多少字节这个匹配数据可以被找到。为了便于描述,本实施例将所述原字符表示为LITERAL,将所述距离长度对表示为(LEN,D)。
以zlib/gzip压缩解压缩算法为例,采用LZ77+Huffman组合算法实现对数据流的压缩与解压缩,压缩/解压缩的过程如图2所示。本实施例主要关注解压缩过程中“LZ77decompress”阶段,压缩数据经过Huffman解压缩算法解压后为LITERAL原始数据和(LEN,D)长度距离数据对组成的LZ77编码流,输入LZ77解码器后解压缩出原始数据流,其中,LITERAL和(LEN,D)也可以理解为通过LZ77算法压缩得到的数据单元形式。LZ77解码过程可以简单描述为如下过程:以unsigned short类型为单位顺序读入LZ77编码流,若当前数据小于256,则将该数据低8bit截取,作为解码结果写入输出缓存output。若当前数据等于256,则当前LZ77解码过程结束。若当前数据大于256,则代表当前数据以及下一单位数据组成一个(LEN+256,D)数据对,根据读取的LEN和D,从output当前缓冲区位置之前D距离的LEN长度数据作为解码结果写入输出缓存output,如图3所示。
本实施例中,基于上述LZ77解码的实现过程,同时控制LZ77解码器读取以unsigned short类型并行读入两个所述待解码数据单元,实现LZ77解压缩过程的异构并行加速。两个所述待解码数据单元之间的组合结果也即所述组合数据对包括(LITERAL,LITERAL)、(LITERAL,LEN)、(LEN,D)、(D,LITERAL)、(D,LEN)、(LITERAL,END)、(D,END)、(END,*)等情况。
S12:根据所述组合数据对中所述待解码数据单元的类型控制所述LZ77解码器解码输出相应的目标数据,并通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,以得到解码后数据。
本实施例中,根据所述组合数据对中所述待解码数据单元的类型控制所述LZ77解码器解码输出相应的目标数据,并通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,以得到解码后数据。通过在FPGA(Field-Programmable Gate Array,现场可编程门阵列)硬件电路设计上并行进行解码以及数据拷贝的方式,对LZ77解码过程中解码处理一个或多个(LEN,D)数据对与LITERAL混杂的情况。针对多种形式的所述组合数据对,所述LZ77解码器需要进行相应解码处理,具体可以参数步骤S11中的LZ77解码过程。对于LITERAL可以直接截取低8bit解码输出,对于(LEN,D)可以从output当前缓冲区位置之前D距离的LEN长度数据作为解码结果写入输出缓存output,其他情况以此类推。
在此基础上,解码输出的所述目标数据输入到数据拷贝模块执行流水拷贝,如图4所示。数据拷贝模块内设置2^M(>max distance)Byte的片上RAM缓存,所有的拷贝数据皆通过该缓存与片外内存进行数据交互。具体的,将每个时钟周期中所述片上RAM缓存上的解码后数据通过突发信号(burst)的数据传输方式拷贝至片外内存。进一步的,本实施例中可以以循环队列访问的方式,解码模块按需从RAM相应位置取出需要待拷贝的数据,解码输出插入RAM队列尾部,同时从队头开始将RAM数据burst拷贝到片外内存进行存储,同时腾出RAM空间方便存储后续解码数据。本实施例的解码过程数据读入、解码、拷贝、导出等过程完全流水进行,每个过程的执行依赖于前一级数据驱动,无环路数据依赖,将整个解压缩过程处理延迟压缩到单一过程延迟时间。
另外,上述步骤基于一路解码器的设计实现,可以根据片上资源和访存压力情况,复制实现多路非相干数据解码器并行解码,进一步提升LZ77解压缩效率。例如可以通过设置多路所述LZ77解码器对多个所述待解码数据单元进行解码处理。也即根据片上资源以及性能功耗需求,增设多路并行LZ77解压缩过程,解压缩数据间无相关性,线性扩充LZ77解压缩整体吞吐性能。在此基础上,上述解码过程流水进行,也即采用流水线技术并发运行多条指令,从而提高时间效率。所述流水线技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。
可见,本申请实施例先控制LZ77解码器读取多个待解码数据单元,并将多个所述待解码数据单元分别进行组合以得到不同的组合数据对;其中,所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对之间的组合;然后根据所述组合数据对中所述待解码数据单元的类型控制所述LZ77解码器解码输出相应的目标数据,并通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,以得到解码后数据。本申请实施例通过控制LZ77解码器读取多个待解码数据单元,解决串行拷贝延迟过大的问题,然后将多个待解码数据单元分别进行组合以得到包括原字符、距离长度对的不同组合数据对。在此基础上,根据组合数据对中待解码数据单元的类型解码输出相应的目标数据,提高解压缩性能。同时增设片上RAM缓存,通过数据拷贝模块对目标数据进行处理后写入片上RAM缓存,极大降低对片外内存的访问频率,有效降低访存延迟及访存带宽压力。
图5为本申请实施例提供的一种具体的并行加速LZ77解码方法流程图。参见图5所示,该并行加速LZ77解码方法包括:
S21:控制LZ77解码器读取两个待解码数据单元以及上个时钟周期输出的目标数据中的距离数据,并将多个所述待解码数据单元以及所述距离数据分别进行组合以得到不同的组合数据对。
本实施例中,控制LZ77解码器读取两个待解码数据单元以及上个时钟周期输出的目标数据中的距离数据,并将多个所述待解码数据单元以及所述距离数据分别进行组合以得到不同的组合数据对。此时,所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对以及所述距离数据之间的组合。
所述LZ77解码器从输入端读取(LITERAL,LITERAL)、(LITERAL,LEN)、(LEN,D)、(LEN,D,LITERAL)、(LEN,D,LEN)、(LITERAL,END)、(LEN,D,END)、(END,*)等可能的数据单元组合输入,同时所述LZ77解码器会获得前一个时钟周期解码器的遗留输出:一个LEN数据单元。由于LEN数据后必然接一个D数据,该解码单元的输入端读取的数据只可能是(D,LITERAL)、(D,LEN)两种或空数据。此时所述LZ77解码器一次性读入两个所述待解码数据单元,结合上一时钟周期遗留数据,组合成(LITERAL,LITERAL)、(LITERAL,LEN)、(LEN,D)、(LEN,D,LITERAL)、(LEN,D,LEN)、(LITERAL,END)、(LEN,D,END)、(END,*)等数据模式,分别对每种组合形式进行针对性解码处理,将处理后的数据分别发送到数据拷贝模块以及下一时钟周期的解码器。
S22:当所述组合数据对为(原字符,原字符),则控制所述LZ77解码器解码输出所述组合数据对中每个原字符的低8位比特位;当所述组合数据对为(原字符,距离数据),则控制所述LZ77解码器解码输出所述组合数据对中原字符的低8位比特位;当所述组合数据对为距离长度对,则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对;当所述组合数据对为(距离长度对,原字符),则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对以及原字符的低8位比特位;当所述组合数据对为(距离长度对,距离数据),则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对。
本实施例中,当所述组合数据对为(LITERAL,LITERAL),则控制所述LZ77解码器解码输出所述组合数据对中每个原字符的低8位比特位,也即直接将两个数据单元的低8bit截取输出给数据拷贝模块,并向后置解码器输出一个空数据标志,所述后置解码器为下一时钟周期解码器。当所述组合数据对为(LITERAL,LEN),则控制所述LZ77解码器解码输出所述组合数据对中原字符的低8位比特位,也即将LITERAL数据低8bit截取输出给数据拷贝模块,同时将LEN输出给后置解码器。当所述组合数据对为(LEN,D),则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对,也即将(LEN,D)数据对直接输出给数据拷贝模块,并向所述后置解码器输出一个空数据标志。当所述组合数据对为(LEN,D,LITERAL),则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对以及原字符的低8位比特位,也即将(LEN,D)数据对直接输出给数据拷贝模块,将LITERAL数据低8bit截取输出给数据拷贝模块,并向所述后置解码器输出一个空数据标志。当所述组合数据对为(LEN,D,LEN),则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对,也即将(LEN,D)数据对直接输出给数据拷贝模块,并将LEN输出给所述后置解码器。不难理解,对于(LITERAL,END)数据对,将LITERAL数据低8bit截取输出给数据拷贝模块,并广播结束指令;对于(LEN,D,END)数据对,将(LEN,D)数据对直接输出给数据拷贝模块,并广播结束指令;对于(END,*)数据对,则广播结束指令。
S23:通过数据拷贝模块将解码输出的原字符的低8位比特位写入片上RAM队列尾部。
S24:通过数据拷贝模块从当前片上RAM队列尾部向前偏移解码输出的距离长度对中的长度数据个数据量的位置起读入解码输出的距离长度对中的距离数据个数据,并将该读入数据写入当前片上RAM队列尾部。
S25:判断写入位置是否与从所述片上RAM缓存向片外内存拷贝解码后数据的拷贝位置一致,如果否,则将所述片上RAM缓存上的解码后数据通过突发信号的数据传输方式拷贝至片外内存。
本实施例中,针对所述LZ77解码器处理后的LITERAL以及(LEN,D)组合数据,一方面,通过数据拷贝模块将解码输出的原字符的低8位比特位写入片上RAM队列尾部,另一方面,通过数据拷贝模块从当前片上RAM队列尾部向前偏移解码输出的距离长度对中的长度数据个数据量的位置起读入解码输出的距离长度对中的距离数据个数据,并将该读入数据写入当前片上RAM队列尾部。具体的,数据拷贝模块从所述LZ77解码器发送的数据队列中顺序读取数据,对LITERAL数据直接写入所述片上RAM缓存,对(LEN,D)数据,从“当前RAM队列尾部位置-D”位置,循环并行读入LEN长度数据,将读入的数据并行写入RAM队列尾部。
同时,写入过程中需要检查当前写入位置是否等于RAM待向片外内存拷贝位置,如相等则等待向片外内存拷贝数据完毕后继续执行。也即需要判断写入位置是否与从所述片上RAM缓存向片外内存拷贝解码后数据的拷贝位置一致,如果否,则将所述片上RAM缓存上的解码后数据通过突发信号的数据传输方式拷贝至片外内存。需要注意的是,在每个时钟周期,定时按照预设的并行度以burst的方式将RAM缓存中的数据导出到片外内存,若待导出数据长度为0或者小于burst长度,则循环等待。其中,并行度N可根据片上资源以及性能需求灵活设置为大于等于预设输出吞吐/运行频率,在保障不发生数据覆盖的前提下(不覆盖尚未写入片外内存的缓存数据),读入的数据并行写入片上RAM缓存。
可见,本申请实施例针对LZ77解码过程中大量的数据拷贝带来的数据依赖以及解码过程的串行效率低下问题,提出了一种基于FPGA的异构并行LZ77解码方法,对解码过程串行部分进行部分并行处理,降低每个数据拷贝过程之间的处理延迟,同时降低重复的随机访存操作带来的数据访问延迟。
参见图6所示,本申请实施例还相应公开了一种并行加速LZ77解码装置,包括:
数据单元组合模块11,用于控制LZ77解码器读取多个待解码数据单元,并将多个所述待解码数据单元分别进行组合以得到不同的组合数据对;其中,所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对之间的组合;
解码输出模块12,用于根据所述组合数据对中所述待解码数据单元的类型控制所述LZ77解码器解码输出相应的目标数据,并通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,以得到解码后数据。可见,本申请实施例。
在一些具体实施例中,所述数据单元组合模块11,具体用于控制LZ77解码器读取两个待解码数据单元以及上个时钟周期输出的目标数据中的距离数据,并将多个所述待解码数据单元以及所述距离数据分别进行组合以得到不同的组合数据对;其中,所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对以及所述距离数据之间的组合。
在一些具体实施例中,所述解码输出模块12,具体包括:
第一输出单元,用于当所述组合数据对为(原字符,原字符),则控制所述LZ77解码器解码输出所述组合数据对中每个原字符的低8位比特位;
第二输出单元,用于当所述组合数据对为(原字符,距离数据),则控制所述LZ77解码器解码输出所述组合数据对中原字符的低8位比特位;
第三输出单元,用于当所述组合数据对为距离长度对,则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对;
第四输出单元,用于当所述组合数据对为(距离长度对,原字符),则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对以及原字符的低8位比特位;
第五输出单元,用于当所述组合数据对为(距离长度对,距离数据),则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对;
第一写入单元,用于通过数据拷贝模块将解码输出的原字符的低8位比特位写入片上RAM队列尾部;
第二写入单元,用于通过数据拷贝模块从当前片上RAM队列尾部向前偏移解码输出的距离长度对中的长度数据个数据量的位置起读入解码输出的距离长度对中的距离数据个数据,并将该读入数据写入当前片上RAM队列尾部。
在一些具体实施例中,所述并行加速LZ77解码装置还包括:
遗留输出模块,用于在所述第二输出单元或所述第五输出单元之后,将所述组合数据对中的距离数据输出至下个时钟周期,以便下个时钟周期的所述LZ77解码器读取所述距离数据并将多个所述待解码数据单元以及所述距离数据分别进行组合以得到不同的组合数据对;
数据拷贝模块,用于将每个时钟周期中所述片上RAM缓存上的解码后数据通过突发信号的数据传输方式拷贝至片外内存;
流水处理模块,用于控制各个模块之间采用流水线技术进行操作。
进一步的,本申请实施例还提供了一种电子设备。图7是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图7为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的并行加速LZ77解码方法中的相关步骤。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的并行加速LZ77解码方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223可以包括电子设备20收集到的带解码数据单元。
进一步的,本申请实施例还公开了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的并行加速LZ77解码方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的并行加速LZ77解码方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种并行加速LZ77解码方法,其特征在于,包括:
控制LZ77解码器读取多个待解码数据单元,并将多个所述待解码数据单元分别进行组合以得到不同的组合数据对;其中,所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对之间的组合;
根据所述组合数据对中所述待解码数据单元的类型控制所述LZ77解码器解码输出相应的目标数据,并通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,以得到解码后数据。
2.根据权利要求1所述的并行加速LZ77解码方法,其特征在于,所述控制LZ77解码器读取多个待解码数据单元,并将多个所述待解码数据单元分别进行组合以得到不同的组合数据对,包括:
控制LZ77解码器读取两个待解码数据单元以及上个时钟周期输出的目标数据中的距离数据,并将多个所述待解码数据单元以及所述距离数据分别进行组合以得到不同的组合数据对;其中,所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对以及所述距离数据之间的组合。
3.根据权利要求2所述的并行加速LZ77解码方法,其特征在于,所述根据所述组合数据对中所述待解码数据单元的类型控制所述LZ77解码器解码输出相应的目标数据,包括:
当所述组合数据对为(原字符,原字符),则控制所述LZ77解码器解码输出所述组合数据对中每个原字符的低8位比特位;
当所述组合数据对为(原字符,距离数据),则控制所述LZ77解码器解码输出所述组合数据对中原字符的低8位比特位;
当所述组合数据对为距离长度对,则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对;
当所述组合数据对为(距离长度对,原字符),则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对以及原字符的低8位比特位;
当所述组合数据对为(距离长度对,距离数据),则控制所述LZ77解码器解码输出所述组合数据对中的距离长度对。
4.根据权利要求3所述的并行加速LZ77解码方法,其特征在于,当所述组合数据对为(原字符,距离数据)或(距离长度对,距离数据),控制所述LZ77解码器解码输出所述组合数据对中原字符的低8位比特位或所述组合数据对中的距离长度对之后,还包括:
将所述组合数据对中的距离数据输出至下个时钟周期,以便下个时钟周期的所述LZ77解码器读取所述距离数据并将多个所述待解码数据单元以及所述距离数据分别进行组合以得到不同的组合数据对。
5.根据权利要求3所述的并行加速LZ77解码方法,其特征在于,所述通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,包括:
通过数据拷贝模块将解码输出的原字符的低8位比特位写入片上RAM队列尾部;
和/或通过数据拷贝模块从当前片上RAM队列尾部向前偏移解码输出的距离长度对中的长度数据个数据量的位置起读入解码输出的距离长度对中的距离数据个数据,并将该读入数据写入当前片上RAM队列尾部。
6.根据权利要求1至5任一项所述的并行加速LZ77解码方法,其特征在于,所述通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,以得到解码后数据之后,还包括:
将每个时钟周期中所述片上RAM缓存上的解码后数据通过突发信号的数据传输方式拷贝至片外内存。
7.根据权利要求6所述的并行加速LZ77解码方法,其特征在于,所述将所述片上RAM缓存上的解码后数据通过突发信号的数据传输方式拷贝至片外内存之前,还包括:
判断写入位置是否与从所述片上RAM缓存向片外内存拷贝解码后数据的拷贝位置一致,如果否,则执行将所述片上RAM缓存上的解码后数据通过突发信号的数据传输方式拷贝至片外内存的步骤。
8.根据权利要求1所述的并行加速LZ77解码方法,其特征在于,还包括:
通过设置多路所述LZ77解码器对多个所述待解码数据单元进行解码处理。
9.一种并行加速LZ77解码装置,其特征在于,包括:
数据单元组合模块,用于控制LZ77解码器读取多个待解码数据单元,并将多个所述待解码数据单元分别进行组合以得到不同的组合数据对;其中,所述待解码数据单元的类型为通过LZ77算法压缩得到的原字符或距离长度对,所述组合数据对为所述原字符、所述距离长度对之间的组合;
解码输出模块,用于根据所述组合数据对中所述待解码数据单元的类型控制所述LZ77解码器解码输出相应的目标数据,并通过数据拷贝模块对所述目标数据进行处理后写入片上RAM缓存,以得到解码后数据。
10.根据权利要求9所述的并行加速LZ77解码装置,其特征在于,还包括流水处理模块,用于控制各个模块之间采用流水线技术进行操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111123970.7A CN113890540A (zh) | 2021-09-24 | 2021-09-24 | 一种并行加速lz77解码方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111123970.7A CN113890540A (zh) | 2021-09-24 | 2021-09-24 | 一种并行加速lz77解码方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113890540A true CN113890540A (zh) | 2022-01-04 |
Family
ID=79006457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111123970.7A Pending CN113890540A (zh) | 2021-09-24 | 2021-09-24 | 一种并行加速lz77解码方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113890540A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115801019A (zh) * | 2023-02-08 | 2023-03-14 | 广州匠芯创科技有限公司 | 并行加速lz77解码方法及其装置、电子设备 |
-
2021
- 2021-09-24 CN CN202111123970.7A patent/CN113890540A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115801019A (zh) * | 2023-02-08 | 2023-03-14 | 广州匠芯创科技有限公司 | 并行加速lz77解码方法及其装置、电子设备 |
CN115801019B (zh) * | 2023-02-08 | 2023-05-12 | 广州匠芯创科技有限公司 | 并行加速lz77解码方法及其装置、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8520740B2 (en) | Arithmetic decoding acceleration | |
US6903668B1 (en) | Decompression accelerator for flash memory | |
US6819271B2 (en) | Parallel compression and decompression system and method having multiple parallel compression and decompression engines | |
US7215259B2 (en) | Data compression with selective encoding of short matches | |
US5703581A (en) | Method and apparatus for data compression and decompression | |
US9923577B1 (en) | Hybrid software-hardware implementation of lossless data compression and decompression | |
US8125364B2 (en) | Data compression/decompression method | |
US10903852B2 (en) | Computer system supporting multiple encodings with static data support | |
US10891082B2 (en) | Methods for accelerating compression and apparatuses using the same | |
US7590832B2 (en) | Information processing device, compressed program producing method, and information processing system | |
US9088297B2 (en) | High throughput decoding of variable length data symbols | |
CN106849956B (zh) | 压缩方法、解压缩方法、装置和数据处理系统 | |
WO2017053840A1 (en) | Systems, methods, and apparatuses for decompression using hardware and software | |
CN110990358A (zh) | 一种解压缩方法、电子设备及计算机可读存储介质 | |
CN113890540A (zh) | 一种并行加速lz77解码方法及装置 | |
US20220171724A1 (en) | Memory system and information processing system | |
CN111279617A (zh) | 数据解压缩的装置与方法 | |
US8018359B2 (en) | Conversion of bit lengths into codes | |
KR101030726B1 (ko) | 확률적 테이블에 의해 생성된 심볼을 기반으로 호프만 테이블을 적용한 메모리 효율이 개선된 멀티미디어용 호프만 디코딩 방법 및 장치 | |
CN114070470A (zh) | 编解码方法及装置 | |
CN114282141A (zh) | 压缩格式数据的处理方法、装置、电子设备及可读存储介质 | |
CN110856195B (zh) | 射频组件的配置系统及方法 | |
US9219496B1 (en) | Efficient lossless data compression system, data compressor, and method therefor | |
US10491241B1 (en) | Data compression scheme utilizing a repetitive value within the data stream | |
US8823557B1 (en) | Random extraction from compressed data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |