数据压缩、解压方法及相关装置、电子设备、系统制造方法及图纸

技术编号:23318121 阅读:35 留言:0更新日期:2020-02-11 18:53
本申请实施例公开了一种数据压缩、解压方法及相关装置、电子设备、系统,该数据压缩方法通过将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到S个压缩数据块,各个原始数据块为长度不大于L1,各个压缩数据块的长度d不大于L2;进而,在S个压缩数据块中的每一个压缩数据块之后添加长度为L2‑d的附加数据,生成S个长度为L2的规范压缩数据块,该规范数据块为解压装置中的单个解压引擎能够在一个处理周期内处理完的数据块。通过执行本发明专利技术实施例的数据压缩方法可以压缩成长度为固定值的规范压缩数据块,使得各个解压引擎在解压该多个规范压缩数据块时可以同步解压,提高数据的解压效率。

Data compression and decompression methods and related devices, electronic equipment and systems

【技术实现步骤摘要】
数据压缩、解压方法及相关装置、电子设备、系统
本专利技术涉及数据压缩
,尤其涉及一种数据压缩、解压方法及相关装置、电子设备、系统。
技术介绍
对于数据量较大的运算,例如,视频、图像处理或者机器学习等运算通常使用硬件芯片进行加速。在硬件芯片进行数据处理的过程中往往需要从外部存储器实时导入大量的数据。例如,机器学习的硬件加速是一种通过硬件芯片来执行机器学习算法而实现计算加速的技术。在运行机器学习算法时,往往需要大量参数。这些参数无法完全保存在硬件芯片内部,因此在机器学习算法运行时,需要从外部实时导入大量参数。由于实时导入大量参数占用芯片的输入/输出(Input/Output,I/O)带宽,当I/O带宽不足时,导致硬件芯片的计算能力空置,降低机器学习算法的运行速度。通过对外部参数的离线压缩来减小外部参数的体积,并在硬件芯片内通过解压引擎进行实时在线解压还原出外部参数,可以实现在相同的I/O带宽下传输更多的外部参数。然而,解压引擎所能到达的解压速率有限,同样限制了机器学习算法的运行速度。目前,提高硬件芯片解压速率的常用方法为多引擎并行解压。如图1所示的现有技术中多解压引擎解压的原理示意图。在电子设备对一个待压缩文件进行压缩时,将待压缩文件拆分为等长的多个原始数据块,对该多个原始数据块分别进行压缩生成与各个原始数据块一一对应的压缩数据块;在解压时,首先获取多个压缩数据块,将该多个压缩数据块分配到多个解压引擎中,多个解压引擎还原出多个原始数据块,再将多个原始数据块拼接成原始文件(即待压缩文件)。可见,现有技术中由于各个原始数据块的压缩率不同,得到的各个压缩数据块的长度不同,使得各个解压引擎分别对各个压缩数据块进行解压所需要的时间不同,解压装置在最后一个压缩数据块完成解压时,才能将各个解压引擎还原出的原始数据块拼接出需要的数据,解压效率低。
技术实现思路
本专利技术实施例所要解决的技术问题在于,提供一种数据压缩方法、数据解压方法及相关装置、电子设备、系统,通过规范原始数据压缩生成的压缩数据块的长度,使得各个解压引擎在解压该多个压缩数据块时可以同步解压,提高数据的解压效率。第一方面,本专利技术实施例提供了一种数据压缩方法,该方法包括:压缩装置或第一电子设备的处理器将原始数据中连续的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,规范了原始数据压缩生成的压缩数据块的长度,并且,各个规范压缩数据块为独立压缩的,进而可独立解压,使得各个解压引擎在解压该多个规范压缩数据块时可以同步解压,都可以在一个处理周期内完成对特定长度数据的处理,不需要等待解压最慢的一个解压引擎的输出,从而解决了木桶原理(CannikinLaw)中的“短板”的问题,提高数据的解压效率。而且,相对于压缩成变长的压缩数据块,本申请设置成固定长度L2的规范压缩数据块,压缩端不需要记录各个压缩数据块的长度,解压端也不需要记录获取到的数据长度,使得解压端的设计更加简单。进一步地,现有技术中,原始数据划分的原始数据块的个数等于解压引擎的个数,即解压引擎的个数限制了原始数据可划分的粒度,使得原始数据所压缩形成的多个压缩数据块的长度较大。当对随机地址的数据进行访问时,需要将该随机地址的数据所在的压缩数据块进行解压。在解压的过程中,由于压缩数据块中数据的关联性,该压缩数据块只能在一个解压引擎进行解压,无法实现压缩数据的倍速解压。执行上述方法所述的技术方案,原始数据可划分的粒度与解压引擎的个数无关,原始数据可以被压缩为大量较小的规范压缩数据块,各个规范压缩数据块之间不存在关联性,当对随机地址的数据进行访问时,将该随机地址的数据所在的多个连续的规范压缩数据块输入到多个解压引擎中进行解压,可实现对随机地址的压缩数据的倍速解压。在一种可能的实现方式中,第一原始数据块为所述S个原始数据块中的任意一个原始数据块,其中,在第一原始数据块的长度等于第一长度阈值L1时,该第一原始数据块压缩得到的规范数据块中的第一附加数据为合法码字或该第一附加数据包括用于指示解压引擎该第一附加数据为无效数据需要弃掉的无效标志以及在该无效标志后面的大于等于0个的无效数据。在第一原始数据块的长度小于第一长度阈值L1时,该第一附加数据包括用于指示解压引擎该第一附加数据为无效数据需要弃掉的无效标志以及在该无效标志后面的大于等于0个的无效数据。通过上述各种方式设置无效数据或者无效标志,可以让解压引擎停止解压,从而在得到正确的数据的同时,还能够减少解压操作,从而降低解压功耗。可选地,当一个处理周期包括多个时钟周期的情况下,上述该第一原始数据块压缩得到的规范数据块中的第一附加数据包括用于指示解压引擎该第一附加数据为无效数据而停止解压的标志位以及在该标志位后面的大于等于0个的无效数据。在又一种可能的实现方式中,第一原始数据块为S个原始数据块中的任意一个原始数据块,其中,压缩装置将第一原始数据块通过压缩算法进行独立压缩,得到第一压缩数据块的一种实现方式可以包括如下步骤:S1、获取一个待压缩的数据组;S2、判断是否需要对该待压缩的数据组进行压缩,如果需要进行压缩,则执行S3,否则执行S4;S3、压缩该待压缩的数据块组,压缩完成后执行所述S1;S4、将通过压缩该待压缩的数据组之前的一个或多个数据组得到的压缩数据块作为所述第一压缩数据块;其中,判断是否需要对该待压缩的数据组进行压缩的一种实现方式可以包括:若已被压缩的一个或多个数据组的长度x与该待压缩的数据组的长度Δx之和不大于L1且在该待压缩的数据组被压缩后生成的第二压缩数据块长度不大于L2,则确定需要进行压缩;若x与Δx之和不大于L1且在该待压缩的数据组被压缩后生成的第二压缩数据块长度大于L2,则确定不需要进行压缩;若x与Δx之和大于L1,则确定不需要进行压缩。通过上述方法,可以实现对数据块的压缩,具有实现简单,效率高的优点。在又一种可能的实现方式中,第一压缩数据块为与多个压缩数据块中与第一原始数据块对应的压缩数据块,压缩装置将第一原始数据块通过压缩算法进行独立压缩,得到第一压缩数据块的另一实现方式可以是:压缩装置将待压缩数据中长度为第一长度阈值L1的数据块以数据组为步长进行本文档来自技高网
...

