使用存储器内运算的卷积加速器的制作方法

专利2022-06-29  106


本申请主张于2018年11月30日提出申请的美国临时专利申请案第62/773,194号的权益,所述美国临时专利申请案并入本案供参考。

本发明是有关于存储器内运算装置(in-memorycomputingdevice),且更具体而言,是有关于被安排用于执行卷积的存储器内运算装置。



背景技术:

一种类型的神经网络被称为卷积神经网络(convolutionalneuralnetwork,cnn)。在卷积神经网络中,网络的一或多个层使用核矩阵(kernelmatrix)在输入矩阵(inputmatrix)上的卷积来生成输出矩阵(outputmatrix)。输入矩阵可包括高度为h、宽度为w且深度为c的图像文件案或特征图。此输入矩阵可被表征为在h-w平面中具有坐标的多个c位向量(c-bitvector)。核可包括具有与输入矩阵不同尺寸(高度r、宽度s、深度c)的滤波器的元素。输出矩阵可表示滤波后的影像或输出的特征图。输出矩阵也可具有与输入矩阵不同的尺寸(高度e、宽度f、深度m)。在一些系统中,将单个输入矩阵与不同的核(例如,m个滤波器)进行卷积以产生深度输出矩阵。

卷积是一种需要大量计算机资源及数据移动的密集运算。参见陈(chen)等人所作的「eyeriss:一种用于深度卷积神经网络的节能可重新配置加速器(eyeriss:anenergy-efficientreconfigurableacceleratorfordeepconvolutionalneuralnetworks)」国际固态电路会议(ieeeisscc),2016年1月31日至2月4日。

期望提供能够降低计算卷积(包括卷积神经网络中的卷积)所需的成本及计算资源的技术。



技术实现要素:

阐述了一种技术,在所述技术中部署存储器内运算以支持卷积(包括作为卷积神经网络的一部分的卷积)的执行,藉此显著减少所需的数据移动量及计算机资源。

存储器内运算是一种组织在存储器内运算装置中的存储器存储单元可用于计算及储存的方式。举例而言,乘积和函数(sum-of-productsfunction)的权重可储存在存储器内运算装置的存储器存储单元中。阵列的存储器存储单元的电性特性使乘积和函数得以实现。参见例如在2018年12月18日提出申请的共同未决美国专利申请案第16/224,602号(mxic2266-1),所述美国专利申请案如同在本文中完全阐述一般并入本文供参考。

本文中所述的技术包括一种支持核矩阵在输入矩阵上的卷积以使用存储器内运算来计算输出矩阵的方法,以及一种可用于所述目的的装置。在典型的卷积中,来自输入矩阵的输入向量与核矩阵的元素的不同组合(例如,不同的核向量)组合,用于计算输出矩阵的元素。在一些实施例中,给定的输入矩阵可与多个核矩阵进行卷积。

本文中所述的方法包括将核矩阵或多个核矩阵的元素的相应组合储存在存储器内运算存储单元阵列中的不同存储单元集合中。对于给定的输入向量,一种方法包括将多个组合中的核矩阵的元素的组合储存在存储单元阵列中的相应存储单元集合中,例如储存在阵列的相应行中。然后,例如通过将输入向量的元素施加至阵列的列而将来自输入矩阵的输入向量的元素施加至储存核矩阵的元素的组合的存储单元集合。所述方法包括感测因应于输入向量的元素自存储单元集合(例如,每一行)的输出,以产生表示输入向量对输出矩阵的多个元素的贡献的数据。

通过将来自包括所述首先提及的输入向量的序列中的输入矩阵的输入向量施加至储存核矩阵的元素的组合的存储单元集合、并且对于序列中的每个输入向量感测自存储单元集合的输出以产生表示对输出矩阵的贡献的输出数据,可将所述方法扩展为遍历全部或部分输入矩阵。可组合每个输入向量的输出数据以产生输出矩阵。

因此,在本文中所述的实施例中,为了执行卷积,将来自输入矩阵的输入向量的序列施加至存储器内运算阵列。将输入向量中的每一者并行(例如,在阵列的相应列上)施加至不同存储单元集合(例如,阵列中的多个行)以在相同时间间隔期间进行计算。感测因应于每个输入向量而生成的输出以产生表示所述输入向量对输出矩阵的多个元素的贡献的数据集合。可将针对输入矩阵上的输入向量的序列而生成的数据集合进行组合以产生输出矩阵。

本文中描述一种装置的实施例,所述装置包括被配置成进行存储器内运算的存储器存储单元阵列。所述阵列中的多个存储器存储单元集合(例如,多个行)储存核矩阵或多个核矩阵的元素的相应组合。所述相应组合可对应于在卷积的多个跨步(stride)中施加至输入向量的核矩阵的不同元素集合。

在一些实施例中,包括第一存取线集合。每一第一存取线可操作地耦合至不同存储器存储单元集合(例如,沿着一列)中的每一者中的对应存储器存储单元,使得可并行地将输入电压施加至不同存储器存储单元集合(例如,不同行)中的存储单元。包括第二存取线集合。每一第二存取线可操作地耦合至不同存储器存储单元集合中的对应存储器存储单元集合(例如,在单个行中)。

驱动器电路电性耦合至第一存取线集合,且被配置成断言表示在对应的第一存取在线的输入向量的元素的信号。此使得能够将输入向量并行地施加至多个不同存储器存储单元集合中的每一者。

感测电路电性耦合至第二存取线集合。在所述集合中的第二存取线中的每一者上,感测电路感测对应存储器存储单元集合的输出的组合,以产生表示每一输入向量对输出矩阵的元素的贡献的数据集合。

在所述实施例中,存储器存储单元阵列包括多行存储单元,例如沿位线排列的存储单元。不同存储单元集合中的每个存储单元集合可由单行中的存储单元构成。感测电路可被设置成感测表示存储单元集合中的存储单元的组合电导的电流。可包括逻辑电路,所述逻辑电路组合在输入矩阵上生成的数据集合以产生输出矩阵。

描述了一种用于在输入矩阵上卷积核矩阵的装置,其中将来自输入矩阵的输入向量与核矩阵的元素的多个组合进行组合,以计算输出矩阵。所述装置包括:存储器存储单元阵列,包括多个列及多个行,将核矩阵的多个元素的组合中的元素的组合储存在所述多个行中的相应行中;驱动器电路,被配置成将来自输入矩阵的输入向量的元素施加至所述多个列中的相应列;以及感测电路,用于感测来自相应行的输出数据,以产生表示所述输入向量对输出矩阵的元素的贡献的输出数据。逻辑可耦合至所述驱动器电路及所述感测电路,以将包括所述输入向量的所述输入矩阵的输入向量的序列施加至所述驱动器电路,并产生表示包括所述输入向量的所述序列中的输入向量对所述输出矩阵的元素的贡献的输出数据。逻辑可耦合至所述感测电路以组合输入向量的序列的输出数据,以产生所述输出矩阵的元素。

在各种实施例中,所使用的存储器存储单元可包括两端存储单元(two-terminalcell),所述两端存储单元包括可编程电阻存储器存储单元。在一些实施例中,所使用的存储器存储单元可包括三端存储单元(three-terminalcell),例如电荷俘获存储器存储单元。

在本文中所述的系统中,存储单元阵列设置在第一集成电路上,所述第一集成电路可使用适于形成存储单元阵列的工艺来制造。逻辑可设置在第一集成电路外部的电路上,例如设置在第二集成电路上,所述第二集成电路可使用适于逻辑电路的工艺来制造,以将给定输入矩阵的输入向量的序列提供至用于存储单元阵列的驱动器电路。此外,位于第一集成电路外部(例如,在第二集成电路上、或者在另一个集成电路上)的逻辑接收由感测电路产生的数据集合,并且组合序列中的每个输入向量的数据集合以产生输出矩阵。

如在本文中所述的用于加速卷积的技术可被实施以便支持卷积神经网络。举例而言,核矩阵在输入矩阵上的卷积可包括卷积神经网络的层。

通过阅读各附图、详细说明、及随附权利要求可看出本发明的其他方式及优点。

附图说明

图1为卷积运算中的特定阶段的图示,并且可出于在本文中使用的术语的目的而被提及。

图2为图1所示卷积运算中的不同阶段的图示。

图3为经配置用于加速如在本文中所述的卷积运算的存储器存储单元阵列的简化附图。

图4为用于加速如在本文中所述的卷积的系统的方块图。

图5示出存储器存储单元阵列,其中所述阵列中的不同存储器存储单元集合储存多个核矩阵的元素的相应组合。

图6为用于加速卷积的系统的简化系统方块图。

图7为用于加速卷积的系统的替代实施例的简化系统方块图。

图8为示出用于加速如在本文中所述的卷积的方法的流程图。

【符号说明】

10:输入矩阵

11:核矩阵/核

12:输出矩阵

14:核

15:窗口

16:窗口

20:输出值

21:输出值

101、102、103、104、109:第二存取线

111、112、113、114、118:第一存取线

120:存储器存储单元

125:输出矩阵

126:下一窗口

411、412、413、421、422、423:存储单元

454:感测电路

455:列译码器/驱动器

456:行译码器

458:数据缓冲器

460:收集电路

461:一组累加器

462:存储器

481、482:第一存取线

491、492、493:第二存取线

501、502、503、504、509:第二存取线

511、512、513、514、519:第二存取线

520:存储器存储单元

521、522、523、524、528:第一存取线

600:第一集成电路

601:存储器内运算单元

602:逻辑/收集及累加逻辑/收集及累加单元

603:本地存储器

610:主机

620:大规模存储器

700:第一集成电路

701:存储器内运算单元

702:收集及累加单元

703:本地存储器

705:主机

706:大规模存储器

710:第二集成电路

720:第三集成电路

801、802、803、804、805、806:步骤

c:深度

e:高度

f:宽度

f1、fc:滤波器向量

f1-1,-1、f1-1,0、f1-1,1、f10,-1、f11,1:向量

fm-1,-1、fm-1,0、fm-1,1、fm0,-1、fm1,1:向量

filter1:三维滤波器

filterm:核矩阵/核/第m核

h:高度

m:深度

m11、m12、m13、m14、m21、m22、m23、m24、m31、m32、m33、m34:输出元素

r:高度

s:宽度

striden:跨步

stridex:跨步

w:宽度/存储器存储单元

w11、w12、w13、w21、w22、w23:权重

x1、……、xc:输入向量

x1、x2:输入/信号输入

y1、y2、y3:电流/数字值/乘积和输出

具体实施方式

参照图1至图8提供对本发明实施例的详细说明。

图1及图2示出了卷积运算的阶段。在图1中,输入矩阵10具有高度h、宽度w及深度c。在二维输入矩阵的情形中,深度c可为1。在此实例中的核矩阵11包括三维滤波器filter1。核矩阵11具有高度r、宽度s及深度c。执行卷积以计算输出矩阵12。在此实例中,输出矩阵12具有高度e、宽度f及深度m。在如图1所示的阶段中,对于给定的跨步stridex及给定的三维滤波器filter1而计算输入矩阵10中输入向量的逐元素相乘(element-wisemultiplication)。在如图2所示的阶段中,对于给定的跨步striden及给定的核矩阵filterm而计算输入矩阵中输入向量的逐元素相乘。

在卷积中,通常以扫描模式(scanpattern)将核施加至具有水平跨步及垂直跨步的序列中的输入矩阵。在每个特定跨步中,核的元素与在跨步的位置处的窗口中的输入矩阵的元素集合相组合。每个跨步的计算结果可用于计算输出矩阵12中的单个输出值(例如,20),或者可依据卷积函数而以许多其他方式使用。在图1所示的实例中,对于stridex而言,将核施加至输入矩阵在窗口15中的元素集合。在输入矩阵的左上角处的输入向量x1:xc包括来自输入矩阵的每个层的元素。用于stridex的目的的此输入向量x1:xc与来自核矩阵11的左上角的滤波器向量f1:fc组合。窗口15内的每个输入向量与包括核11的元素的组合的对应滤波器向量组合。来自窗口15内的每个输入向量的结果根据卷积的函数被组合,以在输出矩阵12中产生输出值20。

对于输入核的每个跨步,使用输入向量的不同组合作为通过输入矩阵的核扫描的窗口,以在输出矩阵中产生对应的值。然而,输入向量中的每一者可用于多个跨步中用于计算多个输出值。举例而言,若核矩阵为3×3×c矩阵,则其可由各自具有c个元素的长度的9个核向量来表示。对于为1的水平跨步及为1的垂直跨步,输入向量中的每一者可以由9个不同跨步的9个核向量中的每一个来利用。

在图2中,表示了卷积的一个阶段,在所述阶段中,将核filterm应用于跨步striden中以计算输出矩阵12中的输出值21。在此实例中,应用filterm来计算输出矩阵的层m中的元素。在跨步striden中,将核14施加至输入矩阵的窗口16中,并且结果被组合以计算输出矩阵的输出值21。因此,此示出多个核(在此实例中为m个核)可与输入矩阵10进行卷积以计算具有多个层级(在此实例中为m个层级)的输出矩阵,其中m个核中的每一者被用于为输出矩阵12的m个层级中的一个对应层级以计算输出值。

因此,在卷积中,每个输入向量在卷积的多个跨步中与核组合,其中每个跨步可用于计算输出矩阵的一个元素(通常)。在其中使用给定输入向量的卷积的每个跨步中,存在与其组合的核的元素集合。对于每个跨步而言,施加至输入向量的核的元素集合位于核的不同位置中。

在如本文中所述的卷积加速器中,将与特定输入向量组合的核中的多个元素集合(即,用于其中使用特定输入向量的每一跨步的集合)储存在存储单元阵列的不同存储单元集合(例如,不同行中的存储单元)中。不同存储单元集合的输出表示输入向量对在卷积中使用所述输入向量的多个跨步中的相应一者的输出的贡献。可并行地感测不同存储单元集合的输出,并将所述输出提供至逻辑电路,所述逻辑电路收集并组合所述输出以形成输出矩阵。

图3示出存储器存储单元「w」(例如,120)的阵列。第一存取线111、112、113、114、......、118(例如,字线)的集合与所述阵列一起设置,其中每一第一存取线可操作地耦合至所述阵列的一列中的存储器存储单元,使得其在单个列中耦合至阵列的多个行中的每一者中的对应存储器存储单元。第二存取线101、102、103、104、......、109(例如,位线)的集合与所述阵列一起设置。每一第二存取线在单个行中可操作地耦合至阵列的多个列中的每一者中的对应存储器存储单元集合。

在此种排列方式中,耦合至第一存取线集合的每一行中的存储单元包括储存核矩阵的元素的组合的存储器存储单元集合。对于此实例而言,核矩阵可被表征为滤波器f1的长度为c的向量集合(例如,图1所示的f1至fc),其在r,s平面中具有坐标,如下所示:

f1-1,-1f1-1,0f1-1,1

f10,-1f10,0f10,1

f11,-1f11,0f11,1

因此,核矩阵包括9个向量。在输入矩阵上水平跨步及垂直跨步为1的卷积中,为了计算输出矩阵中的不同值,输入矩阵的每个向量可与9个向量中的每一者进行组合。举例而言,依据正被计算的具体卷积,边缘上的一些输入向量可与不同数量的向量进行组合。

图3中的存储单元阵列在一行中储存核的一个向量的元素。因此,对于此实例中的3×3核而言,使用9个存储单元集合来储存9个向量。可操作地耦合至第二存取线101的行中的存储单元形成在坐标-1,-1处储存第一滤波器f1的向量f1-1,-1的元素的存储单元集合。可操作地耦合至第二存取线102的行中的存储单元形成在坐标-1,0处储存第一滤波器f1的向量f1-1,0的元素的存储单元集合。可操作地耦合至第二存取线103的行中的存储单元形成在坐标-1,1处储存第一滤波器f1的向量f1-1,1的元素的存储单元集合。可操作地耦合至第二存取线104的行中的存储单元形成在坐标0,-1处储存第一滤波器f1的向量f10,-1的元素的存储单元集合。在图3中未示出第五行至第八行。阵列的包括可操作地耦合至第二存取线109的存储单元的最后一行形成在坐标1,1处储存第一滤波器f1的向量f11,1的元素的存储单元集合。

为了执行存储器内运算,在此实例中,在假定深度c为8的情况下,驱动器电路将输入向量x1:xc施加至第一存取线111至118的集合。感测电路耦合至第二存取线101至109的集合,以针对不同第二存取在线的多个存储单元集合中的每一者来感测存储器存储单元在其对应的存储单元集合中的电导的组合。

举例而言,每个第二存取在线的电流表示由在存储器存储单元中储存在行中的权重实施的滤波器向量与施加至第一存取在线的输入向量的逐元素乘积和(element-wisesum-of-products)。可通过将9个不同的感测电路并行地用于9个滤波器向量中的每一者而同时计算此逐元素乘积和。

出于举例说明的目的,图3示出输出矩阵125的一部分,包括3列及4行元素m11至m34。在一个实例中,输出元素m22可等于9个滤波器向量的组合乘以9个输入向量的窗口的和,其中输入矩阵中坐标2,2处的输入向量为窗口的中心。

因此,对于输入矩阵上以坐标2,2为中心的窗口而言,第二存取线101上的输出是用于计算输出元素m33的部分和(partialsum)。第二存取线102上的输出是用于计算输出元素m32的部分和。第二存取线103上的输出是用于计算输出元素m31的部分和。第二存取线104上的输出是用于计算输出元素m23的部分和,等等。第二存取线109上的输出是用于计算输出元素m11的部分和。因此,9个第二存取线的输出表示输入向量对9个不同跨步的计算的贡献。

对于如在126处所示的以坐标2,3为中心的下一窗口而言,第二存取线101上的输出是用于计算输出元素m34的部分和。第二存取线102上的输出是用于计算输出元素m33的部分和。第二存取线103上的输出是用于计算输出元素m32的部分和。第二存取线104上的输出是用于计算输出元素m24的部分和,等等。第二存取线109上的输出是用于计算输出元素m12的部分和。

为了计算输出矩阵的元素的值,当输入向量的序列被施加至用于存储器内运算的存储单元阵列时,必须收集并累加来自每个输入向量的对所述值有贡献的部分和。可使用数字逻辑及草稿型存储器(scratchpadmemory)来执行此收集及累加部分和的函数。

图4示出存储器存储单元阵列的简化实例,所述存储器存储单元阵列包括c个列(对应于列线的数目)及n个行(对应于核向量的数目)。在此例示中,所述阵列包括位于第一行中的存储单元411及421、位于第二行中的存储单元412及422以及位于第三行中的存储单元413及423。当然,阵列的实施例可包括许多列及许多行。

存储器存储单元可为电阻式ram,其中存储器存储单元的电阻表示如上所述的核的元素(例如,滤波器中的权重)。阵列中的每一存储器存储单元储存对应于滤波器向量的元素的权重因子wnm,且可分别表示为储存权重w11、w12、w13、w21、w22及w23。

第一存取线(例如,481、482)的集合耦合至第一类型的存储器存储单元的相应列中的存储器存储单元。第二存取线(例如,491、492及493)的集合耦合至第一类型的存储器存储单元的相应行中的存储器存储单元。第一存取线(例如,481、482)的集合耦合至列译码器/驱动器455,且第二存取线的集合耦合至行译码器456。在第一存取线的集合中的第一存取在线的信号可表示至相应列的输入x1、x2。在此实例中,列译码器/驱动器455在第一存取线481上断言信号输入x1,且在第一存取线482上断言信号输入x2,此可表示输入向量的元素。

感测电路454经由行译码器456耦合至第二存取线的集合中的相应第二存取线。在第二存取线的集合中的特定第二存取线(例如,491、492、493)处感测到的电流(例如,y1、y2、y3)可表示输入x1、x2乘以相应的权重因子wnm的乘积和。

因此,在此实例中,第二存取线491上的存储单元集合因应于输入向量而在第二存取在线产生组合电流,所述输入向量在感测时产生数字值y1=x1*w11 x2*w21。自线492输出的数字值为y2=x1*w12 x2*w22。自线493输出的数字值为y3=x1*w13 x2*w23。乘积和输出y1、y2、y3可储存在数据缓冲器458的输出数据路径中。

输出数据路径耦合至收集电路460,所述收集电路460可包括一组多任务器,所述一组多任务器可被控制来对准多个群组中的给定输入向量的输出,以便在计算多个输出值时与来自其他输入向量的输出进行组合。所述多个群组可被施加至一组累加器461以计算输出矩阵值。然后可将输出矩阵值施加至存储器462。

图5示出类似于图3所示的存储器存储单元阵列,其出于针对存储器存储单元的一个阵列中的多个核(如图1中所示的m个核)进行存储器内运算的目的而扩展,所述存储器存储单元阵列可被配置成同时将输入向量施加至所述多个核。在此实例中,示出了存储器存储单元「w」(例如,520)的阵列。第一存取线521、522、523、524、......、528(例如,字线)的集合与所述阵列一起设置,其中每一第一存取线可操作地耦合至所述阵列的一列中的存储器存储单元,使得其耦合至阵列的所述多个行中的每一者中的对应存储器存储单元。用于三维滤波器(filter1)的第二存取线501、502、503、504、......、509的集合以及用于第m核(filterm)的第二存取线511、512、513、514、......、519的集合与所述阵列一起设置。在阵列中包括用于核filter2至filterm-1的许多第二存取线,但在图中未示出。在此实例中,每一第二存取线在单个行中可操作地耦合至阵列的多个列中的每一者中的对应存储器存储单元集合。

在此种排列方式中,耦合至所述第一存取线集合的每一行中的存储单元包括储存多个核矩阵的元素的组合的存储器存储单元集合。对于此实例而言,如在图3中所示的filter1的三维滤波器可被表征为滤波器f1的长度为c的向量集合(例如,图1所示的f1至fc),其在r,s平面中具有坐标,如下所示:

f1-1,-1f1-1,0f1-1,1

f10,-1f10,0f10,1

f11,-1f11,0f11,1

filterm的核矩阵可被表征为滤波器fm的长度为c的向量集合(例如,图1所示的f1至fc),其在r,s平面中具有坐标,如下所示:

fm-1,-1fm-1,0fm-1,1

fm0,-1fm0,0fm0,1

fm1,-1fm1,0fm1,1

因此,m个核矩阵中的每一者都包括9个向量。在输入矩阵上的水平跨步及垂直跨步为1的卷积中,为了计算输出矩阵中的不同值,输入矩阵的每个向量可与m个核中的每一者中的9个向量中的每一者进行组合(9*m个组合)。依据正被计算的具体卷积,边缘上的一些输入向量例如可与不同数量的向量进行组合。

图5中的存储单元阵列将核的一个向量的元素储存在一行中。因此,对于此实例中的3×3核而言,使用9个存储单元集合来储存每一核的9个向量。第二存取线501至509上的存储单元储存第一滤波器f1的向量,如参照图3的对应存储单元所述。可操作地耦合至第二存取线511的行中的存储单元形成在坐标-1,-1处储存第m滤波器fm的向量fm-1,-1的元素的存储单元集合。可操作地耦合至第二存取线512的行中的存储单元形成在坐标-1,0处储存第m滤波器fm的向量fm-1,0的元素的存储单元集合。可操作地耦合至第二存取线513的行中的存储单元形成在坐标-1,1处储存第m滤波器fm的向量fm-1,1的元素的存储单元集合。可操作地耦合至第二存取线514的行中的存储单元形成在坐标0,-1处储存第m滤波器fm的向量fm0,-1的元素的存储单元集合。在图3中未示出第五行至第八行。阵列中包括可操作地耦合至第二存取线519的存储单元的最后一行形成在坐标1,1处储存第m滤波器fm的向量fm1,1的元素的存储单元集合。

为了执行存储器内运算,驱动器电路将输入向量xi:xc施加至第一存取线521至528的集合。在此实例中,在假定深度c为8。感测电路耦合至第二存取线501至509的集合且耦合至第二存取线511至519的集合,以针对不同第二存取在线的多个存储单元集合中的每一者来感测存储器存储单元在其对应的存储单元集合中的电导的组合。

如上所述,可将所感测到的输出提供至数字逻辑以收集并累加输出,从而计算输出矩阵的元素。

在一些实施例中,可扩展存储单元阵列以储存用于多个卷积(例如,用于卷积神经网络的多个层的卷积)的核数据。

图6示出结合如本文中所述的存储器内运算的系统,所述系统适于执行卷积神经网络或利用卷积的其他数据处理运算。所述系统包括第一集成电路600,所述第一集成电路600包括存储器内运算单元601,所述存储器内运算单元601包括被配置用于存储器内运算的存储单元阵列,例如参照图3至图5所述。存储器内运算单元的输出被施加至逻辑602,逻辑602收集并累加或以其他方式操纵存储器内运算的数据输出以产生输出矩阵。输出矩阵储存在第一集成电路600上的本地存储器603中。在此实例中的第一集成电路600被耦合至主机610,主机610可为被配置用于机器学习的数据处理系统或利用复杂的卷积运算的其他系统。举例而言,主机610可为图像处理器。主机610可耦合至大规模存储器620,例如dram或其他高速或高容量存储器。主机可包括计算机程序,所述计算机程序实施或支持经由例如寻址及命令序列(addressingandcommandsequence)耦合至驱动器电路及感测电路的逻辑,所述寻址及命令序列被施加至存储器内运算单元601以将来自dram或输入矩阵数据的其他来源的输入矩阵的输入向量的序列施加至驱动器电路,并且与输入向量的序列相协调,并且在存储器内运算单元601上的收集及累加逻辑602产生表示包括所述输入向量的序列中的输入向量对输出矩阵的元素的贡献的输出数据,并组合输入向量的序列的输出数据以产生输出矩阵的元素。

在此实例中,包括存储器存储单元阵列的存储器内运算单元601与用于操纵输出的逻辑电路(收集及累加单元602及本地存储器603)制造于同一集成电路上。主机610及大规模存储器620可在集成电路600之外实施。

在一些实施例中,可在单个集成电路或单个多芯片封装上实施所有该些组件。

图7示出了结合如本文所述的存储器内运算的系统的另一实施例,其适于执行卷积神经网络或利用卷积的其他数据处理运算。此为多种配置形式的代表,其中支持卷积运算的逻辑结合软件设置在指令处理器上,设置在特定用途逻辑中,设置在可编程门阵列上的数据流程图中,等等。

在此实施例中,在第一集成电路700上实施存储器内运算单元701。第一集成电路700具有来自例如施加至第二集成电路710的感测放大器的数字输出。在此实例中,第二集成电路710包括用于操纵输出的逻辑电路,所述逻辑电路包括收集及累加单元702及本地存储器703。同样,主机705及大规模存储器706可在第三集成电路720上实施。可使用被优化用于实施逻辑电路的制造设施来制造集成电路710及720。另一方面,可使用针对所使用的存储器阵列的类型而优化的制造设施来制造集成电路700。

图8为示出一种用于加速核矩阵在输入矩阵上的卷积的方法的流程图,其中将来自输入矩阵的输入向量与核矩阵的元素的各种组合进行组合,以计算输出矩阵。阵列中的不同存储单元集合可用于实施元素的各种组合。在准备计算时,所述方法包括将一或多个核的向量储存在阵列中的不同存储单元集合中,其中核的每个向量包括核矩阵的元素的不同组合(801)。为了执行计算,依序自存储器读取来自输入矩阵的输入向量(802)。将输入向量的序列提供至阵列的输入驱动器(803)。此使得将来自输入矩阵的每个输入向量的元素并行地施加至阵列中的不同存储单元集合(804)。接下来,感测来自不同存储单元集合中的每一者的输出,以针对每个输入向量产生表示对输出矩阵的多个元素的贡献的数据集合(805)。最后,组合序列中每个输入向量的数据集合以产生输出矩阵(806)。

通过使用此工艺,输入矩阵只能被施加至存储器内运算单元一次。此可消除为了计算卷积的不同跨步自输入矩阵重复读取及写入向量的需要。因此,系统可以较低的成本及较低的带宽数据路径运作,以在计算资源之间移动输入矩阵及输出矩阵。

举例而言,在将卷积实施为卷积神经网络的层的实施例中,可使用单个存储器内运算单元来重复此循环,在所述单个存储器内运算单元中,针对卷积神经网络的多个层,将多个核或核集合排列在大规模存储单元阵列中。一旦计算出了输出向量作为卷积神经网络的第一层的结果,所述算法便可循环以向卷积神经网络的另一层提供输入矩阵。作为另一选择,被产生作为存储器内运算单元的结果的输出矩阵可被配置为卷积神经网络的下一层的输入矩阵。

作为利用如在本文中所述配置的存储器内运算的结果,提供了一种用于执行卷积的系统,所述系统可显著减少所需的数据移动量。此可提高指令周期,降低执行运算所需的功率,并降低在卷积期间移动数据的带宽要求。

