一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

处理系统中的矩阵数据重用技术的制作方法

2022-03-23 09:16:24 来源:中国专利 TAG:

处理系统中的矩阵数据重用技术
1.相关申请的交叉引用
2.本技术要求于2019年7月9日提交的第62/872,147号美国临时专利申请的权益,该申请的全部内容并入本文。


背景技术:

3.计算系统中的卷积计算被广泛用于人工智能任务中,例如图像处理及其类似任务。通常,卷积是将矩阵中每一个元件的权重添加到其局部近邻的过程。参考图1,示出了根据现有技术的权重矩阵110与输入特征图矩阵120的示例性卷积。权重矩阵110与输入特征图120的卷积生成输出特征图矩阵130。权重矩阵110、输入特征图矩阵120和输出特征图130的参数列于表1中。
[0004][0005]
表1
[0006]
卷积以r=h,s=w为表征的特殊情况通常被称为全连接层。尽管本文描述的一般卷积情况用于描述本技术的实施例,但是相同的技术可以同样地应用于全连接层的特殊情况。
[0007]
在计算系统中,卷积可以使用乘法和累加(mac)单元来计算。现在参考图2,示出了根据现有技术的示例性计算系统。计算系统200可以包括一个或更多个存储器210,所述存储器210通过一个或更多个通信接口230通信地耦合到一个或更多个处理器220。一个或更多个处理器220的一个或更多个乘法和累加单元240可以被配置为对权重矩阵110和输入特征图矩阵120执行乘法和累加功能,以生成输出特征图矩阵130。权重矩阵110、输入特征图矩阵120和输出特征图矩阵130可以存储在一个或更多个存储器中。参考图3、4a和4b,进一步描述了卷积计算。图3示出了根据现有技术的计算卷积的方法。图4a和4b示出了在根据现
有技术的卷积计算中使用的示例性乘法和累加运算。
[0008]
在310处,卷积的计算可以从在第一循环(t=0)期间将当前权重值(0,0,0)和当前输入特征图值(0,0,0)从存储器210加载到处理器220的乘法和累加单元240中开始。在320处,可以使用当前权重值和当前输入特征图值来执行乘法和累加运算,以生成对应的当前累加值。例如,乘法和累加单元210可以在第一循环(t=0)期间累加当前权重值(0,0,0)和当前输入特征图值(0,0,0)的乘积。在330处,可以通过输入特征图的对应输入通道和权重的对应输入通道,来迭代310和320处的运算。在340处,可以通过权重的内核高度和内核宽度以及输入特征图的对应图宽度和图高度,来迭代310至330处的运算。例如,在第二循环(t=1),可以将第二权重值(0,0,1)和第二输入特征图值(0,0,1)从存储器加载到乘法和累加单元240中。当前权重值和当前输入特征图值的乘积410可以添加(420)到来自第一循环的累加值中,并暂存在累加器430中。
[0009]
在350处,来自乘法和累加单元的当前累加值可以输出为对应的输出特征图值。例如,在循环r
×c×
s,乘法和累加单元240的累加值可以在输出特征图的第一输出通道中输出为对应的输出特征图值(1,1,0)。在360处,可以重置乘法和累加单元240中的当前累加值,并且可以通过输入特征图的图宽度和图高度以及权重的对应内核高度和内核宽度,来迭代310至350的运算。例如,如图4a所示,在输入特征图的计算窗口(0,0,0)和(3,3,c-1)中计算与输入特征图值对应的输出特征图值之后,可以如图4b所示在输入特征图的计算窗口(0,1,0)和(3,4,c-1)中计算与输入特征图值对应的输出特征图值,并相应地继续。在370处,310至360的运算可以通过权重的滤波器进行迭代。
[0010]
计算卷积中的每一个乘法和累加运算涉及从一个或更多个存储器加载当前权重值和当前输入特征图值,在其上执行计算,将对应生成的输出特征图值加载到存储器中,以及在每次计算输出特征图值之后丢弃数据。
[0011]
人工智能任务及其类似任务可能需要计算大量的卷积。加载用于计算每一个对应输出特征图值的对应权重值和对应输入特征图值会消耗一个或更多个存储器与一个或更多个处理器之间相当大的通信带宽,和/或会消耗相当大的功率来从存储器读取数据、通过通信链路传输数据、并将结果数据写回存储器。因此,有改善卷积计算技术以用于处理系统的持续需求。


技术实现要素:

[0012]
通过参考以下描述和附图可以最好地理解本技术,所述描述和附图用于说明本技术的实施例,所述实施例针对处理系统中的矩阵数据重用技术。
[0013]
在一个实施例中,计算系统可以包括一个或更多个存储器和一个或更多个处理器。一个或更多个存储器可以被配置以存储第一矩阵和第二矩阵。在一个实现方式中,第一矩阵可以是权重矩阵,并且第二矩阵可以是图像像素值的输入特征图。一个或更多个处理器可以被配置为执行第一矩阵和第二矩阵的卷积,通过多个乘法和累加单元中相应的乘法和累加单元对第一矩阵和第二矩阵中的一者或两者中的相邻值进行数据重用,以使用多个乘法和累加单元生成第三矩阵。
[0014]
在另一个实施例中,计算权重矩阵和输入特征图的卷积的方法可以包括从一个或更多个存储器设备加载权重矩阵的值和输入特征图的值。可以在多个乘法和累加单元中对
权重矩阵的对应值和输入特征图的对应值并行执行乘法和累加运算。权重矩阵和/或输入特征图中的相邻值可以被多个乘法和累加单元的相应乘法和累加单元重用以生成输出特征图。在一个实现方式中,可以将权重矩阵的当前值从存储器加载到多个乘法和累加单元中。在另一个实现方式中,输入特征图的值可以从一个或更多个存储器加载到串行移位缓冲器中。输入特征图中的多个值从串行移位缓冲器的对应移位元件输入到多个乘法和累加单元的对应单元,并且权重矩阵的当前值可以从存储器加载到多个乘法和累加单元中。又在另一实现方式中,可以将输入特征图的当前值从存储器加载到多个乘法和累加单元中。在一个可选的实现方式中,也可以在写回一个或更多个存储器设备之前池化来自多个乘法和累加单元的输出。
[0015]
本技术的实施例有利地减少了用于卷积计算的重复存储器访问。相反地,可以在用于计算卷积的多个乘法和累加单元之间共享存储器访问。可选地,数据值也可以缓冲在处理器中以供多个乘法和累加单元重复使用。输入数据的重用可以有利地减少存储器和处理器之间的通信通道上的瓶颈。通过减少处理器的乘法和累加单元对用于计算卷积的存储器的访问量,输入数据的重用还可以有利地降低功耗。还可以通过在将池化的数据写回存储器之前,在多个乘法和累加单元的输出处执行池化运算,来降低通信通道使用率和/或功耗。
[0016]
提供本概述是为了以简化形式介绍一些概念,这些概念将在详细说明下面进一步被描述。本概述不旨在识别所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
[0017]
本技术的实施例在附图的图中以示例方式而非限制的方式示出,其中相同的附图标记表示类似的元件,并且其中:
[0018]
图1示出了根据现有技术的权重矩阵与输入特征图矩阵的示例性卷积;
[0019]
图2示出了根据现有技术的示例性计算系统;
[0020]
图3示出了根据现有技术的计算卷积的方法;
[0021]
图4a和4b示出了在根据现有技术的卷积计算中使用的示例性乘法和累加运算;
[0022]
图5示出了根据本技术的各方面的用于计算矩阵卷积的系统;
[0023]
图6示出了根据本技术的各方面的在卷积计算中使用的示例性乘法和累加运算;
[0024]
图7示出了根据本技术的各方面的计算卷积的方法;
[0025]
图8示出了根据本技术的各方面的在卷积计算中使用的示例性乘法和累加运算;
[0026]
图9示出了根据本技术的各方面的计算卷积的方法;
[0027]
图10示出了根据本技术的各方面的在卷积计算中使用的示例性乘法和累加运算;
[0028]
图11示出了根据本技术的各方面的计算卷积的方法;
[0029]
图12示出了根据本技术的各方面的用于计算包括输出特征图池化的矩阵卷积的系统。
具体实施方式
[0030]
现在将详细参考本技术的实施例,其示例在附图中示出。尽管将结合这些实施例
描述本技术,然而,应当理解的是,其并不旨在将本技术局限于这些实施例。相反,本发明旨在覆盖可包括在由所附权利要求限定的本发明的范围内的替代、修改和等同物。此外,在本技术的以下详细描述中,阐述了许多具体细节以便提供对本技术的透彻理解。然而,应当理解,本技术可以在没有这些具体细节的情况下实施。在其他实例中,未详细描述众所周知的方法、过程、组件和电路,以免不必要地模糊本技术的各方面。
[0031]
以下本技术的一些实施例是按照例程、模块、逻辑块以及对一个或更多个电子设备内的数据的操作的其他符号表示来呈现的。描述和表示是本领域的技术人员为了将其工作的实质最有效地传达给本领域的其他技术人员所使用的手段。例程、模块、逻辑块和/或类似物在本文中并且通常被设想为导致期望结果的过程或指令的自洽序列。这些过程是包括对物理量的物理操纵的那些过程。通常,尽管不是必需的,但是这些物理操纵采取能够在电子设备中存储、传送、比较和以其他方式操纵的电或磁信号的形式。为了方便起见,并且参考共同使用,参照本技术的实施例,这些信号被称为数据、位、值、元素、符号、字符、术语、数字、字符串等。
[0032]
然而,应当牢记,这些术语应被解释为参考物理操作和数量并且仅仅是方便的标签并且鉴于本领域中常用的术语被进一步解释。除非另有具体说明,否则如从以下讨论中显而易见的,应当理解的是,通过本技术的讨论,利用诸如“接收”等术语的讨论是指诸如操纵和变换数据的电子计算设备的电子设备的动作和处理。该数据被表示为电子设备的逻辑电路、寄存器、存储器等内的物理(例如,电子)量,并且被转换成类似地被表示为电子设备内的物理量的其他数据。
[0033]
在本技术中,析取词的使用旨在包括连接词。定冠词或不定冠词的使用不旨在指示基数。具体地,提及“该”物体或“一个”物体旨在还表示可能的多个此类物体中的一个。术语

包括(comprises)”、

包括(comprising)



包括(includes)



包括(including)

等的使用指定所述要素的存在,但不排除一个或更多个其他要素和/或其组的存在或添加。还应理解的是,虽然在本文中可使用术语第一、第二等来描述各种元件,但是这种元件不应受这些术语限制。这些术语在本文中用于区分一个元件与另一个元件。例如,在不背离本实施例的范围的情况下,第一元件可以被称为第二元件,并且类似地,第二元件可以被称为第一元件。还应理解的是,当元件被称为“耦接”至另一元件时,该元件可直接或间接地连接至另一元件,或者可存在中间元件。相反,当元件被称为

直接连接

至另一元件时,则不存在中间元件。还应理解的是,术语“和/或”包括一个或更多个相关元件的任何和所有组合。还应理解的是,本文中使用的措辞和术语用于描述的目的,并且不应被视为限制性的。
[0034]
现在参考图5,示出了根据本技术的各方面的用于计算矩阵卷积的系统。系统500可以包括通过一个或更多个通信接口520、525耦合到一个或更多个处理器515的一个或更多个存储器505、510。一个或更多个存储器505、510可以被配置为存储第一矩阵(例如,权重矩阵)530、第二矩阵(例如,输入矩阵)535和第三矩阵(例如,输出矩阵)540。一个或更多个处理器515可以是一个或更多个中央处理单元(cpu)、一个或更多个中央处理单元(cpu)的一个或更多个核心、一个或更多个图形处理单元(gpu)、一个或更多个图形处理单元(gpu)的一个或更多个核心、一个或更多个神经处理单元(npu),一个或更多个神经处理单元(npu)的一个或更多个核心、一个或更多个向量处理器、一个或更多个存储器处理单元及其类似的处理器,或其组合。一个或更多个处理器可以包括多个乘法和累加(mac)单元545,可
选地,多个缓冲器550,和可选地,一个或更多个池化电路555。乘法和累加单元545可以在一个或更多个处理器515的硬件中实现,或者可以通过在一个或更多个处理器515上执行的软件作为功能实现。一个或更多个处理器515可以被配置为执行第一矩阵530和第二矩阵535的卷积以生成第三矩阵540。一个或更多个处理器515可以通过用于计算第三矩阵540中的相邻值的多个乘法和累加单元545中的相应的乘法和累加单元,计算第一矩阵530、第二矩阵535或两者中的值的数据重用的卷积。在一个实现方式中,数据重用可以包括从存储器505中读取第一矩阵530的当前值,以供两个或更多个乘法和累加单元545并存使用。在另一个实现方式中,数据重用可以包括串行移位缓冲器550,该串行移位缓冲器550包括多个缓冲元件子集,其中,相对应的缓冲元件子集耦合到相应的乘法和累加单元545。第二矩阵535的当前值可以从存储器510读取并通过串行移位缓冲器550移位。又在另一个实现方式中,数据重用可以包括从存储器510中读取第二矩阵535的当前值,以供两个或更多个乘法和累加单元545并存使用。其他实现方式可以包括本文描述的数据重用实现方式的各种组合。在各种可能的实现方式中,从存储器读取的相邻矩阵值的输入数据可以在两个或更多个乘法和累加单元之间共享,从而可以针对每次对存储器的访问并行地进行计算。相邻矩阵值的输入数据也可以被缓冲以供两个或更多个乘法和累加单元重复使用。
[0035]
现在参考图6和图7,示出了根据本技术的各方面的数据重用包括从存储器向多个乘法和累加单元读取第一矩阵的当前值。如图6所示,处理器可以包括多个乘法和累加单元605、610。为了计算第一矩阵(例如,权重)和第二矩阵(例如,输入特征图)的卷积,输出通道中的每个输出值(例如,输出特征图)需要访问一个滤波器中的第一矩阵的所有值。因此,多个乘法和累加单元605、610可以被配置为接收从存储器读取的第一矩阵的当前数据值。多个乘法和累加单元605、610还可以被配置为从第二矩阵接收多个相邻值中相对应的相邻值。在一个实现方式中,如先前参考图1所述,第一矩阵可以是权重矩阵615,并且第二矩阵可以是输入特征图620。输入特征图620例如可以包括多个图像像素值。由权重矩阵615和输入特征图620的卷积生成的第三矩阵可以是输出特征图625。每个乘法和累加单元605、610可以将权重矩阵615的数据值与输入特征图620中对应的相邻数据值相乘,并且将该乘积与乘法和累加单元605、610中相应的累加器缓冲区的内容630相加,以在输出特征图625中生成当前数据值。
[0036]
参考图7将进一步描述多个乘法和累加单元605、610的运算。在710处,运算可以从将当前权重值(0,0,0)以及多组相邻输入特征图值(0,0,0)和(0,1,0)从存储器加载到相应的乘法和累加单元605、610中开始。例如,可以将权重值(0,0,0)从第一存储器(例如静态随机存取存储器(sram)、电阻式随机存取存储器(rram)、磁性随机存取存储器(mram)、相变随机存取存储器(pcram)或闪存)加载到乘法和累加单元605、610两者中,并且多个相邻输入特征图值(0,0,0)和(0,1,0)可以在第一循环(t=0)期间从第二存储器(例如sram、rram、mram、pcram或闪存)加载到多个乘法和累加单元605、610中相应的乘法和累加单元中。
[0037]
尽管图6示出了两个乘法和累加单元605、610,但是本技术的各方面可以扩展到更多个乘法和累加单元。例如,如果计算窗口是一组四乘四的元件,则最多可以配置十六个乘法和累加单元来接收当前权重值和最多十六个相邻的相应的当前输入特征图值。如果计算窗口是一组六乘六的元件,则最多可配置三十六个乘法和累加单元来接收当前权重值和最多三十六个相邻的相应的当前输入特征值。
[0038]
在720处,可以使用当前权重值和多个当前输入特征图值中相对应的当前输入特征值来执行对应的乘法和累加运算,以在第一循环(t=0)期间由相对应的乘法和累加单元605、610生成对应的当前累加值。因此,在第一循环(t=0)期间,当前权重值在多个乘法和累加单元605、610中被重用。例如,在第一循环期间,第一乘法和累加单元605可以累加权重值(0,0,0)和输入特征图值(0,0,0)的乘积,并且第二乘法和累加单元610可以累加权重值(0,0,0)和相邻输入特征图值(0,1,0)的乘积。权重值(0,0,0)从存储器加载一次并由第一乘法和累加单元605使用,并且也由第二乘法和累加单元610

重用

,而无需从存储器中重新加载该值。
[0039]
在730处,710和720处的运算可以通过输入特征图的对应输入通道和权重的对应输入通道进行迭代。在740处,710至730处的运算可以通过权重的内核高度和内核宽度以及输入特征图中的对应图宽度和图高度进行迭代。例如,在第二循环(t=1),可以从存储器加载第二权重值(0,1,0),还可以从存储器加载第三输入特征图值(0,1,0)和第四输入特征图值(0,2,0)。当前权重值和当前相应的输入特征图值的乘积可以添加到来自第一循环的累加值中。
[0040]
在750处,通过权重的内核高度和内核宽度以及输入特征图中对应的图宽度和图高度进行迭代之后,来自相对应的乘法和累加单元605、610的对应当前累加值可以输出为对应的输出特征图值。例如,在循环r
×c×
s,第一乘法和累加单元605的累加值可以输出为对应的输出特征图值(1,1,0),并且第二乘法和累加单元610中的累加值可以输出为输出特征图的第一输出通道中对应的输出特征图值(1,2,0)。
[0041]
在760处,可以重置相应的乘法和累加单元605、610中的当前累加值,并且可以通过输入特征图的图宽度和图高度以及权重的对应的内核高度和内核宽度来迭代710至750处的运算。在770处,710至760处的运算可以通过权重的滤波器进行迭代,以生成完整的输出特征图625。
[0042]
现在参考图8和图9,示出了根据本技术的各方面的数据重用,该数据重用包括从存储器到与多个乘法和累加单元耦合的串行移位缓冲器中读取第二矩阵的当前值。为了计算第一矩阵(例如,权重)和第二矩阵(例如,输入特征图)的卷积,每个通过输出通道的输出矩阵值(例如,输出特征图)需要访问第二矩阵中的值的相同窗口。扫描窗口通常重叠,需要为相邻的输出值重新加载来自第二矩阵的值。如图8所示,串行移位缓冲器805可以包括多个缓冲元件子集810至820,825至835。多个乘法和累加单元840、845可以被配置为接收从存储器读取的第一矩阵的当前数据值。串行移位缓冲器805可以被配置为接收从存储器读取的第二矩阵的对应数据值。从存储器读取的第二矩阵的数据值可以通过串行移位缓冲器805的缓冲元件810至835连续地移位。相应的缓冲元件子集810至820、825至835的可以耦合到相应的乘法和累加单元840、845。例如,第一缓冲元件子集810至820可以耦合到第一乘法累加单元840,并且第二缓冲元件子集825至835可以耦合到第二乘法和累加单元845。在一个实现方式中,如先前参考图1所述,第一矩阵可以是权重矩阵850,且第二矩阵可以是输入特征图855。在这种情况下,由权重矩阵850和输入特征图855的卷积生成的第三矩阵可以是输出特征图860。每一个乘法和累加单元840、845可以将权重矩阵850中的当前数据值与来自相应的缓冲元件子集810至820,825至835的输入特征图中的相应的相邻数据值相乘,并将乘积与累加器缓冲区的内容相加,以在输出特征图860中生成当前数据值。
[0043]
参考图9将进一步描述多个乘法和累加单元的运算。在910处,该运算可以从将一个或更多个相关联的输入特征图值加载到串行移位缓冲器805中开始,从将当前权重值加载到多个乘法和累加单元840、845中开始,以及从将多个当前输入特征图值从串行移位缓冲器805的相对应的缓冲元件子集加载到相对应的乘法和累加单元840、845中开始。例如,可以通过从存储器移入多个输入特征图值(0,0,0)到(0,1,2)来初始化串行移位缓冲器805。此后,可以将当前权重值(0,0,0)从存储器加载到多个乘法和累加单元840、845中,可以将第一当前输入特征图值(0,0,0)从第一缓冲元件子集810至820加载到第一乘法和累加单元840中,并且可以将第二当前输入特征图值(0,1,0)从第二缓冲元件子集825至835加载到第二乘法和累加单元845中。尽管图8示出了两个乘法和累加单元840、845,但是本技术的各方面可以扩展到更多个乘法和累加单元,以及包括更多个缓冲元件子集的串行移位缓冲器805。同样地,每个子集中缓冲元件的数量可以多于或少于所示的三个。通常,乘法和累加单元的数量以及串行移位缓冲器的每一个子集中的缓冲元件的数量可以基于权重矩阵的参数。
[0044]
在920处,在第一循环(t=0)期间,相对应的乘法和累加单元840、845可以使用当前权重值和多个当前输入特征值中相对应的当前输入特征值来执行对应的乘法和累加运算,以生成对应的当前累加值。因此,在第一循环期间(t=0),当前权重值在多个乘法和累加单元840、845中被重用。例如,在第一循环期间,第一乘法和累加单元840可以累加权重值(0,0,0)与输入特征图值(0,0,0)的乘积,并且第二乘法和累加单元845可以累加权重值(0,0,0)与相邻的输入特征图值(0,1,0)的乘积。权重值(0,0,0)从存储器中加载一次并由第一乘法和累加单元840使用,并且也由第二乘法和累加单元845“重用”,而不需要从存储器中重新加载该值。此外,当输入特征图值移位经过串行移位缓冲器805时,它们也将被重用。
[0045]
在930处,910和920处的运算可以通过输入特征图的对应输入通道和权重的对应输入通道进行迭代。在940处,910至930处的运算可以通过权重的内核高度和内核宽度以及输入特征图中对应的图宽度和对应的图高度进行迭代。例如,在第二循环(t=1),可以从存储器加载第二权重值(0,0,1),并且可以从存储器加载第三和第四输入特征图值(0,0,1)和(0,1,1)。当前权重值和当前相应的输入特征图值的乘积可以添加到来自第一循环的累加值中。
[0046]
在950处,通过权重的内核高度和内核宽度以及输入特征图对应的图宽度和对应的图高度进行迭代之后,来自相对应的乘法和累加单元840、845中对应的当前累加值可以输出为对应的输出特征图值。例如,在循环r
×c×
s,第一乘法和累加单元840的累加值可以输出为对应的输出特征图值(1,1,0),并且第二乘法和累加单元845中的累加值可以输出为输出特征图的第一输出通道中对应的输出特征图值(1,2,0)。
[0047]
在960处,可以重置相应的乘法和累加单元840、845中的当前累加值,并且可以通过输入特征图的图宽度和图高度以及权重的对应内核高度和内核宽度来迭代910至950处的运算。在970处,910至960处的运算可通过权重的滤波器进行迭代,以生成完整的输出特征图860。
[0048]
现在参考图10和11,示出了根据本技术的各方面,数据重用可以包括从存储器将输入特征图的当前值读取到多个乘法和累加单元中。如图10所示,处理器可以包括多个乘法和累加单元1005、1010。多个乘法和累加单元1005、1010可以被配置为接收从存储器读取
的来自第一矩阵的相邻滤波器的当前权重值。多个乘法和累加单元1005、1010还可以被配置为接收来自第二矩阵的当前输入特征图值。在一个实现方式中,如先前参考图1所述,第一矩阵可以是权重矩阵1015,并且第二矩阵可以是输入特征图1020。在这种情况下,由权重矩阵1015和输入特征图1020的卷积生成的第三矩阵可以是输出特征图1025。每一个乘法和累加单元1005、1010可以将权重矩阵1015中的相对应的当前数据值与输入特征图1020中的当前数据值相乘,并将乘积与乘法和累加单元1005、1010中的相对应的累加器缓冲区1030、1035的内容相加,以生成输出特征图1025中的数据值。
[0049]
参考图11将进一步描述多个乘法和累加单元的运算。在1110处,运算可以从将多个滤波器的当前权重值(0,0,0;0)(0,0,0;1)和当前输入特征图值(0,0,0)从存储器加载到相应的乘法和累加单元1005、1010中开始。例如,第一权重值(0,0,0;0)可以从第一存储器加载到第一乘法和累加单元1005中,第二权重值(0,0,0;1)可以加载到第二乘法和累加单元1010中,并且当前输入特征图值(0,0,0)可以在第一循环(t=0)期间从第二存储器加载到乘法和累加单元1005、1010两者中。尽管图10示出了两个乘法和累加单元1005、1010,但是本技术的各方面可以扩展到更多个乘法和累加单元。
[0050]
在1120处,相应的乘法和累加单元1005、1010在第一循环(t=0)期间可以使用相应的当前权重值和当前输入特征图值来执行对应的乘法和累加运算,以生成对应的当前累加值。因此,在第一循环(t=0)期间,在多个乘法和累加单元1005、1010中重用当前输入特征值。例如,在第一循环期间,第一乘法和累加单元1005可以累加第一滤波器中的第一权重值(0,0,0;0)与输入特征图值(0,0,0)的乘积,并且第二乘法和累加单元1010可以累加第二滤波器(0,0,0;1)中的第一权重值与输入特征图值(0,0,0)的乘积。输入特征图值(0,0,0)从存储器中加载一次并由第一乘法和累加单元1005使用,并且也由第二乘法和累加单元1010

