神经网络加速设备及其操作方法与流程

文档序号:22739450发布日期:2020-10-31 09:21阅读:103来源:国知局
神经网络加速设备及其操作方法与流程

相关申请的交叉引用

本申请要求于2019年4月26日向韩国知识产权局提交的申请号为10-2019-0049176的韩国专利申请的优先权,该韩国专利申请通过引用整体并入本文。

各个实施例总体可以涉及一种半导体装置,并且更特别地,涉及一种神经网络加速设备以及该神经网络加速设备的操作方法。



背景技术:

卷积神经网络(cnn)应用可以是主要用于图像识别和分析的神经网络应用。这些应用可能需要使用特定过滤器从图像中提取特征的卷积运算过滤器。执行乘法运算和加法运算的矩阵乘法单元可以用于卷积运算。当卷积系数中的0(零)分布较少时,例如,当系数的稀疏度(等于零的分数)较小时,矩阵乘法单元可以高效地用于处理稠密(即低稀疏度)图像和过滤器。但是,由于cnn应用中所使用的多数图像和过滤器的稀疏度约为30%至70%,因此可能包括大量的零(0)值。零值可能在执行卷积运算时产生不必要的延迟和功耗。

因此,需要有在cnn应用中高效执行卷积运算的方法。



技术实现要素:

实施例提供了一种具有改进的操作性能的神经网络加速设备以及其操作方法。

在本公开的实施例中,一种神经网络加速设备可以包括:零值过滤器,被配置成通过将权重施加到包括多个数据元素的输入特征来过滤零(0)值,并通过将包括相对坐标和组边界信息的索引信息与输入特征的数据元素进行匹配生成压缩数据包;乘法器,被配置成通过对压缩数据包的输入特征和权重执行乘法运算来生成结果数据;以及特征图提取器,被配置成对基于相对坐标和组边界信息的结果数据执行加法运算,并通过以原始输入特征形式重排加法运算的结果值来生成输出特征图。

在本公开的实施例中,一种神经网络加速设备的操作方法可包括:接收输入特征和权重,输入特征包括多个数据元素;通过将权重施加到输入特征来过滤零(0)值,并通过将包括相对坐标和组边界信息的索引信息与输入特征的数据元素进行匹配来生成压缩数据包;通过对压缩数据包的输入特征和权重执行乘法运算生成结果数据;对基于结果数据的相对坐标和组边界信息的相乘的结果数据执行加法运算,并通过以原始输入特征形式重排加法运算的结果值来生成输出特征图;并且将激励函数应用于输出特征图,将输出特征图改变为非线性值,并通过执行池化处理生成最终输出特征图。

根据本公开的实施例,由于略过输入特征的零值和权重是根据步长值来支持的,因此神经网络加速设备的操作性能的改善是可以预期的。

根据本公开的实施例,可以减少不必要的延迟和功耗。

这些和其它特征、方面和实施例将在以下标题为“具体实施方式”的部分中进行阐述说明。

附图说明

从结合附图的以下详细描述,将更清楚地理解本公开的主题的上述信息和其它方面、特征和优点,其中:

图1示出根据本公开的实施例的神经网络加速设备的配置。

图2示出根据本公开的实施例的对输入特征的数据元素(例如,像素)进行分组的方法。

图3和图4示出根据本公开的实施例的数据包的示例。

图5示出根据本公开的实施例的检测输入特征的零值的方法。

图6示出根据本公开的实施例的检测权重的零值的方法。

图7、图8、图9和图10示出根据本公开的实施例的通过对输入特征施加权重来检测非零值的方法。

图11是根据本公开的实施例的神经网络加速设备的操作方法的流程图。

图12是生成图11中压缩数据包的更详细地方法的流程图。

具体实施方式

将参照附图更详细地描述本发明的各个实施例。附图是各个实施例(和中间结构)的示意图。因此,例如,由于制造技术和/或误差所导致的示例的配置和形状的变型都是可预料的。因此,所描述的实施例不应解释为仅限于本文示出的特定配置和形状,而是包括在不脱离所附权利要求书所限定的本发明范围内的配置和形状上的偏差。

本文参照本发明实施例的示例来描述本发明。然而,本发明的实施例不应被解释为受限于本发明构思。虽然将示出并描述本发明的一些实施例,但是本领域普通技术人员将理解的是,可以在不脱离本发明的原理的情况下对这些实施例进行改变。

图1是示出根据实施例的神经网络加速设备的配置的示图。

在下文中,将参照图2至图10描述神经网络加速设备以及神经网络加速设备的操作方法。图2示出根据实施例的对输入特征的数据元素(例如,像素)进行分组的方法,图3和图4示出根据实施例的数据包的示例,图5示出根据实施例的检测输入特征的零值的方法,图6示出根据实施例的检测权重的零值的方法,以及图7至图10示出根据实施例的通过对输入特征施加权重来检测非零值的方法。

参照图1,根据实施例的神经网络加速设备10可以包括第一存储器100、零值过滤器200、第二存储器300、乘法器400、特征图提取器500和输出特征图生成器600。

第一存储器100可以存储与神经网络加速设备10相关的包括特征和权重的信息,并且将存储的特征和权重传送到零值过滤器200。该特征可能是图像数据或语音数据,但是在本文提供的说明性示例中,该特征被假设为由像素组成的图像数据。权重可以是用于从特征中过滤零值的过滤器。第一存储器100可以利用动态随机存取存储器(dram)来实施,但是实施例并不限于此。

零值过滤器200可以通过将权重施加到输入特征来过滤零(0)值,并且可以通过将包括相对坐标和组边界信息的索引信息与未过滤的输入特征的像素进行匹配来生成压缩数据包。输入特征和权重可以由第一存储器100生成。

零值过滤器200可以利用输入特征和权重的零值位置以及步长值来执行零值滤波。步长值可以指应用过滤器的区间值。参照图7,步长值为过滤器(权重)b-2相对于输入特征a-2在滑动窗口中的移动区间。

零值过滤器200可以根据预设标准对输入特征的像素进行分组,生成多个组之间的相对坐标,并且将相对坐标与每组的像素进行匹配。

参照图2,零值过滤器200可以将输入特征的像素分组为组1、组2、组3和组4(参见图2中的b),生成指示相同坐标相对于组的相同位置的相对坐标,并且将相对坐标与每个组内的像素进行匹配。输入特征的原始坐标(请参见图2中的(a))可能是1、2、3、4、……、15和16,而每组输入特征的坐标(请参见图2中的(b))可能是0、1、2和3。例如,分组的输入特征的坐标可以为组1的1、2和3;组2的0、1、2和3;组3的0、1、2和3;以及组4的0、1、2和3。通过生成组与组之间的相对坐标,可以减小待存储的索引值的大小。

此处,每个像素具有表达组边界信息的边界指示,并且输出特征图生成器600可以使用组边界信息来确定是否传送新像素组。组边界信息可以指用于划分多个组的1位信息。

图3和图4示出压缩数据包的示例。参照图3,压缩数据包包括组边界信息“边界指示符”、指示所有相应的像素数据是否都具有零(0)值的零标志“全0标志”以及像素数据的坐标“坐标信息”和像素数据“数据”。组边界信息和零标志可以分别用1位例如值1或0表示。当新像素组传送开始时,边界信息的值1或0可以被反转为值0或1。例如,在实施例中,零值过滤器200输出像素组1的所有压缩数据包,然后输出带有设置成“0”的组边界信息的针对像素组2的第一压缩数据包以指示像素组2的开始,然后输出带有设置成“1”的针对像素组2的剩余压缩数据包以指示它们在相同组中。一旦像素组2的压缩数据包全部被输出,则零值过滤器200输出带有设置成“0”的组边界信息的针对像素组3的第一压缩数据包以指示像素组3的开始,并以此类推。

图4(a)示出非零数据包的示例,以及图4(b)示出像素组中的所有像素数据均为零(0)的数据包的示例。当从零值过滤器200传送的数据包的零标志值为“1”时,乘法器400可以跳过针对相应数据包的像素组的像素数据的所有乘法运算。例如,如果在上面的示例中,像素组3的第一压缩数据包具有设置为1的零标志值,则乘法器将不使用像素组3中的像素执行乘法运算。在这种情况下,具有设置为1的零标志值的像素组3的第一压缩数据包可以是像素组3的唯一数据包输出,下一数据包将是像素组4的数据包。

例如,零值过滤器200可以通过去除在预先输入到乘法器400中的输入值之中、预期引起不必要运算的值(例如,包括零(0)值的组合)来预先禁止乘法器400的不必要运算。例如,在图2和图5至图8所示的示例中,如在图8的整合边界(d)中的它们各自位中的0所指示,像素组1的像素1和2(对应于图2的(a)中的像素2和5)是不必要的。因此,零值过滤器200仅将组1的像素0和3的压缩数据包传送到第二存储器300,并且乘法器400使用组1的像素0和像素3的数据来执行运算,而不使用组1的像素0或像素3的数据来执行运算。

因此,可以减少由于乘法器400的不必要运算而引起的不必要延迟和功耗。乘法器400是笛卡尔积模块,即将其处理的每个像素的数据乘以过滤器(权重)中的每个系数(或至少每个非零系数)的乘法器,但实施例并不限于此。

零值过滤器200可以将输入特征和权重转换为一维(1d)矢量,并且通过对输入特征和权重执行按位or运算即按位或运算来过滤输入特征和权重的非零值位置。以该方式,具有零数据值的像素和将不与任何非零过滤器系数相乘的像素两者被过滤掉。

参照图5,零值过滤器200可以根据过滤器(权重)的大小将4×4输入特征a布置到1d矢量a-1(例如,1,5,0,6,3,0,4,8,0,13,10,14,11,15,12,0),并且通过对1d矢量的输入特征a-1的每个像素执行按位或运算以提取输入特征a的非零值位置来产生值a-2(例如,1,1,0,1,1,0,1,1,0,1,1,1,1,1,1,0)。

参照图6,零值过滤器200可以将2×2权重b布置在1d矢量b-1(例如,10,0,0,11)中,并且通过对1d矢量的权重b-1执行按位或运算以提取权重(过滤器)的非零值位置来产生值b-2(例如,1,0,0,1)。因此,零值过滤器200可以识别输入特征的非零值位置,并且可以识别权重的非零值位置。

零值过滤器200可以通过对输入特征和权重的经过滤的非零位置执行按位and运算即按位与运算,根据边界顺序的权重位置来产生非零位置值。对于输入特征中的在权重中没有相应位的位,按位与运算输出0。

边界顺序可以与1d矢量的权重相对于1d矢量形式的输入特征进行滑动窗口的顺序相同。

参照图7和图8,零值过滤器200可以定位以1d矢量形式过滤的输入特征a-2和权重b-2的非零位置值,以使非零位置值彼此对齐,并对该非零值执行按位与运算的同时相对于输入特征滑动权重的窗口(移位)。步长值可以是用于创建1d权重b-2的2d过滤器列宽(即列数)的倍数。

在2×2过滤器的情况下,列宽可以为2,因此,当步长=1时,过滤器可能会移位列宽的倍数(=2×1),而当步长为2时,可能会移位列宽的倍数(=2×2)。

参照图8,零值过滤器200可以根据权重b-2的滑动窗口来产生多个目标边界c,例如,第一目标边界至第七目标边界。当权重b-2未移位时,第一目标边界可以对应于输入特征a-2和权重b-2的按位与运算的结果;当权重b-2移位一个列宽(步长=1)时,第二目标边界可以对应于输入特征a-2和权重b-2的按位与运算的结果;当权重b-2移位两个列宽时,第三目标边界可以对应于输入特征a-2和权重b-2的按位与运算结果,依此类推。

零值过滤器200可以通过对目标边界的非零位置值执行按位或运算产生整合边界信息。

参照图8,零值过滤器200可以通过对第一目标边界至第七目标边界的非零位置值c-1(例如1,0,0,0,0,0)执行按位或运算来产生整合边界信息d-1。零值过滤器200可以通过对第一目标边界至第七目标边界的非零位置值c-2至c-16重复执行按位或运算,来产生整合边界信息d-2至d-16,因此,可以产生最终整合边界信息d。

当产生整合边界信息时,零值过滤器200可以根据步长值来改变待被执行按位或运算的目标边界。

当步长值不为“1”时,零值过滤器200可以通过选择性地使用根据在图8中步长值为“1”的情况下的步长值的目标边界来确定整合边界信息中的非零位置值。

例如,参照图9,当步长值为“2”(步长=2)时,零值过滤器200可以在执行产生整合边界信息的按位或运算时通过不使用在图8的步长=1的情况下使用的偶数目标边界信息(第二目标边界、第四目标边界等)来提取非零位置值时执行。

参照图10,零值过滤器200可以基于选择的第一、第三、第五和第七目标边界信息,通过对非零位置值执行按位或运算来产生整合边界信息。

即使在步长=3的情况下,零值过滤器200也可以通过跳过在图8的步长=1的情况下的奇数目标边界信息来产生整合边界信息。零值过滤器200可以跳过除第一边界信息以外的奇数边界信息。

在步长值不为“1”的情况下提取非零值位置的操作可能具有与针对2d矢量特征移位过滤器时提取非零值位置的方法相同的效果。然而,提取操作可以利用1d矢量来实施,因此可简化用于提取操作的逻辑。当在非零值位置提取非零位置值之后执行笛卡尔积运算时,可以通过跳过不必要运算来减少延迟和功耗。

第二存储器300可以存储包括从零值过滤器200传送的索引信息的数据包。压缩数据包通常仅包括用于整合边界信息中的相应位为1时的像素的数据包(如下所述,除了由零值过滤器200将组中的所有像素滤出的情况以外)。第二存储器300可以存储包括从输出特征图生成器600传送的最终输出特征图、与神经网络加速设备10有关的信息。第二存储器300可以利用静态随机存取存储器(sram)来实施,但实施例并不限于此。第二存储器300由于sram的特性而每周期读出一个数据包,因此可能需要多个周期来读取数据包。因此,与读取数据包同时执行的零值跳过操作可能是周期的负担。然而,在实施例中,由于存储了通过零值滤波已预先处理过的多位的输入特征图,因此可以减少上述周期的负担。也就是说,本实施例可以相对减少访问第二存储器300以读取数据包的次数。

作为笛卡尔积模块的乘法器400可以通过对如在第二存储器300中存储的压缩数据包中表示的输入特征和权重执行乘法运算来产生结果数据。

乘法器400可以参考执行乘法运算的索引信息跳过对经零值过滤的数据包的乘法运算。

特征图提取器500可以基于从乘法器400传送的结果数据的相对坐标和边界信息对相乘的结果数据执行加法运算,并且通过以原始输入特征形式重排加法运算的结果值来生成输出特征图。例如,特征图提取器500可以基于相对坐标和边界信息以像素在像素分组之前的形式(参照图2)重排相加的结果值。

输出特征图生成器600可通过将激励函数应用于输出特征图来将输出特征图改变为非线性值,通过对非线性值执行池化处理来生成最终输出特征图,并且将最终输出特征图传送到第一存储器100、第二存储器300和零值过滤器200中的至少一个。

图11是说明根据实施例的神经网络加速设备的操作方法的流程图。

参照图11,神经网络加速设备10的零值过滤器200可以接收输入特征和权重(s101)。

参照图1,零值过滤器200可以从第一存储器100接收预存储的输入特征和权重。

然后,零值过滤器200通过将权重施加到输入特征来从输入特征中过滤零(0)值,并且通过将包括相对坐标和组边界信息的索引信息与输入特征的像素进行匹配生成压缩数据包(s103)。

例如,零值过滤器200可以利用输入特征和权重的零值位置以及步长值来执行零值滤波。

此外,零值过滤器200可以根据预设标准将输入特征的像素进行分组,生成多个组之间的相对坐标,并且将相对坐标与每组的像素进行匹配。

神经网络加速设备10的乘法器400可以通过对由零值过滤器传送的压缩数据包的输入特征和权重执行乘法运算生成结果数据(s105)。乘法器400可能不直接从零值过滤器200接收压缩数据包,而是可从第二存储器300接收压缩数据包。

参照图3和图4,压缩数据包可包括组边界信息“边界指示”、指示所有相应的像素数据是否都具有零(0)值的零标志“全0标志”、像素数据的坐标“坐标信息”和像素数据“数据”。组边界信息可以是通过零值过滤器200对边界顺序的非零位置值执行按位或运算获取的整合边界信息。

参照图8,零值过滤器200可以通过对第一目标边界至第七目标边界的非零位置值c-1(例如,1,0,0,0,0,0)执行按位或运算来生成整合边界信息d-1。然后,整合边界信息用于确定零值过滤器200将为哪些像素生成压缩数据包。

当执行乘法运算时,乘法器400可以参照索引信息跳过对经过滤的数据包的乘法运算。例如,当从零值过滤器200传送的数据包的零标志值为“1”时,乘法器400可以跳过对像素组的与数据包对应的像素数据的所有乘法运算。在该示例中,去除了零值的数据包被存储在第二存储器300中,因此可以在之前的阶段中为乘法器400移除不必要数据。全零跳过操作可能是不为由零值过滤器200过滤出的像素存储数据包的通常情况的例外数据包。

在实施例中,乘法器400对第二存储器300中的压缩数据包逐个处理。当数据包的零标志值为“0”时,乘法器400将数据包中的像素数据乘以过滤器的非零系数中的至少一个来为每个非零滤波系数生成一个乘法结果,并且输出该数据包的包括组边界信息、零标记值、数据包的相对坐标以及乘法结果的结果。当数据包的零标志值为“1”时,乘法器400仅输出该数据包的包括分组的组边界信息、零标记值和数据包(零)的相对坐标的结果,在一些实施例中,乘法结果为零。因此,可以减少由于乘法器400的不必要运算而引起的不必要延迟和功耗。

然后,特征图提取器500可以对基于结果数据的相对坐标和组边界信息的相乘的结果数据执行加法运算,并通过以原始输入特征形式重排加法运算的结果值来生成输出特征图(s107)。例如,在实施例中,对于与乘法器400的数据包对应的每个输出,特征图提取器500可以确定输出特征图中的哪些像素使用输出中的相乘结果中的每一个,并且可以将该相乘结果累加到该像素中。

输出特征图生成器600可以通过将激励函数应用于输出特征图来将输出特征图改变为非线性值,并通过执行池化处理来生成最终输出特征图(s109)。

图12是更详细地说明生成图11中压缩数据包的方法s103的示图。

参照图12,神经网络加速设备10的零值过滤器200可以将输入特征和权重转换为1d矢量,并且通过对输入特征的像素和权重系数执行按位或运算来对输入特征和权重的非零值位置进行过滤(s201)。

参照图5,零值过滤器200可以根据过滤器(权重)的大小将4×4输入特征a布置到1d矢量a-1(例如,1,5,0、6,3,0,4,8,0,13,10,14,11,15,12,0),并且通过对1d矢量的输入特征a-1执行按位或运算,以提取输入特征a的非零值位置来产生值a-2(例如,1,1,0、1,1,0,1,1,0,1,1,1,1,1,1,0)。

参照图6,零值过滤器200可以将2×2权重b布置在1d矢量b-1(例如,10,0,0,11)中,并且通过对1d矢量的权重b-1执行按位或运算,以提取权重(过滤器)的非零值位置,来产生值b-2(例如,1,0,0,1)。因此,零值过滤器200可以识别特征(在a-2中以1’表示)和权重(在b-2中以1’表示)的非零值位置。

零值过滤器200可以通过对输入特征和权重的经滤波的非零位置执行按位与运算,根据边界顺序的权重位置来产生非零位置值(s203)。

边界顺序可以与利用1d矢量形式的权重将1d矢量形式的输入特征进行滑动窗口的顺序相同。

参照图7和图8,零值过滤器200可以定位以1d矢量形式过滤的输入特征a-2和权重b-2的非零位置值,以使非零位置值彼此对齐,并对该非零值执行按位与运算同时相对于输入特征滑动权重的窗口(移位)。步长值即每次移动滑动窗口所移位的量是与权重相对应的2d过滤器的列宽的倍数。

参照图8,零值过滤器200可以产生与权重b-2的滑动窗口的位置相对应的多个目标边界c,例如,第一目标边界至第七目标边界。

然后,零值过滤器200可以通过对目标边界的非零位置值执行按位或运算来产生整合边界信息(s205)。在上述操作s103中,整合边界信息包括在索引信息的边界信息中。

参照图8,零值过滤器200可以通过对第一目标边界至第七目标边界的非零位置值c-1(例如,1,0,0,0,0,0)执行按位或运算来产生整合边界信息d-1。零值过滤器200可以通过对第一目标边界至第七目标边界的非零位置值c-2至c-16重复执行按位或运算,来产生整合边界信息d-2至d-16,因此,可以产生最终整合边界信息d。

当在操作s205中产生整合边界信息时,零值过滤器200可以根据步长值来改变待被执行按位或运算的目标边界信息。

本发明的上述实施例旨在说明而不是限制本发明。各种替代方案和等同方案都是有可能的。本发明不受本文描述的实施方案的限制。本发明也不限于任何特定类型的半导体装置。鉴于本公开其他增加,减少或修改是显而易见的,并将落入所附权利要求书的范围内。

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