JP2993119B2 - 浮動小数点演算装置 - Google Patents

浮動小数点演算装置

Info

Publication number
JP2993119B2
JP2993119B2 JP2338258A JP33825890A JP2993119B2 JP 2993119 B2 JP2993119 B2 JP 2993119B2 JP 2338258 A JP2338258 A JP 2338258A JP 33825890 A JP33825890 A JP 33825890A JP 2993119 B2 JP2993119 B2 JP 2993119B2
Authority
JP
Japan
Prior art keywords
bit
mantissa
exponent
output
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2338258A
Other languages
English (en)
Other versions
JPH04205419A (ja
Inventor
美加子 安留
正人 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2338258A priority Critical patent/JP2993119B2/ja
Publication of JPH04205419A publication Critical patent/JPH04205419A/ja
Application granted granted Critical
Publication of JP2993119B2 publication Critical patent/JP2993119B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】 産業上の利用分野 本発明は、浮動小数点データの加減算および乗除算を
実行する回路の構成に関し、さらに単精度フォーマット
と倍精度フォーマットといった複数の種類のフォーマッ
トで表現される数を入出力とする場合の浮動小数点数の
演算装置に関するものである。
従来の技術 近年、IEEE(アイイーイーイー)規格によって浮動小
数点数の取り扱いが標準化され、正規化数、ゼロ、非正
規化数、非数、無限大の5つの属性の分類に従った正確
な処理が必要となってきた。例えば「68040プロセッ
サ」アイイーイーイーマイクロ1990年2月号("THE 680
40 PROCESSOR",IEEE MICRO FEBRUARY 1990,P73−P78)
に示すように、5ビットの情報(タグと称する)をデー
タに付加して、それぞれの属性毎に処理を分類して演算
を行ったり、例外を処理していた。
その際、IEEE規格によって、ゼロは指数部が表現し得
る最小値(すべてのビットがゼロ)で仮数部がゼロの数
で表現し、非正規化数は指数部が表現し得る最小値で仮
数部が0以外の数で表現し、正規化数は指数部が表現し
得る最小値または最大値(すべてのビットが1)以外の
数で表現し、無限大は指数部が表現し得る最大値で仮数
部がゼロの数で表現し、非数は指数部が表現し得る最大
値で仮数部がゼロ以外の数で表現することが規定されて
いる。単精度を例に挙げると、符号をs、指数をe,仮数
をfと表した場合の通常の正規化数が表す値が (−1)^s*2^(e−127)*(1.f) =(−1)^s*2^(e−バイアス値)*(1.f) (但し、ここで「^」はべき乗を示す。以下、同じ) であるのに対し、非正規化数が表す値は、e=0より、 (−1)^s*2^−126*(0.f) =(−1)^s*2^(e−127+1)*(0.f) =(−1)^s*2^(e+1−バイアス値)*(0.
f) であるため、正規化数においては省略された整数部の1
ビットが1であり、指数eからバイアス値を減算した値
(e−バイアス値)が指数部が表現する真の値であるの
に対し、非正規化数においては省略された整数部の1ビ
ットはゼロであり、指数eに1を加算した値からバイア
ス値を減算した値(e+1−バイアス値)が指数部が表
現する真の値である。すなわち、属性毎に、省略された
整数部のビットと、指数部が表現する真の値が異なるこ
とになる。
さらに、IEEE規格では、単精度、倍精度といった異な
るフォーマットのデータ間の演算が規定されており、演
算を行った後、丸めで指定する精度のフォーマットに変
換して結果を出力する必要があった。ところが、データ
は、単精度、倍精度それぞれのバイアス付きの指数で表
現されているため、例えば特開昭60−536記載の浮動小
数点加減算装置のように、単精度フォーマットの2数を
加算して倍精度フォーマットで出力する場合には、出力
側で演算結果の指数−(単精度バイアス値−倍精度バイ
アス値)の演算を実行する必要があり、倍精度フォーマ
ットの2数を加算して単精度フォーマットで出力する場
合には、出力側で、演算結果の指数−(倍精度バイアス
値−単精度バイアス値)のバイアス補正を指数に対して
実行する必要があった。
発明が解決しようとする課題 しかしながら、入力のフォーマットと演算結果を出力
する際のフォーマットが異なるだけでなく、複数の入力
の間でもフォーマットがそれぞれ異なっている場合があ
るため、一旦、入力を一番大きいフォーマットに変換し
て演算を実行した後、出力で指定されたフォーマットに
変換する必要がある。この時の正規化数に対する変換
が、指数eからバイアス値の差を減算して省略された整
数部の1ビットを1にするのに対して、非正規化数に対
する変換が、指数eに1を加算した値からバイアス値の
差を減算して省略された整数部の1ビットを0にしてか
ら演算する必要があること、ゼロの指数は常に指数部が
表現し得る最小値(全ビットが0)、非数または無限大
の指数は常に指数部が表現し得る最大値(全ビットが
1)であることから、正規化数に対する変換を正規化数
以外(以下特殊数と呼ぶ)に適用したのでは、フォーマ
ット変換後に属性が正しく保持されず、誤った演算を実
行する可能性があり、フォーマットごとに5つの属性を
示す5ビットのタグを生成した後、そのタグによってフ
ォーマット変換の際の指数のバイアス補正を実行するか
どうかを決定する必要があった。
本発明はかかる点に鑑み、指数eからバイアス値の差
を減算するのと同時に指数部が表現し得る最小値または
表現し得る最大値、仮数の全ビットが0であることを検
出し、その検出結果を用いて省略された整数部の1ビッ
トと、指数の最下位ビットを仮に決定して、符号生成ま
たは指数演算または仮数演算を開始し、この演算の開始
と並行して演算結果、非数、無限大、ゼロのうちのどの
データを出力するかを高速に決定する浮動小数点演算装
置を提供することを目的とする。
また、乗除算において、指数部の演算に比べて仮数部
の演算に時間を有するが、乗数および被乗数のうち少な
くとも一方、もしくは除数が2の巾乗である場合には、
指数部のみを演算し、仮数部には1.0との演算結果すな
わち、乗数が2の巾乗である場合には被乗数の仮数部、
被乗数が2の巾乗である場合には乗数の仮数部、除数が
2の巾乗である場合には被除数の仮数部を出力すること
によって高速化が可能である。この時、従来はそれぞれ
の属性を5ビットの情報で表現していたため、この5ビ
ットの情報からは2の巾乗を検出することができず、新
たに仮数が1.0であることを判定する必要があった。
さらに、乗除算において、乗数および被乗数のうち少
なくとも一方、もしくは被除数がゼロであるときは演算
結果もゼロであることがわかっているが、仮数がゼロで
あっても仮数演算を実行していたため、不要な演算時間
を要していた。
本発明はかかる点に鑑み、指数部が表現し得る最小
値、表現し得る最大値、仮数部の全ビットが0であるこ
とを示す3ビットを用いて、乗除算においてデータが2
の巾乗もしくはゼロであることの判定を特殊数を検出す
るのと同時に実行し、ハードウエアの増加を伴わずに2
の巾乗もしくはゼロとの乗除算を高速化する浮動小数点
演算装置を提供することを目的とする。
また、入力、出力のそれぞれに対して実行するフォー
マット変換では、指数に対して(単精度バイアス値−倍
精度バイアス値)または(倍精度バイアス値−単精度バ
イアス値)を減算する必要があり、そのために加減算器
を利用していたため、フォーマット変換時の指数変換に
1クロック以上の実行時間が必要となっていた。
本発明はかかる点に鑑み、フォーマット変換の際に再
生する指数に対する演算を、3ビットの反転器と11ビッ
トのセレクタのみからなる専用の小さいハードウエアを
使用して、高速にフォーマット変換を実行する浮動小数
点演算装置を提供することを目的とする。
課題を解決するための手段 本発明は符号部と指数部と整数桁が省略されて小数桁
のみの仮数部とからなる浮動小数点数で表現される少な
くとも1つの入力に対して前記入力の符号部と指定され
る演算の種類とから演算結果の符号部を生成する符号生
成手段と前記入力の指数部を前記演算の種類に従って演
算し演算結果の指数部を生成する指数演算手段と前記入
力の仮数部を前記演算の種類の従って演算し演算結果の
仮数部を生成する仮数演算手段と前記入力の指数部の値
が前記指数部が表現し得る最小値であることを検出しそ
の結果を保持する第1の手段と前記入力の指数部の値が
前記指数部が表現し得る最大値であることを検出しその
結果を保持する第2の手段と前記入力の仮数部の全ビッ
トが0であることを検出しその結果を保持する第3の手
段とを備え、前記第1から第3の手段の少なくとも1つ
における検出および保持の動作が、前記符号生成手段、
前記指数演算手段、前記仮数演算手段の少なくとも1つ
における処理と並列に行われることを特徴とする浮動小
数点演算装置である。
また第2の発明は符号部と指数部と整数桁が省略され
て小数桁のみの仮数部とからなる浮動小数点数で表現さ
れる乗数および被乗数に対して、前記乗数と前記被乗数
の積の符号を生成する符号生成手段と、前記積の仮数部
を生成する仮数演算手段と、前記積の指数部を生成する
指数演算手段と、前記乗数および前記被乗数の少なくと
も1つの指数部の値が前記指数部が表現し得る最大値ま
たは最小値でなくかつ仮数部の全ビットが0であること
を検出する検出手段と、前記検出手段が前記乗数の指数
部の値が前記指数部が表現し得る最大値または最小値で
なくかつ前記乗数の仮数部の全ビットが0であることを
検出した場合における前記被乗数の仮数部を出力する動
作および前記検出手段が前記被乗数の指数部の値が前記
指数部が表現し得る最大値または最小値でなくかつ前記
被乗数の仮数部の全ビットが0であることを検出した場
合における前記乗数の仮数部を出力する動作の少なくと
も一方の動作を行う仮数部出力手段とを備えた浮動小数
点演算装置である。
また、第3の発明は符号部と指数部と整数桁が省略さ
れて小数桁のみの仮数部とからなる浮動小数点数で表現
される乗数および被乗数に対して、前記乗数と前記被乗
数の積の符号を生成する符号生成手段と、前記積の仮数
部を生成する仮数演算手段と、前記積の指数部を生成す
る指数演算手段と、前記乗数および前記被乗数の少なく
とも1つの指数部の値が前記指数部が表現し得る最小値
でかつ仮数部の全ビットが0であることを検出する検出
手段と、前記検出手段が前記乗数の指数部の値が前記指
数部が表現し得る最小値でかつ前記乗数の仮数部の全ビ
ットが0であることを検出した場合におけるゼロを出力
する動作および前記検出手段が前記被乗数の指数部の値
が前記指数部が表現し得る最小値でかつ前記被乗数の仮
数部の全ビットが0であることを検出した場合における
がゼロを出力する動作の少なくとも一方の動作を行う仮
数部出力手段とを備えた浮動小数点演算装置である。
また、第4の発明は符号部と指数部と整数桁が省略さ
れて小数桁のみの仮数部とからなる浮動小数点数で表現
される除数および被除数に対して、前記除数と前記被除
数の商の符号を生成する符号生成手段と、前記商の仮数
部を生成する仮数演算手段と、前記商の指数部を生成す
る指数演算手段と、前記除数の指数部の値が前記指数部
が表現し得る最大値または最小値でなくかつ仮数部の全
ビットが0であることを検出する検出手段と、前記検出
手段が前記除数の指数部の値が前記指数部が表現し得る
最大値または最小値でなくかつ前記除数の仮数部の全ビ
ットが0であることを検出した場合における前記被除数
の仮数部を出力する動作を行う仮数部出力手段とを備え
た浮動小数点演算装置である。
また、第5の発明は符号部と指数部と整数桁が省略さ
れて小数桁のみの仮数部とからなる浮動小数点数で表現
される除数および被除数に対して、前記除数と前記被除
数の商の符号を生成する符号生成手段と、前記商の仮数
部を生成する仮数演算手段と、前記商の指数部を生成す
る指数演算手段と、前記被除数の指数部の値が前記指数
部が表現し得る最小値でかつ仮数部の全ビットが0であ
ることを検出する検出手段と、前記検出手段が前記被除
数の指数部の値が前記指数部が表現し得る最小値でかつ
前記被除数の仮数部の全ビットが0であることを検出し
た場合におけるゼロを出力する動作を行う仮数部出力手
段とを備えた浮動小数点演算装置である。
また、第6の発明は1ビットの符号部と最上位ビット
が0で他のビットが1である8ビットの数(01111111)
によってバイアスされた8ビットの指数部と整数桁が省
略されて小数桁のみの23ビットの仮数部とによって表現
される単精度浮動小数点形式の入力に対して、前記入力
の指数部の最上位ビットを出力の最上位ビットとして生
成し、前記入力の指数部の最上位ビットの反転を出力の
最上位ビットから数えて2ビット目から4ビット目まで
の3ビットとして複写して生成し、前記入力の指数部の
最上位ビットから数えて2ビット目から8ビット目まで
のそれぞれのビットを出力の最上位ビットから数えて5
ビット目から11ビット目までのそれぞれのビットとして
生成する指数拡張手段と、前記入力の仮数部のそれぞれ
のビットを出力の最上位ビットから数えて1ビット目か
ら23ビット目までのそれぞれのビットとして生成し、出
力の最上位ビットから数えて24ビット目から52ビット目
までのそれぞれのビットに0を生成する仮数拡張手段と
を備え、前記入力の符号部と前記指数拡張手段の出力お
よび前記仮数拡張手段の出力とによって、1ビットの符
号部と最上位ビットが0で他のビットが1である11ビッ
トの数(01111111111)によってバイアスされた11ビッ
トの指数部と整数桁が省略され、小数桁のみの52ビット
の仮数部とによって表現される倍精度浮動小数点形式の
出力へ変換することを特徴とする浮動小数点演算装置で
ある。
作用 第1の発明は前記した構成により、浮動小数点数の5
つの属性をフォーマットの精度に応じて、指数部が表現
し得る最小値(全ビットが0)、指数部が表現し得る最
大値(全ビットが1)、仮数部の全ビットが0の3ビッ
トの信号で示し、省略された整数部の1ビットと指数演
算部へ出力する指数部の最下位ビットを指数部が表現し
得る最小値であることを示す1ビットの情報によって決
定した後、仮数または指数の演算を開始するのと同時に
3ビットのタグから非数、ゼロ、無限大が入力された場
合には演算結果以外のあらかめ定められた値を出力する
ことを指示するため、出力値の判定と正規化数、非正規
化数に対する演算が同時に開始でき、特殊数が入力され
た場合にも、正規化数が入力された場合と同じ実行時間
で出力値を得ることができる。
第2、第3、第4、第5の発明は前記した構成によ
り、乗除算時には乗数、被乗数、除数のいずれかが2の
巾乗であることもしくは乗数、被乗数、被除数のいずれ
かが0であることが検出された場合には、仮数の演算を
無効にして、ゼロまたは2つの入力のうちのどちらか一
方を出力するため、高速に演算が実行できる。また、特
殊数の判定に用いる情報と同じ3ビットの情報を使用し
て2の巾乗の判定が可能であるため、小さいハードウエ
アで高速に処理が可能である。
第6の発明は前記した構成により、属性に依存しない
方法で、しかも加算器を使用せずにフォーマットを変換
することができ、フォーマット変換を指数もしくは仮数
の1ステップ目の処理あるいは最終ステップの処理時間
内に実行することが可能であるため、小さいハードウエ
アで高速に異サイズ間の浮動小数点演算を実行すること
ができる。
実 施 例 以下、本発明の一実施例について、図面を参照しなが
ら説明する。第1図は本発明の実施例における浮動小数
点演算装置のブロック図を示すものである。
以下では、単精度フォーマットと倍精度フォーマット
を入力とし、単精度フォーマットの場合は64ビットの入
力のうち、上位側32ビットに符号と8ビットのバイアス
付きの指数と、整数部が省略された23ビットの仮数が、
倍精度フォーマットの場合は64ビットに符号と11ビット
のバイアス付きの指数と、整数部が省略された52ビット
の仮数が入力されるものとし、上位側から、符号ビット
を第0ビット、指数部以下のビットを第1ビット、第2
ビット・・・第63ビットと、昇順に番号を付ける。
また、実際に浮動小数点演算を実行するには入出力制
御、丸め等の回路が必要となるが、ここでは、説明を簡
単にするために、発明を説明するために必要な主要構成
要素のみを示し、演算結果の丸めに関しては説明を省略
する。
入力データをA,Bとすると、加算はA+Bを、減算は
B−Aを、乗算はA*Bを、除算はB/Aを実行する。
1はA側入力が単精度フォーマットの場合にはA側入
力の第1ビットを指数部の最上位ビットとして生成し、
A側入力の第1ビットの反転を指数部の最上位ビットか
ら数えて2ビット目から4ビット目までの3ビットとし
て複写して生成し、A側入力の指数部の最上位ビットか
ら数えて2ビット目から8ビット目までのそれぞれのビ
ットを出力の最上位ビットから数えて5ビット目から11
ビット目までのそれぞれのビットとして生成して指数デ
ータとして出力すると同時にA側入力の第1ビットから
第8ビットの全ビットが0である場合にAEMIN信号を1
にし、A側入力の第1ビットから第8ビットの全ビット
が1である場合にAEMAX信号を1にし、A側入力が倍精
度フォーマットの場合にはA側入力の第1ビットから第
11ビットを指数データとして出力すると同時にA側入力
の第1ビットから第11ビットの全ビットが0である場合
にAEMIN信号を1にし、A側入力の第1ビットから第11
ビットの全ビットが1である場合にAEMAX信号を1にす
る指数拡張、タグ生成器、 2はB側入力が単精度フォーマットの場合にはB側入力
の第1ビットを指数部の最上位ビットとして生成し、B
側入力の第1ビットの反転を指数部のの最上位ビットか
ら数えて2ビット目から4ビット目までの3ビットとし
て複写して生成し、B側入力の指数部の最上位ビットか
ら数えて2ビット目から8ビット目までのそれぞれのビ
ットを出力の最上位ビットから数えて5ビット目から11
ビット目までのそれぞれのビットとして生成して指数デ
ータとして出力すると同時にB側入力の第1ビットから
第8ビットの全ビットが0である場合にBEMIN信号を1
にし、B側入力の第1ビットから第8ビットの全ビット
が1である場合にBEMAX信号を1にし、B側入力が倍精
度フォーマットの場合にはB側入力の第1ビットから第
11ビットを指数データとして出力すると同時にB側入力
の第1ビットから第11ビットの全ビットが0である場合
にBEMIN信号を1にし、B側入力の第1ビットから第11
ビットの全ビットが1である場合にBEMAX信号を1にす
る指数拡張、タグ生成器、 3は乗除算時に指数のバイアスを補正する場合のみ後述
のレジスタ7の出力を選択して出力し、その他の場合に
は指数拡張、タグ生成器2の出力である11ビットの指数
を選択して最上位ビットに0を付加した指数を出力する
マルチプレクサ、 4は、マルチプレクサ3で選択した指数拡張、タグ生成
器1の出力の最上位ビットに0を付加した指数または後
述のレジスタ7の出力である12ビットの指数を格納する
レジスタ、 5は指数拡張、タグ生成器2の出力である11ビットの指
数を格納するか、もしくは乗算のバイアス補正時に倍精
度バイアス値(01111111111)を生成するレジスタ、 6はレジスタ4の出力とレジスタ5の出力に対して加算
または減算を実行するかあるいはレジスタ4またはレジ
スタ5の出力に対して1または0の加算あるいは1の減
算を実行する指数加減算器、7は後述の出力指示手段26
がGEZERO=1を出力してゼロの生成を指示した場合には
0を生成し、その他の場合は指数加減算器6の出力を格
納するレジスタ、8は、後述の出力指示手段26がGEMAX
=1を出力して最大指数の生成を指示した場合にはレジ
スタ7の出力を反転し、その他の場合にはレジスタ7の
出力をそのまま出力する反転器、 9は後述の出力指示手段27がA側データの出力を指示し
た場合にはレジスタ4の出力を、B側データの出力を指
示した場合にはレジスタ5の出力を、それ以外の場合に
は反転器8出力の下位側の11ビットを選択するマルチプ
レクサ、11はA側入力が単精度の場合に第9ビットから
第31ビットを出力の最上位ビットから数えて1ビット目
から23ビット目までのそれぞれのビットとして生成し、
出力の最上位ビットから数えて24ビット目から52ビット
目までのそれぞれのビットに0を生成し、A側入力が単
倍精度の場合に第12ビットから第63ビットを出力の最上
位ビットから数えて1ビット目から52ビット目までのそ
れぞれのビットとして生成する仮数拡張器、12はB側入
力が単精度の場合に第9ビットから第31ビットを出力の
最上位ビットから数えて1ビット目から23ビット目まで
のそれぞれのビットとして生成し、出力の最上位ビット
から数えて24ビット目から52ビット目までのそれぞれの
ビットに0を生成し、B側入力が単倍精度の場合に第12
ビットから第63ビットを出力の最上位ビットから数えて
1ビット目から52ビット目までのそれぞれのビットとし
て生成する仮数拡張器、13は最上位ビットに、指数拡張
タグ生成器1出力のEAMIN信号の反転を最上位ビットに
付加した仮数拡張器11の出力を格納するレジスタ、14は
最上位ビットに、指数拡張タグ生成器1出力のEAMIN信
号の反転を最上位ビットに付加した仮数拡張器12の出力
を格納するレジスタ、15は乗除算の第2ステップ目以降
では後述のレジスタ21の出力を選択し、除算で最終ステ
ップである第53ステップのみに後述の商生成回路30の出
力を選択し、その他の場合で指数加減算器6の出力が負
の場合にレジスタ13を選択し、指数加減算器6の出力が
正の時、レジスタ14の出力を選択するマルチプレクサ、
16は、乗算の場合は後述の乗算制御回路27がゼロの選択
を指示する場合には定数ゼロを、レジスタ14の選択を指
示する場合にはレジスタ14を、除算の場合はレジスタ14
を、加減算で指数加減算器6出力の符号が正の場合には
レジスタ14を選択し、指数加減算器6の出力が負の時レ
ジスタ13の出力を選択するマルチプレクサ、17は、乗除
算実行時にはマルチプレクサ15出力を1ビット右にシフ
トし、加減算実行時にはレジスタ7の出力の絶対値分の
右シフトを実行し、正規化時には正規化のための左シフ
トを実行するバレルシフタ、18はバレルシフタ17の出力
を格納するレジスタ、19はマルチプレクサ16の出力を格
納するレジスタ、20はレジスタ18とレジスタ19の出力間
の加減算を実行する仮数加減算器、21は後述の出力指示
回路27がGFZERO=1を出力してゼロの生成を指示した場
合には0を生成し、その他の場合は仮数加減算器20出力
を格納するレジスタ、22は仮数加減算器20の出力符号が
0でかつレジスタ21の出力の2^1が1の時に右に1ビッ
トシフトし、仮数加減算器20の出力符号が0でかつレジ
スタ21の2^1、2^0、2^−1が全て0の場合に左に1ビッ
トシフトするLR1シフタ、23は後述の出力指示手段27が
A側データの出力を指示した場合にはレジスタ13の出力
を、B側データの出力を指示した場合にはレジスタ14の
出力を、それ以外の場合にはレジスタ21の出力の最上位
ビットである整数部を除く小数部の52ビットを選択する
マルチプレクサ、24は仮数拡張器11出力の全ビットが0
の場合にAFZERO信号を1にする仮数ゼロ検出回路、25は
仮数拡張器12出力の全ビットが0の場合にBFZERO信号を
1にする仮数ゼロ検出回路、26は指数拡張、指数拡張、
タグ生成器1、指数拡張、タグ生成器2、仮数ゼロ検出
回路24、仮数ゼロ検出回路25の出力である2つの入力に
対するタグを入力として、指数および仮数をゼロにする
指示を行う信号であるGEZERO,GFZEROと演算結果または
入力のいずれか一方を出力することを指示する信号であ
るOUTEA,OUTEB,OUTFA,OUTFBを出力する出力指示回路、2
7は乗算時にレジスタ13の最下位ビットから1ビットず
つ上位ビットを走査し、走査したビットが1ならばレジ
スタ14を選択する信号を出力し、走査したビットが0な
らば定数0を選択する信号を出力する乗算制御回路、28
は出力が倍精度フォーマットの場合はマルチプレクサ9
の出力を1ビット目から11ビット目までに生成し、マル
チプレクサ22出力の小数点以下52ビットを12ビット目か
ら63ビット目までに生成して出力し、出力が単精度フォ
ーマットの場合はマルチプレクサ7出力の最上位ビット
を出力の1ビット目として生成し、マルチプレクサ7出
力の最上位ビットから数えて5ビット目から11ビット目
までのそれぞれのビットを出力の最上位ビットから数え
て2ビット目から8ビット目までの7ビットのそれぞれ
のビットとして生成し、マルチプレクサ23出力の小数点
以下23ビットを9ビット目から31ビット目までとして出
力するデータ圧縮器、29は演算の種類に応じて入力の符
号と指数加減算器6の演算結果の符号および仮数加減算
器20の演算結果の符号を入力として演算結果に対する符
号を生成する第5図に示す入出力関係を持つ符号生成回
路、30は除算時に仮数加減算器20の出力が負の時0を、
正の時1を最下位ビットからシフトインすることによっ
て1ビットずつ商を生成する商生成回路である。
以上のように構成された実施例の浮動小数点演算装置
において動作を説明する前に、本発明の基本原理である (1)指数拡張 (2)指数圧縮原理 (3)3ビットのタグを使用した属性毎の処理 について説明する。
3ビットのタグは、上位から1ビット目に指数部が表
現し得る最小値であることを示す信号(以下では指数最
小のタグと呼ぶ)、2ビット目に指数部が表現し得る最
大値であることを示す信号(以下では指数最大のタグと
呼ぶ)、3ビット目に小数部のみの仮数部の全ビットが
ゼロであることを示す信号(以下では仮数ゼロのタグと
呼ぶ)が割り当てられ、それぞれのビットは、検出した
場合には1、検出しなかった場合には0とする。
この3ビットによって、ゼロ、非正規化数、非数、無
限大、2の巾乗である正規化数、2の巾乗でない正規化
数の6種類の数が判別できる。
(1)指数拡張 単精度指数ESは、単精度バイアス値SB(01111111)に
よってバイアス付きで表現されており、倍精度指数EDは
倍精度バイアス値DB(01111111111)によってバイアス
付きで表現されている。単精度数を倍精度数に変換する
ためには、まず、単精度のバイアス付き指数ESから単精
度バイアス値SBを減算し、再び倍精度バイアス値DBを加
算することによって実行できる。この演算はES−SB+DB
であり、ESの2^10,2^,2^8の重みを持つビットは0であ
るので、 ES=0 0 0 ES7 ES6 ES5 ES4 ES3 ES2 ES1 ES0とする
と ED=ES−SB+DB =ES−(00001111111) +(01111111111) =ES+(01110000000) =((000 ES7)−(0111))*2^7 +ES6 ES5 ES4 ES3 ES2 ES1 ES0 ESのES7=1の時、 ED=1000 ES6 ES5 ES4 ES3 ES2 ES1 ES0 ESのES7=0の時、 ED=0111 ES6 ES5 ES4 ES3 ES2 ES1 ES0 これは単精度フォーマットの指数の最上位ビットを倍精
度フォーマットに変換後の指数の最上位ビットに、単精
度フォーマットの最上位ビットの反転を複写して倍精度
フォーマットの2ビット目から4ビット目までの3ビッ
トに生成し、単精度フォーマットの2ビット目以下のビ
ットを倍精度フォーマットの5ビット目以下のビットと
して生成したのと等価である。
この指数拡張は属性を考慮していないため、単精度フ
ォーマットで予約された指数を持つゼロ、非正規化数、
無限大、非数のデータに対してはそれぞれ、倍精度フォ
ーマットのゼロ、非正規化数、無限大、非数には変換さ
れない。しかし、この中で演算を実行しなければならな
いものは非正規化数だけであり、他の数はあらかじめ決
まっている値を出力するだけであるため、たとえ指数が
誤って拡張されていたとしてもタグは正確に生成されて
いるので、タグによって正しい値を出力するように指示
される。
一方、非正規化数は最小指数である予約された指数を
持つが、仮数の省略された整数部を1にした仮数に対す
る指数は最小値+1であり、これは正規化数と同様に拡
張を行った値に対して+1を実行することすなわち、指
数部の最下位ビットに1をセットすることと等価であ
る。したがって、上記拡張論理を非正規化数も対応でき
るようにするために、指数拡張と同時に実行しているタ
グ生成の最小指数のタグを指数拡張した最下位ビットと
論理和をとって、新たに拡張後の最下位ビットとするこ
とによって、演算を実行する必要のある正規化数、非正
規化数に対しては演算に先だって、正確な指数に変換さ
れていることになる。
(2)指数圧縮原理 (1)の指数拡張の逆の変換であり、倍精度フォーマ
ットの指数の最上位ビットを単精度フォーマットに変換
後の指数の最上位ビットに、倍精度フォーマットの5ビ
ット目から11ビット目までの7ビットを、単精度フォー
マットの2ビット目以下のビットとして生成したのと等
価である。
この倍精度から単精度への変換時にオーバフロー、ア
ンダフローが発生した場合には、倍精度の2ビット目か
らビット目までが最上位ビットの反転にならないため、
これを利用してオーバフロー、アンダフローをチェック
することができる。
(3)3ビットのタグを使用した属性毎の処理 (3−1)省略された整数部のビット処理 省略された整数部のビットは、非正規化数およびゼロ
ではゼロ、正規化数では1である。
非正規化数、ゼロ共に指数部が表現し得る最小値であ
るため指数最小値を示すタグが1の時、省略された整数
部のビットは0であり、指数最小値を示すタグが0の
時、省略された整数部のビットは1である。
したがって、指数最小を示すタグの反転を、省略され
た整数部の1ビットとすることによって、仮数演算に使
用する省略したビットのない仮数が得られる。
(3−2)指数、仮数演算部での処理 各演算で、正規化数が入力された場合には演算結果を
出力するが、正規化数以外が入力された場合には、次の
処理を実行することになる。
・非正規化数 省略された整数部を1、指数を最小値+1にして演算
を実行する。
(最小値+1は指数拡張部で処理済みであるため、正
規化数と同様) ・非数 入力の非数をそのまま出力する。
・ゼロ 加減算: 入力Aがゼロの場合には入力Bを出力し、
入力Bがゼロの場合には入力Aを出力する。
乗算 : ゼロを出力する。
除算 :入力Aがゼロの場合には例外を発生し、入力
Bがゼロの場合にはゼロを出力する。
・無限大 加算 : 入力が異符号の場合で両者が無限大の時に
は例外を発生し、その他の場合には無限大を出力する。
減算 : 入力が同符号の場合で両者が無限大の時に
は例外を発生し、その他の場合には無限大を出力する。
乗算 : ゼロとの演算時は例外を発生し、その他の
場合には無限大を出力する。
除算 : 入力Aが無限大の場合にはゼロを出力し、
入力Bが無限大の場合には無限大を出力する。
・2の巾乗 加減算: 演算結果を出力する。
乗算 : 入力Aが2の巾乗の場合には入力Bを出力
し、入力Bが2の巾乗の場合には入力Aを出力する。
除算: 入力Aが2の巾乗の場合には入力Bを出力
し、入力Bが2の巾乗の場合には演算結果を出力する。
・その他 演算結果を出力する。
以上の条件をまとめると、次のことがいえる。
1)加減算でいずれかの入力が2の巾乗、除算で入力B
が2の巾乗の場合は、正規化数の場合に同じ。
2)乗算でいずれかの入力が2の巾乗の場合は加減算の
いずれかの入力がゼロの場合に同じ。
3)乗算でゼロの場合はゼロを出力する。
4)除算で入力Aが無限大の場合は乗算で入力Aがゼロ
の場合(ゼロを出力する場合)に同じ。
したがって、各演算で共通の出力指示を行うために、
次のようにタグを変換した後、出力値を決定する。
1)加減算の入力A,Bおよび除算の入力Bで2の巾乗
(タグが001)を正規化数(タグが000)に変換する。
2)乗算の入力A,Bおよび除算の入力Aで2の巾乗(タ
グが001)をゼロ(タグが101)に変換する。
3)乗算の入力A,Bおよび除算の入力Aでゼロ(タグ10
1)をゼロを出力する専用のタグ(タグが001)に変換す
る。
4)除算の入力Aで無限大(タグが011)を無条件にゼ
ロを出力するタグ(タグが001)に変換する。
2)3)は、乗算の入力A,Bおよび除算の入力Aで仮
数ゼロを示すタグ(タグの第3ビット)が1なら、指数
最小を示すタグ(タグの第1ビット)を反転することに
よって同時に変換可能。
以上の変換を行った後、次に示すように出力値を決定
する。
A)非数または無限大が入力となった場合は非数または
無限大を出力する。
B)入力Aの仮数がゼロ(ゼロまたは2の巾乗)の時は
Bを出力し、入力Bの仮数がゼロ(ゼロまたは2の巾
乗)の時はAを出力する。
C)入力Aが非数の時入力Aの仮数を出力し、入力Bが
非数の時入力Bの仮数を出力する。
D)仮数が0(無限大、2の巾乗、0)の時は仮数にゼ
ロを出力する。
演算の種類を考慮して変換した後の入力A、入力Bに
対するタグをそれぞれAEMIN,AEMAX,AFZERO,BEMIN,BEMA
X,BFZERO、指数ゼロ生成信号をGEZERO、仮数ゼロ生成信
号をGFZERO、指数最大値生成信号をGEMAX、入力Aの指
数出力信号をOUTEA,仮数出力信号をOUTFA,入力Bの指数
出力信号をOUTEB,指数出力信号をOUTFB、真の加算実行
信号をFAADD,真の減算実行信号をFASUB,乗算実行信号を
FMUL,除算実行信号をFDIVとしてA)からD)の出力値
決定条件に基づいて出力指示回路の入出力関係を論理式
で示す。
・GEZERO=(AFZERO+BFZERO) ・((FMUL+FDIV)・(OUTFA+OUTFB)) ・GFZERO=AFZERO+BFZERO ・GEMAX =AEMAX+AEMAX ・OUTFA =((-AEMIN・AEMAX・-AFZERO) +(BEMIN・-BEMAX・BFZERO))-OUTFB ・OUTFB =(-BEMIN・BEMAX・-BFZERO) +(AEMIN・-AEMAX・AFZERO) ・OUTEA =OUTFA・(FDIV+FMUL) ・OUTEB =OUTFB・(FDIV+FMUL) ここで、X・YはXとYの論理積を示し、X+YはX
とYの論理和を示し、-XはXの反転を示す。
この信号を用いて、非数、無限大、ゼロ、2の巾乗が
入力された場合に各信号がどのように生成されるかを示
す。
<加減算> ・入力Aが非数 AEMIN=0,AEMAX=1,AFZERO=0であるため、 GEMAX=1,OUTFB=1,他の信号=0となり、指数最大値
と、入力Aの仮数すなわち非数が出力される。
・入力Bが非数 BEMIN=0,BEMAX=1,BFZERO=0であるため、 GEMAX=1,OUTFB=1,他の信号=0となり、指数最大値
と、入力Aの仮数すなわち非数が出力される。
・入力Aが無限大 AEMIN=0,AEMAX=1,AFZERO=1であるため、 GEMAX=1,GEZERO=1,他の信号=0となり、指数最大
値と、ゼロの仮数すなわち無限大が出力される。
・入力Bが無限大 BEMIN=0,BEMAX=1,BFZERO=1であるため、 GEMAX=1,GEZERO=1,他の信号=0となり、指数最大
値と、ゼロの仮数すなわち無限大が出力される。
・入力Aがゼロ AEMIN=1,AEMAX=0,AFZERO=1であるため、 OUTFB=1,OUTEB=1,GEZERO=1,他の信号=0となり、
入力Bの指数、仮数すなわち入力Bが出力される。
・入力Bがゼロ BEMIN=1,BEMAX=0,BFZERO=1であるため、 OUTFB=1,OUTEB=1,GEZERO=1,他の信号=0となり、
入力Aの指数、仮数すなわち入力Aが出力される。
<乗算> ・入力A、Bが非数 加減算に同じ ・入力Aが無限大 AEMIN=0,AEMAX=1,AFZERO=1であるため、AEMIN=-
0=1として判定する。
GEMAX=1,GEZERO=1,他の信号=0となり、指数最大
値と、ゼロの仮数すなわち無限大が出力される。
・入力Bが無限大 BEMIN=0,BEMAX=1,BFZERO=1であるため、BEMIN=-
0=1として判定する。
GEMAX=1,GEZERO=1,他の信号=0となり、指数最大
値と、ゼロの仮数すなわち無限大が出力される。
・入力Aがゼロ AEMIN=1,AEMAX=0,AFZERO=1であるため、AEMIN=-
1=0として判定する。
GEZERO=1,GFZERO=1,他の信号=0となり、指数最小
値と、ゼロの仮数すなわちゼロが出力される。
・入力Bがゼロ BEMIN=1,BEMAX=0,BFZERO=1であるため、BEMIN=-
1=0として判定する。
GEZERO=1,GFZERO=1,他の信号=0となり、指数最小
値と、ゼロの仮数すなわちゼロが出力される。
・入力Aが2の巾乗 AEMIN=0,AEMAX=0,AFZERO=1であるため、AEMIN=-
0=1として判定する。
OUTFB=1,他の信号=0となり、演算結果の指数、入
力Bの仮数すなわち演算結果が出力される。
・入力Bが2の巾乗 BEMIN=1,BEMAX=0,BFZERO=1であるため、BEMIN=-
0=1として判定する。
OUTFB=1,他の信号=0となり、演算結果の指数、入
力Aの仮数すなわち演算結果が出力される。
<除算> ・入力A、Bが非数 加減算に同じ ・入力Aが無限大 AEMIN=0,AEMAX=1,AFZERO=1であるため、AEMAX=
0として判定する。
GEZERO=1,GFZERO=1,他の信号=0となり、指数最小
値と、ゼロの仮数すなわちゼロが出力される。
・入力Bが無限大 BEMIN=0,BEMAX=1,BFZERO=1であるため、BEMIN=-
0=1として判定する。
GEMAX=1,GEZERO=1,他の信号=0となり、指数最大
値と、ゼロの仮数すなわち無限大が出力される。
・入力Bがゼロ BEMIN=1,BEMAX=0,BFZERO=1であるため、BEMIN=-
1=0として判定する。
GEZERO=1,GFZERO=1,他の信号=0となり、指数最小
値と、ゼロの仮数すなわちゼロが出力される。
・入力Aが2の巾乗 AEMIN=0,AEMAX=0,AFZERO=1であるため、AEMIN=-
0=1として判定する。
OUTFB=1,他の信号=0となり、演算結果の指数、入
力Bの仮数すなわち演算結果が出力される。
その他の場合は全信号が0となり、演算結果の指数お
よび仮数が出力させる。
(3)の3ビットのタグを使用した属性毎の処理に基
づいて、本発明の実施例の浮動小数点演算装置について
加減算、乗算、除算について順に説明する。
ただし、同符号の加算または異符号の減算時には真の
加算、同符号の減算時または異符号の加算時には真の減
算とする。
<<加減算:2ビット以上の正規化シフト、絶対値化の必
要がない場合>> <第1ステップ:フォーマット変換、桁合わせ> [フォーマット変換] 1)入力Aに対する処理 [指数拡張] 指数拡張タグ生成器1に入力Aの上位ビットから11ビ
ット目までのビットを入力して、次の処理を実行する。
I)入力が単精度の場合 ・第3図(a)に示す入力の第1ビット目から第8ビッ
ト目の全ビットがゼロであることを示す信号AEMIN、お
よび全ビットが1であることを示す信号AEMAXを生成す
る。
・第3図(a)に示す第1ビット目から第8ビット目の
データを第3図(b)に示す第1ビット目から第11ビッ
ト目に示すデータのように拡張して11ビットの指数を生
成する。
II)入力が倍精度の場合 ・第2図(b)に示す入力の第1ビット目から第11ビッ
ト目の全ビットがゼロであることを示す信号AEMIN、お
よび全ビットが1であることを示す信号AEMAXを生成す
る。
・第1ビット目から11ビット目までのデータを指数とし
て生成する。
さらに、I)またはII)で生成した指数の最下位ビッ
トとAEMAXの論理和をとって新たに最下位ビットとした1
1ビットのデータをマルチプレクサ3で選択してレジス
タ4に格納する。
[仮数拡張、ゼロ検出] ・仮数拡張器11に入力の第9ビットから最下位ビットま
でを入力して次の処理を実行する。
I)入力が単精度の場合 ・第3図(a)に示す入力の第9ビットから第31ビット
を出力の最上位ビットから数えて1ビット目から23ビッ
ト目までのそれぞれのビットとして生成し、出力の最上
位ビットから数えて24ビット目から52ビット目までのそ
れぞれのビットに0を生成する。
II)入力が倍精度の場合 ・第2図(b)に示す入力の第12ビットから第63ビット
までのデータをそのまま仮数として生成する。
さらに、I)またはII)で生成した仮数をレジスタ13
に格納するとともに、仮数ゼロ検出回路24で、仮数拡張
器11の出力の全ビットがゼロであることを示す信号AFZE
ROを生成する。
2)入力Bに対する処理 入力Aが入力Bに、信号AEMAXがBEMAXに、AEMINがBEM
INに、AFZEROがBFZEROになるだけで、入力Aの処理に同
じ。
[桁合わせ] ・指数加減算器6で、レジスタ5の出力からレジスタ4
の出力を減算し、レジスタ7に格納する。
・マルチプレクサ15で、指数加減算器6の符号が正の場
合にレジスタ14を選択し、負の場合にレジスタ13の値を
選択し、バレルシフタ17でレジスタ7出力の絶対値分の
右シフトを実行してレジスタ18に格納する。
・マルチプレクサ16で、指数加減算器6の符号が正の場
合にレジスタ13を選択し、負の場合にレジスタ14の値を
選択してレジスタ19に格納する。
[出力指示] I)指数に対する指示 ・出力指示回路26で、入力A、Bのそれぞれ3ビットの
タグから、出力を指示するための信号GEZERO,GFZERO,GE
MAX,OUTFA,OUTFB,OUTEA,OUTEBを生成する。
II)仮数に対する指示 ・出力指示回路26の出力のOUTFAが1の時、レジスタ13
の入力Aを、OUTFBが1の時、レジスタ14の入力Bを、
その他の場合にLR1シフタ22出力の演算結果の仮数また
は、全ビットゼロの値を出力することをマルチプレクサ
23に指示する。
<第2ステップ:演算、フォーマット変換> [仮数演算] ・仮数加減算器20で、真の加算時はレジスタ18の出力
と、レジスタ19の出力を加算し、真の減算時はレジスタ
19の出力からレジスタ19の出力を減算し、レジスタ21に
格納する。
・LR1シフタ22で、レジスタ21の出力の2^1が1の時に右
に1ビットシフトし、レジスタ21の2^1、2^0、2^−1が
全て0の場合に左に1ビットシフトすることによって、
正規化する。
[指数演算] ・指数加減算器6で、ステップ1の桁合わせ時の指数演
算の結果の符号が正の場合にはレジスタ5に対して、符
号が負の場合にはレジスタ4に対して、LR1シフタ22で
右1ビットシフトを実行した場合には1の減算を、左1
ビットシフトを実行した場合には1の加算を実行し、そ
の他の場合にはそのままの値をレジスタ7に格納する。
[符号生成] ・符号生成回路29で、第5図に従って、演算結果に対す
る符号を生成する。
[フォーマット変換] ・出力指示回路26の出力のGEZERO=1の時はレジスタ7
でゼロを生成し、GEMAX=1の時は反転器8で、レジス
タ7の出力を反転する。
・出力指示回路26の出力のOUTEAが1の時、レジスタ4
の入力Aを、OUTEBが1の時、レジスタ5の入力Bを、
その他の場合に反転器8出力である演算結果の指数また
は最小指数または最大指数を出力することを、マルチプ
レクサ9に指示する。
・マルチプレクサ9で、出力指示手段27がA側データの
出力を指示した場合(OUTEA=1)にはレジスタ4の出
力を、B側データの出力を指示した場合(OUTEB=1)
にはレジスタ5の出力を、それ以外の場合には反転器8
の出力を選択する。
・マルチプレクサ23で、出力指示手段27がA側データの
出力を指示した場合(OUTFA=1)にはレジスタ13の出
力を、B側データの出力を指示した場合(OUTFB=1)
にはレジスタ14の出力を、それ以外の場合にはレジスタ
21の出力を選択する。
I)出力が単精度の場合 ・マルチプレクサ9の出力の最上位ビットを出力の最上
位ビットとして生成し、上位ビットから数えて5ビット
目から11ビット目までを出力の2ビット目から8ビット
目までに生成し、マルチプレクサ23の出力を9ビット目
から31ビット目までに生成する。
II)出力が倍精度の場合 ・マルチプレクサ9の出力の全ビットを最上位ビットか
ら11ビット目までに生成し、マルチプレクサ23の出力を
12ビット目から63ビット目までに生成する。
<<加減算:2ビット以上の正規化シフト、絶対値化が必
要な場合>> <第1ステップ:フォーマット変換、桁合わせ> 2ビット以上の正規化シフト、絶対値化が必要ない場
合に同じ。
<第2ステップ:演算> [仮数演算] 2ビット以上の正規化シフト、絶対値化が必要ない場
合に同じ。
[指数演算] 2ビット以上の正規化シフト、絶対値化が必要ない場
合に同じ。
[符号生成] <第3ステップ:正規化> [正規化] ・マルチプレクサ15で、レジスタ21の出力を選択し、バ
レルシフタ17で正規化を実行してレジスタ18に格納す
る。
<第4ステップ:絶対値化> [絶対値化] ・仮数加減算器20で、レジスタ18の値が負の場合に絶対
値化した値を、正の場合にはそのままの値をレジスタ21
に格納し、LR1シフタ22に出力する。
・LR1シフタ22で、レジスタ21の出力の2^1が1の時に右
に1ビットシフトし、レジスタ21の2^1、2^0、2^−1が
全て0の場合に左に1ビットシフトすることによって、
正規化する。
[指数演算] ・指数加減算器6で、ステップ1の桁合わせ時の指数演
算の結果の符号が正の場合にはレジスタ5に対して、符
号が負の場合にはレジスタ4に対して、LR1シフタ22で
右1ビットシフトを実行した場合には1の減算を、左1
ビットシフトを実行した場合には1の加算を実行し、そ
の他の場合にはそのままの値をレジスタ7に格納する。
[フォーマット変換] 2ビット以上の正規化シフト、絶対値化が必要ない場
合に同じ。
<<乗算:入力が2の巾乗でない場合>> <第1ステップ:フォーマット変換、演算> [フォーマット変換] [指数拡張] [仮数拡張、ゼロ検出] ・加減算に同じ。
[演算] [指数演算] ・指数加減算器6で、レジスタ5とレジスタ4の出力を
加算し、レジスタ7に格納する。
[仮数演算] ・乗算制御回路27が、レジスタ13の最下位ビットが1の
場合にはマルチプレクサ16でレジスタ14を選択すること
を指示し、レジスタ13の最下位ビットが0の場合には定
数0を選択することを指示する。
・マルチプレクサ15で、レジスタ13を選択し、バレルシ
フタ17を経由してレジスタ18に格納するとともに、マル
チプレクサ16で乗算制御回路27が指示した値を選択して
てレジスタ19に格納する。
・仮数加減算器20で、レジスタ18とレジスタ19の値を加
算し、レジスタ21に格納する。
[出力指示] I)指数に対する指示 ・出力指示回路26で、入力A、Bのそれぞれ3ビットの
タグから、出力を指示するための信号GEZERO,GFZERO,GE
MAX,OUTFA,OUTFB,OUTEA,OUTEBを生成する。
II)仮数に対する指示 ・出力指示回路26の出力のOUTFAが1の時、レジスタ13
に格納された入力Aを、OUTFBが1の時、レジスタ14の
入力Bを、その他の場合にLR1シフタ22出力の演算結果
の仮数または、全ビットゼロの値を出力することをマル
チプレクサ23に指示する。
<第2ステップ:仮数演算と指数のバイアス補正> [指数演算] ・マルチプレクサ3でレジスタ7を選択し、指数加減算
器6で、レジスタ4の値からレジスタ5で生成した倍精
度バイアス値(01111111111)を減算し、レジスタ7に
格納する。
[仮数演算] ・乗算制御回路27が、レジスタ13の前ステップで判定に
用いたビットの1ビット上位に位置するビットが1の場
合にはマルチプレクサ16でレジスタ14を選択することを
指示し、前ステップで判定に用いたビットの1ビット上
位に位置するビットが0の場合には定数0を選択するこ
とを指示する。
・マルチプレクサ15で、レジスタ21を選択し、バレルシ
フタ17で1ビット左にシフトしてレジスタ18に格納する
とともに、マルチプレクサ16で乗算制御回路27が指示し
た値を選択してレジスタ19に格納する。レジスタ13の最
下位ビットが1の場合にはマルチプレクサ16でレジスタ
14を選択し、レジスタ13の最下位ビットが0の場合には
定数0を選択してレジスタ19に格納する。
・マルチプレクサ15の値をバレルシフタ17を経由してレ
ジスタ1に格納する。
・仮数加減算器20で、レジスタ18とレジスタ19の値を加
算し、レジスタ21に格納する。
<第iステップ(i=3〜52):仮数演算> [仮数演算] ・乗算制御回路27が、レジスタ13の前ステップで判定に
用いたビットの1ビット上位のビットが1の場合にはマ
ルチプレクサ16でレジスタ14を選択することを指示し、
前ステップで判定に用いたビットの1ビット上位のビッ
トが0の場合には定数0を選択することを指示する。
・マルチプレクサ15で、レジスタ21を選択し、バレルシ
フタ17で1ビット左にシフトしてレジスタ18に格納する
とともに、マルチプレクサ16で乗算制御回路27が指示し
た値を選択してレジスタ19に格納する。レジスタ13の最
下位ビットが1の場合にはマルチプレクサ16で、レジス
タ14を選択し、レジスタ13の最下位ビットが0の場合に
は定数0を選択してレジスタ19に格納する。
・マルチプレクサ15の値をバレルシフタ17を経由してレ
ジスタ18に格納する。
・仮数加減算器20で、レジスタ18とレジスタ19の値を加
算し、レジスタ21に格納する。
<第53ステップ:演算、フォーマット変換> [仮数演算] ・乗算制御回路27が、レジスタ13の前ステップで判定に
用いたビットの1ビット上位に位置するビットが1の場
合にはマルチプレクサ16でレジスタ14を選択することを
指示し、前でステップで判定に用いたビットの1ビット
上位のビットが0の場合には定数0を選択することを指
示する。
・マルチプレクサ15で、レジスタ21を選択し、バレルシ
フタ17で1ビット左にシフトしてレジスタ18に格納する
とともに、マルチプレクサ16で乗算制御回路27が指示し
た値を選択してレジスタ19に格納する。レジスタ13の最
下位ビットが1の場合にはマルチプレクサ16で、レジス
タ14を選択し、レジスタ13の最下位ビットが0の場合に
は定数0を選択してレジスタ19に格納する。
・マルチプレクサ15の値をバレルシフタ17を経由してレ
ジスタ18に格納する。
・仮数加減算器20で、レジスタ18とレジスタ19の値を加
算し、レジスタ21に格納する。
・LR1シフタ22で、レジスタ21の出力の2^1が1の時に右
に1ビットシフトし、レジスタ21の2^1、2^0、2^−1が
全て0の場合に左に1ビットシフトすることによって、
正規化する。
[指数演算] ・指数加減算器6で、マルチプレクサ3で選択したレジ
スタ7の値に対して、LR1シフタ22で右1ビットシフト
を実行した場合には1の加算を実行し、その他の場合に
はそのままの値をレジスタ7に格納する。
[符号生成] [フォーマット変換] ・加減算に同じ。
<<乗算:入力が2の巾乗の場合>> <第1ステップ:フォーマット変換、演算> [フォーマット変換] [指数拡張] [仮数拡張、ゼロ検出] ・加減算に同じ。
[演算] [指数演算] [仮数演算] ・入力が2の巾乗でない場合の乗算に同じ。
[出力指示] I)指数に対する指示 ・出力指示回路26で、入力A、Bのそれぞれ3ビットの
タグから、出力を指示するための信号GEZERO,GFZERO,GE
MAX,OUTFA,OUTFB,OUTEA,OUTEBを生成する。
II)仮数に対する指示 ・出力指示回路26の出力のOUTFAが1の時、レジスタ13
の入力Aを、OUTFBが1の時、レジスタ14の入力Bを、
その他の場合にLR1シフタ22出力の演算結果の仮数また
は、全ビットゼロの値を出力することをマルチプレクサ
23に指示する。
出力指示回路26で、OUTFA=1またはOUTFB=1である
ため、演算を第2ステップで終了することを指示する。
<第2ステップ:出力値生成と指数のバイアス補正、フ
ォーマット変換> [指数演算] ・マルチプレクサ3でレジスタ7を選択し、指数加減算
器6で、レジスタ4の値からレジスタ5で生成した倍精
度バイアス値(01111111111)を減算し、レジスタ7に
格納する。
[符号生成] ・加減算に同じ。
[フォーマット変換] ・出力指示回路26の出力のOUTEA=0,OUTEB=0であるた
め、レジスタ7に格納されている演算結果に対する符号
を出力することを、マルチプレクサ9に指示する。
・マルチプレクサ9で、レジスタ7の値である反転器8
の出力を選択する。
・マルチプレクサ23で、出力指示手段27がA側データの
出力を指示した場合(OUTFA=1)にはレジスタ13の出
力を、B側データの出力を指示した場合(OUTFB=1)
にはレジスタ14の出力を選択する。
・以下の変換は加減算に同じ。
<<除算:入力が2の巾乗でない場合>> <第1ステップ:フォーマット変換、演算> [フォーマット変換] [指数拡張] [仮数拡張、ゼロ検出] ・加減算に同じ。
[演算] [指数演算] ・指数加減算器6で、レジスタ5からレジスタ4の出力
を減算し、レジスタ7に格納する。
[仮数演算] ・マルチプレクサ15で、レジスタ13を選択し、バレルシ
フタ17を経由してレジスタ18に格納するとともに、マル
チプレクサ16でレジスタ14を選択してレジスタ19に格納
する。
・仮数加減算器20で、レジスタ18の値からレジスタ19の
値を減算し、レジスタ21に格納する。
[商生成] ・商生成回路30で、仮数加減算器20の出力の符号が正の
時、商の1ビットとして1を生成し、出力の符号が負の
時、商の1ビットとして0を生成して最下位ビットから
入力する。
[出力指示] I)指数に対する指示 ・出力指示回路26で、入力A、Bのそれぞれ3ビットの
タグから、出力を指示するための信号GEZERO,GFZERO,GE
MAX,OUTFA,OUTFB,OUTEA,OUTEBを生成する。
II)仮数に対する指示 ・出力指示回路26の出力のOUTFAが1の時、レジスタ13
の入力Aを、OUTFBが1の時、レジスタ14の入力Bを、
その他の場合にLR1シフタ22出力の演算結果の仮数また
は、全ビットゼロの値を出力することをマルチプレクサ
23に指示する。
<第2ステップ:仮数演算と指数のバイアス補正> [指数演算] ・マルチプレクサ3でレジスタ7を選択し、指数加減算
器6で、レジスタ4の値とレジスタ5で生成した倍精度
バイアス値(01111111111)を加算し、レジスタ7に格
納する。
[仮数演算] ・マルチプレクサ15で、レジスタ21を選択し、バレルシ
フタ17で1ビット左にシフトしてレジスタ18に格納する
とともに、マルチプレクサ16でレジスタ14を選択してレ
ジスタ19に格納する。
・前ステップの仮数加減算器20の出力が負のときはレジ
スタ19の値にレジスタ18の値を加算し、仮数加減算器20
の出力が正のときはレジスタ19の値をレジスタ18の値か
ら減算してレジスタ21に格納する。
[商生成] ・商生成回路30で、仮数加減算器20の出力の符号が正の
時、商の1ビットとして1を生成し、出力の符号が負の
時、商の1ビットとして0を生成して前ステップで生成
した商の最下位ビット側に付加する。
<第iステップ(i=3〜53):仮数演算> [仮数演算] [商生成] ・第2ステップに同じ。
<第54ステップ:演算、フォーマット変換> [仮数演算] ・マルチプレクサ15で、商生成回路30の出力を選択し、
バレルシフタ17を経由してレジスタ18に格納するととも
に、マルチプレクサ16で定数0を選択してレジスタ19に
格納する。
・仮数加減算器20で、レジスタ18とレジスタ19の値を加
算し、レジスタ21に格納する。
・LR1シフタ22で、レジスタ21の出力の2^1が1の時に右
に1ビットシフトし、レジスタ21の2^1、2^0、2^−1が
全て0の場合に左に1ビットシフトすることによって、
正規化する。
[指数演算] ・指数加減算器6で、マルチプレクサ3で選択したレジ
スタ7の値に対して、LR1シフタ22で右1ビットシフト
を実行した場合には1の加算を実行し、その他の場合に
はそのままの値をレジスタ7に格納する。
[符号生成] [フォーマット変換] ・加減算に同じ。
<<乗算:入力が2の巾乗の場合>> <第1ステップ:フォーマット変換、演算> [フォーマット変換] [指数拡張] [仮数拡張、ゼロ検出] ・加減算に同じ。
[演算] [指数演算] [仮数演算] [商生成] ・入力が2の巾乗でない場合の除算に同じ。
[出力指示] I)指数に対する指示 ・出力指示回路26で、入力A、Bのそれぞれ3ビットの
タグから、出力を指示するための信号GEZERO,GFZERO,GE
MAX,OUTFA,OUTFB,OUTEA,OUTEBを生成する。
II)仮数に対する指示 ・出力指示回路26の出力のOUTFAが1の時、レジスタ13
の入力Aを、OUTFBが1の時、レジスタ14の入力Bを、
その他の場合にLR1シフタ22出力の演算結果の仮数また
は、全ビットゼロの値を出力することをマルチプレクサ
23に指示する。
出力指示回路26で、OUTFA=1またはOUTFB=1である
ため、演算を第2ステップで終了することを指示する。
<第2ステップ:出力値生成と指数のバイアス補正、フ
ォーマット変換> [指数演算] [符号生成] ・入力が2の巾乗でない場合の除算に同じ。
[フォーマット変換] ・出力指示回路26の出力のOUTEA=0,OUTEB=0であるた
め、レジスタ7に格納されている演算結果に対する符号
を出力することを、マルチプレクサ9に指示する。
・マルチプレクサ9で、レジスタ7の値である反転器8
の出力を選択する。
・マルチプレクサ23で、出力指示手段27がA側データの
出力を指示した場合(OUTFA=1)にはレジスタ13の出
力を、B側データの出力を指示した場合(OUTFB=1)
にはレジスタ14の出力を選択する。
・以下の変換は加減算に同じ。
以上のように、本実施例によれば、符号生成または仮
数演算または指数演算と並列に5つの属性を示す3ビッ
トの信号を生成し、3ビットの信号によって指数の最小
値、指数の最大値、仮数の全ビットゼロの値を生成する
かまたは、入力Aまたは入力Bを出力することを判定す
るため、数値を示していない予約されたデータが入力と
なった場合でも、正確に演算結果を出力するため、小さ
いハードウエアで、高速な処理が可能である。
なお、本実施例では繰り返し型の乗算、除算アルゴリ
ズムを用いて加減算器で演算を実行する回路を例に挙げ
て説明したが、乗算器、除算器を用いる構成にすること
も可能であることは言うまでもない。
発明の効果 以上説明したように、第1の発明によれば、指数最小
のタグが省略された整数部の1ビットと、指数演算部に
入力する指数の最下位ビットを決定し、入力のうち少な
くとも一方の指数最大のタグが1の場合は出力の指数と
して表現し得る最大値(全ビットが1)を生成し、入力
のうちの少なくとも一方の仮数ゼロを示すタグが1であ
る場合には仮数として全ビットが0である値を生成し、
非数が入力された場合には非数を出力し、入力Aにゼロ
が入力された場合には入力Bを出力し、入力Bにゼロが
入力された場合には入力Aを出力するように制御するこ
とによって、3ビットのタグから入力の各属性に応じて
演算結果以外のあらかじめ定まった数を出力する場合の
高速な処理が可能となる。
また、以上説明したように、第2および第3および第
4および第5の発明によれば、乗除算において乗数もし
くは被乗数もしくは除数が2の巾乗であるという判断を
前記3ビットのタグを用いて検出でき、しかも、加減算
で2つの入力のうちの一方がゼロである場合の仮数部の
処理と乗除算において乗数もしくは被乗数もしくは除数
が2の巾乗である場合の仮数の処理が同一であることに
注目して、両者の出力指示を共通化することができる。
また、乗除算において乗数もしくは被乗数もしくは除数
が2の巾乗である場合または乗数もしくは被乗数もしく
は非除数がゼロの場合には仮数の演算を中断してあらか
じめ定まった値を出力することによって、無駄な動作を
なくした高速演算が実行できる。
また、以上説明したように、第6の発明によれば、異
なるフォーマットのデータが入力された場合でも、指数
部、仮数部をフォーマット変換専用の小さいハードウエ
アを用いて、小さい方のフォーマットから大きい方のフ
ォーマットへの変換を論理的な拡張のみで高速に実行し
た後、同じステップ内で演算を開始することができ、ま
た、演算終了後も同じステップ内で大きい方のフォーマ
ットから小さい方のフォーマットへの変換を論理的な圧
縮のみで高速に実行して演算を終了することができ、実
用的効果は大きい。
【図面の簡単な説明】
第1図は本発明の実施例における浮動小数点演算装置の
ブロック図、第2図は単精度、倍精度データのフォーマ
ットを示す図、第3図は単精度フォーマットから倍精度
フォーマットへの変換論理を示す図、第4図は倍精度フ
ォーマットから単精度フォーマットへの変換論理を示す
図、第5図は符号生成回路29の入出力関係図である。 1、2……指数拡張、タグ生成器、3、9、15、16、23
……マルチプレクサ、4、5、7、13、14、18、19、21
……レジスタ、6……指数加減算器、8……反転器、1
1、12……仮数拡張器、17……バレルシフタ、20……仮
数加減算器、22……LR1シフタ、24、25……仮数ゼロ検
出回路、26……出力指示回路、27……乗算制御回路、28
……データ圧縮器、29……符号生成回路。

Claims (8)

    (57)【特許請求の範囲】
  1. 【請求項1】符号部と指数部と整数桁が省略されて小数
    桁のみの仮数部とからなる浮動小数点数で表現される少
    なくとも1つの入力に対して、前記入力の符号部と指定
    される演算の種類とから演算結果の符号部を生成する符
    号生成手段と、前記入力の指数部を前記演算の種類に従
    って演算し演算結果の指数部を生成する指数演算手段
    と、前記入力の仮数部を前記演算の種類に従って演算し
    演算結果の仮数部を生成する仮数演算手段と、前記入力
    の指数部の値が前記指数部が表現し得る最小値であるこ
    とを検出しその結果を保持する第1の手段と、前記入力
    の指数部の値が前記指数部が表現し得る最大値であるこ
    とを検出しその結果を保持する第2の手段と、前記入力
    の仮数部の全ビットが0であることを検出しその結果を
    保持する第3の手段とを備え、 前記第1から第3の手段の少なくとも1つにおける検出
    および保持の動作が、前記符号生成手段、前記指数演算
    手段、前記仮数演算手段の少なくとも1つにおける処理
    と並列に行われることを特徴とする浮動小数点演算装
    置。
  2. 【請求項2】符号部と指数部と整数桁が省略されて小数
    桁のみの仮数部とからなる浮動小数点数で表現される乗
    数および被乗数に対して、前記乗数と前記被乗数の積の
    符号を生成する符号生成手段と、前記積の仮数部を生成
    する仮数演算手段と、前記積の指数部を生成する指数演
    算手段と、 前記乗数および前記被乗数の少なくとも1つの指数部の
    値が前記指数部が表現し得る最大値または最小値でなく
    かつ仮数部の全ビットが0であることを検出する検出手
    段と、前記検出手段が前記乗数の指数部の値が前記指数
    部が表現し得る最大値または最小値でなくかつ前記乗数
    の仮数部の全ビットが0であることを検出した場合にお
    ける前記被乗数の仮数部を出力する動作および前記検出
    手段が前記被乗数の指数部の値が前記指数部が表現し得
    る最大値または最小値でなくかつ前記被乗数の仮数部の
    全ビットが0であることを検出した場合における前記乗
    数の仮数部を出力する動作の少なくとも一方の動作を行
    う仮数部出力手段とを備えた浮動小数点演算装置。
  3. 【請求項3】符号部と指数部と整数桁が省略されて小数
    桁のみの仮数部とからなる浮動小数点数で表現される乗
    数および被乗数に対して、前記乗数と前記被乗数の積の
    符号を生成する符号生成手段と、前記積の仮数部を生成
    する仮数演算手段と、前記積の指数部を生成する指数演
    算手段と、前記乗数および前記被乗数の少なくとも1つ
    の指数部の値が前記指数部が表現し得る最小値でかつ仮
    数部の全ビットが0であることを検出する検出手段と、
    前記検出手段が前記乗数の指数部の値が前記指数部が表
    現し得る最小値でかつ前記乗数の仮数部の全ビットが0
    であることを検出した場合におけるゼロを出力する動作
    および前記検出手段が前記被乗数の指数部の値が前記指
    数部が表現し得る最小値でかつ前記被乗数の仮数部の全
    ビットが0であることを検出した場合におけるがゼロを
    出力する動作の少なくとも一方の動作を行う仮数部出力
    手段とを備えた浮動小数点演算装置。
  4. 【請求項4】符号部と指数部と整数桁が省略されて小数
    桁のみの仮数部とからなる浮動小数点数で表現される除
    数および被除数に対して、前記除数と前記被除数の商の
    符号を生成する符号生成手段と、前記商の仮数部を生成
    する仮数演算手段と、前記商の指数部を生成する指数演
    算手段と、前記除数の指数部の値が前記指数部が表現し
    得る最大値または最小値でなくかつ仮数部の全ビットが
    0であることを検出する検出手段と、前記検出手段が前
    記除数の指数部の値が前記指数部が表現し得る最大値ま
    たは最小値でなくかつ前記除数の仮数部の全ビットが0
    であることを検出した場合における前記被除数の仮数部
    を出力する動作を行う仮数部出力手段とを備えた浮動小
    数点演算装置。
  5. 【請求項5】符号部と指数部と整数桁が省略されて小数
    桁のみの仮数部とからなる浮動小数点数で表現される除
    数および被除数に対して、前記除数と前記被除数の商の
    符号を生成する符号生成手段と、前記商の仮数部を生成
    する仮数演算手段と、前記商の指数部を生成する指数演
    算手段と、前記被除数の指数部の値が前記指数部が表現
    し得る最小値でかつ仮数部の全ビットが0であることを
    検出する検出手段と、前記検出手段が前記被除数の指数
    部の値が前記指数部が表現し得る最小値でかつ前記被除
    数の仮数部の全ビットが0であることを検出した場合に
    おけるゼロを出力する動作を行う仮数部出力手段とを備
    えた浮動小数点演算装置。
  6. 【請求項6】前記検出手段における検出の動作が、前記
    符号生成手段、前記指数演算手段、前記仮数演算手段の
    少なくとも1つのおける処理と並列に行われることを特
    徴とする請求項2から5記載の浮動小数点演算装置。
  7. 【請求項7】1ビットの符号部と最上位ビットが0で他
    のビットが1である8ビットの数(01111111)によって
    バイアスされた8ビットの指数部と整数桁が省略されて
    小数桁のみの23ビットの仮数部とによって表現される単
    精度浮動小数点形式の入力に対して、前記入力の指数部
    の最上位ビットを出力の最上位ビットとして生成し、前
    記入力の指数部の最上位ビットの反転を出力の最上位ビ
    ットから数えて2ビット目から4ビット目までの3ビッ
    トとして複写して生成し、前記入力の指数部の最上位ビ
    ットから数えて2ビット目から8ビット目までのそれぞ
    れのビットを出力の最上位ビットから数えて5ビット目
    から11ビット目までのそれぞれのビットとして生成する
    指数拡張手段と、前記入力の仮数部のそれぞれのビット
    を出力の最上位ビットから数えて1ビット目から23ビッ
    ト目までのそれぞれのビットとして生成し、出力の最上
    位ビットから数えて24ビット目から52ビット目までのそ
    れぞれのビットに0を生成する仮数拡張手段とを備え、
    前記入力の符号部と前記指数拡張手段の出力および前記
    仮数拡張手段の出力とによって、1ビットの符号部と最
    上位ビットが0で他のビットが1である11ビットの数
    (01111111111)によってバイアスされた11ビットの指
    数部と整数桁が省略され、小数桁のみの52ビットの仮数
    部とによって表現される倍精度浮動小数点形式の出力へ
    変換することを特徴とする浮動小数点演算装置。
  8. 【請求項8】1ビットの符号部と最上位ビットが0で他
    のビットが1である11ビットの数(01111111111)によ
    ってバイアスされた11ビットの指数部と整数桁が省略さ
    れて小数桁のみの52ビットの仮数部とによって表現され
    る倍精度浮動小数点形式の入力に対して、前記入力の指
    数部の最上位ビットもしくは最上位ビットから数えて4
    ビット目のビットの反転のいずれか一方を出力の最上位
    ビットとして生成し、前記入力の指数部の最上位ビット
    から数えて5ビット目から11ビット目までのそれぞれの
    ビットを出力の最上位ビットから数えて2ビット目から
    8ビット目までの7ビットのそれぞれのビットとして生
    成する指数圧縮手段と、前記入力の仮数部の最上位ビッ
    トから数えて1ビット目から23ビット目までのそれぞれ
    のビットを出力のそれぞれのビットとして生成する仮数
    圧縮手段とを備え、前記入力の符号部と前記指数圧縮手
    段の出力および前記仮数圧縮手段の出力とによって、1
    ビットの符号部と最上位ビットが0で他のビットが1で
    ある8ビットの数(01111111)によってバイアスされた
    8ビットの指数部と整数桁が省略されて小数桁のみの23
    ビットの仮数部とによって表現される単精度浮動小数点
    形式の出力へ変換することを特徴とする浮動小数点演算
    装置。
