CN116340249A - 用于专用处理块中的结构化混合精度的系统和方法 - Google Patents
用于专用处理块中的结构化混合精度的系统和方法 Download PDFInfo
- Publication number
- CN116340249A CN116340249A CN202211466598.4A CN202211466598A CN116340249A CN 116340249 A CN116340249 A CN 116340249A CN 202211466598 A CN202211466598 A CN 202211466598A CN 116340249 A CN116340249 A CN 116340249A
- Authority
- CN
- China
- Prior art keywords
- values
- value
- configurable
- precision
- multipliers
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 52
- 238000000034 method Methods 0.000 title abstract description 21
- 239000000203 mixture Substances 0.000 title abstract description 12
- 239000000758 substrate Substances 0.000 claims description 5
- 230000004913 activation Effects 0.000 description 44
- 238000001994 activation Methods 0.000 description 44
- 238000010586 diagram Methods 0.000 description 25
- 239000013598 vector Substances 0.000 description 22
- 238000007906 compression Methods 0.000 description 20
- 230000006835 compression Effects 0.000 description 20
- 238000013473 artificial intelligence Methods 0.000 description 12
- 239000011159 matrix material Substances 0.000 description 11
- 238000007667 floating Methods 0.000 description 10
- 238000010801 machine learning Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000011664 signaling Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 101100446506 Mus musculus Fgf3 gene Proteins 0.000 description 2
- 101100348848 Mus musculus Notch4 gene Proteins 0.000 description 2
- 101100317378 Mus musculus Wnt3 gene Proteins 0.000 description 2
- 238000013459 approach 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
- 238000002156 mixing Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003909 pattern recognition Methods 0.000 description 2
- 230000036316 preload Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013507 mapping Methods 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
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Geometry (AREA)
- Logic Circuits (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开涉及用于专用处理块中的结构化混合精度的系统和方法。本公开涉及数字信号处理(DSP)块,该DSP块包括:多个权重寄存器,可配置为接收和存储具有多个精度的第一多个值;以及多个乘法器,每个乘法器可配置为接收第一多个值中的相应值。DSP块还包括:一个或多个输入,可配置为接收第二多个值;以及复用器网络,可配置为接收第二多个值,并将第二多个值中的每个相应值路由到多个乘法器中的乘法器。乘法器可配置为同时将第一多个值中的每个值与第二多个值中的相应值相乘,以产生多个乘积。此外,DSP块包括加法器电路,可配置为基于多个乘积来产生第一和以及第二和。
Description
技术领域
本公开总体涉及集成电路(IC)器件,例如可编程逻辑器件(PLD)。更具体地,本公开涉及一种能够包括在集成电路器件上的处理块(例如,数字信号处理(DSP)块)以及能够使用该处理块执行的应用。
背景技术
本节旨在向读者介绍可能与本公开各个方面相关的技术的各个方面,这些方面在下文中描述和/或声称。本讨论被认为有助于向读者提供背景信息,以便于更好地理解本公开的各个方面。因此,可以理解,这些陈述是从这个角度解读的,而不是对现有技术的承认。
集成电路器件可以用于多种用途或应用,例如机器学习或人工智能(AI)应用。在某些情况下,机器学习和AI架构可能需要大量的计算和处理能力来进行处理。稀疏性(sparsity)可以用于减少执行AI操作所需的计算量。稀疏性可能需要重新训练硬件,这可能很耗时,并且需要大的设备功率输出来实现。替代地,结构化混合精度运算(structuredmixed-precision operation)可以在AI架构中实现。结构化多精度运算(structuredmulti-precision operation)可以在不需要重新训练的情况下重新组织规则的训练网络,同时仍然提供计算和功率节省。
发明内容
根据本公开的一个实施例,提供了一种用于执行结构化混合精度运算的数字信号处理(DSP)块,包括:多个权重寄存器,可配置为接收和存储第一多个值,其中,所述第一多个值包括第一部分和第二部分,其中:所述第一部分包括所述第一多个值中具有第一精度的一个或多个第一值;并且所述第二部分包括所述第一多个值中具有第二精度的一个或多个第二值;多个乘法器,其中,所述多个乘法器中的每个相应乘法器可配置为接收所述第一多个值中的相应值,其中,所述多个乘法器包括:一个或多个第一乘法器,可配置为执行涉及具有所述第一精度的值的乘法;以及一个或多个第二乘法器,可配置为执行涉及具有所述第二精度的值的乘法;一个或多个输入,可配置为接收第二多个值;复用器网络,可配置为接收所述第二多个值并将所述第二多个值中的每个相应值路由到所述多个乘法器中的乘法器,其中,所述多个乘法器可配置为同时将所述第一多个值中的每个值与所述第二多个值中的相应值相乘,以产生多个乘积;以及加法器电路,可配置为基于所述多个乘积来产生第一和以及第二和。
根据本公开的一个实施例,提供了一种集成电路器件,包括用于执行结构化混合精度运算的数字信号处理(DSP)块,所述DSP块包括:多个权重寄存器,可配置为接收和存储第一多个值,其中,所述第一多个值包括第一部分和第二部分,其中:所述第一部分包括所述第一多个值中具有第一精度的一个或多个第一值;并且所述第二部分包括所述第一多个值中具有第二精度的一个或多个第二值;多个乘法器,其中,所述多个乘法器中的每个相应乘法器可配置为接收所述第一多个值中的相应值,其中,所述多个乘法器包括:一个或多个第一乘法器,可配置为执行涉及具有所述第一精度的值的乘法;以及一个或多个第二乘法器,可配置为执行涉及具有所述第二精度的值的乘法;一个或多个输入,可配置为接收第二多个值;复用器网络,可配置为接收所述第二多个值并将所述第二多个值中的每个相应值路由到所述多个乘法器中的乘法器,其中,所述多个乘法器可配置为同时将所述第一多个值中的每个值与所述第二多个值中的相应值相乘,以产生多个乘积;以及加法器电路,可配置为基于所述多个乘积来产生第一和以及第二和。
根据本公开的一个实施例,提供了一种用于执行结构化混合精度运算的数字信号处理(DSP)块,包括:多个权重寄存器,可配置为接收和存储第一多个值,其中,所述第一多个值包括第一部分和第二部分,其中:所述第一部分包括所述第一多个值中具有第一精度的一个或多个第一值;并且所述第二部分包括所述第一多个值中具有第二精度的一个或多个第二值;多个乘法器,其中,所述多个乘法器中的每个相应乘法器可配置为接收所述第一多个值中的相应值,其中,所述多个乘法器包括:一个或多个第一乘法器,可配置为执行涉及具有所述第一精度的值的乘法;以及一个或多个第二乘法器,可配置为执行涉及具有所述第二精度的值的乘法;一个或多个输入,可配置为接收第二多个值;多个控制寄存器,可配置为存储第三多个值,其中,所述第三多个值中的值分别指示所述第二多个值中的值是要乘以所述第一多个值的所述第一部分的值还是要乘以所述第一多个值的所述第二部分的值;复用器网络,可配置为:接收所述第二多个值和所述第三多个值;以及基于所述第三多个值中的相应值,将所述第二多个值中的每个相应值路由到所述多个乘法器中的乘法器,其中,所述多个乘法器可配置为同时将所述第一多个值中的每个值与所述第二多个值中的相应值相乘,以产生多个乘积;以及加法器电路,可配置为基于所述多个乘积来产生第一和以及第二和。
附图说明
阅读以下详细说明并参考附图,可以更好地理解本公开的各个方面,其中:
图1是根据本公开的实施例的能够使用数字信号处理(DSP)块来实现算术运算的系统的框图;
图2是根据本公开的实施例的图1的集成电路器件的框图;
图3是根据本公开的实施例的图1的集成电路器件的DSP块在进行乘法运算时能够执行的过程的流程图;
图4是根据本公开的实施例的通过图1的DSP块能够实现的虚拟带宽扩展结构的框图;
图5是根据本公开的实施例的使用图1的DSP块能够执行的混合精度乘法运算的图;
图6是根据本公开的实施例的使用图1的DSP块能够执行的输入激活(activation)和权重寄存器输入值之间的乘法运算以生成输出激活的图;
图7是根据本公开的实施例的用于结构化混合精度运算的权重块压缩的图示;
图8是根据本公开的实施例的在图1的DSP块中用于结构化混合精度运算的张量列(tensor column)的框图;
图9示出了根据本公开的实施例的能够在图4的张量列和图1的DSP块内实现的混合精度权重分布;
图10A是根据本公开的实施例的用于实现结构化混合精度运算的图1的DSP块的张量列的示意图;
图10B是根据本公开的实施例的包括图10A的复用器网络的复用器的图10A的张量列的示意图;
图11A是根据本公开的实施例的用于实现结构化混合精度运算的图1的DSP块的张量列的框图;
图11B是根据本公开的另一个实施例的用于实现结构化混合精度运算的图1的DSP块的张量列的框图;
图12是根据本公开的实施例的能够包括在图1的DSP块中的张量列级联结构的示意图;
图13是根据本公开的实施例的能够包括在图1的DSP块中的结构化混合精度张量列布置的示意图;
图14是根据本公开的实施例的图13的张量列的示意图;并且
图15是根据本公开的实施例的数据处理系统的框图。
具体实施方式
下面将描述一个或多个具体实施例。为了提供这些实施例的简明描述,说明书中并未描述实际实现的所有特征。应该理解,在任何此类实际实现的开发过程中,就像在任何工程或设计项目中一样,必须做出许多特定于实现的决策,以实现开发人员的特定目标,例如遵守系统相关和业务相关的约束,这些约束可能因实现而异。此外,应该理解,这样的开发工作可能复杂且耗时,但对于那些具有本公开益处的普通技术人员来说,这将是设计、生产和制造的常规工作。
在介绍本公开的各种实施例的元素时,冠词“一”、“一个”和“该”意指存在一个或多个元素。术语“包含”、“包括”和“具有”旨在是包含性的,意指除所列元素外,可能还有其他元素。此外,应当理解,本公开的“一些实施例”、“实施例”、“一个实施例”或“一实施例”的引用并不旨在解释为排除也包含所述特征的其他实施例的存在。例如,短语A“基于”B旨在意指A至少部分基于B。此外,术语“或”旨在是包含性的(例如,逻辑或)且非排他的(例如,逻辑异或)。换言之,短语A“或”B旨在意指A、B或者A和B。
随着机器学习和人工智能应用变得越来越普遍,越来越希望有电路来执行机器学习和人工智能应用中使用的计算。为了实现高效的硬件设计,同样的电路也可能希望扩展数字信号处理(DSP)块功能,以实现混合精度运算。目前描述的技术涉及DSP块的实施例,该DSP块可以被包括在集成电路器件(例如,可编程逻辑器件,如现场可编程门阵列(FPGA))中,并使用最小路由资源实现结构化混合精度模式(例如,涉及一个或多个相对较高精度的值和一个或多个相对较低精度的整数值)。一般来说,DSP块是一种可以在集成电路器件(包括诸如(FPGA)之类的可编程逻辑器件)中使用的电路类型,用于执行乘法、累加和加法运算。因此,虽然下面的讨论可能讨论DSP块或由DSP块在FPGA背景下执行的操作,但应该注意,这里描述的技术可以在其他类型的集成电路器件和可编程逻辑器件中实现。
本文所述的DSP块可以利用FPGA的灵活性来适应新出现的算法或修复计划实现方式中的错误。如本文所讨论的,DSP块可以通过实现可分解为子列的张量列,来扩展张量列以执行多精度运算。张量列可以包括对应于复用器模式的多级横杆架构(multi-levelcrossbar architecture),该多级横杆架构可以应用于子列的不同激活输入,以根据DSP块的每个输入的精度(例如,低精度、高精度)来选择输入。此外,混合精度运算可以包括在DSP块的张量列内使用复用器模式,以实现将寄存器输入路由到DSP块内的多个乘法器。此外,DSP块可以使用跨多个DSP块的激活广播,并将输出值从一个DSP块级联到另一个DSP块,以进行大数(large number)计算。混合精度运算可能涉及级联数据,包括跨DSP块的每个张量列的两个输出,从而能够使用DSP块进行较大值的计算。
目前描述的技术使得计算量相对于DSP块中的稀疏运算(例如,其中一些值为零的运算)节省了大约百分之二十五,而混合精度运算输出的精度损失可以忽略不计。训练好的网络中的矩阵可以按权重动态范围进行排序,并量化为与DSP块硬件支持的精度相对应的精度组。混合精度运算可以使用现有的训练过的网络,将映射信息与权重值一起加载到DSP块的张量列中,以便将激活重新排序到它们对应的权重区域。
考虑到这一点,图1示出了系统10的框图,该系统可以使用DSP块实现算术运算。设计人员可能希望在集成电路器件12(如现场可编程门阵列(FPGA)或专用集成电路(ASIC))上实现功能,例如但不限于机器学习或AI操作。在某些情况下,设计人员可以指定要实现的高级程序,如OpenCL程序,这可以使设计人员更有效和更容易地提供编程指令,以配置集成电路器件12的一组可编程逻辑单元,而不需要具体的低级硬件描述语言(如Verilog或VHDL)的知识。例如,因为OpenCL与诸如C++之类的其他高级编程语言非常相似,所以与学习不熟悉的低级硬件描述语言以实现集成电路器件12中的新功能所需的设计者相比,熟悉这种编程语言的可编程逻辑的设计者可以具有简化的学习曲线。
设计人员可以使用设计软件14来实现他们的高级设计,例如INTEL CORPORATION的版本。设计软件14可以使用编译器16,将高级程序转换为低级描述。编译器16可以提供代表高级程序的机器可读指令给主机18和集成电路器件12。主机18可以接收主机程序22,该程序可以由内核程序20实现。为了实现主机程序22,主机18可以通过通信链路24将指令从主机程序22通信到集成电路器件12,这可以是例如直接存储器访问(DMA)通信或外围组件互连快速(PCIe)通信。在一些实施例中,内核程序20和主机18可以启用集成电路器件12上的一个或多个DSP块26的配置。DSP块26可以包括实现例如执行矩阵-矩阵或矩阵-矢量乘法的运算的电路,用于AI或非AI数据处理。集成电路器件12可以包括许多(例如,数百或数千)DSP块26。此外,DSP块26可与另一DSP块通信耦合,以便从一个DSP块26输出的数据可被提供给其他DSP块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)晶体管的栅极。
考虑到上述情况,这里讨论的DSP块26可用于各种应用,并执行与应用相关联的许多不同运算,如乘法和加法。例如,矩阵和矢量(例如,矩阵-矩阵,矩阵-矢量,矢量-矢量)乘法运算可能很适合AI和数字信号处理应用。如下所述,DSP块26可以通过将一个或多个数据行与一个或多个数据列相乘来同时计算许多乘积(例如点积)。在描述DSP块26的电路之前,为了帮助提供对DSP块26能够执行的运算的概述,提供了图3。具体地,图3是DSP块26能够例如对DSP块26接收的数据执行用来确定输入数据的乘积的过程70的流程图。此外,应该注意,关于过程70所描述的运算将在随后的附图中更详细地讨论。
在过程块72,DSP块26接收数据。该数据可以包括将被相乘的值。该数据可以包括定点和浮点数据类型。在一些实施例中,数据可以是共享共同指数的定点数据类型。此外,数据可以是已经转换为定点值(例如,共享共同指数的定点值)的浮点值。如下面关于包括在DSP块26中的电路的更详细描述,输入可以包括将被存储在DSP块26中所包括的权重寄存器中的数据,以及将被存储在权重寄存器中的值乘以的值。
在处理块74,DSP块26可以将接收的数据(例如,数据的一部分)相乘,以产生乘积。例如,乘积可以是与被DSP块26接收的数据相乘的几列数据相关联的子集乘积(例如,作为在矩阵乘法运算中确定一个或多个部分乘积的一部分而确定的乘积)。例如,当两个矩阵相乘时,一个矩阵的一行的值可以与另一个矩阵的一列的值相乘,以产生子集乘积。
在处理块76,DSP块26可以压缩乘积以产生矢量。例如,如下面更详细地描述的那样,可以使用几个压缩阶段来产生DSP块26相加的矢量。
在处理块78,DSP块26可以确定压缩后的数据的和。例如,对于已经被压缩的数据列的子集乘积(例如,变成比子集乘积更少的矢量),可以使用DSP块26的加法电路(例如,一个或多个加法器、累加器等)来确定子集乘积的和。可以为数据的每一列(或一行)确定总和,如下文所述,这些数据对应于DSP块26内的寄存器的列(和行)。此外,应该注意,在一些实施例中,DSP块26可以在确定过程块78的总和之前将定点值转换为浮点值。
在过程块80,DSP块26可以输出确定的总和。如下文所述,在一些实施例中,输出可以提供给与DSP块26链接的另一个DSP块26。
考虑到图3的讨论,图4是示出使用DSP块26实现的虚拟带宽扩结构100的框图。虚拟带宽扩展结构100包括能够存储DSP块26接收的数据值的寄存器104的列102。例如,收到的数据可以是定点值,如四位或八位整数值。在其他实施例中,收到的数据可以是具有1至8个整数位或超过8个整数位的定点值。此外,收到的数据可以包括共享指数,在这种情况下,收到的数据可以被视为浮点值。虽然图示为三列102,但在其他实施例中,可以少于三列102或多于三列102。列102的寄存器104可用于存储与DSP块26所接收的数据的特定部分相关联的数据值。例如,在进行矩阵乘法运算时,每列102可以包括与矩阵的特定列相对应的数据。如下面更详细的讨论,数据可以被预装到列102中,并且数据可以被用来同时执行多个乘法运算。例如,DSP块26收到的对应于行106(例如,寄存器104)的数据可以(使用乘法器108)与存储在列102中的值相乘。更具体地说,在图示的实施例中,可以接收10行数据并同时与三列102中的数据相乘,这意味着可以计算出30个乘积(例如,子集乘积)。应该理解,可以接收任何合适数量的数据行,并且可以实施任何数量的乘法器108(例如,8、9、10个)来计算所需数量的乘积。
例如,当执行矩阵-矩阵乘法时,相同的行或列可以通过将接收到的数据值与存储在列102的寄存器104中的数据值相乘,来应用于其他维度的多个矢量。也就是说,矩阵的维度之一的多个矢量可以被预加载(例如,存储在列102的寄存器104中),并且来自另一个维度的矢量通过DSP块26被流化以与预加载值相乘。用于存储预加载值的寄存器104可以被称为“权重寄存器”。因此,在具有三列102的说明性实施例中,可以同时为每个输入(例如,每行数据)确定多达三个独立的点积。此外,当DSP块26使用结构化混合精度模式时,每个列102可以包括具有较高精度乘法器和较低精度乘法器的子列,这可能导致为三个张量列102中的每个列的每个输入同时确定六个独立的(点)积。正如下面所讨论的,这些特征可用于在实现结构化混合精度运算时对值进行乘法。此外,如上所述,DSP块26还可以接收正在接收的数据的共享指数的数据(例如,8位数据),并可以在DSP块以结构化混合精度模式运行时提供指定与特定复用器网络相关联的特定复用器控制模式的数据。这使接收的数据能够被路由到对应的级联数据值,以便在DSP块26的结构化混合精度模式运算期间进行乘法。
每一列102的部分乘积可以被压缩,如压缩块110所示,以产生一个或多个矢量(例如,由寄存器112表示),这些矢量可以通过进位加法器114相加,以产生一个或多个值。定点到浮点转换电路116可以将这些值转换为浮点格式,例如IEEE标准754提供的单精度浮点值(例如FP32),以产生浮点值(由寄存器118表示)。此外,复用器网络电路和路由电路也可以根据需要在整个DSP块26中实现,以便在由每列102执行的结构化混合精度运算期间对应于某些精度(例如4位整数、8位整数)。
DSP块26可以与其他DSP块26通信耦合,以便DSP块26可以从其他DSP块26接收数据并向其提供数据。例如,DSP块26可以从另一个DSP块26接收数据,如级联输入119所示,其可以包括将被相加(例如,通过加法器122)以产生值(由寄存器124表示)的数据。值可以提供给复用器选择电路126,该复用器选择电路126选择值或值的子集,以便从DSP块26输出(例如,去往能够基于收到的数据值确定每列102的数据的总和的电路)。复用器选择电路126的输出可以是浮点值,例如FP32值,或其他格式的浮点值,例如bfloat24格式(例如,具有一个符号位、八个指数位和十六个隐式(十五个显式)尾数位的值)、bfloat16格式(例如,具有一个符号位、八个指数位和七个显式尾数位的值)、bfloat20格式(例如,具有一个符号位、八个指数位和十一个显式尾数位的值),或任何合适的格式。每个张量列102可以被细分为两个或更多的子张量列,并使用乘法器108产生两个值(例如,乘积或部分乘积),这些值可以各自与流值相加(例如,通过两个加法器122),以产生两个可以流送到另一个DSP块26的值。这可能导致六个输出值从每个DSP块26级联到随后的DSP块26(例如,当在结构化混合精度模式下运行时)。这可能使DSP块26能够扩大结构化混合精度模式运算,用于大数计算,同时使用最小的路由资源。此外,虽然六个输出值被描述为从一个DSP块26级联到另一个,但是根据DSP块26的运算模式以及要级联的值的类型(例如,FP32值或bfloat24值),可以级联不同量的值。
如上所述,扩展AI张量处理的DSP块26也能执行结构化混合精度运算可以是有益的。这可以包括DSP块26通过配置张量电路以实现基于用于输入值的精度的特定复用器模式来执行结构化混合精度运算的能力,这使得DSP块26能够将低精度值和高精度值分别路由和操作(例如,通过乘法器和加法器电路),以用于将对这些值执行的一个或多个运算。此外,利用复用器控制网络操作来实现结构化混合精度运算的能力,使DSP块26能够减少用于结构化混合精度计算的路由资源量。因此,DSP块26通过复用器控制网络和路由网络而被配置为不同精度的能力,增加了DSP块26的效率。
考虑到上述情况,图5是示出能够由DSP块26执行的混合精度乘法运算的图。更具体地,权重寄存器输入值140(例如,w1-w8)可以是混合精度值,意味着权重寄存器输入值140的每一个可以是相对较高的精度值或相对较低的精度值。作为非限制性示例,权重寄存器输入值140的相对较高精度值可以是八位整数值,而相对较低精度值可以是四位整数值。在图示的示例中,结构化混合精度运算可以将50%的权重寄存器输入值140分配给高精度值(例如,八位整数值),并将50%的权重寄存器输入值140分配给较低精度值(例如,四位整数值)。在继续详细讨论图5之前,应该注意到,在其他情况下,混合精度运算可能涉及其他量(例如,百分比)的高精度和低精度值。例如,在其他实施例中,权重寄存器输入值140可以是75%的高精度值和25%的低精度值,25%的高精度值和75%的低精度值,或任何其他百分比的组合,其总和为100%。
DSP块26的网络可以被量化为8位整数值。这可能对应于1x8块的值(例如,权重寄存器输入值140),它们与对应的1x8块的激活值106(例如,其他整数值)相乘,该激活值106被流送到DSP块26的张量列102。例如,权重寄存器输入值140可以存储在图3的权重寄存器104中,而激活值106可以对应于流经DSP块26的图3的数据的行106。在这个结构化混合精度运算的示例中,50%的输入权重值将是较高的精度值,50%将是较低的精度值。权重块内的权重寄存器输入值140可以被输入到DSP块26的张量列102的权重寄存器104中,并且激活值106可以被流送至DSP块26。张量列102可以包括一个或多个网络,该网络可以根据权重寄存器输入值140的精度将权重寄存器输入值140路由到乘法器108。更具体地说,在图5所示的实施例中,权重寄存器输入值140中的四个(w1、w3、w5、w6)可以对应于八位整数值,并且可以被指定为高精度权重值140A,而权重寄存器输入值140中的w2、w4、w7、w8可以对应于较低精度权重值140B,例如四位整数值。高精度权重值140A可以乘以对应的激活值106A的d1、d3、d5、d6,而低精度权重值140B可以乘以激活值106B的d2、d4、d7和d8。
考虑到上述情况,图6是示出根据本公开的实施例的能够由DSP块26执行的输入激活142和权重寄存器输入值140相乘以产生输出激活144的图。权重寄存器输入值140可以被分割成块,以利用硬件操作并提高处理效率。例如,可以使用4维(h,w,d,c)张量块,其中h是输出通道的高度,w是重量,d是深度,c是数量。每个输出通道可以独立处理,可以应用1x1卷积滤波器来管理模型复杂性,分别设置h=1和w=1的值。对应于每个1x1卷积的权重寄存器输入值140可以具有深度维度的元素。权重寄存器输入值140可以按深度优先的顺序处理,以支持1x1卷积滤波器和任何其他合适的滤波器。权重寄存器输入值140可以与输入激活106的子张量输入一起以深度优先的顺序被路由到乘法器108(例如,高精度、低精度)。乘法器108的输出可以对应于输出激活值144,该输出激活值144可以被路由到一个或多个压缩块110以生成一个或多个矢量。更具体地说,权重寄存器输入值140和激活值106(其可以包括在输入激活142中)的相乘可以产生输出激活144的一部分,这可被视为输出激活146的通道。此外,激活值106可以是全精度值,即使当部分或全部权重寄存器输入值140的精度可能是相对于激活值106的较低精度值时。换句话说,激活值106可以是高精度值、低精度值、或者是高精度值和具有一个或多个低于高精度值的精度的值的组合。权重寄存器输入值140可以与包括在输入激活142中的激活值106的其他块(例如,通道)相乘,以产生输出激活144的其余部分。
权重深度可以根据所需的深度进行分区,如图7所示,该图是根据本公开的实施例的DSP块26中的结构化混合精度的权重块压缩的说明。在图示的实施例中,包括权重寄存器输入值140的权重块150可以被分割成1×8块,但在其他实施例中,可以使用任何其他合适的分割。如果没有足够的元素数量来对应1×8块大小,最后一个权重寄存器输入值140(例如,w8)可以被填充。例如,权重块150的50%的值可以分配给较高的精度值(例如,高精度权重值140A),50%的值可以分配给较低精度的值(例如,低精度权重值140B)。
权重块150可由DSP块26或包括在集成电路器件12中的其他电路进行压缩,以便值被存储在压缩权重块152中。在权重块压缩期间,报头152A被添加到压缩权重块152的开头,该报头包括二进制(例如0和1)值,以指示压缩权重块152内的对应值是低精度值还是高精度值。例如,压缩权重块152的有效载荷值152B内的第一值140C可以是较高的精度值,并且报头152A内的对应第一值154可以是“1”以表示第一值是高精度的。压缩权重块152的有效载荷值152B内的第二值140D可以是较低精度的值,并且报头152A内的对应第二值156可以是“0”以表示第二值140D是低精度值。以这种方式,报头152A可以指示压缩权重块152的有效载荷值152B内的值的精度。在结构化混合精度运算期间,DSP块26的张量列硬件可以使用权重矩阵内的结构化混合精度模式来提高计算速度。如图8所示,报头152A可用于划分权重寄存器输入值140,并将输入数据值路由到张量列102内适当的乘法器108。
具体地,图8是根据本公开的实施例的能够使用压缩权重块152执行结构化混合精度运算的硬件实现(可在DSP块26中实现)的框图。DSP块26内的每个张量列102可以包括复用器网络160(包括一个或多个复用器(例如,在图8中示出的“Sel”复用器),其基于权重寄存器输入值140的精度接收输入激活值106并路由到特定的乘法器(例如,高精度乘法器162或低精度乘法器164,两者可以被包括在乘法器108中)。例如,报头152A内的值可以表明有效载荷值152B对应于高精度值或低精度值。报头值152A可被输入到复用器网络160的每个复用器,以指示有效载荷值152B是高精度值或低精度值。复用器网络160的复用器可基于报头152A内的指示值(例如,0、1)将有效载荷值152B路由到对应的高精度乘法器162或低精度乘法器164。有效载荷值152B可以对应于低精度或高精度的值,如果该值对应于低精度,则通过复用器网络160被路由到低精度乘法器164,或者如果权重块内的值对应于高精度,则路由到高精度乘法器162。基于由报头值152A表示的有效载荷值152B的精度,输入激活值106也可以通过复用器网络160被路由到低精度乘法器164或高精度乘法器162。因此,有效载荷152的高精度值和低精度值可以被路由到适当的乘法器,并乘以输入激活值106的对应值。来自低精度乘法器164和高精度乘法器162的输出然后被路由到加法器166(例如,包括在压缩块110中的加法器电路、进位加法器114或可包括在DSP块26中的其他加法器电路),该加法器将这些值相加,并且相加的值作为输出激活144从DSP块26级联出张量列102。
已经分析了DSP块26内的结构化混合精度运算,可以使用8位值计算出高精度的存储器压缩比。压缩比可以基于块大小(l、w)、块内低精度值的百分比(p)和为低精度值分配的位数(q)按照下面的等式1来计算。
对于大于1的低精度值,该技术的开销是用于跟踪压缩权重块152内的低精度和高精度元素的位置的一位报头值152B。对于等于1的精度值,只需要低精度位的报头值,因为低精度值被量化为零。根据块内低精度值的百分比和分配给低精度值的位数的性能显示在下面的表1中:
p=0.25 | p=0.50 | p=0.75 | |
q=1(结构化稀疏) | 78.1% | 56.3% | 34.4% |
q=2(int8+int2) | 93.4% | 75% | 56.3% |
q=3(int8+int3) | 97% | 81.3% | 66% |
q=4(int8+int4) | 100% | 87.5% | 75% |
表1
此外,对于DSP块26中的结构混合精度运算,相对于计算比的性能进行了考察。计算比可以取决于p和q(c)两个因素。例如,如果假定八位整数值乘法的成本大约是四位整数值乘法的两倍,那么相对计算成本可以根据等式2计算:
根据块内低精度值的百分比(p)和分配给低精度值的位数(q),相对成本显示在以下表2中。
p=0.25 | p=0.50 | p=0.75 | |
q=1(结构化稀疏) | 75% | 50% | 25% |
q=2(int8+int2) | 81.3 | 62.5 | 43.8 |
q=3(int8+int3) | 84.4% | 68.8% | 53.1% |
q=4(int8+int4) | 87.5% | 75% | 62.5% |
表2
因此,发现用于DSP块26运算的结构化混合精度方法通过压缩权重来减少利用的存储器带宽,并且发现与可能使用0值的低精度值的稀疏方法相比,减少了计算复杂性。
考虑到上述情况,图9是根据本公开的实施例的混合精度权重分布的示例,可以根据本公开的实施例(以及本文讨论的其他实施例)在张量列102内实现。张量列102可以实现多个精度的混合,其中可以使用多个精度(例如,8位、6位、4位、2位)来指定较高的精度值和较低的精度值。混合精度分布可以是随机的,以实现功率节省的核,但也可以组织成精度组,以实现密集的计算核。应该理解,所有的激活值106可以是全精度的,而一些权重寄存器输入值140相对于输入激活142来说将是低精度的。
在一些实施例中,DSP块26可以执行没有混合精度的计算。例如,第一行170可以代表没有混合精度的常规矢量(例如,所有值都是全/高精度)。第一行170的每个方框可以对应于张量列102的权重寄存器104输入。在另一个实施例中,可以实现混合精度,50%的值可以是高精度值(例如8位),50%的值可以是低精度值(例如4位)值。
第二行172、第三行174和第四行176对应于混合精度值的其他安排,即代表50%的高精度值和50%的低精度值。在一些实施例中,可以在行内使用多个精度,并且高精度值与低精度值的比例可以变化。因此,应该理解,可以实现混合精度值的任何安排,以用于DSP块26的张量列102中的结构化混合精度运算。
考虑到上述情况,图10A是根据本公开的实施例的用于实现结构化混合精度模式的具有复用器网络160(可使用横杆布线结构实现)的张量列102的示意图。寄存器104的每个值(例如,包括报头位、有效载荷位或两者的压缩权重块152的值)可以流向复用器网络160,以使混合精度运算得到执行。复用器网络160接收这些值,并在对应于每个寄存器的八个乘法器108(例如,较高精度乘法器、较低精度乘法器)之间路由这些值以进一步处理。因此,复用器网络160使每个寄存器104与每个乘法器108相连。激活值106可以基于存储在张量列102的权重寄存器中的预加载高精度值或低精度值流向任何一个乘法器108(例如,执行图5中说明的乘法运算)。
考虑到上述情况,图10B是根据本公开的实施例的具有复用器网络结构(例如,复用器网络160)的张量列102的示意图,用于实现结构化混合精度运算。特别是,并且如图10B所示,复用器网络160可以包括复用器161(例如,8:1复用器),其接收值(例如,激活值106和报头152A的值,激活值106的值和权重寄存器值140的值,或两者)并将待乘的值路由到乘法器108。如上所述,寄存器的每个值可以流向每个复用器160,以使混合精度运算得以执行。事实上,如上所述,输入值可以根据输入值的精度,被映射到张量列102中的每个乘法器108。例如,列102的第一子列102A可以包括乘法器108,该乘法器是相对较高的精度的乘法器,可以执行涉及较高精度值(例如八位值)的乘法运算,而第二子列102B可以包括执行涉及较低精度值(例如,少于八位的值)的乘法的乘法器108。复用器网络160可以将相对较高的精度值路由到第一子列102的乘法器108,并路由第二子列102B的乘法器108的相对较低的精度值。
虽然图示的复用器网络160的实施例是完全连接的,意味着每个输入可以被路由到每个乘法器108,但应该理解,在某些情况下可以使用部分连接的网络。例如,对于50%的混合精度运算(例如,其中使用相同数量的高精度和低精度值的运算),乘法器108A可以有最多五个输入值(意味着乘法器108A可以耦合到5:1复用器161),乘法器108B可以有最多六个输入值(意味着乘法器108B可以耦合到6:1复用器161),乘法器108C可以有最多7个输入值(意味着乘法器108C可以耦合到7:1复用器161),乘法器108D可以有8个输入值(意味着乘法器108D可以耦合到8:1复用器161)。应该理解,可以使用任何合适的部分连接网络布置。
继续看图,图11A是根据本公开的实施例的DSP块26的张量列102的示例。张量列硬件可以实现混合精度运算,以减少功率输出而不增加计算密度。在图示的实施例中,张量列102可以不使用复用器网络,而是增加信令位,该信令位与每个值权重寄存器输入值140相关联。
例如,对应于第一列寄存器182中的每一个的激活值106可以通过第一列寄存器182对每个输入(例如,每一行106的数据)同时进行流送。第二列寄存器186可以是权重寄存器104,用于存储预加载的值(例如,具有相对较高的精度或相对较低的精度的值)。每个权重寄存器输入值140的动态范围在输入时是已知的,并且信令位可与每个权重寄存器输入值140相关联,以表示预加载值是高精度值还是低精度值。乘法器108可以从第一列寄存器182、第二列寄存器186和控制寄存器184(包含信令位)接收值。因此,可以进行涉及多个精度的值的乘法。乘法器108的输出随后可被路由到多个压缩器块(例如,压缩块110),以将每个乘法器108的输出压缩为矢量值。矢量值随后可被路由到一个或多个加法器,以将矢量值与级联值(例如,由DSP块列中的前一个DSP块26提供的值)相加。
权重寄存器输入值140可以被加载到第二列寄存器186,而动态范围位可以被加载到控制寄存器184。例如,权重寄存器输入值140可以对应于8位整数的高精度值和4位整数的低精度值。动态范围位可以使用1的值作为低精度值的信号,使用0的值作为高精度值的信号。例如,如果控制寄存器184中的信令位为零以指示低精度,乘法器108可以接收零,并在确定输入权重寄存器值对应于低精度值的情况下将乘法的上部分乘积清零。乘法结果的归零可由包括在乘法器108中的布斯编码电路完成。此外,可以通过使用由控制寄存器184输入的信令值的多位值来支持多精度。此外,信令位值也可用于将不同连续的部分乘积组归零。
图11B是根据本公开的实施例的DSP块26的张量列102,它包括复用器网络160,可用于混合精度运算。如上所述,张量列102可以实现结构化混合精度运算,以减少功率输出,同时不增加计算密度。张量列102可以实现复用器网络160(使用复用器161),以将输入激活值106路由到对应于高精度值(例如,八位整数值)或低精度值(例如,四位整数)的乘法器108。这种技术可用于零稀疏操作和多精度权重值操作。
如上所述,对应于第一列寄存器182中的每一列的激活值106可通过第一列寄存器182对每个输入(例如,每一行106的数据)同时进行流送。然后,复用器网络的复用器160可以选择包含对应于第二列寄存器186中的高精度值或低精度值的激活值106的第一列寄存器182,这些激活值被流进多个复用器160。因此,任何激活106可以提供给任何乘法器108(例如,高精度乘法器162,低精度乘法器164)。例如,每个第一列寄存器182中的激活值106可以通过路由网络作为每个复用器160的输入。第二列寄存器186可以是用于存储预加载值的权重寄存器104。每个权重寄存器输入值140的动态范围在输入时是已知的,并且信令位可与每个权重寄存器输入值140相关联,以表示预加载值是高精度值还是低精度值。乘法器108可将复用器160选择的每个激活值106乘以存储在第二列寄存器186之一中的对应值。乘法器108可从第一列寄存器182、第二列寄存器186和包含信令位的控制寄存器184接收值。乘法器108的输出随后可被路由到多个压缩器块(例如,压缩块110),以将每个乘法器108的输出压缩为矢量值,并且矢量值随后被路由到一个或多个加法器,以将矢量值与级联值(例如,由一列DSP块列中的前一个DSP块26提供的值)相加。
此外,除了激活值106输入之外,复用器161中的每一个可以从控制寄存器184中的每一个接收输入值。控制寄存器184可包含包括复用器网络的每个复用器160的复用器模式的信息,并指定第二列寄存器186的输入值内的高精确度值和低精确度值。例如,控制寄存器184可以包括与第二列寄存器186的压缩值内的高精度值和低精度值相对应的信息(例如,具有0或1的值的位,以分别指示值是低精度还是高精度)。该信息可使复用器161对值进行路由,以便乘法器108能够根据输入值内的高精度值和低精度值的位置执行结构化混合精度运算。每个单独权重的复用器选择值被输入到第一列寄存器182和第二列寄存器186。
在继续说明附图之前,应该注意,本文所述的张量列102的每个实施例可以包括任何合适数量的乘法器108。换句话说,张量列102可以按比例进行混合精度运算,涉及任何所需量的待乘值。
考虑到上述情况,图12是根据本公开的实施例的用于混合精度的张量列级联结构的示意图。图示的配置除了用于DSP块26内的多精度运算外,还可用于50%的结构化稀疏性。每个张量列102可以包括两个子列102A、102B,它们各自包括四个乘法器108。两个子列102A、102B可以作为单一张量列在权重优化模式和/或非稀疏性模式下运作。两个子列102A、102B也可以作为两个单独的张量列运作。
张量列102的每个子列102A、102B的乘法器108的输出可以由压缩块110压缩成矢量乘积输出。这导致由子列102A、102B的乘法器108执行的乘法运算产生两个矢量输出。矢量输出可以相加,张量列102可以将压缩的点积值输出到级联多路复用网络。级联多路复用网络可包括第一加法器190、第一复用器192、加法器194和加法器196。然后,第一加法器190可以将压缩值相加,并将所得的值路由到第一复用器192,该复用器也可以接收由子列102A的乘法器108产生的值相加而产生的第一压缩值。然后,来自第一复用器192的输出可以被路由到加法器196,以便与从另一个DSP块26(例如,从DSP块列中的前一个DSP块26级联)接收的值相加,产生级联输出值。此外,通过对子列102B的乘法器108的输出相加产生的值可以被路由到加法器194并与从另一个DSP块26收到的另一个值相加。因此,每个张量列102可以包括两个级联链,可以利用它们来相加由包括在集成电路器件12中的DSP块26的子列102A、102B产生的值。此外,应该注意,加法器194和加法器196可以包括在DSP块26的加法器122中。
为了帮助提供关于DSP块26的张量列链的更多细节,提供了图13。特别是,图13是根据本公开的实施例的混合精度张量列布置的示意图。每个DSP块26可以包括三个列200、202、204,其中列200(可以对应于列102)包括子列200A、200B,列202包括子列202A、202B,而列204包括子列204A、204B。子列200A、202A、204A可以包括全精度乘法器162(例如,8位整数乘法器),子列200B、202B、204B可以包括低精度乘法器164(例如,4位整数乘法器)。张量列200、202、204中的每一个可以包括两个复用器网络(例如,分别包括在列200的子列200A、200B中的复用器网络160A、160B),其在高精度和低精度乘法器162、164之间相应地路由输入激活值106(例如,取决于由可存储在寄存器184中的报头152A的位指示的权重寄存器输入值140的精度)。
当DSP块26在常规处理模式下操作时(例如,当执行仅涉及具有相对较高精度的值的乘法时),DSP块26可以使用子列200A、202A、204A的全精度乘法器,而不使用子列200B、202B、204B。进一步地,DSP块26可以在50%的稀疏性模式下操作(例如,50%的输入权重值为零),并使用具有图4的布置的全精度乘法器子列200A、202A、204A,以基于值是否为非零来路由输入值。替代地(例如,当仅对具有较小精度的值进行运算时),DSP块26可以仅路由子列200B、202B、204B的较低精度乘法器164的值,以便可以执行乘法运算而不使用子列200A、202A、204A的162的乘法器。因此,DSP块26可以基于权重寄存器输入值140(例如,仅是高精度或低精度值)、控制寄存器184的值或两者,在仅某些子列(例如,子列200A、202A、204A(或其任何组合)或子列200B、202B、204B(或其任何组合))的乘法器108之间路由待乘的值。如上所述,当DSP块26以结构化混合精度模式运行时,有六个子列,每个子列包括高精度乘法器162或低精度乘法器164。张量列200、202、204的输出是由高精度乘法器162输出和低精度乘法器164输出组成的。输入激活值106可以通过第一和第二复用器网络160A、160B流向乘法器(例如,高精度乘法器162、低精度乘法器164)。然后,第一和第二复用器网络160A、160B可以基于权重寄存器输入值140是高精度值还是低精度值来路由输入激活值106,如上所述。
为了帮助提供更多关于如何结合由子列计算的值的细节,提供了图14。更具体地说,图14是根据本公开的实施例的包括子列200A、200B的张量列200的示意图。如上所述,子列200A包括高精度乘法器162,子列200B包括低精度乘法器164,并且复用器网络160(例如,复用器网络160A、160B)可将输入激活值106路由到乘法器162、164以执行混合精度运算。
子列200A包括上部210A和下部210B,而子列200B包括上部212A和下部212B。上部210A、下部210B、上部212A和下部212B分别包括压缩器电路110A、110B、110C、110D,其中每一个都压缩(例如用户加法器电路)由包括在上部210A、下部210B、上部212A或下部212B中的乘法器108(例如高精度乘法器162和低精度乘法器164)产生的乘积。此外,压缩器电路110B可以接收压缩器电路110D的输出,并产生相当于下部210B的乘法器162的输出与下部212B的乘法器164的输出之和的输出。加法器194可以接收压缩器电路110B的输出以及由另一个DSP块26确定的值(例如,由DSP块链中的前一个DSP块26级联的值),并输出这两个值之和。压缩器电路110A可以接收压缩器电路110C的输出,将压缩器电路110C的输出与上部210A的乘法器162的输出(或其之和)相加,以确定输出。加法器190可以将压缩器电路110A和压缩器电路110B的输出相加。
复用器192可以接收由加法器190产生的和以及压缩器电路110A的输出,并选择性地输出由加法器190产生的和、或压缩器电路110A的输出。加法器196可以接收复用器192的输出和另一个DSP块26产生的值(例如,从另一个DSP块26级联的值),并输出这两个值的和。加法器194、196的输出可以提供给另一个DSP块26,例如,与另一个DSP块26产生的值相加。以这种方式,高精度和较低精度乘法器输出值可以加在一起,并级联到进一步的DSP块26。
除了上面讨论的结构化混合精度运算外,集成电路器件12可以是数据处理系统或包括在数据处理系统中的组件。例如,集成电路器件12可以是图15所示的数据处理系统570的组件。数据处理系统570可以包括主机处理器572(例如,中央处理单元(CPU))、存储器和/或存储电路574、以及网络接口576。数据处理系统570可以包括更多或更少的组件(例如,电子显示器、用户界面结构、特定应用集成电路(ASIC))。主处理器572可以包括任何合适的处理器,例如处理器或精简指令处理器(例如,精简指令集计算机(RISC)、高级RISC机(ARM)处理器),该处理器可以管理数据处理系统570的数据处理请求(例如,执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航或类似)。存储器和/或存储电路574可以包括随机存取存储器(RAM)、只读存储器(ROM)、一个或多个硬盘、闪存或类似物。存储器和/或存储电路574可以保存要由数据处理系统570处理的数据。在某些情况下,存储器和/或存储电路574还可以存储用于对集成电路器件12进行编程的配置程序(比特流)。网络接口576可允许数据处理系统570与其他电子设备进行通信。数据处理系统570可以包括几个不同的封装,或者可以包含在单个封装衬底上的单个封装内。例如,数据处理系统570的组件可以位于一个地点(例如,数据中心)或多个地点的几个不同的封装上。例如,数据处理系统570的组件可以位于不同的地理位置或地区,如城市、州或国家。
在一个示例中,数据处理系统570可以是处理各种不同请求的数据中心的一部分。例如,数据处理系统570可以通过网络接口576接收数据处理请求,以执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航、数字信号处理,或其他一些专门任务。
此外,在一些实施例中,DSP块26和数据处理系统570可以被虚拟化。也就是说,可以使用一个或多个虚拟机来实现DSP块26和数据处理系统570的基于软件的表示,该表示模拟本文所述的DSP块26和数据处理系统570的功能。例如,系统(例如,包括一个或多个计算设备)可以包括管理与一个或多个虚拟机相关联的资源的管理程序,并且可以分配一个或多个模拟DSP块26或数据处理系统570的虚拟机以执行乘法运算和本文所述的其他运算。
因此,本文所述的技术使特定的应用能够使用DSP块26进行。例如,DSP块26增强了集成电路器件(例如可编程逻辑器件(例如FPGA))用于可以在机器学习和人工智能应用中使用的结构化混合精度运算的能力。
虽然本公开中提出的实施例可能会受到各种修改和替代形式的影响,但具体的实施例已在附图中以示例方式显示,并在此详细描述。然而,应该理解,本公开并不打算限于所公开的特定形式。本公开应该涵盖落入所附权利要求所定义的本公开的精神和范围内的所有修改、等同物和替代物。
本文提出和要求保护的技术被引用并应用于物质对象和具有实用性的具体示例,这些示例明显地改善了目前的技术领域,因此,不是抽象的、无形的或纯粹理论的。此外,如果附在本说明书末尾的任何权利要求包含一个或多个被指定为“用于[执行][功能]的手段......”或“用于[执行][功能]的步骤......”的要素,这些要素旨在根据35U.S.C.112(f)进行解释。然而,对于任何包含以任何其他方式指定的要素的权利要求,这些要素旨在不根据35U.S.C.112(f)解释。
本公开的示例实施例
以下编号的条款定义了本公开的某些示例实施例。
条款1.
一种数字信号处理(DSP)块,包括:
多个权重寄存器,可配置为接收和存储第一多个值,其中,所述第一多个值包括第一部分和第二部分,其中:
所述第一部分包括所述第一多个值中具有第一精度的一个或多个第一值;并且
所述第二部分包括所述第一多个值中具有第二精度的一个或多个第二值;
多个乘法器,其中,所述多个乘法器中的每个相应乘法器可配置为接收所述第一多个值中的相应值,其中,所述多个乘法器包括:
一个或多个第一乘法器,可配置为执行涉及具有所述第一精度的值的乘法;以及
一个或多个第二乘法器,可配置为执行涉及具有所述第二精度的值的乘法;
一个或多个输入,可配置为接收第二多个值;
复用器网络,可配置为接收所述第二多个值并将所述第二多个值中的每个相应值路由到所述多个乘法器中的乘法器,其中,所述多个乘法器可配置为同时将所述第一多个值中的每个值与所述第二多个值中的相应值相乘,以产生多个乘积;以及
加法器电路,可配置为基于所述多个乘积来产生第一和以及第二和。
条款2.
根据条款1所述的DSP块,包括多个控制寄存器,可配置为存储第三多个值,其中:
所述复用器网络可配置为从所述多个控制寄存器接收所述第三多个值;以及
基于所述第三多个值,对所述第二多个值进行路由。
条款3.
根据条款2所述的DSP块,其中,所述第三多个值中的值分别指示所述第二多个值中的值是要乘以所述第一多个值的所述第一部分的值还是要乘以所述第一多个值的所述第二部分的值。
条款4.
根据条款1所述的DSP块,其中:
所述第一精度比所述第二精度更精确;并且
所述复用器网络可配置为:
将所述第二多个值的第一部分路由到所述一个或多个第一乘法器;以及
将所述第二多个值的第二部分路由到所述一个或多个第二乘法器;
所述多个乘法器可配置为通过以下方式产生所述多个乘积:
通过将所述一个或多个第一值中的每个值与所述第二多个值的第一部分的值相乘,产生一个或多个第一乘积;以及
通过将所述一个或多个第二值中的每个值与所述第二多个值的第二部分的值相乘,产生一个或多个第二乘积。
条款5.
根据条款4所述的DSP块,其中,所述一个或多个第二乘法器不可配置为在具有所述第一精度的值之间执行乘法。
条款6.
根据条款4所述的DSP块,其中,所述加法器电路可配置为:
通过将所述一个或多个第一乘积相加,产生所述第一和;以及
通过将所述一个或多个第二乘积相加,产生所述第二和。
条款7.
根据条款6所述的DSP块,其中,所述加法器电路包括:
第一加法器,可配置为通过将所述第一和与所述第二和相加,产生第三和;
第二加法器,可配置为通过将所述第二和与从第二DSP块接收的第一值相加,产生第四和;以及
第三加法器,可配置为通过以下方式产生第五和:
将所述第一和与从所述第二DSP块接收的第二值相加;或
将所述第三和与从所述第二DSP块接收的所述第二值相加。
条款8.
根据条款1所述的DSP块,其中:
所述第一精度和所述第二精度是相等的;并且
所述多个乘法器可配置为使用仅所述一个或多个第一乘法器来产生所述多个乘积。
条款9.
根据条款1所述的DSP块,其中:
在第一运算模式中,所述复用器网络可配置为将所述第二多个值路由到所述一个或多个第一乘法器和所述一个或多个第二乘法器;以及
在第二运算模式中,所述复用器网络可配置为将所述第二多个值路由到仅所述一个或多个第一乘法器。
条款10.
一种集成电路器件,包括数字信号处理(DSP)块,所述DSP块包括:
多个权重寄存器,可配置为接收和存储第一多个值,其中所述第一多个值包括第一部分和第二部分,其中:
所述第一部分包括所述第一多个值中具有第一精度的一个或多个第一值;以及
所述第二部分包括所述第一多个值中具有第二精度的一个或多个第二值;
多个乘法器,其中,所述多个乘法器中的每个相应乘法器可配置为接收所述第一多个值中的相应值,其中所述多个乘法器包括:
一个或多个第一乘法器,可配置为执行涉及具有所述第一精度的值的乘法;以及
一个或多个第二乘法器,可配置为执行涉及具有所述第二精度的值的乘法;
一个或多个输入,可配置为接收第二多个值;
复用器网络,可配置为接收所述第二多个值并将所述第二多个值中的每个相应值路由到所述多个乘法器中的乘法器,其中,所述多个乘法器可配置为同时将所述第一多个值中的每个值与所述第二多个值中的相应值相乘,以产生多个乘积;以及
加法器电路,可配置为基于所述多个乘积产生第一和以及第二和。
条款11.
根据条款10所述的集成电路器件,包括多个控制寄存器,可配置为存储第三多个值,其中:
所述第三多个值中的值分别指示所述第二多个值中的值是要乘以所述第一多个值的所述第一部分的值还是要乘以所述第一多个值的所述第二部分的值;
所述复用器网络可配置为从所述多个控制寄存器接收所述第三多个值;以及
所述复用器网络可配置为基于所述第三多个值,对所述第二多个值进行路由。
条款12.
根据条款11所述的集成电路器件,其中,所述复用器网络包括多个复用器,每个复用器可配置为:
接收所述第二多个值中的至少两个值;
接收所述第三多个值中的相应值;以及
基于所述第三多个值中的相应值,将所述第二多个值中的所述至少两个值之一路由到所述多个乘法器中的乘法器。
条款13.
根据条款10所述的集成电路器件,其中,所述一个或多个第一值各自包括八位,并且所述一个或多个第二值各自包括少于八位。
条款14.
根据条款13所述的集成电路器件,其中所述一个或多个第二值各自包括一个以上的位。
条款15.
根据条款10所述的集成电路器件,其中:
所述多个乘法器布置在第一列乘法器和第二列乘法器中;并且
所述DSP块包括第三列乘法器和第四列乘法器。
条款16.
根据条款10所述的集成电路器件,包括第二DSP块,通信耦合到所述DSP块,并且所述第二DSP块可配置为输出第一输出和第二输出,其中:
所述多个乘积包括:
一个或多个第一乘积,所述一个或多个第一乘积是通过将所述一个或多个第一值中的值与所述第二多个值中的值相乘来产生的;以及
一个或多个第二乘积,所述一个或多个第二乘积是通过将所述一个或多个第二值中的值与所述第二多个值中未乘以任意所述一个或多个第一值的值相乘来产生的;
所述加法器电路可配置为:
通过将所述一个或多个第一乘积相加,产生所述第一和;以及
通过将所述一个或多个第二乘积相加,产生所述第二和;
所述加法器电路包括:
第一加法器,可配置为通过将所述第一和与所述第二和相加,产生第三和;
第二加法器,可配置为通过将所述第二和与从第二DSP块接收的第一值相加,产生第四和;以及
第三加法器,可配置为通过以下方式产生第五和:
将所述第一和与从所述第二DSP块接收的第二值相加;或
将所述第三和与从所述第二DSP块接收的所述第二值相加。
条款17.
根据条款10所述的集成电路器件,其中所述集成电路器件包括现场可编程门阵列(FPGA)。
条款18.
一种数字信号处理(DSP)块,包括:
多个权重寄存器,可配置为接收和存储第一多个值,其中,所述第一多个值包括第一部分和第二部分,其中:
所述第一部分包括所述第一多个值中具有第一精度的一个或多个第一值;并且
所述第二部分包括所述第一多个值中具有第二精度的一个或多个第二值;
多个乘法器,其中,所述多个乘法器中的每个相应乘法器可配置为接收所述第一多个值中的相应值,其中,所述多个乘法器包括:
一个或多个第一乘法器,可配置为执行涉及具有所述第一精度的值的乘法;以及
一个或多个第二乘法器,可配置为执行涉及具有所述第二精度的值的乘法;
一个或多个输入,可配置为接收第二多个值;
多个控制寄存器,可配置为存储第三多个值,其中,所述第三多个值中的值分别指示所述第二多个值中的值是要乘以所述第一多个值的所述第一部分的值还是要乘以所述第一多个值的所述第二部分的值;
复用器网络,可配置为:
接收所述第二多个值和所述第三多个值;以及
基于所述第三多个值中的相应值,将所述第二多个值中的每个相应值路由到所述多个乘法器中的乘法器,其中,所述多个乘法器可配置为同时将所述第一多个值中的每个值与所述第二多个值中的相应值相乘,以产生多个乘积;以及
加法器电路,可配置为基于所述多个乘积来产生第一和以及第二和。
条款19.
根据条款18所述的DSP块,其中:
所述DSP块被实现在可配置为耦合到衬底的第一集成电路器件上;并且
所述第一集成电路器件可配置为通信地耦合到第二集成电路器件,所述第二集成电路器件可配置为耦合到所述衬底。
条款20.
根据条款19所述的DSP块,其中:
所述第一集成电路器件包括可编程逻辑;并且
所述第二集成电路器件是处理器。
Claims (20)
1.一种用于执行结构化混合精度运算的数字信号处理(DSP)块,包括:
多个权重寄存器,可配置为接收和存储第一多个值,其中,所述第一多个值包括第一部分和第二部分,其中:
所述第一部分包括所述第一多个值中具有第一精度的一个或多个第一值;并且
所述第二部分包括所述第一多个值中具有第二精度的一个或多个第二值;
多个乘法器,其中,所述多个乘法器中的每个相应乘法器可配置为接收所述第一多个值中的相应值,其中,所述多个乘法器包括:
一个或多个第一乘法器,可配置为执行涉及具有所述第一精度的值的乘法;以及
一个或多个第二乘法器,可配置为执行涉及具有所述第二精度的值的乘法;
一个或多个输入,可配置为接收第二多个值;
复用器网络,可配置为接收所述第二多个值并将所述第二多个值中的每个相应值路由到所述多个乘法器中的乘法器,其中,所述多个乘法器可配置为同时将所述第一多个值中的每个值与所述第二多个值中的相应值相乘,以产生多个乘积;以及
加法器电路,可配置为基于所述多个乘积来产生第一和以及第二和。
2.根据权利要求1所述的DSP块,包括多个控制寄存器,可配置为存储第三多个值,其中:
所述复用器网络可配置为从所述多个控制寄存器接收所述第三多个值;并且
所述复用器网络可配置为基于所述第三多个值,对所述第二多个值进行路由。
3.根据权利要求2所述的DSP块,其中,所述第三多个值中的值分别指示所述第二多个值中的值是要乘以所述第一多个值的所述第一部分的值还是要乘以所述第一多个值的所述第二部分的值。
4.根据权利要求1所述的DSP块,其中:
所述第一精度比所述第二精度更精确;并且
所述复用器网络可配置为:
将所述第二多个值的第一部分路由到所述一个或多个第一乘法器;以及
将所述第二多个值的第二部分路由到所述一个或多个第二乘法器;所述多个乘法器可配置为通过以下方式产生所述多个乘积:
通过将所述一个或多个第一值中的每个值与所述第二多个值的第一部分的值相乘,产生一个或多个第一乘积;以及
通过将所述一个或多个第二值中的每个值与所述第二多个值的第二部分的值相乘,产生一个或多个第二乘积。
5.根据权利要求4所述的DSP块,其中,所述一个或多个第二乘法器不可配置为在具有所述第一精度的值之间执行乘法。
6.根据权利要求4所述的DSP块,其中,所述加法器电路可配置为:
通过将所述一个或多个第一乘积相加,产生所述第一和;以及
通过将所述一个或多个第二乘积相加,产生所述第二和。
7.根据权利要求6所述的DSP块,其中,所述加法器电路包括:
第一加法器,可配置为通过将所述第一和与所述第二和相加,产生第三和;
第二加法器,可配置为通过将所述第二和与从第二DSP块接收的第一值相加,产生第四和;以及
第三加法器,可配置为通过以下方式产生第五和:
将所述第一和与从所述第二DSP块接收的第二值相加;或
将所述第三和与从所述第二DSP块接收的所述第二值相加。
8.根据权利要求1至7中任一项所述的DSP块,其中:
所述第一精度和所述第二精度是相等的;并且
所述多个乘法器可配置为使用仅所述一个或多个第一乘法器来产生所述多个乘积。
9.根据权利要求1至7中任一项所述的DSP块,其中:
在第一运算模式中,所述复用器网络可配置为将所述第二多个值路由到所述一个或多个第一乘法器和所述一个或多个第二乘法器;以及
在第二运算模式中,所述复用器网络可配置为将所述第二多个值路由到仅所述一个或多个第一乘法器。
10.一种集成电路器件,包括用于执行结构化混合精度运算的数字信号处理(DSP)块,所述DSP块包括:
多个权重寄存器,可配置为接收和存储第一多个值,其中,所述第一多个值包括第一部分和第二部分,其中:
所述第一部分包括所述第一多个值中具有第一精度的一个或多个第一值;并且
所述第二部分包括所述第一多个值中具有第二精度的一个或多个第二值;
多个乘法器,其中,所述多个乘法器中的每个相应乘法器可配置为接收所述第一多个值中的相应值,其中,所述多个乘法器包括:
一个或多个第一乘法器,可配置为执行涉及具有所述第一精度的值的乘法;以及
一个或多个第二乘法器,可配置为执行涉及具有所述第二精度的值的乘法;
一个或多个输入,可配置为接收第二多个值;
复用器网络,可配置为接收所述第二多个值并将所述第二多个值中的每个相应值路由到所述多个乘法器中的乘法器,其中,所述多个乘法器可配置为同时将所述第一多个值中的每个值与所述第二多个值中的相应值相乘,以产生多个乘积;以及
加法器电路,可配置为基于所述多个乘积来产生第一和以及第二和。
11.根据权利要求10所述的集成电路器件,包括多个控制寄存器,可配置为存储第三多个值,其中:
所述第三多个值中的值分别指示所述第二多个值中的值是要乘以所述第一多个值的所述第一部分的值还是要乘以所述第一多个值的所述第二部分的值;
所述复用器网络可配置为从所述多个控制寄存器接收所述第三多个值;并且
所述复用器网络可配置为基于所述第三多个值,对所述第二多个值进行路由。
12.根据权利要求11所述的集成电路器件,其中,所述复用器网络包括多个复用器,每个复用器可配置为:
接收所述第二多个值中的至少两个值;
接收所述第三多个值中的相应值;以及
基于所述第三多个值中的相应值,将所述第二多个值中的所述至少两个值之一路由到所述多个乘法器中的乘法器。
13.根据权利要求10至12中任一项所述的集成电路器件,其中,所述一个或多个第一值各自包括八位,并且所述一个或多个第二值各自包括少于八位。
14.根据权利要求13所述的集成电路器件,其中,所述一个或多个第二值各自包括一个以上的位。
15.根据权利要求10至12中任一项所述的集成电路器件,其中:
所述多个乘法器布置在第一列乘法器和第二列乘法器中;并且
所述DSP块包括第三列乘法器和第四列乘法器。
16.根据权利要求10至12中任一项所述的集成电路器件,包括第二DSP块,通信耦合到所述DSP块,并且所述第二DSP块可配置为输出第一输出和第二输出,其中:
所述多个乘积包括:
一个或多个第一乘积,所述一个或多个第一乘积是通过将所述一个或多个第一值中的值与所述第二多个值中的值相乘来产生的;以及
一个或多个第二乘积,所述一个或多个第二乘积是通过将所述一个或多个第二值中的值与所述第二多个值中未乘以任意所述一个或多个第一值的值相乘来产生的;
所述加法器电路可配置为:
通过将所述一个或多个第一乘积相加,产生所述第一和;以及
通过将所述一个或多个第二乘积相加,产生所述第二和;
所述加法器电路包括:
第一加法器,可配置为通过将所述第一和与所述第二和相加,产生第三和;
第二加法器,可配置为通过将所述第二和与从第二DSP块接收的第一值相加,产生第四和;以及
第三加法器,可配置为通过以下方式产生第五和:
将所述第一和与从所述第二DSP块接收的第二值相加;或
将所述第三和与从所述第二DSP块接收的所述第二值相加。
17.根据权利要求10所述的集成电路器件,其中,所述集成电路器件包括现场可编程门阵列(FPGA)。
18.一种用于执行结构化混合精度运算的数字信号处理(DSP)块,包括:
多个权重寄存器,可配置为接收和存储第一多个值,其中,所述第一多个值包括第一部分和第二部分,其中:
所述第一部分包括所述第一多个值中具有第一精度的一个或多个第一值;并且
所述第二部分包括所述第一多个值中具有第二精度的一个或多个第二值;
多个乘法器,其中,所述多个乘法器中的每个相应乘法器可配置为接收所述第一多个值中的相应值,其中,所述多个乘法器包括:
一个或多个第一乘法器,可配置为执行涉及具有所述第一精度的值的乘法;以及
一个或多个第二乘法器,可配置为执行涉及具有所述第二精度的值的乘法;
一个或多个输入,可配置为接收第二多个值;
多个控制寄存器,可配置为存储第三多个值,其中,所述第三多个值中的值分别指示所述第二多个值中的值是要乘以所述第一多个值的所述第一部分的值还是要乘以所述第一多个值的所述第二部分的值;
复用器网络,可配置为:
接收所述第二多个值和所述第三多个值;以及
基于所述第三多个值中的相应值,将所述第二多个值中的每个相应值路由到所述多个乘法器中的乘法器,其中,所述多个乘法器可配置为同时将所述第一多个值中的每个值与所述第二多个值中的相应值相乘,以产生多个乘积;以及
加法器电路,可配置为基于所述多个乘积来产生第一和以及第二和。
19.根据权利要求18所述的DSP块,其中:
所述DSP块被实现在可配置为耦合到衬底的第一集成电路器件上;并且
所述第一集成电路器件可配置为通信地耦合到第二集成电路器件,所述第二集成电路器件可配置为耦合到所述衬底进行。
20.根据权利要求19所述的DSP块,其中:
所述第一集成电路器件包括可编程逻辑;并且
所述第二集成电路器件是处理器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/559,338 US20220113940A1 (en) | 2021-12-22 | 2021-12-22 | Systems and Methods for Structured Mixed-Precision in a Specialized Processing Block |
US17/559,338 | 2021-12-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116340249A true CN116340249A (zh) | 2023-06-27 |
Family
ID=81078971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211466598.4A Pending CN116340249A (zh) | 2021-12-22 | 2022-11-22 | 用于专用处理块中的结构化混合精度的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220113940A1 (zh) |
EP (1) | EP4202776A1 (zh) |
CN (1) | CN116340249A (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9465578B2 (en) * | 2013-12-13 | 2016-10-11 | Nvidia Corporation | Logic circuitry configurable to perform 32-bit or dual 16-bit floating-point operations |
US10747502B2 (en) * | 2018-09-19 | 2020-08-18 | Xilinx, Inc. | Multiply and accumulate circuit |
US20210326116A1 (en) * | 2021-06-25 | 2021-10-21 | Intel Corporation | High precision decomposable dsp entity |
-
2021
- 2021-12-22 US US17/559,338 patent/US20220113940A1/en active Pending
-
2022
- 2022-11-11 EP EP22206930.4A patent/EP4202776A1/en active Pending
- 2022-11-22 CN CN202211466598.4A patent/CN116340249A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4202776A1 (en) | 2023-06-28 |
US20220113940A1 (en) | 2022-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11656872B2 (en) | Systems and methods for loading weights into a tensor processing block | |
US12045581B2 (en) | Floating-point dynamic range expansion | |
US11899746B2 (en) | Circuitry for high-bandwidth, low-latency machine learning | |
US11809798B2 (en) | Implementing large multipliers in tensor arrays | |
US20210326111A1 (en) | FPGA Processing Block for Machine Learning or Digital Signal Processing Operations | |
US20190018673A1 (en) | Reduction operation mapping systems and methods | |
US20200097253A1 (en) | Digital Circuit With Compressed Carry | |
EP4155901A1 (en) | Systems and methods for sparsity operations in a specialized processing block | |
US11163530B2 (en) | Programmable-logic-directed multiplier mapping | |
US20210326116A1 (en) | High precision decomposable dsp entity | |
CN116340249A (zh) | 用于专用处理块中的结构化混合精度的系统和方法 | |
CN109101219A (zh) | 高基数子集代码乘法器架构 | |
US20230206041A1 (en) | Deep learning acceleration with mixed precision | |
US20230206042A1 (en) | Deep learning acceleration with mixed precision | |
US20230206061A1 (en) | Deep learning acceleration with mixed precision | |
US20230206045A1 (en) | Deep learning acceleration with mixed precision | |
US20230206044A1 (en) | Deep learning acceleration with mixed precision | |
CN114675804A (zh) | 用于低延时模块化乘法的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |