CN108710943B - 一种多层前馈神经网络并行加速器 - Google Patents
一种多层前馈神经网络并行加速器 Download PDFInfo
- Publication number
- CN108710943B CN108710943B CN201810488050.7A CN201810488050A CN108710943B CN 108710943 B CN108710943 B CN 108710943B CN 201810488050 A CN201810488050 A CN 201810488050A CN 108710943 B CN108710943 B CN 108710943B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- neuron
- storage
- address
- 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
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (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)
- Feedback Control In General (AREA)
- Advance Control (AREA)
Abstract
本发明的多层前馈神经网络并行加速器,包括:主控制模块,控制整个计算流程;系数地址生成模块,生成系数的地址,将所述系数的地址输出;并接收存储控制模块的系数数据,将系数数据拆分后输出;操作数地址生成模块,生成操作数的存储地址并输出;接收存储控制模块的操作数数据,将数据拆分后并输出;前馈网络计算模块,接收拆分后的系数数据与操作数数据,包含若干路并行计算的计算单元;神经元地址生成模块,接收前馈网络计算模块计算得到的神经元数据,生成神经元的存储地址和神经元数据,并将所述神经元的存储地址和神经元数据输出。有益效果:可扩展性好,并行度可调,加速比高;支持流水操作,资源消耗少。
Description
技术领域
本发明属于硬件加速领域,尤其涉及一种多层前馈神经网络并行加速器。
背景技术
人工智能算法使人们的生活越来越便捷,但是随着应用需求的不断变化,算法复杂度也越来越高。伴随着算法复杂度的提高,人工智能算法对于硬件功耗和速度的要求也日益提升。神经网络是由具有适应性的简单单元组成的广泛并行的互联网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应。多层前馈神经网络在操作数检索、机器视觉、安防监控等领域得到了越来越广泛的应用。记多层前馈神经网络第j个隐含层神经元的输入为,第i个操作数为,对应系数为,则有:
目前,现有的大部分多层前馈神经网络实现是基于CPU或者NVIDIAGPU实现的。对于计算密集型算法,数据的搬移和运算效率越高的能耗比就越高。但GPU和CPU都是属于通用处理器,都需要进行取指令、指令译码、指令执行的过程,通过这种方式屏蔽了底层IO的处理,使得软硬件解耦,但带来数据的搬移和运算无法达到更高效率。而GPU和CPU之间的能耗比的差距,主要在于CPU中晶体管有大部分用在Cache和控制逻辑单元,所以CPU相比GPU来说,对于计算密集同时计算复杂度低的算法,有冗余的晶体管无法发挥作用,能耗比上CPU低于GPU。上述两种实现方式能耗较大,扩展性不好,如何使多层前馈神经网络运行的更快,更节能,扩展性更好成为了热点问题。
发明内容
本发明的目的是克服上述背景技术中多层前馈神经网络实现方式的的不足,提出一种多层前馈神经网络并行加速器设计方法,支持系数点数和神经元数量可变,硬件可裁剪,支持并行和流水操作,资源消耗少,具体通过以下技术方案来实现的:
所述多层前馈神经网络并行加速器包括:
主控制模块,接收系统启动信号,控制整个计算流程;
系数地址生成模块,根据主控制模块的数据划分和系数数据的存储方式,生成系数的地址,将所述系数的地址输出;并接收存储控制模块的系数数据,根据系数数据的存储规则将系数数据拆分后输出;
操作数地址生成模块,生成操作数的存储地址并输出;接收存储控制模块的操作数数据,将数据拆分后并输出;
前馈网络计算模块,接收拆分后的系数数据与操作数数据,包含若干路并行计算的计算单元;
神经元地址生成模块,接收前馈网络计算模块计算得到的神经元数据,生成神经元的存储地址和神经元数据,并将所述神经元的存储地址和神经元数据输出;
存储控制模块,接收系数地址生成模块、操作数地址生成模块和神经元地址生成模块的存储地址,接收所述神经元数据,生成存储地址与物理存储模块地址的映射,产生物理存储模块的控制信号,完成读写操作;
数据划分模块,根据并行度将所有隐含层神经元的计算划分到各路计算单元,得出各路计算单元需要计算的神经元数量。
所述多层前馈神经网络并行加速器的进一步设计在于,主控制模块在接收到启动信号后,首先启动系数地址生成模块、操作数地址生成模块和存储控制模块,接着基于数据延迟启动前馈网络计算模块,根据神经元地址生成模块的已完成计算神经元的计数和数据划分模块分配给各计算单元的计算量输出运算结束信号。
所述多层前馈神经网络并行加速器的进一步设计在于,系数地址生成模块基于数据划分模块分配给各计算单元需要计算的神经元的数量,以递增的形式将生成的系数地址输出。
所述多层前馈神经网络并行加速器的进一步设计在于,操作数地址生成模块基于输入操作数数据量的大小和操作数的存储方式,确定操作数地址的上限;并根据数据划分模块分配给各计算单元需要计算的神经元的数量,确定操作数地址循环的次数;同时接收存储控制模块传来的操作数数据,根据操作数的存储规则将数据拆分后驱动各路计算单元。
所述多层前馈神经网络并行加速器的进一步设计在于,神经元地址生成模块接收前馈网络计算模块的神经元计算完成信号,接收神经元数据后根据存储模块的位宽,产生神经元的存储地址和神经元数据,并输出至存储控制模块。
所述多层前馈神经网络并行加速器的进一步设计在于,前馈网络计算模块中每一计算单元由两个加法器和一个乘法器组成,完成流水乘累加操作,各计算单元之间相互独立。
本发明的优点
本发明的多层前馈神经网络并行加速器,支持神经元数量和操作数规模可变,应用灵活;可扩展性好,并行度可调,加速比高;支持流水操作,资源消耗少。
附图说明
图1是一个典型的神经元示意图。
图2是整体硬件架构示意图。
图3是一路计算单元示意图。
图4是系数存储模块示意图。
图5是操作数存储模块示意图。
图6是神经元存储模块示意图。
具体实施方式
下面结合附图和具体实现案例对本发明进行详细说明。
如图1所示,一个典型的神经元,如图1所示:接收来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元阈值进行比较,然后经过“激活函数”处理产生神经元输出。
本实施例的多层前馈神经网络并行加速器,主要由主控制模块、数据划分模块、系数地址生成模块、操作数地址生成模块、神经元地址生成模块、存储控制模块和存储模块组成,参见图2。
其中,主控制模块接收系统启动信号,调用数据划分模块将隐含层神经元的计算划分配给各路计算单元,同时启动系数地址生成模块和操作数地址生成模块,根据数据到达的延迟,输出启动计算信号,以及根据神经元的完成情况输出运算结束信号,控制整个计算流程。
系数地址生成模块,根据主控制模块的数据划分和系数数据的存储方式,在接收到主控制模块的启动信号后开始生成系数的地址,输出给存储控制模块,接收到存储控制模块的系数数据后,将数据拆分后输出给前馈网络计算模块。
操作数地址生成模块,根据输入操作数数据量的大小和操作数的存储方式,在接收到主控制模块的启动信号后生成操作数的地址,输出给存储控制模块,接收到存储控制模块的操作数后,将数据拆分后输出给前馈网络计算模块。
神经元地址生成模块,收到前馈网络计算模块计算完成信号,接收前馈网络计算模块的完成计算的神经元数据,根据计算规则生成神经元的存储地址和将多路已完成计算的神经元数据拼接,生成存储数据给存储控制模块。
存储控制模块,接收系数地址生成模块、操作数地址生成模块和神经元地址生成模块的地址信号,接收神经元地址生成模块的存储数据,完成接收到的各地址和存储模块的地址映射,生成存储模块的控制信号,完成存储模块的读写。
数据划分模块,将所有隐含层神经元的计算划分到各路计算单元,给出各路计算神经元的数量。
前馈网络计算模块,包含若干路如图3所示的计算单元并行计算,每一路计算单元由两个加法器和一个乘法器组成,累加器由两个加法器组成,第一个加法器负责累加乘法器的流水结果,由于加法器有若干个周期的延时,所以第一个加法器会多出若干个数据无法累加,这几个数由加法器2完成累加功能并输出。每个时钟周期完成两个数的乘法运算,完成所有乘法结果的累加,各路计算单元之间相互独立。
以下给出一具体示例,该示例中前馈网络计算模块由16路计算单元组成。系数地址生成模块包含16路系数地址生成单元,神经元地址生成模块包含4路神经元地址生成单元。每一路计算单元由1个乘法器和2个加法器组成,乘法器和加法器延迟均为4个时钟周期;存储模块1是由32个存储单元构成,每个存储单元是由8个位宽为64位,深度为1K的IP组成;存储模块2是由8个存储单元构成,每个存储单元是一个位宽64位,深度为1K的IP。操作数数据量为28*28,隐含层神经元数量为512个。
本实施例的多层前馈神经网络并行加速器的主要运作步骤为:
步骤1)数据划分模块将512个神经元计算划分到前馈网络计算模块的16路计算单元,每一路计算单元完成32个神经元的计算;
步骤2)根据数据划分将系数数据存储到系数存储模块中,如图4所示,每个存储单元存储一路神经元的系数,以存储单元1为例,每个地址存储两个系数,低32位在前,高32位在后;当存储单元1存满后再存入存储单元32;
步骤3)将操作数数据存入操作数存储模块中,每个地址存储两个操作数,低32位在前,高32位在后;存储方式如图5所示,存储单元 1到存储单元 4,地址累加依次循环存储;
步骤4)主控制模块接收到系统启动信号后,启动系数地址生成模块、操作数地址生成模块,两个模块启动后生成对应地址传给存储控制模块;根据数据到达的延迟,之后启动前馈网络计算模块;
步骤5)存储控制模块接收到上述两个模块传来的地址,对系数地址和操作数地址进行解析,生成存储模块的控制信号,从存储模块中读出数据,传到相应的地址生成模块;
步骤6)系数地址生成模块和操作数地址生成模块接收到数据,通过sel信号的高低选择输出,将数据进行拆分,输送给前馈网络计算模块,这时主控制模块启动计算模块开始计算;
步骤7)神经元地址生成模块接收到计算单元的完成信号,每个神经元地址生成模块按顺序接受4个神经元数据共128位,在2个两个时钟周期里生成神经元的存储地址和神经元数据传给存储控制模块;
步骤8)存储控制模块解析神经元地址,生成存储模块的控制信号,将神经元数据存入存储模块,存储方式如图6所示。
步骤9)重复上述步骤4)、步骤5)、步骤6)、步骤7)、步骤8),直到完成所有神经元的计算。
本实例完成的设计可支持系数点数最大2M,操作数点数最大4K,隐含层神经元数量最大4K的多层前馈神经网络的计算。每个神经元的计算时间和操作数的点数相关,16路计算单元并行计算。示例中的每个神经元的计算需要784个时钟周期,在示例设计中,在示例设计中,共计使用了13803个LUT,18917个触发器,96个DSP,时钟频率200MHz。
本发明介绍了多层前馈神经网络的加速器,神经元数量和操作数点数可配置,支持并行和流水操作,硬件复杂度低并且有良好的并行性和高吞吐量。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或变换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (4)
1.一种多层前馈神经网络并行加速器,其特征在于包括:
主控制模块,接收系统启动信号,控制整个计算流程;
系数地址生成模块,根据主控制模块的数据划分和系数数据的存储方式,生成系数的地址,将所述系数的地址输出;并接收存储控制模块的系数数据,根据系数数据的存储规则将系数数据拆分后输出;
操作数地址生成模块,生成操作数的存储地址并输出;接收存储控制模块的操作数数据,将数据拆分后并输出;
前馈网络计算模块,接收拆分后的系数数据与操作数数据,包含若干路并行计算的计算单元;
神经元地址生成模块,接收前馈网络计算模块计算得到的神经元数据,生成神经元的存储地址和神经元数据,并将所述神经元的存储地址和神经元数据输出;
存储控制模块,接收系数地址生成模块、操作数地址生成模块和神经元地址生成模块的存储地址,接收所述神经元数据,生成存储地址与物理存储模块地址的映射,产生物理存储模块的控制信号,完成读写操作;
数据划分模块,根据并行度将所有隐含层神经元的计算划分到各路计算单元,得出各路计算单元需要计算的神经元数量;
主控制模块在接收到启动信号后,首先启动系数地址生成模块、操作数地址生成模块和存储控制模块,接着基于数据延迟启动前馈网络计算模块,根据神经元地址生成模块的已完成计算神经元的计数和数据划分模块分配给各计算单元的计算量输出运算结束信号;
操作数地址生成模块基于输入操作数数据量的大小和操作数的存储方式,确定操作数地址的上限;并根据数据划分模块分配给各计算单元需要计算的神经元的数量,确定操作数地址循环的次数;同时接收存储控制模块传来的操作数数据,根据操作数的存储规则将数据拆分后驱动各路计算单元。
2.根据权利要求1所述的多层前馈神经网络并行加速器,其特征在于:系数地址生成模块基于数据划分模块分配给各计算单元需要计算的神经元的数量,以递增的形式将生成的系数地址输出。
3.根据权利要求1所述的多层前馈神经网络并行加速器,其特征在于:神经元地址生成模块接收前馈网络计算模块的神经元计算完成信号,接收神经元数据后根据存储模块的位宽,产生神经元的存储地址和神经元数据,并输出至存储控制模块。
4.根据权利要求1所述的多层前馈神经网络并行加速器,其特征在于:前馈网络计算模块中每一计算单元由两个加法器和一个乘法器组成,完成流水乘累加操作,各计算单元之间相互独立。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810488050.7A CN108710943B (zh) | 2018-05-21 | 2018-05-21 | 一种多层前馈神经网络并行加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810488050.7A CN108710943B (zh) | 2018-05-21 | 2018-05-21 | 一种多层前馈神经网络并行加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108710943A CN108710943A (zh) | 2018-10-26 |
CN108710943B true CN108710943B (zh) | 2021-11-16 |
Family
ID=63868384
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810488050.7A Active CN108710943B (zh) | 2018-05-21 | 2018-05-21 | 一种多层前馈神经网络并行加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108710943B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109472350B (zh) * | 2018-10-30 | 2021-11-16 | 南京大学 | 一种基于块循环稀疏矩阵的神经网络加速系统 |
US11841822B2 (en) | 2019-04-27 | 2023-12-12 | Cambricon Technologies Corporation Limited | Fractal calculating device and method, integrated circuit and board card |
WO2020220935A1 (zh) | 2019-04-27 | 2020-11-05 | 中科寒武纪科技股份有限公司 | 运算装置 |
CN110232441B (zh) * | 2019-06-18 | 2023-05-09 | 南京大学 | 一种基于单向脉动阵列的堆栈式自编码系统及方法 |
CN111401532A (zh) * | 2020-04-28 | 2020-07-10 | 南京宁麒智能计算芯片研究院有限公司 | 一种卷积神经网络推理加速器及加速方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495721A (zh) * | 2011-12-02 | 2012-06-13 | 南京大学 | 一种支持fft加速的simd向量处理器 |
CN107491811A (zh) * | 2017-09-01 | 2017-12-19 | 中国科学院计算技术研究所 | 用于加速神经网络处理器的方法和系统及神经网络处理器 |
CN107886166A (zh) * | 2016-09-29 | 2018-04-06 | 北京中科寒武纪科技有限公司 | 一种执行人工神经网络运算的装置和方法 |
-
2018
- 2018-05-21 CN CN201810488050.7A patent/CN108710943B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495721A (zh) * | 2011-12-02 | 2012-06-13 | 南京大学 | 一种支持fft加速的simd向量处理器 |
CN107886166A (zh) * | 2016-09-29 | 2018-04-06 | 北京中科寒武纪科技有限公司 | 一种执行人工神经网络运算的装置和方法 |
CN107491811A (zh) * | 2017-09-01 | 2017-12-19 | 中国科学院计算技术研究所 | 用于加速神经网络处理器的方法和系统及神经网络处理器 |
Non-Patent Citations (1)
Title |
---|
"Reconfigurable Multiprocessor Systems: A Review";Dorta;《ResearchGate》;20101031;第1-11页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108710943A (zh) | 2018-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108710943B (zh) | 一种多层前馈神经网络并行加速器 | |
Yin et al. | A high energy efficient reconfigurable hybrid neural network processor for deep learning applications | |
CN109284823B (zh) | 一种运算装置及相关产品 | |
CN109543832B (zh) | 一种计算装置及板卡 | |
CN109328361B (zh) | 用于深度神经网络的加速器 | |
CN109522052B (zh) | 一种计算装置及板卡 | |
CN107797962B (zh) | 基于神经网络的计算阵列 | |
CN110163363B (zh) | 一种计算装置及方法 | |
US20210150362A1 (en) | Neural network compression based on bank-balanced sparsity | |
Geng et al. | O3BNN-R: An out-of-order architecture for high-performance and regularized BNN inference | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN104765589A (zh) | 基于mpi的网格并行预处理方法 | |
US11709783B1 (en) | Tensor data distribution using grid direct-memory access (DMA) controller | |
Zhang et al. | Implementation and optimization of the accelerator based on FPGA hardware for LSTM network | |
Wang et al. | Design and optimization of 1d-cnn for spectrum recognition of underwater targets | |
Chang et al. | A reconfigurable neural network processor with tile-grained multicore pipeline for object detection on FPGA | |
EP4206999A1 (en) | Artificial intelligence core, artificial intelligence core system, and loading/storing method of artificial intelligence core system | |
CN112232517A (zh) | 一种人工智能加速引擎和人工智能处理器 | |
CN112051981B (zh) | 一种数据流水线计算路径结构及单线程数据流水线系统 | |
CN111930681A (zh) | 一种计算装置及相关产品 | |
US11704562B1 (en) | Architecture for virtual instructions | |
CN112200310B (zh) | 智能处理器、数据处理方法及存储介质 | |
Diamantopoulos et al. | A system-level transprecision FPGA accelerator for BLSTM using on-chip memory reshaping | |
CN116402091A (zh) | 面向人工智能芯片的混合引擎智能计算方法和装置 | |
CN116090519A (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 |