首页> 中国专利> 一种基于FIFO的可变长循环移位寄存器的PE计算单元结构

一种基于FIFO的可变长循环移位寄存器的PE计算单元结构

摘要

本发明涉及一种基于FIFO的可变长循环移位寄存器的PE计算单元结构;包括FIFO的可变长循环移位寄存器:所述移位寄存器分为三个状态,状态机状态不同时,FIFO功能和循环移位寄存器功能;PE单元:PE单元进行例化、连接,并与其他小模块进行集成,生成指定规模的计算阵列,生成PE阵列。本发明可减少卷积运算对全局存储的访问次数,提升网络的计算效能。

著录项

说明书

技术领域

本发明属于人工智能及集成电路领域,具体涉及基于FIFO的可变长循环移位寄存器的PE计算单元结构。

背景技术

随着人工智能的蓬勃发展,几乎各个行业和领域都开始运用人工智能来解决实际问题,该技术被广泛地应用于图像识别,语音识别,医疗卫生以及自动驾驶等各个领域,相信该技术在未来将会覆盖到更多的实际应用场所当中。人工智能的快速发展得益于各种深度学习算法的研究突破,其中包含的深度卷积神经网络(CNN)是一种经典的深度学习算法,该算法通过对输入图像进行特征提取与计算等操作来完成目标物的识别,检测和分割等多种任务。

目前,许多CNN是在通用处理器上(CentralProcessingUnit,CPU)上通过软件方式实现,然而受限于CPU采用串行的计算方式,使得计算效率不高。有鉴于此,本发明提供一种基于FIFO的可变长循环移位寄存器的PE计算单元结构,本案由此产生。

发明内容

本发明的目的在于提供一种基于FIFO的可变长循环移位寄存器的PE计算单元结构,围绕基于FIFO的可变长循环移位寄存器、PE单元、PE阵列、最大池化等关键模块实现了CNN的FPGA端加速。

为实现上述目的,本发明的具体技术方案为:一种基于FIFO的可变长循环移位寄存器的PE计算单元结构,包括

FIFO的可变长循环移位寄存器:所述移位寄存器分为三个状态,状态机状态不同时,FIFO功能和循环移位寄存器功能;

PE单元:PE单元进行例化、连接,并与其他小模块进行集成,生成指定规模的计算阵列,生成PE阵列。

进一步,所述循环移位功能用于卷积运算中的卷积核的复用,FIFO功能用于卷进运算中数据的按顺序输入。

进一步,所述小模块为ReLU。

进一步,所述FIFO 有先入先出的特性,并结合外部的控制信号。

进一步,所述PE单元实现通用性的一维卷积,并通过行固定流的方法进一步实现支持多Feature、多卷积核和多通道的卷积运算。

进一步,PE单元工作之前,先把排好序的Filter数据和Feature数据写入到移位寄存器中。

本发明的有益效果:传统的移位寄存器结构,如果输入数据在进入移位寄存器时不连续,则寄存器链中间会插入无效数据,不利于计算的控制。因此,本文在FIFO(FirstInFirstOut)结构的基础上设计可变长度的移位寄存器。

该移位寄存器分为三个状态,图中的实线表示当前状态的数据流。当状态机状态不同时,该模块包含FIFO功能和循环移位寄存器功能。其中,循环移位功能用于卷积运算中的卷积核的复用,FIFO功能用于卷进运算中数据的按顺序输入。

PE单元的实现采用基于FIFO的循环移位寄存器配合乘法器实现复杂的乘法功能。其中循环移位寄存器中存放用于本轮计算的Feature值和Filter值。将Feature值和Filter值按照一定的顺序排列好放到循环移位寄存器中。

将上述PE单元进行例化、连接,并与其他小模块如 ReLU 进行集成,生成指定规模的计算阵列,即生成PE阵列。跟绝相应网络的结构和层数,配置相关的PE阵列系数,使该阵列用于卷积神经网络的计算中,即可实现基于FPGA的卷积神经网络加速功能。

附图说明

图1是本发明中设计的基于 FIFO 的可变长移位寄存器架构图;图2是本发明中设计的PE单元架构图;图3是本发明中设计的PE阵列架构图。

具体实施方式

基于FIFO的可变长循环移位寄存器,是为实现卷积运算中卷积核的复用和数据流输入而设计的一种结构。传统的移位寄存器结构,如果输入数据在进入移位寄存器时不连续,则寄存器链中间会插入无效数据,不利于计算的控制。因此,本文在FIFO(FirstInFirstOut)结构的基础上设计可变长度的移位寄存器。

FIFO为先入先出队列,基本的控制信号有读/写时钟、读/写使能、空/满信号和输出数据有效信号。FIFO内部有读指针和写指针,二者复位时都复位到0,写指针指向下一个要写入的地址,每次写操作后写指针自加1;读指针指向下一个要读出数据的地址,每次读操作后读指针自加1。当读指针与写指针完全相同时,FIFO为空;当写指针比读指针多跑一圈(FIFO的深度)时,FIFO为满。

本模块利用了FIFO先入先出的特性,结合外部的控制信号,实现了一个最大长度为FIFO深度的可变长移位寄存器。如图1所示,该模块有两种工作状态,其实现的功能分别为:FIFO的读出数据直接作为FIFO的写入数据,作为一个循环移位寄存器时;以及读出的数据直接写入FIFO中,FIFO中的数据总量保持不变,为写指针和读指针的差值。

PE单元实现通用性的一维卷积,并通过行固定流的方法进一步实现支持多Feature、多卷积核和多通道的卷积运算。PE单元的实现采用基于FIFO的循环移位寄存器配合乘法器实现复杂的乘法功能。

由于本文设计中的一个PE单元只有一个乘法器,其结构如图2所示,为了实现多卷积核、多输入特征图、多通道的通用性卷积计算,采用基于FIFO的循环移位寄存器配合乘法器实现发杂的乘法功能。其中循环移位寄存器中存放用于本轮计算Feature值和Filter值。

通过精心安排Feature和Filter数据的排列顺序,一次性将本轮一维卷积计算过程中多个Feature及Filter的数据排序后读入PE单元中,避免了多次从全局存储中读同一个Filter或Feature的数据,从而可以最大化卷积计算过程中的数据复用。

PE单元工作之前,先把排好序的Filter数据和Feature数据写入到移位寄存器中,其中,Filter的数据个数fLen×fNum×nchannel,Feature的数据个数为iLen×nchannel。

PL端借鉴行固定流的思想设计PE阵列数据流,围绕基于FIFO的可变长循环移位寄存器、PE单元、PE阵列、最大池化等关键模块展开叙述。最终,本文完成了可配置参数的卷积神经网络电路生成器的设计,且系统拥有多通道、多Filter、多Feature的通用性卷积功能。

基于本专利上述的PE单元,PE Array模块直接复用该模块即可实现PE阵列,其结构如图3所示。在综合考虑到VCU118 FPGA开发板上的DSP资源、存储资源以及加速器性能的情况下,本文拟将PE阵列配置成3×14×64的尺寸大小,计算位宽设置为8bit。

Filter的数据通过一个通道传入到PE阵列,一次传送512bit(8bit×64),即一个二维点上所有通道的数据。Feature一次传入8192bit(8bit×64×16)数据,即一次卷积计PE算阵列中所需要的所有图像数据。

PE阵列的数据流基于行固定流的思想,Filter数据进行水平方向的分发,Feature数据进行对角方向的分发,每一列计算出输出特征图某一行的数据。当PE单元完成计算时,首先,分别在PE通道方向进行累加。再将同一列PE累加过后的结果进行累加。当完整的一个卷积计算完成时,累加得到的最终卷积结果传入到ReLU模块,ReLU进行相应操作得到结果。

本文设计的CNN加速器系统采用多级流水线结构以提高电路的运行频率,通过对输入数据的设计安排,本文实现了同时计算多特征图、多通道、多卷积 核的通用性卷积计算加速.最终能够跑到的最高时钟频率为140MHz,综合器在综合乘法器时选用了LUT资源,而很少使用DSP资源。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号