JP2013543176A - Scale、round、getexp、round、getmant、reduce、range及びclass命令を実行できる乗加算機能ユニット - Google Patents

Scale、round、getexp、round、getmant、reduce、range及びclass命令を実行できる乗加算機能ユニット Download PDF

Info

Publication number
JP2013543176A
JP2013543176A JP2013530370A JP2013530370A JP2013543176A JP 2013543176 A JP2013543176 A JP 2013543176A JP 2013530370 A JP2013530370 A JP 2013530370A JP 2013530370 A JP2013530370 A JP 2013530370A JP 2013543176 A JP2013543176 A JP 2013543176A
Authority
JP
Japan
Prior art keywords
instruction
functional unit
shifter
round
exp
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
JP2013530370A
Other languages
English (en)
Other versions
JP5684393B2 (ja
Inventor
グラッドスタイン,アミット
アンダーソン,クリスティナ,エス.
スペルベル,ゼーヴ
ルバノヴィチ,シモン
エイタン,ベニー
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2013543176A publication Critical patent/JP2013543176A/ja
Application granted granted Critical
Publication of JP5684393B2 publication Critical patent/JP5684393B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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
    • 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
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49957Implementation of IEEE-754 Standard
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

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

Abstract

説明する方法は、機能部が第1の命令を実行するステップを有する。第1の命令はmultiply-add命令である。この方法はさらに機能部が第2の命令を実行するステップを含む。第2の命令はround命令である。

Description

本発明の分野は、概して、電子計算に関し、より具体的には、関数の近似を実行できる機能ユニットに関する。
図1は、CISC(Complex Instruction Set)、RISC(Reduced Instruction Set)、VLIW(Very Long Instruction Word)などの異なる多くのタイプの処理コアアーキテクチャを既述すると思われる包括的処理コア100を示す。図1の包括的処理コア100は次のものを含む:1)(キャッシュ及び/又はメモリなどから)命令をフェッチするフェッチユニット103;2)命令をデコードするデコードユニット104;3)実行ユニット106への命令の発行のタイミング及び/又は順序を決定するスケジュールユニット105(特に、スケジューラは任意的である);4)命令を実行する実行ユニットを有する実行ステージ106(典型的な命令実行ユニットには、分岐実行ユニット、整数演算実行ユニット(例えば、ALU)、浮動小数点演算実行ユニット(例えば、FPU)、及びメモリアクセス実行ユニットが含まれる);5)命令の成功裏の完了を示すリタイアメントユニット107。特に、処理コア100はマイクロコード108を利用してもしなくてもよい。マイクロコード方式プロセッサの場合、マイクロ命令(micro-ops)は、プロセッサが構成された半導体チップ内の(読み出し専用メモリ(ROM)などの)不揮発性機械読み取り可能媒体に格納され、プロセッサ内の実行ユニットにその命令により呼び出される所望の機能を実行させる。
本発明は、添付した図面の、限定ではない例を挙げて説明する。図面中、同じ要素には同じ参照符号を付した。
プロセッサの一実施形態を示す図である。 乗加算ユニットの一実施形態を示す図である。 図2の機能ユニットに作用するGETEXP命令を示すフロー図である。 図2の機能ユニットに作用するSCALE命令を示すフロー図である。 図2の機能ユニットに作用するROUND命令を示すフロー図である。 図2の機能ユニットに作用するGETMANT命令を示すフロー図である。 図2の機能ユニットに作用するREDUCE命令を示すフロー図である。 図2の機能ユニットに作用するRANGE命令を示すフロー図である。 計算システムの一例を示す図である。
図2は、ここに説明する複数の異なる命令を実行できる実行ユニット(機能ユニットとも呼ぶ)を示す図である。
MADD命令
図2のアーキテクチャが実行できる基本命令は、MADD(multiply add)命令である。これは被乗数(A)と乗数(B)を乗算して、その積(AB)を被加数(C)に加算する。すなわち、MADD命令は、命令R=(AB)+Cを実行する(一実施形態では、MADD命令を用いて、AB+C、AB−C、−AB+C、−AB−Cのうちどれかを実行できる)。浮動小数点形式では、本技術分野で知られているように、値は仮数項と指数項で表される。このように、例えば、被乗数Aは(A.mant,A.exp)と表され、乗数Bは(B.mand,B.exp)と表され、被加数Cは(C.mant,C.exp)と表される。
図2のアーキテクチャは、浮動小数点演算の場合、指数計算ロジック201と仮数計算ロジック202とを含む。浮動小数点MADD命令の基本的な動作によると、指数計算ロジック201は、浮動小数点結果の指数項(R.exp)を決定し、仮数計算ロジック202は、浮動小数点結果の仮数項(R.mant)を決定する。浮動小数点MADD命令の場合、指数計算ロジック201は、最初にR.exp項を、(i)C.expと(ii)(A.exp+B.exp)との最大として決定する。
仮数ロジック202は、左シフトロジック204と右シフトロジック205とを両方含む、指数差分ロジック203を含む。また、仮数ロジックは乗数206を含む。乗算の動作は、複数の部分積の合計として見ることができる。また、図2は、特定乗数デザインアプローチも示す。このアプローチでは、セレクタロジック207は、A.mant項とB.mant項の乗算の部分積を生成する(B.mant項もBoothエンコードされていることに留意せよ)。ウォレスツリーロジック208は、セレクタロジック207により生成された部分積の合計を有効に実行する。特に、加数の仮数項(C.mant)はウォレスツリー208にインジェクションされ、ウォレスツリー208もAB+Cを実行するようになっている。
しかし、インジェクションの前に、C.mant項は調整され、部分積の合計において適切にアライメントされる。ここで、乗算器により行われる乗算は、A.exp+B.expのオーダーの仮数項を生成するので、指数差分ロジック203は、C.mant項を、C.expと(A.exp+B.exp)との間の差分だけシフトする。具体的に、C.expが(A.exp+B.exp)より大きい場合、C.mant項は、左シフトロジック204により、C.exp−(A.exp+B.exp)バイナリポイントだけ、左にシフトされる(すなわち、C.mant項のバイナリポイントは、右にシフトされ、これは整数項が増える効果を有する)。同様に、C.expが(A.exp+B.exp)より小さい場合、C.mant項は、右シフトロジック205により、(A.exp+B.exp)−C.expデシマルポイントだけ、右にシフトされる(すなわち、C.mant項のバイナリポイントは、左にシフトされ、これは整数項が減る効果を有する)。この場合、C.mantの下位項は、ロジック213によりスティッキービットに結合され、以下に説明する命令のため、ラウンダ217により用いられる。
ウァラスツリーロジック207により行われる合計により、合計項と桁上がり項が生成され、加算器209により加算され、AB+Cの計算の結果を生成する。ここで、AB+Cの計算の結果の最初がゼロであれば(又は結果が負の場合、最初が1であれば)、リーディング変更予想器210により、その最初のゼロの(又は1の)数だけ結果を左にシフトして、それらを削除する。この同じ情報は、R.expを適宜調整するため、指数計算ロジック201に提供される。
2つのシフタがある。始めのゼロを除去する左シフト204(この場合、R.expはshift_countで更新される)と、右シフト212(これはC.expがA+B.expより大きい時に必要である。この場合、ウァラスツリーの結果は右シフトされ、C.exp−(A+B.exp)が等しくなるポイントまで右シフトされる)である。MUX213は、2つのシフタ211、212のうち正しい結果を得られるものを選択する。一実施形態では、C.mant項が左にシフトされると、加算器209は桁上がり項214を生成する。桁上がり項214により、インクリメント器215は、左シフトされたC.mant項に桁上がり項を加算する(すなわち、加算器209が桁上がり項を生成すると、インクリメント器215の出力は2:1マルチプレクサ216を通る)。一実施形態では、加算器209は108ビットであり、インクリメント器215は53ビットインクリメント器である。
図2の機能ユニットで実行できる他の多くの命令を、以下にさらに詳しく説明する。これらの命令のどれも、上記のFMADD命令だけでなく、一実施形態では、機能ユニットがスカラー又はPacked data(SIMD)スタイルのオペランドの任意の組合せを、単精度又は倍精度で演算するように設計されている。オペランドのスタイルと精度の仕様の組合せは命令で指定される。さらに、図2の機能ユニットを複数回インスタンス化して、ベクトル機能ユニットを実現できる。ここで、マスキングレイヤを、ベクトル機能ユニット出力と、そのベクトル機能ユニット内のインスタンス化された機能ユニットの各々との間に、入れても良い。
ベクトル演算は、ベクトルマシンでは入力オペランドが可変であるのに対して、SIMDマシンでは固定であるという意味で、SIMD演算とは異なるものと見なせる。上記のマスキングレイヤは、ベクトルマシン中の要素数を可変する機能を提供する。具体的に、インスタンス化された機能ユニットの一からの各出力要素は、その書き込みロジック回路に書き込まれる。一実施形態では、書き込みロジック回路は、ベクトル機能ユニットの任意の出力要素ロケーションに書き込むことができる。有効なベクトルオペランド要素に対応する要素のみに対して書き込みロジック回路をイネーブルすることにより、可変長ベクトルを処理できる。これは、有効なベクトル要素に対応するインスタンス化された機能ユニットの動作のみを基本的にイネーブルする効果を有する。さらに、マスキングレイヤは、個々のインスタンス化された機能ユニットにより検知された算術例外が、イネーブルされたインスタンス化された機能ユニットのみの有効出力に提示され、非アクティブの機能ユニットからの例外は抑制するように設計されている。
SCALE命令
SCALE命令のフロー図を図3に示した。SCALE命令は第1の浮動小数点項Xを(浮動小数点項Yの最小整数表示である)フロアYだけスケールする。VSCALE命令は、実際、Xのバイナリポイントをフロア量Yだけ動かす命令と見ることができる。これは、数学的には、以下のように表現することができる:R = (X.mant E X.exp)<*>2<A>(floor: Y.mant E Y.exp) = X.mant E (X.exp + (floor: Y.mant E Y.exp))。
このように、結果の仮数項はR.mant=X.mantであり、結果の指数項はR.exp=X.exp+(フロア:Y.mant E Y.exp)である。R.expの計算に関して、X.expはそれ自体整数であり、Y.mant E Y.expは、Y.mant項のバイナリポイントを端数ビットが無くなるまでシフトすることにより、整数に変換できる。すなわち、例えば、Y.mant=1.01011でありY.exp=5であるとすると、Y=101011である。これは基本的に、シフタ内でY.mantを左にY.expだけシフトすることに対応する。ここで、フロア演算は、基本的に、端数ビットの切り捨てに対応する。よって、R.exp号は、(i)Y.mantをY.expの量だけシフトし、(ii)シフトした値をX.expに加算することにより、計算できる。
これは、A.expとB.exp項を=0にしつつ、MADD命令の加数(C.mantとC.exp)を処理するデータパスでY項を処理することにより、図2の指数差分ロジック203内で行われる。この場合、C.exp−(A.exp+B.exp)=Y.exp−(0)=Y.expであり、これによりY.mantは左シフタ204により、Y.expだけ左にシフトされる。シフタ204の出力は指数計算ロジック201に提供される。指数計算ロジック201は、シフタ204の出力をX.exp項に加算する。X.exp項は、指数計算ロジック201へのA.exp、B.exp、C.exp入力のどれにも強制される。和はR.expとして与えられる。R.mantは単に入力X.mant項として与えられる。
GETEXP命令
GETEXP命令のフロー図を図4に示した。GETEXP命令は入力項(Z.mant、Z.exp)を受け取り、Z.expの値からバイアスを減算し、答えを浮動小数点形式で提供する。基本的に、この命令は入力Zの真の指数を浮動小数点形式で提供する。ここで、本技術分野では知られているように、浮動小数点の指数値は、計算で負の指数を容易に扱えるように、一般的にはバイアスされている。例えば、単精度の場合、8ビットが指数項のために予約されており、254通りの値を与える(この他の2つの値には特別な意味が与えられている)。ここで、−127乃至+127の実際の指数範囲に対して、かかる実際の指数値に+127のバイアスがハードウェアにより加算され、指数に対してハードウェアで物理的に計算される数値範囲が0から254になる。よって、単精度の場合、GETEXP命令はZ.expから値127を減算し、答えを浮動小数点形式で提供する。倍精度の場合には、Z.expから値1023が減算される(倍精度では.exp項は11ビットである)。
単精度の場合、値−127を加算することにより、値127が他の項から減算される。2の補数形式では、−127は10000001と表され、これは0.10000001E8と表される(すなわち、値10000001E0が右に8桁分シフトされる)。このように、一アプローチでは、単精度の場合、値0.10000001は被乗数(A.mant)とされ、値1が乗数(B.mant)とされ、乗算器により行われるAB項の乗算の結果は、0.10000001であり、これは−127を8桁だけ右へシフトしたものに対応する。
Z.exp項は、加数(C.mant)データパスに沿って受け入れられ、右シフタ205により8桁右シフトされ、ウァラスツリー208にインジェクトされる前に、乗算器出力とアライメントされる。加算器209からの結果は、Z.exp項からバイアス127を引き、右に8けたシフトしたものに対応する。リーディングチェンジ予測器210と左シフタ211は、先のゼロ/1を除去し、結果をR.mantとして提供する。R.expは、指数計算ロジックにより計算され、単精度の場合、R.exp=8−(LCA210からカウントしたリーディング0/1)+127+1である。倍精度の場合、バイアスが1023であり、値を8ビットでなく11ビットシフトすることを除き、上記と同じ演算を適用する。このように、R.exp=11−(LCA210からカウントしたリーディング0)+1023+1である。
入力項(Z.mant,Z.exp)が非正規数(すなわち、指数項がゼロにバイアスされ、非ゼロの仮数が0.XXXX...Xの形式である)場合、Z.mant項は、最初のリーディング1が見つかるまで、LCA210の制御下で、左シフタ211により左シフトされる。結果はR.mantとして与えられる。左シフトカウントは、指数の絶対値に対応し、負数であると考える。このように、R.expは、指数計算ロジックにより、R.exp=−|LCA210からからのリーディング0カウント|として表される。
ROUND命令
ROUND命令のフロー図を図5に示す。ROUND命令は、入力項(S.mant;S.exp)の仮数S.mantを、入力項Qにより指定されたバイナリ桁数まで丸める。例えば、S=10111.11001E0であり、Q=2である場合、この命令は結果R=10111.11E0(すなわち、R.mant=10111.11;R.exp=0)を与える。この演算を実行するため、S.mant項は加数仮数入力(C.mant)として受け入れられ、右シフタ205により、(S.mant中の端数ビット数)−Qだけ右シフトされる。
上記の例では、S.mantの端数ビット数は5である(すなわち、ストリング「11001」には5ビットある)。よって、S.mantは5−Q=5−2=3桁だけ右にシフトされる。入力S.mant項10111.11001を右に3桁シフトすると、10.11111E3に対応する結果が生じ、元の入力Sから最下位オーダーの端数ビットストリング「001」をドロップする効果を有する。一実施形態では、命令は次の丸めモードをサポートする:1)切り上げ;2)切り下げ;3)最も近い偶数への丸め;及び4)ゼロへの丸め。
完全な演算により、指定された丸めモード及びドロップされた端数ビットとに応じて、最小端数値が切り上げ又は切り下げされ、その結果が元の指数とともに提示される(すなわち、10111.11E0)。ここで、最初の複数のゼロが元のS.mantの一部とアライメントされ、それに続く複数の1が元のS.mantのドロップされる一部とアライメントされたマスクを生成する。ここで説明する例では、これは0000000111に対応する。このマスクは、元のS.mant入力とOR演算され、この例の場合、第1の値1011111111を生成する。マスクのNOT(1111111000)が元の入力S.mant項とAND演算され、第2の値1011111000を生成する。ラウンダ217は、両方の値を受け取り、ラウンドアップ値に対応する第1の値をインクリメントする。第2の値は非ラウンドアップ値に対応する。指定された丸めモードと、右シフタ205からドロップされたビットとに基づき、第1又は第2の値が正しい仮数の答えとして選択される。この例では、ドロップされたビットは「001」に対応し、それゆえ(最も近い値への丸めモードでは)切り上げは行われず、第2の値が正しい仮数として選択される。切り上げモード(かつ入力符号が正である)の場合、又は切り下げモード(かつ入力符号が負である)の場合、切り上げられた値が選択される。ゼロへの丸めモードでは、非切り上げモードが常に選択される。指数計算ロジックは正しい指数を決定する(例えば、round-to-nearestモードにおいて、S=11111.11111E0かつQ=2であるとすると、規格化後、R.exp=S.exp+1である)。
特に、第1と第2の値の一方は、偶数の仮数値に対応し、他方は奇数の仮数値に対応する。最も近い偶数値への丸めの場合、選択は左端のドロップされたビットと、他のドロップされたビット(スティッキービット)とに基づく。左端のドロップされたビットが1であり、スティッキービットが0である場合、偶数値が選択される。スティッキービットが1である場合、選択は左端のドロップされたビットに基づく:1であれば、切り上げ値を選択し、0であればトランケートされた値(すなわち、切り上げではない)を選択する。round-to-infinityの場合、ドロップされた端数ビットのどれかが1であれば、切り上げ値が選択される。ドロップされたビットがすべて0であれば、非切り上げ値が選択される。一実施形態では、切り下げモードにおける負の入力に、及び切り上げモードにおける正の入力に対し、round-to-infinityルールが適用される。切り下げモードにおける正の入力に、及び切り上げモードにおける負の入力に対し、round-to-zeroルールが適用される。説明した丸め(rounding behavior)は、IEEE標準754−2008で与えられる丸めモードの定義と一致する。
GETMANT
GETMANT命令のフロー図を図6に示した。GETMANTは浮動小数点形式で仮数の値を提供する。浮動小数点形式で表す仮数をC.mant入力で受け取る。結果の仮数部(ここでは、「仮数(significand)」と呼ぶ)は、1.XXXX...Xの形式である。出力値が入らねばならない数値範囲(正規化値とも呼ぶ)も入力パラメータとして提供される。一実施形態では、指定できる区間が4つある:[1,2);[1/2,1);[1/2,2);及び[3/4,3/2)。
範囲[1,2)は、1.XXXX...Xの形式の出力バイナリ数に対応する。C.mant入力が1.XXX...Xの形式である場合、単にC.mant入力項が出力結果として提示される。指数ロジックは指数の結果を0(又はBIAS)に設定し、正しい範囲内の出力値を提示する。
範囲[1/2,1)は、0.1XXXX...Xの形式の出力バイナリ数に対応する。C.mant入力が1.XXX...Xの形式である場合、単にC.mant入力項が出力仮数結果として提示される。指数結果は−1(又はBIAS−1)として提示され、指定範囲内の出力値(すなわち、0.1XXXX...Xの数値)を供給する。
範囲[1/2,2)は、0.1XXX...X又は.XXXX...Xの形式の出力バイナリ数に対応する。C.mant入力が1.XXX...Xの形式である場合、単にC.mant入力項が出力仮数結果として提示される。C.mant入力項が0.1XXX...Xの形式である場合、指数は−1(又はBIAS−1)として提示され、正しい数値範囲の出力結果を提供する。C.mant入力項が1.XXXX...Xの形式である場合、指数は0(又はBIAS)として提示され、正しい数値範囲の出力結果を提供する。
範囲[3/4,3/2)は、0.11XXX...X又は1.0XXX...Xの形式の出力バイナリ数に対応する。C.mant入力が1.XXX...Xの形式である場合、単にC.mant入力項が出力仮数結果として提示される。C.mant入力項が1.0XXX...Xの形式である場合、指数は0(又はBIAS)として提示され、正しい数値範囲の出力結果を提供する。C.mant入力項が1.1XXX...Xの形式である場合、指数は−1(又はBIAS−1)として提示され、正しい数値範囲の出力結果を提供する。
上記のいずれの命令においても、入力項が非正規数(すなわち、指数項がゼロにバイアスされ、非ゼロの仮数が0.XXXX...Xの形式である)場合、C.mant項は、最初のリーディング1が見つかるまで、LZA210の制御下で、左シフタ211により左シフトされる。これは、出力を(所望の出力形式である)1.XXXX...Xの形式で表すことに対応する。正しい成分は、当てはまる範囲で正しい指数が上記のように確立される。
REDUCE
REDUCE命令のフロー図を図7に示した。REDUCEは、入力値の縮尺した引数を、関係R=X−Round(2MX)2−Mにより抽出する。ここで、Mは、抽出で参照するビット位置を決定するスケーリングファクタである。また、入力値は、ROUND演算が切り上げか、切り下げか、それとも最も近い偶数値への丸めか指定する。例えば、X=1.01010101であり、切り下げが指定され、スケーリングファクタが3である場合、Round(23X)=1010.00000であり、Round(23X)23=1.01000000である。よって、X−Round(2MX)2−M=1.01010101−1.01000000=0.00010101である。この場合、Rは1.0101と表され、指数はゼロである。
図2を参照して、制御ロジック(図示せず)は、命令とともに入力として供給されるスケーリングパラメータMを受け取る。値Xは、C.mant.inputで受け取られ、制御ロジックの制御下で左シフタ204により左シフトされる。具体的に、制御ロジックにより、左シフタ204は、値Xを、スケーリングパラメータMと等しいバイナリ桁だけ左シフトする。これにより2MX項が生じる。この後の動作は、ROUND命令を参照して上で説明したものと同様である。ただし、右シフタ205は使われない。この演算では、ROUND命令のQパラメータはゼロだからである。
一実施形態では、ラウンダ217は、その命令から他の入力パラメータとして、切り上げるか、切り下げるか、又は最も近い偶数に丸めるかの表示を受け取ることができる。これらの異なるモードに対するラウンダの動作は、ROUND命令について上で説明したのと同様である。
丸めた答えは、ラウンダ217により供給されると、右シフタ205によりスケーリングパラメータMと同じデシマル桁だけ、右シフトされる(特に、ラウンダ217出力は右シフタ205入力に結合される)。右シフタ205の出力は、Round(2MX)2−Mに対応し、負数であることを表す適当な符号操作をしてウァラスツリー209に送られる。乗算器は、C.mant.inputで受け取った同じ入力値を、A.mant又はB.mant入力の一方で受け取り、他の入力の値は1に固定される。よって、加算器209はX−Round(2MX)2−Mを供給する。切り上げの場合、加算器209の結果は負かゼロである。結果が負であれば、LCAにより左シフタ211は最初の複数の1をシフトアウトする。切り下げの場合、加算器209の結果は正かゼロである。結果が正であれば、LCAにより左シフタ211は最初の複数のゼロをシフトアウトする。最も近い偶数に丸める場合、加算器209の結果は正か負かゼロである。LCA209は、正の結果と負の結果に対して上記のシフトを行う。出力は機能部から供給される。
RANGE
RANGE命令のフロー図を図8に示した。RANGE命令は2つの値FとGを受け取り、次のうちのどれかを返す:i)FとGの最小値;ii)FとGの最大値;iii)Fの絶対値とGの絶対値の最小値;及びiv)Fの絶対値とGの絶対値の最大値。一実施形態では、上記のi)ないしiv)の一が実行する命令で特定される。図2を参照して、一実施形態では、上記の命令i)とii)に対して、FはC.mant.inputで与えられ、GはA.mant.inputで与えられる。B.mant.inputの値は1.0にされる。Gの符号項はスイッチされ、ウァラスツリーと加算器209により計算F−Gをする。加算器209の出力の符号項は、FとGのどちらが大きいか示す。具体的に、符号項が正であれば、Fの方が大きく、符号項が負であれば、Gの方が大きい。よって、前者の場合は出力としてFがルーティングされ、後者の場合は出力としてGがルーティングされる。命令iii)とiv)では同様に、乗算器への出力に先立ちFとGの値の符号項が正の値である。
CLASS
CLASS命令はオペランドのタイプを決定する。一実施形態では、命令は、複数の異なるデータタイプのテストと、各タイプのビット位置を基本的に確保する特殊な出力フォーマットに対応し、オペランドがタイプをテストされたものである場合、機能部はそのタイプに対応する出力のビット位置に1を置く。別の一実施形態では、8個の異なるデータタイプがテストされる。これらはi)ANaN;ii)Negative Finite;iii)Denormall;iv)vegative infinity;v)positive infinity;vi)negative zero;vii)positive zero;viii)SNANである。一実施形態では、機能部中の制御ロジック(図2には図示せず)は、C.mant.inputにあるオペランドを決定し、それに応じて特殊な出力を生成する。
BLENDSEMとFIXUPIMM
このBLENDSEM命令は、対応するビット[7:0]ごとに、条件付きで、第2のソースオペランド中の倍精度浮動小数点値の符号、指数、及び仮数を、第1のソースオペランド中の倍精度浮動小数点値から符号、指数、及び仮数とマージする。結果のパックされた倍精度浮動小数点値は、宛先レジスタに記憶される。直近のビット[7:0]により、第2のソースオペランド又は第1のソースオペランドの単精度値からの対応する符号、指数、及び仮数を宛先にコピーしなければならないか決まる。特殊値も直近の制御により操作される。
FIXUPMM命令は、int64ベクトルからの32ビットテーブル値を用いてfloat64ベクトルzmm2において、様々な実数及び特殊数タイプの要素ごとのフィックスアップ(fix-up)を行う。結果はfloat64ベクトルzmm1にマージされる。この命令は、複数命令シーケンスの結果をフィックスアップして、特殊数入力を反映するのに有用であるが、一ソースを含む算術計算の結果をスペックとマッチするようにフィックスアップするのに使うことを意図したものである。例えば、rcp(0)を考える。rcpへの入力0、及び結果はINFである。しかし、Newton−Raphsonによりrcpを評価すると、ここでx=approx(1/0)であり、不正な結果が生じる。これに対応するため、N−R反復シーケンスの後に、FIXUPIMMを用いて、結果を正しい値に設定する(すなわち、入力が0であるときINF)ことができる。非正規入力オペランドzmm1又はzmm2は、正規入力と考えられ、フィックスアップ(fixup)や不正報告はトリガーしない。
一実施形態では、BLENDSEMとFIXUPIMM命令は、異なる機能部で実行され、これは「シャッフル」機能部と呼ばれる。
RCP14とRSQRT14
RCP14命令は、ソースオペランド(第2のオペランド)中の4/2パックされた倍精度浮動小数点値の逆数のSIMD計算を実行し、パックされた倍精度浮動小数点結果を宛先オペランドに格納する。この近似の最大相対誤差は2−14より小さい。ソースオペランドは、ZMMレジスタ又は512ビットメモリロケーションである。宛先オペランドはZMMレジスタである。RCP14PD命令は丸め制御ビットにより影響されない。ソース値が0.0であるとき、ソース値の符号を有する∞が返される。ソース値がSNaN又はQNaNであるとき、SNaNはQNaNに変換され、ソースQNaNが返される。
RSQRT14命令は、ソースオペランド(第2のオペランド)中の8パックされた倍精度浮動小数点値の平方根の近似逆数のSIMD計算を実行し、パックされた倍精度浮動小数点結果を宛先オペランドに格納する。この近似の最大相対誤差は2−14より小さい。ソースオペランドは、ZMMレジスタ又は512ビットメモリロケーションである。宛先オペランドはZMMレジスタである。RSQRT14PD命令は丸め制御ビットにより影響されない。ソース値が0.0であるとき、ソース値の符号を有する∞が返される。ソースオペランドが∞であるとき、ソース値の符号を有する0が返される。ソース値が(0.0以外の)負の値であるとき、浮動小数点不定が返される。ソース値がSNaN又はQNaNであるとき、SNaNはQNaNに変換され、ソースQNaNが返される。
一実施形態では、VRCP14及びVRSQRT14命令は、異なる機能部で実行され、これは「PFPROMS」機能部と呼ばれる。
上記の機能を有するプロセッサは、いろいろな計算システムで実施できる。図9は、計算システム(例えば、コンピュータ)の一実施形態を示す。図9の計算システム例は次を含む:1)ベクトルロジカルリダクション命令を含むように設計された一又は複数のプロセッサ901;2)メモリコントロールハブ(MCH)902;3)(DDR RAM、EDO RAMなどのタイプの)システムメモリ903;4)キャッシュ904;5)I/Oコントロールハブ(ICH)905;6)グラフィックスプロセッサ906;7)(陰極線管(CRT)、フラットパネル、薄膜トランジスタ(TFT)、液晶ディスプレイ(LCD)、DPLなどのタイプの)ディスプレイスクリーン907;8)一以上のI/Oデバイス908。計算システムはハードディスクドライブ(図示せず)を含んでいてもよい。
一又は複数のプロセッサ901は、計算システムが実装するソフトウェアルーチンを実行するために命令を実行する。命令は、データに対して行われる操作を含むことが多い。データと命令は両方ともシステムメモリ903とキャッシュ904に格納される。キャッシュ904は、一般的には、システムメモリ903よりもレイテンシ時間が短く設計されている。例えば、キャッシュ904は、プロセッサと同じシリコンチップ上に集積され、及び/又は高速のSRAMセルで構成され、一方システムメモリ903は低速のDRAMセルで構成されている。より頻繁に使われる命令とデータを、システムメモリ903ではなくキャッシュ904に格納することにより、計算システムの全体的な性能効率を改善する。
システムメモリ903は、計算システム中の他のコンポーネントに利用可能である。例えば、様々なインタフェース(例えば、キーボード、マウス、プリンタポート、LANポート、モデムポート)から計算システムに受け取られたデータや、計算システムの内部記憶要素(例えば、ハードディスクドライブ)から読み出したデータは、ソフトウェアプログラムの実施で、一又は複数のプロセッサ901により処理される前に、システムメモリ903に一時的にキューされる。同様に、計算システムから計算システムインタフェースの一を介して外部エンティティに送るべきと、又は内部記憶要素に格納すべきとソフトウェアプログラムが判断するデータは、送信又は格納される前に、システムメモリ903に一時的にキューされる。
ICH905は、かかるデータが、システムメモリ903と適切な対応する計算システムインタフェース(計算システムの設計によっては内部記憶装置)との間で正しく受け渡しさせる役割を有する。MCH902は、時間的に近接して生じるプロセッサ901、インタフェース、及び内部記憶要素の間のシステムメモリ903へのアクセスを求める様々な要求を管理する役割を果たす。
また、一又は複数のI/O装置908が典型的な計算システムに実装されている。I/O装置は、一般的に、計算システムへ及び/又は計算システムから(例えば、ネットワーキングアダプタ)、計算システム内の大規模不揮発性記憶(例えば、ハードディスクドライブ)をのデータを転送する役割を果たす。ICH905は、それ自体と上記のI/Oデバイス908との間の双方向ポイント・ツー・ポイントリンクを有する。
上記の説明では、本発明をその具体的な実施形態を参照して説明した。しかし、明らかなことは、添付した請求項に記載したように、本発明の広い精神と範囲から逸脱することなく、様々な修正や変更を加えることができる。したがって、明細書と図面は例示であって限定ではないと考えるべきである。

Claims (17)

  1. プロセッサであって、
    multiply-add命令をサポートする指数差分計算ロジック、乗算器、及び加算器を有する機能部を有し、
    前記機能部は、仮数値を何桁丸めるか指定するround命令をサポートするラウンダも有し、
    前記指数差分計算ロジックは前記multiply-add命令と前記round命令の実行をサポートするシフタを有する、
    プロセッサ。
  2. 前記シフタは前記機能部により実行されるscale命令もサポートする、
    請求項1に記載のプロセッサ。
  3. 前記指数差分計算ロジックは、前記multiply-add命令の実行をサポートする第2のシフタを含み、
    前記第2のシフタは前記機能部により実行されるget exponent命令もサポートする、
    請求項2に記載のプロセッサ。
  4. 前記指数差分計算ロジックは、前記multiply-add命令の実行をサポートする第2のシフタを含み、
    前記第2のシフタは前記機能部により実行されるget exponent命令もサポートする、
    請求項1に記載のプロセッサ。
  5. 前記第1のシフタ、第2のシフタ、及びラウンダは、前記機能部により実行されるreduce命令もサポートする、
    請求項4に記載のプロセッサ。
  6. 前記第1のシフタ及びラウンダは、前記機能部により実行されるreduce命令もサポートする、
    請求項1に記載のプロセッサ。
  7. 機能部が第1の命令を実行する、前記第1の命令はmultiply-add命令であるステップと、
    前記機能部が第2の命令を実行する、前記第2の命令はround命令であるステップとを有する、
    方法。
  8. 前記機能部が第3の命令を実行する、前記第3の命令はscale命令であるステップをさらに有する、
    請求項7に記載の方法。
  9. 前記機能部が第4の命令を実行する、前記第4の命令はget exponent命令であるステップをさらに有する、
    請求項8に記載の方法。
  10. 前記機能部が第5の命令を実行する、前記第5の命令はreduce命令であるステップをさらに有する、
    請求項9に記載の方法。
  11. 前記機能部が第6の命令を実行する、前記第6の命令はget mantissa命令であるステップをさらに有する、
    請求項10に記載の方法。
  12. 前記機能部が第7の命令を実行する、前記第7の命令はrange命令であるステップと、
    請求項11に記載の方法。
  13. 計算システムであって、
    ハードディスクドライブと、
    プロセッサとを有し、前記プロセッサは機能部を有し、
    前記機能部は、multiply-add命令をサポートする指数差分計算ロジック、乗算器、及び加算器を有し、
    前記機能部は、仮数値を何桁丸めるか指定するround命令をサポートするラウンダも有し、
    前記指数差分計算ロジックは前記multiply-add命令と前記round命令の実行をサポートするシフタを有する、計算システム。
  14. 前記シフタは前記機能部により実行されるscale命令もサポートする、
    請求項13に記載のプロセッサ。
  15. 前記指数差分計算ロジックは、前記multiply-add命令の実行をサポートする第2のシフタを含み、
    前記第2のシフタは前記機能部により実行されるget exponent命令もサポートする、
    請求項14に記載のプロセッサ。
  16. 前記指数差分計算ロジックは、前記multiply-add命令の実行をサポートする第2のシフタを含み、
    前記第2のシフタは前記機能部により実行されるget exponent命令もサポートする、
    請求項13に記載のプロセッサ。
  17. 前記第1のシフタ、第2のシフタ、及びラウンダは、前記機能部により実行されるreduce命令もサポートする、
    請求項16に記載のプロセッサ。
JP2013530370A 2010-09-24 2011-09-23 Scale、round、getexp、round、getmant、reduce、range及びclass命令を実行できる乗加算機能ユニット Active JP5684393B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,543 2010-09-24
US12/890,543 US8914430B2 (en) 2010-09-24 2010-09-24 Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions
PCT/US2011/053094 WO2012040632A2 (en) 2010-09-24 2011-09-23 Multiply add functional unit capable of executing scale, round, getexp, round, getmant, reduce, range and class instructions

Publications (2)

Publication Number Publication Date
JP2013543176A true JP2013543176A (ja) 2013-11-28
JP5684393B2 JP5684393B2 (ja) 2015-03-11

Family

ID=45871876

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013530370A Active JP5684393B2 (ja) 2010-09-24 2011-09-23 Scale、round、getexp、round、getmant、reduce、range及びclass命令を実行できる乗加算機能ユニット

Country Status (8)

Country Link
US (4) US8914430B2 (ja)
JP (1) JP5684393B2 (ja)
KR (1) KR101533516B1 (ja)
CN (1) CN106528044A (ja)
DE (1) DE112011103206B4 (ja)
GB (1) GB2497469B (ja)
TW (1) TWI544413B (ja)
WO (1) WO2012040632A2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914430B2 (en) 2010-09-24 2014-12-16 Intel Corporation Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions
US10209986B2 (en) 2011-12-22 2019-02-19 Intel Corporation Floating point rounding processors, methods, systems, and instructions
CN108647044B (zh) 2011-12-28 2022-09-13 英特尔公司 浮点缩放处理器、方法、系统和指令
WO2013101233A1 (en) 2011-12-30 2013-07-04 Intel Corporation Floating point round-off amount determination processors, methods, systems, and instructions
US8924454B2 (en) 2012-01-25 2014-12-30 Arm Finance Overseas Limited Merged floating point operation using a modebit
US10289412B2 (en) * 2012-02-09 2019-05-14 Qualcomm Incorporated Floating point constant generation instruction
US9542154B2 (en) * 2013-06-25 2017-01-10 Intel Corporation Fused multiply add operations using bit masks
WO2015116176A1 (en) * 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Device provided script to convert command
US10489114B2 (en) * 2014-06-27 2019-11-26 International Business Machines Corporation Shift amount correction for multiply-add
CN106293610B (zh) 2014-07-02 2019-03-15 上海兆芯集成电路有限公司 微处理器及其方法
US11061672B2 (en) 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations
WO2017184011A1 (en) * 2016-04-21 2017-10-26 Oracle International Corporation Iterative division with reduced latency
US10078512B2 (en) * 2016-10-03 2018-09-18 Via Alliance Semiconductor Co., Ltd. Processing denormal numbers in FMA hardware
CN106775587B (zh) * 2016-11-30 2020-04-14 上海兆芯集成电路有限公司 计算机指令的执行方法以及使用此方法的装置
US20180173527A1 (en) * 2016-12-15 2018-06-21 Optimum Semiconductor Technologies, Inc. Floating point instruction format with embedded rounding rule
US11366663B2 (en) 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
CN109840067B (zh) * 2019-01-14 2021-04-20 中国人民解放军国防科技大学 一种基于数学近似的浮点程序精度缺陷修复方法
US11625244B2 (en) * 2021-06-22 2023-04-11 Intel Corporation Native support for execution of get exponent, get mantissa, and scale instructions within a graphics processing unit via reuse of fused multiply-add execution unit hardware logic
TWI794967B (zh) * 2021-09-10 2023-03-01 臺灣發展軟體科技股份有限公司 資料處理電路及故障修補方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63189936A (ja) * 1987-02-03 1988-08-05 Fujitsu Ltd 浮動少数点乗算装置
JPH11353305A (ja) * 1998-05-27 1999-12-24 Arm Ltd ベクトルレジスタのアドレス指定
JP2002007111A (ja) * 2000-05-30 2002-01-11 Hewlett Packard Co <Hp> 多重データ・セットを処理するためのセルフタイム式伝送方法
US20060136536A1 (en) * 2004-12-22 2006-06-22 Arm Limited Data processing apparatus and method for converting a fixed point number to a floating point number
US20060184601A1 (en) * 2005-02-11 2006-08-17 Trong Son D Floating point unit with fused multiply add and method for calculating a result with a floating point unit
WO2008096446A1 (ja) * 2007-02-09 2008-08-14 Fujitsu Limited 演算処理装置、情報処理装置、および演算方法
JP2010503935A (ja) * 2006-09-22 2010-02-04 インテル コーポレイション 命令に応じた丸め処理の実行

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5673407A (en) * 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
US5598362A (en) * 1994-12-22 1997-01-28 Motorola Inc. Apparatus and method for performing both 24 bit and 16 bit arithmetic
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US7346643B1 (en) 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
US6996596B1 (en) 2000-05-23 2006-02-07 Mips Technologies, Inc. Floating-point processor with operating mode having improved accuracy and high performance
CA2327924A1 (en) * 2000-12-08 2002-06-08 Ibm Canada Limited-Ibm Canada Limitee Processor design for extended-precision arithmetic
US20060047738A1 (en) * 2004-08-31 2006-03-02 International Business Machines Corporation Decimal rounding mode which preserves data information for further rounding to less precision
US7499962B2 (en) 2004-12-21 2009-03-03 Intel Corporation Enhanced fused multiply-add operation
US7720900B2 (en) 2005-09-09 2010-05-18 International Business Machines Corporation Fused multiply add split for multiple precision arithmetic
CN101021832A (zh) * 2007-03-19 2007-08-22 中国人民解放军国防科学技术大学 支持局部寄存和条件执行的64位浮点整数融合运算群
US8838663B2 (en) * 2007-03-30 2014-09-16 Intel Corporation Method and apparatus for performing multiplicative functions
US7917568B2 (en) * 2007-04-10 2011-03-29 Via Technologies, Inc. X87 fused multiply-add instruction
CN101174200B (zh) * 2007-05-18 2010-09-08 清华大学 一种具有五级流水线结构的浮点乘加融合单元
CN101221490B (zh) * 2007-12-20 2010-11-10 清华大学 一种具有数据前送结构的浮点乘加单元
US8032854B2 (en) 2008-08-29 2011-10-04 International Business Machines Corporation 3-stack floorplan for floating point unit
CN101692202B (zh) * 2009-09-27 2011-12-28 龙芯中科技术有限公司 一种64比特浮点乘加器及其浮点运算流水节拍处理方法
US8914430B2 (en) 2010-09-24 2014-12-16 Intel Corporation Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63189936A (ja) * 1987-02-03 1988-08-05 Fujitsu Ltd 浮動少数点乗算装置
JPH11353305A (ja) * 1998-05-27 1999-12-24 Arm Ltd ベクトルレジスタのアドレス指定
JP2002007111A (ja) * 2000-05-30 2002-01-11 Hewlett Packard Co <Hp> 多重データ・セットを処理するためのセルフタイム式伝送方法
US20060136536A1 (en) * 2004-12-22 2006-06-22 Arm Limited Data processing apparatus and method for converting a fixed point number to a floating point number
US20060184601A1 (en) * 2005-02-11 2006-08-17 Trong Son D Floating point unit with fused multiply add and method for calculating a result with a floating point unit
JP2010503935A (ja) * 2006-09-22 2010-02-04 インテル コーポレイション 命令に応じた丸め処理の実行
WO2008096446A1 (ja) * 2007-02-09 2008-08-14 Fujitsu Limited 演算処理装置、情報処理装置、および演算方法

Also Published As

Publication number Publication date
US10318244B2 (en) 2019-06-11
US20170199726A1 (en) 2017-07-13
CN106528044A (zh) 2017-03-22
TW201224922A (en) 2012-06-16
KR20130079511A (ko) 2013-07-10
US20120079251A1 (en) 2012-03-29
US9606770B2 (en) 2017-03-28
CN103119532A (zh) 2013-05-22
US10649733B2 (en) 2020-05-12
GB2497469A (en) 2013-06-12
WO2012040632A2 (en) 2012-03-29
WO2012040632A3 (en) 2012-05-18
US20150088947A1 (en) 2015-03-26
DE112011103206B4 (de) 2021-02-18
JP5684393B2 (ja) 2015-03-11
US8914430B2 (en) 2014-12-16
GB2497469B (en) 2019-06-05
GB201304865D0 (en) 2013-05-01
KR101533516B1 (ko) 2015-07-02
US20190361676A1 (en) 2019-11-28
TWI544413B (zh) 2016-08-01
DE112011103206T5 (de) 2013-10-10

Similar Documents

Publication Publication Date Title
US10649733B2 (en) Multiply add functional unit capable of executing scale, round, getexp, round, getmant, reduce, range and class instructions
JP6248328B2 (ja) ベクトル機能ユニット、方法、およびコンピューティングシステム
US11347511B2 (en) Floating-point scaling operation
US7720900B2 (en) Fused multiply add split for multiple precision arithmetic
JP5636110B2 (ja) ベクトル先頭ゼロ、ベクトル末尾ゼロ、ベクトルオペランド1sカウントおよびベクトルパリティ計算のための機能ユニット
US8676871B2 (en) Functional unit capable of executing approximations of functions
US10078512B2 (en) Processing denormal numbers in FMA hardware
US9703626B2 (en) Recycling error bits in floating point units
GB2423386A (en) Performing a reciprocal operation on an input value to produce a result value
US10445066B2 (en) Stochastic rounding floating-point multiply instruction using entropy from a register
US10963245B2 (en) Anchored data element conversion
US11704092B2 (en) High-precision anchored-implicit processing
CN103119532B (zh) 处理器、指令执行方法和计算系统
Saini et al. Floating Point Unit Implementation on FPGA

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140311

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140611

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140618

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140708

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140715

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140806

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140813

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140910

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150114

R150 Certificate of patent or registration of utility model

Ref document number: 5684393

Country of ref document: JP

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