CN108520297A - 可编程深度神经网络处理器 - Google Patents
可编程深度神经网络处理器 Download PDFInfo
- Publication number
- CN108520297A CN108520297A CN201810281984.3A CN201810281984A CN108520297A CN 108520297 A CN108520297 A CN 108520297A CN 201810281984 A CN201810281984 A CN 201810281984A CN 108520297 A CN108520297 A CN 108520297A
- Authority
- CN
- China
- Prior art keywords
- characteristic pattern
- unit
- multiply
- pixel
- buffer area
- 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
Classifications
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种可编程深度神经网络处理器,包括程序控制单元、滤波器缓存区、特征图缓存区,所述特征图缓存区用于缓存多张特征图,所述滤波器缓存区用于缓存与特征图匹配的权值数据;还包括层处理引擎,所述层处理引擎的卷积单元部分包括依次设置的乘累加单元、卷积累加单元和特征图累加单元,所述特征图缓存区和滤波器缓存区与层处理引擎的输入端连接,在特征图缓存区和层处理引擎的输入端之间还设有一数据整形及复用单元。本发明通过对乘累加单元的复用控制、特征图数据读取控制、特征图累加控制、以及冗余数据剔除控制,实现了一种低功耗、低成本的可编程深度神经网络处理器。
Description
技术领域
本发明涉及一种深度神经网络处理器,尤其涉及一种可编程深度神经网络处理器。
背景技术
如今,基于深度神经网络的人工智能已被证明在许多应用中能够辅助甚至替代人类,如自动驾驶、图像识别、医疗诊断、游戏、财务数据分析和搜索引擎等。这使得人工智能算法成为了研究热门。然而,相关算法缺乏与之匹配的硬件(尤其是核心芯片)支持。传统的CPU、GPU不是专门针对人工智能算法开发,在性能、功耗、硬件开销等方面存在较大问题。近年来,已经出现了一些专用人工智能处理器,这些处理器主要基于FPGA(现场可编程门阵列)或ASIC(专用集成电路)平台,如Google的TPU、MIT的Eyeriss、中科院的寒武纪等。处理器结构专门针对深度神经网络设计和优化,在速度和功耗等方面比CPU和GPU都有一个较大的提升。
然而,前面提到的这些处理器主要针对高端应用,如数据中心、自动驾驶、智能手机等,这些应用主要关心性能,对功耗、成本不太敏感,所以没有在功耗和成本上作进一步的优化。例如,为了提高性能,这些处理器都采用了大量的乘加运算单元(MAC)进行并行运算,带来了极大的硬件开销。另外,在内存读写方式和运算方式上存在很多冗余操作,如相同数据的重复读取,数据精度冗余等,带来了较大的功耗。
具体体现在:
第一:对于使用大型乘累加阵列的可编程深度卷积神经网络处理器,当滤波器尺寸较小时,大部分乘加器将处于空闲状态,因此硬件利用率变得非常低。尽管一些处理器能够重新利用剩余的乘累加单元来计算输出特征映射中的多个点或多个输出特征图,但是控制复杂度显著增加,同样增加了硬件开销。
第二:卷积后,来自多个输入特征图的结果将在特征图累加单元中进行再次累加,从而生成一张输出特征图。生成的输出特征图将继续通过激活函数模块和池化模块从而完成一整层的操作。为了提高性能和硬件利用率,上述操作是流水线的。卷积和激活函数模块易于流水线实现。但是,池化模块需要在计算之前准备好一组点值。由于输出特征映射中的点是以行为基础进行计算的,如图1,因此需要等待输出特征映射中的多行完成。这使得流水操作变得困难,同时它也需要一个先入先出存储器来存储行中的所有点,这增加了硬件开销。
第三,对于数据的存储,由于在卷积运算中,对于输出特征映射中的两个相邻点,输入数据是重叠的。这些重叠数据可以被复用从而减少片上数据传输量(即从特征图缓冲区到层处理引擎)。更多的重叠数据被复用,更少的数据将被传输。由于现有技术中正常的存储方法是一条线路状,按照从左到右、从上到下计算。这种方式导致每一簇数据间重叠的部分很少,数据无法实现重叠的最大化,不利于减少片上和片外的数据传输,从而降低功耗。
第四,卷积后,需要将不同输入特征图的输出结果进行相加,生成如图3所示的输出特征图。这通常是通过从不同的输入特征图中计算具有相同位置的点,并将它们加在一起来完成的,即图4所示。在所提出的深度卷积神经网络处理器中,只有一个卷积引擎。每次我们可以加载一个滤波器与一个输入特征图的相应部分,并进行点积运算。如果有N个输入特征图进行卷积以及相加操作,我们需要加载N个不同的滤波器来计算一个点。但是,当我们移动到下一个点时,我们将需要再次加载相同的滤波器。相同滤波器的重复加载会导致芯片上或芯片外的数据频繁传输,产生较大的功耗。
第五:对于深度卷积神经网络,乘累加操作产生了大部分功耗。减少数据位宽将有助于降低乘累加运算产生的功耗。
随着物联网和人工智能应用的融合,人工智能将会嵌入到物联网终端,实现终端处的嵌入式人工智能。跟前面提到的高端应用不同,物联网应用对功耗和成本非常敏感。因此,需要与之匹配的低功耗、低成本的嵌入式人工智能处理器。除了低功耗与低成本,嵌入式人工智能处理器也需要具有可编程性,从而支持不同的神经网络结构和动态神经网络切换。
发明内容
本发明的目的就在于提供一种解决上述问题,减少乘加运算单元,减少读写方式和运算方式上的冗余操作,降低芯片成本和设备成本的可编程深度神经网络处理器。
为了实现上述目的,本发明采用的技术方案是这样的:一种可编程深度神经网络处理器,包括程序控制单元、滤波器缓存区、特征图缓存区;
所述特征图缓存区用于缓存多张特征图,所述特征图由像素点数据构成;
所述滤波器缓存区用于缓存与特征图匹配的权值数据;
还包括层处理引擎,所述层处理引擎包括依次设置的卷积单元、激活函数单元和池化单元,所述卷积单元包括依次设置的乘累加单元、卷积累加单元和特征图累加单元,所述乘累加单元为5×5的乘加阵列,所述特征图缓存区和滤波器缓存区与层处理引擎的输入端连接,在特征图缓存区和层处理引擎的输入端之间还设有一数据整形及复用单元;
处理方法为:
(1)程序控制单元获取用户指令,解析用户指令,得到神经网络的参数,包括每一层的特征图尺寸、权值卷积核尺寸、卷积步长、输入特征图数量、输出特征图数量,以及卷积层数量、池化层数量、全连接层数量;
程序控制单元从特征图缓存区中读取一张特征图作为输入特征图,并根据输入特征图从滤波器缓存区中获取其对应的权值数据,其中输入图像的像素为Xin*Xin,对应权值数据的像素为Y*Y,卷积运算的步长为S;
(2)根据权值的像素和乘累加单元的大小,计算复用几次乘累加单元N,N=Y*Y/25,且N为整数;
(3)计算得到一个中间输出点MO1;
(31)按照Y*Y个像素点的个数,数据整形及复用单元从输出图片左上角读取第一组像素点I1,对其进行存储和标记后,将I1送入乘累加单元,复用N次乘累加单元后,计算得到一个中间输出点MO1;
(32)在I1正下方读取第二组像素点,所述第二组像素点个数为S*Y,且第二组像素点与I1中的(Y-S)*Y个像素点构成一组正方形像素点I2,将I2送入乘累加单元,复用后计算得到第二个中间输出点MO2;
(33)在I2右侧读取第三组像素点,所述第三组像素点个数为S*Y,且第三组像素点与I2中的(Y-S)*Y个像素点构成一组正方形像素点I3,将I3送入乘累加单元,复用后计算得到第三个中间输出点MO3;
(34)在I3正上方读取第四组像素点,所述第四组像素点个数为S*Y,且第四组像素点与I3中的(Y-S)*Y个像素点构成一组正方形像素点I4,将I4送入乘累加单元,复用后计算得到第四个中间输出点MO4;
(4)根据四个中间输出点求得一特征输出点并存储;
(5)在输入特征图上,按从上到下、从左到右的顺序,重复步骤(3)(4),得到所有特征输出点并构成一特征输出图。
作为优选:所述步骤(31)中,复用N次乘累加单元具体为:第1次采用乘累加单元进行乘加阵列运算后的结果送入卷积累加单元并存储,之后每次乘加阵列运算后的结果送入卷积累加单元并与之前存储的值累加,直到处理完I1里的所有像素点,得到一个中间输出点MO1。
作为优选:所述步骤(4)中,根据四个中间输出点求得一特征输出点并存储具体为:四个中间输出点的值相加除以4求取平均值,或四个中间输出点取最大值。
作为优选:所述特征图缓存区输出端和数据整形及复用单元间还设有一零数据跳过单元,所述零数据跳过单元用于判断特征图缓存区输出端的数据,若为0则不传输该数据,若为非0值则送入数据整形及复用单元。
作为优选:所述层处理引擎输出端设有自动近零数据过滤单元,所述自动近零数据过滤单元包括比较器,所述程序控制单元设置一阈值,所述比较器比较阈值和层处理引擎输出端输出的值,当输出的值低于阈值时将其置为0;所述阈值采用自适应调整。
作为优选:所述自适应调整为:首先设置初始阈值为0,进行一次卷积处理,计算得到一值作为0阈值预测值,然后以固定步长增加阈值,每增加一次阈值重复上述步骤计算得到一输出值,若输出值与0阈值预测值相同,则继续增加阈值,若不同,则将阈值恢复到上一轮值。
作为优选:若输入特征图为多张,输出特征图为一张,还包括以下步骤:
第一步:根据步骤(1)(2)(3)得到多张输入特征图对应的四个中间输出点;
第二步:将所有的中间输出点送入特征图累加单元,所述特征图累加单元将多个输入特征图中,对应位置的中间输出点进行累加,得到累加后的四个点;
第三步:根据步骤(4),由第二步得到的四个点求得一特征输出点并存储;
第四步:根据步骤(5)构成一特征输出图。
本发明有以下几个改进点:
(1)本发明中,采用了5×5的乘累加单元并行执行以完成点乘操作,从而完成输出特征图中的一个点的计算。如果滤波器尺寸大于5×5,则在配置控制器的控制下执行多轮5×5乘累加,以完成点积操作。由于5×5是相对小的尺寸,基于它可以实现更大尺寸的点乘和卷积,且运算过程中不会有太多乘加器处于空闲状态,硬件利用率高。另一方面,如果尺寸选得过小(例如2×2),则进行乘加运算将花费太长时间,降低运算性能。综上,相比大的乘加阵列,5×5的乘加阵列可以极大的提高硬件利用率,降低硬件开销,同时对运算性能不会有太大影响。
(2)为了克服输出特征映射中的点是以行为基础进行计算,而导致操作需要等待输出特征映射中的多行完成,且必须要先入先出存储器来存储行中的所有点的缺陷,本发明提出了一种新的读取和存储方式,首先,以簇的方式,参见图2和图6,图2是每四组构成一簇,图6中,其中A1、A2、A3、A4构成一矩形,也就是一簇,同理B1、B2、B3、B4构成一簇,C1、C2、C3、C4构成一簇,依次类推,通过这种方式,池化操作可以立即开始,无需任何存储和等待时间,这将有助于大幅减少FIFO尺寸,从而降低硬件开销。
(3)由于在卷积中,对于输出特征映射中的两个相邻点,输入数据是重叠的。也就是说,实际上A1、A2、A3、A4的输入数据相互之间有重叠;
具体可参见图7,假设此时四组数据分别为I1、I2、I3、I4,构成一个矩形,其中:
I1由a0、a2、c2、c0四个点构成;I2由a1、a3、c3、c1四个点构成;I3由b1、b3、d3、d1四个点构成;I4由b0、b2、d2、d0四个点构成。
其中,I1、I2、I3、I4均包含Y*Y个像素点,卷积运算的步长为S,所以I1、I2间重叠区域为a1、a2、c2、c1四个点围成的区域,大小为(Y-S)*S个像素点;同理,I2、I3间重叠区域为b1、b3、c3、c1四个点围成的区域,大小为(Y-S)*S个像素点,依次类推。
于是结合本发明用步骤(3)的方法可知,I1、I2、I3、I4相互之间都存在重叠区域,且存储的方式是以矩形为基础,左上角存储第一组数据、左下角第二组、右下角第三组、右上角第四组,通过此四组计算一个点。由于存在重叠区域,第一次需要读取Y*Y个像素点,第二次级及以后,每次只需要读取S*Y个数据点,这种方式可以实现数据重叠在一个簇内以及在相邻簇之间是最大化的。这有助于减少片上和片外的数据传输,从而降低功耗。
(4)另外,若输入特征图为多张,输出特征图为一张,则涉及到数据的累加,此时,为了降低功耗,采用一种新的方法,得到多张输入特征图对应的四个中间输出点,再对应位置累加,这样滤波器可以保持不变,避免重新加载,从而大幅降低了功耗,具体方式参见图5。
(5)本发明还在特征图缓存区输出端和数据整形及复用单元间还设有一零数据跳过单元;在层处理引擎输出端设有自动近零数据过滤单元,滤除小于预设阈值的接近于零的数据,这种方法能最大限度地减少对识别准确率的影响,同时达到大幅降低功耗的目的。
与现有技术相比,本发明的优点在于:提出了一种新的神经网络处理器,通过对乘累加单元的复用控制、特征图数据读取控制、特征图累加控制、以及冗余数据剔除控制,实现了一种低功耗、低成本的可编程深度神经网络处理器。”
附图说明
图1为现有技术中基于行的卷积模式;
图2为本发明中基于簇的卷积模式;
图3为现有技术中一种输出特征图的产生方式图;
图4为现有技术中点累加方式产生输出特征图;
图5为特征图累加方式产生输出特征图;
图6为本发明读取和存储方式流程图;
图7为本发明I1、I2、I3、I4关系图;
图8为本发明***框图;
图9为本发明层处理引擎框图。
具体实施方式
下面将结合附图对本发明作进一步说明。
实施例1:参见图1到图7。现有技术中,由图1可知,由于输出特征映射中的点是以行为基础进行计算的,因此需要等待输出特征映射中的多行完成。这使得流水操作变得困难,同时它也需要一个先入先出存储器来存储行中的所有点,这增加了硬件开销。
由图2可知,本发明和图1不同,我们提出了基于簇的卷积运算,该运算以簇为单位计算输出特征图中的点,而不是按行计算。
由图3、图4、图5可知,现有技术中,卷积后,需要将不同输入特征图的输出结果进行相加(如图3),这通常是通过从不同的输入特征图中计算具有相同位置的点,并将它们加在一起来完成的(如图4),在所提出的深度神经网络处理器中,只有一个卷积引擎。每次我们可以加载一个滤波器与一个输入特征图的相应部分,并进行点积运算。如果有N个输入特征图进行卷积以及相加操作,我们需要加载N个不同的滤波器来计算一个点。但是,当我们移动到下一个点时,我们将需要再次加载相同的滤波器。相同滤波器的重复加载会导致芯片上或芯片外的数据频繁传输,产生较大的功耗。而且重新加载滤波器不仅是针对一个输出特征图而言,而是对于每个输出特征图都是需要的。为了降低功耗,我们提出了基于特征图的累加技术。如图5所示。
本发明方案为:.一种可编程深度神经网络处理器,包括程序控制单元、滤波器缓存区、特征图缓存区;
所述特征图缓存区用于缓存多张特征图,所述特征图由像素点数据构成;
所述滤波器缓存区用于缓存与特征图匹配的权值数据;
还包括层处理引擎,所述层处理引擎包括依次设置的卷积单元、激活函数单元和池化单元,所述卷积单元包括依次设置的乘累加单元、卷积累加单元和特征图累加单元,所述乘累加单元为5×5的乘加阵列,所述特征图缓存区和滤波器缓存区与层处理引擎的输入端连接,在特征图缓存区和层处理引擎的输入端之间还设有一数据整形及复用单元;
处理方法为:
(1)程序控制单元获取用户指令,解析用户指令,得到神经网络的参数,包括每一层的特征图尺寸、权值卷积核尺寸、卷积步长、输入特征图数量、输出特征图数量,以及卷积层数量、池化层数量、全连接层数量;
程序控制单元从特征图缓存区中读取一张特征图作为输入特征图,并根据输入特征图从滤波器缓存区中获取其对应的权值数据,其中输入图像的像素为Xin*Xin,对应权值数据的像素为Y*Y,卷积运算的步长为S;
(2)根据权值的像素和乘累加单元的大小,计算复用几次乘累加单元N,N=Y*Y/25,且N为整数;
(3)计算得到一个中间输出点MO1;
(31)按照Y*Y个像素点的个数,数据整形及复用单元从输出图片左上角读取第一组像素点I1,对其进行存储和标记后,将I1送入乘累加单元,复用N次乘累加单元后,计算得到一个中间输出点MO1;
(32)在I1正下方读取第二组像素点,所述第二组像素点个数为S*Y,且第二组像素点与I1中的(Y-S)*Y个像素点构成一组正方形像素点I2,将I2送入乘累加单元,复用后计算得到第二个中间输出点MO2;
(33)在I2右侧读取第三组像素点,所述第三组像素点个数为S*Y,且第三组像素点与I2中的(Y-S)*Y个像素点构成一组正方形像素点I3,将I3送入乘累加单元,复用后计算得到第三个中间输出点MO3;
(34)在I3正上方读取第四组像素点,所述第四组像素点个数为S*Y,且第四组像素点与I3中的(Y-S)*Y个像素点构成一组正方形像素点I4,将I4送入乘累加单元,复用后计算得到第四个中间输出点MO4;
(4)根据四个中间输出点求得一特征输出点并存储;
(5)在输入特征图上,按从上到下、从左到右的顺序,重复步骤(3)(4),得到所有特征输出点并构成一特征输出图。
本实施例中:所述步骤(31)中,复用N次乘累加单元具体为:第1次采用乘累加单元进行乘加阵列运算后的结果送入卷积累加单元并存储,之后每次乘加阵列运算后的结果送入卷积累加单元并与之前存储的值累加,直到处理完I1里的所有像素点,得到一个中间输出点MO1。
所述步骤(4)中,根据四个中间输出点求得一特征输出点并存储具体为:四个中间输出点的值相加除以4求取平均值,或四个中间输出点取最大值。
所述特征图缓存区输出端和数据整形及复用单元间还设有一零数据跳过单元,所述零数据跳过单元用于判断特征图缓存区输出端的数据,若为0则不传输该数据,若为非0值则送入数据整形及复用单元。
所述层处理引擎输出端设有自动近零数据过滤单元,所述自动近零数据过滤单元包括比较器,所述程序控制单元设置一阈值,所述比较器比较阈值和层处理引擎输出端输出的值,当输出的值低于阈值时将其置为0;所述阈值采用自适应调整。
所述自适应调整为:首先设置初始阈值为0,进行一次卷积处理,计算得到一值作为0阈值预测值,然后以固定步长增加阈值,每增加一次阈值重复上述步骤计算得到一输出值,若输出值与0阈值预测值相同,则继续增加阈值,若不同,则将阈值恢复到上一轮值。
实施例2:参见图8,本***构建出一种具体实施例的框图。其中,DDR3、JTAG、DDR控制器、选择器、仲裁器、特征图缓存区以及滤波器缓存区构成了可编程深度神经网络处理器的存储部分,数据来源于三部分,一部分是经JTAG口加载的数据,也就是用户指令等上位指令,一部分是权值、特征图等数据,还有一部分,是经本发明处理后的中间数据,需要暂存在DDR3中。
所以,DDR3是用来存储数据,当程序控制单元工作时,就将数据从DDR3读到片上,JTAG用来将所有数据写进DDR3,DDR控制器用来控制DDR3读还是写;数据经DDR控制器读写控制后,经选择器进入仲裁器,其中选择器用来选择每次进入DDR3写通道的数据,一个是JTAG口加载的数据,还有一个是处理器每层处理的输出数据;
仲裁器就是将每次从DDR3读取进来的数据进行区分,将特征图数据送到特征图缓存区,将权值数据送入到滤波器缓存区。
其余与实施例1相同。
实施例3:参见图3和图4,假设输入特征图为一张,输出特征图为一张。
输入特征图的像素为Xin*Xin为256*256,对应的权值数据的像素为11*11,卷积步长S为4;
其处理方法为:
(1)程序控制单元获取用户指令,解析用户指令,得到卷积神经网络的参数;所述参数包括输入特征图的像素为Xin*Xin为256*256,对应的权值数据的像素Y*Y为11*11,卷积步长S为4,输入特征图为一张,输出特征图为一张;
然后,程序控制单元从特征图缓存区中读取一张特征图作为输入特征图,并根据输入特征图从滤波器缓存区中获取其对应的权值数据,其中输入图像的像素为Xin*Xin,对应权值数据的像素为Y*Y,卷积运算的步长为S;
(2)根据权值的像素和乘累加单元的大小,计算复用几次乘累加单元N,N=11*11/25,且N为整数,所以这里的N=5;
(3)计算得到一个中间输出点MO1;
(31)按照121个像素点的个数,数据整形及复用单元从输出图片左上角读取第一组像素点I1,对其进行存储和标记后,将I1送入乘累加单元,复用N次乘累加单元后,计算得到一个中间输出点MO1;
(32)在I1正下方读取第二组像素点,所述第二组像素点个数为44,且第二组像素点与I1中的77个像素点构成一组正方形像素点I2,将I2送入乘累加单元,复用后计算得到第二个中间输出点MO2;
(33)在I2左侧读取第三组像素点,所述第三组像素点个数为44,且第三组像素点与I2中的77个像素点构成一组正方形像素点I3,将I3送入乘累加单元,复用后计算得到第三个中间输出点MO3;
(34)在I3正上方读取第四组像素点,所述第四组像素点个数为44,且第四组像素点与I3中的77个像素点构成一组正方形像素点I4,将I4送入乘累加单元,复用后计算得到第四个中间输出点MO4;
(4)根据四个中间输出点求得一特征输出点并存储;
(5)在输入特征图上,按从左到右,从上到下的顺序,重复步骤(3)(4),得到所有特征输出点并构成一特征输出图。
其余与实施例1相同。
实施例4:参见图3和图4,假设输入特征图为3张,输出特征图为一张。
其处理方法为:
第一步:根据步骤(1)(2)(3)得到多张输入特征图对应的四个中间输出点;
第二步:将所有的中间输出点送入特征图累加单元,所述特征图累加单元将多个输入特征图中,对应位置的中间输出点进行累加,得到累加后的四个点;
第三步:根据步骤(4),由第二步得到的四个点求得一特征输出点并存储;
第四步:根据步骤(5)构成一特征输出图。
其余与实施例1相同。
Claims (7)
1.一种可编程深度神经网络处理器,包括程序控制单元、滤波器缓存区、特征图缓存区,其特征在于:
所述特征图缓存区用于缓存多张特征图,所述特征图由像素点数据构成;
所述滤波器缓存区用于缓存与特征图匹配的权值数据;
还包括层处理引擎,所述层处理引擎包括依次设置的卷积单元、激活函数单元和池化单元,所述卷积单元包括依次设置的乘累加单元、卷积累加单元和特征图累加单元,所述乘累加单元为5×5的乘加阵列,所述特征图缓存区和滤波器缓存区与层处理引擎的输入端连接,在特征图缓存区和层处理引擎的输入端之间还设有一数据整形及复用单元;
处理方法为:
(1)程序控制单元获取用户指令,解析用户指令,得到神经网络的参数,包括每一层的特征图尺寸、权值卷积核尺寸、卷积步长、输入特征图数量、输出特征图数量,以及卷积层数量、池化层数量、全连接层数量;
程序控制单元从特征图缓存区中读取一张特征图作为输入特征图,并根据输入特征图从滤波器缓存区中获取其对应的权值数据,其中输入图像的像素为Xin*Xin,对应权值数据的像素为Y*Y,卷积运算的步长为S;
(2)根据权值的像素和乘累加单元的大小,计算复用几次乘累加单元N,N=Y*Y/25,且N为整数;
(3)计算得到一个中间输出点MO1;
(31)按照Y*Y个像素点的个数,数据整形及复用单元从输出图片左上角读取第一组像素点I1,对其进行存储和标记后,将I1送入乘累加单元,复用N次乘累加单元后,计算得到一个中间输出点MO1;
(32)在I1正下方读取第二组像素点,所述第二组像素点个数为S*Y,且第二组像素点与I1中的(Y-S)*Y个像素点构成一组正方形像素点I2,将I2送入乘累加单元,复用后计算得到第二个中间输出点MO2;
(33)在I2右侧读取第三组像素点,所述第三组像素点个数为S*Y,且第三组像素点与I2中的(Y-S)*Y个像素点构成一组正方形像素点I3,将I3送入乘累加单元,复用后计算得到第三个中间输出点MO3;
(34)在I3正上方读取第四组像素点,所述第四组像素点个数为S*Y,且第四组像素点与I3中的(Y-S)*Y个像素点构成一组正方形像素点I4,将I4送入乘累加单元,复用后计算得到第四个中间输出点MO4;
(4)根据四个中间输出点求得一特征输出点并存储;
(5)在输入特征图上,按从上到下、从左到右的顺序,重复步骤(3)(4),得到所有特征输出点并构成一特征输出图。
2.根据权利要求1所述的可编程深度神经网络处理器,其特征在于:所述步骤(31)中,复用N次乘累加单元具体为:第1次采用乘累加单元进行乘加阵列运算后的结果送入卷积累加单元并存储,之后每次乘加阵列运算后的结果送入卷积累加单元并与之前存储的值累加,直到处理完I1里的所有像素点,得到一个中间输出点MO1。
3.根据权利要求1所述的可编程深度神经网络处理器,其特征在于:所述步骤(4)中,根据四个中间输出点求得一特征输出点并存储具体为:四个中间输出点的值相加除以4求取平均值,或四个中间输出点取最大值。
4.根据权利要求1所述的可编程深度神经网络处理器,其特征在于:所述特征图缓存区输出端和数据整形及复用单元间还设有一零数据跳过单元,所述零数据跳过单元用于判断特征图缓存区输出端的数据,若为0则不传输该数据,若为非0值则送入数据整形及复用单元。
5.根据权利要求1所述的可编程深度神经网络处理器,其特征在于:所述层处理引擎输出端设有自动近零数据过滤单元,所述自动近零数据过滤单元包括比较器,所述程序控制单元设置一阈值,所述比较器比较阈值和层处理引擎输出端输出的值,当输出的值低于阈值时将其置为0;所述阈值采用自适应调整。
6.根据权利要求5所述的可编程深度神经网络处理器,其特征在于:所述自适应调整为:首先设置初始阈值为0,进行一次卷积处理,计算得到一值作为0阈值预测值,然后以固定步长增加阈值,每增加一次阈值重复上述步骤计算得到一输出值,若输出值与0阈值预测值相同,则继续增加阈值,若不同,则将阈值恢复到上一轮值。
7.根据权利要求1所述的可编程深度神经网络处理器,其特征在于:若输入特征图为多张,输出特征图为一张,还包括以下步骤:
第一步:根据步骤(1)(2)(3)得到多张输入特征图对应的四个中间输出点;
第二步:将所有的中间输出点送入特征图累加单元,所述特征图累加单元将多个输入特征图中,对应位置的中间输出点进行累加,得到累加后的四个点;
第三步:根据步骤(4),由第二步得到的四个点求得一特征输出点并存储;
第四步:根据步骤(5)构成一特征输出图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810281984.3A CN108520297B (zh) | 2018-04-02 | 2018-04-02 | 可编程深度神经网络处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810281984.3A CN108520297B (zh) | 2018-04-02 | 2018-04-02 | 可编程深度神经网络处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108520297A true CN108520297A (zh) | 2018-09-11 |
CN108520297B CN108520297B (zh) | 2020-09-04 |
Family
ID=63431455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810281984.3A Active CN108520297B (zh) | 2018-04-02 | 2018-04-02 | 可编程深度神经网络处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108520297B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110222835A (zh) * | 2019-05-13 | 2019-09-10 | 西安交通大学 | 一种基于零值检测的卷积神经网络硬件***及运算方法 |
CN111079923A (zh) * | 2019-11-08 | 2020-04-28 | 中国科学院上海高等研究院 | 适用于边缘计算平台的Spark卷积神经网络***及其电路 |
WO2020155044A1 (zh) * | 2019-01-31 | 2020-08-06 | 深圳市大疆创新科技有限公司 | 卷积计算的装置、方法、处理器和可移动设备 |
US20200293858A1 (en) * | 2019-03-13 | 2020-09-17 | Samsung Electronics Co., Ltd. | Method and apparatus for processing computation of zero value in processing of layers in neural network |
CN116048479A (zh) * | 2023-04-03 | 2023-05-02 | 南京大学 | 一种针对存算一体芯片的快速编程方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150310311A1 (en) * | 2012-12-04 | 2015-10-29 | Institute Of Semiconductors, Chinese Academy Of Sciences | Dynamically reconstructable multistage parallel single instruction multiple data array processing system |
CN106228238A (zh) * | 2016-07-27 | 2016-12-14 | 中国科学技术大学苏州研究院 | 现场可编程门阵列平台上加速深度学习算法的方法和*** |
CN106529668A (zh) * | 2015-11-17 | 2017-03-22 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN107341544A (zh) * | 2017-06-30 | 2017-11-10 | 清华大学 | 一种基于可分割阵列的可重构加速器及其实现方法 |
CN107392309A (zh) * | 2017-09-11 | 2017-11-24 | 东南大学—无锡集成电路技术研究所 | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 |
CN107480782A (zh) * | 2017-08-14 | 2017-12-15 | 电子科技大学 | 一种片上学习神经网络处理器 |
US20180005074A1 (en) * | 2016-07-01 | 2018-01-04 | Google Inc. | Convolutional Neural Network On Programmable Two Dimensional Image Processor |
CN107657581A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种卷积神经网络cnn硬件加速器及加速方法 |
CN107844828A (zh) * | 2017-12-18 | 2018-03-27 | 北京地平线信息技术有限公司 | 神经网络中的卷积计算方法和电子设备 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理***和处理方法 |
-
2018
- 2018-04-02 CN CN201810281984.3A patent/CN108520297B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150310311A1 (en) * | 2012-12-04 | 2015-10-29 | Institute Of Semiconductors, Chinese Academy Of Sciences | Dynamically reconstructable multistage parallel single instruction multiple data array processing system |
CN106529668A (zh) * | 2015-11-17 | 2017-03-22 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
US20180005074A1 (en) * | 2016-07-01 | 2018-01-04 | Google Inc. | Convolutional Neural Network On Programmable Two Dimensional Image Processor |
CN106228238A (zh) * | 2016-07-27 | 2016-12-14 | 中国科学技术大学苏州研究院 | 现场可编程门阵列平台上加速深度学习算法的方法和*** |
CN107341544A (zh) * | 2017-06-30 | 2017-11-10 | 清华大学 | 一种基于可分割阵列的可重构加速器及其实现方法 |
CN107480782A (zh) * | 2017-08-14 | 2017-12-15 | 电子科技大学 | 一种片上学习神经网络处理器 |
CN107392309A (zh) * | 2017-09-11 | 2017-11-24 | 东南大学—无锡集成电路技术研究所 | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 |
CN107657581A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种卷积神经网络cnn硬件加速器及加速方法 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理***和处理方法 |
CN107844828A (zh) * | 2017-12-18 | 2018-03-27 | 北京地平线信息技术有限公司 | 神经网络中的卷积计算方法和电子设备 |
Non-Patent Citations (1)
Title |
---|
FENGBIN TU等: "Deep Convolutional Neural Network Architecture With Reconfigurable Computation Patterns", 《IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020155044A1 (zh) * | 2019-01-31 | 2020-08-06 | 深圳市大疆创新科技有限公司 | 卷积计算的装置、方法、处理器和可移动设备 |
US20200293858A1 (en) * | 2019-03-13 | 2020-09-17 | Samsung Electronics Co., Ltd. | Method and apparatus for processing computation of zero value in processing of layers in neural network |
US11604958B2 (en) * | 2019-03-13 | 2023-03-14 | Samsung Electronics Co., Ltd. | Method and apparatus for processing computation of zero value in processing of layers in neural network |
US11915118B2 (en) | 2019-03-13 | 2024-02-27 | Samsung Electronics Co., Ltd. | Method and apparatus for processing computation of zero value in processing of layers in neural network |
CN110222835A (zh) * | 2019-05-13 | 2019-09-10 | 西安交通大学 | 一种基于零值检测的卷积神经网络硬件***及运算方法 |
CN111079923A (zh) * | 2019-11-08 | 2020-04-28 | 中国科学院上海高等研究院 | 适用于边缘计算平台的Spark卷积神经网络***及其电路 |
CN111079923B (zh) * | 2019-11-08 | 2023-10-13 | 中国科学院上海高等研究院 | 适用于边缘计算平台的Spark卷积神经网络***及其电路 |
CN116048479A (zh) * | 2023-04-03 | 2023-05-02 | 南京大学 | 一种针对存算一体芯片的快速编程方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108520297B (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108520297A (zh) | 可编程深度神经网络处理器 | |
CN107169560B (zh) | 一种自适应可重构的深度卷积神经网络计算方法和装置 | |
CN106875013B (zh) | 用于多核优化循环神经网络的***和方法 | |
CN109948774B (zh) | 基于网络层捆绑运算的神经网络加速器及其实现方法 | |
Li et al. | A high performance FPGA-based accelerator for large-scale convolutional neural networks | |
US20180260710A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
US20180157969A1 (en) | Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network | |
CN109409510B (zh) | 神经元电路、芯片、***及其方法、存储介质 | |
CN108171317A (zh) | 一种基于soc的数据复用卷积神经网络加速器 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN108537331A (zh) | 一种基于异步逻辑的可重构卷积神经网络加速电路 | |
CN111242289A (zh) | 一种规模可扩展的卷积神经网络加速***与方法 | |
CN110222818B (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
CN110321997B (zh) | 高并行度计算平台、***及计算实现方法 | |
CN111079923B (zh) | 适用于边缘计算平台的Spark卷积神经网络***及其电路 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN112633490B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
US11875248B2 (en) | Implementation of a neural network in multicore hardware | |
Sun et al. | A high-performance accelerator for large-scale convolutional neural networks | |
CN115803754A (zh) | 用于在神经网络中处理数据的硬件架构 | |
US20230153616A1 (en) | Multiply-accumulate sharing convolution chaining for efficient deep learning inference | |
CN109740619B (zh) | 用于目标识别的神经网络终端运行方法和装置 | |
CN110414672B (zh) | 卷积运算方法、装置及*** | |
CN110377874A (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 |