JP7042276B2 - 3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニット、その方法、プログラム、およびシステム - Google Patents

3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニット、その方法、プログラム、およびシステム Download PDF

Info

Publication number
JP7042276B2
JP7042276B2 JP2019534936A JP2019534936A JP7042276B2 JP 7042276 B2 JP7042276 B2 JP 7042276B2 JP 2019534936 A JP2019534936 A JP 2019534936A JP 2019534936 A JP2019534936 A JP 2019534936A JP 7042276 B2 JP7042276 B2 JP 7042276B2
Authority
JP
Japan
Prior art keywords
addend
product
adder
bit
carry
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.)
Active
Application number
JP2019534936A
Other languages
English (en)
Other versions
JP2020514862A (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.)
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 JP2020514862A publication Critical patent/JP2020514862A/ja
Application granted granted Critical
Publication of JP7042276B2 publication Critical patent/JP7042276B2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • 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

Landscapes

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

Description

本発明は一般にデータ処理システムに関し、詳細には128ビット拡張オペランドに対する融合積和(fused-multiply-add)浮動小数点演算を行うユニット、方法、システム、およびコンピュータ・プログラム製品に関する。
IEEE-754-2008 Standard for Binary Floating Point Arithmetic, published in 2008は、乗算器を有する浮動小数点プロセッサなどの、コンピュータ・ハードウェアに一般に実装される浮動小数点データ・アーキテクチャを規定する。形式は、符号、符号なしバイアス指数部、および仮数部(significand)からなる。符号ビットは単一ビットであり、「S」で表現される。符号なしバイアス指数部は「e」で表現され、例えば、単精度に対して長さ8ビット、倍精度に対して長さ11ビット、および4倍精度に対して長さ15ビットである。仮数部は例えば、単精度に対して長さ24ビット、倍精度に対して長さ53ビット、および4倍精度に対して長さ113ビットである。IEEE-754-2008 Standardによって定義されるように、仮数部の最上位ビット、すなわち、いわゆる暗黙ビットは、指数ビットからデコードされる。
浮動小数点算術処理を改良するために、現在のほとんどのプロセッサは、融合積和(以下においてFMA(fused-multiply-add)と略される)処理と呼ばれる処理を用いて、例えばA×B+Cといった単一命令として実行するために、例えばA×Bといった浮動小数点乗法演算と、例えば+Cといった浮動小数点加法演算を結合させ、ここで、A、B、Cは、乗算積A×B、およびCと乗算積の合計のオペランドである。単一命令の中で2つの演算を行うことによって、FMA処理は全体的な実行時間を減少させる。FMA処理は、十分な精度で乗法演算と加法演算の両方が行われた後に丸められなければならないだけなので、改良された精度ももたらす。例えば、丸め誤差は2つではなく1つだけである。
分析アプリケーションは、特に大量データに対して動作すると、非常に計算負荷がかかる。これらの主なデータ型は2進浮動小数点である。これは、ILOG(R)、SPSS(R)、Cognos(R)、Algo(R)、ならびに保険および銀行取引分野に特化された多くの分析パッケージのような市販の分析ソフトウェアを含む。
多くのモバイル・アプリケーションには位置検出ルーチンが必要であるが、これも高負荷の浮動小数点計算である。これらのルーチンの性能は、データベース・クエリおよび保険分析コードとモバイル入力を組み合わせ、リアル・タイム要件を有するテレマテックスのような新興分野において重要である。
問題の大きさが大きくなると、アルゴリズムの数値感度が大きくなる。これはアルゴリズムの安定性を悪化させ、収束の速さを遅くする。これは、高性能領域でよく知られる効果である。この問題に対処する最も簡単な方式は、数学的に重要なルーチンを倍精度から4倍精度の浮動小数点(128ビット)に切り替えることである。
ビッグ・データ分析によって、この数値の安定性問題も商業空間に打撃を与えつつある。例えば、非常に大きなILOG(R)のインストールに関する収束問題、および大容量データ・セットに対して動作するクライアントのリスク・アセスメント・コードに関する収束問題が注目される。この大きなILOG(R)のインストールに対して、128ビット浮動小数点計算に切り替えると、15%~30%速い収束が認められる。
米国特許出願公開第2016/0048374(A1)号は、支援命令の使用によって融合積和(FMA)演算をエミュレートするための技法を開示する。この従来技術の開示の技法によれば、FMA演算は、非融合積和演算を行うための既存ハードウェアが、他の専用ハードウェアを必要とせずに、融合積和演算をエミュレートするのに使用され得るように、支援命令によってエミュレートされる。
第1のオペランド、第2のオペランド、および第3のオペランドに対する融合積和演算をエミュレートすることは、第1のオペランドを第2のオペランドで乗算することに少なくとも部分的に基づいて、中間値を少なくとも1つのプロセッサによって決定することを含む。従来技術の方法は、上限中間値または下限中間値のうちの少なくとも1つを少なくとも1つのプロセッサによって決定することをさらに含み、上限中間値を決定することは、指定された数のビットによって中間値をゼロの方に丸めることを含み、下限中間値を決定することは、上限中間値によって中間値を減算することを含む。方法は、上限中間値または下限中間値のうちの1つに第3のオペランドを加算することに少なくとも部分的に基づいて、上限値と下限値を少なくとも1つのプロセッサによって決定することをさらに含む。方法は、上限値と下限値を加算することによって、第1のオペランド、第2のオペランド、および第3のオペランドに対するエミュレートされた融合積和結果を少なくとも1つのプロセッサによって決定することさらに含む。
米国特許第9,104,474(B2)号は、エネルギー効率の良い浮動小数点の乗法演算または加法演算あるいはその両方のための方法および回路を開示する。実施形態は、浮動小数点数のどれだけ多くの仮数ビット(mantissa bit)が確実であり得るかを追跡しながらエネルギー効率の良い可変精度の乗法演算もしくは加法演算もしくはその両方を行うこと、または乗算結果の最下部が最終結果に影響を及ぼす可能性があるときに、乗算の繰返しを含むエネルギー効率の良い浮動小数点乗算を行うこと、あるいはその両方を行う。
可変精度浮動小数点回路はリアル・タイム確実性追跡を用いて、実行時精度の選択を行う。確実性追跡は、必要であれば、結果が不確実になり得る低精度計算を、さらに高い精度で再計算できるようにする。確実性はデータに依存し得るので、数値計算と併せて判断される。確実性を追跡する回路は最低限のオーバヘッドを上乗せするが、計算の大部分は、比較的低い精度でも正しい結果を生み出す。
浮動小数点乗算ステップは、乗法演算に対して、所定の数の乗算積の最下位ビットの桁上げをゼロにセットするように構成される平行四辺形を含むNビットごとの乗算器(N-bit by N-bit multiplier)(N×Nビット乗算器)回路、および必要であれば、完全な乗算結果を生成するために乗算器によって乗法演算の繰返しを誘発する検出回路によって行われる。
可変精度浮動小数点回路は、浮動小数点計算と並行して積和浮動小数点計算の結果の確実性を判断する。可変精度浮動小数点回路は、キャンセル、正規化シフト、および丸めを行う2進数などの計算からの情報と入力の確実性とを併用して、結果の確実性を計算する。可変精度浮動小数点回路は、複数の精度をサポートする可変精度仮数ユニット(variable precision mantissa unit)、最低精度で最大並列性をサポートする複数の指数データ経路、および出力の確実性限界をもたらす確実性計算ユニットを備える。
米国特許出願公開第2016/0048374(A1)号 米国特許第9,104,474(B2)号
IEEE-754-2008 Standard for Binary Floating Point Arithmetic, published in 2008
上述のような最先端によるプロセッサにおいて、ソフトウェアを用いた128ビット浮動小数点演算がエミュレートされる。説明された方法は通常、ハードウェア実装形態より1桁から2桁遅く、このことは、この方法をビッグ・データ分析にとって魅力的でないものにする。本発明は、3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニット、その方法、プログラム、およびシステムを提供する。
浮動小数点ユニットは、(i)乗算オペランドのデータフローに接続され、226ビット桁上げ保存積を反復して計算するように構成された113×113ビット乗算器であって、合計項および桁上げ項が積の上部(high part)および下部(low part)に分離される、113×113ビット乗算器と、(ii)加数の揃えた(aligned)部分を送り出すように構成された、加数オペランドの上部および下部のデータフローに接続された左シフタと、(iii)加数の揃えた部分を送り出すように構成された、加数オペランドの上部および下部のデータフローに接続された右シフタと、(iv)合計項および桁上げ項を加数と結合させるための3対2コンプレッサ(3-to-2 compressor)を備えるシフタの出力に接続された選択回路と、(v)選択回路からのデータフローに接続された加算器と、(vi)その後の2つの加算において上部および下部に対して中間積と揃えた加数との拡張加法演算を行うために、加算器の桁上げ出力を選択回路に接続する第1のフィードバック経路と、(vii)正規化のために中間拡張結果をシフタを通過させるため、および丸めのために加算器を再度通過させるために、加算器の出力をシフタに接続する第2のフィードバック経路と、を備える、
融合積和演算(FMA)の価値は、乗法演算および加法演算という2つの演算を1つの命令が行い、したがって2倍のスループットを実現するということである。しかしFMAのさらに大きな価値は、正確な積および正確な加数に対して加算が行われるという、結合された演算の拡張された正確さである。
128ビット浮動小数点計算に対して、丸めの影響は一層厳しくなることがある。したがって、さらに高い正確さを求めて128ビット浮動小数点計算に切り替えると、FMAを有することは有利である。しかし128ビットFMAは、アプリケーションにとって魅力的で、使用できるものにするために、ある程度の性能もなければならない。
浮動小数点プロセッサにおいて、1つの中心領域は乗算器アレイである。乗算器アレイは、2つの数の乗算を行うのに使用される。通常、基数4を用いる最先端のBoothのエンコーディングが用いられ、これは、一般に使用される高速乗算アルゴリズムである。これは、n/2+1にまとめられる必要がある積項の数を減少させ、ここでnはオペランドあたりのビットの数である。合計は、桁上げ伝搬加算器(carry-propagate-adder)回路機器によって通常行われる、低い方のビット位置の桁上げ出力が隣の高い方のビット位置に束縛される通常の加算とは対照的に、全てのビットを並行に処理できるようにする桁上げ保存加算器(carry-save-adder)回路機器を使用して行われる。この合計を行う回路機器は、リダクション・ツリーとして当技術分野で知られている。リダクション・ツリーの終わりに、合計項と桁上げ項という2つの項が残り、これらの項は、情報の合計部分と情報の桁上げ部分をそれぞれ表す。これらの項は最終的に、揃えた加数を加算される。ここで再び桁上げ保存加算が行われる。最終的に、同様に合計項および桁上げ項という2つの項だけが残り、これらの2つの項は、1つの最終的な結果を生成するために桁上げ伝搬加算器を使用して加算されなければならない。
都合の良いことに、本発明の浮動小数点ユニット(FPU:floating-point unit)は、その構成により、例えばIBM(R)z13プロセッサに導入されるような、加算ベースのデータフローを有する従来の128ビット浮動小数点ユニットで128ビットFMA演算を実行できるようにする。適度なハードウェアの拡張だけで、本発明の実施形態は、乗法演算と同じ23サイクルのレイテンシのある128ビット加算ベースのFPUにおいて、128ビット精度で真のFMAを実行できるようにする。常に15サイクルで新しい演算が開始されることが可能であり、これは、例えば、64ビットFMAベースの浮動小数点ユニットで演算をエミュレートするIBM(R)zEC12プロセッサ上での演算より5倍以上速く、7.5倍高いスループットがある。
都合の良いことに、本発明の実施形態によれば、128ビット浮動小数点演算のための従来のFMAユニットへの拡張は、第3のオペランドのためのオペランド・ラッチおよびアンパック回路である。さらに乗算器が追加され、回路の面積を節約するために乗算器は、反復的に113×113ビット積を計算する。本発明の実施形態により、完全な積を計算するのに7回の反復が必要になる可能性がある。乗算器は、桁上げ保存形式で積を送り出す。さらに左シフタが追加され、これは従来のFMAユニットのレジスタに接続されてよい。これは、右シフタを循環器にし、その後のサイクルでこれを使用することによって得られることもある。さらにシフタの後の選択回路は、2つの積項を加数と結合させるための3対2コンプレッサによって拡張される。さらに加数のアンパック回路に先頭ゼロ・カウンタが接続される。さらに、中間積と、丸められていない合計との拡張加算を行うために、加算器へのさらなる入力として、加算器の出力から選択回路へのフィードバック経路も存在する。選択/スワップ回路を経由してシフタに戻るフィードバック経路は、正規化のために中間拡張結果をシフタを通過させるため、および丸めのために加算器を再度通過させるために使用される。
明確にするために、シフタ回路としてシフタが、加算器回路として加算器が、およびカウンタ回路としてカウンタが実装されてよいということに留意されよう。
乗算器およびフィードバック経路として加算ベースのデータフローに追加されるブロックは、128ビット浮動小数点乗算をサポートするのに使用される。他のブロックは、積和演算のオーバヘッドである。128ビットFMAは、何度も循環することによってこのデータフロー上でエミュレートされる。
有利な実施形態によれば、乗算器は、積の上部および下部を順次計算するように構成されてよい。したがって効果的に4倍精度の積を計算することができる。
有利な実施形態によれば、ユニットは、加数の先頭ゼロの数を引いた加数の指数が、定数を加えた積の指数より大きい場合、積を加数に揃えるための手段を備えることができ、ここで定数は少なくとも2である。この方式で、加数と積は、加算器ユニットおよび丸め器ユニットによって効果的に加算され、丸められることが可能である。
有利な実施形態によれば、ユニットは、積の上部および下部を加数に揃え、単一のデータ部にマージするための手段を備えることができる。これは、効果的に4倍精度の積を計算できるようにする。
有利な実施形態によれば、ユニットは、加数の先頭ゼロの数を引いた加数の指数が、定数を加えた積の指数以下である場合、左シフタまたは右シフタあるいはその両方によって加数を積に揃えるための手段を備えることができ、ここで定数は少なくとも2である。この方式によって、加数と積は、加算器ユニットおよび丸め器ユニットによって効果的に加算され、丸められることが可能である。
有利な実施形態によれば、ユニットは、左シフタまたは右シフタあるいはその両方によって、加数の上部および下部を別々に積に揃えるための手段を備えることができる。したがって、4倍精度のオペランドを計算するために倍精度ユニットが使用されてよい。
有利な実施形態によれば、ユニットは、効果的な加法演算の場合、選択回路および3対2コンプレッサによって、積の上部および下部と加数を加算するための手段を備えることができる。これは、倍精度ユニットで4倍精度のオペランドを計算することを実現する。
有利な実施形態によれば、ユニットは、エンド・アラウンド桁上げ演算の結果がゼロに等しい場合、積と否定加数の否定合計を結果として計算するため、そうでなければ、効果的な減法演算の場合、積と、1を加えた否定加数との合計を結果として計算するための手段を備えることができる。このようにして、結果の最終的な丸めまたは正規化が実現され得る。
さらに、方法は、(i)113×113ビット乗算器によって乗算オペランドの226ビット桁上げ保存積を反復して計算することであって、合計項および桁上げ項が、積の上部および下部に分離される、計算することと、(ii)加数の揃えた部分を送り出すように構成された、データフローに接続された左シフタによって加数オペランドの上部および下部を揃えることと、(iii)加数の揃えた部分を送り出すように構成された、データフローに接続された右シフタによって加数オペランドの上部および下部を揃えることと、(iv)3対2コンプレッサを備えるシフタの出力に接続された選択回路によって2つの積項を加数と結合させることと、(v)選択回路からのデータフローに接続された加算器を動作させることと、(vi)加算器の桁上げ出力を選択回路に接続する第1のフィードバック経路で、その後の2つの加算における上部および下部に対する中間積と揃えた加数との拡張加算を行うことと、(vii)正規化のために中間拡張結果をシフタを通過させること、および加算器の出力をシフタに接続する第2のフィードバック経路において丸めのために加算器を再度通過させることと、を含む。
本発明の方法は、上述のように浮動小数点ユニットを有利に使用して、3つの128ビット・オペランドに対する融合積和演算のために実行されてよい。
有利な実施形態によれば、積の上部および下部は、乗算器によって順次計算されてよい。したがって4倍精度の積を効果的に計算することができる。
有利な実施形態によれば、加数の先頭ゼロの数を引いた加数の指数が、定数を加えた積の指数より大きい場合、積は加数に揃えられてよく、ここで定数は少なくとも2である。この方式によって、加数および積は、加算器ユニットおよび丸め器ユニットによって効果的に加算され、丸められることが可能である。
有利な実施形態によれば、積の上部および下部は、加数に揃え、単一のデータ部にマージすることができる。これは、4倍精度の積を効果的に計算できるようにする。
有利な実施形態によれば、加数は、加数の先頭ゼロの数を引いた加数の指数が、定数を加えた積の指数以下である場合、左シフタまたは右シフタあるいはその両方によって積に揃えられてよく、ここで定数は少なくとも2である。この方式によって、加数および積は、加算器ユニットおよび丸め器ユニットによって効果的に加算され、丸められることが可能である。
有利な実施形態によれば、加数の上部および下部は、左シフタまたは右シフタあるいはその両方によって積に別々に揃えられてよい。したがって倍精度ユニットは、4倍精度のオペランドを計算するために使用されてよい。
有利な実施形態によれば、効果的な加法演算の場合、積および加数の上部および下部は、選択回路および3対2コンプレッサによって加算されてよい。これは、倍精度ユニットで4倍精度のオペランドを計算することを実現する。
有利な実施形態によれば、効果的な減法演算の場合、エンド・アラウンド桁上げ演算の結果がゼロに等しい場合、積と否定加数の否定合計が結果として計算されてよく、そうでなければ積と、1を加えた否定加数との合計が結果として計算されてよい。したがって結果の最終的な丸めまたは正規化が実現され得る。
さらなる態様により、コンピュータ・プログラムは、具体化されるプログラム命令を保持するコンピュータ可読ストレージ媒体を備えており、プログラム命令は、(i)113×113ビット乗算器によって乗算オペランドの226ビット桁上げ保存積を反復して計算することであって、合計項および桁上げ項が、積の上部および下部に分離される、計算することと、(ii)加数の揃えた部分を送り出すように構成された、データフローに接続された左シフタによって加数オペランドの上部および下部を揃えることと、(iii)加数の揃えた部分を送り出すように構成された、データフローに接続された右シフタによって加数オペランドの上部および下部を揃えることと、(iv)3対2コンプレッサを備えるシフタの出力に接続された選択回路によって2つの積項を加数と結合させることと、(v)選択回路からのデータフローに接続された加算器を動作させることと、(vi)加算器の桁上げ出力を選択回路に接続する第1のフィードバック経路で、その後の2つの加算において上部および下部に対する中間積と揃えた加数との拡張加算を行うことと、(vii)正規化のために中間拡張結果をシフタを通過させること、および加算器の出力をシフタに接続する第2のフィードバック経路において丸めのために加算器を再度通過させることと、を含む方法をコンピュータ・システムに行わせるためにコンピュータ・システムによって実行可能である。
さらに、上述の方法を行うためのコンピュータ可読プログラム命令を含むデータ処理プログラムを実行するためのデータ処理システムが提案される。
上述および他の目的および利点と共に本発明は、実施形態の以下の詳細な説明から最もよく理解され得るが、この実施形態に制限されない。
2進浮動小数点算術計算を行うための、本発明の1つの実施形態による、浮動小数点ユニットのデータフローを描写する図であり、浮動小数点ユニットは、A×C+B演算のために3つの128ビット拡張オペランドA、B、Cに対して融合積和演算を実行するように構成される。 2進浮動小数点算術計算を行うための、本発明のさらなる実施形態による、浮動小数点ユニットのデータフローを描写する図であり、浮動小数点ユニットは、A×B+C演算のために3つの128ビット拡張オペランドA、B、Cに対して融合積和演算を実行するように構成される。 本発明の1つの実施形態による、データの上部および下部に分離される、加算器ループにおけるデータフローを描写する図である。 本発明の1つの実施形態による、積に関する加数の等級に依存するデータフローの流れ図を描写する図である。 本発明による方法を実行するためのデータ処理システムの例示的な実施形態を描写する図である。
図面において、同様の要素は等しい参照数字で参照される。図面は概略図にすぎず、本発明の特定のパラメータを表現するためのものではない。さらに図面は、本発明の典型的な実施形態だけを描写するためのものであり、したがって本発明の範囲を限定するものとみなされるべきではない。
本明細書で説明される例証的な実施形態は、3つの128ビット拡張オペランドに対して融合積和演算(FMA)を実行するための、ユニット、方法、システム、およびコンピュータ・プログラム製品を示す。例証的な実施形態は、説明の明瞭さのための例としてのみ、特定の技術を使用して本明細書で説明されることもある。
例証的な実施形態は、本発明の浮動小数点ユニットで3つの128ビット拡張オペランドに対して融合積和演算を実行するために使用されてよい。
図1は、2進浮動小数点算術計算を行うための、本発明の1つの実施形態による、浮動小数点ユニット10のデータフローを描写し、浮動小数点ユニット10は、A×C+B演算のために3つの128ビット拡張オペランドA(102)、B(104)、C(100)に対して融合積和演算を実行するように構成される。
本発明の実施形態によれば、したがって128ビットFMAは、適度なハードウェア拡張だけで加算ベースのデータフローを有する従来の128ビット浮動小数点ユニットで実行されてよい。
浮動小数点ユニット(FPU)10は、(i)乗算オペランド100、102のデータフローに接続され、226ビット桁上げ保存積70を反復して計算するように構成された113×113ビット乗算器14であって、合計項71および桁上げ項74が、積70の上部72、75および下部73、76に分離される、113×113ビット乗算器14を備える。合計項71および桁上げ項74、ならびに上部72、75および下部73、76への分離の詳細は、図3のデータフローの中で描写される。
FPU10は、(ii)加数77の揃えた部分を送り出すように構成された、加数オペランド104の上部78および下部79のデータフローに接続された左シフタ18と、(iii)加数77の揃えた部分を送り出すように構成された、加数オペランド104の上部78および下部79のデータフローに接続された右シフタ20と、をさらに備える。さらにFPU10は、(iv)合計項71および桁上げ項74と加数77とを結合させるための3対2コンプレッサ25を備えるシフタ18、20の出力に接続された選択回路24と、(v)選択回路24からのデータフローに接続された加算器26と、を示す。さらにFPU10は、(vi)その後の2つの加算において上部72、75、78および下部73、76、79に対する中間積70と揃えた加数77の拡張加法演算を行うために、加算器26の桁上げ出力91を選択回路24に接続する第1のフィードバック経路36と、(vii)正規化のために中間拡張結果86をシフタ18、20を通過させるため、および丸めのために加算器26を再度通過させるために、加算器26の出力をシフタ18、20に接続する第2のフィードバック経路38と、を備える。
データフローは、大きい方のオペランドが常に本発明の方法による第1のオペランドであるというものなので、1つの追加のシフタ18があれば十分である。
合計項71および桁上げ項74における積70のような226ビット拡張乗算器の結果は、狭い128ビットFPU加算器26に収まるように、下部73、76および上部72、75に分離される。下部73、76および上部72、75は、加算器26を通じて順次送られる。最終的に下部73、76および上部72、75は、最終的な結果86にマージされて丸められるか、正規化される。
したがって、図1に描写された本発明の浮動小数点ユニット10のハードウェア拡張は、従来の128ビット浮動小数点ユニットと比較して、第3のオペランド100に対するオペランド・ラッチ44およびアンパック回路12、ならびに積70の上部72、75および下部73、76に分離される、桁上げ項74および合計項71における226ビット桁上げ保存積70を順次反復的に得るための113×113乗算器14を備える。さらにハードウェア拡張は、A2レジスタ46に接続された左シフタ18を備える。一方、右シフタ20はビット循環機能によって実行され、その後のサイクルにおいて使用されてよい。シフタ18、20の後の選択回路24は、合計項71および桁上げ項74といった2つの積項を加数77と結合させるために3対2コンプレッサ25によって拡張される。さらなる拡張は、加数オペランド104(本実施形態におけるオペランドB)のアンパック回路12に接続された先頭ゼロ・カウンタ22である。さらに、上部72、75、78および下部73、76、79に対する中間積70と揃えた加数77との拡張加法演算を行うための第1のフィードバック経路36を実装するために、加算器26の桁上げ出力91を選択回路24に接続する、エンド・アラウンド桁上げ加算器である加算器26の近くにある第1のフィードバック経路36がさらに示される。最終的に、正規化のために中間拡張結果86をシフタ18、20を通過させるため、および丸めのために加算器26を再度通過させるために、加算器26の出力をシフタ18、20に接続する第2のフィードバック経路38がさらに示される。
図1に示されるデータフローは、全体的にトップダウン構造に従う。入力オペランド100、102、104は、アンパックする前に入力レジスタ44、40、42にラッチされる。乗算オペランド100、102は、乗算器14に送り込まれる。乗算器14によって計算された積70は、3対2コンプレッサ25を備える選択回路24に送り込まれ、その後、A4レジスタ50およびB4レジスタ52を通って加算器26にラッチされる。これは、選択/スワップ回路16、ならびにA2レジスタ46およびB2レジスタ48それぞれを通り、図4でさらに詳細に説明されるシフタ18、20によって任意選択でシフトして、加算器26に加数オペランド104をラッチすることと共に行われる。左シフトは、加数104の先頭ゼロの数を計算する先頭ゼロ・カウンタ22の結果に依存する。先頭ゼロ・カウンタ22は、非正規オペランドと共に特に使用される。したがって、オペランドで演算を続ける前に、非正規オペランドの正規化ができる。第1のフィードバック・ループ36は、加算器26の中間下部結果(intermediate low result)88の桁上げ出力91を送り込むことによって始まり、3対2コンプレッサ25を有する選択回路24に戻る。加算器26の結果87および88は、その後のサイクルにおいてD6レジスタ54に送り込まれ、このサイクルで第2のフィードバック・ループ38が始まり、送り込んだデータは次の反復のために選択/スワップ回路16に戻る。最終的にD6レジスタ54内の結果86は、先頭ゼロ予測器28の結果に応じてそれぞれ、丸め回路30によって丸められるか、正規化回路32によって正規化される。最終的な結果はその後、選択およびパック・ユニット34において選択およびパックされ、R8出力レジスタ56にラッチされ、データを128ビット結果バスに送り込むことができる。
したがって本発明の実施形態による方法は、(i)113×113ビット乗算器14によって、乗算オペランド100、102の226ビット桁上げ保存積70を反復して計算することであって、合計項71および桁上げ項74が、積70の上部72、75および下部73、76に分離される、計算することと、(ii)加数77の揃えた部分を送り出すように構成された、データフローに接続された左シフタ18によって加数オペランド104の上部78および下部79を揃えることと、(iii)揃えた加数77を送り出すように構成された、データフローに接続された右シフタ20によって、加数オペランド104の上部78および下部79を揃えることと、(iv)3対2コンプレッサ25を備える、シフタ18、20の出力に接続された選択回路24によって、2つの積項71、74を加数77と結合させることと、(v)選択回路24からのデータフローに接続された加算器26を動作させることと、(vi)加算器26の桁上げ出力91を選択回路24に接続する第1のフィードバック経路36において上部72、75、78および下部73、76、79に対して中間積70と揃えた加数77との拡張加算を行うことと、(vii)正規化のためにその後の2つのサイクルにおける中間拡張結果86をシフタ18、20を通過させること、および加算器26の出力をシフタ18、20に接続する第2のフィードバック経路38において丸めのために加算器26を再度通過させることと、を含むことができる。
図2において、2進浮動小数点算術計算を行うための、本発明のさらなる実施形態による、浮動小数点ユニット10のデータフローが描写され、ここで浮動小数点ユニット10は、A×B+C演算のために3つの128ビット拡張オペランドA、B、C(100、102、104)に対して融合積和演算を実行するように構成される。データフローは、本実施形態において乗算オペランド100、102がAおよびBであることを除いて、図1に示されたデータフローにかなり類似しており、ここで第3の加数オペランド104はCである。主要な算術演算は図1と同じであり、したがって説明のために、図1の説明が使用され得る。
図3は、本発明の1つの実施形態による、データの上部72、75、78および下部73、76、79に分離される、加算器ループS200、S202におけるデータフローを描写する。第1の加算器ループS200において、下部73、76、79は、合計項80の下部82、ならびに桁上げ項83の下部85を得るために合計項73、76を加数項79に加算し、結果86の下部88を生じることによって計算され、その一方で第2の加算器ループS202において、上部72、75、78は、合計項80の上部81、ならびに桁上げ項83の上部84を得るために合計項72、75を加数項78に加算し、結果86の上部87を生じることによって計算される。したがって桁上げビット90、91は、下部85、88から上部84、87にシフトされる。
図4において、本発明の1つの実施形態による、積70に関する加数104の等級に依存するデータフローの流れ図が示される。
大きい加数77の場合において、加数77の先頭ゼロの数を引いた加数77の指数が、定数を加えた積70の指数より大きい場合、積70は加数77に揃えられ(S101)、ここで定数は少なくとも2である。次に、可能な下位桁あふれチェックを伴う非正規加数77の場合(ステップS106)、加数77はシフタ18において正規化される(ステップS108)(図1参照)。非正規数は浮動小数点数であり、ここで先頭ゼロのない仮数部は指数をもたらし、指数は、浮動小数点表現の最低指数より下方にある。
並行して、ステップS102において、上部72、75および下部73、76に分離された、桁上げ項74および合計項71で積70が乗算器14において計算される。下部79および上部78はその後の2つのサイクルにおいて加算され、完全に計算された下部の積および完全に計算された上部の積を形成する。左シフタ18において、下部の積および上部の積は、指数相違に基づいてステップS104において加数77に揃えられ、加算器26において、揃えた加数77に加算/減算される。最終的に結果86は、ステップS112において丸められる。
小さい加数の場合において、加数77の先頭ゼロの数を引いた加数77の指数が、定数を加えた積70の指数以下である場合、加数77の下部79および上部78は、シフタ18および20によって積70に揃えられ(S103)、ここで定数は少なくとも2である。まずステップS120において、上部72、75および下部73、76に分離された、合計項71および桁上げ項74で積70が乗算器14において計算される。ステップS122において、指数相違に基づいて、加数77は、シフタ18、20によって揃えられ、上部の加数78および下部の加数79に分離される。
ステップS124において、これが効果的な加法演算の場合であるかどうかの判定が行われる。効果的な加法演算の場合、積70および加数77の上部72、75、78および下部73、76、79は、選択回路24および3対2コンプレッサ25によって順次加算される(ステップS126)。
効果的な減法演算の場合、ステップS128において、下部73、76および上部72、75に対して3対2コンプレッサ25および加算器26によって順次、積70と否定加数77の否定合計が第1の結果86として計算され、積70と、1を加えた否定加数77との合計が第2の結果86として計算される。エンド・アラウンド桁上げ演算の結果がゼロに等しい場合、第1の結果86が使われ、そうでなければ第2の結果86が使われる。ステップS132において、後の正規化のために先頭ゼロ予測器28によって先頭ゼロの数が判断される。結果合計86の下部88および上部87に対して、シフタ18および20において、丸めポイントに対するアラインメント(alignment)、および正規化シフトまたは非正規化シフトが別々に行われる(ステップS130、ステップS134)。加算器26は、結果86の下部88および上部87をマージするために使用される。最終的な結果を得るために、最後のステップS136として、最終的な丸めまたは正規化が行われる。
次に図5を参照すると、データ処理システム210の例の概略図が示される。データ処理システム210は適切なデータ処理システムの1つの例にすぎず、本明細書で説明される本発明の実施形態の用途または機能の範囲について何らかの限定を示すためのものではない。それでもデータ処理システム210は、実装されること、または本明細書で上記に示された機能のいずれかを行うこと、あるいはその両方ができる。
データ処理システム210には、他の非常に多くの汎用または専用のコンピューティング・システム環境または構成によって動作可能なコンピュータ・システム/サーバ212がある。コンピュータ・システム/サーバ212と共に使用するのに適する可能性のある、よく知られたコンピューティング・システム、環境、または構成、あるいはその組合せの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち型またはラップトップ型デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境、ならびに同様のものを含むがこれらに限定されない。
コンピュータ・システム/サーバ212は、コンピュータ・システムによって実行されるプログラム・モジュールなどの、コンピュータ・システム実行可能命令の一般的な背景で説明され得る。一般にプログラム・モジュールは、特定のタスクを行うか、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含むことができる。コンピュータ・システム/サーバ212は、通信ネットワークを通じてリンクされるリモート処理デバイスによってタスクが行われる分散型クラウド・コンピューティング環境において実践されてよい。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルとリモート両方のコンピュータ・システム・ストレージ媒体の中にあってよい。
図5に示されるように、汎用コンピューティング・デバイスの形で、データ処理システム210におけるコンピュータ・システム/サーバ212が示される。コンピュータ・システム/サーバ212の構成要素は、1つまたは複数のプロセッサまたは処理ユニット216、システム・メモリ228、およびシステム・メモリ228を含む様々なシステム構成要素をプロセッサ216に連結するバス218を含むことができるがこれらに限定されない。
バス218は、メモリ・バスまたはメモリ・コントローラ、周辺機器バス、アクセラレイティッド・グラフィックス・ポート、およびプロセッサまたは様々なバス・アーキテクチャのいずれかを使用するローカル・バスを含むいくつかのタイプのバス構造のいずれかの1つまたは複数を表す。例として、また限定ではなく、このようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:Enhanced ISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI:Peripheral Component Interconnect)バスを含む。
コンピュータ・システム/サーバ212は典型的には、様々なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ212によってアクセス可能な任意の利用可能な媒体であってよく、媒体は、揮発性媒体および不揮発性媒体の両方、取外し可能媒体および取外し不能媒体の両方を含む。
システム・メモリ228は、ランダム・アクセス・メモリ(RAM:random access memory)230またはキャッシュ・メモリ232あるいはその両方などの揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ212は、他の取外し可能/取外し不能な、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。ほんの一例として、ストレージ・システム234は、取外し不能な不揮発性磁気媒体(図示せず、また典型的には「ハード・ドライブ」と呼ばれる)を読み書きするために提供されてよい。図示されていないが、取外し可能な不揮発性の磁気ディスク(例えば「フロッピー(R)・ディスク」)を読み書きするための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROM、または他の光媒体などの取外し可能な不揮発性の光ディスクを読み書きするための光ディスク・ドライブが提供されてよい。このような例において、それぞれは、1つまたは複数のデータ媒体インターフェースによってバス218に接続されてよい。下記でさらに描写され、説明されるように、メモリ228は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(例えば少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
プログラム・モジュール242のセット(少なくとも1つ)を有するプログラム/ユーティリティ240は、例として、また限定ではなくメモリ228に格納されてよく、ならびにオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、1つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組合せのそれぞれは、ネットワーキング環境の実装を含むことができる。プログラム・モジュール242は一般に、本明細書で説明されるような本発明の実施形態の機能または方法あるいはその両方を実行する。
コンピュータ・システム/サーバ212は、キーボード、ポインティング・デバイス、ディスプレイ224、等などの1つもしくは複数の外部デバイス214、コンピュータ・システム/サーバ212とユーザが対話できるようにする1つもしくは複数のデバイス、または1つもしくは複数の他のコンピューティング・デバイスとコンピュータ・システム/サーバ212が通信できるようにする任意のデバイス(例えば、ネットワーク・カード、モデム、等)、あるいはその組合せと通信することもできる。このような通信は、入出力(I/O:Input/Output)インターフェース222を介して発生してよい。さらにコンピュータ・システム/サーバ212は、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、またはパブリック・ネットワーク(例えばインターネット)、あるいはその組合せなどの1つまたは複数のネットワークとネットワーク・アダプタ220を介して通信することができる。描写されるように、ネットワーク・アダプタ220は、コンピュータ・システム/サーバ212の他の構成要素とバス218を介して通信する。図示されていないが、コンピュータ・システム/サーバ212と共に、他のハードウェアまたはソフトウェアあるいはその両方の構成要素が使用されることがあるということを理解されたい。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システム、等を含むがこれらに限定されない。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を保持する1つのコンピュータ可読ストレージ媒体(または複数の媒体)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持し、格納できる有形デバイスであってよい。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せであってよいがこれらに限定されない。コンピュータ可読ストレージ媒体のさらなる具体例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM:read-only memory)、消去可能プログラマブル・リード・オンリ・メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されたパンチ・カードまたは溝内の隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含む。本明細書で使用されるようなコンピュータ可読ストレージ媒体はそれ自体が、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号などの一時的な信号であると解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から個々のコンピューティング・デバイス/処理デバイスに、あるいは例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされてよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、個々のコンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するためにコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語、もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、スタンド・アロンのソフトウェア・パッケージとして、全面的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で実行することができ、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、または全面的にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてよく、また接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータに対して行われてもよい。いくつかの実施形態において、例えば、プログラマブルロジック回路機器、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電子回路機器は、本発明の態様を行うために、コンピュータ可読プログラム命令の状態情報を利用して電子回路機器を個別化にすることによって、コンピュータ可読プログラム命令を実行することができる。
本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照しながら、本発明の態様が本明細書で説明される。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方の中のブロックの組合せは、コンピュータ可読プログラム命令によって実行されてよいということが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサによって実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックの中で指定された機能/作用を実行するための手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または機械を生み出す他のプログラマブルデータ処理装置のプロセッサに提供されてよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックの中で指定された機能/作用の態様を実行する命令を含む製品を備えるべく、コンピュータ、プログラマブルデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指図できるコンピュータ可読ストレージ媒体に格納されてもよい。
コンピュータ可読プログラム命令は、コンピュータ上、他のプログラマブル装置上、または他のデバイス上で実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックの中で指定された機能/作用を実行するべく、コンピュータ実行処理を生み出すコンピュータ上、他のプログラマブル装置上、または他のデバイス上で一連の動作ステップを実行させるために、コンピュータ上、他のプログラマブルデータ処理装置上、または他のデバイス上にロードされてもよい。
図中の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、流れ図またはブロック図の中の各ブロックは、指定されたロジック機能を実行するための1つまたは複数の実行可能命令を備える命令のモジュール、セグメント、または一部を表すことができる。いくつかの代替実装形態において、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示される2つのブロックは実際には、実質的に並行に実行されてよく、またブロックは、含まれる機能に応じて、時には逆の順序で実行されてもよい。ブロック図または流れ図あるいはその両方の各ブロック、ならびにブロック図または流れ図あるいはその両方の中のブロックの組合せは、指定された機能または作用を実行するか、専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実行されてよいということにも留意されよう。
様々な本発明の実施形態の説明が例証のために提示されたが、網羅的であること、または開示された実施形態に限定されることを意図するものではない。説明された実施形態の範囲および思想から逸脱することなく多くの変更および変形が当業者には明らかであろう。本明細書で使用された専門用語は、実施形態の原理、実用的な応用、もしくは市場で見つかる技術を超える技術的改良を最もよく説明するように、または本明細書で開示された実施形態を当業者が理解できるように、選ばれた。

Claims (14)

  1. 3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニットであって、
    (i)乗算オペランドのデータフローに接続され、226ビット桁上げ保存積を反復して計算するように構成された113×113ビット乗算器であって、合計項および桁上げ項が、前記積の上部および下部に分離される、前記113×113ビット乗算器と、
    (ii)加数の揃えた部分を送り出すように構成された、加数オペランドの上部および下部のデータフローに接続された左シフタと、
    (iii)前記加数の前記揃えた部分を送り出すように構成された、前記加数オペランドの前記上部および前記下部の前記データフローに接続された右シフタと、
    (iv)前記合計項および前記桁上げ項を前記加数と結合させるための3対2コンプレッサを備える前記左シフタと前記右シフタとの両シフタの出力に接続された選択回路と、
    (v)前記選択回路らのデータフローに接続された加算器と、
    (vi)その後の2つの加算において前記上部および前記下部に対する中間積と揃えた加数の拡張加法演算を行うために、前記加算器の桁上げ出力を前記選択回路に接続する第1のフィードバック経路と、
    (vii)正規化のために中間拡張結果を前記両シフタを通過させるため、および丸めのために前記加算器を再度通過させるために、前記加算器の前記出力を前記両シフタに接続する第2のフィードバック経路と
    を備える、浮動小数点ユニット。
  2. さらに前記左シフタがビット循環機能を有する右シフタとして実装される、請求項1に記載のユニット。
  3. さらに前記乗算器が、前記積の前記上部および前記下部を順次計算するように構成される、請求項1に記載のユニット。
  4. 前記加数オペランドのアンパック回路に接続される先頭ゼロ・カウンタをさらに備える、請求項1に記載のユニット。
  5. 前記加数の先頭ゼロの数を引いた前記加数の指数が、定数を加えた前記積の指数より大きい場合、前記積を前記加数に揃えるための手段をさらに備え、ここで前記定数が少なくとも2である、請求項1に記載のユニット。
  6. 非正規加数の場合、前記加数を正規化するための手段をさらに備える、請求項5に記載のユニット。
  7. 前記積の前記上部および前記下部を前記加数に揃え、単一のデータ部にマージするための手段をさらに備える、請求項5に記載のユニット。
  8. 前記加数の先頭ゼロの数を引いた前記加数の指数が、定数を加えた前記積の指数以下である場合、前記左シフタまたは前記右シフタあるいはその両方によって前記加数を前記積に揃えるための手段をさらに備える、ここで前記定数が少なくとも2である、請求項1に記載のユニット。
  9. 前記左シフタまたは前記右シフタあるいはその両方によって、前記加数の前記上部および前記下部を別々に前記積に揃えるための手段をさらに備える、請求項8に記載のユニット。
  10. 効果的な加法演算の場合、前記選択回路および前記3対2コンプレッサによって、前記積および前記加数の前記上部および前記下部を加算するための手段をさらに備える、請求項8に記載のユニット。
  11. エンド・アラウンド桁上げ演算の結果がゼロに等しい場合、前記積と否定加数の否定合計を結果として計算すること、そうでなければ、効果的な減法演算の場合、前記積と、1を加えた前記否定加数との合計を結果として計算すること、を行うための手段をさらに備える、請求項8に記載のユニット。
  12. 3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニットで2進浮動小数点算術計算を行うための方法であって、
    (i)113×113ビット乗算器によって乗算オペランドの226ビット桁上げ保存積を反復して計算することであって、合計項および桁上げ項が、前記積の上部および下部に分離される、前記計算することと、
    (ii)データフローに接続された左シフタによって加数の揃えた部分を送り出すように構成された、加数オペランドの少なくとも上部および下部を揃えることと、
    (iii)前記加数の前記揃えた部分を送り出すように構成された、前記データフローに接続された右シフタによって前記加数オペランドの前記上部および前記下部を揃えることと、
    (iv)3対2コンプレッサを備える前記左シフタと前記右シフタとの両シフタの出力に接続された選択回路によって2つの積項を前記加数と結合させることと、
    (v)前記選択回路からのデータフローに接続された加算器を動作させることと、
    (vi)前記加算器の桁上げ出力を前記選択回路に接続する第1のフィードバック経路でその後の2つの加算において前記上部および前記下部に対する中間積と揃えた加数との拡張加算を行うことと、
    (vii)正規化のために中間拡張結果を前記両シフタを通過させること、および前記加算器の前記出力を前記両シフタに接続する第2のフィードバック経路において丸めのために前記加算器を再度通過させることと
    を含む、方法。
  13. 3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニットで2進浮動小数点算術計算を行うためのコンピュータ・プログラムであって、
    (i)113×113ビット乗算器によって乗算オペランドの226ビット桁上げ保存積を反復して計算することであって、合計項および桁上げ項が、前記積の上部および下部に分離される、前記計算することと、
    (ii)データフローに接続された左シフタによって加数の揃えた部分を送り出すように構成された、加数オペランドの少なくとも上部および下部を揃えることと、
    (iii)前記加数の前記揃えた部分を送り出すように構成された、前記データフローに接続された右シフタによって前記加数オペランドの前記上部および前記下部を揃えることと、
    (iv)3対2コンプレッサを備える前記左シフタと前記右シフタとの両シフタの出力に接続された選択回路によって2つの積項を前記加数と結合させることと、
    (v)前記選択回路からのデータフローに接続された加算器を動作させることと、
    (vi)前記加算器の桁上げ出力を前記選択回路に接続する第1のフィードバック経路でその後の2つの加算において前記上部および前記下部に対する中間積と揃えた加数との拡張加算を行うことと、
    (vii)正規化のために中間拡張結果を前記両シフタを通過させること、および前記加算器の前記出力を前記両シフタに接続する第2のフィードバック経路において丸めのために前記加算器を再度通過させることと
    を含む方法をコンピュータ・システムの前記浮動小数点ユニットに行わせる、前記コンピュータ・システムによって実行可能な、コンピュータ・プログラム。
  14. 請求項13に記載の方法を行うためのコンピュータ可読プログラム命令を備える、データ処理プログラムの実行のためのデータ処理システム。
