数据解压方法和编码电路与流程

文档序号:21100500发布日期:2020-06-16 20:45阅读:412来源:国知局
数据解压方法和编码电路与流程

本申请涉及信息技术领域,特别是涉及一种数据解压方法和编码电路。



背景技术:

数据解压是数据压缩的逆过程,传统技术中数据解压过程一般为选用合适的编码算法对压缩的数据进行处理,使之恢复到压缩之前的状态。

但是传统技术的数据解压方法无法对包含头段和数据段的压缩数据进行解压。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够解压包含头段和数据段的压缩数据的数据解压方法和编码电路。

一种数据解压方法,包括:

获取压缩数据,所述压缩数据包括头段和与所述头段数据段,所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体,所述数据头包括对应的数据体的起始地址、数据长度,所述数据体包括压缩前对应的数据块的编码数据;

将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体;

使用预设的压缩解压算法解压各个待解压数据块,得到解压数据块;

根据第二预设摆放格式摆放解压数据块,得到解压数据。

作为一种可选地实施方式,所述第二预设摆放格式根据压缩数据压缩前包含的数据块之间的位置关系得到。

作为一种可选地实施方式,将压缩数据进行分解,得到多个待解压数据块,包括:

若数据头和数据体中包含标识对应关系的标识位,则根据所述标识位的数值,确定各个待解压数据块中的数据头和数据体。

作为一种可选地实施方式,所述预设的压缩解压算法包括:huffman编码、游程编码、lz77中的任一一种或几种的组合。

一种数据解压方法,包括:

获取压缩数据,所述压缩数据包括头段和与所述头段数据段,所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体,所述数据头包括对应的数据体的起始地址、数据长度,所述数据体包括压缩前对应的数据块的编码数据;

将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体;

根据编码电路的数量将得到的多个待解压数据块分组,得到多个待解压数据组;

将得到的待解压数据组分发至多个编码电路,编码电路按照预设的压缩解压算法解压接收的待解压数据组中的待解压数据块,得到多个解压数据块;

根据第二预设摆放格式摆放解压数据块,得到解压数据。

作为一种可选地实施方式,所述根据编码电路的数量将得到的多个待解压数据块分组,得到多个待解压数据组,包括:

若所述编码电路的数量为n,则将多个待解压数据块划分为m组,其中,m为n的整数倍。

作为一种可选地实施方式,将压缩数据进行分解,得到多个待解压数据块,包括:

若数据头和数据体中包含标识对应关系的标识位,则根据所述标识位的数值,确定各个待解压数据块中的数据头和数据体。

作为一种可选地实施方式,所述第二预设摆放格式根据压缩数据压缩前包含的数据块之间的位置关系得到。

作为一种可选地实施方式,所述压缩数据的数据段中各个数据体的摆放格式为一维紧密、二维紧密或者任一维度的紧密。

一种编码电路,包括:相互连接的数据分割电路和压缩解压电路,

所述数据分割电路,用于获取压缩数据,所述压缩数据包括头段和与所述头段数据段,所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体,所述数据头包括对应的数据体的起始地址、数据长度,所述数据体包括压缩前对应的数据块的编码数据;将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体;

所述压缩解压电路,用于使用预设的压缩解压算法解压各个待解压数据块,得到解压数据块;根据第二预设摆放格式摆放解压数据块,得到解压数据。

上述数据解压方法和编码电路,首先将压缩数据进行分解,得到包含对应的数据头和数据体的待解压数据块,之后在使用传统的解压方法解压各个待解压数据块得到解压数据块,最后根据解压数据块得到解压数据。该方法将包含头段和数据段的压缩数据转化为传统解压方法可解压的数据,实施简单。该方法还分块解压压缩的数据,可以实现并行解压,提高解压效率。

附图说明

图1为一个实施例中的数据存取电路结构框图;

图2为一个实施例中的数据存取方法的流程示意图;

图3为一个实施例中的待存取数据中数据块的摆放示意图;

图4为一个实施例中的运算装置结构框图;

图5为一个实施例中的数据处理方法的流程示意图;

图6为一个实施例中的运算装置的结构框图;

图7为一个实施例中主的从运算单元传送数据的步骤流程图;

图8为另一个实施例中的运算装置的结构框图;

图9为一个实施例中的主从运算单元传送数据的步骤流程图;

图10为一个实施例中的编码电路的结构框图;

图11为一个实施例中的数据压缩方法的流程示意图;

图12为一个实施例中根据该压缩数据的头段和该压缩数据的数据段得到压缩数据的流程示意图;

图13为另一个实施例中根据该压缩数据的头段和该压缩数据的数据段得到压缩数据的流程示意图;

图14为一个实施例中的运算装置的结构框图;

图15为一个实施例中的数据处理方法的流程示意图;

图16为一个实施例中运算装置的结构框图;

图17为另一个实施例中的运算装置的结构框图;

图18为一个实施例中的神经网络运算方法的流程示意图;

图19为一个实施例中全连接运算过程的流程示意图;

图20为另一个实施例中的数据压缩方法的流程示意图;

图21为一个实施例中根据该压缩数据的头段和该压缩数据的数据段得到压缩数据的流程示意图;

图22为另一个实施例中根据该压缩数据的头段和该压缩数据的数据段得到压缩数据的流程示意图;

图23为另一个实施例中的数据压缩方法的流程示意图;

图24为一个实施例中的数据处理方法的流程示意图;

图25为一个实施例中的神经网络运算方法的流程示意图;

图26为一个实施例中的全连接运算过程的流程示意图;

图27为一个实施例中的数据解压方法的流程示意图;

图28为另一个实施例中的数据解压方法的流程示意图;

图29为一个实施例中的数据解压方法的流程示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在其中一个实施例中,如图1所示,提出了一种数据存取电路100,该数据存取电路包括互相连接的读写控制电路110、读写电路120和存储器130。其中,该读写控制电路110用于生成数据读写参数,并根据数据读写参数生成读写控制指令。该读写控制指令用于控制读写电路120完成特定的读写操作。具体地,读写控制电路110生成的数据读写参数包括:读写起始地址、步长、读写操作次数以及单次读写块数。该存储器130用于存储待存取数据。该待存取数据可被划分为多个数据块,该多个数据块可以以一维紧密或二维紧密的形式存储于存储器130中。

