CN114640354A - 数据压缩方法、装置、电子设备及计算机可读存储介质 - Google Patents
数据压缩方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114640354A CN114640354A CN202210301266.4A CN202210301266A CN114640354A CN 114640354 A CN114640354 A CN 114640354A CN 202210301266 A CN202210301266 A CN 202210301266A CN 114640354 A CN114640354 A CN 114640354A
- Authority
- CN
- China
- Prior art keywords
- data
- memory bank
- preset rule
- memory
- accord
- 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
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请涉及一种数据压缩方法、装置、电子设备及计算机可读存储介质,属于计算机技术领域。该数据压缩方法包括对N个存储体中的每一个存储体内存储的原始数据进行初始压缩,得到初始压缩数据及对应的数据索引,N个存储体共同存储同一组待压缩数据;从N个存储体中选取出初始压缩数据不符合预设规则的存储体;对不符合预设规则的存储体内存储的原始数据进行重新压缩,得到新压缩数据及对应的新数据索引,新压缩数据符合预设规则。本申请通过将同一组待压缩数据分组存储在N个存储体内,使得各个存储体之间解压缩过程可以并行化处理,提高了解压缩速率及解压缩吞吐量;同时,该压缩方法使得最终压缩后的数据的格式统一,进而简化了解码逻辑。
Description
技术领域
本申请属于计算机技术领域,具体涉及一种数据压缩方法、装置、电子设备及计算机可读存储介质。
背景技术
近年来,人工智能(Artificial Intelligence,AI)技术得到了迅猛的发展,也取得了显著的成果,特别是在图像检测和识别以及语言识别等方向上,人工智能的识别率已经超过了人类。神经网络处理是实现人工智能的重要处理技术,而卷积神经网络算法作为现有的深度学习算法的代表算法之一,其推理预测部分的很大一部分的运算均是基于离散数域的卷积运算。卷积运算包含两种输入数据类型,一类是实时得到的输入特征图(InputFeature Map),另一类是离线得到的权重(weight)。卷积运算就是要完成输入特征图和权重的乘累加运算,运算量巨大,加上权重数据本身存在一定的稀疏性。因此对这类权重数据进行压缩,不仅可以减少从外部存储模块到内部计算模块的数据搬运的数据量,而且还可以有效减少内部运算的数据量。
目前常见的压缩算法有行程长度压缩(Run Length Encoding)算法和霍夫曼压缩编码(Huffman Encoding)算法。其中,行程长度压缩算法是根据字符串的连续重复字符进行编码,缺点是压缩率对于字符串的组成依赖很大,而且由于是数据流编码,解压缩时只能进行串行解码,性能不高。而霍夫曼压缩编码算法使用可变长度的密码本来对源符号进行编码,优点是压缩率高,缺点是压缩算法复杂,运行耗时,解码时也是只能进行串行解码,解码逻辑复杂,速度和解码性能不高。
发明内容
鉴于此,本申请的目的在于提供一种数据压缩方法、装置、电子设备及计算机可读存储介质,以改善现有压缩方式繁琐及解码时只能串行解码,导致解压效率低的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种数据压缩方法,包括:对N个存储体中的每一个存储体内存储的原始数据进行初始压缩,得到初始压缩数据及对应的数据索引;其中,N个存储体共同存储同一组待压缩数据,N为大于等于2的正整数;从N个存储体中选取出初始压缩数据不符合预设规则的存储体;对不符合预设规则的存储体内存储的原始数据进行重新压缩,得到新压缩数据及对应的新数据索引,其中,新压缩数据符合预设规则。
本申请实例中,通过将同一组待压缩数据分组存储在N个存储体内,由于每个存储体都是一个相对独立的存储元件,使得各个存储体之间的压缩及解压缩过程可以并行化处理,提高了压缩及解压缩速率、压缩及解压缩吞吐量;同时,在压缩时,通过将初始压缩后不符合预设规则的存储体筛选出来,再重新对其压缩,使得最终压缩后的所有存储体均符合预设规则,使得所有压缩后的数据的格式统一,简化了解码逻辑,具备对解压缩硬件实现友好的特点。
结合第一方面实施例的一种可能的实施方式,从N个存储体中选取出初始压缩数据不符合预设规则的存储体,包括:获取每一个存储体的初始压缩数据所占据的行数;从N个存储体中选取出初始压缩后数据行数不等于指定行数的存储体,其中,初始压缩后数据行数不等于指定行数的存储体即为不符合预设规则的存储体。
本申请实施例中,利用存储体的初始压缩数据所占据的行数来判断该存储体是否为符合预设规则的存储体,而无需额外引入其他条件,具有判断逻辑简单的优点,从而可以快速选取出不符合预设规则的存储体,同时,可以根据需要对指定行数进行设定,提高了该方案的适用性及灵活性;最为重要的是,由于行数作为存储体的最小存储粒度,对于占用的行数相同,但是行数中的元素个数不同的存储体来说,其所占用的存储空间是一样的,因此采用行数作为判断指标,还可以减少被判断为不符合预设规则的存储体的数量,也即可以减少需要进行重压缩的存储体的数据,从而提高压缩效率。
结合第一方面实施例的一种可能的实施方式,指定行数为最大行数,最大行数为N个存储体的初始压缩数据所占据的行数中的最大行数。
本申请实施例中,通过选取最大行数为指定行数,使得所有存储体中的数据所占据的行数一致,均为最大行数,这样大大简化了硬件解压缩时需要明确从存储部件中读取多少数据量,才能完成这个权重组的解压缩的逻辑。
结合第一方面实施例的一种可能的实施方式,对不符合预设规则的存储体内存储的原始数据进行重新压缩,包括:针对每一个不符合预设规则的存储体,从所有符合预设规则的存储体中选取出初始压缩后数据行数最小,且该初始压缩后数据行数大于该不符合预设规则的存储体初始压缩后数据行数的目标存储体;以目标存储体初始压缩后的数据行数为基准,对该不符合预设规则的存储体内存储的原始数据进行重新压缩,使得重新压缩后的数据行数与目标存储体的初始压缩数据所占据的行数一致。
本申请实施例中,在对不符合预设规则的存储体内存储的原始数据进行重新压缩时,是以目标存储体为基准进行重新压缩,从而可以保证重新压缩后的数据行数与目标存储体的初始压缩数据所占据的行数一致;同时,在选取目标存储体时,从所有符合预设规则的存储体中选取出初始压缩后数据行数最小,且该初始压缩后数据行数大于该不符合预设规则的存储体初始压缩后数据行数的存储体作为目标存储体,使得在重新压缩时,可以减少引入的数据量,从而提高压缩效率,例如,假设符合预设规则的存储体的初始压缩后数据行数有2、4、5三种,不符合预设规则的存储体的初始压缩后数据行数为3,基于上述原则,则目标存储体为初始压缩后数据行数为4的存储体,这样在对不符合预设规则的存储体进行重新压缩时,新压缩数据的行数为4,而不是为5,从而可以减少引入的数据量,提高压缩效率。
结合第一方面实施例的一种可能的实施方式,以目标存储体初始压缩后的数据行数为基准,对该不符合预设规则的存储体内存储的原始数据进行重新压缩,包括:获取目标存储体内存储的原始数据中的零值数据的第一数量,以及获取不符合预设规则的存储体内存储的原始数据中的零值数据的第二数量;获取第一数量与第二数量之差的绝对值,并选取绝对值与第二数值中的最小值;将不符合预设规则的存储体内存储的原始数据中,从最低地址开始的前最小值个数的零值数据作为非零数据进行重新压缩。
本申请实施例中,在对不符合预设规则的存储体内存储的原始数据进行重新压缩时,将不符合预设规则的存储体内存储的原始数据中,从最低地址开始的前最小值个数的零值数据作为非零数据进行重新压缩,这样可以快速将不符合预设规则的存储体内存储的原始数据重新压缩为与符合预设规则的存储体具有一致的格式;同时,尽可能地的减少将零值数据作为非零数据的数量,以此提高重压缩以及解压缩速率。
结合第一方面实施例的一种可能的实施方式,以目标存储体初始压缩后的数据行数为基准,对该不符合预设规则的存储体内存储的原始数据进行重新压缩,包括:获取不符合预设规则的存储体内存储的原始数据的数量与目标存储体对应的初始压缩数据的数量的第一差值;获取不符合预设规则的存储体内存储的原始数据中的零值数据的数量与第一差值的差值,得到第二差值;将不符合预设规则的存储体内存储的原始数据中,从最高地址开始的前第二差值个数的零值数据作为非零数据进行重新压缩。
本申请实施例中,在对不符合预设规则的存储体内存储的原始数据进行重新压缩时,将不符合预设规则的存储体内存储的原始数据中,从最高地址开始的前第二差值个数的零值数据作为非零数据进行重新压缩,这样可以快速将不符合预设规则的存储体内存储的原始数据重新压缩为与符合预设规则的存储体具有一致的格式,同时,再重新压缩时,只是将部分零值数据作为非零数据进行重新压缩,并未引入额外的数据,这样可以提高解压缩的效率。
结合第一方面实施例的一种可能的实施方式,对N个存储体中的每一个存储体内存储的原始数据进行初始压缩,包括:去除每一个存储体内存储的零值数据,并将剩余的原始数据依次排列组合在一起;利用指定数值数据将排列组合后所占据的行的空格补齐。
本申请实施例中,通过利用指定数值的数据将排列组合后所占据的行的空格补齐,使得压缩后的数据为整数行,这样在解压缩时,硬件能更好地区分不同的压缩数据组,能加快解压缩的效率。
第二方面,本申请实施例还提供了一种数据压缩装置,包括:初始压缩模块、选择模块以及重压缩模块;初始压缩模块,用于对N个存储体中的每一个存储体内存储的原始数据进行初始压缩,得到初始压缩数据及对应的数据索引;其中,N个存储体共同存储同一组待压缩数据,N为大于等于2的正整数;选择模块,用于从N个存储体中选取出初始压缩数据不符合预设规则的存储体;重压缩模块,用于对不符合预设规则的存储体内存储的原始数据进行重新压缩,得到新压缩数据及对应的新数据索引,其中,新压缩数据符合预设规则。
第三方面,本申请实施例还提供了一种电子设备,包括:存储器和处理器,处理器与存储器连接;存储器,用于存储程序和存储待压缩数据;处理器,用于调用存储于存储器中的程序,以执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器运行时,执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的一种数据压缩方法的流程示意图。
图2示出了本申请实施例提供的一种存储在bank0和bank1中的待压缩数据的示意图。
图3示出了本申请实施例提供的一种对bank0内和bank1内存储的原始数据进行初始压缩后得到的初始压缩数据及对应的数据索引的示意图。
图4示出了本申请实施例提供的一种对bank1内存储的原始数据进行重新压缩后得到的新压缩数据及对应的新数据索引的示意图。
图5示出了本申请实施例提供的又一种对bank1内存储的原始数据进行重新压缩后得到的新压缩数据及对应的新数据索引的示意图。
图6示出了本申请实施例提供的一种数据压缩装置的模块示意图。
图7示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
鉴于现有数据压缩方法所存在的缺陷,本申请提供了一种针对原始数据,如用于卷积计算的卷积权重(weight)数据进行压缩的数据压缩方法,通过利用原始数据的稀疏特性来实现对数据的压缩,具有压缩速度快、压缩率高、解码逻辑简单、可并行化解码及对解压缩硬件实现友好的优点。需要说明的是,本申请所示的数据压缩方法并不限于卷积权重的压缩,该数据压缩方法可以适用于任何具有稀疏特性的数据压缩。
下面将结合图1,对本申请实施例提供的数据压缩方法进行说明。
S1:对N个存储体中的每一个存储体内存储的原始数据进行初始压缩,得到初始压缩数据及对应的数据索引。
考虑到数据通常是存储在存储部件(buffer),如存储器中,而通常一个存储部件由M个存储体(bank)构成,为了能加快压缩效率以及解压缩时能并行运行,本申请在存储同一组待压缩数据时,将其存储在N个存储体中,也即N个存储体共同存储同一组待压缩数据,其中每个存储体存储该组待压缩数据中的一部分,即相当于将待压缩数据分成N份,分别存储于N个存储体中。由于buffer的每一个bank都是一个相对独立的存储元件,所以可以实现各个bank之间解压缩过程的并行化,提升解压缩速率及解压缩吞吐量。其中,N为大于等于2的正整数,M为大于等于N的正整数。
假设每个存储体的每行可存储的数据位宽为C,用[C-1:0]表示可存储的数据的比特范围,其中本领域中常用的数据位宽包括但不限于64、128以及256比特等。用c表示单个数据所占用的比特数目,通常c应该是4的倍数,则每行可存储C/c个数据。本申请所支持的数据类型包括4bit整型、8bit整型、16bit整型、32bit整型、16bit浮点、32bit浮点及64bit浮点等类型。
本申请提出的数据压缩方法基于每一个存储体为最小单元进行,压缩时,对N个存储体中的每一个存储体内存储的原始数据进行初始压缩,得到初始压缩数据及对应的数据索引。
一种可选实施方式下,对每一个存储体内存储的原始数据进行初始压缩的过程可以是:先去除每一个存储体内存储的零值数据,之后将剩余的原始数据依次排列组合在一起,从而得到初始压缩数据。本申请考虑到参与卷积运算的权重数据有着稀疏性的特性,因此,在压缩时可以先将存储体内存储的原始数据中的零值数据剔除,再将其余原始数据紧密排列组合在一起。另外为了便于在解压缩时,将压缩数据还原,还需要对应生成数据索引,以便于指示哪些原始数据是零值数据,是被剔除掉的数据。
为了便于理解,举例进行说明,假设某个存储体内存储的原始数据为{0,1,3,0,0,0,0,0,0,5,2,5,1,0,0,1},则进行初始压缩后得到的初始压缩数据为{1,3,5,2,5,1,1}。
其中,用于还原压缩后的原始数据的数据索引可以有多种实现方式,例如,可以是用1和0来构成数据索引,如用1表示原始数据中的非零值数据,用0表示原始数据中的零值数据。以上述的例子为例,则对应的数据索引为{0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,1}。由于上述示例中的第0个位置的数据为“0”,相应的索引为0;第1个位置的数据为“1”,对应的索引为1;以此类推,第14个位置的数据为“0”,相应的索引为0;第15个位置的数据为“1”,对应的索引为1。
当然除了采用上述方式的数据索引外,还可以采用其他的方式,例如,按照非零值数据在存储体中的绝对位置确定压缩后的原始数据对应的数据索引。还是以上述的示例为例,则对应的数据索引为{1,2,9,10,11,12,15},即数据索引表示压缩后保留的原始数据在原始数据中的绝对位置。针对压缩后保留的原始数据“1”,其在原始数据中的位置序号为1;针对压缩后保留的原始数据“3”,其在原始数据中的位置序号为2;针对压缩后保留的原始数据“5”,其在原始数据中的位置序号为9;针对压缩后保留的原始数据“2”,其在原始数据中的位置序号为10;针对压缩后保留的原始数据“5”,其在原始数据中的位置序号为11;针对压缩后保留的原始数据“1”,其在原始数据中的位置序号为12;针对压缩后保留的原始数据“1”,其在原始数据中的位置序号为15。
此外,还可以按照零权重在原始数据中的绝对位置确定压缩后的原始数据对应的数据索引。还是以上述的例子为例,则对应的数据索引为{0,3,4,5,6,7,8,13,14},其中,数据索引中的“0”表示压缩前的零权重在原始数据中的第0个位置;数据索引中的“3”表示压缩前的零权重在原始数据中的第3个位置;数据索引中的“4”表示压缩前的零权重在原始数据中的第4个位置;以此类推,数据索引中的“14”表示压缩前的零权重在原始数据中的第14个位置。
此外,还可以按照原始数据中非零值数据相对前一非零值数据之间所间隔的零值数据的数目确定压缩后的原始数据对应的数据索引。还是以上述的示例为例,则对应的数据索引为{1,0,6,0,0,0,2}。针对压缩后保留的原始数据“1”,其相对前一非零值数据(其前面也不存在非零值数据)而言,中间间隔的零值数据数目为1;针对压缩后保留的原始数据“3”,其相对前一非零值数据(其前面的非零值数据为“1”)而言,中间间隔的零值数据数目为0;针对压缩后保留的原始数据“5”,其相对前一非零值数据(其前面的非零值数据为“3”)而言,中间间隔的零值数据数目为6;针对压缩后保留的原始数据“2”,其相对前一非零值数据(其前面的非零值数据为“5”)而言,中间间隔的零值数据数目为0;针对压缩后保留的原始数据“5”,其相对前一非零值数据(其前面的非零值数据为“2”)而言,中间间隔的零值数据数目为0;针对压缩后保留的原始数据“1”,其相对前一非零值数据(其前面的非零值数据为“5”)而言,中间间隔的零值数据数目为0;针对压缩后保留的原始数据“1”,其相对前一非零值数据(其前面的非零值数据为“1”)而言,中间间隔的零值数据数目为2。
除了采用上述方式外,还可以按照原始数据中零值数据相对前一零值数据之间所间隔的非零值数据的数目确定压缩后的原始数据对应的数据索引等。需要说明的是,本申请中并不对数据索引的实现方式进行限制,只要能根据该数据索引将压缩后的原始数据还原成原始数据的任何数据索引方式均可。
一种可选实施方式下,对N个存储体中的每一个存储体内存储的原始数据进行初始压缩的过程可以是:去除每一个存储体内存储的零值原始数据,并将剩余的原始数据依次排列组合在一起,利用指定数值数据将排列组合后所占据的行的空格补齐。在对原始数据进行初始压缩,将剩余的原始数据依次排列组合在一起时,若剩余的原始数据排列组合在一起后,所占据的行还存在空格,则还可以利用指定数值(如零值数据或无用数据)将排列组合后所占据的行的空格填充满(补齐),通过将已占据的行的空格补齐,以便于硬件更好地区分不同的权重组,能加快解压缩的效率。
为了便于理解,举例进行说明,假设每一个存储体的每一行可以存储8个数据,16个初始原始数据压缩后得到7个非零数据,由于这7个非零数据所占据的行还存在一个空格,因此可以用0将剩余的空格补齐。又例如,16个初始原始数据压缩后得到9个非零数据,这9个非零数据会占据两行,其中第二行只有1个数据,剩余7个空格,因此可以0将剩余的7个空格补齐。
通过利用指定数值的数据将压缩后所占据的存在空格的行填充满,使得压缩后的数据为整数行,这样在解压缩时,硬件能更好地区分不同的压缩数据组,能加快解压缩的效率。其中,填充的数据数量为C/c*初始压缩后的数据行数-原始数据中的非零数据的数量,用公式表示如下:C/c*compressed_entry_for_bank[i]-non_zero_count[i],其中,C/c表示每行可存储的数据个数,compressed_entry_for_bank[i]表示第i个存储体的初始压缩数据的数据行数,non_zero_count[i],表示第i个存储体内存储的原始数据中的非零数据的数量。需要说明的是,在对存储体内存储的原始数据进行初始压缩时,如果需要对数据进行量化处理,则一种实施方式下,还可以先对存储的原始数据(如浮点数据)进行量化处理(即将浮点数据转换为定点数据),之后再对量化处理后的定点数据进行初始压缩。通过量化建立了一种有效的数据映射关系,从而将定点数据与浮点数据桥接起来,使得以较小的精度损失代价获得了较好的收益。下面对量化及反量化的原理进行说明:
由浮点数据到定点数据的量化公式为Q=Z+R/S,由定点数据到浮点数据的反量化公式为R=(Q-Z)*S。其中,R表示真实的浮点值,Q表示量化后的定点值,Z表示浮点值0对应的量化定点值,S则为定点量化后可表示的最小刻度,S和Z的求值公式如下:
S=(Rmax-Rmin)/(Qmax-Qmin),Z=Qmax-Rmax/S。其中,Rmax表示最大的浮点值,Rmin表示最小的浮点值,Qmax表示最大的定点值,Qmin表示最小的定点值。
其中,S和Z均是量化参数,而Q和R均可由公式进行求值,不管是量化后的Q还是反量化求得的浮点值R,如果它们超出各自可表示的最大范围,那么均需要进行截断处理(超过最大值,就用最大值表示,小于最小值,就用最小值表示)。而浮点值0在神经网络里有着举足轻重的意义,比如padding(填充)时就用的0,因而必须有精确的整型值来对应浮点值0(即量化零)。
下面以模型量化求值过程进行说明。模型训练后权重往往在一个有限的范围内分布,如权重范围为[-2.0,6.0],若用int8(有符号8位整数)进行模型量化,则定点量化值范围为[-128,127],那么S和Z的求值过程如下:
Z=127-6.0÷0.031372549≈127-191.25≈-64.25≈-64
则存在如下对应关系表:
假设R为0.28,那么对应Q的求值如下:
Q=0.28÷0.031372549+(-64)≈8.925-64≈-55.075≈-55
这样,就可以一一得到所有权重的量化值。
S2:从N个存储体中选取出初始压缩数据不符合预设规则的存储体。
在对N个存储体中每一个存储体内存储的原始数据进行初始压缩,得到初始压缩数据及对应的数据索引后,从N个存储体中选取出初始压缩数据不符合预设规则的存储体,以便于对不符合预设规则的存储体内存储的原始数据进行重新压缩。
从N个存储体中选取出初始压缩数据不符合预设规则的存储体的过程可以是:获取每一个存储体的初始压缩数据所占据的行数,从N个存储体中选取出初始压缩后数据行数不等于指定行数的存储体,其中,数据行数不等于指定行数的存储体即为不符合预设规则的存储体。
可以用B来表示这N个存储体对应的指定行数的个数,即这N个存储体可以有多少个指定行数,B的取值为1至N的整数,如最小值为1,最大值为N。一种实施方式下,该指定行数为N个存储体内存储的原始数据进行初始压缩后所占据的行数中的最大行数,此时,指定行数仅有一个,即B=1。其中,数据行数小于最大行数的存储体即为不符合预设规则的存储体。为了便于理解,举例进行说明,假设有2个存储体,分别为存储体0和存储体1,若存储体0的初始压缩数据所占据行数为3,存储体1的初始压缩数据所占据行数为2,由于存储体1内的原始数据进行初始压缩后数据行数小于最大行数(此时为3),因此存储体1即为不符合预设规则的存储体。该方式可以推广到更多的存储体,并不限于上述示例的2个存储体的情形。
在指定行数为最大行数的实施方式下,对不符合预设规则的存储体内的原始数据进行重压缩后,新压缩数据所占的行数等于最大行数,此时,所有存储体中的数据所占据的行数一致,均为最大行数,这样大大简化了硬件解压缩时需要知道从存储部件中读取多少数据量,才能完成这个权重组的解压缩的逻辑。例如,只需要从存储部件中读取最大行数*C*N的数据量,即可完成这个权重组的解压缩。
又一种实施方式下,该指定行数除了包含最大行数外,还可以包含其他行数。也即此时的指定行数可以是多个,B为大于等于2,且小于N的整数。为了便于理解,举例进行说明,假设有4个存储体,分别为存储体0、存储体1、存储体2、存储体3,若存储体0的初始压缩数据所占据行数为3,存储体1的初始压缩数据所占据行数为2,存储体2的初始压缩数据所占据行数为1,存储体3的初始压缩数据所占据行数为2。假设指定行数B=2,也即指定行数的个数为2,如指定行数可以为3行和2行这两个行数,则上述4个存储体(存储体0、存储体1、存储体2、存储体3)中行数不符合指定行数的存储体为存储体2。这样在重压缩时,仅对存储体2进行重压缩,这样可以提高压缩效率。
一种实施方式下,可以通过如下方式来确定指定行数,其中,指定行数的个数B需要事先设置,B的取值为1至N的整数。若B为1,则指定行数为最大行数;若B为大于等于2的整数,则指定行数除了包含最大行数外,还包括B-1个其他行数。其他行数的选取原则可以是:选择该其他行数后,对不符合预设规则的存储体进行重压缩后,其所有不符合预设规则的存储体重压缩后的数据行数与符合预设规则的存储体初始压缩后的数据行数的总和需最小。结合上述4个存储体的例子为例,若B=2,指定行数除了最大行数3外,剩余一个指定行数需要在行数1与行数2之间进行选择,若剩余一个指定行数选择行数1,则需要对存储体1和存储体3进行重压缩,则重压缩后的行数均为3,此时,4个存储体的总行数为存储体0的3行+存储体1的3行+存储体2的1行+存储体3的3行=10行。若剩余一个指定行数选择行数2,则只需要对存储体2进行重压缩,存储体2重压缩后的行数为2,此时,4个存储体的总行数为存储体0的3行+存储体1的2行+存储体2的2行+存储体3的2行=9行。因此,剩余一个指定行数选择行数2。
S3:对不符合预设规则的存储体内存储的原始数据进行重新压缩。
在从N个存储体中选取出初始压缩数据不符合预设规则的存储体后,对不符合预设规则的存储体内存储的原始数据进行重新压缩,得到新压缩数据及对应的新数据索引,其中,重新压缩的过程与初始压缩的过程类似,不同之处在于,在重新压缩时,需要将原始数据中的部分零值数据作为非零数据进行压缩,以使重新压缩后得到的新压缩数据符合预设规则。
一种实施方式下,对不符合预设规则的存储体内存储的原始数据进行重新压缩的过程可以是:针对每一个不符合预设规则的存储体,从符合预设规则的存储体中选择出目标存储体,并以目标存储体初始压缩后的数据行数为基准,对该不符合预设规则的存储体内存储的原始数据进行重新压缩,使得重新压缩后的数据行数与目标存储体的初始压缩后的数据行数一致。
其中,在从符合预设规则的存储体中选择出目标存储体时,可以是针对每一个不符合预设规则的存储体,从所有符合预设规则的存储体中选取出初始压缩后数据行数最小,且该初始压缩后数据行数大于该不符合预设规则的存储体初始压缩后数据行数的目标存储体。为了便于理解,结合例进行说明。假设有4个存储体,分别为存储体0、存储体1、存储体2、存储体3,若存储体0的初始压缩数据所占据行数为5,存储体1的初始压缩数据所占据行数为4,存储体2的初始压缩数据所占据行数为1,存储体3的初始压缩数据所占据行数为2。若B=2,则指定行数为5和2。则符合预设规则的存储体分别为存储体0和存储体3,则不符合预设规则的存储体分别为存储体1和存储体2。在针对存储体1选择目标存储体时,需要从存储体0和存储体3中选择,由于存储体1初始压缩后数据行数为4,则从存储体0和存储体3中选择初始压缩后数据行数最小,且需要大于4的存储体作为目标存储体,符合这一规律的存储体为存储体0,即针对存储体1来说,其目标存储体为存储体0。同理,在针对存储体2选择目标存储体时,需要从存储体0和存储体3中选择,由于存储体2初始压缩后数据行数为1,则从存储体0和存储体3中选择初始压缩后数据行数最小,且需要大于2的存储体作为目标存储体,符合这一规律的存储体为存储体3,即针对存储体2来说,其目标存储体为存储体3。
需要说明的是,除了采用上述规则(针对每一个不符合预设规则的存储体,从所有符合预设规则的存储体中选取出初始压缩后数据行数最小,且该初始压缩后数据行数大于该不符合预设规则的存储体初始压缩后数据行数的目标存储体)来选取目标存储体外,还可以是从所有符合预设规则的存储体中选取出初始压缩后数据行数大于该不符合预设规则的存储体初始压缩后数据行数的存储体来作为目标存储体。例如,假设符合预设规则的存储体的初始压缩后数据行数有2、4、5三种,不符合预设规则的存储体的初始压缩后数据行数为3,基于上述原则,则目标存储体为初始压缩后数据行数为4的存储体,当然,又一种实施方式下,也可以是选取初始压缩后数据行数为5的存储体作为目标存储体,因此,不能将上述示例的选取目标存储体的方式,理解成是对本申请的限制。
在以目标存储体初始压缩后的数据行数为基准,对该不符合预设规则的存储体内存储的原始数据进行重新压缩时,一种实施方式下,可以是:获取目标存储体内存储的原始数据中的零值数据的第一数量,以及获取不符合预设规则的存储体内存储的原始数据中的零值数据的第二数量,然后获取第一数量与第二数量之差的绝对值,并选取绝对值与第二数值中的最小值,之后对不符合预设规则的存储体内存储的原始数据进行重新压缩,在重新压缩时,将不符合预设规则的存储体内存储的原始数据中,从最低地址(LeastSignificant Bit,LSB)开始的前最小值个数的零值数据当成非零数据进行重新压缩。假设每个存储体内存储的原始数据中的零值数据的个数用org_zero_count表示,非零数据的个数用non_zero_count表示,第一数量与第二数量之差的绝对值用delta_non_zero_count表示,则绝对值与第二数值中的最小值可以表示为min(delta_non_zero_count,org_zero_count)。假设最小值为5,由于将从最低地址开始的前5个零值数据当成非零数据,因此,在重新压缩时,从最低地址开始的前5个零值数据不再剔除,仅剔除之后的零值数据。
需要说明的是,由于存储体内存储的原始数据中的非零数据和零值数据是相对的,上述过程也可以是:获取目标存储体内存储的原始数据中的非零数据的第一数量,以及获取不符合预设规则的存储体内存储的原始数据中的非零数据的第二数量,然后获取第一数量与第二数量之差的绝对值,之后获取绝对值与不符合预设规则的存储体内存储的原始数据中的零值数据数量的最小值,将不符合预设规则的存储体内存储的原始数据中,从最低地址开始的前最小值个数的零值数据当成非零数据进行重新压缩。
又一种实施方式下,S3所示的重压缩的过程可以是:获取不符合预设规则的存储体内存储的原始数据的数量与目标存储体对应的初始压缩数据的数量的第一差值,然后获取不符合预设规则的存储体内存储的原始数据中的零值数据的数量与第一差值的差值,得到第二差值,之后对不符合预设规则的存储体内存储的原始数据进行重新压缩,在重新压缩时,将不符合预设规则的存储体内存储的原始数据中,从最高地址(Most SignificantBit,MSB)开始的前第二差值个数的零值数据当成非零数据进行重新压缩。假设目标存储体对应的初始压缩数据的数量为24,不符合预设规则的存储体内存储的原始数据的数量为32,则第一差值为8,假设获取不符合预设规则的存储体内存储的原始数据中的零值数据的数量为22,则第二差值为22-8=16,也即在重新压缩时,需要将不符合预设规则的存储体内存储的原始数据中从最高地址开始的前16个零值数据当成非零数据进行重新压缩,其余的零值数据正常压缩(压缩时需要剔除)。
为了便于理解,举例进行说明,假设N=2,C=256,c=32,则每个存储体每行可存储8个数据,假设存储在bank0和bank1中的原始待压缩数据组如图2所示。其中,bank0中包含13个0,bank1中包含22个0,先对bank0和bank1进行初始压缩,将零数据全部剔除,bank0中还剩19个有效数据,需要额外填充5个(8*3-19)零数据进行补齐。同理bank1中包含10个有效数据,需要额外填充6个(8*2-10)零数据进行补齐。对bank0和bank1内存储的原始数据进行初始压缩后得到的初始压缩数据及对应的数据索引,如图3所示。
对于数据索引的产生过程,可以用二维坐标表示原始数据在bank0中的位置,比如坐标(0,0)表示第0行的第一个元素(从低位开始),其为0;(0,2)表示第0行的第三个元素,其为1;(1,0)表示第1行的第一个数据,其为8,以此类推。对于数值为0的坐标点,在同样的索引坐标点处,填比特0,表示这个坐标点的数据为零,被剔除掉。对于数值为非零的坐标点,在同样的索引坐标点处,填比特1,表示这个坐标点的数据为非零,予以保留。基于上面的方法,坐标(0,0)位置处的数据的数值为0,所以坐标(0,0)位置处的索引为0,坐标(1,0)和(0,2)位置处的数据为非0,所以同样坐标位置的索引为1。按照这样的方法便可得到所有bank压缩后的数据和对应索引。需要说明的是,此处示例中的数据索引是用1和0来构成的,如用1表示原始数据中的非零值数据,用0表示原始数据中的零值数据,从而得到对应的数据索引。除了采用该方式外,还可以采用上述描述的其他方式。
假设指定行数的个数B=1,由于bank0初始压缩后的数据行数为3,bank1初始压缩后的数据行数为2,因此需要对bank1内存储的原始数据进行重新压缩。
一种实施方式下,在对bank1内存储的原始数据进行重新压缩时,可以是,先获取bank0内存储的原始数据中数据的第一数量(如13),以及获取bank1内存储的原始数据中的零值数据的第二数量(如为22),则第一数量与第二数量之差的绝对值为9。则Min(9,22)=9,因此,在对bank1内存储的原始数据进行重新压缩时,需要将原始数据中从最低地址(LSB)开始的前9个零值数据当成非零数据进行重新压缩,即将原始数据中的坐标(0,0)到(0,7)中的5个零及坐标(1,0)到(1,5)中的4个零当成非零进行重压缩,对bank1内存储的原始数据进行重新压缩后得到的新压缩数据及对应的新数据索引,如图4所示。
又一种实施方式下,仍然用图2所示的例子,由于bank1重压缩后,其数据行数与bank0的初始压缩数据所占据的行数一致,bank0对应的初始压缩数据的数量为24,因此,对于bank1的原始32个数据,在进行重新压缩时,需要压缩掉其中的8个零,使得新压缩数据数量为24。而bank1存储的原始数据中的零值数据的个数为22,所以在重压缩时,需要将bank1内存储的原始数据中从最高地址开始的前14(22-8)个零值数据当成非零数据进行重新压缩,该种实施方式下,对bank1内存储的原始数据进行重新压缩后得到的新压缩数据及对应的新数据索引,如图5所示。
此外,若指定行数的个数不为1,也即B为大于等于2,且小于N的整数时,除了记录每个bank的压缩后的数据以及对应的数据索引外,还需要记录B的数值、指定行数以及每个bank所占据的行数。以上述的假设有4个bank,分别为bank0、bank1、bank2、bank3为例,若bank0的初始压缩数据所占据行数为3,bank1的初始压缩数据所占据行数为2,bank2的初始压缩数据所占据行数为1,bank3的初始压缩数据所占据行数为2。假设指定行数的个数为2,如指定行数为3行和2行这两个行数。则除了记录每个bank的压缩后的数据以及对应的数据索引外,还需要记录:B=2,指定行数{3,2},以及bank0对应的行数为3,bank1、bank2、bank3对应的行数为2。可以用一组二进制数来记录每个bank压缩后的数据所占据的行数,如用二进制1110来记录bank0、bank1、bank2、bank3压缩后的数据所占据的行数,其中该二进制中的最低0,表示bank0采用{3,2}集合中的第零个元素,该二进制中的次低位,表示bank1采用{3,2}集合中的第1个元素,以此类推。
基于同样的发明构思,本申请实施例还提供了一种数据压缩装置100,如图6所示。该数据压缩装置100包括初始压缩模块110、选择模块120以及重压缩模块130。
初始压缩模块110,用于对N个存储体中的每一个存储体内存储的原始数据进行初始压缩,得到初始压缩数据及对应的数据索引;其中,N个存储体共同存储同一组待压缩数据,N为大于等于2的正整数。
选择模块120,用于从N个存储体中选取出初始压缩数据不符合预设规则的存储体。
重压缩模块130,用于对不符合预设规则的存储体内存储的原始数据进行重新压缩,得到新压缩数据及对应的新数据索引,其中,新压缩数据符合预设规则。
可选地,初始压缩模块110,在对N个存储体中的每一个存储体内存储的原始数据进行初始压缩时,具体用于:去除每一个存储体内存储的零值数据,并将剩余的原始数据依次排列组合在一起;利用指定数值数据将排列组合后所占据的行的空格补齐。
选择模块120,在从N个存储体中选取出初始压缩数据不符合预设规则的存储体时,具体用于:获取每一个存储体的初始压缩数据所占据的行数;从N个存储体中选取出初始压缩后数据行数不等于指定行数的存储体,其中,初始压缩后数据行数不等于指定行数的存储体即为不符合预设规则的存储体。
可选地,重压缩模块130,在对不符合预设规则的存储体内存储的原始数据进行重新压缩时,具体用于:针对每一个不符合预设规则的存储体,从符合预设规则的存储体中选择出目标存储体,并以目标存储体初始压缩后的数据行数为基准,对该不符合预设规则的存储体内存储的原始数据进行重新压缩,使得重新压缩后的数据行数与目标存储体的初始压缩数据所占据的行数一致。
可选地,重压缩模块130,在针对每一个不符合预设规则的存储体,从符合预设规则的存储体中选择出目标存储体时,具体用于:针对每一个不符合预设规则的存储体,从所有符合预设规则的存储体中选取出初始压缩后数据行数最小,且该初始压缩后数据行数大于该不符合预设规则的存储体初始压缩后数据行数的目标存储体。
可选地,重压缩模块130,在以目标存储体初始压缩后的数据行数为基准,对该不符合预设规则的存储体内存储的原始数据进行重新压缩时,具体用于:获取目标存储体内存储的原始数据中的零值数据的第一数量,以及获取不符合预设规则的存储体内存储的原始数据中的零值数据的第二数量;获取第一数量与第二数量之差的绝对值,并选取绝对值与第二数值中的最小值;将不符合预设规则的存储体内存储的原始数据中,从最低地址开始的前最小值个数的零值数据当成非零数据进行重新压缩。
可选地,重压缩模块130,在以目标存储体初始压缩后的数据行数为基准,对该不符合预设规则的存储体内存储的原始数据进行重新压缩时,具体用于:获取不符合预设规则的存储体内存储的原始数据的数量与目标存储体对应的初始压缩数据的数量的第一差值;获取不符合预设规则的存储体内存储的原始数据中的零值数据的数量与第一差值的差值,得到第二差值;将不符合预设规则的存储体内存储的原始数据中,从最高地址开始的前第二差值个数的零值数据当成非零数据进行重新压缩。
本申请实施例所提供的数据压缩装置100,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
如图6所示,图6示出了本申请实施例提供的一种电子设备200的结构框图。电子设备200包括:收发器210、存储器220、通讯总线230以及处理器240。
收发器210、存储器220、处理器240各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线230或信号线实现电性连接。其中,收发器210用于收发数据。存储器220用于存储待压缩数据和存储计算机程序,如存储有图5中所示的软件功能模块,即数据压缩装置100。其中,数据压缩装置100包括至少一个可以软件或固件(Firmware)的形式存储于存储器220中或固化在电子设备200的操作***(Operating System,OS)中的软件功能模块。处理器240,用于执行存储器220中存储的可执行模块,例如数据压缩装置100包括的软件功能模块或计算机程序。例如,处理器240,用于对N个存储体中的每一个存储体内存储的原始数据进行初始压缩,得到初始压缩数据及对应的数据索引;其中,N个存储体共同存储同一组待压缩数据,N为大于等于2的正整数;从N个存储体中选取出初始压缩数据不符合预设规则的存储体;对不符合预设规则的存储体内存储的原始数据进行重新压缩,得到新压缩数据及对应的新数据索引,其中,新压缩数据符合预设规则。
其中,存储器220可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器240可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器240也可以是任何常规的处理器等。
其中,上述的电子设备200,包括但不限于AI运算器、电脑、服务器等。
本申请实施例还提供了一种非易失性的计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备200运行时,执行上述所示的数据压缩方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个计算机可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者电子设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的计算机可读存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种数据压缩方法,其特征在于,包括:
对N个存储体中的每一个存储体内存储的原始数据进行初始压缩,得到初始压缩数据及对应的数据索引;其中,所述N个存储体共同存储同一组待压缩数据,N为大于等于2的正整数;
从所述N个存储体中选取出初始压缩数据不符合预设规则的存储体;
对不符合所述预设规则的存储体内存储的原始数据进行重新压缩,得到新压缩数据及对应的新数据索引,其中,所述新压缩数据符合所述预设规则。
2.根据权利要求1所述的方法,其特征在于,从所述N个存储体中选取出初始压缩数据不符合预设规则的存储体,包括:
获取每一个存储体的初始压缩数据所占据的行数;
从所述N个存储体中选取出初始压缩后数据行数不等于指定行数的存储体,其中,初始压缩后数据行数不等于所述指定行数的存储体即为不符合所述预设规则的存储体。
3.根据权利要求2所述的方法,其特征在于,所述最大行数为所述N个存储体的初始压缩数据所占据的行数中的最大行数。
4.根据权利要求1所述的方法,其特征在于,对不符合所述预设规则的存储体内存储的原始数据进行重新压缩,包括:
针对每一个不符合所述预设规则的存储体,从所有符合所述预设规则的存储体中选取出初始压缩后数据行数最小,且该初始压缩后数据行数大于该不符合所述预设规则的存储体初始压缩后数据行数的目标存储体;
以所述目标存储体初始压缩后的数据行数为基准,对该不符合所述预设规则的存储体内存储的原始数据进行重新压缩,使得重新压缩后的数据行数与所述目标存储体的初始压缩数据所占据的行数一致。
5.根据权利要求4所述的方法,其特征在于,以所述目标存储体初始压缩后的数据行数为基准,对该不符合所述预设规则的存储体内存储的原始数据进行重新压缩,包括:
获取所述目标存储体内存储的原始数据中的零值数据的第一数量,以及获取不符合所述预设规则的存储体内存储的原始数据中的零值数据的第二数量;
获取所述第一数量与所述第二数量之差的绝对值,并选取所述绝对值与所述第二数值中的最小值;
将不符合所述预设规则的存储体内存储的原始数据中,从最低地址开始的前所述最小值个数的零值数据作为非零数据进行重新压缩。
6.根据权利要求4所述的方法,其特征在于,以所述目标存储体初始压缩后的数据行数为基准,对该不符合所述预设规则的存储体内存储的原始数据进行重新压缩,包括:
获取不符合所述预设规则的存储体内存储的原始数据的数量与所述目标存储体对应的初始压缩数据的数量的第一差值;
获取不符合所述预设规则的存储体内存储的原始数据中的零值数据的数量与所述第一差值的差值,得到第二差值;
将不符合所述预设规则的存储体内存储的原始数据中,从最高地址开始的前所述第二差值个数的零值数据作为非零数据进行重新压缩。
7.根据权利要求1所述的方法,其特征在于,对N个存储体中的每一个存储体内存储的原始数据进行初始压缩,包括:
去除每一个存储体内存储的零值数据,并将剩余的原始数据依次排列组合在一起;
利用指定数值数据将排列组合后所占据的行的空格补齐。
8.一种数据压缩装置,其特征在于,包括:
初始压缩模块,用于对N个存储体中的每一个存储体内存储的原始数据进行初始压缩,得到初始压缩数据及对应的数据索引;其中,所述N个存储体共同存储同一组待压缩数据,N为大于等于2的正整数;
选择模块,用于从所述N个存储体中选取出初始压缩数据不符合预设规则的存储体;
重压缩模块,用于对不符合所述预设规则的存储体内存储的原始数据进行重新压缩,得到新压缩数据及对应的新数据索引,其中,所述新压缩数据符合所述预设规则。
9.一种电子设备,其特征在于,包括:
存储器和处理器,所述处理器与所述存储器连接;
所述存储器,用于存储程序和存储待压缩数据;
所述处理器,用于调用存储于所述存储器中的程序,以执行如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210301266.4A CN114640354A (zh) | 2022-03-24 | 2022-03-24 | 数据压缩方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210301266.4A CN114640354A (zh) | 2022-03-24 | 2022-03-24 | 数据压缩方法、装置、电子设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114640354A true CN114640354A (zh) | 2022-06-17 |
Family
ID=81949431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210301266.4A Pending CN114640354A (zh) | 2022-03-24 | 2022-03-24 | 数据压缩方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114640354A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115333544A (zh) * | 2022-10-13 | 2022-11-11 | 上海登临科技有限公司 | 一种数据解压缩电路及其方法、芯片及电子设备 |
CN116505952A (zh) * | 2023-06-27 | 2023-07-28 | 厦门立林科技有限公司 | 红外码压缩方法、装置、智能设备及存储介质 |
-
2022
- 2022-03-24 CN CN202210301266.4A patent/CN114640354A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115333544A (zh) * | 2022-10-13 | 2022-11-11 | 上海登临科技有限公司 | 一种数据解压缩电路及其方法、芯片及电子设备 |
CN115333544B (zh) * | 2022-10-13 | 2023-01-31 | 上海登临科技有限公司 | 一种数据解压缩电路及其方法、芯片及电子设备 |
CN116505952A (zh) * | 2023-06-27 | 2023-07-28 | 厦门立林科技有限公司 | 红外码压缩方法、装置、智能设备及存储介质 |
CN116505952B (zh) * | 2023-06-27 | 2023-09-08 | 厦门立林科技有限公司 | 红外码压缩方法、装置、智能设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112292816B (zh) | 处理核心数据压缩和存储*** | |
US6467062B1 (en) | Digital data (multi-bit) storage with discrete analog memory cells | |
CN114640354A (zh) | 数据压缩方法、装置、电子设备及计算机可读存储介质 | |
CN106549673B (zh) | 一种数据压缩方法及装置 | |
CN111985632A (zh) | 解压缩设备及其控制方法 | |
EP3791331A1 (en) | Efficient data encoding for deep neural network training | |
CN110728350A (zh) | 用于机器学习模型的量化 | |
CN112506880B (zh) | 数据处理方法及相关设备 | |
CN114615507B (zh) | 一种图像编码方法、解码方法及相关装置 | |
JP5584203B2 (ja) | 数値データの処理方法 | |
US7185041B1 (en) | Circuit and method for high-speed execution of modulo division | |
CN112364985B (zh) | 一种基于分布式编码的卷积优化方法 | |
CN113298892A (zh) | 一种图像编码方法和设备,及存储介质 | |
US7924179B2 (en) | Variable-length code determining device and variable-length code decoding method | |
WO2023159820A1 (zh) | 图像压缩方法、图像解压缩方法及装置 | |
CN111384974B (zh) | 多进制ldpc码的置信度量化方法、装置及解码器 | |
CN112734021A (zh) | 一种基于位稀疏计算的神经网络加速方法 | |
KR20110033154A (ko) | 규칙적인 지점의 네트워크에서 벡터를 카운팅하는 방법 | |
CN111384975A (zh) | 多进制ldpc解码算法的优化方法、装置及解码器 | |
CN113177638B (zh) | 用于生成神经网络的二值化权重的处理器和方法 | |
CN115333544B (zh) | 一种数据解压缩电路及其方法、芯片及电子设备 | |
KR102420763B1 (ko) | 뉴럴 네트워크 시스템 및 뉴럴 네트워크의 필터 데이터의 처리 방법 | |
Khandelwal et al. | Implementation of Direct Indexing and 2-V Golomb Coding of Lattice Vectors for Image Compression | |
US7724159B2 (en) | System, method, and/or apparatus for digital signal sorting | |
US20210303975A1 (en) | Compression and decompression of weight values |
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 |