CN111626403A - 一种基于cpu-fpga内存共享的卷积神经网络加速器 - Google Patents
一种基于cpu-fpga内存共享的卷积神经网络加速器 Download PDFInfo
- Publication number
- CN111626403A CN111626403A CN202010408260.8A CN202010408260A CN111626403A CN 111626403 A CN111626403 A CN 111626403A CN 202010408260 A CN202010408260 A CN 202010408260A CN 111626403 A CN111626403 A CN 111626403A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- neural network
- calculation
- cpu
- 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.)
- Granted
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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7817—Specially adapted for signal processing, e.g. Harvard architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Signal Processing (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种基于CPU‑FPGA内存共享的卷积神经网络加速器,其中:CPU处理子系统包括输入控制模块、配置参数生成模块和输出控制模块;输入控制模块接收和缓存像素数据和权重数据;配置参数生成模块控制配置参数;输出控制模块控制数据的传输;FPGA加速子系统包括片上存储模块、计算引擎模块和控制模块;片上存储模块用于数据的缓冲和读写访问;计算引擎模块对计算进行加速;控制模块控制片上存储模块对数据的读写操作,与计算引擎模块的数据交换和计算控制。本发明既能充分发挥FPGA的高并行度、高吞吐率和低功耗特点,同时又能充分利用CPU处理器灵活高效的数据处理特点,从而使得整个系统能够以较低的功耗,高效快速实现卷积神经网络的推理过程。
Description
技术领域
本发明涉及神经网络技术领域,更具体的说是涉及一种基于CPU-FPGA内存共享的卷积神经网络加速器。
背景技术
卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。卷积神经网络具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类。随着深度学习理论的提出和数值计算设备的改进,卷积神经网络得到了快速发展,并被广泛应用于计算机视觉、自然语言处理等领域。
由于卷积神经网络计算的复杂性,通用CPU已经无法满足计算需求,现有解决方案主要是通过Caffe、Tensorflow和Kears等开发框架,在CPU服务器上部署。虽然CPU在并行计算方面有着天然的优势,但是成本和功耗较大,无法满足一些低功耗特定场景下的卷积神经网络的推理加速。由于FPGA具有强大的并行处理能力、灵活的可配置和超低功耗等特性,近年来受到越来越多研究者的关注,逐渐成为低功耗应用场景下实现卷积神经网络加速的重要平台。
因此,一种基于CPU-FPGA内存共享的卷积神经网络加速器及其加速方法是本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本发明提供了一种基于CPU-FPGA内存共享的卷积神经网络加速器,解决了卷积神经网络应用于功耗受限的嵌入式系统的技术问题,为低功耗应用场景下卷积神经网络加速计算提供了新的方法。
为了实现上述目的,本发明采用如下技术方案:
一种基于CPU-FPGA内存共享的卷积神经网络加速器,包括:CPU处理子系统和FPGA加速子系统;所述CPU处理子系统与所述FPGA加速子系统相连;
所述CPU处理子系统包括输入控制模块、配置参数生成模块和输出控制模块;
所述输入控制模块,用于接收和缓存像素数据和权重数据;
所述配置参数生成模块,用于根据卷积神经网络描述信息生成每一层的数据调度和计算控制配置参数;
所述输出控制模块,与所述输入控制模块和所述FPGA加速子系统分别相连,用于控制数据的传输;
所述FPGA加速子系统包括片上存储模块、计算引擎模块和FPGA控制模块;
所述片上存储模块,用于所述配置参数、输入输出数据的缓冲和读写访问;
所述计算引擎模块,用于对卷积神经网络推理过程的计算进行加速;
所述FPGA控制模块,用于根据所述配置参数,控制所述片上存储模块对数据的读写操作,并完成与所述计算引擎模块的数据交换和计算控制。
优选的,还包括片外存储器,所述片外存储器与所述输出控制模块相连,用于存储所述CPU处理子系统所产生的数据。
优选的,所述CPU处理子系统还包括数据预处理模块;
所述数据预处理模块,与所述输入控制模块相连,用于对接收到的所述像素和所述权重数据进行定点数量化和预处理,并进行存储。
优选的,所述数据预处理模块将量化后的三维像素展开为二维,保留输入通道维度,将像素长和宽两个维度合并后展开为一维,同时将量化后的三维权重展开为二维,保留输出通道维度,将输入通道维度和卷积核维度合并后展开为一维,最后将降维后的像素数据存储到所述数据预处理模块内的像素缓冲区和权重缓冲区中。
优选的,所述输出控制模块具体用于根据FPGA加速子系统完成整个卷积神经网络计算后产生的中断控制信号,取出卷积神经网络检测结果并进行输出。
优选的,所述片上存储模块包括输入存储单元、输出存储单元和配置参数存储单元,
所述输入存储单元,用于对输入的所述像素数据和所述权重数据进行缓存,所述计算引擎模块从所述输入存储单元内获取权重数据和像素数据进行计算;
所述输出存储单元,包括两个缓冲区,且两个缓冲区分时轮流作为数据收集缓冲区和数据发送缓冲区,其中所述数据收集缓冲区用于收集计算引擎模块计算得到的输出像素数据,所述数据发送缓冲区用于突发传输方式下将输出像素数据批量进行输出;
所述配置参数存储单元,用于存储整个卷积神经网络每一层的数据调度和计算控制配置参数。
优选的,所述输入存储单元包括Buffer存储层、Cache存储层和Regs存储层;
所述Buffer存储层,包括权重Buffer存储单元和像素Buffer存储单元,其中权重Buffer存储单元存储当前层所有输出通道对应的权重数据,像素Buffer存储单元存储当前层所有输入通道当前计算引擎模块需要的多个连续完整像素行数据;
所述Cache存储层,包括权重Cache存储单元和像素Cache储存单元,分别用于存储当前计算引擎模块需要的当前层多个输出通道对应的权重数据和当前层当前输入通道对应的由多个连续像素行和列所构成的像素块数据;
所述Regs存储层,用于存储正在参与计算引擎模块计算的权重和像素数据。
优选的,所述Buffer存储层采用双端口技术,数据的更新和读取同时进行。
优选的,所述权重Cache存储单元和所述像素Cache储存单元内均包括两个Cache存储器,分时轮流作为读和写Cache存储器,Cache存储器中数据块的更新采用窗口函数的方式实现。
优选的,所述计算引擎模块由处理单元阵列组成,所述处理单元阵列内的每个处理单元负责不同输出通道的计算;
所述处理单元包括卷积计算单元、池化处理单元、非线性激活单元和数据量化单元;
所述卷积计算单元,包括乘累加器阵列,每次计算一个输入通道的数据,分时计算所有通道的数据;
所述池化处理单元,配置为直通模式和非直通模式,其中直通模式下,跳过池化处理逻辑,将像素数据直接通过端口进行输出,非直通模式下,采用两级流水处理模式,第一级流水分时处理流入的相邻两行两列像素数据,第二级流水处理第一级流水产生的两次局部结果,得到最终池化结果,通过端口进行输出;
所述非线性激活单元,用于对所述卷积计算单元或所述池化处理单元的输出进行非线性变换;
所述数据量化单元,用于对所述非线性激活单元的输出进行动态定点数量化。
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种基于CPU-FPGA内存共享的卷积神经网络加速器,本发明将卷积神经网络推理过程中的配置信息生成过程等步骤采用CPU端来实现,将卷积计算过程、数据调度过程采用FPGA端实现,并通过高速AXI总线进行互联,采用此架构既能充分发挥FPGA的高并行度、高吞吐率和低功耗特点,同时又能充分利用CPU处理器灵活高效的数据处理特点,从而使得整个系统能够以较低的功耗,高效快速实现卷积神经网络的推理过程。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1附图为本发明提供的一种基于CPU-FPGA内存共享的卷积神经网络加速器的整体架构示意图;
图2附图为本发明提供的一种基于CPU-FPGA内存共享的卷积神经网络加速器中CPU处理子系统的结构示意图;
图3附图为本发明提供的一种基于CPU-FPGA内存共享的卷积神经网络加速器中输入存储单元的架构示意图;
图4附图为本发明提供的一种基于CPU-FPGA内存共享的卷积神经网络加速器中处理单元的架构示意图;
图5附图为本发明提供的一种基于CPU-FPGA内存共享的卷积神经网络加速器中池化处理单元的架构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例在Zynq UltraScale+MPSoC异构计算平台上设计和实现,实施例中用于验证设计的目标网络采用Yolo-Tiny,共包括9个卷积层和6个最大值池化层。
如图1和2所示,本发明实施例公开了一种基于CPU-FPGA内存共享的卷积神经网络加速器,包括:CPU处理子系统和FPGA加速子系统;CPU处理子系统与FPGA加速子系统相连;
CPU处理子系统包括输入控制模块、配置参数生成模块和输出控制模块;
输入控制模块,用于接收和缓存像素数据和权重数据;
配置参数生成模块,用于根据卷积神经网络描述信息生成每一层的数据调度和计算控制配置参数;
输出控制模块,与输入控制模块和FPGA加速子系统分别相连,用于控制数据的传输;
FPGA加速子系统包括片上存储模块、计算引擎模块和FPGA控制模块;
片上存储模块,用于配置参数、输入输出数据的缓冲和读写访问;
计算引擎模块,用于对卷积神经网络推理过程的计算进行加速;
FPGA控制模块,用于根据配置参数,控制片上存储模块对数据的读写操作,并完成与计算引擎模块的数据交换和计算控制。
需要说明的是:
输入控制模块采用TCP/IP协议,通过以太网接口接收像素数据和权重数据,并将其暂存在输入控制模块的接收缓冲区。
为了进一步实现上述技术方案,还包括片外存储器,片外存储器与输出控制模块相连,用于存储CPU处理子系统所产生的数据。
为了进一步实现上述技术方案,CPU处理子系统还包括数据预处理模块;
数据预处理模块,与输入控制模块相连,用于对接收到的像素和权重数据进行定点数量化和预处理,并进行存储。
需要说明的是:
所述FPGA控制模块包括:
AXIStream控制器、GPIO控制器、中断控制器、AXI4控制器和中央控制器;
其中,配置参数生成模块将配置信息参数通过AXIStream控制器写入FPGA端的配置参数存储单元,然后通过GPIO控制器向FPGA端的中央控制器发送CPU子系统Ready控制信号;AXI4总线控制器从片外存储器中读取权重数据和像素数据,中断控制器用于接收完成整个卷积神经网络计算产生的中断控制信号。
从接收缓冲区中取出数据,并对这些数据进行8比特定点数量化。
为了进一步实现上述技术方案,数据预处理模块将量化后的三维像素展开为二维,保留输入通道维度,将像素长和宽两个维度合并后展开为一维,同时将量化后的三维权重展开为二维,保留输出通道维度,将输入通道维度和卷积核维度合并后展开为一维,最后将降维后的像素数据存储到所述数据预处理模块内的像素缓冲区和权重缓冲区中。
为了进一步实现上述技术方案,输出控制模块具体用于根据中断控制器接收到的FPGA加速子系统完成整个卷积神经网络计算后产生的中断控制信号,取出卷积神经网络检测结果并通过UART接口进行输出。
为了进一步实现上述技术方案,片上存储模块包括输入存储单元、输出存储单元和配置参数存储单元;
输入存储单元,用于对输入的像素数据和权重数据进行缓存,计算引擎模块从输入存储单元内获取权重数据和像素数据进行计算;
输出存储单元,包括两个缓冲区,且两个缓冲区分时轮流作为数据收集缓冲区和数据发送缓冲区,其中数据收集缓冲区用于收集计算引擎模块计算得到的输出像素数据,数据发送缓冲区用于突发传输方式下将输出像素数据批量传输到片外存储器中;
配置参数存储单元,用于存储整个卷积神经网络每一层的数据调度和计算控制配置参数。
为了进一步实现上述技术方案,如图3所示,输入存储单元包括Buffer存储层、Cache存储层和Regs存储层;
Buffer存储层,包括权重Buffer存储单元和像素Buffer存储单元,其中权重Buffer存储单元存储当前层所有输出通道对应的权重数据,像素Buffer存储单元存储当前层所有输入通道当前计算引擎模块需要的多个连续完整像素行数据;
Cache存储层,包括权重Cache存储单元和像素Cache储存单元,分别用于存储当前计算引擎模块需要的当前层多个输出通道对应的权重数据和当前层当前输入通道对应的由多个连续像素行和列所构成的像素块数据;
Regs存储层,用于存储正在参与计算引擎模块计算的权重和像素数据。
为了进一步实现上述技术方案,Buffer存储层采用双端口技术,数据的更新和读取同时进行。
需要说明的是:
通过AXI4控制器从片外存储器中读取权重数据和像素数据。
为了进一步实现上述技术方案,权重Cache存储单元和像素Cache储存单元内均包括两个Cache存储器,分时轮流作为读和写Cache存储器,Cache存储器中数据块的更新采用窗口函数的方式实现。
需要说明的是:
窗口函数包括多个移位寄存器单元,通过数据移位操作,将过时数据移出窗口,自然截取所需要的权重和像素数据。
Regs存储层采用循环移位和相邻行寄存器组间赋值方式实现数据复用。
为了进一步实现上述技术方案,计算引擎模块由处理单元阵列组成,处理单元阵列内的每个处理单元负责不同输出通道的计算;
如图4所示,处理单元包括卷积计算单元、池化处理单元、非线性激活单元和数据量化单元;
卷积计算单元,包括乘累加器阵列,每次计算一个输入通道的数据,分时计算所有通道的数据;
池化处理单元的具体架构如图5所示,池化处理单元采用最大值池化,可配置为直通模式和非直通模式,直通模式和非直通模式,其中直通模式下,跳过池化处理逻辑,将像素数据直接通过端口进行输出,非直通模式下,采用两级流水处理模式,第一级流水分时处理流入的相邻两行两列像素数据,第二级流水处理第一级流水产生的两次局部结果,得到最终池化结果,通过端口进行输出;
非线性激活单元,用于对卷积计算单元或池化处理单元的输出进行非线性变换;
数据量化单元,用于对非线性激活单元的输出进行动态定点数量化。
需要说明的是:
乘累加器由一个乘法器、一个加法器和一个中间结果寄存器组成,每个乘累加器分时计算多个相邻卷积窗口。
非线性激活单元采用LeakyReLU激活函数,对卷积计算单元或池化处理单元的输出进行非线性变换;数据量化单元对非线性激活单元的输出进行8比特动态定点数量化。
本发明的工作原理为:
CPU处理子系统工作流程分为如下步骤:
第一步,通过以太网接口接收输入像素数据和权重数据,并将其暂存在接收缓冲区;
第二步,从接收缓冲区中取出数据,并对这些数据进行定点数量化和降维后存储到输入像素缓冲区和权重缓冲区中;
第三步,根据网络描述信息生成每一层的数据调度和计算控制配置参数,并将配置信息参数写入FPGA端的配置参数存储单元,然后通过GPIO控制器向FPGA端发送CPU子系统Ready控制信号;
第四步,根据FPGA端完成整个网络计算后产生的中断控制信号,从输出像素缓冲区中取出卷积神经网络检测结果,并通过UART口进行输出。
FPGA加速子系统工作流程分为如下步骤:
第一步,根据CPU子系统Ready控制信号,FPGA控制模块的中央控制器初始化片上存储模块、计算引擎模块,整个FPGA加速子系统开始工作;
第二步,中央控制器读取配置参数存储单元中当前卷积层数据调度和计算控制配置参数,并对存储模块、计算引擎模块和输出存储单元进行参数配置;
第三步,输入存储单元从片外存储器中读取权重数据和像素数据,通过分层方式进行存储;
第四步,计算引擎模块从输入存储单元中读取数据,并根据权重数据和像素数据进行卷积计算、池化、非线性激活和数据量化,并将最终的处理结果写入输出存储单元;
第五步,输出存储单元对计算引擎模块处理完的数据进行缓冲,并将其写入片外存储器中;
第六步,重复步骤三到步骤五,直到当前卷积层处理完毕;
第七步,重复步骤二到步骤六,直到整个卷积网络处理完毕;
第八步,中央控制器通过中断方式由中断控制器通知CPU处理子系统,网络计算处理完毕。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种基于CPU-FPGA内存共享的卷积神经网络加速器,其特征在于,包括:CPU处理子系统和FPGA加速子系统;所述CPU处理子系统与所述FPGA加速子系统通过高速AXI总线相连;
所述CPU处理子系统包括输入控制模块、配置参数生成模块和输出控制模块;
所述输入控制模块,用于接收和缓存像素数据和权重数据;
所述配置参数生成模块,用于根据卷积神经网络描述信息生成每一层的数据调度和计算控制配置参数;
所述输出控制模块,与所述输入控制模块和所述FPGA加速子系统分别相连,用于控制数据的传输;
所述FPGA加速子系统包括片上存储模块、计算引擎模块和FPGA控制模块;
所述片上存储模块,用于所述配置参数、输入输出数据的缓冲和读写访问;
所述计算引擎模块,用于对卷积神经网络推理过程的计算进行加速;
所述FPGA控制模块,用于根据所述配置参数,控制所述片上存储模块对数据的读写操作,并完成与所述计算引擎模块的数据交换和计算控制。
2.根据权利要求1所述的一种基于CPU-FPGA内存共享的卷积神经网络加速器,其特征在于,还包括片外存储器,所述片外存储器与所述输出控制模块相连,用于存储所述CPU处理子系统所产生的数据。
3.根据权利要求1所述的一种基于CPU-FPGA内存共享的卷积神经网络加速器,其特征在于,所述CPU处理子系统还包括数据预处理模块;
所述数据预处理模块,与所述输入控制模块相连,用于对接收到的所述像素数据和所述权重数据进行定点数量化和预处理,并进行存储。
4.根据权利要求3所述的一种基于CPU-FPGA内存共享的卷积神经网络加速器,其特征在于,所述数据预处理模块将量化后的三维像素展开为二维,保留输入通道维度,将像素长和宽两个维度合并后展开为一维,同时将量化后的三维权重展开为二维,保留输出通道维度,将输入通道维度和卷积核维度合并后展开为一维,最后将降维后的像素数据存储到所述数据预处理模块内的像素缓冲区和权重缓冲区中。
5.根据权利要求1所述的一种基于CPU-FPGA内存共享的卷积神经网络加速器,其特征在于,所述输出控制模块具体用于根据FPGA控制模块完成整个卷积神经网络计算后产生的中断控制信号,取出卷积神经网络检测结果并进行输出。
6.根据权利要求1所述的一种基于CPU-FPGA内存共享的卷积神经网络加速器,其特征在于,所述片上存储模块包括输入存储单元、输出存储单元和配置参数存储单元;
所述输入存储单元,用于对输入的所述像素数据和所述权重数据进行缓存,所述计算引擎模块从所述输入存储单元内获取权重数据和像素数据进行计算;
所述输出存储单元,包括两个缓冲区,且两个缓冲区分时轮流作为数据收集缓冲区和数据发送缓冲区,其中所述数据收集缓冲区用于收集计算引擎模块计算得到的输出像素数据,所述数据发送缓冲区用于突发传输方式下将输出像素数据批量进行输出;
所述配置参数存储单元,用于存储整个卷积神经网络每一层的数据调度和计算控制配置参数。
7.根据权利要求1所述的一种基于CPU-FPGA内存共享的卷积神经网络加速器,其特征在于,所述输入存储单元包括Buffer存储层、Cache存储层和Regs存储层;
所述Buffer存储层,包括权重Buffer存储单元和像素Buffer存储单元,其中权重Buffer存储单元存储当前层所有输出通道对应的权重数据,像素Buffer存储单元存储当前层所有输入通道当前计算引擎模块需要的多个连续完整像素行数据;
所述Cache存储层,包括权重Cache存储单元和像素Cache储存单元,分别用于存储当前计算引擎模块需要的当前层多个输出通道对应的权重数据和当前层当前输入通道对应的由多个连续像素行和列所构成的像素块数据;
所述Regs存储层,用于存储正在参与计算引擎模块计算的权重和像素数据。
8.根据权利要求7所述的一种基于CPU-FPGA内存共享的卷积神经网络加速器,其特征在于,所述Buffer存储层采用双端口技术,数据的更新和读取同时进行。
9.根据权利要求7所述的一种基于CPU-FPGA内存共享的卷积神经网络加速器,其特征在于,所述权重Cache存储单元和所述像素Cache储存单元内均包括两个Cache存储器,分时轮流作为读和写Cache存储器,Cache存储器中数据块的更新采用窗口函数的方式实现。
10.根据权利要求1所述的一种基于CPU-FPGA内存共享的卷积神经网络加速器,其特征在于,所述计算引擎模块由处理单元阵列组成,所述处理单元阵列内的每个处理单元负责不同输出通道的计算;
所述处理单元包括卷积计算单元、池化处理单元、非线性激活单元和数据量化单元;
所述卷积计算单元,包括乘累加器阵列,每次计算一个输入通道的数据,分时计算所有通道的数据;
所述池化处理单元,配置为直通模式和非直通模式,其中直通模式下,跳过池化处理逻辑,将像素数据直接通过端口进行输出,非直通模式下,采用两级流水处理模式,第一级流水分时处理流入的相邻两行两列像素数据,第二级流水处理第一级流水产生的两次局部结果,得到最终池化结果,通过端口进行输出;
所述非线性激活单元,用于对所述卷积计算单元或所述池化处理单元的输出进行非线性变换;
所述数据量化单元,用于对所述非线性激活单元的输出进行动态定点数量化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010408260.8A CN111626403B (zh) | 2020-05-14 | 2020-05-14 | 一种基于cpu-fpga内存共享的卷积神经网络加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010408260.8A CN111626403B (zh) | 2020-05-14 | 2020-05-14 | 一种基于cpu-fpga内存共享的卷积神经网络加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111626403A true CN111626403A (zh) | 2020-09-04 |
CN111626403B CN111626403B (zh) | 2022-05-10 |
Family
ID=72271849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010408260.8A Active CN111626403B (zh) | 2020-05-14 | 2020-05-14 | 一种基于cpu-fpga内存共享的卷积神经网络加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111626403B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112380158A (zh) * | 2020-10-20 | 2021-02-19 | 广东电网有限责任公司中山供电局 | 一种面向深度学习的计算平台 |
CN112732638A (zh) * | 2021-01-22 | 2021-04-30 | 上海交通大学 | 基于ctpn网络的异构加速系统及方法 |
CN112887319A (zh) * | 2021-02-01 | 2021-06-01 | 上海帆一尚行科技有限公司 | 一种基于下行流量的网络状态监控方法、装置和电子设备 |
CN112925741A (zh) * | 2021-03-29 | 2021-06-08 | 上海西井信息科技有限公司 | 异构计算方法和系统 |
CN113673704A (zh) * | 2021-07-05 | 2021-11-19 | 中国电子科技集团公司第十五研究所 | 一种基于软硬件协同加速的关系网络推理优化的方法 |
CN113780529A (zh) * | 2021-09-08 | 2021-12-10 | 北京航空航天大学杭州创新研究院 | 一种面向fpga的稀疏卷积神经网络多级存储计算系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180032859A1 (en) * | 2016-07-27 | 2018-02-01 | Samsung Electronics Co., Ltd. | Accelerator in convolutional neural network and method for operating the same |
CN109086867A (zh) * | 2018-07-02 | 2018-12-25 | 武汉魅瞳科技有限公司 | 一种基于fpga的卷积神经网络加速系统 |
CN109102065A (zh) * | 2018-06-28 | 2018-12-28 | 广东工业大学 | 一种基于PSoC的卷积神经网络加速器 |
CN109934339A (zh) * | 2019-03-06 | 2019-06-25 | 东南大学 | 一种基于一维脉动阵列的通用卷积神经网络加速器 |
CN110991632A (zh) * | 2019-11-29 | 2020-04-10 | 电子科技大学 | 一种基于fpga的异构神经网络计算加速器设计方法 |
-
2020
- 2020-05-14 CN CN202010408260.8A patent/CN111626403B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180032859A1 (en) * | 2016-07-27 | 2018-02-01 | Samsung Electronics Co., Ltd. | Accelerator in convolutional neural network and method for operating the same |
CN109102065A (zh) * | 2018-06-28 | 2018-12-28 | 广东工业大学 | 一种基于PSoC的卷积神经网络加速器 |
CN109086867A (zh) * | 2018-07-02 | 2018-12-25 | 武汉魅瞳科技有限公司 | 一种基于fpga的卷积神经网络加速系统 |
CN109934339A (zh) * | 2019-03-06 | 2019-06-25 | 东南大学 | 一种基于一维脉动阵列的通用卷积神经网络加速器 |
CN110991632A (zh) * | 2019-11-29 | 2020-04-10 | 电子科技大学 | 一种基于fpga的异构神经网络计算加速器设计方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112380158A (zh) * | 2020-10-20 | 2021-02-19 | 广东电网有限责任公司中山供电局 | 一种面向深度学习的计算平台 |
CN112380158B (zh) * | 2020-10-20 | 2022-02-11 | 广东电网有限责任公司中山供电局 | 一种面向深度学习的计算平台 |
CN112732638A (zh) * | 2021-01-22 | 2021-04-30 | 上海交通大学 | 基于ctpn网络的异构加速系统及方法 |
CN112732638B (zh) * | 2021-01-22 | 2022-05-06 | 上海交通大学 | 基于ctpn网络的异构加速系统及方法 |
CN112887319A (zh) * | 2021-02-01 | 2021-06-01 | 上海帆一尚行科技有限公司 | 一种基于下行流量的网络状态监控方法、装置和电子设备 |
CN112887319B (zh) * | 2021-02-01 | 2022-07-01 | 上海帆一尚行科技有限公司 | 一种基于下行流量的网络状态监控方法、装置和电子设备 |
CN112925741A (zh) * | 2021-03-29 | 2021-06-08 | 上海西井信息科技有限公司 | 异构计算方法和系统 |
CN112925741B (zh) * | 2021-03-29 | 2023-01-24 | 上海西井信息科技有限公司 | 异构计算方法和系统 |
CN113673704A (zh) * | 2021-07-05 | 2021-11-19 | 中国电子科技集团公司第十五研究所 | 一种基于软硬件协同加速的关系网络推理优化的方法 |
CN113780529A (zh) * | 2021-09-08 | 2021-12-10 | 北京航空航天大学杭州创新研究院 | 一种面向fpga的稀疏卷积神经网络多级存储计算系统 |
CN113780529B (zh) * | 2021-09-08 | 2023-09-12 | 北京航空航天大学杭州创新研究院 | 一种面向fpga的稀疏卷积神经网络多级存储计算系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111626403B (zh) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111626403B (zh) | 一种基于cpu-fpga内存共享的卷积神经网络加速器 | |
CN110390385B (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN111459877B (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
CN108108809B (zh) | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 | |
CN105681628B (zh) | 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法 | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
CN108805272A (zh) | 一种基于fpga的通用卷积神经网络加速器 | |
WO2019007406A1 (zh) | 一种数据处理装置和方法 | |
CN110321997B (zh) | 高并行度计算平台、系统及计算实现方法 | |
CN111325321A (zh) | 基于多神经网络融合的类脑计算系统及指令集的执行方法 | |
CN107085562B (zh) | 一种基于高效复用数据流的神经网络处理器及设计方法 | |
CN110543939A (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现架构 | |
CN111898733A (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN112633490B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
CN111582465B (zh) | 基于fpga的卷积神经网络加速处理系统、方法以及终端 | |
Tu et al. | A power efficient neural network implementation on heterogeneous FPGA and GPU devices | |
CN110705702A (zh) | 一种动态可扩展的卷积神经网络加速器 | |
CN113344179B (zh) | 基于fpga的二值化卷积神经网络算法的ip核 | |
CN110991630A (zh) | 一种面向边缘计算的卷积神经网络处理器 | |
CN113792621B (zh) | 一种基于fpga的目标检测加速器设计方法 | |
CN111860773B (zh) | 处理装置和用于信息处理的方法 | |
CN115423081A (zh) | 一种基于fpga的cnn_lstm算法的神经网络加速器 | |
CN113516236A (zh) | 基于zynq平台的vgg16网络并行加速处理方法 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
CN114519425A (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 |