CN110852428B - 基于fpga的神经网络加速方法和加速器 - Google Patents
基于fpga的神经网络加速方法和加速器 Download PDFInfo
- Publication number
- CN110852428B CN110852428B CN201910845286.6A CN201910845286A CN110852428B CN 110852428 B CN110852428 B CN 110852428B CN 201910845286 A CN201910845286 A CN 201910845286A CN 110852428 B CN110852428 B CN 110852428B
- Authority
- CN
- China
- Prior art keywords
- module
- instruction
- data
- neural network
- ram
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 25
- 230000001133 acceleration Effects 0.000 title claims description 9
- 238000000034 method Methods 0.000 title claims description 9
- 238000011176 pooling Methods 0.000 claims abstract description 34
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 23
- 230000015654 memory Effects 0.000 claims abstract description 12
- 238000004364 calculation method Methods 0.000 claims description 10
- 238000010606 normalization Methods 0.000 claims description 8
- 238000003062 neural network model Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 claims description 2
- 230000001360 synchronised effect Effects 0.000 claims description 2
- 238000004519 manufacturing process Methods 0.000 abstract 1
- 239000010410 layer Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 239000002356 single layer Substances 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 238000003672 processing method 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/045—Combinations of networks
-
- 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
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
本发明属于神经网络技术领域,为提出一种基于FPGA的卷积神经网络加速器,该加速器同时考虑了神经网络加速器性能和通用方面的需求,具有广阔的应用场景。为此,本发明采取的技术方案是,基于FPGA的神经网络加速器,包括卷积运算模块,池化模块,直接内存存取DMA模块,指令控制模块,地址控制模块,内部随机存取存储器RAM模块和指令RAM模块;其中所述的卷积运算模块,用于对卷积神经网路中的卷积层进行运算。本发明主要应用于神经网络芯片的设计制作。
Description
技术领域
本发明属于神经网络技术领域,具体涉及一种基于现场可编程门阵列(FPGA)的神经网络加速器架构
背景技术
随着人工智能的高速发展,卷积神经网络(Convolutional Neutral Network,CNN)越来越受到人们的重视,在图像处理等很多领域发挥着重要的作用。相比于传统算法,CNN的计算复杂度要高很多,通用CPU已经无法满足计算需求,目前主要的的解决方法是使用GPU进行CNN的计算,虽然GPU在并行计算方面有着天然的优势,但是在成本和功耗方面有着很大的不足,无法满足一些低特定场景下的CNN加速。FPGA具有强大的并行处理能力、灵活的可配置特性和超低功耗,非常适合作为CNN的实现平台。
发明内容
为克服现有技术的不足,针对目前神经网络加速需求,本发明旨在提出一种基于FPGA的卷积神经网络加速器,该加速器同时考虑了神经网络加速器性能和通用方面的需求,具有广阔的应用场景。为此,本发明采取的技术方案是,基于FPGA的神经网络加速器,包括卷积运算模块,池化模块,直接内存存取DMA模块,指令控制模块,地址控制模块,内部随机存取存储器RAM模块和指令RAM模块;
其中所述的卷积运算模块,用于对卷积神经网路中的卷积层进行运算,卷积运算模块包括8个运算处理PE模块,和一个加法器,其中PE模块负责卷积运算中乘法运算,一部分加法运算,以及归一化运算,加法器责将8个PE模块的计算结果与内部RAM输入进来的中间结果相累加;
所述的的池化模块,用于对卷积神经网路中的池化层进行运算;
所述的的DMA模块,用于卷积神经网络运算中的数据搬运工作,DMA模块包括三个DMA通道,分别为DMA图像通道,DMA权重通道,DMA指令通道,DMA图像通道负责从双倍速率同步动态随机存储器DDR中搬运图像数据到内部RAM中,以及从内部RAM中搬运运算后的数据到外部DDR中,DMA权重通道负责从外部DDR中搬运权重数据到卷积运算模块中,DMA指令通道负责从外部DDR中搬运指令数据到指令RAM中;
所述的指令控制模块,用于对指令的读取和分发工作,支持从指令RAM中读取数据,并将读取到的指令分发给卷积运算模块,池化模块,地址控制模块和DMA模块;
所述的地址控制模块,负责生成卷积运算模块和池化模块访问内部RAM的地址;
所述的内部RAM模块,负责存储卷积神经网络运算中的图像数据,权重数据,以及部分中间运算结果;
所述的指令RAM模块,负责存储控制各个模块的指令数据。
池化模块由8个相同的子模块组成,8个子模块并行计算,子模块结构包括一个数据比较器,一个计数器和两个先进先出存储FIFO,其中数据比较器负责将输入的数据依次比较,得到最大值结果,计数器负责记录输入比较器的数据个数,FIFO负责输入输出数据缓存。
基于FPGA的神经网络加速方法,步骤如下:
1)将离线开发好的神经网络模型和参数转换成加速器能识别的神经网络指令;
2)将图像数据,权重数据和转换好的神经网络指令存入FPGA上的外部DDR中;
3)通过CPU启动加速器,加速器的DMA模块首先启动,将部分图像数据搬运到内部RAM中,将指令数据搬运到指令RAM中;
4)当图像数据和指令数据搬运完成后指令控制模块启动,从指令RAM中读取指令数据,分发给卷积运算模块和地址控制模块,卷积运算模块收到指令后,根据指令要求从内部RAM中读取图像数据同时从权重缓存单元weight buffer中读取权重数据,并进行卷积运算,卷积运算后将数据送入线性整流函数RELU运算模块完成RELU运算;
5)卷积以及RELU运算完成后,指令控制模块将后面的指令分发给池化模块和相应的地址控制模块,池化模块收到指令后,从内部RAM中读取第4步运算后的数据,根据指令要求进行最大或平均池化运算,运算后将结果写回内部RAM;
6)反复执行步骤4和步骤5,直到整个卷积神经网络运算完成,然后将运算结果通过DMA搬运回DDR中,完成整个加速过程。
本发明的特点及有益效果是:
本发明提出的设计在卷积运算中实现了并行化计算,单个时钟周期能够完成512次乘累加。设计了片内存储结构,减少片外存储访问的同时实现了有效的数据复用,使用流水线技术实现了完整的卷积神经网路单层运算过程,提升了运算效率。
附图说明:
图1为本发明加速器整体的架构图;
图2为本发明中的卷积运算模块结构图;
图3为本发明中的PE模块结构图。
具体实施方式
本发明设计了一种基于FPGA的卷积神经网络加速器。本发明包括卷积运算模块,池化模块,DMA模块,指令控制模块,地址控制模块,内部RAM模块和指令RAM模块。本文提出的设计在卷积运算中实现了并行化计算,单个时钟周期能够完成512次乘累加。设计了片内存储结构,减少片外存储访问的同时实现了有效的数据复用,使用流水线技术实现了完整的卷积神经网路单层运算过程,提升了运算效率。
提供以下解决方案:
包括卷积运算模块,池化模块,DMA模块,指令控制模块,地址控制模块,内部RAM模块和指令RAM模块。
其中所述的卷积运算模块,用于对卷积神经网路中的卷积层进行运算。卷积运算模块包括8个PE模块,和一个加法器,其中PE模块主要负责卷积运算中乘法运算,一部分加法运算,以及归一化(Batch Normalization)运算,加法器责将8个PE模块的计算结果与内部RAM输入进来的中间结果相累加。
所述的的池化模块,用于对卷积神经网路中的池化层进行运算,其支持最大池化运算。池化模块由8个相同的子模块组成,8个子模块并行计算以达到提高计算效率的目的,子模块结构包括一个数据比较器,一个计数器和两个先进先出存储(FIFO),其中数据比较器负责将输入的数据依次比较,得到最大值结果,计数器负责记录输入比较器的数据个数,FIFO负责输入输出数据缓存。
所述的的DMA模块,用于卷积神经网络运算中的数据搬运工作,DMA模块包括三个DMA通道,分别为DMA图像通道,DMA权重通道,DMA指令通道。DMA图像通道负责从外部DDR中搬运图像数据到内部RAM中,以及从内部RAM中搬运运算后的数据到外部DDR中。DMA权重通道负责从外部DDR中搬运权重数据到卷积运算模块中。DMA指令通道负责从外部DDR中搬运指令数据到指令RAM中。
所述的指令控制模块,用于对指令的读取和分发工作,支持从指令RAM中读取数据,并将读取到的指令分发给卷积运算模块,池化模块,地址控制模块和DMA模块。
所述的地址控制模块,负责生成卷积运算模块和池化模块访问内部RAM的地址;
所述的内部RAM模块,负责存储卷积神经网络运算中的图像数据,权重数据,以及部分中间运算结果。
所述的指令RAM模块,负责存储控制各个模块的指令数据。
基于本发明架构的处理方法具体是:
1.将离线开发好的神经网络模型和参数转换成加速器能识别的神经网络指令。
2.将图像数据,权重数据和转换好的神经网络指令存入FPGA上的外部DDR中。
3.通过CPU启动加速器,加速器的DMA模块首先启动,将部分图像数据搬运到内部RAM中,将指令数据搬运到指令RAM中。
4.当图像数据和指令数据搬运完成后指令控制模块启动,从指令RAM中读取指令数据,分发给卷积运算模块和地址控制模块。卷积运算模块收到指令后,根据指令要求从内部RAM中读取图像数据同时从weight buffer中读取权重数据,并进行卷积运算,卷积运算后将数据送入RELU模块完成RELU运算。
5.卷积以及RELU运算完成后,指令控制模块将后面的指令分发给池化模块和相应的地址控制模块。池化模块收到指令后,从内部RAM中读取第4步运算后的数据,根据指令要求进行最大或平均池化运算,运算后将结果写回内部RAM。
6.反复执行步骤4和步骤5,直到整个卷积神经网络运算完成,然后将运算结果通过DMA搬运回DDR中,完成整个加速过程。
如图1所示,一种基于FPGA的神经网络加速器设计,包括卷积运算模块,池化模块,DMA模块,指令控制模块,地址控制模块,内部RAM模块和指令RAM模块。图中DMA模块负责从外部DDR中搬运图像数据,权重数据和指令数据,并负责将运算结果写回DDR,其中搬运进来的图像数据存放在内部RAM中,权重数据存放在weight buffer中,指令数据存放在指令RAM中,指令控制模块负责从指令RAM中读取指令数据分发给卷积运算模块,池化模块和这两个模块相对应的地址控制器。地址控制器1通过产生地址来访问内部RAM相应的特征图数据和权重数据并将这些数据送入卷积运算单元,同时负责将卷积模块以及RELU模块处理后的数据写回内部RAM中。地址控制器2负责从内部RAM中读取上一层卷积和RELU后的数据送入池化模块进行池化运算,然后将结果写回内部RAM中。
如图2所示,卷积运算单元,包括8个PE模块,和一个加法器,PE模块主要负责卷积运算中乘法运算,部分加法运算以及归一化(Batch Normalization)运算,加法器负责将8个PE模块的计算结果与内部RAM输入进来的中间结果相累加。PE模块结构如图3所示,8个PE模块每个模块中有一个weight buffer负责存储权重数据以便进行数据复用。输入PE的64个8bit特征值数据与相应的64个8bit权重数据对应相乘,然后将这64个结果累加起来加上偏置送入Batch Normalization模块进行归一化计算然后输出。
Claims (2)
1.一种基于FPGA的神经网络加速器,其特征是,包括卷积运算模块,池化模块,直接内存存取DMA模块,指令控制模块,地址控制模块,内部随机存取存储器RAM模块和指令RAM模块;
其中所述的卷积运算模块,用于对卷积神经网路中的卷积层进行运算,卷积运算模块包括8个运算处理PE模块,和一个加法器,其中PE模块负责卷积运算中乘法运算,一部分加法运算,以及归一化运算,加法器则将8个PE模块的计算结果与内部随机存取存储器RAM模块输入进来的中间结果相累加;
所述的池化模块,用于对卷积神经网路中的池化层进行运算,池化模块由8个相同的子模块组成,8个子模块并行计算,子模块结构包括一个数据比较器,一个计数器和两个先进先出存储FIFO,其中数据比较器负责将输入的数据依次比较,得到最大值结果,计数器负责记录输入比较器的数据个数,FIFO负责输入输出数据缓存;
所述的DMA模块,用于卷积神经网络运算中的数据搬运工作,DMA模块包括三个DMA通道,分别为DMA图像通道,DMA权重通道,DMA指令通道,DMA图像通道负责从双倍速率同步动态随机存储器DDR中搬运图像数据到内部RAM中,以及从内部RAM中搬运运算后的数据到外部DDR中,DMA权重通道负责从外部DDR中搬运权重数据到卷积运算模块中,DMA指令通道负责从外部DDR中搬运指令数据到指令RAM中;
所述的指令控制模块,用于对指令的读取和分发工作,支持从指令RAM中读取数据,并将读取到的指令分发给卷积运算模块,池化模块,地址控制模块和DMA模块;
所述的地址控制模块,负责生成卷积运算模块和池化模块访问内部随机存取存储器RAM模块的地址;
所述的内部随机存取存储器RAM模块,负责存储卷积神经网络运算中的图像数据,权重数据,以及部分中间运算结果;
所述的指令RAM模块,负责存储控制各个模块的指令数据。
2.一种基于FPGA的神经网络加速方法,其特征是,利用权利要求1所述的神经网络加速器,步骤如下:
1)将离线开发好的神经网络模型和参数转换成加速器能识别的神经网络指令;
2)将图像数据,权重数据和转换好的神经网络指令存入FPGA上的外部DDR中;
3)通过CPU启动加速器,加速器的DMA模块首先启动,将部分图像数据搬运到内部RAM中,将指令数据搬运到指令RAM中;
4)当图像数据和指令数据搬运完成后指令控制模块启动,从指令RAM中读取指令数据,分发给卷积运算模块和地址控制模块,卷积运算模块收到指令后,根据指令要求从内部RAM中读取图像数据同时从权重缓存单元weight buffer中读取权重数据,并进行卷积运算,卷积运算后将数据送入线性整流函数RELU运算模块完成RELU运算;
5)卷积以及RELU运算完成后,指令控制模块将后面的指令分发给池化模块和相应的地址控制模块,池化模块收到指令后,从内部RAM中读取步骤4)运算后的数据,根据指令要求进行最大或平均池化运算,运算后将结果写回内部RAM;
6)反复执行步骤4)和步骤5),直到整个卷积神经网络运算完成,然后将运算结果通过DMA搬运回DDR中,完成整个加速过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910845286.6A CN110852428B (zh) | 2019-09-08 | 2019-09-08 | 基于fpga的神经网络加速方法和加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910845286.6A CN110852428B (zh) | 2019-09-08 | 2019-09-08 | 基于fpga的神经网络加速方法和加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110852428A CN110852428A (zh) | 2020-02-28 |
CN110852428B true CN110852428B (zh) | 2023-10-27 |
Family
ID=69594775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910845286.6A Active CN110852428B (zh) | 2019-09-08 | 2019-09-08 | 基于fpga的神经网络加速方法和加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110852428B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111460905A (zh) * | 2020-03-05 | 2020-07-28 | 重庆大学 | 稀疏量化神经网络编码模式识别方法与系统 |
CN111401541A (zh) * | 2020-03-10 | 2020-07-10 | 湖南国科微电子股份有限公司 | 一种数据传输控制方法及装置 |
CN111416743B (zh) * | 2020-03-19 | 2021-09-03 | 华中科技大学 | 一种卷积网络加速器、配置方法及计算机可读存储介质 |
CN111340198B (zh) * | 2020-03-26 | 2023-05-05 | 上海大学 | 基于fpga的数据高度复用的神经网络加速器 |
CN111445018B (zh) * | 2020-03-27 | 2023-11-14 | 国网甘肃省电力公司电力科学研究院 | 基于加速卷积神经网络算法的紫外成像实时信息处理方法 |
CN113627600B (zh) * | 2020-05-07 | 2023-12-29 | 合肥君正科技有限公司 | 一种基于卷积神经网络的处理方法及其系统 |
CN111401543B (zh) * | 2020-06-08 | 2020-11-10 | 深圳市九天睿芯科技有限公司 | 一种全片上存储的神经网络加速器及其实现方法 |
CN111797034B (zh) * | 2020-06-24 | 2024-10-08 | 深圳云天励飞技术有限公司 | 一种数据管理方法、神经网络处理器和终端设备 |
CN112613605A (zh) * | 2020-12-07 | 2021-04-06 | 深兰人工智能(深圳)有限公司 | 神经网络加速控制方法、装置、电子设备及存储介质 |
CN113094118B (zh) * | 2021-04-26 | 2023-05-30 | 深圳思谋信息科技有限公司 | 数据处理系统、方法、装置、计算机设备和存储介质 |
CN113946538B (zh) * | 2021-09-23 | 2024-04-12 | 南京大学 | 一种基于行缓存机制的卷积层融合存储装置及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN108090565A (zh) * | 2018-01-16 | 2018-05-29 | 电子科技大学 | 一种卷积神经网络并行化训练加速方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10802992B2 (en) * | 2016-08-12 | 2020-10-13 | Xilinx Technology Beijing Limited | Combining CPU and special accelerator for implementing an artificial neural network |
-
2019
- 2019-09-08 CN CN201910845286.6A patent/CN110852428B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106940815A (zh) * | 2017-02-13 | 2017-07-11 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN108090565A (zh) * | 2018-01-16 | 2018-05-29 | 电子科技大学 | 一种卷积神经网络并行化训练加速方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110852428A (zh) | 2020-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110852428B (zh) | 基于fpga的神经网络加速方法和加速器 | |
CN109447241B (zh) | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 | |
CN109948774B (zh) | 基于网络层捆绑运算的神经网络加速器及其实现方法 | |
CN110458279B (zh) | 一种基于fpga的二值神经网络加速方法及系统 | |
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
CN108108809B (zh) | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 | |
WO2020258529A1 (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN110516801A (zh) | 一种高吞吐率的动态可重构卷积神经网络加速器架构 | |
CN111860773B (zh) | 处理装置和用于信息处理的方法 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN111353586A (zh) | 一种基于fpga实现cnn加速的系统 | |
CN114881217A (zh) | 一种基于fpga的通用型卷积神经网络加速器及其系统 | |
CN110598844A (zh) | 一种基于fpga的并行卷积神经网络加速器及加速方法 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
Shu et al. | High energy efficiency FPGA-based accelerator for convolutional neural networks using weight combination | |
CN113157638B (zh) | 一种低功耗存储器内计算处理器和处理运算方法 | |
CN108647780B (zh) | 面向神经网络的可重构池化操作模块结构及其实现方法 | |
CN109948787B (zh) | 用于神经网络卷积层的运算装置、芯片及方法 | |
US20230128421A1 (en) | Neural network accelerator | |
CN112346704B (zh) | 一种用于卷积神经网络的全流水线型乘加单元阵列电路 | |
CN115222028A (zh) | 基于fpga的一维cnn-lstm加速平台及实现方法 | |
Lyu et al. | FLNA: An energy-efficient point cloud feature learning accelerator with dataflow decoupling | |
Ou et al. | A configurable hardware accelerator based on hybrid dataflow for depthwise separable convolution | |
Isono et al. | A 12.1 TOPS/W mixed-precision quantized deep convolutional neural network accelerator for low power on edge/endpoint device | |
Wu et al. | Efficient inference of large-scale and lightweight convolutional neural networks on FPGA |
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 |