説明

10進浮動小数点の量子例外検出

【課題】 10進浮動小数点データ処理例外を検出するためのシステム及び方法を提供する。
【解決手段】 プロセッサは、少なくとも1つの10進浮動小数点オペランドを受け取り、少なくとも1つの10進浮動小数点オペランドに対して10進浮動小数点演算を実施して10進浮動小数点結果を生成する。10進浮動小数点結果が推奨量子を維持することができるかどうかについて判定がなされる。推奨量子は、10進浮動小数点結果の有効数字の最下位桁によって表される値を示す。10進浮動小数点結果が推奨量子を保持できないとの判定に応答して出力が提供され、量子例外の発生を示す。即時にトラップされるか、又は後で検出されて条件付き処理を制御する、マスク可能な例外を生成することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に電子算術プロセッサに関し、より具体的には、特定の算術計算状態の検出に関する。
【背景技術】
【0002】
IEEE754−2008浮動小数点規格によって定義されるような10進浮動小数点数及び他の基数の浮動小数点数は、特定の型のデータ処理を実施するのに有用である。IEEE754−2008規格に基づくプロセッサ設計は、その規格によって定義された処理を直接サポートするように作られている。IEEE754−2008プロセッサのための例示的なハードウェア形式は、指定された指数範囲を伴う、7、16及び34桁の定義された係数を有する、32、64及び128ビット長の10進浮動小数点のデータ形式を含む。10進浮動小数点数をサポートするJava(商標)を含むプログラミング言語のようなソフトウェア処理環境は、その環境が実行されるハードウェアによって用いられる指数範囲とは異なる指数範囲を有する、「精度」と呼ばれる、異なる長さ係数を用いることがある。
【0003】
10進浮動小数点数は、単に数値を保持するだけではなく、数字のスケールを表す情報も含む。例えば、セントで金額を表現する数字を加算すると一般に、同じくセントで表される和が生成される。ある種のソフトウェア環境は、場合によっては10進浮動小数点演算が利用可能な処理ハードウェアの精度及び範囲を超える結果を生成するように、10進浮動小数点数の精度及び範囲をエミュレートすることがある。このような状態は、意図せず不正確な結果をもたらす可能性がある。不正確さ(inexactness)の例外、オーバーフロー例外及びアンダーフロー例外のような既存の例外は、精度又は範囲を超えたときに発生するが、これらの例外は、精度又は演算結果における予期しない変更の全てを正確に検出することはできない。
【0004】
検出されない潜在的な誤差の例は、セントで表現された2つの7桁の金額を加算する10進浮動小数点演算である。これらのソース・データ要素の各々は、$10,000の範囲内の額であるはずである。これらの2つの額を合計すると、$100,000の範囲内で正確な結果を導くことができる。しかしながら、この結果を7桁で$100,000の範囲内でセントで表すと、その指数はセントを示す推奨指数(preferred exponent)ではない指数になることが要求され、それに応じて結果の値の精度は低下することになる。同じ計算をより高い精度で行うと、結果のスケールとしてセントを示す指数(10−2)を導くはずである。既存の例外は、生成された結果におけるこのスケールの損失を検出しない。
【0005】
幾つかのハードウェア実装は、上記の事例を検出する大まかな方法を提供する。一例において、データをチェックして、最上位桁が非ゼロかどうかを判定する。このようなチェックは、結果が推奨指数を有さないことがある、過度な指標(over indication)であるが、それは、ある種の正確な結果が「フォールスポジティブ」指標をもたらすことがあるからである。この手法は、最上位桁がスケールの潜在的な損失の指標として用いられるので、エミュレーションのための有用な精度を事実上1桁低下させる。
【0006】
従って、計算の正確さは、プロセッサ形式の制限により生じる、10進浮動小数点の結果のスケール又は精度における予期しない変更の不検出によって、制限される。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の目的は、10進浮動小数点データ処理例外を検出するためのシステム及び方法を提供することである。
【課題を解決するための手段】
【0008】
一実施形態において、処理例外を検出するための方法は、少なくとも1つの10進浮動小数点オペランドを受け取り、少なくとも1つの10進浮動小数点オペランドに対して10進浮動小数点演算を実施して、10進浮動小数点結果を生成する、プロセッサを含む。10進浮動小数点結果が推奨量子(preferred quantum)を保持できるかどうかについての判定が行われる。推奨量子は、10進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す。10進浮動小数点結果が推奨量子を維持できないとの判定に応答して、量子例外の発生を示す出力が提供される。
【0009】
別の実施形態において、処理例外を検出するためのシステムは、メモリと、メモリに通信可能に結合されたプロセッサとを含む。プロセッサは、命令プロセッサを含む。命令プロセッサは、少なくとも1つの10進浮動小数点オペランドを受け取り、少なくとも1つの10進浮動小数点オペランドに対して10進浮動小数点演算を実施して、10進浮動小数点結果を生成する。プロセッサは、量子例外検出器も含む。量子例外検出器は、命令プロセッサが10進浮動小数点演算を実施したことに応答して、10進浮動小数点結果が推奨量子を保持できないかどうかを判定する。推奨量子は、10進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す。プロセッサは、量子例外応答ユニットをさらに含む。量子例外応答ユニットは、量子例外検出器が、10進浮動小数点結果が推奨量子を維持できないと判定したことに応答して、量子例外を示す出力を提供する。量子例外は、10進浮動小数点結果が推奨量子を維持できないことに応答して発生する。
【0010】
別の実施形態において、処理例外を検出するためのコンピュータ・プログラムは、処理回路によって読み出し可能な、方法を実施するために処理回路により実行される命令を格納するストレージ媒体を含む。方法は、少なくとも1つの10進浮動小数点オペランドを受け取ることと、少なくとも1つの10進浮動小数点オペランドに対して10進浮動小数点演算を実施して、10進浮動小数点結果を生成することとを含む。10進浮動小数点結果が推奨量子を維持できるかどうかについての判定がなされる。推奨量子は、10進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す。10進浮動小数点結果が推奨量子を維持できないと判定したことに応答して、量子例外の発生を示す出力を提供される。
【0011】
添付の図面においては、別々の図の全体にわたって同様の参照番号は同一又は機能的に類似した要素を指しており、これらの図面は、下記の詳細な説明と共に本明細書に組み込まれ、その一部を形成するものであり、種々の実施形態をさらに例証し、その全てが本発明に従う種々の原理及び利点を説明することに役立つ。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施形態によるコンピュータ・プロセッサを示す。
【図2】本発明の一実施形態による10進浮動小数点演算の実行を示す。
【図3】本発明の一実施形態による情報処理システムを示すブロック図である。
【発明を実施するための形態】
【0013】
必要に応じて、本発明の詳細な実施形態が本明細書に開示されるが、開示される実施形態は、種々の形態で具体化することができる本発明の例にすぎないことを理解すべきである。従って、本明細書において開示される特定の構造的及び機能的な詳細は、特許請求の範囲を限定するものとして解釈されるべきではなく、単に特許請求の範囲の根拠として解釈されるべきであり、本発明を事実上すべてのふさわしい詳細な構造及び機能で様々に利用することを当業者に教示するための代表的な根拠として解釈されるべきである。さらに、本明細書で用いられる用語及び語句は、限定を意図するものではなく、本発明の分かりやすい説明を提供することを意図するものである。
【0014】
本明細書で用いられる「ある(a又はan)」という用語は、1つ以上と定義される。本明細書で用いられる「複数」という用語は、2つ以上と定義される。本明細書で用いられる「別の」という用語は、少なくとも2番目又はそれ以降と定義される。本明細書で用いられる「含む(including)」及び/又は「有する(having)」という用語は、「含む(comprising)」(即ち、開放的語法(open language))と定義される。本明細書で用いられる「結合された」という用語は、必ずしも直接及び機械的にではなく「接続された」ものとして定義される。
【0015】
下記に説明されるシステム及び方法は、10進浮動小数点演算の結果が、IEEE754−2008規格によって定義される推奨指数のような推奨量子を表さない場合に、本明細書では「量子例外」と呼ばれる例外を生じさせることができる、10進浮動小数点プロセッサを含む。これは、ハードウェア形式を超える処理の検出を可能にするので、そのソフトウェア又はプログラミング言語が実行されるハードウェアよりも高い精度又は広い範囲を有する10進形式をサポートするソフトウェア又はプログラミング言語にとって特に有用である。
【0016】
本考察の文脈において、「量子」は、浮動小数点表現の最下位桁/最小有効数字(least significant digit:LSD)の「単位」を指す。以前に定義された浮動小数点例外は、ある種の処理の不正確さを検出するが、推奨指数ではないスケール又は指数の表現を有する10進浮動小数点演算結果の事例を完全には検出しない。別の言い方をすれば、既存の浮動小数点例外は、もしそのプロセッサにおいて係数を表現するための精度がもっと高ければ作り出されたはずの指数を有さない10進浮動小数点演算結果の事例を完全には示さない。IEEE754−2008規格は、推奨量子の値は定義するが、10進浮動小数点演算の結果においてその推奨値が達成されない場合の例外は定義しない。下記に説明される方法及びシステムの量子例外は、他のIEEE例外と同様の制御を有するものとして定義される。量子例外はまた、関連付けられたマスク、フラグ及び例外コードも有する。これは、異なる精度及び範囲をもつプログラミング言語を標準化された形式上で容易にエミュレートすることを可能にし、予期しない指数変更を検出する一方で、十分な精度及び範囲の形式を提供することを可能にする。
【0017】
一実施形態の量子例外イベントは、10進浮動小数点演算が、丸められた(rounded)又はクランプされた(clamped)結果を生成するときに発生する。ある種のJava実装は、Rounded及びClampedと呼ばれる別個のイベントを含むが、一実施形態の量子例外は、本質的に、結果の精度又は範囲を越えたことを示す。一実施形態における量子例外報告機構は制御可能であり、例外のアサーションの結果もたらされる動作を制御するためのマスク・ビットを有する。一実施形態において、マスク・ビットはもっぱら、プロセッサの浮動小数点制御語(FPC)において、量子例外をプログラム例外ハンドラへのトラップからマスクする用途に使われる。マスク・ビットが1であり、かつ量子例外が発生した場合、例外を引き起こす10進浮動小数点演算の結果は浮動小数点レジスタ(FPR)内に書き込まれ、例外の型を識別するコードは浮動小数点制御語(FPC)に書かれ、プログラム実行はプログラム割り込みハンドラにトラップされる。マスク・ビットが設定されていない場合は、スティッキー・フラグである量子例外フラグが設定され、トラップは行われない。
【0018】
本発明の実施形態は、10進浮動小数点数を用いて演算を行う。IEEE754−2008を含む種々の規格によって定義される10進浮動小数点数は、3つの構成要素、即ち、符号ビット、指数及び有効数字を有する。符号なしの値である数字の大きさは、有効数字と、指数で累乗された基数との積である。10進浮動小数点数においては、基数は10である。数字の符号は、符号ビットが0であるか又は1であるかに応じて、それぞれ正又は負である。
【0019】
有効数字は暗黙の基数点を有し、その位置は、浮動小数点データのどの解釈又は表示(view)が適用されるかによる。本発明の実施形態は、10進浮動小数点数を右単位表示で表し、ここでは、有効数字の最右桁が単位桁であり、基数点は有効数字全体のすぐ右側にあることが暗黙に示される。
【0020】
図1は、本発明の一実施形態によるコンピュータ・プロセッサ100を示す。コンピュータ・プロセッサ100は、10進浮動小数点ユニット110、浮動小数点レジスタ108及びプログラム・コントローラ124を含む、命令プロセッサを含む。10進浮動小数点ユニット110は、プログラム・メモリ152内に格納されたプログラム命令を受信するプログラム・コントローラ124から、10進浮動小数点命令を受信する。10進浮動小数点ユニット110に対して発行された10進浮動小数点命令は、例えば、1つ又は複数の10進浮動小数点数に対して実施するデータ変換及び/又は10進浮動小数点計算を指定する命令を含む。10進浮動小数点ユニット110は、浮動小数点レジスタ108内の1つ又は複数のソース・レジスタから10進浮動小数点データを読み出すことによって、10進浮動小数点オペランドを受け取り、指定された10進浮動小数点演算を実施し、その結果を浮動小数点レジスタ内の宛先レジスタの中に格納する。データは、一般に、浮動小数点レジスタ108とデータ・メモリ150との間で交換される。
【0021】
一実施形態の10進浮動小数点ユニットは、IEEE754−2008浮動小数点規格のような適用可能な浮動小数点処理規格に従って、10進浮動小数点数に対して演算を実施する。10進浮動小数点演算への入力であるソース・オペランドの量子値が、一般に、その演算の出力のために関連規格によって定義されるような推奨量子を定義するための基準である。10進浮動小数点ユニット110において利用可能な精度に起因して、ソース・オペランドの値が、推奨量子とは異なる量子を有する結果を生成することがある。結果の量子は、例えば、指定された演算の中間結果又は最終結果の丸めを引き起こす、10進浮動小数点ユニット110の制限されたハードウェア精度に起因して、推奨量子から変更されることがある。計算ハードウェアの精度と、10進浮動小数点算術を組み込んだソフトウェア・アーキテクチャの精度との差はこの量子損失検出機構によって検出され、ソフトウェアが、ハードウェア精度からエミュレートするもっと高い精度に切り替える必要がある場合を検出することを可能にし、このことが、性能が最適化された実装を提供する。
【0022】
一実施形態の10進浮動小数点ユニット110は、量子例外検出器112を含む。量子例外検出器112は、推奨量子とは異なる量子を有する、10進浮動小数点演算によって生成された結果の発生を検出し、ここで、推奨量子は、例えば、ソース・オペランドの値及び/又は量子に基づいて求められる定義された値である。推奨量子と特定の演算の結果の量子との差は、例えば、ソース・オペランドの実際の値によって引き起こされるハードウェアのオーバーフロー又はアンダーフロー状態によって引き起こされ得る。
【0023】
一実施形態の量子例外検出器112は、10進浮動小数点ユニット110によって生成された結果が推奨量子の値とは異なる量子又は指数の値を有することを示すために、「量子例外」をアサートする。一実施形態の量子例外のアサーション及び処理は、他の浮動小数点処理例外と同様である。一実施形態における量子例外のアサーションは、量子例外フラグ122に反映され、量子例外フラグ122は、一実施形態の浮動小数点ユニット110によって維持され、アサートされた量子例外などの10進浮動小数点例外を識別するために、例外コードに変更可能に割り当てることができる。
【0024】
本発明の一実施形態は、量子例外検出器112による量子例外のアサーションに応答して取られるアクションを制御することをサポートする。本発明の一実施形態は、設定状態又は非設定状態に変更可能に割り当てられた1つ又は複数の例外制御マスクを含む、例外制御レジスタ106を維持する。本発明の一実施形態において、プロセッサは、例外制御レジスタ106の例として浮動小数点制御語(FPC)を含む。
【0025】
例外制御レジスタ106は、IEEE754−2008規格によって定義された例外のような種々の浮動小数点例外に対する応答を制御するために、例えば、マスクを設定することを可能にする。種々の規格によって定義された例外のためのマスクの定義を可能にすることに加えて、本発明の一実施形態は、上述の量子例外のアサーションに応答して発生する処理を制御するために、付加的なマスク・ビットを含む。一実施形態において、量子例外マスク・ビットが設定状態に割り当てられている場合に量子例外が発生すると、推奨量子とは異なる量子を有する、10進浮動小数点ユニットによって生成された算術結果は、浮動小数点レジスタ108内の結果レジスタ120に書き込まれ、プログラム・コントローラ124には、プログラムの実行をプログラム割り込みハンドラにトラップするように、信号が送られる。量子例外マスク・ビットが非設定状態に割り当てられている場合に量子例外が発生すると、量子例外フラグ122がスティッキー・フラグとして設定され、プログラム実行は、プログラム割り込みハンドラにトラップされることなく続行する。一実施形態における「スティッキー・フラグ」量子例外フラグ122は、後続の命令を処理する間、設定されたままにされ、量子例外の発生後に続くその命令シーケンスの実行後に、量子例外の遅延検出及び量子例外に応答した結果としての処理を可能にする。
【0026】
本発明の一実施形態は、量子例外の検出、及びそれに応答して取られるアクションをさらに制御するために、幾つかの機械コード命令内に付加的な制御フィールドを設ける。一例において、10進浮動小数点機械言語命令のような幾つかの機械言語命令は、それらの命令について個々に量子例外検出をイネーブルにするために、機械言語命令テキスト内に量子例外制御ビット(XqCビット)又は量子例外制御フィールドを含む。こうした命令の例として、例えば、Convert from Integer(整数からの変換)命令、Divide(除算)命令、Load FP Integer(FP整数ロード)命令、Load Rounded(ロード丸め)命令、Multiply(乗算)命令、Quantize(量子化)命令、Reround(再丸め)命令、Subtract(減算)命令などが挙げられる。
【0027】
個々の命令内に量子例外制御ビット又はフィールドを含めることで、同じ命令を異なる仕方で用いて量子例外を検出する又は検出しないことが可能になり、不正確結果例外(inexact result exception)を検出する際の自由度を提供する。不正確結果例外を検出する際の自由度は、算術演算が、例えば、データ型間での暗黙変換又は明示的変換を用いて結果を生成することを期待される場合、或いは、算術演算の結果として、例えば、種々のソフトウェア・プログラミング言語によって定義されるように床演算及び天井演算が行われる場合に、異なる処理を実施することを可能にする。予期しない暗黙変換が発生し得る環境の例は、ソフトウェアの10進浮動小数点実装が、そのソフトウェアが実行されるハードウェアよりも高い精度でエミュレートされる事例である。このような事例においては、ソフトウェア環境は、自身の、より高い精度に基づいて、指定された計算が推奨量子を維持することができると判定する。しかしながら、ハードウェアは、精度が低いので、結果を丸めなければならず、予期せずに不正確状態に直面する。しかしながら、例えばビット切り捨てのような明示的変換から生じる「不正確さ」によって、プログラム実行が変更される結果となるべきではない。プログラマが意識しないデータ型間の暗黙変換の場合には、不正確さは検出されるべきであり、その事例に関しては、プログラム実行は変更されるべきである。不正確さは、量子損失の1つの構成要素であるので、一実施形態においては、量子例外検出、及びそれらの量子例外の発生に対する処理応答を命令ベースで制御するために、付加的な制御が設けられる。
【0028】
一実施形態において、他の例外を制御するために用いられる、選択された10進浮動小数点命令の制御フィールドは、さらに量子例外制御ビット(例えば、XqCビット)を含む量子例外制御フィールドもエンコードするように拡張される。一例において、量子例外制御ビット(XqCビット)は、選択された10進浮動小数点命令の丸めモード制御フィールド(RMC)内にエンコードされる。一例のRMCフィールドは、特定の明示的丸めモードに関連付けられた例外を制御するために0及び8乃至15に等しい値が予め定義されている、4ビットのフィールドである。この例においては、一実施形態の量子例外制御フィールドは、1乃至7に等しいRMCフィールドの値に割り当てられる。1乃至7に等しいRMCフィールドの値は、量子例外をイネーブルにし、これらの値についての特定の丸めモードを選ぶ。これらの選択された命令のRMCフィールドを0又は8乃至15の値に設定すると、それらの命令が実行されるときに量子例外は検出されないことになる。しかしながら、1乃至7に等しいRMCフィールドの値は、量子例外の検出、及びこれに対応するプログラム実行の変更を生じさせる。
【0029】
図2は、本発明の一実施形態による、10進浮動小数点演算の実行200を示す。10進浮動小数点演算の実行200は、202において、実行のための10進浮動小数点演算命令を10進浮動小数点ユニット110によって受信することにより開始する。一実施形態において、受信される10進浮動小数点演算命令は、プログラム・メモリ152内に格納されたプログラムの一部であり、コンピュータ・プロセッサ100のプログラム・コントローラ124によって受信される。プログラム・コントローラ124は、受信された10進浮動小数点演算命令を、実行のために10進浮動小数点ユニット110に対して発行する。一実施形態において、10進浮動小数点命令は、第1のソース・オペランドであるOperand A 102及び第2のソース・オペランドであるOperand B 104を指定する。これら2つのソース・オペランドは、浮動小数点レジスタ108内に存在しているように図示されているが、本開示を鑑みれば当業者には理解されるように、種々のアドレス指定モードを用いて、様々な位置に配置されたソース及び宛先オペランドを指定することができる。
【0030】
処理は、204において第1のソース・オペランドであるOperand A 102を読み出し、206において第2のソース・オペランドであるOperand B 104を読み出すことによって続く。実施形態は、1つ又は複数のオペランドをいずれかの適切な手段を通じて命令プロセッサ内に受け入れることができる。受信された10進浮動小数点演算によって生成されることになる結果についての推奨量子が、次に、208において求められる。一実施形態において、推奨量子は、2つのソース・オペランド、Operand A 102及びOperand B 104の値に少なくとも部分的に基づいて求められる。
【0031】
受信された10進浮動小数点命令によって指定された10進浮動小数点演算が、次に、210において実施される。212において、実行された10進浮動小数点命令の結果が、その結果についての推奨量子を維持するかどうかの判定が行われる。
【0032】
10進浮動小数点演算の結果が推奨量子を維持できない場合には、処理は、220において量子例外制御マスクが設定されているかどうかを判定することに続く。上述のように、種々の実施形態は、量子例外の発生の結果に影響を及ぼすように、1つ又は複数の制御マスクを設ける。一般的な量子例外制御マスクを例外制御レジスタ106内に設定することもでき、或いは、量子例外制御ビット又はフィールドを個々の10進浮動小数点機械言語命令内にエンコードすることもできる。量子例外制御ビットを個々の命令内にエンコードする場合、一実施形態は、機械言語命令内にエンコードされた量子例外制御ビット又はマスクを読み取り、その機械言語命令の実行の間中、その値を用いる。
【0033】
220において、量子例外マスクが設定されていると判定された場合には、230において、プロセッサは、10進浮動小数点演算の結果を、浮動小数点レジスタ108の結果レジスタ120のような、結果又は宛先位置120内に格納する。量子例外はプログラム・コントローラ124への出力によって示され、232においてプログラム実行のプログラムの割り込みハンドラへのトラップを生じさせる。
【0034】
220において、量子例外マスクが設定されていないと判定された場合は、量子例外はプログラム実行のトラップを生じさせるのではなく、量子例外は後の処理のために注釈付けされる。量子例外マスクが設定されていない場合には、一実施形態の処理は、222において、浮動小数点レジスタ108の結果レジスタ120のような、結果又は宛先位置120内に結果を格納する。量子例外は、量子例外が発生したことを示すスティッキー・フラグよって量子例外フラグ122を設定することによって、示される。
【0035】
210において実施された10進浮動小数点演算が推奨量子を維持した結果を生成した場合には、その結果は214において格納される。一実施形態において、結果は、浮動小数点レジスタ108の結果、即ち宛先位置120に格納される。10進浮動小数点演算の結果が推奨量子を維持する場合には、量子例外フラグ122の値又は状態は影響を受けないことが注目される。量子例外フラグ122の状態を、影響を受けないままにしておくことによって、以前に実行された10進浮動小数点命令において発生した量子例外の発生の指標が量子例外フラグにおいて維持され、その後の処理で、量子例外フラグ122を検査して、命令シーケンスによって生成された結果が、その命令シーケンスの実行中に発生した量子例外によって影響を受けているかどうかを判定することができる。
【0036】
214において結果を格納した後、又は224において量子例外フラグを設定した後に、処理は、240において、実行すべき命令がそれ以上あるかどうかを判定する。本発明の一実施形態は、命令シーケンスを量子例外マスクが設定されていない状態で実行されるように定義することを可能することで、そのシーケンスのいずれかの命令の間に発生する量子例外がスティッキー量子例外フラグ122を設定させることになるようにして、その命令シーケンスの実行の継続を可能にするようにさせる。スティッキー量子例外フラグ122は、次に、量子例外が命令のシーケンスの間に発生したかどうかを判定するために下記に説明されるように検査される。スティッキー量子例外フラグ122が、こうした命令のシーケンスの最後において設定状態にあると判定されると、プログラム実行は、量子例外の発生に対処する、量子変更の発生に応答した特別な処理を実行するように変更される。
【0037】
命令がそれ以上存在する場合には、242において、次の命令が10進浮動小数点命令であるかどうかの判定が行われる。次の命令が10進浮動小数点命令である場合には、処理は、202において、その10進浮動小数点命令を受信することに戻る。次の命令が10進浮動小数点命令ではない場合には、処理は、240において実行すべき命令がそれ以上あるかどうかを判定することに戻る。
【0038】
実行すべき命令がそれ以上ない場合には、一実施形態の処理は、244において、量子例外フラグ122が設定されているかどうかを判定することに続く。上述のように、処理は、量子例外マスクが設定されておらず、かつ量子例外がプログラム命令のシーケンスの間に発生した場合に、量子例外フラグを設定する。量子例外フラグが設定されている場合、処理は、246において、以前に検出された量子例外イベントに適合する処理を実施する。次に、処理は終了する。
【0039】
情報処理システム
当業者には認識されるように、本発明の態様は、システム、方法又はコンピュータ・プログラムとして具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、これらはすべて本明細書において一般的に「回路」、「モジュール」又は「システム」と呼ぶことがある。さらに、本発明の態様は、具体化されたコンピュータ可読プログラム・コードをその中に有する1つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラムの形態をとることができる。
【0040】
1つ又は複数のコンピュータ可読媒体のいずれの組み合わせを使用することもできる。コンピュータ可読媒体は、コンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、電子的、磁気的、光学的、電磁気的、赤外線若しくは半導体のシステム、装置若しくはデバイス、又は上記のもののいずれかの適切な組み合わせとすることができるが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例(非網羅的なリスト)は、以下のもの、即ち、1つ又は複数のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能読み取り専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせを含む。本文書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって、又はこれらに関連して用いるためのプログラムを収容又は格納することができる、いずれかの有形媒体とすることができる。
【0041】
本発明の態様に関する動作を遂行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++等のようなオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語のいずれかの組み合わせで記述することができる。プログラム・コードは、独立したソフトウェア・パッケージとして、全体がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は全体が遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じた)接続がなされる場合もある。
【0042】
本発明の態様を、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラムのフローチャート図及び/又はブロック図を参照して下記に説明する。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実施できることが理解されるであろう。コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施するための手段を作り出すように、これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて、機械を製造することができる。
【0043】
コンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施する命令を含む製品を製造するように、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置又は他のデバイスを特定の方式で機能させるよう指示することができるコンピュータ可読媒体内に格納することもできる。
【0044】
コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するためのプロセスを提供するように、コンピュータ・プログラム命令をコンピュータ、他のプログラム可能装置又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で実施させ、コンピュータ実装プロセスを生成することもできる。
【0045】
ここで図3を参照すると、これは、図1に関して上述されたプロセッサ100と併せて用いることができる情報処理システム300を示すブロック図である。情報処理システム300は、本発明の1つ又は複数の実施形態を実施するように適合された、適切に構成された処理システムに基づく。同様に、任意の適切に構成された処理システムを、本発明の実施形態によって情報処理システム300として用いることができる。
【0046】
情報処理システム300は、コンピュータ302を含む。コンピュータ302は、キャッシュ・メモリ306、メモリ322、大容量ストレージ・インターフェース308及びネットワーク・アダプタ・ハードウェア310に接続されるプロセッサ304を有する。システム・バス312が、これらのシステム・コンポーネントを相互接続する。
【0047】
大容量ストレージ・インターフェース308を用いて、データ・ストレージ・デバイス314のような大容量ストレージ・デバイスを情報処理システム300に接続する。データ・ストレージ・デバイスの1つの具体的なタイプは、CD/DVDドライブのような光ドライブであり、これを用いて、CD/DVD316(限定ではないが)のようなコンピュータ可読媒体又はストレージ製品にデータを格納し、そこからデータを読み出すことができる。データ・ストレージ・デバイスの別のタイプは、例えばNTFS型ファイル・システム操作をサポートするように構成されたデータ・ストレージ・デバイスである。
【0048】
メモリ322内に含まれるオペレーティング・システム(図示せず)は、Linux、UNIX、Windows XP及びWindows Server2003オペレーティング・システムのような適切なマルチタスク・オペレーティング・システムである。本発明の実施形態は、いずれかの他の適切なオペレーティング・システムを用いることもできる。本発明の幾つかの実施形態は、オペレーティング・システム(図示せず)のコンポーネントの命令を情報処理システム300内に配置されたいずれかのプロセッサ上で実行することを可能にする、オブジェクト指向フレームワーク機構のようなアーキテクチャを使用する。一実施形態におけるネットワーク・アダプタ・ハードウェア310は、1つ又は複数のネットワーク320に対するネットワーク通信インターフェースを提供する。本発明の実施形態は、現在のアナログ及び/又はデジタル技術を含む、或いは将来のネットワーキング機構を通じた、いずれかのデータ通信接続と共に機能するように適合させることができる。
【0049】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラムの可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能な命令を含む、モジュール、セグメント又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図面内に記された順序以外の順序で行われる場合があることにも留意されたい。例えば、連続して示された2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックは、ときには逆の順序で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェアベースのシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
【0050】
非限定的な例
本発明の特定の実施形態を開示したが、当業者であれば、本発明の趣旨及び範囲から逸脱することなく特定の実施形態に対する変更を行うことができることを理解するであろう。従って、本発明の範囲は、特定の実施形態に限定されず、添付の特許請求の範囲は、本発明の範囲内のいずれか又は全てのこのような用途、改変及び実施形態を包含することが意図される。
【符号の説明】
【0051】
100:コンピュータ・プロセッサ
200:10進浮動小数点演算の実行
300:情報処理システム
302:コンピュータ
312:システム・バス

