CN109997132B - 低时延矩阵乘法部件 - Google Patents

低时延矩阵乘法部件 Download PDF

Info

Publication number
CN109997132B
CN109997132B CN201880004576.1A CN201880004576A CN109997132B CN 109997132 B CN109997132 B CN 109997132B CN 201880004576 A CN201880004576 A CN 201880004576A CN 109997132 B CN109997132 B CN 109997132B
Authority
CN
China
Prior art keywords
weight
register
matrix
input
matrix multiplication
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.)
Active
Application number
CN201880004576.1A
Other languages
English (en)
Other versions
CN109997132A (zh
Inventor
安德鲁·埃弗里特·菲尔普斯
诺曼·保罗·约皮
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Priority to CN202310556021.0A priority Critical patent/CN116661732A/zh
Publication of CN109997132A publication Critical patent/CN109997132A/zh
Application granted granted Critical
Publication of CN109997132B publication Critical patent/CN109997132B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/015Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising having at least two separately controlled shifting levels, e.g. using shifting matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
  • Fuel Cell (AREA)
  • Shift Register Type Memory (AREA)

Abstract

本发明公开了被实施为脉动单元阵列的矩阵乘法部件的方法、系统和设备。所述矩阵乘法的每个单元包括:权重矩阵寄存器,所述权重矩阵寄存器被配置为接收来自转置或者非转置权重移位寄存器的权重输入;转置权重移位寄存器,所述转置权重移位寄存器被配置为接收来自水平方向的要被存储在所述权重矩阵寄存器中的权重输入;非转置权重移位寄存器,所述非转置权重移位寄存器被配置为接收来自垂直方向的要被存储在所述权重矩阵寄存器中的权重输入;以及乘法部件,所述乘法部件耦合至所述权重矩阵寄存器并且被配置为使所述权重矩阵寄存器的所述权重输入与矢量数据输入相乘以获得乘法结果。

Description

低时延矩阵乘法部件
背景技术
本说明书涉及用硬件执行神经网络计算。
神经网络是采用模型的一个或多个层来生成接收输入的例如分类等输出的机器学习模型。除了输出层之外,一些神经网络还包括一个或者多个隐藏层。每个隐藏层的输出作为到网络中的下一层即网络的下一隐藏层或者输出层的输入。网络的每一层根据相应组的参数的当前值从接收输入生成输出。
发明内容
本说明书描述了涉及训练神经网络,计算神经网络推理或两者的专用硬件电路的技术,并且具体涉及通过提高权重值被加载到矩阵乘法部件内的权重矩阵寄存器中的速率来减少矩阵乘法部件上的时延的专用硬件电路。
脉动阵列连接以执行矩阵乘法并且贯穿阵列通常具有统一的结构。脉动阵列的矩阵乘法部件由乘加子部件组成,该乘加子部件中的每一个取输入操作数,使操作数与存储的权重相乘以获得结果,并且将结果加到部分和上以产生新的部分和。
减少时延的一种方式是提高将权重加载到乘加部件中的速率。
一般而言,本说明书中描述的主题的一个创新方面可以体现为训练神经网络、计算神经网络推理或两者的专用硬件电路。
这个方面的其它实施例包括相应的计算机系统、设备、和被记录在一个或者多个计算机存储装置上的计算机程序,它们中的每一个被配置为执行方法的动作。对于待被配置为执行特定操作或者动作的一个或者多个计算机的系统而言,意味着系统具有安装在其上的在运行时使系统执行操作或者动作的软件、固件、硬件、或者其组合。对于待被配置为执行特定操作或者动作的一种或者多种计算机程序而言,意味着一种或者多种计算机程序包括指令,该指令在由数据处理设备执行时使该设备执行操作或者动作。
上述和其它实施例可以分别可选地单独或者组合包括以下特征中的一个或者多个特征。具体地,一个实施例组合包括下面所有的特征。
矩阵乘法部件可以被实施为脉动单元阵列。单元阵列的每个单元可以包括:权重矩阵寄存器,该权重矩阵寄存器被配置为接收来自转置或者非转置权重移位寄存器的权重输入;转置权重移位寄存器,该转置权重移位寄存器被配置为接收来自水平方向的要被存储在权重矩阵寄存器中的权重输入;非转置权重移位寄存器,该非转置权重移位寄存器被配置为接收来自垂直方向的要被存储在权重矩阵寄存器中的权重输入;以及乘法部件,该乘法部件耦合至权重矩阵寄存器并且被配置为使权重矩阵寄存器的权重输入与矢量数据输入相乘以获得乘法结果。每个单元可以包括多路复用器,该多路复用器被配置为在转置权重移位寄存器和非转置权重移位寄存器的权重输入之间进行选择并且将选择的权重输入转发至权重矩阵寄存器。
矩阵乘法部件可以包括第一权重保持寄存器,该第一权重保持寄存器被配置为保持来自转置权重移位寄存器或者非转置权重移位寄存器的权重值。
矩阵乘法部件可以包括第二权重保持寄存器,该第二权重保持寄存器被配置为保持来自转置权重移位寄存器或者非转置权重移位寄存器的权重值。
权重值可以在到第一权重保持寄存器中的水平方向上从转置权重移位寄存器和在到第二权重保持寄存器中的垂直方向上从非转置权重移位寄存器被加载到矩阵乘法部件中。
权重矩阵寄存器是用来自第一权重保持寄存器或者所第二权重保持寄存器的值加载的。
在另一实施例中,被实施为脉动阵列的矩阵乘法部件可以包括:多个单元,该多个单元被设置成脉动阵列的列;脉动阵列的每列的两个权重移位寄存器链;每单元的权重矩阵寄存器,该权重矩阵寄存器被配置为存储从权重移位寄存器接收到的权重输入;以及乘法部件,所述乘法部件耦合至权重移位寄存器并且被配置为使权重矩阵寄存器的权重输入与矢量数据输入相乘以获得乘法结果。每个权重移位寄存器仅连接至一个链并且每个单元仅连接至一个权重移位寄存器。
权重值可以从包含权重值对的矢量寄存器向两个权重移位寄存器链发送。
当两个权重值从矢量寄存器不可用时,在每列顶部的保持寄存器可以保持权重值。
当两个权重值可用时,两个权重值在时钟周期被移位到单元中的权重移位寄存器。
当两个权重值不可用时,在第一权重值可用第一时钟周期,保持寄存器加载有第一权重值作为保持值,并且没有进行移位。在下一个时钟周期,当第二权重值可用时,通过两个移位链移位第二权重值和保持值。通过每个移位链将一个值移位到连接至移位链的权重移位寄存器。
每个移位链可以具有用于注入权重值的两个注入点,一个在列的顶部并且另一个在列中的第二点处。矢量寄存器可以包含分别表示单独的权重值的4个8位整数的封装集。4个整数中的2个整数可以在列的顶部被注入并且4个整数中的另外2个整数可以在阵列中的第二点处被注入。
本说明书中描述的主题可以在特定实施例中实施,从而实现以下优点中的一个或者多个。具有脉动阵列的每列的两个权重移位寄存器链的矩阵乘法部件可以以仅具有一个权重移位寄存器链的矩阵乘法部件的速率两倍的速率将权重从矢量寄存器传递至矩阵乘法部件。另外,将权重值发送至阵列中的两个点即阵列的顶部和中间点的具有每列两个权重移位寄存器链的矩阵乘法部件可以以仅具有一个权重移位寄存器链的矩阵乘法部件的速率四倍的速率将权重从矢量寄存器传递至矩阵乘法部件。
另外或者可替代地,矩阵乘法部件可以具有分别包含非转置权重移位寄存器和转置权重移位寄存器的单元。矩阵乘法部件然后可以使用垂直和水平权重移位链的单独寄存器,导致矩阵乘法部件能够以没有两个权重移位链的单独寄存器的矩阵乘法部件的速率两倍的速率加载权重值。
这些权重移位加载方法可以组合以从没有每列两个权重移位寄存器链和垂直和水平权重移位链的单独寄存器的矩阵乘法部件获得负载时间的8倍的增长。在没有显著增加矩阵乘法部件的复杂性或者足迹的情况下,这些权重移位链和/或单独寄存器可以被添加至矩阵乘法部件。
本说明书的主题的一个或者多个实施例的细节阐述于附图和以下说明中。主题的其它特征、方面和优点通过说明书、附图和权利要求书变得显而易见。
附图说明
图1A示出了用于训练神经网络的示例专用硬件芯片的高层次图。
图1B示出了计算核心的高层次示例。
图1C示出了示例神经网络处理系统。
图2图示了包括矩阵乘法部件的示例核心架构。每个矩阵乘法部件是二维脉动阵列。
图3图示了脉动阵列内的多单元的示例架构。
图4示出了为了提高加载权重值的速率而具有每列两个权重移位寄存器链的矩阵乘法部件的架构的示例。
图5是将权重值加载到给定多单元的列中的示例方法的流程图。
图6示出了在列的两个点处发送权重值以提高加载权重值的速率的具有每列两个权重移位寄存器链的矩阵乘法部件的架构的示例。
图7示出了具有用于水平权重移位和垂直权重移位以提高加载权重值的速率的单独寄存器的矩阵乘法部件的架构的示例。
图8示出了具有用于提高加载权重值的速率的保持寄存器的集合的示例单元。
相似的参考数字和标记在各个附图中表示相似的元素。
具体实施方式
具有多个层的神经网络可以被训练并且然后被用于计算推理。例如,神经网络具有参数,每个参数用值进行初始化。训练期间,神经网络执行神经网络训练过程以调整神经网络的参数的值,例如,使用反向传播从参数的初始值确定参数的训练值。训练神经网络然后可以计算推理,即,通过神经网络的层处理输入以生成输入的神经网络输出。
例如,考虑到输入,神经网络可以计算输入的推理。神经网络通过借由神经网络的每个层处理输入来计算该推理。在一些实施方式中,神经网络的层被布置成序列。
因此,为了从接收到的输入计算推理,神经网络接收输入并且通过序列中的神经网络层中的每一层处理输入以生成推理,其中,来自一个神经网络层的输出作为输入被提供给下一个神经网络层。到神经网络层的数据输入例如到神经网络的输入或者到神经网络层的在序列中的层下面的层的输出,可以被称为到层的激活输入。
在一些实施方式中,神经网络的层被布置成有向图。即,任何特定层可以接收多个输入、多个输出或者两者。神经网络的层还可以被布置为使得层的输出可以作为输入发送回至上一层。
图1A示出了用于训练神经网络的示例专用硬件芯片的高层次图。如图所示,单个专用硬件芯片包括两个独立处理器,例如,102a、102b。每个处理器102a、102b包含两个不同的核心:(1)计算核心,即,超长指令字(VLIW)机器(103a、103b)和(2)稀疏计算核心,即,嵌入层加速器(105a、105b)。
每个计算核心例如103a和103b针对稠密线性代数问题被优化。每个计算核心由单个超长指令字控制。每个计算核心执行其自己的超长指令字指令的流。
示例稀疏计算核心例如105a或者105b将非常稀疏的高维数据映射到稠密的低维数据,使得层中的剩余层处理稠密封装的输入数据。例如,稀疏计算核心可以执行正被训练的神经网络中的任何嵌入层的计算。
为了执行这种稀疏到稠密的映射,稀疏计算核心使用预先构建的查找表,嵌入表。例如,当存在作为用户输入的一系列查询词时,每个查询词被转换为哈希标识符或者独热编码矢量。使用标识符作为表索引,嵌入表返回相应稠密矢量,该稠密矢量可以是到下一层的输入激活矢量。稀疏计算核心还可以在搜索查询词上执行化简操作以创建一个稠密激活矢量。稀疏计算核心一起运行以执行有效的稀疏分布式查找,因为嵌入表可能很大并且不适合专用硬件芯片中的一个专用硬件芯片的容量有限的高带宽存储器。关于稀疏计算核心功能的更多细节可以在于2016年2月5日提交的标题为“MATRIX PROCESSING APPARATUS”的美国专利申请15/016,486号中找到。
图1B示出了计算核心(101)的高层次示例。计算核心可以是并行控制多个计算部件的机器,即,VLIW机器。每个计算核心(101)包含:标量存储器(104)、矢量存储器(108)、标量处理单元(107)、矢量寄存器(106)和扩展矢量部件(即,矩形乘法部件(MXU)(113)、转置部件(XU)(114)以及化简和置换部件(RPU)(116))。
示例标量处理器进行VLIW指令提取/执行循环并且控制计算核心。在提取和解码指令束之后,标量处理器本身仅仅使用标量处理器(107)和标量存储器(104)的多个多位寄存器即32个32位寄存器执行在束的标量槽中找到的指令。标量指令集包括正常的算术运算,例如,如在地址计算、加载/存储指令和分支指令中所使用的。剩余的指令槽编码矢量处理部件或者其它扩展矢量部件(113、114、116)的指令。解码矢量指令被转发至矢量处理部件。
连同矢量指令,标量处理器(107)可以将最多三个标量寄存器的值转发至其它处理器和部件以执行操作。标量处理器还可以直接从矢量处理器检索计算结果。然而,在一些实施方式中,示例芯片具有从矢量处理器到标量处理器的低带宽通信路径。
矢量指令调度器位于标量处理器和矢量处理器之间。该调度器接收来自非标量VLIW槽的解码指令并且将那些指令广播给矢量处理部件。关于图1C详细描述矢量处理部件。
示例标量处理器(107)访问小型快速专用标量存储器(104),该小型快速专用标量存储器(104)由更大的但是更慢的高带宽存储器(HBM)(110)支持。同样,示例矢量处理部件访问小型快速专用矢量存储器(108),该小型快速专用矢量存储器(108)也由HBM(110)支持。字粒度访问发生在标量处理器(107)与标量存储器(104)之间或者矢量处理部件与矢量存储器(108)之间。矢量处理器与矢量存储器之间的加载和存储的粒度是128个32位字的矢量。直接存储器访问发生在标量存储器(104)与HBM(110)之间和矢量存储器(108)与HBM(110)之间。在一些实施方式中,从HBM(110)到处理部件(107)的存储器转移仅仅可以通过标量或者矢量存储器来完成。另外,在标量存储器与矢量存储器之间可能没有直接存储器转移。
指令可以指定扩展矢量部件操作。连同每个执行矢量部件指令,存在二维即128×8矢量单元,每个矢量部件可以将一个寄存器值发送至扩展矢量部件作为输入操作数。每个扩展矢量部件取输入操作数,执行相应的操作,并且将结果返回至矢量处理器(306)。下面关于图4描述扩展矢量部件。
图1C示出了用于执行神经网络计算的示例专用集成电路100。如图所示,芯片包含两个计算核心(103a、103b)和两个稀疏计算核心(152a、152b)。
芯片具有共享区域,该共享区域包括到主机(150)的主机接口、沿底部的四个高带宽存储器堆栈(156a至156d)和将接口和存储器连接在一起的芯片间互连(148)、以及来自其它芯片的数据。两个高带宽存储器堆栈(156a-b、156c-d)与每个计算核心(103a、103b)相关联。
芯片将数据存储在高带宽存储器(156c-d)中,将数据读入和读出矢量存储器(108)并且处理数据。计算核心(103b)本身包括作为被分成两个维度的片上S-RAM的矢量存储器(108)。矢量存储器具有地址空间,在该地址空间中,地址保持浮点数,即,分别是32位的128个数。计算核心(103b)还包括计算值的计算部件和控制计算部件的标量部件。
矢量处理部件由矢量处理部件的2维阵列即128×8组成,其全部以单指令多数据(SIMD)方式执行相同的指令。矢量处理器具有通道和子通道,即,128个通道和8个子通道。在通道内,矢量部件通过加载和存储指令彼此进行通信。每个矢量部件可以同时访问一个4字节值。不属于同一通道的矢量部件无法直接通信。这些矢量部件必须使用下面描述的化简/置换部件。
计算部件包括在可以用于浮点运算和整数运算的矢量处理部件(106)中的矢量寄存器,即,32个矢量寄存器。计算部件包括用于执行计算的两个算术逻辑部件(ALU)(126c-d)。一个ALU(126c)执行浮点加法并且另一个ALU(126d)执行浮点乘法。ALU(126c-d)均可以执行各种其它操作,诸如,移位、掩码和比较。例如,计算核心(103b)可能想要添加矢量寄存器V1和第二矢量寄存器V2,并且将结果放在第三矢量寄存器V3中。为了计算加法,计算核心(103b)在一个时钟周期内执行多个操作,即,1024个操作。使用这些寄存器作为操作数,矢量部件中的每个矢量部件在每个时钟周期内可以同时执行两个ALU指令,一个加载指令和一个存储指令。加载指令或者存储指令的基地址可以用标量处理器来计算并且被转发至矢量处理器。每个子通道中的矢量部件中的每个矢量部件可以使用诸如跨步等各种方法和特殊索引地址寄存器来计算自己的偏移地址。
计算部件还包含执行诸如平方根和倒数等操作的扩展一元流水线(EUP)(116)。计算核心(103b)采取三个时钟周期来执行这些操作,因为它们同时取一个操作数。因为EUP处理采取了一个以上的时钟周期,所以存在用于存储结果的先进先出数据存储。当操作完成时,结果被存储在FIFO中。计算核心可以在稍后的时间使用单独指令将数据拉出FIFO并且将其放在矢量寄存器中。随机数发生器(120)允许计算核心(103b)生成每个周期的随机数即每个周期128个随机数。
如上所述,每个处理器具有三个扩展矢量部件:矩阵乘法部件(113),该矩阵乘法部件(113)执行矩阵相乘操作;交叉通道部件(XLU),该交叉通道部件(XLU)包括执行矩阵即128×128矩阵的转置操作,以及化简和置换部件,该化简和置换部件在图1C中被图示为单独的部件,化简部件115和置换部件116。
矩阵乘法部件执行两个矩阵之间的矩阵乘法。矩阵乘法部件(113)接收数据,因为计算核心需要加载将与矩阵相乘的数字集。如图所示,数据来自矢量寄存器(106)。每个矢量寄存器包含数字即32位数字。然而,浮点转换可以发生在数据被发送至矩阵乘法部件(113)以将数字变成较小的位大小即从32位变成16位时。串行器(130)确保当数字被读出矢量寄存器时,二维阵列即128×8矩阵是作为在接下来的八个时钟周期中的每个周期内被发送至矩阵乘法部件(113)的128个数字的集合被读取的。在矩阵乘法已经完成其计算之后,对结果进行解串行(132a、b),这意味着结果矩阵在多个时钟周期内被保持。例如,对于128×8矩阵,128个数字在8个时钟周期中的每个时钟周期内被保持并且然后被推送至适当的FIFO,例如,转置结果FIFO(TRF)134或者乘法结果FIFO(TRF)136,使得128×8个数字的二维阵列可以在一个时钟周期内被抓取并且被存储在被包含在矢量处理部件(106)中的矢量寄存器中。
在周期即128个周期的时段内,权重被移位到矩阵乘法部件(113)中作为要与矩阵相乘的数字。一旦矩阵和权重已经被加载,计算核心(103b)便可以将数字即128×8个数字的集合发送至矩阵乘法部件(113)。集合的每一行可以与矩阵相乘以产生多个结果,即每时钟周期128个结果。在计算核心正在执行矩阵乘法的同时,计算核心也在后台将新的数字集转变成会与计算核心相乘的下一个矩阵,使得下一个矩阵在已经完成了上一个矩阵的计算过程时可用。矩阵乘法部件(113)可以处理作为要被相乘的矩阵中的数据的权重输入和作为要与矩阵相乘的矢量中的数据的左手侧数据输入,并且将输出的矢量提供给矢量处理部件。矢量处理部件可以处理输出的矢量并且存储到矢量存储器的处理输出的矢量。例如,矢量处理部件可以将非线性函数应用于矩阵乘法部件的输出以生成矢量数据值。在一些实施方式中,矢量处理部件106生成归一化值、池化值或者两者。处理的输出的矢量可以被用作到矩阵乘法部件113的左手侧数据输入,例如,用于神经网络的后续层。
转置部件对矩阵进行转置。转置逻辑部件(114)接收数字并且对它们进行转置,使得通道上的数字用其它尺寸的数字来转置。在一些实施方式中,矢量处理器包括128×8矢量部件。因此,为了对128×128矩阵进行转置,需要十六个单独转置指令来进行全矩阵转置。一旦转置完成,转置矩阵便可用。然而,需要明确指令来使转置矩阵移动到矢量寄存器文件中。
化简/置换部件(或者部件115、116)通过支持诸如置换、通道旋转、旋转置换、通道化简、置换通道化简和分段置换通道化简等各种操作来解决交叉通道通信的问题。如图所示,这些计算是分开的,然而,计算核心可以使用一个计算或者另一个计算或者链接至另一个计算的一个计算。化简部件(115)对每行数字进行化简并且将数字供应给置换部件(116)。置换部件在不同通道之间更改数据。转置部件、化简部件、置换部件和矩阵乘法部件分别采取一个以上的时钟周期来完成。因此,每个部件具有与其相关联的FIFO,使得计算结果可以被推送至FIFO并且单独的指令可以在稍后的时间被执行以将数据拉出FIFO并且将其拉入矢量寄存器中。通过使用FIFO,计算核心不需要在长时间操作的持续时间内保留多个矢量寄存器。如图所示,部件中的每个部件从矢量处理部件(106)中的矢量寄存器获取数据。
计算核心使用标量部件来控制计算部件。标量部件具有两个主要功能:(1)执行循环计数和寻址以及(2)生成直接存储器地址(DMA)请求,使得DMA控制器在后台使数据在高带宽存储器(156c-d)与矢量存储器(108)之间移动并且然后到达到示例系统中的其它芯片的芯片间连接(148)。标量部件包含指令存储器(104)、指令解码和发布(102)、包含标量寄存器即32位的标量处理部件(107)、标量存储器(104)和用于每时钟周期执行两个操作的两个ALU(126a、b)。标量部件可以将操作数和立即值供应给矢量操作。每个指令可以作为指令束从指令解码和发布(102)发送,该指令束包含在矢量处理部件(106)中的矢量寄存器上执行的指令。每个指令束是超长指令字(VLIW),其中,每个指令是被分成多个指令字段的多个位宽。
图2图示了包括矩阵乘法部件(MXU)201a和201b的示例核心架构200。每个MXU是二维脉动阵列。阵列连接到执行矩阵乘法操作。MXU使128元素的矢量与预加载的128×128矢量相乘,该矩阵具有每时钟周期一次相乘的恒定吞吐量。
每个MXU可以具有128行和128列。MXU可以被分成相同的块,被称为瓦片。例如,MXU可以被分成32个瓦片,每个瓦片包含32行和16列。每个瓦片可以进一步被分成乘加子部件单元。每个单元取矢量数据输入操作数,使操作数与存储的权重相乘以获得结果,并且把结果加到部分和上以产生新的部分和。在一些实施方式中,子部件单元可以被分为较大的多单元即乘加子部件单元的2×2阵列或者乘加子部件单元的4×4阵列,被称为sedecim单元。代替使输入数据以每时钟周期一个的速率从一个乘加子部件单元移动到下一个乘加子部件单元,数据可以按照每时钟周期一个多单元移动跨越脉动阵列。
在开始一系列的矢量-矩阵乘法之前,需要将矩阵预先加载到MXU中。该矩阵的数据被称为“权重”数据。权重矩阵借由连接至MXU的总线通过源总线被传递至MXU并且被移位到权重移位寄存器中。权重移位寄存器的内容然后被加载到权重矩阵寄存器中,使得矩阵相乘可以开始。关于图3至图8更详细地描述该权重加载过程。
如图2所示,每个MXU例如113a和113b连接至三条总线,第一源总线(230a、230b)用于非转置权重,第二源总线(220a、220b)用于转置权重,且左手侧总线(210a、210b)用于要与存储在MXU中的矩阵相乘的矢量数据。MXU通过附接至MXU的边缘的电线连接至总线。每个转置部件(XU)例如114a和114b也连接至第一源总线和第二源总线。
第一源总线和第二源总线是包含从矢量处理部件发送的会被XU或者MXU消耗的数据的多用总线。数据处理发生在矢量处理数据路径中,该矢量处理数据路径包括矢量寄存器206、串行处理部件202和选择部件204。存在矢量处理部件可以在总线上发送权重的多种方式。权重可以正常、“高”或者“低”发送。每个通道的八个32位浮点数(每个子通道一个)被路由至bfloat,16位浮点数。这些值被封装成四对并且在8个周期的过程中每隔一周期被发送至MXU。正常、“高”和“低”之间的差异是矢量处理部件如何进行浮点32到bfloat的转换。权证可以被封装,意味着每通道的8个32位值中的每个32位值包含封装对的bfloat。使用8个连续周期中的每个周期的源总线将16个值而不是8个值发送至MXU。在奇数周期期间,每个子通道的低16位被发送至MXU,并且在偶数周期期间,每个子通道的高16位被发送。权重可以另外或者可替代地通过字节发送。每个32位操作数包含4个8位有符号的2的补充整数的封装集合。每个字节被转换成修改符号数值值。这些值在8个连续周期内通过源总线被发送至MXU。
权重可以使用第一源总线或者第二源总线作为非转置或者转置指令被发送并且被移位到权重移位寄存器中。当用加载操作触发时,权重移位寄存器的内容如下所述被加载到权重矩阵寄存器中。从权重移位寄存器到权重矩阵寄存器的加载路径也是用字节模式数据进行从修改符号数值到bfloat的转换的地方。加载控制总线指示该转换会被进行。
根据指令正被执行,来自源总线的32位值可以包含:16位浮点值的封装对,其中,位[15:0]的值表示较早的值;或者呈修改符号数值格式的4个8位整数的封装对,其中,位[7:0]的值表示(时间上)最早的值和顺序地随后的其它值。当MXU接收到来自总线的数据时,数据值均匀地分布在具有在左侧的值0和在右侧的值127的MXU上。
左手侧(LHS)数据总线传递要与存储在连接的MXU中的矩阵相乘的特定格式例如bfloat的128个16位浮点数。LHS数据总线的数据来自矢量处理部件并且穿过转置部件例如114a和114b。当LHS输入到达MXU时,值均匀地分布在具有在左侧的值0和在右侧的值127的MXU上。
矩阵乘法的结果均匀地分布在MXU上并且被从MXU发送到矩阵结果FIFO(MRF)例如136a和136b上。来自XU的结果被发送至相应的转置结果FIFO(MRF)例如136a和136b。
图3图示了矩阵乘法部件内的多单元的示例架构。如上所述,每个矩阵乘法部件是二维脉动阵列。阵列包括可以被分成多单元的多个乘加子部件。在一些实施方式,脉动阵列的第一维度与单元的列相对应并且脉动阵列的第二维度与单元的行相对应。脉动阵列可以具有比列多的行、比行多的列或者数量相等的列和行。本说明书描述了对列的某些处理或者进行垂直描述。然而,不同的设计可以执行对行的处理或者水平执行。
在所示的示例中,左手侧数据寄存器315a、315b将矢量数据输入发送至阵列的行。权重移位链301a和301b将权重输入值发送至阵列的列,并且权重移位链302a和302b将权重输入值发送至阵列的行。移位链是有线通路,沿该有线通路可以传递值,例如,从存储器到矩阵乘法部件内的各个寄存器中的每个寄存器。
每个权重移位寄存器305被设计为使权重内容值沿权重移位寄存器305的链从源总线移位。在数据移入之后,并行复制操作确保所有数据是从权重移位寄存器305复制到相应的权重矩阵寄存器325。当数据在权重矩阵寄存器325中时,数据用于任何数量的乘法周期。在该时间期间,更多权重可以在下一个乘法集合的准备中在后台(通常)被移位到权重寄存器305中。
左手侧数据寄存器315a、315b可以接收矢量数据输入。每个左手侧数据寄存器在一个时钟周期内保持每个时钟周期的一个LS数据项。多单元所接收到的每个矢量数据输入可以在多单元的相应的左手侧寄存器诸如左手侧数据寄存器315a、315b中自由流动。左手侧数据寄存器根据多单元在阵列内的位置通过位于给定多单元的左侧的相邻多单元存储矢量寄存器所提供的矢量数据输入。例如,如果多单元300位于矩阵乘法部件的脉动阵列内的最左边的位置,则矢量数据输入由矢量寄存器提供。矢量寄存器可以将多个不同的矢量数据输入提供至多单元300,其中,每个接收到的矢量数据输入然后可以由左手侧数据寄存器315中的不同的左手侧数据寄存器存储。每个行接收每个时钟周期的一个值,不管被分成多单元的行数。
每个左手侧寄存器可以沿多单元阵列的第一个维度被耦合至单元。左手侧寄存器到单元的连接在图3中由虚线指示。例如,多单元中的左手侧数据寄存器315a(左手侧数据寄存器)被耦合至第一行的单元350a和350c。同样,多单元中的左手侧数据寄存器315b(第二左手侧寄存器)被耦合至第二行的单元350b和350d。每个左手侧寄存器315将存储的矢量数据输入转移至耦合至左手侧寄存器的单元350。因此,对于沿第一个维度(例如,沿给定行或者沿给定列)延伸的给定数量的单元,矢量数据输入可以被传递至多单元中的所有单元,而不仅仅是单个单元,使得矢量数据输入快速分布到单元阵列上,从而提高多单元的操作效率。
多个矢量数据输入还可以被发送至相邻的左手侧寄存器,使得多个矢量数据输入可以在阵列的另一多单元处使用。该过程允许矢量数据输入移位以在阵列的另一特定多单元中使用。
多单元300的每个单元350包含存储的权重值。在开始矩阵乘法过程之前,权重是通过将权重移位到脉动阵列的单元中来加载的。提供专用链和权重移位寄存器以进行权重移位,使得新的权重可以在执行之前的矩阵乘法处理的同时被移位。权重输入可以减少总体矩阵乘法操作处理的时延的方式被加载到多单元中。
如上所述,权重移位链301、302可以接收来自存储器部件例如图1的矢量存储器108的权重输入。移位链可以将多个相应的权重输入发送至与多单元300相关联的权重矩阵寄存器325。
在一些实施方式中,权重移位寄存器将沿一个维度例如向右贯穿阵列移位矢量数据输入,同时将沿一个或者两个维度例如向右或向下贯穿阵列移位权重输入。例如,在一个时钟周期内,在多小区300处的多个矢量数据输入中的每个矢量数据输入可以移位到相同行中的下一个多单元中的相应左手侧数据寄存器。每个时钟周期水平数据(左手侧数据)和垂直数据(部分和)分别移动每时钟周期一个多单元。权重仅仅在由系统指示时移位并且根据实施方式和所执行额指令可以移位1、2或者4行(或者列)。
多路复用器330从第一移位链301或者第二移位链302的权重移位寄存器305选择权重并且将所选输入转发到权重矩阵寄存器325中的单行。虽然多路复用器330被示出为在单元350边界行之外,但是在一些实施方式中,多路复用器330存在于单元350内。
在时钟周期中,每个多单元可以处理多个给定权重输入和多个给定矢量数据输入以生成多个累积输出。一般而言,处理包括使矢量数据输入与存储的权重相乘的相乘操作。累积输出还可以沿与给定权重输入相同的维度被向下纯涤至相邻的多单元。在一些实施方式中,权重在给定时钟周期期间移位了一个以上的多单元以从一个卷积计算过渡到另一个卷积计算。
累积输出可以沿与权重输入相同的列传递,例如,朝阵列中的列的底部。在一些实施方式中,部分和寄存器310a、311a将部分和值从之前的多单元传递到多单元中。阵列可以包括存储来自多单元的每个列的累积输出的部分和寄存器310b、311b。对于多单元的每个列,由列中的子部件单元生成的乘积与来自上面的多单元的输入部分和组合并且然后作为下一个部分和被转送。对于某些多单元,例如,在脉动阵列的底部列中的多单元,累积输出可以包括可以被转移至矢量计算单元的最后累积值。在一些实施方式中,最后累积值从阵列的底部多单元直接转移至矢量计算部件,而在其它实施方式中,最后累积值首先被存储在存储器中或者在发送至矢量计算部件之前由不同的组件处理。
图4示出了为了提高加载权重值的速率而具有每列两个权重移位寄存器链的矩阵乘法部件的多单元的架构的示例。如图4所示,单元435a和单元435b组成多单元400的一个列并且单元435c和单元435d组成多单元400的第二列。每列具有两个权重移位寄存器链。给定列中的每个单元被配置为仅仅接收来自列中的两个链中的一个链的权重输入。如图4所示,一个链401连接至偶数行中的权重移位寄存器并且一个链402连接至奇数行中的权重移位寄存器。每个周期两个新值被移位到每个列中并且所有现有的权重值向下移位两行。因此,可以以没有脉动阵列的两个权重移位寄存器链的矩阵乘法部件的速率的两倍的速率将权重加载到多单元中。
如图所示,权重值从矢量寄存器403移入。在实施方式中,矩阵乘法部件的每列存在一个矢量寄存器403。虽然矢量寄存器403在图3的示例中被图示为位于矩阵乘法部件的顶部,但是矢量寄存器403可以被物理定位在相对于矩阵乘法部件的各个位置,例如在部件的底部。
矢量寄存器403可以保持作为大于或者小于由矩阵乘法部件操作的值的一些数值的寄存器值。例如,寄存器可以保持n位值,而矩阵乘法部件操作n/2位值。在一些实施方式中,每个矢量寄存器保持32位值并且矩阵乘法部件操作16位值。示例矩阵乘法部件具有将寄存器的每个32位值当作一对16位值的模式,其中,一对16位值中的一个16位值被发送至第一权重移位链401并且一对16位值中的第二个16位值被发送至第二权重移位链402。虽然每列示出了一个示例寄存器403,但是每多单元可能只有一个矢量寄存器403。另外或者可替代地,每个链可以连接至将单个16位权重值提供至链的单独矢量寄存器303。在这种情况下,矢量寄存器403中的32位浮点值被转换为16位值。
在一些实施方式中,权重值可能无法以在没有每列两个移位链的情况下的矩阵乘法部件的速率两倍的速率发送值。为了处理这种情况,保持寄存器445被放置在每列的顶部以保持权重值直到两个权重值可用为止,针对每个垂直移位链一个权重值。在仅仅一个权重值可用的第一时钟周期,可用权重值被复制到保持寄存器445中。在新权重值可用的下一个时钟周期,保持寄存器中的权重值会通过一个权重移位链从保持寄存器移位到权重移位寄存器,并且在该时钟周期可用的新权重值会通过第二权重移位链被移位到第二权重移位寄存器。
水平移位链405可以如上所述将权重值提供至单元。在一些实施方式中,可能存在用于以与上述垂直移位链401、402相同的方式减少权重加载时延的两个水平移位链。
多路复用器430确定发送至单元内的权重矩阵寄存器的权重值是否来自水平移位链405或者垂直移位链401b或者402b。一旦权重值已经被加载到权重矩阵寄存器中并且左手侧数据寄存器415提供矢量数据输入,矩阵乘法然后便可以由单元435执行。
图5是将权重值加载到给定多单元的列中的示例过程500的流程图。接口接收来自矢量寄存器的至少一个权重值(501)。
接口确定多个权重值是否可用(502)。
如果多个权重值可用,则接口在时钟周期通过移位链将权重值移位到多单元内的单元435中的权重移位寄存器(504)。
接口继续加载权重值,直到来自权重矩阵的所有权重值被加载在矩阵乘法部件中(506)。
如果两个权重值在同一时钟周期不可用,则在单个权重值可用的第一周期,保持寄存器445被加载有可用权重值,并且没有进行移位(503)。
在另一权重值变得可用的下一个周期,接口通过两个移位链使新值和保持在保持寄存器445中的值移位到多单元中的权重移位寄存器(505)。
然后,接口继续加载权重值,直到来自权重矩阵的所有权重值被加载在矩阵乘法部件中(506)。
在多个权重值在每个周期不可用的情况下,接口仅仅每隔一周期激活移位链。
图6示出了在列的两个点处注入权重值以将加载权重值的速率提高四倍的具有每列两个权重移位寄存器链的矩阵乘法部件的架构的示例。如图3所示,矩阵乘法部件具有脉动阵列的每列两个移位链。每个单元650包含仅仅连接至一个移位链的移位寄存器635。如上所述,矢量寄存器603可以保持作为大于或者小于由矩阵乘法部件操作的值的一些数值的寄存器值。例如,寄存器可以保持n位值,而矩阵乘法部件操作n/2位值。矢量寄存器中的值可以被划分或者以一些方式被转变为与矩阵乘法部件所期望的值大小匹配。
在一个实施方式中,每个寄存器603可以保持32位值。每个矢量寄存器603中的值可以被当作封装集的四个8位有符号整数,美国是单独的权重值。如图3所示,每个8位有符号整数可以在两个16位链上发送。然而,整数被发送至脉动阵列中的每列的两个注入点680、681。整数被发送到顶部(680b、680b),且另一点发送到阵列下方(680a、6801a)。具有所描述的多个注入点的实施例可以与本文所讨论的其它实施例和特征组合。
在一些实施方式中,如果整数沿阵列被发送至中间点,则不需要额外的连接来注入整数,因为从矢量寄存器到阵列的顶部的链从底部到底部穿过阵列的长度。在每列的顶部,整数中的两个整数被转换为阵列所使用的格式的16位浮点值,该16位浮点值然后被注入到上述两个权重移位链(680a、681a)中。移位链在中间点被多路复用器切割,并且第二组整数到浮点数转换器在该点处从每个32位值获取其它两个整数,对它们进行转换,并且将它们注入该点(680b、681b)。例如,32位字可以被分成4个相等的8位部分:A、B、C和D。权重接口可以将部分A和B发送至阵列的顶部并且将它们转换为待由矩阵乘法部件操作的16位值。权重接口还可以经由多路复用器将部分C和D发送至阵列的中间点。在该实施方式中,部分C和D未被发送至阵列的顶部,但是被注入到移位链上的中间点处的单元的权重移位寄存器中。多路复用器存在于中间点处的移位链上,使得权重值被从注入点选定而不是从移位链上的之前的权重移位寄存器选定。
将第二权重对注入阵列的点可以不回中间点,而是一些其它点。例如,可以是沿阵列的通路的四分之一处的点。在这种情况系,在顶部注入的权重被移位到矩阵乘法部件的第一四分之一单元和矩阵乘法部件的第三四分之一单元,同时在四分之一点注入的权重被移位到矩阵乘法部件的第二和第四四分之一单元。该过程需要附加连接,但是在完成之前的矩阵乘法的同时允许权重较早地开始移位。
如图所示,两个移位链存在于每个列。然而,在一些实施方式中,两个移位链可以另外或者可替代地存在于每行,每移位链两个注入点。
图7示出了具有用于转置权重移位和正常的非转置权重移位以提高加载权重值的速率的矩阵乘法部件的架构的示例。每个多单元700包括多个单元750并且可以用来自垂直或者水平方向的权重值来加载。在垂直方向上从顶部加载权重导致权重矩阵被存储在矩阵乘法部件中。按照相同的顺序但是从侧面加载相同的权重导致权重矩阵的转置被存储在矩阵乘法部件中。在神经网络系统训练中,非转置权重矩阵和转置权重矩阵两者必须在训练算法的不同步骤中被加载。当权重从顶部在垂直方向上被加载时,权重值通过单元向下移位。当权重在水平方向上从左边加载时,权重值通过多单位700向右移位。图7图示了连接至正常移位寄存器705的正常移位链701a、701b。转置移位链702a、702b连接至转置移位寄存器705。多路复用器730确定从哪些移位链701、702加载权重矩阵寄存器725。
在一些实施方式中,需要n个周期来将一组权重移位到矩阵乘法部件的权重矩阵寄存器中。第二组权重可以在加载第一权重值之后的n/2周期开始其移位,并且新的一组权重可以每n/2周期从移位寄存器加载到权重矩阵寄存器中。
在一些实施方式中,不必总是使用整个组的128×128权重。在未使用的位置的权重可以被设置为零,有效地使得权重矩阵更小。矩阵乘法部件然后不需要将数据移位到权重移位寄存器的所有行或者所有列中。每个权重移位指令将8行数据、或者对于转置负载8列数据移位到脉动阵列中。16个权重移位指令加载代替所有之前的数据的整个128×128矩阵。当数据被从权重移位寄存器复制到相应权重矩阵寄存器时,每个权重移位寄存器被清除。将新数据移位到权重移位寄存器中可以在该加载和清除信号开始传播之后立即开始。权重移位信号无法供加载和清除波前下面和右边的所有单元使用,使得数据在其有机会加载之前不会移位。因为旧的数据被完全清除,所以不必在允许的行或者列的数据中移位。仅移位寄存器的顶部(或者左边)部分将会被充满新的数据并且剩余部分会保持零,从而导致到那些行的输入数据被省略(或者来自那些列的输出数据为零)。
图8示出了具有用于提高加载权重值的速率的保持寄存器的集合的示例单元800。单元800包括用作已经移入的数组权重的暂时存储的一个或多个权重保持寄存器集。代替或者除了被复制到权重矩阵寄存器825之外,权重移位寄存器集805a的值还可以被复制到权重保持寄存器集845a中。代替或者除了被复制到权重矩阵寄存器825之外,第二权重移位寄存器集805b的值还可以被复制到第二权重保持寄存器集845b中。在权重值集被加载到权重矩阵寄存器中时,代替直接从权重移位寄存器805a、805b获取权重值集,还可以从数组保持寄存器845中的保持寄存器的集合获取权重值集。该过程允许权重值集在移位到阵列中之后不止一次被加载。例如,如果算法要求在两组权重之间切换,则来自一个移位链的权重值可以移位到加载之间的保持寄存器。该过程还允许使权重移位的定时与权重加载解耦合。例如,当新的权重值集开始每n/c周期进行移位时,可以同时移位两个权重值集和在第一集被加载到权重矩阵寄存器时使另一集移动到权重保持寄存器。在n/2附加周期之后,从保持寄存器将第二集加载到权重矩阵寄存器。
在一些实施方式中,图4和/或图6的两个移位链可以与正常和转置移位寄存器的加法组合一增加可以在给定时间被加载到矩阵乘法部件中的权重值的数量。
本说明书中描述的主题和功能操作的实施例可以实施在数字电子电路系统中、在有形地体现的计算机软件或者固件中、在包括本说明书中公开的结构和其结构等同物的计算机硬件中,或者在它们中的一个或者多个的组合中。本说明书中所描述的主题的实施例可以实施为一个或者多个计算机程序,即,编码在有形非暂时性存储介质上由数据处理设备执行或者用于控制数据处理设备的操作的计算机程序指令的一个或者多个模块。计算机存储介质可以是机器可读存储装置、机器可读存储基板、随机或者串行存取存储器装置、或者它们中的一个或者多个的组合。可替代地或者另外,程序指令可以编码在人工生成的传播信号例如机器生成的电气、光学或者电磁信号上,生成该信号是为了编码信息以用于传输至合适的接收器设备供数据处理设备执行。
术语“数据处理设备”指数据处理硬件,并且涵盖用于处理数据的各种设备、装置和机器,包括例如可编程处理器、计算机、或者多个处理器或者计算机。设备还可以是或者进一步包括专用逻辑电路系统,例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路)。除了硬件之外,设备可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或者它们中的一个或者多个的组合的代码。
也可以被称为或者描述为程序、软件、软件应用、模块、软件模块、脚本或者代码的计算机程序可以用任何形式的编程语言包括编译语言或者解译语言、陈述性语言或者程序语言来编写,并且可以用任何形式包括作为独立程序或者作为模块、组件、子例程、或者适合用于计算环境的其它单元来部署。程序可以但不需要对应于文件系统中的文件。程序可以存储在保持其它程序或者数据的文件的一部分中(例如,存储在标记语言文档中的一个或者多个脚本)、存储在专用于讨论中的程序的单个文件中,或者在多个协调文件(例如,存储一个或者多个模块、子程序或者部分代码的文件)中。计算机程序可以被部署为在一个计算机或者位于一个站上或者跨多个站分布并且由数据通信网络互连的多个计算机上执行。
本说明书中描述的过程和逻辑流可以由执行一个或者多个计算机程序的一个或者多个可编程计算机进行以通过在输入数据上操作和生成输出来执行功能。过程和逻辑流还可以由专用逻辑电路系统,例如,FPGA或者ASIC,或者由专用逻辑电路系统和一个或者多个编程计算机的组合执行。
适于执行计算机程序的计算机可以是基于通用或者专用微处理器或者二者、或者任何其它种类的中央处理器。一般而言,中央处理器接收来自只读存储器或者随机存取存储器或者两者的指令和数据。计算机的基本元素是用于进行或者执行指令的中央处理单元和用于存储指令和数据的一个或者多个存储装置。中央处理器和存储器可以由专用逻辑电路系统补充或者被合并到专用逻辑电路系统中。一般而言,计算机还将包括用于存储数据的一个或者多个海量存储装置例如磁盘、磁光盘、或者光盘,或者被与之操作耦合以从其接收或者向其传输数据或者两者。然而,计算机不需要有这样的装置。而且,计算机可以嵌入在另一装置中,例如,仅举几个例子,移动电话、个人数字助理(PDA)、移动音频或者视频播放器、游戏控制台、全球定位系统(GPS)接收器、或者便携式存储装置(例如,通用串行总线(USB)闪存驱动)。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,例如,包括:半导体存储器装置例如EPROM、EEPROM和闪速存储器装置、磁盘例如内部硬盘或者可移动盘、磁光盘、CD-ROM盘和DVD-ROM盘。
为了提供与用户的交互,本说明书中所描述的主题的实施例可以实施在具有用于向用户显示信息的显示装置例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器、以及键盘和指向装置诸如鼠标或者轨迹球的计算机上,用户可以通过键盘和指向装置将输入提供至计算机。其它种类的装置也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或者触觉反馈;并且来自用户的输入可以以任何形式被接收,包括声音、语音或者触觉输入。另外,计算机可以通过将文档发送至用户所使用的装置并且接收来自该装置的文档来与用户交互;例如,通过响应于从web浏览器接收到的请求来将网页发送至在用户的装置上的web浏览器。同样,计算机可以通过将文本消息或者其它形式的消息发送至个人装置,例如,智能电话,运行消息传递应用和接收作为回答的来自用户的响应消息来与用户交互。
本说明书中所描述的主题的实施例可以实施在计算系统中,计算系统包括后台组件(例如,作为数据服务器),或者计算系统包括中间件组件(例如,应用服务器),或者计算系统包括前台组件(例如,具有图形用户界面、web浏览器或者app的客户端计算机,用户可以通过图形用户界面、web浏览器或者app与本说明书中所描述的主题的实施方式进行交互),或者计算系统包括一个或者多个这种后台组件、中间件组件或者前台组件的任意组合。系统的组件可以通过任何形式或者介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如,互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据例如HTML页面发送至用户装置例如为了向与装置交互的用户显示数据并且接收来自该用户的用户输入。在用户装置处生成的数据例如用户交互的结果可以被从装置在服务器处接收到。
实施例1是被实施为动态单元阵列的矩阵乘法部件,单元阵列的每个单元包括:权重矩阵寄存器,该权重矩阵寄存器被配置为接收来自转置或者非转置权重移位寄存器的权重输入;转置权重移位寄存器,该转置权重移位寄存器被配置为接收来自水平方向的要被存储在权重矩阵寄存器中的权重输入;非转置权重移位寄存器,该非转置权重移位寄存器被配置为接收来自垂直方向的要被存储在权重矩阵寄存器中的权重输入;以及乘法部件,该乘法部件耦合至权重矩阵寄存器并且被配置为使权重矩阵寄存器的权重输入与矢量数据输入相乘以获得乘法结果。
实施例2是根据实施例1所述的矩阵乘法部件,其中,每个单元进一步包括:多路复用器,该多路复用器被配置为在转置权重移位寄存器和非转置权重移位寄存器的权重输入之间进行选择并且将选择的权重输入转发至权重矩阵寄存器。
实施例3是根据实施例1或者2所述的矩阵乘法部件,该矩阵乘法部件进一步包括第一权重保持寄存器,该第一权重保持寄存器被配置为保持来自转置权重移位寄存器或者非转置权重移位寄存器的权重值。
实施例4是根据实施例1至3中任一项所述的矩阵乘法部件,该矩阵乘法部件进一步包括第二权重保持寄存器,该第二权重保持寄存器被配置为保持来自转置权重移位寄存器或者非转置权重移位寄存器的权重值。
实施例5是根据实施例1至4中任一项所述的矩阵乘法部件,其中,从转置权重移位寄存器将权重值加载到第一权重保持寄存器中,并且从垂直方向将权重值加载到第二权重保持寄存器中。
实施例6是根据实施例1至5中任一项所述的矩阵乘法部件,其中,权重矩阵寄存器是用来自第一权重保持寄存器或者第二权重保持寄存器的值加载的。
实施例7是被实施为脉动阵列的矩阵乘法部件,该矩阵乘法部件包括:
被布置成脉动阵列的列的多个单元;脉动阵列的每列的两个权重移位寄存器链;其中,每个权重移位寄存器仅连接至一个链并且每个单元仅连接至一个权重移位寄存器;配置为存储从权重移位寄存器接收到的输入的每单元的权重矩阵寄存器;和乘法部件,该乘法部件耦合至权重矩阵寄存器并且被配置为使权重矩阵寄存器的权重输入与矢量数据相乘以获得乘法结果。
实施例8是根据实施例7所述的矩阵乘法部件,其中,权重值是从包含权重对值的矢量寄存器向两个权重移位寄存器链上发送的。
实施例9是根据实施例7或者8所述的矩阵乘法部件,该矩阵乘法部件包括在每列顶部用于在两个权重值从矢量寄存器不可用时保持权重值的保持寄存器。
实施例10是根据实施例7至9中任一项所述的矩阵乘法部件,其中,当两个权重值可用时,在时钟周期将两个权重值移位到单位中的权重移位寄存器。
实施例11是根据实施例7至10中任一项所述的矩阵乘法部件,其中,当两个权重值不可用时:在第一权重值可用的第一时钟周期,保持寄存器被加载有第一权重值作为保持值,并且没有进行移位;并且在下一个时钟周期,当第二权重值可用时,通过两个移位链将第二权重值和保持值移位到连接至移位链的权重移位寄存器,每个移位链移位一个值。
实施例12是根据实施例7至11中任一项所述的矩阵乘法部件,该矩阵乘法部件进一步包括:每个移位链具有用于注入权重值的两个注入点,一个在列的顶部并且另一个在列中的第二点处。
实施例13是根据实施例7至12中任一项所述的矩阵乘法部件,该矩阵乘法部件进一步包括:矢量寄存器包含封装集的4个8位整数,该8位整数分别表示单独的权重值。
实施例14是根据实施例7至13中任一项所述的矩阵乘法部件,该矩阵乘法部件进一步包括:将4个整数中的两个整数注入列的顶部并且将4个整数中的另外两个整数注入阵列中的第二点。
虽然本说明书包含了许多具体实施细节,但是不应该将这些细节视为对任何发明的范围或者可能被要求的内容的范围的限制,而是作为针对特定发明的特定实施例的特征的描述。本说明书中在单独实施例的背景下描述的某些特征还可以组合形式实施在单个实施例中。相反,在单个实施例的背景下描述的各种特征也可以单独地或者按照任何合适的子组合实施在多个实施例中。而且,虽然上文可以将特征描述为在某些组合中动作并且甚至起初这样要求保护,但是来自要求保护的组合的一个或者多个特征可以在一些情况下从该组合中被删除,并且要求保护的组合可以涉及子组合或者子组合的变型。
同样,虽然在附图中按照特定顺序描绘了操作,但是不应该将其理解为需要按照所示的特定顺序或者按照相继的顺序来进行这种操作,或者需要进行所有图示的操作以实现期望的结果。在某些环境下,多任务和并行处理可能是有利的。而且,上述实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中需要这种分离,并且应该理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者封装到多个软件产品中。
已经描述了主题的具体实施例。其它实施例在以下权利要求书的范围内。例如,在权利要求书中所引用的动作可以按照不同的顺序进行并且仍然可以实现期望结果。作为一个示例,附图中所示的过程不一定需要所示的特定顺序或者相继顺序来完成期望结果。在某些情况下,多任务和并行处理可能是有利的。