【技术保护点】
1.一种数据压缩方法,其特征在于,所述方法包括:/n将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到所述S个原始数据块一一对应的S个压缩数据块,所述S个原始数据块中每一个原始数据块为所述原始数据中连续的多个数据,所述连续的多个数据的长度不大于第一长度阈值L1,所述S个压缩数据块中的每一个压缩数据块的长度d不大于第二长度阈值L2,S为正整数;/n在所述S个压缩数据块中的每一个压缩数据块之后添加长度为L2-d的附加数据,生成S个长度为L2的规范压缩数据块,其中,所述长度为L2的规范数据块为解压装置中的单个解压引擎能够在一个处理周期内处理完的数据块,所述L1以及所述L2为大于1的整数,所述d为大于等于0的整数,所述L1大于所述L2。/n

【技术特征摘要】
1.一种数据压缩方法,其特征在于,所述方法包括:
将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到所述S个原始数据块一一对应的S个压缩数据块,所述S个原始数据块中每一个原始数据块为所述原始数据中连续的多个数据,所述连续的多个数据的长度不大于第一长度阈值L1,所述S个压缩数据块中的每一个压缩数据块的长度d不大于第二长度阈值L2,S为正整数;
在所述S个压缩数据块中的每一个压缩数据块之后添加长度为L2-d的附加数据,生成S个长度为L2的规范压缩数据块,其中,所述长度为L2的规范数据块为解压装置中的单个解压引擎能够在一个处理周期内处理完的数据块,所述L1以及所述L2为大于1的整数,所述d为大于等于0的整数,所述L1大于所述L2。


