JP2011248890A - 10進浮動小数点の量子例外検出 - Google Patents

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

Info

Publication number
JP2011248890A
JP2011248890A JP2011116699A JP2011116699A JP2011248890A JP 2011248890 A JP2011248890 A JP 2011248890A JP 2011116699 A JP2011116699 A JP 2011116699A JP 2011116699 A JP2011116699 A JP 2011116699A JP 2011248890 A JP2011248890 A JP 2011248890A
Authority
JP
Japan
Prior art keywords
quantum
floating point
decimal floating
exception
quantum exception
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.)
Granted
Application number
JP2011116699A
Other languages
English (en)
Other versions
JP5005102B2 (ja
Inventor
Mark Schwartz Eric
エリック・マーク・シュワルツ
She Ye Hui
フィル・シー・イェ
Frederick Cowlishaw Michael
マイケル・フレデリック・カウリショウ
Silvia Melitta Muller Dr
ドクター・シルビア・メリタ・ミューラー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2011248890A publication Critical patent/JP2011248890A/ja
Application granted granted Critical
Publication of JP5005102B2 publication Critical patent/JP5005102B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • 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
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • 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/491Indexing scheme relating to groups G06F7/491 - G06F7/4917
    • G06F2207/4911Decimal floating-point representation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

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

Claims (25)

  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に記載のシステム。
JP2011116699A 2010-05-28 2011-05-25 10進浮動小数点の量子例外検出 Active JP5005102B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/789,765 US8219605B2 (en) 2010-05-28 2010-05-28 Decimal floating-pointing quantum exception detection
US12/789765 2010-05-28

Publications (2)

Publication Number Publication Date
JP2011248890A true JP2011248890A (ja) 2011-12-08
JP5005102B2 JP5005102B2 (ja) 2012-08-22

Family

ID=43263979

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011116699A Active JP5005102B2 (ja) 2010-05-28 2011-05-25 10進浮動小数点の量子例外検出

Country Status (14)

Country Link
US (2) US8219605B2 (ja)
EP (1) EP2430522B1 (ja)
JP (1) JP5005102B2 (ja)
KR (1) KR101464810B1 (ja)
CN (1) CN102331921B (ja)
AU (1) AU2010353843B2 (ja)
BR (1) BRPI1102360B1 (ja)
CA (1) CA2800643C (ja)
DK (1) DK2430522T3 (ja)
ES (1) ES2637205T3 (ja)
IL (1) IL223305A (ja)
RU (1) RU2526004C2 (ja)
SG (2) SG185620A1 (ja)
WO (1) WO2011147483A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170212763A1 (en) * 2014-07-25 2017-07-27 Hewlettt Packard Enterprise Development Lp Exception handling predicate register
CA2881033C (en) 2015-02-03 2016-03-15 1Qb Information Technologies Inc. Method and system for solving lagrangian dual of a constrained binary quadratic programming problem
US11797641B2 (en) 2015-02-03 2023-10-24 1Qb Information Technologies Inc. Method and system for solving the lagrangian dual of a constrained binary quadratic programming problem using a quantum annealer
US10324728B2 (en) * 2015-12-17 2019-06-18 International Business Machines Corporation Lightweight interrupts for condition checking
US10114642B2 (en) * 2015-12-20 2018-10-30 Intel Corporation Instruction and logic for detecting the floating point cancellation effect
JP6966177B2 (ja) 2016-03-11 2021-11-10 ワンキュービー インフォメーション テクノロジーズ インク. 量子計算のための方法及びシステム
US9870273B2 (en) 2016-06-13 2018-01-16 1Qb Information Technologies Inc. Methods and systems for quantum ready and quantum enabled computations
US10044638B2 (en) 2016-05-26 2018-08-07 1Qb Information Technologies Inc. Methods and systems for quantum computing
US9537953B1 (en) * 2016-06-13 2017-01-03 1Qb Information Technologies Inc. Methods and systems for quantum ready computations on the cloud
WO2020056764A1 (zh) * 2018-09-21 2020-03-26 华为技术有限公司 一种浮点精度检测方法与装置
US11620153B2 (en) * 2019-02-04 2023-04-04 International Business Machines Corporation Instruction interrupt suppression of overflow exception
CA3126553A1 (en) 2019-06-19 2020-12-24 1Qb Information Technologies Inc. Method and system for mapping a dataset from a hilbert space of a given dimension to a hilbert space of a different dimension

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63208939A (ja) * 1987-02-26 1988-08-30 Toshiba Corp 10進演算回路
JPS63214835A (ja) * 1987-03-03 1988-09-07 Nec Corp 多項算術式の浮動10進数計算方式
JPS6412332A (en) * 1987-07-07 1989-01-17 Oki Electric Ind Co Ltd Decimal arithmetic unit
JPH07248902A (ja) * 1994-03-11 1995-09-26 Fujitsu Ltd 浮動小数点演算装置とその誤差補正方法および線形計画問題最適化装置とその最適解の求解方法
JP2000305750A (ja) * 1999-04-26 2000-11-02 Denso Corp 車載用電子制御装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4958718A (ja) 1972-10-04 1974-06-07
KR970022528A (ko) * 1995-10-31 1997-05-30 김광호 부동소수점 제산기에서의 익셉션 처리방법
US5892697A (en) 1995-12-19 1999-04-06 Brakefield; James Charles Method and apparatus for handling overflow and underflow in processing floating-point numbers
US6427160B1 (en) 1999-08-10 2002-07-30 Sun Microsystems, Inc. Method and system for testing floating point logic
US6571265B1 (en) * 1999-10-29 2003-05-27 Intel Corporation Mechanism to detect IEEE underflow exceptions on speculative floating-point operations
US7069289B2 (en) 2001-05-25 2006-06-27 Sun Microsystems, Inc. Floating point unit for detecting and representing inexact computations without flags or traps
US7299170B2 (en) 2003-06-28 2007-11-20 Transitive Limited Method and apparatus for the emulation of high precision floating point instructions
US7290023B2 (en) * 2003-11-20 2007-10-30 International Business Machines Corporation High performance implementation of exponent adjustment in a floating point design
US7102552B1 (en) 2005-06-07 2006-09-05 Windspring, Inc. Data compression with edit-in-place capability for compressed data
US8595279B2 (en) * 2006-02-27 2013-11-26 Qualcomm Incorporated Floating-point processor with reduced power requirements for selectable subprecision
US8443029B2 (en) 2007-03-01 2013-05-14 International Business Machines Corporation Round for reround mode in a decimal floating point instruction
US8560591B2 (en) 2007-04-25 2013-10-15 International Business Machines Corporation Detection of potential need to use a larger data format in performing floating point operations
US8051117B2 (en) 2007-04-26 2011-11-01 International Business Machines Corporation Shift significand of decimal floating point data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63208939A (ja) * 1987-02-26 1988-08-30 Toshiba Corp 10進演算回路
JPS63214835A (ja) * 1987-03-03 1988-09-07 Nec Corp 多項算術式の浮動10進数計算方式
JPS6412332A (en) * 1987-07-07 1989-01-17 Oki Electric Ind Co Ltd Decimal arithmetic unit
JPH07248902A (ja) * 1994-03-11 1995-09-26 Fujitsu Ltd 浮動小数点演算装置とその誤差補正方法および線形計画問題最適化装置とその最適解の求解方法
JP2000305750A (ja) * 1999-04-26 2000-11-02 Denso Corp 車載用電子制御装置

Also Published As

Publication number Publication date
BRPI1102360A2 (pt) 2015-07-28
KR101464810B1 (ko) 2014-11-24
ES2637205T3 (es) 2017-10-11
EP2430522A1 (en) 2012-03-21
BRPI1102360B1 (pt) 2021-03-02
IL223305A (en) 2017-01-31
DK2430522T3 (en) 2017-09-11
AU2010353843B2 (en) 2014-08-28
CN102331921A (zh) 2012-01-25
CA2800643C (en) 2018-11-20
JP5005102B2 (ja) 2012-08-22
RU2526004C2 (ru) 2014-08-20
WO2011147483A1 (en) 2011-12-01
RU2012150400A (ru) 2014-06-10
CA2800643A1 (en) 2011-12-01
US8219605B2 (en) 2012-07-10
SG185620A1 (en) 2012-12-28
SG193162A1 (en) 2013-09-30
US9244654B2 (en) 2016-01-26
US20110296229A1 (en) 2011-12-01
KR20110131139A (ko) 2011-12-06
IL223305A0 (en) 2013-02-03
AU2010353843A1 (en) 2012-12-20
US20120278374A1 (en) 2012-11-01
EP2430522B1 (en) 2017-07-19
CN102331921B (zh) 2016-07-06

Similar Documents

Publication Publication Date Title
JP5005102B2 (ja) 10進浮動小数点の量子例外検出
US10324719B2 (en) Detection of potential need to use a larger data format in performing floating point operations
US9170773B2 (en) Mixed precision estimate instruction computing narrow precision result for wide precision inputs
US20160092165A1 (en) Machine instructions for converting from decimal floating point format to packed decimal format
US20160092164A1 (en) Machine instructions for converting to decimal floating point format from packed decimal format
JPH0863367A (ja) テストベクトルを発生する方法およびテストベクトル発生システム
US8407275B2 (en) Fast floating point compare with slower backup for corner cases
US11487506B2 (en) Condition code anticipator for hexadecimal floating point
US11314512B2 (en) Efficient checking of a condition code anticipator for a floating point processor and/or unit
KR20190086020A (ko) 간접적으로 명시된 위치로의 조건 분기

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110822

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110915

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110915

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20110915

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20111012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111122

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20111201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120220

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120522

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150601

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5005102

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150