CN110955861A - 用于高带宽、低延迟机器学习的电路 - Google Patents
用于高带宽、低延迟机器学习的电路 Download PDFInfo
- Publication number
- CN110955861A CN110955861A CN201910789728.XA CN201910789728A CN110955861A CN 110955861 A CN110955861 A CN 110955861A CN 201910789728 A CN201910789728 A CN 201910789728A CN 110955861 A CN110955861 A CN 110955861A
- Authority
- CN
- China
- Prior art keywords
- vector
- circuit
- matrix
- dsp
- inner product
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000010801 machine learning Methods 0.000 title abstract description 25
- 239000011159 matrix material Substances 0.000 claims abstract description 157
- 238000012545 processing Methods 0.000 claims abstract description 106
- 238000000034 method Methods 0.000 claims abstract description 14
- 239000013598 vector Substances 0.000 claims description 94
- 238000013135 deep learning Methods 0.000 abstract description 18
- 238000013461 design Methods 0.000 abstract description 12
- 238000013473 artificial intelligence Methods 0.000 abstract description 11
- 238000012549 training Methods 0.000 abstract description 9
- 238000004364 calculation method Methods 0.000 abstract description 8
- 241001442055 Vipera berus Species 0.000 description 54
- 238000010586 diagram Methods 0.000 description 32
- 230000004927 fusion Effects 0.000 description 12
- 238000007667 floating Methods 0.000 description 9
- 230000009977 dual effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Logic Circuits (AREA)
Abstract
本公开一般涉及用于使用集成电路器件有效地执行与人工智能(AI)、机器学习(ML)和/或深度学习(DL)应用(例如,训练和/或干扰计算)相关联的操作的技术。更具体地,本公开涉及一种集成电路设计,其被实现为以低延迟和/或高带宽的数据来执行这些操作。例如,公开了实现为对输入有效地执行一个或多个算术运算(例如,点积)的计算密集数字信号处理(DSP)电路的实施例。此外,本文描述的实施例可以涉及被实现为计算矩阵乘法(例如,脉动阵列乘法)的处理元件阵列的布局、设计和数据调度。
Description
相关申请的交叉引用
本申请要求2018年9月26日提交的题为“Circuitry for High-Bandwidth,Low-Latency Machine Learning”的美国临时申请序列号62/736、981的优先权和权益,该临时申请出于所有目的通过引用结合于此。
背景技术
本公开一般涉及集成电路,诸如现场可编程门阵列(FPGA)。更具体地,本公开涉及在集成电路(例如,FPGA的可编程逻辑)上有效地实现与人工智能(AI)、机器学习(ML)和/或深度学习(DL)相关联的操作的技术。
该部分旨在向读者介绍可能与本公开的各个方面相关的技术的各个方面,这些方面在下面描述和/或要求保护。相信该讨论有助于向读者提供背景信息以促进更好地理解本公开的各个方面。因此,应该理解,这些陈述应该从这个角度来阅读,而不是作为对现有技术的承认。
机器学习(ML)在许多技术领域中变得越来越有价值。例如,机器学习可以用于自然语言处理、图像处理、计算机视觉,诸如对象识别、生物信息学和经济学,以及其他领域和应用。作为机器学习的子集的深度学习(DL)可以使用神经网络中的多个推断计算来传递预测数据以供在合适的领域和应用(例如,上面列出的那些)中使用。另外,人工智能(AI)应用可以使用许多训练和/或推断计算来传递预测数据以供在合适的领域和应用(例如,上面列出的那些)中使用。因为这些训练和/或推断计算可以包括多个点积,其可以包括一组乘法然后相加,所以乘法器电路可以用在深度学习应用中。此外,神经网络在深度学习中的增长和/或机器学习和/或人工智能应用的增长可能导致数据量和推理计算量的增加。因此,为了适应机器学习实现和应用(例如深度学习)的增长和改进,集成电路中实现的乘法器的数量和/或集成电路处理的数据量可以显著增加。然而,乘法器和数据处理电路可能消耗集成电路的显著面积、功率和布线资源和/或可能引入计算的延迟。
附图说明
通过阅读以下详细描述并参考附图,可以更好地理解本公开的各个方面,其中:
图1是根据实施例的用于实现点积电路的系统的框图;
图2是根据实施例的可以实现点积电路的集成电路的框图;
图3是根据实施例的数字信号处理(DSP)电路的框图;
图4是根据实施例的计算密集型数字信号处理(DSP)电路的框图;
图5是根据实施例的通过图4的计算密集型DSP电路的数据流的框图;
图6是根据实施例的级联链的第一示例的框图;
图7是根据实施例的级联链的第二示例的框图;
图8是根据实施例的级联链的第三示例的框图;
图9是根据实施例的第一数字信号处理(DSP)架构的框图;
图10是根据实施例的张量DSP电路的实施例,其可以包括在图9的第一DSP架构中;
图11是根据实施例的张量DSP电路的另一实施例;
图12是根据实施例的通过张量DSP电路的数据流的框图;
图13是根据实施例的通过张量DSP电路的数据流的表;
图14是根据实施例的高密度张量DSP电路的框图;
图15是根据实施例的通过高密度张量DSP电路的数据流的表。
图16是根据实施例的第二DSP架构的框图;
图17是根据实施例的可以包括在第二DSP架构中的影子寄存器DSP电路的第一示例的框图;
图18是根据实施例的影子寄存器DSP电路的第二示例的框图;
图19是根据实施例的被实现为执行缩减操作的融合加法器的框图;
图20是根据实施例的双通道DSP电路的框图;
图21是根据实施例的多通道DSP电路的框图;
图22是根据实施例的通过双通道DSP电路或多通道DSP电路的数据流的框图;
图23是根据实施例的推理和训练电路290的框图;
图24是根据实施例的被实现为执行附加缩减操作的融合加法器的框图;
图25是根据实施例的用于矩阵分块的数据流的框图;
图26是根据实施例的用于计算1×6N×P乘法的电路的框图;
图27是根据实施例的用于计算2×6N×P乘法的电路的框图;
图28是根据实施例的处理元件(PE)阵列的框图;
图29是图形化地示出了根据实施例的由处理元件(PE)执行的矩阵乘法的框图;
图30是根据实施例的处理元件(PE)的框图;
图31是根据实施例的从馈线传送到处理元件(PE)的数据的输入调度的框图;
图32是根据实施例的物理阵列的框图;以及
图33是根据实施例的数据处理系统的框图。
具体实施方式
以下将描述一个或多个具体实施例。为了提供这些实施例的简明描述,并未在说明书中描述实际实现的所有特征。应当意识到,在任何这样的实际实现的开发中,如在任何工程或设计项目中,可以做出许多特定于实现的决策以实现开发者的特定目标,例如遵守与系统相关的和与业务相关的约束,这可能因实施而异。此外,应当意识到,这种开发努力可能是复杂且耗时的,但是对于受益于本公开的普通技术人员来说仍然是设计、制造和制造的常规任务。
当介绍本公开的各种实施例的元件时,冠词“一”、“一个”和“所述”旨在表示存在这些元件的一个或多个。术语“包括”、“包含”和“具有”旨在是包含性的,并且意味着可能存在除所列元件之外的其他元件。另外,应当理解,对本公开的“一个实施例”或“实施例”的引用不旨在被解释为排除也结合了所述特征的另外的实施例的存在。此外,短语A“基于”B旨在表示A至少部分地基于B。此外,除非另有明确说明,否则术语“或”旨在包括(例如,逻辑OR)而不是排他性的(例如,逻辑异或)。换句话说,短语A“或”B旨在表示A、B或A和B两者。
如下面进一步详细讨论的,本公开的实施例总体上涉及实现为有效地执行与人工智能(AI)、机器学习(ML)和/或深度学习(DL)应用相关联的操作(例如训练和/或干扰计算)的集成电路设计。实际上,所实现的集成电路设计可以实现大约100teraFLOP(TFLOP)。例如,公开了被实现为对输入执行一个或多个算术运算(例如,点积)的计算密集的数字信号处理(DSP)电路的实施例,例如,乘法累加(MAC)电路、DSP块、算术电路或DSP片(例如,DSP块的一部分)。此外,本文描述的实施例可以涉及被实现为计算矩阵乘法(例如,脉动阵列乘法)的处理元件阵列的布局、设计和数据调度。
考虑到前述内容,图1示出了可以实现算术运算的系统10的框图。设计者可能希望在集成电路器件12(诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC))上实现诸如本公开的点积操作之类的功能。在一些情况下,设计者可以指定要实现的高级程序,例如OpenCL程序,其可以使设计者能够更有效且容易地提供编程指令以配置用于集成电路器件12的一组可编程逻辑单元,而不需要低级硬件描述语言(例如,Verilog或VHDL)的特定知识。例如,由于OpenCL与其他高级编程语言(如C++)非常相似,因此熟悉此类编程语言的可编程逻辑的设计人员可能比可能学习不熟悉的低级硬件描述语言的设计人员具有新的更少的学习曲线来实现集成电路器件12中的新功能。
设计者可以使用设计软件14来实现它们的高级设计,所述设计软件例如INTELCORPORATION的版本。设计软件14可以使用编译器16将高级程序转换为较低级别的描述。编译器16可以向主机18和集成电路器件12提供代表高级程序的机器可读指令。主机18可以接收可以由内核程序20实现的主机程序22。为了实现主机程序22,主机18可以经由通信链路24将指令从主机程序22传递到集成电路器件12,通信链路24可以是例如直接存储器存取(DMA)通信或快速外围组件互连(PCIe)通信。在一些实施例中,内核程序20和主机18可以在集成电路器件12上实现点积电路26的配置。点积电路26可以包括电路和/或其他逻辑元件,并且可以配置为实现例如点积和/或机器学习操作。
虽然本文描述的技术涉及高级程序的应用,但是在一些实施例中,设计者可以使用设计软件14来生成和/或指定低级程序,例如上面描述的硬件描述语言。此外,在一些实施例中,系统10可以在没有单独的主机程序22的情况下实现。此外,在一些实施例中,本文描述的技术可以在电路中实现为非可编程电路设计。因此,本文描述的实施例旨在说明而非限制。
现在转到集成电路器件12的更详细的讨论。图2示出了作为可编程逻辑器件的集成电路器件12的示例,例如现场可编程门阵列(FPGA)。此外,应该理解,集成电路器件12可以是任何其他合适类型的可编程逻辑器件(例如,专用集成电路和/或专用标准产品)。如图所示,集成电路器件12可以具有输入/输出电路42,用于信号驱动器件和用于经由输入/输出引脚44从其他器件接收信号。互连资源46(例如,全局和局部垂直和水平导线和总线)可以用于在集成电路器件12上路由信号。另外,互连资源46可以包括固定互连(导线)和可编程互连(即,各个固定互连之间的可编程连接)。可编程逻辑48可以包括组合和顺序逻辑电路。例如,可编程逻辑48可以包括查找表、寄存器和多路复用器。在各种实施例中,可编程逻辑48可以被配置为执行定制逻辑功能。与互连资源相关联的可编程互连可以被认为是可编程逻辑48的一部分。
诸如集成电路器件12的可编程逻辑器件可以包含具有可编程逻辑48的可编程元件50。例如,如上所述,设计者(例如,客户)可以编程(例如,配置)可编程逻辑48以执行一个或多个所需功能。举例来说,可以通过使用掩模编程布置来配置其可编程元件50来编程一些可编程逻辑器件,掩模编程布置在半导体制造期间执行。在完成半导体制造操作之后配置其他可编程逻辑器件,例如通过使用电编程或激光编程来编程其可编程元件50。通常,可编程元件50可以基于任何合适的可编程技术,例如,熔丝、反熔丝、电可编程只读存储器技术、随机存取存储器单元、掩模编程元件等。
许多可编程逻辑器件是电编程的。利用电编程布置,可编程元件50可以由一个或多个存储器单元形成。例如,在编程期间,使用引脚44和输入/输出电路42将配置数据加载到存储器单元中。在一个实施例中,存储器单元可以实现为随机存取存储器(RAM)单元。这里描述的基于RAM技术的存储器单元的使用旨在作为一个示例。此外,因为这些RAM单元在编程期间加载了配置数据,所以它们有时被称为配置RAM单元(CRAM)。这些存储器单元可各自提供相对应的静态控制输出信号,其控制可编程逻辑48中的相关联的逻辑组件的状态。例如,在一些实施例中,输出信号可施加到可编程逻辑48内的金属氧化物半导体(MOS)晶体管的栅极。
现在转到图3,在一些实施例中,集成电路器件12可以包括数字信号处理(DSP)电路60,例如,乘法累加(MAC)电路、DSP块、运算电路或DSP片(例如,DSP块的一部分),被实现为在输入上执行一个或多个算术运算(例如,点积)。例如,在一些实施例中,点积电路26可以包括多个DSP电路60。此外,在一些实施例中,DSP电路60可以包括硬化逻辑(例如,硬化MAC电路、硬化DSP块、硬化的算术运算、硬化的DSP片和/或类似物),其可以用于执行一个或多个算术运算,例如向量(例如,点积)计算。在所示实施例中,DSP电路60包括实现为接收多个输入的输入电路62,其可以根据合适的数字表示(例如,bfloat16)格式化。因此,每个输入可以包括16位,其中一位表示数字的符号位,八位表示数字的指数,而七位表示数字的尾数(例如,分数)。此外,在确定输入的点积之后,DSP电路60可以输出单精度浮点(例如,SP)结果,其包括单个符号位,8位指数字段和23-位尾数字段(例如,总共32位)。然而,所示的输入和输出格式并不意味着限制。实际上,输入和输出可以采用任何合适的格式。
为了对一组输入执行一个或多个算术运算(例如,以确定该组输入的点积),DSP电路60可以包括多个乘法器64。更具体地,如图所示,DSP电路60可以包括一组两个乘法器64,适合于基于以bfloat16格式接收的输入来计算乘积。此外,为了考虑潜在的溢出,可以将乘法结果格式化为19位数字表示。在其他实施例中,乘法结果可以保留在输入的原始格式中,或者可以根据另一合适的数字格式(例如,单精度浮点和/或类似格式)来格式化,这可以取决于输入到DSP电路60的一组输入的格式。
DSP电路60还可以包括合适数量的加法器66(例如,bfloat19加法器)和/或加法器树68的合适数量的级以对乘法结果求和。加法器66(例如,加法器电路)可以被实现为根据DSP电路60的内部数字格式对乘法结果求和,与乘法结果的格式相比,其可以是相同或不同的格式。此外,在一些实施例中,每个乘法结果的最终和可以由例如加法器树68的最终加法器级中的单精度加法器70确定。因此,单精度加法器70可以输出具有1位符号字段、8位指数字段和23位尾数字段的32位结果。此外,DSP电路60可以被实现为接收32位输入,其可以与加法器66的结果相加以产生最终和。在其他实施例中,最终总和可以由加法器66确定,加法器66被实现为以另一数字格式(例如,半精度浮点、FP16+++、扩展精度等)产生结果,这可能取决于到DSP电路60的输入集合的格式,用于初始对乘法结果求和的格式,和/或类似物。
虽然所示出的DSP电路60被实现为确定点积,但是DSP电路60可以被实现为执行任何合适的乘法累加函数和/或其他算术运算。此外,DSP电路60的输入、输出和任何中间值的格式可以是任何合适的数字格式。因此,bfloat16输入可以缩放到半精度浮点,扩展精度输入可以缩放到单精度浮点,以及其他组合。因此,本文描述的实施方案旨在说明而非限制。
在一些实施例中,DSP电路60可用于执行与人工智能(AI)、机器学习(ML)、深度学习(DL)等相关联的计算,例如训练和/或推理操作。可以意识到,涉及这些应用的计算(例如,AI、ML、DL等)可能涉及高数据流。例如,使用10,000个以750兆赫(MHz)计算的DSP电路60、40,000个操作的实例可以实现30teraFlops(TFLOP)。此外,在600MHz下,可以实现24TFLOPS。然而,一组计算可以使用更高的数据流和/或额外的处理能力。在一些实施例中,为了适应更高的数据流,可以在集成电路器件12中采用附加的DSP电路60。在其他实施例中,因为集成电路器件12内的区域和/或布线连接(例如,内部和/或外部带宽)的可用性可能受到限制,附加的DSP电路60可能不适合集成电路器件12。因此,为了改善与这些计算有关的延迟和/或增加集成电路器件12的内部和/或外部带宽和/或在DSP电路60的内部和/或外部带宽,DSP电路60可以重构为计算密度更大。为此,重构的DSP电路60可以使用集成电路器件12的许多现有架构,例如布线连接。
为了帮助说明,图4中示出了计算密集的DSP电路80的实施例。如图所示,计算密集的DSP电路80可以包括四个乘法器64。为此,计算密集的DSP电路80可以包括比DSP电路60更多数量的乘法器64和/或更多的乘法器电路。如进一步所示,计算密集的DSP电路80可以用与DSP电路60相同数量的输入和/或相同数量的输入电路62来实现。此外,计算密集的DSP电路80的输入电路62可以将输入路由到相应的乘法器64和寄存器82(例如,触发器、延迟机制和/或锁存器),其可以通信地耦合到相应的乘法器64。如进一步所示,计算密集的DSP电路80可以另外包括两个19位加法器66,该19位加法器66对乘法器64输出的乘积求和。加法器66的和可以各自路由到第一单精度加法器70A,它可以表示加法器树74的一部分。第二单精度加法器70B可以将单精度加法器70A的输出与32位输入相加以产生最终结果。
对于涉及第一输入向量和第二输入向量的向量计算(例如,矩阵乘法和/或点积),计算密集的DSP电路80可用于在流式传输第二输入向量时加载第一输入向量。更具体地,计算密集的DSP电路80可用于经由输入电路62将第一输入向量加载到寄存器82中。另外或替代地,第一输入向量可被加载到替代延迟结构(例如,延迟机制)中。随后,使用相同的输入电路62,计算密集的DSP电路80可以在来自存储器、矩阵等的第二输入向量中流式传输。在流式传输第二输入向量时,因为第一输入向量已经加载到寄存器82中,所以计算密集的DSP电路80可以使用第一和第二输入向量执行矩阵乘法。此外,在一些实施例中,计算密集的DSP电路80可以被重新配置为接收具有完全连接性的两个或三个bfloat16输入。因此,计算密集的DSP电路80可以比DSP电路60更好地处理与AI、ML、DL等有关的计算,例如矩阵乘法。例如,计算密集的DSP电路80当使用与DSP电路60相同数量的输入(例如,相同数量的输入电路62)时,可以减少延迟并增加执行这些计算所涉及的带宽。
转到图5,示出了用于使用数据流(例如,50TFLOP的数据流)来计算点积的矩阵或矩阵部分(例如,子矩阵)的示例。例如,可以针对示出为包括四行和十六列(例如,4×16矩阵)的第一矩阵100A以及示出为包括十六行和一列(例如,16×1矩阵)的第二矩阵100B计算点积。更具体地,可以使用多个计算密集的DSP电路80来计算第一矩阵100A和第二矩阵100B的点积。例如,第二矩阵100B的第一列可以流入计算密集的DSP电路80。随后,第一矩阵100A的第一行可以被加载到计算密集的DSP电路80中以计算第一矩阵100A和第二矩阵100B的点积的第一内积。因此,使用时钟1,可以计算第一矩阵100A的第一行和第二矩阵100B的第一列的内积。类似地,使用时钟2,可以计算第一矩阵100A的第二行和第二矩阵100B的第一列的内积。此外,使用时钟2,可以计算第一矩阵100A的第三行和第二矩阵100B的第一列的内积。可以针对第一矩阵100A的剩余行和第二矩阵100B中的剩余列重复该方案,以确定第一矩阵100A和第二矩阵100B的点积的每个内积。
虽然第一矩阵100A和第二矩阵100B的所示实施例包括一定数量的行和列,但是可以执行具有任何合适数量的行和列(例如,大小)的矩阵之间的矩阵乘法。例如,可以使用本文描述的技术来在一个或多个向量之间执行向量运算(例如,点积)。因此,本文描述的实施例旨在说明而非限制。此外,在一些实施例中,包括在矩阵中的特定列或行中的数据的大小(例如,位宽)可能超过计算密集的DSP中的可用输入的数量(例如,输入电路62的带宽)。为此,可以在一起求和的单独部分(例如,部分内积)中计算内积。另外,可以意识到,虽然本文描述的技术涉及矩阵的行和/或列(例如,分别是行向量和/或列向量),但是可以使用来自矩阵和/或向量的任何合适的向量。
因此,如图6所示,许多计算密集的DSP电路80和/或DSP电路60可以级联(例如,在级联链140中)以计算一组矩阵(例如,第一矩阵100A和第二矩阵100B)的点积或点积的一部分(例如,内积、部分内积和/或类似物。在一些实施例中,用于将计算密集的DSP电路80级联在一起的块间连接141可以用硬(例如,硬化)逻辑来实现。因此,可以保证列中的性能。此外,如图所示,可以实现累加器120以对由级联计算密集型DSP电路80产生的结果求和。在一些实施例中,该累加器120可以在计算密集的DSP电路80内实现(例如,使用计算密集的DSP电路80的结构)。
此外,因为级联链140以线性缩减(例如,级联)实现,所以可以实现累加器120以在一定延迟之后提供输出,所述一定的延迟可以部分地基于级联链140的长度(例如,级联链140中的计算密集的DSP电路80的数量)来确定。例如,可以实现第二计算密集DSP电路80B以在从第一计算密集DSP电路80A接收输入之后确定输出,第一计算密集DSP电路80A被实现为以第一延迟生成输入。类似地,可以实现第三计算密集DSP电路80C以在从第二计算密集DSP电路80B接收输入之后确定输出,第二计算密集DSP电路80B被实现为以第二延迟生成输入。因此,累加器120可以被实现为在延迟大于或等于级联链140中的每个计算密集DSP电路80的相应延迟的总和之后提供输出。为此,随着级联链140的长度增加,在累加器120处输出结果所涉及的延迟增加。
因此,为了减少使用级联链140确定结果所涉及的延迟,级联链140中的输入(例如,进位链)可以是平衡的,如图7所示。例如,在一些实施例中,级联链140可以包括多个延迟链142,其可以包括一组寄存器、先进先出(FIFO)结构和/或触发器(例如,锁存器)。延迟链142可以被实现为使得一组输入同时来自先前计算密集的DSP电路80的输出可以在相应的计算密集的DSP电路80处可用,该DSP电路80级联到相应的计算密集的DSP电路80中。然而,随着级联链140的尺寸(例如,长度)增加,用于实现延迟链142的资源(例如,时间、面积、布线、制造成本等)可能增加。因此,实现具有延迟链142的集成电路器件12可能变得麻烦。
这样,在一些实施例中,级联链140可以利用嵌入式存储器块150(例如专用随机存取存储器(RAM))与计算密集型DSP电路80之间的直接连接来实现,如图8所示。更具体地,级联链140可以用对嵌入式存储器块150的延迟寻址来实现,嵌入式存储器块150可以被实现为将输入(例如,输入向量)存储到级联链140。例如,级联链可以包括启用比特延迟链152,其可以包括多个延迟元件(例如,锁存器、触发器等),和/或实现为延迟对嵌入式存储器块150的存取的计数器154(例如,计数器电路)。由于可以延迟单个使能位以延迟对嵌入式存储器块的存取,因此与图7的延迟链142相比,可以用更少的输入来实现使能位延迟链152,图7的延迟链142可以被实现为延迟包括多个比特的矩阵数据。为此,与图7的延迟链142相比,图8的启用延迟链可以使用减小的面积和/或资源。因此,图7中所示的级联链140可以包括在内。与图7的级联链140相比,图8中所示的级联链140可以提供与输入的平衡相关的改进。
现在转向图9,示出了可以在集成电路器件12(例如,FPGA)上实现的张量模式DSP架构160(例如,电路)的框图。张量模式DSP架构160可以被实现为以低延迟和高带宽执行向量计算,诸如涉及AI、ML、DL等的那些向量计算。更具体地,如下面更详细描述的,张量模式DSP架构160可以被实现为使用DSP电路,诸如计算密集的DSP电路80,以在第一矩阵100A和第二矩阵100B上执行矩阵乘法。如图所示,张量模式DSP架构160可以包括第一组嵌入式存储器块150A,其可以包括与第一矩阵100A相关的数据(例如,对点积的第一输入),以及第二组嵌入式存储器块150B,其可包括与第二矩阵100B相关的数据(例如,对点积的第二输入)。此外,张量模式DSP架构160可以包括延迟电路162,例如上面参考图7和图8描述的延迟链142和/或延迟结构,其被实现为调整从第一组嵌入式存储器块150A和/或第二组嵌入式存储器块150B路由的数据的延迟。例如,可以在输入到级联链140之前调整与第一矩阵100A和/或第二矩阵100B相关的数据的延迟。为此,如下面更详细描述的,来自第一矩阵100A或者第二矩阵100B的某些向量可以在不同时间流式传输和/或加载到级联链140中。基于从第一矩阵100A和第二矩阵100B接收的数据,级联链140可以计算第一矩阵100A和第二矩阵100B的点积。此外,如图所示,为了计算点积,级联链140可以通信地耦合到第三组嵌入式存储器块150C和/或累加器电路,每个嵌入式存储器块150C和/或累加器电路可以包括12×32个元件。在一些实施例中,第三组嵌入式存储块150C可以累加点积的内积的部分内积。
图10示出了张量DSP电路170的实施例,其可以包括在图9的张量模式DSP架构160的级联链140中。如图所示,张量DSP电路170可以至少部分地基于计算密集的DSP电路80的设计来实现。然而,在一些实施例中,将张量DSP电路170集成到张量模式DSP架构160中,与计算密集的DSP电路80相比,张量DSP电路170可以被重构。因此,在一些实施例中,张量DSP电路170可以被实现为接收64个输入位,如图所示。此外,张量DSP电路170可以包括一组四个乘法器64、一组19位加法器66和单精度加法器70。此外,张量DSP电路170可以包括一组2输入、2输出交叉开关172。此外,如下面更详细描述的,对于涉及第一输入向量(例如,第一矩阵的列)和第二输入向量(例如,第二矩阵的行)的向量计算(例如,点积),张量DSP电路170可以被实现为流式传输第一输入向量和第二输入向量。
可以意识到,张量DSP电路170可以受到各种修改和替代形式的影响。例如,如图11所示,张量DSP电路170可以包括进位链(例如,级联链140),其被实现为允许多个张量DSP电路170级联在一起。附加地或替代地,在一些实施例中,可以通过乘法电路182中包括的附加组乘法器64选择性地替换到对单精度加法器70的32位输入。因此,如图所示,可以实现张量DSP电路170以在至少乘法电路182的32位输入和输出之间使用选择电路184(例如,多路复用器(mux))来选择。此外,在一些实施例中,张量DSP电路170可以被实现为包括融合加法器(未示出),其在下面更详细地描述,并且可以执行由DSP电路170中的一个或多个加法器(例如,66和/或70)处理的加法运算。例如,在一些实施例中,融合的加法器可以根据IEEE标准754-2008格式或自定义格式来实现,以处理由19位加法器66和单精度加法器70处理的加法运算,这些加法运算被示为加法器186的集合。
现在转向图12,示出了通过张量DSP电路170的数据流的示例。更具体地,图12示出了适合于将使用单张量DSP电路170第一矩阵100A与第二矩阵100B相乘的数据流,第一矩阵100A可以包括两行以及四列或六列(例如,2×4矩阵或2×6矩阵),第二矩阵100B可以包括四行或六行以及两列(例如,4×2矩阵或6×2矩阵)。更一般地,数据流可以应用于通过乘以具有两行和四(六)列的多个(N)的矩阵(例如,通过具有相同倍数(N)的四行或六行和两列(例如,4Nx2或6Nx2矩阵)的矩阵,通过进位链(级联链140)级联N张量DSP电路170(例如,2×4N或2×6N)矩阵。例如,如图所示,由第一矩阵100A和第二矩阵100B中的相对应元件的乘法产生的乘积可以与从级联链140路由的相应的进位值(C)相加以产生结果(R)。
此外,在一些实施例中,所示出的第一矩阵100A和/或第二矩阵100B可以是较大矩阵的部分(例如,子矩阵)。为此,张量DSP电路170可以被实现为通过对该组矩阵中的每一个的2×4N、2×6N、4N×2和/或6N×2部分(例如,子矩阵)执行矩阵乘法来对一组矩阵执行矩阵乘法。也就是说,例如,张量DSP电路170可以被实现为使用一对行和一对列来执行矩阵乘法。行和/或列的大小(例如,4个元件、6个元件和/或类似物)可以由输入的数量和/或张量DSP电路170的实现来确定。因此并且如上所述参考图9所示,由每个张量DSP电路170产生的结果(R)可以被累加和/或存储在第三嵌入式存储块150C中,从而可以确定该组矩阵的每个相对应部分的最终点积。
通过张量DSP电路170的数据流的更详细实施例在图13中示出。现在参考图10、图12和图13,在图12所示的第一矩阵100A以及图12中所示的第二矩阵100B的乘法期间,表190将变量(例如,A、B、A'、B'、a0、b0、a1、b1、a2、b2、a3、b3、m0、m1、m2、m3、p0、p1、p2、p3、p0”、p2”、C)映射到它们各自的值,所述变量随着时间(例如,在一组时钟周期上)从张量DSP电路170中的对应点分出。此外,结果(R)可以通过对相对应行中的p0”、p2”和C的值求和来产生。如图所示,寄存器82和2-输入、2-输出交叉开关172可以被实现为分别锁存和循环通过输入,使得来自第一矩阵100A和第二矩阵100B的每个输入值可以至少使用两个乘法运算。
现在转到图图14,示出了高密度张量DSP电路200。可以实现高密度张量DSP电路200以接收64个输入位。此外,高密度张量DSP电路200可以包括八个乘法器64。此外,高密度张量DSP电路200可以包括一组19位加法器66和一组单精度加法器70。高密度张量DSP电路200可以另外包括一组4输入、4输出交叉开关202、一组2-输入、2-输出交叉开关172和多个寄存器82(例如,触发器和/或锁存器)。而且,如上面参考图11所示,高密度张量DSP电路200可以受到各种修改和替代形式的影响。因此,在一些实施例中,高密度张量电路200可以包括进位链(例如,级联链140)、乘法电路182、融合加法器或其组合。
图15示出了来自高密度张量DSP电路200的输入和输出的数据流的实施例。更具体地,在第一矩阵100A和第二矩阵100B的乘法期间,表210将变量(例如,A、B、A'、B'、R)映射到它们各自的值,所述变量从高密度张量DSP电路200中的相对应点分出。参考图14和图15所示,对高密度张量DSP电路200的输入可以由寄存器82锁存,并通过使用例如轮训循环、通过4输入、4输出交叉开关202和2输入、2输出交叉开关172进行循环,使得来自第一矩阵100A和第二矩阵100B的每个输入值可以用在相对应的点积乘法和加法运算中。
现在参照图16,示出了可以在集成电路器件12(例如,FPGA)上实现的影子寄存器模式DSP架构220(例如,电路)的框图。影子寄存器模式DSP架构220是被实现为以低延迟和高带宽执行向量计算(例如,涉及AI、ML、DL等的向量计算)的架构的第二实施例。更具体地,如下面更详细描述的并且参考张量模式DSP架构160一般描述的,影子寄存器模式DSP架构220可以被实现为使用DSP电路(例如,计算密集的DSP电路80)来对第一矩阵100A和第二矩阵100B执行矩阵乘法。如图所示,影子寄存器模式DSP架构220可以包括第一组嵌入式存储器块150A,其可以包括与第一矩阵100A相关的数据(例如,对点积的第一输入),以及第二组嵌入式存储器块150B,其可包括与第二矩阵100B相关的数据(例如,对点积的第二输入)。此外,影子寄存器模式DSP架构220可以包括延迟电路162,其被实现为调整从第一组嵌入式存储器块150A和/或第二组嵌入式存储器块150B路由的数据的延迟。例如,可以在输入到级联链140之前调整与第一矩阵100A和/或第二矩阵100B相关的数据的延迟。在一些实施例中,可以从第一矩阵100A以及第二矩阵100B中的每一个路由64位,作为对级联链140中的每个DSP电路的输入。基于从第一矩阵100A和第二矩阵100B接收的数据,级联链140可以计算第一矩阵100A和第二矩阵100B的点积。此外,如图所示,为了计算点积,级联链140可以通信地耦合到第三组嵌入式存储器块150C和第四组嵌入式存储器块150D,每个嵌入式存储器块150D可以包括6×32个元件。在一些实施例中,第三组嵌入式存储器块150C可以累加第一组部分内积以确定点积的第一内积,而第四组嵌入式存储块150D可以累加第二组内部积。部分内积,以确定点积的第二个内积。
图17示出了影子寄存器DSP电路230的第一实施例,其可以包括在图16的影子寄存器模式DSP架构220的级联链140中。如图所示,影子寄存器DSP电路230的第一实施例可以被实现为接收对应于第一矩阵100A和/或第二矩阵100B的64个输入位。此外,影子寄存器DSP电路230的第一实施例可以包括一组四个乘法器64、一组19位加法器66和一组单精度加法器70。此外,尽管未示出,但是在影子寄存器DSP电路230的第一实施例处接收的32位输入信号可以附加地或替代地被路由(例如,通过选择电路和/或多路复用器)到剩余的(例如,可用的)乘法器64中。另外,在一些实施例中,图示的选择电路184(例如,多路复用器)可以通信地耦合到输入电路62,并且可以被实现为选择到寄存器82的输入输出。因此,影子寄存器DSP电路230可以被实现为执行其他数字信号处理操作,除了向量计算之外或作为替代。与张量DSP电路170相比,影子寄存器DSP电路230的第一实施例可以具有更简单的数据流,并且可以实现为实现高路由和/或带宽。然而,在一些实施例中,张量模式DSP架构160可以使用张量DSP电路170来实现,其具有比影子寄存器减少的布线资源(例如,布线、输入/输出(I/O)端口等),影子寄存器模式DSP架构220使用影子寄存器DSP电路230实现。
此外,影子寄存器DSP电路230的第一实施例可能易受各种修改和替代形式的影响。例如,图18示出了影子寄存器DSP电路240的第二实施例。影子寄存器DSP电路240的第二实施例可以被实现为用诸如浮点压缩器的融合加法器242代替一组单精度加法器70,与单个单精度加法器70相比,在面积、电流、布线等方面实现起来可能更便宜。融合加法器242可以根据IEEE标准754-2008缩减格式或自定义格式来实现。
如图19所示,融合加法器242可以被实现为执行缩减操作以处理由单精度加法器70执行的算术运算。因此,融合加法器242可以包括分类电路244、多个减法器246(例如,比较器)、多个右移电路248、压缩器250、加法器70和/或类似物。为此,可以实现分类电路244以将输入的指数分类到融合加法器242,以从输入的指数中识别具有最高值的指数。然后,使用减法器246,融合加法器242可以针对输入的每个指数确定输入的相应指数与具有最高值的所识别指数之间的差。然后,右移电路248可以通过相应的减法器246确定的相应差值将输入的相应指数移位到融合加法器242,使得每个指数被移位到相同的数量级。然后,压缩器250(例如,N:2压缩器)可以压缩到融合加法器242的每个输入,使得加法器70可以确定总和。然后可以至少部分地基于具有最高值的所识别的指数来重新归一化该和。
现在转向图20,示出了双通道DSP电路260,其可以表示影子寄存器DSP电路的第三实施例。如图所示,双通道DSP电路260可以包括一组乘法器64、一组寄存器82和一组融合加法器242。此外,双通道DSP电路260可以实现为串联加载两个向量。此外,双通道DSP电路260可以被实现为计算两个独立的内积。为此,并且如上面参考图16的第三和第四嵌入式存储块150(例如,分别为150C和150D)所述,独立的内积可以单独累加。另外,在一些实施例中,双通道DSP电路260可以被实现为重用向量模式级联连接(例如,块间连接),如下面更详细描述的。因此,可以防止和/或减少冗余问题。此外,在一些实施例中,双通道DSP电路260可以被实现为恢复到较低性能模式(例如,以实现更少的TFLOP)。
此外,可以扩展在双通道DSP电路260中实现的架构以实现多通道DSP电路270,如图2所示。如图所示,多通道DSP电路270可以实现为串联加载三个向量。此外,可以实现多通道DSP电路270以计算三个独立的内积。在其他实施例中,可以实现多通道DSP电路270以计算更少或额外的独立内积。因此,实施例旨在是说明性的而非限制性的。然而,可以意识到,集成电路器件12中可用的空间可以确定多通道DSP电路270可以被实现来计算的最大数量的独立内积。
图22示出了由影子寄存器模式DSP架构220的DSP电路(例如,230、240、260、270)促成的示例高性能(例如,100TFLOP)并行数据流。如图所示,可以针对第一矩阵100A以及第二矩阵100B计算点积,所述第一矩阵100A可以包括四行和十六列(例如,4×16矩阵),所述第二矩阵100B可以包括十六行和两列(例如,16×2矩阵)。更具体地,可以使用影子寄存器模式DSP架构220的多个DSP电路(例如,230、240、260、270)来使用图示的时钟方案以100TFLOP来计算第一矩阵100A和第二矩阵100B的点积。例如,使用时钟1、路径1,可以计算第一矩阵100A的第一行和第二矩阵100B的第一列的内积。类似地,使用时钟1、路径2,可以计算第一矩阵100A的第一行和第二矩阵100B的第二列的内积。此外,使用时钟2、路径1,可以计算第一矩阵100A的第二行和第二矩阵100B的第一列的内积,并且使用时钟2、路径2,可以计算第一矩阵100A的第二行和第二矩阵100B的第二列的内积。可以针对第一矩阵100A的剩余行(例如,第三行到第十六行)重复该方案。
现在转向图23,示出了推理和训练电路290(例如,DSP电路)。推断和训练电路290可以包含8位整数(INT8)结构292和bfloat16结构294。在一些实施例中,bfloat16结构294可以被实现为接收根据bfloat16格式化的输入。此外,bfloat16结构294可以包含多个寄存器82和多个寄存器84。INT8结构292可以被实现为接收格式化为8位整数的输入,并且可以用与bfloat16结构294相同的布置来实现。因此,在一些实施例中,INT8的乘法器64可以实现为bfloat16乘法器。然而,在这样的实施例中,INT8结构292的乘法器64可以被实现为忽略与指数计算相关联的逻辑和/或电路。此外,INT8结构292和bfloat16结构294中的每一个的乘法器64的输出可以被路由到加法器(例如,66、70)和/或融合加法器242。因此,INT8结构292的乘法器64的输出可以被添加到bfloat16结构294的乘法器64的输出,其可以充当INT8输出,如下面更详细地描述的。
更具体地,如图24所示,推断和训练电路290的融合加法器242可以被实现为将单精度浮点和结构重新配置为INT8和结构。如图所示,融合加法器242可以包括多个逻辑门302(例如,逻辑AND门),其被实现为使所有移位归零。因此,对融合加法器242的每个输入的指数可以相对于彼此相同(例如,归一化)。此外,融合加法器242可以被实现为使用压缩器250。由INT8结构292和/或bfloat16结构294生成的INT8值(例如,ΣINT8)的总和可以被路由到压缩器304中。在一些实施例中,当INT8值被路由到压缩器304时,INT8值的总和可以以冗余形式表示。然后,压缩器250可以使用冗余形式算法,例如,压缩输入值的整数权重,使得加法器70可以确定总和。在一些实施例中,然后可以至少部分地基于所识别的具有最高值的指数来重新归一化该和。
现在转向图25,示出了用于矩阵成块乘法的数据流的示例。更具体地,图25示出了适合于使用DSP电路(例如,影子寄存器模式DSP架构220的DSP电路(例如,230、240、260、270、290))将第一矩阵100A与第二矩阵100B相乘的数据流,第一矩阵100A可以包括两行以及四列或六列(例如,2×4矩阵或2×6矩阵),第二矩阵100B可以包括四行或六行以及一定数量(P)的列(例如,4xP矩阵或6xP矩阵)。更一般地,数据流可以被应用于通过经由进位链(例如,级联链140)级联N个DSP电路(例如,230、240、260、270、290)将具有两行和多个(N)的四或六列(例如,2×4N或2×6N)的矩阵乘以具有相同倍数(N)的四或六行和一定数量(P)的列(例如,4NxP或6NxP矩阵)的矩阵。例如,如图所示,由第一矩阵100A和第二矩阵100B中的对应元件的乘法产生的乘积可以与从进位链(例如,级联链140)路由的相应的进位值(C)相加以产生结果(R)。
图26示出了1x6NxP乘法的实施例。在N=1的情况下,可以实现单个DSP电路,例如230、240、260、270、290,以计算1x6*1xP乘法。另一方面,在N>1的情况下,可以使用多个DSP电路(例如,230、240、260、270、290)的级联来计算1×6N×P乘法,如图所示。在这样的实施例中,第一DSP电路可以可选地绕过两个乘法器64以用于累加器操作数输入,如输入路径310所示。此外,级联链140的中间DSP电路可以被实现为使用进位链进行累加,,如路径312所示。此外,级联链140的最后一个DSP电路可以被实现为提供1×6N×P乘法的结果,如输出路径314所示。
现在转向图27,示出了2×6N×P乘法的实施例。在一些实施例中,可以通过交错被实现为计算图26中所示的1×6N×P乘法的电路的级联来执行2×6N×P乘法。因此,第一路径320可以指示针对第一级联的累加链,而第二路径322可以指示针对第二级联的累加链。在一些实施例中,累加链(例如,第一路径320或第二路径322)进入的DSP电路(例如,230、240、260、270、290)可以使用可用的总乘法器64的子集(例如,十二分之八和/或96位的64位)。此外,在一些实施例中,使用图27中所示的乘法结构324,可以使用N个DSP电路(例如,230、240、260、270、290)在P+2个周期中实现,12*P*N-**操作。
图28示出了处理元件(PE)阵列340,其可以被实现为执行矩阵乘法(例如,脉动阵列乘法)。如图所示,处理元件阵列340(例如,脉动阵列)包括多个处理元件342(例如,基于点积的处理元件)的2D阵列。在一些实施例中,如下面更详细描述的,处理元件342(例如,处理电路)封装一个或多个DSP电路(例如,60、80、170、200、230、240、260、270、290)。此外,处理元件阵列340通信地耦合到第一组馈线344A,其可以包含与第一矩阵(A)(例如,第一矩阵100A)对应的数据,并且可以耦合到第二组馈线344B,其可以包括与第二矩阵(B)(例如,第二矩阵100B)相对应的数据。
在一些实施例中,可以实现处理元件342中的每一个以计算与结果矩阵(R)的区域相对应的乘法运算。更具体地,如图29中图解示出的,结果矩阵(R)的突出显示区域350可以由处理元件342基于与第一矩阵(A)相对应的数据(诸如标记为M的行中的数据(例如,元素))以及与第二矩阵(B)相对应的数据(例如,标记为P的列中的数据)的乘法。在一些实施例中,M可以大于或等于2(例如,大于或等于两行)。更具体地,部分地基于这里描述的DSP电路(例如,60、80、170、200、230、240、260、270、290),M可以表示大于或等于2的偶数。此外,在一些实施例中,随着由P表示的数量增加,将第一矩阵(A)的行加载到DSP电路的寄存器82中的频率降低,这可以提高处理元件阵列340的效率。
就处理元件342所涉及的数据序列和/或数据流而言,处理元件342可以从第一个矩阵(A)中的两个或更多个(例如,M个)连续行加载第一段(例如,点大小元素)。然后,处理元件342可以呈现从第二矩阵(B)中的P个连续列加载的对应的第一段,并且可以计算两个段上的点积运算。然后,处理元件342可以从第一矩阵(A)中的两个或更多个(例如,M个)连续行的后续集合加载第二段。此外,处理元件342可以呈现从第二矩阵B中的P个连续列加载的相同的第一段。一旦处理元件342使用从矩阵A中的每个行取回的相应段执行操作,处理元件342可以从后续行和/或列加载段。例如,处理元件342然后可以加载与第一矩阵A中的两个或更多个连续行相对应的第三段,并且可以呈现从第二矩阵(B)中的后续P个连续列集加载的新段。此外,可以意识到,每个处理元件342可以使用该数据流。此外,可以意识到,一行中的每个处理元件342可以使用来自第一矩阵(A)的相同元件(例如,片段)来操作,并且列中的每个处理元件342可以使用来自第二个矩阵(B)的相同的元件(例如,片段)来操作。也就是说,例如,数据总线可以在整个处理元件阵列340上从一个处理元件342路由到下一个处理元件342。
现在转向图30,处理元件342可以表示用于任意大小的矩阵乘法的构建块。因此,处理元件342可以被实现为计算至少两个点积,并且可以包括相关联的累加器360(例如,累加电路)。此外,如图所示,处理元件342可以由DSP电路(例如,60、80、170、200、230、240、260、270、290)的级联链140构成。例如,在一些实施例中,可以利用一组二十二个级联DSP电路(例如,60、80、170、200、230、240、260、270、290)来实现2xdot128操作。可替换地,如果交叉集成电路器件12的扇区,则可以使用二十三个DSP电路(例如,60、80、170、200、230、240、260、270、290)来计算2xdot128操作。
可以用先进先出(FIFO)结构实现的所示累加器360可以支持P或更多独立乘法结果的交织。此外,处理元件342可以包括寄存器82,例如自适应逻辑模块寄存器,其可以存储来自第一矩阵(A)的操作数(例如,输入)。操作数可以不经常接收,并且可以在几个时钟周期内接收。此外,在一些实施例中,选择电路184(例如,多路复用器)可以将输入路由到级联140。更具体地,源自处理元件342外部的数据(例如,在馈线344(例如,344A和344B)处)可以是在适当的时间路由(例如,串行化)到级联140中以适应合适的数据流,如图5、12、13、15、22和25所示。在一些实施例中,如下面更详细描述的,与第一矩阵(A)相对应的数据和与第二矩阵(B)相对应的数据可以在不同时间匹配级联140以匹配级联链140的输入调度。
图31示出了从馈线344传送到级联140的数据的输入调度的定时的示例。在一些实施例中,馈线344中的每一个(例如,344A和344B)可以存储与矩阵相(例如,分别为第一矩阵(A)和第二矩阵(B)对应的矩阵数据。在一些实施例中,馈线344可以包括交错索引到随机存取存储器(RAM)370中,RAM可以是嵌入式存储器块150,包括在馈线344中以考虑级联140的传播延迟(Δ)(例如,级联140中的DSP电路之间的延迟)。因此,如图所示,可以基于时钟(T)和级联的传播延迟的增量(nΔ)来确定RAM370的索引,其可以对应于被实现为接收包括在相应RAM 370中的数据DSP电路的位置(例如,索引)。即,例如,如上面参考图8所讨论的那样,对存储器(例如嵌入式存储器块150)的索引可以交错以平衡级联链140的延迟。此外,虽然示出了单个处理元件342,但是馈线344可以将数据呈现给处理元件342的行和/或列。此外,行和/或列中的每个处理元件342可以从馈线344接收相同的交错(例如,延迟)数据。
在一些实施例中,处理元件阵列340中包括的处理元件342的数量可以部分地基于作为由处理元件340执行的矩阵乘法运算的输出而产生的结果矩阵(R)的大小来确定。此外,在一些实施例中,处理元件阵列340中包括的处理元件342的数量可以部分地基于涉及将数据路由到处理元件342、来自其和/或其之间的线路的布线距离和/或密度来确定。另外,处理元件阵列340中包括的处理元件342的数量可以部分地基于用于实现处理元件342的DSP电路(例如,60、80、170、200、230、240)的类型和/或尺寸来确定。例如,用4,608个DSP电路实现的集成电路器件12可用于实现大约192个处理元件342。在这种情况下,大小502x1024的乘法可以导致具有48×4处理元件342的处理元件阵列340的配置。此外,每个处理元件342可以被实现为处理(例如,计算内积)用于12x256的区块,其中M=12且P=256,如图29中图解说明的那样。
此外,在一些实施例中,处理元件阵列340的几何形状和/或配置可能与包括在集成电路器件12上的DSP电路的行和/或列的数量(例如,可用于处理元件342的行和/或列)不匹配。例如,在一些实施例中,上述48×4处理元件342的阵列可以被映射到11×18处理元件342的物理阵列。也就是说,例如,处理元件阵列340的布局可以是与可用的DSP电路及其在集成电路器件中的位置灵活地相关联。考虑到上述情况,图32示出了映射到物理阵列420的逻辑阵列(例如,处理元件阵列340)。每个元件422表示DSP电路。因此,所示实施例描绘了具有十六列的逻辑阵列到具有十四列的集成电路器件12的物理阵列420上的映射。如图所示,在一些实施例中,逻辑阵列可以被重新分布(例如,弯曲)以适合物理阵列420的十四列内的十六列。此外,所示的逻辑阵列到物理阵列的映射使用实际位置包括在集成电路器件12中的DSP电路的一部分,用于将点积424放置在其逻辑坐标附近。
本方法的技术效果包括处理行的对(例如,M),如图29中图解所示。此外,在一些实施例中,可以对DSP电路的输入电路62的矩阵输入进行串行化(例如,多路复用)以考虑本文所述的DSP架构。此外,如参考图31所描述的,从馈电线344接收的数据可以交错排列以考虑级联140的输入调度。此外,如参考图32所示,集成电路器件12的物理器件几何形状可以与处理元件阵列340的几何形状分离,这可以提供更大的设计灵活性。
此外,集成电路器件12可以是数据处理系统,或者可以是数据处理系统的组件。例如,集成电路器件12可以是图33所示的数据处理系统450的组件。数据处理系统450可以包括主处理器452、存储器和/或存储电路454,以及网络接口456。数据处理系统450可以包括更多或更少的组件(例如,电子显示器、用户界面结构、专用集成电路(ASIC))。主机处理器452可以包括任何合适的处理器,诸如,处理器或简化指令处理器(例如,精简指令集计算机(RISC)、高级RISC机器(ARM)处理器),其管理针对数据处理系统450的请求(例如,以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别,空间导航等)。存储器和/或存储电路454可以包括随机存取存储器(RAM)、只读存储器(ROM)、一个或多个硬盘驱动器、闪存等。存储器和/或存储电路454可以保存要由数据处理系统450处理的数据。在一些情况下,存储器和/或存储电路454还可以存储用于对集成电路器件12进行编程的配置程序(比特流)。网络接口456可以允许数据处理系统450与其他电子设备通信。数据处理系统450可以包括若干不同的封装,或者可以包含在单个封装衬底上的单个封装内。
在一个示例中,数据处理系统450可以是处理各种不同请求的数据中心的一部分。例如,数据处理系统450可以经由网络接口456接收数据处理请求,以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航或其他一些专门任务。主机处理器452可以使集成电路器件12的可编程逻辑结构用适合于实现所请求任务的DSP电路、物理阵列420等编程。例如,主处理器452可以指示存储在存储器和/或存储电路454上的配置数据(比特流)被编程到集成电路器件12的可编程逻辑结构中。配置数据(比特流)可以表示用于点积电路26的电路设计,其可以根据这里描述的技术映射到可编程逻辑。例如,点积电路可以被实现为包括DSP电路(例如,60、80、170、200、230、240、260、270、290)和/或本文描述的架构的任何合适组合。这样,集成电路器件12可以帮助数据处理系统450执行所请求的任务,例如与AI、ML、DL等相关联的操作。
虽然本公开中阐述的实施例可以容许各种修改和替代形式,但是在附图中通过示例的方式示出了特定实施例,并且已经在本文中详细描述了特定实施例。例如,可以实现本文描述的实施例和/或技术的任何合适组合。此外,可以使用数字格式的任何合适组合(例如,单精度浮点、半精度浮点、bfloat16、扩展精度等)。此外,每个DSP电路和/或DSP架构可以包括任何合适数量的元件(例如,加法器、乘法器64、路由和/或类似物)。因此,应该理解的是,本公开不旨在限于所公开的特定形式。本公开内容将覆盖落入由以下所附权利要求限定的本公开的精神和范围内的所有修改,等同物和替代物。
本文提出和要求保护的技术被引用并应用于实际性质的材料对象和具体示例,其显然改进了本技术领域,并且因此不是抽象的、无形的或纯理论的。此外,如果附加到本说明书末尾的任何权利要求包含一个或多个被指定为“[执行[功能]...的单元”或“执行[功能]......的步骤”的元件,则意图是这些元素将在35USC下解释112(f)所示。但是,对于任何包含以任何其他方式指定的元素的权利要求,这些要素不应根据35U.S.C进行解释。112(f)所示。
Claims (20)
1.一种在集成电路器件上实现的用于对矩阵有效地执行操作的电路,包括:
输入电路,其被配置为接收第一矩阵的第一向量、所述第一矩阵的第二向量以及第二矩阵的第三向量;
乘法器电路,其被配置为:
至少部分地基于所述第一向量和所述第三向量来确定第一部分内积;以及
至少部分地基于所述第二向量和所述第三向量来确定第二部分内积;加法器电路,其被配置为:
至少部分地基于所述第一部分内积来确定点积的第一内积;以及
至少部分地基于所述第二部分内积来确定所述点积的第二内积;以及
寄存器,其通信地耦合到所述输入电路、所述乘法器电路、所述加法器电路或其组合,其中,所述寄存器能够配置为存储所述第一向量、所述第二向量或所述第三向量中的至少一个的至少一部分。
2.如权利要求1所述的电路,其中,所述第一向量包括行向量,并且所述第三向量包括列向量。
3.如权利要求1所述的电路,其中,所述第一向量包括列向量,并且所述第三向量包括行向量。
4.如权利要求1所述的电路,其中,所述第二矩阵是向量。
5.如权利要求1所述的电路,包括通信地耦合在所述输入电路和所述乘法器电路之间的交叉开关,其中,所述交叉开关被配置为选择性地输出与所述第一向量相关联的第一数据、与所述第二向量相关联的第二数据、与所述第三向量相关联的第三数据或其组合。
6.如权利要求1所述的电路,包括通信地耦合到所述输入电路和所述寄存器的选择电路,其中,所述电路被配置为至少部分地基于所述选择电路的输出来选择性地执行第一操作或第二操作。
7.如权利要求1所述的电路,其中,所述加法器电路包括融合加法器。
8.如权利要求1所述的电路,其中,所述输入电路通信地耦合到附加电路的输出电路,其中,所述附加电路被配置为至少部分地基于所述第一向量和所述第三向量来在所述输出电路处输出第三部分内积,并且其中,所述加法器电路被配置为至少部分地基于所述第一部分内积和所述第三部分内积来确定所述第一内积。
9.如权利要求1-8中的任一项所述的电路,其中,所述集成电路器件包括处理阵列,所述处理阵列包括多个处理元件,其中,所述多个处理元件中的一个包括所述电路。
10.如权利要求1所述的电路,其中,所述集成电路器件包括现场可编程门阵列(FPGA)。
11.一种用于在集成电路器件上有效地对矩阵执行操作的处理电路,包括:
级联链,其被配置为至少部分地基于与第一矩阵相关联的第一数据和与第二矩阵相关联的第二数据来确定点积,其中,所述第一数据包括所述第一矩阵的第一向量和第二向量,其中,所述第二数据包括所述第二矩阵的第三向量;以及
嵌入式存储器,其通信地耦合到所述级联链的输出,并且被配置为:
从所述级联链中接收所述点积;以及
存储所述点积。
12.如权利要求11所述的处理电路,其中,所述级联链被配置为至少部分地基于第一部分内积和第二部分内积来确定所述点积,其中,所述级联链包括:
第一电路,其被配置为至少部分地基于所述第三向量和所述第一向量的第一部分来确定所述第一部分内积;以及
第二电路,其被配置为至少部分地基于所述第三向量和所述第一向量的第二部分来确定所述第二部分内积。
13.如权利要求11所述的处理电路,其中,所述级联链被配置为:
至少部分地基于所述第一向量和所述第三向量来确定所述点积;以及
至少部分地基于所述第二向量和所述第三向量来确定附加点积。
14.如权利要求11所述的处理电路,其中,所述级联链包括电路,包括:
输入电路,其被配置为接收所述第一向量、所述第二向量以及所述第三向量;
乘法器电路,其被配置为:
至少部分地基于所述第一向量和所述第三向量来确定第一部分内积;以及
至少部分地基于所述第二向量和所述第三向量来确定第二部分内积;加法器电路,其被配置为:
至少部分地基于所述第一部分内积来确定所述点积的第一内积;以及
至少部分地基于所述第二部分内积来确定所述点积的第二内积;以及
寄存器,其通信地耦合到所述输入电路、所述乘法器电路、所述加法器电路或其组合。
15.如权利要求11所述的处理电路,包括通信地耦合到所述级联链的输入的选择电路,其中,所述选择电路被配置为将所述第一数据、所述第二数据或其组合串行化输入到所述级联链。
16.如权利要求11所述的处理电路,其中,所述嵌入式存储器被配置为实现先进先出(FIFO)结构。
17.如权利要求11所述的处理电路,其中,所述第二数据包括所述第二矩阵的所述第三向量和第四向量。
18.如权利要求11-17中任一项所述的处理电路,其中,所述级联链被配置为:
至少部分地基于所述第一向量和所述第三向量来确定所述点积;
在第一输出电路处输出所述点积;
至少部分地基于所述第一向量和所述第四向量来确定附加点积;以及
在第二输出电路处输出所述附加点积。
19.一种用于在集成电路器件上执行向量运算的硬件实现的方法,包括:
在脉动阵列的处理元件处接收第一向量、第二向量以及第三向量,其中,接收所述第一向量包括:
在第一时间在所述处理元件的第一处理电路处接收所述第一向量的第一部分;以及
在所述第一时间之后的第二时间在所述处理元件的第二处理电路处接收所述第一向量的第二部分;
使用所述处理元件至少部分地基于所述第一向量和所述第三向量来确定第一点积;以及
使用所述处理元件至少部分地基于所述第二向量和所述第三向量来确定第二点积。
20.如权利要求19所述的硬件实现的方法,其中,确定所述第一点积包括:
在所述第一处理电路处,至少部分地基于所述第三向量和所述第一向量的第一部分来确定第一部分内积;
在所述第二处理电路处,至少部分地基于所述第三向量和所述第一向量的第二部分来确定第二部分内积;以及
使用所述处理元件,至少部分地基于所述第一部分内积和所述第二部分内积来确定所述第一点积。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862736981P | 2018-09-26 | 2018-09-26 | |
US62/736,981 | 2018-09-26 | ||
US16/369,973 | 2019-03-29 | ||
US16/369,973 US11216532B2 (en) | 2018-09-26 | 2019-03-29 | Circuitry for high-bandwidth, low-latency machine learning |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110955861A true CN110955861A (zh) | 2020-04-03 |
Family
ID=67299467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910789728.XA Pending CN110955861A (zh) | 2018-09-26 | 2019-08-26 | 用于高带宽、低延迟机器学习的电路 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11216532B2 (zh) |
CN (1) | CN110955861A (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10606975B2 (en) * | 2018-05-31 | 2020-03-31 | International Business Machines Corporation | Coordinates-based generative adversarial networks for generating synthetic physical design layout patterns |
US10706200B2 (en) | 2018-06-05 | 2020-07-07 | International Business Machines Corporation | Generative adversarial networks for generating physical design layout patterns of integrated multi-layers |
US10699055B2 (en) | 2018-06-12 | 2020-06-30 | International Business Machines Corporation | Generative adversarial networks for generating physical design layout patterns |
CN110717588B (zh) * | 2019-10-15 | 2022-05-03 | 阿波罗智能技术(北京)有限公司 | 用于卷积运算的装置和方法 |
US11656872B2 (en) * | 2019-12-13 | 2023-05-23 | Intel Corporation | Systems and methods for loading weights into a tensor processing block |
US11809798B2 (en) | 2019-12-13 | 2023-11-07 | Intel Corporation | Implementing large multipliers in tensor arrays |
US11740687B2 (en) | 2020-04-21 | 2023-08-29 | Western Digital Technologies, Inc. | Variable power mode inferencing |
KR20220015680A (ko) | 2020-07-31 | 2022-02-08 | 삼성전자주식회사 | 딥러닝 연산 수행 방법 및 장치 |
US20220058468A1 (en) * | 2020-08-21 | 2022-02-24 | U.S. Army Research Laboratory | Field Programmable Neural Array |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6891538B1 (en) * | 1999-07-01 | 2005-05-10 | Microsoft Corporation | Dual mode device and method for generating vector cross products or dot products |
US8825730B1 (en) * | 2011-10-04 | 2014-09-02 | Altera Corporation | Matrix decomposition using dataflow techniques |
US10049082B2 (en) | 2016-09-15 | 2018-08-14 | Altera Corporation | Dot product based processing elements |
US10817587B2 (en) * | 2017-02-28 | 2020-10-27 | Texas Instruments Incorporated | Reconfigurable matrix multiplier system and method |
US11556762B2 (en) * | 2018-04-21 | 2023-01-17 | Microsoft Technology Licensing, Llc | Neural network processor based on application specific synthesis specialization parameters |
-
2019
- 2019-03-29 US US16/369,973 patent/US11216532B2/en active Active
- 2019-08-26 CN CN201910789728.XA patent/CN110955861A/zh active Pending
-
2021
- 2021-12-23 US US17/560,950 patent/US11899746B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11216532B2 (en) | 2022-01-04 |
US20220114236A1 (en) | 2022-04-14 |
US20190228051A1 (en) | 2019-07-25 |
US11899746B2 (en) | 2024-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11899746B2 (en) | Circuitry for high-bandwidth, low-latency machine learning | |
US20240176619A1 (en) | FPGA Specialist Processing Block for Machine Learning | |
US11662979B2 (en) | Adder circuitry for very large integers | |
CN110955406A (zh) | 浮点动态范围扩展 | |
US11809798B2 (en) | Implementing large multipliers in tensor arrays | |
EP2550593B1 (en) | Look up table structure supporting quaternary adders | |
US20210326111A1 (en) | FPGA Processing Block for Machine Learning or Digital Signal Processing Operations | |
US20240126507A1 (en) | Apparatus and method for processing floating-point numbers | |
EP4155901A1 (en) | Systems and methods for sparsity operations in a specialized processing block | |
EP4109235A1 (en) | High precision decomposable dsp entity | |
GB2614705A (en) | Neural network accelerator with configurable pooling processing unit | |
CN113050919A (zh) | 用于乘法器密集映射的高效逻辑块架构 | |
GB2614327A (en) | Configurable pooling process unit for neural network accelerator | |
CN114675803A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20241008 Address after: California, USA Applicant after: Altera Corp. Country or region after: U.S.A. Address before: California, USA Applicant before: INTEL Corp. Country or region before: U.S.A. |