CN115516450A - 推理引擎电路架构 - Google Patents

推理引擎电路架构 Download PDF

Info

Publication number
CN115516450A
CN115516450A CN202080099151.0A CN202080099151A CN115516450A CN 115516450 A CN115516450 A CN 115516450A CN 202080099151 A CN202080099151 A CN 202080099151A CN 115516450 A CN115516450 A CN 115516450A
Authority
CN
China
Prior art keywords
circuit
data
buffer
circuits
accumulated sum
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080099151.0A
Other languages
English (en)
Inventor
A·扎伊迪
A·X·M·张
E·库卢尔切洛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN115516450A publication Critical patent/CN115516450A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Abstract

公开了一种推理引擎电路架构,其包含矩阵‑矩阵(MM)处理器电路和具有多种操作模式的MM加速器电路,以提供完整的矩阵乘法运算。一种代表性MM加速器电路包含:第一缓冲器电路,其存储映射数据;第一数据网络;多个第二缓冲器电路,其各自存储不同的内核数据;多个第二串行数据网络,其各自耦合到对应的第二缓冲器电路;以及多个向量‑向量(VV)加速电路,其布置在多个阵列中。每个VV加速电路包含:乘法和累加电路;移位寄存器;控制多路复用器,其响应于模式控制字而提供偏置参数或第一累加和的所选择输出;以及第二加法器电路,其将乘积与所述偏置参数或所述第一累加和相加以生成第二或下一累加和。

Description

推理引擎电路架构
相关申请的交叉引用
本申请要求发明人Aliasger Zaidy等人于2020年3月29日提交的标题为“推理引擎电路架构(Inference Engine Circuit Architecture)”的第16/833,610号美国专利申请的权益和优先权,所述美国专利申请与本文共同转让,并且所述美国专利申请特此以全文引用的方式整体并入本文中,其全部效力和效果与本文中所全文阐述的相同。
技术领域
本发明大体上涉及计算电路系统,且更具体地说,涉及一种能够实行逐矩阵乘法运算(matrix-by-matrix multiplication)的电子电路架构,所述电子电路架构可用于实施卷积神经网络,用于例如人工智能、机器学习、和图像识别等应用程序。
背景技术
神经网络运算的核心是大量乘法运算。卷积神经网络(“CNN”)是具有多个互连的阶层式层的前馈神经网络,所述前馈神经网络通常用于例如人工智能、机器学习和图像识别等多种应用程序。CNN层的输入和输出通常是三维(“3D”)的。例如,典型的CNN可以使用具有红色通道、绿色通道和蓝色通道的图像输入,所述通道中的每一者是单独的二维(2D)输入特征图。对这些输入特征图中的每一者实行二维卷积以产生三个输出,然后逐像素以相加方式组合所述输出以产生多个输出图,然后将所述输出图作为输入馈送到下一CNN层,直到产生最终结果为止。一组此类输入数据,如输入特征图,称为输入“映射”。接着将输入映射映像数据与对应的权重进行卷积,所述权重被称为卷积“内核”。因此,对于此类神经网络,大部分原子操作是输入(映射)与权重(内核)之间的乘法运算。
为了运行消费者通常使用的深度学习应用程序,例如在Facebook中给照片加标签,或向Alexa提问,或在Google中将一种语言翻译成另一种语言,计算机必须实行大量此类输入或神经激活与权重的乘法运算。神经网络使用大量的权重参数,多达1.5亿个,更典型的是在3000-6000万个权重之间。这意味着,每次使用神经网络时,它都必须针对每个输入实行数百万次乘法运算。并且所述神经网络应尽可能快地完成,这是因为人们通常不愿意或不会花超过约200毫秒来等待结果。
因此,例如但不限于,对于能够为CNN应用程序,为例如人工智能、机器学习、图像识别等应用程序和需要数学计算的其它推理应用程序,提供高性能的计算架构(“引擎”)存在持续需求。此类计算架构应具有相对高的效率,含显著的利用率,并且应具有相对低的带宽用于访问存储映射数据和内核数据的任何存储器集成电路。为了提供此类性能,此类计算架构应能够实行完整的逐矩阵乘法运算。
发明内容
如下文更详细地论述,代表性设备(电路)和系统(集成电路或“IC”)提供一种推理引擎电路架构。例如但不限于,代表性推理引擎电路架构作为系统是能够为CNN应用程序,为例如人工智能、机器学习、图像识别等应用程序和需要数学计算的其它推理应用程序,提供高性能的计算架构。推理引擎电路架构(或系统)具有相对高的效率,含显著的利用率(约95%),并且具有相对低的带宽用于访问存储映射数据和内核数据的任何存储器集成电路。推理引擎电路架构系统能够实行完整的逐矩阵乘法运算。
推理引擎电路架构系统在大多数深度神经网络层中达到99.9%的效率,从而去除未使用的电路系统(死(dead)硅或“暗(dark)”硅)并提供高效的功耗,尤其适用于移动应用程序。推理引擎电路架构还可以提供显著的缩放,如下文更详细地论述。
公开了一种加速电路架构的代表性实施例,所述加速电路架构包括:第一缓冲器电路,其存储映射数据;第一数据网络,其耦合到所述第一缓冲器电路;第二缓冲器电路,其存储内核数据;第二串行数据网络,其耦合到所述第二缓冲器电路;第一多个乘法和累加电路,其布置在第一阵列中并且通过所述第一数据网络耦合到所述第一缓冲器电路且通过所述第二串行数据网络耦合到所述第二缓冲器电路,所述第一多个乘法和累加电路中的每个乘法和累加电路包括:乘法器电路,其用以将映射数据和内核数据相乘以生成乘积;以及第一加法器电路,其耦合到所述乘法器;其中所述加速电路架构进一步包括:移位寄存器,其耦合到所述第一多个乘法和累加电路;第一控制多路复用器,其适用于响应于第一模式控制字而提供所选择输出,所述所选择输出包括偏置参数或者第一或下一累加和;以及第二加法器电路,其耦合到所述移位寄存器和所述第一控制多路复用器,所述第二加法器电路适用于将所述乘积与所述偏置参数或所述第一累加和相加以生成第二或下一累加和。
在代表性实施例中,响应于第一模式控制字指定独立模式,所述第一控制多路复用器提供所述偏置参数作为所述所选择输出。在代表性实施例中,响应于第一模式控制字指定协作模式,所述第一控制多路复用器提供所述偏置参数作为所述所选择输出用于第一周期且提供所述第一或下一累加和作为所述所选择输出用于多个后续周期。在代表性实施例中,响应于第一模式控制字指定组合式独立和协作模式,所述第一控制多路复用器提供所述偏置参数作为所述所选择输出用于第一周期且提供所述第一或下一累加和作为所述所选择输出用于第一多个后续周期;并且在所述第一多个后续周期之后,所述第一控制多路复用器提供所述偏置参数作为所述所选择输出用于下一周期且提供所述第一或下一累加和作为所述所选择输出用于第二多个后续周期。
在代表性实施例中,所述第二串行数据网络将第一内核数据提供到第一多个乘法和累加电路,接着循序将所述第一内核数据提供到第二多个乘法和累加电路。
在代表性实施例中,所述加速电路架构可以进一步包括:映射缓冲器仲裁器电路,其耦合到所述第一缓冲器电路和所述第一数据网络,所述映射缓冲器仲裁器电路适用于确定访问所述第一缓冲器电路时的冲突,并且响应于所述冲突而实施用于访问所述第一缓冲器电路的优先级协议。在代表性实施例中,所述映射缓冲器仲裁器电路进一步适用于接收用于所述第一缓冲器电路中的所选择映射数据的地址,并且作为响应,获得并提供所述所选择映射数据。
在代表性实施例中,所述加速电路架构可以进一步包括:张量解码器电路,其耦合到所述第一数据网络,所述张量解码器电路适用于生成并输出地址序列,所述地址序列从基地址开始并使所述基地址递增直到输出地址等于所述基地址加上张量长度。在代表性实施例中,所述张量解码器电路可以进一步包括:操作数收集器,其耦合到所述第一数据网络,所述操作数收集器适用于将所述输出地址传送到映射缓冲器仲裁器电路或所述第二缓冲器电路,获得对应于所述输出地址的数据,并将所获得数据传送到所述第一多个乘法和累加电路。在代表性实施例中,所述加速电路架构可以进一步包括:张量缓冲器,其耦合到所述张量解码器电路;以及控制核心,其耦合到所述张量解码器电路和所述第一数据网络,所述控制核心适用于接收并解码多个指令,并且将张量指令传送到所述张量缓冲器以供所述张量解码器电路执行。
在代表性实施例中,所述加速电路架构可以进一步包括:模式控制电路,其适用于提供或生成所述第一模式控制字。
在代表性实施例中,所述加速电路架构可以进一步包括:MAX电路,其包括多个比较器,所述多个比较器适用于确定多个第二或下一累加和的最大值。
在另一代表性实施例中,所述加速电路架构可以进一步包括:多个第二控制多路复用器,所述多个第二控制多路复用器中的每个第二控制多路复用器耦合到所述第一多个乘法和累加电路中的乘法和累加电路的第一加法器电路,所述多个第二控制多路复用器中的每个第二控制多路复用器适用于响应于第二模式控制字而提供所选择输出,所述所选择输出包括偏置参数或第一累加和。
公开了一种加速电路架构的另一代表性实施例,所述加速电路架构包括:第一缓冲器电路,其存储映射数据;第一数据网络,其耦合到所述第一缓冲器电路;多个第二缓冲器电路,其存储内核数据,所述多个第二缓冲器电路中的每个第二缓冲器电路存储与所述多个第二缓冲器电路中的另一第二缓冲器电路不同的内核数据;多个第二串行数据网络,所述多个第二串行数据网络中的每个第二串行数据网络耦合到所述多个第二缓冲器电路中的对应第二缓冲器电路;多个向量-向量加速电路,其布置在多个阵列中,所述多个阵列中的所选择阵列中的所述多个向量-向量加速电路中的每个向量-向量加速电路通过所述第一数据网络耦合到所述第一缓冲器电路,并且所述多个向量-向量加速电路中的每个向量-向量加速电路通过所述多个第二串行数据网络中的对应第二串行数据网络耦合到所述多个第二缓冲器电路中的第二缓冲器电路,所述多个向量-向量加速电路中的每个向量-向量加速电路包括:多个乘法和累加电路,所述多个乘法和累加电路中的每个乘法和累加电路包括:乘法器电路,其用以将映射数据和内核数据相乘以生成乘积;以及第一加法器电路,其耦合到所述乘法器;其中每个向量-向量加速电路进一步包括:移位寄存器,其耦合到所述多个乘法和累加电路;第一控制多路复用器,其适用于响应于第一模式控制字而提供所选择输出,所述所选择输出包括偏置参数或者第一或下一累加和;以及第二加法器电路,其耦合到所述移位寄存器和所述第一控制多路复用器,所述第二加法器电路适用于将所述乘积与所述偏置参数或所述第一累加和相加以生成第二或下一累加和。
在代表性实施例中,所述多个第二串行数据网络中的每个第二串行数据网络将第一内核数据提供到所述多个阵列中的所述所选择阵列中的第一向量-向量加速电路,接着循序将所述第一内核数据提供到第二向量-向量加速电路。
在代表性实施例中,所述多个第二串行数据网络中的第一串行数据网络将第一内核数据提供到第一阵列的向量-向量加速电路,且所述多个第二串行数据网络中的第二串行数据网络将第二内核数据提供到第二阵列的向量-向量加速电路,所述第一内核数据不同于所述第二内核数据。
公开了一种加速电路架构的另一代表性实施例,所述加速电路架构包括:存储器接口电路;第一缓冲器电路,其存储映射数据;第一数据网络,其耦合到所述第一缓冲器电路和所述存储器接口电路;多个第二缓冲器电路,其存储内核数据,所述多个第二缓冲器电路中的每个第二缓冲器电路存储与所述多个第二缓冲器电路中的另一第二缓冲器电路不同的内核数据;多个第二串行数据网络,所述多个第二串行数据网络中的每个第二串行数据网络耦合到所述多个第二缓冲器电路中的对应第二缓冲器电路;至少一个矩阵-矩阵加速电路,其具有多种操作模式,所述多种操作模式包括独立模式、协作模式和多种组合式独立和协作模式,所述至少一个矩阵-矩阵加速电路包括:多个矩阵-向量加速电路,所述多个矩阵-向量加速电路中的每个矩阵-向量加速电路包括多个向量-向量加速电路的阵列,所述多个矩阵-向量加速电路中的每个矩阵-向量加速电路通过所述第一数据网络耦合到所述第一缓冲器电路,并且所述多个矩阵-向量加速电路中的每个矩阵-向量加速电路通过所述多个第二串行数据网络中的对应第二串行数据网络耦合到所述多个第二缓冲器电路中的不同第二缓冲器电路,所述多个向量-向量加速电路中的每个向量-向量加速电路包括:多个乘法和累加电路,所述多个乘法和累加电路中的每个乘法和累加电路包括:乘法器电路,其用以将映射数据和内核数据相乘以生成乘积;以及第一加法器电路,其耦合到所述乘法器;移位寄存器,其耦合到所述多个乘法和累加电路;控制多路复用器,其适用于响应于对应于所述多种操作模式中的所选择操作模式的模式控制字而提供所选择输出,所述所选择输出包括偏置参数或者第一或下一累加和;以及第二加法器电路,其耦合到所述移位寄存器和所述第一控制多路复用器,所述第二加法器电路适用于将所述乘积与所述偏置参数或所述第一累加和相加以生成第二或下一累加和并将所述第二或下一累加和提供作为对应于所述所选择操作模式的输出;并且所述加速电路架构进一步包括:MAX电路,其包括多个比较器,所述多个比较器适用于确定多个第二或下一累加和的最大值。
还公开了一种加速矩阵乘法运算的方法的代表性实施例,其中所述方法包括:选择操作模式;获得映射数据;获得内核数据;获得模式控制字;使用乘法器电路将映射数据与内核数据相乘以生成乘积;当所述模式控制字指示即将发生累加时,使用加法器电路将所述乘积与第一或下一累加和相加以生成下一累加和;当所述模式控制字指示将加上第一偏置参数时,使用加法器电路将所述第一偏置参数与所述乘积或所述下一累加和相加;以及输出所述下一累加和。在代表性实施例中,所述乘法和累加步骤继续直到已发生完整的矩阵乘法运算为止。
在代表性实施例中,响应于模式控制字指定独立模式,所述方法提供多个下一累加和作为多个单独的输出。在此代表性实施例中,所述方法可以进一步包括:加上所述偏置参数用于第一周期;加上所述第一或下一累加和用于多个后续周期以生成所述下一累加和;以及输出所述下一累加和作为多个输出中的单独输出。
在另一代表性实施例中,所述方法可以进一步包括:加上所述偏置参数用于第一周期;加上所述第一或下一累加和用于多个后续周期以生成所述下一累加和;响应于模式控制字指定组合式独立和协作模式,将预定数目的下一累加和加在一起以生成输出累加和;以及依次输出所述输出累加和作为所述多个输出中的单独输出。
在另一代表性实施例中,所述方法可以进一步包括:响应于模式控制字指定协作模式,提供单个累加和作为输出。在此代表性实施例中,所述方法可以进一步包括:加上所述偏置参数用于第一周期;加上所述第一或下一累加和用于多个后续周期以生成所述下一累加和;以及将所有下一累加和加在一起以生成所述单个累加和。
在各种代表性实施例中,所述方法可以进一步包括:生成并输出地址序列,所述地址序列从基地址开始并使所述基地址递增直到输出地址等于所述基地址加上张量长度。
根据本发明的以下详细描述和其实施例、权利要求书以及附图,本发明的许多其它优点和特征将变的显而易见。
附图说明
当结合附图考虑参考以下公开内容时,将更容易理解本发明的目标、特征和优点,附图中相似的参考标号用于在各图中标识相同的组件,并且附图中带有字母符号的参考标号用于在各图中标识所选择组件实施例的额外类型、示例或变化,其中:
图1是具有矩阵-矩阵(“MM”)处理器电路、一或多个矩阵-矩阵(“MM”)加速器电路的推理引擎电路架构或系统的代表性实施例的框图。
图2是在推理引擎电路架构系统的代表性实施例中使用的映射数据或内核数据的三维体积的示意图。
图3是具有多个矩阵-向量(“MV”)加速器电路的矩阵-矩阵加速器电路的代表性第一实施例的框图。
图4是具有多个矩阵-向量(MV)加速器电路的矩阵-矩阵加速器电路的代表性第二实施例的框图。
图5是具有多个向量-向量(“VV”)加速器电路的矩阵-向量加速器电路的代表性实施例的框图。
图6是具有多个乘法和累加(“MAC”)电路的向量-向量加速器电路的代表性实施例的框图。
图7是矩阵-矩阵处理器电路的代表性实施例的框图。
图8是映射缓冲器仲裁器电路以及张量解码器电路的解码器电路、模式控制电路和操作数收集器电路的代表性实施例的框图。
图9是MAX电路的代表性实施例的框图。
图10A和10B(统称为图10)是使用推理引擎电路架构或系统实行矩阵乘法运算的方法的代表性实施例的流程图。
具体实施方式
虽然本发明容许多种不同形式的实施例,但在理解本公开将被视为本发明的原理的范例且并不旨在将本发明限于所示出的具体实施例的情况下,在图式中示出且将在本文中详细地描述本发明的具体示例性实施例。在这方面,在详细解释根据本发明的至少一个实施例之前,应理解,本发明不限于应用于上文和下文阐述、图式中示出或者实例中描述的构造细节以及组件布置。与本发明一致的方法和设备能够有其它实施例并且能够以各种方式实践和实行。而且,应理解,本文所采用的措辞和术语以及下文包含的摘要是出于描述的目的并且不应被视为限制。
图1是包括矩阵-矩阵(MM)处理器电路200和一或多个矩阵-矩阵(MM)加速器电路100的推理引擎电路架构(或系统)50的代表性实施例的框图。推理引擎电路架构50作为系统进一步包括用于对存储器电路25进行读取(加载)和写入(存储)访问的存储器接口60,所述访问可任选地通过存储器控制器40进行。作为另一种选择,推理引擎电路架构50还可以包括通用处理器75,其可以是如下文更详细地描述的任何类型或种类的处理器,例如微处理器,用于实行计算和/或执行未由MM处理器电路200和一或多个MM加速器电路100实行或执行的控制代码。推理引擎电路架构50还通常包含通信接口(或其它输入-输出接口)45,下文更详细地描述,用于推理引擎电路架构50与可为较大系统或板15(例如,例如但不限于服务器的安装在机架上的板)的一部分的芯片外组件,例如存储器电路25(所述通信例如但不限于经由通信总线20,其可以具有任何类型或种类的通信总线结构)。在代表性实施例中,通信接口45包含存储器接口60的功能性,或反之亦然,并且仅一个此类存储器接口60或通信接口(或其它输入-输出接口)45包含于推理引擎电路架构(或系统)50中。
在代表性实施例中,推理引擎电路架构50体现为集成电路,例如专用集成电路(“ASIC”)或现场可编程门阵列(“FPGA”)。任选地,存储器控制器40可被包含作为推理引擎电路架构50或系统15的一部分。存储器电路25通常体现为单独的IC。取决于实施例,推理引擎电路架构50还可以耦合到额外处理器75,例如经由通信总线20。
MM处理器电路200、一或多个MM加速器电路100、存储器接口60和处理器75通常通过第一数据分布网络80(和/或第一数据分布网络80A,在图4中示出且下文参考图4进行论述)彼此耦合。第一数据分布网络80、80A用于数据传送和其它通信,例如用于从存储器电路25进行的通过通信接口45的数据传送,例如用于读取和获得映射数据和内核数据,以及用于从MM处理器电路200和一或多个MM加速器电路100进行的用于存储在存储器电路25中的数据传送,也经由通信接口45。第一数据分布网络80还用于一或多个MM加速器电路100之间或之中的数据传送,且任选地用于MM处理器电路200与一或多个MM加速器电路100之间或之中的数据传送。第一数据分布网络80、80A可以实施一或多个优先级协议以确定在何时以及以何种顺序传送哪些数据,例如其中各个组件对于数据传输或接收具有更高优先级的循环协议或阶层式优先级,例如向MAC电路190提供更高优先级,接着是作为下一优先级的MAX电路130,接着是作为下一优先级的来自存储器电路25的加载操作等,并且任何和所有此类变化被视为等效的且在本公开的范围内。在代表性实施例中,MM处理器电路200任选地还可以具有用于与一或多个MM加速器电路100进行数据和控制通信的单独的控制总线或网络195。在另一代表性实施例中,第一数据分布网络80还可以与下文论述的第二数据访问网络110组合,作为图4中示出的第一数据分布网络80A。当未实施单独的控制总线195时,还可以经由第一数据分布网络80和第二数据访问网络110和/或第一数据分布网络80A分布控制信息,任何和所有此类变化被视为等效的且在本公开的范围内。
图2是在推理引擎电路架构50的代表性实施例中使用的映射数据或内核数据128的三维体积的示意图。推理引擎电路架构50实施“张量”构造,其中数据操作可以跨不连续数据的三维体积实行,而不仅仅跨一系列相邻的数据向量实行。MM处理器电路200和/或MM加速器电路100的张量解码器250可以处理单个指令以读取这样的数据量,张量144,给定开始地址132、深度134(用于以“深度第一”模式获得数据)、从第一数据平面151的第二或结束地址136到第二或下一数据平面152的下一非连续的数据开始地址140的跨距138且继续到最后或结束地址142,引入所选择张量144的映射数据或内核数据的多个平面151、152和153,如图2所示。应注意,从地址146行进到148的跨距与跨距138相同。例如,张量数据的这种使用有助于减少或最小化从存储器电路25获得数据的带宽要求。如图2所示,张量144的长度包括每个此类数据平面中所有数据的组合长度,即从张量144的第一数据平面151的开始地址132到最后或结束地址136的所有数据向量的长度,加上从张量144的第二数据平面152的开始地址140到最后或结束地址146的所有数据向量的长度,加上从张量144的第三数据平面153的开始地址148到最后或结束地址142的所有数据向量的长度。
图3是具有多个矩阵-向量(MV)加速器电路115和至少一个MAX电路130的MM加速器电路100的代表性第一实施例的框图。图4是具有多个MV加速器电路和至少一个MAX电路130的MM加速器电路100A的代表性第二实施例的框图。MM加速器电路100、100A的第一实施例和第二实施例的不同之处仅在于,在MM加速器电路100A中,第一数据分布网络80的功能性和第二数据访问网络110的功能性已组合成单个第一数据分布网络80A,其功能与如上文所描述的单独的第一数据分布网络80相同、与下文所描述的第二数据访问网络110的功能性组合。替代地,还如图3和4所示,作为第三实施例,MM加速器电路100B还可以被视为仅包括多个MV加速器电路115的阵列102,若情况如此,则推理引擎电路架构50将被视为对于MM加速器电路100、100A包括且包含图3和4中所示的其它组件(105、185、110或80A、205、120、125、130)。
如图3和4中所示,MM加速器电路100包含MAX电路130和“N个”MV加速器电路115,示出为MV加速器电路1151、MV加速器电路1152到MV加速器电路115N。每个MM加速器电路100经构造以或适用于使用多个MV加速器电路115来实行第一矩阵(“A”)与另一第二矩阵(“B”)的完整乘法运算(C=A*B),每个MV加速器电路经构造以或适用于实行第一矩阵与包括第二矩阵的一个向量的完整乘法运算(c=A*b)。MAX电路130由多个比较器280(在图9示出)构成,并且用于获得所比较的操作数的最大值,以便实施CNN的最大池化操作作为MM加速器电路100的功能的一部分。
MV加速器电路115彼此耦合且通过第二数据访问网络110(或第一数据分布网络80A)耦合到映射(操作数数据)缓冲器(或其它存储器或寄存器)105,并且每个MV加速器电路115可访问存储在映射缓冲器105中的所有映射数据。映射缓冲器105可以实施为任何类型的缓冲器、存储器或寄存器,并且存储映射数据,所述映射数据可能已从存储器电路25获得或可能具有已存储作为来自各种MAC电路190和/或MAX电路130的计算结果的其它映射数据。映射缓冲器105通常划分为单独的存储体(未单独示出),其可以由第二数据访问网络110(或第一数据分布网络80A)的物理链路单独访问。在代表性实施例中,映射缓冲器105实施双缓冲,示出为映射缓冲器105A和映射缓冲器105B,因此可以将数据预取或写入到映射缓冲器105的第一部分,如映射缓冲器105A,而从映射缓冲器105的第二部分读取数据,如映射缓冲器105B,反之亦然,从而减少获得用于计算或其它处理的映射数据的延迟。在此类实施例中,MV加速器电路115将在双缓冲映射缓冲器105的映射缓冲器105A与映射缓冲器105B之间交替或“乒乓”,以获得或存储对应的映射数据。
另外,第二数据访问网络110(以双倍数据速率(DDR)操作)通常还实行上述用于第一数据分布网络80的功能,所述网络也用作数据高速公路、实施优先级协议、控制数据负载和带宽、收集数据以写入到存储器电路25的一或多个数据向量,以及控制针对映射缓冲器105和内核缓冲器125的读取操作和写入操作。
每个MV加速器电路115还经由第三串行网络120耦合以分离内核(权重)缓冲器(或其它存储器或寄存器)125,其示出为经由第三串行网络1201耦合到MV加速器电路1151的内核缓冲器1251、经由第三串行网络1202耦合到MV加速器电路1152的内核缓冲器1252到经由第三串行网络120N耦合到MV加速器电路115N的内核缓冲器125N。下文参考图5更详细地论述第三串行网络120。内核缓冲器125可以实施为任何类型的缓冲器、存储器或寄存器,并且各自存储可能已从存储器电路25获得的内核(权重)数据。内核缓冲器125也可以实施双缓冲,如先前所描述,因此可以将内核(权重)数据预取或写入到内核缓冲器125的第一部分,如内核缓冲器125A,而从内核缓冲器125的第二部分读取内核(权重)数据,如内核缓冲器125B,反之亦然,同样减少获得用于计算和其它处理的内核(权重)数据的延迟(示出为内核缓冲器125A1、内核缓冲器125B1、内核缓冲器125A2、内核缓冲器125B2到内核缓冲器125AN和内核缓冲器125BN)。对于此代表性实施例,每个MV加速器电路115可访问其经由第三串行网络120耦合到的对应内核缓冲器125的内核(权重)数据,例如MV加速器电路1151仅经由对应第三串行网络1201访问对应内核缓冲器1251中的内核数据。在第一模式中,每个内核缓冲器125包含用于各种计算的不同内核(权重)数据(使用相同的映射数据),而在第二模式中,每个内核缓冲器125包含用于各种计算的相同内核(权重)数据(使用不同的映射数据或相同的映射数据的不同部分)。因此,在MV加速器电路115实行的乘法处理中,映射缓冲器105的所有相关映射数据将与保存在内核缓冲器125中的所有不同内核(权重)数据相乘,而不会重复计算,例如通过不重复映射数据与MV加速器电路115中的已由另一MV加速器电路115利用的相同内核数据的乘法运算。
已使用映射缓冲器105(其对于MV加速器电路115是全局的)和单独的内核缓冲器125实现推理引擎电路架构50的更高性能,每个内核缓冲器特定于单个MV加速器电路115(包含其VV加速器电路150的阵列)。
在代表性实施例中,第二数据访问网络110包括纵横开关205以及任何所选择总线结构,其可以多种方式中的任一种(例如,例如但不限于作为折叠式CLOS配置)体现,任何和所有方式被视为等效的且在本公开的范围内。第二数据访问网络110和/或第一数据分布网络80A为每个MV加速器电路115的每个向量-向量(VV)加速器电路150提供对整个映射缓冲器105中的所有映射数据的完整读取(加载)和写入(存储)访问。例如,每个MV加速器电路115的每个VV加速器电路150具有其自身的经由第二数据访问网络110(或第一数据分布网络80A)到映射缓冲器105的存储器存储体的物理链路。为了避免冲突,例如但不限于,映射缓冲器仲裁器电路185被包含作为单独的组件或包含在第二数据访问网络110和/或第一数据分布网络80A内,或替代地包含在映射缓冲器105内。如上文所提及,在第二代表性实施例中,第一数据分布网络80A包含第二数据访问网络110的功能性,使得在所有VV加速器电路150与映射缓冲器105之间实施纵横开关205,并且包含映射缓冲器仲裁器电路185(例如,例如但不限于单独地包含,或在第一数据分布网络80A内包含,或在映射缓冲器105内包含,或更一般地在MM加速器电路100、100A内包含),并且任何和所有此类变化被视为等效的且在本公开的范围内。
还应注意,当实施第一数据分布网络80A时,将第一数据分布网络80和第二数据访问网络110的功能性组合到第一数据分布网络80A中,然后第三串行网络120可以等效地称为第二串行网络120或更简单地称为串行网络120。
每个MV加速器电路115还耦合到MM处理器电路200,以接收控制信息,例如以确定MV加速器电路115和/或VV加速器电路150的操作模式。如下文更详细地论述,在第一实施例中,MM处理器电路200包含张量解码器电路250。在第二代表性实施例中,在图4中示出,例如但不限于,每个MM加速器电路100包含单独的张量解码器电路250(其随后不再包含于MM处理器电路200内),使得可以在推理引擎电路架构50内实施并分布多个张量解码器电路250。在未单独示出的另一代表性实施例中,同样例如但不限于,也可以在推理引擎电路架构50内复制并分布MM处理器电路200的其它组件(例如,下文论述的操作数收集器260或模式控制电路255),使得每个MM加速器电路100包含单独的此类组件(其随后不再包含于MM处理器电路200内)。任何和所有此类变化被视为等效的且在本公开的范围内。
还应注意,对于MM加速器电路100、100A的这些各种第一实施例和第二实施例(或第三实施例)中的任一者,各种组件可以多种方式被聚集或被包含或不被包含,每种方式被视为等效的且在本公开的范围内。例如但不限于,作为另一替代方案,MM加速器电路100、100A可以被视为包括多个MV加速器电路115的阵列和至少一个MAX电路130,其中所有其它组件(例如,映射缓冲器105、内核缓冲器125、第二数据访问网络110、张量解码器电路250等)被视为例如系统50等较大“集群”电路配置的一部分。同样例如但不限于,作为另一替代方案,MV加速器电路115可以被视为包括多个VV加速器电路150的阵列和至少一个MAX电路130,其中所有其它组件(例如,映射缓冲器105、内核缓冲器125、第二数据访问网络110、张量解码器电路250等)被视为例如MM加速器电路100等较大“集群”电路配置的一部分。任何和所有这些各种组合和排列被视为等效的且在本公开的范围内。
图5是具有多个向量-向量(VV)加速器电路150的阵列104的矩阵-向量(MV)加速器电路115的代表性实施例的框图,所述VV加速器电路示出为VV加速器电路1501、VV加速器电路1502、VV加速器电路1503到VV加速器电路150N。每个VV加速器电路150彼此耦合且通过第二数据访问网络110和/或第一数据分布网络80A耦合到映射(操作数数据)缓冲器(或其它存储器或寄存器)105,并且每个VV加速器电路150可访问存储在映射缓冲器105中的所有映射数据,如上文所描述。随着每个MM加速器电路100经构造以或适用于使用多个MV加速器电路115来实行第一矩阵与另一第二矩阵的完整乘法运算以产生所得矩阵“C”(C=A*B)并且所选择MM加速器电路100的每个MV加速器电路115经构造以或适用于实行第一矩阵与包括第二矩阵的一个向量的完整乘法运算(c=A*b),继而所选择MV加速器电路115的每个VV加速器电路150经构造以或适用于实行一或包括第一矩阵的向量与包括第二矩阵的向量的完整乘法运算(c=a*b)。
除了实行向量乘法运算之外,VV加速器电路150(形成MV加速器电路115)的阵列可以经由分段线性近似实施任何数值函数,并且还提供计数、指针和分组操作,例如求平均、计算最小值和最大值。例如但不限于,这些VV加速器电路150提供计算几乎任何神经网络层所需的所有原子操作。
单个MV加速器电路115的每个VV加速器电路150还经由对应第三串行网络120耦合到对应内核(权重)缓冲器(或其它存储器或寄存器)125,如上文所提及。例如通过使用缓冲器(驱动器、放大器或其它数据传送)电路285(例如但不限于)将来自内核(权重)缓冲器125的内核(权重)数据传送到第一VV加速器电路1501,接着循序传送到下一VV加速器电路1502,以此类推,其中内核(权重)数据在几个时钟周期内通过第三串行网络120传播到给定MV加速器电路115的所有VV加速器电路150。第三串行网络120的这一用途显著提高效率,而不显著增加延迟,并且进一步减小形成第三串行网络120的总线结构的大小(面积)、功耗和扇出(fanout),特别是与将内核数据并行提供到MV加速器电路115所有VV加速器电路150或整个MM加速器电路100的任何网络或总线结构相比。如上文所提及,当实施第一数据分布网络80A时,第三串行网络120可以等效地称为第二串行网络120或更简单地称为串行网络120。例如,如果这些通信网络或总线中的任一者被称为第一、第二或第三,则它们是不相关的。确切地说,重要的是单独的串行网络120用于将每个VV加速器电路150耦合到对应的内核(权重)缓冲器125,而更全局的网络(第一数据分布网络80和第二数据访问网络110或第一数据分布网络80A)用于将VV加速器电路150耦合到映射缓冲器105以用于更全局地共享映射数据。
每个VV加速器电路150还耦合到MM处理器电路200或张量解码器电路250以接收控制信息,以便使用模式控制字、例如经由如图所示的控制总线195或经由第一数据分布网络80、80A和/或第二数据访问网络110确定VV加速器电路150的操作模式。如下文更详细地论述,这些操作模式包含独立模式、协作模式和数种组合式或混合式协作和独立模式,这些模式中的每一者生成来自每个VV加速器电路150的输出的不同序列。
图6是具有多个乘法和累加(MAC)电路190的阵列106的VV加速器电路150的代表性实施例的框图,所述MAC电路示出为MAC电路1901、MAC电路1902到MAC电路190N。每个MAC电路190包括乘法器145、第一加法器155和任选地第一控制多路复用器(“MUX”)160。乘法器145将来自映射缓冲器105的映射数据(作为第一字)与来自对应内核缓冲器125的对应内核(权重)数据(作为第二字)相乘,并且将中间乘积作为第一输入(156)提供到第一加法器155作为其输出。第一加法器155继而将所述中间乘积与第二输入(158)相加,所述第二输入(158)是来自第一控制MUX 160的输出,并且将所得和提供作为第一(或下一)累加和。第一控制MUX 160接收第一偏置参数(其可以来自寄存器165(如图所示)或经由第二数据访问网络110和/或第一数据分布网络80A(未单独示出)提供)作为第一输入(162),并且接收第一(或下一)累加和的反馈作为第二输入(164)。第一偏置参数例如可以是用于归一化所得数据的参数或其它值(例如,恒定值或变量值)。提供第一(或下一)累加和的反馈以供第一加法器155实行进行中的累加,将第一(或下一)累加和与从乘法器145接收到的当前乘积相加,以产生下一累加和。在由张量解码器电路250和/或MM处理器电路200提供的第一模式控制字的控制下,这两个输入(162或164)中的一者,即第一偏置参数或第一(或下一)累加和,被第一控制MUX 160选择为第一加法器155的第二输入(158),所述第一加法器将所述输入与从乘法器145接收到的当前乘积相加以产生下一累加和,所述下一累加和是移位寄存器170的输出(166)。替代地,在第一加法器155将不会将任何值与当前乘积相加的情况下,第一偏置参数或第二输入(158)可以设定为零,并且被选择为第一加法器155的第二输入。并且替代地,在第一加法器155将不会选择性地将偏置参数与当前乘积相加的情况下,任选地,可以省略第一控制MUX 160,其中第一(或下一)累加和的反馈直接提供作为第一加法器155的输入以用于进行中的累加。
移位寄存器170从每个MAC电路190接收此类累加和输出(166),并且循序地移位这些输出以将其提供为第二归约加法器175的一或多个第一输入(172)。归约加法器175继而将来自MAC电路190的累加和输出(经由移位寄存器170提供)与归约加法器175的第二输入(174)相加,所述第二输入(174)是来自第二控制多路复用器(“MUX”)180的输出,以提供第二(或下一)累加和。第二控制MUX 180还接收第二偏置参数(其可以来自寄存器168(如图所示)或经由第二数据访问网络110和/或第一数据分布网络80A(未单独示出)提供)作为第一输入(176),并且接收第二(或下一)累加和的反馈作为第二输入(178)。第二偏置参数例如可以是用于归一化所得数据的参数或其它值(例如,恒定值或变量值),并且可以与第一偏置参数相同或不同。提供第二(或下一)累加和的反馈以供归约加法器175实行进行中的累加,例如跨所有或一些MAC电路190,将第二(或下一)累加和与经由移位寄存器170提供的来自MAC电路190的当前输出相加。在由张量解码器电路250和/或MM处理器电路200提供的第二模式控制字的控制下,这两个输入(176、178)中的一者,即第二偏置参数或第二(或下一)累加和,被第二控制MUX 180选择为归约加法器175的第二输入。归约加法器175将所选择第二输入与从移位寄存器170接收到的当前累加和相加以产生第二(或下一)累加和,所述累加和可以提供作为来自VV加速器电路150的输出184(例如但不限于,提供到第二数据访问网络110和/或第一数据分布网络80A(例如用于存储在存储器25或映射缓冲器105中),或提供到另一线性或非线性计算电路182,或提供到另一MAC电路190或MAX电路130(例如用于进行最大池化))或所述累加和可以通过第二控制MUX 180反馈以用于进行中的累加,以产生下一累加和。替代地,在将不会将任何值与来自MAC电路190的累加和输出相加的情况下,第二偏置参数或第二输入(174)可以设定为零,并且被选择为归约加法器175的第二输入。所属领域的技术人员将认识到,当提供多个输出时,可跨此类输出依次且迭代地实行多个乘法和累加运算,最终获得矩阵与另一矩阵的完整乘法运算。
应注意,在代表性实施例中,第一控制多路复用器(MUX)160或第二控制多路复用器(MUX)180中的至少一者包含于VV加速器电路150中。例如,第一控制MUX 160可以是任选的,并且可以取决于所选择或所要实施的控制的粒度而包含于或不包含于MAC电路190中,如下文更详细地描述。并且,例如,当包含第一控制MUX 160时,第二控制MUX 180可以是任选的,反之亦然。
还应注意,取决于说明书内的描述和排序,第二控制MUX 180可以被称为第一控制MUX 180,并且第一控制MUX 160可以被称为第二控制MUX 160。例如,当第一控制MUX 160是任选的时,第二控制MUX 180随后通常被称为第一控制MUX 180或更简单地被称为控制MUX180。这些多路复用器160、180中的任一者被称为第一还是第二在很大程度上是不相关的;相反,重要的是,可选地,控制MUX 180耦合到归约加法器175,而控制MUX 160耦合到第一加法器155。
在另一代表性实施例中,第一控制多路复用器(MUX)160和第二控制多路复用器(MUX)180均包含于VV加速器电路150中。对于此类代表性实施例,每个VV加速器电路150的第一控制多路复用器160和第二控制多路复用器180还耦合到张量解码器电路250和/或MM处理器电路200以分别接收第一模式控制字和第二模式控制字,其确定VV加速器电路150的操作模式。在另一代表性实施例中,仅控制MUX 180包含于VV加速器电路150中。
对于这些各种实施例中的任一者,VV加速器电路150的这些操作模式可以包含:
(1)独立模式,其中每个MAC电路190将对应的第一(或下一)累加和作为完整结果提供到移位寄存器170,然后每个结果可以由归约加法器175修改到一定程度与第二偏置参数相加(或者不相加,若此类偏置参数已被第一加法器155作为第一偏置参数相加的话,或者若没有包含偏置参数的话)。在代表性实例中,但不限于,当在VV加速器电路150中实施十六个MAC电路190时,此类第二(或第一)模式控制字可以是例如但不限于[1111111111111111],例如选择由归约加法器175将第二偏置参数与每个第一(或下一)累加和相加,累加结果随后提供作为来自VV加速器电路150的十六个依次输出。
(2)协作模式,其中每个MAC电路190将第一(或下一)累加和提供作为移位寄存器170的对应部分结果。在归约加法器175的第一周期中,将第一此类部分结果与第二偏置参数(若存在)相加以提供第二(或下一)累加和,并且在依次周期中,每个依次的第二(或下一)累加和被选择为通过第二控制多路复用器(MUX)180反馈,然后由归约加法器175依次与移位寄存器170提供的当前第二(或下一)累加和相加,由此提供单个整体累加结果作为来自VV加速器电路150的单个输出。并且在代表性实例中,但不限于,当在VV加速器电路150中实施十六个MAC电路190时,此类第二模式控制字可以是[1000000000000000],选择在第一周期中由归约加法器175将第二偏置参数与第一(或下一)累加和相加,随后选择第二(或下一)累加和的依次反馈,然后由归约加法器175依次将所述累加和与移位寄存器170提供的当前第二(或下一)累加和相加,从而产生提供作为来自VV加速器电路150的单个输出的单个整体累加结果。
(3)数种组合式、混合式或中间协作和独立模式中的任一种,这些模式中的每一者以不同程度的累加生成来自每个VV加速器电路150的输出的不同序列。继续所述实例,但不限于,当在VV加速器电路150中实施十六个MAC电路190时,可以选择不同组的MAC电路190以协作模式操作,独立于各自以自身的协作模式共同操作的其它组的MAC电路190,从而允许选择:
(A)选择单个输出(完全协作模式,其中第二(或第一)模式控制字例如但不限于[1000000000000000]),如上文所论述;
(B)选择16个单独输出(完全独立模式,其中第二(或第一)模式控制字例如但不限于[1111111111111111]);
(C)选择两个输出(第一中间协作和独立模式),其中选择两组八个MAC电路190,所述电路在一组内以协作模式起作用,但每个组本身独立于另一组操作(其中第二模式控制字例如但不限于[1000000010000000]);
(D)选择四个输出(第二中间协作和独立模式),其中选择四组四个MAC电路190,所述电路也在一组内以协作模式起作用,但每个组本身独立于另一组操作(其中第二模式控制字例如但不限于[1000100010001000]);以及
(E)选择八个输出(第三中间协作和独立模式),其中选择八组两个MAC电路190,所述电路也在一组内以协作模式起作用,但每个组本身独立于另一组操作(其中第二模式控制字例如[1010101010101010])。
所属领域的技术人员将认识到,取决于所实施的MAC电路190的数目,组合式、混合式或中间协作和独立模式的其它组合是可用的。所属领域的技术人员还将认识到,对于这些操作模式中的任一者,可由第一加法器155单独地将任何偏置参数相加。另外,还使用MAC电路190的第一控制MUX 160来提供额外控制,还可以选择MAC电路中的每一者来反馈第一(或下一)累加和以用于与乘积相加,还实现每个MAC电路190的显著累加,例如在成百上千个指令或周期内。这对于保持高分辨率特别有帮助,因为如果中间结果必须存储到存储器25(例如,将32位的累加减少到仅16位的存储),则一些位和分辨率可能会丢失。任何和所有这些选择、实施方案或组合被视为等效的且在本公开的范围内。
另外,使用这些不同的操作模式,可以不同的组合利用不同种类的并行性。例如,对于跨内核的并行性(内核间并行性),完全独立模式以及中间协作和独立模式可能更高效。推理引擎电路架构50的MM加速器电路100架构允许完全利用任何类型的相关并行性。例如,VV加速器电路150的MAC电路190可以共享映射数据(映射内并行性)和内核数据(激活内并行性)两者,用于在协作模式中提供一个输出。并且,例如,VV加速器电路150的MAC电路190可以共享映射数据(映射内并行性)并且利用不同的内核数据(激活间并行性),用于在独立模式中提供多个输出。并且,例如,VV加速器电路150的MAC电路190可以利用不同的映射数据并且共享内核数据,还用于在独立模式中提供多个输出。并且,例如,VV加速器电路150的MAC电路190可以共享映射数据的不同部分(例如,不同映射层中的相同像素位置)并且利用不同的内核数据,还用于在协作模式中提供一个输出。关于推理引擎电路架构50,所有这些类型的并行性利用都是可能的。
再次参考图3和4,MM加速器电路100或映射缓冲器105或第二数据访问网络110(或第一数据分布网络80A)包含映射缓冲器仲裁器电路185。映射缓冲器仲裁器电路185提供用于映射缓冲器105的请求响应机制。映射缓冲器仲裁器电路185从操作数收集器260(下文论述)和张量解码器电路250的各种解码器接收地址。使用接收到的地址,映射缓冲器仲裁器电路185从映射缓冲器105的适当存储体获得所请求数据,接着将所请求数据(经由第二数据访问网络110(或第一数据分布网络80A))转发到操作数收集器260或转发到适当的MAC电路190或MAX电路130。映射缓冲器仲裁器电路185通常包括状态机和控制逻辑电路290以及各种寄存器270,下文参考图8示出和论述。由于各种传入请求在访问映射缓冲器105时可能会彼此发生冲突,因此这些请求可存储在寄存器270中,并且由状态机和控制逻辑电路290解决(仲裁)冲突(例如,例如但不限于实施循环协议),使得所有的各种数据请求都被满足或得到满足。
图7是MM处理器电路200的代表性实施例的框图。MM处理器电路200的代表性实施例包括张量解码器电路250和控制核心275(也被称为“管线”控制器或处理器275)。MM处理器电路200的另一代表性实施例包括控制核心275,并且如上文所提及,在此类实施例中,张量解码器电路250不包含于MM处理器电路200内。替代地,多个张量解码器电路250分布在整个推理引擎电路架构50中,例如为每个MM加速器电路100提供张量解码器电路250或在每个MM加速器电路中提供张量解码器电路,如图4中所示。然而,张量解码器电路250的功能相同,而不管张量解码器电路250在MM加速器电路100或MM处理器电路200内或推理引擎电路架构50内的其它地方的位置如何。
由于推理引擎电路架构50接收用于执行或其它处理的指令,因此这些指令通过提取电路230提供到控制核心275或由所述控制核心提取,且使用解码器电路235解码为一种类型的指令。通过调度电路240将用于由MM加速器电路100执行的任何张量指令(用于运行张量操作)或向量指令(用于在MM加速器电路100中预加载向量数据和加载配置)提供到张量指令缓冲器238且在所述张量指令缓冲器中进行排队。不用于MM加速器电路100的其它指令(例如,用于元数据操控和簿记的标量指令)被调度以由控制核心275(调度电路240)执行,并且随后可由控制核心275执行,例如使用执行(或处理器)核心245。
例如,解码器电路235将确定标量指令是否具有任何数据相依性,且如果具有,则将保存指令直到相依性解析为止。解码器电路235还将用以使将离开VV加速器电路150(MV加速器电路115)的指令同步。控制核心275内的一或多个标量寄存器242包含用以保存各种元数据的寄存器,以便操控或添加到各种地址。标量寄存器242还可用于一般目的,例如用于计算的中间结果暂存器,且用于任何特定功能,例如用于调度阶段中的地址操控。
调度电路240接收经解码或部分地经解码的指令。调度电路240还针对映射缓冲器105和内核缓冲器125两者进行数据依赖性检查,例如检查写入后读取操作(例如,如果加载操作未完成,将暂停MAC电路190)。调度电路240还收集任何元数据,所述元数据将发送到适当的执行单元(执行(或处理器)核心245、VV加速器电路150或MV加速器电路115)。
例如但不限于,无论是位于各种MM加速器电路100内还是位于MM处理器电路200内,张量解码器电路250都经构造以或适用于从控制核心275分流大量的处理工作,从而使得控制核心275能够执行其它指令并实行其它计算,尤其是当MM加速器电路100可能涉及发生在成百上千个周期内的计算时。例如,控制核心275可以生成到张量解码器电路250的基地址,所述张量解码器电路接着将计算所有寻址以将数据移入或移出MM加速器电路100中和/或在存储器电路25与MM加速器电路100之间移动数据。张量解码器电路250从张量缓冲器238接收张量指令,例如用于由MAC电路190执行的指令(MAC指令)、用于由MAX电路130执行的指令(MAX指令),以及用以将数据移入或移出MM加速器电路100的指令(张量数据移动和向量数据移动指令),以便将数据移入或移出存储器电路25以及移入或移出MAC电路190或MAX电路130中的任一者。
张量解码器电路250包括MAC解码器电路210、MAX解码器电路215、向量数据移动(“VMOV”)解码器电路220、张量数据移动(“TMOV”)解码器电路225、操作数收集器260以及模式控制电路255。这些组件中的每一者具有相同的通用电路结构,在图8中示出。图8是映射缓冲器仲裁器电路185以及张量解码器电路250的解码器电路210、215、220、225和模式控制电路255以及操作数收集器电路260的代表性实施例的框图。映射缓冲器仲裁器电路185、解码器电路210、215、220、225和模式控制电路255以及操作数收集器电路260中的每一者通常包括状态机和控制逻辑电路290,其经构造以或适用于实行特定组件和寄存器270的功能以存储各种数据,例如地址。另外,解码器电路210、215、220、225还通常包括用于计算并生成地址的地址生成器电路265,所述地址用于获得数据或将数据存储在存储器电路25、映射缓冲器105或内核缓冲器125中的任一者中。
在操作中,VMOV解码器电路220生成并保存地址,直到存储器25可准备好接收数据请求为止。类似于MAC解码器电路210,TMOV解码器电路225检查用于数据移动的物理资源的可用性,并且进行检查以避免数据冲突,例如读取后写入依赖性。TMOV解码器电路225生成并保存用于映射缓冲器105与存储器电路25之间以及MM加速器电路100之间和之中的数据移动的地址。例如,TMOV解码器电路225可以在等待存储器电路25可用时缓冲数据。使用VMOV解码器电路220和TMOV解码器电路225,可以从控制核心275分流用于数据移动的地址生成,所述控制核心接着可自由地实行其它操作。
MAC解码器电路210确定张量缓冲器238上的顶部指令是否是MAC指令,如果不是,则等待MAC指令出现在张量缓冲器238中。当获得MAC指令时,使用状态机和控制逻辑电路290,MAC解码器电路210随后确定MAC指令是否具有资源约束,例如一些VV加速器电路150使用的到映射缓冲器105的物理链路是否已被其它活动占用,例如MAX指令、VMOV指令或TMOV指令的活动。如果这些链路被占用,则MAC解码器电路210等待直到那些链路空闲,以避免链路冲突。如果这些链路未被占用,则MAC解码器电路210从张量缓冲器238获取MAC指令并开始执行所述指令。使用状态机和控制逻辑电路290,MAC解码器电路210还确保有足够的(例如,16个周期)延迟可用于将数据写回映射缓冲器105,例如移位寄存器170和归约加法器175可能需要的延迟。如果剩余一些周期,则其暂停新张量指令。MAC解码器电路210还确保VV加速器电路150在当前张量指令中没有同时寻址与先前张量指令相同的映射缓冲器105的存储器存储体,以避免存储体冲突。使用状态机和控制逻辑电路290和地址生成电路265,MAC解码器电路210通过输出从基地址(例如,132)开始并发生递增(包含任何跨距138增量)直到当前地址等于基地址加上张量长度(加上可能是张量144的一部分的非连续数据的任何跨距138增量)的地址来执行,示出为用于图2中示出且参考图2论述的张量长度的最后或结束地址142,并将这些输出地址提供到操作数收集器260(当操作数收集器260准备就绪时)。MAX解码器电路215的功能与MAC解码器电路210相同,对于适用于MAX电路130的指令的确如此。
操作数收集器电路260从MAC解码器电路210接收地址并且将这些地址传送到映射缓冲器仲裁器电路185(或映射缓冲器105)且传送到内核缓冲器125。映射缓冲器105和内核缓冲器125接着将所请求数据传送到操作数收集器电路260,所述操作数收集器电路接着基于计算模式适当地将数据供应到VV加速器电路150(MV加速器电路115),如上文所论述(例如,例如但不限于,共享的映射数据、不同的内核数据等)。
更具体地说,操作数收集器电路260从MAC解码器电路210接收地址。基于所选择操作模式(例如,独立模式(例如,来自VV加速器电路150的16个输出)、协作模式(例如,来自VV加速器电路150的单个输出),或混合式独立/协作模式(例如,选自VV加速器电路150的2个、4个或8个输出)),操作数收集器电路260确保事务为命中,即数据在映射缓冲器105或内核缓冲器125中。如果数据不可用,则操作数收集器电路260将暂停消息或标志发送到MAC解码器电路210,直到接收到数据为止。此类暂停取决于操作模式。例如,在独立模式中,暂停取决于向量内的字地址,并且对于协作模式,不会遇到暂停。当获得数据时(在命中之后或者若数据是在未命中之后接收到的),数据被缓冲(例如,在寄存器270中),并且所述数据的适当量或分组随后被传送到VV加速器电路150(MV加速器电路115)。在独立模式中,在将数据发送到VV加速器电路150(MV加速器电路115)之前,可以移位出一些不必要的字。操作数收集器电路260还可以缓冲与映射数据或内核数据一起发送到协作模式的操作元数据。
模式控制电路255是任选的,并且在代表性实施例中,用于保存模式控制字(如上文所描述)并经由第二数据访问网络110和/或第一数据分布网络80A或经由控制总线195将其分布到VV加速器电路150(MV加速器电路115)的第一控制MUX 160和/或第二控制MUX180。待实施的模式通常由用户选择,并且可以例如但不限于在编译时间实施。当不包含模式控制电路255时,存储和/或分布模式控制字的功能可以由张量解码器电路250或控制核心275的其它组件来实行。
图9是MAX电路130的代表性实施例的框图,并且出于完整性而示出。MAX电路130由多个比较器280构成,并且用于获得所比较的操作数的最大值,以便实施CNN的最大池化操作。操作数被输入(输入282)(经由第二数据访问网络110和/或第一数据分布网络80A)并与第二输入(284)(例如,对于第一比较周期,第二输入可以初始化为零)进行比较,其中当前最高值(或最大值)被反馈(输入284)用于进行中的比较,直到已获得并输出(286)最大值。
图10是使用推理引擎电路架构或系统50实行矩阵乘法运算的方法的代表性实施例的流程图,并且提供有用的概述。应注意,图10中示出的各个步骤可以各种次序发生,且所有此类变化被视为等效的且在本公开的范围内。从开始步骤300开始,在步骤305中,例如在编译时间选择操作模式。如上文所论述,在步骤310中,获得映射数据,在步骤315中,获得内核数据,在步骤320中,获得第一控制字和/或第二控制字。在步骤325中,使用乘法器电路145将映射数据与内核数据相乘以生成乘积。在步骤330中,当第一控制字指示将加上第一偏置参数时,在步骤335中使用第一加法器电路155将第一偏置参数与乘积相加,并且方法进行到步骤350。在步骤330中,当第一控制字不指示将加上第一偏置参数时,所述方法在步骤340中确定第一控制字是否指示即将发生累加。当在步骤340中即将发生累加时,在步骤345中,使用第一加法器电路155将乘积与第一(或下一)累加和相加以生成下一累加和。在步骤350中,当累加将继续时,所述方法返回到步骤345并进行迭代。在步骤350中,当累加将不继续时,所述方法在步骤355中例如经由移位寄存器170将第一或下一累加和提供到归约加法器电路175。
在步骤360中,当第二控制字指示将加上第二偏置参数时,在步骤365中使用归约加法器175将第二偏置参数与第一或下一累加和相加,并且所述方法进行到步骤380。在步骤360中,当第二控制字不指示将加上第二偏置参数时,所述方法在步骤370中确定第二控制字是否指示即将发生累加。当在步骤370中即将发生累加时,在步骤375中,使用归约加法器电路175将第一或下一累加和与下一累加和相加以生成第二或下一累加和。在步骤380中,当累加将继续时,所述方法返回到步骤375并进行迭代。在步骤380中,当累加将不继续时,所述方法在步骤385中提供第二或下一累加和作为输出结果,并且所述方法可以结束并返回步骤390。
代表性实施例的许多优点是显而易见的。例如但不限于,代表性推理引擎电路架构50提供能够为CNN应用程序,为例如人工智能、机器学习、图像识别等应用程序和需要数学计算的其它推理应用程序,提供高性能的计算架构。推理引擎电路架构(系统)50具有相对高的效率,含显著的利用率(约95%),并且具有相对低的带宽用于访问存储映射数据和内核数据的任何存储器集成电路。推理引擎电路架构50能够实行完整的逐矩阵乘法运算。
推理引擎电路架构50在大多数深度神经网络层中达到99.9%的效率,从而去除死硅或暗硅并充分利用每瓦的功率。在多个VV加速器电路150处,推理引擎电路架构50可以提供比脉动阵列更容易的缩放。除了MV加速器电路115之外,推理引擎电路架构50可以与MM加速器电路100一起缩放,如图1中所示。
如本文所使用,“处理器”75或控制核心275可以是任何类型的处理器或控制器,并且可体现为一或多个处理器75、275,所述一或多个处理器经配置、设计、编程或以其它方式适用于实行本文所论述的功能性。作为本文中使用的术语处理器或控制器,处理器75可以包含使用单个集成电路(“IC”),或可以包含使用多个集成电路或其它连接、布置或分组在一起的组件,例如控制器、微处理器、数字信号处理器(“DSP”)、阵列处理器、图形或图像处理器、并行处理器、多核处理器、定制IC、专用集成电路(“ASIC”)、现场可编程门阵列(“FPGA”)、自适应计算IC、相关联存储器(例如,RAM、DRAM和ROM),以及其它IC和组件(不管是模拟的还是数字的)。因此,如本文中所使用,术语处理器或控制器应理解为等效地意指和包含单个IC,或定制IC、ASIC、处理器、微处理器、控制器、FPGA、自适应计算IC的布置,或与相关联存储器一起实行本文中所论述的功能的集成电路的一些其它分组,所述相关联存储器例如微处理器存储器或额外RAM、DRAM、SDRAM、SRAM、MRAM、ROM、FLASH、EPROM或E2PROM。具有相关存储器的处理器75或控制核心275可以经适配或配置(经由编程、FPGA互连或硬布线)以实行本发明的方法,如本文所论述。例如,所述方法可以经编程并存储在处理器75或控制核心275及其相关联存储器(和/或存储器25)和其它等效组件中,作为一组程序指令或其它代码(或等效配置或其它程序),以供处理器75或控制核心275操作时(即,通电并起作用)后续执行。等效地,当处理器75或控制核心275可整体或部分地实施为FPGA、定制IC和/或ASIC时,FPGA、定制IC或ASIC还可经设计、配置和/或硬接线以实施本发明的方法。例如,处理器75或控制核心275可以实施为模拟和/或数字电路、控制器、微处理器、DSP和/或ASIC的布置,统称为“处理器”或“控制器”,它们分别经硬接线、编程、设计、适配或配置以实施本发明的方法,包含可能与存储器25结合。
依据所选择实施例,可包含数据存储库(或数据库)的存储器电路25、映射缓冲器105、内核缓冲器125和本文中的其它寄存器或存储器可以体现为任何数目的形式,包含在当前已知或将来可用的任何计算机或其它机器可读数据存储媒体、存储器装置或用于信息存储或通信的其它存储或通信装置内,包含但不限于存储器集成电路(“IC”)(用于存储器25)或集成电路的存储器部分(例如处理器75或控制核心275或处理器IC,或例如映射缓冲器105、内核缓冲器125和本文中的其它寄存器或存储器内的驻留存储器),不管是易失性的还是非易失性的,不管是可移除的还是不可移除的,包含但不限于RAM、FLASH、DRAM、SDRAM、SRAM、MRAM、FeRAM、ROM、EPROM或E2PROM,或任何其它形式的存储器装置,例如磁性硬盘驱动器、光盘驱动器、磁盘或磁带驱动器、硬盘驱动器、其它机器可读存储装置或存储器媒体,例如软盘、CDROM、CD-RW、数字通用光盘(DVD)或其它光学存储器,任何其它类型的存储器、存储媒体,或数据存储设备或电路,这些是已知的或者会变得已知。存储器电路25、映射缓冲器105、内核缓冲器125和本文中的其它寄存器或存储器可以适用于存储各种查找表、参数、系数、其它信息和数据、程序或指令,以及其它类型的表,例如数据库表。
如上文所指出,处理器75或控制核心275使用本发明的软件和数据结构进行硬连线或编程,例如以实行本发明的方法。因此,本发明的系统和相关方法,包含配置存储器的各种指令,可以体现为软件,其提供此类编程或其它指令,例如在非暂时性计算机可读媒体内体现的指令集和/或元数据,如上文所论述。另外,元数据也可用于定义查找表或数据库的各种数据结构。借助于实例但非限制,这类软件可呈源或目标代码的形式。源代码另外可编译成某一形式的指令或目标代码(包含汇编语言指令或配置信息)。本发明的软件、源代码或元数据可体现为任何类型的代码,例如C、C++、Matlab、SystemC、LISA、XML、Java、Brew、SQL和其变型(例如,SQL 99或专属版本的SQL)、DB2、Oracle或实行本文中所论述的功能性的任何其它类型的编程语言,包含各种硬件定义或硬件建模语言(例如,Verilog、VHDL、RTL)和所得数据库文件(例如,GDSII)。因此,如本文中等效地使用的“构造”、“程序构造”、“软件构造”或“软件”意指且指代具有任何语法或特征标志的任何类别的任何编程语言,其提供或可解释为提供指定的相关联功能性或方法(当实例化或加载到处理器或计算机中并且被执行时,包含例如处理器75或控制核心275)。
本发明的软件、元数据或其它源代码以及任何所得位文件(目标代码、数据库或查找表)可以体现在任何有形的非暂时性存储媒体内,例如计算机或其它机器可读数据存储媒体中的任一者,作为计算机可读指令、数据结构、程序模块或其它数据,例如上文关于存储器电路25、映射缓冲器105、内核缓冲器125和本文中的其它寄存器或存储器所论述的,例如软盘、CDROM、CD-RW、DVD、磁性硬盘驱动器、光盘驱动器或任何其它类型的数据存储设备或媒体,如上文所论述。
通信接口45用于适当地连接到相关信道、网络或总线;例如,通信接口45可以为有线或无线接口提供阻抗匹配、驱动器和其它功能,可以为无线接口提供解调和模/数转换,并且可以分别为处理器75或控制核心275和/或存储器电路25提供与其它装置的物理接口。一般来说,通信接口45用于取决于所选择实施例而接收和传输数据,例如程序指令、参数、配置信息、控制消息、数据和其它相关信息。
通信接口45可以实施为所属领域中已知的或可以在所属领域中变得已知的,以提供与推理引擎电路架构50和任何类型的网络或外部装置之间的数据通信,例如无线、光学或有线以及使用任何适用标准(例如,例如但不限于各种PCI、USB、RJ45、以太网(快速以太网、千兆以太网、300ase-TX、300ase-FX等)、IEEE 802.11、蓝牙、WCDMA、WiFi、GSM、GPRS、EDGE、3G和上述其它标准和系统中的一者),并且可以包含阻抗匹配能力、用于低电压处理器与较高电压控制总线接合的电压转换、有线或无线收发器以及各种开关机制(例如,晶体管),以响应于来自处理器75或控制核心275的信令接通或关断各种线路或连接器。另外,例如,通信接口45还可经配置和/或适用于在推理引擎电路架构50外部接收和/或传输信号,例如通过硬接线或RF或红外信令,例如以实时地接收信息以用于在显示器上输出。通信接口45可以使用任何所选择架构,提供到任何类型的总线或网络结构或媒体的连接。借助于实例但不限于,此类架构包含工业标准架构(ISA)总线、增强型ISA(EISA)总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、SAN总线,或任何其它通信或信令媒体,例如以太网、ISDN、T1、卫星、无线等。
本公开应被视为本发明的原理的范例,并且不意图使本发明限于所示的特定实施例。就此而言,应理解,本发明的应用不限于上文和下文所阐述的、图式中所示的或实例中所描述的构造细节及组件布置。根据本发明的系统、方法和设备能够有其它实施例并且能够用各种方式实践和实行。
尽管本发明已相对于其特定实施例描述,但这些实施例仅为说明性的,并且不限制本发明。在本文的描述中,提供许多特定细节,例如电子组件、电子和结构连接、材料以及结构变化的实例,以提供对本发明的实施例的透彻理解。然而,相关领域的技术人员将认识到,可在没有一或多个具体细节的情况下,或利用其它设备、系统、组合件、组件、材料、零件等实践本发明的实施例。在其它情况下,为了避免混淆本发明的实施例的各方面,未专门示出或详细描述熟知的结构、材料或操作。另外,各种图式未按比例绘制,并且不应被视为具有限制性。
贯穿本说明书对“一个实施例”、“实施例”或特定“实施例”的参考意味着结合实施例描述的特定特征、结构或特性包含在本发明的至少一个实施例中且不一定在所有实施例中,并且另外,不一定指代相同实施例。此外,本发明的任何具体实施例的特定特征、结构或特性可以任何合适方式和与一或多个其它实施例的任何适当的组合(包含使用没有其它特征的对应使用的所选择特征)组合。另外,可作出许多修改以使具体应用、情形或材料适配本发明的基本范围和精神。应理解,本文中所描述的和所示出的本发明的实施例的其它变化和修改根据本文中的教示是可能的,并且将被视为本发明的精神和范围的部分。
对于本文列举数值范围,明确地考虑了在其之间具有相同的精确程度的每个中间数字。例如,对于6-9的范围,除了6和9之外,设想了数字7和8;并且对于范围6.0-7.0,明确考虑了数字6.0、6.1、6.2、6.3、6.4、6.5、6.6、6.7、6.8、6.9和7.0。另外,设想了呈任何组合形式的范围内的每个中间子范围,它们在本公开的范围内。例如,对于范围5-10,设想了子范围5-6、5-7、5-8、5-9、6-7、6-8、6-9、6-10、7-8、7-9、7-10、8-9、8-10和9-10,它们在所公开的范围的范围内。
同样将了解,图式中所描绘的一或多个元件还可以更独立或集成的方式实施,或甚至在其根据具体应用可为有用的时候,在某些情况下可被移除或呈现为不可操作。组件的一体化形成组合也在本发明的范围内,尤其是对于其中离散组件的分离或组合不明确或难以辨别的实施例。另外,本文使用的术语“耦合(coupled)”,包含其各种形式(“coupling”或“couplable”),是指并包含任何直接或间接的电、结构或磁耦合、连接或附接,或用于这种直接或间接的电、结构或磁耦合、连接或附接的适配或能力,包含一体形成的组件和经由或通过另一组件耦合的组件。
至于信号,在本文中指代的是“表示”给定度量或“代表”给定度量的参数,其中度量是调节器的至少部分的状态或其输入或输出的量度。如果参数与度量充分直接相关,使得调节参数能够令人满意地调节所述度量,那么参数被视为表示所述度量。如果参数表示多个或一部分度量,则参数可被视为所述度量的可接受表示。
此外,附图/图式中的任何信号箭头应被视为仅仅是示例性的,并且除非另外特别指出,否则不是限制性的。步骤的组成部分的组合也将被视为在本发明的范围内,尤其是在分离或组合的能力不明确或可预见的时候。如在本文中和遍及所附权利要求书使用的分离性术语“或”大体上意在意味着“和/或”,除非另有指示,否则其具有结合和分离性含义两者(并且并不限于“异或”含义)。如在本文中的描述和遍及所附权利要求书所使用的,除非上下文另外明确规定,否则“一(a/an)”和“所述”包含多个提及物。同样,除非上下文另外明确规定,否则如在本文中的描述和遍及所附权利要求书中所使用的,“在…中(in)”的意义包含“在…中(in)”和“在…上(on)”。
所示出的本发明的实施例的前述描述,包含发明内容或摘要中的描述,并不意图为穷尽性的或将本发明限制于本文所公开的精确形式。根据前述,将观察到,可在不脱离本发明的新颖概念的精神和范围的情况下,预期并且可实现大量的变化、修改和替代。应理解,并不意图限制本文所示出的特定方法和设备,也不应推断所述限制。当然,本发明意在通过所附权利要求书将所有此类修改涵盖为属于权利要求书的范围。

Claims (33)

1.一种加速电路架构,其包括:
第一缓冲器电路,其存储映射数据;
第一数据网络,其耦合到所述第一缓冲器电路;
第二缓冲器电路,其存储内核数据;
第二串行数据网络,其耦合到所述第二缓冲器电路;
第一多个乘法和累加电路,其布置在第一阵列中并且通过所述第一数据网络耦合到所述第一缓冲器电路且通过所述第二串行数据网络耦合到所述第二缓冲器电路,所述第一多个乘法和累加电路中的每个乘法和累加电路包括:
乘法器电路,其用以将映射数据和内核数据相乘以生成乘积;以及
第一加法器电路,其耦合到所述乘法器;
移位寄存器,其耦合到所述第一多个乘法和累加电路;
第一控制多路复用器,其适用于响应于第一模式控制字而提供所选择输出,所述所选择输出包括偏置参数或者第一或下一累加和;以及
第二加法器电路,其耦合到所述移位寄存器和所述第一控制多路复用器,所述第二加法器电路适用于将所述乘积与所述偏置参数或所述第一累加和相加以生成第二或下一累加和。
2.根据权利要求1所述的加速电路架构,其中响应于第一模式控制字指定独立模式,所述第一控制多路复用器提供所述偏置参数作为所述所选择输出。
3.根据权利要求1所述的加速电路架构,其中响应于第一模式控制字指定协作模式,所述第一控制多路复用器提供所述偏置参数作为所述所选择输出用于第一周期且提供所述第一或下一累加和作为所述所选择输出用于多个后续周期。
4.根据权利要求1所述的加速电路架构,其中响应于第一模式控制字指定组合式独立和协作模式,所述第一控制多路复用器提供所述偏置参数作为所述所选择输出用于第一周期且提供所述第一或下一累加和作为所述所选择输出用于第一多个后续周期;并且在所述第一多个后续周期之后,所述第一控制多路复用器提供所述偏置参数作为所述所选择输出用于下一周期且提供所述第一或下一累加和作为所述所选择输出用于第二多个后续周期。
5.根据权利要求1所述的加速电路架构,其中所述第二串行数据网络将第一内核数据提供到第一多个乘法和累加电路,接着循序将所述第一内核数据提供到第二多个乘法和累加电路。
6.根据权利要求1所述的加速电路架构,其进一步包括:
映射缓冲器仲裁器电路,其耦合到所述第一缓冲器电路和所述第一数据网络,所述映射缓冲器仲裁器电路适用于确定访问所述第一缓冲器电路时的冲突,并且响应于所述冲突而实施用于访问所述第一缓冲器电路的优先级协议。
7.根据权利要求6所述的加速电路架构,其中所述映射缓冲器仲裁器电路进一步适用于接收用于所述第一缓冲器电路中的所选择映射数据的地址,并且作为响应,获得并提供所述所选择映射数据。
8.根据权利要求1所述的加速电路架构,其进一步包括:
张量解码器电路,其耦合到所述第一数据网络,所述张量解码器电路适用于生成并输出地址序列,所述地址序列从基地址开始并使所述基地址递增直到输出地址等于所述基地址加上张量长度。
9.根据权利要求8所述的加速电路架构,其中所述张量解码器电路进一步包括:
操作数收集器,其耦合到所述第一数据网络,所述操作数收集器适用于将所述输出地址传送到映射缓冲器仲裁器电路或所述第二缓冲器电路,获得对应于所述输出地址的数据,并将所获得数据传送到所述第一多个乘法和累加电路。
10.根据权利要求1所述的加速电路架构,其进一步包括:
模式控制电路,其适用于提供或生成所述第一模式控制字。
11.根据权利要求1所述的加速电路架构,其进一步包括:
MAX电路,其包括多个比较器,所述多个比较器适用于确定多个第二或下一累加和的最大值。
12.根据权利要求1所述的加速电路架构,其进一步包括:
多个第二控制多路复用器,所述多个第二控制多路复用器中的每个第二控制多路复用器耦合到所述第一多个乘法和累加电路中的乘法和累加电路的第一加法器电路,所述多个第二控制多路复用器中的每个第二控制多路复用器适用于响应于第二
模式控制字而提供所选择输出,所述所选择输出包括偏置参数或第一累加和。
13.一种加速电路架构,其包括:
第一缓冲器电路,其存储映射数据;
第一数据网络,其耦合到所述第一缓冲器电路;
多个第二缓冲器电路,其存储内核数据,所述多个第二缓冲器电路中的每个第二缓冲器电路存储与所述多个第二缓冲器电路中的另一第二缓冲器电路不同的内核数据;
多个第二串行数据网络,所述多个第二串行数据网络中的每个第二串行数据网络耦合到所述多个第二缓冲器电路中的对应第二缓冲器电路;以及
多个向量-向量加速电路,其布置在多个阵列中,所述多个阵列中的所选择阵列中的所述多个向量-向量加速电路中的每个向量-向量加速电路通过所述第一数据网络耦合到所述第一缓冲器电路,并且所述多个向量-向量加速电路中的每个向量-向量加速电路通过所述多个第二串行数据网络中的对应第二串行数据网络耦合到所述多个第二缓冲器电路中的第二缓冲器电路,所述多个向量-向量加速电路中的每个向量-向量加速电路包括:
多个乘法和累加电路,所述多个乘法和累加电路中的每个乘法和累加电路包括:
乘法器电路,其用以将映射数据和内核数据相乘以生成乘积;以及
第一加法器电路,其耦合到所述乘法器;
移位寄存器,其耦合到所述多个乘法和累加电路;
第一控制多路复用器,其适用于响应于第一模式控制字而提供所选择输出,所述所选择输出包括偏置参数或者第一或下一累加和;以及
第二加法器电路,其耦合到所述移位寄存器和所述第一控制多路复用器,所述第二加法器电路适用于将所述乘积与所述偏置参数或所述第一累加和相加以生成第二或下一累加和。
14.根据权利要求13所述的加速电路架构,其中响应于第一模式控制字指定独立模式,所述第一控制多路复用器提供所述偏置参数作为所述所选择输出。
15.根据权利要求13所述的加速电路架构,其中响应于第一模式控制字指定协作模式,所述第一控制多路复用器提供所述偏置参数作为所述所选择输出用于第一周期且提供所述第一或下一累加和作为所述所选择输出用于多个后续周期。
16.根据权利要求13所述的加速电路架构,其中响应于第一模式控制字指定组合式独立和协作模式,所述第一控制多路复用器提供所述偏置参数作为所述所选择输出用于第一周期且提供所述第一或下一累加和作为所述所选择输出用于第一多个后续周期;并且在所述第一多个后续周期之后,所述第一控制多路复用器提供所述偏置参数作为所述所选择输出用于下一周期且提供所述第一或下一累加和作为所述所选择输出用于第二多个后续周期。
17.根据权利要求13所述的加速电路架构,其中所述多个第二串行数据网络中的每个第二串行数据网络将第一内核数据提供到所述多个阵列中的所述所选择阵列中的第一向量-向量加速电路,接着循序将所述第一内核数据提供到第二向量-向量加速电路。
18.根据权利要求13所述的加速电路架构,其中所述多个第二串行数据网络中的第一串行数据网络将第一内核数据提供到第一阵列的向量-向量加速电路,且所述多个第二串行数据网络中的第二串行数据网络将第二内核数据提供到第二阵列的向量-向量加速电路,所述第一内核数据不同于所述第二内核数据。
19.根据权利要求13所述的加速电路架构,其进一步包括:
映射缓冲器仲裁器电路,其耦合到所述第一缓冲器电路和所述第一数据网络,所述映射缓冲器仲裁器电路适用于确定访问所述第一缓冲器电路时的冲突,并且响应于所述冲突而实施用于访问所述第一缓冲器电路的优先级协议。
20.根据权利要求19所述的加速电路架构,其中所述映射缓冲器仲裁器电路进一步适用于接收用于所述第一缓冲器电路中的所选择映射数据的地址,并且作为响应,获得并提供所述所选择映射数据。
21.根据权利要求13所述的加速电路架构,其进一步包括:
张量解码器电路,其耦合到所述第一数据网络,所述张量解码器电路适用于生成并输出地址序列,所述地址序列从基地址开始并使所述基地址递增直到输出地址等于所述基地址加上张量长度。
22.根据权利要求21所述的加速电路架构,其中所述张量解码器电路进一步包括:
操作数收集器,其耦合到所述第一数据网络,所述操作数收集器适用于将所述输出地址传送到映射缓冲器仲裁器电路或所述多个第二缓冲器电路,获得对应于所述输出地址的数据,并将所获得数据传送到所述多个乘法和累加电路。
23.根据权利要求21所述的加速电路架构,其进一步包括:
张量缓冲器,其耦合到所述张量解码器电路;以及
控制核心,其耦合到所述张量解码器电路和所述第一数据网络,所述控制核心适用于接收并解码多个指令,并且将张量指令传送到所述张量缓冲器以供所述张量解码器电路执行。
24.根据权利要求13所述的加速电路架构,其进一步包括:
模式控制电路,其适用于提供或生成所述第一模式控制字。
25.一种加速矩阵乘法运算的方法,所述方法包括:
选择操作模式;
获得映射数据;
获得内核数据;
获得模式控制字;
使用乘法器电路将映射数据与内核数据相乘以生成乘积;
当所述模式控制字指示即将发生累加时,使用加法器电路将所述乘积与第一或下一累加和相加以生成下一累加和;
当所述模式控制字指示将加上第一偏置参数时,使用加法器电路将所述第一偏置参数与所述乘积或所述下一累加和相加;以及
输出所述下一累加和。
26.根据权利要求25所述的方法,其进一步包括:
继续所述乘法和累加步骤直到已发生完整的矩阵乘法运算为止。
27.根据权利要求25所述的方法,其进一步包括:
响应于模式控制字指定独立模式,提供多个下一累加和作为多个单独的输出。
28.根据权利要求27所述的方法,其进一步包括:
加上所述偏置参数用于第一周期;
加上所述第一或下一累加和用于多个后续周期以生成所述下一累加和;以及
输出所述下一累加和作为多个输出中的单独输出。
29.根据权利要求29所述的方法,其进一步包括:
加上所述偏置参数用于第一周期;
加上所述第一或下一累加和用于多个后续周期以生成所述下一累加和;
响应于模式控制字指定组合式独立和协作模式,将预定数目的下一累加和加在一起以生成输出累加和;以及
依次输出所述输出累加和作为所述多个输出中的单独输出。
30.根据权利要求25所述的方法,其进一步包括:
响应于模式控制字指定协作模式,提供单个累加和作为输出。
31.根据权利要求30所述的方法,其进一步包括:
加上所述偏置参数用于第一周期;
加上所述第一或下一累加和用于多个后续周期以生成所述下一累加和;以及
将所有下一累加和加在一起以生成所述单个累加和。
32.根据权利要求25所述的方法,其进一步包括:
生成并输出地址序列,所述地址序列从基地址开始并使所述基地址递增直到输出地址等于所述基地址加上张量长度。
33.一种加速电路架构,其包括:
存储器接口电路;
第一缓冲器电路,其存储映射数据;
第一数据网络,其耦合到所述第一缓冲器电路和所述存储器接口电路;
多个第二缓冲器电路,其存储内核数据,所述多个第二缓冲器电路中的每个第二缓冲器电路存储与所述多个第二缓冲器电路中的另一第二缓冲器电路不同的内核数据;
多个第二串行数据网络,所述多个第二串行数据网络中的每个第二串行数据网络耦合到所述多个第二缓冲器电路中的对应第二缓冲器电路;以及
至少一个矩阵-矩阵加速电路,其具有多种操作模式,所述多种操作模式包括独立模式、协作模式和多种组合式独立和协作模式,所述至少一个矩阵-矩阵加速电路包括:
多个矩阵-向量加速电路,所述多个矩阵-向量加速电路中的每个矩阵-向量加速电路包括多个向量-向量加速电路的阵列,所述多个矩阵-向量加速电路中的每个矩阵-向量加速电路通过所述第一数据网络耦合到所述第一缓冲器电路,并且所述多个矩阵-向量加速电路中的每个矩阵-向量加速电路通过所述多个第二串行数据网络中的对应第二串行数据网络耦合到所述多个第二缓冲器电路中的不同第二缓冲器电路,所述多个向量-向量加速电路中的每个向量-向量加速电路包括:
多个乘法和累加电路,所述多个乘法和累加电路中的每个乘法和累加电路包括:
乘法器电路,其用以将映射数据和内核数据相乘以生成乘积;以及
第一加法器电路,其耦合到所述乘法器;
移位寄存器,其耦合到所述多个乘法和累加电路;
控制多路复用器,其适用于响应于对应于所述多种操作模式中的所选择操作模式的模式控制字而提供所选择输出,所述所选择输出包括偏置参数或者第一或下一累加和;以及
第二加法器电路,其耦合到所述移位寄存器和所述第一控制多路复用器,所述第二加法器电路适用于将所述乘积与所述偏置参数或所述第一累加和相加以生成第二或下一累加和并将所述第二或下一累加和提供作为对应于所述所选择操作模式的输出;
以及
MAX电路,其包括多个比较器,所述多个比较器适用于确定多个第二或下一累加和的最大值。
CN202080099151.0A 2020-03-29 2020-03-29 推理引擎电路架构 Pending CN115516450A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/833,610 US11675624B2 (en) 2020-03-29 2020-03-29 Inference engine circuit architecture
PCT/US2020/025592 WO2021201816A1 (en) 2020-03-29 2020-03-29 Inference engine circuit architecture

