CN116166217A - 执行浮点操作的系统和方法 - Google Patents

执行浮点操作的系统和方法 Download PDF

Info

Publication number
CN116166217A
CN116166217A CN202211466221.9A CN202211466221A CN116166217A CN 116166217 A CN116166217 A CN 116166217A CN 202211466221 A CN202211466221 A CN 202211466221A CN 116166217 A CN116166217 A CN 116166217A
Authority
CN
China
Prior art keywords
value
floating point
sum
gain
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
CN202211466221.9A
Other languages
English (en)
Inventor
余穗福
严星华
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN116166217A publication Critical patent/CN116166217A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • 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/4836Computations with rational numbers
    • 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
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49915Mantissa overflow or underflow in handling floating-point numbers
    • 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/556Logarithmic or exponential functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

一种执行浮点操作的方法可以包括:获得具有浮点格式的操作数,基于操作数的指数的范围来计算增益,通过将增益应用于操作数来生成具有定点格式的中间值,通过对中间值执行操作来生成具有定点格式的定点结果值,以及将定点结果值变换为具有浮点格式的浮点输出值。

Description

执行浮点操作的系统和方法
相关申请的交叉引用
本申请要求于2021年11月24日向韩国知识产权局提交的第10-2021-0163767号韩国专利申请的优先权,该申请的主题通过引用整体结合于此。
技术领域
本发明构思总体上涉及执行算术操作的系统和可以用于执行浮点操作的方法。
背景技术
对于给定数量的数字位,浮点格式可以用于表示比定点格式相对更大的数范围。然而,对以浮点格式表达的数的算术操作可能比对以定点格式表达的数的算术操作更复杂。随着各种计算硬件的发展,已经广泛使用了浮点格式。然而,需要对浮点数执行(或运行)多个算术操作的特定应用(例如,计算机视觉、神经网络、虚拟现实、增强现实等)的准确性和效率可以根据被执行的算术操作的类型而变化。不期望这种可变性,因此需要改进浮点算术操作的执行。
发明内容
本发明构思提供了能够对浮点数执行更准确的算术操作的系统和方法。
根据本发明构思的一个方面,一种执行浮点操作的方法包括:获得操作数(operand),其中操作数中的每一个以浮点格式表达;基于操作数的操作数指数的范围来计算增益;通过将增益应用于操作数来生成中间值,其中中间值中的每一个以定点格式表达;通过对中间值执行算术操作来生成定点结果值,其中定点结果值以定点格式表达;以及根据定点结果值来生成浮点输出值,其中浮点输出值以浮点格式表达。
根据本发明构思的一个方面,一种执行浮点操作的系统可以包括:增益计算电路,被配置为获得操作数并且基于操作数指数的范围来计算增益,其中操作数中的每一个以浮点格式表达;归一化电路,被配置为通过将增益应用于操作数来生成中间值,其中中间值中的每一个以定点格式表达;定点操作电路,被配置为通过对中间值执行算术操作来生成定点结果值,其中定点结果值以定点格式表达;以及后处理电路,被配置为将定点结果值变换为浮点输出值,其中浮点输出值以浮点格式表达。
根据本发明构思的一个方面,一种执行浮点操作的系统可以包括:处理器和存储使处理器能够执行浮点操作的指令的非暂时性存储介质。浮点操作可以包括:获得操作数,其中操作数中的每一个以浮点格式表达;基于操作数的操作数指数的范围来计算增益;通过将增益应用于操作数来生成中间值,其中中间值中的每一个以定点格式表达;通过对中间值执行算术操作来生成定点结果值,其中定点结果值以定点格式表达;以及将定点结果值变换为浮点输出值,其中浮点输出值以浮点格式表达。
附图说明
结合以下详细说明和附图,可以更清楚地理解本发明构思的优点、益处和特征以及制造和使用,其中:
图1是示出根据本发明构思的实施例的执行浮点操作的方法的流程图;
图2是示出根据本发明构思的实施例的浮点格式的概念图;
图3是在一个实施例中进一步示出图1的方法中计算增益的步骤的流程图;
图4是在一个实施例中进一步示出图1的方法中生成具有定点格式的结果值的步骤的流程图;
图5是根据本发明构思的实施例的浮点操作的伪代码的部分示例性列表;
图6是在一个实施例中进一步示出图1的方法中生成具有浮点格式的输出值的步骤的流程图;
图7是示出根据本发明构思的实施例的结果值的概念图;
图8A和图8B是示出根据本发明构思的实施例的执行浮点操作的方法的相关流程图;
图9是在一个实施例中进一步示出图1方法中生成操作数的步骤的流程图;
图10是在一个实施例中进一步示出图9的方法中生成操作数的步骤的流程图;
图11是根据本发明构思的实施例的浮点操作的伪代码的部分示例性列表;
图12A和图12B是示出根据本发明构思的实施例的执行浮点操作的方法的相关流程图;
图13是示出根据本发明构思的实施例的执行浮点操作的系统的框图;
图14是示出根据本发明构思的实施例的系统的框图;集
图15是根据本发明构思的实施例的计算系统的总体框图。
具体实施方式
在整个撰写的说明书和附图中,相似的附图标记和标签用于表示相似的元素、组件、特征和/或方法步骤。
图1是示出根据本发明构思的实施例的执行浮点操作的方法的流程图。参考图1,所示的示例性方法可以包括步骤S10、S30、S50、S70和S90,其中这些步骤中的一个或多个可以使用各种硬件、固件和/或软件配置(诸如下文中结合图13描述的配置)来执行。在一些实施例中,与本发明构思的实施例一致的方法的一个或多个步骤(诸如下文中结合图14和图15描述的那些)可以由被配置为运行由存储在存储器中的编程代码控制的指令序列的处理器来执行。
参考图1,可以获得(例如,生成)多个操作数(S10),其中操作数中的每一个可以以浮点格式来表达。如上所述,当在数字系统中处理的数字位的数量增加时,浮点格式可以更准确地表示扩展(或更宽)范围内的数。在这方面,与类似的定点格式相比,浮点格式需要减少的位数。并且在限定的准确度内,这种更少的位数需要更少的数据存储空间和/或存储器带宽。
对各种浮点格式的使用在本领域中是公知的。例如,本发明构思的特定实施例可以根据使用32位的单精度浮点格式(例如,FP32)和/或使用16位的半精度浮点格式(例如,FP16)(诸如根据电气和电子工程师协会(IEEE)发布的754-2008技术标准(例如,参见www.ieee.org上公布的相关背景信息)定义的格式)进行操作。
使用该假设的上下文作为教导示例,通过存储FP16数据而非FP32数据,可以显著减少存储器(例如,动态随机访问存储器(或DRAM))的数据存储空间和/或存储器带宽。也就是说,处理器可以从存储器中读取FP16数据,并将FP16数据变换为对应的FP32数据。可替代地,处理器可以将FP32数据逆变换为对应的FP16数据,并将FP16数据写入存储器。
此外,在这方面,可以针对应用采用具有适当位数的浮点格式。例如,针对深度学习推理的执行,可以使用以FP16表达的特征图和对应的权重。因此,与定点格式(例如,INT8)相比,可以在更宽的范围内以更高的准确度来执行深度学习。此外,与FP32格式相比,可以以更高的效率(例如,存储空间、存储器带宽、处理速度等)来执行深度学习。因此,在以有限资源为特征的应用(例如,便携式计算系统,诸如移动电话)中,可能期望使用具有相对更少位的浮点格式(例如,FP16)。
本领域技术人员将从前述内容中认识到,浮点操作在各种应用中可能是特别有用的。例如,可以针对神经网络(诸如针对卷积层、全连接(FC)层、softmax层、平均池化层等)使用浮点操作。此外,可以针对特定变换(诸如离散余弦变换(DCT)、快速傅立叶变换(FFT)、离散小波变换(DWT)等)使用浮点操作。此外,可以针对有限脉冲响应(FIR)滤波器、无限脉冲响应(IIR)滤波器、线性插值、矩阵算术等使用浮点操作。
然而,随着浮点格式的位数减少,算术操作中由于四舍五入(round)而出现实质性错误的可能性可能增加。例如,如下文结合图2所述的,当对以FP16表达的四个数{1024,0.5,1.0,1.5}求和时,根据特定的加法次序,和可以是{1026,1027,1028}之一。也就是说,在对以浮点格式表达的一组数执行加法操作期间,由于四舍五入的变化,关联属性(associative property)可能是无效的。因此,具有相对更多位的浮点格式(例如,FP32)可能具有长小数(fraction)部分,并且因此,错误的影响可能相对较弱。通过比较,具有相对更少位的浮点格式(例如,FP16)可能具有较短的小数部分,并且因此,错误的影响可能更显著。为了移除错误,可以考虑将FP16数据变换为FP32数据以及将FP32数据的算术操作结果变换为FP16数据的各种方法。然而,这些方法不仅会导致数据变换的开销,而且会降低并行数据处理(例如,单指令多数据(SIMD))的效率,从而降低执行算术操作的整体速度。
在下文中,在执行与本发明构思的实施例一致的浮点操作的特定系统和方法中,可以移除浮点操作中由于重复四舍五入而产生的错误(例如,与加法次序相关出现的错误)。此外,在与本发明构思的实施例一致的执行浮点操作的特定系统和方法中,可以通过移除浮点操作中的错误来提高包括对浮点数执行的算术操作的应用的整体性能。更具体地说,可以移除具有相对更少位的浮点算术操作中的错误,并且可以使用相对较低复杂度的硬件来高效地处理浮点数。
参考图1,在获取操作数后(S10),可以计算增益(S30)。例如,可以基于先前生成的操作数的指数(以下被称为“操作数指数”)的范围来计算增益。增益可以对应于应用于(例如,乘以)操作数以便将分别具有不同指数的操作数变换为公共的定点格式的值。例如,增益“g”可以定义应用于相应操作数的值“2g”。在一些实施例中,可以预先计算(或确定)增益“g”或者基于生成的操作数来动态地计算增益“g”。将在下文结合图3描述可以用于计算增益“g”(S30)的方法步骤的一个示例。
在被计算出后(S30),增益“g”可以被应用于操作数(S50)。例如,每个生成的操作数可以乘以计算出的增益(例如2g)。因此,可以生成多个中间值,每个中间值以特定的定点格式来表达,并且分别对应于操作数之一。这里,将计算出的增益应用于操作数可以被称为“归一化”。
此后,可以生成以定点格式表达的结果值(以下被称为“定点结果值”)(S70)。例如,可以对中间值执行一个或多个算术操作,以便生成定点结果值。在一些实施例中,生成定点结果值的步骤可以由被设计为处理以定点格式表达的数的算术操作设备来执行,其中,可以针对中间值(即,针对生成的操作数)来迭代地执行算术操作。
将在下文结合图4描述生成定点结果值的步骤的一个示例。
此后,可以使用定点结果值来生成具有浮点格式的输出值(以下被称为“浮点输出值”)(S90)。例如,先前生成的定点结果值(例如,S70)可以被变换为具有浮点格式的对应的输出值。在一些实施例中,浮点输出值可以以类似于生成的操作数的浮点格式来表达。
将在下文结合图6描述生成浮点输出值的步骤的一个示例。
图2是示出可以结合本发明构思的实施例使用的浮点格式的概念图。更具体地,图2的上部示出了由IEEE 754-2008技术标准定义的FP16数据结构,图2的下部示出了FP16数的示例。
参考图2的上部,FP16数可以具有16位的长度。最高有效位(MSB)(b15)可以是表示FP16数的符号的符号位“s”。MSB(b15)之后的五个位(b10至b14)可以是指数部分“e”,包括最低有效位(LSB)(b0)的10个位(b0至b9)可以是小数部分“m”。根据FP16,按照FP16数表达(表示)的实数“v”可以根据下面的等式1来定义:
Figure BDA0003956343460000061
这里,当指数部分“e”为零时,“q”可以是1,并且当指数部分e不为零时,“q”可以是0;实数“v”可以具有假设在第十位(b9)和第十一位(b10)之间的隐藏前导(lead)位,使得当指数部分“e”为零时,实数“v”可以被称为“次正规(subnormal)数”,其中在次正规数中,隐藏前导位可以是0,并且可以使用两倍的小数部分“m”。此外,不是次正规数的实数“v”可以被称为“正规(normal)数”,并且在正规数中,隐藏前导位可以是1。
参考图2的下部,当指数部分“e”是111112时,小数部分“m”可以是0,并且根据符号位“s”,FP16数可以是正无穷或负无穷。因此,指数部分“e”的最大值可以是111102(即,30),并且指数部分“e”的最小值可以是000002(即,0)。此外,当指数部分“e”和小数部分“m”两者都是0时,根据符号位“s”,FP16数可以是正0或负0。在下文中,FP16将被进一步假设和描述为可以结合本发明构思的实施例使用的浮点格式的示例。然而,本发明构思的其他实施例可以使用不同的浮点格式。
图3是在一个实施例中进一步示出图1的方法中计算增益的步骤(S30’)的流程图。
参考图1和图3,可以通过获得与生成的操作数相关联的指数的最大值和最小值来计算增益(S32)。如上文结合图1所述的,增益可以用于将分别具有不同指数的生成的操作数变换为公共的定点格式。随着增益增加,定点格式的位数可能会增加,而随着增益减少,定点格式的位数可能会减少。因此,为了计算最佳(或适当的)增益,可以获得操作数的指数的最大值和最小值。如果操作数落在定义的范围内,则指数的最大值和最小值可以基于该范围来确定。否则,如果操作数不落在该范围内或者如果无法准确地预测操作数的范围,则指数的最大值和最小值可以分别对应于浮点格式中的最大指数和最小指数。例如,如果无法预测以FP16表达的操作数的范围,则指数的最大值可以被假设为30,并且指数的最小值可以被假设为0。
此后,可以基于最大值和最小值之间的差来计算增益(S34)。为了将具有最大指数的第一操作数和具有最小指数的第二操作数相加,可以将通过将第一操作数中的指数和第二操作数中的指数之间的差乘以第一操作数和第二操作数而获得的相应值相加。以这种方式,例如,可以结合在方法步骤S32中获得的指数的最大值和最小值来计算增益。
在对N(其中“N”是大于1的整数)个操作数的算术操作中,第n个操作数的实数“vn”可以根据下面的等式2来表示,其中1≤n≤N。
Figure BDA0003956343460000071
与等式1一致,在等式2中,“sn”表示第n个操作数的符号位,“en”表示第n个操作数的指数部分,“mn”表示第n个操作数的小数部分,当“en”为零时,“qn”可以是1,并且当“en”不为零时,“qn”可以是0。
为了计算N个操作数的和,N个操作数可以被调整为具有相同的指数。例如,第n个操作数的实数“vn”可以根据下面的等式3来调整:
Figure BDA0003956343460000072
这里,“sn”表示第n个操作数的符号位,“emax”表示N个操作数中具有最大指数的操作数的指数。
与图1的方法一致,将增益应用于操作数的步骤(S50)可以包括通过根据下面的等式4将增益“g”应用于等式2的实数“vn”来确定实数“fn”:
Figure BDA0003956343460000073
这里,等式4可以对应于与图1的方法的描述中的第n个操作数相对应的第n个中间值的实数。为了最大限度地保留操作数的有效数位(digit),增益“g”可以满足下面的等式5:
g≥emax-(emin+qmax) [等式5]
这里,“emin”表示N个操作数中具有最小指数的操作数的指数,根据操作数的指数的最小值emin,“qmax”可以是0或1。也就是说,如果“emin”为0,则“qmax”可以为1,否则,如果“emin”不为0,则“qmax”可以为0。随着增益增加,用于处理定点数的资源可以增加,因此,增益可以被设置为满足等式5的最小值(例如,“emax-(emin+qmax)”)。例如,如果无法预测N个操作数的范围,则“emax”、“emin”和“qmax”可以分别被假设为30、0和1。因此,增益“g”可以是29。如果增益“g”是29,则增益g所应用于的实数“fn”可以由下面的等式6表示:
Figure BDA0003956343460000081
因此,实数“fn”的最大值可以是[2g(210+mn)=229(210+mn)],并且当实数“fn”的最大值以定点格式表达时,可能需要至少40位(40=g+11)。此外,实数“fn”的最小值可以是“mn”,并且可能需要至少10位。因此,如果在FP16的上下文中无法预测操作数的范围,则可以使用能够执行40位定点操作的硬件。
然而,在一些实施例中,增益“g”可能不满足等式5。例如,当系统用于定点操作的位数有限时,gain可以被设置为小于[emax-(emin+qmax)]的值。因此,可以基于定点格式的位数(例如,中间值和/或输出值的位数)来确定增益。
图4是在一个实施例中进一步示出图1的方法中生成定点结果值的步骤(S70’)的流程图。更具体地,图4的流程图示出了作为可以用于生成与中间值相关的图1的定点结果值(S70)的算术操作的一个可能示例的加法操作。
参考图1和图4,可以计算正中间值的第一和(S72),并且可以计算负中间值的第二和(S74)。扩展图2的浮点格式示例(FP16),浮点数可以包括符号位和具有定点格式的中间值,并且可以根据以FP16表达的操作数来生成。因此,根据它们相应的符号位值,中间值可以被分类为正中间值或负中间值。因此,可以计算正中间值的第一和以及负中间值的第二和。在一些实施例中,可以使用两个硬件组件(例如,加法器)来分别计算第一和与第二和。在一些实施例中,单个硬件组件(例如,加法器)可以用于依次计算第一和与第二和。
一旦计算了第一和与第二和(S74),可以计算中间值的和(S76)。例如,可以基于第一和与第二和之间的差来计算中间值的和。在一些实施例中,可以将第一和的绝对值与第二和的绝对值进行比较,并且可以根据比较结果来计算中间值的和。将在下文参考图5更详细地描述方法步骤S76的一个示例。
图5示出了根据本发明构思的实施例的可以用于执行浮点操作的伪代码50的部分列表。在一些实施例中,可以运行图5的伪代码50来执行图4的方法步骤S76。参考图4和图5,可以基于正中间值的第一和以及负中间值的第二和来计算中间值的和。因此,在图5的伪代码50中,项“psum”可以表示第一和的绝对值(例如,由除符号位之外的位指示的值),并且项“nsum”可以表示第二和的绝对值(例如,由除符号位之外的位指示的值)。在图5中,项“fsum”可以表示结果值的绝对值,项“ssum”可以表示结果值的符号。这里,在一些实施例中,项fsum和ssum可以使用16位来表达。
参考图5,可以将psum与nsum进行比较(行51)。如果psum大于nsum(psum>nsum)(即,如果第一和的绝对值大于第二和的绝对值),则运行行52和53。否则,如果psum小于或等于nsum(psum≤nsum)(即,如果第一和的绝对值小于或等于第二和的绝对值),则运行行55和56。
因此,如果psum大于nsum(psum>nsum),则在行52中,可以通过从psum中减去nsum来计算结果值的绝对值fsum。此外,在行53中,指示结果值的符号的ssum的MSB可以被设置为0,指示正数。
如果psum小于或等于nsum(psum≤nsum),则在行55中,可以通过从nsum中减去psum来计算结果值的绝对值fsum。此外,在行56中,指示结果值的符号的ssum的MSB可以被设置为1,指示负数。
图6是在一个实施例中进一步示出图1的方法中生成浮点输出值的步骤(S90)的流程图,图7是示出示例性浮点输出值的概念图。
参考图1、图6和图7,可以将浮点(FP)输出值与浮点格式的最小值FPmin和最大值FPmax进行比较。例如,可以确定在图1的方法的方法步骤S70中生成的定点结果值是否落在FP16的(除正无穷之外的)最大值(即,01111011111111112)和FP16的(除负无穷之外的)最小值(即,11111111111112)之间的范围内。如图6所示,如果FP输出值大于浮点格式的最大值FPmax或者小于浮点格式的最小值FPmin,则该方法可以前进到方法步骤S94。否则,如果FP输出结果小于或等于浮点格式的最大值FPmax并且大于或等于浮点格式的最小值FPmin,则该方法前进到方法步骤S96和S98。
如果FP输出值大于浮点格式的最大值FPmax或小于浮点格式的最小值FPmin,则FP输出值可以被设置为正无穷或负无穷(S94)。例如,如果结果值大于FP16的最大值(即,01111011111111112),则FP输出值可以被设置为指示正无穷的值,即,01111100000000002。可替代地,如果结果值小于FP16的最小值(即,111110111111111112),则FP输出值可以被设置为指示负无穷的值,即,11111100000000002
如果FP输出结果小于或等于浮点格式的最大值FPmax并且大于或等于浮点格式的最小值FPmin,则可以对结果值的前部连续零(uppercontinuouszero)进行计数(S96)。例如,如图7所示,在40位FP输出值中,可以对前部连续零进行计数以确定计数值(例如,在图7所示的示例中可以确定20个零)。然而,在一些实施例中,当定点结果值可以包括符号位时,可以对除符号位之外的前部连续零进行计数。在一些实施例中,可以使用在处理器或硬件加速器中实现的函数(例如,clz)来对前部连续零进行计数。因此,可以根据下面的等式7获得前部连续零的数量nlz:
nlz=clz(fsum) [等式7]
参考图6,可以计算FP输出值的指数部分和小数部分(S98)。例如,如果结果值的绝对值(或除符号位之外的位)具有如图7所示的40位长度,并且在方法步骤S96中计数的前部连续零的数量大于29(例如,增益“g”),则在第十位(b9)或更低位置处可能存在前导1。因此,FP输出值可以对应于FP16的次正规数。当输出值对应于次正规数时,FP输出值的指数部分“esum”和小数部分“msum”可以根据下面的等式8来计算:
esum=0x0000,msum=fsum [等式8]
否则,如果结果值的绝对值(或除符号位之外的位)具有如图7所示的40位长度,并且在方法步骤S96中计数的前部连续零的数量小于或等于29(例如,增益“g”),则FP输出值可以对应于正规数,并且可以将位移位(bit shift)确定为(g-nlz)并且可以执行四舍五入,使得前导1位于第十一位(例如,b10)。当FP输出值对应于正规数,并且增益“g”是29时,FP输出值的指数部分esum和小数部分msum可以根据下面的等式9来计算:
esum=(29-nlz)<<10,msum=round(fsum,(29-nlz)) [等式9]
因此,使用例如由图5的伪代码50生成的ssum,可以根据下面的等式10来计算以FP16表达的输出值sumout,其中esum和msum可以根据等式8和/或等式9来计算。
sumout=(ssum+esum+msum) [等式10]
图8A和图8B是示出根据本发明构思的实施例的用于执行浮点操作的方法的相关流程图。更具体地,图8A的流程图示出了与FP16操作相关的图1的方法的一种实现示例,并且图8B的流程图在一个示例中进一步示出了图8A的方法的方法步骤S102。
参考图8A,假设在执行浮点操作的方法之前,已经获得了操作数数据OP(或者例如,包括N个操作数X[0]至X[N-1]的集合X)。
然后,可以初始化变量(S100)。例如,增益“g”可以被设置为29,与正中间值的第一和相对应的“psum”和与负中间值的第二和相对应的“nsum”可以被设置为0,并且索引“n”也可以被设置为0。
可以从集合X中选择操作数x[n](S101)。也就是说,可以获得操作数OP之一。
然后,可以更新“psum”或“nsum”,并且n可以增加1(S102)。例如,如果所选操作数x[n]是正数,则可以更新“psum”,并且如果操作数x[n]是负数,则可以更新“nsum”。将在下文参考图8B更详细地描述方法步骤S102的一个示例。
然后,可以将“n”与“N”进行比较(S103)。如果“n”不同于“N”(例如,如果n小于N),则方法循环可以前进到步骤S101和S102,否则如果n等于N(例如,如果已经完全计算了“psum”和“nsum”,则方法可以前进到方法步骤S104。
也就是说,可以将“psum”与“nsum”进行比较(S104)。例如,如果“psum”大于或等于“nsum”(S104=是),则方法前进到方法步骤S105,并且“ssum”的MSB可以被设置为0,并且“fsum”可以通过从“psum”中减去“nsum”来计算。可替代地,如果psum小于nsum(S104=否),则方法前进到方法步骤S106,并且“ssum”的MSB可以被设置为1,并且“fsum”可以通过从“nsum”中减去“psum”来计算。
然后,可以将“fsum”与2g+11进行比较(S107)。这里,例如,可以将“fsum”与2g+11进行比较,以确定“fsum”是否大于FP16的最大值。并且,如果“fsum”大于或等于2g+11(S107=否),则方法前进到S112,其中“esum”可以被设置为0x7C00,并且“msum”可以被设置为0,以便指示正无穷(S112)。
如果“fsum”小于2g+11(S107=是),则可以使用clz函数来对“fsum”的前部连续零进行计数,并且nlz可以指示“fsum”的前部连续零的数量(S108)。
然后,可以将“nlz”与增益“g”进行比较(S109)。例如,可以将“nlz”与增益“g”进行比较,以确定“fsum”是FP16的次正规数还是正规数。因此,如果“nlz”小于或等于增益“g”(即,如果fsum是FP16的正规数)(S109=是),则可以通过将(g-nlz)向右移位10次来计算“esum”,并且可以将“msum”四舍五入(g-nlz)位(S110)。否则,如果“nlz”大于增益“g”(即,如果fsum是FP16的次正规数)(S109=否),则“esum”可以被设置为0,并且“msum”可以被设置为“fsum”(S111)。
然后,可以计算“sumout”(S113)。例如,“sumout”可以被计算为在方法步骤S105或S106中计算出的“ssum”的和,并且可以在方法步骤S110、S111或S112中计算“esum”和“msum”。以这样的方式,可以生成包括sumout的输出数据OUT。
如图8B所示,方法步骤S102(例如,更新“psum”或“nsum”的步骤)可以被不同地实现(例如,如S102’)。例如,可以从操作数中提取符号、指数和小数(S102_1)。这里,符号“sx”可以被设置为16位操作数x[n]的MSB,指数“ex”可以被设置为操作数x[n]中MSB之后的5位,小数“mx”可以被设置为操作数x[n]中包括LSB的10位。
因此,可以确定指数“ex”是否为0(S102_2)(例如,可以确定操作数x[n]是否为FP16的次正规数)。也就是说,如果指数“ex”是0(S102_2=是)(即,如果操作数x[n]是次正规数),则方法前进到操作S102_3;否则,如果指数“ex”非零(S102_2=否)(即,如果操作数x[n]是正规数),则方法前进到操作S102_4。
如果操作数x[n]是次正规数,则指数“ex”可以被设置为1,“fx”可以被设置为“mx”(S102_3);否则,如果操作数x[n]是正规数,则“fx”可以被设置为通过向“mx”添加隐藏前导位而生成的值(S102_4)。也就是说,“fx”可以对应于操作数的小数,以与FP16一致的方式来调整。
然后,可以对“fx”进行移位(S102_5)。例如,“fx”可以按(ex-1)进行左移位,因此,“frac”可以具有定点格式。
然后,可以确定“sx”是否为0(S102_6)。也就是说,如果“sx”是0(S102_6=是)(即,如果操作数x[n]是正数),则可以将“frac”加到“psum”(S102_7);否则,如果“sx”非零(S102_6=否)(即,如果操作数x[n]是负数),则“frac”可以被加到“nsum”(S102_8)。
图9是在一个示例中进一步示出图1的方法的步骤S10的流程图。也就是说,可以通过执行图9所示的方法步骤S10’来获得操作数。在各种应用中,可能需要对输入值对的乘积(诸如向量的数量积或点积)求和的算术操作。为此,可以在图9的操作S10’中生成输入值对的乘积作为操作数,并且可以通过结合图1的方法中的方法步骤S30迭代地执行方法步骤S10’来生成操作数。
参考图1和图9,可以对输入值对的指数求和(S12),并且可以将该输入值对的小数相乘(S14)。例如,FP16的第一输入值“xn”和第二输入值“yn”可以根据以下等式11来表达:
Figure BDA0003956343460000131
然后,第一输入值xn和第二输入值yn的乘积“vn”可以根据下面的等式12来表示:
Figure BDA0003956343460000132
如等式12所示,乘积“vn”的指数部分可以基于第一输入值xn的指数en(x)和第二输入值yn的指数en(y),并且乘积“vn”的小数部分可以基于第一输入值xn的小数
Figure BDA0003956343460000133
和第二输入值yn的小数/>
Figure BDA0003956343460000134
然后,可以生成操作数(S16)。例如,可以与在方法步骤S12中计算出的指数的和以及在方法步骤S14中计算出的小数的乘积相关地生成操作数。将在下文结合图10描述方法步骤S16的一个示例。
图10是在一个示例中进一步示出图9的方法中生成操作数的步骤(S16)的流程图。
参考图9和图10,可以确定操作数的符号位(S16_2)。例如,可以基于第一输入值“xn”的符号位sn(x)和第二输入值“yn”的符号位sn(y),根据下面的等式13来确定第一输入值“xn”和第二输入值“yn”的乘积“vn”的符号位“sn”。
sn=xor(sn(x),sn(y)) [等式13]
可以对小数的乘积进行移位(S16_4)。与前述一致,可以在图9的方法的步骤S14中计算出第一输入值xn和第二输入值yn的小数的乘积,并且可以基于在图9的方法的步骤S12中计算出的指数的和来对小数的乘积进行移位。将在下文结合图11描述方法步骤S16_4的一个示例。
图11是可以用于在执行浮点操作的方法期间对小数的乘积进行移位的伪代码110的部分列表。也就是说,在一些实施例中,可以运行图11的伪代码110来执行图10的操作S16_4。
参考图10和图11,可以确定移位量(行111)。例如,在等式12的乘积“vn”中,当应用了增益“g”(g=29)时,实数“fn”可以用下面的等式14来表示:
Figure BDA0003956343460000141
因此,可以根据图11的行111来定义移位量“r”。
可以根据移位量“r”的符号来确定移位方向(行112)。如图11所示,如果移位量“r”是负数,则可以通过将h(xn)和h(yn)的乘积向右移位-r并四舍五入对移位的值进行四舍五入来计算“fn”(行113);否则,如果移位量“r”是正数,则可以通过将h(xn)和h(yn)的乘积向左移位r来计算“fn”(行115)。伪代码110生成的实数“fn”可以作为图1的方法中的操作数之一来提供。
图12A和图12B是示出根据本发明构思的实施例的用于执行浮点操作的方法的相关流程图。更具体地,图12A的流程图是图1的方法或者对根据FP16表达的数字对的乘积求和的方法的示例,并且图12B在一个示例中进一步示出了图12A的方法的步骤S202。在下文中,在参考图12A和图12B做出的描述中不再对参考图8A和图8B做出的描述进行重复。
参考图8A、图8B和图12A,用于执行浮点操作的方法假设预先提供可以包括第一集合X(包括N个第一操作数X[0]至X[N-1])和第二集合Y(包括N个第二操作数Y[0]至Y[N-1])的输入数据IN。
因此,可以初始化变量(S200)。例如,如图12A所示,增益“g”可以被设置为29,与正中间值的第一和相对应的“psum”和与负中间值的第二和相对应的“nsum”可以被设置为0,并且索引“n”也可以被设置为0。可以从X和Y中选择输入值对(例如,第一输入值x[n]和第二输入值y[n])(S201)。也就是说,可以选择一对输入值。
然后,可以更新“psum”或“nsum”,并且“n”增加1(S202)。例如,如果在步骤S201中选择的第一输入值x[n]和第二输入值y[n]的乘积是正数,则可以更新“psum”,并且如果第一输入值x[n]和第二输入值y[n]的乘积是负数,则可以更新“nsum”。将在下文结合图12B描述方法步骤S202的一个示例。
然后,可以将“n”与N进行比较(S203),如果n不同于N(S203=否)(即,如果n小于N),则方法可以循环回到步骤S201和S202。否则,如果n等于N(即,如果完全计算了“psum”和“nsum”)(S203=是),则方法可以前进到方法步骤S204到S213,其中方法步骤S204至S213分别对应于图8A的方法的方法步骤S104至S113。
参考图12B,方法步骤S202’(例如,更新“psum”或“nsum”)可以包括从第一输入值x[n]中提取符号“sx”、指数“ex”和小数“mx”(S202_1)。然后,可以确定第一输入值x[n]的指数“ex”是否为0(S202_2)。如果指数ex是0(S202=是)(即,如果第一输入值x[n]是次正规数),则指数“ex”可以被设置为1(S202_3),并且“fx”可以被设置为“m”。如果指数“ex”非零(S202_2=否)(即,如果第一输入值x[n]是正规数),则“fx”可以通过向“mx”添加隐藏前导位来设置(S202_4)。
然后,可以从第二输入值y[n]中提取符号“sy”、指数“ey”和小数my(S202_5)。然后,可以确定第二输入值y[n]的指数“ey”是否为0(S202_6)。因此,如果指数“ey”是0(S202_6=是)(即,如果第二输入值y[n]是次正规数),则指数“ey”可以被设置为1,并且“fy”可以被设置为“m”(S202_7)。然而,如果指数“ey”非零(S202_6=否)(即,如果第二输入值y[n]是正规数),则“fy”可以通过向“my”添加隐藏前导位来设置(S202_8)。
然后,可以执行移位(S202_9)。例如,可以根据第一输入值x[n]的指数ex[n]和第二输入值y[n]的指数ey[n]来计算移位量“r”。如果移位量“r”是负数,则可以执行右移位和四舍五入;如果移位量“r”是正数,则可以执行左移位。
可以将第一输入值x[n]的符号“sx”与第二输入值y[n]的符号“sy”进行比较(S202_10)。如果这两个符号相同(S202_10=是),则“frac”可以加到“psum”(S202_11);否则,如果这些符号不同,则“frac”可以加到“nsum”(S202_12)。
图13是根据本发明构思的实施例的可以用于执行浮点操作的系统130的框图。也就是说,在一些实施例中,系统130可以运行执行与本发明构思的实施例一致的浮点操作的方法。
参考图1和图13,系统130可以包括增益计算电路132、归一化电路134、定点操作电路136和后处理电路138。这里,增益计算电路132、归一化电路134、定点操作电路136和后处理电路138中的每一个可以以硬件、固件和/或软件来不同地配置。例如,增益计算电路132、归一化电路134、定点操作电路136和后处理电路138中的每一个可以被实现为一个或多个可编程组件,诸如中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)和神经处理单元(NPU)。可替代地或附加地,增益计算电路132、归一化电路134、定点操作电路136和后处理电路138中的每一个可以被实现为可重新配置的组件(诸如现场可编程门阵列(FPGA))或者被实现为被配置为执行一个或多个功能的组件,诸如知识产权(IP)核心。
增益计算电路132可以用于执行图1的方法的步骤S30。例如,增益计算电路132可以接收操作数(OP),并且基于操作数OP的指数范围来计算增益“g”。
归一化电路134可以用于执行图1的方法的步骤S50。例如,归一化电路134可以接收操作数OP和增益“g”,并且通过将增益“g”应用于操作数OP来生成具有定点格式的中间值(INT)。
定点操作电路136可以用于执行图1的方法的步骤S70。例如,定点操作电路136可以接收定点中间值INT,并且通过对中间值INT执行一个或多个算术操作来生成根据特定定点格式的定点结果值(RES)。
后处理电路138可以用于执行图1的方法中的步骤S90。例如,后处理电路138可以接收定点结果值RES,并且使用定点结果值RES来生成根据特定浮点格式的浮点输出值(OUT)。
图14是根据本发明构思的实施例的系统140的框图。如图14所示,系统140一般可以包括处理器141和存储器142,其中处理器141被配置为执行一个或多个浮点操作。
系统140可以以硬件、固件和/或软件来不同地实现,使得处理器141运行根据存储在存储器142中的程序代码定义的指令。在一些实施例中,系统140可以是独立的计算系统,诸如下文结合图15描述的系统。可替代地,系统140可以被实现为更通用(或更高能力)的系统的部分,诸如其中处理器141和存储器142通常集成在单个芯片内的片上系统(SoC)、包括处理器141和存储器142的模块以及包括处理器141和存储器142的板(例如,印刷电路板)等。
处理器141可以与存储器142通信,读取存储在存储器142中的指令和/或数据,并将数据写入存储器142。如图14所示,处理器141可以包括地址生成器141_1、指令高速缓存141_2、获取电路141_3、解码电路141_4、运行电路141_5和寄存器141_6。
地址生成器141_1可以生成用于读取指令和/或数据的地址,并将生成的地址提供给存储器142。例如,地址生成器141_1可以接收解码电路141_4通过解码指令而提取出的信息,并且基于接收到的信息来生成地址。
指令高速缓存141_2可以接收来自存储器142中与地址生成器141_1生成的地址相对应的区域的指令,并临时存储接收到的指令。通过运行预先存储在指令高速缓存141_2中的指令,可以减少运行指令所花费的总时间。
获取电路141_3可以获取存储在指令高速缓存141_2中的至少一条指令,并将获取的指令提供给解码电路141_4。在一些实施例中,获取电路141_3可以获取用于执行浮点操作的至少部分的指令,并将获取的指令提供给解码电路141_4。
解码电路141_4可以从获取电路141_3接收获取的指令,并解码获取的指令。如图14所示,解码电路141_4可以向地址生成器141_1和运行电路141_5提供通过解码指令而提取出的信息。
运行电路141_5可以从解码电路141_4接收经解码的指令,并访问寄存器141_6。例如,运行电路141_5可以基于从解码电路141_4接收到的经解码的指令来访问寄存器141_6中的至少一个,并且执行浮点操作的至少部分。
寄存器141_6可以被运行电路141_5访问。例如,寄存器141_6可以响应于运行电路141_5的访问向运行电路141_5提供数据、或者响应于运行电路141_5的访问存储从运行电路141_5提供的数据。此外,寄存器141_6可以存储从存储器142读取的数据或者存储要存储在存储器142中的数据。例如,寄存器141_6可以接收来自存储器142中与由地址生成器141_1生成的地址相对应的区域的数据,并存储接收到的数据。此外,寄存器141_6可以向存储器142提供要被写入存储器142中与地址生成器141_1生成的地址相对应的区域的数据。
存储器142可以具有被配置为存储指令和/或数据的任意结构。例如,存储器142可以包括诸如静态随机访问存储器(SRAM)或DRAM的易失性存储器、或者诸如闪存或电阻式随机访问存储器(RRAM)的非易失性存储器。
图15是根据本发明构思的实施例的能够执行浮点操作的计算系统150的框图。
在一些实施例中,计算系统150可以包括固定的计算系统(诸如台式计算机、工作站或服务器)或者便携式计算系统,诸如笔记本计算机。计算系统150可以包括至少一个处理器151、输入/输出(I/O)接口152、网络接口153、存储器子系统154、存储装置155和总线156,并且至少一个处理器151、I/O接口152、网络接口153、存储器子系统154和存储装置155可以经由总线156彼此通信。
至少一个处理器151可以被称为至少一个处理单元,并且可以像CPU、NPU和DSP一样编程。例如,至少一个处理器151可以经由总线156访问存储器子系统154,并执行存储在存储器子系统154中的指令。在一些实施例中,计算系统150还可以包括加速器,作为被设计为高速执行特定功能的专用硬件。
I/O接口152可以包括输入设备(诸如键盘和定点设备)和/或输出设备(诸如显示设备和打印机)或者提供对输入设备和/或输出设备的访问。用户可以通过I/O接口152启动程序155_1的运行和/或数据155_2的加载,并检查程序155_1的运行结果。
网络接口153可以提供对计算系统150外部网络的访问。例如,网络可以包括多个计算系统和/或通信链路,其中每个通信链路可以包括一个或多个硬连线链路、一个或多个光连接链路和/或一个或多个无线链路。
存储器子系统154可以存储程序155_1或程序155_1的至少部分,以执行上文参考附图描述的浮点操作,并且至少一个处理器151可以通过运行存储在存储器子系统154中的程序(或指令)来执行包括在浮点操作中的至少一些操作。存储器子系统154可以包括只读存储器(ROM)、随机访问存储器(RAM)等。
存储装置155可以包括非暂时性计算机可读存储介质,并且即使在计算系统150的电源被切断时,也不会丢失存储的数据。例如,存储装置155可以包括非易失性存储设备,并且包括诸如磁带、光盘或磁盘的存储介质。此外,存储装置155可以是可从计算系统150拆卸的。如图15所示,存储装置155可以存储程序155_1和数据155_2。
在由至少一个处理器151运行之前,程序155_1的至少部分可以被加载到存储子系统154上。程序155_1可以包括一系列指令。在一些实施例中,存储装置155可以存储使用编程语言编辑的文件,并且通过编译器等根据文件生成的程序155_1或者程序155_1的至少部分可以被加载到存储器子系统154上。
数据155_2可以包括与浮点操作相关联的数据。例如,数据155_2可以包括浮点操作的操作数、中间值、结果值和/或输出值。
尽管已参考本发明构思的实施例具体示出和描述了本发明构思,但应该理解,在不脱离所附权利要求的精神和范围的情况下,可以在形式和细节上对本发明构思进行各种改变。

Claims (20)

1.一种执行浮点操作的方法,所述方法包括:
获得操作数,其中,所述操作数中的每一个以浮点格式表达;
基于所述操作数的操作数指数的范围来计算增益;
通过将所述增益应用于操作数来生成中间值,其中,所述中间值中的每一个以定点格式表达;
通过对所述中间值执行算术操作来生成定点结果值,其中,所述定点结果值以定点格式表达;以及
根据所述定点结果值来生成浮点输出值,其中,所述浮点输出值以浮点格式表达。
2.根据权利要求1所述的方法,其中,计算增益包括:
获得所述操作数指数的最大值和最小值;以及
基于所述操作数指数的最大值和最小值之间的差来计算增益。
3.根据权利要求2所述的方法,其中,所述操作数指数的最大值和最小值分别是所述浮点格式的最大指数和最小指数。
4.根据权利要求3所述的方法,其中,所述浮点格式是半精度浮点格式,并且
基于所述操作数指数的最大值和最小值之间的差来计算增益包括:从所述半精度浮点格式的最大指数和所述半精度浮点格式的最小指数之间的差减去1。
5.根据权利要求1所述的方法,其中,基于所述操作数指数的范围来计算增益包括:基于定点格式的数位的数量来计算增益。
6.根据权利要求1所述的方法,其中,通过对所述中间值执行算术操作来生成定点结果值包括:
计算所述中间值中的正中间值的第一和;
计算所述中间值中的负中间值的第二和;以及
基于所述第一和与所述第二和之间的差来计算所述中间值的和。
7.根据权利要求1所述的方法,其中,根据所述定点结果值来生成浮点输出值包括:
对包括所述定点结果值的最高有效位并排除所述定点结果值的符号位的连续零的数量进行计数,以生成计数值;以及
基于所述增益和所述计数值来计算所述浮点输出值的指数和小数。
8.根据权利要求1所述的方法,其中,根据所述定点结果值来生成浮点输出值包括:
将浮点输出值设置为以浮点格式表达的值;以及
如果所述定点结果值超出浮点格式的范围,则指示正无穷和负无穷中的一个。
9.根据权利要求1所述的方法,其中,对于操作数中的每一个,获得操作数包括:
将输入值对的指数相加,以生成所述输入值对的指数的和;以及
将所述输入值对的小数相乘,以生成小数的乘积,其中,所述输入值对中的每一个值以浮点格式表达。
10.根据权利要求9所述的方法,其中,对于操作数中的每一个,获得操作数还包括:
基于所述输入值对的符号位来确定符号位;以及
基于所述输入值对的指数的和来对所述小数的乘积进行移位。
11.根据权利要求1所述的方法,其中,所述定点格式是符号幅度格式。
12.一种执行浮点操作的系统,所述系统包括:
增益计算电路,被配置为获得操作数并且基于操作数指数的范围来计算增益,其中,所述操作数中的每一个以浮点格式表达;
归一化电路,被配置为通过将所述增益应用于操作数来生成中间值,其中,所述中间值中的每一个以定点格式表达;
定点操作电路,被配置为通过对所述中间值执行算术操作来生成定点结果值,其中,所述定点结果值以定点格式表达;以及
后处理电路,被配置为将所述定点结果值变换为浮点输出值,其中,所述浮点输出值以浮点格式表达。
13.根据权利要求12所述的系统,其中,所述增益计算电路还被配置为计算操作数的最大值和最小值之间的差,并且基于所述差来计算增益。
14.根据权利要求13所述的系统,其中,所述最大值和最小值分别是所述浮点格式的最大指数和所述浮点格式的最小指数。
15.根据权利要求14所述的系统,其中,所述浮点格式是半精度浮点格式,并且所述增益计算电路还被配置为通过从所述半精度浮点格式的最大指数和所述半精度浮点格式的最小指数之间的差减去1来计算增益。
16.根据权利要求12所述的系统,其中,所述增益计算电路还被配置为基于定点格式的数位的数量来计算增益。
17.根据权利要求12所述的系统,其中,所述定点操作电路还被配置为计算所述中间值中的正中间值的第一和,计算所述中间值中的负中间值的第二和,确定所述第一和与所述第二和之间的差,并且基于所述第一和与所述第二和之间的差来计算所述中间值的和。
18.根据权利要求12所述的系统,其中,所述后处理电路还被配置为对包括所述定点结果值的最高有效位且排除所述定点结果值的符号位的连续零的数量进行计数以生成计数值,并且基于所述增益和所述计数值来计算所述浮点输出值的指数和小数。
19.根据权利要求12所述的系统,还包括:
浮点操作电路,被配置为通过将输入值对的指数相加并将所述输入值对的小数相乘来生成所述操作数中的每一个,其中,所述输入值对中的每一个值以浮点格式表达。
20.一种执行浮点操作的系统,所述系统包括:
处理器;以及
存储使处理器能够执行浮点操作的指令的非暂时性存储介质,
其中,所述浮点操作包括:
获得操作数,其中,所述操作数中的每一个以浮点格式表达;
基于所述操作数的操作数指数的范围来计算增益;
通过将所述增益应用于操作数来生成中间值,其中,所述中间值中的每一个以定点格式表达;
通过对所述中间值执行算术操作来生成定点结果值,其中,所述定点结果值以定点格式表达;以及
将所述定点结果值变换为浮点输出值,其中,所述浮点输出值以浮点格式表达。
CN202211466221.9A 2021-11-24 2022-11-22 执行浮点操作的系统和方法 Pending CN116166217A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2021-0163767 2021-11-24
KR1020210163767A KR20230076641A (ko) 2021-11-24 2021-11-24 부동-소수점 연산을 위한 장치 및 방법

Publications (1)

Publication Number Publication Date
CN116166217A true CN116166217A (zh) 2023-05-26

Family

ID=86383785

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211466221.9A Pending CN116166217A (zh) 2021-11-24 2022-11-22 执行浮点操作的系统和方法

Country Status (4)

Country Link
US (1) US20230161555A1 (zh)
KR (1) KR20230076641A (zh)
CN (1) CN116166217A (zh)
TW (1) TW202333041A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117785108A (zh) * 2024-02-27 2024-03-29 芯来智融半导体科技(上海)有限公司 一种前导数处理方法、系统、设备及存储介质

Also Published As

Publication number Publication date
US20230161555A1 (en) 2023-05-25
KR20230076641A (ko) 2023-05-31
TW202333041A (zh) 2023-08-16

Similar Documents

Publication Publication Date Title
CN110036368B (zh) 用于执行算术运算以累加浮点数的装置及方法
CN107608715B (zh) 用于执行人工神经网络正向运算的装置及方法
CN107077416B (zh) 用于以选择性舍入模式进行向量处理的装置和方法
US10491239B1 (en) Large-scale computations using an adaptive numerical format
US10579338B2 (en) Apparatus and method for processing input operand values
EP3769208B1 (en) Stochastic rounding logic
Murillo et al. Energy-efficient MAC units for fused posit arithmetic
CN116466910A (zh) 一种基于浮点数的查表方法、装置、电子设备及存储介质
CN114970807A (zh) Softmax和指数在硬件中的实施
US20220291901A1 (en) Data processing method for processing unit, electronic device and computer readable storage medium
CN116166217A (zh) 执行浮点操作的系统和方法
CN114341796A (zh) 带符号多字乘法器
CN113902089A (zh) 加速激活函数运算的装置、方法及存储介质
CN113296732B (zh) 数据处理方法和装置,处理器及数据搜索方法和装置
CN111126557A (zh) 神经网络量化、应用方法、装置和计算设备
US11551087B2 (en) Information processor, information processing method, and storage medium
CN115268832A (zh) 浮点数取整的方法、装置以及电子设备
CN114860193A (zh) 一种用于计算Power函数的硬件运算电路及数据处理方法
Hass Synthesizing optimal fixed-point arithmetic for embedded signal processing
CN112783470A (zh) 一种用于执行浮点对数运算的装置和方法
US20090094306A1 (en) Cordic rotation angle calculation
US20240086152A1 (en) Calculation unit for multiplication and accumulation operations
US20230334117A1 (en) Method and system for calculating dot products
Iyer et al. Generalised Algorithm for Multiplying Binary Numbers Via Vedic Mathematics
CN112862086A (zh) 一种神经网络运算处理方法、装置及计算机可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication