JPH06236257A - データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置 - Google Patents

データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置

Info

Publication number
JPH06236257A
JPH06236257A JP5345648A JP34564893A JPH06236257A JP H06236257 A JPH06236257 A JP H06236257A JP 5345648 A JP5345648 A JP 5345648A JP 34564893 A JP34564893 A JP 34564893A JP H06236257 A JPH06236257 A JP H06236257A
Authority
JP
Japan
Prior art keywords
exponent
mantissa
floating point
result
data
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.)
Pending
Application number
JP5345648A
Other languages
English (en)
Inventor
David R Bearden
デイビッド・ア−ル・ベアデン
Raymond L Vargas
レイモンド・エル・ヴァ−ガス
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.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
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 Motorola Inc filed Critical Motorola Inc
Publication of JPH06236257A publication Critical patent/JPH06236257A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3856Operand swapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49936Normalisation mentioned as feature only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding

Landscapes

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

Abstract

(57)【要約】 【目的】 2つのデータ・オペランドを用いる浮動小数
点加算/減算を実行ユニット100によって実行中に、
後正規化を行う方法および装置。 【構成】 実行ユニット100は、第1および第2浮動
小数点データ・オペランドの仮数部を加算して、前正正
規化仮数和を生成する。実行ユニット100はクリティ
カル・パス遅延を最小限に抑えて、高性能な浮動小数点
演算を可能にし、同時に論理を低減する。オーバフロー
によるキャリーアウトの場合に特別な処理で64ビット
値として前正規化仮数和を処理せずに、浮動小数点加算
器100は前正規化仮数和を65ビット値として処理
し、最上位ビットは桁上げ出力となる。初期指数値を条
件付きで繰り上げずに、初期指数値は常に繰り上げられ
る。従って、浮動小数点加算器ユニット100は正規化
用および丸め用の指数調整をより高速に行うことができ
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般に、データ・プロ
セッサに関し、さらに詳しくは、浮動小数点演算を実行
するデータ・プロセッサに関する。
【0002】
【従来の技術】最新のマイクロプロセッサの設計では、
シングル・チップ上に特定演算用実行ユニット(operati
on-specific execution units)(例えば、画素処理ユニ
ット,浮動小数点除算器および乗算器)を集積する傾向
にある。これらの特定演算用実行ユニットは特定タスク
を実行するように調整されているので、これらを利用す
ることによってマイクロプロセッサの総合性能が一般に
改善される。高性能化への要求は特に浮動小数点演算に
おいて顕著であり、一般に優れた浮動小数点性能はマイ
クロプロセッサの競争力にとって重要である。浮動小数
点演算に伴う問題点として、浮動小数点加算および減算
の実行における仮数オーバフロー(mantissa overflow)
の処理,仮数後正規化(mantissa postnormalization)お
よび指数調整(exponent adjustment) がある。本発明
は、論理を簡単にし、かつクリティカル・パス(critic
al path)を除去する統一された方法で、これらの機能を
実行する方法を提供する。
【0003】浮動小数点加算および減算のアルゴリズム
は周知である。所要演算は次のような5段階で実行され
る。(1)オペランドを整列(align) する;(2)2つ
の仮数を加算/減算する;および(3)後正規化を行
う;ただし(a)加算/減算の結果がオーバフローする
と、仮数を右に1ビット桁シフトして、指数を繰り上げ
る;あるいは(b)左にシフトし、先行ゼロの数に等し
い量だけ指数を繰り下げることにより加算/減算の先行
ゼロを除去する;および(4)丸めモード(rounding mo
de) に基づいて後正規化段からの結果を丸めることによ
って丸め演算を行う;その結果、仮数がオーバフローし
た場合、右に一桁シフトし、中間指数(intermediate ex
ponent) を繰り上げる。最後に、アンダフロー/オーバ
フローについて結果がチェックされる。
【0004】図1は、浮動小数点加算/減算を行う従来
の浮動小数点加算器ユニット32を有するデータ処理シ
ステム10を示す。図2には、既知の浮動小数点加算器
ユニット32のブロック図を示す。一般に、オペランド
選択/整列論理36は、ソース・バス33から受け取ら
れる2つの浮動小数点数(OPERAND A,OPE
RAND B)の2進小数点を整列し、そのため浮動小
数点数の指数は大きさが等しくなる。これは、小さいほ
うの指数を有する浮動小数点数の仮数を、2つの浮動小
数点数の指数差の大きさに等しいビット小数点の数だけ
右にシフトすることによって行われる。適切に整列され
た仮数値は仮数加算器44に入力するように示されてお
り、大きい方の指数は初期指数結果として初期指数マル
チプレクサ(initial exponent multiplexor)によって選
択される。オペランド選択/整列論理36は仮数値(M
ANTAおよびMANTB)を入れ替え(swap)て、有効
減算の場合に、小さい方の仮数が大きい方の仮数値から
減算されることを保証する。これにより、仮数加算器4
4からの結果は常に正となり、従って補数をとる必要が
なくなる。仮数加算器44は2つの仮数値(MANT
A,MANTB)を加算して、初期仮数和および桁上げ
出力(carry output)信号を生成する。
【0005】有効加算の場合、仮数加算器44の出力は
オーバフローすることがある。右シフタ48は、仮数和
を右に1ビット桁シフトするために用いられる。加算器
44からの桁上げ出力によって制御される仮数和マルチ
プレクサ50は、右シフトされた仮数値または初期仮数
和のいずれかから前正規化(prenormalized) 仮数和を選
択するために用いられる。仮数加算と並行して、初期指
数は指数繰り上げ加算器(exponent increment adder)4
2によって繰り上げられ、繰り上げ指数を生成する。加
算器44の桁上げ出力によって制御される指数繰り上げ
マルチプレクサ46は、初期指数または繰り上げ指数の
いずれかから中間指数値を選択する。
【0006】有効減算の場合、仮数和マルチプレクサ5
0によって選択された前正規化仮数和における先行ゼロ
ビットを除去することによって、指数加算器44の出力
を正規化しなければならない。前正規化仮数和が左にシ
フトされる各ビット桁について、指数を1だけ繰り下げ
なければならない。先行ゼロ検出論理52は前正規化仮
数和を調べて、先行ゼロの数を求める。先行ゼロ検出論
理52の符号化された出力は、正規化器(normalizer)5
4(前正規化仮数和を左にシフトする)を制御するため
に用いられ、指数調整加算器58(指数値を調整する)
に対する入力として与えられる。指数調整加算器58
は、(先行ゼロ検出論理52によって求められた)先行
ゼロの数を中間指数から減算する。
【0007】正規化が実行されると、丸め演算に進む。
現在の丸めモードと、オペランド選択/整列論理36に
よって実行される仮数整列によって得られる任意のガー
ド・ビット(guard bit) とに応じて、丸め論理制御68
は仮数を繰り上げるべきかどうかを示すROUND制御
信号を加算器66に与える。従って、このROUND信
号は加算器66に対するキャリー・イン(carry-in)とし
て用いて、仮数を実質的に繰り上げることができ、それ
により「丸められた」仮数を生成することができる。そ
のため、丸められた仮数はオーバフローすることがあ
り、仮数を1ビット桁だけ右シフトし、かつ指数を繰り
上げる必要が生じる。これらの機能は、右シフタ72お
よび指数丸め加算器60によってそれぞれ行われる。指
数結果マルチプレクサ62および丸め仮数結果マルチプ
レクサ74は、結果指数および後正規化仮数をそれぞれ
選択するために用いられる。
【0008】図2において、性能を改善するために既知
の最適化が加算器32に取り入れられていることに留意
されたい。例えば、仮数がオーバフローするいずれの場
合においても、指数値は無条件に加算器42、60によ
って繰り上げられ、中間指数値および結果指数値は、そ
れぞれ関連する指数マルチプレクサ46,62をそれぞ
れ制御する加算器桁上げ出力(仮数加算器44,66に
よって与えられる)に基づいてそれぞれ選択される。こ
れらの最適化によって、遅い代替方法に比べて加算器ユ
ニット32の性能が改善され、ここで仮数加算器44、
66の桁上げ出力は指数加算器42,60にそれぞれ直
接入力され、指数値の繰り上げを制御する。
【0009】指数結果マルチプレクサ62は、指数結果
を例外検出論理70に与える。例外状態が検出される
と、例外検出論理70はデフォルト値(例えば80ビッ
ト結果)をライトバック・マルチプレクサ76に与え
る。例外状態が存在しないと、例外検出論理70は制御
信号をライトバック・マルチプレクサ76に与えて、そ
れによりマルチプレクサは結果指数値を後正規化仮数と
符号ビット(「正常」結果)と共にレジスタ・ファイル
26に転送することができる。従って、場合に応じて、
デフォルト値または正常結果は、ライトバック・バス3
4を介してレジスタ・ファイル26にライトバックされ
る。
【0010】
【発明が解決しようとする課題】加算器ユニット32の
構成はいくつかの欠点がある。第1の欠点は、仮数オー
バフローを処理することに関する。例えば、加算器44
の桁上げ出力は仮数和マルチプレクサ50および指数繰
り上げマルチプレクサ46の両方を駆動しなければなら
ない。その結果、クリティカル桁上げ出力信号(例え
ば、IEEE倍拡張精度(double extended precision)
浮動小数点数の2入力マルチプレクサの80ビット)に
大きな負担がかかり、従って加算サイクル時間が制限さ
れる。第2の欠点は、指数調整加算器58および指数丸
め加算器60を介して、先行ゼロ検出論理52の出力か
らのクリティカル・パスに関し、指数丸め加算器60の
出力は指数結果マルチプレクサ62に与えられることで
ある。実質的に、加算器ユニット32において、指数結
果値を生成するために形成されるクリティカル・パスは
加算サイクル時間に対して主な制限となる。
【0011】従って、性能を最大限にする浮動小数点オ
ペランドの後正規化の方法を提供し、しかもこの方法の
実行に必要な論理を最小限に押さえることが望ましい。
【0012】
【課題を解決するための手段】各データ・オペランドが
仮数部と、指数部と、符号ビットとを有する、複数のデ
ータ・オペランドを保存するレジスタ・ファイルと、複
数の浮動小数点データ・オペランドのうち選択された数
の浮動小数点データ・オペランドを用いて複数の浮動小
数点演算を実行する実行ユニットとを有するデータ・プ
ロセッサにおいて、浮動小数点加算/減算中に後正規化
を実行して最終浮動小数点結果を求める方法が提供され
る。
【0013】実行ユニットは、第1データ・オペランド
の仮数部を第2データ.オペランドの仮数部に加算し
て、前正規化された仮数和を生成し、それと同時に第1
データ・オペランドおよび第2データ・オペランドのう
ち大きい方のデータ・オペランドの指数部を繰り上げ
て、繰り上げられた指数を生成する。前正規化仮数和
は、前正規化仮数和における先行ゼロビットの数を求
め、かつこの先行ゼロビットの数を表す出力信号を与え
ることによって正規化され、それにより後正規化仮数和
を生成する。
【0014】後正規化仮数和は丸められ、丸め仮数値と
オーバフロー出力信号とを与え、それと同時に、繰り上
げられた指数は調整され、第1指数結果値と第2指数結
果値とを生成する。オーバフロー出力信号の値に基づい
て、第1指数結果または第2指数結果が最終指数結果と
して選択される。最終指数結果,丸め仮数値および結果
符号ビットは、最終浮動小数点結果としてレジスタ・フ
ァイルに与えられる。
【0015】
【実施例】図4に、本発明による浮動小数点加算を実行
する浮動小数点加算器ユニット100を示す。浮動小数
点加算器ユニット100は、図1に示すデータ処理シス
テム10と共に用いることができる。そのため、図3に
は本発明の浮動小数点加算器100を含む好適な実施例
のデータ処理システム10’を示す。図3において、図
1のそれと同様な素子は同じ参照番号が付けられてい
る。従って、データ処理システム10’は、命令シーケ
ンサ12,命令キャッシュ14,データ・キャッシュ1
6,バス・インタフェース・ユニット18,外部メモリ
20,ロード/ストア・ユニット22,整数実行ユニッ
ト24,レジスタ・ファイル26および本発明の浮動小
数点加算器ユニット100によって構成される。命令シ
ーケンサ12は、実行ユニット22,24,100とレ
ジスタ・ファイル26との間のデータ・フローを制御す
る。命令シーケンサ12は、4段(フェッチ/デコード
/実行/ライトバック)マスタ命令パイプラインを構成
し、データ・インタロックを実行し、利用可能な実行ユ
ニット22,24,100に対して命令をディスパッチ
(発行)し、レジスタ・ファイル26からのデータをバ
ス33,34に対してやりとりする。
【0016】好適な実施例に従って、大きな32ワード
汎用レジスタ・ファイル(GRF)26は、整数、論
理,ビット・フィールド,メモリ・アドレッシングおよ
び浮動小数点演算用のオペランドを与える。実行ユニッ
ト22,24,100に対して利用可能な2つのライト
バック・バス34がある。簡単にするため、ライトバッ
ク・バス34を構成する2つのバスのうち一方に特定の
実行ユニットが情報を転送する場合に、「ライトバッ
ク」という用語を用いるものとする。実行ユニット2
2,24,100はそれぞれ、独自の内部制御されたパ
イプラインを有する独立した機能ユニットである。実行
ユニットが命令の実行を完了すると、結果データをライ
トバック・バス34に乗せる。レジスタ・ファイル26
はデータをライトバック・バス34からとり、適切な宛
先レジスタ(destination register)に保存する。別の命
令がこのデータを待っている場合、このデータはレジス
タ・ファイル26を通過して適切な実行ユニットに直接
「転送(forward) 」される。これにより、データをレジ
スタ・ファイルに書き込み再び読み出すことを待たず
に、データ依存命令は前回の独立した命令のライトバッ
クと同じクロックで発行することができる。異なる実行
ユニットは異なるパイプライン長を有するので、2つ以
上の命令をある一つのクロック・サイクル内で完了する
ことが可能になる。従って、実行ユニット22,24,
100はライトバック・バス34上で利用可能なスロッ
トについてアービトレーションを行う。もっとも高いラ
イトバック優先権は、整数ユニット24などのシングル
・サイクル実行ユニット34に与えられ、そのためシン
グル・サイクル命令は常にライトバック・スロットが保
証され、一方、浮動小数点加算器ユニット100やロー
ド/ストア・ユニット22などのマルチステージ・パイ
プライン・ユニットはライトバック・スロットについて
アービトレーションを行う。ライトバック・スロットが
拒否されたパイプライン化された実行ユニットは、内部
パイプライン・ステージを進み続け、パイプライン・ス
テージがいっぱいになるまで新たな命令を受け続ける。
【0017】好適な実施例では、浮動小数点加算器ユニ
ット100は他のすべての実行ユニット22,24と並
行して実行し、整数,メモリ,浮動小数点演算の任意の
組み合わせを同じクロックで発行することができる。浮
動小数点加算器ユニット100によって生成される結果
は、ソフトウェアの修正(fix-up)を必要としない厳密な
IEEE結果となる。図4において、浮動小数点加算器
ユニット100は、仮数データ・パス部102,指数デ
ータ・パス部104,オペランド選択/整列論理106
およびライトバック論理108によって構成される。仮
数データ・パス論理102は、仮数スワップ・マルチプ
レクサ112,仮数加算器114,先行ゼロ検出論理1
16,正規化器118,仮数丸め加算器120,右シフ
タ122および丸め仮数結果マルチプレクサ124によ
って構成される。指数データ・パス部104は、初期指
数マルチプレクサ128,指数繰り上げ加算器130,
指数丸め加算器132,指数調整加算器134,指数結
果マルチプレクサ138および例外検出論理140によ
って構成される。ライトバック論理108は、発行され
た浮動小数点命令によって指定される精度に基づいて、
最終加算または減算結果を適切な浮動小数点データ・フ
ォーマットに再整列する。
【0018】好適な実施例に従って、任意の与えられた
浮動小数点命令(例えば加算,減算)について、オペラ
ンド(AおよびB)はソース・バス33またはライトバ
ック・バス34を介して汎用レジスタ・ファイル26か
ら供給される。従来の方法では、シーケンサ12からの
制御信号は浮動小数点加算器ユニット100に駆動さ
れ、どのバス33または34がソース・オペランド(A
およびB)を与えるかを示す。浮動小数点命令が完了す
ると、ライトバック論理108は演算結果をライトバッ
ク・バス34を介してレジスタ・ファイル26に転送す
る。
【0019】浮動小数点加算器ユニット100によって
実行される命令の種類に応じて、オペランドは整数、あ
るいはIEEE浮動小数点フォーマットに規定される単
精度,倍精度または拡張精度の浮動小数点となりうる。
好適な実施例では、すべてのオペランドは、サイズまた
は精度に関係なく、Sign(S)ビット(これはオペ
ランドの最上位ビット(most significant bit: MS
B)である)に整列されたソース・バス33またはライ
トバック・バス34上に駆動される。好適な実施例で
は、各クロックにおいて2つの命令がシーケンサ12に
よって異なる実行ユニット22,24,100に発行さ
れ、一方が命令スロット0に入り、もう一方は命令スロ
ット1に入る。各命令スロットについて、2つのソース
・バス33、すなわちs0_b[0]またはs1_b
[0]およびs0_b[1]およびs1_b[1]があ
り、これらはレジスタ・ファイル26から駆動される。
さらに、2つのライトバック・バス34もある。従っ
て、好適な実施例では、第1オペランド(A)は、
(1)ソース1バスであるs1_b[0]またはs1_
b[1](シーケンサ12が命令スロット0または命令
スロット1で命令を発効しているかどうかに依存する)
から現れるか、あるいは(2)ライトバック・バス0
(wb_b[0])からフィードフォーワードされる
か、あるいは(3)ライトバック・バス1(wb_b
[1])からフィードフォーワードされる。同様に、第
2オペランドBは、(1)ソース2バス(s2_b
[0]またはs2_b[1])から現われるか、あるい
は(2)ライトバック・バス0からフィードフォーワー
ドされるか、あるいは(3)ライトバック・バス1から
フィードフォーワードされる。すべての場合において、
オペランド(AおよびB)は、精度に関係なく、符号ビ
ット(MSB)に整列されたバス33または34上に駆
動される。
【0020】本発明において、浮動小数点加算器ユニッ
ト100は浮動小数点加算または減算を実行して、図5
のフロー図200に示すように2つのオペランドAおよ
びBを加算/減算する。従って、ステップ202におい
て、シーケンサ12によって生成されるEXTERNA
L CONTROL信号に応答して、オペランド選択/
整列論理106は適切なバス33または34を選択し
て、そのバスから着信オペランド(オペランドAおよび
オペランドB)を受信する。次にオペランド選択/整列
論理106は、浮動小数点加算器ユニット100によっ
て内部的に用いられる倍拡張精度フォーマットに対して
オペランドの第1整列を実行する。第2整列はオペラン
ド選択/整列論理106によって実行され、オペランド
AおよびBを整列して、それらの指数を等しくする。オ
ペランド整列演算において、このガード・ビットが仮数
の右シフト中に生成される。オペランド選択/整列論理
106は、ガード・ビットを丸め制御論理126に与え
る。
【0021】ステップ204において、以下の表1に示
すように、浮動小数点加算器ユニット100はシーケン
サ12(図4)から発行される命令と、オペランドAお
よびBのSignビットとに基づいて、「有効(effecti
ve) 」加算および「有効」減算を実行する。
【0022】
【表1】 発行される Signビット Signビット 有効 命令 オペランドA オペランドB オペランド 加算 0 0 加算 加算 0 1 減算 加算 1 0 減算 加算 1 1 加算 減算 0 0 減算 減算 0 1 加算 減算 1 0 加算 減算 1 1 減算 オペランド選択/整列論理106は、1992年9月4
日に出願され、本明細書の譲受人に譲渡された特許出願
第07/941,011号"IN A DATA PROCESSING A ME
THOD AND APPARATUS FOR PERFORMING A FLOATING-POINT
COMPARISON OPERATION"に説明されているように、指数
比較演算を実行する。従って、オペランド選択/整列論
理106からEXPONENT COMPARE信号を
受信することに応答して、初期指数マルチプレクサ12
8は大きさのより大きいオペランドの指数(EXPAま
たはEXPB)を指数繰り上げ加算器130に与える。
指数繰り上げ加算器130は初期指数(EXPAまたは
EXPB)を2だけ繰り上げ、「繰り上げ指数」を出力
として与える。これと並行して、仮数加算器114は、
オペランドAおよびBの仮数MANTAおよびMANT
Bの有効加算または減算をそれぞれ実行し、「前正規化
仮数和(prenormalized mantissa sum)」を出力として与
える。好適な実施例では、前正規化仮数和は、1桁上げ
ビットと64ビットの仮数値とからなる65ビット値で
ある。
【0023】ステップ206において、先行ゼロ検出論
理116は前正規化仮数和における先行ゼロの数を求
め、65ビット前正規化仮数和において検出された先行
ゼロの数を表す6ビット符号化値(「NORM」)を出
力として与える。このNORM値は、図4に示すよう
に、指数丸め加算器132,指数調整加算器134およ
び仮数正規化器118に与えられる。
【0024】NORMを受信することに応答して、ステ
ップ208において、仮数正規化器118は、NORM
値において符号化されたビットの数だけ前正規化仮数和
を左にシフトして、後正規化仮数和を生成する。これと
並行して、指数調整加算器134は繰り上げ指数値(指
数繰り上げ加算器130によって与えられる)から6ビ
ットNORM値を減算して指数結果値(EXP RES
ULT)を与え、一方、指数丸め加算器132は同時に
指数結果値と1との和(EXP RESULT+1)を
計算する。このEXP RESULT+1値は、ステッ
プ210において仮数丸め演算を実行することによって
生じるその後のオーバフロー状態に備えて、浮動小数点
加算器100によって生成される。
【0025】ステップ210において、浮動小数点加算
器100は仮数丸め演算を実行する。最終浮動小数点加
算/減算結果であるNORM値に応じて、仮数正規化器
118は前正規化仮数和を左にシフトして、所定の数の
ガード・ビットを前正規化仮数和の最下位ビット位置に
挿入することを可能にし、それにより後正規化仮数和を
生成する。最終浮動小数点加算/減算結果の精度に基づ
いて、丸め制御論理126は、IEEE−754 19
85仕様に規定する浮動小数点演算規格に準拠する丸め
結果値を生成するために、後正規化仮数値に加算すべき
値を示すROUND信号を生成する。従って、繰り上げ
仮数丸め加算器120は後正規化仮数和とROUND制
御信号とを受信して、64ビット丸め仮数値と桁上げ出
力信号とを出力として与える。本発明の浮動小数点加算
/減算演算のステップ212において、浮動小数点加算
器100は後正規化仮数値を丸めることによってオーバ
フロー状態が発生したかどうかを、仮数丸め加算器12
0によって生成された桁上げ出力信号を調べることによ
って判断する。
【0026】ステップ214において、右シフタ122
は丸め仮数値を右に1ビットだけシフトして、それによ
り右シフト丸め仮数値を生成する。ステップ212にお
ける判断に基づいて、丸め仮数結果マルチプレクサ12
4は右シフト丸め仮数値または後正規化仮数値のいずれ
かを選択して、最終64ビット仮数結果としてライトバ
ック制御論理108に与える。これと並行して、指数結
果マルチプレクサ138は、仮数丸め加算器120によ
って生成された桁上げ出力信号の値に基づいて、EXP
RESULTまたはEXP RESULT+1のいず
れかを選択して、最終15ビット指数結果としてライト
バック制御論理108に与える。
【0027】ステップ216において、例外検出論理1
40はIEEE例外状態が発生したかどうか判断する。
IEEE例外が発生している場合、ステップ218にお
いて、例外検出論理140は80ビットのデフォルト値
をライトバック制御論理108に与え、この値はライト
バック・バス34を介してレジスタ・ファイル26にラ
イトバックされる。それ以外の場合には、例外検出論理
140は最終15ビット指数結果をライトバック・バス
34を介してレジスタ・ファイル26にライトバックす
るようにライトバック制御論理108に指示する。
【0028】従って、本発明の好適な実施例では、浮動
小数点加算器100はクリティカル・パス遅延を最小限
に抑えて、高性能な浮動小数点演算を可能にし、しかも
同時に論理を低減する。図2の従来技術のように、オー
バフローによるキャリー・アウトの場合に特別な処理で
前正規化仮数和を64ビット値として処理せずに、本発
明の浮動小数点加算器100は、前正規化仮数和を65
ビット値として処理し、仮数加算器114のキャリー・
アウトは最上位ビットとなる。これにより、従来の浮動
小数点加算器ユニット32の右シフタ48と仮数和マル
チプレクサ50の必要性がなくなる。また、従来の指数
繰り上げマルチプレクサ46の使用によって教示される
ように、初期指数値を条件付きで桁上げせずに、本発明
では、(追加上位ビットを考慮するため)初期指数値は
常に桁上げされる。従って、本発明では加算器ユニット
32(図2)のマルチプレクサ46,50の必要性はな
くなるので、本発明では桁上げ出力に対する負荷が最小
限に抑えられる。
【0029】さらに、本発明におけるクリティカル・パ
スは先行ゼロ検出論理116から、指数加算器132,
134(並列)、および指数選択マルチプレクサ138
までであり、そのため浮動小数点加算器ユニット100
は正規化および丸めのための指数調整を従来技術に比べ
て高速に行う。概念的には、本発明は繰り上げ指数(加
算器134を介して)および繰り上げ指数と1との和
(加算器132を介して)の両方から、NORM信号に
おいて符号化された指数調整値を減算する。本発明にお
いて、NORM信号において符号化された指数調整値を
減算し、かつ初期指数値を繰り上げるために、指数丸め
加算器132に2の桁上げ入力を与えなければならな
い。この条件は、従来技術で示した一般の加算器42
(図2)ではうまくいかない。本発明では、指数加算器
132,134の桁上げ入力条件は、桁上げ入力1を指
数繰り上げ加算器130に戻すことによって満たされ
る。従って、本発明では、指数加算器130への初期指
数は図4に示すように常に2だけ繰り上げられる。前述
のように、従来技術に示す加算器46,50(図2)を
除去することにより、本明細書で説明するように桁上げ
入力1の移動が可能になる。従って、本発明は従来技術
に比べていくつかの利点を有する。まず第1に、仮数加
算器114のキャリーアウトが大きなマルチプレクサを
駆動しなければならない場合に、本発明はクリティカル
・パス・タイミングの問題に対処する。このタイミング
問題に対処すると同時に、本発明は設計から論理を除去
して、構造を簡略化する。またこの方法は、別の論理を
追加せずに、クリティカル・パスから一つの指数加算器
遅延を除去するという利点を有する。このことは、浮動
小数点加算器がサイクル時間条件を満たすことができる
という点で重要である。以上、好適な実施例に基づいて
本発明について説明してきたが、本発明はさまざまな方
法で実施できることが当業者に理解される。従って、本
発明の真の精神および範囲に入る本発明のすべての修正
は特許請求の範囲によって網羅される。
【図面の簡単な説明】
【図1】浮動小数点加算を実行する従来の浮動小数点加
算器ユニットを有するデータ処理システムのブロック図
を示す。
【図2】図1の従来の浮動小数点加算器ユニットのブロ
ック図を示す。
【図3】本発明による浮動小数点加算を実行する浮動小
数点加算器ユニットを有するデータ処理システムのブロ
ック図を示す。
【図4】本発明による図3の浮動小数点加算器ユニット
のブロック図を示す。
【図5】本発明による浮動小数点加算を示すフロー図で
ある。
【符号の説明】
10,10’ データ処理システム 12 命令シーケンサ 14 命令キャッシュ 16 データ・キャッシュ 18 バス・インタフェース・ユニット 20 外部メモリ 22 ロード/ストア・ユニット 24 整数実行ユニット 26 レジスタ・ファイル 32 加算器ユニット 33 ソース・バス 34 ライトバック・バス 100 浮動小数点加算器ユニット 102 仮数データ・パス部 104 指数データ・パス部 106 オペランド選択/整列論理 108 ライトバック論理 112 仮数スワップ・マルチプレクサ 114 仮数加算器 116 先行ゼロ検出論理 118 正規化器 120 仮数丸め加算器 122 右シフタ 124 丸め仮数結果マルチプレクサ 126 丸め制御論理 128 初期指数マルチプレクサ 130 指数繰り上げ加算器 132 指数丸め加算器 134 指数調整加算器 138 指数結果マルチプレクサ 140 例外検出論理

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 各データ・オペランドが仮数部と、指数
    部と、符号ビットとを有する、複数のデータ・オペラン
    ドを保存するレジスタ・ファイル(26)と、前記複数
    の浮動小数点データ・オペランドのうち選択された数の
    浮動小数点データ・オペランドを利用して複数の浮動小
    数点演算を実行する実行ユニット(100)とを有する
    データ・プロセッサ(10)において、浮動小数点加算
    /減算演算を実行して、最終浮動小数点結果を求める方
    法は:第1データ・オペランドの前記仮数部を第2デー
    タ・オペランドの前記仮数部に加算して、前正規化仮数
    和を生成し、同時に前記第1データ・オペランドおよび
    前記第2データ・オペランドのうち大きい方の前記指数
    部を繰り上げて、繰り上げ指数を生成する段階;前記前
    正規化仮数和における先行ゼロ・ビットの数を求め、か
    つ先行ゼロ・ビットの前記数を表す出力信号を与えるこ
    とにより、前記前正規化仮数和を正規化して、後正規化
    仮数和を生成する段階;前記後正規化仮数和を丸めて、
    丸め仮数値とオーバフロー出力信号とを与え、同時に前
    記繰り上げ指数を調整して、第1指数結果値と第2指数
    結果値とを生成する段階;前記オーバフロー出力信号の
    値に基づいて、前記第1指数結果または前記第2指数結
    果のいずれかを最終指数結果として選択する段階;およ
    び前記レジスタ・ファイル(26)において前記最終指
    数結果と、前記丸め仮数値と、結果符号ビットとを前記
    最終浮動小数点結果として与える段階;によって構成さ
    れることを特徴とする方法。
  2. 【請求項2】 各浮動小数点データ・オペランドが仮数
    部と、指数部と、符号ビットとを有する、複数の浮動小
    数点データ・オペランドを保存するレジスタ・ファイル
    (26)と、前記複数の浮動小数点データ・オペランド
    のうち選択された数の浮動小数点データ・オペランドを
    利用して複数の浮動小数点演算を実行する実行ユニット
    (100)とを有するデータ・プロセッサ(10’)に
    おいて、浮動小数点加算/減算中に後正規化を実行し
    て、最終浮動小数点結果を求める方法は:第1データ・
    オペランドの前記仮数部を第2データ・オペランドの前
    記仮数部に加算して、前正規化仮数和を生成し、同時に
    前記第1データ・オペランドおよび前記第2データ・オ
    ペランドのうち大きい方の前記指数部を繰り上げて、繰
    り上げ指数を生成する段階;前記前正規化仮数和におけ
    る先行ゼロ・ビットの数を求めて、先行ゼロ・ビットの
    前記数を表す出力信号を与えることにより、前記前正規
    化仮数和を正規化して、後正規化仮数和を生成する段
    階;前記後正規化仮数を丸めて、丸め仮数値とオーバフ
    ロー出力信号とを与え、同時に前記繰り上げ指数を調整
    して、第1指数結果値と第2指数結果値とを生成する段
    階;前記後正規化仮数和の前記丸めを実行することによ
    ってオーバフロー状態が発生した場合に、前記丸め仮数
    値の1ビット右シフトを実行して、右シフトされた仮数
    値を生成する段階;前記オーバフロー出力信号の値に基
    づいて、前記第1指数結果または前記第2指数結果を最
    終指数結果として選択する段階;および前記レジスタ・
    ファイル(26)において、前記最終指数結果と、前記
    丸め仮数値と、結果符号ビットとを前記最終浮動小数点
    結果として与える段階;によって構成されることを特徴
    とする方法。
  3. 【請求項3】 各浮動小数点データ・オペランドが仮数
    部と、指数部と、符号ビットとを有する、複数の浮動小
    数点データ・オペランドを保存するレジスタ・ファイル
    (26)と、浮動小数点加算/減算を実行して、浮動小
    数点結果を求める浮動小数点実行ユニット(100)と
    を有するデータ・プロセッサ(10’)であって、前記
    実行ユニットは:第1データ・オペランドの前記仮数部
    を第2データ・オペランドの前記仮数部に加算して、前
    正規化仮数和を生成し、かつ前記前正規化仮数和を正規
    化して、後正規化仮数和を生成する第1手段(114,
    116,118,120,122,124)であって、
    前記第1手段(114,116,118,120,12
    2,124)は前記前正規化仮数和における先行ゼロ・
    ビットの数を求めて、先行ゼロ・ビットの前記数を表す
    第1出力信号を与え、また前記第1手段(114,11
    6,118,120,122,124)は前記後正規化
    仮数和を丸め、オーバフロー状態が発生したかどうかを
    示すオーバフロー出力信号と、丸め仮数値とを仮数結果
    として与える第1手段;前記第1手段(114,11
    6,118,120,122,124)に結合され、前
    記第1データ・オペランドおよび前記第2データ・オペ
    ランドのうち大きい方の前記指数を繰り上げて、繰り上
    げ指数を生成し、かつ前記第1手段(114,116,
    118,120,122,124)から前記第1出力信
    号を受信することに応答して、前記繰り上げ指数を調整
    して、第1指数結果値と第2指数結果値とを生成する第
    2手段(130,132,134,138)であって、
    前記第2手段(130,132,134,138)は前
    記第1手段(114,116,118,120,12
    2,124)から前記オーバフロー出力信号を受信し
    て、それに応答して前記第1指数結果または前記第2指
    数結果のいずれかを最終指数結果として選択する第2手
    段;および前記第1および第2手段に結合され、前記最
    終指数結果と、前記仮数結果と、結果符号ビットとを前
    記最終浮動小数点結果として前記レジスタ・ファイル
    (26)に与える第3手段(108);によって構成さ
    れることを特徴とする浮動小数点実行ユニット。
  4. 【請求項4】 前記第1手段に結合され、前記第1デー
    タ・オペランドと前記第2データ・オペランドとを前記
    浮動小数点実行ユニットの所定の内部データ・フォーマ
    ットに整列する第4手段(106);および前記第4手
    段に結合され、前記第1データ・オペランドと前記第2
    データ・オペランドの整列中に、前記第4手段によって
    生成される所定の数のガード・ビットを受信する第5手
    段(126);をさらに含んで構成されることを特徴と
    する請求項3記載の浮動小数点実行ユニット。
  5. 【請求項5】 前記第3手段に結合され、前記浮動小数
    点加算/減算を実行することによって例外状態が発生し
    たことを検出し、かつ前記例外状態を検出することに応
    答して、デフォルト値を前記最終浮動小数点結果として
    与える例外検出論理手段(140)をさらに含んで構成
    されることを特徴とする請求項3記載の浮動小数点実行
    ユニット。
JP5345648A 1993-01-04 1993-12-22 データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置 Pending JPH06236257A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/000,339 US5373461A (en) 1993-01-04 1993-01-04 Data processor a method and apparatus for performing postnormalization in a floating-point execution unit
US000339 1993-01-04

Publications (1)

Publication Number Publication Date
JPH06236257A true JPH06236257A (ja) 1994-08-23

Family

ID=21691077

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5345648A Pending JPH06236257A (ja) 1993-01-04 1993-12-22 データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置

Country Status (2)

Country Link
US (1) US5373461A (ja)
JP (1) JPH06236257A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116643718A (zh) * 2023-06-16 2023-08-25 合芯科技有限公司 一种流水线结构的浮点融合乘加装置、方法及处理器

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539684A (en) * 1993-12-10 1996-07-23 Motorola, Inc. Method and apparatus for calculating floating point exponent values
US5487022A (en) * 1994-03-08 1996-01-23 Texas Instruments Incorporated Normalization method for floating point numbers
US5684729A (en) * 1994-09-19 1997-11-04 Hitachi, Ltd. Floating-point addition/substraction processing apparatus and method thereof
US5751621A (en) * 1994-11-17 1998-05-12 Hitachi, Ltd. Multiply-add unit and data processing apparatus using it
US5583805A (en) * 1994-12-09 1996-12-10 International Business Machines Corporation Floating-point processor having post-writeback spill stage
US5548545A (en) * 1995-01-19 1996-08-20 Exponential Technology, Inc. Floating point exception prediction for compound operations and variable precision using an intermediate exponent bus
US5550768A (en) * 1995-01-31 1996-08-27 International Business Machines Corporation Rounding normalizer for floating point arithmetic operations
US5757682A (en) * 1995-03-31 1998-05-26 International Business Machines Corporation Parallel calculation of exponent and sticky bit during normalization
JP3429927B2 (ja) * 1995-10-16 2003-07-28 三菱電機株式会社 浮動小数点演算装置の正規化回路装置
US5764555A (en) * 1996-03-13 1998-06-09 International Business Machines Corporation Method and system of rounding for division or square root: eliminating remainder calculation
US5742533A (en) * 1996-05-21 1998-04-21 International Business Machines Corporation Method and apparatus for modulus error checking
JP2888206B2 (ja) * 1996-08-30 1999-05-10 日本電気株式会社 データ処理装置
US5957997A (en) * 1997-04-25 1999-09-28 International Business Machines Corporation Efficient floating point normalization mechanism
US6088715A (en) * 1997-10-23 2000-07-11 Advanced Micro Devices, Inc. Close path selection unit for performing effective subtraction within a floating point arithmetic unit
US6085212A (en) * 1997-10-23 2000-07-04 Advanced Micro Devices, Inc. Efficient method for performing close path subtraction in a floating point arithmetic unit
US6094668A (en) * 1997-10-23 2000-07-25 Advanced Micro Devices, Inc. Floating point arithmetic unit including an efficient close data path
US6275839B1 (en) * 1998-09-22 2001-08-14 International Business Machines Corporation Method and system for immediate exponent normalization in a fast floating point adder
KR100331846B1 (ko) * 1999-04-02 2002-04-09 박종섭 실수 연산기
US20030005261A1 (en) * 2001-06-29 2003-01-02 Gad Sheaffer Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US6963896B2 (en) * 2001-07-31 2005-11-08 Pasternak Solutions Llc Method and system to implement an improved floating point adder with integrated adding and rounding
US7720898B2 (en) * 2003-06-11 2010-05-18 Stmicroelectronics, Inc. Apparatus and method for adjusting exponents of floating point numbers
US8650231B1 (en) 2007-01-22 2014-02-11 Altera Corporation Configuring floating point operations in a programmable device
JP4806453B2 (ja) * 2007-02-09 2011-11-02 富士通株式会社 演算処理装置、情報処理装置、および演算方法
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8352531B2 (en) * 2008-07-22 2013-01-08 International Business Machines Corporation Efficient forcing of corner cases in a floating point rounder
US8214416B2 (en) * 2008-07-28 2012-07-03 Agere Systems Inc. Floating-point addition acceleration
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor
US8706790B1 (en) 2009-03-03 2014-04-22 Altera Corporation Implementing mixed-precision floating-point operations in a programmable integrated circuit device
US8412756B1 (en) 2009-09-11 2013-04-02 Altera Corporation Multi-operand floating point operations in a programmable integrated circuit device
US9600278B1 (en) 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
US8949298B1 (en) 2011-09-16 2015-02-03 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US9053045B1 (en) 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US9098332B1 (en) 2012-06-01 2015-08-04 Altera Corporation Specialized processing block with fixed- and floating-point structures
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support
US9207909B1 (en) 2012-11-26 2015-12-08 Altera Corporation Polynomial calculations optimized for programmable integrated circuit device structures
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
US9684488B2 (en) 2015-03-26 2017-06-20 Altera Corporation Combined adder and pre-adder for high-radix multiplier circuit
US10908878B2 (en) * 2018-11-26 2021-02-02 Nvidia Corporation Dynamic directional rounding
US20230315386A1 (en) * 2022-03-25 2023-10-05 International Business Machines Corporation Rounding hexadecimal floating point numbers using binary incrementors

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4999803A (en) * 1989-06-29 1991-03-12 Digital Equipment Corporation Floating point arithmetic system and method
US5111421A (en) * 1990-02-26 1992-05-05 General Electric Company System for performing addition and subtraction of signed magnitude floating point binary numbers
US5136536A (en) * 1990-05-04 1992-08-04 Weitek Corporation Floating-point ALU with parallel paths
JP2508912B2 (ja) * 1990-10-31 1996-06-19 日本電気株式会社 浮動小数点加算装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116643718A (zh) * 2023-06-16 2023-08-25 合芯科技有限公司 一种流水线结构的浮点融合乘加装置、方法及处理器
CN116643718B (zh) * 2023-06-16 2024-02-23 合芯科技有限公司 一种流水线结构的浮点融合乘加装置、方法及处理器

Also Published As

Publication number Publication date
US5373461A (en) 1994-12-13

Similar Documents

Publication Publication Date Title
JPH06236257A (ja) データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置
US5357237A (en) In a data processor a method and apparatus for performing a floating-point comparison operation
US5844830A (en) Executing computer instrucrions by circuits having different latencies
US6360189B1 (en) Data processing apparatus and method for performing multiply-accumulate operations
US4941120A (en) Floating point normalization and rounding prediction circuit
US5272660A (en) Method and apparatus for performing integer and floating point division using a single SRT divider in a data processor
JP5819380B2 (ja) 入力データ値に応じたfmaユニットにおける電力消費の低減
US8447800B2 (en) Mode-based multiply-add recoding for denormal operands
EP0699318B1 (en) Unified floating point and integer datapath for risc processor
KR100239029B1 (ko) 가산기와 함께 사용하기 위한 결과 정규화기 및 결과 정규화 방법과 그를 포함하는 데이터 프로세서
US5878266A (en) Reservation station for a floating point processing unit
Bruguera et al. Floating-point fused multiply-add: reduced latency for floating-point addition
US5957997A (en) Efficient floating point normalization mechanism
US5943249A (en) Method and apparatus to perform pipelined denormalization of floating-point results
JPH09507941A (ja) multiply−add浮動小数点シーケンスにおけるウエイト・サイクルなしのブロック正規化
JPH09212337A (ja) 浮動小数点演算処理装置
EP0901067A2 (en) Method and system for executing operations on denormalised numbers
US6061707A (en) Method and apparatus for generating an end-around carry in a floating-point pipeline within a computer system
US5237525A (en) In a data processor an SRT divider having a negative divisor sticky detection circuit
EP0840207A1 (en) A microprocessor and method of operation thereof
US5539684A (en) Method and apparatus for calculating floating point exponent values
US5867722A (en) Sticky bit detector for a floating-point processor
US6615228B1 (en) Selection based rounding system and method for floating point operations
EP1089166A2 (en) An integer instruction set architecture and implementation
US5838601A (en) Arithmetic processing method and arithmetic processing device