JP2019534936A 2017-01-16 2018-01-08 3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニット、その方法、プログラム、およびシステム Active JP7042276B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/406,910 US10303438B2 (en) 2017-01-16 2017-01-16 Fused-multiply-add floating-point operations on 128 bit wide operands
US15/406,910 2017-01-16
PCT/IB2018/050101 WO2018130925A1 (en) 2017-01-16 2018-01-08 Fused-multiply-add floating-point operations on 128 bit wide operands

Publications (2)

Publication Number Publication Date
JP2020514862A JP2020514862A (ja) 2020-05-21
JP7042276B2 true JP7042276B2 (ja) 2022-03-25

Family

ID=62839515

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019534936A Active JP7042276B2 (ja) 2017-01-16 2018-01-08 3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニット、その方法、プログラム、およびシステム

Country Status (6)

Country Link
US (1) US10303438B2 (ja)
JP (1) JP7042276B2 (ja)
CN (1) CN110168493B (ja)
DE (1) DE112018000140T5 (ja)
GB (1) GB2573239B (ja)
WO (1) WO2018130925A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303438B2 (en) 2017-01-16 2019-05-28 International Business Machines Corporation Fused-multiply-add floating-point operations on 128 bit wide operands
US10241756B2 (en) 2017-07-11 2019-03-26 International Business Machines Corporation Tiny detection in a floating-point unit
US10838718B2 (en) * 2017-09-28 2020-11-17 Fujitsu Limited Processing device, arithmetic unit, and control method of processing device
CN109284083A (zh) * 2018-09-14 2019-01-29 北京探境科技有限公司 一种乘法运算装置及方法
CN109947391B (zh) * 2019-03-11 2023-08-01 合芯科技(苏州)有限公司 一种数据处理方法和装置
CN110750232B (zh) * 2019-10-17 2023-06-20 电子科技大学 一种基于sram的并行乘加装置
CN113031912A (zh) * 2019-12-24 2021-06-25 上海寒武纪信息科技有限公司 乘法器、数据处理方法、装置及芯片
CN112230882B (zh) * 2020-10-28 2021-06-01 海光信息技术股份有限公司 浮点数处理装置、浮点数加法装置及浮点数处理方法
CN112988112B (zh) * 2021-04-27 2021-08-10 北京壁仞科技开发有限公司 点积计算装置
CN115344525B (zh) * 2022-08-16 2023-04-18 江南信安(北京)科技有限公司 一种椭圆曲线点加硬件加速方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006221622A (ja) 2005-02-09 2006-08-24 Internatl Business Mach Corp <Ibm> 正規化および丸め処理前にフィードバックを行う浮動小数点ユニットのためのシステムおよび方法
JP2016535360A (ja) 2014-07-02 2016-11-10 ヴィア アライアンス セミコンダクター カンパニー リミテッド 非アトミック分割経路融合積和

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6763367B2 (en) 2000-12-11 2004-07-13 International Business Machines Corporation Pre-reduction technique within a multiplier/accumulator architecture
US6963894B2 (en) 2002-04-08 2005-11-08 Intel Corporation Methods and apparatus for predicting an underflow condition associated with a floating-point multiply-add operation
US7593977B2 (en) 2002-12-23 2009-09-22 Intel Corporation Method and system for avoiding underflow in a floating-point operation
US7668896B2 (en) 2004-11-30 2010-02-23 Arm Limited Data processing apparatus and method for performing floating point multiplication
US7451172B2 (en) * 2005-02-10 2008-11-11 International Business Machines Corporation Handling denormal floating point operands when result must be normalized
US7461117B2 (en) * 2005-02-11 2008-12-02 International Business Machines Corporation Floating point unit with fused multiply add and method for calculating a result with a floating point unit
US7720900B2 (en) 2005-09-09 2010-05-18 International Business Machines Corporation Fused multiply add split for multiple precision arithmetic
US8078660B2 (en) 2007-04-10 2011-12-13 The Board Of Regents, University Of Texas System Bridge fused multiply-adder circuit
CN101174200B (zh) * 2007-05-18 2010-09-08 清华大学 一种具有五级流水线结构的浮点乘加融合单元
US8291003B2 (en) * 2008-09-09 2012-10-16 International Business Machines Corporation Supporting multiple formats in a floating point processor
US8499017B2 (en) 2009-08-12 2013-07-30 Arm Limited Apparatus and method for performing fused multiply add floating point operation
US8694572B2 (en) 2010-07-06 2014-04-08 Silminds, Llc, Egypt Decimal floating-point fused multiply-add unit
US8805903B2 (en) * 2010-07-16 2014-08-12 Texas Instruments Incorporated Extended-width shifter for arithmetic logic unit
US8577948B2 (en) 2010-09-20 2013-11-05 Intel Corporation Split path multiply accumulate unit
US8965945B2 (en) * 2011-02-17 2015-02-24 Arm Limited Apparatus and method for performing floating point addition
US8671129B2 (en) 2011-03-08 2014-03-11 Oracle International Corporation System and method of bypassing unrounded results in a multiply-add pipeline unit
FR2972957B1 (fr) 2011-03-23 2014-02-21 Areva Nc Presse a maintenance amelioree
US8838664B2 (en) * 2011-06-29 2014-09-16 Advanced Micro Devices, Inc. Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format
CN104169850B (zh) 2012-01-12 2017-06-06 辛纳普蒂克斯公司 单层电容性成像传感器
US9122517B2 (en) * 2012-06-11 2015-09-01 International Business Machines Corporation Fused multiply-adder with booth-encoding
US9213523B2 (en) 2012-06-29 2015-12-15 Intel Corporation Double rounded combined floating-point multiply and add
US8892619B2 (en) 2012-07-24 2014-11-18 The Board Of Trustees Of The Leland Stanford Junior University Floating-point multiply-add unit using cascade design
US9104474B2 (en) 2012-12-28 2015-08-11 Intel Corporation Variable precision floating point multiply-add circuit
US9542154B2 (en) 2013-06-25 2017-01-10 Intel Corporation Fused multiply add operations using bit masks
KR101684641B1 (ko) 2013-11-12 2016-12-08 주식회사 센트론 상호용량방식과 자기용량방식 간을 전환하는 터치입력방법 및 이를 위한 터치입력장치
US9105255B2 (en) 2013-12-20 2015-08-11 Sharp Kabushiki Kaisha Discriminative capacitive touch panel
US9519459B2 (en) 2014-06-20 2016-12-13 Wisconsin Alumni Research Foundation High efficiency computer floating point multiplier unit
US9645792B2 (en) 2014-08-18 2017-05-09 Qualcomm Incorporated Emulation of fused multiply-add operations
GB2530990A (en) 2014-10-06 2016-04-13 Ibm Decimal and binary floating point arithmetic calculations
KR200489484Y1 (ko) 2015-06-11 2019-06-24 알프스 알파인 가부시키가이샤 입력 장치
US9823897B2 (en) 2015-09-25 2017-11-21 Arm Limited Apparatus and method for floating-point multiplication
US10303438B2 (en) 2017-01-16 2019-05-28 International Business Machines Corporation Fused-multiply-add floating-point operations on 128 bit wide operands

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006221622A (ja) 2005-02-09 2006-08-24 Internatl Business Mach Corp <Ibm> 正規化および丸め処理前にフィードバックを行う浮動小数点ユニットのためのシステムおよび方法
JP2016535360A (ja) 2014-07-02 2016-11-10 ヴィア アライアンス セミコンダクター カンパニー リミテッド 非アトミック分割経路融合積和

Also Published As

Publication number Publication date
GB2573239B (en) 2020-03-04
WO2018130925A1 (en) 2018-07-19
GB2573239A (en) 2019-10-30
GB201911402D0 (en) 2019-09-25
US10303438B2 (en) 2019-05-28
CN110168493A (zh) 2019-08-23
CN110168493B (zh) 2023-03-28
JP2020514862A (ja) 2020-05-21
DE112018000140T5 (de) 2019-07-11
US20180203667A1 (en) 2018-07-19

Similar Documents

Publication Publication Date Title
JP7042276B2 (ja) 3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニット、その方法、プログラム、およびシステム
US7720900B2 (en) Fused multiply add split for multiple precision arithmetic
US10489153B2 (en) Stochastic rounding floating-point add instruction using entropy from a register
US20120215823A1 (en) Apparatus and method for performing floating point addition
US9959093B2 (en) Binary fused multiply-add floating-point calculations
US10095475B2 (en) Decimal and binary floating point rounding
US10416962B2 (en) Decimal and binary floating point arithmetic calculations
US10649730B2 (en) Normalization of a product on a datapath
US9430190B2 (en) Fused multiply add pipeline
US10558432B2 (en) Multiply-add operations of binary numbers in an arithmetic unit
US10445066B2 (en) Stochastic rounding floating-point multiply instruction using entropy from a register
US9348796B2 (en) Arithmetic operation in a data processing system
Han et al. Decimal floating‐point fused multiply‐add with redundant internal encodings
JP2020071642A (ja) 演算処理装置及びその制御方法
US9519458B1 (en) Optimized fused-multiply-add method and system
US11455142B2 (en) Ultra-low precision floating-point fused multiply-accumulate unit
Han Decimal Floating-point Fused Multiply Add with Redundant Number Systems
Amaricai et al. Improving the Performance of the Divide-Add Fused Operation Using Variable Latency Quotient Generation

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191004

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200722

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210805

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211104

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220314

R150 Certificate of patent or registration of utility model

Ref document number: 7042276

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150