掌桥专利:专业的专利平台
掌桥专利
首页

一种二值权重卷积神经网络加速器及RISC-V片上系统

文献发布时间:2023-06-19 19:30:30


一种二值权重卷积神经网络加速器及RISC-V片上系统

技术领域

本发明涉及卷积神经网络加速器技术领域,具体涉及一种二值权重卷积神经网络加速器及RISC-V片上系统。

背景技术

卷积神经网络是生物视觉、自然语言处理(NLP)的基础,LeNet-5奠定了未来CNN网络发展的基础。VGG-16使用3*3卷积核搭建了一个非常深的网络模型结构证明了增加网络的深度能够在一定程度上影响网络最终的性能。从2011年底起,微软研究院的俞栋、邓力等人把深度神经网络(Deep Neural Network,DNN)技术应用在了大词汇量语音识别任务上,构建DNN-HMM模型,大大降低了语音识别错误率。随着更多更复杂的神经网络模型结构被提出,神经网络因其计算量大、内存访问频繁导致其在边缘设备上的部署存在巨大的挑战。图像处理器(Graphics Processing Unit,GPU)等高性能计算设备通常用于训练神经网络然而就前向推理而言GPU因为其功耗较大不再是部署神经网络的理想计算平台。近年来,现场可编程门阵列(Field Programmable Gate Array,FPGA)时因其具有大量计算单元和内存块的特点在CNN加速器方面受到了学术界和工业界越来越多的关注。

FPGA有限的存储计算资源以及网络模型的推陈出新对神经网络的通用性和能效带来了挑战。目前很多的神经网络加速器通过建立轻量级的网络模型和新的硬件架构来提升速度和性能。Roofine模型可以在不同的限制条件下通过提高数据传输带宽和单位访存计算次数来提高系统整体吞吐量。Ma等人中研究了卷积运算中的循环展开、平铺、转换等方式,利用了数据的服用度和卷积核之间的并行度提高加速器的吞吐量。神经网络加速器为了适应不同的网络结构大小将可重构设计应用其中。OPU将特征图、权重、指令全部使用乒乓存储的方法提高计算效率但是其资源消耗过多导致系统功耗较大。由于神经网络存在着稀疏性,利用权重或者特征图的稀疏度来跳过零值的计算可以提高计算效率,也通过权重编码和非零位图等方法来压缩矩阵大小从而减少计算量,但是这额外引入了编码矩阵的存储空间,同时使计算控制变得更加复杂。Huang等人设计了多引擎流水线计算的加速器架构,针对每一层网络都设置了专用的参数,缺乏通用性。可以看到,上述研究通过各种办法对计存储效率、通用性、并行性以及量化压缩等方面进行优化。

定点高精度神经网络加速器目前已经实现了相当可观的计算能效,但是高精度神经网络的核心计算仍然是以高成本、高功耗的乘法运算为主,同时需要频繁地对片外存储进行访存。而二值神经网络具有计算复杂度低、存储需求低的特点,非常适合无乘法器的运算以及减少大量的片外访存。因此,二值神经网络的硬件加速得到了广泛的研究。

基于FPGA的二值神经网络硬件加速器以Xilinx研究实验室提出的FINN架构为经典的代表。FINN是一个快速、灵活的异构数据流神经网络架构,通过一系列架构优化使得在MNIST和CIFAR-10数据集上的吞吐量分别达到了9TOPS和2.5TOPS,性能为1032GOPS/W和685GOPS/W。Fu等人提出了一种快速高效的二值神经网络推理架构,通过复用以前的计算结果,可以跳过大量的数据缓存区访问和计算周期,降低了80%的计算量和40%的缓存区访问量,在FPGA上实现的吞吐量达到975GOPS,资源效率较先进的同类型设计提升了1.9倍,较16-bit加速器提升了10倍。BinaryEye是一种基于FPGA的流媒体摄像机系统,该系统利用二值神经网络对一帧内的感兴趣区域进行分类,实现了大量的数据缩减,吞吐率达20000帧每秒(FPS)。Qiao等人建立的二值神经网络加速器可以融合批归一化层且计算资源和内存需求分别减少了84.2%和96.4%。FracBNN使用分数卷积的方法将数据量化为2bit以提高模型精度,而且对计算过程进行了拆分使之可以在硬件上采用xnor和popcount加速。FracBNN在imagenet上Top-1精度达到了71.8%。

现有技术通常采用非开源的ARM架构,并且存在网络参数量过大、GPU运行费用过高等问题,无法满足数据需求增长以及硬件算力性能提升的要求。

发明内容

针对现有技术中的上述不足,本发明提供了一种二值权重卷积神经网络加速器及RISC-V片上系统。

为了达到上述发明目的,本发明采用的技术方案为:

第一方面,本发明提出了一种二值权重卷积神经网络加速器,包括:

指令解析模块,用于对输入配置指令进行解析,并将指令解析结果发送至有限状态机和地址生成模块;

地址生成模块,用于根据指令解析结果生成特征图、权重和偏置数据的基地址;

有限状态机,用于控制加速器运行过程中层与层直接的跳转流程,并根据指令解析结果对加速器计算过程中所需要的配置参数进行下发;

移位滑窗模块,用于采用多个移位随机存取存储器构成串入并出的先进先出存储器对特征图存储模块的输入特征图数据进行储存和更新;

特征图存储模块,用于采用多组特征图乒乓块随机存储器对卷积神经网络中间运算过程的特征图数据进行存储,同时与外部传输通道进行特征图数据交换,并且将存储的特征图数据通过数据选择器和特征图基地址输入多通道共享计算阵列;

权重存储模块,用于采用多组权重块随机存储器对通过外部传输通道映射传输的权重数据进行存储,并且将存储的权重数据通过数据选择器和特征图基地址输入多通道共享计算阵列;

多通道共享计算阵列,用于采用多组乘累加单元构成计算阵列,并将每组特征图数据与对应多组权重数据进行共享,进行乘累加运算后输出至累加模块;

累加模块,用于将多通道共享计算阵列的计算结果进行累加,同时加入偏置并进行RELU操作得到卷积神经网络的输出结果,并输入批归一化和池化模块;

批归一化和池化模块,用于对卷积神经网络的输出结果进行批归一化处理和最大值池化处理后输出至特征图存储模块。

可选择地,所述移位滑窗模块具体包括:

采用三个移位随机存取存储器构成串入并出的先进先出存储器,将特征图存储模块的输入特征图数据的前三列特征图数据全部存入三个移位随机存取存储器中;

设定卷积核大小和滑动步长,将四个卷积核在三个移位随机存取存储器存储的特征图数据上并行滑动且同时进行卷积计算;

当三列特征图数据全部计算完毕后,将特征图存储模块的输入特征图数据的下一列特征图数据全部存入三个移位随机存取存储器中,并将四个卷积核在三个移位随机存取存储器存储的特征图数据上继续并行滑动。

可选择地,所述特征图存储模块具体包括:

四组特征图乒乓块随机存储器,每组特征图乒乓块随机存储器包括两个并行特征图乒乓块随机存储器。

可选择地,所述权重存储模块具体包括:

四组权重块随机存储器,每组权重块随机存储器包括四个并行权重乒乓块随机存储器。

可选择地,所述多通道共享计算阵列具体包括:

十六组乘累加单元中每四组乘累加单元组成一列构成计算阵列,包括第一乘累加阵列、第二乘累加阵列、第三乘累加阵列和第四乘累加阵列;

每个乘累加阵列对应一组特征图乒乓块随机存储器,每个乘累加阵列中的各组乘累加单元分别对应一个特征图乒乓块随机存储器;

经四组特征图乒乓块随机存储器输出的特征图数据分别进入对应的各个乘累加阵列的列首乘累加单元,同时十六个权重乒乓块随机存储器输出的权重数据分别进入对应的各个乘累加阵列的各个乘累加单元,进行乘累加运算;

第四乘累加阵列的列尾乘累加单元依次经第三乘累加阵列和第二乘累加阵列的列尾乘累加单元输出至第一乘累加阵列的列尾乘累加单元进行乘累加运算;第一乘累加阵列的列尾乘累加单元的运算结果输出至特征图存储模块。

可选择地,所述乘累加单元具体包括:

并行的第一稀疏二值卷积计算单元、第二稀疏二值卷积计算单元、第三稀疏二值卷积计算单元和第四稀疏二值卷积计算单元,以及加法树单元;

所述第一稀疏二值卷积计算单元、第二稀疏二值卷积计算单元、第三稀疏二值卷积计算单元和第四稀疏二值卷积计算单元分别对输入的特征图数据和权重数据进行二值卷积计算,并将计算结果全部输出至加法树单元进行累加运算。

可选择地,所述第一稀疏二值卷积计算单元、第二稀疏二值卷积计算单元、第三稀疏二值卷积计算单元和第四稀疏二值卷积计算单元结构相同,均包括:

第一数据选择器、第二数据选择器和加和器;

所述第一数据选择器判断输入的特征图数据是否为零值;若是,则直接进入加和器;否则将特征图数据输出至第二数据选择器;

所述第二数据选择器根据输入的权重数据对输入的特征图数据进行二值卷积乘法运算,并将运算结果输出至加和器;

所述加和器将运算结果进行多次加和运算后输出。

第二方面,本发明还提出了一种RISC-V片上系统,包括:

FLASH模块,用于卷积神经网络的权重数据;

DDR模块,用于对卷积神经网络中间运算过程的特征图数据进行存储,同时与特征图存储模块进行特征图数据交换;

E203RISC-V软核模块,用于建立自定义指令集,通过AXIInterconnect模块发送自定义指令对二值权重卷积神经网络加速器进行加速控制;

AXIInterconnect模块,用于将FLASH模块、DDR模块和E203RISC-V软核模块通过AXI数据传输通路与二值权重卷积神经网络加速器进行互联转发;

AXI数据传输通路,用于建立具有4个AXIDMA和1个AXICDMA的权重、特征图数据传输通路,并利用AXI指令转换桥接口进行自定义指令的下发;

跨时钟域模块,用于向二值权重卷积神经网络加速器提供200MHZ时钟频率;

以及应用权利要求1至7任一所述的二值权重卷积神经网络加速器。

可选择地,所述AXI数据传输通路具体包括:

四个特征图传输通道、一个权重传输通道和一个自定义指令传输通道;

四个特征图传输通道分别通过一组输入特征图先进先出存储器和输出特征图先进先出存储器和四个数据选择器与四组权重块随机存储器进行特征图数据交换,利用存储控制器对各个数据选择器进行控制下发特征图配置参数并通过地址对输入特征图先进先出存储器输入的特征图进行填充;

一个权重传输通道通过一个数据选择器与四组权重块随机存储器进行权重数据交换;

一个自定义指令传输通道通过AXI指令传输模块与自定义指令寄存器进行指令数据交换。

可选择地,所述自定义指令集具体包括:

加速器复位指令,清除存储标志位、padding模式、网络行列和通道数指令,特征图乒乓块随机存储器存满标志指令,权重块随机存储器存满标志指令,输入特征图先进先出存储器空标志指令,块随机存储器准备接收数据标志指令,输出特征图先进先出存储器空标志指令,特征图乒乓块随机存储器空标志指令和权重块随机存储器空标志指令;

在第一层卷积计算开始时根据块随机存储器准备接收数据标志指令进入准备被写入状态,开始传输权重数据;当权重数据传输完成后,根据权重块随机存储器存满标志指令进入特征图数据传输状态,开始传输特征图数据;当特征图数据传输完成后,根据特征图乒乓块随机存储器存满标志指令进入卷积计算状态;当卷积计算完成后,根据输入特征图先进先出存储器空标志指令和输出特征图先进先出存储器空标志指令进入特征图数据回传状态;当特征图数据回传至DDR模块完成后,根据清除存储标志位、padding模式、网络行列和通道数指令回到初始状态。

本发明具有以下有益效果:

本发明通过设计二值权重卷积神经网络加速器以及基于二值权重卷积神经网络加速器的RISC-V片上系统,能够显著提升数据复用性和存储取数效率,减少资源消耗,进而提升加速器的整体工作效率。

附图说明

图1为本实施例1中一种二值权重卷积神经网络加速器的结构示意图;

图2为本实施例1中移位滑窗模块的原理示意图;

图3为本实施例1中数据乒乓存储及流水传输流程示意图;

图4为本实施例1中乘累加单元的结构示意图;

图5为本实施例1中稀疏二值卷积计算单元的结构示意图;

图6为本实施例2中RISC-V片上系统的结构示意图;

图7为本实施例2中AXI数据传输通路的结构示意图;

图8为本实施例2中卷积运算状态转移原理示意图。

具体实施方式

下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

实施例1

如图1所示,本发明实施例提供了一种二值权重卷积神经网络加速器,包括:

指令解析模块,用于对输入配置指令进行解析,并将指令解析结果发送至有限状态机和地址生成模块;

地址生成模块,用于根据指令解析结果生成特征图、权重和偏置数据的基地址;

有限状态机,用于控制加速器运行过程中层与层直接的跳转流程,并根据指令解析结果对加速器计算过程中所需要的配置参数进行下发;

移位滑窗模块,用于采用多个移位随机存取存储器构成串入并出的先进先出存储器对特征图存储模块的输入特征图数据进行储存和更新;

特征图存储模块,用于采用多组特征图乒乓块随机存储器对卷积神经网络中间运算过程的特征图数据进行存储,同时与外部传输通道进行特征图数据交换,并且将存储的特征图数据通过数据选择器和特征图基地址输入多通道共享计算阵列;

权重存储模块,用于采用多组权重块随机存储器对通过外部传输通道映射传输的权重数据进行存储,并且将存储的权重数据通过数据选择器和特征图基地址输入多通道共享计算阵列;

多通道共享计算阵列,用于采用多组乘累加单元构成计算阵列,并将每组特征图数据与对应多组权重数据进行共享,进行乘累加运算后输出至累加模块;

累加模块,用于将多通道共享计算阵列的计算结果进行累加,同时加入偏置并进行RELU操作得到卷积神经网络的输出结果,并输入批归一化和池化模块;

批归一化和池化模块,用于对卷积神经网络的输出结果进行批归一化处理和最大值池化处理后输出至特征图存储模块。

在本实施例,利用数据选择器在输入时将四组特征图数据和十六组权重数据送入对应的计算模块中,在输出时将四组特征图数据送入对应的输出特征图存储FIFO中;并利用有限状态机控制整个加速器运行过程中层与层直接的跳转流程,根据指令解析模块解析的数据对加速器计算过程中所需要的配置参数进行下发,配置参数包括特征图和权重数据的基地址、偏置数据基地址、内FIFO和BRAM存储模块的空满标志位、特征图的长宽以及通道数;最后利用批归一化和池化模块对累加完成后得到卷积层结果进行批归一化处理使数据分布平稳,将批归一化后的结果进行最大值池化提取出含有最多信息量的特征,有效地降低输出特征尺度,从而减少模型之后计算所需要的参数量。

在本发明的一个可选实施例中,一个CNN神经网络包含多个卷积层、归一化层、激活层和池化层,它们在模型中分别起到了不同的作用。使用卷积层对输入数据进行特征提取是对源数据关联性的一种抽象表示。

卷积计算的输入为特征图Fin(H,W,C

其中*是卷积操作。卷积计算的本质是二维滤波器滑窗乘加、纵向求和的操作,求得的结果就为对原始矩阵提取的局部特征信息矩阵。

CNN模型在软件上训练或进行推理时一般为浮点计算,但是在FPGA上进行浮点计算需要大量的资源,所以模型需要进行量化以减少FPGA计算存储所消耗的资源。卷积神经网络具有很强的鲁棒性,在保证准确率的情况下,可以通过减少位宽来降低资源开销。

传统的二值神经网络将权重和激活函数全部都量化为1bit,这种方法虽然可以极大的减少参数量但是对网络的精度不能够有效的保证。因此本实施例设计了二值权重卷积神经网络(Binarized Weight Networks,BWN)将卷积层的权重限定为1bit,从而在硬件上避免需要DSP的乘法运算,降低资源开销。

在二值权重卷积神经网络中,卷积权重按照下式被限定为1bit:

其中W

在本发明的一个可选实施例中,所述移位滑窗模块具体包括:

采用三个移位随机存取存储器构成串入并出的先进先出存储器,将特征图存储模块的输入特征图数据的前三列特征图数据全部存入三个移位随机存取存储器中;

设定卷积核大小和滑动步长,将四个卷积核在三个移位随机存取存储器存储的特征图数据上并行滑动且同时进行卷积计算;

当三列特征图数据全部计算完毕后,将特征图存储模块的输入特征图数据的下一列特征图数据全部存入三个移位随机存取存储器中,并将四个卷积核在三个移位随机存取存储器存储的特征图数据上继续并行滑动。

具体而言,本实施例设计卷积核的大小为3*3,步长为1。卷积运算实际上是卷积核在输入的特征图上滑动,对不同的局部数据进行卷积运算。为了实时更新需要卷积的特征图数据,本实施例设计如图2所示的流水式的移位滑窗模块。神经网络的每一层特征图数据宽度和高度为W和H,卷积通道数为Ci。

移位滑窗模块采用了3个移位RAM构成了串入并出的FirstInputFirst Output(FIFO)来储存和更新输入特征图的3列数据。其中W、H和C

在本发明的一个可选实施例中,所述特征图存储模块具体包括:

四组特征图乒乓块随机存储器,每组特征图乒乓块随机存储器包括两个并行特征图乒乓块随机存储器。

由于在整体系统的运行时间当中数据的传输占了很多时间比例,因此本实施例设计了基于乒乓存储的流水线数据传输方法来提高计算效率。流水传输架构如图3所示,数据首先被送入BRAM0,在BRAM0被存满后数据被送入BRAM1,同时开始计算已经存储在BRAM0中的数据。当BRAM0中的数据被算完时,继续向BRAM0输入数据的同时等BRAM1存满的时候开始计算BRAM1中的数据。在运行过程中,整个系统的空闲时间取决于输入存储时间和卷积计算时间之间的差值。

所述权重存储模块具体包括:

四组权重块随机存储器,每组权重块随机存储器包括四个并行权重乒乓块随机存储器。

此外,本实施例还设置一个中间缓存存储模块,用于存储在累加计算过程中未累加完成的特征图数据。

所述多通道共享计算阵列具体包括:

十六组乘累加单元中每四组乘累加单元组成一列构成计算阵列,包括第一乘累加阵列、第二乘累加阵列、第三乘累加阵列和第四乘累加阵列;

每个乘累加阵列对应一组特征图乒乓块随机存储器,每个乘累加阵列中的各组乘累加单元分别对应一个特征图乒乓块随机存储器;

经四组特征图乒乓块随机存储器输出的特征图数据分别进入对应的各个乘累加阵列的列首乘累加单元,同时十六个权重乒乓块随机存储器输出的权重数据分别进入对应的各个乘累加阵列的各个乘累加单元,进行乘累加运算;

第四乘累加阵列的列尾乘累加单元依次经第三乘累加阵列和第二乘累加阵列的列尾乘累加单元输出至第一乘累加阵列的列尾乘累加单元进行乘累加运算;第一乘累加阵列的列尾乘累加单元的运算结果输出至特征图存储模块。

具体而言,在卷积神经网络加速器架构的设计中,数据传输体系决定了数据的传输带宽大小,而并行计算结构决定了数据的计算速度,也是CNN加速效果的决定因素之一。本实施例设计的多通道共享计算阵列如图1所示,包括16组乘累加单元(MAC)构成,乘累加单元结构如图4所示。在计算过程中,4组特征图乒乓块随机存储器一个时钟周期可以输出144个特征图数据。每组特征图数据由4个权重乒乓块随机存储器共享。每一组权重乘累加单元对应一个权重乒乓块随机存储器。在特征图数据和权重数据进入到乘累加阵列之后,一个时钟周期内可以完成36*4*4(576)次乘法计算。最后每个乘累加阵列将计算结果输出到加法树中进行累加运算,累加完成后送入到特征图存储模块,通过输出特征图存储FIFO与外部传输通道进行特征图数据交换。

在本发明的一个可选实施例中,所述乘累加单元具体包括:

并行的第一稀疏二值卷积计算单元、第二稀疏二值卷积计算单元、第三稀疏二值卷积计算单元和第四稀疏二值卷积计算单元,以及加法树单元;

所述第一稀疏二值卷积计算单元、第二稀疏二值卷积计算单元、第三稀疏二值卷积计算单元和第四稀疏二值卷积计算单元分别对输入的特征图数据和权重数据进行二值卷积计算,并将计算结果全部输出至加法树单元进行累加运算。

其中,所述第一稀疏二值卷积计算单元、第二稀疏二值卷积计算单元、第三稀疏二值卷积计算单元和第四稀疏二值卷积计算单元结构相同,均包括:

第一数据选择器、第二数据选择器和加和器;

所述第一数据选择器判断输入的特征图数据是否为零值;若是,则直接进入加和器;否则将特征图数据输出至第二数据选择器;

所述第二数据选择器根据输入的权重数据对输入的特征图数据进行二值卷积乘法运算,并将运算结果输出至加和器;

所述加和器将运算结果进行多次加和运算后输出。

具体而言,稀疏二值卷积计算单元的结构如图5所示,因为1bit不能表示实际的权值-1,因此本实施例在存储权值时用0来代替-1。同时因为上一层的特征图数据是经过Relu函数的,所以在特征图数据中包含了很多的零值。在卷积计算的时候,这些零值可以跳过计算直接进入加和阶段。对于有数值的特征图数据,计算过程如下式所示:

其中x为输入特征图数据。在二值卷积乘法完成后,将3*3卷积后的9个数据经过8次加和后为一个数据,该数据将被送入累加模块继续处理。

实施例2

如图6所示,本发明实施例在实施例1的基础上,还提出了一种RISC-V片上系统,包括:

FLASH模块,用于卷积神经网络的权重数据;

DDR模块,用于对卷积神经网络中间运算过程的特征图数据进行存储,同时与特征图存储模块进行特征图数据交换;

E203RISC-V软核模块,用于建立自定义指令集,通过AXIInterconnect模块发送自定义指令对二值权重卷积神经网络加速器进行加速控制;

AXIInterconnect模块,用于将FLASH模块、DDR模块和E203RISC-V软核模块通过AXI数据传输通路与二值权重卷积神经网络加速器进行互联转发;

AXI数据传输通路,用于建立具有4个AXIDMA和1个AXICDMA的权重、特征图数据传输通路,并利用AXI指令转换桥接口进行自定义指令的下发;

跨时钟域模块,用于向二值权重卷积神经网络加速器提供200MHZ时钟频率;

以及应用实施例1所述的二值权重卷积神经网络加速器。

具体而言,FLASH模块为FPGA板卡上的存储芯片,在整个神经网络加速器中负责网络权重的存储。

DDR模块为FPGA板卡上的存储芯片,因为神经网络的中间运算过程的特征图数据量大,使用片上的资源存储不下,所以需要在计算过程中将特征图数据传输到DDR中进行缓存。

E203RISC-V软核模块采用RISC-V开源指令集架构,应用E203开源处理器软核在整个神经网络加速器SoC系统,作为CPU控制硬件加速器的运行。本实施例通过自定义指令实现硬件加速,E203软核通过AXI接口发送指令,控制神经网络加速器对识别算法进行加速并配置不同参数实现可配置的设计。其中RISC-V的主频为32MHZ,通过AXIInterconnect模块将E203发出的控制命令和各个外设连接。

AXIInterconnect模块为各个外设的控制总线和数据总线互联转发模块。

AXI数据传输通路建立具有4个AXIDMA和1个AXICDMA的权重、特征图数据传输体系,并且设计了AXI指令转换桥接口以实现自定义配置指令的下发。

跨时钟域模块是为了保证高能效的加速器设计,将原本的100MHZ通过跨时钟域设计提升到200MHZ时钟频率,使加速器工作在200MHZ时钟频率下,进一步提升了计算性能。

二值权重卷积神经网络加速器为整个SoC系统最核心的部分,FSM有限状态机将E203下发的指令解析并且生成控制命令对整个加速器的工作流程进行配置。多通道的权重、特征图和缓存数据存储进一步提升了数据复用性和存储取数效率。多通道权重共享计算阵列减少了资源消耗也提升了整体MAC的工作效率,后续完成累加、池化和激活函数后在通过AXIFIFO搬回DDR中。

在本发明的一个可选实施例中,所述AXI数据传输通路具体包括:

四个特征图传输通道、一个权重传输通道和一个自定义指令传输通道;

四个特征图传输通道分别通过一组输入特征图先进先出存储器和输出特征图先进先出存储器和四个数据选择器与四组权重块随机存储器进行特征图数据交换,利用存储控制器对各个数据选择器进行控制下发特征图配置参数并通过地址对输入特征图先进先出存储器输入的特征图进行填充;

一个权重传输通道通过一个数据选择器与四组权重块随机存储器进行权重数据交换;

一个自定义指令传输通道通过AXI指令传输模块与自定义指令寄存器进行指令数据交换。

具体而言,由于CNN模型规模较大,权重和所有中间层的特征图无法完全存储在片内BRAM。所以在设计CNN加速体系时,需要借助外部的双倍数据速率(DDR)和片内BRAM进行大批量的数据交换。数据传输体系的设计和搭建影响了数据传输带宽的大小,是CNN加速效果的决定因素之一。本实施例搭建了如图7所示的CNN加速器的AXI数据传输通路,包括了四个特征图传输通道、一个权重传输通道和一个自定义指令传输通道。

对于特征图传输通道,每个特征图通道由两个特征图乒乓存储BRAM、一个输出特征图存储FIFO和一个输入特征图存储FIFO构成,MUX为数据选择器,存储控制器对MUX进行控制下发特征图配置参数并通过地址对特征图进行填充从而无需额外的映射单元即可实现卷积中的padding操作。

对于权重传输通道,采用AXI_CDMA进行权重的源地址至目的地址映射传输,由16个权重存储BRAM构成。

在本发明的一个可选实施例中,所述自定义指令集具体包括:

加速器复位指令,清除存储标志位、padding模式、网络行列和通道数指令,特征图乒乓块随机存储器存满标志指令,权重块随机存储器存满标志指令,输入特征图先进先出存储器空标志指令,块随机存储器准备接收数据标志指令,输出特征图先进先出存储器空标志指令,特征图乒乓块随机存储器空标志指令和权重块随机存储器空标志指令;

在第一层卷积计算开始时根据块随机存储器准备接收数据标志指令进入准备被写入状态,开始传输权重数据;当权重数据传输完成后,根据权重块随机存储器存满标志指令进入特征图数据传输状态,开始传输特征图数据;当特征图数据传输完成后,根据特征图乒乓块随机存储器存满标志指令进入卷积计算状态;当卷积计算完成后,根据输入特征图先进先出存储器空标志指令和输出特征图先进先出存储器空标志指令进入特征图数据回传状态;当特征图数据回传至DDR模块完成后,根据清除存储标志位、padding模式、网络行列和通道数指令回到初始状态。

具体而言,为了对不同大小的网络都可以实现前向计算硬件加速过程,本实施例设计了加速器通用指令集。自定义指令通过基于E203软核CPU发出,每条指令的都是固定位宽32bit。不同的指令包含不同的信息包括复位、卷积大小、通道数和存储状态等。CPU端发送指令到PL上,经过指令处理器解析后由控制器将指令的相关信息分发给各个模块。各个模块间协同运行,提高效率。自定义指令的含义如表1所示:

表1加速器指令含义

如图8所示以第一层的卷积计算为例,总共有五个有效状态。S0表示存储BRAM已经准备好被写入;S1表示权重已经传输完成;S2表示输入特征图数据已经传输完成;S3表示开始卷积计算;S4表示向DDR传输计算完成的数据。第一层卷积计算开始时进入状态S0,当PL端的存储BRAM准备好接受数据后,进入S1状态开始传输权重数据,权重数据传输完成后进入状态S2传输特征图数据。特征图数据传完后进入状态S3进行卷积计算,当输出特征图的FIFO满时进入状态S4将计算完的特征图数据传回DDR。如果该层还未算完则回到状态S3继续卷积运算。全部计算完成后发送下一层的参数配置信息并回到状态S0。

在FPGA当中查找表(LUT)、Flip Flop(FF)和DSP是非常重要的资源。在vivado2018.2中实现常见对数据进行8W/8A量化,一个特征图数据和一个权重的乘法消耗72LUT或者1DSP的硬件资源。但是本实施例设计的1W/8A量化方法一个特征图数据和一个权重的乘法仅消耗7LUT,大大降低了硬件资源。

基于二值权重的卷积计算单元进行乘法计算时不需要乘法器DSP,所以计算时来多少个数据就可以计算多少个数据。

在存储资源方面二值权重大大减少了权重数量,本实施例以具有16个卷积层的网络为例,将所有卷积层的权重约束为1bit。全精度网络和二值权重网络的模型结构和相关参数对比结果如表2所示,所有卷积层二值化后参数量仅为全精度参数的3.63%。其中所有卷积层的参数仅有0.68M。

表2卷积层网络参数量分析

/>

其中MP为MaxPooling。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

相关技术
  • 一种基于近似计算的二值权重卷积神经网络硬件加速器计算装置
  • 一种基于近似计算的二值权重卷积神经网络硬件加速器计算模块
技术分类

06120115934037