CN117651953A - 具有神经处理单元和存储器内计算处理的混合机器学习架构 - Google Patents
具有神经处理单元和存储器内计算处理的混合机器学习架构 Download PDFInfo
- Publication number
- CN117651953A CN117651953A CN202280050002.4A CN202280050002A CN117651953A CN 117651953 A CN117651953 A CN 117651953A CN 202280050002 A CN202280050002 A CN 202280050002A CN 117651953 A CN117651953 A CN 117651953A
- Authority
- CN
- China
- Prior art keywords
- pes
- neural network
- cim
- npu
- processing circuit
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 133
- 230000001537 neural effect Effects 0.000 title claims abstract description 18
- 238000010801 machine learning Methods 0.000 title abstract description 18
- 238000013528 artificial neural network Methods 0.000 claims abstract description 142
- 238000000034 method Methods 0.000 claims abstract description 52
- 230000015654 memory Effects 0.000 claims description 77
- 230000004913 activation Effects 0.000 claims description 60
- 238000012805 post-processing Methods 0.000 claims description 23
- 238000012546 transfer Methods 0.000 claims description 4
- 238000001994 activation Methods 0.000 description 59
- 241001442055 Vipera berus Species 0.000 description 22
- 230000036961 partial effect Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 14
- 239000013598 vector Substances 0.000 description 14
- 238000013507 mapping Methods 0.000 description 12
- 238000009825 accumulation Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 210000004027 cell Anatomy 0.000 description 10
- 238000013527 convolutional neural network Methods 0.000 description 10
- 230000002829 reductive effect Effects 0.000 description 9
- 238000013135 deep learning Methods 0.000 description 8
- 230000004927 fusion Effects 0.000 description 8
- 238000012549 training Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 5
- 238000011176 pooling Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011478 gradient descent method Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 238000003491 array Methods 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
- 238000013461 design Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000000605 extraction 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
- 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
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/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
- 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
-
- 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/04—Architecture, e.g. interconnection topology
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/042—Knowledge-based neural networks; Logical representations of neural networks
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Image Analysis (AREA)
Abstract
用于执行机器学习任务的方法和装置,尤其是包括神经处理单元(NPU)和存储器内计算(CIM)元件两者的混合架构。一个示例神经网络处理电路一般包括多个CIM处理元件(PE)、多个神经处理单元(NPU)PE、以及耦合到该多个CIM PE和该多个NPU PE的总线。用于神经网络处理的一个示例方法一般包括:在神经网络处理电路中处理数据,该神经网络处理电路包括多个CIM PE、多个NPU PE、以及耦合到该多个CIM PE和该多个NPU PE的总线;以及经由总线在该多个CIM PE中的至少一者与该多个NPU PE中的至少一者之间传递经处理数据。
Description
相关申请的交叉引用
本申请要求于2022年7月20日提交的美国申请No.17/813,834的优先权,该美国申请要求于2021年7月21日提交的美国临时申请No.63/224,155的优先权的权益,这两篇申请通过援引如同在下文全面阐述那样且出于所有适用目的全部明确纳入于此。
技术领域
本公开的各方面涉及机器学习,并且具体地涉及神经处理单元(NPU)和存储器内计算(CIM)技术。
背景技术
机器学习通常是产生经训练模型(例如,人工神经网络、树或其他结构)的过程,其表示对先验已知的训练数据集合的广义拟合。将经训练模型应用于新数据会产生推断,这可被用于获得关于新数据的洞察。在一些情形中,将模型应用于新数据被描述为对新数据“运行推断”。
随着机器学习的使用激增以用于实现各种机器学习(或人工智能)任务,已经对更高效地处理机器学习模型数据的期望已增长。在一些情形中,可使用专用硬件(诸如机器学习加速器)来增强处理系统处理机器学习模型数据的能力。然而,此类硬件需要空间和功率,这在处理设备上并非总是可得到的。例如,“边缘处理”设备(诸如移动设备、常开设备、物联网(IoT)设备等)通常必须平衡处理能力与功率和封装约束。此外,加速器可跨共用数据总线移动数据,这会导致大量功率使用并将等待时间引入到共享数据总线的其他进程中。因此,正在考虑处理系统的其他方面来处理机器学习模型数据。
存储器设备是处理系统的另一方面的一个示例,其可以被用于通过所谓的存储器内计算(CIM)过程(也称为“存储器内计算”)来执行机器学习模型数据的处理。常规CIM过程使用模拟信号来执行计算,这可能导致计算结果不准确,从而对神经网络计算产生不利影响。因此,需要用于以增加的准确性来执行存储器内计算的技术和装置。
概述
本公开的系统、方法和设备各自具有若干方面,其中并非仅靠任何单一方面来负责其期望属性。在不限定如所附权利要求所表述的本公开的范围的情况下,下文简要地讨论一些特征。在考虑此讨论后,并且尤其是在阅读题为“详细描述”的章节之后,将理解本公开的特征如何提供如本文所述的优点。
本公开的某些方面涉及神经网络处理电路。该神经网络处理电路一般包括多个存储器内计算(CIM)处理元件(PE)、多个神经处理单元(NPU)PE、以及耦合到该多个CIM PE和该多个NPU PE的总线。
本公开的某些方面涉及用于神经网络处理的方法。该方法一般包括:在神经网络处理电路中处理数据,该神经网络处理电路包括多个CIM PE、多个NPU PE以及耦合到该多个CIM PE和该多个NPU PE的总线;经由总线在该多个CIM PE中的至少一者与该多个NPU PE中的至少一者之间传递经处理数据。
本公开的某些方面涉及处理系统。该处理系统一般包括:多个CIM PE,多个NPUPE,耦合到该多个CIM PE和该多个NPU PE的总线,其上存储有计算机可执行指令的存储器,以及一个或多个处理器,其被配置成执行存储在其上的计算机可执行指令以经由总线在该多个CIM PE中的至少一者与该多个NPU PE中的至少一者之间传递经处理数据。
其他方面提供了:处理系统,其被配置成执行前述方法以及本文中所描述的那些方法;非瞬态计算机可读介质,其包括在由处理系统的一个或多个处理器执行时使该处理系统执行前述方法以及本文中所描述的方法的指令;计算机程序产品,其被实施在计算机可读存储介质上,该计算机可读存储介质包括用于执行前述方法以及本文中进一步描述的那些方法的代码;以及处理系统,其包括用于执行前述方法以及本文中进一步描述的那些方法的装置。
为了达成前述及相关目的,这一个或多个方面包括在下文充分描述并在权利要求中特别指出的特征。以下描述和附图详细阐述了这一个或多个方面的某些解说性特征。然而,这些特征仅指示可采用各个方面的原理的各种方式中的数种方式。
附图简述
为了能详细理解本公开的以上陈述的特征所用的方式,可参照各方面来对以上简要概述的内容进行更具体的描述,其中一些方面在附图中解说。然而应注意,附图仅解说了本公开的某些典型方面,故不应被认为限定其范围,因为本描述可允许有其他等同有效的方面。
图1A-1D描绘了可以通过本公开的各方面来实现的各种类型的神经网络的示例。
图2描绘了可以通过本公开的各方面来实现的传统卷积运算的示例。
图3A和图3B描绘了可以通过本公开的各方面来实现的逐深度可分离卷积运算的示例。
图4是根据本公开的某些方面的示例数字存储器内计算(DCIM)架构的框图。
图5解说了实现为八晶体管(8T)静态随机存取存储器(SRAM)单元的图4的DCIM架构的示例存储器内计算(CIM)单元。
图6是根据本公开的某些方面的示例神经处理单元(NPU)架构的框图。
图7A是根据本公开的某些方面的解说示例数据流序列的具有共享资源的DCIM处理元件(PE)和NPU PE的示例混合架构的框图。
图7B是根据本公开的某些方面的示例混合架构的框图,其具有共享资源的DCIMPE和NPU PE并且具有用于实现数据交换的先进先出(FIFO)电路。
图8是根据本公开的某些方面的针对轻对重输入、深度和内核的不同组合比较DCIM和NPU的表。
图9是根据本公开的某些方面的混合架构中的示例DCIM PE和示例NPU PE之间的数据交换的框图。
图10解说了根据本公开的某些方面的用于NPU PE的示例输出驻定映射。
图11解说了根据本公开的某些方面的用于DCIM PE的示例伪权重驻定映射。
图12是解说根据本公开的某些方面的用于神经网络处理的示例操作的流程图。
图13是解说根据本公开的某些方面的具有被配置成执行机器学习任务的混合架构的示例电子设备的框图。
为了促成理解,在可能之处使用了相同的附图标记来指定各附图共有的相同要素。构想了一个方面的要素和特征可有益地被纳入到其他方面中而无需进一步引述。
详细描述
本公开的各方面提供了用于执行数据密集型处理(诸如实现机器学习模型)的装置、方法、处理系统和计算机可读介质。一些方面提供使用存储器内计算(CIM)和神经处理单元(NPU)处理元件(PE)两者的混合神经网络架构,其中CIM PE和NPU PE可以共享资源(例如,存储器),可以并发地操作,并且可以将数据从一个类型的PE传递到相同神经网络层内或不同神经网络层(例如,毗邻层)中的另一类型的PE。例如,CIM和NPU PE可被耦合到相同的紧耦合存储器(TCM)总线,以用于传递权重、激活输入和/或输出。与仅利用NPU PE或仅利用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解说了DCN 100的示例,其被设计成识别由图像捕捉设备130生成的图像126中的视觉特征。例如,如果图像捕捉设备130是安装在交通工具中或上(或以其他方式与交通工具一起移动)的相机,则DCN 100可以用各种监督式学习技术进行训练,以标识交通标志以及甚至交通标志上的数字。同样地,DCN 100可被训练用于其他任务,诸如标识车道标记或标识交通信号灯。这些仅仅是一些示例任务,并且许多其他任务是可能的。
在图1D的示例中,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包括一个或多个特征的概率。
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的层进行“反向传递(backward pass)”。
在实践中,权重的误差梯度可能是在少量示例上计算的,从而计算出的梯度近似于真实误差梯度。这种近似方法可被称为随机梯度下降法。随机梯度下降法可被重复,直到整个系统可达成的误差率已停止下降或直到误差率已达到目标水平。
在训练后,可向DCN 100呈递新图像,并且DCN 100可生成各个特征在新图像中的推断(诸如分类)或概率。
用于卷积神经网络的卷积技术
卷积通常被用来从输入数据集中提取有用特征。例如,在(诸如以上所描述的)卷积神经网络中,卷积使得能够使用内核和/或滤波器(其权重是在训练期间自动习得的)来提取不同的特征。所提取的特征随后被组合以做出推断。
激活函数可在卷积神经网络的每一层之前和/或之后被应用。激活函数通常是确定神经网络的节点的输出的数学函数。因此,激活函数基于节点的输入是否与模型的预测相关来确定该节点是否应当传递信息。在一个示例中,在y=conv(x)(即,y=x的卷积)的情况下,x和y两者都可一般地被认为是“激活”。然而,就特定的卷积运算而言,x也可以被称为“预激活”或“输入激活”,因为x存在于特定卷积之前,而y可以被称为输出激活或特征图。
图2描绘了传统卷积的示例,其中12像素x12像素x3通道输入图像202使用5x5x3卷积内核204和为1的步幅(或步长)进行卷积。结果所得的特征图206是8像素x8像素x1通道。如该示例中可见,与输出数据相比,传统卷积可能会改变输入数据的维度(这里,从12x12到8x8像素),包括通道维度(这里,从3通道到1通道)。卷积内核204被示出为对应于输入图像202的一部分,该内核与输入图像202的该部分进行卷积以生成特征图206的单个元素。一般而言,如在该示例中,内核204的深度(d=3)与输入图像202的通道数匹配。
减少计算负担(例如,以每秒浮点运算次数(FLOP)来衡量)和与包括卷积层的神经网络相关联的参数数目的一种方式是对卷积层进行因式分解。例如,(诸如图2中所描绘的)空间可分离卷积可被分解为以下两个分量:(1)逐深度卷积,其中每个空间通道通过逐深度卷积独立地进行卷积(例如,空间融合);以及(2)逐点卷积,其中所有空间通道都是线性组合的(例如,通道融合)。图3A和3B中描绘了逐深度可分离卷积的示例。一般而言,在空间融合期间,网络从空间面中学习特征,而在通道融合期间,网络跨通道学习这些特征之间的关系。
在一个示例中,可使用用于空间融合的5x5内核和用于通道融合的1x1内核来实现逐深度可分离卷积。具体而言,通道融合可使用迭代遍历深度为d的输入图像中的每一个单点的1x1xd内核,其中该内核的深度d通常与该输入图像的通道数目相匹配。经由逐点卷积的通道融合对于高效计算的降维是有用的。应用1x1xd内核并在内核之后添加激活层可以给予网络增加的深度,这可以提高网络的性能。
具体而言,在图3A中,12像素x12像素x3通道输入图像302与包括各自具有5x5x1维度的三个单独内核304A-C的滤波器进行卷积,以生成8像素x8像素x3通道的特征图306,其中每个通道由具有图3A中相应阴影的内核304A-C之中的个体内核生成。每个卷积内核304A-C被示出为对应于输入图像302的一部分,该内核与输入图像302的该部分进行卷积以生成特征图306的单个元素。此处内核304A-C的组合深度(d=3)与输入图像302的通道数匹配。
随后,特征图306使用其中内核308具有维度1x1x3的逐点卷积操作进行进一步卷积(如图3B所示),以生成8像素x8像素x1通道的特征图310。如该示例中所描绘的,特征图310具有降低的维度(1通道对3通道),其允许利用特征图310进行更高效的计算。
尽管图3A和3B中的逐深度可分离卷积的结果与图2中的传统卷积基本上类似,但计算数目显著减少,并且因此可分离卷积在网络设计允许的情况下提供了显著的效率增益。
尽管图3B中未作描述,但是可以使用多个(例如,m个)逐点卷积内核308(例如,滤波器的个体分量)来增加卷积输出的通道维度。因此,可以生成例如m=256个1x1x3内核308,其中,每个输出为8像素x8像素x1通道特征图(例如,特征图310),并且这些特征图可被堆叠以得到结果所得的8像素x8像素x256通道的特征图。由此产生的信道维度的增加为训练提供了更多的参数,这可以提高卷积神经网络识别(例如,输入图像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阵列可以用任何数目的字线并且用任何数目的列来实现。如图所示,CIM单元4020-0至40231-7(统称为“CIM单元402”)在WL 404和列406的交点处实现。
每个CIM单元402可以例如使用以下参考图5所描述的CIM单元架构来实现。
CIM单元402可以加载有神经网络的权重比特。激活输入可以作为输入矩阵(例如,32行乘8列矩阵)提供给CIM阵列401,一次一个向量,或者作为跨列共享的输入向量(例如,32行乘1列向量,该1列向量跨8列共享或硬连线)。如图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单元402可以用存储在CIM单元中的权重比特对所接收的激活输入比特执行逐比特乘法,并且将结果传递到CIM单元的输出(例如,读位线(RBL),如参考图5所解释的)。
如图所示,DCIM电路400可以包括比特列加法器树409,其可以包括八个加法器树4100至4107(统称为“加法器树410”),每个加法器树针对列406中的相应一者来实现。加法器树410中的每一者将来自列406中的相应一者上的CIM单元402的输出信号相加,并且加法器树410可以并行地(例如,并发地)操作。加法器树410的输出可被耦合到权重移位加法器树电路412,如图所示。权重移位加法器树电路412包括多个权重移位加法器414,每个权重移位加法器414包括比特移位和相加电路以促成对比特移位和相加操作的执行。换而言之,列4060上的CIM单元可以存储每个字线404上针对相应权重的最高有效比特(MSB),并且列4067上的CIM单元可以存储每个字线404上的相应权重的最低有效比特(LSB)。因此,当跨列406执行加法时,执行比特移位操作以对这些比特进行移位从而计及相关联列上比特的有效性。
权重移位加法器树电路412的输出被提供给激活移位累加器电路416。激活移位累加器电路416包括比特移位电路418、串行累加器420和触发器(FF)阵列422。例如,FF阵列422可被用于实现寄存器。
对于某些方面,图4的DCIM电路400的各个元件可以用共用时钟频率来操作(如由标签“系统频率x1”所指示的)。
在DCIM电路400的操作期间,激活电路系统490提供第一组激活输入比特a(0,0)至a(31,0)(例如,一批三十二个激活输入特征中的第一向量)给CIM单元402以用于在第一激活循环期间进行计算。例如,第一组激活输入比特a(0,0)至a(31,0)可以表示激活输入的最高有效位。使用加法器树410中相应的一者来将每一列406上的计算的输出相加。使用权重移位加法器树电路412将加法器树410的输出相加,其结果被提供给激活移位累加器电路416。在后续激活循环期间,针对其他组激活输入比特(该批量中的其他输入向量)执行相同的操作,诸如针对可以表示激活输入的第二最高有效位的激活输入比特a(0,1)到a(31,1)(例如,第二向量),依此类推,直到处理表示激活输入的最低有效位的激活输入比特。比特移位电路418基于该激活循环来执行比特移位操作。例如,对于使用八个激活循环处理的8比特激活输入,比特移位电路418可以针对第一激活循环执行8比特移位,针对第二激活循环执行7比特移位,等等。在激活循环之后,使用串行累加器420对比特移位电路418的输出进行累加并将其存储在FF阵列422中,FF阵列422可被用作寄存器以将最终累加结果传递到另一组件(例如,输出TCM或数字后处理逻辑,如下所述)。
图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提供逻辑高信号来导通闸通晶体管502、518——这里被实现为n型场效应晶体管(NFET),从而导致该数字信号被存储在经交叉耦合反相器对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保持逻辑高。因此,仅当权重比特和激活输入比特均为逻辑高时,CIM单元500在RBL 522处的输出为逻辑低,否则为逻辑高,从而有效地实现NAND门操作。
示例神经处理单元(NPU)架构
图6是根据本公开的某些方面的示例神经处理单元(NPU)架构600的框图。NPU也可被称为神经网络信号处理器(NSP),但为了一致性,本公开使用术语“NPU”。NPU架构600可以具有权重紧耦合存储器(TCM)总线602、激活TCM总线604、输出TCM总线610、数字后处理逻辑608和多个NPU处理元件(PE)606。每个NPU PE 606可以包括多个乘法累加(MAC)单元612、加法器树614和累加器寄存器616,如图所示。数字后处理逻辑608可以对来自NPU PE的累加结果执行各种合适的数字处理操作中任一者,诸如偏置、批量归一化(BN)、线性/非线性阈值、量化等。
图6的NPU架构600提供针对激活输入和权重的并行MAC操作,并且单个计算循环可以生成累加结果。NPU PE 606可以使用输出驻定架构以便重用累加器。如本文中所使用的,术语“输出驻定”一般指重用架构,其中计算结果在操作期间保持驻定,但输入和权重沿相反方向移动通过该架构。也就是说,NPU架构600可能受到用于馈送数据(例如,激活输入和/或权重)的TCM带宽的限制,并且输出驻定架构可能对于在每个循环处加载的权重具有相对较大的能量惩罚。此外,每个MAC单元612可能占用相对大的区域,以使得NPU架构600可能占用大量空间。
示例混合架构和数据流
如上所述,存储器内计算(CIM)技术正解决从存储器和处理系统(例如,中央处理单元(CPU))移动数据所产生的能量和速度瓶颈。CIM在权重驻定用例中提供能效高和显著减少的存储器存取(例如,全局存储器存取)。如以上所解释的,术语“权重驻定”一般指重用架构,其中神经网络权重在操作期间(例如,在最初加载之后)保持驻定并且输入被流入。权重驻定映射可被用在CIM中以减少操作期间权重更新时间的开销。
尽管有这些好处,CIM和其他权重驻定映射方案在某些应用中可能面临一些挑战。例如,一些神经网络处理电路(例如,DCIM PE)的权重驻定操作可能迫使这些电路将部分累加结果卸载和重新加载(例如,写入和读取)到存储器(例如,输出TCM)以获得最终累加。也称为“部分和”的部分累加结果不是最终数据,或者换而言之,尚未准备好成为(或在结果成为之前被传递到数字后处理逻辑)下一层的激活输入也不是作为层的最终结果存储在输出TCM中的数据。相反,部分和可以暂时存储在输出TCM中并读回DCIM PE以在一个或多个循环中进一步处理,直到最终累加输出准备好。当最终输出准备好(例如,由数字后处理逻辑)处理时,这些部分和则可以被丢弃。
在一些情形中,权重驻定映射可能强制将部分累加结果写入缓冲存储器并从缓冲存储器读回以用于后续输入特征乘法累加(MAC)操作,如果无法在同一MAC循环中处置该读/写,则这可能产生能源和性能惩罚方面(例如,较低的每秒万亿次运算(TOPS)方面)的开销。此外,CIM的灵活性可能降低,例如当映射到具有少量内核和/或低深度(例如,少量神经网络层)的工作负载时。CIM的利用率也可能有限,尤其是在内核数量较少和输入数量较多的工作负载中。此外,CIM很可能在输出驻定工作负载中遭受性能惩罚(例如,减少的TOPS),由于在操作期间将CIM权重逐行加载到CIM单元。如以上所解释的,术语“输出驻定”一般指重用架构,其中计算结果在操作期间保持驻定,但输入和权重沿相反方向移动通过该架构。
相比之下,NPU非常适合有利于输出驻定映射和/或高度输入特征并行性的工作负载。然而,NPU可能遭受大量内核的可伸缩性、由于权重存储和乘法的大面积占用、以及性能(例如,TOPS)对存储器带宽的强烈依赖性。此外,NPU可能受限于每次累加的行数较少;否则,可能存在速度和面积的惩罚。
换句话说,CIM单元在能效方面一般优于NPU,而NPU在逐深度卷积方面一般优于CIM单元。由于比特串行操作,数字存储器内计算(DCIM)单元的TOPS可能较低,但对于给定面积(例如,以TOPS/mm2而言),其性能与NPU相当或更好。由于以上呈现的该各种优点和缺点,仅使用CIM单元或仅使用NPU的神经网络架构对于某些应用可能并不理想。
本公开的某些方面提供了使用DCIM和NPU来获得最佳或至少更好的能量和速度折中的一种混合架构。在该混合架构中,DCIM和NPU处理元件(PE)可以能够使用共享存储器资源,可以能够并发操作,并且可以能够将数据从一个计算单元(例如,NPU/DCIM)传递到另一计算单元(例如,DCIM/NPU),这允许在神经网络的同一层或连贯层内进行级联。另外,DCIMPE可以利用伪权重驻定映射来实现,并且NPU PE可以用输出驻定映射来实现,以使得DCIM和NPU PE可以在同一层内流水线化数据话务。
图7A是根据本公开的某些方面的解说示例数据流序列的具有共享资源的DCIM PE702和NPU PE 703的示例混合架构700的框图。DCIM PE 702可以用各种合适的DCIM电路中的任一者(诸如图4的DCIM电路400)来实现。NPU PE 703可以用各种合适的NPU电路中的任一者来实现,诸如关于图6所描述的NPU PE 606。混合架构700还可以包括全局存储器704、权重紧耦合存储器(TCM)706、激活TCM 708、输出TCM 710、总线仲裁逻辑712、数字后处理逻辑713、存储器总线714和PE总线716(例如,具有FIFO的共用总线)。如本文所使用的,“TCM”一般指通过来自处理器(诸如PE 702、703)的专用连接所访问的存储器。尽管被示出为单独的TCM,但权重TCM 706、激活TCM 708和/或输出TCM 710可以被组合。存储器总线714可以将全局存储器704耦合到权重TCM 706、激活TCM 708和输出TCM 710。PE总线716可以将DCIMPE 702、NPU PE 703和数字后处理逻辑713耦合在一起。以此方式,DCIM PE 702和NPU PE703可以共享存储器资源(例如,权重TCM、激活TCM和输出TCM)。
在所示的数据流序列中,权重可以从全局存储器704加载到权重TCM 706。然后,可以将权重从权重TCM 706加载到PE权重阵列(例如,在DCIM PE 702的CIM单元中和/或在NPUPE 703的权重寄存器中)。激活输入可以经由存储器总线714从全局存储器704加载到激活TCM 708。然后,激活输入可以从激活TCM 708加载到PE总线716(或者作为激活总线操作的PE总线的至少一部分)。在权重已被加载到PE中并且激活在激活总线上准备好之后,DCIMPE 702和NPU PE 703可以在多个计算循环上执行计算(例如,MAC操作)以生成最终累加结果。最终累加结果可以由数字后处理逻辑713来处理,并且经处理结果可以在总线仲裁逻辑712的控制下被写入到输出TCM 710。经处理结果可以从输出TCM 710经由存储器总线714加载到全局存储器704中。
图7B是根据本公开的某些方面的另一示例混合架构750的框图,其具有共享资源的DCIM PE 702和NPU PE 703并且具有用于实现数据交换的先进先出(FIFO)电路。DCIM PE702可以用各种合适的DCIM电路中的任一者(诸如图4的DCIM电路400)来实现。NPU PE 703可以用各种合适的NPU电路中的任一者来实现,诸如关于图6所描述的NPU PE 606。混合架构750还可以包括全局存储器704、一个或多个TCM 718(用于存储权重、激活输入和/或输出)、权重缓冲器720、总线仲裁逻辑712、数字后处理逻辑713、DCIM PE图块映射器722、NPUPE图块映射器724,比特串行交织器726、DCIM PE激活FIFO 728、NPU PE激活FIFO 730、以及存储器总线714(也称为“TCM总线”)。存储器总线714可以将全局存储器704耦合到一个或多个TCM 718以及总线仲裁逻辑712。存储器总线714还可以将一个或多个TCM 718耦合到权重缓冲器720的输入以及总线仲裁逻辑712。存储器总线714还可以将权重缓冲器720的输出耦合到总线仲裁逻辑712。总线仲裁逻辑712可以将权重路由到DCIM PE 702和NPU PE 703,并且可以将激活输入路由到不同的激活FIFO(例如,728、730)。总线仲裁逻辑712还可以从数字后处理逻辑713接收输出(例如,最终累加结果或部分和)。以此方式,DCIM PE 702和NPUPE 703可以共享存储器资源(例如,一个或多个TCM 718)。用于混合架构750的数据流序列可以类似于以上针对混合架构700所解释的数据流序列。
对于混合架构700、750,数字后处理逻辑713可以利用诸如偏置、批量归一化、线性/非线性阈值、量化等功能来处理输出数据。从总线仲裁逻辑712接收激活输入,总线仲裁逻辑712可以选择以下任一者来准备针对DCIM PE 702和NPU PE 703中的任一者或两者的激活输入、以及将该激活输入写入对应的激活FIFO 728或730:(1)直接从TCM 718读取的激活数据(通常用于网络的第一层,其中数据可能源自实际视频、音频或其他传感器输入);或者
(2)从数字后处理逻辑713读取的激活数据(通常用于网络的中间层,其中处理来自DCIM和/或NPU PE的累加器输出)。每个激活FIFO 728或730可以使用触发器阵列、双端口SRAM存储器或具有一个写入端口和读取端口的寄存器堆来实现。总线仲裁逻辑712可以通过由将输入数据路由到多个目的地的(解)复用器组成的组合电路来实现。数据目的地可以由映射器模块来控制,映射器模块可以基于层工作负载来做出目的地决策。
DCIM PE 702的伪权重驻定数据流生成部分和累加器结果。部分和不是最终数据,或者换句话说,尚未准备好成为下一层的激活输入,也未准备好成为充当层最终结果存储在输出TCM中的数据。相反,部分和可以暂时存储在输出TCM中并读回DCIM PE 702以在一个或多个循环中进一步处理,直到最终输出准备好。当最终输出准备好被数字后处理逻辑713处理时,这些部分和则可以被丢弃。
部分和输出可以通过总线仲裁逻辑712来路由、发送到输出TCM、再读回、然后通过总线仲裁逻辑712发送回DCIM PE 702。来自DCIM PE 702的累加器输出可被发送到数字后处理逻辑713以进行处理,然后发送到总线仲裁逻辑712。在部分和的情形中,去往数字后处理逻辑713的累加器输出可以通过其被馈送(例如,不被数字后处理逻辑处理)。如果累加器输出是最终累加器结果,则累加器输出由数字后处理逻辑713处理。数字后处理逻辑向总线仲裁逻辑712发送该经处理输出,然后总线仲裁逻辑712向输出TCM发送该数据或作为另一网络层的激活输入。
对于权重读取,DCIM PE 702是伪权重驻定的,不需要频繁的权重写入,并且可以没有权重广播方案。由于DCIM PE 702中的该伪权重驻定架构和较不频繁的权重写入,因此MAC停顿的量可以显著减少。相反,NPU PE 703是输出驻定的,其具有频繁的权重写入和允许跨并行输入共享权重的权重广播方案。
对于输入读取,DCIM PE 702具有较少的激活读取,因为大量经映射内核(例如,并行运行的32个内核)启用了较低的内核循环。相反,NPU PE 703的频繁权重访问可能导致空间映射输入特征的配对、以及空间映射内核的配对(例如,并行运行的8个输入特征、以及并行运行的8个内核)。否则,如果完成全组输入特征的循环数增加,则可能存在因重复权重读取的显著权重访问惩罚。
图8是根据本公开的某些方面的针对轻对重输入、深度和内核的不同组合来比较DCIM和NPU的表800。例如,表800中的010表示轻输入、重深度和轻内核,而101表示重输入、轻深度和重内核。从表800可以看出,可以确定DCIM在能效方面总体优于NPU。然而,例如,NPU在逐深度卷积方面优于DCIM。
图9是根据本公开的某些方面的使用恰适的激活FIFO和数字后处理(DPP)逻辑906、908在混合架构中的示例DCIM PE 902和示例NPU PE 904之间的数据交换的框图900。例如,DCIM PE 902可以在CWD x FDD x IBD循环之后生成第一输出批量(HWD输出),其中HWD是由DCIM PE 902的并行硬件所生成的输出字节的数量,CWD是DCIM PE 902的卷积窗口,FDD是DCIM PE 902的滤波器深度,并且IBD是DCIM PE 902的输入批量大小。换句话说,硬件资源是并行输入、并行内核、滤波器深度和卷积窗口的空间映射。不适合硬件资源的环可以在顺序时钟循环中运行。
同样,NPU PE 904可以在CWN x FDN个循环之后生成第一输出批量(HWN输出),其中HWN是由NPU PE 904的并行硬件所生成的输出字节数量,CWN是NPU PE 904的卷积窗口,并且FDN是NPU PE 904的滤波器深度。对于某些方面,CWN x FDN可以小于8x CWD x FDD,因为DCIM PE(例如,在图4的电路400的情形中)每次累加具有超过32个激活,而NPU PE 904每次累加具有4个激活。在一些情形中,DCIM PE 902的输入批量大小被选择得足够小(例如,IBD≤32)以减少输出等待时间并且因此减少激活FIFO大小,但又足够大(例如,IBD≥7)以分摊权重加载时间并且保持较高的权重重用系数。
图10解说了根据本公开的某些方面的具有用于NPU PE(例如,NPU PE 606)的数据流定时的示例输出驻定映射方案1000。在该示例中,深度优先实现可以启用输出驻定映射方案。部分和(例如,标记为“PS1”和“PS2”的部分和)可以被每个NPU PE内的累加器重用。对于某些方面,可能存在并行运行的多个输入(例如,标记为“输入1”和“输入2”的输入)。虽然仅示出了两个输入,但取决于NPU PE的数量,可以有两个以上的输入。对于每个时钟循环,将运行一个深度循环。
每个深度循环可能涉及获得权重更新,这可能导致低权重使用因子和能量惩罚。在获得权重更新之后,可以将经更新的权重广播到每个并行输入(例如,输入1和输入2)。每个深度循环,读取深度Ni处的一个切片。例如,在第一深度循环期间,读取深度N1的切片,在第二深度循环期间,读取深度N2的第二切片,并且对于每个深度Ni依此类推。深度循环期间的累加可以由每个NPU PE内的累加器执行以在最终累加器(例如,累加器寄存器616)中生成输出(例如,标记为“OUT1”和“OUT2”的输出)。作为结果,部分和(例如,PS1、PS2)不需要被写入存储器或寄存器堆,并且可以减少到存储器的输出话务。当深度循环完成时,最终累加器值(例如,标记为“OUTW1”和“OUTW2”的值)可以被写入存储器(例如,输出TCM)——在被传递到数字后处理逻辑之后一些情形中)——或者可被直接转移到DCIM,如上所述。NPU PE中输入并行性的使用提高了权重使用因子并且提高了性能(例如,TOPS)。
图11解说了根据本公开的某些方面的具有用于DCIM PE(例如,DCIM PE 702)的数据流定时的示例伪权重驻定映射方案1100。该伪权重驻定映射方案是输入批量实现并且优先是权重驻定的。伪权重驻定方案处理针对多个深度循环中的每一者的输入特征批量。较小的批量大小允许更快地生成最终输出结果,因为与在其中针对每个深度循环处理所有输入的情形相比,要通过深度循环完成运行的循环总数变得低得多,这将显著延迟输出生成。在该伪权重驻定实现中,DCIM PE可以是全局输入驻定的,以维持存储部分和的输出TCM大小与合理的输出等待时间。这还可以通过限制从DCIM PE所生成的最终输出量来减少NPUPE激活FIFO的深度。
如图所示,权重被重新用于该输入批量。例如,如图所示,权重可以在深度循环开始处被加载达4个循环周期。在某些方面,整个特征图可能无法在一个深度循环中完成,并且可以利用多个深度循环来扩展该输入特征图。例如,用于在深度循环中扩展输入特征图的输入循环的数量可以是32,如图所示。用于加载权重的深度循环的数量和用于扩展特征图的深度循环的数量可以根据深度循环内的时钟循环的数量来设置。“PSW”表示写入输出TCM的部分和输出,而“PSR”表示从输出TCM读回的部分和输出。在最后一个深度循环,最终输出(例如,OUTW1、OUTW2、...和OUTWN)可被传递到输出TCM——在被传递到数字后处理逻辑之后的一些情形中——或被传递到NPU和DCIM之间的临时存储器,如上所述。
本公开的某些方面提供了组合DCIM和NPU技术的混合神经网络架构和电路系统,从而在实现神经网络时允许最佳(或至少更好)的能量和速度折中。此类混合架构可以实现针对通过使用NPU和DCIM PE中的任一个或两者来优化(或至少增强)能量和/或性能(例如,TOPS)的工作负载执行。DCIM PE和NPU PE能够将共享的存储器资源(例如,TCM)用于权重、激活和输出中的任一者或组合。伪权重驻定DCIM PE和输出驻定NPU PE允许从一个计算单元(例如,NPU/DCIM)到另一计算单元(例如,DCIM/NPU)的快速数据移植(以及此类移植中减少的FIFO的深度),从而允许DCIM和NPU PE的并发操作。以此方式,DCIM PE和NPU PE可以在相同层内管道化数据话务和/或可以在连贯层之间级联数据。
使用混合架构进行数据处理的示例操作
图12是解说根据本公开的某些方面的用于神经网络处理的示例操作1200的流程图。操作1200可以由混合神经网络电路执行,诸如分别关于图7A或7B描述的混合架构700或750。
操作1200可以在框1205始于电路处理数据。该电路包括多个存储器内计算(CIM)处理元件(PE)(例如,DCIM PE 702)、多个神经处理单元(NPU)PE(例如,NPU PE 703)、以及耦合到该多个CIM PE和该多个NPU PE的总线(例如,NPU总线716)。在框1210,经处理数据经由总线在该多个CIM PE中的至少一者与该多个NPU PE中的至少一者之间传递。
根据某些方面,神经网络电路进一步包括全局存储器(例如,全局存储器704)或紧耦合存储器(TCM)(例如,权重TCM 706、激活TCM 708、输出TCM 710、或一个或多个TCM 718)中的至少一者。在此情形中,框1210处的传递可以涉及经由总线在该多个CIM PE中的至少一者和该多个NPU PE中的至少一者之间传递经处理数据,而不将经处理数据写入全局存储器或TCM中的至少一者。
具有混合架构的示例设备
图13解说了示例电子设备1300。电子设备1300可被配置成执行本文中所描述的方法,包括关于图12所描述的操作1200。
电子设备1300包括中央处理单元(CPU)1302,其在一些方面可以是多核CPU。在CPU1302处执行的指令可例如从与CPU 1302相关联的程序存储器加载,或者可从存储器1324加载。
电子设备1300还包括为特定功能定制的附加处理组件,诸如图形处理单元(GPU)1304、数字信号处理器(DSP)1306、具有神经处理单元(NPU)处理元件(PE)1308和存储器内计算(CIM)PE 1309的混合神经网络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,该存储器1324代表一个或多个静态和/或动态存储器,诸如动态随机存取存储器(DRAM)、基于闪存的静态存储器等等。在该示例中,存储器1324包括计算机可执行组件,其可由电子设备1300的前述处理器中的一个或多个处理器(包括混合神经网络1307)执行。所描绘的组件以及其他未描绘的组件可被配置成执行本文所描述的方法的各个方面。
在一些方面,诸如在电子设备1300是服务器设备的情况下,可从图13中所描绘的示例中省略各个方面,诸如多媒体处理块1310、无线连通性组件1312、天线1314、传感器处理器1316、ISP 1318或导航1320中的一者或多者。
示例条款
除上述各方面之外,特定组合的方面也在本公开的范围内,其中一些方面在以下条款中详细描述:
条款1:一种神经网络电路,其包括多个存储器内计算(CIM)处理元件(PE)、多个神经处理单元(NPU)PE、以及耦合到该多个CIM PE和该多个NPU PE的总线。
条款2:如条款1的神经网络电路,进一步包括:耦合到该多个CIM PE和该多个NPUPE的一个或多个共享存储器资源。
条款3:如条款2的神经网络电路,其中该一个或多个共享存储器资源包括紧耦合存储器(TCM)。
条款4:如条款3的神经网络电路,其中TCM被配置成存储激活、权重或输出中的至少一者。
条款5:如条款3或4的神经网络电路,其中该多个CIM PE中的至少一者被配置成将数据传递到该多个NPU PE中的至少一者。
条款6:如条款5的神经网络电路,其中该多个CIM PE中的至少一者被配置成将该数据传递到该多个NPU PE中的至少一者,而不将数据写入TCM或从TCM中读取数据。
条款7:如条款3-6中任一项的神经网络电路,其中该多个NPU PE中的至少一者被配置成将数据传送到该多个CIM PE中的至少一者。
条款8:如条款7的神经网络电路,其中该多个NPU PE中的至少一者被配置成将该数据传递到该多个CIM PE中的至少一者,而不将数据写入TCM或从TCM中读取数据。
条款9:如条款1-4中任一项的神经网络电路,其中该多个CIM PE中的至少一者被配置成将数据传递到该多个NPU PE中的至少一者。
条款10:如条款9的神经网络电路,进一步包括全局存储器,其中该多个CIM PE中的至少一者被配置成将该数据传递到该多个NPU PE中的至少一者,而不将数据写入全局存储器或从全局存储器中读取数据。
条款11:如条款9或10的神经网络电路,其中该多个CIM PE中的至少一者与该多个NPU PE中的至少一者处于相同神经网络层中。
条款12:如条款9或10的神经网络电路,其中该多个CIM PE中的至少一者位于第一神经网络层中,并且其中该多个NPU PE中的至少一者位于与第一神经网络层不同的第二神经网络层中。
条款13:如条款12的神经网络电路,其中第二神经网络层毗邻于第一神经网络层。
条款14:如条款1-6和9中任一项的神经网络电路,其中该多个NPU PE中的至少一者被配置成将数据传递到该多个CIM PE中的至少一者。
条款15:如条款14的神经网络电路,进一步包括全局存储器,其中该多个NPU PE中的至少一者被配置成将数据传递到该多个CIM PE中的至少一者,而不将数据写入全局存储器或从全局存储器中读取数据。
条款16:如条款14或15的神经网络电路,其中该多个NPU PE中的至少一者与该多个CIM PE中的至少一者处于相同神经网络层中。
条款17:如条款14或15的神经网络电路,其中该多个NPU PE中的至少一者位于第一神经网络层中,并且其中该多个CIM PE中的至少一者位于与第一神经网络层不同的第二神经网络层中。
条款18:如条款17的神经网络电路,其中第二神经网络层毗邻于第一神经网络层。
条款19:如前述条款中任一项的神经网络电路,其中该多个CIM PE被配置为伪权重驻定PE。
条款20:如前述条款中任一项的神经网络电路,其中该多个CIM PE被配置为数字存储器内计算(DCIM)PE。
条款21:如前述条款中任一项的神经网络电路,其中该多个NPU PE被配置为输出驻定PE。
条款22:如前述条款中任一项的神经网络电路,进一步包括耦合在总线和该多个CIM PE之间以及在总线和该多个NPU PE之间的总线仲裁逻辑。
条款23:如条款22的神经网络电路,进一步包括耦合在总线仲裁逻辑和该多个CIMPE之间以及耦合在总线仲裁逻辑和多个NPU PE之间的数字处理电路。
条款24:如条款23的神经网络电路,进一步包括:耦合在数字处理电路和该多个CIM PE之间的第一先进先出(FIFO)电路;以及耦合在数字处理电路和该多个NPU PE之间的第二FIFO电路。
条款25:如条款22的神经网络电路,进一步包括:耦合在总线仲裁逻辑和该多个CIM PE之间的第一先进先出(FIFO)电路;以及耦合在总线仲裁逻辑和该多个NPU PE之间的第二FIFO电路。
条款26:一种用于神经网络处理的方法,包括:在神经网络电路中处理数据,该神经网络电路包括多个存储器内计算(CIM)处理元件(PE)、多个神经处理单元(NPU)PE、以及耦合到该多个CIM PE和该多个NPU PE的总线;以及经由总线在该多个CIM PE中的至少一者与该多个NPU PE中的至少一者之间传递经处理数据。
条款27:如条款26的方法,其中神经网络电路进一步包括全局存储器或紧耦合存储器(TCM)中的至少一者,并且其中该传递包括经由总线在该多个CIM PE中的至少一者和该多个NPU PE中的至少一者之间传递经处理数据,而不将经处理数据写入全局存储器或TCM中的至少一者。
条款28:如条款26或27的方法,进一步包括在经由总线传递经处理数据之前在数字处理电路中对经处理数据进行数字后处理。
条款29:如条款26-28中任一者的方法,其中该多个CIM PE被配置为伪权重驻定PE,并且其中该多个NPU PE被配置为输出驻定PE。
条款30:一种处理系统,包括:多个存储器内计算(CIM)处理元件(PE);多个神经处理单元(NPU)PE;耦合到该多个CIM PE和该多个NPU PE的总线;其上存储有计算机可执行指令的存储器;以及一个或多个处理器,其被配置成执行存储在其上的计算机可执行指令以经由总线在该多个CIM PE中的至少一者和该多个NPU PE中的至少一者之间传递经处理数据。
附加考虑
提供先前描述是为了使本领域任何技术人员均能够实践本文中所描述的各个方面。本文中所讨论的示例并非是对权利要求中阐述的范围、适用性或者方面的限定。对这些方面的各种修改将容易为本领域技术人员所明白,并且在本文中所定义的普适原理可被应用于其他方面。例如,可对所讨论的要素的功能和布置作出改变而不会脱离本公开的范围。各种示例可恰适地省略、替代、或添加各种规程或组件。例如,可按与所描述的次序不同的次序来执行所描述的方法,并且可添加、省略、或组合各种步骤。而且,参照一些示例所描述的特征可在一些其他示例中被组合。例如,可使用本文中所阐述的任何数目的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖使用作为本文中所阐述的本公开的各个方面的补充或者不同于本文中所阐述的本公开的各个方面的其他结构、功能性、或者结构及功能性来实践的此类装置或方法。应当理解,本文中所披露的本公开的任何方面可由权利要求的一个或多个元素来实施。
如本文所使用的,措辞“示例性”意指“用作示例、实例或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。
如本文中所使用的,引述一列项目“中的至少一者”的短语是指这些项目的任何组合,包括单个成员。作为示例,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.一种神经网络处理电路,包括:
多个存储器内计算(CIM)处理元件(PE);
多个神经处理单元(NPU)PE;以及
耦合到所述多个CIM PE和所述多个NPU PE的总线。
2.如权利要求1所述的神经网络处理电路,进一步包括耦合到所述多个CIM PE和所述多个NPU PE的一个或多个共享的存储器资源。
3.如权利要求2所述的神经网络处理电路,其中所述一个或多个共享的存储器资源包括紧耦合存储器(TCM)。
4.如权利要求3所述的神经网络处理电路,其中所述TCM被配置成存储激活、权重或输出中的至少一者。
5.如权利要求3所述的神经网络处理电路,其中所述多个CIM PE中的至少一者被配置成将数据传递到所述多个NPU PE中的至少一者。
6.如权利要求5所述的神经网络处理电路,其中所述多个CIM PE中的所述至少一者被配置成将所述数据传递到所述多个NPU PE中的所述至少一者,而不将所述数据写入所述TCM或从所述TCM中读取所述数据。
7.如权利要求3所述的神经网络处理电路,其中所述多个NPU PE中的至少一者被配置成将数据传递到所述多个CIM PE中的至少一者。
8.如权利要求7所述的神经网络处理电路,其中所述多个NPU PE中的所述至少一者被配置成将所述数据传递到所述多个CIM PE中的所述至少一者,而不将所述数据写入所述TCM或从所述TCM中读取所述数据。
9.如权利要求1所述的神经网络处理电路,其中所述多个CIM PE中的至少一者被配置成将数据传递到所述多个NPU PE中的至少一者。
10.如权利要求9所述的神经网络处理电路,进一步包括全局存储器,其中所述多个CIMPE中的所述至少一者被配置成将所述数据传递到所述多个NPU PE中的所述至少一者,而不将所述数据写入所述全局存储器或从所述全局存储器中读取所述数据。
11.如权利要求9所述的神经网络处理电路,其中所述多个CIM PE中的所述至少一者与所述多个NPU PE中的所述至少一者位于相同神经网络层中。
12.如权利要求9所述的神经网络处理电路,其中所述多个CIM PE中的所述至少一者位于第一神经网络层中,并且其中所述多个NPU PE中的所述至少一者位于与所述第一神经网络层不同的第二神经网络层中。
13.如权利要求12所述的神经网络处理电路,其中所述第二神经网络层毗邻于所述第一神经网络层。
14.如权利要求1所述的神经网络处理电路,其中所述多个NPU PE中的至少一者被配置成将数据传递到所述多个CIM PE中的至少一者。
15.如权利要求14所述的神经网络处理电路,进一步包括:全局存储器,其中所述多个NPU PE中的所述至少一者被配置成将所述数据传递到所述多个CIM PE中的所述至少一者,而不将所述数据写入所述全局存储器或从所述全局存储器中读取所述数据。
16.如权利要求14所述的神经网络处理电路,其中所述多个NPU PE中的所述至少一者与所述多个CIM PE中的所述至少一者位于相同神经网络层中。
17.如权利要求14所述的神经网络处理电路,其中所述多个NPU PE中的所述至少一者位于第一神经网络层中,并且其中所述多个CIM PE中的所述至少一者位于与所述第一神经网络层不同的第二神经网络层中。
18.如权利要求17所述的神经网络处理电路,其中所述第二神经网络层毗邻于所述第一神经网络层。
19.如权利要求1所述的神经网络处理电路,其中所述多个CIM PE被配置为伪权重驻定PE。
20.如权利要求1所述的神经网络处理电路,其中所述多个CIM PE被配置为数字存储器内计算(DCIM)PE。
21.如权利要求1所述的神经网络处理电路,其中所述多个NPU PE被配置为输出驻定PE。
22.如权利要求1所述的神经网络处理电路,进一步包括耦合在所述总线与所述多个CIM PE之间以及所述总线与所述多个NPU PE之间的总线仲裁逻辑。
23.如权利要求22所述的神经网络处理电路,进一步包括耦合在所述总线仲裁逻辑与所述多个CIM PE之间以及所述总线仲裁逻辑与所述多个NPU PE之间的数字处理电路。
24.如权利要求23所述的神经网络处理电路,进一步包括:
第一先进先出(FIFO)电路,其耦合在所述数字处理电路和所述多个CIM PE之间;以及
第二FIFO电路,其耦合在所述数字处理电路和所述多个NPU PE之间。
25.如权利要求22所述的神经网络处理电路,进一步包括:
第一先进先出(FIFO)电路,其耦合在所述总线仲裁逻辑和所述多个CIM PE之间;以及
第二FIFO电路,其耦合在所述总线仲裁逻辑和所述多个NPU PE之间。
26.一种用于神经网络处理的方法,包括:
在神经网络处理电路中处理数据,所述神经网络处理电路包括:
多个存储器内计算(CIM)处理元件(PE);
多个神经处理单元(NPU)PE;以及
耦合到所述多个CIM PE和所述多个NPU PE的总线;以及
经由所述总线在所述多个CIM PE中的至少一者与所述多个NPU PE中的至少一者之间传递经处理数据。
27.如权利要求26所述的方法,其中所述神经网络处理电路进一步包括全局存储器或紧耦合存储器(TCM)中的至少一者,并且其中所述传递包括经由所述总线在所述多个CIMPE中的所述至少一者和所述多个NPU PE中的所述至少一者之间传递经处理数据,而不将经处理数据写入所述全局存储器或所述TCM中的所述至少一者。
28.如权利要求26所述的方法,进一步包括在经由所述总线传递经处理数据之前在数字处理电路中对经处理数据进行数字后处理。
29.如权利要求26所述的方法,其中所述多个CIM PE被配置为伪权重驻定PE,并且其中所述多个NPU PE被配置为输出驻定PE。
30.一种处理系统,包括:
多个存储器内计算(CIM)处理元件(PE);
多个神经处理单元(NPU)PE;
耦合到所述多个CIM PE和所述多个NPU PE的总线;
其上存储有计算机可执行指令的存储器;以及
一个或多个处理器,其被配置成执行存储在其上的所述计算机可执行指令以经由所述总线在所述多个CIM PE中的至少一者与所述多个NPU PE中的至少一者之间传递经处理数据。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163224155P | 2021-07-21 | 2021-07-21 | |
US63/224,155 | 2021-07-21 | ||
US17/813,834 | 2022-07-20 | ||
US17/813,834 US20230025068A1 (en) | 2021-07-21 | 2022-07-20 | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements |
PCT/US2022/073979 WO2023004374A1 (en) | 2021-07-21 | 2022-07-21 | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117651953A true CN117651953A (zh) | 2024-03-05 |
Family
ID=84976718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280050002.4A Pending CN117651953A (zh) | 2021-07-21 | 2022-07-21 | 具有神经处理单元和存储器内计算处理的混合机器学习架构 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230025068A1 (zh) |
EP (1) | EP4374296A1 (zh) |
KR (1) | KR20240035999A (zh) |
CN (1) | CN117651953A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118095351A (zh) * | 2024-04-12 | 2024-05-28 | 清华大学 | 层归一化计算的协同处理装置及方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200066953A (ko) * | 2018-12-03 | 2020-06-11 | 삼성전자주식회사 | Pim을 채용하는 반도체 메모리 장치 및 그 동작 방법 |
US20240248621A1 (en) * | 2023-01-20 | 2024-07-25 | Arm Limited | Data accumulation |
CN115883564B (zh) * | 2023-02-21 | 2023-05-23 | 青岛创新奇智科技集团股份有限公司 | 一种媒体流处理方法、装置、电子设备及存储介质 |
-
2022
- 2022-07-20 US US17/813,834 patent/US20230025068A1/en active Pending
- 2022-07-21 KR KR1020247001639A patent/KR20240035999A/ko unknown
- 2022-07-21 CN CN202280050002.4A patent/CN117651953A/zh active Pending
- 2022-07-21 EP EP22755044.9A patent/EP4374296A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118095351A (zh) * | 2024-04-12 | 2024-05-28 | 清华大学 | 层归一化计算的协同处理装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
US20230025068A1 (en) | 2023-01-26 |
KR20240035999A (ko) | 2024-03-19 |
EP4374296A1 (en) | 2024-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11080049B2 (en) | Apparatus and methods for matrix multiplication | |
CN117651953A (zh) | 具有神经处理单元和存储器内计算处理的混合机器学习架构 | |
CN117546178A (zh) | 支持逐深度卷积神经网络(cnn)的存储器内计算(cim)架构和数据流 | |
CN117751346A (zh) | 用于存储器中数字计算的折叠列加法器架构 | |
WO2023019104A1 (en) | Sparsity-aware compute-in-memory | |
US20230047364A1 (en) | Partial sum management and reconfigurable systolic flow architectures for in-memory computation | |
CN117561519A (zh) | 用于逐深度卷积的存储器内计算架构 | |
US20230065725A1 (en) | Parallel depth-wise processing architectures for neural networks | |
WO2023004374A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements | |
CN118103811A (zh) | 用于数字存储器中计算架构的累加器 | |
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 | |
US20240094988A1 (en) | Method and apparatus with multi-bit accumulation | |
US20240111828A1 (en) | In memory computing processor and method thereof with direction-based processing | |
US12019905B2 (en) | Digital compute in memory | |
CN117581235A (zh) | 用于逐深度可分离卷积的存储器内计算架构和数据流 |
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 |