JP2338258A 1990-11-30 1990-11-30 浮動小数点演算装置 Expired - Fee Related JP2993119B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2338258A JP2993119B2 (ja) 1990-11-30 1990-11-30 浮動小数点演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2338258A JP2993119B2 (ja) 1990-11-30 1990-11-30 浮動小数点演算装置

Publications (2)

Publication Number Publication Date
JPH04205419A JPH04205419A (ja) 1992-07-27
JP2993119B2 true JP2993119B2 (ja) 1999-12-20

Family

ID=18316426

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2338258A Expired - Fee Related JP2993119B2 (ja) 1990-11-30 1990-11-30 浮動小数点演算装置

Country Status (1)

Country Link
JP (1) JP2993119B2 (ja)

Also Published As

Publication number Publication date
JPH04205419A (ja) 1992-07-27

Similar Documents

Publication Publication Date Title
US6529928B1 (en) Floating-point adder performing floating-point and integer operations
JP6001276B2 (ja) 浮動小数点加算を実行するための装置および方法
US5027308A (en) Circuit for adding/subtracting two floating point operands
US8499017B2 (en) Apparatus and method for performing fused multiply add floating point operation
US10019231B2 (en) Apparatus and method for fixed point to floating point conversion and negative power of two detector
US5222037A (en) Floating-point processor for performing an arithmetic operation on fixed-point part data with high speed rounding of a result
US5010508A (en) Prenormalization for a floating-point adder
US20120011181A1 (en) Decimal floating-point fused multiply-add unit
US5040138A (en) Circuit for simultaneous arithmetic calculation and normalization estimation
JP2835153B2 (ja) 高基数除算器
KR100203468B1 (ko) 부동소수점수를 위한 산술연산장치
US4594680A (en) Apparatus for performing quadratic convergence division in a large data processing system
JPH04283831A (ja) 除算器
JP4273071B2 (ja) 除算・開平演算器
US5818745A (en) Computer for performing non-restoring division
KR19980082906A (ko) 부동 소수점 숫자의 정수형으로의 변환 방법
JPH02294731A (ja) 浮動小数点数演算処理装置及び除数倍数生成装置
KR102459011B1 (ko) 선두 제로 예측
JP2993119B2 (ja) 浮動小数点演算装置
JP2517064B2 (ja) 非正規化数の処理方式
JPS63158626A (ja) 演算処理装置
JP4428778B2 (ja) 演算装置及び演算方法並びに計算装置
JPS5960637A (ja) 浮動小数点演算装置
JPH0778724B2 (ja) 除算器
JP3100868B2 (ja) 浮動小数点数のための算術演算装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees