JPH0823812B2 - 浮動小数点データの演算方法および演算装置 - Google Patents
浮動小数点データの演算方法および演算装置Info
- Publication number
- JPH0823812B2 JPH0823812B2 JP3180865A JP18086591A JPH0823812B2 JP H0823812 B2 JPH0823812 B2 JP H0823812B2 JP 3180865 A JP3180865 A JP 3180865A JP 18086591 A JP18086591 A JP 18086591A JP H0823812 B2 JPH0823812 B2 JP H0823812B2
- Authority
- JP
- Japan
- Prior art keywords
- rounding
- bit
- precision
- bits
- mantissa
- 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
処理装置等に用いられ、特に浮動小数点データの四則演
算、さらにはエー・エヌ・エス・アイ/アイ・イー・イ
ー・イー(ANSI/IEEE)浮動小数点演算規格P754等に準拠
する浮動小数点データの四則演算と丸めおよび正規化演
算を行う浮動小数点データの演算方法および演算装置に
関するものである。
び演算装置としては、例えばモトローラ・テクニカル・
ディベロップメンツ1988年10月号「フローティング・ポ
イント・パイプライン・パーティショニング」("FLOATI
NG POINT PIPELINE PARTITIONING",MOTOROLA TECHNICAL
DEVELOPMENTS,Vol.8,pp.29,Oct.1988)に示されている
ものがある。
装置の中から加減算装置のブロック図を示すものであ
る。ただし、本発明との相違点を明確にするために原典
のブロック図の構成を変更して示している。また、以下
で、加算とは異符号の減算または同符号の加算時に仮数
データに対して行なう加算を示し、減算とは異符号の加
算または同符号の減算時、仮数データに対して行う減算
を示す。加算か減算かは、入力データの符号と命令の種
類によって、演算に先立って決定されるものとする。
ータのうち指数が小さくない方の仮数を格納するレジス
タ、152は2つの浮動小数点データのうち指数が小さい
方の仮数を小さくない方の指数に桁合わせしたものを格
納するレジスタ、153は減算時にレジスタ152の出力の1
の補数をとる補数器、154はレジスタ151と補数器153の
出力を入力として加算時には最下位ビットへのキャリ入
力(Cin)を0にして加算を実行し、減算時にはキャリ入
力(Cin)を1にして減算を実行する加算器、155は加算器
154の出力を格納するレジスタ、156は加算器154の出力
の正規化のためのシフト数を生成するシフト数生成回
路、157は正規化のためにレジスタ155の出力に対してシ
フト数生成回路156が示すビット数だけシフトを行なう
バレルシフタ、158はバレルシフタ157の出力を格納する
レジスタ、159はレジスタ158に保持された値と丸めモー
ドおよび丸め精度に応じて丸め加算値の加算の有無を決
定し、丸めにより切上げを行なう場合は丸め精度に対応
した最下位ビット(L)を1にして他のビットは0にした
丸め加算値を生成し、丸めにより切捨てを行なう場合は
すべてのビットを0にした丸め加算値を生成する丸め値
生成回路、160はレジスタ158の出力と丸め値生成回路15
9の出力を加算する加算器、161は加算器160の出力を最
下位ビット方向(以下、右という)に1ビットシフトす
るR1シフタ、162はR1シフタ161の出力で求める加減
算結果の仮数を格納するレジスタである。
データの加減算装置について、以下その動作を説明す
る。
E浮動小数点演算規格P754による基本形式単精度フォー
マット(以下、単に単精度という)で和または差を単精
度で丸める場合を説明する。 (1)処理ステップ開始前 被加減数および加減数のうち指数が小さくない方の仮数
をレジスタ151に、被加減数および加減数のうち指数が
小さい方の仮数を小さくない方の指数に桁合わせしたも
のをレジスタ152に格納する。桁合わせ時の桁落ちした
ビットは、最下位ビット(L)の1桁下のビットで2-24の
重みを持つ丸めビット(R)と、2-25の重みを持つビット
以下のビットの論理和であるスティッキビット(S)とし
て併せてレジスタ152に格納する。 (2)ステップ1 補数器153および加算器154はレジスタ151とレジスタ152
に保持されている2つの仮数を加減算し、結果をレジス
タ155に格納する。加算時は、補数器153はレジスタ152
の出力をそのまま加算器154に出力して加算器154のCin
は0にする。減算時は、補数器153はレジスタ152の出力
の1の補数をとって加算器154に出力し、Cinを1にす
る。 (3)ステップ2 シフト数生成回路156は加算器154の出力を正規化するた
めのシフト数を生成し、バレルシフタ157はレジスタ155
の出力をシフト数生成回路156の出力に基づいてシフト
を行なうことによりステップ1の演算結果に対して正規
化シフトを行なう。その際、バレルシフタ157は最下位
ビット(L)までのシフト結果と、最下位ビットの1桁下
のビットで2-24の重みを持つ丸めビット(R)と、2-25
の重みを持つビット以下のビットの論理和であるスティ
ッキビット(S)とを生成してレジスタ158に格納する。 (4)ステップ3 丸め値生成回路159はレジスタ158に保持されている最下
位ビット(L)と丸めビット(R)とスティッキビット(S)と
丸めモードと丸め精度および演算結果の符号とによって
丸め加算値を生成する。生成する丸め加算値は、図27に
示す入出力関係図に従い、丸め加算信号が1の時は2
-23の重みを持つビットを1にしてその他のビットを0
にした丸め値を、丸め加算信号が0の時はすべてのビッ
トを0にした丸め値を生成する。RM、RP、RN、RZはANSI/IE
EE浮動小数点演算規格P754に規定される丸めモードで、
順に負方向丸め、正方向丸め、最近偶丸めを表してい
る。加算器160はレジスタ158の出力と丸め値生成回路15
9の出力との加算を行ない、R1シフタ161は加算器160
ので桁あふれが発生した場合は加算器160の出力を右に
1ビットシフトしてその他の場合は加算器160の出力を
そのままレジスタ162に格納し、処理を終了する。
動小数点演算規格P754により基本形式倍精度フォーマッ
ト(以下、単に倍精度という)で和または差を倍精度で
丸める場合を説明する。 (1)処理ステップ開始前 被加減数および加減数のうち指数が小さくない方の仮数
をレジスタ151に、被加減数および加減数のうち指数が
小さい方の仮数を小さくない方の指数に桁合わせしたも
のをレジスタ152に格納する。桁合わせ時の桁落ちした
ビットは、最下位ビット(L)の1桁下のビットで2-53の
重みを持つ丸めビット(R)と、2-54の重みを持つビット
以下のビットの論理和であるスティッキビット(S)とし
て併せてレジスタ152に格納する。 (2)ステップ1 補数器153および加算器154はレジスタ151とレジスタ152
に保持されている2つの仮数を加減算し、結果をレジス
タ155に格納する。加算時は、補数器153はレジスタ152
の出力をそのまま加算器154に出力して加算器154のCin
は0にする。減算時は、補数器153はレジスタ152の出力
の1の補数をとって加算器154に出力し、Cinを1にす
る。 (3)ステップ2 シフト数生成回路156は加算器154の出力を正規化するた
めのシフト数を生成し、バレルシフタ157はレジスタ155
の出力をシフト数生成回路156の出力に基づいてシフト
を行なうことによりステップ1の演算結果に対して正規
化シフトを行なう。その際、バレルシフタ157は最下位
ビット(L)までのシフト結果と、最下位ビットの1桁下
のビットで2-53の重みを持つ丸めビット(R)と、2-54
の重みを持つビット以下のビットの論理和であるスティ
ッキビット(S)とを生成してレジスタ158に格納する。 (4)ステップ3 丸め値生成回路159はレジスタ158に保持されている最下
位ビット(L)と丸めビット(R)とスティッキビット(S)と
丸めモードと丸め精度および演算結果の符号とによって
丸め加算値を生成する。生成する丸め加算値は、図27に
示す入出力関係図に従い、丸め加算信号が1の時は2
-52の重みを持つビットを1にしてその他のビットを0
にした丸め値を、丸め加算信号が0の時はすべてのビッ
トを0にした丸め値を生成する。RM、RP、RN、RZはANSI/IE
EE浮動小数点演算規格P754に規定される丸めモードで、
順に負方向丸め、正方向丸め、最近偶丸めを表してい
る。加算器160はレジスタ158の出力と丸め値生成回路15
9の出力との加算を行ない、R1シフタ161は加算器160
で桁あふれが発生した場合は加算器160の出力を右に1
ビットシフトしてその他の場合は加算器160の出力をそ
のままレジスタ162に格納し、処理を終了する。
のブロック図を示すものである。ただし、本発明との相
違点を明確にするために原典のブロック図の構成を変更
して示している。251は被乗数を保持する被乗数レジス
タで、1ビットの符号部251sと11ビットの指数部251eと
53ビットの仮数部251fからなる。252は乗数を保持する
乗数レジスタで、1ビットの符号部252sと11ビットの指
数部252eと53ビットの仮数部252fからなる。被乗数レジ
スタ仮数部251fと乗数レジスタ仮数部252fの最上位ビッ
トはいずれも20の重みを持ついわゆる「隠れビット」
で正規化数の時は1であり、このビットを除いて被乗数
レジスタ251および乗数レジスタ252はともに倍精度に合
致している。253は被乗数レジスタ符号部251sと乗数レ
ジスタ符号部252sから被乗数および乗数の符号を読出し
て積の符号を生成する符号生成回路、254は被乗数レジ
スタ指数部251eと乗数レジスタ指数部252eから被乗数お
よび乗数の指数を読出して積の指数を算出する11ビット
の指数加算器、255、256はそれぞれ指数加算器254の2
つの入力を選択する11ビットのセレクタ、257は指数加
算器254の出力を保持してセレクタ255を通して再び指数
加算器254に入力するための11ビットのラッチ、258は積
の指数を算出する課程での11ビットのバイアス(偏位)
補正値を生成するバイアス補正値生成回路、259は積の
仮数の1ビットシフトの正規化に伴って指数を1だけ増
分させるための定数を生成する正規化補正値生成回路、
260は被乗数レジスタ仮数部251fを読出してその上位27
ビットもしくは下位27ビット(この時の最上位ビットは
0とする)を選択して出力する被乗数上位下位選択回
路、261は乗数レジスタ仮数部252fを読出してその上位2
7ビットもしくは下位27ビット(この時の最上位ビット
は0とする)を選択して出力する乗数上位下位選択回
路、262は27ビットの被乗数上位下位選択回路260の出力
と27ビットの乗数上位下位選択回路261の出力を乗算し
てそれぞれ54ビットの和(サム)と桁上げ(キャリ)を
出力する乗算器、263、264はそれぞれ乗算器262の和出
力と桁上げ出力を保持する54ビットのラッチ、265はラ
ッチ263とラッチ264に保持された乗算器262の和出力と
桁上げ出力を加算する54ビットの積生成加算器、266は
積生成加算器265の出力を保持する54ビットのラッチ、2
67は積の仮数を単精度または倍精度に丸めるために加算
を行う時の定数を生成する丸め加算値生成回路、268は
丸め加算値生成回路267の出力とラッチ266の値とを選択
する54ビットのセレクタ、269はセレクタ268の出力と後
述するラッチ273に保持されている値とを加算する54ビ
ットの仮数加算器、270は積生成加算器265の最上位ビッ
トからの桁あふれと仮数加算器269の最上位ビットから
の桁あふれの論理和を演算する論理和ゲート、271は仮
数加算器269の出力を最下位ビット方向に0ビットまた
は1ビットまたは26ビットシフトする54ビットのシフ
タ、272は仮数加算器269の出力の下位30ビットとシフタ
271における26ビットの最下位ビットからのシフトあふ
れとを入力して丸め精度が単精度か倍精度かに応じてス
ティッキビットを生成するスティッキビット生成回路、
273はシフタ271の出力を保持する54ビットのラッチ、27
4は積を保持する積レジスタで、1ビットの符号部274s
と11ビットの指数部274eと53ビットの仮数部274fからな
る。積レジスタ仮数部274fの最上位ビットも20の重み
を持ついわゆる「隠れビット」で正規化数の時は1であ
り、このビットを除いて積レジスタ274は倍精度に合致
している。図44は図43に示す丸め加算値生成回路267が
生成する定数を示す動作説明図で、最上位ビットから24
ビット目だけが1で他が0の丸め加算値Dと最下位ビッ
トから2ビット目だけが1で他が0の丸め加算値Eを生
成する。
データの乗算装置について、以下その動作を説明する。
単精度で丸める場合を図45に示す単精度乗算の動作フロ
ー図を用いて説明する。同図は指数加算器254、乗算器2
62、積生成加算器265、仮数加算器269、シフタ271の処
理ステップ毎の動作の内容を示したものである。 (1)処理ステップ開始前 単精度の被乗数および乗数を倍精度に拡張してそれぞれ
被乗数レジスタ251と乗数レジスタ252に格納する。この
とき被乗数レジスタ指数部251eと乗数レジスタ指数部25
2eはともに倍精度のバイアス表現(真の指数値=指数部
の値−1023(10))に変換され、被乗数レジスタ仮数部25
1fと乗数レジスタ仮数部252fの下位29ビットには0が埋
められる。ラッチ273を0にクリアする。ここで、(10)
は数値が10進数表現であることを表す。 (2)ステップ1 セレクタ255およびセレクタ256により指数加算器254に
被乗数レジスタ指数部251eと乗数レジスタ指数部252eか
ら被乗数と乗数の指数を入力して加算し、加算結果をラ
ッチ257に格納する。被乗数上位下位選択回路260は被乗
数レジスタ仮数部251fの上位27ビットを読出して出力し
(この中に被乗数の仮数部の有効ビットはすべて含まれ
る)、乗数上位下位選択回路261は乗数レジスタ仮数部2
52fの上位27ビットを読出して出力する(この中に乗数
の仮数部の有効ビットはすべて含まれる)。乗算器262
は被乗数上位下位選択回路260および乗数上位下位選択
回路261からの入力に基づいて乗算を実行し、和出力と
桁上げ出力をそれぞれラッチ263とラッチ264に格納す
る。同時に符号生成回路253において被乗数レジスタ符
号部251sと乗数レジスタ符号部252sから被乗数および乗
数の符号を読出して両者の排他的論理和をとり、積の符
号を生成して積レジスタ符号部724sに格納する。 (3)ステップ2 ラッチ257が保持している値は被乗数と乗数のバイアス
表現された指数同士の和であるため2重にバイアスがか
かっている。そのためバイアス補正値生成回路258から-
1023(実際には2の補数表現されている)を出力し、セ
レクタ255およびセレクタ256により指数加算器254にお
いてラッチ257の値とバイアス補正値生成回路258の出力
を加算して再びラッチ257に格納する。積生成加算器265
はラッチ263とラッチ264に保持された乗算器262の和出
力と桁上げ出力を加算してラッチ266に加算結果を格納
する。 (4)ステップ3 仮数加算器269はセレクタ268によりラッチ266に保持さ
れている値とラッチ273の値0を加算する。ステップ2
における積生成加算器265からの桁あふれがあるとき、
即ち仮数部の積が2以上のときは、シフタ271は正規化
のために仮数加算器269からの出力を1ビット最下位ビ
ット方向にシフト(このとき、最上位ビットに1を埋め
る)してラッチ273に結果を格納し、セレクタ255および
セレクタ256により指数加算器254はラッチ257の値と正
規化補正値生成回路259が出力する定数1を加算して再
びラッチ257に格納する。ステップ2における積生成加
算器265からの桁あふれがないとき、即ち仮数部の積が
1以上2未満のときは、シフタ271は正規化を行う必要
がないために仮数加算器269からの出力をシフトせずに
そのままラッチ273に格納し、セレクタ255およびセレク
タ256により指数加算器254はラッチ257の値をそのまま
出力して再びラッチ257に格納する。スティッキビット
生成回路272は仮数加算器269の出力の下位30ビットの論
理和をとり30ビット中に値1のビットが1つでもあれば
スティッキビット出力を1にし、30ビットの全ビットが
値0であればスティッキビット出力を0にする。 (5)ステップ4 丸め加算値生成回路267は丸めモード、ラッチ273に保持
されている値の丸めビットである最上位ビットから25ビ
ット目のビットの値、符号生成回路253が出力する積の
符号(丸めモードが正方向丸めモードと負方向丸めモー
ドのときに必要)およびスティッキビット生成回路272
が出力するスティッキビットの値によって丸め加算の要
否を判定して丸め加算が必要なときは図44に示す丸め加
算値Dを出力し、丸め加算が必要でないときは0を出力
する。仮数加算器269はセレクタ268により丸め加算値生
成回路267が出力する丸め加算値とラッチ273が保持して
いる値とを加算する。この時に仮数加算器269において
桁あふれが発生するとき、即ち丸めによる切上げにより
仮数値が2以上になったときは、シフタ271は再度正規
化のために仮数加算器269からの出力を1ビット最下位
ビット方向にシフト(このとき、最上位ビットに1を埋
める)し、セレクタ255およびセレクタ256により指数加
算器254はラッチ257の値と正規化補正値生成回路259が
出力する定数1を加算する。仮数加算器269において桁
あふれが発生しないとき、即ち仮数値が1以上2未満の
ときは、シフタ271は正規化を行う必要がないために仮
数加算器269からの出力をシフトせずにそのまま出力
し、セレクタ255およびセレクタ256により指数加算器25
4もラッチ257の値をそのまま出力する。いずれの場合
も、指数加算器254の出力を積レジスタ指数部274eに格
納し、シフタ271の出力の最下位ビットを除く53ビット
の下位29ビットを0にマスクして積レジスタ仮数部274f
に格納し、処理を終了する。
度で丸める場合を図46に示す倍精度乗算の動作フロー図
を用いて説明する。同図も指数加算器254、乗算器262、
積生成加算器265、仮数加算器269、シフタ271の処理ス
テップ毎の動作の内容を示したものである。 (1)処理ステップ開始前 倍精度の被乗数および乗数をそれぞれ被乗数レジスタ25
1と乗数レジスタ252に格納する。このとき被乗数レジス
タ指数部251eと乗数レジスタ指数部252eはともに倍精度
のバイアス表現(真の指数値=指数部の値−1023(10))
になっている。ラッチ273を0にクリアする。 (2)ステップ1 セレクタ255およびセレクタ256により指数加算器254に
被乗数レジスタ指数部251eと乗数レジスタ指数部252eか
ら被乗数と乗数の指数を入力して加算し、加算結果をラ
ッチ257に格納する。被乗数上位下位選択回路260は被乗
数レジスタ仮数部251fの上位27ビット(最上位ビットは
0)を読出して出力し、乗数上位下位選択回路261は乗
数レジスタ仮数部252fの下位27ビット(最上位ビットは
0)を読出して出力する。乗算器262は被乗数上位下位
選択回路260および乗数上位下位選択回路261からの入力
に基づいて乗算を実行し、和出力と桁上げ出力をそれぞ
れラッチ263とラッチ264に格納する。同時に符号生成回
路253において被乗数レジスタ符号部251sと乗数レジス
タ符号部252sから被乗数および乗数の符号を読出して両
者の排他的論理和をとり、積の符号を生成して積レジス
タ符号部724sに格納する。 (3)ステップ2 ラッチ257が保持している値は被乗数と乗数のバイアス
表現された指数同士の和であるため2重にバイアスがか
かっている。そのためバイアス補正値生成回路258から-
1023(実際には2の補数表現されている)を出力し、セ
レクタ255およびセレクタ256により指数加算器254にお
いてラッチ257の値とバイアス補正値生成回路258の出力
を加算して再びラッチ257に格納する。積生成加算器265
はラッチ263とラッチ264に保持された乗算器262の和出
力と桁上げ出力を加算してラッチ266に加算結果を格納
する。ラッチ266に格納された値は最も下位の部分積で
ある。同時に、被乗数上位下位選択回路260は被乗数レ
ジスタ仮数部251fの下位27ビット(最上位ビットは0)
を読出して出力し、乗数上位下位選択回路261はは乗数
レジスタ仮数部252fの上位27ビットを読出して出力す
る。乗算器262は被乗数上位下位選択回路260および乗数
上位下位選択回路261からの入力に基づいて乗算を実行
し、和出力と桁上げ出力をそれぞれラッチ263とラッチ2
64に格納する。 (4)ステップ3 仮数加算器269はセレクタ268によりラッチ266に保持さ
れている値とラッチ273の値0を加算する。シフタ271は
仮数加算器269における加算結果の54ビットにステップ
2での積生成加算器265からの桁あふれとステップ3で
の仮数加算器269からの桁あふれとを論理和ゲート270で
論理和をとった1ビットを最上位ビット側に付加した55
ビットのデータを最下位ビット方向に26ビットシフトし
て結果をラッチ273に格納する。積生成加算器265はラッ
チ263とラッチ264に保持された乗算器262の和出力と桁
上げ出力を加算してラッチ266に加算結果を格納する。
ラッチ266に格納された値は第1の中位の部分積であ
る。同時に、被乗数上位下位選択回路260は被乗数レジ
スタ仮数部251fの上位27ビットを読出して出力し、乗数
上位下位選択回路261は乗数レジスタ仮数部252fの下位2
7ビット(最上位ビットは0)を読出して出力する。乗
算器262は被乗数上位下位選択回路260および乗数上位下
位選択回路261からの入力に基づいて乗算を実行し、和
出力と桁上げ出力をそれぞれラッチ263とラッチ264に格
納する。 (5)ステップ4 仮数加算器269はセレクタ268によりラッチ266に保持さ
れている値とラッチ273に保持されたシフタ271の出力と
を加算する。シフタ271は仮数加算器269における加算結
果の54ビットをシフトせずにそのまま出力してラッチ27
3に格納する。積生成加算器265はラッチ263とラッチ264
に保持された乗算器262の和出力と桁上げ出力を加算し
てラッチ266に加算結果を格納する。ラッチ266に格納さ
れた値は第2の中位の部分積である。同時に、被乗数上
位下位選択回路260は被乗数レジスタ仮数部251fの上位2
7ビットを読出して出力し、乗数上位下位選択回路261は
乗数レジスタ仮数部252fの上位27ビットを読出して出力
する。乗算器262は被乗数上位下位選択回路260および乗
数上位下位選択回路261からの入力に基づいて乗算を実
行し、和出力と桁上げ出力をそれぞれラッチ263とラッ
チ264に格納する。 (6)ステップ5 仮数加算器269はセレクタ268によりラッチ266に保持さ
れている値とラッチ273に保持されたシフタ271の出力と
を加算する。シフタ271は仮数加算器269における加算結
果の54ビットにステップ4での積生成加算器265からの
桁あふれとステップ5での仮数加算器269からの桁あふ
れとを論理和ゲート270で論理和をとった1ビットを最
上位ビット側に付加した55ビットのデータを最下位ビッ
ト方向に26ビットシフトして結果をラッチ273に格納す
る。積生成加算器265はラッチ263とラッチ264に保持さ
れた乗算器262の和出力と桁上げ出力を加算してラッチ2
66に加算結果を格納する。ラッチ266に格納された値は
最も上位の部分積である。 (7)ステップ6 仮数加算器269はセレクタ268によりラッチ266に保持さ
れている値とラッチ273に保持されたシフタ271の出力と
を加算する。ステップ5での積生成加算器265からの桁
あふれとステップ6での仮数加算器269からの桁あふれ
とを論理和ゲート270で論理和をとった値が1であると
き、即ち仮数部の積が2以上のときは、シフタ271は正
規化のために仮数加算器269からの出力を1ビット最下
位ビット方向にシフト(このとき、最上位ビットに1を
埋める)してラッチ273に結果を格納し、セレクタ255お
よびセレクタ256により指数加算器254はラッチ257の値
と正規化補正値生成回路259が出力する定数1を加算し
て再びラッチ257に格納する。論理和ゲート270で論理和
をとった値が0であるとき、即ち仮数部の積が1以上2
未満のときは、シフタ271は正規化を行う必要がないた
めに仮数加算器269からの出力をシフトせずにそのまま
ラッチ273に格納し、セレクタ255およびセレクタ256に
より指数加算器254はラッチ257の値をそのまま出力して
再びラッチ257に格納する。スティッキビット生成回路2
72はステップ3でのシフタ271における26ビットの最下
位ビットからのシフトあふれとステップ5でのシフタ27
1における26ビットの最下位ビットからのシフトあふれ
とを合わせた52ビットの論理和をとり52ビット中に値1
のビットが1つでもあればスティッキビット出力を1に
し、52ビットの全ビットが値0であればスティッキビッ
ト出力を0にする。 (8)ステップ7 丸め加算値生成回路267は丸めモード、ラッチ273に保持
されている値の丸めビットである最下位ビットの値、符
号生成回路253が出力する積の符号(丸めモードが正方
向丸めモードと負方向丸めモードのときに必要)および
スティッキビット生成回路272が出力するスティッキビ
ットの値によって丸め加算の要否を判定して丸め加算が
必要なときは図44に示す丸め加算値Eを出力し、丸め加
算が必要でないときは0を出力する。仮数加算器269は
セレクタ268により丸め加算値生成回路267が出力する丸
め加算値とラッチ273が保持している値とを加算する。
この時に仮数加算器269において桁あふれが発生すると
き、即ち丸めによる切上げにより仮数値が2以上になっ
たときは、シフタ271は再度正規化のために仮数加算器2
69からの出力を1ビット最下位ビット方向にシフト(こ
のとき、最上位ビットに1を埋める)し、セレクタ255
およびセレクタ256により指数加算器254はラッチ257の
値と正規化補正値生成回路259が出力する定数1を加算
する。仮数加算器269において桁あふれが発生しないと
き、即ち仮数値が1以上2未満のときは、シフタ271は
正規化を行う必要がないために仮数加算器269からの出
力をシフトせずにそのまま出力し、セレクタ255および
セレクタ256により指数加算器254もラッチ257の値をそ
のまま出力する。いずれの場合も、指数加算器254の出
力を積レジスタ指数部274eに格納し、シフタ271の出力
の最下位ビットを除く53ビットを積レジスタ仮数部274f
に格納して処理を終了する。
よび除算装置においては、商の指数部を求めるためにま
ず被乗数の指数部の値から除数の指数部の値を減算す
る。この減算値はともにバイアス表現された指数同士の
差であるためにバイアスが相殺されている。そのためバ
イアス値をこの減算値に加算して正しくバイアス表現さ
れた商の指数部を生成する。
浮動小数点データの加減算装置では、丸め加算値を加算
する最下位ビット(L)の位置が加算器154における入出力
に対して固定されておらずバレルシフタ157での正規化
シフト後に初めて定まるため、常に加減算、正規化、丸
めという処理の流れとなる。そのため、2つの仮数の加
減算と丸め加算値の加算とをそれぞれ独立に行なう必要
があり、図23(a)に示すように桁合わせを含めて少なく
とも4ステップの処理ステップ数を要し、また前者の加
減算を加算器154で後者の加算を加算器160で行うため、
加算器が2つ必要になり、ハードウェアが増大するとい
う問題点を有している。
丸め加算値の加算とを同一加算器で同時に行うことがで
き、その結果、指定した丸めモードと丸め精度で丸めを
行なった浮動小数点データの和および差の仮数部を得る
のに必要な処理ステップ数が小さくてかつ従来の浮動小
数点データの加減算装置に比べてハードウェアが少ない
浮動小数点データの加減算方法および加減算装置を提供
することを目的とする。
は、乗算器262からの和と桁上げの加算と部分積を累算
するための加算と丸め加算値の加算とそれぞれ独立に行
っているため、単精度乗算の場合で4ステップ、倍精度
乗算の場合で7ステップもの処理ステップ数を要し、ま
た前一者の加算を積生成加算器265で後二者の加算を仮
数加算器269で行なうため、加算器が2つ必要になり、
ハードウェアが増大するという問題点を有している。
丸め加算値の加算または部分積を累算するための加算と
乗算器からの和と桁上げの加算とを同一加算器で同時に
行うことができ、その結果、各丸めモードに対応した丸
めを指定した丸め精度で施した積を得るのに必要な処理
ステップ数が小さくてかつ従来の浮動小数点データの乗
算装置に比べてハードウェアが少ない浮動小数点データ
の乗算方法および乗算装置を提供することを目的とす
る。
は、最初に被除数の指数部と除数の指数部とを単純に減
算するため減算値はバイアスが相殺されてしまい、後に
バイアスを補正するステップが必要になり、バイアス補
正のためのハードウェアが増大するという問題点を有し
ている。
スを補正するステップを必要とせず、従来の浮動小数点
データの除算装置に比べてハードウェアが少ない浮動小
数点データの除算方法および除算装置を提供することを
目的とする。
点データの演算が同符号の加算もしくは異符号の減算で
ある真の仮数加算の時は同一指数に桁合せを行なった第
1と第2の仮数の加算と前記加算結果と丸め精度および
丸めモードおよび演算結果の符号によって一意に定まる
丸め加算値との加算とを同時に行ない、浮動小数点デー
タの演算が同符号の減算もしくは異符号の加算である真
の仮数減算の時は同一指数に桁合せを行なった第1と第
2の仮数の減算と前記減算結果と丸め精度および丸めモ
ードおよび演算結果の符号によって一意に定まる丸め加
算値との加算とを同時に行ない、前記第1と第2の仮数
および丸め加算値の加減算ののち演算結果が非正規化数
の時は前記演算結果を1ビットシフトして正規化し、前
記正規化ののち正規化された演算結果の中から真の仮数
加算か真の仮数減算のいずれであるかを示す演算の種類
と丸め精度によって定まる最下位ビットを含む複数のビ
ットを検査して前記正規化された演算結果のうち丸め精
度によって定まる前記最下位ビットまでが所定の精度に
丸めた第1の仮数と第2の仮数の真の仮数加算もしくは
真の仮数減算に対して一致するか、検査したビットより
上位への桁上げが一致して検査したビットだけが一致し
ないか、検査したビットより上位への桁上げも検査した
ビットより上位のビットも一致しないかを判断し、前記
判断結果に基づいて処理を終了するか、前記正規化され
た演算結果に対して検査したビットの一部あるいは全部
を補正して処理を終了するか、前記正規化された演算結
果に対して再び前記丸め加算値を加算して処理を終了す
るかのいずれかを行なう浮動小数点データの加減算方法
である。
同符号の加算もしくは異符号の減算である真の仮数加算
か同符号の減算もしくは異符号の加算である真の仮数減
算のいずれであるかを示す演算の種類と丸め精度と丸め
モードと演算結果の符号によって一意に定まる丸め加算
値を生成する丸め加算値生成手段と、真の仮数加算時は
同一指数に桁合せを行なった第1と第2の仮数の加算と
前記加算結果と前記丸め加算値生成手段が生成する丸め
加算値との加算とを同時に行ない真の仮数減算時は同一
指数に桁合せを行なった第1と第2の仮数の減算と前記
減算結果と前記丸め加算値生成手段が生成する丸め加算
値との加算とを同時に行なう仮数加減算実行手段と、前
記仮数加減算実行手段による演算結果が非正規化数の時
は前記演算結果をシフトして正規化する正規化手段と、
前記正規化手段の出力の中から丸め精度によって定まる
最下位ビットを含む複数のビットを検査して前記正規化
手段の出力のうち丸め精度によって定まる前記最下位ビ
ットまでが所定の精度に丸めた第1の仮数と第2の仮数
の真の仮数加算もしくは真の仮数減算に対して一致する
か、検査したビットより上位への桁上げが一致して検査
したビットだけが一致しないか、検査したビットより上
位への桁上げも検査したビットより上位のビットも一致
しないかを判断する演算結果検査手段と、前記正規化手
段の出力に対して前記演算結果検査手段が検査したビッ
トの一部あるいは全部を補正する丸め補正手段とを備え
た浮動小数点データの加減算装置である。
よび乗数のそれぞれの仮数部を乗算して積を和(サム)
と桁上げ(キャリ)に分けて求め、前記乗算ののち前記
和と前記桁上げと丸め精度および丸めモードおよび前記
被乗数および前記乗数の符号によって一意に定まる丸め
加算値とを加算する演算を行い、前記演算ののち演算結
果が非正規化数の時は前記演算結果を1ビットシフトし
て正規化し、前記正規化ののち正規化された演算結果の
中から丸め精度によって定まる最下位ビットを含む複数
のビットを検査して前記正規化された演算結果のうち丸
め精度によって定まる前記最下位ビットまでが所定の精
度に丸めた前記被乗数の仮数と前記乗数の仮数の積に対
して一致するか、検査したビットより上位への桁上げが
一致して検査したビットだけが一致しないか、検査した
ビットより上位への桁上げも検査したビットより上位の
ビットも一致しないかを判断し、前記判断結果に基づい
て処理を終了するか、前記正規化された演算結果に対し
て検査したビットの一部あるいは全部を補正して処理を
終了するか、前記正規化された演算結果に対して再び前
記丸め加算値を加算して処理を終了するかのいずれかを
行なう浮動小数点データの乗算方法である。
もに浮動小数点形式の被乗数および乗数の仮数部の長さ
に等しいかもしくは仮数部の長さよりも長くその入力に
対して少なくとも入力の2倍のビット幅の和(サム)と
桁上げ(キャリ)とを出力する仮数乗算手段と、丸め精
度と丸めモードと2つの浮動小数点データの符号とによ
って一意に定まる丸め加算値を生成する丸め加算値生成
手段と、前記仮数乗算手段の和出力と桁上げ出力および
前記丸め加算値生成手段からの丸め加算値の三者の加算
を同時に行う仮数加算手段と、前記仮数加算手段による
演算結果が非正規化数の時は前記演算結果をシフトして
正規化する正規化手段と、前記正規化手段の出力の中か
ら丸め精度によって定まる最下位ビットを含む複数のビ
ットを検査して前記正規化手段の出力のうち丸め精度に
よって定まる前記最下位ビットまでが所定の精度に丸め
た前記被乗数の仮数と前記乗数の仮数の積に対して一致
するか、検査したビットより上位への桁上りが一致して
検査したビットだけが一致しないか、検査したビットよ
り上位への桁上りも検査したビットより上位のビットも
一致しないかを判断する演算結果検査手段と、前記正規
化手段の出力に対して前記演算結果検査手段が検査した
ビットの一部あるいは全部を補正する丸め補正手段とを
備えた浮動小数点データの乗算装置である。
仮数部を保持する被乗数保持手段と、浮動小数点形式の
乗数の仮数部を保持する乗数保持手段と、2つの入力の
うち少なくとも一方の入力のビット幅が前記被乗数およ
び前記乗数の仮数部の長さより短かくその入力に対して
少なくとも入力の2倍のビット幅の和(サム)と桁上げ
(キャリ)とを出力する仮数乗算手段と、前記仮数乗算
手段の被乗数入力のビット幅が前記被乗数の仮数部の長
さよりも短かい場合は前記被乗数保持手段に保持された
被乗数の仮数部の最上位ビットから最下位ビットまでを
複数の前記仮数乗算手段の被乗数入力のビット幅の部分
仮数部に分割しその中から処理ステップ毎に1つを選択
して出力する部分被乗数選択手段と、前記仮数乗算手段
の乗数入力のビット幅が前記乗数の仮数部の長さよりも
短かい場合は前記乗数保持手段に保持された乗数の仮数
部の最上位ビットから最下位ビットまでを複数の前記仮
数乗算手段の乗数入力のビット幅の部分仮数部に分割し
その中から処理ステップ毎に1つを選択して出力する部
分乗数選択手段と、丸め精度と丸めモードと2つの浮動
小数点データの符号とによって一意に定まる丸め加算値
を生成する丸め加算値生成手段と、処理の最初のステッ
プは前記仮数乗算手段の和出力と桁上げ出力および前記
丸め加算値生成手段からの丸め加算値の三者の加算を同
時に行い最初の部分積を生成し、以降のステップは前記
仮数乗算手段の和出力と桁上げ出力および直前のステッ
プで生成されたシフトされた部分積の三者の加算を同時
に行い新たな部分積を生成する仮数加算手段と、処理の
最初または中間ステップは前記仮数加算手段から得られ
る部分積を当該ステップで前記仮数乗算手段において乗
算された乗数および被乗数の部分仮数部の位置で定まる
ビット数だけ最下位ビット方向にシフトし、最終のステ
ップでは前記仮数加算手段から得られる演算結果が非正
規化数の時は前記演算結果をシフトして正規化するシフ
ト手段と、処理の最初または中間ステップに前記シフト
手段の出力を次ステップの前記仮数加算手段における入
力として保持する部分積保持手段と、処理の最初または
中間ステップにおける前記シフト手段でのシフトあふれ
の各ビットと処理の最終ステップにおける前記シフト手
段の出力の中の丸め精度によって定まる最下位ビットを
含む複数のビットとを検査して処理の最終ステップにお
ける前記シフト手段の出力のうち丸め精度によって定ま
る前記最下位ビットまでが所定の精度に丸めた前記被乗
数の仮数と前記乗数の仮数の積に対して一致するか、検
査したビットより上位への桁上りが一致して検査したビ
ットだけが一致しないか、検査したビットより上位への
桁上りも検査したビットより上位のビットも一致しない
かを判断する演算結果検査手段と、前記シフト手段の出
力に対して前記演算結果検査手段が検査したビットの一
部あるいは全部を補正する丸め補正手段とを備えた浮動
小数点データの乗算装置である。
小数点形式の被除数の指数部から同一浮動小数点形式の
除数の指数部を減じた値に1だけ小さい値を求める演算
を行い、前記演算を行ったのち前記演算結果の最上位ビ
ットを反転する浮動小数点データの除算方法である。
小数点形式の被除数の指数部から同一浮動小数点形式の
除数の指数部を減じた値に1だけ小さい値を求める指数
減算手段と、前記指数減算手段の出力の最上位ビットの
反転を行う最上位ビット補正手段とを備えた浮動小数点
データの除算装置である。
の仮数の加減算と丸め加算値の加算とを同時に実行して
正規化を行い、そのまま処理を終了するかまたは結果を
補正して処理を終了するか、もしくは丸め加算値の加算
をさらに行うだけで処理を終了することができ、和また
は差を得るのに必要な処理ステップ数が少なくて済む。
浮動小数点データの仮数と丸め加算値生成手段からの丸
め加算値の三者の和もしくは前二者の差と後者との和を
仮数加減算実行手段で求めその結果を正規化手段におい
て正規化したのち、演算結果検査手段の判断により、正
規化手段の出力が所定の精度に丸めた和または差の仮数
に対して一致する場合はそのまま処理を終了でき、検査
したビットより上位への桁上げが一致して検査したビッ
トだけが一致しない場合は丸め補正手段により正規化手
段の出力の一部あるいは全部を補正して処理を終了で
き、検査したビットより上位への桁上げも検査したビッ
トより上位のビットも一致しない場合は正規化手段の出
力に対して丸め加算値生成手段および仮数加減算実行手
段により再び丸め加算値を加算するだけで処理を終了す
ることができる。そのため、和または差を得るのに必要
な処理ステップ数が少なくて済み、また仮数部に関して
単一の加算器で2つの仮数の加減算と丸めの加算とを実
行しているため、必要なハードウェアが削減できる。
および乗数の仮数部の積の和と桁上げと丸め加算値とを
同時に加算して正規化を行い、そのまま処理を終了する
かまたは結果を補正して処理を終了するか、もしくは丸
め加算値の加算をさらに行うだけで処理を終了すること
ができ、積を得るのに必要な処理ステップ数が少なくて
済む。
数点形式の被乗数および乗数のそれぞれの仮数部を仮数
乗算手段に入力して得られる和出力および桁上げ出力と
丸め加算値生成手段からの丸め加算値の三者の和を仮数
加算手段で求めその結果を正規化手段において正規化し
たのち、演算結果検査手段の判断により、正規化手段の
出力が所定の精度に丸めた積の仮数に対して一致する場
合はそのまま処理を終了でき、検査したビットより上位
への桁上げが一致して検査したビットだけが一致しない
場合は丸め補正手段により正規化手段の出力の一部ある
いは全部を補正して処理を終了でき、検査したビットよ
り上位への桁上げも検査したビットより上位のビットも
一致しない場合は正規化手段の出力に対して丸め加算値
生成手段および仮数加算手段により再び丸め加算値を加
算するだけで処理を終了することができる。そのため、
積を得るのに必要な処理ステップ数が少なくて済み、ま
た仮数部に関して単一の加算器で和と桁上げの加算と丸
めの加算とを実行しているため、必要なハードウェアが
削減できる。
乗数選択手段と部分乗数選択手段において被乗数および
乗数の仮数部の部分を下位から順にかつすべての組合せ
を選択して仮数乗算手段に入力して、順次得られる和出
力および桁上げ出力と丸め加算値生成手段からの丸め加
算値または部分積保持手段に保持されている値の三者の
和を仮数加算手段で求めその結果をシフト手段において
シフトし再び部分積保持手段に格納するかもしくはシフ
ト手段で最終の演算結果を正規化したのち、演算結果検
査手段の判断により、シフト手段の出力が所定の精度に
丸めた積の仮数に対して一致する場合はそのまま処理を
終了でき、検査したビットより上位への桁上げが一致し
て検査したビットだけが一致しない場合は丸め補正手段
によりシフト手段の出力の一部あるいは全部を補正して
処理を終了でき、検査したビットより上位への桁上げも
検査したビットより上位のビットも一致しない場合はシ
フト手段の出力に対して丸め加算値生成手段および仮数
加算手段により丸め加算値を加算するだけで処理を終了
することができる。そのため、積を得るのに必要な処理
ステップ数が少なくて済み、また仮数部に関して単一の
加算器で和と桁上げの加算と丸めの加算または部分積を
累算するための加算とを実行しているため、必要なハー
ドウェアが削減できる。
小さい値を求め最上位ビットを反転させることでバイア
ス値の加算を実現し、被除数および除数と同様にバイア
スがかかった浮動小数点形式の商の指数部を単一の処理
ステップで求めることができるため、指数部のバイアス
を補正するステップを必要としない。
算手段で行う1だけ小さい値を求める演算と最上位ビッ
ト補正手段で行う最上位ビットの反転とバイアス値の加
算を実現し、被除数および除数と同様にバイアスがかか
った浮動小数点形式の商の指数部を単一の処理ステップ
で求めることができるため指数部のバイアスを補正する
ステップを必要とせず、またバイアス補正のためのハー
ドウェアの増大も回避することができる。
数点データの加減算装置のブロック図を示すものであ
る。図1において、101は2つの浮動小数点データのう
ち指数が小さくない方の仮数を格納するレジスタ、102
は2つの浮動小数点データのうち指数が小さい方の仮数
を小さくない方の指数に桁合わせしたものを格納するレ
ジスタ、103は後述の丸め補正繰返し制御回路109が新し
い処理ステップの挿入を指示した場合には後述のレジス
タ110をそれ以外の通常演算時にはレジスタ101を選択す
るマルチプレクサ、104は後述の丸め補正繰返し制御回
路109が新しい処理ステップの挿入を指示した場合には
定数0をそれ以外の通常演算時にはレジスタ102で選択
するマルチプレクサ、105は減算時にマルチプレクサ104
の出力の1の補数をとる補数器、106は2つの浮動小数
点データの指数差と演算の種類および丸めモードに対応
して丸め加算の位置を決定して丸め加算するビットを1
とし他のビットを0にしたデータを生成する丸め値生成
回路、107は加算時にはキャリ入力(Cin)を0、減算時に
はキャリ入力(Cin)を1として、マルチプレクサ103の出
力と補数器105出力と丸め値生成回路106の出力を加算す
ることによって仮の丸めと演算を同時に実行する加算
器、108は加算器107の出力の21の重みを持つビットが
1の時は加算器107の出力を最下位ビット方向(以下、
右という)に1ビットシフトして、21の重みをもつビ
ットと20の重みを持つビットがともに0の時は加算器1
07の出力を最上位ビット方向(以下、左という)に1ビ
ットシフトして、それ以外の時は加算器107の出力をそ
のまま出力するLR1シフタ、109は加算器107で行なっ
た丸めが正しいかどうか判断して、最下位ビットもしく
は最下位ビットと1つ上位桁のビットとの補正だけで正
しい丸め結果を得ることが可能な場合は補正した値を後
述のレジスタ10に格納するとともに処理の終了を指示
し、正しい丸め結果を得るために丸め値の再加算を実行
する必要がある場合は処理ステップの挿入を指示する丸
め補正繰返し制御回路、110はLR1シフタ108の出力を
格納するレジスタ、111はレジスタ110に保持されている
値を正規化するためのシフト数を生成するシフト数生成
回路、112は正規化のためにレジスタ110の出力に対して
シフト数生成回路111が示すビット数だけシフトを行な
うバレルシフタ、113はバレルシフタ112の出力を格納す
るレジスタである。図3、図4、図5、図6は丸めモー
ドが最近偶丸めモードの時の図1に示す丸め補正繰返し
制御回路109の制御関係図で、同符号の2つの浮動小数
点データの加算または異符号の2つの浮動小数点データ
の減算(以下、仮数加算という)を実行しかつ丸め精度
が単精度のときは図3に示すように、加算器107の出力
の21、2-22、2-23、2-24の重みを持つビットと2
-25の重みを持つビット以下のビットの論理和であるス
ティッキビットSとから加算器107の出力のビット補正の
要否と丸め加算値の再加算の要否とを決定し、仮数加算
を実行しかつ丸め精度が倍精度のときは図4に示すよう
に、加算器107の出力の21、2-51、2-52、2-53の重
みを持つビットと2-54の重みを持つビット以下のビッ
トの論理和であるスティッキビットSとから加算器107の
出力のビット補正の要否と丸め加算値の再加算の要否と
を決定し、同符号の2つの浮動小数点データの減算また
は異符号の2つの浮動小数点データの加算(以下、仮数
減算という)を実行しかつ丸め精度が単精度のときは図
5に示すように、加算器107の出力の20、2-23、
2-24、2-25の重みを持つビット2-26の重みを持つビ
ット以下のビットの論理和であるスティッキビットSと
から加算器107の出力のビット補正の要否と丸め加算値
の再加算の要否とを決定し、仮数減算を実行しかつ丸め
精度が倍精度のときは図6に示すように、加算器107の
出力の20、2-52、2-53、2-54の重みを持つビットと
2-55の重みを持つビット以下のビットの論理和である
スティッキビットSとから加算器107の出力のビット補正
の要否と丸め加算値の再加算の要否とを決定する。図
7、図8、図9、図10は丸めモードが正方向丸めモード
で演算結果の符号が正の時の図1に示す丸め補正繰返し
制御回路109の制御関係図で、同符号の2つの浮動小数
点データの加算または異符号の2つの浮動小数点データ
の減算(以下、仮数加算という)を実行しかつ丸め精度
が単精度のときは図7に示すように、加算器107の出力
の21 、2-22、2-23、2-24の重みを持つビットと2-25
の重みを持つビット以下のビットの論理和であるスティ
ッキビットSとから加算器107の出力のビット補正の要否
と丸め加算値の再加算の要否とを決定し、仮数加算を実
行しかつ丸め精度が倍精度のときは図8に示すように、
加算器107の出力の21、2-51、2-52、2-53の重みを
持つビットと2-54の重みを持つビット以下のビットの
論理和であるスティッキビットSとから加算器107の出力
のビット補正の要否と丸め加算値の再加算の要否とを決
定し、同符号の2つの浮動小数点データの減算または異
符号の2つの浮動小数点データの加算(以下、仮数減算
という)を実行しかつ丸め精度が単精度のときは図9に
示すように、加算器107の出力の20、2-23、2-24、2
-25の重みを持つビットと2-26の重みを持つビット以下
のビットの論理和であるスティッキビットSとから加算
器107の出力のビット補正の要否と丸め加算値の再加算
の要否とを決定し、仮数減算を実行しかつ丸め精度が倍
精度のときは図10に示すように、加算器107の出力の
20、2-52、2-53、2-54の重みを持つビットと2-55
の重みを持つビット以下のビットの論理和であるスティ
ッキビットSとから加算器107の出力のビット補正の要否
と丸め加算値の再加算の要否とを決定する。図24、図25
は図1に示す丸め値生成回路106の入出力関係図で、丸
めモードと演算結果の符号と演算の種類と丸めの再加算
時か否かに応じて丸め加算値を決定する。丸め値生成回
路106は丸め精度が単精度の時は図24に、倍精度の時は
図24に基づいて、丸め加算ビットが示す重みのビットの
値を1として他を0とした丸め加算値を生成する。以上
のように構成された本実施例の浮動小数点データの加減
算装置について、まずその原理を説明する。ここでは、
丸め精度が単精度の場合を例に挙げるが、倍精度の場合
も同一の考え方に基づく。
減数、加減数の指数部をe1、e2(但し、e1≦e2)とする
と、仮数加算時の和の仮数部Aは、
囲
なシフト数は最大でも右に1ビットとなる。(2)は数値
が2進数表現であることを表す。また仮数減算時の差の
仮数部Aは、
なシフト数は0から最大左に23ビットとなる。
なシフト数は0から最大左に24ビットとなる。
なシフト数は最大でも左に1ビットシフトとなる。
なシフト数は最大でも左1ビットとなる。
の正規化のために必要なシフト数は最大でも左1ビット
であるため、e1−e2≧2の時は仮数減算後の正規化のた
めに必要なシフト数は最大でも左に1ビットとなる。
差0、1以外の仮数減算の時は仮数演算後2ビット以上
のシフトを必要とせず、前者は正規化前の2-22の重み
を持つビットまたは2-23の重みを持つビットが結果の
最下位ビット(L)になり、後者は2-23の重みを持つビッ
トまたは2-24の重みを持つビットが結果の最下位ビッ
ト(L)になる。従って、仮数加算の時または指数差0、
1以外の仮数減算の時は加減算と同時にこれらのビット
の位置で丸めを行ない、その後右または左に1ビット正
規化シフトを行なえばよい。演算後2ビットシフト以上
のシフトが必要なのは、指数差が0または1の仮数減算
の時のみであり、指数差0の時は演算前の桁合わせシフ
トを行わないので最下位ビットより下位に有効な値を持
たず、丸めを必要としない。指数差1の時は演算前の桁
合わせシフト数は1ビットであるので最下位ビットの1
桁下(丸めビットR)にのみ有効な値を持つが、20の重
みを持つビットが1ならば正規化のためのシフトは不要
で丸めだけを必要とし、20の重みを持つビットが0な
らば正規化のためのシフトによって丸めビットが最下位
ビットもしくはそれより上位に移動されるため正規化後
に丸めを必要としない。従って、指数差が0または1の
仮数減算の時は演算後に正規化のためのシフトか丸めの
多くとも一方のみを行なえばよい。図29(a)に仮数加算
時の最下位ビット(L)の位置を、(b)指数差0、1以外の
仮数減算時の最下位ビット(L)の位置を示す。次に、最
近偶丸めを実現する原理を示す。最近値に丸めるために
は、丸め加算するビットすなわち最下位ビット(L)の1
つ小さいビット(丸めビットR)が1か0かによって、最
下位ビットへの加算の有無を決定する。丸めビットが0
の時、丸め前のデータと丸め後のデータは同一のもので
あり、丸めビットが1の時、最下位ビットに1を加算す
ることになる。この丸め加算は、丸めビットへ1を加算
し、丸めビットからの桁上げを利用して最下位ビットへ
の加算を行なうことによって自動的に実現できる。この
方法では、丸めビットより小さいビット判定しないの
で、丸めビットが1で、それより小さいビットが0であ
る中間値の場合も、丸め加算を行うことで、大きい方へ
丸められることになる。しかしながら、ANSI/IEEE浮動
小数点演算規格P754では偶数方向への最近値丸めを規定
しており、図27のRNの欄に示すように、丸めビットが1
であっても丸めビットより小さい部分が0であるか否か
を示すスティッキビットが0である中間値の場合には、
最下位ビットが常に偶数になるように丸めを行うことに
なる。さらに具体的に、最下位ビットが1の時は、丸め
加算をし、最下位ビットが0の時は、丸め加算をしない
ということになる。
丸め加算を行った場合の最下位ビットへの桁上げであ
る。丸めビットが1である場合、丸め加算によって丸め
ビットが0になり、丸め加算によって発生した桁上げが
最下位ビットへ加算されるが、最下位ビットが1のとき
は図28(a)のように上位ビットへと桁上げが伝搬してい
く。ところが、最下位ビットが0のときは、図28(b)の
ように最下位ビットが1になるだけで、桁上げは伝搬し
ない。したがって、丸めビットが1でスティッキビット
が0である中間値に対しては、丸めビットに無条件に加
算を行った後の丸めビットとスティッキビットがともに
0ならば最下位ビットを0に修正することによって、正
確に最近偶丸めが実行できる。すなわち、丸めビットの
位置が演算前に決定できれば、丸めと演算は同時に実行
可能となる。
持つビットへ、指数差0、1以外の減算時は仮に2-25
の重みを持つビットへ1を加算して演算を行った後、演
算結果の21および20の重みを持つビットによって真の
丸めビットを決定し、仮に行った丸め結果を補正するこ
とで丸めを実現する。仮数加算時は仮の丸め加算した結
果の2-22と2-23と2-24の重みを持つビットとそれよ
り小さい各ビットの論理和をとった1ビット、仮数減算
時は仮に丸め加算した結果の2-23と2-24と2-25の重
みを持つビットとそれより小さい各ビットの論理和をと
った1ビットとによって、 イ.正しい結果が得られる
場合 ロ.2-22または2-23の重みを持つビットの補正によっ
て正しい結果が得られる場合 ハ.2-22または2-23の重みを持つビットの補正だけで
は正しい結果が得られない場合を判断し、ロの場合は当
該ビットの補正を行ない、ハの場合は再度同一の丸めを
加算することによって、正しい演算結果を得る。
浮動小数点データの加減算装置について、以下その動作
を説明する。説明は最近偶丸めモード、正方向丸めモー
ドおよび負方向丸めモード、零方向丸めモードの順に、
さらに各々について丸め精度が単精度と倍精度について
区分する。 1 最近偶丸めモード 1−1被加減数および加減数が単精度で和または差を単
精度で丸める時 (1)処理ステップ開始前 2つの浮動小数点データの指数と符号および命令が加算
であるか減算であるかに基づいて、仮数加算か仮数減算
かの演算の種類と演算結果の符号とを図26の符号演算関
係図に示すように決定する。被加減数および加減数のう
ち指数が小さくない方の仮数をレジスタ101に、被加減
数および加減数のうち指数が小さい方の仮数を小さくな
い方の指数に桁合わせしたものをレジスタ102に格納す
る。桁合わせ時の桁落ちしたビットは、最下位ビット
(L)の1桁下のビットで2-24の重みを持つ丸めビット
(R)と、2-25の重みを持つビット以下のビットの論理和
であるスティッキビット(S)として併せてレジスタ102に
格納する。 (2)ステップ1 ・仮数加算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、2-24の重みを持つビットを1にして
他のビットを0にしたデータを生成する。補数器105は
マルチプレクサ104出力をそのまま加算器107の入力と
し、このときCinを0にすることによって(レジスタ
1)+(レジスタ2)+(丸め加算値)を実行する。L
R1シフタ108で加算器107の出力の21の重みを持つビ
ットが1の時は右に1ビットシフトを行なう。一方、丸
め補正繰返し制御回路109では、加算器107の出力の2
-25の重みを持つビット以下の各ビットの論理和をとっ
た1ビット(S)を生成し、加算器107の出力の21と2-22
と2-23と2-24の重みを持つビットとSビットによっ
て、図3で示す補正信号が01の時はLR1シフタ108の
出力の2-23の重みを持つビットを反転してレジスタ110
に格納し、補正信号が00の時はLR1シフタ108の出力
をそのままレジスタ110に格納する。丸め補正繰返し制
御回路109の再丸め信号が1の時は丸め値の再加算を実
行する新しいステップの挿入を指示するが、再丸め信号
が0の時はこのステップによって、丸め精度に対応した
丸めを行なった演算が終了する。 ・指数差0、1以外の仮数減算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、2-25の重みを持つビットを1にして
他のビットを0にしたデータを生成する。補数器105は
マルチプレクサ104の出力を反転して加算器107の入力と
しこのとき、Cinを1にすることによって(レジスタ
1)−(レジスタ2)+(丸め加算値)を実行する。L
R1シフタ108で加算器107の出力の20の重みをもつビ
ットが0の時は左に1ビットシフトを行なう。一方、丸
め補正繰返し制御回路109では、加算器107の出力の2
-26の重みを持つビット以下の各ビットの論理和をとっ
た1ビット(S)を生成し、加算器107の出力の20と2-23
と2-24と2-25の重みを持つビットとSビットによっ
て、図5で示す補正信号が01の時はLR1シフタ108の
出力の2-23の重みをもつビットを反転してレジスタ110
に格納し、補正信号が00の時はLR1シフタ108の出力
をそのままレジスタ110に格納する。丸め補正繰返し制
御回路109の再丸め信号が1の時は丸め値の再加算を実
行する新しいステップの挿入を指示するが、再丸め信号
が0の時はこのステップによって、丸め精度に対応した
丸めを行った演算が終了する。 ・指数差0、1の仮数減算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、全ビットを0にしたデータを生成す
る。補数器105はマルチプレクサ104の出力を反転して加
算器107の入力としこのとき、Cinを1にすることによっ
て(レジスタ1)−(レジスタ2)を実行する。LR1
シフタ108で加算器107の出力の20の重みを持つビット
が0の時は左に1ビットシフトを行なう。丸め補正繰返
し制御回路109で、加算器107の出力の20と2-23と2
-24の重みを持つ3ビットがいずれも1の時は丸めのた
めのステップの挿入を指示する。一方、シフト数生成回
路111で、LR1シフタ108の出力を正規化するために必
要なシフト数を生成し、このシフト数が0でな場合に正
規化のためのステップの挿入を指示する。丸めのための
ステップの挿入と正規化のためのステップの挿入がどち
らも発生しない時はこのステップで演算を終了する。 (3)挿入ステップ(ステップの挿入が指示される時の
み) ・仮数加算時 レジスタ110の出力をマルチプレクサ103で選択し、マル
チプレクサ104で定数0を選択し、マルチプレクサ103の
出力とマルチプレクサ104をそのまま出力した補数器105
の出力とステップ1の丸め値生成回路106で生成した2
-24の重みを持つビットを1にして他のビットを0にし
たデータとを加算器107で加算し、LR1シフタ108で加
算器107の出力の21の重みを持つビットが1の時は右に
1ビットシフトを行なって、21の重みを持つビットが
0の時はそのままの値をレジスタ110に格納して処理を
終了する。 ・指数差0、1以外の仮数減算時 レジスタ110の出力をマルチプレクサ103で選択し、マル
チプレクサ104で定数0を選択し、マルチプレクサ103の
出力とマルチプレクサ104をそのまま出力した補数器105
の出力とステップ1の丸め値生成回路106で生成した2
-25の重みを持つビットを1にして他のビットを0にし
たデータとを加算器107で加算し、LR1シフタ108で加
算107の出力の21の重みを持つビットが1の時は右に1
ビットシフトを行なって、21の重みを持つビットが0
の時はそのままの値をレジスタ110に格納して処理を終
了する。 ・指数差0、1の仮数減算時 シフト数生成回路111で正規化のためのステップの挿入
を指示した場合は、バレルシフタ112がレジスタ110を入
力とし、シフト数生成回路111で生成したシフト数だけ
左にシフトを行なってレジスタ113に格納して処理を終
了する。
ためのステップの挿入を指示した場合は、レジスタ110
の出力をマルチプレクサ103で選択し、マルチプレクサ1
04で定数0を選択し、マルチプレクサ103の出力とマル
チプレクサ104をそのまま出力した補数器105の出力と丸
め値生成回路106で生成した2-23の重みを持つビットを
1にして他のビットを0にしたデータとを加算器107で
加算し、LR1シフタ108で加算器107の出力の21の重
みを持つビットが1の時は右に1ビットシフトを行なっ
て、21の重みを持つビットが0の時はそのままの値を
レジスタ110に格納して処理を終了する。
または差を倍精度で丸める時 (1)処理ステップ開始前 2つの浮動小数点データの指数と符号および命令が加算
であるか減算であるかに基づいて、仮数加算か仮数減算
かの演算の種類と演算結果の符号とを図26の符号演算関
係図に示すように決定する。被加減数および加減数のう
ち指数が小さくない方の仮数をレジスタ101に、被加減
数および加減数のうち指数が小さい方の仮数を小さくな
い方の指数に桁合わせしたものをレジスタ102に格納す
る。桁合わせ時の桁落ちしたビットは、最下位ビット
(L)の1桁下のビットで2-53の重みを持つ丸めビット
(R)と、2-54の重みを持つビット以下のビットの論理和
であるスティッキビット(S)として併せてレジスタ102に
格納する。 (2)ステップ1 ・仮数加算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、2-53の重みを持つビットを1にして
他のビットを0にしたデータを生成する。補数器105は
マルチプレクサ104出力をそのまま加算器107の入力と
し、このときCinを0にすることによって(レジスタ
1)+(レジスタ2)+(丸め加算値)を実行する。L
R1シフタ108で加算器107の出力の21の重みを持つビ
ットが1の時は右に1ビットシフトを行なう。一方、丸
め補正繰返し制御回路109では、加算器107の出力の2
-54の重みを持つビット以下の各ビットの論理和をとっ
た1ビット(S)を生成し、加算器107の出力の21と2-51
と2-52と2-53の重みを持つビットとSビットによっ
て、図6で示す補正信号が01の時はLR1シフタ108の
出力の2-52の重みを持つビットを反転してレジスタ110
に格納し、補正信号が00の時はLR1シフタ108の出力
をそのままレジスタ110に格納する。丸め補正繰返し制
御回路109の再丸め信号が1の時は丸め値の再加算を実
行する新しいステップの挿入を指示するが、再丸め信号
が0の時はこのステップによって、丸め精度に対応した
丸めを行なった演算が終了する。 ・指数差0、1以外の仮数減算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、2-54の重みを持つビットを1にして
他のビットを0にしたデータを生成する。補数器105は
マルチプレクサ104の出力を反転して加算器107の入力と
しこのとき、Cinを1にすることによって(レジスタ
1)−(レジスタ2)+(丸め加算値)を実行する。L
R1シフタ108で加算器107の出力の20の重みをもつビ
ットが0の時は左に1ビットシフトを行なう。一方、丸
め補正繰返し制御回路109では、加算器107の出力の2
-55の重みを持つビット以下の各ビットの論理和をとっ
た1ビット(S)を生成し、加算器107の出力の20と2-52
と2-53と2-54の重みを持つビットとSビットによっ
て、図6で示す補正信号が01の時はLR1シフタ108の
出力の2-52の重みをもつビットを反転してレジスタ110
に格納し、補正信号が00の時はLR1シフタ108の出力
をそのままレジスタ110に格納する。丸め補正繰返し制
御回路109の再丸め信号が1の時は丸め値の再加算を実
行する新しいステップの挿入を指示するが、再丸め信号
が0の時はこのステップによって、丸め精度に対応した
丸めを行った演算が終了する。 ・指数差0、1の仮数減算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、全ビットを0にしたデータを生成す
る。補数器105はマルチプレクサ104の出力を反転して加
算器107の入力としこのとき、Cinを1にすることによっ
て(レジスタ1)−(レジスタ2)を実行する。LR1
シフタ108で加算器107の出力の20の重みを持つビット
が0の時は左に1ビットシフトを行なう。丸め補正繰返
し制御回路109で、加算器107の出力の20と2-52と2
-53の重みを持つ3ビットがいずれも1の時は丸めのた
めのステップの挿入を指示する。一方、シフト数生成回
路111で、LR1シフタ108の出力を正規化するために必
要なシフト数を生成し、このシフト数が0でない場合に
正規化のためのステップの挿入を指示する。丸めのため
のステップの挿入と正規化のためのステップの挿入がど
ちらも発生しない時はこのステップで演算を終了する。 (3)挿入ステップ(ステップの挿入が指示される時の
み) ・仮数加算時 レジスタ110の出力をマルチプレクサ103で選択し、マル
チプレクサ104で定数0を選択し、マルチプレクサ103の
出力とマルチプレクサ104をそのまま出力した補数器105
の出力とステップ1の丸め値生成回路106で生成した2
-53の重みを持つビットを1にして他のビットを0にし
たデータとを加算器107で加算し、LR1シフタ108で加
算器107の出力の21の重みを持つビットが1の時は右に
1ビットシフトを行なって、21の重みを持つビットが
0の時はそのままの値をレジスタ110に格納して処理を
終了する。 ・指数差0、1以外の仮数減算時 レジスタ110の出力をマルチプレクサ103で選択し、マル
チプレクサ104で定数0を選択し、マルチプレクサ103の
出力とマルチプレクサ104をそのまま出力した補数器105
の出力とステップ1の丸め値生成回路106で生成した2
-54の重みを持つビットを1にして他のビットを0にし
たデータとを加算器107で加算し、LR1シフタ108で加
算器107の出力の21の重みを持つビットが1の時は右に
1ビットシフトを行なって、21の重みを持つビットが
0の時はそのままの値をレジスタ110に格納して処理を
終了する。 ・指数差0、1の仮数減算時 シフト数生成回路111で正規化のためのステップの挿入
を指示した場合は、バレルシフタ112がレジスタ110を入
力とし、シフト数生成回路111で生成したシフト数だけ
左にシフトを行なってレジスタ113に格納して処理を終
了する。
ためのステップの挿入を指示した場合は、レジスタ110
の出力をマルチプレクサ103で選択し、マルチプレクサ1
04で定数0を選択し、マルチプレクサ103の出力とマル
チプレクサ104をそのまま出力した補数器105の出力と丸
め値生成回路106で生成した2-52の重みを持つビットを
1にして他のビットを0にしたデータとを加算器107で
加算し、LR1シフタ108で加算器107の出力の21の重
みを持つビットが1の時は右に1ビットシフトを行なっ
て、21の重みを持つビットが0の時はそのままの値を
レジスタ110に格納して処理を終了する。
ード 2−1被加減数および加減数が単精度で和または差を単
精度で丸める時 (1)処理ステップ開始前 2つの浮動小数点データの指数と符号および命令が加算
であるか減算であるかに基づいて、仮数加算か仮数減算
かの演算の種類と演算結果の符号とを図26の符号演算関
係図に示すように決定する。正方向丸めモードで演算結
果の符号が負の時または負方向丸めモードで演算結果の
符号が正の時は、後述の零方向丸めモードの動作に従
い、正方向丸めモードで演算結果の符号が正の時または
負方向丸めモードで演算結果の符号が負の時は、以下の
ように動作する。被加減数および加減数のうち指数が小
さくない方の仮数をレジスタ101に、被加減数および加
減数のうち指数が小さい方の仮数を小さくない方の指数
に桁合わせしたものをレジスタ102に格納する。桁合わ
せ時の桁落ちしたビットは、最下位ビット(L)の1桁下
のビットで2-24の重みを持つ丸めビット(R)と、2-25
の重みを持つビット以下のビットの論理和であるスティ
ッキビット(S)として併せてレジスタ102に格納する。 (2)ステップ1 ・仮数加算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、2-24の重みを持つビットを1にして
他のビットを0にしたデータを生成する。補数器105は
マルチプレクサ104出力をそのまま加算器107の入力と
し、このときCinを0にすることによって(レジスタ
1)+(レジスタ2)+(丸め加算値)を実行する。L
R1シフタ108で加算器107の出力の21の重みを持つビ
ットが1の時は右に1ビットシフトを行なう。一方、丸
め補正繰返し制御回路109では、加算器107の出力の2
-25の重みを持つビット以下の各ビットの論理和をとっ
た1ビット(S)を生成し、加算器107の出力の21と2-22
と2-23と2-24の重みを持つビットとSビットによっ
て、図7で示す補正信号が01の時はLR1シフタ108の
出力の2-23の重みを持つビットを反転してレジスタ110
に格納し、補正信号が10の時はLR1シフタ108の出力
の2-22と2-23の重みを持つビットを反転してレジスタ
110に格納し、補正信号が00の時はLR1シフタ108の出
力をそのままレジスタ110に格納する。丸め補正繰返し
制御回路109の再丸め信号が1の時は丸め値の再加算を
実行する新しいステップの挿入を指示するが、再丸め信
号が0の時はこのステップによって、丸め精度に対応し
た丸めを行なった演算が終了する。 ・指数差0、1以外の仮数減算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、2-25の重みを持つビットを1にして
他のビットを0にしたデータを生成する。補数器105は
マルチプレクサ104の出力を反転して加算器107の入力と
しこのとき、Cinを1にすることによって(レジスタ
1)−(レジスタ2)+(丸め加算値)を実行する。L
R1シフタ108で加算器107の出力の20の重みをもつビ
ットが0の時は左に1ビットシフトを行なう。一方、丸
め補正繰返し制御回路109では、加算器107の出力の2
-26の重みを持つビット以下の各ビットの論理和をとっ
た1ビット(S)を生成し、加算器107の出力の20と2-23
と2-24と2-25の重みを持つビットとSビットによっ
て、図9で示す補正信号が01の時はLR1シフタ108の
出力の2-23の重みをもつビットを反転してレジスタ110
に格納し、補正信号が10の時はLR1シフタ108の出力
の2-22と2-23の重みを持つビットを反転してレジスタ
110に格納し、補正信号が00の時はLR1シフタ108の出
力をそのままレジスタ110に格納する。丸め補正繰返し
制御回路109の再丸め信号が1の時は丸め値の再加算を
実行する新しいステップの挿入を指示するが、再丸め信
号が0の時はこのステップによって、丸め精度に対応し
た丸めを行った演算が終了する。 ・指数差0、1の仮数減算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、全ビットを0にしたデータを生成す
る。補数器105はマルチプレクサ104の出力を反転して加
算器107の入力としこのとき、Cinを1にすることによっ
て(レジスタ1)−(レジスタ2)を実行する。LR1
シフタ108で加算器107の出力の20の重みを持つビット
が0の時は左に1ビットシフトを行なう。丸め補正繰返
し制御回路109で、加算器107の出力の20と2-24の重み
を持つ2ビットがいずれも1の時は丸めのためのステッ
プの挿入を指示する。一方、シフト数生成回路111で、
LR1シフタ108の出力を正規化するために必要なシフ
ト数を生成し、このシフト数が0でな場合に正規化のた
めのステップの挿入を指示する。丸めのためのステップ
の挿入と正規化のためのステップの挿入がどちらも発生
しない時はこのステップで演算を終了する。 (3)挿入ステップ(ステップの挿入が指示される時の
み) ・仮数加算時 レジスタ110の出力をマルチプレクサ103で選択し、マル
チプレクサ104で定数0を選択し、マルチプレクサ103の
出力とマルチプレクサ104をそのまま出力した補数器105
の出力とステップ1の丸め値生成回路106で生成した2
-24の重みを持つビットを1にして他のビットを0にし
たデータとを加算器107で加算し、LR1シフタ108で加
算器107の出力の21の重みを持つビットが1の時は右に
1ビットシフトを行なって、21の重みを持つビットが
0の時はそのままの値をレジスタ110に格納して処理を
終了する。 ・指数差0、1以外の仮数減算時 レジスタ110の出力をマルチプレクサ103で選択し、マル
チプレクサ104で定数0を選択し、マルチプレクサ103の
出力とマルチプレクサ104をそのまま出力した補数器105
の出力とステップ1の丸め値生成回路106で生成した2
-25の重みを持つビットを1にして他のビットを0にし
たデータとを加算器107で加算し、LR1シフタ108で加
算107の出力の21の重みを持つビットが1の時は右に1
ビットシフトを行なって、21の重みを持つビットが0
の時はそのままの値をレジスタ110に格納して処理を終
了する。 ・指数差0、1の仮数減算時 シフト数生成回路111で正規化のためのステップの挿入
を指示した場合は、バレルシフタ112がレジスタ110を入
力とし、シフト数生成回路111で生成したシフト数だけ
左にシフトを行なってレジスタ113に格納して処理を終
了する。
ためのステップの挿入を指示した場合は、レジスタ110
の出力をマルチプレクサ103で選択し、マルチプレクサ1
04で定数0を選択し、マルチプレクサ103の出力とマル
チプレクサ104をそのまま出力した補数器105の出力と丸
め値生成回路106で生成した2-23の重みを持つビットを
1にして他のビットを0にしたデータとを加算器107で
加算し、LR1シフタ108で加算器107の出力の21の重
みを持つビットが1の時は右に1ビットシフトを行なっ
て、21の重みを持つビットが0の時はそのままの値を
レジスタ110に格納して処理を終了する。
または差を倍精度で丸める時 (1)処理ステップ開始前 2つの浮動小数点データの指数と符号および命令が加算
であるか減算であるかに基づいて、仮数加算か仮数減算
かの演算の種類と演算結果の符号とを図26の符号演算関
係図に示すように決定する。正方向丸めモードで演算結
果の符号が負の時または負方向丸めモードで演算結果の
符号が正の時は、後述の零方向丸めモードの動作に従
い、正方向丸めモードで演算結果の符号が正の時または
負方向丸めモードで演算結果の符号が負の時は、以下の
ように動作する。被加減数および加減数のうち指数が小
さくない方の仮数をレジスタ101に、被加減数および加
減数のうち指数が小さい方の仮数を小さくない方の指数
に桁合わせしたものをレジスタ102に格納する。桁合わ
せ時の桁落ちしたビットは、最下位ビット(L)の1桁下
のビットで2-53の重みを持つ丸めビット(R)と、2-54
の重みを持つビット以下のビットの論理和であるスティ
ッキビット(S)として併せてレジスタ102に格納する。 (2)ステップ1 ・仮数加算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、2-53の重みを持つビットを1にして
他のビットを0にしたデータを生成する。補数器105は
マルチプレクサ104出力をそのまま加算器107の入力と
し、このときCinを0にすることによって(レジスタ
1)+(レジスタ2)+(丸め加算値)を実行する。L
R1シフタ108で加算器107の出力の21の重みを持つビ
ットが1の時は右に1ビットシフトを行なう。一方、丸
め補正繰返し制御回路109では、加算器107の出力の2
-54の重みを持つビット以下の各ビットの論理和をとっ
た1ビット(S)を生成し、加算器107の出力の21と2-51
と2-52と2-53の重みを持つビットとSビットによっ
て、図8で示す補正信号が00の時はLR1シフタ108の
出力の2-52の重みを持つビットを反転してレジスタ110
に格納し、補正信号が01の時はLR1シフタ108の出力
の2-51と2-52の重みを持つビットを反転してレジスタ
110に格納し、補正信号が01の時はLR1シフタ108の出
力をそのままレジスタ110に格納する。丸め補正繰返し
制御回路109の再丸め信号が1の時は丸め値の再加算を
実行する新しいステップの挿入を指示するが、再丸め信
号が0の時はこのステップによって、丸め精度に対応し
た丸めを行なった演算が終了する。 ・指数差0、1以外の仮数減算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、2-54の重みを持つビットを1にして
他のビットを0にしたデータを生成する。補数器105は
マルチプレクサ104の出力を反転して加算器107の入力と
しこのとき、Cinを1にすることによって(レジスタ
1)−(レジスタ2)+(丸め加算値)を実行する。L
R1シフタ108で加算器107の出力の20の重みをもつビ
ットが0の時は左に1ビットシフトを行なう。一方、丸
め補正繰返し制御回路109では、加算器107の出力の2
-55の重みを持つビット以下の各ビットの論理和をとっ
た1ビット(S)を生成し、加算器107の出力の20と2-52
と2-53と2-54の重みを持つビットとSビットによっ
て、図10で示す補正信号が01の時はLR1シフタ108の
出力の2-52の重みをもつビットを反転してレジスタ110
に格納し、補正信号が01の時はLR1シフタ108の出力
の2-51と2-52の重みを持つビットを反転してレジスタ
110に格納し、補正信号が00の時はLR1シフタ108の出
力をそのままレジスタ110に格納する。丸め補正繰返し
制御回路109の再丸め信号が1の時は丸め値の再加算を
実行する新しいステップの挿入を指示するが、再丸め信
号が0の時はこのステップによって、丸め精度に対応し
た丸めを行った演算が終了する。 ・指数差0、1の仮数減算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、全ビットを0にしたデータを生成す
る。補数器105はマルチプレクサ104の出力を反転して加
算器107の入力としこのとき、Cinを1にすることによっ
て(レジスタ1)−(レジスタ2)を実行する。LR1
シフタ108で加算器107の出力の20の重みを持つビット
が0の時は左に1ビットシフトを行なう。丸め補正繰返
し制御回路109で、加算器107の出力の20 と2 -53 の重み
を持つ2ビットがいずれも1の時は丸めのためのステッ
プの挿入を指示する。一方、シフト数生成回路111で、
LR1シフタ108の出力を正規化するために必要なシフ
ト数を生成し、このシフト数が0でない場合に正規化の
ためのステップの挿入を指示する。丸めのためのステッ
プの挿入と正規化のためのステップの挿入がどちらも発
生しない時はこのステップで演算を終了する。 (3)挿入ステップ(ステップの挿入が指示される時の
み) ・仮数加算時 レジスタ110の出力をマルチプレクサ103で選択し、マル
チプレクサ104で定数0を選択し、マルチプレクサ103の
出力とマルチプレクサ104をそのまま出力した補数器105
の出力とステップ1の丸め値生成回路106で生成した2
-53の重みを持つビットを1にして他のビットを0にし
たデータとを加算器107で加算し、LR1シフタ108で加
算器107の出力の21の重みを持つビットが1の時は右に
1ビットシフトを行なって、21の重みを持つビットが
0の時はそのままの値をレジスタ110に格納して処理を
終了する。 ・指数差0、1以外の仮数減算時 レジスタ110の出力をマルチプレクサ103で選択し、マル
チプレクサ104で定数0を選択し、マルチプレクサ103の
出力とマルチプレクサ104をそのまま出力した補数器105
の出力とステップ1の丸め値生成回路106で生成した2
-54の重みを持つビットを1にして他のビットを0にし
たデータとを加算器107で加算し、LR1シフタ108で加
算器107の出力の21の重みを持つビットが1の時は右に
1ビットシフトを行なって、21の重みを持つビットが
0の時はそのままの値をレジスタ110に格納して処理を
終了する。 ・指数差0、1の仮数減算時 シフト数生成回路111で正規化のためのステップの挿入
を指示した場合は、バレルシフタ112がレジスタ110を入
力とし、シフト数生成回路111で生成したシフト数だけ
左にシフトを行なってレジスタ113に格納して処理を終
了する。
ためのステップの挿入を指示した場合は、レジスタ110
の出力をマルチプレクサ103で選択し、マルチプレクサ1
04で定数0を選択し、マルチプレクサ103の出力とマルチ
プレクサ104をそのまま出力した補数器105の出力と丸め
値生成回路106で生成した2-52の重みを持つビットを1
にして他のビットを0にしたデータとを加算器107で加
算し、LR1シフタ108で加算器107の出力の21の重み
を持つビットが1の時は右に1ビットシフトを行なっ
て、21の重みを持つビットが0の時はそのままの値を
レジスタ110に格納して処理を終了する。 3 零方向丸めモード (被加減数および加減数が単精度で和または差を単精度
で丸める時と被加減数および加減数が倍精度で和または
差を倍精度で丸める時で以下の処理は共通) (1)処理ステップ開始前 2つの浮動小数点データの指数と符号および命令が加算
であるか減算であるかに基づいて、仮数加算か仮数減算
かの演算の種類と演算結果の符号とを図26の符号演算関
係図に示すように決定する。被加減数および加減数のう
ち指数が小さくない方の仮数をレジスタ101に、被加減
数および加減数のうち指数が小さい方の仮数を小さくな
い方の指数に桁合わせしたものをレジスタ102に格納す
る。 (2)ステップ1 ・仮数加算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、全ビットを0にしたデータを生成す
る。補数器105はマルチプレクサ104出力をそのまま加算
器107の入力とし、このときCinを0にすることによっ
て、(レジスタ1)+(レジスタ2)を実行する。LR
1シフタ108で加算器107の出力の21の重みを持つビッ
トが1の時は右に1ビットシフトを行ない演算を終了す
る。 ・指数差0、1以外の仮数減算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、全ビットを0にしたデータを生成す
る。補数器105はマルチプレクサ104の出力を反転して加
算器107の入力としこのとき、Cinを1にすることによっ
て(レジスタ1)−(レジスタ2)を実行する。LR1
シフタ108で加算器107の出力の20の重みをもつビット
が0の時は左に1ビットシフトを行ない演算を終了す
る。 ・指数差0、1の仮数減算時 マルチプレクサ103でレジスタ101の出力を選択し、マル
チプレクサ104でレジスタ102の出力を選択する。丸め値
生成回路106では、全ビットを0にしたデータを生成す
る。補数器105はマルチプレクサ104の出力を反転して加
算器107の入力としこのとき、Cinを1にすることによっ
て(レジスタ1)−(レジスタ2)を実行する。LR1
シフタ108で加算器107の出力の20の重みを持つビット
が0の時は左に1ビットシフトを行なう。シフト数生成
回路111で、LR1シフタ108の出力を正規化するために
必要なシフト数を生成し、このシフト数が0でない場合
に正規化のためのステップの挿入を指示する。正規化の
ためのステップの挿入が発生しない時はこのステップで
演算を終了する。 (3)挿入ステップ(ステップの挿入が指示される時の
み) ・指数差0、1の仮数減算時のみ バレルシフタ112がレジスタ110を入力とし、シフト数生
成回路111で生成したシフト数だけ左にシフトを行なっ
てレジスタ113に格納して処理を終了する。
時または指数差0、1以外の仮数減算時は、2つの浮動
小数点データの仮数と丸め加算値の三者の和もしくは前
二者の差と後者との和を加算器107で同時に行ない、そ
の結果をLRシフタ108で正規化することによりほとん
どの場合、処理を終了することができる。さらに丸め補
正繰返し制御回路109の指示によりLRシフタ108の出力
の補正が必要な場合でも処理ステップ数を増加させるこ
となく終了することができ、加算器107での丸め加算値
の加算を再度必要とする時だけ処理を1ステップだけ挿
入することで終了できる。1ステップの挿入が必要な確
率は最近偶丸めモードの時は32分の2、正方向丸めモー
ドまたは負方向丸めモードの時は32分3、零方向丸めモ
ードの時は0と極めて小さい(仮数のビットパタンが均
一に分布すると仮定した場合)。その結果、ほとんどの
場合(最近偶丸めモードの時は32分の30、正方向丸めモ
ードまたは負方向丸めモードの時は32分の29、零方向丸
めモードの時は1)、加減算に必要な処理ステップ数は
2と小さくなる。これらの処理フローを図23(b)に示
す。また、単一の加算器107で仮数の加減算と丸め加算
値の加算とを実行しているため、必要なハードウェアが
従来の浮動小数点データの加減算装置に比べて少ない。
モードまたは負方向丸めモードの時に、単精度丸めで仮
数加算、単精度丸めで指数差0または1の仮数減算、倍
精度丸めで仮数加算、倍精度丸めで指数差0または1の
仮数減算のそれぞれの場合に応じて、丸め値生成回路10
6で、2-24、2-25、2-53、2-54の重みを持つビット
を1にして他のビットを0にしたデータを生成し、丸め
補正繰返し制御回路109により図7、図8、図9、図10
の制御関係図に示す補正信号が01の時はLR1シフタ10
8の出力の2-23、2-23、2-52、2-52の重みを持つビ
ットを、補正信号が10の時は2-22と2-23、2-22と2
-23、2-51と2-52、2-51と2-52の重みを持つビット
を反転してレジスタ110に格納し、丸め補正繰返し制御
回路109の再丸め信号が1の時は丸め値生成回路106の生
成する丸め加算値を再び加算する新しいステップの挿入
を指示しているが、丸め値生成回路106で2-23、
2-24、2- 52、2-51の重みを持つビットを1にして他
のビットを0にしたデータを生成し、丸め補正繰返し制
御回路109により図11、図12、図13、図14の制御関係図
に示す補正信号が01の時はLR1シフタ108の出力の2
-23、2-23、2-52、2-52の重みを持つビットを、補正
信号が10の時は2-22と2-23、2-22と2-23-、2-51と
2-52の重みを持つビットを反転してレジスタ110に格納
し、丸め補正繰返し制御回路109の再丸め信号が1で補
正信号が00の時は丸め値生成回路106の生成する丸め加
算値を再び加算する新しいステップの挿入を、再丸め信
号が1で補正信号が11の時は丸め値生成回路106の生成
する丸め加算値をレジスタ110に保持する値から減算す
る新しいステップの挿入を指示するようにしてもよい。
こうすることによって1ステップの挿入が必要な確率が
32分の2と低減され、その結果、演算速度が向上する。
モードまたは負方向丸めモードの時に、単精度丸めで仮
数加算、単精度丸めで指数差0または1の仮数減算、倍
精度丸めで仮数加算、倍精度丸めで指数差0または1の
仮数減算のそれぞれの場合に応じて、丸め値生成回路10
6で2-24、2-25、2-53、2-54の重みを持つビットを
1にして他のビットを0にしたデータを生成し、丸め補
正繰返し制御回路109により図7、図8、図9、図10の
制御関係図に示す補正信号および再丸め信号によってビ
ットの補正または丸め加算値の再加算のステップの挿入
を指示しているが、丸め値生成回路106で2-24とそれ以
下の全て、2-25とそれ以下の全て、2- 53とそれ以下の
全て、2-54とそれ以下の全ての重みを持つビットを1
にして他のビットを0にしたデータを生成し、丸め補正
繰返し制御回路109により図15、図16、図17、図18の制
御関係図に示す補正信号および再丸め信号によってビッ
トの補正または丸め加算値の再加算のステップの挿入を
指示するようにしてもよい。こうすることによっても1
ステップの挿入が必要な確率が32分の2と低減され、そ
の結果、演算速度が向上する。これは、丸めモードが正
方向丸めモードまたは負方向丸めモードでは、丸めビッ
ト(R)、スティッキビット(S)のどちらかが1の時に、最
下位ビット(L)へ丸めのための1の加算が必要となるこ
とに注目して、丸めビットとそれ以下の全てのビットの
ビット位置を1にしたデータを加算することによって生
じた桁上げを利用して、最下位ビットへの丸め加算を行
なうことができることを利用している。丸めビットとス
ティッキビットがともに0で丸め加算を発生しない場合
を図28(c)に、それ以外で丸めのための1の加算を発生
する場合を図28(d)、(e)、(f)に示す。
の精度と丸め精度とがともに単精度または倍精度を例に
挙げたが、被加減数および加減数の精度と丸め精度とが
異なる場合でも、丸め値生成回路106で生成する丸め加
算値を丸め精度に対応した丸めビットとし、加算器107
の入力ビット数を扱うデータの最大ビット数に合わせる
ことによって、被加減数および加減数の精度に依存する
ことなく丸め精度に応じた丸めが実現できる。
算、単精度丸めで指数差0または1の仮数減算、倍精度
丸めで仮数加算、倍精度丸めで指数差0または1の仮数
減算のそれぞれの場合に応じて、丸め補正繰返し制御回
路109が加算器107の出力の2 1と2-22と2-23と2-24、
20と2-23と2-24と2-25、21と2-51と2-52と
2- 53、20と2-52と2-53と2-54の重みを持つビット
とSビットとを検査して2-22および2-23、2-22および
2-23、2-51および2-52、2-51および2-52の重みを
持つビットの補正を指示しているが、検査するビットと
補正するビットとを最上位ビット方向に増加させてもよ
い。検査するビットと補正するビットの1ビットの増加
ごとに1ステップの挿入が必要な確率が半減され、その
結果、演算速度が向上する。
小数点データの加減算装置のブロック図を示すものであ
る。図2において、図1と同一の構成要素については同
一の番号を付している。同図において、114は単精度で
は2-24の重みを持つビットをキャリ入力(Cin)として、
倍精度では2-53の重みを持つビットをキャリ入力(Cin)
とする2入力の加算器、115は加算器114のキャリ入力(C
in)を決定するキャリ制御装置である。図19、図20、図2
1、図22はキャリ制御装置115の制御関係図で、仮数加算
を実行しかつ丸め精度が単精度の時は図19に、仮数加算
を実行しかつ丸め精度が倍精度の時は図20に、仮数減算
を実行しかつ丸め精度が単精度の時は図21に、仮数減算
を実行しかつ丸め精度が倍精度の時は図22に示すキャリ
入力(Cin)を加算器114に与える。
数点データの加減算装置について、以下その動作を説明
する。本実施例は、図1に示す第1の実施例において3
入力の加算器107により2つの浮動小数点データの仮数
の加減算と丸め値生成回路106が生成する丸め加算値の
加算とを行なうかわりに、2入力の加算器114のキャリ
入力(Cin)をキャリ制御装置115で操作して仮数の加減算
と丸め加算値の加算とを行なうものである。以下では仮
数の加減算と丸め加算値の加算の動作のみを説明する
が、その他の動作については第1の実施例と同一であ
る。 ・仮数加算時 最近偶丸めモードの時または正方向丸めモードで演算結
果の符号が正の時または負方向丸めモードで演算結果の
符号が負の時は、丸め精度が単精度か倍精度かに応じ
て、2-24、2-53を丸め加算値として加算するために、
図19、図20のRN,RP(+),RM(-)の欄に示すようにキャリ入
力(Cin)を入力データとは無関係に1にする。
時または負方向丸めモードで演算結果の符号が正の時ま
たは零方向丸めモードの時は、丸め加算値を加算する必
要がないために、図19、図20のRP(-),RM(+),RZの欄に示
すようにキャリ(Cin)を入力データとは無関係に0にす
る。 ・指数差0、1以外の仮数減算時 最近偶丸めモードの時または正方向丸めモードで演算結
果の符号が正の時または負方向丸めモードで演算結果の
符号が負の時は、丸め精度が単精度か倍精度かに応じ
て、2-25、2-54を丸め加算値として加算し、スティッ
キビット(S)の位置に2の補数化のための1を加算する
必要がある。これらの加算は加算されるデータ(桁合わ
せされて1の補数をとられたもの)の2-25桁およびス
ティッキビット(S)、2-54の桁およびスティッキビット
(S)の少なくとも一方が1の時は2- 24、2-53へのキャ
リ入力(Cin)を1にし、加算されるデータの2-25の桁お
よびスティッキビット(S)、2-54の桁およびスティッキ
ビット(S)の両方が0の時は2-24、2-53へのキャリ入
力(Cin)を0とすることで実現できる。従って、図21、
図22のRN,RP(+),RM(-)の欄に示すような入力データに依
存したキャリ入力(Cin)を生成する。
時または負方向丸めモードで演算結果の符号が正の時ま
たは零方向丸めモードの時は、丸め精度が単精度か倍精
度かに応じて、スティッキビット(S)の位置に2の補数
化のための1を加算する必要がある。これらの加算は加
算されるデータ(桁合わせされて1の補数をとられたも
の)の2-25の桁およびスティッキビット(S)、2-54の
桁およびスティッキビット(S)の少なくとも一方が0の
時は2-24、2-53へのキャリ入力(Cin)を0にし、加算
されるデータの2-25の桁およびスティッキビット(S)、
2-54の桁およびスティッキビット(S)の両方が1の時は
2-24、2-53へのキャリ入力(Cin)を1とすることで実
現できる。従って、図21、図22のRP(-),RM(+),RZの欄に
示すような入力データに依存したキャリ入力(Cin)を生
成する。 ・指数差0、1の仮数減算時 丸めは仮数の減算とは同時に実行しない。ただし、丸め
精度が単精度か倍精度かに応じて、スティッキビット
(S)の位置に2の補数化のための1を加算する必要があ
る。これらの加算は加算されるデータ(桁合わせされて
1の補数をとられたもの)の2-25の桁およびスティッ
キビット(S)、2-54の桁およびスティッキビット(S)の
少なくとも一方が0の時は2-24、2-53へのキャリ入力
(Cin)を0にし、加算されるデータの2-25の桁およびス
ティッキビット(S)、2-54の桁およびスティッキビット
(S)の両方が1の時は2-24、2-53へのキャリ入力(Cin)
を1とすることで実現できる。従って、図21、図22のRP
(-),RM(+),RZの欄に示すような入力データに依存したキ
ャリ入力(Cin)を生成する。
て行なう丸めは、丸め精度が単精度か倍精度かに応じ
て、2-24、2-53を丸め加算値として加算するためにキ
ャリ入力(Cin)を1にして実現する。
算時または指数差0、1以外の仮数減算時は、2つの浮
動小数点データの仮数と丸め加算値の三者の和もしくは
前二者の差と後者の和を加算器114で同時に行なう結
果、ほとんどの場合(最近偶丸めモードの時は32分の3
0、正方向丸めモードまたは負方向丸めモードの時は32
分の29、零方向丸めモードの時は1)、加減算に必要な
処理ステップ数は2と小さくなる。また、単一の加算器
114で仮数の加減算と丸め加算値の加算とを実行してい
るため、必要なハードウェアが従来の浮動小数点データ
の加減算装置に比べて少なく、加算器114は2入力で構
成されるため第1の実施例よりもさらにハードウェアが
少なくなる。
小数点データの乗算装置のブロック図を示すものであ
る。図30において、201は被乗数を保持する被乗数レジ
スタで、1ビットの符号部201sと11ビットの指数部201e
と53ビットの仮数部201fからなる。202は乗数を保持す
る乗数レジスタで、1ビットの符号部202sと11ビットの
指数部202eと53ビットの仮数部202fからなる。被乗数レ
ジスタ仮数部201fと乗数レジスタ仮数部202fの最上位ビ
ットはいずれも20の重みを持ついわゆる「隠れビッ
ト」で正規化数の時は1であり、このビットを除いて被
乗数レジスタ201および乗数レジスタ202はともに倍精度
に合致している。203は被乗数レジスタ符号部201sと乗
数レジスタ符号部202sから被乗数および乗数の符号を読
出して積の符号を生成する符号生成回路、204は被乗数
レジスタ指数部201eと乗数レジスタ指数部202eから被乗
数および乗数の指数を読出して積の指数を算出する11ビ
ットの指数加算器で、Cinを1ビットのキャリ入力とし
てA入力とB入力の加算を行う。205、206はそれぞれ指
数加算器204の2つの入力を選択する11ビットのセレク
タ、207は指数加算器204の出力の最上位ビットを反転す
る最上位ビット補正回路、208は指数加算器204における
加算時の最上位ビットからの桁あふれを保持する1ビッ
トのラッチ、209は指数加算器204の出力とラッチ208の
値により指定した演算精度からの積の上位あふれ(オー
バフロー)と下位あふれ(アンダフロー)を検出する例
外検出回路、210は最上位ビット補正回路207によって最
上位ビットが反転された指数加算器204の出力を保持し
てセレクタ205を通して再び指数加算器204に入力するた
めの11ビットのラッチ、211は積の仮数の1ビットシフ
トの正規化に伴って指数を1だけ増分させるための定数
を生成する正規化補正値生成回路、212は被乗数レジス
タ仮数部201fを読出してその上位27ビットもしくは下位
27ビット(この時の最上位ビットは0とする)を選択し
て出力する被乗数上位下位選択回路、213は乗数レジス
タ仮数部202fを読出してその上位27ビットもしくは下位
27ビット(この時の最上位ビットは0とする)を選択し
て出力する乗数上位下位選択回路、214は27ビットの被
乗数上位下位選択回路212の出力と27ビットの乗数上位
下位選択回路213の出力を乗算してそれぞれ54ビットの
和(サム)と桁上げ(キャリ)を出力する乗算器、21
5、216はそれぞれ乗算器214の和出力と桁上げ出力を保
持する54ビットのラッチ、217は積の仮数を単精度また
は倍精度に丸めるために加算を行う時の定数を生成する
丸め加算値生成回路、218はラッチ216の値と丸め加算値
生成回路217の出力とを選択する54ビットのセレクタ、2
19は丸め加算値生成回路217の出力と後述するラッチ225
に保持されている値とを選択する54ビットのセレクタ、
220はラッチ215に保持されている値とセレクタ218の出
力とセレクタ219の出力とを加算する54ビットの仮数加
算器、221は仮数加算器220の出力を最下位ビット方向に
0ビットまたは1ビットまたは26ビットシフトする54ビ
ットのシフタ、222は仮数加算器220の出力の最上位ビッ
トから26ビット目から47からビット目までの22ビットと
シフタ221における26ビットの最下位ビットからのシフ
トあふれとを入力して丸め精度が単精度か倍精度かに応
じてスティッキビットを生成するスティッキビット生成
回路、223は丸め精度が単精度のときはシフタ221の出力
の最上位ビットから24ビット目を丸め精度が倍精度のと
きは53ビット目を必要に応じて反転して出力する仮数補
正回路、224は仮数加算器220の出力の最上位ビットから
23ビット目から25ビット目までと最下位ビットから3ビ
ット目から最下位ビットまでの合計6ビットと仮数加算
器220における加算時の最上位ビットからの桁あふれの
1ビットとスティッキビット生成回路222が出力するス
ティッキビット1ビットとを入力して丸め精度が単精度
か倍精度かに応じて仮数補正回路223で行うビットの反
転と仮数加算器220における丸め加算値の加算とを制御
する仮数補正制御回路、225はシフタ221の出力を保持す
る54ビットのラッチ、226は積を保持する積レジスタ
で、1ビットの符号部226sと11ビットの指数部226eと53
ビットの仮数部226fからなる。積レジスタ仮数部226fの
最上位ビットも20の重みを持ついわゆる「隠れビッ
ト」で正規化数の時は1であり、このビットを除いて積
レジスタ226は倍精度に合致している。図31は図30に示
す被乗数上位下位選択回路212および乗数上位下位選択
回路213の内部ブロック図で、227は53ビットの入力の上
位27ビットまたは下位26ビットに最上位に0を拡張して
27ビットとしたものを選択するセレクタである。図32は
図30に示す丸め加算値生成回路217が生成する定数を示
す動作説明図で、最上位ビットから25ビット目だけが1
で他が0の丸め加算値Aと最上位ビットから2ビット目
だけが1で他が0の丸め加算値Bと最下位ビットだけが
1で他が0の丸め加算値Cを生成する。図33、図34は図
30に示す仮数補正制御回路224の制御関係図で、丸め精
度が単精度のときは図33に示すように、仮数加算器220
の出力の最上位ビットから23ビット目から25ビット目(Z
22,Z23,Z24)とスティッキビット生成回路222が出力する
スティッキビット(S)と仮数加算器220における桁あふれ
(Cout)とから仮数のビット反転の要否と丸め加算値の再
加算の要否とを決定する。また丸め精度が倍精度のとき
は図34に示すように、仮数加算器220の出力の最下位ビ
ットから3ビット目から最下位ビット(Z51,Z52,Z53)と
スティッキビット生成回路222が出力するスティッキビ
ット(S)と仮数加算器220における桁あふれ(Cout)とから
仮数のビット反転の要否と丸め加算値の再加算の要否と
を決定する。
数点データの乗算装置について、以下その動作を説明す
る。ここでは丸めモードが最近偶丸めモードを例に挙げ
る。
単精度で丸める場合を図35に示す単精度乗算の動作フロ
ー図と図36に示す単精度乗算における加算およびシフト
の態様図を用いて説明する。図35は指数加算器204、例
外検出回路209、乗算器214、仮数加算器220、シフタ22
1、仮数補正回路223の処理ステップ毎の動作の内容を示
したもので、図36はその内、仮数加算器220とシフタ221
における詳細な動作の態様を示したものである。 (1)処理ステップ開始前 単精度の被乗数および乗数を倍精度に拡張してそれぞれ
被乗数レジスタ201と乗数レジスタ202に格納する。この
とき被乗数レジスタ指数部201eと乗数レジスタ指数部20
2eはともに倍精度のバイアス表現(真の指数値=指数部
の値−1023(10))に変換され、被乗数レジスタ仮数部20
1fと乗数レジスタ仮数部202fの下位29ビットには0が埋
められる。 (2)ステップ1 セレクタ205により被乗数レジスタ指数部201eに保持さ
れた被乗数の指数を指数加算器204のA入力に入力し、
セレクタ206により乗数レジスタ指数部202eに保持され
た乗数の指数を指数加算器204のB入力に入力するとと
もにキャリ入力Cinを1にして指数加算器204において加
算を行う。加算結果の最上位ビットを最上位ビット補正
回路207で反転する。最上位ビットが反転した加算結果
をラッチ210に格納する。
る桁あふれを保持する。被乗数上位下位選択回路212は
被乗数レジスタ仮数部201fの上位27ビットを読出して出
力し(図36(a)に示す値Aで、この中に被乗数の仮数部
の有効ビットはすべて含まれ、下位3ビットは0であ
る)、乗数上位下位選択回路213は乗数レジスタ仮数部2
02fの上位27ビットを読出して出力する(図36(a)に示す
値Bで、この中に乗数の仮数部の有効ビットはすべて含
まれ、下位3ビットは0である)。乗算器214は被乗数
上位下位選択回路212および乗数上位下位選択回路213か
らの入力に基づいて乗算を実行し、和出力と桁上げ出力
をそれぞれラッチ215とラッチ216に格納する。同時に符
号生成回路203において被乗数レジスタ符号部201sと乗
数レジスタ符号部202sから被乗数および乗数の符号を読
出して両者の排他的論理和をとり、積の符号を生成して
積レジスタ符号部226sに格納する。 (3)ステップ2 仮数加算器220はラッチ215に保持された乗算器214の和
出力(下位7ビットは0)とセレクタ218によりラッチ2
16に保持された乗算器214の桁上げ出力(下位7ビット
は0)とセレクタ219により丸め加算値生成回路217が生
成する丸め加算値Aとを加算する。この時の仮数加算器
220から桁あふれ(Z-1)の有無により、 ・仮数加算器220から桁あふれがあるとき、即ち仮数部
の積が2以上のとき シフタ221は正規化のために仮数加算器220からの出力を
1ビット最下位ビット方向にシフト(このとき、最上位
ビットに1を埋める)し、セレクタ205およびセレクタ2
06により指数加算器204はラッチ210の値と正規化補正値
生成回路211が出力する定数1を加算して積レジスタ指
数部226eに格納する。 ・仮数加算器220からの桁あふれがないとき、即ち仮数
部の積が1以上2未満のとき シフタ221は正規化を行う必要がないために仮数加算器2
20からの出力をシフトせずにそのまま出力し、セレクタ
205およびセレクタ206により指数加算器204はラッチ210
の値をそのまま出力して積レジスタ指数部226eに格納す
る。のいずれかを実行する。ラッチ208の値は変化させ
ない。例外検出回路209は指数加算器204の出力(Eとす
る)により単精度での積の上位あふれ(OVF)と下位あふ
れ(UNF)を次の論理に基づいて検出する。
器220の出力の最上位ビットから26ビット目から47ビッ
ト目(Z25,・・・Z46)の22ビットの論理和をとり22ビット中
に値1のビットが1つでもあればスティッキビット出力
(S)を1にし、22ビットの全ビットが値0であればステ
ィッキビット出力(S)を0にする。仮数補正制御回路224
は仮数加算器220の出力の最上位ビットから23ビット目
から25ビット目(Z22,Z23,Z2 4)とスティッキビット生成
回路222が出力するスティッキビット(S)と仮数加算器22
0における桁あふれ(Cout=Z-1)に基づいて仮数補正回路
223の制御を行ない、仮数補正回路223は図33の補正信号
の欄が1ならばシフタ221の出力の最上位から24ビット
目(R23)を反転して0ならば反転せずに出力する。同時
に、同図の丸め加算信号の欄が0ならば仮数補正回路22
3の出力の最上位ビットを除く53ビットの下位29ビット
を0にマスクして積レジスタ仮数部226fに格納して処理
を終了する。丸め加算信号の欄が1ならば仮数補正回路
223の出力をラッチ225に格納した後、次の挿入ステップ
を実行する。 (3)挿入ステップ(丸め加算信号の欄が1の時のみ) 仮数加算器220はセレクタ218により丸め加算値生成回路
217が生成する丸め加算値Aとセレクタ219によりラッチ
225が保持する値とを加算する。この時に仮数加算器220
から桁あふれは発生しない。シフタ221は仮数加算器220
の出力をシフトせずにそのまま出力し、仮数補正回路22
3もシフタ221の出力をビット反転せずにそのまま出力す
る。その後、仮数補正回路223の出力の最上位ビットを
除く53ビットの下位29ビットを0にマスクして積レジス
タ仮数部226fに格納して処理を終了する。
度で丸める場合を図37に示す倍精度乗算の動作フロー図
と図38、図39に示す倍精度乗算における加算およびシフ
トの態様図を用いて説明する。図37は指数加算器204、
例外検出回路209、乗算器214、仮数加算器220、シフタ2
21、仮数補正回路223の処理ステップ毎の動作の内容を
示したもので、図38、図39はその内、仮数加算器220と
シフタ221における詳細な動作の態様を示したものであ
る。 (1)処理ステップ開始前 倍精度の被乗数および乗数をそれぞれ被乗数レジスタ20
1と乗数レジスタ202に格納する。このとき被乗数レジス
タ指数部201eと乗数レジスタ指数部202eはともに倍精度
のバイアス表現(真の指数値=指数部の値−1023(10))
になっている。 (2)ステップ1 セレクタ205により被乗数レジスタ指数部201eに保持さ
れた被乗数の指数を指数加算器204のA入力に入力し、
セレクタ206により乗数レジスタ指数部202eに保持され
た乗数の指数を指数加算器204のB入力に入力するとと
もにキャリ入力Cinを1にして指数加算器204において加
算を行う。加算結果の最上位ビットを最上位ビット補正
回路207で反転する。最上位ビットが反転した加算結果
をラッチ210に格納する。ラッチ208はこの時の指数加算
器204における桁あふれを保持する。被乗数上位下位選
択回路212は被乗数レジスタ仮数部201fの下位27ビット
を読出して出力し(図38に示すALで、最上位ビットは0
である)、乗数上位下位選択回路213は乗数レジスタ仮
数部202fり下位27ビットを読出して出力する(図38に示
す値BLで、最上位ビットは0である)。乗算器214は被
乗数上位下位選択回路212および乗数上位下位選択回路2
13からの入力に基づいて乗算を実行し、和出力と桁上げ
出力をそれぞれラッチ215とラッチ216に格納する。同時
に符号生成回路203において被乗数レジスタ符号部201s
と乗数レジスタ符号部202sから被乗数および乗数の符号
を読出して両者の排他的論理和をとり、積の符号を生成
して積レジスタ符号部226sに格納する。 (3)ステップ2 仮数加算器220はラッチ215に保持された乗算器214の和
出力(上位2ビットと最下位ビットは0)とセレクタ21
8によりラッチ216に保持された乗算器214の桁上げ出力
(上位2ビットと最下位ビットは0)とセレクタ219に
より丸め加算値生成回路217が生成する丸め加算値Bと
を加算する。この時の仮数加算器220から桁あふれは発
生しない。シフタ221は仮数加算器220の出力(W0,・・・,W
52,0)を最下位ビット方向に26ビットシフト(このとき
上位には0を埋める)して結果(0,・・・,0,W0,・・・,W27)を
ラッチ225に格納する。ラッチ225に格納された値は最も
下位の部分積である。同時に被乗数上位下位選択回路21
2は被乗数レジスタ仮数部201fの下位27ビットを読出し
て出力し(図38に示す値ALで、最上位ビットは0であ
る)、乗数上位下位選択回路213は乗数レジスタ仮数部2
02fの上位27ビットを読出して出力する(図38に示す値B
U)。乗算器214は被乗数上位下位選択回路212および乗
数上位下位選択回路213からの入力に基づいて乗算を実
行し、和出力と桁上げ出力をそれぞれラッチ215とラッ
チ216に格納する。 (4)ステップ3 仮数加算器220はラッチ215に保持された乗算器214の和
出力(最上位ビットと最下位ビットは0)とセレクタ21
8によりラッチ216に保持された乗算器214の桁上げ出力
(最上位ビットと最下位ビットは0)とセレクタ219に
よりラッチ225に保持されたシフタ221の出力(上位26ビ
ットは0)とを加算する。この時に仮数加算器220から
桁あふれは発生しない。シフタ221は仮数加算器220(X0,
・・・,X53)の出力をシフトせずにそのまま出力してラッチ
225に格納する。ラッチ225に格納された値は第1の中位
の部分積までを累算したものである。被乗数上位下位選
択回路212は被乗数レジスタ仮数部201fの上位27ビット
を読出して出力し(図38に示す値AU)、乗数上位下位選
択回路213は乗数レジスタ仮数部202fの下位27ビットを
読出して出力する(図38に示す値BLで、最上位ビットは
0である)。乗算器214は被乗数上位下位選択回路212お
よび乗数上位下位選択回路213からの入力に基づいて乗
算を実行し、和出力と桁上げ出力をそれぞれラッチ215
とラッチ216に格納する。 (5)ステップ4 仮数加算器220はラッチ215に保持された乗算器214の和
出力(最上位ビットと最下位ビットは0)とセレクタ21
8によりラッチ216に保持された乗数器214の桁上げ出力
(最上位ビットと最下位ビットは0)シフタ221の出力
とを加算する。シフタ221は仮数加算器220の出力の54ビ
ット(Y0,・・・Y53)に仮数加算器220からの桁あふれ1ビッ
ト(Y-1)を最上位ビット側に付加した55ビットのデータ
(Y-1,Y0,・・・,Y53)を最下位ビット方向に26ビットシフト
(このとき上位には0を埋める)して結果(0,・・・,0,
Y-1,Y0,・・・,Y27)をラッチ225に格納する。ラッチ225に
格納された値は第2の中位の部分積までを累算したもの
である。同時に、被乗数上位下位選択回路212は被乗数
レジスタ仮数部201fの上位27ビットを読出して出力し
(図38に示す値AU)、乗数上位下位選択回路213は乗数
レジスタ仮数部202fの上位27ビットを読出して出力する
(図38に示す値BU)。乗算器214は被乗数上位下位選択
回路212および乗数上位下位選択回路213からの入力に基
づいて乗算を実行し、和出力と桁上げ出力をそれぞれラ
ッチ215とラッチ216に格納する。 (6)ステップ5 仮数加算器220はラッチ215に保持された乗算器214の和
出力(最下位ビットは0)とセレクタ218によりラッチ2
16に保持された乗算器214の桁上げ出力(最下位ビット
は0)とセレクタ219によりラッチ225に保持されたシフ
タ221の出力(上位25ビットは0)とを加算する。この
時の仮数加算器220から桁あふれ(Z-1)の有無により、 ・仮数加算器220から桁あふれがあるとき、即ち仮数部
の積が2以上のとき シフタ221は正規化のために仮数加算器220からの出力を
1ビット最下位ビット方向にシフト(このとき、最上位
ビットに1を埋める)し、セレクタ205およびセレクタ2
06により指数加算器204はラッチ210の値と正規化補正値
生成回路211が出力する定数1を加算して積レジスタ指
数部226eに格納する。 ・仮数加算器220から桁あふれがないとき、即ち仮数部
の積が1以上2未満のとき シフタ221は正規化を行う
必要がないために仮数加算器220からの出力をシフトせ
ずにそのまま出力し、セレクタ205およびセレクタ206に
より指数加算器204はラッチ210の値をそのまま出力して
積レジスタ指数部226eに格納する。のいずれかを実行す
る。ラッチ208の値は変化させない。例外検出回路209は
指数加算器204の出力(E0,・・・,E10とする)とラッチ208
の値(Ceとする)により倍精度での積の上位あふれ(OV
F)と下位あふれ(UNF)を次の論理式に基づいて検出す
る。ただし、 ̄XはXの反転を表す。
2でのシフタ221における26ビットの最下位ビットから
のシフトあふれ(W28,・・・,W52,0)とステップ4でのシフ
タ221における26ビットの最下位ビットからのシフトあ
ふれ(Y28,・・・,Y53)とを合わせた52ビットの論理和をと
り52ビット中に値1のビットが1つでもあればスティッ
キビット出力(S)を1にし、52ビットの全ビットが値0
であればスティッキビット出力(S)を0にする。仮数補
正制御回路224は仮数加算器220の出力の最下位ビットか
ら3ビット目から最下位ビット(Z51,Z52,Z53)とスティ
ッキビット生成回路222が出力するスティッキビット(S)
と仮数加算器220における桁あふれ(Cout=Z-1)に基づい
て仮数補正回路223の制御を行い、仮数補正回路223は図
34の補正信号の欄が1ならばシフタ221の出力の最下位
から2ビット目(R52)を反転して0ならば反転せずに出
力する。同時に、同図の丸め加算信号の欄が0ならば仮
数補正回路223の出力の最下位ビットを除く53ビットを
積レジスタ仮数部226fに格納して処理を終了する。丸め
加算信号の欄が1ならば仮数補正回路223の出力をラッ
チ225に格納した後、次の挿入ステップを実行する。 (6)挿入ステップ(丸め加算信号の欄が1の時のみ) 仮数加算器220はセレクタ218により丸め加算値生成回路
217が生成する丸め加算値Cとセレクタ219によりラッチ
225が保持する値とを加算する。この時に仮数加算器220
から桁あふれは発生しない。シフタ221は仮数加算器220
の出力をシフトせずにそのまま出力し、仮数補正回路22
3もシフタ221の出力をビット反転せずにそのまま出力す
る。その後、仮数補正回路223の出力の最下位ビットを
除く53ビットを積レジスタ仮数部226fに格納して処理を
終了する。
おける丸め加算値の加算または部分積を累算するための
加算と乗算器214からの和出力と桁上げ出力の加算とを
仮数加算器220で行ない、その結果をシフタ221で正規化
することによりほとんどの場合、処理を終了することが
できる。さらに仮数補正回路223での補正が必要な場合
でも処理ステップ数を増加させることなく終了すること
ができ、仮数加算器220での丸め加算値の加算を再度必
要とする時だけ処理を1ステップだけ挿入することで終
了できる。1ステップの挿入が必要な確率は32分の2と
極めて小さい(仮数のビットパタンが均一に分布すると
仮定した場合)。その結果、ほとんどの場合(確率32分
の30)、単精度乗算に必要な処理ステップ数は2、倍精
度乗算に必要な処理ステップ数は5、と小さくなる。ま
た単一の仮数加算器220で和と桁上げの加算と丸め加算
値の加算または部分積を累算するための加算とを実行し
ているため、必要なハードウェアが従来の浮動小数点デ
ータの乗算装置に比べて少ない。
する例を挙げているが、正方向丸めモードや負方向丸め
モードおよび零方向丸めモードについても丸め加算値生
成回路217および仮数補正制御回路224の制御を変えるだ
けで容易に対応できる。この場合の丸めに関する動作は
第1の実施例に示したものと同様で、仮数演算結果のビ
ットの反転や処理ステップの挿入の制御は図7、図8、
図9、図10または図11、図12、図13、図14や図15、図1
6、図17、図18の制御関係図に従う。
もに単精度で積を単精度に丸める場合と被乗数および乗
数がともに倍精度で積を倍精度に丸める場合を説明した
が、いかなる被乗数と乗数の精度の組合せおよび積の丸
め精度の組合せであっても、スティッキビット生成回路
222におけるスティッキビットの生成論理を丸めを行う
ビットより下位のすべての有効なビットに対応させるこ
とにより、所定の精度に丸めた積を求めることができ
る。
精度の場合に応じて、仮数補正制御回路224が仮数加算
器220の出力の最上位ビットから23ビット目から25ビッ
ト目までまたは最下位ビットから3ビット目から最下位
ビットまでと仮数加算器220における加算時の最上位ビ
ットからの桁あふれの1ビットとスティッキビット生成
回路222が出力するスティッキビット1ビットとを検査
し、仮数補正回路223がシフタ221の出力の最上位ビット
から24ビット目または53ビット目を反転しているが、検
査するビットと反転するビットとを最上位ビット方向に
増加させてもよい。検査するビットと反転するビットの
1ビットの増加ごとに1ステップの挿入が必要な確率が
半減され、その結果、演算速度が向上する。
小数点データの除算装置のブロック図を示すものであ
る。図40において、301は被除数を保持する被除数レジ
スタで、1ビットの符号部301sと11ビットの指数部301e
と53ビットの仮数部301fからなる。302は除数を保持す
る除数レジスタで、1ビットの符号部302sと11ビットの
指数部302eと53ビットの仮数部302fからなる。被除数レ
ジスタ仮数部301fと除数レジスタ仮数部302fの最上位ビ
ットはいずれも20の重みを持ついわゆる「隠れビッ
ト」で正規化数の時は1であり、このビットを除いて被
除数レジスタ301および除数レジスタ302はともに倍精度
に合致している。303は被除数レジスタ符号部301sと除
数レジスタ符号部302sから被除数および除数の符号を読
出して商の符号を生成する符号生成回路、304は被除数
レジスタ指数部301eと除数レジスタ指数部302eから被除
数および除数の指数を読出して商の指数を算出する11ビ
ットの指数減算器で、Cinを1ビットのキャリ入力とし
てA入力とB入力の1の補数をとったものとの加算を行
う。305、306はそれぞれ指数減算器304の2つの入力を
選択する11ビットのセレクタ、307は指数減算304の出力
の最上位ビットを反転する最上位ビット補正回路、308
は指数減算器304における加算時の最上位ビットからの
桁あふれを保持する1ビットのラッチ、309は指数減算
器304の出力とラッチ308の値により指定した演算精度か
らの商の上位あふれ(オーバフロー)と下位あふれ(ア
ンダフロー)を検出する例外検出回路、310は最上位ビ
ット補正回路307によって最上位ビットが反転された指
数減算器304の出力を保持してセレクタ305を通して再び
指数減算器304に入力するための11ビットのラッチ、311
は商の仮数の1ビットシフトの正規化に伴って指数を1
だけ減分させるための定数を生成する正規化補正値生成
回路、312は被除数レジスタ仮数部301fと除数レジスタ
仮数部302fとを読出して商の仮数とそれを正規化する必
要があるか否かの信号とを得る公知技術の仮数演算部、
313は商を保持する商レジスタで、1ビットの符号部313
sと11ビットの指数部313eと53ビットの仮数部313fから
なる。商レジスタ仮数部313fの最上位ビットも20の重
みを持ついわゆる「隠れビット」で正規化数の時は1で
あり、このビットを除いて商レジスタ313は倍精度に合
致している。
数点データの除算装置について、図41に示す除算の動作
フロー図を用いて以下その動作を説明する。同図は指数
減算器304、例外検出回路309、仮数演算部312の処理ス
テップ毎の動作の内容を示したものである。 (1)処理ステップ開始前 被除数および除数が単精度のときは倍精度に拡張してそ
れぞれ被除数レジスタ301と除数レジスタ302に格納す
る。被除数および除数が倍精度のときはそのまま被除数
レジスタ301と除数レジスタ302に格納する。いずれの場
合も被除数レジスタ指数部301eと除数レジスタ指数部30
2eはともに倍精度のバイアス表現(真の指数値=指数部
の値−1023(10))になっている。 (2)ステップ1 セレクタ305により被除数レジスタ指数部301eに保持さ
れた被除数の指数を指数減算器304のA入力に入力し、
セレクタ306により除数レジスタ指数部302eに保持され
た除数の指数を指数減算器304のB入力に入力するとと
もにキャリ入力Cinを0にして指数加算器304においてA
+ ̄B+Cinの加算を行う( ̄BはBの1の補数、Cin=
0のときこの加算はA−B−1と等価である)。加算結
果の最上位ビットを最上位ビット補正回路307で反転す
る。最上位ビットが反転した加算結果をラッチ310に格
納する。ラッチ310に保持される値が正しくバイアスが
かかった商の指数であることは次のように証明できる。 (証明始め)ANSI/IEEE浮動小数点演算規格P754では倍
精度のバイアス値を、
100 0000 0000(2)の加算は最上位ビットの反転で実現で
きる。 (証明終り)ラッチ308はこの時の指数減算器304におけ
る桁あふれを保持する。仮数演算部312は被除数レジス
タ仮数部301fと除数レジスタ仮数部302fから被除数と除
数を読出して除算を開始する。同時に符号生成回路303
において被除数レジスタ符号部301sと除数レジスタ符号
部302sから被除数および除数の符号を読出して両者の排
他的論理和をとり、商の符号を生成して商レジスタ符号
部313sに格納する。 (3)ステップ2 仮数演算部312は商の仮数部を生成して丸めを行う。生
成した商の仮数部が非正規化数のとき、即ち値が0.5以
上1未満のとき、仮数演算部312は生成した商の仮数部
を1ビット最上位ビット方向にシフトして正規化すると
ともに、セレクタ305およびセレクタ306により指数減算
器304はラッチ310の値から正規化補正値生成回路311が
出力する定数1を減算する。生成した商の仮数部が正規
化数のとき、即ち値が1以上2未満のとき、仮数演算部
312は生成した商の仮数部をそのまま出力するととも
に、セレクタ305により指数減算器304もラッチ310の値
をそのまま出力する。いずれの場合も、仮数演算部312
は、丸め精度が単精度のときは結果の最下位ビットを除
く53ビットの下位29ビットを0にマスクして、丸め精度
が倍精度のときは結果の最下位ビットを除く53ビットを
そのまま商レジスタ仮数部313fに格納し、指数減算器30
4は結果を商レジスタ指数部313eに格納する。ラッチ308
の値は変化させない。例外検出回路309は、丸め精度が
単精度の場合、指数減算器304の出力(Eとする)によ
り商の上位あふれ(OVF)と下位あふれ(UNF)を次の論理に
基づいて検出する。
の出力(E0,・・・,E10とする)とラッチ308の値(Ceとす
る)により商の上位あふれ(OVF)と下位あふれ(UNF)を次
の論理式に基づいて検出する。ただし、 ̄XはXの反転を
表す。
力Cinを0にすることによる指数減算器304での(被除数
の指数)−(除数の指数)−1の減算と最上位ビット補
正回路307での最上位ビットの反転とでバイアス値の加
算を実現し、被除数および除数と同様にバイアスがかか
った浮動小数点形式の商の指数部を単一の処理ステップ
で求めることができるため指数部のバイアスを補正する
ステップを必要となしい。また最上位ビット補正回路30
7は1ビットの排他的論理和ゲートで簡単に実現でき、
その他のバイアス補正のための特別なハードウェアは必
要とせず、ハードウェアを削減できる。
指定した丸めモードと丸め精度で丸めを行なった浮動小
数点データの和、差および積の仮数部を得るのに必要な
処理ステップ数を少なくすることができ、また従来の浮
動小数点データの演算装置に比べて少ないハードウェア
で実現でき、その実用的効果は大きい。
った浮動小数点データの商の指数部を得るのに必要な処
理ステップ数を少なくすることができ、また従来の浮動
小数点データの演算装置に比べて少ないハードウェアで
実現でき、その実用的効果は大きい。
タの加減算装置のブロック図
タの加減算装置のブロック図
小数点データの加減算装置の最近偶丸めモードでの丸め
補正繰返し制御回路109の制御関係図
小数点データの加減算装置の最近偶丸めモードでの丸め
補正繰返し制御回路109の制御関係図
小数点データの加減算装置の最近偶丸めモードでの丸め
補正繰返し制御回路109の制御関係図
小数点データの加減算装置の最近偶丸めモードでの丸め
補正繰返し制御回路109の制御関係図
小数点データの加減算装置の正方向丸めモードまたは負
方向丸めモードでの丸め補正繰返し制御回路109の制御
関係図
小数点データの加減算装置の正方向丸めモードまたは負
方向丸めモードでの丸め補正繰返し制御回路109の制御
関係図
小数点データの加減算装置の正方向丸めモードまたは負
方向丸めモードでの丸め補正繰返し制御回路109の制御
関係図
小数点データの加減算装置の正方向丸めモードまたは負
方向丸めモードでの丸め補正繰返し制御回路109の制御
関係図
小数点データの加減算装置の正方向丸めモードまたは負
方向丸めモードでの丸め補正繰返し制御回路109の制御
関係図
小数点データの加減算装置の正方向丸めモードまたは負
方向丸めモードでの丸め補正繰返し制御回路109の制御
関係図
小数点データの加減算装置の正方向丸めモードまたは負
方向丸めモードでの丸め補正繰返し制御回路109の制御
関係図
小数点データの加減算装置の正方向丸めモードまたは負
方向丸めモードでの丸め補正繰返し制御回路109の制御
関係図
小数点データの加減算装置の正方向丸めモードまたは負
方向丸めモードでの丸め補正繰返し制御回路109の制御
関係図
小数点データの加減算装置の正方向丸めモードまたは負
方向丸めモードでの丸め補正繰返し制御回路109の制御
関係図
小数点データの加減算装置の正方向丸めモードまたは負
方向丸めモードでの丸め補正繰返し制御回路109の制御
関係図
小数点データの加減算装置の正方向丸めモードまたは負
方向丸めモードでの丸め補正繰返し制御回路109の制御
関係図
タの加減算装置のキャリ制御装置115の制御関係図
タの加減算装置のキャリ制御装置115の制御関係図
タの加減算装置のキャリ制御装置115の制御関係図
タの加減算装置のキャリ制御装置115の制御関係図
の第1および第2の実施例における浮動小数点データの
加減算装置の処理フロー図
タの加減算装置の丸め値生成回路106の入出力関係図
タの加減算装置の丸め値生成回路106の入出力関係図
小数点データの加減算装置の加算器動作と演算結果の符
号決定方法の符号演算関係図
の第1および第2の実施例における浮動小数点データの
加減算装置の丸め加算の有無を示す説明図
小数点データの加減算装置の最近値丸めモードおよび正
方向負方向丸めモード丸めモードでの丸め加算時の桁上
げ発生の原理図
小数点データの加減算装置の原理となる加減算の態様図
タの乗算装置のブロック図
および乗数上位下位選択回路213の内部ブロック図
作説明図
関係図
関係図
フトの態様図
フトの態様図
フトの態様図
タの除算装置のブロック図
ク図
図
作説明図
Claims (41)
- 【請求項1】浮動小数点データの演算が同符号の加算も
しくは異符号の減算である真の仮数加算の時は同一指数
に桁合せを行なった第1と第2の仮数の加算と加算を行
なうことおよび丸め精度および丸めモードおよび演算結
果の符号によって一意に定まる丸め加算値との加算とを
同時に行ない、浮動小数点データの演算が同符号の減算
もしくは異符号の加算である真の仮数減算の時は同一指
数に桁合せを行なった第1と第2の仮数の減算と減算を
行なうことおよび丸め精度および丸めモードおよび演算
結果の符号によって一意に定まる丸め加算値との加算と
を同時に行ない、前記第1と第2の仮数および丸め加算
値の加減算ののち演算結果が非正規化数の時は前記演算
結果を1ビットシフトして正規化し、前記正規化ののち
正規化された演算結果の中から真の仮数加算か真の仮数
減算のいずれであるかを示す演算の種類と丸め精度によ
って定まる最下位ビットを含む複数のビットを検査して
前記正規化された演算結果のうち丸め精度によって定ま
る前記最下位ビットまでが所定の精度に丸めた第1の仮
数と第2の仮数の真の仮数加算もしくは真の仮数減算に
対して一致するか、検査したビットより上位への桁上げ
が一致して検査したビットだけが一致しないか、検査し
たビットより上位への桁上げも検査したビットより上位
のビットも一致しないかを判断し、前記判断結果に基づ
いて処理を終了するか、前記正規化された演算結果に対
して検査したビットの一部あるいは全部を補正して処理
を終了するか、前記正規化された演算結果に対して再び
前記丸め加算値を加算して処理を終了するかのいずれか
を行なう浮動小数点データの加減算方法。 - 【請求項2】第1と第2の仮数および丸め加算値の加減
算と1ビットシフトの正規化と検査とを1つの処理ステ
ップで行ない、前記検査の結果当該検査ビットより上位
への桁上げが一致して検査したビットだけが一致しない
場合は、検査したビットの一部あるいは全部の補正をさ
らに前記処理ステップ内で行ない、前記検査の結果当該
検査ビットより上位への桁上げが一致しない場合は、前
記正規化された演算結果に対する前記丸め加算値の再加
算を前記処理ステップ終了後に新たな処理ステップを挿
入して行なう請求項1記載の浮動小数点データの加減算
方法。 - 【請求項3】浮動小数点データの演算が真の仮数加算の
時の丸め加算値が、丸め精度が2進小数第23位までを有
する単精度で最近偶丸めモードの時または前記単精度で
正方向丸めモードで演算結果の符号が正の時または前記
単精度で負方向丸めモードで演算結果の符号が負の時は
2の-24乗の重みを持つビットを1にして他のビットを
0にした数値で、丸め精度が2進小数第52位までを有す
る倍精度で最近偶丸めモードの時または前記倍精度で正
方向丸めモードで演算結果の符号が正の時または前記倍
精度で負方向丸めモードで出力符号が負の時は2の-53
乗の重みを持つビットを1にして他のビットを0にした
数値で、上記以外の時はすべてのビットを0にした数値
である請求項1記載の浮動小数点データの加減算方法。 - 【請求項4】浮動小数点データの演算が真の仮数加算の
時の丸め加算値が、丸め精度が2進小数第23位までを有
する単精度で正方向丸めモードで演算結果の符号が正の
時または前記単精度で負方向丸めモードで演算結果の符
号が負の時は2の-23乗の重みを持つビットを1にして
他のビットを0にした数値で、丸め精度が2進小数第52
位までを有する倍精度で正方向丸めモードで演算結果の
符号が正の時または前記倍精度で負方向丸めモードで出
力符号が負の時は2の-52乗の重みを持つビットを1に
して他のビットを0にした数値で、上記以外の時はすべ
てのビットを0にした数値である請求項1記載の浮動小
数点データの加減算方法。 - 【請求項5】浮動小数点データの演算が真の仮数加算の
時の丸め加算値が、丸め精度が2進小数第23位までを有
する単精度で正方向丸めモードで演算結果の符号が正の
時または前記単精度で負方向丸めモードで演算結果の符
号が負の時は2の-24乗の重みを持つビットとそれより
小さい重みを持つビットとを1にして他のビットを0に
した数値で、丸め精度が2進小数第52位までを有する倍
精度で正方向丸めモードで演算結果の符号が正の時また
は前記倍精度で負方向丸めモードで出力符号が負の時は
2の-53乗の重みを持つビットとそれより小さい重みを
持つビットとを1にして他のビットを0にした数値で、
上記以外の時はすべてのビットを0にした数値である請
求項1記載の浮動小数点データの加減算方法。 - 【請求項6】浮動小数点データの演算が真の仮数減算の
時の丸め加算値が、丸め精度が2進小数第23位までを有
する単精度で最近偶丸めモードの時または前記単精度で
正方向丸めモードで演算結果の符号が正の時または前記
単精度で負方向丸めモードで演算結果の符号が負の時は
2の-25乗の重みを持つビットを1にして他のビットを
0にした数値で、丸め精度が2進小数第52位までを有す
る倍精度で最近偶丸めモードの時または前記倍精度で正
方向丸めモードで演算結果の符号が正の時または前記倍
精度で負方向丸めモードで出力符号が負の時は2の-54
乗の重みを持つビットを1にして他のビットを0にした
数値で、上記以外の時はすべてのビットを0にした数値
である請求項1記載の浮動小数点データの加減算方法。 - 【請求項7】浮動小数点データの演算が真の仮数減算の
時の丸め加算値が、丸め精度が2進小数第23位までを有
する単精度で正方向丸めモードで演算結果の符号が正の
時または前記単精度で負方向丸めモードで演算結果の符
号が負の時は2の-24乗の重みを持つビットを1にして
他のビットを0にした数値で、丸め精度が2進小数第52
位までを有する倍精度で正方向丸めモードで演算結果の
符号が正の時または前記倍精度で負方向丸めモードで出
力符号が負の時は2の-53乗の重みを持つビットを1に
して他のビットを0にした数値で、上記以外の時はすべ
てのビットを0にした数値である請求項1記載の浮動小
数点データの加減算方法。 - 【請求項8】浮動小数点データの演算が真の仮数減算の
時の丸め加算値が、丸め精度が2進小数第23位までを有
する単精度で正方向丸めモードで演算結果の符号が正の
時または前記単精度で負方向丸めモードで演算結果の符
号が負の時は2の-25乗の重みを持つビットとそれより
小さい重みを持つビットとを1にして他のビットを0に
した数値で、丸め精度が2進小数第52位までを有する倍
精度で正方向丸めモードで演算結果の符号が正の時また
は前記倍精度で負方向丸めモードで出力符号が負の時は
2の-54乗の重みを持つビットとそれより小さい重みを
持つビットとを1にして他のビットを0にした数値で、
上記以外の時はすべてのビットを0にした数値である請
求項1記載の浮動小数点データの加減算方法。 - 【請求項9】正規化ののち正規化された演算結果の検査
ビットが、浮動小数点データの演算が真の仮数加算でか
つ丸め精度が2進小数第23位までを有する単精度の時は
2の-22乗と2の-23乗と2の-24乗の重みを持つ3ビッ
トとそれより小さい重みを持つ各ビットの論理和をとっ
た1ビットで、真の仮数加算でかつ丸め精度が2進小数
第52位までを有する倍精度の時は2の-51乗と2の-52乗
と2の-53乗の重みを持つ3ビットとそれより小さい重
みを持つ各ビットの論理和をとった1ビットで、真の仮
数減算で前記単精度の時は2の-23乗と2の-24乗の重み
を持つ各ビットとそれより小さい重みを持つ各ビットの
論理和をとった1ビットで、真の仮数減算で前記倍精度
の時2の-52乗と2の-53乗と2の-54乗の重みを持つビ
ットとそれより小さい重みを持つビットの論理和をとっ
た1ビットである請求項1記載の浮動小数点データの加
減算方法。 - 【請求項10】判断結果に基づいて補正するビットが、
丸め精度が2進小数第23位までを有する単精度の時は2
の-23乗の重みを持つビットまたは2の-22乗と2の-23
乗の重みを持つビットで、丸め精度が2進小数第52位ま
でを有する倍精度の時は2の-52乗の重みを持つビット
または2の-51乗と2の-52乗の重みを持つビットである
請求項1記載の浮動小数点データの加減算方法。 - 【請求項11】浮動小数点データの演算が同符号の加算
もしくは異符号の減算である真の仮数加算か同符号の減
算もしくは異符号の加算である真の仮数減算のいずれで
あるかを示す演算の種類と丸め精度と丸めモードと演算
結果の符号によって一意に定まる丸め加算値を生成する
丸め加算値生成手段と、真の仮数加算時は同一指数に桁
合せを行なった第1と第2の仮数の加算と前記加算結果
と前記丸め加算値生成手段が生成する丸め加算値との加
算とを同時に行ない真の仮数減算時は同一指数に桁合せ
を行なった第1と第2の仮数の減算と前記減算結果と前
記丸め加算値生成手段が生成する丸め加算値との加算と
を同時に行なう仮数加減算実行手段と、前記仮数加減算
実行手段による演算結果が非正規化数の時は前記演算結
果をシフトして正規化する正規化手段と、前記正規化手
段の出力の中から丸め精度によって定まる最下位ビット
を含む複数のビットを検査して前記正規化手段の出力の
うち丸め精度によって定まる前記最下位ビットまでが所
定の精度に丸めた第1の仮数と第2の仮数の真の仮数加
算もしくは真の仮数減算に対して一致するか、検査した
ビットより上位への桁上げが一致して検査したビットだ
けが一致しないか、検査したビットより上位への桁上げ
も検査したビットより上位のビットも一致しないかを判
断する演算結果検査手段と、前記正規化手段の出力に対
して前記演算結果検査手段が検査したビットの一部ある
いは全部を補正する丸め補正手段とを備え、前記演算結
果検査手段が前記正規化手段の出力のうち丸め精度によ
って定まる前記最下位ビットまでが所定の精度に丸めた
第1の仮数と第2の仮数の真の仮数加算もしくは真の仮
数減算に対して一致すると判断した場合は処理を終了
し、検査したビットより上位への桁上げが一致して検査
したビットだけが一致しないと判断した場合は前記丸め
補正手段により前記正規化手段の出力の一部あるいは全
部を補正して処理を終了し、検査したビットより上位へ
の桁上げも検査したビットより上位のビットも一致しな
いと判断した場合は前記正規化手段の出力に対して前記
丸め加算値生成手段および前記仮数加減算実行手段によ
り再び丸め加算値を加算して処理を終了することを特徴
とする浮動小数点データの加減算装置。 - 【請求項12】仮数加減算実行手段における第1と第2
の仮数および丸め加算値の加減算と正規化手段における
正規化と演算結果検査手段における検査とを1つのマシ
ンサイクルで行ない、前記検査の結果当該検査ビットよ
り上位への桁上げが一致して検査したビットだけが一致
しない場合は、丸め補正手段における検査したビットの
一部あるいは全部の補正をさらに前記マシンサイクル内
で行ない、前記検査の結果当該検査ビットより上位への
桁上げが一致しない場合は、前記仮数加減算実行手段に
おける丸め加算値の再加算を前記マシンサイクル終了後
に新たなマシンサイクルを挿入して行なう請求項11記載
の浮動小数点データの加減算装置。 - 【請求項13】丸め加算値生成手段が生成する丸め加算
値が、浮動小数点データの演算が真の仮数加算の時で、
丸め精度が2進小数第23位までを有する単精度で最近偶
丸めモードの時または前記単精度で正方向丸めモードで
演算結果の符号が正の時または前記単精度で負方向丸め
モードで演算結果の符号が負の時は2の-24乗の重みを
持つビットを1にして他のビットを0にした数値で、丸
め精度が2進小数第52位までを有する倍精度で最近偶丸
めモードの時または前記倍精度で正方向丸めモードで演
算結果の符号が正の時または前記倍精度負方向丸めモー
ドで出力符号が負の時は2の-53乗の重みを持つビット
を1にして他のビットを0にした数値で、浮動小数点デ
ータの演算が真の仮数減算の時で、丸め精度が前記単精
度で最近偶丸めモードの時または前記単精度で正方向丸
めモードで演算結果の符号が正の時または前記単精度で
負方向丸めモードで演算結果の符号が負の時は2の-25
乗の重みを持つビットを1にして他のビットを0にした
数値で、丸め精度が前記倍精度で最近偶丸めモードの時
または前記倍精度で正方向丸めモードで演算結果の符号
が正の時または前記倍精度で負方向丸めモードで出力符
号が負の時は2の-54乗の重みを持つビットを1にして
他のビットを0にした数値で、上記以外の時はすべての
ビットを0にした数値である請求項11記載の浮動小数点
データの加減算装置。 - 【請求項14】丸め加算値生成手段が生成する丸め加算
値が、浮動小数点データの演算が真の仮数加算の時で、
丸め精度が2進小数第23位までを有する単精度で正方向
丸めモードで演算結果の符号が正の時または前記単精度
で負方向丸めモードで演算結果の符号が負の時は2の-2
3乗の重みを持つビットを1にして他のビットを0にし
た数値で、丸め精度が2進小数第52位までを有する倍精
度で正方向丸めモードで演算結果の符号が正の時または
前記倍精度負方向丸めモードで出力符号が負の時は2の
-52乗の重みを持つビットを1にして他のビットを0に
した数値で、浮動小数点データの演算が真の仮数減算の
時で、丸め精度が前記単精度で正方向丸めモードで演算
結果の符号が正の時または前記単精度で負方向丸めモー
ドで演算結果の符号が負の時は2の-24乗の重みを持つ
ビットを1にして他のビットを0にした数値で、丸め精
度が前記倍精度で正方向丸めモードで演算結果の符号が
正の時または前記倍精度で負方向丸めモードで出力符号
が負の時は2の-53乗の重みを持つビットを1にして他
のビットを0にした数値で、上記以外の時はすべてのビ
ットを0にした数値である請求項11記載の浮動小数点デ
ータの加減算装置。 - 【請求項15】丸め加算値生成手段が生成する丸め加算
値が、浮動小数点データの演算が真の仮数加算の時で、
丸め精度が2進小数第23位までを有する単精度で正方向
丸めモードで演算結果の符号が正の時または前記単精度
で負方向丸めモードで演算結果の符号が負の時は2の-2
4乗の重みを持つビットとそれより小さい重みを持つビ
ットとを1にして他のビットを0にした数値で、丸め精
度が2進小数第52位までを有する倍精度で正方向丸めモ
ードで演算結果の符号が正の時または前記倍精度負方向
丸めモードで出力符号が負の時は2の-53乗の重みを持
つビットとそれより小さい重みを持つビットとを1にし
て他のビットを0にした数値で、浮動小数点データの演
算が真の仮数減算の時で、丸め精度が前記単精度で正方
向丸めモードで演算結果の符号が正の時または前記単精
度で負方向丸めモードで演算結果の符号が負の時は2の
-25乗の重みを持つビットとそれより小さい重みを持つ
ビットとを1にして他のビットを0にした数値で、丸め
精度が前記倍精度で正方向丸めモードで演算結果の符号
が正の時または前記倍精度で負方向丸めモードで出力符
号が負の時は2の-54乗の重みを持つビットとそれより
小さい重みを持つビットとを1にして他のビットを0に
した数値で、上記以外の時はすべてのビットを0にした
数値である請求項11記載の浮動小数点データの加減算装
置。 - 【請求項16】演算結果検査手段が検査するビットが、
浮動小数点データの演算が真の仮数加算でかつ丸め精度
が2進小数第23位までを有する単精度の時は2の-22乗
と2の-23乗と2の-24乗の重みを持つ3ビットとそれよ
り小さい重みを持つ各ビットの論理和をとった1ビット
で、真の仮数加算でかつ丸め精度が2進小数第52位まで
を有する倍精度の時は2の-51乗と2の-52乗と2の-53
乗の重みを持つ3ビットとそれより小さい重みを持つ各
ビットの論理和をとった1ビットで、真の仮数減算で前
記単精度の時は2の-23乗と2の-24乗と2の-25乗の重
みを持つ3ビットとそれより小さい重みを持つ各ビット
の論理和をとった1ビットで、真の仮数減算で前記倍精
度の時は2の-52乗と2の-53乗と2の-54乗の重みを持
つ3ビットとそれより小さい重みを持つ各ビットの論理
和をとった1ビットである請求項11記載の浮動小数点デ
ータの加減算装置。 - 【請求項17】補正手段で補正するビットが、丸め精度
が2進小数第23位までを有する単精度の時は2の-23乗
の重みを持つビットまたは2の-22乗と2の-23乗の重み
を持つビットで、丸め精度が2進小数第52位までを有す
る倍精度の時は2の-52乗の重みを持つビットまたは2
の-51乗と2の-52乗の重みを持つビットである請求項11
記載の浮動小数点データの加減算装置。 - 【請求項18】浮動小数点形式の被乗数および乗数のそ
れぞれの仮数部を乗算して積を和(サム)と桁上げ(キ
ャリ)に分けて求め、前記乗算ののち前記和と前記桁上
げと丸め精度および丸めモードおよび前記被乗数および
前記乗数の符号によって一意に定まる丸め加算値とを加
算する演算を行い、前記演算ののち演算結果が非正規化
数の時は前記演算結果を1ビットシフトして正規化し、
前記正規化ののち正規化された演算結果の中から丸め精
度によって定まる最下位ビットを含む複数のビットを検
査て前記正規化された演算結果のうち丸め精度によって
定まる前記最下位ビットまでが所定の精度に丸めた前記
被乗数の仮数と前記乗数の仮数の積に対して一致する
か、検査したビットより上位への桁上げが一致して検査
したビットだけが一致しないか、検査したビットより上
位への桁上げも検査したビットより上位のビットも一致
しないかを判断し、前記判断結果に基づいて処理を終了
するか、前記正規化された演算結果に対して検査したビ
ットの一部あるいは全部を補正して処理を終了するか、
前記正規化された演算結果に対して再び前記丸め加算値
を加算して処理を終了するかのいずれかを行なう浮動小
数点データの乗算方法。 - 【請求項19】和と桁上げと丸め加算値との加算と1ビ
ットシフトの正規化と検査とを1つの処理ステップで行
ない、前記検査の結果当該検査ビットより上位への桁上
げが一致して検査したビットだけが一致しない場合は、
検査したビットの一部あるいは全部の補正をさらに前記
処理ステップ内で行ない、前記検査の結果当該検査ビッ
トより上位への桁上げが一致しない場合は、前記正規化
された演算結果に対する前記丸め加算値の再加算を前記
処理ステップ終了後に新たな処理ステップを挿入して行
う請求項18記載の浮動小数点データの乗算方法。 - 【請求項20】丸め加算値が、丸め精度が2進小数第23
位までを有する単精度で最近丸めモードの時または前記
単精度で正方向丸めモードで演算結果の符号が正の時ま
たは前記単精度で負方向丸めモードで演算結果の符号が
負の時は2の-24乗の重みを持つビットを1にして他の
ビットを0にした数値で、丸め精度が2進小数第52位ま
でを有する倍精度で最近偶丸めモードの時または前記倍
精度で正方向丸めモードで演算結果の符号が正の時また
は前記倍精度で負方向丸めモードで出力符号が負の時は
2の-53乗の重みを持つビットを1にして他のビットを
0にした数値で、上記以外の時はすべてのビットを0に
した数値である請求項18記載の浮動小数点データの乗算
方法。 - 【請求項21】丸め加算値が、丸め精度が2進小数第23
位までを有する単精度で正方向丸めモードで演算結果の
符号が正の時または前記単精度で負方向丸めモードで演
算結果の符号が負の時は2の-23乗の重みを持つビット
を1にして他のビットを0にした数値で、丸め精度が2
進小数第52位までを有する倍精度で正方向丸めモードで
演算結果の符号が正の時または前記倍精度で負方向丸め
モードで出力符号が負の時は2の-52乗の重みを持つビ
ットを1にして他のビットを0にした数値で、上記以外
の時はすべてのビットを0にした数値である請求項18記
載の浮動小数点データの乗算方法。 - 【請求項22】丸め加算値が、丸め精度が2進小数第23
位までを有する単精度で正方向丸めモードで演算結果の
符号が正の時または前記単精度で負方向丸めモードで演
算結果の符号が負の時は2の-24乗の重みを持つビット
とそれより小さい重みを持つビットとを1にして他のビ
ットを0にした数値で、丸め精度が2進小数第52位まで
を有する倍精度で正方向丸めモードで演算結果の符号が
正の時または前記倍精度で負方向丸めモードで出力符号
が負の時は2の-53乗の重みを持つビットとそれより小
さい重みを持つビットとを1にして他のビットを0にし
た数値で、上記以外の時はすべてのビットを0にした数
値である請求項18記載の浮動小数点データの乗算方法。 - 【請求項23】正規化ののち正規化された演算結果の検
査ビットが、丸め精度が2進小数第23位までを有する単
精度の時は2の-22乗と2の-23乗と2の-24乗の重みを
持つ3ビットとそれより小さい重みを持つ各ビットの論
理和をとった1ビットで、丸め精度が2進小数第52位ま
でを有する倍精度の時は2の-51乗と2の-52乗と2の-5
3乗の重みを持つ3ビットとそれより小さい重みを持つ
各ビットの論理和をとった1ビットである請求項18記載
の浮動小数点データの乗算方法。 - 【請求項24】判断結果に基づいて補正するビットが、
丸め精度が2進小数第23位までを有する単精度の時は2
の-23乗の重みを持つビットまたは2の-22乗と2の-23
乗の重みを持つビットで、丸め精度が2進小数第52位ま
でを有する倍精度の時は2の-52乗の重みを持つビット
または2の-51乗と2の-52乗の重みを持つビットである
請求項18記載の浮動小数点データの乗算方法。 - 【請求項25】2つの入力のビット幅がともに浮動小数
点形式の被乗数および乗数の仮数部の長さに等しいかも
しくは仮数部の長さよりも長くその入力に対して少なく
とも入力の2倍のビットの幅の和(サム)と桁上げ(キ
ャリ)とを出力する仮数乗算手段と、丸め精度と丸めモ
ードと2つの浮動小数点データの符号とによって一意に
定まる丸め加算値を生成する丸め加算値生成手段と、前
記仮数乗算手段の和出力と桁上げ出力および前記丸め加
算値生成手段からの丸め加算値の三者の加算を同時に行
う仮数加算手段と、前記仮数加算手段による演算結果が
非正規化数の時は前記演算結果をシフトして正規化する
正規化手段と、前記正規化手段の出力の中から丸め精度
によって定まる最下位ビットを含む複数のビットを検査
して前記正規化手段の出力のうち丸め精度によって定ま
る前記最下位ビットまでが所定の精度に丸めた前記被乗
数の仮数と前記乗数の仮数の積に対して一致するか、検
査したビットより上位への桁上りが一致して検査したビ
ットだけが一致しないか、検査したビットより上位への
桁上りも検査したビットより上位のビットも一致しない
かを判断する演算結果検査手段と、前記正規化手段の出
力に対して前記演算結果検査手段が検査したビットの一
部あるいは全部を補正する丸め補正手段とを備え、浮動
小数点形式の被乗数および乗数のそれぞれの仮数部を前
記仮数乗算手段に入力して得られる和出力および桁上げ
出力と前記丸め加算値生成手段からの丸め加算値の三者
の和を前記仮数加算手段で求めその結果を前記正規化手
段において正規化したのち前記演算結果検査手段が前記
正規化手段の出力のうち丸め精度によって定まる前記最
下位ビットまでが所定の精度に丸めた積の仮数に対して
一致すると判断した場合は処理を終了し、検査したビッ
トより上位への桁上げが一致して検査したビットだけが
一致しないと判断した場合は前記丸め補正手段により前
記正規化手段の出力の一部あるいは全部を補正して処理
を終了し、検査したビットより上位への桁上げも検査し
たビットより上位のビットも一致しないと判断した場合
は前記正規化手段の出力に対して前記丸め加算値生成手
段および前記仮数加算手段により再び丸め加算値を加算
して処理を終了することを特徴とする浮動小数点データ
の乗算装置。 - 【請求項26】仮数加算手段における和出力と桁上げ出
力および丸め加算値の加算と正規化手段における正規化
と演算結果検査手段における検査とを1つのマシンサイ
クルで行ない、前記検査の結果当該検査ビットより上位
への桁上げが一致して検査したビットだけが一致しない
場合は、丸め補正手段における検査したビットの一部あ
るいは全部の修正をさらに前記マシンサイクル内で行な
い、前記検査の結果当該検査ビットより上位への桁上げ
が一致しない場合は、前記仮数加算手段における丸め加
算値の再加算を前記マシンサイクル終了後に新たなマシ
ンサイクルを挿入して行なう請求項25記載の浮動小数点
データの乗算装置。 - 【請求項27】丸め加算値生成手段が生成する丸め加算
値が、丸め精度が2進小数第23位までを有する単精度で
最近偶丸めモードの時または前記単精度で正方向丸めモ
ードで演算結果の符号が正の時または前記単精度で負方
向丸めモードで演算結果の符号が負の時は2の-24乗の
重みを持つビットを1にして他のビットを0にした数値
で、丸め精度が2進小数第52位までを有する倍精度で最
近偶丸めモードの時または前記倍精度で正方向丸めモー
ドで演算結果の符号が正の時または前記倍精度負方向丸
めモードで出力符号が負の時は2の-53乗の重みを持つ
ビットを1にして他のビットを0にした数値で、上記以
外の時はすべてのビットを0にした数値である請求項25
記載の浮動小数点データの乗算装置。 - 【請求項28】丸め加算値生成手段が生成する丸め加算
値が、丸め精度が2進小数第23位までを有する単精度で
正方向丸めモードで演算結果の符号が正の時または前記
単精度で負方向丸めモードで演算結果の符号が負の時は
2の-23乗の重みを持つビットを1にして他のビットを
0にした数値で、丸め精度が2進小数第52位までを有す
る倍精度で正方向丸めモードで演算結果の符号が正の時
または前記倍精度負方向丸めモードで出力符号が負の時
は2の-52乗の重みを持つビットを1にして他のビット
を0にした数値で、上記以外の時はすべてのビットを0
にした数値である請求項25記載の浮動小数点データの乗
算装置。 - 【請求項29】丸め加算値生成手段が生成する丸め加算
値が、丸め精度が2進小数第23位までを有する単精度で
正方向丸めモードで演算結果の符号が正の時または前記
単精度で負方向丸めモードで演算結果の符号が負の時は
2の-24乗の重みを持つビットとそれより小さい重みを
持つビットとを1にして他のビットを0にした数値で、
丸め精度が2進小数第52位までを有する倍精度で正方向
丸めモードで演算結果の符号が正の時または前記倍精度
負方向丸めモードで出力符号が負の時は2の-53乗の重
みを持つビットとそれより小さい重みを持つビットとを
1にして他のビットを0にした数値で、上記以外の時は
すべてのビットを0にした数値である請求項25記載の浮
動小数点データの乗算装置。 - 【請求項30】演算結果検査手段が検査するビットが、
丸め精度が2進小数第23位までを有する単精度の時は2
の-22乗と2の-23乗と2の-24乗の重みを持つ3ビット
とそれより小さい重みを持つ各ビットの論理和をとった
1ビットで、丸め精度が2進小数第52位までを有する倍
精度の時は2の-51乗と2の-52乗と2の-53乗の重みを
持つ3ビットとそれより小さい重みを持つ各ビットの論
理和をとった1ビットである請求項25記載の浮動小数点
データの乗算装置。 - 【請求項31】補正手段で補正するビットが、丸め精度
が2進小数第23位までを有する単精度の時は2の-23乗
の重みを持つビットまたは2の-22乗と2の-23乗の重み
を持つビットで、丸め精度が2進小数第52位までを有す
る倍精度の時は2の-52乗の重みを持つビットまたは2
の-51乗と2の-52乗の重みを持つビットである請求項25
記載の浮動小数点データの乗算装置。 - 【請求項32】浮動小数点形式の被乗数の仮数部を保持
する被乗数保持手段と、浮動小数点形式の乗数の仮数部
を保持する乗数保持手段と、2つの入力のうち少なくと
も一方の入力のビット幅が前記被乗数および前記乗数の
仮数部の長さより短くその入力に対して少なくとも入力
の2倍のビット幅の和(サム)と桁上げ(キャリ)とを
出力する仮数乗算手段と、前記仮数乗算手段の被乗数入
力のビット幅が前記被乗数の仮数部の長さよりも短かい
場合は前記被乗数保持手段に保持された被乗数の仮数部
の最上位ビットから最下位ビットまでを複数の前記仮数
乗算手段の被乗数入力のビット幅の部分仮数部に分割し
その中から処理ステップ毎に1つを選択して出力する部
分被乗数選択手段と、前記仮数乗算手段の乗数入力のビ
ット幅が前記乗数の仮数部の長さよりも短かい場合は前
記乗数保持手段に保持された乗数の仮数部の最上位ビッ
トから最下位ビットまでを複数の前記仮数乗算手段の乗
数入力のビット幅の部分仮数部に分割しその中から処理
ステップ毎に1つを選択して出力する部分乗数選択手段
と、丸め精度と丸めモードと2つの浮動小数点データの
符号とによって一意に定まる丸め加算値を生成する丸め
加算値生成手段と、処理の最初のステップは前記仮数乗
算手段の和出力と桁上げ出力および前記丸め加算値生成
手段からの丸め加算値の三者の加算を同時に行い最初の
部分積を生成し、以降のステップは前記仮数乗算手段の
和出力桁上げ出力および直前のステップで生成されシフ
トされた部分積の三者の加算を同時に行い新たな部分積
を生成する仮数加算手段と、処理の最初または中間ステ
ップは前記仮数加算手段から得られる部分積を当該ステ
ップで前記仮数乗算手段において乗算された乗数および
被乗数の部分仮数部の位置で定まるビット数だけ最下位
ビット方向にシフトし、最終のステップでは前記仮数加
算手段から得られる演算結果が非正規化数の時は前記演
算結果をシフトして正規化するシフト手段と、処理の最
初または中間ステップに前記シフト手段の出力を次ステ
ップの前記仮数加算手段における入力として保持する部
分積保持手段と、処理の最初または中間ステップにおけ
る前記シフト手段でのシフトあふれの各ビットと処理の
最終ステップにおける前記シフト手段の出力の中の丸め
精度によって定まる最下位ビットを含む複数のビットと
を検査して処理の最終ステップにおける前記シフト手段
の出力のうち丸め精度によって定まる前記最下位ビット
までが所定の精度に丸めた前記被乗数の仮数と前記乗数
の仮数の積に対して一致するか、検査したビットより上
位への桁上りが一致して検査したビットだけが一致しな
いか、検査したビットより上位への桁上りも検査したビ
ットより上位のビットも一致しないかを判別する演算結
果検査手段と、前記シフト手段の出力に対して前記演算
結果検査手段が検査したビットの一部あるいは全部を補
正する丸め補正手段とを備え、前記部分被乗数選択手段
と前記部分乗数選択手段において被乗数および乗数の仮
数部の部分を下位から順にかつすべての組合せを選択し
て前記仮数乗算手段に入力して、順次得られる和出力お
よび桁上げ出力と前記丸め加算値生成手段からの丸め加
算値または前記部分積保持手段に保持されている値の三
者の和を前記仮数加算手段で求めその結果を前記シフト
手段においてシフトし再び前記部分積保持手段に格納す
るかもしくは前記シフト手段で最終の演算結果を正規化
したのち前記演算結果検査手段が前記シフト手段の出力
のうち丸め精度によって定まる前記最下位ビットまでが
所定の精度に丸めた積の仮数に対して一致すると判断し
た場合は処理を終了し、検査したビットより上位への桁
上げが一致して検査したビットだけが一致しないと判断
した場合は前記丸め補正手段により前記シフト手段の出
力の一部あるいは全部を補正して処理を終了し、検査し
たビットより上位への桁上げも検査したビットより上位
のビットも一致しないと判断した場合は前記シフト手段
の出力に対して前記丸め加算値生成手段および前記仮数
加算手段により丸め加算値を加算して処理を終了するこ
とを特徴とする浮動小数点データの乗算装置。 - 【請求項33】処理の最終ステップの仮数加算手段にお
ける和出力と桁上げ出力および部分積保持手段に保持さ
れている値の加算とシフト手段における正規化と演算結
果検査手段における検査とを1つのマシンサイクルで行
ない、前記検査の結果当該検査ビットより上位への桁上
げが一致して検査したビットだけが一致しない場合は、
丸め補正手段における検査したビットの一部あるいは全
部の修正をさらに前記マシンサイクル内で行ない、前記
検査の結果当該検査ビットより上位への桁上げが一致し
ない場合は、前記仮数加算手段における丸め加算値の加
算を前記マシンサイクル終了後に新たなマシンサイクル
を挿入して行なう請求項32記載の浮動小数点データの乗
算装置。 - 【請求項34】丸め加算値生成手段が生成する丸め加算
値が、丸め精度が2進小数第23位までを有する単精度で
最近偶丸めモードの時または前記単精度で正方向丸めモ
ードで演算結果の符号が正の時または前記単精度で負方
向丸めモードで演算結果の符号が負の時は2の-24乗の
重みを持つビットを1にして他のビットを0にした数値
で、丸め精度が2進小数第52位までを有する倍精度で最
近偶丸めモードの時または前記倍精度で正方向丸めモー
ドで演算結果の符号が正の時または前記倍精度負方向丸
めモードで出力符号が負の時は2の-53乗の重みを持つ
ビットを1にして他のビットを0にした数値で、上記以
外の時はすべてのビットを0にした数値である請求項32
記載の浮動小数点データの乗算装置。 - 【請求項35】丸め加算値生成手段が生成する丸め加算
値が、丸め精度が2進小数第23位までを有する単精度で
正方向丸めモードで演算結果の符号が正の時または前記
単精度で負方向丸めモードで演算結果の符号が負の時は
2の-23乗の重みを持つビットを1にして他のビットを
0にした数値で、丸め精度が2進小数第52位までを有す
る倍精度で正方向丸めモードで演算結果の符号が正の時
または前記倍精度負方向丸めモードで出力符号が負の時
は2の-52乗の重みを持つビットを1にして他のビット
を0にした数値で、上記以外の時はすべてのビットを0
にした数値である請求項32記載の浮動小数点データの乗
算装置。 - 【請求項36】丸め加算値生成手段が生成する丸め加算
値が、丸め精度が2進小数第23位までを有する単精度で
正方向丸めモードで演算結果の符号が正の時または前記
単精度で負方向丸めモードで演算結果の符号が負の時は
2の-24乗の重みを持つビットとそれより小さい重みを
持つビットとを1にして他のビットを0にした数値で、
丸め精度が2進小数第52位までを有する倍精度で正方向
丸めモードで演算結果の符号が正の時または前記倍精度
負方向丸めモードで出力符号が負の時は2の-53乗の重
みを持つビットとそれより小さい重みを持つビットとを
1にして他のビットを0にした数値で、上記以外の時は
すべてのビットを0にした数値である請求項32記載の浮
動小数点データの乗算装置。 - 【請求項37】演算結果検査手段が検査するビットが、
丸め精度が2進小数第23位までを有する単精度の時は2
の-22乗と2の-23乗と2の-24乗の重みを持つ3ビット
とそれより小さい重みを持つ各ビットの論理和をとった
1ビットで、丸め精度が2進小数第52位までを有する倍
精度の時は2の-51乗と2の-52乗と2の-53乗の重みを
持つ3ビットとそれより小さい重みを持つ各ビットの論
理和をとった1ビットである請求項32記載の浮動小数点
データの乗算装置。 - 【請求項38】補正手段で補正するビットが、丸め精度
が2進小数第23位までを有する単精度の時は2の-23乗
の重みを持つビットまたは2の-22乗と2の-23乗の重み
を持つビットで、丸め精度が2進小数第52位までを有す
る倍精度の時は2の-52乗の重みを持つビットまたは2
の-51乗と2の-52乗の重みを持つビットである請求項32
記載の浮動小数点データの乗算装置。 - 【請求項39】偏位した指数部を持つ浮動小数点形式の
被除数の指数部から同一浮動小数点形式の除数の指数部
を減じた値に1だけ小さい値を求める演算を行い、前記
演算を行ったのち前記演算結果の最上位ビットを反転す
ることにより、前記被除数および前記除数と同様に偏位
した浮動小数点形式の商の指数部を単一の処理ステップ
で求めることを特徴とする浮動小数点データの除算方
法。 - 【請求項40】偏位した指数部を持つ浮動小数点形式の
被除数の指数部から同一浮動小数点形式の除数の指数部
を減じた値に1だけ小さい値を求める指数減算手段と、
前記指数減算手段の出力の最上位ビットの反転を行う最
上位ビット補正手段とを備え、2つの浮動小数点データ
の指数値の減算と偏位補正とを同時に実行して前記被除
数および前記除数と同様に偏位した浮動小数点形式の商
の指数部を得ることを特徴とする浮動小数点データの除
算装置。 - 【請求項41】偏位した指数部を持つ浮動小数点形式の
被除数の指数部から同一浮動小数点形式の除数の指数部
を減じた値に1だけ小さい値を求める指数減算手段と、
前記指数減算手段の出力の最上位ビットの反転を行う最
上位ビット補正手段と、前記最上位ビット補正手段によ
って最上位ビットが反転された前記指数減算手段の出力
に対して前記被除数の仮数部を前記除数の仮数部で除し
た商を正規化するためのシフトビット数に等しい数を加
減算する正規化指数補正手段と、前記指数減算手段の最
上位ビットからの桁上りを示すキャリ出力と前記正規化
指数補正手段からの出力とにより商の上位あふれと下位
あふれとを検出する例外検出手段とを備え、2つの浮動
小数点データの指数値の減算と偏位補正とを同時に実行
して前記被除数および前記除数と同様に偏位した浮動小
数点形式の商の指数部を得、さらに商の仮数部を正規化
した後の所定の演算精度からの商の上位あふれと下位あ
ふれとを検出することを特徴とする浮動小数点データの
除算装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3180865A JPH0823812B2 (ja) | 1990-08-24 | 1991-07-22 | 浮動小数点データの演算方法および演算装置 |
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2-222763 | 1990-08-24 | ||
| JP22276390 | 1990-08-24 | ||
| JP29383690 | 1990-10-30 | ||
| JP2-293836 | 1990-10-30 | ||
| JP3180865A JPH0823812B2 (ja) | 1990-08-24 | 1991-07-22 | 浮動小数点データの演算方法および演算装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH04357522A JPH04357522A (ja) | 1992-12-10 |
| JPH0823812B2 true JPH0823812B2 (ja) | 1996-03-06 |
Family
ID=27324915
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3180865A Expired - Lifetime JPH0823812B2 (ja) | 1990-08-24 | 1991-07-22 | 浮動小数点データの演算方法および演算装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0823812B2 (ja) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3313002B2 (ja) * | 1994-12-02 | 2002-08-12 | 三菱電機株式会社 | 浮動小数点演算装置 |
| US9146706B2 (en) | 2006-05-05 | 2015-09-29 | Qualcomm Incorporated | Controlled-precision iterative arithmetic logic unit |
| CN117891430B (zh) * | 2024-03-18 | 2024-05-14 | 中科亿海微电子科技(苏州)有限公司 | 一种应用于fpga嵌入式dsp的浮点乘加结构 |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS59117637A (ja) * | 1982-12-24 | 1984-07-07 | Toshiba Corp | 浮動小数点乗算装置 |
| US4852039A (en) * | 1987-06-19 | 1989-07-25 | Digital Equipment Corporation | Apparatus and method for accelerating floating point addition and subtraction operations by accelerating the effective subtraction procedure |
-
1991
- 1991-07-22 JP JP3180865A patent/JPH0823812B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JPH04357522A (ja) | 1992-12-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0472148B1 (en) | Method and apparatus for computing floating point data | |
| US5619439A (en) | Shared hardware for multiply, divide, and square root exponent calculation | |
| HK1007907B (en) | Method and apparatus for computing floating point data | |
| KR920005226B1 (ko) | 부동 소수점 연산장치 | |
| US10019231B2 (en) | Apparatus and method for fixed point to floating point conversion and negative power of two detector | |
| US5197023A (en) | Hardware arrangement for floating-point addition and subtraction | |
| JP2938547B2 (ja) | 演算処理装置 | |
| EP0356153B1 (en) | Radix-2**n divider method and apparatus using overlapped quotient bit selection and concurrent quotient rounding and correction | |
| US5132925A (en) | Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction | |
| US20070156803A1 (en) | Overflow detection and clamping with parallel operand processing for fixed-point multipliers | |
| US5408426A (en) | Arithmetic unit capable of performing concurrent operations for high speed operation | |
| JPH04283831A (ja) | 除算器 | |
| KR20210147070A (ko) | 다중 입력 부동 소수점 가산기 | |
| JPH05250146A (ja) | 整数累乗処理を行なうための回路及び方法 | |
| JP4388543B2 (ja) | 3項入力の浮動小数点加減算器 | |
| KR20230015844A (ko) | 극소 검출 | |
| US6598065B1 (en) | Method for achieving correctly rounded quotients in algorithms based on fused multiply-accumulate without requiring the intermediate calculation of a correctly rounded reciprocal | |
| JP2558669B2 (ja) | 浮動小数点演算装置 | |
| US20030115236A1 (en) | Elimination of rounding step in the short path of a floating point adder | |
| JPH04357522A (ja) | 浮動小数点データの演算方法および演算装置 | |
| JPH0283728A (ja) | 浮動小数点乗算装置 | |
| JPH04172526A (ja) | 浮動小数点除算器 | |
| JP3187824B2 (ja) | 正規化回路 | |
| JP4428778B2 (ja) | 演算装置及び演算方法並びに計算装置 | |
| HK1013343B (en) | Method and apparatus for computing floating point data |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080306 Year of fee payment: 12 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090306 Year of fee payment: 13 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100306 Year of fee payment: 14 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110306 Year of fee payment: 15 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110306 Year of fee payment: 15 |
|
| EXPY | Cancellation because of completion of term | ||
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120306 Year of fee payment: 16 |