JPH09231201A - 浮動小数点乗算累算装置 - Google Patents

浮動小数点乗算累算装置

Info

Publication number
JPH09231201A
JPH09231201A JP8304451A JP30445196A JPH09231201A JP H09231201 A JPH09231201 A JP H09231201A JP 8304451 A JP8304451 A JP 8304451A JP 30445196 A JP30445196 A JP 30445196A JP H09231201 A JPH09231201 A JP H09231201A
Authority
JP
Japan
Prior art keywords
bits
mantissa
bit
result
fmac
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.)
Granted
Application number
JP8304451A
Other languages
English (en)
Other versions
JP3803438B2 (ja
JPH09231201A5 (ja
Inventor
D Nafuzuigaa Samuel
サミュエル・ディー・ナフズィガー
R Smentek David
デビッド・アール・スメンテック
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH09231201A publication Critical patent/JPH09231201A/ja
Publication of JPH09231201A5 publication Critical patent/JPH09231201A5/ja
Application granted granted Critical
Publication of JP3803438B2 publication Critical patent/JP3803438B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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

Landscapes

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

Abstract

(57)【要約】 【課題】データ経路幅を減少した浮動小数点乗算累算装
置FMACおよびそれを使用する方法を提供する。 【解決手段】数値A、BおよびCが各々mビットの仮数
および指数を含むとして、(A×B)とCの指数部を比較
して(A×B)とCの仮数が重ね合う範囲があるか否かを
判断し、(A×B)仮数部の範囲を越えるC仮数部分をす
べてCHIレジスタへ転送し、(A×B)仮数部と重なり
合うCの仮数部分をシフトさせて(A×B)およびCの仮
数のビットをそれぞれの大きさに従って位置調整し、C
の仮数のシフトされた部分を(A×B)の仮数部に加算し
て一時的結果を生成し、CHIバッファの下位ビットを
一時的結果からシフトさせ、CHIバッファへ転送され
たC仮数部のビットと一時的結果の上位ビットをマージ
させて最終累算結果を生成する。かくして、FMACの
データ経路幅は「2m+1」ビットに抑えられる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、浮動小数点乗算累
算装置であるFMAC装置において乗算結果に対する加
数の高位部分の結合を行わないことによって演算機構の
データ経路幅の拡大を抑える方法および装置に関するも
のである。
【0002】
【従来の技術】マイクロプロセッサのアーキテクチャの
設計において、速度、正確度およびコストという3つの
非常に重要な考慮点がある。優れた正確度および高速で
の乗算、加算およびその他の演算を実行するマイクロプ
ロセサ(CPU)を設計することは望ましいことではある
が、コストの観点から効率的に製造することことができ
るCPUを設計することもまた望まれる。RISC(す
なわち減少命令セット・コンピュータ)のCPUにおい
て乗算および加算を累計演算すなわち(A*B)+Cに融
合させることによって速度および正確度が顕著に向上し
た。単に2つの数を加算または乗算することが必要なら
ば、C=0をセットすることによって演算A*Bを実行
し、またB=1をセットすることによっ演算A+Cを実
行することができる。演算(A*B)+Cを実行するCP
Uコンポーネントは、(浮動小数点乗算累算装置を意味
するFloating-point Multiply Accumulate Unitの頭文
字である)FMACまたは(乗算加算融合浮動小数点装置
を意味するMultiply-Add-Fused Floating-Point Unitの
頭文字である)MAF/FPUと一般に呼ばれる。
【0003】FMACへの入力は、オペランドA(被乗
数)、B(乗数)およびC(加数)であり、この場合、A、
BおよびCは固定または浮動小数点数のいずれかであ
る。2進数形式で単精度(32ビット)または倍精度(6
4ビット)を表現するためのIEEE表記法は〔S,
E,M]であって、この場合、Sは数値の符号を表す1
ビットで、Eが指数部で、Mが(先頭ビットを削られた)
仮数部であるとされる。従って、IEEE浮動小数点数
形式は、S*M*2Eである。単精度系においては、E
は8ビットによって表現され、Mは23ビットによって
表現される(但し浮動小数点数がFMACへ入力される
時、FMACにとって内部的に実行される演算が仮数が
含む先頭の1が存在することを必要とするので、23ビ
ット仮数は24ビット仮数になる)。倍精度系において
は、Eは11ビットによって表現され、Mは52ビット
によって表現される(但しFMACの内部では53ビッ
トである)。
【0004】FMACの物理的なレイアウトは、A、B
およびCの仮数を加算し乗算する場合に実行されねばな
らない演算によって大部分決定される。この点は、A、
BおよびCが倍精度数値で、それらの仮数部(53ビッ
ト)がそれらの指数部(11ビット)のサイズのほぼ5倍
である場合に特に該当する。図2は従来技術のFMAC
の物理的レイアウトを示す。
【0005】AとBの乗算は、それらの仮数の乗算およ
びそれらの指数の加算を必要とする。Aの仮数がmビッ
トを含みBの仮数がnビットを含むとすれば、それらの
仮数の乗算は、各回毎にAのmビットを左へ1ビットず
つシフトさせながらAにそれ自身をn回加算することを
必要とする。乗算の結果は、「m+n+1」ビットの仮
数であり、FMACのデータ経路をmビットから「m+
n+1」ビットへ拡大することを必要とする。もしもA
およびBが各々mビット仮数を持つ倍精度数値であれ
ば、それらの仮数を乗算した結果は、「2m+1」ビッ
ト、すなわち107ビット数値である。このように、倍
精度系においては、図2のFMACのデータ経路は、5
3ビットから107ビットへデータ経路を拡張すること
が許容される乗算機構を必要とするであろう。
【0006】(A*B)とCの加算は、それらの仮数の加
算の前に、それらの指数の大きさの比較を通してそれら
の仮数の調整(alignmenntすなわち小数点位置合わせの
意)を必要とする。その場合、次のような4つの可能な
加算のケースが考察されねばならない(注:以下EXP
は指数を示す)。 1)EXP(C)<<EXP(A*B) 2)EXP(C)<EXP(A*B) 3)EXP(C)>>EXP(A*B) 4)EXP(C)>EXP(A*B) 第1のケースでは、(A*B)とCの仮数を調整させる試
みが加数Cの右へのオーバーシフトを引き起こすので、
Cのみが(A*B)の丸めに影響を及ぼす。
【0007】第2のケースでは、(A*B)およびCの仮
数の調整がCを右へシフトさせる結果となる。Cの仮数
のビットの一部は、オーバーシフトされる可能性がある
ので、丸め計算(スティッキー・ビット情報)に入るであ
ろう。Cの残りのビットは、(A*B)演算結果の該当す
るビットに加えられる。
【0008】第3と第4のケースでは、(A*B)および
Cの仮数の調整はCを左へシフトさせる結果となる。左
シフトは、倍精度FMACのデータ経路が更に53ビッ
ト(すなわち合計「3m+1」ビットに)拡幅されるこ
とを必要とする。ひとたびCが(A*B)の仮数の範囲外
へシフトされると、(A*B)結果のみがCの丸めを始め
ることができるだけであり、Cをさらに左へシフトさせ
る必要がない。(A*B)およびCの仮数がなんらかの重
なり部分を持てば、それらの仮数の調整されたビットが
加算される。
【0009】先頭ビット予測器(leading bit anticipat
or)および/または丸め器を使用して出力されるFMA
Cの累算結果は、S、EおよびMの形式での(先頭1ビ
ットが再び取り除かれた)「m‐1」ビット仮数、指数お
よび符号ビットである。「m‐1」ビット仮数から切り
捨てられたあるいはその範囲外へシフトされたビットは
丸め計算において使用される。
【0010】
【発明が解決しようとする課題】「3m+1」ビットの
加算器、シフト器および先頭ビット予測器によって必要
とされる物理的な空間は従来技術のFMACの欠点であ
ると認められる。これらのコンポーネントによって底部
でまた乗算機構の傾斜によって片側に飛び出した半端な
形状のチップ面積を効率的に利用することは難しい。チ
ップ面積は高価であるので、空間の浪費は非常にコスト
高となる。
【0011】更に、大きな加算器、シフト器および先頭
ビット予測器のデータ経路に関する要件によって、FM
AC製造コストが増大し、システム処理性能が低下する
(信号経路の距離増加のため演算速度が低下する)。従っ
て、FMACデータ経路を「3m+1」ビット幅に拡張
する必要性を除去しそれによってFMACデータ経路を
「2m+1」ビット幅にとどめるFMACおよびこれを
使用する方法を提供することが本発明の主要目的であ
る。
【0012】また、最高「2m+1」ビットの加算器、
シフト器および先頭ビット予測器の使用のみを必要とす
るFMACおよびこれを使用する方法を提供することが
本発明の別の目的である。更に、FMACによって必要
とされる物理的チップ面積減少を通して顕著なコスト節
減を実現するFMACおよびこれを使用する方法を提供
することが本発明の別の目的である。更にまた、信号経
路の短絡によってシステム処理性能を向上させるFMA
Cおよびこれを使用する方法を提供することが本発明の
更にまた別の目的である。
【0013】
【課題を解決するための手段】上記発明の課題を解決す
るため、本発明は、A、BおよびCが各々mビットの仮
数および指数を含み、(A×B)の結果が2mビットの仮
数および指数を含む演算(A×B)+Cを実行する浮動小
数点乗算累算装置(すなわちFMAC)を提供する。FM
ACは先ず(A×B)とCの指数部を比較して(A×B)と
Cの仮数に重ね合わせ範囲があるか否かを判断する。
(A×B)仮数部の範囲を越えるC仮数部分はすべてCH
Iバッファへ転送される。Cの残りの部分または(A×
B)仮数部と重なり合うCの仮数部分をシフトさせて、
(A×B)およびCの仮数のビットをそれぞれの大きさに
従って調整させる。その後、Cの仮数のシフトされた部
分が(A×B)の仮数部に加算され一時的結果が生成され
る。C仮数の一部がCHIバッファへ転送されている場
合、(CHIバッファへ転送されたビット数に応じて)1
つまたは複数の最下位ビットが一時的結果からシフトさ
れる。最後に、CHIバッファへ転送されたC仮数部の
ビットが一時的結果の1つまたは複数の最上位ビット位
置にマージされる。
【0014】上記ステップのすべては、「2m+1」ビ
ット幅のデータ経路境界内で実行することができる。こ
のようにして、1)FMACを実行するために必要とさ
れるチップ面積が減少され、2)信号経路が短縮され、
3)システム処理性能が向上し、4)より小さくより低コ
ストの加算器、シフト器および先頭ビット予測器が使用
され、5)顕著なコスト節減が実現する。
【0015】本発明は、更に、発明の課題を解決する手
段として、数値A,BおよびCそれぞれの入力部、乗算
(A×B)の結果の仮数の範囲を越えるCの仮数の1つ以
上のビットを格納するCHIレジスタ、(A×B)の仮数
の範囲と重なるCの仮数の1つ以上のビットを格納する
CBUSレジスタ、Cと(A×B)の指数の差に対応する
数のビットだけCの仮数を左へシフトさせてシフトさせ
たビット位置をCBUSレジスタに格納させる第1シフ
ト器、(A×B)+CBUSを出力する加算器、加算器の
(A×B)+CBUS出力に接続する先頭ビット予測器、
(A×B)+C累算結果出力部、先頭ビット予測器の出力
をCと(A×B)の指数の間の差に等しいビット数だけ右
へシフトさせてシフトさせた結果を累算結果出力部に出
力する第2シフト器、および(A×B)の仮数の範囲を越
えるCの仮数の1つ以上のビットを格納するCHIレジ
スタのビットと累算結果出力の1つ以上の上位ビットを
結合させる結合手段を備えた累算演算(A×B)+Cを実
行する浮動小数点乗算累算装置すなわちFMAC装置を
含む。
【0016】
【発明の実施の形態】累計演算(A×B)+Cを実行する
FMAC(浮動小数点乗算累計装置)20において乗算結
果28に対する加数の高位部分の結合を取り除く方法が
図3ないし図6に示されている。ここで、A、Bおよび
C22、24、30は各々mビットの仮数部および指数
部を持ち、(A×B)の結果は、「2m+1」ビットの仮
数部および指数部を持つ。本発明の方法は、一般的に以
下のステップを含む。すなわち、先ず、(A×B)28と
C30の指数部を比較して(A×B)28とC30の仮数
部の重なり範囲があるか否かを判断し、(A×B)28の
仮数部の範囲を越えるC30の仮数部分をCHIレジス
タ32へ転送する。次に、(A×B)28およびC30の
仮数部のビットをそれぞれの大きさに応じて調整させる
ため、(A×B)28の仮数部の範囲と重なるC30仮数
のすべての部分をシフトさせ、C30仮数部のシフトさ
れた部分36を(A×B)28の仮数部に加算して一時的
加算結果を生成する。Cの仮数部30の一部がCHIレ
ジスタ32へ転送されていれば、CHIレジスタ32に
転送されたビット数に対応する1つまたは複数の下位ビ
ットを一時的加算結果からシフトさせる。最後に、CH
Iレジスタ32へ転送されたC仮数部30のビットを一
時的加算結果の1つまたは複数の上位ビット位置にマー
ジさせて、累算結果44を生成する。
【0017】上記本発明の方法を実施することができる
FMAC20が図1に示されている。本装置は、一般的
に、数値A,BおよびC22、24、30それぞれの入
力部、乗算(A×B)の結果の仮数部28の範囲を越える
Cの仮数部30の1つ以上のビットを格納するCHIレ
ジスタ32、(A×B)仮数28の範囲と重なるCの仮数
30の1つ以上のビット(重ね合うビットは適切に位置
調整される)を格納するCBUSレジスタ36、C30
と(A*B)28の指数の差に対応する数のビットだけC
30の仮数を左へシフトさせて、シフトさせたビット位
置をCBUSレジスタ36に格納させる第1シフト器3
4、(A×B)+CBUSを出力する加算器38、加算器
38の(A×B)+CBUS出力に接続する先頭ビット予
測器40、(A×B)+C累算結果出力部44、先頭ビッ
ト予測器40の出力をCと(A*B)の指数の間の差に等
しいビット数だけ右へシフトさせて、シフトさせた結果
を累算結果出力部44に出力する第2シフト器42、お
よび(A×B)28の仮数の範囲を越えるC30の仮数の
1つ以上のビットを格納するCHIレジスタ32のビッ
トと累算結果出力44の1つ以上の上位ビットを結合さ
せる結合手段を備える。
【0018】以下にFMAC20の詳細を記述する。本
発明の好ましい方法のプロセスは、FMAC20のオペ
ランド(A*B)28およびC30から始まる。ここで、
(A*B)28は「2m+1」ビットの仮数部を持つ乗算
結果であり、C30は、mビットの仮数部を持つ加数で
ある。各オペランド28、30は更に指数および符号ビ
ットと関連づけられている。累計演算(A*B)+CがF
MAC20内で分割できない演算として実行されるが、
(A*B)の結果28に対するC30の高位部分の結合を
行わずに(A*B)をCに加算する方法は、A22とB2
4の乗算とは無関係であり、従って、FMAC20の乗
算機構26について知らなければならないことは、キャ
リ保存加算器または同等の機構を使用してオペランドA
22およびB24(被乗数および乗数)のmビット仮数部
を乗算して「2m+1」ビット仮数部を持つ(A*B)乗
算結果28をこの機構が作成するということだけでよ
い。
【0019】(A*B)の結果28が作成された後、(A
*B)30とC28の指数部の大きさが比較され、次の
4つの可能なケースのどれが存在するか判断される。4
つのケースは、 1)EXP(C)<<EXP(A*B) 2)EXP(C)<EXP(A*B) 3)EXP(C)>>EXP(A*B) 4)EXP(C)>EXP(A*B) である。これらの4つのケースの各々は、図3ないし図
6の水平分割線より上方に描かれた(A*B)28とC3
0の仮数によって表されている。より小(<)およびより
大(>)は、(A*B)28とC30の指数が相違してはい
るが、それらの仮数の範囲の間にある程度の重ね合わせ
が存在することを意味する。非常に小(<<)および非常
に大(>>)は、(A*B)28とC30の指数の相違が非
常に大きいためそれらの仮数の範囲が重ならないことを
意味する。
【0020】EXP(C)>EXP(A*B)である図5の
第3のケースが、本発明のFMACおよびそれを使用す
る方法によって最も影響を受けるので、このケースを最
初に考察する。C30の仮数が「2m+1」ビット幅の
データ経路の限界内でFMAC20に入力されるが、
(A*B)28とC30の指数の比較によって、C30の
下位ビットのいくつかが(A*B)28の上位ビットのい
くつかと重ね合うことが示されている。従来技術の(図
2の)FMAC50においては、このケースでは、「3
m+1」ビットの加算器54、シフト器52、58およ
び先頭ビット予測器56が必要とされるので、FMAC
50のデータ経路は「2m+1」ビットから「3m+
1」ビットへ拡幅されねばならない。しかし、C30の
高位部分すなわち(A*B)結果28と重ならないC30
部分を取り外すことによって、データ経路拡張を不要に
させることが可能である。
【0021】C30と(A*B)28の指数の間の差に等
しいC30のビット数がCHIレジスタ32の対応する
位置に転送される。CHI32ビット位置の残りは、1
で埋められる。C30の高位ビットがCHI32へ転送
されたならば、C30の高位ビット位置に何が残ってい
ようと問題ではない。C30の高位ビット位置はC30
の残存内容としてマスクされ、「2m+1」ビットCB
USレジスタ36へ転送される。C30の内容がCBU
S36へ転送されると、その内容は、C30と(A*B)
28の指数の差に対応する数のビットだけ左へシフトさ
れる。C30の高位部分がCBUS36からマスクさ
れ、C30と(A*B)28の重なり合うビットが今や調
整されたことが観察される。CBUS36の下位ビット
はゼロで埋められる。C30と(A*B)28の重なり合
うビットが調整された後、「2m+1」ビット幅加算器
を使用して(A*B)+CBUSの一時的結果(図5でT
EMP46として表されている)が生成される。スティ
ッキー・ビット情報を使用してTEMP結果46を丸め
ることができるであろうし、また、TEMP46からの
どのようなキャリもCHI32を増加させるために使用
することができる。CHI32の下位ビットはゼロで埋
められるので、TEMP46からのキャリは、CHI3
2の下位ビットからC30の高位部分を表すCHI32
のビットに伝播する点に注意する必要がある。
【0022】TEMP結果46を作成した後、TEMP
結果46は、C30と(A*B)28の指数の間の差に等
しいビット数だけ右へシフトされなければならない。T
EMP46のビットが右にシフトされると、TEMP4
6の上位ビットはゼロで埋められる。シフトされたTE
MPレジスタは、図5においてSHIFTED_TEM
P48と表記されている。CHI32に含まれるC30
の高位部分は、SHIFTED_TEMP48の一時的
(A*B)+Cの結果と調整され、今やSHIFTED_
TEMP48とマージされる。「2m+l」ビット結果
が、先頭ビット予測器および/またはシフト器に送ら
れ、所望の「m−1」ビット仮数結果RESULTが得
られる。結果の指数および符号は従来技術の方法を使用
して調節される。
【0023】次に、EXP(C)>>EXP(A*B)であ
る図6の第4のケースを考察する。第4のケースでは、
C30と(A*B)28の指数の比較は、C30と(A*
B)28の仮数が重ならないことを示す。従って、C3
0のすべてのビットがCHI32へ転送され、FMAC
20の出力はCHI32に等しく、使用する丸め方式に
依存するがおそらく最下位ビットの±1によって丸めが
行われるであろう。CBUS36、TEMP46および
SHIFTED_TEMP48のレジスタの値は、FM
AC20の結果として生じる出力に関しては無関係であ
る。C30の存在しない低位ビットがCBUS36にシ
フトされる時、オーバーシフトが発生し無意味なCBU
S36を作成する(CBUS36はおそらくすべてゼロ
で埋められる)。一時的な(A*B)+C結果(TEMPレ
ジスタ46)がシフトされると、オーバーシフトが発生
し、SHIFTED_TEMPレジスタ48はおそらく
すべてゼロで埋められる。TEMPレジスタ46からシ
フト・アウトされるたビットは、CHI結果44の丸め
のためのスティッキー・ビットを計算する際に使用する
ことができる。
【0024】次に第1のケースおよび第2のケースを考
察する。EXP(C)<<EXP(A*B)である図3の第
1のケースでは、C30と(A*B)28の指数の比較が
C30と(A*B)28の仮数が重ならないことを示す。
C30の大きさが(A*B)28より小さいので、C30
のビットはCHI32にシフトされない。C30が(A
*B)28より非常に小さいので、CBUS36はゼロ
で埋められれ、FMAC20の結果44は(A*B)の出
力であり、使用する丸め方式に依存するがおそらく最下
位ビットの±1によって丸めが行われるであろう。
【0025】EXP(C)<EXP(A*B)である図4の
第2のケースでは、C30と(A*B)28の指数の比較
がC30の一部またはすべてが(A*B)と重ね合うこと
を示す。このケースでもまたC30のビットはCHI3
2にシフトされない。C30はCBUS36に転送され
る際右へシフトされる。CBUS36の下位ビットがゼ
ロで埋められ、CBUS36の上位ビットは符号拡張ビ
ットで埋められる(すなわちC30が正ならゼロで、負
なら1で埋められる)。C30の1つまたは複数のビッ
トがCBUS36の範囲外へシフトされる可能性があ
る。これらのビットは丸めのため使用することもでき
る。TEMP結果46が計算された後、先頭ビット予測
器およびシフト器が、SHIFTED_TEMP48の
TEMP結果46を左にシフトさせる。
【0026】上記の方法を実行することができるFMA
C20が図1に示されている。FMAC20がその最大
データ経路幅が「3m+1」ビットではなく「2m+
1」ビットに限定されている点において従来技術のFM
AC50と相違することに注意する必要がある。図1の
FMAC20の乗算機構は、従来技術のFMAC50の
ものと同じである。しかし、加算器38、先頭ビット予
測器40およびシフト器34、42は同じではない。C
BUS36が(A*B)28と重なるC30部分のみを含
むので、それは「2m+1」ビット幅に限定される。こ
の結果、CBUS36に先行するシフト器34、42お
よび累算結果レジスタ44は、「2m+l」ビット幅に
限定することができる。更に、先頭ビット予測器40も
また「2m+1」ビット幅に限定することができる。F
MACのデータ経路の最大幅の制限はFMAC20を構
成する際に必要なチップ面積を減少させるだけでなく、
信号経路の距離をも減少させる。信号経路指定が「2m
+1」ビット・シフトでなくレジスタ・ビットの「3m
+1」ビット・シフトを可能にさせなければならないな
ら、FMACは一層長い配線を必要とし、システムの全
般的遅延が生じる。
【0027】従来技術のFMAC50における場合と同
様に、上記方法の諸ステップは並列的に実行することが
できる。可能な整相シナリオが図7に示されている。ク
ロック段階ゼロ(図の符号58)において、オペランド
A、BおよびCがFMAC20へ入力される。段階1
(図の符号60)において、(比較その他)の指数演算が実
行される。段階2(図の符号62)において、AおよびB
が乗算機構の多数のキャリ保存加算器を使用して乗算さ
れる。段階3(図の符号64)において、Cの高位部分が
マスクされCHIに転送される。更に、キャリ保存加算
器によって生成された部分的結果をマージして(A*B)
が作成され、(A*B)と重なるCの部分がシフトされ
て、(A*B)結果と適切に調整されたCのビットを含む
CBUSが作成される。段階4(図の符号66)におい
て、(A*B)およびCBUSが、「2m+1」ビット幅
の加算器において加算され、TEMP結果が作成され
る。TEMP結果が先頭ビット予測器に供給され、上位
ビット・シフト(16シフト)が実行される。上位スティ
ッキー情報が判断され、必要な場合CHIレジスタが増
分される。段階5(図の符号68)において、低位シフト
(すなわち4ビット・シフト、1ビット・シフトおよび
調整シフト)が実行される。丸め方式に従ってTEMP
レジスタが丸められ、(A×B)+CBUS加算器からの
キャリに応じてCHIが増分させられる。EXP(C)>
(あるいは>>)EXP(A*B)の場合、CHIはシフト
されたTEMPレジスタ(SHIFTED_TEMP)に
マージされ、累算結果(すなわちRESULT)が作成さ
れる。事後シフト方向に従って、(A*B)あるいはCレ
ジスタに関連する指数が選択される。(事後シフト方向
が左のため)EXP(A*B)が選択される場合、指数
は、事後左シフトの量によって調節される。(事後シフ
ト方向が右のため)EXP(C)が選択される場合、指数
は、±1だけの調整を必要とすることがある。段階6
(図の符号70)において、(すべて1またはすべてゼロ
という)例外的な仮数が出力されるアンダーフローまた
はオーバーフローが発生しな限り、RESULTレジス
タがFMAC20から出力される。
【0028】上述のFMAC20およびそれを使用する
方法が、先頭ビット1を含めオペランドの仮数部のビッ
ト数をmと仮定して、FMACのデータ経路幅を「2m
+1」を越える幅に増加させる必要性を除去する点は認
識されるであろう。幅を3分の1減少された加算器、先
頭ビット予測器およびシフト器が物理的チップ面積を減
少させるだけではなく、必要とされる信号経路配線の長
さを減少させ、それによって上記コンポーネントの演算
速度が上昇する。
【0029】以上本発明の実施形態を詳細に記述した
が、本発明の概念はその他の種々の実施形態で実現する
ことは可能であり、従来技術によって制約されている場
合を除き、本発明がそのような種々のバリエーションを
含むものとみなされるべきである点は理解されるべきで
ある。上記の記述は、有効範囲の点においてFMACを
通る数値の流れを正の数に限定した。本発明は正負両方
の数に関連してFMACを使用することができるように
考慮されているが、(2の補数形式への変換やビット反
転などの符号付き数値の取り扱いに関する従来技術につ
いて知識を持つ)当業者が負数を使用する上述の方法を
完全に実施することができる点は認められるであろう。
【0030】本発明には、例として次のような実施様態
が含まれる。 (1)累算演算(A×B)+Cを実行する浮動小数点乗算
累算装置すなわちFMAC装置であって、数値A,Bお
よびCそれぞれの入力部と、乗算(A×B)の結果の仮数
の範囲を越えるCの仮数の1つ以上のビットを格納する
CHIレジスタと、(A×B)の仮数の範囲と重なるCの
仮数の1つ以上のビットを格納するCBUSレジスタ
と、Cと(A×B)の指数の差に対応する数のビットだけ
Cの仮数を左へシフトさせて、シフトさせたビット位置
をCBUSレジスタに格納させる第1シフト器と、(A
×B)+CBUSを出力する加算器と、加算器の(A×
B)+CBUS出力に接続する先頭ビット予測器と、(A
×B)+C累算結果出力部と、先頭ビット予測器の出力
をCと(A×B)の指数の間の差に等しいビット数だけ右
へシフトさせて、シフトさせた結果を累算結果出力部に
出力する第2シフト器と、(A×B)の仮数の範囲を越え
るCの仮数の1つ以上のビットを格納するCHIレジス
タのビットと累算結果出力の1つ以上の上位ビットを結
合させる結合手段と、を備えるFMAC装置。 (2)数値A,BおよびCがそれぞれmビットの仮数部
および指数部を持ち、(A×B)の仮数部が「2m+1」
ビットを含み、(A×B)+CBUS出力が「2m+1」
ビットを含み、加算器が「2m+1」ビットの最大幅を
持つ、上記(1)に記載のFMAC装置。 (3)第1シフト器および第2シフト器が「2m+1」
ビットの最大幅を持つ、上記(2)に記載のFMAC装
置。 (4)先頭ビット予測器が「2m+1」ビットの最大幅
を持つ、上記(3)に記載のFMAC装置。 (5)「2m+1」ビットの最大データ経路幅を備える
上記(4)に記載のFMAC装置。 (6)AおよびBの入力部に接続し、乗算(A×B)を実
行して「2m+1」ビットの仮数部の積を出力する乗算
機構を更に備える上記(1)に記載のFMAC装置。
【0031】(7)数値A、BおよびCが各々mビット
の仮数および指数を含み、乗算(A×B)の結果が「2m
+1」ビットの仮数および指数を含む累算演算(A×B)
+Cを実行する浮動小数点乗算累算装置すなわちFMA
C装置において、(A×B)とCの指数部を比較して(A
×B)とCの仮数が重ね合う範囲があるか否かを判断す
るステップと、(A×B)仮数部の範囲を越えるC仮数部
分をすべてCHIレジスタへ転送するステップと、(A
×B)仮数部と重なり合うCの仮数部分をシフトさせ
て、(A×B)およびCの仮数のビットをそれぞれの大き
さに従って位置調整するステップと、Cの仮数のシフト
された部分を(A×B)の仮数部に加算して一時的結果を
生成するステップと、C仮数の一部がCHIバッファへ
転送されている場合、CHIバッファへ転送されたビッ
ト数に応じて、1つまたは複数の最下位ビットを一時的
結果からシフトさせるステップと、CHIバッファへ転
送されたC仮数部のビットを一時的結果の1つまたは複
数の最上位ビット位置にマージさせて、累算結果を生成
するステップと、を含むCを(A×B)に加算する方法。 (8)一時的結果が「2m+1」ビットの仮数部を含む
上記(1)に記載の方法。 (9)累算結果に対し切り捨て演算を実行して「m−
1」ビットの累算結果を作成するステップを更に含む上
記(8)に記載の方法。 (10)上記切り捨て演算が、CHIバッファへ転送さ
れたC仮数部のビットを一時的結果の1つまたは複数の
最上位ビット位置にマージさせて累算結果を生成するス
テップと同時に実行される、上記(9)に記載の方法。
【0032】
【発明の効果】本発明の装置およびその装置を使用する
方法は、(A×B)+Cのすべての演算を「2m+1」ビ
ット幅のデータ経路境界内で実行することを可能とし、
これによって、FMACを実行するために必要とされる
チップ面積の減少、信号経路の短縮、システム処理性能
の向上、より小さくより低コストの加算器、シフト器等
のコンポーネントの使用および顕著なコスト節減という
効果を奏する。
【図面の簡単な説明】
【図1】加数上位部の除去によって「2m+1」ビット
幅に制限されたデータ経路を備えたFMAC装置のブロ
ック図である。
【図2】「3m+1」ビット幅のデータ経路を備えた従
来技術のFMAC装置のブロック図である。
【図3】EXP(C)<<EXP(A*B)の場合のFMA
Cを通過するデータの流れを示すブロック図である。
【図4】EXP(C)<EXP(A*B)の場合のFMAC
を通過するデータの流れを示すブロック図である。
【図5】EXP(C)>>EXP(A*B)の場合のFMA
Cを通過するデータの流れを示すブロック図である。
【図6】EXP(C)>EXP(A*B)の場合のFMAC
を通過するデータの流れを示すブロック図である。
【図7】図1のFMACを制御するクロック信号を示す
ブロック図である。
【符号の説明】
20 本発明のFMAC装置 22 浮動小数点数値A 24 浮動小数点数値B 26 乗算機構 28 A×B 30 浮動小数点数値C 32 CHIレジスタ 34 第1シフト器 36 CBUSレジスタ 38、54 加算器 40、56 先頭ビット予測器 42 第2シフト器 44 累算結果RESULT 46 一時的結果TEMP 48 シフトされた一時的結果SHIFTED_TE
MP 50 従来技術のFMAC装置 52、58 シフト器

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】累算演算(A×B)+Cを実行する浮動小数
    点乗算累算装置すなわちFMAC装置であって、 数値A,BおよびCそれぞれの入力部と、 乗算(A×B)の結果の仮数の範囲を越えるCの仮数の1
    つ以上のビットを格納するCHIレジスタと、 (A×B)の仮数の範囲と重なるCの仮数の1つ以上のビ
    ットを格納するCBUSレジスタと、 Cと(A×B)の指数の差に対応する数のビットだけCの
    仮数を左へシフトさせて、シフトさせたビット位置をC
    BUSレジスタに格納させる第1シフト器と、 (A×B)+CBUSを出力する加算器と、 加算器の(A×B)+CBUS出力に接続する先頭ビット
    予測器と、 (A×B)+C累算結果出力部と、 先頭ビット予測器の出力をCと(A×B)の指数の間の差
    に等しいビット数だけ右へシフトさせて、シフトさせた
    結果を累算結果出力部に出力する第2シフト器と、 (A×B)の仮数の範囲を越えるCの仮数の1つ以上のビ
    ットを格納するCHIレジスタのビットと累算結果出力
    の1つ以上の上位ビットを結合させる結合手段と、 を備えるFMAC装置。
JP30445196A 1995-11-30 1996-11-15 浮動小数点乗算累算装置 Expired - Fee Related JP3803438B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US566,415 1995-11-30
US08/566,415 US5757686A (en) 1995-11-30 1995-11-30 Method of decoupling the high order portion of the addend from the multiply result in an FMAC

Publications (3)

Publication Number Publication Date
JPH09231201A true JPH09231201A (ja) 1997-09-05
JPH09231201A5 JPH09231201A5 (ja) 2004-08-26
JP3803438B2 JP3803438B2 (ja) 2006-08-02

Family

ID=24262792

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30445196A Expired - Fee Related JP3803438B2 (ja) 1995-11-30 1996-11-15 浮動小数点乗算累算装置

Country Status (2)

Country Link
US (1) US5757686A (ja)
JP (1) JP3803438B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3790307B2 (ja) * 1996-10-16 2006-06-28 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
US6115729A (en) * 1998-08-20 2000-09-05 Arm Limited Floating point multiply-accumulate unit
US6542915B1 (en) * 1999-06-17 2003-04-01 International Business Machines Corporation Floating point pipeline with a leading zeros anticipator circuit
DE10050589B4 (de) 2000-02-18 2006-04-06 Hewlett-Packard Development Co., L.P., Houston Vorrichtung und Verfahren zur Verwendung beim Durchführen einer Gleitkomma-Multiplizier-Akkumulier-Operation
US6571266B1 (en) * 2000-02-21 2003-05-27 Hewlett-Packard Development Company, L.P. Method for acquiring FMAC rounding parameters
US8402075B2 (en) * 2009-03-16 2013-03-19 Advanced Micro Devices, Inc. Mechanism for fast detection of overshift in a floating point unit of a processing device
US8606840B2 (en) * 2010-03-17 2013-12-10 Oracle International Corporation Apparatus and method for floating-point fused multiply add
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US11720328B2 (en) * 2020-06-26 2023-08-08 Advanced Micro Devices, Inc. Processing unit with small footprint arithmetic logic unit
US20220283778A1 (en) * 2021-03-04 2022-09-08 Samsung Electronics Co., Ltd. Method and device for encoding
CN119987714B (zh) * 2024-11-29 2025-10-28 浙江大学 多低位宽浮点数融合点积加计算装置及方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4926369A (en) * 1988-10-07 1990-05-15 International Business Machines Corporation Leading 0/1 anticipator (LZA)
US4969118A (en) * 1989-01-13 1990-11-06 International Business Machines Corporation Floating point unit for calculating A=XY+Z having simultaneous multiply and add
US5375078A (en) * 1992-12-15 1994-12-20 International Business Machines Corporation Arithmetic unit for performing XY+B operation
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

Also Published As

Publication number Publication date
JP3803438B2 (ja) 2006-08-02
US5757686A (en) 1998-05-26

Similar Documents

Publication Publication Date Title
US6099158A (en) Apparatus and methods for execution of computer instructions
US5790446A (en) Floating point multiplier with reduced critical paths using delay matching techniques
JP2662196B2 (ja) 演算結果正規化方法及び装置
Pineiro et al. High-speed double-precision computation of reciprocal, division, square root, and inverse square root
JP3152953B2 (ja) パイプライン浮動小数点プロセッサ
US6411980B2 (en) Data split parallel shifter and parallel adder/subtractor
US5892698A (en) 2's complement floating-point multiply accumulate unit
JP2002108606A (ja) スティッキービット生成回路及び乗算器
JP3803438B2 (ja) 浮動小数点乗算累算装置
US5301139A (en) Shifter circuit for multiple precision division
JP3556950B2 (ja) 高速算術演算装置のけた上げ先見加算器段の数を減少させる構造及び方法
US9575725B1 (en) Specialized processing block with embedded pipelined accumulator circuitry
JPH07234778A (ja) 演算回路
US4823300A (en) Performing binary multiplication using minimal path algorithm
KR100317767B1 (ko) 부동 소수점 2진 4 워드 포맷 승산 명령 유닛
JP3579087B2 (ja) 演算器およびマイクロプロセッサ
US5351207A (en) Methods and apparatus for subtraction with 3:2 carry-save adders
JPH096595A (ja) 演算結果の表示方法
JPH04172526A (ja) 浮動小数点除算器
Dhanabal et al. Implementation of low power and area efficient floating-point fused multiply-add unit
JPWO2002029546A1 (ja) 演算器及びそれを用いた電子回路装置
JP3413940B2 (ja) 演算回路
JPH1069372A (ja) 演算実行方法及び演算装置
WO1998006029A1 (en) Apparatus and methods for execution of computer instructions
JP3100868B2 (ja) 浮動小数点数のための算術演算装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050908

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051206

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060501

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060508

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees