CN209231976U - 一种可重构神经网络算法的加速装置 - Google Patents
一种可重构神经网络算法的加速装置 Download PDFInfo
- Publication number
- CN209231976U CN209231976U CN201822267301.7U CN201822267301U CN209231976U CN 209231976 U CN209231976 U CN 209231976U CN 201822267301 U CN201822267301 U CN 201822267301U CN 209231976 U CN209231976 U CN 209231976U
- Authority
- CN
- China
- Prior art keywords
- neural network
- module
- network algorithm
- accelerator
- data
- 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
Landscapes
- Image Analysis (AREA)
Abstract
本实用新型公开了一种可重构神经网络算法的加速装置,属于芯片设计领域。针对现有技术中存在的加速器不灵活,仅仅为了加速一个固定配置的网络而设计,对其他结构网络的加速性能不佳或者根本不支持的问题,本实用新型提供了一种可重构神经网络算法的加速装置及方法,通过分析多种不同神经网络算法的特性和共性,将算法高效映射到可重构硬件上。重构控制器通过接收到的配置信息,为不同的神经网络算法重构特定数据通路,并控制其运算过程,算法特定的优化,以达到其最优性能。灵活支持不同大小不同种类的神经网络算法,有效增大资源利用率,提高运算速度和吞吐率,降低功耗。
Description
技术领域
本实用新型涉及芯片设计领域,更具体地说,涉及一种可重构神经网络算法的加速装置。
背景技术
当前针对神经网络算法进行加速的主流硬件平台有通用的CPU、DSP、专用芯片(ASIC)、 FPGA以及可重构处理器。
目前,在包括计算机视觉、语音识别和机器人在内的许多人工智能领域中,神经网络算法,例如深度神经网络(DNN)、循环神经网络(RNN)、卷积神经网络(CNN)、长短期记忆网络(LSTM)得到广泛应用。其中,深度神经网络算法在很多人工智能任务中具有最佳的准确度,但同时随着网络规模越来越大,参数越来越多,计算复杂度不断增大。因此,能对深度神经网络算法进行高效处理并且提升能量效率和吞吐量,同时又能保证准确度和减小硬件开销的硬件实现技术是保证其能够在人工智能系统中广泛应用的关键。
相较而言,CPU处理速度慢,运行大规模的深度学习网络效率低,无法满足性能需求。尽管GPU和FPGA对于深度神经网络的计算的加速效果显著,但是它们都有共同缺点就是功耗大,能效低,而这一问题可通过一些专用的加速器来解决。在近期工作中,有一些ASIC加速器与可编程的GPU和FPGA相比表现出更高的能效。但是这些定制的加速器不灵活,仅仅为了加速一个固定配置的网络而设计,对其他结构网络的加速性能不佳或者根本不支持。
现有的也有相应的一些可兼容的神经网络加速方式,如中国专利申请,申请号201711131564.9,公开日2018年3月20日,公开了一种高兼容性可编程神经网络加速阵列。该阵列采用可重构性架构,包含一个中央控制器、一个特征向量发射器以及若干个神经网络计算单元片;所述计算单元片含有可编程乘加单元、可编程激活单元、单元片控制器等基本的神经网络计算模块,加速阵列通过可编程通信路由进行任意单元片间的通信。该可编程神经网络加速阵列可兼容多种神经网络算法,同时又不失去高能效,适合应用于各类深度学习智能系统中。但是其重构效率低,速度不足,又如中国专利申请,申请号201810084089.2,公开日2018年7月3日,公开了一种可重构神经网络加速方法及架构,通过输入缓存单元、权重缓存单元、卷积计算核单元及输出缓存单元的架构,分别采用输入数据复用、输出数据复用及权重数据复用的模式,通过卷积计算核单元将读取的输入数据与卷积核进行卷积运算,生成输出数据的方法。此申请通过逐层加速的策略来应对层数多样的神经网络,并使用循环变换的方法来优化神经网络加速,达到了减少对Buffer以及DRAM的访问次数,解决了现有技术中访问存储器的次数多造成功耗浪费的问题,具有降低能耗,使PE阵列的硬件资源利用率最大化的有益效果。但是其结构复杂,成本高,适用范围不广。为了解决上述问题,硬件要能支持一定范围的可配置,即在一个合理的可选择范围内,硬件在一系列配置之间进行重构,是需要解决的问题。
实用新型内容
1.要解决的技术问题
针对现有技术中存在的加速器不灵活,仅仅为了加速一个固定配置的网络而设计,对其他结构网络的加速性能不佳或者根本不支持的问题,本实用新型提供了一种可重构神经网络算法的加速装置,它可以实现多种神经网络算法的可重构加速核实现架构,支持面广,配置方便。
2.技术方案
本实用新型的目的通过以下技术方案实现。
一种可重构神经网络算法的加速装置,包括存储器模块、存储控制器模块,存储控制器模块对存储器模块进行控制,并通过总线接口模块与DMA模块传输信息;总线接口模块与调度器模块连接,调度器模块与DMA模块互相连接,DMA模块与SRAM传送数据,SRAM 通过SRAM控制器模块进行控制,Memory Switch模块与SRAM控制器模块控制运算单元与SRAM控制器模块进行交互;重构控制器模块,对运算单元进行控制,通过配置信息对神经网络算法重构数据通路,并控制神经网络算法在运算单元的运算。
更进一步的,所述的运算单元由超越计算单元和脉动阵列组成,其中超越计算单元由若干exp函数组成,用于非线性激活函数的实现。
更进一步的,所述的脉动阵列中包括n*n个NCU,n为不小于8的自然数。
更进一步的,脉动阵列中包括32*32个NCU。
更进一步的,每个NCU包括一个乘法器、一个加法器及若干寄存器组成,数据经由乘法器相乘,得出的结果送入加法器中进行累加,寄存器主要用于存放累加过程中的部分和、源数据1、2和本地结果。
更进一步的,脉动阵列的接口为:32个源数据1输入接口、32个源数据2输入接口、1个设定乘累加计算长度的接口、1个输入数据有效信号、1个激活函数选择信号、32个结果数据输出接口、1个结果输出有效信号,其中结果输出有效信号以某段时间内所有输出数据有效输出为准。该阵列接口的输入配置信和控制信息有两个来源。
更进一步的,SRAM控制模块用于在Memory Switch模块功能完成后,控制神经网络算法源数据1、2和结果数据在DMA和SRAM之间的传输。
3.有益效果
相比于现有技术,本实用新型的优点在于:
通过分析多种不同神经网络算法的特性和共性,将算法高效映射到可重构硬件上。重构控制器通过接收到的配置信息,为不同的神经网络算法重构数据通路,并控制其运算过程。重构控制器通过接收到的配置信息,每个算法都经过特定的优化,以达到其最优性能。灵活支持不同大小不同种类的神经网络算法,有效增大资源利用率,提高运算速度和吞吐率,降低功耗。
附图说明
图1是可重构神经网络算法加速装置示意图;
图2是脉动阵列结构示意图;
图3是卷积神经网络算法实现过程中数据流动示意图。
具体实施方式
下面结合说明书附图和具体的实施例,对本实用新型作详细描述。
实施例1
为了解决加速器不灵活,仅仅为了加速一个固定配置的网络而设计,对其他结构网络的加速性能不佳或者根本不支持的问题,本发明提供了面向多种神经网络算法的可重构加速核实现架构。
如图1所示,对应设计了一种可重构神经网络算法的加速装置,一种可重构神经网络算法硬件实现,包括存储器模块、存储控制器模块、总线接口、DMA模块、调度器模块、重构控制器模块、SRAM、SRAM控制模块、Memory Switch模块、运算单元,运算单元包括脉动阵列运算单元和超越运算单元。总线接口模块与调度器模块连接,调度器模块与DMA模块互相连接,DMA模块与SRAM传送数据,SRAM通过SRAM控制器模块进行控制,SRAM 控制模块用于控制神经网络算法源数据1、2和结果数据的传输。Memory Switch模块与SRAM 控制器模块控制运算单元与SRAM控制器模块进行交互;重构控制器模块,对运算单元进行控制,在运算结束后发送中断请求完成与外部系统的交互,通过接收到的配置信息,通过分析多种不同神经网络算法的特性和共性,将算法高效映射到可重构硬件上,为不同的神经网络算法重构数据通路,并控制神经网络算法在运算单元的运算。每个算法都经过特定的优化,以达到其最优性能。通过分析多种神经网络算法的共性,特征可拆分为以下运算颗粒:卷积运算、矩阵乘法以及非线性计算,如tanh()、ReLU()等激活函数。各种神经网络算法的特性在于这些基本运算的不同组合方式。
运算单元阵列对神经网络算法拆分为若干卷积运算、矩阵乘法以及非线性计算,对神经网络算法进行重构映射。参照图3,所述的脉动阵列的脉动方式为,从上往下广播源数据1,一般情况下为权重或偏置,从左到右传播源数据2,一般情况下为神经元,结果由阵列中各个NCU(Neural Computing Unit)在本地产生。脉动阵列结果输出后,每一行的NCU会依次在本地产生结果,32个NCU产生的结果分别从右端输出阵列,同时产生输出结果有效信号。
指令通过总线接口模块传入到调度器模块中进行解码。数据通路根据配置信息重构,数据从存储器模块由DMA模块传输进入SRAM,DMA模块为直接内存存取模块,运算单元阵列从SRAM中读取数据进行计算,结果存回SRAM中,最后再通过DMA模块传输回存储器模块。其中Memory Switch模块用于控制不同算法与SRAM控制模块之间的接口交互。SRAM 控制模块用于在Memory Switch模块功能完成后,控制特定的神经网络算法源数据1、2和结果数据在DMA和SRAM之间的传输。
运算单元由超越计算单元和脉动阵列组成,其中超越计算单元由若干exp函数组成,用于非线性激活函数的实现。脉动阵列中包括n*n个NCU,n为不小于8的自然数。n的大小根据需求可以进行设计。源数据1和源数据2由存储器通过数据通路传输到SRAM中,为了方便后端设计,从SRAM到计算阵列中间设计了一个输入数据准备模块,分别连接阵列中32 个源数据1接口和32个源数据2接口。
相比于GPU价格昂贵,功耗高,面积大;CPU运行速度慢,运行大规模的深度学习网络效率低,无法满足性能需求。本发明实现的基于脉动阵列的可重构神经网络算法硬件实现方法具有运行速度快、资源利用率高、功耗低、处理效果好的特点。
各种神经网络算法的特性在于这些基本运算的不同组合方式,本方案通过分析多种不同神经网络算法的特性和共性,将算法高效映射到可重构硬件上。重构控制器通过接收到的配置信息,为不同的神经网络算法重构数据通路,并控制其运算过程。通过分析多种神经网络算法的共性,特征可拆分为以下运算颗粒:卷积运算、矩阵乘法以及非线性计算,如激活函数。
以卷积神经网络卷积层为例,卷积神经网络可拆分成池化层算子、卷积层算子、全连接层算子,循环神经网络可拆分成全连接层算子。需要配置卷积核大小及个数、输入图像大小、步长、激活函数的选择等。以循环神经网络为例,需要配置输入层、隐藏层、输出层的神经元个数、时间步数、输出是否做softmax分类等。经解码的配置信息形成控制流和数据流,以完成不同神经网络算法的重构映射。
如图3所示,本实施例加速装置采用32*32个NCU的阵列方式构成,用于实现多种不同神经网络算法。每个NCU包括一个乘法器、一个加法器及若干寄存器组成,对上述数据进行传播。数据经由乘法器相乘,得出的结果送入加法器中进行累加,寄存器主要用于存放累加过程中的部分和、、源数据1、2和本地结果。脉动阵列的接口为:32个源数据1输入接口、32个源数据2输入接口、1个设定乘累加计算长度的接口、1个输入数据有效信号、1个激活函数选择信号、32个结果数据输出接口、1个结果输出有效信号,其中结果输出有效信号以某段时间内所有输出数据有效输出为准。该阵列接口的输入信息来源于配置信息和控制信息;输出信息由阵列内部产生。其中脉动阵列结果输出后,每一行NCU会依次在本地产生结果,依次从阵列的右端结果数据输出接口输出,同时产生输出结果有效信号。
而其资源利用率高、吞吐率大、运算速度快、可灵活支持常用的神经网络算法,例如卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆网络(LSTM)等,能够完成语音识别、图像识别等功能。可以灵活支持不同大小不同种类的神经网络算法,有效增大资源利用率,提高运算速度和吞吐率,降低功耗。
实施例2
如图2所示,以卷积神经网络算法中经典模型AlexNet为例。AlexNet模型有5层卷积层和3层全连接层。5层卷积层中的卷积核大小分别为11x11、5x5、3x3、3x3和3x3,本发明支持配置不同大小的卷积核的卷积运算。源数据1和源数据2由存储器通过DMA模块传输到SRAM中,为了更易于后续优化,从SRAM到计算阵列中间设计了输入数据准备模块,分别连接阵列中32个源数据1接口和32个源数据2接口。卷积层因为多个卷积核均要在输入图像中滑动而具有数据重复使用的特性。源数据1寻址只需要对应每一次卷积,反复寻址同样位置上的数即可。源数据2寻址首先需要确定每次卷积产生的结果在输出图像中所对应的位置,根据输出图像中对应的位置找到输入图像中所需的源数据1的地址。
脉动阵列中32个源数据1接口输入阵列的数据决定了输出图像中的不同通道,如第一个源数据1接口传输第一个卷积核的数据,生成对应输出图像的第一个通道、第二个源数据1 接口传输第二个卷积核的数据,生成对应输出图像的第二个通道,以此类推。脉动阵列中32 个源数据2的接口输入阵列的数据决定了输出图像中同一层通道的不同位置上的结果数据,如第一个源数据2接口处理输出图像中第1+32n个卷积结果,第二个源数据2接口处理输出图像中第2+32n个卷积结果,以此类推。在输入图像的单独三维立体滑窗或者卷积核中,数据传输先后顺序为:输入通道方向、行方向、列方向。
每一层卷积的计算时间为:
令(O,K,C,N)分别代表输出图像的边长,卷积核的边长,输入图像的通道,卷积核的个数,f代表频率;ceil()代表返回大于或者等于指定表达式的最小整数头文件;delay代表固定延时,根据阵列大小和加法乘法器的延时而确定;delay代表固定延时,根据阵列大小和加法乘法器的延时而确定。其中O、C、N可以任意大小配置,K的配置范围在为1-11。
AlexNet的3层全连接层的输入向量长度大小分别为9216、4096、4096,权重向量个数分别为4096、4096、1000。全连接层的源数据1、2的寻址方式相比较卷积层更为简单,因为没有卷积操作,只有源数据2有重用的特性。本发明在处理全连接层时支持批处理。
每一层全连接层的计算时间为:
令(L,N)分别代表输入向量的长度和权重向量的个数,f代表频率;ceil()代表返回大于或者等于指定表达式的最小整数头文件;delay代表固定延时,根据阵列大小和加法乘法器的延时而确定。
不同于卷积神经网络的组成结构,循环神经网络的基本运算可以完全拆分成多个全连接层处理,同样支持批处理。以一个输入层为32个节点,循环层为128个节点,输出层10个节点的循环神经网络为例,可在阵列上构建两种大小的全连接层的运算:1.求循环层:(32+128)*128;2.求输出层:128*10;通过交替实现这两种全连基层即可实现循环神经网络。寻址方式完全与卷积神经网络中的全连接层相同。
本发明实现AlexNet卷积神经网络加速时,可达到92.43%的资源利用率和1.85Top/s的吞吐率。如下表所示。
本发明 | 清华Thinker(65nm) | MIT Eyeriss(65nm) | |
频率(GHz) | 1 | 0.2 | 0.2 |
MAC(PE)数量 | 1024 | 512 | 168 |
批处理 | 32 | 15 | - |
峰值运算能力(Tops) | 2(@16b) | 0.2(@16b)/0.4(@8b) | 0.084(@16b) |
Benchmark | AlexNet | AlexNet | AlexNet |
资源利用(%) | 92.43 | 89.40 | 55 |
有效吞吐率(Tops) | 1.85 | 0.37 | 0.0462 |
以上示意性地对本发明创造及其实施方式进行了描述,该描述没有限制性,在不背离本发明的精神或者基本特征的情况下,能够以其他的具体形式实现本发明。附图中所示的也只是本发明创造的实施方式之一,实际的结构并不局限于此,权利要求中的任何附图标记不应限制所涉及的权利要求。所以,如果本领域的普通技术人员受其启示,在不脱离本创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本专利的保护范围。此外,“包括”一词不排除其他元件或步骤,在元件前的“一个”一词不排除包括“多个”该元件。产品权利要求中陈述的多个元件也可以由一个元件通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (7)
1.一种可重构神经网络算法的加速装置,其特征在于:包括存储器模块、存储控制器模块,存储控制器模块对存储器模块进行控制,并通过总线接口模块与DMA模块传输信息;总线接口模块与调度器模块连接,调度器模块与DMA模块互相连接,DMA模块与SRAM传送数据,SRAM通过SRAM控制器模块进行控制,Memory Switch模块与SRAM控制器模块控制运算单元与SRAM控制器模块进行交互;重构控制器模块,对运算单元进行控制,通过配置信息对神经网络算法重构数据通路,并控制神经网络算法在运算单元的运算。
2.根据权利要求1所述的一种可重构神经网络算法的加速装置,其特征在于:所述的运算单元由超越计算单元和脉动阵列组成,其中超越计算单元由若干exp函数组成,用于非线性激活函数的实现。
3.根据权利要求2所述的一种可重构神经网络算法的加速装置,其特征在于:所述的脉动阵列中包括n*n个NCU,n为不小于8的自然数。
4.根据权利要求3所述的一种可重构神经网络算法的加速装置,其特征在于:脉动阵列中包括32*32个NCU。
5.根据权利要求3或4所述的一种可重构神经网络算法的加速装置,其特征在于:每个NCU包括一个乘法器、一个加法器及若干寄存器组成,数据经由乘法器相乘,得出的结果送入加法器中进行累加,寄存器主要用于存放累加过程中的部分和、源数据1、2和本地结果。
6.根据权利要求5所述的一种可重构神经网络算法的加速装置,其特征在于:脉动阵列的接口为:32个源数据1输入接口、32个源数据2输入接口、1个设定乘累加计算长度的输入接口、1个输入数据有效信号的输入接口、1个激活函数选择信号的输入接口、32个结果数据的输出接口、1个结果输出有效信号的输出接口。
7.根据权利要求1所述的一种可重构神经网络算法的加速装置,其特征在于:SRAM控制模块用于在Memory Switch模块功能完成后,控制神经网络算法源数据1、2和结果数据在DMA和SRAM之间的传输。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201822267301.7U CN209231976U (zh) | 2018-12-29 | 2018-12-29 | 一种可重构神经网络算法的加速装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201822267301.7U CN209231976U (zh) | 2018-12-29 | 2018-12-29 | 一种可重构神经网络算法的加速装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN209231976U true CN209231976U (zh) | 2019-08-09 |
Family
ID=67509991
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201822267301.7U Active CN209231976U (zh) | 2018-12-29 | 2018-12-29 | 一种可重构神经网络算法的加速装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN209231976U (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110689115A (zh) * | 2019-09-24 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 神经网络模型处理方法、装置、计算机设备及存储介质 |
CN111191772A (zh) * | 2020-01-02 | 2020-05-22 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向嵌入式环境的智能计算通用加速系统及其构建方法 |
CN112101538A (zh) * | 2020-09-23 | 2020-12-18 | 成都市深思创芯科技有限公司 | 基于内存计算的图神经网络硬件计算系统及方法 |
CN113705773A (zh) * | 2021-07-27 | 2021-11-26 | 西安交通大学 | 用于图神经网络推理的动态可重构pe单元及pe阵列 |
-
2018
- 2018-12-29 CN CN201822267301.7U patent/CN209231976U/zh active Active
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110689115A (zh) * | 2019-09-24 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 神经网络模型处理方法、装置、计算机设备及存储介质 |
CN110689115B (zh) * | 2019-09-24 | 2023-03-31 | 安徽寒武纪信息科技有限公司 | 神经网络模型处理方法、装置、计算机设备及存储介质 |
CN111191772A (zh) * | 2020-01-02 | 2020-05-22 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向嵌入式环境的智能计算通用加速系统及其构建方法 |
CN112101538A (zh) * | 2020-09-23 | 2020-12-18 | 成都市深思创芯科技有限公司 | 基于内存计算的图神经网络硬件计算系统及方法 |
CN112101538B (zh) * | 2020-09-23 | 2023-11-17 | 成都市深思创芯科技有限公司 | 基于内存计算的图神经网络硬件计算系统及方法 |
CN113705773A (zh) * | 2021-07-27 | 2021-11-26 | 西安交通大学 | 用于图神经网络推理的动态可重构pe单元及pe阵列 |
CN113705773B (zh) * | 2021-07-27 | 2023-09-19 | 西安交通大学 | 用于图神经网络推理的动态可重构pe单元及pe阵列 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109472356A (zh) | 一种可重构神经网络算法的加速装置及方法 | |
CN209231976U (zh) | 一种可重构神经网络算法的加速装置 | |
CN107578095B (zh) | 神经网络计算装置及包含该计算装置的处理器 | |
CN106355244B (zh) | 卷积神经网络的构建方法及系统 | |
CN108280514A (zh) | 基于fpga的稀疏神经网络加速系统和设计方法 | |
CN109901878B (zh) | 一种类脑计算芯片及计算设备 | |
CN108416436A (zh) | 使用多核心处理模块进行神经网络划分的方法及其系统 | |
CN107239824A (zh) | 用于实现稀疏卷积神经网络加速器的装置和方法 | |
CN107578098A (zh) | 基于脉动阵列的神经网络处理器 | |
CN107341544A (zh) | 一种基于可分割阵列的可重构加速器及其实现方法 | |
CN110352433A (zh) | 用于神经网络处理的具有矩阵-向量相乘区块的硬件节点 | |
CN108665059A (zh) | 基于现场可编程门阵列的卷积神经网络加速系统 | |
CN107832844A (zh) | 一种信息处理方法及相关产品 | |
CN106951926A (zh) | 一种混合架构的深度学习系统方法及装置 | |
CN107480782A (zh) | 一种片上学习神经网络处理器 | |
CN110298443A (zh) | 神经网络运算装置及方法 | |
CN111242289A (zh) | 一种规模可扩展的卷积神经网络加速系统与方法 | |
CN110516801A (zh) | 一种高吞吐率的动态可重构卷积神经网络加速器架构 | |
CN106875013A (zh) | 用于多核优化循环神经网络的系统和方法 | |
CN106529670A (zh) | 一种基于权重压缩的神经网络处理器、设计方法、芯片 | |
CN110163359A (zh) | 一种计算装置及方法 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN111325321A (zh) | 基于多神经网络融合的类脑计算系统及指令集的执行方法 | |
CN110383300A (zh) | 一种计算装置及方法 | |
CN107766935B (zh) | 多层人造神经网络 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GR01 | Patent grant | ||
GR01 | Patent grant |