JP5731937B2 - ベクトル浮動小数点引数削減 - Google Patents

ベクトル浮動小数点引数削減 Download PDF

Info

Publication number
JP5731937B2
JP5731937B2 JP2011202971A JP2011202971A JP5731937B2 JP 5731937 B2 JP5731937 B2 JP 5731937B2 JP 2011202971 A JP2011202971 A JP 2011202971A JP 2011202971 A JP2011202971 A JP 2011202971A JP 5731937 B2 JP5731937 B2 JP 5731937B2
Authority
JP
Japan
Prior art keywords
value
components
exponent
integer
floating point
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
JP2011202971A
Other languages
English (en)
Other versions
JP2012069116A (ja
JP2012069116A5 (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 JP2012069116A publication Critical patent/JP2012069116A/ja
Publication of JP2012069116A5 publication Critical patent/JP2012069116A5/ja
Application granted granted Critical
Publication of JP5731937B2 publication Critical patent/JP5731937B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • 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/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/552Powers or roots, e.g. Pythagorean sums
    • G06F7/5525Roots or inverse roots of single operands
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/552Indexing scheme relating to groups G06F7/552 - G06F7/5525
    • G06F2207/5521Inverse root of a number or a function, e.g. the reciprocal of a Pythagorean sum
    • 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

Landscapes

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

Description

本発明は、データ処理システムの分野に関する。より具体的には、本発明は、ベクトル浮動小数点演算を提供するデータ処理システムの分野に関する。
ベクトル浮動小数点ベクトルVにベクトル正規化操作を行って、長さ1であり、入力ベクトルVと同一方向に点を有する正規化ベクトルを生成することが知られている。このベクトル正規化は、以下の計算シーケンスとして行うことができる。
1. 入力ベクトルVに関して、入力ベクトルVのドット積をそれ自体で計算する
2. ドット積の逆数平方根を計算する
3. 入力ベクトルVの各成分に逆数平方根値を掛ける
上記の数学的演算のシーケンスは、理想的な数学的実数に対してはうまく機能するが、浮動点数が、制限された範囲内、かつ制限された精度で数学的実数を表すに過ぎないという問題がある。特定の問題において、上述されるベクトル正規化技術の文脈では、ドット積は、オーバーフローまたはアンダーフローする場合があり、少なくとも最終結果における精度の喪失、および許容できないエラーをもたらす可能性がある。
この問題に対応する1つのアプローチは、最大値を有する入力ベクトルVのベクトル成分を識別し、次に、他のベクトル成分をこの値で割る一方で、最大値を有するベクトル成分を大きさ1に設定することであろう。このアプローチの問題は、追加の浮動小数点の除算をもたらし、処理速度を低減し、電力消費を増大させることである。この問題に対応する別のアプローチは、ベクトル正規化手順内で、入力ベクトルVよりも高い精度で中間計算を行うことであろう(例えば、入力ベクトルVが単精度浮動小数点数である場合、中間計算は、倍精度浮動小数点数を用いて行われてもよい)。しかしながら、このアプローチは信頼できるが、これも低速で高い電力消費をもたらし、より精度の高い浮動小数点演算のためのサポートが得られることを前提とする。
1つの態様から見ると、本発明は、データを処理するための装置を提供し、
データ値に処理演算を行うように構成される処理回路と、
該処理回路に連結され、かつプログラム命令をデコードして、該処理回路を制御するための制御信号を生成し、該プログラム命令によって特定される処理演算を行うように構成されるデコーダ回路と、を備え、
該デコーダ回路が、引数削減命令に応答して、該処理回路を制御するための制御信号を生成し、複数の成分を有するベクトル浮動小数点値に処理演算を行い、該複数の成分のそれぞれが、整数指数値および仮数値を含み、該処理演算が、
該複数の成分の最大整数指数値Bを識別することと、
(B+C)が第1の所定値Edotmax未満であり、かつ、(B+C)が第2の所定値Edotminよりも大きくなるように、整数値である指数シフト値Cを選択することと、
前記複数の成分のそれぞれに対して、前記指数シフト値Cが非ゼロである場合は、前記指数シフト値Cを前記成分の整数指数値に加算して、前記複数の結果の成分のうちの1つを生成することと、によって得られるものと同一の複数の結果の成分を生成する。
本発明は、上記問題を認識し、かつこれに対応する。本発明は、スケーリングされたベクトル成分の生成を含む、引数削減命令を提供し、これに対する指数値はすべて、同一の因子によってスケーリングされ、スケーリング後の最大の成分値が安全範囲内にあるようにする。この安全範囲は、最大の成分が、それ自体で乗じられるときに、使用されている浮動小数点表示をオーバーフローもアンダーフローもしないような範囲であり得る(かつ、すべてのベクトルのスカラー積が、浮動少数点表示をオーバーフローしない幾つかの長いベクトルを有する)。したがって、第1の所定値および第2の所定値の選択は、そのようなアンダーフローまたはオーバーフローを回避するように設定され得る。しかしながら、引数削減命令を使用して、異なる制限条件が第1の所定値および第2の所定値と関連付けられ得る、他の潜在的なハザードを回避し得ることが可能である。
オフセット−127が保存された指数値に適用される符号付き単精度浮動小数点値の場合、第1の所定値は190に設定され得、第2の所定値は64に設定され得る。
アンダーフローは、引数削減命令の結果の成分内で起こり得る。実施例として、入力ベクトルは、1つの大きいベクトル成分と、2つのはるかに小さいベクトル成分とを含み得る。大きいベクトル成分が再度スケーリングされ、それ自体で乗算されるときにオーバーフローを回避し、次に、このスケーリングが、小さいベクトル成分内でアンダーフローをもたらす可能性がある。この場合、アンダーフローの対象となっているベクトル成分をゼロ値と置き換えてもよい。実際、入力ベクトルは、大きい成分によって非常に強く支配されているため、特に、正規化ベクトルのドット積が考慮される場合、より小さいベクトル内のアンダーフローと関連付けられる精度の喪失は、ごくわずかである。
所望の範囲内に入るように指数シフト値Cが選択され得る、多くの異なる方法があることを理解されたい。また、指数シフト値Cに対する単一の許容される値はなく、むしろ、一連の許容される値があることも理解されたい。引数削減命令の実装が、低レベルの回路および電力オーバーヘッドを招くことが望ましい。そのような望ましい実装の一実施例は、入力ベクトルの成分のそれぞれに対して、指数値の高次部分が抽出され、次に、これらの高次指数部分のうちの最大部分が識別される。識別された高次部分は、次に、最大の可能な高次部分よりも小さい2の因数である、所定値から差し引かれて、次に、各成分の高次部分のそれぞれに加算される値を生成し得る。この手技は、第1の所定値と第2の所定値との間にある指数シフト値を提供するという要件を満たしながら、計算的に単純であり、比較的小さい回路および電力オーバーヘッドで実装することができる。
この実装を利用する際に、派生した値を高次部分のうちのいずれかに加算した結果が、得られる高次部分においてアンダーフローをもたらし、加算された値が負である場合は、これは、結果の成分のうちの対応する1つをゼロの値と置き換えることによって、適切な精度レベルで処理され得る。
引数削減命令の信頼性を向上させるために、非数成分または無限大値のいずれかである入力浮動小数点ベクトルを形成する成分のうちのいずれかに応答して、十分に定義された適切な動作を有することが望ましい。複数の成分のうちのいずれかが、浮動小数点非数である場合、引数削減命令は、結果の成分のすべてが浮動小数点非数に設定されるという結果を生じる。入力浮動小数点ベクトルの成分のうちのいずれかが浮動小数点無限大値である場合、引数削減命令は、無限大成分に対応する任意の成分を大きさ1の値に設定するという結果、および浮動小数点無限大の符号のそれに適合する符号を生成する一方で、無限大値に対応しないすべての残りの結果の成分は、大きさゼロの浮動小数点値を有するように設定される。
入力成分から適切にスケーリングされた結果の成分を生成するとともに、引数削減命令は、他の結果の値も生成し得ることを理解されたい。特定の実装は、結果の成分以外に、引数削減命令からの追加の結果を伝えるために使用可能な追加の結果のチャネルを有してもよく、これらの追加の結果は、別の命令を実行する必要性を回避できる場合、全体処理効率を向上し得る。そのような状況の一実施例は、引数削減命令が、複数の結果成分のスカラー積によってもたらされるものと同一の値を有する結果のスカラー積も生成する場合である。
前述したように、引数削減命令に関する1つの例示的使用例は、複数の正規化成分で形成される正規化ベクトル浮動小数点値を生成する場合である。引数削減命令は、引数削減命令に続いて、結果の成分のスカラー積によって得られるものと同一の値を有する、結果のスカラー積を生成する機能を果たす、1つまたは複数のさらなる命令のシーケンスによって、その結果の成分を生成することによって、これを促進し、スカラー積の逆数平方根を生成して、各結果の成分に対して、結果の成分に逆数平方根を掛けることによって、対応する正規化された結果の成分を生成する。
引数削減命令は、処理装置の任意の形態、例えば、汎用プロセッサで提供され得るが、ベクトル正規化がしばしば必要とされるグラフィクス処理ユニット内に特定のユーティリティを有する。
別の態様から見ると、本発明は、データを処理するための装置であって、
データ値に処理演算を行うための処理手段と、
プログラム命令をデコードして、該処理回路を制御するための制御信号を生成し、該プログラム命令によって特定される処理演算を行うデコーダ手段と、を備え、
該デコーダ手段が、引数削減命令に応答して、該処理手段を制御するように制御信号を生成し、複数の成分を有するベクトル浮動小数点値に処理演算を行い、該複数の成分のそれぞれが、整数指数値および仮数値を含み、該処理演算が、
該複数の成分の最大整数指数値Bを識別することと、
(B+C)が第1の所定値Edotmax未満であり、かつ(B+C)が第2の所定値Edotminよりも大きくなるように、整数値である指数シフト値Cを選択することと、
該複数の成分のそれぞれに対して、該指数シフト値Cが非ゼロである場合は、該指数シフト値Cを該成分の整数指数値に加算して、該複数の結果の成分のうちの1つを生成することと、によって得られるものと同一の複数の結果の成分を生成することを含む、装置を提供する。
さらなる態様から見ると、本発明は、
引数削減命令に応答して、複数の成分を有するベクトル浮動小数点に処理演算を行うステップであって、該複数の成分のそれぞれは、整数指数値と仮数値とを含み、該処理演算は、
該複数の成分の最大整数指数値Bを識別
することと、
(B+C)が第1の所定値Edotmax未満であり、(B+C)が第2の所定値Edotminよりも大きくなるように、整数値である指数シフト値Cを選択することと、
該複数の成分のそれぞれに対して、該指数シフト値Cが非ゼロである場合は、該指数シフト値Cを該成分の整数指数値に加算して、該複数の結果の成分のうちの1つを生成することと、によって得られるものと同一の複数の結果の成分を生成するステップを含む、データを処理する方法を提供する。
さらなる態様から見ると、本発明は、持続性形態を有し、プログラム命令に応答し、かつ、データ処理を行うように、データ処理装置を制御するためのコンピュータプログラムを保存するコンピュータプログラム製品であって、該コンピュータプログラムは、複数の成分を有するベクトル浮動小数点値に処理演算を行うように、該データ処理装置を制御するための引数削減命令を含み、該複数の成分のそれぞれが、整数指数値と仮数値とを含み、該処理演算が、
該複数の成分の最大整数指数値Bを識別することと、
(B+C)が第1の所定値Edotmax未満であり、かつ、(B+C)が第2の所定値Edotminよりも大きくなるように、整数値である指数シフト値Cを選択することと、
該複数の成分のそれぞれに対して、該指数シフト値Cが非ゼロである場合は、該指数シフト値Cを該成分の整数指数値に加算して、該複数の結果の成分のうちの1つを生成することと、によって得られるものと同一の複数の結果の成分を生成することと、を含む、コンピュータプログラム製品を提供する。
本発明の別のクラスの可能な実装は、汎用コンピュータが、ソフトウェアによって制御され、上述される引数削減命令の実行を支持する、仮想マシン実行環境を提供する、仮想マシン実装であることを理解されたい。
本発明の上記および他の目的、特徴、および利点は、付随する図面と併せて読まれるべき例証的実施形態の以下の詳細な説明から明らかとなるであろう。
引数削減命令の実行を支持するグラフィクス処理ユニットコアを概略的に説明する。 ベクトル正規化演算を説明する図である。 単精度浮動小数点数の形式を概略的に説明する図である。 第1の形態の引数削減命令の作用を概略的に説明する図である。 第2の形態の引数削減命令の作用を概略的に説明する図である。 引数削減命令を実行するときに、適切なレベルの指数スケーリングを選択および適用する1つの方法を概略的に説明するフロー図である。 非数例外処理を概略的に説明する図である。 無限大値例外処理を概略的に説明するフロー図である。 引数削減命令を含むプログラム命令のシーケンスを使用して行われる、ベクトル正規化を概略的に説明するフロー図である。 本手技の仮想マシン実装を提供するために使用され得る種類の汎用コンピュータを概略的に説明する図である。
図1は、メモリ4に連結されるグラフィクス処理ユニットコア2を示す。グラフィクス処理ユニットコア2は、浮動小数点演算パイプライン6、浮動小数点レジスタ8のバンク、および命令デコーダ10を含む。図1におけるグラフィクス処理ユニットコア2の図解は、簡素化されていること、および実際に、多くのさらなる処理素子、例えば、ロードストアパイプライン、テクスチャリングパイプライン、キャッシュメモリ等が提供されることを理解されたい。
メモリ4は、グラフィクスプログラム12およびグラフィクスデータ14を保存する。実際に、グラフィクスプログラム12からのプログラム命令は、グラフィクス処理ユニットコア2によってフェッチされ、命令デコーダ10に供給される。命令デコーダ10は、これらのプログラム命令をデコードし、浮動小数点演算パイプライン6および浮動小数点レジスタ8のバンクの形態の処理回路に適用される制御信号16を生成し、この処理回路6、8を構成および制御して、関与するプログラム命令によって特定される所望の処理演算を行う。この処理演算は、浮動小数点演算パイプライン6による操作のために、浮動小数点レジスタ8のバンクにロードおよび保存される、グラフィクスデータ14からのデータ値に関して行われる。
当業者によって理解されるように、受信されるプログラム命令に応じて、命令デコーダ10は、制御信号16を生成して、特定の所望の処理演算を行うように処理回路6、8を構成する。これらの処理演算は、多様な異なる形態、例えば、乗算、加算、論理演算、先行する演算のベクトル変異等を取り得る。本手技に従って、命令デコーダ10は、メモリ4からグラフィクスプログラム12の一部としてフェッチされた引数削減命令に応答して、上述されるような処理演算を行う。これらの所望の処理演算を行う回路は、多様な異なる形態を有し得、本手技は、これらの異なる形態のすべてを包含することを理解されたい。特に、特定の数学的演算のシーケンスを参照して説明される結果の値は、同一の結果の値を生成する数学的演算の異なるセットに従うことによって生成され得る。これらの変形は、本手技内に含まれる。
図2は、ベクトル正規化演算を説明する。入力ベクトル18は、正規化演算の対象となり、大きさ1の正規化されたベクトル20を生成する。これは、ライン22において示されるように、入力ベクトル18を入力ベクトルの大きさで割ることによって達成され得る。入力ベクトルの大きさは、順に、入力ベクトル18のドット積の平方根として計算され得る。これは、ライン24において説明される。このアプローチの問題は、入力ベクトル18のドット積が、浮動小数点アンダーフローまたは浮動小数点オーバーフローの対象となり得ることである。これらのいずれかが起こる場合、少なくとも最終結果における精度の喪失またはオーバーフローもしくはアンダーフローに起因するエラーの可能性がある。
本手技は、入力ベクトルがスケーリングされる場合、ライン24に示される式の分子および分母が、いずれも同一因子によってスケーリングされるという認識を利用する。入力ベクトル18に適用され得る、数学的に便宜的であり、低電力、低オーバーヘッド形態のスケーリングは、2のべき乗による入力ベクトル18のスケーリングに対応する指数値の変化である。このスケーリングは、正規化ベクトル20に影響しないため、選択されるスケーリング値は、オーバーフローまたはアンダーフローからドット積を保護するようなものであり得る。したがって、利用される指数シフト値C(入力ベクトル成分すべての指数値に加算されるか、または除算される数)は、引数削減命令の対象となっているベクトルから計算されるドット積が、最終ドット積結果に対して、悪影響とともに、オーバーフローまたはアンダーフローをもたらさないことを保証するような範囲内で選択され得る。
図3は、単精度浮動小数点数の形式を概略的に説明する。この形式は、当業者には身近である。特に、浮動小数点単精度数は、符号を表す単一ビットS、指数値(単精度においてオフセット127を対象とする)を表す8ビットE、および、23−ビット仮数値M(仮数内には暗黙的に先導する1がある)で形成される32−ビット数である。以下で論じられる実施例は、単精度浮動小数点数に作用する。しかしながら、本手技は、そのような単精度浮動小数点数に制限されず、例えば、必要に応じて、倍精度浮動少数点数(または他の精度浮動少数点数と使用されてもよい。さらに、浮動小数点が表される特定の形式は異なってもよいが、図3に示される形式が広く使用される。
図4は、引数削減命令FREDUCE4の第1の実施例を説明する。この命令は、4成分入力ベクトルを取り、4つの結果の成分を有する出力を生成する。結果の成分のそれぞれは、Cの指数値シフトを受けている。これは、入力成分のそれぞれに2の値を掛けることに対応する。
この引数削減命令においてCに選択される値は、許容範囲内で異なり得る。この許容範囲内のCの任意の値は許容され得る。この範囲は、入力成分の中で最大指数値である値Bを識別し、次に、B+Cが190未満であり(値Edotmaxに対応する)、B+Cが64より大きくなる(Edotminに対応する)ように、Cを整数として設定することによって定められる。この実施例における値190は、第1の所定値に対応し、値64は、第2の所定値に対応する。Cの値は、B+Cが第1の所定値と第2の所定値との間にあるような整数となるように選択される。これは、最大の結果の成分の大きさを、オーバーフローおよびアンダーフローの恐れがない範囲に設定する。許容範囲の終点は、オーバーフローからの多くの結果の成分の倍数の合計で構成される、ドット積を保護することが望ましい実施形態において調整されてもよい(このリスクは、ベクトル長が増加するにつれて増大する)。
図5は、第2の例示的引数削減命令FDOT3Rを説明する。この引数削減命令は、3成分入力ベクトルを取り、3つのスケーリングされた結果成分を、スケーリングされた結果の成分のドット積と一緒に生成する。スケーリングは、B+Cが許容範囲内にあることを保証するために選択される値Cに関して前述したように、指数シフトによって行われる。成分のスカラードット積も生成する引数削減命令FDOT3Rのこの変数は、結果の成分のスカラードット積が、後次の計算で使用することが望ましい場合、例えば、3成分入力ベクターを正規化する場合に有利である。
図6は、1つの例示的実施形態において、指数シフト値C(指数変化値)がどのように選択および適用され得るかを概略的に説明するフロー図である。この実施例は、回路および電力オーバーヘッドが有利に低い。ステップ26において、任意の非数成分に対して、入力ベクトルが確認される。任意の非数成分が検出された場合、非数処理は、ステップ28においてトリガされ、引数削減命令の実行は終了する。ステップ26において、非数成分が検出されない場合、ステップ30は、入力ベクトル内に任意の無限大成分が存在するか否かを検出する機能を果たす。任意の無限大成分が存在する場合、ステップ32は、無限大処理をトリガする機能を果たし、引数削減命令の実行は完了する。
入力ベクトルが、ステップ26および30においてチェックされるように、非数の成分および無限大成分を含まない場合、処理はステップ34に進み、各入力成分の指数値の上限Pビットが抽出されて、値Ehoを形成する。ステップ36は、次に値Bを、ステップ34において抽出されたEhoi値の最大値に設定する。ステップ38は、指数シフト値Cを2(P−1)−Bに設定する。この決定/選択された指数シフト(倍率)は、次に、フロー図の残りにおいて、すべての入力ベクトル成分に適用される。ステップ40において、指標値iは、0に設定される。ステップ42は、次に、現在のi値に対応するベクトル成分のEhoi値を選択し、ステップ38に由来するCの値をこれに加算する。ステップ44は、更新されたEhoi値が、ゼロ未満であるか否かを決定する。値がゼロ未満である場合、ステップ46は、対応する結果のベクトル成分viをゼロに設定する。ステップ44の決定が、Ehoiはゼロ未満でないか、またはステップ46後である場合、処理はステップ48に進み、決定は、調整を必要とする任意の入力ベクトル成分viがさらに存在するか否かに関して行われる。そのような成分がさらに存在する場合、ステップ50は、i値を増分し、処理はステップ42に戻る。
図7は、図6のステップ28に対応する非数例外処理を説明する。非数処理は、ステップ52において、すべての結果の成分を非数値に設定することによって行われ得る。
図8は、無限大値例外処理を概略的に説明するフロー図である。当業者に知られるように、浮動小数点無限大値は、負の無限大または正の無限大であってもよい。図8の全体作用は、負の無限大値に対応する成分を−1に設定し、正の無限大値に対応する成分を+1に設定することである。正の無限大値または負の無限大値のいずれにも対応しない他の結果の成分は、すべて大きさゼロとなるように設定される。
ステップ54は、i値を初期化する。ステップ56は、現在のi値の入力ベクトル成分が、正の無限大であるか否かを決定する。ステップ56において、入力ベクトル成分が正の無限大であると決定された場合、ステップ58は、対応する結果のベクトル成分を+1に設定する。次に、処理はステップ60に進み、処理すべき任意の入力ベクトル成分がさらに存在する場合、ステップ62は、i値を増分し、処理はステップ56に戻る。処理すべき入力ベクトル成分がない場合、無限大例外処理は完了する。
ステップ56において、現在の入力ベクトル成分viが正の無限大でないと決定された場合、ステップ64は、この値が負の無限大であるか否かを確認する。値が負の無限大である場合、ステップ66は、対応する結果の成分を−1に設定する。
ステップ56またはステップ64のいずれも無限大値を検出しなかった場合、ステップ68は、結果のベクトル内の任意の非無限大成分を、大きさ0を有するように設定する機能を果たす。
図9は、ベクトル正規化演算を行うように実行され得る、一連の命令を概略的に示すフロー図である。ステップ70は、スケーリングされたベクトル成分(結果の成分)を生成する。これは、4成分入力ベクトルの場合、第1の例示的引数削減命令FREDUCE4に対応する命令を実行することによって達成され得る。代替として、3成分入力ベクトルの場合、ステップ70は、第2の例示的引数削減命令FDOT3Rの実行の一部として達成されてもよい。削減命令FDOT3Rの第2の実施例の使用は、ステップ70およびステップ72の両方を許可し、単一命令で計算されるスケール成分のスカラー積(結果の成分のドット積)を生成する。4成分ベクトルが処理されている場合、個別のベクトル掛けるVMULを使用して、ステップ72のスカラー積を計算してもよい。
ステップ74は、スカラー積の逆数平方根を生成する。ステップ76は、次に、スケーリングされた成分(結果の成分)のそれぞれにステップ76において生成された逆数平方根を掛ける。図9の処理と図2における所望の計算の数学的図解との比較は、図9の命令シーケンスの実行が、図2の最終ラインにおいて示される値の決定に対応することを示す。
図10は、使用され得る仮想マシン実装を説明する。前述の実施形態は、関与する技術を支持する特定の処理ハードウェアを操作するための装置および方法に関して、本発明を実装するが、いわゆるハードウェアデバイスの仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、ホストプロセッサ530上で作動し、仮想マシンプログラム510を支持するホストオペレーティングシステム520を実行する。通常、大型の強力なプロセッサは、適度な速さで実行する仮想マシン実装を提供する必要があるが、そのようなアプローチは、適合性または再利用目的で、別のプロセッサに由来するコードを実行することが望ましい場合等、特定の状況において正当化され得る。仮想マシンプログラム510は、アプリケーションプログラムインターフェースを、仮想マシンプログラム510によってモデル化されているデバイスである、リアルハードウェアによって提供される、アプリケーションプログラムインターフェースと同一である、アプリケーションプログラム500に提供する。したがって、上述されるメモリアクセスの制御を含む、プログラム命令は、仮想マシンプログラム510を使用して、それらの仮想マシンハードウェアとの相互作用をモデル化することによって、アプリケーションプログラム500内から実行されてもよい。
本発明の例証的実施形態は、添付の図面を参照して、本明細書において詳細に説明されたが、本発明は、それらの正確な実施形態に限定されないこと、および添付の請求項によって定義されるような本発明の範囲および精神から逸脱することなく、当業者によって、そこに様々な変更および修正を行うことができることを理解されたい。
500 アプリケーションプログラム
510 仮想マシンプログラム
520 ホストオペレーティングシステム
530 ホストプロセッサ

Claims (16)

  1. データを処理するための装置であって、
    データ値に処理演算を行うように構成される処理回路と、
    前記処理回路に連結され、かつプログラム命令をデコードし、前記処理回路を制御するための制御信号を生成して、前記プログラム命令によって特定される処理演算を行うように構成されるデコーダ回路と、を備え、
    前記デコーダ回路が、引数削減命令に応答して、前記処理回路を制御するための制御信号を生成し、複数の成分を有するベクトル浮動小数点値に処理演算を行い、前記複数の成分のそれぞれが、整数指数値および仮数値を含み、前記処理演算が、
    前記複数の成分の最大整数指数値Bを識別することと、
    (B+C)が第1の所定値Edotmax未満であり、(B+C)が第2の所定値Edotminよりも大きくなるように、整数値である指数シフト値Cを選択することと、
    前記複数の成分のそれぞれに対して、前記指数シフト値Cが非ゼロである場合は、前記指数シフト値Cを、前記成分の整数指数値に加算して、前記複数の結果の成分のうちの1つを生成することと、によって得られるものと同一の複数の結果の成分を生成することを含み、
    前記第1の所定値Edotmaxが、最小整数値であり、Edotmaxの整数指数値および仮数Mを有する浮動小数点値の平方が、少なくとも1つのMの値に対して浮動小数点のオーバーフローをもたらし、かつ、
    前記第2の所定値Edotminが、最大整数値であり、Edotminの整数指数値および仮数Mを有する浮動小数点値の平方が、少なくとも1つのMの値に対して浮動小数点のアンダーフローをもたらす、装置。
  2. 各成分が、浮動小数点数(−1)Sc*2(Ec−127)*(1+(Mc/224))を表す、符号値Sc、整数指数値Ec、および仮数値Mcを有し、Edotmaxが190である、請求項に記載の装置。
  3. 各成分は、浮動小数点数(−1)Sc*2(Ec−127)*(1+(Mc/224))を表す、符号値Sc、整数指数値Ec、および仮数Mcを有し、Edotminは64である、請求項に記載の装置。
  4. 前記複数の成分のうちのいずれか1つに対して、前記指数シフト値Cを、前記成分の整数指数値に加算して、前記複数の結果の成分のうちの1つを生成する場合、前記複数の結果の成分のうちの1つは、浮動小数点のアンダーフローとなり、次に、前記複数の結果の成分のうちの1つをゼロ値に置き換える、請求項1に記載の装置。
  5. 前記指数シフト値Cを選択することが、
    前記複数の成分のそれぞれに対して、最上Pビットである高次指数部分Ehoを形成することであって、前記整数指数値Pは、前記整数指数値内の総ビット数未満であることと、
    前記高次指数部分Ehoの中から最大値Ehomaxを選択することと、および、
    前記複数の成分のそれぞれに対して、(2(P−1)−Ehomax)の値を前記高次指数部分Ehoに加算することと、
    によって得られるものと同一の結果をもたらす値を選択することを含む、請求項1に記載の装置。
  6. 前記複数の成分のうちのいずれか1つに対して、前記(2(P−1)−Ehomax)の値を前記高次指数部分Ehoに加算する場合、前記(2(P−1)−Ehomax)の値が負であり、前記加算が、アンダーフローし、次に、前記複数の結果の成分のうちの対応する1つを値ゼロに置き換える、請求項に記載の装置。
  7. 前記整数指数値内の総ビット数が8であり、かつ、P=3である、請求項に記載の装置。
  8. 前記複数の成分のうちのいずれかが浮動小数点非数である場合、前記複数の結果の成分のすべてが、浮動小数点非数に設定される、請求項1に記載の装置。
  9. 前記複数の成分のうちのいずれかが浮動小数点無限大値である場合、浮動小数点無限大値を有する成分に対応する各結果の成分は、大きさ1の浮動小数点値に設定され、前記成分の前記浮動小数点無限大値に整合する符号および残りの結果の成分のすべては、大きさゼロの浮動小数点値に設定される、請求項1に記載の装置。
  10. 前記引数削減命令は、また、前記複数の結果の成分のスカラー積によって得られるものと同一の値を有する結果のスカラー積を生成する、請求項1に記載の装置。
  11. 前記処理回路および前記デコーダ回路は、前記引数削減命令に続いて、1つまたは複数のさらなる命令のシーケンスに応答して、
    前記複数の結果の成分のスカラー積によって得られるものと同一の値を有する結果のスカラー積を生成することと、
    前記結果のスカラー積の逆数平方根を生成することと、
    各結果の成分に対して、前記結果の成分に前記逆数平方根を掛けることによって、対応する正規化成分を生成することと、によって得られるものと同一の複数の正規化成分を有する正規化ベクトル浮動小数点値を生成する、請求項1に記載の装置。
  12. 前記処理回路および前記デコーダ回路は、グラフィクス処理ユニットの一部である、請求項1に記載の装置。
  13. データを処理する装置であって、
    データ値に処理演算を行うための処理手段と、
    プログラム命令をデコードして、前記処理手段を制御するための制御信号を生成し、前記プログラム命令によって特定される処理演算を行うデコーダ手段と、を備え、
    前記でコーダ手段が、引数削減命令に応答して、前記処理手段を制御するための制御信号を生成し、複数の成分を有するベクトル浮動小数点値に処理演算を行い、前記複数の成分のそれぞれは、整数指数値および仮数値を含み、前記処理演算が、
    前記複数の成分の最大整数指数値Bを識別することと、
    (B+C)が第1の所定値Edotmax未満であり、かつ、(B+C)が第2の所定値Edotminよりも大きくなるように、整数値である指数シフト値Cを選択することと、
    前記複数の成分のそれぞれに対して、前記指数シフト値Cが非ゼロである場合は、前記指数シフト値Cを前記成分の整数指数値に加算して、前記複数の結果の成分のうちの1つを生成することと、によって得られるものと同一の複数の結果の成分を生成することと、を含み、
    前記第1の所定値Edotmaxが、最小整数値であり、Edotmaxの整数指数値および仮数Mを有する浮動小数点値の平方が、少なくとも1つのMの値に対して浮動小数点のオーバーフローをもたらし、かつ、
    前記第2の所定値Edotminが、最大整数値であり、Edotminの整数指数値および仮数Mを有する浮動小数点値の平方が、少なくとも1つのMの値に対して浮動小数点のアンダーフローをもたらす、装置。
  14. データを処理する方法であって、
    引数削減命令に応答して、複数の成分を有するベクトル浮動小数点値に処理演算を行うステップであって、前記複数の成分のそれぞれが、整数指数値および仮数値を含み、前記処理演算が、
    前記複数の成分の最大整数指数値Bを識別することと、
    (B+C)が第1の所定値Edotmax未満であり、かつ、(B+C)が第2の所定値Edotminよりも大きくなるように、整数値である指数シフト値Cを選択することと、
    前記複数の成分のそれぞれに対して、前記指数シフト値Cが非ゼロである場合は、前記指数シフト値Cを前記成分の整数指数値に加算して、前記複数の結果の成分のうちの1つを生成することと、によって得られるものと同一の複数の結果の成分を生成するステップを含み、
    前記第1の所定値Edotmaxが、最小整数値であり、Edotmaxの整数指数値および仮数Mを有する浮動小数点値の平方が、少なくとも1つのMの値に対して浮動小数点のオーバーフローをもたらし、かつ、
    前記第2の所定値Edotminが、最大整数値であり、Edotminの整数指数値および仮数Mを有する浮動小数点値の平方が、少なくとも1つのMの値に対して浮動小数点のアンダーフローをもたらす、方法。
  15. ログラム命令に応答し、かつ、データ処理を行うように、データ処理装置を制御するためのコンピュータプログラムであって、複数の成分を有するベクトル浮動小数点値に処理演算を行うように、前記データ処理装置を制御するための引数削減命令を含み、前記複数の成分のそれぞれが、整数指数値および仮数値を含み、前記処理演算が、
    前記複数の成分の最大整数指数値Bを識別することと、
    (B+C)が第1の所定値Edotmax未満であり、かつ、(B+C)が第2の所定値Edotminよりも大きくなるように、整数値である指数シフト値Cを選択することと、
    前記複数の成分のそれぞれに対して、前記指数シフト値Cが非ゼロである場合は、前記指数シフト値Cを前記成分の整数指数値に加算して、前記複数の結果の成分のうちの1つを生成することと、によって得られるものと同一の複数の結果の成分を生成することと、を含み、
    前記第1の所定値Edotmaxが、最小整数値であり、Edotmaxの整数指数値および仮数Mを有する浮動小数点値の平方が、少なくとも1つのMの値に対して浮動小数点のオーバーフローをもたらし、かつ、
    前記第2の所定値Edotminが、最大整数値であり、Edotminの整数指数値および仮数Mを有する浮動小数点値の平方が、少なくとも1つのMの値に対して浮動小数点のアンダーフローをもたらす、コンピュータプログラム。
  16. 請求項1に記載のデータを処理するための装置を提供するようにプログラムを実行するコンピュータを備える、仮想マシン。
JP2011202971A 2010-09-24 2011-09-16 ベクトル浮動小数点引数削減 Active JP5731937B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1016071.1 2010-09-24
GB1016071.1A GB2483902B (en) 2010-09-24 2010-09-24 Vector floating point argument reduction

Publications (3)

Publication Number Publication Date
JP2012069116A JP2012069116A (ja) 2012-04-05
JP2012069116A5 JP2012069116A5 (ja) 2015-04-09
JP5731937B2 true JP5731937B2 (ja) 2015-06-10

Family

ID=43127899

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011202971A Active JP5731937B2 (ja) 2010-09-24 2011-09-16 ベクトル浮動小数点引数削減

Country Status (6)

Country Link
US (2) US20130246496A1 (ja)
JP (1) JP5731937B2 (ja)
CN (1) CN102566964B (ja)
GB (1) GB2483902B (ja)
TW (1) TWI526928B (ja)
WO (1) WO2012038708A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104473B2 (en) * 2012-03-30 2015-08-11 Altera Corporation Conversion and compression of floating-point and integer data
CN104166535B (zh) * 2013-07-19 2017-07-28 郑州宇通客车股份有限公司 定点处理器及其防溢方法
CN104866279A (zh) * 2014-02-21 2015-08-26 北京国睿中数科技股份有限公司 实现浮点数指数分析替换的装置及方法
US20160019027A1 (en) * 2014-07-15 2016-01-21 Qualcomm Incorporated Vector scaling instructions for use in an arithmetic logic unit
US9779272B2 (en) * 2015-04-14 2017-10-03 Analog Devices, Inc. Extended use of logarithm and exponent instructions
KR20180122021A (ko) * 2016-03-29 2018-11-09 오션 로직 피티와이 리미티드 큰 벡터 사이의 점 곱들과 관련된 연산 복잡도를 축소하기 위해 디지털 컴퓨터를 동작시키는 방법
CN106775587B (zh) * 2016-11-30 2020-04-14 上海兆芯集成电路有限公司 计算机指令的执行方法以及使用此方法的装置
US10579334B2 (en) * 2018-05-08 2020-03-03 Microsoft Technology Licensing, Llc Block floating point computations using shared exponents
US11636319B2 (en) * 2018-08-22 2023-04-25 Intel Corporation Iterative normalization for machine learning applications
US10853068B2 (en) 2018-09-28 2020-12-01 Ocean Logic Pty Ltd Method for operating a digital computer to reduce the computational complexity associated with dot products between large vectors
US11586883B2 (en) * 2018-12-14 2023-02-21 Microsoft Technology Licensing, Llc Residual quantization for neural networks
US11347511B2 (en) * 2019-05-20 2022-05-31 Arm Limited Floating-point scaling operation
US11188303B2 (en) * 2019-10-02 2021-11-30 Facebook, Inc. Floating point multiply hardware using decomposed component numbers
US11157238B2 (en) * 2019-11-15 2021-10-26 Intel Corporation Use of a single instruction set architecture (ISA) instruction for vector normalization
CN111258537B (zh) * 2020-01-15 2022-08-09 中科寒武纪科技股份有限公司 一种防止数据溢出的方法、装置和芯片

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0596175A1 (en) 1992-11-05 1994-05-11 International Business Machines Corporation Apparatus for executing the argument reduction in exponential computations of IEEE standard floating-point numbers
US5563818A (en) * 1994-12-12 1996-10-08 International Business Machines Corporation Method and system for performing floating-point division using selected approximation values
US5619439A (en) * 1995-07-05 1997-04-08 Sun Microsystems, Inc. Shared hardware for multiply, divide, and square root exponent calculation
JP3790307B2 (ja) * 1996-10-16 2006-06-28 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
US5973705A (en) * 1997-04-24 1999-10-26 International Business Machines Corporation Geometry pipeline implemented on a SIMD machine
JPH1124887A (ja) 1997-07-01 1999-01-29 Sega Enterp Ltd ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体
US6247117B1 (en) * 1999-03-08 2001-06-12 Advanced Micro Devices, Inc. Apparatus and method for using checking instructions in a floating-point execution unit
US6353439B1 (en) * 1999-12-06 2002-03-05 Nvidia Corporation System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline
JP2001175455A (ja) 1999-12-14 2001-06-29 Sega Corp ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体
US6614431B1 (en) * 2001-01-18 2003-09-02 David J. Collodi Method and system for improved per-pixel shading in a computer graphics system
US6996597B2 (en) * 2001-06-15 2006-02-07 Centillium Communications, Inc. Increasing precision in multi-stage processing of digital signals
JP2006065633A (ja) 2004-08-27 2006-03-09 Sony Computer Entertainment Inc 演算方法および装置
US7225323B2 (en) 2004-11-10 2007-05-29 Nvidia Corporation Multi-purpose floating point and integer multiply-add functional unit with multiplication-comparison test addition and exponent pipelines
JP2007079696A (ja) * 2005-09-12 2007-03-29 Hitachi Kokusai Electric Inc 浮動小数点数のベクトル演算方法
WO2007041561A2 (en) * 2005-10-03 2007-04-12 Sunfish Studio, Llc Representation of modal intervals within a computer
GB2454201A (en) * 2007-10-30 2009-05-06 Advanced Risc Mach Ltd Combined Magnitude Detection and Arithmetic Operation
US7925866B2 (en) * 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
GB2458665B (en) * 2008-03-26 2012-03-07 Advanced Risc Mach Ltd Polynomial data processing operation
GB2464292A (en) * 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
US20100262722A1 (en) * 2009-04-10 2010-10-14 Christophe Vauthier Dynamic Assignment of Graphics Processing Unit to a Virtual Machine

Also Published As

Publication number Publication date
CN102566964A (zh) 2012-07-11
GB201016071D0 (en) 2010-11-10
US20120078987A1 (en) 2012-03-29
TW201216152A (en) 2012-04-16
GB2483902A (en) 2012-03-28
JP2012069116A (ja) 2012-04-05
CN102566964B (zh) 2016-04-27
TWI526928B (zh) 2016-03-21
GB2483902B (en) 2018-10-24
US20130246496A1 (en) 2013-09-19
WO2012038708A1 (en) 2012-03-29
US9146901B2 (en) 2015-09-29

Similar Documents

Publication Publication Date Title
JP5731937B2 (ja) ベクトル浮動小数点引数削減
CN107077416B (zh) 用于以选择性舍入模式进行向量处理的装置和方法
JP6162203B2 (ja) 命令に応じた丸め処理の実行
CN106250098B (zh) 用于在执行浮点运算时控制舍入的装置及方法
JP2012069116A5 (ja)
TWI470545B (zh) 用以執行範圍檢測之設備,處理器,系統,方法,指令,及邏輯
US10235135B2 (en) Normalization of a product on a datapath
WO2013109532A1 (en) Algebraic processor
WO2018138469A1 (en) An apparatus and method for processing input operand values
KR102560424B1 (ko) 와이드 데이터 타입들의 비교
US20160364209A1 (en) Apparatus and method for inhibiting roundoff error in a floating point argument reduction operation
WO2012087633A2 (en) Performing reciprocal instructions with high accuracy
JP2020071642A (ja) 演算処理装置及びその制御方法
JP7541524B2 (ja) アンカーデータ要素における特殊値の符号化
JP6886927B2 (ja) 浮動小数点値の処理のための装置及び方法
US9959092B2 (en) Accumulation of floating-point values
US10963245B2 (en) Anchored data element conversion
CN105468566B (zh) 用于计算数据的方法和设备
JP2023546454A (ja) 高精度アンカー暗黙処理
CN113778376A (zh) 改进的用于执行乘法/累加运算的设备
JP2002304288A (ja) データ演算処理装置及びデータ演算処理プログラム
JP2013515319A (ja) 分岐なし高速ベクトル除算計算

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141125

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20150224

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150410

R150 Certificate of patent or registration of utility model

Ref document number: 5731937

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