面向边缘端的多模式可配置的神经网络加速器电路结构
未命名
10-18
阅读:60
评论:0

1.本发明涉及神经网络加速器电路技术领域,尤其涉及一种面向边缘端的多模式可配置的神经网络加速器电路结构。
背景技术:
2.卷积神经网络(cnn)在目标识别与跟踪等方向获得了显著的研究成果,通常采用图形处理器(gpu)或专用集成电路(asic)进行部署,gpu往往存在功耗过高的问题,asic往往由于定制化存在灵活性差,存在成本高和研发周期长的问题,现场可编辑逻辑门阵列(fpga)具备能耗低、速度快、灵活度高、成本低等特点,采用fpga部署加速器电路可以有效克服这两种方法的缺点。
3.传统的采用fpga 实现的cnn加速器存在模型冗余过大,灵活性较差和缺少可配置化设计等诸多问题,对此国内外也有很多相关的解决方案,例如:中国专利公布号为cn116136798a,公布日为2023年5月19日,专利名称为“基于脉动阵列的高吞吐量目标检测加速器”的发明专利申请中针对卷积层模块提出一种脉动阵列结构加速卷积计算,通过动态寻找脉动阵列的最佳规模,使算法能够充分利用给定fpga的硬件资源;中国专利公布号为cn116090530a,公布日为2023年5月9日,专利名称为“可配置卷积核大小和并行计算数目的脉动阵列结构及方法”的发明专利申请中提出一种可配置卷积核大小和并行计算数目的脉动阵列结构,支持四种卷积核大小;中国专利公布号为cn115983350a,公布日为2023年2月13日,专利名称为“一种二值权重卷积神经网络加速器及risc-v片上系统”的发明专利申请中提出一种卷积神经网络加速器采用ddr(双倍速率同步动态随机存储器)模块,用于对卷积神经网络中间运算过程的特征图数据进行存储,同时与特征图存储模块进行特征图数据交换,增加了加速器与外部存储的读写交互,忽略了fpga内部缓存的高效性。虽然在上述专利中针对cnn网路模型冗余过大,灵活性较差和缺少可配置化设计等问题做出改进,但仍然存在以下问题:(1)卷积模块卷积计算的模式可配置性不强,没有充分利用网络种卷积计算的规律性设计适用于多种卷积步长、多种卷积核尺寸、多种卷积类型的卷积模块,导致fpga内部的逻辑资源利用率低;(2)对深度卷积的加速设计薄弱;(3)大量使用ddr等外部缓存,加大了数据交换的时间。
技术实现要素:
4.本发明为解决上述问题,提供了一种面向边缘端的多模式可配置的神经网络加速器电路结构,用fpga部署神经网络加速器解决cpu、gpu和asic的技术痛点,同时通过多模式可配置设计提高资源利用率和并行度,内部高效缓存结构设计提高缓存带宽,利用轻量化
网络减少网络模型的冗余。
5.本发明提出的一种面向边缘端的多模式可配置的神经网络加速器电路结构,控制单元、特征图缓存单元、权重存储单元、3
×
3卷积单元、1
×
1卷积单元、数据路由单元、全局平均池化单元、双向缓存单元。其中:控制单元用于产生特征图的输入和读取信号、权重数据的输入和读取信号、卷积类型选择信号、3
×
3卷积单元模式选择信号、3
×
3卷积单元使能信号、卷积步长配置信号、1
×
1卷积单元模式选择信号和1
×
1卷积单元使能信号,以及每次卷积对应的通道数和深度信息,并发送到相应单元的控制模块中;其中,卷积类型选择信号包括单独3
×
3卷积信号,单独1
×
1卷积信号和瓶颈结构信号;特征图缓存单元用于接收特征图输入和读取信号,对外部输入的特征图和从两个卷积单元计算得到的输出特征图进行缓存,根据特征图缓存单元的读写地址将缓存区域按不同卷积层进行划分;权重存储单元用于接收权重数据的输入和读取信号,将权重存储单元对应的权重参数传递给3
×
3卷积单元和1
×
1卷积单元卷积模块进行计算;3
×
3卷积单元用于接收输入的特征图和权重数据,在收到3
×
3卷积单元使能信号后开始进行卷积操作,根据3
×
3卷积单元模式选择信号判断使用普通卷积或深度卷积,根据卷积类型选择信号,如果为瓶颈结构信号则等待1
×
1卷积单元第一次卷积运算完成后,此时3
×
3卷积单元模式选择信号必须为深度卷积模式才能实现瓶颈结构计算,3
×
3卷积单元从双向缓存单元读取1
×
1卷积单元的第一次运算结果,深度卷积计算完成后将卷积结果发送到双向缓存单元供瓶颈结构的下一次1
×
1卷积计算使用;如果为单独3
×
3卷积信号,则将卷积结果发送到特征图缓存单元;1
×
1卷积单元用于接收输入的特征图和权重数据,在收到1
×
1卷积单元使能信号后开始进行运算操作,根据1
×
1卷积单元模式选择信号进行对应尺寸的运算操作;当控制单元产生的卷积类型选择信号为瓶颈结构信号,且3
×
3卷积单元模式选择信号为深度卷积时,1
×
1卷积单元需要参与瓶颈结构计算之中,此时1
×
1卷积单元先进行第一次运算,从数据路由单元中直接读取特征图和权重数据,并将运算结果发送回双向缓存单元,然后等待3
×
3卷积单元深度卷积运算完成后,从双向缓存单元中直接读取特征图和权重数据,并将运算结果发送回特征图缓存单元,至此一次瓶颈结构计算完成;若控制单元产生的卷积类型选择信号为单独1
×
1卷积信号,1
×
1卷积单元的运算操作发生在一系列瓶颈结构计算之后,则将计算结果发送到全局平均池化单元;数据路由单元采用内部缓存模块,用于缓冲、转发来自权重存储单元、3
×
3卷积单元、1
×
1卷积单元、特征图缓存单元以及全局平均池化单元的特征图和权重数据,并根据卷积类型选择信号,判断并发送特征图和权重数据到3
×
3卷积单元或1
×
1卷积单元;全局平均池化单元用于接收来自1
×
1卷积单元的计算结果,对每一个特征图的所有像素值求平均值,并作为输出特征图发送到数据路由单元缓冲后,下一步给到1
×
1卷积单元进行计算;双向缓存单元采用内部缓存模块,用于双向传输3
×
3卷积单元和1
×
1卷积单元的特征图和权重数据,减少对外部缓存的读写频次。
6.进一步的,3
×
3卷积单元包括3
×
3卷积控制模块、3
×
3卷积输入缓存模块、3
×
3卷
积输出缓存模块、3
×
3卷积阵列、加法器树和relu激活函数模块;其中,3
×
3卷积控制模块用于根据3
×
3卷积单元使能信号,控制3
×
3卷积输入缓存模块进行特征图和权重数据的预缓存和输入,并向3
×
3卷积阵列转发3
×
3卷积单元模式选择信号和卷积步长配置信号;3
×
3卷积阵列接收来自3
×
3卷积输入缓存模块的特征图和权重数据并进行卷积运算,根据3
×
3卷积单元模式选择信号,决定将运算结果传输到加法器树或relu激活函数模块中,加法器树对卷积结果进行累加后传递到relu激活函数模块中,并由3
×
3卷积输出缓存模块输出最后的结果,同时向3
×
3卷积控制模块反馈输出完成的信号。
7.进一步的,3
×
3卷积阵列由n个计算单元组成,每个计算单元采用winograd算法实现,以降低卷积计算量,提高运算效率。
8.进一步的,3
×
3卷积阵列根据3
×
3卷积单元模式选择信号完成深度卷积和普通卷积两种模式的选择;其中,深度卷积根据卷积步长配置信号选择步长为1和2,且在深度卷积的模式下,将每一幅输入的特征图发送给每一个计算单元计算,并将每个运算结果存入双向缓存单元;普通卷积的模式中步长默认设置为2,且一幅外部输入的特征图只发送给一个计算单元计算,多个计算结果经过加法器树累加在一起得到运算结果,经由relu激活函数模块进行relu6激活函数操作后,将结果写入3
×
3卷积输出缓存模块中。
9.进一步的,1
×
1卷积单元包括1
×
1卷积控制模块、1
×
1卷积输入缓存模块、1
×
1卷积输出缓存模块、卷积计算阵列、线性激活函数模块;其中,1
×
1卷积控制模块用于根据1
×
1卷积单元使能信号,控制1
×
1卷积输入缓存模块进行特征图和权重数据的预缓存和输入,并向卷积计算阵列转发1
×
1卷积单元模式选择信号;卷积计算阵列接收来自1
×
1卷积输入缓存模块的特征图和权重数据后进行运算操作,并根据1
×
1卷积单元模式选择信号选择不同规模的阵列进行运算,将运算结果经由线性激活函数模块激活,并由1
×
1卷积输出缓存模块输出最后的结果,同时向1
×
1卷积控制模块反馈输出完成的信号。
10.进一步的,卷积计算阵列采用包含多尺寸可选择功能的级联脉动阵列,级联脉动阵列采用im2col算法将特征图转化为行的数据重排,进而将点卷积转化为两个矩阵相乘;并采用通用矩阵乘法,实现利用矩阵分块乘法完成大尺寸矩阵相乘。
11.进一步的,级联脉动阵列中采用乘累加单元,输入为特征图数据和权重数据,经过乘累加后传递给下一个乘累加单元,每一个乘累加单元的乘累加的结果储存在乘累加单元寄存器中统一输出。
12.进一步的,级联脉动阵列中最小尺寸为8
×
8,依次级联组成16
×
16,32
×
32规模的脉动阵列,在调用脉动阵列时1
×
1卷积控制模块根据通道数的最大公约数选择调用阵列的尺寸,提高乘累加单元的利用率。
13.进一步的,级联脉动阵列采用串矩转换方法设计,用于多种尺寸的级联脉动阵列之间的数据传输。
14.进一步的,数据路由单元的数量为两个,每一个数据路由单元均由存储控制器和缓存单元组成,其中的一个数据路由单元用于接收到来自1
×
1卷积单元和3
×
3卷积单元的运算结果,并在此缓冲后写入特征图缓存单元,另一数据路由单元用于接收权重存储单元的权重,并根据卷积类型选择信号决定将数据路由单元的缓存区中权重发送到1
×
1卷积单元或3
×
3卷积单元。
15.进一步的,双向缓存单元由缓存控制器和缓存区构成,其中,缓存区用于缓存来自1×
1卷积单元和3
×
3卷积单元的特征图和权重数据;缓存控制器根据卷积类型选择信号选择缓存数据的传输方向。
16.与现有技术相比,本发明能够取得如下有益效果:(1)设计多模式可配置的3
×
3和1
×
1卷积模块,可选择卷积模式、步长、并行方式,解决了卷积模块卷积计算的模式单一,fpga内部的逻辑资源利用率低,速度慢的缺点,对深度卷积专门设计加速模块,具有资源利用率高,计算速度快的优点;(2)采用winograd算法加速3
×
3卷积,大大降低3
×
3卷积计算量;(3)采用多尺寸级联的脉动阵列,充分利用fpga并行计算的优势,大大加速大规模的矩阵乘法运算;(4)计算过程中依赖内部缓存模块,减少对外部缓存的读写,可以提高数据带宽。
附图说明
17.图1是根据本发明实施例提供的面向边缘端的多模式可配置的神经网络加速器电路的整体结构示意图;图2是根据本发明具体实施方式中的瓶颈结构的运算流程示意图;图3是根据本发明具体实施方式中的3
×
3卷积单元的结构示意图;图4是根据本发明具体实施方式中的深度卷积平行策略的示意图;图5是根据本发明具体实施方式中的1
×
1卷积单元的结构示意图;图6是根据本发明具体实施方式中的im2col和矩阵分块乘法的运算示意图;图7是根据本发明具体实施方式中的分块策略示意图;图8是根据本发明具体实施方式中的乘累加单元的示意图;图9是根据本发明具体实施方式中的脉动阵列加速矩阵乘法过程的示意图;图10(a)是根据本发明具体实施方式中的12个串行数据的示意图;图10(b)是根据本发明具体实施方式中的经串矩转换后的4
×
3矩阵的示意图。
具体实施方式
18.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,而不构成对本发明的限制。
19.本发明提供的一种面向边缘端的多模式可配置的神经网络加速器电路结构。针对网络的卷积模式分别对3
×
3卷积和1
×
1卷积进行多模式可配置设计,使3
×
3模块可以实现可变步长和普通卷积与深度卷积模式选择的功能,使1
×
1模块实现根据特征图通道数选择对应尺寸脉动阵列进行并行计算的功能。本发明相对于边缘端部署的gpu加速器相比有更低的功耗,和asic相比灵活性更好、成本更低,和同类fpga加速器相比具有可配置性强、轻量化、识别速度足够快等优点。
20.本发明实施例采用的是mobilenet v2网络,并对其进行轻量化设计,有效减小模型冗余,具体过程包括:(1)网络剪枝去除网络中冗余的结构,如通道、滤波器、神经元节点、网络层等;(2)参数8bit量化,即将32位浮点数通过映射规则转化为8bit定点数表示,减少参
数的存储开销,映射公式如下:(3)采用批量归一化(batch normalization,bn)层融合: 在训练深度网络模型时,bn层有利于训练。但在网络推理时多了一些运算,影响了模型的性能,且占用了更多的内存空间。将cnn中的 bn 层的参数合并到卷积层,可以提升模型前向推断的速度;(4)使用全局平均池化替代原始网络的全连接层,进一步减少参数量;(5)利用快速卷积算法对卷积计算进行加速。
21.将轻量化设计后的mobilenet v2网络在本发明提出的一种面向边缘端的多模式可配置的神经网络加速器电路结构上运行。
22.图1示出了本发明实施例提出的面向边缘端的多模式可配置的神经网络加速器电路的整体结构。
23.如图1所示,本发明提出的一种面向边缘端的多模式可配置的神经网络加速器电路结构,控制单元、特征图缓存单元、权重存储单元、3
×
3卷积单元、1
×
1卷积单元、数据路由单元、全局平均池化单元、双向缓存单元。其中:控制单元用数字电路中的有限状态机实现,产生特征图和权重数据的输入和读取信号、卷积类型选择信号、3
×
3卷积单元模式选择信号、3
×
3卷积单元使能信号、卷积步长配置信号、1
×
1卷积单元模式选择信号和1
×
1卷积单元使能信号,以及每次卷积对应的通道数和深度信息,并发送到相应单元的控制模块中;其中,卷积类型选择信号包括单独3
×
3卷积信号、单独1
×
1卷积信号和瓶颈结构信号。
24.特征图缓存单元利用xilinx fpga的片上存储器件和存储器ip实现,接收卷积类型选择信号后,缓存用于计算的输入特征图和从两个卷积计算单元得到的输出特征图,根据地址将缓存区域按不同卷积层进行划分。
25.权重存储单元利用xilinx fpga的片上存储器件和存储器ip实现,接收卷积类型选择信号后,将权重存储单元的缓存区对应的权重参数传递给两个卷积计算单元用于计算。
[0026]3×
3卷积单元接收输入特征数据和权重参数进行卷积操作,卷积结果根据卷积类型选择信号判断卷积类型,以及是否存入双向缓存单元;1
×
1卷积单元用于接收输入的特征图和权重数据,在收到1
×
1卷积单元使能信号后开始进行运算操作,根述1
×
1卷积单元模式选择信号进行对应尺寸的运算操作;当控制单元产生的卷积类型选择信号为瓶颈结构信号,且3
×
3卷积单元模式选择信号为深度卷积时,1
×
1卷积单元需要参与瓶颈结构计算之中,1
×
1卷积单元从双向缓存单元中直接读取特征图和权重数据,经过1
×
1卷积单元的运算操作后将运算结果发送回双向缓存单元;若1
×
1卷积单元的运算操作发生在一系列瓶颈结构计算之后,将1
×
1卷积单元的计算结果发送到全局平均池化单元;数据路由单元采用xilinx fpga上的缓存器件实现,数据路由单元的数量为两个,每一个数据路由单元包括存储控制器和缓存区组成,缓存区由fpga上的缓存器件实现。存储控制器接收控制单元的卷积类型选择信号后决定将写入数据路由单元的数据转发给哪一方,实现数据路由功能。其中的一个数据路由单元用于接收到来自1
×
1卷积单元和3
×
3卷积单元的运算结果,并在此缓冲后写入特征图缓存单元,另一数据路由单元用于接收权重存储单元的权重。根据卷积类型选择信号决定将数据路由单元的缓存区中权重发送到1
×
1卷积单元或3
×
3卷积单元。
[0027]
全局平均池化单元接收来自1
×
1卷积单元的计算结果,将每个通道的特征图的所有像素值求平均值,写回数据路由单元缓冲后,下一步给到1
×
1卷积单元进行后续计算;双向缓存单元由缓存控制器和缓存区构成,其中缓存控制器接受卷积类型选择信号,选择数据是由3
×
3单元向1
×
1单元传输还是1
×
1单元传输缓存数据;缓存区由fpga上的缓存器件实现用于接收3
×
3卷积单元和1
×
1卷积单元的数据,实现数据的双向流动,减少对外部缓存的读写频次。
[0028]
图2示出了根据本发明具体实施方式中的瓶颈结构的运算流程。
[0029]
如图2所示,1
×
1卷积单元接收到的卷积类型选择信号为瓶颈结构信号,且3
×
3卷积单元模式选择信号为深度卷积时,1
×
1卷积单元需要参与瓶颈结构计算之中,1
×
1卷积单元先进行第一次1
×
1卷积计算,从数据路由单元中直接读取特征图和权重数据,并将运算结果发送回双向缓存单元,然后3
×
3卷积单元进行深度卷积,待3
×
3卷积单元运算完成后,从双向缓存单元中直接读取特征图和权重数据,最后1
×
1卷积单元再进行一次运算,并将运算结果发送回特征图缓存单元,至此一次瓶颈结构计算完成,将最后的计算结果发送到全局平均池化单元。
[0030]
图3示出了根据本发明具体实施方式中的3
×
3卷积单元的结构。
[0031]
如图3所示,3
×
3卷积单元包括3
×
3卷积控制模块、3
×
3卷积输入缓存模块、3
×
3卷积输出缓存模块、3
×
3卷积阵列、加法器树和relu激活函数模块。其中,3
×
3卷积输入缓存模块和3
×
3卷积输出缓存模块由xilinx的ip核实现。
[0032]
其中,3
×
3卷积控制模块使用有限状态机实现,接收3
×
3卷积单元使能信号后,控制3
×
3卷积输入缓存模块进行特征图和权重数据的预缓存和输入,并向3
×
3卷积阵列转发3
×
3卷积单元模式选择信号和卷积步长配置信号。
[0033]3×
3卷积阵列接收来自3
×
3卷积输入缓存模块的特征图和权重数据进行卷积运算,根据3
×
3卷积单元模式选择信号,决定将运算结果传输到加法器树或relu激活函数模块中,加法器树对卷积结果进行累加后传递到relu激活函数模块中,并由3
×
3卷积输出缓存模块输出最后的结果,同时向3
×
3卷积控制模块反馈输出完成的信号。
[0034]3×
3卷积阵列由n个计算单元组成,n的大小由深度卷积并行度决定,每个计算单元采用winograd算法实现,进而降低卷积计算量,从而提高运算效率。
[0035]3×
3卷积阵列可以根据来自3
×
3卷积控制模块转发的3
×
3卷积单元模式选择信号和卷积步长配置信号,完成深度卷积和普通卷积两种模式的选择,进而解决了卷积计算的模式单一的问题,其中,深度卷积根据卷积步长配置信号可选择步长为1和2的情况,且在深度卷积模式下,每一幅特征图只发送给每一个计算单元计算,并运算结果存入双向缓存单元;普通卷积的模式中步长固定设置为2,且一幅特征图只发送给一个计算单元计算,然后需要经过加法器树累加在一起得到运算结果,经由relu激活函数模块进行relu6激活函数操作后写入特征图缓存单元中。
[0036]
图4示出了根据本发明具体实施方式中的深度卷积平行策略。
[0037]
如图4所示,深度卷积时输入特征图的尺寸不同,深度卷积的各通道数也不相同,统计各层深度卷积的通道数,取最大公约数作为并行路数。例如,对于128
×
128的输入特征图,mobilenet v2深度卷积的通道数分别为32,96,144,192,384,576,960,均为16的倍数,
故深度卷积单元设置16路并行,加速比为16,对于32通道64
×
64的深度卷积需要分两次16路并行计算才行。
[0038]
图5示出了根据本发明具体实施方式中的1
×
1卷积单元的结构。
[0039]
如图5所示,1
×
1卷积单元包括1
×
1卷积控制模块、1
×
1卷积输入缓存模块、1
×
1卷积输出缓存模块、卷积计算阵列和线性激活函数模块。其中,1
×
1卷积输入缓存模块和1
×
1卷积输出缓存模块由xilinx的ip核实现。
[0040]
其中,1
×
1卷积控制模块使用有限状态机实现,接收来自1
×
1卷积单元使能信号,控制1
×
1卷积输入缓存模块进行特征图和权重数据的预缓存和输入,并向卷积计算阵列转发1
×
1卷积单元模式选择信号;卷积计算阵列接收来自1
×
1卷积输入缓存模块的特征图和权重数据进行卷积运算,并根据1
×
1卷积单元模式选择信号选择不同规模的阵列进行运算,将运算结果经由线性激活函数模块激活,并由1
×
1卷积输出缓存模块输出最后的结果,同时向1
×
1卷积控制模块反馈输出完成的信号。
[0041]
卷积计算阵列采用包含多尺寸可选择功能的级联脉动阵列,采用im2col将特征图转化为行的数据重排,进而将点卷积转化为两个矩阵相乘;并采用通用矩阵乘法,实现利用矩阵分块乘法完成大尺寸矩阵相乘。
[0042]
图6示出了根据本发明具体实施方式中的im2col和矩阵分块乘法的运算过程。
[0043]
如图6所示。im2col即将特征图转化为行的数据重排方法,每一个像素点的m通道数据组成一行,特征图矩阵的行数由特征图尺寸确定,如64
×
64
×
32的特征图进行深度为32的16通道的1
×
1卷积可以转化成642×
32的矩阵与32
×
16的矩阵相乘;矩阵乘法实现利用矩阵分块乘法完成大尺寸矩阵相乘。其中,分块策略由输入图像尺寸、卷积核的通道数、卷积核深度决定。
[0044]
图7示出了根据本发明具体实施方式中的分块策略过程。
[0045]
如图7所示,分块策略由输入图像尺寸、卷积核的通道数、卷积核深度决定,根据分块矩阵乘法原则如642×
32的矩阵与32
×
16的矩阵相乘。最小子矩阵设置为16
×
16的矩阵,原来的大尺寸矩阵乘法就分解为256
×
2的分块矩阵与2
×
1的分块矩阵相乘,由于最大并行度为16,即有16个16
×
1pes可以同时进行计算,因此还可以进一步将256
×
2的矩阵分为16组16
×
2的分块矩阵,大大加强了计算并行能力。
[0046]
图8示出了根据本发明具体实施方式中的乘累加单元。
[0047]
如图8所示,级联脉动阵列中采用乘累加单元。输入为特征图数据xi,权重数据wj,经过乘累加后传递给后续单元,乘累加的结果储存在乘累加单元的寄存器中统一输出。
[0048]
图9示出了根据本发明具体实施方式中的脉动阵列加速矩阵乘法过程。
[0049]
如图9所示,级联脉动阵列中最小尺寸为8
×
8(预留级联接口),依次级联组成16
×
16,32
×
32的较大规模的脉动阵列,在调用时控制模块根据通道数的最大公约数选择调用阵列的尺寸,提高计算单元的利用率。
[0050]
脉动阵列采用串矩转换的方法设计缓存模块用于多种尺寸的级联模块之间的数据传输。
[0051]
图10示出了根据本发明具体实施方式中的串矩转换过程。
[0052]
调用xilinx基于ram的移位寄存器ip核实现串矩转换。过程如图10所示,图10(a)表示的是12个串行数据,图10(b)表示的是4
×
3矩阵,最少需要3个深度为3,位宽为8的移位
寄存器ip,除第一行不存储,直接输出外,其他3个移位寄存器存储其他3行数据,每行首尾相连,每一行的末尾数据抽取作为矩阵的行数据输出。数据在这3个首尾相连的移位寄存器中移动,当移位寄存器都被之前的串行数据填满时停止移动,右侧抽取行数据输出即可得到矩阵形式的数据。对于8
×
8阵列最少需要7个深度为8,位宽为8的移位寄存器ip,存储7行数据,每行首尾相连,每一行的末尾数据抽取作为矩阵的行数据输出。
[0053]
串矩转换结构可以使输入数据位宽占用减少到原来的1/8;优化输出逻辑,卷积结果通过8bit窗口顺序输出;用串矩转换增加了数据稳定性,简化数字电路布局布线,更容易与其他模块通信。
[0054]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明公开的技术方案所期望的结果,本文在此不进行限制。
[0055]
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
技术特征:
1.一种面向边缘端的多模式可配置的神经网络加速器电路结构,其特征在于,包括控制单元、特征图缓存单元、权重存储单元、3
×
3卷积单元、1
×
1卷积单元、数据路由单元、全局平均池化单元、双向缓存单元;其中,所述控制单元用于产生特征图的输入和读取信号、权重数据的输入和读取信号、卷积类型选择信号、3
×
3卷积单元模式选择信号、3
×
3卷积单元使能信号、卷积步长配置信号、1
×
1卷积单元模式选择信号和1
×
1卷积单元使能信号,以及每次卷积对应的通道数和深度信息,并发送到相应单元的控制模块中;其中,所述卷积类型选择信号包括单独3
×
3卷积信号,单独1
×
1卷积信号和瓶颈结构信号;所述特征图缓存单元用于接收特征图输入和读取信号,对外部输入的特征图和从两个卷积单元计算得到的输出特征图进行缓存,根据所述特征图缓存单元的读写地址将缓存区域按不同卷积层进行划分;所述权重存储单元用于接收权重数据的输入和读取信号,将所述权重存储单元对应的权重参数传递给所述3
×
3卷积单元和所述1
×
1卷积单元卷积模块进行计算;所述3
×
3卷积单元用于接收输入的特征图和权重数据,在收到所述3
×
3卷积单元使能信号后开始进行卷积操作,根据所述3
×
3卷积单元模式选择信号判断使用普通卷积或深度卷积,根据卷积类型选择信号,如果为瓶颈结构信号则等待1
×
1卷积单元第一次卷积运算完成后,此时3
×
3卷积单元模式选择信号必须为深度卷积模式才能实现瓶颈结构计算,所述3
×
3卷积单元从双向缓存单元读取1
×
1卷积单元的第一次运算结果,深度卷积计算完成后将卷积结果发送到所述双向缓存单元供瓶颈结构的下一次1
×
1卷积计算使用;如果为所述单独3
×
3卷积信号,则将卷积结果发送到所述特征图缓存单元;所述1
×
1卷积单元用于接收输入的特征图和权重数据,在收到所述1
×
1卷积单元使能信号后开始进行运算操作,根据所述1
×
1卷积单元模式选择信号进行对应尺寸的运算操作;当所述控制单元产生的卷积类型选择信号为所述瓶颈结构信号,且所述3
×
3卷积单元模式选择信号为深度卷积时,所述1
×
1卷积单元需要参与瓶颈结构计算之中,此时所述1
×
1卷积单元先进行第一次1
×
1卷积计算,从所述数据路由单元中直接读取特征图和权重数据,并将运算结果发送回所述双向缓存单元,然后等待3
×
3卷积单元深度卷积运算完成后,从所述双向缓存单元中直接读取特征图和权重数据,并将运算结果发送回特征图缓存单元,至此一次瓶颈结构计算完成;若所述控制单元产生的卷积类型选择信号为所述单独1
×
1卷积信号,所述1
×
1卷积单元的运算操作发生在一系列所述瓶颈结构计算之后,将计算结果发送到所述全局平均池化单元;所述数据路由单元采用内部缓存模块,用于缓冲、转发来自所述权重存储单元、所述3
×
3卷积单元、所述1
×
1卷积单元、所述特征图缓存单元以及所述全局平均池化单元的特征图和权重数据,并根据所述卷积类型选择信号,判断并发送特征图和权重数据到所述3
×
3卷积单元或所述1
×
1卷积单元;所述全局平均池化单元用于接收来自所述1
×
1卷积单元的计算结果,对每一个特征图的所有像素值求平均值,并作为输出特征图发送到所述数据路由单元缓冲后,下一步给到所述1
×
1卷积单元进行计算;所述双向缓存单元采用内部缓存模块,用于双向传输所述3
×
3卷积单元和所述1
×
1卷积单元的特征图和权重数据,减少对外部缓存的读写频次。
2.根据权利要求1所述的面向边缘端的多模式可配置的神经网络加速器电路结构,其特征在于,所述3
×
3卷积单元包括3
×
3卷积控制模块、3
×
3卷积输入缓存模块、3
×
3卷积输出缓存模块、3
×
3卷积阵列、加法器树和relu激活函数模块;其中,所述3
×
3卷积控制模块用于根据所述3
×
3卷积单元使能信号,控制所述3
×
3卷积输入缓存模块进行特征图和权重数据的预缓存和输入,并向所述3
×
3卷积阵列转发所述3
×
3卷积单元模式选择信号和所述卷积步长配置信号;所述3
×
3卷积阵列接收来自所述3
×
3卷积输入缓存模块的特征图和权重数据并进行卷积运算,根据所述3
×
3卷积单元模式选择信号,决定将运算结果传输到所述加法器树或所述relu激活函数模块中,所述加法器树对卷积结果进行累加后传递到所述relu激活函数模块中,并由所述3
×
3卷积输出缓存模块输出最后的结果,同时向所述3
×
3卷积控制模块反馈输出完成的信号。3.根据权利要求2所述的面向边缘端的多模式可配置的神经网络加速器电路结构,其特征在于,所述3
×
3卷积阵列由n个计算单元组成,每个计算单元采用winograd算法实现,以降低卷积计算量,提高运算效率。4.根据权利要求3所述的面向边缘端的多模式可配置的神经网络加速器电路结构,其特征在于,所述3
×
3卷积阵列根据所述3
×
3卷积单元模式选择信号完成深度卷积和普通卷积两种模式的选择;其中,所述深度卷积根据所述卷积步长配置信号选择步长为1和2,且在所述深度卷积的模式下,将每一幅输入的特征图发送给每一个计算单元计算,并将每个运算结果存入所述双向缓存单元;所述普通卷积的模式中步长默认设置为2,且一幅外部输入的特征图只发送给一个计算单元计算,多个计算结果经过所述加法器树累加在一起得到运算结果,经由所述relu激活函数模块进行relu6激活函数操作后,将结果写入所述3
×
3卷积输出缓存模块中。5.根据权利要求1所述的面向边缘端的多模式可配置的神经网络加速器电路结构,其特征在于,所述1
×
1卷积单元包括1
×
1卷积控制模块、1
×
1卷积输入缓存模块、1
×
1卷积输出缓存模块、卷积计算阵列、线性激活函数模块;其中,所述1
×
1卷积控制模块用于根据所述1
×
1卷积单元使能信号,控制所述1
×
1卷积输入缓存模块进行特征图和权重数据的预缓存和输入,并向所述卷积计算阵列转发所述1
×
1卷积单元模式选择信号;所述卷积计算阵列接收来自所述1
×
1卷积输入缓存模块的特征图和权重数据后进行运算操作,并根据所述1
×
1卷积单元模式选择信号选择不同规模的阵列进行运算,将运算结果经由所述线性激活函数模块激活,并由所述1
×
1卷积输出缓存模块输出最后的结果,同时向所述1
×
1卷积控制模块反馈输出完成的信号。6.根据权利要求5所述的面向边缘端的多模式可配置的神经网络加速器电路结构,其特征在于,所述卷积计算阵列采用包含多尺寸可选择功能的级联脉动阵列,所述级联脉动阵列采用im2col算法将特征图转化为行的数据重排,进而将点卷积转化为两个矩阵相乘;并采用通用矩阵乘法,实现利用矩阵分块乘法完成大尺寸矩阵相乘。7.根据权利要求6所述的面向边缘端的多模式可配置的神经网络加速器电路结构,其特征在于,所述级联脉动阵列中采用乘累加单元,输入为特征图数据和权重数据,经过乘累加后传递给下一个乘累加单元,每一个乘累加单元的乘累加的结果储存在所述乘累加单元寄存器中统一输出。
8.根据权利要求7所述的面向边缘端的多模式可配置的神经网络加速器电路结构,其特征在于,所述级联脉动阵列中最小尺寸为8
×
8,依次级联组成16
×
16,32
×
32规模的脉动阵列,在调用所述脉动阵列时所述1
×
1卷积控制模块根据通道数的最大公约数选择调用阵列的尺寸,提高所述乘累加单元的利用率。9.根据权利要求6所述的面向边缘端的多模式可配置的神经网络加速器电路结构,其特征在于,所述级联脉动阵列采用串矩转换方法设计,用于多种尺寸的级联脉动阵列之间的数据传输。10.根据权利要求1所述的面向边缘端的多模式可配置的神经网络加速器电路结构,其特征在于,所述数据路由单元的数量为两个,每一个数据路由单元均由存储控制器和缓存单元组成,其中的一个数据路由单元用于接收到来自所述1
×
1卷积单元和所述3
×
3卷积单元的运算结果,并在此缓冲后写入所述特征图缓存单元,另一数据路由单元用于接收所述权重存储单元的权重,并根据所述卷积类型选择信号决定将所述数据路由单元的缓存区中权重发送到所述1
×
1卷积单元或所述3
×
3卷积单元。11.根据权利要求1所述的面向边缘端的多模式可配置的神经网络加速器电路结构,其特征在于,所述双向缓存单元由缓存控制器和缓存区构成,其中,所述缓存区用于缓存来自所述1
×
1卷积单元和所述3
×
3卷积单元的特征图和权重数据;所述缓存控制器根据所述卷积类型选择信号选择缓存数据的传输方向。
技术总结
本发明涉及神经网络加速器技术领域,尤其涉及一种面向边缘端的多模式可配置的神经网络加速器电路结构,包括控制单元、特征图缓存单元、权重存储单元、3
技术研发人员:王玉冰 彭允 陈雨晴 刘康宁 缪国庆 秦莉 王立军
受保护的技术使用者:中国科学院长春光学精密机械与物理研究所
技术研发日:2023.09.01
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/