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

神经网络加速装置、方法和通信设备

文献发布时间:2023-06-19 13:45:04


神经网络加速装置、方法和通信设备

技术领域

本发明涉及数据处理领域,具体涉及一种神经网络加速装置、方法和通信设备。

背景技术

卷积神经网络由输入层(inputlayer)、任意数量的作为中间层的隐藏层(hiddenlayer)及输出层(outputlayer)构成。输入层(inputlayer)具有多个输入节点(神经元)。输出层具有识别对象数量的输出节点(神经元)。

卷积核是一个设置在隐藏层的小窗口,其中保存着权重参数。卷积核在输入图像上按步长依次滑动,和对应区域的输入特征图像进行乘加运算,即将卷积核中的权重参数和对应的输入图像的值先相乘再求和。传统的卷积加速运算装置需要利用img2col方法对输入的特征图数据和卷积核数据按照卷积核尺寸及步长参数进行矩阵形式的展开处理再对展开后的矩阵进行运算,从而可按照矩阵乘法运算规则进行卷积加速,但这种方法在特征数据矩阵展开后,需要较大的片上缓存,同理需要更多的片外主存读取频率以及不能高效复用以读取的数据从而需要占用了片外访存读写带宽增加了硬件功耗,同时基于img2col展开方式的卷积加速运算方法不利于对不同尺寸卷积核和步长的卷积运算的硬件逻辑电路实现,因此,在卷积网络运算过程中,每个输入通道都需要和多个卷积核进行卷积矩阵运算,特征图数据需要多次获取;而且每个通道上的所有特征图数据全部缓存在缓存器中,数据量不仅庞大,而且当进行卷积矩阵计算时,由于矩阵转换后的特征数据大小远远超过原特征数据大小,不仅会浪费片上存储资源,因而无法执行大数据量的运算。

发明内容

因此,为了克服上述现有技术的缺点,本发明提供一种神经网络加速装置、方法和通信设备。

为了实现上述目的,本发明提供一种神经网络加速装置,包括:主存储器,用于接收并存储待处理图像的特征图数据、权重数据;主控制器,用于解析神经网络程序编译指令,并根据神经网络的结构参数,生成配置信息和运算指令;数据缓存模块,包括用于缓存从所述特征图数据中提取的特征行数据的特征数据缓存单元和用于缓存从所述权重数据中提取的卷积核数据的卷积核缓存单元;神经网络计算模块,包括数据控制器、数据提取器和神经网络计算单元,所述数据控制器根据配置信息和指令信息调整数据通路,控制所述数据提取器提取的数据流按指令信息加载到对应的神经网络计算单元,所述神经网络计算单元至少完成一个卷积核与所述特征图数据的卷积运算,并在至少一个周期完成多个卷积结果的累加,从而实现电路重构以及数据复用;累加器,用于对所述卷积核运算单元得到的多个输入通道特征图上的卷积结果进行累加,输出所述卷积核对应的输出特征图数据。

在其中一个实施例中,所述神经网络计算单元包括多个神经网络加速分片,每个神经网络加速分片包含多个卷积运算乘加阵列,每个神经网络加速分片至少完成一个输入通道的特征图数据与一个卷积核数据的卷积运算,多个神经网络加速分片完成多个输入通道的特征图数据与一个卷积核数据的卷积运算。

在其中一个实施例中,所述多个神经网络加速分片构成第一神经网络运算矩阵,多个第一神经网络运算矩阵并联耦合构成第二神经网络加速矩阵;所述第二神经网络加速矩阵中的第一神经网络运算矩阵用于完成多个输入通道特征数据与一个卷积核的卷积运算,多个所述第二神经网络加速矩阵完成多个输入通道特征数据与多个卷积核的并行卷积运算。

在其中一个实施例中,每组卷积运算乘加阵列通过并行输入的方式获取特征行数据;每组卷积运算乘加阵列通过串行输入的方式获取卷积核行数据。

在其中一个实施例中,所述神经网络加速分片包含多个第一多路选择复用器和多个第二多路选择复用器,所述第一多路选择复用器与所述卷积运算乘加阵列一一对应地并行耦合,所述第二多路选择复用器与所述卷积运算乘加阵列一一对应地串行耦合;所述第一多路选择复用器通过数据选择信号获取与所述卷积运算乘加阵列对应的所述特征行数据,并行输入至对应的各级所述卷积运算乘加阵列中,所述第二多路选择复用器获取与所述卷积运算乘加阵列对应的卷积核行数据串行输入至各级所述卷积运算乘加阵列中完成卷积乘加运算。

在其中一个实施例中,所述神经网络计算模块还包括第一移位寄存器组与第二移位寄存器组,所述神经网络计算单元包括乘加子单元与部分和缓存子单元,所述第一移位寄存器组采用串行输入并行输出的方式,并通过第一多路选择复用器将所述特征行数据输出至所述乘加子单元;所述第二移位寄存器组采用串行输入并根据步长择一输出的方式,并通过第二多路选择复用器将所述卷积核行数据输出至下一级卷积运算乘加阵列和所述乘加子单元,所述乘加子单元将输入的所述特征行数据和所述卷积核行数据对应进行乘法运算,并与所述部分和缓存子单元中的卷积行部分和数据进行累加运算,当完成所述卷积核行数据与对应卷积窗口的所述特征行数据的卷积操作时,将所述卷积窗口的多个行卷积结果部分和累加,实现卷积核的一个滑窗卷积操作;每组不同级的卷积运算乘加阵列在一个卷积行周期输出所述行运算结果给所述累加器,所述累加器通过加法树将当前卷积核所有行对应的各组同级所述卷积运算乘加阵列输出的所述行运算结果累加,从而实现一个卷积核的卷积运算。

在其中一个实施例中,所述数据控制器用于根据配置信息和指令信息,获取加载到神经网络计算单元内的特征数据和对应的权重数据的存储地址,同时指令多路复用器通断调整数据通路,按指令信息将特征数据和对应的权重数据输入对应的神经网络计算单元;数据提取器,包括特征提取器和卷积核提取器,所述特征提取器用于根据指令信息从特征数据缓存单元提取的特征行数据,所述卷积核提取器用于根据指令信息从卷积核缓存单元提取的卷积核数据,以便传输给所述神经网络计算模块。

在其中一个实施例中,所述特征数据缓存单元包含多个特征数据缓存组,每个特征数据缓存单元缓存一个输入通道的部分特征数据且与至少一个神经网络加速分片耦合,多个神经网络加速分片共享一个卷积核数据缓存单元,每个神经网络加速分片从对应特征数据缓存组中获取一个输入通道的特征图数据,同一卷积核数据分配到多个神经网络加速分片。

在其中一个实施例中,所述数据控制器根据配置信息和指令信息获取加载到神经网络计算单元内的特征数据和对应的权重数据的存储地址,同时指令多路复用器从所述第一移位寄存器组中采用串行输入并行输出的方式将所述特征行数据输出至所述神经网络计算单元,指令多路复用器从第二移位寄存器组中采用串行输入并根据步长择一输出的方式将所述卷积核行数据输出至所述神经网络计算单元的当前卷积运算乘加阵列和下一级卷积运算乘加阵列。

本发明还提供了一种神经网络加速方法,包括以下步骤:采用主存储器接收并存储待处理图像的特征图数据、权重数据;采用主控制器解析神经网络程序编译指令,并根据神经网络的结构参数,生成配置信息和运算指令;采用数据缓存模块的特征数据缓存单元缓存从所述特征图数据中提取的特征行数据的特征数据缓存单元,并采用数据缓存模块的卷积核缓存单元缓存从所述权重数据中提取的卷积核数据;采用神经网络计算模块的数据控制器根据配置信息和指令信息通断调整数据通路,控制所述神经网络计算模块的数据提取器提取的数据流按指令信息流入对应的神经网络计算单元,所述神经网络计算单元至少完成一个卷积核与所述特征图数据的卷积运算,并在至少一个周期完成多个卷积结果的累加,从而实现电路重构以及数据复用;采用累加器对所述卷积核运算单元得到的多个输入通道特征图上的卷积结果进行累加,输出所述卷积核对应的输出特征图数据。

本发明还提供了一种通信设备,其特征在于,包括通信连接的中央处理器CPU、存储器DDR SDRAM和上述神经网络加速装置,其中,所述CPU用于控制所述神经网络加速装置启动卷积运算,所述DDR SDRAM用于向所述神经网络加速装置的所述数据缓存模块输入特征图数据和权重数据。

