(57)【要約】【課題】  １０進浮動小数点データ処理例外を検出するためのシステム及び方法を提供する。【解決手段】  プロセッサは、少なくとも１つの１０進浮動小数点オペランドを受け取り、少なくとも１つの１０進浮動小数点オペランドに対して１０進浮動小数点演算を実施して１０進浮動小数点結果を生成する。１０進浮動小数点結果が推奨量子を維持することができるかどうかについて判定がなされる。推奨量子は、１０進浮動小数点結果の有効数字の最下位桁によって表される値を示す。１０進浮動小数点結果が推奨量子を保持できないとの判定に応答して出力が提供され、量子例外の発生を示す。即時にトラップされるか、又は後で検出されて条件付き処理を制御する、マスク可能な例外を生成することができる。【選択図】      図２
2011248890.tif 000002
【特許請求の範囲】
【請求項１】
処理例外を検出するための方法であって、
プロセッサを用いて、
少なくとも１つの浮動小数点オペランドを受け取るステップと、
前記少なくとも１つの１０進浮動小数点オペランドに対して１０進浮動小数点演算を実施して、１０進浮動小数点結果を生成するステップと、
前記実施に応答して、前記１０進浮動小数点結果が推奨量子を維持できないことを判定するステップであって、前記推奨量子が、前記１０進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す、ステップと、
前記１０進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、量子例外を示す出力を提供するステップであって、前記量子例外が、前記１０進浮動小数点結果が前記推奨量子を維持できないことに応答して発生する、ステップと
を実施することを含む方法。
【請求項２】
前記少なくとも１つの１０進浮動小数点オペランドに基づいて、前記推奨量子を求めるステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記出力を提供するステップが、前記１０進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、量子例外フラグを設定することを含む、請求項１に記載の方法。
【請求項４】
前記出力を提供するステップが、ソフトウェア実行トラップをトリガすることを含む、請求項１に記載の方法。
【請求項５】
量子例外フラグを、設定状態及び非設定状態のうちの一方に維持するステップと、
量子例外マスクを、設定状態及び非設定状態のうちの一方に維持するステップと、
プログラム命令シーケンスを実行するステップであって、前記プログラム命令シーケンスが、前記１０進浮動小数点演算のための命令を含み、前記実施が、前記１０進浮動小数点演算のための前記命令の実行に応答するものである、ステップと、
前記１０進浮動小数点結果を、宛先ストレージ位置内に格納するステップと、
前記量子例外マスクが非設定状態にあること、及び前記１０進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、前記命令シーケンスの実行を継続するステップと、
前記量子例外マスクが設定状態にあること、及び前記１０進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、前記プログラム命令シーケンスの実行をトラップするステップであって、前記トラップがプログラム割り込みハンドラを実行することを含む、ステップと
をさらに含み、
前記出力を提供するステップが、前記量子例外フラグを前記設定状態に設定することを含む、請求項１に記載の方法。
【請求項６】
前記プログラム命令シーケンスを実行するステップに続いて、前記量子例外フラグが前記設定状態にあることを判定するステップと、
前記量子例外フラグが前記設定状態にあるとの判定に応答し、かつ前記プログラム命令シーケンスの実行に続いて、前記量子例外の発生に対処するようにプログラム実行を変更するステップと
をさらに含む、請求項５に記載の方法。
【請求項７】
前記量子例外マスクを維持するステップが、
前記１０進浮動小数点演算のための前記命令に対応する機械言語命令にエンコードされた量子例外マスク値を読み取ることをさらに含み、
前記量子例外マスクを維持するステップが、前記１０進浮動小数点演算のための前記命令の実行の間中、前記量子例外マスク値を用いることを含む、
請求項５に記載の方法。
【請求項８】
前記量子例外マスク値は、前記機械言語命令の例外制御フィールドにエンコードされ、前記例外制御フィールドは、他の浮動小数点例外のための例外マスクをさらにエンコードする、請求項７に記載の方法。
【請求項９】
処理例外を検出するためのシステムであって、前記システムは、
メモリと、
前記メモリに通信可能に結合されたプロセッサと
を含み、前記プロセッサは、
命令プロセッサであって、
少なくとも１つの１０進浮動小数点オペランドを受け取り、
前記少なくとも１つの１０進浮動小数点オペランドに対して１０進浮動小数点演算を実施して、１０進浮動小数点結果を生成する、命令プロセッサと、
前記命令プロセッサが前記１０進浮動小数点演算を実施したことに応答して、前記１０進浮動小数点結果が推奨量子を維持できないことを判定する量子例外検出器であって、前記推奨量子が、前記１０進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す、量子例外検出器と、
前記量子例外検出器が、前記１０進浮動小数点結果が前記推奨量子を維持できないと判定したことに応答して、量子例外を示す出力を提供する量子例外応答ユニットであって、前記量子例外が、前記１０進浮動小数点結果が前記推奨量子を維持できないことに応答して発生する、量子例外応答ユニットと
を含むシステム。
【請求項１０】
前記命令プロセッサが、前記少なくとも１つの１０進浮動小数点オペランドに基づいて、前記推奨量子をさらに求める、請求項９に記載のシステム。
【請求項１１】
前記量子例外応答ユニットが、前記１０進浮動小数点結果が前記推奨量子を維持できないと前記量子例外検出器が判定したことの判定に応答して、量子例外フラグを設定する、請求項９に記載のシステム。
【請求項１２】
前記量子例外応答ユニットが、ソフトウェア実行トラップをトリガすることを含む出力を提供する、請求項９に記載のシステム。
【請求項１３】
前記命令プロセッサが、さらに、
量子例外フラグを、設定状態及び非設定状態のうちの一方に維持し、
量子例外マスクを、設定状態及び非設定状態のうちの一方に維持し、
プログラム命令シーケンスを実行し、前記プログラム命令シーケンスは前記１０進浮動小数点演算のための命令を含み、
前記１０進浮動小数点演算のための前記命令の実行に応答して、前記１０進浮動小数点演算を実施し、
前記１０進浮動小数点結果を、宛先ストレージ位置内に格納し、
前記量子例外マスクが非設定状態にあること、及び前記量子例外検出器が、前記１０進浮動小数点結果が前記推奨量子を維持できないと判定したことに応答して、前記命令シーケンスの実行を継続し、
前記量子例外マスクが設定状態にあること、及び前記量子例外検出器が、前記１０進浮動小数点結果が前記推奨量子を維持できないと判定したことに応答して、前記プログラム命令シーケンスの実行をトラップし、前記量子例外応答ユニットは、前記命令プロセッサにプログラム割り込みハンドラを実行させることによって実行をトラップし、
前記量子例外応答ユニットがさらに、前記１０進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、前記量子例外フラグを前記設定状態に設定する、
請求項９に記載のシステム。
【請求項１４】
前記命令プロセッサが、さらに、
前記プログラム命令シーケンスを実行することに続いて、前記量子例外フラグが前記設定状態にあることを判定し、
前記量子例外フラグが前記設定状態にあるとの判定に応答し、かつ前記プログラム命令シーケンスを実行することに続いて、前記量子例外の発生に対処するようにプログラム実行を変更する、
請求項１３に記載のシステム。
【請求項１５】
前記命令プロセッサが、さらに、
前記１０進浮動小数点演算のための前記命令に対応する機械言語命令にエンコードされた量子例外マスク値を読み取り、
前記１０進浮動小数点演算のための前記命令の実行の間中、前記量子例外マスク値を用いる、
請求項１３に記載のシステム。
【請求項１６】
前記量子例外マスク値は、前記機械言語命令の例外制御フィールドにエンコードされ、前記例外制御フィールドは、他の浮動小数点例外のための例外マスクをさらにエンコードする、請求項１５に記載のシステム。
【請求項１７】
処理例外を検出するためのコンピュータ・プログラムであって、
前記コンピュータ・プログラムは、プロセッサに、
少なくとも１つの浮動小数点オペランドを受け取るステップと、
前記少なくとも１つの１０進浮動小数点オペランドに対して１０進浮動小数点演算を実施して、１０進浮動小数点結果を生成するステップと、
前記実施に応答して、前記１０進浮動小数点結果が推奨量子を維持できないことを判定するステップであって、前記推奨量子が、前記１０進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す、ステップと、
前記１０進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、量子例外を示す出力を提供するステップであって、前記量子例外が、前記１０進浮動小数点結果が前記推奨量子を維持できないことに応答して発生する、ステップと
を実行させる、
コンピュータ・プログラム。
【請求項１８】
前記出力を提供するステップが、前記１０進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、量子例外フラグを設定することを含む、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
前記コンピュータ・プログラムは前記プロセッサに、
量子例外フラグを、設定状態及び非設定状態のうちの一方に維持するステップと、
量子例外マスクを、設定状態及び非設定状態のうちの一方に維持するステップと、
プログラム命令シーケンスを実行するステップであって、前記プログラム命令シーケンスが、前記１０進浮動小数点演算のための命令を含み、前記実施が、前記１０進浮動小数点演算のための前記命令の実行に応答するものである、ステップと、
前記１０進浮動小数点結果を、宛先ストレージ位置内に格納するステップと、
前記量子例外マスクが非設定状態にあること、及び前記１０進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、前記命令シーケンスの実行を継続するステップと、
前記量子例外マスクが設定状態にあること、及び前記１０進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、前記プログラム命令のシーケンスの実行をトラップするステップであって、前記トラップがプログラム割り込みハンドラを実行することを含む、ステップと
をさらに実行させ、
前記出力を提供するステップが、前記量子例外フラグを前記設定状態に設定することを含む、請求項１７に記載のコンピュータ・プログラム。
【請求項２０】
前記コンピュータ・プログラムは前記プロセッサに、
前記プログラム命令シーケンスを実行するステップに続いて、前記量子例外フラグが前記設定状態にあることを判定するステップと、
前記量子例外フラグが前記設定状態にあるとの判定に応答し、かつ前記プログラム命令のシーケンスの実行に続いて、前記量子例外の発生に対処するようにプログラム実行を変更するステップと
をさらに実行させる、請求項１９に記載のコンピュータ・プログラム。
【請求項２１】
前記コンピュータ・プログラムは前記プロセッサに、前記１０進浮動小数点演算のための前記命令に対応する機械言語命令にエンコードされた量子例外マスク値を読み取るステップをさらに実行させ、
前記量子例外マスクを維持するステップが、前記１０進浮動小数点演算のための前記命令の実行の間中、前記量子例外マスク値を用いることを含む、
請求項１９に記載のコンピュータ・プログラム。
【請求項２２】
メモリと、
前記メモリに通信可能に結合されたプロセッサと
を含むデータ処理システムであって、前記プロセッサは、
１０進浮動小数点演算に応答して生成された１０進浮動小数点結果が推奨量子を維持できないことを判定する量子例外検出器であって、前記推奨量子が、前記１０進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す、量子例外検出器と、
前記量子例外検出器が、前記１０進浮動小数点結果が前記推奨量子を維持できないと判定したことに応答して、量子例外を示す出力を提供する量子例外応答ユニットであって、前記量子例外が、前記１０進浮動小数点結果が前記推奨量子を維持できないことに応答して発生する、量子例外応答ユニットと
を含むシステム。
【請求項２３】
前記量子例外応答ユニットが、ソフトウェア実行トラップをトリガすることを含む出力を提供する、請求項２２に記載のシステム。
【請求項２４】
設定状態及び非設定状態に変更可能に割り当てられる量子例外フラグと、
設定状態及び非設定状態に変更可能に割り当てられる量子例外マスクと
をさらに含み、
前記量子例外検出器が、前記１０進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、前記量子例外フラグを前記設定状態にさらに割り当て、
前記量子例外応答ユニットが、
前記量子例外マスクが設定状態に割り当てられていること、及び前記量子例外検出器が、前記１０進浮動小数点結果が前記推奨量子を維持できないと判定したことに応答して、プログラム割り込みハンドラを実行させることによって、プログラム実行をトラップさせ、
前記量子例外マスクが非設定状態に割り当てられていること、及び前記量子例外検出器が、前記１０進浮動小数点結果が前記推奨量子を維持できないと判定したことに応答して、プログラム実行を継続させる、
請求項２２に記載のシステム。
【請求項２５】
前記１０進浮動小数点結果を生成する１０進浮動小数点演算のための命令を含むプログラム命令シーケンスを実行し、
前記プログラム命令シーケンスを実行することに続いて、前記量子例外フラグが前記設定状態に割り当てられていることを判定し、
前記量子例外フラグが前記設定状態に割り当てられているとの判定に応答し、かつ前記プログラム命令シーケンスを実行することに続いて、前記量子例外の発生に対処するようにプログラム実行を変更する、
命令プロセッサをさらに含む、請求項２４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に電子算術プロセッサに関し、より具体的には、特定の算術計算状態の検出に関する。
【背景技術】
【０００２】
ＩＥＥＥ７５４−２００８浮動小数点規格によって定義されるような１０進浮動小数点数及び他の基数の浮動小数点数は、特定の型のデータ処理を実施するのに有用である。ＩＥＥＥ７５４−２００８規格に基づくプロセッサ設計は、その規格によって定義された処理を直接サポートするように作られている。ＩＥＥＥ７５４−２００８プロセッサのための例示的なハードウェア形式は、指定された指数範囲を伴う、７、１６及び３４桁の定義された係数を有する、３２、６４及び１２８ビット長の１０進浮動小数点のデータ形式を含む。１０進浮動小数点数をサポートするＪａｖａ（商標）を含むプログラミング言語のようなソフトウェア処理環境は、その環境が実行されるハードウェアによって用いられる指数範囲とは異なる指数範囲を有する、「精度」と呼ばれる、異なる長さ係数を用いることがある。
【０００３】
１０進浮動小数点数は、単に数値を保持するだけではなく、数字のスケールを表す情報も含む。例えば、セントで金額を表現する数字を加算すると一般に、同じくセントで表される和が生成される。ある種のソフトウェア環境は、場合によっては１０進浮動小数点演算が利用可能な処理ハードウェアの精度及び範囲を超える結果を生成するように、１０進浮動小数点数の精度及び範囲をエミュレートすることがある。このような状態は、意図せず不正確な結果をもたらす可能性がある。不正確さ（ｉｎｅｘａｃｔｎｅｓｓ）の例外、オーバーフロー例外及びアンダーフロー例外のような既存の例外は、精度又は範囲を超えたときに発生するが、これらの例外は、精度又は演算結果における予期しない変更の全てを正確に検出することはできない。
【０００４】
検出されない潜在的な誤差の例は、セントで表現された２つの７桁の金額を加算する１０進浮動小数点演算である。これらのソース・データ要素の各々は、＄１０，０００の範囲内の額であるはずである。これらの２つの額を合計すると、＄１００，０００の範囲内で正確な結果を導くことができる。しかしながら、この結果を７桁で＄１００，０００の範囲内でセントで表すと、その指数はセントを示す推奨指数（ｐｒｅｆｅｒｒｅｄ  ｅｘｐｏｎｅｎｔ）ではない指数になることが要求され、それに応じて結果の値の精度は低下することになる。同じ計算をより高い精度で行うと、結果のスケールとしてセントを示す指数（１０−２）を導くはずである。既存の例外は、生成された結果におけるこのスケールの損失を検出しない。
【０００５】
幾つかのハードウェア実装は、上記の事例を検出する大まかな方法を提供する。一例において、データをチェックして、最上位桁が非ゼロかどうかを判定する。このようなチェックは、結果が推奨指数を有さないことがある、過度な指標（ｏｖｅｒ  ｉｎｄｉｃａｔｉｏｎ）であるが、それは、ある種の正確な結果が「フォールスポジティブ」指標をもたらすことがあるからである。この手法は、最上位桁がスケールの潜在的な損失の指標として用いられるので、エミュレーションのための有用な精度を事実上１桁低下させる。
【０００６】
従って、計算の正確さは、プロセッサ形式の制限により生じる、１０進浮動小数点の結果のスケール又は精度における予期しない変更の不検出によって、制限される。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、１０進浮動小数点データ処理例外を検出するためのシステム及び方法を提供することである。
【課題を解決するための手段】
【０００８】
一実施形態において、処理例外を検出するための方法は、少なくとも１つの１０進浮動小数点オペランドを受け取り、少なくとも１つの１０進浮動小数点オペランドに対して１０進浮動小数点演算を実施して、１０進浮動小数点結果を生成する、プロセッサを含む。１０進浮動小数点結果が推奨量子（preferred quantum）を保持できるかどうかについての判定が行われる。推奨量子は、１０進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す。１０進浮動小数点結果が推奨量子を維持できないとの判定に応答して、量子例外の発生を示す出力が提供される。
【０００９】
別の実施形態において、処理例外を検出するためのシステムは、メモリと、メモリに通信可能に結合されたプロセッサとを含む。プロセッサは、命令プロセッサを含む。命令プロセッサは、少なくとも１つの１０進浮動小数点オペランドを受け取り、少なくとも１つの１０進浮動小数点オペランドに対して１０進浮動小数点演算を実施して、１０進浮動小数点結果を生成する。プロセッサは、量子例外検出器も含む。量子例外検出器は、命令プロセッサが１０進浮動小数点演算を実施したことに応答して、１０進浮動小数点結果が推奨量子を保持できないかどうかを判定する。推奨量子は、１０進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す。プロセッサは、量子例外応答ユニットをさらに含む。量子例外応答ユニットは、量子例外検出器が、１０進浮動小数点結果が推奨量子を維持できないと判定したことに応答して、量子例外を示す出力を提供する。量子例外は、１０進浮動小数点結果が推奨量子を維持できないことに応答して発生する。
【００１０】
別の実施形態において、処理例外を検出するためのコンピュータ・プログラムは、処理回路によって読み出し可能な、方法を実施するために処理回路により実行される命令を格納するストレージ媒体を含む。方法は、少なくとも１つの１０進浮動小数点オペランドを受け取ることと、少なくとも１つの１０進浮動小数点オペランドに対して１０進浮動小数点演算を実施して、１０進浮動小数点結果を生成することとを含む。１０進浮動小数点結果が推奨量子を維持できるかどうかについての判定がなされる。推奨量子は、１０進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す。１０進浮動小数点結果が推奨量子を維持できないと判定したことに応答して、量子例外の発生を示す出力を提供される。
【００１１】
添付の図面においては、別々の図の全体にわたって同様の参照番号は同一又は機能的に類似した要素を指しており、これらの図面は、下記の詳細な説明と共に本明細書に組み込まれ、その一部を形成するものであり、種々の実施形態をさらに例証し、その全てが本発明に従う種々の原理及び利点を説明することに役立つ。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態によるコンピュータ・プロセッサを示す。
【図２】本発明の一実施形態による１０進浮動小数点演算の実行を示す。
【図３】本発明の一実施形態による情報処理システムを示すブロック図である。
【発明を実施するための形態】
【００１３】
必要に応じて、本発明の詳細な実施形態が本明細書に開示されるが、開示される実施形態は、種々の形態で具体化することができる本発明の例にすぎないことを理解すべきである。従って、本明細書において開示される特定の構造的及び機能的な詳細は、特許請求の範囲を限定するものとして解釈されるべきではなく、単に特許請求の範囲の根拠として解釈されるべきであり、本発明を事実上すべてのふさわしい詳細な構造及び機能で様々に利用することを当業者に教示するための代表的な根拠として解釈されるべきである。さらに、本明細書で用いられる用語及び語句は、限定を意図するものではなく、本発明の分かりやすい説明を提供することを意図するものである。
【００１４】
本明細書で用いられる「ある（ａ又はａｎ）」という用語は、１つ以上と定義される。本明細書で用いられる「複数」という用語は、２つ以上と定義される。本明細書で用いられる「別の」という用語は、少なくとも２番目又はそれ以降と定義される。本明細書で用いられる「含む（ｉｎｃｌｕｄｉｎｇ）」及び／又は「有する（ｈａｖｉｎｇ）」という用語は、「含む（ｃｏｍｐｒｉｓｉｎｇ）」（即ち、開放的語法（ｏｐｅｎ  ｌａｎｇｕａｇｅ））と定義される。本明細書で用いられる「結合された」という用語は、必ずしも直接及び機械的にではなく「接続された」ものとして定義される。
【００１５】
下記に説明されるシステム及び方法は、１０進浮動小数点演算の結果が、ＩＥＥＥ７５４−２００８規格によって定義される推奨指数のような推奨量子を表さない場合に、本明細書では「量子例外」と呼ばれる例外を生じさせることができる、１０進浮動小数点プロセッサを含む。これは、ハードウェア形式を超える処理の検出を可能にするので、そのソフトウェア又はプログラミング言語が実行されるハードウェアよりも高い精度又は広い範囲を有する１０進形式をサポートするソフトウェア又はプログラミング言語にとって特に有用である。
【００１６】
本考察の文脈において、「量子」は、浮動小数点表現の最下位桁/最小有効数字（least significant digit:LSD)の「単位」を指す。以前に定義された浮動小数点例外は、ある種の処理の不正確さを検出するが、推奨指数ではないスケール又は指数の表現を有する１０進浮動小数点演算結果の事例を完全には検出しない。別の言い方をすれば、既存の浮動小数点例外は、もしそのプロセッサにおいて係数を表現するための精度がもっと高ければ作り出されたはずの指数を有さない１０進浮動小数点演算結果の事例を完全には示さない。ＩＥＥＥ７５４−２００８規格は、推奨量子の値は定義するが、１０進浮動小数点演算の結果においてその推奨値が達成されない場合の例外は定義しない。下記に説明される方法及びシステムの量子例外は、他のＩＥＥＥ例外と同様の制御を有するものとして定義される。量子例外はまた、関連付けられたマスク、フラグ及び例外コードも有する。これは、異なる精度及び範囲をもつプログラミング言語を標準化された形式上で容易にエミュレートすることを可能にし、予期しない指数変更を検出する一方で、十分な精度及び範囲の形式を提供することを可能にする。
【００１７】
一実施形態の量子例外イベントは、１０進浮動小数点演算が、丸められた（ｒｏｕｎｄｅｄ）又はクランプされた（ｃｌａｍｐｅｄ）結果を生成するときに発生する。ある種のＪａｖａ実装は、Ｒｏｕｎｄｅｄ及びＣｌａｍｐｅｄと呼ばれる別個のイベントを含むが、一実施形態の量子例外は、本質的に、結果の精度又は範囲を越えたことを示す。一実施形態における量子例外報告機構は制御可能であり、例外のアサーションの結果もたらされる動作を制御するためのマスク・ビットを有する。一実施形態において、マスク・ビットはもっぱら、プロセッサの浮動小数点制御語（ＦＰＣ）において、量子例外をプログラム例外ハンドラへのトラップからマスクする用途に使われる。マスク・ビットが１であり、かつ量子例外が発生した場合、例外を引き起こす１０進浮動小数点演算の結果は浮動小数点レジスタ（ＦＰＲ）内に書き込まれ、例外の型を識別するコードは浮動小数点制御語（ＦＰＣ）に書かれ、プログラム実行はプログラム割り込みハンドラにトラップされる。マスク・ビットが設定されていない場合は、スティッキー・フラグである量子例外フラグが設定され、トラップは行われない。
【００１８】
本発明の実施形態は、１０進浮動小数点数を用いて演算を行う。ＩＥＥＥ７５４−２００８を含む種々の規格によって定義される１０進浮動小数点数は、３つの構成要素、即ち、符号ビット、指数及び有効数字を有する。符号なしの値である数字の大きさは、有効数字と、指数で累乗された基数との積である。１０進浮動小数点数においては、基数は１０である。数字の符号は、符号ビットが０であるか又は１であるかに応じて、それぞれ正又は負である。
【００１９】
有効数字は暗黙の基数点を有し、その位置は、浮動小数点データのどの解釈又は表示(ｖｉｅｗ）が適用されるかによる。本発明の実施形態は、１０進浮動小数点数を右単位表示で表し、ここでは、有効数字の最右桁が単位桁であり、基数点は有効数字全体のすぐ右側にあることが暗黙に示される。
【００２０】
図１は、本発明の一実施形態によるコンピュータ・プロセッサ１００を示す。コンピュータ・プロセッサ１００は、１０進浮動小数点ユニット１１０、浮動小数点レジスタ１０８及びプログラム・コントローラ１２４を含む、命令プロセッサを含む。１０進浮動小数点ユニット１１０は、プログラム・メモリ１５２内に格納されたプログラム命令を受信するプログラム・コントローラ１２４から、１０進浮動小数点命令を受信する。１０進浮動小数点ユニット１１０に対して発行された１０進浮動小数点命令は、例えば、１つ又は複数の１０進浮動小数点数に対して実施するデータ変換及び／又は１０進浮動小数点計算を指定する命令を含む。１０進浮動小数点ユニット１１０は、浮動小数点レジスタ１０８内の１つ又は複数のソース・レジスタから１０進浮動小数点データを読み出すことによって、１０進浮動小数点オペランドを受け取り、指定された１０進浮動小数点演算を実施し、その結果を浮動小数点レジスタ内の宛先レジスタの中に格納する。データは、一般に、浮動小数点レジスタ１０８とデータ・メモリ１５０との間で交換される。
【００２１】
一実施形態の１０進浮動小数点ユニットは、ＩＥＥＥ７５４−２００８浮動小数点規格のような適用可能な浮動小数点処理規格に従って、１０進浮動小数点数に対して演算を実施する。１０進浮動小数点演算への入力であるソース・オペランドの量子値が、一般に、その演算の出力のために関連規格によって定義されるような推奨量子を定義するための基準である。１０進浮動小数点ユニット１１０において利用可能な精度に起因して、ソース・オペランドの値が、推奨量子とは異なる量子を有する結果を生成することがある。結果の量子は、例えば、指定された演算の中間結果又は最終結果の丸めを引き起こす、１０進浮動小数点ユニット１１０の制限されたハードウェア精度に起因して、推奨量子から変更されることがある。計算ハードウェアの精度と、１０進浮動小数点算術を組み込んだソフトウェア・アーキテクチャの精度との差はこの量子損失検出機構によって検出され、ソフトウェアが、ハードウェア精度からエミュレートするもっと高い精度に切り替える必要がある場合を検出することを可能にし、このことが、性能が最適化された実装を提供する。
【００２２】
一実施形態の１０進浮動小数点ユニット１１０は、量子例外検出器１１２を含む。量子例外検出器１１２は、推奨量子とは異なる量子を有する、１０進浮動小数点演算によって生成された結果の発生を検出し、ここで、推奨量子は、例えば、ソース・オペランドの値及び／又は量子に基づいて求められる定義された値である。推奨量子と特定の演算の結果の量子との差は、例えば、ソース・オペランドの実際の値によって引き起こされるハードウェアのオーバーフロー又はアンダーフロー状態によって引き起こされ得る。
【００２３】
一実施形態の量子例外検出器１１２は、１０進浮動小数点ユニット１１０によって生成された結果が推奨量子の値とは異なる量子又は指数の値を有することを示すために、「量子例外」をアサートする。一実施形態の量子例外のアサーション及び処理は、他の浮動小数点処理例外と同様である。一実施形態における量子例外のアサーションは、量子例外フラグ１２２に反映され、量子例外フラグ１２２は、一実施形態の浮動小数点ユニット１１０によって維持され、アサートされた量子例外などの１０進浮動小数点例外を識別するために、例外コードに変更可能に割り当てることができる。
【００２４】
本発明の一実施形態は、量子例外検出器１１２による量子例外のアサーションに応答して取られるアクションを制御することをサポートする。本発明の一実施形態は、設定状態又は非設定状態に変更可能に割り当てられた１つ又は複数の例外制御マスクを含む、例外制御レジスタ１０６を維持する。本発明の一実施形態において、プロセッサは、例外制御レジスタ１０６の例として浮動小数点制御語（ＦＰＣ）を含む。
【００２５】
例外制御レジスタ１０６は、ＩＥＥＥ７５４−２００８規格によって定義された例外のような種々の浮動小数点例外に対する応答を制御するために、例えば、マスクを設定することを可能にする。種々の規格によって定義された例外のためのマスクの定義を可能にすることに加えて、本発明の一実施形態は、上述の量子例外のアサーションに応答して発生する処理を制御するために、付加的なマスク・ビットを含む。一実施形態において、量子例外マスク・ビットが設定状態に割り当てられている場合に量子例外が発生すると、推奨量子とは異なる量子を有する、１０進浮動小数点ユニットによって生成された算術結果は、浮動小数点レジスタ１０８内の結果レジスタ１２０に書き込まれ、プログラム・コントローラ１２４には、プログラムの実行をプログラム割り込みハンドラにトラップするように、信号が送られる。量子例外マスク・ビットが非設定状態に割り当てられている場合に量子例外が発生すると、量子例外フラグ１２２がスティッキー・フラグとして設定され、プログラム実行は、プログラム割り込みハンドラにトラップされることなく続行する。一実施形態における「スティッキー・フラグ」量子例外フラグ１２２は、後続の命令を処理する間、設定されたままにされ、量子例外の発生後に続くその命令シーケンスの実行後に、量子例外の遅延検出及び量子例外に応答した結果としての処理を可能にする。
【００２６】
本発明の一実施形態は、量子例外の検出、及びそれに応答して取られるアクションをさらに制御するために、幾つかの機械コード命令内に付加的な制御フィールドを設ける。一例において、１０進浮動小数点機械言語命令のような幾つかの機械言語命令は、それらの命令について個々に量子例外検出をイネーブルにするために、機械言語命令テキスト内に量子例外制御ビット（ＸｑＣビット）又は量子例外制御フィールドを含む。こうした命令の例として、例えば、Ｃｏｎｖｅｒｔ  ｆｒｏｍ  Ｉｎｔｅｇｅｒ（整数からの変換）命令、Ｄｉｖｉｄｅ（除算）命令、Ｌｏａｄ  ＦＰ  Ｉｎｔｅｇｅｒ（ＦＰ整数ロード）命令、Ｌｏａｄ  Ｒｏｕｎｄｅｄ（ロード丸め）命令、Ｍｕｌｔｉｐｌｙ（乗算）命令、Ｑｕａｎｔｉｚｅ（量子化）命令、Ｒｅｒｏｕｎｄ（再丸め）命令、Ｓｕｂｔｒａｃｔ（減算）命令などが挙げられる。
【００２７】
個々の命令内に量子例外制御ビット又はフィールドを含めることで、同じ命令を異なる仕方で用いて量子例外を検出する又は検出しないことが可能になり、不正確結果例外(ｉｎｅｘａｃｔ  ｒｅｓｕｌｔ  ｅｘｃｅｐｔｉｏｎ）を検出する際の自由度を提供する。不正確結果例外を検出する際の自由度は、算術演算が、例えば、データ型間での暗黙変換又は明示的変換を用いて結果を生成することを期待される場合、或いは、算術演算の結果として、例えば、種々のソフトウェア・プログラミング言語によって定義されるように床演算及び天井演算が行われる場合に、異なる処理を実施することを可能にする。予期しない暗黙変換が発生し得る環境の例は、ソフトウェアの１０進浮動小数点実装が、そのソフトウェアが実行されるハードウェアよりも高い精度でエミュレートされる事例である。このような事例においては、ソフトウェア環境は、自身の、より高い精度に基づいて、指定された計算が推奨量子を維持することができると判定する。しかしながら、ハードウェアは、精度が低いので、結果を丸めなければならず、予期せずに不正確状態に直面する。しかしながら、例えばビット切り捨てのような明示的変換から生じる「不正確さ」によって、プログラム実行が変更される結果となるべきではない。プログラマが意識しないデータ型間の暗黙変換の場合には、不正確さは検出されるべきであり、その事例に関しては、プログラム実行は変更されるべきである。不正確さは、量子損失の１つの構成要素であるので、一実施形態においては、量子例外検出、及びそれらの量子例外の発生に対する処理応答を命令ベースで制御するために、付加的な制御が設けられる。
【００２８】
一実施形態において、他の例外を制御するために用いられる、選択された１０進浮動小数点命令の制御フィールドは、さらに量子例外制御ビット（例えば、ＸｑＣビット）を含む量子例外制御フィールドもエンコードするように拡張される。一例において、量子例外制御ビット（ＸｑＣビット）は、選択された１０進浮動小数点命令の丸めモード制御フィールド（ＲＭＣ）内にエンコードされる。一例のＲＭＣフィールドは、特定の明示的丸めモードに関連付けられた例外を制御するために０及び８乃至１５に等しい値が予め定義されている、４ビットのフィールドである。この例においては、一実施形態の量子例外制御フィールドは、１乃至７に等しいＲＭＣフィールドの値に割り当てられる。１乃至７に等しいＲＭＣフィールドの値は、量子例外をイネーブルにし、これらの値についての特定の丸めモードを選ぶ。これらの選択された命令のＲＭＣフィールドを０又は８乃至１５の値に設定すると、それらの命令が実行されるときに量子例外は検出されないことになる。しかしながら、１乃至７に等しいＲＭＣフィールドの値は、量子例外の検出、及びこれに対応するプログラム実行の変更を生じさせる。
【００２９】
図２は、本発明の一実施形態による、１０進浮動小数点演算の実行２００を示す。１０進浮動小数点演算の実行２００は、２０２において、実行のための１０進浮動小数点演算命令を１０進浮動小数点ユニット１１０によって受信することにより開始する。一実施形態において、受信される１０進浮動小数点演算命令は、プログラム・メモリ１５２内に格納されたプログラムの一部であり、コンピュータ・プロセッサ１００のプログラム・コントローラ１２４によって受信される。プログラム・コントローラ１２４は、受信された１０進浮動小数点演算命令を、実行のために１０進浮動小数点ユニット１１０に対して発行する。一実施形態において、１０進浮動小数点命令は、第１のソース・オペランドであるＯｐｅｒａｎｄ  Ａ  １０２及び第２のソース・オペランドであるＯｐｅｒａｎｄ  Ｂ  １０４を指定する。これら２つのソース・オペランドは、浮動小数点レジスタ１０８内に存在しているように図示されているが、本開示を鑑みれば当業者には理解されるように、種々のアドレス指定モードを用いて、様々な位置に配置されたソース及び宛先オペランドを指定することができる。
【００３０】
処理は、２０４において第１のソース・オペランドであるＯｐｅｒａｎｄ  Ａ  １０２を読み出し、２０６において第２のソース・オペランドであるＯｐｅｒａｎｄ  Ｂ  １０４を読み出すことによって続く。実施形態は、１つ又は複数のオペランドをいずれかの適切な手段を通じて命令プロセッサ内に受け入れることができる。受信された１０進浮動小数点演算によって生成されることになる結果についての推奨量子が、次に、２０８において求められる。一実施形態において、推奨量子は、２つのソース・オペランド、Ｏｐｅｒａｎｄ  Ａ  １０２及びＯｐｅｒａｎｄ  Ｂ  １０４の値に少なくとも部分的に基づいて求められる。
【００３１】
受信された１０進浮動小数点命令によって指定された１０進浮動小数点演算が、次に、２１０において実施される。２１２において、実行された１０進浮動小数点命令の結果が、その結果についての推奨量子を維持するかどうかの判定が行われる。
【００３２】
１０進浮動小数点演算の結果が推奨量子を維持できない場合には、処理は、２２０において量子例外制御マスクが設定されているかどうかを判定することに続く。上述のように、種々の実施形態は、量子例外の発生の結果に影響を及ぼすように、１つ又は複数の制御マスクを設ける。一般的な量子例外制御マスクを例外制御レジスタ１０６内に設定することもでき、或いは、量子例外制御ビット又はフィールドを個々の１０進浮動小数点機械言語命令内にエンコードすることもできる。量子例外制御ビットを個々の命令内にエンコードする場合、一実施形態は、機械言語命令内にエンコードされた量子例外制御ビット又はマスクを読み取り、その機械言語命令の実行の間中、その値を用いる。
【００３３】
２２０において、量子例外マスクが設定されていると判定された場合には、２３０において、プロセッサは、１０進浮動小数点演算の結果を、浮動小数点レジスタ１０８の結果レジスタ１２０のような、結果又は宛先位置１２０内に格納する。量子例外はプログラム・コントローラ１２４への出力によって示され、２３２においてプログラム実行のプログラムの割り込みハンドラへのトラップを生じさせる。
【００３４】
２２０において、量子例外マスクが設定されていないと判定された場合は、量子例外はプログラム実行のトラップを生じさせるのではなく、量子例外は後の処理のために注釈付けされる。量子例外マスクが設定されていない場合には、一実施形態の処理は、２２２において、浮動小数点レジスタ１０８の結果レジスタ１２０のような、結果又は宛先位置１２０内に結果を格納する。量子例外は、量子例外が発生したことを示すスティッキー・フラグよって量子例外フラグ１２２を設定することによって、示される。
【００３５】
２１０において実施された１０進浮動小数点演算が推奨量子を維持した結果を生成した場合には、その結果は２１４において格納される。一実施形態において、結果は、浮動小数点レジスタ１０８の結果、即ち宛先位置１２０に格納される。１０進浮動小数点演算の結果が推奨量子を維持する場合には、量子例外フラグ１２２の値又は状態は影響を受けないことが注目される。量子例外フラグ１２２の状態を、影響を受けないままにしておくことによって、以前に実行された１０進浮動小数点命令において発生した量子例外の発生の指標が量子例外フラグにおいて維持され、その後の処理で、量子例外フラグ１２２を検査して、命令シーケンスによって生成された結果が、その命令シーケンスの実行中に発生した量子例外によって影響を受けているかどうかを判定することができる。
【００３６】
２１４において結果を格納した後、又は２２４において量子例外フラグを設定した後に、処理は、２４０において、実行すべき命令がそれ以上あるかどうかを判定する。本発明の一実施形態は、命令シーケンスを量子例外マスクが設定されていない状態で実行されるように定義することを可能することで、そのシーケンスのいずれかの命令の間に発生する量子例外がスティッキー量子例外フラグ１２２を設定させることになるようにして、その命令シーケンスの実行の継続を可能にするようにさせる。スティッキー量子例外フラグ１２２は、次に、量子例外が命令のシーケンスの間に発生したかどうかを判定するために下記に説明されるように検査される。スティッキー量子例外フラグ１２２が、こうした命令のシーケンスの最後において設定状態にあると判定されると、プログラム実行は、量子例外の発生に対処する、量子変更の発生に応答した特別な処理を実行するように変更される。
【００３７】
命令がそれ以上存在する場合には、２４２において、次の命令が１０進浮動小数点命令であるかどうかの判定が行われる。次の命令が１０進浮動小数点命令である場合には、処理は、２０２において、その１０進浮動小数点命令を受信することに戻る。次の命令が１０進浮動小数点命令ではない場合には、処理は、２４０において実行すべき命令がそれ以上あるかどうかを判定することに戻る。
【００３８】
実行すべき命令がそれ以上ない場合には、一実施形態の処理は、２４４において、量子例外フラグ１２２が設定されているかどうかを判定することに続く。上述のように、処理は、量子例外マスクが設定されておらず、かつ量子例外がプログラム命令のシーケンスの間に発生した場合に、量子例外フラグを設定する。量子例外フラグが設定されている場合、処理は、２４６において、以前に検出された量子例外イベントに適合する処理を実施する。次に、処理は終了する。
【００３９】
情報処理システム
当業者には認識されるように、本発明の態様は、システム、方法又はコンピュータ・プログラムとして具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、これらはすべて本明細書において一般的に「回路」、「モジュール」又は「システム」と呼ぶことがある。さらに、本発明の態様は、具体化されたコンピュータ可読プログラム・コードをその中に有する１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラムの形態をとることができる。
【００４０】
１つ又は複数のコンピュータ可読媒体のいずれの組み合わせを使用することもできる。コンピュータ可読媒体は、コンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、電子的、磁気的、光学的、電磁気的、赤外線若しくは半導体のシステム、装置若しくはデバイス、又は上記のもののいずれかの適切な組み合わせとすることができるが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）は、以下のもの、即ち、１つ又は複数のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み取り専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせを含む。本文書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって、又はこれらに関連して用いるためのプログラムを収容又は格納することができる、いずれかの有形媒体とすることができる。
【００４１】
本発明の態様に関する動作を遂行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のようなオブジェクト指向プログラミング言語、及び「Ｃ」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語のいずれかの組み合わせで記述することができる。プログラム・コードは、独立したソフトウェア・パッケージとして、全体がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は全体が遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じた）接続がなされる場合もある。
【００４２】
本発明の態様を、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラムのフローチャート図及び／又はブロック図を参照して下記に説明する。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実施できることが理解されるであろう。コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施するための手段を作り出すように、これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて、機械を製造することができる。
【００４３】
コンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施する命令を含む製品を製造するように、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置又は他のデバイスを特定の方式で機能させるよう指示することができるコンピュータ可読媒体内に格納することもできる。
【００４４】
コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するためのプロセスを提供するように、コンピュータ・プログラム命令をコンピュータ、他のプログラム可能装置又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で実施させ、コンピュータ実装プロセスを生成することもできる。
【００４５】
ここで図３を参照すると、これは、図１に関して上述されたプロセッサ１００と併せて用いることができる情報処理システム３００を示すブロック図である。情報処理システム３００は、本発明の１つ又は複数の実施形態を実施するように適合された、適切に構成された処理システムに基づく。同様に、任意の適切に構成された処理システムを、本発明の実施形態によって情報処理システム３００として用いることができる。
【００４６】
情報処理システム３００は、コンピュータ３０２を含む。コンピュータ３０２は、キャッシュ・メモリ３０６、メモリ３２２、大容量ストレージ・インターフェース３０８及びネットワーク・アダプタ・ハードウェア３１０に接続されるプロセッサ３０４を有する。システム・バス３１２が、これらのシステム・コンポーネントを相互接続する。
【００４７】
大容量ストレージ・インターフェース３０８を用いて、データ・ストレージ・デバイス３１４のような大容量ストレージ・デバイスを情報処理システム３００に接続する。データ・ストレージ・デバイスの１つの具体的なタイプは、ＣＤ／ＤＶＤドライブのような光ドライブであり、これを用いて、ＣＤ／ＤＶＤ３１６（限定ではないが）のようなコンピュータ可読媒体又はストレージ製品にデータを格納し、そこからデータを読み出すことができる。データ・ストレージ・デバイスの別のタイプは、例えばＮＴＦＳ型ファイル・システム操作をサポートするように構成されたデータ・ストレージ・デバイスである。
【００４８】
メモリ３２２内に含まれるオペレーティング・システム（図示せず）は、Ｌｉｎｕｘ、ＵＮＩＸ、Ｗｉｎｄｏｗｓ  ＸＰ及びＷｉｎｄｏｗｓ  Ｓｅｒｖｅｒ２００３オペレーティング・システムのような適切なマルチタスク・オペレーティング・システムである。本発明の実施形態は、いずれかの他の適切なオペレーティング・システムを用いることもできる。本発明の幾つかの実施形態は、オペレーティング・システム（図示せず）のコンポーネントの命令を情報処理システム３００内に配置されたいずれかのプロセッサ上で実行することを可能にする、オブジェクト指向フレームワーク機構のようなアーキテクチャを使用する。一実施形態におけるネットワーク・アダプタ・ハードウェア３１０は、１つ又は複数のネットワーク３２０に対するネットワーク通信インターフェースを提供する。本発明の実施形態は、現在のアナログ及び／又はデジタル技術を含む、或いは将来のネットワーキング機構を通じた、いずれかのデータ通信接続と共に機能するように適合させることができる。
【００４９】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラムの可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能な命令を含む、モジュール、セグメント又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図面内に記された順序以外の順序で行われる場合があることにも留意されたい。例えば、連続して示された２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックは、ときには逆の順序で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、並びにブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェアベースのシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
【００５０】
非限定的な例
本発明の特定の実施形態を開示したが、当業者であれば、本発明の趣旨及び範囲から逸脱することなく特定の実施形態に対する変更を行うことができることを理解するであろう。従って、本発明の範囲は、特定の実施形態に限定されず、添付の特許請求の範囲は、本発明の範囲内のいずれか又は全てのこのような用途、改変及び実施形態を包含することが意図される。
【符号の説明】
【００５１】
１００：コンピュータ・プロセッサ
２００：１０進浮動小数点演算の実行
３００：情報処理システム
３０２：コンピュータ
３１２：システム・バス
【図１】
2011248890.tif 000003
【図２】
2011248890.tif 000004
【図３】
2011248890.tif 000005
【手続補正書】
【提出日】平成23年9月15日(2011.9.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１０進浮動小数点の量子例外を検出するための方法であって、
プロセッサを用いて、
少なくとも１つの１０進浮動小数点オペランドを受け取るステップと、
１０進浮動小数点演算のオペコードを含む機械命令を得るステップと、
前記機械命令を実行するステップと
を実施することを含み、前記実行するステップは、
前記少なくとも１つの１０進浮動小数点オペランドに基づいて、推奨量子を決定するステップであって、前記推奨量子が、１０進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す、ステップと、
前記少なくとも１つの１０進浮動小数点オペランドに対して前記１０進浮動小数点演算を実施して、前記１０進浮動小数点結果を生成するステップと、
前記実施及び前記推奨量子の前記決定に応答して、前記１０進浮動小数点結果の量子が前記推奨量子と異なることを判定するステップと、
前記１０進浮動小数点結果の量子が前記推奨量子と異なるとの判定に応答して、量子例外を示す出力を提供するステップであって、前記量子例外が、前記１０進浮動小数点結果の量子が前記推奨量子と異なるときのみ発生する、ステップと
を含む方法。
【請求項２】
前記出力を提供するステップが、前記１０進浮動小数点結果の量子が前記推奨量子と異なるとの判定に応答して、量子例外フラグを設定することを含む、請求項１に記載の方法。
【請求項３】
前記出力を提供するステップが、ソフトウェア実行トラップをトリガすることを含む、請求項１に記載の方法。
【請求項４】
量子例外フラグを、設定状態及び非設定状態のうちの一方に維持するステップと、
量子例外マスクを、設定状態及び非設定状態のうちの一方に維持するステップと、
プログラム命令シーケンスを実行するステップであって、前記プログラム命令シーケンスが、前記機械命令を含み、
前記１０進浮動小数点結果を、宛先ストレージ位置内に格納するステップと、
前記量子例外マスクが非設定状態にあること、及び前記１０進浮動小数点結果の量子が前記推奨量子と異なるとの判定に応答して、前記命令シーケンスの実行を継続するステップと、
前記量子例外マスクが設定状態にあること、及び前記１０進浮動小数点結果の量子が前記推奨量子と異なるとの判定に応答して、前記プログラム命令シーケンスの実行をトラップするステップであって、前記トラップがプログラム割り込みハンドラを実行することを含む、ステップと
をさらに含み、
前記出力を提供するステップが、前記量子例外フラグを前記設定状態に設定することを含む、請求項１に記載の方法。
【請求項５】
前記プログラム命令シーケンスを実行するステップに続いて、前記量子例外フラグが前記設定状態にあることを判定するステップと、
前記量子例外フラグが前記設定状態にあるとの判定に応答し、かつ前記プログラム命令シーケンスの実行に続いて、前記量子例外の発生に対処するようにプログラム実行を変更するステップと
をさらに含む、請求項４に記載の方法。
【請求項６】
前記量子例外マスクを維持するステップが、
前記１０進浮動小数点演算のための前記命令に対応する機械言語命令にエンコードされた量子例外マスク値を読み取ることをさらに含み、
前記量子例外マスクを維持するステップが、前記１０進浮動小数点演算のための前記命令の実行の間中、前記量子例外マスク値を用いることを含む、
請求項４に記載の方法。
【請求項７】
前記量子例外マスク値は、前記機械言語命令の例外制御フィールドにエンコードされ、前記例外制御フィールドは、他の浮動小数点例外のための例外マスクをさらにエンコードする、請求項６に記載の方法。
【請求項８】
１０進浮動小数点の量子例外を検出するためのシステムであって、前記システムは、
メモリと、
前記メモリに通信可能に結合されたプロセッサと
を含み、前記プロセッサは、
命令プロセッサであって、
少なくとも１つの１０進浮動小数点オペランドを受け取り、
１０進浮動小数点演算のオペコードを含む機械命令を得、
前記機械命令を実行し、前記機械命令は、
前記少なくとも１つの１０進浮動小数点オペランドに基づいて、推奨量子を決定し、前記推奨量子が、１０進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示し、
前記少なくとも１つの１０進浮動小数点オペランドに対して前記１０進浮動小数点演算を実施して、前記１０進浮動小数点結果を生成することを含み、
前記命令プロセッサが前記１０進浮動小数点演算を実施したこと、及び前記推奨量子を決定したことに応答して、前記１０進浮動小数点結果の量子が前記推奨量子と異なることを判定する量子例外検出器と、
前記量子例外検出器が、前記１０進浮動小数点結果の量子が前記推奨量子と異なると判定したことに応答して、量子例外を示す出力を提供する量子例外応答ユニットであって、前記量子例外が、前記１０進浮動小数点結果の量子が前記推奨量子と異なるときのみ発生する、量子例外応答ユニットと
を含むシステム。
【請求項９】
前記量子例外応答ユニットが、前記１０進浮動小数点結果の量子が前記推奨量子と異なると前記量子例外検出器が判定したことに応答して、量子例外フラグを設定する、請求項８に記載のシステム。
【請求項１０】
前記量子例外応答ユニットが、ソフトウェア実行トラップをトリガすることを含む出力を提供する、請求項８に記載のシステム。
【請求項１１】
前記命令プロセッサが、さらに、
量子例外フラグを、設定状態及び非設定状態のうちの一方に維持し、
量子例外マスクを、設定状態及び非設定状態のうちの一方に維持し、
プログラム命令シーケンスを実行し、前記プログラム命令シーケンスは前記機械命令を含み、
前記１０進浮動小数点結果を、宛先ストレージ位置内に格納し、
前記量子例外マスクが非設定状態にあること、及び前記量子例外検出器が、前記１０進浮動小数点結果の量子が前記推奨量子と異なると判定したことに応答して、前記命令シーケンスの実行を継続し、
前記量子例外マスクが設定状態にあること、及び前記量子例外検出器が、前記１０進浮動小数点結果の量子が前記推奨量子と異なると判定したことに応答して、前記プログラム命令シーケンスの実行をトラップし、前記量子例外応答ユニットは、前記命令プロセッサにプログラム割り込みハンドラを実行させることによって実行をトラップし、
前記量子例外応答ユニットがさらに、前記１０進浮動小数点結果の量子が前記推奨量子と異なるとの判定に応答して、前記量子例外フラグを前記設定状態に設定する、
請求項８に記載のシステム。
【請求項１２】
前記命令プロセッサが、さらに、
前記プログラム命令シーケンスを実行することに続いて、前記量子例外フラグが前記設定状態にあることを判定し、
前記量子例外フラグが前記設定状態にあるとの判定に応答し、かつ前記プログラム命令シーケンスを実行することに続いて、前記量子例外の発生に対処するようにプログラム実行を変更する、
請求項１１に記載のシステム。
【請求項１３】
前記命令プロセッサが、さらに、
前記１０進浮動小数点演算のための前記命令に対応する機械言語命令にエンコードされた量子例外マスク値を読み取り、
前記１０進浮動小数点演算のための前記命令の実行の間中、前記量子例外マスク値を用いる、
請求項１１に記載のシステム。
【請求項１４】
前記量子例外マスク値は、前記機械言語命令の例外制御フィールドにエンコードされ、前記例外制御フィールドは、他の浮動小数点例外のための例外マスクをさらにエンコードする、請求項１３に記載のシステム。
【請求項１５】
１０進浮動小数点の量子例外を検出するためのコンピュータ・プログラムであって、
前記コンピュータ・プログラムは、プロセッサに、
少なくとも１つの１０進浮動小数点オペランドを受け取るステップと、
１０進浮動小数点演算のオペコードを含む機械命令を得るステップと、
前記機械命令を実行するステップと、前記実行するステップは、
前記少なくとも１つの１０進浮動小数点オペランドに基づいて、前記推奨量子を決定するステップであって、前記推奨量子が、１０進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示すステップと、
前記少なくとも１つの１０進浮動小数点オペランドに対して前記１０進浮動小数点演算を実施して、前記１０進浮動小数点結果を生成するステップと
を含み、
前記実施及び前記推奨量子の前記決定に応答して、前記１０進浮動小数点結果の量子が前記推奨量子と異なることを判定するステップと、
前記１０進浮動小数点結果の量子が前記推奨量子と異なるとの判定に応答して、量子例外を示す出力を提供するステップであって、前記量子例外が、前記１０進浮動小数点結果の量子が前記推奨量子と異なるときのみ発生する、ステップと
を実行させる、
コンピュータ・プログラム。
【請求項１６】
前記出力を提供するステップが、前記１０進浮動小数点結果の量子が前記推奨量子と異なるとの判定に応答して、量子例外フラグを設定することを含む、請求項１５に記載のコンピュータ・プログラム。
【請求項１７】
前記コンピュータ・プログラムは前記プロセッサに、
量子例外フラグを、設定状態及び非設定状態のうちの一方に維持するステップと、
量子例外マスクを、設定状態及び非設定状態のうちの一方に維持するステップと、
プログラム命令シーケンスを実行するステップであって、前記プログラム命令シーケンスが、前記機械命令を含む、ステップと、
前記１０進浮動小数点結果を、宛先ストレージ位置内に格納するステップと、
前記量子例外マスクが非設定状態にあること、及び前記１０進浮動小数点結果の量子が前記推奨量子と異なるとの判定に応答して、前記命令シーケンスの実行を継続するステップと、
前記量子例外マスクが設定状態にあること、及び前記１０進浮動小数点結果の量子が前記推奨量子と異なるとの判定に応答して、前記プログラム命令のシーケンスの実行をトラップするステップであって、前記トラップがプログラム割り込みハンドラを実行することを含む、ステップと
をさらに実行させ、
前記出力を提供するステップが、前記量子例外フラグを前記設定状態に設定することを含む、請求項１５に記載のコンピュータ・プログラム。
【請求項１８】
前記コンピュータ・プログラムは前記プロセッサに、
前記プログラム命令シーケンスを実行するステップに続いて、前記量子例外フラグが前記設定状態にあることを判定するステップと、
前記量子例外フラグが前記設定状態にあるとの判定に応答し、かつ前記プログラム命令のシーケンスの実行に続いて、前記量子例外の発生に対処するようにプログラム実行を変更するステップと
をさらに実行させる、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
前記コンピュータ・プログラムは前記プロセッサに、前記１０進浮動小数点演算のための前記命令に対応する機械言語命令にエンコードされた量子例外マスク値を読み取るステップをさらに実行させ、
前記量子例外マスクを維持するステップが、前記１０進浮動小数点演算のための前記命令の実行の間中、前記量子例外マスク値を用いることを含む、
請求項１７に記載のコンピュータ・プログラム。
【請求項２０】
メモリと、
前記メモリに通信可能に結合されたプロセッサと
を含むデータ処理システムであって、前記プロセッサは、
１０進浮動小数点演算を実施することに応答して、前記１０進浮動小数点演算の１０進浮動小数点結果の量子が推奨量子と異なることを判定する量子例外検出器であって、前記推奨量子が、前記１０進浮動小数点演算の少なくとも１つの１０進浮動小数点オペランドに基づいて、前記１０進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す、量子例外検出器と、
前記量子例外検出器が、前記１０進浮動小数点結果の量子が前記推奨量子と異なると判定したことに応答して、量子例外を示す出力を提供する量子例外応答ユニットであって、前記量子例外が、前記１０進浮動小数点結果の量子が前記推奨量子と異なることに応答して発生する、量子例外応答ユニットと
を含むシステム。
【請求項２１】
前記量子例外応答ユニットが、ソフトウェア実行トラップをトリガすることを含む出力を提供する、請求項２０に記載のシステム。
【請求項２２】
設定状態及び非設定状態に変更可能に割り当てられる量子例外フラグと、
設定状態及び非設定状態に変更可能に割り当てられる量子例外マスクと
をさらに含み、
前記量子例外検出器が、前記１０進浮動小数点結果の量子が前記推奨量子と異なるとの判定に応答して、前記量子例外フラグを前記設定状態にさらに割り当て、
前記量子例外応答ユニットが、
前記量子例外マスクが設定状態に割り当てられていること、及び前記量子例外検出器が、前記１０進浮動小数点結果の量子が前記推奨量子と異なると判定したことに応答して、プログラム割り込みハンドラを実行させることによって、プログラム実行をトラップさせ、
前記量子例外マスクが非設定状態に割り当てられていること、及び前記量子例外検出器が、前記１０進浮動小数点結果の量子が前記推奨量子と異なると判定したことに応答して、プログラム実行を継続させる、
請求項２０に記載のシステム。
【請求項２３】
前記機械命令を含むプログラム命令シーケンスを実行し、
前記プログラム命令シーケンスを実行することに続いて、前記量子例外フラグが前記設定状態に割り当てられていることを判定し、
前記量子例外フラグが前記設定状態に割り当てられているとの判定に応答し、かつ前記プログラム命令シーケンスを実行することに続いて、前記量子例外の発生に対処するようにプログラム実行を変更する、
命令プロセッサをさらに含む、請求項２２に記載のシステム。
【請求項２４】
コンピュータ可読な媒体を記憶し、デジタルコンピュータの内部メモリにロード可能であり、かつソフトウェアコード部を含むコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行された場合に、請求項１〜７のいずれか１項に記載の方法を実施するための、コンピュータ・プログラム。