(57)【要約】【課題】  コンピューティング環境における処理を容易にするためのコンピュータ・プログラム製品、システム及び方法を提供する。【解決手段】  プログラム（例えば、オペレーティング・システム）が、クリーンアップ（例えば、ディスパッチ可能ユニットの完了、停止、及び／又は移動）などの機能を実施するための猶予期間を有するという警告が、プログラムに与えられる。一例において、プログラムがその共有リソースへのアクセスを失いつつあるとの警告が、プログラムに警告される。例えば、仮想環境において、ゲスト・プログラムが中央演算処理ユニットのリソースを失いそうであり、従って、クリーンアップなどの機能を実施すべきであることが、ゲスト・プログラムに警告される。【選択図】      図８
2015507808.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境における処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、
処理回路により読み出し可能であり、且つ、方法を実施するための、前記処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を含み、前記方法は、
第１のプログラムにより、第２のプログラムに、前記コンピューティング環境内での警告追跡ファシリティのインストールを示す警告追跡ファシリティ・インストール済み表示を提供することであって、前記警告追跡ファシリティは、前記第２のプログラムに、第１の機能を実施するための猶予期間を提供するためのものである、提供することと、
前記第１のプログラムにより、前記第２のプログラムに、警告追跡通知を提供することと、
前記警告追跡通知に基づいて、前記第２のプログラムにより、前記猶予期間内に前記第１の機能を開始することと、
前記第１のプログラムにより、前記猶予期間の後に第２の機能を実施することと、
を含む、コンピュータ・プログラム製品。
【請求項２】
前記警告追跡通知は、前記猶予期間の終了後に前記第２のプログラムに割り当てられた共有リソースを解放する割り込みを含む、請求項１に記載のコンピュータ・プログラム製品。
【請求項３】
前記第１のプログラムは、前記第２の機能を実施するために、解放された前記共有リソースにアクセスする、請求項２に記載のコンピュータ・プログラム製品。
【請求項４】
前記第１のプログラムはホスト・プログラムであり、前記第２のプログラムはゲスト・プログラムであり、前記ゲスト・プログラムは、前記ゲスト・プログラムが実行されるゲスト中央演算処理ユニットに与えられたタイムスライス中に前記コンピューティング環境の共有リソースにアクセスすることができ、前記猶予期間は前記タイムスライスと区別可能である、請求項１に記載のコンピュータ・プログラム製品。
【請求項５】
前記猶予期間は前記タイムスライスを早期に終了させる、請求項４に記載のコンピュータ・プログラム製品。
【請求項６】
前記猶予期間は、前記第１の機能を実施するための、前記タイムスライスに加えた期間を提供する、請求項４に記載のコンピュータ・プログラム製品。
【請求項７】
前記猶予期間は、前記第２のプログラムに与えられる次のタイムスライスから取得される、請求項６に記載のコンピュータ・プログラム製品。
【請求項８】
前記第１の機能は、
前記第２のプログラムが実行されるプロセッサ上で実行されているディスパッチ可能ユニットを完了させること、又は
前記ディスパッチ可能ユニットを前記コンピューティング環境の別のプロセッサ上で再ディスパッチ可能にすること、
のうちの１つを含む、請求項１に記載のコンピュータ・プログラム製品。
【請求項９】
前記方法は、前記第２のプログラムにより、前記猶予期間中の前記第１の機能の完了を示すことをさらに含む、請求項１に記載のコンピュータ・プログラム製品。
【請求項１０】
前記方法は、次に前記第２のプログラムが実行されるとき、前記第２のプログラムに、前記猶予期間中に前記第１の機能が完了したという表示を提供することをさらに含む、請求項９に記載のコンピュータ・プログラム製品。
【請求項１１】
コンピューティング環境における処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムは、
メモリと、
前記メモリと通信するプロセッサと、
を含み、前記コンピュータ・システムは方法を実行するように構成され、前記方法は、
第１のプログラムにより、第２のプログラムに、前記コンピューティング環境内での警告追跡ファシリティのインストールを示す警告追跡ファシリティ・インストール済み表示を提供することであって、前記警告追跡ファシリティは、前記第２のプログラムに、第１の機能を実施するための猶予期間を提供するためのものである、提供することと、
前記第１のプログラムにより、警告追跡通知を前記第２のプログラムに提供することと、
前記警告追跡通知に基づいて、前記第２のプログラムにより、前記猶予期間内に前記第１の機能を開始することと、
前記第１のプログラムにより、前記猶予期間の後に第２の機能を実施することと、
を含む、コンピュータ・システム。
【請求項１２】
前記警告追跡通知は、前記猶予期間の終了後に前記第２のプログラムに割り当てられた共有リソースを解放する割り込みを含む、請求項１１に記載のコンピュータ・システム。
【請求項１３】
前記第１のプログラムはホスト・プログラムであり、前記第２のプログラムはゲスト・プログラムであり、前記ゲスト・プログラムは、前記ゲスト・プログラムが実行されるゲスト中央演算処理ユニットに与えられたタイムスライス中に前記コンピューティング環境の共有リソースにアクセスすることができ、前記猶予期間は前記タイムスライスと区別可能である、請求項１１に記載のコンピュータ・システム。
【請求項１４】
前記猶予期間は前記タイムスライスを早期に終了させる、請求項１３に記載のコンピュータ・システム。
【請求項１５】
前記猶予期間は、前記第１の機能を実施するための、前記タイムスライスに加えた期間を提供する、請求項１３に記載のコンピュータ・システム。
【請求項１６】
前記第１の機能は、
前記第２のプログラムが実行されるプロセッサ上で実行されているディスパッチ可能ユニットを完了させること、又は
前記ディスパッチ可能ユニットを前記コンピューティング環境の別のプロセッサ上で再ディスパッチ可能にすること、
のうちの１つを含む、請求項１１に記載のコンピュータ・システム。
【請求項１７】
前記方法は、
前記第２のプログラムにより、前記猶予期間中の前記第１の機能の完了を表示することと、
次に前記第２のプログラムが実行されるとき、前記第２のプログラムに、前記猶予期間中に前記第１の機能が完了したという表示を提供することと、
をさらに含む、請求項１１に記載のコンピュータ・システム。
【請求項１８】
コンピューティング環境における処理を容易にするための方法であって、
第１のプログラムにより、第２のプログラムに、前記コンピューティング環境内での警告追跡ファシリティのインストールを示す警告追跡ファシリティ・インストール済み表示を提供することであって、前記警告追跡ファシリティは、前記第２のプログラムに、第１の機能を実施するための猶予期間を提供するためのものである、提供することと、
前記第１のプログラムにより、前記第２のプログラムに、警告追跡通知を提供することと、
前記警告追跡通知に基づいて、前記第２のプログラムにより、前記猶予期間内に前記第１の機能を開始することと、
前記第１のプログラムにより、前記猶予期間の後に第２の機能を実施することと、
を含む、方法。
【請求項１９】
前記第１のプログラムはホスト・プログラムであり、前記第２のプログラムはゲスト・プログラムであり、前記ゲスト・プログラムは、前記ゲスト・プログラムが実行されるゲスト中央演算処理ユニットに与えられたタイムスライス中に前記コンピューティング環境の共有リソースにアクセスすることができ、前記猶予期間は前記タイムスライスと区別可能である、請求項１８に記載の方法。
【請求項２０】
前記第２のプログラムにより、前記猶予期間中の前記第１の機能の完了を示すことと、
次に前記第２のプログラムが実行されるとき、前記第２のプログラムに、前記猶予期間中に前記第１の機能が完了したという表示を提供することと、
をさらに含む、請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の態様は、一般に、コンピューティング環境内での処理に関し、特定的には、共有リソースと関連した処理を容易にすることに関する。
【背景技術】
【０００２】
リソースを共有する１つのタイプの環境は、ホスト中央演算処理ユニット（ＣＰＵ）、及び１つ又は複数のゲスト中央演算処理ユニットを含む仮想環境である。ゲストＣＰＵ（仮想ＣＰＵとしても知られる）は、ホストＣＰＵ上で実行されるホスト・プログラム（例えば、ホスト・オペレーティング・システム）によりプロビジョニングされる。ホスト・プログラムは、基礎をなすホスト構成からリソースを割り当て、それらのリソースをゲストＣＰＵに割り当てるためのアクションを実施する。
【０００３】
１つの特定の実施形態において、ホストＣＰＵが解釈実行モードに入ると、ゲストＣＰＵが存在する。この時点で、ゲスト・オペレーティング・システム（本明細書ではゲスト・プログラムとも呼ばれる）が仮想化ＣＰＵ上での実行を開始し、一方、ホスト・プログラムはホストＣＰＵ上での実行を一時停止（ｓｕｓｐｅｎｄ）する。解釈実行モードが終了すると、ホスト・プログラムは、ＣＰＵ上での実行を再開する。ホストとゲストとの間には、ホスト及びゲストの状態を保存及び復元させる結合技術が存在する。典型的には、ホスト・プログラムがゲスト・プログラムを開始すると、ホスト・プログラムは、ゲスト・プログラムが戻るまで一時停止する。ゲストＣＰＵもホストＣＰＵも、１つのホストＣＰＵの異なるモードである。
【０００４】
ホスト構成は、通常、コンピュータ・システムのリソースの全てを含む。これらのリソースは、これらに限定されるものではないが、中央演算処理ユニット（ＣＰＵ）、主メモリ、及び入力／出力（Ｉ／Ｏ）デバイスを含む。こうしたシステムにおいて、単一のホストＣＰＵから、複数のゲストＣＰＵをサポートすることができる。このことは、各ゲストＣＰＵに、タイムスライスと呼ばれるホストＣＰＵを使用するための一定期間を割り当て、次いで、タイムスライスの間、ホストＣＰＵを別のゲストＣＰＵに移動させることなどによって達成される。ホストＣＰＵによりサポート可能なゲストＣＰＵの数は、ホストＣＰＵの能力、及び各ゲストＣＰＵに割り当てられる所望の能力に応じて変化する。
【０００５】
ゲスト構成は、典型的には、２又はそれより多いゲストＣＰＵから形成され、ゲスト・マルチプロセッシング（ＭＰ）構成と呼ばれる。各ゲストＣＰＵは、別個のホストＣＰＵの割り当て分（ｓｈａｒｅ）によって、又は単一のホストＣＰＵを共有することによっても、プロビジョニングすることができる。こうした共有の１つの属性は、ゲストＣＰＵが、タイムスライスと呼ばれる一定期間、動作することができ、次に、ある任意の期間、非アクティブになることである。非アクティブ期間は、システムにより確立される優先順位ポリシー、ホストＣＰＵを共有することになるゲストＣＰＵの総数、及び用いられる特定の共有技術に基づいて変化する。
【０００６】
こうしたゲスト・マルチプロセッシング・システムにおいて、ゲスト・オペレーティング・システムにより、ディスパッチ可能ユニットと呼ばれることもあるプログラムを、ゲストＣＰＵ上にディスパッチすることができ、その後、そのディスパッチ可能ユニットの実行中、そのディスパッチ可能ユニットのホスト・タイムスライスが満了する。このことにより、ディスパッチ可能ユニットが、他のいずれのゲストＣＰＵの可用性にも関係なく、ゲスト・マルチプロセッシング構成の他のいずれのゲストＣＰＵ上でも続行できない状態のままになり得る。代わりに、ディスパッチ可能ユニットは、唯一のゲストＣＰＵが続行のために次のタイムスライスを受信するのを待たなければならない。共有技術及びゲスト構成の相対的優先順位に基づいて、次のタイムスライスを、かなりの期間遅延させることができる。ゲスト構成が、ディスパッチ可能ユニットを動作させることができる他のゲストＣＰＵを有する場合でさえ、前のタイムスライスが満了したときに保存されたディスパッチ可能ユニットのゲストＣＰＵの状態が原因で、ディスパッチ可能ユニットを続行することができない。ゲストＣＰＵの続行のためにその正確な状態を使用できるようになるまで、ディスパッチ可能ユニットは非アクティブである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第５，５５１，０１３号明細書
【特許文献２】米国特許第６，００９，２６１号明細書
【特許文献３】米国特許第５，５７４，８７３号明細書
【特許文献４】米国特許第６，３０８，２５５号明細書
【特許文献５】米国特許第６，４６３，５８２号明細書
【特許文献６】米国特許第５，７９０，８２５号明細書
【非特許文献】
【０００８】
【非特許文献１】「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」、ＩＢＭ（登録商標）出版番号ＳＡ２２−７８３２−０８、第９版、２０１０年８月
【非特許文献２】「Ｓｙｓｔｅｍ／３７０  Ｅｘｔｅｎｄｅｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ／Ｉｎｔｅｒｐｒｅｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ」、ＩＢＭ（登録商標）出版番号ＳＡ２２−７０９５−０１、１９８５年９月
【発明の概要】
【発明が解決しようとする課題】
【０００９】
コンピューティング環境における処理を容易にするためのコンピュータ・プログラム製品、システム及び方法を提供する。
【課題を解決するための手段】
【００１０】
コンピューティング環境における処理を容易にするためのコンピュータ・プログラム製品を提供することにより、従来技術の欠陥が克服され、利点がもたらされる。このコンピュータ・プログラム製品は、処理回路により読み出し可能であり、且つ、方法を実施するための、処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を含む。方法は、例えば、第１のプログラムにより、第２のプログラムに、コンピューティング環境内での警告追跡ファシリティ（ｗａｒｎｉｎｇ  ｔｒａｃｋ  ｆａｃｉｌｉｔｙ）のインストールを示す警告追跡ファシリティ・インストール済み表示を提供することであって、警告追跡ファシリティは、第２のプログラムに、第１の機能を実施するための猶予期間（ｇｒａｃｅ  ｐｅｒｉｏｄ）を提供するためのものである、提供することと、第１のプログラムにより、第２のプログラムに警告追跡通知を提供することと、警告追跡通知に基づいて、第２のプログラムにより、猶予期間内に第１の機能を開始することと、第１のプログラムにより、猶予期間の後に第２の機能を実施することとを含む。
【００１１】
本発明の１つ又は複数の態様に関連する方法及びシステムもまた、本明細書で説明され、特許請求される。さらに、本発明の１つ又は複数の態様に関連するサービスもまた、本明細書で説明され、特許請求され得る。
【００１２】
本発明の技術を通して、付加的な特徴及び利点が実現される。本発明の他の実施形態及び態様は、本明細書で詳細に説明され、特許請求される本発明の一部であると見なされる。
【００１３】
本発明の１つ又は複数の態様が、本明細書の最後にある特許請求の範囲において、例として具体的に示され、明確に特許請求されている。本発明の前記及び他の目的、特徴、並びに利点は、添付図面と関連して用いられる以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００１４】
【図１】本発明の１つ又は複数の態様を組み込み、用いるためのコンピューティング環境の一実施形態を示す。
【図２】本発明の１つ又は複数の態様を組み込み、用いるためのコンピューティング環境の別の実施形態を示す。
【図３】本発明の１つ又は複数の態様を組み込み、用いるためのコンピューティング環境の更に別の実施形態を示す。
【図４】本発明の１つの態様による、警告追跡割り込みファシリティのゲスト観察と関連した論理の一実施形態を示す。
【図５】本発明の１つの態様による、警告追跡割り込みファシリティのホスト観察と関連した論理の一実施形態を示す。
【図６】本発明の１つの態様による、ゲスト終了を処理するホストと関連した論理の一実施形態を示す。
【図７】本発明の１つの態様による、警告追跡割り込みファシリティ論理の概要の一実施形態を示す。
【図８】本発明の１つの態様による、警告追跡割り込みファシリティ処理と関連した論理の実施形態を示す。
【図９】本発明の１つの態様による、警告追跡割り込みファシリティ処理と関連した論理の実施形態を示す。
【図１０】本発明の１つの態様による、警告追跡割り込みファシリティ処理と関連した論理の実施形態を示す。
【図１１】本発明の１つの態様による、警告追跡割り込みの受信と関連した論理の一実施形態を示す。
【図１２】本発明の１つの態様に従って用いられるＤｉａｇｎｏｓｅ（診断）命令の形式の一実施形態を示す。
【図１３】本発明の１つ又は複数の態様を組み込む、コンピュータ・プログラム製品の一実施形態を示す。
【図１４】本発明の１つ又は複数の態様を組み込み、用いるためのホスト・コンピュータ・システムの一実施形態を示す。
【図１５】本発明の１つ又は複数の態様を組み込み、用いるためのコンピュータ・システムの更に別の例を示す。
【図１６】本発明の１つ又は複数の態様を組み込み、用いるためのコンピュータ・ネットワークを含むコンピュータ・システムの別の例を示す。
【図１７】本発明の１つ又は複数の態様を組み込み、用いるためのコンピュータ・システムの種々の要素の一実施形態を示す。
【図１８】本発明の１つ又は複数の態様を組み込み、用いるための、図１７のコンピュータ・システムの実行ユニットの一実施形態を示す。
【図１９】本発明の１つ又は複数の態様を組み込み、用いるための、図１７のコンピュータ・システムの分岐ユニットの一実施形態を示す。
【図２０】本発明の１つ又は複数の態様を組み込み、用いるための、図１７のコンピュータ・システムのロード／ストア・ユニットの一実施形態を示す。
【図２１】本発明の１つ又は複数の態様を組み込み、用いるためのエミュレートされたホスト・コンピュータ・システムの一実施形態を示す。
【発明を実施するための形態】
【００１５】
本発明の１つの態様によると、プログラム（例えば、オペレーティング・システム）に、これが機能を実施するための猶予期間を有すると警告するための能力が提供される。例えば、クリーンアップ（ｃｌｅａｎｕｐ）（例えば、ディスパッチ可能ユニットの完了、停止、及び／又は移動）を実施するための猶予期間が、プログラムに与えられる。
【００１６】
本発明の更に別の態様によると、プログラム及び／又はプロセッサが、リソース（例えば、共有リソース）へのアクセスを失いそうであると警告される。例えば、リソースへのアクセスを失いそうであるとの警告が、他のプロセッサとリソースを共有するプロセッサに与えられる。更に別の例として、共有プロセッサ上で実行されている、オペレーティング・システムなどのプログラム（即ち、プログラムは他のプログラムとプロセッサを共有する）は、そのプロセッサ・リソースを失いそうであると警告される。
【００１７】
１つの特定の実施形態において、ホストＣＰＵからゲストＣＰＵに与えられたタイムスライスの満了、又はホストによるゲストのタイムスライスのプリエンプション（ｐｒｅ−ｅｍｐｔｉｏｎ）の警告を、ホストＣＰＵによりプロビジョニングされたゲストＣＰＵ上で実行されているゲスト・プログラムに与える能力が提供される。この警告により、ゲストＣＰＵが、ディスパッチ可能ユニットの実行の完了、ディスパッチ可能ユニットが再ディスパッチ可能である時点のディスパッチ可能ユニットの停止、及び／又はディスパッチ可能ユニットの別のゲストＣＰＵへの移動といった特定の機能を実施するために用いることができる猶予期間が与えられる。
【００１８】
本明細書で用いられる猶予期間とは、例として、時間の量、命令の数、サイクルの数などを含む。猶予期間は、１つ又は複数の機能を実施することができる所定の持続時間のものである。
【００１９】
本発明の１つ又は複数の態様を組み込み、用いるためのコンピューティング環境の一実施形態が、図１を参照して説明される。この特定の実施形態において、コンピューティング環境１００は、リソース１０４を共有する複数のプロセッサ１０２を含む。各プロセッサ（及び／又は、プロセッサ上で実行されている、オペレーティング・システムなどのプログラム）に、リソースを共有するための、タイムスライスと呼ばれる一定の時間量が与えられる。リソースは、例として、中央演算処理ユニット・リソース、メモリ、入力／出力デバイス、及び／又はインターフェース、及び／又は他のリソースを含む。リソースにアクセスすることができるプロセッサ（又は、そこで実行されているプログラム）は、そのアクセスがまもなく終了し、従って、プロセッサ（又は、プログラム）は、クリーンアップ、作業単位の完了、作業単位の停止、作業単位の移動等のような特定のアクションをとることを警告される。
【００２０】
本発明の１つ又は複数の態様を組み込み、用いるためのコンピューティング環境２００の別の実施形態が、図２を参照して説明される。コンピューティング環境２００は、例えば、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ（登録商標））により提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）に基づいている。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）は、非特許文献１に説明される。一例において、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）に基づいたコンピューティング環境は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるＳｙｓｔｅｍ  ｚ（登録商標）サーバを含む。以下に述べられるＩＢＭ（登録商標）、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）、及びｚ／Ｓｅｒｉｅｓ（登録商標）、及びｚ／ＶＭ（登録商標）、並びにｚ／ＯＳ（登録商標）は、米国ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で用いられる他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーション又は他の会社の登録商標、商標、又は製品名であり得る。
【００２１】
一例として、コンピューティング環境２００は、仮想マシン・サポートを提供する中央プロセッサ複合体（ＣＰＣ）２０２を含む。ＣＰＣ２０２は、例えば、１つ又は複数の仮想マシン２０４（又は、別の実施形態においては、論理パーティション）、１つ又は複数の中央プロセッサ２０６、少なくとも１つのホスト２０８（例えば、ハイパーバイザのような制御プログラム）、及び入力／出力サブシステム２１０を含み、その各々が以下に説明される。この例において、仮想マシン及びホストは、メモリ内に含まれる。
【００２２】
ＣＰＣによる仮想マシン・サポートは、各々が、例として、ｚ／ＶＭ（登録商標）、ｚ／ＯＳ（登録商標）、又はＬｉｎｕｘ（登録商標）などのゲスト・オペレーティング・システム２１２をホストすることができる多数の仮想マシンを動作させるための能力を提供する。各仮想マシン２０４は、別個のシステムとして機能することができる。つまり、各仮想マシンは、独立してリセットし、ゲスト・オペレーティング・システムをホストし、異なるプログラムで動作することができる。仮想マシンン内で実行されているオペレーティング・システム又はアプリケーション・プログラムは、十分且つ完全なシステムにアクセスできるように見えるが、実際には、その一部しか使用できない。
【００２３】
ＣＰＣの物理リソース（例えば、ＣＰＵ、メモリ、Ｉ／Ｏデバイス等）は、ホスト２０８に所有されており、共有物理リソースは、その処理要求を満たすために、必要に応じて、ホストによりゲスト・オペレーティング・システムにディスパッチされる。多数のゲストのために、典型的には、ホストがハードウェア・リソースを単に区分化し、それを構成されたゲストに割り当てることが妨げられるので、ゲスト・オペレーティング・システムと物理共有マシン・リソースとの間の対話は、ホストにより制御される。
【００２４】
中央プロセッサ２０６は、仮想マシンに割り当て可能な物理プロセッサ・リソースである。例えば、仮想マシン２０４は、その各々が、仮想マシンに動的に割り当てることができる物理プロセッサ・リソース２０６の全て又は割り当て分を表す、１つ又は複数の論理プロセッサを含む。仮想マシン２０４は、ホスト２０８により管理される。例として、ホストは、プロセッサ２０６上で実行されているマイクロコードで実装することができ、又は、マシン上で実行されているホスト・オペレーティング・システムの一部とすることができる。一例において、ホスト２０８は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるＰｒｏｃｅｓｓｏｒ  Ｒｅｓｏｕｒｃｅ／Ｓｙｓｔｅｍ  Ｍａｎａｇｅｒ（ＰＲ／ＳＭ）である。
【００２５】
入力／出力サブシステム２１０は、デバイスと主ストレージとの間の情報の流れを方向付ける。入力／出力サブシステム２１０は、これが中央演算処理複合体の一部であってもよく、又は、それとは別個のものであってもよいという点で、中央演算処理複合体に結合されている。Ｉ／Ｏサブシステムは、中央プロセッサから、ＣＰＣに結合されたＩ／Ｏデバイスと直接通信するタスクを取り除き、データ処理がＩ／Ｏ処理と同時に進行するのを可能にする。
【００２６】
一実施形態において、ホスト（例えば、ＰＲ／ＳＭ）及びプロセッサ（例えば、Ｓｙｓｔｅｍ  ｚ（登録商標））ハードウェア／ファームウェアは、制御された協調的方法で互いに対話し、ゲスト・オペレーティング・システムとホストとの間の制御の委譲（ｔｒａｎｓｆｅｒ  ｏｆ  ｃｏｎｔｒｏｌ）を必要とせずに、ゲスト・オペレーティング・システム操作を処理する。ゲストに対して命令の解釈実行を可能にするファシリティを介して、ホストの介入なしに、ゲスト操作を直接実行することができる。このファシリティは、命令、即ちＳｔａｒｔ  Ｉｎｔｅｒｐｒｅｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ（解釈実行開始、ＳＩＥ）を提供し、この命令は、ホストが発行することができ、ゲスト（仮想マシン）の状態を保持し、制御する状態記述（ｓｔａｔｅ  ｄｅｓｃｒｉｐｒｉｏｎ）と呼ばれる制御ブロックを指定する。この命令は、ＣＰＵを、ホストの注意を必要とする条件が発生するまで、ゲスト命令及び割り込みが直接処理される解釈実行モードに入れる。そうした条件が発生すると、解釈実行は終了し、ホスト割り込みが提示されるか、又はＳＩＥ命令が発生した条件の詳細を格納するのを完了する。この後者のアクションは、インターセプト（ｉｎｔｅｒｃｅｐｔｉｏｎ）と呼ばれる。解釈実行の一例が、非特許文献２に説明される。
【００２７】
本明細書で用いられるファームウェアとは、例えば、プロセッサのマイクロコード、ミリコード、及び／又はマクロコードを含む。ファームウェアは、例えば、上位レベルのマシン・コードの実装に用いられるハードウェア・レベルの命令及び／又はデータ構造体を含む。一実施形態において、ファームウェアは、例えば、典型的には、信頼できるソフトウェアを含むマイクロコードとして供給される専用コード、又は基礎をなすハードウェアに特有のマイクロコードを含み、システム・ハードウェアへのオペレーティング・システムのアクセスを制御する。
【００２８】
本発明の１つ又は複数の態様を組み込むためのコンピューティング環境の別の例が、図３に示される。この例では、ホスト・アーキテクチャのホスト・コンピュータ３０２をエミュレートする、エミュレートされたホスト・コンピュータ・システム３００が提供される。エミュレートされたホスト・コンピュータ・システム３００において、ホスト・プロセッサ（ＣＰＵ）３０４は、エミュレートされたホスト・プロセッサ（又は、仮想ホスト・プロセッサ）であり、ホスト・コンピュータ３０２のプロセッサにより使用されるものとは異なるネイティブ命令セット・アーキテクチャを有するエミュレーション・プロセッサ３０６を通じて実現される。エミュレートされたホスト・コンピュータ・システム３００は、エミュレーション・プロセッサ３０６がアクセス可能なメモリ３０８を有する。例示的な実施形態において、メモリ３０８は、ホスト・コンピュータ・メモリ部分３１０と、エミュレーション・ルーチン部分３１２とに区分化される。ホスト・コンピュータ・メモリ３１０は、ホスト・コンピュータ・アーキテクチャに従ったエミュレートされたホスト・コンピュータ３０２のプログラムに利用可能であり、且つ、図２の同様の名称の要素と類似した、ホスト又はハイパーバイザ３１４、及びゲスト・オペレーティング・システム３１８を実行する１つ又は複数の仮想マシン３１６の両方を含むことができる。
【００２９】
エミュレーション・プロセッサ３０６は、エミュレートされたプロセッサ３０４のものではないアーキテクチャのアーキテクチャ化された（ａｒｃｈｉｔｅｃｔｅｄ）命令セットのネイティブ命令を実行する。ネイティブ命令は、例えば、エミュレーション・ルーチン・メモリ３１２から取得される。エミュレーション・プロセッサ３０６は、シーケンス及びアクセス／デコード・ルーチンにおいて取得された１つ又は複数の命令を用いることにより、ホスト・コンピュータ・メモリ３１０内のプログラムからの実行するためのホスト命令にアクセスすることができ、このシーケンス及びアクセス／デコード・ルーチンは、アクセスされたホスト命令をデコードして、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを判断することができる。１つのこうしたホスト命令は、例えば、Ｓｔａｒｔ  Ｉｎｔｅｒｐｒｅｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ（ＳＩＥ）命令とすることができ、これにより、ホストが仮想マシンにおいてゲスト・プログラムを実行しようとする。エミュレーション・ルーチン３１２は、この命令のため、及び、このＳＩＥ命令の定義に従った仮想マシン３１６において一連のゲスト命令を実行するためのサポートを含むことができる。
【００３０】
ホスト・コンピュータ・システム３０２のアーキテクチャのために定められた、例えば、汎用レジスタ、制御レジスタ、動的アドレス変換、及びＩ／Ｏサブシステム・サポート、並びにプロセッサ・キャッシュといったファシリティを含む他のファシリティを、アーキテクチャ化ファシリティ・ルーチンによりエミュレートすることができる。エミュレーション・ルーチンはまた、エミュレーション・プロセッサ３０６において利用可能な（汎用レジスタ、及び仮想アドレスの動的変換といった）機能を利用して、エミュレーション・ルーチンの性能を高めることもできる。ホスト・コンピュータ３０２の機能をエミュレートする際にプロセッサ３０６を支援するために、専用のハードウェア及びオフ・ロード・エンジンを設けることもできる。
【００３１】
本発明の１つの態様によると、多くのタイプのコンピューティング環境に用いることができる警告追跡割り込みファシリティが提供される。警告追跡割り込みファシリティは、多くのタイプのコンピューティング環境に用いることができるが、ファシリティの態様は、本明細書では、ゲスト・マルチプロセッシング・システムを参照して説明される。上述のように、ゲスト・マルチプロセッシング・システムにおいて、ゲスト・オペレーティング・システムは、少なくとも１つのホスト中央演算処理ユニットがホストするゲスト中央演算処理ユニット上で、ディスパッチ可能ユニット（例えば、プログラム、コード等）をディスパッチする。ホストＣＰＵは、ディスパッチ可能ユニットが実行されるタイムスライス（例えば、ある時間量、又は命令数、サイクル数等のような他の期間）をゲストＣＰＵに与える。ディスパッチ可能ユニットの実行中、タイムスライスが満了した場合、ディスパッチ可能ユニットは、他のいずれのゲストＣＰＵの可用性にも関係なく、ゲスト・マルチプロセッシング構成の他のいずれのゲストＣＰＵ上でも続行できない状態のままにされ得る。代わりに、ディスパッチ可能ユニットは、続行するために、唯一のゲストＣＰＵが次のタイムスライスを受信するのを待たなければならない。使用する特定の共有技術及びゲスト構成の相対的優先順位に基づいて、次のタイムスライスを、かなりの期間遅延させることができる。ゲスト構成が、ディスパッチ可能ユニットを動作させることができる他のゲストＣＰＵを有する場合でさえ、前のタイムスライスが満了したときに保存されたディスパッチ可能ユニットのゲストＣＰＵの状態が原因で、ディスパッチ可能ユニットを続行することができない。ゲストＣＰＵの続行のためにその正確な状態を使用できるようになるまで、ディスパッチ可能ユニットは非アクティブである。
【００３２】
付加的な時間（又は、付加的な命令、サイクル等といった他の付加的な期間）を与えることによって、タイムスライスを延長することが可能であるが、この追加時間（extra time）を用いたとしても、ゲストＣＰＵは、ディスパッチ可能ユニットの実行を延長することができ、通常のタイムスライスの満了時におけるように、依然としてディスパッチ可能ユニットを同じディスパッチ不能状態のままにする。
【００３３】
ホスト・プログラムは、任意のディスパッチ可能ユニットを実行している任意のゲスト・プログラムにより用いられる制御及び状態を知らないので、オペレーティング・システムがそのディスパッチ可能ユニットをクリーンアップするために、ホスト・プログラムとゲスト・プログラムとの間にプロトコルを確立することなく、常に追加時間の付与を行うことはできない。プロトコルがなければ、ゲストＣＰＵに与えられるいずれの追加時間もメイン処理において消費され、依然として、同じくディスパッチ可能ユニットのスタック状態で終わる可能性が高い。従って、本発明の１つの態様に従って、こうしたプロトコルが提供される。
【００３４】
本発明の１つの態様によると、特定のアクションをとる（例えば、ディスパッチ可能ユニットを完了させる、又はディスパッチ可能ユニットを再ディスパッチ可能にする）べきであることを示す、ゲスト・プログラムへの警告を含む猶予期間又は延長が与えられる。例として、本明細書でさらに詳細に説明され、ホストによって見られるように、猶予期間は、何らかの他のより高い優先順位のためにプロセッサを再利用するように、タイムスライスの満了に応答して又はそのタイムスライスの満了前にホストがゲストをプリエンプションするのに応答して与えられる。
【００３５】
一例として、猶予期間は、タイムスライスを無条件に延長する代わりに与えられる。通常のタイムスライスが完全に満了した場合、猶予期間が与えられるが、各々がタイムスライスを期待する全ての他の仮想化ゲストに対して公平を期すように、次の通常のタイムスライスに対して請求がなされる。通常のタイムスライスが満了しなかった場合、猶予期間は、残っている通常の時間から取得される。どちらにしても、猶予期間は、ゲストＣＰＵに与えられる残りの時間（又は他の期間）を制限し、且つ、それ自体を延長することはできない。従って、ゲストＣＰＵが任意の未知の期間実行し続けることはできない。
【００３６】
猶予期間の開始時に、ディスパッチ可能ユニットをクリーンアップする（例えば、ディスパッチ可能ユニットを終了、停止、及び／又は移動する）よう、ゲスト・プログラムに通知がなされる。猶予期間の実施により、ゲストＣＰＵが、与えられた付加的な期間を超過しないことが保証される。ゲスト・プログラムに猶予期間を与え、且つ、時間（又は他の期間）がまもなく満了する（猶予期間が開始している）ことをゲスト・プログラムに通知するプロトコルは、ゲスト・プログラムとホスト・プログラムとの間の契約（ａｇｒｅｅｍｅｎｔ）であり、プロトコルはゲスト・プログラムにより理解されるので、こうした通知が価値のあるものとなる。つまり、ゲスト・プログラムは通常、必要に応じて、現在のディスパッチ可能ユニットをゲスト構成の別のゲストＣＰＵ上でディスパッチ可能にする（例えば、これを移動させる）ことによって、通知に従う。
【００３７】
プロトコル及び警告追跡割り込みファシリティ（警告追跡又は警告追跡ファシリティとも呼ばれる）に関する更なる詳細が、図４−図１２を参照して以下に説明される。これらの図面を参照して説明される実施形態は、１つ又は複数のホストによりプロビジョニングされる１つ又は複数のゲストを有する仮想環境に関連する。しかしながら、本発明の１つ又は複数の態様は、複数のプロセッサ及び／又は複数のプログラムがリソースを共有する非仮想環境を含む、他の環境にも関連する。
【００３８】
ゲストにより観察されるような警告追跡割り込みファシリティ・プロトコルに関する詳細が、図４を参照して説明される。ゲストにより観察されるような警告追跡プロトコルは、例えば、ファシリティ・インストール済み表示、ゲストの登録、通知、及び自発的終了（voluntary exit）を含み、その各々が以下に説明される。
【００３９】
図４を参照すると、ゲスト・プログラムが警告追跡プロトコルを理解し、ファシリティ・インストール済み表示を探す（ステップ４００）。一例において、この表示は、制御ブロック（例えば、サービス呼び出し制御ブロック（Ｓｅｒｖｉｃｅ  Ｃａｌｌ  Ｃｏｎｔｒｏｌ  Ｂｌｏｃｋ、ＳＣＣＢ））内に格納されたビットであり、Ｒｅａｄ  ＳＣＰ  Ｉｎｆｏｒｍａｔｉｏｎコマンドなどの読み出しコマンドを用いて観察される。ファシリティがインストールされていると判断した後、ゲスト・プログラムが登録を行う（ステップ４０２）。登録とは、ゲスト・プログラムが、警告追跡割り込みファシリティ・プロトコルを理解していることをホスト・プログラムに伝えるための機構である。一例において、登録は、Ｄｉａｇｎｏｓｅ命令を用いて行われ、その例を、以下にさらに説明する。
【００４０】
ゲスト・マルチプロセッシング構成のゲストＣＰＵにわたって一貫した挙動が望ましいため、一実施形態において、いずれかのゲスト中央処理ユニットから開始された登録も、マルチプロセッシング構成の全てのゲスト中央処理ユニットをカバーする。ゲスト・マルチプロセッシング構成において、ゲストＣＰＵは同じ主メモリを使用し、且つ、ゲストＣＰＵは、シングル・イメージ（single image）と呼ばれることもあるもので動作すると仮定される。従って、１つのゲストＣＰＵの登録は、マルチプロセッシング環境の他のゲストＣＰＵに適用可能である。一実施形態において、登録は取り消し不能であり、このことは、タイミング・ウィンドウの回避に役立ち、開発を単純化し、試験容易性の改善を可能にする。登録が取り消し不能であっても、ゲスト・プログラムは、プロトコルへの参加を続行するかどうかを判断することができる。ゲスト・プログラムは、以下に説明される１つ又は複数のイネーブルメント・インジケータをリセットすること又はリセットしたことによって、不参加を選択することができる。
【００４１】
ゲスト・プログラムを警告追跡プロトコルに登録した後、ゲストＣＰＵに猶予期間を通知することができる（ステップ４０４）。例えば、ホストＣＰＵにより、タイムスライスの満了（又は、更に別の例においては、満了が迫っていること）、又はそのタイムスライスのプリエンプションが、ゲストＣＰＵに警告され得る。特定の１つの例において、登録されたゲスト構成のＣＰＵに、例えば、通常のタイムスライスの満了、及び例えばクリーンアップのための付加的な期間を与える猶予期間の開始が通知される。
【００４２】
通知された後、ゲストは、ディスパッチ可能ユニットを再ディスパッチ可能にするため、又は他のいずれかの適切な調整を行うための制約された時間量又は他の期間、即ち猶予期間（例えば、特定の１つの実施形態においては、５０ミリ秒）を有する。通常のタイムスライスが既に終了している場合、例えば制御をホストに戻す前に、猶予期間を用いて、ディスパッチ可能ユニットを再ディスパッチ可能にするか、又は他のいずれかの適切な調整を行う。タイムスライスが終了していない場合、猶予期間を使用し、タイムスライスの残り部分を放棄する。ゲストＣＰＵが使用する実際の時間の通常の課金が行われる。
【００４３】
通知を行った後、ゲストＣＰＵは、ゲストＣＰＵの操作が非自発的に終了される制約付き期間（例えば、限定された時間量）になる。通常のタイムスライス期間ごとに、１つの通知だけが行われる。従って、ゲストＣＰＵは、基礎をなす共有ホストＣＰＵを他の場所で共有することができることを保証する最終時間制御により依然として制約され、それにより、ホスト・プログラムが提供する仮想化全体において良好な秩序と規律が保たれる。
【００４４】
通知は、ゲスト・プログラムにより固有の状態が検出されるいずれの機構によっても達成することができる。例として、固有のゲスト割り込み、設定することができるアーキテクチャ的に定められた主メモリ位置、又は、ホスト及びゲストの両方が利用可能なＩ／Ｏ外部メモリ・デバイスが挙げられる。最初のものは、割り込みを可能にするための適切なゲスト・イネーブルメントを必要とする。後の２つは、猶予期間が浪費されていないことの十分に頻繁な定期検査を必要とする。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）の特定の１つの例において、警告追跡割り込み（ＷＴＩ）と呼ばれるゲスト割り込みが、通知として用いられる。
【００４５】
警告された後、ゲストは、その所定のタイムスライス／猶予期間を自発的に終了する（ステップ４０６）。ゲストは、通知された後、現在のタイムスライス／猶予期間を終了し、ディスパッチ可能ユニットを再ディスパッチ可能にする（例えば、ディスパッチ可能ユニットを停止及び移動する、又は完了する）。この終了により、ゲストが実際にプロトコルに従っていることがホスト・プログラムに知らされる。ゲストが制御を放棄し、従って、ホスト・プログラムに戻る他の理由が存在することがある。通常、ディスパッチ可能ユニットを再ディスパッチ可能にするための制約付き処理においては、何らかのこうした外的終了（ｅｘｔｒａｎｅｏｕｓ  ｅｘｉｔ）に関して条件は発生しない。ゲストＣＰＵが警告追跡割り込みプロトコルを介して、猶予期間内に終了した場合、これが発生するたびに、次のタイムスライスにおいてフィードバック表示が与えられる。このように、ゲスト・プログラムは、猶予期間により課された時間制約を満たしたことを知る。
【００４６】
ゲストの自発的終了が遅延した場合、その実行は、猶予期間の満了によってプリエンプトされる。次にゲストＣＰＵが通常のタイムスライスを有した状態で開始されたとき、フィードバック表示が与えられ、ゲストは、遅延したことを知る。通常の猶予期間は、クリーンアップ及び自発的終了のための十分な時間を許容するので、一般に、これをゲスト・プログラムにおける問題判別のために用いることができる。
【００４７】
外的終了が発生した場合、次にゲストＣＰＵが通常のタイムスライス内で開始されたときに、自発的終了が迅速に発生すると予想される。同じフィードバック機構が、外的終了が介入したことをゲスト・プログラムに知らせ、従って、問題判別を知らせるための異なる情報を提供する。
【００４８】
自発的終了は、制御をゲスト・プログラムからホスト・プログラムに渡させるいずれかの機構によって達成され、この機構は前述のフィードバック機構を含む。ホスト・プログラムがゲスト要求を認識するように、特定のアーキテクチャの警告追跡割り込みプロトコルにおいて、使用される機構が定められる。一例において、この機構は、以下に説明されるＤｉａｇｎｏｓｅ命令を含む。
【００４９】
警告追跡割り込みプロトコルのゲスト観察に加えて、一実施形態において、図５を参照して以下にさらに詳細に説明されるように、ホストもプロトコルを観察する。
【００５０】
図５を参照すると、ホストはファシリティ・インストール済み表示を認識し、それをゲストに反映させる（ステップ５００）。例えば、ホストは制御ブロック（例えば、ＳＣＣＢ）の内のインストール済みビットをチェックし、警告追跡プロトコルのインストール済み状態（すなわち、これが設定されている）を認識し、ホスト・プログラムは、ホストに有利になるようにそれを使用できる方法を知っている。従って、ファシリティ表示がそのゲストに反映される。例えば、ファシリティをゲストに反映させるために、ホストは、ゲスト制御ブロック（例えば、ゲストＳＣＣＢ）又はゲストがアクセス可能なメモリ領域にインストール済みビットを設定する。何らかの理由で、ゲストが警告追跡割り込みファシリティ・プロトコルのインストール状態を観察することをホスト・プログラムが望まず、ゲストがそのインストール済み状態を観察し、使用することを許容しない場合、ホスト・プログラムは、アンインストール表示をゲストに渡す（例えば、ゲストにより見られるビットをゼロに設定する）。さらに、一実施形態において、ホスト・プログラムは、警告追跡プロトコルがディスエーブルにされるように、ゲストＣＰＵの制御を設定する（例えば、ゲストＣＰＵの状態記述における１つ又は複数の指定ビットをオフにする）。
【００５１】
ゲストにより登録が開始されると、ホスト・プログラムは、非請求型（ｕｎｓｏｌｉｃｉｔｅｄ）登録要求を受信し、ゲストが登録を行ったことを記憶する（ステップ５０２）。いずれかの単一のゲストＣＰＵにより開始された登録要求も、ゲスト・マルチプロセッシング構成における全てのゲストＣＰＵを登録するのに十分である。従って、ホスト・プログラムは、ゲスト構成の全てのＣＰＵに関して警告追跡プロトコルをイネーブルにする（ステップ５０４）。例えば、ホスト・プログラムは、ゲストＣＰＵの状態記述における１つ又は複数の指定ビットを、ゲストに関する警告追跡割り込みファシリティをイネーブルにするように設定する。必ずしも登録のフィードバックが、ゲストに戻される必要はない。ファシリティがインストールされていないときでもゲストＣＰＵが登録を試行した場合には、ホストは、要求を無視し、警告追跡割り込みファシリティ・プロトコルに関してゲストＣＰＵをイネーブルにしない。
【００５２】
ゲストが警告追跡ファシリティを登録し、これに関してゲストがイネーブルになった後、ゲストは、プロトコルの呼び出しの通知を受信することができる（ステップ５０６）。以下に説明されるように、これは、多数のシナリオで達成することができる。
【００５３】
一例として、警告追跡割り込みプロトコルが、ホストＣＰＵ（例えば、ホストＣＰＵ  Ｘ）において解釈実行モードで動作しているゲストＣＰＵに関してイネーブルにされると、ホスト・プログラムは、ホストＣＰＵ  Ｙからプロトコルを開始することができる。つまり、ゲストＣＰＵが、ホストＣＰＵにプロビジョニングされ、そのホストＣＰＵは、現在ホスト・プログラムが利用できない。ホスト・プログラムがＣＰＵ  Ｘを再取得する理由を有する場合、ホスト・プログラムはまず、ＣＰＵ  Ｘに解釈実行モードを終了させる。つまり、ゲストＣＰＵは停止され、それにより、ＣＰＵ  Ｘの解釈実行モードを終了する。ゲストＣＰＵが自発的に停止するのを可能にせずに、いずれかの任意の時点でゲストＣＰＵを停止させることは、警告追跡割り込みプロトコルが解決するように意図されている問題のリスクを引き起こす。警告追跡割り込みプロトコルは、ホスト・プログラムのアクションをゲストＣＰＵ  Ｘにおける通知に変換できるようにすることにより、ホストＣＰＵ  Ｙが通知を要求するのを可能にする（ステップ５０６）。ゲスト・プログラムは既に登録しているので、ホスト・プログラムは、ゲスト・プログラムが通知を認識し、自発的終了の実行の最後のステップを含む通知の適切な処理をサポートするという予測を有し、従って、ホストＣＰＵ  Ｘの制御をホスト・プログラムに戻す。ひとたびこれが行われると、ホスト・プログラムは、ホストＣＰＵ  Ｘのいかなる使用も続行し、プロセスを開始させることができる。
【００５４】
ホスト・プログラムは、例えば、何らかの状態を設定し、インジケータ（例えば、ビット）を設定すること、又は非請求型非同期信号（例えば、警告追跡割り込み）をゲストに送らせることによって、ゲストに通知する。登録されても、こうした通知信号の受信時間は、依然としてゲストにおいては未知である。登録することによって、ゲストは、知らせられた場合及び知らせられたときにプロトコルに従うことに合意するだけである。
【００５５】
ホスト・ユニプロセッサ・システムにおいて、１つのホストＣＰＵが、ゲストＣＰＵが動作している解釈実行モードにある場合、警告追跡割り込みプロトコルを呼び出すための他のホストＣＰＵは存在しない。しかしながら、この場合でも、解釈実行モードにある間にホストＣＰＵがタイムスライスの満了を認識すると、警告追跡割り込みプロトコルをＣＰＵ自体により呼び出すことができ、次いで、警告追跡割り込みプロトコルが、猶予期間を与え、通知を実施することができる。
【００５６】
通知の更に別の例において、ホストＣＰＵが解釈実行モードにあるときにホストＣＰＵが認識する内部状態の変化のために、ホストＣＰＵにより警告追跡割り込みプロトコルにおいて定められた通知がゲストＣＰＵに送られると、通知が行われる。この例は、ゲストＣＰＵが、警告追跡割り込みプロトコルに関してイネーブルにされ、ホストＣＰＵがタイムスライスの終了を認識したときに生じる。制御を放棄するようゲストＣＰＵに通知する前に、ＣＰＵは、猶予期間を内部に与えて、ゲストＣＰＵが通知を受け取り、適切なアクションをとり（例えば、現在のディスパッチ可能ユニットを完了する、又は現在のディスパッチ可能ユニットを再ディスパッチ可能にする）、自発的に終了するのに十分な時間を許容する。内部では、ホストＣＰＵは、ゲストＣＰＵに通知がなされたことを示すように、状態を保持する。ゲストが猶予期間内に自発的に終了しない場合、ＣＰＵはこれを認識し、ゲストの実行を終了させ、それにより、解釈実行モードを終了させることにより、制御をホスト・プログラムに戻す。一実施形態において、ゲストは、プロトコルが呼び出された理由を判断するすべがなく、クリーンアップし、終了するように通知されただけである。解釈実行モードの終了をもたらし、従ってゲストの実行を終了させるための他のホストの理論的根拠が存在し得る。例えば、ゲスト構成全体に対して何らかの協調的変更を行うために、全てのゲストＣＰＵの実行を停止させるシナリオが存在する。マルチプロセッシング・ゲスト構成は、ゲスト構成の他のＣＰＵからの異なる規則又は仮定の下で動作する幾つかのＣＰＵを有するものではない。こうした非対称性が、予測できないゲスト結果をもたらし得る。
【００５７】
ホストＣＰＵは、自発的終了、又は他のいずれかの理由による終了（例えば、ホストにＣＰＵリソースが戻される）を実施したゲストＣＰＵの結果を受け取る（ステップ５０８）。終了が、警告追跡割り込みプロトコルが定めるものに起因する場合、ホスト・プログラムは、どんなに時間がかかっても、次にゲストＣＰＵが開始されたときに、ゲストＣＰＵにフィードバックを与えるように記憶する。猶予期間の満了前にゲストが自発的に終了したと仮定すると、このフィードバックはポジティブな（「良い」）表示である。終了がいずれかの他の理由に起因する場合、ゲストＣＰＵの次の開始時に警告追跡割り込みプロトコルのフィードバックは生じない。
【００５８】
ゲストの自発的終了が遅延した場合、つまり、ゲストが自発的に終了するためのアクションを行うが、猶予期間が満了した場合、ゲストＣＰＵの実行は、猶予期間の満了によってプリエンプトされる。次にゲストＣＰＵが通常のタイムスライスを有した状態で開始されたとき、ゲストの自発的終了が遅延したことをゲストが知るように、例外フィードバック表示が与えられる。通常の猶予期間は、クリーンアップ及び自発的終了のための十分な時間を許容するので、一般に、これをゲスト・プログラムにおける問題判別に用いることができる。
【００５９】
警告追跡割り込みプロトコルの自発的終了以外の終了が発生し、次にゲストＣＰＵが通常のタイムスライスを有した状態で開始された場合、警告追跡プロトコルごとのフィードバックは含まれない。
【００６０】
自発的終了手段は、ホスト・プログラムによりプロトコル自発的終了として認識され、且つ、上述のフィードバック機構を含む、制御をゲスト・プログラムからホスト・プログラムに渡させるいずれの機構によっても達成される。一例において、Ｄｉａｇｎｏｓｅ命令が、自発的終了のために用いられる。つまり、タイムスライスの完了を示すために、特定のパラメータを有するＤｉａｇｎｏｓｅ命令が用いられる。Ｄｉａｇｎｏｓｅ命令がゲスト・プログラムにより発行され、実行された後、ホスト・プログラムは、終了が時間通りであったかどうかを判断する。次いで、Ｄｉａｇｎｏｓｅ後の次の順次命令（ｎｅｘｔ  ｓｅｑｕｅｎｔｉａｌ  ｉｎｓｔｒｕｃｔｉｏｎ）において、ゲストが再び開始されると、それが時間通りであったかどうかを示す条件コードが与えられる。条件コードは、例えば、次の順次命令においてゲストを開始するのに用いられるゲストＰＳＷにおいて設定される。次いで、ゲストは、条件コードを試験することができる。
【００６１】
ホストによるゲストの自発的終了の処理が、図６を参照してさらに説明される。最初に、ゲストＣＰＵが停止すると、制御がホストＣＰＵに戻る（ステップ６００）。制御が猶予期間内に戻されたかどうかについての判断がなされる（問い合わせ６０２）。制御が猶予期間内に戻された場合、ホスト・プログラムは、警告追跡割り込みプロトコルごとのゲストの自発的終了を観察し、その時にどのホストＣＰＵがゲストＣＰＵをプロビジョニングできるかに関係なく、ゲストＣＰＵの次の開始に関する良いフィードバックを記憶する（ステップ６０４）。これは、警告追跡割り込みファシリティがインストールされていることを仮定している。インストールされていない場合、フィードバック状態は記憶されない。しかしながら、ゲストが自発的に終了するためのアクションをとるが、それが猶予期間外であった場合（問い合わせ６０２）、ホストＣＰＵ上のホスト・プログラムは、警告追跡割り込みプロトコルごとのゲストの自発的終了を観察し（それが早期であって、非自発的に終了する必要があったとしても）、その時にどのホストＣＰＵがゲストＣＰＵをプロビジョニングできるかに関係なく、ゲストＣＰＵの次の開始に関する悪いフィードバックを記憶する（ステップ６０６）。同じく、これは、警告追跡割り込みファシリティがインストールされていると仮定している。インストールされていない場合、フィードバック状態は記憶されない。
【００６２】
その後、ホストが良いフィードバックを記憶しても、悪いフィードバックを記憶しても、ホスト・プログラムは、ホストＣＰＵを、プリエンプトする割り当て（ｐｒｅｅｍｐｔｉｎｇ  ａｓｓｉｇｎｍｅｎｔ）にリダイレクトする（ステップ６０８）。つまり、ホストは、そのリソース（ＣＰＵ）を取り戻しているので、１つ又は複数の機能を実施するようにリダイレクトされる。
【００６３】
さらに、ゲストＣＰＵの次の順次命令の開始時に、どのホストＣＰＵがゲストＣＰＵをプロビジョニングするかに関係なく、フィードバック状態が記憶された場合には、ゲストＣＰＵを開始する前に、フィードバック状態表示を設定する（ステップ６１０）。一例において、フィードバック状態表示は、次の順次命令の開始を示す、例えば状態記述のＰＳＷにおける、ＳＩＥ状態記述において設定される。
【００６４】
警告追跡割り込みファシリティと関連した処理に関する更なる詳細を、図７−図１１を参照して説明する。特に、図７は、警告追跡割り込みファシリティの処理の概要と関連した論理の一実施形態を示し、図８−図１０は、本発明の１つの態様による警告追跡割り込みファシリティの処理の詳細を提供し、図１１は、警告追跡割り込みの受信と関連した論理の一実施形態を示す。
【００６５】
図７を参照すると、最初に、ゲスト・プログラム（例えば、ゲスト・オペレーティング・システム）が、警告追跡割り込みファシリティがインストールされたことを認識する（ステップ７００）。一実施形態において、このことは、ゲスト・プログラムが、例えば指定された制御ブロック内に配置されたインストール済みファシリティ・インジケータ（例えば、ビット）を観察することによって達成される。ゲスト・オペレーティング・システムが、警告追跡割り込みファシリティに参加するためのサポートを有する場合、ゲスト・オペレーティング・システムは、警告追跡割り込みファシリティ・インストール済みインジケータを認識し、次いで、プロトコルに参加する能力を表示する。一例において、これは、警告追跡処理への参加の意図を登録することを含む（ステップ７０２）。本明細書で説明されるように、一例において、登録は、Ｄｉａｇｎｏｓｅ命令を介して行われる。登録されると、ゲスト・オペレーティング・システムは、ホストＣＰＵ及びホスト・プログラムの両方に対して、例えば共有リソース（例えば、ゲストＣＰＵ）へのアクセスを失いそうである、及び、例えば現在実行中のディスパッチ可能ユニットに対してアクションをとるべきであるという警告をゲストに与える明瞭な割り込みである、警告追跡割り込み（ＷＴＩ）の処理方法を知っていることを示す。一実施形態において、登録は、ＷＴＩの受信のための必須条件である。ゲストが警告追跡割り込みファシリティに登録されていない場合、ゲストのタイムスライスが満了すると、猶予期間は提供されず、ゲストＣＰＵは、解釈実行モードから出される。
【００６６】
登録されていても、一実施形態において、ゲスト・プログラムは、ＷＴＩの提示をディスエーブルにするための２つの機構を有する。例を挙げれば、例えばプログラム状況ワード（ｐｒｏｇｒａｍ  ｓｔａｔｕｓ  ｗｏｒｄ、ＰＳＷ）における選択されたビットを、ＷＴＩを含む全ての外部割り込みの提示をディスエーブルにするゼロに設定することができ、又は、指定された制御レジスタ（例えば、ＣＲ０）におけるビットをゼロに設定して、ＷＴＩのみをディスエーブルにすることができる。両方のビットが１である場合、ＷＴＩの提示がイネーブルにされる。ＷＴＩの提示が、ＷＴＩ猶予期間の全体にわたってディスエーブルにされたままである場合、ゲストの実行がＷＴＩの利点なしに終了し、このことは非自発的終了を構成する。
【００６７】
ゲストＣＰＵの解釈実行中、ゲストＣＰＵが、ホストＣＰＵタイマーの外部割り込み条件（例えば、タイムスライスの満了）又はホスト・プログラムにより要求されるプリエンプションを内部認識した場合（問い合わせ７０４）、内部ＣＰＵ処理は、ホストが制御を受け取る前に、警告追跡割り込み処理を実施するかどうかを判断する（問い合わせ７０６）。つまり、内部ＣＰＵ処理は、ゲストが警告追跡処理に関してイネーブルにされていることをチェックし、従って、実施される処理内に警告追跡処理を含ませるべきであると判断する。警告追跡割り込み処理が実施されない場合、ゲストの解釈実行は終了し（ステップ７０８）、制御がホスト・プログラムに戻る（ステップ７１０）。問い合わせ７０８に戻り、警告追跡割り込み処理が実施される場合、以下でさらに詳細に説明されるようにその処理が実施される（ステップ７１２）。
【００６８】
警告追跡割り込み処理の更なる詳細の実施形態が、図８−図１０を参照して説明される。この処理においては、次のものを含む多数の制御インジケータが用いられる。
アーキテクチャ的に視覚可能ではないが、内部ＣＰＵ論理により用いられる、警告追跡割り込みファシリティ猶予期間アクティブ内部制御（例えば、Ｇビット）；
１である場合、ＷＴＩがゲストに提示され、ゼロである場合、ＷＴＩが提示されなかったことを示す、警告追跡割り込み（ＷＴＩ）提示内部制御（例えば、Ｐビット）。警告追跡割り込みファシリティ猶予期間アクティブ内部制御と同様に、ＷＴＩ提示内部制御は、アーキテクチャ的に視覚可能ではないが、内部ＣＰＵ論理により用いられる。
例えば、ゲストＣＰＵ状態記述における警告追跡介入要求インジケータである、ゲスト制御のホスト・プログラム・プリエンプション（例えば、Ｔビット）；及び、
Ｅインジケータが１である場合、外部割り込みが可能である。一例において、Ｅインジケータは、現在のプログラム状況ワード（ＰＳＷ）内のビットである。
【００６９】
図８を参照すると、一例において、ホストＣＰＵタイマー割り込み条件が認識される（例えば、タイムスライスの満了）か、又は警告追跡介入要求（例えば、ホストは、ＣＰＵリソースの早い戻り、即ち、タイムスライスの終了前の戻りを望む）が認識される。ホストＣＰＵタイマー割り込み条件が認識された場合（問い合わせ８００）、猶予期間アクティブ制御インジケータが設定されるか（例えば、Ｇが１に等しいか）どうかについての判断がなされる（問い合わせ８０２）。Ｇが設定されない場合、Ｇインジケータが、例えば１に設定され（ステップ８０４）、警告追跡割り込みファシリティ猶予期間がまもなく開始する。次いで、ホストＣＰＵタイマーの現在の値が保存され（保存された値は、本明細書ではオリジナル値と呼ばれる）（ステップ８０６）、ホストＣＰＵタイマーを警告追跡猶予期間（例えば、５０マイクロ秒）に設定する（ステップ８０８）。
【００７０】
その後、ゲストが警告追跡割り込みに関してイネーブルにされているかどうかについての判断がなされる（問い合わせ８１０）。一実施形態において、ゲスト・レベル２がアクティブであり、１つのゲストが別のゲストを開始させたことを示す場合、ゲスト２は、ゲスト１の割り込みに関して解釈実行モードを終了し、Ｇｕｅｓｔ  １  Ｓｔａｒｔ  Ｉｎｔｅｒｐｒｅｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ命令が無効にされる。従って、この時点で、処理はゲスト１としてのものである。ゲスト２がアクティブでない場合、処理は単にゲスト１を続行する。ゲストがＷＴＩに関してイネーブルにされている場合、警告追跡外部割り込み（ＷＴＩ）がゲストに提示される（ステップ８１２）。一例において、この割り込みは、必要に応じて、１つ又は複数の機能（例えば、クリーンアップ）を実施するために猶予期間を有することを示すように提示された、特定の割り込みコードを含む。
【００７１】
さらに、Ｐが、ＷＴＩが提示されたことを示す１に設定される（ステップ８１４）。同じく、Ｔビットが、インターロック更新機能を用いて１に設定される（介入要求がもともと使用されていた場合、これは既に１であった可能性がある）（ステップ８１６）。ＷＴＩが提示されたかどうかに関係なく、ホストＣＰＵタイマーの猶予期間をデクリメントを続行する（ステップ８１８）。次いで、この処理は終了する（ステップ８２０）。一例において、このプロセスを終了する指定は、ＣＰＵが警告追跡割り込みファシリティの現在の処理を完了し、且つ、ＣＰＵの現在の状態により指示される他の処理に戻ることを示す。
【００７２】
問い合わせ８１０に戻ると、ゲストが警告追跡割り込みに関してイネーブルにされていない場合、処理はステップ８１６に進む。この例では、ゲストはＷＴＩに関してイネーブルにされていないので、ＷＴＩをゲストに提示することはできない。しかしながら、Ｔビットは保留中に設定されるので、ゲストがＷＴＩに関してイネーブルにされたときに、後でこれを検出することができる。
【００７３】
問い合わせ８００に戻ると、これがホストＣＰＵタイマー割り込み条件ではない場合、警告追跡介入要求が認識される（即ち、ホストのプリエンプション）。つまり、ゲストの状態記述の介入要求フィールドにおけるＴビットは、１である。従って、Ｇインジケータが設定されているかどうかについての判断がなされる（問い合わせ８５０）。設定されていない場合（例えば、０）、処理はステップ８０４を続行する。この状況において、Ｔが１に等しいという条件は、ＷＴＩプロセスを開始するための最初の理由になる。しかしながら、Ｇビットが設定されている場合、Ｐが設定されているかどうかについての判断がなされる（問い合わせ８５２）。Ｐが設定されていない場合（例えば、０に等しい）、処理は、ＷＴＩを提示しようとして、ステップ８１０を続行する。しかしながら、Ｐが設定されている場合（例えば、０に等しくない）、警告追跡ファシリティ猶予期間が開始した後、Ｔが１に等しいという発見は効果をもたらさず、プロセスは終了する（ステップ８５４）。
【００７４】
問い合わせ８０２に戻ると、Ｇが設定されている場合（例えば、１に等しい）、ゲストＣＰＵは既に猶予期間内に実行されており、ホストＣＰＵタイマーの満了は、猶予期間が満了したことを示す。従って、ＷＴＩサイクルは既に開始されており、猶予期間は満了している。従って、図９を参照すると、以前に保存されたオリジナルのホストＣＰＵタイマー値を、猶予期間中に実際に使用された時間量だけ減らし、次いで、ホストＣＰＵタイマー内にロードする（ステップ８６０）。解釈実行モードは終了し（ステップ８６２）、ホストＣＰＵタイマー外部割り込みをホストに提示する（ステップ８６４）（これは、非自発的終了の１つの形態である）。
【００７５】
上記に加えて、ＷＴＩに関してＣＰＵをイネーブルにすることができる特定の命令を介して、ＷＴＩ分析を開始することができる。例えば、図１０を参照すると、最初に、例えば、本明細書で説明されるように、ＰＳＷ内の指定ビットを設定することができる、Ｌｏａｄ  ＰＳＷ（Ｅｘｔｅｎｄｅｄ）命令及びＳｔｏｒｅ  Ｔｈｅｎ  ｏｒ  Ｓｙｓｔｅｍ  Ｍａｓｋ命令、並びに制御レジスタ内の選択されたビットを設定することができるＬｏａｄ  Ｃｏｎｔｒｏｌ命令を含む、ＷＴＩに関してＣＰＵをイネーブルにすることができる多数の命令が、監視を実施する。例えば、割り込みに関してイネーブルにすることができる命令は、潜在的な警告追跡処理に関してＴビットをチェックする。Ｔ＝０である場合（問い合わせ８８０）、ＷＴＩは存在せず、このプロセスは終了する（ステップ８８４）。しかしながら、Ｔ＝１である場合、処理は問い合わせ８２２を続行する。
【００７６】
問い合わせ８８２において、Ｐが設定されている（例えば、１に等しい）かどうかについての判断がなされる。設定されている場合、イネーブルメントが既に検出されているので、このプロセスは終了する（ステップ８８４）。しかしながら、Ｐが設定されていない場合（例えば、１に等しくない）、Ｇが設定されている（例えば、１に等しい）かどうかについての更なる判断がなされる（問い合わせ８８６）。設定されていない場合、処理はステップ８０４を続行する（図８）。しかしながら、Ｇが設定されている場合（例えば、１に等しい）（問い合わせ８８６）（図１０）、処理は、図８における問い合わせ８１０を続行し（ステップ８８８）、処理が終了する。
【００７７】
警告追跡割り込みの処理の更なる詳細を、図１１を参照して説明する。ゲスト・プログラムが警告追跡割り込みを受信すると、ゲスト・プログラムは、例えばディスパッチ可能作業ユニットを再ディスパッチ可能にするために、実施すべきいかなる機能（例えば、ＯＳ機能）も実施する（ステップ９００）。例えば、ゲストは、特定の時点においてディスパッチ可能ユニットを停止し、その状態を保存し、それを別のゲストＣＰＵに移動させるか、又は状態情報を提供することによってその移動をイネーブルにする等である。ゲスト・オペレーティング・システムは、これが、警告追跡クリーンアップ完了信号をホスト・プログラムに発行することによって終了した（自発的終了としても知られる）ことを知らせる（ステップ９０２）。この信号は、ゲスト操作に残りのタイムスライスを放棄させるいずれの機構としてもよい。しかしながら、この信号は、ホスト・プログラムにより、プロトコルのクリーンアップ部分として認識される。一例において、Ｄｉａｇｎｏｓｅ命令のクリーンアップ完了機能が用いられる。
【００７８】
猶予期間が満了する前にゲスト・プログラムがクリーンアップ完了信号を発行した場合（問い合わせ９０４）、ホスト・プログラムは、ゲストＣＰＵが期間内に終了したことを記憶する（ステップ９０６）。これが自発的終了である。次にゲストＣＰＵが開始されると、信号の時間通りの（ｏｎ−ｔｉｍｅ）性質が再びゲストＣＰＵに示される（ステップ９０８）。一例において、ゲスト再開ＰＳＷが、成功条件コード（例えば、条件コード０）を示すように、設定される。
【００７９】
問い合わせ９０４に戻ると、理由は何であれ、ゲスト・プログラムの時間がかかりすぎた場合、ホストＣＰＵタイマーが猶予期間を０までデクリメントしたことで猶予期間が満了し、従って、ホストＣＰＵタイマーの外部割り込み条件をＣＰＵに提示する。この場合、ＣＰＵは、ゲストが既に猶予期間内にあったと認識し、別の猶予期間を与えない。代わりに、ゲストの実行が停止し、外部割り込みの受信によって、制御がホスト・プログラムに戻る。ホスト・プログラムは、このゲストＣＰＵのこの終了が非自発的終了であると認識する。
【００８０】
次のゲストＣＰＵの開始時に、ゲスト・オペレーティング・システムは、今や遅すぎるものの、クリーンアップ完了信号を発行することができる。ホスト・プログラムは、もはや、クリーンアップ完了信号の受信を待つことを予想していない。従って、次にゲストＣＰＵが開始されたとき、信号が遅すぎたことが再びゲストＣＰＵに示される（ステップ９１２）。一例において、次の開始時にゲストが見るゲスト再開ＰＳＷが、遅延（ｌａｔｅ）条件を示すようにマーク付けされる。遅すぎるＤｉａｇｎｏｓｅ命令の発行は、以前に猶予期間内の終了に失敗し、後でこれといった理由もなく終了したことから、古い（ｓｔａｌｅ）Ｄｉａｇｎｏｓｅ命令と呼ばれることもある。
【００８１】
一例において、ゲストＣＰＵの新しい開始時に、ゲスト・プログラムは、信号が猶予期間内に発行されたか又は発行されなかったかについて、プロトコルの信号再開部分をチェックすることができる。ゲスト・プログラムは、この情報を用いて、遅延した理由を調査し、将来よりタイムリーに統計値を改善するように改善を行うことができる。
【００８２】
一実施形態において、ゲストが全ての外部割り込みに関してディスエーブルにされている場合、外部割り込みをイネーブルにすることができる多数の命令が監視を行う。ゲストが外部割り込みに関してイネーブルにされている場合、ＷＴＩイネーブルメントを調べる。この時点で、ＷＴＩがイネーブルにされており、Ｐビットが０である場合、ＷＴＩがゲストＣＰＵに提示される。
【００８３】
上述のように、一実施形態において、クリーンアップが完了したことを示すために、又は警告追跡割り込みファシリティの登録のために、Ｄｉａｇｎｏｓｅ機能が使用される。クリーンアップの完了に関しては、Ｄｉａｇｎｏｓｅ機能は、クリーンアップ・パラメータと共に発行され、実行されると、発行ＣＰＵが警告追跡外部割り込みの受信と関連したいずれかの所望の処理を実施したことを知らせる。実行が完了すると、警告追跡割り込みの後で許容されるモデル依存の時間間隔内に完了が発行されたかどうかを示す、条件コードが設定される。
【００８４】
登録機能に関しては、Ｄｉａｇｎｏｓｅ機能が、登録パラメータと共に発行され、実行されると、発行構成が警告追跡割り込みを理解していることを知らせる。実行が完了すると、成功の条件コードが設定される。登録状態はシステムのリセットによってクリアされる。
【００８５】
Ｄｉａｇｎｏｓｅ命令の形式の一実施形態を、図１２を参照して説明する。一実施形態において、Ｄｉａｇｎｏｓｅ命令１０００は、Ｄｉａｇｎｏｓｅ機能を示す操作コード１００２と、第１レジスタ・フィールド１００４（Ｒ１）と、第２レジスタ・フィールド１００６（Ｒ３）と、汎用レジスタ・フィールド１００８（Ｂ２）と、変位フィールド１０１０（Ｄ２）とを含む。一例において、Ｄ２フィールドのコンテンツを汎用レジスタＢ２のコンテンツに加算する。結果はデータをアドレス指定するためには使用されず、代わりに、特定のビット（例えば、ビット４８−６３）が操作コード拡張（ｏｐｅｒａｔｉｏｎ  ｃｏｄｅ  ｅｘｔｅｎｓｉｏｎ）として使用される。操作コード拡張が所定の値である場合、警告追跡クリーンアップ完了が指定され、タイムスライスは放棄される。
【００８６】
一例において、Ｒ３フィールドは使用されず、ゼロを含む。さらに、汎用レジスタＲ１の指定ビットは使用されず、ゼロを含むことになり、汎用レジスタＲ１の特定のビット（例えば、ビット６３）が、ゼロの場合はクリーンアップ完了機能を指定し、１の場合は登録機能を指定する。
【００８７】
共有物理ＣＰＵを用いる論理パーティションにおいて、この機能は、その上で論理ＣＰＵが実行されている物理ＣＰＵを、別の論理ＣＰＵを割り当てることを可能にすることによって、システム性能を改善することができる。
【００８８】
Ｄｉａｇｎｏｓｅを超えると、ＷＴＩ猶予期間にある間にいずれの他のＳＩＥも終了し、原因が何であれ、消費された猶予期間の時間量だけデクリメントされたホストＣＰＵタイマーのオリジナル値を同様に復元する。
【００８９】
一実施形態において、論理パーティションなどの共有ＣＰＵリソースを有する構成において警告追跡外部割り込みをＣＰＵに提示することができる機構を提供する、警告追跡割り込みファシリティが、本明細書で詳細に説明される。制御プログラムは、警告追跡外部割り込みを信号として使用して、現在実行中のディスパッチ可能ユニットを構成の異なるＣＰＵ上でディスパッチ可能にすることができる。
【００９０】
一実施形態において、物理プロセッサにおいてタイムスライスで実行されている論理（ゲスト）プロセッサは、例えば、論理プロセッサに割り込みを行い（共有できる物理プロセッサから割り当て解除を行い）、論理プロセッサが行っている作業を完了させること、又は別の論理プロセッサに移動させることを可能にするまでの時間量である猶予期間を示す警告信号を受信する。一例として、ゲストＣＰＵに、そのタイムスライスが満了したこと、及び、現在のディスパッチ可能作業ユニット（ＤＵ）をプリエンプトして、これを別のゲストＣＰＵ上で再ディスパッチ可能にすべきであることを信号で知らせる。一例において、警告信号は、それがＷＴＩであることを示す割り込みコードを有する割り込みである。更に別の例において、割り込みコードは、猶予期間に与えられたある時間量又は他の期間についての情報を含む。
【００９１】
一実施形態において、警告追跡割り込みファシリティは、１つのプログラム及び／又はプロセッサが１つ又は複数の他のプログラム及び／又はプロセッサとリソース（例えば、ＣＰＵリソース、又は他のリソース）を共有する非仮想環境、並びに仮想環境において使用することができる。
【００９２】
環境が仮想環境である一実施形態においては、ゲストの視点から：
１．ゲスト・プログラムは、警告追跡割り込みプロトコル・ファシリティのインストール済み条件を観察する。
２．ゲスト・プログラムは、警告追跡割り込みプロトコルを登録する。
３．ゲストＣＰＵは、特定のアーキテクチャに従って、警告追跡通知を受信する（例えば、共有メモリの表示、共有Ｉ／Ｏデバイスの表示、割り込み）。
４．ゲストＣＰＵ上で実行されているゲスト・プログラムは、通知を受信したゲスト・プログラムの性質に従って、適用可能な処理を実施する（オペレーティング・システムごとに特有であると予想される通知の処理）。
５．ゲストＣＰＵは、警告追跡プロトコルの自発的技術に従って、制御を放棄する。
６．ゲストＣＰＵの次の開始時に、ゲスト・プログラムは、警告追跡プロトコルに従って、フィードバックを観察することができる。
【００９３】
さらに、一実施形態においては、ホストの視点から：
Ａ．ホスト・プログラムは、警告追跡割り込みプロトコル・ファシリティのインストール条件を観察する。
１．ホスト・プログラムは、警告追跡プロトコル・ファシリティ・インストール済み表示を取得する。
２．ホスト・プログラムは、警告追跡割り込みプロトコルのインストール済み状態を永続的に記憶する。
３．ホスト・プログラムは、警告追跡プロトコル・インストール済み状態を各ゲスト構成に示す。
４．ホスト・プログラムは、全ての未登録のゲストＣＰＵにおける警告追跡プロトコルをディスエーブルにする。
５．ホスト・プログラムは、各ゲスト構成からのゲスト警告追跡登録要求を認識するよう準備する。
Ｂ．ホスト・プログラムは、ゲストからの警告追跡登録要求を認識する。
１．ホスト・プログラムは、ゲスト構成が警告追跡プロトコルを理解していることを永続的に記憶する。
２．ホスト・プログラムは、警告追跡プロトコルに関してゲストをイネーブルにする。
Ｃ．通常のゲストＣＰＵ  Ｘの操作中、対応するホストＣＰＵ  Ｘを再取得するために、ゲストＣＰＵ  Ｘのプリエンプションが用いられる。
１．ＣＰＵ  Ｙにおけるホスト・プログラムは、通知をゲストＣＰＵ  Ｘに信号で送る
ａ．ＣＰＵ  Ｘは、警告追跡プロトコルに従って、共有メモリ位置の更新、共有Ｉ／Ｏデバイスの更新、又はゲストＣＰＵ  Ｘへの割り込みを介して、通知をゲストＣＰＵ  Ｘに伝える。
Ｄ．ゲストＣＰＵ  Ｘが停止し、制御をホストＣＰＵ  Ｘに戻す。
１．猶予期間内である場合、ＣＰＵ  Ｘ上のホスト・プログラムは、警告追跡プロトコルごとにゲストの自発的終了を観察し、その時にどのホストＣＰＵがゲストＣＰＵ  Ｘをプロビジョニングできるかに関係なく、ゲストＣＰＵ  Ｘの次の開始に関する良いフィードバックを記憶する。
ａ．猶予期間内であるが、ゲストＣＰＵ  Ｘの終了が警告追跡プロトコルに従っていない場合、フィードバック状態は記憶されない。
２．猶予期間内でない場合、ＣＰＵ  Ｘ上のホスト・プログラムは、警告追跡プロトコルごとにゲストの自発的終了を観察し、その時にどのホストＣＰＵがゲストＣＰＵ  Ｘをプロビジョニングできるかに関係なく、ゲストＣＰＵ  Ｘの次の開始に関する悪いフィードバックを記憶する。
ａ．猶予期間内でないが、ゲストＣＰＵ  Ｘの終了が警告追跡プロトコルに従っていない場合、フィードバック状態は記憶されない。
３．ホストＣＰＵ  Ｘ上のホスト・プログラムは、ＣＰＵ  Ｘを、プリエンプトする割り当てにリダイレクトする。
Ｅ．ゲストＣＰＵ  Ｘの次の順次開始は、どのホストＣＰＵがゲストＣＰＵ  Ｘをプロビジョニングするかに関係なく、フィードバック状態が記憶されていれば、ゲストＣＰＵ  Ｘを開始する前に警告追跡プロトコルに従ってフィードバック表示を設定する。
【００９４】
一実施形態において、ゲスト構成のゲスト・プロセッサは、固有の割り込みを受け取り、この割り込みはコンピュータ・アーキテクチャのために定められ、割り込みの意味は警告追跡割り込みである。割り込みは、その割り込みを警告追跡割り込みとして識別する特別なコードを示す。割り込みは、ゲスト・プロセッサの実行終了につながる猶予期間と呼ばれる比較的短い時間間隔を暗黙的に示す。
【００９５】
猶予期間中、一例において、ゲスト・プログラムは、現在のディスパッチ可能作業ユニットを別のゲスト・プロセッサ上で再ディスパッチ可能にし、従って、現在のゲスト・プロセッサ上でスタックし、ホストからの次の通常のタイムスライスの開始を待つのを回避することが予想される。
【００９６】
一例においては、比較的短い時間間隔が、ゲスト・プロセッサのホスト・プログラム開始ごとに１回だけ与えられる。時間間隔は、例えば、ゲスト・プロセッサが実行されている既存の時間間隔から与えられる。与えられた時間間隔は通常の残りのタイムスライスから割り当てられるので、これは本質的に借用時間ではなく、現在の時間間隔からの制約された時間量を使用しており、実際には、ゲスト・プロセッサが比較的短期間にプリエンプトされることを保証する。
【００９７】
現在のタイムスライスが満了した更に別の例において、時間間隔は、ゲスト・プロセッサが実行されている既存の時間間隔に加えた追加時間として与えられる。与えられる時間間隔は、ゲスト・プロセッサが消費するであろう、予想される次の通常の連続的な時間間隔に対するものとして、ホスト・プログラムにより考慮に入れられ、その下でゲスト・プロセッサが次に実行されると予想される。ゲスト・プロセッサが、実際に比較的短期間にプリエンプトされることを保証することが、依然として意図される。
【００９８】
一例において、警告追跡イベントに対する割り込み要求を生成し、共有ＣＰＵ上での現在の実行間隔がまもなく終わることを、プログラムに知らせることができる。この割り込み要求は、構成が登録され、且つ警告追跡割り込みファシリティに関してイネーブルにされている場合に生成される保留状態タイプである。
【００９９】
プログラム（例えば、ホストとゲスト）間の協調的処理により、プログラム（例えば、ゲスト・オペレーティング・システム）間のリソースの共有（例えば、ＣＰＵ）が最適化される。１つ又は複数の態様は、例えば、同じＣＰＵ利用により良好な応答時間をもたらす。さらに、ハイパーバイザによるディスパッチ解除の前に、システムのシリアル化が解放される。
【０１００】
更に別の実施形態において、本発明の１つ又は複数の態様をオペレーティング・システムからの要求と共に用いて、個々の実行スレッドを続行させ、時間的制約のある作業の経過時間を改善することができる。つまり、スレッドが機能を実施するための付加的な時間を要求すること、又はスレッドに付加的な時間が与えられることが可能である。
【０１０１】
当業者により認識されるように、本発明の１つ又は複数の態様は、システム、方法、又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の１つ又は複数の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取ることができ、これらは全て、本明細書において、一般的に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明の１つ又は複数の態様は、コンピュータ可読プログラム・コードが組み込まれた、１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形を取ることができる。
【０１０２】
１つ又は複数のコンピュータ可読媒体のいずれの組み合わせを用いることもできる。コンピュータ可読媒体は、コンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、これらに限定されるものではないが、例えば、電子、磁気、光学、電磁気、赤外線又は半導体のシステム、装置若しくはデバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）として、以下のもの、即ち、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のいずれかの適切な組み合わせが挙げられる。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって用いるため、又はそれらと接続して用いるためにプログラムを収容又は格納することができるいずれかの有形媒体とすることができる。
【０１０３】
ここで図１３を参照すると、一例において、コンピュータ・プログラム製品１１００は、例えば、本発明の１つ又は複数の態様を提供し、容易にするように、コンピュータ可読プログラム・コード手段又は論理１１０４をその上に格納するための１つ又は複数の非一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）コンピュータ可読ストレージ媒体１１０２を含む。
【０１０４】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限られるものではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、又は上記のいずれかの適切な組み合わせを含む、適切な媒体を用いて伝送することができる。
【０１０５】
本発明の１つ又は複数の態様に関する操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（登録商標）、ＳｍａｌｌＴａｌｋ（登録商標）、Ｃ＋＋等のようなオブジェクト指向型プログラミング言語、及び、「Ｃ」プログラミング言語、アセンブラ、又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語のいずれかの組み合わせで書くことができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、スタンドアロンのソフトウェア・パッケージとして、一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。
【０１０６】
本発明の１つ又は複数の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して、本明細書で説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ以上のブロックにおいて指定された機能／動作を実装するための手段を作り出すようにすることができる。
【０１０７】
これらのコンピュータ・プログラム命令はまた、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。
【０１０８】
コンピュータ・プログラム命令はまた、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実行するためのプロセスを提供するようにもすることもできる。
【０１０９】
図面内のフローチャート及びブロック図は、本発明の１つ又は複数の態様の種々の実施形態によるシステム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含むモジュール、セグメント、又はコードの部分を表すことができる。幾つかの代替的な実装において、ブロック内に記載された機能は、図面内に記載された順序とは異なる順序で行われ得ることにも留意すべきである。例えば、連続して示された２つのブロックが、関与する機能に応じて、実際には、実質的に同時に実行されることもあり、ときにはブロックが逆順に実行されることもある。また、ブロック図及び／又はフローチャート図の各ブロック、並びにブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェア・ベースのシステムによって、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装できることにも留意されたい。
【０１１０】
上記に加えて、本発明の１つ又は複数の態様は、顧客環境の管理を提供するサービス・プロバイダにより、供与し、提供し、配置し、管理し、サービスを行うことなどができる。例えば、サービス・プロバイダは、１つ又は複数の顧客に対して本発明の１つ又は複数の態様を実施するコンピュータ・コード及び／又はコンピュータ・インフラストラクチャを作成し、保持し、サポートすることなどができる。見返りとして、サービス・プロバイダは、例として、予約申し込み及び／又は報酬契約の下で顧客から支払いを受けることができる。付加的に又は代替的に、サービス・プロバイダは、１つ又は複数の第三者に対する広告コンテンツの販売から支払いを受けることができる。
【０１１１】
本発明の一態様において、本発明の１つ又は複数の態様を実施するために、アプリケーションを配置することができる。一例として、アプリケーションの配置は、本発明の１つ又は複数の態様を実施するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【０１１２】
本発明の更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピュータ・インフラストラクチャを配置することが可能であり、そこでは、コードは、コンピューティング・システムと協働して、本発明の１つ又は複数の態様を実施することができる。
【０１１３】
本発明の更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピュータ・インフラストラクチャを統合するためのプロセスを提供することができる。コンピュータ・システムは、コンピュータ可読媒体を含み、ここで、コンピュータ媒体は本発明の１つ又は複数の態様を含む。コードは、コンピュータ・システムと協働して、本発明の１つ又は複数の態様を実施することができる。
【０１１４】
種々の実施形態が上述されたが、これらは例にすぎない。例えば、他のアーキテクチャのコンピューティング環境が、本発明の１つ又は複数の態様を組み込み、用いることが可能である。さらに、猶予期間は、命令若しくはサイクルの数、又は他の定量化可能な値のなどの、時間量以外のものとすることができる。本発明の範囲から逸脱することなく、多くの変更及び／又は追加をなすことができる。
【０１１５】
さらに、他のタイプのコンピューティング環境が、本発明の１つ又は複数の態様から利益を得ることができる。一例として、システム・バスを通してメモリ要素に直接的に又は間接的に結合された少なくとも２つのプロセッサを含む、プログラム・コードを格納及び／又は実行するのに適したデータ処理システムが使用可能である。メモリ要素は、例えば、プログラム・コードの実際の実行時に用いられるローカル・メモリと、大容量記憶装置と、実行時に大容量記憶装置からコードを取得しなければならない回数を減少させるために少なくとも幾つかのプログラム・コードの一時的なストレージを提供するキャッシュ・メモリとを含む。
【０１１６】
入力／出力即ちＩ／Ｏ装置（キーボード、ディスプレイ、ポインティング装置、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、親指ドライブ、及び他のメモリ媒体等を含むが、これらに限定されるものではない）は、直接的に、又は介在するＩ／Ｏコントローラを通して、システムに結合することができる。データ処理システムが、介在するプライベート・ネットワーク又は公衆ネットワークを通して、他のデータ処理システム又は遠隔プリンタ若しくはストレージ装置に結合できるように、ネットワーク・アダプタをシステムに結合することもできる。モデム、ケーブル・モデム及びイーサネット・カードは、利用可能なタイプのネットワーク・アダプタのほんの数例にすぎない。
【０１１７】
本発明の１つ又は複数の態様を組み込むことができるコンピューティング環境の他の例が以下に説明される。
【０１１８】
図１４を参照すると、本発明の１つ又は複数の態様を実装するためのホスト・コンピュータ・システム５０００の代表的なコンポーネントが描かれている。代表的なホスト・コンピュータ５０００は、コンピュータ・メモリ（即ち、中央ストレージ）５００２と通信状態にある１つ又は複数のＣＰＵ５００１に加えて、ストレージ媒体デバイス５０１１及び他のコンピュータ又はＳＡＮ等と通信するためのネットワーク５０１０へのＩ／Ｏインターフェースを含む。ＣＰＵ５００１は、アーキテクチャ化された（ａｒｃｈｉｔｅｃｔｅｄ）命令セット及びアーキテクチャ化された機能を有するアーキテクチャに準拠している。ＣＰＵ５００１は、プログラム・アドレス（仮想アドレス）をメモリの実アドレスに変換するための動的アドレス変換（Ｄｙｎａｍｉｃ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ、ＤＡＴ）５００３を有することができる。ＤＡＴは、一般的に、変換をキャッシュに入れるための変換ルックアサイド・バッファ（ＴＬＢ）５００７を含むので、コンピュータ・メモリ５００２のブロックへの後のアクセスは、アドレス変換の遅延を必要としない。一般的に、コンピュータ・メモリ５００２とプロセッサ５００１との間に、キャッシュ５００９が用いられる。キャッシュ５００９は、１つより多いＣＰＵが利用可能な大容量のキャッシュと、大型のキャッシュと各ＣＰＵとの間のより小型でより高速な（下位レベルの）キャッシュとを有する階層とすることができる。幾つかの実装において、下位レベルのキャッシュは、命令のフェッチ及びデータ・アクセスのために別個の下位レベル・キャッシュを与えるように分割される。一実施形態においては、キャッシュ５００９を介して、命令フェッチ・ユニット５００４により、命令がメモリ５００２からフェッチされる。命令は、命令デコード・ユニット５００６でデコードされ、命令実行ユニット５００８にディスパッチされる（幾つかの実施形態においては他の命令と共に）。一般的には、例えば、算術演算実行ユニット、浮動小数点実行ユニット、及び分岐命令実行ユニットなどの幾つかの実行ユニット５００８が用いられる。命令は、実行ユニットにより実行され、必要に応じて命令が指定したレジスタ又はメモリからオペランドにアクセスする。メモリ５００２からオペランドにアクセスする（ロード又はストアする）場合、典型的には、ロード／ストア・ユニット５００５が、実行される命令の制御下でアクセスを処理する。命令は、ハードウェア回路又は内部のマイクロコード（ファームウェア）において、又はその両方の組み合わせによって実行することができる。
【０１１９】
既述のように、コンピュータ・システムは、ローカル（又は主）ストレージ内の情報、並びに、アドレッシング、保護、参照、及び変更の記録を含む。アドレッシングの幾つかの態様は、アドレスの形式、アドレス空間の概念、種々のタイプのアドレス、及び１つのタイプのアドレスを別のタイプのアドレスに変換する方法を含む。主ストレージの一部は、永続的に割り当てられた記憶位置を含む。主ストレージは、システムに、データの直接アドレス指定可能な高速アクセス・ストレージを与える。データ及びプログラムを処理できるようになる前に、（入力装置から）データ及びプログラムの両方が、主ストレージにロードされる。
【０１２０】
主ストレージは、キャッシュと呼ばれることもある、１つ又は複数のより小さくより高速アクセスのバッファ・ストレージを含むことができる。キャッシュは、典型的には、ＣＰＵ又はＩ／Ｏプロセッサと物理的に関連付けられる。物理的構成及び別個のストレージ媒体を使用することの影響は、性能に対するものを除き、通常、プログラムにより観察することはできない。
【０１２１】
命令及びデータ・オペランドについて、別個のキャッシュを保持することができる。キャッシュ内の情報は、キャッシュ・ブロック又はキャッシュ・ライン（又は短縮してライン）と呼ばれる、整数境界（ｉｎｔｅｇｒａｌ  ｂｏｕｎｄａｒｙ）上にある連続したバイト内に保持される。モデルは、キャッシュ・ラインのサイズをバイトで返す、ＥＸＴＲＡＣＴ  ＣＡＣＨＥ  ＡＴＴＲＩＢＵＴＥ命令を提供することができる。モデルはまた、データ若しくは命令キャッシュへのストレージのプリフェッチ、又は、キャッシュからのデータの解放に影響を与える、ＰＲＥＦＥＴＣＨ  ＤＡＴＡ及びＰＲＥＦＥＴＣＨ  ＤＡＴＡ  ＲＥＬＡＴＩＶＥ  ＬＯＮＧ命令を提供することができる。
【０１２２】
ストレージは、長い水平方向のビットの文字列と考えられる。大部分の操作において、ストレージへのアクセスは、左から右への順序で進む。ビットの文字列は、８ビット単位で分割される。８ビットの単位は１バイトと呼ばれ、全ての情報の形式の基本的な構成要素（ｂｕｉｌｄｉｎｇ  ｂｌｏｃｋ）である。ストレージ内の各々のバイト位置は、負でない一意の整数により識別され、この整数がそのバイト位置のアドレスであり、即ち、簡単にバイト・アドレスである。隣接するバイト位置は、連続するアドレスを有し、左の０で始まり、左から右への順序で進む。アドレスは、符号なしの２進整数であり、２４ビット、３１ビット、又は６４ビットである。
【０１２３】
情報は、ストレージとＣＰＵ又はチャネル・サブシステムとの間で、一度に１バイトずつ、又は１バイト・グループずつ伝送される。特に断りのない限り、例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）においては、ストレージ内のバイト・グループは、グループの左端のバイトによりアドレス指定される。グループ内のバイト数は、実行される操作により暗黙に又は明示的に指定される。ＣＰＵ操作に用いられる場合、バイト・グループはフィールドと呼ばれる。例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）においては、バイト・グループの中の各々において、ビットは、左から右の順序で番号が付けられる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）においては、左端ビットは「上位（ｈｉｇｈ−ｏｒｄｅｒ）」ビットと呼ばれることがあり、右端ビットは「下位（ｌｏｗ−ｏｒｄｅｒ）」ビットと呼ばれることがある。しかしながら、ビット数は、ストレージ・アドレスではない。バイトだけを、アドレス指定することができる。ストレージ内の１つのバイトの個々のビットに対して操作を行うためには、そのバイト全体にアクセスされる。１バイトの中のビットには、左から右に０から７までの番号が付けられる（例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）において）。１つのアドレスの中のビットには、２４ビット・アドレスの場合は８−３１若しくは４０−６３の番号を付けることができ、又は、３１ビット・アドレスの場合は１−３１若しくは３３−６３の番号を付けることができ、６４ビット・アドレスの場合は０−６３の番号が付けられる。複数のバイトから成る他のいずれかの固定長形式の中では、その形式を構成するビットには、０から始まる連続番号が付けられる。エラー検出のため及び好ましくは訂正のために、各バイト又はバイト・グループと共に、１つ又は複数の検査ビットが伝送されることがある。このような検査ビットは、マシンにより自動的に生成されるものであり、プログラムが直接制御することはできない。記憶容量は、バイト数で表わされる。ストレージ・オペランド・フィールドの長さが命令のオペレーション・コードで暗黙的に指定される場合、そのフィールドは固定長を有すると言われ、固定長は、１バイト、２バイト、４バイト、８バイト、又は１６バイトとすることができる。一部の命令では、より長いフィールドが暗黙的に指定されることもある。ストレージ・オペランド・フィールドの長さが暗黙的に指定されず明示的に記述される場合は、そのフィールドは可変長を有すると言われる。可変長オペランドは、１バイトのインクリメントにより変化し得る（又は、一部の命令では、２バイトの倍数若しくは他の倍数）。情報がストレージ内に置かれるとき、ストレージへの物理パスの幅が格納されるフィールドの長さを上回り得るとしても、指定されたフィールド内に含まれるバイト位置のコンテンツのみが置き換えられる。
【０１２４】
特定の情報単位は、ストレージ内の整数境界上にあることになる。そのストレージ・アドレスがバイトでの単位での長さの倍数であるとき、境界は、情報単位に関して整数のものであると言われる。整数境界上にある２バイト、４バイト、８バイト、及び１６バイトのフィールドには、特別な名称が与えられる。ハーフワードは、２バイト境界上にある２個の連続したバイトのグループであり、これは、命令の基本的な構成要素である。ワードは、４バイト境界上にある４個の連続したバイトのグループである。ダブルワード（ｄｏｕｂｌｅｗｏｒｄ）は、８バイト境界上にある８個の連続したバイトのグループである。クワッドワード（ｑｕａｄｗｏｒｄ）は、１６バイト境界上にある１６個の連続したバイトのグループである。ストレージ・アドレスが、ハーフワード、ワード、ダブルワード、及びクワッドワードを示す場合、そのアドレスの２進表現は、それぞれ、右端の１個、２個、３個、又は４個のビットが０になる。命令は、２バイトの整数境界上にあることになる。大部分の命令のストレージ・オペランドは、境界合わせ（ｂｏｕｎｄａｒｙ  ａｌｉｇｎｍｅｎｔ）要件をもたない。
【０１２５】
命令及びデータ・オペランドに対して別個のキャッシュを実装するデバイスにおいては、後に命令をフェッチするキャッシュ・ライン内にプログラムが格納される場合には、その格納が後にフェッチされる命令を変更するかどうかに関係なく、著しい遅延が生じることがある。
【０１２６】
一実施形態において、本発明は、ソフトウェア（ライセンス内部コード、ファームウェア、マイクロコード、ミリコード、ピココードなどと呼ばれる場合もあるが、そのいずれも本発明の１つ又は複数の態様と整合性がある）により実施することができる。図１４を参照すると、本発明の１つ又は複数の態様を具体化するソフトウェア・プログラム・コードには、ホスト・システム５０００のプロセッサ５００１により、ＣＤ−ＲＯＭドライブ、テープドライブ、又はハードドライブといった長期ストレージ媒体デバイス５０１１からアクセスすることができる。ソフトウェア・プログラム・コードは、ディスケット、ハードドライブ、又はＣＤ−ＲＯＭといった、データ処理システムと共に用いるための種々の周知の媒体のいずれかの上で具体化することができる。コードは、こうした媒体上に分散させても、又はコンピュータ・メモリ５００２からユーザに分散させても、又は、こうした他のシステムのユーザが使用するために、ネットワーク５０１０上の１つのコンピュータ・システムのストレージから他のコンピュータ・システムに分散させてもよい。
【０１２７】
ソフトウェア・プログラム・コードは、種々のコンピュータ・コンポーネント及び１つ又は複数のアプリケーション・プログラムの機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、ストレージ媒体デバイス５０１１から相対的により高速のコンピュータ・ストレージ５００２にページングされ、そこでプロセッサ５００１による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理的媒体上で具体化し、及び／又は、ネットワークを介してソフトウェア・コードを分散させる技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、有形の媒体（これらに限定されるものではないが、電子メモリ・モジュール（ＲＡＭ）、フラッシュメモリ、コンパクトディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含む）上に作成され格納されたとき、「コンピュータ・プログラム製品」と呼ばれることが多い。コンピュータ・プログラム製品媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
【０１２８】
図１５は、本発明の１つ又は複数の態様を実施することができる代表的なワークステーション又はサーバ・ハードウェア・システムを示す。図１５のシステム５０２０は、随意的な周辺機器を含む、パーソナル・コンピュータ、ワークステーション、又はサーバなどの代表的なベース・コンピュータ・システム５０２１を含む。ベース・コンピュータ・システム５０２１は、１つ又は複数のプロセッサ５０２６と、周知の技術に従ってプロセッサ５０２６とシステム５０２１の他のコンポーネントを接続し、これらの間の通信を可能にするために用いられるバスとを含む。バスは、プロセッサ５０２６を、ハードドライブ（例えば、磁気媒体、ＣＤ、ＤＶＤ、及びフラッシュメモリのいずれかを含む）又はテープドライブを含むことができる、メモリ５０２５及び長期ストレージ５０２７に接続する。システム５０２１はまた、バスを介して、マイクロプロセッサ５０２６を、キーボード５０２４、マウス５０２３、プリンタ／スキャナ５０３０、及び／又はタッチ・センシティブ・スクリーン、デジタル化された入力パッド等のいずれかのユーザ・インターフェース機器とすることができる他のインターフェース機器といった、１つ又は複数のインターフェース機器に接続する、ユーザ・インターフェース・アダプタを含むこともできる。バスはまた、ディスプレイ・アダプタを介して、ＬＣＤスクリーン又はモニタなどのディスプレイ装置５０２２をマイクロプロセッサ５０２６にも接続する。
【０１２９】
システム５０２１は、ネットワーク５０２９と通信する５０２８ことができるネットワーク・アダプタを介して、他のコンピュータ又はコンピュータ・ネットワークと通信することができる。例示的なネットワーク・アダプタは、通信チャネル、トークン・リング、イーサネット又はモデムである。或いは、システム５０２１は、ＣＤＰＤ（セルラー・デジタル・パケット・データ）カードのような無線インターフェースを用いて通信することもできる。システム５０２１は、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）、又はシステム５０２１内のこうした他のコンピュータと関連付けることができ、又は、別のコンピュータ等とのクライアント／サーバ構成におけるクライアントとすることができる。これらの構成の全て、並びに、適切な通信ハードウェア及びソフトウェアは、当技術分野において周知である。
【０１３０】
図１６は、本発明の１つ又は複数の態様を実施することができるデータ処理ネットワーク５０４０を示す。データ処理ネットワーク５０４０は、各々が複数の個々のワークステーション５０４１、５０４２、５０４３、５０４４を含むことができる、無線ネットワーク及び有線ネットワークのような複数の個々のネットワークを含むことができる。さらに、当業者であれば理解するように、１つ又は複数のＬＡＮを含ませることができ、そこで、ＬＡＮは、ホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを含むことができる。
【０１３１】
さらに図１６を参照すると、ネットワークはまた、ゲートウェイ・コンピュータ（クライアント・サーバ５０４６）、又はアプリケーション・サーバ（データ・リポジトリにアクセスすることができ、且つ、ワークステーション５０４５から直接アクセスすることもできる遠隔サーバ５０４８）のような、メインフレーム・コンピュータ又はサーバを含むこともできる。ゲートウェイ・コンピュータ５０４６は、各々の個々のネットワークへの入口点として働く。ゲートウェイは、１つのネットワーク・プロトコルを別のものに接続するときに必要とされる。ゲートウェイ５０４６は、通信リンクによって別のネットワーク（例えば、インターネット５０４７）に結合できることが好ましい。ゲートウェイ５０４６はまた、通信リンクを用いて、１つ又は複数のワークステーション５０４１、５０４２、５０４３、５０４４に直接結合することもできる。ゲートウェイ・コンピュータは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なＩＢＭ（登録商標）  ｅＳｅｒｖｅｒ（商標）Ｓｙｓｔｅｍ  ｚ（登録商標）サーバを用いて実装することができる。
【０１３２】
図１５及び図１６を同時に参照すると、本発明の１つ又は複数の態様を具体化することができるソフトウェア・プログラム・コードには、一般的に、ＣＤ−ＲＯＭドライブ又はハードドライブといった長期ストレージ媒体５０２７から、システム５０２０のプロセッサ５０２６によってアクセスすることができる。ソフトウェア・プログラム・コードは、ディスケット、ハードドライブ、又はＣＤ−ＲＯＭといった、データ処理システムと共に用いるための種々の周知の媒体のいずれかの上で具体化することができる。コードは、そのような媒体上で分散させても、又はメモリからユーザ５０５０、５０５１に分散させても、或いは、こうした他のシステムのユーザが用いるために、ネットワーク上の１つのコンピュータ・システムのストレージから他のコンピュータ・システムに分散させてもよい。
【０１３３】
或いは、プログラム・コードをメモリ５０２５内で具体化し、プロセッサ・バスを用いてプロセッサ５０２６によってプログラム・コードにアクセスすることができる。このようなプログラム・コードは、種々のコンピュータ・コンポーネント及び１つ又は複数のアプリケーション・プログラム５０３２の機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、ストレージ媒体５０２７から高速メモリ５０２５にページングされ、そこでプロセッサ５０２６による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理的媒体上で具体化し、及び／又は、ネットワークを介してソフトウェア・コードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、作成され、有形の媒体（これらに限定されるものではないが、電子メモリ・モジュール（ＲＡＭ）、フラッシュメモリ、コンパクトディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含む）に格納されたとき、「コンピュータ・プログラム製品」と呼ばれることが多い。コンピュータ・プログラム製品媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
【０１３４】
プロセッサが最も容易に利用できるキャッシュ（通常、プロセッサの他のキャッシュよりも高速で小さい）は、最下位（Ｌ１又はレベル１）のキャッシュであり、メインストア（主メモリ）は、最上位レベルのキャッシュ（３つのレベルがある場合にはＬ３）である。最下位レベルのキャッシュは、実行されるマシン命令を保持する命令キャッシュ（Ｉ−キャッシュ）と、データ・オペランドを保持するデータ・キャッシュ（Ｄ−キャッシュ）とに分割されることが多い。
【０１３５】
図１７を参照すると、プロセッサ５０２６についての例示的なプロセッサの実施形態が示される。典型的には、メモリ・ブロックをバッファに入れてプロセッサ性能を向上させるために、１つ又は複数のレベルのキャッシュ５０５３が用いられる。キャッシュ５０５３は、用いられる可能性が高いメモリ・データのキャッシュ・ラインを保持する高速バッファである。典型的なキャッシュ・ラインは、６４バイト、１２８バイト、又は２５６バイトのメモリ・データである。データをキャッシュに入れるのではなく、命令をキャッシュに入れるために、別個のキャッシュが用いられることが多い。キャッシュ・コヒーレンス（メモリ及びキャッシュ内のラインのコピーの同期）は、多くの場合、当技術分野において周知の種々の「スヌープ（ｓｎｏｏｐ）」アルゴリズムによって与えられる。プロセッサ・システムの主メモリ・ストレージ５０２５は、キャッシュと呼ばれることが多い。４つのレベルのキャッシュ５０５３を有するプロセッサ・システムにおいて、主ストレージ５０２５は、典型的にはより高速であり、且つ、コンピュータ・システムが利用できる不揮発性ストレージ（ＤＡＳＤ、テープ等）の一部だけを保持するので、レベル５（Ｌ５）のキャッシュと呼ばれることがある。主ストレージ５０２５は、オペレーティング・システムによって主ストレージ５０２５との間でページングされるデータのページを「キャッシュに入れる」。
【０１３６】
プログラム・カウンタ（命令カウンタ）５０６１は、実行される現行の命令のアドレスを常時監視している。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）プロセッサのプログラム・カウンタは６４ビットであり、従来のアドレッシング制限をサポートするために、３１ビット又は２４ビットに切り捨てることができる。プログラム・カウンタは、典型的には、コンテキスト・スイッチの際に持続するように、コンピュータのＰＳＷ（プログラム状況ワード）内で具体化される。従って、例えば、オペレーティング・システムにより、プログラム・カウンタ値を有する進行中のプログラムに割り込みをかけることが可能である（プログラム環境からオペレーティング・システム環境へのコンテキスト・スイッチ）。プログラムのＰＳＷは、プログラムがアクティブでない間、プログラム・カウンタ値を保持し、オペレーティング・システムが実行されている間、オペレーティング・システムの（ＰＳＷ内の）プログラム・カウンタが用いられる。典型的には、プログラム・カウンタは、現行の命令のバイト数に等しい量だけインクリメントされる。ＲＩＳＣ（縮小命令セット・コンピューティング）命令は、典型的には固定長であり、ＣＩＳＣ（複合命令セット・コンピューティング）命令は、典型的には可変長である。ＩＢＭ（登録商標）  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）の命令は、２バイト、４バイト、又は６バイトの長さを有するＣＩＳＣ命令である。例えば、コンテキスト・スイッチ操作又は分岐命令の分岐成立（Ｂｒａｎｃｈ  ｔａｋｅｎ）操作により、プログラム・カウンタ５０６１が変更される。コンテキスト・スイッチ操作において、現行のプログラム・カウンタ値は、実行されるプログラムについての他の状態情報（条件コードのような）と共にプログラム状況ワード内に保存され、実行される新しいプログラム・モジュールの命令を指し示す新しいプログラム・カウンタ値がロードされる。分岐成立操作を行い、分岐命令の結果をプログラム・カウンタ５０６１にロードすることにより、プログラムが判断を下すこと又はプログラム内でループすることを可能にする。
【０１３７】
典型的には、プロセッサ５０２６の代わりに命令をフェッチするために、命令フェッチ・ユニット５０５５が用いられる。フェッチ・ユニットは、「次の順次命令」、分岐成立命令のターゲット命令、又はコンテキスト・スイッチの後のプログラムの最初の命令のいずれかをフェッチする。今日の命令フェッチ・ユニットは、プリフェッチされた命令を用いることができる可能性に基づいて、命令を投機的にプリフェッチするプリフェッチ技術を用いることが多い。例えば、フェッチ・ユニットは、次の順次命令を含む１６バイトの命令と、付加的なバイトの更なる順次命令とをフェッチすることができる。
【０１３８】
次いで、フェッチされた命令が、プロセッサ５０２６によって実行される。一実施形態において、フェッチされた命令は、フェッチ・ユニットのディスパッチ・ユニット５０５６に渡される。ディスパッチ・ユニットは命令をデコードし、デコードされた命令についての情報を適切なユニット５０５７、５０５８、５０６０に転送する。実行ユニット５０５７は、典型的には、命令フェッチ・ユニット５０５５からデコードされた算術命令についての情報を受け取り、命令の操作コードに従ってオペランドに関する算術演算を行う。オペランドは、好ましくは、メモリ５０２５、アーキテクチャ化レジスタ５０５９、又は実行される命令の即値フィールドのいずれかから、実行ユニット５０５７に与えられる。実行の結果は、格納された場合には、メモリ５０２５、レジスタ５０５９、又は他のマシン・ハードウェア（制御レジスタ、ＰＳＷレジスタなどのような）内に格納される。
【０１３９】
プロセッサ５０２６は、典型的には、命令の機能を実行するための１つ又は複数の実行ユニット５０５７、５０５８、５０６０を有する。図１８を参照すると、実行ユニット５０５７は、インターフェース論理５０７１を介して、アーキテクチャ化された汎用レジスタ５０５９、デコード／ディスパッチ・ユニット５０５６、ロード・ストア・ユニット５０６０、及び他のプロセッサ・ユニット５０６５と通信することができる。実行ユニット５０５７は、幾つかのレジスタ回路５０６７、５０６８、５０６９を用いて、算術論理演算ユニット（ＡＬＵ）５０６６が動作する情報を保持することができる。ＡＬＵは、加算（ＡＤＤ）、減算（ＳＵＢＴＲＡＣＴ）、乗算（ＭＵＬＴＩＰＬＹ）、及び除算（ＤＩＶＩＤＥ）などの算術演算、並びに、論理積（ＡＮＤ）、論理和（ＯＲ）、及び排他的論理和（ＸＯＲ）、ローテート（ＲＯＴＡＴＥ）及びシフト（ＳＨＩＦＴ）のような論理関数を実行する。ＡＬＵは、設計に依存する専用の演算をサポートすることが好ましい。他の回路は、例えば条件コード及び回復サポート論理を含む、他のアーキテクチャ化ファシリティ５０７２を提供することができる。典型的には、ＡＬＵ演算の結果は、出力レジスタ回路５０７０に保持され、この出力レジスタ回路５０７０が、結果を種々の他の処理機能に転送することができる。多数のプロセッサ・ユニットの構成が存在し、本説明は、一実施形態の代表的な理解を与えることのみを意図している。
【０１４０】
例えばＡＤＤ命令は、算術及び論理機能を有する実行ユニット５０５７で実行され、一方、例えば浮動小数点命令は、特化された浮動小数点能力を有する浮動小数点実行部で実行される。実行ユニットは、オペランドに対して操作コードが定めた関数を行うことにより、命令が特定したオペランドに対して動作することが好ましい。例えば、ＡＤＤ命令は、命令のレジスタ・フィールドによって特定された２つのレジスタ５０５９内に見出されるオペランドに対して、実行ユニット５０５７により実行することができる。
【０１４１】
実行ユニット５０５７は、２つのオペランドに対して算術加算を実行し、結果を第３オペランドに格納し、ここで第３オペランドは、第３のレジスタであっても又は２つのソース・レジスタのいずれかであってもよい。実行ユニットは、シフト、ローテート、論理積、論理和、及び排他的論理和のような種々の論理関数、並びに、加算、減算、乗算、除法のいずれかを含む、種々の代数関数を実行することができる算術論理演算ユニット（ＡＬＵ）５０６６を用いることが好ましい。スカラー演算のために設計されたＡＬＵ５０６６もあり、浮動小数点のために設計されたものＡＬＵ５０６６もある。データは、アーキテクチャに応じて、ビッグエンディアン（最下位のバイトが最も高いバイト・アドレスである）、又はリトルエンディアン（最下位のバイトが最も低いバイト・アドレスである）とすることができる。ＩＢＭ（登録商標）  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）は、ビッグエンディアンである。符号付きフィールドは、アーキテクチャに応じて、符号及び大きさ、１の補数、又は２の補数とすることができる。２の補数における負の値又は正の値は、ＡＬＵ内で加法しか必要としないため、ＡＬＵが減算能力を設計する必要がないという点で、２の補数は有利である。数値は、通常、省略表現で記述され、１２ビット・フィールドは、４，０９６バイトブロックのアドレスを定め、通常、例えば４Ｋバイト（キロバイト）ブロックのように記述される。
【０１４２】
図１９を参照すると、分岐命令を実行するための分岐命令情報が、典型的には、分岐ユニット５０５８に送られ、この分岐ユニット５０５８は、多くの場合、分岐履歴テーブル５０８２のような分岐予測アルゴリズムを用いて、他の条件付き演算が完了する前に分岐の結果を予測する。条件付き演算が完了する前に、現行の分岐命令のターゲットがフェッチされ、投機的に実行される。条件付き演算が完了すると、投機的に実行された分岐命令は、条件付き演算の条件及び投機された結果に基づいて、完了されるか又は破棄される。典型的な分岐命令は、条件コードを試験し、条件コードが分岐命令の分岐要件を満たす場合、ターゲット・アドレスに分岐することができ、ターゲット・アドレスは、例えば、命令のレジスタ・フィールド又は即値フィールド内に見出されるものを含む幾つかの数に基づいて計算することができる。分岐ユニット５０５８は、複数の入力レジスタ回路５０７５、５０７６、５０７７と、出力レジスタ回路５０８０とを有するＡＬＵ５０７４を用いることができる。分岐ユニット５０５８は、例えば、汎用レジスタ５０５９、デコード・ディスパッチ・ユニット５０５６、又は他の回路５０７３と通信することができる。
【０１４３】
例えば、オペレーティング・システムによって開始されるコンテキスト・スイッチ、コンテキスト・スイッチを発生させるプログラム例外又はエラー、コンテキスト・スイッチを発生させるＩ／Ｏ割り込み信号、或いは、（マルチスレッド環境における）複数のプログラムのマルチスレッド活動を含む様々な理由により、命令のグループの実行に割り込みがかけられることがある。コンテキスト・スイッチ動作は、現在実行中のプログラムについての状態情報を保存し、次いで、起動される別のプログラムについての状態情報をロードすることが好ましい。状態情報は、例えば、ハードウェア・レジスタ又はメモリ内に保存することができる。状態情報は、実行される次の命令を指し示すプログラム・カウンタ値と、条件コードと、メモリ変換情報と、アーキテクチャ化されたレジスタのコンテンツとを含むことが好ましい。コンテキスト・スイッチの活動は、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、又はファームウェア・コード（マイクロコード、ピココード、又はライセンス内部コード（ＬＩＣ））単独で又はその組み合わせで実施することができる。
【０１４４】
プロセッサは、命令により定義された方法に従ってオペランドにアクセスする。命令は、命令の一部の値を用いて即値オペランドを与えることができ、汎用レジスタ又は専用レジスタ（例えば、浮動小数点レジスタ）のいずれかを明示的に指し示す１つ又は複数のレジスタ・フィールドを与えることができる。命令は、操作コード・フィールドによって、オペランドとして識別されるインプライド・レジスタ（ｉｍｐｌｉｅｄ  ｒｅｇｉｓｔｅｒ）を用いることができる。命令は、オペランドのためのメモリ位置を用いることができる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）の長変位ファシリティ（ｌｏｎｇ  ｄｉｓｐｌａｃｅｍｅｎｔ  ｆａｃｉｌｉｔｙ）により例示されるように、オペランドのメモリ位置を、レジスタ、即値フィールド、又はレジスタと即値フィールドの組み合わせによって与えることができ、命令は、基底レジスタ、指標レジスタ、及び即値フィールド（変位フィールド）を定め、これらが、例えば互いに加算されてメモリ内のオペランドのアドレスをもたらす。ここでの位置（ｌｏｃａｔｉｏｎ）は、典型的には、特に断りのない限り、主メモリ（主ストレージ）内の記憶位置を意味する。
【０１４５】
図２０を参照すると、プロセッサは、ロード／ストア・ユニット５０６０を用いて、ストレージにアクセスする。ロード／ストア・ユニット５０６０は、メモリ５０５３内のターゲット・オペランドのアドレスを取得し、オペランドをレジスタ５０５９又は別のメモリ５０５３の記憶位置にロードすることによってロード操作を行うことができ、或いは、メモリ５０５３内のターゲット・オペランドのアドレスを取得し、レジスタ５０５９又は別のメモリ５０５３の記憶位置から取得したデータをメモリ５０５３内のターゲット・オペランドの記憶位置に格納することによって、ストア操作を行うことができる。ロード／ストア・ユニット５０６０は、投機的なものであってもよく、命令シーケンスに対してアウト・オブ・オーダー式の順序でメモリにアクセスすることができるが、プログラムに対して、命令がイン・オーダー式に実行されたという外観を維持することになる。ロード／ストア・ユニット５０６０は、汎用レジスタ５０５９、デコード／ディスパッチ・ユニット５０５６、キャッシュ／メモリ・インターフェース５０５３、又は他の要素５０８３と通信することができ、ストレージ・アドレスを計算し、且つ、パイプライン処理を順に行って操作をイン・オーダー式に保持するための、種々のレジスタ回路、ＡＬＵ５０８５、及び制御論理５０９０を含む。一部の動作は、アウト・オブ・オーダー式とすることができるが、ロード／ストア・ユニットは、アウト・オブ・オーダー式動作が、プログラムに対して、当技術分野において周知のようなイン・オーダー式に実行されたように見えるようにする機能を提供する。
【０１４６】
好ましくは、アプリケーション・プログラムが「見ている」アドレスは、仮想アドレスと呼ばれることが多い。仮想アドレスは、「論理アドレス」及び「実効アドレス」と呼ばれることもある。これらの仮想アドレスは、これらに限定されるものではないが、単に仮想アドレスをオフセット値にプリフィックス付加すること、１つ又は複数の変換テーブルを介して仮想アドレスを変換することを含む、種々の動的アドレス変換（ＤＡＴ）技術の１つによって、物理的メモリ位置にリダイレクトされるという点で仮想のものであり、変換テーブルは、少なくともセグメント・テーブル及びページ・テーブルを単独で又は組み合わせて含むことが好ましく、セグメント・テーブルは、ページ・テーブルを指し示すエントリを有することが好ましい。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）では、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、及び随意的なページ・テーブルを含む、変換の階層が提供される。アドレス変換の性能は、仮想アドレスを関連した物理的メモリ位置にマッピングするエントリを含む変換ルックアサイド・バッファ（ＴＬＢ）を用いることにより改善されることが多い。ＤＡＴが変換テーブルを用いて仮想アドレスを変換したときに、エントリが作成される。次いで、後に仮想アドレスを用いることで、低速の順次変換テーブル・アクセスではなく、高速のＴＬＢのエントリを用いることが可能になる。ＴＬＢの内容は、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）を含む種々の置換アルゴリズムによって管理することができる。
【０１４７】
プロセッサがマルチプロセッサ・システムのプロセッサである場合には、各プロセッサは、コヒーレンシのために、Ｉ／Ｏ、キャッシュ、ＴＬＢ、及びメモリといった共有リソースをインターロック状態に保持する責任を負う。キャッシュ・コヒーレンシを保持する際に、一般的には「スヌープ」技術が用いられる。スヌープ環境においては、共有を容易にするために、各キャッシュ・ラインを、共有状態、排他的状態、変更状態、無効状態等のいずれか１つの状態にあるものとしてマーク付けすることができる。
【０１４８】
Ｉ／Ｏユニット５０５４（図１７）は、プロセッサに、例えば、テープ、ディスク、プリンタ、ディスプレイ、及びネットワークを含む周辺機器に取り付けるための手段を与える。Ｉ／Ｏユニットは、ソフトウェア・ドライバによってコンピュータ・プログラムに提示されることが多い。ＩＢＭ（登録商標）  Ｓｙｓｔｅｍ  ｚ（登録商標）のようなメインフレームにおいては、チャネル・アダプタ及びオープン・システム・アダプタが、オペレーティング・システムと周辺機器との間に通信をもたらすメインフレームのＩ／Ｏユニットである。
【０１４９】
さらに、他のタイプのコンピューティング環境が、本発明の１つ又は複数の態様から利益を得ることができる。一例として、本明細書で述べられるように、環境は、特定のアーキテクチャ（例えば、命令実行、アドレス変換などのアーキテクチャ化された機能、及びアーキテクチャ化されたレジスタを含む）又はそのサブセットをエミュレートする（例えば、プロセッサ及びメモリを有するネイティブ・コンピュータ・システム上で）エミュレータ（例えば、ソフトウェア又は他のエミュレーション機構）を含むことができる。このような環境においては、エミュレータを実行しているコンピュータが、エミュレートされる機能とは異なるアーキテクチャを有することができたとしても、エミュレータの１つ又は複数のエミュレーション機能により、本発明の１つ又は複数の態様が実施され得る。一例として、エミュレーション・モードにおいては、エミュレートされる特定の命令又は操作がデコードされ、適切なエミュレーション機能が構築され、個々の命令又は操作を実施する。
【０１５０】
エミュレーション環境においては、ホスト・コンピュータは、例えば、命令及びデータを格納するためのメモリと、メモリから命令をフェッチし、随意的に、フェッチされた命令のためのローカル・バッファリングを提供するための命令フェッチ・ユニットと、フェッチされた命令を受信し、フェッチされた命令のタイプを判断するための命令デコード・ユニットと、命令を実行するための命令実行ユニットとを含む。実行は、データをメモリからレジスタ内にロードすること、データをレジスタから再びメモリに格納すること、又はデコード・ユニットにより判断されるように、何らかのタイプの算術演算又は論理演算を実行することを含むことができる。一例においては、各ユニットは、ソフトウェアで実装される。例えば、ユニットが実行する演算は、エミュレータ・ソフトウェア内の１つ又は複数のサブルーチンとして実装される。
【０１５１】
より具体的には、メインフレームにおいて、アーキテクチャ化されたマシン命令は、通常、プログラマによって、多くの場合コンパイラ・アプリケーションを介して、今日では「Ｃ」プログラマによって用いられる。ストレージ媒体内に格納されたこれらの命令は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）のＩＢＭ（登録商標）サーバにおいて、又は代替的に他のアーキテクチャを実行するマシンにおいて、ネイティブに実行することができる。これらの命令は、既存の及び将来のＩＢＭ（登録商標）メインフレーム・サーバにおいて、及び、ＩＢＭ（登録商標）の他のマシン（例えば、Ｐｏｗｅｒ  Ｓｙｓｔｅｍｓサーバ及びＳｙｓｔｅｍ  ｘ（登録商標）サーバ）上で、エミュレートすることができる。これらの命令は、ＩＢＭ（登録商標）、Ｉｎｔｅｌ（登録商標）、ＡＭＤ（登録商標）などによって製造されたハードウェアを用いて種々のマシン上でＬｉｎｕｘ（登録商標）を実行しているマシンにおいて実行することができる。Ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）下でそのハードウェア上で実行することに加えて、Ｌｉｎｕｘ（登録商標）を用いること、並びに、一般に実行がエミュレーション・モードにある、Ｈｅｒｃｕｌｅｓ、又はＦＳＩ（Ｆｕｎｄａｍｅｎｔａｌ  Ｓｏｆｔｗａｒｅ，Ｉｎｃ）によるエミュレーションを用いるマシンを用いることもできる。エミュレーション・モードにおいては、ネイティブ・プロセッサによって、エミュレーション・ソフトウェアが実行され、エミュレートされたプロセッサのアーキテクチャをエミュレートする。
【０１５２】
ネイティブ・プロセッサは、一般的に、エミュレートされたプロセッサのエミュレーションを実行するためにファームウェア又はネイティブ・オペレーティング・システムのいずれかを含むエミュレーション・ソフトウェアを実行する。エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャの命令のフェッチと実行を担当する。エミュレーション・ソフトウェアは、エミュレートされたプログラム・カウンタを維持し、命令境界を常時監視している。エミュレーション・ソフトウェアは、一度に１つ又は複数のエミュレートされたマシン命令をフェッチし、ネイティブ・プロセッサにより実行するために、その１つ又は複数のエミュレートされたマシン命令を、対応するネイティブマシン命令のグループに変換することができる。これらの変換された命令は、より速い変換を達成できるようにキャッシュに入れることができる。それにも関わらず、エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャのアーキテクチャ規則を維持して、オペレーティング・システム及びエミュレートされたプロセッサのために書かれたアプリケーションが正確に動作することを保証しなければならない。さらに、エミュレーション・ソフトウェアは、これらに限られるものではないが、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、例えばセグメント・テーブル及びページ・テーブルを含む動的アドレス変換機能、割り込み機構、コンテキスト・スイッチ機構、時刻（Time of Day、ＴＯＤ）クロック、及びＩ／Ｏサブシステムへのアーキテクチャ化インターフェースを含む、エミュレートされたプロセッサのアーキテクチャによって識別されるリソースを提供し、オペレーティング・システム又はエミュレートされたプロセッサ上で実行するように設計されたアプリケーション・プログラムが、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ上で実行できるようにしなければならない。
【０１５３】
エミュレートされた特定の命令がデコードされ、個々の命令の機能を実行するためのサブルーチンが呼び出される。エミュレートされたプロセッサ１の機能をエミュレートするエミュレーション・ソフトウェア機能は、例えば、「Ｃ」サブルーチン又はドライバにおいて、或いは好ましい実施形態の説明を理解した後で当業者の技術の範囲内にあるような特定のハードウェアのためにドライバを提供する他の何らかの方法で実装される。種々のソフトウェア及びハードウェア・エミュレーションの特許には、これらに限られるものではないが、Ｂｅａｕｓｏｌｅｉｌ他による「Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  ｆｏｒ  Ｈａｒｄｗａｒｅ  Ｅｍｕｌａｔｉｏｎ」という名称の特許文献１、Ｓｃａｌｚｉ他による「Ｐｒｅｐｒｏｃｅｓｓｉｎｇ  ｏｆ  Ｓｔｏｒｅｄ  Ｔａｒｇｅｔ  Ｒｏｕｔｉｎｅｓ  ｆｏｒ  Ｅｍｕｌａｔｉｎｇ  Ｉｎｃｏｍｐａｔｉｂｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  ｏｎ  ａ  Ｔａｒｇｅｔ  Ｐｒｏｃｅｓｓｏｒ」という名称の特許文献２、Ｄａｖｉｄｉａｎ他による「Ｄｅｃｏｄｉｎｇ  Ｇｕｅｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎ  ｔｏ  Ｄｉｒｅｃｔｌｙ  Ａｃｃｅｓｓ  Ｅｍｕｌａｔｉｏｎ  Ｒｏｕｔｉｎｅｓ  ｔｈａｔ  Ｅｍｕｌａｔｅ  ｔｈｅ  Ｇｕｅｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎｓ」という名称の特許文献３、Ｇｏｒｉｓｈｅｋ他による「Ｓｙｍｍｅｔｒｉｃａｌ  Ｍｕｌｔｉｐｒｏｃｅｓｓｉｎｇ  Ｂｕｓ  ａｎｄ  Ｃｈｉｐｓｅｔ  Ｕｓｅｄ  ｆｏｒ  Ｃｏｐｒｏｃｅｓｓｏｒ  Ｓｕｐｐｏｒｔ  Ａｌｌｏｗｉｎｇ  Ｎｏｎ−Ｎａｔｉｖｅ  Ｃｏｄｅ  ｔｏ  Ｒｕｎ  ｉｎ  ａ  Ｓｙｓｔｅｍ」という名称の特許文献４、Ｌｅｔｈｉｎ他による「Ｄｙｎａｍｉｃ  Ｏｐｔｉｍｉｚｉｎｇ  Ｏｂｊｅｃｔ  Ｃｏｄｅ  Ｔｒａｎｓｌａｔｏｒ  ｆｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｅｍｕｌａｔｉｏｎ  ａｎｄ  Ｄｙｎａｍｉｃ  Ｏｐｔｉｍｉｚｉｎｇ  Ｏｂｊｅｃｔ  Ｃｏｄｅ  Ｔｒａｎｓｌａｔｉｏｎ  Ｍｅｔｈｏｄ」という名称の特許文献５、Ｅｒｉｃ  Ｔｒａｕｔによる「Ｍｅｔｈｏｄ  ｆｏｒ  Ｅｍｕｌａｔｉｎｇ  Ｇｕｅｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  ｏｎ  ａ  Ｈｏｓｔ  Ｃｏｍｐｕｔｅｒ  Ｔｈｒｏｕｇｈ  Ｄｙｎａｍｉｃ  Ｒｅｃｏｍｐｉｌａｔｉｏｎ  ｏｆ  Ｈｏｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎｓ」という名称の特許文献６、及び他の多くが挙げられ、これらの参考文献は、当業者が利用可能なターゲット・マシンのための異なるマシン用に設計された命令形式のエミュレーションを達成する様々な既知の方法を示す。
【０１５４】
図２１において、ホスト・アーキテクチャのホスト・コンピュータ・システム５０００’をエミュレートする、エミュレートされたホスト・コンピュータ・システム５０９２の一例が提供される。エミュレートされたホスト・コンピュータ・システム５０９２では、ホスト・プロセッサ（ＣＰＵ）５０９１は、エミュレートされたホスト・プロセッサ（又は仮想ホスト・プロセッサ）であり、且つ、ホスト・コンピュータ５０００’のプロセッサ５０９１のものとは異なるネイティブな命令セット・アーキテクチャを有するエミュレーション・プロセッサ５０９３を含む。エミュレートされたホスト・コンピュータ・システム５０９２は、エミュレーション・プロセッサ５０９３がアクセス可能なメモリ５０９４を有する。例示的な実施形態において、メモリ５０９４は、ホスト・コンピュータ・メモリ５０９６の部分と、エミュレーション・ルーチン５０９７の部分とに区分化される。ホスト・コンピュータ・メモリ５０９６は、ホスト・コンピュータ・アーキテクチャに従い、エミュレートされたホスト・コンピュータ・システム５０９２のプログラムに利用可能である。エミュレーション・プロセッサ５０９３は、エミュレートされたプロセッサ５０９１のもの以外のアーキテクチャのアーキテクチャ化された命令セットのネイティブ命令を実行し、このネイティブ命令はエミュレーション・ルーチン・メモリ５０９７から取得されたものであり、且つ、エミュレーション・プロセッサ５０９３は、シーケンス及びアクセス／デコード・ルーチンにおいて取得される１つ又は複数の命令を用いることにより、ホスト・コンピュータ・メモリ５０９６の中のプログラム由来の実行のためのホスト命令にアクセスすることができ、このシーケンス及びアクセス／デコード・ルーチンは、アクセスされたホスト命令をデコードして、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを判断することができる。ホスト・コンピュータ・システム５０００’のアーキテクチャのために定められた、例えば、汎用レジスタ、制御レジスタ、動的アドレス変換、及びＩ／Ｏサブシステムのサポート、並びにプロセッサ・キャッシュといったファシリティを含む他のファシリティを、アーキテクチャ化ファシリティ・ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を高めるために、エミュレーション・プロセッサ５０９３において利用可能な（汎用レジスタ、及び仮想アドレスの動的変換といった）機能を利用することもできる。ホスト・コンピュータ５０００’の機能をエミュレートする際にプロセッサ５０９３を補助するために、専用のハードウェア及びオフ・ロード・エンジンを設けることもできる。
【０１５５】
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「１つの（ａ）」、「１つの（ａｎ）」及び「その（ｔｈｅ）」は、文脈が特に明示しない限り、複数形も同様に含むことを意図したものである。「含む（ｃｏｍｐｒｉｓｅ）」及び／又は「含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び／又はコンポーネントの存在を指示するが、１つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び／又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
【０１５６】
下記の特許請求の範囲におけるすべての機能付き手段（ミーンズ・プラス・ファンクション）又は機能付き工程（ステップ・プラス・ファンクション）の対応する構造、材料、動作、及び均等物は、もしあれば、その機能を、明確に請求されている他の特許請求された要素と組み合わせて実行するためのあらゆる構造、材料、又は動作を含むことが意図されている。本発明の説明は、例証及び説明のために提示されたものであり、網羅的であること又は本発明を開示された形態に限定することを意図したものではない。当業者には、本発明の範囲から逸脱しない多くの修正及び変形が明らかとなるであろう。実施形態は、本発明の原理及び実際の適用を最も良く説明し、その他の当業者が企図される特定の使用に適した種々の修正を伴う種々の実施形態について本発明を理解できるように、選択され、説明された。
【符号の説明】
【０１５７】
１００、２００：コンピューティング環境
１０２：プロセッサ
１０４：リソース（メモリ）
２０２：中央プロセッサ複合体（ＣＰＣ）
２０４、３１６：仮想マシン
２０６：中央プロセッサ
２０８：ホスト
２１０：入力／出力サブシステム
２１２：ゲスト・オペレーティング・システム
３００：エミュレートされたホスト・コンピュータ・システム
３０２：ホスト・コンピュータ
３０４：ホスト・プロセッサ（ＣＰＵ）
３０６：エミュレーション・プロセッサ
３０８：メモリ
３１０：ホスト・コンピュータ・メモリ部分
３１２：エミュレーション・ルーチン部分
３１４：ホスト又はハイパーバイザ
３１８：ゲスト・オペレーティング・システム
１０００：Ｄｉａｇｎｏｓｅ命令
１００２：操作コード
１００４：第１レジスタ・フィールド（Ｒ１）
１００６：第２レジスタ・フィールド（Ｒ３）
１００８：汎用レジスタ・フィールド（Ｂ２）
１０１０：変位フィールド（Ｄ２）
【図１】
2015507808.tif 000003
【図２】
2015507808.tif 000004
【図３】
2015507808.tif 000005
【図４】
2015507808.tif 000006
【図５】
2015507808.tif 000007
【図６】
2015507808.tif 000008
【図７】
2015507808.tif 000009
【図８】
2015507808.tif 000010
【図９】
2015507808.tif 000011
【図１０】
2015507808.tif 000012
【図１１】
2015507808.tif 000013
【図１２】
2015507808.tif 000014
【図１３】
2015507808.tif 000015
【図１４】
2015507808.tif 000016
【図１５】
2015507808.tif 000017
【図１６】
2015507808.tif 000018
【図１７】
2015507808.tif 000019
【図１８】
2015507808.tif 000020
【図１９】
2015507808.tif 000021
【図２０】
2015507808.tif 000022
【図２１】
2015507808.tif 000023
【手続補正書】
【提出日】平成26年7月22日(2014.7.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティング環境における処理を容易にするためのコンピュータ・プログラムを格納したコンピュータ可読ストレージ媒体であって、前記コンピュータ・プログラムはコンピュータに、
第１のプログラムにより、第２のプログラムに、前記コンピューティング環境内での警告追跡ファシリティのインストールを示す警告追跡ファシリティ・インストール済み表示を提供する手順であって、前記警告追跡ファシリティは、前記第２のプログラムに、第１の機能を実施するための猶予期間を提供するためのものである、提供する手順と、
前記第１のプログラムにより、前記第２のプログラムに、警告追跡通知を提供する手順と、
前記警告追跡通知に基づいて、前記第２のプログラムにより、前記猶予期間内に前記第１の機能を開始する手順と、
前記第１のプログラムにより、前記猶予期間の後に第２の機能を実施する手順と、
を実行させる、コンピュータ可読ストレージ媒体。
【請求項２】
前記警告追跡通知は、前記猶予期間の終了後に前記第２のプログラムに割り当てられた共有リソースを解放する割り込みを含む、請求項１に記載のコンピュータ可読ストレージ媒体。
【請求項３】
前記第１のプログラムは、前記第２の機能を実施するために、解放された前記共有リソースにアクセスする、請求項２に記載のコンピュータ可読ストレージ媒体。
【請求項４】
前記第１のプログラムはホスト・プログラムであり、前記第２のプログラムはゲスト・プログラムであり、前記ゲスト・プログラムは、前記ゲスト・プログラムが実行されるゲスト中央演算処理ユニットに与えられたタイムスライス中に前記コンピューティング環境の共有リソースにアクセスすることができ、前記猶予期間は前記タイムスライスと区別可能である、請求項１に記載のコンピュータ可読ストレージ媒体。
【請求項５】
前記猶予期間は前記タイムスライスを早期に終了させる、請求項４に記載のコンピュータ可読ストレージ媒体。
【請求項６】
前記猶予期間は、前記第１の機能を実施するための、前記タイムスライスに加えた期間を提供する、請求項４に記載のコンピュータ可読ストレージ媒体。
【請求項７】
前記猶予期間は、前記第２のプログラムに与えられる次のタイムスライスから取得される、請求項６に記載のコンピュータ可読ストレージ媒体。
【請求項８】
前記第１の機能は、
前記第２のプログラムが実行されるプロセッサ上で実行されているディスパッチ可能ユニットを完了させること、又は
前記ディスパッチ可能ユニットを前記コンピューティング環境の別のプロセッサ上で再ディスパッチ可能にすること、
のうちの１つを含む、請求項１に記載のコンピュータ可読ストレージ媒体。
【請求項９】
前記コンピュータ・プログラムは前記コンピュータに、前記第２のプログラムにより、前記猶予期間中の前記第１の機能の完了を示すことをさらに実行させる、請求項１に記載のコンピュータ可読ストレージ媒体。
【請求項１０】
前記コンピュータ・プログラムは前記コンピュータに、次に前記第２のプログラムが実行されるとき、前記第２のプログラムに、前記猶予期間中に前記第１の機能が完了したという表示を提供することをさらに実行させる、請求項９に記載のコンピュータ可読ストレージ媒体。
【請求項１１】
コンピューティング環境における処理を容易にするためのコンピュータ・システムであって、
メモリと、
前記メモリと通信するプロセッサと、
を含み、
前記コンピュータ・システムは方法を実行するように構成され、前記方法は、
第１のプログラムにより、第２のプログラムに、前記コンピューティング環境内での警告追跡ファシリティのインストールを示す警告追跡ファシリティ・インストール済み表示を提供することであって、前記警告追跡ファシリティは、前記第２のプログラムに、第１の機能を実施するための猶予期間を提供するためのものである、提供することと、
前記第１のプログラムにより、警告追跡通知を前記第２のプログラムに提供することと、
前記警告追跡通知に基づいて、前記第２のプログラムにより、前記猶予期間内に前記第１の機能を開始することと、
前記第１のプログラムにより、前記猶予期間の後に第２の機能を実施することと、
を含む、コンピュータ・システム。
【請求項１２】
前記警告追跡通知は、前記猶予期間の終了後に前記第２のプログラムに割り当てられた共有リソースを解放する割り込みを含む、請求項１１に記載のコンピュータ・システム。
【請求項１３】
前記第１のプログラムはホスト・プログラムであり、前記第２のプログラムはゲスト・プログラムであり、前記ゲスト・プログラムは、前記ゲスト・プログラムが実行されるゲスト中央演算処理ユニットに与えられたタイムスライス中に前記コンピューティング環境の共有リソースにアクセスすることができ、前記猶予期間は前記タイムスライスと区別可能である、請求項１１に記載のコンピュータ・システム。
【請求項１４】
前記猶予期間は前記タイムスライスを早期に終了させる、請求項１３に記載のコンピュータ・システム。
【請求項１５】
前記猶予期間は、前記第１の機能を実施するための、前記タイムスライスに加えた期間を提供する、請求項１３に記載のコンピュータ・システム。
【請求項１６】
前記第１の機能は、
前記第２のプログラムが実行されるプロセッサ上で実行されているディスパッチ可能ユニットを完了させること、又は
前記ディスパッチ可能ユニットを前記コンピューティング環境の別のプロセッサ上で再ディスパッチ可能にすること、
のうちの１つを含む、請求項１１に記載のコンピュータ・システム。
【請求項１７】
前記方法は、
前記第２のプログラムにより、前記猶予期間中の前記第１の機能の完了を表示することと、
次に前記第２のプログラムが実行されるとき、前記第２のプログラムに、前記猶予期間中に前記第１の機能が完了したという表示を提供することと、
をさらに含む、請求項１１に記載のコンピュータ・システム。
【請求項１８】
コンピューティング環境における処理を容易にするための方法であって、
第１のプログラムにより、第２のプログラムに、前記コンピューティング環境内での警告追跡ファシリティのインストールを示す警告追跡ファシリティ・インストール済み表示を提供することであって、前記警告追跡ファシリティは、前記第２のプログラムに、第１の機能を実施するための猶予期間を提供するためのものである、提供することと、
前記第１のプログラムにより、前記第２のプログラムに、警告追跡通知を提供することと、
前記警告追跡通知に基づいて、前記第２のプログラムにより、前記猶予期間内に前記第１の機能を開始することと、
前記第１のプログラムにより、前記猶予期間の後に第２の機能を実施することと、
を含む、方法。
【請求項１９】
前記第１のプログラムはホスト・プログラムであり、前記第２のプログラムはゲスト・プログラムであり、前記ゲスト・プログラムは、前記ゲスト・プログラムが実行されるゲスト中央演算処理ユニットに与えられたタイムスライス中に前記コンピューティング環境の共有リソースにアクセスすることができ、前記猶予期間は前記タイムスライスと区別可能である、請求項１８に記載の方法。
【請求項２０】
前記第２のプログラムにより、前記猶予期間中の前記第１の機能の完了を示すことと、
次に前記第２のプログラムが実行されるとき、前記第２のプログラムに、前記猶予期間中に前記第１の機能が完了したという表示を提供することと、
をさらに含む、請求項１８に記載の方法。
【国際調査報告】
2015507808.tif 000024