首页> 中国专利> 进行浮点数的除法运算或平方根运算的运算装置和运算方法

进行浮点数的除法运算或平方根运算的运算装置和运算方法

摘要

本发明提供一种进行浮点数的除法运算或平方根运算的运算装置和运算方法。在执行浮点数的除法运算X/Y时,根据X的尾数部xf和Y的尾数部yf的大小关系,使包含xf的尾数x或包含yf的尾数y的比特排列数据移位,来执行尾数部运算。由此,生成将最高位比特的位置固定在规定位的尾数部的除法运算结果。并且,在执行平方根运算

著录项

  • 公开/公告号CN101326486A

    专利类型发明专利

  • 公开/公告日2008-12-17

    原文格式PDF

  • 申请/专利权人 富士通株式会社;

    申请/专利号CN200580052207.2

  • 发明设计人 鸭志田志郎;

    申请日2005-12-02

  • 分类号G06F7/00;G06F7/537;

  • 代理机构北京三友知识产权代理有限公司;

  • 代理人黄纶伟

  • 地址 日本神奈川县

  • 入库时间 2023-12-17 21:10:54

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-01-18

    未缴年费专利权终止 IPC(主分类):G06F7/00 授权公告日:20120620 终止日期:20151202 申请日:20051202

    专利权的终止

  • 2012-06-20

    授权

    授权

  • 2009-02-11

    实质审查的生效

    实质审查的生效

  • 2008-12-17

    公开

    公开

说明书

技术领域

本发明涉及进行浮点数的除法运算或平方根运算的运算装置和运算方法。

背景技术

在近年来的服务器计算机和个人计算机等信息处理装置的CPU(中央处理装置)中,设置有如下的运算装置:作为命令集体系而准备各种浮点数运算命令,执行相应浮点运算命令(例如参照下述专利文献1和2)。

作为浮点数的除法运算和平方根运算的运算算法,使用SRT(Sweeney-Robertson-Tocher)法、Newton-Raphson(ニユ一トン·ラプソン)法、Goldschmidt(ゴ一ルドシユミット)法等运算方法。在这些运算方法中,如以下的例子所示,采用循环处理。

1.SRT法

(1)除法运算

r(0)=op1_frac

for n=0 to n=k

r(n+1)=2{r(n)-q(n+1)*op2}

ifq(n+1)=0

else if r(n)>0,q(n+1)=1

else if r(n)<0,q(n+1)=-1

n=n+1

end

(2)平方根运算

r(0)=op2_frac

for n=0 to n=k

r(n+1)=2{r(n)-2q(n+1)*Q(n)-2(k-n-1)}

Q(n)=∑(m=1→n)2(k-m)*q(m)

    =partial quotient

ifq(n+1)=0

else if r(n)>0,q(n+1)=1

else if r(n)<0,q(n+1)=-1

n=n+1

end

2.乘法运算型运算方法(Goldschmidt法)

(1)除法运算

for n=0 to n=k

Gn=Gn-1*Fn-1      G0=OP2

Qn=Qn-1*Fn-1      Q0=OP1

Fn=2-Gn           F0~1/OP2(table)

end

(2)平方根运算

for n=0 to n=k

Xn=(Xn-1)^*m-1    X0=OP2

Bn=Bn-1*rn-1      B0=OP2

rn=1+1/2(1-Xn)    (table)

end

图1是进行这种浮点数的除法运算和平方根运算的现有的运算装置的结构图。图1的运算装置具有:寄存器11、12、15~18、21、22、26、29、30;尾数部对位移位器13、14;选择器19、20、31;特殊操作数处理电路23;指数部运算电路24;尾数部运算电路25;尾数部取整电路27;以及尾数部归一化移位器28。

在两个操作数op1和op2是规定数据的情况下,特殊操作数处理电路23不执行基于运算器的通常的运算处理,而执行相对于该规定的操作数输出固定值数据的运算结果的特殊操作数处理或错误处理等例外处理,指数部运算电路24执行op1和op2的指数部的运算。并且,尾数部运算电路25执行op1和op2的尾数部的除法运算和平方根运算。

在这种浮点运算中,尾数部运算电路25的运算结果不一定限于归一化数(后面进行说明)。进而,尾数部取整电路27对该运算结果实施取整处理,但是,取整处理后,可能引起最高位比特的进位。因此,通常在取整处理后由尾数部归一化移位器28对尾数部进行归一化移位,并且经由寄存器29在指数部加上与该移位量对应的数值。

图2是图1的特殊操作数处理电路23的结构图。特殊操作数处理电路23包含特殊操作数检测电路41和生成电路42。特殊操作数检测电路41根据运算对象的操作数即op1和op2的值,检测需要特殊操作数处理或例外处理的操作数,向生成电路42输出检测信号,并输出选择信号selnormal/special。

生成电路42根据来自特殊操作数检测电路41的检测信号、例如以IEEE(Institute of Electrical and Electronic Engineers:电子和电气工程师协会)754标准为代表的浮点运算数的规格下的取整模式指定信号rd、和来自指数部运算电路24的溢出/下溢检测信号exp ovf/udf,生成特殊运算结果或例外标记,作为信号special res输出。

图1的选择器31根据选择信号sel normal/special进行切换,选择并输出来自生成电路42的信号special res、或由指数部运算电路24和尾数部运算电路25生成的通常的运算结果。

但是,上述现有的运算装置具有以下问题。

在浮点数的除法运算和平方根运算中,尾数部运算电路25的运算结果不一定限于归一化数,所以,取整处理的结果对指数部的运算结果造成影响。

此时,根据尾数部取整电路27内的增值器的进位输出信号、或以此为基准的高位比特信号,生成针对尾数部归一化移位器28的选择信号和指数部加法运算用的针对寄存器29的输入信号。因此,在增值器的进位传播中,传播到进位输出信号或高位比特信号需要时间,所以,一般这些信号成为延迟上的瓶颈。并且,根据指数部加法运算的结果,可能在指数部运算电路24产生溢出或下溢,所以,也需要对加法运算结果考虑之后的例外处理。

这样,根据尾数部运算电路25的运算结果产生的数据的一系列流程是妨碍运算装置高速化的要因,也是使电路结构复杂化的要因。

专利文献1:日本特开平07-182143号公报

专利文献2:日本特表平04-507023号公报

发明内容

本发明的课题在于,以一定形式使浮点数的除法运算和平方根运算中的尾数部运算的结果一致,由此实现运算的高速化和电路结构的简单化。

图3是本发明的第1运算装置和第2运算装置的原理图。

本发明的第1运算装置具有比较部101、移位部102、尾数部运算部103和指数部运算部104,将浮点数X和Y作为操作数输入时,执行X/Y的除法运算命令。

比较部101比较X的尾数部xf和Y的尾数部yf的大小,移位部102根据xf和yf的比较结果,使包含xf的尾数x或包含yf的尾数y的比特排列数据移位。尾数部运算部103使用移位后的x和y执行尾数部运算,与上述比较结果无关地,输出将最高位比特的位置固定在规定位的尾数部的除法运算结果。指数部运算部104使用X的指数部xe和Y的指数部ye执行指数部运算,根据上述比较结果校正指数部运算的结果,输出指数部的除法运算结果。

当输入操作数中相当于xf和yf的比特排列数据被输入到比较部101时,表示xf和yf的大小关系的信号被输出到移位部102和指数部运算部104。移位部102根据该信号,使x或y的比特排列数据向预先确定的方向移位,指数部运算部104根据预先确定的运算对xe和ye的运算结果进行校正。尾数部运算部103使用移位后的比特排列数据,与xf和yf的大小关系无关地,生成将最高位比特的位置固定在规定位的尾数部的除法运算结果的比特排列数据。

在浮点数的除法运算中,如后所述,根据xf和yf的大小关系,改变x/y的运算结果的比特排列数据中最高位比特的位置。因此,仅限于x<y这样的特定的大小关系成立时,通过变更尾数部的运算方法,能够将最高位比特固定在规定位置。

本发明的第2运算装置具有:尾数部运算部103、指数部运算部104和例外处理部105,将浮点数Y作为操作数输入时,执行√Y的平方根运算。

尾数部运算部103使用Y的尾数部执行尾数部运算,在不满足Y的尾数部的所有比特为1、且Y的指数部ye和偏置值b的差值ye-b为奇数、且以IEEE754为代表的浮点运算规格下的取整模式为+无穷大方向(向接近正无穷大的一方取整)这三个条件中的任一条件的情况下,输出将最高位比特的位置固定在规定位的、归一化的尾数部的平方根运算结果。指数部运算部104使用Y的指数部执行指数部运算,输出指数部的平方根运算结果。例外处理部105在满足所有上述三个条件的情况下,输出包含将最高位比特的位置固定在规定位的、归一化的尾数部的平方根运算结果在内的√Y的运算结果。

在不满足上述三个条件中的任一条件的情况下,从尾数部运算部103输出将最高位比特的位置固定在规定位的、归一化的尾数部的平方根运算结果的比特排列数据,从指数部运算部104输出对应的指数部的平方根运算结果的比特排列数据。另一方面,在满足所有上述三个条件的情况下,从例外处理部105输出适合于这些条件的、且包含将尾数部的平方根运算结果的最高位比特固定在上述规定位的归一化的尾数部的平方根运算结果在内的√Y的运算结果的比特排列数据。

在浮点数的平方根运算中,如后所述,仅在满足所有上述三个条件的情况下,改变尾数部的运算结果的比特排列数据中的最高位比特的位置。因此,通过将这种情况作为例外情况来处理,能够通过将最高位比特固定在规定位置来进行归一化。

比较部101例如对应于后述的图5的尾数部比较电路303或图9的尾数部比较电路700,移位部102例如对应于图5的尾数部对位移位器304、图8的尾数部对位移位器601或图9的尾数部对位移位器701。

尾数部运算部103例如对应于图5的尾数部运算电路317和尾数部取整电路319,指数部运算部104例如对应于图5的指数部运算电路316或图9的指数部运算电路704。例外处理部105例如对应于图5的特殊操作数处理电路315。

附图说明

图1是现有的运算装置的结构图。

图2是现有的特殊操作数处理电路的结构图。

图3是本发明的运算装置的原理图。

图4是示出浮点数的规格的图。

图5是本发明的运算装置的结构图。

图6是本发明的特殊操作数处理电路的结构图。

图7是示出对X的指数部进行减法运算的结构的图。

图8是示出对Y的指数部进行加法运算的结构的图。

图9是示出将最高位比特固定在小数点以下第1位的结构的图。

图10是示出本发明的效果的图。

具体实施方式

下面,参照附图详细说明用于实施本发明的最佳方式。

在本实施方式中,在浮点的除法运算和平方根运算中,通过在运算的初始阶段进行操作数的优化、或将特别的输入操作数转移到例外处理,不用等待取整处理的结果,就能够确定指数部运算的结果。由此,与尾数部运算的结果无关地,仅利用指数部运算的结果就能够判定溢出和下溢,能够排除设计上最大的延迟要因。

下面,以IEEE(Institute of Electrical and Electronic Engineers)754标准的浮点数的规格为例进行说明。如图4所示,IEEE浮点数由符号s、指数部e和尾数部f构成,意味着由下式表示的数值(归一化数)。

(-1)s×2(e-b)×1.f

这里,b是在单精度时具有b=127的值、在双精度时具有b=1023的值的偏置值。在单精度的情况下,浮点数的所有比特长度为32比特,s、e和f的比特长度分别是1、8和23比特。并且,在双精度的情况下,浮点数的所有比特长度为64比特,s、e和f的比特长度分别是1、11和52比特。

上式的“1.f”是整数部分由1(被称为隐含的1)表示、小数点以下由f表示的二进制数。在运算结果没有收敛于f的有效数字范围内的情况下,根据IEEE取整规则,有效数字最低位比特被取整。设该有效数字最低位比特的大小为δ时,单精度时δ=2-23,双精度时δ=2-52。由上述说明可知,IEEE浮点数格式的尾数部是以δ为最小单位的有限小数。“1.f”的存在范围由下式表示。

1≤1.f≤2-δ        (1)

“1.f”不是取连续值的数,而是满足上述不等式范围的δ的倍数。

1.f=a×δ:a为整数

即,“1.f”存在于实数的数直线上的δ间隔的阵点上。取整是指对不是δ的倍数的数利用存在于其附近的δ的倍数近似。因此,取整前的值是指不受这种限制的实数,取整后的值是指满足上述制约的数(=1.f)。

在某运算结果的取整前的值取不等式(1)的范围以外的值时,为了使其成为满足IEEE浮点格式的值(归一化数),可能需要对取整后的值(=1.f)进行归一化移位。

相反,如果取整前的值在不等式(1)的范围内,则不需要对取整后的“1.f”进行归一化移位。该不等式的上限和下限的数是δ的倍数,所以,如果某实数在不等式的范围内,则取整后的值最大(最小)也就是与该上限(下限)相同的值,不会超过上限(下限)。

接着,考察除法运算X÷Y的尾数部运算。设X的尾数(1.f)为x,Y的尾数(1.f)为y。

首先,当x≥y时,除法运算r=x÷y的最大值为y=1、x=2-δ时的r=2-δ,最小值为x=y时的r=1。由此,1≤r≤2-δ,根据不等式(1)可知,取整后的值不需要进行归一化移位。

当x<y时,通过对操作数实施适当的前处理,可以省略对取整后的值进行归一化移位。例如,从X的指数部减1,使尾数为2x,进行除法运算r=2x÷y。

此时,2x>y成立,所以2x/y>1。并且,x<y,所以,x/y<12x/y<2成立。因此,获得下式。

1<2x/y<2               (2)

根据(2)式可知,在数学上正确的值(取整前的值)中,2x/y的最高位比特位于1的位。因此,进一步详细调查2x/y可以取的最大值。

根据x<y,在x/y小于1且最接近1时、即x=y-δ时,2x/y取最大值。此时r=2x/y=2-2δ/y,因为y<2,所以2δ/y>2δ/2=δ。因此,下式成立。

2x/y=2-2δ/y<2-δ      (3)

结合(2)式和(3)式可知,1<2x/y<2-δ,取整后的值不需要进行归一化移位。

但是,作为x<y时对操作数的前处理,也有在Y的指数部加1而使尾数成为y/2的方法。该情况下,与上述同样,可以说明取整后的值不需要进行归一化移位。

接着,考察平方根运算√Y的尾数部运算。设Y的符号为0,指数部为e,尾数(1.f)为y。此时√Y=√(2(e-b)×y)。

(e-b)为偶数(2n)时,√Y可以如下式那样变形。

√Y=√(22n×y)=(√y)×2n

(e-b)为奇数(2n+1)时,√Y可以如下式那样变形。

√Y=√(2(2n+1)×y)=√(22n×2y)={√(2y)}×2n

(e-b)为偶数时,设平方根q=√y(1≤y<2)时,q满足下式。

1≤q<√2=1.0110…(二进制)         (4)

不等式(4)表示√y的取整后的值不需要进行归一化移位。

(e-b)为奇数时,设平方根q=√(2y)时2≤2y<4,所以q满足下式。

√2≤q<2             (5)

根据(5)式可知,在数学上正确的值中,√(2y)的最高位比特位于1的位。因此,进一步详细调查√(2y)可以取的最大值。

在y=2-δ时√(2y)取最大值。此时√(2y)=√(4-2δ)。并且,也可以考虑δ2<<δ,所以获得下式。

4-4δ+δ2<4-2δ<4-2δ+(δ/2)2

(2-δ)2<4-2δ<(2-δ/2)2

2-δ<>(4-2δ)<2-δ/2---(6)

观察(6)式左侧的不等式可知,2-δ<√(4-2δ),√(2y)超过不需要进行归一化移位的范围。

即,2-δ意味着“1.f”可以取的最大值。2-δ/2意味着“1.f”可以取的最大值+保护比特大小。保护比特意味着最低位比特的更低位的位,其大小为δ/2。因此可知,仅在取整模式为+无穷大方向的情况下,√(2y)的最高位比特引起进位,需要进行归一化移位。

在y=2-2δ时√(2y)取其次大的值。此时√(2y)=√(4-4δ)。在(6)式中,将δ置换为2δ,获得下式。

2-2δ<√(4-4δ)<2-δ         (7)

根据(7)式可知,√(2y)处于不需要进行归一化移位的范围内。

f(x)=√x(x>0)为单调递增函数,所以,x1<x2和√x1<√x2是充分必要条件的关系。即,不会在x1<x2时√x1>√x2,如果x1<x2则必定√x1<√x2。

因此可知,仅y取最大值时是例外情况,在除此之外的情况下,不需要对运算结果进行归一化移位。

在上述说明中,在1≤y或2y<4的范围内考察平方根运算的输入尾数,但是,也有在1/4≤y或2y<1的范围内进行考察的方法。此时的说明与上述说明相同。

根据以上的考察,在运算开始时对操作数进行情况区分,通过实施必要的前处理,可以从理论上删除取整处理后的归一化移位处理。如下总结情况区分。

1.除法运算

尾数x<y→X的指数-1,尾数部运算2x÷y

或者→Y的指数+1,尾数部运算x÷(y/2)等

2.平方根运算

(e-b)为奇数且尾数y=max→例外处理

接着,参照图5~图8说明进行这种除法运算和平方根运算的运算装置。

图5是实施方式的运算装置的结构图。图5的运算装置具有:存储了op1整体的第1操作数op1用寄存器301、存储了op2整体的第2操作数op2用寄存器302、存储了op1整体的第1操作数op1用分级锁存器306、存储了op1的指数部的第1操作数op1指数部用分级锁存器308、存储了op2整体的第2操作数op2用分级锁存器307、存储了op2的指数部的第2操作数op1指数部用分级锁存器309、存储了尾数部比较结果的尾数部比较结果用分级锁存器310、存储了op1的尾数部的第1操作数op1尾数部用寄存器313、存储了op2的尾数部的第2操作数op2尾数部用寄存器314、存储了尾数部运算电路的运算结果的尾数部运算电路输出用分级锁存器318、尾数部比较电路303、尾数部对位移位器304、305、尾数部运算电路的第1操作数选择器311、尾数部运算电路的第2操作数选择器312、运算电路输出选择器320、特殊操作数处理电路315、指数部运算电路316、尾数部运算电路317和尾数部取整电路319。

在两个操作数op1和op2是规定数据的情况下,特殊操作数处理电路315不执行基于运算器的通常的运算处理,而执行相对于该规定的操作数输出固定值数据的运算结果的特殊操作数处理或错误处理等例外处理。例如,在指定平方根运算、且操作数op2的尾数部的所有比特为1、且操作数op2的指数部和偏置值之差即(e-b)为奇数、且取整方向为+无穷大方向的情况下,对指数部运算电路316输出用于使该平方根运算结果的最高位比特产生进位的进位信号即信号exp result+1。进而,在从指数部运算电路316接收到以下说明的溢出/下溢检测信号exp ovf/udf的情况下,进行特殊运算结果或例外标记的生成,输出特殊运算结果或例外标记作为信号special res。

指数部运算电路316执行op1和op2的指数部的运算。例如,在除法运算中,使用op1的指数部xe和op2的指数部ye,输出xe-ye-1或xe-ye+1作为指数部运算结果信号exp result。进而,在从特殊操作数处理电路315接收到信号exp result+1的情况下,在指数部运算电路316的输出即指数部运算结果中加1。并且,在产生指数部运算的结果溢出/下溢的情况下,对特殊操作数电路输出溢出/下溢检测信号exp ovf/udf。

并且,尾数部运算电路317执行op1和op2的尾数部的除法运算和平方根运算。op1和op2分别对应于上述的X和Y。并且,信号loop是用于通过重复减法运算来执行除法运算的反馈信号。

尾数部对位移位器304和305分别具有根据需要使op1和op2的尾数部的比特排列数据向左方向或右方向(高位比特方向或低位比特方向)移位的功能。

图6是图5的特殊操作数处理电路315的结构图。特殊操作数处理电路315包含特殊操作数检测电路401、生成电路402、AND电路403、OR电路404和选择器405。

在op1和op2的值是规定数据的情况下,特殊操作数检测电路401检测需要不执行通常的基于运算器的运算处理、而执行相对于该规定的操作数输出固定值数据的运算结果的特殊操作数处理或错误处理等例外处理的操作数,向生成电路402和OR电路404输出检测信号。

作为上述特殊操作数处理的一例,在取整模式为+无穷大方向、且操作数的指数部和偏置值之差即(e-b)为奇数的情况下,对尾数部的所有比特为1(y为最大值)的操作数考虑平方根运算。

AND电路403向OR电路404和指数部运算电路316输出以下说明的4个信号411~414的逻辑积,作为信号exp result+1。信号411是指定平方根运算时被断言(assert)的命令译码器(未图示)的输出信号。信号412是操作数op2的尾数部的所有比特为1(y为最大值)时被断言的操作数译码器(未图示)的输出信号。并且,信号413是操作数op2的(e-b)为奇数时被断言的操作数译码器(未图示)的输出信号。信号414是取整模式为+无穷大方向时被断言的运算模式寄存器(未图示)的输出信号。

因此,在平方根运算中,在平方根运算对象的操作数是规定数据的情况下,仅在需要不执行通常的基于运算器的运算处理、而执行相对于该规定的操作数输出固定值数据的运算结果的特殊操作数处理或错误处理等例外处理时,AND电路403的输出信号exp result+1被断言。并且,对指数部运算电路输出用于使该平方根运算结果的最高位比特产生进位的进位信号即信号exp result+1。

OR电路404输出来自特殊操作数检测电路401的检测信号和AND电路403的输出信号的逻辑和,作为选择信号sel normal/special。

生成电路402根据来自特殊操作数检测电路401的检测信号、AND电路403的输出信号、取整模式指定信号rd、和来自指数部运算电路316的溢出/下溢检测信号exp ovf/udf,进行特殊运算结果或例外标记的生成,在根据该信号检测出溢出/下溢的产生的情况下,输出特殊运算结果或例外标记,作为信号special res。特殊运算结果的指数部被作为信号specialres输出,尾数部被作为信号special fraction输出。

特别地,在AND电路403的输出信号被断言的情况下,生成电路402生成(e-b)为奇数、且尾数部的所有比特为1、且取整模式为+无穷大方向时的尾数部的平方根运算√(2y)的结果,并作为信号specialfraction输出。在尾数部的所有比特为1的情况下,√(2y)的运算结果可以唯一地确定,所以,例如预先存储在生成电路402内。从指数部运算电路316提供此时指数部的平方根运算结果,作为exp result。

选择器405根据AND电路403的输出信号进行切换,在由于满足所有例外处理的条件而AND电路403的输出信号被断言时,选择并输出来自指数部运算电路316的运算结果exp result。并且,在由于缺少例外处理的条件的任意一个而AND电路403的输出信号没有被断言时,选择并输出来自生成电路402的信号special exp。特殊操作数处理电路315合并选择器405的输出信号和信号special fraction,作为信号special res输出。

图5的选择器320根据特殊操作数处理电路315生成的选择信号selnormal/special进行切换,在选择信号sel normal/special被断言时,选择并输出来自生成电路402的信号special res。并且,在选择信号selnormal/special没有被断言时,选择并输出由指数部运算电路316和尾数部运算电路317生成的通常的运算结果。

根据这种特殊操作数处理电路315,能够与尾数部运算电路317独立地生成成为平方根运算对象的操作数的(e-b)为奇数、且尾数部的所有比特为1时的运算结果。该情况下,不选择尾数部取整电路319的输出,所以,不需要进行归一化用的移位。

图7示出由图5的尾数部比较电路303、尾数部对位移位器304、305、尾数部比较结果用分级锁存器310和指数部运算电路316构成的电路部分。在该例子中,设操作数op1的尾数为x,操作数op2的尾数为y,在x<y时,从X的指数部减1来执行除法运算2x÷y。

此时,与尾数x对应的操作数op1的尾数部op1 frac被输入到尾数部比较电路303和尾数部对位移位器304,与尾数x对应的操作数op2的尾数部op2 frac被输入到尾数部比较电路303和尾数部对位移位器305。而且,尾数部比较电路303比较op1 frac和op2 frac,在op1 frac<op2 frac时,断言表示该比较结果的输出信号。

尾数部对位移位器304接收该尾数部op1 frac,为了使包含隐含的1的尾数x成为2倍,根据来自尾数部比较电路303的输出,使x向左移位1比特。由此,尾数部运算电路317生成2x/y的运算结果。

并且,设X和Y的指数部分别为xe和ye时,指数部的除法运算结果如下。

(xe-1)-ye=xe-ye-1

因此,在尾数部比较电路303的输出信号被断言时,尾数部比较结果用分级锁存器310向指数部运算电路316输出表示“-1”的数值。指数部运算电路316接收该数值,在从相对于尾数X的操作数op1的指数部op1 exp减去操作数op2的指数部op2 exp的结果中加“-1”,作为运算结果exp result输出。

进而,该运算不是平方根运算而是除法运算,所以,图6的AND电路403的输出为0,特殊操作数处理电路315的输出即信号selnormal/special选择sel normal。因此,在选择器320中,选择sel normal侧,最终输出exp result作为运算结果。

图8示出代替在上述图7的实施例中在x<y时执行除法运算2x÷y而执行与该除法运算等价的除法运算x÷(y/2)的结构。该情况下,在y的指数部加1,将图7的尾数部对位移位器305置换为尾数部对位移位器601。

由尾数部比较电路303比较op1 frac和op2 frac,当尾数部比较电路303的输出信号被断言时,尾数部对位移位器601为了使包含隐含的1的尾数y成为1/2倍,使y向右移位1比特。由此,与图5的情况相同,尾数部运算电路317生成2x/y的运算结果。

并且,指数部的除法运算结果如下。

xe-(ye+1)=xe-ye-1

因此,图8所示的尾数部比较结果用分级锁存器310和指数部运算电路316的动作所获得的运算结果与图5的情况等价。

根据图7或图8所示的结构,在成为除法运算对象的两个操作数的尾数x和y满足x<y的情况下,仅使任意一方的尾数移位,就能够获得将最高位比特固定在1的位的尾数部运算结果。因此,不需要进行取整处理后的归一化移位。

为了从具有在除法运算和平方根运算中共同的运算后处理电路的运算装置中删除尾数部归一化移位器,必须区分图7和图8的例子所示的两个情况。换言之,需要根据除法运算和平方根运算的结果的最高位比特位置相同这一条件来进行该运算。

在图7和图8的例子中,将取整处理后的运算结果的最高位比特固定在1的位,但是,最高位比特的位置也可以是除此之外的规定位置。例如,也可以使用将最高位比特固定在小数点以下第1位的运算方法。该情况下,例如如下那样变更上述除法运算的前处理,在平方根运算中,在1/4≤y或2y<1的范围内进行尾数部的运算。

尾数x≥y→X的指数+1,尾数部运算(x/2)÷y

图9示出应用了该运算方法的结构。在该结构中,将图7的尾数部比较电路303置换为尾数部比较电路700,将尾数部对位移位器304和305置换为尾数部对位移位器701和702。并且,将尾数部比较结果用分级锁存器310和指数部运算电路316置换为寄存器703和指数部运算电路704。进而,在指数部运算电路704的后级追加减法运算电路705,在尾数部取整电路319的后级追加尾数部归一化移位器706。

在执行除法运算的情况下,尾数部比较电路700比较op1 frac和op2frac,在op1 frac≥op2 frac时,断言表示该比较结果的输出信号。

尾数部对位移位器701接收该信号,为了使包含隐含的1的尾数x成为1/2倍,使x向右移位1比特。由此,尾数部运算电路317生成x/(2y)的运算结果,尾数部取整电路319相对于尾数部运算电路317的运算结果,输出将最高位比特固定在小数点以下第1位的运算结果。然后,尾数部归一化移位器706使来自尾数部取整电路319的运算结果向左移位1比特,输出将最高位比特固定在1的位的运算结果,由此进行归一化。

并且,指数部的除法运算结果如下。

(xe+1)-ye=xe-ye+1

因此,在尾数部比较电路700的输出信号被断言时,寄存器703向指数部运算电路704输出表示“+1”的数值。指数部运算电路704接收该数值,在从与xe对应的操作数op1的指数部op1 exp减去与ye对应的操作数op2的指数部op2 exp的结果中加“+1”,并输出。

但是,伴随尾数部归一化移位器706进行的左移位,需要对指数部运算的结果进行减法运算。因此,减法运算电路705从指数部运算电路704的输出中减去1,作为运算结果exp result输出。

在op1 frac<op2 frac(x<y)的情况下,尾数部比较电路700的输出信号被断言,直接向尾数部运算电路317提供op1 frac和op2 frac,由此,生成x/y作为运算结果。并且,从指数部运算电路704输出从op1 exp中减去op2 exp后的结果。尾数部归一化移位器706和减法运算电路705进行的后处理与x≥y的情况相同。

接着,在执行平方根运算的情况下,命令译码器(未图示)的输出即信号squareroot被断言。尾数部对位移位器702接收该信号,为了使包含隐含的1的尾数y成为1/4倍,使y向右移位2比特,指数部运算电路704在op2 exp中加2后进行平方根运算。由此,图5的尾数部运算电路317在1/4≤y或2y<1的范围内进行运算,尾数部取整电路319输出将最高位比特固定在小数点以下第1位的运算结果。尾数部归一化移位器706和减法运算电路705进行的后处理与除法运算的情况相同。

根据图9所示的结构,在除法运算和平方根运算双方中,都能够获得将最高位比特固定在小数点以下第1位的尾数部运算结果。该情况下,始终需要进行取整处理后的归一化移位,但是,不需要进行基于来自尾数部取整电路319的进位输出信号的控制。

在以上的结构例中,将除法运算和平方根运算的结果的最高位比特固定在相同位置,但是,在除法运算和平方根运算中设置各自的运算后处理电路的情况下,也可以按照每个运算分别决定运算结果所期待的最高位比特位置。

图10以削减流水线(pipe line)级数这样的形式来明示现有的运算装置和本发明的图5的运算装置所实现的运算高速化的效果。左列表示阶段名,分别是:B(Beginning:前处理)阶段、X1(eXecute1:第1执行)阶段、X2(eXecute2:第2执行)阶段、X*(eXecute*:第*执行)阶段、(new)lastX(本发明的最终)阶段、(old)lastX-1(现有例的最终-1)阶段、和(old)lastX(现有例的最终)阶段。

首先,说明图10的右半部分所示的现有例中的流水线处理。现有例中的流水线由以下部分构成:存储操作数op1的操作数寄存器11、存储操作数op2的操作数寄存器12、用于要进行运算的操作数的尾数部的对位以及使运算精度一致的尾数部对位移位器13和14、用于存储流水线运算阶段之间的运算结果的分级锁存器21和22、除法运算器/平方根运算器25、特殊操作数处理电路23、尾数部取整电路27、1比特左/右移位器28、移位量存储用分级锁存器29、取整处理结果存储用分级锁存器30、指数部运算电路24、选择器(没有参照编号)和运算结果存储用寄存器(result)。

在现有例中,在图10所示的X1阶段中,由尾数部对位移位器13和14进行要进行运算的操作数的尾数部的对位。接着,在X2阶段到(new)lastX阶段中,使用除法运算器/平方根运算器25,通过重复执行减法运算的循环处理(图中的single/double·sqr-exp:n cycle+1 cycle)来执行除法运算或平方根运算。并且,该循环处理结束后,在(old)lastX-1阶段中,通过尾数部取整电路27,使用尾数部取整处理和尾数部取整处理电路的输出即表示取整方向的信号sift amt,执行基于1比特左/右移位的取整处理,在取整处理结果存储用分级锁存器30中存储该取整处理结果。进而,在(old)lastX阶段中,指数部运算电路24执行指数部运算。另外,在该指数部运算电路24中产生溢出/下溢时,使用溢出/下溢检测信号ov/ud,特殊操作数处理电路23执行例外处理,进而,根据来自特殊操作数处理电路23的sel sp/nm信号,在产生了例外处理的情况下,选择来自特殊操作数处理电路23的special res输出(未图示)作为运算结果,在除此之外的通常情况下,将存储在取整处理结果存储用分级锁存器30中的取整处理结果作为运算结果,存储到运算结果存储用寄存器(result)中。

接着,说明图10的左半部分所示的本发明中的流水线处理。本发明中的流水线由以下部分构成:存储操作数op1的操作数寄存器301、存储操作数op2的操作数寄存器302、尾数部比较电路303、用于要进行运算的操作数的尾数部的对位以及使运算精度一致的尾数部对位移位器304和305、用于存储流水线运算阶段之间的运算结果的分级锁存器313和314、除法运算器/平方根运算器317、特殊操作数处理电路315、尾数部取整电路319、选择器(没有参照编号)和运算结果存储用寄存器(result)。

在本发明中,在图10所示的X1阶段中,由尾数部比较电路303执行要进行运算的操作数的尾数部之间的比较,使用该比较结果,由尾数部对位移位器304和305进行要进行运算的操作数的尾数部的对位。接着,在X2阶段到(div/spr loop)阶段中,使用除法运算器/平方根运算器317,通过重复执行减法运算的循环处理(图中single/double:n cycle)来执行除法运算或平方根运算,或者,使用特殊操作数处理电路315,在操作数是规定数据的情况下,不执行基于运算器的通常的运算处理,而执行相对于该规定的操作数输出固定值数据的运算结果的特殊操作数处理或错误处理等例外处理(图中sqr-exp:m cycle)。并且,该循环处理结束后,在(new)lastX阶段中,由尾数部取整电路319执行取整处理。进而,根据来自特殊操作数处理电路315的sel sp/nm信号,在通常处理的情况下,进行该取整处理结果的选择,在运算结果存储用寄存器(result)中存储该取整处理结果。或者,在特殊操作数处理和错误处理等例外处理的情况下,根据来自特殊操作数处理电路315的sel sp/nm信号,选择来自特殊操作数处理电路315的special res输出(未图示)作为运算结果,并作为运算结果存储到运算结果存储用寄存器(result)中。

因此,在本发明的平方根运算的情况下,能够与通常运算并列地由特殊操作数处理电路315进行例外处理,所以,相对于通常运算,没有执行时间的增加或运算周期的增加等影响。因此,在尾数部取整电路319进行的处理结束的同时,平方根运算完成(图中single/double:n cycle)。

一般在除法运算的情况下,像现有例那样需要在尾数部运算前比较x和y,所以,担心运算流水线中执行时间(运算周期)的增加。但是,如图10所示的现有的运算装置那样,不对x<y的情况进行特别处理而继续运算时,不仅需要进行取整处理后的归一化移位和指数部加法运算,而且,为了确定运算结果的最高位比特的位置,还需要多出1比特地计算商。因此,需要多出一次地重复尾数部的循环处理(图中single/double:n+1cycle)。在Newton-Raphson法、Goldschmidt法等收敛型的除法运算/平方根运算中,其结果是,要求收敛误差的精度多出+1比特量。即,比较图10中的本发明的运算流水线和现有例的运算流水线时,在本发明中,除法运算的尾数部的循环处理被缩短1个阶段(图中+1cycle),进而,特殊操作数处理和错误处理等例外处理(图中sqr-exp:m cycle)比通常的运算处理(图中single/double:n cycle)短(图中m≤n),所以能够并列地处理,由于不需要像现有例的流水线那样在取整处理后进行该例外处理,发挥能够实现缩短合计2个阶段的流水线的特有效果。

如果一并考虑指数部溢出/下溢的处理对运算流水线级数、延迟和逻辑的复杂性(尾数部归一化处理→指数部加法运算→指数部溢出/下溢→基于特殊操作数处理的运算结果和标记的生成)造成的影响,则认为在本发明的运算装置中存在以下优点:在图10的B阶段中,在运算执行前进行x和y的比较。

如上述说明的那样,在图10的运算装置中,设尾数部的循环处理所需要的运算周期数为n,特殊操作数处理电路315进行的例外处理所需要的周期数为m时,通常m≤n。因此,能够使例外处理比尾数部的循环处理提前结束。

与此相对,在现有的运算装置中,在尾数部运算结束之前不进行指数部溢出/下溢的处理,所以,在尾数部取整电路27进行的处理结束后,例外处理结束。

从运算处理的简单性方面看,优选像本发明的运算装置那样,比较操作数的大小,对向尾数部运算电路317的输入实施适当的前处理。

如以上说明那样,根据本发明,能够与用于浮点数的除法运算/平方根运算的运算方法无关地,将尾数部运算的结果的最高位比特固定在规定的位置。因此,不需要判定取整处理后是否需要进行归一化移位,就能够与该尾数部运算分开进行指数部的运算结果中的溢出/下溢等的判定。因此,发挥运算整体高速化、且电路结构简单化这样的特有效果。

并且,因为逻辑电路简单,所以逻辑障碍的产生减少,进而,能够期待缩短电路模拟的时间。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号