可选地,在将待存取数据分块时,可以考虑该待存取数据的数据总大小、数据分布特征以及数据的重要程度等等中的一个或多个。其中数据的重要程度可以根据该数据的出现频率、数据大小等等特征来确定。可选地,在将待存取数据分块时,还可以参考预设值。可选地,存储器130中的数据可以为输入数据、中间数据等等。

在其中一个实施例中,如图2所示,提出了一种数据存取方法,该数据存取方法被上述实施例中的数据存取电路执行,该方法具体包括:

步骤s101:将待存取数据划分为多个数据块,并按照预设格式摆放所述待存取数据中各个数据块。

其中,数据块按照预设格式摆放是指将各个数据块按照预设格式存取于存取介质的相应位置。该预设格式可以为一维紧密、二维紧密或者其他维度的紧密。具体地,读写控制电路110将待存取数据划分为多个数据块,并按照预设格式摆放所述待存取数据中各个数据块。进一步地,读写控制电路110在将待存取数据划分为多个数据块,并按照预设格式摆放后,得到该待存取数据中各个数据块的存储参数。待存取数据中各个数据块的存储参数包括起始地址、块序列号、行号等等。该存储参数用于对待存取数据进行读写操作。其中,数据块的块序列号可以用于区分不同的数据块。可选地,可以使用数字对数据块进行编号。

例如:假设待存取数据被划分为多个数据块并按照预设格式摆放,摆放结果如图3所示。此时,该待存取数据被划分为9个数据块,可以使用0-8这9个数值按照从上到下,从左到右的顺序为各个数据块配置块序列号。使用0-2这3个数值按照从上到下的顺序配置各个数据块的行号。

步骤s102:获取读写参数,并根据该读写参数得到读写控制指令。其中,该读写参数包括:读写起始地址、步长读写操作以及单次读写块数。进一步地,步长为相邻两次读写操作的起始数据块的块序列号差值。读写操作次数为读写电路120执行读写操作的次数。单次读写块数为读写电路120每次读写的数据块的数量。可选地,该读写参数还可以包括读写操作次数,该读写操作次数可以根据预读写的数据块总数以及单次读写块数得到。其中,与读写的数据块总数可以根据实际需求设定。可选地,预读写的数据块总数为读写参数中单次读写块数的整数倍。

具体地,读写控制电路110获取读写参数,并根据该读写参数得到读写控制指令。例如待存取数据被划分数据块后,摆放格式如图3中所示,假设读写控制电路110预读取该待存取数据中的块序列号为4、5、7、8数据块。此时,获取的读写参数中,读写起始地址可以为块序列号为4的数据块的起始地址addressa,步长为3,单次读写块数为2。由于,本示例中预读写的数据块总数大于单次读写块数,因此,该示例中可以设置读写操作次数为2。

步骤s103:根据读写控制指令,对待存取数据进行读写操作。

具体地,数据存取电路的读写电路120根据读写控制指令,对待存取数据进行读写操作。数据存取电路的读写电路120根据读写控制指令和待存储数据的存储参数,确定每次读写操作的目标数据块和目标数据块的读写操作次序,按照读写操作次序读写操作对应的目标数据块。参照图3,读写电路120的读写电路120根据对待存取数据进行读写操作具体包括:读写电路120的读写电路120首先以待存取数据中块序列号为4的数据块的起始地址addressa作为第一次读写操作的起始地址,以块序列号为4和5的数据块作为第一读写操作的目标数据块。之后,按照读写参数中设置的步长3得到第二次读写操作的起始地址:待存取数据中块序列号为7的数据块的起始地址addressb,以块序列号为7和8的数据块作为第二读写操作的目标数据块。第一次读写块序列号为4和5的数据块;第二次读写块序列号为7和8的数据块。

上述实施例中的数据存取方法,通过读写参数,能够根据不同需求,获取待存取数据中的数据块,从而可以实现不必按照存储顺序访问存储的数据中的数据块,且上述实施例中的数据存取方法中通过引入步长和单次读写块数这些存取参数,实现了按照二维方式访问存储的数据,这为处理自然图像、特征图等具有二维相似性的数据提供了极大地便利。

预设值

上述实施例中的数据存取电路可以被设置任一具有数据存取需求的集群、处理器或者运算单元中。现以该数据存取电路被应用于运算装置中为例,说明该数据存取电路在数据运算中的应用。

如图4所示,在本申请的其中一个实施例中提出了一种运算装置10,包括主运算单元300和多个从运算单元400。多个从运算单元400分别与主运算单元300连接。具体地,主运算单元300可以用于对输入数据执行前序处理,以及与多个从运算单元400之间传输数据。具体地,多个从运算单元400用于使用从主运算单元300传输的数据并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主运算单元300。主运算单元300还用于对从运算单元400传输来的多个中间结果进行后续处理。进一步地,该主运算单元300还设有上述实施例中的数据存取电路100。该数据存取电路用于数据的存取。可选地,运算装置根据主运算单元300与从运算单元400功能的区别,在硬件层面上设置主运算单元300和从运算单元400,也可以在设置多个相同的运算单元,在实际处理数据过程中,从该多个相同的运算单元中指定主运算单元300和从运算单元400。

在其中一个实施例中,如图5所示,提出了一种数据处理方法,该数据处理方法可以被运算装置10执行,进行数据处理。该方法具体包括:

步骤s201:运算装置的主运算单元使用上述任一实施例中的数据存取方法获取待运算数据。

具体地,运算装置10的运主算单元使用上述实施例中的方法获取待运算数据。更具体地,数据存取电路首先将待输入数据划分为多个数据块,并按照预设格式摆放所述待存取数据中各个数据块。之后,数据存取电路获取读写参数,并根据该读写参数得到读写控制指令。最后,数据存取电路根据读写控制指令,对待存取数据进行读写操作。读写操作得到的数据即为待运算数据。可选地,该待运算数据包括:神经元矩阵和/或权值矩阵。

步骤s202:主运算单元将获取的待运算数据广播或分发至从运算单元,以使所述从运算单元使用获取的待运算数据进行运算,得到中间结果,并将该中间结果发送至主运算单元。可选地,该中间结果可以为从运算单元执行完某次乘法运算后的输出结果。

步骤s203:主运算单元接收该中间结果后,进行后续处理,得到运算结果。

可选地,主运算单元300接收该中间结果后,进行后续处理可以包括:使用该中间结果进行累加和激活运算得到运算结果。可选地,若该运算结果为最终的运算结果,则运算装置10可以终止上述数据处理流程。若该运算结果不是最终的运算结果,则运算装置10可以使用该运算结果进行下一阶段的运算。