重用

,而不需要从存储器中重新加载该值。
[0051]
在1130处,1110和1120处的运算可以通过输入特征图的对应输入通道和权重的对应输入通道进行迭代。在1140处,1110至1130处的运算可以通过权重的内核高度和内核宽度,以及输入特征图中的对应图宽度和图高度进行迭代。例如,在第二循环(t=1),可以从存储器加载第三权重值(0,0,1;0)和第四权重值(0,0,1;1),并且可以从存储器加载第二输入特征图值(0,0,1)。相邻滤波器的对应当前权重值与当前输入特征图值的乘积可以添加到来自第一循环的相应的累加值中。
[0052]
在1150处,通过权重的内核高度和内核宽度以及输入特征图中对应的图宽度和图高度进行迭代之后,来自相应的乘法和累加单元1005、1010的对应当前累加值可以输出为对应的输出特征图值。例如,在循环r
×c×
s,第一乘法和累加单元1005中的累加值可以输出为对应的输出特征图值(1,1,0),并且第二乘法和累加单元1010中的累加值可以输出为输出特征图的第一输出通道中对应的输出特征图值(1,2,0)。
[0053]
在1160处,可以重置相应的乘法和累加单元1005、1010中的当前累加值,并且可以通过输入特征图的图宽度和图高度以及权重的对应内核高度和内核宽度来迭代1110至1150处的运算。在1170处,1110至1160处的运算可以通过权重的滤波器进行迭代,以生成完整的输出特征图1025。
[0054]
现在参考图12,示出了根据本技术的各方面的用于计算矩阵卷积的系统,该系统包括输出特征图池化。如上文根据图5至图11所述,该系统可以包括多个乘法和累加单元
1205至1220。多个乘法和累加单元1205-1220可以被配置用于数据重用:该数据重用包括从存储器将第一矩阵的当前值读取到多个乘法和累加单元中;该数据重用包括从存储器将第二矩阵的当前值读取到与多个乘法和累加单元耦合的串行移位缓冲器中;该数据重用包括从存储器将输入特征图的当前值读取到多个乘法和累加单元中,或者该数据重用包括以上情况的组合。该系统还可以包括与多个乘法和累加单元1205至1220耦合的池化电路。池化电路1225可以被配置为池化多个相邻的输出特征图值1230,以生成后池化输出特征图1235的对应池化输出特征图值。例如,池化电路1225可以是最大池化电路,该最大池化电路被配置为从相对应的多个乘法和累加单元1205至1220接收多个输出特征图值(0,0,0)、(0,1,0)、(1,0,0)、(1,1,0),并选择多个输出特征图值(0,0,0)、(0,1,0)、(1,0,0)、(1,1,0)中的最大值,以输出为后池化输出特征图1235的最大池化输出特征图值(0,0,0)。
[0055]
根据本技术的实施例,乘法和累加单元的数据重用可以有利地减少计算系统的存储器和处理单元之间通信通道上的带宽使用。数据重用的实施例还可以有利地降低存储器设备和/或处理单元的功耗。存储器访问可以在多个乘法和累加单元之间共享,这允许对存储器的每次访问并行地进行许多计算。可选地,数据值还可以有利地缓冲在处理器中,以供多个乘法和累加单元重复使用。在将数据写回存储器之前,也可以有利地执行池化运算。
[0056]
以下示例涉及特定技术实施例,并指出在实现这些实施例时可使用或以其他方式组合的特定特征、元素或步骤。
[0057]
示例1包括一种系统,该系统包括:一个或更多个存储器被配置为存储第一矩阵和第二矩阵;以及一个或更多个处理器可以被配置为执行所述第一矩阵和所述第二矩阵的卷积,通过多个乘法和累加单元中相应的乘法和累加单元对所述第一矩阵和所述第二矩阵中的一者或两者中的相邻值进行数据重用,以使用所述多个乘法和累加单元生成第三矩阵。
[0058]
示例2包括根据示例1所述的系统,其中,所述第一矩阵的当前值从所述一个或更多个存储器加载到所述多个乘法和累加单元中。
[0059]
示例3包括根据示例2所述的系统,还包括:串行移位缓冲器,该串行移位缓冲器包括多个缓冲元件子集,其中,相应的缓冲元件子集被耦合到相应的乘法和累加单元;以及,其中,所述第二矩阵的值从所述一个或更多个存储器被加载到所述串行移位缓冲器中。
[0060]
示例4包括根据示例1所述的系统,其中,所述第二矩阵中的当前值从所述一个或更多个存储器被加载到所述多个乘法和累加单元中。
[0061]
示例5包括根据示例1所述的系统,其中:所述第一矩阵包括多个权重滤波器,每个权重滤波器包括多个权重输入通道,每个权重输入通道由权重内核高度和权重内核宽度表征;第二矩阵包括多个输入特征图输入通道,每个输入特征图输入通道由输入特征图高度和输入特征图宽度表征;第三矩阵包括多个输出特征图输出通道,每个输出特征图输出通道由输出特征图高度和输出特征图宽度表征。
[0062]
示例6包括根据示例5所述的系统,其中,所述一个或更多个存储器包括:静态随机存取存储器sram、电阻式随机存取存储器rram、磁性随机存取存储器mram、相变随机存取存储器pcram或闪存,其被配置为存储所述多个权重滤波器;以及静态随机存取存储器sram、电阻式随机存取存储器rram、磁性随机存取存储器mram、相变随机存取存储器pcram或闪存,其被配置为存储多个输入特征图输入通道。
[0063]
示例7包括根据示例6所述的系统,其中:所述多个输入特征图输入通道包括多个
图像像素值。
[0064]
示例8包括根据示例1所述的系统,还包括耦合到所述多个乘法和累加单元的一个或更多个池化电路,其中所述一个或更多个池化电路被配置为将来自所述多个乘法和累加单元的多个对应值池化,以生成对应的池化值。
[0065]
示例9包括一种方法,该方法包括:从一个或更多个存储器设备加载第一矩阵的值和第二矩阵的值;以及通过多个乘法和累加单元中相应的乘法和累加单元对所述第一矩阵和所述第二矩阵中的一者或两者中的相邻值进行数据重用,在所述多个乘法和累加单元中对所述第一矩阵的对应值和所述第二矩阵的对应值执行乘法和累加运算,以生成第三矩阵。
[0066]
示例10包括示例9所述的方法,其中:第一矩阵包括多个权重滤波器,每个权重滤波器包括多个权重输入通道,每个权重输入通道由权重内核高度和权重内核宽度表征;以及第二矩阵包括输入特征图,该输入特征图包括多个输入特征图输入通道,每个输入特征图输入通道由输入特征图高度和输入特征图宽度表征。
[0067]
示例11包括示例10所述的方法,其中,权重滤波器的当前值从一个或更多个存储器设备被加载到多个乘法和累加单元中。
[0068]
示例12包括示例11所述的方法,还包括:将当前权重值从一个或更多个存储设备加载到多个乘法和累加单元中,以及将多个相邻的当前输入特征图值从所述一个或更多个存储器设备加载到相应的乘法和累加单元中:使用所述当前权重值和所述多个当前输入特征图值中对应的当前输入特征图值执行对应的乘法和累加运算,通过所述相应的乘法和累加单元,以生成对应的当前累加值;通过输入特征图的对应输入通道和权重的对应输入通道进行迭代;通过权重的内核高度和内核宽度,以及输入特征图中对应的图宽度和图高度进行迭代;输出对应的当前累加值作为对应的输出特征图值;重置所述对应的当前累加值,并通过输入特征图的图宽度和图高度,以及权重的对应内核高度和内核宽度进行迭代;并且通过权重的滤波器进行迭代。
[0069]
示例13包括示例11所述的方法,还包括:通过串行移位缓冲器移位输入特征图中的值;并且将多个所述输入特征图中的值从串行移位缓冲器的对应移位元件输入到多个乘法和累加单元中对应的乘法和累加单元。
[0070]
示例14包括示例13所述的方法,还包括:将相关联的输入特征图值加载到串行移位缓冲器中,将当前权重值加载到多个乘法和累加单元中,以及将多个当前输入特征图值从串行移位缓冲器的相应的缓冲元件子集加载到相应的乘法和累加单元中;使用所述当前权重值和所述串行移位缓冲器的相应的缓冲元件子集中多个当前输入特征图值中对应的当前输入特征图值执行对应的乘法和累加运算,通过相应的乘法和累加单元,以生成对应的当前累加值;通过输入特征图的对应输入通道和权重的对应输入通道进行迭代;通过权重的内核高度和内核宽度,以及输入特征图中对应的图宽度和图高度进行迭代;输出对应的当前累加值作为对应的输出特征图值;重置所述对应的当前累加值,并通过输入特征图的图宽度和图高度,以及权重的对应内核高度和内核宽度进行迭代;并且通过权重的滤波器进行迭代。
[0071]
示例15包括示例10所述的方法,其中,输入特征图的当前值从一个或更多个存储器设备加载到多个乘法和累加单元中。
[0072]
示例16包括示例15所述的方法,还包括:将多个当前权重值加载到相应的多个乘法和累加单元中,并将当前输入特征图值加载到多个乘法和累加单元中;使用相应的当前权重值和当前输入特征图值执行对应的乘法和累加运算,以通过相应的乘法和累加单元生成对应的当前累加值;通过输入特征图的对应输入通道和权重的对应输入通道进行迭代;通过权重的内核高度和内核宽度,以及输入特征图中对应的图宽度和图高度进行迭代;输出对应的当前累加值作为对应的输出特征图值;重置所述对应的当前累加值,并通过输入特征图的图宽度和图高度,以及权重的对应内核高度和内核宽度进行迭代;并且通过权重的滤波器进行迭代。
[0073]
示例17包括根据示例10所述的方法,其中,输入特征图包括多个图像像素数据。
[0074]
示例18包括根据示例9所述的方法,还包括:将从所述多个乘法和累加单元输出的值作为第三矩阵的对应值加载到所述一个或更多个存储器设备。
[0075]
示例19包括根据示例9所述的方法,还包括:池化从多个乘法和累加单元输出的值;以及将池化的值作为池化的第三矩阵的对应值加载到一个或更多个存储器设备。
[0076]
为了说明和描述的目的,已经给出了对本技术的特定实施例的前述描述。它们并非旨在详尽无遗或将本发明限制于所公开的精确形式,并且显然,根据上述教导可以进行许多修改和变化。所选择的和所描述的实施例是为了最好地解释本技术的原理及其实际应用,从而使本领域的其他技术人员能够最好地利用本技术和实现经过各种修改的各种实施例,这些修改适合预期的特定用途。本发明的范围由本发明所附的权利要求及其等同物限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献