处理数据的电路、图像处理系统、处理数据的方法和装置与流程

文档序号:11865457阅读:219来源:国知局
处理数据的电路、图像处理系统、处理数据的方法和装置与流程

本发明涉及卷积神经网络(Convolution Neural Network,CNN),尤其涉及CNN中的一种处理数据的电路、图像处理系统、处理数据的方法和装置。



背景技术:

神经网络及深度学习算法已经获得了非常成功的应用,并处于迅速发展的过程中,业界普遍预期新的计算方式有助于实现更为普遍,复杂的智能应用。CNN近年来在图像识别应用领域取得了非常突出的成就,因此业界对CNN算法的优化及高效率实现开始关注并重视,诸如脸书facebook,高通qualcomm,百度baidu,谷歌google等公司都投入了CNN优化算法的研究。

一般地,CNN中的卷积运算是采用传统流水线的方案来实现的。具体步骤为:N个乘法器在一个时钟同时并行对N个数据进行乘法运算,采用一个树型结构的加法单元把这些乘法结果通过加法器累加起来。在这种常规的卷积运算中,当输入的数据为稀疏向量时,即有大量0的存在,并且由于0和有效数据混合存在,因此所有电路都需要处于工作状态。分别关闭不同的电路在控制电路上的开销比较大,实施效益相对小,因此,亟待一种更有效率的电路布局来实现降低功耗的控制。



技术实现要素:

有鉴于此,本发明提供了一种处理数据的电路、图像处理系统、处理数据的方法和装置,能够在实现卷积运算的时候降低电路功耗。

第一方面,提供了一种处理数据的电路,该电路包括控制单元和N个处理单元,该控制单元和该N个处理单元中的每个处理单元分别与数据传输单元相连,该每个处理单元分别用于对该数据传输单元依次输出的同一数据进行处理,该N个处理单元中的第i个处理单元的输出端与第i+1个处理单元的输入端相连,其中,N为大于1的整数,i的取值范围为1至N-1中的整数,该控制单元用于:当确定该数据传输单元输出的待处理数据为0时,控制该N个处理单元都处于关闭状态。

多个处理单元在同一时刻接收同一数据,当输入数据为0时,同时关闭多个处理单元,从而能够降低功耗。

结合第一方面,在第一方面的第一种可能的实现方式中,该电路还包括N个移位寄存器,该N个移位寄存器中的第i个移位寄存器的输入端与该第i个处理单元的输出端相连,该第i个移位寄存器的输出端与该第i+1个处理单元的输入端相连,该控制单元还用于:当确定该待处理数据为0时,控制该第i个移位寄存器的值输出到该第i+1个处理单元;当确定该待处理数据不为0时,控制该N个处理单元对该待处理数据进行处理,并控制该第i个处理单元的值输出到该第i个移位寄存器。

当输入数据为0时,电路仅需保存最后的移位寄存器即可,换句话说,当输入数据为0时,所有处理单元关闭,所有寄存器将存储的值输出到下一级处理单元,即在稀疏向量输入的前提下,电路基本处于关闭状态,只有移位寄存器处于工作状态,功耗极低。

结合上述第一方面的一些实现方式,在第一方面的第二种可能的实现方式中,该电路还包括存储单元,该存储单元用于存储权值,该第i+1个处理单元具体用于:对该存储单元输出的与该第i+1个处理单元对应的权值和该待处理数据进行乘法运算,以及对由该乘法运算获得的结果和该第i个处理单元输出的值进行加法运算。

将权值存储在电路中,当输入数据较多时,既可以实现卷积运算,还可以通过轮换权值来实现全连接运算,能够达到硬件资源共享,从而提高芯片资源的利用率。