在其中一个可选地实施例中,如图6所示,运算装置10的多个从运算单元400呈阵列分布;每个从运算单元400与相邻的其他从运算单元400连接,主运算单元300连接多个从运算单元400中的k个从运算单元400,该k个从运算单元400为:第1行的n个从运算单元400、第m行的n个从运算单元400以及第1列的m个从运算单元400。需要说明的是,如图6所示,的k个从运算单元400仅包括第1行的n个从运算单元400、第m行的n个从运算单元400以及第1列的m个从运算单元400,即该k个从运算单元400为多个从运算单元400中直接与主运算单元300连接的从运算单元400。具体地,该k个从运算单元400,用于在主运算单元300以及多个从运算单元400之间转发数据。

进一步地,该主运算单元300可以包括激活运算电路、加法运算电路以及上述实施例中的数据存取电路。其中,激活运算电路,用于执行主运算单元300内数据的激活运算;加法运算电路,用于执行加法运算或累加运算;数据存取电路主要用于是使用上述实施例中的数据存取方法向主运算单元300搬运待运算数据。具体地,从运算单元400包括乘法运算电路。该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该从运算单元400还可以包括加法运算电路,用于执行加法运算或累加运算。可选地,该从运算单元400还包括转发电路,用于将乘积结果转发至主运算单元300。

在本实施例中,如图7所示,步骤s202(主从运算单元传送数据)包括:

步骤s2021a:主运算单元通过k个从运算单元将获取的待运算数据广播或分发至从运算单元。

步骤s2022a:从运算单元根据相应的运算指令使用待运算数据进行乘法或加法运算,得到中间结果。

步骤s2023a:从运算单元通过k个从运算单元将得到的中间结果发送至从运算单元。

在另一个可选地实施例中,如图8所示,运算装置10还可以包括分支运算单元500,主运算单元300与一个或多个分支运算单元500连接,分支运算单元500与一个或多个从运算单元400连接。

具体地,该分支运算单元500,用于转发主运算单元300与从运算单元400之间的数据。该主运算单元300可以包括激活运算电路、加法运算电路以及上述实施例中的数据存取电路。其中,激活运算电路,用于执行主运算单元300内数据的激活运算;加法运算电路,用于执行加法运算或累加运算;数据存取电路主要用于是使用上述实施例中的数据存取方法向主运算单元300搬运待运算数据。具体地,从运算单元400包括乘法运算电路。该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该从运算单元400还可以包括加法运算电路,用于执行加法运算或累加运算。可选地,该从运算单元400还包括转发电路,用于将乘积结果转发至主运算单元300。

在本实施例中,如图9所示,步骤s202(主从运算单元传送数据)包括:

步骤s2021b:主运算单元通过分支运算单元将获取的待运算数据广播或分发至从运算单元。

步骤s2022b:从运算单元根据相应的运算指令使用待运算数据进行乘法或加法运算,得到中间结果。

步骤s2023b:从运算单元通过分支运算单元将得到的中间结果发送至从运算单元。

在其中一个实施例中,如图10所示,还提出了一种编码电路200。该编码电路包括数据分割电路210以及压缩解压电路220。该数据分割电路210与压缩解压电路220连接。其中,该数据分割电路210可以按照预设规则将待压缩数据进行分割。可选地,该数据分割电路210可以根据数据的特征将数据划分为多个数据块。该压缩解压电路220用于使用预设的编码方式压缩或解压数据。可选地,该编码电路可以被设置在集群中的各个设备上,用于将集群中各个设备之间传输的数据进行压缩。这样可以降低集群中各个设备传输数据的带宽要求。可选地,该编码电路也可以被设置于包含多个处理器的计算机设备的处理器上。该编码电路也还可以被设置于运算装置的运算单元上或者其他有数据传输需求的各个装置、部件上。

在其中一个实施例中,如图11所述,提出了一种数据压缩方法,该数据压缩方法被上述实施例中的编码电路200上,该方法包括:

步骤s301,根据待压缩数据的特征将待压缩数据划分为多个数据块。

具体地,编码电路200的数据分割电路210根据待压缩数据的特征将待压缩数据划分为多个数据块。可选地,该待压缩数据的特征可以包括数据总大小、数据分布特征以及数据的重要程度等等中的一个或多个。其中数据的重要程度可以根据该数据出现的频率、数据大小等等特征来确定。可选地,在将待压缩数据划分为多个数据块时还可以考虑预设值。可选地,在将待压缩数据划分为多个数据块之前,筛除待压缩数据中的“0”值。

步骤s302,将待压缩数据的各个数据块分别进行压缩,得到与每一数据块对应的数据头和数据体。其中,每一数据头包括对应的数据体的起始地址、数据长度等信息。可选地,该数据头还可以包括对应关系标识。可选地,数据体包括压缩前对应的数据块的编码数据。可选地,编码电路的压缩解压电路220可以使用huffman(哈夫曼)编码、游程编码、lz77以及它们的任意组合等等方式对各个数据块进行压缩。可选地,在压缩解压电路220使用huffman编码、游程编码、lz77以及它们的任意组合等等方式对各个数据块进行压缩之前,根据选择的压缩算法对待处理数据进行预处理。例如,使用huffman编码对各个数据块进行压缩时,需待压缩数据进行排序处理,得到huffman树,之后基于该huffman树压缩各个数据块。

步骤s303,根据得到的各个数据头得到压缩数据的头段,根据得到的各个数据体得到压缩数据的数据段,根据该压缩数据的头段和该压缩数据的数据段得到压缩数据。

具体地,编码电路200的压缩解压电路220根据得到的各个数据头得到压缩数据的头段,根据得到的各个数据体得到压缩数据的数据段,根据该压缩数据的头段和该压缩数据的数据段得到压缩数据。

上述实施例中的数据压缩方法,首先将待压缩数据进行分块,之后分块压缩各个数据块,得到与各个数据块一一对应的数据头与数据体,之后根据得到的与各个数据块对应的数据头和数据体得到压缩数据的头段和数据段,进而得到压缩数据。该方法通过将待压缩数据分块压缩,实现并行压缩各个数据块提高压缩效率的目的

在其中一个可选地实施例中,如图12所示,步骤s303包括:

步骤s3031a:使用标识位标识各个数据块对应的数据头和数据体的对应关系。具体地,编码电路200的压缩解压电路220使用标识位标识各个数据块对应的数据头和数据体的对应关系。

步骤s3032a:将各个包含标识位的数据头组合得到压缩数据的头段,将各个包含标识位的数据体组合得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。

在另一个可选地实施例中,如图13所示,步骤s303包括:

步骤s3031b:根据待压缩数据中各个数据块之间的位置关系得到对应的数据头的摆放格式。

具体地,编码电路200的压缩解压电路220根据待压缩数据中各个数据块之间的位置关系得到对应的数据头的摆放格式。可选地,该数据头的摆放格式可以为,按照各个数据头对应的数据块与其他数据块之间的位置关系,摆放每一数据块对应的数据头。

步骤s3032b:根据数据头的摆放格式摆放各个数据块对应的数据头得到压缩数据的头段,根据第一预设摆放格式摆放各个数据块对应的数据体得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。

具体地,编码电路200的压缩解压电路220根据数据头的摆放格式摆放各个数据块对应的数据头得到压缩数据的头段,根据第一预设摆放格式摆放各个数据块对应的数据体得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。

可选地,压缩解压电路220将得到的压缩数据的头段与压缩数据的数据体拼接得到压缩数据。可选地,第一预设摆放格式可以为一维紧密、二维紧密或者任一维度的紧密摆放每一数据块对应的数据体。可选地,可以通过设置标识位的标识压缩数据的数据段中各个数据体与压缩数据的头段中各个数据头的对应关系。

可选地,该待压缩数据可以为集群中各个设备之间需传输的数据,可以为多个处理器之间需传输的数据,还可以为运算装置中各个运算单元之间需传输的数据。例如运算装置需获取的输入数据。下面以运算装置中各个运算单元中需传输的数据为例,具体说明上述实施例中的数据压缩方法的应用。

在其中一个实施例中,如图14所示,提出了另一种运算装置20,该运算装置20包括相互连接主运算单元300和多个从运算单元400。该主运算单元300和多个从运算单元400上设置有上述实施例中的编码电路。具体地,主运算单元300用于对输入数据执行前序处理,以及与多个从运算单元400之间传输数据。具体地,多个从运算单元400用于使用从主运算单元300传输的数据并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主运算单元300。主运算单元300还用于对从运算单元400传输来的多个中间结果进行后续处理。

作为一种可选地实施方式,如图15所示,提出了一种数据处理方法,该方法被上述运算装置20执行,具体包括:

步骤s401,主运算单元接收输入数据,并使用上述实施例中的数据压缩方法分块压缩该输入数据得到压缩数据。

具体地,主运算单元300的编码电路200根据输入数据的特征。将输入数据划分为多个数据块。之后编码电路200将待压缩数据的各个数据块进行压缩,得到与每一数据块对应的数据头和数据体。最后,编码电路200根据得到的各个数据头得到压缩数据的头段,根据得到的各个数据体得到压缩数据的数据段,根据该压缩数据的头段和该压缩数据的数据段得到压缩数据。

步骤s402,主运算单元将得到的压缩数据传送至从运算单元。

步骤s403,从运算单元接收该压缩数据后,解压该压缩数据得到解压数据。

步骤s404,从运算单元使用该解压数据进行乘法运算,得到中间结果,并将该中间结果传送至主运算单元。

步骤s405,主运算单元的使用该中间结果进行累法和激活运算,得到运算结果。

可选地,若该运算结果为最终的运算结果,则运算装置20可以终止上述数据处理流程。若该运算结果不是最终的运算结果,则运算装置20可以使用该运算结果进行下一阶段的运算。

上述实施例中的运算装置将输入数据进行压缩后再传送至从运算单元400可以降低运算单元之间数据传输的带宽要求。

在其中一个可选地实施例中,如图16所示,运算装置20的多个从运算单元400呈阵列分布;每个从运算单元400与相邻的其他从运算单元400连接,主运算单元300连接多个从运算单元400中的k个从运算单元400,该k个从运算单元400为:第1行的n个从运算单元400、第m行的n个从运算单元400以及第1列的m个从运算单元400。需要说明的是,如图16所示,的k个从运算单元400仅包括第1行的n个从运算单元400、第m行的n个从运算单元400以及第1列的m个从运算单元400,即该k个从运算单元400为多个从运算单元400中直接与主运算单元300连接的从运算单元400。具体地,该k个从运算单元400,用于在主运算单元300以及多个从运算单元400之间转发数据。

进一步地,该主运算单元300可以包括激活运算电路、加法运算电路以及上述实施例中的编码电路。其中,激活运算电路,用于执行主运算单元300内数据的激活运算;加法运算电路,用于执行加法运算或累加运算;编码电路主要用于是使用上述实施例中的数据压缩方法对数据进行压缩。具体地,从运算单元400包括乘法运算电路。该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该从运算单元400还可以包括加法运算电路,用于执行加法运算或累加运算。可选地,该从运算单元400还包括转发电路,用于将乘积结果转发至主运算单元300。

在本实施例中,步骤s402包括:主运算单元通过k个从运算单元0将得到的压缩数据广播或分发至从运算单元。

在本实施例中,步骤s404包括:从运算单元通过k个从运算单元将得到的中间结果传送至主运算单元。

在另一个可选地实施例中,如图17所示,运算装置20还可以包括分支运算单元500,主运算单元300与一个或多个分支运算单元500连接,分支运算单元500与一个或多个从运算单元400连接。

具体地,该分支运算单元500,用于转发主运算单元300与从运算单元400之间的数据。该主运算单元300可以包括激活运算电路、加法运算电路以及上述实施例中的编码电路。其中,激活运算电路,用于执行主运算单元300内数据的激活运算;加法运算电路,用于执行加法运算或累加运算;编码电路主要用于是使用上述实施例中的数据压缩方法压缩数据。具体地,从运算单元400包括乘法运算电路。该乘法运算电路用于对接收到的数据块执行乘积运算得到乘积结果。可选地,该从运算单元400还可以包括加法运算电路,用于执行加法运算或累加运算。

在本实施例中,步骤s402包括:主运算单元通过分支运算单元将得到的压缩数据广播或分发至从运算单元。

在本实施例中,步骤s404包括:从运算单元通过分支运算单元将得到的中间结果传送至主运算单元。

在其中一个实施例中,如图18所示,还提出了一种神经网络运算方法。该神经网络运算方法可被上述实施例中的运算装置20执行,该运算装置20通过分支运算单元500转发主运算单元300与从运算单元400之间的数据,该方法包括:

步骤s501,主运算单元获取广播数据和分发数据,并将分发数据分割为a个子数据。可选地,广播数据可以为神经元数据或者权值等等数据,其中a为正整数。可选地,分发数据可以为神经元数据或者权值等等数据。

步骤s502,主运算单元使用上述实施例中的数据压缩方法,将广播数据和分发子数据分别分块进行压缩,得到广播压缩数据和a个分发压缩数据。

具体地,主运算单元的编码电路使用上述实施例中的数据压缩方法,将广播数据和分发子数据分别分块进行压缩,得到广播压缩数据和a个分发压缩数据。具体地,编码电路首先根据广播数据的特征将该广播数据划分为多个数据块,之后编码电路将该广播数据的多个数据块中的各个数据块进行压缩,得到与广播数据的每一数据块对应的数据头和数据体。最后编码电路根据得到的各个数据头得到广播压缩数据的头段,根据得到的各个数据体得到广播压缩数据的数据段,根据该广播压缩数据的头段和该广播压缩数据的数据段得到广播压缩数据。具体地,编码电路使用上述实施例中的数据压缩方法分别各个压缩分发子数据,得到a个分发压缩数据。进一步地,编码电路根据分发数据的特征,将a个子数据中某一分发子数据划分为多个数据块。之后编码电路将该某一分发子数据的多个数据块中的各个数据块进行压缩,得到与该某一分发子数据的每一数据块对应的分发数据头和分发数据体。最后编码电路根据得到的各个分发数据头得到分发压缩数据的头段,根据得到的各个分发数据体得到分发压缩数据的数据段,根据该分发压缩数据的头段和该分发压缩数据的数据段得到分发压缩数据。上述数据压缩方法,能够通过压缩该a个子数据中的各个子数据,得到a个分发压缩数据。

步骤s503,主运算单元将得到的a个分发压缩数据分发至a个从运算单元,将得到的广播压缩数据广播至该a个从运算单元。

可选地,主运算单元300通过分支运算单元500将得到的a个分发压缩数据分发至a个从运算单元400,通过分支运算单元500将得到的广播压缩数据广播至该a个从运算单元400。可选地,若分支运算单元500连接的从运算单元400的数量大于等于a,则主运算单元300可以通过一个或多个分支运算单元500将得到的a个分发压缩数据分发至a个从运算单元400,通过一个或多个分支运算单元500将得到的广播压缩数据广播至该a个从运算单元400。可选地,若分支运算单元500连接的从运算单元400的数量小于a,则主运算单元300可以通过多个分支运算单元500将得到的a个分发压缩数据分发至a个从运算单元400,通过多个分支运算单元500将得到的广播压缩数据广播至该a个从运算单元400。

可选地,主运算单元300通过与主运算单元300连接的k个从运算单元400将得到的a个分发压缩数据分发至a个从运算单元400,通过与主运算单元300连接的k个从运算单元400将得到的广播压缩数据广播至该a个从运算单元400。

需要说明的是,在具体应用过程中,使用与主运算单元300连接的k个从运算单元400还分支运算单元500进行主运算单元300以及多个从运算单元400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。

步骤s504,各个从运算单元解压该广播压缩数据和对应分发压缩数据得到广播解压数据和分发解压数据。具体地,从运算单元的编码电路解压该广播压缩数据和对应分发压缩数据得到广播解压数据和分发解压数据。

步骤s505,各个从运算单元使用对应的广播解压数据和分发解压数据进行运算,得到中间结果。可选地,可以使用从运算单元的身份信息标识各个从运算单元得到的中间结果。

步骤s506,a个从运算单元分别将得到的中间结果发送给主运算单元。

可选地,a个从运算单元400分别将得到的中间结果通过分支电路发送给主运算单元300。可选地,a个从运算单元400分别将得到的中间结果通过与主运算单元300连接的k个从运算单元400发送给主运算单元300。

需要说明的是,在具体应用过程中,使用与主运算单元300连接的k个从运算单元400还分支运算单元500进行主运算单元300以及多个从运算单元400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。

步骤s507,主运算单元使用该a个从运算单元的中间结果进行运算,得到运算结果。

本实施例提出的神经网络运算方法,首先将广播数据和分发数据压缩后,再进行广播或分发,可以有效的降低运算装置在进行神经网络运算时的带宽要求,提高了各个运算单元之间的数据传输效率。

现以神经网络运算中的全连接运算为例具体说明上述神经网络运算过程,该全连接运算为执行的y=f(wx+b)的运算过程,其中,x为神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,该激活函数可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。此处将神经元矩阵作为广播数据,权值矩阵作为分发数据,具体运算过程如图19所示,包括:

步骤s601,主运算单元将权值矩阵划w分为a权值子矩阵。

步骤s602,主运算单元使用上述实施例中的数据压缩方法,将神经元矩阵x进行压缩,得到神经元压缩数据,主运算单元使用上述实施例中的数据压缩方法,将a权值子矩阵分别进行压缩,得到a个权值子矩阵压缩数据。

步骤s603,主运算单元将得到的a个权值子矩阵压缩数据分发至a个从运算单元,将得到的神经元压缩数据广播至该a个从运算单元。

步骤s604,各个从运算单元的编码电路解压该神经元压缩数据和对应权值压缩数据得到神经元解压数据和权值解压数据。

步骤s605,各个从运算单元分别执行权值解压数据与神经元解压数据的乘法运算和累加运算,得到a个中间结果,各个从运算单元分别将得到的中间结果发送至主运算单元。

步骤s606,主运算单元根据该a个中间结果得到最终的运算结果。具体地,主运算单元300首先将该个中间结果排序得到wx的运算结果,之后将该运算结果执行偏置b的运算,最后通过主运算单元300的激活电路执行激活操作得到最终的运算结果y。

本实施例中运算装置在进行全连接运算时,首先将分发的权值子矩阵和广播的神经元矩阵进行压缩后,再分发或广播数据,可以提高主运算单元300与从运算单元400之间的数据传输效率,降低神经网络运算过程中主运算单元300与从运算单元400之间数据传输的带宽要求。

在其中一个实施例中,如图20所示,提出了另一种数据压缩方法,该数据压缩方法可以被上述实施例中的编码电路200执行,该方法包括:

步骤s701,根据编码电路的数量将待运算数据划分为多个组,得到多个待压缩数据。

具体地,编码电路的数据分割电路210根据编码电路的数量将待运算数据划分为多个组,得到多个待压缩数据。可选地,该编码电路可以设置在集群中的设备上,该编码电路也可以设置计算机设备的处理器上。该编码电路还可以设置在运算装置的运算单元上。可选地,将待运算数据划分的组的数量为编码电路的数量的整数倍。

步骤s702,根据待压缩数据的特征分别将多个待压缩数据中的各个待压缩数据划分为多个数据块。

具体地,编码电路的数据分割电路210根据待压缩数据的特征分别将多个待压缩数据中的各个待压缩数据划分为多个数据块。可选地,该待压缩数据的特征可以包括数据总大小、数据分布特征以及数据的重要程度等等中的一个或多个。其中数据的重要程度可以根据该数据出现的频率、数据大小等等特征来确定。可选地,在将待压缩数据划分为多个数据块时还可以考虑预设值。可选地,在将待压缩数据划分为多个数据块之前,筛除待压缩数据中的“0”值。

步骤s703,将各个待压缩数据中的各个数据块分别进行压缩,得到各个待压缩数据中每一数据块对应的数据头和数据体。其中,数据头包括对应的数据体的起始地址、数据长度等信息。数据体包含压缩前对应的数据块的编码数据。可选地,可选地,编码电路的压缩解压电路220可以使用huffman编码、游程编码、lz77以及它们的任意组合等等方式对各个数据块进行压缩。可选地,在压缩解压电路220使用huffman编码、游程编码、lz77以及它们的任意组合等等方式对各个数据块进行压缩之前,根据选择的压缩算法对待处理数据进行预处理。例如,使用huffman编码对各个数据块进行压缩时,需待压缩数据进行排序处理,得到huffman树,之后基于该huffman树压缩各个数据块。

步骤s704,根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。

具体地,编码电路200的压缩解压电路220根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。

上述实施例中的数据压缩方法,首先根据编码电路的数量将待压缩数据进行分组,然后根据数据的特征将待压缩数据分块,之后分块压缩各个数据块,得到与各个数据块一一对应的数据头与数据体,之后根据得到的与各个数据块对应的数据头和数据体得到压缩数据的头段和数据段,进而得到压缩数据。该方法通过将待压缩数据分组并分块压缩,实现并行压缩各个数据块提高压缩效率的目的。

在其中一个可选地实施例中,如图21所示,步骤s704包括:

步骤s7041a:使用标识位标识各个数据块对应的数据头和数据体的对应关系。具体地,编码电路200的压缩解压电路220使用标识位标识各个数据块对应的数据头和数据体的对应关系。

步骤s7042a:将包含标识位的各个数据头组合得到压缩数据的头段,将包含标识位的各个数据体组合得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段分别组合得到压缩数据。

具体地,编码电路200的压缩解压电路220将包含标识位的各个数据头组合得到压缩数据的头段,将包含标识位的各个数据体组合得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段分别组合得到压缩数据。

在另一个可选地实施例中,如图22所示,步骤s704包括:

步骤s7041b:根据各个待压缩数据之间的位置关系,以及各个待压缩数据中每一数据块与其他数据块之间的位置关系,得到各个数据头的摆放格式。

具体地,编码电路200的压缩解压电路220根据各个待压缩数据之间的位置关系,以及各个待压缩数据中每一数据块与其他数据块之间的位置关系,得到各个数据头的摆放格式。可选地,各个数据头的摆放格式可以为,与对应的数据块在待运算数据中的位置一致。该位置一致是指对应的数据块所处的待运算数据中各个数据块之间的相对位置一致,以及对应的数据块所处的待运算数据与其他待运算数据的相对位置也一致。

步骤s7042b:根据得到的数据头的摆放格式摆放各个数据头,得到压缩数据的头段;根据第一预设摆放格式摆放各个数据体,得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。

具体地,编码电路200的压缩解压电路220根据得到的数据头的摆放格式摆放各个数据头,得到压缩数据的头段;根据第一预设摆放格式摆放各个数据体,得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。

可选地,压缩解压电路220将得到的各个压缩数据的头段与对应的各个压缩数据的数据体拼接得到各个压缩数据。可选地,各个压缩数据的数据段中数据体的第一预设摆放格式可以为一维紧密、二维紧密或者任一维度的紧密摆放每一数据块对应的数据体。可选地,可以通过设置标识位的标识压缩数据的数据段中各个数据体与压缩数据的头段中各个数据头的对应关系。

可选地,该待压缩数据可以为集群中各个设备之间需传输的数据,可以为多个处理器之间需传输的数据,还可以为运算装置中各个运算单元之间需传输的数据。例如运算装置需获取的输入数据。下面以运算装置中各个运算单元中需传输的数据为例,具体说明上述实施例中的数据压缩方法的具体压缩过程和应用。

作为一种可选地实施方式,如图23所示,提出了一种数据压缩方法,该方法被上述运算装置20执行,具体包括:

步骤s801,主运算单元接收输入数据,并使用上述实施例中的数据压缩方法将该输入数据进行压缩,得到多个压缩数据。

具体地,主运算单元300的编码电路接收输入数据后,按照从运算单元400的数量将输入数据进行分组。应当清楚的是,该从运算单元400的数量为执行数据压缩操作的从运算单元400的数量。

步骤s802,主运算单元将得到的多个待压缩数据分发至多个从运算单元。

可选地,主运算单元300可以在得到的多个压缩数据中增加从运算单元400身份标识,并根据该身份标识分发待压缩数据。

步骤s803,各个从运算单元的编码电路根据接收的待压缩数据的特征将待压缩数据分块,得到待压缩数据的多个数据块。

步骤s804,各个从运算单元的编码电路将得到的多个数据块进行压缩,得到各个待压缩数据中每一数据块对应的数据头和数据体。

步骤s805,各个从运算单元将得到的数据头与数据体发送至主处理电路。主处理电路根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。

可选地,主运算单元300的编码电路200使用标识位标识各个数据块对应的数据头和数据体的对应关系。之后,主运算单元300的编码电路将包含标识位的各个数据头组合得到压缩数据的头段,将包含标识位的各个数据体组合得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段分别组合得到压缩数据。