Publications (1)

Publication Number Publication Date
CN115516450A true CN115516450A (zh) 2022-12-23

Family

ID=70457115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080099151.0A Pending CN115516450A (zh) 2020-03-29 2020-03-29 推理引擎电路架构

Country Status (5)

Country Link
US (1) US11675624B2 (zh)
KR (1) KR20220154764A (zh)
CN (1) CN115516450A (zh)
DE (1) DE112020007010T5 (zh)
WO (1) WO2021201816A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11783163B2 (en) * 2020-06-15 2023-10-10 Arm Limited Hardware accelerator for IM2COL operation
KR20220015680A (ko) * 2020-07-31 2022-02-08 삼성전자주식회사 딥러닝 연산 수행 방법 및 장치
TWI746126B (zh) * 2020-08-25 2021-11-11 創鑫智慧股份有限公司 矩陣乘法裝置及其操作方法
CN114118389B (zh) * 2022-01-28 2022-05-10 深圳鲲云信息科技有限公司 神经网络数据处理方法、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140365548A1 (en) * 2013-06-11 2014-12-11 Analog Devices Technology Vector matrix product accelerator for microprocessor integration
US20180341495A1 (en) * 2017-05-26 2018-11-29 Purdue Research Foundation Hardware Accelerator for Convolutional Neural Networks and Method of Operation Thereof

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
AU2004290281A1 (en) 2003-05-23 2005-05-26 Washington University Intelligent data storage and processing using FPGA devices
US7555469B2 (en) 2006-11-16 2009-06-30 L-3 Communications Integrated Systems L.P. Reconfigurable neural network systems and methods utilizing FPGAs having packet routers
US8442927B2 (en) 2009-07-30 2013-05-14 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140365548A1 (en) * 2013-06-11 2014-12-11 Analog Devices Technology Vector matrix product accelerator for microprocessor integration
US20180341495A1 (en) * 2017-05-26 2018-11-29 Purdue Research Foundation Hardware Accelerator for Convolutional Neural Networks and Method of Operation Thereof

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ALIASGER ZAIDY 等: "A High Efficiency Accelerator for Deep Neural Networks", 2018 1ST WORKSHOP ON ENERGY EFFICIENT MACHINE LEARNING AND COGNITIVE COMPUTING FOR EMBEDDED APPLICATIONS (EMC2), pages 9 - 13 *

