WO2020025006A1 - 数据压缩、解压方法及相关装置、电子设备、系统 - Google Patents
数据压缩、解压方法及相关装置、电子设备、系统 Download PDFInfo
- Publication number
- WO2020025006A1 WO2020025006A1 PCT/CN2019/098758 CN2019098758W WO2020025006A1 WO 2020025006 A1 WO2020025006 A1 WO 2020025006A1 CN 2019098758 W CN2019098758 W CN 2019098758W WO 2020025006 A1 WO2020025006 A1 WO 2020025006A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data block
- compressed
- data
- decompression
- compression
- Prior art date
Links
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/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- 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
-
- 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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- 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/55—Compression Theory, e.g. compression of random number, repeated compression
-
- 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/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
-
- 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/60—General implementation details not specific to a particular type of compression
- H03M7/6011—Encoder aspects
-
- 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/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6023—Parallelization
Abstract
本申请实施例公开了一种数据压缩、解压方法及相关装置、电子设备、系统,该数据压缩方法基于压缩算法对原始数据中的原始数据块进行处理以得到与原始数据块对应的长度为L2的规范压缩数据块,进而将原始数据压缩成供解压装置并行解压的一个或多个长度为L2的规范压缩数据块,其中,解压装置包括多个解压引擎,每个解压引擎在一个处理周期内能够对一个规范压缩数据块进行解压。通过执行本发明实施例的数据压缩方法可以压缩成长度为固定值的规范压缩数据块,使得各个解压引擎在解压该多个规范压缩数据块时可以同步解压,提高数据的解压效率。
Description
本申请要求于2018年07月31日提交中国国家知识产权局、申请号为201810859928.3、申请名称为“数据压缩、解压方法及相关装置、电子设备、系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本发明涉及数据压缩技术领域,尤其涉及一种数据压缩、解压方法及相关装置、电子设备、系统。
对于数据量较大的运算,例如,视频、图像处理或者机器学习等运算通常使用硬件芯片进行加速。在硬件芯片进行数据处理的过程中往往需要从外部存储器实时导入大量的数据。例如,机器学习的硬件加速是一种通过硬件芯片来执行机器学习算法而实现计算加速的技术。在运行机器学习算法时,往往需要大量参数。这些参数无法完全保存在硬件芯片内部,因此在机器学习算法运行时,需要从外部实时导入大量参数。由于实时导入大量参数占用芯片的输入/输出(Input/Output,I/O)带宽,当I/O带宽不足时,导致硬件芯片的计算能力空置,降低机器学习算法的运行速度。
通过对外部参数的离线压缩来减小外部参数的体积,并在硬件芯片内通过解压引擎进行实时在线解压还原出外部参数,可以实现在相同的I/O带宽下传输更多的外部参数。然而,解压引擎所能到达的解压速率有限,同样限制了机器学习算法的运行速度。
目前,提高硬件芯片解压速率的常用方法为多引擎并行解压。如图1所示的现有技术中多解压引擎解压的原理示意图。在电子设备对一个待压缩文件进行压缩时,将待压缩文件拆分为等长的多个原始数据块,对该多个原始数据块分别进行压缩生成与各个原始数据块一一对应的压缩数据块;在解压时,首先获取多个压缩数据块,将该多个压缩数据块分配到多个解压引擎中,多个解压引擎还原出多个原始数据块,再将多个原始数据块拼接成原始文件(即待压缩文件)。
可见,现有技术中由于各个原始数据块的压缩率不同,得到的各个压缩数据块的长度不同,使得各个解压引擎分别对各个压缩数据块进行解压所需要的时间不同,解压装置在最后一个压缩数据块完成解压时,才能将各个解压引擎还原出的原始数据块拼接出需要的数据,解压效率低。
发明内容
本发明实施例所要解决的技术问题在于,提供一种数据压缩方法、数据解压方法及相关装置、电子设备、系统,通过规范原始数据的压缩过程,生成的规范压缩数据块,使得各个解压引擎在解压该多个规范压缩数据块时可以同步解压,提高数据的解压效率。
第一方面,本发明实施例提供了一种数据压缩方法,可以应用于包第一电子设备或压 缩装置,用于将原始数据压缩成供解压装置并行解压的一个或多个长度为L2的规范压缩数据块,其中,解压装置包括多个解压引擎,每个解压引擎在一个处理周期内能够对一个所述规范压缩数据块进行解压,所述L2为大于1的整数,该方法包括:执行一次或者多次原始数据块压缩,其中,原始数据块压缩包括:基于压缩算法对原始数据块进行处理以得到与原始数据块对应的规范压缩数据块,其中,原始数据块为所述原始数据中包括的数据。
通过执行本发明实施例的数据压缩方法可以压缩成长度为固定值的规范压缩数据块,使得各个解压引擎在解压该多个规范压缩数据块时可以同步解压,提高数据的解压效率。
在本申请实施例的一种实现中,第一电子设备或压缩装置基于压缩算法对原始数据块进行处理以得到与原始数据块对应的规范压缩数据块的一种实现可以包括:解压装置对原始数据块通过压缩算法进行独立压缩,得到与原始数据块对应的压缩数据块,该压缩数据块的长度d不大于所述L2;进而,在该压缩数据块之后添加长度为L2-d的附加数据,从而生成长度为L2的规范压缩数据块,d为大于0的整数。
在本申请实施例的另一种实现中,压缩装置或第一电子设备的处理器将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到该S个原始数据块一一对应的S个压缩数据块,该S个原始数据块中每一个原始数据块为所述原始数据中连续的多个数据,所述连续的多个数据的长度不大于L1,该S个压缩数据块中的每一个压缩数据块的长度d不大于L2,S为正整数;进而,在该S个压缩数据块中的每一个压缩数据块之后添加长度为L2-d的附加数据,生成S个长度为L2的规范压缩数据块,其中,该长度为L2的规范数据块为解压装置中的单个解压引擎能够在一个处理周期内处理完的数据块,L1以及L2为大于1的整数,d为大于0的整数,L1大于所述L2。可以理解,该数据压缩方法的执行主体可以是第一电子设备或压缩装置,下面以执行主体压缩装置为例来说明。
通过执行上述方法,在对原始数据进行压缩时,生成的S个规范压缩数据块长度为固定值L2,且生成该规范压缩数据块的原始数据块的长度不大于L1,规范了原始数据压缩生成的压缩数据块的长度,并且,各个规范压缩数据块为独立压缩的,进而可独立解压,使得各个解压引擎在解压该多个规范压缩数据块时可以同步解压,都可以在一个处理周期内完成对特定长度数据的处理,不需要等待解压最慢的一个解压引擎的输出,从而解决了木桶原理(Cannikin Law)中的“短板”的问题,提高数据的解压效率。而且,相对于压缩成变长的压缩数据块,本申请设置成固定长度L2的规范压缩数据块,压缩端不需要记录各个压缩数据块的长度,解压端也不需要记录获取到的数据长度,使得解压端的设计更加简单。
进一步地,现有技术中,原始数据划分的原始数据块的个数等于解压引擎的个数,即解压引擎的个数限制了原始数据可划分的粒度,使得原始数据所压缩形成的多个压缩数据块的长度较大。当对随机地址的数据进行访问时,需要将该随机地址的数据所在的压缩数据块进行解压。在解压的过程中,由于压缩数据块中数据的关联性,该压缩数据块只能在一个解压引擎进行解压,无法实现压缩数据的倍速解压。执行上述方法所述的技术方案,原始数据可划分的粒度与解压引擎的个数无关,原始数据可以被压缩为大量较小的规范压缩数据块,各个规范压缩数据块之间不存在关联性,当对随机地址的数据进行访问时,将该随机地址的数据所在的多个连续的规范压缩数据块输入到多个解压引擎中进行解压,可 实现对随机地址的压缩数据的倍速解压。
在一种可能的实现方式中,第一原始数据块为所述S个原始数据块中的任意一个原始数据块,其中,在第一原始数据块的长度等于L1时,该第一原始数据块压缩得到的规范数据块中的附加数据为合法码字或该附加数据包括无效标志和无效数据。在第一原始数据块的长度小于L1时,该附加数据包括无效标志和无效数据。其中,无效标志用于指示该无效标志所在的附加数据需要弃掉;无效数据在该无效标志后面,可以包括大于等于0位数据。通过上述各种方式设置无效数据或者无效标志,可以让解压引擎停止解压,从而在得到正确的数据的同时,还能够减少解压操作,从而降低解压功耗。
可选地,当一个处理周期包括多个时钟周期的情况下,上述该第一原始数据块压缩得到的规范压缩数据块中的附加数据包括无效标志和无效数据。其中,无效标志用于指示该无效标志所在的附加数据需要弃掉;无效数据在该无效标志后面,可以包括大于等于0位数据。
在又一种可能的实现方式中,压缩装置对原始数据块通过压缩算法进行独立压缩,得到与原始数据块对应的压缩数据块的一种实现方式可以包括如下步骤:S1、从原始数据中获取一个待压缩的数据组,数据组包括一个或多个比特的数据;S2、判断是否需要对该待压缩的数据组进行压缩,如果需要进行压缩,则执行S3,否则执行S4;S3、压缩该待压缩的数据块组,压缩完成后执行所述S1;S4、将当前已经压缩得到的数据作为压缩数据块;其中,判断是否需要对该待压缩的数据组进行压缩的一种实现方式可以包括:若已被压缩的一个或多个数据组的总长度x与该待压缩的数据组的长度Δx之和不大于L1且在该待压缩的数据组被压缩后生成的压缩数据块长度不大于L2,则确定需要进行压缩;若x与Δx之和不大于L1且在该待压缩的数据组被压缩后生成的压缩数据块长度大于L2,则确定不需要进行压缩;若x与Δx之和大于L1,则确定不需要进行压缩。
通过上述方法,可以实现对数据块的压缩,具有实现简单,效率高的优点。
在又一种可能的实现方式中,压缩装置对原始数据块通过压缩算法进行独立压缩,得到与原始数据块对应的压缩数据块的另一实现方式可以是:压缩装置将原始数据中长度为L1的数据块以数据组为步长进行压缩,得到临时压缩数据块;在该临时压缩数据块的长度大于L2时,将该长度为L1的数据块在去除尾部的i个数据组后得到的数据块作为原始数据块,并将原始数据块压缩得到的数据作为压缩数据块,其中,所述压缩数据块的长度不大于所述L2,i为正整数,且i<L1;在该临时压缩数据块的长度不大于L2时,将该长度为L1的数据块即为原始数据块,该临时压缩数据块即为压缩数据块。上述方法给出了另一种具体的实现方式,同时具有实现简单,压缩效率高的优点。
可选地,i为使得压缩数据块不大于所述L2的最小正整数。i越小,表明压缩的数据更多,从而可以增加压缩效率。
在又一种可能的实现方式中,L1为单个解压引擎的出口位宽;L2为单个解压引擎的入口位宽。这样,可以尽可能地利用现有的硬件资源来提升每次压缩的数据量,从而增加压缩效率。
第二方面,本申请实施例还提供了一种压缩装置,包括:用于将原始数据压缩成供解 压装置并行解压的一个或多个长度为L2的规范压缩数据块,其中,所述解压装置包括多个解压引擎,每个所述解压引擎在一个处理周期内能够对一个所述规范压缩数据块进行解压,所述L2为大于1的整数,包括:处理模块,用于基于压缩算法对原始数据块进行处理以得到与所述原始数据块对应的所述规范压缩数据块,其中,所述原始数据块为所述原始数据中包括的数据。
在一种可能的实现中,所述处理模块包括:
压缩单元,用于对所述原始数据块通过压缩算法进行独立压缩,得到与所述原始数据块对应的压缩数据块,所述压缩数据块的长度d不大于所述L2;
规范单元,用于在所述压缩数据块之后添加长度为L2-d的附加数据,从而生成长度为所述L2的所述规范压缩数据块,所述d为大于0的整数。
可选地,所述原始数据块包括所述原始数据中连续的多个数据,所述原始数据块的长度不大于L1,L1为所述解压引擎的出口位宽。
在一种可能的实现中,所述处理模块可以包括:
压缩单元,用于将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到所述S个原始数据块一一对应的S个压缩数据块,所述S个原始数据块中每一个原始数据块为所述原始数据中连续的多个数据,所述连续的多个数据的长度不大于L1,所述S个压缩数据块中的每一个压缩数据块的长度d不大于L2,S为正整数;
规范单元,用于在所述S个压缩数据块中的每一个压缩数据块之后添加长度为L2-d的附加数据,生成S个长度为L2的规范压缩数据块,其中,所述长度为L2的规范数据块为解压装置中的单个解压引擎能够在一个处理周期内解压完成的数据块,所述L1以及所述L2为大于1的整数,所述d为大于0的整数,所述L1大于所述L2。
在一种可能的实现方式中,在原始数据块的长度等于L1时,该原始数据块压缩得到的规范数据块中的附加数据为合法码字;或该附加数据包括无效标志以及无效数据,其中,无效标志用于指示所述附加数据需要弃掉;或,
在原始数据块的长度小于L1时,该附加数据包括无效标志以及无效数据,其中,无效标志用于指示所述附加数据需要弃掉。
在又一种可能的实现方式中,所述压缩单元具体包括用于执行如下步骤:
S1、从所述原始数据中获取一个待压缩的数据组,所述数据组包括一个或多个比特的数据;
S2、判断是否需要对所述待压缩的数据组进行压缩,如果需要进行压缩,则执行S3,否则执行S4;
S3、压缩所述待压缩的数据块组,压缩完成后执行所述S1;
S4、将当前已经压缩得到的数据作为所述压缩数据块;
其中,所述判断是否需要对所述待压缩的数据组进行压缩包括:若已被压缩的一个或多个数据组的总长度x与所述待压缩的数据组的长度Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度不大于L2,则确定需要进行压缩;若所述x与所述Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度大于 L2,则确定不需要进行压缩;若所述x与所述Δx之和大于所述L1,则确定不需要进行压缩。
在又一种可能的实现方式中,所述压缩单元具体包括用于执行如下步骤:
将原始数据中长度为L1的数据块以数据组为步长进行压缩,得到临时压缩数据块;
在所述临时压缩数据块的长度大于L2时,将所述长度为L1的数据块在去除尾部的i个数据组后得到的数据块作为所述原始数据块,并将所述原始数据块压缩得到的数据作为所述压缩数据块,其中,所述压缩数据块的长度不大于所述L2,i为正整数,且i<L1;
在所述临时压缩数据块的长度不大于所述L2时,将所述长度为L1的数据块作为所述原始数据块,将所述临时压缩数据块作为所述压缩数据块。
可选地,所述i为使得所述压缩数据块不大于所述L2的最小正整数。
在又一种可能的实现方式中,所述L1为单个解压引擎的出口位宽;和/或所述L2为单个解压引擎的入口位宽。
第三方面,本申请实施例还提供了一种压缩装置,包括:处理器和存储器,其中,所述存储器用于存储数据和程序指令,当所述处理器调用所述存储器存储数据和程序指令,使得压缩装置实现如第一方面所述的任意一种数据压缩方法。
第四方面,本申请实施例还提供了一种具有压缩功能的电子设备,具体为本申请实施例中第一电子设备,该电子设备包括压缩装置和处理装置,该压缩装置可以是如第二方面或第三方面所述的任意一种压缩装置;所述处理装置用于向所述压缩装置发送前文所述的原始数据。
第五方面,本申请实施例还提供了一种计算机存储介质,所述计算机存储介质用于存储计算机软件指令,所述计算机软件指令当被计算机执行时使所述计算机实现如第一方面所述的任意一种数据压缩方法。
第六方面,本申请实施例还提供了一种计算机程序,所述计算机程序包括计算机软件指令,所述计算机软件指令当被计算机执行时使所述计算机实现如第一方面所述的任意一种数据压缩方法。
第七方面,本申请实施例还提供了一种解压装置,包括:第一存储器、M个解压引擎和第二存储器,其中,所述第一存储器用于存储多个规范压缩数据块(例如N个规范压缩数据块),其中,一个所述规范压缩数据块为对原始数据块进行独立压缩后生成的长度为L2的数据块,一个所述规范压缩数据块能够被单个所述解压引擎在一个处理周期内解压完成,M为大于1的整数,M、N为正整数,M≥N;所述M个解压引擎用于对所述第一存储器存储的规范压缩数据块进行并行解压,一个所述解压引擎用于解压一个所述规范压缩数据块,例如,M个解压引擎中包括N个解压引擎,N个解压引擎中的每一个解压引擎用于获取所述N个规范压缩数据块中的一个规范压缩数据块,并对获取到的规范压缩数据块 进行解压,得到与所述N个规范压缩数据块一一对应的N个原始数据块
所述第二存储器用于存储所述规范压缩数据块被解压得到的原始数据块,例如N个原始数据块,所述规范压缩数据块与所述原始数据块一一对应。
可选地,所述原始数据块的长度不大于L1,所述解压引擎的出口位宽为所述L1。
上述实施例提供的解压装置,多个规范压缩数据块分别通过多个解压引擎进行并行解压,使得各个解压引擎在解压该多个规范压缩数据块时可以并行解压,提高数据的解压效率。而且,相对于压缩成变长的压缩数据块,本申请设置成固定长度L2的规范压缩数据块,压缩端不需要记录各个压缩数据块的长度,解压端也不需要记录获取到的数据长度,使得解压端的设计更加简单。
进一步地,现有技术中,原始数据划分的原始数据块的个数等于解压引擎的个数,即解压引擎的个数限制了原始数据可划分的粒度,使得原始数据所压缩形成的多个压缩数据块的长度较大。当对随机地址的数据进行访问时,需要将该随机地址的数据所在的压缩数据块进行解压。在解压的过程中,由于压缩数据块中数据的关联性,该压缩数据块只能在一个解压引擎进行解压,无法实现压缩数据的倍速解压。通过上述解压装置,原始数据可划分的粒度与解压引擎的个数无关,原始数据可以被压缩为大量较小规范压缩数据块,当对随机地址的数据进行访问时,将该随机地址的数据所在的多个连续的规范压缩数据块输入到多个解压引擎中进行解压,可实现对随机地址的压缩数据的倍速解压。
在一种可能的实现方式中,所述解压装置还包括拼接电路,所述拼接电路用于将第二储存器中存储的原始数据块进行拼接,得到原始数据。这样,可以完成对原始数据的解压,并给后续的处理电路进行处理,保证了数据的不丢失。
在一个实施例中,解压装置还可以包括长度计数器,用于对解压出来的数据的长度进行记录,这样,拼接电路就可以根据长度计数器中的数值来获取特定长度的数据进行拼接。
在又一种可能的实现方式中,所述M个解压引擎中的每一个解压引擎还用于:在解压得到的原始数据块的长度等于所述L1时或在识别到无效标志时,停止解压操作。通过识别无效标志来停止解压,在保证得到正确的数据的前提下,可以节省解压操作,减少功耗。
在又一种可能的实现方式中,所述解压装置还包括控制电路,用于:在第一解压引擎解压得到的原始数据块的长度等于所述L1的情况下,停止所述第一解压引擎的解压操作,所述第一解压引擎为所述M个解压引擎中的任意一个解压引擎。通过判断得到了需要长度的数据(L1)后停止解压,在保证得到正确的数据的前提下,可以节省解压操作,减少功耗。
在又一种可能的实现方式中,所述第二存储器包括分别与所述M个解压引擎一一对应的M个存储子单元,所述第一存储子单元用于存储所述第一存储子单元对应的解压引擎所解压得到的原始数据块,第一存储子单元为所述M个存储子单元中的任意一个存储子单元。
其中,解压引擎、各个电路(如控制电路、拼接电路)可以基于硬件电路(如FPGA、ASIC)实现的,这样,可以增加处理速率,从而提升解压速度。
第八方面,本申请实施例还提供了一种集成电路,包括:如第七方面所述的任意一种解压装置。
可选地,该集成电路还可以包括耦合于所述解压装置的运算装置,所述运算装置用于根据所述解压装置解压得到的原始数据进行数据处理。
第九方面,本申请实施例还提供了一种数据解压方法,应用于解压装置,所述解压装置包括M个解压引擎,M为正整数,该方法包括:解压装置获取N个规范压缩数据块,其中,所述N个规范压缩数据块中任意一个规范压缩数据块为对原始数据块进行独立压缩后生成的长度为L2的数据块,该长度为L2规范压缩数据块为单个解压引擎能够在一个处理周期内解压完成的数据块,N为正整数,M≥N;通过N个解压引擎分别对所述N个规范压缩数据块进行解压,得到与所述N个规范压缩数据块一一对应N个原始数据块;将所述N个原始数据块进行拼接,得到原始数据,其中,所述L1以及所述L2为大于1的整数,所述L1大于所述L2。
通过执行上述方法,N个长度为L2的规范压缩数据块分别通过N个解压引擎进行同步解压,使得各个解压引擎在解压该多个规范压缩数据块时可以同步解压,提高数据的解压效率。
而且,相对于压缩成变长的压缩数据块,本申请设置成固定长度L2的规范压缩数据块,压缩端不需要记录各个压缩数据块的长度,解压端也不需要记录获取到的数据长度,使得解压端的设计更加简单。
进一步地,现有技术中,原始数据划分的原始数据块的个数等于解压引擎的个数,即解压引擎的个数限制了原始数据可划分的粒度,使得原始数据所压缩形成的多个压缩数据块的长度较大。当对随机地址的数据进行访问时,需要将该随机地址的数据所在的压缩数据块进行解压。在解压的过程中,由于压缩数据块中数据的关联性,该压缩数据块只能在一个解压引擎进行解压,无法实现压缩数据的倍速解压。执行上述方法所述的技术方案,原始数据可划分的粒度与解压引擎的个数无关,原始数据可以被压缩为大量较小规范压缩数据块,当对随机地址的数据进行访问时,将该随机地址的数据所在的多个连续的规范压缩数据块输入到多个解压引擎中进行解压,可实现对随机地址的压缩数据的倍速解压。
在一种可能的实现方式中,所述N个解压引擎包括所述解压引擎k,所述N个压缩数据块包括压缩数据块k,所述N个原始数据块包括所述压缩数据块k解压得到的原始数据块k,k为正整数,k不大于N;所述通过N个解压引擎分别对所述N个规范压缩数据块进行解压,得到所述N个压缩数据块一一对应N个原始数据块,具体包括:
通过所述解压引擎k对于所述压缩数据块k进行解压;
在所述解压引擎k解压得到的原始数据块k的长度等于所述L1时,停止所述解压引擎k对所述压缩数据块k的解压操作,输出所述原始数据块k;或,在所述解压引擎k识别到无效标志时,停止所述解压引擎k对所述压缩数据块k的解压操作,输出解压得到的所述原始数据块k。
第十方面,本申请实施例还提供了一种具有解压功能的电子设备,具体可以是本申请实施例中第二电子设备,可以包括处理器、耦合该处理器的存储器和解压装置,其中该解压装置为如第七方面所述的任意一种解压装置,处理器用于调用所述存储器存储的数据和 指令实现所述第二电子设备的功能。
第十一方面,本申请实施例还提供了一种压缩解压系统,该系统包括压缩装置为第二方面或第三方面所述的任意一种压缩装置,所述解压装置为如第七方面所述的任意一种解压装置。
第十二方面,本申请实施例还提供了一种压缩解压系统,包括第一电子设备和第二电子设备,所述第一电子设备为如第四方面所述的具有压缩功能的电子设备,所述第二电子设备为如第十方面所述的具有解压功能的电子设备。
第十三方面,本申请实施例还提供了一种数据压缩方法,包括:
将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到所述S个原始数据块一一对应的S个压缩数据块,所述S个原始数据块中每一个原始数据块为所述原始数据中连续的多个数据,所述连续的多个数据的长度不大于L1,所述S个压缩数据块中的每一个压缩数据块的长度d不大于L2,S为正整数,长度为L2的压缩数据块为单个解压引擎能够在一个处理周期内处理完的数据块,所述L1以及所述L2为大于1的整数,所述d为大于0的整数,所述L1大于L2;
记录所述S个压缩数据块中每一个压缩数据块的长度。
上述数据压缩方法可以应用于压缩装置或具有压缩功能的第三电子设备,此处以压缩装置为例来说明。
与第一方面所述的数据压缩方法不同的是,第一方面所述数据压缩方法最终得到规范压缩数据块,其长度固定为L2,通过在压缩原始数据块得到的压缩数据块之后增加附加数据来实现。上述实施例中,压缩原始数据块得到的压缩数据块即为最终得到的压缩的数据块,其长度可变,压缩设备需要记录该各个压缩数据块的长度,以使解压设备可以对不同长度的压缩数据块进行区分。
同第一方面,通过执行上述方法,在对原始数据进行压缩时,生成的S个压缩数据块长度小于L2,使得各个解压引擎在分别解压第一压缩数据块都可以在一个处理周期内完成,进而实现各个解压引擎的同步解压,提高数据的解压效率。
进一步地,现有技术中,原始数据划分的原始数据块的个数等于解压引擎的个数,即解压引擎的个数限制了原始数据可划分的粒度,使得原始数据所压缩形成的多个压缩数据块的长度较大。当对随机地址的数据进行访问时,需要将该随机地址的数据所在的压缩数据块进行解压。在解压的过程中,由于压缩数据块中数据的关联性,该压缩数据块只能在一个解压引擎进行解压,无法实现压缩数据的倍速解压。执行上述方法所述的技术方案,原始数据可划分的粒度与解压引擎的个数无关,原始数据可以被压缩为大量较小压缩数据块,当对随机地址的数据进行访问时,将该随机地址的数据所在的多个连续的规范压缩数据块输入到多个解压引擎中进行解压,可实现对随机地址的压缩数据的倍速解压。
在一种可能的实现方式中,第一原始数据块为所述S个原始数据块中的任意一个原始数据块,第一压缩数据块为与所述S个压缩数据块中与所述第一原始数据块对应的压缩数 据块,压缩装置将第一原始数据块通过压缩算法进行独立压缩,得到第一压缩数据块的一种实现方式可以包括:
S1、获取一个待压缩的数据组;
S2、判断是否需要对所述待压缩的数据组进行压缩,如果需要进行压缩,则执行S3,否则执行S4;
S3、压缩所述待压缩的数据块组,压缩完成后执行所述S1;
S4、将当前已经压缩得到的数据作为作为所述第一压缩数据块;
其中,所述判断是否需要对所述待压缩的数据组进行压缩包括:若已被压缩的一个或多个数据组的总长度x与所述待压缩的数据组的长度Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度不大于所述L2,则确定需要进行压缩;若所述x与所述Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度大于所述L2,则确定不需要进行压缩;若所述x与所述Δx之和大于所述L1,则确定不需要进行压缩。
在又一种可能的实现方式中,第一原始数据块为所述S个原始数据块中的任意一个原始数据块,第一压缩数据块为与所述S个压缩数据块中与所述第一原始数据块对应的压缩数据块,压缩装置将原始数据中第一原始数据块通过压缩算法进行独立压缩,得到第一压缩数据块的另一实现方式可以是:
压缩装置将原始数据中长度为L1的数据块以数据组为步长进行压缩,得到临时压缩数据块;
在所述临时压缩数据块的长度大于所述L2时,将所述长度为L1的数据块在去除尾部的i个数据组后得到的数据块作为所述第一原始数据块,并将所述第一原始数据块压缩得到的数据作为所述第一压缩数据块,其中,所述第一压缩数据块的长度不大于所述L2,i为正整数,且i<L1;
在所述临时压缩数据块的长度不大于所述L2时,将所述长度为L1的数据块作为所述第一原始数据块,将所述临时压缩数据块作为所述第一压缩数据块。
可选地,所述i为使得所述第一压缩数据块不大于所述L2的最小正整数。
在一种可能的实现方式中,第三电子设备或压缩装置记录第一压缩数据块的长度的一种实施方式可以是:
压缩装置将第一压缩数据块的长度d记录在第一压缩数据块的起始字段内,该起始字段为从第一压缩数据块起始位开始且长度为第三长度阈值的字段内;或者,
将第一压缩数据块的长度d写入第一文件;该第一文件包括第二压缩设备依次压缩原始数据得到的S个压缩数据块分别对应的长度。
第十四方面,本申请实施例还提供了一种压缩装置,包括:
压缩单元,用于将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到所述S个原始数据块一一对应的S个压缩数据块,所述S个原始数据块中每一个原始数据块为所述原始数据中连续的多个数据,所述连续的多个数据的长度不大于L1,所述S个压缩数据块中的每一个压缩数据块的长度d不大于L2,S为正 整数,长度为L2的压缩数据块为单个解压引擎能够在一个处理周期内处理完的数据块,所述L1以及所述L2为大于1的整数,所述d为大于0的整数,所述L1大于L2;
记录单元,用于记录所述S个压缩数据块中每一个压缩数据块的长度。
在一种可能的实现方式中,第一原始数据块为所述S个原始数据块中的任意一个原始数据块,第一压缩数据块为与所述S个压缩数据块中与所述第一原始数据块对应的压缩数据块,所述压缩单元包括用于执行:
S1、获取一个待压缩的数据组;
S2、判断是否需要对所述待压缩的数据组进行压缩,如果需要进行压缩,则执行S3,否则执行S4;
S3、压缩所述待压缩的数据块组,压缩完成后执行所述S1;
S4、将当前已经压缩得到的数据作为作为所述第一压缩数据块;
其中,所述判断是否需要对所述待压缩的数据组进行压缩包括:若已被压缩的一个或多个数据组的总长度x与所述待压缩的数据组的长度Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度不大于所述L2,则确定需要进行压缩;若所述x与所述Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度大于所述L2,则确定不需要进行压缩;若所述x与所述Δx之和大于所述L1,则确定不需要进行压缩。
在又一种可能的实现方式中,第一原始数据块为所述S个原始数据块中的任意一个原始数据块,第一压缩数据块为与所述S个压缩数据块中与所述第一原始数据块对应的压缩数据块,所述压缩单元包括具体用于:
将原始数据中长度为L1的数据块以数据组为步长进行压缩,得到临时压缩数据块;
在所述临时压缩数据块的长度大于所述L2时,将所述长度为L1的数据块在去除尾部的i个数据组后得到的数据块作为所述第一原始数据块,并将所述第一原始数据块压缩得到的数据作为所述第一压缩数据块,其中,所述第一压缩数据块的长度不大于所述L2,i为正整数,且i<L1;
在所述临时压缩数据块的长度不大于所述L2时,将所述长度为L1的数据块作为所述第一原始数据块,将所述临时压缩数据块作为所述第一压缩数据块。
可选地,所述i为使得所述第一压缩数据块不大于所述L2的最小正整数。
在一种可能的实现方式中,记录单元具体用于:
将第一压缩数据块的长度d记录在第一压缩数据块的起始字段内,该起始字段为从第一压缩数据块起始位开始且长度为长度第三长度阈值的字段内;或者,
记录将第一压缩数据块的长度d写入第一文件;该第一文件包括第二压缩设备依次压缩原始数据得到的多个第一压缩数据块分别对应的长度。
第十五方面,本申请实施例还提供了一种压缩装置,包括:处理器和存储器,其中,所述存储器用于存储数据和程序指令,所述处理器调用所述存储器存储数据和程序指令,执行如第十三方面所述的数据压缩方法。
第十六方面,本申请实施例还提供了一种具有压缩功能的电子设备,具体可以是本申请实施例中的第三电子设备,包括:如第十四方面或第十五方面所述的任意一种压缩装置。
第十七方面,本申请实施例还提供了一种计算机存储介质,所述计算机存储介质用于存储计算机软件指令,所述计算机软件指令当被计算机执行时使所述计算机实现如第十三方面所述的任意一种数据压缩方法。
第十八方面,本申请实施例还提供了一种计算机程序,所述计算机程序包括计算机软件指令,所述计算机软件指令当被计算机执行时使所述计算机实现如第十三方面所述的任意一种数据压缩方法。
第十九方面,本申请实施例还提供了一种数据解压方法,应用于解压装置,该解压装置包括M个解压引擎,该方法包括:
获取压缩数据,所述压缩数据包括N个压缩数据块以及所述N个压缩数据块中每一个压缩数据块的长度,N为正整数;其中,所述N个压缩数据块中任意一个压缩数据块为独立压缩的长度为不大于L2的数据块,N为正整数,M≥N;
根据所述N个压缩数据块中每一个压缩数据块的长度,将所述压缩数据拆分出N个压缩数据块;
通过N个解压引擎分别对所述N个规范压缩数据块进行解压,得到与所述N个压缩数据块一一对应N个原始数据块;
将所述N个原始数据块进行拼接,得到原始数据。
第二十方面,本申请实施例还提供了一种解压装置,包括控制器和M个解压引擎,所述控制器包括获取单元,拆分单元、数据分发单元以及拼接单元,其中:
所述获取单元用于:获取压缩数据,所述压缩数据包括N个压缩数据块以及所述N个压缩数据块中每一个压缩数据块的长度,N为正整数;其中,所述N个压缩数据块中任意一个压缩数据块为独立压缩的长度为不大于L2的数据块,N为正整数,长度为L2的压缩数据块为单个解压引擎能够在一个处理周期内处理完的数据块;
所述拆分单元用于:根据所述N个压缩数据块中每一个压缩数据块的长度,将所述压缩数据拆分出N个压缩数据块,
所述数据分发单元用于:将所述N个压缩数据块分发给所述M个解压引擎中N个解压引擎,以使所述N个解压引擎分别对所述N个压缩数据块进行解压,得到与N个压缩数据块一一对应N个原始数据块,其中,所述N个原始数据块中任意一个原始数据块的长度不大于L1,所述L1以及所述L2为大于1的整数,所述L1大于L2;
所述拼接单元用于:将所述N个原始数据块进行拼接,得到原始数据。
第二十一方面,本申请实施例还提供了一种解压装置,该解压装置包括:控制器、第一存储器、M个解压引擎和第二存储器,其中:
所述控制器用于获取压缩数据,所述压缩数据包括N个压缩数据块以及所述N个压缩数据块中每一个第一压缩数据块的长度,以及根据所述N个压缩数据块中每一个压缩数据块的长度,将所述压缩数据拆分出N个压缩数据块;
所述第一存储器用于存储N个压缩数据块,其中,所述N个压缩数据块中任意一个压缩数据块为独立压缩的长度为不大于L2的数据块,N为正整数,M≥N,长度为L2的压缩数据块为单个解压引擎能够在一个处理周期内处理完的数据块;
N个解压引擎中每一个解压引擎用于获取所述N个压缩数据块中的一个压缩数据块,并分别对所述获取到的压缩数据块进行解压,得到所述N个压缩数据块一一对应N个原始数据块,其中,所述N个原始数据块中任意一个原始数据块的长度不大于L1,所述L1以及所述L2为大于1的整数,所述L1大于L2;
所述第二存储器用于存储所述N个压缩数据块。
在一种可能的实现方式中,该解压装置还包括:拼接电路,
所述拼接电路用于将所述N个原始数据块进行拼接,得到原始数据。
第二十二方面,本申请实施例还提供了一种集成电路,包括:如第二十一方面所述的任意一种解压装置。可选地,该集成电路还可以包括耦合于所述解压装置的运算装置,所述运算装置用于根据所述解压装置解压得到的原始数据进行数据处理。
第二十三方面,本申请实施例还提供了一种具有解压功能的电子设备,具体可以是本申请实施例中第四电子设备,包括:如第一二十方面或第二十一方面所述的任意一种解压装置、耦合于所述解压装置的处理器以及耦合于所述处理器的存储器。
第二十四方面,本申请实施例还提供了一种计算机存储介质,所述计算机存储介质用于存储计算机软件指令,所述计算机软件指令当被计算机执行时使所述计算机实现如第十九方面所述的任意一种数据解压方法。
第二十五方面,本申请实施例还提供了一种计算机程序,所述计算机程序包括计算机软件指令,所述计算机软件指令当被计算机执行时使所述计算机执行如第十九方面所述的任意一种数据解压方法。
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是现有技术中多解压引擎解压的原理示意图;
图2是本发明实施例提供的一种电子设备的架构示意图;
图3是本发明实施例提供的一种解压装置的结构示意图;
图4是本发明实施例提供的一种数据压缩方法的流程示意图;
图5是本发明实施例提供的一种数据压缩方法的示意性说明图;
图6A是本发明实施例提供的原始数据与压缩数据的示意性说明图;
图6B是本发明实施例提供的规范压缩数据块的结构示意图
图7是本发明实施例提供的一种步骤S41的实现方法的流程示意图;
图8是本发明实施例提供的另一种步骤S41的实现方法的流程示意图;
图9是本发明实施例提供的一种压缩装置的结构示意图;
图10是本发明实施例提供的另一种压缩装置的结构示意图;
图11是本发明实施例提供的一种数据解压方法的流程示意图;
图12是本发明实施例提供的另一种解压装置的结构示意图;
图13是本发明实施例提供的一种第二电子设备的结构示意图
图14是本发明实施例提供的另一种数据压缩方法的流程示意图;
图15是本发明实施例提供的又一种压缩装置的结构示意图;
图16是本发明实施例提供的又一种压缩装置的结构示意图;
图17是本发明实施例提供的又一种解压装置的结构示意图;
图18是本发明实施例提供的另一种数据解压方法的流程示意图;
图19是本发明实施例提供的又一种解压装置的结构示意图;
图20是本发明实施例提供的一种第四电子设备的结构示意图。
下面对本发明各个实施例涉及的相关概念进行简要介绍:
(1)系统级芯片(System on Chip,SoC),SoC称为系统级芯片,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。所谓完整的系统一般包括中央处理器(Central Processing Unit,CPU)、存储器、以及外围电路等。同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。本申请实施例中,解压装置还可以集成在SOC上。
(2)随机存取存储器(Random Access Memory,RAM),又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
(3)双倍速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory,DDR SDRAM),简称DDR,是一系列存储器接口协议及采用这种接口协议的存储器的统称,包括DDR1、DDR2、DDR3、DDR4等。DDR内存可以在一个时钟周期内传输两次数据,即在时钟的上升期和下降期各传输一次数据,因而,DDR内存可以在与SDRAM相同的总线频率下达到更高的数据传输率。
(4)AXI(Advanced eXtensible Interface)是一种总线协议,该协议是AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。AXI总线将地址、读数据、写数据、握手信号在不同的通道中发送,不同的访问之间顺序可以打乱,用BUSID来表示各个访问的归属。主设备在没有得到返回数据的情况下可发出多个读写操作。读回的数据顺序可以被打乱,同时还支持非对齐数据访问。
(5)压缩算法,指数据压缩的算法,在电子与通信领域也常被称为信号编码,包括压缩和还原(或编码和解码)两个步骤。本申请中所涉及压缩算法的特点在于电子设备需要顺序扫描待压缩字符并顺序编码,从而使得电子设备可以一边压缩一边监视压缩后数据的长度。
可选地,该压缩算法可以是熵编码(entropy encoding)、游程编码(Run Length Coding,RLC)、字典编码等通用的压缩算法以及它们的组合方法或变种等,本申请实施例不作限定。其中,熵编码可以包括但不限于哈夫曼编码(Huffman Coding)、算术编码(arithmetic coding)等;字典编码包括但不限于LZ(Lempel-Ziv)编码系列,LZ编码系列包括deflate、LZ77、LZ78、LZW、LZO等编码,本申请实施例不作限定。
(6)哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。哈夫曼编码依据字符出现概率来构造异字头的平均长度最短的码字。通过哈夫曼编码的码字(即各符号的代码)是异前置码字,即任一码字不会是另一码字的前面部分,这使各码字可以连在一起传送,中间不需另加隔离符号,只要传送时不出错,接收端仍可分离各个码字,不致混淆。
(7)游程编码(Run Length Coding,RLC),又称“运行长度编码”或“行程编码”,是一种统计编码,该编码属于无损压缩编码,是栅格数据压缩的重要编码方法。其基本原理是:用一个符号值或串长代替具有相同值的连续符号(连续符号构成了一段连续的“行程”),使符号长度少于原始数据的长度。只在各行或者各列数据的代码发生变化时,一次记录该代码及相同代码重复的个数,从而实现数据的压缩。
(8)数据组,压缩算法在对字符串进行压缩时,以数据组为单位进行。通常数据组为一个字符或多个连续字符,与原始数据的编码格式有关。本申请中字符为原始数据的编码格式里有意义的最小单位,例如英文格式的文本为1字节(8bit),INT32格式的整数是4个字节。数据组的长度(即压缩的步长)与被压缩的数据内容、压缩算法等有关。本申请中一次压缩是指对一个数据组进行压缩。
例如,对于哈夫曼编码来说,在对字符串进行压缩时,若是以单个字符为单位进行压缩,则一个数据组为一个字符。
又例如,对于游程编码来说,假设待压缩数据为“AAAABBB”,在第一次压缩时,数据组为“AAAA”,第一次压缩对应的数据组的长度为4个字符的长度;在第二次压缩时,数据组为“BBB”,第二次压缩对应的数据组的长度为3个字符的长度。
(9)解压引擎,实现数据解压的硬件,比如集成电路或者现场可编程门阵列(Field Programmable Gate Array,FPGA)等。解压引擎与压缩算法相对应,只能解压通过特定压缩算法的压缩的数据。
(10)规范压缩数据块,具有固定的长度,即L2,为解压设备中的单个解压引擎能够在一个处理周期内处理完(解压完)的数据块,且其解压后得到的原始数据块的大小不大于L1。其中,L1以及L2为大于1的整数,L1大于L2。
(11)处理周期,可以是一个时钟周期或者多个时钟周期。单个解压引擎能够在一个处理周期内完成对最大长度为L2的压缩数据块的处理。
(12)独立压缩,S个原始数据块分别独立压缩,得到的与S个原始数据块一一对应 的S个压缩数据块。该S个压缩数据块之间不存在相关性(即压缩某一个原始数据块的时候,不需要基于其他的原始数据块来压缩),分别可以独立解压缩(即解压的时候,不需要基于其他的压缩数据块来解压)。
例如,原始数据由原始数据块A和原始数据块B组成,则对该原始数据的压缩时,通过压缩算法对原始数据块A进行压缩时,从原始数据块A的第一个数据组开始进行压缩,在原始数据块A进行压缩完成后,得到一个压缩数据块A′;在压缩原始数据块B时,从原始数据块B的第一个数据组开始重新进行压缩,在原始数据块B进行压缩完成后,得到一个压缩数据块B′。在对压缩数据块A′和压缩数据块B′进行解压时,可以分别对压缩数据块A′和压缩数据块B′进行解压,可以以任意顺序对压缩数据块A′和压缩数据块B′进行解压,也可以同时对压缩数据块A′和压缩数据块B′进行解压。
请参阅图2,图2是本发明实施例提供的一种电子设备的架构示意图,该电子设备可以包括:处理器21、存储器22以及解压装置23。处理器21可以通过总线24连接到存储器22和解压装置23。
存储器22可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)或其他存储器。本申请实施例中,存储器22用于存储原始数据以及各种软件程序,例如本申请中数据压缩程序等。在本申请一实施例中,存储器22可以是DDR,以提高存储器与处理器之间或存储器与解压装置之间的数据传输率。
处理器21是计算机设备的控制中心,本申请中,处理器是指具有处理能力的一个电路或者多个电路的集合。例如,可以是中央处理器(Central Processing Unit,CPU)等基于指令集的处理器(也称“软件处理器”),或者还可以是基于专用集成电路(ASIC)或者现场可编程门阵列(Field Programmable Gate Array,FPGA)等硬件实现的处理电路(也称“硬件处理器”)。对于基于指令集的处理器,处理器21可以通过运行或执行存储在计算机设备中的存储器内的软件程序,以及调用存储在存储器内的数据,执行电子设备的各种功能。对于基于FPGA的处理器,可以通过读取配置文件以对FPGA电路进行配置,来完成相应的功能。对于基于ASIC实现的电路,可以在设计时让ASIC具有相应的电路功能,以在上电后执行这些功能。本申请中,处理器21可以单独或者和其他电路一起封装成一个芯片,或者也可将处理器封装成几个芯片(如针对不同的功能电路各自封装成多个芯片),本申请并不限定。
本申请实施例中,处理器21可以调用存储器22内存储的原始数据,以及数据压缩程序以实现本申请实施例所述的数据压缩方法。
总线24可以是AXI总线、外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。
请参阅图3所示的解压装置的结构示意图,解压装置23可以包括第一存储器231、M个解压引擎232、第二存储器233、拼接电路234等。处理器21还可以通过总线24控制解压装置24的启动。解压装置23可以通过总线24从存储器22中获取压缩数据块,通过解压引擎将压缩数据块实时解压。为了让解压速度更快,解压装置具体可以基于ASIC或者FPGA等硬件处理器来完成,当然,本申请也不限定基于CPU等软件处理器来完成解压。
第一存储器231为解压装置的入口存储,用于存储接收到的压缩数据块。可选地,第一存储器231可以包括与M个解压引擎一一对应的M个存储子单元,一个存储子单元可以存储一个压缩数据块,比如规范压缩数据块,在本申请一实施例中,该压缩数据块也可以是长度不大于L1的原始数据块压缩得到的压缩数据块。也就是说,可以确定L2为第一存储器中任意一个存储子单元可存储数据长度。
M个解压引擎用于对第一存储器存储的规范压缩数据块进行并行解压,一个解压引擎用于解压一个规范压缩数据块。
在本申请实施例的一种具体实现中,M个解压引擎包括N个解压引擎,可以通过N个解压引擎分别对N个规范压缩数据块进行并行解压,得到N个原始数据块。N个解压引擎中每一个解压引擎232用于获取N个规范压缩数据块中一个规范压缩数据块,并对获取到的规范压缩数据块进行解压,得到该N个规范压缩数据块一一对应N个原始数据块。其中,所述N个原始数据块中任意一个原始数据块的长度可以不大于L1。
所述第二存储器为解压装置的出口存储,用于存储N个原始数据块。可选地,第二存储器包括分别与M个解压引擎一一对应的M个存储子单元,存储子单元用于存储存储子单元对应的解压引擎所解压得到的原始数据块,也就是说,可以确定L1为第二存储器中任意一个存储子单元可存储数据长度。
可以理解,解压装置的入口存储大小为解压装置包括的M个解压引擎的入口存储大小之和。解压装置的出口存储大小为解压装置包括的M个解压引擎的出口存储大小之和。
拼接电路用于将第二储存器中存储的原始数据块(例如,N个原始数据块)进行拼接,得到原始数据。其中,拼接电路不是解压装置的必须组成部分,解压装置可以不包括拼接电路,通过软件方式实现数据的拼接,本申请实施例不作限定。
本申请一实施例中,N个解压引擎包括解压引擎i,N个压缩数据块包括压缩数据块i,N个原始数据块包括压缩数据块i解压得到的原始数据块i,i为正整数,i不大于N;解压引擎i具体用于:通过解压引擎i对于压缩数据块i进行解压。进而,在解压引擎i解压得到的原始数据块i的长度等于L1时,停止对压缩数据块i的解压操作,输出原始数据块i;或,在解压引擎i识别到无效标志时,停止对压缩数据块i的解压操作,输出解压得到的原始数据块i。
也可以说,第一解压引擎为N个解压引擎中任意一个解压引擎,第一规范压缩数据块为N个规范压缩数据块中的任意一个规范压缩数据块;以第一解压引擎对第一规范压缩数据块为例来说明,任意一个解压引擎的解压过程,具体地:解压装置可以通过第一解压引擎对第一规范压缩数据块进行解压;在第一解压引擎解压得到的原始数据块的长度等于L1时,停止第一解压引擎对第一规范压缩数据块的解压操作,输出原始数据块;或,在第一解压引擎识别到无效标志时,停止第一解压引擎对第一规范压缩数据块的解压操作,输出当前解压得到的原始数据块。
本申请一实施例中,解压装置还包括控制电路,用于:在N个解压引擎中的第一解压引擎解压得到的原始数据块的长度等于L1时,停止第一解压引擎对获取到的压缩数据块的解压操作。
可选地,解压装置还可以包括数据分发电路,该数据分发电路用于将第一存储器存储 的N个压缩数据块依次分发到N个解压引擎中。
需要说明的是,第一存储器中一个存储子单元和/或第二存储器中一个存储子单元可以设置于对应的解压引擎内,本申请实施例不作限定。
可选地,该电子设备还可以包括运算装置,该运算装置与解压装置、处理器耦合,用于根据解压装置解压得到的原始数据进行数据处理。
在具体实现中,运算装置可以是特定的集成电路,例如运行机器学习算法的硬件,运行视频或图像处理算法的硬件等。处理器还可以通过总线控制解压装置、运算装置的启动;解压装置可以通过总线从存储器中获取压缩数据块,通过多个解压引擎分别将多个压缩数据块实时解压得到该多个压缩数据块对应的原始数据,将原始数据输入到运算装置;运算装置利用该原始数据完成计算,例如运算装置将原始数据进行机器学习模型的训练或推理。
该运算装置可以是一个或多个微处理器,还可以是一个或多个现场可编程门阵列(Field Programmable Gate Array,FPGA)等,用于实现计算模块的特定的计算功能。
本发明一实施例中,运算装置和解压装置可以组成集成电路,该集成电路可以与处理器、存储器等集成在同一芯片上,该集成电路也可以作为独立的芯片,应用到电子设备中以实现通过硬件进行计算的加速。
虽然,图2中电子设备可以同时运行本申请中数据压缩方法和该数据压缩方法对应的数据解压方法。然而,在本申请一实施例中,执行数据压缩方法的电子设备(本申请中也称第一电子设备)也可以不包括运算装置和解压装置。同理,执行数据解压方法的电子设备(如第二电子设备)中处理器也可以不运行数据压缩方法。
需要说明的是,电子设备、第一电子设备实现数据压缩功能的具体实现可以参照下述数据压缩方法的实施例中相关描述;第二电子设备实现的数据解压功能的具体实现可以参照下述数据解压方法的实施例中相关描述,本申请实施例不再赘述。
下面详细描述本发明实施例中数据压缩方法,如图4所示的数据压缩方法的流程示意图,请一并参阅图5所示的数据压缩方法的示意性说明图,该数据压缩方法通过第一电子设备或压缩装置执行,该第一电子设备可以是如图2所示的电子设备也可以本申请实施例所述的其他第一电子设备,以下以压缩装置为例进行描述,该数据压缩方法用于将元数据局压缩成供解压装置并行解压的一个或多个长度为L2的规范压缩数据块,其中,解压装置包括多个解压引擎,每个解压引擎在一个处理周期内能够完成对一个规范压缩数据块进行解压,L2为大于1的整数,在对原始数据进行压缩的过程中,压缩装置可以执行一次或者多次原始数据块压缩,该原始数据块压缩可以包括:压缩装置基于压缩算法对原始数据块进行处理以得到与原始数据块对应的规范压缩数据块,其中,原始数据块为原始数据中包括的数据。
本申请实施例以一个原始数据块的压缩过程为例来说明,该压缩具体实现可以是:对原始数据块通过压缩算法进行独立压缩,得到与始数据块对应的压缩数据块,该压缩数据块的长度d不大于L2;进一步地,在压缩数据块之后添加长度为L2-d的附加数据,从而生成长度为L2的规范压缩数据块,d为大于0的整数。应理解,d仅仅为符合指代压缩数据块的长度,针对不同的压缩数据块,该d的实际值可以不同。
在本申请实施例的另一种实现中,对原始数据的压缩的方法可以包括以下全部或部分步骤。
步骤S41:将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到该S个个压缩数据块,原始数据块与压缩数据块一一对应。其中,该S个原始数据块中每一个原始数据块为原始数据中连续的多个数据,该连续的多个数据的长度不大于L1,该S个压缩数据块中的每一个压缩数据块的长度d不大于L2,S为正整数。
原始数据,可以是以文件形式存在的数据,也可以是以非文件形式的数据(例如,存储在内存中的一些数据)。原始数据包括多个原始数据块,该多个原始数据块依次连接组成原始数据,其中,“数据块”是指多个数据的集合,在计算机应用领域,可用一个或多个比特来表示一个数据,也即数据块可以包括多个比特。该多个原始数据块中每个原始数据块的长度都不大于L1。各个原始数据块对应的压缩数据块的长度都不大于L2。应理解,在不同的原始数据块中,原始数据块的长度可以不同。请一并参阅图6A所示的原始数据与压缩数据的示意性说明图。
可选地,步骤S41之前,该方法还可以包括:
步骤S40:确定L1为单个解压引擎出口位宽以及所述L2为单个解压引擎的入口位宽。
本步骤中的“确定”可以是通过事先配置L1、L2的方式进行确定(例如,在程序代码或者电路实现中配置好这个L1、L2的具体值),或者也可以通过在程序或者硬件电路运行时读取相关的配置值来确定(例如,通过读取保存在本地或者远端的记载有L1、L2值的配置文件来确定L1、L2的值)。
可以理解,本申请中,L1以及L2的值可以根据压缩系统的硬件对压缩的支持情况来确定,也即这些阈值的确定需要能够有硬件支持,并且最好能够最大化地利用硬件资源。例如,对于L1,由于涉及到原始数据块,那么就要保证最后并行解压的时候解压引擎的出口存储(即用于存储解压后数据的存储器)的大小能够容纳解压出的数据,即不小于解压引擎的出口带宽(也即在一个处理周期内对规范压缩数据块解压后能存储的最大数据位数),因此,需要让L1小于等于单个解压引擎的出口位宽,为了让利用率最大,可以让L1等于单个解压引擎的出口位宽。同理,要保证单个解压引擎的入口存储可以容纳压缩后的数据,即不小于解压引擎的入口带宽(也即在一个处理周期内一个解压引擎能读取的数据的宽度,例如,每次读8字节,就是64位位宽)因此,从利用率最大化考虑,可以设置L2等于单个解压引擎的入口位宽。
应理解,单个解压引擎的入口位宽可以是第一存储器可分配给单个解压引擎的存储大小或者第一存储器中与单个解压引擎分别对应的存储子单元的大小。
其中,出口位宽、L1、入口位宽和L2可以以bit为单位。
本领域技术人员可以理解,出口位宽、入口位宽可以由压缩解压系统要满足的性能指标来结合具体的软硬件来确定,例如,可以根据解压引擎所采用的压缩算法、解压引擎的电路设计、每个时钟周期可输入到解压装置的数据长度以及解压装置中解压引擎的个数、面积、功耗等中的一个或多个因素确定。例如,硬件的主频为f,解压装置的入口分配的带宽为b,则每一个时钟周期进入压缩装置的数据为b/f,若已知单个解压引擎的解压能力为 c字节/时钟周期(byte/cycle),则至少需要b/(f*c)个解压引擎。同理,若已知单个解压引擎的解压能力为c字节/时钟周期,解压装置包括M个解压引擎,则每一个时钟周期进入压缩装置的数据为c*M个字节,因此,解压装置中第一存储器的存储大小必须能够存储每一个时钟周期进入压缩装置的数据,单个解压引擎的入口存储须能够存储每一个时钟周期进入压缩引擎的数据量,即c个字节。
举例来说,硬件的主频为1GHz,解压装置的入口分配的带宽为32GBps,则每一个时钟周期进入压缩装置的数据为32字节,若已知单个解压引擎的解压能力为8字节/时钟周期(byte/cycle),解压装置至少需要4个解压引擎,单个解压引擎分别对应的存储资源大小不小于8字节。
单个解压引擎的出口位宽大于单个引擎的入口位宽。单个引擎的出口位宽可以等于解压装置中第二存储器分配给单个解压引擎的存储大小,或等于第二存储单元中与单个解压引擎分别对应的存储子单元的大小。
可选地,单个解压引擎的入口位宽可以被设置为一个时钟周期单个解压引擎可解压的压缩数据块的最大长度;同理,单个解压引擎的出口位宽可以被设置为一个时钟周期单个解压引擎可解压出的原始数据的最大长度。
可选地,压缩装置可以获取到解压装置的规格参数,该规格参数包括出口位宽、入口位宽、解压引擎的个数等。进而确定L1为小于或等于单个解压引擎的出口位宽,L2小于或等于单个解压引擎的入口位宽。
需要说明的是,L1也可以小于单个解压引擎的出口位宽,L2也可以小于单个解压引擎的入口位宽。
步骤S42:在该S个压缩数据块中的每一个压缩数据块之后添加长度为L2-d的附加数据,生成S个长度为L2的规范压缩数据块。其中,一个长度为L2的规范数据块能够被解压装置中的单个解压引擎能在一个处理周期内解压完成,L1以及L2为大于1的整数,d为大于0的整数,L1大于L2。
其中,第一原始数据块为S个原始数据块中的任意一个原始数据块,第一压缩数据块为S个压缩数据块中第一原始数据块压缩得到的数据,当第一压缩数据块的长度等于L2时,d为L2,也即压缩装置不需要在第一压缩数据块之后添加附加数据,第一压缩数据块即为需要的长度为L2的规范压缩数据块。
可以理解,不同原始数据块压缩得到的规范压缩数据块中的附加数据长度可能不同。
附加数据的添加方式可以包括以下三种情况:
第一种情况:第一原始数据块的长度y等于L1,第一原始数据块压缩得到的规范压缩数据块中的附加数据可以是任意填充的,解压端在解压时,解压端只保留前面的长度为L1的数据,后面数据都可以舍弃,例如附加数据(1)合法码字或(2)包括无效标志以及无效数据,其中,无效标志用于指示该附加数据需要弃掉,无效数据位于无效标志之后。无效标志后面的无线数据的位数可以是0或者不小于1,无效数据的位数由第一原始数据块压缩得到的数据的长度而定,其与无效数据的位数、无效标志的位数的和为L2,以保证可以得到长度为L2的规范压缩数据块。请参阅图6B所示的规范压缩数据块的结构示意图,其中,合法码字为解压引擎可以识别并解压的码字,当附加数据为第(1)种合法码字的情 况时,虽然解压引擎可以识别并解压附加数据,但由于第一原始数据块长度是L1,因此,解压引擎可以最多只取L1长度的数据,附加部分解压出来的数据都可以丢弃掉。对于第(2)种情况,无效标志可以由多位的比特组成,具体的位数视解压算法而定,针对不同的解压算法,无效标志的比特位数可以不同,不管哪种算法,只需要保证能够让解压引擎识别到无效标志后知道从这个无效标志开始的都是无效数据,弃掉即可。由于解压引擎不对无效标志后面的数据进行解压,因此,无效标志后面填充的无效数据的数值并不限定,可填任意数据。
第二种情况:第一原始数据块的长度y小于L1,附加数据为第一种情况中所说的包括“无效标志”以及“无效数据”。在这种情况下,由于y小于L1,因此,如果采用填充合法码字的方式,会使得解压端无法输出解压结果(因为不像第一种情况可以统一取L1的数据,在本种情况下,解压出的有效数据多长并不知道),因此,需要采用“无效标志+无效数据”的方式来停止解压,此时,无效标志之前的解压出来的数据即是原始的数据块。需要说明的是,在另一实施例中,如果能通过某种方式知道原始数据块的长度,则也可以通过添加合法码字来实现。可以理解,通过添加无效标志的方法,第二种情况可以跟第一种情况共同一套软件代码,处理起来更方便,减少设计成本。
上述两种情况适用于处理周期为一个或多个时钟周期的情况。
第三种情况:对于处理周期为多个时钟周期的情况,第一原始数据块压缩得到的规范数据块中的附加数据还可以是(3)包括无效标志以及无效数据,其中,无效标志用于指示该附加数据需要弃掉,无效数据位于无效标志之后,无效标志后面的无线数据的位数可以是0或者不小于1。
上述两种情况中提到的合法码字可以参见下表,例如,压缩算法采用哈夫曼编码,一个编码的中的合法的码字如下表1所示:
码长(bit) | 编码(二进制) |
2 | 00 |
3 | 001 |
3 | 011 |
3 | 100 |
3 | 101 |
3 | 110 |
5 | 11100 |
5 | 11101 |
5 | 11110 |
6 | 111110 |
6 | 111111 |
表1
压缩装置可以根据L2-d的值确定合法码字为表1中L2-d的码长对应的编码或者确定合法码字为表1中总长度为L2-d的多个编码的组合。
需要说明的是,上述表1仅仅用于说明选定合法码字的原理,本申请实施例根据具体的压缩算法可以采用其他合法编码或合法编码的组合。
上述实施例中,在对原始数据进行压缩时,生成的多个规范压缩数据块长度为固定值L2,且生成该规范压缩数据块的原始数据块的长度不大于L1,规范了原始数据压缩生成的压缩数据块的长度,并且,各个规范压缩数据块为独立压缩的,进而可独立解压,使得各个解压引擎在解压该多个规范压缩数据块时可以同步解压,提高数据的解压效率。
而且,相对于压缩成变长的压缩数据块,本申请设置成固定长度L2的规范压缩数据块,压缩端不需要记录各个压缩数据块的长度,解压端也不需要记录获取到的数据长度,使得解压端的设计更加简单。
进一步地,现有技术中,原始数据划分的原始数据块的个数等于解压引擎的个数,即解压引擎的个数限制了原始数据可划分的粒度,使得原始数据所压缩形成的多个压缩数据块的长度较大。当对随机地址的数据进行访问时,需要将该随机地址的数据所在的压缩数据块进行解压。在解压的过程中,由于压缩数据块中数据的关联性,该压缩数据块只能在一个解压引擎进行解压,无法实现压缩数据的倍速解压。本申请实施例中,原始数据可划分的粒度与解压引擎的个数无关,原始数据可以被压缩为大量较小规范压缩数据块,当对随机地址的数据进行访问时,将该随机地址的数据所在的多个连续的规范压缩数据块输入到多个解压引擎中进行解压,可实现对随机地址的压缩数据的倍速解压。
下面以压缩装置将第一原始数据块通过压缩算法进行独立压缩,得到第一压缩数据块为例来介绍步骤S41中的实现方式,第一原始数据块为原始数据中的一个原始数据块,可以理解步骤S41还可以包括其他实现方式,本申请实施例不作限定。
第一种实现方式:
通常,数据压缩是以数据组为步长进行,数据组为可进行压缩的一个数据或多个连续数据,为该压缩算法下的可压缩单元,数据组的长度由所述压缩算法以及数据组的数据内容决定,其小于或等于L1;而且,单个数据组被压缩生成的数据块的长度小于或者等于L2,其具体实现为现有技术,本申请并不赘述。
步骤S41的第一种实现方法包括如下流程:
S1:压缩装置从原始数据中获取一个待压缩的数据组。
其中,该待压缩的数据组可以是第一原始数据块中的第一个数据组或者在对第一原始数据块中的数据组完成了一次或多次压缩后的下一个待压缩的数据组。该数据组包括一个或多个比特的数据。
S2:判断是否需要对该待压缩的数据组进行压缩,如果需要进行压缩则执行步骤S3,否则执行S4。
其中,判断是否需要对该待压缩的数据组进行压缩包括:判断已被压缩的一个或多个数据组的总长度x与该待压缩的数据组的长度Δx之和是否不大于所述L1,以及判断该待压缩的数据组被压缩后生成的压缩数据块长度y是否不大于L2。本领域技术人员可以理解,数据组被压缩后生成的压缩数据块的长度是指在原来压缩数据块的长度的基础上再增加本次压缩后所增加的长度,也即压缩数据块的长度在对每个数据组进行压缩后都会被更新。
1)若x+Δx≤L1且y≤L2,判断需要进行压缩。
若已被压缩的一个或多个数据组的总长度x与待压缩的数据组的长度Δx之和不大于L1且在该待压缩的数据组被压缩后生成的压缩数据块长度不大于L2,说明再经过一次压缩后得到的压缩数据块仍然满足长度不大于L2的条件,即可对待压缩的数据组进行压缩,判断为需要进行压缩。
2)若x+Δx≤L1且y>L2,判断不需要进行压缩。
若已被压缩的一个或多个数据组的总长度x与待压缩的数据组的长度Δx之和不大于L1且该待压缩的数据组被压缩后生成的压缩数据块长度大于L2,说明再经过一次压缩后虽然长度仍然满足小于L1的条件,但被压缩后得到的压缩数据块长度不满足不大于L2的条件,因此,判断为不需要进行压缩,此时要停止对待压缩的数据组的压缩,执行步骤S4。
3)若x+Δx>L1,判断不需要进行压缩。
若已被压缩的一个或多个数据组的总长度x与待压缩的数据组的长度Δx之和大于L1,说明如果再经过一次压缩后,长度会超过L1,因此,判断为不需要进行压缩,此时要停止对待压缩的数据组的压缩,执行步骤S5。
S3、压缩该待压缩的数据组,压缩完成后执行S1。
S4、将当前已经压缩得到的数据作为第一压缩数据块。此时,当前被压缩的数据组即为第一原始数据组。
需要说明的是,当该待压缩的数据组不需要进行压缩时,需要将待压缩的数据组放回到原始数据中,以作为对下一个原始数据块进行压缩的第一一个数据组。
应理解,本申请将原始数据压缩成S个规范压缩数据块,本申请中数据组为第一个数据组是指第一原始数据块中第一个数据组。
应理解,压缩装置可以优先判断x+Δx与L1的大小,再判断y与L2的大小。
例如,参阅图7所示的将第一原始数据块通过压缩算法进行独立压缩,得到第一压缩数据块的一种实现方法的流程示意图。该方法包括如下流程:
S411:压缩装置获取第一个数据组,并对该第一个数据组进行压缩。
由于,数据组的长度Δx不大于L1,且单个数据组被压缩后形成的数据块不大于L2,因此,压缩装置在获取到第一个数据组时,可以默认进行压缩。压缩装置也可以在获取到第一个数据组时,判断是否需要对其进行压缩,此时第一个数据组必定满足能够进行压缩的条件。进一步地,令k=2执行步骤S412,k为正整数,k≤M。
S412:压缩装置获取第k个数据组,该第k个数据组的长度为Δx
k。
可选地,压缩装置可以优先判断已被压缩的一个或多个数的长度x与第k个数据组的长度Δx
k之和是否不大于L1。
S413:压缩装置判断已被压缩的一个或多个数据组的总长度x与第k个数据组的长度Δx
k之和是否大于L1。可以理解,一个或多个数据组的总长度x是指对一个或多个数据组中的每个数据组的长度进行累加后得到长度。
其中,已被压缩的一个或多个数据组为第1至k-1个数据组。
当x+Δx
k>L1时,说明如果对第k个数据组进行压缩后,第1至k个数据组的长度会超过L1,此时,不需要对第k个数据组进行压缩,要停止对第K个数据组的压缩,执行步 骤S414;当x+Δx
k≤L1时,说明如果对第k个数据组进行压缩后,第1至k个数据组的长度小于等于L1,执行步骤S415。
S414:将该已被压缩的一个或多个数据组(即第1至k-1个数据组)被压缩得到的压缩数据块作为第一压缩数据块。此时,已被压缩的一个或多个数据组(即第1至k-1个数据组)即为步骤S41中的第一原始数据块。
S415:判断压缩第k个数据组后生成的压缩数据块的长度y是否大于L2。
当y>L2时,说明压缩第k个数据组后生成的压缩数据块的长度y大于L2的条件,此时,判断为第k数据组不需要进行压缩,可执行S414。当y≤L2时,说明压缩第k个数据组后生成的压缩数据块的长度y不大于L2,需要对第k个数据组进行压缩,此时,令k=k+1,重复执行步骤S412。
需要说明的是,针对第一个或多个待压缩的数据组,如果事先能够约定相应的参数满足一定的条件来保证肯定能够满足能够进行一次或多次压缩的条件(例如,L1远大于数据组长度,L2也比较大,即使经过一次或多次压缩后,被压缩的数据不会超过L1,压缩后的数据块长度不会超过L2),此时,也可以不执行判断,而直接对第一个或多个数据进行相应地一次或多次压缩。
第二种实现方式:
请一并参阅图8所示的本发明实施例提供的又一种将第一原始数据通过压缩算法进行独立压缩,得到第一压缩数据块的流程示意图。其中,该实现方式可以包括以下步骤:
步骤S416:将原始数据中长度为L1的数据块以数据组为步长进行压缩,得到临时压缩数据块。
步骤S417:判断临时压缩数据块的长度y'是否大于L2。
当y'>L2时,说明长度为L1的数据块压缩得到的临时压缩数据块的长度大于L2,即大于规范压缩数据块的长度,此时,执行步骤S418;否则,当y'≤L2时,执行步骤S419。
步骤S418:将该长度为L1的数据块在去除尾部的i个数据组后得到的数据块作为第一原始数据块,并将该第一原始数据块压缩得到数据作为第一压缩数据块。其中,第一压缩数据块的长度不大于所述L2。
可选地,i可以是使得第一压缩数据块的长度不大于的最小正整数。其中,确定i的方法可以是:压缩装置从长度为L1的数据块的尾部逐个去除数据组,直至长度为L1的数据块在去除第i个数据组后得到的数据块压缩得到的压缩数据块的长度不大于L2。
需要说明的是,被去除的i个数据组需要放回原始数据中,以作为对下一个原始数据块进行压缩的第一一个数据组。
步骤S419:将该长度为L1的数据块作为第一原始数据块,将临时压缩数据块作为第一压缩数据块。压缩装置可以执行步骤S42。
在图8所示实施例中,压缩装置将待压缩数据中长度为L1的数据块以数据组为步长进行压缩,得到临时压缩数据块;比较临时压缩数据块的长度y'与L2的大小,根据比较结果确定第一原始数据块和该第一原始数据块被压缩生成的第一压缩数据块,进而得到符合要求的第一压缩数据块,以进一步得到的固定长度L2的规范压缩数据块。
请参阅图9,图9是本发明实施例提供的一种压缩装置的结构示意图,该压缩装置90包括:压缩装置90用于将原始数据压缩成供解压装置并行解压的一个或多个长度为L2的规范压缩数据块,其中,解压装置包括多个解压引擎,每个解压引擎在一个处理周期内能够对一个规范压缩数据块进行解压,L2为大于1的整数,压缩装置90包括:
处理模块,用于基于压缩算法对原始数据块进行处理以得到与所述原始数据块对应的所述规范压缩数据块,其中,原始数据块为原始数据中包括的数据。
在本申请实施例的一种实现中,该处理模块可以包括:
压缩单元91,用于对所述原始数据块通过压缩算法进行独立压缩,得到与所述原始数据块对应的压缩数据块,所述压缩数据块的长度d不大于所述L2;
规范单元92,用于在所述压缩数据块之后添加长度为L2-d的附加数据,从而生成长度为所述L2的所述规范压缩数据块,所述d为大于0的整数。
换句话来说,压缩单元91,用于将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到所述S个原始数据块一一对应的S个压缩数据块,所述S个原始数据块中每一个原始数据块为所述原始数据中连续的多个数据,所述连续的多个数据的长度不大于L1,所述S个压缩数据块中的每一个压缩数据块的长度d不大于L2,S为正整数;
规范单元92,在所述S个压缩数据块中的每一个压缩数据块之后添加长度为L2-d的附加数据,生成S个长度为L2的规范压缩数据块,其中,所述长度为L2的规范数据块为解压装置中的单个解压引擎能够在一个处理周期内处理完的数据块,所述L1以及所述L2为大于1的整数,所述d为大于0的整数,所述L1大于所述L2。
压缩装置90包括的各个功能单元的具体实现可参考上述数据压缩方法中相关描述,这里不再赘述。该压缩装置90中的各个单元可以基于硬件或软件实现上述数据压缩方法,例如,基于硬件时,可以基于FPGA、ASIC等电路来完成各个单元,或者基于软件实现时,可以通过让CPU读取存储器中保存的能够实现上述单元功能的代码来执行相应的功能。
请参阅图10,图10是本发明实施例提供的另一种压缩装置的结构示意图,该压缩装置100可以实现上述数据压缩方法,该压缩装置100包括:处理器101和存储器102,处理器101通过总线103连接到存储器102,其中,
存储器102可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)或其他存储器。本申请实施例中,存储器102用于存储原始数据等数据以及各种软件程序,例如本申请中数据压缩程序等。可选的,存储器102可以是DDR,以提高存储器与处理器之间或存储器与解压装置之间的数据传输率。
处理器101是第一计算机设备的控制中心,可以是一个处理器,也可以是多个处理元件的统称。在具体的实现中,作为一种可选的实施例,处理器101可以包括一个或多个CPU。处理器101还可以包括特定的集成电路,例如实施本发明实施例中数据压缩方法的一个或多个微处理器、一个或多个现场可编程门阵列(Field Programmable Gate Array,FPGA)等。
可选地,该压缩装置还包括通信接口104,通信接口104用于实现与其他设备,如解 压装置的数据交换。
所述处理器101用于调用存储器102内存储的原始数据等数据和程序代码执行:一次或者多次原始数据块压缩,所述原始数据块压缩包括:
基于压缩算法对原始数据块进行处理以得到与所述原始数据块对应的所述规范压缩数据块,其中,所述原始数据块为所述原始数据中包括的数据。
在本申请实施例的一种实现中,以对一个原始数据块进行压缩为例,处理器101可以执行:对所述原始数据块通过压缩算法进行独立压缩,得到与所述原始数据块对应的压缩数据块,所述压缩数据块的长度d不大于所述L2;在所述压缩数据块之后添加长度为L2-d的附加数据,从而生成长度为所述L2的所述规范压缩数据块,所述d为大于0的整数。
换句话来说,处理器101可以执行:将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到所述S个原始数据块一一对应的S个压缩数据块,所述S个原始数据块中每一个原始数据块为所述原始数据中连续的多个数据,所述连续的多个数据的长度不大于L1,所述S个压缩数据块中的每一个压缩数据块的长度d不大于L2;在所述S个压缩数据块中的每一个压缩数据块之后添加长度为L2-d的附加数据,生成S个长度为L2的规范压缩数据块,其中,所述长度为L2的规范数据块为解压装置中的单个解压引擎能够在一个处理周期内处理完的数据块,所述L1以及所述L2为大于1的整数,所述d为大于0的整数,所述L1大于所述L2。
可选地,所述原始数据块可以包括所述原始数据中连续的多个数据,所述原始数据块的长度不大于L1,所述L1为所述解压引擎的出口位宽。
在本申请实施例的一种实现中,第一原始数据块为所述S个原始数据块中的任意一个原始数据块,其中:
在第一原始数据块的长度等于L1时,该第一原始数据块压缩得到的规范数据块中的第一附加数据为合法码字或第一附加数据包括用于指示解压引擎该第一附加数据需要弃掉的无效标志以及在该无效标志后面的大于等于0个的无效数据。
在第一原始数据块的长度小于L1时,该第一附加数据包括用于指示解压引擎该第一原始数据块压缩得到的规范数据块中的第一附加数据需要弃掉的无效标志以及在该无效标志后面的大于等于0个的无效数据。
在本申请的一种实现中,所述处理器101执行所述对所述原始数据块通过压缩算法进行独立压缩,得到与所述原始数据块对应的压缩数据块,具体包括执行如下部分或全部流程:
S1、从所述原始数据中获取一个待压缩的数据组,所述数据组包括一个或多个比特的数据;
S2、判断是否需要对所述待压缩的数据组进行压缩,如果需要进行压缩,则执行S3,否则执行S4;
S3、压缩所述待压缩的数据块组,压缩完成后执行所述S1;
S4、将当前已经压缩得到的数据作为所述压缩数据块;
其中,所述判断是否需要对所述待压缩的数据组进行压缩包括:若已被压缩的一个或多个数据组的总长度x与所述待压缩的数据组的长度Δx之和不大于所述L1且在所述待压 缩的数据组被压缩后生成的压缩数据块长度不大于所述L2,则确定需要进行压缩;若所述x与所述Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度大于所述L2,则确定不需要进行压缩;若所述x与所述Δx之和大于所述L1,则确定不需要进行压缩。
在本申请的另一种实现中,所述处理器101执行所述对所述原始数据块通过压缩算法进行独立压缩,得到与所述原始数据块对应的压缩数据块,具体包括执行如下部分或全部流程:
将所述原始数据中长度为L1的数据块以数据组为步长进行压缩,得到临时压缩数据块;
在所述临时压缩数据块的长度大于所述L2时,将所述长度为L1的数据块在去除尾部的i个数据组后得到的数据块作为所述原始数据块,并将所述原始数据块压缩得到的数据作为所述压缩数据块,其中,所述压缩数据块的长度不大于所述L2,i可以为使得所述压缩数据块不大于所述L2的最小正整数;
在所述临时压缩数据块的长度不大于所述L2时,将所述长度为L1的数据块作为所述原始数据块,将所述临时压缩数据块作为所述压缩数据块。
在本申请的一种实现中,L1为单个解压引擎的出口位宽;和/或,L2为单个解压引擎的入口位宽。
应理解,本申请实施例中压缩装置中各个器件的功能实现可以参照上述数据压缩方法的实施例中相关描述,本申请实施例不再赘述。
本申请还提供了一种包括数据压缩功能的第一电子设备,该第一电子设备可以包括上述如图9或图10中所描述的任意一种压缩装置。
下面结合图2所示的电子设备的架构、图3所示的解压装置以及图11所示的数据解压方法的流程示意图详细描述本发明实施例中数据解压方法。
该数据解压方法由具有数据解压功能的第二电子设备执行或由上述图3所示的解压装置执行。其中,第二电子设备可以是图2所示的电子设备或其他包括解压装置的电子设备,解压装置也可以是如图3所示解压装置,也可以是其他解压装置,本申请实施例不作限定。本申请实施例以第二电子设备为图2所示的电子设备,解压装置为图3所示的解压装置为例说明数据解压方法。
解压装置所在的电子设备中存储器可以存储第一数据和该第一数据压缩后的压缩数据块。运算装置可以通过总线向电子设备请求获取起始地址为随机地址add1长度为Q的第二数据,其中,第一数据包括第二数据;电子设备可以根据该请求地址确定包括第二数据的P个压缩数据块,进而将P个压缩数据块发送给解压装置;解压装置将P个压缩数据块在被解压和拼接后得到的原始数据输入到运算装置,其中,原始数据包括第二数据;运算装置可以基于请求地址从原始数据中获取到第二数据。
需要说明的是,电子设备也可以根据其需要的第二数据的地址确定包括第二数据的P个压缩数据块,进而通过总线读取存储器内存储的P个压缩数据块到解压装置,对此,本申请实施例不作限定。
本申请实施例设定解压装置包括M个解压引擎,M个解压引擎中每个解压引擎是与上述数据解压方法实施例中压缩算法相对应的解压引擎,用于解压该压缩算法生成的压缩数据。单个解压引擎在一个时钟周期可以解压一个规范压缩数据块。即解压装置在一个时钟周期最大解压M个规范压缩数据块。
本申请实施例假定P=N,N≤M,即运算装置需要的第二数据可以在一个时钟周期解压出。可以理解,P也可以大于M,此时,需要通过多个时钟周期解压出第二数据。具体的解压方法与解压N个压缩数据块类似,本申请实施例不再赘述。
请参阅图11所示的数据解压方法的流程示意图,数据解压方法由第二电子设备或解压装置执行,本申请实施例以解压装置为例来描述,该方法包括以下全部或部分步骤。
步骤S111:解压装置获取N个规范压缩数据块,其中,所述N个规范压缩数据块中任意一个规范压缩数据块为对原始数据块进行独立压缩后生成的长度为L2的数据块,一个规范压缩数据块能够被单个解压引擎在一个处理周期内解压完成,N为正整数,M≥N。
解压装置通过总线获取N个规范压缩数据块,其解压后的原始数据块的长度可以均不大于L1。关于规范压缩数据块的压缩过程可以参阅上述图4、图7和图8所述的数据压缩方法中相关描述,本申请实施例不再赘述。其中,L1以及L2为大于1的整数,L1大于L2。
可选地,解压装置可以包括分发电路,用于将N个规范压缩数据块分发到N个解压引擎中。
此时,步骤S111的具体实现方式可以是:解压装置接收处理器通过总线发送的N个规范压缩数据块;通过分发电路将所述N个规范压缩数据块依次分发给N个解压引擎。
步骤S112:通过N个解压引擎分别对N个规范压缩数据块进行解压,得到N个原始数据块,规范压缩数据块与原始数据块一一对应,其中,N个原始数据块中任意一个原始数据块的长度可以不大于L1。
在本申请实施例的一种实现中,第一解压引擎为N个解压引擎中任意一个,第一规范压缩数据块为N个规范压缩数据块中的任意一个规范压缩数据块。以第一解压引擎对第一规范压缩数据块为例来说明,任意一个解压引擎的解压过程,具体地:解压装置可以通过第一解压引擎对第一规范压缩数据块进行解压;在第一解压引擎解压得到的原始数据块的长度等于L1时,停止第一解压引擎对第一压缩数据块的解压操作,输出原始数据块;或,在第一解压引擎识别到无效标志时,停止第一解压引擎对第一压缩数据块的解压操作,输出当前解压得到的原始数据块。
在本申请实施例的一种实现中,N个解压引擎包括解压引擎i,N个规范压缩数据块包括规范压缩数据块i,N个原始数据块包括规范压缩数据块i解压得到的原始数据块i,i为正整数,i不大于N,第一解压引擎用于对接收到的规范压缩数据块i进行解压,得到并输出原始数据块i。
解压引擎i进行解压的一种实现方式可以是:
解压引擎i对于规范压缩数据块i进行解压;
解压引擎i可以包括一计数器,记录解压引擎i解压得到的原始数据块i的长度并通过一比较器比较原始数据块i的长度与L1的大小,在第一解压引擎解压得到的原始数据块i的长度等于L1的情况下,第一解压引擎停止对规范压缩数据块i的解压操作,输出原始数 据块i。
在第一解压引擎识别到无效标志的情况下,第一解压引擎停止对规范压缩数据块i的解压操作,输出解压得到的原始数据块i。
解压引擎i进行解压的另一种实现方式可以是:
解压引擎i对于规范压缩数据块i进行全部解压,得到原始数据块,在该原始数据块长度大于L1时,舍去该原始数据块中长度为L1的数据之后的数据,得到长度等于L1的原始数据块i。
在解压引擎i识别到无效标志的情况下,解压引擎i停止对所述规范压缩数据块i的解压操作,输出解压得到的原始数据块i。
可选地,解压装置可以包括控制电路,在解压引擎i对规范压缩数据块i进行解压得到的原始数据块i的长度等于所述L1的情况下,解压装置可以通过控制电路停止解压引擎i对规范压缩数据块i的解压操作。
步骤S113:将所述N个原始数据块进行拼接,得到原始数据。
在N个解压引擎解压得到的N个原始数据块后,解压装置可以将N个原始数据块进行拼接得到原始数据。
可选地,解压装置也可以通过内设的拼接电路实现N个原始数据块拼接成原始数据。
步骤S113之后,解压装置可以将原始数据输入运算装置。
在图11所示的实施例中,解压装置获取N个规范压缩数据块,通过N个解压引擎分别对所述N个规范压缩数据块进行解压,得到所述N个规范压缩数据块一一对应N个原始数据块,将得到的N个原始数据块进行拼接,得到原始数据。其中,所述N个规范压缩数据块中任意一个规范压缩数据块为对原始数据块进行独立压缩后生成的的长度为L2的数据块,使得各个解压引擎在解压该多个规范压缩数据块时可以同步解压,提高数据的解压效率。
进一步地,原始数据可划分的粒度与解压引擎的个数无关,原始数据可以被压缩为大量较小规范压缩数据块,当对随机地址的数据进行访问时,将该随机地址的数据所在的多个连续的规范压缩数据块输入到多个解压引擎中进行解压,可实现对随机地址的压缩数据的倍速解压。
请参阅图12,图12是本发明实施例提供的一种解压装置的结构示意图,该解压装置12包括控制器120和M个解压引擎121,其中,控制器包括获取单元1201、数据分发单元1202以及拼接单元1203,其中:
获取单元1201,用于获取N个规范压缩数据块,其中,所述N个规范压缩数据块中任意一个规范压缩数据块为对原始数据块进行独立压缩后生成的长度为L2的数据块,一个所述规范压缩数据块能够被单个所述解压引擎在一个处理周期内解压完成,N为正整数,M≥N;
数据分发单元1202,通过N个解压引擎分别对所述N个规范压缩数据块进行并行解压,得到N个原始数据块,所述规范压缩数据块与所述原始数据块一一对应;
拼接单元1203,用于将所述N个原始数据块进行拼接,得到原始数据。
在本申请实施例的一种实现中,数据分发单元1202具体可以用于将N个规范压缩数据块分发给M个解压引擎中的N个解压引擎,以通过N个解压引擎分别对所述N个规范压缩数据块进行解压,得到所述N个规范压缩数据块一一对应N个原始数据块,其中,所述N个原始数据块中任意一个原始数据块的长度不大于L1。需要说明的是,本申请实施例中解压装置12中各个单元的具体实现可以参照上述图11所示的数据解压方法中相关描述,本申请实施例不再赘述。
该控制器120中的各个单元可以基于硬件或软件实现上述数据压缩方法,例如,基于硬件时,可以基于FPGA、ASIC等电路来完成各个单元,或者基于软件实现时,可以通过让CPU读取存储器中保存的能够实现上述单元功能的代码来执行相应的功能。为了实现更快的解压速度,本申请中使用硬件来实现相关的单元的功能。
请参阅图13,图13是本发明实施例提供的一种具有数据解压功能的第二电子设备的结构示意图,该第二电子设备13包括:处理器131、存储器132以及解压装置133,其中,处理器131通过总线134连接到存储器132和解压装置133。
其中,处理器131为解压装置的控制中心,用于可以是一个或多个CPU、一个或多个微处理器,或者一个或多个FPGA等,本发明实施例不做限定。
存储器132用于存储数据和指令,可以是只读存储器、随机存取存储器或其他存储器等,处理器131用于调用存储器132的指令实现该第二电子设备的功能。
解压装置133用于对接收到的规范压缩数据块进行解压,以还原出原始数据块,该解压装置可以是如图3或图9所示的解压装置。需要说明的是,图13所示的解压装置中各个功能的具体实现可以参照图11所示的方法实施例中相关描述,本申请实施例不再赘述。
本申请实施例提供了一种压缩解压系统,该压缩解压系统可以包括压缩装置和解压装置,该压缩装置可以是如图9或图10所示的任意一种压缩装置,解压装置可以是图3或图12所示的任意一种解压装置。可以理解,该压缩解压系统可以设置于同一电子设备中,如图2所示的电子设备,也可以分布在不同的电子设备中。
本申请实施例还提供了一种压缩解压系统,该压缩解压系统可以包括第一电子设备和第二电子设备,具体可参见上述各实施例中第一电子设备和第二电子设备的相关描述,此处,不再赘述。
应理解,本申请中电子设备、第一电子设备、第二电子设备可以是个人计算机(personal computer,PC)、手机、笔记本电脑、平板电脑、服务器、网关、路由器等设备。其中,第一电子设备和第二电子设备可以设置于同一电子设备中,如图2所示的电子设备;也可以是不同设备,本申请实施例不作限定。
下面介绍本申请实施例提供的另一种数据压缩方法,该数据压缩方法应用于压缩设备或可实现数据压缩的第三电子设备,以下以压缩装置为例进行描述。
压缩装置将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到所述S个原始数据块一一对应的S个压缩数据块,并记录该S个压缩数据块中每一个压缩数据块的长度。其中,该S个原始数据块中每一个原始数据块为原 始数据中连续的多个数据,该连续的多个数据的长度不大于L1,该S个压缩数据块中的每一个压缩数据块的长度d不大于L2,S为正整数,长度为L2的压缩数据块为单个解压引擎能够在一个处理周期内处理完的数据块,通过限制压缩得到的压缩数据块可以在一个处理周期内处理完,使得解压装置在解压时各个解压引擎可以同步解压。
如图14所示的本申请实施例提供的一种数据压缩方法的流程示意图,该数据压缩方法可以包括如下步骤:
S141:压缩装置将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到所述S个原始数据块一一对应的S个压缩数据块。
其中,该S个原始数据块中每一个原始数据块为所述原始数据中连续的多个数据,所述连续的多个数据的长度不大于L1,该S个压缩数据块中的每一个压缩数据块的长度d不大于L2,S为正整数,长度为L2的压缩数据块为解压装置中单个解压引擎能够在一个处理周期内处理完的数据块,L1以及L2为大于1的整数,所述d为大于0的整数,L1大于L2。
S142:压缩装置记录S个压缩数据块中每一个压缩数据块的长度。
其中,关于“原始数据”、“数据块”、“原始数据块”、“压缩数据块”、“处理周期”等的描述可以参见上述图5所述的数据压缩方法或其他实施例中相关描述,本申请实施例不再赘述。
与上述图5所示的数据压缩方法不同的是,图5所示的数据压缩方法最终得到规范压缩数据块,其长度固定为L2,通过在压缩数据块增加附加数据来实现。本申请实施例中,压缩数据块即为最终得到的压缩数据块,其长度不固定,压缩装置需要记录该各个压缩数据块的长度,以使解压装置可以对得到的压缩数据中不同长度的压缩数据块进行区分。
其中,步骤S141的一种实现方式可以参见上述S41的两种实现方式,本申请实施例不再赘述。通过S41的两种实现方式,使得压缩数据块的长度尽量接近L2,以使得第四电子设备或解压装置中各个解压引擎在对第一压缩数据块进行解压时,最大程度地利用解压引擎,提高解压效率。
其中,第一原始数据块为S个原始数据块中的任意一个原始数据块,第一压缩数据块为S个压缩数据块中与第一原始数据块对应的压缩数据块,下面以第一压缩数据块为例来描述压缩装置记录压缩数据块长度的实现方式,可以理解,压缩装置记录第一压缩数据块长度可以包括但不限于以下两种实现方式:
第一种实现方式:
压缩装置将第一压缩数据块的长度d记录在第一压缩数据块的起始字段内,该起始字段为从第一压缩数据块起始位开始且长度为第三长度阈值的字段。其中,第三长度阈值可以是4比特或8比特,与L2的大小有关。例如,L2为8个字节,即第一压缩数据块的最大长度为64个比特,则记录的长度值不超过64,第三长度阈值可以是8比特。
解压装置在接收到压缩数据后,通过读取起始字段内存储的长度,进而获取到第一压缩数据块。依次类推,获取下一个第一压缩数据块,进而得到全部的第一压缩数据块。进一步地,解压装置或设备将多个第一压缩数据块依次输入到解压引擎中进行解压。
第二种实现方式:
压缩装置将第一压缩数据块的长度d写入第一文件,该第一文件包括压缩装置依次压缩得到的S个压缩数据块的长度。
压缩装置将S个压缩数据块的长度按照数据的压缩次序依次记录在第一文件中。在压缩装置向第四电子设备或解压装置传输压缩数据时,同时将第一文件发送至第四电子设备或解压装置。解压装置或设备根据第一文件包含的多个长度,对接收到的压缩数据进行划分,得到S个压缩数据块。进一步地,解压装置或设备将S个压缩数据块依次输入到解压引擎中进行解压。
下面介绍本申请实施例提供的一种压缩装置,如图15所示,该压缩装置150包括:压缩单元1501和记录单元1502,其中:
压缩单元1501,用于将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到所述S个原始数据块一一对应的S个压缩数据块,所述S个原始数据块中每一个原始数据块为所述原始数据中连续的多个数据,所述连续的多个数据的长度不大于L1,所述S个压缩数据块中的每一个压缩数据块的长度d不大于L2,S为正整数,长度为L2的压缩数据块为单个解压引擎能够在一个处理周期内处理完的数据块,所述L1以及所述L2为大于1的整数,所述d为大于0的整数,所述L1大于L2;
记录单元1502,用于记录所述S个压缩数据块中每一个压缩数据块的长度。
压缩装置150包括的各个功能单元的具体实现可参考上述图13所述的数据压缩方法中相关描述,这里不再赘述。该压缩装置150中的各个单元可以基于硬件或软件实现上述数据压缩方法,例如,基于硬件时,可以基于FPGA、ASIC等电路来完成各个单元,或者基于软件实现时,可以通过让CPU读取存储器中保存的能够实现上述单元功能的代码来执行相应的功能。
下面介绍本申请实施例提供的又一种压缩装置,如图16所示,该压缩装置160包括:处理器1601、存储器1602,处理器1601通过总线1603连接到存储器1602,其中,所述存储器1602用于存储数据和程序指令,
存储器1602可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)或其他存储器。本申请实施例中,存储器1602用于存储原始数据等数据以及各种软件程序,例如本申请中实现图14所述的数据压缩方法的程序等。可选的,存储器1602可以是DDR,以提高存储器1602与处理器1601之间或存储器1601与解压装置之间的数据传输率。
处理器1601是第一计算机设备的控制中心,可以是一个处理器,也可以是多个处理元件的统称。在具体的实现中,作为一种可选的实施例,处理器1601可以包括一个或多个CPU。处理器1601还可以包括特定的集成电路,例如实施本发明实施例中数据压缩方法的一个或多个微处理器、一个或多个现场可编程门阵列(Field Programmable Gate Array,FPGA)等。
可选地,该压缩装置还包括通信接口1604,通信接口1604用于实现与其他设备,如第二解压设备的数据交换。
所述处理器1601调用所述存储器1602存储的数据和程序指令,执行下述方法:
将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到所述S个原始数据块一一对应的S个压缩数据块,所述S个原始数据块中每一个原始数据块为所述原始数据中连续的多个数据,所述连续的多个数据的长度不大于L1,所述S个压缩数据块中的每一个压缩数据块的长度d不大于L2,S为正整数,长度为L2的压缩数据块为单个解压引擎能够在一个处理周期内处理完的数据块,所述L1以及所述L2为大于1的整数,所述d为大于0的整数,所述L1大于L2;
记录所述S个压缩数据块中每一个压缩数据块的长度。
可选地,该压缩装置还可以包括通信接口1604,以实现与通信对端如解压装置的数据传输。
压缩装置160执行步骤时的具体实现可参考图上述图13所述的数据压缩方法中相关描述,这里不再赘述。
下面介绍本申请实施例涉及的另一种解压装置,如图17,该解压装置170可以包括控制器1700、第一存储器1701、M个解压引擎1702和第二存储器1703,其中:
所述控制器1700用于获取压缩数据,所述压缩数据包括N个压缩数据块以及所述N个压缩数据块中每一个压缩数据块的长度,以及根据所述N个压缩数据块中每一个压缩数据块的长度,将所述压缩数据拆分出N个压缩数据块;
所述第一存储器1701用于存储N个压缩数据块,其中,所述N个压缩数据块中任意一个压缩数据块为独立压缩的长度为不大于L2的数据块,N为正整数,M≥N,长度为L2的压缩数据块为单个解压引擎能够在一个处理周期内处理完的数据块,所述L1以及所述L2为大于1的整数,所述L1大于L2;
N个解压引擎中每一个解压引擎用于获取所述N个压缩数据块中的一个压缩数据块,并分别对所述获取到的压缩数据块进行解压,得到所述N个压缩数据块一一对应的N个原始数据块,其中,所述N个原始数据块中任意一个原始数据块的长度不大于L1,所述M个解压引擎包括所述N个解压引擎;
所述第二存储器1703用于存储所述N个原始数据块。
在一种可能的实现方式中,该解压装置170还包括:拼接电路1704,所述拼接电路1704用于将所述N个原始数据块进行拼接,得到原始数据。
可选地,第一存储器1701可以包括与M个解压引擎一一对应的M个存储子单元,一个存储子单元可以存储一个压缩数据块。同理,第二存储器1703可以包括与M个解压引擎一一对应的M个存储子单元,一个存储子单元可以存储一个原始数据块。
需要说明的是,第一存储器中一个存储子单元和/或第二存储器中一个存储子单元可以设置于对应的解压引擎内,本申请实施例不作限定。
需要说明的是,控制器1700,不是解压装置170必须的器件,解压装置170可以不包括控制器1700,而将控制器1700设于包括该解压装置170的第四电子设备中。控制器1700中的各个流程可以基于硬件或软件实现上述数据压缩方法,例如,基于硬件时,可以基于FPGA、ASIC等电路来完成各个单元,或者基于软件实现时,可以通过让CPU读取存储器 中保存的能够实现上述流程的代码来执行相应的功能。
本申请实施例还提供了一种可实现数据解压功能的第四电子设备,该第四电子设备可以包括如图17所示任意一种解压装置。
下面介绍本申请提供的针对图14所示的数据压缩方法的一种数据解压方法。该方法应用于第四电子设备或解压装置。第四电子设备可以是如图2所示电子设备而或其他包括解压装置的电子设备,解压装置可以是如图17所示的解压装置,也可以是其他解压装置。
如图18所示一种解压方法的流程示意图,该方法包括但不限于以下步骤:
S181:获取压缩数据,所述压缩数据包括N个压缩数据块以及所述N个压缩数据块中每一个压缩数据块的长度,N为正整数;其中,所述N个压缩数据块中任意一个压缩数据块为独立压缩的长度为不大于L2的数据块,N为正整数,M≥N,长度为L2的压缩数据块为单个解压引擎能够在一个处理周期内处理完的数据块。
S182:根据所述N个压缩数据块中每一个压缩数据块的长度,将所述压缩数据拆分出N个压缩数据块。
S183:通过N个解压引擎分别对N个压缩数据块进行解压,得到与N个压缩数据块一一对应N个原始数据块,其中,所述N个原始数据块中任意一个原始数据块的长度不大于L1,L1以及L2为大于1的整数,L1大于L2。
S184:将所述N个原始数据块进行拼接,得到原始数据。
其中,压缩数据块为通过上述图14所述的数据压缩方法得到的压缩数据块。具体可参见图14所示的数据压缩方法中相关描述,本申请实施例不再赘述。
本申请一实施例中,解压装置在接收到压缩数据后,通过读取起始字段内存储的长度,进而获取到压缩数据块。依次类推,获取下一个压缩数据块,进而得到N个压缩数据块。进一步地,解压装置将N个压缩数据块依次输入到解压引擎中进行解压。
本申请一实施例中,压缩装置可以将各个压缩数据块的长度按照数据的压缩次序依次记录在第一文件中。在压缩装置向解压装置传输包括N个压缩数据块和第一文件的压缩数据后,解压装置可以根据第一文件包含的多个长度,对接收到的压缩数据进行划分,得到N个压缩数据块。进一步地,解压装置将N个压缩数据块依次输入到N个解压引擎中进行解压。
请参阅图19,图19是本发明实施例提供的又一种解压装置的结构示意图,该解压装置190可以包括控制器1900以及M个解压引擎1901,其中,控制器1900包括以下单元:
获取单元1902,用于获取压缩数据,所述压缩数据包括N个压缩数据块以及所述N个压缩数据块中每一个压缩数据块的长度,N为正整数;其中,所述N个压缩数据块中任意一个压缩数据块为独立压缩的长度为不大于L2的数据块,N为正整数,M≥N,长度为L2的压缩数据块为单个解压引擎能够在一个处理周期内处理完的数据块;
拆分单元1903,用于根据所述N个压缩数据块中每一个压缩数据块的长度,将所述压缩数据拆分出N个压缩数据块;
数据分发单元1904,用于将N个压缩数据块分发给N个解压引擎,以使所述N个解 压引擎分别对所述N个压缩数据块进行解压,得到与N个压缩数据块一一对应N个原始数据块,N个原始数据块中每一个原始数据块的长度不大于L1,L1以及L2为大于1的整数,L1大于L2;
拼接单元1905,用于将所述N个原始数据块进行拼接,得到原始数据。
解压装置190包括的各个功能单元的具体实现可参考上述图18所述的数据解压方法中相关描述,这里不再赘述。该控制器1900中的各个单元可以基于硬件或软件实现上述数据压缩方法,例如,基于硬件时,可以基于FPGA、ASIC等电路来完成各个单元,或者基于软件实现时,可以通过让CPU读取存储器中保存的能够实现上述单元功能的代码来执行相应的功能。为了实现更快的解压速度,本申请中使用硬件来实现相关的单元的功能。
本申请实施例还提供了一种可实现数据解压功能的第四电子设备,该第四电子设备可以包括如图17或图19所示任意一种解压装置。例如,该第四电子设备200包括:处理器2001、存储器2002以及解压装置2003,其中,处理器2001通过总线2004连接到存储器2002和解压装置2003。
其中,处理器2001为解压装置的控制中心,可以是一个或多个CPU、一个或多个微处理器,或者一个或多个FPGA等,本发明实施例不做限定。
存储器2002用于存储数据和指令,可以是只读存储器、随机存取存储器或其他存储器等,处理器2001用于调用存储器2002的指令实现该第二电子设备的功能。
解压装置2003用于对接收到的压缩数据块进行解压,以还原出原始数据块,该解压装置可以是如图17或图19所示的解压装置。需要说明的是,图20所示的解压装置中各个功能的具体实现可以参照图18所示的方法实施例中相关描述,本申请实施例不再赘述。
可选地,该第四电子设备还可以包括运算装置,该运算装置与解压装置、处理器耦合,用于根据解压装置解压得到的原始数据进行数据处理。具体可参见上述图2描述的电子设备中计算装置的相关描述,此处不再赘述。
本申请实施例还提供了一种压缩解压系统,该压缩解压系统可以包括压缩装置和解压装置,该压缩装置可以是如图15或图16所示的任意一种压缩装置,解压装置可以是图17或图19所示的任意一种解压装置。可以理解,该压缩解压系统可以设置于同一电子设备中,也可以分布在不同的电子设备中。
本申请实施例还提供了一种压缩解压系统,该压缩解压系统可以包括第三电子设备和第四电子设备,具体可参见上述各实施例中第三电子设备和第四电子设备的相关描述,此处,不再赘述。
应理解,本申请中第三电子设备、第四电子设备可以是个人计算机(personal computer,PC)、手机、笔记本电脑、平板电脑、服务器、网关、路由器等设备。其中,第三电子设备和第四电子设备可以设置于同一电子设备中;也可以是不同设备,本申请实施例不作限定。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
Claims (36)
- 一种数据压缩方法,其特征在于,用于将原始数据压缩成供解压装置并行解压的一个或多个长度为L2的规范压缩数据块,其中,所述解压装置包括多个解压引擎,每个所述解压引擎在一个处理周期内能够对一个所述规范压缩数据块进行解压,所述L2为大于1的整数,所述方法包括:执行一次或者多次原始数据块压缩,所述原始数据块压缩包括:基于压缩算法对原始数据块进行处理以得到与所述原始数据块对应的所述规范压缩数据块,其中,所述原始数据块为所述原始数据中包括的数据。
- 如权利要求1所述的方法,其特征在于,所述基于压缩算法对原始数据块进行处理以得到与所述原始数据块对应的所述规范压缩数据块包括:对所述原始数据块通过压缩算法进行独立压缩,得到与所述原始数据块对应的压缩数据块,所述压缩数据块的长度d不大于所述L2;在所述压缩数据块之后添加长度为L2-d的附加数据,从而生成长度为所述L2的所述规范压缩数据块,所述d为大于0的整数。
- 如权利要求2所述的方法,其特征在于,所述原始数据块包括所述原始数据中连续的多个数据,所述原始数据块的长度不大于L1,所述L1为所述解压引擎的出口位宽。
- 如权利要求3所述的方法,其特征在于,在所述原始数据块的长度等于所述L1时,与所述原始数据块对应的所述规范压缩数据块中的附加数据为合法码字;或所述附加数据包括无效标志以及无效数据,其中,所述无效标志用于指示所述附加数据需要弃掉;或,在所述原始数据块的长度小于所述L1时,所述附加数据包括无效标志以及无效数据,其中,所述无效标志用于指示所述附加数据需要弃掉。
- 如权利要求3或4所述的方法,其特征在于,所述对所述原始数据块通过压缩算法进行独立压缩,得到与所述原始数据块对应的压缩数据块包括:S1、从所述原始数据中获取一个待压缩的数据组,所述数据组包括一个或多个比特的数据;S2、判断是否需要对所述待压缩的数据组进行压缩,如果需要进行压缩,则执行S3,否则执行S4;S3、压缩所述待压缩的数据组,压缩完成后执行所述S1;S4、将当前已经压缩得到的数据作为所述压缩数据块;其中,所述判断是否需要对所述待压缩的数据组进行压缩包括:若已被压缩的一个或多个数据组的总长度x与所述待压缩的数据组的长度Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度不大于所述L2,则确定需要进行压缩;若所述 x与所述Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度大于所述L2,则确定不需要进行压缩;若所述x与所述Δx之和大于所述L1,则确定不需要进行压缩。
- 如权利要求3或4所述的方法,其特征在于,所述对所述原始数据块通过压缩算法进行独立压缩,得到与所述原始数据块对应的压缩数据块包括:将所述原始数据中长度为L1的数据块以数据组为步长进行压缩,得到临时压缩数据块;在所述临时压缩数据块的长度大于所述L2时,将所述长度为L1的数据块在去除尾部的i个数据组后得到的数据块作为所述原始数据块,并将所述原始数据块压缩得到的数据作为所述压缩数据块,其中,所述压缩数据块的长度不大于所述L2,所述i为使得所述压缩数据块不大于所述L2的最小正整数;在所述临时压缩数据块的长度不大于所述L2时,将所述长度为L1的数据块作为所述原始数据块,将所述临时压缩数据块作为所述压缩数据块。
- 如权利要求1-6任一所述的方法,其特征在于,所述L2为单个所述解压引擎的入口位宽。
- 一种压缩装置,其特征在于,用于将原始数据压缩成供解压装置并行解压的一个或多个长度为L2的规范压缩数据块,其中,所述解压装置包括多个解压引擎,每个所述解压引擎在一个处理周期内能够对一个所述规范压缩数据块进行解压,所述L2为大于1的整数,包括:处理模块,用于基于压缩算法对原始数据块进行处理以得到与所述原始数据块对应的所述规范压缩数据块,其中,所述原始数据块为所述原始数据中包括的数据。
- 如权利要求8所述的压缩装置,其特征在于,所述处理模块包括:压缩单元,用于对所述原始数据块通过压缩算法进行独立压缩,得到与所述原始数据块对应的压缩数据块,所述压缩数据块的长度d不大于所述L2;规范单元,用于在所述压缩数据块之后添加长度为L2-d的附加数据,从而生成长度为所述L2的所述规范压缩数据块,所述d为大于0的整数。
- 如权利要求9所述的压缩装置,其特征在于,所述原始数据块包括所述原始数据中连续的多个数据,所述原始数据块的长度不大于L1,所述L1为所述解压引擎的出口位宽。
- 如权利要求10所述的压缩装置,其特征在于,在所述原始数据块的长度等于所述L1时,与所述原始数据块对应的所述规范压缩数据块中的附加数据为合法码字;或所述附加数据包括无效标志以及无效数据,其中,所述无 效标志用于指示所述附加数据需要弃掉;或,在所述原始数据块的长度小于所述L1时,所述附加数据包括无效标志以及无效数据,其中,所述无效标志用于指示所述附加数据需要弃掉。
- 如权利要求10或11所述的压缩装置,其特征在于,所述压缩单元具体用于执行如下步骤:S1、从所述原始数据中获取一个待压缩的数据组,所述数据组包括一个或多个比特的数据;S2、判断是否需要对所述待压缩的数据组进行压缩,如果需要进行压缩,则执行S3,否则执行S4;S3、压缩所述待压缩的数据组,压缩完成后执行所述S1;S4、将当前已经压缩得到的数据作为所述压缩数据块;其中,所述判断是否需要对所述待压缩的数据组进行压缩包括:若已被压缩的一个或多个数据组的总长度x与所述待压缩的数据组的长度Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度不大于所述L2,则确定需要进行压缩;若所述x与所述Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度大于所述L2,则确定不需要进行压缩;若所述x与所述Δx之和大于所述L1,则确定不需要进行压缩。
- 如权利要求10或11所述的压缩装置,其特征在于,所述压缩单元具体用于:将所述原始数据中长度为L1的数据块以数据组为步长进行压缩,得到临时压缩数据块;在所述临时压缩数据块的长度大于所述L2时,将所述长度为L1的数据块在去除尾部的i个数据组后得到的数据块作为所述原始数据块,并将所述原始数据块压缩得到的数据作为所述压缩数据块,其中,所述压缩数据块的长度不大于所述L2,所述i为使得所述压缩数据块不大于所述L2的最小正整数;在所述临时压缩数据块的长度不大于所述L2时,将所述长度为L1的数据块作为所述原始数据块,将所述临时压缩数据块作为所述压缩数据块。
- 如权利要求8-13任一所述的压缩装置,其特征在于,所述L2为单个所述解压引擎的入口位宽。
- 一种压缩装置,其特征在于,用于将原始数据压缩成供解压装置并行解压的一个或多个长度为L2的规范压缩数据块,其中,所述解压装置包括多个解压引擎,每个所述解压引擎在一个处理周期内能够对一个所述规范压缩数据块进行解压,所述L2为大于1的整数,所述压缩装置包括:处理器和存储器,其中,所述存储器用于存储数据和程序指令,所述处理器调用所述存储器存储的数据和程序指令,执行:一次或者多次原始数据块压缩,所述原始数据块压缩包括:基于压缩算法对原始数据块进行处理以得到与所述原始数据块对应的所述规范压缩数 据块,其中,所述原始数据块为所述原始数据中包括的数据。
- 如权利要求15所述的压缩装置,其特征在于,所述处理器执行所述基于压缩算法对原始数据块进行处理以得到与所述原始数据块对应的所述规范压缩数据块,具体包括执行:对所述原始数据块通过压缩算法进行独立压缩,得到与所述原始数据块对应的压缩数据块,所述压缩数据块的长度d不大于所述L2;在所述压缩数据块之后添加长度为L2-d的附加数据,从而生成长度为所述L2的所述规范压缩数据块,所述d为大于0的整数。
- 如权利要求16所述的压缩装置,其特征在于,所述原始数据块包括所述原始数据中连续的多个数据,所述原始数据块的长度不大于L1,所述L1为所述解压引擎的出口位宽。
- 如权利要求17所述的压缩装置,其特征在于,在所述原始数据块的长度等于所述L1时,与所述原始数据块对应的所述规范压缩数据块中的附加数据为合法码字;或所述附加数据包括无效标志以及无效数据,其中,所述无效标志用于指示所述附加数据需要弃掉;或,在所述原始数据块的长度小于所述L1时,所述附加数据包括无效标志以及无效数据,其中,所述无效标志用于指示所述附加数据需要弃掉。
- 如权利要求17或18所述的压缩装置,其特征在于,所述处理器执行所述对所述原始数据块通过压缩算法进行独立压缩,得到与所述原始数据块对应的压缩数据块,具体包括执行如下步骤:S1、从所述原始数据中获取一个待压缩的数据组,所述数据组包括一个或多个比特的数据;S2、判断是否需要对所述待压缩的数据组进行压缩,如果需要进行压缩,则执行S3,否则执行S4;S3、压缩所述待压缩的数据组,压缩完成后执行所述S1;S4、将当前已经压缩得到的数据作为所述压缩数据块;其中,所述判断是否需要对所述待压缩的数据组进行压缩包括:若已被压缩的一个或多个数据组的总长度x与所述待压缩的数据组的长度Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度不大于所述L2,则确定需要进行压缩;若所述x与所述Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度大于所述L2,则确定不需要进行压缩;若所述x与所述Δx之和大于所述L1,则确定不需要进行压缩。
- 如权利要求17或18所述的压缩装置,其特征在于,所述处理器执行所述对所述 原始数据块通过压缩算法进行独立压缩,得到与所述原始数据块对应的压缩数据块,具体包括执行:将所述原始数据中长度为L1的数据块以数据组为步长进行压缩,得到临时压缩数据块;在所述临时压缩数据块的长度大于所述L2时,将所述长度为L1的数据块在去除尾部的i个数据组后得到的数据块作为所述原始数据块,并将所述原始数据块压缩得到的数据作为所述压缩数据块,其中,所述压缩数据块的长度不大于所述L2,所述i为使得所述压缩数据块不大于所述L2的最小正整数;在所述临时压缩数据块的长度不大于所述L2时,将所述长度为L1的数据块作为所述原始数据块,将所述临时压缩数据块作为所述压缩数据块。
- 如权利要求15-20任一所述的压缩装置,其特征在于,所述L2为单个所述解压引擎的入口位宽。
- 一种具有压缩功能的电子设备,所述电子设备包括压缩装置和处理装置,所述压缩装置为如权利要求8-14任意一项权利要求所述的压缩装置或如权利要求15-21任意一项权利要求所述的压缩装置;所述处理装置用于向所述压缩装置发送所述原始数据。
- 一种解压装置,其特征在于,包括:第一存储器、M个解压引擎和第二存储器,其中,所述第一存储器用于存储多个规范压缩数据块,其中,一个所述规范压缩数据块为对原始数据块进行独立压缩后生成的长度为L2的数据块,一个所述规范压缩数据块能够被单个所述解压引擎在一个处理周期内解压完成,M为大于1的整数;所述M个解压引擎用于对所述第一存储器存储的规范压缩数据块进行并行解压,一个所述解压引擎用于解压一个所述规范压缩数据块;所述第二存储器用于存储所述规范压缩数据块被解压得到的原始数据块,所述规范压缩数据块与所述原始数据块一一对应。
- 如权利要求23所述的解压装置,其特征在于,所述解压装置还包括拼接电路,所述拼接电路用于将所述第二储存器中存储的原始数据块进行拼接,得到原始数据。
- 如权利要求23或24所述的解压装置,其特征在于,所述M个解压引擎中的每一个解压引擎还用于:在解压得到的原始数据块的长度等于L1时或在识别到所述规范压缩数据块中的无效标志时,停止解压操作。
- 如权利要求23或24所述的解压装置,其特征在于,所述解压装置还包括控制电路,用于:在第一解压引擎解压得到的原始数据块的长度等于所述L1的情况下,停止所述第一解压引擎的解压操作,所述第一解压引擎为所述N个解压引擎中的任意一个解压引擎。
- 如权利要求25或26所述的解压装置,其特征在于,所述解压引擎的出口位宽为所述L1,所述原始数据块的长度不大于所述L1。
- 如权利要求23-27任意一项权利要求所述的解压装置,其特征在于,所述第二存储器包括分别与所述M个解压引擎一一对应的M个存储子单元,所述第一存储子单元用于存储所述第一存储子单元对应的解压引擎所解压得到的原始数据块,第一存储子单元为所述M个存储子单元中的任意一个存储子单元。
- 一种集成电路,其特征在于,所述集成电路包括如权利要求23-28任意一项权利要求所述的解压装置。
- 一种数据解压方法,其特征在于,应用于解压装置,所述解压装置包括M个解压引擎,M为大于1的整数,所述方法包括:获取N个规范压缩数据块,其中,所述N个规范压缩数据块中任意一个规范压缩数据块为对原始数据块进行独立压缩后生成的长度为L2的数据块,一个所述规范压缩数据块能够被单个所述解压引擎在一个处理周期内解压完成,N为正整数,M≥N;通过N个解压引擎分别对所述N个规范压缩数据块进行并行解压,得到N个原始数据块,所述规范压缩数据块与所述原始数据块一一对应;将所述N个原始数据块进行拼接,得到原始数据。
- 如权利要求30所述的数据解压方法,其特征在于,所述N个原始数据块中任意一个原始数据块的长度不大于L1,所述L1为所述解压引擎的出口位宽。
- 如权利要求30或31所述的数据解压方法,其特征在于,第一解压引擎为所述N个解压引擎中的任意一个所述解压引擎,第一规范压缩数据块为所述N个规范压缩数据块中的任意一个规范压缩数据块;所述通过N个解压引擎分别对所述N个规范压缩数据块进行并行解压,得到N个原始数据块,具体包括:通过所述第一解压引擎对所述第一规范压缩数据块进行解压;在所述第一解压引擎解压得到的原始数据块的长度等于所述L1时,停止所述第一解压引擎对所述第一规范压缩数据块的解压操作,输出所述原始数据块;或,在所述第一解压引擎识别到无效标志时,停止所述第一解压引擎对所述第一规范压缩数据块的解压操作,输出当前解压得到的原始数据块。
- 一种具有解压功能的电子设备,其特征在于,包括处理器、存储器以及解压装置,所述处理器耦合所述存储器和所述解压装置,其中,所述解压装置为如权利要求23-28任 意一项权利要求所述的解压装置。
- 一种具有解压功能的电子设备,其特征在于,包括处理器、存储器以及M个解压引擎,所述处理器耦合所述存储器和所述M个解压引擎,所述存储器用于存储数据和程序指令,所述处理器调用所述存储器存储的数据和程序指令,实现如权利要求30-32任一项所述的数据解压方法。
- 一种压缩解压系统,其特征在于,包括压缩装置和解压装置,所述压缩装置为如权利要求8-21任意一项权利要求所述的压缩装置,所述解压装置为如权利要求23-28任意一项权利要求所述的解压装置。
- 一种压缩解压系统,其特征在于,包括第一电子设备和第二电子设备,所述第一电子设备为如权利要求22所述的具有压缩功能的电子设备,所述第二电子设备为如权利要求33或34所述的具有解压功能的电子设备。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201980051013.2A CN112514264A (zh) | 2018-07-31 | 2019-07-31 | 数据压缩、解压方法及相关装置、电子设备、系统 |
EP19844866.4A EP3820048A4 (en) | 2018-07-31 | 2019-07-31 | DATA COMPRESSION AND DECOMPRESSION PROCESS AND ASSOCIATED APPARATUS, ELECTRONIC DEVICE AND SYSTEM |
US17/162,153 US11463102B2 (en) | 2018-07-31 | 2021-01-29 | Data compression method, data decompression method, and related apparatus, electronic device, and system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810859928.3A CN110784225A (zh) | 2018-07-31 | 2018-07-31 | 数据压缩、解压方法及相关装置、电子设备、系统 |
CN201810859928.3 | 2018-07-31 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/162,153 Continuation US11463102B2 (en) | 2018-07-31 | 2021-01-29 | Data compression method, data decompression method, and related apparatus, electronic device, and system |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020025006A1 true WO2020025006A1 (zh) | 2020-02-06 |
Family
ID=69232373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2019/098758 WO2020025006A1 (zh) | 2018-07-31 | 2019-07-31 | 数据压缩、解压方法及相关装置、电子设备、系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11463102B2 (zh) |
EP (1) | EP3820048A4 (zh) |
CN (2) | CN110784225A (zh) |
WO (1) | WO2020025006A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111884658A (zh) * | 2020-07-09 | 2020-11-03 | 上海兆芯集成电路有限公司 | 数据解压缩方法、数据压缩方法及卷积运算装置 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11144207B2 (en) * | 2019-11-07 | 2021-10-12 | International Business Machines Corporation | Accelerating memory compression of a physically scattered buffer |
CN112104658B (zh) * | 2020-09-17 | 2022-08-12 | 山东方寸微电子科技有限公司 | 一种报文压缩方法及系统 |
CN115149958A (zh) * | 2021-03-30 | 2022-10-04 | 华为技术有限公司 | 数据压缩方法及装置 |
CN113326001B (zh) * | 2021-05-20 | 2023-08-01 | 锐掣(杭州)科技有限公司 | 数据处理方法、装置、设备、系统、介质及程序 |
CN113641643A (zh) * | 2021-07-02 | 2021-11-12 | 阿里巴巴新加坡控股有限公司 | 文件写入方法及装置 |
CN113726341B (zh) * | 2021-08-25 | 2023-09-01 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN113590051B (zh) * | 2021-09-29 | 2022-03-18 | 阿里云计算有限公司 | 数据存储和读取方法、装置、电子设备及介质 |
CN116634029B (zh) * | 2023-07-21 | 2023-09-29 | 众科云(北京)科技有限公司 | 基于区块链的用工平台数据快速传输方法 |
CN116634167B (zh) * | 2023-07-24 | 2023-11-07 | 中国科学院空天信息创新研究院 | 卫星成像数据存储及提取方法 |
CN117097346B (zh) * | 2023-10-19 | 2024-03-19 | 深圳大普微电子股份有限公司 | 一种解压器及数据解压方法、系统、设备、计算机介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1247669A (zh) * | 1996-12-18 | 2000-03-15 | 汤姆森消费电子有限公司 | 有效的固定长度块压缩和解压 |
US20110043387A1 (en) * | 2009-08-20 | 2011-02-24 | International Business Machines Corporation | Data compression using a nested hierachy of fixed phrase length static and dynamic dictionaries |
CN103384884A (zh) * | 2012-12-11 | 2013-11-06 | 华为技术有限公司 | 一种文件压缩方法、文件解压缩方法、装置及服务器 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5572209A (en) * | 1994-08-16 | 1996-11-05 | International Business Machines Corporation | Method and apparatus for compressing and decompressing data |
US5654703A (en) * | 1996-06-17 | 1997-08-05 | Hewlett-Packard Company | Parallel data compression and decompression |
US6819271B2 (en) * | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
US7095343B2 (en) * | 2001-10-09 | 2006-08-22 | Trustees Of Princeton University | code compression algorithms and architectures for embedded systems |
US6577254B2 (en) * | 2001-11-14 | 2003-06-10 | Hewlett-Packard Development Company, L.P. | Data compression/decompression system |
US7800519B2 (en) * | 2008-09-30 | 2010-09-21 | Apple Inc. | Method and apparatus for compressing and decompressing data |
US9940230B2 (en) * | 2010-10-22 | 2018-04-10 | Cnex Labs, Inc. | Compression and decompression of data at high speed in solid state storage |
JP2013085071A (ja) * | 2011-10-07 | 2013-05-09 | Fujitsu Ltd | データ圧縮装置、及び方法 |
US8497788B1 (en) * | 2012-04-25 | 2013-07-30 | Pure Storage Inc. | Efficient techniques for aligned fixed-length compression |
CN103458460B (zh) * | 2012-05-31 | 2017-04-12 | 国际商业机器公司 | 对信号数据进行压缩和解压缩的方法和装置 |
US8847798B2 (en) * | 2012-12-17 | 2014-09-30 | Maxeler Technologies, Ltd. | Systems and methods for data compression and parallel, pipelined decompression |
US10019457B1 (en) * | 2013-01-22 | 2018-07-10 | Amazon Technologies, Inc. | Multi-level compression for storing data in a data store |
US9510008B2 (en) * | 2013-11-25 | 2016-11-29 | Entropic Communications, Llc | Video decoder memory bandwidth compression |
US20150227540A1 (en) * | 2014-02-12 | 2015-08-13 | Hitachi, Ltd. | System and method for content-aware data compression |
US9413386B1 (en) * | 2015-02-19 | 2016-08-09 | Qualcomm Incorporated | System, apparatus, and method for decompressing data |
CN104753540B (zh) * | 2015-03-05 | 2019-02-26 | 华为技术有限公司 | 数据压缩方法、数据解压方法和装置 |
US10277248B2 (en) * | 2015-07-07 | 2019-04-30 | Tidal Systems, Inc. | Compression engine with consistent throughput |
CN106503165A (zh) * | 2016-10-31 | 2017-03-15 | 杭州华为数字技术有限公司 | 压缩、解压方法、装置以及设备 |
CN106849956B (zh) * | 2016-12-30 | 2020-07-07 | 华为机器有限公司 | 压缩方法、解压缩方法、装置和数据处理系统 |
-
2018
- 2018-07-31 CN CN201810859928.3A patent/CN110784225A/zh active Pending
-
2019
- 2019-07-31 WO PCT/CN2019/098758 patent/WO2020025006A1/zh unknown
- 2019-07-31 CN CN201980051013.2A patent/CN112514264A/zh active Pending
- 2019-07-31 EP EP19844866.4A patent/EP3820048A4/en active Pending
-
2021
- 2021-01-29 US US17/162,153 patent/US11463102B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1247669A (zh) * | 1996-12-18 | 2000-03-15 | 汤姆森消费电子有限公司 | 有效的固定长度块压缩和解压 |
US20110043387A1 (en) * | 2009-08-20 | 2011-02-24 | International Business Machines Corporation | Data compression using a nested hierachy of fixed phrase length static and dynamic dictionaries |
CN103384884A (zh) * | 2012-12-11 | 2013-11-06 | 华为技术有限公司 | 一种文件压缩方法、文件解压缩方法、装置及服务器 |
Non-Patent Citations (1)
Title |
---|
See also references of EP3820048A4 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111884658A (zh) * | 2020-07-09 | 2020-11-03 | 上海兆芯集成电路有限公司 | 数据解压缩方法、数据压缩方法及卷积运算装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3820048A4 (en) | 2021-09-01 |
CN112514264A (zh) | 2021-03-16 |
CN110784225A (zh) | 2020-02-11 |
US11463102B2 (en) | 2022-10-04 |
US20210152183A1 (en) | 2021-05-20 |
EP3820048A1 (en) | 2021-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020025006A1 (zh) | 数据压缩、解压方法及相关装置、电子设备、系统 | |
US11599770B2 (en) | Methods and devices for programming a state machine engine | |
US11775320B2 (en) | Overflow detection and correction in state machine engines | |
CN107565971B (zh) | 一种数据压缩方法及装置 | |
JP6154824B2 (ja) | ステートマシンラチスにおけるブール型論理 | |
US7924183B2 (en) | Method and system for reducing required storage during decompression of a compressed file | |
US10009606B2 (en) | Low power context adaptive binary arithmetic decoder engine | |
US11955995B2 (en) | Apparatus and method for two-stage lossless data compression, and two-stage lossless data decompression | |
US20160124683A1 (en) | In-memory data compression complementary to host data compression | |
US11947979B2 (en) | Systems and devices for accessing a state machine | |
US10191912B2 (en) | Shared decompression engine | |
CN113300715A (zh) | 一种数据处理方法、装置、硬件压缩设备以及介质 | |
US9864536B2 (en) | System and method for conserving power consumption in a memory system | |
US20190265914A1 (en) | Method and apparatus for data compression and decompression using a standardized data storage and retrieval protocol | |
CN108932315A (zh) | 一种数据解压的方法以及相关装置 | |
Zhao et al. | Implementation of the LZMA compression algorithm on FPGA | |
WO2021237513A1 (zh) | 数据压缩存储的系统、方法、处理器及计算机存储介质 | |
US10491241B1 (en) | Data compression scheme utilizing a repetitive value within the data stream | |
WO2024066753A1 (zh) | 压缩数据的方法和相关装置 | |
WO2021237518A1 (zh) | 数据存储的方法、装置、处理器及计算机存储介质 | |
US20240028577A1 (en) | Hardware accelerated string filter | |
US20220414014A1 (en) | Technology for early abort of compression acceleration | |
WO2023231571A1 (zh) | 数据压缩方法及装置 | |
US11216709B2 (en) | Non-transitory computer-readable storage medium for storing program, output method, and output system | |
WO2024066547A1 (zh) | 数据压缩方法、装置、计算设备及存储系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19844866 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
ENP | Entry into the national phase |
Ref document number: 2019844866 Country of ref document: EP Effective date: 20210203 |