CN111936965A - 随机舍入逻辑 - Google Patents
随机舍入逻辑 Download PDFInfo
- Publication number
- CN111936965A CN111936965A CN201980021078.2A CN201980021078A CN111936965A CN 111936965 A CN111936965 A CN 111936965A CN 201980021078 A CN201980021078 A CN 201980021078A CN 111936965 A CN111936965 A CN 111936965A
- Authority
- CN
- China
- Prior art keywords
- csa
- input
- logic
- carry
- output
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
提供了用于随机舍入的技术和电路。在实施方案中,一种电路包括进位保留加法器(CSA)逻辑,其具有三个或更多个CSA输入、CSA和输出以及CSA进位输出。所述三个或更多个CSA输入中的一个是以随机数值呈现,而其他CSA输入是以待求和的输入值呈现。所述电路还包括具有加法器输入以及和输出的加法器逻辑。所述CSA逻辑的所述CSA进位输出与所述加法器逻辑的所述加法器输入中的一个耦合,并且所述CSA逻辑的所述CSA和输出与所述加法器逻辑的所述加法器输入的另一输入耦合。所述加法器逻辑的所述和输出的特定数目的最高有效位表示所述输入值的随机舍入和。
Description
背景技术
在本节中描述的方法是可采用的方法,但不一定是先前已经构想或采用的方法。因此,除非另外指明,否则不应假设本节中描述的任何方法仅仅因为它们包含在本节中而被认为是现有技术。
随着人工智能的发展,机器学习技术已进入众多种应用。训练机器学习模型通常是资源非常密集的,并且因此通常需要专用计算机系统来执行。然而,随着机器学习应用的扩展,越来越需要在不牺牲准确度的情况下在共享计算资源环境中执行机器学习模型的训练。
为了改善性能,精度降低的数值表示可用于训练机器学习模型。例如,神经网络中的权重可具有精度降低的格式,并且因此需要较少的计算资源用于处理。然而,一些运算仍然可(虽然是暂时地)产生较宽精度的数值表示。
将较宽精度的数值表示降低回为精度降低的数值表示的一种方式是简单地截断较宽精度的数值表示。额外位的截断实现起来很简单(且通常是默认的),但是通过在一个方向上系统地偏置值(诸如权重),可能导致训练误差/较低的准确度。
为了在不牺牲准确度的情况下利用精度降低的数值表示,执行随机舍入而不是简单的截断。较宽精度的数值表示的随机舍入避免了引入偏差,因此改善了所得机器学习模型的准确度。例如,在较宽精度的十进制上的随机舍入以与将从较宽精度十进制中丢弃的最低有效十进制成比例的概率向上或向下舍入该值。因此,37.25的值将以25%的概率向上舍入至38,并且以75%的概率向下舍入至37。
一种用于实现随机舍入的方法是通过执行产生舍入结果的多个指令。软件程序可包含一个或多个用于随机舍入的适当命令,在此类程序的编译期间,该命令将产生待由硬件处理器执行的多个指令。多个指令在被处理时会产生高开销:多个处理器周期、潜在的多个存储器查找和流水线停顿等等。
附图说明
图1是描绘在实施方案中用于利用随机舍入进行求和的示例电路的框图。
图2是描绘在实施方案中进位保留加法器(CSA)逻辑部件的示例电路的框图。
图3是描绘在实施方案中用于累加输入数流并且随机地舍入此类累加的电路的框图。
图4是描绘在实施方案中用于对多个输入数流求和并且随机地舍入此类求和的电路的框图。
图5是描绘在实施方案中基于和的符号随机舍入该和的电路的框图。
图6是描绘在实施方案中用于有符号求和的随机舍入的示例电路的框图。
图7是描绘在实施方案中用于随机地舍入两个或更多个数的和的过程的流程图。
图8是描绘在实施方案中用于随机地舍入两个或更多个数的有符号和的过程的流程图。
具体实施方式
在以下描述中,为了解释的目的,陈述了许多具体细节,以便提供对本发明的透彻理解。然而,将明显的是,可在没有这些特定细节的情况下实践本发明。在其他情况下,以框图形式示出了熟知的结构和装置,以避免不必要地混淆本发明。
总体概述
为了实现更大的代码密度、更高的性能、更高的处理器利用和更低的功率,本文描述了各种电路和技术以执行随机舍入。在实施方案中,生成随机数,并且将其与两个或更多个数的求和相加,以生成两个或更多个数的随机舍入和。
例如,假定两个或更多个数的样本和是37.25。当随机地舍入此类和时,结果是,有75%的概率为37,并且有25%的概率为38。当在0至1(不包括1)的范围内生成随机数时,该随机数有75%的概率在0至0.75(不包括0.75)的范围内,且有25%的概率在0.75至1(不包括1)的范围内。因此,将此类随机数与37.25的和相加,有75%的时间得到以37开始的结果(结果在37.25至38.0(不包括38.0)的范围内),且有25%的时间得到以38开始的结果(结果在38.0至38.25(不包括38.25)的范围内)。
因此,在实施方案中,为了计算随机舍入的较宽精度和的较低精度和,除了对可产生较宽精度和的加数求和之外,还生成并加上随机数。同时加上随机数与其他加数。随机生成数具有与期望的较低精度宽度和较高精度宽度之间的差相同的宽度。通过取最有效数字的较低精度宽度并丢弃结果的其余部分来生成随机舍入和。例如,如果较宽的宽度和是32位,而随机舍入的较低宽度和是8位,则生成32-8=24位的随机数作为该求和的附加加数。在求和之后,32位和的8个最高有效位被读取为随机舍入的8位宽度的和。
在实施方案中,进位保留加法器(CSA)逻辑用于将随机数值与所呈现的输入值相加以生成输入值的随机舍入和。术语“进位保留加法器(CSA)逻辑”是指具有三个或更多个输入并且产生进位输出以及无进位部分和输出的电路。无进位部分和输出是所有输入的和,而不考虑在加上对应数字时生成的进位值。将对应数字的未计数进位值合计作为CSA逻辑的进位输出。进位保留加法器是CSA逻辑的示例。尽管出于解释的目的,本文所述的电路和技术可指代二进制进位保留加法器,但可有效地替换任何其他CSA逻辑。因此,此类电路和技术不应被解释为限于进位保留加法器,而是可由任何CSA逻辑实现。
CSA逻辑耦合至加法器逻辑,以生成输入值的全和。术语“加法器逻辑”是指具有两个或更多个输入并且产生在两个或更多个输入处呈现的值(包括任何生成的进位)的全和的电路。尽管出于解释的目的,本文所述的电路和技术可指代进位完成加法器,但作为加法器逻辑,此类电路和技术不应被解释为限于全加器,而是限于任何加法器逻辑。全加器的非限制性示例是链式进位加法器(ripple-carry adder)和先行进位加法器。
将进位输出以及部分和输出呈现为用于加法器逻辑的输入。加法器逻辑的多个最高有效位表示CSA逻辑的两个或更多个输入的随机舍入和。
图1是描绘在实施方案中用于利用随机舍入进行求和的示例电路的框图。示例电路包括累加器寄存器105、CSA 110和全加器120。CSA 110具有三个输入(X31-X0、Y15-Y0和Z15-Z0)。
在这些输入的每一个处呈现的二进制数由CSA 110和全加器120求和。分别地,CSA110的进位输出C31-0与全加器120的输入U31-U0耦合,并且CSA 110的部分和输出S31-S0与全加器120的输入V31-V0耦合。
CSA 110被配置为对输入(X31-X0、Y15-Y0和Z15-Z0)的对应位执行部分求和(无进位求和)。在输出S31-S0处提供部分和。在输出C31-C0处提供每个对应输入位相加的进位合计。全加器120执行在输入U31-U0和V31-V0处呈现的二进制值的完全进位加法。在输出31-0处提供由加法器120生成的全和。
在该示例中,CSA输入X31-X0耦合至累加器寄存器105。因此,存储在累加器寄存器105中的数在输入X31-X0处作为至CSA 110的输入呈现。将累加数与在CSA 110输入Y15-Y0处呈现的16位输入数相加。至CSA 110的另一输入是在CSA 110输入Z15-Z0处呈现的16位随机数。
由于此示例中的随机数输入是16位输入,因此丢弃全加器120的低16位,即输出15-0。剩余位的输出,即输出31-16,是输入数和存储在寄存器105中的数的随机舍入和。
随机数寄存器
在实施方案中,由线性反馈移位寄存器生成随机数。在此类实施方案中,线性反馈移位寄存器耦合至CSA逻辑的随机数输入。线性反馈移位寄存器可以是任何位长,并且生成此类位长的伪随机数。
在另一实施方案中,寄存器耦合至CSA逻辑的随机数输入。在计算和的随机舍入之前,生成随机数并将其存储在寄存器中。
随机舍入电路的优化
在实施方案中,针对不呈现随机数输入的一个或多个输入位优化CSA逻辑。在此类实施方案中,在CSA逻辑输入处呈现的随机数具有比至CSA逻辑的至少一个其他输入小的位宽。可消除或优化CSA逻辑的不具有随机数输入(或者对于随机数输入总是以其他方式设置为零值)的电路部件。这样做改善了电路的密度、功率消耗和性能。
在实施方案中,CSA逻辑的输入是累加输入。累加输入比CSA逻辑的其他输入宽,因为在累加输入处,呈现了前一运算的中间结果。前一运算可能已经产生了一个或多个附加位,所述附加位由较宽宽度的累加输入所容纳。例如,可将累加输入耦合至宽度较宽且先前运算的中间结果存储于其中的累加器寄存器。
因此,CSA逻辑的非累加输入的位宽至少小于CSA逻辑的累加逻辑的位宽。在实施方案中,类似于没有随机数输入的部件,消除或优化CSA逻辑的不具有非累加数输入(或者对于非累加输入总是以其他方式设置为零值)的电路部件。
图2是描绘在实施方案中CSA逻辑部件的示例电路的框图。在该示例中,CSA逻辑的累加输入是32位输入,非累加输入是16位输入,并且随机数输入是8位输入。电路200是产生进位输出的最低有效位C0以及部分和输出的最低有效位S0的样本逻辑电路。通过呈现输入A0处的累加输入的最低有效位、输入B0处的非累加输入的最低有效位、以及输入C0处的随机数输入的最低有效位来产生输出。
电路220是产生进位输出的第八位C8以及部分和输出的第八位S8的样本逻辑。不是使用作为针对电路200的最低有效位所描绘的电路逻辑的电路逻辑,而是对电路220进行优化。优化是由于缺少随机数输入C,因为随机数输入是8位的较低宽度输入,因此只具有从位0至7的有意义输入。由于缺少随机数输入,因此在电路220中消除电路200的等同逻辑门204、208和210。逻辑门222(等同于电路200中的逻辑门202)和逻辑门228(等同于电路200中的逻辑门208)用于产生第八位部分和S8和第八位进位输出C8。
电路230是基于在样本CSA逻辑的第16位输入处开始的随机数输入和非累加数输入两者的缺乏对电路220的进一步优化。通过进一步优化,不使用逻辑门来产生位16至31的进位输出以及部分和输出。
累加一个或多个输入数流
在实施方案中,CSA逻辑的部分和输出以及CSA逻辑的进位输出耦合至相应的中间寄存器。中间寄存器本身耦合至全加器的输入,并且在反馈路径中耦合至CSA逻辑的至少两个输入。CSA逻辑的一个或多个剩余输入是以待求和的数的一个或多个相应输入流呈现。在每个周期,对输入数与前一周期的部分和部分地求和,将进位输出存储在中间寄存器中,并且将新的部分和以及新的进位输出存储在中间寄存器中。
在一个实施方案中,在呈现输入流的最后一个输入数之后,在下一个周期,在CSA逻辑的输入流输入处呈现随机数。基于对来自包含随机数的寄存器或来自线性反馈移位寄存器的输出进行多路复用来呈现随机数。通过在输入流输入处呈现随机数,最终累加的进位以及部分和与随机数一起累加。多个所得到的累加的最高有效位是所呈现的输入流的随机舍入和。
在另一实施方案中,将中间寄存器中的一个初始化为随机数。因此,在第一累加周期,将随机数与输入流的第一数累加。因此,在处理输入流的所有周期之后,输出的最高有效位表示输入流的随机舍入和。
图3是描绘在实施方案中用于累加输入数流并且随机地舍入此类累加的电路的框图。示例电路包括累加器寄存器315和325、CSA 310以及全加器320。CSA 310具有两个32位输入(X31-X0和Y31-Y0),以及一个16位输入(Z15-Z0)。
在这些输入的每一个处呈现的二进制数由CSA 310和全加器320求和。CSA 310的进位输出C31-C0耦合至寄存器315,该寄存器本身与全加器320的输入U31-U0耦合。CSA 110的部分和输出S31-S0与寄存器325耦合,该寄存器本身分别与全加器320的输入V31-V0耦合。
寄存器315和325在该示例中在反馈环路中分别耦合至输入X31-X0和Y31-Y0。将寄存器315和325初始化为零。
在每个周期,16位输入数由多路复用器330多路复用,以在输入Z15-Z0处被呈现。CSA 310评估输入数并对其与先前评估的从寄存器315和325呈现的进位输出以及部分和求和。例如,在第一周期中,寄存器315和325包含零,因此CSA 310的评估导致将输入数与零值作为部分和输出存储在寄存器325中。寄存器315继续存储零,因为将零与输入数相加不产生进位输出。在下一个周期中,由于寄存器325与CSA 310反馈耦合,因此在输入Y31-0处再次呈现前一输入。在此周期中,新呈现的输入数与先前输入数累加以产生待存储在寄存器325中的新的部分和以及待存储在寄存器315中的所述和的进位输出。重复该周期,直至输入流中的所有输入数都在CSA 310的Z15-0输入处呈现。
在呈现流中的最后输入数的最后周期之后的周期中,用于16位多路复用器330的控制信号选择待在CSA 310的Z15-0输入处呈现的随机数输入。将随机数在CSA 310处与分别在输入X31-0和Y31-0处从寄存器315和325呈现的累加的进位值和累加的部分和值部分地求和。相应寄存器315和325处的所得部分和以及所得进位输出包括随机数并且在全加器320处相加。全加器320的输出的最高有效位31-16表示输入流的随机舍入和,而其余的输出位被丢弃。
在实施方案中,电路同时对三个或更多个输入数求和并对其和进行随机舍入。该电路使用包括华莱士树(Wallace tree)加法器逻辑的CSA逻辑。“华莱士树加法器逻辑”术语在本文中是指具有四个或更多输入并且产生在输入处呈现的输入数的进位输出以及无进位部分和输出的电路。华莱士树加法器是华莱士树加法器逻辑的示例。尽管出于解释的目的,本文所述的电路和技术可指代华莱士树加法器,但可有效地替换任何其他华莱士树加法器逻辑。因此,此类电路和技术不应被解释为限于华莱士树加法器,而是可适用于任何华莱士树加法器逻辑。
图4是描绘在实施方案中用于对多个输入数流求和并且随机地舍入此类求和的电路的框图。在该示例中,电路使用华莱士树加法器。华莱士树加法器包括耦合的CSA加法器的网路,所述CSA加法器同时累加在华莱士树加法器的输入处呈现的多个输入数,以产生累加的进位输出以及累加的部分和输出。
华莱士树加法器410具有十个输入,所述输入中的两个输入(C和S)耦合至进位输出累加器寄存器415以及部分和输出累加器寄存器425,类似于图3。华莱士树加法器的每个CSA将输入数减少到少一个数的输出。然后,将此类CSA的输出耦合至另一CSA的输入,以进一步减少输出的数目,直至仅有两个输出,即进位输出P以及部分和输出Q。
华莱士树加法器410的输出P和Q耦合至CSA 413的输入。CSA 413的第三输入耦合至多路复用器430。基于多路复用器430的控制输入Cl,选择随机数输入或零值以在CSA 413的输入处呈现。呈现零值允许X1-X8的输入处的数流在CSA 413的输出寄存器415和425处累加。在一个实施方案中,在所述流的最后条目处,多路复用器430为待与最终累加相加的随机数选择随机数输入。在其他实施方案中,随机数输入在任何其他累加周期中由多路复用器430选择。
CSA 413的输出耦合至进位输出寄存器415以及部分和输出寄存器425,这些寄存器本身耦合至全加器420。全加器420对如在输出寄存器415和425中所累加的CSA 413的进位输出以及部分和的全加进行评估。因此,全加器420产生多个数流的求和的完全进位结果。在最后一个周期,全加器420的输出的多个最高有效位是在华莱士树加法器410的输入处呈现的输入数流的随机舍入和。
负和舍入
为了随机地舍入负和,减去随机数(或者换句话说,加上负随机数)。例如,两个或更多个数的样本和是-37.25。当随机地舍入此类负和时,结果是,有75%的概率为-37,并且有25%的概率为-38。当在-1至0(不包括-1)的范围内生成随机数时,该随机数有75%的概率在-0.75至0(不包括-0.75)的范围内,且有25%的概率在-1至-0.75(不包括-1)的范围内。因此,将此类负随机数与-37.25的和相加,有75%的时间得到以-37开始的结果(结果在-38至-37.25(不包括-38.0)的范围内),且有25%的时间得到以-38开始的结果(结果在-38.25至-38.0的范围内)。
在实施方案中,为了生成负随机数,生成正随机数(例如,使用本文所述的技术),然后将其转换成负数。在一个实施方案中,通过对正数的每个位求反以产生一的补码负数,将正随机数转换成相同宽度的负数。在另一实施方案中,对正随机数的每一位求反,然后将其与一的值相加以将正随机数转换为随机数的二的补码。在再一实施方案中,对随机生成的正数的最高有效位求反以生成负随机数,尽管其绝对值不等于正随机数。
在实施方案中,为了随机舍入输入数的和,在没有随机舍入的情况下生成该和,然后基于该和的符号(正或负),在有或没有转换为负随机数的情况下加上随机数。
图5是描绘在实施方案中基于和的符号随机舍入该和的电路的框图。图5的样本电路包括全加器540和16位异或门550。32位和是至全加器540的输入U31-0,以生成输入和的随机舍入。全加器540还暴露输入CIN以用于至全加器的进位输入。输入和的最高有效位U31也耦合至异或门550的16位输入的每一位。异或门的另一16位输入耦合至正随机数输入。异或门550的输出耦合至全加器540的输入V15-V0。
因此,当输入和的最高有效位U31为高(表示该和为负数)时,将随机数位中的每个与1值异或运算。此类异或运算产生正随机数的一的补码。然后,将一的补码随机数在输入V15-V0处作为至全加器540的输入呈现,以与输入U31-U0处的和相加。另外,所述和的最高有效位U31耦合至全加器540的输入CIN,因此将一的值与所述和与负随机数的求和相加。此类相加有效地使负随机数成为所呈现的正随机数的二的补码。来自全加器540的输出(诸如输出31-16)的结果的多个最高有效位被选择为随机舍入的负和。
在输入和为正数的情况下,则异或门550的16位输入具有零值。因此,异或门550处的异或运算产生与在随机数输入处呈现的值相同的值。类似地,输入CIN具有零值,因此在全加器540处不加入附加值。因此,全加器540的输出是输入和与未改变的正随机数的求和。
在实施方案中,用于和的随机舍入的电路包括用于和的随机舍入的两个子电路,这两个子电路在随机数输入的符号上不同。一个子电路在随机数输入处具有正随机数,另一个子电路在随机数输入处具有负随机数。在使用两个子电路计算随机舍入和之后,使用相应结果的最高有效位中的一个或两个来选择将两个随机舍入和结果中的哪个选择作为所述电路的输出结果。例如,如果正随机数子电路的结果的最高有效位是正的,则选择该结果作为电路的输出。如果正随机数子电路的结果是负的,则使用负随机数子电路的结果。
图6是描绘在实施方案中用于有符号求和的随机舍入的示例电路的框图。示例电路包括子电路610A和610B。子电路610A和610B具有相同的电路,该电路将输入数求和并且呈现随机舍入的数。子电路610A和610B可包括本文讨论的任何电路。作为至子电路610A和610B的输入而呈现的输入数是相同的。然而,随机数输入由反相器640反相用于子电路B。反相器640仅耦合至随机数输入的最高有效位。此类反相(完整位或仅最高有效位(MSB))将在随机数输入处呈现的正随机数转换成不同的负的、但仍然随机的数。
子电路610A和610B的输出的符号(由相应输出的最高有效位(MSB)表示)确定子电路的输出中的哪个反映正确的随机舍入。例如,多路复用器630耦合至子电路610B的最高有效位。多路复用器630在子电路610B的符号为负时选择子电路610A的输出,并且在子电路610B的符号为正时选择子电路610B的输出。
功能概述
图7是描绘在实施方案中用于随机地舍入两个或更多个数的和的过程的流程图。在步骤705处,接收两个或更多个输入数以用于求和。在步骤710处,接收随机数用于随机舍入。尽管可迭代地执行如图7中所描绘的过程,但在该过程的单次迭代期间而不是在每次迭代时,在步骤710处接收随机数。这确保了在迭代累加期间随机数只被加一次。在步骤700处,可通过线性反馈移位寄存器或任何其他方法来生成随机数。
在步骤715处,对输入数和随机数执行半加。在不传递任何进位的情况下对数字求和以生成部分和输出,并且将所生成的进位合计为单独的进位输出。在实施方案中,由一个或多个进位保留加法器执行步骤705-715。
可在步骤720处存储部分和以及进位输出,并且在步骤705处将其作为反馈提供为输入数。此类反馈生成一个或多个输入数流的累加部分求和。
在步骤725处,接收进位输出以及部分和,并且在步骤730处,执行部分和输出与进位输出的全加(包括进位传递),生成一个或多个输入数和随机数的全加作为输出。在实施方案中,由加法器逻辑执行步骤725-730。
在步骤735处,选择全和输出的多个最高有效位作为两个或更多个数的求和的随机舍入结果。有效位的所选数目取决于用于随机数的位的数目。
图8是描绘在实施方案中用于随机地舍入两个或更多个数的有符号和的过程的流程图。在步骤805处,接收两个或更多个输入数以用于求和。在步骤810处,执行两个或更多个数的全加(包括进位传递)以生成中间的有符号和。基于最高有效位,在步骤815处确定中间和的符号。
如果中间和是负的,如所设置的最高有效位所指示的,则在步骤820处,将随机数转换成负随机数。可基于对随机数的所有位求反或者通过仅对随机数的最高有效位求反来转换随机数。如果中间和是正的,如由最高有效位被清零所指示的,则使用随机数而不进行任何转换。
在步骤825处,接收随机数,并且在步骤830处,对随机数与在步骤810处生成的中间和执行相加。在步骤830处,生成全和。
在步骤835处,选择全和输出的多个最高有效位作为两个或更多个数的求和的随机舍入结果。有效位的数目取决于用于随机数输入的位的数目。
Claims (22)
1.一种随机舍入电路,其包括:
进位保留加法器(CSA)逻辑,其具有三个或更多个CSA输入、CSA和输出以及CSA进位输出,其中在来自所述三个或更多个CSA输入的特定CSA输入处呈现随机数值;
加法器逻辑,其至少具有多个加法器输入以及和输出;
其中所述CSA逻辑的所述CSA进位输出与所述加法器逻辑的所述多个加法器输入的第一输入耦合,并且所述CSA逻辑的所述CSA和输出与所述加法器逻辑的所述多个加法器输入的第二输入耦合;
其中所述加法器逻辑的所述和输出的特定数目的最高有效位表示来自所述CSA逻辑的所述三个或更多个CSA输入中的除了所述特定输入之外的至少两个CSA输入的随机舍入和。
2.根据权利要求1所述的电路,其中所述三个或更多个CSA输入包括累加输入和非累加输入,其中所述累加输入具有比所述非累加输入大的位宽。
3.根据权利要求2所述的电路,其中所述CSA和输出的至少一个位输出耦合至所述累加输入的至少一个位输入。
4.根据权利要求2所述的电路,其中所述加法器逻辑的所述加法器输入的所述第一输入的至少一个位输入被设置为零。
5.根据权利要求1所述的电路,其中所述三个或更多个CSA输入包括累加输入和非累加输入,其中所述非累加输入和所述累加输入具有比所述特定输入大的位宽。
6.根据权利要求2所述的电路,其还包括:
所述CSA逻辑的CSA部件逻辑,所述CSA部件逻辑用于确定所述CSA进位输出的进位位输出并且确定所述CSA和输出的和位输出;
其中所述CSA逻辑排除所述特定输入的随机数位输入。
7.根据权利要求1所述的电路,其还包括:
CSA进位寄存器;
CSA和寄存器;
其中所述CSA进位输出通过以下步骤耦合至所述加法器逻辑的所述第一输入:使所述CSA进位输出耦合至所述CSA进位寄存器,并且使所述CSA进位寄存器耦合至所述第一输入;
其中所述CSA和输出通过以下步骤耦合至所述加法器逻辑的所述第二输入:使所述CSA和输出耦合至所述CSA进位寄存器,并且使所述CSA进位寄存器耦合至所述第二输入;
其中使所述CSA进位寄存器耦合至所述三个或更多个CSA输入的第一CSA输入,并且使所述CSA和寄存器耦合至所述三个或更多个CSA输入的第二CSA输入。
8.根据权利要求7所述的电路,其中所述三个或更多个CSA输入的第三CSA输入是所述特定输入。
9.根据权利要求1所述的电路,其还包括华莱士树加法器逻辑。
10.根据权利要求9所述的电路,其还包括:
多路复用器,其具有耦合至所述华莱士树加法器逻辑的特定CSA加法器逻辑的所述特定输入的多路复用器输出,其中所述多路复用器的至少一个输入是随机数且所述多路复用器的至少另一输入是零;
其中所述特定CSA加法器逻辑的特定CSA进位输出是所述CSA逻辑的所述CSA进位输出并且与所述加法器逻辑的所述多个加法器输入的所述第一输入耦合;并且
其中所述特定CSA加法器逻辑的特定CSA和输出是所述CSA逻辑的所述CSA和输出并且与所述加法器逻辑的所述多个加法器输入的所述第二输入耦合。
11.根据权利要求1所述的电路,其还包括随机数逻辑,所述随机数逻辑具有耦合至所述特定输入的随机数逻辑输出。
12.根据权利要求11所述的电路,其中所述随机数逻辑包括以下各项中的至少一者:线性反馈移位寄存器或存储随机数的寄存器。
13.一种用于随机舍入的方法,其包括:
在进位保留加法器逻辑处接收多个输入值,其中所述多个输入值中的至少一个输入值是随机生成数;
至少部分地基于所述随机生成数,生成进位输出值和无进位和输出值;
在加法器逻辑处接收所述进位输出值和所述无进位和输出值;
至少部分地基于所述进位输出值和所述无进位和输出值,生成所述多个输入值的和;
选择特定数目的最高有效位作为所述多个输入值的随机舍入和。
14.根据权利要求13所述的方法,其还包括
在多次迭代中的迭代中:
在所述进位保留加法器逻辑处接收所述多个输入值中的特定输入值,
基于所述特定输入值、来自所述多次迭代的先前迭代的先前无进位和输出值以及先前进位输出值,生成中间无进位和输出以及中间进位输出,
存储所述中间无进位和输出以及所述中间进位输出以用于所述多次迭代的下一迭代。
15.根据权利要求13所述的方法,其中在所述进位保留加法器逻辑处接收所述多个输入值包括:
在多次迭代的相应迭代处接收所述多个输入值中的每一个;
其中在所述多次迭代的最后一次迭代处接收的所述多个输入值的最后一个输入值是所述随机生成数。
16.根据权利要求13所述的方法,其中从线性反馈寄存器接收所述随机生成数。
17.根据权利要求13所述的方法,其中排除所述随机生成数的所述多个输入值是另一进位保留加法器逻辑的输出值。
18.根据权利要求17所述的方法,其中在所述进位保留加法器逻辑处接收所述随机生成数基于控制输入值。
19.一种随机舍入的方法,其包括:
在第一加法器逻辑处生成多个输入值的中间和;
基于所述中间和的最高有效位,确定所述中间和为负;
将随机生成值转换为负随机生成值;
基于所述中间和以及所述负随机生成值,在第二加法器逻辑处生成所述多个输入值的和;
选择所述多个输入值的所述和的特定数目的最高有效位作为所述多个输入值的随机舍入和。
20.根据权利要求19所述的方法,其中将所述随机生成值转换为所述负随机生成值是至少通过设置所述随机生成值的最高有效位来执行。
21.根据权利要求19所述的方法,其中将所述随机生成值转换为所述负随机生成值是至少通过对所述随机生成值的位求反来执行。
22.一种逻辑电路,其执行根据权利要求13-21中任一项所述的方法。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/933,229 US10628124B2 (en) | 2018-03-22 | 2018-03-22 | Stochastic rounding logic |
| US15/933,229 | 2018-03-22 | ||
| PCT/US2019/022685 WO2019182943A1 (en) | 2018-03-22 | 2019-03-18 | Stochastic rounding logic |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN111936965A true CN111936965A (zh) | 2020-11-13 |
| CN111936965B CN111936965B (zh) | 2025-03-21 |
Family
ID=65952226
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201980021078.2A Active CN111936965B (zh) | 2018-03-22 | 2019-03-18 | 随机舍入逻辑 |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US10628124B2 (zh) |
| EP (1) | EP3769208B1 (zh) |
| JP (1) | JP7292297B2 (zh) |
| KR (1) | KR102697307B1 (zh) |
| CN (1) | CN111936965B (zh) |
| WO (1) | WO2019182943A1 (zh) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113791756A (zh) * | 2021-09-18 | 2021-12-14 | 中科寒武纪科技股份有限公司 | 转数方法、存储介质、装置及板卡 |
| CN113835677A (zh) * | 2021-09-23 | 2021-12-24 | 龙芯中科技术股份有限公司 | 操作数处理系统、方法及处理器 |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN108256644B (zh) * | 2018-01-05 | 2021-06-22 | 上海兆芯集成电路有限公司 | 微处理器电路以及执行神经网络运算的方法 |
| US10908878B2 (en) * | 2018-11-26 | 2021-02-02 | Nvidia Corporation | Dynamic directional rounding |
| US11132198B2 (en) * | 2019-08-29 | 2021-09-28 | International Business Machines Corporation | Instruction handling for accumulation of register results in a microprocessor |
| US11615782B2 (en) * | 2020-11-12 | 2023-03-28 | Sony Interactive Entertainment Inc. | Semi-sorted batching with variable length input for efficient training |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040078401A1 (en) * | 2002-10-22 | 2004-04-22 | Hilton Howard E. | Bias-free rounding in digital signal processing |
| CN1609813A (zh) * | 2003-10-24 | 2005-04-27 | 英特尔公司 | 减少硬件的软错误检测 |
| CN101042583A (zh) * | 2006-02-09 | 2007-09-26 | 阿尔特拉公司 | 用于可编程逻辑器件的专门处理块 |
| US20090287757A1 (en) * | 2008-05-15 | 2009-11-19 | Rarick Leonard D | Leading Zero Estimation Modification for Unfused Rounding Catastrophic Cancellation |
| US8533250B1 (en) * | 2009-06-17 | 2013-09-10 | Altera Corporation | Multiplier with built-in accumulator |
| CN107025091A (zh) * | 2016-02-01 | 2017-08-08 | 国际商业机器公司 | 二进制融合乘加浮点计算 |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5974435A (en) * | 1997-08-28 | 1999-10-26 | Malleable Technologies, Inc. | Reconfigurable arithmetic datapath |
| US8019805B1 (en) | 2003-12-09 | 2011-09-13 | Globalfoundries Inc. | Apparatus and method for multiple pass extended precision floating point multiplication |
| JP4544870B2 (ja) * | 2004-01-26 | 2010-09-15 | 富士通セミコンダクター株式会社 | 演算回路装置 |
| US9710228B2 (en) * | 2014-12-29 | 2017-07-18 | Imagination Technologies Limited | Unified multiply unit |
| US10108397B2 (en) * | 2015-08-25 | 2018-10-23 | Samsung Electronics Co., Ltd. | Fast close path solution for a three-path fused multiply-add design |
| US10671564B2 (en) * | 2015-10-08 | 2020-06-02 | Via Alliance Semiconductor Co., Ltd. | Neural network unit that performs convolutions using collective shift register among array of neural processing units |
| US9940102B2 (en) * | 2016-01-04 | 2018-04-10 | International Business Machines Corporation | Partial stochastic rounding that includes sticky and guard bits |
| US10489152B2 (en) | 2016-01-28 | 2019-11-26 | International Business Machines Corporation | Stochastic rounding floating-point add instruction using entropy from a register |
-
2018
- 2018-03-22 US US15/933,229 patent/US10628124B2/en active Active
-
2019
- 2019-03-18 CN CN201980021078.2A patent/CN111936965B/zh active Active
- 2019-03-18 EP EP19714078.3A patent/EP3769208B1/en active Active
- 2019-03-18 WO PCT/US2019/022685 patent/WO2019182943A1/en not_active Ceased
- 2019-03-18 JP JP2020546908A patent/JP7292297B2/ja active Active
- 2019-03-18 KR KR1020207030287A patent/KR102697307B1/ko active Active
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040078401A1 (en) * | 2002-10-22 | 2004-04-22 | Hilton Howard E. | Bias-free rounding in digital signal processing |
| CN1609813A (zh) * | 2003-10-24 | 2005-04-27 | 英特尔公司 | 减少硬件的软错误检测 |
| CN101042583A (zh) * | 2006-02-09 | 2007-09-26 | 阿尔特拉公司 | 用于可编程逻辑器件的专门处理块 |
| US20090287757A1 (en) * | 2008-05-15 | 2009-11-19 | Rarick Leonard D | Leading Zero Estimation Modification for Unfused Rounding Catastrophic Cancellation |
| US8533250B1 (en) * | 2009-06-17 | 2013-09-10 | Altera Corporation | Multiplier with built-in accumulator |
| CN107025091A (zh) * | 2016-02-01 | 2017-08-08 | 国际商业机器公司 | 二进制融合乘加浮点计算 |
Non-Patent Citations (2)
| Title |
|---|
| 何军等: "分离通路浮点乘加器设计与实现", 计算机科学, no. 08, 15 August 2013 (2013-08-15) * |
| 刘鸿瑾等: "基于快速舍入的双精度浮点乘法器的设计", 微电子学与计算机, no. 06, 20 July 2006 (2006-07-20) * |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113791756A (zh) * | 2021-09-18 | 2021-12-14 | 中科寒武纪科技股份有限公司 | 转数方法、存储介质、装置及板卡 |
| CN113791756B (zh) * | 2021-09-18 | 2022-12-23 | 中科寒武纪科技股份有限公司 | 转数方法、存储介质、装置及板卡 |
| CN113835677A (zh) * | 2021-09-23 | 2021-12-24 | 龙芯中科技术股份有限公司 | 操作数处理系统、方法及处理器 |
Also Published As
| Publication number | Publication date |
|---|---|
| EP3769208B1 (en) | 2022-10-26 |
| CN111936965B (zh) | 2025-03-21 |
| JP7292297B2 (ja) | 2023-06-16 |
| EP3769208A1 (en) | 2021-01-27 |
| WO2019182943A1 (en) | 2019-09-26 |
| US10628124B2 (en) | 2020-04-21 |
| KR20200134281A (ko) | 2020-12-01 |
| JP2021517301A (ja) | 2021-07-15 |
| US20190294412A1 (en) | 2019-09-26 |
| KR102697307B1 (ko) | 2024-08-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111936965B (zh) | 随机舍入逻辑 | |
| Priest | Algorithms for arbitrary precision floating point arithmetic | |
| Moss et al. | A two-speed, radix-4, serial–parallel multiplier | |
| Pineiro et al. | Algorithm and architecture for logarithm, exponential, and powering computation | |
| KR20190090817A (ko) | 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법 | |
| CN112241291B (zh) | 用于指数函数实施的浮点单元 | |
| US10089073B2 (en) | Method and apparatus for converting from integer to floating point representation | |
| US12430542B2 (en) | Compiling asymmetrically-quantized neural network models for deep learning acceleration | |
| CN112835551B (zh) | 用于处理单元的数据处理方法、电子设备和计算机可读存储介质 | |
| US6182100B1 (en) | Method and system for performing a logarithmic estimation within a data processing system | |
| JP2020067897A (ja) | 演算処理装置、学習プログラム及び学習方法 | |
| Chai et al. | CoopMC: Algorithm-architecture co-optimization for Markov chain Monte Carlo accelerators | |
| Boldo et al. | Some functions computable with a fused-mac | |
| US7219117B2 (en) | Methods and systems for computing floating-point intervals | |
| US11551087B2 (en) | Information processor, information processing method, and storage medium | |
| Zadiraka et al. | Calculating the Sum of Multidigit Values in a Parallel Computational Model | |
| Sravya et al. | Hardware posit numeration system primarily based on arithmetic operations | |
| TW202333041A (zh) | 執行浮點運算的系統及方法 | |
| JP2018097864A (ja) | リーディングゼロ予想 | |
| TWI753668B (zh) | 資訊處理裝置、電腦程式、記錄媒體及資訊處理方法 | |
| CN117389511B (zh) | 一种十进制运算的舍入方法、系统和计算机设备 | |
| Aygun et al. | Multiplexer Optimization for Adders in Stochastic Computing | |
| Hass | Synthesizing optimal fixed-point arithmetic for embedded signal processing | |
| JP7001897B2 (ja) | 畳み込み演算回路、畳み込み演算方法、プログラム、および畳み込みニューラルネットワーク装置 | |
| Chen et al. | Low-area and high-speed approximate matrix-vector multiplier |
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 | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |