CN108701015A - 用于神经网络的运算装置、芯片、设备及相关方法 - Google Patents
用于神经网络的运算装置、芯片、设备及相关方法 Download PDFInfo
- Publication number
- CN108701015A CN108701015A CN201780013391.2A CN201780013391A CN108701015A CN 108701015 A CN108701015 A CN 108701015A CN 201780013391 A CN201780013391 A CN 201780013391A CN 108701015 A CN108701015 A CN 108701015A
- Authority
- CN
- China
- Prior art keywords
- unit
- counter
- feature vector
- multiply
- address
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
提供一种用于神经网络的运算装置、芯片与设备,所述运算装置包括:控制单元与乘累加单元组,该乘累加单元组包括滤波器寄存器与多个计算单元,该滤波器寄存器与该多个计算单元连接;该控制单元用于,生成控制信息,并向该计算单元发送该控制信息;该滤波器寄存器用于,缓存待进行乘累加运算的滤波器权重值;该计算单元用于,缓存待进行乘累加运算的输入特征值,根据接收的该控制信息对该滤波器权重值与该输入特征值进行乘累加运算。通过一个控制单元控制所有的计算单元,可以降低控制单元的设计复杂度;通过多个计算单元共用一个滤波器寄存器,可以减少所需的缓存大小。
Description
技术领域
本申请涉及神经网络领域,并且更为具体地,涉及一种用于神经网络的运算装置、芯片、设备及相关方法。
背景技术
深度神经网络是一种机器学习算法,它被广泛应用于目标识别、目标检测以及图像的语义分割等计算机视觉任务。深度神经网络包括一个输入层、若干个隐藏层和一个输出层。深度神经网络中每一层的输出是一组权重值与其对应的输入特征值的乘积之和(即乘累加)。每一个隐藏层的输出又被称为输出特征值,其作为下一个隐藏层或输出层的输入特征值。
深度卷积神经网络是一种至少一个隐藏层的运算为卷积运算的深度神经网络。当前技术中,通常用来实现深度卷积神经网络的运算过程的运算装置为图形处理器(graphicprocessing unit,GPU)或神经网络专用处理器。其中,基于GPU的运算过程,使得在整个运算过程中需要较多的数据搬移操作,导致数据处理的能效比较低。而基于神经网络专用处理器的运算过程,神经网络专用处理器的指令集架构需要复杂的控制逻辑完成取指、译码等任务,导致控制逻辑所需占用的芯片面积较大,此外,神经网络专用处理器需要编译器等工具链支持,开发难度大。
发明内容
本申请提供一种用于神经网络的运算装置、芯片、设备及相关方法,可以使得多个计算单元共用同一个滤波器寄存器,同时还可以降低控制逻辑的设计复杂度,从而在降低控制逻辑的设计复杂度的基础上,提高能效比。
第一方面,提供一种用于神经网络的运算装置,所述运算装置包括:控制单元与乘累加单元组,所述乘累加单元组包括滤波器寄存器与多个计算单元,所述滤波器寄存器与所述多个计算单元连接;所述控制单元用于,生成控制信息,并向所述计算单元发送所述控制信息;所述滤波器寄存器用于,缓存待进行乘累加运算的滤波器权重值;所述计算单元用于,缓存待进行乘累加运算的输入特征值,根据接收的所述控制信息对所述滤波器权重值与所述输入特征值进行乘累加运算。
本发明实施例提供的运算装置采用同一个控制单元控制所有的计算单元,相对于现有技术,可以有效降低控制单元的设计复杂度,从而可以减小控制单元所需的芯片面积,进而减小运算装置的体积。同时,本申请提供的运算装置使得多个计算单元共用一个滤波器寄存器,从而可以减少所需的缓存大小,进而可以提高运算装置的能效比。此外,本申请提供的运算装置通过预先缓存滤波器权重与输入特征值,可以提高数据重用读,减少数据搬移操作,而且,在复用了乘累加单元中的加法器,减少了***中加法器的使用。
第二方面,提供一种用于神经网络的运算装置,所述运算装置包括:控制单元与多个乘累加单元组,每个乘累加单元组包括计算单元以及与所述计算单元连接的滤波器寄存器;所述控制单元用于,生成控制信息,并向所述计算单元发送所述控制信息;每个滤波器寄存器用于,缓存待进行乘累加运算的滤波器权重值;每个计算单元用于,缓存待进行乘累加运算的输入特征值,并根据所述控制单元发送的所述控制信息,对所述输入特征值与所连接的滤波器寄存器中缓存的滤波器权重值进行乘累加运算;其中,所述多个乘累加单元组中的第一乘累加单元组的计算单元与另外一个乘累加单元组的计算单元按照预设顺序连接,或者,所述第一乘累加单元组的计算单元分别与另外两个乘累加单元组中的计算单元按照预设顺序连接,所述顺序连接用于将按照所述预设顺序连接的计算单元的乘累加运算结果进行累加。
本发明实施例提供的运算装置采用同一个控制单元控制所有的计算单元,相对于现有技术,可以有效降低控制单元的设计复杂度,从而可以减小控制单元所需的芯片面积,进而减小运算装置的体积。同时,本申请提供的运算装置使得多个计算单元共用一个滤波器寄存器,从而可以减少所需的缓存大小,进而可以提高运算装置的能效比。此外,本申请提供的运算装置通过预先缓存滤波器权重与输入特征值,可以提高数据重用读,减少数据搬移操作。本申请提供的运算装置的处理并行度也很高,可以进一步提高数据处理效率。
第三方面,提供一种芯片,所述芯片包括如第一方面或第二方面提供的用于神经网络的运算装置,还包括通信接口,所述通信接口用于获取待所述运算装置处理的输入数据,还用于输出所述运算装置的运算结果。
第四方面,提供一种用于处理神经网络的设备,所述设备包括:中央控制单元、接口缓存单元、片上网络单元、存储单元、如第一方面或第二方面提供的运算装置;所述中央控制单元用于,读取卷积神经网络的配置信息,并根据所述配置信息将对应的控制信号分发给所述接口缓存单元、所述片上网络单元、所述运算装置、所述存储单元;所述接口缓存单元用于,根据中央控制单元的控制信号将输入特征矩阵信息和滤波器权重信息通过列总线输入到所述片上网络单元中;所述片上网络单元用于,根据所述中央控制单元的控制信号,将从所述列总线上接收的输入特征矩阵信息和滤波器权重信息映射到行总线(X BUS)上,并通过所述行总线,将所述输入特征矩阵信息和滤波器权重信息输入到所述运算装置中;所述存储单元用于,接收并缓存所述运算装置输出的输出结果,如果所述运算装置输出的输出结果为中间结果,所述存储单元还用于将所述中间结果输入到所述运算装置中。其中,接口缓存单元根据控制信号,读取并缓存滤波器权重矩阵的信息和输入特征矩阵的信息。
本发明实施例提供的用于处理神经网络的设备采用同一个控制单元控制所有的计算单元,相对于现有技术,可以有效降低控制单元的设计复杂度,从而可以减小控制单元所需的芯片面积,进而减小运算装置的体积。同时,本申请提供的运算装置使得多个计算单元共用一个滤波器寄存器,从而可以减少所需的缓存大小,进而可以提高运算装置的能效比。
第五方面,提供一种可移动设备,所述可以移动设备包括第四方面提供的用于处理神经网络的设备。
第六方面,提供一种用于神经网络的方法,所述方法应用于运算装置,所述运算装置包括控制单元与乘累加单元组,所述乘累加单元组包括滤波器寄存器与多个计算单元,所述滤波器寄存器与所述多个计算单元连接,所述方法包括:通过所述控制单元生成控制信息,并向所述计算单元发送所述控制信息;通过所述滤波器寄存器,缓存待进行乘累加运算的滤波器权重值;通过所述计算单元,缓存待进行乘累加运算的输入特征值,并根据接收的所述控制信息对所述滤波器权重值与所述输入特征值进行乘累加运算。
本发明实施例提供的运算装置采用同一个控制单元控制所有的计算单元,相对于现有技术,可以有效降低控制单元的设计复杂度,从而可以减小控制单元所需的芯片面积,进而减小运算装置的体积。同时,本申请提供的运算装置使得多个计算单元共用一个滤波器寄存器,从而可以减少所需的缓存大小,进而可以提高运算装置的能效比。此外,本申请提供的运算装置通过预先缓存滤波器权重与输入特征值,可以提高数据重用读,减少数据搬移操作,而且,在复用了乘累加单元中的加法器,减少了***中加法器的使用。
第七方面,提供一种用于神经网络的方法,所述方法应用于运算装置,所述运算装置包括控制单元与多个乘累加单元组,每个乘累加单元组包括计算单元以及与所述计算单元连接的滤波器寄存器,所述方法包括:通过所述控制单元,生成控制信息,并向所述计算单元发送所述控制信息;通过每个滤波器寄存器,缓存待进行乘累加运算的滤波器权重值;通过每个计算单元,缓存待进行乘累加运算的输入特征值,并根据所述控制单元发送的所述控制信息,对所述输入特征值与所连接的滤波器寄存器中缓存的滤波器权重值进行乘累加运算;其中,所述多个乘累加单元组中的第一乘累加单元组的计算单元与另外一个乘累加单元组的计算单元按照预设顺序连接,或者,所述第一乘累加单元组的计算单元分别与另外两个乘累加单元组中的计算单元按照预设顺序连接,所述顺序连接用于将按照所述预设顺序连接的计算单元的乘累加运算结果进行累加。
本发明实施例提供的运算装置采用同一个控制单元控制所有的计算单元,相对于现有技术,可以有效降低控制单元的设计复杂度,从而可以减小控制单元所需的芯片面积,进而减小运算装置的体积。同时,本申请提供的运算装置使得多个计算单元共用一个滤波器寄存器,从而可以减少所需的缓存大小,进而可以提高运算装置的能效比。此外,本申请提供的运算装置通过预先缓存滤波器权重与输入特征值,可以提高数据重用读,减少数据搬移操作。本申请提供的运算装置的处理并行度也很高,可以进一步提高数据处理效率。
第八方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机执行时使得所述计算机实现第六方面或第七方面的任一可能的实现方式中的方法。具体地,所述计算机可以为上述运算装置。
第九方面,提供一种包含指令的计算机程序产品,所述指令被计算机执行时使得所述计算机实现第六方面或第七方面的任一可能的实现方式中的方法。具体地,所述计算机可以为上述运算装置。
附图说明
图1为卷积层运算的示意图。
图2为本发明实施例提供的用于神经网络的运算装置的示意性框图。
图3为本发明实施例提供的用于神经网络的运算装置的另一示意性框图。
图4为本发明实施例提供的用于神经网络的运算装置的再一示意性框图。
图5为本发明实施例提供的用于神经网络的运算装置的再一示意性框图。
图6为本申请某些实施例提供的用于神经网络的运算装置中的计算单元的示意性框图。
图7为本申请实施例提供的生成输入特征值读地址的方法的示意性流程图。
图8为本申请实施例提供的生成输入特征值读地址的方法的另一示意性流程图。
图9为本申请实施例提供的生成输入特征值读地址的方法的再一示意性流程图。
图10为本申请实施例提供的生成输入特征值读地址的方法的再一示意性流程图。
图11为本申请实施例提供的生成滤波器权重值读地址的方法的示意性流程图
图12为本申请实施例提供的生成滤波器权重值读地址的方法的另一示意性流程图。
图13为本申请实施例提供的生成输入特征值读地址的再一方法流程图。
图14为本申请实施例提供的生成滤波器权重值读地址的方法的再一示意性流程图。
图15为卷积层运算的另一示意图。
图16为本发明实施例提供的用于神经网络的芯片的示意性框图。
图17为本发明实施例提供的用于处理神经网络的设备的示意性框图。
图18为本发明实施例提供的用于处理神经网络的方法的示意性流程图。
具体实施方式
在深度卷积神经网络中,隐藏层可以是卷积层。卷积层对应的一组权重值被称为滤波器,也被称为卷积核。滤波器和输入特征值都被表示为一个多维矩阵,对应地,表示成多维矩阵的滤波器也称为滤波器矩阵,表示成多维矩阵的输入特征值也称为输入特征矩阵。卷积层的运算称为卷积运算,该卷积运算指的是,输入特征矩阵的一部分特征值与滤波器矩阵的权重值进行内积操作。
深度卷积神经网络中每一个卷积层的运算过程可以被编成软件,然后通过在运算装置中运行该软件,得到每层网络的输出结果,即输出特征矩阵。例如,软件通过滑动窗口的方式,以每层网络的输入特征矩阵的左上角为起点,以滤波器大小为窗口,每次从特征值矩阵中提取一个窗口的数据与滤波器进行内积操作。当输入特征矩阵的右下角窗口的数据与滤波器完成内积操作后,便可得到每层网络的一个二维的输出特征矩阵。软件重复上述过程,直至产生每层网络的整个输出特征矩阵。
卷积层运算的过程为,将一个滤波器大小的窗口滑动过整个输入图像(即输入特征矩阵),在每个时刻对窗口内覆盖的输入特征值与该滤波器进行内积运算,其中,窗口滑动的步长为1。具体地,以输入特征矩阵的左上角为起点,以滤波器大小为窗口,窗口滑动的步长为1,每次从特征值矩阵中提取一个窗口的输入特征值与滤波器进行内积操作,当输入特征矩阵的右下角的数据与滤波器完成内积操作后,便可得到该输入特征矩阵的一个二维的输出特征矩阵。
具体地,如图1所示。假设输入图像对应的输入特征矩阵A1为如下所示的3×4的矩阵:
x11x12x13x14
x21x22x23x24
x31x32x33x34,
滤波器矩阵B1为如下所示的2×2的矩阵:
w11w12
w21w22,
则定义滑动窗口的大小为2×2,如图1所示。
卷积层运算的过程为,该滑动窗口在3×4的输入图像上以步长为1进行间隔滑动,每次滑动窗口覆盖的4个输入特征值与滤波器矩阵进行内积运算,得到一个输出结果。例如,某次滑动窗口覆盖的4个输入特征值为x22,x23,x32和x33,则对应的卷积运算为x22×w11+x23×w12+x32×w21+x33×w22,得到一个输出结果y22。当滑动窗口从输入图像的左上角按照步长逐次滑到右下角,即完成所有卷积运算后,所有输出结果构成输出图像。如图1所示,该输出图像对应的输出特征矩阵C1为如下所示的2×3的矩阵:
y11y12y13
y21y22y23,
其中,
y11=x11×w11+x12×w12+x21×w21+x22×w22,
y21=x21×w11+x22×w12+x31×w21+x32×w22,
y12=x12×w11+x13×w12+x22×w21+x23×w22,
y22=x22×w11+x23×w12+x32×w21+x33×w22,
y13=x13×w11+x14×w12+x23×w21+x24×w22,
y23=x23×w11+x24×w12+x33×w21+x34×w22。
上述可知,在图1所示的卷积层运算中,包括6次内积运算,每次内积运算对应的输入特征值不同,但滤波器相同。
为了更好地理解本申请提供的技术方案,下面首先介绍一下本发明实施例可能涉及到的术语。
输入图像,表示待处理的图像。
输入特征矩阵,表示输入图像对应的图像矩阵。输入特征矩阵可以是二维矩阵,例如,输入特征矩阵为大小为H×W的矩阵。输入特征矩阵也可以是多维矩阵,例如,输入特征矩阵为大小为H×W×R的矩阵,可以理解为R个通道的H×W的二维矩阵。例如,一幅彩色图像对应的特征矩阵为H×W×3,即3个通道的H×W的二维矩阵,这3个矩阵分别对应的图像的三原色RGB。其中,H称为输入特征矩阵的高度,W称为输入特征矩阵的宽度,R称为输入特征矩阵的深度。
输入特征值,表示输入特征矩阵中的各个值。
滤波器矩阵,表示卷积层使用的权重值构成的矩阵。滤波器矩阵可以是二维矩阵,例如,滤波器矩阵为大小为H×W的矩阵。滤波器矩阵也可以是多维矩阵,例如,滤波器矩阵为大小为H×W×R的矩阵,可以理解为R个H×W的二维矩阵。例如,针对一幅彩色图像,对应的滤波器矩阵应该也为三维矩阵H×W×3,即3个H×W的二维矩阵,这3个矩阵分别对应的图像的三原色RGB。其中,H称为滤波器矩阵的高度,W称为滤波器矩阵的宽度,R称为滤波器矩阵的深度。
滤波器权重,表示滤波器矩阵中的各个值,即卷积层使用的权重值。在上面结合图1的例子中,滤波器权重值包括w11,w12,w21,w22。
输出特征矩阵,表示由输入特征矩阵与滤波器矩阵进行卷积运算得到的矩阵。类似的,输出特征矩阵可能是二维矩阵,例如,输出特征矩阵的大小为H×W的矩阵。输出特征矩阵也可以是多维矩阵,例如,输出特征矩阵为大小为H×W×R的矩阵,其中,H称为输出特征矩阵的高度,W称为输出特征矩阵的宽度,R称为输出特征矩阵的深度。应理解,输出特征矩阵的深度与滤波器矩阵的深度一致。
上文已述,当前技术在处理神经网络的过程中存在较多的数据搬移操作,导致数据处理的能效比较低,或者控制逻辑的设计复杂度较高,导致控制逻辑所占芯片过大。
针对上述问题,本申请提出一种用于神经网络的运算装置、芯片以及设备,既能够使得多个计算单元共用同一个滤波器寄存器,又能够降低控制逻辑的设计复杂度。
图2为本申请提供的用于神经网络的运算装置200的示意性框图,该运算装置200包括:控制单元210与乘累加单元组220,该乘累加单元组220包括滤波器寄存器221与多个计算单元222,该滤波器寄存器221与该多个计算单元222连接。
该控制单元210,用于生成控制信息,并向该计算单元222发送该控制信息。
具体地,控制单元210用于,产生乘累加单元组220中计算单元222进行乘累加运算时需要的控制信息。
需要说明的是,在本申请提供的运算装置200中,所有乘累加单元组220,即所有计算单元222共用控制单元210产生的一组控制信息。换句话说,控制单元210用于向运算装置200中的所有计算单元222发送控制信息。
应理解,为了便于作图,图2中利用控制单元210与乘累加单元组220的连接,来表示控制单元210与乘累加单元组220中每个计算单元222的连接。
可选地,该控制信息中包括乘累加使能信号。
具体地,只有当该乘累加使能信号有效时,指示计算单元222才对滤波器权重值与输入特征值进行乘累加运算。
可选地,该控制信息中还包括滤波器权重值读地址和/或输入特征值读地址。
具体地,该滤波器权重值读地址用于指示计算单元222读取滤波器寄存器221中的哪些滤波器权重值。该输入特征值读地址用于指示计算单元222读取本地缓存空间中的哪个输入特征值。
可选地,该控制信息还可以包括如下信息中的至少一种:滤波器权重值在滤波器寄存器221中的地址、输入特征值在计算单元222中的缓存地址。
可选地,计算单元222可以用于,按照预设信息从滤波器寄存器读取对应的滤波器权重值,从本地存储空间读取对应的输入特征值。这种场景下,无需该控制信息中携带相关读地址信息。
该滤波器寄存器221,用于缓存待进行乘累加运算的滤波器权重值。
该计算单元222,用于缓存待进行乘累加运算的输入特征值,根据接收的该控制信息对该滤波器权重值与该输入特征值进行乘累加运算。
应理解,滤波器寄存器221预先缓存好待参与乘累加运算的滤波器权重值,计算单元222预先缓存好待参与乘累加运算的输入特征值,这里一般滤波器权重值数量可以是1*1,2*2,3*3,…,n*n,也可以是1*n,2*3、3*5,…,n*m。
具体地,如图2所示,滤波器寄存器221与计算单元222均可以从总线上接收并缓存对应的缓存数据。
可选地,该总线可以为行总线(XBUS)。
具体地,片上网络(Network On Chip)单元通过XBUS,将输入特征值与滤波器权重值发送至运算装置200,具体地,将输入特征值发送至运算装置200中的计算单元222,将滤波器权重值发送至运算装置200中的滤波器寄存器221。
下文有些实施例中以总线为XBUS为例进行描述。实际应用中,该总线可以为其他总线,本发明实施例对此不作限定。
具体地,每一个计算单元222与XBUS的接口都有一个编号,称为特征值接口编号。其中,同一个乘累加单元组220内的不同计算单元222的接口地址不同,每个计算单元222具体用于,从总线接收并缓存目的地接口地址与该计算单元222的接口地址相匹配的输入特征值。这里提到的相匹配可以是相同。
与计算单元222类似,每一个滤波器寄存器221与XBUS的接口也有一个编号,称为权重值接口编号。滤波器寄存器221具体用于,从总线接收并缓存目的地接口地址与该滤波器寄存器的接口地址相匹配的滤波器权重值。
作为一个示例,以图1所示卷积运算为例。假设乘累加单元组220包括六个计算单元222,第一个计算单元222中缓存输入特征值x11,x12,x21,x22,第二个计算单元222中缓存输入特征值x21,x22,x31,x32,第三个计算单元222中缓存输入特征值x12,x13,x22,x23,第四个计算单元222中缓存输入特征值x22,x23,x32,x33,第五个计算单元222中缓存输入特征值x13,x14,x23,x24,第六个计算单元222中缓存输入特征值x23,x24,x33,x34。乘累加单元组220中的滤波器寄存器221中缓存滤波器权重值w11,w12,w21,w22。当检测到控制信息中的乘累加使能信号有效时,每个计算单元222从滤波器寄存器中读取滤波器权重值w11,w12,w21,w22,并将其与本地缓存的输入特征值进行乘累加运算(即进行内积运算),得到运算结果。应理解,通过六个计算单元222的计算,分别得到运算结果y11,y21,y12,y22,y13,y23。运算装置200根据六个计算单元的运算结果,可以得到输出特征矩阵C1。
应理解,在上述示例中,运算装置可以一次性计算得到整个输出特征矩阵C1,本发明实施例并不限定于此。实际应用中,当输出特征矩阵很大,运算装置中包括的计算单元不足以输出整个输出特征矩阵的所有值,这种情形下,可以采用多次运算,以得到完整输出特征矩阵。例如,假设上述例子中,乘累加单元组中只包括两个计算单元,则需要进行3次运算才可以得到完整输出特征矩阵。
应理解,上述实施例中,根据计算单元和输入图像的大小关系,选择适当的输入特征值缓存至计算单元进行计算。例如,只有3个计算单元,第一计算单元中缓存输入特征值x11、x12、x21、x22,第二计算单元中缓存输入特征值x12、x13、x22、x23,第三计算单元中缓存输入特征值x13、x14、x23、x24,滤波器寄存器221中缓存滤波器权重值w11,w12,w21,w22,这个时候先进行3次运算,再在第一计算单元中缓存输入特征值x21、x22、x31、x32,第二计算单元中缓存输入特征值x22、x23、x32、x33,第三计算单元中缓存输入特征值x23、x24、x33、x34。
应理解,上述实施例中,每个计算单元222可以完成一次卷积运算,但是实际上计算单元可能先计算一个输入特征值、或者卷积运算的一行特征值,然后输出结果至外部或者计算单元中和下一次计算结果进行累加,得到最终的卷积运算结果,其中,下一次计算结果,可以是计算下一个输入特征值、或者卷机运算的下一行;例如,第一计算单元中缓存输入特征值x11、x12,第二计算单元中缓存输入特征值x12、x13,第三计算单元中缓存输入特征值x13、x14,滤波器寄存器221中缓存滤波器权重值w11,w12,w21,w22,这个时候先进行3次运算,再在第一计算单元中缓存输入特征值x21、x22、,第二计算单元中缓存输入特征值x22、x23,第三计算单元中缓存输入特征值x23、x24,再进行3次运算,将两次得到的结果累加,得到最终的3个卷积结果。
在本申请提供的运算装置中,一个乘累加单元组中包括一个滤波器寄存器和多个乘累加单元,且该多个乘累加单元都从滤波器寄存器中获取滤波器权重值。换句话说,该滤波器寄存器相当于是该多个计算单元的共用滤波器寄存器,无需每个计算单元都分配一段存储空间来存储滤波器权重值。因此,本申请提供的运算装置可以使得多个计算单元共用同一个滤波器寄存器,从而可以在一定程度上降低存储需求。此外,滤波器寄存器中预先缓存有滤波器权重值,计算单元中预先缓存有输入特征值,应理解,通过预先缓存滤波器权重值与输入特征值,可以提高数据重用度,减少数据搬移操作。
此外,在本申请提供的运算装置中,由一个控制单元向所有计算单元发送控制信息。换句话说,本申请提供的运算装置只需一个控制单元来控制所有模块,相比于现有技术,有效降低了控制逻辑的设计复杂度。
上述可知,本申请提供的运算装置采用同一个控制单元控制所有的计算单元,相对于现有技术,可以有效降低控制单元的设计复杂度,从而可以减小控制单元所需的芯片面积,进而减小运算装置的体积。同时,本申请提供的运算装置使得多个计算单元共用一个滤波器寄存器,从而可以减少所需的缓存大小,进而可以提高运算装置的能效比。此外,本申请提供的运算装置通过预先缓存滤波器权重与输入特征值,可以提高数据重用读,减少数据搬移操作。
可选地,本申请提供的运算装置200包括多个如图2所示的乘累加单元组220。
需要说明的是,上述结合图2描述的乘累加单元组220与控制单元210的连接关系、以及乘累加单元组220中滤波器寄存器221与计算单元222的连接关系,可使用本实施例,也可适用于下文描述的各个实施例。
在本申请提供的运算装置中,一个控制单元用于向多个乘累加单元组中的各个计算单元发送控制信息,相对于现有技术,有效简化了用于神经网络的运算装置的控制逻辑的设计复杂度。
可选地,作为一种实现方式,该运算装置200包括N个乘累加单元组220,该N个乘累加单元组220连接同一条总线,控制单元210用于向N个乘累加单元组220中的每个计算单元发送控制信息,N为正整数。
具体地,N个乘累加单元组220中的滤波器寄存器221以及计算单元222均与同一条总线连接。N个乘累加单元组220中的计算单元222均用于接收控制单元210发送的控制信息。
假设一个乘累加单元组220中包括S个计算单元,则本实施例提供的运算装置一次性可以输出S×N个运算结果,可以提高处理并行度。
具体地,假设N等于2,本实施例提供的运算装置200如图3所示。
应理解,图3仅为示例而非限定,实际应用中,可根据实际需求,适应性设置N或者S的数值。
可选地,在上述结合图3的实施例中,该多个乘累加单元组中不同乘累加单元组之间的计算单元的接口地址相同;或该多个乘累加单元组中不同乘累加单元组之间的计算单元的接口地址不同。
以图3为例,假设图3中所示的左边一个乘累加单元组中的滤波器寄存器中缓存的滤波器权重值不同于图3中所示的右边一个乘累加单元组中的滤波器寄存器中缓存的滤波器权重值。这种情形下,左边一个乘累加单元组中的计算单元的接口地址可以与右边一个乘累加单元组中的计算单元的接口地址相同。
本实施例提供的运算装置可以实现,并行执行同一个输入特征图基于两个不同滤波器的卷积运算。
可选地,在上述结合图3的实施例中,该多个乘累加单元组中不同乘累加单元组之间的滤波器寄存器的接口地址相同;或该多个乘累加单元组中不同乘累加单元组之间的滤波器寄存器的接口地址不同。
还以图3为例,假设图3中所示的左边一个乘累加单元组中的计算单元的接口地址与图3中所示的右边一个乘累加单元组中的计算单元的接口地址相同。这种情形下,左边一个乘累加单元组中的滤波器寄存器的接口地址可以与右边一个乘累加单元组中的滤波器寄存器的接口地址不同。
本例提供的运算装置可以实现,并行执行同一个输入特征图基于两个不同滤波器的卷积运算。
再例如,假设图3中所示的左边一个乘累加单元组中的计算单元的接口地址与图3中所示的右边一个乘累加单元组中的计算单元的接口地址不同。这种情形下,左边一个乘累加单元组中的滤波器寄存器的接口地址可以与右边一个乘累加单元组中的滤波器寄存器的接口地址相同。
本例提供的运算装置可以实现,并行执行同一个输入特征图与同一个滤波器的多组卷积运算。
具体地,在滤波器矩阵的深度大于1的情况下,即输出特征矩阵的深度大于1的情况下,针对本实施例提供的如图3所示的运算装置200,不同乘累加单元组之间的滤波器寄存器的接口地址不同,不同乘累加单元组之间的计算单元的接口地址相同。
具体地,采用本实施例提供的运算装置,可以同时得到两个二维输出特征矩阵各自的一列(部分或全部)。
具体地,在滤波器矩阵的深度等于1的情况下,即输出特征矩阵的深度等于1的情况下,针对本实施例提供的如图3所示的运算装置200,不同乘累加单元组之间的滤波器寄存器的接口地址相同,不同乘累加单元组之间的计算单元的接口地址不同。
可选地,作为另一种实现方式,该运算装置200包括M个乘累加单元组220,该M个乘累加单元组220一对一连接M条不同的总线,该多个乘累加单元组中的第一乘累加单元组的计算单元与另外一个乘累加单元组的计算单元按照预设顺序连接,或者,该第一乘累加单元组的计算单元分别与另外两个乘累加单元组中的计算单元按照预设顺序连接,该顺序连接用于将按照该预设顺序连接的计算单元的乘累加运算结果进行累加。这里的第一乘累加单元组表示多个乘累加单元组中的任一个。
具体地,M个乘累加单元组220中不同乘累加单元组220中的计算单元222串行连接,例如,第1个乘累加单元组220中的第i个计算单元222与第2个乘累加单元组220中的第i个计算单元222连接,第2个乘累加单元组220中的第i个计算单元222还与第3个乘累加单元组220中的第i个计算单元222连接,第3个乘累加单元组220中的第i个计算单元222还与第4个乘累加单元组220中的第i个计算单元222连接,以此类推,第M-1个乘累加单元组220中的第i个计算单元222还与第M个乘累加单元组220中的第i个计算单元222连接,i为1,..,S,S为乘累加单元组220中包括的计算单元222的个数。
对应地,按照该预设顺序连接的计算单元的乘累加运算结果进行累加,指的是,该M个该乘累加单元组中的第一计算单元用于,将该第一计算单元的乘累加运算结果发送至与之连接的一个计算单元。该M个该乘累加单元组中的第二计算单元用于,接收与之连接的一个计算单元发送的乘累加运算结果,并将该第二计算单元最初的乘累加运算结果与该接收的乘累加运算结果进行累加,得到该第二计算单元最终的乘累加运算结果。
具体地,假设连接关系如下:第1个乘累加单元组220中的第i个计算单元222与第2个乘累加单元组220中的第i个计算单元222连接,第2个乘累加单元组220中的第i个计算单元222还与第3个乘累加单元组220中的第i个计算单元222连接,第3个乘累加单元组220中的第i个计算单元222还与第4个乘累加单元组220中的第i个计算单元222连接,以此类推,第M-1个乘累加单元组220中的第i个计算单元222还与第M个乘累加单元组220中的第i个计算单元222连接。则按照该预设顺序连接的计算单元的乘累加运算结果进行累加,指的是,第1个乘累加单元组220中的第i个计算单元222的乘累加运算结果发送至第2个乘累加单元组220中的第i个计算单元222,第2个乘累加单元组220中的第i个计算单元222将接收的运算结果与自己所得的乘累加运算结果进行累加,得到对应的运算结果,并将最终得到的运算结果发送至第3个乘累加单元组220中的第i个计算单元222,以此类推,第M个乘累加单元组220中的第i个计算单元222将自己所得的乘累加运算结果与从第M-1个乘累加单元组220中的第i个计算单元222接收的运算结果进行累加,得到对应的运算结果,此时,得到的运算结果为M个计算单元的乘累加运算结果的累加之和。应理解,乘累加单元组220(M)的输出结果即为运算装置200的输出结果。
应理解,本实施例提供的运算装置,适用于如下的计算场景:每个计算单元仅用于执行部分卷积运算,例如,每个计算单元仅用于执行一个完整二维滤波器矩阵中的一行权重值对应的乘累加运算。然后,多个计算单元的运算结果的累加和作为一个完整滤波器矩阵对应的内积。
可选地,在本实施例中,当M大于二维滤波器矩阵的高时,本实施例提供的运算装置可以同时进行多个输入特征矩阵的卷积运算。
作为一个示例,假设M等于12,滤波器矩阵的高为3,输入特征矩阵的深度为4。则图4所示的计算单元阵列的第一行至第三行进行输入特征矩阵的第一层输入特征值与滤波器矩阵的卷积运算,图4所示的计算单元阵列的第四行至第六行进行输入特征矩阵的第二层输入特征值与滤波器矩阵的卷积运算,图4所示的计算单元阵列的第七行至第九行进行输入特征矩阵的第三层输入特征值与滤波器矩阵的卷积运算,图4所示的计算单元阵列的第十行至第十二行进行输入特征矩阵的第四层输入特征值与滤波器矩阵的卷积运算。
本例提供的运算装置,可以并行执行多层输入特征矩阵的多个层的卷积运算。应理解,这里提及的多层输入特征矩阵指的是深度大于1的输入特征矩阵。
作为另一个示例,假设M等于12,滤波器矩阵的高为3,滤波器矩阵的深度为4,输入特征矩阵的深度为1。则图4所示的计算单元阵列的第一行至第三行进行输入特征矩阵与滤波器矩阵的第一层滤波器权重值的卷积运算,图4所示的计算单元阵列的第四行至第六行进行输入特征矩阵与滤波器矩阵的第二层滤波器权重值的卷积运算,图4所示的计算单元阵列的第七行至第九行进行输入特征矩阵与滤波器矩阵的第三层滤波器权重值的卷积运算,图4所示的计算单元阵列的第十行至第十二行进行输入特征矩阵与滤波器矩阵的第四层滤波器权重值的卷积运算。
本例提供的运算装置,可以并行执行同一张输入特征图基于多层滤波器矩阵的卷积运算。应理解,这里提及的多层滤波器矩阵指的是深度大于1的滤波器矩阵。
具体地,如图1所示的卷积层运算,对于输出特征矩阵C1中的一个输出特征值y11,可以由计算单元222(1)进行如下运算:P1=x11×w11+x12×w12,可以由计算单元222(2)进行如下运算:P2=x21×w21+x22×w22,然后由计算单元222(1)向计算单元222(2)发送运算结果P1,最后计算单元222(2)对运算结果P1和P2做累加,则得到输出特征值y11。
本实施例提供的运算装置200,可以简化单个计算单元222的计算负担,从而可以提高运算装置200的设计灵活性。
可选地,如图4所示,本实施例提供的运算装置200中的M个乘累加单元组220组成M行1列的矩形阵列,假设每个乘累加单元组220包括S个计算单元222,则M×S个计算单元222组成M行S列的矩形阵列。
下文将计算单元222组成矩形阵列称为计算单元阵列(MAC Cell)。
需要说明的是,在本申请提供的运算装置200中,所有乘累加单元组220,即所有计算单元222共用控制单元210产生的一组控制信息,但相邻两组(行)乘累加单元组220的控制信息会延迟一拍。
可选地,在图4所示的实施例中,不同乘累加单元组220中的部分计算单元的接口地址相同。
具体地,如果输出特征矩阵相邻两行的卷积运算有部分的输入特征值相同,则可以将这部分输入特征值通过X BUS同时写入计算单元阵列中相邻两行中的相邻两列的计算单元中,然后同时计算这两个计算单元的卷积运算即可实现输入特征值的重用。
应理解,图4仅为示例而非限定,实际应用中,M个乘累加单元组220的布局以及M个乘累加单元组220中所有计算单元222的布局可以按照实际需求进行适应性设计,本发明实施例对此不作限定。
当乘累加单元组220的数量M小于滤波器矩阵的高度时,运算装置200不能一次性得到完整一个滤波器矩阵对应的乘累加运算结果,即运算装置200的一次输出只能输出中间结果,这种场景下,需要将中间结果先缓存,然后累加到下一次运算中,直到累加得到完整一个滤波器矩阵对应的乘累加运算结果为止。
可选地,在上述某些实施例中,该运算装置所处理的输入特征值包括多个输入特征图像中每个输入特征图像中的部分或全部输入特征值。
可选地,在某些实施例中,该多个乘累加单元组中的至少一个乘累加单元组中的计算单元与存储单元连接,该与该存储单元连接的计算单元还用于,将乘累加运算结果发送至该存储单元。
可选地,在某些实施例中,该多个乘累加单元组中的至少一个乘累加单元组中的计算单元与存储单元连接,该与该存储单元连接的计算单元还用于,接收该存储单元发送的数据,并将本地最初的乘累加运算结果与该接收的数据进行累加,得到本地最终的乘累加运算结果。
可选的,存储模块可以接收计算单元发送的数据,并在存储模块中进行累加的计算,得到中间或者最终的乘累加运算结果。
具体地,如图4所示,如果乘累加单元组220(M)的输出结果为一个完整二维滤波器矩阵对应的内积的中间结果,则乘累加单元组220(M)将该中间结果输出至存储单元,等待在下次运算中,存储单元再将该中间结果输入到乘累加单元组220(1)中继续累加。在下次运算中,乘累加单元组220(1)从存储单元接收该中间结果,并于自己的乘累加结果进行累加。
可选地,在上述结合图4的实施例中,该多个乘累加单元组中不同乘累加单元组之间的计算单元的接口地址相同;或该多个乘累加单元组中不同乘累加单元组之间的计算单元的接口地址不同。
具体地,假设图4中所示的与XBUS(3)连接的乘累加单元组220(3)中第一个计算单元所缓存的输入特征值与图4中所示的与XBUS(2)连接的乘累加单元220(2)中第二个计算单元所缓存的输入特征值相同,则乘累加单元组220(3)中第一个计算单元与乘累加单元组220(2)中的第二个计算单元的接口地址相同。
还以图4为例,与XBUS(0)连接的乘累加单元组220(0)中第一个计算单元所缓存的输入特征值与图4中所示的与XBUS(1)连接的乘累加单元220(1)中第二个计算单元所缓存的输入特征值不同,则乘累加单元组220(0)中第一个计算单元与乘累加单元组220(1)中的第二个计算单元的接口地址不同。
在本实施例提供的运算装置中,由于计算单元通过本地接口地址与XBUS上传输的输入特征值的目的地接口地址的匹配来接收并缓存对应的输入特征值。因此,如果两个计算单元需要缓存相同的输入特征值,就可以通过为这两个计算单元设置相同的接口地址即可实现。通过这种的操作,可以实现同一个输入特征值可以一次被读入多个不同的计算单元中,这样可以有效减少数据搬移操作,从而可以提高数据处理的能效比。
可选地,在上述结合图4的实施例中,或该多个乘累加单元组中不同乘累加单元组之间的滤波器寄存器的接口地址不同。
可选地,作为再一种实现方式,如图5所示,该运算装置200包括多个乘累加单元组220,且多个乘累加单元组220分为M组,每组包括N个乘累加单元组,不同组对应不同的总线,不同组之间的计算单元按照预设顺序连接,用于将按照该预设顺序连接的计算单元的乘累加运算结果进行累加,M与N为正整数。具体地,该多个乘累加单元组中的第一乘累加单元组的计算单元与另外一个乘累加单元组的计算单元按照预设顺序连接,或者,该第一乘累加单元组的计算单元分别与另外两个乘累加单元组中的计算单元按照预设顺序连接,该顺序连接用于将按照该预设顺序连接的计算单元的乘累加运算结果进行累加。这里的第一乘累加单元组表示多个乘累加单元组中的任一个。
可选地,多个乘累加单元组220构成M行N列的矩形阵列。
具体地,多个乘累加单元组220中的所有计算单元222组成矩形阵列。假设,乘累加单元组220中包括S个计算单元222,则M×N个乘累加单元组220中的计算单元222组成M×(N×S)的矩形阵列。
具体地,如图5所示,图5中以N等于2为例。
应理解,图5仅为示例而非限定,本发明实施例并不限定各个计算单元222的分布方式。实际应用中,各个计算单元222的分布方式可以根据实际需要适应性设计。
作为一个示例,运算装置200包括的乘累加单元组220构成的二维阵列为12行2列的二维阵列。其中,每个乘累加单元组220包括7个计算单元222。换句话说,运算装置200包括的乘累加单元222构成的二维阵列为12行14列的计算单元二维阵列。
具体地,同一列的计算单元222计算的输入特征值和滤波器权重值的乘累加结果会从下向上逐级再次累加,换句话说,在同一列中,下一行的计算单元222产生的乘累加结果会在上一行的计算单元222中再次进行累加。
可选地,在结合图4的实施例中,如果多个乘累加单元组中的一部分乘累加单元组中进行乘累加运算,而另一部乘累加单元组中没有要处理的数据,且用于与外部存储器(例如图4中所示的存储单元)连接的乘累加单元组位于这另一部分乘累加单元组中。这种情形下,这另一部分乘累加单元组中的计算单元只负责乘累加结果的传递,而不会对其进行累加运算。
可选地,在计算单元的二维矩阵中,最下面一行的计算单元222会累加存储单元输入的数据,最上面一行的计算单元222会输出一个输出特征值或输出特征值的中间结果。
具体地,每一个计算单元222与X BUS的接口都有一个编号,称为权重值接口编号。其中,同一行的计算单元222所配置的接口编号互不相同,但不同行的计算单元222可以配置相同的接口编号。
如果一个计算单元222的接口编号与X BUS上的输入特征值的目的地接口编号相同,则该计算单元222接收并缓存X BUS上的输入特征值。
与计算单元222类似,每一个滤波器寄存器221与X BUS的接口也有一个编号,称为权重值接口编号。
具体地,在处理卷积神经网络的某些层时,同一行的滤波器寄存器221所配置的接口编号相同。但在处理卷积神经网络的另外一些层时,同一行的滤波器寄存器221所配置的接口编号互不相同。
具体地,如果一个滤波器寄存器221的接口编号与X BUS上的滤波器权重值的目的地接口编号相同,则该滤波器寄存器221接收并缓存X BUS上的滤波器权重值。
可选地,在滤波器矩阵的深度大于1的情况下,即输出特征矩阵的深度大于1的情况下,针对本实施例提供的如图5所示的运算装置200,同一组中不同乘累加单元组之间的滤波器寄存器的接口地址不同,不同乘累加单元组之间的计算单元的接口地址相同。
具体地,采用本实施例提供的运算装置,可以同时得到两个二维输出特征矩阵各自的一列(部分或全部)。
可选地,在滤波器矩阵的深度等于1的情况下,即输出特征矩阵的深度等于1的情况下,针对本实施例提供的如图3所示的运算装置200,同一组中不同乘累加单元组之间的滤波器寄存器的接口地址相同,不同乘累加单元组之间的计算单元的接口地址不同。
可选的,同一列的计算单元222每个时钟周期只会产生一个输出特征值或输出特征值的中间结果。
在上述如图4或图5所示的实施例中,可以降低每个计算单元的计算负担,使得运算装置的设计更加灵活。
上述可知,本申请提供的运算装置,使得多个计算单元共用同一个滤波器寄存器,还简化了控制逻辑的设计复杂度,同时具有很高的并行度,可以在较短的时间内完成深度卷积神经网络的卷积运算。
针对图4或图5所示的实施例,可选地,如果输出特征矩阵相邻两行的卷积运算有部分的输入特征值相同,则可以将这部分输入特征值通过X BUS同时写入两行计算单元222中的输入特征值寄存器,然后同时计算这两行的卷积运算即可实现输入特征值的重用。
针对图4或图5所示的实施例,可选地,在处理卷积神经网络的某些层时,N×S列计算单元222可以同时产生一个二维输出特征矩阵相邻N×S行中的同一列输出特征值。
针对图4或图5所示实施例,可选地,在处理卷积神经网络的另一些层时,N×S列计算单元222可以同时产生两个二维输出特征矩阵相邻N×S/2行中的同一列输出特征值。
图6示出图4或图5所示实施例提供的运算装置中的计算单元的结构示意图。为了便于区分和描述,图6中以计算单元222(1)为例进行描述,计算单元222(1)分别与计算单元222(2)以及计算单元222(3)连接,其中,计算单元222(1)接收来自于计算单元222(2)的乘累加运算结果,并与本地计算得到的乘累加运算结果进行累加,得到最终运算结果,然后将该最终运算结果发送至计算单元222(3)。如图6所示,该计算单元222(1)包括:
输入特征值寄存器用于,缓存X BUS上的输入特征值,然后根据控制单元210发送的控制信息将指定地址的输入特征值送入第二寄存器。
具体地,根据控制单元210发送的控制信息将输入特征寄存器中对应地址的特征值写入第二寄存器。
第一寄存器,用于从滤波器寄存器(1)读取待进行乘累加运算的滤波器权重值。滤波器寄存器(1)指的是与计算单元222(1)同属于同一个乘累加单元组220的滤波器寄存器。
第二寄存器,用于从输入特征值寄存器读取待进行乘累加运算的输入特征值。
乘法电路,用于对第一寄存器中的滤波器权重值与第二寄存器中的输入特征值进行乘法运算。
第三寄存器,用于存储乘法电路的乘积结果。
第一加法电路,用于对第三寄存器中存储的乘法运算结果进行累加,得到累加结果。
第四寄存器,用于存储第一加法电路的累加结果。
第二加法电路,用于接收来自于计算单元(2)的运算结果,并对于计算单元(2)的运算结果与第四寄存器存储的累加结果进行累加。
第五寄存器,用于存储第二加法电路的累加结果,并用于将该累加结果发送至计算单元(3)。
可选地,在某些实施例中,该控制信息中还包括输入特征值读地址;该计算单元210根据接收的该控制信息对该滤波器权重值与该输入特征值进行乘累加运算,具体包括:该计算单元210用于,根据该输入特征值读地址,从该输入特征值中获取目标特征值,对该目标特征值与该滤波器权重值进行乘累加运算。
具体地,针对不同的场景,控制单元210生成输入特征值读地址的方法相应不同,具体如下。
场景一:输入特征矩阵的深度为1,且计算单元中缓存的输入特征值的位数等于滤波器矩阵的宽度。关于输入特征矩阵的深度以及滤波器矩阵的宽度的解释详见上文。计算单元中缓存的输入特征值的位数指的是计算单元中缓存的输入特征值的数量。例如,计算单元中缓存了M个输入特征值,则认为该计算单元中缓存的输入特征值的位数为M。
该控制单元210包括:第一计数器与第一处理单元;该第一计数器用于,在乘累加使能信号有效的情况下触发计数,还用于在接收到该第一处理单元发出的复位信号时进行计数值复位;该第一处理单元用于,判断该第一计数器的计数值是否超过滤波器矩阵的宽度,若否,将该输入特征值读地址加1,若是,向该第一计数器发送复位信号,并将该输入特征值读地址复位。应理解,在每次将输入特征值读地址加1后,再回到判断乘累加使能信号是否有效的步骤。
具体地,图7示出控制单元生成输入特征值读地址的方法的示意性流程图。该方法包括:启动深度卷积神经网络的某一隐藏层的卷积运算。S710,控制第一计数器清零,输入特征值读地址清零。S720,判断乘累加使能信号是否有效,若是,转到S730,若否,继续回到S720。S730,触发第一计数器加1。S740,判断第一计数器的计数值是否超过滤波器矩阵的宽度,若否,转到S750,若是,转到S760。S750,将输入特征值读地址加1,继续回到S720。S760,控制第一计数器复位,并将输入特征值读地址复位,继续回到S720。
场景二:输入特征矩阵的深度大于1,且计算单元中缓存的输入特征值的位数等于滤波器矩阵的宽度。
该控制单元210包括:第一计数器、第一处理单元、第二计数器与第二处理单元;该第一计数器用于,在乘累加使能信号有效的情况下触发计数,还用于在接收到该第一处理单元发出的复位信号时进行计数值复位;该第一处理单元用于,判断该第一计数器的计数值是否超过滤波器矩阵的宽度,若否,将该输入特征值读地址加1,若是,向该第一计数器发送复位信号,并向该第二计数器发送触发计数信号;该第二计数器用于,在接收到该触发计数信号时触发计数,还用于在接收到该第二处理单元发出的复位信号时进行计数值复位;该第二处理单元用于,判断该第二计数器的计数值是否超过输入特征矩阵的深度,若否,将第一读基地址增加一个步长,并将该输入特征值读地址赋值为该第一读基地址,若是,向该第二计数器发送复位信号,并将该输入特征值读地址与该第一读基地址复位。其中,第一读基地址的步长方向在输入特征矩阵的深度方向上。应理解,在每次将输入特征值读地址加1后,再回到判断乘累加使能信号是否有效的步骤。
具体地,图8示出控制单元生成输入特征值读地址的方法的另一示意性流程图。该方法包括:启动深度卷积神经网络的某一隐藏层的卷积运算。S810,控制第一计数器与第二计数器清零,将输入特征值读地址与第一读基地址复位。S820,判断乘累加使能信号是否有效,若是,转到S830,若否,继续回到S820。S830,触发第一计数器加1。S840,判断第一计数器的计数值是否超过滤波器矩阵的宽度,若否,转到S850,若是,转到S860。S850,将输入特征值读地址加1,继续回到S820。S860,控制第一计数器复位,并触发第二计数器开始计数。S870,判断第二计数器的计数值是否超过输入特征矩阵的深度,若否,转到S880,若是,转到S890。S880,将第一读基地址增加一个步长,将输入特征读地址赋值为第一读基地址,继续回到S820。S890,控制第二计数器复位,并将输入特征值读地址与第一读基地址复位,继续回到S820。
场景三:输入特征矩阵的深度为1,且计算单元中缓存的输入特征值的位数大于滤波器矩阵的宽度。
该控制单元210包括:第一计数器与第一处理单元;该第一计数器用于,在乘累加使能信号有效的情况下触发计数,还用于在接收到该第一处理单元发出的复位信号时进行计数值复位;该第一处理单元用于,判断该第一计数器的计数值是否超过滤波器矩阵的宽度,若否,将该输入特征值读地址加1,若是,向该第一计数器发送复位信号,将第二读基地址增加一个步长,并判断该第二读基地址的值是否超过预设值,若否,将该输入特征值读地址赋值为该第二读基地址,若是,将该输入特征值读地址与该第二读基地址复位。应理解,在每次将输入特征值读地址加1后,再回到判断乘累加使能信号是否有效的步骤。
第二读基地址的步长方向在输入特征矩阵的宽度方向上。
该预设值可以根据滤波器矩阵的宽度、输入特征矩阵的宽度以及计算单元中用于缓存该输入特征值的寄存器宽度确定。
例如,以图1所示场景为例,输入特征矩阵的宽度为4,滤波器矩阵的宽度为2。第一种情形,假设计算单元中用于缓存输入特征值的寄存器(记为寄存器G1)的存储深度大于或等于输入特征矩阵的宽度(即4),例如,该寄存器G1可以一次性缓存输入特征值x31,x32,x33,和x34,且假设x31,x32,x33和x34在该寄存器G1中的存储地址分别为Address0,Address1,Address2与Address3,则输入特征值读地址与第二读基地址的初始值均为Address0。例如,在第二读基地址为初始值Address0的情形下,当第一计数器的计数值大于滤波器矩阵的宽度(即2)时,将第二读基地址增加一个步长,该步长等于1,即第二读基地址的值为Address1,然后将输入特征值读地址赋值为Address1。在本例的情形下,该预设值根据滤波器矩阵的宽度与输入特征矩阵的宽度来确定,例如,该预设值为Address2。第二种情形,假设计算单元中用于缓存输入特征值的寄存器G1的存储深度度小于输入特征矩阵的宽度(即4),例如,该寄存器G1一次性只缓存了输入特征值x31,x32,x33,且假设x31,x32和x33在该寄存器G1中的存储地址分别为Address0,Address1与Address2,则输入特征值读地址与第二读基地址的初始值均为Address0。例如,在第二读基地址为初始值Address0的情形下,当第一计数器的计数值大于滤波器矩阵的宽度(即2)时,将第二读基地址增加一个步长,该步长等于1,即第二读基地址的值为Address1,然后将输入特征值读地址赋值为Address1。在本例的情形下,该预设值不仅仅与滤波器矩阵的宽度与输入特征矩阵的宽度有关,还与寄存器G1的存储深度也有关,在本例中,该预设值为Address1。
具体地,图9示出控制单元生成输入特征值读地址的方法的再一示意性流程图。该方法包括:启动深度卷积神经网络的某一隐藏层的卷积运算。S910,控制第一计数器清零,输入特征值读地址清零。S920,判断乘累加使能信号是否有效,若是,转到S930,若否,继续回到S920。S930,触发第一计数器加1。S940,判断第一计数器的计数值是否超过滤波器矩阵的宽度,若否,转到S950,若是,转到S960。S950,将输入特征值读地址加1,继续回到S920。S960,控制第一计数器复位,并将第二读基地址增加一个步长。S970,判断第二读基地址的值是否超过预设值,若否,转到S980,若是,转到S990。S980,将输入特征值读地址赋值为该第二读基地址,继续回到S920。S990,将输入特征值读地址与第二读基地址复位,继续回到S920。
场景四:输入特征矩阵的深度大于1,且计算单元中缓存的输入特征值的位数大于滤波器矩阵的宽度。
该控制单元210包括:第一计数器、第一处理单元、第二计数器、第二处理单元与第三计数单元;该第一计数器用于,在乘累加使能信号有效的情况下触发计数,还用于在接收到该第一处理单元发出的复位信号时进行计数值复位;该第一处理单元用于,判断该第一计数器的计数值是否超过滤波器矩阵的宽度,若否,将该输入特征值读地址加1,若是,向该第一计数器发送复位信号,并向该第二计数器发送触发计数信号;该第二计数器用于,在接收到该触发计数信号时触发计数,还用于在接收到该第二处理单元发出的复位信号时进行计数值复位;该第二处理单元用于,判断该第二计数器的计数值是否超过输入特征矩阵的深度,若否,将第一读基地址增加一个步长,将该第二读基地址赋值为该第一读基地址之后,将该第二读基地址增加该第三计数器的计数值个步长,将输入特征值读地址赋值为第二读基地址,若是,向该第二计数器发送复位信号,向该第三计数器发送触发计数信号,将该第一读基地址复位,并将第二读基地址赋值为该第一读基地址之后,将该第二读基地址增加第三计数器的计数值个步长,并判断该第二读基地址的值是否超过预设值,若否,将该输入特征值读地址赋值为该第二读基地址,若是,将该输入特征值读地址、该第二读基地址与该第三计数器复位。应理解,在每次将输入特征值读地址加1后,再回到判断乘累加使能信号是否有效的步骤。
其中,该预设值根据输入特征矩阵的宽度、滤波器矩阵的宽度以及用于缓存该输入特征值的寄存器的存储深度确定。场景四中涉及的预设值与场景三涉及的预设值含义相同,详见在场景三中解释。
具体地,第一读基地址的步长方向在输入特征矩阵的深度方向上,第二读基地址的步长方向在输入特征矩阵的宽度方向上。
具体地,图10示出控制单元生成输入特征值读地址的方法流程图。该方法包括:启动深度卷积神经网络的某一隐藏层的卷积运算。S1001,控制第一计数器、第二计数器与第三计数器清零,将输入特征值读地址、第一读基地址与第二读基地址复位。S1002,判断乘累加使能信号是否有效,若是,转到S1003,若否,继续回到S1002。S1003,触发第一计数器加1。S1004,判断第一计数器的计数值是否超过滤波器矩阵的宽度,若否,转到S1005,若是,转到S1006。S1005,将输入特征值读地址加1,继续回到S1002。S1006,控制第一计数器复位,并触发第二计数器开始计数。S1007,判断第二计数器的计数值是否超过输入特征矩阵的深度,若否,转到S1008,若是,转到S1009。S1008,将第一读基地址增加一个步长,将第二读基地址赋值为第一读基地址之后,将第二读基地址增加第三计数器的计数值个步长,将输入特征值读地址赋值为第二读基地址,继续回到S1002。S1009,控制第二计数器复位,触发第三计数器计数,将第一读基地址复位,将第二读基地址赋值为第一读基地址之后,将第二读基地址增加第三计数器的计数值个步长。S1010,判断第二读基地址的值是否超过预设值,若否,转到S1011,若是,转到S1012。S1011,将输入特征值读地址赋值为该第二读基地址,继续回到S1002。S1012,将输入特征值读地址、第二读基地址与第三计数器复位,继续回到S1002。
可选地,在某些实施例中,该控制信息中还包括滤波器权重值读地址;该计算单元根据接收的该控制信息对该滤波器权重值与该输入特征值进行乘累加运算,具体包括:该计算单元用于,根据该滤波器权重值读地址,从该滤波器权重值中获取目标权重值,对该目标权重值与该输入特征值进行乘累加运算。
具体地,针对不同的场景,控制单元210生成滤波器权重值读地址的方法相应不同,具体如下。
场景五,滤波器矩阵的深度为1。
该控制单元210包括:第四计数器与第三处理单元;该第四计数器用于,在乘累加使能信号有效的情况下触发计数,还用于在接收到该第三处理单元发出的复位信号时进行计数值复位;该第三处理单元用于,判断该第四计数器的计数值是否超过滤波器矩阵的宽度,若否,将该滤波器权重值读地址加1,若是,向该第四计数器发送复位信号,并将该滤波器权重值读地址复位。应理解,在每次将滤波器权重值读地址加1后,再回到判断乘累加使能信号是否有效的步骤。
具体地,图11示出控制单元生成输入特征值读地址的方法流程图。该方法包括:启动深度卷积神经网络的某一隐藏层的卷积运算。S1110,控制第四计数器清零,并将滤波器权重值读地址复位。S1120,判断乘累加使能信号是否有效,若是,转到S1130,若否,继续回到S1120。S1130,触发第四计数器加1。S1140,判断第四计数器的计数值是否超过滤波器矩阵的宽度,若否,转到S1150,若是,转到S1160。S1150,将滤波器权重值读地址加1,继续回到S1120。S1160,控制第四计数器复位,并将滤波器权重值读地址复位,继续回到S1120。
场景六,滤波器矩阵的深度大于1。
该控制单元210还包括:第四计数器、第三处理单元、第五计数器与第四处理单元;该第四计数器用于,在乘累加使能信号有效的情况下触发计数,还用于在接收到该第三处理单元发出的复位信号时进行计数值复位;该第三处理单元用于,判断该第四计数器的计数值是否超过滤波器矩阵的宽度,若否,将该滤波器权重值读地址加1,若是,向该第四计数器发送复位信号,并向该第五计数器发送触发计数信号;该第五计数器用于,在接收到该触发计数信号时触发计数,还用于在接收到该第四处理单元发出的复位信号时进行计数值复位;该第四处理单元用于,判断该第五计数器的值是否超过滤波器矩阵的深度,若否,将第三读基地址增加一个步长,并将该滤波器权重值读地址赋值为该第三读基地址,若是,向该第五计数器发送复位信号,并将该滤波器权重值读地址以及该第三读基地址复位。应理解,在每次将滤波器权重值读地址加1后,再回到判断乘累加使能信号是否有效的步骤。
具体地,第三读基地址的步长方向在滤波器矩阵的深度方向上。
具体地,图12示出控制单元生成输入特征值读地址的方法流程图。该方法包括:启动深度卷积神经网络的某一隐藏层的卷积运算。S1210,控制第四计数器与第五计数器清零,并将滤波器权重值读地址与第三读基地址复位。S1220,判断乘累加使能信号是否有效,若是,转到S1230,若否,继续回到S1220。S1230,触发第四计数器加1。S1240,判断第四计数器的计数值是否超过滤波器矩阵的宽度,若否,转到S1250,若是,转到S1260。S1250,将滤波器权重值读地址加1,继续回到S1220。S1260,控制第四计数器复位,并触发第五计数器开始计数。S1270,判断第五计数器的计数值是否超过滤波器矩阵的深度,若否,转到S1280,若是,转到S1290。S1280,将第三读基地址增加一个步长,并将滤波器权重值读地址赋值为该第三读基地址。S1290,将第五计数器复位,并将滤波器权重值读地址与第三读基地址复位,继续回到S1220。
可选地,在上述结合图7至图10的描述的某些实施例中,在滤波器矩阵的深度大于1的情况下,该控制单元还包括:第六计数器,该第六计数器用于,在接收到该触发计数信号时触发计数,还用于在接收到复位信号时进行计数值复位;该第一处理单元在判断该第一计数器的计数值超过该滤波器矩阵的宽度的情况下,具体用于,向该第一计数器发送复位信号,向该第六计数器发送触发计数信号;该第一处理单元还用于,判断第六计数器的值是否超过滤波器矩阵的深度,若否,将输入特征值读地址赋值为该第一读基地址,若是,向该第六计数器发送复位信号,并向该第二计数器发送触发计数信号。应理解,在每次将输入特征值读地址加1后,再回到判断乘累加使能信号是否有效的步骤。
其中,该预设值根据输入特征矩阵的宽度、滤波器矩阵的宽度以及用于缓存该输入特征值的寄存器的存储深度确定。场景四中涉及的预设值与场景三涉及的预设值含义相同,详见在场景三中解释。
具体地,第一读基地址的步长方向在输入特征矩阵的深度方向上,第二读基地址的步长方向在输入特征矩阵的宽度方向上。
具体地,图13示出控制单元生成输入特征值读地址的方法的另一流程图。该方法包括:启动深度卷积神经网络的某一隐藏层的卷积运算。S1301,控制第一计数器、第二计数器、第三计数器与第六计数器清零,将输入特征值读地址、第一读基地址与第二读基地址复位。S1302,判断乘累加使能信号是否有效,若是,转到S1303,若否,继续回到S1302。S1303,触发第一计数器加1(即开始计数)。S1304,判断第一计数器的计数值是否超过滤波器矩阵的宽度,若否,转到S1305,若是,转到S1306。S1305,将输入特征值读地址加1,继续回到S1302。S1306,控制第一计数器复位,并触发第六计数器开始计数。S1307,判断第六计数器的计数值是否超过滤波器矩阵的深度,若否,转到S1308,若是,转到S1309。S1308,将输入特征值读地址复位为第一读基地址,继续回到S1302。S1309,控制第六计数器复位,触发第二计数器计数。S1310,判断第二计数器的计数值是否超过输入特征矩阵的深度,若否,转到S1311,若是,转到S1312。S1311,将第一读基地址增加一个步长,将第二读基地址赋值为第一读基地址之后,将第二读基地址增加第三计数器的计数值个步长,将输入特征值读地址赋值为第二读基地址,继续回到S1302。S1312,控制第二计数器复位,触发第三计数器计数,将第一读基地址复位,将第二读基地址赋值为第一读基地址之后,将第二读基地址增加第三计数器的技术值个步长。S1313,判断第二读基地址的值是否超过预设值,若否,转到S1314,若是,转到S1315。S1314,将输入特征值读地址赋值为该第二读基地址,继续回到S1302。S1315,将输入特征值读地址、第二读基地址与第三计数器复位,继续回到S1302。
可选地,在某些实施例中,在该第二处理单元判断该第二计数器的计数值未超过输入特征矩阵的深度的情况下,“将第一读基地址增加一个步长,将该第二读基地址赋值为该第一读基地址之后,将该第二读基地址增加该第三计数器的计数值个步长,将输入特征值读地址赋值为第二读基地址”的操作还可以通过如下方式实现:将第二读基地址上增加一个缓存输入特征值的寄存器的存储宽度的步长,将输入特征值读地址赋值为第二读基地址。
例如,假设一个寄存器存储如表1所示的输入特征值:
表1
1-11 | 1-12 | 1-13 | 1-14 | 1-15 |
2-11 | 2-12 | 2-13 | 2-14 | 2-15 |
在表1的示例中,该寄存器的存储深度为2,存储宽度为5。
上文已述,第一读基地址的步长方向在输入特征矩阵的深度方向上,换句话说,第一读基地址所增加的一个步长相当于一个缓存输入特征值的寄存器的存储宽度的步长。
可选地,在一些实施例中,该滤波器寄存器中缓存有多个滤波器矩阵的滤波器权重值,在这种场景下,该控制单元还包括第七计数器,该第七计数器用于在接收到触发计数信号时开始计数,在接收到复位信号时进行计数值复位;
该第四处理单元在判断该第五计数器的值超过滤波器矩阵的深度的情况下,具体用于,向该第五计数器发送复位信号,并向第七计数器发送触发计数信号,并判断该第七计数器的值是否超过该多个滤波器矩阵的总个数,若否,将该滤波器权重值读地址赋值为第四读基地址,该第四读基地址为该多个滤波器矩阵中下一个滤波器矩阵的滤波器权重值在该滤波器寄存器中的起始缓存地址,若是,向该第七计数器发送复位信号,并将该滤波器权重值读地址、该第三读基地址与该第四读基地址复位。应理解,在每次将输入特征值读地址加1后,再回到判断乘累加使能信号是否有效的步骤。
需要说明的是,针对多个滤波器矩阵中的每一个滤波器矩阵,都可以按照上面实施例描述的方法生成对应的滤波器权重值读地址。
具体地,图14示出控制单元生成输入特征值读地址的方法流程图。该方法包括:启动深度卷积神经网络的某一隐藏层的卷积运算。S1401,控制第四计数器、第五计数器与第七计数器清零,并将滤波器权重值读地址与第三读基地址复位。S1402,判断乘累加使能信号是否有效,若是,转到S1403,若否,继续回到S1402。S1403,触发第四计数器加1。S1404,判断第四计数器的计数值是否超过滤波器矩阵的宽度,若否,转到S1405,若是,转到S1406。S1405,将滤波器权重值读地址加1,继续回到S1402。S1406,控制第四计数器复位,并触发第五计数器开始计数。S1407,判断第五计数器的计数值是否超过滤波器矩阵的深度,若否,转到S1408,若是,转到S1409。S1408,将第三读基地址增加一个步长,并将滤波器权重值读地址赋值为该第三读基地址。S1409,将第五计数器复位,触发第七计数器计数。S1409,判断第七计数器的值是否超过滤波器矩阵的总个数,若否,转到S1411,若是,站到S1412。S1411,将滤波器权重值读地址赋值为第四读基地址,该第四读基地址表示多个滤波器矩阵中还未进行滤波器权重值读地址生成的一个滤波器矩阵的权重值的起始缓存地址。S1412,控制第七计数器复位,将第三读基地址、第四读基地址、滤波器权重值读地址复位,继续回到S1402。
本例提供的运算装置,可以并行执行多个滤波器矩阵的卷积运算。
需要说明的是,上文某些实施例中涉及的第一处理单元、第二处理单元、第二处理单元、第三处理单元或第四处理单元仅为描述方便进行的区分,并不用来限制本申请的保护范围。例如,第一处理单元与第二处理单元可以是控制单元中两个互相独立的处理单元。或者,第一处理单元与第二处理单元指的是控制单元中同一个处理单元。
可选地,在上述某些实施例中,该运算装置200所处理的输入特征值为输入特征图像中的部分或全部输入特征值。
具体地,片上网络单元通过XBUS向运算装置200输入的输入特征值为一个完整输入特征图对应的输入特征矩阵中的部分或全部输入特征值。
为了更好地理解本申请提供的方案,下面结合图14描述一个具体的深度卷积神经网络卷积层的计算过程。
如图15所示,输入特征图对应的输入特征矩阵为N个H×W的二维矩阵,滤波器为两组N个Kh×Kw的二维滤波器矩阵,输入特征矩阵和两组滤波器矩阵相乘输出两个R×C的二维输出特征值矩阵。
在使用本申请提供的运算装置200进行卷积运算之前,先进行切割操作。
切割操作包括:配置工具将输入特征矩阵在H方向切成两份,在N方向切成四份,即输入特征矩阵被分为八块,分别表示为(E,A)、(E,B)、(E,C)、(E,D)、(F,A)、(F,B)、(F,C)和(F,D)。
同时,配置工具将滤波器矩阵在N方向分为四块,分别表示为A、B、C和D四块。
然后,使用本申请提供的运算装置200进行卷积运算。
首先,将输入特征矩阵的(E,A)块与两组滤波器矩阵的A块送入运算装置的计算单元222构成的阵列(下文简称为计算单元阵列),得到第一个部分和矩阵。
然后,将输入特征值矩阵的(E,B)块、两组滤波器矩阵的B块和上次产生的第一个部分和矩阵送入计算单元阵列,得到第二个部分和矩阵。
之后,将输入特征矩阵的(E,C)和(E,D)块、两组滤波器矩阵的C、D块和每次产生的部分和矩阵依次送入计算单元阵列,产生输出特征矩阵的E0和E1两块数据。
同理,将输入特征矩阵的(F,A)、(F,B)、(F,C)、(F,D)四块数据和两组滤波器矩阵的A、B、C和D四块数据依次送入计算单元阵列,便可产生输出特征矩阵的F0和F1两块数据。
如图16所示,本发明实施例还提供了一种芯片1600,该芯片1600包括通信接口1610与运算装置1620,运算装置1620对应于上述实施例提供的运算装置200,通信接口1610用于获取待该运算装置1620处理的数据,还用于输出该运算装置1620的运算结果。
如图17所示,本发明实施例还提供了一种用于处理神经网络的设备1700,该设备1700包括:中央控制单元1710、接口缓存单元1720、片上网络单元1730、存储单元1740、运算装置1750,该运算装置1750对应于上述实施例提供的运算装置200。
该中央控制单元1710用于,读取卷积神经网络的配置信息,并根据该配置信息将对应的控制信号分发给该接口缓存单元1720、该片上网络单元1730、该运算装置、该存储单元1740。
该接口缓存单元1720用于,根据中央控制单元1710的控制信号将输入特征矩阵信息和滤波器权重信息通过列总线输入到该片上网络单元1730中。
该片上网络单元1730用于,根据该中央控制单元1710的控制信号,将从该列总线上接收的输入特征矩阵信息和滤波器权重信息映射到X BUS上,并通过该行总线,将该输入特征矩阵信息和滤波器权重信息输入到该运算装置中。
该存储单元1740用于,接收并缓存该运算装置输出的输出结果,如果该运算装置输出的输出结果为中间结果,该存储单元1740还用于将该中间结果输入到该运算装置1750中。
具体地,中央控制单元1710用于,读取深度卷积神经网络的配置信息,并将其分发给其他模块。
该配置信息包括如下信息中的至少一种:每层网络的输入特征矩阵、输出特征矩阵、滤波器矩阵的大小以及上述数据在DRAM中的地址,卷积操作的stride和padding值、网络层的类型、以及每层网络在运算装置1750上的映射方式等。
上述数据在DRAM中的地址信息包括:输入特征值的目的地接口编号、滤波器权重值的目的地接口编号。
可选地,中央控制单元1710还负责接收上级模块(例如SOC)发出的启动和复位等控制信息,并将其转换为其他模块对应的控制信号分别送给各个模块。同时,该模块还负责上报各个模块的状态信息以及错误和处理结束的中断信号给上级模块。
接口缓存单元1720用于,从DRAM中读取输入特征矩阵和滤波器权重值;然后,根据配置信息,将输入特征矩阵和滤波器的权重值通过不同的Y BUS送给片上网络单元1730。
可选地,接口缓存单元1720还负责接收存储单元1740输出的卷积计算结果,并将其封装为特定格式的数据写回DRAM。
片上网络单元1730用于,根据配置信息将N条Y BUS上传输的数据转发给M条XBUS。通过X BUS,将输入特征矩阵和滤波器权重值送给运算装置1750。
具体地,每条X/Y BUS上传输的信息包括输入特征值、输入特征值的目的地接口编号、输入特征值的有效标识、滤波器权重值、滤波器权重值的目的地接口编号,滤波器权重值的有效标识等。
运算装置1750用于,执行输入特征值和滤波器权重值的卷积运算。
具体地,运算装置1750计算的中间结果和最终结果都会送给存储单元1740。
存储单元1740用于,缓存运算装置1750的中间结果,并根据控制信息将中间结果再次送给运算装置1750进行累加。
可选地,存储单元1740还负责将运算装置1750得到的最终计算结果转发给接口缓存单元1720。
应理解,在处理卷积神经网络的某些层时,存储单元1740仅负责转发运算装置1750的最终计算结果。
本申请适用于深度卷积神经网络(convolution neural network,CNN),也可以应用在包含池化层的其他类型的神经网络中。
上文描述了本申请的装置实施例,下文将描述本申请的方法实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的内容可以参见前面装置实施例,为了简洁,这里不再赘述。
如图18所示,本发明实施例还提供一种用于神经网络的方法。该方法可以应用于上文装置实施例描述的运算装置。该运算装置包括控制单元与乘累加单元组,该乘累加单元组包括滤波器寄存器与多个计算单元,该滤波器寄存器与该多个计算单元连接。该方法包括:
S1810,通过该控制单元生成控制信息,并向该计算单元发送该控制信息;
S1820,通过该滤波器寄存器,缓存待进行乘累加运算的滤波器权重值;
S1830,通过该计算单元,缓存待进行乘累加运算的输入特征值,并根据接收的该控制信息对该滤波器权重值与该输入特征值进行乘累加运算。
可选地,在一些实施例中,该控制信息包括乘累加使能信号;该通过该计算单元根据接收的该控制信息对该滤波器权重值与该输入特征值进行乘累加运算,包括:当乘累加使能信号有效时,通过该计算单元对该滤波器权重值与该输入特征值进行乘累加运算。
可选地,在一些实施例中,该控制信息中还包括输入特征值读地址;该通过该计算单元根据接收的该控制信息对该滤波器权重值与该输入特征值进行乘累加运算,包括:通过该计算单元,根据该输入特征值读地址从该输入特征值中获取目标特征值,对该目标特征值与该滤波器权重值进行乘累加运算。
可选地,在一些实施例中,该控制信息中还包括滤波器权重值读地址;该通过该计算单元根据接收的该控制信息对该滤波器权重值与该输入特征值进行乘累加运算,包括:通过该计算单元,根据该滤波器权重值读地址,从该滤波器权重值中获取目标权重值,对该目标权重值与该输入特征值进行乘累加运算。
可选地,在一些实施例中,该控制单元包括:第一计数器与第一处理单元,该第一计数器计数在接收到触发计数信号时开始计数,在接收到复位信号时进行复位;该通过该控制单元生成该输入特征读地址,包括:在乘累加使能信号有效的情况下,通过该第一处理单元触发该第一计数器计数;通过该第一处理单元判断该第一计数器的计数值是否超过滤波器矩阵的宽度,若否,将该输入特征值读地址加1,若是,向该第一计数器发送复位信号,并将该输入特征值读地址复位。
可选地,在一些实施例中,该控制单元还包括:第二计数器与第二处理单元,该第二计数器计数在接收到触发计数信号时开始计数,在接收到复位信号时进行复位;在该通过该第一处理单元判断该第一计数器的计数值超过该滤波器矩阵的宽度的情况下,该方法具体包括:通过该第一处理单元向该第一计数器发送复位信号,并向该第二计数器发送触发计数信号;通过该第二处理单元判断该第二计数器的计数值是否超过输入特征矩阵的深度,若否,将第一读基地址增加一个步长,并将该输入特征值读地址赋值为该第一读基地址,若是,向该第二计数器发送复位信号,并将该输入特征值读地址与该第一读基地址复位。
可选地,在一些实施例中,该控制单元还包括:第六计数器,该第六计数器在接收到该触发计数信号时触发计数,在接收到复位信号时进行计数值复位;
在该通过该第一处理单元判断该第一计数器的计数值超过该滤波器矩阵的宽度的情况下,该方法具体包括:
通过该第一处理单元,向该第一计数器发送复位信号,向该第六计数器发送触发计数信号;
还通过该第一处理单元判断第六计数器的值是否超过滤波器矩阵的深度,若否,将输入特征值读地址赋值为该第一读基地址,若是,向该第六计数器发送复位信号,并向该第二计数器发送触发计数信号。
可选地,在一些实施例中,在该通过该第一处理单元判断该第一计数器的值超过该滤波器矩阵的宽度的情况下,该方法具体包括:通过该第一处理单元向该第一计数器发送复位信号,将第二读基地址增加一个步长,并判断该第二读基地址的值是否超过预设值,若否,将该输入特征值读地址赋值为该第二读基地址,若是,将该输入特征值读地址与该第二读基地址复位;其中,该预设值根据该滤波器矩阵的宽度、该输入特征矩阵的以及用于缓存该输入特征值的寄存器宽度确定。
可选地,在一些实施例中,该控制单元还包括:第三处理单元,该第三计数器在接收到该触发计数信号时触发计数,在接收到复位信号时进行计数值复位;
在该通过该第二处理单元判断该第二计数器的计数值超过输出特征矩阵深度的情况下,该方法具体包括:通过该第二处理单元向该第二计数器发送复位信号,向该第三计数器发送触发计数信号,将该第一读基地址复位,并将第二读基地址赋值为该第一读基地址之后,将该第二读基地址增加第三计数器的计数值个步长,并判断该第二读基地址的值是否超过预设值,若否,将该输入特征值读地址赋值为该第二读基地址,若是,将该输入特征值读地址、该第二读基地址与该第三计数器复位;
在该通过该第二处理单元判断该第二计数器的计数值未超过输出特征矩阵深度的情况下,该方法具体包括:通过该第二处理单元将该第一读基地址增加一个步长,将该第二读基地址赋值为该第一读基地址之后,将该第二读基地址增加该第三计数器的计数值个步长,将输入特征值读地址赋值为第二读基地址;
其中,该预设值根据滤波器矩阵的宽度、该输入特征矩阵的宽度以及该计算单元中用于缓存该输入特征值的寄存器的存储深度确定。
可选地,在一些实施例中,该控制单元包括:第四计数器与第三处理单元,该第四计数器在接收到触发计数信号时开始计数,在接收到复位信号时进行计数值复位;该通过控制单元生成该滤波器权重值读地址,包括:在乘累加使能信号有效时,通过该第三处理单元向该第四计数器发送该触发计数信号;通过该第三处理单元判断该第四计数器的计数值是否超过滤波器矩阵的宽度,若否,将该滤波器权重值读地址加1,若是,向该第四计数器发送复位信号,并将该滤波器权重值读地址复位。
可选地,在一些实施例中,该控制单元还包括:第五计数器与第四处理单元,该第五计数器在接收到触发计数信号时开始计数,在接收到复位信号时进行计数值复位;在通过该第三处理单元判断该第四计数器的计数值超过该滤波器矩阵的宽度的情况下,该方法具体包括:通过该第三处理单元向该第四计数器发送复位信号,并向该第五计数器发送触发计数信号;通过该第四处理单元判断该第五计数器的值是否超过滤波器矩阵的深度,若否,将第一读基地址增加一个步长,并将该滤波器权重值读地址赋值为该第一读基地址,若是,向该第五计数器发送复位信号,并将该滤波器权重值读地址以及该第一读基地址复位。
可选地,在一些实施例中,该滤波器寄存器中缓存有多个滤波器矩阵的滤波器权重值,在这种场景下,该控制单元还包括第七计数器,该第七计数器用于在接收到触发计数信号时开始计数,在接收到复位信号时进行计数值复位;
通过该第四处理单元在判断该第五计数器的值超过滤波器矩阵的深度的情况下,该方法具体包括,通过该第四处理单元向该第五计数器发送复位信号,并向第七计数器发送触发计数信号,并判断该第七计数器的值是否超过该多个滤波器矩阵的总个数,若否,将该滤波器权重值读地址赋值为第四读基地址,该第四读基地址为该多个滤波器矩阵中下一个滤波器矩阵的滤波器权重值在该滤波器寄存器中的起始缓存地址,若是,向该第七计数器发送复位信号,并将该滤波器权重值读地址、该第三读基地址与该第四读基地址复位。应理解,在每次将输入特征值读地址加1后,再回到判断乘累加使能信号是否有效的步骤。
需要说明的是,针对多个滤波器矩阵中的每一个滤波器矩阵,都可以按照上面实施例描述的方法生成对应的滤波器权重值读地址,具体描述,请参见上文,为了简洁,这里不再赘述。
可选地,在一些实施例中,该多个计算单元中的至少两个与同一个行总线连接;该通过该计算单元,缓存待进行乘累加运算的输入特征值,包括:通过与同一个行总线连接的计算单元,从该行总线接收并缓存目的地接口地址与该计算单元的接口地址相匹配的输入特征值。
可选地,在一些实施例中,连接同一个滤波器寄存器的计算单元的接口地址不同。
可选地,在一些实施例中,连接同一行总线的计算单元的接口地址不同。
可选地,在一些实施例中,该滤波器寄存器与行总线连接;该通过该滤波器寄存器,缓存待进行乘累加运算的滤波器权重值,包括:通过该滤波器寄存器,从该行总线缓存目的地接口地址与该滤波器寄存器的接口地址相匹配的滤波器权重值。
可选地,在一些实施例中,该运算装置包括多个该乘累加单元组,该多个乘累加单元组中的计算单元以及滤波器寄存器与同一个行总线连接。
可选地,在一些实施例中,该多个乘累加单元组中不同乘累加单元组之间的计算单元的接口地址相同;或该多个乘累加单元组中不同乘累加单元组之间的计算单元的接口地址不同。
可选地,在一些实施例中,该多个乘累加单元组中不同乘累加单元组之间的滤波器寄存器的接口地址相同;或该多个乘累加单元组中不同乘累加单元组之间的滤波器寄存器的接口地址不同。
可选地,在一些实施例中,该运算装置包括多个该乘累加单元组,其中,该多个乘累加单元组中的第一乘累加单元组的计算单元与另外一个乘累加单元组的计算单元按照预设顺序连接,或者,该第一乘累加单元组的计算单元分别与另外两个乘累加单元组中的计算单元按照预设顺序连接,该顺序连接用于将按照该预设顺序连接的计算单元的乘累加运算结果进行累加。
可选地,在一些实施例中,该方法还包括:通过该多个该乘累加单元组中的第一计算单元,将该第一计算单元的乘累加运算结果发送至与之连接的一个计算单元。
可选地,在一些实施例中,该方法还包括:通过该多个该乘累加单元组中的第二计算单元,接收与之连接的一个计算单元发送的乘累加运算结果,并将该第二计算单元最初的乘累加运算结果与该接收的乘累加运算结果进行累加,得到该第二计算单元最终的乘累加运算结果。
可选地,在一些实施例中,该多个乘累加单元组中的至少一个乘累加单元组中的计算单元与存储单元连接,该方法还包括:通过该与该存储单元连接的计算单元,将乘累加运算结果发送至该存储单元。
可选地,在一些实施例中,该多个乘累加单元组中的至少一个乘累加单元组中的计算单元与存储单元连接,该方法还包括:通过该与该存储单元连接的计算单元,接收该存储单元发送的数据,并将本地最初的乘累加运算结果与该接收的数据进行累加,得到本地最终的乘累加运算结果。
可选地,在一些实施例中,不同乘累加单元组连接不同的行总线。
可选地,在一些实施例中,不同乘累加单元组中的部分计算单元的接口地址相同。
可选地,在一些实施例中,该多个乘累加单元组中的计算单元组成计算单元阵列,该计算单元阵列中的同一行对应至少两个乘累加单元组。
可选地,在一些实施例中,该运算装置所处理的输入特征值为输入特征图像中的部分或全部输入特征值。
可选地,在一些实施例中,该运算装置所处理的输入特征值包括多个输入特征图像中每个输入特征图像中的部分或全部输入特征值。
本发明实施例还提供一种用于神经网络的方法,该方法应用于运算装置,该运算装置包括控制单元与多个乘累加单元组,每个乘累加单元组包括计算单元以及与该计算单元连接的滤波器寄存器,该方法包括:通过该控制单元,生成控制信息,并向该计算单元发送该控制信息;通过每个滤波器寄存器,缓存待进行乘累加运算的滤波器权重值;通过每个计算单元,缓存待进行乘累加运算的输入特征值,并根据该控制单元发送的该控制信息,对该输入特征值与所连接的滤波器寄存器中缓存的滤波器权重值进行乘累加运算;其中,该多个乘累加单元组中的第一乘累加单元组的计算单元与另外一个乘累加单元组的计算单元按照预设顺序连接,或者,该第一乘累加单元组的计算单元分别与另外两个乘累加单元组中的计算单元按照预设顺序连接,该顺序连接用于将按照该预设顺序连接的计算单元的乘累加运算结果进行累加。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时可以实现上述方法实施例提供的方法。这里的计算机可以为上述装置实施例提供的运算装置。
本申请实施例还提供一种包括指令的计算机程序产品,该指令被计算机执行时可以实现上述方法实施例提供的方法。
还应理解,本文中涉及的第一、第二、第三或第四以及各种数字编号仅为描述方便进行的区分,并不用来限制本申请的保护范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (64)
1.一种用于神经网络的运算装置,其特征在于,包括:控制单元与乘累加单元组,所述乘累加单元组包括滤波器寄存器与多个计算单元,所述滤波器寄存器与所述多个计算单元连接;
所述控制单元用于,生成控制信息,并向所述计算单元发送所述控制信息;
所述滤波器寄存器用于,缓存待进行乘累加运算的滤波器权重值;
所述计算单元用于,缓存待进行乘累加运算的输入特征值,根据接收的所述控制信息对所述滤波器权重值与所述输入特征值进行乘累加运算。
2.根据权利要求1所述的运算装置,其特征在于,所述控制信息包括乘累加使能信号;
所述计算单元根据接收的所述控制信息对所述滤波器权重值与所述输入特征值进行乘累加运算,具体包括:
所述计算单元用于,当乘累加使能信号有效时,对所述滤波器权重值与所述输入特征值进行乘累加运算。
3.根据权利要求1或2所述的运算装置,其特征在于,所述控制信息中还包括输入特征值读地址;
所述计算单元根据接收的所述控制信息对所述滤波器权重值与所述输入特征值进行乘累加运算,具体包括:
所述计算单元用于,根据所述输入特征值读地址,从所述输入特征值中获取目标特征值,对所述目标特征值与所述滤波器权重值进行乘累加运算。
4.根据权利要求1至3中任一项所述的运算装置,其特征在于,所述控制信息中还包括滤波器权重值读地址;
所述计算单元根据接收的所述控制信息对所述滤波器权重值与所述输入特征值进行乘累加运算,具体包括:
所述计算单元用于,根据所述滤波器权重值读地址,从所述滤波器权重值中获取目标权重值,对所述目标权重值与所述输入特征值进行乘累加运算。
5.根据权利要求3所述的运算装置,其特征在于,所述控制单元包括:第一计数器与第一处理单元;
所述第一计数器用于,在乘累加使能信号有效的情况下触发计数,还用于在接收到所述第一处理单元发出的复位信号时进行计数值复位;
所述第一处理单元用于,判断所述第一计数器的计数值是否超过滤波器矩阵的宽度,若否,将所述输入特征值读地址加1,若是,向所述第一计数器发送复位信号,并将所述输入特征值读地址复位。
6.根据权利要求5所述的运算装置,其特征在于,所述控制单元还包括:第二计数器与第二处理单元;
所述第一处理单元在判断所述第一计数器的计数值超过所述滤波器矩阵的宽度的情况下,具体用于,向所述第一计数器发送复位信号,并向所述第二计数器发送触发计数信号;
所述第二计数器用于,在接收到所述触发计数信号时触发计数,还用于在接收到所述第二处理单元发出的复位信号时进行计数值复位;
所述第二处理单元用于,判断所述第二计数器的计数值是否超过输入特征矩阵的深度,若否,将第一读基地址增加一个步长,并将所述输入特征值读地址赋值为所述第一读基地址,若是,向所述第二计数器发送复位信号,并将所述输入特征值读地址与所述第一读基地址复位。
7.根据权利要求5所述的运算装置,其特征在于,所述第一处理单元在判断所述第一计数器的值超过所述滤波器矩阵的宽度的情况下,具体用于,向所述第一计数器发送复位信号,将第二读基地址增加一个步长,并判断所述第二读基地址的值是否超过预设值,若否,将所述输入特征值读地址赋值为所述第二读基地址,若是,将所述输入特征值读地址与所述第二读基地址复位;
其中,所述预设值根据所述滤波器矩阵的宽度、所述输入特征矩阵的以及用于缓存所述输入特征值的寄存器宽度确定。
8.根据权利要求6所述的运算装置,其特征在于,所述控制单元还包括:第三处理单元,所述第三计数器用于,在接收到所述触发计数信号时触发计数,还用于在接收到复位信号时进行计数值复位;
所述第二处理单元在判断所述第二计数器的计数值超过输入特征矩阵的深度的情况下,具体用于,向所述第二计数器发送复位信号,向所述第三计数器发送触发计数信号,将所述第一读基地址复位,并将第二读基地址赋值为所述第一读基地址之后,将所述第二读基地址增加第三计数器的计数值个步长,并判断所述第二读基地址的值是否超过预设值,若否,将所述输入特征值读地址赋值为所述第二读基地址,若是,将所述输入特征值读地址、所述第二读基地址与所述第三计数器复位;
所述第二处理单元在判断所述第二计数器的计数值未超过输入特征矩阵的深度的情况下,具体用于,将所述第一读基地址增加一个步长,将所述第二读基地址赋值为所述第一读基地址之后,将所述第二读基地址增加所述第三计数器的计数值个步长,将输入特征值读地址赋值为第二读基地址;
其中,所述预设值根据滤波器矩阵的宽度、所述输入特征矩阵的宽度以及所述计算单元中用于缓存所述输入特征值的寄存器的存储深度确定。
9.根据权利要求6或8所述的运算装置,其特征在于,所述控制单元还包括:第六计数器;
所述第一处理单元在判断所述第一计数器的计数值超过所述滤波器矩阵的宽度的情况下,具体用于,向所述第一计数器发送复位信号,向所述第六计数器发送触发计数信号;
所述第六计数器用于,在接收到所述触发计数信号时触发计数,还用于在接收到复位信号时进行计数值复位;
所述第一处理单元还用于,判断第六计数器的值是否超过滤波器矩阵的深度,若否,将输入特征值读地址赋值为所述第一读基地址,若是,向所述第六计数器发送复位信号,并向所述第二计数器发送触发计数信号。
10.根据权利要求4所述的运算装置,其特征在于,所述控制单元包括:第四计数器与第三处理单元;
所述第四计数器用于,在乘累加使能信号有效的情况下触发计数,还用于在接收到所述第三处理单元发出的复位信号时进行计数值复位;
所述第三处理单元用于,判断所述第四计数器的计数值是否超过滤波器矩阵的宽度,若否,将所述滤波器权重值读地址加1,若是,向所述第四计数器发送复位信号,并将所述滤波器权重值读地址复位。
11.根据权利要求10所述的运算装置,其特征在于,所述控制单元还包括:第五计数器与第四处理单元;
所述第三处理单元在判断所述第四计数器的计数值超过所述滤波器矩阵的宽度的情况下,具体用于,向所述第四计数器发送复位信号,并向所述第五计数器发送触发计数信号;
所述第五计数器用于,在接收到所述触发计数信号时触发计数,还用于在接收到所述第四处理单元发出的复位信号时进行计数值复位;
所述第四处理单元用于,判断所述第五计数器的值是否超过滤波器矩阵的深度,若否,将第三读基地址增加一个步长,并将所述滤波器权重值读地址赋值为所述第三读基地址,若是,向所述第五计数器发送复位信号,并将所述滤波器权重值读地址以及所述第三读基地址复位。
12.根据权利要求11所述的运算装置,其特征在于,所述滤波器寄存器中缓存有多个滤波器矩阵的滤波器权重值;
所述控制单元还包括第七计数器,所述第七计数器用于在接收到触发计数信号时开始计数,在接收到复位信号时进行计数值复位;
所述第四处理单元在判断所述第五计数器的值超过滤波器矩阵的深度的情况下,具体用于,向所述第五计数器发送复位信号,并向第七计数器发送触发计数信号,并判断所述第七计数器的值是否超过所述多个滤波器矩阵的总个数,若否,将所述滤波器权重值读地址赋值为第四读基地址,所述第四读基地址为所述多个滤波器矩阵中下一个滤波器矩阵的滤波器权重值在所述滤波器寄存器中的起始缓存地址,若是,向所述第七计数器发送复位信号,并将所述滤波器权重值读地址、所述第三读基地址与所述第四读基地址复位。
13.根据权利要求1至12中任一项所述的运算装置,其特征在于,所述多个计算单元中的至少两个与同一个行总线连接,与同一个行总线连接的计算单元具体用于,从所述行总线接收并缓存目的地接口地址与所述计算单元的接口地址相匹配的输入特征值。
14.根据权利要求13所述的运算装置,其特征在于,连接同一个滤波器寄存器的计算单元的接口地址不同。
15.根据权利要求13所述的运算装置,其特征在于,连接同一行总线的计算单元的接口地址不同。
16.根据权利要求1至15中任一项所述的运算装置,其特征在于,所述滤波器寄存器与行总线连接,所述滤波器寄存器具体用于,从所述行总线缓存目的地接口地址与所述滤波器寄存器的接口地址相匹配的滤波器权重值。
17.根据权利要求1至16中任一项所述的运算装置,其特征在于,所述运算装置包括多个所述乘累加单元组,所述多个乘累加单元组中的计算单元以及滤波器寄存器与同一个行总线连接。
18.根据权利要求17所述的运算装置,其特征在于,所述多个乘累加单元组中不同乘累加单元组之间的计算单元的接口地址相同;或
所述多个乘累加单元组中不同乘累加单元组之间的计算单元的接口地址不同。
19.根据权利要求17所述的运算装置,其特征在于,所述多个乘累加单元组中不同乘累加单元组之间的滤波器寄存器的接口地址相同;或
所述多个乘累加单元组中不同乘累加单元组之间的滤波器寄存器的接口地址不同。
20.根据权利要求1至16中任一项所述的运算装置,其特征在于,所述运算装置包括多个所述乘累加单元组,其中,所述多个乘累加单元组中的第一乘累加单元组的计算单元与另外一个乘累加单元组的计算单元按照预设顺序连接,或者,所述第一乘累加单元组的计算单元分别与另外两个乘累加单元组中的计算单元按照预设顺序连接,所述顺序连接用于将按照所述预设顺序连接的计算单元的乘累加运算结果进行累加。
21.根据权利要求20所述的运算装置,其特征在于,所述多个所述乘累加单元组中的第一计算单元用于,将所述第一计算单元的乘累加运算结果发送至与之连接的一个计算单元。
22.根据权利要求20所述的运算装置,其特征在于,所述多个所述乘累加单元组中的第二计算单元用于,接收与之连接的一个计算单元发送的乘累加运算结果,并将所述第二计算单元最初的乘累加运算结果与所述接收的乘累加运算结果进行累加,得到所述第二计算单元最终的乘累加运算结果。
23.根据权利要求20所述的运算装置,其特征在于,所述多个乘累加单元组中的至少一个乘累加单元组中的计算单元与存储单元连接,所述与所述存储单元连接的计算单元还用于,将乘累加运算结果发送至所述存储单元。
24.根据权利要求20所述的运算装置,其特征在于,所述多个乘累加单元组中的至少一个乘累加单元组中的计算单元与存储单元连接,所述与所述存储单元连接的计算单元还用于,接收所述存储单元发送的数据,并将本地最初的乘累加运算结果与所述接收的数据进行累加,得到本地最终的乘累加运算结果。
25.根据权利要求20至24中任一项所述的运算装置,其特征在于,不同乘累加单元组连接不同的行总线。
26.根据权利要求25所述的运算装置,其特征在于,不同乘累加单元组中的部分计算单元的接口地址相同。
27.根据权利要求17至26中任一项所述的运算装置,其特征在于,所述多个乘累加单元组中的计算单元组成计算单元阵列,所述计算单元阵列中的同一行对应至少两个乘累加单元组。
28.根据权利要求1至27中任一项所述的运算装置,其特征在于,所述运算装置所处理的输入特征值为输入特征图像中的部分输入特征值。
29.根据权利要求1至27中任一项所述的运算装置,其特征在于,所述运算装置所处理的输入特征值包括多个输入特征图像中每个输入特征图像中的部分输入特征值。
30.一种用于神经网络的运算装置,其特征在于,包括:控制单元与多个乘累加单元组,每个乘累加单元组包括计算单元以及与所述计算单元连接的滤波器寄存器;
所述控制单元用于,生成控制信息,并向所述计算单元发送所述控制信息;
每个滤波器寄存器用于,缓存待进行乘累加运算的滤波器权重值;
每个计算单元用于,缓存待进行乘累加运算的输入特征值,并根据所述控制单元发送的所述控制信息,对所述输入特征值与所连接的滤波器寄存器中缓存的滤波器权重值进行乘累加运算;
其中,所述多个乘累加单元组中的第一乘累加单元组的计算单元与另外一个乘累加单元组的计算单元按照预设顺序连接,或者,所述第一乘累加单元组的计算单元分别与另外两个乘累加单元组中的计算单元按照预设顺序连接,所述顺序连接用于将按照所述预设顺序连接的计算单元的乘累加运算结果进行累加。
31.一种用于神经网络的芯片,其特征在于,包括如权利要求1至28中任一项所述的运算装置或如权利要求29所述的运算装置,还包括通信接口,所述通信接口用于获取待所述运算装置处理的输入数据,还用于输出所述运算装置的运算结果。
32.一种用于处理神经网络的设备,其特征在于,包括:中央控制单元、接口缓存单元、片上网络单元、存储单元、如权利要求1至29中任一项所述的运算装置或如权利要求30所述的运算装置;
所述中央控制单元用于,读取卷积神经网络的配置信息,并根据所述配置信息将对应的控制信号分发给所述接口缓存单元、所述片上网络单元、所述运算装置、所述存储单元;
所述接口缓存单元用于,根据中央控制单元的控制信号将输入特征矩阵信息和滤波器权重信息通过列总线输入到所述片上网络单元中,还用于根据所述控制信号读取并缓存滤波器权重矩阵的信息和输入特征矩阵的信息;
所述片上网络单元用于,根据所述中央控制单元的控制信号,将从所述列总线上接收的输入特征矩阵信息和滤波器权重信息映射到行总线上,并通过所述行总线,将所述输入特征矩阵信息和滤波器权重信息输入到所述运算装置中;
所述存储单元用于,接收并缓存所述运算装置输出的输出结果,如果所述运算装置输出的输出结果为中间结果,所述存储单元还用于将所述中间结果输入到所述运算装置中。
33.一种可移动设备,其特征在于,包括如权利要求32所述的用于处理神经网络的设备。
34.一种用于神经网络的方法,其特征在于,所述方法应用于运算装置,所述运算装置包括控制单元与乘累加单元组,所述乘累加单元组包括滤波器寄存器与多个计算单元,所述滤波器寄存器与所述多个计算单元连接,所述方法包括:
通过所述控制单元生成控制信息,并向所述计算单元发送所述控制信息;
通过所述滤波器寄存器,缓存待进行乘累加运算的滤波器权重值;
通过所述计算单元,缓存待进行乘累加运算的输入特征值,并根据接收的所述控制信息对所述滤波器权重值与所述输入特征值进行乘累加运算。
35.根据权利要求34所述的方法,其特征在于,所述控制信息包括乘累加使能信号;
所述通过所述计算单元根据接收的所述控制信息对所述滤波器权重值与所述输入特征值进行乘累加运算,包括:
当乘累加使能信号有效时,通过所述计算单元对所述滤波器权重值与所述输入特征值进行乘累加运算。
36.根据权利要求34或35所述的方法,其特征在于,所述控制信息中还包括输入特征值读地址;
所述通过所述计算单元根据接收的所述控制信息对所述滤波器权重值与所述输入特征值进行乘累加运算,包括:
通过所述计算单元,根据所述输入特征值读地址从所述输入特征值中获取目标特征值,对所述目标特征值与所述滤波器权重值进行乘累加运算。
37.根据权利要求34至36中任一项所述的方法,其特征在于,所述控制信息中还包括滤波器权重值读地址;
所述通过所述计算单元根据接收的所述控制信息对所述滤波器权重值与所述输入特征值进行乘累加运算,包括:
通过所述计算单元,根据所述滤波器权重值读地址,从所述滤波器权重值中获取目标权重值,对所述目标权重值与所述输入特征值进行乘累加运算。
38.根据权利要求36所述的方法,其特征在于,所述控制单元包括:第一计数器与第一处理单元,所述第一计数器计数在接收到触发计数信号时开始计数,在接收到复位信号时进行复位;
所述通过所述控制单元生成所述输入特征读地址,包括:
在乘累加使能信号有效的情况下,通过所述第一处理单元触发所述第一计数器计数;
通过所述第一处理单元判断所述第一计数器的计数值是否超过滤波器矩阵的宽度,若否,将所述输入特征值读地址加1,若是,向所述第一计数器发送复位信号,并将所述输入特征值读地址复位。
39.根据权利要求38所述的方法,其特征在于,所述控制单元还包括:第二计数器与第二处理单元,所述第二计数器计数在接收到触发计数信号时开始计数,在接收到复位信号时进行复位;
在所述通过所述第一处理单元判断所述第一计数器的计数值超过所述滤波器矩阵的宽度的情况下,所述方法具体包括:
通过所述第一处理单元向所述第一计数器发送复位信号,并向所述第二计数器发送触发计数信号;
通过所述第二处理单元判断所述第二计数器的计数值是否超过输入特征矩阵的深度,若否,将第一读基地址增加一个步长,并将所述输入特征值读地址赋值为所述第一读基地址,若是,向所述第二计数器发送复位信号,并将所述输入特征值读地址与所述第一读基地址复位。
40.根据权利要求38所述的方法,其特征在于,在所述通过所述第一处理单元判断所述第一计数器的值超过所述滤波器矩阵的宽度的情况下,所述方法具体包括:
通过所述第一处理单元向所述第一计数器发送复位信号,将第二读基地址增加一个步长,并判断所述第二读基地址的值是否超过预设值,若否,将所述输入特征值读地址赋值为所述第二读基地址,若是,将所述输入特征值读地址与所述第二读基地址复位;
其中,所述预设值根据所述滤波器矩阵的宽度、所述输入特征矩阵的以及用于缓存所述输入特征值的寄存器宽度确定。
41.根据权利要求39所述的方法,其特征在于,所述控制单元还包括:第三处理单元,所述第三计数器在接收到所述触发计数信号时触发计数,在接收到复位信号时进行计数值复位;
在所述通过所述第二处理单元判断所述第二计数器的计数值超过输出特征矩阵深度的情况下,所述方法具体包括:通过所述第二处理单元向所述第二计数器发送复位信号,向所述第三计数器发送触发计数信号,将所述第一读基地址复位,并将第二读基地址赋值为所述第一读基地址之后,将所述第二读基地址增加第三计数器的计数值个步长,并判断所述第二读基地址的值是否超过预设值,若否,将所述输入特征值读地址赋值为所述第二读基地址,若是,将所述输入特征值读地址、所述第二读基地址与所述第三计数器复位;
在所述通过所述第二处理单元判断所述第二计数器的计数值未超过输出特征矩阵深度的情况下,所述方法具体包括:通过所述第二处理单元将所述第一读基地址增加一个步长,将所述第二读基地址赋值为所述第一读基地址之后,将所述第二读基地址增加所述第三计数器的计数值个步长,将输入特征值读地址赋值为第二读基地址;
其中,所述预设值根据滤波器矩阵的宽度、所述输入特征矩阵的宽度以及所述计算单元中用于缓存所述输入特征值的寄存器的存储深度确定。
42.根据权利要求39或41所述的方法,其特征在于,所述控制单元还包括:第六计数器,所述第六计数器在接收到所述触发计数信号时触发计数,在接收到复位信号时进行计数值复位;
在所述通过所述第一处理单元判断所述第一计数器的计数值超过所述滤波器矩阵的宽度的情况下,所述方法具体包括:
通过所述第一处理单元,向所述第一计数器发送复位信号,向所述第六计数器发送触发计数信号;
还通过所述第一处理单元判断第六计数器的值是否超过滤波器矩阵的深度,若否,将输入特征值读地址赋值为所述第一读基地址,若是,向所述第六计数器发送复位信号,并向所述第二计数器发送触发计数信号。
43.根据权利要求37所述的方法,其特征在于,所述控制单元包括:第四计数器与第三处理单元,所述第四计数器在接收到触发计数信号时开始计数,在接收到复位信号时进行计数值复位;
所述通过控制单元生成所述滤波器权重值读地址,包括:
在乘累加使能信号有效时,通过所述第三处理单元向所述第四计数器发送所述触发计数信号;
通过所述第三处理单元判断所述第四计数器的计数值是否超过滤波器矩阵的宽度,若否,将所述滤波器权重值读地址加1,若是,向所述第四计数器发送复位信号,并将所述滤波器权重值读地址复位。
44.根据权利要求43所述的方法,其特征在于,所述控制单元还包括:第五计数器与第四处理单元,所述第五计数器在接收到触发计数信号时开始计数,在接收到复位信号时进行计数值复位;
在通过所述第三处理单元判断所述第四计数器的计数值超过所述滤波器矩阵的宽度的情况下,所述方法具体包括:
通过所述第三处理单元向所述第四计数器发送复位信号,并向所述第五计数器发送触发计数信号;
通过所述第四处理单元判断所述第五计数器的值是否超过滤波器矩阵的深度,若否,将第一读基地址增加一个步长,并将所述滤波器权重值读地址赋值为所述第一读基地址,若是,向所述第五计数器发送复位信号,并将所述滤波器权重值读地址以及所述第一读基地址复位。
45.根据权利要求44所述的方法,其特征在于,所述滤波器寄存器中缓存有多个滤波器矩阵的滤波器权重值;所述控制单元还包括第七计数器,所述第七计数器在接收到触发计数信号时开始计数,在接收到复位信号时进行计数值复位;
在所述第五计数器的值超过滤波器矩阵的深度的情况下,所述方法具体包括:通过所述第四处理单元向所述第五计数器发送复位信号,并向第七计数器发送触发计数信号,并判断所述第七计数器的值是否超过所述多个滤波器矩阵的总个数,若否,将所述滤波器权重值读地址赋值为第四读基地址,所述第四读基地址为所述多个滤波器矩阵中下一个滤波器矩阵的滤波器权重值在所述滤波器寄存器中的起始缓存地址,若是,向所述第七计数器发送复位信号,并将所述滤波器权重值读地址、所述第三读基地址与所述第四读基地址复位。
46.根据权利要求34至45中任一项所述的方法,其特征在于,所述多个计算单元中的至少两个与同一个行总线连接;
所述通过所述计算单元,缓存待进行乘累加运算的输入特征值,包括:
通过与同一个行总线连接的计算单元,从所述行总线接收并缓存目的地接口地址与所述计算单元的接口地址相匹配的输入特征值。
47.根据权利要求46所述的方法,其特征在于,连接同一个滤波器寄存器的计算单元的接口地址不同。
48.根据权利要求46所述的方法,其特征在于,连接同一行总线的计算单元的接口地址不同。
49.根据权利要求34至48中任一项所述的方法,其特征在于,所述滤波器寄存器与行总线连接;
所述通过所述滤波器寄存器,缓存待进行乘累加运算的滤波器权重值,包括:
通过所述滤波器寄存器,从所述行总线缓存目的地接口地址与所述滤波器寄存器的接口地址相匹配的滤波器权重值。
50.根据权利要求34至49中任一项所述的方法,其特征在于,所述运算装置包括多个所述乘累加单元组,所述多个乘累加单元组中的计算单元以及滤波器寄存器与同一个行总线连接。
51.根据权利要求50所述的方法,其特征在于,所述多个乘累加单元组中不同乘累加单元组之间的计算单元的接口地址相同;或
所述多个乘累加单元组中不同乘累加单元组之间的计算单元的接口地址不同。
52.根据权利要求50所述的方法,其特征在于,所述多个乘累加单元组中不同乘累加单元组之间的滤波器寄存器的接口地址相同;或
所述多个乘累加单元组中不同乘累加单元组之间的滤波器寄存器的接口地址不同。
53.根据权利要求34至49中任一项所述的方法,其特征在于,所述运算装置包括多个所述乘累加单元组,其中,所述多个乘累加单元组中的第一乘累加单元组的计算单元与另外一个乘累加单元组的计算单元按照预设顺序连接,或者,所述第一乘累加单元组的计算单元分别与另外两个乘累加单元组中的计算单元按照预设顺序连接,所述顺序连接用于将按照所述预设顺序连接的计算单元的乘累加运算结果进行累加。
54.根据权利要求53所述的方法,其特征在于,所述方法还包括:
通过所述多个所述乘累加单元组中的第一计算单元,将所述第一计算单元的乘累加运算结果发送至与之连接的一个计算单元。
55.根据权利要求53所述的方法,其特征在于,所述方法还包括:
通过所述多个所述乘累加单元组中的第二计算单元,接收与之连接的一个计算单元发送的乘累加运算结果,并将所述第二计算单元最初的乘累加运算结果与所述接收的乘累加运算结果进行累加,得到所述第二计算单元最终的乘累加运算结果。
56.根据权利要求53所述的方法,其特征在于,所述多个乘累加单元组中的至少一个乘累加单元组中的计算单元与存储单元连接,所述方法还包括:
通过所述与所述存储单元连接的计算单元,将乘累加运算结果发送至所述存储单元。
57.根据权利要求53所述的方法,其特征在于,所述多个乘累加单元组中的至少一个乘累加单元组中的计算单元与存储单元连接,所述方法还包括:
通过所述与所述存储单元连接的计算单元,接收所述存储单元发送的数据,并将本地最初的乘累加运算结果与所述接收的数据进行累加,得到本地最终的乘累加运算结果。
58.根据权利要求53至57中任一项所述的方法,其特征在于,不同乘累加单元组连接不同的行总线。
59.根据权利要求58所述的方法,其特征在于,不同乘累加单元组中的部分计算单元的接口地址相同。
60.根据权利要求50至59中任一项所述的方法,其特征在于,所述多个乘累加单元组中的计算单元组成计算单元阵列,所述计算单元阵列中的同一行对应至少两个乘累加单元组。
61.根据权利要求34至60中任一项所述的方法,其特征在于,所述运算装置所处理的输入特征值为输入特征图像中的部分输入特征值。
62.根据权利要求34至60中任一项所述的方法,其特征在于,所述运算装置所处理的输入特征值包括多个输入特征图像中每个输入特征图像中的部分输入特征值。
63.一种用于神经网络的方法,其特征在于,所述方法应用于运算装置,所述运算装置包括控制单元与多个乘累加单元组,每个乘累加单元组包括计算单元以及与所述计算单元连接的滤波器寄存器,所述方法包括:
通过所述控制单元,生成控制信息,并向所述计算单元发送所述控制信息;
通过每个滤波器寄存器,缓存待进行乘累加运算的滤波器权重值;
通过每个计算单元,缓存待进行乘累加运算的输入特征值,并根据所述控制单元发送的所述控制信息,对所述输入特征值与所连接的滤波器寄存器中缓存的滤波器权重值进行乘累加运算;
其中,所述多个乘累加单元组中的第一乘累加单元组的计算单元与另外一个乘累加单元组的计算单元按照预设顺序连接,或者,所述第一乘累加单元组的计算单元分别与另外两个乘累加单元组中的计算单元按照预设顺序连接,所述顺序连接用于将按照所述预设顺序连接的计算单元的乘累加运算结果进行累加。
64.一种计算机存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被计算机执行时,使得所述计算机执行如权利要求34至62中任一项所述的方法,或者,使得所述计算机执行如权利要求63所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/114079 WO2019104695A1 (zh) | 2017-11-30 | 2017-11-30 | 用于神经网络的运算装置、芯片、设备及相关方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108701015A true CN108701015A (zh) | 2018-10-23 |
Family
ID=63844162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780013391.2A Pending CN108701015A (zh) | 2017-11-30 | 2017-11-30 | 用于神经网络的运算装置、芯片、设备及相关方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20200285446A1 (zh) |
CN (1) | CN108701015A (zh) |
WO (1) | WO2019104695A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109685208A (zh) * | 2018-12-24 | 2019-04-26 | 合肥君正科技有限公司 | 一种用于神经网络处理器数据稀梳化加速的方法及装置 |
CN109948787A (zh) * | 2019-02-26 | 2019-06-28 | 山东师范大学 | 用于神经网络卷积层的运算装置、芯片及方法 |
CN110704040A (zh) * | 2019-09-30 | 2020-01-17 | 上海寒武纪信息科技有限公司 | 信息处理方法、装置、计算机设备及可读存储介质 |
CN110785779A (zh) * | 2018-11-28 | 2020-02-11 | 深圳市大疆创新科技有限公司 | 神经网络处理装置、控制方法以及计算*** |
WO2021057111A1 (zh) * | 2019-09-29 | 2021-04-01 | 北京希姆计算科技有限公司 | 计算装置及方法、芯片、电子设备、存储介质及程序 |
CN113361679A (zh) * | 2020-03-05 | 2021-09-07 | 华邦电子股份有限公司 | 存储器装置及其操作方法 |
CN113419702A (zh) * | 2021-06-21 | 2021-09-21 | 安谋科技(中国)有限公司 | 一种数据累加方法、处理器、电子设备及可读介质 |
CN113554685A (zh) * | 2021-08-02 | 2021-10-26 | 中国人民解放军海军航空大学航空作战勤务学院 | 遥感卫星运动目标检测方法、装置、电子设备及存储介质 |
CN114004731A (zh) * | 2021-09-30 | 2022-02-01 | 苏州浪潮智能科技有限公司 | 一种基于卷积神经网络的图像处理方法、装置及相关设备 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446096B (zh) * | 2018-03-21 | 2021-01-29 | 杭州中天微***有限公司 | 数据计算*** |
KR20210012335A (ko) * | 2019-07-24 | 2021-02-03 | 에스케이하이닉스 주식회사 | 반도체장치 |
KR20210093127A (ko) * | 2020-01-17 | 2021-07-27 | 에스케이하이닉스 주식회사 | Aim 장치 |
TWI727641B (zh) * | 2020-02-03 | 2021-05-11 | 華邦電子股份有限公司 | 記憶體裝置及其操作方法 |
US11657285B2 (en) * | 2020-07-30 | 2023-05-23 | Xfusion Digital Technologies Co., Ltd. | Methods, systems, and media for random semi-structured row-wise pruning in neural networks |
CN112396165B (zh) * | 2020-11-30 | 2024-06-11 | 珠海零边界集成电路有限公司 | 用于卷积神经网络的运算装置和方法 |
CN117290289B (zh) * | 2023-11-27 | 2024-01-26 | 深存科技(无锡)有限公司 | 基于通用型cpu的矩阵加速器架构 |
CN117389842B (zh) * | 2023-12-12 | 2024-03-19 | 北京紫光芯能科技有限公司 | 一种程序流程监控***及方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404582A (zh) * | 2010-09-01 | 2012-04-04 | 苹果公司 | 用于自动白平衡处理的灵活的颜色空间选择 |
US20150106315A1 (en) * | 2013-10-16 | 2015-04-16 | University Of Tennessee Research Foundation | Method and apparatus for providing random selection and long-term potentiation and depression in an artificial network |
CN106203617A (zh) * | 2016-06-27 | 2016-12-07 | 哈尔滨工业大学深圳研究生院 | 一种基于卷积神经网络的加速处理单元及阵列结构 |
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的*** |
US20170103305A1 (en) * | 2015-10-08 | 2017-04-13 | Via Alliance Semiconductor Co., Ltd. | Neural network unit that performs concurrent lstm cell calculations |
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106951395B (zh) * | 2017-02-13 | 2018-08-17 | 上海客鹭信息技术有限公司 | 面向压缩卷积神经网络的并行卷积运算方法及装置 |
-
2017
- 2017-11-30 WO PCT/CN2017/114079 patent/WO2019104695A1/zh active Application Filing
- 2017-11-30 CN CN201780013391.2A patent/CN108701015A/zh active Pending
-
2020
- 2020-05-27 US US16/884,609 patent/US20200285446A1/en not_active Abandoned
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404582A (zh) * | 2010-09-01 | 2012-04-04 | 苹果公司 | 用于自动白平衡处理的灵活的颜色空间选择 |
US20150106315A1 (en) * | 2013-10-16 | 2015-04-16 | University Of Tennessee Research Foundation | Method and apparatus for providing random selection and long-term potentiation and depression in an artificial network |
US20170103305A1 (en) * | 2015-10-08 | 2017-04-13 | Via Alliance Semiconductor Co., Ltd. | Neural network unit that performs concurrent lstm cell calculations |
CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
CN106203617A (zh) * | 2016-06-27 | 2016-12-07 | 哈尔滨工业大学深圳研究生院 | 一种基于卷积神经网络的加速处理单元及阵列结构 |
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的*** |
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
Non-Patent Citations (1)
Title |
---|
李浩洋等: "一种支持多种工作模式的可重构计算单元的设计", 《微电子学与计算机》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110785779A (zh) * | 2018-11-28 | 2020-02-11 | 深圳市大疆创新科技有限公司 | 神经网络处理装置、控制方法以及计算*** |
WO2020107265A1 (zh) * | 2018-11-28 | 2020-06-04 | 深圳市大疆创新科技有限公司 | 神经网络处理装置、控制方法以及计算*** |
CN109685208B (zh) * | 2018-12-24 | 2023-03-24 | 合肥君正科技有限公司 | 一种用于神经网络处理器数据稀梳化加速的方法及装置 |
CN109685208A (zh) * | 2018-12-24 | 2019-04-26 | 合肥君正科技有限公司 | 一种用于神经网络处理器数据稀梳化加速的方法及装置 |
CN109948787A (zh) * | 2019-02-26 | 2019-06-28 | 山东师范大学 | 用于神经网络卷积层的运算装置、芯片及方法 |
WO2021057111A1 (zh) * | 2019-09-29 | 2021-04-01 | 北京希姆计算科技有限公司 | 计算装置及方法、芯片、电子设备、存储介质及程序 |
CN110704040A (zh) * | 2019-09-30 | 2020-01-17 | 上海寒武纪信息科技有限公司 | 信息处理方法、装置、计算机设备及可读存储介质 |
CN113361679A (zh) * | 2020-03-05 | 2021-09-07 | 华邦电子股份有限公司 | 存储器装置及其操作方法 |
CN113361679B (zh) * | 2020-03-05 | 2023-10-17 | 华邦电子股份有限公司 | 存储器装置及其操作方法 |
CN113419702A (zh) * | 2021-06-21 | 2021-09-21 | 安谋科技(中国)有限公司 | 一种数据累加方法、处理器、电子设备及可读介质 |
CN113554685A (zh) * | 2021-08-02 | 2021-10-26 | 中国人民解放军海军航空大学航空作战勤务学院 | 遥感卫星运动目标检测方法、装置、电子设备及存储介质 |
CN114004731A (zh) * | 2021-09-30 | 2022-02-01 | 苏州浪潮智能科技有限公司 | 一种基于卷积神经网络的图像处理方法、装置及相关设备 |
CN114004731B (zh) * | 2021-09-30 | 2023-11-07 | 苏州浪潮智能科技有限公司 | 一种基于卷积神经网络的图像处理方法、装置及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
US20200285446A1 (en) | 2020-09-10 |
WO2019104695A1 (zh) | 2019-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108701015A (zh) | 用于神经网络的运算装置、芯片、设备及相关方法 | |
US20220261615A1 (en) | Neural network devices and methods of operating the same | |
AU2017338783B2 (en) | Efficient data layouts for convolutional neural networks | |
CN108304923A (zh) | 卷积运算处理方法及相关产品 | |
CN107895191A (zh) | 一种信息处理方法及相关产品 | |
JP6960700B2 (ja) | マルチキャストネットワークオンチップに基づいた畳み込みニューラルネットワークハードウェアアクセラレータおよびその動作方式 | |
CN105892989B (zh) | 一种神经网络加速器及其运算方法 | |
CN107704267A (zh) | 一种卷积神经网络运算指令及其方法 | |
CN109101273A (zh) | 神经网络处理装置及其执行向量最大值指令的方法 | |
CN110494867B (zh) | 用于操作机器学习的电子装置和用于操作机器学习的方法 | |
CN108416436A (zh) | 使用多核心处理模块进行神经网络划分的方法及其*** | |
CA3124369A1 (en) | Neural network processor | |
CN110263909A (zh) | 图像识别方法及装置 | |
US20210042501A1 (en) | Method and device for processing point cloud data, electronic device and storage medium | |
CN109726822B (zh) | 运算方法、装置及相关产品 | |
CN110147252A (zh) | 一种卷积神经网络的并行计算方法及装置 | |
CN110414672B (zh) | 卷积运算方法、装置及*** | |
Gu et al. | Scalar2Vec: Translating scalar fields to vector fields via deep learning | |
CN112017159B (zh) | 一种遥感场景下的地面目标真实感仿真方法 | |
US11868875B1 (en) | Data selection circuit | |
CN111125627A (zh) | 用于池化多维矩阵的方法及相关产品 | |
WO2022143916A1 (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN110880032B (zh) | 使用自适应3d阵列的卷积神经网络 | |
US20230297386A1 (en) | Computing apparatus, integrated circuit chip, board card, electronic device, and computing method | |
CN113791754A (zh) | 运算电路、芯片和板卡 |
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 | ||
AD01 | Patent right deemed abandoned | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20230106 |