JP4388980B2 - 浮動小数点数の除算または平方根演算を行う演算装置及び演算方法 - Google Patents

浮動小数点数の除算または平方根演算を行う演算装置及び演算方法 Download PDF

Info

Publication number
JP4388980B2
JP4388980B2 JP2007547828A JP2007547828A JP4388980B2 JP 4388980 B2 JP4388980 B2 JP 4388980B2 JP 2007547828 A JP2007547828 A JP 2007547828A JP 2007547828 A JP2007547828 A JP 2007547828A JP 4388980 B2 JP4388980 B2 JP 4388980B2
Authority
JP
Japan
Prior art keywords
mantissa
result
exponent
calculation
exponent part
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.)
Expired - Fee Related
Application number
JP2007547828A
Other languages
English (en)
Other versions
JPWO2007063601A1 (ja
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2007063601A1 publication Critical patent/JPWO2007063601A1/ja
Application granted granted Critical
Publication of JP4388980B2 publication Critical patent/JP4388980B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/552Powers or roots, e.g. Pythagorean sums
    • 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/487Multiplying; Dividing
    • G06F7/4873Dividing
    • 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/552Powers or roots, e.g. Pythagorean sums
    • G06F7/5525Roots or inverse roots of single operands
    • 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/49936Normalisation mentioned as feature only

Landscapes

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

Description

本発明は、浮動小数点数の除算または平方根演算を行う演算装置及び演算方法に関する。
近年のサーバコンピュータやパーソナルコンピュータ等の情報処理装置におけるCPU(中央処理装置)には、命令セットアーキテクチャとして各種の浮動小数点数演算命令が用意され、当該浮動小数点演算命令を実行する演算装置が設けられている(例えば、下記の特許文献1および2を参照)。
浮動小数点数の除算および平方根演算の演算アルゴリズムとして、SRT(Sweeney-Robertson-Tocher)法、ニュートン・ラプソン法、ゴールドシュミット法等の演算方法が用いられる。これらの演算方法では、以下の例に示されるように、ループ処理が採用されている。
1.SRT法
(1)除算
r(0)=op1_frac
for n=0 to n=k
r(n+1)=2{r(n)−q(n+1)*op2}

if r(n)≒0,q(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

if r(n)≒0,q(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.乗算型演算方法(ゴールドシュミット法)
(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)^2*rn−1 X0=OP2
Bn=Bn−1*rn−1 B0=OP2
rn=1+1/2(1−Xn) r0〜1/√OP2 (table)
end
図1は、このような浮動小数点数の除算および平方根演算を行う従来の演算装置の構成図である。図1の演算装置は、レジスタ11、12、15〜18、21、22、26、29、30、仮数部桁合わせシフタ13、14、セレクタ19、20、31、特殊オペランド処理回路23、指数部演算回路24、仮数部演算回路25、仮数部丸め回路27、および仮数部正規化シフタ28を備える。
特殊オペランド処理回路23は、2つのオペランドop1およびop2が所定のデータである場合には演算器による通常の演算処理を実行せずに、当該所定のオペランドに対する固定値データの演算結果を出力する特殊オペランド処理やエラー処理等の例外処理を実行し、指数部演算回路24は、op1およびop2の指数部の演算を実行する。また、仮数部演算回路25は、op1およびop2の仮数部の除算および平方根演算を実行する。
このような浮動小数点演算において、仮数部演算回路25の演算結果は、必ずしも正規化数(後に説明を行う)になるとは限らない。さらに、この演算結果には、仮数部丸め回路27による丸め処理が施されるが、丸め処理の後に、最上位ビットの繰り上がりが起こる可能性もある。そこで、通常は、丸め処理の後に仮数部正規化シフタ28により仮数部を正規化シフトするとともに、レジスタ29を介して、そのシフト量に応じた数値を指数部に加算している。
図2は、図1の特殊オペランド処理回路23の構成図である。特殊オペランド処理回路23は、特殊オペランド検出回路41および生成回路42を含む。特殊オペランド検出回路41は、演算対象のオペランドであるop1およびop2の値から、特殊オペランド処理または例外処理が必要なオペランドを検出し、検出信号を生成回路42に出力するとともに、選択信号sel normal/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の演算結果は必ずしも正規化数になるとは限らないため、丸め処理の結果が指数部の演算結果に影響を与えることになる。
このとき、仮数部正規化シフタ28に対する選択信号と、指数部加算のためのレジスタ29への入力信号は、仮数部丸め回路27内のインクリメンタのキャリーアウト信号、またはそれに準じる上位ビット信号から生成される。したがって、インクリメンタによるキャリーの伝播がキャリーアウト信号または上位ビット信号にまで伝播するのに時間がかかるため、一般的にこれらの信号はディレイ上のボトルネックとなり得る。また、指数部加
算の結果により、指数部演算回路24にてオーバーフローまたはアンダーフローが発生する可能性があるため、加算結果に対しては、その後の例外処理をも考慮する必要が生じる。
このように、仮数部演算回路25の演算結果から発生するデータの一連の流れは、演算装置の高速化を妨げる要因であり、回路構成を複雑化する要因でもあった。
特開平07−182143号公報 特表平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に代表される浮動小数点演算仕様における丸めモードが+無限大方向(正の無限大に近い方に丸める)という3つの条件のいずれかが満たされない場合に、最上位ビットの位置が所定の桁に固定され、正規化された仮数部の平方根演算結果を出力する。指数部演算部104は、Yの指数部を用いて指数部演算を実行し、指数部の平方根演算結果を出力する。例外処理部105は、上記3つの条件がすべて満たされた場合に、最上位ビットの位
置が所定の桁に固定され、正規化された仮数部の平方根演算結果を含む、√Yの演算結果を出力する。
上記3つの条件のいずれかが満たされない場合、最上位ビットの位置が所定の桁に固定され、正規化された仮数部の平方根演算結果のビット列データが、仮数部演算部103から出力され、対応する指数部の平方根演算結果のビット列データが、指数部演算部104から出力される。一方、上記3つの条件がすべて満たされた場合、これらの条件に適合し、かつ、仮数部の平方根演算結果の最上位ビットが上記所定の桁に固定され、正規化された仮数部の平方根演算結果を含む、√Yの演算結果のビット列データが、例外処理部105から出力される。
浮動小数点数の平方根演算では、後述するように、上記3つの条件がすべて満たされた場合にのみ、仮数部の演算結果のビット列データにおける最上位ビットの位置が変わってくる。そこで、このような場合を例外として扱うことで、最上位ビットを所定の位置に固定することにより正規化を行うことができる。
比較部101は、例えば、後述する図5の仮数部比較回路303または図9の仮数部比較回路700に対応し、シフト部102は、例えば、図5の仮数部桁合わせシフタ304、図8の仮数部桁合わせシフタ601、または図9の仮数部桁合わせシフタ701に対応する。
仮数部演算部103は、例えば、図5の仮数部演算回路317および仮数部丸め回路319に対応し、指数部演算部104は、例えば、図5の指数部演算回路316または図9の指数部演算回路704に対応する。例外処理部105は、例えば、図5の特殊オペランド処理回路315に対応する。
従来の演算装置の構成図である。 従来の特殊オペランド処理回路の構成図である。 本発明の演算装置の原理図である。 浮動小数点数の仕様を示す図である。 本発明の演算装置の構成図である。 本発明の特殊オペランド処理回路の構成図である。 Xの指数部を減算する構成を示す図である。 Yの指数部を加算する構成を示す図である。 最上位ビットを小数点以下第1位に固定する構成を示す図である。 本発明の効果を示す図である。
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
本実施形態では、浮動小数点の除算および平方根演算において、演算の初期段階でオペランドの最適化を行う、または特別な入力オペランドを例外処理へ回すことにより、丸め処理の結果を待たずに指数部演算の結果が確定できるようになる。これにより、オーバーフローおよびアンダーフローを、仮数部演算の結果に関係なく、指数部演算の結果のみで判定することができ、設計上最も大きなディレイ要因を排除できる。
以下では、IEEE(Institute of Electrical and Electronic Engineers)754規格の浮動小数点数の仕様を例にして説明する。IEEE浮動小数点数は、図4に示されるように、符号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で表される2進数である。演算結果が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<1⇔2x/y<2が成り立つ。したがって、次式が得られる。

1<2x/y<2 (2)

(2)式より、数学的に正確な値(丸め前の値)では、2x/yの最上位ビットは1の位にあることが分かる。そこで、2x/yの取り得る最大値をさらに詳しく調べる。
x<yより、2x/yが最大値を取るのは、x/yが1未満かつ最も1に近い場合、つまり、x=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・・・(2進) (4)

不等式(4)は、√yの丸め後の値が正規化シフトを必要としないことを示している。
(e−b)が奇数のとき、平方根q=√(2y)とすると、2≦2y<4であるから、qは次式を満たす。

√2≦q<2 (5)

(5)式より、数学的に正確な値においては、√(2y)の最上位ビットは1の位にあることが分かる。そこで、√(2y)の取り得る最大値をさらに詳しく調べる。
√(2y)が最大値を取るのは、y=2−δのときである。このとき、√(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)の最上位ビットが桁上がりを起こし、正規化シフトが必要となってしまうことが分かる。
√(2y)がその次に大きな値を取るのは、y=2−2δのときである。このとき、√(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を備える。
特殊オペランド処理回路315は、2つのオペランドop1およびop2が所定のデータである場合には演算器による通常の演算処理を実行せずに、当該所定のオペランドに対する固定値データの演算結果を出力する特殊オペランド処理やエラー処理等の例外処理を実行する。例えば、平方根演算が指定され、かつ、オペランドop2の仮数部の全ビットが1であり、かつ、オペランドop2の指数部とバイアス値との差である(e−b)が奇数であり、かつ、丸め方向が+無限大方向である場合には、指数部演算回路316に対して、当該平方根演算結果の最上位ビットに桁上がりを発生させるためのキャリー信号である信号exp result +1を出力する。さらに、以下に説明するオーバーフロー/アンダーフロー検出信号exp ovf/udfを指数部演算回路316から受信した場合には、特殊演算結果または例外フラグの生成を行い、特殊演算結果または例外フラグを信号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を含む。
特殊オペランド検出回路401は、op1およびop2の値が所定のデータである場合には通常の演算器による演算処理を実行せずに、当該所定のオペランドに対する固定値データの演算結果を出力する特殊オペランド処理またはエラー処理等の例外処理が必要なオペランドを検出し、検出信号を生成回路402およびOR回路404に出力する。
上記特殊オペランド処理の一例として、丸めモードが+無限大方向の場合、かつ、オペランドの指数部とバイアス値との差である(e−b)が奇数の場合において、仮数部の全ビットが1(yが最大値)であるオペランドに対する平方根演算が考えられる。
AND回路403は、以下に説明する4つの信号411〜414の論理積を、信号exp result +1として、OR回路404および指数部演算回路316に出力する。信号411は、平方根演算が指定されたときにアサートされる命令デコーダ(図示せず)の出力信号である。信号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として出力する。特殊演算結果の指数部は信号special expとして出力され、仮数部は信号special fractionとして出力される。
特に、AND回路403の出力信号がアサートされた場合は、生成回路402は(e−b)が奇数、かつ、仮数部の全ビットが1、かつ、丸めモードが+無限大方向の場合における仮数部の平方根演算√(2y)の結果を生成し、信号special fractionとして出力する。仮数部の全ビットが1の場合、√(2y)の演算結果は一意に特定できるので、例えば、生成回路402内にあらかじめ格納しておく。この場合の指数部の平方根演算の結果は、exp resultとして指数部演算回路316から供給される。
セレクタ405は、AND回路403の出力信号により切り替えられ、例外処理の条件を全て満足することによりAND回路403の出力信号がアサートされると、指数部演算回路316からの演算結果exp resultを選択して出力する。また、例外処理の条件のいずれかが欠けることによりAND回路403の出力信号がデアサートされると、生成回路402からの信号special expを選択して出力する。特殊オペランド処理回路315は、セレクタ405の出力信号と信号special fractionを併せて、信号special resとして出力する。
図5のセレクタ320は、特殊オペランド処理回路315が生成する選択信号sel normal/specialにより切り替えられ、選択信号sel normal/specialがアサートされると、生成回路402からの信号special resを選択して出力する。また、選択信号sel normal/specialがデアサートされると、指数部演算回路316および仮数部演算回路317により生成される通常の演算結果を選択して出力する。
このような特殊オペランド処理回路315によれば、平方根演算の対象となるオペランドの(e−b)が奇数であり、かつ、仮数部の全ビットが1の場合の演算結果を、仮数部演算回路317とは独立に生成することができる。この場合、仮数部丸め回路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は、暗黙の1を含めた仮数xを2倍するために、仮数部比較回路303からの出力に応じてxを1ビットだけ左にシフトする。これにより、仮数部演算回路317は、2x/yの演算結果を生成する。
また、XおよびYの指数部をそれぞれxeおよびyeとすると、指数部の除算結果は以下のようになる。

(xe−1)−ye=xe−ye−1

そこで、仮数部比較結果用ステージングラッチ310は、仮数部比較回路303の出力信号がアサートされたとき、“−1”を表す数値を指数部演算回路316に出力する。これを受けて、指数部演算回路316は、仮数Xに対するオペランドop1の指数部op1
expからオペランドop2の指数部op2 expを減算した結果にさらに“−1”を加算し、演算結果exp resultとして出力する。
さらに、当該演算は平方根演算ではなく除算であるため、図6のAND回路403の出力は0となり、特殊オペランド処理回路315の出力である信号sel normal/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ビットだけ右にシフトする。これにより、仮数部演算回路317は、図5の場合と同様に、2x/yの演算結果を生成する。
また、指数部の除算結果は以下のようになる。

xe−(ye+1)=xe−ye−1

したがって、図8に示した仮数部比較結果用ステージングラッチ310と指数部演算回路316の動作による演算結果は、図5の場合と等価となる。
図7または図8に示した構成によれば、除算の対象となる2つのオペランドの仮数xおよびyがx<yを満たす場合、いずれか一方の仮数をシフトするだけで、最上位ビットが1の位に固定された仮数部演算結果を得ることができる。したがって、丸め処理後の正規化シフトは不要となる。
除算と平方根演算で共通の演算後処理回路を持つ演算装置から仮数部正規化シフタを削除するためには、図7および図8の例に示した2つの場合分けが必須となる。言い換えれば、除算と平方根演算の結果の最上位ビット位置が同じとなる条件により当該演算を行う必要がある。
図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とop2 fracを比較し、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

そこで、レジスタ703は、仮数部比較回路700の出力信号がアサートされたとき、“+1”を表す数値を指数部演算回路704に出力する。これを受けて、指数部演算回路704は、xeに対応するオペランドop1の指数部op1 expからyeに対応するオペランドop2の指数部op2 expを減算した結果に“+1”を加算して出力する。
ただし、仮数部正規化シフタ706による左シフトに伴って、指数部演算の結果を減算を行う必要が生じる。そこで、減算回路705は、指数部演算回路704の出力から1を減算して、演算結果exp resultとして出力する。
op1 frac<op2 frac(x<y)の場合は、仮数部比較回路700の出力信号がデアサートされ、op1 fracおよびop2 fracはそのまま仮数部演算回路317に供給されることにより、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は、従来の演算装置と本発明による図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−ex
p: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ビット余計に商を算出する必要が生じる。このため、仮数部のループ処理を1回余計に繰り返す必要がある(図中single/double:n+1 cycle)。ニュートン・ラプソン法、ゴールドシュミット法等の収束型の除算/平方根演算では、収束誤差の精度が+1ビット分余計に要求される結果となる。つまり、図10における本発明における演算パイプラインと従来例における演算パイプラインとを比較すると、本発明においては除算における仮数部のループ処理が1ステージ分(図中+1 cycle)短縮され、さらに、特殊オペランド処理やエラー処理等の例外処理(図中sqr−exp:m cycle)が通常の演算処理(図中single/double:n cycle)よりも短いため(図中m≦n)、並列に処理することが可能となり、従来例におけるパイプラインのように丸め処理後に当該例外処理が不要となることにより、合計2ステージ分のパイプラインの短縮を実現できるという特有の効果を奏する。
指数部オーバーフロー/アンダーフローの処理が、演算パイプライン段数、ディレイ、および論理の複雑さ(仮数部正規化処理→指数部加算→指数部オーバーフロー/アンダーフロー→特殊オペランド処理による演算結果とフラグの生成)に影響を及ぼすことも併せて考慮すれば、本発明の演算装置には、図10におけるBステージにおいて、演算実行前にxとyの比較を行う場合以上のメリットが存在すると考えられる。
上記に説明したように、図10の演算装置において、仮数部のループ処理に必要な演算サイクル数をn、特殊オペランド処理回路315による例外処理に必要なサイクル数をmとすると、通常、m≦nとなる。したがって、例外処理は仮数部のループ処理よりも早く終わらせることができる。
これに対して、従来の演算装置では、仮数部演算が終了するまで指数部オーバーフロー/アンダーフローの処理が行えないので、例外処理が終了するのは、仮数部丸め回路27による処理の終了後となる。
演算処理の単純さの面から見ても、本発明の演算装置のように、オペランドの大小を比較し、仮数部演算回路317への入力に適切な前処理を施す方が好ましいといえる。
以上説明したように、本発明によれば、浮動小数点数の除算/平方根演算に用いられる演算方法を問わず、仮数部演算の結果の最上位ビットが所定の位置に固定することができる。このため、丸め処理後の正規化シフトの要否を判定する必要がなく、指数部の演算結果におけるオーバーフロー/アンダーフロー等の判定を、当該仮数部演算と切り離して行うことが可能になる。したがって、演算が全体として高速化されるとともに、回路構成が簡単化されるという特有の効果を奏することとなる。
また、論理回路が簡単になるため論理障害の発生が減少し、さらに、回路シミュレーションの時間が短縮されることが期待できる。

Claims (12)

  1. 仮数部及び指数部とを有する浮動小数点のオペランドX及びオペランドYに対して演算を実行する演算装置において、
    前記Xの仮数部xfと前記Yの仮数部yfの大小比較を行う比較手段と、
    前記xfとyfの比較結果に応じて、前記xfを含む仮数x又は前記yfを含む仮数yのいずれか一方をシフトするシフト手段と、
    前記シフト手段によりシフトされた仮数及び他方の仮数を用いて仮数部演算を実行し、最上位の位置が所定の桁に固定された仮数部の演算結果を出力する仮数部演算手段と、
    前記Xの指数部xeと前記Yの指数部yeとを用いて指数部演算を実行し、前記比較結果に応じて指数部演算の結果を修正して、指数部の演算結果を出力する指数部演算手段と、
    を備えることを特徴とする演算装置。
  2. 前記比較手段が、前記xfが前記yfより小さいことを示す比較結果が出力された場合において、
    前記シフト手段は、前記xを上位方向にシフトし、
    前記仮数部演算手段は、前記シフト手段によりシフトされた仮数x及び仮数yとを用いて2x/yの除算結果を生成し、
    前記指数部演算手段は、xe−ye−1の減算結果を生成することを特徴とする請求項1記載の演算装置。
  3. 前記比較手段が、前記xfが前記yfより小さいことを示す比較結果が出力された場合において、
    前記シフト手段は、前記yを下位方向にシフトし、
    前記仮数部演算手段は、前記シフト手段によりシフトされた仮数x及び仮数yとを用いて2x/yの除算結果を生成し、
    前記指数部演算手段は、xe−ye−1の減算結果を生成することを特徴とする請求項1記載の演算装置。
  4. 前記比較手段が、前記xfが前記yf以上の大きさであることを示す比較結果が出力された場合において、
    前記シフト手段は、前記xを下位方向にシフトし、
    前記仮数部演算手段は、前記シフト手段によりシフトされた仮数x及び仮数yとを用いてx/2yの除算結果を生成し、
    前記指数部演算手段は、xe−ye+1の減算結果を生成することを特徴とする請求項1記載の演算装置。
  5. 仮数部及び指数部とを有する浮動小数点のオペランドZに対して平方根演算√Zを実行する場合において、
    前記Zの仮数部の全情報が1、かつ、
    前記Zの指数部zeと演算精度に応じたバイアス値bとの差であるze−bが奇数、かつ、
    丸めモードが+無限大方向である場合に、
    √Zの平方根演算結果を生成する例外処理手段と、
    前記指数部演算手段の出力又は前記例外処理手段の出力を選択する選択手段と、
    をさらに備えることを特徴とする請求項1記載の演算装置。
  6. 前記例外処理手段は、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を含む√Zの演算結果を生成することを特徴とする請求項5記載の演算装置。
  7. 前記指数部演算手段及び前記例外処理手段は、並列に演算結果を生成することを特徴とする請求項5記載の演算装置。
  8. 仮数部及び指数部とを有する浮動小数点のオペランドYに対して√Yの平方根演算を実行する演算装置において、
    前記Yの仮数部を用いて仮数部演算を実行し、前記Yの仮数部の全情報が1、又は、前記Yの指数部yeと演算精度に応じたバイアス値bの差分ye−bが奇数、又は、丸めモードが+無限大方向であるという3条件のうち、いずれかの条件が満たされない場合に、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を出力する仮数部演算手段と、
    前記Yの指数部を用いて指数部演算を実行し、前記Yの指数部の平方根演算結果を出力する指数部演算手段と、
    前記3条件が満たされた場合に、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を含む√Yの演算結果を出力する例外処理手段と
    を備えることを特徴とする演算装置。
  9. 仮数部及び指数部とを有する浮動小数点のオペランドX及びオペランドYに対して演算を実行する演算装置を有する情報処理装置において、
    前記Xの仮数部xfと前記Yの仮数部yfの大小比較を行う比較手段と、
    前記xfとyfの比較結果に応じて、前記xfを含む仮数x又は前記yfを含む仮数yをシフトするシフト手段と、
    前記シフト手段によりシフトされた仮数x及び仮数yとを用いて仮数部演算を実行し、前記比較結果によらずに最上位の位置が所定の桁に固定された仮数部の演算結果を出力する仮数部演算手段と、
    前記Xの指数部xeと前記Yの指数部yeとを用いて指数部演算を実行し、前記比較結果に応じて指数部演算の結果を修正して、指数部の演算結果を出力する指数部演算手段と、
    を備える演算装置を有することを特徴とする情報処理装置。
  10. 仮数部及び指数部とを有する浮動小数点のオペランドYに対して√Yの平方根演算を実行する演算装置を有する情報処理装置において、
    前記Yの仮数部を用いて仮数部演算を実行し、前記Yの仮数部の全情報が1、又は、前記Yの指数部yeと演算精度に応じたバイアス値bの差分ye−bが奇数、又は、丸めモードが+無限大方向であるという3条件のうち、いずれかの条件が満たされない場合に、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を出力する仮数部演算手段と、
    前記Yの指数部を用いて指数部演算を実行し、前記Yの指数部の平方根演算結果を出力する指数部演算手段と、
    前記3条件が満たされた場合に、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を含む√Yの演算結果を出力する例外処理手段と
    を備えることを特徴とする演算装置を有することを特徴とする情報処理装置。
  11. 仮数部及び指数部とを有する浮動小数点のオペランドX及びオペランドYに対して演算を実行する演算方法において、
    前記Xの仮数部xfと前記Yの仮数部yfの大小比較を行うステップと、
    前記xfとyfの比較結果に応じて、前記xfを含む仮数x又は前記yfを含む仮数yをシフトするステップと、
    前記シフトされた仮数x及び仮数yとを用いて仮数部演算を実行し、前記比較結果によらずに最上位の位置が所定の桁に固定された仮数部の演算結果を出力するステップと、
    前記Xの指数部xeと前記Yの指数部yeとを用いて指数部演算を実行し、前記比較結果に応じて指数部演算の結果を修正して、指数部の演算結果を出力するステップと、
    を備えることを特徴とする浮動小数点の演算方法。
  12. 仮数部及び指数部とを有する浮動小数点のオペランドYに対して√Yの平方根演算を実行する演算方法において、
    前記Yの仮数部を用いて仮数部演算を実行し、前記Yの仮数部の全情報が1、又は、前記Yの指数部yeと演算精度に応じたバイアス値bの差分ye−bが奇数、又は、丸めモードが+無限大方向であるという3条件のうち、いずれかの条件が満たされない場合に、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を出力するステップと、
    前記Yの指数部を用いて指数部演算を実行し、前記Yの指数部の平方根演算結果を出力するステップと、
    前記3条件が満たされた場合に、最上位の位置が所定の桁に固定された仮数部の平方根演算結果を含む√Yの演算結果を出力するステップと
    を備えることを特徴とする浮動小数点の演算方法。
JP2007547828A 2005-12-02 2005-12-02 浮動小数点数の除算または平方根演算を行う演算装置及び演算方法 Expired - Fee Related JP4388980B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2005/022182 WO2007063601A1 (ja) 2005-12-02 2005-12-02 浮動小数点数の除算または平方根演算を行う演算装置及び演算方法

Publications (2)

Publication Number Publication Date
JPWO2007063601A1 JPWO2007063601A1 (ja) 2009-05-07
JP4388980B2 true JP4388980B2 (ja) 2009-12-24

Family

ID=38091942

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007547828A Expired - Fee Related JP4388980B2 (ja) 2005-12-02 2005-12-02 浮動小数点数の除算または平方根演算を行う演算装置及び演算方法

Country Status (6)

Country Link
US (1) US8166092B2 (ja)
EP (1) EP1956479A4 (ja)
JP (1) JP4388980B2 (ja)
KR (1) KR100948559B1 (ja)
CN (1) CN101326486B (ja)
WO (1) WO2007063601A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819094B2 (en) * 2009-06-10 2014-08-26 Synopsys, Inc. Multiplicative division circuit with reduced area
JP5407589B2 (ja) * 2009-06-29 2014-02-05 富士通株式会社 演算回路および演算処理装置ならびに演算処理方法
CN101650643B (zh) * 2009-09-11 2012-07-25 杭州中天微***有限公司 一种用于不可除尽浮点除法开方的舍入方法
US8751555B2 (en) * 2010-07-06 2014-06-10 Silminds, Llc, Egypt Rounding unit for decimal floating-point division
US8812575B2 (en) * 2010-07-06 2014-08-19 Silminds, Llc, Egypt Decimal floating-point square-root unit using Newton-Raphson iterations
US20120059866A1 (en) * 2010-09-03 2012-03-08 Advanced Micro Devices, Inc. Method and apparatus for performing floating-point division
CN103092561B (zh) * 2013-01-18 2015-11-25 北京理工大学 一种基于除数映射的Goldschmidt除法实现方法
GB2528497B (en) * 2014-07-24 2021-06-16 Advanced Risc Mach Ltd Apparatus And Method For Performing Floating-Point Square Root Operation
US10564931B1 (en) 2018-04-05 2020-02-18 Apple Inc. Floating-point arithmetic operation range exception override circuit
CN111913686B (zh) * 2020-05-29 2021-12-07 无锡市优利康电气有限公司 一种定点cpu的快速开平方计算的方法
KR102670314B1 (ko) * 2021-07-30 2024-05-29 주식회사 사피온코리아 부동 소수점 표현에서 함수 근사를 연산하는 방법 및 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4760550A (en) * 1986-09-11 1988-07-26 Amdahl Corporation Saving cycles in floating point division
JPH04507023A (ja) 1989-12-29 1992-12-03 モトローラ・インコーポレーテッド Ieee 754―1985標準に準拠した2進浮動小数点演算丸め
US5408426A (en) * 1992-03-17 1995-04-18 Hitachi, Ltd. Arithmetic unit capable of performing concurrent operations for high speed operation
JPH0635676A (ja) * 1992-07-21 1994-02-10 Fujitsu Ltd 除算回路
JP2803506B2 (ja) * 1992-12-25 1998-09-24 三菱電機株式会社 除算器
US5404324A (en) * 1993-11-01 1995-04-04 Hewlett-Packard Company Methods and apparatus for performing division and square root computations in a computer
KR0152169B1 (ko) * 1994-06-07 1998-10-15 모리시다 요이치 프라이어리티, 인코더
JP3313560B2 (ja) * 1996-01-31 2002-08-12 株式会社日立製作所 浮動小数点演算処理装置
US6360241B1 (en) * 1999-02-01 2002-03-19 Compaq Information Technologies Goup, L.P. Computer method and apparatus for division and square root operations using signed digit
EP1315080A1 (en) * 2001-11-22 2003-05-28 STMicroelectronics Limited Circuitry for carrying out square root and division operations
EP1315081B1 (en) * 2001-11-22 2008-05-07 STMicroelectronics Limited Circuitry for carrying out at least one of a square root operation and a division operation

Also Published As

Publication number Publication date
CN101326486A (zh) 2008-12-17
US8166092B2 (en) 2012-04-24
JPWO2007063601A1 (ja) 2009-05-07
KR20080054435A (ko) 2008-06-17
CN101326486B (zh) 2012-06-20
EP1956479A4 (en) 2010-03-17
WO2007063601A1 (ja) 2007-06-07
EP1956479A1 (en) 2008-08-13
US20080288571A1 (en) 2008-11-20
KR100948559B1 (ko) 2010-03-18

Similar Documents

Publication Publication Date Title
JP4388980B2 (ja) 浮動小数点数の除算または平方根演算を行う演算装置及び演算方法
US8489663B2 (en) Decimal floating-point adder with leading zero anticipation
US8214417B2 (en) Subnormal number handling in floating point adder without detection of subnormal numbers before exponent subtraction
US5995991A (en) Floating point architecture with tagged operands
JPH0635675A (ja) データプロセッサにおいて除算を行うための方法および装置
JPH0542011B2 (ja)
KR20130062352A (ko) 벡터 리딩 0, 벡터 트레일링 0, 벡터 오퍼랜드 1 카운트 및 벡터 패리티 계산을 위한 기능 유닛
US8239441B2 (en) Leading zero estimation modification for unfused rounding catastrophic cancellation
Boersma et al. The POWER7 binary floating-point unit
JP4858794B2 (ja) 浮動小数点除算器、及びそれを用いた情報処理装置
KR20020063058A (ko) 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치
US6947962B2 (en) Overflow prediction algorithm and logic for high speed arithmetic units
US7290023B2 (en) High performance implementation of exponent adjustment in a floating point design
JP2000293494A (ja) 並列計算装置および並列計算方法
US8041927B2 (en) Processor apparatus and method of processing multiple data by single instructions
JP4613992B2 (ja) Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ
JP3257278B2 (ja) 冗長なシフト数予測とシフト誤り補正を用いた正規化装置
US20240004611A1 (en) Tininess detection
Underwood et al. IEEE floating-point extension for containing er-ror in the RISC-V architecture
EP0837390A1 (en) Improvements in or relating to microprocessor integrated circuits
Pedone Design and characterization of Variable Latency adders for floating-point arithmetic units
Fiolhais Exact Inner Product Processor in FPGA
CN116382625A (zh) 用于多精度算术右移的方法、装置及***
CN116382628A (zh) 具有减少1求补延迟的浮点融合乘加
El-Ghamrawy A Mixed Decimal/Binary Redundant Floating-Point Adder

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090929

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091005

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121009

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121009

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131009

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees