低功率加法器电路的制作方法

文档序号:23679772发布日期:2021-01-23 10:08阅读:107来源:国知局
低功率加法器电路的制作方法

[0001]
本说明书涉及用于执行数学计算的硬件电路。


背景技术:

[0002]
计算电路能够包括用于将诸如整数和浮点数的数值输入相加的多个加法器电路。生产加法器电路并将其集成到现有计算电路中可能是昂贵的,而且未针对某些应用高效地调整一些加法器电路的尺寸。这些电路能够消耗电路管芯的相当大的面积,但是不管它们的大尺寸都在计算吞吐量方面没有优势。对于某些计算应用过大尺寸的加法器电路可能导致功耗和利用率低下。
[0003]
硬件电路能够用于实现神经网络。具有多个层的神经网络能够用于通过使用包括多个加法器电路的计算电路来计算推理。硬件电路的计算电路系统也能够表示用于针对给定层执行神经网络计算的计算单元。例如,给定一个输入,所述神经网络能够通过使用在所述硬件电路的计算单元中的多个加法器中的一个或多个加法器来执行点积运算而针对所述输入来计算推理。


技术实现要素:

[0004]
本文描述一种用于将多个输入相加的专用硬件电路。该硬件电路包括第一加法器部分,该第一加法器部分接收第一输入和第二输入并且响应于将所述输入相加而生成第一和。该电路也包括第二加法器部分,该第二加法器部分能够接收第一输入和第二输入并且使用所述输入来生成第二和。该硬件电路的输入处理器接收第一输入和第二输入,确定在第一输入与第二输入之间的关系是否满足条件集,并且基于所确定的在第一输入与第二输入之间的关系来选择加法器电路的低功率模式或加法器电路的高功率模式。
[0005]
所述电路被配置成利用所述输入的某些符号和指数属性,使得与高功率模式比,低功率模式被更频繁地选择用于将所述输入相加并处于高得多的比率。高功率模式仅偶尔在满足特定条件集时才被选择。因此,当在第一输入与第二输入之间的关系满足条件集时将第一输入和第二输入路由到第二加法器部分,否则所述输入处理器选择加法器电路的低功率模式。
[0006]
本说明书中描述的主题的一个方面能够实施为一种用于将多个输入相加的加法器电路。所述加法器电路包括:输入处理器,该输入处理器被配置成:接收第一输入和第二输入;确定在第一输入与第二输入之间的关系是否满足条件集;当在第一输入与第二输入之间的关系满足所述条件集时,选择所述加法器电路的高功率模式并且将第一输入和第二输入路由到第一高功率加法器部分;以及当在第一输入与第二输入之间的关系不满足所述条件集时,选择所述加法器电路的低功率模式并且将第一输入和第二输入路由到第二低功率加法器部分。
[0007]
这些和其它实施方式能够各自任选地包括以下特征中的一个或多个。例如,在一些实施方式中,第一高功率加法器部分被配置成接收第一输入和第二输入并且生成第一输
入和第二输入的第一和;以及第二低功率加法器部分被配置成接收第一输入和第二输入并且生成第一输入和第二输入的第二和。
[0008]
在一些实施方式中,所述加法器电路还包括:选择复用器,该选择复用器被配置成:当输入处理器选择加法器电路的低功率模式时,将所述第一和作为加法器电路的输出来传递;而当输入处理器选择加法器电路的高功率模式时,将所述第二和作为加法器电路的输出来传递。
[0009]
在一些实施方式中,当低功率模式被选择时,加法器电路仅使用第二低功率加法器部分来将第一输入和第二输入相加;以及当高功率模式被选择时,加法器电路在将第一输入和第二输入相加时切换所述第一高功率加法器部分和第二低功率加法器部分两者。
[0010]
在一些实施方式中,当低功率模式被选择并且加法器电路仅使用第二低功率加法器部分来将第一输入和第二输入相加时,所述加法器电路消耗比当高功率模式被选择时低的功率,因为与切换第一高功率加法器部分和第二低功率加法器部分两者以将第一输入和第二输入相加相比,仅使用第二低功率加法器部分来将第一输入和第二输入相加需要更少的电路切换。
[0011]
在一些实施方式中,输入处理器还被配置成:基于所确定的在第一输入与第二输入之间的关系来生成第一参数信号,该第一参数信号指示加法器电路的所选模式。
[0012]
在一些实施方式中,加法器电路还包括:模式检测器,该模式检测器被配置成:检测加法器电路的特定模式;并且基于检测到的加法器电路的模式来生成控制信号以控制第二低功率加法器部分。
[0013]
在一些实施方式中,加法器电路还包括在输入处理器处包括的输入路由引擎,该输入路由引擎被配置成:在输入处理器确定在第一输入与第二输入之间的关系是否满足所述条件集之前,确定所述第一输入在幅值上比第二输入大;并且响应于确定第一输入在幅值上比第二输入大,将第一输入从被路由到所述加法器电路的用于接收两个输入中的较小者的第二输入端口转换为被路由到所述加法器电路的用于接收两个输入中的较大者的第一输入端口。
[0014]
在一些实施方式中,所述条件集响应于输入处理器确定以下各项而被满足:第一输入的符号与第二输入的符号不相同;以及在第一输入的指数值与第二输入的指数值之间的计算差小于或等于1。
[0015]
在一些实施方式中,输入处理器还被配置成:确定第一输入的符号是否与第二输入的符号不同;并且响应于确定第一输入的符号与第二输入的符号不同,使用第二低功率加法器部分来对第一输入或第二输入执行补码运算。
[0016]
在一些实施方式中,加法器电路还包括:零输入生成器,该零输入生成器被配置成:响应于确定在第一输入与第二输入之间的关系不满足所述条件集而向所述第一高功率加法器部分提供多个零输入。
[0017]
在一些实施方式中,第二低功率加法器部分:(i)沿着所述加法器电路的第二数据路径定位;(ii)沿着所述加法器电路的第二数据路径耦合到输入处理器;并且(iii)沿着所述加法器电路的第二数据路径耦合到选择复用器。
[0018]
在一些实施方式中,第一高功率加法器部分:(i)沿着所述加法器电路的第一数据路径定位;(ii)沿着所述加法器电路的第一数据路径耦合到输入处理器;并且(iii)沿着所
述加法器电路的第一数据路径耦合到选择复用器。
[0019]
本说明书中描述的主题的一个方面能够实施为一种用于使用加法器电路来将输入相加的方法。所述方法包括:由加法器电路的输入处理器接收第一输入和第二输入;由输入处理器确定在第一输入与第二输入之间的关系不满足条件集;使用输入处理器并基于所确定的在第一输入与第二输入之间的关系来选择用于将所述输入相加的加法器电路的低功率模式;由输入处理器并基于加法器电路的所选模式来将第一输入和第二输入提供给加法器电路的与低功率模式相对应的第一低功率加法器部分;以及由第一低功率加法器部分使用在第一输入与第二输入之间的关系不满足所述条件集时所选择的加法器电路的低功率模式来生成第一输入和第二输入的第一和。
[0020]
这些和其它实施方式能够各自任选地包括以下特征中的一个或多个。例如,在一些实施方式中,该方法还包括:当输入处理器选择加法器电路的低功率模式时,由加法器电路的选择复用器将所述第一和作为加法器电路的输出来传递;而当输入处理器选择加法器电路的高功率模式时,由选择复用器将第二和作为加法器电路的输出来传递。
[0021]
在一些实施方式中,当低功率模式被选择时,加法器电路仅使用第一低功率加法器部分来将第一输入和第二输入相加;以及当加法器电路的高功率模式被选择时,加法器电路在将第一输入和第二输入相加时切换第一低功率加法器部分和第二高功率加法器部分两者。
[0022]
在一些实施方式中,选择低功率模式并且仅使用第一低功率加法器部分来将第一输入和第二输入相加,与当高功率模式被选择并且加法器电路在将第一输入和第二输入相加时切换第一低功率加法器部分和第二高功率加法器部分两者时相比,使加法器电路消耗更少的功率。
[0023]
在一些实施方式中,该方法还包括:由输入处理器基于所确定的在第一输入与第二输入之间的关系来生成第一参数信号,该第一参数信号指示加法器电路的所选模式。
[0024]
在一些实施方式中,该方法还包括:由加法器电路的模式检测器检测加法器电路的特定模式;以及由模式检测器基于检测到的加法器电路的模式来生成控制信号以控制第一低功率加法器部分。
[0025]
在一些实施方式中,该方法还包括:在输入处理器确定在第一输入与第二输入之间的关系是否满足所述条件集之前,使用在输入处理器处包括的输入路由引擎来确定第一输入在幅值上比第二输入大;以及响应于确定第一输入在幅值上比第二输入大,使用输入路由引擎来将第一输入从被路由到加法器电路的用于接收两个输入中的较小者的第二输入端口转换为被路由到加法器电路的用于接收两个输入中的较大者的第一输入端口。
[0026]
在一些实施方式中,所述条件集响应于输入处理器确定以下各项而被满足:第一输入的符号与第二输入的符号相同;以及在第一输入的指数值与第二输入的指数值之间的计算差不小于或等于1。
[0027]
在一些实施方式中,该方法还包括:使用输入处理器来确定第一输入的符号是否与第二输入的符号不同;以及响应于确定第一输入的符号与第二输入的符号不同,使用第一低功率加法器部分来对第一输入或第二输入执行补码运算。
[0028]
在一些实施方式中,该方法还包括:由第二高功率加法器部分使用在输入处理器确定第一输入与第二输入之间的关系满足条件集时所选择的加法器电路的高功率模式来
生成第一输入和第二输入的第二和。
[0029]
这个和其它方面的其它实施方式包括被配置成执行所述方法的动作的对应系统、装置和计算机程序,所述计算机程序被编码在计算机存储装置(例如,非暂时性机器可读存储介质)上。能够借助于安装在计算系统上的软件、固件、硬件或它们的组合如此配置一个或多个计算机或硬件电路的计算系统,使得该软件、固件、硬件或它们的组合在操作中使所述系统执行所述动作。能够借助于具有当由数据处理装置执行时使该装置执行所述动作的指令如此配置一个或多个计算机程序。
[0030]
能够在特定实施例中实现本说明书中描述的主题以实现以下优点中的一个或多个。所描述的技术能够用于实现用于将多个输入相加同时与用于将输入相加的常规电路比需要更少的功率的专用硬件电路。本文中描述的硬件电路的组件能够形成基于双路径硬件配置将多个输入(例如,浮点输入)高效地相加的低功率加法器电路。
[0031]
当低功率模式被选择时,所述电路的第一数据路径用于将所述输入相加,以及当高功率模式被选择时,所述电路的第二数据路径用于将所述输入相加。硬件加法器电路被配置为使得低功率模式被选择成与高功率模式相比以明显更高的比率即更加频繁地将所述输入相加。相对于用于将输入相加的常规电路,所述加法器电路的这个特征导致在所述电路处的功耗降低,即,因为大多数加法是在与常规加法器电路相比消耗少得多的功率的低功率模式下完成的。
[0032]
能够将所述专用硬件电路配置为低功率浮点加法器电路。能够基于至少拆分数据路径配置来优化这种低功率加法器电路以用于按降低的功率要求将两个浮点输入相加,所述拆分数据路径利用低功率模式的第一数据路径来生成将两个浮点输入相加的和。在一些实施方式中,所述浮点输入各自是32位浮点输入(标准精度)或使用降低精度浮点格式的16位浮点输入。
[0033]
在下面的附图和描述中阐述本说明书中描述的主题的一个或多个实施方式的细节。根据说明书、附图和权利要求书,主题的其它潜在特征、方面和优点将变得显而易见。
附图说明
[0034]
图1示出用于执行计算的示例硬件电路的图。
[0035]
图2示出具有被布置成形成示例低功率加法器电路的硬件电路组件的图。
[0036]
图3示出用于使用图2的示例低功率加法器电路来执行加法运算的示例过程的流程图。
[0037]
图4示出用于将两个浮点输入相加的示例过程的流程图。
[0038]
在各个附图中,相似的附图标记和名称指示相似的元件。
具体实施方式
[0039]
在一个示例实施方式中,能够使用硬件电路来实现多层神经网络并且通过由所述神经网络的每个层处理输入来执行计算(例如,神经网络计算)。特别地,所述神经网络的各个层能够各自具有相应的参数集。每个层接收输入并依照用于该层的参数集来处理该输入,以基于使用示例计算单元的一个或多个加法器电路执行的计算来生成输出。例如,所述神经网络层能够对多个输入求和作为计算输入数组与参数数组的矩阵乘法的一部分或者
作为计算在输入数组与参数核数组之间的卷积的一部分。
[0040]
通常,通过执行数学运算例如乘法和加法来完成通过神经网络的层处理输入。硬件电路能够包括用于执行数学计算的多个加法器电路。能够对加法器电路进行分组以形成硬件电路的例如用于矩阵或向量处理单元的计算单元。当硬件电路作为执行与通过神经网络的层处理输入相关联的神经网络计算(例如矩阵-向量乘法)的一部分时,所述计算单元用于将诸如整数和浮点数的数值输入相加。
[0041]
本文描述了用于实现专用硬件加法器电路的技术,该专用硬件加法器电路被配置成在相对于常规加法器电路消耗更少的功率的同时将输入相加。加法器电路被配置为两模式双路径加法器电路并且包括输入处理器,该输入处理器响应于确定在第一输入与第二输入之间的关系是否满足条件集而选择所述电路的特定模式。所述条件集响应于输入处理器确定以下各项而被满足:i)第一输入的符号与第二输入的符号不同;以及ii)在第一输入的指数值与第二输入的指数值之间的计算差小于或等于一。
[0042]
图1示出用于执行计算的示例硬件电路100的图。硬件电路100能够表示用于将两个输入即第一输入102a和第二输入102b相加的电路。在一些实施方式中,所述输入各自是在软件中表示为32位数据结构的浮点数。标度引擎106对应于使用增量逻辑来确定在第一输入102a的标度与第二输入102b的标度之间的差的组件。在一些实施方式中,每个输入的相应标度由每个输入的指数值来表示。例如,第一输入102a能够具有3.35(2
×
10
7
)的值,其中指数值7对应于所述输入102a的标度。同样地,第二输入102b能够具有1.65(2
×
10
3
)的值,其中指数值3对应于所述输入102b的标度。标度引擎106被配置成接收第一输入102a的第一指数104a和第二输入102b的第二指数104b,并且确定在相应的指数值104a和104b之间的增量或差。
[0043]
有效数交换108对应于输入交换逻辑,该输入交换逻辑用于将相应的输入交换或路由到在电路100处所包括的示例硬件加法器112的特定输入端口a或b。有效数交换108基于如由输入的数据值所指示的所述输入的大小(如由幅值或标度所指示的)来将输入路由到所述电路100的特定输入端口。例如,有效数交换108能够分析每个输入102a、102b的32位数据结构以确定哪一个输入是较大的输入。在一些实施方式中,有效数交换108基于每个输入的相应的指数值来确定一个输入的数值数据值大于另一个输入的数值数据值。
[0044]
由标度引擎106生成的控制信号109能够由有效数交换108使用来确定输入102a的相应的指数值104a大于输入102b的相应的指数值104b。基于此确定,有效数交换108使输入102a(例如,较大的输入)被路由到输入端口a,并且使输入102b(例如,较小的输入)被路由到输入端口b。通常,输入102a表示具有较大的数据值的输入,而输入102b表示具有较小的数据值的输入。将所述输入路由到硬件加法器112的特定输入端口(a或b)能够包括将输入从输入端口a交换到输入端口b,并且反之亦然。
[0045]
在一些情况下,将输入102a、102b路由到加法器112的相应的输入端口a、b能够包括使用移位逻辑110来对被确定为较小的输入的输入执行移位操作,例如,所述较小的输入是基于输入102b的相应的指数值104b确定的。例如,能够响应于移位逻辑110接收到由标度引擎106提供的控制信号109而触发所述移位操作。控制信号109能够用于对输入102b触发移位操作以在电路100使用加法器112来将输入102a、102b相加之前执行右移(例如,宽右移)。在一些实施方式中,因为输入102b具有小于输入102a的指数值104a(例如,7)的指数值
104b(例如,3),所以可以执行宽右移以在电路100使用加法器112来将输入102a、102b相加之前使每个输入的相应的小数点对齐。
[0046]
硬件加法器112包括多个逻辑块,每个逻辑块表示加法器112的相应的逻辑功能。通常,相应的逻辑功能中的一个或多个可以用于将输入102a、102b相加。例如,补码逻辑114用于使用表示输入102b的数据值的数据结构(例如,32位数据结构)的二进制数据来生成输入102b的二进制补码版本。补码逻辑114用于响应于确定输入102b的符号与输入102a的符号不同而生成输入102b的二进制补码版本。
[0047]
例如,输入102a、102b中的每一个均可以是相应的浮点数,并且每个输入的符号位指示所述输入的符号(例如,正或负)并且将所述浮点数的值标识为大于零或小于零。通常,诸如浮点数的每个数值输入在数据结构中具有至少一个符号位,该至少一个符号位指示该数是大于零(例如,为正数)还是小于零(例如,为负数)。在一些情况下,数据结构使用一个或多个零位(“0”)来指示为零的数值输入。
[0048]
在一些实施方式中,当具有较大的数据值的正输入102a与具有较小的数据值的负输入102b相加时发生减法运算。以这种方式,负输入102b的二进制补码版本用于执行所述加法运算,这涉及将输入102a与输入102b的二进制补码形式相加以生成初步和或初步结果。加法器112通过使用加法器逻辑116来将输入102a、102b相加并生成作为加法器逻辑116的输出的初步和来执行加法运算。在一些情况下,将输入相加能够包括使用舍入逻辑118来对所述初步和执行舍入运算。例如,舍入逻辑118能够用于将所述初步和舍入到最接近的十进制或整数值。
[0049]
归一化逻辑120能够用于对所述初步结果执行一个或多个归一化运算。在一些实施方式中,归一化逻辑120能够用于在生成中间和124之前调整所述初步和的数据格式。例如,当对输入102b执行宽右移以使该输入的小数点与输入102a的小数点对齐时,能够对所述初步和应用后续左移(例如,宽左移)运算。归一化逻辑120的这种移位运算使得至少基于相应的输入102a、102b的标度来将最终结果或和130的小数点调整到适当的位置。在一些情况下,归一化逻辑120使用前导零检测器121来基于检测到的与每个输入102a、102b的数据值相关联的前导零数来确定左移的量。例如,前导零检测器121能够从相应的输入102a、102b的最左边位置起对零位数进行计数,直到达到第一非零位为止,并且至少基于所述零位数确定左移122的量。
[0050]
特殊逻辑126能够用于传播由可能在加法运算期间出现的某些特殊运算128所产生的特定数据值。例如,特殊运算128能够涉及标识为无穷大操作数或nan(非数)操作数的操作数。这些运算128能够对应于某些上溢或下溢条件。在其它实施方式中,加法运算能够生成初步和,该初步和是如由该初步和的符号位所指示的负数。在这种情况下,可以基于所述初步和的符号位对所述初步和执行附加二进制补码运算。电路100基于逻辑126来生成最终结果或和130,所述逻辑126用于处理中间和124以说明可能在加法运算期间出现的一个或多个特殊运算128。
[0051]
图2示出示例专用硬件电路200的图。电路200的组件能够被布置为形成示例低功率加法器电路,该示例低功率加法器电路被配置成在相对于常规加法器电路消耗更少的功率的同时将输入相加。在一些实施方式中,硬件电路200被配置为低功率浮点加法器电路。能够基于两模式双路径电路配置来优化所述低功率加法器电路200,以用于按降低的功率
要求将两个浮点输入相加。
[0052]
电路200包括输入处理器202,该输入处理器生成参数信号204以指示电路200的所选模式。输入处理器202被配置成响应于确定在第一输入与第二输入之间的关系是否满足条件集而选择加法器电路200的模式。所述条件集(如下所述)响应于输入处理器确定以下各项而被满足:i)第一输入的符号与第二输入的符号不同;以及ii)在第一输入102a的指数值104a与第二输入102a的指数值104b之间的计算差小于或等于一。
[0053]
参数信号204是基于所确定的在第一输入与第二输入之间的关系而生成的。参数信号204被提供给模式检测器206,该模式检测器使用参数信号204来基于电路200的所选模式生成一个或多个控制。模式检测器206使用参数信号204来生成复用器控制信号215以及加法器控制信号217a和217b。在一些实施方式中,模式检测器206被配置成基于由参数信号204指示的值来检测加法器电路的特定模式。在下面更详细地描述所述控制信号215、217a、217b。
[0054]
加法器电路200被配置为具有低功率模式和高功率模式的两模式双路径加法器电路。当低功率模式被选择时,电路200使用沿着数据路径211的加法器逻辑210来生成第一和220。当高功率模式被选择时,电路200使用沿着数据路径213的加法器逻辑212来生成第二和222。通常,数据路径211能够对应于电路200的包括加法器逻辑210的低功率加法器部分。类似地,数据路径213能够对应于电路200的包括加法器逻辑212的高功率加法器部分。
[0055]
特别地,当高功率模式被选择时,电路200使用沿着数据路径213的加法器逻辑212的组件来将输入相加,但是仍然还切换沿着数据路径211的加法器逻辑210的组件。例如,当满足条件集以使得选择高功率模式并且沿着数据路径213路由输入以相加时,电路200在同时使用加法器逻辑212来将输入相加的同时仍然切换加法器逻辑210的组件。如本文中所使用的,切换、电路切换或电路组件的切换能够对应于激活或转换所述电路的组件(例如,晶体管)以在该电路处路由输入或控制信号。通常,激活、切换或转换所述电路组件使得在所述电路处消耗一定量的功率。
[0056]
能够通过拆分常规加法器电路以形成两个不同的加法器部分,即与低功率模式相对应的第一加法器部分和与高功率模式相对应的第二加法器部分,来形成电路200。第一加法器部分被描述为低功率加法器部分,因为,当低功率模式被选择时,电路200被配置成在大于90%(例如,99%)的时间仅使用此低功率部分来将输入102a和102b相加。具体地,当使用此低功率加法器部分时,第二加法器部分实质上经历很少或没有电路切换,因为当使用低功率部分来将输入相加时仅零沿着该部分被路由。因此,数据路径211的这个第一加法器部分表示电路200的低功率加法器部分。
[0057]
然而,第二加法器部分被描述为高功率部分,因为,当高功率模式被选择时,电路200被配置成使用第二加法器部分来将输入相加,但是也仍然切换第一加法器部分的组件。因此,对高功率模式的选择使加法器逻辑212和210两者经历电路切换,从而增加在电路200处的功耗。因此,因为两个加法器部分(例如,整个电路200)被切换,所以数据路径213用于将输入相加,在电路200处消耗的总功率与当仅使用数据路径211来将输入相加时比更高。然而,电路200被配置为使得所述高功率加法器部分很少用于将输入相加。
[0058]
模式检测器能够使用参数信号204来生成加法器控制信号217a或217b。例如当低功率模式被选择时,加法器控制信号217a用于基于检测到的加法器电路的模式来控制所述
电路200的低功率加法器部分的硬件或逻辑组件。类似地,例如当高功率模式被选择时,加法器控制信号217b用于基于检测到的加法器电路的模式来控制所述电路200的高功率加法器部分的硬件或逻辑组件。
[0059]
硬件加法器电路200能够包括选择复用器224,该选择复用器被配置成:i)当输入处理器202选择加法器电路200的低功率模式时将第一和220作为加法器电路200的输出226来传递;以及ii)当输入处理器202选择加法器电路200的高功率模式时将第二和222作为加法器电路200的输出226来传递。如以上所指出的,模式检测器206使用参数信号204来生成复用器控制信号215。复用器控制信号215用于控制选择复用器224,使得基于由输入处理器202选择的特定模式将特定和220或222作为加法器电路200的输出226来传递。
[0060]
选择复用器224可以是2:1复用器,该复用器接收两个输入,例如第一和220和第二和222,并且基于复用器控制信号215的参数值将特定和作为加法器电路200的输出226来传递。电路200基于用于处理所述输出226以说明可能在加法运算期间出现的一个或多个特殊运算128的示例特殊逻辑126来生成最终结果或总和230。
[0061]
再次参考所述条件集,给定两个输入数102a和102b,电路200将需要仅在以下条件下执行宽左移122运算:i)102a和102b的符号不相同;并且ii)在输入102a和102b的指数之间的差小于或等于1。当满足这些条件时,它们将在电路200处需要宽左移122运算。这是因为基于所述符号位在两个输入之间不同而将要求所述电路执行二进制补码运算以将输入102a、102b相加。在这种情况下,不要求电路200将给定输入102右移多于一,例如多于十进制值1。
[0062]
通常,基于在电路200处处理的输入的属性,在电路200处将不会发生宽右移运算110,作为与宽左移运算122的并发运算。基于此,电路200能够被配置成拆分所述加法器逻辑116,使得在沿着数据路径211的分开的加法器逻辑210处发生宽右移运算110并且在沿着数据路径213的另一分开的加法器逻辑212处发生宽左移运算122。除了加法器216被配置成执行与将一个输入102a/b与另一输入102a/b的二进制补码版本相加相关联的某些小移位运算以外,加法器逻辑212能够被配置成使用与加法器116大致类似的加法器216。如本文中所使用的,输入102的符号和所述输入的对应指数值104能够各自对应于所述输入102的相应的属性。
[0063]
在一些实施方式中,在两个输入/操作数102之间的指数值104的符号和/或指数值104的差能够用于确定两个操作数102a、102b中的哪一个是较大或更大的操作数。如以上所讨论的,电路200被配置成交换或路由所述输入102a、102b,使得总是从较大的操作数102a减去较小的操作数102b,其中所述操作数的数据大小由所述操作数的相应的指数来表示。例如,输入处理器202能够被配置成包括用于有效数交换108的计算逻辑,诸如输入路由或交换引擎。输入处理器202能够使用有效数交换108来:i)使相对于输入102b在标度或幅值上较大的输入102a被路由到输入端口a;并且ii)使相对于输入102a在标度或幅值上较小的输入102b被路由到输入端口b。
[0064]
例如,电路200的输入路由引擎能够被配置成确定第一输入102a大于第二输入102b。响应于确定输入102a大于第二输入102b,输入路由引擎能够被配置成将第一输入从被路由到加法器电路的被配置成接收两个输入中的较小者的第二输入端口(例如,输入端口b)交换或转换到所述加法器电路的被配置成接收两个输入中的较大者的第一输入端口
(例如,输入端口a)。
[0065]
在一些实施方式中,输入路由引擎在加法器电路200确定在第一输入与第二输入之间的关系是否满足条件集之前确定第一输入大于第二输入。在其它实施方式中,确定第一输入大于第二输入与确定在第一输入与第二输入之间的关系是否满足条件集同时执行或作为其一部分被执行。以这种方式,加法器电路200能够被配置成有效地利用在所述输入102a/b之间的关系以基于相应的输入的标度和符号来选择所述电路200的低功率模式。
[0066]
例如,当电路200被配置为使得示例有效数加法器的输入端口a具有较大的操作数时,所述电路保证所述加法器输出(例如将所述输入相加的和或结果)的符号总是为正的。以这种方式,能够避免二进制补码运算。因此,能够通过消除对于通常在使用二进制补码逻辑来执行例如涉及正数和负数的减法运算时所发生的电路切换的需要来实现功率节省。因此,双路径电路200的不要求二进制补码逻辑的至少一个数据路径211能够被配置成仅包括用于将具有相同符号的两个数相加所需的加法器逻辑210,或者能够被配置成在两个数不具有相同符号时执行一补码运算(在下面参考图4描述)。此数据路径211能够对应于电路200的低功率模式,因为使用沿着此数据路径211的加法器逻辑210要求较少的切换,从而导致在硬件电路200处的功率节省。
[0067]
如在下面更详细地描述的,输入处理器202选择电路200的低功率模式以将输入(例如两个浮点输入)相加,并且生成第一和220。在一些实施方式中,在电路200处接收的输入102a、102b的某些属性使输入处理器202以比电路200选择高功率模式更高的比率(例如,明显更高的比率)选择低功率模式。
[0068]
在一些情况下,因为输入处理器202以较高的比率选择低功率模式,所以电路200能够包括零输入生成器208,该零输入生成器被配置成,响应于输入处理器202已确定在第一输入102a与第二输入102b之间的关系不满足以上讨论的条件集,而向电路200的高功率加法器部分的硬件或逻辑组件提供或馈送多个零输入。例如,零输入生成器208被配置成当低功率模式被选择时向电路200的高功率加法器部分馈送多个零输入。
[0069]
通常,将多个零输入馈送到电路200的高功率加法器部分导致在该电路的此部分处的可忽略量的切换,这转化为功率节省。另外,所述电路的低功率模式的较高选择比率和所述零输入的组合有助于能够通过使用专用加法器电路200来实现的总功率节省。以这种方式,能够将电路200配置为专用低功率硬件加法器电路,其相对于常规电路要求少得多的功率以将浮点输入相加。
[0070]
例如,假定数值输入102a、102b的分布均匀,需要执行与二进制补码逻辑114相关联的左移运算122的概率对应于以下各项的概率:a)输入102a的指数104a与输入102b的指数104b相同“或”在输入102a的指数104a与输入102b的指数104b之间的差确切地等于1;以及b)输入102a的符号位与输入102b的符号位不同。在这里,所述“或”对应于由输入处理器202使用的逻辑运算,用于确定输入102a、102b的属性是否满足表示需要执行左移运算的概率的条件集。
[0071]
如图2处所示,专用加法器电路200能够在电路200的相应部分处包括两个分开的整数加法器116、216,而不是图1的电路100处所示的一个加法器。因此,电路200使用拆分数据路径211、213,使得一旦决定了要选择使用哪一个数据路径,就在关键路径中仅存在单个宽移位器110或122和加法器116或216。另外,沿着特定数据路径211、213存在单个舍入运算
118或前导零检测120,而不是如电路100处所示的两者。
[0072]
与使用低功率数据路径211的比率相比,很偶尔地使用数据路径213。在一些实施方式中,数据路径213在对于给定计算序列可能发生的超过99%的处理器周期内可以不具有切换。另外,在此序列期间,所述零生成器208在这些处理器周期期间在此高功率加法器部分处强制归零,所述这些处理器周期对应于在处理器周期期间发生的无(或最小)切换。由于这些原因,当与典型的加法器架构相比时,加法器电路200可能消耗显著更少的功率。例如,对于涉及32位浮点数的可比较加法运算,所述低功率加法器电路200相对于常规电路能够实现多达50%的功耗降低。
[0073]
图3示出用于将至少两个输入相加的示例过程300的流程图。所述输入可以是数值输入,诸如被表示为多个位例如16位或32位的数据结构的浮点数。能够与本文中描述的其它电路、组件和系统相结合地使用至少电路200来执行过程300。
[0074]
现在参考过程300,电路200接收第一输入和第二输入,其中基于第一输入在幅值上比第二输入大而在电路200处路由第一输入和第二输入(302)。例如,低功率加法器电路200的输入处理器202接收用于在电路200处路由和相加的输入102a、102b以生成结果230,例如,将这些输入相加的和。输入处理器202能够使用有效数交换108来路由和/或交换第一输入和第二输入,使得在标度或幅值上较大的输入被路由到电路200中的加法器的特定输入端口。在一些实施方式中,专用电路200从外部源接收多个输入。所述输入可以各自是数值输入(例如,浮点数或包括符号位的另一数据类型),其中每个输入由多个位的数据结构来表示。例如,加法器电路200通常能够在示例计算单元中从乘法器或从寄存器堆来馈送。
[0075]
输入处理器202确定在第一输入与第二输入之间的关系是否满足条件集(304)。例如,响应于输入处理器202确定以下各项而满足所述条件集:i)输入102a的符号与输入102b的符号不同;以及ii)在输入102a的指数值104a与输入102b的指数值104b之间的计算差小于或等于1。
[0076]
基于所确定的在第一输入与第二输入之间的关系,输入处理器202选择所述加法器电路200的用于将第一输入和第二输入相加的低功率模式或所述加法器电路200的用于将输入相加的高功率模式(306)。在一些实施方式中,输入处理器202响应于确定不满足所述条件集而选择低功率模式。例如,输入处理器202能够响应于确定输入102a的符号与输入102b的符号相同而选择低功率模式。
[0077]
基于所确定的在第一输入与第二输入之间的关系,输入处理器202将第一输入和第二输入提供给所述加法器电路200的与低功率模式相对应的第一加法器部分或所述加法器电路200的与高功率模式相对应的第二加法器部分中的至少一个(308)。例如,输入处理器202在低功率模式被选择时将输入102a、102b提供给至少沿着数据路径211的低功率加法器部分,或者在高功率模式被选择时将输入102a、102b提供给高功率加法器部分。
[0078]
在第一实施方式,如上所述,当低功率模式被选择时,加法器电路200仅使用低功率加法器部分的加法器逻辑210来将输入102a、102b相加。在此第一实施方式中,选择复用器224用于将第一和220作为加法器电路200的输出226来传递。在第二实施方式中,当高功率模式被选择时,加法器电路200使用第二加法器部分的加法器逻辑212来将第一输入和第二输入相加,但是仍然在第一加法器部分处切换加法器逻辑210的组件。因为电路200切换两个加法器部分的组件,所以此第二实施方式定义加法器电路200的高功率模式。在此第二
实施方式中,选择复用器224用于将第二和222作为加法器电路200的输出226来传递。
[0079]
第一加法器部分接收由输入处理器202提供的第一输入和第二输入以使用所述加法器电路的低功率模式来生成第一和(310)。例如,低功率加法器部分接收输入102a、102b,使用加法器逻辑210的加法器116来将输入102a、102b相加,并且生成第一和220。基于复用器控制信号215指示所述输入处理器202选择了低功率模式,所述和220由选择复用器224作为输出226来传递。
[0080]
类似地,当输入处理器202确定在第一输入与第二输入之间的关系满足所述条件集时,第二加法器部分接收由输入处理器202提供的第一输入和第二输入以生成第二和222(312)。例如,在诸如输入102a、102b的相应的符号和指数值的属性满足所述条件集时,高功率加法器部分接收输入102a、102b,使用加法器逻辑212的加法器216来将输入102a、102b相加,并且生成第二和222。基于复用器控制信号215指示所述输入处理器202选择了高功率模式,所述和222由选择复用器224作为输出226来传递。
[0081]
在一些实施方式中,低功率加法器部分:(i)沿着加法器电路200的第一数据路径211定位;(ii)沿着加法器电路200的第一数据路径211可通信地耦合到输入处理器202;并且(iii)沿着加法器电路200的第一数据路径211可通信地耦合到选择复用器224。同样地,高功率加法器部分:(i)沿着加法器电路200的第二数据路径213定位;(ii)沿着加法器电路200的第二数据路径213耦合到输入处理器202;并且(iii)沿着加法器电路200的第二数据路径213耦合到选择复用器224。
[0082]
通常,加法器电路200能够被配置成,在输入被寄存以用于在所述电路处进行加法运算之前,定位比较和交换逻辑。加法器电路200能够在示例计算单元中从乘法器或从寄存器来馈送。在一些情况下,电路200被配置为使得在将输入相加(例如,寄存输入)时使用的某个逻辑被推出或移出加法器的关键路径并且进入到馈给加法器电路200的乘法器中。
[0083]
使用两个分开的数据路径,每个数据路径对应于加法器能够在其中操作的相应的低功率模式或高功率模式。对于示例加法运算,可能在计算周期中很早发生关于要使用哪一个数据路径的决定。在一些实施方式中,这个决定能够甚至被移动到例如在所述计算单元的在先乘法器、alu或旁路电路处的前一个管线级,但是将引发对加法器电路的接口的调整或修改。除非基于满足所述条件集例如至少在输入102a和102b在幅值或标度上非常接近的情况下做出了要使用该模式(高功率模式)的决定,否则零输入生成器208用于将零馈送到电路200的低概率模式数据路径213。
[0084]
图4示出用于将两个浮点输入相加的示例过程400的流程图。能够与本文中描述的其它电路、组件和系统相结合地使用至少电路200来执行过程400。
[0085]
在一个示例实施方式中,电路200包括计算z.fraction=x.fraction+y.fraction(分数)的有效数加法器,其中x和y是相应的输入102a和102b并且z是电路200的输出。x.fraction和y.fraction能够各自对应于32位浮点数在适当移位之后相应的数值分数。在一些情况下,加法器逻辑210(例如,加法器电路116)接收作为控制信号的另一输入invert_output(取反输出)。此invert_output控制信号对应于用于对z.fraction取反的运算,这可以是示例有效数加法器如加法器116的结果,然后电路200生成示例最终输出z.result(z.结果),其对应于电路200的实际浮点加法结果。
[0086]
为了描述的容易,并且如图2所示,数据路径211能够通常表示电路200的右手侧
(rhs),而数据路径213能够通常表示电路200的左手侧(lhs)。基于以上描述,并且使用输入处理器202,x(输入102a)的数值总是在rhs上在加法器逻辑210的输入处比y(输入102b)的数值大。因为电路200的lhs与rhs分开,所以能够在rhs处保证x大于y的关系。因为y小于x,所以y将在涉及x和y的分数加法进行之前被右移。如以上所讨论的,在电路200使用有效数加法器来将输入x和y相加之前,执行所述右移或宽右移以使每个输入的相应的小数点对齐。因此,y小于x。
[0087]
此示例实施方式涉及以下2种情况:情况a)输入x和y的相应的符号相同;或情况b)输入x和y的相应的符号不同(例如,取反情况)。如在下面所讨论的,情况b)是其中控制信号invert_output将用于对输出z.fraction取反的取反情况。如图4处所示,在情况a)下,当x和y的相应的符号相同(402)时,在加法器电路200的rhs处的有效数加法器116用于对x.fraction和y.fraction执行正常加法。因为y小于x,所以y将在涉及x和y的分数加法进行之前被右移(404)。因此,不需要取反运算,因为由电路200执行的加法运算涉及仅仅将x和y的分数的幅值相加以生成和或最终浮点输出z.result(406)。加法器电路200的最终浮点输出z.result的符号将与输入x的符号相同(408)。
[0088]
如图4所示,在情况b)下,x和y的相应的符号不同(410)。然而,x总是在rhs上在加法器逻辑210的输入处具有比y的数值大的数值。如上所述,输入处理器202能够响应于确定在x与y之间的关系满足条件集而将输入x和y路由到电路200的lhs。例如,当x和y的相应的符号不同“与”在x的指数与y的指数之间的指数增量为0或1时,所述在x与y之间的关系满足所述条件集。在这里,所述“与”对应于由输入处理器202使用来确定x和y的属性是否满足所述条件集的逻辑运算。
[0089]
因此,对于电路200的rhs,当x和y的相应的符号不同时,x将总是大于y,因为在x和y的相应的指数之间的差将至少为2。如以上针对情况a)所指出的,因为y小于x,所以y将在涉及x和y的分数加法进行之前被右移。当y已经被右移时,添加附加二进制补码逻辑来对y操作数执行该运算,可能影响所述加法运算的某些定时约束。鉴于此,加法器逻辑(或电路)210被配置成对x输入执行补码运算(412)。
[0090]
然而,不是通过使用计算z.fraction=x.fraction-y.fraction来生成输出z.fraction,这将要求输出和z.fraction的另一二进制补码,以获得最终浮点输出z.result,而是将电路200的加法器逻辑210配置成基于计算z.fraction=(-(-x.fraction-1+y.fraction)-1)来生成所述输出。这种计算方法与z.fraction=(x.fraction

+y.fraction)

