JP3803438B2 - 浮動小数点乗算累算装置 - Google Patents
浮動小数点乗算累算装置 Download PDFInfo
- Publication number
- JP3803438B2 JP3803438B2 JP30445196A JP30445196A JP3803438B2 JP 3803438 B2 JP3803438 B2 JP 3803438B2 JP 30445196 A JP30445196 A JP 30445196A JP 30445196 A JP30445196 A JP 30445196A JP 3803438 B2 JP3803438 B2 JP 3803438B2
- Authority
- JP
- Japan
- Prior art keywords
- mantissa
- bits
- register
- fmac
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49936—Normalisation 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)
Description
【発明の属する技術分野】
本発明は、浮動小数点乗算累算装置であるFMAC装置において乗算結果に対する加数の高位部分の結合を行わないことによって演算機構のデータ経路幅の拡大を抑える方法および装置に関するものである。
【0002】
【従来の技術】
マイクロプロセッサのアーキテクチャの設計において、速度、正確度およびコストという3つの非常に重要な考慮点がある。優れた正確度および高速での乗算、加算およびその他の演算を実行するマイクロプロセサ(CPU)を設計することは望ましいことではあるが、コストの観点から効率的に製造することことができるCPUを設計することもまた望まれる。RISC(すなわち減少命令セット・コンピュータ)のCPUにおいて乗算および加算を累計演算すなわち(A*B)+Cに融合させることによって速度および正確度が顕著に向上した。単に2つの数を加算または乗算することが必要ならば、C=0をセットすることによって演算A*Bを実行し、またB=1をセットすることによっ演算A+Cを実行することができる。演算(A*B)+Cを実行するCPUコンポーネントは、(浮動小数点乗算累算装置を意味するFloating-point Multiply Accumulate Unitの頭文字である)FMACまたは(乗算加算融合浮動小数点装置を意味するMultiply-Add-Fused Floating-Point Unitの頭文字である)MAF/FPUと一般に呼ばれる。
【0003】
FMACへの入力は、オペランドA(被乗数)、B(乗数)およびC(加数)であり、この場合、A、BおよびCは固定または浮動小数点数のいずれかである。2進数形式で単精度(32ビット)または倍精度(64ビット)を表現するための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のデータ経路は、53ビットから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 anticipator)および/または丸め器を使用して出力されるFMACの累算結果は、S、EおよびMの形式での(先頭1ビットが再び取り除かれた)「m‐1」ビット仮数、指数および符号ビットである。「m‐1」ビット仮数から切り捨てられたあるいはその範囲外へシフトされたビットは丸め計算において使用される。
【0010】
【発明が解決しようとする課題】
「3m+1」ビットの加算器、シフト器および先頭ビット予測器によって必要とされる物理的な空間は従来技術のFMACの欠点であると認められる。これらのコンポーネントによって底部でまた乗算機構の傾斜によって片側に飛び出した半端な形状のチップ面積を効率的に利用することは難しい。チップ面積は高価であるので、空間の浪費は非常にコスト高となる。
【0011】
更に、大きな加算器、シフト器および先頭ビット予測器のデータ経路に関する要件によって、FMAC製造コストが増大し、システム処理性能が低下する(信号経路の距離増加のため演算速度が低下する)。従って、FMACデータ経路を「3m+1」ビット幅に拡張する必要性を除去しそれによってFMACデータ経路を「2m+1」ビット幅にとどめるFMACおよびこれを使用する方法を提供することが本発明の主要目的である。
【0012】
また、最高「2m+1」ビットの加算器、シフト器および先頭ビット予測器の使用のみを必要とするFMACおよびこれを使用する方法を提供することが本発明の別の目的である。更に、FMACによって必要とされる物理的チップ面積減少を通して顕著なコスト節減を実現するFMACおよびこれを使用する方法を提供することが本発明の別の目的である。更にまた、信号経路の短絡によってシステム処理性能を向上させるFMACおよびこれを使用する方法を提供することが本発明の更にまた別の目的である。
【0013】
【課題を解決するための手段】
上記発明の課題を解決するため、本発明は、A、BおよびCが各々mビットの仮数および指数を含み、(A×B)の結果が2mビットの仮数および指数を含む演算(A×B)+Cを実行する浮動小数点乗算累算装置(すなわちFMAC)を提供する。FMACは先ず(A×B)とCの指数部を比較して(A×B)とCの仮数に重ね合わせ範囲があるか否かを判断する。(A×B)仮数部の範囲を越えるC仮数部分はすべてCHIバッファへ転送される。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つまたは複数の下位ビットを一時的加算結果からシフトさせる。最後に、CHIレジスタ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の指数の差に対応する数のビットだけC30の仮数を左へシフトさせて、シフトさせたビット位置をCBUSレジスタ36に格納させる第1シフト器34、(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がFMAC20内で分割できない演算として実行されるが、(A*B)の結果28に対するC30の高位部分の結合を行わずに(A*B)をCに加算する方法は、A22とB24の乗算とは無関係であり、従って、FMAC20の乗算機構26について知らなければならないことは、キャリ保存加算器または同等の機構を使用してオペランドA22および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とC30の仮数によって表されている。より小(<)およびより大(>)は、(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においては、このケースでは、「3m+1」ビットの加算器54、シフト器52、58および先頭ビット予測器56が必要とされるので、FMAC50のデータ経路は「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」ビットCBUSレジスタ36へ転送される。C30の内容がCBUS36へ転送されると、その内容は、C30と(A*B)28の指数の差に対応する数のビットだけ左へシフトされる。C30の高位部分がCBUS36からマスクされ、C30と(A*B)28の重なり合うビットが今や調整されたことが観察される。CBUS36の下位ビットはゼロで埋められる。C30と(A*B)28の重なり合うビットが調整された後、「2m+1」ビット幅加算器を使用して(A*B)+CBUSの一時的結果(図5でTEMP46として表されている)が生成される。スティッキー・ビット情報を使用してTEMP結果46を丸めることができるであろうし、また、TEMP46からのどのようなキャリもCHI32を増加させるために使用することができる。CHI32の下位ビットはゼロで埋められるので、TEMP46からのキャリは、CHI32の下位ビットからC30の高位部分を表すCHI32のビットに伝播する点に注意する必要がある。
【0022】
TEMP結果46を作成した後、TEMP結果46は、C30と(A*B)28の指数の間の差に等しいビット数だけ右へシフトされなければならない。TEMP46のビットが右にシフトされると、TEMP46の上位ビットはゼロで埋められる。シフトされたTEMPレジスタは、図5においてSHIFTED_TEMP48と表記されている。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の仮数が重ならないことを示す。従って、C30のすべてのビットがCHI32へ転送され、FMAC20の出力はCHI32に等しく、使用する丸め方式に依存するがおそらく最下位ビットの±1によって丸めが行われるであろう。CBUS36、TEMP46およびSHIFTED_TEMP48のレジスタの値は、FMAC20の結果として生じる出力に関しては無関係である。C30の存在しない低位ビットがCBUS36にシフトされる時、オーバーシフトが発生し無意味なCBUS36を作成する(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のビットはCHI32にシフトされない。C30はCBUS36に転送される際右へシフトされる。CBUS36の下位ビットがゼロで埋められ、CBUS36の上位ビットは符号拡張ビットで埋められる(すなわちC30が正ならゼロで、負なら1で埋められる)。C30の1つまたは複数のビットがCBUS36の範囲外へシフトされる可能性がある。これらのビットは丸めのため使用することもできる。TEMP結果46が計算された後、先頭ビット予測器およびシフト器が、SHIFTED_TEMP48のTEMP結果46を左にシフトさせる。
【0026】
上記の方法を実行することができるFMAC20が図1に示されている。FMAC20がその最大データ経路幅が「3m+1」ビットではなく「2m+1」ビットに限定されている点において従来技術のFMAC50と相違することに注意する必要がある。図1のFMAC20の乗算機構は、従来技術のFMAC50のものと同じである。しかし、加算器38、先頭ビット予測器40およびシフト器34、42は同じではない。CBUS36が(A*B)28と重なるC30部分のみを含むので、それは「2m+1」ビット幅に限定される。この結果、CBUS36に先行するシフト器34、42および累算結果レジスタ44は、「2m+l」ビット幅に限定することができる。更に、先頭ビット予測器40もまた「2m+1」ビット幅に限定することができる。FMACのデータ経路の最大幅の制限は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を実行する浮動小数点乗算累算装置すなわちFMAC装置において、(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)の場合のFMACを通過するデータの流れを示すブロック図である。
【図4】EXP(C)<EXP(A*B)の場合のFMACを通過するデータの流れを示すブロック図である。
【図5】EXP(C)>>EXP(A*B)の場合のFMACを通過するデータの流れを示すブロック図である。
【図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_TEMP
50 従来技術のFMAC装置
52、58 シフト器
Claims (3)
- 累算演算(A×B)+Cを実行する浮動小数点乗算累算装置すなわちFMAC装置であって、入力A,BおよびCそれぞれが仮数と指数とを備え、乗算装置が(A×B)の仮数を(A×B)レジスタに配置し、
CHIレジスタであって、(A×B)の仮数の範囲を越えるCの仮数のビットを、CHIレジスタに転送する手段に接続されたCHIレジスタと、
CBUSレジスタであって、(A×B)の仮数の範囲と重ね合うCの仮数のビットを、(A×B)レジスタおよびCBUSレジスタに含まれる仮数の重なるビットを加算のため位置調整するように、CBUSレジスタに配置する第1シフト器に接続されたCBUSレジスタと、
(A×B)レジスタおよびCBUSレジスタに接続され、(A×B)+CBUS出力を提供する加算器と、
加算器の(A×B)+CBUS出力部に接続する先頭ビット予測器と、
先頭ビット予測器に接続され、一時的出力を提供する第2シフト器と、
(A×B)の仮数の範囲を越えるCの仮数のビットを格納するCHIレジスタのビットと一時的出力の1つ以上の上位ビットを結合させ、(A×B)+C累算出力を作成する結合手段と、を備えるFMAC装置。 - (A×B)の仮数部が「2m+1」ビットを含み、(A×B)+CBUS出力が「2m+1」ビットを含み、加算器が「2m+1」ビットの最大幅を持つ、請求項1に記載のFMAC装置。
- 数値A、BおよびCが各々mビットの仮数および指数を含み、乗算(A×B)の結果が「2m+1」ビットの仮数および指数を含む累算演算(A×B)+Cを実行する浮動小数点乗算累算装置すなわちFMAC装置において、Cを(A×B)の結果に加算する方法であって、(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)の結果に加算する方法。
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 (2)
Publication Number | Publication Date |
---|---|
JPH09231201A JPH09231201A (ja) | 1997-09-05 |
JP3803438B2 true 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 (9)
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 |
Family Cites Families (4)
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 |
-
1995
- 1995-11-30 US US08/566,415 patent/US5757686A/en not_active Expired - Lifetime
-
1996
- 1996-11-15 JP JP30445196A patent/JP3803438B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH09231201A (ja) | 1997-09-05 |
US5757686A (en) | 1998-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5963461A (en) | Multiplication apparatus and methods which generate a shift amount by which the product of the significands is shifted for normalization or denormalization | |
US6904446B2 (en) | Floating point multiplier/accumulator with reduced latency and method thereof | |
JP4418578B2 (ja) | 第1、第2、第3オペランドに浮動小数点演算を適用するためのデータ処理装置および方法 | |
US6360189B1 (en) | Data processing apparatus and method for performing multiply-accumulate operations | |
JP3152954B2 (ja) | 浮動小数点プロセッサ | |
US7395304B2 (en) | Method and apparatus for performing single-cycle addition or subtraction and comparison in redundant form arithmetic | |
JP2662196B2 (ja) | 演算結果正規化方法及び装置 | |
JP3152953B2 (ja) | パイプライン浮動小数点プロセッサ | |
JP3689183B2 (ja) | 正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算 | |
US6697832B1 (en) | Floating-point processor with improved intermediate result handling | |
US6411980B2 (en) | Data split parallel shifter and parallel adder/subtractor | |
JP2002108606A (ja) | スティッキービット生成回路及び乗算器 | |
US5892698A (en) | 2's complement floating-point multiply accumulate unit | |
JPH06236257A (ja) | データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置 | |
US5301139A (en) | Shifter circuit for multiple precision division | |
JP3803438B2 (ja) | 浮動小数点乗算累算装置 | |
US20050228844A1 (en) | Fast operand formatting for a high performance multiply-add floating point-unit | |
Fahmy et al. | The case for a redundant format in floating point arithmetic | |
US6061707A (en) | Method and apparatus for generating an end-around carry in a floating-point pipeline within a computer system | |
KR100317767B1 (ko) | 부동 소수점 2진 4 워드 포맷 승산 명령 유닛 | |
Isseven et al. | A dual-mode quadruple precision floating-point divider | |
JP3579087B2 (ja) | 演算器およびマイクロプロセッサ | |
US5351207A (en) | Methods and apparatus for subtraction with 3:2 carry-save adders | |
JP2007226489A (ja) | 乗算装置、及び演算装置 | |
JPH10143355A (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 |