CN111931909B - 一种基于fpga的轻量卷积神经网络可重构部署方法 - Google Patents
一种基于fpga的轻量卷积神经网络可重构部署方法 Download PDFInfo
- Publication number
- CN111931909B CN111931909B CN202010725440.9A CN202010725440A CN111931909B CN 111931909 B CN111931909 B CN 111931909B CN 202010725440 A CN202010725440 A CN 202010725440A CN 111931909 B CN111931909 B CN 111931909B
- Authority
- CN
- China
- Prior art keywords
- control unit
- bram
- data
- weight
- buffer
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
-
- 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)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明提出了一种基于FPGA的轻量卷积神经网络可重构部署方法,在部署时通过配置卷积窗口列数与输出通道数等参数实现对不同资源状况的FPGA平台的适配,在运行前通过配置不同卷积层卷积核尺寸、池化步长、输入输出特征图尺寸、输入输出通道数实现对不同网络层的适配,构建基于FPGA的轻量卷积神经网络加速器实现网络可重构部署,轻量卷积神经网络加速器包括片外DDR数据交互单元、片上存储缓冲处理单元、计算引擎和中心控制单元。可以实现针对不同的FPGA平台,选择不同的实现方案进行部署,以最大程度地利用FPGA平台的现有资源,充分发挥FPGA平台的高并行度、高吞吐率与低功耗的特性,在较低功耗的情况下,高效快速地实现卷积神经网络推理加速。
Description
技术领域
本发明涉及人工智能技术领域,更具体的说是涉及一种基于FPGA的轻量卷积神经网络可重构部署方法。
背景技术
目前,由于CPU平台不能提供足够的计算能力,GPU凭借强大的计算性能,成为了首选神经网络处理平台。但是,GPU功耗较大,在对功耗要求较高的嵌入式平台部署比较困难。基于FPGA的神经网络推理加速器,已经成为新的研究热点,有望在计算速度和能效方面超越GPU平台。
当前的卷积神经网络FPGA部署方案面临两个方面的挑战:首先,通常FPGA的工作频率为100~300MHz,远低于CPU和GPU的工作频率,同时由于FPGA的片上资源有限,只进行简单的设计很难达到较高的计算性能和能效。其次,由于开发基于FPGA的应用,缺乏像Caffe和Tensorflow这样的开发框架,因此,与CPU和GPU相比,开发FPGA应用要困难很多。而且神经网络算法的计算和存储复杂性都很高,权衡模型规模和算法精度是一个开放性问题。大规模的网络很难应用在对能耗和延时有严格要求的应用场景下。
因此,如何解决卷积神经网络部署于计算资源、存储资源以及访存带宽受限的FPGA平台是本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本发明提供了一种基于FPGA的轻量卷积神经网络可重构部署方法,在部署时通过配置卷积窗口列数与输出通道数等参数实现对不同资源状况的FPGA平台的适配,在运行前通过配置不同卷积层卷积核尺寸、池化步长、输入输出特征图尺寸、输入输出通道数实现对不同网络层的适配。基于FPGA硬件实现卷积神经网络推理过程中常用的卷积计算、量化计算、ReLU激活计算与最大池化计算过程,构建基于FPGA的轻量卷积神经网络加速器实现网络可重构部署,轻量卷积神经网络加速器包括片外DDR数据交互单元、片上存储缓冲处理单元、计算引擎和中心控制单元。可以实现针对不同的FPGA平台,选择不同的实现方案进行部署,以最大程度地利用FPGA平台的现有资源,充分发挥FPGA平台的高并行度、高吞吐率与低功耗的特性,在较低功耗的情况下,高效快速地实现卷积神经网络推理加速。
为了实现上述目的,本发明采用如下技术方案:
基于FPGA的轻量卷积神经网络可重构部署方法,包括以下具体步骤:
步骤1:进行片上计算资源可重构:在部署时,根据部署的FPGA平台的可用DSP数量,综合要部署的轻量卷积神经网络卷积窗口大小,选择部署方案,进行所述片上计算资源的可重构;卷积计算窗口的列数为X,输出通道数为M,则卷积计算单元和量化计算单元均会占用所述列数X与所述输出通道数M乘积数量的DSP,部署的所述FPGA平台的所述可用DSP数量大于2倍的所述列数X与所述输出通道数M乘积数量;其中,所述列数X小于16,所述输出通道数M为16、32或64;
步骤2:进行片上存储资源可重构:在运行前,根据要部署的轻量卷积神经网络结构,更改配置参数单元中的卷积层相关参数,以实现所述片上存储资源可重构;其中,在所述配置参数单元添加相应数量卷积层的配置参数,令偏置BRAM与量化参数BRAM足够存储所有所述卷积层的偏置与量化参数;卷积核尺寸为1或3,分别代表所述卷积核尺寸为1×1与3×3的所述卷积层;池化步长为0、1或2,分别代表池化核尺寸为2×2不池化、步长1池化与步长2池化的最大值池化层;首层输入特征图尺寸为部署卷积计算窗口列数X的偶数倍,其余各层输入特征图尺寸是上一层输入特征图经卷积池化处理后的输出特征图尺寸,每个输入特征图BRAM足够存储每一层卷积层全部输入通道X列数据的输入特征图,所述输入特征图尺寸的最小值是部署卷积计算窗口列数X;首层输入通道数为3,其余各层所述输入通道数与上一层所述输出通道数保持一致,每个权重BRAM足够存储每一层所述卷积层的全部输入通道与M个输出通道的权重;所述卷积层设置所述输出通道数为部署卷积计算窗口输出通道数M的倍数,最大为1024,每个所述输入特征图BRAM足够存储所述卷积层全部所述输入通道的所述X列输入特征图;
步骤3:根据所述卷积窗口大小和所述配置参数构建基于FPGA的轻量卷积神经网络加速器,利用所述轻量卷积神经网络加速器进行所述轻量卷积神经网络可重构部署。
优选的,所述轻量卷积神经网络加速器包括片外DDR数据交互单元、片上存储缓冲处理单元、计算引擎和中心控制单元;所述片外DDR数据交互单元从片外DDR读取输入特征图数据、权重数据、偏置数据与量化参数数据,并向所述片外DDR写入输出特征图数据;所述片上存储缓冲单元存储所述输入特征图数据、所述权重数据、所述偏置数据、所述量化参数数据与所述输出特征图数据;所述计算引擎进行所述输入特征图数据、所述权重数据、所述偏置数据与所述量化参数数据的卷积计算;所述中心控制单元根据当前卷积层参数,控制所述输入特征图数据、所述权重数据、所述偏置数据与所述量化参数的预加载,输出卷积结果数据的缓冲写入以及所述计算引擎的计算过程。
优选的,所述片上存储缓冲处理单元包括输入特征图缓冲处理单元、权重缓冲处理单元、偏置与量化参数缓冲处理单元和输出特征图缓冲处理单元。
优选的,根据所述卷积计算窗口的所述列数X与所述输出通道数M构建所述计算引擎,所述的计算引擎由M个单输出通道计算单元构成,M为卷积计算窗口输出通道数;
所述单输出通道计算单元由X列2行卷积计算单元、X列量化计算单元、X列ReLU激活计算单元、最大池化计算单元、卷积计算部分和FIFO与池化结果缓存FIFO构成;
所述X列2行卷积计算单元由X*2个卷积计算单元构成;所述卷积计算单元由1个乘法器、1个加法器、1个中间和Reg构成;在所述卷积计算单元先利用所述乘法器将所述8bit输入特征图数据与所述8bit权重数据相乘获得16bit结果,再利用所述加法器将所述16bit结果与所述中间和Reg暂存的24bit中间和相加,加法器结果作为卷积计算结果存入所述中间和Reg;
所述X列量化计算单元由X个量化计算单元构成;所述量化计算单元由1个乘法器、1个移位计算器和1个8bit量化结果Reg构成;先利用所述乘法器将所述卷积计算结果与16bit量化参数中的高8bit的Scale_M参数相乘,再利用所述位移计算器将乘法器结果经移位运算向右移位,移位数是所述16bit量化参数中的低8bit的Scale_N参数,最后将移位结果中的低8bit作为量化计算结果,存入所述8bit量化结果Reg;
所述X列ReLU激活计算单元由X个ReLU激活计算单元构成;所述ReLU激活计算单元由1个比较器与1个8bit ReLU激活结果Reg构成;将所述量化计算结果与0进行比较,较大者作为ReLU激活计算结果,存入所述8bit ReLU激活计算结果Reg;
所述最大池化计算单元由1个X+1列1行缓冲Buffer、3*(X+1)/2个比较器和1个(X+1)/2列1行池化结果Reg组成;先将X列所述ReLU激活计算结果中的第0行经补列后存入所述X+1列1行缓冲Buffer,再对经补列后的第1行与所述X+1列1行缓冲Buffer中的X+1列第0行ReLU激活计算结果进行2×2最大池化计算,较大者作为池化结果,存入(X+1)/2列1行池化结果Reg;
所述卷积计算部分和FIFO暂存部分输入通道X列2行的卷积计算24bit中间和,位宽为24*X,在存入前,将X列2行中间和转串行为X列1行;
所述池化结果缓存FIFO暂存前一个(X+1)/2列1行的最大池化计算结果,位宽为8*(X+1)/2。
优选的,根据所述配置参数构建所述中心控制单元,所述的中心控制单元包括参数配置单元和控制中心单元;
所述参数配置单元,预存每层卷积层的配置参数,包括卷积核尺寸,池化步长,输入特征图尺寸,输入通道数量,输出通道数量,下一层的卷积核尺寸,根据当前卷积计算状态加载不同卷积层的配置参数;
所述控制中心单元,根据所述参数配置单元的所述当前卷积层参数,分别对所述片外DDR数据交互单元、所述片上存储缓冲处理单元与所述计算引擎进行动态配置,控制所述输入特征图数据、所述权重数据、所述偏置数据与所述量化参数从所述片外DDR的读取加载,所述输出卷积结果数据向所述片外DDR的写入以及卷积计算过程。
优选的,所述的输入特征图缓冲处理单元包括输入特征图BRAM存储层、输入特征图Buffer存储层和输入特征图Reg存储层;
所述输入特征图BRAM存储层由4个输入特征图BRAM读写单元、1个输入特征图BRAM更新控制单元和1个输入特征图BRAM读取控制单元构成;所述输入特征图BRAM读写单元实现输入特征图BRAM实例,输入特征图BRAM采用双端口,更新与读取同时进行,存储当前层全部输入通道的X列8bit输入特征图数据,位宽为8*X,X为卷积计算窗口输入特征图列数;所述输入特征图BRAM更新控制单元根据待加载卷积层的输入特征图尺寸和输入通道数量,计算得到读片外DDR的所述突发传输次数与所述读DDR地址,传入所述读片外DDR控制单元,接收所述读片外DDR控制单元读取到的所述输入特征图数据,更新所述中心控制单元生成的待更新BRAM编号对应的输入特征图数据BRAM地址;所述输入特征图BRAM读取控制单元同时读取4个所述输入特征图BRAM的所述输入特征图数据,传入输入特征图Buffer存储层;
所述输入特征图Buffer存储层由输入特征图Buffer、输入特征图Buffer更新控制单元与输入特征图Buffer移位控制单元构成;所述输入特征图Buffer存储当前X+2列8bit所述输入特征图数据,位宽为8*(X+2),接收从所述输入特征图BRAM读取控制单元读取到的共4个X列8bit所述输入特征图数据;所述输入特征图Buffer更新控制单元根据当前所述中心控制单元生成的所述BRAM编号,分别确定X+2列8bit所述输入特征图数据中的左1列数据、中间X列数据与右1列数据,更新当前所述输入特征图Buffer;所述输入特征图Buffer移位控制单元对所述输入特征图Buffer进行移位处理,生成用于卷积计算的X列2行8bit所述输入特征图数据传入所述输入特征图Reg存储层;
所述输入特征图Reg存储层由2*X个输入特征图Reg与1个输入特征图Reg更新控制单元构成;所述输入特征图Reg存储1列8bit所述输入特征图数据;所述输入特征图Reg更新控制单元接收从所述输入特征图Buffer移位控制单元传入的X列2行8bit所述输入特征图数据,更新全部所述输入特征图Reg的所述输入特征图数据。
优选的,所述的权重缓冲处理单元包括权重BRAM存储层、权重Buffer存储层和权重Reg存储层;
所述权重BRAM存储层由2个权重BRAM读写单元、1个权重BRAM更新控制单元与1个权重BRAM读取控制单元构成;所述权重BRAM读写单元实现权重BRAM实例,权重BRAM采用双端口,更新与读取同时进行,存储当前卷积层的全部输入通道和M输出通道的8bit所述权重数据,位宽为8*M;所述权重BRAM更新控制单元根据所述待加载卷积层的卷积核尺寸和所述输入通道数量,计算得到所述读片外DDR是所述突发传输次数与所述读DDR地址,传入所述读片外DDR控制单元,接收所述读片外DDR控制单元读取到的所述权重数据,更新所述中心控制单元生成的所述待更新BRAM编号对应的权重BRAM地址;所述权重BRAM读取控制单元读取所述中心控制单元生成的所述待读取BRAM编号对应的BRAM的权重数据,传入所述权重Buffer存储层;
所述权重Buffer存储层由9个权重缓冲Buffer、1个权重Buffer更新控制单元与1个权重Buffer读取控制单元构成;所述权重缓冲Buffer存储当前所述M输出通道8bit权重数据,位宽为8*M;所述权重Buffer更新控制单元接收从所述权重BRAM读取控制单元读取到的所述权重数据,依次写入所述权重缓冲Buffer中;所述权重Buffer读取控制单元依次读取所述权重缓冲Buffer中的所述权重数据,传入所述权重Reg存储层;
所述权重Reg存储层由权重缓冲Reg与权重Reg更新控制单元构成;所述权重缓冲Reg存储1输出通道所述8bit权重数据,共M个;所述权重Reg更新控制单元接收从所述权重Buffer读取控制单元传入的所述M输出通道所述8bit权重数据,更新权重缓冲Reg。
优选的,所述的偏置与量化参数缓冲处理单元包括偏置缓冲处理单元与量化参数缓冲处理单元;
所述偏重缓冲处理单元包括偏置BRAM存储层和偏置Reg存储层;
所述偏置BRAM存储层由1个偏置BRAM读写单元、1个偏置BRAM更新控制单元和1个偏置BRAM读取控制单元构成;所述偏置BRAM读写单元实现偏置BRAM实例,偏置BRAM采用双端口,更新与读取同时进行,存储当前层M输出通道的16bit偏置数据,位宽为16*M;所述偏置BRAM更新控制单元根据待加载所有卷积层的输出通道数量,计算得到所述读片外DDR是所述突发传输次数与所述读DDR地址,传入所述读片外DDR控制单元,接收所述读片外DDR控制单元读取到的所述偏置数据,依次更新所述偏置BRAM;所述偏置BRAM读取控制单元读取所述偏置BRAM的所述M输出通道的所述偏置数据并传入所述偏置Reg存储层;
所述偏置Reg存储层由偏置Reg与偏置Reg更新控制单元构成;所述偏置Reg存储1输出通道所述16bit偏置数据,共M个;所述偏置Reg更新控制单元接收从所述偏置BRAM读取控制单元传入的所述M输出通道的所述16bit偏置数据,更新权重缓冲Reg;
所述量化参数缓冲处理单元包括量化参数BRAM存储层和量化参数Reg存储层;
所述量化参数BRAM存储层由1个量化参数BRAM读写单元、1个量化参数BRAM更新控制单元和1个量化参数BRAM读取控制单元构成;所述量化参数BRAM读写单元实现量化参数BRAM实例,量化参数BRAM采用双端口,更新与读取同时进行,存储所述当前层M输出通道的16bit量化参数数据,位宽为16*M;所述量化参数BRAM更新控制单元由待加载所有卷积层的输出通道数量,计算得到所述读片外DDR的所述突发传输次数与所述读DDR地址,传入所述读片外DDR控制单元,接收所述读片外DDR控制单元读取到的所述量化参数数据,依次更新所述量化参数BRAM;所述量化参数BRAM读取控制单元读取所述量化参数BRAM的所述量化参数数据并传入所述量化参数Reg存储层;
所述量化参数Reg存储层由量化参数Reg与量化参数Reg更新控制单元构成;所述量化参数Reg存储1输出通道所述16bit量化参数数据,共M个;所述量化参数Reg更新控制单元接收从所述量化参数BRAM读取控制单元传入的所述M输出通道的所述16bit量化参数数据,更新量化参数缓冲Reg。
优选的,所述的输出特征图缓冲处理单元包括计算层输出缓冲处理单元与顶层输出缓冲处理单元;
所述计算层输出缓冲处理单元由M个计算层FIFO、1个计算层FIFO更新控制单元与1个计算层FIFO读取控制单元构成;所述计算层FIFO存储当前计算层所述计算引擎中的所述计算单元的X列8bit计算结果,位宽8*X;所述计算层FIFO更新控制单元接收所述计算结果,依次存入所述计算层FIFO;所述计算层FIFO读取控制单元依次读取所述计算层FIFO中的所述计算结果,传入所述顶层输出缓冲处理单元;
所述顶层输出缓冲处理单元由顶层FIFO、顶层FIFO更新控制单元与顶层FIFO读取控制单元构成;所述顶层FIFO存储所述计算引擎中的M个所述计算单元的X列8bit所述计算结果,位宽8*X;所述顶层FIFO更新控制单元分别读取M个所述计算层FIFO,将所有所述计算层FIFO中的计算结果存入所述顶层FIFO,将并行计算结果转化为串行;所述顶层FIFO读取控制单元依次读取所述计算层FIFO中的所述计算结果,传入所述写片外DDR控制单元。
优选的,所述的片外DDR数据交互单元包括读片外DDR控制单元和写片外DDR控制单元;
所述读片外DDR控制单元使用AXI FULL协议总线读取片外DDR数据,单次突发传输数据带宽为128bit,单次突发传输数据数量为256,所述单次突发传输数据数量等于片外DDR单页数据量,突发传输次数和读DDR地址由偏置BRAM更新控制单元、量化参数BRAM更新控制单元、权重BRAM更新控制单元与输入特征图BRAM更新控制单元确定,读取数据优先级由高到低为偏置、量化参数、权重、输入特征图,读取到的所述片外DDR数据传入所述偏置BRAM更新控制单元、所述量化参数BRAM更新控制单元、所述权重BRAM更新控制单元与所述输入特征图BRAM更新控制单元。
所述写片外DDR控制单元使用所述AXI FULL协议总线向片外DDR写入数据,所述单次突发传输数据带宽为128bit,所述单次突发传输数据数量为256,所述单次突发传输数据数量等于所述片外DDR单页数据量,所述突发传输次数和写入DDR地址由顶层输出特征图FIFO读取控制单元确定,接收所述顶层输出特征图FIFO读取控制单元读取的所述输出特征图数据,写入相应的所述片外DDR地址。
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种基于FPGA的轻量卷积神经网络可重构部署方法,根据FPGA可用DSP数量与轻量卷积神经网络卷积计算窗口大小确定卷积计算窗口列数与输出通道数,在运行前根据FPGA平台可用BRAM数量与轻量卷积神经网络结构确定不同卷积层配置参数。在Xilinx ZCU102异构计算平台上,基于13×2×64卷积计算窗口的设计策略,针对包括9个卷积层、9个ReLU层和6个最大值池化层,输入特征图尺寸为416×416×3,输出特征图尺寸13×13×255,最大输出通道数为512的Yolo-Tiny骨干网络,设计一种包括片外DDR数据交互单元、片上存储缓冲处理单元、计算引擎以及中心控制单元的轻量卷积神经网络加速器,利用该轻量卷积神经网络加速器实现可重构部署。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1附图为本发明提供的轻量卷积神经网络加速器架构图;
图2附图为本发明提供的输入特征图缓冲处理单元结构示意图;
图3附图为本发明提供的权重缓冲处理单元结构示意图;
图4附图为本发明提供的输出特征图缓冲处理单元结构示意图;
图5附图为本发明提供的计算单元结构示意图;
图6附图为本发明提供的卷积计算单元结构示意图;
图7附图为本发明提供的量化计算单元结构示意图;
图8附图为本发明提供的ReLU激活计算单元结构示意图;
图9附图为本发明提供的池化计算单元结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种基于FPGA的轻量卷积神经网络可重构部署方法,包括以下具体步骤:
S1:片上计算资源可重构中,假设卷积计算窗口的列数为X,输出通道数为M,那么,卷积计算单元和量化计算单元都会占用列数X与输出通道数M乘积数量的DSP,即要部署的FPGA平台的可用DSP数量应多于2倍的列数X与输出通道数M乘积数量,其中列数X应小于16,输出通道数M应该为16、32或64;
S2:在片上存储资源可重构中,卷积层数理论上没有限制,需在配置参数单元添加相应数量卷积层的配置参数,要保证偏置BRAM与量化参数BRAM足够存储所有卷积层的偏置与量化参数;卷积核尺寸只支持1与3,分别代表卷积核尺寸为1×1与3×3的卷积层;池化步长支持0、1与2,分别代表池化核尺寸为2×2,不池化、步长1池化与步长2池化的最大值池化层;首层输入特征图尺寸应该为部署卷积计算窗口列数X的偶数倍,其余各层输入特征图尺寸是上一层输入特征图经卷积池化处理后的输出特征图尺寸,要保证每个输入特征图BRAM足够存储每一层卷积层全部输入通道M列数据的输入特征图,输入特征图尺寸的最小值是部署卷积计算窗口列数X;首层输入通道数应该为3,其余各层输入通道数应该与上一层输出通道数保持一致,要保证每个权重BRAM足够存储每一层卷积层的全部输入通道与M个输出通道的权重;卷积层设置输出通道数为部署卷积计算窗口输出通道数M的倍数,最大不应该超过1024,保证每个输入特征图BRAM足够存储全部输入通道的X列输入特征图;
S3:根据卷积窗口大小和配置参数构建基于FPGA的轻量卷积神经网络加速器,利用轻量卷积神经网络加速器进行轻量卷积神经网络可重构部署。
为了进一步优化上述技术方案,基于FPGA的轻量卷积神经网络加速器包括:片外DDR数据交互单元、片上存储缓冲处理单元、计算引擎与中心控制单元;
为了进一步优化上述技术方案,片外DDR数据交互单元包括读片外DDR控制单元与写片外DDR控制单元;读片外DDR控制单元,根据需要加载数据所在的片外DDR地址,通过AXI-FULL协议总线与片外DDR进行数据交互,接收突发传输数据,传输给输入特征图BRAM更新控制单元、权重BRAM更新控制单元、偏置BRAM更新控制单元与量化参数BRAM更新控制单元;写片外DDR控制单元,根据需要写入的片外DDR地址和突发传输次数,接收顶层输出特征图FIFO读取控制单元读取到的输出特征图数据,通过AXI-FULL协议总线与片外DDR进行数据交互,进行数据突发传输,将卷积计算输出结果写入片外DDR。
为了进一步优化上述技术方案,片上存储缓冲处理单元包括输入特征图缓冲处理单元、权重缓冲处理单元、偏置与量化参数缓冲处理单元以及输出特征图缓冲处理单元。
为了进一步优化上述技术方案,输入特征图缓冲处理单元包括输入特征图BRAM读写单元、输入特征图BRAM更新控制单元、输入特征图BRAM读取控制单元与输入特征图Buffer更新控制单元。
为了进一步优化上述技术方案,输入特征图BRAM读写单元,负责实现输入缓冲BRAM实例,根据写地址信号向输入缓冲BRAM中写入输入缓冲数据,根据读地址信号从输入缓冲BRAM中读取输入数据;输入特征图BRAM更新控制单元,根据待加载卷积层的输入特征图尺寸和输入通道数量,接收读片外DDR控制单元读取到的输入特征图数据,通过输入特征图BRAM读写单元向输入特征图BRAM写入输入特征图数据;输入特征图BRAM读取控制单元,根据当前输入特征图尺寸和卷积核尺寸,通过输入数据缓冲BRAM读写单元从输入数据缓冲BRAM的读地址读取输入缓冲数据,向输入特征图Buffer控制单元写入第0行和第1行原始输入数据;输入特征图Buffer更新控制单元,接收从输入数据缓冲读控制单元中读取的第0行和第1行原始输入特征图,经过移位运算,依次向计算引擎写入第0行和第1行输入特征图数据。
为了进一步优化上述技术方案,权重缓冲处理单元包括权重BRAM读写单元、权重BRAM更新控制单元、权重BRAM读取控制单元、权重Buffer、权重Buffer更新控制单元与权重Buffer读取控制单元;权重BRAM读写单元,负责实现权重缓冲BRAM实例,根据写地址信号向权重缓冲BRAM中写入输入缓冲数据,根据读地址信号从权重缓冲BRAM中读取权重数据;权重BRAM更新控制单元,根据待加载卷积层的卷积核尺寸和输入通道数量,接收读片外DDR控制单元读取到的权重数据,通过权重BRAM读写单元向权重缓冲BRAM写入权重缓冲数据;权重BRAM读取控制单元,根据当前卷积核尺寸,通过权重BRAM读写单元从权重缓冲BRAM的读地址读取权重缓冲数据,向权重Buffer更新控制单元写权重数据;权重Buffer更新控制单元将权重BRAM读取控制单元读取到的权重数据写入权重Buffer;权重Buffer读取控制单元按照当前卷积计算状态,读取权重Buffer,向计算引擎写入权重数据。
为了进一步优化上述技术方案,偏置与量化参数缓冲处理单元包括偏置缓冲处理单元与量化参数缓冲处理单元。
为了进一步优化上述技术方案,偏置缓冲处理单元包括偏置BRAM读写单元、偏置BRAM更新控制单元与偏置BRAM读取控制单元;偏置BRAM读写单元,负责实现偏置缓冲BRAM实例,根据写地址信号向偏置缓冲BRAM中写入偏置缓冲数据,根据读地址信号从偏置缓冲BRAM中读取偏置数据;偏置BRAM更新控制单元,根据待加载所有卷积层的输出通道数量,接收读片外DDR控制单元读取到的偏置数据,通过偏置BRAM读写单元向偏置缓冲BRAM写入偏置数据;偏置BRAM读取控制单元,根据当前层的输出通道数量,通过偏置BRAM读写单元从偏置缓冲BRAM的读地址读取偏置缓冲数据,向计算引擎写入偏置数据。
为了进一步优化上述技术方案,量化参数缓冲处理单元包括量化参数BRAM读写单元、量化参数BRAM更新控制单元与量化参数BRAM读取控制单元;量化参数BRAM读写单元,负责实现量化参数BRAM实例,根据写地址信号向量化参数缓冲BRAM中写入量化参数数据,根据读地址信号从量化参数BRAM中读取量化参数;量化参数BRAM更新控制单元,根据待加载所有卷积层的输出通道数量,接收读片外DDR控制单元读取到的量化参数数据,通过量化参数BRAM读写单元向量化参数缓冲BRAM的写地址写入量化参数数据;量化参数BRAM读取控制单元,根据当前层输出通道数量,通过量化参数BRAM读写单元从量化参数缓冲BRAM的读地址读取量化参数数据,向计算引擎写量化参数。
为了进一步优化上述技术方案,输出特征图缓冲处理单元包括计算层输出缓冲处理单元与顶层输出缓冲处理单元。
为了进一步优化上述技术方案,计算层输出缓冲处单元块由计算层FIFO、计算层FIFO更新控制单元与计算层FIFO读取控制单元构成;计算层FIFO存储当前计算层计算引擎中的计算单元的计算结果;计算层FIFO更新控制单元接收所述计算结果,依次存入所述计算层FIFO;计算层FIFO读取控制单元依次读取所述计算层FIFO中的所述计算结果,传入所述顶层输出缓冲处理单元。
为了进一步优化上述技术方案,顶层输出缓冲处理单元由顶层FIFO、顶层FIFO更新控制单元与顶层FIFO读取控制单元构成;顶层FIFO存储计算引擎中的M个计算单元的计算结果;顶层FIFO更新控制单元分别接收计算层FIFO读取控制单元的数据,将所有计算层FIFO中计算结果存入顶层FIFO,将并行计算结果转化为串行;顶层FIFO读取控制单元依次读取计算层FIFO中的计算结果,传入片外DDR数据交互单元中的写片外DDR控制单元。
为了进一步优化上述技术方案,根据卷积计算窗口的列数X与输出通道数M构建计算引擎,计算引擎由M个单输出通道计算单元构成,接收X列2行输入特征图数据、M输出通道权重数据、M输出通道权重数据和M输出通道量化参数,依次输出M输出通道卷积计算结果;
单输出通道计算单元,由X列2行卷积计算单元,X列量化计算单元,X列ReLU激活计算单元,最大池化计算单元,卷积计算中间和缓冲FIFO和池化结果缓存FIFO构成,接收X列2行输入特征图数据、权重数据、偏置数据和量化参数,输出卷积计算结果;
X列2行卷积计算单元,由X*2个卷积计算单元构成,接收X列2行输入特征图数据、权重数据、偏置数据,输出X列卷积计算结果;
X列量化计算单元,由X个量化计算单元构成。接收X列卷积计算结果和量化参数,对卷积计算结果进行量化计算,输出X列量化计算结果;
X列ReLU激活计算单元,由X个ReLU激活计算单元构成。接收X列量化计算结果,对量化计算结果进行ReLU激活计算,输出X列ReLU激活计算结果;
最大池化计算单元,接收X列ReLU激活计算结果,进行最大池化计算,输出X列最大池化计算结果。
为了进一步优化上述技术方案,根据配置参数构建中心控制单元,中心控制单元包括参数配置单元与控制中心单元;数配置单元,负责预存每层卷积层的配置参数,包括卷积核尺寸,池化步长,输入特征图尺寸,输入通道数量,输出通道数量,下一层的卷积核尺寸,根据当前卷积计算状态加载不同卷积层的配置参数;控制中心单元,根据参数配置单元的当前卷积层参数,对片外DDR数据交互单元、片上存储缓冲处理单元与计算引擎进行动态配置,控制输入特征图数据、权重数据、偏置数据与量化参数从片外DDR的预加载与缓冲处理,卷积计算结果向片外DDR的缓冲写入以及卷积计算过程。
实施例
如图1所示,基于FPGA的轻量卷积神经网络加速器在Xilinx ZCU102异构计算平台上设计和实现,卷积加速部分主要是在FPGA平台上部署实现。Xilinx ZCU102平台上的可用DSP数量为2520,可用36K BRAM数量为912。目前高端FPGA平台集成了硬核DSP,用以进行高速运算,DSP指的是FPGA的片上计算资源,可用DSP数量指的是FPGA平台上的硬核DSP尚未占用的数量,用以评估FPGA片上计算能力可提升量。
本实施例中将Yolo-Tiny骨干网络作为目标网络,其中包括9个卷积层、9个ReLU层和6个最大值池化层,第一层的输入特征图尺寸为416×416×3,最后一层的输出特征图尺寸为13×13×255,所有层的最大输出通道数为512。根据基于FPGA的轻量卷积神经网络的可重构部署方法,采用13×2×64设计策略,在部署前配置卷积计算窗口列数为13,输出通道数为64;在运行前按Yolo-Tiny骨干网络结构设置卷积层配置参数,包括各层的卷积核尺寸、池化步长、输入特征图尺寸、输入通道数与输出通道数。
本实施例生成的IP核的DSP占用量为1664,36K BRAM占用量为804,可以在XilinxZCU102平台上进行部署。在200MHz频率的情况下,从第一层输入开始到最后一层输出结束,共需要约7.9ms。
基于FPGA的轻量卷积神经网络加速器,由片外DDR数据交互单元、片上存储缓冲处理单元、计算引擎与中心控制单元四部分构成。
一、片外DDR数据交互单元,包括读片外DDR控制单元与写片外DDR控制单元。
(1)读片外DDR控制单元使用AXI FULL协议总线读取片外DDR数据,单次突发传输数据带宽为128bit,单次突发传输数据数量为256,单次突发传输的数据量等于片外DDR单页的数据量,突发传输次数和读取DDR地址由偏置BRAM更新控制单元、量化参数BRAM更新控制单元、权重BRAM更新控制单元与输入特征图BRAM更新控制单元确定,读取数据优先级由高到低为偏置、量化参数、权重、输入特征图,读取到的DDR数据传入偏置BRAM更新控制单元、量化参数BRAM更新控制单元、权重BRAM更新控制单元与输入特征图BRAM更新控制单元。
(2)写片外DDR控制单元使用AXI FULL协议总线向片外DDR写入数据,单次突发传输带宽为128bit,单次突发传输数据数据为256,单次突发传输的数据量等于片外DDR单页的数据量,突发传输次数和写入DDR地址由顶层输出特征图FIFO读取控制单元确定,接收顶层输出特征图FIFO读取控制单元读取的输出特征图数据,写入DDR相应地址。
二、片上存储缓冲处理单元,包括输入特征图缓冲处理单元、权重缓冲处理单元与输出特征图缓冲处理单元。
(1)输入特征图缓冲处理单元设计架构如图2所示,包括BRAM存储层、Buffer存储层和Reg存储层三个层次。
1.1)、BRAM存储层由4个输入特征图BRAM、1个输入特征图BRAM更新控制单元与1个输入特征图BRAM读取控制单元构成。
输入特征图BRAM采用双端口设计,更新与读取同时进行,存储当前层全部输入通道的13列8bit输入特征图数据,位宽104bit;
输入特征图BRAM更新控制根据待加载卷积层的输入特征图尺寸和输入通道数量,计算得到读DDR突发传输次数与读DDR地址,传入读片外DDR控制单元,接收读片外DDR控制单元读取到的输入特征图数据,单元更新中心控制单元生成的待更新BRAM编号对应的输入特征图BRAM地址;
输入特征图BRAM读取控制单元同时读取4个BRAM的输入特征图数据传入Buffer存储层;
1.2)、Buffer存储层由输入特征图Buffer、输入特征图Buffer更新控制单元与输入特征图Buffer移位控制单元构成。
输入特征图Buffer存储当前15列8bit输入特征图数据,位宽120bit;
输入特征图Buffer更新控制单元接收从BRAM层读取到的共4个13列8bit输入特征图数据,根据当前中心控制单元生成的BRAM编号,分别确定15列8bit输入特征图中的左1列数据、中间13列数据与右1列数据,更新当前Buffer;
输入特征图Buffer移位控制单元对Buffer进行移位处理,生成用于卷积计算的13列2行8bit输入特征图数据传入Reg层;
1.3)、Reg存储层由输入特征图Reg与输入特征图Reg更新控制单元构成。
输入特征图Reg存储1列8bit输入特征图数据,共26个;
输入特征图Reg更新控制单元接收从Buffer层传入的13列2行8bit输入特征图数据,更新输入特征图Reg。
(2)权重缓冲处理单元设计架构如图3所示,包括BRAM存储层、Buffer存储层和Reg存储层三个层次。
2.1)、BRAM存储层由2个权重数据BRAM、1个权重BRAM更新控制单元与1个权重BRAM读取控制单元构成。
权重数据BRAM采用双端口设计,更新与读取同时进行,存储当前层全部输入通道64输出通道的8bit输入特征图数据,位宽512bit;
权重BRAM更新控制单元更新中心控制单元生成的待更新BRAM编号对应的权重BRAM地址;
权重BRAM读取控制单元读取中心控制单元生成的待读取BRAM编号对应的权重BRAM的权重数据传入Buffer存储层。
2.2)、Buffer存储层由权重缓冲Buffer、权重Buffer更新控制单元与权重Buffer移位控制单元构成。
权重缓冲Buffer存储当前64输出通道8bit权重数据,位宽512bit,共9个;
权重Buffer更新控制单元接收从BRAM存储层读取到的权重数据,依次写于权重缓冲Buffer中;
权重Buffer读取控制单元依次读取权重缓冲Buffer中的权重数据,传入Reg存储层。
2.3)、Reg存储层由权重缓冲Reg与权重Reg更新控制单元构成。
权重缓冲Reg存储1输出通道8bit权重数据,共64个;
权重Reg更新控制单元接收从Buffer层传入的64输出通道8bit权重数据,更新权重缓冲Reg。
(3)输出特征图缓冲处理单元设计架构如图4所示,包括计算层与顶层两个层次。
3.1)、计算层由64个计算层FIFO、1个计算层FIFO更新控制单元与1个计算层FIFO读取控制单元构成。
计算层FIFO存储当前计算单元的13列8bit计算结果,位宽104bit;
计算层FIFO更新控制单元接收计算单元结果,依次存入计算层FIFO;
计算层FIFO读取控制单元依次读取计算层FIFO中的计算结果,传入顶层。
3.2)、顶层由顶层FIFO、顶层FIFO更新控制单元与顶层FIFO读取控制单元构成。
顶层FIFO存储64个计算单元的13列8bit计算结果,位宽104bit;
顶层FIFO更新控制单元分别读取64个计算层计算结果FIFO,将所有计算结果存入顶层FIFO,将并行计算结果转化为串行;
顶层FIFO读取控制单元依次读取顶层FIFO中的所有计算结果,写入DRAM。
三、计算引擎,由64个单输出通道计算单元组成,每个单输出通道计算单元负责不同通道输出特征图的计算。单输出通道计算单元设计架构如图5所示,由13列2行卷积计算单元、13列量化计算单元、13列ReLU激活计算单元最大池化计算单元,卷积计算中间和缓冲FIFO和池化结果缓存FIFO构成。
(1)13列2行卷积计算单元由26个卷积计算单元构成。卷积计算单元设计架构如图6所示,由一个乘法器、一个加法器和一个24bit中间和Reg构成。从输入特征图Reg读取8bit像素数据作为乘法器的一个输入,从权重Reg读取8bit权重数据作为乘法器的另一个输入。乘法器的16bit结果作为加法器的一个加数,另一个加数由中心控制单元中的加选择控制单元从16bit偏置数据、24bit部分和与24bit中间和之间进行选择。加法器的结果存入24bit中间和Reg。中心控制单元中的输出控制单元决定当前24bit中间和作为加数,输出至中间和FIFO或输出至量化计算单元。
(2)13列量化计算单元由13个量化计算单元构成。量化计算单元设计架构如图7所示,由一个乘法器、一个移位计算器和一个8bit量化结果Reg构成。先将卷积计算单元的24bit卷积结果与16bit量化参数中的高8bit的M参数相乘,再将乘法器结果经移位运算向右移位,移位数是16bit量化参数中的低8bit的N参数。最后截取移位结果中的低8位作为量化计算单元的结果,存入8bit量化结果Reg。
(3)13列ReLU激活计算单元由13个ReLU激活计算单元构成。ReLU激活计算单元设计架构如图8所示,由一个8bit比较器与一个8bit ReLU激活计算结果Reg构成。将量化计算结果与0进行比较,较大者作为ReLU激活计算结果,存入8bit ReLU激活计算结果Reg。
(4)最大池化计算单元设计架构如图9所示,由一个14列1行缓冲Buffer、21个比较器和一个7列1行池化结果Reg组成。13列ReLU激活计算结果中的第0行经补列后存入缓冲Buffer,经补列后的第1行与缓冲Buffer中的14列1行ReLU激活计算结果进行2×2最大池化计算,较大者作为池化结果,存入7列1行池化结果Reg。
四、中心控制单元,包括参数配置单元和控制中心单元。
(1)参数配置单元,负责预存每层卷积层的配置参数,包括卷积核尺寸,池化步长,输入特征图尺寸,输入通道数量,输出通道数量,下一层的卷积核尺寸,根据当前卷积计算状态加载不同卷积层的配置参数。
(2)控制中心单元,根据参数配置单元的当前卷积层参数,对片外DDR数据交互单元、片上存储缓冲处理单元与计算引擎进行动态配置,控制输入特征图数据、权重数据、偏置数据与量化参数从片外DDR的预加载与缓冲处理,卷积计算结果向片外DDR的缓冲写入以及卷积计算过程。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,包括以下具体步骤:
步骤1:进行片上计算资源可重构;在部署时,根据部署的FPGA平台的可用DSP数量,综合要部署的轻量卷积神经网络卷积窗口大小,选择不同卷积计算窗口的列数X与输出通道数M,达到所述片上计算资源可重构;
步骤2:进行片上存储资源可重构;在运行前,根据要部署的轻量卷积神经网络结构,更改配置参数中的卷积层数、卷积核尺寸、池化步长、输入特征图尺寸、输入通道数和输出通道数,达到所述片上存储资源可重构;
步骤3:根据所述卷积窗口大小和所述配置参数构建基于FPGA的轻量卷积神经网络加速器,利用所述轻量卷积神经网络加速器进行所述轻量卷积神经网络可重构部署;
所述轻量卷积神经网络加速器包括:片外DDR数据交互单元、片上存储缓冲处理单元、计算引擎和中心控制单元;所述片外DDR数据交互单元从片外DDR读取输入特征图数据、权重数据、偏置数据与量化参数数据,并向所述片外DDR写入输出特征图数据;所述片上存储缓冲单元存储所述输入特征图数据、所述权重数据、所述偏置数据、所述量化参数数据与所述输出特征图数据;所述计算引擎进行所述输入特征图数据、所述权重数据、所述偏置数据与所述量化参数数据的卷积计算;所述中心控制单元根据当前卷积层参数,控制所述输入特征图数据、所述权重数据、所述偏置数据与所述量化参数的预加载,输出卷积结果数据的缓冲写入以及所述计算引擎的计算过程;
根据所述配置参数构建所述中心控制单元,所述中心控制单元包括参数配置单元和控制中心单元;
所述参数配置单元,预存每层卷积层的配置参数,包括卷积核尺寸,池化步长,输入特征图尺寸,输入通道数量,输出通道数量,下一层的卷积核尺寸,根据当前卷积计算状态加载不同卷积层的配置参数;
所述控制中心单元,根据所述参数配置单元的所述当前卷积层参数,分别对所述片外DDR数据交互单元、所述片上存储缓冲处理单元与所述计算引擎进行动态配置,控制所述输入特征图数据、所述权重数据、所述偏置数据与所述量化参数从所述片外DDR的读取加载,所述输出卷积结果数据向所述片外DDR的写入以及卷积计算过程。
2.根据权利要求1所述的一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,所述片上存储缓冲处理单元包括输入特征图缓冲处理单元、权重缓冲处理单元、偏置与量化参数缓冲处理单元和输出特征图缓冲处理单元。
3.根据权利要求1所述的一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,根据所述卷积计算窗口的所述列数X与所述输出通道数M构建所述计算引擎,所述的计算引擎由M个单输出通道计算单元构成,其中,M为卷积计算窗口输出通道数;
所述单输出通道计算单元由X列2行卷积计算单元、X列量化计算单元、X列ReLU激活计算单元、最大池化计算单元、卷积计算部分和FIFO与池化结果缓存FIFO构成;
所述X列2行卷积计算单元由X*2个卷积计算单元构成;所述卷积计算单元由1个乘法器、1个加法器、1个中间和Reg构成;在所述卷积计算单元先利用所述乘法器将8bit输入特征图数据与8bit权重数据相乘获得16bit结果,再利用所述加法器将所述16bit结果与所述中间和Reg暂存的24bit中间和相加,加法器结果作为卷积计算结果存入所述中间和Reg;
所述X列量化计算单元由X个量化计算单元构成;所述量化计算单元由1个乘法器、1个移位计算器和1个8bit量化结果Reg构成;先利用所述乘法器将所述卷积计算结果与16bit量化参数中的高8bit的Scale_M参数相乘,再利用位移计算器将乘法器结果经移位运算向右移位,移位数是所述16bit量化参数中的低8bit的Scale_N参数,最后将移位结果中的低8bit作为量化计算结果,存入所述8bit量化结果Reg;
所述X列ReLU激活计算单元由X个ReLU激活计算单元构成;所述ReLU激活计算单元由1个比较器与1个8bitReLU激活结果Reg构成;将所述量化计算结果与0进行比较,较大者作为ReLU激活计算结果,存入8bitReLU激活计算结果Reg;
所述最大池化计算单元由1个X+1列1行缓冲Buffer、3*(X+1)/2个比较器和1个(X+1)/2列1行池化结果Reg组成;先将X列所述ReLU激活计算结果中的第0行经补列后存入所述X+1列1行缓冲Buffer,再对经补列后的第1行与所述X+1列1行缓冲Buffer中的X+1列第0行ReLU激活计算结果进行2×2最大池化计算,较大者作为池化结果,存入(X+1)/2列1行池化结果Reg;
所述卷积计算部分和FIFO暂存部分输入通道X列2行的卷积计算24bit中间和,位宽为24*X,在存入前,将X列2行中间和转串行为X列1行;
所述池化结果缓存FIFO暂存前一个(X+1)/2列1行的最大池化计算结果,位宽为8*(X+1)/2。
4.根据权利要求2所述的一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,所述的输入特征图缓冲处理单元包括输入特征图BRAM存储层、输入特征图Buffer存储层和输入特征图Reg存储层;
所述输入特征图BRAM存储层由4个输入特征图BRAM读写单元、1个输入特征图BRAM更新控制单元和1个输入特征图BRAM读取控制单元构成;所述输入特征图BRAM读写单元实现输入特征图BRAM实例,输入特征图BRAM采用双端口,更新与读取同时进行,存储当前层全部输入通道的X列8bit输入特征图数据,位宽为8*X,X为卷积计算窗口输入特征图列数;所述输入特征图BRAM更新控制单元根据待加载卷积层的输入特征图尺寸和输入通道数量,计算得到读片外DDR的突发传输次数与读DDR地址,传入读片外DDR控制单元,接收所述读片外DDR控制单元读取到的所述输入特征图数据,更新所述中心控制单元生成的待更新BRAM编号对应的输入特征图数据BRAM地址;所述输入特征图BRAM读取控制单元同时读取4个所述输入特征图BRAM的所述输入特征图数据,传入输入特征图Buffer存储层;
所述输入特征图Buffer存储层由输入特征图Buffer、输入特征图Buffer更新控制单元与输入特征图Buffer移位控制单元构成;所述输入特征图Buffer存储当前X+2列8bit所述输入特征图数据,位宽为8*(X+2),接收从所述输入特征图BRAM读取控制单元读取到的共4个X列8bit所述输入特征图数据;所述输入特征图Buffer更新控制单元根据当前所述中心控制单元生成的所述BRAM编号,分别确定X+2列8bit所述输入特征图数据中的左1列数据、中间X列数据与右1列数据,更新当前所述输入特征图Buffer;所述输入特征图Buffer移位控制单元对所述输入特征图Buffer进行移位处理,生成用于卷积计算的X列2行8bit所述输入特征图数据传入所述输入特征图Reg存储层;
所述输入特征图Reg存储层由2*X个输入特征图Reg与1个输入特征图Reg更新控制单元构成;所述输入特征图Reg存储1列8bit所述输入特征图数据;所述输入特征图Reg更新控制单元接收从所述输入特征图Buffer移位控制单元传入的X列2行8bit所述输入特征图数据,更新全部所述输入特征图Reg的所述输入特征图数据。
5.根据权利要求4所述的一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,所述的权重缓冲处理单元包括权重BRAM存储层、权重Buffer存储层和权重Reg存储层;
所述权重BRAM存储层由2个权重BRAM读写单元、1个权重BRAM更新控制单元与1个权重BRAM读取控制单元构成;所述权重BRAM读写单元实现权重BRAM实例,权重BRAM采用双端口,更新与读取同时进行,存储当前卷积层的全部输入通道和M输出通道的8bit所述权重数据,位宽为8*M;所述权重BRAM更新控制单元根据所述待加载卷积层的卷积核尺寸和所述输入通道数量,计算得到所述读片外DDR是所述突发传输次数与所述读DDR地址,传入所述读片外DDR控制单元,接收所述读片外DDR控制单元读取到的所述权重数据,更新所述中心控制单元生成的所述待更新BRAM编号对应的权重BRAM地址;所述权重BRAM读取控制单元读取所述中心控制单元生成的待读取BRAM编号对应的BRAM的权重数据,传入所述权重Buffer存储层;
所述权重Buffer存储层由9个权重缓冲Buffer、1个权重Buffer更新控制单元与1个权重Buffer读取控制单元构成;所述权重缓冲Buffer存储当前所述M输出通道8bit权重数据,位宽为8*M;所述权重Buffer更新控制单元接收从所述权重BRAM读取控制单元读取到的所述权重数据,依次写入所述权重缓冲Buffer中;所述权重Buffer读取控制单元依次读取所述权重缓冲Buffer中的所述权重数据,传入所述权重Reg存储层;
所述权重Reg存储层由权重缓冲Reg与权重Reg更新控制单元构成;所述权重缓冲Reg存储1输出通道所述8bit权重数据,共M个;所述权重Reg 更新控制单元接收从所述权重Buffer读取控制单元传入的所述M输出通道所述8bit权重数据,更新权重缓冲Reg。
6.根据权利要求5所述的一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,所述的偏置与量化参数缓冲处理单元包括偏置缓冲处理单元与量化参数缓冲处理单元;
所述偏重缓冲处理单元包括偏置BRAM存储层和偏置Reg存储层;
所述偏置BRAM存储层由1个偏置BRAM读写单元、1个偏置BRAM更新控制单元和1个偏置BRAM读取控制单元构成;所述偏置BRAM读写单元实现偏置BRAM实例,偏置BRAM采用双端口,更新与读取同时进行,存储当前层M输出通道的16bit偏置数据,位宽为16*M;所述偏置BRAM更新控制单元根据待加载所有卷积层的输出通道数量,计算得到所述读片外DDR是所述突发传输次数与所述读DDR地址,传入所述读片外DDR控制单元,接收所述读片外DDR控制单元读取到的所述偏置数据,依次更新所述偏置BRAM;所述偏置BRAM读取控制单元读取所述偏置BRAM的所述M输出通道的所述偏置数据并传入所述偏置Reg存储层;
所述偏置Reg存储层由偏置Reg与偏置Reg更新控制单元构成;所述偏置Reg存储1输出通道所述16bit偏置数据,共M个;所述偏置Reg更新控制单元接收从所述偏置BRAM读取控制单元传入的所述M输出通道的所述16bit偏置数据,更新权重缓冲Reg;
所述量化参数缓冲处理单元包括量化参数BRAM存储层和量化参数Reg存储层;
所述量化参数BRAM存储层由1个量化参数BRAM读写单元、1个量化参数BRAM更新控制单元和1个量化参数BRAM读取控制单元构成;所述量化参数BRAM读写单元实现量化参数BRAM实例,量化参数BRAM采用双端口,更新与读取同时进行,存储所述当前层M输出通道的16bit量化参数数据,位宽为16*M;所述量化参数BRAM更新控制单元由待加载所有卷积层的输出通道数量,计算得到所述读片外DDR的所述突发传输次数与所述读DDR地址,传入所述读片外DDR控制单元,接收所述读片外DDR控制单元读取到的所述量化参数数据,依次更新所述量化参数BRAM;所述量化参数BRAM 读取控制单元读取所述量化参数BRAM的所述量化参数数据并传入所述量化参数Reg存储层;
所述量化参数Reg存储层由量化参数Reg与量化参数Reg更新控制单元构成;所述量化参数Reg存储1输出通道所述16bit量化参数数据,共M个;所述量化参数Reg更新控制单元接收从所述量化参数BRAM读取控制单元传入的所述M输出通道的所述16bit量化参数数据,更新量化参数缓冲Reg。
7.根据权利要求6所述的一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,所述的输出特征图缓冲处理单元包括计算层输出缓冲处理单元与顶层输出缓冲处理单元;
所述计算层输出缓冲处理单元由M个计算层FIFO、1个计算层FIFO更新控制单元与1个计算层FIFO读取控制单元构成;所述计算层FIFO存储当前计算层所述计算引擎中的计算单元的X列8bit计算结果,位宽8*X;所述计算层FIFO更新控制单元接收所述计算结果,依次存入所述计算层FIFO;所述计算层FIFO读取控制单元依次读取所述计算层FIFO中的所述计算结果,传入所述顶层输出缓冲处理单元;
所述顶层输出缓冲处理单元由顶层FIFO、顶层FIFO更新控制单元与顶层FIFO读取控制单元构成;所述顶层FIFO存储所述计算引擎中的M个所述计算单元的X列8bit所述计算结果,位宽8*X;所述顶层FIFO更新控制单元分别读取M个所述计算层FIFO,将所有所述计算层FIFO中的计算结果存入所述顶层FIFO,将并行计算结果转化为串行;所述顶层FIFO读取控制单元依次读取所述计算层FIFO中的所述计算结果,传入写片外DDR控制单元。
8.根据权利要求7所述的一种基于FPGA的轻量卷积神经网络可重构部署方法,其特征在于,所述的片外DDR数据交互单元包括读片外DDR控制单元和写片外DDR控制单元;
所述读片外DDR控制单元使用AXI FULL协议总线读取片外DDR数据,单次突发传输数据带宽为128bit,单次突发传输数据数量为256,所述单次突发传输数据数量等于片外DDR单页数据量,突发传输次数和读DDR地址由偏置BRAM更新控制单元、量化参数BRAM更新控制单元、权重BRAM更新控制单元与输入特征图BRAM更新控制单元确定,读取数据优先级由高到低为偏置、量化参数、权重、输入特征图,读取到的所述片外DDR数据传入所述偏置BRAM更新控制单元、所述量化参数BRAM更新控制单元、所述权重BRAM更新控制单元与所述输入特征图BRAM更新控制单元;
所述写片外DDR控制单元使用所述AXI FULL协议总线向片外DDR写入数据,所述单次突发传输数据带宽为128bit,所述单次突发传输数据数量为256,所述单次突发传输数据数量等于所述片外DDR单页数据量,所述突发传输次数和写入DDR地址由顶层FIFO读取控制单元确定,接收所述顶层FIFO读取控制单元读取的所述输出特征图数据,写入相应的所述片外DDR地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010725440.9A CN111931909B (zh) | 2020-07-24 | 2020-07-24 | 一种基于fpga的轻量卷积神经网络可重构部署方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010725440.9A CN111931909B (zh) | 2020-07-24 | 2020-07-24 | 一种基于fpga的轻量卷积神经网络可重构部署方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111931909A CN111931909A (zh) | 2020-11-13 |
CN111931909B true CN111931909B (zh) | 2022-12-20 |
Family
ID=73314619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010725440.9A Active CN111931909B (zh) | 2020-07-24 | 2020-07-24 | 一种基于fpga的轻量卷积神经网络可重构部署方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111931909B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112488305B (zh) * | 2020-12-22 | 2023-04-18 | 西北工业大学 | 一种神经网络存储装置及其可配置管理方法 |
CN112905526B (zh) * | 2021-01-21 | 2022-07-08 | 北京理工大学 | 一种多种类型卷积的fpga实现方法 |
CN116737382B (zh) * | 2023-06-20 | 2024-01-02 | 中国人民解放军国防科技大学 | 一种基于面积折叠的神经网络推理加速方法 |
CN118485120A (zh) * | 2024-05-24 | 2024-08-13 | 北京海云捷迅科技股份有限公司 | 一种基于fpga的类动脉阵列cnn加速器实现系统及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109740731A (zh) * | 2018-12-15 | 2019-05-10 | 华南理工大学 | 一种自适应卷积层硬件加速器设计方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180330234A1 (en) * | 2017-05-11 | 2018-11-15 | Hussein Al-barazanchi | Partial weights sharing convolutional neural networks |
-
2020
- 2020-07-24 CN CN202010725440.9A patent/CN111931909B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109740731A (zh) * | 2018-12-15 | 2019-05-10 | 华南理工大学 | 一种自适应卷积层硬件加速器设计方法 |
Non-Patent Citations (1)
Title |
---|
"基于FPGA的CNN算法加速";邹虹 等;《电子世界》;20190228;第82-83页、图2 * |
Also Published As
Publication number | Publication date |
---|---|
CN111931909A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111931909B (zh) | 一种基于fpga的轻量卷积神经网络可重构部署方法 | |
CN107657581B (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
CN107742150B (zh) | 一种卷积神经网络的数据处理方法和装置 | |
CN110222818B (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
CN115860080B (zh) | 计算核、加速器、计算方法、装置、设备、介质及系统 | |
CN112991142A (zh) | 图像数据的矩阵运算方法、装置、设备及存储介质 | |
CN112668708A (zh) | 一种提高数据利用率的卷积运算装置 | |
KR20240035999A (ko) | 뉴럴 프로세싱 유닛 및 컴퓨트-인-메모리 프로세싱 엘리먼트들을 사용한 하이브리드 머신 러닝 아키텍처 | |
JP2023178385A (ja) | 情報処理装置および情報処理方法 | |
CN110490308B (zh) | 加速库的设计方法、终端设备及存储介质 | |
US20220253668A1 (en) | Data processing method and device, storage medium and electronic device | |
CN112712457B (zh) | 数据处理方法以及人工智能处理器 | |
CN109800867B (zh) | 一种基于fpga片外存储器的数据调用方法 | |
CN113128688B (zh) | 通用型ai并行推理加速结构以及推理设备 | |
CN112905526B (zh) | 一种多种类型卷积的fpga实现方法 | |
KR20240036594A (ko) | 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들 | |
WO2022027172A1 (zh) | 数据处理装置、方法和系统以及神经网络加速器 | |
CN114912596A (zh) | 面向稀疏卷积神经网络的多chiplet系统及其方法 | |
CN116882467B (zh) | 面向边缘端的多模式可配置的神经网络加速器电路结构 | |
CN118295707B (zh) | 用于快速寄存器的数据搬运方法、处理器、计算设备 | |
US11442643B2 (en) | System and method for efficiently converting low-locality data into high-locality data | |
CN116150046B (zh) | 一种高速缓存电路 | |
CN115168284B (zh) | 面向深度学习的粗粒度可重构阵列系统及计算方法 | |
CN116027977A (zh) | 可扩展的并行卷积数据输出装置及其输出方法 | |
CN118504632A (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 |