CN111222090A - 卷积计算模块、神经网络处理器、芯片和电子设备 - Google Patents
卷积计算模块、神经网络处理器、芯片和电子设备 Download PDFInfo
- Publication number
- CN111222090A CN111222090A CN201911400306.5A CN201911400306A CN111222090A CN 111222090 A CN111222090 A CN 111222090A CN 201911400306 A CN201911400306 A CN 201911400306A CN 111222090 A CN111222090 A CN 111222090A
- Authority
- CN
- China
- Prior art keywords
- selector
- accumulator
- data
- stage
- convolution
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
Abstract
本申请实施例提供一种卷积计算模块、神经网络处理器、芯片和电子设备,卷积计算模块包括累加器和选择器,同一级累加器的两个累加器和下一级累加器的一个累加器连接到一个选择器的输入端,所述选择器的输出端用于输出一种或多种累加运算的结果,所述累加器包括至少5级,每一级累加器至少包括一个累加器,所述选择器包括至少一级,每一级选择器至少包括一个选择器。本申请实施例可以提高卷积计算模块计算数据的效率。
Description
技术领域
本申请涉及处理器技术领域,特别涉及一种卷积计算模块、神经网络处理器、芯片和电子设备。
背景技术
人工神经网络(artificial neural networks,ANN)从信息处理角度对神经元网络进行抽象,建立某种简单模型,按照不同的连接方式组成不同的网络。这些研究通常被称为深度学习(deep learning)、计算机学习(computer learning)等类似术语。
相关技术中,神经网络处理器根据指令进行计算,比如乘累加、池化等。
发明内容
本申请实施例提供一种卷积计算模块、神经网络处理器、芯片和电子设备,可以提高神经网络处理器中卷积计算模块计算输入数据的效率。
本申请实施例公开一种卷积计算模块,包括:
包括:
N级累加器,N为大于1的整数,每一级累加器包括至少一个累加器;和
M级选择器,M为大于或等于1的整数,每一级选择器包括至少一个选择器,每一选择器包括三个输入端,每一输入端连接一个累加器;
其中一个输入端连接第N级累加器的一个累加器,其中两个输入端连接第N-1级累加器的两个累加器。
本申请实施例还公开一种卷积计算模块,包括累加器和选择器,同一级累加器的两个累加器和下一级累加器的一个累加器连接到一个选择器的输入端,所述选择器的输出端用于输出一种或多种累加运算的结果,所述累加器包括至少5级,每一级累加器至少包括一个累加器,所述选择器包括至少一级,每一级选择器至少包括一个选择器
本申请实施例还公开一种神经网络处理器,包括如上所述的卷积计算模块。
本申请实施例还公开一种芯片,包括如上所述的神经网络处理器。
本申请实施例还公开一种电子设备,包括如上所述的神经网络处理器。
本申请实施例中,卷积计算模块的同一级累加器的两个累加器的结果可以直接通过选择器输出,也可以通过下一级的一个累加器累加之后通过选择器输出。因此,本申请实施例通过选择器对不同累加器的选择可以选择出不同的输出结果,使得卷积计算模块的一个乘累加单元可以同时计算多个输入数据以输出相应的结果。相比一个乘累加单元一次仅计算一个输入数据以输出一个输出结果,可以提高卷积计算模块的计算效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1本申请实施例提供的卷积计算模块的输入数据示意图。
图2本申请实施例提供的卷积计算模块的权重数据示意图。
图3本申请实施例提供的卷积计算模块的卷积运算示意图。
图4本申请实施例提供的卷积计算模块的另一卷积运算示意图。
图5为本申请实施例提供的卷积计算模块中累加部分的结构示意图。
图6为图5所示卷积计算模块的第一种输出模式。
图7为图5所示卷积计算模块的第二种输出模式。
图8为图5所示卷积计算模块的第三种输出模式。
图9为图5所示卷积计算模块的第四种输出模式。
图10为图5所示卷积计算模块的第五种输出模式。
图11为本申请实施例提供的神经网络处理器的结构示意图。
图12为本申请实施例提供的芯片的结构示意图。
图13为本申请实施例提供的电子设备的结构示意图。
具体实施方式
本申请实施例提供的技术方案诸如神经网络处理器可以应用于各种需要对输入图像进行图像处理以得到相应地输出图像的场景,本申请实施例对此并不限定。诸如,本申请实施例提供的技术方案可以应用于计算机视觉等领域的各种场景,比如:人脸识别、图像分类、目标检测及语义分割等。
神经网络处理器进行乘法运算可以应用于卷积神经网络运算、循环神经网络运算等中。下面以卷积神经网络运算为例,神经网络处理器从外部获取待处理数据(如图像数据),神经网络处理器内的卷积计算模块可以对待处理数据进行卷积处理。卷积神经网络中的卷积层的输入包括输入数据(如从外部获取的待处理数据)和权重数据,卷积层的主要计算流程是对输入数据和权重数据进行卷积运算得到输出数据。其中,进行卷积运算的主体为卷积计算模块,也可以理解为,神经网络处理器的卷积计算模块对输入数据和权重数据进行卷积运算得到输出数据。需要说明的是,权重数据在一些情况下可以理解为一个或多个卷积核。下面针对卷积运算进行详细说明。
请参阅图1和图2,图1本申请实施例提供的卷积计算模块的输入数据示意图,图2本申请实施例提供的卷积计算模块的权重数据示意图。输入数据的大小为H×W×C1,权重数据的大小为K×R×S×C2,其中,H为输入数据的高度,W为输入数据的宽度,C1为输入数据的深度,K为权重数据的输出数,即卷积核的个数,R为权重数据的高度,即卷积核的高度,S为权重数据的宽度,即卷积核的宽度,C2为权重数据的深度,即卷积核的深度,其中,权重数据的C2和输入数据的C1相等,因为C2和C1均为对应的深度数值并且相等,为了方便理解,下面的C2和C1都用C替代,也可以理解为C2=C1=C。输入数据大小还可以为N×H×W×C,N为输入数据的批数。
请参阅图3,图3本申请实施例提供的卷积计算模块的卷积运算示意图。卷积计算模块先对输入数据按卷积核的大小进行取窗,取窗后的窗体区域与权重数据中的一个卷积核进行乘累加运算得到一个数据,随后分别在W方向和H方向滑动窗体再进行乘累加运算得H’×W’个数据,最后遍历K个卷积核得到K×H’×W’个数据。具体的运算步骤可以如下(也可以理解为卷积计算模块进行卷积运算的具体步骤如下):
1、从起始点(W=0,H=0)对输入数据按卷积核的大小进行取窗,得到一个窗体区域;
2、从K个卷积核中选取一个未计算过的卷积核;
3、将取窗后的窗体区域与卷积核进行点乘,然后进行累加得到一个数据;
4、在W方向滑动窗体,得到新的窗体(窗体大小不变);
5、依次重复步骤3、4,直到W方向边界,这样得到W’个数据;
6、回到W方向起始点,在H方向按照一个步长滑动窗体,得到新的窗体(窗体大小不变);
7、重复步骤3-6,直到H方向边界,这样得到H’×W’个数据,其中,到达H方向边界后,仍然需要重复步骤3-5;
8、重复步骤2-7,遍历K个卷积核,进行计算得到K×H’×W’个数据。
卷积计算模块中用于卷积运算的乘累加阵列(MAC Array)的大小(L×M)是固定的,其中,L为进行乘累加运算的长度,M为并行进行乘累加运算的单元数,也可以理解为一个周期可以进行M个长度为L的乘累加运算。将上面卷积运算过程中的乘累加运算(如上面的步骤3-4)分配到卷积计算模块上进行并行计算的步骤如下(也可以理解为卷积计算模块利用乘累加阵列进行乘累加运算的具体步骤如下):
1、对输入数据在HW平面上按卷积核大小进行取窗,并在深度方向上将输入数据分割成C/L个长度为L的数据段;
2、沿W方向滑动窗体,并在深度方向上将输入数据均分割成C/L个长度为L的数据段,继续沿W方向滑动窗体M-2次后得到M组输入数据,每组有C/L个数据段;
3、在深度方向上将卷积核分割成C/L个长度为L的数据段,对权重数据中K个卷积核均进行该操作,得到K组权重数据,每组有C/L个数据段;
4、取M组输入数据的第i(i=1,2,…,C/L)个数据段,得到M个输入数据段;
5、取K组权重数据的第f(f=1,2,…,K)组数据中的第i(i=1,2,…,C/L)个数据段,得到一个权重数据段;
6、使用MAC阵列(L×M)对M个输入数据段(深度为L)和1个权重数据段(权重数据广播复用)进行乘累加运算,得到M个输出的部分结果;
7、递增i,并重复步骤4、5、6,输出的M个数据累加到之前计算的M个数据之上,至此得到M个完整的输出结果,其中,i从1递增到C/L。
需要说明的是,上述步骤中的顺序可以根据需要进行调整。例如,步骤2和3的顺序可以对调。又例如,步骤4和5的步骤可以对调。
本实施例中,通过将输入数据和权重数据进行划分,利用MAC阵列一次可以对M个窗体和一个卷积核的数据进行乘累加运算,充分利用MAC阵列可以快速完成卷积运算。需要说明的是,本实施例中,C大于L,K大于L,W大于M,当C/L、K/L、W/M中的一个或多个不整除时,需要对不整除的数取整并加1,具体的为获取其整数部分后再加1。
当然,卷积计算模块还可以采用其他方式的卷积运算方式。下面对另一种方式的卷积运算进行详细说明。请参阅图4,图4本申请实施例提供的卷积计算模块的另一卷积运算示意图。其中,输入数据大小仍然为H×W×C,权重数据(一个或多个卷积核)大小仍然为K×R×S×C。当然,输入数据大小还可以为N×H×W×C,N为数据输入的批数。
卷积计算模块先对输入数据按卷积核的大小进行取窗,取窗后的第一窗体区域与权重数据中的所有卷积核进行乘累加运算得到一个数据,随后分别在W方向和H方向滑动窗体再进行乘累加运算得H’×W’×K个数据。具体的运算步骤如下(也可以理解为卷积计算模块进行卷积运算的具体步骤如下):
1、从起始点(W=0,H=0)对输入数据按卷积核的大小(R×S)进行取窗,得到第一窗体区域(R×S×C);
2、将取窗后的第一窗体区域与K个卷积核分别进行乘累加得到K个数据;
3、在W方向按照一个第一滑动步长滑动取窗,得到新的第一窗体区域(第一窗体区域的大小不变),其中第一滑动步长可以根据需要设置;
4、依次重复步骤2、3,直到W方向边界,这样得到W’×K个数据,其中,W’=(W-S)/第一滑动步长+1。例如,若W=7,S=3,第一滑动步长=2,则W’=3。又例如,若W=7,S=3,第一滑动步长=1,则W’=5;
5、回到W方向起始点,在H方向按照一个第二滑动步长滑动窗体,其中H方向的第二滑动步长可以根据需要设置,得到新的第一窗体区域(第一窗体区域的大小不变),例如,在H方向按照一个第二滑动步长(H方向的第二滑动步长为1)滑动窗体后,坐标可以为(W=0,H=1)。
6、重复步骤2-5,直到H方向边界,这样得到H’×W’×K个数据。需要说的是,每次沿W方向滑动窗体都直到W方向边界,最后一次在H方向滑动取窗到达边界后,仍然在W方向滑动取窗直至W方向边界(即重复步骤2-4)。
卷积运算单元包括用于卷积运算的乘累加阵列(MAC Array),乘累加阵列的大小(L×M)是固定的,其中,L为进行乘累加运算的长度,M为并行进行乘累加运算的单元数,也可以理解为一个周期可以进行M个长度为L的乘累加运算。将上面卷积运算过程中的乘累加运算(即上面的步骤2)分配到卷积运算单元上进行并行运算的步骤如下(也可以理解为卷积计算模块利用乘累加阵列进行乘累加运算的具体步骤如下):
1、从起始点(W=0,H=0)对输入数据在HW平面上按卷积核大小(R×S)进行取窗,得到第一窗体区域,并在深度方向上将第一窗体区域分割成C/L个长度为L的数据段;需要说明的是,可以得到第一窗体区域后对第一窗体区域分割成C/L个长度为L的数据段,也可以先将输入数据分割成C/L个长度为L的数据段后,再得到第一窗体区域,第一窗体区域包括C/L个长度为L的数据段;可以理解为,第一窗体区域沿深度方向可以包括C/L层的第一深度数据;
2、在深度方向上将卷积核分割成C/L个长度为L的数据段,对权重数据中K个卷积核均进行该操作,得到K组权重数据,每组有C/L个权重数据段;可以理解为,每个卷积核沿深度方向包括C/L个长度为L的权重数据段;还可以将K个卷积核分割成K/M个卷积核组,每组卷积核组都包括M个卷积核的权重数据;
3、取输入数据的第一窗体区域的第i(i=1,2,…,C/L)层第一深度数据,得到1个第一深度数据;
4、取第f(f=1,2,…,K/M)组卷积核组的第i(i=1,2,…,C/L)层第二深度数据,得到M个第二深度数据;
5、使用MAC阵列对1个第一深度数据和M个第二深度数据(权重数据广播复用)进行乘累加运算,得到M个第一运算数据;M个权重数据段为M个卷积核的权重数据段;
6、递增i,并重复步骤3-5,输出的M个第一运算数据累加到之前计算的M个第一运算数据之上,至此得到M个目标运算数据;其中,i从1开始并递增到C/L;
7、递增f,并重复步骤3-6,完成K/M次计算后得到K个输出。其中,k从1开始并递增到K/M。
其中,输入数据的高度H、宽度W和深度C都是随机的,即,输入数据的大小可以有非常多的格式,如输入数据的宽度W是不确定,输入数据的宽度W除以乘累加阵列并行进行乘累加运算的单元数M,大多数情况下无法得到整数,这样在乘累加运算过程中,就会浪费部分乘累加运算单元。本实施例中,利用卷积核的个数K除以乘累加阵列并行进行乘累加运算的单元数M,卷积核的个数K一般都采用固定的数并且为2的n次方数(即2n),或者为有限的几个数中一个(如K为32、64、128、256中的一个),如此,设置乘累加运算单元时,可以将乘累加运算的单元数M设置为与K的数量相同或整倍数,如M为32、64、128等中的一个。本实施例可以充分利用乘累加运算单元,减少乘累加运算单元的浪费,提高了卷积运算的效率。本实施例中的进行乘累加运算的单元数M对应的卷积核的个数K,是一个维度方向的划分,若进行乘累加运算的单元数M对应的是滑动的窗体区域,对应的不仅包括宽度W维度还包括H维度,两个维度的对应不利于折叠。
此外,本实施例中的输出的目标运算数据的格式为H’×W’×K,其与输入数据的格式相同,不需要再对其进行形变,就可以直接作为下一运算层(如下一层卷积层或下一层池化层等)的输入数据。而且目标运算数据是深度方向连续的数据,在存储时可以存储连续的数据,后续再读取目标运算数据是也是连续的,硬件加载时,不需要多次计算地址,优化计算效率。
需要说明的是,本实施例中,C大于L,K大于M,当C/L、K/M中的一个或两个不整除时,需要对不整除的数取整并加1,具体的为获取其整数部分后再加1。示例性地,乘累加阵列(MAC Array)中L和M采用相同的数值,如均为64。对输入数据在深度方向上按64长度粒度进行补齐。沿深度方向分割成1×1×64的数据块,深度不足64时,补齐到64,数据组织方式为N×H×W×(c×C’),其中c=64,C’为C除c向上取整。对权重数据在深度方向上按64长度粒度进行补齐。权重数据沿深度方向分割成1×1×64的数据块,深度不足64时,补齐到64,卷积核个数大于64时,按64粒度分割成多组。调整后数据组织方式为R×S×(c×C’)×(k×K’),其中c=64,C’为C除c向上取整,k=64,K’为K除k向上取整。
本实施例在卷积运算过程中,卷积计算模块还可以用于将一个窗体区域对应的K个目标运算数据传输到下一层并用于进行运算;或者将N个第一窗体区域对应的N×K个目标运算数据传输到下一层并用于进行运算,其中,N小于输出数据的第一窗体区域的总数量。
因为对每一个第一窗体区域都进行了完整的运算,即每一个第一窗体区域(包括深度方向)的所有数据都与所有的卷积核(包括深度方向)都进行了乘累加运算,得到的目标运算数据是完整的,那可以将一个或多个第一窗体区域对应的目标运算数据先传输到下一层,而不需要等待所有的输入数据都运算完成再传输,当传输到下一层的部分目标运算数据可以作为下一层运算的最小单元时(如部分目标运算数据可以作为下一层输入数据的一个窗体区域包括的数据),下一层可以开始运算,不需要等待上一层的全部运算结果,提高了卷积运算的效率,缩短了卷积运算的时长。此外,因为卷积运算单元所在的NPU内部缓存一般很小,无法存放较大大的中间结果。若卷积运算完成的数据的格式是K×H’×W’的,这样需要计算完这一层的结果才能进行下一层的计算,并且其输出的数据较大需要缓存到外部内存(即NPU外的内存)。而本实施例卷积运算完成的结果是H’×W’×K格式的,则可以在H’×W’平面上计算出部分结果后就可以直接进行下一层的计算的输入数据,较小的NPU内部缓存只需存储1×W’×K或N1×W’×K或N1×N2×K,其中N1可以远小于H’,N2可以远小于W’,不需要再将输出结果缓存到外部内存,再从外部内存读取进行下一层的运算,这样可以很大程度上缓解了带宽压力,同时提高了运算效率。另外,在融合层(Fusion Layer)场景下可以很方便的进行流水作业。
其中,当待传输到下一层的目标运算数据与上一次传输的目标运算数据有重复数据时,去除重复数据得到目标数据;以及将目标数据传输到下一层。可以优化数据的传输和存储,当然也可以每次都将目标运算数据传输出去,将其覆盖重复的数据。
乘累加阵列(MAC Array)进行乘累加运算的长度L可以等于并行进行乘累加运算的单元数M,因为乘累加阵列的L和M相等,乘累加运算出来的结果的数据两个方向的值相等,可以方便的对运算出来的结果进行调整。当然,在其他一些实施例中,乘累加阵列的L和M可以不相等,以利于乘累加阵列的设置。
可以理解的,在一些实施例中,当卷积核的个数K等于或小于乘累加阵列的并行计算的单元数M时,卷积核的个数K不需要再进行划分。例如,本实施例中的乘累加阵列可以将并行计算的单元数M设置为较大的值,或者卷积核的个数较少。此时,卷积计算模块可以用于:
将输入数据在深度方向上划分为C/L层第一深度数据,以及将多个卷积核在深度方向上划分为C/L层第二深度数据;
将第i层第一深度数据与K个卷积核的第i层第二深度数据进行乘累加运算,得到K个第一中间数据;
递增i,得到新的K个第一中间数据,并累加之前得到的K个第一中间数据,并得到K个目标运算数据,直至i从1递增到C/L。
在另一些实施例中,当卷积核的深度C等于或小于乘累加阵列进行乘累加的长度L时,卷积核的深度C不需要再进行划分。例如,本实施例中的乘累加阵列可以将进行乘累加的长度L设置为较大的值,或者输入数据和卷积核的深度C较小。此时,卷积计算模块可以用于:
将多个卷积核划分为K/M个卷积核组;
将第i层第一深度数据与第f组中所有卷积核的第i层第二深度数据进行乘累加运算,得到M个第一中间数据;
递增i,得到新的M个第一中间数据,并累加之前得到的M个第一中间数据,并得到M个第二中间数据,其中,i从1递增到C;
递增f,得到新的M个第二中间数据,其中,f从1递增到K/M,得到K个目标运算数据。
在一些实施例中,可以对卷积计算模块的单层运算进行说明,具体的,卷积计算模块可以用于:
根据卷积核对输入数据进行一次取窗操作,得到第一窗体区域,第一窗体区域沿深度方向包括第一数量层的第一深度数据;
获取多个卷积核,多个卷积核沿深度方向包括第一数量层的第二深度数据;
将一层的第一深度数据与多个卷积核同一层的第二深度数据进行乘累加运算,得到第一运算数据。
卷积计算模块还可以对多层进行运算,具体的,卷积计算模块还用于将多层的第一深度数据对应的多个第一运算数据累加得到目标运算数据。即,基于上述实施例中单层运算的方式,将多层的第一深度数据与多个卷积核多层的第二深度数据进行乘累加运算,得到多个第一运算数据累加后得到目标运算数据。
需要说明的是,卷积运算过程中,还可以增加偏差数据,卷积层对输入数据和权重数据进行卷积运算,再将计算出的结果加上偏差数据即可得到输出结果。
卷积计算模块可以将其运算结果存储到数据存储模块,也可以将运算结果传输到向量处理单元或整形处理单元以进行进一步的计算操作。
需要说明的是,卷积计算模块的一个乘累加阵列可以对一个输入数据及一个权重数据进行运算,以得到一个输出的数据。
在一些实施例中,卷积计算模块在对输入数据及权重运算过程中,若输入数据的尺寸小于乘累加阵列的深度,会将输入数据补零到乘累加阵列的深度。诸如输入数据的深度为65,卷积计算模块的一个乘累加阵列的深度为256,则需要对卷积计算模块的一个乘累加阵列的深度补充191个零。从而大大浪费了卷积计算模块的一个乘累加阵列的算子,降低了卷积计算模块的运算效率。
本申请实施例的卷积计算模块的一个乘累加阵列可以一次可以计算多个输入数据。比如输入数据的深度为65,卷积计算模块的一个乘累加阵列的深度为256,本申请实施例将每一个输入数据的深度补1个零,从而本申请实施例卷积计算模块的一个乘累加阵列可以同时计算4个输入数据,以得到四个计算的结果。
本申请实施例卷积计算模块可包括多个乘法器、多个累加器和多个选择器,诸如本申请实施例卷积计算模块的一个乘累加阵列可包括多个乘法器、多个累加器和多个选择器。两个乘法器连接一个累加器,可以将结果输出到累加器。至少两个累加器连接一个选择器,可以通过选择器选择累加后的输出结果。需要说明的是,本申请实施例通过选择器可以选择不同的累加结果,以得到不同的输出。从而本申请实施例卷积计算模块在计算输入数据和权重时,可以在输入数据的深度方向折叠,即卷积计算模块的一组乘法器、累加器及选择器可以计算一个或多个输入数据,并由选择器输出相应输入数据的计算结果。从而相比一组乘法器和累加器的卷积计算模块,本申请实施例可以节省算子的浪费,提高神经网络处理器计算输入数据的效率。
请参阅图5,图5为本申请实施例提供的卷积计算模块中累加部分的结构示意图。卷积计算模块200中的多个累加器可分为多级,诸如卷积计算模块200包括L级累加器,每一级累加器包括至少一个累加器。卷积计算模块200中的多个选择器可以分为至少一级,诸如卷积计算模块200包括M级选择器,每一级选择器包括至少一个选择器。其中,L为大于1的整数,进一步的L为大于5整数,诸如L为6、7、8、9或10等。其中,M为大于或等于1的整数,诸如M为1、2、3、4、5等。在一些实施例中,M小于L。
其中,每一选择器包括三个输入端和一个输出端,每一输入端连接一个累加器。在一些实施例中,每一选择器的三个输入端分别连接同一级累加器的两个累加器和下一级累加器的一个累加器,或者说同一级累加器的两个累加器和下一级累加器的一个累加器连接到一个选择器的输入端。每一选择器的输出端可以输出一种或多种累加运算的结果。
诸如第M级选择器的一个选择器224的一个输入端连接第N级累加器的一个累加器215,第M级选择器的一个选择器224的另外两个输入端连接第N-1级累加器的两个累加器214。可以理解的是,第N-1级累加器的两个累加器214还连接到下一级的累加器,即第N-1级累加器的两个累加器214还连接到第N级累加器的一个累加器215。通过第M级选择器的一个选择器224可以选择第N-1级累加器的任一个累加器214作为输出,也可以选择第N-1级累加器的两个累加器214经过第N级累加器的一个累加器215进行累加处理后作为输出。
在一些实施例中,M小于L,L级累加器诸如包括10级累加器,即L为10,M级选择器诸如包括4级选择器,即M为4。需要说明的是,图5仅示出5级累加器和4级选择器。其中,第L级累加器可以包括一个累加器215,第L-1级累加器可以包括两个累加器214,第L-2级累加器可以包括四个累加器213,第L-3级累加器可以包括八个累加器212,第L-4级累加器可以包括十六个累加器211。上一级累加器的个数是下一级累加器的个数的两倍。第M级选择器包括一个选择器224,第M-1级选择器包括两个选择器225,第M-2级选择器包括四个选择器,第M-3级选择器包括八个选择器。
第M级选择器的选择器224的输出端可以输出一种或多种数据,该数据可以存储到一个触发器230中。即第M级选择器的选择器224的输出端可以与一个触发器230连接。第M级选择器的选择器224的输入端可以连接第L级累加器的累加器215,第M级选择器的选择器224的输入端还可以连接第M-1级选择器的两个选择器223的输出端。第M-1级选择器的两个选择器223的输出端还连接到第L级累加器的累加器215。
第M-1级选择器的其中一个选择器223的输入端可以连接第L-1级累加器的一个累加器214,第M-1级选择器的其中一个选择器223的输入端还可以连接第M-2级选择器的两个选择器222的输出端。其中,第M-2级选择器的每一个选择器222的输出端可以连接一个触发器230,该触发器230可以存储第M-2级选择器的每一个选择器222的输出端所输出的数据。
第M-2级选择器的其中一个选择器222的输入端可以连接第L-2级累加器的一个累加器213,第M-2级选择器的其中一个选择器223的输入端还可以连接第M-3级选择器的两个选择器221的输出端。其中,第M-3级选择器的每一个选择器221的输出端可以连接一个触发器230,该触发器230可以存储第M-3级选择器的每一个选择器221的输出端所输出的数据。
第M-3级选择器的其中一个选择器221的输入端可以连接第L-3级累加器的一个累加器212,第M-3级选择器的其中一个选择器221的输入端还可以连接第L-4级累加器的两个累加器211。其中,第L-4级累加器的每一个累加器211可以连接一个触发器230,该触发器230可以存储第L-4级累加器的每一个累加器211的数据。
由上可知,本申请实施例提供了对数据可折叠的实现方案,在本架构下,每一个乘累加阵列不再只提供一个输出,而是从乘累加阵列内后面几级的累加器抽头,而输入数据可以根据深度进行折叠,配置硬件模式匹配当前数据深度。诸如本申请实施例可以在多级累加器诸如第L级累加器到第L-4级累加器的位置抽头,并用选择器为所有抽头的累加器都提供一条bypass的通路,不参与下一级累加器的运算,在第L-4级累加器后,一共有16路输出,以此类推,到五级累加器之后,为一路输出。
本申请实施例可以提供多种诸如5中不同的输出模式,以一个乘累加阵列的深度为256为例,本方案中,输入数据可进行16、32、64及128多种深度的折叠。而若输入数据的深度为256,则可以直接完成所有数据的运算。以输入数据为32,本申请实施例将输入数据按照32进行折叠,配置为8输出模式,最终可以在每一个数据卷积运算完之后,输出8个计算结果。从而避免算子的浪费,提高卷积计算模块的运算效率。
请参阅图6,图6为图5所示卷积计算模块的第一种输出模式。第L-4级累加器的一个累加器211的输出结果直接经过第M-3级选择器的一个选择器221、第M-2级选择器的一个选择器222、第M-1级选择器的一个选择器223及第M级选择器的一个选择器224输出。若第L-4级累加器具有16个累加器211,则经过多级选择器可以输出16个运算结果。诸如输入数据的深度为16,一个乘累加阵列的深度为256,则可以对输入数据的深度进行折叠,一次可以输入16个输入数据,并可以得到16个输出结果。
请参阅图7,图7为图5所示卷积计算模块的第二种输出模式。第L-4级累加器的两个累加器211的输出结果由第L-3级累加器的一个累加器212进行加法运算后输出到第M-3级选择器的一个选择器221。通过第M-3级选择器的一个选择器221将数据输出到第L-2级累加器的一个累加器213。然后,再直接经过第M-2级选择器的一个选择器222、第M-1级选择器的一个选择器223及第M级选择器的一个选择器224输出。若第L-4级累加器具有16个累加器211,经过第L-3级累加器的8累加器运算之后输出8个数据。然后,经过多级选择器可以输出8个运算结果。诸如输入数据的深度为32,一个乘累加阵列的深度为256,则可以对输入数据的深度进行折叠,一次可以输入8个输入数据,并可以得到8个输出结果。
请参阅图8,图8为图5所示卷积计算模块的第三种输出模式。第L-4级累加器的两个累加器211的输出结果由第L-3级累加器的一个累加器212进行加法运算后输出到第M-3级选择器的一个选择器221。第M-3级选择器的两个选择器221将数据输出到第L-2级累加器的一个累加器213。然后,再直接经过第M-1级选择器的一个选择器223及第M级选择器的一个选择器224输出。若第L-4级累加器具有16个累加器211,经过第L-3级累加器的8累加器运算之后输出8个数据,再经过第L-2级累加器的4个累加器运算之后输出4个数据。然后,经过多级选择器可以输出4个运算结果。诸如输入数据的深度为64,一个乘累加阵列的深度为256,则可以对输入数据的深度进行折叠,一次可以输入4个输入数据,并可以得到4个输出结果。
请参阅图9,图9为图5所示卷积计算模块的第四种输出模式。第L-4级累加器的两个累加器211的输出结果由第L-3级累加器的一个累加器212进行加法运算后输出到第M-3级选择器的一个选择器221。第M-3级选择器的两个选择器221将数据输出到第L-2级累加器的一个累加器213。第L-2级累加器的一个累加器213将加法运算后的数据输出到第M-2级选择器的一个选择器222。第M-2级选择器的两个选择器222将数据输出到第L-1级累加器的一个累加器214。然后,数据再直接经过第M-1级选择器的一个选择器223及第M级选择器的一个选择器224输出。若第L-4级累加器具有16个累加器211,经过第L-3级累加器的8累加器运算之后输出8个数据,再经过第L-2级累加器的4个累加器运算之后输出4个数据,再经过第L-1级累加器的2个累加器运算之后输出2个数据。然后,经过多级选择器可以输出2个运算结果。诸如输入数据的深度为128,一个乘累加阵列的深度为256,则可以对输入数据的深度进行折叠,一次可以输入2个输入数据,并可以得到2个输出结果。
请参阅图10,图10为图5所示卷积计算模块的第五种输出模式。第L-4级累加器的两个累加器211的输出结果由第L-3级累加器的一个累加器212进行加法运算后输出到第M-3级选择器的一个选择器221。第M-3级选择器的两个选择器221将数据输出到第L-2级累加器的一个累加器213。第L-2级累加器的一个累加器213将加法运算后的数据输出到第M-2级选择器的一个选择器222,第M-2级选择器的两个选择器222将数据输出到第L-1级累加器的一个累加器214。第L-1级累加器的一个累加器214将加法运算后的数据输出到第M-1级选择器的一个选择器223,第M-1级选择器的两个选择器223将数据输出到第L级累加器的一个累加器215。第L级累加器的一个累加器215将加法运算后的数据输出到第M级选择器的一个选择器224,得到一个输出数据。若第L-4级累加器具有16个累加器211,经过第L-3级累加器的8累加器运算之后输出8个数据,再经过第L-2级累加器的4个累加器运算之后输出4个数据,再经过第L-1级累加器的2个累加器运算之后输出2个数据,再经过第L级累加器的1个累加器运算之后输出1个数据。诸如输入数据的深度为256,一个乘累加阵列的深度为256,一次可以输入1个输入数据,并可以得到1个输出结果。
其中,图6至图10所示卷积计算模块200中数据的输出路线可参阅图示的黑色虚线。
本申请实施例卷积计算模块200计算过程诸如:获取输入数据和权重,由卷积计算模块200的乘法器对输入算计和权重进行乘法运算,将两个乘法器进行乘法运算的结果输出到一个累加器,由累加器及选择器对乘法运算的结果进行累加运算,由第M级选择器输出累加运算的结果。
本申请实施例所提供的卷积计算模块可以集成到一个神经网络处理器中。
请参阅图11,图11为本申请实施例提供的神经网络处理器的结构示意图。神经网络处理器20可以包括卷积计算模块200和多个寄存器400。其中,卷积计算模块200可以参阅以上内容,在此不再赘述。其中,寄存器400与卷积计算模块200连接,该寄存器400被配置为卷积计算模块200的输出模式,诸如寄存器400被配置为卷积计算模块200中一个乘累加阵列的输出模式。
本申请实施例所提供的神经网络处理器可以集成为一个芯片。
请参阅图12,图12为本申请实施例提供的芯片的结构示意图。芯片2包括神经网络处理器20,该神经网络处理器20具有可以参阅以上内容,在此不再赘述。该芯片2可以应用到电子设备中。
需要说明的是,本申请实施例的神经网络处理器20也可以与其他处理器、存储器等集成在一个芯片中。
请参阅图13,图13为本申请实施例提供的电子设备的结构示意图。电子设备1可以包括神经网络处理器20。该电子设备1可以是智能手机、平板电脑、掌上电脑(PDA,PersonalDigital Assistant)等,还可以是游戏设备、AR(Augmented Reality,增强现实)设备、车载装置、数据存储装置、音频播放装置、视频播放装置、笔记本电脑、桌面计算设备等。
可以理解的是,该电子设备20还可以包括其他元件,诸如电子设备20还可以包括中央处理器、存储器、系统总线等。神经网络处理器20、处理器及存储器均可以与系统总线连接,以实现数据的传输。
以上对本申请实施例提供的卷积计算模块、神经网络处理器、芯片和电子设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请。同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种卷积计算模块,其特征在于,包括:
N级累加器,N为大于1的整数,每一级累加器包括至少一个累加器;和
M级选择器,M为大于或等于1的整数,每一级选择器包括至少一个选择器,每一选择器包括三个输入端,每一输入端连接一个累加器;
其中一个输入端连接第N级累加器的一个累加器,其中两个输入端连接第N-1级累加器的两个累加器。
2.根据权利要求1所述的卷积计算模块,其特征在于,所述N大于5,所述第N级累加器包括一个累加器,所述第二N-1级累加器包括两个累加器;
所述第M级选择器包括一个选择器;
所述第M级选择器的一个选择器包括一输出端,所述第M级选择器的一个选择器的输出端用于输出所述卷积计算模块的一种或多种累加运算的结果。
3.根据权利要求2所述的卷积计算模块,其特征在于,所述M大于1,所述第二M-1级选择器包括两个选择器,所述第二M-1级选择器的两个选择器均包括一输出端,所述第二M-1级选择器的两个选择器的输出端均连接第N级累加器的一个累加器和第M级选择器的一个选择器的一个输入端。
4.根据权利要求3所述的卷积计算模块,其特征在于,所述第N-2级累加器包括四个累加器;
所述M大于2,所述第M-2级选择器包括四个选择器;
所述第二M-2级选择器的四个选择器均包括一输出端,所述第二M-2级选择器的四个选择器的输出端均连接第N-1级累加器的一个累加器和第M-1级选择器的一个选择器的一个输入端。
5.根据权利要求4所述的卷积计算模块,其特征在于,所述第N-3级累加器包括八个累加器;
所述M大于3,所述第M-3级选择器包括八个选择器;
所述第二M-3级选择器的八个选择器均包括一输出端,所述第二M-3级选择器的八个选择器的输出端均连接第N-2级累加器的一个累加器和第M-2级选择器的一个选择器的一个输入端。
6.根据权利要求1至5任一项所述的卷积计算模块,其特征在于,所述N大于所述M。
7.根据权利要求1至5任一项所述的卷积计算模块,其特征在于,所述N等于所述M。
8.根据权利要求1至5任一项所述的卷积计算模块,其特征在于,所述N为6、7、8、9或10。
9.根据权利要求1至5任一项所述的卷积计算模块,其特征在于,所述卷积计算模块被配置为:
获取输入数据和权重;
由所述卷积计算模块的乘法器对输入数据和权重进行乘法运算;
将两个乘法器乘法运算的结果输出到一个累加器;
由所述累加器及所述选择器对所述乘法运算的结果进行累加运算;
由所述第M级选择器输出累加运算的结果。
10.一种卷积计算模块,其特征在于,包括累加器和选择器,同一级累加器的两个累加器和下一级累加器的一个累加器连接到一个选择器的输入端,所述选择器的输出端用于输出一种或多种累加运算的结果,所述累加器包括至少5级,每一级累加器至少包括一个累加器,所述选择器包括至少一级,每一级选择器至少包括一个选择器。
11.一种神经网络处理器,其特征在于,包括如权利要求1至10任一项所述的卷积计算模块。
12.根据权利要求11所述的神经网络处理器,其特征在于,所述神经网络处理器还包括与所述卷积计算模块连接的寄存器,所述寄存器被配置为所述卷积计算模块的输出模式。
13.一种芯片,其特征在于,包括如权利要求11或12所述的神经网络处理器。
14.一种电子设备,其特征在于,包括如权利要求11或12所述的神经网络处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911400306.5A CN111222090B (zh) | 2019-12-30 | 2019-12-30 | 卷积计算模块、神经网络处理器、芯片和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911400306.5A CN111222090B (zh) | 2019-12-30 | 2019-12-30 | 卷积计算模块、神经网络处理器、芯片和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111222090A true CN111222090A (zh) | 2020-06-02 |
CN111222090B CN111222090B (zh) | 2023-07-25 |
Family
ID=70830950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911400306.5A Active CN111222090B (zh) | 2019-12-30 | 2019-12-30 | 卷积计算模块、神经网络处理器、芯片和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111222090B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111610963A (zh) * | 2020-06-24 | 2020-09-01 | 上海西井信息科技有限公司 | 芯片结构及其乘加计算引擎 |
CN112200300A (zh) * | 2020-09-15 | 2021-01-08 | 厦门星宸科技有限公司 | 卷积神经网络运算方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
US20180129935A1 (en) * | 2016-11-07 | 2018-05-10 | Electronics And Telecommunications Research Institute | Convolutional neural network system and operation method thereof |
WO2018120989A1 (zh) * | 2016-12-29 | 2018-07-05 | 华为技术有限公司 | 卷积运算芯片和通信设备 |
CN109634556A (zh) * | 2018-11-06 | 2019-04-16 | 海南大学 | 一种乘累加器及累加输出方法 |
-
2019
- 2019-12-30 CN CN201911400306.5A patent/CN111222090B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180129935A1 (en) * | 2016-11-07 | 2018-05-10 | Electronics And Telecommunications Research Institute | Convolutional neural network system and operation method thereof |
WO2018120989A1 (zh) * | 2016-12-29 | 2018-07-05 | 华为技术有限公司 | 卷积运算芯片和通信设备 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
CN109634556A (zh) * | 2018-11-06 | 2019-04-16 | 海南大学 | 一种乘累加器及累加输出方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111610963A (zh) * | 2020-06-24 | 2020-09-01 | 上海西井信息科技有限公司 | 芯片结构及其乘加计算引擎 |
CN111610963B (zh) * | 2020-06-24 | 2021-08-17 | 上海西井信息科技有限公司 | 芯片结构及其乘加计算引擎 |
CN112200300A (zh) * | 2020-09-15 | 2021-01-08 | 厦门星宸科技有限公司 | 卷积神经网络运算方法及装置 |
CN112200300B (zh) * | 2020-09-15 | 2024-03-01 | 星宸科技股份有限公司 | 卷积神经网络运算方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111222090B (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180197067A1 (en) | Methods and apparatus for matrix processing in a convolutional neural network | |
CN112214726B (zh) | 运算加速器 | |
CN108416327B (zh) | 一种目标检测方法、装置、计算机设备及可读存储介质 | |
EP3855367A1 (en) | Operation accelerator, processing method, and related device | |
CN111221578A (zh) | 计算装置以及计算方法 | |
CN113222102B (zh) | 用于神经网络模型量化的优化方法 | |
CN111222090B (zh) | 卷积计算模块、神经网络处理器、芯片和电子设备 | |
CN110222833A (zh) | 一种用于神经网络的数据处理电路 | |
WO2022041188A1 (zh) | 用于神经网络的加速器、方法、装置及计算机存储介质 | |
EP4206996A1 (en) | Neural network accelerator with configurable pooling processing unit | |
CN112639839A (zh) | 神经网络的运算装置及其控制方法 | |
CN114764615A (zh) | 卷积运算的实现方法、数据处理方法及装置 | |
CN115238863A (zh) | 一种卷积神经网络卷积层的硬件加速方法、系统及应用 | |
CN110796229B (zh) | 一种实现卷积运算的装置及方法 | |
CN114600126A (zh) | 一种卷积运算电路和卷积运算方法 | |
CN112396072A (zh) | 基于asic与vgg16的图像分类加速方法及装置 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
US6055556A (en) | Apparatus and method for matrix multiplication | |
CN112639836A (zh) | 数据处理装置、电子设备和数据处理方法 | |
US20220101083A1 (en) | Methods and apparatus for matrix processing in a convolutional neural network | |
CN116611488A (zh) | 一种矢量处理单元、神经网络处理器及深度相机 | |
CN111985628A (zh) | 计算装置及包括所述计算装置的神经网络处理器 | |
CN112836793B (zh) | 浮点可分离卷积计算加速装置、系统以及图像处理方法 | |
CN115759213A (zh) | 一种用于一维卷积的卷积神经网络协处理器 | |
CN113128673B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |