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

用于逐深度卷积的存储器内计算架构

文献发布时间:2024-04-18 20:01:23


用于逐深度卷积的存储器内计算架构

相关申请的交叉引用

本申请要求于2021年6月29日提交的美国申请No.17/361,807的优先权,该申请被转让给本申请受让人并通过援引整体纳入于此。

引言

本公开的各方面涉及执行机器学习任务,且尤其涉及用于在存储器中执行逐深度可分离卷积的存储器内计算架构和数据流。

机器学习通常是产生经训练模型(例如,人工神经网络、树或其他结构)的过程,其表示对先验已知的训练数据集合的广义拟合。将经训练模型应用于新数据会产生推断,这可被用于获得关于新数据的洞察。在一些情形中,将模型应用于新数据被描述为对新数据“运行推断”。

随着机器学习的使用激增以用于实现各种机器学习(或人工智能)任务,已经出现了对更高效地处理机器学习模型数据的需求。在一些情形中,可使用专用硬件(诸如机器学习加速器)来增强处理系统处理机器学习模型数据的能力。然而,此类硬件需要空间和功率,这在处理设备上并非总是可得到的。例如,“边缘处理”设备(诸如移动设备、常开设备、物联网(IoT)设备等)必须平衡处理能力与功率和封装约束。此外,加速器可能需要跨共用数据总线移动数据,这会导致大量功率使用并将等待时间引入到共享数据总线的其他进程中。因此,正在考虑处理系统的其他方面来处理机器学习模型数据。

存储器设备是处理系统的另一方面的一个示例,其可被用于通过所谓的存储器内计算(CIM)过程来执行机器学习模型数据的处理。遗憾的是,CIM过程在没有附加硬件元件(诸如数字乘法和累加电路(DMAC)和相关外围设备)的情况下可能不能够执行复杂模型架构(诸如逐深度可分离卷积神经网络)的处理。这些附加硬件元件在其实现中使用额外的空间、功率和复杂性,这往往会降低利用存储器设备作为附加计算资源的优势。即使在处理系统的辅助方面具有可用于执行不能在存储器中直接执行的处理的DMAC的情况下,将数据移动到这些辅助方面和从这些辅助方面移动数据也需要时间和功率,并因此减轻了CIM过程的益处。

相应地,需要用于执行更广泛的机器学习模型架构(诸如逐深度可分离卷积神经网络)的存储器内计算的系统和方法。

简要概述

某些方面提供了一种用于在神经网络中进行信号处理的装置。该装置一般包括:被配置为用于逐深度(DW)神经网络计算的第一内核的第一存储器内计算(CIM)单元集合,第一CIM单元集合包括CIM阵列的一个或多个第一列和第一多行;被配置为用于该神经网络计算的第二内核的第二CIM单元集合,第二CIM单元集合包括该一个或多个第一列和该CIM阵列的第二多行,其中第一多行不同于第二多行。该装置还可包括该CIM阵列的被配置为用于逐点(PW)神经网络计算的第三内核的第三CIM单元集合。

某些方面提供了一种用于在神经网络中进行信号处理的方法。该方法一般包括:经由多个内核执行多个DW卷积操作,该多个内核是使用CIM阵列的一个或多个第一列上的多个CIM单元群来实现的;以及基于来自该多个DW卷积操作的输出来生成用于PW卷积操作的输入信号。该方法还包括:基于这些输入信号来执行该PW卷积操作,该PW卷积操作是经由使用该CIM阵列的一个或多个第二列上的CIM单元群实现的内核来执行的。

某些方面提供了一种具有指令的非瞬态计算机可读介质,这些指令在由处理系统的一个或多个处理器执行时使该处理系统执行一种在神经网络中进行信号处理的方法。该方法一般包括:经由多个内核执行多个DW卷积操作,该多个内核是使用CIM阵列的一个或多个第一列上的多个CIM单元群来实现的;以及基于来自该多个DW卷积操作的输出来生成用于PW卷积操作的输入信号。该方法还包括:基于这些输入信号来执行该PW卷积操作,该PW卷积操作是经由使用该CIM阵列的一个或多个第二列上的CIM单元群实现的内核来执行的。

其他方面提供了:处理系统,其被配置成执行前述方法以及本文中所描述的那些方法;非瞬态计算机可读介质,其包括在由处理系统的一个或多个处理器执行时使该处理系统执行前述方法以及本文中所描述的那些方法的指令;计算机程序产品,其被实施在计算机可读存储介质上,该计算机可读存储介质包括用于执行前述方法以及本文中进一步描述的那些方法的代码;以及处理系统,其包括用于执行前述方法以及本文中进一步描述的那些方法的装置。

以下描述和相关附图详细阐述了一个或多个方面的某些解说性特征。

附图简述

附图描绘了该一个或多个方面中的某些方面,并且因此不被认为限制本公开的范围。

图1A-1D描绘了各种类型的神经网络的示例。

图2描绘了常规卷积操作的示例。

图3A和3B描绘了逐深度可分离卷积操作的示例。

图4解说了被配置成用于执行机器学习模型计算的示例存储器内计算(CIM)阵列。

图5A和5B描绘了示例性位单元(其可表示图4中的位单元)的附加细节。

图6描绘了CIM阵列操作期间各种信号的示例时序图。

图7描绘了由CIM阵列实现的示例性卷积层架构。

图8A和8B解说了根据本公开的某些方面的包括CIM阵列的CIM架构。

图9解说了根据本公开的某些方面的用于经由图8B的CIM架构进行信号处理的示例操作。

图10解说了根据本公开的某些方面的被划分成子组块以改善处理效率的CIM阵列。

图11解说了根据本公开的某些方面的用重复内核实现以改善处理准确性的CIM阵列。

图12是解说根据本公开的某些方面的用于在神经网络中进行信号处理的示例操作的流程图。

图13解说了根据本公开的某些方面的被配置成执行用于在神经网络中进行信号处理的操作的示例电子设备。

为了促成理解,在可能之处使用了相同的附图标记来指定各附图共有的相同要素。构想了一个方面的要素和特征可有益地被纳入到其他方面中而无需进一步引述。

详细描述

本公开的各方面提供了用于执行机器学习模型(包括逐深度(DW)可分离卷积神经网络)的存储器内计算(CIM)的装置、方法、处理系统和计算机可读介质。一些方面提供了在CIM阵列上实现的两阶段卷积技术。例如,这两个阶段中的一者可包括使用在CIM阵列上实现的内核的DW卷积操作,并且这两个阶段中的另一者可包括使用在CIM阵列上实现的内核的逐点(PW)卷积操作。

例如,某些方面涉及针对要被用于DW卷积的不同内核所配置的CIM阵列的CIM单元,其中这些内核是在CIM阵列的不同行和相同列上实现的。内核可使用如本文中所描述的阶段办法来处理。实现内核的单元的输出可以耦合至模数转换器(ADC)。DW计算的结果可被输入到非线性激活电路以进行进一步处理,并被输入回相同的CIM阵列以进行逐点计算,如本文中更详细地描述的。本文中所描述的各方面提供了按需为DW卷积操作配置任何CIM阵列的灵活性,同时与常规实现相比增加了可以在CIM阵列上实现的内核数目,如本文中更详细地描述的。

基于CIM的机器学习(ML)/人工智能(AI)任务加速器可被用于各种各样的任务,包括图像和音频处理。此外,CIM可以基于各种类型的存储器架构,诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)(例如,基于如图5中的SRAM单元)、磁阻随机存取存储器(MRAM)、以及电阻随机存取存储器(ReRAM),并且可以附连到各种类型的处理单元,包括中央处理器单元(CPU)、数字信号处理器(DSP)、图形处理器单元(GPU)、现场可编程门阵列(FPGA)、AI加速器等等。一般而言,CIM可以有益地减少“存储墙”问题,即数据进出存储器比数据计算消耗更多的功率。因此,通过执行存储器内计算,可以实现大量功率节约。这对于各种类型的电子设备(诸如较低功率边缘处理设备、移动设备等)尤其有用。

例如,移动设备可包括被配置成用于存储数据和存储器内计算操作的存储器设备。移动设备可被配置成基于由该移动设备生成的数据(诸如由该移动设备的相机传感器生成的图像数据)来执行ML/AI操作。移动设备的存储器控制器单元(MCU)因此可将权重从另一机载存储器(例如,闪存或RAM)加载到存储器设备的CIM阵列中,并分配输入特征缓冲器和输出(例如,激活)缓冲器。处理设备随后可通过对例如输入缓冲器中的层进行加载并用加载到CIM阵列中的权重对该层进行处理来开始图像数据的处理。该处理可对图像数据的每一层重复,并且输出(例如,激活)可被存储在输出缓冲器中并随后由移动设备用于ML/AI任务,诸如面部识别。

神经网络、深度神经网络和深度学习的简要背景

神经网络被组织成各层互连的节点。一般而言,节点(或神经元)是计算发生的位置。例如,节点可将输入数据与放大或减弱该输入数据的权重(或系数)集合组合。输入信号的放大或减弱因此可被认为是关于网络试图学习的任务的对各种输入的相对重要性的指派。一般而言,对输入权重乘积求和(或累加),并随后将该总和传递通过节点的激活函数,以确定该信号是否以及在多大程度上应当进一步行进通过网络。

在最基本的实现中,神经网络可具有输入层、隐藏层和输出层。“深度”神经网络通常具有一个以上的隐藏层。

深度学习是一种训练深度神经网络的方法。一般而言,深度学习将网络的输入映射到网络的输出,并因此有时被称为“通用近似器”,因为它可以学习近似任何输入x和任何输出y之间的未知函数f(x)=y。换言之,深度学习找到用以将x变换成y的正确f。

更具体地,深度学习基于不同的特征集合(其是来自先前层的输出)来训练每一层节点。因此,随着深度神经网络的每一个相继层,特征变得更加复杂。深度学习之所以强大是因为它能够从输入数据中渐进地提取更高级别的特征并通过学习表示每一层中相继更高抽象级别的输入从而构建输入数据的有用特征表示来执行复杂任务,诸如对象识别。

例如,如果向深度神经网络的第一层呈递视觉数据,则第一层可学习识别输入数据中的相对简单的特征(诸如边缘)。在另一示例中,如果向深度神经网络的第一层呈递听觉数据,则第一层可学习识别输入数据中的在特定频率中的频谱功率。深度神经网络的第二层随后可基于第一层的输出来学习识别特征组合,诸如对于视觉数据识别简单形状或对于听觉数据识别声音组合。更高层随后可学习识别视觉数据中的复杂形状或听觉数据中的词语。再高层可学习识别常见视觉对象或口述短语。因此,深度学习架构在被应用于具有自然阶层结构的问题时可能表现得特别好。

神经网络中的层连通性

神经网络(诸如深度神经网络)可被设计成具有层之间的各种连通性模式。

图1A解说了全连通神经网络102的示例。在全连通神经网络102中,第一层中的节点可将它的输出传达给第二层中的每一个节点,使得第二层中的每个节点将从第一层中的每一个节点接收输入。

图1B解说了局部连通神经网络104的示例。在局部连通神经网络104中,第一层中的节点可以连接到第二层中有限数目的节点。更一般而言,局部连通神经网络104的局部连通层可被配置成使得一层中的每个节点将具有相同或相似的连通性模式,但其连接强度(或权重)可具有不同的值(例如,110、112、114和116)。局部连通的连通性模式可能在更高层中产生空间上相异的感受野,因为给定区域中的更高层节点可接收到通过训练被调谐为到网络的总输入的受限部分的属性的输入。

一种类型的局部连通神经网络是卷积神经网络。图1C解说了卷积神经网络106的示例。卷积神经网络106可被配置成使得与针对第二层中的每个节点的输入相关联的连接强度被共享(例如,108)。卷积神经网络非常适合于其中输入的空间位置有意义的问题。

一种类型的卷积神经网络是深度卷积网络(DCN)。深度卷积网络是多个卷积层的网络,其可进一步配置有例如池化层和归一化层。

图1D解说了DCN 100的示例,其被设计成识别由图像捕捉设备130生成的图像126中的视觉特征。例如,如果图像捕捉设备130是安装在交通工具中的相机,则DCN 100可以用各种监督式学习技术进行训练,以识别交通标志以及甚至交通标志上的数字。同样地,DCN100可被训练用于其他任务,诸如标识车道标记或标识交通信号灯。这些仅仅是一些示例任务,并且许多其他任务是可能的。

在该示例中,DCN 100包括特征提取区段和分类区段。在接收到图像126之际,卷积层132将卷积内核(例如,如图2中所描绘和描述的)应用于图像126,以生成第一组特征图(或中间激活)118。一般而言,“内核”或“滤波器”包括被设计成强调输入数据通道的不同方面的多维权重阵列。在各个示例中,“内核”和“滤波器”可以可互换地使用,以指代在卷积神经网络中应用的权重集合。

第一组特征图118随后可由池化层(例如,最大池化层(未示出))进行子采样以生成第二组特征图120。池化层可减小第一组特征图118的大小,同时维护大部分信息以提高模型性能。例如,第二组特征图120可由池化层从28x28下采样到14x14。

该过程可通过许多层重复。换言之,第二组特征图120可经由一个或多个后续卷积层(未示出)被进一步卷积,以生成一组或多组后续特征图(未示出)。

在图1D的示例中,第二组特征图120被提供给全连通层124,该全连通层124进而生成输出特征向量128。输出特征向量128的每个特征可包括与图像126的可能特征(诸如,“标志”、“60”和“100”)相对应的数字。在一些情形中,softmax(软最大化)函数(未示出)可将输出特征向量128中的数字转换为概率。在此类情形中,DCN 100的输出122是图像126包括一个或多个特征的概率。

在训练DCN 100之前,DCN 100所产生的输出122可能是不正确的。因此,可计算输出122与先验已知的目标输出之间的误差。例如,这里,目标输出是关于图像126包括“标志”和数字“60”的指示。利用已知的目标输出,DCN 100的权重随后可通过训练来调整,以使得DCN 100的后续输出122达成该目标输出。

为了调整DCN 100的权重,学习算法可针对权重计算梯度向量。梯度可指示在权重以特定方式被调整情况下误差将增加或减少的量。权重随后可被调整以减小误差。这种调整权重的方式可被称为“反向传播”,因为其涉及在DCN 100的层中的“反向传递(backwardpass)”。

在实践中,权重的误差梯度可能是在少量示例上计算的,从而计算出的梯度近似于真实误差梯度。这种近似方法可被称为随机梯度下降法。随机梯度下降法可被重复,直到整个系统可达成的误差率已停止下降或直到误差率已达到目标水平。

在训练后,可向DCN 100呈递新图像,并且DCN 100可生成各个特征在新图像中的推断(诸如分类)或概率。

用于卷积神经网络的卷积技术

卷积通常被用来从输入数据集中提取有用特征。例如,在(诸如以上所描述的)卷积神经网络中,卷积使得能够使用内核和/或滤波器(其权重是在训练期间自动习得的)来提取不同的特征。所提取的特征随后被组合以做出推断。

激活函数可在卷积神经网络的每一层之前和/或之后被应用。激活函数通常是确定神经网络的节点的输出的数学函数(例如,方程)。因此,激活函数基于节点的输入是否与模型的预测相关来确定该节点是否应当传递信息。在一个示例中,在y=conv(x)(即,y=x的卷积)的情况下,x和y两者都可一般地被认为是“激活”。然而,就特定的卷积操作而言,x也可以被称为“预激活”或“输入激活”,因为它存在于特定卷积之前,而y可以被称为输出激活或特征图。

图2描绘了传统卷积的示例,其中12像素x12像素x3通道输入图像使用5x5x3卷积内核204和为1的步幅(或步长)进行卷积。结果所得的特征图206是8像素x8像素x1通道。如该示例中可见,与输出数据相比,传统卷积可能会改变输入数据的维度(这里,从12x12到8x8像素),包括通道维度(这里,从3到1通道)。

减少计算负担(例如,以每秒浮点运算次数(FLOP)来衡量)和与包括卷积层的神经网络相关联的参数数目的一种方式是对卷积层进行因式分解。例如,(诸如图2中所描绘的)空间可分离卷积可被因式分解为以下两个分量:(1)逐深度卷积,其中每个空间通道通过逐深度卷积独立地进行卷积(例如,空间融合);以及(2)逐点卷积,其中所有空间通道都是线性组合的(例如,通道融合)。图3A和3B中描绘了逐深度可分离卷积的示例。一般而言,在空间融合期间,网络从空间面中学习特征,而在通道融合期间,网络跨通道学习这些特征之间的关系。

在一个示例中,可使用用于空间融合的3x3内核和用于通道融合的1x1内核来实现可分离逐深度卷积。具体而言,通道融合可使用迭代遍历深度为d的输入图像中的每一个单点的1x1xd内核,其中该内核的深度d通常与该输入图像的通道数目相匹配。经由逐点卷积的通道融合对于高效计算的降维是有用的。应用1x1xd内核并在内核之后添加激活层可以给予网络增加的深度,这可以提高其性能。

图3A和3B描绘了逐深度可分离卷积操作的示例。

具体而言,在图3A中,12像素x12像素x3通道输入图像302与包括各自具有5x5x1维度的三个单独内核304A-C的滤波器进行卷积,以生成8像素x8像素x3通道的特征图306,其中每个通道由304A-C之中的个体内核生成。

随后,特征图306使用其中内核308(例如,内核)具有维度1x1x3的逐点卷积操作进行进一步卷积,以生成8像素x8像素x1通道的特征图310。如该示例中所描绘的,特征图310具有降低的维度(1通道对3通道),其允许利用特征图310进行更高效的计算。在本公开的一些方面,内核304A-C和内核308可使用相同的存储器内计算(CIM)阵列来实现,如本文中更详细地描述的。

尽管图3A和3B中的逐深度可分离卷积的结果与图2中的常规卷积基本上类似,但是计算数目显著减少,并且因此可分离卷积在网络设计允许的情况下提供了显著的效率增益。

尽管图3B中未作描述,但是可以使用多个(例如,m个)逐点卷积内核308(例如,滤波器的个体分量)来增加卷积输出的通道维度。因此,可以生成例如m=256个1x1x3内核308,其各自输出8像素x8像素x1通道特征图(例如,310),并且这些特征图可被堆叠以得到结果所得的8像素x8像素x256通道特征图。由此产生的通道维度的增加为训练提供了更多的参数,这可以提高卷积神经网络识别(例如,输入图像302中的)特征的能力。

示例存储器内计算(CIM)架构

图4解说了根据本公开的各方面的被配置成用于执行机器学习模型计算的示例性存储器内计算(CIM)阵列400。在该示例中,CIM阵列400被配置成使用人工神经网络的混合模拟/数字操作来模拟MAC操作。因此,如本文中所使用的,术语乘法和加法可以指此类模拟操作。CIM阵列400可被用来实现本文中所描述的处理技术的各方面。

在所描绘的方面,CIM阵列400包括预充电字线(PCWL)425a、425b和425c(统称为425)、读字线(RWL)427a、427b和427c(统称为427)、模数转换器(ADC)410a、410b和410c(统称为410)、数字处理单元413、位线418a、418b和418c(统称为418)、PMOS晶体管411a-111i(统称为411)、NMOS晶体管413a-413i(统称为413)和电容器423a-423i(统称为423)。

与神经网络层相关联的权重可被存储在CIM阵列400的SRAM单元中。在该示例中,二进制权重在CIM阵列400的SRAM位单元405a-405i中示出。在PCWL 425a-c上提供输入激活(例如,可以是输入向量的输入值)。

乘法发生在CIM阵列400的与位线相关联的每个位单元405a-405i中,并且对于一列,所有位单元乘法结果的累加(求和)发生在同一位线上。每个位单元405a-405i中的乘法采用相当于对应激活和权重的AND(与)运算的运算形式,其中结果作为电荷存储在对应的电容器423上。例如,仅在激活为1(在此,因为使用了PMOS,所以对于激活为1,PCWL为零)且权重为1的情况下,才产生1的乘积,并因此在电容器423上产生电荷。

例如,在累加阶段,RWL 427被切换到高,使得电容器423上的任何电荷(其基于对应的位单元(权重)和PCWL(激活)值)可以在对应的位线418上累加。随后由ADC 410将经累加电荷的电压值转换成数字值(其中,例如,输出值可以是指示总电荷是否大于参考电压的二进制值)。这些数字值(输出)可以作为输入提供给机器学习模型的另一方面,诸如下一层。

当预充电字线(PCWL)425a、425b和425c上的激活例如为1、0、1时,位线418a-c的总和分别对应于0+0+1=1、1+0+0=1和1+0+1=2。ADC 410a、410b和410c的输出被传递到数字处理单元413上以供进一步处理。例如,如果CIM 100正在处理多比特权重值,则可对ADC110的数字输出求和以生成最终输出。

示例性的3x3 CIM电路400可用于例如对三元素内核(或滤波器)执行高效的三通道卷积,其中每个内核的权重对应于三列中的每一列的元素,使得对于给定的三元素感受野(或输入数据块),三个通道中的每一者的输出被并行计算。

值得注意的是,虽然图4描述了使用SRAM单元的CIM的示例,但是也可以使用其他存储器类型。例如,动态随机存取存储器(DRAM)、磁阻随机存取存储器(MRAM)和电阻随机存取存储器(ReRAM或RRAM)同样可以在其他实施例中使用。

图5A描绘了示例性位单元500的附加细节。

图5A的各方面可以是图4的示例性方面,或者以其他方式与图4的方面相关。具体而言,位线521类似于位线418a,电容器523类似于图4的电容器423,读字线527类似于图4的读字线427a,并且预充电字线525类似于图4的预充电字线425a,PMOS晶体管511类似于图1的PMOS晶体管411a,而NMOS晶体管513类似于图1的NMOS晶体管413。

位单元500包括静态随机存取存储器(SRAM)单元501(其可以表示图4的SRAM位单元405a)、以及晶体管511(例如,PMOS晶体管)和晶体管513(例如,NMOS晶体管)和耦合到接地的电容器523。尽管PMOS晶体管用于晶体管511,但是可以使用其他晶体管(例如,NMOS晶体管)来代替PMOS晶体管,并对它们相应的控制信号进行对应的调整(例如,取反)。这同样适用于本文所描述的其他晶体管。根据本公开的各方面,附加晶体管511和513被包括在内以实现存储器内计算阵列。在一个方面,SRAM单元501是常规的六晶体管(6T)SRAM单元。

对于多次激活,位单元中权重的编程可以执行一次。例如,在操作中,SRAM单元501经由写字线(WWL)516在节点517和519处仅接收一比特的信息。例如,在写入期间(当WWL216为高时),如果写位线(WBL)229为高(例如,“1”),则节点217设置为高,并且节点219设置为低(例如,“0”);或者如果WBL 229为低,则节点217设置为低,并且节点219设置为高。相反,在写入期间(当WWL 216为高时),如果写位条线(WBBL)231为高,则节点217设置为低,并且节点219设置为高;或者,如果WBBL 229为低,则节点217设置为高,并且节点219设置为低。

对权重的编程可以继之以激活输入和乘法步骤,以根据对应的乘积对电容器充电。例如,晶体管511通过存储器内计算阵列的预充电字线(PCWL)525由激活信号(PCWL信号)激活,以执行乘法步骤。随后,晶体管513由通过存储器内计算阵列的另一字线(例如,读字线(RWL)527)的信号激活,以执行来自位单元500的乘法值与阵列的其他位单元的累加,诸如以上参照图4所描述的。

如果节点517为“0”(例如,当所存储的权重值是“0”时),电容器523在低PCWL指示晶体管511的栅极处的激活为“1”的情况下将不被充电。相应地,没有电荷被提供给位线521。然而,如果与权重值相对应的节点517为“1”并且PCWL被设置为低(例如,当激活输入为高时),则导通起短路作用的PMOS晶体管511,从而允许电容器523被充电。在电容器523被充电之后,晶体管511截止,因此电荷存储在电容器523中。为了将电荷从电容器523移至位线521,NMOS晶体管513由RWL 527导通,以使得NMOS晶体管513起短路作用。

表1解说了诸如可由图5A中的位单元500实现的根据AND运算设置的存储器内计算阵列操作的示例。

表1:AND运算

表1的第一列(激活)包括传入激活信号的可能值。

表1的第二列(PCWL)包括根据本公开的各方面的激活被设计成实现存储器内计算功能的晶体管的PCWL值。因为该示例中的晶体管511是PMOS晶体管,所以PCWL值是激活值的取反。例如,存储器内计算阵列包括晶体管511,该晶体管511由通过预充电字线(PCWL)525的激活信号(PCWL信号)激活。

表1的第三列(单元节点)包括存储在SRAM单元节点中的权重值,其例如对应于权重张量中的权重(诸如可被用于卷积操作)。

表1的第四列(电容器节点)示出了将作为电荷储存在电容器上的所得乘积。例如,电荷可被存储在电容器523的节点或电容器423a-423i之一的节点处。当晶体管513被激活时,来自电容器523的电荷被移至位线521。例如,参考晶体管511,当单元节点517处的权重为“1”(例如,高电压)并且输入激活为“1”(因此PCWL为“0”)时,电容器523被充电(例如,电容器的节点为“1”)。对于所有其他组合,电容器节点将具有0值。

图5B描绘了另一示例性位单元550的附加细节。

位单元550与图5A中的位单元500的不同之处主要基于包括耦合到附加晶体管554的附加预充电字线552。

表2解说了诸如可由图5B中的位单元550实现的与表1类似的存储器内计算阵列操作的示例,不同之处在于其根据XNOR运算设置。

表2:XNOR运算

表2的第一列(激活)包括传入激活信号的可能值。

表2的第二列(PCWL1)包括根据本公开的各方面激活被设计成实现存储器内计算功能的晶体管的PCWL1值。这里同样,晶体管511是PMOS晶体管,PCWL1值是激活值的取反。

表2的第三列(PCWL2)包括根据本公开的各方面激活被设计成实现存储器内计算功能的另外的晶体管的PCWL2值。

表2的第四列(单元节点)包括存储在SRAM单元节点中的权重值,其例如对应于权重张量中的权重(诸如可被用于卷积操作)。

表2的第五列(电容器节点)示出了将作为电荷储存在电容器(诸如电容器523)上的所得乘积。

图6描绘了存储器内计算(CIM)阵列操作期间各种信号的示例时序图600。

在所描绘的示例中,时序图600的第一行示出了预充电字线PCWL(例如,图4的425a或图5A的525)变低。在该示例中,低PCWL指示激活“1”。当PCWL为低时,PMOS晶体管导通,这允许电容器充电(在权重为“1”的情况下)。第二行示出读字线RWL(例如,图4的读字线427a或图5A的527)。第三行示出读位线RBL(例如,图4的418或图5A的521),第四行示出模数转换器(ADC)读数信号,并且第五行示出复位信号。

例如,参照图5A的晶体管511,当读字线RWL为高时,来自电容器523的电荷逐渐传递到读位线RBL上。

总和电荷/电流/电压(例如,图4的403或从图5A的位线521求和的电荷)被传递到比较器或ADC(例如,图4的ADC 411)上,其中总和电荷被转换为数字输出(例如,数字信号/数字)。电荷的求和可以发生在时序图600的累加区域中,并且来自ADC的读数可以与时序图600的ADC读数区域相关联。在获得ADC读数之后,复位信号将所有电容器(例如,电容器423a-423i)放电,以准备处理下一组激活输入。

存储器中的卷积处理的示例

图7描绘了由存储器内计算(CIM)阵列708实现的示例性卷积层架构700。卷积层架构700可以是(例如,如以上关于图1D所描述的)卷积神经网络的一部分,并被设计成处理多维数据,诸如张量数据。

在所描绘的示例中,对卷积层架构700的输入702具有38(高度)x11(宽度)x1(深度)的尺寸。卷积层的输出704具有尺寸34x10x64,其包括与作为卷积过程的一部分应用的内核张量714的64个内核相对应的64个输出通道。此外,在该示例中,内核张量714的64个内核中的每个内核(例如,示例性内核712)具有为5×2×1的尺寸(总的来说,滤波器张量714的诸内核等同于一个S×2×64内核)。

在卷积过程期间,每个5×2×1内核与输入702进行卷积,以生成输出704的一个34×10×1层。在卷积期间,内核张量714的640个权重(5×2×64)可被存储在存储器内计算(CIM)阵列708中,该CIM阵列708在该示例中包括针对每个内核的列(即,64列)。随后,每个5x2感受野(例如,感受野输入706)的激活使用字线(例如,716)被输入到CIM阵列708,并乘以对应的权重以产生1×1×64输出张量(例如,输出张量710)。输出张量704表示针对输入702的所有感受野(例如,感受野输入706)的1×1×64个体输出张量的累加。出于简单起见,图7的存储器内计算阵列708仅示出了针对存储器内计算阵列708的输入和输出的几条解说性线。

在所描绘的示例中,CIM阵列708包括字线716以及位线718(对应于CIM阵列708的列),CIM阵列708通过字线716来接收感受野(例如,感受野输入706)。尽管未作描绘,但是CIM阵列708还可包括预充电字线(PCWL)和读字线RWL(如以上关于图4和5所描述的)。

在该示例中,字线716被用于初始权重定义。然而,一旦发生初始权重定义,激活输入就激活CIM位单元中专门设计的线来执行MAC操作。因此,位线718和字线716的每个交点表示内核权重值,该内核权重值乘以字线716上的输入激活以生成乘积。沿每条位线718的个体乘积随后被求和,以生成输出张量710的对应输出值。总和值可以是电荷、电流或电压。在该示例中,在处理卷积层的整个输入702之后,输出张量704的尺寸是34x10x64,尽管CIM阵列708一次只生成64个内核输出。因此,整个输入702的处理可以在34x10或即340个循环内完成。

用于逐深度可分离卷积的CIM架构

在用于CIM架构的存储器中实现的向量矩阵乘法块通常可以很好地执行常规的卷积神经网络处理,但是它们对于支持逐深度可分离卷积神经网络(其在许多现有技术机器学习架构中都可以找到)不是高效的。