Claims (13)

1.一种矩阵乘法部件,所述矩阵乘法部件被配置为执行神经网络的神经网络计算,所述矩阵乘法部件被实施为脉动单元阵列,所述脉动单元阵列是以二维格式来布置的,所述单元阵列中的每个单元包括:
权重矩阵寄存器,所述权重矩阵寄存器被配置为接收来自转置权重移位寄存器的对所述神经网络的第一权重输入或者来自非转置权重移位寄存器的对所述神经网络的第二权重输入;
所述转置权重移位寄存器,所述转置权重移位寄存器被配置为接收来自所述二维格式的第一方向的要被存储在所述权重矩阵寄存器中的所述第一权重输入;
所述非转置权重移位寄存器,所述非转置权重移位寄存器被配置为接收来自所述二维格式的第二方向的要被存储在所述权重矩阵寄存器中的所述第二权重输入,所述第二方向垂直于所述第一方向;以及
乘法部件,所述乘法部件耦合至所述权重矩阵寄存器并且被配置为使接收到的权重输入与对所述神经网络的矢量数据输入相乘以获得乘法结果。
2.根据权利要求1所述的矩阵乘法部件,其中,每个单元进一步包括:
多路复用器,所述多路复用器被配置为在所述第一权重输入和所述第二权重输入之间进行选择并且将所选择的权重输入转发至所述权重矩阵寄存器。
3.根据权利要求1所述的矩阵乘法部件,进一步包括第一权重保持寄存器,所述第一权重保持寄存器被配置为保持所述第一权重输入和所述第二权重输入中的一个。
4.根据权利要求3所述的矩阵乘法部件,进一步包括第二权重保持寄存器,所述第二权重保持寄存器被配置为保持所述第一权重输入和所述第二权重输入中的另一个。
5.根据权利要求4所述的矩阵乘法部件,其中,从所述转置权重移位寄存器将所述第一权重输入加载到所述第一权重保持寄存器中,并且从所述第二方向将所述第二权重输入加载到所述第二权重保持寄存器中。
6.根据权利要求5所述的矩阵乘法部件,其中,所述权重矩阵寄存器被加载有来自所述第一权重保持寄存器和所述第二权重保持寄存器中的一个的所述第一权重输入和所述第二权重输入中的一个。
7.根据权利要求6所述的矩阵乘法部件,其中,所述权重矩阵寄存器中的数据用于任意数量的乘法周期。
8.根据权利要求7所述的矩阵乘法部件,其中,在所述数量的乘法周期期间,将附加权重输入移位到所述权重移位寄存器中,以准备用于下一个乘法集合。
9.根据权利要求7所述的矩阵乘法部件,其中,在所述数量的乘法周期期间,使所述权重矩阵寄存器中存储的另一个权重输入与另一个矢量数据输入相乘以获得另一个乘法结果。
10.根据权利要求1所述的矩阵乘法部件,其中,所述矢量数据输入每时钟周期移动一个多单元。
11.根据权利要求1所述的矩阵乘法部件,其中,当接收到指令时,基于所述指令移位所述第一权重输入和所述第二权重输入。
12.根据权利要求1所述的矩阵乘法部件,其中,所述转置权重移位寄存器在物理上与所述非转置权重移位寄存器分开。
13.根据权利要求1所述的矩阵乘法部件,其中:
所述第一权重输入是从所述阵列中的另一个单元在沿所述第一方向的第一有线路径;并且
所述第二权重输入是从所述阵列中的另一个单元在沿所述第二方向的第二有线路径。
CN201880004576.1A 2017-05-17 2018-05-17 低时延矩阵乘法部件 Active CN109997132B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310556021.0A CN116661732A (zh) 2017-05-17 2018-05-17 低时延矩阵乘法部件

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762507766P 2017-05-17 2017-05-17
US62/507,766 2017-05-17
PCT/US2018/033261 WO2018213628A1 (en) 2017-05-17 2018-05-17 Low latency matrix multiply unit

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310556021.0A Division CN116661732A (zh) 2017-05-17 2018-05-17 低时延矩阵乘法部件

