CN114675803A - 用于浮点尾数的舍入电路 - Google Patents
用于浮点尾数的舍入电路 Download PDFInfo
- Publication number
- CN114675803A CN114675803A CN202111359646.5A CN202111359646A CN114675803A CN 114675803 A CN114675803 A CN 114675803A CN 202111359646 A CN202111359646 A CN 202111359646A CN 114675803 A CN114675803 A CN 114675803A
- Authority
- CN
- China
- Prior art keywords
- rounding
- bit
- floating
- input
- bits
- 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
- 238000000034 method Methods 0.000 claims abstract description 22
- 238000007667 floating Methods 0.000 claims description 31
- 238000010606 normalization Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 17
- 239000013598 vector Substances 0.000 description 16
- 238000013461 design Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000004094 surface-active agent Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
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
-
- 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
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Logic Circuits (AREA)
Abstract
系统和方法包括生成浮点尾数的算术电路,并且包括基于输入位计算浮点尾数的传播网络。系统和方法还包括舍入浮点尾数的舍入电路。舍入电路包括在用于浮点尾数的舍入位置处的复用器,其选择性地输入输入位的第一输入位或舍入位。舍入电路还包括将输入位的第二输入位与舍入位进行或运算的或门。此外,第二输入位是比第一输入位低的有效位。
Description
技术领域
本公开涉及被设计为执行浮点运算的集成电路。更具体地,本公开涉及将灵活的舍入点用于浮点尾数。
背景技术
本节旨在向读者介绍可能与本公开的各个方面相关的本领域的各个方面,这些方面在下面描述和/或要求保护。该论述被认为有助于为读者提供背景信息以促进更好地理解本公开的各个方面。因此,应当理解,这些陈述应据此进行阅读,而不是作为对现有技术的承认。
人工智能(AI)正成为日益流行的应用领域。AI应用的浮点运算的舍入电路实现方式已成为专用标准产品(ASSP)设计和中央处理单元(CPU)设计二者的架构瓶颈。
AI以浮点格式使用许多不同数量(例如,8、16和32)的位用于存储和计算。然而,当计算内积时,至少一些格式可以使用通用格式。例如,内积的累加可以使用IEEE float32来执行以保持高精度,而不管在神经网络的输入和/或输出中使用的精度级别。AI(尤其是深度学习)构建了多层拓扑,数据通过它进行传播。由于每个运算的输入都是以较低精度格式之一(例如,float16)提供的,因此在内积完成之后将累加器结果向下转换为对应的目标精度。使用这种精度级别,使得可以将舍入的累加器结果正确地馈送到AI实现方式的下一层(例如,神经网络)。
附图说明
通过阅读以下详细描述并参考附图,可以更好地理解本公开的各个方面,在附图中:
图1是根据实施例的用于实现浮点乘法器舍入的系统的框图;
图2是根据实施例的可以实现乘法器的集成电路设备的框图;
图3是根据实施例的用于执行具有舍入的浮点乘法的浮点乘法器的框图;
图4是根据实施例的作为图3的浮点乘法器的另一实施例的浮点乘法器的框图;
图5是根据实施例的混合整数和浮点乘法器的框图;
图6是根据实施例的浮点乘法器的框图;
图7是示出根据实施例的可用于图6的浮点乘法器中的Brent-Kung传播网络的延迟分布(profile)的曲线图;
图8是根据实施例的执行浮点舍入运算以执行多个连续舍入点的系统的框图;
图9是根据实施例的为多个非连续舍入点实现浮点运算的系统的框图;以及
图10是根据实施例的其中可以实现一个或多个浮点乘法器舍入电路的数据处理系统的框图。
具体实施方式
下面将描述一个或多个具体实施例。为了提供这些实施例的简明描述,在说明书中并未描述实际实现方式的所有特征。可以理解,在任何此类实际实现方式的开发中,就像在任何工程或设计项目中一样,必须做出许多特定于实现方式的决策来实现开发者的特定目标,例如遵守系统相关和业务相关的约束,这可能因实现方式而异。此外,可以理解,这样的开发工作可能是复杂和耗时的,但是对于受益于本公开的普通技术人员来说,这仍然是设计、制造和制造的例行工作。
当介绍本公开的各种实施例的要素时,冠词“一(a)”、“一个(an)”和“该(the)”旨在表示存在一个或多个要素。术语“包括”和“具有”旨在包含性的且表示除了所列元素之外可能还有其它元素。此外,应当理解,对本公开的“一些实施例”、“实施例”、“一个实施例”或“一实施例”的引用并不旨在被解释为排除存在也包含所引用特征的附加实施例。此外,短语A“基于”B旨在表示A至少部分地基于B。此外,术语“或”旨在包含性的(例如,逻辑或)而不是排他性的(例如,逻辑异或)。换句话说,短语A“或”B旨在表示A、B、或者A和B二者。
如下文进一步详细讨论的,本公开的实施例一般涉及用于在利用多于一个浮点精度级别的系统中舍入和/或计算一个或多个尾数舍入位置的逻辑电路。这种计算可以使用多个加法器,但加法器的尺寸和/或成本可能很昂贵。相比之下,使用现代设计工具,进位传播加法器(CPA)可用于实现执行加法和舍入的组合加法器。然而,利用CPA和组合加法器的电路可能会变得非常复杂,以实现多个可选择的舍入位置。如本文所讨论的,结合并行前缀传播电路,舍入电路可以使得尾数中的舍入起始点能够被自由控制。自由控制尾数中的舍入起始点可能会导致计算延迟更少,因为并行传播电路可以在设置的舍入点(例如,在更高有效位)处开始计算,而不是执行整个舍入计算。
考虑到上述情况,图1示出了可以实现浮点乘法器舍入的系统10的框图。设计者可能希望在集成电路设备12(例如,现场可编程门阵列(FPGA))上的各个舍入位置处实现涉及多个舍入操作的功能。设计者可以指定要实现的高级程序,例如OpenCL程序,这可以使设计者能够更高效且容易地提供编程指令以配置集成电路设备12的可编程逻辑单元集合,而不要求对低级硬件描述语言(例如,Verilog或VHDL)的特定知识。例如,因为OpenCL与其它高级编程语言(如C++)非常相似,因此为了在集成电路设备12中实现新功能,熟悉此类编程语言的可编程逻辑设计者的学习曲线可能比可能必须学习不熟悉的低级硬件描述语言的设计者要短。
设计者可以使用设计软件14来实现他们的高级设计。设计软件14可以使用编译器16来将高级程序转换成低级描述。设计软件14还可用于优化和/或提高设计效率。编译器16可以向主机18和集成电路设备12提供代表高级程序的机器可读指令。主机18可以接收可由内核程序20实现的主机程序(host program)22。为了实现主机程序22,主机18可以经由通信链路24将来自主机程序22的指令传送到集成电路设备12,这可以是例如直接存储器访问(DMA)通信或外围组件互连快速(PCIe)通信。在一些实施例中,内核程序20和主机18可以在集成电路设备12上实现浮点算术电路26的配置。浮点算术电路26可以包括电路和/或其它逻辑元件,并且可以被配置为例如实现浮点算术逻辑和/或机器学习操作。
现在转向集成电路设备12的更详细讨论,图2示出了集成电路设备12的框图,该集成电路设备12可以是可编程逻辑器件,例如FPGA。此外,应当理解,集成电路设备12可以是任何其它合适类型的可编程逻辑器件(例如,专用集成电路和/或专用标准产品)。如图所示,集成电路设备12可以具有输入/输出电路42,以用于驱动信号离开设备以及用于经由输入/输出引脚44从其它设备接收信号。互连资源46(例如,全局和局部垂直和水平导线和总线)可以用于在集成电路设备12上路由信号。另外,互连资源46可以包括固定互连(导线)和可编程互连(即,相应固定互连之间的可编程连接)。可编程逻辑48可以包括组合和顺序逻辑电路。例如,可编程逻辑48可以包括查找表、寄存器和复用器。在各种实施例中,可编程逻辑48可以被配置为执行定制逻辑功能。与互连资源相关联的可编程互连可以被认为是可编程逻辑48的一部分。可编程逻辑48可以包括不同层的可编程性的多种不同类型的可编程逻辑48。例如,可编程逻辑48可以包括各种数学逻辑单元,例如算术逻辑单元(ALU)或可配置逻辑块(CLB),其可被配置为执行各种数学函数(例如,浮点乘法计算)。集成电路(例如,集成电路设备12)可以在可编程逻辑48内包含可编程元件50。例如,设计者(例如,客户)可以对可编程逻辑48进行编程(例如,配置)以执行一个或多个期望功能(例如,执行浮点运算)。
各种机制可用于可在可编程逻辑48中使用的硬化电路(hardened circuit)中实现浮点乘法运算。图3示出了用于执行具有舍入的浮点乘法的浮点乘法器100的框图。该实施例可以使用进位传播加法器(CPA)102和舍入CPA 108。浮点舍入的某些实施例包括复合加法器,其中,CPA 102和舍入CPA 108可以由同时计算A+B和A+B+1的单个结构代替。在一些实施例中,也可以计算A+B+2。这可能导致比两个单独的加法运算更高效的结构。
可以使用用于整数乘法的某些方法来形成浮点乘法器100的尾数乘法。浮点乘法器可以包括:产生多个部分乘积的部分乘积生成器,以冗余形式将各种部分乘积相加到一起并具有两个输出向量的N-2压缩器,以及将两个向量相加到一起的CPA。
此外,图3示出了浮点乘法器100中的浮点乘法和舍入的各个步骤。浮点乘法器100接受精度为p的两个尾数。这些尾数具有隐含的前导1,因此乘法器的结果实际上是2p+2位宽。因此,输入的值为1.X和1.Y。因此,乘积将在两个可能的范围内:从1.0到和从2.0到可以对输出进行归一化以确保结果在1.0到的范围内。这种归一化可以通过检视一个或多个最高有效位的值并使用归一化复用器104右移多个(例如,1个)位来实现。换句话说,归一化复用器104可用于归一化数字到正确的位置(同时也会导致数字指数的对应变化)。乘法器输出的较低位与归一化条件相组合可以定义舍入位的值。然后可以在舍入CPA 108中将舍入位添加到尾数。如果输出的归一化值为则可以溢出到2.0。在这种情况下,指数的值可以增加1。如可以从图3看到的,这种学究式的浮点乘法器舍入方法会导致更长的关键路径(critical path)。在关键路径中,首先将“和”和“进位”位输入到第一CPA 102。然后,来自CPA 102的输出被输出到归一化复用器104和舍入电路106。来自归一化复用器104和舍入电路106的输出然后被输出到舍入CPA 108。舍入CPA 108输出尾数值,并且任何进位将被输出到组件110。浮点乘法器100将生成正确的结果,但可能不是用于专用集成电路(ASIC)中的最有效选择。浮点乘法器100可能不适合ASIC(因为CPA占用了集成电路设备12上的大量空间),可能很昂贵,并且可能比替代实现方式效率低。在某些ASIC浮点乘法器架构中,舍入电路106可以与舍入CPA 108组合。
图4示出了作为图3中描述的浮点乘法器100的替代实施例的浮点乘法器120的框图。主要地,可以用并行前缀传播电路122代替图3中的舍入CPA 108。并行前缀传播电路122是这样一种结构,其中每个输出可以是其位置之前的输入的按位与。然后,输入的与运算(ANDing)的输出随后可以与舍入位进行与运算。并行前缀传播电路122可以与任何合适的前缀拓扑(例如,Brent-Kung、Ladner-Fischer或其它合适的前缀拓扑)并行高效地实现。并行前缀传播电路122的输出然后可以与归一化复用器104的输出位进行异或。并行前缀传播电路122的最高有效位输出将指示溢出。用并行前缀传播电路122代替舍入CPA 108的优点在于,并行前缀传播电路122的尺寸和简单性使得它节省空间并减少浮点乘法器120中的延时。
允许对现有技术进行所公开的改进的一个技术方面是合成工具和设计软件的改进,例如图1中描述的那些。在先前,电路设计者必须指定组合浮点舍入或CPA电路的逐门实现。电子设计自动化(EDA)工具已经改进到存在已发布的算术拓扑库的点,并且EDA工具可以快速评估大量方法,包括压缩器对CPA架构的影响。因此,在行为上指定CPA的情况下构建浮点乘法器可以产生比使用浮点乘法器100和120实现的电路更小的电路尺寸。构建图4的舍入实现方式的附加元件(即,并行前缀传播电路122)的成本小于图3中所示的显式(explicitly)定义的对应物(即,舍入CPA 108)。
图5示出了具有并行前缀加法器154的混合整数和浮点乘法器150的简化框图。首先,电路152计算向量x(i)、生成向量g(i)和传播向量p(i)的部分乘积。两个输入向量a(i)和b(i)可以是:(1)按位异或,其得到向量x(i),(2)按位与,其得到生成向量g(i),以及(3)按位或,其得到传播向量p(i)。然后可以将生成向量g(i)和传播向量p(i)输入到并行前缀加法器154中,该并行前缀加法器154输出进位向量c(i)。向量x(i)和c(i)然后可以被输入到异或门160中以产生结果向量r(i)。可以使用多种前缀拓扑(例如,Brent-Kung或Ladner-Fischer网络)来实现并行前缀加法器154。
混合整数和浮点乘法器150可能比所示的更复杂,并且可能导致集成电路设备12上的空间消耗和延时的增加。回想图3,浮点尾数在CPA 102的上部,并且舍入CPA 108仅用于舍入确定。因此,图5中的向量拆分成两半,并且每一半可以经由并行前缀加法器154a和154b相加在一起。由于混合整数和浮点乘法器150可以重新用于整数乘法,所以可以使用整个输出。因此,可以添加并行前缀加法器154c以可选地组合并行前缀加法器154a和154b的输出。结果,尾数的范围可能从2.0到为了适应这个范围,可以使用半加器层162在尾数位置的最低有效位中插入附加空间。这种附加空间的插入使得混合整数和浮点乘法器150能够在位置0或位置1处注入舍入。
在诸如图5所示的混合整数和浮点乘法器150之类的系统中可能难以实现添加附加的舍入位置。为了添加附加的舍入位置,混合整数和浮点乘法器150可以利用:添加附加的并行前缀加法器154并重新格式化(reformat)它们在混合整数和浮点乘法器150中的位置,以潜在地增加混合整数和浮点乘法器150的复杂度。相比之下,图6描述了可用于比图5的混合整数和浮点乘法器150更高效地添加附加的舍入位置的浮点乘法器200。例如,浮点乘法器200可以省略半加器层162,同时在多个位置处提供舍入点。
如前所述,图3中所示的CPA 102和舍入CPA 108可以由单个结构代替,该结构可能比其中单独执行多个加法运算的结构更高效。图6示出了浮点乘法器200的实施例的简化框图,其中,浮点乘法器200表示可以高效地实现多个加法运算同时保持运算分离的结构。这可能导致更易于维护和验证的更简单的设计代码库(design code base)。
可以使用EDA工具显式定义或在行为上指定图6中的CPA电路202。CPA电路202驱动处理电路206、舍入电路213和传播网络208。处理电路206使用来自CPA电路202的输出和/或其它控制信号来生成舍入位207。舍入电路213包括舍入复用器210,其被配置为在舍入位置处将舍入位207或来自CPA电路202的对应位输出到传播网络208。浮点乘法器200中还可以包括一个或多个或门212,以将传播网络208中舍入位置右侧的一位或多位(例如,传播位)驱动为逻辑值(例如,高)。强制舍入位置右侧的一位或多位为高可以导致浮点乘法器200表现得好像传播网络208中的计算开始于注入舍入处一样。换句话说,将这些位驱动为高可以将浮点乘法器200(例如,归一化复用器204)的一些部分移出关键路径。
在浮点乘法器200中,传播网络208的最高有效位输出驱动归一化复用器204和指数调整二者,随后是异常处理。在异常处理完成之前,不能使用尾数值。异常处理可能发生在浮点乘法器200外部但在集成电路设备12内(例如,通过可编程逻辑48内的指定功能),和/或可以在浮点乘法器200中使用为简单起见从图中省略的电路进行处理。归一化复用器204出现在异或218之后。异或218可以将来自传播网络208的进位值应用到然后由归一化复用器204复用的值。
传播网络208可以由诸如EDA工具之类的设计软件在行为上指定。显式定义的电路可能很大而且很复杂。这可能导致电路更容易出现错误(bug),在集成电路设备12上消耗更多空间,以及增加延时和功耗。相反,行为上指定电路可能会导致更容易验证的简化电路。
图7示出了延迟分布图220,其示出了为什么图6的归一化复用器204不再处于关键路径中。换句话说,归一化复用器204不再依赖于传播网络208的最慢输出位。在图4中,浮点乘法器120可以操作,使得并行前缀传播电路122在并行前缀传播电路122可以开始处理之前依赖于接收归一化复用器104的结果,由此增加浮点乘法器120中的延时。然而,在图6中,最高有效位输出可以比来自传播网络208的至少一些位更快地变得可用。如前所述,图6示出了传播网络208的最高有效位输出驱动归一化复用器204和异常处理之后的指数调整二者。
在某些传播网络(例如,Brent-Kung网络)中,中间位比最高有效位花费更长的时间来计算。这些类型的网络的延迟分布在图7中示出。图7示出延迟分布图220。延迟分布图220包括X轴222,其表示左侧的较大位索引和右侧的较低位索引。延迟分布图220包括Y轴224,其中增加的深度代表增加的延迟。图7还示出了传播网络208的一部分226和传播网络208的另一部分228。从部分226在X轴222和Y轴224上的定位可以看出,该部分226处的位比代表传播网络208的中间位的部分228处的位经历更少的延迟。由于传播网络208的最高有效位驱动归一化复用器204,并且传播网络208的中间位通常具有最大延迟,因此可以看出归一化复用器204在关键路径之外。
图8示出了具有多个舍入点的系统250的框图。系统250包括独热编码器(one-hotencoder)252、一元编码器254、一组复用器256、一组或门258以及传播网络208。独热编码器252、一元编码器254、一组复用器256以及一组或门258共同形成舍入电路260。舍入电路260可以是图6中描述的舍入电路213的替代实施例。在舍入电路260中,当一组复用器256选择某个位置作为舍入位置(例如,位置2)时,独热编码器252的输出将所选择的位位置设置为1并且所有其它位置设置为0。例如,在位位置2处舍入的4位舍入电路中,独热编码器252将输出“0100”。对于一元编码器254,如果选择位置作为舍入位置(例如,位置2),则一元编码器254将为舍入位置处的位和舍入位置左侧的所有位输出0。一元编码器254还为舍入位置右侧的所有位输出1。这些1使舍入位置右侧的所有或门258为位位置右侧的位输出1。例如,在位置2处具有舍入位置的4位舍入电路中,一元编码器254输出为“0011”。作为另一示例,如果舍入电路260是将位6作为所选舍入位置的10位位置(9:0)舍入电路,则独热编码器252的输出将是“0001000000”,并且一元编码器254的输出将是“0000111111”。然后输出将被或门258注入到在对应位置处的传播网络208中(例如,传播向量p(i))。
使用舍入电路260而不是舍入电路213使得归一化复用器204能够在传播网络208之前实现。将归一化复用器204移动到传播网络208的输出端使集成电路设备12能够复用两个相邻位置之间的舍入位(例如,舍入位207)。
图9是具有多个不连续舍入位置的系统270的框图。图9示出了具有独热编码器252、一元编码器254、一组复用器256、一组或门258和传播网络208的系统270。独热编码器252、一元编码器254、一组复用器256和一组或门258共同形成舍入电路272。虽然图9中的系统包含特定尺寸的舍入电路272,但舍入电路272内的一个或多个位可能不连接到一组复用器256中的复用器,并且因此可能不可用作舍入位置。例如,如果系统270具有8位舍入电路272(7:0),则只有四位可以耦合到一组复用器256中的复用器,并因此可用作舍入位(例如,位7、6、3和0可能是可用作舍入位置的仅有的位)。换句话说,系统使得能够使用不连续的不同舍入位置。例如,如果位6被选作舍入位置,则一元编码器254将触发位6右侧的所有或门258,导致位6右侧的位(例如,5:0)被设置为1。在这种情况下,传播网络208可以就像舍入计算在位6处开始一样进行操作。虽然该示例描述了具有4个可用舍入位置的8位舍入电路272,但应当注意,其它实施例可以包括任意尺寸的舍入电路272,具有任意数量的可用舍入位置。例如,复用器256可以位于神经网络中不同格式的尾数中经常使用的某些位位置处。例如,位位置可以设置为2、4、8、16、32或任何其它合适的位置(例如,使用2^n导出的任何数字)。
图3-9中所示的实施例可以在多个集成电路设备上实现,例如图2中描述的集成电路设备12。图2中的集成电路设备12可以是ASIC或FPGA。集成电路设备12可以是数据处理系统(例如,图10所示的数据处理系统300)或者可以是其组件。数据处理系统300可以包括主机处理器302、存储器和/或存储电路304以及网络接口306。数据处理系统300可以包括更多或更少的组件(例如,电子显示器、用户界面结构或ASIC)。主机处理器302可以包括任何合适的处理器,例如处理器或精简指令处理器(例如,精简指令集计算机(RISC)或高级RISC机器(ARM)处理器),其可以管理数据处理系统300的数据处理请求(例如,以执行机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航等)。存储器和/或存储电路304可以包括随机存取存储器(RAM)、只读存储器(ROM)、一个或多个硬盘驱动器、闪存等。存储器和/或存储电路304可以保存要由数据处理系统300处理的数据。在一些情况下,存储器和/或存储电路304还可以存储用于对集成电路设备12进行编程的配置程序(比特流)。网络接口306可以允许数据处理系统300与其它电子设备通信。数据处理系统300可以包括若干不同的封装或者可以包含在单个封装衬底上的单个封装内。
在一个示例中,数据处理系统300可以是处理各种不同请求的数据中心的一部分。例如,数据处理系统300可以经由网络接口306接收数据处理请求以执行机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排名、生物信息学、网络安全模式识别、空间导航或其它一些专门的任务。主机处理器302可以使集成电路设备12的可编程逻辑结构用适合于实现所请求任务的乘法器进行编程。例如,主机处理器302可以指示存储在存储器和/或存储电路304上的配置数据(比特流)被编程到集成电路设备12的可编程逻辑结构中。配置数据(比特流)可以表示使用一个或多个浮点乘法器或其它浮点算术运算的电路设计集,其可以根据本文描述的技术映射到可编程逻辑并在其中打包到一起。通过高效地映射和打包浮点乘法器,可以在集成电路设备12上减少用于执行所请求任务的面积、延时和/或路由资源。
虽然本公开中阐述的实施例可易于进行各种修改和替代形式,但具体实施例已经通过示例在附图中示出并且已经在本文中进行了详细描述。然而,可以理解的是,本公开并不旨在限于所公开的特定形式。本公开将涵盖落入由以下所附权利要求限定的本公开的精神和范围内的所有修改、等同和替代。
本文提出和要求保护的技术被引用并应用于实际性质的实物和具体示例,其明显改进了当前技术领域,并且因此不是抽象的、无形的或纯理论的。此外,如果附于本说明书的任何权利要求包含被指定为“用于[执行][功能]…的单元”或“用于[执行][功能]…的步骤”的一个或多个元素,则旨在此类元素应根据35USC 112(f)进行解释。然而,对于包含以任何其它方式指定的元素的任何权利要求,并不旨在将这些元素根据35U.S.C.112(f)进行解释。
本公开的示例性实施例
以下编号的条款定义了本公开的某些示例性实施例。
示例性实施例1、一种系统,包括:
算术电路,其生成浮点尾数并且包括:
基于多个输入位来计算浮点尾数的传播网络;以及
舍入浮点尾数的舍入电路,其中该舍入电路包括:
用于浮点尾数的舍入位置处的复用器,其选择性地输入多个输入位中的第一输入位或舍入位;以及
将多个输入位中的第二输入位与舍入位进行或运算(OR)的或门,其中第二输入位是比第一输入位低的有效位。
示例性实施例2、示例性实施例1的系统,其中,算术电路包括乘法器电路,该乘法器电路包括:
接收第一浮点数的第一输入;以及
接收第二浮点数的第二输入,其中算术电路至少部分地基于第一和第二浮点数的乘法来生成浮点尾数。
示例性实施例3、示例性实施例2的系统,其中,乘法器电路包括加法器,该加法器将一个或多个值加在一起以至少部分地基于第一和第二浮点数来生成多个输入位。
示例性实施例4、示例性实施例1的系统,包括输出复用器,其从传播网络接收浮点尾数并将浮点尾数归一化。
示例性实施例5、示例性实施例1的系统,其中,多个输入位至少部分地基于对在多个异或门处接收到的值的异或(XOR)运算。
示例性实施例6、示例性实施例5的系统,其中,多个输入位包括:
根据在多个与门处接收到的值生成的生成位;以及
根据在多个或门处接收到的值生成的传播位。
示例性实施例7、示例性实施例1的系统,其中,传播网络包括并行前缀传播电路。
示例性实施例8、示例性实施例1的系统,其中,舍入电路包括:
用于浮点尾数的附加舍入位置处的多个附加复用器,其选择性地输入多个输入位中的相应输入位或多个附加舍入位中的相应舍入位;以及
将多个输入位中的相应输入位与舍入位进行或运算的多个附加或门,其中多个附加复用器中的每一个对应于多个附加或门中的一个或多个或门以及附加舍入位置的相应附加舍入位置,其中对应的一个或多个或门与比多个附加复用器中的相应附加复用器低的有效位相关联。
示例性实施例9、示例性实施例8的系统,其中,多个附加复用器对应于多个输入位的非连续位。
示例性实施例10、示例性实施例9的系统,其中,多个附加或门的数量大于多个附加复用器的数量。
示例性实施例11、一种方法,包括:
接收两个值;
基于两个值的相应位对来生成输入位;
确定组合两个值的结果的舍入位;
将至少一些输入位传输到传播网络;
在传播网络中,至少部分地基于至少一些输入位生成输出;
使用舍入复用器,选择性地传输输入位中的第一输入位或在传播网络的第一位置处的舍入位;
将输入位中的第二输入位与传播网络的第二位置处的舍入位一起传输到或门,其中所述第一位置包括舍入位置并且所述第二位置处于输入位的较低有效值处;以及
至少部分地基于舍入复用器的输出和或门的输出来舍入输出。
示例性实施例12、示例性实施例11的方法,其中,生成输入位包括:对相应的位对进行异或运算,对相应的位对进行与运算,以及对相应的位对进行或运算。
示例性实施例13、示例性实施例12的方法,其中,第二输入位是对相应的位对进行或运算的结果。
示例性实施例14、示例性实施例12的方法,其中,输出包括进位位。
示例性实施例15、示例性实施例14的方法,其中,将进位位与相应的位对的异或的相应输出进行异或以生成结果位。
示例性实施例16、示例性实施例11的方法,包括在输出复用器中归一化结果位。
示例性实施例17、示例性实施例16的方法,其中,输出复用器中的归一化至少部分地基于来自传播网络的溢出。
示例性实施例18、示例性实施例17的方法,其中,溢出基于传播网络的最高有效位。
示例性实施例19、一种系统,包括:
生成浮点尾数的算术电路,包括:
基于多个输入位来计算浮点尾数的传播网络;以及
将浮点尾数舍入到多个舍入位置之一的舍入电路,其中所述舍入位置对应于:
用于浮点尾数的相应舍入位置处的相应复用器,其选择性地输入多个输入位中的第一输入位或舍入位;以及
将多个输入位中的第二输入位与舍入位进行或运算的或门,其中第二输入位是比第一输入位低的有效位。
示例性实施例20、示例性实施例19的系统,其中,多个舍入位置包括多个输入位的非连续位。
Claims (20)
1.一种系统,包括:
算术电路,其生成浮点尾数并且包括:
传播网络,其基于多个输入位来计算所述浮点尾数;以及
舍入电路,其舍入所述浮点尾数,其中,所述舍入电路包括:
用于所述浮点尾数的舍入位置处的复用器,其选择性地输入所述多个输入位中的第一输入位或舍入位;以及
或门,其将所述多个输入位中的第二输入位与所述舍入位进行或运算,其中,所述第二输入位是比所述第一输入位低的有效位。
2.根据权利要求1所述的系统,其中,所述算术电路包括乘法器电路,所述乘法器电路包括:
第一输入,其接收第一浮点数;以及
第二输入,其接收第二浮点数,其中,所述算术电路至少部分地基于所述第一浮点数和所述第二浮点数的乘法来生成所述浮点尾数。
3.根据权利要求2所述的系统,其中,所述乘法器电路包括加法器,所述加法器将一个或多个值加在一起,以至少部分地基于第一浮点数和第二浮点数来生成所述多个输入位。
4.根据权利要求1所述的系统,包括输出复用器,其从所述传播网络接收所述浮点尾数并且将所述浮点尾数归一化。
5.根据权利要求1所述的系统,其中,所述多个输入位至少部分地基于对在多个异或门处接收到的值的异或运算。
6.根据权利要求5所述的系统,其中,所述多个输入位包括:
根据在多个与门处接收到的值生成的生成位;以及
根据在多个或门处接收到的值生成的传播位。
7.根据权利要求1-6中任一项所述的系统,其中,所述传播网络包括并行前缀传播电路。
8.根据权利要求1-6中任一项所述的系统,其中,所述舍入电路包括:
用于所述浮点尾数的附加舍入位置处的多个附加复用器,其选择性地输入所述多个输入位中的相应输入位或多个附加舍入位中的相应舍入位;以及
多个附加或门,其将所述多个输入位中的相应输入位与所述舍入位进行或运算,其中,多个附加复用器中的每一个对应于所述多个附加或门中的一个或多个或门以及所述附加舍入位置中的相应附加舍入位置,其中,对应的一个或多个或门与比所述多个附加复用器中的相应附加复用器低的有效位相关联。
9.根据权利要求8所述的系统,其中,所述多个附加复用器对应于所述多个输入位的非连续位。
10.根据权利要求9所述的系统,其中,所述多个附加或门的数量大于所述多个附加复用器的数量。
11.一种方法,包括:
接收两个值;
基于所述两个值的相应位对来生成输入位;
针对组合所述两个值的结果,确定舍入位;
将所述输入位中的至少一些传输到传播网络;
在所述传播网络中,至少部分地基于所述输入位中的所述至少一些来生成输出;
使用舍入复用器,选择性地传输所述输入位中的第一输入位或所述传播网络的第一位置处的舍入位;
将所述输入位中的第二输入位连同所述传播网络的第二位置处的所述舍入位一起传输到或门,其中,所述第一位置包括舍入位置,并且所述第二位置处于所述输入位的较低的有效值处;以及
至少部分地基于所述舍入复用器的输出和所述或门的输出,来舍入所述输出。
12.根据权利要求11所述的方法,其中,生成所述输入位包括:对所述相应的位对进行异或运算,对所述相应的位对进行与运算,以及对所述相应的位对进行或运算。
13.根据权利要求12所述的方法,其中,所述第二输入位是对相应的位对进行或运算的结果。
14.根据权利要求12所述的方法,其中,所述输出包括进位位。
15.根据权利要求14所述的方法,其中,所述进位位与所述相应的位对的异或运算的相应输出进行异或运算以生成结果位。
16.根据权利要求11-15中任一项所述的方法,包括在输出复用器中归一化所述结果位。
17.根据权利要求16所述的方法,其中,所述输出复用器中的归一化至少部分地基于来自所述传播网络的溢出。
18.根据权利要求17所述的方法,其中,所述溢出基于所述传播网络的最高有效位。
19.一种系统,包括:
算术电路,其生成浮点尾数并且包括:
传播网络,其基于多个输入位来计算所述浮点尾数;以及
舍入电路,其将所述浮点尾数舍入到多个舍入位置之一,其中,所述舍入位置对应于:
用于所述浮点尾数的相应舍入位置处的相应复用器,其选择性地输入所述多个输入位中的第一输入位或舍入位;以及
或门,其将所述多个输入位中的第二输入位与所述舍入位进行或运算,其中,所述第二输入位是比所述第一输入位低的有效位。
20.根据权利要求19所述的系统,其中,所述多个舍入位置包括所述多个输入位的非连续位。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/133,861 US20210117154A1 (en) | 2020-12-24 | 2020-12-24 | Rounding Circuitry for Floating-Point Mantissas |
US17/133,861 | 2020-12-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114675803A true CN114675803A (zh) | 2022-06-28 |
Family
ID=75492364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111359646.5A Pending CN114675803A (zh) | 2020-12-24 | 2021-11-17 | 用于浮点尾数的舍入电路 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210117154A1 (zh) |
EP (1) | EP4020161A1 (zh) |
JP (1) | JP2022101463A (zh) |
CN (1) | CN114675803A (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5548544A (en) * | 1994-10-14 | 1996-08-20 | Ibm Corporation | Method and apparatus for rounding the result of an arithmetic operation |
US10037189B2 (en) * | 2016-09-20 | 2018-07-31 | Altera Corporation | Distributed double-precision floating-point multiplication |
-
2020
- 2020-12-24 US US17/133,861 patent/US20210117154A1/en active Pending
-
2021
- 2021-09-16 EP EP21197140.3A patent/EP4020161A1/en active Pending
- 2021-10-27 JP JP2021175162A patent/JP2022101463A/ja active Pending
- 2021-11-17 CN CN202111359646.5A patent/CN114675803A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4020161A1 (en) | 2022-06-29 |
US20210117154A1 (en) | 2021-04-22 |
JP2022101463A (ja) | 2022-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11520584B2 (en) | FPGA specialist processing block for machine learning | |
US11294626B2 (en) | Floating-point dynamic range expansion | |
US11899746B2 (en) | Circuitry for high-bandwidth, low-latency machine learning | |
US11334318B2 (en) | Prefix network-directed addition | |
US8336007B1 (en) | Verifiable multimode multipliers | |
US11809798B2 (en) | Implementing large multipliers in tensor arrays | |
US11275998B2 (en) | Circuitry for low-precision deep learning | |
US20210326111A1 (en) | FPGA Processing Block for Machine Learning or Digital Signal Processing Operations | |
US11163530B2 (en) | Programmable-logic-directed multiplier mapping | |
US20220365755A1 (en) | Performing constant modulo arithmetic | |
CN114675803A (zh) | 用于浮点尾数的舍入电路 | |
US20220206747A1 (en) | Efficient Dual-path Floating-Point Arithmetic Operators | |
US11768661B2 (en) | Efficient logic blocks architectures for dense mapping of multipliers | |
EP3705991A1 (en) | Geometric synthesis | |
Hayamizu et al. | Extension and performance/accuracy formulation for optimal GeAr-based approximate adder designs | |
US8255440B1 (en) | Increasing logic efficiency for exclusive OR (XOR) expressions |
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 |