JP2507183B2 - 浮動小数点加減算装置 - Google Patents
浮動小数点加減算装置Info
- Publication number
- JP2507183B2 JP2507183B2 JP2332503A JP33250390A JP2507183B2 JP 2507183 B2 JP2507183 B2 JP 2507183B2 JP 2332503 A JP2332503 A JP 2332503A JP 33250390 A JP33250390 A JP 33250390A JP 2507183 B2 JP2507183 B2 JP 2507183B2
- Authority
- JP
- Japan
- Prior art keywords
- operand
- subtraction
- circuit
- mantissa
- addition
- 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 - Lifetime
Links
Description
【発明の詳細な説明】 産業上の利用分野 本発明は、半導体集積回路装置に係り、特にIEEE(Th
e institute of Electroical and Electronics Enginee
rs)規格の浮動小数点加減算回路に関する。
e institute of Electroical and Electronics Enginee
rs)規格の浮動小数点加減算回路に関する。
従来の技術 IEEE754規格によると32ビット浮動小数点形式のデー
タについて正規化数と非正規化数は(1)式に示すよう
に定義されている。
タについて正規化数と非正規化数は(1)式に示すよう
に定義されている。
正規化数 (-1)S2E-127(1.F) 非正規化数(-1)S2O-126(1.F) (1) ここで、Sは符号値、Eはバイアスされる前の指数値、
Fは小数点以下の仮数値を表す。但し、Eは1以上の数
である。それぞれSは1ビット、Eは8ビット、Fは23
ビットで表現される。(1)式より、非正規化数の指数
値は0であり、また指数値のバイアス値が正規化数と非
正規化数で1違っている事がわかる。
Fは小数点以下の仮数値を表す。但し、Eは1以上の数
である。それぞれSは1ビット、Eは8ビット、Fは23
ビットで表現される。(1)式より、非正規化数の指数
値は0であり、また指数値のバイアス値が正規化数と非
正規化数で1違っている事がわかる。
第3図は従来の浮動小数点加減算装置のブロック図で
ある。入力される2つのオペランドをX,Yとし、それぞ
れの符号部、指数部、仮数部をXs,Ys,Xe,Ye、Xf,Yfとす
る。非正規化数検出回路301はオペランド指数部(Xe,Y
e)を入力し、それぞれが非正規化数であるか否かを検
出する回路である。スワップ回路302は、オペランド仮
数部(1.Xfまたは0.Xf、1.Yfまたは0.Yf)を入力し、そ
のまま出力するかスワップして出力する回路である。減
算回路303は、オペランド指数部(Xe,Ye)を減算し、絶
対値(|Xe−Ye|)と符号(S(Xe−Ye))を出力する回
路である。減算回路304は、前記絶対値(|Xe−Ye|)か
ら1を減じる回路である。右バレルシフト回路305は、
データ線L32からの入力値を24ビットまでの任意のビッ
ト数右にシフトする回路である。右シフト回路306は、
データ線L31からの入力値と前記右バレルシフト回路305
の出力値(データ値L33)をシフト信号生成回路310から
の信号(加算であるという信号)をもとに、右に1桁シ
フトするかまたは、そのまま出力する回路である。加減
算回路307は、前記右シフト回路306の出力値を加算また
は減算し丸め処理を行う回路である。左シフト回路308
は、前記加減算回路307の出力値(データ線L34)を左に
1ビットシフトするかまたはそのまま出力する回路であ
る。マルチプレクサ309、311は、2入力1出力のセレク
タである。シフト信号生成回路310は、2つの入力オペ
ランドの符号値(Xs,Ys)と、減算実行信号subをもと
に、実行演算が加算であるという信号を出力する回路で
ある。加減算回路312は、シフト信号生成回路310から出
力される信号を基に加算を実行するか減算を実行するか
決定し、仮に加算である場合、マルチプレクサ311から
出力される指数値と"0"との加算と、指数値と"1"との加
算を並列に実行し、その後加減算回路307より出力され
る信号(L35)によりどちらかを選択するという回路で
ある。
ある。入力される2つのオペランドをX,Yとし、それぞ
れの符号部、指数部、仮数部をXs,Ys,Xe,Ye、Xf,Yfとす
る。非正規化数検出回路301はオペランド指数部(Xe,Y
e)を入力し、それぞれが非正規化数であるか否かを検
出する回路である。スワップ回路302は、オペランド仮
数部(1.Xfまたは0.Xf、1.Yfまたは0.Yf)を入力し、そ
のまま出力するかスワップして出力する回路である。減
算回路303は、オペランド指数部(Xe,Ye)を減算し、絶
対値(|Xe−Ye|)と符号(S(Xe−Ye))を出力する回
路である。減算回路304は、前記絶対値(|Xe−Ye|)か
ら1を減じる回路である。右バレルシフト回路305は、
データ線L32からの入力値を24ビットまでの任意のビッ
ト数右にシフトする回路である。右シフト回路306は、
データ線L31からの入力値と前記右バレルシフト回路305
の出力値(データ値L33)をシフト信号生成回路310から
の信号(加算であるという信号)をもとに、右に1桁シ
フトするかまたは、そのまま出力する回路である。加減
算回路307は、前記右シフト回路306の出力値を加算また
は減算し丸め処理を行う回路である。左シフト回路308
は、前記加減算回路307の出力値(データ線L34)を左に
1ビットシフトするかまたはそのまま出力する回路であ
る。マルチプレクサ309、311は、2入力1出力のセレク
タである。シフト信号生成回路310は、2つの入力オペ
ランドの符号値(Xs,Ys)と、減算実行信号subをもと
に、実行演算が加算であるという信号を出力する回路で
ある。加減算回路312は、シフト信号生成回路310から出
力される信号を基に加算を実行するか減算を実行するか
決定し、仮に加算である場合、マルチプレクサ311から
出力される指数値と"0"との加算と、指数値と"1"との加
算を並列に実行し、その後加減算回路307より出力され
る信号(L35)によりどちらかを選択するという回路で
ある。
次に第3図に示される従来例の動作に付いて説明す
る。2つの入力オペランド指数部(Xe,Ye)は減算回路3
03、非正規化数検出回路301、マルチプレクサ311に入力
される。また、同時にオペランド仮数部(1.Xfまたは0.
Xf、1.Yfまたは0.Yf)もスワップ回路302に入力され
る。まず、減算回路303では、指数値を同一にするため
のオペランド仮数部のシフト量|Xe−Ye|と、符号S(Xe
−Ye)を計算する。2つのオペランドが正規化数同士で
あるかまたは非正規化数同士である場合、(1)式に示
したように、指数部に於けるバイアス値は2つのオペラ
ンド間で同じである(正規化数の場合−127、非正規化
数の場合−126)ため、シフト回路305へのシフト量は、
|Xe−Ye|となる。これは減算回路303で計算される。し
かし2つのオペランドのうち片方が正規化数で片方が非
正規化数の場合、(1)式のように、指数部のバイアス
値が正規化数と非正規化数で1異なる為、前記指数値を
同一にするためのオペランド仮数部のシフト量は、|Xe
−Ye|−1でなくてはならない。すなわち、減算回路303
の出力値に補正を加える必要がある。例えば、オペラン
ドXを正規化数、オペランドYを非正規化数であると
し、これを(2)式に示す。
る。2つの入力オペランド指数部(Xe,Ye)は減算回路3
03、非正規化数検出回路301、マルチプレクサ311に入力
される。また、同時にオペランド仮数部(1.Xfまたは0.
Xf、1.Yfまたは0.Yf)もスワップ回路302に入力され
る。まず、減算回路303では、指数値を同一にするため
のオペランド仮数部のシフト量|Xe−Ye|と、符号S(Xe
−Ye)を計算する。2つのオペランドが正規化数同士で
あるかまたは非正規化数同士である場合、(1)式に示
したように、指数部に於けるバイアス値は2つのオペラ
ンド間で同じである(正規化数の場合−127、非正規化
数の場合−126)ため、シフト回路305へのシフト量は、
|Xe−Ye|となる。これは減算回路303で計算される。し
かし2つのオペランドのうち片方が正規化数で片方が非
正規化数の場合、(1)式のように、指数部のバイアス
値が正規化数と非正規化数で1異なる為、前記指数値を
同一にするためのオペランド仮数部のシフト量は、|Xe
−Ye|−1でなくてはならない。すなわち、減算回路303
の出力値に補正を加える必要がある。例えば、オペラン
ドXを正規化数、オペランドYを非正規化数であると
し、これを(2)式に示す。
X=(-1)Xs1.Xf*2Xe-127 Y=(-1)Ys0.Yf*2O-126 (2) この時、減算回路303で計算されるオペランドYの仮数
部の右シフト量は“|Xe−0|"となる。しかしオペランド
XとYでは指数部のバイアス値が“−127"と“−126"で
1だけ異なっている。そのため、オペランドYの仮数部
“0.Yf"を“|Xe−0|"だけ右シフトし、指数部“−126"
に“|Xe−0|"を加算しても、オペランドXとYの指数部
は同一にならない。オペランドXとYの指数部を同一に
するためには、前記右シフト量|Xe−0|から、さらに1
だけ減じ、この値分だけ仮数部を右シフトしなければな
らない。以上は、加算の場合について述べたが、2つの
オペランドを減算する時にも同じことがいえる。すなわ
ち、減算回路304では、正規化数と非正規化数の加減算
を実行するときの、指数値を同一にするためのオペラン
ド仮数部のシフト量の補正を行っている。
部の右シフト量は“|Xe−0|"となる。しかしオペランド
XとYでは指数部のバイアス値が“−127"と“−126"で
1だけ異なっている。そのため、オペランドYの仮数部
“0.Yf"を“|Xe−0|"だけ右シフトし、指数部“−126"
に“|Xe−0|"を加算しても、オペランドXとYの指数部
は同一にならない。オペランドXとYの指数部を同一に
するためには、前記右シフト量|Xe−0|から、さらに1
だけ減じ、この値分だけ仮数部を右シフトしなければな
らない。以上は、加算の場合について述べたが、2つの
オペランドを減算する時にも同じことがいえる。すなわ
ち、減算回路304では、正規化数と非正規化数の加減算
を実行するときの、指数値を同一にするためのオペラン
ド仮数部のシフト量の補正を行っている。
また、上記減算回路303で指数部減算を実行すると同
時に、非正規化数検出回路301では、オペランドX,Yがそ
れぞれ非正規化数であるか否かを検出する。オペランド
X,Yの指数部が0であれば、非正規化数である。そし
て、オペランドのうちどちらか一方が非正規化数であれ
ば、マルチプレクサ309で減算回路304からの出力(|Xe
−Ye|−1)を選択する。また、オペランドが両方とも
正規化数、または非正規化数であれば、マルチプレクサ
309では減算回路303からの出力(|Xe−Ye|)を選択し、
右バレルシフト回路305へ入力されるシフト量が決定さ
れる。
時に、非正規化数検出回路301では、オペランドX,Yがそ
れぞれ非正規化数であるか否かを検出する。オペランド
X,Yの指数部が0であれば、非正規化数である。そし
て、オペランドのうちどちらか一方が非正規化数であれ
ば、マルチプレクサ309で減算回路304からの出力(|Xe
−Ye|−1)を選択する。また、オペランドが両方とも
正規化数、または非正規化数であれば、マルチプレクサ
309では減算回路303からの出力(|Xe−Ye|)を選択し、
右バレルシフト回路305へ入力されるシフト量が決定さ
れる。
また、マルチプレクサ311では、減算回路303から出力
された指数減算値の符号S(Xe−Ye)を基に、Xe,Yeの
内、大きい方を選択し出力する。この大きい方の指数値
が、加減算結果の指数値の候補になる。
された指数減算値の符号S(Xe−Ye)を基に、Xe,Yeの
内、大きい方を選択し出力する。この大きい方の指数値
が、加減算結果の指数値の候補になる。
次に、オペランド仮数部(1.Xfまたは0.Xf、1.Yfまた
は0.Yf)について述べる。オペランド仮数部は、スワッ
プ回路302に於て、減算回路303で計算される符号S(Xe
−Ye)により、以下のようにスワップされる。Xe−Yeが
正であるかまたは0の時(S(Xe−Ye)>=0)、Xオ
ペランド(1.Xfまたは0.Xf)はデータ線L31に、Yオペ
ランド(1.Yfまたは0.Yf)はデータ線L32に出力され
る。また、負の時(S(Xe−Ye)<0)は入力値をスワ
ップして出力する。そして、スワップ回路302から出力
されたデータ線L31は、そのまま右シフト回路306に入力
され、データ線L32は右バレルシフト回路305に入力され
る。
は0.Yf)について述べる。オペランド仮数部は、スワッ
プ回路302に於て、減算回路303で計算される符号S(Xe
−Ye)により、以下のようにスワップされる。Xe−Yeが
正であるかまたは0の時(S(Xe−Ye)>=0)、Xオ
ペランド(1.Xfまたは0.Xf)はデータ線L31に、Yオペ
ランド(1.Yfまたは0.Yf)はデータ線L32に出力され
る。また、負の時(S(Xe−Ye)<0)は入力値をスワ
ップして出力する。そして、スワップ回路302から出力
されたデータ線L31は、そのまま右シフト回路306に入力
され、データ線L32は右バレルシフト回路305に入力され
る。
以上述べた動作から、問題となることを以下に述べ
る。2つのオペランド入力時点から右バレルシフト回路
305までのデータの遅延を見る。オペランド仮数部(1.X
fまたは0.Xf、1.Yfまたは0.Yf)が右バレルシフト回路3
05に入力されるまでの一番長いパスは、減算回路303で
指数値の差の符号(S(Xe−Ye))を求めスワップ回路
302を制御し、オペランド仮数部データのうち指数値の
小さい方を右バレルシフト回路305に入力というパスで
ある。
る。2つのオペランド入力時点から右バレルシフト回路
305までのデータの遅延を見る。オペランド仮数部(1.X
fまたは0.Xf、1.Yfまたは0.Yf)が右バレルシフト回路3
05に入力されるまでの一番長いパスは、減算回路303で
指数値の差の符号(S(Xe−Ye))を求めスワップ回路
302を制御し、オペランド仮数部データのうち指数値の
小さい方を右バレルシフト回路305に入力というパスで
ある。
また、右バレルシフト回路305にシフト量のデータが
入力されるまでの一番長いパスは、減算回路303、304を
用い、|Xe−Ye|−1を計算し、この値をマルチプレクサ
309を通し、右バレルシフト回路305に入力するパスであ
る。明らかに後者のシフト量を計算するパスのほうが減
算回路を2つ通過するため遅延段数が長くなる。すなわ
ち上記したように、従来の浮動小数点加減算装置におい
ては、桁合わせのためのシフト量を計算するために2つ
の減算回路を使用するため、演算時間が長くなり、装置
全体の回路が複雑に且つ大きくなる。また回路規模が大
きくなることにともなって消費電力が増大するという欠
点がある。
入力されるまでの一番長いパスは、減算回路303、304を
用い、|Xe−Ye|−1を計算し、この値をマルチプレクサ
309を通し、右バレルシフト回路305に入力するパスであ
る。明らかに後者のシフト量を計算するパスのほうが減
算回路を2つ通過するため遅延段数が長くなる。すなわ
ち上記したように、従来の浮動小数点加減算装置におい
ては、桁合わせのためのシフト量を計算するために2つ
の減算回路を使用するため、演算時間が長くなり、装置
全体の回路が複雑に且つ大きくなる。また回路規模が大
きくなることにともなって消費電力が増大するという欠
点がある。
さらに以下に、従来例の動作説明を続ける。右シフト
回路306は、シフト信号生成回路310からのシフト信号
(これは加算であるという信号である)を基にデータ線
L31、データ線L33のデータを1桁右にシフトする回路で
ある。この右シフト回路306は、データ線L31,L33から入
力されるデータを、加減算回路307で加算または減算を
実行後に生じる丸め位置のずれを補正する回路である。
右シフト回路306の動作について以下に述べる。
回路306は、シフト信号生成回路310からのシフト信号
(これは加算であるという信号である)を基にデータ線
L31、データ線L33のデータを1桁右にシフトする回路で
ある。この右シフト回路306は、データ線L31,L33から入
力されるデータを、加減算回路307で加算または減算を
実行後に生じる丸め位置のずれを補正する回路である。
右シフト回路306の動作について以下に述べる。
加算及び減算実行時においては、全部で3通りのパタ
ーンが存在する。
ーンが存在する。
正規化数±正規化数 (3−1) 正規化数±非正規化数 (3−2) 非正規化数±非正規化数 (3−3) 上記3つのパターンを実行したとき、右シフト回路306
を使用しない場合について以下に述べる。
を使用しない場合について以下に述べる。
(3−1),(3−2),(3−3)で加算を実行し
た場合、加減算回路307の中で丸め処理する以前の結果
は次のようになる。(3−1),(3−2)の場合、丸
め処理する前の結果は、(4−1),(4−2)に示さ
れるように、仮数部の最上位にある“1"が小数点より上
位2桁目であるか、または小数点より上位1桁目にある
という状態になる。また(3−3)の場合、丸め処理す
る前の結果は、(4−3),(4−4)に示すような結
果が得られる。
た場合、加減算回路307の中で丸め処理する以前の結果
は次のようになる。(3−1),(3−2)の場合、丸
め処理する前の結果は、(4−1),(4−2)に示さ
れるように、仮数部の最上位にある“1"が小数点より上
位2桁目であるか、または小数点より上位1桁目にある
という状態になる。また(3−3)の場合、丸め処理す
る前の結果は、(4−3),(4−4)に示すような結
果が得られる。
1*.****−−−**×2Xe-127 (4−1) 1.****−−−**×2Xe-127 (4−2) 1.****−−−**×2O-126 (4−3) 0.****−−−**×2O-126 (4−4) また、(3−1),(3−2),(3−3)で減算を
実行した場合、丸める前の結果は次のようになる。(3
−1),(3−2)の場合、(5−1),(5−2),
(5−3)に示すように、小数点より上位1桁目に“1"
があるか、または小数点より下位1桁目に“1"があるか
または、小数点より下位2桁目以下に初めて“1"が存在
する3種類の結果が得られる。また(3−3)の場合は
(5−4)のように必ず非正規化数になる。
実行した場合、丸める前の結果は次のようになる。(3
−1),(3−2)の場合、(5−1),(5−2),
(5−3)に示すように、小数点より上位1桁目に“1"
があるか、または小数点より下位1桁目に“1"があるか
または、小数点より下位2桁目以下に初めて“1"が存在
する3種類の結果が得られる。また(3−3)の場合は
(5−4)のように必ず非正規化数になる。
1.****−−−**×2Xe-127 (5−1) 0.1***−−−**×2Xe-127 (5−2) 0.0***−−−**×2Xe-127 (5−3) 0.****−−−**×2O-126 (5−4) すなわち、以上述べたように、加算と減算で結果が正
規化数になる場合、最も上位に数値“1"の来る位置が1
桁ずれている事が解る。このことは、結果を有効桁数に
丸め処理する場合、加算結果を丸め処理する位置と減算
結果を丸め処理する位置が違うということである。つま
り、丸め処理する回路を加算と減算の各々の場合につい
て備えておく必要があるということであり、ハードウエ
アの増加を引き起こす。これは明らかに加算と減算にお
いて丸め桁上げの位置を同一にし、丸め処理回路を1つ
だけ使用した方が得である。このため、加算結果また
は、減算結果のうちどちらか一方をもう片方の結果に桁
合わせる処理を行なう必要がある。本従来例では、シフ
ト信号生成回路310により演算の種類を判断し、加算の
場合は右シフト回路306で入力オペランドを右1ビット
シフトし、減算の場合の結果と同じ丸め位置になるよう
にアライメンとする。そうすることで、丸め処理する前
の加算結果は(4)式から(6)式に示すようになり、
丸め処理する前の減算結果と丸め位置を同一にする事が
出来る。
規化数になる場合、最も上位に数値“1"の来る位置が1
桁ずれている事が解る。このことは、結果を有効桁数に
丸め処理する場合、加算結果を丸め処理する位置と減算
結果を丸め処理する位置が違うということである。つま
り、丸め処理する回路を加算と減算の各々の場合につい
て備えておく必要があるということであり、ハードウエ
アの増加を引き起こす。これは明らかに加算と減算にお
いて丸め桁上げの位置を同一にし、丸め処理回路を1つ
だけ使用した方が得である。このため、加算結果また
は、減算結果のうちどちらか一方をもう片方の結果に桁
合わせる処理を行なう必要がある。本従来例では、シフ
ト信号生成回路310により演算の種類を判断し、加算の
場合は右シフト回路306で入力オペランドを右1ビット
シフトし、減算の場合の結果と同じ丸め位置になるよう
にアライメンとする。そうすることで、丸め処理する前
の加算結果は(4)式から(6)式に示すようになり、
丸め処理する前の減算結果と丸め位置を同一にする事が
出来る。
1.****−−−**×2Xe-127+1 (6−1) 0.1***−−−**×2Xe-127+1 (6−2) 0.1***−−−**×2Xo-126+1 (6−3) 0.0***−−−**×2O-126+1 (6−4) この時、加算オペランドは右シフトされているため、
指数値は見かけ上“+1"増加している。この指数値の増
加の補正については後で述べる。以上のように、右シフ
ト回路306では、加算の場合、入力オペランドを1桁右
シフトする事で、減算場合と丸め位置を同一にするとい
う役割を果たす。
指数値は見かけ上“+1"増加している。この指数値の増
加の補正については後で述べる。以上のように、右シフ
ト回路306では、加算の場合、入力オペランドを1桁右
シフトする事で、減算場合と丸め位置を同一にするとい
う役割を果たす。
右バレルシフト回路305から出力されたデータは、加
減算回路307に入力され加減算後丸め処理され、結果が
データ線L34に出力される。また、データ線L35には、加
減算結果の小数点より上位1桁目の値が出力される。
減算回路307に入力され加減算後丸め処理され、結果が
データ線L34に出力される。また、データ線L35には、加
減算結果の小数点より上位1桁目の値が出力される。
この後、左シフト回路308、加減算回路312を使用し、
演算結果の正規化処理を実行する。この正規化処理の際
に、加算時の指数値の補正が実行される。
演算結果の正規化処理を実行する。この正規化処理の際
に、加算時の指数値の補正が実行される。
データ線L34上には、(5),(6)式の仮数部に示
されるような演算結果が出力される。但し、厳密には
(5),(6)式は仮数部が丸め処理される前の値であ
るが、丸め処理された後もこれらのどれかのデータ形式
になる為、これらの値を使用する。以下に、正規化処理
について、加算の場合と減算の場合について述べる。
されるような演算結果が出力される。但し、厳密には
(5),(6)式は仮数部が丸め処理される前の値であ
るが、丸め処理された後もこれらのどれかのデータ形式
になる為、これらの値を使用する。以下に、正規化処理
について、加算の場合と減算の場合について述べる。
加算の場合、(6−1)に示すように、小数点より上
位1桁目に1がある場合(データ線L35=1)、左シフ
ト回路308では、データ線34のデータ(仮数値)をその
まま出力する。一方、指数値は、加減算回路312でXe+
1を実行し、出力する。そうすることで、指数値のバイ
アス値は“−127"になり、しかも仮数値は“1.***”
という正規化数のフォーマットで出力される。次に(6
−2),(6−3),(6−4)に示すように、小数点
より上位1桁目に0がある場合(データ線L35=0、左
シフト回路308では、データ線L34のデータ(仮数値)を
左1桁シフトし出力する。一方、指数値は、加減算回路
312でXe+0を実行し、出力する。こうすることで、
(6−2)については正規化処理が実行され、(6−
4)は、この処理で、非正規化数として出力される。
(6−3)については、データを次のサイクルで別のハ
ードウエアを用い、正規化処理する。
位1桁目に1がある場合(データ線L35=1)、左シフ
ト回路308では、データ線34のデータ(仮数値)をその
まま出力する。一方、指数値は、加減算回路312でXe+
1を実行し、出力する。そうすることで、指数値のバイ
アス値は“−127"になり、しかも仮数値は“1.***”
という正規化数のフォーマットで出力される。次に(6
−2),(6−3),(6−4)に示すように、小数点
より上位1桁目に0がある場合(データ線L35=0、左
シフト回路308では、データ線L34のデータ(仮数値)を
左1桁シフトし出力する。一方、指数値は、加減算回路
312でXe+0を実行し、出力する。こうすることで、
(6−2)については正規化処理が実行され、(6−
4)は、この処理で、非正規化数として出力される。
(6−3)については、データを次のサイクルで別のハ
ードウエアを用い、正規化処理する。
減算の場合、(5−1)に示すように小数点より上位
1桁目に“1"が存在する場合(データ線L35=1)、左
シフト回路308ではデータ線L34のデータ(仮数値)をシ
フトせずに出力する。一方、加減算回路312では、減算X
e−0が実行され、指数値として出力され、正規化処理
が実現される。(5−2),(5−3),(5−4)の
様に、小数点より上位1桁目に“0"が存在する場合(デ
ータ線L35=0)、左シフト回路308では、データ線L34
のデータ(仮数値)を左1桁シフトする。一方、加減算
回路312では、減算Xe−1を実行する。こうすること
で、(5−2)については、正規化処理が実行される。
また、(5−3),(5−4)に関しては、データを次
のサイクルで別のハードウエアを用い、正規化処理また
は非正規化処理を実行する。
1桁目に“1"が存在する場合(データ線L35=1)、左
シフト回路308ではデータ線L34のデータ(仮数値)をシ
フトせずに出力する。一方、加減算回路312では、減算X
e−0が実行され、指数値として出力され、正規化処理
が実現される。(5−2),(5−3),(5−4)の
様に、小数点より上位1桁目に“0"が存在する場合(デ
ータ線L35=0)、左シフト回路308では、データ線L34
のデータ(仮数値)を左1桁シフトする。一方、加減算
回路312では、減算Xe−1を実行する。こうすること
で、(5−2)については、正規化処理が実行される。
また、(5−3),(5−4)に関しては、データを次
のサイクルで別のハードウエアを用い、正規化処理また
は非正規化処理を実行する。
以上より、加算と減算の場合で、丸め位置を同一にす
るために必要な右シフト回路306は、浮動小数点加減算
装置全体からみてクリチカルパスに入っていることは明
らかである。すなわち、この右シフト回路306が存在す
るため、この浮動小数点加減算器の演算速度がさらに遅
くなるという欠点がある。
るために必要な右シフト回路306は、浮動小数点加減算
装置全体からみてクリチカルパスに入っていることは明
らかである。すなわち、この右シフト回路306が存在す
るため、この浮動小数点加減算器の演算速度がさらに遅
くなるという欠点がある。
発明が解決しようとする課題 従来の浮動小数点加減算器においては、桁合わせのた
め減算回路が2つ必要になり、演算速度を遅くしかつ回
路を複雑にし、さらに回路規模を大きくすることの原因
になっていた。また加算時と減算時に位置を一致させる
ため。右シフト回路をクリチカルパスに入れなければな
らず、さらに演算速度を遅くする原因となっていた。
め減算回路が2つ必要になり、演算速度を遅くしかつ回
路を複雑にし、さらに回路規模を大きくすることの原因
になっていた。また加算時と減算時に位置を一致させる
ため。右シフト回路をクリチカルパスに入れなければな
らず、さらに演算速度を遅くする原因となっていた。
本発明は、前記問題点を鑑み、右バレルシフト回路の
前に左右シフト回路を置くことで、桁合わせのためのシ
フト量を計算する減算回路を1つしか使用せず、回路が
簡単でしかも消費電力が少なく演算所要時間も少ない浮
動小数点加減算装置を提供することを目的としている。
前に左右シフト回路を置くことで、桁合わせのためのシ
フト量を計算する減算回路を1つしか使用せず、回路が
簡単でしかも消費電力が少なく演算所要時間も少ない浮
動小数点加減算装置を提供することを目的としている。
課題を解決するための手段 本発明は、仮数部オペランド、指数部オペランド、符
号部オペランドからなる浮動小数点形式の2つの被演算
データを加算または減算する浮動小数点加減算装置にお
いて、前記2つの被演算データが、正規化数であるか非
正規化数であるかまたは実行演算が加算であるか減算で
あるかの情報を基に、前記2つの仮数部オペランドの加
減算を実行する前に前記仮数部オペランドをシフトしな
いかまたは右または左に1桁シフトするシフト手段を有
する浮動小数点加減算装置である。
号部オペランドからなる浮動小数点形式の2つの被演算
データを加算または減算する浮動小数点加減算装置にお
いて、前記2つの被演算データが、正規化数であるか非
正規化数であるかまたは実行演算が加算であるか減算で
あるかの情報を基に、前記2つの仮数部オペランドの加
減算を実行する前に前記仮数部オペランドをシフトしな
いかまたは右または左に1桁シフトするシフト手段を有
する浮動小数点加減算装置である。
作用 本発明は上述した構成により、オペランド仮数部シフ
ト量を計算する減算回路を1つしか使用する必要がな
く、さらに加算と減算で丸め処理位置を同一にする為の
シフト回路がクリチカルパスに入らない浮動小数点加減
算装置を実現している。
ト量を計算する減算回路を1つしか使用する必要がな
く、さらに加算と減算で丸め処理位置を同一にする為の
シフト回路がクリチカルパスに入らない浮動小数点加減
算装置を実現している。
実施例 第1図は特許請求の範囲第1項、第2項及び第4項記
載の浮動小数点加減算装置の構成図である。
載の浮動小数点加減算装置の構成図である。
2つの入力オペランド指数部(Xe,Ye)は減算回路10
4、非正規化数検出回路101に入力される。また同時にオ
ペランド仮数部(1.Xfまたは0.Xf、1.Yfまたは0.Yf)
も、左右シフト回路103に入力される。そして、減算回
路104では、オペランド指数値Xe,Yeを減算し、絶対値|X
e−Ye|と、符号値S(Xe−Ye)を計算する。また、非正
規化数検出回路101では、それぞれの入力オペランド
が、正規化数であるか否かを検出し、2つのオペランド
が正規化数であるという信号(NORX,NORY)を出力す
る。
4、非正規化数検出回路101に入力される。また同時にオ
ペランド仮数部(1.Xfまたは0.Xf、1.Yfまたは0.Yf)
も、左右シフト回路103に入力される。そして、減算回
路104では、オペランド指数値Xe,Yeを減算し、絶対値|X
e−Ye|と、符号値S(Xe−Ye)を計算する。また、非正
規化数検出回路101では、それぞれの入力オペランド
が、正規化数であるか否かを検出し、2つのオペランド
が正規化数であるという信号(NORX,NORY)を出力す
る。
非正規化数検出回路101から出力された2本の検出信
号(NORX,NORY)は、シフト信号生成回路102に入力さ
れ、オペランドの符号値(Xs,Ys)と、減算実行信号sub
と伴に、2つの入力オペランド仮数値を左右に1桁シフ
トする制御信号(Rx,Ry,Lx,Ly,Nx,Xy)をつくる。左右
シフト回路103では、シフト信号生成回路102からの制御
信号(Rx,Ry,Lx,Ly,Nx,Xy)を基に、2つの入力オペラ
ンド仮数値を右または左にシフトする。左右シフト回路
103の出力は、スワップ回路105で減算回路104から出力
される符号(S(Xe−Ye))に基づいて、入力データ
(Xf′,Yf′)をスワップし、右バレルシフト回路106と
加減算回路107に出力する(Xf″,Yf″)。
号(NORX,NORY)は、シフト信号生成回路102に入力さ
れ、オペランドの符号値(Xs,Ys)と、減算実行信号sub
と伴に、2つの入力オペランド仮数値を左右に1桁シフ
トする制御信号(Rx,Ry,Lx,Ly,Nx,Xy)をつくる。左右
シフト回路103では、シフト信号生成回路102からの制御
信号(Rx,Ry,Lx,Ly,Nx,Xy)を基に、2つの入力オペラ
ンド仮数値を右または左にシフトする。左右シフト回路
103の出力は、スワップ回路105で減算回路104から出力
される符号(S(Xe−Ye))に基づいて、入力データ
(Xf′,Yf′)をスワップし、右バレルシフト回路106と
加減算回路107に出力する(Xf″,Yf″)。
右バレルシフト回路106では、減算回路104から出力さ
れる、オペランド指数値の差の絶対値|Xe−Ye|だけ入力
値を右にシフトする。そして加減算回路107で加減算及
び丸め処理を実行したのち、左シフト回路108で、加減
算回路107の出力値の小数点より上位1桁目(データ線L
18)に“1"が存在しない場合に、加減算回路107の出力
値を、左に1桁シフトし出力する。
れる、オペランド指数値の差の絶対値|Xe−Ye|だけ入力
値を右にシフトする。そして加減算回路107で加減算及
び丸め処理を実行したのち、左シフト回路108で、加減
算回路107の出力値の小数点より上位1桁目(データ線L
18)に“1"が存在しない場合に、加減算回路107の出力
値を、左に1桁シフトし出力する。
また、指数部の方は、マルチプレクサ109で減算回路1
04より出力される符号値S(Xe−Ye)を用い、指数値の
大きい方を選択する。そして、加減算回路110にマルチ
プレクサ109の出力を入力し、シフト信号生成回路102よ
り出力される実行演算の信号(Add)を基に、加減算回
路110の演算を決定し(加算か減算か)、例えば加減算
回路110の演算を加算であると決定した場合、指数値に
“1"を加算した結果と“0"を加算した結果を並列に生成
しておく。そして、加減算回路107より出力されるデー
タ線L18によって、どちらかの加減算結果を選択し、出
力する。このデータ線L18は、加減算回路107の結果の小
数点より上位1桁目が“1"であると言う信号である。
04より出力される符号値S(Xe−Ye)を用い、指数値の
大きい方を選択する。そして、加減算回路110にマルチ
プレクサ109の出力を入力し、シフト信号生成回路102よ
り出力される実行演算の信号(Add)を基に、加減算回
路110の演算を決定し(加算か減算か)、例えば加減算
回路110の演算を加算であると決定した場合、指数値に
“1"を加算した結果と“0"を加算した結果を並列に生成
しておく。そして、加減算回路107より出力されるデー
タ線L18によって、どちらかの加減算結果を選択し、出
力する。このデータ線L18は、加減算回路107の結果の小
数点より上位1桁目が“1"であると言う信号である。
次に本発明の概略についてのべる。従来例で示したよ
うに、仮数部を加算した場合と減算した場合では丸め位
置が1桁ずれてくる。本発明では、加算結果を減算結果
に合わせ、丸め位置を加算と減算で同一にし、更に桁合
わせのために必要な指数値の小さい方の仮数部オペラン
ドをシフトするシフト量を、1つの減算回路で求められ
るよう、左右シフト回路103が制御される。以下に、こ
の左右シフト回路103の制御と、仮数シフト量が減算回
路1つで求められてくることを示す。
うに、仮数部を加算した場合と減算した場合では丸め位
置が1桁ずれてくる。本発明では、加算結果を減算結果
に合わせ、丸め位置を加算と減算で同一にし、更に桁合
わせのために必要な指数値の小さい方の仮数部オペラン
ドをシフトするシフト量を、1つの減算回路で求められ
るよう、左右シフト回路103が制御される。以下に、こ
の左右シフト回路103の制御と、仮数シフト量が減算回
路1つで求められてくることを示す。
ここでは簡単のため前述の如く、32ビットのIEEE754
規格の浮動小数点データを用いた場合について示す。ま
ず、加算の場合から(3−1),(3−2),(3−
3)について述べる。
規格の浮動小数点データを用いた場合について示す。ま
ず、加算の場合から(3−1),(3−2),(3−
3)について述べる。
(3−1)の正規化数同士の加算の場合を式に表現す
ると(7)式のようになる。但し、*は、0かまたは1
であり、Xe>=Yeであるとする。この条件は、以下の全
ての式についても当てはまる。また両オペランドとも正
規化数であるからXe,Yeは0ではない。
ると(7)式のようになる。但し、*は、0かまたは1
であり、Xe>=Yeであるとする。この条件は、以下の全
ての式についても当てはまる。また両オペランドとも正
規化数であるからXe,Yeは0ではない。
1.****−−−**×2Xe-127 +)1.****−−−**×2Ye-127 −−−−−−−−−−−−−−−−−−−−−−−−−
−−(7) この時、加算結果としては、(8−1),(8−2)式
のように2通りの結果が得られる。
−−(7) この時、加算結果としては、(8−1),(8−2)式
のように2通りの結果が得られる。
1*.****−−−**×2Xe-127 (8−1) 1.****−−−**×2Xe-127 (8−2) 正規化数同士の加算の場合には、最上位に1が存在する
桁が小数点より上位2桁目と1桁目に存在する。このた
め、減算結果と丸め位置を合わせるため、左右シフト回
路103で、あらかじめ入力オペランド仮数部をそれぞれ
1桁右にシフトしておき、見かけ上指数バイアス値を−
126にしておく。この時の指数部の桁合わせを実行する
ための仮数部を右シフト量は、指数バイアス値が等しい
ため|Xe−Ye|のままでよく、これは減算回路104で計算
される。
桁が小数点より上位2桁目と1桁目に存在する。このた
め、減算結果と丸め位置を合わせるため、左右シフト回
路103で、あらかじめ入力オペランド仮数部をそれぞれ
1桁右にシフトしておき、見かけ上指数バイアス値を−
126にしておく。この時の指数部の桁合わせを実行する
ための仮数部を右シフト量は、指数バイアス値が等しい
ため|Xe−Ye|のままでよく、これは減算回路104で計算
される。
(3−2)の正規化数と非正規化数の加算について述
べる。式に示すと(9)式のようになる。
べる。式に示すと(9)式のようになる。
1.****−−−**×2Xe-127 +)0.****−−−**×2O-126 −−−−−−−−−−−−−−−−−−−−−−−−−
−(9) この時、加算結果としては、(10−1)(10−2)式の
ように2通りの結果が得られる。
−(9) この時、加算結果としては、(10−1)(10−2)式の
ように2通りの結果が得られる。
1*.****−−−**×2Xe-127 (10−1) 1.****−−−**×2Xe-127 (10−2) すなわち、この時も(8−1),(10−2)と同様であ
り、減算の場合と丸め位置を同一にするため左右1桁シ
フト回路103で、入力オペランド仮数部をシフトする必
要がある。ここでは、正規化数のオペランド仮数入力値
(1.Xf)だけを右に1桁シフトする。すなわち、(9)
式を(11)式に示すようにする。
り、減算の場合と丸め位置を同一にするため左右1桁シ
フト回路103で、入力オペランド仮数部をシフトする必
要がある。ここでは、正規化数のオペランド仮数入力値
(1.Xf)だけを右に1桁シフトする。すなわち、(9)
式を(11)式に示すようにする。
0.1***−−−**×2Xe-127+1 +)0.****−−−**×2O-126 −−−−−−−−−−−−−−−−−−−−−−−−−
−(11) (11)式のようにすることで、加算結果の最も上位に
“1"の存在する位置は、減算結果と等しくなる。また同
時に、見かけ上指数バイアス値が正規化数、非正規化数
ともに“−126"となるため、桁合わせのために必要な仮
数部オペランド右シフト量は|Xe−0|でよくなる。これ
は減算回路104で計算される。
−(11) (11)式のようにすることで、加算結果の最も上位に
“1"の存在する位置は、減算結果と等しくなる。また同
時に、見かけ上指数バイアス値が正規化数、非正規化数
ともに“−126"となるため、桁合わせのために必要な仮
数部オペランド右シフト量は|Xe−0|でよくなる。これ
は減算回路104で計算される。
(3−3)の非正規化数と非正規化数の加算について
のべる。式に示すと(12)式のようになる。
のべる。式に示すと(12)式のようになる。
0.****−−−**×2O-126 +)0.****−−−**×2O-126 −−−−−−−−−−−−−−−−−−−−−−−−−
−(12) この時、加算結果としては、非正規化数かまたは、(1
3)式のような正規化数が得られる。
−(12) この時、加算結果としては、非正規化数かまたは、(1
3)式のような正規化数が得られる。
1.****−−−**×21-127 (13) この時は、左右シフト回路103で、入力オペランド仮数
部をシフトしなくても、減算の場合と丸め位置を同一に
なっている。また、指数値バイアス値も“−126"と同じ
であるため、桁合わせの為の仮数部シフト量は、|0−0|
でよく、これは減算回路104で計算される。
部をシフトしなくても、減算の場合と丸め位置を同一に
なっている。また、指数値バイアス値も“−126"と同じ
であるため、桁合わせの為の仮数部シフト量は、|0−0|
でよく、これは減算回路104で計算される。
以上述べたように、加算が実行される場合、左右シフ
ト回路103で正規化数の仮数部オペランド1桁右シフト
する事で、減算結果と丸め位置が同一に出来るととも
に、指数部のバイアス値は見かけ上“−126"に設定され
る。そうすることで、この後の桁合わせ処理で指数値の
小さい方の仮数部オペランドを右シフトする場合のシフ
ト量が、単に二つの指数部オペランドの差の絶対値を取
るだけで求められる。
ト回路103で正規化数の仮数部オペランド1桁右シフト
する事で、減算結果と丸め位置が同一に出来るととも
に、指数部のバイアス値は見かけ上“−126"に設定され
る。そうすることで、この後の桁合わせ処理で指数値の
小さい方の仮数部オペランドを右シフトする場合のシフ
ト量が、単に二つの指数部オペランドの差の絶対値を取
るだけで求められる。
次に減算の場合について述べる。
まず、(3−1)の正規化数と正規化数の減算につい
て述べる。式に示すと(14)式のようになる。
て述べる。式に示すと(14)式のようになる。
1.****−−−**×2Xe-127 −)1.****−−−**×2Ye-127 −−−−−−−−−−−−−−−−−−−−−−−−−
−−(14) この時、減算結果は、(15−1),(15−2)式のよう
な2通りの結果が得られるか、または非正規化数にな
る。
−−(14) この時、減算結果は、(15−1),(15−2)式のよう
な2通りの結果が得られるか、または非正規化数にな
る。
1.****−−−**×2Xe-127 (15−1) 0.1***−−−**×2Xe-127 (15−2) ここでは、左右シフト回路103によって2つの入力オペ
ランドをシフトする必要がなく、また、指数バイアス値
も同じなので、指数部の桁合わせの為のシフト量は|Xe
−Ye|でよい。これは減算回路104で計算される。
ランドをシフトする必要がなく、また、指数バイアス値
も同じなので、指数部の桁合わせの為のシフト量は|Xe
−Ye|でよい。これは減算回路104で計算される。
(3−2)の正規化数と非正規化数の減算について述
べる。式に示すと(16)式のようになる。
べる。式に示すと(16)式のようになる。
1.****−−−**×2Xe-127 −)0.****−−−**×2O-126 −−−−−−−−−−−−−−−−−−−−−−−−−
−(16) この時、減算結果は、(17−1),(17−2)式のよう
に2通りの結果または、非正規化数になる。
−(16) この時、減算結果は、(17−1),(17−2)式のよう
に2通りの結果または、非正規化数になる。
1.****−−−**×2Xe-127 (17−1) 0.1***−−−**×2Xe-127 (17−2) (16)式では、2つの入力オペランドのバイアス値が1
異なるため、非正規化数の仮数部を1桁左シフトしてお
く。すると、(16)式は、(18)式のようになる。
異なるため、非正規化数の仮数部を1桁左シフトしてお
く。すると、(16)式は、(18)式のようになる。
1.****−−−**×2Xe-127 −)*.****−−−*0×2O-126-1 −−−−−−−−−−−−−−−−−−−−−−−−−
−(18) (18)式の仮数減算結果として、(17)式に示されるよ
うな値になる。よって、左右シフト回路103によって、
非正規化数の仮数部を1桁左シフトすることで、桁合わ
せの為の仮数部シフト量は、見かけ上バイアス値(−12
7)が同じになる為|Xe−0|でよくなり、これは減算回路
104で計算される。
−(18) (18)式の仮数減算結果として、(17)式に示されるよ
うな値になる。よって、左右シフト回路103によって、
非正規化数の仮数部を1桁左シフトすることで、桁合わ
せの為の仮数部シフト量は、見かけ上バイアス値(−12
7)が同じになる為|Xe−0|でよくなり、これは減算回路
104で計算される。
(3−3)の非正規化数と非正規化数の減算について
述べる。式に示すと(19)式のようになる。
述べる。式に示すと(19)式のようになる。
0.****−−−**×2O-126 −)0.****−−−**×2O-126 −−−−−−−−−−−−−−−−−−−−−−−−−
−(19) この時、減算結果としては、必ず非正規化数が得られ
る。この場合は、2通りの左右シフト回路103の制御の
方法がある。第1に仮数部オペランドをシフトしない、
第2に仮数部オペランドを両方とも左にシフトする方法
である。
−(19) この時、減算結果としては、必ず非正規化数が得られ
る。この場合は、2通りの左右シフト回路103の制御の
方法がある。第1に仮数部オペランドをシフトしない、
第2に仮数部オペランドを両方とも左にシフトする方法
である。
まず、第1の方法について、実行した場合について述
べる。シフト回路103で入力オペランド仮数部をシフト
しない場合、指数バイアス値は“−126"で同じである。
この時、指数部を桁合わせするための仮数シフト量は|0
−0|でよく、減算回路104で実行される。
べる。シフト回路103で入力オペランド仮数部をシフト
しない場合、指数バイアス値は“−126"で同じである。
この時、指数部を桁合わせするための仮数シフト量は|0
−0|でよく、減算回路104で実行される。
また第2の方法では、以下のようになる。シフト回路
103で入力するオペランド仮数部を左シフトする場合、
指数バイアス値は見かけ上“−127"で同じである。また
この時、指数部を桁合わせするための仮数シフト量は|0
−0|でよい。この場合、(20)式に示すようになる。
103で入力するオペランド仮数部を左シフトする場合、
指数バイアス値は見かけ上“−127"で同じである。また
この時、指数部を桁合わせするための仮数シフト量は|0
−0|でよい。この場合、(20)式に示すようになる。
*.****−−−*0×2O-126-1 −)*.****−−−*0×2O-126-1 −−−−−−−−−−−−−−−−−−−−−−−−−
−(20) (20)式から解るとおり、指数バイアス値は見かけ上−
127になる。非正規化数同士の減算は結果として、必ず
非正規化数になるため、加減算結果107から出力された
結果に対し、仮数部を右1桁シフトし指数部のバイアス
値が−126になるようにしなければならない。即ち、加
減算回路107の後に、仮数部を右1桁シフトする右1桁
シフト回路が必要になってくる。これはハードウエアの
増加を招くとともに、演算時間の増加も引き起こす。従
って、本実施例においては、第1の方法つまり、両方の
オペランドがともに非正規化数で、減算の場合、左右シ
フト回路103で、仮数オペランドをそのままシフトせず
に動作させる。
−(20) (20)式から解るとおり、指数バイアス値は見かけ上−
127になる。非正規化数同士の減算は結果として、必ず
非正規化数になるため、加減算結果107から出力された
結果に対し、仮数部を右1桁シフトし指数部のバイアス
値が−126になるようにしなければならない。即ち、加
減算回路107の後に、仮数部を右1桁シフトする右1桁
シフト回路が必要になってくる。これはハードウエアの
増加を招くとともに、演算時間の増加も引き起こす。従
って、本実施例においては、第1の方法つまり、両方の
オペランドがともに非正規化数で、減算の場合、左右シ
フト回路103で、仮数オペランドをそのままシフトせず
に動作させる。
減算が実行される場合、以上述べたように左右シフト
回路103を動作させることで、桁合わせ処理で指数値の
小さい方の仮数部オペランドを右シフトする場合のシフ
ト量が、単に二つの指数部オペランドの差の絶対値を取
るだけで求められる。
回路103を動作させることで、桁合わせ処理で指数値の
小さい方の仮数部オペランドを右シフトする場合のシフ
ト量が、単に二つの指数部オペランドの差の絶対値を取
るだけで求められる。
以上、演算の型(加算、減算)、入力オペランドのタ
イプ(正規化数、非正規化数)、入力オペランド仮数部
のシフト方向(右シフト、左シフト、シフト無し)、桁
合わせに必要なシフト量についてまとめて表にすると第
2図のようになる。第2図において201は、演算の型で
あり実行される演算が加算であるか減算であるかを示し
ている。これは、オペランドの符号(Xs,Ys)と、減算
信号subから求まる。すなわち、実行演算が加算である
という式は、(21)式に示す論理式になる。
イプ(正規化数、非正規化数)、入力オペランド仮数部
のシフト方向(右シフト、左シフト、シフト無し)、桁
合わせに必要なシフト量についてまとめて表にすると第
2図のようになる。第2図において201は、演算の型で
あり実行される演算が加算であるか減算であるかを示し
ている。これは、オペランドの符号(Xs,Ys)と、減算
信号subから求まる。すなわち、実行演算が加算である
という式は、(21)式に示す論理式になる。
この信号は、第1図中でAddで示される信号線である。
入力オペランドタイプ202は、2つの入力オペランド
(X,Y)が非正規化数であるか、否かを示している。こ
れは、各オペランド指数値が0であるか否かによって判
断され、非正規化数検出回路101で実行される。オペラ
ンド指数値が0であれば、非正規化数である。203は、
左右シフト回路103が演算の型201および入力オペランド
タイプ202によってどう動くかを示している。Nであれ
ばシフトしない、Rであれば右に1桁シフト、Lであれ
ば左シフトすることを示している。これは第1図の信号
線Rx,Ry,Lx.Ly,Nx,Nyである。204は、右バレルシフト回
路106のシフト量を示している。これは第1図中の減算
回路104より出力される|Xe−Ye|である。
(X,Y)が非正規化数であるか、否かを示している。こ
れは、各オペランド指数値が0であるか否かによって判
断され、非正規化数検出回路101で実行される。オペラ
ンド指数値が0であれば、非正規化数である。203は、
左右シフト回路103が演算の型201および入力オペランド
タイプ202によってどう動くかを示している。Nであれ
ばシフトしない、Rであれば右に1桁シフト、Lであれ
ば左シフトすることを示している。これは第1図の信号
線Rx,Ry,Lx.Ly,Nx,Nyである。204は、右バレルシフト回
路106のシフト量を示している。これは第1図中の減算
回路104より出力される|Xe−Ye|である。
次に、第1図に示される回路の論理を組む。非正規化
数検出回路101は、2つの指数部オペランドが正規化数
であるか非正規化数であるか検出する回路である。指数
値がすべて“0"であれば非正規化数である。これを回路
にすると第4図に示すようになる。第4図においては、
出力として“正規化数である”と言う信号(NORX、NOR
Y)をゲート遅延段数2段で出力する。
数検出回路101は、2つの指数部オペランドが正規化数
であるか非正規化数であるか検出する回路である。指数
値がすべて“0"であれば非正規化数である。これを回路
にすると第4図に示すようになる。第4図においては、
出力として“正規化数である”と言う信号(NORX、NOR
Y)をゲート遅延段数2段で出力する。
シフト信号生成回路102は、左右シフト回路103で入力
される2つの仮数部オペランドを右1桁シフトするか、
左1桁シフトするか、シフトしないかの制御信号を生成
するとともに、実行演算が加算であるという信号(Ad
d)を生成する回路である。これを回路にすると、第5
図の様になる。入力として、符号部オペランド(Xs,Y
s)及び減算信号(sub)及びX,Yオペランドがそれぞれ
正規化数であるという信号(NORX、NORY)を入力し、出
力として、左1桁シフトする(Lx,Ly)、右1桁シフト
する(Rx,Ry)、シフトしない(Nx,Ny)いう信号を出力
する。また、実行演算が加算であるという信号(Add)
も出力する。シフト信号生成回路102は符号部オペラン
ド、指数部オペランドが入力されてから、ゲート遅延段
数4段で制御信号を出力することが解る。
される2つの仮数部オペランドを右1桁シフトするか、
左1桁シフトするか、シフトしないかの制御信号を生成
するとともに、実行演算が加算であるという信号(Ad
d)を生成する回路である。これを回路にすると、第5
図の様になる。入力として、符号部オペランド(Xs,Y
s)及び減算信号(sub)及びX,Yオペランドがそれぞれ
正規化数であるという信号(NORX、NORY)を入力し、出
力として、左1桁シフトする(Lx,Ly)、右1桁シフト
する(Rx,Ry)、シフトしない(Nx,Ny)いう信号を出力
する。また、実行演算が加算であるという信号(Add)
も出力する。シフト信号生成回路102は符号部オペラン
ド、指数部オペランドが入力されてから、ゲート遅延段
数4段で制御信号を出力することが解る。
左右シフト回路103は入力された2つの仮数部オペラ
ンドを、シフト信号生成回路102から出力された制御信
号(Rx,Ry,Lx,Ly,Nx,Ny)に基づいて、左に1桁シフ
ト、右に1桁シフトまたはシフトしないという3つの操
作を実行するブロックである。これを、実際の回路にす
ると第6図に示すようになる。601はある任意の桁(k
桁目)の左右シフト回路である。Rx,Ryが入力されれ
ば、1桁上位の値が出力され、Nx,Nyが入ればその桁の
値が出力され、Lx,Lyが入力されれば、1桁下位の値が
出力される。シフト信号生成回路102から制御信号(Rx,
Ry,Lx,Ly,Nx,Ny)が入って来てからゲート遅延段数1段
で、前述した3つのシフト動作が実行されることが解
る。
ンドを、シフト信号生成回路102から出力された制御信
号(Rx,Ry,Lx,Ly,Nx,Ny)に基づいて、左に1桁シフ
ト、右に1桁シフトまたはシフトしないという3つの操
作を実行するブロックである。これを、実際の回路にす
ると第6図に示すようになる。601はある任意の桁(k
桁目)の左右シフト回路である。Rx,Ryが入力されれ
ば、1桁上位の値が出力され、Nx,Nyが入ればその桁の
値が出力され、Lx,Lyが入力されれば、1桁下位の値が
出力される。シフト信号生成回路102から制御信号(Rx,
Ry,Lx,Ly,Nx,Ny)が入って来てからゲート遅延段数1段
で、前述した3つのシフト動作が実行されることが解
る。
スワップ回路105は、減算回路104から出力された指数
値の差の符号S(Xe−Ye)により、左右シフト回路103
から出力された仮数部オペランドをスワップする回路で
ある。これを実際の回路にすると第7図に示す様にな
る。701はある任意の桁(k桁目)のスワップ回路であ
る。信号S(Xe−Ye)が入ると、入力データがスワップ
され出力される。
値の差の符号S(Xe−Ye)により、左右シフト回路103
から出力された仮数部オペランドをスワップする回路で
ある。これを実際の回路にすると第7図に示す様にな
る。701はある任意の桁(k桁目)のスワップ回路であ
る。信号S(Xe−Ye)が入ると、入力データがスワップ
され出力される。
減算回路104は、2つの指数部オペランドを減算し、
減算値の符号S(Xe−Ye)と絶対値|Xe−Ye|を出力する
回路である。この回路については特開平1−205328に記
載されており、この回答を利用し構成した減算回路を第
8図に示す。指数部オペランドが入力されて、符号値S
(Xe−Ye)が出力されるまでのゲート遅延段数が5段、
絶対値|Xe−Ye|が求まるまでのゲート遅延段数が7段で
ある。
減算値の符号S(Xe−Ye)と絶対値|Xe−Ye|を出力する
回路である。この回路については特開平1−205328に記
載されており、この回答を利用し構成した減算回路を第
8図に示す。指数部オペランドが入力されて、符号値S
(Xe−Ye)が出力されるまでのゲート遅延段数が5段、
絶対値|Xe−Ye|が求まるまでのゲート遅延段数が7段で
ある。
ここで、スワップ回路105までのデータパスをみる。
まず、非正規仮数検出回路101、シフト信号生成回路10
2、左右シフト103を通り、スワップ回路105に仮数部デ
ータを入力するパスは、第4図、第5図、第6図から、
ゲート遅延段数5段であることが解る。これに対し、減
算回路104からスワップ回路105でデータをスワップする
ための制御信号S(Xe−Ye)は、第7図より、ゲート遅
延段数5段であることが解る。従って、浮動小数点デー
タが入力されてスワップ回路105が動作するまでのパス
を見た場合、前者、後者ともに同じゲート遅延段数であ
ることが解る。
まず、非正規仮数検出回路101、シフト信号生成回路10
2、左右シフト103を通り、スワップ回路105に仮数部デ
ータを入力するパスは、第4図、第5図、第6図から、
ゲート遅延段数5段であることが解る。これに対し、減
算回路104からスワップ回路105でデータをスワップする
ための制御信号S(Xe−Ye)は、第7図より、ゲート遅
延段数5段であることが解る。従って、浮動小数点デー
タが入力されてスワップ回路105が動作するまでのパス
を見た場合、前者、後者ともに同じゲート遅延段数であ
ることが解る。
従って、以上より本発明の左右シフト回路を使用する
ことで、従来問題であった加算と減算時に丸め位置を同
一にするデータのシフト操作のための時間がクリチカル
パスに入ることがなく、更に、指数部桁合わせの為の仮
数部シフト量は、1つの減算回路を用いることだけで良
く、演算時間を短くすることができ、更に、回路規模も
小さくできるという絶大なる効果を生む。
ことで、従来問題であった加算と減算時に丸め位置を同
一にするデータのシフト操作のための時間がクリチカル
パスに入ることがなく、更に、指数部桁合わせの為の仮
数部シフト量は、1つの減算回路を用いることだけで良
く、演算時間を短くすることができ、更に、回路規模も
小さくできるという絶大なる効果を生む。
なお、加減算結果の正規化処理については、左シフト
回路108、加減算回路110を使用し、従来例と同様に実行
される。
回路108、加減算回路110を使用し、従来例と同様に実行
される。
以上、本実施例では、32ビットのIEEE754規格の浮動
小数点データを用いた場合について示したが、オペラン
ドが長いほど、仮数部シフト量を求める指数部減算にか
かる時間が非正規化数を検出する時間よりも長くなる
為、本発明は更に有効である。
小数点データを用いた場合について示したが、オペラン
ドが長いほど、仮数部シフト量を求める指数部減算にか
かる時間が非正規化数を検出する時間よりも長くなる
為、本発明は更に有効である。
また、以上の実施例では左右シフト回路103がスワッ
プ回路105の前にきていたが、第9図に示す実施例の様
にスワップ回路105を左右シフト回路103の前に持ってき
ても同様の効果が得られる。但し、これは減算回路104
で指数減算値の符号S(Xe−Ye)がシフト信号Rx,Ry,L
x,Ly,Nx,Nyを求めるよりも遥かに早く求めることが出来
る場合である。
プ回路105の前にきていたが、第9図に示す実施例の様
にスワップ回路105を左右シフト回路103の前に持ってき
ても同様の効果が得られる。但し、これは減算回路104
で指数減算値の符号S(Xe−Ye)がシフト信号Rx,Ry,L
x,Ly,Nx,Nyを求めるよりも遥かに早く求めることが出来
る場合である。
発明の効果 上述のごとく本発明によれば、IEEE規格の浮動小数点
加減算を実行するに当たり、2つのオペランドの桁合わ
せの為、指数値の小さい方のオペランド仮数部を右にシ
フトする前に、シフトしないかまたは右または左に1桁
シフトするシフト回路を設けることで、2つのオペラン
ドの桁合わせのシフト量を計算する減算器が1つでよ
く、回路が簡単でかつ演算所用時間も少ない浮動小数点
加減算装置を得ることができる。
加減算を実行するに当たり、2つのオペランドの桁合わ
せの為、指数値の小さい方のオペランド仮数部を右にシ
フトする前に、シフトしないかまたは右または左に1桁
シフトするシフト回路を設けることで、2つのオペラン
ドの桁合わせのシフト量を計算する減算器が1つでよ
く、回路が簡単でかつ演算所用時間も少ない浮動小数点
加減算装置を得ることができる。
第1図は本発明の一実施例である浮動小数点加減算装置
のブロック図、第2図は第1図中の左右シフト回路の動
作、及び減算回路から出力されるシフト量が演算の型・
オペランドの型によってどう変化するかを表にした図、
第3図は従来の浮動小数点加減算装置のブロック図、第
4図は第1図中の非正規化数検出回路101の論理図、第
5図は第1図中のシフト信号生成回路102の論理図、第
6図は第1図中の左右シフト回路103の論理図、第7図
は第1図中スワップ回路105の論理図、第8図は第1図
中減算回路104の論理図、第9図は本発明の他の実施例
である浮動小数点加減算装置のブロック図である。 101……非正規化数検出回路、102……シフト信号生成回
路、103……左右シフト回路、104……減算回路、105…
…スワップ回路、106……右バレルシフト回路、107……
加減算回路、108……左シフト回路、109……マルチプレ
クサ、110……加減算回路。
のブロック図、第2図は第1図中の左右シフト回路の動
作、及び減算回路から出力されるシフト量が演算の型・
オペランドの型によってどう変化するかを表にした図、
第3図は従来の浮動小数点加減算装置のブロック図、第
4図は第1図中の非正規化数検出回路101の論理図、第
5図は第1図中のシフト信号生成回路102の論理図、第
6図は第1図中の左右シフト回路103の論理図、第7図
は第1図中スワップ回路105の論理図、第8図は第1図
中減算回路104の論理図、第9図は本発明の他の実施例
である浮動小数点加減算装置のブロック図である。 101……非正規化数検出回路、102……シフト信号生成回
路、103……左右シフト回路、104……減算回路、105…
…スワップ回路、106……右バレルシフト回路、107……
加減算回路、108……左シフト回路、109……マルチプレ
クサ、110……加減算回路。
Claims (4)
- 【請求項1】仮数部オペランド、指数部オペランド、符
号部オペランドからなる浮動小数点形式の2つの被演算
データを加算または減算する浮動小数点加減算装置にお
いて、前記2つの被演算データが、正規化数であるか非
正規化数であるかまたは実行演算が加算であるか減算で
あるかの情報を基に、前記2つの仮数部オペランドの加
減算を実行する前に前記仮数部オペランドをシフトしな
いかまたは右または左に1桁シフトするシフト手段を有
することを特徴とする浮動小数点加減算装置 - 【請求項2】仮数部オペランド、指数部オペランド、符
号部オペランドからなる浮動小数点形式の2つの被演算
データを加算または減算する浮動小数点加減算装置にお
いて、前記2つの被演算データが、正規化数であるか非
正規化数であるかまたは実行演算が加算であるか減算で
あるかの情報を基に、仮数部オペランドをシフトしない
かまたは右または左に1桁シフトする制御信号を生成す
る第1の手段と、前記第1の手段から出力される制御信
号を使い、入力データをシフトしないかまたは右または
左に1桁シフトする第2の手段と、指数部オペランドを
減算し、該減算結果の符号と絶対値を出力する第3の手
段と、入力データを第3の手段より出力される減算結果
の符号によりスワップし出力する第4の手段と、入力デ
ータを第3の手段より出力される減算結果の絶対値量だ
け右シフトする第5の手段と、入力データを加減算し、
加減算結果を丸め処理し出力する第6の手段とを有し、
前記第2の手段に2つの仮数部オペランドが入力され、
前記第1の手段より出力される制御信号により仮数部オ
ペランドをシフトしないかまたは右または左に1桁シフ
トして出力し、該出力データを前記第4の手段に入力
し、該入力データの内、指数値の小さい方のデータを前
記第5の手段の入力データとし、前記第5の手段の出力
データと、前記第4の手段の入力データの内指数値の大
きい方の入力データを前記第6の手段の入力とする事を
特徴とする浮動小数点加減算装置。 - 【請求項3】仮数部オペランド、指数部オペランド、符
号部オペランドからなる浮動小数点形式の2つの被演算
データを加算または減算する浮動小数点加減算装置にお
いて、前記2つの被演算データが、正規化数であるか非
正規化数であるかまたは実行演算が加算であるか減算で
あるかの情報を基に、仮数部オペランドをシフトしない
かまたは右または左に1桁シフトする制御信号を生成す
る第1の手段と、前記第1の手段から出力される制御信
号を使い、入力データをシフトしないかまたは右または
左に1桁シフトする第2の手段と、指数部オペランドを
減算し、該減算結果の符号と絶対値を出力する第3の手
段と、入力データを第3の手段より出力される減算結果
の符号によりスワップし出力する第4の手段と、入力デ
ータを第3の手段より出力される減算結果の絶対値量だ
け右シフトする第5の手段と、入力データを加減算し加
減算結果を丸め処理し出力する第6の手段とを有し、前
記第4の手段に2つの仮数部オペランドが入力され、前
記第3の手段より出力される減算結果の符号により指数
部オペランドの小さい方の仮数部オペランドが前記第5
の手段の入力となるようにスワップして出力し、該出力
データを前記第2の手段に入力し、前記第1の手段で生
成された制御信号により入力データをシフトしないか右
または左に1桁シフトし出力し、該出力データを前記第
5の手段と第6の手段に入力し、前記第5の手段の入力
は前記第3の手段で得られる減算結果の絶対値により右
シフトし出力され、該出力データが前記第6の手段の入
力となることを特徴とする浮動小数点加減算装置。 - 【請求項4】2つの浮動小数点オペランドが非正規化数
で実行演算が減算である場合、左右シフト手段でオペラ
ンド仮数部をシフトしない事を特徴とする請求項1、
2、3のいずれかに記載の浮動小数点加減算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2332503A JP2507183B2 (ja) | 1989-11-28 | 1990-11-28 | 浮動小数点加減算装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30868789 | 1989-11-28 | ||
JP1-308687 | 1989-11-28 | ||
JP2332503A JP2507183B2 (ja) | 1989-11-28 | 1990-11-28 | 浮動小数点加減算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH03218518A JPH03218518A (ja) | 1991-09-26 |
JP2507183B2 true JP2507183B2 (ja) | 1996-06-12 |
Family
ID=26565650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2332503A Expired - Lifetime JP2507183B2 (ja) | 1989-11-28 | 1990-11-28 | 浮動小数点加減算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2507183B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150059082A (ko) * | 2013-11-21 | 2015-05-29 | 삼성전자주식회사 | 풀 인-라인 비정규 서포트를 수반하는 높은 성능의 부동 소수점 덧셈기 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5880983A (en) * | 1996-03-25 | 1999-03-09 | International Business Machines Corporation | Floating point split multiply/add system which has infinite precision |
US5790445A (en) * | 1996-04-30 | 1998-08-04 | International Business Machines Corporation | Method and system for performing a high speed floating point add operation |
JP2000010762A (ja) | 1998-06-19 | 2000-01-14 | Mitsubishi Electric Corp | 浮動小数点演算装置 |
-
1990
- 1990-11-28 JP JP2332503A patent/JP2507183B2/ja not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150059082A (ko) * | 2013-11-21 | 2015-05-29 | 삼성전자주식회사 | 풀 인-라인 비정규 서포트를 수반하는 높은 성능의 부동 소수점 덧셈기 |
KR102200913B1 (ko) * | 2013-11-21 | 2021-01-11 | 삼성전자주식회사 | 풀 인-라인 비정규 서포트를 수반하는 높은 성능의 부동 소수점 덧셈기 |
Also Published As
Publication number | Publication date |
---|---|
JPH03218518A (ja) | 1991-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4999803A (en) | Floating point arithmetic system and method | |
US6529928B1 (en) | Floating-point adder performing floating-point and integer operations | |
JPH02289006A (ja) | 浮動小数点加算器においてオペランドの仮数を加算し、減算する回路 | |
JPH07225671A (ja) | 結果正規化機構と動作の方法 | |
CN104899004A (zh) | 一种用于将浮点操作数相乘的数据处理装置和方法 | |
JPH09212337A (ja) | 浮動小数点演算処理装置 | |
US5146419A (en) | Floating point addition-subtraction apparatus | |
JP2507183B2 (ja) | 浮動小数点加減算装置 | |
JP2558669B2 (ja) | 浮動小数点演算装置 | |
KR920003493B1 (ko) | 부동 소숫점 표기를 기초로 하는 연산회로 | |
US7003540B2 (en) | Floating point multiplier for delimited operands | |
JP4439060B2 (ja) | 浮動小数点加算器 | |
JPH0540605A (ja) | 浮動小数点乗算装置 | |
JP2555577B2 (ja) | 演算装置 | |
JPH01282633A (ja) | 非正規化数の処理方式 | |
JP2856792B2 (ja) | 浮動小数点数演算装置 | |
JPS63158626A (ja) | 演算処理装置 | |
JPH05204606A (ja) | 浮動小数点演算方式および装置 | |
JP2512939B2 (ja) | 固定浮動デ−タ変換回路 | |
JP3124286B2 (ja) | 浮動小数点数演算装置 | |
JP3100868B2 (ja) | 浮動小数点数のための算術演算装置 | |
JP2903529B2 (ja) | ベクトル演算方式 | |
JPS62168228A (ja) | 浮動小数点積和演算器 | |
JPH0540609A (ja) | 浮動小数点除算装置 | |
JPH03217938A (ja) | 浮動小数点丸め正規化装置 |