结合上述第一方面的一些实现方式,在第一方面的第三种可能的实现方式中,该N个处理单元包括N个乘法器和N个累加器,其中,该N个乘法器中的第i个乘法器的输出端和该N个累加器中的第i个累加器的输入端相连,该第i个累加器的输出端与该第i个移位寄存器的输入端相连,该第i个乘法器用于对该存储单元输出的与该第i个乘法器对应的权值和该待处理数据进行乘法运算;i+1个累加器用于对第i+1个乘法器输出的值和该第i个移位寄存器输出的值进行加法运算。

结合上述第一方面的一些实现方式,在第一方面的第四种可能的实现方式中,该待处理数据和/或该存储单元存储的权值为2的幂次方,该N个处理单元包括N个移位处理单元和N个累加器,其中,该N个移位处理单元中的第i个移位处理单元的输出端和该N个累加器中的第i个累加器的输入端相连,该第i个累加器的输出端与该第i个移位寄存器的输入端相连,该第i个移位处理单元用于根据该待处理数据,对与该第i个移位处理单元对应的权值进行移位操作,以完成乘法运算,或该第i个移位处理单元用于根据与该第i个移位处理单元对应的权值,对该待处理数据进行移位操作,以完成乘法运算;i+1个累加器用于对第i+1个移位处理单元输出的值和该第i个移位寄存器输出的值进行加法运算。

结合上述第一方面的一些实现方式,在第一方面的第五种可能的实现方式中,该控制单元还用于:当确定该待处理数据为0时,控制该存储单元处于关闭状态。

当输入数据为0时,控制存储单元处于关闭状态,能够进一步降低功耗。

结合上述第一方面的一些实现方式,在第一方面的第六种可能的实现方式中,该控制单元包括开关单元和选路单元,该开关单元用于控制该N个处理单元的开启和关闭,该选路单元用于选择该N个移位寄存器的工作模式,该工作模式包括移位累加模式和移位寄存模式。

结合上述第一方面的一些实现方式,在第一方面的第七种可能的实现方式中,该电路还包括解压缩单元,该解压缩单元用于对该存储单元存储的权值进行压缩和解压。

在很多应用场景下,权是稀疏分布的,因此压缩存放可以提高存储和处理的效率。

也可以通过将接收到的数据先进行压缩存储,使用时,从存储单元依次输出数据,处理单元再进行处理,可以降低来源数据的变化率,降低电路的功耗。

第二方面,提供了一种图像处理系统,该系统包括:M个如第一方面任一种电路、图像输入单元、非线性映射单元以及输出单元,该M个电路中的第k个电路的输出端与第k+1个电路的输入端相连,其中,M为正整数,i的取值范围为1至M-1中的整数,该图像输入单元用于对不同图像行的数据进行延迟处理,依次输出数据;该非线性映射单元用于对该第M个电路中的第N个处理单元输出的结果进行非线性运算;该输出单元用于输出该非线性映射单元输出的结果。

结合第二方面,在第二方面的第二种可能的实现方式中,该系统还包括:至少一个缓存单元,该至少一个缓存单元中的每个缓存单元对应多个电路,该每个缓存单元用于存储对应电路的第N个处理单元输出的值。

通过缓存到缓存的处理模式,使得硬件资源的灵活使用成为可能,CNN卷积及全连接运算规律中包含了非常高的并行度,通过缓存并行展开数据,可以使得后续的电路同时处理大规模的数据,提高极限性能。

第三方面,提供了一种处理数据的方法,该方法是采用第一方面任一种电路对输入数据进行处理,该方法包括:该控制单元判断该数据传输单元输出的待处理数据是否为0;在确定该待处理数据为0时,该控制单元控制该N个处理单元都处于关闭状态。

结合第三方面,在第三面的第一种可能的实现方式中,该方法还包括:该控制单元在确定该待处理数据为0时,控制该第i个移位寄存器的值输出到该第i+1个处理单元;该控制单元在确定该待处理数据不为0时,控制该N个处理单元对该待处理数据进行处理,并控制该第i个处理单元的值输出到该第i个移位寄存器。

第四方面,提供了一种处理数据的装置,该装置包括:处理器、收发器、存储器、N个乘法器、N个累加器和总线系统。其中,该存储器、该处理器、该收发器、该N个乘法器和该N个累加器通过该总线系统相连,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制收发器接收信号或发送信号,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器实现第一方面或第一方面的任意一种可能的实现方式中的控制单元。

第五方面,提供了一种计算机存储介质,用于储存为上述方法所用的计算机软件指令,其包含用于执行上述方面所设计的程序。

本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了实现卷积运算的传统流水线方案的电路逻辑图。

图2示出了本发明实施例提供的处理数据的电路的示意性框图。

图3示出了本发明实施例提供的处理数据的电路的另一示意性框图。

图4示出了本发明实施例提供的图像处理系统的示意性框图。

图5示出了本发明实施例提供的处理数据的方法的示意性框图。

图6示出了本发明实施例提供的处理数据的装置的示意性框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。

现有技术中的卷积运算是采用如图1所示的传统流水线的方案来实现的。具体步骤为:采用流水线的方式,N个乘法器在一个时钟同时并行对N个数据进行乘法运算,然后把这些乘法结果通过加法器累加起来,需要一个树型结构的加法单元,通过若干级流水线,才能获得最终全部累加项的累加结果。举例来说,如图1所示,输入数据为D00~D08,9个乘法器同时对D00~D08进行乘法运算,即乘法器输出的结果分别为W0*D00,W1*D01,......W8*D08,通过树形结构的加法单元之后输出的结果为R0=W0*D00+W1*D01+W8*D08,同样地,当输入数据为D10~D18时,输出的结果为R1=W0*D10+W1*D11+W8*D18。

上述提到,卷积运算的意义在于权值的共享,因此,在现有的传统卷积电路中,该每个乘法器对应的权值是固定配置的。而在现有的这种传统电路结构基础上,当同时输入数据为0和有效数据混合时,由于0的分布分散,不利于实现降低功耗的控制,或实现控制所需的额外代价高。

应理解,本发明实施例的技术方案可以应用到各种信号处理领域中,例如,语音识别、地震勘探、超声诊断、光学成像、系统辨识、图像识别等。

图2示出了本发明实施例提供的处理数据的电路100的结构示意图。如图2所示,该电路包括控制单元120和N个处理单元,该控制单元120和该N个处理单元中的每个处理110单元分别与数据传输单元相连,该每个处理单元110分别用于对该数据传输单元依次输出的同一数据进行处理,该N个处理单元中的第i个处理单元110的输出端与第i+1个处理单元110的输入端相连,其中,N为大于1的整数,i的取值范围为1至N-1中的整数,该控制单元120用于:当确定该数据传输单元输出的待处理数据为0时,控制该N个处理单元都处于关闭状态。

由于在CNN中,输入的图像数据通常是稀疏向量,即大量0和有效数据混合存在,无论输入数据是否为0,传统卷积运算的电路需要所有的乘加运算模块都处于工作,如果采用分别关闭不同的运算模块来降低电路功耗,这在控制电路上的开销比较大,实施效益相对较小。为此,在控制电路开销的前提下,本发明实施例提供的电路通过N个处理单元同步接收同一数据来实现当输入数据为0时,关闭所有处理单元,以达到在实现卷积运算时降低电路功耗的目的。

因此,本发明实施例提供的处理数据的电路,在实现卷积运算时能够降低电路的功耗。

本领域技术人员理解,卷积运算要完成的工作是:y=w1*x1+w2*x2+......wn*xn,即两个向量的点乘。这种运算通常有两种做法:一种是由n个并行的单元完成乘法运算,采用流水线的方式,通常可以做到一个时钟同时并行给出n个乘法运算的结果,然后,把所有这些结果加起来,需要一个树型结构的加法单元,通过若干级流水线,才能获得最终全部累加项的累加结果;另一种是在一个计算单元上逐次完成乘法,及累加,经过n个时钟后,乘加和完成,最后输出,这种做法使用一个计算单元完成该计算,总共需要n个节拍的时间。

关于第一种做法的缺点上述我们已经提到,这种电路的功耗较大,不利于提高图像识别网络的效率;关于第二种做法,由于卷积运算的意义在于权值的共享,因此,可以将n个计算单元级联累加。经过这样的调整,对应的乘法运算仍然按要求完成,只是同一输出所对应的n个乘法运算可以在不同的时间节拍上完成。这种调整不但没使计算过程复杂化,反而使得累加运算可以逐次完成,并在最后一个时钟输出。例如,可以对如图1所示的第一组数据做相应的延迟处理,即每个时钟输出一个数据。

我们知道,一个基本的卷积运算是一组特定的权对应到不同的数据,因此,在原始的数据格式里,数据本质上是不同的,随机的,这使得面向稀疏数据的处理单元难以做归一化的设计。经过调整后,不同的数据被调整到了不同的时间位置上,这使得在一些不同的计算模式下,同一时间位置上,放置相同的数据成为可能,而对应的权存放在存储单元里,可以根据需要做任意的调整,这种数据组织方式,使得数据对应的数据处理环节可以做归一化的,统一的设计,使得数据为0时的低功耗电路设计更加容易。

应理解,对于一次卷积所涉及的不同图像行的数据,可以通过行延迟的延迟处理确保逐次输出的数据并行地输入到N个处理单元,也可以通过同步地不同的数据指针来实现。通过这种处理,使得相同的数据同时被所有处理单元复用,提高数据复用率,简化降低功耗的控制电路设计。

可选地,该电路还包括N个移位寄存器,该N个移位寄存器中的第i个移位寄存器的输入端与该N个处理单元中的第i个处理单元的输出端相连,该第i个移位寄存器的输出端与该第i+1个处理单元的输入端相连,该控制单元还用于在确定该待处理数据不为0时,控制该N个处理单元对该待处理数据进行处理,并控制该第i个处理单元的值输出到该第i个移位寄存器。

根据移位寄存器的原理,移位寄存器不仅能存储数据,而且还能在时钟信号的作用下使其中的数据依次左移或右移。本发明实施例中的移位寄存器包括两种工作模式,一种是移位累加模式,即将移位寄存器中存储的值输出到下一级处理单元中;另一种是移位存储模式,即将相应的处理单元输出的值进行存储。

当输入数据为0时,电路仅需保存最后的移位寄存器即可,换句话说,当输入数据为0时,所有处理单元关闭,所有寄存器将存储的值输出到下一级处理单元,即在稀疏向量输入的前提下,电路基本处于关闭状态,只有移位寄存器处于工作状态,能耗极低。

可选地,该电路还包括存储单元,该存储单元用于存储权值,该第i+1个处理单元具体用于:对该存储单元输出的与该第i+1个处理单元对应的权值和该待处理数据进行乘法运算,以及对由该乘法运算获得的结果和该第i个处理单元输出的值进行加法运算。

具体地,若存储单元里存储一组权值,即N个权值,当待处理数据不为0时,控制单元控制存储单元输出该N个权值,该N个权值中的每个权值与该每个处理单元一一对应,当输入数据有多组时,例如有M组即M*N个数据时,每组数据对应的权值均为该N个权值,每N个数据即可输出一个卷积结果。

若存储单元里存储M组权值时,即M*N个权值,当对应的输入数据为M*N个数据时,将N个数据作为一组,同一组数据对应同一组权值,每N个数据轮换一组权值,并且每N个数据输出一个结果,该结果即为全连接运算输出。

因此,由于本发明实施例提供的电路中的每个处理单元可以接收到所有的输入数据,并且可以通过对存储单元存储的权值进行调整,使得每一组输入数据对应的权值不同,从而可以实现全连接运算,避免了采用不同的电路分别来实现卷积运算和全连接运算的问题,能够实现全连接网络与卷积网络在硬件上共享,从而提高了芯片资源利用率。

图3示出了本发明实施例提供的处理数据的电路200。如图3所示,该电路200包括:N个乘法器210、N个累加器220、N个移位寄存器230、存储单元240以及控制单元250,举例来说,N为9。一个处理单元包括一个乘法器和一个累加器,乘法器的输出端和相应的累加器的输入端相连,累加器的输出端和相应的移位寄存器的输入端相连,而移位寄存器的输出端则与下一级的累加器的输入端相连,乘法器用于对该存储单元输出的与该乘法器对应的权值和该待处理数据进行乘法运算;累加器用于对该乘法器输出的值和上一级移位寄存器输出的值进行加法运算。

应理解,本发明实施例中的处理单元包括的乘法器和累加器的个数不受限制,例如,第一级处理单元中可以只包括乘法器,不包括加法器,还可以是每个处理单元包括两个乘法器,其中一个乘法器的一个输入被固定为1,还可以是其他组合方式,本发明并不限于此。

当电路进行卷积运算或全连接运算时,将输入数据作为每个乘法器210的第一输入值,将存储单元240输出的N个权值作为N个乘法器210的第二输入值,N个权值中的每个权值与每个乘法器一一对应,每个乘法器210在控制单元250判断输入数据不为0的情况下同时对第一输入值和相应的第二输入值进行乘法运算,类似地,相应的第二输入值由存储单元240在控制单元250判断输入数据不为0的情况下控制输出。并且在输入数据不为0时,每个累加器220对上一级移位寄存器230输出的值以及相应的乘法器210输出的值进行加法运算,其中,第一个累加器的一个输入端可以设置为0。同时,当输入数据不为0时,每个移位寄存器230存储相应累加器220输出的值。而当输入的数据为0时,控制单元240控制所有乘法器210、所有累加器220以及存储单元240等都处于关闭状态,控制每个移位寄存器230将存储的值输入到下一级累加器220。

可选地,该待处理数据和/或该存储单元存储的权值为2的幂次方,该N个处理单元包括N个移位处理单元和N个累加器,其中,该N个移位处理单元中的第i个移位处理单元的输出端和该N个累加器中的第i个累加器的输入端相连,该第i个累加器的输出端与该第i个移位寄存器的输入端相连,该第i个移位处理单元用于根据该待处理数据,对与该第i个移位处理单元对应的权值进行移位操作,以完成乘法运算,或该第i个移位处理单元用于根据与该第i个移位处理单元对应的权值,对该待处理数据进行移位操作,以完成乘法运算;i+1个累加器用于对第i+1个移位处理单元输出的值和该第i个移位寄存器输出的值进行加法运算。

相对浮点表示,或高精度定点表示的权值和数据而言,可以对权值和数据进行量化,量化后能降低存储需求,同时也大大降低计算量。其中权值或数据可以量化为2的幂次方,这使得后续的乘法运算简化为移位加法计算。具体地,可以根据输入数据,对相应的权值进行移位处理,从而完成乘法运算;还可以根据相应的权值,每个移位处理单元对输入数据进行移位处理,来实现乘法运算,权值或数据可以通过非线性量化降低码率,其中2的幂的量化是其中最简单的情形,权量化的一种极限情况是:{-1,0,1}),或者{-1,1},这种极限情况下,即使数据是高精度的定点数,后续的处理也只需要加法运算。

还可以将多Bit特征图像,直接按Bit平面放到不同的特征平面去,这直接完成了最简单的输入数据的Binary量化,使得面向Binary计算的网络可以处理多Bit数据。

应理解,在本发明实施例中,处理单元可以是对输入数据进行乘加运算的单元,也就是只要能实现乘加运算的单元都可以本发明实施例的方案,本发明实施例仅以乘法器和移位处理单元实现乘法运算为例,本发明不限于此。

可选地,该控制单元还用于:当确定该待处理数据为0时,控制该存储单元处于关闭状态。

当输入数据为0时,控制存储单元处于关闭状态,能够进一步降低功耗。

应理解,该控制单元250可以包括简单的开关单元或选路单元,也可以包括时钟产生单元以及时钟控制单元等。例如,时钟产生单元用于产生一个时钟信号,该时钟信号的周期应该大于一个处理单元处理一个数据的时间,并且每个时钟周期输出一个数据。该时钟控制单元可以根据输入数据控制时钟产生单元产生的时钟信号,当数据为0时,关闭时钟产生单元,在数据不为0时,开启时钟产生单元。选路单元则用来根据输入数据来选择移位寄存器的工作模式,即当数据为0时,移位寄存器仅工作在移位寄存模式,当数据不为0时,则移位寄存器工作在移位累加模式,还可以通过开关单元来控制所有处理单元的开启或关闭。例如,可以在数据为0时,关闭所有的处理单元,在输入数据不为0时,开启所有的处理单元。

可选地,作为本发明的一个实施例,该存储单元为动态随机存储器DRAM。该存储单元还可以用于存储数据。可以将一次卷积涉及的数据存储在存储单元,该电路还可以包括延迟单元,在使用时,将存储单元存储的数据通过延迟单元逐个输出,作为N个处理单元的输入。

具体地,在CNN卷积及全连接计算过程中,数据和权值都存在重复使用的情况,并且数据和权都是有规律顺序存放,顺序使用的。因此实际使用的数据都存在随机存储器(random access memory,RAM)中,但逻辑上数据和权的容量可以非常大,因此可以采用大容量的DRAM。从而实现大容量的网络,高性能的计算。

可选地,作为本发明的一个实施例,该电路还包括解压缩单元,该解压缩单元用于对该存储单元存储的数据和/或权值进行压缩和解压。

根据数据稀疏性的特点,数据缓存也可以压缩存放,提高数据缓存的利用率。使用时,从数据缓存解压缩输出数据序列。在很多应用场景下,权也是稀疏分布的,因此压缩存放可以提高存储和处理的效率。采用存储单元实现对数据和权值的存储,使得数据和权值能够重复使用,数据或权的复用,能够进一步降低功耗。

在本发明实施例中,上述电路可以应用于云计算场景,该场景中上述电路可以由云设备中某一单元实现,例如:由云设备中的处理器单元实现上述电路。另外,上述电路还可以应用于终端设备上,该场景中,上述电路可以由终端设备中与图像传感器连接或者拉近的部件实现,例如:由终端设备的处理芯片实现上述电路。且这里的终端设备包括平板电脑、手机、电子阅读器、遥控器、PC、笔记本电脑、车载设备、网络电视、可穿戴设备等具有图像识别功能的智能设备。

本发明实施例还提供了一种图像处理系统。如图4所示,该系统包括:M个上述电路、图像输入单元、非线性映射单元以及输出单元,M个电路中的第k个电路的输出端与第k+1个电路的输入端相连,其中,M为正整数,k的取值范围为1至M-1中的整数。该图像输入单元用于对不同图像行的数据进行延迟处理,依次输出数据;该非线性映射单元用于对第M个电路的第N个处理单元输出的结果进行非线性运算;该输出单元用于输出该非线性映射单元输出的结果。

每个电路包括级联输入和级联输出,可以级联应用。使得不同规模的计算具体体现为不同规模的累加,通过级联输入输出的运用,使得累加可以级联,既固定的阵列可以处理不同长度的累加运算。

应理解,在图像输入单元中,可以将一个大尺寸的图像平面直接转换为多个小尺寸的图像平面。例如,一个256*256的图像,可以转换为4个64*64的图像,其中小图像的相同位置4个像素,分别对应大图像2*2窗口数据中的每一个。这种映射方式,可以直接将大图像的卷积运算,转换为多个小图像的卷积运算。使得CNN卷积运算各层参数变化范围变小,有利于硬件实施的效率。

应理解,可以在每个电路的最后一个处理单元后面都设置非线性映射单元,也可以只在整个系统的最后一个处理单元后面设置非线性映射单元,该非线性映射单元中可以存储高效实现神经计算中的Sigmoid映射,ReLU映射,或其他映射。例如,对数、指数、或基于直方图分布的图像增强映射。

可选地,作为本发明的一个实施例,该系统还包括:至少一个缓存单元,该至少一个缓存单元中的每个缓存单元对应多个电路,该每个缓存单元用于存储对应电路的第N个处理单元输出的值。

涉及多特征的卷积计算量非常大,往往超过一个物理阵列处理能力的范围,需要通过缓存中间结果,多次计算累加后才能完成。支持这种计算的方式为:每次计算的累加输入取自缓存,同时计算结果也存至缓存。缓存可以允许存在多个,可以根据需要,从指定累加缓存读入,并输出到不同的指定累加缓冲写入。

通过缓存到缓存的处理模式,使得硬件资源的灵活使用成为可能;统一的缓存结构确保同一硬件架构支持CNN卷积与全连接计算;缓存的写入与读出可以采取不同的方式,适配数据处理规律的需要,降低缓存用量。并且一个缓存单元可以对应多个电路,能够提高数据输入的并行度,使得大规模,高性能并行处理成为可能。

图4所示的系统可以在图2或图3所示的电路100或电路200的基础上进行扩展得到。并且电路100或电路200中的各个模块实现的操作和功能与上述技术方案相同,为了简洁,在此不再赘述。

下面将结合图5对本发明实施例提供的处理数据的方法300进行描述。该方法采用上述描述的电路100或电路200对输入数据进行处理,例如可以由控制单元执行,如图5所示,该方法300包括:

S310,判断该数据传输单元输出的待处理数据是否为0;

S320,在确定该待处理数据为0时,控制该N个处理单元都处于关闭状态。

因此,本发明实施例提供的处理数据的方法,能够在实现卷积运算时降低电路的功耗。

可选地,作为本发明一个实施例,该方法还包括:该控制单元在确定该待处理数据为0时,控制该第i个移位寄存器的值输出到该第i+1个处理单元;该控制单元在确定该待处理数据不为0时,控制该N个处理单元对该待处理数据进行处理,并控制该第i个处理单元的值输出到该第i个移位寄存器。

图6示出了根据本发明实施例的装置500。该装置包括:处理器520、收发器530、存储器510、N个乘法器540、N个累加器550和总线系统560。其中,该存储器、该处理器、该收发器、该N个乘法器和该N个累加器通过该总线系统相连,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制收发器依次输出同一数据,并且当该处理器执行该存储器存储的指令时,该处理器用于:当确定该收发器接收的待处理数据为0时,控制该N个乘法器和N个累加器都处于关闭状态。

因此,本发明实施例提供的处理数据的装置,能够在实现卷积运算的时候降低电路功耗。

应理解,在本发明实施例中,该处理器520可以是CPU,该处理器520还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器。

该存储器510可以包括只读存储器和随机存取存储器,并向处理器520提供指令和数据。存储器510的一部分还可以包括非易失性随机存取存储器。例如,存储器510还可以存储设备类型的信息。

该总线系统560除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统560。

在实现过程中,上述方法300的各步骤可以通过处理器520中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器510,处理器520读取存储器510中的信息,结合其硬件完成上述方法300的步骤。为避免重复,这里不再详细描述。

应理解,在本发明实施例中,根据本发明实施例的装置500可以用于实现图3所示的电路200。为了简洁,在此不再赘述。

应理解,在本发明实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例该方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换。

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