CN110738308B - 一种神经网络加速器 - Google Patents

一种神经网络加速器 Download PDF

Info

Publication number
CN110738308B
CN110738308B CN201910900439.2A CN201910900439A CN110738308B CN 110738308 B CN110738308 B CN 110738308B CN 201910900439 A CN201910900439 A CN 201910900439A CN 110738308 B CN110738308 B CN 110738308B
Authority
CN
China
Prior art keywords
module
data processing
processing module
channel
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.)
Active
Application number
CN201910900439.2A
Other languages
English (en)
Other versions
CN110738308A (zh
Inventor
陈小柏
赖青松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN201910900439.2A priority Critical patent/CN110738308B/zh
Publication of CN110738308A publication Critical patent/CN110738308A/zh
Application granted granted Critical
Publication of CN110738308B publication Critical patent/CN110738308B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种神经网络加速器,所述的神经网络加速器用于外接全局控制模块、第一直接内存访问模块DMA、存储器;所述神经网络加速器包括第二直接内存访问模块DMA、卷积模块、单数据处理模块、平面数据处理模块、通道数据处理模块、概率计算模块,并采用流水线方式进行依次连接;所述卷积模块对数据进行乘加运算;单数据处理模块进行归一化、比例运算、激活函数处理;平面数据处理模块进行最大池化、最小池化、平均池化处理;通道数据处理模块进行通道拼接、面重排、矩阵置换处理;概率计算模块找出数据中最大的5个值,并完成5个最大值的概率运算;所述第二DMA将数据传输给卷积模块;所述卷积模块、通道数据处理模块共享一个DMA控制总线。

Description

一种神经网络加速器
技术领域
本发明涉及集成电路技术领域,更具体的,涉及一种神经网络加速器。
背景技术
卷积神经网络(CNN)是深度学习的重要算法,在计算机视觉特别是图像识领域有着非常广泛的应用。目前几乎所有的识别和检测问题都把卷积神经网络作为首选方法,世界上各个IT巨头也都争相展开了相关研究。
从计算机的角度来看,图像实际上是一个二维矩阵,卷积神经网络所做的工作就是采用卷积、池化等操作从二维数组中提取特征,并对图像进行识别。理论上来说,只要是能转换成二维矩阵的数据,都可以利用卷积神经网络来识别和检测。比如声音文件,可以分割成很短的分段,每段音阶的高低可以转换成数字,这样整段的声音文件就可以转换为二维矩阵,类似的还有自然语言中的文本数据,医药实验中的化学数据等等,都可以利用卷积神经网络来实现识别和检测。
相较于传统算法,CNN需要较高的运算量与带宽需求。目前主要依靠中央处理器(CPU)阵列、图形处理器(GPU)阵列完成计算。然而,CPU、GPU等通用处理器不能充分利用卷积神经网络的特点,因此导致运算效率较低,带来了较大的功耗、成本开销。此外,如今愈发需要在终端设备上以低成本、低功耗、高性能来完成人工智能算法的计算,而现有通用处理器无法满足该需求。
发明内容
本发明为了解决现有技术不能充分利用卷积神经网络的特点,导致神经网络运算效率低问题,提供了一种神经网络加速器,其能提高神经网络的运算效率,节省运算时间。
为实现上述本发明目的,采用的技术方案如下:一种神经网络加速器,所述的神经网络加速器用于外接全局控制模块、第一直接内存访问模块DMA、存储器;所述神经网络加速器包括第二直接内存访问模块DMA、卷积模块、单数据处理模块、平面数据处理模块、通道数据处理模块、概率计算模块;
所述卷积模块对输入数据进行乘加运算;
所述单数据处理模块用于对数据依次进行归一化、激活函数、比例运算处理;
所述平面数据处理模块用于对数据进行最大池化、最小池化、平均池化处理;
所述通道数据处理模块用于对数据进行通道拼接、面重排、矩阵置换处理;
所述概率计算模块用于找出数据中最大的5个值,并完成5个最大值的概率运算;
所述的卷积模块、单数据处理模块、平面数据处理模块、通道数据处理模块、概率计算模块采用流水线方式进行连接;所述第二DMA将数据传输给卷积模块;
所述卷积模块、通道数据处理模块共享一个DMA控制总线。
优选地,所述卷积模块、单数据处理模块、平面数据处理模块、概率计算模块、通道数据处理模块均设置有旁路bypass选项;
当运算只需要卷积模块和单数据处理模块时,旁路平面数据处理模块、通道数据处理模块、概率计算模块;
当运算只需要卷积模块时,旁路单数据处理模块、平面数据处理模块、通道数据处理模块、概率计算模块。
进一步地,所述第二直接内存访问模块DMA通过AXI通信协议与存储器通信连接;所述全局控制模块设有指令FIFO;所述第一直接内存访问模块DMA由CPU控制,将数据加载进存储器中,将指令加载进全局控制模块中的FIFO;全部加载完毕后启动全局控制模块开始运算,所述神经网络加速器通过第二DMA读取数据进行运算,运算完后返回中断到CPU,并通过第二DMA将运算得到的数据存入存储器中,CPU通过第一DMA读取运算得到的数据。
再进一步地,所述的数据包括特征、权重;所述特征在存储器内部按照N通道排列方式进行存储,所述的特征为三维矩阵,其宽度为Wi,高度为Hi,通道数量为C,排列顺序按N通道排列,且每N个通道的特征在存储器里面按连续地址存储;所有N的累加和等于C;所述的N为2的次幂。
再进一步地,所述全局控制模块包括指令FIFO;所述全局控制模块收到启动命令后从指令FIFO取出指令分发到卷积模块、单数据处理模块、平面数据处理模块、概率计算模块;
每条指令为256字节,其中,第0~3个字节表示模块使能选项,代表是否需要使用该模块;第4~67个字节表示卷积模块控制信息,包括特征高度、宽度、通道、卷积核尺寸、卷积步进、卷积填充信息;第68~131字节表示通道数据处理模块控制信息,包括特征高度、宽度、通道、重排模式信息;第132~163字节表示单数据处理模块控制信息,包括征高度、宽度、通道、运算模式、参数大小信息;第164~195字节表示平面数据处理模块控制信息,包括特征高度、宽度、通道、尺寸、池化步进、池化填充信息;第196~227字节表示概率计算模块控制信息,包括分类长度信息。
再进一步地,所述卷积模块包括DMA控制器、数据分流模块、乒乓RAM、RAM读取模块、条带列阵模块、块累加模块、寄存器模块;
所述DMA控制器用于控制DMA从存储器中读取数据;数据经过数据分流模块将特征和权重分离,然后缓存入乒乓RAM;所述RAM读取模块从乒乓RAM读取特征和权重给到条带阵列模块进行运算处理,运算结果经过块累加模块输出;所述寄存器模块通过全局控制模块接收来自CPU的指令,从而控制所述的卷积模块运算。
再进一步地,所述乒乓RAM包括特征RAM、权重RAM;所述特征RAM包括两个连续输出RAM,分别记为ramA、ramB,其中所述连续输出RAM包括Mk个子RAM;所述权重RAM包括ramA′、ramB′;
所述乒乓RAM采用连续缓存的方式,即将特征缓存入ramA,当RAM读取模块读取ramA中的特征时,同时ramB缓存入下一个特征,RAM读取模块读取完ramA中的特征时接着读取ramB中的特征;
同理,将权重缓存入ramA′中,当RAM读取模块读取ramA′中的权重时,同时ramB′缓存入下一个权重,RAM读取模块读取完ramA′中的权重时接着读取ramB′中的权重;
所述条带阵列模块包括Mk个PE运算单元,所述的PE运算单元包括Tk*Tk/2个乘法器。
再进一步地,所述平面数据处理模块首先对特征数据进行宽度方向池化运算,平面数据处理模块设有N个宽度方向运算单元并行运算N个通道;
然后再对特征数据进行高度方向池化运算,同样设有N个高度方向运算单元并行运算N个通道。
再进一步地,所述通道数据处理模块包括用于BUF缓存器、2个选择器、设置在2个选择器之间的重排算子;所述重排算子包括通道拼接算子、面重排算子、矩阵置换算子;
所述通道拼接算子用于将两个矩阵通道方向拼接起来,其中两个矩阵通道具有相同的高度H和宽度W,通道不一定相同,经过通道拼接后变成一个新的特征,其高度为H,宽度为W,通道为C0+C1,其中C0、C1表示不同矩阵通道的通道数量;
所述面重排算子用于将一个特征每个面重新排列顺序,变成四个面,经过面重排后,变成一个新的特征,其高度为H/2,宽度为W/2,通道为C*4;其中H表示原特征的高度,W表示原特征的宽度,C表示原特征的通道;
所述矩阵置换算子用于改变矩阵的维度,将特征的维度顺序进行置换,得到不同的维度顺序。
再进一步地,所述概率计算模块包括top5_comp模块、概率运算单元、reg寄存器;所述top5_comp模块采用向下查找法寻找输入的数据流中5个最大值;所述概率运算单元对得到的5个最大值进行概率运算,将得到的运算结果通过reg寄存器传输给第二DMA;
其中所述的概率运算具体公式如下:
Figure BDA0002211665050000041
式中,xi表示输入的分类数据。
本发明的有益效果如下:
1.本发明对神经网络运算分类,分成四种,单数据处理模块、平面数据处理模块、通道数据处理模块,使得整个神经网络加速器模块化,运算更高效。同时相较于传统中央处理器CPU作为总控制器,使用全局控制模块作为指令分发器,处理更迅速。
2.本发明在卷积模块、数据处理模块、平面数据处理模块、通道数据处理模块、概率计算模块之间采用流水线方法作业,避免了频繁的存储器缓存操作,节省了运算时间。
3.本发明所述卷积模块采用自主控制第二DMA的方式,读取存储器的速度更快,所述卷积模块采用条带阵列层进行运算,其能支持任意卷积核大小。
附图说明
图1是实施例1所述神经网络加速器的结构示意图。
图2是实施例1所述CPU控制流程。
图3是实施例1中的特征的N通道排列方式示意图。
图4是实施例1中的Glb控制流程。
图5是实施例1中的卷积模块的结构示意图。
图6是实施例1单数据处理模块的结构示意图。
图7是实施例1平面数据处理模块的结构示意图。
图8是实施例1通道数据处理模块的结构示意图。
图9是图8中通道拼接的示意图。
图10是图8中面重排的示意图。
图11是图8中矩阵置换的示意图。
图12是实施例1中的概率计算模块的结构示意图。
图13是图12中的top5_comp模块的工作原理示意图。
图14是实施例1旁路Pdp和Softmax的示意图。
图15是实施例1旁路Sdp、Pdp和Softmax的示意图。
图16是实施例2中所述特征feature分割示意图。
图17是实施例2中所述乒乓RAM缓存示意图。
图18是实施例2中所述连续输出RAM地址输出、输出示意图。
图19是实施例2中所述乘法器运算示意图。
图20是实施例2中所述条带阵列模块结构示意图。
图21是实施例2中所述条带阵列模块运算示意图。
具体实施方式
下面结合附图和具体实施方式对本发明做详细描述。
实施例1
如图1所示,一种神经网络加速器,所述的神经网络加速器用于外接全局控制模块Glb、第一直接内存访问模块DMA、存储器DDR3;所述神经网络加速器包括第二直接内存访问模块DMA、卷积模块conv、单数据处理模块sdp、平面数据处理模块pdp、通道数据处理模块cdp、概率计算模块softmax;
所述卷积模块conv对输入数据进行乘加运算;
所述单数据处理模块sdp用于对数据依次进行归一化、激活函数、比例运算处理;
所述平面数据处理模块pdp用于对数据进行最大池化、最小池化、平均池化处理;
所述通道数据处理模块cdp用于对数据进行通道拼接、面重排、矩阵置换处理;
所述概率计算模块softmax用于找出数据中最大的5个值,并完成5个最大值的概率运算;
所述的卷积模块、单数据处理模块、平面数据处理模块、通道数据处理模块、概率计算模块采用流水线方式进行连接;所述第二DMA将数据传输给卷积模块;
所述卷积模块、通道数据处理模块共享一个DMA控制总线。
如图1所示,所述第二直接内存访问模块DMA通过AXI通信协议与存储器通信连接;所述全局控制模块设有指令FIFO;所述第一直接内存访问模块DMA由CPU控制,将数据加载进存储器中,将指令加载进全局控制模块中的FIFO;全部加载完毕后启动全局控制模块开始运算,所述神经网络加速器通过第二DMA读取数据进行运算,运算完后返回中断到CPU,并通过第二DMA将运算得到的数据存入存储器中,CPU通过第一DMA读取运算得到的数据。所述的数据包括特征feature、权重weight。
本实施例CPU预先计算好神经网络加速器需要运算的特征feature、权重weight和所有指令,然后通过第一DMA加载进来,将特征feature、权重weight加载进DDR3,将指令是加载进全局控制模块Glb中的指令FIFO,全部加载完毕后启动Glb开始运算,加速器运算完毕后会返回中断到CPU,然后CPU读取概率计算模块softmax的运算结果即可。CPU控制流程图如图2所示。
本实施例的数据存储结构决定了神经网络加速器的性能,本实施例所述的特征Feature在DDR3内部的存储结构按照N通道排列方式存储在DDR3,如图3所示,特征Feature总通道数量为C,按N通道排列,每N个通道的特征Feature在DDR3里面按连续地址存储。所有N的累加和等于C。N通常为2的次幂,例如2、4、8、16、32等,按N通道排列的好处有两点,第一是DDR3读写操作是突发传输的,必须要字节对齐,通常是8字节、16字节、32字节对齐,单个特征Feature数量有时不是字节对齐,但是N通道的特征Feature总和一定是字节对齐的;第二是各模块运算可以并行运算N个数据,非常利于算法的加速。
存储器DDR3存储的特征Feature,其大小为宽度Wi,高度Hi,通道数量C,排列顺序按N通道排列,第1个N通道的特征Feature存储在第一部分连续地址,第2个N通道特征Feature存储在第二部分连续地址,依次类推。所有N的总和等于C。
本实施例所述全局控制模块包括指令FIFO,所述的全局控制模块Glb收到启动命令后从指令FIFO取出指令分发到卷积模块、单数据处理模块、平面数据处理模块、通道数据处理模块、概率计算模块。每条指令定为256字节,指令包括模块enable使能选项和模块寄存器,并不是所有模块都要分发寄存器,只有当该模块enbale使能了才会分发寄存器。
每条指令需要包含卷积模块、单数据处理模块、平面数据处理模块、通道数据处理模块、概率计算模块这五个模块的控制信息,其中,第0~3个字节表示模块使能选项,代表是否需要使用该模块;第4~67个字节表示卷积模块conv控制信息,包括特征feature高度、宽度、通道、卷积核尺寸、卷积步进stride、卷积填充padding信息;第68~131字节表示通道数据处理模块Cdp控制信息,包括特征feature高度、宽度、通道、重排模式信息;第132~163字节表示单数据处理模块控制信息,包括征feature高度、宽度、通道、运算模式、参数大小信息;第164~195字节表示平面数据处理模块Pdp控制信息,包括特征feature高度、宽度、通道、尺寸、池化步进stride、池化填充padding信息;第196~227字节表示Softmax概率计算模块控制信息,包括分类长度信息。
一条指令可以处理一次完整的数据流,从存储器DDR3读出经过运算再写回DDR3代表一次完整的数据流。Glb控制流程图如图4所示,神经网络加速器一次运算包含多条指令,每条指令运算完毕后需要分发下一条,直到所有指令处理完毕。
使用全局控制模块Glb作为指令分发器的好处在于,往往一次神经网络的运算少则10级条指令,多则100多条指令,如果使用CPU作为控制器,那么神经网络加速器一次运算CPU需要中断响应很多次,配置加速器很多次,不仅影响了CPU的性能,也影响了神经网络加速器的性能。
本实施例所述卷积模块Conv是所述神经网络加速器最核心的模块,也是决定了神经网络加速器的性能,因此卷积模块的卷积运算包含了大量的乘加运算,运算效率往往是卷积模块的瓶颈,如何提升运算效率是卷积模块重点需要研究的内容,运算效率由两点决定,第一是减少运算的静止时间,第二是提升每个时钟周期运算次数。本实施例所述的卷积模块Conv对这两点同时进行了深度优化,运算效率达到很高。
如图5所示,所述卷积模块包括DMA控制器、数据分流模块、乒乓RAM、RAM读取模块、条带列阵模块、块累加模块、寄存器模块;
所述DMA控制器用于控制DMA从存储器中读取数据;数据经过数据分流模块将特征和权重分离,然后缓存入乒乓RAM;所述RAM读取模块从乒乓RAM读取特征和权重给到条带阵列模块进行运算处理,运算结果经过块累加模块输出;所述寄存器模块通过全局控制模块接收来自CPU的指令,从而控制所述的卷积模块运算。
如图5所示,所述乒乓RAM包括特征RAM、权重RAM;所述特征RAM包括两个连续输出RAM,分别记为ramA、ramB,其中所述连续输出RAM包括Mk个子RAM;所述权重RAM包括ramA′、ramB′;
所述乒乓RAM采用连续缓存的方式,即将特征缓存入ramA,当RAM读取模块读取ramA中的特征时,同时ramB缓存入下一个特征,RAM读取模块读取完ramA中的特征时接着读取ramB中的特征;
同理,将权重缓存入ramA′中,当RAM读取模块读取ramA′中的权重时,同时ramB′缓存入下一个权重,RAM读取模块读取完ramA′中的权重时接着读取ramB′中的权重;
所述条带阵列模块包括Mk个PE运算单元,所述的PE运算单元包括Tk*Tk/2个乘法器。
如图6所示为单数据处理模块的结构示意图,所述的单数据处理模块依次对进行数据归一化处理、激活函数处理、比例运算处理,其中所述的激活函数包括Sigmoid函数、tanh函数、ReLU函数,本实施例使用ReLU函数作为激活函数。
如图7所示,所述平面数据处理模块首先对特征数据进行宽度方向池化运算,平面数据处理模块设有N个宽度方向运算单元并行运算N个通道;
然后再对特征数据进行高度方向池化运算,同样设有N个高度方向运算单元并行运算N个通道。
所述的平面数据处理模块处理最大池化max pooling、最小min pooling、平均值池化average pooling池化操作。
如图8所示,所述通道数据处理模块包括用于BUF缓存器、2个选择器、设置在2个选择器之间的重排算子;所述重排算子包括通道拼接算子、面重排算子、矩阵置换算子;
数据输入先缓存至BUF缓存器中的RAM,然后使用一个选择器选择数据进行哪种重排算子。
如图9所示,所述通道拼接算子用于将两个矩阵通道方向拼接起来,其中两个矩阵通道具有相同的高度H和宽度W,通道不一定相同,经过通道拼接后变成一个新的特征,其高度为H,宽度为W,通道为C0+C1,其中C0、C1表示不同矩阵通道的通道数量;
如图10所示,所述面重排算子用于将一个特征每个面重新排列顺序,变成四个面,经过面重排后,变成一个新的特征,其高度为H/2,宽度为W/2,通道为C*4;其中H表示原特征的高度,W表示原特征的宽度,C表示原特征的通道;
如图11所示,所述矩阵置换算子用于改变矩阵的维度,将特征的维度顺序进行置换,得到不同的维度顺序。
如图12所示,所述概率计算模块包括top5_comp模块、概率运算单元、reg寄存器;所述top5_comp模块采用向下查找法寻找输入的数据流中5个最大值;其中所述top5_comp模块的工作原理如图13所示,由若干个比较器、若干个与门模块、MAX1模块、MAX2模块、MAX3模块、MAX4模块、MAX5模块构成的具有逻辑判断功能的模块,MAX1寻找只需要判断输入数据大于MAX1即可更新最大值;MAX2寻找需要判断输入数据既大于MAX2同时小于MAX1即可更新最大值;MAX3寻找需要判断输入数据既大于MAX3同时小于MAX2即可更新最大值;MAX4寻找需要判断输入数据既大于MAX4同时小于MAX3即可更新最大值;MAX5寻找需要判断输入数据既大于MAX5同时小于MAX4即可更新最大值。
所述概率运算单元对得到的5个最大值进行概率运算,将得到的运算结果通过reg寄存器传输给第二DMA;
其中所述的概率运算具体公式如下:
Figure BDA0002211665050000091
式中,xi表示输入的分类数据。
本实施例所述卷积模块、单数据处理模块、平面数据处理模块、概率计算模块、通道数据处理模块均设置有旁路bypass选项;
如图14所示,当运算只需要卷积模块和单数据处理模块时,旁路平面数据处理模块、通道数据处理模块、概率计算模块;
如图15所示,当运算只需要卷积模块时,旁路单数据处理模块、平面数据处理模块、通道数据处理模块、概率计算模块。
实施例2
本实施例所述卷积模块,其具体的运算方法包括以下步骤:
S1:设置权重weight单个卷积核寸尺为size×size;其中,size=1、2、3…n,条带阵列的PE运算单元的数量为Mk;本实施例设Mk=5;
S2:由于特征feature太大无法一次性加载至乒乓RAM,因此需要对特征feature进行分割,分割示意图如图16所示,本实施例需要对两个方向进行分割。第一个是高度H方向分割,分割成m份,m为正整数;例如本实施例分成4分,那么H0+H1+H2+H3=H;第二是通道方向分割,分割成m份,本实施例一共将特征feature分割成m*m份。例如本实施例分成4份,那么C0+C1+C2+C3=C,整个特征feature分割成4×4=16份子特征;
S3:所述DMA控制器计算每一份子特征的地址、权重的地址,并通过DMA从存储器中读取子特征、权重,通过数据分流模块将子特征、权重进行分离;
S4:将每一份子特征分成Mk份,缓存在连续输出RAM中的Mk个子RAM中,其中,每个子RAM中存有1/Mk份子特征的数据;
其中所述子特征缓存在特征RAM中的具体步骤如下:
A1:所述DMA读取上个地址的子特征分成Mk份,分别存入ramA中Mk个子RAM中,其中每个子RAM存有1/Mk份子特征的数据;
A2:在RAM读取模块根据地址计算公式,顺序读取出ramA中Mk个子RAM中数据,组成子特征的同时,DMA将下个地址的子特征分成Mk份,分别存入ramB中Mk个子RAM,其中每个子RAM存有1/Mk份子特征的数据;
A3:当RAM读取模块读取完ramA中的子特征后,接着RAM读取模块根据地址计算公式,顺序读取ramB中Mk个子RAM中数据,组成子特征;
A4:重复以上步骤,直到读取完子特征。
本实施例以子特征feature为例,首先DMA读取子特征feature0存入ramA,然后条带阵列计算子特征feature0,此时DMA同时将子特征feature1存入ramB,当条带阵列计算完子特征feature0之后,接着计算子特征feature1,特征RAM缓存示意图17所示,整个运算无缝衔接,有效提高效率。
本实施例在RAM读取模块读取每个连续输出RAM子特征时,能同时读取Mk个子RAM中的数据,实现快速读取。
同时DMA将权重缓存在权重RAM中;
其中,所述权重缓存在权重RAM中的具体步骤如下:
B1:所述DMA读取上个地址的权重存入ramA′;
B2:在PE运算单元通过RAM读取模块读取ramA′中的权重的同时,DMA将下个地址的权重存入ramB′;
B3:当PE运算单元读取完ramA′中的权重后,接着读取ramB′中的权重;
B4:重复以上步骤,直到读取完权重。
同理,本实施例实现无缝衔接的读取权重,实现有效的提高运算效率。
S5:RAM读取模块根据地址计算公式计算连续输出RAM中Mk个子RAM中的数据,顺序读取并组成一份子特征;同时RAM读取模块读取在权重RAM中的权重;
本实施例所述地址计算公式如下:
将address=(wr_addr/Mk)
Wri-1_en=((wr_addr%Mk)=i-1)
写入第i-1个ram中;
其中i=1、2、…、Mk;wr_addr表示写进子RAM的地址,Wri-1_en表示第i-1个子RAM的写使能信号;
所述条带列阵读取数据,即连续输出RAM连续输出Mk个连续数据地址和与地址对应的数据具体如下:
address=(rd_addr/Mk)+((rd_addr/Mk)>0)
rdi-1_en=i-1
其中,rd_addr表示读子RAM的地址,rdi-1_en表示第i-1个子RAM的读使能信号。
本实施例以条带阵列的输入是连续5个数据,即Mk=5;这就需要乒乓RAM可以一个时钟周期输出任意5个连续地址数据,因此需要快速的从特征RAM中读取子特征,本实施例以其中一个连续输出RAM为例说明子特征缓存入5个子RAM,并读取子特征的过程,如图18所示,所述连续输出RAM能实现一进连续多出,原理是连续输出RAM包括5个RAM,分别记为ram0、ram1、ram2、ram3、ram4,根据以上地址计算公式,将子特征分成5份分别写入这5个子RAM,其中,每个子RAM中存有1/5份子特征,读取的时候5个子RAM会同时,通过顺序组合输出一个子特征数据,达到输出连续地址的数据效果。
S6:所述PE运算单元获取RAM读取模块输入的子特征、权重;PE运算单元中的乘法器对输入的子特征、权重进行乘法运算,得到相应的运算结果;
本实施例所述的子特征feature是8位,权重weight是8位,因此卷积运算是8*8。现有技术Xilinx FPGA内部乘法器位宽通常是18*25,实现两个乘法运算A*B和A*C传统上需要2个乘法器。
本实施例所述PE运算单元中乘法器对输入的子特征、权重进行乘法运算,如图19所示,本实施例所述乘法器运算法则如下:对权重C左移16位再加上下一个地址的权重B,然后再跟子特征A相乘,得到的结果低16bit是特子征A*权重B的结果,高位则是子特征A*权重C的结果,最后将这两个乘法结果分离出来各自累加;通过这种方法,本实施例实现了一个乘法器做2个乘法运算,大大提升了乘法器的利用效率。所述的权重C、权重B表示输入到乘法器的权重数据;所述子特征A表示根据地址计算公式输入到乘法器的子特征数据。
S7:块累加模块对高度H方向子特征的运算结果进行累加后输出。
本实施例所述RAM读取模块每个时钟周期读取Mk个子特征、Tk个权重,分别输入到Mk个PE运算单元进行乘法运算,对应每个PE运算单元一个时钟周期获取一个子特征、Tk个权重,实现每个PE运算单元一个时钟周期运算一个子特征、Tk个权重,从而得到Tk个结果;所述Mk个PE运算单元并行运算,实现一个计算周期输出Mk*Tk个运算结果;所述一个计算周期为size*size个时钟周期,因此计算一个输入子特征feature的时间为:
Time=W*H*C*(size*size)/(Mk*Tk),单位:时钟周期
其中W为输入子特征feature长度,H为输入子特征feature高度,C为输入子特征feature通道数量;size为权重的大小。
由此可见,当Mk和Tk越大时,计算时间越小。
本实施例所述条带阵列模块如图20所示,包括多个PE运算单元,每个PE单元对Tk个输入特征feature和Tk个权重weight的运算操作。由于一个PE运算单元包括Tk*Tk/2个乘法器,因为一个乘法器可以完成两个乘法运算,因此一个PE运算单元一个时钟周期可以完成Tk*Tk个乘法运算。所述条带阵列模块包括Mk个PE运算单元,因此整个条带阵列模块一共设有Mk*Tk*Tk/2个乘法器,一个时钟周期可以完成Mk*Tk*Tk个乘法运算。
本实施例以xilinx ZU4CG芯片为例,该芯片总共有728个乘法器,我们将Mk配置成5,Tk配置成16,那么条带阵列消耗5*16*16/2=640个乘法器,调用率达到87.9%,非常高。
本实施例条带阵列PE运算单元的数量Mk可以任意配置,因为所有的PE运算单元用来计算同一行数据,每个PE运算单元将乘法器运算结果进行累加,经过每个卷积核大小size*size时钟周期,Mk个运算单元得到Mk个运算结果。
本实施例每一个PE运算单元对输入子特征feature并行与权重weight0~weight(Tk-1)进行乘法器运算,实现一个计算周期得到Tk个运算结果。
本实施例设有5个PE运算单元,其中5个PE单元并行计算输入子特征feature并行与权重weight,每个计算周期得出5个运算结果;因此每个计算周期得到Tk*5个运算结果。
如图21所示,为本实施例由Mk个PE运算单元构成的条带阵列运算示意图,本实施例以10*10的特征feature为例,设权重weight单个卷积核size为3*3,Mk=5,clk为时钟信号,1~9表示9个时钟周期,第1个时钟周期PE0计算0*w0,PE1计算1*w0,PE2计算2*w0,PE3计算3*w0,PE4计算4*w0;第2个时钟周期PE0计算1*w1,PE1计算2*w1,PE2计算3*w1,PE3计算4*w1,PE4计算5*w1;第3个时钟周期PE0计算2*w2,PE1计算3*w2,PE2计算4*w2,PE3计算5*w2,PE4计算6*w2;依次类推,每个PE运算单元将每个时钟周期运算结果进行累加,最终9个时钟周期后得出5个运算结果F0~F4。
上述实例卷积核是3*3,条带阵列经过9个时钟周期后得出5个结果F0~F4;当权重weight单个卷积核size是5*5时,条带阵列经过25个时钟周期得出5个结果F0~F4;当权重weight单个卷积核size是7*7时,条带阵列经过49个时钟周期得出5个结果F0~F4;因此利用此方法可以支持任意的卷积核大小,并且无论何种卷积核,所有的乘法器都能用上,利用率100%。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

Claims (10)

1.一种神经网络加速器,所述的神经网络加速器用于外接全局控制模块、第一直接内存访问模块DMA、存储器;其特征在于:所述神经网络加速器包括第二直接内存访问模块DMA、卷积模块、单数据处理模块、平面数据处理模块、通道数据处理模块、概率计算模块;
所述卷积模块对输入数据进行乘加运算;
所述单数据处理模块用于对数据依次进行归一化、激活函数、比例运算处理;
所述平面数据处理模块用于对数据进行最大池化、最小池化、平均池化处理;
所述通道数据处理模块用于对数据进行通道拼接、面重排、矩阵置换处理;
所述概率计算模块用于找出数据中最大的5个值,并完成5个最大值的概率运算;
所述的卷积模块、单数据处理模块、平面数据处理模块、通道数据处理模块、概率计算模块采用流水线方式进行连接;所述第二直接内存访问模块DMA将数据传输给卷积模块;
所述卷积模块、通道数据处理模块共享一个DMA控制总线。
2.根据权利要求1所述的神经网络加速器,其特征在于:所述卷积模块、单数据处理模块、平面数据处理模块、概率计算模块、通道数据处理模块均设置有旁路bypass选项;
当运算只需要卷积模块和单数据处理模块时,旁路平面数据处理模块、通道数据处理模块、概率计算模块;
当运算只需要卷积模块时,旁路单数据处理模块、平面数据处理模块、通道数据处理模块、概率计算模块。
3.根据权利要求1所述的神经网络加速器,其特征在于:所述第二直接内存访问模块DMA通过AXI通信协议与存储器通信连接;所述全局控制模块设有指令FIFO;所述第一直接内存访问模块DMA由CPU控制,将数据加载进存储器中,将指令加载进全局控制模块中的FIFO;全部加载完毕后启动全局控制模块开始运算,所述神经网络加速器通过第二直接内存访问模块DMA读取数据进行运算,运算完后返回中断到CPU,并通过第二直接内存访问模块DMA将运算得到的数据存入存储器中,CPU通过第一直接内存访问模块DMA读取运算得到的数据。
4.根据权利要求2或3任一项所述的神经网络加速器,其特征在于:所述的数据包括特征、权重;所述特征在存储器内部按照N通道排列方式进行存储,所述的特征为三维矩阵,其宽度为Wi,高度为Hi,通道数量为C,排列顺序按N通道排列,且每N个通道的特征在存储器里面按连续地址存储;所有N的累加和等于C;所述的N为2的次幂。
5.根据权利要求4所述的神经网络加速器,其特征在于:所述全局控制模块包括指令FIFO;所述全局控制模块收到启动命令后从指令FIFO取出指令分发到卷积模块、单数据处理模块、平面数据处理模块、概率计算模块;
每条指令为256字节,其中,第0~3个字节表示模块使能选项,代表是否需要使用该模块;第4~67个字节表示卷积模块控制信息,包括特征高度、宽度、通道、卷积核尺寸、卷积步进、卷积填充信息;第68~131字节表示通道数据处理模块控制信息,包括特征高度、宽度、通道、重排模式信息;第132~163字节表示单数据处理模块控制信息,包括征高度、宽度、通道、运算模式、参数大小信息;第164~195字节表示平面数据处理模块控制信息,包括特征高度、宽度、通道、尺寸、池化步进、池化填充信息;第196~227字节表示概率计算模块控制信息,包括分类长度信息。
6.根据权利要求4所述的神经网络加速器,其特征在于:所述卷积模块包括DMA控制器、数据分流模块、乒乓RAM、RAM读取模块、条带列阵模块、块累加模块、寄存器模块;
所述DMA控制器用于控制DMA从存储器中读取数据;数据经过数据分流模块将特征和权重分离,然后缓存入乒乓RAM;所述RAM读取模块从乒乓RAM读取特征和权重给到条带阵列模块进行运算处理,运算结果经过块累加模块输出;所述寄存器模块通过全局控制模块接收来自CPU的指令,从而控制所述的卷积模块运算。
7.根据权利要求6所述的神经网络加速器,其特征在于:所述乒乓RAM包括特征RAM、权重RAM;所述特征RAM包括两个连续输出RAM,分别记为ramA、ramB,其中所述连续输出RAM包括Mk个子RAM;所述权重RAM包括ramA′、ramB′;
所述乒乓RAM采用连续缓存的方式,即将特征缓存入ramA,当RAM读取模块读取ramA中的特征时,同时ramB缓存入下一个特征,RAM读取模块读取完ramA中的特征时接着读取ramB中的特征;
同理,将权重缓存入ramA′中,当RAM读取模块读取ramA′中的权重时,同时ramB′缓存入下一个权重,RAM读取模块读取完ramA′中的权重时接着读取ramB′中的权重;
所述条带阵列模块包括Mk个PE运算单元,所述的PE运算单元包括Tk*Tk/2个乘法器。
8.根据权利要求7所述的神经网络加速器,其特征在于:所述平面数据处理模块首先对特征数据进行宽度方向池化运算,平面数据处理模块设有N个宽度方向运算单元并行运算N个通道;
然后再对特征数据进行高度方向池化运算,同样设有N个高度方向运算单元并行运算N个通道。
9.根据权利要求8所述的神经网络加速器,其特征在于:所述通道数据处理模块包括用于BUF缓存器、2个选择器、设置在2个选择器之间的重排算子;所述重排算子包括通道拼接算子、面重排算子、矩阵置换算子;
所述通道拼接算子用于将两个矩阵通道方向拼接起来,其中两个矩阵通道具有相同的高度H和宽度W,通道不一定相同,经过通道拼接后变成一个新的特征,其高度为H,宽度为W,通道数量为C0+C1,其中C0、C1表示不同矩阵通道的通道数量;
所述面重排算子用于将一个特征每个面重新排列顺序,变成四个面,经过面重排后,变成一个新的特征,其高度为H/2,宽度为W/2,通道数量为C*4;其中H表示原特征的高度,W表示原特征的宽度,C表示原特征的通道数量;
所述矩阵置换算子用于改变矩阵的维度,将特征的维度顺序进行置换,得到不同的维度顺序。
10.根据权利要求8所述的神经网络加速器,其特征在于:所述概率计算模块包括top5_comp模块、概率运算单元、reg寄存器;所述top5_comp模块采用向下查找法寻找输入的数据流中5个最大值;所述概率运算单元对得到的5个最大值进行概率运算,将得到的运算结果通过reg寄存器传输给第二直接内存访问模块DMA;
其中所述的概率运算具体公式如下:
Figure FDA0004091716200000041
式中,xi表示输入的分类数据。
CN201910900439.2A 2019-09-23 2019-09-23 一种神经网络加速器 Active CN110738308B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910900439.2A CN110738308B (zh) 2019-09-23 2019-09-23 一种神经网络加速器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910900439.2A CN110738308B (zh) 2019-09-23 2019-09-23 一种神经网络加速器

Publications (2)

Publication Number Publication Date
CN110738308A CN110738308A (zh) 2020-01-31
CN110738308B true CN110738308B (zh) 2023-05-26

Family

ID=69269457

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910900439.2A Active CN110738308B (zh) 2019-09-23 2019-09-23 一种神经网络加速器

Country Status (1)

Country Link
CN (1) CN110738308B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111340224B (zh) * 2020-02-27 2023-11-21 浙江芯劢微电子股份有限公司 适用于低资源嵌入式芯片的cnn网络的加速设计方法
CN111401541A (zh) * 2020-03-10 2020-07-10 湖南国科微电子股份有限公司 一种数据传输控制方法及装置
CN112052941B (zh) * 2020-09-10 2024-02-20 南京大学 一种应用于cnn网络卷积层的高效存算***及其运算方法
CN111931918B (zh) * 2020-09-24 2021-02-12 深圳佑驾创新科技有限公司 神经网络加速器
CN111931927B (zh) * 2020-10-19 2021-02-19 翱捷智能科技(上海)有限公司 一种在npu中减少计算资源占用的方法及装置
CN113688069B (zh) * 2021-09-10 2022-08-02 北京百度网讯科技有限公司 数据处理方法、装置、电子设备及介质
CN115687181B (zh) * 2022-11-07 2023-05-12 苏州亿铸智能科技有限公司 一种用于存算处理单元的寻址方法
CN117195989B (zh) * 2023-11-06 2024-06-04 深圳市九天睿芯科技有限公司 向量处理器、神经网络加速器、芯片及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002024157A (ja) * 2000-07-07 2002-01-25 Matsushita Electric Ind Co Ltd Dma処理方法およびdma処理装置
CN106779060A (zh) * 2017-02-09 2017-05-31 武汉魅瞳科技有限公司 一种适于硬件设计实现的深度卷积神经网络的计算方法
EP3346423A1 (en) * 2017-01-04 2018-07-11 STMicroelectronics Srl Deep convolutional network heterogeneous architecture system and device

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10621486B2 (en) * 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002024157A (ja) * 2000-07-07 2002-01-25 Matsushita Electric Ind Co Ltd Dma処理方法およびdma処理装置
EP3346423A1 (en) * 2017-01-04 2018-07-11 STMicroelectronics Srl Deep convolutional network heterogeneous architecture system and device
CN106779060A (zh) * 2017-02-09 2017-05-31 武汉魅瞳科技有限公司 一种适于硬件设计实现的深度卷积神经网络的计算方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Efficient convolution architectures for convolutional neural network;Jichen Wang等;《2016 8th International Conference on Wireless Communications & Signal Processing (WCSP)》;20161013;1-5 *
卷积神经网络的FPGA实现及优化;王开宇等;《实验室科学》;20180828(第04期);79-84 *

Also Published As

Publication number Publication date
CN110738308A (zh) 2020-01-31

Similar Documents

Publication Publication Date Title
CN110738308B (zh) 一种神经网络加速器
CN106940815B (zh) 一种可编程卷积神经网络协处理器ip核
US7574466B2 (en) Method for finding global extrema of a set of shorts distributed across an array of parallel processing elements
CN111897579B (zh) 图像数据处理方法、装置、计算机设备和存储介质
CN110097174B (zh) 基于fpga和行输出优先的卷积神经网络实现方法、***及装置
CN104915322B (zh) 一种卷积神经网络硬件加速方法
CN111626414B (zh) 一种动态多精度神经网络加速单元
CN111967468B (zh) 一种基于fpga的轻量级目标检测神经网络的实现方法
US10942673B2 (en) Data processing using resistive memory arrays
US7447720B2 (en) Method for finding global extrema of a set of bytes distributed across an array of parallel processing elements
US11775430B1 (en) Memory access for multiple circuit components
CN111898733B (zh) 一种深度可分离卷积神经网络加速器架构
CN110263925A (zh) 一种基于fpga的卷积神经网络前向预测的硬件加速实现架构
CN110688616B (zh) 一种基于乒乓ram的条带阵列的卷积模块及其运算方法
US20230385233A1 (en) Multiple accumulate busses in a systolic array
CN110674927A (zh) 一种用于脉动阵列结构的数据重组方法
CN110580519B (zh) 一种卷积运算装置及其方法
CN111860773B (zh) 处理装置和用于信息处理的方法
CN112950656A (zh) 一种基于fpga平台的按通道进行预读取数据的分块卷积方法
CN113762493A (zh) 神经网络模型的压缩方法、装置、加速单元和计算***
CN113762480B (zh) 一种基于一维卷积神经网络的时间序列处理加速器
CN114912596A (zh) 面向稀疏卷积神经网络的多chiplet***及其方法
CN114330687A (zh) 数据处理方法及装置、神经网络处理装置
CN113869494A (zh) 基于高层次综合的神经网络卷积fpga嵌入式硬件加速器
CN112052941A (zh) 一种应用于cnn网络卷积层的高效存算***及其运算方法

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