CN105224284A - 一种浮点数处理方法及装置 - Google Patents

一种浮点数处理方法及装置 Download PDF

Info

Publication number
CN105224284A
CN105224284A CN201510629934.6A CN201510629934A CN105224284A CN 105224284 A CN105224284 A CN 105224284A CN 201510629934 A CN201510629934 A CN 201510629934A CN 105224284 A CN105224284 A CN 105224284A
Authority
CN
China
Prior art keywords
mantissa
floating number
result
module
floating
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
Application number
CN201510629934.6A
Other languages
English (en)
Other versions
CN105224284B (zh
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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology 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 Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201510629934.6A priority Critical patent/CN105224284B/zh
Publication of CN105224284A publication Critical patent/CN105224284A/zh
Application granted granted Critical
Publication of CN105224284B publication Critical patent/CN105224284B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明实施例公开了一种浮点数处理方法及装置,方法包括:获得第一目标浮点数X和第二目标浮点数Y;获得X与Y的运算法则;在X和Y均不为零的情况下,对阶X和Y;计算最终结果的阶码;将对阶后的X和Y的尾数分别进行分段,并分别计算X的尾数的每段数据与Y的尾数的每段数据的结果;根据计算结果,生成最终的尾数;根据最终的尾数和计算得到的阶码,生成计算结果;对生成的计算结果规格化处理,得到最终计算结果。应用本发明实施例,将高精度的浮点数的尾数进行分段,将每段尾数转化为单精度浮点数进行计算,使得不具备双精度浮点数计算能力的中低端GPU产品具备高精度浮点数的计算能力,提高了中低端GPU产品对高精度浮点数的计算能力。

Description

一种浮点数处理方法及装置
技术领域
本发明涉及计算机技术领域,特别涉及一种浮点数处理方法及装置。
背景技术
GPU(GraphicsProcessingUnit,图形处理单元),又称图形处理器、显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。
目前,GPU的浮点数计算性能比CPU的浮点数计算性能高很多,因此,GPU也被主要应用于浮点数计算。
但是,GPU制造商处于成本和市场划分的考虑,在高端GPU产品上会保留双精度浮点数的硬件计算单元,在中低端GPU产品上会缩减双精度浮点数的硬件计算单元,这就导致中低端GPU产品的双精度浮点数计算能力较差,甚至不具备双精度浮点数计算能力。
发明内容
本发明实施例的目的在于提供一种浮点数处理方法及装置,以使中低端GPU产品具备高精度浮点数的计算能力或提高中低端GPU产品对高精度浮点数的计算能力。
为达到上述目的,本发明实施例公开了一种浮点数处理方法,包括:
获得第一目标浮点数X和第二目标浮点数Y,其中,X=2Ex*MX,Y=2Ey*MY
获得X与Y的运算法则,所述运算法则为乘法或除法;
判断X和Y是否均不为零;
如果X和Y均不为零,则对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex≥Ey,则对阶后Y=2Ex*MY′,若Ex<Ey,则对阶后X=2Ey*MX′;
根据获得的运算法则以及对阶后的X和Y的阶码,计算最终结果的阶码;
将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;
根据获得的运算法则,分别计算X的尾数的每段数据与Y的尾数的每段数据的结果;
根据计算得到的X的尾数的每段数据与Y的尾数的每段数据的结果,生成最终的尾数;
根据生成的最终的尾数和计算得到的最终结果的阶码,生成计算结果;
对生成的计算结果规格化处理,得到最终计算结果。
可选的,所述第一目标浮点数和/或所述第二目标浮点数,包括:
双精度浮点数;或单精度扩展浮点数;或双精度扩展浮点数;或满足预设表达式的浮点数。
可选的,所述预设表达式,包括:
(-1)S*M*2E,其中,
(-1)S为符号位;M为有效数字,且1≤M<2;E为阶码。
可选的,尾数分段的位数不大于11。
可选的,若Ex≥Ey,所述将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数,包括:
X的尾数
MX=Mxn*(M)n+Mxn-1*(M)n-1+…+Mxn-i*(M)n-i+…+Mx0*(M)0
Y的尾数
MY′=My′n*(M)n+My′n-1*(M)n-1+…+My′n-i*(M)n-i+…+My′0*(M)0;其中,
n≥i≥0;M=2m;m≤11;
若Ex<Ey,所述将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数,包括:
X的尾数
MX′=Mx′n*(M)n+Mx′n-1*(M)n-1+…+Mx′n-j*(M)n-j+…+Mx′0*(M)0
Y的尾数
MY=Myn*(M)n+Myn-1*(M)n-1+…+Myn-j*(M)n-j+…+My0*(M)0
其中,
n≥j≥0;M=2m;m≤11。
为达到上述目的,本发明实施例公开了一种浮点数处理装置,包括:浮点数获得模块、运算法则获得模块、判断模块、对阶模块、第一计算模块、分段转换模块、第二计算模块、尾数生成模块、计算结果生成模块和规格化模块,其中,
所述浮点数获得模块,用于获得第一目标浮点数X和第二目标浮点数Y,其中,X=2Ex*MX,Y=2Ey*MY
所述运算法则获得模块,用于获得X与Y的运算法则,所述运算法则为乘法或除法;
所述判断模块,用于判断X和Y是否均不为零;
所述对阶模块,用于在所述判断模块判断X和Y均不为零的情况下,对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex≥Ey,则对阶后Y=2Ex*MY′,若Ex<Ey,则对阶后X=2Ey*MX′;
所述第一计算模块,用于根据所述运算法则获得模块获得的运算法则以及所述对阶模块对阶后的X和Y的阶码,计算最终结果的阶码;
所述分段转换模块,用于将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;
所述第二计算模块,用于根据所述运算法则获得模块获得的运算法则,分别计算X的尾数的每段数据与Y的尾数的每段数据的结果;
所述尾数生成模块,用于根据所述第二计算模块计算得到的X的尾数的每段数据与Y的尾数的每段数据的结果,生成最终的尾数;
所述计算结果生成模块,用于根据所述尾数生成模块生成的最终的尾数和所述第一计算模块计算得到的阶码,生成计算结果;
所述规格化模块,用于对所述计算结果生成模块生成的计算结果规格化处理,得到最终计算结果。
可选的,所述第一目标浮点数和/或所述第二目标浮点数,包括:
双精度浮点数;或单精度扩展浮点数;或双精度扩展浮点数;或满足预设表达式的浮点数。
可选的,所述预设表达式,包括:
(-1)S*M*2E,其中,
(-1)S为符号位;M为有效数字,且1≤M<2;E为阶码。
可选的,尾数分段的位数不大于11。
可选的,若Ex≥Ey,所述分段转换模块,具体用于:
X的尾数
MX=Mxn*(M)n+Mxn-1*(M)n-1+…+Mxn-i*(M)n-i+…+Mx0*(M)0
Y的尾数
MY′=My′n*(M)n+My′n-1*(M)n-1+…+My′n-i*(M)n-i+…+My′0*(M)0;其中,
n≥i≥0;M=2m;m≤11;
若Ex<Ey,所述分段转换模块,具体用于:
X的尾数
MX′=Mx′n*(M)n+Mx′n-1*(M)n-1+…+Mx′n-j*(M)n-j+…+Mx′0*(M)0
Y的尾数
MY=Myn*(M)n+Myn-1*(M)n-1+…+Myn-j*(M)n-j+…+My0*(M)0;其中,
n≥j≥0;M=2m;m≤11。
由上述的技术方案可见,本发明实施例提供了一种浮点数处理方法及装置,方法包括:获得第一目标浮点数X和第二目标浮点数Y,其中,X=2Ex*MX,Y=2Ey*MY;获得X与Y的运算法则,所述运算法则为乘法或除法;判断X和Y是否均不为零;如果X和Y均不为零,则对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex≥Ey,则对阶后Y=2Ex*MY′,若Ex<Ey,则对阶后X=2Ey*MX′;根据获得的运算法则以及对阶后的X和Y的阶码,计算最终结果的阶码;将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;根据获得的运算法则,分别计算X的尾数的每段数据与Y的尾数的每段数据的结果;根据计算得到的X的尾数的每段数据与Y的尾数的每段数据的结果,生成最终的尾数;根据生成的最终的尾数和计算得到的最终结果的阶码,生成计算结果;对生成的计算结果规格化处理,得到最终计算结果。
应用本发明实施例提供的技术方案,将高精度的浮点数的尾数进行分段,将每段尾数转化为单精度浮点数进行计算,使得不具备双精度浮点数计算能力的中低端GPU产品具备高精度浮点数的计算能力,提高了中低端GPU产品对高精度浮点数的计算能力。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种浮点数处理方法的流程示意图;
图2为本发明实施例提供的一种浮点数处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术问题,本发明实施例提供了一种浮点数处理方法及装置。下面首先对本发明实施例所提供的一种浮点数处理方法进行介绍。
图1为本发明实施例提供的一种浮点数处理方法的流程示意图,可以包括:
S101:获得第一目标浮点数X和第二目标浮点数Y,其中,X=2Ex*MX,Y=2Ey*MY
具体的,在实际应用中,第一目标浮点数和/或所述第二目标浮点数,可以包括:
双精度浮点数;或单精度扩展浮点数;或双精度扩展浮点数;或满足预设表达式的浮点数。
其中,上述预设表达式,可以包括:
(-1)S*M*2E,其中,
(-1)S为符号位;M为有效数字,且1≤M<2;E为阶码。
S102:获得X与Y的运算法则;
其中,所述运算法则为乘法或除法;
S103:判断X和Y是否均不为零;如果是,执行S104;
如果X和Y中有一个数为零,在所获得的运算法则为乘法的情况下,则将零确定为计算结果;
如果X和Y中有一个数为零,在所获得的运算法则为除法的情况下,判断被除数是零还是除数是零;如果被除数是零,则将零确定为计算结果;如果除数是零,则溢出报错。
S104:对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex≥Ey,则对阶后Y=2Ex*MY′,若Ex<Ey,则对阶后X=2Ey*MX′;
S105:根据获得的运算法则以及对阶后的X和Y的阶码,计算最终结果的阶码;
S106:将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;
具体的,在实际应用中,尾数分段的位数不大于11。在尾数分段不大于11的情况下,使得计算结果未超出单精度浮点数的表示范围。
具体的,若Ex≥Ey,X的尾数
MX=Mxn*(M)n+Mxn-1*(M)n-1+…+Mxn-i*(M)n-i+…+Mx0*(M)0
Y的尾数
MY′=My′n*(M)n+My′n-1*(M)n-1+…+My′n-i*(M)n-i+…+My′0*(M)0;其中,
n≥i≥0;M=2m;m≤11;
若Ex<Ey,X的尾数
MX′=Mx′n*(M)n+Mx′n-1*(M)n-1+…+Mx′n-j*(M)n-j+…+Mx′0*(M)0
Y的尾数
MY=Myn*(M)n+Myn-1*(M)n-1+…+Myn-j*(M)n-j+…+My0*(M)0
其中,
n≥j≥0;M=2m;m≤11。
S107:根据获得的运算法则,分别计算X的尾数的每段数据与Y的尾数的每段数据的结果;
S108:根据计算得到的X的尾数的每段数据与Y的尾数的每段数据的结果,生成最终的尾数;
S109:根据生成的最终的尾数和计算得到的最终结果的阶码,生成计算结果;
S110:对生成的计算结果规格化处理,得到最终计算结果。
示例性的,下面以第一目标浮点数X和第二目标浮点数Y均为双精度浮点数,获得的第一目标浮点数X为:211*1.213,第二目标浮点数Y为:232*1.421,运算法则为乘法,即X*Y为例进行说明,
X=0100000010100011011010000111001010110000001000001100010010011100;
Y=0100000111110110101111000110101001111110111110011101101100100011;
对阶所述第一目标浮点数X和所述第二目标浮点数Y,Y的阶码大于X的阶码,对阶后Y不变,对阶后
X=0100000111110000000000000000000000011011010000111001010110000001;
计算X*Y的阶码为32+32=64,以2进制补码形式表示为:10000111111。
具体的,双精度浮点数尾数的长度为52,单精度浮点数的尾数长度23,乘法时会产生进位,以11位或小于11位为一段对尾数进行分段,这样两个单精度浮点数相乘,尾数还在表示范围内,不会产生进位。
以11位为一段对尾数进行分段,并进行转化
对阶后X的尾数Mx
=0000000000000000000000011011010000111001010110000001
=1000000000004*00000000+1000000000003*00000000000+1000000000002*00001101101+1000000000001*00001110010+1000000000000*10110000001
对阶后Y的尾数My
=0110101111000110101001111110111110011101101100100011
=1000000000004*01101011+1000000000003*11000110101+1000000000002*00111111011+1000000000001*11100111011+1000000000000*01100100011
因为双精度浮点数尾数长度为52,以11为一段对尾数进行分段,需分为5段,两个双精度浮点数相乘时,被转换为5*5=25个单精度浮点数的乘法运算,当以11为一段对尾数进行分段时,两个单精度浮点数相乘,尾数还在表示范围内,不会产生溢出。而单精度浮点数的尾数为23位,剩余1位作为每次分段计算的进位,如下:
Mx*My=
(1000000000004*00000000+1000000000003*00000000000+1000000000002*00001101101+1000000000001*00001110010+1000000000000*10110000001)*
(1000000000004*01101011+1000000000003*11000110101+1000000000002*00111111011+1000000000001*11100111011+1000000000000*01100100011)
=(211*2*00001101101+211*1*00001110010+211*0*10110000001)*
(211*4*01101011+211*3*11000110101+211*2*00111111011+211*1*11100111011+211*0*01100100011)
=211*2*00001101101*211*4*01101011+211*2*00001101101*211*3*11000110101+211*2*00001101101*211*2*00111111011+211*2*00001101101*211*1*11100111011+211*2*00001101101*211*0*01100100011
+211*1*00001110010*211*4*01101011+211*1*00001110010*211*3*11000110101+211*1*00001110010*211*2*00111111011+211*1*00001110010*211*1*11100111011+211*1*00001110010*211*0*01100100011
+211*0*10110000001*211*4*01101011+211*0*10110000001*211*3*11000110101+211*0*10110000001*211*2*00111111011+211*0*10110000001*211*1*11100111011+211* 0*10110000001*211*0*01100100011
=266*(00001101101*01101011)+255*(00001101101*11000110101)+244*(00001101101*00111111011)+233*(00001101101*11100111011)+222*(00001101101*01100100011)
+255*(00001110010*01101011)+244*(00001110010*11000110101)+233*(00001110010*00111111011)+222*(00001110010*11100111011)+211*(00001110010*01100100011)
+244*(10110000001*01101011)+233*(10110000001*11000110101)+222*(10110000001*00111111011)+211*(10110000001*11100111011)+20*(10110000001*01100100011)
上述X*Y的计算结果
=232*Mx*232*My=264*Mx*My
=264*[266*(00001101101*01101011)+255*(00001101101*11000110101)+244*(00001101101*00111111011)+233*(00001101101*11100111011)+222*(00001101101*01100100011)
+255*(00001110010*01101011)+244*(00001110010*11000110101)+233*(00001110010*00111111011)+222*(00001110010*11100111011)+211*(00001110010*01100100011)
+244*(10110000001*01101011)+233*(10110000001*11000110101)+222*(10110000001*00111111011)+211*(10110000001*11100111011)+20*(10110000001*01100100011)]
对X*Y的计算结果进行规格化处理得到最终的计算结果。
X和Y的阶码经过对位后是一致的,对位后主要是尾数的乘除法运算,双精度浮点数的乘法被分解为5*5=25个单精度浮点数的加法,使得中低端GPU产品可以利用自身具备的单精度浮点数的计算能力,来计算高精度浮点数的乘除法。
需要说明的是,上述以两个双精度浮点数的乘法运算以及以11位为一段对尾数进行分段,仅为本发明的一具体实例,并不够成对本发明的限定。
应用本发明图1所示实施例,将高精度的浮点数的尾数进行分段,将每段尾数转化为单精度浮点数进行计算,使得不具备双精度浮点数计算能力的中低端GPU产品具备高精度浮点数的计算能力,提高了中低端GPU产品对高精度浮点数的计算能力。
与上述的方法实施例相对应,本发明实施例还提供一种浮点数处理装置。
图2为本发明实施例提供的一种浮点数处理装置的结构示意图,可以包括:浮点数获得模块201、运算法则获得模块202、判断模块203、对阶模块204、第一计算模块205、分段转换模块206、第二计算模块207、尾数生成模块208、计算结果生成模块209和规格化模块210,其中,
浮点数获得模块201,用于获得第一目标浮点数X和第二目标浮点数Y,其中,X=2Ex*MX,Y=2Ey*MY
具体的,在实际应用中,第一目标浮点数和/或所述第二目标浮点数,可以包括:
双精度浮点数;或单精度扩展浮点数;或双精度扩展浮点数;或满足预设表达式的浮点数。
其中,上述预设表达式,可以包括:
(-1)S*M*2E,其中,
(-1)S为符号位;M为有效数字,且1≤M<2;E为阶码。
运算法则获得模块202,用于获得X与Y的运算法则,所述运算法则为乘法或除法;
判断模块203,用于判断X和Y是否均不为零;
对阶模块204,用于在判断模块203判断X和Y均不为零的情况下,对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex≥Ey,则对阶后Y=2Ex*MY′,若Ex<Ey,则对阶后X=2Ey*MX′;
第一计算模块205,用于根据运算法则获得模块202获得的运算法则以及对阶模块204对阶后的X和Y的阶码,计算最终结果的阶码;
分段转换模块206,用于将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;
具体的,在实际应用中,尾数分段的位数不大于11。
具体的,若Ex≥Ey,本发明所示实施例的分段转换模块206,具体可以用于:
X的尾数
MX=Mxn*(M)n+Mxn-1*(M)n-1+…+Mxn-i*(M)n-i+…+Mx0*(M)0
Y的尾数
MY′=My′n*(M)n+My′n-1*(M)n-1+…+My′n-i*(M)n-i+…+My′0*(M)0;其中,
n≥i≥0;M=2m;m≤11。
具体的,若Ex<Ey,本发明所示实施例的分段转换模块206,具体可以用于:
X的尾数
MX′=Mx′n*(M)n+Mx′n-1*(M)n-1+…+Mx′n-j*(M)n-j+…+Mx′0*(M)0
Y的尾数
MY=Myn*(M)n+Myn-1*(M)n-1+…+Myn-j*(M)n-j+…+My0*(M)0;其中,
n≥j≥0;M=2m;m≤11。
第二计算模块207,用于根据运算法则获得模块202获得的运算法则,分别计算X的尾数的每段数据与Y的尾数的每段数据的结果;
尾数生成模块208,用于根据第二计算模块207计算得到的X的尾数的每段数据与Y的尾数的每段数据的结果,生成最终的尾数;
计算结果生成模块209,用于根据尾数生成模块208生成的最终的尾数和第一计算模块205计算得到的阶码,生成计算结果;
规格化模块210,用于对计算结果生成模块209生成的计算结果规格化处理,得到最终计算结果。
应用本发明图2所示实施例,将高精度的浮点数的尾数进行分段,将每段尾数转化为单精度浮点数进行计算,使得不具备双精度浮点数计算能力的中低端GPU产品具备高精度浮点数的计算能力,提高了中低端GPU产品对高精度浮点数的计算能力。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种浮点数处理方法,其特征在于,包括:
获得第一目标浮点数X和第二目标浮点数Y,其中,X=2Ex*MX,Y=2Ey*MY
获得X与Y的运算法则,所述运算法则为乘法或除法;
判断X和Y是否均不为零;
如果X和Y均不为零,则对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex≥Ey,则对阶后Y=2Ex*MY′,若Ex<Ey,则对阶后X=2Ey*MX′;
根据获得的运算法则以及对阶后的X和Y的阶码,计算最终结果的阶码;
将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;
根据获得的运算法则,分别计算X的尾数的每段数据与Y的尾数的每段数据的结果;
根据计算得到的X的尾数的每段数据与Y的尾数的每段数据的结果,生成最终的尾数;
根据生成的最终的尾数和计算得到的最终结果的阶码,生成计算结果;
对生成的计算结果规格化处理,得到最终计算结果。
2.根据权利要求1所述的方法,其特征在于,所述第一目标浮点数和/或所述第二目标浮点数,包括:
双精度浮点数;或单精度扩展浮点数;或双精度扩展浮点数;或满足预设表达式的浮点数。
3.根据权利要求2所述的方法,其特征在于,所述预设表达式,包括:
(-1)S*M*2E,其中,
(-1)S为符号位;M为有效数字,且1≤M<2;E为阶码。
4.根据权利要求1所述的方法,其特征在于,
尾数分段的位数不大于11。
5.根据权利要求1所述的方法,其特征在于,
若Ex≥Ey,所述将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数,包括:
X的尾数
MX=Mxn*(M)n+Mxn-1*(M)n-1+…+Mxn-i*(M)n-i+…+Mx0*(M)0
Y的尾数
MY′=My′n*(M)n+My′n-1*(M)n-1+…+My′n-i*(M)n-i+…+My′0*(M)0;其中,
n≥i≥0;M=2m;m≤11;
若Ex<Ey,所述将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数,包括:
X的尾数
MX′=Mx′n*(M)n+Mx′n-1*(M)n-1+…+Mx′n-j*(M)n-j+…+Mx′0*(M)0
Y的尾数
MY=Myn*(M)n+Myn-1*(M)n-1+…+Myn-j*(M)n-j+…+My0*(M)0
其中,
n≥j≥0;M=2m;m≤11。
6.一种浮点数处理装置,其特征在于,包括:浮点数获得模块、运算法则获得模块、判断模块、对阶模块、第一计算模块、分段转换模块、第二计算模块、尾数生成模块、计算结果生成模块和规格化模块,其中,
所述浮点数获得模块,用于获得第一目标浮点数X和第二目标浮点数Y,其中,X=2Ex*MX,Y=2Ey*MY
所述运算法则获得模块,用于获得X与Y的运算法则,所述运算法则为乘法或除法;
所述判断模块,用于判断X和Y是否均不为零;
所述对阶模块,用于在所述判断模块判断X和Y均不为零的情况下,对阶所述第一目标浮点数X和所述第二目标浮点数Y,以使所述第一目标浮点数X和所述第二目标浮点数Y的阶码相同,其中,若Ex≥Ey,则对阶后Y=2Ex*MY′,若Ex<Ey,则对阶后X=2Ey*MX′;
所述第一计算模块,用于根据所述运算法则获得模块获得的运算法则以及所述对阶模块对阶后的X和Y的阶码,计算最终结果的阶码;
所述分段转换模块,用于将对阶后的X和Y的尾数分别进行分段,并将每段数据转换成单精度浮点数;
所述第二计算模块,用于根据所述运算法则获得模块获得的运算法则,分别计算X的尾数的每段数据与Y的尾数的每段数据的结果;
所述尾数生成模块,用于根据所述第二计算模块计算得到的X的尾数的每段数据与Y的尾数的每段数据的结果,生成最终的尾数;
所述计算结果生成模块,用于根据所述尾数生成模块生成的最终的尾数和所述第一计算模块计算得到的阶码,生成计算结果;
所述规格化模块,用于对所述计算结果生成模块生成的计算结果规格化处理,得到最终计算结果。
7.根据权利要求6所述的装置,其特征在于,所述第一目标浮点数和/或所述第二目标浮点数,包括:
双精度浮点数;或单精度扩展浮点数;或双精度扩展浮点数;或满足预设表达式的浮点数。
8.根据权利要求7所述的装置,其特征在于,所述预设表达式,包括:
(-1)S*M*2E,其中,
(-1)S为符号位;M为有效数字,且1≤M<2;E为阶码。
9.根据权利要求6所述的装置,其特征在于,
尾数分段的位数不大于11。
10.根据权利要求6所述的装置,其特征在于,若Ex≥Ey,所述分段转换模块,具体用于:
X的尾数
MX=Mxn*(M)n+Mxn-1*(M)n-1+…+Mxn-i*(M)n-i+…+Mx0*(M)0
Y的尾数
MY′=My′n*(M)n+My′n-1*(M)n-1+…+My′n-i*(M)n-i+…+My′0*(M)0;其中,
n≥i≥0;M=2m;m≤11;
若Ex<Ey,所述分段转换模块,具体用于:
X的尾数
MX′=Mx′n*(M)n+Mx′n-1*(M)n-1+…+Mx′n-j*(M)n-j+…+Mx′0*(M)0
Y的尾数
MY=Myn*(M)n+Myn-1*(M)n-1+…+Myn-j*(M)n-j+…+My0*(M)0
其中,
n≥j≥0;M=2m;m≤11。
CN201510629934.6A 2015-09-29 2015-09-29 一种浮点数处理方法及装置 Active CN105224284B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510629934.6A CN105224284B (zh) 2015-09-29 2015-09-29 一种浮点数处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510629934.6A CN105224284B (zh) 2015-09-29 2015-09-29 一种浮点数处理方法及装置

Publications (2)

Publication Number Publication Date
CN105224284A true CN105224284A (zh) 2016-01-06
CN105224284B CN105224284B (zh) 2017-12-08

Family

ID=54993287

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510629934.6A Active CN105224284B (zh) 2015-09-29 2015-09-29 一种浮点数处理方法及装置

Country Status (1)

Country Link
CN (1) CN105224284B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017185412A1 (zh) * 2016-04-29 2017-11-02 北京中科寒武纪科技有限公司 一种支持较少位数定点数的神经网络运算的装置和方法
CN107562408A (zh) * 2016-06-30 2018-01-09 德州仪器公司 支持可中断浮点除法的架构及指令集
WO2019127480A1 (zh) * 2017-12-29 2019-07-04 深圳市大疆创新科技有限公司 用于处理数值数据的方法、设备和计算机可读存储介质
WO2021136259A1 (zh) * 2019-12-31 2021-07-08 华为技术有限公司 浮点数乘法计算的方法、装置和算术逻辑单元
CN114186186A (zh) * 2020-09-15 2022-03-15 华为技术有限公司 矩阵计算方法及相关设备
WO2022068327A1 (zh) * 2020-09-29 2022-04-07 华为技术有限公司 运算单元、浮点数计算的方法、装置、芯片和计算设备
CN115934030A (zh) * 2020-01-20 2023-04-07 华为技术有限公司 算数逻辑单元、浮点数乘法计算的方法及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090037504A1 (en) * 2007-08-02 2009-02-05 Via Technologies, Inc. Exponent Processing Systems and Methods
CN201311633Y (zh) * 2008-11-07 2009-09-16 中国北车股份有限公司大连电力牵引研发中心 基于fpga的浮点数值除法器实现的功能模块
CN101685383A (zh) * 2008-09-28 2010-03-31 杨高祥 计算器、基于直接对阶的自由精度浮点数的运算电路

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090037504A1 (en) * 2007-08-02 2009-02-05 Via Technologies, Inc. Exponent Processing Systems and Methods
CN101685383A (zh) * 2008-09-28 2010-03-31 杨高祥 计算器、基于直接对阶的自由精度浮点数的运算电路
CN201311633Y (zh) * 2008-11-07 2009-09-16 中国北车股份有限公司大连电力牵引研发中心 基于fpga的浮点数值除法器实现的功能模块

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017185412A1 (zh) * 2016-04-29 2017-11-02 北京中科寒武纪科技有限公司 一种支持较少位数定点数的神经网络运算的装置和方法
CN107562408A (zh) * 2016-06-30 2018-01-09 德州仪器公司 支持可中断浮点除法的架构及指令集
CN107562408B (zh) * 2016-06-30 2023-09-12 德州仪器公司 支持可中断浮点除法的实现方法及系统
WO2019127480A1 (zh) * 2017-12-29 2019-07-04 深圳市大疆创新科技有限公司 用于处理数值数据的方法、设备和计算机可读存储介质
WO2021136259A1 (zh) * 2019-12-31 2021-07-08 华为技术有限公司 浮点数乘法计算的方法、装置和算术逻辑单元
CN113126954A (zh) * 2019-12-31 2021-07-16 华为技术有限公司 浮点数乘法计算的方法、装置和算术逻辑单元
CN113126954B (zh) * 2019-12-31 2024-04-09 华为技术有限公司 浮点数乘法计算的方法、装置和算术逻辑单元
CN115934030B (zh) * 2020-01-20 2024-01-16 华为技术有限公司 算数逻辑单元、浮点数乘法计算的方法及设备
CN115934030A (zh) * 2020-01-20 2023-04-07 华为技术有限公司 算数逻辑单元、浮点数乘法计算的方法及设备
CN114186186B (zh) * 2020-09-15 2023-08-04 华为技术有限公司 矩阵计算方法及相关设备
CN114186186A (zh) * 2020-09-15 2022-03-15 华为技术有限公司 矩阵计算方法及相关设备
CN114327360A (zh) * 2020-09-29 2022-04-12 华为技术有限公司 运算单元、浮点数计算的方法、装置、芯片和计算设备
WO2022068327A1 (zh) * 2020-09-29 2022-04-07 华为技术有限公司 运算单元、浮点数计算的方法、装置、芯片和计算设备

Also Published As

Publication number Publication date
CN105224284B (zh) 2017-12-08

Similar Documents

Publication Publication Date Title
CN105224284A (zh) 一种浮点数处理方法及装置
CN108780441B (zh) 用于定点矩阵乘法的存储减少方法
CN105955706B (zh) 一种除法器及除法运算方法
CN105224283A (zh) 一种浮点数处理方法及装置
CN102629189B (zh) 基于fpga的流水浮点乘累加方法
EP3447634B1 (en) Non-linear function computing device and method
CN106990937A (zh) 一种浮点数处理装置
CN106575214B (zh) 融合乘加运算的模拟
CN103914276A (zh) 利用浮点架构的定点除法电路
CN1983161A (zh) 用于扩展函数的增强型浮点单元
CN109863476A (zh) 动态变量精度计算
CN102799411B (zh) 浮点数累加电路及其实现方法
CN103135960A (zh) 一种基于fpga的集成浮点运算器的设计方法
CN106250098A (zh) 用于在执行浮点运算时控制舍入的装置及方法
CN113837365A (zh) 实现sigmoid函数逼近的模型、FPGA电路及工作方法
CN101510149B (zh) 一种数据处理方法和装置
CN107220025A (zh) 处理乘加运算的装置和处理乘加运算的方法
CN107580015A (zh) 数据处理方法和装置、服务器
CN102646033B (zh) 提供了加密和签名功能的rsa算法的实现方法和装置
US20220076594A1 (en) Efficient squaring with loop equalization in arithmetic logic units
US9612800B2 (en) Implementing a square root operation in a computer system
CN106168941A (zh) 一种支持复数乘法的fft蝶形运算硬件实现电路
CN104572018A (zh) 一种用于浮点常数生成的装置及方法
Isupov et al. Multiple-precision summation on hybrid CPU-GPU platforms using RNS-based floating-point representation
US20230297627A1 (en) System and methods for monitoring and validating scientific research sources

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant