(57)【要約】      （修正有）【課題】ターゲットプラットフォームが、ＤＡＺ機能をサポートしていない場合に、デノーマル例外のデノーマル入力をハンドリングする。【解決手段】デノーマル例外が検出されると、ＤＡＺメカニズムが、動的バイナリ変換器１０８によりエミュレーション可能である。このエミュレーションは、動的バイナリ変換器が、所定の値を有する、ターゲット命令のデノーマルオペランドを代入することを通じて行うことができる。このターゲット命令は、デノーマル例外に対応する障害のあるターゲット命令であり、所定の値は、元のオペランドの符号を有する０である。プロセッサ１０２は、次に、デノーマルオペランドについて新しく代入された値を有する障害のあるターゲット命令を実行することができる。【選択図】図１
2011070694.tif 000002
【特許請求の範囲】
【請求項１】
一組のソース命令を一組のターゲット命令に変換すること、
前記一組のターゲット命令を実行すること、及び
前記一組のソース命令がデノーマル入力ハンドリングメカニズムを使用する場合には、デノーマル入力制御ビットをマスク解除すること
を含む、方法。
【請求項２】
前記一組のターゲット命令を実行することによって、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出すること、
１つ又は２つ以上の非デノーマル例外に対応する１つ又は２つ以上の制御ビットがマスクされている場合には、前記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドに所定の値を代入すること、及び
前記１つ又は２つ以上のデノーマルオペランドについて前記所定の値を有する前記障害のあるターゲット命令を実行すること
を含む、請求項１に記載の方法。
【請求項３】
前記障害のあるターゲット命令の前記実行から得られた結果を適用することによって、前記障害のあるターゲット命令に続くターゲット命令の実行を再開すること
を含む、請求項２に記載の方法。
【請求項４】
前記障害のあるターゲット命令に続くターゲット命令の実行を再開することは、
前記障害のあるターゲット命令を指し示すことから、実行される後続のターゲット命令を指し示すことへ、命令ポインタを移動すること、及び
前記後続のターゲット命令を実行すること
を含む、請求項３に記載の方法。
【請求項５】
前記所定の値は０である、請求項２に記載の方法。
【請求項６】
前記一組のターゲット命令を実行することによって、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出すること、
１つ又は２つ以上の非デノーマル例外に対応する１つ又は２つ以上の制御ビットがマスク解除されている場合には、前記障害のあるターゲット命令の変換元のソース命令を回復すること、及び
前記ソース命令を再生成されるターゲット命令に再変換すること
を含む、請求項１に記載の方法。
【請求項７】
前記一組のソース命令が前記デノーマル入力ハンドリングメカニズムを使用するか否かを判断すること、
前記デノーマル入力ハンドリングメカニズムが使用される場合には、前記デノーマル例外に対する入力である１つ又は２つ以上のデノーマルオペランドを識別すること、及び
前記１つ又は２つ以上のデノーマルオペランドに所定の値を代入すること
を含む、請求項６に記載の方法。
【請求項８】
前記所定の値は０である、請求項７に記載の方法。
【請求項９】
ターゲット命令ブロックの実行中にデノーマル例外の個数をカウントすること、及び
前記デノーマル例外の前記個数が所定のしきい値に達する場合には、前記ターゲット命令ブロックを書き換えることであって、それによって、１つ又は２つ以上の組み込み命令を含める、書き換えること
を含む、請求項１に記載の方法。
【請求項１０】
前記１つ又は２つ以上の組み込み命令のうちの少なくとも１つを実行することであって、それによって、ターゲット命令が前記デノーマル例外を起こすか否かを判断する、実行すること、
前記ターゲット命令が前記デノーマル例外を起こす場合には、前記ターゲット命令の１つ又は２つ以上のデノーマルオペランドを識別すること、
前記１つ又は２つ以上のデノーマルオペランドに０の値を代入すること、及び
前記代入された０の値のデノーマルオペランドを有する前記ターゲット命令を実行すること
を含む、請求項９に記載の方法。
【請求項１１】
前記デノーマル入力ハンドリングメカニズムは、ＤＡＺメカニズムである、請求項１に記載の方法。
【請求項１２】
一組のソース命令を一組のターゲット命令に変換し、前記一組のソース命令がデノーマル入力ハンドリングメカニズムを使用する場合には、デノーマル入力制御ビットをマスク解除する動的バイナリ変換器と、
前記一組のターゲット命令を実行して、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出するプロセッサと
を備える、装置。
【請求項１３】
前記動的バイナリ変換器は、前記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドに所定の値を代入する例外ハンドラを備え、前記プロセッサは、前記１つ又は２つ以上のデノーマルオペランドについて前記所定の値を有する前記障害のあるターゲット命令を実行する、請求項１２に記載の装置。
【請求項１４】
前記プロセッサは、前記障害のあるターゲット命令の前記実行から得られた結果を適用することによって、前記障害のあるターゲット命令に続くターゲット命令の実行を再開する、請求項１３に記載の装置。
【請求項１５】
前記プロセッサは、前記障害のあるターゲット命令を指し示すことから、実行される後続のターゲット命令を指し示すことへ、命令ポインタを移動することによって、前記障害のあるターゲット命令に続くターゲット命令の実行を再開する、請求項１４に記載の装置。
【請求項１６】
前記動的バイナリ変換器は、前記障害のあるターゲット命令の変換元のソース命令を回復すると共に前記ソース命令を再生成されるターゲット命令に再変換する例外ハンドラを備える、請求項１２に記載の装置。
【請求項１７】
前記プロセッサは、前記一組のソース命令が前記デノーマル入力ハンドリングメカニズムを使用するか否かを判断し、前記デノーマル入力ハンドリングメカニズムが使用される場合には、前記デノーマル例外に対する入力である１つ又は２つ以上のデノーマルオペランドを識別し、且つ、前記１つ又は２つ以上のデノーマルオペランドに所定の値を代入する、請求項１６に記載の装置。
【請求項１８】
前記プロセッサは、ターゲット命令ブロックの実行中にデノーマル例外の個数をカウントし、且つ、前記デノーマル例外の前記個数が所定のしきい値に達する場合には、前記ターゲット命令ブロックを書き換えて１つ又は２つ以上の組み込み命令を含める、請求項１２に記載の装置。
【請求項１９】
前記プロセッサは、前記組み込み命令の少なくとも１つを実行して、ターゲット命令が前記デノーマル例外を起こすか否かを判断し、前記ターゲット命令が前記デノーマル例外を起こす場合には、前記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドを識別し、且つ、前記１つ又は２つ以上のデノーマルオペランドに所定の値を代入する、請求項１８に記載の装置。
【請求項２０】
一組のソース命令と、一組のターゲット命令と、動的バイナリ変換器とを記憶するメモリであって、前記動的バイナリ変換器は、前記一組のソース命令を前記一組のターゲット命令に変換し、且つ、前記一組のソース命令がデノーマル入力ハンドリングメカニズムを使用する場合には、デノーマル入力制御ビットをマスク解除するようになっている、メモリと、
前記一組のターゲット命令を実行して、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出するプロセッサと
を備える、システム。
【請求項２１】
前記動的バイナリ変換器は、前記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドに所定の値を代入する例外ハンドラを備え、前記プロセッサは、前記１つ又は２つ以上のデノーマルオペランドについて前記所定の値を有する前記障害のあるターゲット命令を実行する、請求項２０に記載のシステム。
【請求項２２】
前記プロセッサは、前記障害のあるターゲット命令の前記実行から得られた結果を適用することによって、前記障害のあるターゲット命令に続くターゲット命令の実行を再開する、請求項２１に記載のシステム。
【請求項２３】
前記動的バイナリ変換器は、前記障害のあるターゲット命令の変換元のソース命令を回復すると共に前記ソース命令を再生成されるターゲット命令に再変換する例外ハンドラを備える、請求項２０に記載のシステム。
【請求項２４】
前記プロセッサは、前記一組のソース命令が前記デノーマル入力ハンドリングメカニズムを使用するか否かを判断し、前記デノーマル入力ハンドリングメカニズムが使用される場合には、前記デノーマル例外に対する入力である１つ又は２つ以上のデノーマルオペランドを識別し、且つ、前記１つ又は２つ以上のデノーマルオペランドに所定の値を代入する、請求項２３に記載のシステム。
【請求項２５】
前記プロセッサは、ターゲット命令ブロックの実行中にデノーマル例外の個数をカウントし、且つ、デノーマル例外の前記個数が所定のしきい値に達する場合には、前記ターゲット命令ブロックを書き換えて１つ又は２つ以上の組み込み命令を含める、請求項２０に記載のシステム。
【請求項２６】
前記プロセッサは、前記組み込み命令のうちの少なくとも１つを実行して、ターゲット命令がデノーマル例外を起こすか否かを判断し、前記ターゲット命令がデノーマル例外を起こす場合には、前記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドを識別し、且つ、前記１つ又は２つ以上のデノーマルオペランドに所定の値を代入する、請求項２５に記載のシステム。
【請求項２７】
マシンによって実行されると、一組のソース命令を一組のターゲット命令に変換し、前記一組のターゲット命令を実行し、且つ、前記一組のソース命令がデノーマル入力ハンドリングメカニズムを使用する場合には、デノーマル入力制御ビットをマスク解除するという結果になる一組の命令が記憶されている、マシン可読媒体。
【請求項２８】
前記命令は、前記一組のターゲット命令を実行することによって、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出し、１つ又は２つ以上の非デノーマル例外に対応する１つ又は２つ以上の制御ビットがマスクされている場合には、前記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドに所定の値を代入し、且つ、前記１つ又は２つ以上のデノーマルオペランドについて前記所定の値を有する前記障害のあるターゲット命令を実行するという結果になる、請求項２７に記載のマシン可読媒体。
【請求項２９】
前記命令は、前記一組のターゲット命令を実行することによって、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出し、１つ又は２つ以上の非デノーマル例外に対応する１つ又は２つ以上の制御ビットがマスク解除されている場合には、前記障害のあるターゲット命令の変換元のソース命令を回復し、且つ、前記ソース命令を再生成されるターゲット命令に再変換するという結果になる、請求項２７に記載のマシン可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
たとえばＩｎｔｅｌ（登録商標）Ａｒｃｈｉｔｅｃｔｕｒｅ−３２（ＩＡ−３２）に準拠したいくつかのコンピュータプラットフォームは、プログラムコードの実行中にデノーマル入力又はデノーマルオペランドをハンドリングするための、デノーマルがゼロである（Denormals-Are-Zeroes）（ＤＡＺ）、として知られている機能をサポートすることができる。プラットフォームは、本明細書ではＤＡＺビットと呼ぶ制御ビットを含むことができる。このＤＡＺビットは、浮動小数点（ＦＰ）デノーマル例外状況下にある単一命令複数データ（ＳＩＭＤ）命令に対する応答を制御する。プログラムコードは、プラットフォームにおいてＤＡＺビットを制御する１つ又は２つ以上の制御命令を有することができる。これらの制御命令は、ＤＡＺビットを、たとえば「１」及び「０」の２つの値の一方に設定することができる。ＤＡＺビットが「１」に設定されると、たとえば、ＤＡＺ機能をサポートするプラットフォーム上で実行されているプロセッサは、コード実行中にデノーマル例外状況を起こす命令を検出することができ、所定の値を有する、その命令のデノーマルオペランドを代入することができる。この命令は例外命令である。所定の値は、たとえば、元のオペランドの符号を有する０である。プロセッサは、次に、この新しい値のオペランドを有する例外命令を実行することができる。上述したデノーマルオペランドのハンドリングを、本明細書では、デノーマル入力ハンドリングメカニズム、すなわちＤＡＺメカニズムと呼ぶ場合がある。
【０００２】
動的バイナリ変換器は、ソースコードを、ターゲットプラットフォーム上で実行されるターゲットコードに変換することができる。このソースコードは、たとえば、ＤＡＺ機能をサポートするソースアーキテクチャに準拠したＩＡ−３２コードである。ターゲットプラットフォームは、浮動小数点モデルを有することができ、したがって、デノーマル例外等のストリーミングＳＩＭＤ拡張命令（ＳＳＥ）例外を起こすことができる場合がある。しかしながら、ターゲットプラットフォームは、デノーマル例外のデノーマル入力をハンドリングする際にＤＡＺ機能をサポートしていない場合がある。このような１つのターゲットプラットフォームは、たとえば、Ｉｎｔｅｌ  Ｉｔａｎｉｕｍ（商標）プロセッサファミリーのアーキテクチャに準拠したプラットフォームとすることができる。
【発明の開示】
【０００３】
本発明とみなされる主題は、特に、明細書の結びの部分に指し示され、明確に請求されている。しかしながら、本発明の目的、機能、及び利点と共に、オペレーションの編成及び方法の双方に関する本発明は、以下の詳細な説明を参照して、この詳細な説明を添付図面と共に読むと最も良く理解することができる。
【０００４】
説明図を簡単且つ明瞭にするために、図に示した要素は、必ずしも一律の縮尺で描かれていないことが十分理解されよう。たとえば、要素のいくつかの寸法は、明瞭にするために、他の要素に比べて誇張されている場合がある。
【発明を実施するための最良の形態】
【０００５】
以下の詳細な説明では、本発明の実施形態の徹底した理解を提供するために、多数の特定の詳細が述べられている。しかしながら、本発明の実施形態は、これらの特定の詳細がなくても実施できることが当業者には理解されよう。それ以外の場合には、本発明の実施形態を不明瞭にしないように、既知の方法及び手順は詳細に説明されていない。
【０００６】
以下の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビット又はバイナリデジタル信号に対するオペレーションのアルゴリズム及びシンボル表現の観点で提示されている。これらのアルゴリズム的な説明及び表現は、データ処理技術の当業者が自身の作業の内容を他の当業者に伝えるのに使用する手段とすることができる。
【０００７】
アルゴリズムは、ここでは、一般的に、所望の結果をもたらす行為又はオペレーションの自己矛盾のないシーケンスであると考えられる。これらの行為又はオペレーションは、物理量の物理的な操作を含む。必ずしもそうではないが、通例、これらの物理量は、記憶、転送、結合、比較、及びそれ以外の操作を行うことができる電気信号又は磁気信号の形態を取る。主として一般に使用されるとの理由から、これらの信号を、ビット、値、要素、シンボル、文字、用語、数字等と呼ぶことが時に便利であることが分かっている。しかしながら、これらの用語及び類似の用語のすべては、適切な物理量に関連付けられることになり、これらの量に適用される単なる便利なラベルにすぎないことが理解されるべきである。
【０００８】
特に指定のない限り、以下の解説から明らかなように、この明細書の解説全体を通じて、「処理」、「計算」、「算出」、「決定（求める）」等の用語を利用することは、コンピューティングシステムのレジスタ及び／又はメモリ内の電子量等の物理量として表されるデータを操作し且つ／又はそのようなデータを、コンピューティングシステムのメモリ、レジスタ、若しくは他のこのような情報ストレージ、伝送デバイス、又は表示デバイス内の物理量として同様に表される他のデータに変換するコンピュータ若しくはコンピューティングシステム又は同様の電子コンピューティングデバイスの動作及び／又はプロセスを指すことが十分理解される。
【０００９】
本発明のいくつかの実施形態は、たとえば、マシンによって実行されると、本発明の実施形態による方法及び／若しくはオペレーションをマシンに実行させる１つの命令若しくは一組の命令を記憶できるマシン可読媒体又はマシン可読製品を使用して実施することができる。このようなマシンには、たとえば、あらゆる適した処理プラットフォーム、コンピューティングプラットフォーム、コンピューティングデバイス、処理デバイス、コンピューティングシステム、処理システム、コンピュータ、プロセッサ等が含まれ得る。このようなマシンは、ハードウェア及び／又はソフトウェアのあらゆる適した組み合わせを使用して実施することができる。マシン可読媒体又はマシン可読製品には、たとえば、あらゆる適したタイプのメモリユニット、メモリデバイス、メモリ製品、メモリ媒体、ストレージデバイス、ストレージ製品、ストレージ媒体及び／又はストレージユニットが含まれることができ、たとえば、メモリ、着脱可能媒体又は着脱不能媒体、消去可能媒体又は消去不能媒体、書き込み可能媒体又は再書き込み可能媒体、デジタル媒体又はアナログ媒体、ハードディスク、フロッピーディスク、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、記録可能コンパクトディスク（ＣＤ−Ｒ）、再書き込み可能コンパクトディスク（ＣＤ−ＲＷ）、光ディスク、磁気媒体、さまざまなタイプのデジタル多用途ディスク（ＤＶＤ）、テープ、カセット等が含まれ得る。命令には、たとえば、ソースコード、コンパイラ型コード、インタープリタ型コード、実行可能コード、静的コード、動的コード等といったあらゆる適したタイプのコードが含まれ得る。命令は、たとえば、Ｃ、Ｃ＋＋、Ｊａｖａ、ＢＡＳＩＣ、Ｐａｓｃａｌ、Ｆｏｒｔｒａｎ、Ｃｏｂｏｌ、アセンブリ言語、マシンコード等のあらゆる適した高水準プログラミング言語、低水準プログラミング言語、オブジェクト指向型プログラミング言語、ビジュアルプログラミング言語、コンパイラ型プログラミング言語、及び／又はインタープリタ型プログラミング言語を使用して実施することができる。
【００１０】
本発明の実施形態は、本明細書では、オペレーションを実行するための装置を含むことができる。これらの装置は、所望の目的で特別に構築することもできるし、コンピュータに記憶されたコンピュータプログラムによって選択的にアクティブにされるか又は再構成される汎用コンピュータを含むこともできる。このようなコンピュータプログラムは、コンピュータ可読ストレージ媒体に記憶することができる。このコンピュータ可読ストレージ媒体は、フロッピーディスク、光ディスク、ＣＤ−ＲＯＭ、光磁気ディスク等のあらゆるタイプのディスク、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、電気的プログラマブル読み出し専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、磁気カード若しくは光カード、又は電子的命令を記憶するのに適し且つコンピュータシステムバスに結合可能な他のあらゆるタイプの媒体であるが、これらに限定されるものではない。
【００１１】
本明細書で提示されるプロセス及び表示は、本来的には、どの特定のタイプのコンピュータにも他の装置にも関係付けられない。さまざまな汎用システムが、本明細書の教示に従ったプログラムと共に使用される場合もあるし、所望の方法を実行するより特殊化された装置を構築することが便利であると分かる場合もある。さまざまなこれらのシステムの所望の構造は、以下の説明から現れる。加えて、本発明の実施形態は、どの特定のプログラミング言語についても説明されていない。さまざまなプログラミング言語を使用して、本明細書に説明するような本発明の教示を実施できることが十分理解されよう。
【００１２】
以下の説明では、さまざまな図、ダイアグラム、フローチャート、モデル、及び説明が、この出願で提案されている本発明の内容を有効に伝え、且つ、本発明の異なる実施形態を示す異なる手段として提示されている。これらは、単なる例示的なサンプルとして提供され、本発明の限定として構成されるものでないことが当業者には理解されよう。
【００１３】
図１は、本発明のいくつかの例示的な実施形態による、ＤＡＺメカニズムのサポートを有する動的バイナリ変換を行うことができる装置１００のブロックダイアグラム説明図である。装置１００は、たとえばコンピューティングプラットフォームとすることができ、メモリ１０６に動作可能に接続されたプロセッサ１０２を含むことができる。このコンピューティングプラットフォームは、本明細書では、ターゲットプラットフォームを呼ばれる。
【００１４】
本発明の実施形態によれば、メモリ１０６は、一組のソース命令１１０及び一組のターゲット命令１２０を記憶するようになっていてもよい。一組のソースメモリ例１１０は、本明細書では「ソースコード」とも呼ばれ、一組のターゲット命令１２０は、本明細書では「ターゲットコード」とも呼ばれる。また、メモリ１０６は、動的バイナリ変換器１０８の命令も記憶することができる。プロセッサ１０２は、動的バイナリ変換器１０８を実行して、ソース命令セット１１０をターゲット命令セット１２０に変換することができる。図２について以下で詳細に説明するように、プロセッサ１０２は、次に、入力１０３を印加することによってターゲット命令セット１２０を実行することができ、ターゲットコード実行中にターゲットプラットフォーム上でアルゴリズム１０４を適用して、デノーマル入力制御ビットをマスク解除することができる。動的バイナリ変換器１０８は、図３〜図７について以下で詳細に説明するように、デノーマル例外等の例外をハンドリングする例外ハンドラ１０９を含むことができる。
【００１５】
ソース命令セット１１０は、デノーマル入力ハンドリングメカニズムをサポートできるたとえばＩＡ−３２といったソースアーキテクチャに準拠することができる。デノーマル入力ハンドリングメカニズムは、本明細書ではＤＡＺメカニズムとも呼ばれる。ソース命令セット１１０は、１つ又は２つ以上の制御命令を含むことができる。これらの制御命令は、ソースプラットフォーム上で実行されている時、そのソースプラットフォームによってサポートされるＤＡＺメカニズムがソースコードによって使用されるか否かを決定することができる。ＤＡＺメカニズムがソースコードによって使用される場合、ソースアーキテクチャは、デノーマルオペランドを元のオペランドの符号を有する０に変換することによって、例外命令のＳＩＭＤ浮動小数点デノーマルオペランド状況に対応し、次に、デノーマルオペランドのこの新しい値を使用して例外命令を実行することができる。
【００１６】
プロセッサ１０２は、たとえばＩｎｔｅｌ  Ｉｔａｎｉｕｍ（商標）プロセッサファミリーのアーキテクチャといったターゲットアーキテクチャに準拠することができる。本発明の実施形態によれば、プロセッサ１０２は、ＤＡＺメカニズムをサポートするために、ソースアーキテクチャで必要とされるようなハードウェアを必要としない場合がある。その代わり、本発明の例示的な実施形態によれば、以下で詳細で説明するように、ＤＡＺメカニズムは、ターゲット命令セット１２０の実行中に、動的バイナリ変換を通じてエミュレーションすることができる。
【００１７】
装置１００の例を非網羅的に列挙したものには、デスクトップパーソナルコンピュータ、ワークステーション、サーバコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ハンドヘルドコンピュータ、携帯情報端末（ＰＤＡ）、移動電話、ゲームコンソール等が含まれ得る。
【００１８】
プロセッサ１０２の例を非網羅的に列挙したものには、中央処理装置（ＣＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、縮小命令セットコンピュータ（ＲＩＳＣ）、複合命令セットコンピュータ（ＣＩＳＣ）等が含まれ得る。その上、プロセッサ１０２は、特定用途向け（ＡＳＩＣ）の一部とすることもできるし、特定用途向け標準品（ＡＳＳＰ）の一部とすることもできる。
【００１９】
メモリ１０６は、装置１００内に固定することもできるし、装置１００から着脱可能とすることもできる。メモリ１０６の例を非網羅的に列挙したものには、次の半導体デバイス、すなわち、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）デバイス、ＲＡＭＢＵＳダイナミックランダムアクセスメモリ（ＲＤＲＡＭ）デバイス、ダブルデータレート（ＤＤＲ）メモリデバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリ（ＦＭ）デバイス、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）デバイス、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）デバイス、ユニバーサルシリアルバス（ＵＳＢ）着脱可能メモリ等；コンパクトディスク読み出し専用メモリ（ＣＤ  ＲＯＭ）等の光デバイス；及び、ハードディスク、フロッピーディスク、磁気テープ等の磁気デバイスの１つ又はいずれかの組み合わせが含まれ得る。
【００２０】
ソースコードの実行中、ソースコードの命令は、さまざまな例外を起こす場合がある。たとえば、Ｉｎｔｅｌ（登録商標）ＩＡ−３２アーキテクチャに準拠したソース命令は、次の特定の例外をサポートすることができる。すなわち、バイナリ浮動小数点算術についてＡＮＳＩ／ＩＥＥＥ標準規格７５４〜１９８５で定義されて必要とされる「無効な演算」、「０による除算」、「オーバーフロー」、「アンダーフロー」、及び「不正確な計算」の浮動小数点例外をサポートすることができる。上記例外は、一般に、ＳＳＥ例外と呼ばれる場合がある。ターゲットプラットフォームは、ＳＳＥ例外のハンドリングを制御するためにマスク又はマスク解除することができる１つ又は２つ以上の制御ビットを含むことができる。この制御ビットには、デノーマル入力制御ビットが含まれる。制御ビットは、図２について以下で詳細に説明するように、アルゴリズム１０４を通じて、プロセッサ１０２が制御することができる。加えて、ソースコードは、ＤＡＺメカニズムがソースコードによって使用されるか否かを判断する、ソースプラットフォームのＤＡＺビットの設定を制御する１つ又は２つ以上の制御命令を含むことができる。
【００２１】
本発明の例示的な実施形態によれば、ソースプラットフォームによってサポートされ且つソースコード１１０によって使用されるＤＡＺメカニズムは、ターゲットプラットフォーム上でのターゲットコード１２０の実行を通じて、動的バイナリ変換器１０８によりエミュレーションすることができる。プロセッサ１０２は、動的バイナリ変換器１０８を実行して、たとえばソース命令１１２及び／又は１１３を含むソース命令セット１１０を、たとえばターゲット命令１２２及び／又は１２３を含むターゲット命令セット１２０に変換するようになっていてもよい。ターゲットコードの実行中、たとえばソース命令１１２といった１つ又は２つ以上の例外ソース命令を、たとえばターゲット命令１２２といった１つ又は２つ以上の対応する障害のあるターゲット命令の実行を通じて検出できるように、プロセッサ１０２は、アルゴリズム１０４を実行して、ターゲットプラットフォーム上でデノーマル入力制御ビットをマスク解除することができる。
【００２２】
本発明の例示的な実施形態によれば、デノーマル例外が検出されると、ＤＡＺメカニズムが、動的バイナリ変換器１０８によりエミュレーション可能である。このエミュレーションは、動的バイナリ変換器１０８が、所定の値を有する、ターゲット命令のデノーマルオペランドを代入することを通じて行うことができる。このターゲット命令は、デノーマル例外に対応する障害のあるターゲット命令であり、所定の値は、たとえば、元のオペランドの符号を有する０である。プロセッサ１０２は、次に、デノーマルオペランドについて新しく代入された値を有する障害のあるターゲット命令を実行することができる。
【００２３】
本発明のいくつかの例示的な実施形態によれば、デノーマル例外が、障害のあるターゲット命令１２２で検出されると、対応する例外ソース命令１１２を再変換して、新しいターゲット命令１２２を生成することができる。加えて、プリフィックスコード１２１を生成して、新しく生成されたターゲット命令１２２にアタッチすることができる。プリフィックスコード１２１は、ソース命令１１２に対するすべてのデノーマルオペランド、及び、ソースコード１１０の制御命令によって行われる制御を識別して、ＤＡＺメカニズムがソースコードによって使用されるか否かを判断することができる。ＤＡＺメカニズムがソースコードによって使用される場合、プリフィックスコード１２１は、上記で詳細に説明したように、ＤＡＺメカニズムをエミュレーションすることができる。
【００２４】
本発明の例示的な実施形態によれば、プロセッサ１０２は、ターゲット命令ブロックにおけるデノーマル例外の個数をカウントする、たとえばキャッシュベースカウンタ１０５といったカウンタを含むことができる。デノーマル例外の個数が所定のしきい値を超える場合、動的バイナリ変換器１０８は、図６について以下で詳細に説明するように、ＤＡＺメカニズムをエミュレーションすることができる。
【００２５】
図２は、本発明の例示的な実施形態による、ＤＡＺメカニズムのサポートを有する動的バイナリ変換の方法の概略フローチャートである。
【００２６】
本発明の例示的な実施形態によれば、動的バイナリ変換器１０８は、ブロック２０２に示すように、たとえばソースコード１１０といったソースコードを受け取ることができる。次に、動的バイナリ変換器１０８は、ブロック２０４に示すように、ソースコード１１０を変換して、対応するターゲットコード１２０を生成し、ブロック２０６に示すように、ターゲットコード１２０を実行することができる。ソースコード１１０は、１つ又は２つ以上の制御命令を含むことができる。これらの制御命令は、ＤＡＺメカニズムがソースコードにより使用されるか否かを決定する、ソースプラットフォームのＤＡＺビットの設定を変更することができる。実行中、ブロック２０８に示すように、ソースコードの制御命令によって行われる制御が、ＤＡＺメカニズムがソースコードで使用されることを示していると判断された場合、ＤＡＺハンドリングのコード実行の段階中にデノーマル例外を検出できるように、プロセッサ１０２は、ブロック２１２に示すように、ターゲットプラットフォームのデノーマル入力制御ビットをマスク解除することができる。デノーマル入力制御ビットのマスク解除は、たとえば、プロセッサ１０２が、たとえばアルゴリズム１０４（図１）といったマスク解除アルゴリズムを実行することによって行うことができる。
【００２７】
本発明の例示的な実施形態によれば、ターゲットコード実行中に検出されたデノーマル例外の個別のハンドリングを必要とする２つの状況が存在し得る。ブロック２１４に示すように、第１の状況は、デノーマル例外を含まないすべてのＳＳＥ例外がソースコードにおいてマスクされ、その結果、同じ非デノーマル例外が、対応するターゲットコードにおいてマスクされているときである。この状況では、ブロック２１６に示し、且つ、図３について以下で詳細に説明するように、プロセッサ１０２は、ターゲットコードを実行し、デノーマル例外を検出し、そして、ＤＡＺメカニズムを適用することができる。
【００２８】
第２の状況は、非デノーマル例外の１つ又は２つ以上がソースコードにおいてマスク解除され、その結果、対応するターゲットコードにおいてマスク解除されているときである。この状況では、ブロック２１８に示し、且つ、図４について以下で詳細に説明するように、プロセッサ１０２は、ターゲットコードを実行し、デノーマル例外を検出し、そして、状態回復メカニズムを適用して例外を処理することができる。
【００２９】
ブロック２０８に示すように、ソースコードの制御命令によって行われる制御が、ＤＡＺメカニズムがソースコードによって使用されることを示していないと判断された場合、プロセッサ１０２は、ブロック２１０に示すように、ターゲットコードの実行を継続することができる。
【００３０】
図３は、本発明の例示的な実施形態による、すべての非デノーマル例外がマスクされているときに、プログラムコード実行中にデノーマル例外をハンドリングする方法の概略フローチャートである。ターゲットプラットフォームのデノーマル入力制御ビットは、プロセッサ１０２が、ターゲットコード実行中にデノーマル例外を検出できるようにマスク解除されている。
【００３１】
本発明の例示的な実施形態によれば、プロセッサ１０２は、ブロック３０２に示すように、たとえばターゲット命令セット１２０といった一組のターゲット命令の実行を開始することができる。この一組のターゲット命令は、ＤＡＺメカニズムを使用する、たとえばソース命令セット１１０といった一組のソース命令に対応することができる。実行中、プロセッサ１０２は、ブロック３０４に示すように、デノーマル例外を起こす、たとえばターゲット命令１２２といった障害のあるターゲット命令を検出することができる。この例外はデノーマル例外である。その理由は、すべての非デノーマル例外、すなわちデノーマル例外以外のＳＳＥ例外がマスクされており、したがって、検出できないからである。ブロック３０６に示すように、デノーマル例外が検出されると、プロセッサ１０２は、そのデノーマル例外に対するデノーマルオペランドを識別することができ、元のオペランドの符号を有する、たとえば０といった所定の値をデノーマルオペランドに代入することができる。次に、プロセッサ１０２は、ブロック３０８に示すように、新しい値のデノーマルオペランドを有するターゲット命令１２２を実行することができる。ブロック３１０に示すように、ターゲット命令１２２の実行から結果を得ることができ、その後、次のターゲット命令の実行で適用されるように、たとえばプロセッサに関連した命令キャッシュに保存することができる。ブロック３１２において、ターゲットコード実行で使用される命令ポインタを、たとえば障害のあるターゲット命令１２２に続く命令といった新しいターゲット命令を指し示すように移動又はインクリメントすることができる。ブロック３１４に示すように、残りのターゲット命令の実行は、命令ポインタによって指し示される新しいターゲット命令において再開することができ、ブロック３１０に示すように、障害のあるターゲット命令１２２の実行から得られた結果をその実行において適用することができる。
【００３２】
図４は、本発明の例示的な実施形態による、１つ又は２つ以上の非デノーマル例外がマスク解除されているときに、ターゲットコード実行中にデノーマル例外をハンドリングする方法の概略説明図である。プロセッサ１０２がターゲットコード実行中にデノーマル例外を検出できるように、ターゲットプラットフォームのデノーマル入力制御ビットはマスク解除されている。
【００３３】
本発明の例示的な実施形態によれば、プロセッサ１０２は、ブロック４０２に示すように、ターゲット命令を実行することができ、ブロック４０４に示すように、デノーマル例外を起こす、障害のあるターゲット命令を検出することができる。しかしながら、この場合、この障害のあるターゲット命令は、他の非デノーマル例外を起こす場合もある。その理由は、非デノーマル制御ビットの１つ又は２つ以上がマスクされていないからである。たとえば、「オーバーフロー」例外や「アンダーフロー」例外等の別のタイプのＳＳＥ例外が、障害のあるターゲット命令によって起こされる場合がある。障害のあるターゲット命令が起こすことができる他のすべての例外を知ることなく、プロセッサ１０２は、以下で詳細に説明するように、状態回復メカニズムを使用してデノーマル例外をハンドリングすることが必要な場合がある。
【００３４】
本発明の例示的な実施形態によれば、バイナリ変換器１０８の例外ハンドラ１０９は、ブロック４０６に示すように、たとえば、ソース命令を回復することができる。このソース命令は、障害のあるターゲット命令の変換元の例外ソース命令である。しかしながら、本発明は、この点に限定されるものではなく、ソース命令は、他の手段又は例外ハンドラによって回復させることもできる。ブロック４０８に示し、且つ、図５について以下で詳細に説明するように、回復されたソース命令は、再変換され、再実行することができる。回復されたソース命令の実行後、プロセッサ１０２は、ブロック４１０に示すように、残りのターゲット命令の実行を再開することができる。
【００３５】
図５は、本発明の例示的な実施形態による、障害のあるターゲット命令から回復された例外ソース命令を処理する方法の概略説明図である。
【００３６】
本発明の例示的な実施形態によれば、回復されたソース命令は、ブロック５０２に示すように、再生成されるターゲット命令に再変換することができる。この変換は、他の例外による潜在的な影響を回避するために、他の命令の変換とは別個に行うことができる。ブロック５０４において、たとえばプリフィックスコード１２１（図１）といったプリフィックスコードを、たとえばターゲット命令１２２といった再生成されたターゲット命令にアタッチすることができる。プロセッサ１０２は、その後、ブロック５０６に示すように、プリフィックスコードを実行して、ＤＡＺメカニズムがソースコードによって使用されるか否かを判断することができる。ソースコードの制御命令が、ＤＡＺビットを、ＤＡＺメカニズムがソースコードによって使用されることを示す「１」に設定している場合、プリフィックスコードは、ブロック５０８に示すように、続いてデノーマル例外に対する１つ又は２つ以上の入力を識別し、デノーマルオペランドであるそれらの入力を０に変更することを始める。次に、プロセッサ１０２は、ブロック５１０に示すように、たとえばターゲット命令１２２といった再生成されたターゲット命令の実行を始めることができる。
【００３７】
図６は、本発明のいくつかの例示的な実施形態による、多数のデノーマル例外を有する変換されたコードブロックを構築する方法の概略説明図である。
【００３８】
本発明の例示的な実施形態によれば、たとえばターゲット命令セット１２０といったターゲット命令セットを、複数の命令ブロックに分割することができる。これらの命令ブロックは、たとえば、ブロックの最初の命令のアドレスによって区別することができる。実行中に多数のデノーマル例外を起こすターゲット命令ブロックの実行は、デノーマルオペランド状況が、潜在的に障害のあるターゲット命令の実行の各繰り返し中に存在するか否かを判断することによってさらに改善することができる。
【００３９】
本発明の例示的な実施形態によれば、ブロック６０２に示すように、ターゲット命令ブロックのデノーマル例外をカウントするための、たとえばカウンタ１０５（図１）等のカウンタを作成することができる。カウント１０５は、キャッシュベースカウンタとすることができ、且つ／又は、他の任意のカウントメカニズムとすることができる。カウンタ１０５は、ブロック６０４に示すように、デノーマル例外が起こるごとに、たとえばターゲットコード１２０のターゲット命令１２２及び１２３といったターゲット命令ブロックのデノーマル例外の個数をカウントすることができる。ターゲット命令ブロックによって起こされたデノーマル例外の個数は、ブロック６０６に示すように、所定のしきい値と比較することができる。この個数がしきい値に達した場合、ブロック６０８に示すように、ターゲット命令ブロックを書き換えて、たとえば組み込み命令１２４（図１）といった１つ又は２つ以上の組み込み命令を含めることができる。これらの組み込み命令は、図７について以下で詳細に説明するように、実行されると、ブロックの各ＳＩＭＤ命令のインラインデノーマル状況を識別し、デノーマル例外が検出された時にデノーマル例外のデノーマルオペランドを０に設定することができる。次に、書き換えられたターゲット命令ブロックは、ブロック６１０に示すように実行することができる。
【００４０】
図７は、本発明のいくつかの例示的な実施形態によるターゲット命令ブロックを実行する方法の概略説明図である。
【００４１】
本発明の例示的な実施形態によれば、たとえば命令１２３といったターゲット命令が実行される前に、プロセッサ１０２は、ブロック７０２に示すように、たとえば命令１２４といった組み込み命令を実行して、命令１２３がデノーマル例外を起こすか否かを判断することができる。ブロック７０４に示すように、デノーマル例外が検出されず、起こらない場合、ブロック７０６に示すように、ターゲット命令１２３を、他のあらゆる命令と同様に実行することができる。一方、デノーマル例外状況が検出された場合、プロセッサ１０２は、ブロック７０８に示すように、ターゲット命令１２３に対するデノーマルオペランドである入力を識別し、そのデノーマルオペランドに０を代入することができる。その後、ブロック７１０に示すように、デノーマルオペランドについて新しく代入された値を有するターゲット命令１２３を実行することができる。
【００４２】
本明細書では、本発明の一定の機能を図示して説明してきたが、多くの修正、置換、変更、及び均等物が、当業者には思いつくであろう。したがって、添付の特許請求の範囲は、本発明の趣旨内に入るこのようなすべての修正及び変更をカバーすることを目的としていることを理解されたい。
【図面の簡単な説明】
【００４３】
【図１】本発明のいくつかの例示的な実施形態による、ＤＡＺメカニズムのサポートを有する動的バイナリ変換を行うことができる装置のブロックダイアグラム説明図である。
【図２】本発明の例示的な実施形態による、ＤＡＺメカニズムのサポートを有する動的バイナリ変換の方法の概略フローチャートである。
【図３】本発明の例示的な実施形態による、すべての非デノーマル例外がマスクされているときに、プログラムコード実行中にデノーマル例外をハンドリングする方法の概略フローチャートである。
【図４】本発明の例示的な実施形態による、１つ又は２つ以上の非デノーマル例外がマスク解除されているときに、プログラムコード実行中にデノーマル例外をハンドリングする方法の概略説明図である。
【図５】本発明の例示的な実施形態による、対応する障害のあるターゲット命令から回復された例外ソース命令を処理する方法の概略説明図である。
【図６】本発明のいくつかの例示的な実施形態による、多数のデノーマル例外を有する変換されたコードブロックを構築する方法の概略説明図である。
【図７】本発明のいくつかの例示的な実施形態によるターゲット命令ブロックを実行する方法の概略説明図である。
【図１】
2011070694.tif 000003
【図２】
2011070694.tif 000004
【図３】
2011070694.tif 000005
【図４】
2011070694.tif 000006
【図５】
2011070694.tif 000007
【図６】
2011070694.tif 000008
【図７】
2011070694.tif 000009
【手続補正書】
【提出日】平成22年12月9日(2010.12.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
一組のソース命令を一組のターゲット命令に変換し、前記一組のソース命令がデノーマル入力ハンドリングメカニズムを使用する場合には、デノーマル入力制御ビットをマスク解除する動的バイナリ変換器と、
前記一組のターゲット命令を実行して、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出するプロセッサと、
を備え、
前記動的バイナリ変換器は、
前記少なくとも１つのデノーマル例外が検出されると、全ての非デノーマル制御ビットがマスクされている場合には、ＤＡＺメカニズムを適用して前記デノーマル例外を処理し、１つ又は２つ以上の非デノーマル制御ビットがマスクされていない場合には、状態回復メカニズムを適用して前記デノーマル例外を処理する例外ハンドラを有し、
前記デノーマル入力ハンドリングメカニズムは、ＤＡＺメカニズムである、
装置。
【請求項２】
一組のソース命令を一組のターゲット命令に変換し、前記一組のソース命令がデノーマル入力ハンドリングメカニズムを使用する場合には、デノーマル入力制御ビットをマスク解除する動的バイナリ変換器と、
前記一組のターゲット命令を実行して、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出するプロセッサと、
を備え、
前記動的バイナリ変換器は、１つ又は２つ以上の非デノーマル例外に対応する全ての制御ビットがマスクされている場合に、前記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドに予め定められた値を代入する例外ハンドラを有し、
前記プロセッサは、前記１つ又は２つ以上のデノーマルオペランドについて前記予め定められた値を有する前記障害のあるターゲット命令を実行する、
装置。
【請求項３】
前記デノーマル入力ハンドリングメカニズムは、ＤＡＺメカニズムである、
請求項２に記載の装置。
【請求項４】
前記動的バイナリ変換器は、全ての非デノーマル制御ビットがマスクされている場合に、前記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドに予め定められた値を代入する例外ハンドラを有し、
前記プロセッサは、前記１つ又は２つ以上のデノーマルオペランドについて前記予め定められた値を有する前記障害のあるターゲット命令を実行する、
請求項１に記載の装置。
【請求項５】
前記プロセッサは、前記障害のあるターゲット命令を実行して得られた結果を適用することによって、前記障害のあるターゲット命令に続くターゲット命令の実行を再開する、
請求項２から請求項４までの何れか一項に記載の装置。
【請求項６】
前記プロセッサは、前記障害のあるターゲット命令を指し示すことから、実行される後続のターゲット命令を指し示すことへ、命令ポインタを移動することによって、全ての非デノーマル制御ビットがマスクされている場合に障害のあるターゲット命令に続くターゲット命令の実行を再開する、
請求項５に記載の装置。
【請求項７】
一組のソース命令を一組のターゲット命令に変換し、前記一組のソース命令がデノーマル入力ハンドリングメカニズムを使用する場合には、デノーマル入力制御ビットをマスク解除する動的バイナリ変換器と、
前記一組のターゲット命令を実行して、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出するプロセッサと、
を備え、
前記動的バイナリ変換器は、１つ又は２つ以上の非デノーマル制御ビットがマスクされていない場合には、前記障害のあるターゲット命令の変換元のソース命令を回復すると共に前記ソース命令を再生成されるターゲット命令に再変換する例外ハンドラを有する、
装置。
【請求項８】
前記デノーマル入力ハンドリングメカニズムは、ＤＡＺメカニズムである、
請求項７に記載の装置。
【請求項９】
前記例外ハンドラの前記状態回復メカニズムは、１つ又は２つ以上の非デノーマル例外に対応する１つ又は２つ以上の制御ビットがマスク解除されている場合に、前記障害のあるターゲット命令の変換元のソース命令を回復すると共に、前記ソース命令を再生成されるターゲット命令に再変換する、
請求項１に記載の装置。
【請求項１０】
前記プロセッサは、前記一組のソース命令が前記デノーマル入力ハンドリングメカニズムを使用するか否かを判断し、
前記デノーマル入力ハンドリングメカニズムが使用される場合には、前記デノーマル例外に対する入力である１つ又は２つ以上のデノーマルオペランドを識別し、且つ、前記１つ又は２つ以上のデノーマルオペランドに予め定められた値を代入する、
請求項７から請求項９までの何れか一項に記載の装置。
【請求項１１】
一組のソース命令を一組のターゲット命令に変換し、前記一組のソース命令がデノーマル入力ハンドリングメカニズムを使用する場合には、デノーマル入力制御ビットをマスク解除する動的バイナリ変換器と、
前記一組のターゲット命令を実行して、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出するプロセッサと、
を備え、
前記プロセッサは、ターゲット命令ブロックの実行中にデノーマル例外の個数をカウントし、前記デノーマル例外の前記個数が予め定められたしきい値に達する場合には、前記ターゲット命令ブロックを書き換えて、前記プロセッサにターゲット命令が前記デノーマル例外を起こすか否かを判断する工程を実行させる１つ又は２つ以上の組み込み命令を含める、
装置。
【請求項１２】
前記デノーマル入力ハンドリングメカニズムは、ＤＡＺメカニズムである、
請求項１１に記載の装置。
【請求項１３】
前記プロセッサは、
前記組み込み命令の少なくとも１つを実行して、ターゲット命令が前記デノーマル例外を起こすか否かを判断し、
前記ターゲット命令が前記デノーマル例外を起こすと判断した場合には、前記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドを識別し、前記１つ又は２つ以上のデノーマルオペランドに予め定められた値を代入する、
請求項１１または請求項１２に記載の装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００４２
【補正方法】変更
【補正の内容】
【００４２】
本明細書では、本発明の一定の機能を図示して説明してきたが、多くの修正、置換、変更、及び均等物が、当業者には思いつくであろう。したがって、添付の特許請求の範囲は、本発明の趣旨内に入るこのようなすべての修正及び変更をカバーすることを目的としていることを理解されたい。
（項目１）
一組のソース命令を一組のターゲット命令に変換すること、
上記一組のターゲット命令を実行すること、及び
上記一組のソース命令がデノーマル入力ハンドリングメカニズムを使用する場合には、デノーマル入力制御ビットをマスク解除すること
を含む、方法。
（項目２）
上記一組のターゲット命令を実行することによって、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出すること、
１つ又は２つ以上の非デノーマル例外に対応する１つ又は２つ以上の制御ビットがマスクされている場合には、上記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドに所定の値を代入すること、及び
上記１つ又は２つ以上のデノーマルオペランドについて上記所定の値を有する上記障害のあるターゲット命令を実行すること
を含む、項目１に記載の方法。
（項目３）
上記障害のあるターゲット命令の上記実行から得られた結果を適用することによって、上記障害のあるターゲット命令に続くターゲット命令の実行を再開すること
を含む、項目２に記載の方法。
（項目４）
上記障害のあるターゲット命令に続くターゲット命令の実行を再開することは、
上記障害のあるターゲット命令を指し示すことから、実行される後続のターゲット命令を指し示すことへ、命令ポインタを移動すること、及び
上記後続のターゲット命令を実行すること
を含む、項目３に記載の方法。
（項目５）
上記所定の値は０である、項目２に記載の方法。
（項目６）
上記一組のターゲット命令を実行することによって、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出すること、
１つ又は２つ以上の非デノーマル例外に対応する１つ又は２つ以上の制御ビットがマスク解除されている場合には、上記障害のあるターゲット命令の変換元のソース命令を回復すること、及び
上記ソース命令を再生成されるターゲット命令に再変換すること
を含む、項目１に記載の方法。
（項目７）
上記一組のソース命令が上記デノーマル入力ハンドリングメカニズムを使用するか否かを判断すること、
上記デノーマル入力ハンドリングメカニズムが使用される場合には、上記デノーマル例外に対する入力である１つ又は２つ以上のデノーマルオペランドを識別すること、及び
上記１つ又は２つ以上のデノーマルオペランドに所定の値を代入すること
を含む、項目６に記載の方法。
（項目８）
上記所定の値は０である、項目７に記載の方法。
（項目９）
ターゲット命令ブロックの実行中にデノーマル例外の個数をカウントすること、及び
上記デノーマル例外の上記個数が所定のしきい値に達する場合には、上記ターゲット命令ブロックを書き換えることであって、それによって、１つ又は２つ以上の組み込み命令を含める、書き換えること
を含む、項目１に記載の方法。
（項目１０）
上記１つ又は２つ以上の組み込み命令のうちの少なくとも１つを実行することであって、それによって、ターゲット命令が上記デノーマル例外を起こすか否かを判断する、実行すること、
上記ターゲット命令が上記デノーマル例外を起こす場合には、上記ターゲット命令の１つ又は２つ以上のデノーマルオペランドを識別すること、
上記１つ又は２つ以上のデノーマルオペランドに０の値を代入すること、及び
上記代入された０の値のデノーマルオペランドを有する上記ターゲット命令を実行すること
を含む、項目９に記載の方法。
（項目１１）
上記デノーマル入力ハンドリングメカニズムは、ＤＡＺメカニズムである、項目１に記載の方法。
（項目１２）
一組のソース命令を一組のターゲット命令に変換し、上記一組のソース命令がデノーマル入力ハンドリングメカニズムを使用する場合には、デノーマル入力制御ビットをマスク解除する動的バイナリ変換器と、
上記一組のターゲット命令を実行して、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出するプロセッサと
を備える、装置。
（項目１３）
上記動的バイナリ変換器は、上記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドに所定の値を代入する例外ハンドラを備え、上記プロセッサは、上記１つ又は２つ以上のデノーマルオペランドについて上記所定の値を有する上記障害のあるターゲット命令を実行する、項目１２に記載の装置。
（項目１４）
上記プロセッサは、上記障害のあるターゲット命令の上記実行から得られた結果を適用することによって、上記障害のあるターゲット命令に続くターゲット命令の実行を再開する、項目１３に記載の装置。
（項目１５）
上記プロセッサは、上記障害のあるターゲット命令を指し示すことから、実行される後続のターゲット命令を指し示すことへ、命令ポインタを移動することによって、上記障害のあるターゲット命令に続くターゲット命令の実行を再開する、項目１４に記載の装置。
（項目１６）
上記動的バイナリ変換器は、上記障害のあるターゲット命令の変換元のソース命令を回復すると共に上記ソース命令を再生成されるターゲット命令に再変換する例外ハンドラを備える、項目１２に記載の装置。
（項目１７）
上記プロセッサは、上記一組のソース命令が上記デノーマル入力ハンドリングメカニズムを使用するか否かを判断し、上記デノーマル入力ハンドリングメカニズムが使用される場合には、上記デノーマル例外に対する入力である１つ又は２つ以上のデノーマルオペランドを識別し、且つ、上記１つ又は２つ以上のデノーマルオペランドに所定の値を代入する、項目１６に記載の装置。
（項目１８）
上記プロセッサは、ターゲット命令ブロックの実行中にデノーマル例外の個数をカウントし、且つ、上記デノーマル例外の上記個数が所定のしきい値に達する場合には、上記ターゲット命令ブロックを書き換えて１つ又は２つ以上の組み込み命令を含める、項目１２に記載の装置。
（項目１９）
上記プロセッサは、上記組み込み命令の少なくとも１つを実行して、ターゲット命令が上記デノーマル例外を起こすか否かを判断し、上記ターゲット命令が上記デノーマル例外を起こす場合には、上記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドを識別し、且つ、上記１つ又は２つ以上のデノーマルオペランドに所定の値を代入する、項目１８に記載の装置。
（項目２０）
一組のソース命令と、一組のターゲット命令と、動的バイナリ変換器とを記憶するメモリであって、上記動的バイナリ変換器は、上記一組のソース命令を上記一組のターゲット命令に変換し、且つ、上記一組のソース命令がデノーマル入力ハンドリングメカニズムを使用する場合には、デノーマル入力制御ビットをマスク解除するようになっている、メモリと、
上記一組のターゲット命令を実行して、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出するプロセッサと
を備える、システム。
（項目２１）
上記動的バイナリ変換器は、上記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドに所定の値を代入する例外ハンドラを備え、上記プロセッサは、上記１つ又は２つ以上のデノーマルオペランドについて上記所定の値を有する上記障害のあるターゲット命令を実行する、項目２０に記載のシステム。
（項目２２）
上記プロセッサは、上記障害のあるターゲット命令の上記実行から得られた結果を適用することによって、上記障害のあるターゲット命令に続くターゲット命令の実行を再開する、項目２１に記載のシステム。
（項目２３）
上記動的バイナリ変換器は、上記障害のあるターゲット命令の変換元のソース命令を回復すると共に上記ソース命令を再生成されるターゲット命令に再変換する例外ハンドラを備える、項目２０に記載のシステム。
（項目２４）
上記プロセッサは、上記一組のソース命令が上記デノーマル入力ハンドリングメカニズムを使用するか否かを判断し、上記デノーマル入力ハンドリングメカニズムが使用される場合には、上記デノーマル例外に対する入力である１つ又は２つ以上のデノーマルオペランドを識別し、且つ、上記１つ又は２つ以上のデノーマルオペランドに所定の値を代入する、項目２３に記載のシステム。
（項目２５）
上記プロセッサは、ターゲット命令ブロックの実行中にデノーマル例外の個数をカウントし、且つ、デノーマル例外の上記個数が所定のしきい値に達する場合には、上記ターゲット命令ブロックを書き換えて１つ又は２つ以上の組み込み命令を含める、項目２０に記載のシステム。
（項目２６）
上記プロセッサは、上記組み込み命令のうちの少なくとも１つを実行して、ターゲット命令がデノーマル例外を起こすか否かを判断し、上記ターゲット命令がデノーマル例外を起こす場合には、上記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドを識別し、且つ、上記１つ又は２つ以上のデノーマルオペランドに所定の値を代入する、項目２５に記載のシステム。
（項目２７）
マシンによって実行されると、一組のソース命令を一組のターゲット命令に変換し、上記一組のターゲット命令を実行し、且つ、上記一組のソース命令がデノーマル入力ハンドリングメカニズムを使用する場合には、デノーマル入力制御ビットをマスク解除するという結果になる一組の命令が記憶されている、マシン可読媒体。
（項目２８）
上記命令は、上記一組のターゲット命令を実行することによって、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出し、１つ又は２つ以上の非デノーマル例外に対応する１つ又は２つ以上の制御ビットがマスクされている場合には、上記障害のあるターゲット命令の１つ又は２つ以上のデノーマルオペランドに所定の値を代入し、且つ、上記１つ又は２つ以上のデノーマルオペランドについて上記所定の値を有する上記障害のあるターゲット命令を実行するという結果になる、項目２７に記載のマシン可読媒体。
（項目２９）
上記命令は、上記一組のターゲット命令を実行することによって、障害のあるターゲット命令の少なくとも１つのデノーマル例外を検出し、１つ又は２つ以上の非デノーマル例外に対応する１つ又は２つ以上の制御ビットがマスク解除されている場合には、上記障害のあるターゲット命令の変換元のソース命令を回復し、且つ、上記ソース命令を再生成されるターゲット命令に再変換するという結果になる、項目２７に記載のマシン可読媒体。
【外国語明細書】
2011070694000001.pdf