【特許請求の範囲】
【請求項1】
処理例外を検出するための方法であって、
プロセッサを用いて、
少なくとも1つの浮動小数点オペランドを受け取るステップと、
前記少なくとも1つの10進浮動小数点オペランドに対して10進浮動小数点演算を実施して、10進浮動小数点結果を生成するステップと、
前記実施に応答して、前記10進浮動小数点結果が推奨量子を維持できないことを判定するステップであって、前記推奨量子が、前記10進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す、ステップと、
前記10進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、量子例外を示す出力を提供するステップであって、前記量子例外が、前記10進浮動小数点結果が前記推奨量子を維持できないことに応答して発生する、ステップと
を実施することを含む方法。
【請求項2】
前記少なくとも1つの10進浮動小数点オペランドに基づいて、前記推奨量子を求めるステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記出力を提供するステップが、前記10進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、量子例外フラグを設定することを含む、請求項1に記載の方法。
【請求項4】
前記出力を提供するステップが、ソフトウェア実行トラップをトリガすることを含む、請求項1に記載の方法。
【請求項5】
量子例外フラグを、設定状態及び非設定状態のうちの一方に維持するステップと、
量子例外マスクを、設定状態及び非設定状態のうちの一方に維持するステップと、
プログラム命令シーケンスを実行するステップであって、前記プログラム命令シーケンスが、前記10進浮動小数点演算のための命令を含み、前記実施が、前記10進浮動小数点演算のための前記命令の実行に応答するものである、ステップと、
前記10進浮動小数点結果を、宛先ストレージ位置内に格納するステップと、
前記量子例外マスクが非設定状態にあること、及び前記10進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、前記命令シーケンスの実行を継続するステップと、
前記量子例外マスクが設定状態にあること、及び前記10進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、前記プログラム命令シーケンスの実行をトラップするステップであって、前記トラップがプログラム割り込みハンドラを実行することを含む、ステップと
をさらに含み、
前記出力を提供するステップが、前記量子例外フラグを前記設定状態に設定することを含む、請求項1に記載の方法。
【請求項6】
前記プログラム命令シーケンスを実行するステップに続いて、前記量子例外フラグが前記設定状態にあることを判定するステップと、
前記量子例外フラグが前記設定状態にあるとの判定に応答し、かつ前記プログラム命令シーケンスの実行に続いて、前記量子例外の発生に対処するようにプログラム実行を変更するステップと
をさらに含む、請求項5に記載の方法。
【請求項7】
前記量子例外マスクを維持するステップが、
前記10進浮動小数点演算のための前記命令に対応する機械言語命令にエンコードされた量子例外マスク値を読み取ることをさらに含み、
前記量子例外マスクを維持するステップが、前記10進浮動小数点演算のための前記命令の実行の間中、前記量子例外マスク値を用いることを含む、
請求項5に記載の方法。
【請求項8】
前記量子例外マスク値は、前記機械言語命令の例外制御フィールドにエンコードされ、前記例外制御フィールドは、他の浮動小数点例外のための例外マスクをさらにエンコードする、請求項7に記載の方法。
【請求項9】
処理例外を検出するためのシステムであって、前記システムは、
メモリと、
前記メモリに通信可能に結合されたプロセッサと
を含み、前記プロセッサは、
命令プロセッサであって、
少なくとも1つの10進浮動小数点オペランドを受け取り、
前記少なくとも1つの10進浮動小数点オペランドに対して10進浮動小数点演算を実施して、10進浮動小数点結果を生成する、命令プロセッサと、
前記命令プロセッサが前記10進浮動小数点演算を実施したことに応答して、前記10進浮動小数点結果が推奨量子を維持できないことを判定する量子例外検出器であって、前記推奨量子が、前記10進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す、量子例外検出器と、
前記量子例外検出器が、前記10進浮動小数点結果が前記推奨量子を維持できないと判定したことに応答して、量子例外を示す出力を提供する量子例外応答ユニットであって、前記量子例外が、前記10進浮動小数点結果が前記推奨量子を維持できないことに応答して発生する、量子例外応答ユニットと
を含むシステム。
【請求項10】
前記命令プロセッサが、前記少なくとも1つの10進浮動小数点オペランドに基づいて、前記推奨量子をさらに求める、請求項9に記載のシステム。
【請求項11】
前記量子例外応答ユニットが、前記10進浮動小数点結果が前記推奨量子を維持できないと前記量子例外検出器が判定したことの判定に応答して、量子例外フラグを設定する、請求項9に記載のシステム。
【請求項12】
前記量子例外応答ユニットが、ソフトウェア実行トラップをトリガすることを含む出力を提供する、請求項9に記載のシステム。
【請求項13】
前記命令プロセッサが、さらに、
量子例外フラグを、設定状態及び非設定状態のうちの一方に維持し、
量子例外マスクを、設定状態及び非設定状態のうちの一方に維持し、
プログラム命令シーケンスを実行し、前記プログラム命令シーケンスは前記10進浮動小数点演算のための命令を含み、
前記10進浮動小数点演算のための前記命令の実行に応答して、前記10進浮動小数点演算を実施し、
前記10進浮動小数点結果を、宛先ストレージ位置内に格納し、
前記量子例外マスクが非設定状態にあること、及び前記量子例外検出器が、前記10進浮動小数点結果が前記推奨量子を維持できないと判定したことに応答して、前記命令シーケンスの実行を継続し、
前記量子例外マスクが設定状態にあること、及び前記量子例外検出器が、前記10進浮動小数点結果が前記推奨量子を維持できないと判定したことに応答して、前記プログラム命令シーケンスの実行をトラップし、前記量子例外応答ユニットは、前記命令プロセッサにプログラム割り込みハンドラを実行させることによって実行をトラップし、
前記量子例外応答ユニットがさらに、前記10進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、前記量子例外フラグを前記設定状態に設定する、
請求項9に記載のシステム。
【請求項14】
前記命令プロセッサが、さらに、
前記プログラム命令シーケンスを実行することに続いて、前記量子例外フラグが前記設定状態にあることを判定し、
前記量子例外フラグが前記設定状態にあるとの判定に応答し、かつ前記プログラム命令シーケンスを実行することに続いて、前記量子例外の発生に対処するようにプログラム実行を変更する、
請求項13に記載のシステム。
【請求項15】
前記命令プロセッサが、さらに、
前記10進浮動小数点演算のための前記命令に対応する機械言語命令にエンコードされた量子例外マスク値を読み取り、
前記10進浮動小数点演算のための前記命令の実行の間中、前記量子例外マスク値を用いる、
請求項13に記載のシステム。
【請求項16】
前記量子例外マスク値は、前記機械言語命令の例外制御フィールドにエンコードされ、前記例外制御フィールドは、他の浮動小数点例外のための例外マスクをさらにエンコードする、請求項15に記載のシステム。
【請求項17】
処理例外を検出するためのコンピュータ・プログラムであって、
前記コンピュータ・プログラムは、プロセッサに、
少なくとも1つの浮動小数点オペランドを受け取るステップと、
前記少なくとも1つの10進浮動小数点オペランドに対して10進浮動小数点演算を実施して、10進浮動小数点結果を生成するステップと、
前記実施に応答して、前記10進浮動小数点結果が推奨量子を維持できないことを判定するステップであって、前記推奨量子が、前記10進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す、ステップと、
前記10進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、量子例外を示す出力を提供するステップであって、前記量子例外が、前記10進浮動小数点結果が前記推奨量子を維持できないことに応答して発生する、ステップと
を実行させる、
コンピュータ・プログラム。
【請求項18】
前記出力を提供するステップが、前記10進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、量子例外フラグを設定することを含む、請求項17に記載のコンピュータ・プログラム。
【請求項19】
前記コンピュータ・プログラムは前記プロセッサに、
量子例外フラグを、設定状態及び非設定状態のうちの一方に維持するステップと、
量子例外マスクを、設定状態及び非設定状態のうちの一方に維持するステップと、
プログラム命令シーケンスを実行するステップであって、前記プログラム命令シーケンスが、前記10進浮動小数点演算のための命令を含み、前記実施が、前記10進浮動小数点演算のための前記命令の実行に応答するものである、ステップと、
前記10進浮動小数点結果を、宛先ストレージ位置内に格納するステップと、
前記量子例外マスクが非設定状態にあること、及び前記10進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、前記命令シーケンスの実行を継続するステップと、
前記量子例外マスクが設定状態にあること、及び前記10進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、前記プログラム命令のシーケンスの実行をトラップするステップであって、前記トラップがプログラム割り込みハンドラを実行することを含む、ステップと
をさらに実行させ、
前記出力を提供するステップが、前記量子例外フラグを前記設定状態に設定することを含む、請求項17に記載のコンピュータ・プログラム。
【請求項20】
前記コンピュータ・プログラムは前記プロセッサに、
前記プログラム命令シーケンスを実行するステップに続いて、前記量子例外フラグが前記設定状態にあることを判定するステップと、
前記量子例外フラグが前記設定状態にあるとの判定に応答し、かつ前記プログラム命令のシーケンスの実行に続いて、前記量子例外の発生に対処するようにプログラム実行を変更するステップと
をさらに実行させる、請求項19に記載のコンピュータ・プログラム。
【請求項21】
前記コンピュータ・プログラムは前記プロセッサに、前記10進浮動小数点演算のための前記命令に対応する機械言語命令にエンコードされた量子例外マスク値を読み取るステップをさらに実行させ、
前記量子例外マスクを維持するステップが、前記10進浮動小数点演算のための前記命令の実行の間中、前記量子例外マスク値を用いることを含む、
請求項19に記載のコンピュータ・プログラム。
【請求項22】
メモリと、
前記メモリに通信可能に結合されたプロセッサと
を含むデータ処理システムであって、前記プロセッサは、
10進浮動小数点演算に応答して生成された10進浮動小数点結果が推奨量子を維持できないことを判定する量子例外検出器であって、前記推奨量子が、前記10進浮動小数点結果の有効数字の最下位桁によって表される定義された値を示す、量子例外検出器と、
前記量子例外検出器が、前記10進浮動小数点結果が前記推奨量子を維持できないと判定したことに応答して、量子例外を示す出力を提供する量子例外応答ユニットであって、前記量子例外が、前記10進浮動小数点結果が前記推奨量子を維持できないことに応答して発生する、量子例外応答ユニットと
を含むシステム。
【請求項23】
前記量子例外応答ユニットが、ソフトウェア実行トラップをトリガすることを含む出力を提供する、請求項22に記載のシステム。
【請求項24】
設定状態及び非設定状態に変更可能に割り当てられる量子例外フラグと、
設定状態及び非設定状態に変更可能に割り当てられる量子例外マスクと
をさらに含み、
前記量子例外検出器が、前記10進浮動小数点結果が前記推奨量子を維持できないとの判定に応答して、前記量子例外フラグを前記設定状態にさらに割り当て、
前記量子例外応答ユニットが、
前記量子例外マスクが設定状態に割り当てられていること、及び前記量子例外検出器が、前記10進浮動小数点結果が前記推奨量子を維持できないと判定したことに応答して、プログラム割り込みハンドラを実行させることによって、プログラム実行をトラップさせ、
前記量子例外マスクが非設定状態に割り当てられていること、及び前記量子例外検出器が、前記10進浮動小数点結果が前記推奨量子を維持できないと判定したことに応答して、プログラム実行を継続させる、
請求項22に記載のシステム。
【請求項25】
前記10進浮動小数点結果を生成する10進浮動小数点演算のための命令を含むプログラム命令シーケンスを実行し、
前記プログラム命令シーケンスを実行することに続いて、前記量子例外フラグが前記設定状態に割り当てられていることを判定し、
前記量子例外フラグが前記設定状態に割り当てられているとの判定に応答し、かつ前記プログラム命令シーケンスを実行することに続いて、前記量子例外の発生に対処するようにプログラム実行を変更する、
命令プロセッサをさらに含む、請求項24に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2011−248890(P2011−248890A)
【公開日】平成23年12月8日(2011.12.8)
【国際特許分類】
【出願番号】特願2011−116699(P2011−116699)
【出願日】平成23年5月25日(2011.5.25)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
2.UNIX
3.WINDOWS
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【復代理人】
【識別番号】100110607
【弁理士】
【氏名又は名称】間山 進也