用于提高效率的常规解决方案包括:添加可分离数字MAC块以处置对可分离卷积的逐深度部分的处理,同时CIM阵列可以处置可分离卷积的逐点部分。然而,这种混合办法会导致增加的数据移动,这可能抵消CIM架构的存储器高效优点。此外,该混合办法通常涉及附加硬件(例如,数字乘法累加(DMAC)元件),这会增加空间和功率需求,并且会增加处理等待时间。此外,DMAC的使用可能影响处理操作的定时,并导致模型输出定时约束(或其他依赖性)溢出。为了解决该问题,可作出各种折衷,诸如减小传入数据的帧率、增加处理系统元件(包括CIM阵列)的时钟速率、减小输入特征大小等等。

本文中所描述的CIM架构改进了用于逐深度可分离卷积的处理操作的定时性能。与需要更多硬件(例如,DMAC)和/或更多数据移动的常规架构相比,这些改进有益地导致更少的用于逐深度可分离卷积操作的循环时间,并达成更高的每瓦处理功率的每秒总操作数(TOPS)(即,TOPS/W)。

图8A和8B解说了根据本公开的某些方面的包括CIM阵列802的CIM系统800。如图8A中解说的,CIM阵列802可被用来实现用于DW卷积操作的内核806、808、809以及用于PW卷积操作的内核890。例如,内核806、808、809可分别对应于内核304A、304B、304C,并且内核890可对应于内核308,如关于图3A和3B所描述的。可在第一阶段(阶段1)期间顺序地执行DW卷积操作。例如,在阶段1-1期间,内核806可被处理,在阶段1-2期间,内核808可被处理,并且在阶段1-3期间,内核809可被处理。内核806、808、809的DW卷积操作的输出可被用来生成供内核809在第二阶段中执行PW卷积操作的输入。以这种方式,DW卷积操作和PW卷积操作两者都可以使用在单个CIM阵列上实现的内核来执行。DW内核可以在CIM阵列的相同列上实现,从而允许在CIM阵列上实现更大数目的DW内核(与常规实现相比)。

如图8B中解说的,CIM系统800包括CIM阵列802,其被配置成用于DW卷积神经网络计算和逐点(PW)CNN计算(例如,CNN 1x1)。用于DW卷积操作和PW卷积操作的内核可在不同的列群上实现,并在不同的阶段期间被单独激活,如关于图8A所描述的。在一些方面,内核(例如,3x3内核)可在CIM阵列802的相同列(本文中亦称为位线)上实现。例如,2比特权重的3x3内核806(即,九个2比特值,其包括第一2比特值b01、b11、第二2比特值b02、b12,以此类推)可使用列810、812(例如,一列对应于权重的每个位宽)以及九行814-1、814-2到814-8、和814-9(例如,本文中亦称为字线(WL),其统称为行814,其中该内核中的每个值都有一行)上的CIM单元来实现。另一内核808可在列810、812以及九行820-1到820-9(统称为行820)上实现,以实现另一3x3滤波器。因此,内核806和808在不同的行但在相同的列上实现。结果,内核806和808可被顺序地操作。换言之,激活内核806、808之一的行并不会影响内核806、808中的另一个内核的行。然而,激活内核806、808之一的列会影响内核806、808中的另一个内核的列。因此,内核806、808可被顺序地操作。虽然仅示出了两个内核806、808,但是在一些方面可以实现两个以上的内核。例如,图8A中示出的内核806、808、809可在CIM阵列802中实现。

在一些方面,每个内核的输入激活缓冲器填充有(例如,存储有)来自先前层的对应输出。可以逐个顺序地操作每个内核,以生成DW卷积输出。不活跃内核的输入可以用零(例如,逻辑低)填充,以使得不活跃内核的读BL(RBL)输出为零(例如,如三元模式位单元中支持的)。以这种方式,不活跃内核可以不影响在列(BL)上实现的活跃内核的输出。

在一些方面,内核806的行(例如,行814)可耦合到激活缓冲器830-1、830-2到830-8、和830-9(统称为激活缓冲器830),并且内核808的行(例如,行820)可耦合到激活缓冲器832-1到832-9(统称为激活缓冲器832)。内核806的输出(例如,在列810、812处)可耦合到模数转换器(ADC)840。ADC 840取来自列810、812的信号作为输入,并生成这些信号的数字表示,从而计及存储在列812中的比特相比于存储在列810中的比特而言在相应权重中表示更低的重要性。

如所解说的,CIM阵列802还可包括列816、818上的用于PW卷积计算的PW卷积单元890。PW卷积单元890的输出(例如,在列816、818处)可耦合到ADC 842。例如,ADC 840的每个输入可从列810、812中的每一者接收行814的累加电荷,并且ADC 842的每个输入可从列816、818中的每一者接收累加电荷,基于该累加电荷,ADC 840、842中的每一者生成数字输出信号。例如,ADC 842取来自列816、818的信号作为输入,并生成这些信号的数字表示,从而计及存储在列818中的比特相比于存储在列816中的比特而言在相应权重中表示更低的重要性。虽然ADC 840、842被描绘为从两列接收信号以促成对具有2比特权重参数的内核的模数转换,但是本文中所描述的各方面可针对被配置成从任何数目的列(例如,用以执行对具有3比特权重参数的内核的模数转换的三列)接收信号的ADC来实现。在一些方面,ADC(诸如ADC 840或842)可耦合到八列。此外,在一些方面,累加可跨一个以上的ADC扩展。

ADC 840、842的输出可耦合到用以(例如,按顺序)实现一个或多个非线性操作(诸如整流线性单元(ReLU)和平均池化(AvePool)等等)的非线性操作电路850(和缓冲器)。非线性操作允许创建输入和输出之间的复杂映射,并因此允许对复杂数据(诸如非线性的或具有高维度的图像、视频、音频和数据集)进行学习和建模。非线性操作电路850的输出可耦合到激活输出缓冲器电路860。激活输出缓冲器电路860可存储来自非线性操作电路850的输出以作为PW卷积输入被用于经由PW卷积单元890的PW卷积计算。例如,激活输出缓冲器电路860的输出可被提供到激活缓冲器830。存储在激活缓冲器830中的对应激活输入可被提供到PW卷积单元890以执行PW卷积计算。

虽然内核806、808中的每一者包括两列,从而允许在该内核的每一行中存储2比特权重,但是内核806、808可使用任何数目的合适列来实现,诸如一列用于1比特二进制权重或者两列或更多列用于多比特权重。例如,内核806、808中的每一者可使用三列来实现以促成在该内核的每一行中存储3比特权重参数,或者使用单列来实现以促成在该内核的每一行中存储1比特权重。此外,虽然为了促进理解,内核806、808中的每一者都用3x3内核的九行来实现,但是内核806、808可以用任何数目的行来实现以实现合适的内核大小。此外,可使用CIM阵列的单元子集来实现两个以上的内核。例如,CIM阵列802可包括一个或多个其他内核,其中CIM阵列802的这些内核是在不同的行和相同的列上实现的。

本文中所描述的各方面提供了按需为DW卷积操作配置任何CIM阵列的灵活性。例如,可增加用于实现内核806、808中的每一者的行数以增大每个相应内核的大小(例如,实现5x5内核)。此外,与常规实现相比,某些方面允许增加可在CIM阵列上实现的内核的数目。换言之,通过在相同的列上实现用于DW卷积的内核,本公开的某些方面减少了CIM阵列上为DW卷积操作所消耗的面积。以这种方式,与常规实现相比,可以增加可在CIM阵列上实现的用于DW卷积的内核的数目。例如,可在具有1024行的CIM阵列上实现总共113个3x3滤波器。因此,与可使用DMAC硬件的常规实现相比,可以减少用于实现DW卷积操作的面积消耗。

图9解说了根据本公开的某些方面的用于经由图8B的CIM架构进行信号处理的示例操作900。一个CIM阵列可被用于DW卷积计算和PW卷积计算两者。在同一CIM阵列硬件上分两个阶段操作用于DW卷积的内核。

在用于DW卷积的第一阶段期间,由DW卷积内核使用的列810、812是活跃的。操作900可开始于DW卷积层的处理。例如,在框904,可在内核的CIM单元中加载DW卷积权重。即,在框904,DW 3x3内核权重可被编群成行并被写入到图8的CIM阵列802的内核806、808的CIM单元中。即,2比特内核权重可被提供到列810、812,并且存储器单元(例如,图8中示出的存储器单元b11和b01)的闸通开关可被闭合以将该2比特内核权重存储在这些存储器单元中。滤波器权重可被存储在内核806、808中的每一者的每一行中。其余CIM列可被用来将PW卷积权重写入PW卷积单元890中。DW卷积权重和PW卷积权重两者都将针对每个后续层被更新。在一些实现中,CIM阵列可被划分成可以被配置为三态模式的小块,如本文中更详细地描述的。在一些方面,与活跃内核相同的列上的小块可被配置为三态模式。在三态模式中,小块的存储器单元的输出可被配置成具有相对高的阻抗,从而有效地去除该单元对输出的影响。

在框906,可以顺序地对内核806、808的每个行群应用DW卷积激活输入(例如,在激活缓冲器830处),以生成每个内核的DW卷积输出。在同一时间内核806、808中只有一个内核可以是活跃的。非活跃滤波器行可被置于三态操作模式。

在框908,ADC 840可将内核806、808(例如,在列810、812处)的卷积输出从模拟域转换到数字域。可基于用于DW卷积的ADC 840的输出经由非线性操作电路850来执行非线性操作。来自非线性操作电路850的输出可被应用于(例如,激活输出缓冲器电路860中存储的)PW卷积输入以执行PW卷积操作。换言之,PW卷积输入可被写到激活缓冲器830中,并被应用于行814、820和列816、818上的PW卷积单元890。

操作900可通过处理PW卷积操作而继续到阶段2。例如,在框912,可向CIM阵列加载用于PW卷积的内核。例如,PW卷积列(例如,列816、818)可被启用,并且DW卷积列(例如,列810、812)可被禁用。在框914,可执行PW卷积,并且可经由ADC 842将PW卷积的输出转换为数字信号。在框916,ADC 842可将PW卷积单元890的输出从模拟域转换到数字域。可基于用于PW卷积的ADC 842的输出经由非线性操作电路850来执行非线性激活操作(例如,ReLU)。

用于降低功耗并且提高CIM阵列利用率的技术

图10解说了根据本公开的某些方面的被划分成小块(亦称为子组块)以节约功率的CIM阵列1000。作为示例,CIM阵列1000可具有1024行和256列。可启用或禁用单独的行和列的小块。例如,小块可包括128行和23列。作为一个示例,小块1002(例如,包括多个小块,诸如小块1004)对于卷积可以是活跃的,而其余小块可被禁用。换言之,其余小块可被配置为三态模式。

在一些实现中,可在CIM阵列1000中实现行和列填充单元。可使用填充电路(例如,缓冲器或开关)来启用或禁用CIM阵列的小块以节约功率。作为示例,列填充单元可使用AND选通逻辑来实现,行填充单元可使用写位线(WBL)上的缓冲器和读位线(RBL)上的传输开关来实现。传输开关的大小和类型可基于线性规范来配置。

DW卷积可使用相对小的内核尺寸(3x3、5x5、……),并且CIM阵列的利用不足可能由于范围压缩(例如,神经网络的输出由于非线性激活而分布在小范围内)而影响输出信噪比(SNR)。本公开的某些方面涉及用于改进SNR的技术,如关于图11更详细地描述的。

图11解说了根据本公开的某些方面的用重复内核实现的CIM阵列。

如所解说的,内核806、808中的每一者可被重复以形成内核群。例如,内核806、1104、1106形成内核群1102,并且内核806、1104和1106中的每一者包括相同的权重。此外,可在相同的列上实现多个内核群,诸如内核群1102和1104。因为群1102中的重复内核806、1104、1106具有相同的权重,所以可向该群中的每个重复内核提供相同的激活输入。这对于群1104也成立。

重复内核可生成在每一列(输出)处组合的相同输出信号,从而导致这些重复内核的输出处的动态范围增加。例如,使用三个重复内核可能导致提供给ADC(例如,ADC 840)的重复内核的输出处的动态范围增加三倍。增加内核的输出处的动态范围会促成以更高的准确性进行模数转换,因为它可以利用ADC的更宽范围。换言之,使用ADC输入的整个范围允许ADC的数字输出更准确地标识ADC的模拟输入并改进ADC的信噪比(SNR)。

在一些方面,对于运行DW卷积的CIM组块,可使用相对小的小块大小(例如,16行和32列),从而允许禁用更大数目的CIM单元以节约功率。例如,三个CIM单元群(例如,其具有多个小块)可被设计成运行神经网络架构反瓶颈。反瓶颈操作通常指用于用于扩展输入特征、继以DW卷积并经由PW卷积减小DW输出尺寸的操作。

作为一个示例,第一CIM单元群(CIM1)可被用于瓶颈操作,第二CIM单元群(CIM2)可被用于DW卷积操作,第三CIM单元群(CIM3)可被用于该瓶颈操作。在一些方面,用于DW卷积的CIM2可具有更精细的平铺排列(例如,16行以实现3x3内核,或者32行以实现5x5内核)以改进CIM阵列利用率,而CIM1和CIM3可具有粗粒度平铺(例如,64或128行)以避免对用于非DW卷积操作的填充单元的影响。以这种方式,CIM阵列库的可重用性对于DW和非DW操作可以加倍。

粗粒度平铺(例如,其中每个小块使用具有1024行的CIM阵列的64行和32列)情况下的平均(例如,近似)CIM利用率对于3x3内核可以是13.8%,而对于5x5内核可以是31.44%。换言之,对于3x3内核,可利用CIM阵列中仅13.8%的活跃存储器单元,而对于5x5内核,可利用CIM阵列中31.44%的活跃存储器单元。另一方面,精细粒度平铺(例如,每小块使用16行和32列,并且其中CIM阵列具有1024行)情况下的平均CIM利用率对于3x3内核可以是40.46%,而对于5x5内核可以是47.64%。精细粒度平铺(例如,具有1024行的CIM阵列的每小块使用32行和32列)情况下的平均CIM利用率对于3x3内核可以是24.18%,而对于5x5内核可以是47.64%。因此,精细平铺改进了较小内核大小滤波器(举例而言,诸如用于许多流行DW-CNN架构的那些滤波器)的CIM阵列利用率。改进CIM阵列利用率会导致利用更高百分比的活跃存储器单元,从而减少会由未被利用的活跃存储器单元引起的功率损耗。

一般而言,可通过(例如,在芯片设计期间)选取更接近内核大小的平铺大小来改进利用率。例如,对于为9的内核大小,可使用为16的小块大小。在一些方面,小块大小可被确定为比内核大小大2的幂(对数尺度),以改进对处置不同神经网络模型的灵活性。

用于在CIM阵列中执行神经网络处理的示例操作

图12是解说根据本公开的某些方面的用于在神经网络中进行信号处理的示例操作1200的流程图。操作1200可由神经网络系统执行,该神经网络系统可包括控制器(诸如如关于图13所描述的CIM控制器1332)和CIM系统(诸如CIM系统800)。

操作1200开始于在框1205,神经网络系统经由多个内核(例如,内核806、808、809)执行多个逐深度(DW)卷积操作,该多个内核是使用存储器内计算(CIM)阵列(例如,CIM阵列802)的一个或多个第一列(例如,列810、812)上的多个CIM单元群来实现的。作为示例,执行该多个DW卷积操作可包括:经由该一个或多个第一列向该多个CIM单元群的第一CIM单元集合加载该多个内核中的第一内核(例如,内核806)的第一多个权重参数,第一CIM单元集合包括该CIM阵列的第一多行(例如,行814);以及经由第一内核来执行该多个DW卷积操作中的第一DW卷积操作,其中执行第一DW卷积操作包括向第一多行应用第一激活输入(例如,经由激活缓冲器830)。执行该多个DW卷积操作还可包括:经由该一个或多个第一列向该多个CIM单元群的第二CIM单元集合加载该多个内核中的第二内核(例如,内核808)的第二多个权重参数,第二CIM单元集合包括该CIM阵列的该一个或多个第一列和第二多行(例如,行820),第一多行不同于第二多行;以及经由第二内核来执行该多个DW卷积操作中的第二DW卷积操作,其中执行第二DW卷积操作包括向第二多行应用第二激活输入(例如,经由激活缓冲器832)。在一些方面,第一CIM单元集合包括CIM阵列的单元子集,并且第二CIM单元集合包括CIM阵列的另一单元子集。

在框1210,神经网络系统可基于来自该多个DW卷积操作的输出来(例如,经由ADC840和非线性操作电路850)生成用于PW卷积操作的输入信号。在框1215,神经网络系统可基于这些输入信号来执行PW卷积操作,该PW卷积操作是经由使用该CIM阵列的一个或多个第二列上的CIM单元群实现的内核来执行的。例如,执行该PW卷积操作可包括向用于该一个或多个第二列上的内核的CIM单元群加载第三多个权重。在一些方面,神经网络系统可通过在执行该多个DW卷积操作之后将该一个或多个第一列处的电压从模拟域转换到数字域来生成数字信号。对该一个或多个第二列上的CIM单元群的输入信号可以是基于该数字信号来生成的。

在一些方面,内核可被重复以改进CIM阵列的利用率并改进ADC动态范围,如本文中所描述的。例如,神经网络系统可经由该一个或多个第一列向该多个CIM单元群的第三CIM单元集合加载第一多个权重参数以执行第一DW卷积操作,第三CIM单元集合包括该一个或多个第一列和该CIM阵列的第三多行。

用于执行阶段选择性卷积的示例处理系统

图13解说了示例电子设备1300。电子设备1300可被配置成执行本文中所描述的方法,包括关于图12所描述的操作1200。

电子设备1300包括中央处理单元(CPU)1302,其在一些方面可以是多核CPU。在CPU1302处执行的指令可例如从与CPU 1302相关联的程序存储器加载,或者可从存储器1324加载。

电子设备1300还包括为特定功能定制的附加处理块,诸如图形处理单元(GPU)1304、数字信号处理器(DSP)1306、神经处理单元(NPU)1308、多媒体处理块1310、多媒体处理块1310以及无线连通性处理块1312。在一种实现中,NPU 1308在CPU 1302、GPU 1304和/或DSP 1306中的一者或多者中实现。

在一些方面,无线连通性处理块1312可包括例如用于第三代(3G)连通性、第四代(4G)连通性(例如,4G LTE)、第五代连通性(例如,5G或NR)、Wi-Fi连通性、蓝牙连通性、以及无线数据传输标准的组件。无线连通性处理块1312进一步连接到一个或多个天线1314以促成无线通信。

电子设备1300还可包括与任何方式的传感器相关联的一个或多个传感器处理器1316、与任何方式的图像传感器相关联的一个或多个图像信号处理器(ISP)1318、和/或可包括基于卫星的定位系统组件(例如,GPS或GLONASS)以及惯性定位系统组件的导航处理器1320。

电子设备1300还可包括一个或多个输入和/或输出设备1322,诸如屏幕、触敏表面(包括触敏显示器)、物理按钮、扬声器、话筒等等。在一些方面,电子设备1300的一个或多个处理器可基于ARM指令集。

电子设备1300还包括存储器1324,该存储器1324代表一个或多个静态和/或动态存储器,诸如动态随机存取存储器、基于闪存的静态存储器等等。在该示例中,存储器1324包括计算机可执行组件,其可由电子设备1300或CIM控制器1332的前述处理器中的一个或多个处理器执行。例如,电子设备1300可包括CIM电路1326,其包括一个或多个CIM阵列,诸如CIM阵列802和CIM阵列804,如本文中所描述的。CIM电路1326可经由CIM控制器1332来控制。例如,在一些方面,存储器1324可包括用于卷积(例如,通过应用激活输入来执行DW或PW卷积操作)的代码1324B。存储器1324还可包括用于生成输入信号的代码1324C。存储器1324还可以可任选地包括用于加载(例如,向CIM单元加载权重参数)的代码1324A。如所解说的,CIM控制器1332可包括用于卷积(例如,通过应用激活输入来执行DW或PW卷积操作)的电路1328B。CIM控制器1332还可包括用于生成输入信号的电路1328C。CIM控制器1332还可以可任选地包括用于加载(例如,向CIM单元加载权重参数)的电路1328A。所描绘的组件以及其他未描绘的组件可被配置成执行本文所描述的方法的各个方面。

在一些方面,诸如在电子设备1300是服务器设备的情况下,可从图13中所描绘的方面中省略各个方面,诸如多媒体处理块1310、无线连通性组件1312、天线1314、传感器处理器1316、ISP 1318或导航1320中的一者或多者。

示例条款

方面1.一种用于在神经网络中进行信号处理的装置,包括:被配置为用于逐深度(DW)神经网络计算的第一内核的第一存储器内计算(CIM)单元集合,该第一CIM单元集合包括CIM阵列的一个或多个第一列和第一多行;被配置为用于该神经网络计算的第二内核的第二CIM单元集合,该第二CIM单元集合包括该一个或多个第一列和该CIM阵列的第二多行,其中该第一多行不同于该第二多行;以及该CIM阵列的被配置为用于逐点(PW)神经网络计算的第三内核的第三CIM单元集合。

方面2.如方面1的装置,其中该第一CIM单元集合包括该CIM阵列的单元子集,并且该第二CIM单元集合包括该CIM阵列的另一单元子集。

方面3.如方面2的装置,其中该第三CIM单元集合是该CIM阵列的第三单元子集。

方面4.如方面1-3中任一者的装置,其中该第三CIM单元集合包括该CIM阵列的一个或多个第二列和该第一多行,该一个或多个第二列不同于该一个或多个第一列。

方面5.如方面1-4中任一者的装置,进一步包括:耦合到该一个或多个第一列的模数转换器(ADC)。

方面6.如方面5的装置,进一步包括:耦合到该ADC的输出的非线性电路。

方面7.如方面1-6中任一者的装置,进一步包括:被配置为用于该神经网络计算的第三内核的第三CIM单元集合,该第三CIM单元集合包括该一个或多个第一列和该CIM阵列的第三多行。

方面8.如方面7的装置,其中当执行该神经网络计算时,相同的权重参数被配置为存储在该第一CIM单元集合和该第三CIM单元集合中。

方面9.如方面1-8中任一者的装置,其中:该第一CIM单元集合中在该第一多行中的每一行上的一个或多个CIM单元被配置为存储第一权重参数;并且该第二CIM单元集合中在该第二多行中的每一行上的一个或多个CIM单元被配置为存储第二权重参数。

方面10.如方面9的装置,其中该一个或多个第一列的数量与该第一权重参数的一个或多个比特的数量相关联。

