CN113391785A - 具有动态精度的浮点分解电路 - Google Patents
具有动态精度的浮点分解电路 Download PDFInfo
- Publication number
- CN113391785A CN113391785A CN202011411425.3A CN202011411425A CN113391785A CN 113391785 A CN113391785 A CN 113391785A CN 202011411425 A CN202011411425 A CN 202011411425A CN 113391785 A CN113391785 A CN 113391785A
- Authority
- CN
- China
- Prior art keywords
- circuit
- floating point
- precision
- receive
- selection
- 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
Images
Classifications
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
提供了用于将块浮点数分解为较低精度的浮点数的电路。该电路可以包括:高精度存储电路,其被配置为提供高精度的浮点数;输入选择器,其被配置为从高精度存储电路中接收高精度的浮点数并生成具有调整后的指数的对应的较低精度的浮点分量;以及低精度的块浮点矢量电路,其被配置为组合由输入选择器生成的各种较低精度的浮点分量。较低精度的浮点分量可以在空间上进行处理或者随着时间经过多次迭代进行处理。
Description
背景技术
本发明总体上涉及集成电路,并且特别地涉及被配置为支持机器学习的可编程集成电路。
诸如可编程逻辑器件(PLD)之类的可编程集成电路包括具有查找表(LUT)和基于加法器的逻辑的可配置的逻辑块,这些可配置的逻辑块被设计为允许用户根据用户的特定的需求自定义电路。被配置为支持机器学习和深度学习的常规的PLD通常仅能够以固定的精度操作,这强制电路设计以最高的需求精度构建,即使很少使用最高的精度。
一种用于适应两种不同的精度的方式是编译支持一个精度的第一配置位流和支持另一精度的第二配置位流。然而,此方法要求在执行期间的器件重新编程以使用不同的位流来重新配置器件,这带来了显著的延时惩罚。另一种方法涉及了在许多PLD上划分深度学习网络,这些PLD中的每一个使用不同的配置位流来编程。然而,此第二方法要求大量且潜在冗余的硬件开销。
在此上下文内,出现了在本文中描述的实施例。
附图说明
图1是根据实施例的说明性的可编程集成电路的图示。
图2是根据实施例的包括高精度线性运算电路的说明性集成电路的图示。
图3是根据实施例的说明性的点积电路的图示。
图4是根据实施例的说明性的动态精度的浮点分解点积电路的图示。
图5是根据实施例的说明性的低精度的浮点点积电路的图示。
图6是根据实施例的说明性的输入选择电路的图示。
图7是根据实施例的说明性的指数选择电路的图示。
图8是根据实施例的说明性的尾数选择电路的图示。
图9是根据实施例的实现随着时间的精度分解的说明性的浮点点积电路的图示。
图10是根据实施例的实现空间精度分解的说明性的浮点点积电路的图示。
具体实施方式
本实施例涉及能够将浮点数(例如,“块”浮点数)分解为具有调整后的指数和尾数的相对较低精度的浮点数的电路。然后,调整后的指数和尾数要么随着时间经过多次迭代进行处理,要么在空间上进行并行处理。术语“块”浮点指代对共享相同的指数值的一组浮点数执行的算术运算。可以在不移位的情况下容易地将具有共同指数的浮点数相加,并且可以因此提供显著的硬件节省。
集成电路可以包括用于动态地选择执行给定的点积运算所需多少位的精度的电路。可以使用诸如低精度的点积引擎之类的低固定精度矩阵/矢量单元来处理分解后的浮点数,以生成对应的高精度的输出。使用较低精度的算术构建块实现的点积引擎在技术上具有优势,这是因为它们更有效地映射到可编程集成电路内的软逻辑结构。以这种方式实现的用于支持诸如深度学习模型之类的机器学习的可编程集成电路通过使用分解电路动态地支持高精度的浮点计算和低精度的浮点计算二者来展示出提高的吞吐量。
本领域技术人员将认识到,可以在没有这些具体细节中的一些或所有的情况下实践本示例性实施例。在其他实例中,没有详细地描述众所周知的操作,以免不必要地使本实施例难以理解。
考虑到前述内容,图1是可编程集成电路10(例如,有时被称为可编程逻辑器件、现场可编程门阵列或“FPGA”等)的图示。如图1所示,可编程逻辑器件10可以包括功能块的二维阵列,功能块包括逻辑阵列块(LAB)11和其他功能块,例如随机存取存储器(RAM)块13以及专用处理块(例如,数字信号处理(DSP)块12,其被部分或完全硬连线以执行诸如数学/算术运算之类的一个或多个特定任务。
诸如LAB 11之类的功能块可以包括较小的可编程区域(例如,逻辑元件、可配置逻辑块或自适应逻辑模块),其接收输入信号并对输入信号执行自定义功能以产生输出信号。器件10可以进一步包括用于将LAB 11与RAM块13和DSP块12互连的可编程路由结构。可编程逻辑和路由结构的组合有时被称为“软”逻辑,而DSP块有时被称为“硬”逻辑。器件10上的硬逻辑的类型不限于DSP块,并且可以包括其他类型的硬逻辑。可以或可以不形成为DSP块12的一部分的加法器/减法器、乘法器、点积计算电路和其他算术电路有时可以被统称为算术逻辑。
可编程逻辑器件10可以包含用于配置软逻辑的可编程存储器元件。可以使用输入/输出元件(IOE)16向存储器元件加载配置数据(也被称为编程数据)。一旦被加载,存储器元件就提供对应的静态控制信号,这些静态控制信号控制一个或多个LAB 11、可编程路由结构以及可选地DSP 12或RAM 13的操作。在典型的情境中,被加载的存储器元件的输出被施加到金属氧化物半导体晶体管(例如,传输晶体管(pass transistor))的栅极,以打开或关闭某些晶体管,并且从而配置包括路由路径的功能块中的逻辑。可以以这种方式控制的可编程逻辑电路元件包括复用器(例如,用于在互连电路中形成路由路径的复用器)、查找表、逻辑阵列、AND、OR、NAND和NOR逻辑门、传输门(pass gate)等的部分。逻辑门和复用器(其为软逻辑、可配置状态机或器件10上的没有单个专用目的的任何通用逻辑组件的一部分)可以被统称为“随机逻辑”。
存储器元件可以使用任何合适的易失性和/或非易失性存储器结构,例如随机存取存储器(RAM)单元、熔丝、反熔丝、可编程只读存储器存储器单元、掩模编程和激光编程的结构、机械存储器器件(例如,包括局部机械谐振器)、机械操作的RAM(MORAM)、可编程金属化单元(PMC)、导电桥接RAM(CBRAM)、电阻式存储器元件、这些结构的组合等。因为存储器元件在编程期间被加载有配置数据,所以存储器元件有时被称为配置存储器、配置RAM(CRAM)、配置存储器元件或可编程存储器元件。
另外,可编程逻辑器件10可以使用输入/输出元件(IOE)16来驱动信号离开器件10并且从其他器件中接收信号。输入/输出元件16可以包括并行的输入/输出电路、串行的数据收发器电路、差分接收器和发送器电路、或用于将一个集成电路连接到另一集成电路的其他电路。如图所示,输入/输出元件16可以位于芯片的外围周围。如果需要,则可编程逻辑器件可以具有以不同的方式布置的输入/输出元件16。
可以以垂直的路由通道14(即,沿PLD 10的垂直轴形成的互连)和水平路由通道15(即,沿PLD 10的水平轴形成的互连)的形式提供PLD 10上的路由结构(有时被称为可编程互连电路),每个路由通道包括用于路由至少一条导线的至少一条轨道。如果需要,则路由导线可以比路由通道的整个长度更短。长度为L的导线可以跨越L个功能块。例如,长度为四的导线可以跨越四个功能块。水平路由通道中的长度为四的导线可以被称为“H4”导线,而垂直路由通道中的长度为四的导线可以被称为“V4”导线。
此外,应当理解的是,本实施例可以在任何集成电路中实现。图2是说明性集成电路管芯200的图示。集成电路200可以例如是可编程集成电路,例如图1的器件10、中央处理单元(CPU)、图形处理单元(GPU)、专用集成电路(ASIC)、专用标准产品(ASSP)、微控制器、微处理器等。可编程集成电路的示例包括可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程逻辑器件(EPLD)、电可擦除可编程逻辑器件(EEPLD)、逻辑单元阵列(LCA)和复杂的可编程逻辑器件(CPLD),仅举几例。
如图2所示,集成电路可以包括诸如被配置为执行高精度线性运算的电路202之类的电路。其中浮点点积正在被计算的器件配置有时可以在本文中作为示例被描述。点积运算可能在诸如深度学习网络之类的机器学习应用中流行。然而,这仅仅是说明性的。如果需要,则高精度线性运算电路202也可以用于执行其他线性算术运算,这些线性算术运算需要乘法、除法、加法、减法和/或在任何类型的机器学习神经网络中所需的对数的其他操作。
术语“高”或“较高”精度可以指代涉及尾数宽度的浮点运算,尾数宽度等于或大于7,介于7和10之间,等于或大于10,介于10和23之间,等于或大于23等。术语“低”或“较低”精度可以指代涉及尾数宽度的浮点运算,尾数宽度小于10,介于10和7之间,小于7,6或更小,5或更小,4或更小,3或更小,2或更小等。术语尾数位、分数位和有效数位(significand bit)可以具有相同的含义,并且可以被可交换地使用。
图3是说明性的n-元素点积电路300的图示。如上面所描述的,点积电路300的运算可以使用图2的电路202来执行。如图3所示,点积电路300可以接收n-元素输入矢量i和w,并且可以包括用于计算输入i1和w1的乘积的第一乘法器302,用于计算输入i2和w2的乘积的第二乘法器302,……,以及用于计算输入in和wn的乘积的第n乘法器302。点积电路300可以进一步包括单独的求和电路304,以用于将由乘法器302生成的n个乘积相加在一起,以生成最终的点积输出。在图3的示例中,由乘法器302执行的乘法并行发生,并且然后在加法器304处求和。可以每个时钟周期接收新的输入数据,并且可以在某个固定的延时之后每个时钟周期生成新的输出数据。然而,在实践中,实际上不需要以这种方式使用单片乘法器302和加法器304来构建点积电路。
图3中所示的大小为n的点积可以使用以下表达式来表示:
每个输入ik和wk可以表示“高”精度的浮点数(例如,具有一个符号位、5个指数位和10个被存储的尾数/分数位的IEEE 754半精度的浮点数(有时被称为“FP16”数),具有一个符号位、8个指数位和7个被存储的尾数位的“BFLOAT16”数,具有一个符号位、8个指数位和23个被存储的尾数位的IEEE 754单精度的浮点数(有时被称为“FP32”数),或具有7位或更多位精度、8位或更多位精度、9位或更多位精度、10位或更多位精度、16位或更多位精度、23位或更多精度的其他数等)。
根据实施例,提供了可以将高精度的输入信号分解为两个或多个分量的电路。作为示例,可以将上面表达式(1)中的输入i分解为上部(U)和下部(L)分量,产生以下表达式:
其中,ikU表示上部分解后的分量,并且其中,ikL表示下部分解后的分量。此结果可以被进一步分组为大小为n的两个单独的点积,如下所示:
此分解示例仅仅是说明性的。一般而言,表达式(1)的点积运算可以通过将取决于应用的需要的输入i和/或输入w分解为多个“低”精度的分量(例如,具有一个符号位、4个指数位和3个被存储的有效数位的分解后的值,具有少于7个有效数位的分解后的值,具有少于6个有效数位的分解后的值,具有少于5个有效数位的分解后的值,或具有少于8位精度、少于4位精度、少于3位精度、少于2位精度的其他信号等)来被分解为三个或更多较小的点积组、四个或更多较小的点积组或任何期望数量的较小的较低精度的点积组。
图4是说明性的动态精度的浮点分解点积电路(例如,电路400)的图示。电路400可以是图2的电路202的一部分,并且可以被配置为通过将高精度的块浮点数分解为对应的低精度的分量来执行点积算术。如图4所示,动态精度的浮点分解点积电路400可以包括被配置为存储高精度的输入矢量i和w的高精度的存储电路402。在图4的示例中,可以使用单独的输入分解选择电路来分解输入i和w中的每一个。
电路400可以包括第一输入分解选择器404-1,其被配置为接收输入[i1:in]连同相关联的指数ei。输入选择器404-1可以通过由诸如精度控制器408之类的控制器生成的选择信号来控制,并且可以输出对应的低精度的分量[i1':in']和调整后的指数值ei'。一般而言,只要ik'具有少于ik的精度位,ik'就可以表示ik的任何分数子集或部分。
类似地,电路400可以进一步包括第二输入分解选择器404-2,其被配置为接收输入[w1:wn]连同相关联的指数ew。输入选择器404-2也可以通过由精度控制器408生成的选择信号控制,并且可以输出对应的低精度的分量[w1':wn']和调整后的指数值ew'。一般而言,只要wk'具有少于wk的精度位,wk'就可以表示wk的任何分数子集或部分。输入ik和wk可以具有相同的位宽或不同的位宽,这取决于应用。类似地,分解后的分量ik'和wk'可以具有相同的位宽或不同的位宽,这取决于应用。
然后可以使用诸如电路406之类的低精度的块浮点矩阵/矢量单元来处理由输入选择电路404输出的分解后的输入分量。作为示例,电路406可以被实现为浮点点积引擎。一般而言,电路406可以是可以用于将多个低精度的信号分量组合为单个输出值以用于线性算术运算的任何合适的矩阵或矢量单元。
本文中的术语“块”浮点可以指代涉及相同的指数值的数的浮点算术。例如,块大小为二将意味着输入选择器404-1将接收i1和i2,这二者共享共同的指数值ei。作为另一个示例,块大小为四将意味着输入选择器404-1将接收[i1:i4],它们全部共享共同的指数值ei。作为又一个示例,块大小为16将意味着输入选择器404-1将接收[i1:i16],它们全部共享共同的指数值ei。换言之,块大小将规定输入i和w的总线宽度,这也将确定点积的宽度。块大小为一表示标准的浮点表示,其中,i和w的总线宽度均为一。
其中使用输入分解选择器来分解输入i和w二者的图4的示例仅仅是说明性的。在另一合适的布置中,可以在使用输入选择器404-2来分解输入w的同时,将高精度的输入[i1:in]作为输入直接地馈送到块浮点矩阵电路406中。在又一合适的布置中,可以在使用输入选择器404-1来分解输入i的同时将高精度的输入[w1:wn]作为输入直接馈送到块浮点矢量电路406中。换言之,可以分解输入信号i或w中的仅一个,或者可以分解输入信号i和w二者,这取决于应用的需要。
图5是被实现为低精度的浮点点积引擎的电路406的图示。如图5所示,点积引擎406可以包括n个低精度的乘法器电路502,以用于计算输入乘积对i1'*w1'、i2'*w2'和in'*wn'。乘法器502的数量将取决于浮点块大小。可以以块大小:1的加法器树504组合由乘法器502输出的所得乘积,这有效地将来自n个总线的乘积进行求和。可以使用电路506来将调整后的指数值ei'和ew'相加。从加法器树504输出的整数算术信号和从加法器电路506输出的指数总和可以到达转换器508,其然后被转换为最终的浮点点积输出值。由浮点转换器电路508输出的点积值可以使用累加器电路510来可选地累加,累加器电路510包括加法器电路512和输出反馈路径514。
图6是说明性的输入选择电路404的图示。如图6所示,输入选择器404可以包括指数选择电路(例如,指数选择器602)以及一个或多个尾数选择电路(例如,尾数选择器604-1、……、604-n)。指数选择器602可以接收输入指数ei和选择信号(例如,由图4中的控制器408生成的选择信号),并且可以输出调整后的指数ei'和下溢信号。当存在下溢时,下溢信号将被驱动为逻辑“0”,并且输出指数ei'将被设置为零。当不存在下溢时,下溢信号被驱动为逻辑“1”,并且非零的调整后的指数值ei'将由选择器602生成。
每个尾数选择器604可以在路径608上接收高精度的输入尾数ik、选择信号和从指数选择器602输出的下溢信号,并且可以输出具有比对应的输入ik更小的精度的分解后的分量ik'。换言之,尾数选择器用于选择要在当前的周期中输出的高精度的有效数的哪一部分。例如,尾数选择器604-1可以接收高精度输入i1并且输出对应的低精度的分解后的值i1'。类似地,尾数选择器604-n可以接收高精度输入in,并且输出对应的低精度的分解后的分量in'。可以使用基于选择信号的任何剩余的高精度的有效数位来对给定的所选择的输出可选地取整。
其中输入选择器404被配置为分解高精度的输入i的图6的示例仅仅是说明性的。如果需要,则图6中所示的类型的输入选择器404还可以被实现用于分解输入w或其他高精度输入信号。
图7是示出指数选择电路602的一种合适的实施方式的图示。如图7所示,指数选择器602可以包括:乘法器电路704,其被配置为计算选择信号和低精度的尾数宽度(被表示为“Mantissa_Width”)的乘积;减法电路702,其被配置为计算输入指数值e与从乘法器704输出的乘积之间的差;诸如下溢比较器708之类的下溢比较电路,其用于确定从减法器702输出的差值是否下溢;以及诸如复用电路706之类的开关电路,其具有被配置为接收来自减法器702的差值的第一(0)数据输入、被配置为接收“0”的第二(1)数据输入、被配置为接收来自比较器708的下溢信号的控制输入以及在其上生成调整后的指数值e'的输出。下溢信号也可以被提供作为指数选择器602的输出。Mantissa_Width值可以被定义为由点积引擎支持的有效数的预定宽度(例如,图4和图5中的电路406的低精度的宽度)。以这种方式配置,指数选择器602被配置为针对输入尾数的每个低精度的部分生成新的指数e'(随着选择信号的值改变)。如上面已经描述的,在下溢的情况下,输出指数e'将被刷新为零。
图8是说明性的尾数选择电路604的图示,其用于选择高精度的输入尾数的哪一部分输出到低精度的块浮点矢量单元。如图8所示,尾数选择器604可以包括多个子电路,每个子电路处理一个可能的低精度的尾数。低精度的输出尾数i'的位宽由如上面结合图7所定义的Mantissa_Width来设置。
第一子电路可以具有第一复用器802,第一复用器802具有被配置为接收高精度输入有效数i的第一部分的第一(0)数据输入、被配置为接收从加法器804(其将输入i与“0”相加在一起)产生的总和的第二(1)数据输入、被配置为接收从第一溢出比较器806(其确定加法器804的输出是否已经溢出)输出的溢出信号的控制输入、以及具有由Mantissa_Width确定的位宽的对应的复用器输出。
剩余的子电路中的每一个可以具有其自己的单独的复用器802,该复用器802具有被配置为接收输入有效数i的相应的部分的第一(0)数据输入、被配置为接收从加法器804(其将i的相应的部分与相应的计算出的取整位相加在一起)产生的总和的第二(1)数据输入、被配置为接收从相关联的溢出比较器806(其确定该子电路中的加法器804的输出是否已经溢出)输出的溢出信号的控制输入、以及具有由Mantissa_Width设置的位宽的对应的复用器输出。
取整位可以由该子电路中的相关联的取整逻辑电路来生成,该子电路包括确定(j-1)是否等于“选择范围”减1的比较器电路810。术语“选择范围”可以被定义为选择信号的最大编程范围(即,选择信号的值的可能的总数)。例如,如果尾数选择器被配置为执行两次迭代,则选择范围将等于二(即,选择信号可以为0或1)。作为另一示例,如果尾数选择器被配置为仅执行一次迭代,则选择范围将等于一(即,选择信号可以仅为0)。
变量j可以对应于电路的给定的部分的索引。因此,如果尾数选择器可以产生四个不同的尾数部分,则参数j针对尾数部分中的每一个将等于1、2、3或4。因此,如果选择范围和j二者等于1,则比较器810将生成高输出信号(由于j-1将等于选择范围减1)。子电路可以进一步包括逻辑AND门808,其被配置为接收来自比较器810的输出信号和高精度有效数的剩余的位。仅当比较器810的输出为高并且所接收的尾数部分中的位中的至少一个为高时,逻辑AND门808才可以输出断言的取整位。否则,逻辑AND门808将向该子电路中的对应的加法器804输出低取整位。在上面的示例中,在选择范围和j二者等于1的情况下,取整将针对第一尾数分量被实现,而剩余的分量(2、3、4)将不产生取整后的结果。
可以在复用电路820处接收每个子电路的复用器输出,该复用电路820取决于选择信号的值从可选地取整后的尾数部分之一中进行选择。尾数选择器604可以进一步包括下溢复用器830,其具有被配置为从复用器820中接收输出信号的第一(0)数据输入、被配置为接收逻辑“0”的第二(1)数据输入、被配置为从指数选择器602中接收下溢信号的控制输入(例如,参见图6)、以及在其上提供低精度的尾数i'的输出。因此,在下溢的情况下,输出尾数i'将等于零。
例如,考虑一种情境,其中,输入到尾数选择器的原始的高精度尾数具有位m7m6m5m4m3m2m1m0,点积引擎的精度为4位(即,Mantissa_Width=4),并且选择范围等于2,这是因为应用需要所有8位的精度。这里,可以存在两种可能的分解。由于选择范围等于二,因此选择信号仅可以为0或1。当选择信号等于0时,尾数选择器将产生m7m6m5m4(即,4个最高有效位)。当选择信号等于1时,尾数选择器将产生m3m2m1m0(即,4个最低有效位);没有取整将发生在这里,这是因为不存在剩余的尾数位。
作为另一个示例,考虑一种不同的情境,其中,输入到尾数选择器的原始的高精度的尾数具有位m7m6m5m4m3m2m1m0,点积引擎的精度为4位(即,Mantissa_Width=4),但是选择范围被设置为1(假设应用可以容忍或仅需要4位精度)。由于选择范围等于一,因此选择信号仅可以为0。当选择信号等于0时,尾数选择器将产生m7m6m5m4加上潜在的取整位。这里,j-1将等于选择范围减1,因此仅当m3、m2、m1或m0为高时,取整位才将为高。
现在让我们考虑一个数值示例,其中,块大小为2,并且点积引擎的精度为4位。假设输入选择器的两个输入是:
i0=1001 0001 0110
i1=1110 0011 1000
其中,ei等于12。如果应用可以容忍4位精度,则选择范围将仅被设置为1(即,选择信号仅等于0),并且输入选择器输出将等于:
i0'=1001+1取整=1010
i1'=1110+1取整=1111
其中,ei等于12,并且其中,+1是剩余的位的取整。
在上面的示例中,如果应用仅需要8位精度,则选择范围将被设置为2(即,选择信号可以为0或1)。在这种情境中,当选择信号等于0时,输入选择器输出将等于:
i0'=1001
i1'=1110
其中,ei=12。针对此子电路,取整信号将为低。
当选择信号等于1时,输入选择器输出将等于:
i0'=0001+1取整=0010
i1'=0011+1取整=0100
其中,ei=12,并且其中,+1是剩余的位的取整。最后一个子电路永远不会发送结果,这是因为在这种应用使用情况下,选择信号仅总是被设置为0或1。
在上面的示例中,如果应用要求所有12位精度,则选择范围将被设置为3(即,选择信号可以为0、1或2)。在这种情境中,当选择信号等于0时,输入选择器输出将等于:
i0'=1001
i1'=1110
其中,ei=12。针对此子电路,取整信号将为低。
当选择信号等于1时,输入选择器输出将等于:
i0'=0001
i1'=0011
其中,ei=8。针对此子电路,取整信号也将为低。
当选择信号等于2时,输入选择器输出将等于:
i0'=0110
i1'=1000
其中,ei=4。不存在针对最后的子电路的取整,这是因为不存在剩余的位。上面描述的取整方案仅仅是说明性的,并且不旨在限制本实施例的范围。如果需要,则可以执行其他取整方案(例如,取整到最接近的偶数、取整到最接近的奇数、或可能不进行取整)。
上面描述的数值示例示出了随着时间的分解(有时被称为时间分解或时间复用的分解)。图9是示出可以如何实现随着时间的分解的高级框图。如图9所示,诸如精度周期计数器408'之类的控制电路可以用于驱动选择信号,该选择信号的范围可以从零到选择范围减一。计数器408'有效地规定点积的精度,并且可以被编程为允许用于不同的点积的不同的精度。作为示例,针对支持4位块浮点有效数的矩阵单元406,则1个周期将产生4位精度,而2个周期将产生8位精度,依此类推。
图10示出了又一个潜在的实现,其中,多个低精度矩阵/矢量单元被用于并行处理各个尾数部分。如图10所示,每个矩阵/矢量单元接收高精度的数的不同的分解后的分量,其之后是用于重组结果的还原(reduction)阶段1002。例如,将使用第一低精度的块浮点矢量单元406a来处理与为0的选择信号相关联的输入选择器404-1a,而将使用另一低精度的块浮点矢量单元406b来处理与选择范围减一的选择信号相关联的输入选择器404-1b。这种类型的信号分解有时被称为“空间的”分解。
一般而言,以上关于图1-10描述的实施例可以应用于任何机器学习过程,包括但不限于这样的神经网络:具有5-10层、少于5层、10-100层、100-1000层、或超过1000层,或者可以应用于其他计算密集型算法。这些实施例可以被可选地实现为诸如数据中心或数据处理系统之类的系统的一部分,以用于处理各种不同的请求(例如,用于执行加密、解密、机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航或某个其他专门的任务的数据处理请求)。作为其他示例,这些实施例可以应用于计算机联网系统、数据联网系统、数字信号处理系统、图形处理系统、视频处理系统、计算机视觉处理系统、蜂窝基站、虚拟现实或增强现实系统、网络功能虚拟化平台、人工神经网络、自动驾驶系统、这些系统中的至少一些的组合和/或其他合适类型的计算系统。
示例:
以下示例涉及进一步的实施例。
示例1是一种电路,包括:存储电路,其被配置为输出具有第一精度的浮点数;输入选择电路,其被配置为从存储电路中接收浮点数,并且将所接收的浮点数分解为具有小于第一精度的第二精度的对应的分解后的分量;以及浮点矢量电路,其被配置为从输入选择电路中接收分解后的分量。
示例2是示例1的电路,其中,存储电路被可选地进一步配置为输出具有第一精度的附加的浮点数,并且其中,输入选择电路被可选地进一步配置为从存储电路中接收附加的浮点数并且将附加的浮点数分解为具有第二精度的对应的分解后的分量。
示例3是示例2的电路,其中,浮点数和附加的浮点数可选地具有相同的指数值。
示例4是示例1-3中的任一项的电路,其中,存储电路被进一步可选地配置为输出附加的浮点数,该电路可选地进一步包括:附加的输入选择电路,其被配置为从存储电路中接收附加的浮点数,并且将附加的浮点数分解为对应的分解后的分量。
示例5是示例1-4中的任一项的电路,其中,浮点矢量电路可选地包括浮点点积引擎。
示例6是示例1-5中的任一项的电路,其中,浮点矢量电路可选地包括块浮点点积引擎。
示例7是示例1-6中的任一项的电路,其中,浮点矢量电路可选地包括:多个乘法器电路;以及加法器树,其被配置为从多个乘法器电路中接收信号。
示例8是示例1-7中的任一项的电路,可选地进一步包括:精度控制器,其被配置为生成选择信号,该选择信号被馈送到输入选择电路。
示例9是示例8的电路,其中,精度控制器可选地包括精度周期计数器。
示例10是示例8的电路,其中,输入选择电路可选地包括:指数选择电路,其被配置为接收浮点数的指数并且输出对应的调整后的指数;以及尾数选择电路,其被配置为输出具有第二精度的分解后的分量。
示例11是示例10的电路,其中,指数选择电路可选地包括:减法电路,其被配置为计算所接收的指数与作为选择信号的值的函数的数之间的差。
示例12是示例11的电路,其中,指数选择电路可选地进一步包括:下溢比较器;以及开关电路,其被配置为:从减法电路中接收计算出的差,从下溢比较器中接收下溢信号,并且输出调整后的指数。
示例13是示例10-12中的任一项的电路,其中,尾数选择电路可选地包括:多个子电路,子电路中的每一个被配置为输出分解后的分量中的对应的一个。
示例14是示例13的电路,其中,多个子电路中的至少一个可选地包括:加法器;取整逻辑,其被配置为向加法器输出取整位;溢出比较器,其被配置为从加法器中接收信号;以及复用器,其被配置为从加法器和溢出比较器中接收信号。
示例15是示例13-14中的任一项的电路,其中,尾数选择电路可选地进一步包括:复用电路,其具有被配置为从多个子电路中接收分解后的分量的数据输入和被配置为从精度控制器中接收选择信号的控制输入。
示例16是一种可操作用于支持应用的电路,包括:电路,其被配置为提供浮点数;以及输入选择器,其被配置为将浮点数分解为对应的较低精度分量,并且当应用使用第一精度量时,接收具有第一选择范围的选择信号,并且当应用使用与第一精度量不同的第二精度量时,接收具有与第一选择范围不同的第二选择范围的选择信号。
示例17是示例16的电路,其中,较低精度分量被可选地选择性地取整。
示例18是示例16-17中的任一项的电路,可选地进一步包括:精度周期计数器电路,其被配置为生成选择信号以实现随着时间的分解。
示例19是一种电路,包括:第一组输入选择器,其被配置为接收高精度的浮点数并且生成对应的第一分解后的较低精度分量;第一较低精度的浮点矩阵电路,其被配置为从第一组输入选择器中接收第一分解后的较低精度分量;第二组输入选择器,其被配置为接收高精度的浮点数并且生成对应的第二分解后的较低精度分量;以及第二较低精度的浮点矩阵电路,其被配置为从第二组输入选择器中接收第二分解后的较低精度分量。
示例20是示例19的电路,可选地进一步包括:还原电路,其被配置为组合根据第一较低精度的浮点矩阵电路和第二较低精度的浮点矩阵电路生成的信号。
例如,上面描述的装置的所有可选的特征也可以关于本文描述的方法或过程来实现。前述内容仅仅是本公开的原理的示例,并且可以由本领域技术人员做出各种修改。前述实施例可以个体地或以任何组合来实现。
Claims (25)
1.一种电路,包括:
存储电路,其被配置为输出具有第一精度的浮点数;
输入选择电路,其被配置为从所述存储电路中接收所述浮点数,并且将所接收的浮点数分解为具有小于所述第一精度的第二精度的对应的分解后的分量;以及
浮点矢量电路,其被配置为从所述输入选择电路中接收所述分解后的分量。
2.根据权利要求1所述的电路,其中,所述存储电路被进一步配置为输出具有所述第一精度的附加的浮点数,并且其中,所述输入选择电路被进一步配置为从所述存储电路中接收所述附加的浮点数并且将所述附加的浮点数分解为具有所述第二精度的对应的分解后的分量。
3.根据权利要求2所述的电路,其中,所述浮点数和所述附加的浮点数具有相同的指数值。
4.根据权利要求1所述的电路,其中,所述存储电路被进一步配置为输出附加的浮点数,所述电路进一步包括:
附加的输入选择电路,其被配置为从所述存储电路中接收所述附加的浮点数,并且将所述附加的浮点数分解为对应的分解后的分量。
5.根据权利要求1所述的电路,其中,所述浮点矢量电路包括浮点点积引擎。
6.根据权利要求1所述的电路,其中,所述浮点矢量电路包括块浮点点积引擎。
7.根据权利要求1所述的电路,其中,所述浮点矢量电路包括:
多个乘法器电路;以及
加法器树,其被配置为从所述多个乘法器电路中接收信号。
8.根据权利要求1至7中的任一项所述的电路,进一步包括:
精度控制器,其被配置为生成选择信号,所述选择信号被馈送到所述输入选择电路。
9.根据权利要求8所述的电路,其中,所述精度控制器包括精度周期计数器。
10.根据权利要求8所述的电路,其中,所述输入选择电路包括:
指数选择电路,其被配置为接收所述浮点数的指数并且输出对应的调整后的指数;以及
尾数选择电路,其被配置为输出具有所述第二精度的所述分解后的分量。
11.根据权利要求10所述的电路,其中,所述指数选择电路包括:
减法电路,其被配置为计算所接收的指数与作为所述选择信号的值的函数的数之间的差。
12.根据权利要求11所述的电路,其中,所述指数选择电路进一步包括:
下溢比较器;以及
开关电路,其被配置为:从所述减法电路中接收计算出的差,从所述下溢比较器中接收下溢信号,并且输出所述调整后的指数。
13.根据权利要求10所述的电路,其中,所述尾数选择电路包括:
多个子电路,所述子电路中的每一个被配置为输出所述分解后的分量中的对应的一个。
14.根据权利要求13所述的电路,其中,所述多个子电路中的至少一个包括:
加法器;
取整逻辑,其被配置为向所述加法器输出取整位;
溢出比较器,其被配置为从所述加法器中接收信号;以及
复用器,其被配置为从所述加法器和所述溢出比较器中接收信号。
15.根据权利要求13所述的电路,其中,所述尾数选择电路进一步包括:
复用电路,其具有被配置为从所述多个子电路中接收所述分解后的分量的数据输入和被配置为从所述精度控制器中接收所述选择信号的控制输入。
16.一种能够操作用于支持应用的电路,包括:
电路,其被配置为提供浮点数;以及
输入选择器,其被配置为将所述浮点数分解为对应的较低精度分量,并且当所述应用使用第一精度量时,接收具有第一选择范围的选择信号,并且当所述应用使用与所述第一精度量不同的第二精度量时,接收具有与所述第一选择范围不同的第二选择范围的选择信号。
17.根据权利要求16所述的电路,其中,所述较低精度分量被选择性地取整。
18.根据权利要求16至17中的任一项所述的电路,进一步包括:
精度周期计数器电路,其被配置为生成所述选择信号以实现随着时间的分解。
19.一种电路,包括:
第一组输入选择器,其被配置为接收高精度的浮点数并且生成对应的第一分解后的较低精度分量;
第一较低精度的浮点矩阵电路,其被配置为从所述第一组输入选择器中接收所述第一分解后的较低精度分量;
第二组输入选择器,其被配置为接收所述高精度的浮点数并且生成对应的第二分解后的较低精度分量;以及
第二较低精度的浮点矩阵电路,其被配置为从所述第二组输入选择器中接收所述第二分解后的较低精度分量。
20.根据权利要求19所述的电路,进一步包括:
还原电路,其被配置为组合根据所述第一较低精度的浮点矩阵电路和所述第二较低精度的浮点矩阵电路生成的信号。
21.一种电路,包括:
存储单元,其用于输出具有第一精度的浮点数;
选择单元,其用于接收所述浮点数并且将所接收的浮点数分解为具有小于所述第一精度的第二精度的对应的分解后的分量;以及
浮点单元,其用于接收所述分解后的分量。
22.根据权利要求21所述的电路,其中,所述存储单元被进一步配置为输出具有所述第一精度的附加的浮点数,并且其中,所述选择单元被进一步配置为从所述存储单元中接收所述附加的浮点数并且将所述附加的浮点数分解为具有所述第二精度的对应的分解后的分量。
23.根据权利要求22所述的电路,其中,所述浮点数和所述附加的浮点数具有相同的指数值。
24.根据权利要求21所述的电路,其中,所述浮点单元包括浮点点积引擎。
25.根据权利要求21至23中的任一项所述的电路,其中,所述浮点单元包括块浮点点积引擎。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410566249.2A CN118363559A (zh) | 2020-03-13 | 2020-12-04 | 具有动态精度的浮点分解电路 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/818,889 | 2020-03-13 | ||
US16/818,889 US20200218508A1 (en) | 2020-03-13 | 2020-03-13 | Floating-point decomposition circuitry with dynamic precision |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410566249.2A Division CN118363559A (zh) | 2020-03-13 | 2020-12-04 | 具有动态精度的浮点分解电路 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113391785A true CN113391785A (zh) | 2021-09-14 |
Family
ID=71405098
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011411425.3A Pending CN113391785A (zh) | 2020-03-13 | 2020-12-04 | 具有动态精度的浮点分解电路 |
CN202410566249.2A Pending CN118363559A (zh) | 2020-03-13 | 2020-12-04 | 具有动态精度的浮点分解电路 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410566249.2A Pending CN118363559A (zh) | 2020-03-13 | 2020-12-04 | 具有动态精度的浮点分解电路 |
Country Status (3)
Country | Link |
---|---|
US (2) | US20200218508A1 (zh) |
CN (2) | CN113391785A (zh) |
DE (1) | DE102020131925A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117348839A (zh) * | 2023-12-06 | 2024-01-05 | 西北工业大学 | 一种多精度低开销加法器 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220300254A1 (en) * | 2021-03-22 | 2022-09-22 | Rebellions Inc. | Processing element, neural processing device including same, and method for calculating thereof |
GB2621135B (en) * | 2022-08-01 | 2024-07-31 | Advanced Risc Mach Ltd | Methods and systems employing enhanced block floating point numbers |
GB2621136A (en) * | 2022-08-01 | 2024-02-07 | Advanced Risc Mach Ltd | Floating point number decoder |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5764556A (en) * | 1995-07-18 | 1998-06-09 | Advanced Micro Devices, Inc. | Method and apparatus for performing floating point addition |
US6282634B1 (en) * | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
US8533246B2 (en) * | 2008-12-12 | 2013-09-10 | Intel Corporation | Carry bucket-aware multiplication having bits with most significant bits set to zero |
US20190340499A1 (en) * | 2018-05-04 | 2019-11-07 | Microsoft Technology Licensing, Llc | Quantization for dnn accelerators |
US10691413B2 (en) * | 2018-05-04 | 2020-06-23 | Microsoft Technology Licensing, Llc | Block floating point computations using reduced bit-width vectors |
US10853067B2 (en) * | 2018-09-27 | 2020-12-01 | Intel Corporation | Computer processor for higher precision computations using a mixed-precision decomposition of operations |
US11586883B2 (en) * | 2018-12-14 | 2023-02-21 | Microsoft Technology Licensing, Llc | Residual quantization for neural networks |
US11188303B2 (en) * | 2019-10-02 | 2021-11-30 | Facebook, Inc. | Floating point multiply hardware using decomposed component numbers |
CN112711738A (zh) * | 2019-10-25 | 2021-04-27 | 安徽寒武纪信息科技有限公司 | 用于向量内积的计算装置、方法和集成电路芯片 |
CN113126954B (zh) * | 2019-12-31 | 2024-04-09 | 华为技术有限公司 | 浮点数乘法计算的方法、装置和算术逻辑单元 |
CN113138750A (zh) * | 2020-01-20 | 2021-07-20 | 华为技术有限公司 | 算数逻辑单元、浮点数乘法计算的方法及设备 |
-
2020
- 2020-03-13 US US16/818,889 patent/US20200218508A1/en active Pending
- 2020-12-02 DE DE102020131925.8A patent/DE102020131925A1/de active Pending
- 2020-12-04 CN CN202011411425.3A patent/CN113391785A/zh active Pending
- 2020-12-04 CN CN202410566249.2A patent/CN118363559A/zh active Pending
-
2023
- 2023-12-28 US US18/399,381 patent/US20240126506A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117348839A (zh) * | 2023-12-06 | 2024-01-05 | 西北工业大学 | 一种多精度低开销加法器 |
CN117348839B (zh) * | 2023-12-06 | 2024-02-13 | 西北工业大学 | 一种多精度低开销加法器 |
Also Published As
Publication number | Publication date |
---|---|
CN118363559A (zh) | 2024-07-19 |
DE102020131925A1 (de) | 2021-09-16 |
US20200218508A1 (en) | 2020-07-09 |
US20240126506A1 (en) | 2024-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10996926B2 (en) | Variable precision floating-point multiplier | |
CN113391785A (zh) | 具有动态精度的浮点分解电路 | |
US10838695B2 (en) | Fixed-point and floating-point arithmetic operator circuits in specialized processing blocks | |
CN109643226B (zh) | 可变精密浮点加法器和减法器 | |
US7372297B1 (en) | Hybrid interconnect/logic circuits enabling efficient replication of a function in several sub-cycles to save logic and routing resources | |
US20190079728A1 (en) | Floating-point adder circuitry with subnormal support | |
US12056461B2 (en) | Integrated circuits with machine learning extensions | |
US10853034B2 (en) | Common factor mass multiplication circuitry | |
CN110716708A (zh) | 用于非常大整数的加法器电路 | |
US8463836B1 (en) | Performing mathematical and logical operations in multiple sub-cycles | |
US20240281212A1 (en) | Adder circuit using lookup tables | |
US11256979B2 (en) | Common factor mass multiplication circuitry | |
US7818361B1 (en) | Method and apparatus for performing two's complement multiplication | |
US7765249B1 (en) | Use of hybrid interconnect/logic circuits for multiplication | |
CN115878074A (zh) | 用于专门的过程块中的稀疏性操作的系统和方法 | |
EP3358459B1 (en) | Methods and apparatus for performing fixed-point normalization using floating-point functional blocks |
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 |