可选地,主运算单元300的编码电路200首先根据各个待压缩数据之间的位置关系,以及各个待压缩数据中每一数据块与其他数据块之间的位置关系,得到各个数据头的摆放格式。之后,主运算单元300的编码电路200根据得到的数据头的摆放格式摆放各个数据头,得到压缩数据的头段;根据第一预设摆放格式摆放各个数据体,得到压缩数据的数据段,将压缩数据的头段和压缩数据的数据段组合得到压缩数据。

本实施例中的数据压缩方法,可以并行对输入数据进行分组压缩,提高了数据压缩效率。

作为一种可选地实施方式,如图24所示,提出了另一种数据处理方法,该方法被上述运算装置20执行,具体包括:

步骤s901,主运算单元接收输入数据,并使用上述实施例中的数据压缩方法将该输入数据进行压缩,得到多个压缩数据。

具体地,主运算单元300的编码电路接收输入数据后,按照从运算单元400的数量将输入数据进行分组,得到多个待压缩数据。主运算单元300将得到的多个待压缩数据分发至多个从处理单元并行分块压缩得到多个数据头与数据体。从处理单元将得到的多个数据头与数据体发送至主处理电路,主处理电路根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到压缩数据。

步骤s902,主运算单元将得到的压缩数据发送至多个从运算单元。

可选地,主运算单元300通过分支运算单元500将得到的压缩数据发送至多个从运算单元400。可选地,主运算单元300通过与主运算单元300连接的k个从运算单元400将得到的压缩数据发送至多个从运算单元400。需要说明的是,在具体应用过程中,使用与主运算单元300连接的k个从运算单元400还是分支运算单元500进行主运算单元300以及多个从运算单元400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。

步骤s903,多个从运算单元中的编码电路解压接收的压缩数据,得到解压数据。

步骤s904,各个从运算单元的乘法运算单元使用该解压数据进行乘法运算,得到中间结果,并将该中间结果传送至主运算单元。

可选地,从运算单元400通过分支运算单元500将得到的中间结果发送至主运算单元300。可选地,各个从运算单元400通过与主运算单元300连接的k个从运算单元400将得到的中间结果发送至主运算单元300。需要说明的是,在具体应用过程中,使用与主运算单元300连接的k个从运算单元400还分支运算单元500进行主运算单元300以及多个从运算单元400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。

步骤s905,主运算单元的使用该中间结果进行累法和激活运算,得到运算结果。

可选地,若该运算结果为最终的运算结果,则运算装置20可以终止上述数据处理流程。若该运算结果不是最终的运算结果,则运算装置20可以使用该运算结果进行下一阶段的运算。

上述实施例中的运算装置将输入数据进行压缩后再传送至从运算单元400可以降低运算单元之间数据传输的带宽要求。

在其中一个实施例中,如图25所示,还提出了一种神经网络运算方法。该神经网络运算方法可被上述实施例中的运算装置20执行,该运算装置20通过分支运算单元500转发主运算单元300与从运算单元400之间的数据,该方法包括:

步骤s1001,主运算单元获取广播数据和分发数据,并将分发数据分割为a个子数据。可选地,广播数据可以为神经元数据或者权值等等数据。可选地,分发数据可以为神经元数据或者权值等等数据。

步骤s1002,运算装置使用上述任一实施例中的数据压缩方法,将广播数据和分发子数据分别压缩,得到广播压缩数据和a个分发压缩数据。

具体地,运算装置20主运算单元300使用上述实施例中的数据压缩方法,将广播数据进行压缩,得到广播压缩数据。进一步地,主运算单元300的编码电路根据从运算单元400的数量将广播数据划分为多个组,得到多个待压缩数据。主运算单元300将多个待压缩数据分发至多个从运算单元400。多个从运算单元400中各个从运算单元400对接收的待压缩数据进行分块压缩,得到多个数据头和数据体。多个从运算单元400将得到的数据头和数据体发送至主处理单元。主处理单元根据得到的所有的数据头得到压缩数据的头段,根据得到的所有的数据体得到压缩数据的数据段,根据压缩数据的头段和压缩数据的数据段得到广播压缩数据。同理处理a个子数据,得到a个分发压缩数据。

步骤s1003,主运算单元将得到的a个分发压缩数据分发至a个从运算单元,将得到的广播压缩数据广播至该a个从运算单元。

具体地,主运算单元300通过分支运算单元500将得到的a个分发压缩数据分发至a个从运算单元400,主运算单元300通过分支运算单元500将得到的广播压缩数据广播至该a个从运算单元400。可选地,主运算单元300通过与主运算单元300连接的k个从运算单元400将得到的a个分发压缩数据分发至a个从运算单元400,主运算单元300通过与主运算单元300连接的k个从运算单元400将得到的广播压缩数据广播至该a个从运算单元400。

步骤s1004,各个从运算单元的编码电路解压该广播压缩数据和对应分发压缩数据得到广播解压数据和分发解压数据。

步骤s1005,各个从运算单元400使用对应的广播解压数据和分发解压数据进行运算,得到中间结果,并将得到的中间结果发送主处理单元。

步骤s1006,主运算单元300使用接收的中间结果进行运算,得到运算结果。

本实施例中的神经网路的运算方法数据压缩效率高,对运算装置的数据传输的带宽要求低。

现以神经网络运算中的全连接运算为例具体说明上述神经网络运算过程,该全连接运算为执行的y=f(wx+b)的运算过程,其中,x为神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,该激活函数可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。此处将神经元矩阵作为广播数据,权值矩阵作为分发数据,具体运算过程如图26所示,包括:

步骤s1101,主运算单元将权值矩阵划w分为n权值子矩阵。

步骤s1102,主运算单元的压缩解压电路使用上述实施例中的数据压缩方法,将神经元矩阵x和n个权值子矩阵分别进行压缩,得到神经元压缩数据和a个子矩阵压缩数据。

步骤s1103,主运算单元将得到的a个子矩阵压缩数据分发至a个从运算单元,将得到的神经元压缩数据广播至该a个从运算单元。

步骤s1104,各个从运算单元的编码电路解压该神经元压缩数据和对应权值压缩数据得到神经元解压数据和权值解压数据。

步骤s1105,各个从运算单元将得到的中间结果发送给主运算单元。

步骤s1106,主运算单元根据接收的中间结果得到最终的运算结果。具体地,主运算单元300首先将接收的a个中间结果排序得到wx的运算结果,之后将该运算结果执行偏置b的运算,最后通过主运算单元300的激活电路执行激活操作得到最终的运算结果y。

在其中一个实施例中,如图27所示,提出了一种数据解压方法,该数据压缩方法可以被上述实施例中的编码电路执行,用于解压上述数据压缩方法得到的压缩数据,该方法包括:

步骤s1201,获取压缩数据,所述压缩数据包括头段和与所述头段数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。

具体地,编码电路获取压缩数据,其中,所述压缩数据包括头段和数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。其中,数据头包括对应的数据体的起始地址、数据长度等信息。数据体包含压缩前对应的数据块的编码数据。

可选地,压缩数据的数据段中各个数据体的摆放格式可以为一维紧密、二维紧密或者任一维度的紧密摆放每一数据块对应的数据体。可选地,压缩数据的头段中的各个数据头按照该压缩数据压缩前包含的多个数据块之间的相对位置对应摆放。

步骤s1202,将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。

具体地,编码电路的数据分割电路210将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。

可选地,若数据头和数据体中包含标识对应关系的标识位,则根据所述标识位的数值,确定各个待解压数据块中的数据头和数据体。

步骤s1203,使用预设的压缩解压算法解压各个待解压数据块,得到解压数据块。

具体地,编码电路的压缩解压电路220使用预设的压缩解压算法解压各个待解压数据块,得到解压数据块。可选地,压缩解压电路220可以使用huffman编码、游程编码、lz77以及它们的任意组合等等方式对各个数据块进行解压。需要说明的是,压缩数据进行解压的编码方法与得到该压缩数据使用的编码方法需一致。

步骤s1204,根据第二预设摆放格式摆放解压数据块,得到解压数据。

可选地,该第二预设摆放格式可以根据压缩数据压缩前的数据得到。进一步地,该第二预设摆放格式可以根据压缩数据压缩前包含的数据块之间的位置关系得到。

本实施例中的数据解压方法,首先将压缩数据进行分解,得到包含对应的数据头和数据体的待解压数据块,之后在使用传统的解压方法解压各个待解压数据块得到解压数据块,最后根据解压数据块得到解压数据。该方法将包含头段和数据段的压缩数据转化为传统解压方法可解压的数据,实施简单。该方法还分块解压压缩的数据,可以实现并行解压,提高解压效率。

在其中一个实施例中,如图28所示,提出了另一种数据解压方法,用于解压上述数据压缩方法得到的压缩数据,该方法包括:

步骤s1301,获取压缩数据,所述压缩数据包括头段和与所述头段数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。

具体地,编码电路200获取压缩数据,其中,所述压缩数据包括头段和数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。其中,数据头包括对应的数据体的起始地址、数据长度等信息。数据体包含压缩前对应的数据块的编码数据。

可选地,压缩数据的数据段中各个数据体的摆放格式可以为一维紧密、二维紧密或者任一维度的紧密摆放每一数据块对应的数据体。可选地,压缩数据的头段中的各个数据头按照该压缩数据压缩前包含的多个数据块之间的相对位置对应摆放。

步骤s1302,将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。

具体地,编码电路200的数据分割电路将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。

步骤s1303,根据编码电路的数量将得到的多个待解压数据块分组,得到多个待解压数据组。

步骤s1304,将得到的待解压数据组分发至多个编码电路,编码电路按照预设的压缩解压算法解压接收的待解压数据组中的待解压数据块,得到多个解压数据块。

步骤s1305,根据第二预设摆放格式摆放解压数据块,得到解压数据。

本实施例中的数据解压方法,首先将压缩数据进行分解,得到包含对应的数据头和数据体的待解压数据块,之后将待解压数据块按照编码电路的数量分组后,再使用传统的解压方法解压各个待解压数据块得到解压数据块,最后根据解压数据块得到解压数据。该方法将包含头段和数据段的压缩数据转化为传统解压方法可解压的数据,实施简单。该方法还分块解压压缩的数据,可以实现并行解压,提高解压效率。

下面以运算装置20如何执行上述数据解压方法的步骤为例,具体说明上述数据解压方法,如图29所示,该数据解压方法包括:

步骤s1401:主运算单元获取压缩数据,所述压缩数据包括头段和与所述头段数据段。所述头段包含多个数据头,所述数据段包含多个与所述数据头对应的数据体。

步骤s1402:主运算单元的编码电路将压缩数据进行分解,得到多个待解压数据块,所述待解压数据块包括一个数据头和一个对应的数据体。

步骤s1403:主运算单元的编码电路根据从运算单元的数量将得到的多个待解压数据块分组,得到多个待解压数据组。

步骤s1404:主运算单元将多个待解压数据组分发至多个从处理单元。

可选地,主运算单元300通过分支运算单元500将得到的多个待解压数据组发送至多个从运算单元400。可选地,主运算单元300通过与主运算单元300连接的k个从运算单元400将得到的多个待解压数据组发送至多个从运算单元400。需要说明的是,在具体应用过程中,使用与主运算单元300连接的k个从运算单元400还是分支运算单元500进行主运算单元300以及多个从运算单元400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。

步骤s1405:各个从处理单元编码电路按照预设的压缩解压算法解压接收的待解压数据组中的待解压数据块,得到多个解压数据块。

步骤s1406:各个从处理单元将得到的多个解压数据块发送至主处理电路。

可选地,从运算单元400通过分支运算单元500将得到的多个解压数据块发送至主运算单元300。可选地,各个从运算单元400通过与主运算单元300连接的k个从运算单元400将得到的多个解压数据块发送至主运算单元300。需要说明的是,在具体应用过程中,使用与主运算单元300连接的k个从运算单元400还分支运算单元500进行主运算单元300以及多个从运算单元400的数据转发,应当根据运算装置的具体结构确定,本申请不作具体限定。

步骤s1407:根据第二预设摆放格式摆放解压数据块,得到解压数据。可选地,该第二预设摆放格式可以根据压缩数据压缩前的数据得到。进一步地,该第二预设摆放格式可以根据压缩数据压缩前包含的数据块之间的位置关系得到。

上述实施例中的数据解压方法,使用多个从处理电路并行解压压缩数据,提高了数据解压效率。

应该理解的是,虽然图2,图5,图7,图9,图11-图13,图15,图18-图29的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2,图5,图7,图9,图11-图13,图15,图18-图29中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1