2.如权利要求1所述的方法,其特征在于,第一原始数据块为所述S个原始数据块中的任意一个原始数据块,其中,
在所述第一原始数据块的长度等于所述L1时,所述第一原始数据块压缩得到的规范数据块中的第一附加数据为合法码字或所述第一附加数据包括用于指示所述解压引擎所述第一附加数据为无效数据需要弃掉的无效标志以及在所述无效标志后面的大于等于0个的无效数据;或,
在所述第一原始数据块的长度小于所述L1时,所述第一附加数据包括用于指示所述解压引擎所述第一附加数据为无效数据需要弃掉的无效标志以及在所述无效标志后面的大于等于0个的无效数据。


3.如权利要求2所述的方法,其特征在于,将所述第一原始数据块通过压缩算法进行独立压缩,得到第一压缩数据块,所述第一压缩数据块为与所述S个压缩数据块中与所述第一原始数据块对应的压缩数据块,包括:
S1、获取一个待压缩的数据组;
S2、判断是否需要对所述待压缩的数据组进行压缩,如果需要进行压缩,则执行S3,否则执行S4;
S3、压缩所述待压缩的数据组,压缩完成后执行所述S1;
S4、将通过压缩所述待压缩的数据组之前的一个或多个数据组得到的压缩数据块作为所述第一压缩数据块;
其中,所述判断是否需要对所述待压缩的数据组进行压缩包括:若已被压缩的一个或多个数据组的长度x与所述待压缩的数据组的长度Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度不大于所述L2,则确定需要进行压缩;若所述x与所述Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的压缩数据块长度大于所述L2,则确定不需要进行压缩;若所述x与所述Δx之和大于所述L1,则确定不需要进行压缩。


4.如权利要求2所述的方法,其特征在于,将所述第一原始数据块通过压缩算法进行独立压缩,得到第一压缩数据块,所述第一压缩数据块为与所述S个压缩数据块中与所述第一原始数据块对应的压缩数据块,包括:
将待压缩数据中长度为L1的数据块以数据组为步长进行压缩,得到第三压缩数据块;
在所述第三压缩数据块的长度大于所述L2时,将所述长度为L1的数据块在去除尾部的i个数据组后得到的数据块作为所述第一原始数据块,并将所述第一原始数据块压缩得到的压缩数据块作为所述第一压缩数据块,其中,所述第一压缩数据块的长度不大于所述L2,i为正整数,且i<L1,所述i为使得所述第一压缩数据块不大于所述L2的最小正整数;
在所述第三压缩数据块的长度不大于所述L2时,将所述长度为L1的数据块作为所述第一原始数据块,将所述第三压缩数据块作为所述第一压缩数据块。


5.如权利要求1-4任意一项权利要求所述的方法,其特征在于,
所述L1为单个解压引擎的出口存储大小;
所述L2为单个解压引擎的入口存储大小。


