(57)【要約】【課題】間接的に指定された位置への条件付き分岐を提供する。【解決手段】間接的に指定された位置への条件付き分岐を実行するための命令が実行される。分岐アドレスがメモリ内の位置から取得され、このメモリ内の位置が命令によって指定される。別の命令の条件コードに基づいて、分岐が発生するかどうかの判定が行われ、分岐が発生するということの決定に基づいて、分岐アドレスへの分岐が実行される。【選択図】図２
2020505674.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
処理回路によって読み取り可能な、方法を実行するための命令を格納しているコンピュータ可読記憶媒体を備えており、前記方法が、
間接的に指定された位置への条件付き分岐を実行するための命令を取得することと、
前記命令を実行することとを含んでおり、前記実行することが、
分岐アドレスをメモリ内の位置から取得することであって、前記メモリ内の位置が前記命令によって指定される、前記取得することと、
別の命令の条件コードに基づいて、分岐が発生するかどうかを判定することと、
前記分岐が発生するということの決定に基づいて、前記メモリ内の位置から取得された前記分岐アドレスに分岐することとを含んでいる、
コンピュータ・プログラム製品。
【請求項２】
前記方法が、前記分岐アドレスを取得するための前記メモリ内の位置を決定することをさらに含んでおり、前記決定することが、前記命令の複数のフィールドを使用する、請求項１に記載のコンピュータ・プログラム製品。
【請求項３】
前記複数のフィールドがベース・フィールド、インデックス・フィールドおよび少なくとも１つの変位フィールドを含んでいる、請求項２に記載のコンピュータ・プログラム製品。
【請求項４】
前記位置を前記決定することが、前記メモリ内の位置のアドレスを取得するために、前記インデックス・フィールドによって指定された第１のレジスタの内容、前記ベース・フィールドによって指定された第２のレジスタの内容、第１の変位フィールドの内容、および第２の変位フィールドの内容を加算することを含んでいる、請求項３に記載のコンピュータ・プログラム製品。
【請求項５】
前記方法が制御レジスタから前記条件コードを取得することをさらに含んでいる、請求項１に記載のコンピュータ・プログラム製品。
【請求項６】
前記分岐が発生するかどうかを前記判定することが、
前記条件コードを使用して、前記命令に関連付けられたマスク内の１つの単位を選択することと、
前記単位の値をチェックすることと、
前記値が特定の値であるということの決定を前記チェックすることに基づいて分岐を示すこととを含んでいる、請求項１に記載のコンピュータ・プログラム製品。
【請求項７】
前記マスクが前記命令のフィールドである、請求項６に記載のコンピュータ・プログラム製品。
【請求項８】
前記単位がビットである、請求項６に記載のコンピュータ・プログラム製品。
【請求項９】
前記命令が、間接的に指定された位置への前記条件付き分岐の動作を指定するためのオペレーション・コード、前記判定に使用されるマスク・フィールド、および前記メモリ内の位置を決定するために使用される複数のフィールドを含んでいる、請求項１に記載のコンピュータ・プログラム製品。
【請求項１０】
前記分岐することが、
制御レジスタ内の命令アドレスを前記分岐アドレスに置き換えることと、
前記分岐アドレスに進んで処理を続行することとを含んでいる、請求項１に記載のコンピュータ・プログラム製品。
【請求項１１】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信するプロセッサとを備えており、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
間接的に指定された位置への条件付き分岐を実行するための命令を取得することと、
前記命令を実行することとを含んでおり、前記実行することが、
分岐アドレスをメモリ内の位置から取得することであって、前記メモリ内の位置が前記命令によって指定される、前記取得することと、
別の命令の条件コードに基づいて、分岐が発生するかどうかを判定することと、
前記分岐が発生するということの決定に基づいて、前記メモリ内の位置から取得された前記分岐アドレスに分岐することとを含んでいる、
コンピュータ・システム。
【請求項１２】
前記方法が、前記分岐アドレスを取得するための前記メモリ内の位置を決定することをさらに含んでおり、前記決定することが、前記命令の複数のフィールドを使用する、請求項１１に記載のコンピュータ・システム。
【請求項１３】
前記分岐が発生するかどうかを前記判定することが、
前記条件コードを使用して、前記命令に関連付けられたマスク内の１つの単位を選択することと、
前記単位の値をチェックすることと、
前記値が特定の値であるということの決定を前記チェックすることに基づいて分岐を示すこととを含んでいる、請求項１１に記載のコンピュータ・システム。
【請求項１４】
前記マスクが前記命令のフィールドであり、前記単位がビットである、請求項１３に記載のコンピュータ・システム。
【請求項１５】
前記分岐することが、
制御レジスタ内の命令アドレスを前記分岐アドレスに置き換えることと、
前記分岐アドレスに進んで処理を続行することとを含んでいる、請求項１１に記載のコンピュータ・システム。
【請求項１６】
コンピューティング環境内の処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法が、
間接的に指定された位置への条件付き分岐を実行するための命令を取得することと、
少なくとも１つのプロセッサによって前記命令を実行することとを含んでおり、前記実行することが、
分岐アドレスをメモリ内の位置から取得することであって、前記メモリ内の位置が前記命令によって指定される、前記取得することと、
別の命令の条件コードに基づいて、分岐が発生するかどうかを判定することと、
前記分岐が発生するということの決定に基づいて、前記メモリ内の位置から取得された前記分岐アドレスに分岐することとを含んでいる、
コンピュータ実装方法。
【請求項１７】
前記分岐アドレスを取得するための前記メモリ内の位置を決定することをさらに含んでおり、前記決定することが、前記命令の複数のフィールドを使用する、請求項１６に記載のコンピュータ実装方法。
【請求項１８】
前記分岐が発生するかどうかを前記判定することが、
前記条件コードを使用して、前記命令に関連付けられたマスク内の１つの単位を選択することと、
前記単位の値をチェックすることと、
前記値が特定の値であるということの決定を前記チェックすることに基づいて分岐を示すこととを含んでいる、請求項１６に記載のコンピュータ実装方法。
【請求項１９】
前記マスクが前記命令のフィールドであり、前記単位がビットである、請求項１８に記載のコンピュータ実装方法。
【請求項２０】
前記分岐することが、
制御レジスタ内の命令アドレスを前記分岐アドレスに置き換えることと、
前記分岐アドレスに進んで処理を続行することとを含んでいる、請求項１６に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
１つまたは複数の態様は、一般に、コンピューティング環境内の処理に関しており、特に、そのような処理を改善にすることに関している。
【背景技術】
【０００２】
コンピューティング環境内の処理は、多くの場合、制御をコンピュータ・プログラムのある部分からそのプログラムの別の部分に移動する分岐命令の使用を含む。分岐命令には、比較命令の結果に基づくなどの、あらかじめ確立された条件の結果に基づいて制御をプログラムの別の部分に移動する、条件付き分岐命令を含む、さまざまな種類が存在する。条件付き分岐命令の一例は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（ニューヨーク州アーモンク）によって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の命令セット・アーキテクチャ（ＩＳＡ：Instruction Set Architecture）に含まれている条件分岐命令である。
【０００３】
条件分岐命令は、分岐条件のいずれかが真である場合に、プログラム状態ワード（ＰＳＷ：program status word）の命令アドレスを置き換えるために使用されるアドレス（位置とも呼ばれる）を指定する、オペランドを指定する。この命令の１つの形態では、オペランド（すなわち、分岐アドレス）はレジスタ内で指定される。さらに別の例では、オペランドすなわち分岐アドレスは、ベース・レジスタの内容、インデックス・レジスタの内容および１２ビットの符号なし変位の総和から形成される。
【０００４】
さらに、相対条件分岐命令（Branch Relative On Condition instruction）などの他の分岐命令は、新しいＰＳＷの命令アドレスを形成するために命令のアドレスに加算されるハーフワードの数を指定する符号付き整数として、オペランドの分岐位置を指定する。
【０００５】
複数の条件付き分岐命令の場合、分岐位置を形成するために、汎用レジスタが使用される。これは、条件付き分岐命令において使用されるそのような汎用レジスタの内容がストレージから読み込まれるときに、プログラム設計に課題をもたらす。特定のプログラミングの状況では、予備の汎用レジスタが、分岐命令によって使用できないことがある。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】“z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-10, March 2015
【非特許文献２】“Power ISA (TM) Version 2.07B,” International Business Machines Corporation, April 9, 2015
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、間接的に指定された位置への条件付き分岐を提供する。
【課題を解決するための手段】
【０００８】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。このコンピュータ・プログラム製品は、処理回路によって読み取り可能な、方法を実行するための命令を格納しているストレージ媒体を備える。この方法は、例えば、間接的に指定された位置への条件付き分岐を実行するための命令を取得することと、この命令を実行することとを含む。この実行することは、分岐アドレスをメモリ内の位置から取得することであって、このメモリ内の位置が命令によって指定される、取得することと、別の命令の条件コードに基づいて、分岐が発生するかどうかを判定することと、分岐が発生するということの決定に基づいて、このメモリ内の位置から取得された分岐アドレスに分岐することとを含む。間接的に指定された位置へのこの条件付き分岐は、コンパイル時に分岐位置が既知であることを必要としないことによって処理を容易にし、プログラムに使用できるレジスタ（すなわち、プログラム・スタック・レジスタ）以外の追加レジスタの必要性をなくす。
【０００９】
一実施形態では、命令は、間接的に指定された位置への条件付き分岐の動作を指定するためのオペレーション・コード、分岐が発生するかどうかの判定に使用されるマスク・フィールド、および分岐アドレスが取得されるメモリ内の位置を決定するために使用される複数のフィールドを含む。
【００１０】
このメモリ内の位置は、命令の複数のフィールドを使用することによって決定される。複数のフィールドは、例えば、ベース・フィールド、インデックス・フィールドおよび少なくとも１つの変位フィールドを含む。例えば、メモリ内の位置のアドレスを取得するために、インデックス・フィールドによって指定された第１のレジスタの内容、ベース・フィールドによって指定された第２のレジスタの内容、第１の変位フィールドの内容、および第２の変位フィールドの内容が加算される。
【００１１】
１つの例として、条件コードが制御レジスタ（例えば、プログラム状態ワード（ＰＳＷ））から取得され、分岐が発生するかどうかを判定することが、条件コードを使用して、命令に関連付けられたマスク内の１つの単位を選択することと、この単位の値をチェックすることと、この値が特定の値であるということの決定をチェックすることに基づいて分岐を示すこととを含む。このマスクは、例えば命令のフィールドであり、この単位は、１つの例ではビットである。
【００１２】
この分岐は、例えば、制御レジスタ（例えば、ＰＳＷ）内の命令アドレスを分岐アドレスに置き換えることと、分岐アドレスに進んで処理を続行することとを含む。
【００１３】
１つまたは複数の態様に関連するコンピュータ実装方法およびシステムも本明細書に記載され、請求される。さらに、１つまたは複数の態様に関連するサービスも本明細書に記載されており、請求されてよい。
【００１４】
その他の特徴および長所が、本明細書に記載された技術によって実現される。その他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。
【００１５】
１つまたは複数の態様は、本明細書の最後にある特許請求の範囲において例として具体的に指摘され、明確に請求される。前述の内容、ならびに１つまたは複数の態様の目的、特徴、および長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【００１６】
【図１】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例を示す図である。
【図２】本発明の態様に従って、図１のプロセッサの詳細をさらに示す図である。
【図３】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例を示す図である。
【図４】図３のメモリの詳細をさらに示す図である。
【図５】本発明の態様に従って、間接条件分岐命令（Branch Indirect On Condition instruction）の一例を示す図である。
【図６】本発明の態様に従って、図５のマスク・フィールドに関連する情報の一例を示す図である。
【図７】本発明の態様に従って使用されるプログラム状態ワード（ＰＳＷ）の一例を示す図である。
【図８】本発明の態様に従って、図５の間接条件分岐命令の実行に関連付けられた処理の一例を図解的に示す図である。
【図９】本発明の態様に従って、間接条件分岐命令の態様に関連付けられたフローの一例を示す図である。
【図１０】本発明の態様に従って、コンピューティング環境内の処理を容易にすることに関連する態様の一実施形態を示す図である。
【図１１】本発明の態様に従って、コンピューティング環境内の処理を容易にすることに関連する態様の一実施形態を示す図である。
【発明を実施するための形態】
【００１７】
本発明の態様に従って、分岐位置（例えば、分岐アドレス）がストレージ内で指定される機能が提供される（ストレージは、本明細書ではメモリとも呼ばれ、暗黙的または明示的に特に示されない限り、本明細書では、ストレージおよびメモリは交換可能なように使用される）。具体的に一例を挙げると、分岐位置がストレージ内で指定される間接的分岐機構を提供するために、命令（例えば、ハードウェア／ソフトウェア・インターフェイスでの単一の設計されたマシン命令）が使用される。そのような命令の１つの例は、下でさらに説明される間接条件分岐命令である。
【００１８】
本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一実施形態が、図１を参照して説明される。１つの例では、コンピューティング環境は、インターナショナル・ビジネス・マシーンズ社（ニューヨーク州アーモンク）によって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づく。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の一実施形態は、“z/Architecture Principles of Operation,” IBM Publication No. SA22-7832-10, March 2015に記載されており、この文献は本明細書において参照によってその全体が本明細書に組み込まれている。Ｚ／ＡＲＣＨＩＴＥＣＴＵＲＥは、インターナショナル・ビジネス・マシーンズ社（米国ニューヨーク州アーモンク）の登録商標である。
【００１９】
別の例では、コンピューティング環境は、インターナショナル・ビジネス・マシーンズ社（ニューヨーク州アーモンク）によって提供されるＰｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づく。Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の一実施形態は、“Power ISATM 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）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組み合わせなどの１つまたは複数のネットワークと通信できるようにし、他のコンピューティング・デバイスまたはシステムとの通信を実現する。
【００２５】
データ・ストレージ・デバイス１４４は、１つまたは複数のプログラム１４６、１つまたは複数のコンピュータ可読プログラム命令１４８、またはデータ、あるいはその組み合わせなどを格納してよい。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成されてよい。
【００２６】
コンピュータ・システム１０２は、取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であってよい。例えば、コンピュータ・システム１０２は、取り外し不可、不揮発性の磁気媒体（通常は、「ハード・ドライブ」と呼ばれる）、取り外し可能、不揮発性の磁気ディスク（例えば、「フロッピー・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、あるいはＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りまたは書き込みを行うための光ディスク・ドライブ、あるいはその組み合わせを含むか、またはこれらに結合されるか、あるいはその両方であってよい。その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム１０２と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【００２７】
コンピュータ・システム１０２は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用されてよい。コンピュータ・システム１０２での使用に適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例としては、パーソナル・コンピュータ（ＰＣ：personal computer）システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークＰＣ、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【００２８】
プロセッサ１０４の一例に関するさらなる詳細が、図２を参照して説明される。プロセッサ１０４は、命令を実行するために使用される複数の機能コンポーネントを含む。これらの機能コンポーネントは、例えば、実行される命令をフェッチするための命令フェッチ・コンポーネント１５０と、フェッチされた命令をデコードするため、およびデコードされた命令のオペランドを取得するための命令デコード・ユニット１５２と、デコードされた命令を実行するための命令実行コンポーネント１５４と、必要な場合に、命令を実行するためにメモリにアクセスするためのメモリ・アクセス・コンポーネント１５６と、実行された命令の結果を提供するための書き戻しコンポーネント１６０とを含む。これらのコンポーネントのうちの１つまたは複数は、本発明の態様に従って、下でさらに説明されているように、間接条件分岐命令１６６を実行して、条件に応じて間接アドレス（例えば、命令自体から直接取得されるのではなく、ストレージから取得されるアドレス）に分岐するために使用されてよい。
【００２９】
プロセッサ１０４は、一実施形態では、機能コンポーネントのうちの１つまたは複数によって使用される１つまたは複数のレジスタ１７０も含む。
【００３０】
１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の実施形態が、図３を参照して説明される。この例では、コンピューティング環境２００は、例えば、１つまたは複数のバス２０８またはその他の接続あるいはその両方などを介して互いに結合された、ネイティブ中央処理装置（ＣＰＵ）２０２、メモリ２０４、および１つまたは複数の入出力デバイスまたはインターフェイス２０６あるいはその両方を含む。例として、コンピューティング環境２００は、インターナショナル・ビジネス・マシーンズ社（ニューヨーク州アーモンク）によって提供されるＰｏｗｅｒＰＣ（Ｒ）プロセッサまたはｐＳｅｒｉｅｓ（Ｒ）サーバ、あるいはインターナショナル・ビジネス・マシーンズ社、インテルまたはその他の企業によって提供されるアーキテクチャに基づくその他のマシン、あるいはその組み合わせを含んでよい。
【００３１】
ネイティブ中央処理装置２０２は、環境内で処理中に使用される１つまたは複数の汎用レジスタまたは１つまたは複数の専用レジスタあるいはその両方などの、１つまたは複数のネイティブ・レジスタ２１０を含む。これらのレジスタは、いずれかの特定の時点での環境の状態を表す情報を含む。
【００３２】
さらに、ネイティブ中央処理装置２０２は、メモリ２０４に格納された命令およびコードを実行する。１つの特定の例では、中央処理装置は、メモリ２０４に格納されたエミュレータ・コード２１２を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード２１２は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）以外のアーキテクチャに基づくマシン（ＰｏｗｅｒＰＣ（Ｒ）プロセッサ、ｐＳｅｒｉｅｓ（Ｒ）サーバ、あるいはその他のサーバまたはプロセッサなど）が、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）をエミュレートし、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づいて開発されたソフトウェアおよび命令を実行できるようにする。
【００３３】
エミュレータ・コード２１２に関連するさらなる詳細が、図４を参照して説明される。メモリ２０４に格納されたゲスト命令２５０は、ネイティブＣＰＵ２０２のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発された（例えば、マシン命令と相互関係がある）ソフトウェア命令を含む。例えば、ゲスト命令２５０は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）プロセッサ上で実行するように設計されてよいが、代わりに、例えばインテル・プロセッサであってよい、ネイティブＣＰＵ２０２上でエミュレートされる。１つの例では、エミュレータ・コード２１２は、メモリ２０４から１つまたは複数のゲスト命令２５０を取得するため、および取得された命令のローカル・バッファリングを必要に応じて提供するための命令フェッチ・ルーチン２５２を含む。エミュレータ・コード２１２は、取得されたゲスト命令の種類を決定するため、およびゲスト命令を、１つまたは複数の対応するネイティブ命令２５６に変換するための命令変換ルーチン２５４も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別すること、およびこの機能を実行するためのネイティブ命令を選択することを含む。
【００３４】
さらに、エミュレータ・コード２１２は、ネイティブ命令の実行を引き起こすためのエミュレーション制御ルーチン２６０を含む。エミュレーション制御ルーチン２６０は、ネイティブＣＰＵ２０２に、１つまたは複数のすでに取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終了時に、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに返してよい。ネイティブ命令２５６の実行は、データをメモリ２０４からレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、あるいは変換ルーチンによって決定された何らかの種類の算術演算または論理演算を実行することを含んでよい。
【００３５】
例えば、各ルーチンは、メモリに格納されてネイティブ中央処理装置２０２によって実行されるソフトウェアにおいて実装される。他の例では、ルーチンまたは動作のうちの１つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組み合わせにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブＣＰＵのレジスタ２１０を使用して、またはメモリ２０４内の位置を使用することによって、エミュレートされてよい。実施形態では、ゲスト命令２５０、ネイティブ命令２５６、およびエミュレータ・コード２１２は、同じメモリ内に存在してよく、または異なるメモリ・デバイス間で分配されてよい。
【００３６】
本明細書において使用されているように、ファームウェアは、例えば、プロセッサのマイクロコードまたはミリコードあるいはその両方を含む。ファームウェアは、例えば、上位レベルの機械コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。一実施形態では、ファームウェアは、例えば、信頼できるソフトウェアを含んでいるマイクロコード、または基盤になるハードウェアに固有のマイクロコードとして通常は提供される、システムのハードウェアへのオペレーティング・システムのアクセスを制御する独自のコードを含む。
【００３７】
取得され、変換されて実行されるゲスト命令２５０は、例えば、本明細書に記載された間接条件分岐命令である。あるアーキテクチャ（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ））の命令が、メモリからフェッチされ、変換され、別のアーキテクチャ（例えば、ＰｏｗｅｒＰＣ（Ｒ）、ｐＳｅｒｉｅｓ（Ｒ）、インテルなど）のネイティブ命令２５６のシーケンスとして表される。その後、これらのネイティブ命令が実行される。
【００３８】
例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づいて定義される間接条件分岐命令の一実施形態に関連する詳細が、下で説明される。
【００３９】
図５を参照すると、一実施形態では、間接条件分岐（ＢＩＣ：Branch Indirect On Condition）命令３００は、間接条件分岐動作を示すオペレーション・コード（オペコード）フィールド３０２ａ、３０２ｂ、マスク・フィールド（Ｍ１）３０４、インデックス・フィールド（Ｘ２）３０６、ベース・フィールド（Ｂ２）３０８、ならびに第１の変位フィールド（ＤＬ２）３１０ａおよび第２の変位フィールド（ＤＨ２）３１０ｂを含む変位フィールドを含んでおり、これらのそれぞれが、下で説明される。一実施形態では、各フィールドは、別々であり、互いに独立しているが、別の実施形態では、２つ以上のフィールドが結合されてよい。さらに、フィールドに関連付けられた下付きの数字は、そのフィールドが適用されるオペランドを示す。例えば、下付きの１を有するすべてのフィールドは第１のオペランドに関連付けられ、下付きの２を有するすべてのフィールドは第２のオペランドに関連付けられる、などとなる。
【００４０】
１つの例では、マスク・フィールド３０４は、４ビットのマスクとして使用される。図６に示されているように、４つの条件コード３２０（例えば、０、１、２、および３）が、左から右に、マスクの４つのビットと一致している。現在の条件コード（例えば、以前に実行された命令の条件コード）が、対応するマスク・ビットを選択するために使用される。条件コードによって選択されたマスク・ビットが、例えば１である場合、分岐が成功する。選択されたマスク・ビットが、例えば０である場合、通常の命令の順序付けが、次の順次命令を続行する。
【００４１】
図６を参照すると、一実施形態では、各条件コード３２０は、マスク３０４の命令のビット番号３２２に対応し、マスク位置の値３２４に関連付けられている。例として、条件コード０は、命令のビット番号８に対応し、マスク位置の値８を有しており（すなわち、条件コードがマスク内で左から右に定義されているため、条件コード０は、４ビットのマスクの左端の位置（２３＝８）にある）、条件コード１は、命令のビット番号９に対応し、マスク位置の値４を有しており、条件コード２は、命令のビット番号１０に対応し、マスク位置の値２を有しており、条件コード３は、命令のビット番号１１に対応し、マスク位置の値１を有している。
【００４２】
現在の条件コードは、例えば、プログラム状態ワード（ＰＳＷ）などの制御レジスタに格納される。プログラム状態ワードは、状態レジスタおよびプログラム・カウンタの機能を実行する。プログラム状態ワードは、適切なプログラムの実行に使用される情報を格納する。例えば、プログラム状態ワードは、命令の順序付けを制御するため、および現在実行されているプログラムに関して、プロセッサの状態を保持して示すために使用される。１つの例では、図７を参照すると、プログラム状態ワード３５０は、条件コード３５２、アドレス指定モード３５４（例えば、６４ビット・モード、３１ビット・モード、２４ビット・モード）、現在の動的アドレス変換（ＤＡＴ：dynamic address translation）およびアドレス空間制御などの、ただしこれらに限定されない、その他の情報３５６、ならびに命令アドレス３５８を含んでいる（これらは、レジスタ内では特定の順序で示されておらず、特定の位置にも示されていない）。条件コード３５２は、特定の命令の実行において取得された結果に応じて、０、１、２、または３に設定され、ＰＳＷ内の条件コードが現在の条件コードである。命令アドレス３５８は、次に実行される命令の左端のバイトの位置を指定する。
【００４３】
図５に戻ると、フィールド３０６〜３１０ｂは、第２のオペランドの位置（すなわち、ストレージ内の分岐位置を指定する位置）を定義するために使用される。ＤＬ２３１０ａおよびＤＨ２３１０ｂは、例えば２０ビット符号付き２進整数として扱われる変位を提供する。ストレージ内の位置を定義するために、Ｘ２３０６によって指定されたレジスタの内容およびＢ２３０８によって指定されたレジスタの内容が、ＤＬ２３１０ａおよびＤＨ２３１０ｂによって提供された変位に加算される。ストレージ内の位置は、分岐位置（例えば、分岐のアドレス）を含む。
【００４４】
示されているように、ストレージ内の８バイトの第２のオペランドが、分岐アドレスとして使用される。分岐アドレスは、現在のアドレス指定モードの影響を受ける。１つの例では、アドレス指定モードに関わらず、第２のオペランドの８バイトがアクセスされる。１つの例では、第２のオペランドは、現在のＤＡＴ（動的アドレス変換）、アドレス指定モード、およびプログラム状態ワードなどの制御レジスタで指定されたアドレス空間制御を使用してフェッチされる。しかし、第２のオペランドの位置からフェッチされた分岐アドレスは、命令アドレスとして扱われ、リアル・モードでは実アドレスとして、一次空間モード、二次空間モード、またはアクセス・レジスタ・モードでは一次仮想アドレスとして、およびホーム空間モードではホーム仮想アドレスとして扱われる。
【００４５】
さまざまなフィールドおよびレジスタが説明されたが、本発明の１つまたは複数の態様は、その他のより多いか、またはより少ないフィールドまたはレジスタ、あるいはその他のサイズのフィールドおよびレジスタなどを使用してよい。多くの変形が可能である。例えば、命令の明示的に指定されるレジスタまたはフィールドの代わりに、暗黙のレジスタが使用されてよい。さらに、他の実施形態では、マスクを置き換える命令の拡張されたニーモニック接尾辞（mnemonic suffixes）が使用されてよい。やはり、その他の変形も可能である。
【００４６】
間接条件分岐命令３００の動作の１つの例では、現在のプログラム状態ワード３５０内の条件コード３５２が、マスク・フィールド３０４内の例えば１を含んでいるビット位置を指定している場合、現在のプログラム状態ワード３５０内の命令アドレス３５８が（ストレージから取得された）分岐アドレスに置き換えられ、そうでない場合、通常の命令の順序付けが、更新された命令アドレスを続行する。更新された命令アドレスは、ＰＳＷ内のフィールド３５８にある。すなわち、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）では、ＣＰＵが命令を実行しようとしていて、ただし実行する前に、ＣＰＵは、ＰＳＷ内の命令アドレスに基づいて命令をフェッチする。次にＣＰＵは、例えば命令の最初の２ビットに基づいて命令の長さを決定し、この長さ（例えば、２バイト、４バイト、または６バイト）が命令アドレス３５８に加算される。この命令アドレス３５８は、更新されたアドレスである。
【００４７】
現在のＰＳＷ内の条件コードが、例えば０を含んでいるＭ１フィールド内のビット位置を示している場合、第２のオペランドに関してアクセス例外またはプログラム・イベント記録（ＰＥＲ：program event recording）ゼロ・アドレス検出イベントが認識されるかどうかは、モデルに依存する。
【００４８】
間接条件分岐命令の実行に基づいて、条件コードは変更されず、アクセス（フェッチ、オペランド２）、演算（例えば、各種命令拡張機能２（miscellaneous instruction extensions facility 2）がインストールされていない場合）、およびトランザクション制約のプログラム例外が認識されることがある。
【００４９】
さらに、ＰＥＲゼロ・アドレス検出が分岐アドレスに対して実行されない、条件分岐などの他の分岐タイプの命令とは異なり、間接条件分岐命令の第２のオペランドに関して、ＰＥＲゼロ・アドレス検出イベントが認識されることがある。
【００５０】
図８を参照して、間接条件分岐命令の実行の図解表現が説明される。図８に示されているように、命令のフィールド３０６、３０８、３１０ａ、および３１０ｂが使用され（４００）、分岐アドレスを取得するためのメモリ内の位置を決定する。これらのフィールドは、例えば、分岐アドレスまたは位置を指定するメモリ内のダブルワード４０１を示す。このアドレスは、ＰＳＷ内で指定された現在のアドレス指定モード（Ａｍｏｄｅ：addressing mode）（例えば、Ａｍｏｄｅ６４（４０２）、Ａｍｏｄｅ３１（４０４）、またはＡｍｏｄｅ２４（４０６））の影響を受け、ＰＳＷ内の条件コードに基づいて現在のプログラム状態ワードの命令アドレス４１０を置き換えるために使用される。例えば、現在のプログラム状態ワード内の条件コードが、例えば１を含んでいるマスク・フィールド内のビット位置を指定している場合、現在のプログラム状態ワードの命令アドレスが分岐アドレスに置き換えられる。
【００５１】
図９を参照して、間接条件分岐命令の態様を表すフローの一実施形態が説明される。１つの例では、図９の処理は、少なくとも１つのプロセッサによって実行される。
【００５２】
図９を参照すると、１つの例では、命令が取得される（例えば、含む、提供される、受信される、取り出されるなど）（ステップ５００）。この命令は、例えば間接条件分岐命令である。次に、取得された命令が実行される（ステップ５０２）。１つの例では、この実行は、例えば、制御レジスタ（例えば、現在のプログラム状態ワード）から条件コードを取得することを含む（ステップ５０４）。さらに、分岐アドレスが、命令によって指定されたメモリ内の位置から取得される（ステップ５０６）。例えば、Ｘ２フィールドおよびＢ２フィールドによって指定されたレジスタの内容が、ＤＬ２フィールドおよびＤＨ２フィールド内の変位に加算され、分岐アドレスを指定するメモリ内のダブルワードを取得する。現在のプログラム状態ワード内の別の命令（例えば、以前に実行された命令）の条件コードが、例えば１を含んでいるＭ１フィールド内のビット位置を指定しているかどうかに関する判定が行われる（照会５０８）。現在のＰＳＷ内の条件コードが、例えば１を含んでいるＭ１フィールド内のビット位置を指定していない場合、通常の命令の順序付けが、ＰＳＷ内の更新された命令アドレスを続行する（ステップ５１０）。しかし、現在のプログラム状態ワード内の条件コードが、例えば１を含んでいるマスク・フィールド内のビット位置を指定している場合、分岐が発生する。したがって、現在のプログラム状態ワード内の命令アドレスが分岐アドレスに置き換えられ、処理が分岐アドレスに進む（ステップ５１２）。
【００５３】
別の実施形態では、分岐アドレスを取得すること（すなわち、第２のオペランドをフェッチすること）は、分岐が発生する場合（例えば、照会５０８の結果が「はい」になった後の、ステップ５１２の前）にのみ発生する。その他の変形が可能である。
【００５４】
１つの例では、間接条件分岐命令は、メモリ内（プログラム・スタック内または保存領域内など）の復帰アドレスに基づいて、呼び出しプログラムに戻ることにおいて役立つことがある。別の例では、間接条件分岐命令は、テーブルに基づく分岐機構において役立つことがある。その他の例が可能である。
【００５５】
間接条件分岐命令を使用する１つの特定の例が、次のコードにおいて示されている。
【００５６】
【表１】
2020505674.tif 000003
【００５７】
本明細書では、レジスタ（すなわち、プロセッサ内のハードウェア）、レジスタおよびベース、または相対変位とは対照的に、条件に応じてメモリ内の指定された位置に分岐する命令（例えば、単一の設計された命令）が詳細に説明される。プログラムによって静的または動的に決定された位置（例えば、メモリ上の位置）に分岐し、プログラムに使用できるレジスタ以外の追加レジスタを必要とせずに分岐する条件付き分岐命令が提供される。例えば、この条件付き分岐命令は、使用できる他のレジスタがないか、または他のレジスタがプログラムスタック・レジスタ以外に使用されない場合に、ある位置に分岐する。
【００５８】
プログラムが分岐位置をプログラム・レジスタに組み込んでいてよい場合が、多数存在する。一例として、呼び出されるサブルーチンでは、そのサブルーチンが完了したときの分岐先の位置は、多くの場合、保存領域（プログラム・スタックなど）に配置される。さらに別の例として、プログラムは、計算された決定に応じて、さまざまな分岐先の位置を表すアドレスのテーブルを使用してよい。これはテキスト構文解析では一般的であり、テキスト構文解析では、テーブル内の別々のアドレスが、アルファベット、数値、句読点、演算子、空白などを処理するその後の関数のアドレスを表す。
【００５９】
これらの例の場合、プログラムは、分岐アドレスを読み込むことができる限定された予備のレジスタを有するか、または予備のレジスタを有さないことができるが、分岐アドレスを含んでいるストレージ位置へのアドレス指定能力を提供するレジスタをさらに有してよい。このようにして、本発明の態様に従って、アドレスをレジスタにあらかじめ読み込むことを必要とせずに、ストレージ内の指定された位置に直接分岐するための機構が提供される。
【００６０】
本明細書では、（例えば、以前に実行された命令によって設定された条件コードに基づいて）ストレージ（すなわち、メモリ）オペランド間で分岐される位置を取得する単一の条件付き分岐命令が詳細に説明される。分岐アドレスが間接的に指定され、この指定では、分岐位置は、レジスタ（すなわち、ＣＰＵ内のハードウェア）、またはベース・レジスタ、インデックス・レジスタ、および変位の組み合わせからも、ＰＳＷと相対的な即値からも直接使用できず、分岐位置は、ベース・レジスタ、インデックス・レジスタ、および変位の組み合わせによって指定されるメモリ内のフィールドである。これによって、コンピューティング環境内のより効率的な処理を実現し、プログラムが条件付きでストレージ内の位置に分岐できるようにする。本発明の１つまたは複数の態様は、コンピュータ技術に密接に関係しており、コンピュータ内の処理を容易にし、その性能を改善する。
【００６１】
コンピューティング環境内の処理を容易にすることに関連する本発明の態様の一実施形態が、図１０〜１１を参照して説明される。図１０を参照すると、１つの例では、間接的に指定された位置への条件付き分岐を実行するための命令が取得され（６００）、この命令が実行される（６０２）。この実行することは、例えば、分岐アドレスをメモリ内の位置から取得することであって、このメモリ内の位置が命令によって指定される、取得することと（６０４）、以前に実行された命令などの別の命令の条件コードに基づいて、分岐が発生するかどうかを判定することと（６０６）、分岐が発生するということの決定に基づいて、このメモリ内の位置から取得された分岐アドレスに分岐することと（６０８）を含む。
【００６２】
１つの例として、命令は、例えば、間接的に指定された位置への条件付き分岐の動作を指定するためのオペレーション・コード、判定に使用されるマスク・フィールド、および分岐アドレスを取得するメモリ内の位置を決定するために使用される複数のフィールドを含む（６１０）。
【００６３】
一実施形態では、分岐アドレスを取得するためのメモリ内の位置は、例えば、ベース・フィールド、インデックス・フィールド、および少なくとも１つの変位フィールドなどの、命令の複数のフィールドを使用して決定される（６２０）。
【００６４】
１つの例として、位置を決定することは、メモリ内の位置のアドレスを取得するために、インデックス・フィールドによって指定された第１のレジスタの内容、ベース・フィールドによって指定された第２のレジスタの内容、第１の変位フィールドの内容、および第２の変位フィールドの内容を加算することを含む（６２２）。
【００６５】
一実施形態では、条件コードが制御レジスタから取得される（６３０）。
【００６６】
さらに、図１１を参照すると、一実施形態では、分岐が発生するかどうかを判定することが、条件コードを使用して、命令に関連付けられたマスク（例えば、マスクは命令のフィールドである）内の１つの単位（例えば、ビット）を選択することと（６４０）、この単位の値をチェックすることと（６４４）、この値が特定の値であるということの決定をチェックすることに基づいて分岐を示すことと（６４６）を含む。
【００６７】
さらに、１つの例では、この分岐は、制御レジスタ内の命令アドレスを分岐アドレスに置き換えることと、分岐アドレスに進んで処理を続行することとを含む（６５０）。
【００６８】
多くの変形が可能である。
【００６９】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
【００７０】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスにすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasableprogrammable 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）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【００７３】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【００７４】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【００７５】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【００７６】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも留意されたい。
【００７７】
上に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、１つまたは複数の態様が提供されること、提示されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、１人または複数人の顧客のために１つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約あるいはその両方の下で、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、１つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
【００７８】
１つの態様では、１つまたは複数の実施形態を実行するために、アプリケーションがデプロイされてよい。１つの例として、アプリケーションのデプロイは、１つまたは複数の実施形態を実行するよう動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【００７９】
別の態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・インフラストラクチャでは、コンピューティング・システムと組み合わせたコードが、１つまたは複数の実施形態を実行できる。
【００８０】
さらに別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含んでいる、コンピューティング・インフラストラクチャを統合するためのプロセスが提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が１つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、１つまたは複数の実施形態を実行できる。
【００８１】
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、１つまたは複数の実施形態を組み込んで使用するために、他のアーキテクチャのコンピューティング環境が使用され得る。さらに、異なる命令、命令形式、命令フィールド、または命令値、あるいはその組み合わせが使用されてよい。さらに、コンピュータ・システムまたは環境あるいはその両方は、さらに多いコンポーネント、さらに少ないコンポーネント、または異なるコンポーネント、あるいはその組み合わせを含んでよい。多くの変形が可能である。
【００８２】
さらに、他の種類のコンピューティング環境が、恩恵を受けることができ、使用され得る。一例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも２つのプロセッサを含んでいる、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
【００８３】
入出力デバイスまたはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブ、およびその他の記憶媒体などを含むが、これらに限定されない）は、直接的に、または介在するＩ／Ｏコントローラを通じて、システムに結合できる。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット（Ｒ）・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
【００８４】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、特に明示的に示されない限り、複数形も含むことが意図されている。「備える（ｃｏｍｐｒｉｓｅ）」または「備えている（ｃｏｍｐｒｉｓｉｎｇ）」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組み合わせの存在を示すが、１つまたは複数のその他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組み合わせの存在または追加を除外していないということが、さらに理解されるであろう。
【００８５】
下の特許請求の範囲内のすべてのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、動作、および等価なものは、もしあれば、具体的に請求されるとき、その他の請求される要素と組み合わせて、機能を実行するための任意の構造、材料、または動作を含むことが意図されている。１つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。
【図１】
2020505674.tif 000004
【図２】
2020505674.tif 000005
【図３】
2020505674.tif 000006
【図４】
2020505674.tif 000007
【図５】
2020505674.tif 000008
【図６】
2020505674.tif 000009
【図７】
2020505674.tif 000010
【図８】
2020505674.tif 000011
【図９】
2020505674.tif 000012
【図１０】
2020505674.tif 000013
【図１１】
2020505674.tif 000014
【国際調査報告】
2020505674.tif 000015
2020505674.tif 000016
2020505674.tif 000017