CN101650643A - 一种用于不可除尽浮点除法开方的舍入方法 - Google Patents
一种用于不可除尽浮点除法开方的舍入方法 Download PDFInfo
- Publication number
- CN101650643A CN101650643A CN200910152504A CN200910152504A CN101650643A CN 101650643 A CN101650643 A CN 101650643A CN 200910152504 A CN200910152504 A CN 200910152504A CN 200910152504 A CN200910152504 A CN 200910152504A CN 101650643 A CN101650643 A CN 101650643A
- Authority
- CN
- China
- Prior art keywords
- significant
- rounding
- gained
- merchant
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
一种用于不可除尽浮点除法开方的舍入方法,包括以下步骤:1)向浮点协处理器输入的浮点数执行SRT除法/开方算法,浮点数执行循环操作得到商/根结果;2)根据第一个1出现的位置确定浮点数的有效数;3)步骤1)中的商/根结果减去有效数的结果和SRT除法/开方算法得到的余数作为舍入判断信息;将步骤1)中所得的商/根减去步骤2)所得的有效数的结果做左移位处理,得到的数记为剩余位;4)~7)选择四种不同舍入模式进行舍入,8)如果步骤4)至步骤7)所进行的舍入操作造成了商/根结果发生进位或者借位,对浮点指数部分进行修正;最终的舍入结果也需进行尾数规格化。本发明能降低逻辑复杂度、同硬件代价小、时序较短。
Description
技术领域
本发明涉及一种微处理器体系结构设计,尤其涉及浮点运算部件。
背景技术
随着嵌入式微处理器在通信、多媒体领域的广泛应用,对其浮点运算的能力要求越来越高,通常的软件浮点运算执行方式其速度和复杂度都远远不能满足实际需求,于是主要由硬件执行浮点运算的浮点协处理器应运而生。浮点除法开方运算是浮点运算重要组成部分,采用硬件实现的浮点除法开方,较软件实现方法速度提升50~100倍,具有很大的优势。
由于浮点除法开方算法复杂,时序较长,通常采用冗余余数迭代算法,即SRT算法。根据算法的基的不同,每个周期计算一定数目的商/根,通过迭代和余数补偿得到最终的商/根结果。例如基4SRT最小冗余算法计算除法,根据当前被除数和除数的值的范围,依据商选择表(即被除数范围对应商的值,SRT算法有具体公式对应)每个周期计算出√4=2位商结果(-2,-1,0,1,2),下表即为基4SRT算法的商选择表,表中数据为被除数前5位的值,竖排为商值,横排为除数前4位的值(均为2进制),商为负时仅符号不同,选择表与正值相同。
每次循环得到的商并没有完全覆盖所有情况(没有3这一种结果),而是通过负商进行补偿,即多商的值在下一次循环会被减去,这样在硬件实现上代价会得到有效降低,仅用一个加法器就可以实现。
然后根据公式从当前被除数中减去本次商的结果得到下一次循环的初始被除数值。公式如下:
下次被除数=本次被除数-本次商×除数
每次循环均按照上述方法进行迭代,直到得到所需精度的商结果为止。详细操作请参考Digit Selection for SRT Division and SquareRoot,Peter Kornerup,IEEE
当除法/开方出现不可除尽的结果时,需要根据浮点精度的要求对商/根结果进行舍入。因此一个算法清晰,实现简单,硬件代价小,时序较短的舍入算法对于浮点除法/开方的硬件实现就显得十分重要。
发明内容
为了克服已有的微处理器在处理当除法/开方出现不可除尽的结果时存在的逻辑复杂度高、硬件代价大、时序较长的不足,本发明提供一种降低逻辑复杂度、同硬件代价小、时序较短的用于不可除尽浮点除法开方的舍入方法。
本发明解决其技术问题所采用的技术方案是:
一种用于不可除尽浮点除法开方的舍入方法,包括以下步骤:
1)向浮点协处理器输入的浮点数执行SRT除法/开方算法,浮点数执行循环操作得到商/根结果;
2)在步骤1)所得到的商/根结果,根据第一个1出现的位置确定浮点数的有效数;
3)步骤1)中的商/根结果减去有效数的结果和SRT除法/开方算法得到的余数作为舍入判断信息;将步骤1)中所得的商/根减去步骤2)所得的有效数的结果做左移位处理,得到的数记为剩余位,所述剩余位小数点的位置为步骤2)所指的有效数最低位之后;
4)选择舍入模式为就近舍入,若步骤3)所得的剩余位大于0.5,或者剩余位等于0.5并且步骤2)所得的余数大于0,或者剩余位等于0.5并且余数等于0并且有效数的最低位为1,需要进行加一舍入,即在步骤2)所得的有效数的最低位上加一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数;
5)选择舍入模式为向零舍入,若步骤3)所得的剩余位等于0并且步骤2)所得的余数小于0,需要进行减一舍入,即在步骤2)所得的有效数的最低位上减一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数;
6)选择舍入模式为向正无穷舍入,若步骤1)所得的商/根结果大于0并且步骤3)所得的剩余位大于0,或者商/根结果大于0并且剩余位等于0并且步骤2)所得的余数大于0,需要进行加一舍入,即在步骤2)所得的有效数的最低位上加一;若商/根结果小于0并且剩余位等于0并且余数小于0,需要进行减一舍入,即在步骤2)所得的有效数的最低位上减一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数;
7)选择舍入模式为向负无穷舍入,若步骤1)所得的商/根结果小于0并且步骤3)所得的剩余位大于0,或者商/根结果小于0并且剩余位等于0并且步骤2)所得的余数大于0,需要进行加一舍入,即在步骤2)所得的有效数的最低位上加一;若商/根结果大于0并且剩余位等于0并且余数小于0,需要进行减一舍入,即在步骤2)所得的有效数的最低位上减一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数;
8)如果步骤4)至步骤7)所进行的舍入操作造成了商/根结果发生进位或者借位,对浮点指数部分进行修正:如果进位需要对指数加一,借位则对指数减一;最终的舍入结果也需进行尾数规格化:如果进位需要右移一位,借位则左移一位。
作为优选的一种方案:所述步骤1)中,SRT除法/开方算法为基4SRT算法,采用循环计算,每个时钟周期可以得到2位商/根结果。当然,也可以选择其他类型的SRT算法,例如基2、基8SRT算法,采用不同的算法,循环计算的次数和得到的商/根结果位数不相同。
进一步,所述浮点数为单精度浮点,所述步骤1)中,执行14个循环操作得到28位商/根结果;步骤2)中,单精度浮点数的结果有效数从第一个1算起共截取24位二进制数,截取的有效数作为步骤4)至步骤7)所进行的舍入操作的基准数;步骤3)中,单精度浮点数根据第一个1出现的位置不同得到三位(0.xxx)或两位(0.xx)剩余位用作舍入判断。
或者是:所述浮点数为扩展型单精度浮点数,所述扩展型单精度浮点数的精度为m位,m为整数且m≥32,所述步骤1)中,执行个循环操作得到位商/根结果;步骤2)中,扩展型单精度浮点数的结果有效数从第一个1算起截取共m位二进制数作为有效数,截取的有效数作为步骤4)至步骤7)所进行的舍入操作的基准数;步骤3)中,扩展型单精度浮点数根据第一个1出现的位置不同得到三位(0.xxx)或两位(0.xx)或一位(0.x)剩余位用作舍入判断。
作为优选的一个方案:m=32,所述步骤1)中,执行18个循环操作得到36位商/根结果;步骤2)中,扩展型单精度浮点数的结果有效数从第一个1算起截取共32为二进制数作为有效数。当然,m也可以选择大于32的其他整数,可以根据实际需要进行选择。
再或者是:所述浮点数为双精度浮点数,所述步骤1)中,执行28个循环操作得到56位商/根结果;步骤2)中,双精度浮点数的结果有效数从第一个1算起共截取53位二进制数,截取的有效数作为步骤4)至步骤7)所进行的舍入操作的基准数;步骤3)中,双精度浮点数根据第一个1出现的位置不同得到两位(0.xx)或一位(0.x)剩余位用作舍入判断。
又或者是:所述浮点数为扩展型双精度浮点数,所述扩展型双精度浮点数的精度为n,n为整数且n≥64,所述步骤1)中,执行个循环操作得到位商/根结果;步骤2)中,扩展型双精度浮点数的结果有效数从第一个1算起截取共n位二进制数作为有效数,截取的有效数作为步骤4)至步骤7)所进行的舍入操作的基准数;步骤3)中,扩展型双精度浮点数根据第一个1出现的位置不同得到三位(0.xxx)或二位(0.xx)或一位(0.x)剩余位用作舍入判断。
作为优选的一种方案:n=65,所述步骤1)中,执行34个循环操作得到68位商/根结果;步骤2)中,扩展型双精度浮点数的结果有效数从第一个1算起截取共65为二进制数作为有效数。当然,n也可以选择大于65的其他整数,可以根据实际需要进行选择。
本发明的技术构思为:为了在简明清晰的基础上实现浮点除法/开方的结果舍入,降低硬件实现代价,提高工作频率,提升整个浮点除法/开方单元的性能,提供一种用于不可除尽浮点除法开方的舍入方法。
浮点数据通过指令发射级流水线写入浮点除法/开方单元后,采用SRT算法进行迭代,得到超过所需精度位数的商/根结果,截取精度所需的位数作为有效数,剩余的位数和SRT迭代余数结合舍入模式进行舍入判断,对有效数进行加一、减一或不变的操作。如果舍入发生了进位或者借位,则需对指数和尾数进行相应调整。
本发明的有益效果主要表现在:1)算法清晰易懂,易于硬件实现和调试;2)硬件代价低,舍入判断逻辑仅需很少的比较逻辑即可实现,舍入算法保证加一舍入和减一舍入不可能共存,则舍入加法器只需一个;3)时延路径较短,仅为一个加一/减一加法器和一个多路器的延迟,舍入判断逻辑与加法器并行执行,有利于提高浮点协处理器频率;4)算法扩展性好,经过简单修改就可以实现其他基数的SRT算法的舍入判断。
附图说明
图1是不可除尽浮点除法/开方算法流程图。
图2是不可除尽浮点除法/开方的硬件实现方案图。
具体实施方式
下面结合附图对本发明作进一步描述。
实施例1
参照图1~图2,一种用于不可除尽浮点除法开方的舍入方法,包括以下步骤:
1)向浮点协处理器输入的浮点数执行SRT除法/开方算法,浮点数执行循环操作得到商/根结果;
2)在步骤1)所得到的商/根结果,根据第一个1出现的位置确定浮点数的有效数;
3)步骤1)中的商/根结果减去有效数的结果和SRT除法/开方算法得到的余数作为舍入判断信息;将步骤1)中所得的商/根减去步骤2)所得的有效数的结果做左移位处理,得到的数记为剩余位,所述剩余位小数点的位置为步骤2)所指的有效数最低位之后;
4)选择舍入模式为就近舍入,若步骤3)所得的剩余位大于0.5,或者剩余位等于0.5并且步骤2)所得的余数大于0,或者剩余位等于0.5并且余数等于0并且有效数的最低位为1,需要进行加一舍入,即在步骤2)所得的有效数的最低位上加一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数;
5)选择舍入模式为向零舍入,若步骤3)所得的剩余位等于0并且步骤2)所得的余数小于0,需要进行减一舍入,即在步骤2)所得的有效数的最低位上减一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数;
6)选择舍入模式为向正无穷舍入,若步骤1)所得的商/根结果大于0并且步骤3)所得的剩余位大于0,或者商/根结果大于0并且剩余位等于0并且步骤2)所得的余数大于0,需要进行加一舍入,即在步骤2)所得的有效数的最低位上加一;若商/根结果小于0并且剩余位等于0并且余数小于0,需要进行减一舍入,即在步骤2)所得的有效数的最低位上减一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数;
7)选择舍入模式为向负无穷舍入,若步骤1)所得的商/根结果小于0并且步骤3)所得的剩余位大于0,或者商/根结果小于0并且剩余位等于0并且步骤2)所得的余数大于0,需要进行加一舍入,即在步骤2)所得的有效数的最低位上加一;若商/根结果大于0并且剩余位等于0并且余数小于0,需要进行减一舍入,即在步骤2)所得的有效数的最低位上减一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数;
8)如果步骤4)至步骤7)所进行的舍入操作造成了商/根结果发生进位或者借位,对浮点指数部分进行修正:如果进位需要对指数加一,借位则对指数减一;最终的舍入结果也需进行尾数规格化:如果进位需要右移一位,借位则左移一位。
所述步骤1)中,SRT除法/开方算法为基4SRT算法,采用循环计算,每个时钟周期可以得到2位商/根结果。当然,也可以选择其他类型的SRT算法,例如基2、基8SRT算法,采用不同的算法,循环计算的次数和得到的商/根结果位数不相同。
本实施例的浮点数为单精度浮点,所述步骤1)中,执行14个循环操作得到28位商/根结果;步骤2)中,单精度浮点数的结果有效数从第一个1算起共截取24位二进制数,截取的有效数作为步骤4)至步骤7)所进行的舍入操作的基准数;步骤3)中,单精度浮点数根据第一个1出现的位置不同得到三位(0.xxx)或两位(0.xx)剩余位用作舍入判断。
本实施例的浮点数据通过指令发射级流水线写入浮点除法/开方单元后,采用SRT算法进行迭代,得到超过所需精度位数的商/根结果,截取精度所需的位数作为有效数,剩余的位数和SRT迭代余数结合舍入模式进行舍入判断,对有效数进行加一、减一或不变的操作。如果舍入发生了进位或者借位,则需对指数和尾数进行相应调整。
用于不可除尽浮点除法开方的舍入方法包括如下步骤:
1)对于向浮点协处理器输入的单精度或者双精度浮点数执行基4SRT除法/开方算法,单精度浮点数执行14个循环操作得到28位商/根结果。
2)在步骤1)所得到的商/根结果,根据第一个1出现的位置确定单精度浮点数24位的有效数。步骤1)中的商/根减去有效数的结果和基4SRT算法得到的余数用作舍入判断信息。
3)将步骤1)中所得的商/根减去步骤2)所得的有效数的结果做左移位处理,小数点的位置置为步骤2)所指的有效数最低位之后,这个数记为剩余位。
4)如果舍入模式为就近舍入,若步骤3)所得的剩余位大于0.5,或者剩余位等于0.5并且步骤2)所得的余数大于0,或者剩余位等于0.5并且余数等于0并且有效数的最低位为1,需要进行加一舍入,即在步骤2)所得的有效数的最低位上加一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数。
5)如果舍入模式为向零舍入,若步骤3)所得的剩余位等于0并且步骤2)所得的余数小于0,需要进行减一舍入,即在步骤2)所得的有效数的最低位上减一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数。
6)如果舍入模式为向正无穷舍入,若步骤1)所得的商/根结果大于0并且步骤3)所得的剩余位大于0,或者商/根结果大于0并且剩余位等于0并且步骤2)所得的余数大于0,需要进行加一舍入,即在步骤2)所得的有效数的最低位上加一;若商/根结果小于0并且剩余位等于0并且余数小于0,需要进行减一舍入,即在步骤2)所得的有效数的最低位上减一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数。
7)如果舍入模式为向负无穷舍入,若步骤1)所得的商/根结果小于0并且步骤3)所得的剩余位大于0,或者商/根结果小于0并且剩余位等于0并且步骤2)所得的余数大于0,需要进行加一舍入,即在步骤2)所得的有效数的最低位上加一;若商/根结果大于0并且剩余位等于0并且余数小于0,需要进行减一舍入,即在步骤2)所得的有效数的最低位上减一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数。
8)如果步骤4)至步骤7)所进行的舍入操作造成了商/根结果发生进位或者借位,则需要对浮点指数部分进行修正,如果进位需要对指数加一,借位则对指数减一。最终的舍入结果也需进行尾数规格化,如果进位需要右移一位,借位则左移一位。
所述的在步骤1)所采用的基4SRT归一化除法/开方算法,采用循环计算,每个时钟周期可以得到2位商/根结果,单精度浮点数最多需要14个循环操作得到28位商/根结果,双精度浮点数最多需要28个循环操作得到56位商/根结果。最后一次循环后的余数作为步骤4)至步骤7)进行舍入的判断条件。
所述的在步骤2)根据第一个1出现的位置对步骤1)所得的商/根结果进行有效数截取,单精度浮点数的结果有效数从第一个1算起共截取24位二进制数。截取的有效数作为步骤4)至步骤7)所进行的舍入操作的基准数。
所述的在步骤3)中将步骤1)中所得的商/根减去步骤2)所得的有效数的结果做左移位处理,小数点的位置置为步骤2)所指的有效数最低位之后,这个数记为剩余位。单精度浮点数根据第一个1出现的位置不同得到三位(0.xxx)或两位(0.xx)剩余位用作舍入判断。
所述的在步骤4)在舍入模式为就近舍入时,如下所示流程:
Rounding mode:to the nearst
If((RB>0.5)||
(RB==0.5 && remainder>0)||
(RB==0.5 && remainder==0 && VB[0]==1)
)
rounding:VB add 1
else
rounding:VB add 0
如果剩余位大于0.5,或者剩余位等于0.5并且余数大于0,或者剩余位等于0.5并且余数等于0并且有效数的最低位为1,前两种情况表示商/根更靠近有效数加一的结果,后一种情况表示商/根向正无穷和负无穷两个方向的最近精确数的距离相同,则选择最低位为0的精确数。以上三种情况需要进行加一舍入,即在有效数的最低位上加一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数。
所述的在步骤5)在舍入模式为向0舍入时,如下所示流程:
Rounding mode:to 0
If(RB==0 && remainder<0)
rounding:VB sub 1
else
rounding:VB add 0
如果剩余位等于0并且余数小于0,即实际商/根结果小于有效数,要舍去精确位之后的所有位数。以上情况需要进行减一舍入,即在有效数的最低位上减一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数。
所述的在步骤6)在舍入模式为向正无穷舍入时,如下所示流程:
Rounding mode:to positive infinity
If(sign==0)
{
if((RB>0)||
(RB==0 && remainder>0)
)
rounding:VB add 1
else
rounding:VB add 0
}
else
{
if(RB==0 && remainder<0)
rounding:VB sub 1
else
rounding:VB add 0
}
由于舍入与结果符号相关,操作分两方面判断:如果商/根结果为正数,若剩余位大于0,或者剩余位等于0并且余数大于0,即实际商/根大于有效数,需要进行加一舍入,即在有效数的最低位上加一,其余情况均不变,舍入结果即为步骤2)所得的有效数;如果商/根结果为负数,若剩余位等于0并且余数小于0,即实际商/根的绝对值小于有效数,根据向正无穷舍入方式需要向绝对值小的方向进行舍入,即进行减一舍入,在有效数的最低位上减一,其余情况均不变,舍入结果即为步骤2)所得的有效数。
所述的在步骤7)在舍入模式为向负无穷舍入时,如图下所示流程:
Rounding mode:to negative infinity
If(sign==1)
{
if((RB>0)||
(RB==0 && remainder>0)
)
rounding:VB add 1
else
rounding:VB add 0
}
else
{
if(RB==0 && remainder<0)
rounding:VB sub 1
else
rounding:VB add 0
}
由于舍入与结果符号相关,操作分两方面判断:如果商/根结果为负数,若剩余位大于0,或者剩余位等于0并且余数大于0,即实际商/根小于有效数,根据负无穷舍入,需要向绝对值大的方向舍入,即进行加一舍入,即在有效数的最低位上加一,其余情况均不变,舍入结果即为步骤2)所得的有效数;如果商/根结果为正数,若剩余位等于0并且余数小于0,即实际商/根的小于有效数,根据向负无穷舍入方式需要向绝对值小的方向进行舍入,即进行减一舍入,在有效数的最低位上减一,其余情况均不变,舍入结果即为步骤2)所得的有效数。所述的在步骤8)根据舍入操作的进位或者借位对指数和尾数进行修正,如果进位需要对指数加一,尾数右移一位;借位则对指数减一,尾数左移一位。
本实施例针对浮点单精度除法操作。
1)对于向浮点协处理器输入的两个单精度浮点数执行基4SRT除法算法,经过14个循环操作得到28位商/根结果:0.1a25a24……a40101(二进制表示),余数大于0。
2)在步骤1)所得到的商结果,根据第一个1出现的位置确定单精度浮点数24位的有效数:1a25a24……a40(二进制表示)。步骤1)中的商减去有效数的结果为:0.0……00101(二进制表示),此数用作舍入判断信息。
3)将步骤1)中所得的商减去步骤2)所得的有效数的结果做左移位处理,小数点的位置置为步骤2)所指的有效数最低位之后,这个数记为剩余位:0.101(二进制表示)。
4)舍入模式为就近舍入,进入步骤4),因为步骤3)所得的剩余位大于0.5,所以根据步骤4)的判断条件,进行加一舍入,最终的商结果为(1a25a24……a40+1=1a25a24……a41)。浮点单精度格式中的23位尾数部分为a25a24……a41。
5)根据步骤8)的判断依据,没有发生进位或者借位,指数部分保持不变。
实施例2
本实施例针对浮点单精度开方操作。
1)对于向浮点协处理器输入的两个单精度浮点数执行基4SRT除法算法,经过14个循环操作得到28位根结果:0.1a25a24……a40100(二进制表示),余数大于0。
2)在步骤1)所得到的根结果,根据第一个1出现的位置确定单精度浮点数24位的有效数:1a25a24……a40(二进制表示)。步骤1)中的根减去有效数的结果为:0.0……00100(二进制表示),此数用作舍入判断信息。
3)将步骤1)中所得的根减去步骤2)所得的有效数的结果做左移位处理,小数点的位置置为步骤2)所指的有效数最低位之后,这个数记为剩余位:0.100(二进制表示)。
4)舍入模式为向零舍入,进入步骤5),因为步骤3)所得的剩余位大于0,并且余数大于0,所以根据步骤5)的判断条件,进行不变舍入,最终的根结果为(1a25a24……a40)。浮点单精度格式中的23位尾数部分为a25a24……a40。
5)根据步骤8)的判断依据,没有发生进位或者借位,指数部分保持不变。
本实施例的其他方案均与实施例1相同。
实施例3
本实施例的浮点数为双精度浮点数,所述步骤1)中,执行28个循环操作得到56位商/根结果;步骤2)中,双精度浮点数的结果有效数从第一个1算起共截取53位二进制数,截取的有效数作为步骤4)至步骤7)所进行的舍入操作的基准数;步骤3)中,双精度浮点数根据第一个1出现的位置不同得到两位(0.xx)或一位(0.x)剩余位用作舍入判断。
本实施例的其他步骤均与实施例3相同。
本实施例是针对浮点双精度除法操作。
1)对于向浮点协处理器输入的一个双精度浮点数执行基4SRT除法算法,经过28个循环操作得到56位商结果:-0.1a53a52……a3100(二进制表示),余数小于0。
2)在步骤1)所得到的商结果,根据第一个1出现的位置确定双精度浮点数53位的有效数:1a53a52……a31(二进制表示)。步骤1)中的商减去有效数的结果和基4SRT算法得到的余数为:0.0……0000(二进制表示),此数用作舍入判断信息。
3)将步骤1)中所得的商减去步骤2)所得的有效数的结果做左移位处理,小数点的位置置为步骤2)所指的有效数最低位之后,这个数记为剩余位:0.00(二进制表示)。
4)舍入模式为向正无穷舍入,进入步骤6),因为商结果小于0,步骤3)所得的剩余位等于0,步骤1)所得的余数小于0,所以根据步骤6)的判断条件,进行减一舍入,最终的商结果为(1a53a52……a31-1=1a53a52……a40)。浮点双精度格式中的52位尾数部分为a53a52……a30。
5)根据步骤8)的判断依据,没有发生进位或者借位,指数部分保持不变。
实施例4
本实施例的浮点数为扩展型单精度浮点数,所述扩展型单精度浮点数的精度为m位,m为整数且m≥32,所述步骤1)中,执行个循环操作得到位商/根结果;步骤2)中,扩展型单精度浮点数的结果有效数从第一个1算起截取共m位二进制数作为有效数,截取的有效数作为步骤4)至步骤7)所进行的舍入操作的基准数;步骤3)中,扩展型单精度浮点数根据第一个1出现的位置不同得到三位(0.xxx)或两位(0.xx)或一位(0.x)剩余位用作舍入判断。
优选的,m=32,所述步骤1)中,执行18个循环操作得到36位商/根结果;步骤2)中,扩展型单精度浮点数的结果有效数从第一个1算起截取共32为二进制数作为有效数。当然,m也可以选择大于32的其他整数,可以根据实际需要进行选择。
本实施例的其他步骤均与实施例2相同。
本实施例是针对扩展型浮点单精度开方操作。
1)对于向浮点协处理器输入的一个32位精度扩展型单精度浮点数执行基4SRT除法算法,经过18个循环操作得到36位根结果:0.1a33a32……a41001(二进制表示),余数小于0。
2)在步骤1)所得到的根结果,根据第一个1出现的位置确定双精度浮点数53位的有效数:1a33a32……a41(二进制表示)。步骤1)中的根减去有效数的结果为:0.0……00001(二进制表示),此数用作舍入判断信息。
3)将步骤1)中所得的根减去步骤2)所得的有效数的结果做左移位处理,小数点的位置置为步骤2)所指的有效数最低位之后,这个数记为剩余位:0.001(二进制表示)。
4)舍入模式为向零舍入,进入步骤5),因为根结果大于0,步骤3)所得的剩余位大于0,步骤1)所得的余数小于0,所以根据步骤5)的判断条件,进行不变舍入,最终的商结果为(1a33a32……a41)。浮点双精度格式中的31位尾数部分为a33a32……a41。
5)根据步骤8)的判断依据,没有发生进位或者借位,指数部分保持不变。
实施例5
本实施例的
所述浮点数为扩展型双精度浮点数,所述扩展型双精度浮点数的精度为n,n为整数且n≥64,所述步骤1)中,执行个循环操作得到位商/根结果;步骤2)中,扩展型双精度浮点数的结果有效数从第一个1算起截取共n位二进制数作为有效数,截取的有效数作为步骤4)至步骤7)所进行的舍入操作的基准数;步骤3)中,扩展型双精度浮点数根据第一个1出现的位置不同得到三位(0.xxx)或二位(0.xx)或一位(0.x)剩余位用作舍入判断。
优选的,n=65,所述步骤1)中,执行34个循环操作得到68位商/根结果;步骤2)中,扩展型双精度浮点数的结果有效数从第一个1算起截取共65为二进制数作为有效数。当然,n也可以选择大于65的其他整数,可以根据实际需要进行选择。
本实施例的其他步骤均与实施例2相同。本实施例是针对扩展型浮点双精度开方操作。
1)对于向浮点协处理器输入的一个65位精度扩展型单精度浮点数执行基4SRT除法算法,经过34个循环操作得到68位根结果:0.100……00000(二进制表示),余数小于0。
2)在步骤1)所得到的根结果,根据第一个1出现的位置确定双精度浮点数53位的有效数:100……00(二进制表示)。步骤1)中的根减去有效数的结果为:0.0……00000(二进制表示),此数用作舍入判断信息。
3)将步骤1)中所得的根减去步骤2)所得的有效数的结果做左移位处理,小数点的位置置为步骤2)所指的有效数最低位之后,这个数记为剩余位:0.00(二进制表示)。
4)舍入模式为向负无穷舍入,进入步骤7),因为根结果大于0,步骤3)所得的剩余位等于0,步骤1)所得的余数小于0,所以根据步骤5)的判断条件,进行减一舍入,最终的商结果为(100……00-1=011……11)。浮点双精度格式中的64位尾数部分为0111……1。
5)根据步骤8)的判断依据,发生借位情况,指数部分减一,尾数部分左移移位为最终的64为尾数部分111……10。
Claims (8)
1、一种用于不可除尽浮点除法开方的舍入方法,其特征在于:所述舍入方法包括以下步骤:
1)向浮点协处理器输入的浮点数执行SRT除法/开方算法,浮点数执行循环操作得到商/根结果;
2)在步骤1)所得到的商/根结果,根据第一个1出现的位置确定浮点数的有效数;
3)步骤1)中的商/根结果减去有效数的结果和SRT除法/开方算法得到的余数作为舍入判断信息;将步骤1)中所得的商/根减去步骤2)所得的有效数的结果做左移位处理,得到的数记为剩余位,所述剩余位小数点的位置为步骤2)所指的有效数最低位之后;
4)选择舍入模式为就近舍入,若步骤3)所得的剩余位大于0.5,或者剩余位等于0.5并且步骤2)所得的余数大于0,或者剩余位等于0.5并且余数等于0并且有效数的最低位为1,需要进行加一舍入,即在步骤2)所得的有效数的最低位上加一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数;
5)选择舍入模式为向零舍入,若步骤3)所得的剩余位等于0并且步骤2)所得的余数小于0,需要进行减一舍入,即在步骤2)所得的有效数的最低位上减一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数;
6)选择舍入模式为向正无穷舍入,若步骤1)所得的商/根结果大于0并且步骤3)所得的剩余位大于0,或者商/根结果大于0并且剩余位等于0并且步骤2)所得的余数大于0,需要进行加一舍入,即在步骤2)所得的有效数的最低位上加一;若商/根结果小于0并且剩余位等于0并且余数小于0,需要进行减一舍入,即在步骤2)所得的有效数的最低位上减一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数;
7)选择舍入模式为向负无穷舍入,若步骤1)所得的商/根结果小于0并且步骤3)所得的剩余位大于0,或者商/根结果小于0并且剩余位等于0并且步骤2)所得的余数大于0,需要进行加一舍入,即在步骤2)所得的有效数的最低位上加一;若商/根结果大于0并且剩余位等于0并且余数小于0,需要进行减一舍入,即在步骤2)所得的有效数的最低位上减一;其余情况结果保持不变,舍入结果即为步骤2)所得的有效数;
8)如果步骤4)至步骤7)所进行的舍入操作造成了商/根结果发生进位或者借位,对浮点指数部分进行修正:如果进位需要对指数加一,借位则对指数减一;最终的舍入结果也需进行尾数规格化:如果进位需要右移一位,借位则左移一位。
2、如权利要求1所述的一种用于不可除尽浮点除法开方的舍入方法,其特征在于:所述步骤1)中,SRT除法/开方算法为基4SRT算法,采用循环计算,每个时钟周期可以得到2位商/根结果。
3、如权利要求2所述的一种用于不可除尽浮点除法开方的舍入方法,其特征在于:所述浮点数为单精度浮点,所述步骤1)中,执行14个循环操作得到28位商/根结果;步骤2)中,单精度浮点数的结果有效数从第一个1算起共截取24位二进制数,截取的有效数作为步骤4)至步骤7)所进行的舍入操作的基准数;步骤3)中,单精度浮点数根据第一个1出现的位置不同得到三位(0.xxx)或两位(0.xx)剩余位用作舍入判断。
5、如权利要求4所述的一种用于不可除尽浮点除法开方的舍入方法,其特征在于:m=32,所述步骤1)中,执行18个循环操作得到36位商/根结果;步骤2)中,扩展型单精度浮点数的结果有效数从第一个1算起截取共32为二进制数作为有效数。
6、如权利要求2所述的一种用于不可除尽浮点除法开方的舍入方法,其特征在于:所述浮点数为双精度浮点数,所述步骤1)中,执行28个循环操作得到56位商/根结果;步骤2)中,双精度浮点数的结果有效数从第一个1算起共截取53位二进制数,截取的有效数作为步骤4)至步骤7)所进行的舍入操作的基准数;步骤3)中,双精度浮点数根据第一个1出现的位置不同得到两位(0.xx)或一位(0.x)剩余位用作舍入判断。
8、如权利要求7所述的一种用于不可除尽浮点除法开方的舍入方法,其特征在于:n=65,所述步骤1)中,执行34个循环操作得到68位商/根结果;步骤2)中,扩展型双精度浮点数的结果有效数从第一个1算起截取共65为二进制数作为有效数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101525044A CN101650643B (zh) | 2009-09-11 | 2009-09-11 | 一种用于不可除尽浮点除法开方的舍入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101525044A CN101650643B (zh) | 2009-09-11 | 2009-09-11 | 一种用于不可除尽浮点除法开方的舍入方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101650643A true CN101650643A (zh) | 2010-02-17 |
CN101650643B CN101650643B (zh) | 2012-07-25 |
Family
ID=41672886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101525044A Active CN101650643B (zh) | 2009-09-11 | 2009-09-11 | 一种用于不可除尽浮点除法开方的舍入方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101650643B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106415483A (zh) * | 2014-03-06 | 2017-02-15 | 甲骨文国际公司 | 具有对可变长度数的支持的浮点单元 |
CN108196822A (zh) * | 2017-12-24 | 2018-06-22 | 北京卫星信息工程研究所 | 一种双精度浮点开方运算的方法及系统 |
CN108595146A (zh) * | 2017-12-29 | 2018-09-28 | 珠海市杰理科技股份有限公司 | 除法运算方法、装置及设备 |
US10558378B2 (en) | 2014-05-13 | 2020-02-11 | Toshiba Memory Corporation | Memory system |
CN113467752A (zh) * | 2021-05-31 | 2021-10-01 | 深圳致星科技有限公司 | 用于隐私计算的除法运算装置、数据处理系统及方法 |
CN115033205A (zh) * | 2022-08-11 | 2022-09-09 | 深圳市爱普特微电子有限公司 | 一种低延迟高精度定值除法器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5729481A (en) * | 1995-03-31 | 1998-03-17 | International Business Machines Corporation | Method and system of rounding for quadratically converging division or square root |
US6996596B1 (en) * | 2000-05-23 | 2006-02-07 | Mips Technologies, Inc. | Floating-point processor with operating mode having improved accuracy and high performance |
CN1271507C (zh) * | 2003-08-26 | 2006-08-23 | 中国科学院计算技术研究所 | 一种减少srt-4 除法和开根部件循环次数的方法及电路 |
CN101326486B (zh) * | 2005-12-02 | 2012-06-20 | 富士通株式会社 | 进行浮点数的除法运算或平方根运算的运算装置和运算方法 |
-
2009
- 2009-09-11 CN CN2009101525044A patent/CN101650643B/zh active Active
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106415483A (zh) * | 2014-03-06 | 2017-02-15 | 甲骨文国际公司 | 具有对可变长度数的支持的浮点单元 |
CN106415483B (zh) * | 2014-03-06 | 2020-12-29 | 甲骨文国际公司 | 具有对可变长度数的支持的浮点单元 |
US10558378B2 (en) | 2014-05-13 | 2020-02-11 | Toshiba Memory Corporation | Memory system |
CN108196822A (zh) * | 2017-12-24 | 2018-06-22 | 北京卫星信息工程研究所 | 一种双精度浮点开方运算的方法及系统 |
CN108196822B (zh) * | 2017-12-24 | 2021-12-17 | 北京卫星信息工程研究所 | 一种双精度浮点开方运算的方法及系统 |
CN108595146A (zh) * | 2017-12-29 | 2018-09-28 | 珠海市杰理科技股份有限公司 | 除法运算方法、装置及设备 |
CN108595146B (zh) * | 2017-12-29 | 2020-10-27 | 珠海市杰理科技股份有限公司 | 除法运算方法、装置及设备 |
CN113467752A (zh) * | 2021-05-31 | 2021-10-01 | 深圳致星科技有限公司 | 用于隐私计算的除法运算装置、数据处理系统及方法 |
CN115033205A (zh) * | 2022-08-11 | 2022-09-09 | 深圳市爱普特微电子有限公司 | 一种低延迟高精度定值除法器 |
Also Published As
Publication number | Publication date |
---|---|
CN101650643B (zh) | 2012-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101650642B (zh) | 基于补码舍入的浮点加法装置 | |
CN101650643B (zh) | 一种用于不可除尽浮点除法开方的舍入方法 | |
CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
CN103984522B (zh) | Gpdsp中定点和浮点混合除法的实现方法 | |
CN104520807A (zh) | 用于具有指数按比例缩放的浮点融合乘法加法的微架构 | |
EP3447634B1 (en) | Non-linear function computing device and method | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
KR20080055985A (ko) | 선택가능 준정밀도를 가진 부동―소수점 프로세서 | |
CN101174200A (zh) | 一种浮点乘加融合单元的五级流水线结构 | |
EP3286635A1 (en) | High performance division and root computation unit | |
US20160098249A1 (en) | Decimal and binary floating point arithmetic calculations | |
CN102087590A (zh) | 资源复用的浮点simd指令的执行装置 | |
RU2413972C2 (ru) | Итерационное арифметико-логическое устройство с контролируемой точностью | |
CN101630243A (zh) | 超越函数装置以及用该装置实现超越函数的方法 | |
CN104991757A (zh) | 一种浮点处理方法及浮点处理器 | |
CN103069381B (zh) | 循环浮点数生成器、循环浮点数加法器、生成循环浮点数方法及循环浮点数相加方法 | |
CN103984521A (zh) | Gpdsp中simd结构浮点除法的实现方法及装置 | |
CN104166535B (zh) | 定点处理器及其防溢方法 | |
CN107533452A (zh) | 除法和根计算以及快速结果格式化 | |
CN104133656A (zh) | 一种尾码采用移位和减法运算的浮点数除法器及运算方法 | |
CN107992284A (zh) | 一种可编程器件的除法功能实现方法 | |
CN100367191C (zh) | 一种快速流水线型除法器 | |
CN116594590A (zh) | 一种浮点数据的多功能运算装置及方法 | |
CN108055041A (zh) | 一种数据类型转换电路单元及装置 | |
US9348796B2 (en) | Arithmetic operation in a data processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |