CN117291240B - 卷积神经网络加速器及电子设备 - Google Patents
卷积神经网络加速器及电子设备 Download PDFInfo
- Publication number
- CN117291240B CN117291240B CN202311579084.4A CN202311579084A CN117291240B CN 117291240 B CN117291240 B CN 117291240B CN 202311579084 A CN202311579084 A CN 202311579084A CN 117291240 B CN117291240 B CN 117291240B
- Authority
- CN
- China
- Prior art keywords
- data
- accelerator
- acceleration
- address
- dma
- 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.)
- Active
Links
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 59
- 230000001133 acceleration Effects 0.000 claims abstract description 106
- 238000004364 calculation method Methods 0.000 claims abstract description 43
- 238000012546 transfer Methods 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 19
- 238000010586 diagram Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 12
- 238000011176 pooling Methods 0.000 claims description 7
- 239000011159 matrix material Substances 0.000 claims description 6
- 238000013139 quantization Methods 0.000 claims description 6
- 230000004913 activation Effects 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 4
- 230000001537 neural effect Effects 0.000 claims description 4
- 238000009825 accumulation Methods 0.000 claims description 3
- 239000000654 additive Substances 0.000 claims description 3
- 230000000996 additive effect Effects 0.000 claims description 3
- 230000003068 static effect Effects 0.000 claims description 2
- 238000013473 artificial intelligence Methods 0.000 abstract description 9
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
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/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
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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
Abstract
本申请实施例中提供一种卷积神经网络加速器及电子设备,涉及人工智能技术领域。加速器与处理器总线连接,包括:寄存器、控制器、DMA、N块SRAM块以及N组计算单元;寄存器存储加速模式配置信息,以及处理器配置的加速模式选择信息、参数存储地址和初始搬运信息;控制器根据初始搬运信息和本批次搬运信息,确定下一批次DMA待搬运的数据地址;DMA根据待搬运的数据地址,从外部存储中分批次搬运数据到M个SRAM块中缓存;M组计算单元对每批次M个SRAM块中缓存的数据进行并行计算,并将M个计算结果缓存在SRAM块中;DMA,还用于将SRAM块中缓存的计算结果搬运到外部存储。基于本申请提供的加速器,可以提高卷积神经网络加速的性能。
Description
技术领域
本申请涉及人工智能技术领域,具体地,涉及一种卷积神经网络加速器及电子设备。
背景技术
目前,卷积神经网络在图像处理、语音识别、目标检测以及人工智能等领域广泛应用,然而卷积神经网络搭载在传统硬件平台上时,计算性能不够高效。
通常,AI(artificial intelligence,人工智能)加速器可以用来提高卷积神经网络的性能。AI加速器的性能与算法、数据和计算能力三个方面相关。其中,数据即是算法的学习来源,也是算法的应用对象;硬件平台为算法运行提供计算能力支撑。随着摩尔定律不断地逼近物理极限,常规的硬件平台难以高效处理AI算法,特别是复杂卷积神经网络的推理和训练。目前神经网络加速器集中在如何高效实现计算部分加速方向,通过使用极多的运算单元来提高计算能力。
然而,当卷积神经网络的网络结构越深层,模型的参数量越大,加速器无法将全部参数保存在片内SRAM(Static Random Access Memory,静态随机存储器),若加速器频繁访问片外存储,则路径时延大,从而限制了加速器的性能,导致加速器的加速性能降低。
发明内容
本申请实施例中提供了一种卷积神经网络加速器及电子设备。
本申请实施例的第一个方面,提供了一种卷积神经网络加速器,加速器与处理器总线连接,包括:寄存器、控制器、DMA(Direct Memory Access,直接存储器访问模块)、N块SRAM块以及N组计算单元;寄存器存储加速模式配置信息,以及处理器配置的加速模式选择信息、参数存储地址和初始搬运信息;加速模式配置信息指示加速器中包括的每个加速模式和每个加速模式所需的计算单元;加速模式选择信息指示卷积神经网络所需的加速模式;参数存储地址包括M个SRAM块,N和M均为大于1的整数,M≤N;控制器根据初始搬运信息和本批次搬运信息,确定下一批次DMA待搬运的数据地址;DMA根据待搬运的数据地址,从外部存储中分批次搬运数据到M个SRAM块中缓存;M组计算单元对每批次M个SRAM块中缓存的数据进行并行计算,并将M个计算结果缓存在SRAM块中;DMA将SRAM块中缓存的计算结果搬运到外部存储。
在本申请一个可选的实施例中,加速器中的加速模式包括以下至少一项:卷积转矩阵加速、卷积加速、深度卷积加速、池化加速、全连接加速以及矩阵乘加速;其中,寄存器中存储每个加速模式的使能开关和加速模式对应的计算单元使能开关;控制器根据处理器配置的加速模式选择信息控制各个加速模式的使能开关和加速模式对应的计算单元使能开关是否闭合。
在本申请一个可选的实施例中,计算单元包括以下至少一类:乘法器、加法累加树、偏执模块、量化模块、激活模块和池化模块。
在本申请一个可选的实施例中,参数存储地址为处理器基于卷积神经网络待处理的数据量配置的;其中,参数存储地址包括以下至少一项:卷积核数据的地址区间、输入特征数据的地址区间、输出特征数据的地址区间以及临时数据的地址区间。
在本申请一个可选的实施例中,初始搬运信息包括:外部存储中的起始地址、传输长度以及地址偏移量;其中,传输长度指示每次搬运的数据长度。
在本申请一个可选的实施例中,外部存储中待搬运数据包括卷积核和特征图;待搬运数据的数据格式为目标格式,目标格式下图像数据的多个通道的同一位置的像素值顺序存储;M组计算单元,具体用于同时计算同一像素点的多个通道。
在本申请一个可选的实施例中,寄存器,具体用于存储处理器基于卷积神经网络的神经结构配置的第i层所需的加速模式、基于第i层待处理的数据量配置的第i层参数存储地址,以及第i层待搬运数据的初始搬运信息;其中,第i层数据的初始搬运信息包括:第i层搬运的起始地址、第i层每次搬运的数据长度和第i层的地址偏移量;i为正整数。
在本申请一个可选的实施例中,控制器,具体用于在进行第i层处理时基于寄存器中存储的第i层数据的初始搬运信息和第i层本批次搬运数据的地址,确定DMA模块下一批次搬运数据的外部存储地址和在加速器中的缓存地址。
在本申请一个可选的实施例中,DMA,用于在第i层计算过程中从外部存储中搬运一批次卷积核到SRAM块中,搬运K批次特征图到SRAM块中;计算单元,用于在第i层的第k次计算时根据卷积核和第k批次搬运的特征图进行卷积运算,1≤k≤K,k和K为整数。
在本申请一个可选的实施例中,DMA和N个SRAM块的总带宽匹配;DMA,具体用于在计算结束信号拉高之后,将外部存储的数据分批搬运到M个SRAM块中。
本申请实施例的第二个方面,提供了一种电子设备,包括:包括存储器和处理器,存储器存储有计算机程序,所述电子设备的处理器与所述卷积神经网络加速器总线连接,所述电子设备执行计算机程序时实现如上任一项卷积神经网络加速器的加速。
本申请实施例的第三个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现如上任一模块的功能。
本申请实施例提供的卷积神经网络加速器,加速器内部设置了存储控制逻辑的寄存器,第一方面软件仅需要每层初始的时候配置一次即可,配置完成之后采用纯硬件控制数据流,逻辑硬件(即上述的控制器)根据前一次计算结束done信号拉高,控制配置DMA搬运起始地址、长度和地址偏移,即每层初始软件配置寄存器,本层后续搬运数据不再需要软件进行配置,减少了软件的工作量,缩短了软件控制的工作量,提高了加速效率。第二方面,加速器中的控制器基于初始配置的所需的加速模式,可以精确控制加速器中各个模块的使能信号,确保未参与计算的模块的使能信号不翻转,从而降低加速器的功耗。第三方面,加速器中增加了分区寄存器region,加速器中的DMA(硬件)可以根据寄存器中配置的初始搬运信息,将数据搬运到对应的SRAM块中的存储区域,不再需要软件每次搬运都进行控制。其中,软件可以根据卷积神经网络的各个层的数据量的变化在每层配置时动态分配各个数据区间大小,从而可以使得SRAM块的空间利用率最大化。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一个实施例提供的卷积神经网络加速器的结构示意图;
图2为本申请一个实施例提供的卷积神经网络加速器加速方法流程图;
图3为本申请一个实施例提供的数据存储格式示意图;
图4为本申请一个实施例提供的数据存储格式示意图;
图5为本申请一个实施例提供的卷积神经网络加速器的结构示意图;
图6为本申请一个实施例提供的电子设备结构示意图。
具体实施方式
在实现本申请的过程中,发明人发现,目前的卷积神经网络的加速器的加速性能较差。
针对上述问题,本申请实施例中提供了一种卷积神经网络加速器,加速器与处理器总线连接,该加速器包括:寄存器、控制器、DMA、N块SRAM块以及N组计算单元;寄存器,存储加速模式配置信息,以及处理器配置的加速模式选择信息、参数存储地址和初始搬运信息;加速模式配置信息指示加速器中包括的每个加速模式和每个加速模式所需的计算单元;加速模式选择信息指示卷积神经网络所需的加速模式;参数存储地址包括M个SRAM块,N和M均为大于1的整数,M≤N;控制器,根据初始搬运信息和本批次搬运信息,确定下一批次DMA待搬运的数据地址;DMA,根据待搬运的数据地址,从外部存储中分批次搬运数据到M个SRAM块中缓存;M组计算单元对每批次M个SRAM块中缓存的数据进行并行计算,并将M个计算结果缓存在SRAM块中;DMA,还用于将SRAM块中缓存的计算结果搬运到外部存储。
本申请实施例提供的卷积神经网络加速器的架构,软件参与度低,主要依靠硬件操作,可以在算力上加速,利用数据的复用性,减少存储的访问,提高了计算的并行度;通过连续地址访问数据利用数据的局部性,可以快速得到局部数据的计算结果,不再需要等待图像数据多个通道都传输完成之后再将各个通道的数据进行处理计算,从而减少乘累加中间结果的存放数量;通过寄存器中配置信息可以精确控制各个模块寄存器使能信号(EN信号),从而可以保证未参与计算的模块的信号不反转,从而可以降低卷积神经网络加速器的功耗。
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
以下对本申请实施例提供的卷积神经网络加速器的应用环境作简要说明:
本申请实施例提供的卷积神经网络加速器可以在图像处理、语音识别、目标检测以及人工智能等领域使用,以使得硬件平台可以高效处理AI算法。
参见图1,本申请实施例提供的一种卷积神经网络加速器10的结构示意图,如图1中所示,该加速器10与处理器11总线连接,加速器10包括:寄存器101、控制器102、DMA 103、N块SRAM块104以及N组计算单元105,N为大于1的整数。
可选地,加速器中的加速模式包括以下至少一项:im2col(卷积转矩阵)加速、conv(卷积)加速、depthwise conv(深度卷积)加速、池化加速、全连接加速以及矩阵乘加速。
可选地,加速器中的计算单元包括以下至少一类:乘法器、加法累加树、偏执模块、量化模块、激活模块和池化模块。其中,激活、池化与卷积运算为串行计算。
在本申请实施例中,寄存器存储加速器中加速模式配置信息,以及处理器配置的加速模式选择信息、参数存储地址和初始搬运信息。
进而,控制器根据处理器配置的加速模式选择信息控制各个加速模式的使能开关和加速模式对应的计算单元使能开关是否闭合。
其中,加速模式配置信息指示加速器中包括的每个加速模式和每个加速模式所需的计算单元;加速模式选择信息指示卷积神经网络所需的加速模式;参数存储地址包括M个SRAM块,M为大于1小于或等于N的整数,M≤N。
在本申请实施例中,总线(bus)带宽与N块SRAM块的总带宽匹配,因此可以使得数据的读写效率高;由于加速器中本地存储提供的SRAM块包括N块,且提供了N组计算单元,在软件配置了选择的加速模式和参数存储地址之后,即选择了M个SRAM块和M组计算单元,每块SRAM块对应一组计算单元,上述M组计算单元在加速过程中可以单周期同时读取M个SRAM块中的数据,可以进行并行计算,因此相比于传统的加速器的并行度高。
具体地,加速模式配置信息可以包括加速模式所需的计算单元的类型、数量和编号。不同加速模式所需的计算单元的类型不同或计算单元的数量不同。
在本申请实施例中,加速器支持的模式多,有些模块在特定加速模式下才会执行,可以在进行加速前通过软件一次配置寄存器,配置各个计算单元的操作是否生效。例如,每个加速模式对应寄存器使能开关和各个计算单元的使能开关,以使得控制器可以控制每个加速模块式对应的计算单元是否工作。即软件配置好,硬件控制模块是否工作。即可以控制计算单元的使能信号拉低翻转,降低加速器的功耗。
处理器11,用于配置卷积神经网络加速器中的配置信息(即软件处理)。
具体地,处理器11,可以根据卷积神经网络的神经结构配置卷积神经网络所需的第一加速模式,根据卷积神经网络的数据配置的参数储存地址区间、配置卷积神经网络待处理数据的初始搬运信息。其中,第一加速模式包括上述加速模式中的至少一个加速模式。参数储存地址指示卷积神经网络处理过程中参数的数据在加速器中的N个SRAM块中的储存地址区间。
可选地,参数存储地址包括以下至少一项:卷积核数据(kernel data)的地址区间、输入特征数据(in_feture_data)的地址区间、输出特征数据(out_feture_data)的地址区间以及临时数据(temp_data)的地址区间。
可以理解,加速器中的各个SRAM块可以作为local mem(本地存储)用于缓存临时存放数据。
基于该方案,在本申请实施例提供的卷积神经网络加速器中,处理器可以根据卷积神经网络的各个层的数据量的不同动态软件分配各个参数的存储区间的大小,从而可以提高各个SRAM块的利用率。
可选地,初始搬运信息包括:外部存储中的起始地址、传输长度以及地址偏移量;其中,传输长度指示每次搬运的数据长度。
需要说明的是,在本申请实施例中,在处理器配置了加速器中的寄存器之后,如图2中所示,为本申请实施例提供的一种卷积神经网络加速器加速方法流程示意图,加速器可以按照下述的操作步骤进行加速处理,具体可以包括下述的步骤200至步骤203:
步骤200、控制器根据寄存器中存储的初始搬运信息和本批次搬运信息,确定下一批次DMA待搬运的数据地址。
也就是说,在传输数据之前,本申请实施例是通过软件在加速器的寄存器中配置一次待搬运数据的起始地址addr、传输长度len和偏移地址offset,加速器的控制器可以在分批次搬运数据的过程中,计算每次搬运数据的地址。
可以理解,本批次搬运信息包括本批次搬运的数据、外部存储中存储地址,以及加速器中SRAM块中的存储地址。
需要说明的是,控制器为加速器的控制单元,可以配置寄存器、处理中断以及状态机跳转。
例如,在DMA一次搬运完成之后,控制器可以处理中断操作。
步骤201、DMA根据控制器确定的待搬运的数据地址,从外部存储中分批次搬运数据到M个SRAM块中缓存。
示例性地,DMA可以在计算结束信号拉高之后将外部存储的数据分批搬运到M个SRAM块中。
可选地,外部存储中待搬运的数据包括卷积核(feture map data)和特征图(kernel data);待搬运数据的数据格式为目标格式,目标格式下图像数据的同一位置的多个通道的像素值顺序存储。进而,上述M组计算单元,具体用于同时计算同一像素点的多个通道。
例如,多个通道同一像素点可以同时卷积计算。
如图3为本申请实施例提供的一种数据的存储格式的示意图,如图3中所示的NCHW格式的存储方式为“R…RG…GB…B”即,在加速过程中,则需要等到三个通道的输入都准备好之后,才可以进行处理得到最终的输出结果,例如先将像素点的R通道的数据先缓存完,再缓存G通道的数据,再缓存B通道的数据,三个通道数据全部缓存完之后,在拆分为三个通道,每个通道分别进行计算,缓存得到的三个通道的中间结果数据,再将中间结果数据进行累加得到最终的结果。
图4为本申请实施例提供的一种数据的存储格式的示意图。以图像数据包括3个颜色通道,分别为R通道、G通道和B通道为例,如图4中所示目标格式为NHWC格式,其中,N表示该批图像的张数、H表示高度、W表示宽度、C表示通道。存储方式为“…RGBRGBRGB…”,即多个通道的同一位置的像素值顺序存储在一起,在加速过程中,每三个输入像素可以得到一个输出像素,即访存局部性好。NCHW格式相比于目标格式占用较多的临时空间。
可以理解,本申请实施例的图像数据采用NHWC格式,使得加速器可以连续访问数据,利用数据的局部性,多个通道同一像素点可以同时进行卷积计算并累加得到最终结果,因此可以提高数据的并行度,配置的计算单元同时使用,无需先将不同位置的同一像素点全部取出进行中间计算,计算速度快。
步骤202、M组计算单元对每批次M个SRAM块中缓存的数据进行并行计算,并将M个计算结果缓存在SRAM块中。
示例性地,在本申请实施例中,计算单元计算完M个SRAM块中缓存的数据之后,可以将该M个计算结果分别缓存到对应的M个SRAM块中;也可以按照顺序依次将M个计算结果往第一个SRAM块中存储,待第一个SRAM块中存储满之后,接着向第二个SRAM块中存储,以此类推;也可以单独分配一个SRAM块专用于存储该M个计算结果;本公开实施例对此不做具体限定。
可以理解,本申请实施例提供的加速器中,支持多种加速模式,不同的加速模式使用对应的计算单元,加速器可以控制需要使用的计算单元工作,其他不使用的计算单元不工作,从而可以降低加速的功耗,省电。
例如,池化加速模式不需要量化操作,在池化模式使能开关打开之后,加速器可以基于寄存器中配置的池化加速模式对应的计算单元信息,拉低量化模块控制信号,使得量化模块的触发器不反转,从而可以省电降低加速器的功耗。
步骤203、DMA将SRAM块中缓存的计算结果搬运到外部存储中。
可选地,DMA的带宽和N个SRAM块的总带宽匹配。
图5为本申请实施例提供的一种加速器的结构示意图。一个SRAM块104对应的一组计算单元105,每组计算单元包括两个乘法器1051和三个加法累加器1052;该M组计算单元计算完M个SRAM块中存储的数据之后,每个累加器1052计算的结果经过激活函数1053处理,之后将计算的结果写入最后一个SRAM块中,待多个通道的结果都计算完成之后,DMA 103再将SRAM块中的结果搬出加速器,从而可以提高宽带的利用率。
需要说明的是,在图4中仅示例性地示出了乘法器和加法累加器两类计算单元,其他计算单元并未示出。具体卷积神经网络的具体层的加速所需的计算单元的类型和数量可以相同也可以不同,本申请实施例对此不作具体限定。
通常,卷积神经网络包括多层处理,在本申请实施例中,卷积神经网络加速器每次可以针对一层进行加速处理,在每层加速完成之后,处理器(软件)开始根据卷积神经网络的网络结构和数量重新配置下一层所需的配置信息,以供卷积神经网络加速器进行加速计算。其中,每层所选择的加速模式可以完全不同也可以部分相同也可以完全相同,本申请实施例对此不做具体限定。
进而,在本申请实施例中,寄存器101,具体可以用于存储处理器11基于卷积神经网络的神经结构配置的第i层所需的加速模式、基于第i层待处理的数据量配置的第i层参数存储地址,以及第i层待搬运数据的初始搬运信息;其中,第i层数据的初始搬运信息包括:第i层搬运的起始地址、第i层每次搬运的数据长度和第i层的地址偏移量,i为正整数。
需要说明的是,上述的存储地址区间为加速器中N个SRAM块中的地址区间。
可以理解,加速器中增加了SRAM块的分区,在进行卷积神经网络加速过程中,可以根据卷积神经网络的不同层的数据量的变化,动态分配各个数据的区间大小,从而可以提高加速器中的SRAM块存储空间的利用率。
可选地,在本申请实施例中,控制器102,具体用于在进行第i层处理时基于寄存器101中存储的第i层数据的初始搬运信息和第i层本批次搬运数据的地址,确定DMA下一批次搬运数据的外部存储地址和在加速器中的缓存地址。
可选地,在本申请实施例中,DMA,用于在第i层计算过程中从外部存储中搬运一批次卷积核到SRAM块中,搬运K批次特征图到SRAM块中。计算单元,用于在第i层第k次计算时根据卷积核和第k批次搬运的特征图进行卷积计算,1≤k≤K。
需要说明的是,由于卷积神经网络的参数量巨大,通常寄存器中的SRAM块一次性存放不完卷积神经网络需要的数据。在本申请实施例中,进行重复搬运数据的处理。其中,特征图参数量小于卷积核参数量,网络越深层特征图参数量越大。特征图全部放在Soc(System on Chip,片上系统)片上存储,DMA仅搬运一批次卷积核放到SRAM块中,重复从外部存储中进行特征图搬运,然后每次搬运的特征图与加速器中缓存的卷积核做卷积,加速器中的SRAM块中够存储特征图,即可以复用卷积核,进而提高搬运效率。
可以理解,相关技术中,大部分的加速器主要依靠软件处理输入数据,而SRAM块的存储空间有限,图像数据需要分多次batch(batch是将数据集分成几个批,每个batch数据量为batch size)搬运放到SRAM块中,每次搬运结束中断信号拉高,软件监测到中断的情况下,配置下一次搬运的地址和长度,即每层的每批次DMA搬运的数据都需要软件控制配置地址和长度,控制各个模块是否工作,从而计算过程导致软件的工作量大且繁琐。
本申请实施例提供的卷积神经网络加速器,加速器内部设置了存储控制逻辑的寄存器,第一方面软件仅需要每层初始的时候配置一次即可,配置完成之后采用纯硬件控制数据流,逻辑硬件(即上述的控制器)根据前一次计算结束done信号拉高,控制配置DMA搬运起始地址、长度和地址偏移,即每层初始软件配置寄存器,本层后续搬运数据不再需要软件进行配置,减少了软件的工作量,缩短了软件控制的工作量,提高了加速效率。第二方面,加速器中的控制器基于初始配置的所需的加速模式,可以精确控制加速器中各个模块的使能信号,确保未参与计算的模块的使能信号不翻转,从而降低加速器的功耗。第三方面,加速器中增加了分区寄存器region,加速器中的DMA(硬件)可以根据寄存器中配置的初始搬运信息,将数据搬运到对应的SRAM块中的存储区域,不再需要软件每次搬运都进行控制。其中,软件可以根据卷积神经网络的各个层的数据量的变化在每层配置时动态分配各个数据区间大小,从而可以使得SRAM块的空间利用率最大化。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
上述加速器中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于电子设备中的处理器中,也可以以软件形式存储于电子设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种电子设备,该电子设备的内部结构图可以如图6所示。该电子设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的数据库用于存储数据。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现如上的一种加速方法。包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上的卷积神经网络加速器的加速。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可以实现如上加速器中的任一模块的功能。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (11)
1.一种卷积神经网络加速器,其特征在于,所述加速器与处理器总线连接,包括:寄存器、控制器、直接存储器访问模块DMA、N个静态随机存取存储器SRAM块以及N组计算单元;所述寄存器存储加速模式配置信息,以及所述处理器配置的加速模式选择信息、参数存储地址和初始搬运信息;所述加速模式配置信息指示加速器中包括的每个加速模式和所述每个加速模式所需的计算单元;所述加速模式选择信息指示卷积神经网络所需的加速模式;所述参数存储地址包括M个SRAM块,N和M均为大于1的整数,M≤N;
所述控制器根据所述初始搬运信息和本批次搬运信息,确定下一批次所述DMA待搬运数据的数据地址;
所述DMA根据所述待搬运数据的数据地址,从外部存储中分批次搬运数据到M个SRAM块中缓存;
M组计算单元对每批次所述M个SRAM块中缓存的数据进行并行计算,并将M个计算结果缓存在SRAM块中;
所述DMA将SRAM块中缓存的计算结果搬运到所述外部存储。
2.根据权利要求1所述的加速器,其特征在于,所述加速器中的加速模式包括以下至少一项:卷积转矩阵加速、卷积加速、深度卷积加速、池化加速、全连接加速以及矩阵乘加速;其中,寄存器中存储每个加速模式的使能开关和加速模式对应的计算单元使能开关;
所述控制器根据所述处理器配置的所述加速模式选择信息控制各个加速模式的使能开关和加速模式对应的计算单元使能开关是否闭合。
3.根据权利要求1所述的加速器,其特征在于,所述计算单元包括以下至少一类:
乘法器、加法累加树、偏执模块、量化模块、激活模块和池化模块。
4.根据权利要求1所述的加速器,其特征在于,所述参数存储地址为所述处理器基于所述卷积神经网络待处理的数据量配置的;
其中,所述参数存储地址包括以下至少一项:卷积核数据的地址区间、输入特征数据的地址区间、输出特征数据的地址区间以及临时数据的地址区间。
5.根据权利要求1所述的加速器,其特征在于,所述初始搬运信息包括:外部存储中的起始地址、传输长度以及地址偏移量;其中,传输长度指示每次搬运的数据长度。
6.根据权利要求1所述的加速器,其特征在于,所述外部存储中待搬运数据包括卷积核和特征图;所述待搬运数据的数据格式为目标格式,所述目标格式下图像数据的多个通道的同一位置的像素值顺序存储;
所述M组计算单元,具体用于同时计算同一像素点的多个通道。
7.根据权利要求1至6中任一项所述的加速器,其特征在于,
所述寄存器,具体用于存储所述处理器基于所述卷积神经网络的神经结构配置的第i层所需的加速模式、基于第i层待处理的数据量配置的第i层参数存储地址,以及第i层待搬运数据的初始搬运信息;
其中,所述第i层待搬运数据的初始搬运信息包括:第i层搬运的起始地址、第i层每次搬运的数据长度和第i层的地址偏移量;i为正整数。
8.根据权利要求7所述的加速器,其特征在于,
所述控制器,具体用于在进行第i层处理时基于所述寄存器中存储的第i层数据的初始搬运信息和所述第i层本批次搬运数据的地址,确定所述DMA模块下一批次搬运数据的外部存储地址和在所述加速器中的缓存地址。
9.根据权利要求7所述的加速器,其特征在于,
所述DMA,用于在所述第i层计算过程中从外部存储中搬运一批次卷积核到SRAM块中,搬运K批次特征图到SRAM块中;
所述计算单元,用于在所述第i层的第k次计算时根据卷积核和第k批次搬运的特征图进行卷积运算,1≤k≤K,k和K为整数。
10.根据权利要求1至6任一项所述的加速器,其特征在于,所述DMA和所述N个SRAM块的总带宽匹配;
所述DMA,具体用于在计算结束信号拉高之后,将外部存储的数据分批搬运到所述M个SRAM块中。
11.一种电子设备,包括:包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述电子设备的处理器与权利要求1至10中任一项所述的卷积神经网络加速器总线连接,所述电子设备执行所述计算机程序时实现权利要求1至10中任一项所述的卷积神经网络加速器的加速。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311579084.4A CN117291240B (zh) | 2023-11-24 | 2023-11-24 | 卷积神经网络加速器及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311579084.4A CN117291240B (zh) | 2023-11-24 | 2023-11-24 | 卷积神经网络加速器及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117291240A CN117291240A (zh) | 2023-12-26 |
CN117291240B true CN117291240B (zh) | 2024-03-15 |
Family
ID=89252047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311579084.4A Active CN117291240B (zh) | 2023-11-24 | 2023-11-24 | 卷积神经网络加速器及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117291240B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020061924A1 (zh) * | 2018-09-27 | 2020-04-02 | 华为技术有限公司 | 运算加速器和数据处理方法 |
CN111026688A (zh) * | 2019-12-09 | 2020-04-17 | 安徽芯智科技有限公司 | 一种基于命令链表的三维度dma传输方法 |
CN114519425A (zh) * | 2022-02-21 | 2022-05-20 | 南京广捷智能科技有限公司 | 一种规模可扩展的卷积神经网络加速系统 |
CN115018062A (zh) * | 2022-05-30 | 2022-09-06 | 南京航空航天大学 | 一种基于fpga的卷积神经网络加速器 |
CN116521088A (zh) * | 2023-05-26 | 2023-08-01 | 北京百度网讯科技有限公司 | 数据处理方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8787376B1 (en) * | 2008-03-17 | 2014-07-22 | Juniper Networks, Inc. | Systems and methods for accessing a multi-bank SRAM |
KR20210101982A (ko) * | 2020-02-11 | 2021-08-19 | 삼성전자주식회사 | 스토리지 장치 및 메모리 컨트롤러의 동작 방법 |
CN114282662A (zh) * | 2021-12-29 | 2022-04-05 | 杭州万高科技股份有限公司 | 基于Cortex-M处理器的卷积神经网络加速方法、系统和介质 |
-
2023
- 2023-11-24 CN CN202311579084.4A patent/CN117291240B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020061924A1 (zh) * | 2018-09-27 | 2020-04-02 | 华为技术有限公司 | 运算加速器和数据处理方法 |
CN111026688A (zh) * | 2019-12-09 | 2020-04-17 | 安徽芯智科技有限公司 | 一种基于命令链表的三维度dma传输方法 |
CN114519425A (zh) * | 2022-02-21 | 2022-05-20 | 南京广捷智能科技有限公司 | 一种规模可扩展的卷积神经网络加速系统 |
CN115018062A (zh) * | 2022-05-30 | 2022-09-06 | 南京航空航天大学 | 一种基于fpga的卷积神经网络加速器 |
CN116521088A (zh) * | 2023-05-26 | 2023-08-01 | 北京百度网讯科技有限公司 | 数据处理方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
《MPNA:A Massively-Parallel Neural Array Accelerator with Dataflow Optimization for Convolutional Neural Networks》;Muhammad Abdullah Hanif等;《arXiv》;全文 * |
《基于帧间数据复用的稀疏CNN加速器设计》;洪起润 等;《计算机工程》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117291240A (zh) | 2023-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
CN110348574B (zh) | 一种基于zynq的通用卷积神经网络加速结构及设计方法 | |
CN109102065B (zh) | 一种基于PSoC的卷积神经网络加速器 | |
CN109409511B (zh) | 一种用于动态可重构阵列的卷积运算数据流调度方法 | |
CN111242277B (zh) | 一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器 | |
CN108470009B (zh) | 处理电路及其神经网络运算方法 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
US20190026626A1 (en) | Neural network accelerator and operation method thereof | |
CN110222818B (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
CN108170640B (zh) | 神经网络运算装置及应用其进行运算的方法 | |
CN111831254A (zh) | 图像处理加速方法、图像处理模型存储方法及对应装置 | |
CN112905530B (zh) | 片上架构、池化计算加速器阵列、单元以及控制方法 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN109146065B (zh) | 二维数据的卷积运算方法及装置 | |
CN108304925B (zh) | 一种池化计算装置及方法 | |
CN110991630A (zh) | 一种面向边缘计算的卷积神经网络处理器 | |
CN113222130A (zh) | 一种基于fpga的可重构卷积神经网络加速器 | |
CN110414672B (zh) | 卷积运算方法、装置及系统 | |
CN112149047A (zh) | 数据的处理方法及装置、存储介质和电子装置 | |
CN113837922A (zh) | 计算装置、数据处理方法及相关产品 | |
CN117291240B (zh) | 卷积神经网络加速器及电子设备 | |
CN111191774B (zh) | 面向精简卷积神经网络的低代价加速器架构及其处理方法 | |
CN113627587A (zh) | 一种多通道式卷积神经网络加速方法及装置 | |
CN115081600A (zh) | 执行Winograd卷积的变换单元、集成电路装置及板卡 | |
Kong et al. | A high efficient architecture for convolution neural network accelerator |
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 |