Publications (2)

Publication Number Publication Date
CN109997132A CN109997132A (zh) 2019-07-09
CN109997132B true CN109997132B (zh) 2023-05-23

Family

ID=62815117

Family Applications (4)

Application Number Title Priority Date Filing Date
CN201880004576.1A Active CN109997132B (zh) 2017-05-17 2018-05-17 低时延矩阵乘法部件
CN202310556021.0A Pending CN116661732A (zh) 2017-05-17 2018-05-17 低时延矩阵乘法部件
CN202310303331.1A Pending CN116414350A (zh) 2017-05-17 2018-05-17 低时延矩阵乘法部件
CN201880004328.7A Active CN109937416B (zh) 2017-05-17 2018-05-17 低时延矩阵乘法部件

Family Applications After (3)

Application Number Title Priority Date Filing Date
CN202310556021.0A Pending CN116661732A (zh) 2017-05-17 2018-05-17 低时延矩阵乘法部件
CN202310303331.1A Pending CN116414350A (zh) 2017-05-17 2018-05-17 低时延矩阵乘法部件
CN201880004328.7A Active CN109937416B (zh) 2017-05-17 2018-05-17 低时延矩阵乘法部件

Country Status (8)

Country Link
US (8) US10635740B2 (zh)
EP (4) EP3800563B1 (zh)
JP (4) JP6929958B2 (zh)
KR (1) KR102302608B1 (zh)
CN (4) CN109997132B (zh)
BR (2) BR112019023395B1 (zh)
TW (5) TW202024961A (zh)
WO (2) WO2018213628A1 (zh)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10853448B1 (en) 2016-09-12 2020-12-01 Habana Labs Ltd. Hiding latency of multiplier-accumulator using partial results
EP3800563B1 (en) 2017-05-17 2024-01-24 Google LLC Low latency matrix multiply unit
US11157287B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system with variable latency memory access
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US11409692B2 (en) * 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US11321092B1 (en) 2017-11-08 2022-05-03 Habana Labs Ltd. Tensor-based memory access
US10915297B1 (en) * 2017-11-15 2021-02-09 Habana Labs Ltd. Hardware accelerator for systolic matrix multiplication
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
US11561791B2 (en) * 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11551064B2 (en) 2018-02-08 2023-01-10 Western Digital Technologies, Inc. Systolic neural network engine capable of forward propagation
US11461579B2 (en) 2018-02-08 2022-10-04 Western Digital Technologies, Inc. Configurable neural network engine for convolutional filter sizes
US11275997B1 (en) * 2018-04-30 2022-03-15 Amazon Technologies, Inc. Weight loading in an array
US10990396B2 (en) 2018-09-27 2021-04-27 Intel Corporation Systems for performing instructions to quickly convert and use tiles as 1D vectors
US10817042B2 (en) * 2018-09-27 2020-10-27 Intel Corporation Power savings for neural network architecture with zero activations during inference
US11494645B2 (en) 2018-12-06 2022-11-08 Egis Technology Inc. Convolutional neural network processor and data processing method thereof
CN111291874B (zh) * 2018-12-06 2023-12-01 神盾股份有限公司 卷积神经网络处理器及其数据处理方法
US20200210517A1 (en) 2018-12-27 2020-07-02 Intel Corporation Systems and methods to accelerate multiplication of sparse matrices
US11928582B1 (en) * 2018-12-31 2024-03-12 Cadence Design Systems, Inc. System, media, and method for deep learning
US11321606B2 (en) 2019-01-15 2022-05-03 BigStream Solutions, Inc. Systems, apparatus, methods, and architectures for a neural network workflow to generate a hardware accelerator
WO2020155044A1 (zh) * 2019-01-31 2020-08-06 深圳市大疆创新科技有限公司 卷积计算的装置、方法、处理器和可移动设备
CN113678124A (zh) 2019-02-01 2021-11-19 光子智能股份有限公司 处理速率受限系统的矩阵操作
KR20200107295A (ko) * 2019-03-07 2020-09-16 에스케이하이닉스 주식회사 시스톨릭 어레이 및 프로세싱 시스템
US11783176B2 (en) 2019-03-25 2023-10-10 Western Digital Technologies, Inc. Enhanced storage device memory architecture for machine learning
US10929058B2 (en) 2019-03-25 2021-02-23 Western Digital Technologies, Inc. Enhanced memory device architecture for machine learning
US10990397B2 (en) * 2019-03-30 2021-04-27 Intel Corporation Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator
CN112149049A (zh) * 2019-06-26 2020-12-29 北京百度网讯科技有限公司 用于变换矩阵的装置和方法、数据处理系统
US11481471B2 (en) 2019-08-16 2022-10-25 Meta Platforms, Inc. Mapping convolution to a matrix processor unit
US11188618B2 (en) * 2019-09-05 2021-11-30 Intel Corporation Sparse matrix multiplication acceleration mechanism
US11195818B2 (en) * 2019-09-12 2021-12-07 Taiwan Semiconductor Manufacturing Company, Ltd. Backside contact for thermal displacement in a multi-wafer stacked integrated circuit
US11842169B1 (en) 2019-09-25 2023-12-12 Amazon Technologies, Inc. Systolic multiply delayed accumulate processor architecture
US11409838B2 (en) 2019-10-29 2022-08-09 Meta Platforms, Inc. High throughput matrix processor with support for concurrently processing multiple matrices
US20210149677A1 (en) * 2019-11-15 2021-05-20 Intel Corporation Enhanced processor functions for calculation
US11467806B2 (en) 2019-11-27 2022-10-11 Amazon Technologies, Inc. Systolic array including fused multiply accumulate with efficient prenormalization and extended dynamic range
US11816446B2 (en) 2019-11-27 2023-11-14 Amazon Technologies, Inc. Systolic array component combining multiple integer and floating-point data types
US11809798B2 (en) 2019-12-13 2023-11-07 Intel Corporation Implementing large multipliers in tensor arrays
US11907719B2 (en) 2019-12-13 2024-02-20 Intel Corporation FPGA specialist processing block for machine learning
WO2021179224A1 (zh) * 2020-03-11 2021-09-16 深圳市大疆创新科技有限公司 数据处理装置、数据处理方法以及加速器
US20210303987A1 (en) * 2020-03-26 2021-09-30 Advanced Micro Devices, Inc. Power reduction for machine learning accelerator background
US20210312266A1 (en) * 2020-04-01 2021-10-07 Microsoft Technology Licensing, Llc Deep neural network accelerator with independent datapaths for simultaneous processing of different classes of operations
US11507817B2 (en) 2020-04-17 2022-11-22 Samsung Electronics Co., Ltd. System and method for performing computations for deep neural networks
GB2594971B (en) * 2020-05-13 2022-10-05 Advanced Risc Mach Ltd Variable position shift for matrix processing
US11422773B1 (en) 2020-06-29 2022-08-23 Amazon Technologies, Inc. Multiple busses within a systolic array processing element
US11308027B1 (en) 2020-06-29 2022-04-19 Amazon Technologies, Inc. Multiple accumulate busses in a systolic array
US11308026B1 (en) * 2020-06-29 2022-04-19 Amazon Technologies, Inc. Multiple busses interleaved in a systolic array
KR20220015680A (ko) 2020-07-31 2022-02-08 삼성전자주식회사 딥러닝 연산 수행 방법 및 장치
JP7358312B2 (ja) 2020-08-25 2023-10-10 株式会社東芝 記憶装置およびニューラルネットワーク装置
CN112434256B (zh) * 2020-12-03 2022-09-13 海光信息技术股份有限公司 矩阵乘法器和处理器
CN112434255B (zh) * 2020-12-03 2023-12-08 成都海光微电子技术有限公司 向量-矩阵运算和数据处理方法、乘法器和处理器芯片
US11734214B2 (en) * 2021-02-01 2023-08-22 Microsoft Technology Licensing, Llc Semi-programmable and reconfigurable co-accelerator for a deep neural network with normalization or non-linearity
WO2022164652A1 (en) * 2021-02-01 2022-08-04 Microsoft Technology Licensing, Llc Semi-programmable and reconfigurable co-accelerator for a deep neural network with normalization or non-linearity
KR102597802B1 (ko) * 2021-06-11 2023-11-02 강원대학교산학협력단 시분할 다채널 아날로그 행렬 연산기, 이의 동작 방법, 및 이를 포함하는 장치
US11880682B2 (en) 2021-06-30 2024-01-23 Amazon Technologies, Inc. Systolic array with efficient input reduction and extended array performance
CN113821701B (zh) * 2021-10-14 2023-09-26 厦门半导体工业技术研发有限公司 提升电路访问效率的方法及装置
US11829321B2 (en) * 2022-03-24 2023-11-28 Google Llc General-purpose systolic array
WO2024025852A1 (en) * 2022-07-27 2024-02-01 Texas Instruments Incorporated Transient current management
CN115469826B (zh) * 2022-09-16 2023-04-07 深圳思谋信息科技有限公司 数据处理方法、装置、计算机设备及计算机可读存储介质
US20240095492A1 (en) * 2022-09-21 2024-03-21 Qualcomm Incorporated Memory management for mathematical operations in computing systems with heterogeneous memory architectures

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101968732A (zh) * 2010-10-09 2011-02-09 中国人民解放军信息工程大学 检错比特并行脉动阵列移位多项式基乘法器
CN103975302A (zh) * 2011-12-22 2014-08-06 英特尔公司 矩阵乘法累加指令

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4720780A (en) * 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
US5138695A (en) * 1989-10-10 1992-08-11 Hnc, Inc. Systolic array image processing system
US7161995B1 (en) * 2002-03-15 2007-01-09 Xilinx, Inc. Method and apparatus for Viterbi synchronization
US20040122887A1 (en) 2002-12-20 2004-06-24 Macy William W. Efficient multiplication of small matrices using SIMD registers
US8577950B2 (en) * 2009-08-17 2013-11-05 International Business Machines Corporation Matrix multiplication operations with data pre-conditioning in a high performance computing architecture
US8620984B2 (en) * 2009-11-23 2013-12-31 Xilinx, Inc. Minimum mean square error processing
US20120254591A1 (en) * 2011-04-01 2012-10-04 Hughes Christopher J Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements
US8543634B1 (en) * 2012-03-30 2013-09-24 Altera Corporation Specialized processing block for programmable integrated circuit device
CN103246773B (zh) * 2013-05-13 2016-12-28 句容华正电气有限公司 电子式互感器中采样率转换的低延迟滤波器设计方法
FR3021428B1 (fr) * 2014-05-23 2017-10-13 Kalray Multiplication de matrices de bits utilisant des registres explicites
US10049322B2 (en) 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US10438117B1 (en) * 2015-05-21 2019-10-08 Google Llc Computing convolutions using a neural network processor
US10192162B2 (en) * 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
US9805303B2 (en) * 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
US11244225B2 (en) * 2015-07-10 2022-02-08 Samsung Electronics Co., Ltd. Neural network processor configurable using macro instructions
EP3800563B1 (en) 2017-05-17 2024-01-24 Google LLC Low latency matrix multiply unit
US11188814B2 (en) * 2018-04-05 2021-11-30 Arm Limited Systolic convolutional neural network

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101968732A (zh) * 2010-10-09 2011-02-09 中国人民解放军信息工程大学 检错比特并行脉动阵列移位多项式基乘法器
CN103975302A (zh) * 2011-12-22 2014-08-06 英特尔公司 矩阵乘法累加指令

Also Published As

Publication number Publication date
US10698976B2 (en) 2020-06-30
US20180336164A1 (en) 2018-11-22
WO2018213635A1 (en) 2018-11-22
BR112019023395A2 (pt) 2020-06-16
JP7135181B2 (ja) 2022-09-12
BR112019022916A2 (pt) 2020-05-26
KR102302608B1 (ko) 2021-09-15
TWI685757B (zh) 2020-02-21
US11599601B2 (en) 2023-03-07
JP7444936B2 (ja) 2024-03-06
EP3757823B1 (en) 2023-07-05
US10635740B2 (en) 2020-04-28
JP6929958B2 (ja) 2021-09-01
US20230267172A1 (en) 2023-08-24
TWI816475B (zh) 2023-09-21
US10970362B2 (en) 2021-04-06
US20180336163A1 (en) 2018-11-22
US11907330B2 (en) 2024-02-20
JP2021184293A (ja) 2021-12-02
JP2024063060A (ja) 2024-05-10
JP2020516991A (ja) 2020-06-11
CN109937416B (zh) 2023-04-04
EP3526683A1 (en) 2019-08-21
JP2022172257A (ja) 2022-11-15
TW202147149A (zh) 2021-12-16
TW202349233A (zh) 2023-12-16
US20200226202A1 (en) 2020-07-16
CN109997132A (zh) 2019-07-09
TW202242680A (zh) 2022-11-01
KR20190116434A (ko) 2019-10-14
US20230267171A1 (en) 2023-08-24
TW202024961A (zh) 2020-07-01
EP3500945B1 (en) 2020-09-30
TWI771155B (zh) 2022-07-11
US10698974B2 (en) 2020-06-30
CN109937416A (zh) 2019-06-25
EP3526683B1 (en) 2020-08-19
CN116661732A (zh) 2023-08-29
TW201908996A (zh) 2019-03-01
EP3800563A1 (en) 2021-04-07
CN116414350A (zh) 2023-07-11
EP3500945A1 (en) 2019-06-26
US20200327186A1 (en) 2020-10-15
US20190354571A1 (en) 2019-11-21
WO2018213628A1 (en) 2018-11-22
EP3757823A1 (en) 2020-12-30
US11989259B2 (en) 2024-05-21
EP3800563B1 (en) 2024-01-24
BR112019023395B1 (pt) 2021-08-17
US20210209193A1 (en) 2021-07-08
US11500961B2 (en) 2022-11-15

Similar Documents

Publication Publication Date Title
CN109997132B (zh) 低时延矩阵乘法部件
US11989258B2 (en) Performing matrix multiplication in hardware
CN110622134B (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
GR01 Patent grant
GR01 Patent grant