一种数据压缩和解压缩方法及装置与流程

文档序号:30083539发布日期:2022-05-18 05:01阅读:118来源:国知局
一种数据压缩和解压缩方法及装置与流程

1.本技术涉及计算机技术领域,尤其涉及一种数据压缩和解压缩方法及装置。


背景技术:

2.数据压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间的一种技术方法。数据压缩可分成两种类型,一种叫做无损压缩,另一种叫做有损压缩。
3.无损压缩是指使用压缩后的数据进行重构(或者叫做还原,解压缩),重构后的数据与原来的数据完全相同。无损压缩用于要求重构的信号与原始信号完全一致的场合。例如,磁盘文件的压缩采用无损压缩。
4.有损压缩是指使用压缩后的数据进行重构,重构后的数据与原来的数据有所不同,但不影响人对原始资料表达的信息造成误解。有损压缩适用于重构信号不一定非要和原始信号完全相同的场合。例如,图像和声音的压缩可以采用有损压缩。


技术实现要素:

5.有鉴于此,本技术实施例提供了一种数据压缩和解压缩方法及装置,可以解决相关技术中的至少一个技术问题。
6.第一方面,本技术一实施例提供了一种数据处理方法,包括:获取待压缩的原始数据流,将所述原始数据流分成若干组;将每组所述原始数据流进行处理以移出零值生成新的数据,新的数据包括索引和压缩数据,所述索引用于指示每组所述原始数据流中每个位置的数据是零值还是非零值,所述压缩数据为原始数据流中的非零值数据。
7.在一些实施例中,所述将每组所述原始数据流进行处理以移出零值生成新的数据,包括:遍历每组所述原始数据流中每个位置的数据,生成每组所述原始数据流对应的索引,在该索引后排布每组所述原始数据流中的非零值数据。
8.在一些实施例中,所述遍历每组所述原始数据流中每个位置的数据,生成每组所述原始数据流对应的索引,包括:遍历每组所述原始数据流中每个位置的数据,若确定当前位置的所述数据为零值数据,则生成当前位置对应的索引为第一信息;若确定当前位置的所述数据为非零值数据,则生成当前位置对应的索引为第二信息。
9.在一些实施例中,还包括:记录与所述原始数据流总大小相关的信息。
10.在一些实施例中,还包括:生成头指针,利用头指针读取第一个索引,并根据第一个索引确定第一组原始数据流中各位置的数据是零值数据还是非零值数据,将零值数据填入零值数据的位置,移动头指针读取第一个索引后的非零值数据,依次将非零值数据填入第一组原始数据流的非零值数据位置,直至第一组原始数据流完整填入,完成第一组原始数据的解压缩;头指针读取下一个索引,重复前一个索引相同的执行过程,直至所有组原始数据流完整填入,得到完整的原始数据流。
11.第二方面,本技术一实施例提供了一种数据解压缩方法,包括:获取压缩后的数据流,压缩后的数据流包括若干个索引以及排布在各索引后的非零值数据;每个所述索引以及排布在其后的非零值数据用于解压并生成一组原始数据流;根据所述若干个索引中的每个索引以及排布在该索引后的非零值数据,解压并生成若干组原始数据流,所述若干组原始数据流组成原始数据流。
12.在一些实施例中,所述根据所述若干个索引中的每个索引以及排布在该索引后的非零值数据,解压并生成若干组原始数据流,所述若干组原始数据流组成原始数据流,包括:根据若干个索引中的每个索引,确定每组原始数据流中各位置的数据是零值数据还是非零值数据,将零值数据填入零值数据的位置,将排布在该索引后的非零值数据按照顺序依次填入非零值数据的位置,得到若干组原始数据流,所述若干组原始数据流组成原始数据流。
13.在一些实施例中,还包括:累加记录解压缩后数据流的大小之和。
14.第三方面,本技术一实施例提供了一种数据处理装置,包括:分组模块,用于获取待压缩的原始数据流,将所述原始数据流分成若干组;压缩模块,用于将每组所述原始数据流进行处理以移出零值生成新的数据,新的数据包括索引和压缩数据,所述索引用于指示每组所述原始数据流中每个位置的数据是零值还是非零值,所述压缩数据为原始数据流中的非零值数据。
15.第四方面,本技术一实施例提供了一种数据解压缩装置,包括:获取模块,用于获取压缩后的数据,压缩后的数据包括若干个索引以及排布在各索引后的非零值数据;每个所述索引以及排布在其后的非零值数据用于解压并生成一组原始数据流;解压缩模块,用于根据所述若干个索引中的每个索引,根据该索引以及排布在该索引后的非零值数据,解压并生成若干组原始数据流,所述若干组原始数据流组成原始数据流。
16.第五方面,本技术一实施例提供一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一实施例所述的数据处理方法,或实现如第二方面任一实施例所述的数据解压缩方法。
17.第六方面,本技术一实施例提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一实施例所述的数据处理方法,或执行如第二方面任一实施例所述的数据解压缩方法。
18.本技术实施例的有益效果在于:通过将原始数据中的非零值数据进行保留而将零值数据进行删除,提升了压缩率,减少了系统读入数据时访问宽带占用,提高系统的计算能力。
附图说明
19.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
20.图1是本技术一实施例提供的一种数据压缩方法的实现流程示意图;
21.图2是本技术一实施例提供的一种原始数据流的分组示意图;
22.图3是本技术一实施例提供的一种将每组原始数据流进行处理以移出零值生成新的数据的示意图;
23.图4是本技术一实施例提供的一种将一组原始数据流进行处理以移出零值生成新的数据的过程示意图;
24.图5本技术一实施例提供的一种数据解压缩方法的实现流程示意图;
25.图6是本技术一实施例提供的一种压缩后的数据的存储示意图;
26.图7是本技术一实施例提供的一种数据解压缩的过程示意图;
27.图8是本技术一实施例提供的一种数据解压缩的过程示意图;
28.图9是本技术一实施例提供的一种数据解压缩过程的逻辑电路实现流程示意图;
29.图10是本技术一实施例提供的不同长度的原始数据流压缩后变成相同数据流的示意图;
30.图11是本技术一实施例提供的压缩后的相同数据流解压缩成不同长度的原始数据流的示意图;
31.图12a是本技术一实施例提供的一种数据压缩装置的结构示意图;
32.图12b是本技术另一实施例提供的一种数据压缩装置的结构示意图;
33.图13a是本技术一实施例提供的一种数据解压缩装置的结构示意图;
34.图13b是本技术另一实施例提供的一种数据解压缩装置的结构示意图;
35.图14是本技术一实施例提供的一种电子设备的结构示意图。
具体实施方式
36.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
37.在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
38.在本技术说明书中描述的“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
39.此外,在本技术的描述中,“多个”的含义是两个或两个以上。术语“第一”和“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
40.本技术实施例提供一种数据压缩和解压缩方法及装置,可以对数据进行压缩和解压缩,从而减小原始的数据量大小,进而减少系统读入外部数据时的访问带宽占用,提高系统的计算能力。
41.为了说明本技术的技术方案,下面通过具体实施例来进行说明。需要说明的是,在
具体实施例的描述过程中,以卷积神经网络权重数据的压缩和解压缩作为具体应用场景的示例。应理解,本技术的数据压缩和解压缩方法还可以适用于其他应用场景,任何需要对数据进行压缩和解压缩的应用场景都适用本技术。
42.目前,受限于卷积神经网络计算中计算逻辑的同步处理和实现的复杂度,一般不对卷积神经网络权重数据进行压缩处理。此外,卷积神经网络计算系统,在计算性能充足的情况下,大部分性能都受制于外部存储器的访问带宽,无法继续通过增加计算单元提高计算能力。利用本技术实施例提供一种数据压缩方法及装置,应用于卷积神经网络权重数据的压缩和解压缩,从而实现权重数据量大小的减小,减少系统从外部存储器读入权重数据时的访问带宽占用,提高系统的计算能力。
43.先来介绍卷积神经网络权重数据的压缩方法。在卷积神经网络权重数据包括“0”数据的情况下,特别是在基于通过剪枝处理的稀疏化卷积神经网络权重数据中存在较多值为“0”数据的情况下,可以对权重数据进行压缩。
44.图1所示为本技术一实施例提供的一种数据压缩方法的实现流程示意图,如图1所示,数据压缩方法包括步骤s110至步骤s120。
45.s110,获取待压缩的原始数据流,将原始数据流分成若干组。
46.其中,待压缩的原始数据流,即压缩前的数据流。获取待压缩的原始数据流,将原始数据流按照预设大小分组,分成k组,k为正整数,其中,k组中的最后一组按照实际剩余大小分组。
47.作为一可能的实现方式,图2所示为原始数据流的分组示意图。如图2所示,预设大小为m byte,将原始数据流按照每m byte(byte为数据大小单位,1byte表示包括8个二进制数,即1byte=8bit)为一组分成k组,其中最后一组按照实际剩余大小分组为n byte,其中,n和m均为正整数,且n《=m。
48.s120,将每组原始数据进行处理以移出零值生成新的数据,新的数据包括索引和压缩数据。
49.其中,索引用于指示每组原始数据流中每个位置的数据是零值还是非零值,在压缩处理过程中,移出0值的数据并保留非零值的数据。因而,索引也可称为状态指示。
50.在一个实施例中,遍历每组原始数据流中每个位置的数据,生成每组原始数据流对应的索引,在该索引后排布每组原始数据流中的非零值数据,即将索引放置在每组压缩数据的最前面。在索引后按照前后位置顺序排布每组原始数据流中的非零值数据,保留了每组原始数据流中的非零值数据的顺序。
51.作为一非限制性示例,遍历每组原始数据流中每个位置的数据,若确定当前位置的数据为需删除的数据,例如当前位置的数据为零值数据,则生成该位置对应的索引为第一信息;若确定当前位置的数据为需保留的数据,例如当前位置的数据为非零值数据,则生成该位置对应的索引为第二信息。也就是说,索引中采用第一信息标识该位置对应的原始数据为删除的数据,采用第二信息标识该位置对应的原始数据为保留的数据。
52.作为一可能的实现方式,图3所示为将每组原始数据流进行处理以生成新的数据的示意图。如图3所示,将每组原始数据流进行处理以移出零值生成新的数据,新的数据包括一个m bit(bit为数据大小单位,1bit表示1个二进制数)大小的索引bitmap,和小于或等于m的任一整数byte大小的保留数据data,即压缩数据。其中,bitmap各个bit用1或0表示每
组原始数据流中各个位置的数据是删除还是保留。具体地,若任一组原始数据中任一byte数据为0,则该组原始数据的bitmap中对应该byte数据的bit为0;若任一组原始数据中任一byte数据为非0,则该组原始数据的bitmap中对应该byte数据的bit为1。每组原始数据中任一byte数据,若该byte数据为0则删除;若该byte数据不为0则保留,依次排布在bitmap之后,即每组原始数据中的保留数据data依次排布在该组原始数据对应的bitmap之后,保留了保留数据data的顺序。
53.图4所示为一实施例提供的一种将一组原始数据流进行处理以移出零值生成新的数据的过程示意图。图4所示实施例中以m=16作为示例性说明。如图4所示,用16进制表示原始数据流,其中一组原始数据流包括16byte,一格表示1byte,16byte的原始数据流依次为:35、00、64、3b、00、00、00、00、bb、00、73、00、00、00、00、34。针对16byte的一组原始数据流,一方面,其索引bitmap用二进制表示,bitmap中的各bit一对一表示该组原始数据流中各byte数据是否为零值,当某一byte的原始数据为“00”,bitmap中对应位置的bit为0;byte数据不为“00”,bitmap中对应位置的bit为1,一组原始数据流为16byte,bitmap共16bit,一格为1bit。16byte数据对应的16bit bitmap依次为1、0、1、1、0、0、0、0、1、0、1、0、0、0、0、1。接着将bitmap的16bit用16进制表示,为:b0、a1。另一方面,保留该组原始数据流中的非零值数据,得到保留的数据(即压缩数据)依次为:35、64、3b、bb、73、34。将压缩数据依次排布在16进制的bitmap之后,为:b0、a1、35、64、3b、bb、73、34。可见,压缩后,原本的16byte数据变成了8byte数据。
54.需要说明的是,在一些可能的实现方式中,针对最后一组原始数据,当该组原始数据为n byte,且不满足(或不等于)m byte时,bitmap不足m bit的用0补齐。
55.本技术实施例提供的数据压缩方法,能够在稀疏度为m%(即有1-m%的数据为0)的情况下,实现约(m+10)%的压缩率,即数据变为原来的(m+10)%大小,可以减少系统读入数据时访问宽带占用,提高系统的计算能力。
56.对应于前述的数据压缩方法,接着介绍数据解压缩方法。数据解压缩方法中未详细描述之处请参见前述数据压缩方法。
57.图5所示为本技术一实施例提供的一种数据解压缩方法的实现流程示意图,如图5所示,数据解压缩方法包括步骤s210至步骤s220。
58.s210,获取压缩后的数据流,压缩后的数据流包括若干个索引以及排布在各索引后的非零值数据;每个所述索引以及排布在其后的非零值数据用于解压并生成一组原始数据流。
59.其中,每个索引用于指示一组原始数据流中各位置的原始数据是零值数据还是非零值数据。
60.需要说明的是,如果一组原始数据流中不包括非零值数据,则该组原始数据流对应的索引后未排布有非零值数据。
61.s220,根据若干个索引中的每个索引以及排布在该索引后的非零值数据,解压并生成若干组原始数据流,若干组原始数据流组成原始数据流。
62.在一个实施例中,根据若干个索引中每个索引以及每个索引后排布的非零值数据,得到若干组原始数据流,若干组原始数据流组成原始数据流。
63.在一个实施例中,根据若干个索引中的每个索引,确定每组原始数据流中各位置
的数据是零值数据还是非零值数据,将零值数据填入零值数据的位置,将排布在索引后的若干个非零值数据按照顺序依次填入非零值数据的位置,得到若干组原始数据流,若干组原始数据流组成原始数据流。
64.在一个实施例中,根据若干个索引的顺序依次排列若干组原始数据流以生成原始数据流。
65.在一个实施例中,生成头指针,利用头指针读取第一个索引,并根据第一个索引确定第一组原始数据流中各位置的数据是零值数据还是非零值数据,将零值数据填入零值数据的位置,移动头指针读取第一个索引后的非零值数据,依次将非零值数据填入第一组原始数据流的非零值数据位置,直至第一组原始数据流完整填入,完成第一组原始数据的解压缩,头指针读取下一个索引,重复前一个索引相同的执行过程,直至所有组原始数据流完整填入,这样就得到了完整的原始数据流。优选地,根据第一组原始数据流的数据数量对索引进行数据转化,将索引还原成原始数据流对应的m byte数据。
66.延续前述图4所示的实现方式,作为一可能的实现方式,设置一组数据流缓存buffer,存储从外部存储器读入的压缩后的数据流,以及生成一个头指针head_index。本实现方式通常根据对原始数据进行分组时每组数据的数量来对压缩数据进行还原,具体的同样以m=16作为示例,图6所示为压缩后的数据的存储示意图,图7和图8所示为数据解压缩的过程示意图,图9为图7和图8所示的数据解压缩过程的逻辑电路实现流程示意图。需要说明的是,受到图片尺寸的限制,图9仅示出了图6至图8中所示的部分压缩后的数据。
67.结合图6、图7、图8和图9所示,详细说明第一组16byte数据流的解压缩过程。先根据head_index定位到索引以及排布在索引后的非零值数据,根据索引和排布在其后的非零值数据进行解压缩还原成原始数据流,取出head_index指示的索引,是一个16bit数据并用16进制表示为b0、a1,将索引的数据还原成对应的16byte数据,首先将16bit数据用对应的二进制表示为:1、0、1、1、0、0、0、0、1、0、1、0、0、0、0、1。将二进制数据还原成对应的16byte,如图7所示,若某个位置处对应的数据为0,则将该位置写入0 0,若某个位置处对应的数据为1,则对应位置暂时不填入,从而还原出一组原始数据流的模板,从而可以得到一组16byte的原始数据中每个位置是零值还是非零值。进一步的,如图8所示,将排布在索引后的非零值数据依次填入还原出的原始数据流的模板中空缺的部分(即未填入“00”的byte),同时每填入1byte数据,head_index即向后移动1byte(即8bit),这样就完成了一组16byte数据的解压缩过程,同时head_index指向了下一次待解压缩数据的开始位置。重复第一组16byte数据流的解压缩过程,完成k-1组16byte数据流的解压缩。
68.需要说明的是,对于第k组,也就是最后一组数据流(n byte大小,n《=m)的解压缩,需要进行特殊处理,下文将同样以m=16来进行说明。
69.由本技术实施例的压缩原理可以得知,当一组原始数据流小于m=16byte时,不同大小的原始数据流,在压缩后可能变成相同的数据。图10所示为不同大小的原始数据流压缩后变成相同数据的示意图,如图10所示,4个不同大小的四组16进制数据流,四组16进制数据流从上到下依次为16byte、12byte、6byte、和4byte,这四组16进制数据流在压缩后变成相同的16进制数据流:b0、00、35、64、3b。因此,在解压缩时就需要额外的信息,才能够还原到确切的原始数据流大小。可选的,这个额外的信息可以包括与原始数据流大小相关的信息。
70.在本技术一个实施例中,数据压缩方法还包括:记录原始数据流总大小。对应的,数据解压缩方法还包括:累加记录解压缩后数据流的大小之和。在这个实施例中,将累加记录的解压缩后数据流的大小之和与记录的原始数据流总大小进行比较,可以确认是否已完成全部原始数据流的解压,和/或,可以确认最后一组解压缩后数据流的大小n,从而针对最后一个索引解压缩数据时,得到一组大小为n的原始数据流。
71.在本技术另一个实施例中,数据压缩方法还包括:记录原始数据流总大小对预设大小取余得到的值。例如,原始数据流总大小为num byte,预设大小为m byte,num对m取余,记为num%m。
72.作为一种可能的实现方式,采用记录原始数据流总大小对m=16取余的方法来处理,记录原始数据流总大小对m=16取余的值为tail_mod,根据tail_mod的值确定最后一组原始数据流的对应长度,这样就能准确完成最后一组原始数据流的解压缩过程。
73.作为一非限制性示例,图11所示为压缩后的相同数据流解压缩成不同长度的原始数据流的示意图,如图11所示,压缩后的16进制数据流为:b0、00、35、64、3b。当10进制表示的tail_mod的值分别为0、12、6、4时,解压缩后原始数据流的长度分别为16byte、12byte、6byte、和4byte。
74.在一些实施例中,解压缩过程并行进行,可以一个时钟就完成至少m byte数据流的解压缩。
75.本技术一实施例采用的解压缩方法,可以采用逻辑电路的并行操作,一个时钟解压缩n*m byte数据,n为大于0的正整数,可以满足卷积神经网络权重数据的大带宽需求,同时增大n即可灵活实现更大的数据带宽。
76.本技术一实施例还提供一种数据处理方法,包括前述任一实施例所述的数据压缩方法和/或前述任一实施例所述的数据解压缩方法中的至少部分步骤。
77.在一个实施例中,数据处理方法包括:
78.s110,获取待压缩的原始数据流,将原始数据流分成若干组。
79.s120,将每组原始数据进行处理以移出零值生成新的数据,新的数据包括索引和压缩数据。
80.s220,根据若干个索引中的每个索引以及排布在该索引后的非零值数据,解压并生成若干组原始数据流,若干组原始数据流组成原始数据流。
81.在一个实施例中,生成头指针,利用头指针读取第一个索引,并根据第一个索引确定第一组原始数据流中各位置的数据是零值数据还是非零值数据,将零值数据填入零值数据的位置,移动头指针读取第一个索引后的非零值数据,依次将非零值数据填入第一组原始数据流的非零值数据位置,直至第一组原始数据流完整填入,完成第一组原始数据的解压缩,头指针读取下一个索引,重复前一个索引相同的执行过程,直至所有组原始数据流完整填入,这样就得到了完整的原始数据流。
82.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
83.本技术一实施例还提供一种数据压缩装置。该数据压缩装置中未详细描述之处请详见前述数据压缩方法实施例中的相关描述。
84.参见图12a,图12a是本技术一实施例提供的一种数据压缩装置的结构示意图。如图12a所示,数据压缩装置可以包括:分组模块1201和压缩模块1202。
85.其中,分组模块1201,用于获取待压缩的原始数据流,将所述原始数据流分成若干组。
86.压缩模块1202,用于将每组原始数据流进行处理以移出零值生成新的数据,新的数据包括索引和压缩数据,索引用于指示每组原始数据流中每个位置的数据是零值还是非零值,压缩数据为原始数据流中的非零值数据。
87.在一些实施例中,在图12a所示实施例的基础上,如图12b所示,数据压缩装置还包括:第一记录模块1203。
88.其中,第一记录模块1203,用于记录与原始数据总大小相关的信息。
89.在一些实施例中,与原始数据总大小相关的信息,包括:原始数据总大小、最后一组原始数据大小、或原始数据总大小对预设大小取余的值等。
90.本技术一实施例还提供一种数据解压缩装置。该数据解压缩装置中未详细描述之处请详见前述数据解压缩方法实施例中的相关描述。
91.参见图13a,图13a是本技术一实施例提供的一种数据解压缩装置的结构示意图。数据解压缩装置可以包括:获取模块1301和解压缩模块1302。
92.其中,获取模块1301,用于获取压缩后的数据流,压缩后的数据流包括若干个索引以及排布在各索引后的非零值数据;每个所述索引以及排布在其后的非零值数据用于解压并生成一组原始数据流。
93.解压缩模块1302,用于根据所述若干个索引中的每个索引,根据该索引以及排布在该索引后的非零值数据,解压并生成若干组原始数据流,所述若干组原始数据流组成原始数据流。
94.在一些实施例中,解压缩模块1302,具体用于生成头指针,利用头指针读取第一个索引,并根据第一个索引确定第一组原始数据流中各位置的数据是零值数据还是非零值数据,将零值数据填入零值数据的位置,移动头指针读取第一个索引后的非零值数据,依次将非零值数据填入第一组原始数据流的非零值数据位置,直至第一组原始数据流完整填入,完成第一组原始数据的解压缩;头指针读取下一个索引,重复前一个索引相同的执行过程,直至所有组原始数据流完整填入,得到完整的原始数据流。
95.在一些实施例中,在图13a所示实施例的基础上,如图13b所示,数据解压缩装置还包括:第二记录模块1303。
96.在一个实施例中,第二记录模块1303,用于在解压压缩后的数据的过程中,累加记录解压缩后数据的大小之和。
97.具体地,第二记录模块1303,用于将累加记录的解压缩后数据的大小之和与原始数据总大小进行比较,直至累加记录的解压缩后数据的大小之和等于原始数据总大小,则触发解压缩模块1302停止解压缩,至此,解压缩模块1302得到完整的原始数据。
98.在一个实施例中,第二记录模块1303,用于记录最后一组解压缩后数据大小,当最后一组解压缩后数据大小满足最后一组数据压缩前数据大小,则触发解压缩模块停止解压缩,至此,解压缩模块得到完整的原始数据。
99.本技术一实施例还提供了一种数据处理装置,包括前述的数据压缩装置和/或数
unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
114.在一个实施例中,存储器1410可以是电子设备的内部存储单元,例如电子设备的硬盘或内存。存储器1410也可以是电子设备的外部存储设备,例如电子设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,存储器1410还可以既包括电子设备的内部存储单元也包括外部存储设备。存储器1410用于存储计算机程序以及电子设备所需的其他程序和数据。存储器1410还可以用于暂时地存储已经输出或者将要输出的数据。
115.本技术一实施例还提供了电子设备的另一种优选的实施例,在本实施例中,电子设备包括一个或多个处理器。一个或多个处理器用于执行存储在存储器的以下程序模块:
116.分组模块,用于获取待压缩的原始数据流,将原始数据流分成若干组。
117.压缩模块,用于将每组原始数据流进行处理以移出零值生成新的数据,新的数据包括索引和压缩数据,索引用于指示每组原始数据流中每个位置的数据是零值还是非零值,压缩数据为原始数据流中的非零值数据。
118.和/或,
119.获取模块,用于获取压缩后的数据,压缩后的数据包括若干个索引以及排布在各索引后的非零值数据;每个索引以及排布在其后的非零值数据用于解压并生成一组原始数据流;
120.解压缩模块,用于根据若干个索引中的每个索引,根据该索引以及排布在该索引后的非零值数据,解压并生成若干组原始数据流,若干组原始数据流组成原始数据流。
121.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
122.本技术一实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时可实现数据压缩方法和/或数据解压缩方法和/或数据处理方法实施例中的各个步骤。
123.本技术一实施例还提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备可实现数据压缩方法和/或数据解压缩方法和/或数据处理方法实施例中的各个步骤。
124.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
125.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
126.在本技术所提供的实施例中,应该理解到,所揭露的装置/电子设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/电子设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
127.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本技术实施例方案的目的。
128.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
129.集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述方法实施例中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
130.以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1