JP2008510229A - 効率的浮動小数点式aluのための方法及び装置 - Google Patents

効率的浮動小数点式aluのための方法及び装置 Download PDF

Info

Publication number
JP2008510229A
JP2008510229A JP2007525720A JP2007525720A JP2008510229A JP 2008510229 A JP2008510229 A JP 2008510229A JP 2007525720 A JP2007525720 A JP 2007525720A JP 2007525720 A JP2007525720 A JP 2007525720A JP 2008510229 A JP2008510229 A JP 2008510229A
Authority
JP
Japan
Prior art keywords
exponent
floating point
difference
point operands
mantissa
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
JP2007525720A
Other languages
English (en)
Other versions
JP5145040B2 (ja
Inventor
サウルブ スリヴァスタヴァ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Analog Devices Inc
Original Assignee
Analog Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Analog Devices Inc filed Critical Analog Devices Inc
Publication of JP2008510229A publication Critical patent/JP2008510229A/ja
Application granted granted Critical
Publication of JP5145040B2 publication Critical patent/JP5145040B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • 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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49915Mantissa overflow or underflow in handling floating-point numbers

Landscapes

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

Abstract

本発明は、マイクロプロセッサの演算論理ユニット(ALU)において、近距離処理経路(110)指数差を実行するための改善された技術を提供する。一つの実施形態では、近距離処理経路(110)減算および遠距離処理経路(140)減算のための別々の論理回路を有する装置(100)が、二つの浮動小数点式オペランドの指数の二つの最下位ビットのみを使用して指数差信号を発生させて、指数差を実行する。
【選択図】図1

Description

本発明は、マイクロプロセッサ内での浮動小数点式算術演算に関し、特に、不動小数点ユニット内における加算/減算パイプラインに関する。
(関連出願の相互参照)
2004年8月13日にSaurbh Srivastavaによって出願された、「32/40ビット浮動小数点式ALU」と題する米国仮出願第60/601,383号、および2005年6月21日にSaurbh Srivastavaによって出願された、「効率的な浮動小数点式Aluのための方法および装置」と題する米国特許出願第11/157650号に対する35.U.S.C.119(e)の利益を請求する。
一般的に、浮動小数点式オペランドは三つの要素からなっており、第一は符号ビットであり、第二は仮数ビットであり、第三は指数ビットである.例えば、32ビットの浮動小数点式オペランドは、IEEE(アメリカ電気・電子通信学会)基準に従って次のように表される。
(−I)s × 1.M23 × 2(E8-127)
…符号… …仮数… …指数…
典型的には、浮動小数点加算演算には、二つの浮動小数点式オペランドに対する算術演算が含まれる。例えば、この二つの浮動小数点式オペランドに対する算術演算には、次のステップが含まれる:
1.低い指数を有するオペランドの仮数をダウンシフトすることにより、二つの浮動小数点式オペランド(オペランド)の指数を同じにする。
2.両方のオペランドの仮数を加算し(丸め操作を伴って、または伴わずに)、加算された数を出力する。
3.加算された数がオーバーフローするときは(例えば、32ビット加算において、加算された数が32ビットを越えれば、加算された数はオーバーフローする)、加算された数を1ビットだけダウンシフトする。
上記で概略を説明した浮動小数点式加算演算は、全ダウンシフタ、加算器、および1ビットダウンシフタを必要とする。
同様に、浮動小数点式減算演算も、一般に二つのオペランドに対する算術演算を含んでいる。従来の技術は、遠距離処理経路および近距離処理経路と称される二つの並行処理経路を使用し、一方の処理経路の出力を減算結果として選択することによって、減算演算を行う。
両オペランドの指数の差が1またはゼロであるときは、近距離処理経路演算が使用される。指数の差が1または0であるから、最大1ビットのダウンシフト演算には、指数を等しくすることが必要とされる。指数を等しくした後に、シフトされた仮数が他の残りの仮数から差引かれる。このような場合に、最も重要なビット(MSB)は、減算結果における如何なるビット位置にあってもよい。その結果、一つの完全なアップシフタは、MSBを1番目の位置に持ってくる(および指数はアップシフタに等しい量だけ減算される)ことが必要とされる。この1番目の位置は、減算された数の左側から参照される。例えば、32ビット減算器においては、結果のMSBは、32番目のビット〜1番目のビットの間の何処であることもできる。このような場合、MSBは最高の32番目のビット位置までアップシフトされなければならず、これは一般に、32ビットのアップシフタを必要とする。従って、近距離処理経路減算は、一つの1ビットダウンシフタ、一つの32ビット減算器、および32ビットアップシフタを要求することができる。
遠距離処理経路操作は、両オペランドの指数間の差が1よりも大きいときに使用される。遠距離処理経路の指数差は1より大きいことができ、従って、如何なる数であることもできる。その結果、仮数をダンシフトすることによって二つのオペランドの指数を同じにするために、完全なダウンシフタが必要とされる。次いで、小さい方の入力された指数を有するオペランドの仮数が、他方のオペランドの仮数から減算される。次いで、この減算された結果は、1ビットのアップシフト演算を要求することができる。その結果、遠距離処理経路の減算演算は、完全なダンシフタ、完全な減算器、および1ビットアップシフタを必要とすることができる。例えば、32ビット遠距離処理経路の減算は、32ビットのダウンシフタ、32ビットの減算器、および1ビットのアップシフタを要求することができる。
従って、上記の近距離処理経路の浮動小数点式減算演算は、指数減算器、または二つのオペランドの指数差を検出する他の何れかの論理回路を必要とすることができる。仮数の差が0、1、または−1であれば、近距離処理経路は減算を行う。この指数減算論理時間は、有意であることができる。この時間の間、近距離処理経路はアイドル状態のままである。即ち、それは指数差論理の結果を待つであろう。これは、上記の近距離処理経路および遠距離技術を使用するときに、全体の減算演算時間に有意に加えることができる。更に、丸め、アップシフトエラー訂正、アンダーフロー検出、およびダウンシフトされた仮数選択のような操作もまた、浮動小数点減算のために上記の遠距離操作経路および近距離操作経路技術を使用するときには、有意な量の追加の論理時間を必要とする可能性がある。
本発明は、指数差評価を行うための改善された技術であって、マイクロプロセッサの演算論理ユニット(ALU)の近距離処理経路と等価な減算結果を生じるために使用できる技術を提供する。一つの実施形態では、近距離処理経路および遠距離処理経路の減算のために別の論理を有する回路が、二つの浮動小数点式オペランドの指数の二つの最下位ビットのみを使用して、近距離処理経路のための指数差信号を発生する。
以下、本発明の実施形態の詳細な説明においては、本開示の一部をなす添付の図面が参照され、該図面には本発明が実施される特定の実施形態の例が示される。これらの実施形態は、当業者が本発明を実施できるように充分に詳細に記述され、従って他の実施形態が活用されてよいこと、および本発明の範囲を逸脱することなく変更を加えてよいことが理解されるべきである。
<近距離処理経路のための指数差を予測する改良スキーム>
図1を参照すると、本発明の一実施形態に従うマイクロプロセッサの演算論理ユニット(ALU)において、二つの浮動小数点式オペランドの減算を行うための並行演算を実施する装置のブロック図が示されている。図1に示すように、装置100は、近距離処理経路110および遠距離処理経路140、入力論理回路160、入力データバス170、および最終結果マルチプレクサ180を含んでいる。
更に、図1に示すように、近距離処理経路110は、近距離処理経路指数コンパレータ(NPEC)112、一対の近距離処理経路減算前マルチプレクサ114、一対の近距離処理経路減算器116、近距離処理経路MSB/キャリー発生回路(CMG1)118、近距離処理経路減算結果セレクタ(SRS)120、減算後近距離処理経路マルチプレクサ122、アップシフト予測器124、アップシフト誤差予測モジュール126、近距離処理経路減算後アップシフタ(NPPPSU)138.仮数アンダーフロー信号発生モジュール132、指数アンダーフロー信号発生モジュール134、および正常結果信号発生モジュール136を含んでいる。図1に示すように、近距離処理経路減算後アップシフタ138は、アップシフタ128およびマルチプレクサ130を含んでいる。
遠距離処理経路140は、遠距離処理経路指数減算器(FPES)142、遠距離処理経路指数コンパレータ(FPEC)144、一対のダウンシフタ146、一対の減算前遠距離処理経路マルチプレクサ(PSFPM)148、一対の遠距離処理経路減算器150、遠距離経路減算MSB/キャリー発生回路(CMG2)152、遠距離処理経路SRS154、減算後遠距離処理経路マルチプレクサ156を含んでいる。
動作に際し、一つの実施形態においては、入力データバス170が第一および第二の浮動小数点式オペランドを受取り、これらを入力論理回路160に与える。次いで、該入力論理回路160は、第一および第二の浮動小数点式オペランドの各々に関連した符号ビット、仮数および指数を計算し、それらを、第一および第二の浮動小数点式オペランドの間の差を計算するために、近距離処理経路110および遠距離処理経路140に与える。これらの実施形態において、入力データバス170に結合された入力論理回路160は、入力データバス170から第一および第二の浮動小数点式オペランドを受取り、この受取った第一および第二の浮動小数点式オペランドに対応する複数の計算された指数および仮数を提供する。
本発明は、近距離経路指数差が0、1、または−1に等しいかどうかを計算するために、従来の技術で必要とされる時間の殆ど半分だけ、必要な時間を減少させる。加えて、この新しいスキームは、このようなALU演算を実行する従来のスキームと比較すると、より少ないハードウエアしか必要としない。
第一および第二の浮動小数点式オペランドに関連した指数を受取ると、近距離処理経路110は複数の指数差信号を発生する。一つの実施形態において、近距離処理経路110は以下の方程式を使用する。これは、ALU演算を実行するために必要な指数差信号を発生するために、指数の最下位2ビットだけが必要とされることを示している。
GT=(EXPsame[1] and XEXP[O] and 〜YEXP[O])または
(EXPdiffr[1] and YEXP[O] and 〜XEXP[O]) ;
LT=(EXPsame[l] and YEXP[O] and 〜XEXP[O])または
(EXPdiffr[1] and XEXP[O] and 〜YEXP[O]) ;
EQ= EXPsame[O] ;
ここで、EXPsame[i]=XEXP[i] xnor YEXP[i];EXPdiffr[i]=XEXP[i] xor YEXP[i]であり;またGT、LT、およびEQは、上記式によって発生された指数差信号であり、これらは+1、−1、および0の指数差信号に等しい。それらは、基本的にはXEXPおよびYEXPの間の差の予測であり、ここでのXEXPおよびYEXPは第一および第二の浮動小数点式オペランドの指数である。このGT、LTおよびEQ、並びに+1、−1および0の間の同値関係は条件付きである。即ち、この同値関係は、XEXPおよびYEXPの間の差が+1、−1、または0に等しい時だけである。これは、何れか二つの数の間の差が+1、−1、または0であれば、上記等式は実際の指数差を計算するために使用できることを意味している。近距離処理経路の結果は、このような場合だけ(即ち、指数差が+1、−1、または0のとき)のために選択される。従って、選択された結果について予測された指数差結果が正しいとき、最終出力結果は正しく終了する。よって、近距離減算器110のための指数差は、有意に長い時間および大きなシリコン面積を要し得る現在の技術を使用するのではなく、むしろ上記式を使用して発生させることができる。
近距離経路計算のためにこの技術を使用することは、何れか二つの数の指数差が+1、−1、または0に等しいときには、同じ指数差計算をもたらすであろう。他方、この結果は、何れか二つの数の指数差が+1、−1、または0に等しくないときは異なるであろう。最終マルチプレクサは他の指数差のために近距離経路出力を取らないので、これは減算器の最終結果には影響しない。この技術を近距離経路指数差のために使用すると、より迅速な予測および条件付きの正確な差信号をもたらし、また指数差の全ての場合について同じ結果は生じない。
幾つかの実施形態において、NPEC112、近距離処理経路110は、入力論理回路160を介して第一および第二の浮動小数点式オペランドに関連した指数を受取ったときに、GT、LT、およびEQ指数差信号を発生する。
幾つかの実施形態では、近距離処理経路110におけるアップシフト予測器124は、次いで、両オペランドの発生した複数の指数差信号および仮数に基づいて、近距離処理経路アップシフト値を発生させる。
幾つかの実施形態において、一対の近距離経路の減算前マルチプレクサ114は、発生されたGT、LT、およびEQ指数差信号、並びに入力論理回路160から受信された第一および第二の浮動小数点式オペランドの仮数に基づいて、一対の近距離処理経路正規化仮数を発生する。
これらの実施形態においては、一対の近距離処理経路減算器116、即ち、丸めを伴った一つの数および丸めを伴わない他の数を減算することにより、一対の近距離処理経路正規化仮数に基づいて一対の減算された値が発生される。次いで、CMG1・118は、前記発生された一対の近距離処理経路正規化仮数および丸めモード(即ち、ALUへの入力信号)、並びに減算前マルチプレクサからの廃棄されたビットを使用して、MSBおよびキャリーを発生させる(減算前マルチプレクサは該仮数を直接渡すか、または1ビットだけダウンシフトさせ、1ビットダウンシフトの場合は、該ダウンシフトされ得た仮数からの一つのLSBビットが廃棄される)。
これらの実施形態においても、次いで、減算後近距離処理経路マルチプレクサ122は、前記一対の減算された値から、選択された信号に基づいて近距離減算された値を選択する。
アップシフト予測器124は、GT、LTおよびEQ指数差信号をNPEC112から、また第一および第二の浮動小数点オペランドの仮数を入力論理回路160から実質的に同時に受取り、アップシフト予測信号およびエラー整合パターンを発生する。幾つかの実施形態において、アップシフト予測器124は、第一および第二の浮動小数点式オペランドに関連したGT、LT、およびEQ指数差信号および仮数を受取ったときに、アップシフト予測信号およびエラー整合パターンを発生する。
更に、これらの実施形態において、アップシフトエラー予測モジュール126は、次いで、前記エラー整合パターンおよび前記近距離処理経路減算値に基づいて、予測エラー信号を発生する。前記近距離処理経路減算後アップシフタ138は、次いで、前記近距離処理経路減算値、前記アップシフト予測信号および前記予測エラー信号に基づいて、近距離処理経路アップシフトされた値を発生する。
幾つかの実施形態では、入力論理回路160から第一および第二の浮動小数点オペランドに関連した指数を受取ったときに、遠距離処理経路140は、実質的に同時に該指数を減算して、より小さい指数の仮数のために必要とされるダウンシフトの量を出力する。次いで、遠距離処理経路140は、第一および第二の浮動小数点式オペランドに関連した仮数のための、一対の遠距離処理経路ダウンシフトされた仮数選択信号を発生する。更に、遠距離処理経路140は、前記第一および第二の浮動小数点式オペランドに関連した指数に基づいて、第一および第二の医浮動小数点式オペランドに関連した仮数のための、一対の遠距離処理経路直接仮数選択信号を発生する。
これらの実施形態において、FPES142は、入力論理回路160から第一および第二の浮動小数点式オペランドの指数を受取り、該第一および第二の浮動小数点式オペランドに関連した指数を減算して、一対の予測されたダウンシフト値を出力する。次いで、FPEC144が、第一および第二の浮動小数点式オペランドに関連した仮数のための、一対の遠距離処理経路ダウンシフトされた仮数選択信号を発生する。更に、FPEC144は、第一および第二の浮動小数点式オペランドに関連した指数に基づいて、第一および第二の浮動小数点式オペランドに関連した仮数のための一対の遠距離処理経路直接仮数選択信号を発生する。
これらの実施形態においても、一対のダウンシフタ146は、次いで、第一および第二の浮動小数点式オペランドに関連した仮数を、前記第一および第二の浮動小数点式オペランドに関連した指数に基づいてダウンシフトする。更に、一対のダウンシフタ146は、ダウンシフト後の仮数範囲の外にある仮数ビットを廃棄する。前記一対のダウンシフタ146に結合されたPSFPM148は、前記一対の遠距離処理経路ダウンシフト仮数選択信号、前記一対の遠距離処理経路直接仮数選択信号、前記第一および第二の浮動小数点式オペランドに関連した仮数、および前記一対のダウンシフトされた仮数に基づいて一対の値を選択し、一対の遠距離処理経路正規化仮数を出力する。
これらの実施形態では更に、前記一対の遠距離処理経路減算器150は、次いで、前記一対の遠距離処理経路正規化仮数に基づいて、一対の減算された値(即ち、一つは丸めを伴った減算された値、他方は丸めを伴わない値)を発生する。次に、CMG2・152が、前記一対の遠距離処理経路正規化仮数を使用してMSB/キャリーを発生する。次いで、遠距離処理経路SRS154が、発生されたMSB/キャリー、前記一対のダンシフタ146から廃棄されたビット、およびこの減算論理回路への入力である丸めモード入力値に基づいて、選択信号を発生する。
更にこれらの実施形態では、次に、減算後遠距離処理経路マルチプレクサ156が、前記選択された信号に基づいて、前記一対の減算された値から遠距離処理経路減算値を選択する。MSBがゼロであれば、遠距離処理経路マルチプレクサ156が該選択された遠距離処理経路減算値を調節し、1ビットアップシフトを実行する。次いで、近距離処理経路110が、計算された指数差に基づいて指数差信号を発生する。次いで、最終結果マルチプレクサ180は、発生された指数差信号および選択されるべき結果の状態に基づいて、前記遠距経路減算結果、前記近距離経路減算結果、または標準結果(指数/仮数アンダーフローの場合、標準結果は全てのゼロ指数およびゼロ仮数ビットを含み、符号ビットは1または0であることができる)の何れかを選択する。
幾つかの実施形態においては、最終結果マルチプレクサ180は、次いて、第一および第二の浮動小数点式オペランドに関連した指数を使用して指数差を計算することにより得られた入ってくる指数差に基づいて、遠距離処理経路減算値もしくは近距離処理経路減算後アップシフト値、またはアンダーフローのための標準結果の何れかを選択する。幾つかの実施形態では、最終結果マルチプレクサ180はまた、NRGSM136により計算された結果の状態の結果として、前記近距離処理経路アップシフトされた値を選択する。
一つの実施形態において、最終結果マルチプレクサ180は、指数差が1、−1または0に等しく、且つ最終結果がアンダーフロー(即ち、指数/仮数アンダーフロー)を生じなかったときには、第一および第二の浮動小数点式オペランドの減算の結果として、近距離処理経路アップシフトされた値を選択する。この実施形態において、最終結果マルチプレクサ180は、指数差が1よりも大きく且つ最終結果がアンダーフロー条件を生じなかったときには、第一および第二の浮動小数点式オペランドの減算の結果として、遠距離処理経路アップシフトされた値を選択する。
図2は、本発明に従って、浮動小数点式オペランドの差を計算するための並行演算を実施する方法200の実施例を示すフローチャートである。ステップ210において、当該方法200は、第一および第二の浮動小数点式オペランドを受取る。受取られた第一および第二の浮動小数点式オペランドの各々は、符号ビット、仮数および指数を有している。ステップ220では、第一および第二の浮動小数点式オペランドの指数を減算することによって、指数差が計算される。
ステップ230では、第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として、複数の指数差信号が発生される。幾つかの実施例においては、第一および第二の浮動小数点式オペランドの指数が1、−1または0の差を有していれば、また第一および第二の浮動小数点式オペランドの間に+1の差を有することの指標が存在すれば、先ずGT指数差信号を発生することによって複数の指数信号が計算される。第一および第二の浮動小数点式オペランドの指数が1、−1または0の差を有していれば、また第一および第二の浮動小数点式オペランドの間に−1の差を有することの指標が存在すれば、LT指数差信号が発生される。第一および第二の浮動小数点式オペランドの指数が1、−1または0の差を有していれば、更に第一および第二の浮動小数点式オペランドの間に0の差を有することの指標が存在すれば、EQ指数差信号が発生される。
幾つかの実施形態においては、下記の式を使用して、第一および第二のオペランドにおける指数のパターンの関数としてのGT、LT、およびEQ指数差信号を発生させることによって、複数の指数差信号が得られる。
GT=(EXPsame[1] and XEXP[O] and 〜YEXP[O])または
(EXPdiffr[1] and YEXP[O] and 〜XEXP[O]) ;
LT=(EXPsame[l] and YEXP[O] and 〜XEXP[O])または
(EXPdiffr[1] and XEXP[O] and 〜YEXP[O]) ;
EQ= EXPsame[O] ;
ステップ250では、第一および第二のオペランドの発生された複数の指数信号および仮数の関数として、近距離経路減算結果が発生される。ステップ240では、第一および第二の浮動小数点式の数の仮数を減算することによって、仮数差が計算される。幾つかの実施形態では、次いで、第一および第二の浮動小数点式オペランドに関連した指数を使用して、小さい方の指数に関連した仮数が決定される。次に、前記小さい方の指数に関連した仮数をシフトさせることにより、正規化された仮数が発生される。次いで、第一および第二の浮動小数点式オペランドに関連した正規化された仮数を減算することによって、仮数差が計算される。ステップ260では、この計算された仮数差に基づいて、遠距離経路減算結果が計算される。幾つかの実施形態では、第一および第二の浮動小数点式オペランドに関連した指数を減算することによって、指数差が計算される。次いで、前記計算された指数差が1、−1、または0に等しくなければ、前記計算された仮数差に基づいて、遠距離経路減算結果が計算される。
ステップ270では、前記計算された指数差および選択されるべき減算結果の状態の関数として、遠距離経路減算結果、近距離経路減算結果、または標準結果が選択される。これらの実施形態において、前記近距離経路減算結果が指数または仮数アンダーフローであれば、前記標準結果が選択される。ステップ280では、前記選択された減算結果がALUによって出力される。
方法200は、実施例において連続的に配置されるステップ210〜280を含んでいるが、本発明の他の実施形態は、複数のプロセッサ、または二以上の仮想マシンンもしくは副プロセッサとして組織された一つのプロセッサを使用して、二以上のブロックを並列に実行してもよい。更に、他の別の実施形態は、これらブロックを、関連の制御信号およびデータ信号がモジュール間でおよびモジュールを通して交信される二以上の特定の相互連結されたハードウエアモジュールとして、またはアプリケーション特異的な集積回路の一部として組込んでもよい。従って、上記例示プロセスのフロー図は、ソフトウエア、ファームウエア、および/またはハードウエア実装に適用可能である。
<改良されたMSBおよびキャリー発生スキーム>
正しいデータ配列を備えた正しい減算結果を選択するためには、近距離/遠距離減算器110および140のMSB/キャリー信号が必要とされる。これらの信号は、減算結果選択論理回路SRS120/154が適切なときに選択信号を生じることができるように、減算結果よりも実質的に早期に発生される。
これは、一対の減算器116および150と並列の別々のキャリー発生回路を有することによって達成される。MSB/キャリー発生回路118は、キャリーを発生するだけなので、その内部回路は、完全な減算器回路よりも遥かに単純であることができ、ゲートはより少ない出力ファンアウトを有する。結果として、その内部信号は、近距離/炎距離経路減算器116および150によって発生される信号よりも有意に迅速に発生される。改善されたMSB/キャリー発生技術の動作については、上記で述べた図1を参照して更に詳細に説明する。
<近距離処理経路アップシフタのためのエラー訂正信号発生>
近距離処理経路110においては、減算結果のMSBが、データの最終ビット位置にあることはないであろう。アップシフト予測器124は、必要とされるアップシフトの量を予想する。アップシフト予測器124は、実際にはMSBが最終ビット位置の後の20もしくは21ビットであるときに、20ビットのアップシフトが必要であることを予測するならば、例えば1ビットの可能なエラーと共にアップシフトの大きさを通知する。アップシフトした後に得られた仮数がMSBに1を有していないならば、それは、アップシフト予測器124が一つ少ない予測を与えたこと、および更にもう1ビットのアップシフトが必要とされることを意味している。従って、アップシフタ(128)出力のMSBは、1ビットアップシフタのための制御信号のように作用する。アップシフタ128出力のMSBは、大きな選択論理回路を駆動するのに充分に強くなるようにバッファに通される。
このようなバッファリングに費やされる時間を節約するために、MSBは、該ビットの停止前に発生されなければならない。上記で述べた技術において、図1に示したアップシフト予測器124は、必要とされるアップシフトの大きさ(それは必要とされるよりも1少なくてよい)を発生するだけでなく、高レベルの1ビットおよび低レベルの残りのビット(即ち、ワン−ホット)を有するアレイPRED[n−l:0]をも発生する。該高レベルビットの位置は、予測器がMSB位置を予測する場所である。一般に、アップシフト予測器124の予測は、以下で概説する二つのステップにおいてアップシフト数を発生する。
1.MSB予測を支持するパターンを発生する。例えば、8ビット数については、アップシフト予測器124が、最後から3番目のビットとして最初の一つの位置を予測すれば、発生されるパターンは001xxxxxであり、ここでのxは0または1である。
2.上記の発生されたパターンから、前記アップシフト数を発生する。
追加の回路を使用してこのようなパターンを発生させ(ここでは予測された最初の非ゼロビットを指示するために、データ中の一つのビットのみが数字1を有している)、第一のパターンの出力を使用することは追加の時間を必要とせず、また上記で指示したステップ2と前記追加の回路は独立なので、新たなパターンは前記テップ2と平行して発生されることができる。以下は、アップシフト予測器124を使用して、8ビット仮数のために発生させることができるパターンの一つの例を示している。
8ビット仮数のために発生されるパターン:patt[7:0]
New_patt[7 :0]= patt[7:0]|{0,patt[7:1]}|…{0,0,0,0,0,0,0,patt[7]}
PRED = New_patt[7:O]^{0,New_patt[7:l]}
ここで、「^」はXOR演算を示し、「|」はOR演算を示す。
上記パターンを発生させることは、アップシフト予測器124の如何なる追加の時間も必要としないことが分かる。
アップシフト予測器124が正しければ、PRED[n−1:0]における1の位置および減算結果におけるMSBの位置は、下記の式に示すように一致するであろう:
Correct_prediction = |(PRED[n-1:O] & subtraction_result [n-1:O]);
ここで、「&」はAND演算を意味する。
余分なアップシフト信号はアップシフタがその演算を完了するまでに準備できているであろうことの結果として、Correct_prediction信号の発生には、アップシフタよりも少ない時間を要することが分かる。
<仮数アンダーフロー信号発生>
減算結果を容認するか否かの決定は、仮数アンダーフロー信号に依存する。減算結果が0であれば、それは仮数アンダーフロー状態にあることを意味する。このような状況(仮数アンダーフロー)が生じれば、最終結果としてIEEEのような標準結果が選択され、計算された減算結果には基づかない。
図1に示した仮数アンダーフロー信号発生モジュール132を使用して仮数アンダーフロー信号を発生させるための、より迅速なスキームが開発された。仮数減算の結果が0であれば、アンダーフローが一般的に起きる。これは、望ましい減算結果がA−B(AおよびBは第一および第二の浮動小数点オペランドに関連した正規化された仮数である)であり、且つA=Bであるとき、または望ましい結果がA−B−1(丸めなし)であり且つA=B+1であるときを意味する。仮数アンダーフローモジュール(132)は、その分析のために減算結果を待つ代りに、減算と平行して上記の条件を決定する。更に、A=BおよびA=B+1の条件は、下記に示すように、前記正規化された仮数AおよびBを「0,1差検出器アルゴリズム」に入力することによって検出される:
XD[n-1:0] = ({1'bO,B[n-1:1]}^{1'bO,A[n-1:1]}^(〜B[n-1:0]|A[n-1:0]));
YD[n-1:0] = ({1'b0,B[n-1:1]}^{1'b0,A[n-1:1]}^(〜A[n-1:0]|B[n-1:0]));
YDIF = &YD;
XDIF = &XD;
(A=B case:) EQ = YDIF & XDIF;
(A=B+1 case:) GT = 〜YDIF & XDIF;
Mantissa_Underflow = select_AeqB_or_BeqA ? EQ:GT
<指数アンダーフロー信号発生>
減算結果を最終結果とするか、またはアンダーフローの特別な結果を駆除するかどうかを決定するためには、指数アンダーフロー信号発生モジュール134によって出力される指数アンダーフロー信号が必要とされる。先に述べたように、ALUによる減算を完了した後に、減算結果のMSBが最終ビット位置の後にある可能性があり、IEEE適合性にするために、該減算結果をアップシフトしなければならない可能性がある。アップシフトを処理するために、指数は同じ量(仮数のアップシフトに等しい)だけ減分されなければならない。減少の大きさが指数を0または負にするならば、それは指数アンダーフローの状況にあるとみなされる。
従来のスキームでは、最初に元の指数からアップシフトの量が減算され、次いでその減算結果が分析されて、該減算結果が1、0または負の数であるかどうかがチェックされる。この後に、下記の式を使用して指数アンダーフローが決定される。
Exponent_underflow = (1 or 0 or negative) & (one bit upshift correction required)|(0 or negative) & (no upshift correction is required)
図に示した実施形態において、1、0または負は、簡単なコンパレータ(B>=Aであれば、A−Bは0または負であろう)によって発生させることができ、1の差は、先の節に示した「0、1差検出器アルゴリズム」を使用することによって決定することができる。これは、アンダーフロー条件が如何なる減算器および結果分析器も必要とせず、それにより減算を行うために必要な合計時間が低減されることを保証するであろう。
<ダウンシフトされた仮数選択信号>
上記で述べたように、遠距離処理経路140には、小さい指数を有するオペランドの仮数をダウンシフトさせるために、少なくとも一つのダウンシフタが必要とされる。ここでもまた上記で述べたのと同様に、何れの指数が大きいかの決定にはかなりの時間を要する可能性があるので、時間を節約するために、「大きな指数−小さい指数」の結果に従って小さい方の指数を有する仮数がダウンシフトされ、または両方の仮数がダウンシフトされる。第二の仮数は「第一の指数−第二の指数」の結果に従ってダウンシフトされ、第一の仮数は「第二の仮数−第一の仮数」の結果に従ってダウンシフトされる。そのときまでに大きい方の指数信号が利用可能になるであろうから、ダウンシフトした後に、関連のダウンシフトされた仮数を選択することができる。第二の仮数および第一の仮数のダウンシフトが起きる時までに、並列の論理回路が何れの指数が小さいかを決定し、次いで、それに従って対応する浮動小数点式オペランドについてダンシフトされる仮数を選択する。他の浮動小数点式オペランドについて、ALUは未シフトの仮数を選択する。大きい方の指数を有する浮動小数点式オペランドについては、直接仮数選択信号は高レベルになる。小さい方の指数を有する他の浮動小数点式オペランドについては、ダウンシフトされた仮数がゼロにならないような指数差である場合にのみ、シフトされた仮数選択信号は高レベルになる。例えば、32ビット仮数について指数差が33であれば、ダウンシフトされた仮数はゼロになるはずである。これを達成するために、両方の選択信号は低レベルのまま残る。このような場合、AND−OR論理は、正規化された仮数としてゼロを渡す。これは、ゼロ充填の役割をダンシフタから仮数選択マルチプレクサへと移し、これは幾らかの時間を節約するが、シフトされた仮数選択信号を更にタイミング臨界的にする。ブロックFPEC144は、新しい技術を用いてこの仕事を行い、従来のスキームに比較してより少ない時間で同じ信号を発生させる。
以下の式は、8ビット指数および32ビット仮数を有するデータのための、新規な/提案されたスキームの実施を例示している。
select_shifted_B = ((expA[7:5] ==expB[7:5]) and (expA[4:0] > expB[4:0]))
または
((expA[7:5]- expB[7:5] =1) and (expB[4:0] > expA[4:0]));
select_shifted_A = ((expB[7:5] ==expA[7:5]) and (expB[4:0] > expA[4:0]))
または
((expB[7:5] - expA[7:5] =1) and (expA[4:0] > expB[4:0]));
ここでのexpAおよびexpBは、第一および第二の浮動小数点式オペランドの指数である。
仮数アンダーフロー信号発生を参照して上記で説明したアルゴリズムは、(expB[7:5]−expA[7:5]=1)信号および(expA[7:5]−expB[7:5]=1)信号を発生させるために使用することができる。仮数アンダーフローの節を参照して先に述べたアルゴリズムを使用することにより、expA[7:5]&expB[7:5]について、XDIFおよびYDIFを発生させることができ、これは全て下記に示すような望ましい情報を与える:
(expB[7:5] - expA[7:5] = 1) ⇒ YDIF & 〜XDIF
(expA[7:5] - expB[7:5] = 1) ⇒ XDIF & 〜YDIF
上記の説明は例示を目的としたものであり、限定的なものではない。当業者には、他の多くの実施形態が明らかであろう。従って、本発明の範囲は、特許請求の範囲ならびにそれと均等な全範囲によって決定されるべきである。
図1は、本発明の主題の一実施形態に従って、ALUにおいて並列演算を実施するための装置のブロック図を示している。 図2は、図1の並列演算を実施するための、本発明の実施形態に従うフローチャートを示している。

Claims (13)

  1. 浮動小数点式算術演算を実行するための装置(100)であって:
    近距離処理経路(110)を具備し;
    該近距離処理経路に対して並列の遠距離処理経路(140)を具備し;
    第一および第二の浮動小数点式オペランドを、実質的に同時に、前記近距離処理経路(110)および前記遠距離処理経路(140)に与える入力データバス(170)であって、前記第一および第二の浮動小数点式オペランドの各々が符号ビット、仮数ビット、および指数ビットを含んでいる入力データバスを具備し;
    前記近距離処理経路(110)は、前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数としての複数の指数差信号を発生し、ここでの前記近距離処理経路(110)は、前記指数差信号に基づいて近距離経路減算結果を発生し、
    前記近距離経処理経路(110)は、前記第一および第二の浮動小数点式オペランドの指数差を計算し、ここでの前記近距離処理経路(110)は前記計算された指数差に基づいて指数差信号を発生し、
    前記遠距離経処理経路(140)は、前記第一および第二の浮動小数点式オペランドの仮数差を計算し、ここでの前記遠距離処理経路(140)は、前記計算された指数差が0,1、または−1に等しくなければ、前記計算された仮数差に基づいて遠距離減算結果を発生し、
    また、前記近距離処理経路(110)および遠距離処理経路(140)に結合された最終結果マルチプレクサ(180)であって、前記発生された指数差信号に基づいて前記遠距離経路減算結果、前記近距離経路減算結果、または標準結果の何れかを出力し、ここでの該標準結果は前記近距離処理経路(110)の状態または前記遠距離減算結果に基づいて選択されるマルチプレクサを具備する装置。
  2. 請求項1に記載の装置であって、前記kン距離処理経路(110)が、下記式に基づいて、前記第一および第二の浮動小数点式オペランドの指数のパターンの関数としてGT、LT、およびEQ指数差信号を発生し、
    GT=(EXPsame[1] and XEXP[O] and 〜YEXP[O])または
    (EXPdiffr[1] and YEXP[O] and 〜XEXP[O]) ;
    LT=(EXPsame[l] and YEXP[O] and 〜XEXP[O])または
    (EXPdiffr[1] and XEXP[O] and 〜YEXP[O]) ;
    EQ= EXPsame[O] ;
    ここでの「〜」は反転を意味し、EXPsame[i]=XEXP[i] xnor YEXP[i];EXPdiffr[i]=XEXP[i] xor YEXP[i]であり、またGT、LT、およびEQは上記式によって発生された指数差信号である装置。
  3. 請求項1に記載の装置であって、更に、
    前記入力データバスから前記第一および第二の浮動小数点式オペランドを受け取り、また前記第一および第二の浮動小数点式オペランドに対応する複数の指数および仮数を与えるために、前記入力データバス(170)に結合された入力論理回路(160)を具備する装置。
  4. 請求項1に記載の装置であって、前記近距離処理経路(110)は、前記第一および第二の浮動小数点式オペランドに関連した指数の二つの最下位ビットを使用する関数として、複数の指数差信号を発生する装置。
  5. 第一および第二の浮動小数点式オペランドを受取り、ここでの第一および第二の浮動小数点式オペランドの各々は、符号ビット、仮数および指数を含むこと(210)と;
    前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として、複数の指数差信号を発生させること(230)と;
    前記複数の指数差信号の関数として、近距離経路減算結果を発生させること(250)と;
    前記第一および第二の浮動小数点式オペランドに関連した二つの指数のうちの小さい方に関連した仮数をシフトさせることによって、正規化された仮数を発生させることと;
    前記第一および第二の浮動小数点式オペランドの前記正規化された仮数を減算することによって、仮数差を計算すること(240)と;
    前記第一および第二の浮動小数点式オペランドの指数を減算することによって、指数差を計算すること(220)と;
    前記計算された仮数差に基づいて、また前記計算された指数差が1、−1または0に等しくないときに、遠距離経路減算結果を計算すること(260)と
    前記計算された指数差の関数として、前記遠距離経路減算結果、前記近距離経路減算結果、または標準結果の何れかを選択し、前記標準結果は前記近距離経路の状態または前記遠距離経路減算結果に基づいて選択されること(270)
    を含んでなる方法。
  6. 請求項5に記載の方法であって:前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として前記複数の指数差信号を発生させること(230)が、
    前記第一および第二の浮動小数点式オペランドの間に+1の指数差を有することの指標が存在すれば、GT指数差信号を発生させることと;
    前記第一および第二の浮動小数点式オペランドの間に−1の指数差を有することの指標が存在すれば、LT指数差信号を発生させることと;
    前記第一および第二の浮動小数点式オペランドの間に0の指数差を有することの指標が存在すれば、EQ指数差信号を発生させること
    を含んでなる方法。
  7. 請求項5に記載の方法であって:前記第一および第二の浮動小数点式の数における指数のパターンの関数として前記複数の指数差信号を発生させること(230)が、
    次式を使用して、前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数としてのGT、LT、およびEQ指数パターン差信号を発生させることを含んでなる方法:
    GT=(EXPsame[1] and XEXP[O] and 〜YEXP[O])または
    (EXPdiffr[1] and YEXP[O] and 〜XEXP[O]) ;
    LT=(EXPsame[l] and YEXP[O] and 〜XEXP[O])または
    (EXPdiffr[1] and XEXP[O] and 〜YEXP[O]) ;
    EQ= EXPsame[O]。
  8. コンピュータ処理プラットホームによりデコードされたときに、
    第一および第二の浮動小数点式オペランドを受取り、ここでの第一および第二の浮動小数点式オペランドの各々は、符号ビット、仮数および指数を含むこと(210)と;
    前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として、複数の指数差信号を発生させること(230);
    前記複数の指数差信号の関数として、近距離経路減算結果を発生させること(250);
    前記第一および第二の浮動小数点式オペランドに関連した二つの指数のうちの小さい方に関連した仮数をシフトさせることによって、正規化された仮数を発生させることと;
    前記第一および第二の浮動小数点式オペランドの前記正規化された仮数を減算することによって、仮数差を計算すること(240);
    前記第一および第二の浮動小数点式オペランドの指数を減算することによって、指数差を計算すること(220);
    前記計算された仮数差に基づいて、また前記計算された指数差が1、−1または0に等しくないときに、遠距離経路減算結果を計算すること(260);および
    前記計算された指数差の関数として、前記遠距離経路減算結果、前記近距離経路減算結果、または標準結果の何れかを選択し、前記標準結果は前記近距離経路の状態または前記遠距離経路減算結果に基づいて選択されること(270)からなる方法の実行を生じる命令を有する記憶媒体を具備してなる物品。
  9. 請求項8に記載の物品であって:前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として前記複数の指数差信号を発生させること(230)が、
    前記第一および第二の浮動小数点式オペランドの指数が1、−1、または0の差を有していれば、また前記第一および第二の浮動小数点式オペランドの間に+1の指数差を有することの指標が存在すれば、GT指数差信号を発生させることと;
    前記第一および第二の浮動小数点式オペランドの指数が1、−1、または0の差を有していれば、また前記第一および第二の浮動小数点式オペランドの間に−1の指数差を有することの指標が存在すれば、LT指数差信号を発生させることと;
    前記第一および第二の浮動小数点式オペランドの指数が1、−1、または0の差を有していれば、また前記第一および第二の浮動小数点式オペランドの間に0の指数差を有することの指標が存在すれば、EQ指数差信号を発生させること
    を含んでなる方法。
  10. 請求項8に記載の方法であって:前記第一および第二の浮動小数点式の数における指数のパターンの関数として前記複数の指数差信号を発生させること(230)が、
    次式を使用して、前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数としてのGT、LT、およびEQ指数パターン差信号を発生させることを含んでなる方法:
    GT=(EXPsame[1] and XEXP[O] and 〜YEXP[O])または
    (EXPdiffr[1] and YEXP[O] and 〜XEXP[O]) ;
    LT=(EXPsame[l] and YEXP[O] and 〜XEXP[O])または
    (EXPdiffr[1] and XEXP[O] and 〜YEXP[O]) ;
    EQ= EXPsame[O]。
  11. コンピュータシステムであって:
    プロセッサと;
    前記プロセッサに結合されたメモリーであって、その中に保存されたコードを有し、該コードは、前記プロセッサによりデコードされたときに、前記プロセッサに一つの方法を実行させるメモリーとを具備し、
    前記方法は、
    第一および第二の浮動小数点式オペランドを受取り、ここでの第一および第二の浮動小数点式オペランドの各々は、符号ビット、仮数および指数を含むこと(210)と;
    前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として、複数の指数差信号を発生させること(230);
    前記複数の指数差信号の関数として近距離経路減算結果を発生させること(250);
    前記第一および第二の浮動小数点式オペランドに関連した二つの指数のうちの小さい方に関連した仮数をシフトさせることによって、正規化された仮数を発生させることと;
    前記第一および第二の浮動小数点式オペランドの前記正規化された仮数を減算することによって、仮数差を計算すること(240);
    前記第一および第二の浮動小数点式オペランドの指数を減算することによって、指数差を計算すること(220);
    前記計算された仮数差に基づいて、また前記計算された指数差が1、−1または0に等しくないときに、遠距離経路減算結果を計算すること(260);および
    前記計算された指数差および前記選択されるべき結果の状態の関数として、前記遠距離経路減算結果、前記近距離経路減算結果、または標準結果の何れかを選択し、前記標準結果は前記近距離経路の状態または前記遠距離経路減算結果に基づいて選択されること(270)
    を含んでなるコンピュータシステム。
  12. 請求項11に記載のシステムであって:前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として前記複数の指数差信号を発生させること(230)が、
    前記第一および第二の浮動小数点式オペランドの指数が1、−1、または0の差を有していれば、また前記第一および第二の浮動小数点式オペランドの間に+1の指数差を有することの指標が存在すれば、GT指数差信号を発生させることと;
    前記第一および第二の浮動小数点式オペランドの指数が1、−1、または0の差を有していれば、また前記第一および第二の浮動小数点式オペランドの間に−1の指数差を有することの指標が存在すれば、LT指数差信号を発生させることと;
    前記第一および第二の浮動小数点式オペランドの指数が1、−1、または0の差を有していれば、また前記第一および第二の浮動小数点式オペランドの間に0の指数差を有することの指標が存在すれば、EQ指数差信号を発生させること
    を含んでなるシステム。
  13. 請求項11に記載のシステムであって:前記第一および第二の浮動小数点式の数における指数のパターンの関数として前記複数の指数差信号を発生させること(230)が、
    次式を使用して、前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数としてのGT、LT、およびEQ指数パターン差信号を発生させることを含んでなるシステム:
    GT=(EXPsame[1] and XEXP[O] and 〜YEXP[O])または
    (EXPdiffr[1] and YEXP[O] and 〜XEXP[O]) ;
    LT=(EXPsame[l] and YEXP[O] and 〜XEXP[O])または
    (EXPdiffr[1] and XEXP[O] and 〜YEXP[O]) ;
    EQ= EXPsame[O]。
JP2007525720A 2004-08-13 2005-08-09 効率的浮動小数点式aluのための方法及び装置 Active JP5145040B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US60138304P 2004-08-13 2004-08-13
US60/601,383 2004-08-13
US11/157,650 US7707236B2 (en) 2004-08-13 2005-06-21 Methods and apparatus for an efficient floating point ALU
US11/157,650 2005-06-21
PCT/US2005/028202 WO2006020599A1 (en) 2004-08-13 2005-08-09 Method for an efficient floating point alu

Publications (2)

Publication Number Publication Date
JP2008510229A true JP2008510229A (ja) 2008-04-03
JP5145040B2 JP5145040B2 (ja) 2013-02-13

Family

ID=35801246

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007525720A Active JP5145040B2 (ja) 2004-08-13 2005-08-09 効率的浮動小数点式aluのための方法及び装置

Country Status (4)

Country Link
US (1) US7707236B2 (ja)
EP (1) EP1782268A4 (ja)
JP (1) JP5145040B2 (ja)
WO (1) WO2006020599A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015103245A (ja) * 2013-11-21 2015-06-04 三星電子株式会社Samsung Electronics Co.,Ltd. 浮動小数点加算ユニットを含む装置及びシステム、並びに浮動小数点加算方法
JP2015111421A (ja) * 2010-09-24 2015-06-18 インテル・コーポレーション ベクトル機能ユニット、方法、およびコンピューティングシステム

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8463835B1 (en) * 2007-09-13 2013-06-11 Xilinx, Inc. Circuit for and method of providing a floating-point adder
US8620983B2 (en) * 2011-01-05 2013-12-31 Via Technologies, Inc. Leading sign digit predictor for floating point near subtractor
GB201111035D0 (en) 2011-06-29 2011-08-10 Advanced Risc Mach Ltd Floating point adder
CN102693118B (zh) * 2011-10-18 2015-05-13 苏州科雷芯电子科技有限公司 一种标量浮点运算加速器
US20130218938A1 (en) * 2012-02-17 2013-08-22 Qualcomm Incorporated Floating-point adder with operand shifting based on a predicted exponent difference
US8898214B2 (en) 2012-04-23 2014-11-25 Lsi Corporation Method and apparatus to perform floating point operations
US9317478B2 (en) * 2012-09-10 2016-04-19 Crossfield Technology LLC Dual-path fused floating-point add-subtract
US9329936B2 (en) 2012-12-31 2016-05-03 Intel Corporation Redundant execution for reliability in a super FMA ALU
WO2018194952A1 (en) * 2017-04-17 2018-10-25 Octavo Systems Llc Mixed signal computer architecture
US10275218B1 (en) * 2017-10-25 2019-04-30 Arm Limited Apparatus and method for subtracting significand values of floating-point operands

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58158739A (ja) * 1982-02-22 1983-09-21 レイセオン カンパニ− 浮動小数点加算方法及び装置
US5136536A (en) * 1990-05-04 1992-08-04 Weitek Corporation Floating-point ALU with parallel paths
JPH05241792A (ja) * 1992-02-27 1993-09-21 Nec Corp 浮動小数点加減算方式および装置
WO1998006031A1 (en) * 1996-08-05 1998-02-12 Valery Yakovlevich Gorshtein Floating point addition methods and apparatus
US5892697A (en) * 1995-12-19 1999-04-06 Brakefield; James Charles Method and apparatus for handling overflow and underflow in processing floating-point numbers
US6094668A (en) * 1997-10-23 2000-07-25 Advanced Micro Devices, Inc. Floating point arithmetic unit including an efficient close data path
JP2000322238A (ja) * 1999-03-10 2000-11-24 Toshiba Corp 浮動小数点演算装置
JP2003029960A (ja) * 2001-06-07 2003-01-31 Fujitsu Ltd 浮動小数点加算器のショートパスにおける丸めステップの排除

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6988115B2 (en) * 2001-05-04 2006-01-17 Broadcom Corporation Method and apparatus to correct leading one prediction
US20030055859A1 (en) * 2001-05-04 2003-03-20 Southern Methodist University Fast IEEE floating-point adder

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58158739A (ja) * 1982-02-22 1983-09-21 レイセオン カンパニ− 浮動小数点加算方法及び装置
US5136536A (en) * 1990-05-04 1992-08-04 Weitek Corporation Floating-point ALU with parallel paths
JPH05241792A (ja) * 1992-02-27 1993-09-21 Nec Corp 浮動小数点加減算方式および装置
US5892697A (en) * 1995-12-19 1999-04-06 Brakefield; James Charles Method and apparatus for handling overflow and underflow in processing floating-point numbers
WO1998006031A1 (en) * 1996-08-05 1998-02-12 Valery Yakovlevich Gorshtein Floating point addition methods and apparatus
US6094668A (en) * 1997-10-23 2000-07-25 Advanced Micro Devices, Inc. Floating point arithmetic unit including an efficient close data path
JP2000322238A (ja) * 1999-03-10 2000-11-24 Toshiba Corp 浮動小数点演算装置
JP2003029960A (ja) * 2001-06-07 2003-01-31 Fujitsu Ltd 浮動小数点加算器のショートパスにおける丸めステップの排除

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015111421A (ja) * 2010-09-24 2015-06-18 インテル・コーポレーション ベクトル機能ユニット、方法、およびコンピューティングシステム
JP2015103245A (ja) * 2013-11-21 2015-06-04 三星電子株式会社Samsung Electronics Co.,Ltd. 浮動小数点加算ユニットを含む装置及びシステム、並びに浮動小数点加算方法
US10108398B2 (en) 2013-11-21 2018-10-23 Samsung Electronics Co., Ltd. High performance floating-point adder with full in-line denormal/subnormal support

Also Published As

Publication number Publication date
EP1782268A1 (en) 2007-05-09
WO2006020599A1 (en) 2006-02-23
US7707236B2 (en) 2010-04-27
EP1782268A4 (en) 2008-11-26
JP5145040B2 (ja) 2013-02-13
US20060036667A1 (en) 2006-02-16

Similar Documents

Publication Publication Date Title
JP5145040B2 (ja) 効率的浮動小数点式aluのための方法及び装置
JP6001276B2 (ja) 浮動小数点加算を実行するための装置および方法
US8626813B1 (en) Dual-path fused floating-point two-term dot product unit
CN101263467B (zh) 浮点规格化和反规格化
US5646875A (en) Denormalization system and method of operation
US5128889A (en) Floating-point arithmetic apparatus with compensation for mantissa truncation
US20100042665A1 (en) Subnormal Number Handling in Floating Point Adder Without Detection of Subnormal Numbers Before Exponent Subtraction
US5317526A (en) Format conversion method of floating point number and device employing the same
US5602769A (en) Method and apparatus for partially supporting subnormal operands in floating point multiplication
US6996596B1 (en) Floating-point processor with operating mode having improved accuracy and high performance
JPH0544046B2 (ja)
US7668892B2 (en) Data processing apparatus and method for normalizing a data value
US7437400B2 (en) Data processing apparatus and method for performing floating point addition
KR100241072B1 (ko) 부동소수점 감산시 대량소거의 병렬예측 및 연산방법과 장치
US7290023B2 (en) High performance implementation of exponent adjustment in a floating point design
US7680874B2 (en) Adder
US6701427B1 (en) Data processing apparatus and method for processing floating point instructions
US7356553B2 (en) Data processing apparatus and method for determining a processing path to perform a data processing operation on input data elements
JP2919386B2 (ja) 浮動小数点数検出装置および浮動小数点数検出回路
US7386580B2 (en) Data processing apparatus and method for computing an absolute difference between first and second data elements
EP1282034A2 (en) Elimination of rounding step in the short path of a floating point adder
JP3257278B2 (ja) 冗長なシフト数予測とシフト誤り補正を用いた正規化装置
JP3512700B2 (ja) 浮動小数点演算装置
JP3187402B2 (ja) 浮動小数点データ加減算回路
JP3174974B2 (ja) 浮動小数点演算装置および方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080401

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100517

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100817

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110523

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110823

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111124

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120918

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120921

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: 20121105

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121126

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151130

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5145040

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250