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

技术领域

本申请涉及卷积神经网络硬件设计技术领域,特别涉及一种神经网络计算终端及神经网络计算方法。

背景技术

当前,神经网络研究已成为研究热点,卷积神经网络网络模型被运用到各个领域,例如图像识别,视频编码,动作识别,以及语音识别等。卷积神经网络所体现出来的优越效果也越来越明显,所能吞吐的参数量或者权重,也越来越多,高达百万级甚至以上,这样,对计算复杂度的要求越来越高,对硬件的计算能力的要求也需要很高,现如今一些高性能的GPU(即Graphics Processing Unit,图形处理器)已经能够满足这些性能的要求,但是功耗却相当的大,面积的优化也不能做到更好,就难以应用于嵌入式系统。

发明内容

有鉴于此,本申请的目的在于提供一种神经网络计算终端及神经网络计算方法,能够降低计算终端的硬件面积消耗。其具体方案如下:

第一方面,本申请公开了一种神经网络计算终端,包括N个输入通道和N个计算阵列,其中,每个所述输入通道对应一个所述计算阵列,所述计算阵列包括多个数据处理单元,每个所述数据处理单元包括乘法模块和加法模块;

所述乘法模块,用于对所述输入通道输入的数据进行乘法运算,并将所述乘法运算的乘法运算结果输出至所述加法模块;

所述加法模块,用于对所述乘法运算结果进行加法运算得到加法运算结果,并将多个所述加法运算结果输入至所述加法模块进行加法运算或将所述加法运算结果作为计算终端的目标数据。

可选的,所述计算终端还包括选择器模块,所述选择器模块包括多个选择端,所述多个选择端的连接端包括所述乘法模块的输出端,所述输入通道的输入端,所述加法模块的输出端。

可选的,所述输入通道包括第一输入端和第二输入端,所述乘法模块,用于对所述第一输入端的第一数据和所述第二输入端的第二数据进行乘法运算,得到乘法运算结果。

可选的,任一所述计算阵列中各所述加法模块连接成加法层级结构,所述加法层级结构包括第一层,中间层和输出层;

所述第一层的加法模块连接所述乘法模块的输出端,所述中间层的加法模块的输入端连接所述第一层加法模块的输出端,所述输出层的加法模块的输入端连接所述中间层的加法模块的输出端;

所述第一层的加法模块,用于接收所述乘法运算结果,对所述乘法运算结果进行加法运算得到第一层加法运算结果,并将多个所述第一层加法运算结果输出至所述中间层的加法模块;

所述中间层的加法模块,用于接收所述第一层加法运算结果,对所述第一层加法运算结果进行加法运算,得到中间层加法运算结果;

所述输出层的加法模块,用于接收所述中间层加法运算结果,对所述中间层加法运算结果进行累加运算,得到最终运算结果作为计算终端的目标数据进行输出。

可选的,所述中间层包括多级加法模块,所述多级加法模块中任一级加法模块中的加法模块均用于接收本级加法模块的上一级加法模块中两个加法模块输出的加法运算结果,并对两个加法运算结果进行加法运算,得到相应的加法运算结果,所述多级加法模块中最后一级加法模块输出的加法运算结果为所述中间层加法运算结果。

可选的,所述计算阵列还包括寄存器配置单元,所述寄存器配置单元用于根据寄存器配置单元的寄存器值确定不同的运算类型。

可选的,所述数据处理单元,还包括与所述输入通道连接的减法器;

所述减法器用于对所述输入通道的输入数据进行针对零点漂移的减运算处理。

可选的,所述数据处理单元,还包括:

与所述乘法模块输出端连接的第一寄存器,用于存储所述乘法模块输出的乘法运算结果;

与所述加法模块输出端连接的第二寄存器,用于存储所述加法模块输出的加法运算结果。

第二方面,本申请公开了一种神经网络计算方法,所述方法应用于神经网络计算终端,所述神经网络计算终端包括N个输入通道和N个计算阵列,其中,每个所述输入通道对应一个所述计算阵列,所述计算阵列包括多个数据处理单元,每个所述数据处理单元包括加法模块,所述计算方法包括:

对所述输入通道输入的数据进行乘法运算,并将所述乘法运算的乘法运算结果输出至所述加法模块;

对所述乘法运算结果进行加法运算得到加法运算结果,并将多个所述加法运算结果输入至所述加法模块或将所述加法运算结果作为计算终端的目标数据。

可选的,任一所述计算阵列中各所述加法模块连接成加法层级结构,所述加法层级结构包括第一层,中间层和输出层;

所述第一层的加法模块接收所述乘法运算结果,对所述乘法运算结果进行加法运算得到第一层加法运算结果,并将多个所述第一层加法运算结果输出至所述中间层的加法模块;

所述中间层的加法模块接收所述第一层加法运算结果,对所述第一层加法运算结果进行加法运算,得到中间层加法运算结果;

所述输出层的加法模块接收所述中间层加法运算结果,对所述中间层加法运算结果进行累加运算,得到最终运算结果作为计算终端的目标数据进行输出。

可见,本申请公开的一种神经网络计算终端,包括N个输入通道和N个计算阵列,其中,每个输入通道对应一个计算阵列,计算阵列包括多个数据处理单元,每个数据处理单元包括乘法模块和加法模块,所述乘法模块,用于对输入通道输入的数据进行乘法运算,并将乘法运算的乘法运算结果输出至加法模块,加法模块,用于对乘法运算结果进行加法运算得到加法运算结果,并将多个加法运算结果输入至加法模块进行加法运算或将加法运算结果作为计算终端的目标数据。也即,本申请中每个数据处理单元中的加法模块能够对乘法模块得到的乘法运算结果进行加法运算得到计算终端的目标数据,也能够对输入的加法运算模块运算结果进行加法运算,以得到计算终端的目标数据,实现了加法模块的复用,从而降低了计算终端的硬件面积消耗。

附图说明

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

图1为本申请公开的一种神经网络计算终端示意图;

图2为本申请公开的一种数据处理单元示意图;

图3为本申请公开的一种具体的神经网络计算终端中的计算阵列示意图;

图4为本申请公开的一种具体的数据处理单元示意图;

图5为本申请公开的一种具体的全连接运算示意图;

图6为本申请公开的一种神经网络计算方法流程图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

参见图1所示,本申请实施例公开了一种神经网络计算终端,包括N个输入通道和N个计算阵列,其中,每个所述输入通道对应一个所述计算阵列,所述计算阵列包括多个数据处理单元,每个所述数据处理单元包括乘法模块001和加法模块002;

其中,计算阵列可以为MAC(即Multiply Accumulate,乘累加运算)阵列。

所述乘法模块001,用于对所述输入通道输入的数据进行乘法运算,并将所述乘法运算的乘法运算结果输出至所述加法模块。

具体地,输入通道可以包括一个或多个输入端,在一些实施例中,若输入通道只有一个输入端,则将两个输入通道的输入端数据输入到一个乘法模块进行乘法计算。

在本实施例中,输入通道为双输入端的数据通道。具体地,所述输入通道包括第一输入端和第二输入端,所述乘法模块,用于对所述第一输入端的第一数据和所述第二输入端的第二数据进行乘法运算,得到乘法运算结果。

需要指出的是,本申请实施例可以复用乘法模块进行点对点乘法运算、普通卷积运算中的乘法运算以及全连接运算中的乘法运算。并且,在进行点对点运算以及全连接运算时第一数据和第二数据可以为不同的两个特征图片,在进行普通卷积运算时,第一数据可以为特征图片,第二数据可以为卷积核。可以理解的是,对乘法模块的复用,进一步降低了计算终端的硬件面积消耗。

在另一些实施例中,输入通道还可以为具有两个以上输入端的多输入端通道,在此不做具体限定。

所述加法模块002,用于对所述乘法运算结果进行加法运算得到加法运算结果,并将多个所述加法运算结果输入至所述加法模块进行加法运算或将所述加法运算结果作为计算终端的目标数据。

进一步的,所述计算终端还包括选择器模块,所述选择器模块包括多个选择端,所述多个选择端的连接端包括所述乘法模块的输出端,所述输入通道的输入端,所述加法模块的输出端。

在具体的实施方式中,所述选择器模块包括第一选择器和第二选择器,其中,

所述第一选择器包括三个选择端,分别为第一选择端,第二选择端,第三选择端;所述第一选择端连接当前数据处理单元的乘法模块的输出端,输入所述当前数据处理单元的乘法模块的乘法运算结果;所述第二选择端连接所述第一输入端,输入所述第一输入端输入的第一数据;所述第三选择端连接其他数据处理单元的输出端,输入所述其他数据处理单元的乘法模块的乘法运算结果或所述其他数据处理单元的加法模块的加法运算结果;

第二选择器包括三个选择端,分别为第四选择端,第五选择端,第六选择端;所述第四选择端连接所述当前数据处理单元的加法模块的输出端,输入所述当前数据处理单元的加法模块的加法运算结果;第五选择端连接所述第二输入端,输入所述第二输入端输入的第二数据;第六选择端连接其他数据处理单元的输出端,输入所述其他数据处理单元的乘法模块的乘法运算结果或所述其他数据处理单元的加法模块的加法运算结果。

并且,所述数据处理单元,还包括:与所述乘法模块输出端连接的第一寄存器,用于存储所述乘法模块输出的乘法运算结果;与所述加法模块输出端连接的第二寄存器,用于存储所述加法模块输出的加法运算结果。

在具体的实施方式中,第一选择器的第一选择端与所述第一寄存器连接,第二选择器的第四选择端与第二寄存器连接。

进一步的,所述计算阵列还包括寄存器配置单元,所述寄存器配置单元用于根据寄存器配置单元的寄存器值确定不同的运算类型。其中,

所述运算类型包括普通卷积运算,所述第一选择器的选择结果为所述乘法模块的乘法运算结果,所述第二选择器的选择结果为所述加法模块的加法运算结果;所述加法模块,用于根据所述乘法运算结果和所述加法运算结果进行加法运算,以实现普通卷积运算处理。

所述运算类型包括点运算,所述第一选择器的选择结果为所述第一输入端的第一数据,所述第二选择器的选择结果为所述第二输入端的第二数据;所述加法模块,用于根据所述第一数据和所述第二数据进行加法运算,以实现点加运算处理。

进一步的,任一所述计算阵列中各所述加法模块连接成加法层级结构,所述加法层级结构包括第一层,中间层和输出层;所述第一层的加法模块连接所述乘法模块的输出端,所述中间层的加法模块的输入端连接所述第一层加法模块的输出端,所述输出层的加法模块的输入端连接所述中间层的加法模块的输出端;所述第一层的加法模块,用于接收所述乘法运算结果,对所述乘法运算结果进行加法运算得到第一层加法运算结果,并将多个所述第一层加法运算结果输出至所述中间层的加法模块;所述中间层的加法模块,用于接收所述第一层加法运算结果,对所述第一层加法运算结果进行加法运算,得到中间层加法运算结果;所述输出层的加法模块,用于接收所述中间层加法运算结果,对所述中间层加法运算结果进行累加运算,得到最终运算结果作为计算终端的目标数据进行输出。

其中,所述中间层包括多级加法模块,所述多级加法模块中任一级加法模块中的加法模块均用于接收本级加法模块的上一级加法模块中两个加法模块输出的加法运算结果,并对两个加法运算结果进行加法运算,得到相应的加法运算结果,所述多级加法模块中最后一级加法模块输出的加法运算结果为所述中间层加法运算结果。

并且,所述多级加法模块中任一级加法模块中的任一加法模块接收的两个加法运算结果与同级加法模块中的其他加法模块接收的两个加法运算结果不存在相同加法模块输出的加法运算结果。

相应的,所述运算类型包括全连接运算,第一层的加法模块连接的所述第一选择器的选择结果为当前数据处理单元的乘法模块的乘法运算结果,所述第二选择器的选择结果为其他数据处理单元的乘法模块的乘法运算结果;中间层的加法模块连接的所述第一选择器的选择结果为其他数据处理单元的加法模块的加法运算结果,所述第二选择器的选择结果为其他数据处理单元的加法模块的加法运算结果;

并且,第一层的所述加法模块,用于根据所述当前数据处理单元和所述其他数据处理单元的乘法运算结果进行加法运算,得到第一加法运算结果;将多个所述第一加法运算结果分别两两输入中间层的加法模块,利用中间层的多级加法模块得到中间层加法运算结果,然后将中间层加法运算结果输入至输出层的加法模块,输出层的加法模块对所述中间层加法运算结果进行加法累加运算,得到最终运算结果作为计算终端的目标数据进行输出。其中,加法累加运算的次数根据输入数据尺寸和阵列中的数据处理单元数量确定。

也即,所述运算类型包括全连接运算,第一层的加法模块的所述第一选择器的选择结果为当前数据处理单元的乘法模块的乘法运算结果,所述第二选择器的选择结果为其他数据处理单元的乘法模块的乘法运算结果;第一层的所述加法模块,用于根据所述当前数据处理单元和所述其他数据处理单元的乘法运算结果进行加法运算,得到第一加法运算结果;将多个所述第一加法运算结果分别两两输入其他空闲状态的多个数据处理单元的第一选择器或第二选择器的选择端,以使得所述其他空闲状态的多个数据处理单元的加法模块对所述第一加法运算结果进行加法运算,得到第二加法运算结果;重复利用所述其他空闲状态的多个数据处理单元的加法模块对两两为一组的第二加法运算结果进行加法运算,直至得到的一个最终加法运算结果。所述N个数据通道对应的N个计算阵列并行处理,每个所述计算阵列对多拍的最终加法运算结果进行自累加运算处理,得到全连接运算结果。

也即,本申请实施例可以复用加法模块进行点对点加法运算、普通卷积运算中的加法运算以及全连接运算中的加法运算。在进行点对点加法运算时,对输入通道输入的第一数据和第二数据进行点对点的加法运算,得到加法运算结果,作为计算终端的目标数据。在进行普通卷积运算时,加法模块用于对乘法运算结果进行自累加运算,得到加法运算结果,将加法运算结果作为计算终端的目标数据。在进行全连接运算时,对同一数据处理单元的乘法模块输出的乘法运算结果以及其他数据处理单元的乘法模块输出的乘法模块进行加法运算,或者对两个其他数据处理单元的加法模块的加法运算结果进行加法运算。

另外,计算终端的计算类型还包括点乘运算,取最大值,取最小值运行算,左移右移运算等,均可以根据寄存器的配置值确定的运算类型。

参见图2所示,本申请实施例公开了一种数据处理单元结构示意图,包括:

乘法模块101,用于对输入通道中第一输入端输入的第一数据以及第二输入端输入的第二数据进行乘法运算处理,得到乘法运算结果;其中,所述乘法运算处理可以包括卷积运算对应的乘法运算处理、全连接运算对应的乘法运算处理以及点对点的乘法运算处理;

加法模块102,用于对所述乘法运算结果进行加法运算得到加法运算结果,并将多个所述加法运算结果输入至所述加法模块进行加法运算或将所述加法运算结果作为计算终端的目标数据。在具体的实施方式中,可以对卷积运算对应的乘法运算结果进行累加、在全连接运算时对多个所述数据处理单元的所述乘法运算结果进行相应的加法运算处理、以及点对点的加法运算处理。

进一步的,所述数据处理单元,还包括与所述输入通道连接的减法器;所述减法器用于对所述输入通道的输入数据进行针对零点漂移的减运算处理。需要指出的是,减去零点漂移可以提升计算精度,缩小误差。

在具体的实施例中,所述数据处理单元,还包括:

与第一输入端连接的第一减法器103以及与第二输入端连接的第二减法器104;

所述第一减法器103和所述第二减法器104分别用于对所述第一数据和所述第二数据进行针对零点漂移的减运算处理。

需要指出的是,分别用两个减法器,目的是减去零点偏移值,使精度提升,缩小误差。

并且,所述数据处理单元,还包括与所述减法器连接的量化处理单元,用于在进行点对点加运算时,对减法器的输出结果进行量化处理,其他类型运算无需进行量化处理。其中,量化处理单元包括左移处理单元、乘法器以及右移处理单元,这样,能够使点加操作的时候,让两个特征图的数据量化到统一的量化范围。

在具体的实施例中,所述数据处理单元,还包括量化处理单元,量化处理单元具体包括:

与所述第一减法器103连接的第一左移处理单元105、与所述第一左移处理单元连接的第一乘法器106以及第一右移处理单元107;

与所述第二减法器104连接的第二左移处理单元108、与所述第二左移处理单元连接的第二乘法器109以及第二右移处理单元110;

其中,所述第一左移处理单元105与所述第二左移处理单元108分别用于对所述第一减法器103的处理结果以及所述第二减法器104的处理结果进行左移操作,所述第一乘法器106和第二乘法器109分别用于对所述第一左移处理单元105、所述第二左移处理单元108的左移操作结果与预设量化系数进行乘法运算,所述第一右移处理单元107以及所述第二右移处理单元110分别用于对所述第一乘法器106以及所述第二乘法器109的运算结果进行右移操作。

需要指出的是,减去零点偏移之后,进行左移—>乘—>右移,此操作仅仅只应用于特定的点对点的加法运算处理,目的是为了使点加操作的时候,让两个特征图的数据量化到统一的量化范围,如果不是特定的点对点的加法运算处理,则不进行左移—>乘—>右移操作。具体的可以通过旁路,控制是否执行左移—>乘—>右移操作。

相应的,所述加法模块102,可以具体用于对所述第一右移处理单元以及所述第二右移处理单元的右移操作结果进行点对点的加法运算处理。

在具体的实施方式中,所述乘法模块101,具体用于对所述第一减法器103和所述第二减法器104的处理结果进行对应的乘法运算处理,包括卷积运算对应的乘法运算处理、全连接运算对应的乘法运算处理以及点对点的乘法运算处理。

进一步的,所述数据处理单元,还包括:与所述乘法模块连接的第一寄存器111,用于存储所述乘法运算结果。

并且,所述数据处理单元还包括与所述加法模块连接的第一选择器112和第二选择器113;其中,所述第一选择器112和所述第二选择器113用于将选择后的数据输入所述加法模块,以进行相应类型的加法运算处理。

也即,本申请实施例中,第一选择器以及第二选择器用于从自身的输入数据中选择出卷积运算对应的数据或全连接运算对应的数据或点对点运算对应的数据,然后输入所述加法模块,完成相应类型的加法运算。其中,全连接运算对应的数据为其他数据处理单元的乘法模块输出的乘法运算结果或者其他数据处理单元的加法模块输出的加法运算结果。

需要指出的是,本申请实施例加法模块可以复用,因此,输入加法模块中的数据包括卷积运算对应的数据、全连接运算对应的数据、点对点运算对应的数据,通过选择器进行选择,将选择后的数据输入加法模块,以完成相应类型的加法运算,从而实现对加法模块的复用,能够实现电路资源的节约。

并且,所述数据处理单元,还包括:

与所述加法模块连接的第二寄存器114,用于存储所述加法模块输出的加法运算结果,相应的,所述加法模块具体用于利用所述第二寄存器中的加法运算结果进行卷积运算的累加操作。

需要指出的是,第二寄存器114存储本次加法运算结果,当下一次加法运算时,利用第二寄存器114中存储的加法运算结果与当前待加数据进行加法运算处理,累加次数和卷积核大小相关。

进一步的,所述数据处理单元,还包括:

饱和截位处理单元,用于将所述乘法模块的输出结果进行饱和截位处理,以得到指定位数的数据。

另外,在具体的实施方式中,本实施例可以包括8个输入通道,每个输入通道均包括包括第一输入端和第二输入端,每个所述计算阵列包括64个数据处理单元。例如,参见图3所示,图3为本申请实施例公开的一种具体的神经网络计算终端中的计算阵列示意图,包括8个计算阵列即MAC_64阵列。

相应的,所述加法模块,具体用于在全连接运算时,将第32个数据处理单元至第63个数据处理单元中的乘法模块101的乘法运算结果分别传入第0个数据处理单元至第31个数据处理单元中的加法模块102,分别与第0个数据处理单元至第31个数据处理单元中的乘法模块101的乘法运算结果进行加法运算处理,得到相应的加法运算结果,然后将第0个数据处理单元至第31个数据处理单元的加法运算结果依次两两的传入第32个数据处理单元至第47个数据处理单元中的加法模块102进行加法运算处理,然后将第32个数据处理单元至第47数据处理单元的加法运算结果依次两两的传输至第48个数据处理单元至第55个数据处理单元中的加法模块102进行加法运算处理,以此类推,直到第62个数据处理单元的加法模块102确定出64个点的和,将该和传入第个63数据处理单元的加法模块,进行累加。

需要指出的是,全局平均池化对加法模块的复用过程可以参考前述全连接运算的复用过程。

也即,本申请实施例提供的神经网络计算终端,能够计算普通卷积,全连接运算,点对点运算(两个特征图对应点与点的计算,如点加,点乘)等操作,可定制化实现不同算力,实现计算终端各运算单元的复用,减小面积消耗。并且,包含多个输入通道,每个输入通道会对应一个计算阵列,每个计算阵列包含多个数据处理单元,能够实现较大的吞吐量,支持多个数据处理单元同时运算,这样,在功耗限制范围之内,既能保证运算精度,又满足多种计算模式,同时提高计算终端的利用率。

例如,参见图4所示,本申请实施例公开了一种具体的数据处理单元示意图。

1)A对应的是特征图片A的数据输入,B在进行卷积运算的时候是卷积核的数据输入,如果是全连接或者点对点操作时,则是对应特征图片B的数据输入;分别用两个减法器,目的是减去量化之后的零点偏移值,使精度提升,缩小误差。其中,In_a_byte_mode、In_b_byte_mode、In_a_zp、In_b_zp均为配置参数。In_a_byte_mode、In_b_byte_mode分别表示数据A和数据B的数据格式、In_a_zp、In_b_zp分别为数据A和数据B对应的待减零点漂移值。

2)减去零点偏移之后,会左移—>乘—>右移,此操作仅仅只应用于特定的点对点加运算,目的使为了使点加操作的时候,让两个特征图片的数据量化到统一的量化范围;如果不是点对点加法运算操作,则选择旁路掉。Elt_a_lshft、Elt_b_lshft分别为数据A和数据B对应的左移位数,Elt_a_scale、Elt_b_scale,分别为数据A和数据B对应的量化系数,Elt_a_rshft、Elt_b_rshft分别为数据A和数据B对应的右移位数,~In_a_scale_en、~In_b_scale_en分别表示两路数据的旁路。int32、int64分别表示处理到相应步骤的数据类型。并且,图中<<标记表示左移处理单元,X标记表示乘法器,>>标记表示右移处理单元,REG标记表示寄存器,用于存储数据,由于数据右移之后可以不用寄存器,因为当前时钟拍就可以直接用,并且满足综合时序收敛。并且,在实际电路中,右移就相当于对数据进行一个截取,左移相当于进行一个bit位拼接,可以通过综合电路用线路实现。

3)右移操作之后,连接乘法模块,满足卷积神经网络乘法运算,将相乘的结果做一个饱和截位处理,结果处理为int32型并寄存器输出,在点对点的乘法算术操作的时候,也会复用此乘法模块。

4)加法模块,可以实现卷积操作时候的累加,寄存器输出,将输出结果用作自累加的输入,累加次数与卷积核的大小有关;此加法模块在不同的操作的时候会被多次复用,包括加法模块进行对应点与点之间的加法运算处理,如图4中,A’,B’均为右移处理后的数据,进行点对点运算。在进行全连接或者全局平均池化操作时操作时候,会将第32个pe_core—第63个pe_core的乘法模块之后的寄存器输出分别传入第0个pe_core—第31个pe_core,两个pe_core的乘法结果相加;将第0个pe_core—第31个pe_core加法模块的输出两两传入第32个pe-core—第47个pe_core,然后再将结果再两两传入其他加法模块未被占用的pe_core,以此类推,最终将64个点的和在第62个pe_core中得出结果;第62个pe_core得出64个点的和,此时将和传入第63个pe_core,进行自累加,累加的次数与输入数据尺寸有关。

下面,以输入的第一输入端的feature尺寸为8*8*8(即宽*高*特征图输入通道数),输入第二输入端的weight尺寸同为8*8*8,并行输入,也即,以特征图输入通道数为8为例,详细描述全连接的计算流程。该例仅需要一个计算阵列,在其他实施例中,可以根据需要,采用多个计算阵列进行处理。

1、将一个8*8的数据块,按照点对点,分别传入64个pe_core,一个pe_core对应一个像素点,并行传入feature和weight的输入数据。

2、将feature和weight的输入数据分别减去对应的零点偏移值,提高量化精度,为了使精度不明显低于量化精度。

3、将减去零点偏移的数据,分别传入乘法模块的两个输入端,进行点乘运算,将运算结果寄存器输出;64个pe_core并行计算,这样一个8*8的块对应点与点之间的相乘结果同时计算完成。

4、参见图5所示,图5为本申请实施例公开的一种具体的全连接运算示意图。其中,PE即为pe_core,如图4的第一排所示,将PE32—PE63相乘的结果,通过pe_ext_out接口输出,并且将输出分别接入PE0—PE31的Ext_b,将PE0—PE31的乘法的寄存器输出与PE32—PE63的pe_ext_out接入PE0—PE31的加法模块,实现Ext_a与mul_reg(乘法模块之后的寄存器)之间相加,将相加结果之间通过pe_out寄存器输出,D表示输出结果。

5、上一步已经将64个点两两相加一次,变成32个值分别从PE0—PE31的pe_out输出。将输出的结果,分别两两传入加法模块未被占用的PE的Ext_a和Ext_b,实现Ext_a与Ext_b的相加,如图4的第二排到第六排所示,将32个值相加两两相加得到16个值,再两两相加变成8个值,最终,在PE62中将8*8个点的值相加成为一个点。

6、将PE62的值传入PE63,这一个cycle进来的仅仅是第一个特征图通道的64个点相加的值,有8个特征图输入通道,即8拍才能将8个8*8数据块的和传入,这里的加法模块就要实现自累加,即这一个cycle的数与下一个cycle的输入相加,如此循环,直到所有的数相加完毕,此处是8个特征图通道,那么会自累加8次,才将全连接计算完成,得到全连接计算结果pe_out=fc_out。其中,一个计算阵列中的自累加次数为feature的宽*高*特征图输入通道数除以一个计算阵列中的数据处理单元数所得到的结果。

需要指出的是,与加法模块连接的两个选择器用于对输入的三路数据进行选择,进行相应类型的加法运算处理。

进一步的,如图4所示,本申请实施例提供的神经网络计算终端还可以包括左移(<<)、数据选择器(OP)、最大值计算单元(Max)、最小值计算单元(Min)等处理单元,在另一些实施例中,在乘法模块所处位置还可以包括A<>B,按位与,按位或,按位异或等处理单元。进一步的,还包括减法模块。本申请实施例通过计算模式控制器基于配置参数控制具体执行的运算,Conv_type&elt_type即为配置参数。

另外,数据处理单元还可以对数据A,B进行选择后输出,根据数据C进行选择。

参见图6所示,本申请实施例公开了一种神经网络计算方法,所述方法应用于神经网络计算终端,所述神经网络计算终端包括N个输入通道和N个计算阵列,其中,每个所述输入通道对应一个所述计算阵列,所述计算阵列包括多个数据处理单元,每个所述数据处理单元包括加法模块,所述计算方法包括:

步骤S11:对所述输入通道输入的数据进行乘法运算,并将所述乘法运算的乘法运算结果输出至所述加法模块;

步骤S12:对所述乘法运算结果进行加法运算得到加法运算结果,并将多个所述加法运算结果输入至所述加法模块或将所述加法运算结果作为计算终端的目标数据。

可见,本申请实施例中每个数据处理单元中的加法模块能够对乘法运算结果进行加法运算得到计算终端的目标数据,也能够对输入的加法运算模块运算结果进行加法运算,以得到计算终端的目标数据,实现了加法模块的复用,从而降低了计算终端的硬件面积消耗。

进一步的,任一所述计算阵列中各所述加法模块连接成加法层级结构,所述加法层级结构包括第一层,中间层和输出层;所述第一层的加法模块接收所述乘法运算结果,对所述乘法运算结果进行加法运算得到第一层加法运算结果,并将多个所述第一层加法运算结果输出至所述中间层的加法模块;所述中间层的加法模块接收所述第一层加法运算结果,对所述第一层加法运算结果进行加法运算,得到中间层加法运算结果;所述输出层的加法模块接收所述中间层加法运算结果,对所述中间层加法运算结果进行累加运算,得到最终运算结果作为计算终端的目标数据进行输出。

关于神经网络计算终端的具体内容可以参考前述实施例公开的内容,在此不再进行赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的一种神经网络计算终端及神经网络计算方法进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

技术分类

06120114692575