JPH10207693A - 浮動小数点演算ユニット - Google Patents

浮動小数点演算ユニット

Info

Publication number
JPH10207693A
JPH10207693A JP10001990A JP199098A JPH10207693A JP H10207693 A JPH10207693 A JP H10207693A JP 10001990 A JP10001990 A JP 10001990A JP 199098 A JP199098 A JP 199098A JP H10207693 A JPH10207693 A JP H10207693A
Authority
JP
Japan
Prior art keywords
bits
unit
output
multiplication
bit
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
JP10001990A
Other languages
English (en)
Inventor
Michael Burchfiel Steven
スチーブン・マイケル・バーチフィール
Flanis Barnes Jeofrry
ジェオフリー・フラニス・バーンズ
H Hesson James
ジェームズ・エイチ・ヘッソン
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH10207693A publication Critical patent/JPH10207693A/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/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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
    • 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
    • G06F7/49952Sticky bit

Landscapes

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

Abstract

(57)【要約】 【課題】 独立した乗算実行ユニットと加算実行ユニッ
トとを有するプロセッサで乗算加算命令を実現すること
である。 【解決手段】 pビット精度の3つのオペランドA、
B、Cについて乗算加算命令AC+Bを実行する際に独
立した乗算動作と加算動作を実行するための浮動小数点
演算ユニットは、乗算ユニットと、スティッキー・コレ
クト・ユニットと、加算ユニットと、丸めユニットとを
含む。しかも、リスク条件検出ユニットは、丸めユニッ
トによって丸める前に非精密な結果量の発生に対応する
リスク条件の検出を行う。リスク条件を検出すると、ト
ラップがトリガーされ、拡張シーケンス実現ユニットが
拡張乗算加算シーケンスを実行し、最終丸めの前に無限
精度を有する乗算加算出力を出力する。pビット精度の
3つのオペランドA、B、Cについて乗算加算命令AC
+Bを実行する際に独立した乗算動作と加算動作を実行
するための浮動小数点演算方法も開示する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的にはスーパ
ースカラ・マイクロプロセッサに関し、より具体的には
独立した乗算命令と加算命令とを使用して高精度乗算加
算計算を実行するための方法および装置に関する。
【0002】
【従来の技術】縮小命令セット・コンピュータ(RIS
C)マイクロプロセッサは当技術分野では周知のもので
ある。RISCプロセッサは、特定のシステム・アーキ
テクチャによる主要機能構成要素を含む。たとえば、R
ISCプロセッサは、整数ユニット、分岐処理ユニッ
ト、浮動小数点ユニットなどの3つの実行ユニットを含
むことができる。このため、RISCプロセッサは、た
とえば、3つの実行ユニットのそれぞれに1つずつ、ク
ロック当たり3つの命令を出して回収することができる
スーパースカラ・プロセッサを含む。パフォーマンスを
高めるために、命令は順不同で完了することができる
が、その実行は実際には順次行われるように見えるだろ
う。
【0003】拡張マイクロプロセッサ用の浮動小数点ハ
ードウェアおよびアルゴリズムの設計は、パフォーマン
スと、浮動小数点の正確さと、拡張マイクロプロセッサ
市場における既存のソフトウェア・アプリケーションと
の互換性との兼ね合いを伴う場合が多い。
【0004】以下に示す説明では、単精度、倍精度、拡
張精度用の各種浮動小数点フォーマットについて言及す
る。図1は、単精度、倍精度、拡張精度用の浮動小数点
2進固定長フォーマットを示す。様々なコンピュータ・
マイクロプロセッサ・アーキテクチャでは、レジスタお
よびメモリに値を格納し、マイクロプロセッサ・レジス
タにアクセスし、このようなレジスタ内のデータを表現
するためにオペランド規則を使用する。メモリ内のデー
タには単精度フォーマットを使用することができる。メ
モリまたは浮動小数点レジスタ内のデータには倍精度フ
ォーマットを使用することができる。
【0005】浮動小数点フォーマット内の値は、s(符
号ビット)、exp(指数)、FRACTION(仮数)という
3つのフィールドからなる。符号ビットの長さは単一ビ
ットである。指数および小数フィールドの長さは特定の
精度フォーマットによって決まる。単精度の浮動小数点
フォーマットは32ビットを含み、符号ビットが1ビッ
ト、指数ビットが8ビット、仮数が23ビットになる。
倍精度の浮動小数点フォーマットは64ビットを含み、
符号ビットが1ビット、指数ビットが11ビット、仮数
が52ビットになる。拡張精度の浮動小数点フォーマッ
トは81ビットを含み、符号ビットが1ビット、指数ビ
ットが16ビット、仮数が64ビットになる。さらに、
浮動小数点表現については、仮数部は、FRACTIONの右に
連結された先行暗黙ビットからなる。この先行暗黙ビッ
トは、正規化数の場合は1(イチ)になり、非正規化数
の場合は0(ゼロ)になる。また、先行暗黙ビットは単
位ビット位置(すなわち、2進小数点の左の最初のビッ
ト位置)に位置する。
【0006】数値および非数値は、単精度、倍精度、拡
張精度の各種フォーマット内で表現可能である。数値は
実数の近似値になり、正規化数、非正規化数、ゼロ値を
含む。さらに、表現可能な非数値数は正と負の無限大を
含む。
【0007】2進浮動小数点数は、実数の近似値を取る
ために使用する機械表現可能値である。3通りのカテゴ
リの数としては、正規化数、非正規化数、ゼロ値があ
る。正規化数の値は、単精度浮動小数点フォーマットで
は1〜256の範囲、倍精度浮動小数点フォーマットで
は1〜2046の範囲のバイアス指数値を有する。暗黙
単位ビットは正規化数の場合1になる。さらに、正規化
数は以下のように解釈される。 NORM=(−1)S×2E×(1.fraction) 式中、(S)は符号であり、(E)は非バイアス指数で
あり、(1.fraction)は先行単位ビット(暗黙ビット)
と小数部から構成される仮数部である。ゼロ値は、ゼロ
というバイアス指数値と、ゼロという仮数値(先行ビッ
ト=0)とを有する。ゼロには正または負の符号を付け
ることができる。非正規化数は、ゼロというバイアス指
数値と、非ゼロの小数フィールド値とを有する。非正規
化数は、表現可能な正規化数より規模が小さい非ゼロの
数である。これらは、暗黙単位ユニットがゼロになる値
である。非正規化数は以下のように解釈される。 DENORM=(−1)S×2Emin×(0.fraction) 式中、(S)は符号であり、(Emin)は最小表現可能指
数値(単精度では−126、倍精度では−1022)で
あり、(0.fraction)は先行ビット(暗黙ビット)と小
数部から構成される仮数部である。
【0008】算術演算によって、符号ビットと、指数
と、ゼロの先行ビットを含む非ゼロ仮数部とからなる中
間結果が得られると、その結果は正規化数ではないの
で、格納する前に正規化しなければならない。数の正規
化は、先行仮数ビットが1になるまで、シフトした各ビ
ットごとに1だけその指数を減分しながらその仮数部を
左にシフトすることによって行う。保護ビットと丸めビ
ットはそのシフトに関与し、ゼロは丸めビットにシフト
される。正規化中、指数はその範囲が無制限であるよう
に見なされる。得られる指数値が、その結果について指
定されたフォーマットで表現できる最小値より小さい場
合、中間結果は「小さい」と言われる。その数の符号は
変化しない。算術演算によって得られる非ゼロの中間結
果が、指定のフォーマットで表現できる最小値より小さ
い指数を有する場合、格納された結果は非正規化が必要
になる可能性がある。数の非正規化は、指数がそのフォ
ーマットの最小値と等しくなるまで、シフトした各ビッ
トごとに1だけその指数を増分しながらその仮数部を右
にシフトすることによって行う。このシフト・プロセス
中に有効ビットが失われる場合、正確さの喪失が発生し
ている。その数の符号は変化しない。
【0009】算術命令、丸め命令、変換命令はいずれ
も、無限に精密であると見なされる中間結果が得られる
ようにマイクロプロセッサ・アーキテクチャによって定
義される。この結果は、有限長の精度で浮動小数点レジ
スタ(FPR)に書き込むことができる。正規化または
非正規化の後、無限精度の中間結果をその命令が要求す
る精度で表現できない場合、その結果はターゲットFP
Rに入れる前に丸められる。丸めは、特定のマイクロプ
ロセッサに固有の特定の丸め命令に応じて行われる。
【0010】IEEE754規格は64ビットと32ビ
ットの算術計算を含む。この規格では、単精度オペラン
ドのために単精度算術計算を用意しなければならない。
また、この規格では、倍精度算術命令が単精度オペラン
ドまたは倍精度オペランドの一方(または両方)を持つ
ことができるが、単精度命令が倍精度オペランドを受け
入れてはならないと規定している。
【0011】IEEE演算用の64ビット実行モデルで
は、各種ビットとフィールドが次のように定義されてい
る。すなわち、Sビットは符号ビットであり、Cビット
は仮数部からの繰上りを捕捉する繰上りビットであり、
Lビットはオペランドからの暗黙ビットを受け取る仮数
部の先行単位ビットであり、FRACTIONはオペランドの小
数部を受け入れる52ビット・フィールドであり、保護
(G)、丸め(R)、スティッキー(X)の各ビットは
累算器の下位ビットの拡張部である。GビットとRビッ
トは結果の正規化後に必要なものである。GビットとR
ビットとXビットは、中間結果が2つの最も近い表現可
能な値に同程度に近いかどうかを判定するために丸め中
に必要なものである。Xビットは、累算器の右シフトま
たはその他の下位結果ビットの生成のために、Rビット
の下位側に現れると思われるすべてのビットの論理和を
表現することにより、GビットとRビットの拡張部とし
て機能する。GビットとRビットは左シフトに関与し、
ゼロはRビットにシフトされる。中間結果の仮数部は、
Lビットと、FRACTIONと、G、R、Xの各ビットとで構
成される。ある演算の無限精度中間結果は、浮動小数点
累算器のL、FRACTION、G、R、Xビットで正規化され
た結果である。結果をFPR(浮動小数点レジスタ)に
格納する前に、必要であれば、FRSCR[RN](F
RSCRは浮動小数点状況制御レジスタ、RNは丸めモ
ード)によって指定される丸めモードを使用して仮数を
丸める。丸めによってCへの繰上りが発生する場合、仮
数部は1桁右にシフトされ、指数は1だけ増分される。
これにより、おそらく指数のオーバフローが発生するは
ずである。丸めに使用するビット位置の左の小数ビット
はFPRに格納され、下位ビット位置がある場合、その
ビット位置はゼロに設定される。
【0012】IEEE754規格によれば、FRSCR
[RN]によりユーザ選択可能な4通りの丸めモードが
提供される。丸めの場合、概念上の保護、丸め、スティ
ッキーの各ビットは累算器ビットで定義される。倍精度
浮動小数点数用の保護、丸め、スティッキーの各ビット
の位置は、累算器のビット53(Gビット)、ビット5
4(Rビット)、ビット55(Xビット)になる。単精
度浮動小数点数の場合、保護(G)、丸め(R)、ステ
ィッキー(X)の各ビットの位置は、累算器のビット2
4、ビット25、ビット26〜52(G、R、Xビッ
ト)になる。
【0013】必要であれば、保持すべき最下位ビットが
FRACTIONの下位ビット位置になるまで、仮数部を右にシ
フトした場合のように丸めを扱うことができる。保護、
丸め、スティッキーのいずれかのビットが非ゼロである
場合、その結果は不正確になる。保護ビットは中間結果
のビット53である。丸めビットは中間結果のビット5
4である。スティッキー・ビットはビット55(これを
含む)の右側の残りのすべてのビットのORである。
【0014】オペランドが非正規化数である場合、これ
は演算を開始する前に事前正規化される。得られる仮数
の最上位ビットが1ではない場合、その結果は正規化さ
れる。結果は、FPSCRの浮動小数点丸め制御フィー
ルドRNの制御の下でターゲット精度まで丸められ、f
rD(浮動小数点宛先レジスタD)に入れられる。
【0015】特定のマイクロプロセッサ・システム・ア
ーキテクチャによれば、具体的な1組の条件についてテ
ストするためのTRAP命令を用意することができる。
トラップ命令によってテストした条件のいずれかを満足
する場合、システム・トラップ・ハンドラが呼び出され
る。テストした条件をすべて満足しない場合、命令実行
は通常通りに続行される。
【0016】上記の浮動小数点の説明に関連して示す
と、スーパースカラ計算機の命令の特定の例は、米国ニ
ューヨーク州アーモンクのIBMより入手可能なRIS
CマイクロプロセッサのPower/PowerPCフ
ァミリーなどの拡張マイクロプロセッサ・アーキテクチ
ャにおける統合乗算加算命令(+/−(A*C)+/−
B)の実現である。統合乗算加算命令(+/−(A*
C)+/−B)は通常、RISCマイクロプロセッサの
乗算累算(MAC)ユニットで実行される。拡張マイク
ロプロセッサ・アーキテクチャの実施態様では、たとえ
ば、図2のユニット10(すなわち、ヒューズ付き乗算
加算ユニット)など、3つのオペランドA、B、Cを受
け入れる単一ユニットで乗算加算命令をサポートしてい
る。浮動小数点乗算加算命令の場合、参照番号12によ
って識別されるレジスタfrA(浮動小数点レジスタ
A)内の浮動小数点オペランドに、参照番号14によっ
て識別されるレジスタfrC(浮動小数点レジスタC)
内の浮動小数点オペランドを掛ける。参照番号16によ
って識別されるレジスタfrB(浮動小数点レジスタ
B)内の浮動小数点オペランドを中間結果A*Cに加え
る。加数Bとの加算の前の積A*Cの中間丸めを取り除
くことにより、高精度が達成される。このような実施態
様をたとえば図2に示すが、同図のpはオペランド精度
を表す。このようなヒューズ付き乗算加算ユニット10
では、Bの加算前の積A*Cの丸めが回避され、最終結
果の1回の丸めだけが行われるという利点が得られる
が、ヒューズ付き乗算加算ユニットには欠点がある。た
とえば、スーパースカラ・プロセッサでヒューズ付き乗
算加算ユニットを実現する際の主な欠点の1つは、最良
のパフォーマンスが得られないこと、すなわち、乗算加
算命令のための並行した乗算命令と加算命令が不可能な
ことである。
【0017】命令を順不同で実行するスーパースカラ計
算機では、乗算動作と加算動作の待ち時間を最小限にす
るためにそれぞれ最適化された個別ユニットで乗算と加
算が独立して続行できるようにすることにより、パフォ
ーマンスの改善が達成される。個々の加算ユニットと乗
算ユニットは、たとえば、米国カリフォルニア州サンタ
・クララのIntel社から入手可能なIntelのx
86ベース・プロセッサに含まれている。さらに、x8
6プロセッサは拡張精度用にフォーマットされている
(すなわち、各浮動小数点レジスタは81ビットを収容
する)。2つの64ビットの仮数を掛けると128ビッ
トの中間結果が得られ、これはその後、81ビットの拡
張精度フォーマット用に64ビットまで丸められる。こ
のような実施態様をたとえば図3に示すが、同図のpは
オペランド精度を表す。独立したユニットによって乗算
加算シーケンスを実行すると、2pという全精度データ
経路幅が乗算ユニットから加算ユニットに繰り上げられ
ない限り、オペランドBの加算前のA*Cという積の中
間丸めのために精度が失われる。データ経路の幅、サポ
ート・ユニット、レジスタを2倍にすることは、ほとん
ど場合、マイクロプロセッサのシリコン領域や複雑さの
点で極めて高価なものになる。
【0018】したがって、統合乗算加算実施態様に同等
の結果をもたらすように独立ユニット手法の改善策を提
供することが望ましいはずである。
【0019】
【発明が解決しようとする課題】本発明の一目的は、独
立した乗算実行ユニットと加算実行ユニットとを有する
プロセッサで乗算加算命令を実現することにある。
【0020】
【課題を解決するための手段】本発明の方法および装置
によれば、独立して動作し、2つの命令を並行して実行
する個別の乗算ユニットと加算ユニットとを有すること
により、乗算加算命令の最良パフォーマンスが達成され
る。本発明では、個別の乗算ユニットと加算ユニットと
を含むスーパースカラ・マシンの乗算加算命令で提供さ
れる高精度を達成する。さらに、本発明は、6つの命令
からなる拡張シーケンスを実行しなければならない状況
の識別のための乗算加算命令の安価なハードウェア実施
態様を提供する。
【0021】本発明によれば、浮動小数点演算ユニット
および方法は、3つのオペランドA、B、Cについて乗
算加算命令を実行する際に独立した乗算動作と加算動作
を実行し、各オペランドは所与の浮動小数点精度に応じ
てpビットを有する。演算ユニットは、オペランドAお
よびCを受け取るための入力段階を有し、dビットのデ
ータ経路幅をさらに有し、p<d≦2pである乗算ユニ
ットを含む。入力段階は、オペランドAおよびCのそれ
ぞれの最下位ビットの右に連結されたbビットの0から
なるそれぞれのバッファを含み、bはd−pビットに等
しい。乗算ユニットは、d個の上位ビットACUPPER
d個の下位ビットACLOWERとを含む積A*Cを伝達す
るための出力段階をさらに含む。スティッキー・コレク
ト・ユニットは、ACLOWERを受け取り、ACLOWERのす
べてのビットの論理和を表すスティッキー・ビットを生
成し、ACLOWERのいずれかのビットが1になるとステ
ィッキー・ビットが1になる。ACUPPERとオペランド
Bとを受け取る入力段階を有する加算ユニットはdビッ
トのデータ経路を含む。加算ユニットの入力段階は、オ
ペランドBの最下位ビットの右に連結されたbビットの
0からなるバッファを含み、bはd−pビットに等し
い。加算ユニットは、結果量+/−ACUPPER+/−B
を出力するための出力段階をさらに含む。乗算ユニット
と、スティッキー・コレクト・ユニットと、加算ユニッ
トは、統合乗算加算シーケンスを実現する。丸め手段
は、スティッキー・ビットに応答して、さらに所望の丸
めモードに応じて、pビットの精度まで結果量+/−A
UPPER+/−Bを丸める。丸め手段は演算ユニットの
乗算加算出力をさらに出力する。リスク条件検出手段
は、丸め手段による結果量の丸めの前に結果量に関する
第1のリスク条件または第2のリスク条件のいずれかの
発生を検出する。第1のリスク条件は結果量+/−AC
UP PER+/−Bに関する不要な取消しを示し、第2のリ
スク条件は結果量+/−ACUPPER+/−Bにおける具
体的な精度の喪失を示す。リスク条件を検出すると、リ
スク条件検出手段は、元の結果量+/−ACUPPER+/
−Bを廃棄し、拡張乗算加算シーケンスを開始するため
にさらにトラップをトリガーする。最後に、実現手段
は、演算ユニットの乗算加算出力を提供するために、ト
ラップに応答して3つのオペランドA、B、Cについて
拡張乗算加算シーケンスを実現し、拡張乗算加算シーケ
ンスは統合乗算加算シーケンスとの数学的互換性を達成
するために選択される。
【0022】
【発明の実施の形態】本発明によれば、独立した乗算お
よび加算ハードウェア・ユニットによって乗算加算命令
が実現される。しかも、本発明の演算ユニットにより、
データ経路またはレジスタ幅を2倍にせずに統合乗算加
算実現と同等の結果が達成される。さらに、並行2命令
シーケンスのパフォーマンスが得られる。
【0023】以下にさらに詳述するように、本発明によ
る望ましい設計ポイントは次のようにいくつかの特徴に
よって達成される。第1に、乗算加算命令シーケンス
は、初期乗算(A*C)とそれに続く単一加算(AC
UPPER+B)からなる。第2に、データ経路幅は、ター
ゲット精度(ここではバッファという)を上回る数ビッ
ト分だけ拡張される。たとえば、好ましい実施例のデー
タ経路は、11ビットに相当するバッファ分だけ拡張さ
れる。第3に、固有のスティッキー・ビットは、切り捨
てられた下位積ビットACLOWER間の論理和から形成さ
れる。第4に、最終加算で検出可能であり、統合乗算加
算ユニットからの各種結果を達成するための発生見込み
を識別する第1および第2のリスク条件が識別される。
最後に、最終加算で第1および第2のリスク条件を動的
に検出すると、元の積結果を廃棄して、以下に示す式1
が詳細に示すような6命令の拡張乗算加算シーケンスに
よって再開するためのハードウェア・トラップをトリガ
ーする。したがって、このリスク条件は、拡張シーケン
スの実行を開始するために使用する。
【0024】次に図4および図5を参照し、3つのオペ
ランドA、B、Cに対して乗算加算命令を実行する際に
独立した乗算動作と加算動作を実行するための浮動小数
点演算ユニット100について説明する。オペランドA
は被乗数、オペランドCは乗数、オペランドBは加数で
ある。各オペランドは、所与の浮動小数点精度による規
定の数のpビットからなるデータを含む。pビットは、
データが正(+)であるか負(−)であるかを示す1つ
の符号ビットと、x個の指数ビットと、y個の仮数ビッ
トとを含む。
【0025】演算ユニット100は、オペランドAおよ
びCを受け取るための入力段階を有する乗算ユニット1
02を含む。この入力段階はdビットの外部データ経路
幅を含み、p<d≦2pである。この入力段階は、オペ
ランドAおよびCのそれぞれの最下位ビットの右に連結
されたbビットの0からなるそれぞれのバッファ(10
4、106)をさらに含む。好ましいことに、bはd−
pビットに等しい。乗算ユニット102は、積A*Cを
伝達するための出力段階をさらに含む。積A*Cは、d
個の上位ビットACUPPERとd個の下位ビットACLOWER
とを含む。
【0026】スティッキー・コレクト・ユニット108
は、図4に示すように、ACLOWERを受け取り、AC
LOWERのすべてのビットの論理和を表す固有のスティッ
キー・ビット110を生成するために設けられている。
スティッキー・ビット110は、ACLOWERのいずれか
のビットが1になると1になる。スティッキー・コレク
ト・ユニット108は、標準の浮動小数点スティッキー
・コレクタを含む。固有のスティッキー・ビット110
は、その後ACUPPERに関連付けられる特殊タグにな
る。
【0027】加算ユニット112は、ACUPPERとオペ
ランドBとを受け取るための入力段階を含む。加算ユニ
ット112は、dビットの外部データ経路幅をさらに含
み、さらにその入力段階は、オペランドBの最下位ビッ
トの右に連結されたbビットの0からなるバッファ11
4を含む。前述したものと同様に、バッファ114はb
ビットを含み、bはd−pビットに等しい。加算ユニッ
ト112は、結果量+/−ACUPPER+/−Bを出力す
るための出力段階をさらに含む。
【0028】本発明の浮動小数点演算ユニット100の
好ましい実施例では、乗算ユニット102は2dビット
の内部データ経路幅を含み、加算ユニット112はd+
1ビットの内部データ経路幅を含む。乗算ユニット10
2と加算ユニット112は、dビットの外部通信リンク
によってさらに相互接続され、p≦dの精度を有する結
果量を生成することができる。あるいは、乗算ユニット
102と加算ユニット112はそれぞれ、1つの符号ビ
ットと、16個の指数ビットと、64個の仮数ビットと
を含む81ビットの内部通信リンクをさらに含む。
【0029】さらに図4を参照すると、丸め手段116
は、固有のスティッキー・ビット110に応答して、さ
らに所望の丸めモードに応じて、pビットの精度まで結
果量+/−ACUPPER+/−Bを丸めるために設けられ
ている。丸め手段116は演算ユニット100の乗算加
算出力をさらに出力し、その乗算加算出力は最終結果に
対応する。
【0030】本発明の演算ユニット100に関連して、
リスク条件検出手段120は、第1のリスク条件または
第2のリスク条件のいずれかの発生を検出するために設
けられている。第1および第2のリスク条件は、丸め手
段116による結果量の最終丸めの前に結果量に関して
発生する。第1のリスク条件は結果量+/−ACUPPE R
+/−Bに関する不要な取消しを示し、第2のリスク条
件は結果量+/−ACU PPER+/−Bにおける固有の精
度の喪失を示す。第1または第2のリスク条件の一方を
検出すると、リスク条件検出手段120はさらにハード
ウェア・トラップ122をトリガーする。トリガーする
と、トラップ122は、その時点で存在する結果量+/
−ACUPPER+/−Bを廃棄し、さらに拡張乗算加算シ
ーケンス124を開始する。
【0031】リスク条件検出手段は、先行ゼロ検出(L
ZD)手段126と、ゼロ検出(ZD)手段128と、
適当な論理手段130とを含む。LZD手段126は、
結果量132の最初の「b」個の先行ビット140がす
べてゼロであるかどうかを検出する。しかも、LZD手
段126は、最初の「b」個の先行ビットがすべてゼロ
であることを表す第1の状態を有するLZD出力127
を出力する。ゼロ検出(ZD)手段128は、結果量1
32の下位ビットのうちの最後の「b」個のビット14
2がすべてゼロであるかどうかを検出し、さらに下位ビ
ットのうちの最後の「b」個のビットがすべてゼロであ
ることを表す第1の状態を有するZD出力129を出力
する。最後に、リスク条件検出論理手段130は、ステ
ィッキー・ビット110、LZD出力127、ZD出力
129に応答し、i)1に相当するスティッキー・ビッ
ト110に対応する第1のリスク条件を検出したときに
トラップ122をトリガーし、LZD出力127が第1
の状態になり、ii)1に相当するスティッキー・ビット
110に対応する第2のリスク条件を検出したときにト
ラップ122をトリガーし、ZD出力129が第1の状
態になる。先行ゼロ検出手段126と、ゼロ検出手段1
28と、論理手段130の具体的な実施態様は、必要な
論理機能を実現するために当技術分野で既知の適当な論
理回路技法を使用して作成することができる。
【0032】リスク条件検出論理の詳細説明では、第1
または第2のリスク条件のいずれかが検出された場合、
拡張乗算加算シーケンスを実行しなければならない。第
1のリスク条件については、減算取消しにより回復不能
な精度の喪失が発生する。この場合、スティッキー・コ
レクト108の出力は1または「ON」に相当するステ
ィッキー・ビット110を示し、LZD手段126はb
ビット140(ただし、b=d−p)の取消しを示す。
すなわち、最終丸めの前にその和についてpビットを上
回る不要な取消しが行われたことになる。第2のリスク
条件については、ACという積の切捨て領域にBを加算
することにより精度の喪失が発生し、ACUPPERとAC
LOWERとの間の領域で繰上りが発生する。したがって、
第2のリスク条件の判定は、ACUPPER積に対してその
下位ビットへの加算または減算が行われるかどうかの判
定を含む。この場合、スティッキー・コレクト108の
出力は1または「ON」に相当するスティッキー・ビッ
ト110を示し、ZD手段128は下位bビット142
(ただし、b=d−p)が0に等しいことを示す。精度
を維持するため、Bを加算するには、全精度を備えた正
しい結果を得るためにACLOWER領域が全精度であるこ
とが必要である。
【0033】本発明により使用するための拡張乗算加算
シーケンスは、縮小データ経路を使用して実現すること
が好ましい。図5に示すような好ましい実施態様では、
中間乗算が2回行われる。第1の乗算中に部分積AC
(2p-1:p)の上位pビットが生成される。第2の乗算で
は、部分積AC(p-1:0)の下位pビットが生成される。
次に、以下の演算により、加算器を通る3回の通過によ
って乗算加算が実施される。
【数3】この場合、拡張乗算加算シーケンスは合計4つ
の個別の命令を必要とする。また、下位積の項AC
(p-1:0)では再正規化が必要であり、ハードウェアがさ
らに複雑になるかまたは個別の再正規化命令が必要であ
ることに留意されたい。あるいは、統合乗算加算シーケ
ンスとの数学的互換性を達成するための拡張シーケンス
を使用することができる。
【0034】次に図4および図5を参照し、3つのオペ
ランドA、B、Cに対して拡張乗算加算シーケンスを実
現するための手段124について詳細に説明する。上記
のように、拡張乗算加算シーケンスはトラップ122に
応答して開始される。拡張シーケンス実現手段124
は、拡張シーケンスを実現し、さらにリスク条件が発生
したときに演算ユニット100の乗算加算出力を出力す
る。拡張乗算加算シーケンス実現手段124は、オペラ
ンドAおよびCを受け取るためのpビットの縮小データ
経路幅を有する乗算手段150を含む。乗算手段150
は、中間積A*Cの結果152を出力するために第1お
よび第2の乗算を実行する。中間積A*Cは、上位pビ
ットの部分積AC(2p-1:p)と下位pビットの部分積AC
(p-1:0)とを含む。加算手段154は、以下の演算によ
り、加算ユニットを通る3回の通過を実行するために設
けられている。
【数4】その結果、無限精度の中間結果量AC+Bが生
成される。最後に、丸め手段156は、pビットの精度
まで中間結果量AC+Bを丸めるために設けられてい
る。丸め手段156は、本発明の演算ユニット100の
乗算加算出力に対応する出力をさらに出力する。
【0035】上記の説明に関連して、加算ユニットを通
る3回の通過を実行するための手段は、オペランドBを
受け取り、出力量B/2を出力するための入力段階を有
するシフト手段158と、それとの加算の準備として量
B/2と位置が合うように下位部分積AC(p-1:0)を調
整するための調整手段160とをさらに含む。次に、上
位部分積AC(2p-1:p)を量B/2に加算して、第1の中
間量AC(2p-1:p)+B/2を形成する。位置合せした部
分積AC(p-1:0)を量B/2に加算して、第2の中間量
AC(p-1:0)+B/2を形成する。最後に、第1および
第2の中間量をまとめて加算し、中間結果量AC+Bを
形成する。
【0036】図5に関して前述した拡張シーケンスの実
現は、最終丸めの前に無限精度まで正確なAC+Bとい
う結果を生成するように独立した乗算および加算データ
フロー・パイプを制御するためのハードウェア状態計算
機または低レベル・コードを使用して実行することがで
きる。第1の段階で乗算器は、個々にAおよびCオペラ
ンドの2倍の幅のAC結果を生成する。この結果は、幅
が制限された加算器およびデータフロー経路を通過して
移動するために、ACUPPER部分とACLOWER部分とに分
割される。3つの加算器を使用してAC+Bという結果
を生成する。本発明による統合乗算加算により、独立し
た乗算シーケンスと加算シーケンスとのパフォーマンス
の損失が防止される。ただし、幅pの入力オペランドに
対する乗算加算動作では、IEEE754浮動小数点規
格に定義された標準の丸め規則を使用して、幅3pの結
果を生成することができることに留意されたい。
【0037】リスク条件の検出を伴う本発明の高性能乗
算加算実施態様について、図4を参照して説明した。い
ずれかのリスク条件が検出された場合、精度の喪失が発
生しているので、図5の全乗算加算シーケンスを使用し
なければならない。高性能実施態様では、標準のAC乗
算動作が実行されて切り捨てられ、最下位ビットを伴う
データ経路は、前述のように残りの積から形成された標
準のスティッキー・ビットを含む。スティッキーは収集
され、その後、無限に精密な結果を生成するためには1
つのスティッキーだけが必要であるという想定の元に検
査される。Bの加算後、リスク条件検出器は、その想定
が正しかったか間違っていたかを示す。リスク条件は、
加算器の幅を希望通りに拡張することによって最小限に
することができる。図4の加算段階はdビットのデータ
経路幅を示している(d>pであり、データ経路は入力
オペランド精度よりbビット広い(b=d−p))。
【0038】Bオペランドの加算後、先行ゼロ検出を使
用して、最終結果が正規化を必要とするかどうかを判定
する。先行ゼロ検出の幅はデータ経路バッファの幅と同
じである。このため、AC積の切捨てによってその最終
結果にたどり着くかどうかを判定することができる。こ
のバッファにより、データ経路は精度の喪失なしにbビ
ット分だけ左に正規化することができる。最終結果がb
ビット以上の正規化を必要とする場合、AC積の切捨て
により不正確な結果が生成される。元の乗算オペランド
が正規化されると想定しているので、結果内に先行ゼロ
が発生するのは、BオペランドがACから効果的に減算
される場合のみである。リスク条件が発生するために
は、少なくともb個のビットを取り消さなければなら
ず、これはさらに大規模取消しと見なされる。
【0039】Bオペランドの加算によりバッファ域bを
越える繰上りが発生し、その結果、ACUPPER積を増分
すると、第2のリスク条件が発生する。繰上り(または
借り)がAC積の切捨ての結果として発生したかどうか
は判定できないので、拡張シーケンスを使用して動作を
再実行しなければならない。この想定は、AC積が先行
する1を有し、その結果の全精度を含むということに基
づくものである。BオペランドがACUPPER結果より下
に位置合せした場合、それはACUPPER結果に影響し、
その後、最終結果に影響する可能性がある。最終丸め、
ゼロ用のバッファ域、AC積後の初期スティッキー収集
を検査することにより、正確さの喪失が発生したかどう
かを判定することができる。
【0040】少数の追加ビットまでデータ経路を拡張す
ると、リスク条件(前述の通り)は十分まれなものにな
り、一時トラップから拡張乗算加算シーケンスへの相当
なパフォーマンスの低下を防止できるほどになる。たと
えば、倍精度フォーマットでは、53ビットのデータ経
路(小数点の左の1つの暗黙先行ビットを含む)が11
ビット分だけ拡張され、64ビットデータ経路を形成す
る。ここに示す多くの事例では、「データ経路」という
用語を使用し、使用してきた。データ経路と言う場合、
精度フォーマットの仮数部のみを指す。
【0041】上記の特徴に関連して、本発明による演算
ユニットおよび方法では、複合動作について非精密な結
果を得るために、中間演算動作中にリスク条件の特徴付
けを行うことが有利である。しかも、有利なことに、中
間演算動作中のリスク条件のハードウェア検出の実施態
様により、精密な結果を迅速に完了するか、または最初
の結果を一時変更するために拡張精度シーケンスを開始
することができる。式1に詳細を示す拡張乗算加算シー
ケンスは、上位および下位のA*C積結果について別々
に操作することにより、全精度の乗算加算結果を達成す
る。
【0042】実施態様例 ターゲット・フォーマットとして倍精度(1つの符号ビ
ットと、11個の指数ビットと、53個の有効仮数ビッ
ト)を選択する以下の例に関連して、本発明をさらに説
明することができる。個々のユニット(すなわち、乗算
ユニットと加算ユニット)、データ経路、およびレジス
タは、内部の81ビット・フォーマット(1つの符号ビ
ットと、16個の指数ビットと、64個の仮数ビット)
をサポートする。本発明に関しては、2命令乗算加算の
正確さは、以下の2通りの状況下で統合乗算加算の正確
さとは異なるものと判定されている。 1.AC+/−Bは減ずべきであり、ACとBは匹敵す
る大きさである。この場合、最終加算/減算中に、(大
規模取消しに対応する)AC項とB項の部分取消しによ
り仮数精度が失われる。統合命令乗算加算と比較する
と、積および減数の指数の差が11未満である場合、独
立命令の乗算加算実施態様は潜在的に正確さが劣る可能
性がある。この条件は仮数加算の直後に加算器の内部で
容易に検出され、和の再正規化を制御するために先行ゼ
ロ検出(LZD)が実現される。LZDカウントが10
を超える場合、仮数の正確さは統合乗算加算で得られる
はずのものより低下する可能性があり、式1の拡張シー
ケンスを使用した命令再生が必要になる。 2.統合命令(fmadd)乗算加算実施態様では保持
されるが本発明による独立命令(fmadd)乗算加算
では乗算後に廃棄される下位積ビットと加数項との間の
加算または減算は、最終丸めの結果を決定する際に決定
的なものになる。この特定の状況は分析され識別されて
いるが、リスク条件は丸め前に和の仮数から識別され
る。というのは、これはトラップ条件検出器を実現する
ためにも便利な時点であるからである。まれな場合にす
べてのリスク条件がゼロが連続する10ビット・フィー
ルドを共用するので、10ビットのゼロ検出時にトラッ
プするだけで十分であることが分かっている。余分なビ
ットがそれより少ない実施態様の場合、拡張シーケンス
への不要なトラップを最小限にするために最下位ビット
(LSB)と保護ビットもデコードすることが必要にな
る可能性がある。
【0043】したがって、無限の中間精度を提供し、独
立した乗算ユニットと加算ユニットによって達成される
乗算加算命令を実現するための浮動小数点方法および装
置を示してきた。このような方法および装置は、さらに
スループットの改善をもたらす。しかも、本発明は、P
owerPCのコア命令セットからの乗算加算命令を実
行して同じ結果を得ることができる単一浮動小数点ユニ
ットを提供する。さらに、本発明の浮動小数点方法およ
び装置は、全精度乗算加算命令の実現のために乗算およ
び加算のx86コア命令を実行することができる。ここ
に述べたように、本発明は、拡張精度の独立した乗算ユ
ニットと加算ユニットによって倍精度乗算加算命令を有
利に実現する。数値の精度は53ビットであり、データ
・フロー精度は64ビットである。
【0044】その具体的な実施例を参照して本発明を具
体的に示し説明してきたが、形式および細部の点でそれ
に様々な変更を加えることができ、本発明の精神を逸脱
せずにここに具体的に記載した実施例を上回る本発明の
その他の実施例を作成または実施できることは、当業者
には理解されるだろう。同様に、現在開示されている実
施例の他の変更、組合せ、修正も明らかになるだろう。
開示した実施例とその詳細は、本発明の実施を教示する
ためのものであり、例示を目的とするものであって、限
定を目的とするものではない。したがって、このような
明らかではあるがまだ開示されていない実施例、変更、
組合せ、および修正は、特許請求の範囲のみに限定され
る本発明の精神および範囲に該当するものと見なされ
る。
【0045】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0046】(1)3つのオペランドA、B、Cについ
て乗算加算命令を実行する際に独立した乗算動作と加算
動作を実行するための浮動小数点演算ユニットにおい
て、Aは被乗数、Cは乗数、Bは加数であり、各オペラ
ンドは、データが正(+)の値を表すかまたは負(−)
の値を表すかを示す1つの符号ビットと、x個の指数ビ
ットと、y個の仮数ビットとを含む、所与の浮動小数点
精度に応じて規定数p個のビットからなるデータを含
み、(a)オペランドAおよびCを受け取るための入力
段階を含み、dビットの外部データ経路幅を有する乗算
ユニットであって、p<d≦2pであり、さらに入力段
階がオペランドAおよびCのそれぞれの最下位ビットの
右に連結されたbビットの0からなるそれぞれのバッフ
ァを含み、bがd−pビットに等しく、d個の上位ビッ
トACUPPERとd個の下位ビットACLOWERとを含む積A
*Cを伝達するための出力段階をさらに含む乗算ユニッ
トと、(b)ACLOWERを受け取り、ACLOWERのすべて
のビットの論理和を表すスティッキー・ビットを生成す
るスティッキー・コレクト・ユニットであって、AC
LOWERのいずれかのビットが1になるとスティッキー・
ビットが1になるスティッキー・コレクト・ユニット
と、(c)ACUPPERとオペランドBとを受け取る入力
段階を有し、dビットの外部データ経路幅を有する加算
ユニットであって、さらに入力段階がオペランドBの最
下位ビットの右に連結されたbビットの0からなるバッ
ファを含み、bがd−pビットに等しく、結果量+/−
ACUPPER+/−Bを出力するための出力段階をさらに
含み、前記乗算ユニットと、前記スティッキー・コレク
ト・ユニットと、前記加算ユニットが統合乗算加算シー
ケンスを実現する加算ユニットと、(d)スティッキー
・ビットに応答して、さらに所望の丸めモードに応じ
て、pビットの精度まで結果量+/−ACUPPER+/−
Bを丸める手段であって、前記演算ユニットの乗算加算
出力をさらに出力する丸め手段と、(e)前記丸め手段
による結果量の丸めの前に結果量に関する第1のリスク
条件または第2のリスク条件のいずれかの発生を検出す
る手段であって、第1のリスク条件は結果量+/−AC
UPPER+/−Bに関する不要な取消しを示し、第2のリ
スク条件は結果量+/−ACUPPER+/−Bにおける具
体的な精度の喪失を示し、リスク条件を検出すると、結
果量+/−ACUPPER+/−Bを廃棄し、さらに拡張乗
算加算シーケンスを開始するためにトラップをトリガー
するリスク条件検出手段と、(f)トラップに応答して
3つのオペランドA、B、Cについて拡張乗算加算シー
ケンスを実現し、前記演算ユニットの乗算加算出力を出
力するための手段であって、統合乗算加算シーケンスと
の数学的互換性を達成するために拡張乗算加算シーケン
スが選択される実現手段とを含む浮動小数点演算ユニッ
ト。 (2)前記リスク条件検出手段が、結果量の最初のb個
の先行ビットがすべてゼロであるかどうかを検出する先
行ゼロ検出(LZD)手段であって、最初のb個の先行
ビットがすべてゼロであることを表す第1の状態を有す
るLZD出力を出力する先行ゼロ検出(LZD)手段
と、結果量の下位ビットのうちの最後のb個のビットが
すべてゼロであるかどうかを検出するゼロ検出(ZD)
手段であって、下位ビットのうちの最後のb個のビット
がすべてゼロであることを表す第1の状態を有するZD
出力を出力するゼロ検出(ZD)手段と、スティッキー
・ビット、LZD出力、ZD出力に応答する論理手段で
あって、 i)1に相当するスティッキー・ビットに対応する第1
のリスク条件を検出したときにトラップをトリガーし、
LZD出力が第1の状態になり、 ii)1に相当するスティッキー・ビットに対応する第2
のリスク条件を検出したときにトラップをトリガーし、
ZD出力が第1の状態になる論理手段とを含むことを特
徴とする、上記(1)に記載の浮動小数点演算ユニッ
ト。 (3)前記拡張乗算加算シーケンス実現手段が、オペラ
ンドAおよびCを受け取るためのpビットの縮小データ
経路幅を有し、上位pビットの部分積AC(2p-1:p)と下
位pビットの部分積AC(p-1:0)とを含む中間積A*C
を出力するために第1および第2の乗算を実行する乗算
手段と、以下の演算により、加算ユニットを通る3回の
通過を実行するための加算手段であって、
【数5】無限精度の中間結果量AC+Bを出力する加算
手段と、pビットの精度まで中間結果量AC+Bを丸
め、前記演算ユニットの乗算加算出力に対応する出力を
出力する丸め手段とを含むことを特徴とする、上記
(1)に記載の浮動小数点演算ユニット。 (4)加算ユニットを通る3回の通過を実行するための
前記手段が、オペランドBを受け取り、出力量B/2を
出力するための入力段階を有するシフト手段と、それと
の加算の準備として量B/2と位置が合うように下位部
分積AC(p-1:0 )を調整するための調整手段とをさらに
含み、上位部分積AC(2p-1:p)を量B/2に加算して第
1の中間量AC(2p-1:p)+B/2を形成し、位置合せし
た部分積AC(p-1:0)を量B/2に加算して第2の中間
量AC(p-1:0)+B/2を形成し、第1および第2の中
間量を加算して中間結果量AC+Bを形成することを特
徴とする、上記(3)に記載の浮動小数点演算ユニッ
ト。 (5)前記乗算ユニットが2dビットの内部データ経路
幅を含み、前記加算ユニットがd+1ビットの内部デー
タ経路幅を含み、さらに前記乗算ユニットと前記加算ユ
ニットがdビットの外部通信リンクによって相互接続さ
れ、p≦dの精度を有する結果量を生成することができ
ることを特徴とする、上記(1)に記載の浮動小数点演
算ユニット。 (6)前記乗算ユニットと前記加算ユニットが、全中間
精度で乗算加算シーケンスを実行できる独立したユニッ
トであることをさらに特徴とする、上記(5)に記載の
浮動小数点演算ユニット。 (7)前記乗算ユニットと前記加算ユニットがそれぞ
れ、1つの符号ビットと、16個の指数ビットと、64
個の仮数ビットとを含む81ビットの内部通信リンクを
さらに含むことを特徴とする、上記(1)に記載の浮動
小数点演算ユニット。 (8)3つのオペランドA、B、Cについて乗算加算命
令を実行する際に独立した乗算動作と加算動作を実行す
るための浮動小数点演算方法において、Aは被乗数、C
は乗数、Bは加数であり、各オペランドは、データが正
(+)の値を表すかまたは負(−)の値を表すかを示す
1つの符号ビットと、x個の指数ビットと、y個の仮数
ビットとを含む、所与の浮動小数点精度に応じて規定数
p個のビットからなるデータを含み、(a)オペランド
AおよびCを受け取るための入力段階を含み、dビット
の外部データ経路幅を有する乗算ユニットを提供するス
テップであって、p<d≦2pであり、さらに入力段階
がオペランドAおよびCのそれぞれの最下位ビットの右
に連結されたbビットの0からなるそれぞれのバッファ
を含み、bがd−pビットに等しく、前記乗算ユニット
がd個の上位ビットACUPPERとd個の下位ビットAC
LOWERとを含む積A*Cを伝達するための出力段階をさ
らに含む乗算ステップと、(b)ACLOWERを受け取
り、ACLOWERのすべてのビットの論理和を表すスティ
ッキー・ビットを生成するスティッキー・コレクト・ユ
ニットを提供するステップであって、ACLOWERのいず
れかのビットが1になるとスティッキー・ビットが1に
なるスティッキー・コレクト・ステップと、(c)AC
UPPERとオペランドBとを受け取る入力段階を有し、d
ビットの外部データ経路幅を有する加算ユニットを提供
するステップであって、さらに入力段階がオペランドB
の最下位ビットの右に連結されたbビットの0からなる
バッファを含み、bがd−pビットに等しく、前記加算
ユニットが結果量+/−ACUPPER+/−Bを出力する
ための出力段階をさらに含み、乗算ユニットと、スティ
ッキー・コレクト・ユニットと、加算ユニットが統合乗
算加算シーケンスを実現する加算ステップと、(d)ス
ティッキー・ビットに応答して、さらに所望の丸めモー
ドに応じて、pビットの精度まで結果量+/−AC
UPPER+/−Bを丸めるステップであって、乗算加算出
力をさらに出力する丸めステップと、(e)前記丸めス
テップによる結果量の丸めの前に結果量に関する第1の
リスク条件または第2のリスク条件のいずれかの発生を
検出するステップであって、第1のリスク条件は結果量
+/−ACUPPER+/−Bに関する不要な取消しを示
し、第2のリスク条件は結果量+/−ACUPPER+/−
Bにおける具体的な精度の喪失を示し、リスク条件を検
出すると、結果量+/−ACUPPER+/−Bを廃棄し、
さらに拡張乗算加算シーケンスを開始するためにトラッ
プをトリガーするリスク条件検出ステップと、(f)ト
ラップに応答して3つのオペランドA、B、Cについて
拡張乗算加算シーケンスを実現し、乗算加算出力を出力
するステップであって、統合乗算加算シーケンスとの数
学的互換性を達成するために拡張乗算加算シーケンスが
選択される実現ステップとを含む浮動小数点演算方法。 (9)前記リスク条件検出ステップが、結果量の最初の
b個の先行ビットがすべてゼロであるかどうかを検出す
る先行ゼロ検出(LZD)ステップであって、最初のb
個の先行ビットがすべてゼロであることを表す第1の状
態を有するLZD出力を出力する先行ゼロ検出(LZ
D)ステップと、結果量の下位ビットのうちの最後のb
個のビットがすべてゼロであるかどうかを検出するゼロ
検出(ZD)ステップであって、下位ビットのうちの最
後のb個のビットがすべてゼロであることを表す第1の
状態を有するZD出力を出力するゼロ検出(ZD)ステ
ップと、スティッキー・ビット、LZD出力、ZD出力
に応答する論理手段を提供するステップであって、 i)1に相当するスティッキー・ビットに対応する第1
のリスク条件を検出したときにトラップをトリガーし、
LZD出力が第1の状態になり、 ii)1に相当するスティッキー・ビットに対応する第2
のリスク条件を検出したときにトラップをトリガーし、
ZD出力が第1の状態になる論理ステップとを含むこと
を特徴とする、上記(8)に記載の浮動小数点演算方
法。 (10)前記拡張乗算加算シーケンス実現ステップが、
オペランドAおよびCを受け取るためのpビットの縮小
データ経路幅を有し、上位pビットの部分積AC
(2p-1:p)と下位pビットの部分積AC(p-1:0)とを含む
中間積A*Cを出力するために第1および第2の乗算を
実行する乗算手段を提供する乗算ステップと、以下の演
算により、加算ユニットを通る3回の通過を実行するス
テップであって、
【数6】無限精度の中間結果量AC+Bを出力する加算
ステップと、pビットの精度まで中間結果量AC+Bを
丸め、乗算加算出力に対応する出力を出力する丸めステ
ップとを含むことを特徴とする、上記(8)に記載の浮
動小数点演算方法。 (11)加算ユニットを通る3回の通過を実行する前記
ステップが、オペランドBをシフトして、出力量B/2
を出力するステップと、それとの加算の準備として量B
/2と位置が合うように下位部分積AC(p-1:0 )を調整
するステップとをさらに含み、上位部分積AC(2p-1:p)
を量B/2に加算して第1の中間量AC(2p-1:p)+B/
2を形成し、位置合せした部分積AC(p-1:0)を量B/
2に加算して第2の中間量AC(p-1:0)+B/2を形成
し、第1および第2の中間量を加算して中間結果量AC
+Bを形成することを特徴とする、上記(10)に記載
の浮動小数点演算方法。 (12)乗算ユニットが2dビットの内部データ経路幅
を含み、加算ユニットがd+1ビットの内部データ経路
幅を含み、さらに乗算ユニットと加算ユニットがdビッ
トの外部通信リンクによって相互接続され、p≦dの精
度を有する結果量を生成することができることを特徴と
する、上記(8)に記載の浮動小数点演算方法。 (13)乗算ユニットと前記加算ユニットが、全中間精
度で乗算加算シーケンスを実行できる独立したユニット
であることをさらに特徴とする、上記(12)に記載の
浮動小数点演算方法。 (14)乗算ユニットと加算ユニットがそれぞれ、1つ
の符号ビットと、16個の指数ビットと、64個の仮数
ビットとを含む81ビットの内部通信リンクをさらに含
むことを特徴とする、上記(8)に記載の浮動小数点演
算方法。
【図面の簡単な説明】
【図1】単精度(32ビット)、倍精度(64ビッ
ト)、拡張精度(81ビット)用の浮動小数点精度フォ
ーマットを示す図である。
【図2】既知の拡張マイクロプロセッサ・アーキテクチ
ャのヒューズ付き乗算加算ユニットにおける統合乗算加
算命令(+/−(A*C)+/−B)の流れ図の実施態
様を示す図である。
【図3】既知の拡張マイクロプロセッサ・アーキテクチ
ャの独立した乗算ユニットと加算ユニットによって実現
される乗算加算動作の流れ図の実施態様を示す図であ
る。
【図4】本発明による独立した乗算ユニットと加算ユニ
ットによって実現される乗算加算動作の流れ図の実施態
様を示す図である。
【図5】本発明による独立した乗算ユニットと加算ユニ
ットによって実現される乗算加算動作の拡張シーケンス
の流れ図の実施態様を示す図である。
【符号の説明】
100 浮動小数点演算ユニット 102 乗算ユニット 104 バッファ 106 バッファ 108 スティッキー・コレクト・ユニット 110 スティッキー・ビット 112 加算ユニット 114 バッファ 116 丸め手段 120 リスク条件検出手段 122 ハードウェア・トラップ 124 拡張乗算加算シーケンス 126 先行ゼロ検出(LZD)手段 127 LZD出力 128 ゼロ検出(ZD)手段 129 ZD出力 130 リスク条件検出論理手段 132 結果量 140 最初の「b」個の先行ビット 142 最後の「b」個のビット
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成10年2月23日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
【数1】 無限精度の中間結果量AC+Bを出力する加算手段と、 pビットの精度まで中間結果量AC+Bを丸め、前記演
算ユニットの乗算加算出力に対応する出力を出力する丸
め手段とを含むことを特徴とする、請求項1に記載の浮
動小数点演算ユニット。
【数2】 無限精度の中間結果量AC+Bを出力する加算ステップ
と、 pビットの精度まで中間結果量AC+Bを丸め、乗算加
算出力に対応する出力を出力する丸めステップとを含む
ことを特徴とする、請求項8に記載の浮動小数点演算方
法。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0033
【補正方法】変更
【補正内容】
【0033】本発明により使用するための拡張乗算加算
シーケンスは、縮小データ経路を使用して実現すること
が好ましい。図5に示すような好ましい実施態様では、
中間乗算が2回行われる。第1の乗算中に部分積AC
(2p-1:p)の上位pビットが生成される。第2の乗算で
は、部分積AC(p-1:0)の下位pビットが生成される。
次に、以下の演算により、加算器を通る3回の通過によ
って乗算加算が実施される。
【数3】 この場合、拡張乗算加算シーケンスは合計4つの個別の
命令を必要とする。また、下位積の項AC(p-1:0)では
再正規化が必要であり、ハードウェアがさらに複雑にな
るかまたは個別の再正規化命令が必要であることに留意
されたい。あるいは、統合乗算加算シーケンスとの数学
的互換性を達成するための拡張シーケンスを使用するこ
とができる。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0034
【補正方法】変更
【補正内容】
【0034】次に図4および図5を参照し、3つのオペ
ランドA、B、Cに対して拡張乗算加算シーケンスを実
現するための手段124について詳細に説明する。上記
のように、拡張乗算加算シーケンスはトラップ122に
応答して開始される。拡張シーケンス実現手段124
は、拡張シーケンスを実現し、さらにリスク条件が発生
したときに演算ユニット100の乗算加算出力を出力す
る。拡張乗算加算シーケンス実現手段124は、オペラ
ンドAおよびCを受け取るためのpビットの縮小データ
経路幅を有する乗算手段150を含む。乗算手段150
は、中間積A*Cの結果152を出力するために第1お
よび第2の乗算を実行する。中間積A*Cは、上位pビ
ットの部分積AC(2p-1:p)と下位pビットの部分積AC
(p-1:0)とを含む。加算手段154は、以下の演算によ
り、加算ユニットを通る3回の通過を実行するために設
けられている。
【数4】 その結果、無限精度の中間結果量AC+Bが生成され
る。最後に、丸め手段156は、pビットの精度まで中
間結果量AC+Bを丸めるために設けられている。丸め
手段156は、本発明の演算ユニット100の乗算加算
出力に対応する出力をさらに出力する。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0046
【補正方法】変更
【補正内容】
【0046】(1)3つのオペランドA、B、Cについ
て乗算加算命令を実行する際に独立した乗算動作と加算
動作を実行するための浮動小数点演算ユニットにおい
て、Aは被乗数、Cは乗数、Bは加数であり、各オペラ
ンドは、データが正(+)の値を表すかまたは負(−)
の値を表すかを示す1つの符号ビットと、x個の指数ビ
ットと、y個の仮数ビットとを含む、所与の浮動小数点
精度に応じて規定数p個のビットからなるデータを含
み、(a)オペランドAおよびCを受け取るための入力
段階を含み、dビットの外部データ経路幅を有する乗算
ユニットであって、p<d≦2pであり、さらに入力段
階がオペランドAおよびCのそれぞれの最下位ビットの
右に連結されたbビットの0からなるそれぞれのバッフ
ァを含み、bがd−pビットに等しく、d個の上位ビッ
トACUPPERとd個の下位ビットACLOWERとを含む積A
*Cを伝達するための出力段階をさらに含む乗算ユニッ
トと、(b)ACLOWERを受け取り、ACLOWERのすべて
のビットの論理和を表すスティッキー・ビットを生成す
るスティッキー・コレクト・ユニットであって、AC
LOWERのいずれかのビットが1になるとスティッキー・
ビットが1になるスティッキー・コレクト・ユニット
と、(c)ACUPPERとオペランドBとを受け取る入力
段階を有し、dビットの外部データ経路幅を有する加算
ユニットであって、さらに入力段階がオペランドBの最
下位ビットの右に連結されたbビットの0からなるバッ
ファを含み、bがd−pビットに等しく、結果量+/−
ACUPPER+/−Bを出力するための出力段階をさらに
含み、前記乗算ユニットと、前記スティッキー・コレク
ト・ユニットと、前記加算ユニットが統合乗算加算シー
ケンスを実現する加算ユニットと、(d)スティッキー
・ビットに応答して、さらに所望の丸めモードに応じ
て、pビットの精度まで結果量+/−ACUPPER+/−
Bを丸める手段であって、前記演算ユニットの乗算加算
出力をさらに出力する丸め手段と、(e)前記丸め手段
による結果量の丸めの前に結果量に関する第1のリスク
条件または第2のリスク条件のいずれかの発生を検出す
る手段であって、第1のリスク条件は結果量+/−AC
UPPER+/−Bに関する不要な取消しを示し、第2のリ
スク条件は結果量+/−ACUPPER+/−Bにおける具
体的な精度の喪失を示し、リスク条件を検出すると、結
果量+/−ACUPPER+/−Bを廃棄し、さらに拡張乗
算加算シーケンスを開始するためにトラップをトリガー
するリスク条件検出手段と、(f)トラップに応答して
3つのオペランドA、B、Cについて拡張乗算加算シー
ケンスを実現し、前記演算ユニットの乗算加算出力を出
力するための手段であって、統合乗算加算シーケンスと
の数学的互換性を達成するために拡張乗算加算シーケン
スが選択される実現手段とを含む浮動小数点演算ユニッ
ト。 (2)前記リスク条件検出手段が、結果量の最初のb個
の先行ビットがすべてゼロであるかどうかを検出する先
行ゼロ検出(LZD)手段であって、最初のb個の先行
ビットがすべてゼロであることを表す第1の状態を有す
るLZD出力を出力する先行ゼロ検出(LZD)手段
と、結果量の下位ビットのうちの最後のb個のビットが
すべてゼロであるかどうかを検出するゼロ検出(ZD)
手段であって、下位ビットのうちの最後のb個のビット
がすべてゼロであることを表す第1の状態を有するZD
出力を出力するゼロ検出(ZD)手段と、スティッキー
・ビット、LZD出力、ZD出力に応答する論理手段で
あって、 i)1に相当するスティッキー・ビットに対応する第1
のリスク条件を検出したときにトラップをトリガーし、
LZD出力が第1の状態になり、 ii)1に相当するスティッキー・ビットに対応する第2
のリスク条件を検出したときにトラップをトリガーし、
ZD出力が第1の状態になる論理手段とを含むことを特
徴とする、上記(1)に記載の浮動小数点演算ユニッ
ト。 (3)前記拡張乗算加算シーケンス実現手段が、オペラ
ンドAおよびCを受け取るためのpビットの縮小データ
経路幅を有し、上位pビットの部分積AC(2p-1:p)と下
位pビットの部分積AC(p-1:0)とを含む中間積A*C
を出力するために第1および第2の乗算を実行する乗算
手段と、以下の演算により、加算ユニットを通る3回の
通過を実行するための加算手段であって、
【数5】 無限精度の中間結果量AC+Bを出力する加算手段と、
pビットの精度まで中間結果量AC+Bを丸め、前記演
算ユニットの乗算加算出力に対応する出力を出力する丸
め手段とを含むことを特徴とする、上記(1)に記載の
浮動小数点演算ユニット。 (4)加算ユニットを通る3回の通過を実行するための
前記手段が、オペランドBを受け取り、出力量B/2を
出力するための入力段階を有するシフト手段と、それと
の加算の準備として量B/2と位置が合うように下位部
分積AC(p-1:0 )を調整するための調整手段とをさらに
含み、上位部分積AC(2p-1:p)を量B/2に加算して第
1の中間量AC(2p-1:p)+B/2を形成し、位置合せし
た部分積AC(p-1:0)を量B/2に加算して第2の中間
量AC(p-1:0)+B/2を形成し、第1および第2の中
間量を加算して中間結果量AC+Bを形成することを特
徴とする、上記(3)に記載の浮動小数点演算ユニッ
ト。 (5)前記乗算ユニットが2dビットの内部データ経路
幅を含み、前記加算ユニットがd+1ビットの内部デー
タ経路幅を含み、さらに前記乗算ユニットと前記加算ユ
ニットがdビットの外部通信リンクによって相互接続さ
れ、p≦dの精度を有する結果量を生成することができ
ることを特徴とする、上記(1)に記載の浮動小数点演
算ユニット。 (6)前記乗算ユニットと前記加算ユニットが、全中間
精度で乗算加算シーケンスを実行できる独立したユニッ
トであることをさらに特徴とする、上記(5)に記載の
浮動小数点演算ユニット。 (7)前記乗算ユニットと前記加算ユニットがそれぞ
れ、1つの符号ビットと、16個の指数ビットと、64
個の仮数ビットとを含む81ビットの内部通信リンクを
さらに含むことを特徴とする、上記(1)に記載の浮動
小数点演算ユニット。 (8)3つのオペランドA、B、Cについて乗算加算命
令を実行する際に独立した乗算動作と加算動作を実行す
るための浮動小数点演算方法において、Aは被乗数、C
は乗数、Bは加数であり、各オペランドは、データが正
(+)の値を表すかまたは負(−)の値を表すかを示す
1つの符号ビットと、x個の指数ビットと、y個の仮数
ビットとを含む、所与の浮動小数点精度に応じて規定数
p個のビットからなるデータを含み、(a)オペランド
AおよびCを受け取るための入力段階を含み、dビット
の外部データ経路幅を有する乗算ユニットを提供するス
テップであって、p<d≦2pであり、さらに入力段階
がオペランドAおよびCのそれぞれの最下位ビットの右
に連結されたbビットの0からなるそれぞれのバッファ
を含み、bがd−pビットに等しく、前記乗算ユニット
がd個の上位ビットACUPPERとd個の下位ビットAC
LOWERとを含む積A*Cを伝達するための出力段階をさ
らに含む乗算ステップと、(b)ACLOWERを受け取
り、ACLOWERのすべてのビットの論理和を表すスティ
ッキー・ビットを生成するスティッキー・コレクト・ユ
ニットを提供するステップであって、ACLOWERのいず
れかのビットが1になるとスティッキー・ビットが1に
なるスティッキー・コレクト・ステップと、(c)AC
UPPERとオペランドBとを受け取る入力段階を有し、d
ビットの外部データ経路幅を有する加算ユニットを提供
するステップであって、さらに入力段階がオペランドB
の最下位ビットの右に連結されたbビットの0からなる
バッファを含み、bがd−pビットに等しく、前記加算
ユニットが結果量+/−ACUPPER+/−Bを出力する
ための出力段階をさらに含み、乗算ユニットと、スティ
ッキー・コレクト・ユニットと、加算ユニットが統合乗
算加算シーケンスを実現する加算ステップと、(d)ス
ティッキー・ビットに応答して、さらに所望の丸めモー
ドに応じて、pビットの精度まで結果量+/−AC
UPPER+/−Bを丸めるステップであって、乗算加算出
力をさらに出力する丸めステップと、(e)前記丸めス
テップによる結果量の丸めの前に結果量に関する第1の
リスク条件または第2のリスク条件のいずれかの発生を
検出するステップであって、第1のリスク条件は結果量
+/−ACUPPER+/−Bに関する不要な取消しを示
し、第2のリスク条件は結果量+/−ACUPPER+/−
Bにおける具体的な精度の喪失を示し、リスク条件を検
出すると、結果量+/−ACUPPER+/−Bを廃棄し、
さらに拡張乗算加算シーケンスを開始するためにトラッ
プをトリガーするリスク条件検出ステップと、(f)ト
ラップに応答して3つのオペランドA、B、Cについて
拡張乗算加算シーケンスを実現し、乗算加算出力を出力
するステップであって、統合乗算加算シーケンスとの数
学的互換性を達成するために拡張乗算加算シーケンスが
選択される実現ステップとを含む浮動小数点演算方法。 (9)前記リスク条件検出ステップが、結果量の最初の
b個の先行ビットがすべてゼロであるかどうかを検出す
る先行ゼロ検出(LZD)ステップであって、最初のb
個の先行ビットがすべてゼロであることを表す第1の状
態を有するLZD出力を出力する先行ゼロ検出(LZ
D)ステップと、結果量の下位ビットのうちの最後のb
個のビットがすべてゼロであるかどうかを検出するゼロ
検出(ZD)ステップであって、下位ビットのうちの最
後のb個のビットがすべてゼロであることを表す第1の
状態を有するZD出力を出力するゼロ検出(ZD)ステ
ップと、スティッキー・ビット、LZD出力、ZD出力
に応答する論理手段を提供するステップであって、 i)1に相当するスティッキー・ビットに対応する第1
のリスク条件を検出したときにトラップをトリガーし、
LZD出力が第1の状態になり、 ii)1に相当するスティッキー・ビットに対応する第2
のリスク条件を検出したときにトラップをトリガーし、
ZD出力が第1の状態になる論理ステップとを含むこと
を特徴とする、上記(8)に記載の浮動小数点演算方
法。 (10)前記拡張乗算加算シーケンス実現ステップが、
オペランドAおよびCを受け取るためのpビットの縮小
データ経路幅を有し、上位pビットの部分積AC
(2p-1:p)と下位pビットの部分積AC(p-1:0)とを含む
中間積A*Cを出力するために第1および第2の乗算を
実行する乗算手段を提供する乗算ステップと、以下の演
算により、加算ユニットを通る3回の通過を実行するス
テップであって、
【数6】 無限精度の中間結果量AC+Bを出力する加算ステップ
と、pビットの精度まで中間結果量AC+Bを丸め、乗
算加算出力に対応する出力を出力する丸めステップとを
含むことを特徴とする、上記(8)に記載の浮動小数点
演算方法。 (11)加算ユニットを通る3回の通過を実行する前記
ステップが、オペランドBをシフトして、出力量B/2
を出力するステップと、それとの加算の準備として量B
/2と位置が合うように下位部分積AC(p-1:0 )を調整
するステップとをさらに含み、上位部分積AC(2p-1:p)
を量B/2に加算して第1の中間量AC(2p-1:p)+B/
2を形成し、位置合せした部分積AC(p-1:0)を量B/
2に加算して第2の中間量AC(p-1:0)+B/2を形成
し、第1および第2の中間量を加算して中間結果量AC
+Bを形成することを特徴とする、上記(10)に記載
の浮動小数点演算方法。 (12)乗算ユニットが2dビットの内部データ経路幅
を含み、加算ユニットがd+1ビットの内部データ経路
幅を含み、さらに乗算ユニットと加算ユニットがdビッ
トの外部通信リンクによって相互接続され、p≦dの精
度を有する結果量を生成することができることを特徴と
する、上記(8)に記載の浮動小数点演算方法。 (13)乗算ユニットと前記加算ユニットが、全中間精
度で乗算加算シーケンスを実行できる独立したユニット
であることをさらに特徴とする、上記(12)に記載の
浮動小数点演算方法。 (14)乗算ユニットと加算ユニットがそれぞれ、1つ
の符号ビットと、16個の指数ビットと、64個の仮数
ビットとを含む81ビットの内部通信リンクをさらに含
むことを特徴とする、上記(8)に記載の浮動小数点演
算方法。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェオフリー・フラニス・バーンズ アメリカ合衆国 ペンシルベニア州マカン ギー ウィロー・ストリート 241 (72)発明者 ジェームズ・エイチ・ヘッソン アメリカ合衆国78733 テキサス州オース チン ピューチェク・コーブ 10619

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】3つのオペランドA、B、Cについて乗算
    加算命令を実行する際に独立した乗算動作と加算動作を
    実行するための浮動小数点演算ユニットにおいて、Aは
    被乗数、Cは乗数、Bは加数であり、各オペランドは、
    データが正(+)の値を表すかまたは負(−)の値を表
    すかを示す1つの符号ビットと、x個の指数ビットと、
    y個の仮数ビットとを含む、所与の浮動小数点精度に応
    じて規定数p個のビットからなるデータを含み、 (a)オペランドAおよびCを受け取るための入力段階
    を含み、dビットの外部データ経路幅を有する乗算ユニ
    ットであって、p<d≦2pであり、さらに入力段階が
    オペランドAおよびCのそれぞれの最下位ビットの右に
    連結されたbビットの0からなるそれぞれのバッファを
    含み、bがd−pビットに等しく、d個の上位ビットA
    UPPERとd個の下位ビットACLOWERとを含む積A*C
    を伝達するための出力段階をさらに含む乗算ユニット
    と、 (b)ACLOWERを受け取り、ACLOWERのすべてのビッ
    トの論理和を表すスティッキー・ビットを生成するステ
    ィッキー・コレクト・ユニットであって、ACLOWER
    いずれかのビットが1になるとスティッキー・ビットが
    1になるスティッキー・コレクト・ユニットと、 (c)ACUPPERとオペランドBとを受け取る入力段階
    を有し、dビットの外部データ経路幅を有する加算ユニ
    ットであって、さらに入力段階がオペランドBの最下位
    ビットの右に連結されたbビットの0からなるバッファ
    を含み、bがd−pビットに等しく、結果量+/−AC
    UPPER+/−Bを出力するための出力段階をさらに含
    み、前記乗算ユニットと、前記スティッキー・コレクト
    ・ユニットと、前記加算ユニットが統合乗算加算シーケ
    ンスを実現する加算ユニットと、 (d)スティッキー・ビットに応答して、さらに所望の
    丸めモードに応じて、pビットの精度まで結果量+/−
    ACUPPER+/−Bを丸める手段であって、前記演算ユ
    ニットの乗算加算出力をさらに出力する丸め手段と、 (e)前記丸め手段による結果量の丸めの前に結果量に
    関する第1のリスク条件または第2のリスク条件のいず
    れかの発生を検出する手段であって、第1のリスク条件
    は結果量+/−ACUPPER+/−Bに関する不要な取消
    しを示し、第2のリスク条件は結果量+/−ACUPPER
    +/−Bにおける具体的な精度の喪失を示し、リスク条
    件を検出すると、結果量+/−ACUPPER+/−Bを廃
    棄し、さらに拡張乗算加算シーケンスを開始するために
    トラップをトリガーするリスク条件検出手段と、 (f)トラップに応答して3つのオペランドA、B、C
    について拡張乗算加算シーケンスを実現し、前記演算ユ
    ニットの乗算加算出力を出力するための手段であって、
    統合乗算加算シーケンスとの数学的互換性を達成するた
    めに拡張乗算加算シーケンスが選択される実現手段とを
    含む浮動小数点演算ユニット。
  2. 【請求項2】前記リスク条件検出手段が、 結果量の最初のb個の先行ビットがすべてゼロであるか
    どうかを検出する先行ゼロ検出(LZD)手段であっ
    て、最初のb個の先行ビットがすべてゼロであることを
    表す第1の状態を有するLZD出力を出力する先行ゼロ
    検出(LZD)手段と、 結果量の下位ビットのうちの最後のb個のビットがすべ
    てゼロであるかどうかを検出するゼロ検出(ZD)手段
    であって、下位ビットのうちの最後のb個のビットがす
    べてゼロであることを表す第1の状態を有するZD出力
    を出力するゼロ検出(ZD)手段と、 スティッキー・ビット、LZD出力、ZD出力に応答す
    る論理手段であって、 i)1に相当するスティッキー・ビットに対応する第1
    のリスク条件を検出したときにトラップをトリガーし、
    LZD出力が第1の状態になり、 ii)1に相当するスティッキー・ビットに対応する第2
    のリスク条件を検出したときにトラップをトリガーし、
    ZD出力が第1の状態になる論理手段とを含むことを特
    徴とする、請求項1に記載の浮動小数点演算ユニット。
  3. 【請求項3】前記拡張乗算加算シーケンス実現手段が、 オペランドAおよびCを受け取るためのpビットの縮小
    データ経路幅を有し、上位pビットの部分積AC
    (2p-1:p)と下位pビットの部分積AC(p-1:0)とを含む
    中間積A*Cを出力するために第1および第2の乗算を
    実行する乗算手段と、 以下の演算により、加算ユニットを通る3回の通過を実
    行するための加算手段であって、 【数1】無限精度の中間結果量AC+Bを出力する加算
    手段と、 pビットの精度まで中間結果量AC+Bを丸め、前記演
    算ユニットの乗算加算出力に対応する出力を出力する丸
    め手段とを含むことを特徴とする、請求項1に記載の浮
    動小数点演算ユニット。
  4. 【請求項4】加算ユニットを通る3回の通過を実行する
    ための前記手段が、 オペランドBを受け取り、出力量B/2を出力するため
    の入力段階を有するシフト手段と、 それとの加算の準備として量B/2と位置が合うように
    下位部分積AC(p-1:0 )を調整するための調整手段とを
    さらに含み、 上位部分積AC(2p-1:p)を量B/2に加算して第1の中
    間量AC(2p-1:p)+B/2を形成し、位置合せした部分
    積AC(p-1:0)を量B/2に加算して第2の中間量AC
    (p-1:0)+B/2を形成し、第1および第2の中間量を
    加算して中間結果量AC+Bを形成することを特徴とす
    る、請求項3に記載の浮動小数点演算ユニット。
  5. 【請求項5】前記乗算ユニットが2dビットの内部デー
    タ経路幅を含み、前記加算ユニットがd+1ビットの内
    部データ経路幅を含み、さらに前記乗算ユニットと前記
    加算ユニットがdビットの外部通信リンクによって相互
    接続され、p≦dの精度を有する結果量を生成すること
    ができることを特徴とする、請求項1に記載の浮動小数
    点演算ユニット。
  6. 【請求項6】前記乗算ユニットと前記加算ユニットが、
    全中間精度で乗算加算シーケンスを実行できる独立した
    ユニットであることをさらに特徴とする、請求項5に記
    載の浮動小数点演算ユニット。
  7. 【請求項7】前記乗算ユニットと前記加算ユニットがそ
    れぞれ、1つの符号ビットと、16個の指数ビットと、
    64個の仮数ビットとを含む81ビットの内部通信リン
    クをさらに含むことを特徴とする、請求項1に記載の浮
    動小数点演算ユニット。
  8. 【請求項8】3つのオペランドA、B、Cについて乗算
    加算命令を実行する際に独立した乗算動作と加算動作を
    実行するための浮動小数点演算方法において、Aは被乗
    数、Cは乗数、Bは加数であり、各オペランドは、デー
    タが正(+)の値を表すかまたは負(−)の値を表すか
    を示す1つの符号ビットと、x個の指数ビットと、y個
    の仮数ビットとを含む、所与の浮動小数点精度に応じて
    規定数p個のビットからなるデータを含み、 (a)オペランドAおよびCを受け取るための入力段階
    を含み、dビットの外部データ経路幅を有する乗算ユニ
    ットを提供するステップであって、p<d≦2pであ
    り、さらに入力段階がオペランドAおよびCのそれぞれ
    の最下位ビットの右に連結されたbビットの0からなる
    それぞれのバッファを含み、bがd−pビットに等し
    く、前記乗算ユニットがd個の上位ビットACUPPER
    d個の下位ビットACLOWERとを含む積A*Cを伝達す
    るための出力段階をさらに含む乗算ステップと、 (b)ACLOWERを受け取り、ACLOWERのすべてのビッ
    トの論理和を表すスティッキー・ビットを生成するステ
    ィッキー・コレクト・ユニットを提供するステップであ
    って、ACLOWERのいずれかのビットが1になるとステ
    ィッキー・ビットが1になるスティッキー・コレクト・
    ステップと、 (c)ACUPPERとオペランドBとを受け取る入力段階
    を有し、dビットの外部データ経路幅を有する加算ユニ
    ットを提供するステップであって、さらに入力段階がオ
    ペランドBの最下位ビットの右に連結されたbビットの
    0からなるバッファを含み、bがd−pビットに等し
    く、前記加算ユニットが結果量+/−ACUPPER+/−
    Bを出力するための出力段階をさらに含み、乗算ユニッ
    トと、スティッキー・コレクト・ユニットと、加算ユニ
    ットが統合乗算加算シーケンスを実現する加算ステップ
    と、 (d)スティッキー・ビットに応答して、さらに所望の
    丸めモードに応じて、pビットの精度まで結果量+/−
    ACUPPER+/−Bを丸めるステップであって、乗算加
    算出力をさらに出力する丸めステップと、 (e)前記丸めステップによる結果量の丸めの前に結果
    量に関する第1のリスク条件または第2のリスク条件の
    いずれかの発生を検出するステップであって、第1のリ
    スク条件は結果量+/−ACUPPER+/−Bに関する不
    要な取消しを示し、第2のリスク条件は結果量+/−A
    UPPER+/−Bにおける具体的な精度の喪失を示し、
    リスク条件を検出すると、結果量+/−ACUPPER+/
    −Bを廃棄し、さらに拡張乗算加算シーケンスを開始す
    るためにトラップをトリガーするリスク条件検出ステッ
    プと、 (f)トラップに応答して3つのオペランドA、B、C
    について拡張乗算加算シーケンスを実現し、乗算加算出
    力を出力するステップであって、統合乗算加算シーケン
    スとの数学的互換性を達成するために拡張乗算加算シー
    ケンスが選択される実現ステップとを含む浮動小数点演
    算方法。
  9. 【請求項9】前記リスク条件検出ステップが、 結果量の最初のb個の先行ビットがすべてゼロであるか
    どうかを検出する先行ゼロ検出(LZD)ステップであ
    って、最初のb個の先行ビットがすべてゼロであること
    を表す第1の状態を有するLZD出力を出力する先行ゼ
    ロ検出(LZD)ステップと、 結果量の下位ビットのうちの最後のb個のビットがすべ
    てゼロであるかどうかを検出するゼロ検出(ZD)ステ
    ップであって、下位ビットのうちの最後のb個のビット
    がすべてゼロであることを表す第1の状態を有するZD
    出力を出力するゼロ検出(ZD)ステップと、 スティッキー・ビット、LZD出力、ZD出力に応答す
    る論理手段を提供するステップであって、 i)1に相当するスティッキー・ビットに対応する第1
    のリスク条件を検出したときにトラップをトリガーし、
    LZD出力が第1の状態になり、 ii)1に相当するスティッキー・ビットに対応する第2
    のリスク条件を検出したときにトラップをトリガーし、
    ZD出力が第1の状態になる論理ステップとを含むこと
    を特徴とする、請求項8に記載の浮動小数点演算方法。
  10. 【請求項10】前記拡張乗算加算シーケンス実現ステッ
    プが、 オペランドAおよびCを受け取るためのpビットの縮小
    データ経路幅を有し、上位pビットの部分積AC
    (2p-1:p)と下位pビットの部分積AC(p-1:0)とを含む
    中間積A*Cを出力するために第1および第2の乗算を
    実行する乗算手段を提供する乗算ステップと、 以下の演算により、加算ユニットを通る3回の通過を実
    行するステップであって、 【数2】無限精度の中間結果量AC+Bを出力する加算
    ステップと、 pビットの精度まで中間結果量AC+Bを丸め、乗算加
    算出力に対応する出力を出力する丸めステップとを含む
    ことを特徴とする、請求項8に記載の浮動小数点演算方
    法。
  11. 【請求項11】加算ユニットを通る3回の通過を実行す
    る前記ステップが、 オペランドBをシフトして、出力量B/2を出力するス
    テップと、 それとの加算の準備として量B/2と位置が合うように
    下位部分積AC(p-1:0 )を調整するステップとをさらに
    含み、 上位部分積AC(2p-1:p)を量B/2に加算して第1の中
    間量AC(2p-1:p)+B/2を形成し、位置合せした部分
    積AC(p-1:0)を量B/2に加算して第2の中間量AC
    (p-1:0)+B/2を形成し、第1および第2の中間量を
    加算して中間結果量AC+Bを形成することを特徴とす
    る、請求項10に記載の浮動小数点演算方法。
  12. 【請求項12】乗算ユニットが2dビットの内部データ
    経路幅を含み、加算ユニットがd+1ビットの内部デー
    タ経路幅を含み、さらに乗算ユニットと加算ユニットが
    dビットの外部通信リンクによって相互接続され、p≦
    dの精度を有する結果量を生成することができることを
    特徴とする、請求項8に記載の浮動小数点演算方法。
  13. 【請求項13】乗算ユニットと前記加算ユニットが、全
    中間精度で乗算加算シーケンスを実行できる独立したユ
    ニットであることをさらに特徴とする、請求項12に記
    載の浮動小数点演算方法。
  14. 【請求項14】乗算ユニットと加算ユニットがそれぞ
    れ、1つの符号ビットと、16個の指数ビットと、64
    個の仮数ビットとを含む81ビットの内部通信リンクを
    さらに含むことを特徴とする、請求項8に記載の浮動小
    数点演算方法。
JP10001990A 1997-01-13 1998-01-08 浮動小数点演算ユニット Pending JPH10207693A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/784,731 US5880984A (en) 1997-01-13 1997-01-13 Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instruments
US08/784731 1997-01-13

Publications (1)

Publication Number Publication Date
JPH10207693A true JPH10207693A (ja) 1998-08-07

Family

ID=25133359

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10001990A Pending JPH10207693A (ja) 1997-01-13 1998-01-08 浮動小数点演算ユニット

Country Status (4)

Country Link
US (1) US5880984A (ja)
JP (1) JPH10207693A (ja)
KR (1) KR100302686B1 (ja)
TW (1) TW345645B (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000181724A (ja) * 1998-10-30 2000-06-30 Sun Microsyst Inc コンパイルする方法をランタイムにおいて選択する方法及び装置
US6895423B2 (en) 2001-12-28 2005-05-17 Fujitsu Limited Apparatus and method of performing product-sum operation
JP2016535360A (ja) * 2014-07-02 2016-11-10 ヴィア アライアンス セミコンダクター カンパニー リミテッド 非アトミック分割経路融合積和
JP2017515177A (ja) * 2014-03-26 2017-06-08 インテル・コーポレーション 3ソースオペランド浮動小数点加算プロセッサ、方法、システム、及び命令
US10078512B2 (en) 2016-10-03 2018-09-18 Via Alliance Semiconductor Co., Ltd. Processing denormal numbers in FMA hardware
US11061672B2 (en) 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6275838B1 (en) * 1997-12-03 2001-08-14 Intrinsity, Inc. Method and apparatus for an enhanced floating point unit with graphics and integer capabilities
US6202077B1 (en) * 1998-02-24 2001-03-13 Motorola, Inc. SIMD data processing extended precision arithmetic operand format
US7395302B2 (en) 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
US6212618B1 (en) * 1998-03-31 2001-04-03 Intel Corporation Apparatus and method for performing multi-dimensional computations based on intra-add operation
US7392275B2 (en) * 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
US6418529B1 (en) * 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
US6148314A (en) * 1998-08-28 2000-11-14 Arm Limited Round increment in an adder circuit
US6292886B1 (en) 1998-10-12 2001-09-18 Intel Corporation Scalar hardware for performing SIMD operations
US7242414B1 (en) 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
US6732259B1 (en) 1999-07-30 2004-05-04 Mips Technologies, Inc. Processor having a conditional branch extension of an instruction set architecture
US6542916B1 (en) * 1999-07-28 2003-04-01 Arm Limited Data processing apparatus and method for applying floating-point operations to first, second and third operands
US6912559B1 (en) 1999-07-30 2005-06-28 Mips Technologies, Inc. System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit
US6714197B1 (en) 1999-07-30 2004-03-30 Mips Technologies, Inc. Processor having an arithmetic extension of an instruction set architecture
US7346643B1 (en) * 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
US6697832B1 (en) 1999-07-30 2004-02-24 Mips Technologies, Inc. Floating-point processor with improved intermediate result handling
US6631392B1 (en) 1999-07-30 2003-10-07 Mips Technologies, Inc. Method and apparatus for predicting floating-point exceptions
US6446104B1 (en) * 1999-09-15 2002-09-03 Sun Microsystems, Inc. Double precision floating point multiplier having a 32-bit booth-encoded array multiplier
US6832306B1 (en) 1999-10-25 2004-12-14 Intel Corporation Method and apparatus for a unified RISC/DSP pipeline controller for both reduced instruction set computer (RISC) control instructions and digital signal processing (DSP) instructions
US6557096B1 (en) 1999-10-25 2003-04-29 Intel Corporation Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types
US6446195B1 (en) * 2000-01-31 2002-09-03 Intel Corporation Dyadic operations instruction processor with configurable functional blocks
US6408376B1 (en) 1999-10-25 2002-06-18 Intel Corporation Method and apparatus for instruction set architecture to perform primary and shadow digital signal processing sub-instructions simultaneously
US6330660B1 (en) 1999-10-25 2001-12-11 Vxtel, Inc. Method and apparatus for saturated multiplication and accumulation in an application specific signal processor
US6732203B2 (en) * 2000-01-31 2004-05-04 Intel Corporation Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus
US7890566B1 (en) * 2000-02-18 2011-02-15 Texas Instruments Incorporated Microprocessor with rounding dot product instruction
US6571266B1 (en) * 2000-02-21 2003-05-27 Hewlett-Packard Development Company, L.P. Method for acquiring FMAC rounding parameters
US6996596B1 (en) 2000-05-23 2006-02-07 Mips Technologies, Inc. Floating-point processor with operating mode having improved accuracy and high performance
JP3845814B2 (ja) * 2000-08-10 2006-11-15 株式会社テルミナス・テクノロジー 連想メモリとその検索方法及びルータとネットワークシステム
US7003093B2 (en) * 2000-09-08 2006-02-21 Intel Corporation Tone detection for integrated telecommunications processing
US20020116186A1 (en) * 2000-09-09 2002-08-22 Adam Strauss Voice activity detector for integrated telecommunications processing
CA2327924A1 (en) * 2000-12-08 2002-06-08 Ibm Canada Limited-Ibm Canada Limitee Processor design for extended-precision arithmetic
US7711763B2 (en) * 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7162621B2 (en) * 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7020788B2 (en) * 2001-06-01 2006-03-28 Microchip Technology Incorporated Reduced power option
US6937084B2 (en) * 2001-06-01 2005-08-30 Microchip Technology Incorporated Processor with dual-deadtime pulse width modulation generator
US20030005269A1 (en) * 2001-06-01 2003-01-02 Conner Joshua M. Multi-precision barrel shifting
US6985986B2 (en) * 2001-06-01 2006-01-10 Microchip Technology Incorporated Variable cycle interrupt disabling
US7467178B2 (en) * 2001-06-01 2008-12-16 Microchip Technology Incorporated Dual mode arithmetic saturation processing
US6552625B2 (en) 2001-06-01 2003-04-22 Microchip Technology Inc. Processor with pulse width modulation generator with fault input prioritization
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US6975679B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Configuration fuses for setting PWM options
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US6728856B2 (en) 2001-06-01 2004-04-27 Microchip Technology Incorporated Modified Harvard architecture processor having program memory space mapped to data memory space
US20030023836A1 (en) * 2001-06-01 2003-01-30 Michael Catherwood Shadow register array control instructions
US6604169B2 (en) 2001-06-01 2003-08-05 Microchip Technology Incorporated Modulo addressing based on absolute offset
US7003543B2 (en) * 2001-06-01 2006-02-21 Microchip Technology Incorporated Sticky z bit
US6601160B2 (en) 2001-06-01 2003-07-29 Microchip Technology Incorporated Dynamically reconfigurable data space
US6934728B2 (en) * 2001-06-01 2005-08-23 Microchip Technology Incorporated Euclidean distance instructions
US7007172B2 (en) * 2001-06-01 2006-02-28 Microchip Technology Incorporated Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection
US20030028696A1 (en) * 2001-06-01 2003-02-06 Michael Catherwood Low overhead interrupt
US20030005268A1 (en) * 2001-06-01 2003-01-02 Catherwood Michael I. Find first bit value instruction
US6952711B2 (en) * 2001-06-01 2005-10-04 Microchip Technology Incorporated Maximally negative signed fractional number multiplication
US7080111B2 (en) * 2001-06-04 2006-07-18 Intel Corporation Floating point multiply accumulator
US6552567B1 (en) 2001-09-28 2003-04-22 Microchip Technology Incorporated Functional pathway configuration at a system/IC interface
US20040021483A1 (en) * 2001-09-28 2004-02-05 Brian Boles Functional pathway configuration at a system/IC interface
US20030219113A1 (en) * 2002-05-21 2003-11-27 Bershad Neil J. Echo canceller with double-talk and channel impulse response adaptation
US20040167954A1 (en) * 2003-02-21 2004-08-26 Infineon Technologies North America Corp. Overflow detection system for multiplication
JP4202244B2 (ja) * 2003-12-22 2008-12-24 Necエレクトロニクス株式会社 Vliw型dsp,及びその動作方法
US20050228844A1 (en) * 2004-04-08 2005-10-13 International Business Machines Corporation Fast operand formatting for a high performance multiply-add floating point-unit
US7730117B2 (en) * 2005-02-09 2010-06-01 International Business Machines Corporation System and method for a floating point unit with feedback prior to normalization and rounding
US20060179096A1 (en) * 2005-02-10 2006-08-10 International Business Machines Corporation System and method for a fused multiply-add dataflow with early feedback prior to rounding
US7739324B1 (en) 2006-03-22 2010-06-15 Cadence Design Systems, Inc. Timing driven synthesis of sum-of-product functional blocks
US7912887B2 (en) * 2006-05-10 2011-03-22 Qualcomm Incorporated Mode-based multiply-add recoding for denormal operands
KR100996704B1 (ko) 2006-11-06 2010-11-25 삼성전자주식회사 버퍼 크기 정보의 전송 방법
JP4388543B2 (ja) * 2006-12-14 2009-12-24 株式会社日立製作所 3項入力の浮動小数点加減算器
US8443029B2 (en) 2007-03-01 2013-05-14 International Business Machines Corporation Round for reround mode in a decimal floating point instruction
US8549264B2 (en) * 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
FR2974645A1 (fr) * 2011-04-28 2012-11-02 Kalray Operateur de multiplication et addition fusionnees a precision mixte
US9645792B2 (en) 2014-08-18 2017-05-09 Qualcomm Incorporated Emulation of fused multiply-add operations
US9928031B2 (en) * 2015-11-12 2018-03-27 Arm Limited Overlap propagation operation
US9733899B2 (en) * 2015-11-12 2017-08-15 Arm Limited Lane position information for processing of vector
EP3529695B1 (en) 2016-10-20 2023-10-11 INTEL Corporation Systems, apparatuses, and methods for fused multiply add
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
DE102018209901A1 (de) * 2018-06-19 2019-12-19 Robert Bosch Gmbh Recheneinheit, Verfahren und Computerprogramm zum Multiplizieren zumindest zweier Multiplikanden
US11182127B2 (en) 2019-03-25 2021-11-23 International Business Machines Corporation Binary floating-point multiply and scale operation for compute-intensive numerical applications and apparatuses
CN114461176B (zh) * 2022-04-12 2022-07-19 北京象帝先计算技术有限公司 一种算术逻辑单元、浮点数处理方法、gpu芯片、电子设备
CN117891430B (zh) * 2024-03-18 2024-05-14 中科亿海微电子科技(苏州)有限公司 一种应用于fpga嵌入式dsp的浮点乘加结构

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3878985A (en) * 1973-11-30 1975-04-22 Advanced Micro Devices Inc Serial-parallel multiplier using booth{3 s algorithm with combined carry-borrow feature
US4665500A (en) * 1984-04-11 1987-05-12 Texas Instruments Incorporated Multiply and divide unit for a high speed processor
US4943940A (en) * 1984-09-27 1990-07-24 Advanced Micro Devices, Inc. Floating point add/subtract and multiplying assemblies sharing common normalization, rounding and exponential apparatus
US4942547A (en) * 1985-04-11 1990-07-17 Honeywell Bull, Inc. Multiprocessors on a single semiconductor chip
JPS6347874A (ja) * 1986-08-16 1988-02-29 Nec Corp 算術演算装置
US4864529A (en) * 1986-10-09 1989-09-05 North American Philips Corporation Fast multiplier architecture
US4792793A (en) * 1987-05-28 1988-12-20 Amdahl Corporation Converting numbers between binary and another base
US4841467A (en) * 1987-10-05 1989-06-20 General Electric Company Architecture to implement floating point multiply/accumulate operations
US5278781A (en) * 1987-11-12 1994-01-11 Matsushita Electric Industrial Co., Ltd. Digital signal processing system
US5126964A (en) * 1988-04-01 1992-06-30 Digital Equipment Corporation High performance bit-sliced multiplier circuit
US5289398A (en) * 1990-08-07 1994-02-22 Matsushita Electric Industrial Co., Ltd. Small-sized low power consumption multiplication processing device with a rounding recording circuit for performing high speed iterative multiplication
US5241493A (en) * 1991-12-16 1993-08-31 International Business Machines Corporation Floating point arithmetic unit with size efficient pipelined multiply-add architecture
US5257217A (en) * 1992-05-01 1993-10-26 Seiko Epson Corporation Area-efficient multiplier for use in an integrated circuit
US5671170A (en) * 1993-05-05 1997-09-23 Hewlett-Packard Company Method and apparatus for correctly rounding results of division and square root computations
EP0678813B1 (en) * 1994-03-07 1997-10-15 Nec Corporation Floating point multiplier
US5530663A (en) * 1994-11-14 1996-06-25 International Business Machines Corporation Floating point unit for calculating a compound instruction A+B×C in two cycles
US5751621A (en) * 1994-11-17 1998-05-12 Hitachi, Ltd. Multiply-add unit and data processing apparatus using it
US5511016A (en) * 1994-11-30 1996-04-23 International Business Machines Corporation Method for store rounding and circuit therefor

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000181724A (ja) * 1998-10-30 2000-06-30 Sun Microsyst Inc コンパイルする方法をランタイムにおいて選択する方法及び装置
US6895423B2 (en) 2001-12-28 2005-05-17 Fujitsu Limited Apparatus and method of performing product-sum operation
JP2017515177A (ja) * 2014-03-26 2017-06-08 インテル・コーポレーション 3ソースオペランド浮動小数点加算プロセッサ、方法、システム、及び命令
JP2016535360A (ja) * 2014-07-02 2016-11-10 ヴィア アライアンス セミコンダクター カンパニー リミテッド 非アトミック分割経路融合積和
US9778908B2 (en) 2014-07-02 2017-10-03 Via Alliance Semiconductor Co., Ltd. Temporally split fused multiply-accumulate operation
US9798519B2 (en) 2014-07-02 2017-10-24 Via Alliance Semiconductor Co., Ltd. Standard format intermediate result
US9891887B2 (en) 2014-07-02 2018-02-13 Via Alliance Semiconductor Co., Ltd Subdivision of a fused compound arithmetic operation
US9891886B2 (en) 2014-07-02 2018-02-13 Via Alliance Semiconductor Co., Ltd Split-path heuristic for performing a fused FMA operation
US10019230B2 (en) 2014-07-02 2018-07-10 Via Alliance Semiconductor Co., Ltd Calculation control indicator cache
US10019229B2 (en) 2014-07-02 2018-07-10 Via Alliance Semiconductor Co., Ltd Calculation control indicator cache
US11061672B2 (en) 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations
US10078512B2 (en) 2016-10-03 2018-09-18 Via Alliance Semiconductor Co., Ltd. Processing denormal numbers in FMA hardware

Also Published As

Publication number Publication date
KR100302686B1 (ko) 2001-09-22
TW345645B (en) 1998-11-21
US5880984A (en) 1999-03-09
KR19980070000A (ko) 1998-10-26

Similar Documents

Publication Publication Date Title
JPH10207693A (ja) 浮動小数点演算ユニット
US7236995B2 (en) Data processing apparatus and method for converting a number between fixed-point and floating-point representations
JP4953644B2 (ja) 正規化および丸め処理前にフィードバックを行う浮動小数点ユニットのためのシステムおよび方法
JP3152954B2 (ja) 浮動小数点プロセッサ
US7346643B1 (en) Processor with improved accuracy for multiply-add operations
US6697832B1 (en) Floating-point processor with improved intermediate result handling
US5963461A (en) Multiplication apparatus and methods which generate a shift amount by which the product of the significands is shifted for normalization or denormalization
US5892697A (en) Method and apparatus for handling overflow and underflow in processing floating-point numbers
US5357237A (en) In a data processor a method and apparatus for performing a floating-point comparison operation
US6631392B1 (en) Method and apparatus for predicting floating-point exceptions
US20060179092A1 (en) System and method for executing fixed point divide operations using a floating point multiply-add pipeline
US6996596B1 (en) Floating-point processor with operating mode having improved accuracy and high performance
Schwarz et al. FPU implementations with denormalized numbers
JPH02294820A (ja) 浮動小数点数演算処理装置および演算処理方法
US5943249A (en) Method and apparatus to perform pipelined denormalization of floating-point results
EP0903664A2 (en) Floating-point processor with operand-format precision greater than execution precision
US20050228844A1 (en) Fast operand formatting for a high performance multiply-add floating point-unit
US6233595B1 (en) Fast multiplication of floating point values and integer powers of two
US6990505B2 (en) Method/apparatus for conversion of higher order bits of 64-bit integer to floating point using 53-bit adder hardware
US20040093367A1 (en) Method and apparatus for computing an approximation to the reciprocal of a floating point number in IEEE format
US8244783B2 (en) Normalizer shift prediction for log estimate instructions
US6615228B1 (en) Selection based rounding system and method for floating point operations
CN112214196A (zh) 浮点异常处理方法及装置
US7237000B2 (en) Speed of execution of a conditional subtract instruction and increasing the range of operands over which the instruction would be performed correctly
JP3522387B2 (ja) パイプライン演算装置