尽管通过参照以上所详述的优选实施例及实例公开了本发明,然而应理解,这些实例旨在为说明性的而非具有限制意义。应预期,对于本领域技术人员而言将显而易见的是存在将落于本发明的精神及以下权利要求范围内的润饰及组合。


技术特征:

1.一种用于加速核矩阵在输入矩阵上的卷积的方法,包括:

将所述核矩阵的元素的组合储存在一存储单元阵列中的相应一存储单元集合中;

将来自所述输入矩阵的一输入向量的元素施加至储存所述核矩阵的所述元素的组合的所述存储单元集合;以及

感测因应于所述输入向量的所述元素自所述存储单元集合的输出,以产生表示所述输入向量对所述输出矩阵的多个元素的贡献的数据。

2.如权利要求1所述的方法,包括将来自包括所述首次提及的输入向量的序列中的所述输入矩阵的输入向量施加至储存所述核矩阵的所述元素的组合的所述存储单元集合,以及针对所述序列中的每个输入向量,感测来自所述存储单元集合的输出以产生表示对所述输出矩阵的贡献的输出数据,并且对表示所述序列中的所述输入向量中的每一者对所述输出矩阵的贡献的所述输出数据进行组合以产生所述输出矩阵。

3.如权利要求1所述的方法,其中所述存储单元集合设置在包括多行存储单元的存储单元阵列中,并且其中每一存储单元集合由所述多行中的单个行中的存储单元构成。

4.如权利要求1所述的方法,其中所述存储单元集合包括可编程电阻存储器存储单元。

5.如权利要求1所述的方法,其中所述存储单元集合包括电荷俘获存储器存储单元。

6.如权利要求1所述的方法,其中所述感测包括感测所述存储单元集合中的每一者中的存储单元因应于所述输入向量的组合电导。

7.如权利要求1所述的方法,其中所述输出针对所述存储单元集合中的每一者表示所述输入向量的所述元素与所述核矩阵的对应元素的组合的乘积的相应和。

8.如权利要求2所述的方法,包括将所述输出数据提供至一数字逻辑,以及针对所述序列中的所述输入向量中的每一者组合所述数字逻辑中的所述输出数据以产生所述输出矩阵。

9.一种用于在输入矩阵上卷积核矩阵的装置,包括:

一存储器存储单元阵列,包括多个列及多个行,将所述核矩阵的元素的组合储存在所述多个行中的相应行中;

一驱动器电路,被配置成将来自所述输入矩阵的输入向量的元素施加至所述多个列中的相应列;以及

一感测电路,用于感测来自所述相应行的输出数据,以产生表示所述输入向量对所述输出矩阵的元素的贡献的输出数据;

一耦合至所述驱动器电路及所述感测电路的逻辑,用于将包括所述输入向量的所述输入矩阵的输入向量的序列施加至所述驱动器电路,并产生表示包括所述输入向量的所述序列中的输入向量对所述输出矩阵的元素的贡献的输出数据,以及

一耦合至所述感测电路的逻辑,用于组合所述输入向量的序列的所述输出数据,以产生所述输出矩阵的元素。

10.如权利要求9所述的装置,其中所述相应行的所述输出数据表示所述相应列上的所述输入向量的所述元素与储存在所述相应行中的所述核矩阵的所述元素的组合的乘积的和。

技术总结
本发明公开了一种用于加速核矩阵在输入矩阵上的卷积,以用于使用存储器内运算来计算输出矩阵的方法,上述方法涉及在存储单元阵列中的不同存储单元集合中储存核矩阵或多个核矩阵的元素的相应组合。为了执行卷积,将来自输入矩阵的输入向量的序列施加至阵列。将输入向量中的每一者并行施加至不同存储单元集合以在相同时间间隔期间进行计算。感测因应于每个输入向量而产生的来自不同存储单元集合中的每一者的输出,以产生表示所述输入向量对输出矩阵的多个元素的贡献的数据集合。使用在所述输入矩阵上产生的数据集合来产生输出矩阵。

技术研发人员:林昱佑;李峰旻
受保护的技术使用者:旺宏电子股份有限公司
技术研发日:2019.09.24
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-15852.html

最新回复(0)