CN117795473A - 用于存储器内计算的部分和管理和可重新配置的脉动流架构 - Google Patents
用于存储器内计算的部分和管理和可重新配置的脉动流架构 Download PDFInfo
- Publication number
- CN117795473A CN117795473A CN202280054911.5A CN202280054911A CN117795473A CN 117795473 A CN117795473 A CN 117795473A CN 202280054911 A CN202280054911 A CN 202280054911A CN 117795473 A CN117795473 A CN 117795473A
- Authority
- CN
- China
- Prior art keywords
- circuit
- output
- coupled
- circuits
- accumulator
- 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
Links
- 230000036961 partial effect Effects 0.000 title claims description 53
- 238000013528 artificial neural network Methods 0.000 claims abstract description 98
- 238000012545 processing Methods 0.000 claims abstract description 85
- 238000000034 method Methods 0.000 claims abstract description 65
- 230000015654 memory Effects 0.000 claims description 87
- 241001442055 Vipera berus Species 0.000 claims description 46
- 230000004913 activation Effects 0.000 claims description 46
- 238000012805 post-processing Methods 0.000 claims description 14
- 230000003068 static effect Effects 0.000 claims description 9
- 238000010801 machine learning Methods 0.000 abstract description 19
- 238000001994 activation Methods 0.000 description 44
- 238000009825 accumulation Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 17
- 210000004027 cell Anatomy 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 239000013598 vector Substances 0.000 description 11
- 238000013527 convolutional neural network Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 230000000541 pulsatile effect Effects 0.000 description 9
- 238000013135 deep learning Methods 0.000 description 8
- 238000012549 training Methods 0.000 description 8
- 230000004927 fusion Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 5
- 238000011176 pooling Methods 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 208000010378 Pulmonary Embolism Diseases 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8046—Systolic arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/3816—Accepting numbers of variable word length
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computer Hardware Design (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
用于执行机器学习任务的方法和装置,并且具体地用于权重驻定运算中部分累加结果的改进处理的神经网络处理架构和电路,这些权重驻定运算诸如为在存储器内计算(CIM)处理元件(PE)中发生的运算。用于机器学习的一个示例PE电路总体包括:累加器电路;触发器阵列,该触发器阵列具有耦合到该累加器电路的输出的输入;写入寄存器;和第一多路复用器,该第一多路复用器具有耦合到该写入寄存器的输出的第一输入,具有耦合到该触发器阵列的输出的第二输入,并且具有耦合到该第一累加器电路的第一输入的输出。
Description
相关申请的交叉引用
本申请要求2021年8月10日提交的美国申请17/398,791号的优先权,该美国申请转让给本申请的受让人并且以引用方式全文并入本文。
技术领域
本公开的各方面涉及机器学习,并且具体地涉及用于处理权重驻定方案中的部分和(partial sum)的电路、神经网络处理架构和技术,诸如存储器内计算(CIM)技术。
背景技术
机器学习通常是产生受训练模型(例如,人工神经网络、树或其他结构)的过程,其表示对先验已知的训练数据集的广义拟合。将受训练模型应用于新数据产生推断,这可被用于获得关于新数据的洞察。在一些情况下,将模型应用于新数据被描述为对新数据″运行推断″。
随着机器学***衡处理能力与功率和封装约束。此外,加速器可以跨共用数据总线移动数据,这可导致大量用电量并将等待时间引入共享数据总线的其他过程中。
因此,正在考虑处理***的其他方面来处理机器学习模型数据。存储器设备是可用于通过所谓的存储器内计算(CIM)过程(也称为存储器内计算)执行机器学习模型数据的处理的处理***的另一方面的一个示例。
发明内容
本公开的***、方法和设备各自具有若干个方面,其中没有单一一个方面是仅主要负责其期望的属性的。在不限制如所附权利要求所表述的本公开的范围的情况下,下文简要地讨论一些特征。在考虑此讨论后,并且尤其是在阅读题为″具体实施方式″的章节之后,将理解本公开的特征是如何提供本文所述的优点。
本公开的某些方面涉及一种用于机器学习的处理元件(PE)电路。该PE电路总体包括:第一累加器电路;触发器阵列,该触发器阵列具有耦合到第一累加器电路的输出的输入;写入寄存器;和第一多路复用器,该第一多路复用器具有耦合到写入寄存器的输出的第一输入,具有耦合到触发器阵列的输出的第二输入,并且具有耦合到第一累加器电路的第一输入的输出。
本公开的某些方面涉及一种神经网络电路,该神经网络电路包括多个PE电路,其中多个PE电路中的至少一个PE电路包括如本文所述的PE电路。该神经网络电路还包括:紧耦合存储器,该紧耦合存储器耦合到写入总线和读取总线;和全局存储器,该全局存储器耦合到读取总线,其中多个PE电路中的另一个PE电路具有耦合到第一累加器电路的第二输入的输出。
本公开的某些方面涉及一种神经网络电路。该神经网络电路总体包括:第一组级联PE电路,其中第一组中的第一PE电路的输出耦合到第一组中的第二PE电路的输入;和第一全局累加器电路,该第一全局累加器电路具有耦合到第一组级联PE电路的输出的输入。第一组级联PE电路中的每个PE电路包括:乘法与累加(MAC)电路;局部累加器电路,该局部累加器电路具有耦合到MAC电路的输出的输入;和一组触发器,该一组触发器具有耦合到局部累加器电路的输出的输入。
本公开的某些方面涉及一种神经网络处理的方法。该方法总体包括:在多路复用器的第一输入处从写入寄存器接收第一数据;在多路复用器的第二输入处从触发器阵列接收第二数据;在累加器电路处从PE电路接收第三数据;利用多路复用器在第一数据与第二数据之间选择要输出到累加器电路的数据;以及利用累加器电路累加从多路复用器选择的输出数据和从PE电路接收的第三数据,以生成累加数据。
本公开的某些方面涉及一种神经网络处理的方法。该方法总体包括:在一组级联PE电路中的每个PE电路中执行MAC运算,其中一组级联PE电路中的第一PE电路的输出耦合到一组级联PE电路中的第二PE电路的输入,并且其中一组级联PE电路中的每个PE电路包括:MAC电路;局部累加器电路,该局部累加器电路具有耦合到MAC电路的输出的输入;和一组触发器,该一组触发器具有耦合到局部累加器电路的输出的输入;利用每个PE电路中的一组触发器执行移位运算,以将值从该PE电路移位到该一组级联PE电路中的下一个PE电路或移位到全局累加器电路,其中在每个PE电路中,移位运算与MAC运算的执行并发执行;以及利用全局累加器电路累加来自该一组级联PE电路中的最后一个PE电路的所移位的值,以生成累加数据。
其他方面提供了处理***,该处理***被配置为执行前述方法以及本文所述的方法;一种非暂态计算机可读介质,该非暂态计算机可读介质包括指令,该指令在由处理***的一个或多个处理器执行时使处理***执行前述方法以及本文所述的方法;一种计算机程序产品,该计算机程序产品体现在计算机可读存储介质上,该计算机可读存储介质包括用于执行前述方法以及本文所述的方法的代码;和一种处理***,该处理***包括用于执行前述方法以及本文进一步所述的方法的构件。
为了实现前述和相关的目的,一个或多个方面包括以下全面描述的并在权利要求中特别指出的特征。以下描述和附图详细阐述了一个或多个方面的某些例示性特征。然而,这些特征仅指示可以采用各个方面的原理的各种方式中的仅一些方式。
附图说明
为了能够详细理解本公开的上述特征的方式,以上简要概括的更具体的描述可以通过参考方面来获得,这些方面中的一些在附图中示出。然而,要注意的是,附图仅示出了本公开的某些典型的方面并且因此不被认为是对其范围的限制,因为说明书可以承认其他同等有效的方面。
图1A至图1D描绘了可由本公开的各方面实现的各种类型的神经网络的示例。
图2描绘了可由本公开的各方面实现的传统卷积运算的示例。
图3A和图3B描绘了可由本公开的各方面实现的逐深度可分离卷积运算的示例。
图4是根据本公开的某些方面的示例数字存储器内计算(DCIM)架构的框图。
图5示出了用于图4的DCIM架构的示例存储器内计算(CIM)单元,其被实现为八晶体管(8T)静态随机存取存储器(SRAM)单元。
图6是具有紧耦合存储器(TCM)和处理元件(PE)的示例神经网络处理架构的框图,其示出了示例数据流序列,其中可以实现本公开的某些方面。
图7是根据本公开的某些方面的用于连接不同PE以用于并发移位和乘法与累加(MAC)运算的脉动流(systolic flow)架构的框图。
图8A至图8C是根据本公开的某些方面的全局累加器电路以及与全局存储器、输出TCM和PE的连接的不同示例具体实施的框图。
图9A示出了根据本公开的某些方面的图7的示例脉动流架构的逐循环脉动运算。
图9B示出了根据本公开的某些方面的具有比激活输入位循环多的PE的示例脉动流架构的具有虚拟循环的逐循环脉动运算。
图10是根据本公开的某些方面的具有多于一行的示例脉动架构的框图。
图11是示出了根据本公开的某些方面的用于神经网络处理的示例操作的流程图。
图12是示出了根据本公开的某些方面的用于神经网络处理的示例操作的流程图。
图13是示出了根据本公开的某些方面的具有神经网络处理电路的示例电子设备的框图,该神经网络处理电路实现脉动流架构并且被配置为执行机器学习任务。
为了促成理解,在可能之处使用了相同附图标记来指定各附图共有的相同元素。构想了一个方面的元素和特征可有益地被纳入到其他方面中而无需进一步引述。
具体实施方式
本公开的各方面提供用于执行数据密集型处理(诸如,实现机器学习模型)的装置、方法、处理***和计算机可读介质。一些方面提供用于权重驻定运算中部分累加结果的改进处理的神经网络处理架构和电路,这些权重驻定运算诸如为在存储器内计算(CIM)处理元件(PE)中发生的运算。
神经网络、深度神经网络和深度学习的简介
神经网络被组织成互连节点的层。一般来说,节点(或神经元)是计算发生的位置。例如,节点可以将输入数据与放大或抑制该输入数据的一组权重(或系数)组合。因此,输入信号的放大或抑制可以被认为是对关于网络试图学习的任务的各种输入的相对重要性的分配。一般来说,对输入权重乘积求和(或累加),然后通过节点的激活函数传递该和,以确定该信号是否以及在多大程度上应该进一步通过网络。
在最基本的具体实施中,神经网络可具有输入层、隐藏层和输出层。″深度″神经网络通常具有多于一个隐藏层。
深度学习是一种训练深度神经网络的方法。一般来说,深度学习将到网络的输入映射到来自网络的输出,并且因此有时称为″通用逼近器″,因为深度学习可以学习在任何输入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的权重,使得DCN 100的后续输出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通道输入图像202。得到的特征图206是8像素×8像素×1通道。如在该示例中所见,与输出数据相比,传统卷积可以改变输入数据的维度(这里,从12像素×12像素到8像素×8像素),包括通道维度(这里,从3通道到1通道)。卷积内核204被示出为对应于输入图像202的一部分,内核与该部分卷积以生成特征图206的单个元素。一般来说,如在该示例中,内核204的深度(d=3)匹配输入图像202的通道数量。
减少计算负担(例如,以每秒浮点运算(FLOP)测量)和与包括卷积层的神经网络相关联的参数数量的一种方式是对卷积层进行因子分解。例如,诸如图2中描绘的空间可分离卷积可被因子分解为两个分量:(1)逐深度卷积,其中每个空间通道通过逐深度卷积被独立地卷积(例如,空间融合);以及(2)逐点卷积,其中所有空间通道被线性组合(例如,通道融合)。在图3A和图3B中描绘了逐深度可分离卷积的示例。一般来说,在空间融合期间,网络从空间平面学习特征,并且在通道融合期间,网络跨通道学习这些特征之间的关系。
在一个示例中,可使用用于空间融合的5×5内核以及用于通道融合的1×1内核来实现逐深度可分离卷积。特别地,通道融合可以使用迭代通过深度d的输入图像中的每个单个点的1×1×d内核,其中内核的深度d通常匹配输入图像的通道的数量。经由逐点卷积的通道融合对于高效计算的维度减少是有用的。应用1×1×d内核并且在内核之后添加激活层可给予网络添加的深度,这可增加网络的性能。
特别地,在图3A中,12像素×12像素×3通道输入图像302与包括三个单独内核304A-C的滤波器卷积,每个内核具有5×5×1维度,以生成8像素×8像素×3通道的特征图306,其中每个通道由内核304A-C中的个体内核生成,在图3A中有对应的阴影。每个卷积内核304A-C被示出为对应于输入图像302的一部分,内核与该部分卷积以生成特征图306的单个元素。内核304A-C的组合深度(d=3)在此匹配输入图像302的通道数量。
然后特征图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的机器学习(ML)/人工智能(AI)可用于很多任务,包括图像和音频处理以及作出无线通信决策(例如,以优化或至少增加吞吐量和信号质量)。此外,CIM可以基于各种类型的存储器架构,诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)(例如,基于如图5中的SRAM单元)、磁阻式随机存取存储器(MRAM)以及电阻式随机存取存储器(ReRAM或RRAM),并且可以附接到各种类型的处理单元,包括中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、现场可编程门阵列(FPGA)、AI加速器等。一般来说,CIM可以有益地减少″存储器墙″问题,该″存储器墙″问题是其中数据进出存储器的移动比数据的计算消耗多的功率。因此,通过执行存储器内计算,可实现显著的功率节省。这对于各种类型的电子设备特别有用,诸如较低功率边缘处理设备、移动设备等。
例如,一种移动设备可包括被配置用于存储数据和执行CIM运算的存储器设备。该移动设备可被配置为基于由该移动设备生成的数据诸如由该移动设备的相机传感器生成的图像数据执行ML/AI运算。该移动设备的存储器控制器单元(MCU)可以因此将来自另一板上存储器(例如,闪存或RAM)的权重加载到该存储器设备的CIM阵列中并且分配输入特征缓冲器和输出(例如,输出激活)缓冲器。该处理设备可接着通过将例如层加载到输入缓冲器中并且用加载到CIM阵列中的权重处理该层来开始图像数据的处理。可针对图像数据的每一层重复此处理,并且输出(例如,输出激活)可以存储在输出缓冲器中并且接着由该移动设备用于ML/AI任务,诸如面部识别。
如上所述,常规CIM过程可以使用模拟信号执行计算,这可导致计算结果的不准确,从而不利地影响神经网络计算。模拟CIM方案的一种新兴解决方案是数字存储器内计算(DCIM)方案,其中使用数字信号来执行计算。如本文所用,术语″CIM″可指模拟CIM和数字CIM中的任一者或两者,除非从上下文清楚地看到仅指模拟CIM或仅指数字CIM。
图4是根据本公开的某些方面的示例DCIM电路400的框图。在包括多个处理元件的神经网络架构中,DCIM电路400可充当单个DCIM处理元件(PE)。
在图4的示例中,DCIM电路400包括CIM阵列401(例如,DCIM阵列),其具有三十二个字线4040到40431(也称为行)和八个列4060到4067(例如,每一列可由多个位线组成,诸如三十二个位线)。字线4040至40431统称为″字线(WL)404″,并且列4060至4067统称为″列406″。虽然CIM阵列401实现为具有32个字线和8个列以促进理解,但CIM阵列可实现为具有任何数量的字线及任何数量的列。如图所示,在WL 404和列406的交叉处实现CIM单元4020-0至40231-7(统称为″CIM单元402″)。
例如,可使用下文关于图5所描述的CIM单元架构来实现CIM单元402中的每个CIM单元。
CIM单元402可加载有神经网络的权重位。激活输入可作为输入矩阵(例如,32行乘8列矩阵)一次一个向量地提供到CIM阵列401。如图4中所示,可将激活输入位a(0,0)到a(31,0)(例如,第一向量)提供到相应字线404,并且CIM单元402可存储例如神经网络的权重w(0,0)到w(31,7)。在此情况下,CIM单元4020-0到4020-7可存储权重位w(0,0)到w(0,7),CIM单元4021-0到4021-7可存储权重位w(1,0)到w(1,7)等。每一字线可存储多位权重。例如,权重位w(0,0)到w(0,7)可表示神经网络的权重的八个位(例如,8位权重)。每一CIM单元可执行所接收的激活输入位与存储于CIM单元中的权重位的逐位乘法且将结果传递到CIM单元的输出(例如,读取位线(RBL),如关于图5所解释)。
如图所示,DCIM电路400可包括位列加法器树409,该位列加法器树可包括八个加法器树4100到4107(统称为″加法器树410″),每一加法器树针对列406中的相应列实现。加法器树410中的每个加法器树将来自列406中的相应一列上的CIM单元402的输出信号相加,并且加法器树410可并行地(例如,并发)操作。加法器树410的输出可耦合到权重移位加法器树电路412,如图所示。权重移位加法器树电路412包括多个权重移位加法器414,每个权重移位加法器包括位移位与相加电路,以便于位移位与相加运算的执行。换句话说,列4060上的CIM单元可存储每一字线404上的相应权重的最高有效位(MSB),并且列4067上的CIM单元可存储每一字线上的相应权重的最低有效位(LSB)。因此,当跨各列406执行加法时,执行位移位运算以执行位移位,以考虑相关联列上的位的有效性。
权重移位加法器树电路412的输出被提供给激活移位累加器电路416。激活移位累加器电路416包括位移位电路418、串行累加器420和触发器(FF)阵列422。例如,FF阵列422可用于实现寄存器。
对于某些方面,图4的DCIM电路400的各种元件可用共用时钟频率操作(如由标记″***频率×1″所指示)。
在DCIM电路400的操作期间,激活电路***490将第一组激活输入位a(0,0)到a(31,0)(例如,一批三十二个激活输入特征中的第一向量)提供到CIM单元402以供在第一激活循环期间计算。第一组激活输入位a(0,0)到a(31,0)可表示激活输入的最高有效位。每一列上的计算的输出使用加法器树410中的相应的一个加法器树来相加。使用权重移位加法器树电路412将加法器树410的输出相加,其结果被提供给激活移位累加器电路416。在后续激活循环期间对其他组激活输入位(该批次中的其他输入向量)执行相同操作,诸如可表示激活输入的第二最高有效位的激活输入位a(0,1)到a(31,1)(例如,第二向量)等,直到处理表示激活输入的最低有效位的激活输入位为止。位移位电路418基于激活循环执行位移位运算。例如,对于使用八个激活循环处理的8位激活输入,位移位电路418可针对第一激活循环执行8位移位、针对第二激活循环执行7位移位等。在激活循环之后,使用串行累加器420累加位移位电路418的输出并且将该输出存储于FF阵列422中,该FF阵列可用作寄存器以将最终累加结果传递到另一部件(例如,输出TCM或另一DCIM电路,诸如在如下文所描述的脉动流架构中)。
图4的DCIM电路400提供逐位存储和逐位乘法。加法器树410执行列406的总体计数加法。即,加法器树410中的每个加法器树将一列的CIM单元的输出信号相加(例如,每列将所有32行相加)。权重移位加法器树电路412(例如,具有如针对八个列所示的三个级)组合针对八个列所生成的加权和(例如,在激活循环期间提供针对给定激活输入位位置的累加结果)。激活移位累加器电路416组合来自多个(例如,八个)激活循环的结果并且输出最终累加结果。例如,位移位电路418基于相关联的激活循环而对权重移位加法器树电路412的输出处的位进行移位。串行累加器420累加由位移位电路418生成的移位加法器输出。使用FF阵列422实现的传递寄存器在已完成用于最后激活循环的计算之后复制串行累加器420的输出。
DCIM电路400在使用激活输入和/或权重的不同位大小的计算上提供线性能量缩放。换句话说,使用加法器树410和权重移位加法器树电路412提供位大小可配置性,从而允许具有m位权重累加的n位激活输入,n和m是正整数。与DCIM电路400相关联的能量消耗可基于激活输入和权重的经配置的位大小而线性地缩放。
图4的示例DCIM电路400可以是相对紧凑的(在占用面积方面)并且可以消耗相对低的能量。然而,DCIM电路400及其中所使用的″伪权重驻定映射″可具有关于部分和累加的一些挑战,将在下文论述。如本文所用,″伪权重驻定映射″大体上是指权重驻定的重用方案,其针对多个深度循环中的每个深度循环处理一批输入特征,以努力尽可能快地生成最终输出。例如,DCIM电路400启用伪权重驻定方案,其中一批32个激活输入特征可被并发处理。较小的批量大小(例如,32个特征对256个特征)允许更快地生成最终输出结果,因为与针对深度循环中的每个深度循环处理所有输入的情况相比,完成通过深度循环运行的循环的总数变得更少,这将显著延迟输出生成。如图所示,权重被重新用于输入批中不同组的激活输入位。在最后循环处,可将最终输出传递到存储器(例如,输出TCM),如下文所描述。
图5示出了静态随机存取存储器(SRAM)的示例CIM单元500,其可实现于CIM阵列中,诸如图4的DCIM电路400中的CIM阵列401。CIM单元500可称为八晶体管(8T)SRAM单元,因为CIM单元用八个晶体管来实现。
如图所示,CIM单元500可包括具有输出514和输出516的交叉耦合反相器对524。如图所示,交叉耦合的反相器对输出514经由传输门晶体管502选择性地耦合到写入位线(WBL)506,且交叉耦合的反相器对输出516经由传输门晶体管518选择性地耦合到互补写入位线(WBLB)520。WBL 506和WBLB 520被配置为提供将写入(例如,存储)于交叉耦合反相器对524中的互补数字信号。WBL和WBLB可用于存储用于CIM单元500中的神经网络权重的位。传输门晶体管502、518的栅极可耦合到写入字线(WWL)504,如图所示。例如,可将待写入的数字信号提供到WBL(并且将数字信号的补码提供到WBLB)。然后通过向WWL 504提供逻辑高信号来导通这里被实现为n型场效应晶体管(NFET)的传输门晶体管502、518,从而导致数字信号被存储在交叉耦合反相器对524中。
如图所示,交叉耦合反相器对输出514可耦合到晶体管510的栅极。晶体管510的源极可耦合到参考电位节点(Vss或电接地),并且晶体管510的漏极可耦合到晶体管512的源极。晶体管512的漏极可耦合到读取位线(RBL)522,如图所示。晶体管512的栅极可经由读取字线(RWL)508来控制。RWL 508可经由激活输入信号来控制。
在读取循环期间,RBL 522可预充电到逻辑高。如果存储在交叉耦合反相器对输出514处的激活输入位和权重位两者均为逻辑高,那么晶体管510、512两者均接通,从而将RBL522电耦合到晶体管510的源极处的参考电位节点并且将RBL 522放电到逻辑低。如果存储在交叉耦合反相器对输出514处的激活输入位或权重位为逻辑低,那么晶体管510、512中的至少一者将断开,使得RBL 522保持逻辑高。因此,RBL 522处的CIM单元500的输出仅在权重位和激活输入位两者均为逻辑高时为逻辑低,否则为逻辑高,从而有效地实现NAND门运算。
示例神经网络处理架构和数据流
图6是示例神经网络处理架构600的框图,其示出了示例数据流序列,其中可以实现本公开的某些方面。神经网络处理架构600可包括用于执行数据计算(例如,乘法与累加(MAC)运算)和其他运算的多个处理元件(PE)602。PE 602可用各种合适电路中的任一电路诸如图4的DCIM电路400来实现。架构600还可包括全局存储器604(标记为″全局缓冲器″)、权重紧耦合存储器(TCM)606、激活TCM 608、输出TCM 610、PE映射器逻辑部件612(其还可包括总线仲裁逻辑部件(未示出)和/或数字后处理逻辑部件(未示出))、存储器总线614以及PE总线616。如本文所用,TCM通常是指由来自处理器(诸如PE 602)的专用连接存取的存储器。尽管被示为单独的TCM,但权重TCM 606、激活TCM 608和/或输出TCM 610可被组合。存储器总线614可将全局存储器604耦合到权重TCM 606、激活TCM 608和输出TCM 610。PE总线616可将PE 602和PE映射器逻辑部件612耦合在一起。以此方式,PE 602可存取存储器资源(例如,权重TCM、激活TCM和输出TCM)。
在所示的数据流序列中,权重可从全局存储器加载到权重TCM 606。接着,权重可从权重TCM 606加载到PE权重阵列(例如,在PE的CIM单元中)。激活输入可从全局存储器604加载到激活TCM 608。然后,激活输入可从激活TCM 608加载到PE总线616(或作为激活总线操作的PE总线的至少一部分)。在权重已经被加载到PE 602中并且激活在激活总线上就绪之后,PE 602可在多个计算循环上执行计算(例如,MAC运算)以生成最终累加结果。最终累加结果可被处理(例如,由PE映射器逻辑部件612处理,或者对于某些情况更具体地由数字后处理逻辑部件处理),并且处理后的结果可被写入输出TCM 610。从输出TCM 610,处理后的累加结果可经由存储器总线614加载到全局存储器604中。
示例可重新配置的脉动流架构以及部分和管理
如上所述,存储器内计算(CIM)技术正在解决由于从存储器和处理***(例如,中央处理单元(CPU))移动数据而引起的能量和速度瓶颈。CIM在权重驻定的使用情况下提供能量效率和明显更少的存储器访问。如本文所用,术语″权重驻定″通常是指其中神经网络权重在操作期间(例如,在被初始加载之后)保持驻定并且输入被流入的重用架构。权重驻定映射可在CIM中用以减少操作期间权重更新时间的开销。
尽管有这些益处,但CIM和其他权重驻定映射方案在某些应用中可能具有一些挑战。例如,一些神经网络处理电路(例如,DCIM PE)的权重驻定运算可迫使这些电路将部分累加结果卸载以及重新加载(例如,写入和读取)到存储器(例如,输出TCM)以用于最终累加。也称为″部分和″的部分累加结果不是最终数据,或者换句话说,还没有准备好成为(或者在结果产生之前被传递到数字后处理逻辑部件)用于下一层的激活输入,也没有数据要作为层的最终结果被存储在输出TCM中。而是,部分和可临时存储于输出TCM中且读回到DCIM PE以供在一个或多个循环中进一步处理,直到最终累加输出就绪为止。当最终输出准备好被处理(例如,由数字后处理逻辑部件处理)时,这些部分和可接着被丢弃。
在一些情况下,权重驻定映射可迫使部分累加结果写入缓冲存储器并且从缓冲存储器读回以用于后续输入特征乘法与累加(MAC)运算,如果此读取/写入不能在同一MAC循环中处置,那么这可产生能量方面的开销和性能惩罚(例如,每秒较低的兆次运算(TOPS)方面)。换句话说,必须存储和重新加载这些部分累加结果导致神经网络处理架构中的存储区域、带宽和吞吐量(例如,TOPS)惩罚。在一些情况下,与其他神经网络处理解决方案(例如,神经处理单元(NPU))相比,处理部分和的电路开销可能降低DCIM解决方案的面积优势。在一些实例中,这种卸载和重新加载也会引入显著的等待时间惩罚。
本公开的某些方面提供神经网络处理架构和电路,以在没有吞吐量惩罚的情况下处理部分和,从而减少从存储器来回写入以及读取的瓶颈。这些电路可称为并发乘法与累加(MAC)以及部分和存储与重新加载电路。该架构可以被称为″可重新配置的脉动流架构″。下面描述该架构和电路。
图7是根据本公开的某些方面的示例脉动流架构700的框图。脉动流架构700可包括级联系列701的PE电路7021到7028(统称为″PE电路702″)和全局累加器电路710(也称为″胖累加器电路″)。虽然在示例脉动流架构700中表示了八个PE电路702,但是读者应当理解,系列701可以包括任何数量的级联PE电路。
PE电路702可由各种合适的PE电路中的任一PE电路实现,诸如图4的DCIM电路400或其他权重驻定映射PE电路。PE电路702可替换神经网络架构中的至少一些PE电路,诸如图 6的架构600中的PE 602。如图7中所示,PE电路702中的每个PE电路包括乘法与累加(MAC)加法器树704以及局部累加器706(也称为″轻累加器″)。MAC加法器树704可表示用于执行MAC运算的各种合适电路中的任一电路或由其实现,诸如图4的CIM阵列401(例如,具有三十二行和八列)、位列加法器树409和权重移位加法器树电路412。每一PE电路702中的局部累加器706可表示图4的激活移位累加器电路416或由其实现。全局累加器电路710可包括大累加器711(也称为″胖累加器″),其与局部累加器706的位大小(例如,21位)相比可具有较高数量的位(例如,32位)并且因此在图7中用阴影表示。通过设计具有较小位大小的局部累加器706的PE电路,级联系列701与PE电路中的每个PE电路具有较高位大小的大累加器711的情况相比可占据更小的面积。
PE电路702可以脉动方式连接,使得来自一个PE电路(例如,PE电路7021)的局部累加器706的输出作为部分累加结果输入到后续PE电路(例如,PE电路7022)的MAC加法器树704。以这种方式,来自每个PE电路702的部分累加结果不需要被存储然后被重新加载。代替个体PE电路的是,全局累加器电路710可将累加结果写入输出TCM(例如,输出TCM 610)。此外,每个PE电路702可以在MAC循环期间执行并发移位和MAC运算。换句话说,在PE电路702正在将数据移出(例如,移位到下一个PE电路或全局累加器电路710)的并发,MAC加法器树704可用输入数据来计算,并且局部累加器706可能正在运行。由于局部累加器706中的触发器(例如,FF阵列422)作为移位寄存器操作,因此该并发移位和MAC运算是可能的。
在深度繁重的工作负载中,脉动流架构700的逐深度空间平铺减少了实现最终结果的MAC循环的总数且减少了部分和写入和读取的数量。此外,与其他解决方案诸如神经处理单元(NPU)解决方案相比,此脉动具体实施具有较少定时开销。例如,可能花费单个MAC循环来生成8个PE电路702的结果之和,其中八位串行时钟循环等于一个MAC循环。对于相同的计算,等效的NPU解决方案可能花费8个MAC循环。
对于八个32行PE电路702的示例方案,脉动流架构700基本上模拟具有256行的存储器阵列(而不是单个PE电路的32行)。然而,单个直接256行存储器阵列可能无法高效地映射到一些工作负载。每个PE电路702可以并行加载权重,与逐行加载权重相比,这减少了权重加载时间,特别是对于256行存储器阵列。每个PE电路702还可针对不是深度繁重的工作负载独立地累加。这实现了灵活性,并且因此实现了针对计算的PE分配的更好的利用效率。
在神经网络电路内,脉动流架构700可以是可重新配置的,使得可改变架构的各方面,诸如串联级联的PE电路702的数量。神经网络的编译器可用于选择初始部件并进行任何重新配置。
图8A至图8C是根据本公开的某些方面的全局累加器电路710的不同示例具体实施的框图,示出了用于上下文的其他部件。这些其他部件可包括例如全局存储器、输出TCM和/或PE电路。
图8A包括示例全局累加器电路800(也称为″胖累加器模块″)的框图并且示出了与图6的全局存储器604(标记为″***存储器″)、图6的输出TCM 610、数字后处理逻辑部件801和图7的PE电路702的连接。全局累加器电路800包括大累加器711、触发器阵列802(标记为″触发器阵列″)、写入寄存器804和多路复用器806。例如,写入寄存器804的大小可为24位。全局累加器电路710还可包括读取寄存器808、输出TCM写入总线812和输出TCM读取总线810。读取寄存器808的大小可类似于写入寄存器804(例如,24位)。
输出TCM读取总线810可耦合于写入寄存器804与输出TCM 610之间,例如以用于从输出TCM读取存储的数据(例如,部分和)并且将此读取数据加载到写入寄存器中。输出TCM读取总线810还可耦合于输出TCM 610与全局存储器604之间,例如以用于从输出TCM读取存储的数据(例如,最终结果)并且将此读取数据写入全局存储器604中。输出TCM写入总线812可耦合于读取寄存器808与输出TCM 610之间,例如以用于将数据(例如,部分和)从读取寄存器加载到输出TCM中。数字后处理逻辑部件801(标记为″DPP″)可耦合于读取寄存器808与输出TCM写入总线812之间,例如以用于在来自读取寄存器808的数据(例如,最终累加结果)经由输出TCM写入总线812写入输出TCM 610之前处理此数据。
多路复用器806具有耦合到写入寄存器804的输出的第一数据输入和耦合到触发器阵列802的输出的第二数据输入。多路复用器806的输出耦合到大累加器711的第一输入。多路复用器806的控制输入可接收控制信号(标记为″重新加载/累加″),该控制信号被配置为选择多路复用器是选择从写入寄存器804输出重新加载的数据还是从触发器阵列802输出大累加器711的先前值。PE电路702的输出耦合到大累加器711的第二输入,并且大累加器的输出耦合到可具有类似于写入寄存器804(和读取寄存器808)的位大小的触发器阵列802的输入。触发器阵列的输出可耦合到读取寄存器808的输入。
作为用于脉动流架构700的部分和重新加载电路***而操作,写入寄存器804可在任何激活输入位(激活位(Act-Bit))循环期间加载。读取寄存器808作为部分和存储电路***操作,并且可在当前MAC循环结束时(例如,在最后激活位循环之后的第一循环之后)经由输出TCM写入总线812将其值写入输出TCM 610。写入寄存器804和读取寄存器808可用以最大化(或至少增加)输出TCM写入和读取总线的利用率而不必等待激活位循环。
在操作期间,可从输出TCM 610读取先前存储的部分和值并且将其加载到写入寄存器804中。多路复用器806可根据选择控制信号选择(A1)来自写入寄存器804的重新加载的数据或(A2)来自触发器阵列802的大累加器711的先前值。大累加器711可累加选择(A1或A2)与(B)来自前一个PE电路702的累加结果(例如,局部累加器706中的移位寄存器的内容)。可将来自最后激活位循环的累加结果加载到读取寄存器808中。每当输出TCM写入总线812可用时,读取寄存器808中的值可在MAC循环内的激活位循环中的任一激活位循环(例如,接下来的8个激活位循环中的第一个激活位循环)中传递到输出TCM 610。
由于2:1多路复用器806的延迟添加非常小(例如,一个逻辑门延迟)并且不在用于脉动流架构700的速度关键路径中,因此应不存在对架构的操作频率的惩罚。此外,此解决方案具有MAC循环内的激活位循环中(例如,8个动作位循环中)的一个触发器循环的有限能量惩罚。
当具有部分和存储与重新加载电路***(写入寄存器804、读取寄存器808和多路复用器806)的全局累加器电路800耦合到级联系列701的PE电路702的输出时,PE电路可不包括部分和存储与重新加载电路***并且可不具有到输出TCM读取总线810或输出TCM写入总线812的连接。例如,PE电路702可不包括写入寄存器、读取寄存器或多路复用器,或至少这些电路不需要耦合到输出TCM写入和读取总线。此配置将部分和存储与重新加载电路***的面积开销限制到PE阵列的总面积(例如,图6中的PE 602的阵列或图7中的级联系列701的PE电路702)。
图8B包括根据本公开的某些方面的具有部分累加存储与重新加载电路***的示例PE电路820的框图。PE电路820可用于实现级联系列701中的PE电路702和/或全局累加器电路710。以此方式,单个PE电路820可被复制且用于实现脉动流架构700中的所有块(若需要)。在此情况下,部分和存储与重新加载电路***可针对实现级联系列701的PE电路820的PE电路702而停用,但可针对实现全局累加器电路710的PE电路820而启用。与图8A中的全局累加器电路800不同,输出TCM写入总线812和输出TCM读取总线810在图8B中的PE电路820外部。PE电路820将CIM电路(例如,DCIM电路400)添加到图8A中的全局累加器电路800的其他部件(例如,非总线部件)。例如,PE电路820添加MAC加法器树822(例如,DCIM加法器树或其他加法器电路)和累加器与移位器电路824(例如,激活移位累加器电路416)。MAC加法器树822可由MAC加法器树704实现,并且累加器与移位器电路824可由图7的局部累加器706实现。
图8C包括根据本公开的某些方面的具有部分累加存储与重新加载电路***和附加多路复用器828的示例全局累加器电路830的框图。此外,全局累加器电路830可包括累加器826,该累加器具有耦合到多路复用器806的输出的第一输入并且具有耦合到附加多路复用器828的第一输入的输出。PE电路702的输出可耦合到附加多路复用器828的第二输入。对于某些方面,全局累加器电路830包括任选的MAC加法器树822和任选的累加器与移位器电路824,如以上关于图8B所描述的。在此情况下,全局累加器电路830可充当PE电路和全局累加器电路两者,并且因此可替换级联系列701中的最后一个PE电路(例如,PE电路7028)以及脉动流架构中的全局累加器电路710两者。附加多路复用器828具有接收选择信号(标记为″移位/累加″)的控制输入,该选择信号被配置为在来自累加器826的累加数据或来自级联系列中的前一个PE电路(例如,PE电路7027)的输出之间进行选择。
图9A是示出了根据本公开的某些方面的图7的脉动流架构700的示例逐循环脉动运算的时序图900。在此示例中,级联系列701具有八个PE电路702(标记为″PE1″到″PE8″),并且每个深度循环(例如,每个MAC循环)包括八个激活位循环以完成最终累加。每个PE电路7021到7028分别包括触发器阵列9021到9028(统称为″触发器阵列902″),其可表示实现移位寄存器的多个触发器(例如,类似于图4中的FF阵列422)。如上文所描述,每个PE电路702中的触发器阵列902复制来自局部累加器706的位(表示部分累加结果)并且将复制的位传递到该系列中的下一个PE电路702(并且更具体来说传送到下一个PE电路中的触发器),而不是传送到输出TCM(如在其他DCIM解决方案中所做,其中部分和从DCIM PE并行传递)。因此,触发器阵列902可称为″复制寄存器″。触发器阵列902可独立于局部累加器706而运行并且可在每个激活位循环处传递其内容。同样如上所述,MAC加法器树704和局部累加器706可与触发器阵列902的移位运算并行运行。
在第一深度循环的最后一个位串行循环(标记为″深度循环-1″和″激活位8循环″)的末尾处从左侧开始,最终累加结果可由全局累加器电路710生成,并且对于某些方面,如上文所描述存储于读取寄存器808中。在下一个深度循环(标记为″深度循环-2″)期间的某一时间,全局累加器电路710可将最终累加结果写入输出TCM 610(例如,经由输出TCM写入总线812)。在下一个深度循环的第一位串行循环(标记为″深度2,激活位1循环″)处,可在每个PE电路的MAC加法器树704中执行MAC运算,并且与MAC运算并发,可将触发器阵列9021的内容移位到PE电路7022,可将触发器阵列9022的内容移位到PE电路7023,依此类推,其中将触发器阵列9028的内容移位到全局累加器电路710。在深度循环-2中的每个位串行循环处执行类似运算,直到在最后一个位串行循环(标记为″深度2,激活位8循环″)处由全局累加器电路710生成深度循环-2的最终累加结果为止。从深度循环-3的第一位串行循环开始重复脉动运算,依此类推,直到完成了所有深度循环。
在图9A的示例中,PE电路702的数量匹配激活输入位循环的数量(例如,八个PE电路)。在一些情况下,可使用其中PE电路的数量比激活输入位循环的数量大的级联系列。例如,当神经网络工作负载要求多个PE电路但该数量不适合标准脉动流配置时,或者当编译器使神经网络设计适合于包括比所需更多数量的级联PE电路的脉动流配置时,可能出现这种情况。例如,如果工作负载需要十个PE电路,但脉动映射是针对八个PE电路,那么一个解决方案将是在第一MAC循环中使用一组PE电路(例如,五个PE电路)并且在第二MAC循环中使用另一组PE电路(例如,五个PE电路,其可为相同的五个PE电路)。然而,该解决方案花费两个MAC循环,从而负面地影响吞吐量(例如,单个MAC循环的TOPS的一半)。相反,可以通过对每个额外的PE电路使用虚拟循环来增加MAC循环长度。在虚拟循环中,所有激活输入均为0,但触发器阵列902的内容仍可在每个虚拟循环期间传送到全局累加器电路并且传递到该系列中的下一个PE电路。在所有激活输入等于0的情况下,不执行新的MAC计算,并且至少脉动流架构中的MAC电路不消耗能量。继续以上示例,可将两个虚拟循环用于额外两个PE电路,使得可使用包括八个激活输入位循环和两个虚拟循环的单个MAC循环。因此,对吞吐量的影响仅是20%的惩罚(例如,单个MAC循环*8/10的TOPS),而不是两个MAC循环解决方案中的50%的惩罚。
例如,图9B是示出了根据本公开的某些方面的具有十个PE电路702和八个激活输入位循环的示例脉动流架构的具有虚拟循环的逐循环脉动运算的时序图950。因此,脉动运算在每个深度循环中的激活位1循环到激活位8循环之后包括两个虚拟循环(标记为″虚拟循环-1″和″虚拟循环-2″)。在虚拟循环-1和虚拟循环-2中,所有激活输入为0,但触发器阵列902的内容仍可在每个虚拟循环期间传递到全局累加器电路710并且传递到该系列中的下一个PE电路。
尽管在图9B的时序图950中在末尾处示出为连续循环,但虚拟循环可在深度循环的开始、中间和/或末尾处发生。此外,在多个虚拟循环的情况下,虚拟循环中的至少一些可为连续激活输入位循环或可在时间上分离(例如,非连续激活输入位循环)。
图10是根据本公开的某些方面的具有多于一行(例如,多于一个级联系列的PE电路和全局累加器电路)的示例扩展脉动流架构1000的框图。以此方式,可将脉动流架构扩展到任何数量的行(也称为″通道″),从而允许每次累加任何数量的级联系列(除了每个级联系列中PE电路的数量的灵活性之外)。
例如,扩展脉动流架构1000可包括八行,每行中具有级联系列10011到10018(统称为″级联系列1001″)的八个PE电路7021到7028(标记为″PE1″到″PE8″并且如关于图7所描述)。为了扩展此示例,如果每个PE电路702包括32个输入,那么扩展脉动流架构1000高效地作为每次累加具有2048个输入(=32个输入×8个PE电路×8行)的CIM电路操作。应当理解,扩展脉动流架构1000可以包括多于或少于八行,并且每个级联系列1001可以包括多于或少于八个PE电路702。每一行还可包括耦合到相应级联系列10011到10018中的最后一个PE电路的全局累加器电路10101到10108(统称为″全局累加器电路1010″)。全局累加器电路1010可各自包括大累加器711和耦合到大累加器的输出的复制触发器(copy-flop)1012。复制触发器1012可表示移位寄存器或实现为移位寄存器,并且可用以将累加数据从一行传递到下一个后续行(并且更具体来说,传送到下一个后续行中的全局累加器电路1010)。
扩展脉动流架构1000还可具有超全局累加器电路1020。超全局累加器电路1020可具有耦合到最后一行中的全局累加器电路10108的输入和耦合到图6的输出TCM 610(例如,经由可在超全局累加器电路内部的输出TCM写入总线)的输出。超全局累加器电路1020可具有任何合适的位大小(例如,当存在八行时为48位,每一行具有位大小为32位的大累加器711)以生成并处理扩展脉动流架构1000的最终全局累加结果。
扩展脉动流架构1000可作为两个嵌套累加来操作,其中内环路在每个全局累加器电路1010的输出处生成最终累加结果(类似于脉动流架构700),并且其中外环路在超全局累加器电路1020的输出处生成最终全局累加结果。与图9A的示例一样,每一行中的最终累加结果可在八个激活输入位循环之后就绪(其中每一级联系列1001中具有八个PE电路702)。然而,每一行中的复制触发器1012可在下一个MAC循环期间的任何时间将最终累加结果传递到下一个后续行中的全局累加器电路101,而非将最终累加结果(其仍为来自每一行的工作负载的部分和)传递到下一个MAC循环中的输出TCM。实际上,在扩展脉动流架构1000的情况下,当针对给定工作负载充分增加行的数量时,可能不需要部分和读取及写入。在N个MAC循环末尾处,其中N为行的数量(此处,N=8),最终全局累加结果可在超全局累加器电路1020中生成并且可在下一N个MAC循环期间的任何时间传递到输出TCM(例如,经由数字后处理逻辑部件)。
示例操作
图11是示出了根据本公开的某些方面的用于神经网络处理的示例操作1100的流程图。操作1100可例如由处理元件(PE)电路执行,诸如图8A和图8C的全局累加器电路800或830或图8B的PE电路820。
操作1100可在框1105处以多路复用器(例如,多路复用器806)的第一输入从写入寄存器(例如,写入寄存器804)接收第一数据而开始。在框1110处,多路复用器的第二输入从触发器阵列(例如,触发器阵列802)接收第二数据。在框1115处,累加器电路(例如,大累加器711)从处理元件(PE)电路(例如,PE电路702,并且更具体地讲,在一些情况下,级联串联中的最后一个PE电路,诸如PE电路7028)接收第三数据。在框1120处,多路复用器在第一数据与第二数据之间选择要输出到累加器电路的数据。在框1125处,累加器电路累加从多路复用器选择的输出数据和从PE电路接收的第三数据,以生成累加数据(例如,部分和或最终累加结果)。
根据某些方面,操作1100还包括将累加数据输出到触发器阵列;利用触发器阵列将累加数据移位到读取寄存器(例如,读取寄存器808);以及经由写入总线(例如,输出TCM写入总线812)将累加数据从读取寄存器写入紧耦合存储器(TCM)(例如,输出TCM 610)。在这种情况下,例如,累加数据可以是部分累加结果。
根据某些方面,操作1100还涉及将累加数据输出到触发器阵列;利用触发器阵列将累加数据移位到读取寄存器;利用数字后处理逻辑部件(例如,数字后处理逻辑部件801)处理来自读取寄存器的累加数据;以及经由耦合在数字后处理逻辑部件与TCM之间的写入总线将所处理的累加数据写入该TCM。在这种情况下,例如,累加数据可以是最终累加结果。
图12是示出了根据本公开的某些方面的用于神经网络处理的示例操作1200的流程图。操作1200可由具有(可重新配置的)脉动流架构(例如,图7的脉动流架构700或图10的扩展脉动流架构1000)的神经网络电路执行。
操作1200可在框1205处以一组级联处理元件(PE)电路(例如,级联系列701或1001)中的每个PE电路(例如,每个PE电路702)执行乘法与累加(MAC)运算开始。该组级联PE电路中的第一PE电路(例如,PE电路7021)的输出耦合到该组级联PE电路中的第二PE电路(例如,PE电路7022)的输入。该组级联PE电路中的每个PE电路可包括MAC电路(例如,MAC加法器树704)、局部累加器电路(例如,局部累加器706或串行累加器420)(其具有耦合到MAC电路的输出的输入),以及一组触发器(例如,触发器阵列902或FF阵列422)(其具有耦合到局部累加器电路的输出的输入)。
在框1210处,每个PE电路中的该组触发器可执行移位运算,以将值(例如,部分和)从该组级联PE电路中的PE电路移位到下一个PE电路或移位到全局累加器电路(例如,全局累加器电路710)。在每个PE电路中,移位运算可与框1205中的MAC运算的执行并发执行。
在框1215处,全局累加器电路可累加来自该组级联PE电路中的最后一个PE电路(例如,PE电路7028)的所移位的值,以生成累加数据(例如,最终累加结果或部分累加结果)。
根据某些方面,操作1200还涉及在利用权重在每个PE电路中执行MAC运算之前,将权重并行加载到该组级联PE电路中。
根据某些方面,框1215处的累加包括利用全局累加器电路将部分和写入存储器(例如,输出TCM 610)。对于某些方面,框1215处的累加还包括利用全局累加器电路从存储器读取部分和。该组级联PE电路可以不将部分和写入存储器或从存储器读取部分和。
根据某些方面,累加涉及在全局累加器电路中的多路复用器(例如,多路复用器806)的第一输入处从全局累加器电路中的写入寄存器(例如,写入寄存器804)接收第一数据;在多路复用器的第二输入处从全局累加器电路中的触发器阵列(例如,触发器阵列802)接收第二数据;在全局累加器电路中的另一个累加器电路(例如,大累加器711)处从该组级联PE电路中的最后一个PE电路(例如,PE电路7028)接收第三数据;利用多路复用器在第一数据与第二数据之间选择要输出到另一个累加器电路的数据;以及利用另一个累加器电路累加第三数据和从多路复用器选择的输出数据,以生成累加数据。
具有脉动流架构和/或部分和管理的示例设备
图13示出了示例电子设备1300。电子设备1300可被配置为执行本文描述的方法,包括关于图11和图12描述的操作1100和/或1200。
电子设备1300包括中央处理单元(CPU)1302,其在一些方面可以是多核CPU。在CPU1302处执行的指令可以例如从与CPU 1302相关联的程序存储器加载,或者可以从存储器1324加载。
电子设备1300还包括为特定功能定制的附加处理块,诸如图形处理单元(GPU)1304、数字信号处理器(DSP)1306、具有实现(可重新配置的)脉动流架构的一组级联PE1309的神经网络电路1307、多媒体处理块1310和无线连通性处理块1312。在一种具体实施中,神经网络电路1307在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的处理器中的一个或多个处理器可基于高级RISC机器(ARM)指令集,其中RISC表示″简化指令集计算″。
电子设备1300还包括存储器1324,该存储器代表一个或多个静态和/或动态存储器,诸如动态随机存取存储器(DRAM)、基于闪存的静态存储器等等。在该示例中,存储器1324包括计算机可执行部件,其可由包括神经网络电路1307的电子设备1300的前述处理器中的一个或多个处理器执行。所描绘的部件以及其他未描绘的部件可被配置为执行本文所述的方法的各个方面。
在一些方面,诸如在电子设备1300是服务器设备的情况下,可从图13中所描绘的示例中省略各种方面,诸如多媒体处理块1310、无线连通性处理块1312、天线1314、传感器处理器1316、ISP 1318或导航处理器1320中的一者或多者。
示例条款
除了上述各个方面之外,各方面的具体组合也在本公开的范围内,其中一些具体组合在下面的条款中详述:
条款1:一种用于机器学习的处理元件(PE)电路,所述PE电路包括:第一累加器电路;触发器阵列,所述触发器阵列具有耦合到所述第一累加器电路的输出的输入;写入寄存器;和第一多路复用器,所述第一多路复用器具有耦合到所述写入寄存器的输出的第一输入,具有耦合到所述触发器阵列的输出的第二输入,并且具有耦合到所述第一累加器电路的第一输入的输出。
条款2:根据条款1所述的PE电路,所述PE电路还包括读取寄存器,所述读取寄存器具有耦合到所述触发器阵列的所述输出的输入。对于某些方面,所述读取寄存器被配置为存储从所述触发器阵列接收的数据。
条款3:根据条款2所述的PE电路,所述PE电路还包括写入总线,所述写入总线耦合到所述读取寄存器的输出。对于某些方面,所述读取寄存器被配置为将所存储的数据写入所述写入总线。在一些情况下,所述写入总线可被配置为将所述数据传递到存储器。
条款4:根据条款2或3所述的PE电路,所述PE电路还包括读取总线,所述读取总线耦合到所述写入寄存器的输入。对于某些方面,所述读取总线被配置为将数据递送到所述写入寄存器,并且所述写入寄存器可被配置为存储所述数据。
条款5:一种神经网络电路,所述神经网络电路包括多个PE电路,其中所述多个PE电路中的至少一个PE电路包括根据条款4中任一项所述的PE电路,所述神经网络电路还包括:紧耦合存储器,所述紧耦合存储器耦合到所述写入总线和所述读取总线;和全局存储器,所述全局存储器耦合到所述读取总线,其中所述多个PE电路中的另一个PE电路具有耦合到所述第一累加器电路的第二输入的输出。对于某些方面,所述紧耦合存储器被配置为存储经由所述写入总线递送的来自所述读取寄存器的第一数据和/或经由所述读取总线将第二数据写入所述写入寄存器。对于某些方面,所述全局存储器被配置为存储经由所述读取总线从所述紧耦合存储器接收的数据。对于某些方面,所述第一累加器电路被配置为累加从所述多个PE电路中的另一个PE电路和/或所述第一多路复用器接收的数据。
条款6:根据条款5所述的神经网络电路,其中所述多个PE电路中的另一个PE电路不包括写入寄存器。
条款7:根据条款1-3中任一项所述的PE电路,所述PE电路还包括读取总线,所述读取总线耦合到所述写入寄存器的输入,其中所述读取总线被配置为在所述PE电路外部耦合到紧耦合存储器或全局存储器中的至少一者。对于某些方面,所述读取总线被配置为将数据递送到所述写入寄存器,并且所述写入寄存器可被配置为存储所述数据。
条款8:根据条款1-3和7中任一项所述的PE电路,所述PE电路还包括:加法器电路;和累加器与移位器电路,所述累加器与移位器电路具有耦合到所述加法器电路的输出的输入并且具有耦合到所述第一累加器电路的第二输入的输出。
条款9:根据条款1-3和7-8中任一项所述的PE电路,所述PE电路还包括:第二累加器电路;和第二多路复用器,所述第二多路复用器具有耦合到所述第二累加器电路的输出的第一输入并且具有耦合到所述第一累加器电路的所述第一输入的输出。
条款10:根据条款1-3和7-9中任一项所述的PE电路,其中所述PE电路是数字存储器内计算(DCIM)PE电路,并且其中所述PE电路还包括:DCIM阵列;位列加法器树电路,所述位列加法器树电路耦合到所述DCIM阵列;和权重移位加法器树电路,所述权重移位加法器树电路耦合到所述位列加法器树电路。
条款11:根据条款10所述的PE电路,其中所述DCIM阵列包括多个存储器内计算单元,并且其中所述存储器内计算单元中的至少一个存储器内计算单元包括八晶体管(8T)静态随机存取存储器(SRAM)单元。
条款12:一种神经网络电路,所述神经网络电路包括:第一组级联处理元件(PE)电路,其中所述第一组中的第一PE电路的输出耦合到所述第一组中的第二PE电路的输入,并且其中所述第一组级联PE电路中的每个PE电路包括:乘法与累加(MAC)电路;局部累加器电路,所述局部累加器电路具有耦合到所述MAC电路的输出的输入;和一组触发器,所述一组触发器具有耦合到所述局部累加器电路的输出的输入;和第一全局累加器电路,所述第一全局累加器电路具有耦合到所述第一组级联PE电路的输出的输入。
条款13:根据条款12所述的神经网络电路,其中所述第一组级联PE电路中的每个PE电路被配置为并发地用所述MAC电路执行MAC运算以及用所述一组触发器执行移位运算,以将值从所述PE电路移位到所述第一组级联PE电路中的下一个PE电路或移位到所述第一全局累加器电路。
条款14:根据条款12或13所述的神经网络电路,所述神经网络电路还包括存储器,其中:所述第一全局累加器电路被配置为将部分和写入所述存储器以及从所述存储器读取所述部分和;并且所述第一组级联PE电路不被配置为将所述部分和写入所述存储器或从所述存储器读取所述部分和。
条款15:根据条款12-14中任一项所述的神经网络电路,其中所述第一全局累加器电路包括:第一累加器;触发器阵列,所述触发器阵列具有耦合到所述第一累加器的输出的输入;写入寄存器;和第一多路复用器,所述第一多路复用器具有耦合到所述写入寄存器的输出的第一输入,具有耦合到所述触发器阵列的输出的第二输入,并且具有耦合到所述第一累加器的第一输入的输出。
条款16:根据条款15所述的神经网络电路,其中所述第一全局累加器电路还包括读取寄存器,所述读取寄存器具有耦合到所述触发器阵列的所述输出的输入。
条款17:根据条款16所述的神经网络电路,所述神经网络电路还包括紧耦合存储器,其中所述第一全局累加器电路还包括:写入总线,所述写入总线耦合在所述读取寄存器的输出与所述紧耦合存储器之间;和读取总线,所述读取总线耦合在所述紧耦合存储器与所述写入寄存器的输入之间。
条款18:根据条款17所述的神经网络电路,所述神经网络电路还包括全局存储器,所述全局存储器耦合到所述第一全局累加器电路的所述读取总线。
条款19:根据条款12-18中任一项所述的神经网络电路,其中所述第一组级联PE电路被配置为使得权重被并行加载到所述第一组级联PE电路中。
条款20:根据条款12-19中任一项所述的神经网络电路,其中所述第一组级联PE电路包括多个级联PE电路,使得所述第一全局累加器电路被配置为接收来自所述第一PE电路的在已经发生与所述多个级联PE电路匹配的多个激活输入位循环之后通过所述第一组中的全部PE电路的部分和。
条款21:根据条款12-19中任一项所述的神经网络电路,其中:所述第一全局累加器电路被配置为接收来自所述第一PE电路的在已经发生多个激活输入位循环之后通过所述第一组中的全部PE电路的部分和;并且所述第一组中的级联PE电路的数量大于或等于激活输入位循环的数量。
条款22:根据条款12-21中任一项所述的神经网络电路,其中所述第一组级联PE电路中的每个PE电路是数字存储器内计算(DCIM)PE电路,其中每个PE电路中的所述MAC电路包括DCIM阵列,其中所述DCIM阵列包括多个存储器内计算单元,并且其中所述存储器内计算单元中的至少一个存储器内计算单元包括八晶体管(8T)静态随机存取存储器(SRAM)单元。
条款23:根据条款12-22中任一项所述的神经网络电路,所述神经网络电路还包括:第二组级联PE电路,其中所述第二组中的第一PE电路的输出耦合到所述第二组中的第二PE电路的输入,并且其中所述第二组级联PE电路中的每个PE电路包括:乘法与累加(MAC)电路;局部累加器电路,所述局部累加器电路具有耦合到所述MAC电路的输出的输入;和一组触发器,所述一组触发器具有耦合到所述局部累加器电路的输出的输入;第二全局累加器电路,所述第二全局累加器电路具有耦合到所述第二组级联PE电路的输出的输入;第一复制触发器,所述第一复制触发器具有耦合到所述第一全局累加器电路的输出的输入;第二复制触发器,所述第二复制触发器具有耦合到所述第二全局累加器电路的输出的第一输入并且具有耦合到所述第一复制触发器的输出的第二输入;和超全局累加器电路,所述超全局累加器电路具有耦合到所述第二复制触发器的输出的输入。
条款24:一种神经网络处理的方法,所述方法包括:在多路复用器的第一输入处从写入寄存器接收第一数据;在所述多路复用器的第二输入处从触发器阵列接收第二数据;在累加器电路处从处理元件(PE)电路接收第三数据;利用所述多路复用器在所述第一数据与所述第二数据之间选择要输出到所述累加器电路的数据;以及利用所述累加器电路累加从所述多路复用器选择的输出数据和从所述PE电路接收的所述第三数据,以生成累加数据。
条款25:根据条款24所述的方法,所述方法还包括:将所述累加数据输出到所述触发器阵列;利用所述触发器阵列将所述累加数据移位到读取寄存器;以及经由写入总线将所述累加数据从所述读取寄存器写入紧耦合存储器(TCM)。
条款26:根据条款24所述的方法,所述方法还包括:将所述累加数据输出到所述触发器阵列;利用所述触发器阵列将所述累加数据移位到读取寄存器;利用数字后处理逻辑部件处理来自所述读取寄存器的所述累加数据;以及经由耦合在所述数字后处理逻辑部件与紧耦合存储器(TCM)之间的写入总线将所处理的累加数据写入所述TCM。
条款27:一种神经网络处理的方法,所述方法包括:在一组级联处理元件(PE)电路中的每个PE电路中执行乘法与累加(MAC)操作,其中所述一组级联PE电路中的第一PE电路的输出耦合到所述一组级联PE电路中的第二PE电路的输入,并且其中所述一组级联PE电路中的每个PE电路包括:MAC电路;局部累加器电路,所述局部累加器电路具有耦合到所述MAC电路的输出的输入;和一组触发器,所述一组触发器具有耦合到所述局部累加器电路的输出的输入;利用每个PE电路中的所述一组触发器执行移位运算,以将值从所述PE电路移位到所述一组级联PE电路中的下一个PE电路或移位到全局累加器电路,其中在每个PE电路中,所述移位运算与所述MAC运算的执行并发执行;以及利用所述全局累加器电路累加来自所述一组级联PE电路中的最后一个PE电路的所移位的值,以生成累加数据。
条款28:根据条款27所述的方法,所述方法还包括在利用权重在每个PE电路中执行所述MAC运算之前,将所述权重并行加载到所述一组级联PE电路中。
条款29:根据条款27或28所述的方法,其中所述累加包括:利用所述全局累加器电路将部分和写入存储器;以及利用所述全局累加器电路从所述存储器读取所述部分和,其中所述一组级联PE电路不将所述部分和写入所述存储器或从所述存储器读取所述部分和。
条款30:根据条款27-29中任一项所述的方法,其中所述累加包括:在所述全局累加器电路中的多路复用器的第一输入处从所述全局累加器电路中的写入寄存器接收第一数据;在所述多路复用器的第二输入处从所述全局累加器电路中的触发器阵列接收第二数据;在所述全局累加器电路中的另一个累加器电路处从所述一组级联PE电路中的最后一个PE电路接收第三数据;利用所述多路复用器在所述第一数据与所述第二数据之间选择要输出到所述另一个累加器电路的数据;以及利用所述另一个累加器电路累加所述第三数据和从所述多路复用器选择的输出数据,以生成所述累加数据。
附加考虑
提供前面的描述是为了使本领域的任何技术人员能够实践本文描述的各个方面。本文讨论的示例不限制在权利要求中阐述的范围、适用性或方面。对这些方面的各种修改对于本领域技术人员而言将是显而易见的,并且本文中所定义的通用原理可以应用于其他方面。例如,在不脱离本公开的范围的情况下,可以对所讨论的元件的功能和布置进行改变。各个示例可以视情况忽略、替换或增加各个进程或部件。例如,所描述的方法可以以不同于所描述的顺序执行,并且可以添加、省略或组合各种步骤。此外,针对一些示例描述的特征可以在一些其他示例中组合。例如,可以使用本文中阐述的任何数量个方面来实现装置或实践方法。另外,本公开的范围旨在涵盖使用作为本文所阐述的本公开的各个方面的补充或替代的其他结构、功能性、或者结构与功能性来实践的这种装置或方法。应当理解,本文所公开的本公开的任何方面可以通过本权利要求的一个或多个元素来体现。
如本文所用,术语″示例性″意指″用作示例、实例或例示″。本文中被描述为″示例性″的任何方面未必被解释为比其他方面优选或具有优势。
如本文所用,提到条目列表″中的至少一项″的短语,指代这些条目的任意组合(其包括单一成员)。举例而言,″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)的规定来解释,除非使用短语″用于......的构件″来明确地记载该元素,或者在方法权利要求的情况下,使用短语″用于......的步骤″来记载该元素。贯穿本公开描述的各个方面的元素的对于本领域普通技术人员来说是已知的或稍后将是已知的所有结构和功能等同方案以引用方式明确地并入本文,并且旨在被权利要求所涵盖。此外,本文所公开的任何内容都不是旨在奉献给公众的,无论这种公开内容是否在权利要求中明确地记载。
Claims (30)
1.一种处理元件(PE)电路,所述PE电路包括:
第一累加器电路;
触发器阵列,所述触发器阵列具有耦合到所述第一累加器电路的输出的输入;
写入寄存器;和
第一多路复用器,所述第一多路复用器具有耦合到所述写入寄存器的输出的第一输入,具有耦合到所述触发器阵列的输出的第二输入,并且具有耦合到所述第一累加器电路的第一输入的输出。
2.根据权利要求1所述的PE电路,所述PE电路还包括读取寄存器,所述读取寄存器具有耦合到所述触发器阵列的所述输出的输入。
3.根据权利要求2所述的PE电路,所述PE电路还包括写入总线,所述写入总线耦合到所述读取寄存器的输出。
4.根据权利要求3所述的PE电路,所述PE电路还包括读取总线,所述读取总线耦合到所述写入寄存器的输入。
5.一种神经网络电路,所述神经网络电路包括多个PE电路,其中所述多个PE电路中的至少一个PE电路包括根据权利要求4所述的PE电路,所述神经网络电路还包括:
紧耦合存储器,所述紧耦合存储器耦合到所述写入总线和所述读取总线;和
全局存储器,所述全局存储器耦合到所述读取总线,其中所述多个PE电路中的另一个PE电路具有耦合到所述第一累加器电路的第二输入的输出。
6.根据权利要求5所述的神经网络电路,其中所述多个PE电路中的所述另一个PE电路不包括写入寄存器。
7.根据权利要求1所述的PE电路,所述PE电路还包括读取总线,所述读取总线耦合到所述写入寄存器的输入,其中所述读取总线被配置为在所述PE电路外部耦合到紧耦合存储器或全局存储器中的至少一者。
8.根据权利要求1所述的PE电路,所述PE电路还包括:
加法器电路;和
累加器与移位器电路,所述累加器与移位器电路具有耦合到所述加法器电路的输出的输入并且具有耦合到所述第一累加器电路的第二输入的输出。
9.根据权利要求8所述的PE电路,所述PE电路还包括:
第二累加器电路;和
第二多路复用器,所述第二多路复用器具有耦合到所述第二累加器电路的输出的第一输入并且具有耦合到所述第一累加器电路的所述第一输入的输出。
10.根据权利要求1所述的PE电路,其中所述PE电路是数字存储器内计算(DCIM)PE电路,并且其中所述PE电路还包括:
DCIM阵列;
位列加法器树电路,所述位列加法器树电路耦合到所述DCIM阵列;和
权重移位加法器树电路,所述权重移位加法器树电路耦合到所述位列加法器树电路。
11.根据权利要求10所述的PE电路,其中所述DCIM阵列包括多个存储器内计算单元,并且其中所述存储器内计算单元中的至少一个存储器内计算单元包括八晶体管(8T)静态随机存取存储器(SRAM)单元。
12.一种神经网络电路,所述神经网络电路包括:
第一组级联处理元件(PE)电路,其中所述第一组中的第一PE电路的输出耦合到所述第一组中的第二PE电路的输入,并且其中所述第一组级联PE电路中的每个PE电路包括:
乘法与累加(MAC)电路;
局部累加器电路,所述局部累加器电路具有耦合到所述MAC电路的输出的输入;和
一组触发器,所述一组触发器具有耦合到所述局部累加器电路的输出的输入;和
第一全局累加器电路,所述第一全局累加器电路具有耦合到所述第一组级联PE电路的输出的输入。
13.根据权利要求12所述的神经网络电路,其中所述第一组级联PE电路中的每个PE电路被配置为并发地进行:用所述MAC电路执行MAC运算以及用所述一组触发器执行移位运算以将值从所述PE电路移位到所述第一组级联PE电路中的下一个PE电路或移位到所述第一全局累加器电路。
14.根据权利要求12所述的神经网络电路,所述神经网络电路还包括存储器,其中:
所述第一全局累加器电路被配置为将部分和写入所述存储器以及从所述存储器读取所述部分和;并且
所述第一组级联PE电路不被配置为将所述部分和写入所述存储器或从所述存储器读取所述部分和。
15.根据权利要求12所述的神经网络电路,其中所述第一全局累加器电路包括:
第一累加器;
触发器阵列,所述触发器阵列具有耦合到所述第一累加器的输出的输入;
写入寄存器;和
第一多路复用器,所述第一多路复用器具有耦合到所述写入寄存器的输出的第一输入,具有耦合到所述触发器阵列的输出的第二输入,并且具有耦合到所述第一累加器的第一输入的输出。
16.根据权利要求15所述的神经网络电路,其中所述第一全局累加器电路还包括读取寄存器,所述读取寄存器具有耦合到所述触发器阵列的所述输出的输入。
17.根据权利要求16所述的神经网络电路,所述神经网络电路还包括紧耦合存储器,其中所述第一全局累加器电路还包括:
写入总线,所述写入总线耦合在所述读取寄存器的输出与所述紧耦合存储器之间;和
读取总线,所述读取总线耦合在所述紧耦合存储器与所述写入寄存器的输入之间。
18.根据权利要求17所述的神经网络电路,所述神经网络电路还包括全局存储器,所述全局存储器耦合到所述第一全局累加器电路的所述读取总线。
19.根据权利要求12所述的神经网络电路,其中所述第一组级联PE电路被配置为使得权重被并行加载到所述第一组级联PE电路中。
20.根据权利要求12所述的神经网络电路,其中所述第一组级联PE电路包括多个级联PE电路,使得所述第一全局累加器电路被配置为接收来自所述第一PE电路的在已经发生与所述多个级联PE电路匹配的多个激活输入位循环之后通过所述第一组中的全部PE电路的部分和。
21.根据权利要求12所述的神经网络电路,其中:
所述第一全局累加器电路被配置为接收来自所述第一PE电路的在已经发生多个激活输入位循环之后通过所述第一组中的全部PE电路的部分和;并且
所述第一组中的级联PE电路的数量大于或等于激活输入位循环的数量。
22.根据权利要求12所述的神经网络电路,其中所述第一组级联PE电路中的每个PE电路是数字存储器内计算(DCIM)PE电路,其中每个PE电路中的所述MAC电路包括DCIM阵列,其中所述DCIM阵列包括多个存储器内计算单元,并且其中所述存储器内计算单元中的至少一个存储器内计算单元包括八晶体管(8T)静态随机存取存储器(SRAM)单元。
23.根据权利要求12所述的神经网络电路,所述神经网络电路还包括:
第二组级联PE电路,其中所述第二组中的第一PE电路的输出耦合到所述第二组中的第二PE电路的输入,并且其中所述第二组级联PE电路中的每个PE电路包括:
乘法与累加(MAC)电路;
局部累加器电路,所述局部累加器电路具有耦合到所述MAC电路的输出的输入;和
一组触发器,所述一组触发器具有耦合到所述局部累加器电路的输出的输入;
第二全局累加器电路,所述第二全局累加器电路具有耦合到所述第二组级联PE电路的输出的输入;
第一复制触发器,所述第一复制触发器具有耦合到所述第一全局累加器电路的输出的输入;
第二复制触发器,所述第二复制触发器具有耦合到所述第二全局累加器电路的输出的第一输入并且具有耦合到所述第一复制触发器的输出的第二输入;和
超全局累加器电路,所述超全局累加器电路具有耦合到所述第二复制触发器的输出的输入。
24.一种神经网络处理的方法,所述方法包括:
在多路复用器的第一输入处从写入寄存器接收第一数据;
在所述多路复用器的第二输入处从触发器阵列接收第二数据;
在累加器电路处从处理元件(PE)电路接收第三数据;
利用所述多路复用器在所述第一数据与所述第二数据之间选择要输出到所述累加器电路的数据;以及
利用所述累加器电路累加从所述多路复用器选择的输出数据和从所述PE电路接收的所述第三数据,以生成累加数据。
25.根据权利要求24所述的方法,所述方法还包括:
将所述累加数据输出到所述触发器阵列;
利用所述触发器阵列将所述累加数据移位到读取寄存器;以及
经由写入总线将所述累加数据从所述读取寄存器写入紧耦合存储器(TCM)。
26.根据权利要求24所述的方法,所述方法还包括:
将所述累加数据输出到所述触发器阵列;
利用所述触发器阵列将所述累加数据移位到读取寄存器;
利用数字后处理逻辑部件处理来自所述读取寄存器的所述累加数据;以及
经由耦合在所述数字后处理逻辑部件与紧耦合存储器(TCM)之间的写入总线将所处理的累加数据写入所述TCM。
27.一种神经网络处理的方法,所述方法包括:
在一组级联处理元件(PE)电路中的每个PE电路中执行乘法与累加(MAC)运算,其中所述一组级联PE电路中的第一PE电路的输出耦合到所述一组级联PE电路中的第二PE电路的输入,并且其中所述一组级联PE电路中的每个PE电路包括:
MAC电路;
局部累加器电路,所述局部累加器电路具有耦合到所述MAC电路的输出的输入;和
一组触发器,所述一组触发器具有耦合到所述局部累加器电路的输出的输入;
利用每个PE电路中的所述一组触发器执行移位运算,以将值从所述PE电路移位到所述一组级联PE电路中的下一个PE电路或移位到全局累加器电路,其中在每个PE电路中,所述移位运算与所述MAC运算的执行并发执行;以及
利用所述全局累加器电路累加来自所述一组级联PE电路中的最后一个PE电路的所移位的值,以生成累加数据。
28.根据权利要求27所述的方法,所述方法还包括:在利用权重在每个PE电路中执行所述MAC运算之前,将所述权重并行加载到所述一组级联PE电路中。
29.根据权利要求27所述的方法,其中所述累加包括:
利用所述全局累加器电路将部分和写入存储器;以及
利用所述全局累加器电路从所述存储器读取所述部分和,其中所述一组级联PE电路不将所述部分和写入所述存储器或从所述存储器读取所述部分和。
30.根据权利要求27所述的方法,其中所述累加包括:
在所述全局累加器电路中的多路复用器的第一输入处从所述全局累加器电路中的写入寄存器接收第一数据;
在所述多路复用器的第二输入处从所述全局累加器电路中的触发器阵列接收第二数据;
在所述全局累加器电路中的另一个累加器电路处从所述一组级联PE电路中的最后一个PE电路接收第三数据;
利用所述多路复用器在所述第一数据与所述第二数据之间选择要输出到所述另一个累加器电路的数据;以及
利用所述另一个累加器电路将来自所述多路复用器的选择的输出数据与所述第三数据累加,以生成所述累加数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/398,791 US20230047364A1 (en) | 2021-08-10 | 2021-08-10 | Partial sum management and reconfigurable systolic flow architectures for in-memory computation |
US17/398,791 | 2021-08-10 | ||
PCT/US2022/074658 WO2023019103A1 (en) | 2021-08-10 | 2022-08-08 | Partial sum management and reconfigurable systolic flow architectures for in-memory computation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117795473A true CN117795473A (zh) | 2024-03-29 |
Family
ID=83149587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280054911.5A Pending CN117795473A (zh) | 2021-08-10 | 2022-08-08 | 用于存储器内计算的部分和管理和可重新配置的脉动流架构 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230047364A1 (zh) |
EP (1) | EP4384899A1 (zh) |
KR (1) | KR20240036594A (zh) |
CN (1) | CN117795473A (zh) |
WO (1) | WO2023019103A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11908545B2 (en) * | 2022-02-24 | 2024-02-20 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory device and operating method for computing-in-memory |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7196708B2 (en) * | 2004-03-31 | 2007-03-27 | Sony Corporation | Parallel vector processing |
US10146506B2 (en) * | 2014-11-11 | 2018-12-04 | Texas Instruments Incorporated | Efficient implementation of a multiplier/accumulator with load |
-
2021
- 2021-08-10 US US17/398,791 patent/US20230047364A1/en active Pending
-
2022
- 2022-08-08 CN CN202280054911.5A patent/CN117795473A/zh active Pending
- 2022-08-08 KR KR1020247004107A patent/KR20240036594A/ko unknown
- 2022-08-08 WO PCT/US2022/074658 patent/WO2023019103A1/en active Application Filing
- 2022-08-08 EP EP22761921.0A patent/EP4384899A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4384899A1 (en) | 2024-06-19 |
WO2023019103A1 (en) | 2023-02-16 |
US20230047364A1 (en) | 2023-02-16 |
KR20240036594A (ko) | 2024-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11080049B2 (en) | Apparatus and methods for matrix multiplication | |
US20230025068A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements | |
US20220414443A1 (en) | Compute in memory-based machine learning accelerator architecture | |
CN117546178A (zh) | 支持逐深度卷积神经网络(cnn)的存储器内计算(cim)架构和数据流 | |
CN117795473A (zh) | 用于存储器内计算的部分和管理和可重新配置的脉动流架构 | |
CN117751346A (zh) | 用于存储器中数字计算的折叠列加法器架构 | |
CN117561519A (zh) | 用于逐深度卷积的存储器内计算架构 | |
US20190095783A1 (en) | Deep learning apparatus for ann having pipeline architecture | |
US20230065725A1 (en) | Parallel depth-wise processing architectures for neural networks | |
US20230004350A1 (en) | Compute in memory architecture and dataflows for depth-wise separable convolution | |
WO2023004374A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements | |
US20230115373A1 (en) | Accumulator for digital computation-in-memory architectures | |
US20240256827A1 (en) | Activation buffer architecture for data-reuse in a neural network accelerator | |
US20240086153A1 (en) | Multi-bit accumulator and in-memory computing processor with same | |
US20240111828A1 (en) | In memory computing processor and method thereof with direction-based processing | |
US20240094988A1 (en) | Method and apparatus with multi-bit accumulation | |
CN117751407A (zh) | 数字存储器内计算 | |
US20230049323A1 (en) | Sparsity-aware compute-in-memory | |
JP2024528690A (ja) | ニューラルネットワークアクセラレータにおけるデータ再利用のための活性化バッファアーキテクチャ | |
EP4377841A1 (en) | Activation buffer architecture for data-reuse in a neural network accelerator |
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 |