基于存算结合的多通道卷积fpga架构及其工作方法

文档序号:1862177 发布日期:2021-11-19 浏览:9次 >En<

阅读说明:本技术 基于存算结合的多通道卷积fpga架构及其工作方法 (Storage and computation combination-based multi-channel convolution FPGA (field programmable Gate array) framework and working method thereof ) 是由 师皓 徐�明 陈亮 张娜 于 2021-08-17 设计创作,主要内容包括:本发明提供一种基于存算结合的多通道卷积FPGA架构及其工作方法,包括:外部存储器、特征图片上缓存模块、卷积权重片上缓存模块和卷积计算模块;外部存储器包括有第一外部存储器和第二外部存储器,第一外部存储器向特征图片上缓存模块输出特征图数据,第二外部存储器向卷积权重片上缓存模块输出卷积权重;特征图片上缓存模块和卷积权重片上缓存模块均与卷积计算模块连接,分别向卷积计算模块输出多个特征图数据窗口和多个卷积权重窗口;卷积计算模块根据特征图数据窗口和卷积权重窗口进行计算,并输出计算结果。本发明通过多通道并行输出数据流的方式,实现存算结合,提高了FPGA架构的数据传输效率。(The invention provides a multi-channel convolution FPGA (field programmable gate array) framework based on storage and calculation combination and a working method thereof, wherein the multi-channel convolution FPGA framework comprises the following steps: the device comprises an external memory, a feature picture upper cache module, a convolution weight on-chip cache module and a convolution calculation module; the external memory comprises a first external memory and a second external memory, the first external memory outputs feature map data to the feature map on-chip cache module, and the second external memory outputs convolution weight to the convolution weight on-chip cache module; the feature picture upper cache module and the convolution weight on-chip cache module are both connected with the convolution calculation module and respectively output a plurality of feature picture data windows and a plurality of convolution weight windows to the convolution calculation module; and the convolution calculation module calculates according to the characteristic diagram data window and the convolution weight window and outputs a calculation result. The invention realizes the storage and calculation combination by a multi-channel parallel data stream output mode, and improves the data transmission efficiency of the FPGA framework.)

基于存算结合的多通道卷积FPGA架构及其工作方法

技术领域

本发明涉及FPGA架构技术领域,尤其涉及一种基于存算结合的多通道卷积FPGA架构及其工作方法。

背景技术

卷积神经网络在图像检测和识别领域有效的应用,但是移动端的系统在部署卷积神经网络(CNN)完成实时目标识别,使用移动端的中央处理器去完成卷积计算的计算挑战是非常大的。因此采用专用集成电路(ASIC),现场可编程逻辑门阵列(FPGA)加速器和图像处理单元(GPU)作为协处理器来提高识别的速度,减少识别延时,减少中央处理器的计算负担具有重要的意义。在移动端侧的目标识别系统还需要具有低功耗,相比起GPU,基于FPGA的卷积神经加速器具有低功耗的优势。

谷歌在2019年提出EfficientNet卷积神经网络,通过放大EfficientNetb0基础模型,获得了一系列EfficientNet模型。但EfficientNet具有残差分支和注意力机制模块使得其网络结构复杂,不利于在移动端或嵌入式侧部署EfficientNet网络。而FPGA的硬性可编程性质就能适应到卷积神经网络结构的变化,在FPGA上部署EfficientNet卷积神经网络加速器具有较高的价值。

目前,基于FPGA的卷积神经网络加速器的单一中央计算阵列适合参数量大的,网络层数少的传统标准卷积。对于新型的深度可分离的卷积结构,尤其是深度卷积的计算,由于其计算较传统标准卷积更为稀疏,导致一个传统标准的中央卷积计算阵列计算效率不高。

发明内容

基于此,有必要针对上述技术问题,提供一种基于存算结合的多通道卷积FPGA架构及其工作方法。

一种基于存算结合的多通道卷积FPGA架构,包括:外部存储器、特征图片上缓存模块、卷积权重片上缓存模块和卷积计算模块;所述外部存储器设置有两个,分别为第一外部存储器和第二外部存储器,所述第一外部存储器与所述特征图片上缓存模块连接,向所述特征图片上缓存模块输出特征图数据,所述第二外部存储器与所述卷积权重片上缓存模块连接,向所述卷积权重片上缓存模块输出卷积权重;所述特征图片上缓存模块与所述卷积计算模块连接,并向所述卷积计算模块并行输出多个特征图数据窗口;所述卷积权重片上缓存模块与所述卷积计算模块连接,并向所述卷积计算模块并行输出多个卷积权重窗口;所述卷积计算模块根据所述特征图数据窗口和卷积权重窗口进行计算,并输出计算结果。

在其中一个实施例中,所述第一外部存储器对所述特征图数据采用交叉缓存的方式进行存储。

在其中一个实施例中,所述特征图片上缓存模块包括有Conv_num个FIFO存储单元和LBUF行缓存单元,所述FIFO存储单元与所述第一外部存储器连接,接收所述第一外部存储器发送的特征图数据,并将所述特征图数据传输至所述LBUF行缓存单元;所述LBUF行缓存单元与所述卷积计算模块连接,用于将所述特征图数据传输至所述卷积计算模块。

在其中一个实施例中,所述卷积权重片上缓存模块采用FPGA内部查找表和触发器逻辑实现,用于缓存卷积权重。

在其中一个实施例中,所述卷积计算模块包括有Unit_num个卷积计算子模块,用于进行卷积计算。

在其中一个实施例中,所述卷积计算子模块包括有Conv_num个卷积计算引擎单元、输出缓存单元和逐通道卷积计算单元;所述卷积计算引擎单元包括有9个DSP48E子单元,用于完成特征图窗口和卷积权重窗口的计算,并对多余卷积权重置零;所述输出缓存单元包括有Unit_num个BRAM,用于缓存输出数据;所述逐通道卷积计算单元用于完成逐通道卷积计算过程。

一种基于存算结合的多通道卷积FPGA架构的工作方法,包括:从外部存储器获取特征图数据和卷积权重,分别传输至特征图片上缓存模块和卷积权重片上缓存模块;所述特征图片上缓存模块根据所述特征图数据获取特征图数据窗口,将所述特征图数据窗口发送至卷积计算模块;同时,所述卷积权重片上缓存模块根据所述卷积权重获取卷积权重窗口,将所述卷积权重窗口发送至卷积计算模块;所述卷积计算模块根据所述特征图数据窗口和卷积权重窗口进行计算,并输出计算结果。

在其中一个实施例中,在所述从外部存储器获取特征图数据和卷积权重,分别传输至特征图片上缓存模块和卷积权重片上缓存模块之后,在所述特征图片上缓存模块根据所述特征图数据获取特征图数据窗口,将所述特征图数据窗口发送至卷积计算模块之前,还包括:当卷积核尺寸为K*K时,从所述外部存储器读取AXI Stream形式的特征图数据流,将特征图依次输入到所有FIFO存储单元中进行缓存;存满所有FIFO存储单元后,将特征图数据传输至LBUF行缓存单元中;通过所述LBUF行缓存单元存储相邻(K-1)行的特征图数据,在接收到第K行特征图数据时,按照顺序输出K*K的数据窗口到卷积计算模块,等待卷积运算。

在其中一个实施例中,在所述卷积权重片上缓存模块根据所述卷积权重获取卷积权重窗口,将所述卷积权重窗口发送至卷积计算模块之后,在所述卷积计算模块根据所述特征图数据窗口和卷积权重窗口进行计算,并输出计算结果之前,还包括:卷积权重片上缓存模块按照顺序输入卷积权重;在所有卷积权重均缓存到所述卷积权重片上缓存模块后,开始按顺序输出Unit_num个大组卷积权重,其中,每个大组包含Conv_num组卷积权重。

相比于现有技术,本发明的优点及有益效果在于:本发明通过多通道并行输出数据流的方式,并行输出多个特征图数据和卷积权重,提高了FPGA架构的数据传输效率和处理效率,且实现了存算结合,减少了中央处理器的负担。

附图说明

图1为一个实施例中一种基于存算结合的多通道卷积FPGA架构的结构示意图;

图2为图1中特征图片上缓存模块的结构示意图;

图3为图1中卷积计算模块的结构示意图;

图4为一个实施例中一种基于存算结合的多通道卷积FPGA架构的工作方法的流程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明做进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

在一个实施例中,如图1所示,提供了一种基于存算结合的多通道卷积FPGA架构,包括:外部存储器10、特征图片上缓存模块20、卷积权重片上缓存模块30和卷积计算模块40;外部存储器10设置有两个,分别为第一外部存储器11和第二外部存储器12,第一外部存储器11与特征图片上缓存模块20连接,向特征图片上缓存模块20输出特征图数据,第二外部存储器12与卷积权重片上缓存模块30连接,向卷积权重片上缓存模块30输出卷积权重;特征图片上缓存模块20与卷积计算模块40连接,并向卷积计算模块40并行输出多个特征图数据窗口;卷积权重片上缓存模块30与卷积计算模块40连接,并向卷积计算模块40并行输出多个卷积权重窗口;卷积计算模块40根据特征图数据窗口和卷积权重窗口进行计算,并输出计算结果。

在本实施例中,外部存储器10包括有第一外部存储器11和第二外部存储器12,第一外部存储器11向特征图片上缓存模块20输出特征图数据,第二外部存储器12向卷积权重片上缓存模块30输出卷积权重;特征图片上缓存模块20和卷积权重片上缓存模块30均与卷积计算模块40连接,分别向卷积计算模块40输出多个特征图数据窗口和多个卷积权重窗口;卷积计算模块40根据特征图数据窗口和卷积权重窗口进行计算,并输出计算结果,通过多通道并行输出数据流的方式,并行输出多个特征图数据和卷积权重,提高了FPGA架构的数据传输效率和处理效率,且实现了存算结合,减少了中央处理器的负担。

其中,第一外部存储器11对特征图数据采用交叉缓存的方式进行存储。

具体地,交叉缓存即表示在第一外部存储器11中,相邻地址存储的为不同的特征图数据,每Unit_num个地址为一个循环。例如,假设定点化后的数据位宽为B,在第一外部存储器11中存储的256bit数据包含同一特征图的256bit/B个数据其中Unit_num表示逻辑存储单元集合中逻辑存储单元的数目。

具体地,在第二存储器中,权重使用顺序依次存储,每个256bit位宽的权重数据中可能包含一个或多个卷积核的权重参数及偏置参数。

其中,特征图片上缓存模块20包括有Conv_num个FIFO存储单元21和LBUF行缓存单元22,FIFO存储单元21与第一外部存储器11连接,接收第一外部存储器11发送的特征图数据,并将特征图数据传输至LBUF行缓存单元22;LBUF行缓存单元22与卷积计算模块40连接,用于将特征图数据传输至卷积计算模块40。

具体地,特征图片上缓存模块20用于接收和缓存输入特征图数据,并行输出多个特征图数据窗口。特征图片上缓存模块20在接收到特征图数据之后,将特征图数据拆解成Conv_num组,采用Conv_num个FIFO存储单元21和LBUF行缓存单元22完成数据缓存,并将每一组复制Unit_num份,同时以数据流的形式将Unit_num份相同的数据传输至卷积计算模块40。

具体地,在进行特征图片输入时,特征图片上缓存模块20采用Conv_num路数据交叉输入的方式。当卷积核尺寸为K*K时,由于数据按行流式传输,每个FIFO存储单元21的存储容量为1行,每个LBUF行缓存单元22的存储容量为(K-1)行数据。

在一个实施例中,特征图片上缓存模块20进行缓存特征图数据的具体流程为:从第一外部存储器11读取AXI Stream形式的数据流之后,将数据依次输入到所有FIFO存储单元21中进行缓存,存满所有FIFO存储单元21后将其传输至LBUF行缓存单元22,用于存储相邻(K-1)行的数据,当第K行数据到来时,按序输出K*K的数据窗口到卷积计算模块40等待卷积运算。

具体地,在特征图数据到达特征图片上缓存模块20后,首先进行边缘零填充,避免卷积前后图像尺寸的变化,确保图像输入输出前后的尺寸大小不变,然后将填充完毕的数据流缓存至FIFO存储单元21。由于特征图片上缓存模块20的输入数据为AXI Stream总线形式数据流,通过控制逻辑对状态信号进行使能控制,从而实现在数据流传输的特定时间添加“0”值,完成边缘零填充。

其中,卷积权重片上缓存模块30采用FPGA内部查找表和触发器逻辑实现,用于缓存卷积权重。

具体地,卷积权重片上缓存模块30的输入为256bit的数据流,包含16个数据,其中,当卷积核尺寸为3*3时,后7个数据为无效数据;输出为Unit_num*Conv_num个16bit的3*3数据窗口。

在一个实施例中,卷积核尺寸可以为1*1或3*3两种情况,在卷积核尺寸为1*1时,每次输入的256bit数据中包含16组卷积权重,按顺序输入Unit_num*Conv_num组卷积权重,需要Unit_num*Conv_num/16个时钟周期,输出的3*3卷积权重窗口中包含有1个卷积核有效数据和8个无效数据。

在卷积核尺寸为3*3时,每次输入的256bit数据中包含1组卷积权重,按顺序输出Unit_num*Conv_num组卷积权重,需要Unit_num*Conv_num个时钟周期,输出的3*3卷积权重窗口中包含9个有效数据。

当所有卷积权重均缓存到卷积权重片上缓存模块后,开始按顺序输出Unit_num个大组卷积权重,每大组包含Conv_num组卷积权重,由于Conv_num组卷积权重同时输出,输出所有卷积权重共需Unit_num个时钟周期。

其中,卷积计算模块40包括有Unit_num个卷积计算子模块41,用于进行卷积计算。

具体地,卷积计算模块40中包含多个卷积运算子模块41,具体数量Unit_num可以根据硬件资源的多少进行配置,在向硬件资源较少的FPGA移植时,可以裁剪卷积运算子模块41;在向硬件资源较多的FPGA移植时,可以增加卷积运算子模块41。

具体地,多个卷积运算子模块41在接收到特征图数据窗口和卷积权重窗口后,各取自身计算需要的一组数据进行卷积运算,运算后将结果暂存于累加寄存器中,若卷积层的通道数较多,一次输入无法完成所有运算,则多次进行数据传输、数据运算和结果累加,再根据配置的通道参数控制累加寄存器的输出时间。

其中,卷积计算子模块41包括有输出缓存单元412、逐通道卷积计算单元413和Conv_num个卷积计算引擎单元411;卷积计算引擎单元411包括有9个DSP48E子单元,用于完成特征图窗口和卷积权重窗口的计算,并对多余卷积权重置零;输出缓存单元412包括有有Unit_num个BRAM,用于缓存输出数据;逐通道卷积计算单元413用于完成逐通道卷积计算过程。

具体地,卷积计算子模块41包括有Conv_num个卷积计算引擎单元411,卷积计算引擎单元411内部为9个DSP48E子单元,用于完成特征图数据窗口和卷积权重窗口的乘加运算,并通过对多余权重的置零实现两种卷积核尺寸的选择,扩大该架构的适用范围。

具体地,输出缓存单元412通过调用若干个BRAM来存储累加过程中的输出特征图数据集,BRAM的存储容量取决于存储的最大数据量,即当最大的输出特征图尺寸为Fx*Fy,数据位宽为B时,单个BRAM的存储容量为Fx*Fy*B。输出缓存单元412还用于缓存卷积计算的中间结果,当所有通道的输出特征图全部缓存到输出缓存单元412后,输出卷积计算结果。

具体地,逐通道卷积计算单元413用于完成逐通道卷积计算过程,该模块采用数据并行流水的机制,支持尺寸为3*3和5*5的两种卷积核,并且可以配置卷积步长为1或2。同时在启用逐通道卷积计算单元413的情况下,卷积权重片上缓存模块30可以对逐通道卷积的权重参数缓存,在控制信号有效时继续输出逐通道卷积单元413所需的权重参数。

如图4所示,提供了一种基于存算结合的多通道卷积FPGA架构的工作方法,包括以下步骤:

步骤S401,从外部存储器获取特征图数据和卷积权重,分别传输至特征图片上缓存模块和卷积权重片上缓存模块。

具体地,从外部存储器获取特征图数据,传输至特征图片上缓存模块;同时从外部存储器获取卷积权重,传输至卷积权重片上缓存模块,实现数据并行传输。

其中,外部存储器可以设置为两个,其中一个用于存储特征图数据,另一个用于存储卷积权重。

步骤S402,特征图片上缓存模块根据特征图数据获取特征图数据窗口,将特征图数据窗口发送至卷积计算模块;同时,卷积权重片上缓存模块根据卷积权重获取卷积权重窗口,将卷积权重窗口发送至卷积计算模块。

具体地,特征图片上缓存模块接收到特征图数据后,将特征图数据拆解为Conv_num组,分别存储至FIFO存储单元和LBUF行缓存单元中,在LBUF行缓存单元存储满后,按照顺序输出K*K的特征图数据窗口到卷积计算模块;

同时,卷积权重片上缓存模块接收到卷积权重后,按照顺序向卷积计算模块输出Unit_num个大组的卷积权重窗口,每个大组包含Conv_num组卷积权重。

通过上述方式,同时向卷积权重模块输出特征图数据和卷积权重,减少了数据传输时间消耗,提高了工作效率。

步骤S403,卷积计算模块根据特征图数据窗口和卷积权重窗口进行计算,并输出计算结果。

具体地,卷积计算模块根据特征图数据窗口和卷积权重窗口进行计算,并输出计算结果,从而完成特征图的卷积计算,实现存算结合,大幅降低数据交换时间以及计算过程中的数据存取能耗。

在本实施例中,通过特征图片上缓存模块和卷积权重片上缓存模块,从外部存储器分别获取特征图数据和卷积权重;通过特征图片上缓存模块获取特征图数据窗口,并发送至卷积计算模块;同时,通过卷积权重片上缓存模块获取卷积权重窗口,并发送至卷积计算模块;卷积计算模块根据特征图数据窗口和卷积权重窗口进行计算,并输出计算结果,从而通过多通道并行输出数据流的方式,并行输出多个特征图数据和卷积权重,提高了FPGA架构的数据传输效率和处理效率,且实现了存算结合,减少了中央处理器的负担。

其中,步骤S401之后,步骤S402之前,还包括:当卷积核尺寸为K*K时,从所述外部存储器读取AXI Stream形式的特征图数据流,将特征图依次输入到所有FIFO存储单元中进行缓存;存满所有FIFO存储单元后,将特征图数据传输至LBUF行缓存单元中;通过LBUF行缓存单元存储相邻(K-1)行的特征图数据,在接收到第K行特征图数据时,按照顺序输出K*K的特征图数据窗口至卷积计算模块,等待卷积运算。

具体地,在特征图片上缓存模块接收到特征图数据之后,当卷积核尺寸为K*K时,从外部存储器读取AXI Stream形式的特征图数据流,将特征图依次输入到所有FIFO存储单元后,传输至LBUF行缓存单元,通过LBUF行缓存单元存储相邻(K-1)行的数据,在LBUF行缓存单元接收到第K行数据时,按照顺序输出K*K的特征图数据窗口至卷积计算模块,等待卷积运算。

其中,步骤S402之后,步骤S403之前,还包括:卷积权重片上缓存模块按照顺序输入卷积权重;在所有卷积权重均缓存到卷积权重片上缓存模块后,按照顺序输出Unit_num个大组卷积权重,其中,每个大组包含Conv_num组卷积权重。

具体地,卷积权重片上缓存模块接收到卷积权重数据后,按照顺序输入卷积权重,在所有卷积权重缓存到卷积权重片上缓存模块后,按照顺序输出Unit_num个大组的卷积权重,每个大组包含Conv_num组卷积权重,由于Conv_num组卷积权重同时输出,输出所有卷积权重数据共需Unit_num个时钟周期。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。

显然,本领域的技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。

以上内容是结合具体的实施方式对本发明所做的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:神经网络的训练方法、装置、电子设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!