方面11.一种用于在神经网络中进行信号处理的方法,包括:经由多个内核执行多个逐深度(DW)卷积操作,该多个内核是使用存储器内计算(CIM)阵列的一个或多个第一列上的多个CIM单元群来实现的;基于来自该多个DW卷积操作的输出来生成用于逐点(PW)卷积操作的输入信号;以及基于该输入信号来执行该PW卷积操作,该PW卷积操作是经由使用该CIM阵列的一个或多个第二列上的CIM单元群实现的内核来执行的。

方面12.如方面11的方法,其中执行该多个DW卷积操作包括:经由该一个或多个第一列向该多个CIM单元群的第一CIM单元集合加载该多个内核中的第一内核的第一多个权重参数,该第一CIM单元集合包括该CIM阵列的第一多行;经由该第一内核执行该多个DW卷积操作中的第一DW卷积操作,其中执行该第一DW卷积操作包括向该第一多行应用第一激活输入;经由该一个或多个第一列向该多个CIM单元群的第二CIM单元集合加载该多个内核中的第二内核的第二多个权重参数,该第二CIM单元集合包括该一个或多个第一列和该CIM阵列的第二多行,其中该第一多行不同于该第二多行;以及经由该第二内核执行该多个DW卷积操作中的第二DW卷积操作,其中执行该第二DW卷积操作包括向该第二多行应用第二激活输入。

方面13.如方面12的方法,其中该第一CIM单元集合包括该CIM阵列的单元子集,并且该第二CIM单元集合包括该CIM阵列的另一单元子集。

方面14.如方面13的方法,其中执行该PW卷积操作包括向用于该一个或多个第二列上的内核的该CIM单元群加载第三多个权重。

方面15.如方面14的方法,进一步包括:通过在执行该多个DW卷积操作之后将该一个或多个第一列处的电压从模拟域转换到数字域来生成数字信号,其中对该一个或多个第二列上的该CIM单元群的该输入信号是基于该数字信号来生成的。

方面16.如方面12-15中任一者的方法,进一步包括:经由该一个或多个第一列向该多个CIM单元群的第三CIM单元集合加载该第一多个权重参数以执行第一DW卷积操作,该第三CIM单元集合包括该一个或多个第一列和该CIM阵列的第三多行。

方面17.一种包括指令的非瞬态计算机可读介质,该指令在由处理系统的一个或多个处理器执行时使该处理系统执行一种在神经网络中进行信号处理的方法,该方法包括:经由多个内核执行多个逐深度(DW)卷积操作,该多个内核是使用存储器内计算(CIM)阵列的一个或多个第一列上的多个CIM单元群来实现的;以及基于来自该多个DW卷积操作的输出来生成用于逐点(PW)卷积操作的输入信号;以及基于该输入信号来执行该PW卷积操作,该PW卷积操作是经由使用该CIM阵列的一个或多个第二列上的CIM单元群来执行的。

方面18.如方面17的非瞬态计算机可读介质,其中执行该多个DW卷积操作包括:经由该一个或多个第一列向该多个CIM单元群的第一CIM单元集合加载用于该多个内核中的第一内核的第一多个权重参数,该第一CIM单元集合包括该CIM阵列的第一多行;经由该第一内核执行该多个DW卷积操作中的第一DW卷积操作,其中执行该第一DW卷积操作包括向该第一多行应用第一激活输入;经由该一个或多个第一列向该多个CIM单元群的第二CIM单元集合加载该多个内核中的第二内核的第二多个权重参数,该第二CIM单元集合包括该一个或多个第一列和该CIM阵列的第二多行,其中该第一多行不同于该第二多行;以及经由该第二内核执行该多个DW卷积操作中的第二DW卷积操作,其中执行该第二DW卷积操作包括向该第二多行应用第二激活输入。

方面19.如方面18的非瞬态计算机可读介质,其中该第一CIM单元集合包括该CIM阵列的单元子集,并且该第二CIM单元集合包括该CIM阵列的另一单元子集。

方面20.如方面19的非瞬态计算机可读介质,其中执行该PW卷积操作包括向用于该一个或多个第二列上的第三内核的该CIM单元群加载第三多个权重。

方面21.如方面20的非瞬态计算机可读介质,该方法进一步包括:通过在执行该多个DW卷积操作之后将该一个或多个第一列处的电压从模拟域转换到数字域来生成数字信号,其中对该一个或多个第二列上的该CIM单元群的该输入信号是基于该数字信号来生成的。

方面22.如方面18-21中任一者的非瞬态计算机可读介质,该方法进一步包括:经由该一个或多个第一列向该多个CIM单元群的第三CIM单元集合加载该第一多个权重参数以执行第一DW卷积操作,该第三CIM单元集合包括该一个或多个第一列和该CIM阵列的第三多行。

附加考虑

提供先前描述是为了使本领域任何技术人员均能够实践本文中所描述的各个方面。本文中所讨论的示例并非是对权利要求中阐述的范围、适用性或者方面的限定。对这些方面的各种修改将容易为本领域技术人员所明白,并且在本文中所定义的普适原理可被应用于其他方面。例如,可对所讨论的要素的功能和布置作出改变而不会脱离本公开的范围。各种示例可恰适地省略、替代、或添加各种规程或组件。例如,可按与所描述的次序不同的次序来执行所描述的方法,并且可添加、省略、或组合各种步骤。而且,参照一些示例所描述的特征可在一些其他示例中被组合。例如,可使用本文中所阐述的任何数目的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖使用作为本文中所阐述的本公开的各个方面的补充或者不同于本文中所阐述的本公开的各个方面的其他结构、功能性、或者结构及功能性来实践的此类装置或方法。应当理解,本文中所披露的本公开的任何方面可由权利要求的一个或多个元素来实施。

如本文所使用的,措辞“示例性”意指“用作示例、实例或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。

如本文中所使用的,引述一列项目“中的至少一者”的短语是指这些项目的任何组合,包括单个成员。作为示例,“a、b或c中的至少一者”旨在涵盖:a、b、c、a-b、a-c、b-c、和a-b-c,以及具有多重相同元素的任何组合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c、和c-c-c,或者a、b和c的任何其他排序)。

如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可包括演算、计算、处理、推导、研究、查找(例如,在表、数据库或另一数据结构中查找)、查明及类似动作。而且,“确定”可包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)及诸如此类。而且,“确定”可包括解析、选择、选取、建立及诸如此类。

本文中所公开的各方法包括用于实现方法的一个或多个步骤或动作。这些方法步骤和/或动作可彼此互换而不会脱离权利要求的范围。换言之,除非指定了步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可改动而不会脱离权利要求的范围。此外,上述方法的各种操作可由能够执行相应功能的任何合适的装置来执行。这些装置可包括各种硬件和/或软件组件和/或模块,包括但不限于电路、专用集成电路(ASIC)、或处理器。一般地,在存在附图中解说的操作的场合,这些操作可具有带相似编号的相应配对装置加功能组件。

以下权利要求并非旨在被限定于本文中示出的各方面,而是应被授予与权利要求的语言相一致的全部范围。在权利要求内,对单数元素的引用不旨在意指“有且只有一个”(除非专门如此声明),而是“一个或多个”。除非特别另外声明,否则术语“一些/某个”指的是一个或多个。权利要求的任何要素都不应当在35U.S.C.§112(f)的规定下来解释,除非所述要素是使用短语“用于……的装置”来明确叙述的或者在方法权利要求情形中所述要素是使用短语“用于……的步骤”来叙述的。本公开通篇描述的各个方面的要素为本领域普通技术人员当前或今后所知的所有结构上和功能上的等效方案通过引述被明确纳入于此,且旨在被权利要求所涵盖。此外,本文所公开的任何内容都不旨在捐献于公众,无论此类公开内容是否明确记载在权利要求书中。

相关技术
  • 一种基于声压图学习的球谐系数升阶方法及声场描述方法
  • 一种基于球谐选择的声场重建优化方法及系统
技术分类

06120116547084