CN111753993A - 用于可编程器件的机器学习训练架构 - Google Patents

用于可编程器件的机器学习训练架构 Download PDF

Info

Publication number
CN111753993A
CN111753993A CN202010125245.2A CN202010125245A CN111753993A CN 111753993 A CN111753993 A CN 111753993A CN 202010125245 A CN202010125245 A CN 202010125245A CN 111753993 A CN111753993 A CN 111753993A
Authority
CN
China
Prior art keywords
circuit
adder
floating
floating point
format
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010125245.2A
Other languages
English (en)
Inventor
M·朗哈默尔
B·帕斯卡
S·格里波克
G·W·贝克勒
A·哈杰斯库
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN111753993A publication Critical patent/CN111753993A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Nonlinear Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Neurology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Complex Calculations (AREA)
  • Logic Circuits (AREA)

Abstract

可编程器件可以被配置为使用在脉动阵列上实施的矩阵乘法电路来支持机器学习训练操作。脉动阵列包括处理元件的阵列,每个处理元件包括混合浮点点积电路。混合点积电路具有硬数据路径和硬/软数据路径,硬数据路径使用以浮点模式进行操作的数字信号处理(DSP)块,硬/软数据路径使用结合通用的软逻辑操作的以定点模式进行操作的DSP块。硬/软数据路径包括馈送加法器树的2元素点积电路。使用格式转换和归一化电路将硬数据路径的结果与加法器树合并。混合点积电路的输入可以是BFLOAT16格式。硬数据路径可以是单精度格式。硬/软数据路径使用与BFLOAT16类似但不同的定制的格式。

Description

用于可编程器件的机器学习训练架构
交叉引用
本公开要求于2019年3月27日提交的临时专利申请No.62/824,797的权益,因此其全部内容通过引用并入本文。
背景技术
本发明通常涉及集成电路,并且特别地,涉及被配置为支持机器学习的可编程集成电路。
诸如可编程逻辑器件(PLD)的可编程集成电路包括具有查找表(LUT)和基于加法器的逻辑的可配置逻辑电路,查找表(LUT)和基于加法器的逻辑被设计为允许用户根据用户的特定需求来定制电路。除该可配置逻辑之外,PLD还包括用于连接可配置逻辑块的输入和输出的可编程互连或布线电路。该可编程逻辑和布线电路的组合称为“软”逻辑。
除了软逻辑,PLD还可以包括实施特定的预定义逻辑功能的专门处理块,并且因此专门处理块不能由用户进行配置。这样的专门处理块可以包括PLD上的电路的集中,该PLD已经部分地或完全地硬连线以执行一个或多个特定任务,例如逻辑的或数学的操作。PLD上已经提供的一个特别有用的专门处理块类型是数字信号处理(DSP)块。常规的DSP块包括两个18×18乘法器,其可以与其他内部电路组合以形成更大的27×27乘法器。27×27乘法器用作要求24位精度的IEEE 754单精度浮点乘法器的一部分。
人工智能的最新发展(例如机器学习和深度学习的进步)涉及训练和推理,这已经需要更高的乘法密度。与使用相对简单的数学和数据流的推理相反,机器学习训练涉及需要访问外部存储器的、更复杂的大型矩阵乘法。然而,对外部存储器的访问由外部存储带宽和内部带宽管理约束所限制。使用传统的浮点乘法器来支持PLD上的复杂训练操作可能是不够的。使用过多的软逻辑与传统的浮点乘法器结合来支持训练也易于产生拟合和时序收敛问题。
在此背景内,出现了本文描述的实施例。
附图说明
图1是根据实施例的说明性的可编程集成电路的示图。
图2是根据实施例的说明性的机器学习训练电路的示图。
图3是根据实施例的脉动阵列处理元件的示图。
图4是根据实施例的示出对处理元素的阵列的说明性的矩阵分配的示图。
图5A是根据实施例的说明性的混合浮点16元素点积电路的示图。
图5B是根据实施例的说明性的2元素点积电路的示图。
图6A是经典的浮点乘法器的示图。
图6B是根据实施例的图5B所示的2元素点积电路内的说明性的定制浮点乘法器的示图。
图7A是经典的浮点加法器的示图。
图7B是根据实施例的图5B所示的2元素点积电路内的说明性的浮点加法器的示图。
图7C是根据实施例的图5A的混合浮点点积电路的第一加法器级中的说明性的定制浮点加法器的示图。
图7D是根据实施例的图5A的混合浮点点积电路的第二加法器级中的说明性的定制浮点加法器的示图。
图7E是根据实施例的图5A的混合浮点点积电路的第三加法器级中的说明性的定制浮点加法器的示图。
图8是根据实施例的图5A所示的混合浮点点积电路内的说明性的浮点格式转换电路的示图。
图9是根据实施例的图5A所示的混合浮点点积电路内的说明性的归一化电路的示图。
图10A是说明性的桶形移位器的示图。
图10B和图10C是根据一些实施例的说明性的基于进位链的桶形移位电路的示图。
具体实施方式
本实施例涉及可编程集成电路,并且特别地,涉及用于有效地支持机器学习训练的可编程集成电路上的电路。本领域技术人员将认识到,可以在没有一些或所有这些具体细节的情况下实践本示例性的实施例。在其他实例中,为了不会不必要地使本实施例难以理解,没有详细描述公知的操作。
图1中示出了诸如可编程逻辑器件(PLD)100的集成电路的说明性实施例。如图1所示,可编程逻辑器件100可以包括功能块的二维阵列,该功能块包括逻辑阵列块(LAB)110和其他功能块,例如随机存取存储器(RAM)块130和专门处理块,例如专门处理块(SPB)120,所述功能块被部分地或完全地硬连线以执行一个或多个特定的任务,例如数学/算术操作。诸如LAB 110的功能块可以包括较小的可编程区域(例如,逻辑元件、可配置逻辑块或自适应逻辑模块),该较小的可编程区域接收输入信号并且对输入信号执行定制的功能以产生输出信号。器件100还可以包括可编程布线构造,该可编程布线构造用于将LAB 110与RAM块130和专门处理块120(有时被称为数字信号处理或DSP块)互连。可编程逻辑和布线构造的组合有时被称为“软”逻辑,而DSP块有时被称为“硬”逻辑(即,可以独立于软逻辑进行操作且不依赖软逻辑的电路块)。通常,器件100还可以包括其他类型的硬逻辑电路。
可编程逻辑器件100(例如,现场可编程门阵列或“FPGA”)可以包含用于配置软逻辑的可编程存储元件。可以使用输入/输出元件(IOE)102使存储元件加载有配置数据(也被称为编程数据)。一旦加载,存储元件提供相应的静态控制信号,该相应的静态控制信号控制一个或多个LAB 110、可编程布线构造和可选的SPB 120或RAM 130的操作。在典型情况下,加载的存储元件的输出被施加到金属氧化物半导体晶体管(例如,传输晶体管)的栅极,以接通或关断某些晶体管,并且从而在包括布线路径的功能块中对所述逻辑进行配置。可以以这种方式控制的可编程逻辑电路元件包括多路复用器(例如,用于在互连电路中形成布线路径的多路复用器)、查找表,逻辑阵列、与、或、与非和或非逻辑门、传输门等的部分。
存储元件可以使用任何适当的易失性和/或非易失性存储结构,例如随机存取存储器(RAM)单元、熔断器、反熔断器、可编程只读存储器存储单元、掩模可编程和激光可编程结构、机械存储器件(例如,包括局部机械谐振器)、机械操作的RAM(MORAM)、可编程的金属化单元(PMC)、导电桥RAM(CBRAM)、这些结构的组合等。因为在编程期间存储元件被加载有配置数据,该存储元件有时被称为配置存储器、配置RAM(CRAM)、配置存储元件或可编程存储元件。
另外,可编程逻辑器件100可以具有用于将信号驱动离开器件100和接收来自其他器件的信号的输入/输出元件(IOE)102。输入/输出元件102可以包括并行输入/输出电路、串行数据收发器电路、差分接收器和发送器电路、或用于将一个集成电路连接到另一集成电路的其他电路。如图所示,输入/输出元件102可以位于芯片的***周围。如果需要,可编程逻辑器件可以具有以不同方式布置的输入/输出元件102。例如,输入/输出元件102可以形成一列或多列输入/输出元件,该一列或多列输入/输出元件可以位于可编程逻辑器件上的任何地方(例如,均匀地分布在PLD的宽度上)。如果需要,输入/输出元件102可以形成一行或多行输入/输出元件(例如,分布在PLD的高度上)。替代地,输入/输出元件102可以形成输入/输出元件的岛状区,该输入/输出元件的岛状区可以分布在PLD的表面之上或聚集在所选区域中。
PLD 100上的布线构造(有时被称为可编程互连电路)可以以垂直布线通道140(即,沿PLD 100的垂直轴形成的互连)和水平布线通道150(即,沿PLD 100的水平轴形成的互连)的形式被提供,每个布线通道包括至少一个轨(track)来布线至少一根导线。如果需要,布线导线可以比布线通道的整个长度短。长度L的导线可以跨越L个功能块。例如,长度四的导线可以跨越四个功能块。水平布线通道中的长度四的导线可以被称为“H4”导线,而垂直布线通道中的长度四的导线可以被称为“V4”导线。
此外,应当理解,本实施例可以被实施在任何集成电路中。如果需要,这样的集成电路的功能块可以布置在多个级别或层中,其中多个功能块被互连以形成更大的块。其他器件布置可以使用不以行和列布置的功能块。
可编程器件100可以用于支持训练神经网络。训练神经网络(例如多层感知器(MLP))是计算密集的过程,该过程涉及包括密集矩阵乘法的重复的正向操作和反向操作。由于训练数据的数字特性(例如对支持非常小的数字的需要),经常需要浮点表示。结果,MLP神经网络的总体训练性能由总体浮点吞吐量所限制并且还由底层计算架构的存储带宽所限制。
其中使用FPGA 100支持MLP神经网络的器件构造在本文中有时被作为示例描述。但是,这仅仅是说明性的。通常,本文中描述的提高器件100执行MLP训练的能力的架构和相关技术可以应用于其他类型的训练和机器学习过程。
现在深入研究更多细节,多层感知器是具有数层的神经网络,每层以权重矩阵为特征。每层使用非线性激活函数(例如,修正线性单元或“ReLU”)及其反函数。网络通过所有层传播被分组为突发的激活数据,并且学习过程确定每层所需的权重变化。通过数次计算迭代,该网络学习了对一些目标函数敏感的权重矩阵。
这样的网络的训练可以涉及两遍(two passes):(1)正向遍,其中每个连续层使用当前权重矩阵和通过激活函数传递的前一层的输出来执行矩阵乘法;以及(2)反向遍,计算激活数据的梯度并确定需要应用于权重矩阵的变化。作为示例,权重更新策略可以基于随机梯度下降(SGD)。此外,与权重矩阵一起还学习了偏差矢量。
为多层储存所有权重和激活矩阵所需的存储器可能超过了FPGA上可用的片上储存容量。因此,所有矩阵都可以以逐行(row-wise)格式储存在外部存储器件中,例如单独地附到FPGA的片外双倍数据速率4(DDR4)动态随机存取存储器(DRAM)中。外部DDR存储器通常在顺序地读取数据方面效率更高(即,遍历一个矩阵方向将高效工作,但遍历不同的方向时效果不佳)。数据应该以这种方式重新排序,以便可以联合地检索可以被分组为突发的大序列的连续地址。具有足够的DDR存储带宽可以帮助维持最佳性能。
图2是根据实施例的说明性的机器学习训练架构200的示图。如图2所示,训练电路200可以包括3级管道,该3级管道读取和写入经由环形拓扑连接的片外存储器210(例如,DDR存储器)。第一管道级可以包括第一矩阵加载电路202(例如,被配置为加载矩阵“A”的电路)和第二矩阵加载电路204(例如,被配置为加载矩阵“B”的电路)。第二管道级可以包括使用脉动阵列(作为示例)实施的矩阵乘法电路206。第三管道级可以包括储存电路208,储存电路208被配置为将所得到的矩阵“C”加载到片外存储器210中。
加载电路202和204可以在管道内合并可选的转置和激活功能,以便于减少存储器流量。在框206处的乘法之前或之后,这些操作可以内联地改变乘法输入和输出。在电路212处可以并发地执行随机梯度下降。如果需要,可以选择性地绕过某些操作以允许为不同的训练流程方程配置管道。通过这种方式进行配置,每个管道级可以使用双缓冲方案在矩阵瓦片(tile)上操作,以将结果传递到下一个管道级。通过管道在多个矩阵瓦片上发布操作来保持管道被占用。
如上所述,可以使用脉动阵列来支持矩阵乘法。用于矩阵乘法的脉动阵列包括处理元件(PE)和用于协调PE的控制逻辑。图3是根据实施例的脉动阵列处理元件300的示图。如图3所示,使用行馈线电路302来使给定行的PE加载有矩阵A,而使用列馈线电路304来使给定列的PE加载有矩阵B。处理元件300可以包括混合浮点点积电路310,并且还包括用于临时保存中间结果的本地累加储存电路312(例如,累加移位寄存器)。累加的数据可以作为输入经由多路复用器314选择性地反馈给点积电路310(参见累加的输入数据ACC)。给定行和给定列中的处理元件300可以被配置为使其计算出的元件的计算接合以适应点积的传播延迟。
以这种方式进行布置,脉动阵列的相同行或列中的所有PE可以共享相同的操作数。芯片范围的分布式网络可以用于向脉动阵列中的所有PE提供数据。矩阵A行馈线电路302可以接收源自于图2的加载A电路202的数据,而矩阵B列馈线电路304可以接收源自于加载B电路204的数据。浮点点积电路310的“混合”性质源于硬浮点乘法器(例如,使用DSP块)和软浮点乘法器两者的使用。通过软浮点乘法器部分的延迟将大于通过硬浮点乘法器部分的延迟。
这种到达时间的不平衡由电路310的L形轮廓示意性地表示,其中对应于软乘法器输入的下部元件被允许更快地到达,并且对应于硬乘法器输入的上部元件必须被延时以考虑到调度不平衡。为了最小化必须***到处理元件300中的寄存器的数量,紧挨馈线电路实施输入延时(例如,在馈线302的输出端处使用延时寄存器303,并且在馈线304的输出端处使用延时寄存器305),并且通过确保将相同的延时增量添加到所有的总线路径来沿着数据总线保留输入延时。为了确保两个点积操作数同时到达,应当使由沿着每行的寄存器303和沿着每列的寄存器305引入的延时匹配。
图4是示出了对脉动阵列的示例性的矩阵分配的示图。如图4所示,馈线的储存容量必须容纳宽度突发的瓦片。这是容纳将有效地利用存储带宽的片外DDR存储器访问的最小单元所必需的。突发可能是数个存储字(例如32字节、64字节、128字节、256字节、512字节、1024字节等)。
馈线存储器应当填充有与点积操作数的取向匹配的数据字,这允许每个时钟周期并行所有输入操作数的五分之一。可以采用双缓冲方案,其中加载一个瓦片(每个矩阵可能要花费数千个周期的过程),而先前加载的瓦片在行或列总线上撒播。通过调整行和列的数量,可以修改数据重用的程度,并且可以使将新矩阵瓦片加载到馈线电路中所花费的时间和在PE阵列中发布所有行和列置换所花费的时间平衡。
IEEE 754单精度32位浮点格式已传统地用于点积数据路径。单精度格式具有一个符号位、八个阶码位和23个三小数位(其中隐含的前导一位构成了24个总尾数精度)。然而,新的研究似乎表明,由于较低的位宽浮点格式减少了存储带宽需求,以及以单精度实施归约树,因而较低的位宽浮点格式是实施点积的更适合的候选项。例如,可以使用具有一个符号位、八个阶码位(即,wE=8)和七个小数位(即,wF=7)的16位格式(有时被称为“BFLOAT16”)。BFLOAT16中减少的16位操作数允许潜在地将存储带宽提高2倍。
然而,常规的FPGA设计针对单精度(SP)算术进行了大量优化。例如,单精度点积电路块通常直接映射到在标称频率下运行的DSP块。因此,对于BFLOAT16+SP点积获得高于SP点积密度的密度是有挑战的。首先,BFLOAT16乘法器需要在LAB 110(图1)内的DSP块和自适应逻辑模块(ALM)的组合来实施。为了获得比仅使用DSP块更好的点积密度,提供了定制的浮点管道架构。
根据实施例,在图5A中示出了利用硬DSP块和定制的软乘法器块两者的混合浮点点积电路310。该示例性的混合点积架构310被配置为实施16元素点积。如图5A所示,电路310可以接收两者都为BFLOAT16格式的输入操作数Ai、Bi,其中i表示从0到15的索引。最右边的累加(ACC)输入可以是单精度格式。
第一12组输入操作数馈送到六个定制的2元素点积电路500中。每个电路500可以被配置为生成两个积的总和,并且有时在本文中被称为“dot2”电路。在图5A的示例中,电路500-1可以被配置为计算(A0*B0+A1*B1);电路500-2可以被配置为计算(A2*B2+A3*B3);电路500-3可以被配置为计算(A4*B4+A5*B5);…;并且电路500-6可以被配置为计算(A10*B10+A11*B11)。在图5B中示出了单个的dot2电路500-1的示例。如图5B所示,dot2电路500-1包括用于计算A0*B0的第一乘法器560、用于计算A1*B1的第二乘法器560以及用于对来自两个乘法器560的结果求和的加法器。返回参照图5A,来自各个dot2电路500的输出可以被馈送到加法器树,加法器树可以包括第一级加法器510-1、510-2、510-3、第二级加法器520-1和520-2以及第三加法器级530。
FPGA内的DSP块可以以浮点模式或定点模式进行操作。在定点模式下,DSP块可以被配置为使得两个18x18乘法器独立地操作,或者被配置成一个更大的27x27乘法器。架构310的“混合”标记是由于使用了“硬”数据路径(例如,其中对应于较高输入A[12:15]、B[12:15]的DSP块被配置为以浮点模式进行操作)和“软”数据路径(例如,对应于较低输入A[0:11]、B[0:11]的DSP块被配置为以定点模式进行操作,以便独立地访问两个18x18乘法器502)两者。
如图5A所示,两个18x18乘法器502之一可以由电路500-1使用,而两个18x18乘法器中的第二个可以由电路500-2使用。每个18x18乘法器还可以用于支持由乘法器560执行的两个较小的8x8乘法(参见例如图5B)。从资源利用的角度来看,每个dot2电路500使用一半的DSP块和一些通用的软逻辑,这些软逻辑可以包括各种操作,例如阶码加和、阶码差、整数加和、对准(alignment)移位等。单个18x18乘法器只能原生地支持两个6x6乘法,因此需要附加的软逻辑来支持BFLOAT16的两个8x8乘法。因此,每个dot2电路500也可以被认为是“混合”电路,因为它使用在定点模式下的DSP块与软逻辑一起来扩展对BFLOAT16的支持。因此,包括dot2电路的电路310的部分590-1对应于硬数据路径和软数据路径,而包括以浮点模式进行操作的DSP块的电路310的部分590-2可以因此对应于硬数据路径。
可以使用以浮点模式进行配置的两个DSP块120-1和120-2并行计算下两组输入操作数A[12:13]、B[12:13]。从BFLOAT16输入格式到单精度浮点格式的转换可以通过对BFLOAT16的7位尾数进行补零来完成。DSP块120-1的输出可以经由转换电路512并入加法器树中,并且在加法器树的最后级的结果可以被归一化为类似于IEEE 754的格式。剩余的输入操作数可以使用同样以浮点模式进行配置的DSP块120-3和120-4进行计算。块120-3和120-4可以共同地计算(A14*B14+(A15*B15+ACC))。DSP块120-2内的单精度加法器电路190可以用于计算来自加法器树的归一化结果与来自块120-3的输出之间的最终加法,以计算最终输出(A0*B0+A1*B1+A2*B2+…+A14*B14+A15*B15+ACC)。
图5A的左边缘上的标记示出了应该调度与不同元素相关联的输入何时到达。可以调度输入A[0:13]、B[0:13]在周期#1并行到达。但是,应该使输入A[14:15]、B[14:15]延时,以便它们在周期#14之后到达。该输入调度不平衡再次导致图3的L形逻辑表示。
图6A是经典浮点乘法器600的示图。图5A中DSP块120内的乘法器块180可以可选地使用该经典乘法器架构来实施。乘法器600被配置为接收具有符号位Sx、阶码Ex和尾数Mx的第一浮点输入X以及具有符号位Sy、阶码Ey和尾数My的第二浮点输入Y。阶码Ex和Ey具有相同的阶码宽度wE。如果考虑到小数点前面的隐含的前导一位,则尾数Mx和My的精度等于(1+wF)。
乘法器600包括逻辑异或门610,逻辑异或门610接收符号位Sx和Sy,并且为所得到的积生成相应的输出符号位Sp。乘法器600还包括用于处理所得到的积的尾数的尾数乘法器块630、尾数归一化块632、尾数粘滞位块634、舍入位计算块636、尾数舍入块638和尾数更新块640。尾数乘法器块630将Mx与My相乘以得到尾数积,该尾数积具有多达(2+2*wF)位。
块632通过检查尾数积的最高有效位(MSB)来接收尾数积的最高(2+wF+1)位,并且将该值归一化到间隔[1,2)。如果MSB等于“1”,则块632执行1位右移。该MSB位也被转发到阶码更新块622。在1位右移期间移出的位与归一化尾数积的两个最低有效位(LSB)一起被转发到Rnd块636。
块634从尾数积的最低(wF-1)位计算粘滞位。粘滞位是所有这些最低位的逻辑或结果。因此,如果(wF-1)位中的任何一个为高,则粘性位块634的输出将等于“1”。Rnd块636接收来自块634的部分粘滞值和来自块632的移出值以产生最终粘滞值。从块632转发的附加的两个LSB代表尾数LSB(即,T)和舍入位(R)。位T、R和最终粘滞值共同地用于产生1位“Rnd”信号,该信号将在舍入块638处被添加到归一化尾数的LSB。舍入块638由一个整数加法器组成,该整数加法器用于将由块636计算的Rnd值添加到归一化小数。该加法器具有wF位,并且产生进位输出信号,该信号被传递到阶码更新块622。
尾数更新块640从块624接收上溢和下溢信号,并且如果已经发生了上溢或下溢,则将尾数清除为零。这是必需的,因为IEEE 754具有针对无穷大和零的特定编码。所得的最终尾数值Mp将具有(1+wF)位。
乘法器600还包括用于对阶码Ex和Ey求和的阶码加法电路620。当(i)尾数积的积大于或等于二时,或(ii)当舍入后的所得到的尾数大于或等于二时,块622增加阶码的和。块624检查最终阶码是否在允许的范围内。对于单精度和BFLOAT16,因为两种格式都使用8个阶码位,所以最大阶码等于127,而最小阶码等于-126。如果阶码值大于127,那么乘法器应返回无穷大(即,通过返回wE个一的字符串“11111111”)。如果阶码值小于-126,那么乘法器应返回零(即,通过返回wE个零的字符串“00000000”)。
以这种方式配置的乘法器600执行尾数乘法(在块630处)、1位归一化(在块632处)、舍入(使用块634、636和638)以及上溢/下溢,然后进行异常处理。
图6B是根据实施例的在图5B中所示的2元素点积电路内的说明性的定制的浮点乘法器560的示图。如图6B所示,乘法器560仅可以包括用于计算符号位的逻辑异或门650、阶码加法器电路652、尾数乘法器电路654(其可以仅使用DSP块内的一个18x18乘法器来实施)和位截断电路656。
与图6A所示的经典乘法器相反,定制的乘法器560跳过归一化级(但需要额外的上溢防护位),并且跳过舍入级(但需要附加的尾数位)。然后将包括附加的尾数位的所有(2+2wF)位馈送到截断块656。然后截断块656将截断或丢弃(2+w)个最高有效位后的所有位。参数“w”可以被设置为等于8(作为示例)或可以被调整以权衡资源从而确保准确度的一些其他值(例如,w可以被设置为等于6、7、9、10、5-12、4-16或一些其他适当的整数值)。乘法器560还通过将阶码扩展2位以包括一个符号位和一个上溢防护位(例如,最终阶码将具有(2+wE)位),来跳过上溢/下溢和异常处理。
与图6A的乘法器600相比,图6B的乘法器560提供了显著的面积和功率节省,同时为整个点积电路提供了相当的准确度,这在支持机器学习过程时为底层计算机功能提供了切实的改进。
图7A是经典浮点加法器700的示图。可以可选地使用该经典加法器架构来实施图5A中的DSP块120内的加法器块190。加法器700被配置为接收具有符号位Sx、阶码Ex和尾数Mx的第一浮点输入X以及具有符号位Sy、阶码Ey和尾数My的第二浮点输入Y。阶码Ex和Ey具有相同的阶码宽度wE。如果考虑到小数点前面的隐含的前导一位,则尾数Mx和My的精度等于(1+wF)。
加法器700包括多路复用器702、逻辑异或门704、阶码差块706,尾数交换块708、二进制补码块710、绝对值(ABS)块712、对准移位器714、整数加法器块716、符号幅值(sign-magnitude)转换块718、前导零计数器720、归一化移位器722、舍入块724、阶码更新块726和符号块728。逻辑异或门704仅仅计算Sx和Sy的异或。
块706计算Ex减去Ey的差。多路复用器702输出两个阶码Ex和Ey中的最大值。由块706计算的(Ex-Ey)的差的符号位(即MSB)驱动多路复用器702的选择线。如果该差为负(即,如果Ex-Ey的符号位为“1”),则多路复用器702将转发Ey;否则,将输出Ex。
尾数交换块708取决于由块706计算的差是否为负(即,如果Ex小于Ey,则需要交换)来有选择地交换尾数。如果异或块704的输出为高(即,如果X和Y的符号不同),则将使用块710将对应于较小阶码的尾数值转换为二进制补码。块712计算阶码差的绝对值。例如,如果阶码差等于-2,那么需要使用对准移位器714将对应于较小阶码的尾数相对于对应于较大阶码的尾数移位两个位的位置。
对应于较大阶码的尾数和对应于较小阶码的尾数在由移位器714对准之后,然后由整数加法器716相加到一起。然后使用块718将加法器716的输出转换为符号幅值格式。前导零计数器720确定转换后的符号幅值的值中的前导零的数量。然后归一化移位器722通过基于由计数器720确定的前导零的数量将该值向左移位来归一化该符号幅值的值。然后,该归一化的尾数可以由块724进行舍入以输出和(Ms)的最终尾数。
符号块728可以基于Sx、Sy、异或门704的输出、阶码差以及整数加法器716的输出来输出和(Ss)的最终符号位。阶码更新块726接收来自块702的较大阶码值、来自块720的前导零计数值以及来自舍入块724的进位输出位。如果舍入块724的进位输出为“1”,那么在块726处从多路复用器702接收到的较大阶码将增加一。否则,如果前导零计数为“0”(表示两个尾数的和大于或等于2),那么接收到的阶码将减一。如果前导零计数为“1”,那么不会更新接收到的阶码。如果前导零计数为c,其中c大于1,那么将从接收到的阶码中减去值(c-1),以生成最终阶码Es。为了简单起见,图7A中省略了检查阶码范围的上溢/下溢块。
图7B是根据实施例的图5B所示的2元素点积电路内的说明性的定制的浮点加法器562的示图。因此,浮点加法器562有时可以被称为dot-2加法器。如图7B所示,加法器562可以仅包括多路复用器730、阶码差电路732、尾数交换电路734、第一二进制补码电路736-1、第二二进制补码电路736-2、绝对值(ABS)电路738、对准移位器电路740、整数加法器742和截断电路744。
与图7A所示的经典加法器相反,定制的加法器562从图6B所示的乘法器560的输出接收定制的格式的积。如上文结合图6B所述,每个到达的积信号可以具有1位符号字段、由(2+wE)位表示的阶码字段以及需要(2+w)位的未归一化的尾数字段。在加法器562在该非标准输入格式上进行操作的意义上,加法器562是“定制的”。
电路736-1和736-2将未归一化的尾数转换为它们的二进制补码等值。在由移位器740对准之后,在块742处计算两个尾数的定点和。对于电路700,与对准移位器714相比,右移位器740的成本更低,因为右移位器740不需要计算用于舍入通常所需的粘滞位。舍入到最近步骤也被跳过,并且由截断块744代替,截断块744将小数部分截断至wA位,并丢弃小数点右边wA位置后的所有位。因此,可调参数wA指定了截断的位置。参数“wA”可以被设置为等于8(作为示例)或可以被调整以权衡资源利用从而确保准确度的一些其他值(例如,wA可以被设置为等于6、7、9、10、5-12、4-16或一些其他适当的整数值)。加法器562本身可以输出又一种定制的格式的信号,该定制的格式由具有(2+wE)位的阶码字段Es和具有(4+wA)位的尾数字段Ms组成。所得到的尾数Ms将是二进制补码格式,所以加法器562的输出端处不需要额外的符号位。
与图7A的加法器700相比,图7B的定制的加法器562提供了显著的面积和功耗节省,同时为整个点积电路提供了相当的准确度,这在支持机器学习过程时为底层计算机功能提供了切实的改进。定制的加法器562通过在没有阶码更新电路的情况下直接输出和的阶码,通过在没有符号幅值转换器、没有前导零计数器、没有归一化移位器并且没有舍入电路的情况下生成和的尾数,来提供这些改进。
图7C、图7D和图7E示出了加法器树中的定制的浮点加法器(例如,参见图5A中的加法器510、520和530)的适当的实施方式。在加法器树中的加法器被配置为接收具有由图7B的加法器562输出的定制的数字格式的输入的意义上,加法器树中的加法器是“定制的”。
图7C是在混合浮点点积电路310的第一加法器级中的定制的浮点加法器510(例如,参见图5A中的加法器510-1、510-2和510-3)的示图。如图7C所示,加法器510可以包括多路复用器750(具有与图7B的多路复用器730相似的结构和功能)、阶码差电路752(具有与块732相似的结构和功能)、尾数交换电路754(具有与块734相似的结构和功能)、绝对值电路756(具有与块738相似的结构和功能)、对准移位电路758(具有与块740相似的结构和功能)、整数加法器760(对应于加法器块742)和截断电路762(对应于块744)。
与dot-2加法器562相比,加法器510是较不复杂的,因为不再需要从符号幅值到二进制补码的转换(即加法器562不包括任何二进制补码转换器)。注意,整数加法器760的输出在小数点前面具有5位,其中额外的一个MSB用于防止上溢。在块762处截断之后,所得到的尾数将具有(5+wA+1)位,其中另一个额外的LSB用于可选地提高截断的准确度。换句话说,尾数宽度可以在第一加法器级别处增加两位。
图7D是在混合浮点点积电路310的第二加法器级中的定制的浮点加法器520(例如,参见图5A中的加法器520-1和520-2)的示图。除了尾数交换电路754’和尾数对准移位器758’现在对(5+wA+1)位进行操作,加法器520具有与加法器510基本相似的结构。现在,整数加法器760’的输出在小数点的前面具有6位,其中另一个额外的MSB用于防止上溢。在块762’处截断之后,所得到的尾数将具有(6+wA+2)位,其中另一个额外的LSB用于可选地提高截断的准确度。换句话说,尾数宽度可以在第二加法器级别处再增加两位。
图7E是在混合浮点点积电路310的第三加法器级中的定制的浮点加法器530(例如,参见图5A中的加法器530)的示图。除了尾数交换电路754”和尾数对准移位器758”现在对(6+wA+2)位进行操作,加法器530具有与加法器510和520基本相似的结构。现在,整数加法器760”的输出将在小数点的前面具有7位,其中附加的MSB用于防止上溢。在块762”处截断之后,所得到的尾数将具有(7+wA+3)位,其中另一个额外的LSB用于可选地提高截断的准确度。换句话说,尾数宽度可以在第三加法器级别处再增加两位。
短暂地返回参考图5A,DSP块120-1的输出为单精度格式,并且在加法器树的第二级别处DSP块120-1的输出与加法器520-2合并之前,需要使用转换电路512将DSP块120-1的输出转换为定制的格式。
图8是示出了这种浮点格式转换器512的一个适当的实施方式的示图。如图8所示,转换电路512可以包括阶码减法电路802、用于将输入尾数从(1+wF)位宽转换成具有(2+wF)位宽的它的二进制补码等值的电路804、以及用于从块804的输出中仅选择最高(5+wA+1)位的位选择电路806。到(wA+1)小数位中的右边的其余位可以通过截断被丢弃,或者可以可选地被舍入到最近(例如,通过在(wA+1)位紧邻右边的位上加上“1”,并且然后截断结果)。执行截断或舍入的电路806有时被称为位减少电路。所得到的转换后的尾数Mc将在小数点的左边具有5位,并且在小数点的右边具有(wA+1)位。
单精度尾数必须向左对准,因为第二加法器级的输入端处的定制的格式需要在小数点的左侧的4位。这是通过将尾数向左移位3位位置、同时确保可以保留更多的尾数位以优化准确度来实现的。为了补偿该移位,阶码减法块802可以被配置为从输入阶码值中减去3,其中转换后的阶码输出Ec将具有(2+wE)位。转换器的输出端处的格式为(2+wE)阶码位和(5+wA+1)尾数位,它们与由第一加法器级中的加法器510输出的以及在第二加法器级中的加法器520处接收的数字格式匹配。
再次短暂地返回参考图5A,第三加法器级530的输出为具有(7+wA+3)尾数位的定制的格式(参见图7E),并且因此在DSP块120-2的加法器190处将第三加法器级530的输出与另一个单精度值组合之前,需要使用归一化电路540对第三加法器级530的输出进行归一化。图9是根据实施例的归一化电路540的示图。如图9所示,归一化电路540可以至少包括符号幅值转换块902、前导零计数器904、归一化移位器908、阶码更新块906、上溢/下溢阶码处理块910、以及上溢/下溢尾数处理和右补零块912。
因为IEEE 754单精度格式对尾数采用符号幅值表示,因此块902可以被配置为将具有(7+wA+3)位的新到来的尾数转换为符号幅值格式。计数器904可以被配置为标识转换后的尾数中的前导零的数量。然后,归一化移位器908可以基于由计数器904确定的前导零的数量来对转换后的符号幅值的值进行移位。块906可以被配置为通过将Ex增加(6-c)来更新阶码,其中“c”指示由计数器904所标识的前导零的数量。
块910检查更新后的阶码是否在允许的范围内。对于单精度和BFLOAT16,由于两种格式使用8个阶码位,因此最大阶码等于127而最小阶码等于-126。如果更新后的阶码值大于127,那么归一化电路540应返回无穷大。如果更新后的阶码值小于-126,那么归一化电路540应返回零。然后,如果发生上溢或下溢,可以将上溢/下溢信息转发到块912,以将尾数清除为全零。块912还可以处理右补零以弥补单精度的总共23个小数位。
根据混合点积电路310内的ALM资源使用,一些较昂贵的部件是对准移位器,例如图7B中所示类型的浮点加法器内的对准移位器块740、图7C中所示类型的第一加法器级中的对准移位器758、图7D中所示类型的第二加法器级中的对准移位器758’、图7E中所示类型的第三加法器级中的对准移位器758”以及图9中所示类型的归一化电路540中的归一化移位器908。因此,这些移位器的有效的实施方式是优化整个机器学习***的效率的关键。
图10A是用于向左移位的常规的桶形移位器1000的示图。如图10A所示,桶形移位器1000接收8位输入A[0:7]和用于控制所执行移位的量的控制位S[0:1]。桶形移位器1000包括:第一4:1多路复用器1002-0,在其“0”输入端处接收A0,而其余输入端接收“0”;第二4:1多路复用器1002-1,在其“0”输入端处接收A1,在其“1”输入端处接收A0,并且在其余输入端处接收零;第三4:1多路复用器1002-2,在其“0”输入端处接收A2,在其“1”输入端处接收A1,在其“2”输入端处接收A0,并且在其“3”输入端处接收零;第四4:1多路复用器1002-3,在其“0”输入端处接收A3,在其“1”输入端处接收A2,在其“2”输入端处接收A1,并且在其“3”输入端处接收A0;第五4:1多路复用器1002-4,在其“0”输入端处接收A4,在其“1”输入端处接收A3,在其“2”输入端处接收A2,并且在其“3”输入端处接收A1;第六4:1多路复用器1002-5,在其“0”输入端处接收A5,在其“1”输入端处接收A4,在其“2”输入端处接收A3,并且在其“3”输入端处接收A2;第七4:1多路复用器1002-6,在其“0”输入端处接收A6,在其“1”输入端处接收A5,在其“2”输入端处接收A4,并且在其“3”输入端处接收A3;以及第八4:1多路复用器1002-7,在其“0”输入端处接收A7,在其“1”输入端处接收A6,在其“2”输入端处接收A5,并且在其“3”输入端处接收A4。
多路复用器1002-0、1002-1、1002-2、1002-3、1002-4、1002-5、1002-6和1002-7用于生成表示移位后的输出的Z[0:7]。在这种布置中,在FPGA上实施的每个4:1多路复用器1002都需要使用6输入查找表(LUT)电路。结果,N个数据位和两个控制位的桶形移位器的常规实施方式将需要至少N个6输入LUT。
根据另一个适当的实施例,在图10B中示出了基于进位链的桶形移位器1010。与图10A的常规桶形移位器(其使用依赖于4:1多路复用器的组合结构)相反,基于进位链的移位器1010使用一系列算术单元1012。使用基于算术的架构而不是组合结构导致使用较少的导线的更小的整体移位器结构,从而改善了面积、功耗、成本和性能。
如图10B所示,基于进位链的桶形移位器1010可以被配置为接收8位输入A[0:7]和用于控制所执行移位的量的控制位S[0:1]。图10B中的移位器1010仅接收八个输入位和两个控制位的示例仅仅是说明性的,并且不旨在限制本实施例的范围。如果需要,可以将图10B的基于进位链的移位器架构应用到任何适当尺寸的移位器。
移位器1010可以包括算术单元1012-0、1012-1、1012-2、1012-3、1012-4、1012-5、1012-6和1012-7。具有索引k的每个算术单元1012接收控制位S[0:1]以及间隔开位距离的两个数据位A[k]和A[k-2]。每个算术单元1012可以包括第一4输入LUT 1020和第二4输入LUT 1022,它们中的每一个具有四个输入端口a、b、c、d。第一4输入LUT 1020可以被配置为计算(!a&!b&c或!a&b&d),其中“!”代表“非”功能。第二4输入LUT 1022可以被配置为计算(a&!b&c或a&b&d)。
每个算术单元1012还可以包括逻辑异或门1024,逻辑异或门1024具有从链中的先前算术单元接收进位输出(例如,第一算术将接收“0”的进位输入)的第一输入端、接收LUT1020的输出的第二输入端、以及在其上生成相应的移位后的输出位的输出端。每个算术单元1012还可以包括简单的2:1多路复用器1026,2:1多路复用器1026具有接收LUT 1022的输出的第一(0)输入端、接收来自先前的算术单元的进位输出的第二(1)输入端、以及在其上相应的进位输出被馈送到链中的后续算术单元的输出端。
在图10B中详细示出了每个算术单元1012的输入端连接。第一算术单元1012-0和第二算术单元1012-1两者中的LUT 1020和1022的a、b、c和d输入端口可以被配置为分别接收输入位S0、S1、A0和0。第三算术单元1012-2中的LUT 1020和1022的a、b、c和d输入端口可以被配置为分别接收输入位S0、S1、A2和A0。第四算术单元1012-3中的LUT 1020和1022的a、b、c和d输入端口可以被配置为分别接收输入位S0、S1、A3和A1。第五算术单元1012-4中的LUT 1020和1022的a、b、c和d输入端口可以被配置为分别接收输入位S0、S1、A4和A2。第六算术单元1012-5中的LUT 1020和1022的a、b、c和d输入端口可以被配置为分别接收输入位S0、S1、A5和A3。第七算术单元1012-6中的LUT 1020和1022的a、b、c和d输入端口可以被配置为分别接收输入位S0、S1、A6和A4。第八算术单元1012-7中的LUT 1020和1022的a、b、c和d输入端口可以被配置为分别接收输入位S0、S1、A7和A5。
以这种方式布置的每个算术单元1012可以被配置为执行以下操作。如果S[0:1]等于“00”,那么Z=A[k]并且进位输出为零。如果S[0:1]等于“01”,那么Z=A[k-2]并且进位输出为零。在这两种情况中的任何一种情况下,进位链均不会被激活,并且接收到的输入数据将直接地被路由到同一算术单元的输出端。
如果S[0:1]等于“10”,那么Z等于接收到的进位输入,并且A[k]被路由到进位输出。如果S[0:1]等于“11”,那么Z再次等于接收到的进位输入,并且A[k-2]被路由到进位输出。在这两种情况中的任何一种情况下,该算术单元的输出数据都被从前一个相邻的单元进行路由,并且进位链被激活以将接收到的数据输入路由到链中的下一个后续单元。
与使用N个6输入LUT实例的图10A的实施方式相比,图10B的架构使用16或2N个4输入LUT。然而,6输入LUT的大小是4输入LUT的4倍。结果,图10B(和图10C)的移位器构造将是常规的桶形移位器面积的一半,这降低了成本和功率。
在图10B的布置中,每个算术单元1020中的逻辑异或门1024和2:1多路复用器1026被串联连接并且组成进位链1030。图10C示出了与图10B的架构相似的另一种适当的布置,但是进位链1060是使用在链中连接的加法器1050来实施的。链中的第一加法器1050还将接收“0”的进位输入。相对于图10A的常规的桶形移位器,图10B的基于加法器链的桶形移位器还可以提供大量的面积和成本节省。图10B和图10C的改进的移位电路不限于用在机器学习训练电路中。如果需要,基于进位链的移位器可以被包括在任何类型的算术或计算***中。
示例
以下示例涉及更多的实施例。
示例1是一种集成电路,包括:第一数字信号处理(DSP)块,其被配置为以浮点模式进行操作;第二数字信号处理(DSP)块,其被配置为以不同于浮点模式的定点模式进行操作;以及加法器,其被配置为接收来自以浮点模式进行操作的第一DSP块的第一信号,并且接收来自以定点模式进行操作的第二DSP块的第二信号。
示例2是示例1的集成电路,其中,第一DSP块可选地是硬数据路径的一部分,并且其中,第二DSP块可选地是硬数据路径和软数据路径的一部分。
示例3是示例1-2中任一项的集成电路,其中,第一和第二DSP块可选地被配置为接收第一浮点格式的输入信号,并且其中,第一DSP块可选地被配置为输出不同于第一浮点格式的第二浮点格式的信号。
示例4是示例3的集成电路,其中,第一浮点格式可选地是具有一个符号位、八个阶码位和至多七个小数位的BFLOAT16格式。
示例5是示例3-4中任一项的集成电路,其中,第二浮点格式可选地是具有一个符号位、八个阶码位和二十三个小数位的单精度格式。
示例6是示例3-5中任一项的集成电路,其中,第二DSP块可选地被配置为输出不同于第一浮点格式和第二浮点格式的第三浮点格式的信号。
示例7是示例6的集成电路,其中,第三浮点格式可选地比第一浮点格式具有更多的阶码位。
示例8是示例6-7中任一项的集成电路,其中,第三浮点格式可选地具有可调的小数位数量,该可调的小数位数量确定第三浮点格式的截断量。
示例9是示例6-8中任一项的集成电路,可选地还包括格式转换电路,该格式转换电路被配置为将信号从第二浮点格式转换为第三浮点格式。
示例10是示例6-9中任一项的集成电路,其中,第二DSP块可选地依赖于软逻辑以支持输出第三浮点格式的信号。
示例11是示例10的集成电路,可选地还包括第一加法器电路,该第一加法器电路被配置为接收来自第二DSP块的信号并且输出不同于第三浮点格式的第四浮点格式的信号。
示例12是示例11的集成电路,可选地还包括加法器树,该加法器树被配置为接收来自第一加法器电路的信号。
示例13是示例12的集成电路,其中,加法器树可选地包括第一加法器级,该第一加法器级被配置为输出不同于第四浮点格式的第五浮点格式的信号。
示例14是示例13的集成电路,其中,加法器树可选地包括第二加法器级,该第二加法器级被配置为输出不同于第五浮点格式的第六浮点格式的信号。
示例15是示例14的集成电路,其中,加法器树可选地包括第三加法器级,该第三加法器级被配置为输出不同于第六浮点格式的第七浮点格式的信号。
示例16是示例15的集成电路,可选地还包括归一化电路,该归一化电路被配置为接收来自加法器树的信号并且将信号从第七浮点格式转换为第二浮点格式。
示例17是混合浮点算术电路,包括:仅包括硬电路块的第一部分;包括硬电路和软电路的第二部分;以及第一部分中的加法器,其中,该加法器被配置为接收来自第一部分的第一信号并且接收来自第二部分的第二信号。
示例18是示例17的混合浮点算术电路,其中,第一部分中的硬电路块可选地包括以浮点模式进行操作的第一数字信号处理(DSP)块,并且其中,第二部分中的硬电路可选地包括以不同于浮点模式的定点模式进行操作的第二数字信号处理(DSP)块。
示例19是示例17-18中任一项的混合浮点算术电路,其中,第二部分可选地被配置为接收来自馈线电路的输入信号,并且其中,第一部分可选地被配置为经由多个输入延时寄存器接收来自馈线电路的输入信号,以考虑到第一部分和第二部分之间的延迟不平衡。
示例20是混合浮点点积电路,包括:硬数据路径,其包括以浮点模式进行配置的数字信号处理(DSP)块;硬数据路径和软数据路径,其包括以定点模式进行配置的软逻辑和数字信号处理(DSP)块;加法器,其被配置为接收来自硬数据路径以及来自硬数据路径和软数据路径的信号;以及累加储存电路,其被配置为接收来自加法器的信号,其中,硬数据路径中的附加的加法器被配置为经由反馈路径接收来自累加储存电路的累加信号。
示例21是电路,包括:2元素点积电路,其被配置为接收第一、第二、第三和第四输入,以根据第一和第二输入生成第一中间积,以根据第三和第四输入生成第二中间积,并且计算第一和第二中间积的和,其中,2元素点积电路包括生成第一中间积的第一乘法器和生成第二中间积的第二乘法器,并且其中,第一乘法器包括:阶码加法器电路,其被配置为将第一输入的阶码和第二输入的阶码相加,其中,阶码加法器电路被配置为直接地生成第一中间积的阶码。
示例22是示例21的电路,其中,第一乘法器可选地在没有阶码更新电路的情况下直接生成第一中间积的阶码。
示例23是示例21-22中任一项的电路,其中,第一乘法器可选地在没有上溢和下溢检查电路的情况下直接生成第一中间积的阶码。
示例24是示例21-23中任一项的电路,其中,第一乘法器可选地还包括:尾数乘法器电路,其被配置为将第一输入的尾数与第二输入的尾数相乘;以及位截断电路,其被配置为直接地接收来自尾数乘法器电路的信号并且直接地生成第一中间积的尾数。
示例25是示例24的电路,其中,位截断电路可选地被配置为执行可调的尾数截断量,以用准确度平衡资源使用。
示例26是示例24-25中任一项的电路,其中,第一乘法器可选地直接生成第一中间积的尾数而无需归一化电路。
示例27是示例24-26中任一项的电路,其中,第一乘法器可选地在没有舍入电路的情况下直接生成第一中间积的尾数。
示例28是示例21-27中任一项的电路,其中,2元素点积电路可选地还包括加法器电路,该加法器电路被配置为计算第一中间积和第二中间积的和,并且其中,该加法器电路可选地包括:阶码复用电路,其被配置为选择第一中间积的阶码或第二中间积的阶码,其中,该阶码复用电路还被配置为直接地生成和的阶码。
示例29是示例28的电路,其中,加法器电路可选地在没有阶码更新电路的情况下直接输出和的阶码。
示例30是示例28-29中任一项的电路,其中,加法器电路可选地还包括:尾数交换电路,其具有第一输出端和第二输出端;第一二进制补码转换电路,其被配置为接收来自尾数交换电路的第一输出端的第一尾数值;以及第二二进制补码转换电路,其被配置为接收来自尾数交换电路的第二输出端的第二尾数值。
示例31是示例28-30中任一项的电路,其中,加法器电路可选地在没有符号幅值转换器的情况下生成和的尾数。
示例32是示例28-31中任一项的电路,其中,加法器电路可选地在没有前导零计数器并且没有归一化移位器的情况下生成和的尾数。
示例33是示例28-32中任一项的电路,其中,加法器电路可选地在没有舍入电路的情况下生成和的尾数。
示例34是示例28-33中任一项的电路,其中,加法器电路可选地还包括:整数加法器;以及位截断电路,其被配置为接收来自整数加法器的信号并且直接地输出和的尾数。
示例35是示例21-34中任一项的电路,可选地还包括:附加的2元素点积电路;以及加法器树,其被配置为接收来自2元素点积电路和来自附加的2元素点积电路的和信号,其中,加法器树包括第一级加法器,该第一级加法器包括:尾数交换电路;以及对准移位器,其直接地接收来自尾数交换电路的信号。
示例36是示例35的电路,其中,加法器树还可选地包括第二级加法器,该第二级加法器具有与第一级加法器相同的结构,但是第二级加法器被配置为生成具有比第一级加法器大的尾数的信号。
示例37是电路,包括:多个点积电路,其被配置为输出和信号;加法器树,其被配置为接收来自多个点积电路的和信号;数字信号处理(DSP)块,其被配置为输出给定的浮点格式的附加的和信号;以及浮点格式转换电路,其被配置为将附加的和信号从给定的浮点格式转换为加法器树的另一浮点格式。
示例38是示例37的电路,其中,浮点格式转换电路可选地包括:阶码减法电路,其被配置为将附加的和信号的阶码减去预定的整数;二进制补码转换器电路,其被配置为接收附加的和信号的尾数;以及位减少电路,其被配置为接收来自二进制补码转换器电路的信号,并且向加法器树直接地输出转换后的尾数值。
示例39是电路,包括:多个点积电路,其被配置为输出和信号;加法器树,其被配置为接收来自多个点积电路的和信号;以及归一化电路,其被配置为接收来自加法器树的输出信号,并且将该输出信号从第一浮点格式转换为不同于第一浮点格式的第二浮点格式。
示例40是示例39的电路,其中,归一化电路可选地包括:符号幅值转换器,其被配置为接收输出信号的尾数;前导零计数器,其耦合到符号幅值转换器;归一化移位器,其由前导零计数器控制;以及补零电路,其被配置为接收来自归一化移位器的信号。
示例41是电路,包括:多个点积电路,其被配置为输出和信号;以及加法器树,其被配置为接收来自多个点积电路的和信号,其中,多个点积电路和加法器树包括基于进位链的移位电路。
示例42是示例41的电路,其中,多个点积电路可选地被配置为接收具有第一浮点格式的输入。
示例43是示例42的电路,其中,第一浮点格式可选地是具有一个符号位、八个阶码位和七个小数位的BFLOAT16格式。
示例44是示例42-43中任一项的电路,其中,输出和信号可选地具有不同于第一浮点格式的第二浮点格式。
示例45是示例44的电路,其中,第二浮点格式可选地比第一浮点格式具有更多的阶码位。
示例46是示例44-45中任一项的电路,其中,第二浮点格式可选地具有可调的小数位数量,该可调的小数位数量确定了用于第二浮点格式的截断量。
示例47是示例41-46中任一项的电路,其中,至少一个基于进位链的移位电路可选地包括连接在链中的一系列的算术单元。
示例48是示例47的电路,其中,该系列中的至少一个算术单元可选地包括:第一查找表,其被配置为提供第一功能;以及第二查找表,其被配置为提供不同于第一功能的第二功能。
示例49是示例48的电路,其中,第一和第二查找表可选地被配置为接收相同的输入信号。
示例50是示例48-49中任一项的电路,其中,至少一个算术单元可选地还包括逻辑门,该逻辑门被配置为接收来自第一查找表的信号。
示例51是示例50的电路,其中,逻辑门可选地包括逻辑异或门。
示例52是示例50-51中任一项的电路,其中,至少一个算术单元可选地还包括多路复用电路,其被配置为接收来自第二查找表的信号,并且其中,该多路复用电路可选地由从第一查找表输出的信号进行控制。
示例53是示例48-52中任一项的电路,其中,至少一个算术单元可选地还包括加法器,其被配置为接收来自第一查找表的信号。
示例54是示例53的电路,其中,加法器可选地耦合到链中的至少一个其他的算术单元。
示例55是移位电路,包括:第一算术单元;以及第二算术单元,其在链中耦合到第一算术单元,其中,第一和第二算术单元包括产生移位的输出位的进位链。
示例56是示例55的移位电路,其中,第一算术单元可选地被配置为接收第一输入位和控制位,并且其中,第二算术单元可选地被配置为接收第二输入位和控制位。
示例57是示例55-56中任一项的移位电路,其中,第一和第二算术单元可选地具有相同的结构。
示例58是示例55-57中任一项的移位电路,其中,进位链可选地包括串联连接的多个逻辑门和多路复用电路。
示例59是示例55-58中任一项的移位电路,其中,进位链可选地包括串联连接的多个加法器。
示例60是位移位电路,包括:第一四输入查找表,其被配置为接收输入信号并且将第一功能应用于输入信号;第二四输入查找表,其被配置为接收输入信号并且将不同于第一功能的第二功能应用于输入信号;以及进位链,其被配置为接收从第一和第二四输入查找表输出的信号并且生成输入信号的移位的版本。
例如,上述设备的所有可选的特征也可以相对于本文描述的方法或过程来实施。前述内容仅是对本公开的原理的说明,且本领域内的技术人员可以做出各种修改。可以以单个的方式或以任何组合来实施前述实施例。

Claims (20)

1.一种集成电路,包括:
第一数字信号处理(DSP)块,其被配置为以浮点模式进行操作;
第二数字信号处理(DSP)块,其被配置为以不同于所述浮点模式的定点模式进行操作;以及
加法器,其被配置为接收来自以所述浮点模式进行操作的所述第一DSP块的第一信号,并且接收来自以所述定点模式进行操作的所述第二DSP块的第二信号。
2.根据权利要求1所述的集成电路,其中,所述第一DSP块是硬数据路径的一部分,并且其中,所述第二DSP块是硬数据路径和软数据路径的一部分。
3.根据权利要求1-2中任一项所述的集成电路,其中,所述第一DSP块和所述第二DSP块被配置为接收第一浮点格式的输入信号,并且其中,所述第一DSP块被配置为输出不同于所述第一浮点格式的第二浮点格式的信号。
4.根据权利要求3所述的集成电路,其中,所述第一浮点格式是具有一个符号位、八个阶码位和至多七个小数位的BFLOAT16格式。
5.根据权利要求3所述的集成电路,其中,所述第二浮点格式是具有一个符号位、八个阶码位和二十三个小数位的单精度格式。
6.根据权利要求3所述的集成电路,其中,所述第二DSP块被配置为输出第三浮点格式的信号,所述第三浮点格式不同于所述第一浮点格式和所述第二浮点格式。
7.根据权利要求6所述的集成电路,其中,所述第三浮点格式比所述第一浮点格式具有更多的阶码位。
8.根据权利要求6所述的集成电路,其中,所述第三浮点格式具有可调的小数位数量,所述可调的小数位数量确定所述第三浮点格式的截断量。
9.根据权利要求6所述的集成电路,还包括格式转换电路,所述格式转换电路被配置为将信号从所述第二浮点格式转换为所述第三浮点格式。
10.根据权利要求6所述的集成电路,其中,所述第二DSP块依赖于软逻辑以支持输出所述第三浮点格式的所述信号。
11.根据权利要求10所述的集成电路,还包括第一加法器电路,所述第一加法器电路被配置为接收来自所述第二DSP块的所述信号并且输出不同于所述第三浮点格式的第四浮点格式的信号。
12.根据权利要求11所述的集成电路,还包括加法器树,所述加法器树被配置为接收来自所述第一加法器电路的信号。
13.根据权利要求12所述的集成电路,其中,所述加法器树包括第一加法器级,所述第一加法器级被配置为输出不同于所述第四浮点格式的第五浮点格式的信号。
14.根据权利要求13所述的集成电路,其中,所述加法器树包括第二加法器级,所述第二加法器级被配置为输出不同于所述第五浮点格式的第六浮点格式的信号。
15.根据权利要求14所述的集成电路,其中,所述加法器树包括第三加法器级,所述第三加法器级被配置为输出不同于所述第六浮点格式的第七浮点格式的信号。
16.根据权利要求15所述的集成电路,还包括归一化电路,所述归一化电路被配置为接收来自所述加法器树的信号并且将信号从所述第七浮点格式转换为所述第二浮点格式。
17.一种混合浮点算术电路,包括:
第一部分,仅包括硬电路块;
第二部分,包括硬电路和软电路;以及
加法器,其在所述第一部分中,其中,所述加法器被配置为接收来自所述第一部分的第一信号并且接收来自所述第二部分的第二信号。
18.根据权利要求17所述的混合浮点算术电路,其中,所述第一部分中的所述硬电路块包括以浮点模式进行操作的第一数字信号处理(DSP)块,并且其中,所述第二部分中的所述硬电路包括以不同于所述浮点模式的定点模式进行操作的第二数字信号处理(DSP)块。
19.根据权利要求17-18中任一项所述的混合浮点算术电路,其中,所述第二部分被配置为接收来自馈线电路的输入信号,并且其中,所述第一部分被配置为经由多个输入延时寄存器接收来自所述馈线电路的输入信号,以考虑到所述第一部分和所述第二部分之间的延迟不平衡。
20.一种混合浮点点积电路,包括:
硬数据路径,其包括以浮点模式进行配置的数字信号处理(DSP)块;
硬数据路径和软数据路径,其包括以定点模式进行配置的软逻辑和数字信号处理(DSP)块;
加法器,其被配置为接收来自所述硬数据路径以及来自所述硬数据路径和软数据路径的信号;以及
累加储存电路,其被配置为接收来所述自加法器的信号,其中,所述硬数据路径中的附加的加法器被配置为经由反馈路径接收来自所述累加储存电路的累加信号。
CN202010125245.2A 2019-03-27 2020-02-27 用于可编程器件的机器学习训练架构 Pending CN111753993A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962824797P 2019-03-27 2019-03-27
US62/824,797 2019-03-27
US16/585,857 US11210063B2 (en) 2019-03-27 2019-09-27 Machine learning training architecture for programmable devices
US16/585,857 2019-09-27

Publications (1)

Publication Number Publication Date
CN111753993A true CN111753993A (zh) 2020-10-09

Family

ID=69162426

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010125245.2A Pending CN111753993A (zh) 2019-03-27 2020-02-27 用于可编程器件的机器学习训练架构

Country Status (3)

Country Link
US (2) US11210063B2 (zh)
CN (1) CN111753993A (zh)
DE (1) DE102020105536A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107807819B (zh) * 2017-07-20 2021-06-25 上海寒武纪信息科技有限公司 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法
EP3994621A1 (en) * 2019-07-03 2022-05-11 Huaxia General Processor Technologies Inc. Instructions for operating accelerator circuit
US11275560B2 (en) * 2020-02-19 2022-03-15 Meta Platforms, Inc. Hardware for floating-point arithmetic in multiple formats
US20220075595A1 (en) * 2020-09-08 2022-03-10 International Business Machines Corporation Floating point computation for hybrid formats
KR20220101518A (ko) * 2021-01-11 2022-07-19 에스케이하이닉스 주식회사 곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치
US20220129320A1 (en) * 2021-11-05 2022-04-28 Debabrata Mohapatra Schedule-aware dynamically reconfigurable adder tree architecture for partial sum accumulation in machine learning accelerators

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924455B1 (en) 2011-02-25 2014-12-30 Xilinx, Inc. Multiplication of matrices using systolic arrays
US9747110B2 (en) * 2015-05-20 2017-08-29 Altera Corporation Pipelined cascaded digital signal processing structures and methods
US10042607B2 (en) 2016-08-22 2018-08-07 Altera Corporation Variable precision floating-point multiplier
US10970042B2 (en) * 2017-11-20 2021-04-06 Intel Corporation Integrated circuits with machine learning extensions
US10776078B1 (en) * 2018-09-23 2020-09-15 Groq, Inc. Multimodal multiplier systems and methods

Also Published As

Publication number Publication date
US20200026494A1 (en) 2020-01-23
US20220107783A1 (en) 2022-04-07
US11210063B2 (en) 2021-12-28
DE102020105536A1 (de) 2020-10-01

Similar Documents

Publication Publication Date Title
CN111753993A (zh) 用于可编程器件的机器学习训练架构
US10838695B2 (en) Fixed-point and floating-point arithmetic operator circuits in specialized processing blocks
US5465226A (en) High speed digital parallel multiplier
US5790446A (en) Floating point multiplier with reduced critical paths using delay matching techniques
EP0185025B1 (en) An xxy bit array multiplier/accumulator circuit
Kung et al. A systolic 2-D convolution chip
EP0992885B1 (en) Multiplier accumulator circuits
US8463835B1 (en) Circuit for and method of providing a floating-point adder
EP1471420A2 (en) Montgomery modular multiplier and method thereof using carry save addition
US10853034B2 (en) Common factor mass multiplication circuitry
JP4290202B2 (ja) ブース乗算の装置および方法
CN110955861A (zh) 用于高带宽、低延迟机器学习的电路
US6988119B2 (en) Fast single precision floating point accumulator using base 32 system
US7617269B2 (en) Logic entity with two outputs for efficient adder and other macro implementations
EP1855190A2 (en) Montgomery modular multiplier and method therof using carry save addition
US10725741B2 (en) Digital circuit with compressed carry
US5726926A (en) Shifter for shifting floating point number utilizing arithmetic operation of redundant binary number, and adder containing the same
US11256979B2 (en) Common factor mass multiplication circuitry
US7680872B2 (en) Canonical signed digit (CSD) coefficient multiplier with optimization
KR100308726B1 (ko) 고속 산술 장치에서 올림수 예견가산기 스테이지의 수를 감소시키는 장치 및 방법
US8131795B2 (en) High speed adder design for a multiply-add based floating point unit
JPH0312738B2 (zh)
KR19990074385A (ko) 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치및 방법
US7277909B2 (en) High speed adder
JPH11282651A (ja) 並列乗算器

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