JP6886927B2 - 浮動小数点値の処理のための装置及び方法 - Google Patents

浮動小数点値の処理のための装置及び方法 Download PDF

Info

Publication number
JP6886927B2
JP6886927B2 JP2017565242A JP2017565242A JP6886927B2 JP 6886927 B2 JP6886927 B2 JP 6886927B2 JP 2017565242 A JP2017565242 A JP 2017565242A JP 2017565242 A JP2017565242 A JP 2017565242A JP 6886927 B2 JP6886927 B2 JP 6886927B2
Authority
JP
Japan
Prior art keywords
mantissa
value
circuit
intermediate representation
window
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
JP2017565242A
Other languages
English (en)
Other versions
JP2018524706A (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 JP2018524706A publication Critical patent/JP2018524706A/ja
Application granted granted Critical
Publication of JP6886927B2 publication Critical patent/JP6886927B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/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/491Computations with decimal numbers radix 12 or 20.
    • 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
    • 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
    • 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/49942Significance control
    • 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/50Adding; Subtracting
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • 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

Description

本開示は、データ処理に関する。特に、データ処理の実行時の浮動小数点値の取扱いに関する。
データ処理装置は、浮動小数点のフォーマットでの値を受信可能であったり、例えば、累算処理として浮動小数点入力値の和を生成可能であったりする。しかしながら、そのような浮動小数点加算を行う上で生じる問題としては、それが一般に結合性ではないという点である。言い換えれば、3つ以上の浮動小数点値の総和を求める結果は、その加算が行われる順番に依存する。大きい値に加算される小さい値の効果がない場合があり、プログラマーはまず小さい値の総和を求めることを選択するかもしれない。同様に、正と負の浮動小数点値の総和を求める結果は、総和が行われる順番に依存する。大きい値が相殺することが予想される場合、小さい値を最後に総和すればよい。浮動小数点の数は、一方では、非常に広い範囲の値を表現することができるため有益である符号化を有するが、他方では、複数の浮動小数点値の総和が行われるときに精度の喪失が起こり、値が総和される順番によってこの喪失が異なることがほとんど避けられない。計算に対するこのような非決定的な結果は、通常、データ処理においてはむしろ望ましいものではなく、総和の前の入力値の検査や順序付けはまた、そのような総和を行うデータ処理装置を複雑化させ、さらにその処理速度を低下させてしまう。あるいは、決定的な最終総和を得るように総和順序による変動を出力総和の精度の下に隠すようにして最終総和の精度を限定することも、高精度浮動小数点数においては望ましいものではない。
一つの例示的な実施形態には、浮動小数点値の中間表現を処理するための回路であって、中間表現が、浮動小数点値の仮数の表現を保持するための仮数部であって、浮動小数点値の指数の下位部分が、仮数の表現が保持されるべき仮数部内の位置の範囲を定義している仮数部と、浮動小数点値のフォーマットの値範囲にわたる複数の連続したウィンドウのうちの選択されたウィンドウを示す、浮動小数点値の指数の上位部分の表現を保持するための指数部であって、仮数部の第1の部分が選択されたウィンドウに対応し、仮数部の第2の部分が、選択されたウィンドウに隣接し且つ値範囲において下位である別のウィンドウへの重複に対応する、指数部と、浮動小数点値の仮数の表現が、選択されたウィンドウに隣接し且つ値範囲において上位である上位ウィンドウに移動されるときに、仮数部の第2の部分を埋めるための値を保持するためのシャドー部と、を具備する、回路を備える装置がある。
他の例示的な実施形態には、コンピュータデバイス上で実行されると、そのコンピュータデバイスを上記の例の装置として動作させるコンピュータプログラムを一時的でない方法で格納したコンピュータプログラム製品がある。
他の例示的な実施形態には、コンピュータデバイス上で実行されると、そのコンピュータデバイスを上記の例の装置として動作させるソフトウェアがある。
他の例示的な実施形態には、浮動小数点値の中間表現を格納する方法であって、中間表現の仮数部に浮動小数点値の仮数の表現を格納する工程であって、浮動小数点値の指数のより下位の部分が仮数の表現が格納されるべき仮数部内の位置の範囲を定義する、格納する工程と、浮動小数点値のフォーマットの値範囲にわたる複数の連続したウィンドウのうちの選択されたウィンドウを示す、中間表現の指数部における浮動小数点値の指数のより上位の部分の表現を格納する工程であって、仮数部の第1の部分がその選択されたウィンドウに対応し、仮数部の第2の部分が、その選択されたウィンドウに隣接し且つ値範囲のより下位にある別のウィンドウとの重複部分に対応する、格納する工程と、浮動小数点値の仮数の表現が、その選択されたウィンドウに隣接し且つ値範囲のより上位にあるより上位のウィンドウに移動される場合に、仮数部の第2の部分を埋めるための値を格納する工程と、を含む方法がある。
他の例示的な実施形態には、コンピュータデバイス上で実行されると、上記の例の方法をコンピュータデバイスに実行させるコンピュータプログラムを一時的でない方法で格納したコンピュータプログラム製品がある。
他の例示的な実施形態には、コンピュータデバイス上で実行されると、上記の例の方法をコンピュータデバイスに実行させるソフトウェアがある。
他の例示的な実施形態には、浮動小数点値の中間表現を格納するための手段であって、中間表現の仮数部に浮動小数点値の仮数の表現を格納するための手段であって、浮動小数点値の指数のより下位の部分が仮数の表現が格納されるべき仮数部内の位置の範囲を定義する、格納するための手段と、浮動小数点値のフォーマットの値範囲にわたる複数の連続したウィンドウのうちの選択されたウィンドウを示す、中間表現の指数部における浮動小数点値の指数のより上位の部分の表現を格納するための手段であって、仮数部の第1の部分がその選択されたウィンドウに対応し、仮数部の第2の部分が、選択されたウィンドウに隣接し且つ値範囲のより下位にある別のウィンドウとの重複部分に対応する、格納するための手段と、浮動小数点値の仮数の表現が、選択されたウィンドウに隣接し且つ値範囲のより上位にあるより上位のウィンドウに移動される場合に、仮数部の第2の部分を埋めるための値を格納するための手段と、を含む、手段を備える装置がある。
単に例示の目的で添付の図面に示す実施形態を参照して、本技術をさらに説明する。
一実施形態における本技術の中間表現の作成の一例による、倍精度バイナリ64ビット浮動小数点のフォーマットの値の範囲と、その範囲内にある3つの浮動小数点値の例を示す。 一実施形態における関連する回路を含む、倍精度64ビット浮動小数点値についての本技術の中間表現をさらに詳細に示す。 一実施形態における、図2に示すものに代わる、本技術の中間表現を示す。 一実施形態における、2つのシャドー部を有する、図2に示すものに代わる、本技術の中間表現を示す。 一実施形態における、入力された倍精度浮動小数点値から本技術の中間表現を生成し記憶するための回路を概略的に示す。 一実施形態の方法により本技術の中間表現において2つのオペランドを総和するために行われる一連の工程を示す。 一実施形態における本技術の中間表現においてオペランドに対してウィンドウシフト演算を行うために実行される一連の工程を示す。 本技術による3つの浮動小数点値の総和の計算の順序非依存性を示す。 本技術による3つの浮動小数点値の総和の計算の順序非依存性を示す。 一実施形態における本技術の中間表現を用いて浮動小数点の総和を行うための装置を概略的に示す。 図9Aに示すものの変形例である、本技術の中間表現を用いて浮動小数点の総和を行うための装置を概略的に示す。 一実施形態における本技術へのレーン式ベクトル処理の応用を概略的に示す。 一実施形態における符号付き表現と符号なし表現との両方を含む本技術の中間表現の浮動小数点値を処理するための装置を概略的に示す。 図10Bの装置が実行可能な6つの命令の例を示す。 いくつかの実施形態における本技術のサポートに用いられる汎用コンピュータデバイスを概略的に示す。
少なくともいくつかの実施形態によれば、浮動小数点値の中間表現を処理するための回路であって、中間表現が、浮動小数点値の仮数の表現を保持するための仮数部であって、浮動小数点値の指数の下位部分が、仮数の表現が保持されるべき仮数部内の位置の範囲を定義する仮数部と、浮動小数点値のフォーマットの値範囲にわたる複数の連続したウィンドウのうちの選択されたウィンドウを示す浮動小数点値の指数の上位部分の表現を保持するための指数部であって、仮数部の第1の部分がその選択されたウィンドウに対応し、仮数部の第2の部分が、選択されたウィンドウに隣接し且つ値範囲において下位にある更なるウィンドウとの重複部分に対応する、指数部と、浮動小数点値の仮数の表現が上記選択されたウィンドウに隣接し且つ値範囲において上位にある上位ウィンドウに移動されるときに、仮数部の第2の部分を埋めるための値を保持するためのシャドー部と、を含む回路を備えた装置が提供される。
本技術によれば、特定の指数の範囲内の符号なし浮動小数点値のさまざまな固定小数点表示と見なされ得る浮動小数点値の中間表現(本明細書では、スライディングウィンドウアキュムレータ(SWAcc)とも呼ばれる)が提供される。この中間表現は、3つのコア部分、すなわち、仮数部、指数部、シャドー部を有する。浮動小数点値の指数の値の一部(下位部分)は、浮動小数点値の仮数が中間表現内、具体的には、仮数部内のどこに保持されるべきかを決定する。また、中間表現の指数部は、浮動小数点値の指数の上位部分の表現を保持する。本技術によれば、浮動小数点値の特定のフォーマットに関連する値の範囲(例えば、IEEE754規格で規定された倍精度64ビット浮動小数点数の2−1023から21024まで)が複数の連続した「ウィンドウ」に分割され、浮動小数点値の指数の上位部分が、これらの複数のウィンドウのうちの、浮動小数点値の仮数が位置する特定のウィンドウを示している。そして、浮動小数点値の指数の下位部分は、浮動小数点値の仮数がその選択されたウィンドウ内のどこに位置するのかを定義する。
上記中間表現において本技術によって提供されるシャドー部により、選択されたウィンドウ内で表現されるように浮動小数点値の仮数の上位部分のコピーを保持することできるようになり、このことは、本技術の発明者によって、例えば、この中間表現での複数の浮動小数点値の総和を求める場合に、複数の連続したウィンドウのウィンドウ間における浮動小数点値の移動を取り扱うのに有用なメカニズムであることが分かった。つまり、本技術は、本中間表現により、浮動小数点値の仮数が、その仮数について選択されたウィンドウに隣接し且つ値の範囲において下位にある更なるウィンドウへと選択されたウィンドウを超えて及ぶことができるようにするということを定めている。特に、提供されるシャドー部の大きさは、下位の隣接するウィンドウとの重複部の大きさに対応する。これは、中間表現における浮動小数点値についてウィンドウシフトが必要な場合には、例えば、(以下にさらに詳細に説明するように)中間表現における別の浮動小数点値とそろえる必要があるため、又は、中間表現における2つの浮動小数点値の総和を求めた結果が、次の上位ウィンドウでより適切に表される中間表現における合計値になるという事実のために、シャドー部に保持された値によって、その次の上位ウィンドウにおける適切な表現についての正確な決定を行うことが可能となることを意味している。これは、古い現在のウィンドウに重複する次の上位ウィンドウの領域についての正しい値が必要であり、とりわけ、現在のウィンドウにこれまで保持された合計値は、新しい上位ウィンドウにおける合計に影響を与えなかったであろういくつかの値を含んでいてもよいからである。換言すれば、シャドー部は、ウィンドウシフトがもっと早くに生じていたならこの重複部が有していたであろう値を保持するので、そうすると、新しい上位ウィンドウに表された正しい総和を決定することができる。
いくつかの実施形態では、上記装置は、中間表現の2つのオペランドに総和演算を行うための総和回路であって、総和演算が、それぞれが2つのオペランドの指数部からの第1の指数値と第2の指数値とを比較し、第1の指数値と第2の指数値とが1だけ異なる場合に、小さい方のオペランドの選択されたウィンドウを、その2つのオペランドのうちの大きい方のオペランドの選択されたウィンドウと一致するよう調整するために、その2つのオペランドのうちの小さい方のオペランドにウィンドウシフト演算を行うことと、中間表現における総和値を生成するために、2つのオペランドの仮数部とシャドー部とをそれぞれ総和することと、を含む、総和回路をさらに含む。
上記装置は、中間表現の2つのオペランドを総和することを可能にするために、総和回路を備えていてもよい。なお、この総和回路が総和演算のために用いる中間表現での2つのオペランドは、さまざまなソースから生じるものであってもよい。例えば、両方のオペランドが装置によって実行される総和命令において定められてもよく、それらのうちの少なくとも一つがそのような命令において即値として与えられてもよく、また実際には、それらの一方または両方が命令によって元々の浮動小数点フォーマットで提供又は規定され、装置が、総和演算を行う前に、必要に応じて、浮動小数点値の一方又は両方を中間表現の2つのオペランドに変換してもよい。総和演算を行う方法は、2つのオペランドの(中間表現における)指数部によって与えられる指数値を比較する工程を含む。特定すべき特別な特性としては、一方の指数値が他方と1だけ異なる場合、オペランドが隣接するウィンドウに位置することを意味し、この場合、2つのオペランドの選択されたウィンドウを(大きい方のオペランドについてすでに特定されているものに対して)整列させるために、小さい方のオペランドに対してウィンドウシフト演算を行う。これにより、中間表現における総和値を生成するための適切な総和演算が可能になる。
いくつかの実施形態では、上記装置は、一つ以上の中間表現を格納する格納回路をさらに備えていてもよい。総和回路が総和演算を行う場合、2つのオペランドのうちの少なくとも一方はすでに格納回路に格納され(その後そこから読み出され)ているかもしれない。いくつかの実施形態では、2つのオペランドの一方又は両方は、例えば、総和演算を行わせるよう総和回路を構成する命令により与えられる、総和演算の即被加数として与えてもよい。
総和演算の総和の目的にはさまざまな形があるが、いくつかの実施形態では、この総和演算は、格納回路に格納された2つのオペランドのうちの一つに対する累算演算である。
総和演算の一部として実行されなければならない場合もあるウィンドウシフト演算をサポートするために、いくつかの実施形態では、上記装置は、小さい方のオペランドのシャドー部を、小さい方のオペランドの仮数部の第2部分にコピーするコピー回路と、小さい方のオペランドのシャドー部をクリアし、小さい方のオペランドの仮数部の第1部分をクリアするクリア回路と、小さい方のオペランドの指数値を1だけインクリメントするインクリメント回路と、を備えている。したがって、コピー回路は、小さい方のオペランドのシャドー部を、次の上位ウィンドウへのシフトを考慮して、仮数部において新しく位置付けて利用可能にし、クリア回路は、小さい方のオペランドの適切な部分(シャドー部)と、(下位ウィンドウにおいて表現されたときには、仮数部の適切な部分を保持していた)仮数部の第1部分を「リセット」する。最後に、インクリメント回路が、小さい方のオペランドの指数値を次の上位ウィンドウにシフトするよう調整を行うために設けられる。その結果、小さい方のオペランドも大きい方のオペランドも、それらの総和が実行可能な状態で同じウィンドウに直接に表示される。
総和演算の一部として行われる2つのオペランドのシャドー部の総和の結果、オーバーフローが生じる場合があり、いくつかの実施形態では、総和回路は、シャドーオーバーフローを引き起こす2つのオペランドのシャドー部の総和に応答して、2つのオペランドの選択されたウィンドウを、総和値の選択されたウィンドウを得るように調整するように総和値に対してウィンドウシフト演算を行う回路を有している。このようにして、この場合、この回路によって、総和値に対して適切なウィンドウ(すなわち、一般には一つ上のウィンドウ)を与えるように、(もともと一致した、又は、上述のように小さい方のオペランドをそれに合わせて調整した)2つのオペランドの選択されたウィンドウを調整することが可能となる。
そのようなシャドーオーバーフローが生じると、そのシャドーオーバーフローをすぐに利用することができ、いかなる方法でも保持する必要がない場合もあるが、いくつかの実施形態では、上記装置は、シャドーオーバーフローストレージと、シャドーオーバーフローを引き起こす2つのオペランドのシャドー部の総和に対応して、そのシャドーオーバーフローストレージにシャドーオーバーフローを格納する回路とを備えている。いくつかの実施形態では、このようなシャドーオーバーフローが生じる状況を取り扱うために、コピー回路は、小さい方のオペランドの仮数部の第1部分の最下位部分にシャドーオーバーフローをコピーする回路を有している。
また、2つのオペランドの仮数部の総和によって、仮数オーバーフローが引き起こされる場合もあり、いくつかの実施形態では、総和回路は、仮数オーバーフローを引き起こす2つのオペランドの仮数部の総和に応答して、総和値の選択されたウィンドウを得るために2つのオペランドの選択されたウィンドウを調整するように総和値に対してウィンドウシフト演算を行う回路を有している。このように、仮数オーバーフローが実際に発生するときは、中間表現において総和値をより有効に表すために、その表現をあるウィンドウからより上位のウィンドウへ移動させるように、総和回路のこの回路によって総和値のウィンドウシフト演算を行うことが可能となる。
いくつかの実施形態では、コピー回路は、小さい方のオペランドの仮数部の第1の部分の最下位部分に仮数オーバーフローをコピーする回路を有している。総和の結果として生じた仮数オーバーフローの値は、次いで、さらなる処理のために適切に取り込まれる。
このような仮数オーバーフローが発生する状況では、仮数オーバーフロー値をすぐに利用することができ、いかなる方法でも一時的に保持する必要がないこともあるが、いくつかの実施形態では、上記装置は、仮数オーバーフローストレージと、仮数オーバーフローを引き起こす2つのオペランドの仮数部の総和に応答して、その仮数オーバーフローストレージに仮数オーバーフローを格納する回路とをさらに備えている。この仮数オーバーフロー値は、次いで、中間表現の処理の後の段階で使用されるまで保持されることができる。
総和演算の一部として行われる2つのオペランドの指数値の比較の結果、それらが1より大きく異なることが分かった場合、小さい方のオペランドのシャドー部は、大きい方のオペランドのウィンドウに小さい方のオペランドを再び表現するのに利用することができず、実際、小さい方のオペランドは、いかなる点でも大きい方のオペランドよりもはるかに小さいものとして認識され、よって、これら2つのオペランドの総和から生成される最終的な総和値に影響を与えることはない。したがって、いくつかの実施形態では、総和回路は、2つのオペランドのうちの大きい方のオペランドを中間表現における総和値として用いて総和演算を終了するように、第1の指数値と、1より大きく異なる第2指数値とに応答する。換言すれば、この時点で、2つのオペランドのうちの小さい方のオペランドが単に破棄され、大きい方のオペランドが中間表現における総和値として用いられる。
本技術によればさらに、浮動フォーマットで表現され得る特殊な数を取り扱うことが可能となり、したがって、いくつかの実施形態では、浮動小数点値が無限大又は非数である場合に特殊値を有する特殊数指標を記憶するための特殊数部が中間表現に備えられている。この特殊数指標は、さまざまな形態をとることができ、例えば、単に、浮動小数点値が当該特殊数であることを示す単一ビットであってもよいし、中間表現内の他のフィールドが最大値を有しないときに当該特殊数を条件的に表す単一ビットであってもよいし、特殊数の特定の種類、例えば、無限大や非数の、より詳細な表現を保持できるようにする多くのビットであってもよい。
入力された浮動小数点値においてそのような特殊数に遭遇した場合、総和値もそのような特殊数となる(例えば、任意の浮動小数点値を加算された無限大は、無限大)のが、浮動小数点総和の性質であり、したがって、いくつかの実施形態では、総和回路は、特殊値を設定された特殊数指標に応答して、総和値における特殊数指標を特殊値に設定して総和演算を終了する特殊数処理回路を備えている。
当該装置の(特に総和回路における)動作によって、中間表現で表現可能な範囲の外の値が生成される場合もあり、したがって、いくつかの実施形態では、総和値において特殊数指標を特殊値に設定するように、インクリメント回路が、総和値の指数部の指数オーバーフローを引き起こす、総和値に対するウィンドウシフト演算の実行に応答する。
特殊数指標が特殊値を設定されている場合、本技術によれば、例えば、診断目的で、浮動小数点値を中間表現に表せない原因(例えば、無限大又は非数)を示すために、中間表現の少なくとも一つの部分が再利用されてもよいように、さらに規定される。したがって、いくつかの実施形態では、当該装置は、仮数部、シャドー部、特殊数部の少なくともいずれかに、浮動小数点値が無限大や非数である原因を示すシンドローム情報を記憶させるよう、特殊値を設定された特殊数指標に応答するシンドローム回路をさらに備えている。
このシンドローム情報は、さまざまな形をとり得るが、いくつかの実施形態では、シンドローム情報は、浮動小数点値に無限大または非数を生じさせた命令のプログラムカウンタの少なくとも一部を含んでいる。このプログラムカウンタの一部は、通常、ユーザが、浮動小数点値に無限大や非数を生じさせた命令を一意的に特定する(または、その後適切に調査可能な比較的少数の命令を少なくとも特定する)のに十分となるよう選択される。命令は、個別には追跡されず、しかしまとめて(例えば、アウトオブオーダープロセッサにおいて)行われる場合があり、そのため、いくつかの実施形態では、シンドローム情報は、その群の中の命令が無限大や非数を生じさせる命令群を示すプログラムカウンタの少なくとも一部を含む。
本技術によれば、このような技術をレーン式ベクトル処理装置において実装することによって、中間表現に対する処理効率を向上し得ることがさらに分かる。したがって、いくつかの実施形態では、当該装置は、レーン式ベクトル処理回路をさらに備え、仮数部の長さがレーン式ベクトル処理回路のレーンサイズの第1の倍数に対応し、シャドー部の長さがレーン式ベクトル処理回路のレーンサイズの第2の倍数に対応する。このように仮数部とシャドー部をレーン式ベクトル処理回路のレーンサイズ(又はその倍数)に合わせることにより、総和回路がレーン式ベクトル処理構成の利用によって得られ得る処理効率の恩恵を受けられるようになる。
しかしながら、中間表現のこれらの部分の少なくとも一つは、当然にはレーン式ベクトル処理構成のレーンサイズとそろわない場合もあり、そのような場合は、これらの部分の一つを拡張するために、レーンサイズから得られる追加スペースを利用してもよい。例えば、いくつかの実施形態では、仮数部の第2の部分の長さがレーンサイズよりも小さいときには、仮数部は、第2の部分の長さと仮数延長部の長さとの合計がレーンサイズの長さに等しくなる仮数延長部をさらに含む。このようにして、仮数延長部がレーンサイズにおける残りの利用可能なスペースを有効に使い切り、そして、より大きな仮数表現の取り扱いも可能となる。
同様に、レーンサイズのこのような利用可能な「追加」スペースが仮数部に適用される場合には、(シャドー部と仮数部の第2の部分の大きさが一致するため)シャドー部にも適用される可能性があり、したがって、いくつかの実施形態では、シャドー部の長さがレーンサイズよりも小さい場合、シャドー部はさらに、シャドー部の部分の長さとシャドー延長部の部分の長さとの合計がレーンサイズの長さになるシャドー延長部を含む。このように、より大きなシャドーが得られ、すなわち、中間表現において浮動小数点値の仮数が表現されている選択されたウィンドウに隣接し且つそれよりも値の範囲の下位にある別のウィンドウとの重複部分が大きくなる。
中間表現の指数部もレーン式ベクトル処理回路のレーンサイズと揃えられていてもよいが、実行される総和演算については、総和される2つのオペランドの指数値自体は、通常、それぞれのオペランドの仮数がされる方法で総和がされるわけではなく、したがって、いくつかの実施形態では、総和回路は、指数部がレーン式ベクトル処理回路のレーン内にある場合に、第1の指数値及び第2の指数値のいずれか一つをゼロに設定する回路を含む。つまり、実際、第1の及び第2の指数値のいずれか一つをゼロに設定することにより、一つの指数値の残りの(ゼロに設定されていない)値によって総和値の指数値が簡単に得られるという点で、レーン式ベクトル処理回路で中間表現の他の部分と同じようにオペランドの指数部を取り扱う(すなわち、総和が行われる)ことができ、レーン式ベクトル処理回路により、中間表現の他の部分と同じ方法で指数部を効率的に取り扱うことができる。
当該装置は、符号なしと符号付き両方の中間表現を処理可能としてもよく、したがって、いくつかの実施形態では、浮動小数点値の中間表現は符号付き中間表現であり、該装置には、正の値の正の中間表現を処理し且つ負の値の負の中間表現を処理する回路がさらに備えられている。これにより、正負両方の符号付き中間表現が処理可能である。
これらの符号付き中間表現を取り扱う具体的な方法は、さまざまな形態をとることができ、例えば、上記装置は、例えば、総和がそれぞれ別々に、ひいてはもっと簡単に行えるよう、少なくとも一つの正の中間表現のためのストレージと少なくとも一つの負の中間表現のためのストレージを有するように規定されてもよい。
総和回路は、総和演算のオペランドとしての符号付き浮動小数点値の受信にさまざまな方法で応答するよう構成されていてもよいが、いくつかの実施形態では、総和回路は、符号付き浮動小数点値と入力符号付き中間表現との、結果の符号付き中間表現を生成するための2つのオペランドとしての受信に応答するが、ここで、符号付き浮動小数点値が正の浮動小数点数である場合は、結果の符号付き中間表現の正の成分が、入力符号付き中間表現の正の成分と符号付き浮動小数点値の絶対値との総和値を保持し、符号付き浮動小数点値が負の浮動小数点数である場合は、結果の符号付き中間表現の負の成分が、入力符号付き中間表現の負の成分と符号付き浮動小数点値の絶対値との総和値を保持する。こうして、当該装置は、次いで中間表現に変換される符号付き浮動小数点値を受信すると、正の値と負の値について別々の中間表現を保持し、両者を見分けつつ、それぞれの絶対値だけを考慮すればよく、出力浮動小数点総和値を得るために最終的に両者を合わせる必要が生じるまで、正の値と負の値の中間総和を実行することができる。
いくつかの実施形態では、総和回路は、結果の符号付き中間表現を生成するように、2つの符号付き中間表現の2つのオペランドとしての受信に応答するが、ここで、結果の符号付き中間表現の正の成分は、2つの入力符号付き中間表現の正の成分の総和値を保持し、結果の符号付き中間表現の負の成分は、2つの入力符号付き中間表現の負の成分の総和値を保持する。
このような別々の正及び負の中間表現を、出力総和値を得るために組み合わせる必要がある場合は、これは、正の中間表現の絶対値から負の中間表現の絶対値を引くことにより(または正及び負の中間表現を加算することにより)行われてもよく、したがって、いくつかの実施形態では、総和回路には、正の中間表現の絶対値から負の中間表現の絶対値を引くことにより正の中間表現と負の中間表現とを結合する回路をさらに備えていてもよい。
中間表現は装置によって出力されてもよいが、装置が外部ソースから浮動小数点値を受信するよう構成されている場合、一般的には、装置自体が浮動小数点フォーマットで値を出力する方がより有効的であり、したがって、いくつかの実施形態では、装置は、出力浮動小数点値の仮数が得られるように仮数部の最上位の設定ビットの位置によって仮数部の内容を選択し、最上位の設定ビットの位置に従って中間表現の指数部から出力浮動小数点値の指数を生成することにより中間表現を出力浮動小数点値に変換する変換回路をさらに備えている。中間表現の仮数部内における仮数の位置決めは、浮動小数点フォーマットでの仮数の正しい表現を特定するために重要であり、そのような実施形態ではこれは、出力浮動小数点値の仮数をその後生成するために仮数部の最上位の設定ビットの位置を特定する(例えば、先行するゼロの列を破棄する)ことにより行われてもよい。仮数部において仮数がより高位(より左)に表現されるほど、それが対応する出力浮動小数点値の指数が大きいので、出力浮動小数点値の指数もこの最上位の設定ビットの位置に依存している。
また、本技術によれば、いくつかの実施形態において、装置は、仮数部からシャドー部への繰り上がりを伝搬する、最大値を有する指数部に対応する桁上げ回路をさらに備え、ここで、指数部が最大値を有する場合は、仮数部とシャドー部とが浮動小数点値の仮数を格納するように連結させるという点で、浮動小数点値のより大きな値が中間表現において表現可能となる。このように、指数部が最大値を有し、ひいては、さもなければ仮数部で表現可能な最大仮数の観点から限界に達している場合に、このような実施形態により、より大きな仮数を表現するために、シャドー部が(両者を連結させることにより)仮数部を拡張するように利用されてもよいということが規定される。
実際には、通常より大きな仮数を格納するために、このように仮数部とシャドー部とを連結させるだけではなく、仮数部、シャドー部、特殊数部のうちのいずれか(少なくとも)2つをこのように連結させてもよい。したがって、いくつかの実施形態では、指数部が最大値を有する場合、仮数部、シャドー部、特殊数部のうちの少なくとも2つが浮動小数点値の仮数を格納するために連結させる。
いくつかの実施形態では、仮数部の第3の部分が、それにウィンドウに隣接し且つそれよりも値範囲の下位にあるさらに別のウィンドウとのさらなる重複部分に対応する。そのため、そのような実施形態では、中間表現は、仮数が表現されているウィンドウに隣接する2つのウィンドウに対応するシャドー部を維持することができ、その結果、複数のウィンドウのウィンドウシフトに適応できる。
装置は、浮動小数点値の中間表現に関するその機能の特定の態様を実行させる少なくとも一つの専用の命令に応答するものであってもよい。例えば、いくつかの実施形態では、該装置は、浮動小数点値を特定して、浮動小数点値の中間表現を格納回路に格納させる命令に応答する。こうして、この装置は、命令によって特定された浮動小数点値を確認し、それをその中間表現に変換して格納回路に格納することができる。また、装置は、総和演算に対するオペランドを定義する少なくとも一つの総和命令に応答するものであってもよい。上述のように、これらの被加数(summand)はさまざまな方法で、例えば、即値として、もしくは、局所レジスタなどの特定の記憶位置を参照して特定され得るが、いくつかの実施形態では、装置は、総和演算を行うための即被加数を特定する総和命令に応答する。
少なくともいくつかの実施形態によれば、コンピュータデバイス上で実行されると、そのコンピュータデバイスを上述の構成のいずれかの装置として動作させるコンピュータプログラムを一時的でない方法で格納したコンピュータプログラム製品が提供される。
少なくともいくつかの実施形態によれば、コンピュータデバイス上で実行されると、そのコンピュータデバイスを上述の構成のいずれかの装置として動作させるソフトウェアが提供される。
少なくともいくつかの実施形態によれば、浮動小数点値の中間表現を格納する方法であって、中間表現の仮数部に浮動小数点値の仮数の表現を格納する工程であって、浮動小数点値の指数のより下位の部分が仮数の表現が格納されるべき仮数部内の位置の範囲を定義する、格納する工程と、浮動小数点値のフォーマットの値範囲にわたる複数の連続したウィンドウのうちの選択されたウィンドウを示す、中間表現の指数部における浮動小数点値の指数のより上位の部分の表現を格納する工程であって、仮数部の第1の部分がその選択されたウィンドウに対応し、仮数部の第2の部分が、その選択されたウィンドウに隣接し且つ値範囲のより下位にある別のウィンドウとの重複部分に対応する、格納する工程と、浮動小数点値の仮数の表現が、その選択されたウィンドウに隣接し且つ値範囲のより上位にあるより上位のウィンドウに移動される場合に、仮数部の第2の部分を埋めるための値を格納する工程とを含む方法が提供される。
少なくともいくつかの実施形態によれば、コンピュータデバイス上で実行されると、上述の方法を、対応する装置の上述の構成のいずれかに従っておそらく適切に適合させられた、そのコンピュータデバイスに実行させるコンピュータプログラムを一時的ではない方法で格納したコンピュータプログラム製品が提供される。
少なくともいくつかの実施形態によれば、コンピュータデバイス上で実行されると、上述の方法を、対応する装置の上述の構成のいずれかに従っておそらく適切に適合させられた、そのコンピュータデバイスに実行させるソフトウェアが提供される。
少なくともいくつかの実施形態によれば、浮動小数点値の中間表現を格納するための手段を備えた装置が提供され、この手段には、中間表現の仮数部に浮動小数点値の仮数の表現を格納するための手段であって、浮動小数点値の指数のより下位の部分が仮数の表現が格納されるべき仮数部内の位置の範囲を定義する、格納するための手段と、浮動小数点値のフォーマットの値範囲にわたる複数の連続したウィンドウのうちの選択されたウィンドウを示す、中間表現の指数部における浮動小数点値の指数のより上位の部分の表現を格納するための手段であって、仮数部の第1の部分がその選択されたウィンドウに対応し、仮数部の第2の部分が、選択されたウィンドウに隣接し且つ値範囲のより下位にある別のウィンドウとの重複部分に対応する、格納するための手段と、浮動小数点値の仮数の表現が、選択されたウィンドウに隣接し且つ値範囲のより上位にあるより上位のウィンドウに移動される場合に、仮数部の第2の部分を埋めるための値を格納する手段とが含まれる。
次に、図面を参照して、いくつかの特定の実施形態を説明する。
図1は、本明細書においてスライディングウィンドウアキュムレータ(SWAcc)と呼ばれる中間表現が、3つの異なる2進64ビット浮動小数点値(この例では、倍精度IEEE754フォーマットの値)を表現するためにどのように利用されるかを示す。図1の水平線は、この浮動小数点フォーマットの値範囲、すなわち、そのような倍精度64ビット2進値によって表現可能な値の範囲を示している。このように、図示されているように、この水平線は2099ビット固定小数点値を効果的に表している。2の適当な累乗の最上位4ビットによって与えられる、中間表現の指数値(e)の範囲と共に、この値範囲にわたる、2の複数の累乗の相対的な位置が示されている。図の上部には、3つの例示の浮動小数点値、X、Y、Zが設定され、それらの2進指数Eと後に続く仮数Tを示している。なお、各指数Eの全11ビットの内容が示されているが、図示を分かりやすくするため、52ビットの仮数の最も外側のビット値のみが示されている。それぞれのeの値によって指示される、これらの3つの浮動小数点値のそれぞれの値範囲の水平線に対する相対的な位置が、それぞれの暗黙的先行仮数ビットも示されて、図に示されている。これらの浮動小数点値のそれぞれをSWAccに変換する際には、以下にさらに詳細に説明する、w_mとw_lで示された2つの成分から形成されるSWAccの「純ウィンドウ」に仮数値の180ビットがコピーされる。浮動小数点値Zについてのこのコピー動作を図1に示す。なお、さらにまた図1に示すように、これらの180ビットのうちの上位52ビットもSWAccの「シャドー」部分にコピーされ、対応する指数値e(この例では、8)も示されている。
図2は、一実施形態において浮動小数点値の内部表現として用いられる、例示の倍精度SWAcc(図では「DSWAcc」と示される)を示す。このDSWAccは、256ビットのベクトルであると見ることができ、さらに、このDSWAccの2つの主要部分は64ビットのレーンと192ビットのレーンに対応するものとして示され、図10を参照して以下にさらに詳細に説明するように、このDSWAccがレーン式ベクトル処理回路によって処理される可能性を指している。なお、ここでは、そのようなレーン式ベクトル処理装置の64ビットのレーンは、そのようなDSWAccを処理するよう容易に構成されていてもよい。図2に示すDSWAccのフィールドは2つの主要部分、図1に示すような複数の連続したウィンドウの一続き(e値によって境界されている)において占有するウィンドウに対応して、左側にシャドーに関連するもの、右側に対応する浮動小数点値の仮数と指数に関連するもの、に分割されている。図示のウィンドウのフィールドは、主ウィンドウw_m(128ビット)、下位ウィンドウw_l(52ビット)、ウィンドウ延長部w_e(8ビット)であり、シャドーを表す2つの領域は、下位シャドーs_l(52ビット)とシャドー延長部s_e(8ビット)である。ここで用いられる用語としては、「全ウィンドウ」は{w_m、w_l、w_e}、「純ウィンドウ」は{w_m、w_l}、「全シャドー」が{s_l、s_e}、「純シャドー」が{s_l}である。また、このウィンドウのフィールドの一番右には指数表現e(4ビット)が、シャドー部の右側には特殊数部ni(4ビット)が示されている。さらに、ウィンドウのフィールドは仮数オーバーフローw_ovを有して示され、シャドー部はシャドーオーバーフローs_ovを有して示されている。最後に、DSWAccの2つの主要部分は、シャドー部のniフィールドに流れ込み、以下にさらに詳細に説明する、仮数オーバーフロー値w_ovと「isLarge」値とを結合するAND論理によって接続されて示されている。
DSWAccの成分の特定のビットサイズは他の形をとってもよく、DSWAccの別の可能なフォーマットを図3に示す。図3のDSWAccは、シャドー部は依然として64ビットのレーンを占める一方、全ウィンドウ部は、この例では、128ビットのレーンに対応するという点で、図2のDSWAccよりも小さいスペースを占める。もちろん、図3で使用されているDSWAccの表現は、図2のそれよりも小さい仮数しか保持できないが、これは、このようなDSWAccの処理や格納に利用可能なスペースと、装置出力の所望の精度とに依存する実装トレードオフを示している。別の符号化では、例えば、w_eとs_eのサイズによって、177から191ビットの32ウィンドウのDSWAcc実装が利用され得る。符号付き浮動小数点値の明示的な符号付きSWAcc表現のために符号ビットを含んでもよい符号化もある。binary32のためのSWAcc符号化は、23ビットのシャドーと20ビットのw_mを有する74ビットでなされ得る。81ビットの他の例としては、32ビットのw_m、23ビットのw_l、3ビットのeを使用する。他の符号化の例としては、後に続く仮数を20ビットまで縮小することで、20ビットのw_mでの64ビットの符号化、又は、2つ目の4ビットのシャドーでの16ビットのウィンドウを可能にするものがある。
フォーマットの別の具体的な例を、2つのシャドー部(w_s_aとw_s_b)があり、第1のシャドー部(w_s_a)は、次の高位のウィンドウ(指数値e+1)の下位ウィンドウ(w_l_aとw_l_b)と重複する現ウィンドウ(指数値e)のビットのシャドーコピーを保持するように提供され、第2のシャドー部(w_s_b)は、2番目の高位のウィンドウ(指数値e+2)の下位ウィンドウ(w_l_aとw_l_b)と重複する現ウィンドウ(指数値e)のビットのシャドーコピーを保持するように提供された、図4に示す。したがって、この中間表現のタイプは、2つのウィンドウのウィンドウシフトを行うことができる。
図5は、一実施形態におけるSWAccの生成と格納のための回路を概略的に示す。図の上部には、倍精度64ビット浮動小数点入力値が、SWAcc生成回路100によって受信されているその成分とともに、示されている。SWAcc生成回路100は、3つの構成要素、すなわち、仮数処理回路102、指数処理回路104、符号識別回路106を備えて概略的に示されている。なお、指数処理回路104は、仮数処理回路102が仮数フィールドの関連する内容を適切に判別できるように、仮数処理回路102につながる出力を有する。また、図5には、SWAcc成分であるw_m、w_l、w_e、e、s_l、s_e、niのための格納機能をストレージ部110乃至122に備えて概略的に示されている、SWAccストレージ108も示されている。SWAccストレージ108は、一つ又は複数のレジスタ、ローカルキャッシュ記憶装置、メモリ内のストレージなどであってもよい。なお、実際には、SWAccストレージ108は、本実施形態では、符号なし浮動小数点値、正の符号付き浮動小数点値、負の符号付き浮動小数点値に対応するSWAcc表現をそれぞれ格納するのに使用されるこれらのストレージ部110乃至122のそれぞれについて3つの別々の記憶素子を示す。これらの記憶素子のうちのどれが受信された浮動小数点値に対して用いられるかは、SWAcc生成回路100によって受信された浮動小数点値を調べることにより、符号識別回路106によって決定される。符号付き及び符号なし浮動小数点値のこの処理については、図11A、図11Bを参照して以下にさらに詳細に説明する。
一実施形態の(例えば、図9Aを参照して以下に説明する)装置は、2つのSWAccオペランドに対して総和演算を実行可能であり、これはある特定の実施形態では、図6に示す方法の工程に従って行われる。このフローは、2つのSWAccオペランドが総和されるステップ130から開始する。この例では、総和演算とは、実際には、一方のオペランドOP1が即値として与えられ、他方のオペランドOP0が累積総和値を格納する累積レジスタに保持される累積演算である。そして、ステップ132では、どちらか一方のオペランドが対応する浮動小数点値が無限大又は非数であることを示す特殊数値niについて設定されているかどうかの判定が行われる。もしそうなら、フローは、それに応じてOP0のniフィールドを設定するステップ134へと進み、ステップ136でフローを終了する。そうでなければ、フローは、一方のオペランドのe値が他方のオペランドのそれより1小さいかどうかの判定が最初に行われるステップ138に進む。もしそうなら、フローは、小さい方のオペランド(小さいe値を有するオペランド)に対して、このオペランドの表現を大きい方のオペランドのそれと同じウィンドウにシフトするためにウィンドウシフト演算を実行するステップ140へ進む。その後、フローはステップ148へと進む。しかしながら、上記2つのオペランドのe値が1だけ異なっているのではない場合は、ステップ142でそれらが1を超えて異なっているかどうかの判定が行われる。もしそうなら、フローは、大きい方のe値を有するオペランドの値を保持するようOP0を更新するステップ144に進み、この総和演算をステップ146で終了する。そうでなければ、ステップ148へ進み、OP0の全シャドー(s_l、s_e)をオペランドの全シャドーの総和で置き換え、ステップ150で、これらの全シャドーの総和によってシャドーオーバーフローが引き起こされたかどうかの判定が行われる。もしそうなら、フローは、このシャドーオーバーフローをシャドーオーバーフローレジスタ(s_ov)に格納するステップ152を経由して進む。その後、ステップ154で、OP0の全ウィンドウ(w_m、w_l、w_e)をオペランドの全ウィンドウの総和で置き換える。続いて、ステップ156で、オペランドの全ウィンドウの総和によって仮数オーバーフローが引き起こされたかどうかの判定が行われ、そうでなければ、ステップ158でフローを終了する。しかしながら、そのような仮数オーバーフローが発生した場合は、次の高位のウィンドウでそれを再表現するために、ステップ160でOP0に対してウィンドウシフトが行われる。そして、ステップ162でフローを終了する。
図7は、単一のウィンドウシフトを実行するために本技術の一実施形態において行われる一連の工程を示す。このフローは、単一のウィンドウシフトの対象であるSWAccオペランドが存在するステップ170から開始する。ステップ172で、w_mがゼロにクリアされ、ステップ174で、s_ov、s_l、s_eの値がw_m[0](すなわち、主ウィンドウw_mの最下位ビット)、w_l、w_eにそれぞれコピーされる。その後、ステップ176で、シャドー部の成分であるs_l、s_eの両方をゼロに設定する。ステップ178で、SWAccのeの値を1だけインクリメントする。続いて、ステップ180で、このeのインクリメントによって、そのオーバーフローが引き起こされたかどうかの判定が行われ、もしそうなら、フローは、このSWAccのni値を、このウィンドウシフトがSWAccを表現不可能な領域に移動させたことを示すよう、1に設定するステップ182を経由して進む。ステップ184でフローを終了する。
図1に示す3つの例示の浮動小数点値、X、Y、Zについての考察に戻ると、図8A及び図8Bは、SWAcc表現におけるこれら3つの値の総和の2つの異なる順番、すなわち、図8Aの(Z+Y)+Xと図8Bの(X+Y)+Zを示す。図8Aでは、ZとYのSWAcc表現の作成が最初の2つのラインで示され、ここで、それぞれは同じウィンドウ、すなわち、e=8で表されている。それぞれの主ウィンドウw_mの上位52ビットが下位シャドー部s_lにコピーされる。その後、これらのSWAcc表現が、SWAcc表現におけるZ+Yを得るように、図8Aの3番目のラインにおいて加算される。続いて、その次のラインでXのSWAcc表現が作成されるが、これによって、Xは総和Z+Yより1つ高位のウィンドウ(e=8と比較して、e=9)に位置することになることに留意する。したがって、Xと同じウィンドウ(すなわち、e=9)に表現するよう、Z+Y(eの低い方の値を有する値)に対して単一のウィンドウシフトが行われる。このように図8Aの最後から2番目のラインに示されるように、Z+Yの下位ウィンドウw_lへ下位シャドーs_lをコピーすることを含むシフトをされ、図8Aの最後のラインに示すように、(Z+Y)+Xを得るよう、Z+YとXとが総和される。図8Bは、(X+Y)+Zの計算を示し、ここで、この図は、最初にYをXのウィンドウ(e=9)に一致させ、次にZをX+Yのウィンドウ(e=9)に一致させるために、Yと(これとは別に)Zのウィンドウシフトを(明確には図示されていないが)含むことに留意すべきである。なお、具体的には、図8A及び図8Bのそれぞれの最後のラインに示される値、すなわち、(Z+Y)+Xと(X+Y)+Zは同じであるが、シャドーが(Z+Y)をe=9のウィンドウにシフトするステップで利用可能でなかったらこうなっていなかったであろう。
図9Aは、一実施形態における装置200を概略的に示す。装置200の主要構成要素は、SWAcc総和命令回路202、SWAcc生成回路204、SWAcc格納回路206、総和回路208である。装置200によるSWAcc総和命令の受信によって、2つのSWAccオペランドの総和の実行のための動作が構成される。実際には、図9Aの例で受信されるSWAcc総和命令は、SWAcc格納回路206に保持されているすでにSWAccフォーマット(OP0)の浮動小数点値に、命令内の(浮動小数点フォーマットの)即値OP1を加える累積命令である。SWAcc総和命令回路は、上述したように、即値OP1を、これをSWAcc表現に変換するSWAcc生成回路204に手渡す。どのように総和回路208の主要構成要素がこの累積/総和演算のために動作するのかを設定するために、SWAcc総和命令によって定義されるその他の制御情報は、総和回路208の制御回路210に送られる。
総和回路208の、制御回路210以外の主要構成要素は、指数比較回路212、ウィンドウシフター回路214、加算/総和生成回路216である。SWAcc生成回路204がOP1のSWAcc表現を生成すると、その指数値OP1(e)が指数比較回路212に送られる。同様に、OP1が蓄積されるSWAcc値(OP0)の指数値が(SWAcc総和命令回路からの制御信号の受信によって開始され、SWAcc格納回路206によって受信されて)SWAcc格納回路206から読み出される。また、このオペランドの指数値OP1(e)は、指数比較回路212にも送られる。指数比較回路212は、OP1(e)とOP0(e)の相対値を比較し、この比較結果がウィンドウシフター回路214と加算/総和生成回路216に送られる。OP1(e)とOP0(e)が同じである場合、ウィンドウシフトが行われる必要がなく、加算/総和生成回路216は、SWAcc生成回路204とSWAcc格納回路206からそれらがそれぞれ受信されると、OP1とOP0の値に対して加算処理を行うことができる。同様に、OP1(e)とOP0(e)とが1を超えて異なる場合、ウィンドウシフトは行われず、加算/総和生成回路は、大きい方の指数値を有するオペランドの値として単にSWAccの総和を生成し、格納するためにこれをSWAcc格納回路206に送り返す。全ウィンドウ(w_m、w_l、w_e)の(図6のステップ154を実行する)加算/総和生成回路216による総和によって仮数オーバーフローが生じた場合(ステップ156)、それを次の高位ウィンドウで再度表現するために、OP0に対してウィンドウシフトを行うようウィンドウシフター回路214が用いられる(ステップ160)。
しかしながら、指数比較回路212がオペランドの指数値が1だけ異なると判定した場合、ウィンドウシフター回路214によってウィンドウシフト演算が行われる。この演算を実行可能とするために、ウィンドウシフター回路214にはコピー回路218、クリア回路220、インクリメント回路222が備えられている。これらの構成要素は、基本的に、単一のウィンドウシフトを行うために図7に示す工程、コピー回路218によって実行されるステップ202、クリア回路220によって実行されるステップ204、206、インクリメント回路222によって実行されるステップ208をそれぞれ行う。なお、パスがインクリメント回路222から特殊数処理回路230とシンドローム処理回路232のそれぞれに通じている。eのインクリメント(インクリメント回路222によって実行されるステップ178)によってeのオーバーフローが生じた場合、特殊数処理回路230は、ウィンドウシフトによってこのオペランドが表現可能な範囲の外に移動されたことを示すよう、ウィンドウシフトが行われたオペランドのniの値を設定する。特殊数処理回路230は、加算/総和生成回路213に介入することによりniの設定を行い、その結果として、そのようなeのオーバーフローが生じる場合、ni値がそれに応じて設定されて、加算/総和生成回路216によりSWAcc総和が生成される。シンドローム処理回路232も、特にeが最大可能値を有する場合、eの値に関する情報をウィンドウシフター回路214から受信する。図2に示すようなDSWAccの例では、これは、e=0xFの場合であり、w_m[128]も設定された値は、64ビットの浮動小数点binary64フォーマットで表現するには大きすぎて、倍精度浮動小数点値に変換された場合、事実上無限大となる。にもかかわらず、正負のSWAcc値間の差によって最終結果が範囲内に戻されることもあるため、中間値として有効である。
なお、さらにこの例では、e=0xFの場合、(eのより高い値へのシフトは不可能なため)シャドーは冗長であって、したがって、図9Aに示す実施形態では、eのこの値は、SWAccにおいて、通常w_m、w_l、w_eしか含まない「全ウィンドウ」がs_l、s_e、niをさらに含む、すなわち、DSWAccでは64ビット大きいことを示すために用いられる。したがって、e!=0xFの場合、ni値は無限大又は非数しか意味しない。図2及び図3を参照すると、通常全ウィンドウ(w_m、w_l、w_e)と全シャドー(s_l、s_e)に対応するDWSAccの部分間の桁上げがどのように「isLarge」に依存するのか、すなわち、e=0xFの場合にisLargeの値が設定されることが分かる。図9Aは、このIsLargeの値がシンドローム処理回路232から加算/総和生成回路216に送られることを示している。
なお、シンドローム処理回路232は、オペランドの一つが特殊数であるときにシンドローム処理回路232に示すために用いられる、特殊数処理回路230からの入力を有する。特殊数値については全ウィンドウ、全シャドー、およびeの大部分が無意味であるので、シンドローム処理回路232は、ユーザが特殊数の原因を診断するのに有用な任意のシステム情報であってもよく、図9Aに示す例では、シンドローム処理回路232が受信するプログラムカウンタ(PC)値(又は、少なくとも、高い確率で命令を識別するのに十分なPCのビット、例えば、いくつかの最上位ビットと任意の静的な最下位ビットを削除してもよい)であるシンドローム情報を記憶するためにSWAccのこれらの部分を利用するよう手配されている。このシンドローム情報は、生成されたSWAcc値がこのシンドローム情報を伝達するよう、加算/総和生成回路216によって伝搬される。
装置200は、SWAcc値を取って、適切な浮動小数点フォーマット、例えば、上述したbinary64フォーマットに変換するSWAcc−浮動小数点変換回路234をさらに備えている。この変換は、基本的に、上述した浮動小数点値をSWAccフォーマットに変換ための処理の逆であり、したがって、その全ウィンドウをどれだけ(右に)シフトしなければならないか、と結果として生じるbinary64値におけるEの値を決定するために、そのセットに関する全ウィンドウの最上位ビットを見つける必要がある。
図9Bは、図9Aの装置200の別の構成を少し簡易化して示す。さらに、図9A及び図9Bで繰り返されている構成要素については同じ参照符号を用い、ここでは再度説明することはしていない。図9Aと図9Bの装置の重要な違いは、ウィンドウシフター回路214が図9Bでは、回路214A、214B、214Cで示すように、3つに分割されている点である。これらのウィンドウシフターのそれぞれを規定する論理は、比較的コンパクト、基本的にはマルチプレクサの群、であり、したがって、この方法はそれほど面積を必要としない。
図10は本技術を効率的に実装し得る、具体的には2つのSWAcc値の加算を行うための、レーン式処理回路を概略的に示す。図2及び図3を参照して上述したように、SWAcc値(図2及び図3の例ではDSWAcc値)の構成は、SWAcc値の要素がレーン式ベクトル処理回路のレーンと揃うよう定義され得る。図10に示すレーン式ベクトル処理回路300は、図2に示すようなDSWAccがこれら4つのレーンによって収容されるように、64ビットのレーンを4つ有している。したがって、SWAcc結果値の対応する64ビット部分を生成するために、各SWAccオペランドのそれぞれの64ビット部分は、レーン式ベクトル処理回路によって並列に処理され、対応する演算、例えば、上述した総和演算が、それぞれに対して並列に実行される。なお、図10に示すレーン式ベクトル処理回路300には、e値が処理されるレーンにおいてのみ指数e成分をゼロにするよう手配されたゼロ設定回路302がさらに備えられている。これらのe値の一つをゼロにすることにより、SWAccの結果におけるe値は、オペランドの一つからのゼロにされていないe値によって与えられることになるという点で、レーン式ベクトル処理回路で総和演算を実行するよう規定された総和機構を、さらに適応させることなく利用することができる。SWAcc総和に関しては、同一のe値を有するSWAccオペランドに対してこれが行われ、よって、SWAccの結果のe値が正しく設定される、すなわち、両入力オペランドのそれと同じであるということを想起すべきである。
図11Aは、符号付き浮動小数点値を取り扱うよう手配された、一実施形態における装置320を概略的に示す。これは、それぞれ、正のSWAcc(PSWAcc)値を蓄積するための、および負のSWAcc(NSWAcc)値を蓄積するための、別々のストレージを設けることで、図示された実施形態により可能とされている。装置320は、メモリからフェッチされた命令を復号する復号部322から制御信号を受信することで動作が構成される。制御信号は、装置のその他の構成要素の動作を今度は制御する制御部324によって装置320において受信される。図9Aにおける対応する構成要素204、208、234について説明したように一般に動作する、SWAcc生成回路326、総和回路328、変換回路330が示されている。装置320はまた、符号なしSWAccストレージ332、正の符号付きSWAccストレージ334、負の符号付きSWAccストレージ336も備えている。制御回路324は、累積オペランドの符号なし又は符号付きの性質を識別し、適切なストレージに関する伝達を発生させる。図5を参照すると、この符号識別機能は、符号識別回路106によって行われていることが示されている。本技術において、極性に依存した符号付きSWAccの蓄積のこの分類により、アキュムレータのe値が決して減少することはなく、ウィンドウシフトが一方向にのみ発生することが確実にされる。さらに、総和の順番への依存も排除する。これら3つの格納部332、334、336のうちの一つからのSWAcc値は、変換部330によって、図11Aの図示では外部メモリデバイスとして示される汎用ストレージ340にその後格納される浮動小数点値に変換されてもよい。汎用記憶装置340はまた、実行される命令の性質に依存して累積にオペランドを提供してもよい。正の符号付きSWAccおよび負の符号付きSWAccの値の別々の蓄積から最終的な結果を生成するために、負の符号付きSWAcc値が(総和回路328において)正の符号付きSWAcc値から減算される(それぞれは実際には絶対値であり、その極性を定義するのは格納位置であることが理解されよう)。あるいは、正負のSWAccを最初に浮動小数点値に変換して、その後減算してもよい。
図11Bは、例えば、適宜、図9A、図9B又は図11Aの装置によって実行され得る、本技術によって与えられる例示的な命令の組を示す。これらは、
SWAccフォーマットに変換すべき浮動小数点値と、所要の宛先を提供する、生成命令(i)、
総和すべき2つのSWAccオペランドを提供する、総和命令(ii)、
総和すべき浮動小数点値とSWAccオペランドを提供する(ただし、浮動小数点値は最初にSWAccフォーマットに変換される)、総和命令(iii)、
総和すべき2つの符号付きSWAccオペランドを提供する、総和命令(iv)、
総和すべき浮動小数点値と符号付きSWAccオペランドを提供する(ただし、浮動小数点値は最初にSWAccフォーマットに変換される)、総和命令(v)、
総和すべき符号付きSWAccオペランドと符号なしSWAccオペランドを、符号なしSWAccオペランドの符号を示す別の符号値とともに、提供する、総和命令(vi)、
を示している。
なお、命令(ii)乃至(vi)のそれぞれには、任意選択で、結果の宛先を設定してもよいが、そうでなければ、演算は2つのオペランドの2番目に対する累積として扱われる。本技術は、図11Bに示す例示的な命令に限定されるものではなく、本技術が適用可能なさまざまな他の例示的な命令が考えられる。そのような命令の一例をあげると、総和すべき2つの浮動小数点値をSWAccフォーマットで提供する(ただし、それぞれの浮動小数点値は最初にSWAccフォーマットに変換される)、総和命令として、「SWACCSUM(FP、FP、宛先)」のような命令が提供され得る。
図12は、上述の技術を実施するのに利用可能なタイプの汎用コンピュータデバイス400を概略的に示す。汎用コンピュータデバイス400は、バス422で互いに接続された、中央処理装置402、ランダムアクセスメモリ404、読み取り専用メモリ406を含む。また、すべて共通バス422で接続された、ネットワークインターフェースカード408、ハードディスクドライブ410、ディスプレイドライバ412及びモニタ414、キーボード418とマウス420とを有するユーザ入出力回路416もさらに備えている。動作時には、中央処理装置402は、例えば、ランダムアクセスメモリ404及び/又は読み取り専用メモリ406に格納され得るコンピュータプログラム命令を実行する。この場合、プログラム命令は、ハードディスクドライブ410からさらに読み出されてもよいし、ネットワークインターフェースカード408を介して動的にダウンロードされてもよい。実行された処理の結果は、接続されたディスプレイドライバ412とモニタ414を介してユーザに表示されてもよい。汎用コンピュータデバイス400の動作を制御するためのユーザ入力は、キーボード418やマウス420から、接続されたユーザ入出力回路416を介して受信されてもよい。コンピュータプログラムは多様な異なるコンピュータ言語で書くことが可能である。コンピュータプログラムは、局所的に記録媒体に格納されたり、汎用コンピュータデバイス400に動的にダウンロードされたりしてもよい。汎用コンピュータデバイス400は、適切なコンピュータプログラムの制御の下で動作する場合、SWAcc値の処理と記憶に関連する上記技術を実施することができ、当該技術を実施するための装置を形成するよう考慮されることができる。汎用コンピュータデバイス400のアーキテクチャは、大幅に変化する可能性があり、図12はそのほんの一例である。
要約すれば、本技術は、仮数部と、指数部と、シャドー部を有する中間表現を用いて浮動小数点値を処理することに関する。浮動小数点値の指数の下位部分が、仮数の表現が保持されるべき仮数部内の位置の範囲を定義する。指数部は、浮動小数点値のフォーマットの値範囲にわたる複数の連続したウィンドウのうちの選択されたウィンドウを示す、指数の上位部分の表現を保持する。仮数部の第1の部分が選択されたウィンドウに対応し、第2の部分が、隣接し且つ値範囲のより下位にある別のウィンドウへの重複部分に対応する。シャドー部は、第2の部分と大きさが対応する第1の部分のより上位の部分のコピーを保持する。シャドー部により、複数の値の総和が、値が総和される順番に関係なく、同じ結果を提供するように、選択されたウィンドウがシフトさせられる。
少なくとも一つの実施形態によれば、浮動小数点値の中間表現を処理するための回路であって、浮動小数点値の仮数の表現を保持する中間表現の仮数部を処理するための仮数処理回路であって、浮動小数点値の指数のより下位の部分が仮数の表現が保持されるべき仮数部内の位置の範囲を定義する仮数処理回路と、浮動小数点値のフォーマットの値範囲にわたる複数の連続したウィンドウのうちの選択されたウィンドウを示す浮動小数点値の指数のより上位の部分の表現を保持する中間表現の指数部を処理するための指数処理回路であって、仮数部の第1の部分が選択されたウィンドウに対応し、仮数部の第2の部分が、選択されたウィンドウに隣接し且つ値範囲のより下位にある別のウィンドウへの重複部分に対応する指数処理回路と、選択されたウィンドウに隣接し且つ値範囲のより上位にあるより上位のウィンドウに浮動小数点値の仮数の表現が移動される場合に、仮数部の第2の部分を埋めるための値を処理するためのシャドー処理回路とを備えた回路を備えた装置が提供される。
本願において、「するよう構成された」という語句は、装置の構成要素が定義された動作を実行可能な構成を有することを意味するものとして用いられる。これに関し、「構成」とは、ハードウェアやソフトウェアの配置や相互接続の方法を指す。例えば、装置は、定義された動作を提供する専用のハードウェアを有していたり、その機能を果たすようプロセッサやその他の処理装置がプログラミングされていてもよい。「するよう構成された」は、装置の構成要素が、定義された動作を提供するために何らか方法で変更される必要があるということを意味するものではない。
本明細書において添付の図面を参照して例示的な実施形態を詳細に説明してきたが、本発明はこれらの正確な実施形態に限定されるものではなく、添付の特許請求の範囲に規定されるように、本発明の範囲や精神から逸脱することなく、当業者によってさまざまな変更、追加及び改良を行えることを理解されたい。例えば、従属クレームの特徴の様々な組み合わせが、本発明の範囲を逸脱することなく独立クレームの特徴とともに行うことができるであろう。

Claims (34)

  1. 浮動小数点値の中間表現を処理するための回路であって、当該中間表現が、
    前記浮動小数点値の仮数の表現を保持するための仮数部であって、前記浮動小数点値の指数の下位部分が、前記仮数の前記表現が保持されるべき当該仮数部内の位置の範囲を定義する仮数部と、
    前記浮動小数点値のフォーマットの値範囲にわたる複数の連続したウィンドウのうちの選択されたウィンドウを示す、前記浮動小数点値の前記指数の上位部分の表現を保持するための指数部であって、
    前記仮数部の第1の部分が前記選択されたウィンドウに対応し、前記仮数部の第2の部分が、前記選択されたウィンドウに隣接し且つ前記値範囲において下位である更なるウィンドウへの重複に対応する、指数部と、
    前記仮数部とは別のシャドー部であって、前記浮動小数点値の前記仮数の前記表現が、前記選択されたウィンドウに隣接し且つ前記値範囲において上位である上位ウィンドウに移動されるときに、前記仮数部の前記第2の部分を埋めるための値を保持するためのシャドー部と、
    を備える、
    回路を備える装置。
  2. 前記中間表現の2つのオペランドに総和演算を行うための総和回路であって、当該総和演算が、
    それぞれが前記2つのオペランドの前記指数部からの第1の指数値と第2の指数値とを比較し、前記第1の指数値と前記第2の指数値とが1だけ異なるときに、前記小さい方のオペランドの前記選択されたウィンドウを、前記2つのオペランドのうちの大きい方のオペランドの前記選択されたウィンドウと一致するよう調整するために、前記2つのオペランドのうちの小さい方のオペランドにウィンドウシフト演算を行うことと、
    前記中間表現における総和値を生成するために、前記2つのオペランドの前記仮数部と前記シャドー部とをそれぞれ総和することと、
    を含む、
    総和回路をさらに備える、請求項1に記載の装置。
  3. 前記中間表現を格納する格納回路をさらに備え、前記2つのオペランドの一方を前記格納回路に格納し、前記2つのオペランドの他方が即被加数である、請求項2に記載の装置。
  4. 前記中間表現を格納する格納回路をさらに備え、前記総和演算は、前記格納回路に格納された前記2つのオペランドのうちの前記一つに関する累積演算である、請求項2に記載の装置。
  5. 前記ウィンドウシフト演算を行うために、前記総和回路が、
    前記小さい方のオペランドの前記シャドー部を、前記小さい方のオペランドの前記仮数部の前記第2の部分にコピーするためのコピー回路と、
    前記小さい方のオペランドの前記シャドー部をクリアし、且つ、前記小さい方のオペランドの前記仮数部の前記第1の部分をクリアするためのクリア回路と、
    前記小さい方のオペランドの前記指数値を1だけインクリメントするためのインクリメント回路と、
    を備える、請求項2〜4のいずれか一項に記載の装置。
  6. 前記総和回路が、仮数オーバーフローを引き起こす前記2つのオペランドの前記仮数部の前記総和に応答して、前記総和値の選択されたウィンドウを得るために、前記2つのオペランドの前記選択されたウィンドウを調整するように、前記総和値に対して前記ウィンドウシフト演算を行うための回路を有する、請求項2〜5のいずれか一項に記載の装置。
  7. 前記コピー回路が、シャドーオーバーフローを前記小さい方のオペランドの前記仮数部の前記第1の部分の最下位部分にコピーするための回路を有する、請求項6に記載の装置。
  8. 仮数オーバーフローストレージと、前記仮数オーバーフローを引き起こす前記2つのオペランドの前記仮数部の前記総和に応答して、仮数オーバーフローを前記仮数オーバーフローストレージに格納するための回路とをさらに備える、請求項6又は7に記載の装置。
  9. 前記総和回路が、前記2つのオペランドのうちの前記大きい方のオペランドを前記中間表現における総和値として用いて前記総和演算を終了するよう、1を超えて異なる前記第1の指数値と前記第2の指数値に応答する、請求項2又は3に記載の装置。
  10. 前記中間表現が、特殊数指標を格納するための特殊数部を備え、前記特殊数指標が、前記浮動小数点値が無限大又は非数であるときに、特殊値を有する、請求項1〜9のいずれか一項に記載の装置。
  11. 前記総和回路が、前記総和値における特殊数指標を前記特殊値に設定して前記総和演算を終了するように、前記特殊値が設定されている前記特殊数指標に応答する特殊数処理回路を備える、請求項2〜9のいずれか一項を引用する、請求項10に記載の装置。
  12. 前記インクリメント回路が、前記総和値において前記特殊数指標を前記特殊値に設定するように、前記総和値の前記指数部における指数オーバーフローを引き起こす前記総和値に前記ウィンドウシフト演算を実行することに応答する、請求項5を引用する、請求項10又は11に記載の装置。
  13. シンドローム情報が、前記仮数部、前記シャドー部、前記特殊数部の少なくとも一つに格納させるように、前記特殊数が設定された前記特殊数指標に応答するシンドローム回路をさらに備え、前記シンドローム情報が、前記無限大または前記非数の原因を示す、請求項10〜12のいずれか一項に記載の装置。
  14. 前記シンドローム情報が、前記無限大または前記非数を生じさせた命令のプログラムカウンタの少なくとも一部を含む、請求項13に記載の装置。
  15. 前記シンドローム情報が、命令の一群を示すプログラムカウンタの少なくとも一部を含み、前記一群の中の一命令が、前記無限大または前記非数を生じさせたものである、請求項13に記載の装置。
  16. レーン式ベクトル処理回路をさらに備え、前記仮数部及び指数部の長さが前記レーン式ベクトル処理回路のレーンサイズの第1の倍数に対応し、前記シャドー部の長さが前記レーン式ベクトル処理回路の前記レーンサイズの第2の倍数に対応する、請求項1〜15のいずれか一項に記載の装置。
  17. 前記仮数部の前記第2の部分の長さと、前記指数部の前記長さが前記レーンサイズよりも小さく、前記仮数部はさらに仮数延長部を含み、前記第2の部分の前記長さと、前記指数部の前記長さと、前記仮数延長部の長さとの合計が前記レーンサイズの前記長さに等しくなる、請求項16に記載の装置。
  18. 前記総和回路が、前記指数部が前記レーン式ベクトル処理回路のレーン内にあるときに、前記第1の指数値及び前記の第2指数値のいずれか一つをゼロにする回路を備える、請求項2を引用する、請求項16又は17に記載の装置。
  19. 前記浮動小数点値の前記中間表現が符号付き中間表現であり、正の値の正の中間表現を処理するための且つ負の値の負の中間表現を処理するための回路をさらに備える、請求項1〜18のいずれか一項の請求項に記載の装置。
  20. 前記総和回路が、結果の符号付き中間表現を生成するように、符号付き浮動小数点値と入力される符号付き中間表現との前記2つのオペランドとしての受信に応答し、ここで、
    前記符号付き浮動小数点値が正の浮動小数点数であるときに、前記結果の符号付き中間表現の正の成分が、前記入力される符号付き中間表現の正の成分と前記符号付き浮動小数点値の絶対値との総和値を保持し、
    前記符号付き浮動小数点値が負の浮動小数点数であるときに、前記結果の符号付き中間表現の負の成分が、前記入力される符号付き中間表現の負の成分と前記符号付き浮動小数点値の絶対値との総和値を保持する、
    請求項2を引用する、請求項18に記載の装置。
  21. 前記総和回路が、結果の符号付き中間表現を生成するように、2つの入力される符号付き中間表現の前記2つのオペランドとしての受信に応答し、ここで、
    前記結果の符号付き中間表現の正の成分が、前記2つの入力される符号付き中間表現の正の成分の総和値を保持し、
    前記結果の符号付き中間表現の負の成分が、前記2つの入力される符号付き中間表現の負の成分の総和値を保持する、
    請求項2を引用する、請求項18に記載の装置。
  22. 前記総和回路が、前記結果の符号付き中間表現の前記正の成分を前記結果の符号付き中間表現の前記負の成分と、前記正の成分の前記絶対値から前記負の成分の前記絶対値を引くことにより、結合するための回路をさらに備える、請求項18を引用する、請求項21に記載の装置。
  23. 前記出力される小数点値の仮数を得るように、前記仮数部の最上位の設定されたビット位置に依存して前記仮数部の内容を選択し、前記最上位の設定されたビット位置に依存して前記中間表現の前記指数部から前記出力される浮動小数点値の指数を生成することにより、前記中間表現を出力される浮動小数点値に変換するための変換回路をさらに備える、請求項1〜22のいずれか一項に記載の装置。
  24. 前記仮数部から前記シャドー部への桁上げを伝搬するように、最大値を有する前記指数部に応答する、桁上げ回路をさらに備え、前記指数部が前記最大値を有するときは、前記仮数部と前記シャドー部とが、前記浮動小数点値の前記仮数を格納するように、連結される、請求項2に記載の、又は請求項2を引用する請求項3〜23のいずれか一項に記載の装置。
  25. 前記指数部が前記最大値を有するときに、前記仮数部、前記シャドー部、前記特殊数部のうちの少なくとも2つが、前記浮動小数点値の前記仮数を格納するように、連結される、請求項2に記載の、又は請求項2を引用する請求項3〜24のいずれか一項に記載の装置。
  26. 前記仮数部の第3の部分が、前記別のウィンドウに隣接し且つ値範囲のより下位であるさらに別のウィンドウへの別の重複に対応する、請求項1〜25のいずれか一項に記載の装置。
  27. 前記装置が、格納回路に前記浮動小数点値の前記中間表現を格納させるように、前記浮動小数点値を特定する命令に応答する、請求項1〜26のいずれか一項に記載の装置。
  28. 前記装置が、前記総和演算を実行するように、前記即被加数を特定する総和命令に応答する、請求項3に記載の、又は請求項3を引用する請求項4〜27のいずれか一項に記載の装置。
  29. コンピュータデバイス上で実行されると、当該コンピュータデバイスを、請求項1〜28のいずれか一項に記載の装置として動作させるコンピュータプログラムを一時的でない方法で格納したコンピュータプログラム製品。
  30. コンピュータデバイス上で実行されると、当該コンピュータデバイスを、請求項1〜28のいずれか一項に記載の装置として動作させるソフトウェア。
  31. 浮動小数点値の中間表現を格納する方法であって、
    中間表現の仮数部に浮動小数点値の仮数の表現を格納する工程であって、前記浮動小数点値の指数の下位部分が前記仮数の前記表現が格納されるべき前記仮数部内の位置の範囲を定義する、格納する工程と、
    前記浮動小数点値のフォーマットの値範囲にわたる複数の連続したウィンドウのうちの選択されたウィンドウを示す、前記浮動小数点値の前記指数の上位部分の表現を前記中間表現の指数部に格納する工程であって、
    前記仮数部の第1の部分が前記選択されたウィンドウに対応し、前記仮数部の第2の部分が、前記選択されたウィンドウに隣接し且つ前記値範囲のより下位である別のウィンドウへの重複に対応する、格納する工程と、
    前記浮動小数点値の前記仮数の前記表現が、前記選択されたウィンドウに隣接し且つ前記値範囲のより上位である上位ウィンドウに移動されるときに、前記仮数部の前記第2の部分を埋めるための値を、前記仮数の前記表現とは別に格納する工程と、
    を含む方法。
  32. コンピュータデバイス上で実行されると、請求項31に記載の方法を前記コンピュータデバイスに実行させるコンピュータプログラムを一時的でない方法で格納したコンピュータプログラム製品。
  33. コンピュータデバイス上で実行されると、請求項31に記載の方法を前記コンピュータデバイスに実行させるソフトウェア。
  34. 浮動小数点値の中間表現を格納するための手段であって、
    当該中間表現の仮数部に当該浮動小数点値の仮数の表現を格納するための手段であって、当該浮動小数点値の指数の下位部分が当該仮数の当該表現が格納されるべき当該仮数部内の位置の範囲を定義する、格納するための手段と、
    当該浮動小数点値のフォーマットの値範囲にわたる複数の連続したウィンドウのうちの選択されたウィンドウを示す、当該浮動小数点値の前記指数の上位部分の表現を当該中間表現の指数部に格納するための手段であって、
    前記仮数部の第1の部分が前記選択されたウィンドウに対応し、前記仮数部の第2の部分が、前記選択されたウィンドウに隣接し且つ前記値範囲の下位である別のウィンドウへの重複に対応する、格納するための手段と、
    当該浮動小数点値の前記仮数の前記表現が、前記選択されたウィンドウに隣接し且つ前記値範囲のより上位である上位ウィンドウに移動されるときに、前記仮数部の前記第2の部分を埋めるための値を、前記仮数の前記表現を格納するための前記手段とは別に格納するための手段と、
    を含む、
    手段を備える装置。
JP2017565242A 2015-06-24 2016-05-17 浮動小数点値の処理のための装置及び方法 Active JP6886927B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1511131.3A GB2539881B (en) 2015-06-24 2015-06-24 An apparatus and method for processing floating point values
GB1511131.3 2015-06-24
PCT/GB2016/051421 WO2016207595A1 (en) 2015-06-24 2016-05-17 An apparatus and method for processing floating point values

Publications (2)

Publication Number Publication Date
JP2018524706A JP2018524706A (ja) 2018-08-30
JP6886927B2 true JP6886927B2 (ja) 2021-06-16

Family

ID=53784461

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017565242A Active JP6886927B2 (ja) 2015-06-24 2016-05-17 浮動小数点値の処理のための装置及び方法

Country Status (5)

Country Link
US (1) US10503472B2 (ja)
JP (1) JP6886927B2 (ja)
CN (1) CN107743613B (ja)
GB (1) GB2539881B (ja)
WO (1) WO2016207595A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10747501B2 (en) * 2017-08-31 2020-08-18 Qualcomm Incorporated Providing efficient floating-point operations using matrix processors in processor-based systems
US11409356B1 (en) * 2019-11-20 2022-08-09 Mentium Technologies Inc. Using data correlation to reduce the power consumption of signal processing systems without affecting the precision of computation

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61224035A (ja) * 1985-03-29 1986-10-04 Nec Corp 演算処理装置
US5663161A (en) * 1995-02-17 1997-09-02 The Research Foundation Of State University Of New York Anti-viral triaza compounds
US5954790A (en) * 1996-10-17 1999-09-21 Samsung Electronics Company, Ltd. Method and apparatus for parallel prediction and computation of massive cancellation in floating point subtraction
US6386644B2 (en) * 2000-08-08 2002-05-14 Kun Teng Industry Co., Ltd. Bicycle hub provided with a seal member for preventing entrance of dust
US7330864B2 (en) * 2001-03-01 2008-02-12 Microsoft Corporation System and method for using native floating point microprocessor instructions to manipulate 16-bit floating point data representations
US7191202B2 (en) 2001-05-25 2007-03-13 Sun Microsystems, Inc. Comparator unit for comparing values of floating point operands
US6779013B2 (en) * 2001-06-04 2004-08-17 Intel Corporation Floating point overflow and sign detection
US6889241B2 (en) * 2001-06-04 2005-05-03 Intel Corporation Floating point adder
US6988119B2 (en) * 2001-06-29 2006-01-17 Intel Corporation Fast single precision floating point accumulator using base 32 system
US7080364B2 (en) * 2003-04-28 2006-07-18 Intel Corporation Methods and apparatus for compiling a transcendental floating-point operation
US7720900B2 (en) * 2005-09-09 2010-05-18 International Business Machines Corporation Fused multiply add split for multiple precision arithmetic
US8073892B2 (en) * 2005-12-30 2011-12-06 Intel Corporation Cryptographic system, method and multiplier
JP4413198B2 (ja) * 2006-03-23 2010-02-10 富士通株式会社 浮動小数点データの総和演算処理方法及びコンピュータシステム
CN101174200B (zh) * 2007-05-18 2010-09-08 清华大学 一种具有五级流水线结构的浮点乘加融合单元
CN100583024C (zh) * 2008-01-04 2010-01-20 清华大学 一种用于浮点除法和平方根运算的预处理电路结构
KR101699910B1 (ko) * 2010-03-04 2017-01-26 삼성전자주식회사 재구성 가능 프로세서 및 그 제어 방법
US9213524B2 (en) 2013-09-30 2015-12-15 Freescale Semiconductor, Inc. Method and device for generating floating-point values

Also Published As

Publication number Publication date
WO2016207595A1 (en) 2016-12-29
US20180173497A1 (en) 2018-06-21
CN107743613B (zh) 2022-04-26
GB2539881B (en) 2018-07-25
GB201511131D0 (en) 2015-08-05
GB2539881A (en) 2017-01-04
JP2018524706A (ja) 2018-08-30
US10503472B2 (en) 2019-12-10
CN107743613A (zh) 2018-02-27

Similar Documents

Publication Publication Date Title
KR102447636B1 (ko) 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법
CN107077416B (zh) 用于以选择性舍入模式进行向量处理的装置和方法
CN108351761B (zh) 将使用冗余表示的第一和第二操作数相乘的方法和装置
EP2788862B1 (en) Apparatus and method for rounding a floating-point value to an integral floating-point value
JP6882281B2 (ja) ベクトルの処理のためのレーン位置情報
JP7096828B2 (ja) 入力オペランド値を処理するための装置及び方法
US11119729B2 (en) Alignment shifting and incrementing to determine a rounded result of adding first and second floating-point operands
JP6803381B2 (ja) 重複ビットを使用する数値の冗長表現
JP6886927B2 (ja) 浮動小数点値の処理のための装置及び方法
US10459688B1 (en) Encoding special value in anchored-data element
JP6877812B2 (ja) 重複伝搬演算
US8700688B2 (en) Polynomial data processing operation
US10963245B2 (en) Anchored data element conversion
TWI822952B (zh) 迭代運算的處理
US8219604B2 (en) System and method for providing a double adder for decimal floating point operations
US10936285B2 (en) Overflow or underflow handling for anchored-data value
JP2023546454A (ja) 高精度アンカー暗黙処理

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200804

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20201023

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20201228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210204

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210517

R150 Certificate of patent or registration of utility model

Ref document number: 6886927

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250