CN115658004A - 用于执行浮点型数据运算的方法和装置 - Google Patents
用于执行浮点型数据运算的方法和装置 Download PDFInfo
- Publication number
- CN115658004A CN115658004A CN202211577034.8A CN202211577034A CN115658004A CN 115658004 A CN115658004 A CN 115658004A CN 202211577034 A CN202211577034 A CN 202211577034A CN 115658004 A CN115658004 A CN 115658004A
- Authority
- CN
- China
- Prior art keywords
- data
- mantissa
- smaller
- operated
- linear interpolation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本公开提出了用于执行浮点型数据运算的方法和装置。该方法包括:通过比较器对第一数据和第二数据进行比较,以确定其中较小的数据,其中所述第一数据和所述第二数据是具有浮点型数据的相同数据存储类型的待运算数据;通过移位器对所述其中较小的数据的尾数部分进行右移,使得所述其中较小的数据的指数部分与其中较大的数据的指数部分相同;通过加法器对所述第一数据的尾数部分和所述第二数据的尾数部分进行加法运算;基于所述加法运算的结果以及所述其中较大的数据的指数部分,确定所述待运算数据的加法结果。本公开还提出了一种用于执行浮点型数据的双线性插值运算的方法和相对应的装置。
Description
技术领域
本公开涉及一种用于执行浮点型数据运算的方法和相对应的装置。此外,本公开还涉及一种用于执行浮点型数据的双线性插值运算的方法和相对应的装置。
背景技术
在数据处理中,数据、尤其是浮点数常常以特定数据存储类型来被存储和运算。常用的数据存储类型包括半精度浮点FP16、单精度浮点FP32、双精度浮点FP64等等。这些数据、尤其是浮点数通常被用于在处理器、特别是高性能处理器中的数据处理、浮点数运算、滤波等等。
在进行数据处理时,不可避免地要进行以特定数据存储类型的浮点数的加法运算。对此,需要将两个浮点数的指数部分对齐、也就是说使这两个浮点数的指数部分相同,从而能够对尾数部分直接进行加法运算。在相关技术中,通常通过将较大的数的尾数部分左移来实现加法运算,然而尾数部分的左移会相对应地占用大量的电路资源和面积。
发明内容
本公开提出了一种用于执行浮点型数据运算的方法和相对应的装置,该方法和该装置能够在精度损失微小的情况下显著减少所需的计算资源和开销。
按照本公开的第一方面,提出了一种用于执行浮点型数据运算的方法,该方法包括如下步骤:
通过比较器对第一数据和第二数据进行比较,以确定其中较小的数据,其中所述第一数据和所述第二数据是具有浮点型数据的相同数据存储类型的待运算数据;
通过移位器对所述其中较小的数据的尾数部分进行右移,使得所述其中较小的数据的指数部分与其中较大的数据的指数部分相同;
通过加法器对所述第一数据的尾数部分和所述第二数据的尾数部分进行加法运算;
基于所述加法运算的结果以及所述其中较大的数据的指数部分,确定所述待运算数据的加法结果。
通过对所述其中较小的数据的尾数部分进行右移来进行加法运算。以这种方式,虽然会造成一定的精度损失,但是精度损失往往十分微小,尤其是在两个数据的大小相差较大时可以忽略不计,同时由于右移而使需要运算的位数减少,可以显著减少所需的计算资源和开销,进而可以提高处理器的性能。
在一些实施例中,所述待运算数据例如还可包括符号位,其中通过加法器对所述第一数据的尾数部分和所述第二数据的尾数部分进行加法运算还可包括:根据所述待运算数据的符号位来确定所述第一数据的尾数部分和所述第二数据的尾数部分的符号。
在一些实施例中,所述其中较小的数据例如可以是指数部分较小的数据。
在一些实施例中,所述数据存储类型例如可以是半精度浮点FP16、单精度浮点FP32或者双精度浮点FP64,等等。
在一些实施例中,通过移位器对所述其中较小的数据的尾数部分进行右移例如可包括:响应于所述其中较小的数据的尾数部分被右移变为零,停止所述右移。
在一些实施例中,通过移位器对所述其中较小的数据的尾数部分进行右移例如还可包括:通过转换器将所述第一数据和所述第二数据转换成补码形式,然后进行所述右移。
在一些实施例中,通过移位器对所述其中较小的数据的尾数部分进行右移例如还可包括:通过转换器将所述第一数据和所述第二数据的尾数部分转换成补码形式,然后进行所述右移。
在一些实施例中,通过移位器对所述其中较小的数据的尾数部分进行右移例如还可包括:通过转换器将所述第一数据的符号位和尾数部分以及所述第二数据的符号位和尾数部分转换成补码形式,然后将所述其中较小的数据的转换成补码形式的符号位和尾数部分一起进行右移。
在一些实施例中,通过加法器对所述第一数据的尾数部分和所述第二数据的尾数部分进行加法运算例如还可包括:对转换成补码形式的所述第一数据的符号位和尾数部分和所述第二数据的符号位和尾数部分进行加法运算,其中运算后的结果由补码转换成原码作为所述加法运算的结果。
按照本公开的第二方面,还提出了一种用于执行浮点型数据的双线性插值运算的方法,所述双线性插值包括第一次线性插值和第二次线性插值,其中所述第一次线性插值和所述第二次线性插值采用按照本公开的第一方面所述的方法来被计算,所述第一次线性插值的结果是所述第二次线性插值的待运算数据。
在浮点型数据的双线性插值中,通过应用按照本公开的第一方面所述的方法,两次线性插值都以右移方式来实现,可以在双线性插值中既保持较高的精度,又有效节省计算资源和开销。
在一些实施例中,所述第一次线性插值的待运算数据的权重的取值范围例如可为[0, 1]并且总和为1,和/或所述第二次线性插值的待运算数据的权重的取值范围例如可为[0, 1]并且总和为1。
在一些实施例中,所述双线性插值例如可通过补码进行运算。
在一些实施例中,所述双线性插值通过补码进行运算例如可包括:对于所述第一次线性插值和第二次线性插值,所述待运算数据均由原码转换成补码进行运算,运算后的结果均由补码转换成原码。
在一些实施例中,所述双线性插值通过补码进行运算例如可包括:将所述第一次线性插值的待运算数据由原码转换成补码,将所述第二次线性插值的结果由补码转换成原码。
按照本公开的第三方面,还提出了一种相对应的用于执行浮点型数据运算的装置,所述装置包括:
比较器,用于对第一数据和第二数据进行比较,以确定其中较小的数据,其中所述第一数据和所述第二数据是具有浮点型数据的相同数据存储类型的待运算数据;
移位器,用于对所述其中较小的数据的尾数部分进行右移,使得所述其中较小的数据的指数部分与其中较大的数据的指数部分相同;
加法器,用于对所述第一数据的尾数部分和所述第二数据的尾数部分进行加法运算,其中基于所述加法运算的结果以及所述其中较大的数据的指数部分,确定所述待运算数据的加法结果。
在一些实施例中,除了比较器、移位器和加法器之外,该装置例如还可包括转换器,用于原码与补码之间的转换。
针对按照本公开的第一方面的方法所描述的特征、细节和优点也相对应地适用于该装置。
按照本公开的第四方面,还提出了一种用于执行浮点型数据的双线性插值运算的装置,所述装置包括按照本公开的第三方面的装置。
在一些实施例中,按照本公开的第四方面的装置还包括乘法器,用于数据与权重的相乘。
针对按照本公开的第二方面的方法所描述的特征、细节和优点也相对应地适用于该装置。
按照本公开的各个方面所描述的方法和装置可以被用于高性能处理器中的数据处理、滤波或者在需要滤波的算术运算逻辑单元中使用。例如,以上方法和装置可以在GPU中的纹理单元(texture unit)中使用,以使纹理的过滤和混合速度加快,从而提高效率。
应当理解,上面所提到的和随后还要阐述的特征不仅能以分别说明的组合而且能以其它组合或单独地来使用,而不脱离本公开的保护范围。
本公开的其它可能的设计方案、扩展方案和实现方案也包括本公开的之前或者在下文关于实施例所描述的特征的没有明确提到的组合。
附图说明
现在将参考附图来描述本公开的具体示例性实施例。然而,本公开可以以很多不同的形式来实施,并且不应当被解读为限于本文所阐述的实施例;相反,这些实施例被提供以便使该公开全面而完整,并且将向本领域技术人员完全表达本公开的范围。在对附图所示特定示例性实施例的详细描述中所使用的术语不旨在对本公开进行限制。
在附图中:
图1示出了按照本公开的用于执行浮点型数据运算的方法的一种实施例的示意性流程图;
图2示出了按照本公开的用于执行浮点型数据的双线性插值运算的方法的一种实施例的示意性流程图;
图3示出了按照本公开的用于执行浮点型数据的双线性插值运算的方法的另一种实施例的示意性流程图;
图4示出了按照本公开的用于执行浮点型数据的双线性插值运算的方法的另一种实施例的示意性流程图;
图5示出了按照本公开的用于执行浮点型数据运算的装置的一种实施例的示意图;以及
图6示出了按照本公开的计算设备的一种实施例的示意图。
具体实施方式
图1示出了按照本公开的用于执行浮点型数据运算的方法100的一种实施例的示意性流程图。该方法100包括如下步骤:步骤S101,通过比较器对第一数据和第二数据进行比较,以确定其中较小的数据,其中所述第一数据和所述第二数据是具有浮点型数据的相同数据存储类型的待运算数据;步骤S102,通过移位器对所述其中较小的数据的尾数部分进行右移,使得所述其中较小的数据的指数部分与其中较大的数据的指数部分相同;步骤S103,通过加法器对所述第一数据的尾数部分和所述第二数据的尾数部分进行加法运算;步骤S104,基于所述加法运算的结果以及所述其中较大的数据的指数部分,确定所述待运算数据的加法结果。以这种方式,虽然会造成一定的精度损失,但是精度损失往往十分微小,尤其是在两个数据的大小相差较大时可以忽略不计,同时由于右移而使需要运算的位数减少,可以显著减少所需的计算资源和开销,进而可以提高处理器的性能。
在一些实施例中,所述待运算数据还包括符号位,其中通过加法器对所述第一数据的尾数部分和所述第二数据的尾数部分进行加法运算还包括:根据所述待运算数据的符号位来确定所述第一数据的尾数部分和所述第二数据的尾数部分的符号。在这种情况下,尤其是在所述待运算数据中的至少一个为负数的情况下,通过所述待运算数据的符号,所述待运算数据的加法运算实际上也包含减法运算。
在一些实施例中,所述其中较小的数据是指数部分较小的数据。由此,只需要比较所述第一数据和所述第二数据的指数部分来比较这两个数据的大小,以节省计算资源和开销。在两个数据的指数部分相同的情况下,可以不经右移而直接对这两个数据的尾数部分进行加法运算。所述第一数据和所述第二数据的指数部分相差越大,所需右移的位数就越多。借此,该方法100所能节省的计算资源和开销就越多。
在一些实施例中,该方法100能应用于半精度浮点FP16、单精度浮点FP32或者双精度浮点FP64,但是并不限于以上数据存储类型。半精度浮点FP16、单精度浮点FP32或者双精度浮点FP64是二进制下的浮点型数据存储类型。
FP16是采用2字节进行编码存储的数据类型,其中FP16的符号位有1位,指数部分有5位,尾数部分有10位。FP32是采用4字节进行编码存储的数据类型,其中FP32的符号位有1位,指数部分有8位,尾数部分有23位。FP64是采用8字节进行编码存储的数据类型,其中FP64的符号位有1位,指数部分有11位,尾数部分有52位。这些数据存储类型以本领域公知的方式来表示相对应的以十进制形式所表示的浮点数。以FP32为例,FP32格式的浮点数p可以表示成sgn_p.exp_p.mant_p,其中sgn_p表示符号位——1位,exp_p表示指数部分——8位并且mant_p表示尾数部分——23位。所表示的十进制数为:(-1)sgn_p × M × 2E,其中M= 1 + (mant_p)10/223,(mant_p)10是尾数部分所表示的十进制数并且23是FP32的尾数部分的位数,在浮点数中隐去了小数点前面的1,所以补上小数点前的1之后M可以写成上述形式,其中E = (exp_p)10 – 127,(exp_p)10是指数部分所表示的十进制数并且127 = 28-1 –1,其中8是FP32的指数部分的位数。FP32可以表示的数据的范围大,为了保留精度,直接做左移操作后所得到的尾数部分会增加大量位,从而导致在高频处理器中一个时钟周期内往往无法实现,并且左移之后经过调整的数据位宽较大,尤其是在两个浮点数的大小相差较大的情况下,理论上可能增加多达28-1 = 255位(FP32的指数部分为8bit)。因此,该数据存储类型的指数部分的位数越多,该方法100所能节省的计算资源和开销就越多。
就上述三种数据存储类型而言,在使用该方法100的情况下,双精度浮点FP64所能节省的计算资源和开销最多,其次是单精度浮点FP32,再次是半精度浮点FP16。另外,本公开并不限于以上数据存储类型,其它数据存储类型也是可设想的。
在一些实施例中,针对所述右移,响应于所述其中较小的数据的尾数部分被右移变为零,停止所述右移。以这种方式,所述其中较小的数据的尾数部分仅被右移使得其尾数部分变为零就足够,由此减少了所述其中较小的数据的尾数部分需要被右移的位数,从而节省计算资源和开销。尤其是,所述其中较小的数据的尾数部分在被右移到使得所述其中较小的数据的指数部分与其中较大的数据的指数部分相同之前就已经变为零。在这种情况下不需要再进行右移,而是可以直接对待运算数据的尾数部分进行加法运算,使得计算得以简化,并且进一步节省计算资源和开销。由此,不仅由于相应尾数部分的实际需要进行加法运算的有效位数的减少而可以节省计算资源和开销,而且由于尾数部分需要被右移的位数减少,所以可以减少每右移一位所需的计算资源,从而可以显著减少所需的计算资源和开销。
在一些实施例中,针对所述右移,通过转换器将所述第一数据和所述第二数据转换成补码形式,然后进行所述右移。通过在所述右移以及必要时还包括后续的计算过程中采用具有该数据存储类型的数据的补码形式,有利的是:所述转换成补码形式更加合理,因为在补码形式的情况下正数和负数在进行右移时偏向数轴的方向相同,都是相对于真实数据偏向数轴的左边。如相关技术所公知的,数轴是直线上由无数个点组成的集合,规定右边为正方向,在这条直线上的两个数,右边的点表示的数总是大于左边的点表示的数,正数大于零,零大于负数。以如下示例来具体阐述补码的上述优点。例如,两个要被右移的数据为十进制的1.75和-0.75,分别可以表示成十六进制的01.11和十六进制的11.01。在采用补码的情况下,1.75的十六进制01.11右移1位后得到十六进制的00.11,即十进制的0.75,相对于1.75除以2(每右移一位,就相当于数据除以2)得到的真实数据0.875,偏向数轴的左边(0.75在0.875的左边)。同样,在采用补码的情况下,-0.75的十六进制11.01右移1位后得到十六进制11.10,即十进制的-0.5,相对于-0.75除以2得到的真实数据-0.375,同样偏向数轴的左边(-0.5在-0.375的左边)。这使得对于补码而言无论是正数还是负数都可以采取相同的计算规则,从而节省计算开销并降低复杂度。
在一些实施例中,针对所述右移,通过转换器将所述第一数据和所述第二数据的尾数部分转换成补码形式,然后进行所述右移。通过只将尾数部分转换成补码形式,还可以减少对并未涉及所述右移的其它部分、例如指数部分的不必要的补码转换的计算开销。
在一些实施例中,针对所述右移,通过转换器将所述第一数据的符号位和尾数部分以及所述第二数据的符号位和尾数部分转换成补码形式,然后将所述其中较小的数据的转换成补码形式的符号位和尾数部分一起进行右移。以这种方式,还可以使符号位与尾数部分直接一起进行右移,不必在后续的加法运算中根据符号位来确定所述待运算数据、尤其是其尾数部分的符号,从而简化后续的计算过程。
在一些实施例中,针对所述加法运算,对转换成补码形式的所述第一数据的符号位和尾数部分和所述第二数据的符号位和尾数部分一起进行加法运算,其中运算后的结果由补码转换成原码,作为所述加法运算的结果。以这种方式,在所述待运算数据中的至少一个为负数的情况下,可以直接使减法运算转换成加法运算,从而进一步简化计算并且节省计算资源和开销。
图2示出了按照本公开的用于执行浮点型数据的双线性插值运算的方法的一种实施例的示意性流程图。双线性插值包括第一次线性插值和第二次线性插值。双线性插值的表达式例如可以写为:
第一次线性插值:
result_ab = a*u+b*v
result_cd = c*u+d*v
第二次线性插值:
result_abcd = result_ab *m + result_cd *n
其中a、b、c和d为双线性插值的4个输入,它们是浮点型数据,u和v是第一次线性插值的插值权重,m和n是第二次线性插值的插值权重。
在该方法200中,作为第一次线性插值的待运算数据,双线性插值的4个输入a、b、c和d分别与对应的权重u和v相乘。相乘后的结果按照本公开的用于执行浮点型数据运算的方法来进行运算,从而得到所述第一次线性插值的结果result_ab和result_cd。第一次线性插值的结果result_ab和result_cd是第二次线性插值的待运算数据,分别与对应的权重m和n相乘。相乘后的结果再次按照本公开的用于执行浮点型数据运算的方法来进行运算,从而得到所述第二次线性插值的结果result_abcd,也就是该双线性插值的结果。上述与权重的相乘可以通过乘法器来实现。在浮点型数据的双线性插值中,通过采用按照本公开的用于执行浮点型数据运算的方法,第一次线性插值和第二次线性插值都以右移方式来实现,可以在双线性插值中既保持较高的精度,又显著节省计算资源和开销。
在一些实施例中,所述第一次线性插值的待运算数据的权重的取值范围为[0, 1]并且总和为1,和/或所述第二次线性插值的待运算数据的权重的取值范围为[0, 1]并且总和为1。即u、v、m、n的取值范围为[0, 1],其中u + v = 1并且m + n = 1。按照双线性插值的应用场景,通过对待运算数据的权重的调整,可以灵活地调整双线性插值的结果。例如,在数字图像和视频处理领域,未知点的函数值、例如像素的像素值可以按照上述权重通过对相邻四个点的双线性插值来确定。
在一些实施例中,所述双线性插值通过补码进行运算。如上文所阐述的,转换成补码形式会更加合理。在补码形式的情况下正数和负数在进行右移时偏向数轴的方向相同,都是相对于真实数据偏向数轴的左边,从而使无论是正数还是负数都可以采取相同的计算规则,从而节省计算开销并降低复杂度。还有利的是,在运算数据中的至少一个为负数的情况下,使用补码可以直接将减法运算转换成加法运算,从而简化计算并且节省计算开销。
图3示出了按照本公开的用于执行浮点型数据的双线性插值运算的方法的另一种实施例的示意性流程图。在该方法300中,所述双线性插值通过补码来进行运算,其中对于所述第一次线性插值和第二次线性插值,将所述第一次线性插值和第二次线性插值的待运算数据由原码转换成补码,运算后的结果均由补码转换成原码。上述转换可以通过转换器来实现。由此,第二次线性插值的计算过程与第一次线性插值的计算过程完全相同,进而可以采用相同的电路资源和面积,从而降低了复杂度并且节省计算资源和开销。虽然,由于第一次线性插值与第二次线性插值之间存在对第一次线性插值的结果的从补码到原码的转换和从原码到补码的转换,可能会进一步造成精度损失,但是在大多数情况下,这种精度损失十分微小,可以忽略不计。
图4示出了按照本公开的用于执行浮点型数据的双线性插值运算的方法的另一种实施例的示意性流程图。在该方法400中,所述双线性插值通过补码来进行运算,其中将所述第一次线性插值的待运算数据由原码转换成补码,将所述第二次线性插值的结果由补码转换成原码。按照图4,返回的补码形式的第一次线性插值的结果不经从补码到原码的转换而直接被用于进行第二次线性插值。在这种情况下,由于第一次线性插值的结果已经是补码形式,所以不需要再次进行从原码到补码的转换。第二次线性插值可以在无需对第一次线性插值的结果进行原码与补码之间的转换的情况下直接进行。由于减少了对第一次线性插值的结果的从补码到原码的转换和从补码到原码的转换,可以减少精度损失,同时可以减少计算开销。
图5示出了按照本公开的用于执行浮点型数据运算的装置的一种实施例的示意图。其中,装置50包括:比较器51,用于对第一数据和第二数据进行比较,以确定其中较小的数据,其中所述第一数据和所述第二数据是具有浮点型数据的相同数据存储类型的待运算数据;移位器52,用于对所述其中较小的数据的尾数部分进行右移,使得所述其中较小的数据的指数部分与其中较大的数据的指数部分相同;加法器53,用于对所述第一数据的尾数部分和所述第二数据的尾数部分进行加法运算,其中基于所述加法运算的结果以及所述其中较大的数据的指数部分,确定所述待运算数据的加法结果。该装置50被配置用于执行按照本公开的用于执行浮点型数据运算的方法。
在一些实施例中,该装置50还可以包括转换器。用于原码与补码之间的转换。以FP32格式的数据p = sgn_p.exp_p.mant_p为例,该转换器可以被配置用于将该数据p转换成补码。替代地,该转换器可以被配置用于将尾数部分转换成补码。替代地,该转换器还可以被配置用于将符号位与尾数部分一起转换成补码。相对应地,该转换器还可以被配置用于将运算后的结果由补码转换成原码。
在一些实施例中,按照本公开的用于执行浮点型数据的双线性插值运算的装置可以包括该装置50。
在一些实施例中,按照本公开的用于执行浮点型数据的双线性插值运算的装置还可以包括乘法器,用于数据与权重的相乘。以数据a与权重u的乘法a*u为例,其中数据a为FP32格式,权重u为十进制的实数。乘法器可以被配置用于将权重u与a所表示的十进制数相乘并将结果转换成FP32格式。替代地,乘法器也可以被配置用于将权重u与a的尾数部分所表示的十进制数相乘并结合a的符号位及指数部分得出FP32格式的结果。
图6示出了按照本公开的计算设备的一种实施例的示意图。本公开的方法和装置可以使用计算机处理器、存储器单元、存储设备、计算机软件和其他组件在一台或更多台计算机或服务器或类似设备上实现。在此,计算机、服务器或其他包括处理器的设备统称为计算设备。如图6所示,计算设备60包括彼此通信耦合的处理系统61、一个或多个计算机可读介质62以及一个或多个I/O接口(输入/输出接口)63。尽管未示出,但是计算设备60还可以包括将各种组件彼此耦合的系统总线或其他数据和命令传送系统。系统总线可以包括不同总线结构的任何一个或组合,总线结构可以是诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用各种总线架构中的任何一种的处理器或局部总线,或者还可以包括诸如控制和数据线。
处理系统61代表使用硬件执行一个或多个操作的功能。因此,处理系统61被图示为包括可被配置为处理器、功能块等的硬件元件64。这可以包括在硬件中实现专用集成电路或使用一个或多个半导体形成的其它逻辑器件。硬件元件64不受其形成材料或其中采用的处理机构的限制。例如,处理器可以由(多个)半导体和/或晶体管(例如,电子集成电路(IC))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质62被图示为包括存储器/存储装置65。存储器/存储装置65表示与一个或多个计算机可读介质相关联的存储器/存储装置。存储器/存储装置65可以包括易失性存储介质(诸如随机存取存储器(RAM))和/或非易失性存储介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置65可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。示例性地,存储器/存储装置65可以用于存储上文实施例中提及的各种图像数据、场景数据等。计算机可读介质62可以以下面进一步描述的各种其他方式进行配置。
一个或多个I/O接口63代表允许用户向计算设备60键入命令和信息并且还允许使用各种输入/输出设备将信息呈现给用户和/或发送给其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置为检测物理触摸的容性或其他传感器)、相机(例如,可以采用可见或不可见的波长(诸如红外频率)将不涉及触摸的运动检测为手势)、网卡、接收机等等。输出设备的示例包括显示设备(例如,显示器或投影仪)、扬声器、打印机、触觉响应设备、网卡、发射机等。示例性地,在上文描述的实施例中,可以通过输入设备允许用户执行各种交互操作,可以通过输入设备允许用户输入对用户约束信息的配置,或者对随机引擎的权重的配置等。
计算设备60还包括应用66。应用66可以作为计算程序指令存储在存储器/存储装置65中。应用66可以连同处理系统61等一起实现本公开的方法和装置。
本公开可以在软件、硬件、元件或程序模块的一般上下文中描述各种技术。一般地,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本公开所使用的术语“模块”、“功能”等一般表示软件、固件、硬件或其组合。本公开所描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质传输。计算机可读介质可以包括可由计算设备60访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
与单纯的信号传输、载波或信号本身相反,“计算机可读存储介质”是指能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储装置、硬盘、盒式磁带、磁带,磁盘存储装置或其他磁存储设备,或其他存储设备、有形介质或适于存储期望信息并可以由计算机访问的制品。
“计算机可读信号介质”是指被配置为诸如经由网络将指令发送到计算设备60的硬件的信号承载介质。信号介质典型地可以将计算机可读指令、数据结构、程序模块或其他数据体现在诸如载波、数据信号或其它传输机制的调制数据信号中。信号介质还包括任何信息传递介质。作为示例而非限制,信号介质包括诸如有线网络或直接连线的有线介质以及诸如声、RF、红外和其它无线介质的无线介质。
如上所述,硬件元件64和计算机可读介质62代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以用于实现本公开描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅中的其它实现或其他硬件设备的组件。在这种上下文中,硬件元件可以作为执行由硬件元件所体现的指令、模块和/或逻辑所定义的程序任务的处理设备,以及用于存储用于执行的指令的硬件设备,例如,先前描述的计算机可读存储介质。
上述组合也可以用于实现本公开所述的各种技术和模块。因此,可以将软件、硬件或程序模块和其它程序模块实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件64体现的一个或多个指令和/或逻辑。计算设备60可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,例如通过使用处理系统的计算机可读存储介质和/或硬件元件64,可以至少部分地以硬件来实现将模块实现为可由计算设备60作为软件执行的模块。指令和/或功能可以由例如一个或多个计算设备60和/或处理系统61执行/可操作以实现本公开所述的技术、模块和示例。
本公开所描述的技术可以由计算设备60的这些各种配置来支持,并且不限于本公开所描述的技术的具体示例。
应当理解,为了清楚起见,参考不同的功能单元对本公开的实施例进行了描述。然而,将明显的是,在不偏离本公开的情况下,每个功能单元的功能可以被实现在单个单元中、实现在多个单元中、或作为其他功能单元的一部分来实现。例如,被说明成由单个单元执行的功能可以由多个不同的单元来执行。因此,对特定功能单元的参考仅被视为对用于提供所描述的功能的适当单元的参考,而不是表明严格的逻辑或物理结构或组织。因此,本公开可以被实施在单个单元中,或者可以在物理上和功能上被分布在不同的单元和电路之间。
本公开并不限于这里所描述的实施例以及其中所强调的方面。更确切地说,在通过权利要求书所说明的保护范围内,多个变型方案都是可能的,所述变型方案都在本领域技术人员的处理范围内。
Claims (18)
1.一种用于执行浮点型数据运算的方法,其特征在于,
通过比较器对第一数据和第二数据进行比较,以确定其中较小的数据,其中所述第一数据和所述第二数据是具有浮点型数据的相同数据存储类型的待运算数据;
通过移位器对所述其中较小的数据的尾数部分进行右移,使得所述其中较小的数据的指数部分与其中较大的数据的指数部分相同;
通过加法器对所述第一数据的尾数部分和所述第二数据的尾数部分进行加法运算;
基于所述加法运算的结果以及所述其中较大的数据的指数部分,确定所述待运算数据的加法结果。
2.根据权利要求1所述的方法,其特征在于,
所述待运算数据还包括符号位,其中通过加法器对所述第一数据的尾数部分和所述第二数据的尾数部分进行加法运算还包括:根据所述待运算数据的符号位来确定所述第一数据的尾数部分和所述第二数据的尾数部分的符号。
3.根据权利要求1或2所述的方法,其特征在于,
所述其中较小的数据是指数部分较小的数据。
4.根据权利要求1或2所述的方法,其特征在于,
所述数据存储类型是半精度浮点FP16、单精度浮点FP32或者双精度浮点FP64。
5.根据权利要求1或2所述的方法,其特征在于,
通过移位器对所述其中较小的数据的尾数部分进行右移包括:响应于所述其中较小的数据的尾数部分被右移变为零,停止所述右移。
6.根据权利要求1或2所述的方法,其特征在于,
通过移位器对所述其中较小的数据的尾数部分进行右移还包括:通过转换器将所述第一数据和所述第二数据转换成补码形式,然后进行所述右移。
7.根据权利要求1或2所述的方法,其特征在于,
通过移位器对所述其中较小的数据的尾数部分进行右移还包括:通过转换器将所述第一数据和所述第二数据的尾数部分转换成补码形式,然后进行所述右移。
8.根据权利要求2所述的方法,其特征在于,
通过移位器对所述其中较小的数据的尾数部分进行右移还包括:通过转换器将所述第一数据的符号位和尾数部分以及所述第二数据的符号位和尾数部分转换成补码形式,然后将所述其中较小的数据的转换成补码形式的符号位和尾数部分一起进行右移。
9.根据权利要求2所述的方法,其特征在于,
通过加法器对所述第一数据的尾数部分和所述第二数据的尾数部分进行加法运算还包括:对转换成补码形式的所述第一数据的符号位和尾数部分和所述第二数据的符号位和尾数部分进行加法运算,
其中运算后的结果由补码转换成原码作为所述加法运算的结果。
10.一种用于执行浮点型数据的双线性插值运算的方法,其特征在于,
所述双线性插值包括第一次线性插值和第二次线性插值,其中所述第一次线性插值和所述第二次线性插值采用根据权利要求1至9中任一项所述的方法来被计算,所述第一次线性插值的结果是所述第二次线性插值的待运算数据。
11.根据权利要求10所述的方法,其特征在于,
所述第一次线性插值的待运算数据的权重的取值范围为[0, 1]并且总和为1,和/或
所述第二次线性插值的待运算数据的权重的取值范围为[0, 1]并且总和为1。
12.根据权利要求10或11所述的方法,其特征在于,所述双线性插值通过补码进行运算。
13.根据权利要求12所述的方法,其特征在于,所述双线性插值通过补码进行运算包括:
对于所述第一次线性插值和第二次线性插值,所述待运算数据均由原码转换成补码来进行运算,运算后的结果均由补码转换成原码。
14.根据权利要求12所述的方法,其特征在于,所述双线性插值通过补码进行运算包括:
将所述第一次线性插值的待运算数据由原码转换成补码,将所述第二次线性插值的结果由补码转换成原码。
15.一种用于执行浮点型数据运算的装置,其特征在于,
所述装置包括:
比较器,用于对第一数据和第二数据进行比较,以确定其中较小的数据,其中所述第一数据和所述第二数据是具有浮点型数据的相同数据存储类型的待运算数据;
移位器,用于对所述其中较小的数据的尾数部分进行右移,使得所述其中较小的数据的指数部分与其中较大的数据的指数部分相同;
加法器,用于对所述第一数据的尾数部分和所述第二数据的尾数部分进行加法运算,其中基于所述加法运算的结果以及所述其中较大的数据的指数部分,确定所述待运算数据的加法结果。
16.根据权利要求15所述的装置,其特征在于,
所述装置还包括转换器,用于原码与补码之间的转换。
17.一种用于执行浮点型数据的双线性插值运算的装置,其特征在于,
所述装置包括根据权利要求15或16所述的装置。
18.根据权利要求17所述的用于执行浮点型数据的双线性插值运算的装置,其特征在于,
所述用于执行浮点型数据的双线性插值运算的装置还包括乘法器,用于数据与权重的相乘。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211577034.8A CN115658004A (zh) | 2022-12-09 | 2022-12-09 | 用于执行浮点型数据运算的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211577034.8A CN115658004A (zh) | 2022-12-09 | 2022-12-09 | 用于执行浮点型数据运算的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115658004A true CN115658004A (zh) | 2023-01-31 |
Family
ID=85019164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211577034.8A Pending CN115658004A (zh) | 2022-12-09 | 2022-12-09 | 用于执行浮点型数据运算的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658004A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5303174A (en) * | 1991-10-07 | 1994-04-12 | Nec Corporation | Floating pointing arithmetic operation system |
CN101650642A (zh) * | 2009-09-11 | 2010-02-17 | 杭州中天微系统有限公司 | 基于补码舍入的浮点加法装置 |
CN104423926A (zh) * | 2013-09-05 | 2015-03-18 | 阿尔特拉公司 | 浮点加法器电路 |
CN112463113A (zh) * | 2020-12-02 | 2021-03-09 | 中国电子科技集团公司第五十八研究所 | 浮点加法单元 |
CN113625989A (zh) * | 2021-07-16 | 2021-11-09 | 深圳云天励飞技术股份有限公司 | 数据运算装置、方法、电子设备及存储介质 |
CN114371827A (zh) * | 2020-10-15 | 2022-04-19 | 合肥君正科技有限公司 | 一种高性能浮点加法器的设计方法 |
-
2022
- 2022-12-09 CN CN202211577034.8A patent/CN115658004A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5303174A (en) * | 1991-10-07 | 1994-04-12 | Nec Corporation | Floating pointing arithmetic operation system |
CN101650642A (zh) * | 2009-09-11 | 2010-02-17 | 杭州中天微系统有限公司 | 基于补码舍入的浮点加法装置 |
CN104423926A (zh) * | 2013-09-05 | 2015-03-18 | 阿尔特拉公司 | 浮点加法器电路 |
CN114371827A (zh) * | 2020-10-15 | 2022-04-19 | 合肥君正科技有限公司 | 一种高性能浮点加法器的设计方法 |
CN112463113A (zh) * | 2020-12-02 | 2021-03-09 | 中国电子科技集团公司第五十八研究所 | 浮点加法单元 |
CN113625989A (zh) * | 2021-07-16 | 2021-11-09 | 深圳云天励飞技术股份有限公司 | 数据运算装置、方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1857925B1 (en) | Method and apparatus for decimal number multiplication using hardware for binary number operations | |
US20200218509A1 (en) | Multiplication Circuit, System on Chip, and Electronic Device | |
MX2008010873A (es) | Procesador de punto de flotacion con requerimientos de potencia reducidos para suprecision seleccionable. | |
JP3178746B2 (ja) | 浮動小数点数のためのフォーマット変換装置 | |
US5341320A (en) | Method for rapidly processing floating-point operations which involve exceptions | |
Hormigo et al. | Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest | |
US20170017467A1 (en) | Integer/floating point divider and square root logic unit and associates methods | |
JP3536063B2 (ja) | デジタル乗算システム | |
US6182100B1 (en) | Method and system for performing a logarithmic estimation within a data processing system | |
US4110831A (en) | Method and means for tracking digit significance in arithmetic operations executed on decimal computers | |
KR100919236B1 (ko) | 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법 | |
WO2021136259A1 (zh) | 浮点数乘法计算的方法、装置和算术逻辑单元 | |
US7814138B2 (en) | Method and apparatus for decimal number addition using hardware for binary number operations | |
CN115658004A (zh) | 用于执行浮点型数据运算的方法和装置 | |
CN114201140B (zh) | 指数函数处理单元、方法和神经网络芯片 | |
CN115268832A (zh) | 浮点数取整的方法、装置以及电子设备 | |
CN116166217A (zh) | 执行浮点操作的系统和方法 | |
CN116700664A (zh) | 一种确定浮点数平方根的方法及装置 | |
CN116700666A (zh) | 一种浮点数处理方法及装置 | |
US20220137925A1 (en) | Device and method for hardware-efficient adaptive calculation of floating-point trigonometric functions using coordinate rotate digital computer (cordic) | |
US6615228B1 (en) | Selection based rounding system and method for floating point operations | |
US20050246406A9 (en) | Emod a fast modulus calculation for computer systems | |
JPH09128213A (ja) | ブロックフローティング処理システムおよび方法 | |
US20050010632A1 (en) | Digital signal processor based on jumping floating-point arithmetic | |
Koppala et al. | Performance comparison of fast multipliers implemented on variable precision floating point multiplication algorithm |
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 |