与现有技术相比,本发明的优点在于:将卷积核从输入图像上采集的值转化成一行(列)运算,在不需要对数据进行矩阵形式的展开的情况下,只需从主存中读取一次可完成当前数据的卷积运算,不仅减少了内存访问,提高了数据访问的能效,而且时间特征数据复用,优化了运算速度,进一步地还采用分块技术,将每个输入通道的特征图数据进行分块处理,即至取部分特征图数据,当计算完后对缓存数据进行更新,减少片上特征图数据缓存需求从而实现计算核心无延时运算。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1是本发明的一个实施例中神经网络加速装置的结构框图;

图2是本发明的一个实施例中神经网络加速装置的结构示意图;

图3是本发明的一个实施例中神经网络加速装置加载特征行数据和卷积核行数据的示意图;

图4是本发明一个的实施例中寄存器组加载特征行数据和卷积核行数据的示意图;

图5是本发明的另一个实施例中3*3卷积核,步长为1时的卷积核在pu上的运行卷积运算的时序周期图;

图6是本发明的另一个实施例中5*5卷积核,步长为1时的卷积核在pu上的运行卷积运算的时序周期图;

图7是本发明的另一个实施例中5*5卷积核,步长为2时的卷积核在pu上的运行卷积运算的时序周期图;

图8是本发明的实施例中神经网络加速方法的流程示意图。

具体实施方式

下面结合附图对本申请实施例进行详细描述。

以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本申请,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目和方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。

还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。

本申请实施例提供一种通信设备,通信设备的硬件架构包括包括通信连接的中央处理器CPU、存储器DDR SDRAM和神经网络加速装置。其中,CPU用于控制神经网络加速装置启动卷积运算,DDR SDRAM用于向神经网络加速装置的数据缓存模块输入特征图数据和权重数据。CPU、DDRSDRAM和神经网络加速装置通信连接。CPU控制神经网络加速装置启动卷积运算,DDRSDRAM用于向神经网络加速装置的数据缓存模块输入多个卷积数据和多个卷积参数,然后神经网络加速装置根据获取的卷积数据和卷积参数完成卷积运算,得到运算结果,将运算结果写回DDR SDRAM约定的内存地址,通知CPU卷积运算完成。

如图1和图2所示,本申请实施例提供一种神经网络加速装置100包括主存储器102、主控制器104、数据缓存模块106、神经网络计算模块108和累加器110。

主存储器102用于接收并存储待处理图像的特征图数据、权重数据。主存储器102可以接收并存储待处理图像以及权重数据。

主控制器104用于解析神经网络程序编译指令,并根据神经网络的结构参数,生成配置信息和运算指令。主控制器104可以根据神经网络的结构参数生成将特征图数据和权重参数加载到对应的缓存单元中,同时神经网络计算模块108的数据控制器主机发送执行指令至PU分片中的PE矩阵队列的配置信息。

数据缓存模块106包括特征数据缓存单元和卷积核缓存单元。特征数据缓存单元用于缓存从特征图数据中提取的特征行数据。卷积核缓存单元用于缓存从权重数据中提取的卷积核数据。在PU收到指令后,数据缓存模块106根据配置和指令信息配置PU分片上互联电路通路,按照预设数据流规则将特征图数据逐行输入到多分片PU单元中的PE加速器,以便后续完成卷积运算(如特征数据和权重以怎样的数据排列方式、数据通路和分块大小等进入哪一个PU分片及加速器PE加速器)。

神经网络计算模块108包括数据控制器1081、数据提取器1082和神经网络计算单元1083,数据控制器根据配置信息和指令信息调整数据通路,控制数据提取器提取的数据流按指令信息加载到对应的神经网络计算单元,神经网络计算单元至少完成一个卷积核与特征图数据的卷积运算,并在至少一个周期完成多个卷积结果的累加,从而实现电路重构以及数据复用。

累加器110用于对卷积核运算单元得到的多个输入通道特征图上的卷积结果进行累加,输出卷积核对应的输出特征图数据。

神经网络加速装置还可以具有激活/池化单元、输出缓冲单元等,配合神经网络计算模块108完成卷积神经网络等后续处理。

上述神经网络加速装置,不需要对数据进行矩阵形式的展开,只需从主存中读取一次特征行数据和卷积核数据可完成当前数据的卷积和累加运算,不仅减少了内存访问带宽及存储空间,提高了数据访问的能效,而且实现了高效特征图数据复用,优化了运算速度,进一步地还采用分块技术,将每个输入通道的特征图数据进行分块处理,即至取部分特征图数据,当计算完后对缓存数据进行更新,减少片上特征图数据缓存需求从而实现计算核心无延时运算。

在其中一个实施例中,如图2所示,神经网络计算单元1083包括多个神经网络加速分片1084,每个神经网络加速分片包含多个卷积运算乘加阵列,每个神经网络加速分片至少完成一个输入通道的特征图数据与一个卷积核数据的卷积运算,多个神经网络加速分片完成多个输入通道的特征图数据与一个卷积核数据的卷积运算。

神经网络加速分片(PU分片)可以由多个PE加速处理单元(PE加速器)组成。多个PU分片可通过系统配置实现不同维度的数据并行计算。NN神经网络加速电路可以包含多个神经网络加速分片(PU分片)、激活/池化电路以及累加单元等。PE加速器是神经网络加速处理的最基本单元,每个单元可以至少包含一个乘法器和一个加法器及部分和结果缓存器,至少可完成一个权重参数和一个输入特征数据的卷积运算,并在至少一个周期完成多个卷积结果的累加。在本申请中,PU分片可以包含呈阵列设置的PE加速器。特征数据缓存单元包含多个特征数据缓存组,每组特征数据缓存单元缓存一个输入通道的部分特征数据且与至少一个PU耦合,即每个PU从对应特征数据缓存组中获取一个输入通道的特征图数据;同时多个PU共享一个卷积核数据缓存单元,即同一卷积核的行数据被广播到多个PU,实现多通道输入单通道输出卷积运算并行。

为了实现数据复用以及减少主存读写带宽压力,因此每个PU分片可以先计算当前单通道输入的特征行数据(卷积核在待处理图像的行方向上采集到的数据为特征行数据)与多个卷积核分别在输入特征图行方向的卷积结果;更新卷积核数据,重新开始卷积运算,直至使单一的特征行数据与全部卷积核完成卷积运算;完成单一输入通道的特征行数据与所有卷积核卷积运算后,更新输入特征图行,即卷积核下移动卷积运算,然后循环上述步骤,直至当前输入特征图与所有卷积核的卷积运算,并输出一个输入特征图的多通道输出特征图;完成上述一个单通道的输入特征图与所有卷积核卷积结果后,更新特征图输入通道,上述运算顺序可根据实际情况按照配置信息或指令信息进行灵活配置。

在其中一个实施例中,多个神经网络加速分片构成第一神经网络运算矩阵,多个第一神经网络运算矩阵并行耦合构成第二神经网络加速矩阵;第二神经网络加速矩阵中的第一神经网络运算矩阵用于完成多个输入通道特征数据与一个卷积核的卷积运算,多个第二神经网络加速矩阵完成多个输入通道特征数据与多个卷积核的并行卷积运算。一个神经网络加速分片可以计算一个特征图数据与一个卷积核卷积之间的加速运算。同一个第二神经网络加速矩阵的多个PU分片可以同时计算同一个卷积核与不同的输入特征数据的卷积结果,同时每个PU分片共享一个卷积核缓存单元,多个分片共享一个特征数据缓存单元;不同第二神经网络加速矩阵的多个PU分片可以同时计算多个不同卷积核与同一输入特征数据的卷积结果,同时每个PU分片共享一个卷积核缓存单元,多个分片共享一个特征数据缓存单元。

多个PU构成第一子神经网络运算PU矩阵,多个第一子神经网络运算PU矩阵构成第二神经网络PU矩阵;第二神经网络PU矩阵中的每个子矩阵用于完成多个输入通道特征数据与一个卷积核的卷积运算,多个子pu矩阵可完成多个输入通道特征数据与多个卷积核的并行卷积运算。

在其中一个实施例中,每组卷积运算乘加阵列通过并行输入的方式获取特征行数据;每组卷积运算乘加阵列通过串行输入的方式获取卷积核行数据。PU包含至少一组PE,每组PE负责卷积核行数据与对应特征图行数据的卷积运算;多组PE可实现多个卷积核行与多个对应特征图行数据的卷积运算,即每组PE构成一列,多列PE完成至少一个卷积核行与所对应的特征数据的卷积运算。每组PE通过并行输入的方式获取特征行数据,即每个特征行数据中的每个元数据同时广播至当前组各级PE中;同时每组PE通过串行输入的方式获取卷积核行数据,即卷积核行元数据从每组PE中的首级PE在每个时钟周期向下一级PE流动。

在其中一个实施例中,如图3所示,神经网络加速分片1084包含多个第一多路选择复用器1085和多个第二多路选择复用器1086,第一多路选择复用器与卷积运算乘加阵列一一对应地并行耦合,第二多路选择复用器与卷积运算乘加阵列一一对应地串行耦合;第一多路选择复用器通过数据选择信号获取与卷积运算乘加阵列对应的特征行数据,并行输入至对应的各级卷积运算乘加阵列中,第二多路选择复用器获取与卷积运算乘加阵列对应的卷积核行数据串行输入至各级卷积运算乘加阵列中完成卷积乘加运算。

多个第一多路选择复用器分别与对应PE组实现并行耦合,每组PE至少可在通过选择信号选择两个特征行数据之一,图3中第六组PE可选择6个不同行的数据;多个第二多路选择复用器分别与对应PE组串行耦合,每组PE至少可在通过选择信号选择两个卷积核行数据之一,图3中第六组PE可选择6个不同卷积核行数据。第一多路选择复用器通过数据选择信号(由配置信息或数据加载指令信息提供)获取对应特征行数据,并行输入至对应PE组各级PE中,同时该组PE第二多路选择复用器选择对应的卷积核行数据串行输入至各级PE中完成卷积乘加运算。

剩余空闲PE组可通过多路选择复用器获取在特征图列方向用于卷积运算的特征行数据和卷积核行数据,实现输入数据的复用。例如,对于3×3的卷积核步长为1,以图3的矩阵为例,前三列PE组完成一个卷积核在行方向的并行加速卷积运算(PE00、PE10、PE20为一组,PE01、PE11、PE21为一组,PE02、PE12、PE22为一组),第四组PE可以复用第二个特征提取器1中的特征行数据和第一个权重获取器0的卷积核行数据数据,第五组PE可以复用第三个特征提取器2中的特征行数据和第二个权重获取器1的卷积核行数据,第六组PE可以复用第四个特征提取器3中的特征行数据和第三个权重获取器2的卷积核行数据,然后将上述数据对送入对应的PE组中,完成卷积窗口在特征图列方向上的滑动卷积操作,提高了特征图数据的复用降低了主存读写带宽的占用,同时整个PE阵列处于高效运行满载状态。

在其中一个实施例中,神经网络计算模块还包括第一移位寄存器组与第二移位寄存器组,神经网络计算单元包括乘加子单元与部分和缓存子单元,第一移位寄存器组采用串行输入并行输出的方式,并通过第一多路选择复用器将特征行数据输出至乘加子单元;第二移位寄存器组采用串行输入并行输出的方式方式,并通过第二多路选择复用器根据步长信号将卷积核行数据输出至下一级卷积运算乘加阵列和乘加子单元,乘加子单元将输入的特征行数据和卷积核行数据对应进行乘法运算,并与部分和缓存子单元中的卷积行部分和数据进行累加运算当完成所述卷积核行数据与对应卷积窗口的所述特征行数据的卷积操作时,将所述卷积窗口的多个行卷积结果部分和累加,实现卷积核的一个滑窗卷积操作;每组不同级的卷积运算乘加阵列PE在一个卷积核行周期输出行运算结果给累加器,累加器通过加法树将当前卷积核所有行对应的同级卷积运算乘加阵列输出的卷积核行卷积运算结果累加,从而实现一个卷积核的一次窗口卷积运算;不同级PE并行计算当前卷积核行在特征图行方向上多个滑动卷积操作;其中,在上述卷积运算过程中特征图行按顺序依次并行输入加载至每组各级PE中,对应卷积核行数据按周期循环的方式串行加载至每组各级PE中。

如图4所示,第一移位寄存器组1087采用串行连接并行输出方式将特征图行数据并行输入至各级PE,并通过多路选择复用器输出数据至各级PE;当前卷积核元数据在被送入第一级移位寄存器时同时被送入乘加单元。

第二移位寄存器组1088亦采用串行连接并行输出方式并通过多路选择复用器将卷积核行数据输出至下一级乘加单元。

将送入乘加单元的特征行数据和卷积核行数据对应地进行乘法运算,然后与部分和缓存单元中的卷积行部分和数据进行累加运算,当完成一个卷积核行与对应卷积窗口特征行数据卷积操作后将该卷积行卷积结果部分和输出与卷积核其他行卷积结果部分和累加,实现卷积核一个滑窗卷积操作。

其中,特征行数据(X00,…,X0n)按照行顺序被连续顺序并行送入PE组,卷积核行数据(F00/F01/F02)被循环顺序以F00/F01/F02- F00/F01/F02- F00/F01/F02方式串行送入PE组进行卷积运算,且每级PE经过一个卷积核行周期(卷积核行尺寸为3,则卷积核行周期为3)输出当前卷积核行对应的部分和结果。不同级PE输出卷积核行在特征图行上按步长s在特征图行上滑动卷积运算的部分和结果;每组不同级PE在一个卷积行周期输出部分和后,通过加法树将当前卷积核所有行对应的每组PE的同级PE输出的部分和结果累加从而实现一个卷积核的卷积运算,得到如图5所示的卷积计算。

图5中,PE00是在连续三个周期输出卷积核第一行与对应窗口特征行数据的卷积部分和结果,PE10在连续三个周期输出卷积核第一行与PE00所计算窗口相邻窗口的部分卷积部分和结果,PE20在连续三个周期输出卷积核第一行与PE10所计算窗口相邻窗口的部分卷积部分和结果,多组PE可实现卷积核不同行分别与对应特征数据行的卷积加速运算,相当于卷积核在特征图行方向滑动遍历卷积运算。第一移位寄存器组根据步长参数s选择信号,选择对应移位寄存器输出作为下一级PE的输入,实现卷积窗口按步长s在行方向遍历卷积运算,其他PE组通过复用输入的部分特征图行数据和卷积核行数据,实现按步长在特征图列方向的窗口滑动卷积卷积加速运算。

在其中一个实施例中,数据控制器用于根据配置信息和指令信息,获取加载到神经网络计算单元内的特征数据和对应的权重数据的存储地址,同时指令多路复用器通断调整数据通路,按指令信息将特征数据和对应的权重数据输入对应的神经网络计算单元;数据提取器,包括特征提取器和卷积核提取器,特征提取器用于根据指令信息从特征数据缓存单元提取的特征行数据,卷积核提取器用于根据指令信息从卷积核缓存单元提取的卷积核数据,以便传输给神经网络计算模块。

在其中一个实施例中,特征数据缓存单元包含多个特征数据缓存组,每个特征数据缓存单元缓存一个输入通道的部分特征数据且与至少一个神经网络加速分片耦合,多个神经网络加速分片共享一个卷积核数据缓存单元,每个神经网络加速分片从对应特征数据缓存组中获取一个输入通道的特征图数据,同一卷积核数据分配到多个神经网络加速分片。数据控制器除了连通权重获取器0与PE单元的0列外,还将数据广播至第4列PE单元,即、第一行权重参数除了与第1特征行数据进行行卷积运算外,还与第2特征行数据进行行卷积(其中第2特征行数据除与第2列PE连接外,亦通过多路输入复用器,连接到第4列PE单元),即相当于卷积核每次在相邻行进行卷积运算,神经网络计算模块108的数据控制器采用多个神经网络加速分片计算单通道输入的特征行数据与卷积核在待处理图像的行方向上的卷积结果。

在其中一个实施例中,数据控制器根据配置信息和指令信息获取加载到神经网络计算单元内的特征数据和对应的权重数据的存储地址,同时指令多路复用器从第一移位寄存器组中采用串行输入并行输出的方式将特征行数据输出至神经网络计算单元,指令多路复用器从第二移位寄存器组中采用串行输入并根据步长择一输出的方式将卷积核行数据输出至神经网络计算单元的当前卷积运算乘加阵列和下一级卷积运算乘加阵列。

如图6所示,当卷积核行尺寸(例如为5)大于每组PE的PE个数时(例如为3个PE),在每个卷积核行运算周期,各级PE通过特征行数据提取器对缓存特征行数据的地址访问会发生冲突(由于各级PE是同步获取同一特征元数据输入,在下一个卷积核行循环周期时,部分PE所需要的特征数据地址与当前特征提取器访问缓存地址冲突),但部分PE所访问的数据在前面的运算周期已经被访问过,而且这些数据被缓存到第一移位寄存器组中,因此数据控制器根据配置信息和指令信息,获取加载到神经网络计算单元内的特征数据和对应的权重数据的存储地址,同时指令多路复用器通断调整数据通路,按指令信息将特征数据和对应的权重数据输入对应的神经网络计算单元,并通过选择对应的第一移位寄存器组中寄存器输出数据防止部分PE访问数据地址与当前特征提取器访问地址冲突。因此PE单元可通过数据控制器控制多路复用器实现冲突数据获取,从而适用不同尺寸大小卷积核的卷积运算,避免各级PE在访问数据在不对齐的情况下地址访问冲突而造成PE内核等待。

如图4所示,特征提取器可以根据数据地址按行顺序的将数据加载到PE阵列;同时PE阵列示列中有6个特征提取器,可为FIFO单元或一种寻址方式(按顺序从缓存单元寻址并向PE加载数据),若为FIFO其中两个为空,此时可以对当前为空的特征提取器进行信号截断处理,从而降低功耗,权重获取器同理;而对于5×5或7×7的卷积核,则可让所有特征提取器和权重获取器处于满载工作状态;对于特征提取器数量可灵活进行配置如减少或增加,即相应的减少或增加PE阵列。

采用多路输入复用器根据数据控制器配置信息完成输入通路的选择,实现卷积核与对应的特征行数据完成卷积运算;如对于3×3卷积核,第4、5、6PE列分别复用特征数据提取器第2、3、4输出的数据。若对于5×5的卷积核,则第4、5PE列与对应的第4、5特征数据提取器连通,第6PE列与第2特征数据提取器连通,由于卷积核尺寸未与PE列数对齐,因此在完成一行卷积运算后,需要对上述输入复用器输入通路重新配置,如在第一个行周期内,一次性完成了5+1行(5×5的卷积核在特征图上一个行周期卷积和卷积核第一行在特征图上,下移一行且只与一行特征数据进行了卷积运算)的卷积运算,因此在第二个行周期第1至第4特征提取器与卷积核的第2至第5行权重在第1至4PE列上进行卷积运算,同时第5和第6列PE行复用第1和第2特征提取器的数据;其中图5中只是示列了部分连接关系,部分连接未示出。

如图5所示,权重参数在列向串行顺序流入各PE单元(图5所示,列向排列三个PE单元,以适应3*3的卷积核),且同列各行PE单元之间由一组延迟寄存器组通过多路输入复用器链接,该延迟电路结构用于调整卷积窗口滑动步长;每列PE单元通过多路输入复用器接收特定行的特征数据,并行输出至同列各行PE单元,由于权重参数是串行流入各PE的,因此在初始状态时,特征数据到达第2、3行PE需要分别延时1和2两个周期,然后与对应的权重参数进行卷积运算;同时在PE单元中亦设置有一组特征数据延时电路,一是实现在初始状态是实现特征数据与权重参数对齐,而是用于在卷积核超过3*3时,通过多路输入选择电路复用相应的特征数据,防止数据读取时地址冲突。

特征数据提取器从PU分片上特征缓存电路内,获取至少1行连续特征行数据(由于本实施例采用的是3×3的卷积核,因此为了充分利用PE阵列中的乘加电路资源,特征提取电路一次性向特征缓存电路请求连续4行特征行数据行加载);同时权重获取器一次性获取至少1行权重参数(直接获取三行权重参数,并加载到权重获取器),对于输入4行特征行数据,3行卷积核行数据,每一个卷积核行循环周期至少输出两个特征图列方向卷积结果。

在本实施例中,特征提取器和权重获取器构成数据提取器,数据提取器可以是一种FOFI结构亦可以是一种寻址电路,每个数据提取器分别按行提取权重第一行数据(F00,F01,F02)和第一特征行数据(X00,X01,X02,X03,X04,X05,X06…),每个行周期后重新提取其他行特征数据。

初始状态时,第一周期F00送入至PE00中的寄存器1和乘法器,并且特征数据X00被送入PE00、PE10、PE20;在PE00中X00与F00相乘且结果送入行累加BUFFER,此时PE01中F00在下个周期到达,X00被存入各PE特征寄存器1;在第二个周期X01被送入PE00、PE01、PE20,此时X00移位至特征寄存器2,X01进入特征寄存器1,同时F01被送入PE00,PE00中的F00被传送送入PE01中,x01与f01在PE00中进行卷积运算,运算结果送入到加法器中与上一周期缓存在累加BUFFER中X00*F00的结果进行累加。同时PE01中X01与F00相乘,结果送入累加buffer中;第三周期f02进入至PE00,PE00中的f01进入PE01,PE01中的F00进入PE02,同时X02同步传送至各PE,并与对应的权重参数进行乘加运算;经过上述三个周期,可实现一行权重与对应特征数据的卷积,经过四个周期后,相当于卷积核行在特征数据行滑动一次,在经过八个周期后可获得卷积核行在对应特征数据行上滑动6次卷积结果;由于示列3*3卷积核并行进行3行的输入,因此在八个循环周期内可完成6个卷积滑窗的结果输出;经过上述初始化状态后,整个乘加单元将处于满载状态。

在另一个实施例中,如图6所示,卷积核为5*5,步长为1,3级PE并行加速运算特征图行方向三个卷积窗口卷积核行的卷积运算,当PE00完成一个卷积核行卷积后,开始第四个卷积窗口卷积核行的卷积运算(第二和第三窗口卷积核行卷积运算由同组PE10和PE20进行加速卷积运算),此时PE00特征数据的访存地址需从X03开始,但此时PE01和PE02需要访问X05的数据,因此会造成特征数据提取器对X03和X05数据访问寻址冲突。为避免冲突可以使用特征数据寄存器(在当前4个时钟周期已缓存了X04、X03、X02、X01的特征数据)选择电路来获取X03数据,即从第2寄存器获得X03;同时当3个PE寄存器选择信号一致时,重新更新特征数据提取器地址指针,如在第8个周期(各级PE都需要访问X05数据,且在后续两个周期访问数据地址亦相同)将地址指针更新到X05,在下一个卷积核行周期(如第11个时钟周期)后,重新配置特征数据选择电路;通过上述电路配置可灵活实现5×5卷积核的满载计算。

在另一个实施例中,如图7所示,卷积核为5*5,步长为2的卷积运算,在经过5个周期后每个PE都已加载数据,但对于PE00来说,此时已完成一个卷积窗口卷积核行的运算,下一次卷积窗口的行数据地址为X06,但此时特征提取器地址指针被PE10和PE20占用并指向X05数据(需要从特征数据缓存电路中获取X05数据),因此对于PE00需要空闲一个周期然后待特征提取器地址指针指向X06时进行第四个卷积窗口卷积核行的卷积运算即X06*F00,同理当其他级PE加载的特征数据与另外的当前PE特征提取器访问地址冲突时,置访存地址冲突的PE单元为在当前操作周期为空闲状态,并在下个周期按照特征提取器访存地址获取对应特征数据进行乘积运算。从上可以看出在特定周期某些PE单元没有被满载在部分访存地址冲突周期处于空闲状态,但是对于5X5卷积核,步长为2的卷积操作来说,PE单元的利用率为:3*6-3/3*6*100%=83%,即、PE单元个数*迭代周期-每个迭代周期空闲数/(PE单元个数*迭代周期,其中迭代周期为:初始化后从cycele6第一次PE空闲至cycele11,即PE00每个空闲周期为6;每个迭代周期空闲数为:在迭代周期内该组PE出现空闲的总次数;同时对于步长超过1的卷积操作,卷积核尺寸越大,整个PE单元利用率越高。

如图8所示,本实施例还提供了一种神经网络加速方法,包括以下步骤:

步骤602,采用主存储器接收并存储待处理图像的特征图数据、权重数据;

步骤604,采用主控制器解析神经网络程序编译指令,并根据神经网络的结构参数,生成配置信息和运算指令;

步骤606,采用数据缓存模块的特征数据缓存单元缓存从特征图数据中提取的特征行数据的特征数据缓存单元,并采用数据缓存模块的卷积核缓存单元缓存从权重数据中提取的卷积核数据;

步骤608,采用神经网络计算模块的数据控制器根据配置信息和指令信息通断调整数据通路,控制神经网络计算模块的数据提取器提取的数据流按指令信息流入对应的神经网络计算单元,神经网络计算单元至少完成一个卷积核与特征图数据的卷积运算,并在至少一个周期完成多个卷积结果的累加,从而实现电路重构以及数据复用;

步骤610,采用累加器对卷积核运算单元得到的多个输入通道特征图上的卷积结果进行累加,输出卷积核对应的输出特征图数据。

以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

相关技术
  • 神经网络加速装置、方法和通信设备
  • 神经网络加速器的控制方法、装置及神经网络加速器
技术分类

06120113791646