説明

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

【課題】処理回路6、8と、受信した引数削減命令FREDUCE4、FDOT3Rに応答して、処理回路6、8を制御するための制御信号16を生成するデコーダ回路10とを備える、処理装置を提供する。
【解決手段】引数削減命令の作用は、入力ベクトルの各成分を、指数シフト値Cを入力ベクトル成分の指数に加算または減算するスケーリングの対象とすることである。指数シフト値Cは、この指数シフト値Cと、入力ベクトル成分のうちのいずれかの最大指数値Bとの合計が、第1の所定値と第2の所定値との間の範囲内にあるように選択される。この引数削減命令の実行の結果は、ドット積演算される場合、結果のベクトルが、浮動小数点のアンダーフローまたはオーバーフローに耐えるということである。

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

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

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−69116(P2012−69116A)
【公開日】平成24年4月5日(2012.4.5)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−202971(P2011−202971)
【出願日】平成23年9月16日(2011.9.16)
【出願人】(504394342)アーム・リミテッド (134)
【Fターム(参考)】