一种cnn协处理器

文档序号:190312 发布日期:2021-11-02 浏览:41次 >En<

阅读说明:本技术 一种cnn协处理器 (CNN coprocessor ) 是由 刘冬生 魏来 陆家昊 卢楷文 朱令松 于 2021-07-16 设计创作,主要内容包括:本发明公开了一种CNN协处理器,属于人工智能算法电路实现领域,包括存储模块、卷积计算模块和数据缓存控制模块;其中,存储模块用于存储前向推理所需的数据;卷积计算模块用于实现前向推理过程中的卷积计算;数据缓存控制模块用于从存储模块中读取当前前向推理所需的数据并缓存,以及当CNN推理模式为连续前向推理时,在当前前向推理所需的数据读取完成之后、以及当前前向推理完成之前从存储模块中读取下一次前向推理所需的数据并缓存。本发明通过将当前轮次的前向推理和下一轮次的数据读取并行执行,大大减少了数据传输所占用的时间,计算速度较快;另外,本发明还引入了一种基于符号位判读的乘加电路,有效的减少了冗余计算,降低了系统功耗。(The invention discloses a CNN coprocessor, belonging to the field of artificial intelligence algorithm circuit realization, comprising a storage module, a convolution calculation module and a data cache control module; the storage module is used for storing data required by forward reasoning; the convolution calculation module is used for realizing convolution calculation in the forward reasoning process; and the data cache control module is used for reading and caching the data required by the current forward reasoning from the storage module, and reading and caching the data required by the next forward reasoning from the storage module after the data required by the current forward reasoning is read and before the current forward reasoning is finished when the CNN reasoning mode is the continuous forward reasoning. The invention executes the forward reasoning of the current round and the data reading of the next round in parallel, thereby greatly reducing the time occupied by data transmission and having higher calculation speed; in addition, the invention also introduces a multiply-add circuit based on sign bit interpretation, which effectively reduces redundant calculation and system power consumption.)

一种CNN协处理器

技术领域

本发明属于人工智能算法电路实现领域,更具体地,涉及一种CNN协处理器。

背景技术

随着片上系统(System on a Chip,SoC)以及人工智能算法的不断发展,人工智能算法由于其高精确度、强鲁棒性以及自学习能力,其中卷神经网络(CNN)由于其局部连接以及权重共享的特性,能有效地防止过拟合并同时大量地减少计算参数,与其他网络模型相比,具有更高的预测精度和运算效率,被广泛地应用在移动端设备中。由于卷积神经网络算法实现过程中存在着大量的数据计算和信息存取,故计算效率、能耗和数据存储是不可忽视的问题。

存储方面,在卷积神经网络的推理过程中,需要大量的权重数据以及偏置数据,处理器需要与存储器进行大量的数据交互,对于交互过程中数据的传输效率要求较高。而现有的CNN协处理器中,需要将进行计算的所有数据(权重、偏置以及像素数据)从存储器先读取出来进行缓冲,然后才能进行后续的卷积运算;由于在推理过程中,需要不停地缓存外围存储模块的权重、偏置数据,导致在连续推理过程中无法完整地访存下一次推理所需的数据,导致连续推理过程中出现阻塞,计算过程中数据的传输过程占用的时间较长,计算速度较慢。除此之外,对于现有的CNN协处理器中的存储结构大部分为随机存储器SRAM以及非易失性存储器(NVM)存储器ROM组成,读写速度较慢,存储器提供数据的速度远远落后处理数据的速度,存在存储墙问题,而存储墙问题进一步导致计算模块与存储器中的权重、偏置以及像素数据的传输在实现卷积神经网络算法过程中占据大量时间。

计算效率和能耗方面,在卷积神经网络的推理过程中,由于要进行大量的卷积计算,对计算效率和能耗提出了较高的要求。SoC中集成的传统通用计算处理核心CPU由于其通用性的指令架构,使其在进行卷积神经网络前向推理过程中能并行处理的数据量十分有限;而现有的CNN协处理器在进行卷积计算过程中,存在着大量的冗余计算,如RELU函数需要将负数转为0值,作为下一层输入与权值进行乘法操作造成大量的资源浪费,以及非必要的功耗开销问题,计算效率较低,能耗较高。

发明内容

针对现有技术的以上缺陷或改进需求,本发明提供一种CNN协处理器,用以解决现有技术中存在的数据传输所占用的时间较长而导致的计算速度较慢的技术问题。

为了实现上述目的,本发明提供了一种CNN协处理器,用于实现CNN网络的前向推理过程;CNN协处理器的推理模式包括连续前向推理和非连续前向推理;

CNN协处理器包括:存储模块、卷积计算模块和数据缓存控制模块;

存储模块用于存储前向推理所需的数据;

数据缓存控制模块用于从存储模块中读取当前前向推理所需的数据,并缓存;

卷积计算模块用于从数据缓存控制模块获取当前前向推理所需的数据,并基于当前前向推理所需的数据实现前向推理过程中的卷积计算,并将卷积计算结果输出至数据缓存控制模块中进行缓存;

数据缓存控制模块还用于当CNN推理模式为连续前向推理时,在当前前向推理所需的数据读取完成之后、以及当前前向推理完成之前从存储模块中读取下一次前向推理所需的数据,并缓存;

数据缓存控制模块还用于在当前前向推理完成后,将卷积计算模块最后一次输入的卷积计算结果作为当前前向推理计算结果,输出至存储模块中进行存储。

进一步优选地,前向推理所需的数据包括像素数据、偏置数据和权重数据。

进一步优选地,数据缓存控制模块包括直接存储访问控制器单元DMAC和数据缓存单元;

DMAC用于从存储模块中读取当前前向推理所需的像素数据、偏置数据和权重数据,并缓存至数据缓存单元中,经由数据缓存单元输出至卷积计算模块中;还用于当CNN推理模式为连续前向推理时,从存储模块中读取下一次前向推理所需的像素数据、偏置数据和权重数据,并缓存至数据缓存单元中;

数据缓存单元还用于缓存卷积计算模块输出的卷积计算结果,并且当卷积计算模块执行的是CNN网络中间层的卷积计算时,将上一次缓存的卷积计算结果作为新的像素数据输入到卷积计算模块中;

数据缓存单元还用于在当前前向推理完成后,将卷积计算模块最后一次输入的卷积计算结果作为当前前向推理计算结果,输出至DMAC,经DMAC存储到存储模块中。

进一步优选地,DMAC包括:数据分配器、像素FIFO、权重FIFO、偏置FIFO、与电路和读取控制器;

数据分配器用于从存储模块中读取当前前向推理所需的像素数据、部分偏置数据和部分权重数据,并分别对应分配到像素FIFO、权重FIFO和偏置FIFO中,各个数据通过对应FIFO输出到数据缓存单元中;

权重FIFO和偏置FIFO分别将表示其是否存满的状态信号输出至与电路中,在与电路中进行与运算后,发送至读取控制器;

读取控制器用于在权重FIFO和偏置FIFO均未存满时,继续从存储模块中读取当前前向推理所需的偏置数据和权重数据,并将偏置数据和权重数据经数据缓存单元输入至卷积计算模块中进行计算,直至当前前向推理所需的所有偏置数据和权重数据均已读取完成;并在当前前向推理完成后,将当前前向推理计算结果写入到存储模块中;其中,当CNN推理模式为连续前向推理时,在当前前向推理所需的所有偏置数据和权重数据均已读取完成之后、以及当前前向推理完成之前,从存储模块中读取下一次前向推理所需的像素数据、偏置数据和权重数据,并缓存至数据缓存单元中。

进一步优选地,当CNN推理模式为连续前向推理时,在当前前向推理所需的所有偏置数据和权重数据均已读取完成之后、以及当前前向推理进行到全连接层计算阶段之前,从存储模块中读取当前前向推理过程中全连接层所需的偏置数据和权重数据,以及下一次前向推理所需的偏置数据和权重数据,并缓存至数据缓存单元中;在当前前向推理进行到全连接层计算阶段之后、以及当前前向推理完成之前,从存储模块中读取下一次前向推理所需的像素数据,并缓存至数据缓存单元中。

进一步优选地,上述卷积计算模块包括MAC阵列;

MAC阵列用于实现像素数据和权重数据的卷积计算后,与偏置数据相加,得到卷积计算结果;

MAC阵列包括多个MAC乘加单元;MAC乘加单元呈阵列分布,其排布方式为:MAC乘加单元沿着第一方向重复排列nx个,nx个乘加单元通过级联的方式连接在一起形成乘加子模块;乘加子模块沿着第二方向重复排列ny个形成乘加核模块;乘加核模块沿着第三方向重复排列nz个形成一个包含nx*ny*nz个MAC乘加单元的阵列电路;其中,nx、ny和nz为不小于2的整数;上述第一、第二和第三方向均不同;

其中,MAC乘加单元包括:条件判断电路、乘法器、二路选择器和加法器;

条件判断电路对像素数据进行条件判断,若像素数据为正数,则将使能信号置高位输出至乘法器和二路选择器中,此时,乘法器使能,二路选择器选通乘法器输出的结果;乘法器计算得到像素数据和权重数据相乘后的结果,经二路选择器输出至加法器中;否则,将使能信号置低位输出至乘法器和二路选择器中,此时,乘法器不使能,二路选择器选通数据0输出至加法器中;

加法器用于对二路选择器输出的结果与psum进行求和;其中,psum为MAC乘加单元沿着第一方向的上一级MAC乘加单元的输出结果;当MAC乘加单元为第一方向上的第一级MAC乘加单元时,psum取值为0;

MAC阵列还包括累加器;累加器用于计算每个乘加子模块输出的数据与对应偏置数据之和。

进一步优选地,上述卷积计算模块还包括池化处理单元;池化处理单元用于对MAC阵列输出的计算结果进行池化。

进一步优选地,存储模块为自旋转移矩磁性随机存储器STT-MRAM。

进一步优选地,上述CNN协处理器还包括寄存器配置模块和中央控制单元模块;

寄存器配置模块用于在初始状态下,配置CNN协处理器所需的寄存器组;寄存器组用于存储推理信息;推理信息包括:CNN推理模式、当前前向推理所需像素数据在存储模块中的存储地址AI_PIX_ADR、前向推理所需权重数据在存储模块中的存储地址AI_WGT_ADR、前向推理所需偏置数据在存储模块中的存储地址AI_BIAS_ADR;其中,当CNN推理模式为连续前向推理时,推理信息还包括存储下一次前向推理所需像素数据在存储模块中的存储地址AI_NPIX_ADR;

中央控制单元模块用于读取寄存器配置模块中的寄存器组中所存储的推理信息,并将CNN推理模式、AI_PIX_ADR、AI_WGT_ADR和AI_BIAS_ADR发送至数据缓存控制模块,且当CNN推理模式为连续前向推理时,还用于将AI_NPIX_ADR发送至数据缓存控制模块;用于监控当前前向推理过程是否完成,并在当前前向推理过程完成时通知数据缓存控制模块和寄存器配置模块;还用于产生卷积计算模块的使能信号,并输出至卷积计算模块中;

寄存器配置模块还用于当CNN推理模式为连续前向推理时,在当前前向推理过程完成后,重新配置CNN协处理器所需的寄存器组,将AI_PIX_ADR更新为AI_NPIX_ADR;且若下一次前向推理不为最后一次前向推理,将AI_NPIX_ADR更新为下一次前向推理之后的一次前向推理所需像素数据的存储地址;否则,将CNN推理模式更新为非连续前向推理。

进一步优选地,AI_PIX_ADR为当前前向推理所需像素数据在存储模块中的存储地址的首地址,AI_WGT_ADR为当前向推理所需权重数据在存储模块中的存储地址的首地址,AI_BIAS_ADR为当前向推理所需偏置数据在存储模块中的存储地址的首地址;

存储模块中,存储当前前向推理的不同层所需的像素数据、权重数据和偏置数据的地址均是连续的;当前前向推理不同层所需的像素数据、权重数据和偏置数据均从对应的首地址开始依次读取得到。

总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:

1、本发明提供了一种CNN协处理器,包括存储模块、卷积计算模块和数据缓存控制模块,具有连续前向推理和非连续前向推理两种模式,当在连续前向推理模式下时,通过数据缓存控制模块在当前前向推理所需的数据读取完成之后、以及当前前向推理完成之前从存储模块中读取下一次前向推理所需的数据并缓存;通过将当前轮次的前向推理和下一轮次的数据读取并行执行,大大减少了数据传输所占用的时间,计算速度较快。

2、本发明所提供的CNN协处理器,通过DMAC实现了一种高效数据搬移方案,通过总线读取数据通过数据分配器分配到相应的FIFO,权重FIFO、偏置FIFO用于提前缓存本次推理以及下次推理还未参与卷积计算的权重、偏置数据,像素FIFO用于缓存下次推理需要的像素数据,由于在全连接层计算过程开始阶段,数据缓存单元并没有足够的空间,需要先存入像素FIFO中,待数据缓存单元存在空闲空间,通过读取控制器再将像素FIFO读入其中;这种结构极大地提升了连续推理过程中的计算效率,避免了数据访存导致阻塞而影响计算效率,能有效地提高电路的整体计算效率以及CNN处理器的吞吐量。

3、本发明所提供的CNN协处理器,在CNN连续推理模式下,在全连接层之前缓存好当前前向推理过程中全连接层所需要的偏置、权重数据以及下一轮次推理需要的权值、偏置数据;在全连接层计算过程中,存储的大量的卷积层的多通道输入数据被展平成单通道,缓存所需的数据量大大减小,从而缓存下一轮次推理的像素数据,能有效减少内部存储资源的开销。

4、本发明所提供的CNN协处理器中,还包括一种基于符号位判读的MAC乘加单元;其中,MAC乘加单元包括条件判断电路、乘法器、二路选择器和加法器,通过条件判断电路对输入的像素数据的正负情况进行判断来控制乘法器和二路选择器,只有当像素数据为正时,乘法器才会进行乘法运算,二路选择器才会选通乘法运算结果进行输出,从而提供了一种高效的激活函数RELU的电路实现方法,避免了在池化处理过程后单独加入激活函数模块电路所造成的硬件资源开销,同时也解决了现有技术的实现过程中需要先将负数转为0值,作为下一层输入与权值进行乘法操作而造成大量的资源浪费以及非必要的功耗开销问题,本发明能够有效地降低电路的硬件资源开销,并且显著减少冗余乘加的操作,降低了整体电路的功耗。

5、本发明的所提供的CNN协处理器中,存储模块采用自旋转移矩磁性随机存储STT-MRAM,STT-MRAM具有非易失性、高性能、高密度、高擦写次数及与CMOS工艺兼容性等特性,读写速度较快,避免了存储墙问题,同时也进一步减少了计算模块与存储器中的权重、偏置以及像素数据的传输在实现卷积神经网络算法过程中所占据的时间,提高了计算速度。

附图说明

图1为本发明提供的一种CNN协处理器结构示意图;

图2为本发明实施例提供的CNN协处理器的详细结构示意图;

图3为本发明实施例提供的MAC阵列的电路结构示意图;

图4为本发明实施例提供的DMAC的电路结构示意图;

图5为本发明实施例提供的CNN协处理器前向推理的流程示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

为了实现上述目的,本发明提供了一种CNN协处理器,用于实现CNN网络的前向推理过程,适用于卷积神经网络前端推理中加速卷积运算;CNN协处理器的推理模式包括连续前向推理和非连续前向推理;其中,连续推理模式为在当前推理过程中,缓存下一次推理过程中需要的全部像素数据以及部分权值、偏置数据,保证后续每次推理过程中不产生任何阻塞,能够全流水线进行;非连续推理(即后续没有下一次前向推理):完成单次推理,每次推理进行前需要完成部分数据缓存。

具体地,如图1所示,CNN协处理器包括:存储模块、卷积计算模块和数据缓存控制模块;

存储模块用于存储前向推理所需的数据;

数据缓存控制模块用于从存储模块中读取当前前向推理所需的数据,并缓存;

卷积计算模块用于从数据缓存控制模块获取当前前向推理所需的数据,并基于当前前向推理所需的数据实现前向推理过程中的卷积计算,并将卷积计算结果输出至数据缓存控制模块中进行缓存;

数据缓存控制模块还用于当CNN推理模式为连续前向推理时,在当前前向推理所需的数据读取完成之后、以及当前前向推理完成之前从存储模块中读取下一次前向推理所需的数据,并缓存。

数据缓存控制模块还用于在当前前向推理完成后,将卷积计算模块最后一次输入的卷积计算结果作为当前前向推理计算结果,输出至存储模块中进行存储;

其中,前向推理所需的数据包括像素数据、偏置数据和权重数据。

优选地,数据缓存控制模块包括直接存储访问控制器单元DMAC和数据缓存单元;

DMAC用于从存储模块中读取当前前向推理所需的像素数据、偏置数据和权重数据,并缓存至数据缓存单元中,经由数据缓存单元输出至卷积计算模块中;还用于当CNN推理模式为连续前向推理时,从存储模块中读取下一次前向推理所需的像素数据、偏置数据和权重数据,并缓存至数据缓存单元中;

数据缓存单元还用于缓存卷积计算模块输出的卷积计算结果,并且当卷积计算模块执行的是CNN网络中间层的卷积计算时,将上一次缓存的卷积计算结果作为新的像素数据输入到卷积计算模块中;

数据缓存单元还用于在当前前向推理完成后,将池化处理模块最后一次输入的池化后的卷积计算结果作为当前前向推理计算结果,输出至DMAC,经DMAC存储到存储模块中。

优选地,卷积计算模块包括MAC阵列和池化处理单元。

在一个可选实施例中,上述CNN协处理器还包括寄存器配置模块和中央控制单元模块;数据缓存控制模块包括直接存储访问控制器单元DMAC和数据缓存单元;卷积计算模块包括MAC阵列和池化处理单元;其中,DMAC与存储模块通过主机总线接口相连,寄存器配置模块与存储模块通过从机总线接口相连。具体地,如图2所示为CNN协处理器的详细结构示意图,包括总线从机接口模块AHB_slave_Interface、总线主机接口模块AHB_master_Interface、寄存器配置模块AI_CFG、中央控制单元模块Central controller、MAC阵列、池化处理单元Pooling process unit、直接存储访问控制器单元DMAC以及存储模块。

其中,DMAC与存储模块通过总线主机接口模块AHB_master_Interface相连,寄存器配置模块与存储模块通过总线从机接口模块AHB_slave_Interface相连;中央控制单元模块的第一输入端、第一输出端、第二输出端、第三输出端分别与寄存器配置模块AI_CFG的第一输出端、MAC阵列的第一输入端、数据缓存单元的第二输入端以及直接存储访问控制器单元DMAC的第三输入端对应相连;DMAC的第一输入端和第一输出端分别与主机接口模块AHB_master_Interface的第一输出端和第一输入端相连;数据缓存单元的第一输入端和第一输出端分别与直接存储访问控制器单元DMAC的第二输出端和第二输入端对应相连;数据缓存单元的第二输出端和MAC阵列的第二输入端相连;MAC阵列的第一输出端与池化处理单元的第一输入端相连;

总线从机接口模块AHB_slave_Interface与总线主机接口模块AHB_master_Interface与其它模块通信采用AMBA 2.0协议总线;从机接口模块AHB_slave_Interface负责与CNN协处理器外部的主处理器进行数据传输,完成对CNN协处理器运行方式的控制以及计算结果的读取。具体地,从机接口模块AHB_slave_Interface与AHB总线相连有12个AHB总线信号,包括9个输入信号以及3个输出信号,其中1bit位宽的输入信号分别为时钟信号ai_clk、复位信号ai_rst、片选信号hsel_ai、写使能信号hwrite、空闲信号hready_in,2bit位宽的输入信号分别为传输大小信号hsize、传输类型信号htrans,32bit位宽的输入信号分别为地址数据haddr、写入数据hwdata,输出信号分别1bit位宽的应答信号hresp、1bit位宽的空闲信号hready_out以及32bit位宽的读取数据hrdata。主机接口模块AHB_master_Interface与AHB总线相连有12个AHB总线信号,包括6个输入信号以及8个输出信号,其中1bit位宽的输入信号分别为时钟信号ai_clk、复位信号ai_rst、空闲信号hready_in以及总线授予信号hgrant,2bit位宽的输入信号分别为传输大小信号hsize、传输类型信号htrans,32bit位宽的输入信号为写入数据hrdata,1bit位宽的输出信号分别片选信号hsel、写使能信号hwrite、空闲信号hready_out以及总线请求信号hbuserq,2bit位宽的输出信号分别为传输大小信号hsize、传输类型信号htrans,32bit位宽的输入信号分别为地址数据haddr、写入数据hwdata。

存储模块充当CNN协处理器的部分RAM以及ROM存储器,用于存储待输入的像素数据、偏置数据以及权重数据;本实施例中,存储模块为自旋转移矩磁性随机存储器STT-MRAM,具体为,64K×32bit STT-MRAM;STT-MRAM具有非易失性、高性能(读写速度和DRAM相当,接近SRAM的读写速度)、高密度、高擦写次数(擦写次数>3*1016)及与CMOS工艺兼容性等特性,在人工智能应用中,STTMRAM符合其对存储器的读写速度要求。

寄存器配置模块AI_CFG用于在初始状态下,配置CNN协处理器所需的寄存器组;寄存器组用于存储推理信息;推理信息包括:当前前向推理是否完成的标志AI_CNN_DONE、CNN推理模式AI_CNN_MODE、当前前向推理所需像素数据在存储模块中的存储地址AI_PIX_ADR、前向推理所需权重数据在存储模块中的存储地址AI_WGT_ADR、前向推理所需偏置数据在存储模块中的存储地址AI_BIAS_ADR;其中,CNN推理模式包括连续前向推理和非连续前向推理;当CNN推理模式为连续前向推理时,推理信息还包括存储下一次前向推理所需像素数据在存储模块中的存储地址AI_NPIX_ADR。需要说明的是,不同轮次的前向推理所采用的权重和偏置均相同,故这里的AI_WGT_ADR和AI_BIAS_ADR不仅适用于当前前向推理,也适用于下一次前向推理。

中央控制单元模块用于为其它电路模块提供控制信号,并产生缓冲数据地址信号供卷积计算模块读取相应的数据进行卷积计算;具体地,中央控制单元模块用于读取寄存器配置模块中的寄存器组中所存储的推理信息,并将CNN推理模式、AI_PIX_ADR、AI_WGT_ADR和AI_BIAS_ADR发送至DMAC,且当CNN推理模式为连续前向推理时,还用于将AI_NPIX_ADR发送至DMAC;用于监控当前前向推理过程是否完成,并在当前前向推理过程完成时通知数据缓存单元和寄存器配置模块(以配置AI_CNN_DONE);还用于产生MAC阵列计算使能信号,并输出至MAC乘加单元中;以及产生数据缓存单元的地址数据。

DMAC用于基于AI_PIX_ADR、AI_WGT_ADR和AI_BIAS_ADR,从存储模块中读取当前前向推理所需的像素数据、偏置数据和权重数据,并缓存至数据缓存单元中,经由数据缓存单元输出至MAC阵列模块;需要说明的是,AI_PIX_ADR为当前前向推理所需像素数据在存储模块中的存储地址的首地址,AI_WGT_ADR为当前向推理所需权重数据在存储模块中的存储地址的首地址,AI_BIAS_ADR为当前向推理所需偏置数据在存储模块中的存储地址的首地址;存储模块中,存储当前前向推理的不同层所需的像素数据、权重数据和偏置数据的地址均是连续的;当前前向推理不同层所需的像素数据、权重数据和偏置数据均从对应的首地址开始依次读取得到。

MAC阵列包括多个阵列分布的MAC乘加单元,MAC阵列模块用于基于MAC阵列计算使能信号对各MAC乘加单元进行控制,实现像素数据和权重数据的卷积计算后,与偏置数据相加,得到卷积计算结果,并输出到池化处理单元中;

池化处理单元用于对MAC阵列输出的卷积计算结果进行池化,并将池化后的卷积计算结果输出至数据缓存单元中进行缓存;

数据缓存单元还用于在当前前向推理完成后,将池化处理单元最后一次输入的池化后的卷积计算结果作为当前前向推理计算结果,输出至DMAC,经DMAC存储到存储模块中;

DMAC还用于当CNN推理模式为连续前向推理时,基于AI_NPIX_ADR、AI_WGT_ADR和AI_BIAS_ADR从存储模块中读取下一次前向推理所需的像素数据、偏置数据和权重数据,并缓存至数据缓存单元中;

寄存器配置模块还用于当CNN推理模式为连续前向推理时,在当前前向推理过程完成后,重新配置CNN协处理器所需的寄存器组,将AI_PIX_ADR更新为AI_NPIX_ADR;且若下一次前向推理不为最后一次前向推理,将AI_NPIX_ADR更新为下一次前向推理之后的一次前向推理所需像素数据的存储地址;否则,将CNN推理模式更新为非连续前向推理。

其中,在一种可选实施方式中,MAC阵列中的MAC乘加单元的排布方式为:MAC乘加单元沿着第一方向重复排列nx个,nx个乘加单元通过级联的方式连接在一起形成乘加子模块;乘加子模块沿着第二方向重复排列ny个形成乘加核模块;乘加核模块沿着第三方向重复排列nz个形成一个包含nx*ny*nz个MAC乘加单元的阵列电路;其中,nx、ny和nz为不小于2的整数;上述第一、第二和第三方向均不同。如图3所示,本实施例中,第一方向为x轴方向,第二方向为y轴方向,第三方向为z轴方向;nx,ny,nz分别代表MAC阵列在x轴,y轴,z轴上的MAC乘加单元的个数。

具体地,MAC乘加单元包括:条件判断电路、二输入的乘法器、二路选择器、二输入的加法器和D触发器;

首先由乘法器输入pixel像素数据和weight权重数据,并将乘法器的输出与二路选择器相连;对输入pixel像素数据进行条件判断,若输入的像素数据的符号为0(本实施例中,正数的符号位为0,负数的符号位为1,若输入的像素数据的符号为0,则为正数)时,将使能信号置高位输出给乘法器和二路选择器,以使二路选择器选通pixel像素数据和weight权重数据乘法运算后的结果,否则将使能信号置低位输出给乘法器和二路选择器,此时,不进行乘法运算,直接使二路选择器选通数据0;二路选择器的输出端与加法器第一输入端相连,psum与加法器的第二输入端相连,用于对二路选择器输出的结果与psum进行求和,得到当前MAC乘加单元的乘加结果;其中,psum为MAC阵列沿y轴的上一MAC乘加单元的乘加结果,且若MAC乘加单元为y轴第一个MAC乘加单元,则输入psum为0;如图3所示,其中MAC单元000、001、002、003的输入psum为0,MAC单元010、011、012、013的输入psum为MAC单元000、001、002、003的输出结果,以此类推。D触发器用于在上升沿或下降沿时输出当前MAC乘加单元的乘加结果。本发明通过MAC乘加单元在乘法器前加入条件判断电路以及乘法器输出后加入二路选择器来实现RELU激活函数。需要说明的是,RELU函数称为线性整流函数,是人工神经网络中常用的激活函数,其公式为f(x)=max(0,x)。

进一步地,MAC阵列还包括累加器,累加器用于计算每个乘加子模块输出的数据与对应偏置数据之和。

优选地,如图4所示,DMAC包括:数据分配器、像素FIFO(Pixel FIFO)、权重FIFO(Weight FIFO)、偏置FIFO(Bias FIFO)、与电路(与门)和读取控制器(Controller);

数据分配器的输入端与机接口模块AHB Master Interface相连,数据分配器的输出端分别与Pixel FIFO、Weight FIFO和Bias FIFO的输入端相连;Weight FIFO、Bias FIFO的满信号分别和与电路的两个输入端相连,并将与电路的输出信号输出到读取控制器中;

数据分配器用于从存储模块中读取当前前向推理所需的像素数据、部分偏置数据和部分权重数据,并分别对应分配到像素FIFO、权重FIFO和偏置FIFO中,各个数据通过对应FIFO输出到数据缓存单元中;

权重FIFO和偏置FIFO分别将表示其是否存满的状态信号输出至与电路中,在与电路中进行与运算后得到表示权重FIFO和偏置FIFO存满状态的信号WB_FIFO_FULL,发送至读取控制器;其中,WB_FIFO_FULL为0时表示权重FIFO和偏置FIFO均未存满,WB_FIFO_FULL为1时表示权重FIFO和偏置FIFO均已存满。

读取控制器用于在权重FIFO和偏置FIFO均未存满时,继续从存储模块中读取当前前向推理所需的偏置数据和权重数据,并将偏置数据和权重数据经数据缓存单元输入至卷积计算模块中进行计算,直至当前前向推理所需的所有偏置数据和权重数据均已读取完成;并在当前前向推理完成后,将当前前向推理计算结果写入到存储模块中;其中,当CNN推理模式为连续前向推理时,在当前前向推理所需的所有偏置数据和权重数据均已读取完成之后、以及当前前向推理完成之前,从存储模块中读取下一次前向推理所需的像素数据、偏置数据和权重数据,并缓存至数据缓存单元中。优选地,当CNN推理模式为连续前向推理时,在当前前向推理所需的所有偏置数据和权重数据均已读取完成之后、以及当前前向推理进行到全连接层计算阶段之前,从存储模块中读取当前前向推理过程中全连接层所需的偏置数据和权重数据,以及下一次前向推理所需的偏置数据和权重数据,并缓存至数据缓存单元中;在当前前向推理进行到全连接层计算阶段之后、以及当前前向推理完成之前,从存储模块中读取下一次前向推理所需的像素数据,并缓存至数据缓存单元中。

进一步地,本发明中使用CNN协处理器时的前向推理流程如图5所示。在步骤001中,首先CNN协处理器外部的主处理器通过总线从机接口AHB slave interface模块输入地址数据adr和en使能信号至寄存器配置模块AI_CFG中。在步骤002中,寄存器配置模块AI_CFG基于地址数据adr和en使能信号对AI_CNN_MODE,AI_PIX_ADR,AI_NPIX_ADR、AI_WGT_ADR、AI_BIAS_ADR寄存器分别进行配置。其中,所配置的寄存器功能表如表1所示;

表1

在步骤003中DMAC通过主机接口模块AHB Master Interface搬移像素、偏置、权重数据,通过数据分配器将从STTMRAM中读取的数据分配到Pixel FIFO、Weight FIFO、BiasFIFO,各个数据通过对应FIFO输出到数据缓存单元。

在步骤004中,在卷积计算过程中,DMAC中的读取控制器Controller对WB_FIFO_FULL信号进行条件判断,若为0,则执行步骤005(DMAC继续读取权值和偏置数据),然后检验权值、偏置数据是否加载完成,若加载完则对寄存器AI_CNN_MODE进行判断;若为1,则返回步骤004。

对CNN推理模式AI_CNN_MODE进行判断,若AI_CNN_MODE值为2,即推理模式为连续推理,则执行步骤006,DMAC加载下一次推理需要的权值以及偏置数据,加载完成后对FC_layer信号进行判断,其中FC_layer信号代表CNN推理是否进行到全连接层,若为1,则已进行到全连接层,执行步骤007。在步骤007中,DMAC搬移下一次推理需要的像素数据,搬移完成后,检测本次推理是否完成,若完成则执行步骤008,将推理的计算结果写入STTMRAM中;执行完步骤008后,继续执行步骤009配置相关寄存器(重新配置CNN协处理器所需的寄存器组,将AI_PIX_ADR更新为AI_NPIX_ADR;且若下一次前向推理不为最后一次前向推理,则将AI_NPIX_ADR更新为下一次前向推理之后的一次前向推理所需像素数据的存储地址;若下一次前向推理为最后一次前向推理,则将CNN推理模式AI_CNN_MODE更新为非连续推理模式,此时,AI_CNN_MODE值不为2),执行结束后跳转至步骤004,直接进行下一次前项推理的卷积计算。若AI_CNN_MODE值不为2,则推理模式为非连续推理,则检测本次推理是否完成,若完成则执行步骤008(将推理的计算结果写入STT-MRAM中),步骤008执行完成后,CNN协处理器运行结束。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

18页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于单片机实现1553B总线通信的方法及系统

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!