技术领域
[0001] 本新型实施例是有关于人工智能加速器装置,且特别是有关于执行乘法累加运算的人工智能加速器装置。
相关背景技术
[0002] 人工智能(AI)加速器装置是一类专用硬件,其可用于加速机器学习工作负载,而这些工作负载通常被建模为涉及大规模存储器存取和高度并行计算的神经网络。AI加速器装置可以在一或多种类型的硬件中实现,例如中央处理器(CPU)、图形处理单元(GPU)、现场可编程逻辑闸阵列(FPGA)和/或特殊应用集成电路(ASIC)等例子。实用新型内容
[0003] 本新型实施例提供一种人工智能加速器装置。人工智能加速器装置包括一处理元件阵列以及相关联于处理元件阵列的多个权重缓冲器。处理元件阵列包括设置在多个行以及多个列的多个处理元件电路。权重缓冲器是相关联于处理元件阵列的处理元件电路的行的个别子集的行。
[0004] 优选地,所述人工智能加速器装置更包括:一存储器装置;以及一权重缓冲器多工器电路,其中该存储器装置是经由该权重缓冲器多工器电路而耦接于所述多个权重缓冲器。
[0005] 优选地,所述人工智能加速器装置更包括:多个活化缓冲器,相关联于该处理元件阵列,其中所述多个活化缓冲器是相关联于该处理元件阵列的所述多个处理元件电路的所述多个列的个别子集的列。
[0006] 优选地,所述人工智能加速器装置更包括:一活化缓冲器多工器电路,耦接于该等活化缓冲器;以及一分配器电路,耦接于该活化缓冲器多工器电路。
[0007] 优选地,所述人工智能加速器装置更包括:多个累加器缓冲器,相关联于该处理元件阵列,其中所述多个累加器缓冲器是相关联于该处理元件阵列的所述多个处理元件电路的所述多个行的一个别子集的行。
[0008] 再者,本新型实施例提供一种人工智能加速器装置。人工智能加速器装置包括一处理元件阵列以及相关联于处理元件阵列的多个活化缓冲器。处理元件阵列包括设置在多个行以及多个列的多个处理元件电路。活化缓冲器是相关联于处理元件阵列的处理元件电路的列的一个别子集的列。
[0009] 优选地,每一该活化缓冲器是相关联于该处理元件阵列的所述多个处理元件电路的所述多个列的一单一个别的列。
[0010] 优选地,所述人工智能加速器装置更包括:一活化缓冲器多工器电路,耦接于所述多个活化缓冲器;一分配器电路,耦接于该活化缓冲器多工器电路;以及多个累加器缓冲器,相关联于该处理元件阵列,其中所述多个累加器缓冲器是相关联于该处理元件阵列的所述多个处理元件电路的所述多个行的一个别子集的行。
[0011] 优选地,该人工智能加速器装置配置为执行一输入静态数据流,以及其中所述多个累加器缓冲器的数量是大于所述多个活化缓冲器的数量。
[0012] 优选地,该人工智能加速器装置配置为执行一输出静态数据流,以及其中该人工智能加速器装置包括一单片累加器缓冲器。
具体实施方式
[0103] 以下公开内容提供了许多不同的实施例或实例,用于实现本新型的不同特征。下面描述组件和配置的具体实例以简化本公开。当然,这些仅仅是实例而不是限制。举例来说,在下面的描述中,在第二特征上或之上形成第一特征可包括其中第一特征和第二特征形成为直接接触的实施例,并且还可包括其中在第一特征与第二特征之间可形成附加特征而使得第一特征和第二特征可能不是直接接触的实施例。此外,本公开可在各种实例中重复参考数字及/或字母。这种重复是为了简单和清晰的目的,本身并不决定讨论的各种实施例及/或配置之间的关系。
[0104] 基于特殊应用集成电路(ASIC)的人工智能(artificial intelligence,AI)加速器装置是一种硬件装置,其可以包括处理元件(processing element,PE)阵列,而该阵列包括在空间和/或时间上排列的多个处理元件,以执行特定类型的操作,例如神经网络中的乘法和累加(multiply‑and‑accumulate,MAC)运算。MAC运算是一种加权求和运算,其中对两或多个输入执行乘法运算,而乘法运算的输出在累加运算中与部分和累加,以产生更新的部分和(partial sum)。
[0105] 基于ASIC的AI加速器装置的PE阵列可以与相对较大的单片(monolithic)晶载(on‑chip)缓冲器连接,其包括例如静态随机存取存储器(SRAM)装置之类的存储器装置。晶载缓冲器可以使数据(例如权重、活化(activation)、部分和)局部存储在PE阵列附近,以减少基于ASIC的AI加速器装置的操作延迟,并减少频繁存取较慢的基于ASIC的AI加速器装置的动态随机存取存储器(DRAM)的需要。然而,随着基于ASIC的AI加速器装置实现的神经网络规模的增加,相关晶载缓冲器的规模和复杂性也随之增加。
[0106] 由于晶载缓冲器中布线复杂性的增加,更大的单片晶载缓冲器可能会增加延迟和/或更大的存取能量,而这可能会降低运算效率,并可能降低基于ASIC的AI加速器的性能,其包括单片晶载缓冲器。此外,更大、更复杂的单片晶载缓冲器可能需要更大的存储器频宽,以传输数据到基于ASIC的AI加速器的PE阵列或从中传输数据。如果单片晶载缓冲器和PE阵列之间的存储器频宽有限,则单片晶载缓冲器可能无法将足够量的数据传输到PE阵列或从PE阵列传出,这可能导致在PE阵列中PE未充分利用,并降低基于ASIC的AI加速器的性能。
[0107] 在此描述的一些实现包括基于ASIC的AI加速器装置,其中与PE阵列相关联的晶载缓冲器被划分为多个微型缓冲器(例如微型输入缓冲器、微型权重缓冲器和/或微型累加器)。每一微型缓冲器都与PE阵列的行子集和列子集相关联。基于ASIC的AI加速器装置可以包括分配器电路,以将数据引导到基于ASIC的AI加速器装置的适当的微型缓冲器。将基于ASIC的AI加速器装置的晶载缓冲器划分为在此描述的微型缓冲器可以减小基于ASIC的AI加速器装置的晶载缓冲器的大小。减小尺寸的晶载缓冲器可以降低晶载缓冲器的布线复杂性,这可以减少延迟时间并减少基于ASIC的AI加速器装置的存取能量。这可以提高操作效率和/或可以提高基于ASIC的AI加速器装置的性能。此外,将基于ASIC的AI加速器装置的微型缓冲器连接到基于ASIC的AI加速器装置的PE阵列的行和列的子集可以增加微型缓冲器可用于传输数据至和从PE阵列的总频宽,其可以提高PE阵列中PE的利用率,并可以提高基于ASIC的AI加速器装置的性能。
[0108] 这样,基于ASIC的AI加速器装置可以包括与PE阵列相关联的晶载缓冲器,这些缓冲器被划分为多个微型缓冲器(例如微型输入缓冲器、微型权重缓冲器和/或微型累加器缓冲器)。每一微型缓冲器都与PE阵列的行子集和列子集相关联。基于ASIC的AI加速器装置可以包括分配器电路,以将数据引导到基于ASIC的AI加速器装置的适当的微型缓冲器。将基于ASIC的AI加速器装置的晶载缓冲器划分为在此描述的微型缓冲器可以减小基于ASIC的AI加速器装置的晶载缓冲器的尺寸。减小尺寸的晶载缓冲器可以降低晶载缓冲器的布线复杂性,这可以减少延迟并减少基于ASIC的AI加速器装置的存取能量。这可以提高操作效率和/或可以提高基于ASIC的AI加速器装置的性能。此外,将基于ASIC的AI加速器装置的微型缓冲器连接到基于ASIC的AI加速器装置的PE阵列的行和列的子集可以增加微型缓冲器可用于与PE阵列传输数据的频宽,其可以提高PE阵列中PE的利用率,并提高基于ASIC的AI加速器装置的性能。
[0109] 图1是显示可以实现在此描述的系统和/或方法的示范例环境100的图。如图1所示,环境100可以包括边缘运算系统101,其可以包括云端运算系统102的一或多个元件和/或可以在云端运算系统102内所执行。云端运算系统102可以包括一或多个元件103‑113,如下面更详细的描述。如图1进一步所示,环境100可以包括网络120和一或多个用户端装置130‑170。环境100的装置和/或元件可以经由有线连接和/或无线连接互连。
[0110] 云端运算系统102包括计算硬件103、资源管理组件104、主机操作系统(OS)105和/或一或多个虚拟计算系统106。资源管理组件104可以执行计算硬件103的虚拟化(例如抽象)以创建一或多个虚拟计算系统106。使用虚拟化,资源管理组件104使单一计算装置(例如计算机或服务器)能够像多个计算装置一样操作,例如通过建立来自单一计算装置的计算硬件103的多个隔离的虚拟计算系统106。以这种方式,计算硬件103可以比使用单独的计算装置更有效地操作,而具有更低的耗电、更高的可靠性、更高的可用性、更高的利用率、更大的灵活性和更低的成本。
[0111] 计算硬件103包括来自一或多个计算装置的硬件和对应资源。例如,计算硬件103可以包括来自单一计算装置(例如单一服务器)或来自多个计算装置(例如多个服务器)的硬件,例如在一或多个数据中心的多个计算装置。如图所示,计算硬件103可以包括一或多个处理器107、一或多个存储器108、一或多个网络组件109以及一或多个AI加速器装置110。处理器、存储器和网络组件(例如通讯组件)的示范例结合图16进行描述。
[0112] AI加速器装置110可以包括硬件装置,而该硬件装置包括配置为执行与神经网络(例如人工神经网络或深度神经网络)相关联的操作的专用电路。AI加速器装置110可以包括ASIC装置,其中硬件(例如驱动器、晶体管、转发器(repeater)、互补金属氧化物半导体(CMOS)逻辑)被专门配置为实现神经网络的节点(或人工神经元)以执行AI运算,因此被称为硬件加速器。
[0113] 边缘计算系统101可以执行与AI和/或神经网络处理相关联的一或多个操作和/或程序。具体而言,边缘计算系统101可以使用AI加速器装置110来执行特定于AI的计算任务和工作负载。AI特定计算任务的示范例可以包括通过网络120从用户端装置130‑170的用户端装置接收输入(例如影像),并基于输入而使用AI加速器装置110产生输出(例如推论或分类)。此处,AI特定计算任务可能涉及识别影像中的物件、使用一或多个标签标记影像、对影像内容进行分类和/或基于影像执行影像搜索等。
[0114] 输出的产生可能涉及使用乘法累加(MAC)运算,其中输入与权重相乘并与部分和累加以产生更新的部分和。在一些实施方式中,AI加速器装置110的节点可以具有临界值,使得假如仅有更新的部分和满足临界值时才会提供更新的部分和。这被称为节点的“触发(firing)”。
[0115] 由AI加速器装置110的节点所应用的权重可以使用机器学习进行调整或“训练”。这涉及监督和/或非监督训练,其中将大数据集(data set)提供给AI加速器装置110的节点以“学习”或形成大数据集的输入和输出之间的连接。
[0116] 资源管理组件104包括能够虚拟化计算硬件103以活化、停止和/或管理一或多个虚拟计算系统106的虚拟化应用程序(例如在例如计算硬件103的硬件上执行)。例如,资源管理组件104可以包括虚拟机(hypervisor)(例如裸机(bare‑metal)或第1类型虚拟机、主机(hosted)或第2类型虚拟机、或另一类型的虚拟机)或是虚拟器监视器(virtual machine monitor,VMM),例如当虚拟计算系统106是虚拟机器。附加地或备选地,资源管理组件104可以包括容器管理器(container manager),例如当虚拟计算系统106是容器112时。在一些实施例中,资源管理组件104在主机操作系统105内执行和/或与主机操作系统105协作执行。
[0117] 虚拟计算系统106包括使用计算硬件103实现本文所述的操作和/或程序的基于云端的执行的虚拟环境。如图所显示,虚拟计算系统106可以包括虚拟机111、容器112、或者包括虚拟机和容器的混合环境113等等。虚拟计算系统106可以使用文件系统来执行一或多个应用程序,而文件系统包括二进位文件、软件数据库和/或在用户操作系统(例如在虚拟计算系统106内)或主机操作系统105上执行应用程序所需的资源。
[0118] 虽然边缘计算系统101可以包括云端运算系统102的一或多个元件103‑113,其可以在云端运算系统102中执行,和/或可以托管在云端运算系统102中。在一些实施例中,边缘计算系统101可能不是基于云端的(例如可以在云端运算系统之外实现)或者可以是部分基于云端的。例如,边缘计算系统101可以包括一或多个不属于云端运算系统102的装置,例如图16的装置1600,其可以包括独立操作的服务器或是另一种类型的计算装置。
[0119] 网络120包括一或多个有线和/或无线网络。例如,网络120可以包括蜂窝网络、公用陆上移动网络(PLMN)、局部区域网络(LAN)、广域网络(WAN)、专用网络、网际网络和/或这些的组合或其他类型的网络。网络120使得环境100的装置之间能够通讯。
[0120] 用户端装置130‑170可以包括能够接收、产生、存储、处理和/或提供信息的一或多个装置。用户端装置130‑170可以包括通讯装置和/或计算装置。例如,用户端装置130‑170可以包括无线通讯装置、移动电话、用户装置、膝上型电脑、平板电脑、台式电脑、可穿戴通讯装置(例如智能手表、一对智能眼镜、头戴式显示器或虚拟实境耳机)或类似类型的装置。
[0121] 图1所显示的装置和网络的数量和配置是提供作为示范例。在实现中,与图1中所示的装置和/或网络相比,可能有更多的装置和/或网络、更少的装置和/或网络、不同的装置和/或网络,或者配置不同的装置和/或网络。此外,图1中所示的两个或更多的装置可以实现在单一装置内,或者图1中所示的单一装置可以被实现为多个分布式装置。此外,或备选地,环境100的一组装置(例如一或多个装置)可以执行描述为由环境100的另一组装置执行的一或多个功能。
[0122] 图2是在此描述的AI加速器装置110的示范实施例200的图。AI加速器装置110可以包括基于ASIC的AI加速器装置(例如在ASIC中实现的AI加速器)或其他类型的AI硬件加速器。AI加速器装置110可以被配置为执行人工神经网络和/或深度神经网络操作、机器学习操作(例如训练大数据集以调整人工神经网络和/或深度神经网络的权重),和/或执行其他人工智能操作。AI加速器装置110可以包括组件202‑222,其可以被包括在相同的半导体晶粒上或相同的封装半导体装置上。
[0123] 如图2所示,在示范实施例200中,AI加速器装置110可以包括处理元件阵列202,其包括设置成网格或矩阵(例如脉动阵列(systolic array)、向量引擎配置)的多个处理元件电路204a‑204n。特别地,处理元件电路204a‑204n被设置成多个行(column)206a‑206l和多个列(row)208a‑208m。例如,处理元件电路204a、204d和204g可以包括在行206a中、处理元件电路204b、204e和204h可以包括在行206b中、处理元件电路204c、204f和204n可以包括在行206l中,等等。作为另一个例子,处理元件电路204a‑204c可以包括在列208a中、处理元件电路204d‑204f可以包括在列208b中、处理元件电路204g‑204n可以包括在列208m中,等等。
[0124] 在一些实施例中,处理元件阵列202包括脉动阵列,其中计算是完全管线式(pipelined),以及数据被提供到处理元件阵列202的边缘并允许经由处理元件互连以波状方式传播通过处理元件阵列202。这种类型的处理元件阵列配置可以增加和/或最大化处理元件阵列202内的数据重新使用。在一些实施例中,处理元件阵列202包括向量引擎,其中一个运算元(例如乘法运算元、累加运算元)在处理元件电路204a‑204n中是固定的,以及其他运算元被多播(multicast)到相同的列和/或行。这些部分和是经由加法器树以组合方式收集。
[0125] 处理元件电路可以包括被配置为执行神经网络操作的电路。例如,每一处理元件电路204a‑204n可以被配置为执行乘法累加(MAC)运算。因此,每一处理元件电路204a‑204n可以包括乘法电路、累加器电路、输入电路、输出电路和电路组件之间的绕线(例如金属线)等等。在一些实施例中,处理元件电路204a‑204n被连接使得一个处理元件的输出被提供作为处理元件阵列202中的一或多个其他处理元件电路的输入。处理元件电路204a‑204n被设置成网格或矩阵,以使处理元件阵列202能够以有效的方式处理高度并行化(parallelized的)计算任务。
[0126] 如图2进一步所示,在示范例实施例200中,AI加速器装置110可以包括多个权重缓冲器(例如多个微型权重缓冲器)210a‑210k。权重缓冲器210a‑210k可以耦接于权重缓冲器多工器电路212并且可以被配置为缓冲权重数据(例如处理元件电路204a‑204n的权重),其是从存储器装置214(例如DRAM存储器装置或另一种类型的存储器装置)提供至处理元件阵列202的处理元件电路204a‑204n。
[0127] 权重缓冲器210a‑210k中的每一个可以包括一或多个SRAM装置(或相对于存储器装置214具有更快存取时间的另一种类型的存储器装置,其可以是磁性随机存取存储器(MRAM)、电阻随机存取存储器(RRAM)、相变材料随机存取存储器(PCM‑RAM)和/或铁电随机存取存储器(FeRAM))、驱动器、反相器、转发器(repeater)以及连接权重缓冲器210a‑210k至处理元件阵列202的相关布线(例如金属线)。使用权重缓冲器210a‑210k相比于对存储器装置214直接存储器存取,可减少提供权重至处理元件电路204a‑204n的存取时间和延迟时间。权重缓冲器多工器(MUX)电路212可以包括逻辑电路(例如与门、或门、驱动器、反相器、转发器),其被配置为能够选择权重缓冲器210a‑210k中的特定缓冲器,并能够使权重提供增加了将数据写入不同权重缓冲器210a‑210k的灵活性。
[0128] 每一权重缓冲器210a‑210k可以与包括在处理元件阵列202中的处理元件电路204a‑204n的行206a‑206l的子集相关联,并且可以向其提供权重。在一些实施例中,每一权重缓冲器210a‑210k可以与行206a‑206l中的单一个别列相关联,并且可以向其提供权重。
例如,权重缓冲器210a可以与行206a相关联,并且可以向行206a提供权重;权重缓冲器210b可以与行206b相关联,并且可以接收向行206b提供的权重;以此类推。在一些实施例中,每一权重缓冲器210a‑210k可以与行206a‑206l中的多个行相关联并且可以向其提供权重。
[0129] 相对于使用单一单片权重缓冲器,包括多个权重缓冲器(例如多个微型权重缓冲器)的AI加速器装置110可以减少AI加速器装置110的权重缓冲器的延迟和能量消耗。通过降低每一权重缓冲器210a‑210k的复杂性来实现减少延迟和能量消耗。特别地,包括多个权重缓冲器(例如多个微型权重缓冲器)减少了权重缓冲器210a‑210k的SRAM装置之间绕线的尺寸和复杂性,并且降低了SRAM装置和处理元件阵列202之间绕线的尺寸和复杂性。权重缓冲器210a‑210k中以及权重缓冲器210a‑210k与处理元件阵列202之间所减少的绕线尺寸和复杂度会降低权重缓冲器210a‑210k中以及权重缓冲器210a‑210k和处理元件阵列202之间的权重数据的传播距离。减少的传播距离导致更快的传播时间(因此更低的延迟时间)、增加的可用频宽和/或减少的存取能量。
[0130] AI加速器装置110所包括的权重缓冲器210a‑210k的数量,以及与每一权重缓冲器210a‑210k相关联的行206a‑206l的数量,可以被选择以满足一或多个参数,例如权重缓冲器210a‑210k的能量消耗、权重缓冲器210a‑210k的延迟时间和/或权重缓冲器210a‑210k的物理覆盖区。例如,增加AI加速器装置110中所包括的权重缓冲器210a‑210k的数量(这会降低与每一权重缓冲器210a‑210k相关联的行206a‑206l的数量)可以减少AI加速器中的延迟时间和能量消耗,而以增加AI加速器装置110的尺寸作为代价(例如因为相邻的微型权重缓冲器之间需要额外的隔离)。
[0131] 作为另一个示范例,减少AI加速器装置110中所包括的权重缓冲器210a‑210k的数量(这会增加与每一权重缓冲器210a‑210k相关联的行206a‑206l的数量)可以减小AI加速器装置110的尺寸,而以增加AI加速器装置110的延迟和能量消耗作为代价。
[0132] 在一些情况下,可以使用设计限制(design constraint)来决定要与每一权重缓冲器210a‑210k相关联的行206a‑206l的数量。例如,如果权重缓冲器210a‑210k的数量被限制为N,则与每一权重缓冲器210a‑210k相关联的行206a‑206l的数量可以被决定为:
[0133]
[0134] 其中S对应于每一权重缓冲器的行206a‑206l的数量,而L对应于处理元件阵列202中行206a‑206l的数量。
[0135] 如图2进一步所显示,在示范实施例200中,AI加速器装置110可以包括耦接于权重缓冲器多工器电路212的分配器电路216。分配器电路216可以包括电路(例如基于状态机(state‑machine)的控制器电路),其被配置为向权重缓冲器多工器电路212提供一或多个选择信号(例如权重选择信号)。分配器电路216可以提供选择信号至权重缓冲器多工器电路212,以选择权重缓冲器210a‑210k的特定一者。以此方式,权重缓冲器多工器电路212会致能分配器电路216,以独立地控制权重缓冲器210a‑210k来提供权重至处理元件阵列202的特定行。
[0136] 单一单片活化(activation)缓冲器218被包括并且与处理元件阵列202的列208a‑208m相关联。单一单片活化缓冲器218被配置为提供输入数据至列208a‑208m中的处理元件电路204a‑204n。输入数据可以包括部分和、要相乘的值和/或其他输入数据。单一单片活化缓冲器218可以包括一或多个SRAM装置、驱动器、反相器、转发器和将单一单片活化缓冲器
218连接到处理元件阵列202的相关联绕线(例如金属线)。
[0137] 单一单片累加器缓冲器220被包括并与处理元件阵列202的行206a‑206l相关联。单一单片累加器缓冲器220被配置为从在行206a‑206l的处理元件电路204a‑204n中接收输出数据(例如更新的部分和)。单一单片累加器缓冲器220可以包括一或多个SRAM装置、驱动器、反相器、转发器和将单一单片累加器缓冲器220连接到处理元件阵列202的相关联绕线(例如金属线)。
[0138] 单一单片累加器缓冲器220可以进一步配置为提供更新的部分和至周边电路222,其可以包括被配置为存储和/或提供更新的部分和至单一整体式活化缓冲器218,以供后续的神经网络操作所使用。
[0139] 如先前所描述,图2是提供作为示范例。其他示范例可能与关于图2所描述的不同。
[0140] 图3是在此描述的AI加速器装置110的示范实施例300的图。AI加速器装置110的示范实施例300相似于AI加速器装置110的示范实施例200,并且包括相似于AI加速器装置110的示范实施例200的组件的组件。但是,在AI加速器装置110的示范实施例300中,包括单一单片权重缓冲器而不是多个权重缓冲器(例如多个微型权重缓冲器),因此在示范实施例300中AI加速器装置110可以省略权重多工器电路。此外,包括多个活化缓冲器(例如多个微型活化缓冲器),而不是单一单片活化缓冲器。相对于单一单片活化缓冲器的延迟和能量消耗,包括多个活化缓冲器(例如多个微型活化缓冲器)可以减少AI加速器装置110的活化缓冲器的延迟和能量消耗。
[0141] 如图3所示,在示范实施例300中,AI加速器装置110可以包括处理元件阵列302,其包括排列成网格或矩阵的多个处理元件电路304a‑304n。特别地,处理元件电路304a‑304n被配置成多个行306a‑306l和多个列308a‑308m。单一单片权重缓冲器310与多个行306a‑306l相关联,并且与被配置为存储处理元件电路304a‑304n的权重的存储器装置314相关联。
[0142] 如图3所示,在示范实施例300中,AI加速器装置110可以包括分配器电路316、多个活化缓冲器318a‑318x、单一单片累加器电路320和周边电路322。每一活化缓冲器318a‑318x可以包括独立电路(例如独立于另一个活化缓冲器318a‑318x),这可以降低活化缓冲器318a‑318x的金属绕线和布局的复杂性。每一活化缓冲器318a‑318x可以与包括在处理元件阵列302中的处理元件电路304a‑304n的列308a‑308m的子集相关联,并且可以向其提供输入数据。在一些实施例中,每一活化缓冲器318a‑318x可以与列308a‑308m中的单一个别列相关联,并且可以向其提供输入数据。例如,活化缓冲器318a可以与列308a相关联,并向其提供输入数据;活化缓冲器318b可以与列308b相关联,并向其提供输入数据;以此类推。
在一些实施例中,每一活化缓冲器318a‑318x可以与列308a‑308m中的多个列相关联并且可以向其提供输入数据。
[0143] 相对于使用单一单片活化缓冲器,包括多个活化缓冲器(例如多个微型活化缓冲器)的AI加速器装置110可以减少AI加速器装置110的活化缓冲器的延迟时间和能量消耗。通过降低每一活化缓冲器318a‑318x中的复杂度来实现减少的延迟时间和能量消耗。特别地,包括多个活化缓冲器(例如多个微型活化缓冲器)可减少活化缓冲器318a‑318x的SRAM装置之间绕线的尺寸和复杂度,并且可减少了SRAM装置和处理元件阵列302之间绕线的尺寸和复杂度。活化缓冲器318a‑318x中以及活化缓冲器318a‑318x与处理元件阵列302之间所减少的绕线尺寸和复杂度可减少在活化缓冲器318a‑318x中以及在活化缓冲器318a‑
318x和处理元件阵列302之间输入数据的传播距离。这些减少的传播距离会导致更快的传播时间(因此更低的延迟时间)、增加的可用频带和/或减少的存取能量。
[0144] AI加速器装置110所包括的活化缓冲器318a‑318x的数量,以及与每一活化缓冲器318a‑318x相关联的列308a‑308m的数量,可以被选择以满足一或多个参数,例如活化缓冲器318a‑318x的能量消耗、活化缓冲器318a‑318x的延迟时间和/或活化缓冲器318a‑318x的物理覆盖区。例如,增加AI加速器装置110中所包括的活化缓冲器318a‑318x的数量(这会降低与每一活化缓冲器318a‑318x相关联的列308a‑308m的数量)可以减少AI加速装置110中的延迟时间和能量消耗,并以增加AI加速器装置110的尺寸作为代价。
[0145] 作为另一示范例,减少AI加速器装置110中所包括的活化缓冲器318a‑318x的数量(这会增加与每一活化缓冲器318a‑318x相关联的列308a‑308m的数量)可以减小AI加速器装置110的尺寸,而以增加AI加速器装置110中的延迟和能量消耗作为代价。
[0146] 在一些情况下,可以使用设计限制来决定要与每一活化缓冲器318a‑318x相关联的列308a‑308m的数量。例如,如果活化缓冲器318a‑318x的数量被限制为N,则与每一活化缓冲器318a‑318x相关联的列308a‑308m的数量可以被决定为:
[0147]
[0148] 其中S对应于每一活化缓冲器的列308a‑308m的数量,而L对应于处理元件阵列302中列308a‑308m的数量。
[0149] 如图3所显示,在示范实施例300中,AI加速器装置110可以包括耦接于分配器电路316以及活化缓冲器318a‑318x的活化缓冲器多工器电路324。分配器电路316可被配置为向活化缓冲器多工器电路324提供一或多个选择信号(例如权重选择信号)。分配器电路316可以提供选择信号至活化缓冲器多工器电路324,以选择活化缓冲器318a‑318x的特定一者。
以此方式,活化缓冲器多工器电路324会致能分配器电路216,以独立地控制活化缓冲器
318a‑318x来提供输入数据至处理元件阵列302的特定列。
[0150] 单一单片累加器电路320可以进一步配置为提供更新的部分和至周边电路322,而周边电路322可以包括被配置为存储和/或提供更新的部分和至活化缓冲器多工器电路324的电路(例如DRAM、逻辑电路、绕线),用于后续的神经网络操作。
[0151] 如先前所描述,图3是提供作为示范例。其他示范例可能与关于图3所描述的不同。
[0152] 图4是在此描述的AI加速器装置110的示范实施例400的图。AI加速器装置110的示范实施例400相似于AI加速器装置110的示范实施例200,并且包括相似于AI加速器装置110的示范实施例200的组件的组件。但是,与多个权重缓冲器210a‑210k(例如多个微型权重缓冲器)相反,在AI加速器装置110的示范实施例400中包括单一单片权重缓冲器。因此,在示范实施例400中,可以从AI加速器装置110中省略权重缓冲器多工器电路和分配器电路。此外,包括多个累加器缓冲器(例如多个微型累加器缓冲器),而不是单一单片累加器缓冲器。相对于单一单片累加器缓冲器的延迟和能量消耗,包括多个累加器缓冲器(例如多个累加器缓冲器)可以减少AI加速器装置110的累加器缓冲器的延迟和能量消耗。
[0153] 如图4所示,在示范实施例400中,AI加速器装置110可以包括处理元件阵列402,其包括排列成网格或矩阵的多个处理元件电路404a‑404n。特别地,处理元件电路404a‑404n被配置成多个行406a‑406l和多个列408a‑408m。单一单片权重缓冲器410与多个行406a‑406l相关联,并且与被配置为存储处理元件电路404a‑404n的权重的存储器装置414相关联。单一单片活化缓冲器418被包括并且与处理元件阵列402的列408a‑408m相关联。单一单片活化缓冲器418被配置为提供输入数据至列408a‑408m中的处理元件电路404a‑404n。
[0154] 如图4所示,在示范实施例400中,AI加速器装置110可以包括耦接于处理元件阵列402和周边电路422的多个累加器缓冲器420a‑420y(例如多个微型累加器缓冲器)。每一累加器缓冲器420a‑420y可以与包括在处理元件阵列402中的处理元件电路404a‑404n的行
406a‑406l的子集相关联并且可以从其接收输出数据(例如部分和)。在一些实施例中,每一累加器缓冲器420a‑420y可以与行406a‑406l中的单一个别行相关联,并可以从其接收输出。例如,累加器缓冲器420a可以与行406a相关联,并且可以从行406a接收输出;累加器缓冲器420b可以与行406b相关联,并且可以从行406b接收输出;以此类推。在一些实施例中,每一累加器缓冲器420a‑420y可以与行406a‑406l中的多个行相关联,并且可以从这些行接收输出。累加器缓冲器420a‑420y可以被配置为向周边电路422提供输出,而周边电路422向单一单片活化缓冲器418提供输出。
[0155] 相对于使用单一单片累加器缓冲器,包括多个累加器缓冲器(例如多个微型累加器缓冲器)的AI加速器装置110可以减少AI加速器装置110的累加器缓冲器的延迟时间和能量消耗。通过降低每一累加器缓冲器420a‑420y中的复杂度来实现减少的延迟时间和能量消耗。特别地,包括多个累加器缓冲器(例如多个微型累加器缓冲器)可减少累加器缓冲器420a‑420y的SRAM装置之间绕线的尺寸和复杂度,并且可减少了SRAM装置和处理元件阵列
402之间绕线的尺寸和复杂度。累加器缓冲器420a‑420y中以及累加器缓冲器420a‑420y与处理元件阵列402之间所减少的绕线尺寸和复杂度可减少在累加器缓冲器420a‑420y中以及在累加器缓冲器420a‑420y和处理元件阵列402之间输出数据的传播距离。这些减少的传播距离会导致更快的传播时间(因此更低的延迟时间)、增加的可用频带和/或减少的存取能量。
[0156] AI加速器装置110所包括的累加器缓冲器420a‑420y的数量,以及与每一累加器缓冲器相关联的行406a‑406l的数量,可以被选择以满足一或多个参数,例如累加器缓冲器420a‑420y的能量消耗、累加器缓冲器420a‑420y的延迟时间和/或累加器缓冲器420a‑420y的物理覆盖区。例如,增加AI加速器装置110中所包括的累加器缓冲器420a‑420y的数量(这会降低与每一累加器缓冲器420a‑420y相关联的行406a‑406l的数量)可以减少AI加速装置
110中的延迟时间和能量消耗,并以增加AI加速器装置110的尺寸作为代价。
[0157] 作为另一示范例,减少AI加速器装置110中所包括的累加器缓冲器420a‑420y的数量(这增加了与每一累加器缓冲器420a‑420y相关联的行406a‑406l的数量)可以减小AI加速器装置110的尺寸,而以增加AI加速器装置110中的延迟和能量消耗作为代价。
[0158] 在一些情况下,可以使用设计限制来决定要与每一累加器缓冲器420a‑420y相关联的行406a‑406l的数量。例如,如果累加器缓冲器420a‑420y的数量被限制为N,则与每一累加器缓冲器420a‑420y相关联的行406a‑406l的数量可以被决定为:
[0159]
[0160] 其中S对应于每一活化缓冲器的行406a‑406l的数量,而L对应于处理元件阵列402中行406a‑406l的数量。
[0161] 如先前所描述,图4是提供作为示范例。其他示范例可能与关于图4所描述的不同。
[0162] 图5是在此描述的AI加速器装置110的示范实施例500的图。AI加速器装置110的示范实施例500相似于AI加速器装置110的示范实施例200,并且包括相似于AI加速器装置110的示范实施例200的组件202‑222的组件502‑522。但是,在AI加速器装置110的示范实施例500中包括多个权重缓冲器510a‑510k(例如多个微型权重缓冲器)以及多个活化缓冲器
518a‑518x(例如多个微型活化缓冲器)。因此,示范实施例500中的AI加速器装置110更可以包括耦接于分配器电路516和活化缓冲器518a‑518x的活化缓冲器多工器电路524。相对于单一单片权重缓冲器与单一单片活化缓冲器的延迟和能量消耗,包括多个权重缓冲器
510a‑510k(例如多个微型权重缓冲器)和多个活化缓冲器518a‑518x(例如多个微型活化缓冲器)可以减少AI加速器装置110的权重缓冲器和活化缓冲器的延迟和能量消耗。
[0163] 每一权重缓冲器510a‑510k可以与包括在处理元件阵列502中的处理元件电路504a‑504n的行506a‑506l的子集相关联,并且可为其提供权重。在一些实施例中,每一权重缓冲器510a‑510k可以与行506a‑506l中的单一个别行相关联,并可为其提供权重。例如,权重缓冲器510a可以与行506a相关联,并且可提供权重至行506a;权重缓冲器510b可以与行
506b相关联,并且可提供权重至行506b;以此类推。在一些实施例中,每一权重缓冲器510a‑
510k可以与行506a‑506l中的多个行相关联,并可为其提供权重。
[0164] AI加速器装置110所包括的权重缓冲器510a‑510k的数量,以及与每一权重缓冲器相关联的行506a‑506l的数量,可以被选择以满足一或多个参数,例如权重缓冲器510a‑510k的能量消耗、权重缓冲器510a‑510k的延迟时间和/或权重缓冲器510a‑510k的物理覆盖区。例如,增加AI加速器装置110中所包括的权重缓冲器510a‑510k的数量(这会降低与每一权重缓冲器510a‑510k相关联的行506a‑506l的数量)可以减少AI加速装置110中的延迟时间和能量消耗,并以增加AI加速器装置110的尺寸作为代价。作为另一示范例,减少AI加速器装置110中所包括的权重缓冲器510a‑510k的数量(这增加了与每一权重缓冲器510a‑
510k相关联的行506a‑506l的数量)可以减小AI加速器装置110的尺寸,而以增加AI加速器装置110中的延迟和能量消耗作为代价。
[0165] 每一活化缓冲器518a‑518x可以与包括在处理元件阵列502中的处理元件电路504a‑504n的列508a‑508m的子集相关联,并且可以向其提供输入数据。在一些实施例中,每一活化缓冲器518a‑518x可以与列508a‑508m中的单一个别列相关联,并且可以向其提供输入数据。例如,活化缓冲器518a可以与列508a相关联,并且可以向列508a提供输入数据;活化缓冲器518b可以与列508b相关联,并且可以向列508b提供输入数据;以此类推。在一些实施例中,每一活化缓冲器518a‑518x可以与列508a‑508m中的多列相关联,并且可以向其提供输入数据。
[0166] AI加速器装置110中包括的活化缓冲器518a‑518x的数量,以及与每一活化缓冲器相关联的列508a‑508m的数量,可以被选择以满足一或多个参数,例如活化缓冲器518a‑518x的能量消耗、活化缓冲器518a‑518x的延迟时间和/或活化缓冲器518a‑518x的物理足迹。例如,增加AI加速器装置110中所包括的活化缓冲器518a‑518x的数量(这会减少与每一活化缓冲器518a‑518x相关联的列508a‑508m的数量)可以减少AI加速器装置的延迟时间和能量消耗,而以增加AI加速器装置110的尺寸作为代价。作为另一个示范例,减少AI加速器装置110中所包括的活化缓冲器518a‑518x的数量(这会增加与每一活化缓冲器518a‑518x相关联的列508a‑508m的数量)可以降低AI加速器装置110的尺寸,而以增加AI加速器装置
110的延迟时间和能量消耗作为代价。
[0167] 如先前所描述,图5是提供作为示范例。其他示范例可能与关于图5所描述的不同。
[0168] 图6是在此描述的AI加速器装置110的示范实施例600的图。AI加速器装置110的示范实施例600相似于AI加速器装置110的示范实施例200,并且包括相似于AI加速器装置110的示范实施例200的组件202‑222的组件602‑622。但是,在AI加速器装置110的示范实施例600中包括多个权重缓冲器610a‑610k(例如多个微型权重缓冲器)以及多个累加器缓冲器
620a‑620y(例如多个微型累加器缓冲器)。相对于单一单片权重缓冲器与单一单片累加器缓冲器的延迟和能量消耗,包括多个权重缓冲器610a‑610k(例如多个微型权重缓冲器)和多个累加器缓冲器620a‑620y(例如多个微型累加器缓冲器)可以减少AI加速器装置110的权重缓冲器和活化缓冲器的延迟和能量消耗。
[0169] 每一权重缓冲器610a‑610k可以与包括在处理元件阵列602中的处理元件电路604a‑604n的行606a‑606l的子集相关联,并且可以从其接收输出(例如部分和)。在一些实施例中,每一权重缓冲器610a‑610k可以与行606a‑606l中的单一个别行相关联,并可为其提供权重。例如,权重缓冲器610a可以与行606a相关联,并且可提供权重至行606a;权重缓冲器610b可以与行606b相关联,并且可提供权重至行606b;以此类推。在一些实施例中,每一权重缓冲器610a‑610k可以与行606a‑606l中的多个行相关联,并可为其提供权重。
[0170] AI加速器装置110所包括的权重缓冲器610a‑610k的数量,以及与每一权重缓冲器相关联的行606a‑606l的数量,可以被选择以满足一或多个参数,例如权重缓冲器610a‑610k的能量消耗、权重缓冲器610a‑610k的延迟时间和/或权重缓冲器610a‑610k的物理覆盖区。例如,增加AI加速器装置110中所包括的权重缓冲器610a‑610k的数量(这会降低与每一权重缓冲器610a‑610k相关联的行606a‑606l的数量)可以减少AI加速装置110中的延迟时间和能量消耗,并以增加AI加速器装置110的尺寸作为代价。作为另一示范例,减少AI加速器装置110中所包括的权重缓冲器610a‑610k的数量(这增加了与每一权重缓冲器610a‑
610k相关联的行606a‑606l的数量)可以减小AI加速器装置110的尺寸,而以增加AI加速器装置110中的延迟和能量消耗作为代价。
[0171] 每一累加器缓冲器620a‑620y可以与包括在处理元件阵列602中的处理元件电路604a‑604n的行606a‑606l的子集相关联,并且可以从其接收输出数据。在一些实施例中,每一累加器缓冲器620a‑620y可以与行606a‑606l中的单一个别行相关联,并且可以从其接收输出数据。例如,累加器缓冲器620a可以与行606a相关联,并且接收来自行606a的输出;累加器缓冲器620b可以与行606b相关联,并且可以接收来自行606b的输出;以此类推。在一些实施例中,每一累加器缓冲器620a‑620x可以与行606a‑606l中的多列相关联,并且可以从其接收输出数据。
[0172] AI加速器装置110中包括的累加器缓冲器620a‑620y的数量,以及与每一累加器缓冲器相关联的行606a‑606l的数量,可以被选择以满足一或多个参数,例如累加器缓冲器620a‑620y的能量消耗、累加器缓冲器620a‑620y的延迟时间和/或累加器缓冲器620a‑620y的物理足迹。例如,增加AI加速器装置110中所包括的累加器缓冲器620a‑620y的数量(这会减少与每一累加器缓冲器620a‑620y相关联的行606a‑606l的数量)可以减少AI加速器装置的延迟时间和能量消耗,而以增加AI加速器装置110的尺寸作为代价。作为另一个示范例,减少AI加速器装置110中所包括的累加器缓冲器620a‑620y的数量(这会增加与每一累加器缓冲器620a‑620y相关联的行606a‑606l的数量)可以降低AI加速器装置110的尺寸,而以增加AI加速器装置110的延迟时间和能量消耗作为代价。
[0173] 如先前所描述,图6是提供作为示范例。其他示范例可能与关于图6所描述的不同。
[0174] 图7是在此描述的AI加速器装置110的示范实施例700的图。AI加速器装置110的示范实施例700相似于AI加速器装置110的示范实施例200,并且包括相似于AI加速器装置110的示范实施例200的组件202‑210与214‑224的组件702‑710与714‑724。但是,在AI加速器装置110的示范实施例700中,与多个权重缓冲器210a‑210k(例如多个微型权重缓冲器)相反,包括单一单片权重缓冲器710,并且包括多个活化缓冲器718a‑718x(例如多个微型活化缓冲器)和多个累加器缓冲器720a‑720y(例如多个微型累加器缓冲器)。相对于单一单片活化缓冲器与单一单片累加器缓冲器的延迟和能量消耗,包括多个活化缓冲器718a‑718x(例如多个微型活化缓冲器)和多个累加器缓冲器720a‑720y(例如多个微型累加器缓冲器)可以减少AI加速器装置110的活化缓冲器和活化缓冲器的延迟和能量消耗。
[0175] 每一活化缓冲器718a‑718x可以与包括在处理元件阵列702中的处理元件电路704a‑704n的列708a‑708m的子集相关联,并且可以对其提供输入数据。在一些实施例中,每一活化缓冲器718a‑718x可以与列708a‑708‑m中的单一个别列相关联,并可对其提供输入数据。例如,活化缓冲器718a可以与列708a相关联,并且可提供输入数据至列708a;活化缓冲器718b可以与列708b相关联,并且可提供输入数据至列708b;以此类推。在一些实施例中,每一活化缓冲器718a‑718x可以与列708a‑708m中的多个行相关联,并可对其提供输入数据。
[0176] AI加速器装置110所包括的活化缓冲器718a‑718x的数量,以及与每一活化缓冲器相关联的列708a‑708m的数量,可以被选择以满足一或多个参数,例如活化缓冲器718a‑718x的能量消耗、活化缓冲器718a‑718x的延迟时间和/或活化缓冲器718a‑718x的物理覆盖区。例如,增加AI加速器装置110中所包括的活化缓冲器718a‑718x的数量(这会降低与每一活化缓冲器718a‑718x相关联的列708a‑708m的数量)可以减少AI加速装置110中的延迟时间和能量消耗,并以增加AI加速器装置110的尺寸作为代价。作为另一示范例,减少AI加速器装置110中所包括的活化缓冲器718a‑718x的数量(这增加了与每一活化缓冲器718a‑
718x相关联的列708a‑708m的数量)可以减小AI加速器装置110的尺寸,而以增加AI加速器装置110中的延迟和能量消耗作为代价。
[0177] 每一累加器缓冲器720a‑720y可以与包括在处理元件阵列702中的处理元件电路704a‑704n的行706a‑706l的子集相关联,并且可以从其接收输出数据(例如部分和)。在一些实施例中,每一累加器缓冲器720a‑720y可以与行706a‑706l中的单一个别行相关联,并且可以从其接收输出数据。例如,累加器缓冲器720a可以与行706a相关联,并且接收来自行
706a的输出;累加器缓冲器720b可以与行706b相关联,并且可以接收来自行706b的输出;以此类推。在一些实施例中,每一累加器缓冲器720a‑720x可以与行706a‑706l中的多列相关联,并且可以从其接收输出数据。
[0178] AI加速器装置110中包括的累加器缓冲器720a‑720y的数量,以及与每一累加器缓冲器相关联的行706a‑706l的数量,可以被选择以满足一或多个参数,例如累加器缓冲器720a‑720y的能量消耗、累加器缓冲器720a‑720y的延迟时间和/或累加器缓冲器720a‑720y的物理足迹。例如,增加AI加速器装置110中所包括的累加器缓冲器720a‑720y的数量(这会减少与每一累加器缓冲器720a‑720y相关联的行706a‑706l的数量)可以减少AI加速器装置的延迟时间和能量消耗,而以增加AI加速器装置110的尺寸作为代价。作为另一个示范例,减少AI加速器装置110中所包括的累加器缓冲器720a‑720y的数量(这会增加与每一累加器缓冲器720a‑720y相关联的行706a‑706l的数量)可以降低AI加速器装置110的尺寸,而以增加AI加速器装置110的延迟时间和能量消耗作为代价。
[0179] 如先前所描述,图7是提供作为示范例。其他示范例可能与关于图7所描述的不同。
[0180] 图8是在此描述的AI加速器装置110的示范实施例800的图。AI加速器装置110的示范实施例800相似于AI加速器装置110的示范实施例200,并且包括相似于AI加速器装置110的示范实施例200的组件202‑224的组件802‑824。但是,在AI加速器装置110的示范实施例800中,包括多个权重缓冲器810a‑810k(例如多个微型权重缓冲器)、多个活化缓冲器818a‑
818x(例如多个微型活化缓冲器)和多个累加器缓冲器820a‑820y(例如多个微型累加器缓冲器)。相对于单一单片权重缓冲器、单一单片活化缓冲器与单一单片累加器缓冲器的延迟和能量消耗,包括多个权重缓冲器810a‑810k(例如多个微型权重缓冲器)、多个活化缓冲器
818a‑818x(例如多个微型活化缓冲器)和多个累加器缓冲器820a‑820y(例如多个微型累加器缓冲器)可以减少AI加速器装置110的活化缓冲器和活化缓冲器的延迟和能量消耗。
[0181] 每一权重缓冲器810a‑810k可以与包括在处理元件阵列802中的处理元件电路804a‑804n的行806a‑806l的子集相关联,并且可以从其接收输出(例如部分和)。在一些实施例中,每一权重缓冲器810a‑810k可以与行806a‑806l中的单一个别行相关联,并可为其提供权重。例如,权重缓冲器810a可以与行806a相关联,并且可提供权重至行806a;权重缓冲器810b可以与行806b相关联,并且可提供权重至行806b;以此类推。在一些实施例中,每一权重缓冲器810a‑810k可以与行806a‑806l中的多个行相关联,并可为其提供权重。
[0182] AI加速器装置110所包括的权重缓冲器810a‑810k的数量,以及与每一权重缓冲器相关联的行806a‑806l的数量,可以被选择以满足一或多个参数,例如权重缓冲器810a‑810k的能量消耗、权重缓冲器810a‑810k的延迟时间和/或权重缓冲器810a‑810k的物理覆盖区。例如,增加AI加速器装置110中所包括的权重缓冲器810a‑810k的数量(这会降低与每一权重缓冲器810a‑810k相关联的行806a‑806l的数量)可以减少AI加速装置110中的延迟时间和能量消耗,并以增加AI加速器装置110的尺寸作为代价。作为另一示范例,减少AI加速器装置110中所包括的权重缓冲器810a‑810k的数量(这增加了与每一权重缓冲器810a‑
810k相关联的行806a‑806l的数量)可以减小AI加速器装置110的尺寸,而以增加AI加速器装置110中的延迟和能量消耗作为代价。
[0183] 每一活化缓冲器818a‑818x可以与包括在处理元件阵列802中的处理元件电路804a‑804n的列808a‑808m的子集相关联,并且可以对其提供输入数据。在一些实施例中,每一活化缓冲器818a‑818x可以与列808a‑808m中的单一个别列相关联,并可对其提供输入数据。例如,活化缓冲器818a可以与列808a相关联,并且可提供输入数据至列808a;活化缓冲器818b可以与列808b相关联,并且可提供输入数据至列808b;以此类推。在一些实施例中,每一活化缓冲器818a‑818x可以与列808a‑808m中的多个行相关联,并可对其提供输入数据。
[0184] AI加速器装置110所包括的活化缓冲器818a‑818x的数量,以及与每一活化缓冲器相关联的列808a‑808m的数量,可以被选择以满足一或多个参数,例如活化缓冲器818a‑818x的能量消耗、活化缓冲器818a‑818x的延迟时间和/或活化缓冲器818a‑818x的物理覆盖区。例如,增加AI加速器装置110中所包括的活化缓冲器818a‑818x的数量(这会降低与每一活化缓冲器818a‑818x相关联的列808a‑808m的数量)可以减少AI加速装置110中的延迟时间和能量消耗,并以增加AI加速器装置110的尺寸作为代价。作为另一示范例,减少AI加速器装置110中所包括的活化缓冲器818a‑818x的数量(这增加了与每一活化缓冲器818a‑
818x相关联的列808a‑808m的数量)可以减小AI加速器装置110的尺寸,而以增加AI加速器装置110中的延迟和能量消耗作为代价。
[0185] 每一累加器缓冲器820a‑820y可以与包括在处理元件阵列802中的处理元件电路804a‑804n的行806a‑806l的子集相关联,并且可以从其接收输出(例如部分和)。在一些实施例中,每一累加器缓冲器820a‑820y可以与行806a‑806l中的单一个别行相关联,并且可以从其接收输出数据。例如,累加器缓冲器820a可以与行806a相关联,并且接收来自行806a的输出;累加器缓冲器820b可以与行806b相关联,并且可以接收来自行806b的输出;以此类推。在一些实施例中,每一累加器缓冲器820a‑820x可以与行806a‑806l中的多列相关联,并且可以从其接收输出。
[0186] AI加速器装置110中包括的累加器缓冲器820a‑820y的数量,以及与每一累加器缓冲器相关联的行806a‑806l的数量,可以被选择以满足一或多个参数,例如累加器缓冲器820a‑820y的能量消耗、累加器缓冲器820a‑820y的延迟时间和/或累加器缓冲器820a‑820y的物理足迹。例如,增加AI加速器装置110中所包括的累加器缓冲器820a‑820y的数量(这会减少与每一累加器缓冲器820a‑820y相关联的行806a‑806l的数量)可以减少AI加速器装置的延迟时间和能量消耗,而以增加AI加速器装置110的尺寸作为代价。作为另一个示范例,减少AI加速器装置110中所包括的累加器缓冲器820a‑820y的数量(这会增加与每一累加器缓冲器820a‑820y相关联的行806a‑806l的数量)可以降低AI加速器装置110的尺寸,而以增加AI加速器装置110的延迟时间和能量消耗作为代价。
[0187] 在一些实施例中,权重缓冲器810a‑810k与行806a‑806l之间的映射(mapping)、活化缓冲器818a‑818x与列808a‑808m之间的映射以及累加器缓冲器820a‑820y与行806a‑806l之间的映射可以是相同的映射。例如,每一权重缓冲器810a‑810k可以与行806a‑806l中的单一行相关联、每一活化缓冲器818a‑818x可以与列808a‑808m中的单一列相关联,并且每一个累加器缓冲器820a‑820y可以与行806a‑806l中的单一行相关联。作为另一个示范例,每一权重缓冲器810a‑810k可以与第一数量的行806a‑806l相关联、每一活化缓冲器
818a‑818x可以与第二数量的列808a‑808m相关联,并且每一累加器缓冲器820a‑820y的数量可以与第三数量的行806a‑806l相关联,其中第一数量、第二数量和第三数量是相同的数量。
[0188] 在一些实施例中,权重缓冲器810a‑810k和行806a‑806l之间的映射、活化缓冲器818a‑818x和列808a‑808m之间的映射、和/或累加器缓冲器820a和行806a‑806l之间的映射的两个或更多个映射可以是不同的。例如,为了说明,每一权重缓冲器810a‑810k可以与行
806a‑806l中的单一行相关联、每一活化缓冲器818a‑818x可以与列808a‑808m中的三(3)列相关联808m,并且每一累加器缓冲器820a‑820y可以与行806a‑806l中的五(5)行相关联。
[0189] 在一些实施例中,两个或更多个权重缓冲器810a‑810k和行806a‑806l之间的映射、两个或更多个活化缓冲器818a‑818x和列808a‑808m之间的映射,和/或两个或多个累加器缓冲器820a‑820y与行806a‑806l之间的映射可以是不同的映射。例如,权重缓冲器810a可以与行806a‑806l中的单一行相关联、权重缓冲器810b可以与行806a‑806l中的六(6)行相关联,并且权重缓冲器810k可以与行806a‑806l中的八(8)列相关联。
[0190] 在一些实施例中,映射到每一权重缓冲器810a‑810k的行的数量比映射到每一活化缓冲器818a‑818x的列的数量更大和/或比映射到每一累加器缓冲器820a‑820y的行的数量更大。在一些实施例中,映射到每一活化缓冲器818a‑818x的列的数量是大于映射到每一权重缓冲器810a‑810k的行的数量和/或大于映射到每一累加器缓冲器820a‑820y的行的数量。在一些实现中,映射到每一累加器缓冲器820a‑820y的行的数量是大于映射到每一活化缓冲器818a‑818x的列的数量和/或是大于映射到每一权重缓冲器810a‑810k的行的数量。
[0191] 在一些实施例中,权重缓冲器810a‑810k的数量是大于活化缓冲器818a‑818x的数量,和/或大于累加器缓冲器820a‑820y的数量。在一些实施例中,活化缓冲器818a‑818x的数量是大于权重缓冲器810a‑810k的数量和/或是大于累加器缓冲器820a‑820y的数量。在一些实施方式中,累加器缓冲器820a‑820y的数量是大于活化缓冲器818a‑818x的数量和/或是大于权重缓冲器810a‑810k的数量。
[0192] 如先前所描述,图8是提供作为示范例。其他示范例可能与关于图8所描述的不同。
[0193] 图9是在此描述的AI加速器装置110的示范实施例900的图。AI加速器装置110的示范实施例900相似于AI加速器装置110的示范实施例800,并包括与AI加速器装置110的示范实施例800的组件802‑824相似的组件902‑924。
[0194] 在AI加速器装置110的示范实施例900中,权重缓冲器910a与处理元件阵列902的列的子集906a相关联、权重缓冲器910k与处理元件阵列902的列的子集906l相关联,以此类推,其中每一子集906a‑906k包括多个行。子集906a中的每一行都是子集906a独有的,并且不包括在另一列子集的行中、子集906l中的每一行都是子集906l独有的,并且不包括在另一列子集的行中,以此类推。
[0195] 在AI加速器装置110的示范实施例900中,活化缓冲器918a与处理元件阵列902的列的子集908a相关联、活化缓冲器918x与处理元件阵列902的列的子集908m相关联,以此类推,其中每一子集908a‑908m包括多个列。子集908a中的每一列都是子集908a独有的,并且不包括在另一个子集的列中,子集908m中的每一列都是子集908m独有的,并且不包括在另一个子集的列中,以此类推。
[0196] 在AI加速器装置110的示范实施例900中,累加器缓冲器920a与处理元件阵列902的行的子集906a相关联,累加器缓冲器910x与处理元件阵列902的行的子集906l相关联,以此类推,其中每个子集906a‑906l包括多个行。子集906a中的每一行都是子集906a独有的,并且不包括在另一子集的行中、子集906l中的每一行都是子集906l独有的,并且不包括在另一子集的行中,以此类推。
[0197] 如先前所描述,图9是提供作为示范例。其他示范例可能与关于图9所描述的不同。
[0198] 图10A‑图10C是描述示范实施例1000的图。示范实施例1000包括在此描述的AI加速器装置110的示范例操作流程。示范实施例是结合图8的AI加速器装置110的示范实施例800来说明的。然而,AI加速器装置110的示范例操作流程(或其部分)可以由另一个示范例实现执行在此描述的AI加速器装置110。
[0199] 在一些实施例中,执行操作流程以在AI加速器装置110中执行神经网络处理操作。例如,操作流程可以被执行以作为机器学习操作的一部分,以训练处理元件电路804a‑804n并更新或修改与处理元件电路804a‑804n相关联的权重。作为另一示范例,可以执行操作流程以执行推论,其中AI加速器装置110对大数据组中的物件进行分类,其中AI加速器装置
110执行电脑视觉操作,和/或其中AI加速器装置110使用神经网络执行其他复杂和/或大规模操作。在一些实施例中,基于通过网络120从用户端装置(例如从一或多个用户端装置
130‑170)接收到请求或查询来执行操作流程。可以将请求提供给边缘计算系统101,而边缘计算系统101可以使用AI加速器装置110来满足请求。
[0200] 如图10A所显示,AI加速器装置110可以使用多个权重缓冲器810a‑810k来为处理元件阵列802的处理元件电路804a‑804n的行808a‑808m提供权重。例如,权重缓冲器810a可以提供权重至行806a中的处理元件电路804a、804d和804g;权重缓冲器810b可以提供权重至行806b中的处理元件电路804b、804e和804h;权重缓冲器810k可以提供权重至行806l中的处理元件电路804c、804f和804n;以此类推。权重可以存储在存储器装置814中。多个权重缓冲器810a‑810k可以从存储器装置814得到权重并且可以将权重缓冲(例如暂时存储)在多个权重缓冲器810a‑810k中以减少操作流程中的延迟。
[0201] 如图10A进一步所显示,在1002,可以通过权重缓冲器多工器电路812将权重从存储器装置814提供给多个权重缓冲器810a‑810k。权重缓冲器多工器电路812致能权重指向多个权重缓冲器810a‑810k中的特定一者,并且因此指向行806a‑806l中的特定一者。分发器电路816可以接收数据流选择信号(DF_SEL)(例如来自一或多个处理器107)作为输入,并且可以基于数据流选择信号产生一或多种类型的选择信号。例如,分配器电路816可以产生一或多个权重选择信号并提供该或该些权重选择信号至权重缓冲器多工器电路812。该或该些权重选择信号可以使权重缓冲器多工器电路812提供权重至多个权重缓冲器810a‑810k中的特定一者。这使得权重能够从外部存储器(例如存储器装置814)载入至多个权重缓冲器810a‑810k,然后从多个权重缓冲器810a‑810k载入至行806a‑806l中的特定一者。
[0202] 如图10B所示,在1004,AI加速器装置110可以使用多个活化缓冲器818a‑818x提供输入数据(例如部分和、要相乘的值)至处理元件阵列802的处理元件电路804a‑804n的列808a‑808m。例如,活化缓冲器818a可以提供输入数据至在列808a中的处理元件电路804a‑
804c;活化缓冲器818b可以提供输入数据至在列808b中的处理元件电路804d‑804f;活化缓冲器818x可以提供输入数据至在列808m中的处理元件电路804g‑804n。活化缓冲器818a‑
818x可以从周边电路822得到输入数据,并且可以将输入数据缓冲(例如暂时存储)在活化缓冲器818a‑818x中以减少操作流程中的延迟。
[0203] 如图10B进一步所示,在1004,可以通过活化缓冲器多工器电路824将输入提供至活化缓冲器818a‑818x。活化缓冲器多工器电路824使输入数据能够被定向到多个活化缓冲器818a‑818x中的特定一者以及列808a‑808m中的特定列。分配器电路816可以基于数据流选择信号产生一或多种类型的选择信号。例如,分配器电路816可以产生一或多个活化选择信号并提供该或该些活化选择信号至活化缓冲器多工器电路824。该或该些活化选择信号可以使活化缓冲器多工器电路824提供输入数据至多个活化缓冲器818a‑818x中的特定者。
[0204] 如图10C所示,在1006,处理元件阵列802中的每个处理元件电路804a‑804n可以执行一或多个神经网络操作(例如MAC操作和/或另一种类型的神经网络操作)以产生更新的部分和。处理元件电路804a‑804n可以以并行方式或半并行方式执行一或多个神经网络操作。更新的部分和会被缓冲(例如暂时存储)在多个累加器缓冲器820a‑820y中。例如,可以将来自在行806a中的处理元件电路804a、804d和804g的更新的部分和提供至(并缓冲在)累加器缓冲器820a;来自在行806b中的处理元件电路804b、804e和804h的更新的部分和可以提供至(并缓冲在)累加器缓冲器820b;来自在行806l中的处理元件电路804c、804f和804n的更新的部分和可以提供至(并缓冲在)累加器缓冲器820y。多个累加器缓冲器820a‑820y可以向周边电路822提供更新的部分和。
[0205] 如先前所描述,图10A‑图10C是提供作为示范例。其他示范例可能与关于图10A‑图10C所描述的不同。
[0206] 图11是在此描述的处理元件电路的示范实施例1100的图。例如,示范实施例1100可以包括在其他例子中由处理元件电路202a‑202n、处理元件电路302a‑302n、处理元件电路402a‑402n、处理元件电路502a‑502n、处理元件电路602a‑602n、处理元件电路702a‑702n、处理元件电路802a‑802n和/或处理元件电路904中的一处理元件电路所执行的示范MAC操作。MAC操作(也称为权重和操作)可以例如作为示范实施例1000的操作流程的一部分(例如在1006)来执行。
[0207] 如图11所示,处理元件电路1102可以包括乘法器电路1104和累加器电路1106。乘法器电路1104可以接收多个输入1108和1110,并且可以基于输入1108和1110而执行MAC操作的乘法方面。具体而言,乘法器电路1104可以将输入1108和1110相乘以产生中间输出1112。输入1108和1110可以包括要相乘的值、权重和/或另一输入类型。
[0208] 可以将中间输出1112提供至累加器电路1106。累加器电路1106可以执行累加操作,其中将中间输出1112和输入1114(例如部分和)相加,以产生更新的部分和1116。输入1114(例如部分和)可以在空间上从相邻的处理元件电路1102提供或者从在时间上由处理元件电路1102所执行的先前MAC操作所提供。
[0209] 如先前所描述,图11是提供作为示范例。其他示范例可能与关于图11所描述的不同。
[0210] 图12是在此描述的示范神经网络1200的图。图12显示神经网络1200(例如人工神经网络、深度神经网络)的概念图,其可以由在此描述的AI加速器装置110实现。
[0211] 如图12所示,神经网络1200包括输入层1202、隐藏层1204和输出层1206。输入层1202可以包括节点1208,其向一或多个活化层1210提供输入。活化层1210包括由本文所述的处理元件电路实现的节点1212,例如在其他实施例中的处理元件电路202a‑202n、处理元件电路302a‑302n、处理元件电路402a‑402n、处理元件电路502a‑502n、处理元件电路602a‑
602n、处理元件电路702a‑702n、处理元件电路802a‑802n、处理元件电路904和/或处理元件电路1102。每一节点1212可以接收输入并且可以基于输入而执行MAC操作或另一类型的神经网络操作。每一节点1212可以向神经网络中的下一层提供输出(例如更新的部分和),而下一层可以包括另一活化层1210或包括节点1214的输出层1206。
[0212] 如先前所描述,图12是提供作为示范例。其他示范例可能与关于图12所描述的不同。
[0213] 图13A‑图13C是在此描述的神经网络数据流的示范实施例的图。在一些实施例中,在此描述的AI加速器装置110可以被配置为执行结合图13A‑图13C描述的一或多个神经网络数据流。
[0214] 图13A显示权重固定数据流的示范实施例1300。在权重固定数据流中,输入特征图(input feature map,IFMAP)1302可以排列成列。IFMAP 1302的每一列可以存储在各自的活化缓冲器中(例如在此描述的各自的活化微型缓冲器中)并且提供至处理元件阵列1304中所对应的列的处理元件电路。权重可以被提供(例如通过本文所述的权重缓冲器或多个权重微型缓冲器)至处理元件阵列1304,并在使用权重和IFMAP 1302开始计算之前预填入至处理元件阵列1304中的每一处理元件电路中。权重可以被预填入,使得处理元件阵列1304中的给定滤波器的所有元件沿着行分配,这意味着处理元素阵列1304的每一行会从专用权重缓冲器接收权重。
[0215] 部分和由处理元件电路基于IFMAP 1302和预填入权重而产生。在一些实施例中,处理元件电路可以每一周期产生一个部分和。然后,所产生的部分和可以并行地沿着每一行而跨过处理元件阵列1304的列而减少,以产生每行一个输出特征图(OFMAP)1306像素。每一OFMAP行可以分配给个别的累加器缓冲器(例如在此描述的个别累加器微型缓冲器)。
[0216] 图13B显示输入固定数据流的示范实施例1308。输入固定数据流是相似于权重固定数据流,除了权重1310被串流传输到处理元件阵列1312中,其中IFMAP被预填入在处理元件阵列1312的处理元件电路中。来自处理元件阵列1312的边缘的权重1310被串流传输,并且处理元件阵列1312的每一处理元件电路基于权重1310和展开的IFMAP在每一周期而产生部分和。
[0217] 然后,所产生的部分和可以并行地沿着每一行而跨过处理元件阵列1312的列而减少,以产生每行一个OFMAP 1314像素。每一OFMAP行可以分配给个别的累加器缓冲器(例如在此描述的个别累加器微型缓冲器)。
[0218] 图13C显示输出固定数据流的示范实施例1316。输出固定数据流指的是一种映射,其中每一处理元件电路执行一个OFMAP的所有计算,而IFMAP1318和权重1320从处理元件阵列1322的边缘馈送并使用处理元件互连分发到处理元件电路。在处理元件阵列1322中,每一处理元件电路内产生和减少部分和。一旦处理元件阵列1322中的所有处理元件电路完成OFMAP的产生,结果会通过处理元件互连而被传送出处理元件阵列1322。
[0219] 如先前所描述,图13A‑图13C是提供作为示范例。其他示范例可能与关于图13A‑图13C所描述的不同。
[0220] 图14是在此描述的AI加速器装置110中的能量消耗的示范实施例1400的图。图14显示被配置为执行权重固定数据流(例如根据示范实施例1300)的AI加速器装置110的示范例1402、被配置为执行输入固定数据流(例如根据示范实施例1308)的AI加速器装置110的示范例1404,以及被配置为执行输出固定数据流(例如根据示范实施例1316)的AI加速器装置110的示范例1406。
[0221] 在示范例1402中,说明了AI加速器装置1410的能量消耗1408,而该装置包括单一单片权重缓冲器、单一单片活化缓冲器和单一单片累加器缓冲器。更针对在此描述的AI加速器装置110说明了能量消耗1408。借由包括用于AI加速器装置110的权重缓冲器、活化缓冲器和/或累加器缓冲器中的一或多个的微型缓冲器,可以减少在此描述的AI加速器装置110的总能量消耗1408。特别地,虽然计算能量消耗1412(例如处理元件电路的能量消耗)对于AI加速器装置1410和AI加速器装置110保持相对可比性,但可以借由在AI加速器装置110中包括多个权重缓冲器(例如在示范实施例200、500、600、800和/或900中)来减少权重缓冲器能量消耗1414。另外和/或替代地,可以借由在加速器装置110中包括多个活化缓冲器(例如在示范例实现300、500、700、800和/或900中)来减少活化缓冲器能量消耗1416。另外和/或备选地,可以通过在AI加速器装置110中包括多个累加器缓冲器(例如在示范例实现400、
600、700、800和/或900中)来减少累加器缓冲能量消耗1418。
[0222] 对于示范例1402中的权重静止数据流,活化缓冲器能量消耗1416和累加器缓冲器能量消耗1418的能量消耗降低可能是最大的。因此,AI加速器装置110可以被配置为包括多个活化缓冲器和多个累加器缓冲器的组合,以减少AI加速器装置110的能量消耗1408,同时包括单一单片权重缓冲器,以最小化权重缓冲器的尺寸或面积。这可以对应于示范实施例700。然而,可以使用这里描述的其他实现来代替示范实施例700。
[0223] 在示范例1404中,对于本文所描述的用于输入缓冲器数据流的AI加速器装置110,可以借由包括用于AI加速器装置110的权重缓冲器、活化缓冲器和/或累加器缓冲器来减少总能量消耗1408。具体而言,虽然计算能量消耗1412(例如处理元件电路的能量消耗)对于AI加速器装置1410和AI加速器装置110保持相对可比性,但可以借由在AI加速器装置110中包括多个权重缓冲器(例如在示范实施例200、500、600、800和/或900中)来减少权重缓冲器能量消耗1414。另外和/或备选地,可以借由在AI加速器装置110中包括多个活化缓冲器(例如在示范实施例300、500、700、800和/或900中)来减少活化缓冲器能量消耗1416。另外和/或备选地,可以借由在AI加速器装置110中包括多个累加器缓冲器(例如在示范实施例400、600、700、800和/或900中)来减少累加器缓冲器能量消耗1418。
[0224] 对于示范例1404中的输入固定数据流,累加器缓冲器能量消耗1418的能量消耗减少可能是最大的。因此,AI加速器装置110可以被配置为包括多个累加器缓冲器以减少AI加速器装置110的能量消耗1408,同时包括单一单片权重缓冲器和单一单片活化缓冲器,以最小化权重缓冲器和活化缓冲器的尺寸或面积。这可以对应于示范实施例400。然而,可以使用这里描述的其他实施例来代替示范实施例400。
[0225] 在示范例1406中,可以借由包括用于AI加速器装置110的权重缓冲器和/或活化缓冲器的微型缓冲器来针对在此描述的用于输出缓冲器数据流的AI加速器装置110降低总能量消耗1408。特别地,虽然计算能量消耗1412(例如处理元件电路的能量消耗)对于AI加速器装置1410和AI加速器装置110保持相对可比性,但是可以通过在AI加速器装置110中包括多个权重缓冲器(例如在示范实施例200、500、600、800和/或900中)来减少权重缓冲器能量消耗1414。另外和/或备选地,可以通过在AI加速器装置110中包括多个活化缓冲器(例如在示范实施例300、500、700、800和/或900中)来减少活化缓冲器能量消耗1416。
[0226] 对于示范例1406中的输出静态数据流,能量消耗减少对于活化缓冲器能量消耗1416来说可能是最大的。因此,AI加速器装置110可以被配置为包括多个活化缓冲器,以减少AI加速器装置110的能量消耗1408,同时包括单一单片权重缓冲器和单一单片累加器缓冲器,以最小化权重缓冲器和累加器缓冲器的尺寸或面积。这可以对应于示范实施例300。
然而,可以使用这里描述的其他实施例来代替示范实施例300。
[0227] 如先前所描述,图14是提供作为示范例。其他示范例可能与关于图14所描述的不同。
[0228] 图15A和图15B是在此描述的AI加速器装置110的设计参数的示范实施例的图。
[0229] 图15A说明设计参数的示范实施例1500,其包括正规化(normalized)面积1502和正规化能量1504作为缓冲器中处理元件密度1506的函数(例如分配给单一缓冲器,例如权重缓冲器、活化缓冲器、累加器缓冲器,的处理元件电路的数量)。
[0230] 如图15A所示,读取能量1508和写入能量1510随着缓冲器中处理元件密度1506的降低而降低,这意味着读取能量1508和写入能量1510通常对于分配给较小数量的处理元件电路的缓冲器来说较低。因此,增加此处描述的AI加速器装置110中缓冲器的数量(例如权重缓冲器的数量、活化缓冲器的数量和/或累加器缓冲器的数量),使得每一缓冲器被分配给更少的处理元件电路可以减少AI加速器装置110中的读取能量1508和写入能量1510。然而,缓冲器区域1512随着缓冲器中的处理元件密度1506的增加而增加。因此,在此描述的AI加速器装置110中的缓冲器可被配置为,使得缓冲器的处理元件密度1506、读取能量1508、写入能量1510和缓冲器区域1512位于最佳化窗口1514内。
[0231] 图15B说明了设计参数的示范实施例1516,其包括正规化区域1518和正规化延迟1520作为缓冲器中处理元件密度1522的函数(例如分配给单一缓冲器,例如权重缓冲区、活化缓冲区、累加器缓冲区,的处理元件电路的数量)。
[0232] 如图15B所示,缓冲器延迟1524随着缓冲器中处理元件密度1522的降低而减小,这意味着缓冲器延迟1524通常对于分配给较少数量的处理元件电路的缓冲器而言较低。因此,增加在此描述的AI加速器装置110中缓冲器的数量(例如权重缓冲器的数量、活化缓冲器的数量和/或累加器缓冲器的数量),使得每一缓冲器被分配给更少的处理元件电路,以减少AI加速器装置110中的缓冲器延迟1524。然而,缓冲器区域1526随着缓冲器中的处理元件密度1522增加而增加。因此,本文所述的AI加速器装置110中的缓冲器可被配置,使得缓冲器的处理元件密度1522、缓冲器延迟1524和缓冲器区域1526会位于最佳化窗口1528内。
[0233] 如先前所描述,图15A和图15B是提供作为示范例。其他示范例可能与关于图15A和图15B所描述的不同。
[0234] 图16是在此描述的装置1600的示范组件的图。装置1600可以对应于包括在边缘计算系统101和/或一或多个用户端装置130‑170中的一或多个组件。在一些实施例中,包括在边缘计算系统101和/或一个或多个客户端装置130‑170中的一个或多个组件可以包括一或多个装置1600和/或装置1600的一或多个组件。如图16所示,装置1600可以包括总线1610、处理器1620、存储器1630、输入组件1640、输出组件1650和通讯组件1660。
[0235] 总线1610包括在装置1600的组件之间实现有线及/或无线通讯的一或多个组件。总线1610可以,例如,通过操作耦合(operative coupling)、通讯耦合(communicative coupling)、电子耦合(electronic coupling)及/或电耦合(electric coupling)以将两个或多个图16的组件耦合在一起。处理器1620包括中央处理单元、图形处理单元、微处理器、控制器、微控制器、数字信号处理器、现场可编程逻辑闸阵列(field‑programmable gate array,FPGA)、特殊应用集成电路(application‑specific integrated circuit)及/或其他类型的处理组件。处理器1620是以硬件、固件、或硬件及软件的组合来实现。在一些实施例中,处理器1620包括能够被程序化以进行本公开别处描述的一或多个操作或程序的一或多个处理。
[0236] 存储器1630包括易失性及/或非易失性存储器。举例而言,存储器1630可以包括随机存取存储器(random access memory,RAM)、只读存储器(read only memory,ROM)、硬式磁盘机及/或其他类型的存储器(例如快闪存储器、磁存储器及/或光存储器)。存储器1630可以包括内部存储器(例如RAM、ROM、或硬式磁盘机)及/或可移除存储器(例如通过通用序列总线(universal serial bus)连接可移除)。存储器1630可以是非暂态电脑可读取媒体(non‑transitory computer‑readable medium)。存储器1630存储与装置1600的操作相关的信息、指令及/或软件(例如一或多个软件应用)。在一些实施例中,存储器1630包括一或多个存储器,其通过例如总线1610耦接于一或多个处理器(例如处理器1620)。
[0237] 输入组件1640使装置1600能够接收输入,例如使用者输入及/或感应输入。举例而言,输入组件1640可以包括触控屏幕、键盘、小键盘、鼠标、按钮、麦克风、摇杆、感测器、全球定位系统感测器、加速计(accelerometer)、陀螺仪及/或作动部(actuator)。输出组件1650使装置1600能够提供输出,例如通过显示器、喇叭及/或发光二极管。通讯组件1660使装置1600能够通过有线连接及/或无线连接与其他装置通讯。举例而言,通讯组件1660可以包括接收器、发射器、收发器、数据机、网络界面卡及/或天线。
[0238] 装置1600可以执行在此描述的一或多个操作或程序。举例而言,非暂态电脑可读取媒体(例如存储器1630)可以存储用于通过处理器1620执行的一组指令(例如一或多个指令或编码)。处理器1620可以执行一组指令,以进行在此描述的一或多个操作或程序。在一些实施例中,通过一或多个处理器1620,执行一组指令造成一或多个处理器1620及/或装置1600进行在此描述的一或多个操作或程序。在一些实施例中,可以使用硬件电路以代替指令或与指令结合以进行在此描述的一或多个操作或程序。此外,或替代地,可以配置处理器
1620以进行在此描述的一或多个操作或处理。因此,在此描述的实施例并不限于任何特定组合的硬件电路及软件。
[0239] 图16所示的组件的数目及排列作为范例来提供。装置1600可以包括额外的组件、较少的组件、不同的组件、或与图16所示的组件不同地排列的组件。此外,或替代地,装置1600的一组组件(例如一或多个组件)可以进行被描述为由装置1600的另一组组件进行的一或多个功能。
[0240] 图17是与此处描述的AI加速器装置的操作相关联的示范操作1700的流程图。在一些实现中,图17的一或多个程序操作块是由AI加速器装置(例如AI加速器装置110)所执行。
[0241] 如图17所示,操作1700可以包括向AI加速器装置的多个权重缓冲器提供多个权重(操作块1710)。例如,AI加速器装置110可以向AI加速器装置110的多个权重缓冲器(例如权重缓冲器810a‑810k、权重缓冲器910a‑910k)提供多个权重,如本文所述。
[0242] 如图17进一步所示,操作1700可以包括使用多个权重缓冲器向AI加速器装置的处理元件阵列的各行的处理元件电路提供多个权重的多个子集(操作块1720)。例如,AI加速器装置110可以使用多个权重缓冲器将多个权重的多个子集提供给AI加速器装置110的处理元件阵列(例如处理元件阵列802、处理元件阵列902)的处理元件电路(例如处理元件电路804a‑804n、处理元件电路904)的个别行(例如行806a‑806l、行906a‑906l),如本文所述。
[0243] 如图17进一步所示,操作1700可以包括向AI加速器装置的多个活化缓冲器提供活化数据(操作块1730)。例如,AI加速器装置110可以向AI加速器装置的多个活化缓冲器(例如活化缓冲器818a‑818x、活化缓冲器918a‑918x)提供活化数据,如本文所述。
[0244] 如图17进一步所示,操作1700可以包括使用多个活化缓冲器向处理元件阵列的各列的处理元件电路提供活化数据的多个子集(操作块1740)。例如,AI加速器装置110可以使用多个活化缓冲器向处理元件阵列的处理元件电路的个别列(例如列808a‑808m、列908a‑908m)提供活化数据的多个子集,如本文所述。
[0245] 如图17进一步所示,操作1700可以包括将来自处理元件阵列的多个部分和提供给AI加速器装置的多个累加器缓冲器中的个别累加器缓冲器(操作块1750)。例如,AI加速器装置110可以将来自处理元件阵列的多个部分和提供给AI加速器装置的多个累加器缓冲器的个别累加器缓冲器(例如累加器缓冲器820a‑820y、累加器缓冲器920a‑920y),如本文所述。在一些实施例中,多个部分和是基于由处理元件阵列对多个权重和活化数据执行的MAC运算。
[0246] 如图17进一步所示,操作1700可以包括将来自个别累加器缓冲器的多个部分和提供给AI加速器装置的周边电路(操作块1760)。例如,AI加速器装置110可以将来自个别累加器缓冲器的多个部分和提供给AI加速器装置110的周边电路(例如周边电路822、周边电路922),如本文所述。
[0247] 操作1700可以包括额外的实施例,诸如下文描述的和/或结合本文别处描述的一或多个其他过程的任何单一实施方式或是实施方式的任何组合。
[0248] 在第一实施方式中,向多个权重缓冲器提供多个权重包括从AI加速器装置110的存储器装置(例如存储器装置814、存储器装置914)通过权重缓冲器多工器电路(例如权重缓冲器多工器电路812、权重缓冲器多工器电路912)向多个权重缓冲器提供多个权重。操作1700包括产生选择信号,并提供选择信号至权重缓冲器多工器电路,以引起权重缓冲器多工器电路将多个权重提供给多个权重缓冲器。
[0249] 在第二实施方式中,与第一实施方式一起或结合第一实施方式,向多个活化缓冲器提供活化数据包括从AI加速器装置110的周边电路(例如周边电路822、周边电路922)通过活化缓冲器多工器电路(例如活化缓冲器多工器电路824、活化缓冲器多工器电路924)提供活化数据至多个活化缓冲器。操作1700包括产生选择信号,并且将选择信号提供给活化缓冲器多工器,以使活化缓冲器多工器提供活化数据至多个活化缓冲器。
[0250] 在第三实施方式中,与第一或第二实施方式一起或结合,多个部分和包括多个更新的部分和,并且其中活化数据包括多个输入部分和,以及输入数据是与多个权重相乘并与多个输入部分和累加以形成更新的部分和。在第四实施方式中,单独地或与第一至第三实施方式中的一个或多个组合,操作1700包括将来自周边电路的多个输入部分和提供给活化缓冲器多工器电路。在第五实施方式中,单独地或与第一至第四实施方式中的一个或多个组合,从处理元件阵列向提供多个部分和至个别累加器缓冲器包括从处理元件阵列的处理元件电路的个别行提供多个部分和到各自的累加器缓冲器。
[0251] 虽然图17显示了操作1700的示范区块,但在一些实现中,操作1700包括比图17中描绘的区块更多的区块、更少的区块、不同的区块或不同配置的块。此外,或备选地,操作1700的两个或更多个区块可以并行执行。
[0252] 本公开提供一种人工智能加速器装置。人工智能加速器装置包括一处理元件阵列以及相关联于处理元件阵列的多个权重缓冲器。处理元件阵列包括设置在多个行以及多个列的多个处理元件电路。权重缓冲器是相关联于处理元件阵列的处理元件电路的行的个别子集的行。
[0253] 在一些实施例中,人工智能加速器装置更包括一存储器装置以及一权重缓冲器多工器电路。存储器装置是经由权重缓冲器多工器电路而耦接于权重缓冲器。
[0254] 在一些实施例中,人工智能加速器装置更包括相关联于处理元件阵列的多个活化缓冲器。活化缓冲器是相关联于处理元件阵列的处理元件电路的列的个别子集的列。
[0255] 在一些实施例中,人工智能加速器装置更包括耦接于活化缓冲器的一活化缓冲器多工器电路,以及耦接于活化缓冲器多工器电路的一分配器电路。
[0256] 在一些实施例中,人工智能加速器装置更包括耦接于权重缓冲器的一权重缓冲器多工器电路。分配器电路是耦接于权重缓冲多工器电路。
[0257] 在一些实施例中,人工智能加速器装置更包括相关联于处理元件阵列的多个累加器缓冲器。累加器缓冲器是相关联于处理元件阵列的处理元件电路的行的一个别子集的行。
[0258] 在一些实施例中,累加器缓冲器是经由人工智能加速器装置的周边电路耦接于活化缓冲器多工器电路。
[0259] 本公开提供一种人工智能加速器装置。人工智能加速器装置包括一处理元件阵列以及相关联于处理元件阵列的多个活化缓冲器。处理元件阵列包括设置在多个行以及多个列的多个处理元件电路。活化缓冲器是相关联于处理元件阵列的处理元件电路的列的一个别子集的列。
[0260] 在一些实施例中,每一活化缓冲器是相关联于处理元件阵列的处理元件电路的多等列的一单一个别的列。
[0261] 在一些实施例中,人工智能加速器装置更包括耦接于活化缓冲器的一活化缓冲器多工器电路、耦接于活化缓冲器多工器电路的一分配器电路以及相关联于处理元件阵列的多个累加器缓冲器。累加器缓冲器是相关联于处理元件阵列的处理元件电路的行的一个别子集的行。
[0262] 在一些实施例中,累加器缓冲器是经由人工智能加速器装置的周边电路耦接于活化缓冲器多工器电路。
[0263] 在一些实施例中,人工智能加速器装置配置为执行一输入静态数据流,以及其中累加器缓冲器的数量是大于活化缓冲器的数量。
[0264] 在一些实施例中,人工智能加速器装置配置为执行一输出静态数据流,以及其中人工智能加速器装置包括一单片累加器缓冲器。
[0265] 本公开提供一种操作方法,适用于一人工智能加速器装置。操作方法包括:提供多个权重至人工智能加速器装置的多个权重缓冲器;使用权重缓冲器,提供权重的多个子集至人工智能加速器装置的一处理元件阵列的多个处理元件电路的个别行;提供活化数据至人工智能加速器装置的的多个活化缓冲器;使用活化缓冲器,提供活化数据的多个子集至处理元件阵列的处理元件电路的个别列;提供来自处理元件阵列的多个部分和至人工智能加速器装置的多个累加器缓冲器的个别累加器缓冲器,其中部分和是基于由处理元件阵列对权重和活化数据执行的一乘法和累加运算而得到;以及,提供来自个别累加器缓冲器的部分和至人工智能加速器装置的周边电路。
[0266] 在一些实施例中,提供权重至权重缓冲器包括:经由一权重缓冲器多工器电路,提供来自人工智能加速器装置的一存储器装置的权重至权重缓冲器。
[0267] 在一些实施例中,操作方法更包括:经由人工智能加速器装置的一分配器电路,产生一选择信号;以及提供选择信号至权重缓冲器多工器电路,以使权重缓冲器多工器电路提供权重至权重缓冲器。
[0268] 在一些实施例中,提供活化数据至活化缓冲器包括:经由一活化缓冲器多工器电路,提供来自人工智能加速器装置的一周边电路的活化数据至活化缓冲器。操作方法更包括:经由人工智能加速器装置的一分配器电路,产生一选择信号;以及提供选择信号至活化缓冲器多工器,以使活化缓冲器多工器提供活化数据至活化缓冲器。
[0269] 在一些实施例中,部分和包括多个更新的部分和,以及其中活化数据包括多个输入部分和以及输入数据。输入数据与权重相乘并与输入部分和累加,以形成更新的部分和。
[0270] 在一些实施例中,操作方法更包括:提供来自周边电路的输入部分和至活化缓冲器多工器电路。
[0271] 在一些实施例中,提供来自处理元件阵列的部分和至个别的累加器缓冲器包括:提供来自处理元件阵列的处理元件电路的的个别行的部分和至个别累加器缓冲器。
[0272] 以上概述了若干实施例的特征,以使所属领域中的技术人员可更好地理解本公开的各个方面。所属领域中的技术人员应理解,其可容易地使用本公开作为设计或修改其他制程及结构的基础来施行与本文中所介绍的实施例相同的目的及/或实现与本文中所介绍的实施例相同的优点。所属领域中的技术人员还应认识到,这些等效构造并不背离本公开的精神及范围,而且他们可在不背离本公开的精神及范围的条件下对其作出各种改变、代替及变更。