相同,其对应于z.fraction=(x.fraction的一补码+y.fraction)的一补码(414)。因此,当x和y的相应的符号不同时,电路200被配置成:i)对x.fraction输入取反,ii)保持在移位之后的y.fraction输入,iii)使用经取反的x.fraction输入和y.fraction输入来执行整数加法,并且iv)然后对加法器逻辑210(例如,加法器116)的输出z.fraction取反以生成最终浮点结果z.result。
[0091]
在一些实施方式中,加法器逻辑210的加法器电路116包括用于接收指示何时对输出z.fraction取反的信号的附加输入端口。例如,如果x.fraction被取反,则用于控制加法器逻辑(或电路)210的运算的外部控制器能够检测到对x.fraction输入执行了取反运算并且确定输出z.fraction也将需要被取反。基于此,加法器逻辑210的加法器116的附加输入端口能够接收与控制信号invert_output相对应的另一输入(416)。此控制信号能够由加法
器逻辑/电路210使用来对输出z.fraction取反,并且生成最终浮点输出z.result(418)。最终浮点输出z.result的符号将与用于电路200的rhs的输入x的符号相同。
[0092]
已经描述了许多实施例。然而,应理解,可以在不脱离本发明的范围的情况下做出各种修改。例如,可以使用以上所示的各种形式的流程,同时对步骤进行重新排序、添加或移除。因此,其它实施例在以下权利要求的范围内。虽然本说明书包含许多具体实施方式细节,但是这些不应该被解释为对可能要求保护的范围构成限制,而是相反被解释为可能特定于特定实施例的特征的描述。在本说明书中在分开的实施例的上下文中描述的某些特征也能够相结合地在单个实施例中实施。
[0093]
相反地,在单个实施例的上下文中描述的各种特征也能够分开地或按照任何合适的子组合在多个实施例中实施。此外,尽管各特征可以在上面被描述为按照某些组合起作用并甚至最初如此要求保护,但是来自要求保护的组合的一个或多个特征能够在一些情况下被从所述组合中去除,并且所要求保护的组合可以针对子组合或子组合的变化。
[0094]
类似地,虽然按特定次序在附图中描绘了操作,但是这不应该被理解为要求按所示特定次序或按顺序次序执行此类操作,或者要求执行所有图示的操作以实现所希望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,上述实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中要求这种分离,并且应该理解,所描述的程序组件和系统通常能够被集成在单个软件产品或系统中或者包装到多个软件产品中。
[0095]
已经描述了主题的特定实施例。其它实施例在以下权利要求的范围内。例如,权利要求中叙述的动作能够被以不同的次序执行并仍然实现所希望的结果。作为一个示例,附图中描绘的过程不一定要求所示特定次序或顺序次序以实现所希望的结果。在一些情况下,多任务处理和并行处理可以是有利的。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1