6.一种压缩装置,其特征在于,包括:
压缩单元,用于将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到所述S个原始数据块一一对应的S个压缩数据块,所述S个原始数据块中每一个原始数据块为所述原始数据中连续的多个数据,所述连续的多个数据的长度不大于第一长度阈值L1,所述S个压缩数据块中的每一个压缩数据块的长度d不大于第二长度阈值L2,S为正整数;
规范单元,用于在所述S个压缩数据块中的每一个压缩数据块之后添加长度为L2-d的附加数据,生成S个长度为L2的规范压缩数据块,其中,所述长度为L2的规范数据块为解压装置中的单个解压引擎能够在一个处理周期内处理完的数据块,所述L1以及所述L2为大于1的整数,所述d为大于等于0的整数,所述L1大于所述L2。


7.如权利要求6所述的压缩装置,其特征在于,第一原始数据块为所述S个原始数据块中的任意一个原始数据块,其中,
在所述第一原始数据块的长度等于所述L1时,所述第一原始数据块压缩得到的规范数据块中的第一附加数据为合法码字或所述第一附加数据包括用于指示所述解压引擎所述第一附加数据为无效数据需要弃掉的无效标志以及在所述无效标志后面的大于等于0个的无效数据;或,
在所述第一原始数据块的长度小于所述L1时,所述第一附加数据包括用于指示所述解压引擎所述第一附加数据为无效数据需要弃掉的无效标志以及在所述无效标志后面的大于等于0个的无效数据。


8.如权利要求7所述的压缩装置,其特征在于,第一压缩数据块为与所述S个压缩数据块中与所述第一原始数据块对应的压缩数据块,所述压缩单元包括用于将所述第一原始数据块通过压缩算法进行独立压缩,得到所述第一压缩数据块,具体包括用于执行如下步骤:
S1、获取一个待压缩的数据组;
S2、判断是否需要对所述待压缩的数据组进行压缩,如果需要进行压缩,则执行S3,否则执行S4;
S3、压缩所述待压缩的数据块组,压缩完成后执行所述S1;
S4、将通过压缩所述待压缩的数据组之前的一个或多个数据组得到的压缩数据块作为所述第一压缩数据块;
其中,所述判断是否需要对所述待压缩的数据组进行压缩包括:若已被压缩的一个或多个数据组的长度x与所述待压缩的数据组的长度Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的第二压缩数据块长度不大于L2,则确定需要进行压缩;若所述x与所述Δx之和不大于所述L1且在所述待压缩的数据组被压缩后生成的第二压缩数据块长度大于L2,则确定不需要进行压缩;若所述x与所述Δx之和大于所述L1,则确定不需要进行压缩。


9.如权利要求7所述的压缩装置,其特征在于,第一压缩数据块为与所述S个压缩数据块中与所述第一原始数据块对应的压缩数据块,所述压缩单元包括用于将所述第一原始数据块通过压缩算法进行独立压缩,得到所述第一压缩数据块,具体包括用于执行如下步骤:
将待压缩数据中长度为第一长度阈值L1的数据块以数据组为步长进行压缩,得到第三压缩数据块;
在所述第三压缩数据块的长度大于所述L2时,将所述长度为L1的数据块在去除尾部的i个数据组后得到的数据块作为所述第一原始数据块,并将所述第一原始数据块压缩得到的压缩数据块作为所述第一压缩数据块,其中,所述第一压缩数据块的长度不大于所述L2,i为正整数,且i<L1,所述i为使得所述第一压缩数据块不大于所述L2的最小正整数;
在所述第三压缩数据块的长度不大于所述L2时,将所述长度为L1的数据块作为第一原始数据块,将所述第三压缩数据块作为所述第一压缩数据块。


10.如权利要求6-9任意一项权利要求所述的压缩装置,其特征在于,
所述L1为单个解压引擎的出口存储大小;
所述L2为单个解压引擎的入口存储大小。


11.一种压缩装置,其特征在于,包括:处理器和存储器,其中,所述存储器用于存储数据和程序指令,所述处理器调用所述存储器存储数据和程序指令,执行:
将原始数据中连续的S个原始数据块中的每一个原始数据块分别通过压缩算法进行独立压缩,得到所述S个原始数据块一一对应的S个压缩数据块,所述S个原始数据块中每一个原始数据块为所述原始数据中连续的多个数据,所述连续的多个数据的长度不大于第一长度阈值L1,所述S个压缩数据块...

【专利技术属性】
技术研发人员:陆超刘保庆何雷骏
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1