CN118103811A - 用于数字存储器中计算架构的累加器 - Google Patents

用于数字存储器中计算架构的累加器 Download PDF

Info

Publication number
CN118103811A
CN118103811A CN202280067952.8A CN202280067952A CN118103811A CN 118103811 A CN118103811 A CN 118103811A CN 202280067952 A CN202280067952 A CN 202280067952A CN 118103811 A CN118103811 A CN 118103811A
Authority
CN
China
Prior art keywords
circuit
columns
memory
output
memory cells
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280067952.8A
Other languages
English (en)
Inventor
M·巴达罗格鲁
Z·王
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN118103811A publication Critical patent/CN118103811A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/09Supervised learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/481Counters performing arithmetic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Optimization (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Analysis (AREA)
  • Memory System (AREA)
  • Complex Calculations (AREA)

Abstract

某些方面提供了一种用于执行机器学习任务的装置,并且具体地,提供存储器中计算(CIM)架构。一个方面提供了一种用于存储器中计算的方法。该方法总体上包括:经由多个数字计数器中的每个数字计数器累加存储器的多个列中的相应列上的输出信号,其中多个存储器单元位于该多个列中的每个列上,该多个存储器单元存储表示神经网络的权重的多个位,其中该多个列中的每个列的该多个存储器单元对应于该存储器的不同字线;经由加法器电路将该多个数字计数器的输出信号相加;以及经由累加器累加该加法器电路的输出信号。

Description

用于数字存储器中计算架构的累加器
相关申请的交叉引用
本申请要求于2021年10月13日提交的美国申请17/450,815号的优先权,该申请已转让给本申请的受让人并且以引用方式全文并入本文。
引言
本公开的各方面涉及执行机器学习任务,并且具体地涉及存储器中计算(CIM)架构。
机器学习通常是产生受过训练的模型(例如,人工神经网络、树或其他结构)的过程,其表示对先验已知的训练数据集的广义拟合。将受过训练的模型应用于新数据产生推断,这可被用于获得关于新数据的洞察。在一些情况下,将模型应用于新数据被描述为对新数据“运行推断”。
随着机器学习的使用激增以用于实现各种机器学习(或人工智能)任务,出现了对更高效地处理机器学习模型数据的需求。在一些情况下,专用硬件(诸如机器学习加速器)可用于增强处理系统处理机器学习模型数据的能力。然而,此类硬件需要空间和功率,这在处理设备上并不总是可用的。例如,诸如移动设备、永远在线(always-on)设备、物联网(IoT)设备等的“边缘处理”设备通常必须对处理能力与功率和封装约束进行平衡。此外,加速器可以跨共用数据总线移动数据,这可能导致大量功率使用并且将等待时间引入到共享数据总线的其他进程中。因此,正在考虑用于处理机器学习模型数据的处理系统的其他方面。
存储器设备是可用于通过所谓的存储器中计算(CIM)过程执行机器学习模型数据的处理的处理系统的另一方面的一个示例。常规CIM过程使用模拟信号执行计算,这可能导致计算结果不准确,从而不利地影响神经网络计算。因此,需要用于以提高的准确度执行存储器中计算的系统和方法。
发明内容
某些方面提供用于执行机器学习任务的装置和技术,并且具体地,提供存储器中计算架构。
一个方面提供了一种用于存储器中计算的电路。该电路总体上包括:存储器,该存储器具有多个列;多个存储器单元,该多个存储器单元位于该存储器的每个列上,该多个存储器单元被配置为存储表示神经网络的权重的多个位,其中该多个列中的每个列的该多个存储器单元对应于该存储器的不同字线;多个数字计数器,该多个数字计数器中的每个数字计数器耦合到该存储器的该多个列中的相应列;加法器电路,该加法器电路耦合到该多个数字计数器的输出端;和累加器,该累加器耦合到该加法器电路的输出端。
一个方面提供了一种用于存储器中计算的方法。该方法总体上包括:经由多个数字计数器中的每个数字计数器累加存储器的多个列中的相应列上的输出信号,其中多个存储器单元位于该多个列中的每个列上,该多个存储器单元存储表示神经网络的权重的多个位,其中该多个列中的每个列的该多个存储器单元对应于该存储器的不同字线;经由加法器电路将该多个数字计数器的输出信号相加;以及经由累加器累加该加法器电路的输出信号。
一个方面提供了一种用于存储器中计算的设备。该设备总体上包括:用于对存储器的多个列中的相应列上的输出信号的逻辑高的数量进行计数的装置,其中多个存储器单元位于该多个列中的每个列上,该多个存储器单元被配置为存储表示神经网络的权重的多个位,其中该多个列中的每个列的该多个存储器单元对应于该存储器的不同字线;用于将该多个数字计数器的输出信号相加的装置;和用于累加用于相加的该装置的输出信号的装置。
其他方面提供了:被配置为执行前述方法以及本文所描述的方法的处理系统;非暂态计算机可读介质,该非暂态计算机可读介质包括指令,这些指令在由处理系统的一个或多个处理器执行时使该处理系统执行前述方法以及本文所描述的方法;一种计算机程序产品,该计算机程序产品体现在计算机可读存储介质上,该计算机可读存储介质包括用于执行前述方法以及本文所描述的方法的代码;和一种处理系统,该处理系统包括用于执行前述方法以及本文进一步描述的方法的装置。
以下描述和相关附图详细阐述了一个或多个方面的某些例示性特征。
附图说明
为了能够详细理解本公开的上述特征的方式,以上简要概括的更具体的描述可以通过参考各方面来获得,这些方面中的一些方面在附图中例示。然而,要注意的是,附图仅例示了本公开的某些典型的方面并且因此不被认为是对其范围的限制,因为说明书可以承认其他同等有效的方面。
图1A至图1D描绘了可由本公开的各方面实现的各种类型的神经网络的示例。
图2描绘了可由本公开的各方面实现的传统卷积运算的示例。
图3A和图3B描绘了可由本公开的各方面实现的深度可分离卷积运算的示例。
图4例示了被实现为存储器中计算(CIM)电路的八晶体管(8T)静态随机存取存储器(SRAM)单元的示例存储器单元。
图5例示了根据本公开的某些方面的用于CIM的电路。
图6例示了根据本公开的某些方面的具有累加器的使用脉冲发生器和数字计数器实现的数字CIM(DCIM)电路。
图7是例示根据本公开的某些方面的使用延迟电路实现以减少电磁干扰(EMI)的CIM电路的框图。
图8A是示出根据本公开的某些方面的变频器的示例具体实施的框图。
图8B是示出根据本公开的某些方面的边沿脉冲转换器的输入信号和输出信号的图。
图9A和图9B例示了根据本公开的某些方面的用于实现DCIM电路的集成电路(IC)布局。
图10例示了根据本公开的某些方面的使用复用器实现以促进对加法器树和累加器的重用的DCIM电路。
图11是例示根据本公开的某些方面的用于存储器中计算的示例操作的流程图。
图12例示了根据本公开的某些方面的被配置为在神经网络中执行用于信号处理的操作的示例电子设备。
为了促成理解,在可能之处使用了相同的参考标号来指定各附图共有的相同元素。构想了一个方面的元素和特征可有益地被纳入到其他方面中而无需进一步引述。
具体实施方式
本公开的各方面提供了用于执行存储器中计算(CIM)以处置数据密集型处理(诸如实现机器学习模型)的装置、方法、处理系统和计算机可读介质。一些方面提供了用于使用数字计数器执行数字CIM(DCIM)的技术,每个数字计数器累加存储器的多个列中的相应列上的输出信号。如本文所用,“累加器”通常是指用于跨多个周期累加输出信号的电路。“加法器电路”或“加法器树”通常是指用于将多个存储器单元(例如,跨字线或列的存储器单元)的输出信号相加的数字加法器。
本文所描述的各方面提供了用于数字CIM应用的高速且节能的累加器。CIM电路的字线可被顺序地激活,并且数字计数器可用于执行累加并且在字线中的两个或更多个字线被顺序地激活之后提供累加结果。例如,数字计数器可用于对在多个计算周期之后在存储器的列上生成的逻辑高的数量进行计数。
本文所提供的DCIM电路具有不随存储器阵列的激活行的数目而缩放的每位能量消耗,从而与常规具体实施相比减小DCIM电路的总能量消耗。与常规具体实施相比,本文所描述的各方面还允许通过针对多个权重列组重用加法器树和累加器来降低整个CIM系统的面积消耗。此外,本文所提供的DCIM电路具有自定时操作,其实现高速操作,因为与使用时钟信号相反,使用相应列上的信号对数字计数器进行定时。来自数字计数器的部分和可在以较慢时钟操作的全局累加器上累加,从而导致CIM系统的较高能量效率。在一些方面,通过DCIM电路内的本地时钟的自定时操作和相移来减少电磁干扰(EMI),如本文更详细描述的。
基于CIM的机器学习(ML)/人工智能(AI)可用于很多任务,包括图像和音频处理以及作出无线通信决策(例如,以优化或至少增加吞吐量和信号质量)。此外,CIM可基于各种类型的存储器架构,诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)(例如,基于如图4中的SRAM单元)、磁阻式随机存取存储器(MRAM)以及电阻式随机存取存储器(ReRAM或RRAM),并且可附接到各种类型的处理单元,包括中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、现场可编程门阵列(FPGA)、AI加速器等。一般来说,CIM可以有益地减少“存储器墙”问题,该“存储器墙”问题是其中数据进出存储器的移动比数据的计算消耗多的功率。因此,通过执行存储器中计算,可实现显著的功率节省。这对于各种类型的电子设备特别有用,诸如较低功率边缘处理设备、移动设备等。
例如,移动设备可包括存储器设备,该存储器设备被配置用于存储数据并执行存储器中计算操作(也称为“存储器中计算(compute-in-memory)”操作)。该移动设备可被配置为基于由该移动设备生成的数据诸如由该移动设备的相机传感器生成的图像数据执行ML/AI运算。该移动设备的存储器控制器单元(MCU)可以因此将来自另一板上存储器(例如,闪存或RAM)的权重加载到该存储器设备的CIM阵列中并且分配输入特征缓冲器和输出(例如,输出激活)缓冲器。该处理设备可接着通过将例如层加载到输入缓冲器中并且用加载到CIM阵列中的权重处理该层来开始图像数据的处理。可针对图像数据的每个通道重复此处理,并且输出(例如,输出激活)可以存储在输出缓冲器中并且随后由该移动设备用于ML/AI任务,诸如面部识别。
关于神经网络、深度神经网络和深度学习的简要背景
神经网络被组织成互连节点的层。一般来说,节点(或神经元)是计算发生的位置。例如,节点可以将输入数据与放大或抑制该输入数据的一组权重(或系数)组合。因此,输入信号的放大或抑制可以被认为是对关于网络试图学习的任务的各种输入的相对重要性的分配。一般来说,对输入权重乘积求和(或累加),然后通过节点的激活函数传递该和,以确定该信号是否以及在多大程度上应该进一步穿过网络。
在最基本的具体实施中,神经网络可具有输入层、隐藏层和输出层。“深度”神经网络通常具有多于一个隐藏层。
深度学习是一种训练深度神经网络的方法。一般来说,深度学习将到网络的输入映射到来自网络的输出,并且因此有时称为“通用逼近器”,因为深度学习可以学习在任何输入x和任何输出y之间逼近未知函数f(x)=y。换句话说,深度学习找到将x变换为y的正确的f。
更具体地,深度学习基于相异的特征集合(其是来自前一层的输出)来训练每一节点层。因此,对于深度神经网络的每个连续层,特征变得更加复杂。因此,深度学习是强大的,因为它可以通过学习在每层中以连续更高的抽象层次表示输入来从输入数据逐渐提取更高级别的特征并执行复杂的任务(诸如对象识别),从而建立输入数据的有用特征表示。
例如,如果向深度神经网络的第一层呈现视觉数据,则第一层可以学习识别输入数据中的相对简单的特征(诸如边缘)。又如,如果向深度神经网络的第一层呈现听觉数据呈现,则第一层可以学习识别输入数据中的特定频率中的频谱功率。基于第一层的输出,深度神经网络的第二层然后可以学习识别特征的组合,诸如用于视觉数据的简单形状或用于听觉数据的声音的组合。更高层可以学习识别视觉数据中的复杂形状或听觉数据中的字词。再更高层可以学习识别常见的视觉对象或口语短语。因此,当应用于具有自然层次结构的问题时,深度学习架构可以表现得尤其出色。
神经网络中的层连接
神经网络(诸如深度神经网络(DNN))可以设计成具有各层之间的多种连接模式。
图1A示出了全连接的神经网络102的示例。在全连接的神经网络102中,第一层中的每个节点将其输出传送到第二层中的每个节点,使得第二层中的每个节点将从第一层中的每个节点接收输入。
图1B示出了局部连接的神经网络104的示例。在局部连接的神经网络104中,第一层中的节点可以连接到第二层中有限数量的节点。更一般来说,局部连接的神经网络104的局部连接层可以被配置为使得层中的每个节点将具有相同或相似的连接模式,但连接强度(或权重)可以具有不同的值(例如,与第一层节点的局部区域110、112、114和116相关联的值)。局部连接的连接模式可能在较高层中产生空间上不同的感受野,因为给定区域中的较高层节点可以接收输入,该输入通过训练被调谐到网络的总输入的受限部分的属性。
一种类型的局部连接的神经网络是卷积神经网络(CNN)。图1C例示了卷积神经网络106的示例。卷积神经网络106可被配置为使得与针对第二层中的每个节点的输入相关联的连接强度被共享(例如,对于与第一层节点的另一局部区域重叠的局部区域108)。卷积神经网络非常适合于其中输入的空间位置有意义的问题。
一种类型的卷积神经网络是深度卷积网络(DCN)。深度卷积网络是多个卷积层的网络,其还可以被配置有例如池化层和归一化层。
图1D例示了被设计成识别由图像捕获设备130生成的图像126中的视觉特征的DCN100的示例。例如,如果图像捕获设备130是安装在交通工具中或交通工具上(或以其他方式与交通工具一起移动)的相机,则DCN 100可用各种监督学习技术来训练以标识交通标志以及甚至交通标志上的数字。DCN 100可以同样被训练用于其他任务,诸如标识车道标记或标识交通信号灯。这些仅是一些示例任务,并且许多其他任务是可能的。
在图1D的示例中,DCN 100包括特征提取区段和分类区段。在接收到图像126时,卷积层132将卷积内核(例如,如图2中描绘和描述的)应用于图像126以生成第一组特征图118(或中间激活)。通常,“内核”或“滤波器”包括被设计成强调输入数据信道的不同方面的权重的多维阵列。在各种示例中,“内核”或“滤波器”可互换地用于指代应用于卷积神经网络中的权重集合。
第一组特征图118随后可由池化层(例如,最大池化层,未示出)进行子采样以生成第二组特征图120。池化层可以减小第一组特征图118的大小,同时保持大部分信息以便提高模型性能。例如,第二组特征图120可以由池化层从28×28矩阵下采样到14×14矩阵。
该过程可以通过许多层重复。换句话说,第二组特征图120可以经由一个或多个后续卷积层(未示出)进行进一步卷积,以生成一个或多个后续组的特征图(未示出)。
在图1D的示例中,将第二组特征图120提供给全连接层124,该全连接层又生成输出特征向量128。输出特征向量128的每个特征可以包括与图像126的可能特征相对应的数字,诸如“标志”、“60”和“100”。在一些情况下,softmax函数(未示出)可以将输出特征向量128中的数字转换为概率。在这种情况下,DCN 100的输出122是图像126包括一个或多个特征的概率。
softmax函数(未示出)可以将输出特征向量128的各个元素转换成概率,以便DCN100的输出122是图像126包括一个或多个特征(诸如其上具有数字“60”的标志,如在图像126中)的一个或多个概率。因此,在本示例中,输出122中“标志”和“60”的概率应当高于输出122中的其他元素(诸如“30”、“40”、“50”、“70”、“80”、“90”和“100”)的概率。
在训练DCN 100之前,由DCN 100产生的输出122可能不正确。因此,可以计算输出122与先验已知的目标输出之间的误差。例如,这里目标输出是对图像126包括“标志”和数字“60”的指示。利用已知的目标输出,然后可以通过训练来调整DCN 100的权重,使得DCN100的后续输出122实现(具有高概率的)目标输出。
为了调整DCN 100的权重,学习算法可以计算权重的梯度向量。梯度向量可以指示以特定方式调整权重的情况下误差将增加或减少的量。该权重可随后被调整以减小误差。这种调整权重的方式可以称为“反向传播”,因为此调整过程涉及通过DCN 100的层的“后向传递”。
在实践中,可以在少量示例来计算权重的误差梯度,使计算出的梯度接近真实的误差梯度。这种近似方法可被称为“随机梯度下降”。可以重复随机梯度下降,直到整个系统的可实现错误率停止下降或直到错误率达到目标水平。
在训练之后,可以向DCN 100呈现新图像,并且DCN 100可以生成推断,诸如分类或各种特征在新图像中的概率。
用于卷积神经网络的卷积技术
卷积通常用于从输入数据集中提取有用的特征。例如,在如上所述的卷积神经网络中,卷积使得能够使用在训练期间自动学习其权重的内核和/或滤波器来提取不同的特征。然后组合所提取的特征以进行推断。
可以在卷积神经网络的每一层之前和/或之后应用激活函数。激活函数通常是确定神经网络的节点的输出的数学函数。因此,激活函数基于节点的输入是否与模型的预测相关来确定节点是否应当传递信息。在一个示例中,其中y=conv(x)(即y是x的卷积),x和y两者通常被认为是“激活”。然而,就特定卷积运算而言,x也可被称为“预激活”或“输入激活”,因为x存在于特定卷积之前,并且y可被称为“输出激活”或“特征图”。
图2描绘了传统卷积的示例,其中使用5×5×3卷积内核204和步幅(或步长)1来卷积12像素×12像素×3通道输入图像。得到的特征图206是8像素×8像素×1通道。如在该示例中所见,与输出数据相比,传统卷积可以改变输入数据的维度(这里,从12像素×12像素到8像素×8像素),包括通道维度(这里,从3通道到1通道)。
减少计算负担(例如,以每秒浮点运算(FLOP)测量)和与包括卷积层的神经网络相关联的参数数量的一种方式是对卷积层进行因子分解。例如,诸如图2中描绘的空间可分离卷积可被因子分解为两个分量:(1)深度卷积,其中每个空间通道通过深度卷积独立地卷积(例如,空间融合);以及(2)逐点卷积,其中所有空间通道被线性组合(例如,通道融合)。在图3A和图3B中描绘了深度可分离卷积的示例。一般来说,在空间融合期间,网络从空间平面学习特征,并且在通道融合期间,网络跨通道学习这些特征之间的关系。
在一个示例中,可使用用于空间融合的5×5内核以及用于通道融合的1×1内核来实现深度可分离卷积。特别地,通道融合可以使用迭代通过深度d的输入图像中的每个单个点的1×1×d内核,其中内核的深度d通常匹配输入图像的通道的数量。经由逐点卷积的通道融合对于有效计算的维度减少是有用的。应用1×1×d内核并且在内核之后添加激活层可给出网络添加深度,这可增加网络的性能。
特别地,在图3A中,12像素×12像素×3通道输入图像302与包括三个单独内核304A至304C的滤波器卷积,每个核具有5×5×1维度,以生成8像素×8像素×3通道的特征图306,其中每个通道由内核304A至304C中的单独内核生成。
然后特征图306使用逐点卷积运算与具有维度1×1×3的内核308进一步卷积,以生成8像素×8像素×1通道的特征图310。如在该示例中所描绘的,特征图310具有降低的维度(1个通道对3个通道),这允许用该特征图进行更有效的计算。
尽管图3A和图3B中的深度可分离卷积的结果基本上类似于图2中的常规卷积,但计算的数量显著减少,并且因此深度可分离卷积在网络设计允许的情况下提供显著的效率增益。
尽管在图3B中未描绘,但可使用多个(例如,m个)逐点卷积内核308(例如,滤波器的各个部件)来增加卷积输出的通道维度。因此,例如,可生成m=256个1×1×3内核308,其中每个输出是8像素×8像素×1通道特征图(例如,特征图310),并且可堆叠这些特征图以获得8像素×8像素×256通道的所得特征图。所得到的通道维度的增加为训练提供了更多参数,这可以改善卷积神经网络标识特征(例如,在输入图像302中)的能力。
示例存储器中计算(CIM)架构
数字存储器中计算(CIM)用于解决由于在处理单元与存储器之间移动数据以进行逻辑运算而产生的能量和速度瓶颈。例如,数字CIM可用于执行存储器中的逻辑运算,诸如位并行/位串行逻辑运算(例如,AND运算)。然而,机器学习工作负荷仍涉及最终累加,其可使用存储器阵列外部的电路来执行。由于存储器中的每个行被顺序地读取,因此可在存储器附近实现高速且节能的累加器以实现更好的性能(例如,增加每秒万亿次运算(TOPS))。
图4例示了可在CIM阵列中实现的静态随机存取存储器(SRAM)的示例存储器单元400。存储器单元400可被称为“8晶体管(8T)SRAM单元”,因为存储器单元400用八个晶体管实现。
如图所示,存储器单元400可包括具有输出端414和输出端416的交叉耦合反相器对424。如图所示,交叉耦合反相器对输出端414经由传输门晶体管402选择性地耦合到写入位线(WBL)406,并且交叉耦合反相器对输出端416经由传输门晶体管418选择性地耦合到互补写入位线(WBLB)420。WBL 406和WBLB 420被配置为提供待写入(例如,存储)于交叉耦合反相器对424中的互补数字信号。WBL和WBLB可用于将神经网络权重的位存储在存储器单元400中。传输门晶体管402、418的栅极可耦合到写入字线(WWL)404,如图所示。例如,可将待写入的数字信号提供到WBL(并且将数字信号的补码提供到WBLB)。然后通过向WWL 404提供逻辑高信号来接通此处被实现为n型场效应晶体管(NFET)的传输门晶体管402、418,从而导致数字信号被存储在交叉耦合反相器对424中。
如图所示,交叉耦合反相器对输出端414可耦合到晶体管410的栅极。晶体管410的源极可耦合到基准电位节点(VSS或电接地),并且晶体管410的漏极可耦合到晶体管412的源极。晶体管412的漏极可耦合到读取位线(RBL)422,如图所示。晶体管412的栅极可经由读取字线(RWL)408来控制。RWL 408可经由激活输入信号来控制。
在读取周期期间,RBL 422可预充电到逻辑高。如果RWL 408上的激活输入和存储在交叉耦合反相器对输出端414处的权重位两者都为逻辑高,则晶体管410、412两者都接通,从而将RBL 422电耦合到晶体管410的源极处的VSS并将RBL 422放电到逻辑低。如果RWL408上的激活输入或存储在交叉耦合反相器对输出端414处的权重是逻辑低,则晶体管410、412中的至少一个晶体管将关断,使得RBL 422保持逻辑高。因此,存储器单元400在RBL 422处的输出仅当权重位和激活输入两者都为逻辑高时为逻辑低,并且反之为逻辑高,从而有效地实现NAND门运算。
图5例示了根据本公开的某些方面的用于CIM的电路500。电路500包括具有字线5040至50431(也称为“行”)和列5060至5067的CIM阵列501。字线5040至50431统称为“字线(WL)504”,并且列5060至5067统称为“列506”。如图所示,CIM阵列501可包括被配置为将激活信号提供到字线504的激活电路590。虽然用32个字线和8个列来实现CIM阵列501以促进理解,但可用任何数目个字线或列来实现CIM阵列。如图所示,存储器单元5020-0至50231-7(统称为“存储器单元502”)在WL 504和列506的交叉处实现。
存储器单元502中的每个存储器单元可使用关于图4所描述的存储器单元架构来实现。如图所示,可将激活输入a(0,0)到a(31,0)提供到相应字线504,并且存储器单元502可存储神经网络权重w(0,0)到w(31,7)。例如,存储器单元5020-0到5020-7可存储权重位w(0,0)到w(0,7),存储器单元5021-0到5021-7可存储权重位w(1,0)到w(1,7),等等。每一字线可存储多位权重。例如,权重位w(0,0)至w(0,7)可表示神经网络的权重的八个位。
如图所示,列506中的每个列耦合到读出放大器(SA)5030至5037。读出放大器5030、5031至5037统称为“读出放大器503”。读出放大器503中的每个读出放大器的输入端可耦合到相应列上的存储器单元的输出端,如图所示。
读出放大器503的输出端耦合到列累加器电路553。例如,读出放大器503中的每个读出放大器的输出端耦合到列累加器电路553的累加器5070、5071至5077(统称为“累加器507”)中的一个累加器。累加器507中的每个累加器跨多个计算周期执行对读出放大器503中的相应读出放大器的输出信号的累加。例如,在每个计算周期期间,针对单个字线执行计算,并且使用累加器507中的相应累加器将针对字线的计算的输出信号与其他计算周期期间的输出信号累加。在多个计算周期(例如,针对32个字线的32个周期)之后,累加器507中的每个累加器提供累加结果。
在电路500的操作期间,激活电路590将第一组599激活输入a(0,0)到a(31,0)提供到存储器单元502以用于在第一激活周期期间进行计算。激活输入a(0,0)至a(31,0)一行被提供一次,并且使用累加器507中的相应累加器来累加针对每个行的每个计算的输出,如所描述。在后续激活周期期间,对其他组激活输入(诸如表示激活参数的第二最高有效位的激活输入a(0,1)至a(31,1)等)执行相同的操作,直到表示激活参数的最低有效位的激活输入被处理为止。
一旦已在每个激活周期期间完成多个计算周期,累加器507的输出就被提供给权重移位加法器树电路512以跨列相加,并且权重移位加法器树电路512的输出被提供给激活移位累加器电路516以跨激活周期累加。换句话说,激活移位累加器电路516在完成激活周期之后累加计算结果。
权重移位加法器树电路512包括多个权重移位加法器(例如,权重移位加法器514),每个权重移位加法器包括位移位相加电路以促进对位移位加法运算的执行。换句话说,列5060上的存储器单元可存储用于相应权重的最高有效位(MSB),并且列5067上的存储器单元可存储用于相应权重的最低有效位(LSB)。因此,当跨列506执行加法时,执行位移位操作以使位移位,从而考虑相关联列上的位的有效性。换句话说,一旦跨多个计算周期在累加器507中的每个累加器处发生逐位累加,权重移位加法器树电路512就组合八列加权和(例如,在每个激活周期期间提供针对给定激活位位置的累加结果),并且激活移位累加器电路516组合来自多个(例如,八个)激活周期的结果以输出最终累加结果。
权重移位加法器树电路512的输出被提供给激活移位累加器电路516,如所描述。激活移位累加器电路516包括位移位电路518和累加器520。位移位电路518基于激活周期执行位移位运算。例如,对于使用八个激活周期处理的8位激活参数,位移位电路可针对第一激活周期执行8位移位,针对第二激活周期执行7位移位,等等。在激活周期之后,使用累加器520累加位移位电路518的输出以生成DCIM输出信号。
在一些方面,CIM阵列501、激活电路590和列累加器电路553以比权重移位加法器树电路512和激活移位累加器电路516高的频率(例如,八倍或更多)操作。如图所示,半锁存器电路5090、5091至5097(统称为“半锁存器电路509”)可耦合到累加器507的相应输出端。每个半锁存器电路保存累加器507中的相应累加器的输出,并且一旦已完成多个计算周期,就将该输出提供给权重移位加法器树电路512的相应输入端。换句话说,半锁存器电路通常是指在时钟周期开始时保存数字输入(例如,累加器507中的一个累加器的输出)并且在时钟周期结束时将该数字输入提供给锁存器电路的输出端的锁存器电路。半锁存器电路509促进从列累加器电路553的较高频率操作到权重移位加法器树电路512的较低频率操作的转变。半锁存器电路509在不使用其他组件(例如,额外的缓冲器)的情况下允许时钟域之间的同步。
某些方面提供了实现无加法器部分和生成的数字计数器(例如,被配置为对时域中的逻辑高的数量进行计数的1位递增计数器),如关于图6更详细描述的。换句话说,可使用对在读出放大器503中的相应读出放大器的输出端处提供的逻辑高的数量进行计数的数字计数器来实现累加器507中的每个累加器。
图6例示了根据本公开的某些方面的具有累加器(例如,累加器507中的一个累加器)的使用脉冲发生器602和数字计数器604实现的的DCIM电路。如图所示,存储器单元(诸如在图6中被示为NAND门的存储器单元5020-0)可基于激活输入和所存储的权重位提供计算结果。激活输入和所存储的权重位中的每一者可具有50%切换概率。换句话说,激活输入为逻辑高的概率可为50%并且为逻辑低的概率可为50%。类似地,所存储的权重位为逻辑高的概率可为50%并且为逻辑低的概率可为50%。因此,由于NAND运算,NAND门的输出可具有25%切换概率(例如,为逻辑高的概率为25%并且为逻辑低的概率为75%)。
脉冲发生器602针对相关联的读出放大器的每个逻辑高输出生成脉冲。例如,在第一计算周期期间,如果存储器单元5020-0的输出为逻辑高,则脉冲发生器602生成脉冲,并且在第二计算周期期间,如果存储器单元5020-1的输出为逻辑高,则脉冲发生器602生成脉冲,等等。脉冲发生器602的输出被提供给数字计数器604。数字计数器对由脉冲发生器602生成的脉冲的数目进行计数,并且生成数字计数器输出信号(例如,包括位q(0)至q(5)的六位数字信号)。
如图所示,数字计数器604包括触发器6060至6065(统称为“触发器606”),其中脉冲发生器602的输出被提供给触发器6060的时钟(CLK)输入。每个触发器的互补输出被反馈到该触发器的数据(D)输入,并且每个触发器的输出(Q)被提供给触发器链中的后续触发器的CLK。
如图所示,触发器6060具有触发器606的最高能量消耗,并且触发器6065具有触发器606的最低能量消耗。例如,如果脉冲发生器602消耗0.5飞焦(fJ)每步(例如,每计算周期),则触发器6060消耗0.8fJ/步,触发器6061消耗0.4fJ/步,触发器6062消耗0.2fJ/步,触发器6063消耗0.1fJ/步,触发器6064消耗0.05fJ/步,并且触发器6065消耗0.025fJ/步。换句话说,触发器6060生成数字计数器输出信号的最低有效位(LSB)q(0),并且触发器6065生成数字计数器输出信号的最高有效位(MSB)q(5)。触发器6060的能量消耗是触发器6061的能量消耗的两倍,因为触发器6061的输出的切换概率是触发器6060的输出的切换概率的一半。类似地,触发器6061的能量消耗是触发器6062的能量消耗的两倍,因为触发器6062的输出的切换概率是触发器6061的输出的切换概率的一半,等等。
数字计数器604的每一级实际上是二分分频器,其中一个触发器级的切换由前一触发器级的输出信号控制。实现用于数字计数器的附加级(例如,增加数字计数器输出信号的位数)对DCIM电路的能量消耗具有极小影响,因为使用附加级,能量消耗渐近地增加。半锁存器电路可耦合到针对每个列的数字计数器的输出端以将计数器的输出同步到慢时钟域(DCIM时钟)。换句话说,位q(0)至q(5)中的每个位可被提供给半锁存器电路(例如,半锁存器电路509中的一个半锁存器电路)。在一些方面,延迟电路可用于减少存储器的列之间的干扰,如关于图7更详细描述的。
图7是例示根据本公开的某些方面的使用延迟电路实现以减少电磁干扰(EMI)的CIM电路的框图。例如,如图所示,8位权重可被存储在存储器单元502中,并且使用读出放大器503、列累加器507、权重移位加法器树电路512和激活移位累加器电路516进行处理,如本文所描述。(例如,与不同延迟相关联的)延迟电路750可在读出放大器503与列累加器507之间实现,从而实现对提供给列累加器507的信号的相位的偏移。例如,单个延迟元件(标记为“1D”)可耦合在读出放大器5030与列累加器5070之间,两个延迟元件(标记为“2D”)可耦合在读出放大器5031与列累加器5071之间,等等。以这种方式,提供给列累加器507的信号的下降/上升沿被偏移,从而减小列之间的EMI。换句话说,在数字计数器604的输入端处添加偏斜(例如,经由一个或多个延迟单元)以减小由于原本为同时切换噪声的EMI。
如图所示,时钟发生器电路770可用于生成DCIM时钟和本地时钟。例如,时钟发生器电路770可包括被配置为生成DCIM时钟的时钟发生器771。时钟发生器771可使用诸如锁相环路(PLL)或环形振荡器的任何合适的时钟生成电路来实现。权重移位加法器树电路512可接收DCIM时钟并对该DCIM时钟进行操作。对于某些方面,时钟发生器电路770可包括变频器702,其可用于根据DCIM时钟生成本地时钟,激活电路590基于该本地时钟进行操作。虽然变频器702被示为时钟发生器电路770的一部分,但在一些具体实施中,变频器702可以与时钟发生器电路770分离。变频器通常是指接收具有第一频率的时钟信号并生成具有第二不同频率的第二时钟信号的任何电路。
变频器可使用任何合适的技术来实现。例如,变频器可被实现为由系统时钟定时调制(例如,使用DCIM时钟调制),或通过根据系统时钟的上升沿或下降沿生成脉冲的环形振荡器(RO),如关于图8A和图8B更详细描述的。以这种方式,本地时钟可具有与DCIM时钟同步的上升沿。
图8A是示出根据本公开的某些方面的变频器702的示例具体实施的框图。图8B是示出边沿脉冲转换器的输入信号840和输出信号842的图。变频器702可包括一个或多个边沿脉冲转换器8021、8022至802n(统称为“边沿脉冲转换器802”)。边沿脉冲转换器802中的每个边沿脉冲转换器在呈现给边沿脉冲转换器的输入信号的每个上升沿和每个下降沿处生成脉冲。例如,如图8B所示,边沿脉冲转换器8021在检测到输入信号840的上升沿820之后生成脉冲822,并且在检测到输入信号840的下降沿824之后生成另一脉冲826。以这种方式,边沿脉冲转换器的输出信号842的频率是边沿脉冲转换器的输入信号840的频率的两倍。串联使用多个边沿脉冲转换器允许对DCIM时钟的频率的上变频以生成本地时钟,如关于图7所描述的。虽然提供边沿脉冲转换器作为变频器的一个示例,但可使用任何合适类型的变频器。
图9A和图9B例示了根据本公开的某些方面的用于实现DCIM电路的集成电路(IC)布局900。如图9A所示,每个SRAM列可使用鳍(例如,用于实现鳍式场效应晶体管(FinFET))来实现并且可具有10nm-14nm的鳍间距。鳍间距是指从一个鳍到相邻鳍的距离。如本文所描述,SRAM列的存储器单元耦合到读出放大器。如图所示,读出放大器的输出端耦合到使用沿着具有鳍的每个列级联的触发器实现的数字计数器。计数器设计可具有10nm-12nm的鳍间距。
如图9B所示,每个列可包括八晶体管(8T)SRAM列(例如,存储器单元的列,每个单元使用8个晶体管来实现)、单端读出放大器(例如,读出放大器5030)、脉冲发生器(例如,脉冲发生器602)、用于生成如图6所示的位q(0)至q(5)中的每个位的1位递增计数器电路(例如,触发器606中的相应触发器)、以及用于位q(0)至q(5)中的每个位的锁存器电路。如图所示,二元加法器树(例如,权重移位加法器树电路512)和累加器(例如,激活移位累加器电路516)也耦合到锁存器电路的输出端。在一些方面,可使用复用器来促进对加法器树电路512和累加器电路516的重用,如关于图10更详细描述的。
图10例示了根据本公开的某些方面的使用复用器1004实现以促进对加法器树和累加器的重用的DCIM电路1000。如图所示,CIM阵列501(例如,包括8T SRAM单元)可包括多个权重列组,每个权重列组具有与具有多个位的权重参数相关联的列集合。例如,权重列组1002可指在每个行上存储8位权重的列506。如图所示,每个权重列组可耦合到八个累加器(例如,数字计数器)和48个(例如,8个累加器x6个位每累加器)半锁存器电路,如本文所描述。
在一些方面,部分和运算可使用跨权重列组的共享累加器(例如,累加器电路516)来实现,从而在每个乘法和累加(MAC)周期结束时提供一个累加结果。二元加法器树(例如,权重移位加法器树电路512)和21位累加器(例如,累加器电路516)消耗DCIM电路的总面积的相当大部分。因此,跨多个权重列组共享二元加法器树和激活移位累加器减少了DCIM电路的总面积消耗。
如图所示,在八个激活周期10200至10207(统称为“激活周期1020”)中的每个激活周期期间,出现32个计算周期(C00至C031),如图5所示,一个计算周期针对32个行中的每个行。在激活周期1020之后,针对权重列组的计算输出在半锁存器电路的输出端处可用。
复用器1004可用于单独选择每个权重列组以供使用加法器树电路512和累加器电路516进行处理。例如,在第一权重周期期间,可由复用器1004选择第一权重列组(例如,权重列组1002)上的半锁存器输出(例如,6位输出),并将其提供给加法器树电路512和累加器电路516以供处理,如关于图5所描述的。
在第二权重周期期间,可由复用器选择第二权重列组上的半锁存器输出(例如,6位输出),并将其提供给加法器树电路512和累加器电路516以供处理,等等。被锁存的部分和的时间复用使得能够重用加法器树电路512和累加器电路516。可以每(例如,图7所示的DCIM时钟的)两个时钟周期生成复用器选择信号以选择新的权重列组。换句话说,在每两个时钟周期之后由累加器电路516针对每个列提供一个21位累加结果,一个时钟周期用于经由加法器树电路512执行加法,并且另一时钟周期用于经由累加器电路516进行累加。在一些方面,DCIM时钟的二分型式可用于操作复用器1004、加法器树电路512和累加器电路516,从而增加针对权重列组的加法和累加运算的处理量。
本公开的各方面提供了一种创新的电路和物理设计,其实现了针对任何DCIM产品的高速且节能的累加。所描述的方面不涉及路由时钟信号以生成部分和并且本质上完全自定时,从而允许高速操作。换句话说,用于实现累加器507的数字计数器使用相关联的读出放大器503的输出而不是时钟信号来定时。由于数据划分时钟(例如,图7所示的本地时钟),本公开的各方面提供了DCIM电路的低能量具体实施,因为数字计数器的能量消耗渐近地增加,并且在不使用快速切换部分和分量的情况下,以与划分时钟相关联的速率执行针对每个权重列组的累加。本文所提供的各方面还允许跨权重列组共享累加器(例如,累加器电路516)和二元加法器树(例如,加法器树电路512),从而允许DCIM系统级别的面积减小。本文所描述的DCIM电路还提供较不复杂的设计(例如,因为其既不包括常规具体实施中所使用的任何全加器单元也不包括进位生成单元),从而允许紧凑的具体实施。还可在不修改用于CIM应用的SRAM阵列的情况下实现本文所描述的各方面。电路与提供全阵列效率的SRAM阵列列匹配,如关于图9A和图9B所描述的。如本文所描述,不同列的处理之间的自定时时钟和偏斜(例如,相位偏移)减小了由同时切换噪声引起的EMI。
用于数字存储器中计算(DCIM)的示例操作
图11是示出根据本公开的某些方面的用于存储器中计算的示例操作1100的流程图。操作1100可由用于CIM的电路(诸如关于图5、图6、图7、图8A、图8B、图9A、图9B和图10所描述的电路500)执行。
在框1101处,该电路可在存储器的多个列中的每个列上的多个存储器单元(例如,存储器单元502)处接收激活输入。在框1105处,该电路经由多个数字计数器中的每个数字计数器(例如,数字计数器604)累加存储器的多个列中的相应列上的输出信号。多个存储器单元存储表示神经网络的权重的多个位,并且多个列中的每个列的多个存储器单元对应于存储器的不同字线(例如,字线504)。在一些方面,该电路经由数字计数器对多个列中的相应列上的输出信号的特定逻辑值(例如,逻辑高)的数量进行计数。在一些方面,该电路经由耦合到多个列中的每个列的脉冲发生器,基于该列上的多个存储器单元的输出信号来生成一个或多个脉冲,其中经由数字计数器累加输出信号是基于该一个或多个脉冲。
在框1110处,该电路经由加法器电路(例如,加法器树电路512)将多个数字计数器的输出信号相加。在框1115处,该电路经由累加器(例如,累加器电路516)累加加法器电路的输出信号。在框1120处,该电路可基于对加法器电路的输出信号的累加来生成DCIM输出信号。在一些方面,该电路经由多个列中的每个列的多个存储器单元,在多个计算周期期间生成输出信号,并且数字计数器被配置为对数字输出信号的逻辑高的数量进行计数。
在一些方面,数字计数器包括触发器集合(例如,触发器606),其中该触发器集合中的第一触发器(例如,触发器6060)的时钟输入耦合到列,并且其中该第一触发器的输出耦合到该触发器集合中的第二触发器(例如,触发器6061)的时钟输入。在一些方面,该电路经由触发器集合中的每个触发器生成由数字计数器生成的输出信号的位。半锁存器电路可耦合到触发器集合中的每个触发器的输出端。
在一些方面,该电路(例如,经由延迟电路750中的一个延迟电路)将第一延迟施加到由多个列中的第一列上的多个存储器单元生成的输出信号,并且(例如,经由延迟电路750中的另一延迟电路)将第二延迟施加到由多个列中的第二列上的多个存储器单元生成的输出信号。第一延迟可不同于第二延迟。
在某些方面,该电路经由另外多个数字计数器中的每个数字计数器累加存储器的多个其他列中的相应列上的输出信号,其中另外多个存储器单元位于多个其他列中的每个列上,另外多个存储器单元存储表示神经网络的权重的多个位,其中多个其他列中的每个列的另外多个存储器单元对应于存储器的不同字线。该电路可以在第一权重周期期间经由复用器(例如,复用器1004)选择来自多个数字计数器的输出信号,基于对输出信号的选择,经由加法器电路将输出信号相加。该电路还可以在第二权重周期期间经由复用器选择来自另外多个数字计数器的其他输出信号,并且基于对其他输出信号的选择,经由加法器电路将其他输出信号相加。
用于存储器中计算的示例处理系统
图12示出了示例电子设备1200。电子设备1200可被配置为执行本文所描述的方法,包括关于图11所描述的操作1100。
电子设备1200包括中央处理单元(CPU)1202,其在一些方面可以是多核CPU。在CPU1202处执行的指令可例如从与CPU 1202相关联的程序存储器加载,或者可从存储器1224加载。
电子设备1200还包括为特定功能定制的附加处理块,诸如图形处理单元(GPU)1204、数字信号处理器(DSP)1206、神经处理单元(NPU)1208、多媒体处理块1210、多媒体处理块1210和无线连接处理块1212。在一个具体实施中,NPU 1208在CPU 1202、GPU 1204和/或DSP 1206中的一者或多者中实现。
在一些方面,无线连接处理块1212可包括例如用于第三代(3G)连接、第四代(4G)连接(例如,4G LTE)、第五代连接(例如,5G或NR)、Wi-Fi连接、蓝牙连接和无线数据传输标准的组件。无线连接处理块1212进一步连接到一个或多个天线1214以促进无线通信。
电子设备1200还可包括与任何方式的传感器相关联的一个或多个传感器处理器1216、与任何方式的图像传感器相关联的一个或多个图像信号处理器(ISP)1218和/或可包括基于卫星的定位系统组件(例如,全球定位系统(GPS)或全球导航卫星系统(GLONASS))以及惯性定位系统组件的导航处理器1220。
电子设备1200还可包括一个或多个输入和/或输出设备1222,诸如屏幕、触敏表面(包括触敏显示器)、物理按钮、扬声器、麦克风等。在一些方面,电子设备1200的处理器中的一个或多个处理器可以基于高级精简指令集计算(RISC)机(ARM)指令集。
电子设备1200还包括存储器1224,该存储器代表一个或多个静态和/或动态存储器,诸如动态随机存取存储器、基于闪存的静态存储器等。在该示例中,存储器1224包括计算机可执行组件,该计算机可执行组件可由电子设备1200的前述处理器中的一个或多个处理器或CIM控制器1232(也称为“控制电路”)执行。例如,电子设备1200可包括CIM电路1226,诸如本文所描述的电路500。CIM电路1226可经由CIM控制器1232来控制。例如,在一些方面,存储器1224可包括用于存储(例如,将权重存储在存储器单元中)的代码1224A、用于计算(例如,通过施加激活输入来执行神经网络计算)的代码1224B。如所例示,CIM控制器1232可包括用于存储(例如,将权重存储在存储器单元中)的电路1228A和用于计算(例如,通过施加激活输入来执行神经网络计算)的电路1228B。所描绘的组件以及其他未描绘的组件可被配置为执行本文所描述的方法的各个方面。
在一些方面,诸如在电子设备1200是服务器设备的情况下,可从图12中所描绘的示例省略各个方面,诸如多媒体处理块1210、无线连接处理块1212、天线1214、传感器处理器1216、ISP 1218或导航处理器1220中的一者或多者。
示例条款
条款1.一种用于存储器中计算的电路,包括:存储器,所述存储器具有多个列;多个存储器单元,所述多个存储器单元位于所述存储器的每个列上,所述多个存储器单元被配置为存储表示神经网络的权重的多个位,其中所述多个列中的每个列上的所述多个存储器单元位于所述存储器的不同字线上;多个数字计数器,所述多个数字计数器中的每个数字计数器耦合到所述存储器的所述多个列中的相应列;加法器电路,所述加法器电路耦合到所述多个数字计数器的输出端;和累加器,所述累加器耦合到所述加法器电路的输出端。
条款2.根据条款1所述的电路,还包括脉冲发生器,所述脉冲发生器具有耦合到所述相应列的输入端,其中所述脉冲发生器的输出端耦合到所述数字计数器的输入端。
条款3.根据条款1至2中任一项所述的电路,其中所述多个列中的每个列上的所述多个存储器单元被配置为在多个计算周期期间生成数字输出信号,并且其中所述数字计数器被配置为对所述数字输出信号的逻辑高的数量进行计数。
条款4.根据条款1至3中任一项所述的电路,其中所述数字计数器包括1位递增计数器电路。
条款5.根据条款1至4中任一项所述的电路,其中所述数字计数器包括触发器集合,其中所述触发器集合中的第一触发器的时钟输入耦合到所述列,并且其中所述第一触发器的输出耦合到所述触发器集合中的第二触发器的时钟输入。
条款6.根据条款5所述的电路,其中所述触发器集合中的每个触发器的输出提供由所述数字计数器生成的数字信号的位。
条款7.根据条款5至6中任一项所述的电路,还包括半锁存器电路,所述半锁存器电路耦合到所述触发器集合中的相应触发器的输出端。
条款8.根据条款1至7中任一项所述的电路,还包括延迟电路,每个延迟电路耦合在所述多个列中的所述相应列上的所述多个存储器单元与所述多个数字计数器中的相应数字计数器之间。
条款9.根据条款8所述的电路,其中所述多个列上的所述延迟电路具有不同的延迟。
条款10.根据条款1至9中任一项所述的电路,还包括:另外多个存储器单元,所述另外多个存储器单元位于所述存储器的多个其他列中的每个列上,所述另外多个存储器单元被配置为存储表示所述神经网络的权重的多个位,其中所述多个其他列中的每个列上的所述另外多个存储器单元位于所述存储器的所述不同字线上;另外多个数字计数器,所述另外多个数字计数器中的每个数字计数器耦合到所述存储器的所述多个其他列中的相应列;和复用器,所述复用器耦合到所述多个数字计数器的所述输出端和所述另外多个数字计数器的输出端。
条款11.根据条款10所述的电路,其中所述复用器被配置为:在第一权重周期期间将所述多个数字计数器的输出信号提供给所述加法器电路;以及在第二权重周期期间将所述另外多个数字计数器的输出信号提供给所述加法器电路。
条款12.根据条款1至11中任一项所述的电路,其中所述加法器电路包括加法器树,所述加法器树被配置为将所述多个数字计数器的输出信号相加。
条款13.根据条款12所述的电路,其中所述加法器树的一个或多个加法器包括位移位相加电路。
条款14.根据条款1至13中任一项所述的电路,还包括:时钟发生器电路,所述时钟发生器电路具有被配置为输出第一时钟信号的第一输出端和被配置为输出第二时钟信号的第二输出端;和激活电路,所述激活电路被配置为将激活信号提供给所述多个存储器单元,其中:所述激活电路耦合到所述时钟发生器电路的所述第一输出端,并且被配置为基于所述第一时钟信号进行操作;并且所述加法器电路耦合到所述时钟发生器电路的所述第二输出端,并且被配置为基于所述第二时钟信号进行操作,所述第二时钟信号具有与所述第一时钟信号不同的频率。
条款15.根据条款14所述的电路,其中所述时钟发生器电路包括边沿脉冲转换器,所述边沿脉冲转换器被配置为通过基于检测所述第二时钟信号的边沿而生成脉冲来生成所述第一时钟信号。
条款16.根据条款15所述的电路,其中所述边沿包括上升沿。
条款17.根据条款1至16中任一项所述的电路,还包括读出放大器,所述读出放大器耦合在所述相应列与所述数字计数器之间。
条款18.根据条款1至17中任一项所述的电路,其中:所述多个存储器单元被配置为基于不同的激活输入而被顺序地激活;并且所述数字计数器被配置为在所述多个存储器单元被顺序地激活之后累加来自所述多个存储器单元的输出信号。
条款19.一种用于存储器中计算的方法,包括:经由多个数字计数器中的每个数字计数器累加存储器的多个列中的相应列上的输出信号,其中多个存储器单元位于所述多个列中的每个列上,所述多个存储器单元存储表示神经网络的权重的多个位,其中所述多个列中的每个列上的所述多个存储器单元位于所述存储器的不同字线上;经由加法器电路将所述多个数字计数器的输出信号相加;以及经由累加器累加所述加法器电路的输出信号。
条款20.根据条款19所述的方法,还包括:经由耦合到所述多个列中的每个列的脉冲发生器,基于所述列上的所述多个存储器单元的所述输出信号来生成一个或多个脉冲,其中经由所述数字计数器累加所述输出信号基于所述一个或多个脉冲。
条款21.根据条款19至20中任一项所述的方法,还包括:经由所述数字计数器对多个列中的所述相应列上的所述输出信号的特定逻辑值的数量进行计数。
条款22.根据条款19至21中任一项所述的方法,还包括:经由所述多个列中的每个列上的所述多个存储器单元,在多个计算周期期间生成输出信号,其中所述数字计数器被配置为对所述数字输出信号的逻辑高的数量进行计数。
条款23.根据条款19至22中任一项所述的方法,其中所述数字计数器包括1位递增计数器电路。
条款24.根据条款19至23中任一项所述的方法,其中所述数字计数器包括触发器集合,其中所述触发器集合中的第一触发器的时钟输入耦合到所述列,并且其中所述第一触发器的输出耦合到所述触发器集合中的第二触发器的时钟输入。
条款25.根据条款24所述的方法,还包括:经由所述触发器集合中的每个触发器生成由所述数字计数器生成的所述输出信号的位。
条款26.根据条款24至25中任一项所述的方法,还包括:经由半锁存器电路锁存所述触发器集合中的每个相应触发器的输出信号。
条款27.根据条款19至26中任一项所述的方法,还包括:将第一延迟施加到由所述多个列中的第一列上的所述多个存储器单元生成的所述输出信号;以及将第二延迟施加到由所述多个列中的第二列上的所述多个存储器单元生成的所述输出信号。
条款28.根据条款27所述的方法,其中所述第一延迟不同于所述第二延迟。
条款29.根据条款19至28中任一项所述的方法,还包括:经由另外多个数字计数器中的每个数字计数器累加所述存储器的多个其他列中的相应列上的输出信号,其中另外多个存储器单元位于所述多个其他列中的每个列上,所述另外多个存储器单元存储表示所述神经网络的权重的多个位,其中所述多个其他列中的每个列上的所述另外多个存储器单元位于所述存储器的不同字线上;在第一权重周期期间经由复用器选择来自所述多个数字计数器的所述输出信号,基于对所述输出信号的所述选择,经由所述加法器电路将所述输出信号相加;在第二权重周期期间经由所述复用器选择来自所述另外多个数字计数器的其他输出信号;以及基于对所述其他输出信号的所述选择,经由所述加法器电路将所述其他输出信号相加。
条款30.一种用于存储器中计算的设备,包括:用于对存储器的多个列中的相应列上的输出信号的特定逻辑值的数量进行计数的装置,其中多个存储器单元位于所述多个列中的每个列上,所述多个存储器单元被配置为存储表示神经网络的权重的多个位,其中所述多个列中的每个列上的所述多个存储器单元位于所述存储器的不同字线上;用于将所述多个数字计数器的输出信号相加的装置;以及用于累加用于相加的所述装置的输出信号的装置。
附加考虑
提供前面的描述是为了使本领域的任何技术人员能够实践本文描述的各个方面。本文讨论的示例不限制在权利要求中阐述的范围、适用性或方面。对这些方面的各种修改对于本领域技术人员而言将是显而易见的,并且本文中所定义的通用原理可以应用于其它方面。例如,在不脱离本公开的范围的情况下,可以对所讨论的元件的功能和布置进行改变。各个示例可以视情况省略、替换或增加各个过程或组件。例如,所描述的方法可以以不同于所描述的顺序执行,并且可以添加、省略或组合各种步骤。此外,针对一些示例描述的特征可以在一些其他示例中组合。例如,可以使用本文中阐述的任何数量个方面来实现装置或实践方法。另外,本公开的范围旨在涵盖使用作为本文所阐述的本公开的各个方面的补充或替代的其他结构、功能、或者结构与功能来实践的此类装置或方法。应当理解,本文所公开的公开内容的任何方面都可以通过权利要求的一个或多个元素来体现。
如本文所使用,术语“示例性”意指“用作示例、实例或例示”。本文中被描述为“示例性”的任何方面未必被解释为比其他方面优选或具有优势。
如本文所用,提到条目列表“中的至少一项”的短语,指代这些条目的任意组合(其包括单一成员)。举例而言,“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)或处理器。通常,在存在附图中例示的操作的情况下,那些操作可以具有带有类似标号的相应的对应装置加功能组件。例如,用于相加的装置可包括加法器树(诸如加法器树510或权重移位加法器树512)或累加器(诸如累加器606)。用于累加的装置可包括累加器,诸如激活移位累加器516。用于读出的装置可包括SA,诸如SA 602。
以下权利要求并非旨在被限定于本文中示出的各方面,而是应被授予与权利要求的语言相一致的全部范围。在权利要求内,除非明确地声明如此,否则对单数形式的元素的提及不旨在意指“一个且仅一个”,而是“一个或多个”。除非另有特别说明,否则术语“一些”指的是一个或多个。任何权利要求元素都不应根据35U.S.C.§112(f)的规定来解释,除非使用短语“用于......的装置”来明确地记载该元素,或者在方法权利要求的情况下,使用短语“用于......的步骤”来记载该元素。贯穿本公开描述的各个方面的元素的对于本领域普通技术人员来说是已知的或稍后将是已知的所有结构和功能等同方案以引用的方式明确地并入本文,并且旨在被权利要求所涵盖。此外,本文所公开的任何内容都不是旨在奉献给公众的,无论这种公开是否在权利要求中明确地记载。

Claims (30)

1.一种用于存储器中计算的电路,包括:
存储器,所述存储器具有多个列;
多个存储器单元,所述多个存储器单元位于所述存储器的每个列上,所述多个存储器单元被配置为存储表示神经网络的权重的多个位,其中所述多个列中的每个列的所述多个存储器单元对应于所述存储器的不同字线;
多个数字计数器,所述多个数字计数器中的每个数字计数器耦合到所述存储器的所述多个列中的相应列;
加法器电路,所述加法器电路耦合到所述多个数字计数器的输出端;和
累加器,所述累加器耦合到所述加法器电路的输出端。
2.根据权利要求1所述的电路,还包括脉冲发生器,所述脉冲发生器具有耦合到所述相应列的输入端,其中所述脉冲发生器的输出端耦合到所述数字计数器的输入端。
3.根据权利要求1所述的电路,其中所述多个列中的每个列的所述多个存储器单元被配置为在多个计算周期期间生成数字输出信号,并且其中所述数字计数器被配置为对所述数字输出信号的逻辑高的数量进行计数。
4.根据权利要求1所述的电路,其中所述数字计数器包括1位递增计数器电路。
5.根据权利要求1所述的电路,其中所述数字计数器包括触发器集合,其中所述触发器集合中的第一触发器的时钟输入耦合到所述列,并且其中所述第一触发器的输出耦合到所述触发器集合中的第二触发器的时钟输入。
6.根据权利要求5所述的电路,其中所述触发器集合中的每个触发器的输出提供由所述数字计数器生成的数字信号的位。
7.根据权利要求5所述的电路,还包括半锁存器电路,所述半锁存器电路耦合到所述触发器集合中的相应触发器的输出端。
8.根据权利要求1所述的电路,还包括延迟电路,每个延迟电路耦合在所述多个列中的所述相应列的所述多个存储器单元与所述多个数字计数器中的相应数字计数器之间。
9.根据权利要求8所述的电路,其中所述多个列的所述延迟电路具有不同的延迟。
10.根据权利要求1所述的电路,还包括:
另外多个存储器单元,所述另外多个存储器单元位于所述存储器的多个其他列中的每个列上,所述另外多个存储器单元被配置为存储表示所述神经网络的权重的多个位,其中所述多个其他列中的每个列的所述另外多个存储器单元对应于所述存储器的所述不同字线;
另外多个数字计数器,所述另外多个数字计数器中的每个数字计数器耦合到所述存储器的所述多个其他列中的相应列;和
复用器,所述复用器耦合到所述多个数字计数器的所述输出端和所述另外多个数字计数器的输出端。
11.根据权利要求10所述的电路,其中所述复用器被配置为:
在第一权重周期期间将所述多个数字计数器的输出信号提供给所述加法器电路;以及
在第二权重周期期间将所述另外多个数字计数器的输出信号提供给所述加法器电路。
12.根据权利要求1所述的电路,其中所述加法器电路包括加法器树,所述加法器树被配置为将所述多个数字计数器的输出信号相加。
13.根据权利要求12所述的电路,其中所述加法器树的一个或多个加法器包括位移位相加电路。
14.根据权利要求1所述的电路,还包括:
时钟发生器电路,所述时钟发生器电路具有被配置为输出第一时钟信号的第一输出端和被配置为输出第二时钟信号的第二输出端;和
激活电路,所述激活电路被配置为将激活信号提供给所述多个存储器单元,其中:
所述激活电路耦合到所述时钟发生器电路的所述第一输出端,并且被配置为基于所述第一时钟信号进行操作;并且
所述加法器电路耦合到所述时钟发生器电路的所述第二输出端,并且被配置为基于所述第二时钟信号进行操作,所述第二时钟信号具有与所述第一时钟信号不同的频率。
15.根据权利要求14所述的电路,其中所述时钟发生器电路包括边沿脉冲转换器,所述边沿脉冲转换器被配置为通过基于检测所述第二时钟信号的边沿而生成脉冲来生成所述第一时钟信号。
16.根据权利要求15所述的电路,其中所述边沿包括上升沿。
17.根据权利要求1所述的电路,还包括读出放大器,所述读出放大器耦合在所述相应列与所述数字计数器之间。
18.根据权利要求1所述的电路,其中:
所述多个存储器单元被配置为基于不同的激活输入而被顺序地激活;并且
所述数字计数器被配置为在所述多个存储器单元被顺序地激活之后累加来自所述多个存储器单元的输出信号。
19.一种用于存储器中计算的方法,包括:
经由多个数字计数器中的每个数字计数器累加存储器的多个列中的相应列上的输出信号,其中多个存储器单元位于所述多个列中的每个列上,所述多个存储器单元存储表示神经网络的权重的多个位,其中所述多个列中的每个列的所述多个存储器单元对应于所述存储器的不同字线;
经由加法器电路将所述多个数字计数器的输出信号相加;以及
经由累加器累加所述加法器电路的输出信号。
20.根据权利要求19所述的方法,还包括:经由耦合到所述多个列中的每个列的脉冲发生器,基于所述列的所述多个存储器单元的所述输出信号来生成一个或多个脉冲,其中经由所述数字计数器累加所述输出信号基于所述一个或多个脉冲。
21.根据权利要求19所述的方法,还包括:经由所述数字计数器对多个列中的所述相应列上的所述输出信号的特定逻辑值的数量进行计数。
22.根据权利要求19所述的方法,还包括:经由所述多个列中的每个列的所述多个存储器单元,在多个计算周期期间生成输出信号,其中所述数字计数器被配置为对所述数字输出信号的逻辑高的数量进行计数。
23.根据权利要求19所述的方法,其中所述数字计数器包括1位递增计数器电路。
24.根据权利要求19所述的方法,其中所述数字计数器包括触发器集合,其中所述触发器集合中的第一触发器的时钟输入耦合到所述列,并且其中所述第一触发器的输出耦合到所述触发器集合中的第二触发器的时钟输入。
25.根据权利要求24所述的方法,还包括:经由所述触发器集合中的每个触发器生成由所述数字计数器生成的所述输出信号的位。
26.根据权利要求24所述的方法,还包括:经由半锁存器电路锁存所述触发器集合中的每个相应触发器的输出信号。
27.根据权利要求19所述的方法,还包括:
将第一延迟施加到由所述多个列中的第一列的所述多个存储器单元生成的所述输出信号;以及
将第二延迟施加到由所述多个列中的第二列的所述多个存储器单元生成的所述输出信号。
28.根据权利要求27所述的方法,其中所述第一延迟不同于所述第二延迟。
29.根据权利要求19所述的方法,还包括:
经由另外多个数字计数器中的每个数字计数器累加所述存储器的多个其他列中的相应列上的输出信号,其中另外多个存储器单元位于所述多个其他列中的每个列上,所述另外多个存储器单元存储表示所述神经网络的权重的多个位,其中所述多个其他列中的每个列的所述另外多个存储器单元对应于所述存储器的不同字线;
在第一权重周期期间经由复用器选择来自所述多个数字计数器的所述输出信号,基于对所述输出信号的所述选择,经由所述加法器电路将所述输出信号相加;
在第二权重周期期间经由所述复用器选择来自所述另外多个数字计数器的其他输出信号;以及
基于对所述其他输出信号的所述选择,经由所述加法器电路将所述其他输出信号相加。
30.一种用于存储器中计算的设备,包括:
用于对存储器的多个列中的相应列上的输出信号的特定逻辑值的数量进行计数的装置,其中多个存储器单元位于所述多个列中的每个列上,所述多个存储器单元被配置为存储表示神经网络的权重的多个位,其中所述多个列中的每个列的所述多个存储器单元对应于所述存储器的不同字线;
用于将所述多个数字计数器的输出信号相加的装置;和
用于累加用于相加的所述装置的输出信号的装置。
CN202280067952.8A 2021-10-13 2022-10-12 用于数字存储器中计算架构的累加器 Pending CN118103811A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/450,815 US20230115373A1 (en) 2021-10-13 2021-10-13 Accumulator for digital computation-in-memory architectures
US17/450,815 2021-10-13
PCT/US2022/077994 WO2023064825A1 (en) 2021-10-13 2022-10-12 Accumulator for digital computation-in-memory architectures

Publications (1)

Publication Number Publication Date
CN118103811A true CN118103811A (zh) 2024-05-28

Family

ID=84330342

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280067952.8A Pending CN118103811A (zh) 2021-10-13 2022-10-12 用于数字存储器中计算架构的累加器

Country Status (5)

Country Link
US (1) US20230115373A1 (zh)
KR (1) KR20240071391A (zh)
CN (1) CN118103811A (zh)
TW (1) TW202324213A (zh)
WO (1) WO2023064825A1 (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11625586B2 (en) * 2019-10-15 2023-04-11 Sandisk Technologies Llc Realization of neural networks with ternary inputs and ternary weights in NAND memory arrays
US11934798B2 (en) * 2020-03-31 2024-03-19 Micron Technology, Inc. Counter-based multiplication using processing in memory

Also Published As

Publication number Publication date
WO2023064825A1 (en) 2023-04-20
TW202324213A (zh) 2023-06-16
US20230115373A1 (en) 2023-04-13
KR20240071391A (ko) 2024-05-22

Similar Documents

Publication Publication Date Title
US20220414444A1 (en) Computation in memory (cim) architecture and dataflow supporting a depth-wise convolutional neural network (cnn)
US20220414443A1 (en) Compute in memory-based machine learning accelerator architecture
US20230025068A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
CN117751346A (zh) 用于存储器中数字计算的折叠列加法器架构
US20230047364A1 (en) Partial sum management and reconfigurable systolic flow architectures for in-memory computation
CN117561519A (zh) 用于逐深度卷积的存储器内计算架构
CN118103811A (zh) 用于数字存储器中计算架构的累加器
WO2023004374A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
US20230004350A1 (en) Compute in memory architecture and dataflows for depth-wise separable convolution
US12019905B2 (en) Digital compute in memory
WO2023004570A1 (en) Activation buffer architecture for data-reuse in a neural network accelerator
US20240086153A1 (en) Multi-bit accumulator and in-memory computing processor with same
JP2024525333A (ja) 深さ方向畳み込みのためのメモリ内計算アーキテクチャ
US20230049323A1 (en) Sparsity-aware compute-in-memory
JP2024525332A (ja) 深さ方向畳み込みニューラルネットワーク(cnn)をサポートするメモリ内計算(cim)アーキテクチャ及びデータフロー
WO2023015167A1 (en) Digital compute in memory

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination