一种应用于卷积神经网络的处理器的制作方法

文档序号:15388086发布日期:2018-09-08 00:48阅读:217来源:国知局

本发明属于运算处理技术领域,更具体地,涉及一种应用于卷积神经网络的处理器。



背景技术:

卷积神经网络(convolutionalneuralnetwork,cnn)是一种前馈神经网络,其人工神经元可以响应一部分覆盖范围内的周围单元,适用于对大型图像的处理。卷积神经网络广泛应用于图像识别、语音识别等领域,但计算量非常大。

由于卷积神经网络中的激活函数relu(rectifiedlinearunit,修正线性单元)会造成大量稀疏的(featuremap);同时,采用剪枝等方法训练卷积神经网络会造成大量稀疏的权重数据(weightdata)。利用和权重数据的稀疏性可以大幅提高卷积神经网络的计算效率。目前,已有很多方法基于卷积神经网络中和权重数据的稀疏性提高计算速度。这些方法大致可以分为两类,一类着眼于跳过0值。例如有的方法去除输入中的0值,从而减少输入为0的无效计算。另一类采取忽略零值的方法。例如有的方法在输入数据为0时,不执行乘法操作,从而减少运算。但这些方法都着眼于处理稀疏神经网络本身,假定神经网络稀疏是前提。然而实际上卷积神经网络中各层输出可能是稀疏的,可能是非稀疏的。而目前的处理器只能处理稀疏的卷积神经网络,无法同时处理稀疏和非稀疏的卷积神经网络。



技术实现要素:

为克服上述现有技术无法同时处理稀疏和非稀疏的卷积神经网络的问题或者至少部分地解决上述问题,本发明提供了一种应用于卷积神经网络的处理器。

根据本发明的一方面,提供一种应用于卷积神经网络的处理器,包括:多个处理单元,各所述处理单元包括数据处理器和索引处理器;

其中,所述数据处理器用于对卷积神经网络中各层输出的各特征图和所述卷积神经网络中各卷积核进行卷积,获取卷积结果;

所述索引处理器用于根据各所述特征图的索引和各所述卷积核的索引获取所述卷积结果的索引;

当各所述特征图为稀疏状态时,各所述特征图的索引为各所述特征图中非零特征元素的索引;

当各所述卷积核为稀疏状态时,各所述卷积核的索引为各所述卷积核中非零权重元素的索引。

具体地,所述处理单元还包括特征数据屏蔽信号、权重数据屏蔽信号、处理单元屏蔽信号和与门;

其中,当各所述特征图为中间状态时,所述特征数据屏蔽信号打开;

当各所述特征图中的特征元素为0时,所述特征数据屏蔽信号为0;

当各所述卷积核为中间状态时,所述权重数据屏蔽信号打开;

当各所述卷积核中的权重元素为0时,所述权重数据屏蔽信号为0;

所述特征数据屏蔽信号和所述权重数据屏蔽信号通过所述与门输出处理单元屏蔽信号;

当所述特征数据屏蔽信号为0或所述权重数据屏蔽信号为0时,所述处理单元屏蔽信号为0,所述数据处理器和所述索引处理器不运行。

具体地,各所述处理单元还包括累加器;

其中,所述累加器用于存储各所述处理单元输出的卷积结果和所述卷积结果的索引;

多个所述处理单元共享所述累加器。

具体地,还包括冲突检测器;

其中,所述冲突检测器用于在根据任意相邻两个所述处理单元输出的卷积结果的索引,将所述卷积结果的索引对应的卷积结果路由到同一个所述累加器时,此次不将所述卷积结果的索引对应的卷积结果存储到所述累加器中。

具体地,还包括存储单元;

其中,所述存储单元包括第一存储模块、第二存储模块和第三存储模块;

所述第一存储模块用于存储各所述特征图;

所述第二存储模块用于存储各所述卷积核;

所述第三存储模块用于存储各所述特征图的位置,所述位置包括各所述特征图存储的起始地址和各所述特征图中非零元素的个数。

具体地,所述第一存储模块和所述第二存储模块分别包括多个存储器;

所述第一存储模块中的存储器通过外部控制信号和多路选择器进行重构,用于存储不同状态的所述特征图;

所述第二存储模块中的存储器通过外部控制信号和多路选择器进行重构,用于存储不同状态的所述卷积核。

具体地,所述第一存储模块中的存储器包括第一存储器、第二存储器和第三存储器;

当各所述特征图为稀疏状态时,所述第一存储器用于存储各所述特征图中的非零特征元素,所述第二存储器用于存储所述特征图中非零特征元素的索引,所述第三存储器关闭;

当各所述特征图为中间状态时,所述第一存储器和所述第二存储器用于存储各所述特征图中的所有特征元素,所述第三存储器打开,用于存储所述特征图中各特征元素的标识,所述标识用于标记特征元素0;

当各所述特征图为稠密状态时,所述第一存储器和所述第二存储器用于存储所述特征图中的所有特征元素,所述第三存储器关闭。

具体地,所述第二存储模块中的存储器包括第四存储器、第五存储器和第六存储器;

当各所述卷积核为稀疏状态时,所述第四存储器用于存储各所述卷积核中的非零权重元素,所述第五存储器用于存储所述卷积核中非零权重元素的索引,所述第六存储器关闭;

当各所述卷积核为中间状态时,所述第四存储器和所述第五存储器用于存储各所述卷积核中的所有权重元素,所述第六存储器打开,用于存储所述卷积核中各权重元素的标识,所述标识用于标记权重元素0;

当各所述卷积核为稠密状态时,所述第四存储器和所述第五存储器用于存储所述卷积核中的所有权重元素,所述第六存储器关闭。

具体地,各所述处理单元以阵列形式排列;

其中,每一列所述处理单元对应相同的特征元素;

每一行所述处理单元对应相同的权重元素。

具体地,所述第一存储模块中的存储器包括第一存储器和第二存储器,所述第二存储模块中的存储器包括第四存储器和第五存储器;

当各所述特征图为稀疏状态时,所述第一存储器用于存储各所述特征图中的非零特征元素,所述第二存储器用于存储所述特征图中非零特征元素的索引;

当各所述特征图为稠密状态时,所述第一存储器和所述第二存储器用于存储所述特征图中的所有特征元素;

当各所述卷积核为稀疏状态时,所述第四存储器用于存储各所述卷积核中的非零权重元素,所述第五存储器用于存储所述卷积核中非零权重元素的索引;

当各所述卷积核为稠密状态时,所述第四存储器和所述第五存储器用于存储所述卷积核中的所有权重元素。

本发明提供一种应用于卷积神经网络的处理器,该处理器通过数据处理器对卷积神经网络中各层输出的各特征图和卷积神经网络中的各卷积核进行卷积计算,通过索引处理器对特征图的索引和卷积核的索引进行计算,从而获取卷积结果和卷积结果的索引,当特征图或卷积核为稀疏状态时,仅对非零元素设置索引,从而减少存储空间和运算量,同时适用于稀疏状态和非稀疏状态的卷积神经网络的处理。

附图说明

图1为本发明实施例提供的应用于卷积神经网络的处理器整体结构示意图;

图2为本发明实施例提供的应用于卷积神经网络的处理器中存储单元整体结构示意图;

图3为本发明实施例提供的应用于卷积神经网络的处理器中处理单元排列架构示意图;

图4为本发明实施例提供的应用于卷积神经网络的处理器中访问量对比示意图;

图5为本发明实施例提供的应用于卷积神经网络的处理器中芯片面积对比示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

在本发明的一个实施例中提供一种应用于卷积神经网络的处理器,本发明实施例的卷积神经网络由三部分构成,第一部分为输入层,第二部分由卷积层层组成,其中每个卷积层后接一个池化层或不接池化层,第三部分由一个全连接的多层感知机分类器构成。由于卷积神经网络中卷积层的层数较多,且每一个卷积层对应有多个卷积核,从而导致卷积神经网络的计算量很大。本实施例采用多个处理单元对任一卷积层使用多个卷积核进行并行计算,从而提高卷积神经网络的计算速度。

图1为本发明实施例提供的应用于卷积神经网络的处理器整体结构示意图,包括:多个处理单元,各处理单元包括数据处理器和索引处理器;其中,

数据处理器用于将卷积神经网络中各层输出的各特征图和卷积神经网络中各卷积核进行卷积,获取卷积结果;

数据处理器用于根据卷积神经网络中各层输出的特征图(featuremap)和卷积神经网络中的卷积核进行卷积,获取卷积结果。每个特征图与多个卷积核进行卷积,输出多个卷积结果,卷积结果也为特征图。

索引处理器用于根据各特征图的索引和各卷积核的索引获取卷积结果的索引;

索引处理器用于根据各特征图的索引和各卷积核的索引获取卷积结果的索引。特征图的索引是指对特征图中的各特征元素进行排序的一种存储结构,卷积核的索引是指对卷积核中的各权重元素进行排序的一种存储结构。卷积结果的索引是指对卷积结果进行排序的一种存储结构。通过特征图中各特征元素的排序和各权重元素的排序,获取各特征元素和各权重元素进行卷积后的卷积结果的排序,从而确定卷积结果中每个元素的位置。

当各特征图为稀疏状态时,各特征图的索引为各特征图中非零特征元素的索引;当各卷积核为稀疏状态时,各卷积核的索引为各卷积核中非零权重元素的索引。

本实施例中将特征图和卷积核分别分为两种状态,即稀疏状态和稠密状态。其中,稀疏状态是指矩阵中数值为0的元素数目远远多于非0元素的数目,稠密状态是指矩阵中非0元素的数目占大多数。定义矩阵中非0元素的数目与该矩阵中所有元素的总个数之间的比值为矩阵的稠密度。例如,一个矩阵中非0元素的个数为10,该矩阵中所有元素的总个数为100,则该矩阵的稠密度为0.1。当各特征图或卷积核的稠密度小于第一预设阈值时,则各特征图或卷积核为稀疏状态,当各特征图或卷积核的稠密度大于第二预设阈值时,则各特征图或卷积核为稠密状态。其中,第一预设阈值小于第二预设阈值。当各特征图为稀疏状态时,各特征图的索引为各特征图中非零特征元素的索引;当各卷积核为稀疏状态时,各卷积核的索引为各卷积核中非零权重元素的索引。在特征图或卷积核为稀疏状态时,特征图或卷积核的索引为预先存储,仅对非零元素进行存储和设置索引,减少了存储空间和计算量。在特征图或卷积核为稠密状态时,特征图或卷积核的索引为各特征图或卷积核中所有元素的索引,特征图或卷积核的索引直接在处理器的芯片上产生。

本实施例通过数据处理器对卷积神经网络中各层输出的各特征图和卷积神经网络中的各卷积核进行卷积计算,通过索引处理器对特征图的索引和卷积核的索引进行计算,从而获取卷积结果和卷积结果的索引,当特征图或卷积核为稀疏状态时,仅对非零元素设置索引,从而减少存储空间和运算量,同时适用于稀疏状态和非稀疏状态的卷积神经网络的处理。

在上述实施例的基础上,本实施例中所述处理单元还包括特征数据屏蔽信号、权重数据屏蔽信号、处理单元屏蔽信号和与门;其中,当各特征图为中间状态时,特征数据屏蔽信号打开;当各特征图中的特征元素为0时,特征数据屏蔽信号为0;当各卷积核为中间状态时,权重数据屏蔽信号打开;当各卷积核中的权重元素为0时,权重数据屏蔽信号为0;特征数据屏蔽信号和权重数据屏蔽信号通过与门输出处理单元屏蔽信号;当特征数据屏蔽信号为0或权重数据屏蔽信号为0时,处理单元屏蔽信号为0,数据处理器和索引处理器不运行。

具体地,当各特征图的稠密度大于或等于第一预设阈值,且小于或等于第二预设阈值时,则各特征图为中间状态。此时,打开特征数据屏蔽信号a-guard,所述特征数据屏蔽信号a-guard用于屏蔽特征图中为0的特征元素,即为0的特征元素不进行数据和索引计算。当各卷积核的稠密度大于或等于第一预设阈值,且小于或等于第二预设阈值时,则各卷积核为中间状态。此时,打开权重数据屏蔽信号w-guard,所述权重数据屏蔽信号w-guard用于屏蔽卷积核中为0的权重元素,即为0的权重元素不进行数据和索引计算。当各特征图中的特征元素为0时,特征数据屏蔽信号为0。当各卷积核中的权重元素为0时,权重数据屏蔽信号为0。当特征数据屏蔽信号为0或权重数据屏蔽信号为0时,处理单元屏蔽信号en为0。处理单元屏蔽信号en用于屏蔽处理单元的运行,当处理单元屏蔽信号为0时,处理单元中的数据处理器和索引处理器不运行,从而降低功耗,如图1所示。

本实施例中通过使用特征数据屏蔽信号、权重数据屏蔽信号、处理单元屏蔽信号和与门,在特征图或卷积核为中间状态时对特征图或卷积和中的0元素不进行运算,从而降低功耗。

在上述实施例的基础上,本实施例中各处理单元还包括累加器;其中,累加器用于存储各处理单元输出的卷积结果和卷积结果的索引;多个处理单元共享累加器。

具体地,各处理单元还包括累加器。累加器是一种寄存器,用来存储计算产生的中间结果。本实施例中累加器用于存储数据处理器输出的卷积结果和索引处理器输出的卷积结果的索引。若干处理单元可以共享累加器,从而减少每个累加器的大小,大幅减少处理器芯片的面积。图1中组相连的两个处理单元pe0和pe1共享累加器。

在上述实施例的基础上,本实施例中还包括冲突检测器;其中,冲突检测器用于在根据任意相邻两个处理单元输出的卷积结果的索引,将卷积结果的索引对应的卷积结果路由到同一个累加器时,此次不将卷积结果的索引对应的卷积结果存储到累加器中。

具体地,处理器还包括冲突检测器,冲突检测器用于处理相连的处理单元之间的冲突问题,当发生冲突时进行阻塞。根据处理单元输出的卷积结果的索引,该处理单元输出的卷积结果路由到该处理单元中的累加器或该处理单元临近的处理单元中的累加器。若任意相邻两个处理单元输出的卷积结果被路由到同一个累加器,则将两个处理单元输出的卷积结果阻塞一个周期,即不存储到累加器中。在后面的周期中至多需要两个周期将两个处理单元输出的卷积结果路由到累加器中,从而解决处理单元共享累加器引起的冲突问题。

在上述各实施例的基础上,本实施例中处理器还包括存储单元;其中,存储单元包括第一存储模块、第二存储模块和第三存储模块;第一存储模块用于存储各特征图;第二存储模块用于存储各卷积核;第三存储模块用于存储各特征图的位置,位置包括各特征图存储的起始地址和各特征图中非零元素的个数。

具体地,处理器还包括存储单元,存储单元包括三个底层存储模块,即第一存储模块、第二存储模块和第三存储模块。其中,第一存储模块用于存储各特征图,第二存储模块用于存储各卷积核。由于不同层输出达到特征图的大小不相同,稀疏状态的特征图和稠密状态的特征图存储的方式也不一样。因此通过第三存储模块用于存储各特征图的位置。位置包括各特征图存储的起始地址和各特征图中非零元素的个数,从而能准确从第一存储模块中获取到各特征图。

在上述实施例的基础上,本实施例中第一存储模块和第二存储模块分别包括多个存储器;第一存储模块中的存储器通过外部控制信号和多路选择器进行重构,用于存储不同状态的特征图;第二存储模块中的存储器通过外部控制信号和多路选择器进行重构,用于存储不同状态的卷积核。

具体地,根据特征图和卷积核的稠密度可以将特征图和卷积核划分为多个状态,本实施例不限于状态的个数。第一存储模块和第二存储模块分别包括多个存储器,所述存取器的个数根据特征图和卷积核的状态数目确定。第一存储模块中的存储器通过外部控制信号ctrl和多路选择器mux进行重构,用于存储不同状态的特征图。第二存储模块中的存储器通过外部控制信号和多路选择器进行重构,用于存储不同状态的卷积核。通过重构将不同状态的特征图和卷积核进行不同形式的存储,从而在使用一个存储单元的情况下能进行不同状态的特征图和卷积核的存储,提高了存储的灵活性,减小存储单元的芯片面积。

现有技术在卷积神经网络的卷积核或者特征图是稀疏的情况下,处理比较高效,但在卷积核和特征图都是稀疏的情况下效率不高。这是因为卷积核和特征图都稀疏的情况下会造成输出数据的完全没有规律,而现有的集成电路中常用的静态随机存取存储器(staticrandom-accessmemory,sram)的端口一般只有1到2个,无法实现卷积核和特征图均非规律化写入。虽然现有的哈希加多组存储的方法能实现卷积核和特征图都非规律化写入,但会引入很多存储器组,导致芯片面积过大。

在上述实施例的基础上,本实施例中第一存储模块中的存储器包括第一存储器、第二存储器和第三存储器;当各特征图为稀疏状态时,第一存储器用于存储各特征图中的非零特征元素,第二存储器用于存储特征图中非零特征元素的索引,第三存储器关闭;当各特征图为中间状态时,第一存储器和第二存储器用于存储各特征图中的所有特征元素,第三存储器打开,用于存储特征图中各特征元素的标识,标识用于标记特征元素0;当各特征图为稠密状态时,第一存储器和第二存储器用于存储特征图中的所有特征元素,第三存储器关闭。

具体地,本实施例中各特征图被分为稀疏状态、稠密状态和中间状态三种状态。使用三个存储器第一存储器bank0、第二存储器bank1和第三存储器zeroguardbank对三种状态的特征图进行存储。对于稀疏状态s的特征图,将特征图中的非零特征元素存储在bank0中,bank1用于存储特征图中非零特征元素的索引,zeroguardbank关闭。对于中间状态m的特征图,bank0和bank1均用于存储特征图中的特征元素,zeroguardbank打开,用于存储特征元素0的标识。对于稠密状态d的特征图,只打开bank0和bank1以存储特征图中的特征元素,如图2所示。

本实施例通过分别将第一存储模块中的多个存储器进行重构,从而将不同状态的特征图进行不同形式的存储,在使用一个存储单元的情况下能进行不同状态的特征图的存储,提高了存储的灵活性,减小存储单元的芯片面积。

在上述实施例的基础上,第二存储模块中的存储器包括第四存储器、第五存储器和第六存储器;当各卷积核为稀疏状态时,第四存储器用于存储各卷积核中的非零权重元素,第五存储器用于存储卷积核中非零权重元素的索引,第六存储器关闭;当各卷积核为中间状态时,第四存储器和第五存储器用于存储各卷积核中的所有权重元素,第六存储器打开,用于存储卷积核中各权重元素的标识,标识用于标记权重元素0;当各卷积核为稠密状态时,第四存储器和第五存储器用于存储卷积核中的所有权重元素,所述第六存储器关闭。

具体地,本实施例中各卷积核被分为稀疏状态、稠密状态和中间状态三种状态。使用三个存储器第四存储器、第五存储器和第六存储器对三种状态的卷积核进行存储。对于稀疏状态s的卷积核,将卷积核中的非零权重元素存储第四存储器中,第五存储器用于存储卷积核中非零权重元素的索引,第六存储器关闭。对于中间状态m的卷积核,第四存储器和第五存储器均用于存储卷积核中的特征元素,第六存储器打开,用于存储权重元素0的标识。对于稠密状态d的卷积核,只打开第四存储器和第五存储器以存储卷积核中的权重元素。

本实施例通过分别将第二存储模块中的多个存储器进行重构,从而将不同状态的卷积核进行不同形式的存储,在使用一个存储单元的情况下能进行不同状态的卷积核的存储,提高了存储的灵活性,减小存储单元的芯片面积。

在上述各实施例的基础上,本实施例中各处理单元以阵列形式排列;其中,每一列处理单元对应相同的特征元素;每一行处理单元对应相同的权重元素。

具体地,如图3所示,处理器中各处理单元以阵列形式进行排列。处理器还包括一个多模态层次化的存储单元。存储单元包括一个特征轨道组和一个权重轨道组,特征轨道组包括特征数据轨道、特征索引轨道和zeroguard轨道,权重轨道组包括权重数据轨道、权重索引轨道和zeroguard轨道。每一列处理单元pe共享特征数据;每一行处理单元共享权重数据。同时,每一行相邻的pe形成组相连结构。对于n2次计算,仅需读取n次存储单元,从而高效计算不同稀疏程度的卷积神经网络。

在上述实施例的基础上,本实施例中第一存储模块中的存储器包括第一存储器和第二存储器,第二存储模块中的存储器包括第四存储器和第五存储器;当各特征图为稀疏状态时,第一存储器用于存储各特征图中的非零特征元素,第二存储器用于存储特征图中非零特征元素的索引;当各特征图为稠密状态时,第一存储器和第二存储器用于存储特征图中的所有特征元素;当各卷积核为稀疏状态时,第四存储器用于存储各卷积核中的非零权重元素,第五存储器用于存储卷积核中非零权重元素的索引;当各卷积核为稠密状态时,第四存储器和第五存储器用于存储卷积核中的所有权重元素。

本实施例中各特征图和卷积核分别被分为稀疏状态和稠密状态两种状态。使用二个存储器对两种状态的特征图和卷积核进行存储。从而将不同状态的卷积核进行不同形式的存储,在使用一个存储单元的情况下能进行不同状态的卷积核的存储,提高了存储的灵活性,减小存储单元的芯片面积。

例如,采用台积电65nm工艺制作所述处理器的芯片,所述芯片的面积为3mm*4mm,运行频率为20-200mhz,功耗为20.5-248.4毫瓦。图4为本实施例与其他方案对存储的访问次数。访问次数越少,处理器的能量越低,能效越高。在稀疏状态s下,本实施例与零跳过方案一样采用稀疏的存储方案,相比于零关闭方案,大幅降低存储访问。在中间状态m下,本实施例采用零关闭方案,从而降低零跳过方案中索引数据对存储的访问。一个处理单元被关闭时,65%的能量将被节省。当处于稠密状态时,本实施例可以同时关闭零关闭和零跳过方案,从而节省存储访问。如图5所示,本实施例在卷积核和特征图均为稀疏状态下与传统的哈希存储方案相比,在相似性能的前提下减少91.9%的芯片面积,本实施例中的处理单元组相连与处理单元不组相连的情况相比可减少存储面积30.3%。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1