Also Published As

Publication number Publication date
US20210303358A1 (en) 2021-09-30
US11675624B2 (en) 2023-06-13
DE112020007010T5 (de) 2023-01-19
KR20220154764A (ko) 2022-11-22
WO2021201816A1 (en) 2021-10-07

Similar Documents

Publication Publication Date Title
US11675624B2 (en) Inference engine circuit architecture
CN107657581B (zh) 一种卷积神经网络cnn硬件加速器及加速方法
CN109219821B (zh) 运算装置和方法
CN107679621B (zh) 人工神经网络处理装置
CN107679620B (zh) 人工神经网络处理装置
JP6865805B2 (ja) 計算装置と計算方法
Gu et al. DLUX: A LUT-based near-bank accelerator for data center deep learning training workloads
Wu et al. A flexible and efficient FPGA accelerator for various large-scale and lightweight CNNs
WO2021115163A1 (en) Neural network processor, chip and electronic device
CN111047036B (zh) 神经网络处理器、芯片和电子设备
US11934308B2 (en) Processor cluster address generation
US11861337B2 (en) Deep neural networks compiler for a trace-based accelerator
Wang et al. A low-latency sparse-winograd accelerator for convolutional neural networks
CN111091181B (zh) 卷积处理单元、神经网络处理器、电子设备及卷积运算方法
Que et al. Recurrent neural networks with column-wise matrix–vector multiplication on FPGAs
Shen et al. A high-performance systolic array accelerator dedicated for CNN
WO2021115149A1 (zh) 神经网络处理器、芯片和电子设备
Shrivastava et al. A survey of hardware architectures for generative adversarial networks
CN116888591A (zh) 一种矩阵乘法器、矩阵计算方法及相关设备
CN109948787B (zh) 用于神经网络卷积层的运算装置、芯片及方法
CN115222028A (zh) 基于fpga的一维cnn-lstm加速平台及实现方法
CN115081600A (zh) 执行Winograd卷积的变换单元、集成电路装置及板卡
Que Reconfigurable acceleration of recurrent neural networks
US11972263B2 (en) Cooperative instruction prefetch on multicore system
Algemili Investigation of reconfigurable FPGA design for processing big data streams

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