(57)【要約】【課題】保留中の外部割り込みについてテストする。【解決手段】保留外部割り込みテスト命令が、保留中の外部割り込みについてテストする。保留中の外部割り込みに関するテストは、割り込みのそれらのクラスに関してマシンが有効化されているかどうかに関わらず、プログラムによって指定された１つまたは複数のサブクラスに基づく。この命令は、テストされているそれらのサブクラスに関して、それらのサブクラスに関する保留中の外部割り込みが存在するかどうかの指示を提供する。【選択図】図６
2020505668.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境内の処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法が、
１つまたは複数の保留中の外部割り込みについてテストするための命令を取得することと、
前記命令を実行することとを含んでおり、前記実行することが、
前記命令によって提供される情報に基づいて、テストされる１つまたは複数の外部割り込みサブクラスを決定することと、
テストされている前記１つまたは複数の外部割り込みサブクラスに関して、１つまたは複数の外部割り込みが保留中であるかどうかをチェックすることと、
テストされている前記１つまたは複数の外部割り込みサブクラスに関して、１つまたは複数の外部割り込みが保留中であるかどうかを示すこととを含んでいる、コンピュータ実装方法。
【請求項２】
前記決定することが、前記命令によって指定された位置で提供されたマスクを調べて、テストされる前記１つまたは複数の外部割り込みサブクラスを決定することを含んでいる、請求項１に記載の方法。
【請求項３】
前記マスクが複数の外部割り込みサブクラスに関する複数のインジケータを含んでおり、定義された値に設定された前記複数のインジケータのうちのインジケータが、前記インジケータに対応する外部割り込みサブクラスがテストされるということを示す、請求項２に記載の方法。
【請求項４】
前記複数の外部割り込みサブクラスが、警告追跡割り込み、誤動作警報、緊急信号、および外部呼び出しを含んでいる、請求項３に記載の方法。
【請求項５】
前記位置が、前記命令のフィールドによって指定されたレジスタを含んでいる、請求項２ないし４のいずれかに記載の方法。
【請求項６】
前記示すことが、保留中の外部割り込みが存在する外部割り込みサブクラスに関して、前記命令によって指定された位置でインジケータを設定することを含んでいる、請求項１ないし５のいずれかに記載の方法。
【請求項７】
前記位置が、前記命令のフィールドによって指定されたレジスタである、請求項６に記載の方法。
【請求項８】
前記インジケータが、前記命令によって指定された前記レジスタ内のマスクのビットである、請求項７に記載の方法。
【請求項９】
前記命令を前記実行することが、前記命令を実行しているプロセッサが割り込みに関して有効化されているかどうかに関わらず実行される、請求項１ないし８のいずれかに記載の方法。
【請求項１０】
前記実行することが、テストされている前記１つまたは複数の外部割り込みサブクラスに関して、１つまたは複数の外部割り込みが保留中であるかどうかを示す要約指示を提供することをさらに含んでいる、請求項１ないし９のいずれかに記載の方法。
【請求項１１】
前記命令が、保留外部割り込みテスト命令を指定するオペレーション・コード、前記示すことにおいて使用される第１のレジスタ・フィールド、および前記決定することにおいて使用される第２のレジスタ・フィールドを含んでいる単一の設計された命令である、請求項１ないし１０のいずれかに記載の方法。
【請求項１２】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信するプロセッサとを備えており、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
１つまたは複数の保留中の外部割り込みについてテストするための命令を取得することと、
前記命令を実行することとを含んでおり、前記実行することが、
前記命令によって提供される情報に基づいて、テストされる１つまたは複数の外部割り込みサブクラスを決定することと、
テストされている前記１つまたは複数の外部割り込みサブクラスに関して、１つまたは複数の外部割り込みが保留中であるかどうかをチェックすることと、
テストされている前記１つまたは複数の外部割り込みサブクラスに関して、１つまたは複数の外部割り込みが保留中であるかどうかを示すこととを含んでいる、コンピュータ・システム。
【請求項１３】
前記決定することが、前記命令によって指定された位置で提供されたマスクを調べて、テストされる前記１つまたは複数の外部割り込みサブクラスを決定することを含んでおり、前記マスクが複数の外部割り込みサブクラスに関する複数のインジケータを含んでおり、定義された値に設定された前記複数のインジケータのうちのインジケータが、前記インジケータに対応する外部割り込みサブクラスがテストされるということを示す、請求項１２に記載のコンピュータ・システム。
【請求項１４】
前記命令を前記実行することが、前記命令を実行しているプロセッサが割り込みに関して有効化されているかどうかに関わらず実行される、請求項１２または１３のいずれかに記載のコンピュータ・システム。
【請求項１５】
前記実行することが、テストされている前記１つまたは複数の外部割り込みサブクラスに関して、１つまたは複数の外部割り込みが保留中であるかどうかを示す要約指示を提供することをさらに含んでいる、請求項１２ないし１４のいずれかに記載のコンピュータ・システム。
【請求項１６】
コンピューティング環境内の処理を容易にするコンピュータ・プログラム製品であって、
処理回路によって読み取り可能な、請求項１ないし１１のいずれかに記載の方法を実行するために前記処理回路によって実行されるための命令を格納しているコンピュータ可読記憶媒体を備えている、コンピュータ・プログラム製品。
【請求項１７】
コンピュータ可読媒体に格納された、デジタル・コンピュータの内部メモリに読み込み可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行された場合に請求項１ないし１１のいずれかに記載の前記方法を実行するためのソフトウェア・コード部分を含んでいる、コンピュータ・プログラム。
【請求項１８】
コンピュータ可読媒体に格納されて、請求項１２ないし１５のいずれかに記載の前記システムの内部メモリに読み込まれるコンピュータ・プログラムであって、前記プログラムが前記システムで実行された場合に請求項１ないし１１のいずれかに記載の前記方法を実行するためのソフトウェア・コード部分を含んでいる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
１つまたは複数の態様は、一般に、コンピューティング環境内の処理に関しており、特に、そのような処理を改善することに関している。
【背景技術】
【０００２】
コンピューティング環境は、多くの場合、コンピューティング環境内の処理の順序を変更するために割り込みを行う機構を提供する。割り込み（interrupt）（割り込み（interruption）とも呼ばれる）は、例えば、特定のプログラムの実行を一時的に停止して別のタスクを実行するための、オペレーティング・システムまたはプロセッサへの信号である。一例として、割り込みの一種である外部割り込みは、割り込みを処理する優先度の高いオペレーティング・システムのサブルーチンを実行するために、現在実行中のプログラムの一時停止を引き起こす。中央処理装置における割り込み機構は、他の処理のために選択されたサブルーチンへの、現在のプログラムからの分岐を強制する。割り込みが完了した後に、一時停止されたプログラムが再開されてよい。
【０００３】
オペレーティング・システムにとって、特定のリソースに関する保留中の割り込みが存在するかどうかを、割り込みのそのクラスが無効化されたままであるときに識別できることは有利である。保留中の外部割り込みが存在するかどうかを判定できることも有益であろう。
【０００４】
そのような処理は、他の種類の割り込みのために発生することもある。
【０００５】
したがって、当技術分野において、前述の問題に対処する必要がある。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】“z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-10, March 2015
【非特許文献２】“Power(R) ISA Version 2.07B,” International Business Machines Corporation, April 9, 2015
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、当技術分野における前述の問題に対処する。
【課題を解決するための手段】
【０００８】
第１の態様から見ると、本発明は、コンピューティング環境内の処理を容易にするコンピュータ実装方法を提供し、このコンピュータ実装方法は、１つまたは複数の保留中の外部割り込みについてテストするための命令を取得することと、この命令を実行することとを含んでおり、この実行することは、この命令によって提供された情報に基づいて、テストされる１つまたは複数の外部割り込みサブクラスを決定することと、テストされている１つまたは複数の外部割り込みサブクラスに関して、１つまたは複数の外部割り込みが保留中であるかどうかをチェックすることと、テストされている１つまたは複数の外部割り込みサブクラスに関して、１つまたは複数の外部割り込みが保留中であるかどうかを示すこととを含んでいる。
【０００９】
さらに別の態様から見ると、本発明は、コンピューティング環境内の処理を容易にするためのコンピュータ・システムを提供し、このコンピュータ・システムは、メモリと、このメモリと通信するプロセッサとを備えており、このコンピュータ・システムは、方法を実行するように構成されており、この方法は、１つまたは複数の保留中の外部割り込みについてテストするための命令を取得することと、この命令を実行することとを含んでおり、この実行することは、この命令によって提供された情報に基づいて、テストされる１つまたは複数の外部割り込みサブクラスを決定することと、テストされている１つまたは複数の外部割り込みサブクラスに関して、１つまたは複数の外部割り込みが保留中であるかどうかをチェックすることと、テストされている１つまたは複数の外部割り込みサブクラスに関して、１つまたは複数の外部割り込みが保留中であるかどうかを示すこととを含んでいる。
【００１０】
さらに別の態様から見ると、本発明は、コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品を提供し、このコンピュータ・プログラム製品は、処理回路によって読み取り可能な、本発明のステップを実行するための方法を実行するためにこの処理回路によって実行される命令を格納している、コンピュータ可読記憶媒体を備えている。
【００１１】
さらに別の態様から見ると、本発明は、コンピュータ可読媒体に格納されて、デジタル・コンピュータの内部メモリに読み込み可能なコンピュータ・プログラムを提供し、このコンピュータ・プログラムは、コンピュータ上で実行された場合に本発明のステップを実行するためのソフトウェア・コード部分を含んでいる。
【００１２】
さらに別の態様から見ると、本発明はコンピュータ・プログラムを提供し、このプログラムは、コンピュータ可読媒体に格納されて、本発明のシステムの内部メモリに読み込まれ、システムで実行された場合に本発明のステップを実行するためのソフトウェア・コード部分を含んでいる。
【００１３】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。このコンピュータ・プログラム製品は、処理回路によって読み取り可能な、方法を実行するための命令を格納しているストレージ媒体を備える。この方法は、例えば、１つまたは複数の保留中の外部割り込みについてテストするための命令を取得することと、この命令を実行することとを含んでおり、この実行することは、この命令によって提供された情報に基づいて、テストされる１つまたは複数の外部割り込みサブクラスを決定することと、テストされている１つまたは複数の外部割り込みサブクラスに関して、１つまたは複数の外部割り込みが保留中であるかどうかをチェックすることと、テストされている１つまたは複数の外部割り込みサブクラスに関して、１つまたは複数の外部割り込みが保留中であるかどうかを示すこととを含んでいる。
【００１４】
１つまたは複数の態様に関連する方法およびシステムも本明細書に記載され、請求される。さらに、１つまたは複数の態様に関連するサービスも本明細書に記載されており、請求されてよい。
【００１５】
その他の特徴および長所が、本明細書に記載された技術によって実現される。その他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。
【００１６】
以下では、次の図に示された好ましい実施形態を単に例として参照し、本発明が説明される。
【図面の簡単な説明】
【００１７】
【図１】従来技術に従って、本発明の好ましい実施形態が実装されてよいコンピューティング環境の一例を示す図である。
【図２】本発明の態様に従って、図１のプロセッサの詳細をさらに示す図である。
【図３】本発明の好ましい実施形態に従って、コンピューティング環境の別の例を示す図である。
【図４】図３のメモリの詳細をさらに示す図である。
【図５】本発明の好ましい実施形態に従って、保留外部割り込みテスト命令の一例を示す図である。
【図６】本発明の好ましい実施形態に従って、図５の保留外部割り込みテスト命令に関連付けられた処理の一例を示す図である。
【発明を実施するための形態】
【００１８】
本発明の１つまたは複数の態様に従って、保留中の外部割り込みについてテストする能力を提供することによって、コンピューティング環境内の処理を容易にする。本明細書において使用されるとき、「外部割り込み」という用語は、（例えば、密結合の）１つまたは複数のプロセッサを含んでいるコンピュータ・システム内から生じるが、プログラムの外部にある割り込みである。外部割り込みは、Ｉ／Ｏデバイスまたはチャネル・サブシステムから生じる入出力（Ｉ／Ｏ：input/output）割り込みとは異なる。
【００１９】
オペレーティング・システムなどの制御プログラムは、保留中の外部割り込みが存在するかどうかを判定することによって、タスクを実行すること、あるいはタスクが発生するのを回避または防止することを含んでよい動作を実行して、環境内の処理を容易にすることができる。例えば、制御プログラムは、特定の動作を回避することによって、リソースの競合またはデッドロックの状況の解決を加速化できる可能性がある。その例として、制御プログラムは、期限が過ぎているタイムスライスを有するタスクのために長時間のサービスを実行するのを回避すること、またはオペレーティング・システムの論理プロセッサがハイパーバイザ・プログラムによってアンディスパッチされようとしていることを示す警告追跡割り込み（warning track interruption）を受信したときに、ロックを取得するのを回避することができる。そのようなその他の例が存在する。
【００２０】
保留中の外部割り込みについてテストする能力は、下でさらに説明されているように、例えば、それらの割り込みのクラスに関してマシンが有効化されているかどうかに関わらず、プログラムによって指定された１つまたは複数のサブクラスに基づいて、保留中の外部割り込みについてテストする、保留外部割り込みテスト命令を含む。
【００２１】
本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一実施形態が、図１を参照して説明される。１つの例では、コンピューティング環境は、ＩＢＭ（Ｒ）  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づく。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの一実施形態は、“z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-10, March 2015に記載されている。
【００２２】
別の例では、コンピューティング環境は、ＩＢＭ  Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づく。Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅの一実施形態は、“Power(R) ISA Version 2.07B,” International Business Machines Corporation, April 9, 2015に記載されている。ＩＢＭ、Ｐｏｗｅｒ、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ、ＰｏｗｅｒＰＣ、Ｓｙｓｔｅｍ  ｚ、ｚ／ＶＭ、およびｚ／Ａｒｃｈｉｔｅｃｔｕｒｅは、世界中の多くの管轄区域で登録されている、インターナショナル・ビジネス・マシーンズ社の商標である。
【００２３】
コンピューティング環境は、Ｉｎｔｅｌ  ｘ８６アーキテクチャを含むが、これに限定されない、他のアーキテクチャに基づいてもよい。その他の例も存在する。
【００２４】
図１に示されているように、コンピューティング環境１００は、例えば、汎用コンピューティング・デバイスの形態などで示されるコンピュータ・システム１０２を含んでいる。コンピュータ・システム１０２は、１つまたは複数のバスまたはその他の接続１１０あるいはその両方を介して互いに結合された、１つまたは複数のプロセッサまたはプロセッシング・ユニット１０４（例えば、中央処理装置（ＣＰＵ：central processing units））、メモリ１０６（例として、メイン・メモリまたはストレージと呼ばれる）、および１つまたは複数の入出力（Ｉ／Ｏ）インターフェイス１０８を含んでよいが、これらに限定されない。
【００２５】
バス１１０は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、任意の複数の種類のバス構造のうちの１つまたは複数を表す。例として、そのようなアーキテクチャは、ＩＳＡ（Industry Standard Architecture）、ＭＣＡ（Micro Channel Architecture）、ＥＩＳＡ（Enhanced ISA）、ＶＥＳＡ（Video Electronics Standards Association）ローカル・バス、およびＰＣＩ（Peripheral Component Interconnect）を含むが、これらに限定されない。
【００２６】
メモリ１０６は、例えば、プロセッサ１０４のローカル・キャッシュ１２２に結合されてよい、共有キャッシュなどのキャッシュ１２０を含んでよい。さらに、メモリ１０６は、１つまたは複数のプログラムまたはアプリケーション１３０、オペレーティング・システム１３２、および１つまたは複数のコンピュータ可読プログラム命令１３４を含んでよい。コンピュータ可読プログラム命令１３４は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【００２７】
コンピュータ・システム１０２は、例えばＩ／Ｏインターフェイス１０８を介して、１つまたは複数の外部Ｉ／Ｏデバイス１４０、１つまたは複数のネットワーク・インターフェイス１４２、または１つまたは複数のデータ・ストレージ・デバイス１４４、あるいはその組み合わせと通信してもよい。外部デバイスの例としては、ユーザ端末、テープ・ドライブ、ポインティング・デバイス、ディスプレイなどが挙げられる。ネットワーク・インターフェイス１４２は、コンピュータ・システム１０２が、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）、一般的な広域ネットワーク（ＷＡＮ：wide area network）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組み合わせなどの１つまたは複数のネットワークと通信できるようにし、他のコンピューティング・デバイスまたはシステムとの通信を実現する。
【００２８】
データ・ストレージ・デバイス１４４は、１つまたは複数のプログラム１４６、１つまたは複数のコンピュータ可読プログラム命令１４８、またはデータ、あるいはその組み合わせなどを格納してよい。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【００２９】
コンピュータ・システム１０２は、取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であってよい。例えば、コンピュータ・システム１０２は、取り外し不可、不揮発性の磁気媒体（通常は、「ハード・ドライブ」と呼ばれる）、取り外し可能、不揮発性の磁気ディスク（例えば、「フロッピー・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、あるいはＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りまたは書き込みを行うための光ディスク・ドライブ、あるいはその組み合わせを含むか、またはこれらに結合されるか、あるいはその両方であってよい。その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム１０２と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、新磁気ディスク制御機構（ＲＡＩＤ：Redundant Array of Independent Disks）システム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【００３０】
コンピュータ・システム１０２は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用されてよい。コンピュータ・システム１０２での使用に適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例としては、パーソナル・コンピュータ（ＰＣ：personal computer）システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークＰＣ、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【００３１】
プロセッサ１０４の一例に関するさらなる詳細が、図２を参照して説明される。プロセッサ１０４は、命令を実行するために使用される複数の機能コンポーネントを含む。これらの機能コンポーネントは、例えば、実行される命令をフェッチするための命令フェッチ・コンポーネント１５０と、フェッチされた命令をデコードするため、およびデコードされた命令のオペランドを取得するための命令デコード・ユニット１５２と、デコードされた命令を実行するための命令実行コンポーネント１５４と、必要な場合に、命令を実行するためにメモリにアクセスするためのメモリ・アクセス・コンポーネント１５６と、実行された命令の結果を提供するための書き戻しコンポーネント１６０とを含む。これらのコンポーネントのうちの１つまたは複数は、本発明の態様に従って、下でさらに説明されているように、保留外部割り込みテスト命令１６６を実行するために使用されてよい。
【００３２】
プロセッサ１０４は、一実施形態では、機能コンポーネントのうちの１つまたは複数によって使用される１つまたは複数のレジスタ１７０も含む。
【００３３】
１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の実施形態が、図３を参照して説明される。この例では、コンピューティング環境２００は、例えば、１つまたは複数のバス２０８またはその他の接続あるいはその両方などを介して互いに結合された、ネイティブ中央処理装置（ＣＰＵ）２０２、メモリ２０４、および１つまたは複数の入出力デバイスまたはインターフェイス２０６あるいはその両方を含む。例として、コンピューティング環境２００は、ＩＢＭ  ＰｏｗｅｒＰＣ（Ｒ）プロセッサまたはＩＢＭ  ｐＳｅｒｉｅｓ（Ｒ）サーバ、あるいはインターナショナル・ビジネス・マシーンズ社またはその他の企業によって提供されるアーキテクチャに基づくその他のマシン、あるいはその組み合わせを含んでよい。
【００３４】
ネイティブ中央処理装置２０２は、環境内で処理中に使用される１つまたは複数の汎用レジスタまたは１つまたは複数の専用レジスタあるいはその両方などの、１つまたは複数のネイティブ・レジスタ２１０を含む。これらのレジスタは、いずれかの特定の時点での環境の状態を表す情報を含む。
【００３５】
さらに、ネイティブ中央処理装置２０２は、メモリ２０４に格納された命令およびコードを実行する。１つの特定の例では、中央処理装置は、メモリ２０４に格納されたエミュレータ・コード２１２を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード２１２は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）以外のアーキテクチャに基づくマシン（ＰｏｗｅｒＰＣ（Ｒ）プロセッサ、ｐＳｅｒｉｅｓ（Ｒ）サーバ、あるいはその他のサーバまたはプロセッサなど）が、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）をエミュレートし、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づいて開発されたソフトウェアおよび命令を実行できるようにする。
【００３６】
エミュレータ・コード２１２に関連するさらなる詳細が、図４を参照して説明される。メモリ２０４に格納されたゲスト命令２５０は、ネイティブＣＰＵ２０２のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発された（例えば、マシン命令と相互関係がある）ソフトウェア命令を含む。例えば、ゲスト命令２５０は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）プロセッサ上で実行するように設計されてよいが、代わりに、例えばインテル（Ｒ）プロセッサであってよい、ネイティブＣＰＵ２０２上でエミュレートされる。１つの例では、エミュレータ・コード２１２は、メモリ２０４から１つまたは複数のゲスト命令２５０を取得するため、および取得された命令のローカル・バッファリングを必要に応じて提供するための命令フェッチ・ルーチン２５２を含む。エミュレータ・コード２１２は、取得されたゲスト命令の種類を決定するため、およびゲスト命令を、１つまたは複数の対応するネイティブ命令２５６に変換するための命令変換ルーチン２５４も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別すること、およびこの機能を実行するためのネイティブ命令を選択することを含む。Ｉｎｔｅｌは、米国またはその他の国における、インテル社またはその子会社の商標または登録商標である。
【００３７】
さらに、エミュレータ・コード２１２は、ネイティブ命令の実行を引き起こすためのエミュレーション制御ルーチン２６０を含む。エミュレーション制御ルーチン２６０は、ネイティブＣＰＵ２０２に、１つまたは複数のすでに取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終了時に、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに返してよい。ネイティブ命令２５６の実行は、データをメモリ２０４からレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、あるいは変換ルーチンによって決定された何らかの種類の算術演算または論理演算を実行することを含んでよい。
【００３８】
例えば、各ルーチンは、メモリに格納されてネイティブ中央処理装置２０２によって実行されるソフトウェアにおいて実装される。他の例では、ルーチンまたは動作のうちの１つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組み合わせにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブＣＰＵのレジスタ２１０を使用して、またはメモリ２０４内の位置を使用することによって、エミュレートされてよい。実施形態では、ゲスト命令２５０、ネイティブ命令２５６、およびエミュレータ・コード２１２は、同じメモリ内に存在してよく、または異なるメモリ・デバイス間で分配されてよい。
【００３９】
本明細書において使用されているように、ファームウェアは、例えば、プロセッサのマイクロコードまたはミリコードを含む。ファームウェアは、例えば、上位レベルの機械コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。一実施形態では、ファームウェアは、例えば、信頼できるソフトウェアを含んでいるマイクロコード、または基盤になるハードウェアに固有のマイクロコードとして通常は提供される、システムのハードウェアへのオペレーティング・システムのアクセスを制御する独自のコードを含む。
【００４０】
取得され、変換されて実行されるゲスト命令２５０は、例えば、本明細書に記載された保留外部割り込みテスト命令である。あるアーキテクチャ（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ））の命令が、メモリからフェッチされ、変換され、別のアーキテクチャ（例えば、ＰｏｗｅｒＰＣ（Ｒ）、ｐＳｅｒｉｅｓ（Ｒ）、インテルなど）のネイティブ命令２５６のシーケンスとして表される。その後、これらのネイティブ命令が実行される。
【００４１】
一実施形態では、保留外部割り込みテスト命令は、例えば、その割り込みの１つまたは複数のクラスに関してマシンが有効化されているかどうかに関わらず、保留中の外部割り込み条件を消去せずに、命令によって提供される、プログラムによって指定された１つまたは複数のサブクラスに基づいて、選択された保留中の外部割り込みについてテストする。保留中の外部割り込みについてテストする理由は、複数存在することがある。その例として、制御プログラム（例えば、オペレーティング・システム）は、例えば割り込み待ち行列などの待ち行列の管理、タスクのディスパッチなどを含むさまざまな理由のために、割り込みが無効化されて動作していることがある。さらに、さまざまな場合において、制御プログラムは、動作を試みる前に、その動作の有効性を決定する必要があることがある。そのような動作の例としては、仮想環境内で、この環境の仮想マシンを管理するハイパーバイザが論理ＣＰＵをアンディスパッチしようとしているときに（ロックのタイムアウトの可能性）、重要なシステム・ロックを保持しているプロセスをディスパッチすること、あるプロセスと干渉することのある優先度の高い保留中の割り込み（例えば、誤動作警報、緊急信号）が存在する場合に、そのプロセスをディスパッチすることなどが挙げられる。したがって、本発明の態様に従って、保留中の外部割り込みについてテストするためのテスト機構が提供される。この機構は、例えば、保留外部割り込みテスト命令を含む。一実施形態では、保留外部割り込みテスト命令は、ハードウェア／ソフトウェア・インターフェイスでの単一の設計されたマシン命令である。
【００４２】
保留外部割り込みテスト命令の一例が、図５を参照して説明される。１つの例では、保留外部割り込みテスト（ＴＰＥＩ：Test Pending External Interruption）命令３００は、保留外部割り込みテスト動作を指定するためのオペコードを含んでいるオペレーション・コード（オペコード）フィールド３０２、第１のレジスタ・フィールド（Ｒ１）３０４、および第２のレジスタ・フィールド（Ｒ２）３０６を含んでいる。一実施形態では、この命令のフィールドは、互いに分離し、独立している。しかし、別の実施形態では、２つ以上のフィールドが結合されてよい。さらに、命令のフィールドに関連付けられた下付きの数字は、そのフィールドが適用されるオペランドを示す。例えば、下付きの１を有するすべてのフィールドは第１のオペランドに関連付けられ、下付きの２を有するすべてのフィールドは第２のオペランドに関連付けられる、などとなる。
【００４３】
１つの例では、Ｒ２３０６で指定されたレジスタは、保留中の外部割り込みについてテストするために選択されてよい１つまたは複数の外部割り込みサブクラスを表すマスク３１０を含んでいる。一実施形態では、これらの外部割り込みは、（例えば、密結合の）１つまたは複数のプロセッサを含んでいるコンピュータ・システム内から生じるが、プログラムの外部に存在しており、Ｉ／Ｏデバイスからも、チャネル・サブシステムからも生じない。テストするために選択されてよい例示的なサブクラス、およびマスク内の関連する例示的なビット位置が、以下に示される。一実施形態では、汎用レジスタＲ２の他のビットは予備であり、ゼロを含むべきである。そうでない場合、プログラムは将来、互換性を維持して動作しなくなることがある。
ビット  外部割り込みサブクラス
３０  警告追跡割り込み（例えば、ある機能（例えば、クリーンアップなど）を実行するまでの猶予期間が存在することをプログラム（例えば、オペレーティング・システム）またはプロセッサに対して警告するために使用される）
４８  誤動作警報（例えば、構成内の別のＣＰＵに誤動作（例えば、チェックストップ・モード（checkstop mode）に移行したか、または電力を失った）が発生したことをプログラムまたはプロセッサに対して警告するために使用される）
４９  緊急信号（例えば、コンピュータ・システム内の優先度の高いＣＰＵ間信号伝達に使用される）
５０  外部呼び出し（例えば、コンピュータ・システム内のＣＰＵ間信号伝達に使用される）
【００４４】
多くのその他のサブクラスが提供されてよい。別の実施形態では、以下のサブクラスのうちの１つまたは複数が、テストするために選択されてよい。
ビット  サブクラス
５２  クロック比較器（例えば、現在の時刻クロックが事前に設定された被比較数を超えたことを示すために使用される）
５３  ＣＰＵタイマ（例えば、事前に設定されたＣＰＵ時間の期限が過ぎたことを示すために使用される）
５４  サービス信号（例えば、論理サービス・プロセッサ（logical service processor）と通信するために使用される）
５７  割り込みキー（例えば、操作者による手動の介入を示すために使用される）
５８  測定警報（例えば、ＣＰＵ測定機能におけるさまざまな変化を示すために使用される）
５９  タイミング警報（例えば、外部の時間基準からのさまざまな信号を示すために使用される）
【００４５】
その他の可能性も存在する。
【００４６】
一実施形態では、この命令の場合、本明細書においてさらに説明されているように、サブクラスが選択された制御レジスタ（制御０など）において有効化されているかどうかに関わらず、および別の制御レジスタ（プログラム状態ワード（ＰＳＷ）など）内の選択されたビットの設定に関わらず、そのサブクラスに関して、割り込みが保留中であると見なされる。１つの例では、制御レジスタ０が、ＣＰＵ内の制御情報を提供するために使用される。この提供することは、上で示されたサブクラスごとに示すことを含む。１つの例では、上で示されたビット番号は、制御レジスタ内の各サブクラスのビット番号と同じである。制御レジスタ０内のあるビットが例えば１に設定された場合、対応するサブクラスが有効化される。さらに、１つの例では、プログラム状態ワードは、状態レジスタおよびプログラム・カウンタの機能を実行する制御レジスタである。プログラム状態ワードは、条件コード、命令アドレス、およびその他の情報を含むが、これらに限定されない、プログラムを適切に実行するために使用される情報を含む。ＰＳＷの選択されたビット（例えば、ビット７）が外部マスクを指定し、外部クラスに含まれている条件（例えば、上で示された条件など）による割り込みに関してＣＰＵが有効化されているかどうかを制御する。
【００４７】
上で示されたように、Ｒ２フィールドに加えて、保留外部割り込みテスト命令は、保留中の割り込みサブクラスのマスク３２０（すなわち、選択されたサブクラスに関して外部割り込みが保留中であるかどうかを示すマスク）を含んでいる汎用レジスタを指定するＲ１フィールド３０４も含む。
【００４８】
保留外部割り込みテスト命令の動作の一例を挙げると、指定されたサブクラスに関して外部割り込みが保留中である場合、汎用レジスタＲ１内の対応するビットが例えば１に設定され、そうでない場合、汎用レジスタＲ１内の対応するビットが例えば０に設定される。１つの例では、汎用レジスタＲ１内の他のビット位置は０に設定される。
【００４９】
その結果として、汎用レジスタＲ１内のあるビット位置が例えば１を含んでいる場合、例えば条件コード１を設定することによって命令が完了し、そうでない場合、例えば条件コード０を設定することによって命令が完了する。具体的には、実行に基づいて、結果として生じる次の条件コードのうちの１つが存在してよい：０−外部割り込みのテストされたどのサブクラスも保留中でないか、またはサブクラスがテストされなかった、あるいは１−外部割り込みのテストされたサブクラスのうちの１つまたは複数が保留中である。
【００５０】
さらに、次のプログラム例外が発生することがある：演算（保留外部割り込みテスト機能がインストールされていない）、特権操作、またはトランザクション制約（実行中のトランザクションが制約されている）、あるいはその組み合わせ。
【００５１】
一実施形態では、保留外部割り込みテスト命令は、サブクラスの有効化を考慮しない。さらに、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の一実施形態では、汎用レジスタＲ１およびＲ２内の定義されたビット位置は、例えば制御レジスタ０内の対応する外部割り込みサブクラスの有効化制御のビット位置に一致する。
【００５２】
別の態様では、保留外部割り込みテスト命令は、例えば仮想環境内で、解釈実行において使用されてよい。一実施形態では、ハイパーバイザまたはホスト（例えば、ｚ／ＶＭ（Ｒ））およびプロセッサ（例えば、Ｓｙｓｔｅｍ  ｚ（Ｒ））のハードウェア／ファームウェアは、ゲスト・オペレーティング・システムおよびホストとの間での制御の移動を必要とせずに、ゲスト・オペレーティング・システムの動作を処理するために、制御された協調的な方法で互いに情報をやりとりする。ゲストの動作は、ページング可能ストレージ・モード・ゲストを含むゲストのために命令を解釈的に実行できるようにする機能を介して、ホストの介入なしで直接実行できる。この機能は、状態記述と呼ばれる制御ブロックを指定する、ホストが発行できる解釈実行開始（ＳＩＥ：Start Interpretative Execution）という命令を提供し、この制御ブロックは、例えば、ゲストのアーキテクチャ・モード、ゲストのアーキテクチャの特徴、ゲストのレジスタ、実行制御の指示などの、ゲスト（仮想マシン）の状態および制御を保持する。ＳＩＥ命令は、マシンを解釈実行モードに移行させ、このモードでは、ホストの注意を必要とする条件が発生するまで、ゲスト命令およびゲスト割り込みが直接処理される。そのような条件が発生した場合、解釈実行が終了され、ホスト割り込みが提示されるか、またはＳＩＥ命令が発生した条件の詳細を格納することを完了し、後者の動作はインターセプションと呼ばれる。この環境内で、保留外部割り込みテスト命令が使用されてもよい。
【００５３】
例えば、保留外部割り込みテスト命令は、警告追跡割り込みについてテストするために使用されてよく、警告追跡割り込みは、一実施形態ではゲスト構成に使用することができ、非ゲスト構成には使用できない。非ゲスト構成では警告追跡機能を使用できないため、一実施形態では、ホストレベル０で動作する構成（例えば、ハイパーバイザ）の場合、汎用レジスタＲ１のビット３０は、例えば１に設定されない。その他の例も存在する。
【００５４】
１つの例では、保留外部割り込みテスト命令の解釈実行は、状態記述内の実行制御の影響を受ける。一実施形態では、状態記述の実行制御Ｄ（ＥＣＤ：execution control D）フィールドの選択されたビット（例えば、ビット３）が、ＴＰＥＩを解釈的に実行できるかどうかを制御する。ＴＰＥＩのゲスト実行が試みられたが、ＥＣＤ．３が例えば１でない場合、そのゲスト実行が抑制され、命令インターセプション（例えば、コード４）条件が認識される。
【００５５】
さらに、状態記述の介入要求（Ｖ）フィールドが、ＴＰＥＩ命令の実行に基づいて調べられてよい。例えば、Ｖフィールドの警告追跡（Ｔ）ビットおよび外部呼び出し（Ｘ）ビット（すなわち、それぞれビット２および４）が、マスク３１０で設定されているそれらのサブクラスに対応するビット（例えば、ビット３０および５０）に基づいて調べられてよい。
【００５６】
さらに、新しい介入要求拡張（intervention requests extended）（ＶＸ）フィールドが状態記述内で定義される。ＶＸフィールドのビット０および１は、ゲスト緊急信号割り込みおよびゲスト誤動作警報割り込みがそれぞれ保留中であることの、スレッド固有の指示を表す。これらのビットは、ホスト・プログラムによって設定およびリセットされ、ＴＰＥＩの解釈実行に基づいて調べられる。例えば、ＶＸフィールドのビット０および１が、マスク３１０で設定されている例えばビット４９およびビット４８に基づいて調べられる。
【００５７】
その他の例も可能である。
【００５８】
保留外部割り込みテスト命令の態様に関するさらなる詳細が、図６を参照して説明される。１つの例では、保留中の外部割り込みについてテストするための命令（例えば、保留外部割り込みテスト命令）が取得される（ステップ４００）。この命令は、１つの例では、単一の設計された命令である。次に、この命令がプロセッサによって実行される（ステップ４０２）。
【００５９】
この実行は、例えば、命令によって提供される情報に基づいて、テストされる１つまたは複数の外部割り込みサブクラスを決定することを含む（ステップ４０４）。例えば、命令のＲ２によって指定されたレジスタに含まれているマスクは、複数のインジケータ（例えば、複数のビット）を含む。インジケータのうちの１つまたは複数は、保留中の外部割り込みについてテストするために選択されてよい１つまたは複数の外部割り込みサブクラスに対応する。例えば、１つのインジケータ（例えば、ビット３０）は警告追跡割り込みに対応し、１つのインジケータ（例えば、ビット４８）は誤動作警報に対応し、１つのインジケータ（例えば、ビット４９）は緊急信号に対応し、もう１つのインジケータ（例えば、ビット５０）は外部呼び出しに対応する。インジケータが特定の値（例えば、１）に設定された場合、設定されたインジケータに対応するサブクラスが、保留中の外部割り込みについてテストされる。例えば、ビット４９が１に設定された場合、緊急信号に関する保留中の外部割り込みについてテストが実行される。１つまたは複数のインジケータが設定されてよい。
【００６０】
設定されたインジケータごとに、設定されたインジケータに対応するサブクラスに関する外部割り込みが保留中であるかどうかについてチェックが行われる（ステップ４０６）。例えば、ビット４９が設定された場合、緊急信号に関する外部割り込みが保留中であるかどうかについてチェックが行われる（ステップ４０６）。１つの例では、このチェックで、解釈実行が適用されない場合、ＣＰＵは、保留中の外部割り込みが存在するかどうかを追跡し、その保留中の割り込みのラッチをテストして、割り込みが保留中であるかどうかを判定する。
【００６１】
解釈実行が適用される場合、ハードウェア割り込みがホストに提示され、ホストが、それらの割り込みがゲストを対象にしているかどうかを判定する。それらの割り込みがゲストを対象にしている場合、ホストは、ゲストの状態記述内の保留中の割り込みのビットを設定する。ゲストがディスパッチされたときに、割り込みのクラスに関してゲストが有効化されている場合、それらの割り込みがゲストに提示され、そうでない場合、割り込みが保留中のままになる。ゲスト・プログラムがＴＰＥＩ命令を実行するときに、ＣＰＵ（例えば、ミリコード）が、応答を作成するために、ゲストの状態記述内の保留中のビットを調べる。
【００６２】
テストされたサブクラスに関して外部割り込みが保留中である場合、そのような指示が提供される（ステップ４０８）。例えば、テストされているサブクラスに対応する、Ｒ１で指定されたレジスタ内で提供されたマスク内のインジケータ（例えば、ビット）が、（例えば、１に）設定される。これと同じ処理が、保留中の外部割り込みが存在する、テストされたサブクラスごとに発生する。
【００６３】
さらに、１つの例では、割り込みのテストされたサブクラスのいずれかが保留中であるかどうかを示す要約指示（summary indication）が、例えば条件コードで提供される。例えば、割り込みのテストされたどのサブクラスも保留中でない場合、条件コードが０に設定され、割り込みのテストされたサブクラスのいずれかが保留中である場合、条件コードが１に設定される。
【００６４】
本明細書では、命令を実行しているＣＰＵに関して、１つまたは複数の選択された外部割り込みが保留中であるかどうかを判定する保留外部割り込みテスト（ＴＰＥＩ）命令が詳細に説明された。一実施形態では、ＴＰＥＩは、１つまたは複数の特定のサブクラスに基づいて、１つまたは複数の外部割り込みが保留中であるかどうかを判定し、ＴＰＥＩは、１つまたは複数の保留中の外部割り込みを消去せずにこの判定を実行する。保留中の外部割り込みについてテストすることによって、コンピューティング環境内の処理を容易にし、その性能を改善する、動作（非動作を含む）が実行されてよい。制御プログラムは、特定のリソースに関する保留中の割り込みが存在するかどうかを、その割り込みのクラスが無効化されたままであるときに判定することができる。本発明の１つまたは複数の態様は、コンピュータ技術に密接に関係しており、コンピュータ内の処理を容易にし、その性能を改善する。
【００６５】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
【００６６】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスにすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一時的信号であると解釈されるべきではない。
【００６７】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【００６８】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）または広域ネットワーク（ＷＡＮ：wide area network）を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic arrays）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【００６９】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【００７０】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【００７１】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【００７２】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも留意されたい。
【００７３】
上に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、１つまたは複数の態様が提供されること、提示されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、１人または複数人の顧客のために１つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約あるいはその両方の下で、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、１つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
【００７４】
１つの態様では、１つまたは複数の実施形態を実行するために、アプリケーションがデプロイされてよい。１つの例として、アプリケーションのデプロイは、１つまたは複数の実施形態を実行するよう動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【００７５】
別の態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・インフラストラクチャでは、コンピューティング・システムと組み合わせたコードが、１つまたは複数の実施形態を実行できる。
【００７６】
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含んでいる、コンピューティング・インフラストラクチャを統合するためのプロセスが提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が１つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、１つまたは複数の実施形態を実行できる。
【００７７】
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、１つまたは複数の実施形態を組み込んで使用するために、他のアーキテクチャのコンピューティング環境が使用され得る。さらに、異なる命令、命令形式、命令フィールド、または命令値、あるいはその組み合わせが使用されてよい。多くの変形が可能である。
【００７８】
さらに、他の種類のコンピューティング環境が、恩恵を受けることができ、使用され得る。一例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも２つのプロセッサを含んでいる、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
【００７９】
入出力デバイスまたはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブ、およびその他の記憶媒体などを含むが、これらに限定されない）は、直接的に、または介在するＩ／Ｏコントローラを通じて、システムに結合できる。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット（Ｒ）・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
【００８０】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、特に明示的に示されない限り、複数形も含むことが意図されている。「備える（ｃｏｍｐｒｉｓｅ）」または「備えている（ｃｏｍｐｒｉｓｉｎｇ）」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組み合わせの存在を示すが、１つまたは複数のその他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組み合わせの存在または追加を除外していないということが、さらに理解されるであろう。
【００８１】
下の特許請求の範囲内のすべてのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、動作、および等価なものは、もしあれば、具体的に請求されるとき、その他の請求される要素と組み合わせて、機能を実行するための任意の構造、材料、または動作を含むことが意図されている。１つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。
【図１】
2020505668.tif 000003
【図２】
2020505668.tif 000004
【図３】
2020505668.tif 000005
【図４】
2020505668.tif 000006
【図５】
2020505668.tif 000007
【図６】
2020505668.tif 000008
【国際調査報告】
2020505668.tif 000009
2020505668.tif 000010