(57)【要約】【課題】制約されていると識別される記憶域オペランド要求の処理を選択的に一時的に抑制する。【解決手段】処理は、コンピューティング環境の複数の処理ユニットによって共用される共通の記憶場所に対する記憶域オペランド要求が制約されているかどうかを判定することと、記憶域オペランド要求が制約されていると判定したことに基づいて、記憶域オペランド要求に従う共通の記憶場所へのアクセスを要求することを一時的に抑制することとを含む。処理を行う処理ユニットは、処理ユニットにプライベートなキャッシュを使用して処理が達成されることができる場合、抑制することを行うことなく、制約された記憶域オペランド要求の処理に進んでもよい。そうでなければ、記憶域オペランド要求と関連付けられた命令、または命令の操作がほぼ完了するまで抑制することが続くことになる。【選択図】図４
2020516970.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境内の処理を容易にする方法であって、
コンピューティング環境の複数の処理ユニットによって共用される共通の記憶場所にアクセスする記憶域オペランド要求が制約されているかどうかを判定するステップと、
前記記憶域オペランド要求が制約されていると判定したことに基づいて、前記記憶域オペランド要求に従う前記共通の記憶場所へのアクセスを要求することを一時的に抑制するステップとを含む方法。
【請求項２】
前記一時的に抑制するステップが、前記記憶域オペランド要求が、前記記憶域オペランド要求を処理するために、前記コンピューティング環境の前記複数の処理ユニットによって共用される前記共通の記憶場所へのアクセスを必要とする場合、前記記憶域オペランド要求の処理を抑制することを含む、請求項１に記載の方法。
【請求項３】
前記方法が処理ユニットによって行われ、前記処理ユニットが、前記記憶域オペランド要求が前記処理ユニットのプライベート・キャッシュにヒットするかどうかを更に判定し、そして前記記憶域オペランド要求が前記プライベート・キャッシュにおいてヒットを生成したことに基づいて、前記抑制することを行うことなく、前記プライベート・キャッシュを使用する前記記憶域オペランド要求の処理に進む、請求項２に記載の方法。
【請求項４】
前記抑制するステップが、前記記憶域オペランド要求と関連付けられた命令、または命令の操作がほぼ完了するまで前記記憶域オペランド要求の処理を抑制することを含む、請求項１に記載の方法。
【請求項５】
前記記憶域オペランド要求が、前記コンピューティング環境の前記複数の処理ユニットによって共用される前記共通の記憶場所へのアクセスを必要とする場合、前記記憶域オペランド要求を記憶域オペランド要求のキューに配置するステップを更に含む、請求項１に記載の方法。
【請求項６】
前記一時的に抑制するステップが、前記記憶域オペランド要求と関連付けられた命令、または命令の操作がほぼ完了するまで前記記憶域オペランド要求を記憶域オペランド要求の前記キューに保持することを含む、請求項５に記載の方法。
【請求項７】
前記記憶域オペランド要求を制約されていると識別するステップを更に含み、前記識別するステップが、次順命令のオペランドと関連付けられたアクセス目的を示すアクセス目的命令を、処理ユニットによって取得することを含み、前記アクセス目的が、前記記憶域オペランド要求の使用法が制約されていると示す、請求項１に記載の方法。
【請求項８】
前記アクセス目的命令が次命令アクセス目的命令であり、前記記憶域オペランド要求を制約されていると識別する前記ステップが、前記次命令アクセス目的命令内に制約アクセス目的コードを設けることを含む、請求項７に記載の方法。
【請求項９】
前記記憶域オペランド要求が、命令または命令の操作と関連付けられた投機的記憶域オペランド要求である、請求項１に記載の方法。
【請求項１０】
請求項１ないし９のいずれかに記載の方法の全ての前記ステップを実施するために適合された手段を備えるシステム。
【請求項１１】
コンピュータ・プログラムであって、前記コンピュータ・プログラムがコンピュータ・システムで実行されると、請求項１ないし９のいずれかに記載の方法の全ての前記ステップを実施するための命令を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
１つまたは複数の態様が、制約された記憶域オペランド要求の処理を一時的に抑制することにより、コンピューティング環境内の処理を一時的に抑制することにより、容易にする方法、システムおよびコンピュータ・プログラムに関し、特にそのような処理を改善することに関する。
【背景技術】
【０００２】
多重処理コンピューティング環境において、中央処理装置（ＣＰＵ）またはコアなどの複数の処理ユニットが接続されて、共通の主記憶場所などの共通記憶域へのアクセスを共用する。構成全体の記憶階層は、各処理ユニットにローカルなキャッシュの様々なレベル、いくつかの処理ユニット間で共用されるキャッシュの様々なレベル、および主記憶域を含んでもよい。処理ユニットが記憶場所を更新することになるとき、記憶域のラインが記憶階層によって処理ユニットに転送され、そしてラインは、更新を行う処理ユニットにローカルであるキャッシュ・レベル内で排他的に保持される。記憶域のラインが処理ユニットによって排他的に保持されている間、他の処理ユニットは、ラインが解放されて、もはやいかなる処理ユニットによっても排他的に保持されなくなる後まで、記憶域のそのラインを更新するまたは読み取るのを許可されない。
【０００３】
パイプライン処理、スーパースカラ、アウト・オブ・オーダー実行および分岐予測など、個々の処理ユニット性能を強化すると意図される処理ユニット特徴は、結果として投機的メモリ要求になることがある。投機的要求とは、特定のプログラム経路を完了することが必要とされてもされなくてもよいものである。要求が必要とされるか否かを判定する条件は、投機的要求が起動される時点では決定されていない。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】"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
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、制約された記憶域オペランド要求の処理を一時的に抑制することにより、コンピューティング環境内の処理を一時的に抑制することにより、容易にする方法、システムおよびコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【０００６】
先行技術の或る欠点が克服され、そして１つまたは複数の態様において、請求項１に記載のコンピューティング環境における処理を容易にする方法、ならびに対応するシステムおよびコンピュータ・プログラムの提供を通じて、追加の利点が提供される。
【０００７】
有利には、コンピューティング環境の複数の処理ユニットによって共用される共通の記憶場所に対応する特定の記憶域オペランド要求またはアクセスが制約されるべきであることをプログラムが処理ユニットに信号で伝える機構（または能力）を提供することによって、コンピュータ環境処理が強化される。特定の記憶域オペランド要求を制約されていると識別したことに基づいて、識別された記憶域オペランドの処理が処理ユニットにプライベートなキャッシュを使用して達成されることができない場合、処理ユニットは記憶域オペランド要求の処理を延期する。処理は、識別された記憶域オペランドを特定した命令（または命令の操作）より前の命令が処理を完了するまで延期（または一時的に抑制）されてもよい。これは、有利には、制約されていると識別された記憶域オペランド・アクセスが、必要とされるときに行われるだけであり、そして記憶域オペランド要求がプライベート・キャッシュだけを使用して達成されることができない場合、投機的に行われないことを確実にする。有利には、結果として、共通の共用記憶域のラインがコンピューティング環境を非生産的に動き回る回数が低減されて、それによって全体のシステム性能を上昇させてもよい。
【０００８】
１つまたは複数の実装において、一時的に抑制することは、記憶域オペランド要求が、記憶域オペランド要求を処理するために、コンピューティング環境の複数の処理ユニットによって共用される共通の記憶場所へのアクセスを必要とする場合、記憶域オペランド要求の処理を抑制することを含む。より詳細には、本方法は、処理ユニットによって行われてもよく、そして処理ユニットは、記憶域オペランド要求が処理ユニットのプライベート・キャッシュにヒットするかどうかを判定してもよく、そして記憶域オペランド要求がプライベート・キャッシュにおいてヒットを生成したことに基づいて、抑制することを行うことなく、プライベート・キャッシュを使用する記憶域オペランド要求の処理に進んでもよい。
【０００９】
１つまたは複数の実施形態において、一時的に抑制することは、記憶域オペランド要求と関連付けられた命令、または命令の操作がほぼ完了するまで記憶域オペランド要求の処理を抑制することを含む。強化された実施形態において、本方法は、記憶域オペランド要求が、コンピューティング環境の複数の処理ユニットによって共用される共通の記憶場所へのアクセスを必要とする場合、記憶域オペランド要求を記憶域オペランド要求のキューに配置することを更に含んでもよい。例として、一時的に抑制することは、記憶域オペランド要求と関連付けられた命令、または命令の操作がほぼ完了するまで記憶域オペランド要求を記憶域オペランド要求のキューに保持することを含んでもよい。
【００１０】
１つまたは複数の実装において、本方法は、記憶域オペランド要求を制約されていると識別することを更に含んでもよい。識別することは、次順命令（next sequential 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に記載されている。ＰＯＷＥＲ  ＡＲＣＨＩＴＥＣＴＵＲＥは、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社の登録商標である。
【００２０】
コンピューティング環境は、また、インテル（Ｒ）ｘ８６アーキテクチャを含むがこれに限定されない、他のアーキテクチャに基づいてもよい。他の例も存在する。
【００２１】
図１に図示されるように、コンピューティング環境１００は、例えば、多数の他の汎用または専用コンピューティング・システム環境または構成と動作する、例えば、コンピュータ・システム／サーバ１２を有するノード１０を含む。コンピュータ・システム／サーバ１２との使用に適するであろう周知のコンピューティング・システム、環境または構成あるいはその組合せの例としては、パーソナル・コンピュータ（ＰＣ）システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベース・システム、セット・トップ・ボックス、プログラム可能な民生用電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
【００２２】
コンピュータ・システム／サーバ１２は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で記載されてもよい。一般に、プログラム・モジュールは、特定のタスクを行う、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含んでもよい。コンピュータ・システム／サーバ１２は、通信ネットワークを通じて連結されるリモート処理デバイスによってタスクが行われる分散クラウド・コンピューティング環境を含むがこれに限定されない、多くのコンピューティング環境で実施されてもよい。分散クラウド・コンピューティング環境において、メモリ記憶デバイスを含むローカルとリモートの両方のコンピュータ・システム記憶媒体にプログラム・モジュールが設けられてもよい。
【００２３】
図１に図示されるように、コンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形態で図示される。コンピュータ・システム／サーバ１２の部品は、１つまたは複数のプロセッサまたは処理ユニット１６、システム・メモリ２８、およびシステム・メモリ２８を含む様々なシステム部品をプロセッサ１６に結合するバス１８を含んでもよいが、これらに限定されない。
【００２４】
バス１８は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィクス・ポート、および各種のバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、数種類のバス構造のいずれかの１つまたは複数を表す。限定でなく、例として、そのようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ）ローカル・バスおよびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスを含む。
【００２５】
コンピュータ・システム／サーバ１２は、典型的に各種のコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ１２によってアクセス可能であるいかなる入手可能な媒体であってもよく、そしてそれは、揮発性と不揮発性の両方の媒体、取外し可能と取外し不可能の両方の媒体を含む。
【００２６】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０またはキャッシュ・メモリ３２あるいはその両方など、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１２は、他の取外し可能／取外し不可能な揮発性／不揮発性コンピュータ・システム記憶媒体を更に含んでもよい。単に例として、取外し不可能な不揮発性磁気媒体（図示されず、典型的に「ハード・ドライブ」と呼ばれる）から読み取り、それに書き込むために、記憶システム３４が設けられることができる。図示されないが、取外し可能な不揮発性磁気ディスク（例えば、「フロッピー・ディスク」）から読み取り、それに書き込むための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたは他の光媒体などの取外し可能な不揮発性光ディスクから読み取り、またはそれに書き込むための光ディスク・ドライブが設けられることができる。そのような例において、各々は、１つまたは複数のデータ媒体インタフェースによってバス１８に接続されることができる。更に描かれかつ下記されることになるように、メモリ２８は、本発明の実施形態の機能を実施するように構成されるプログラム・モジュールの集合（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含んでもよい。
【００２７】
プログラム・モジュール４２の集合（少なくとも１つ）を有するプログラム／ユーティリティ４０が、限定でなく、例として、オペレーティング・システム１７、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データと同様に、メモリ２８に記憶されてもよい。オペレーティング・システム、１つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データの各々またはその何らかの組合せがネットワーキング環境の実装を含んでもよい。プログラム・モジュール４２は、一般に、本明細書に記載されるように、本発明の実施形態の機能または方法論あるいはその両方を実施する。
【００２８】
コンピュータ・システム／サーバ１２は、キーボード、ポインティング・デバイス、ディスプレイ２４等などの１つもしくは複数の外部デバイス１４；ユーザがコンピュータ・システム／サーバ１２と対話することを可能にする１つもしくは複数のデバイス；またはコンピュータ・システム／サーバ１２が１つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス（例えば、ネットワーク・カード、モデム等）；あるいはその組合せとも通信してもよい。そのような通信は、入出力（Ｉ／Ｏ）インタフェース２２を介して発生することができる。更にまた、コンピュータ・システム／サーバ１２は、ネットワーク・アダプタ２０を介して、ローカル・エリア・ネットワーク（ＬＡＮ）、一般のワイド・エリア・ネットワーク（ＷＡＮ）または公衆ネットワーク（例えば、インターネット）あるいはその組合せなどの１つまたは複数のネットワークと通信することができる。描かれるように、ネットワーク・アダプタ２０はバス１８を介してコンピュータ・システム／サーバ１２のその他の部品と通信する。図示されないが、コンピュータ・システム／サーバ１２と併せて、他のハードウェアまたはソフトウェア部品あるいはその両方が使用され得ることが理解されるべきである。例としては：マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブおよびデータ保存用記憶システム等を含むが、これらに限定されない。
【００２９】
一例として、処理ユニット１６は、命令を実行するために使用される複数の機能部品を含んでもよい。これらの機能部品は、例えば、実行されることになる命令をフェッチする命令フェッチ部品；フェッチされた命令をデコードする命令デコード・ユニット；デコードされた命令を実行する命令実行部品；必要に応じて、命令実行のためにメモリにアクセスするメモリ・アクセス部品；および実行された命令の結果を提供するライト・バック部品を含んでもよい。これらの部品の１つまたは複数が、本発明の態様に従って、以下に更に記載されるように、制約されていると識別される記憶域オペランド要求の抑制、または遅延処理を実装するために使用されてもよい。
【００３０】
処理ユニット１６は、１つの実施形態において、機能部品の１つまたは複数によって使用されることになる１つまたは複数のレジスタも含む。
【００３１】
本発明の１つまたは複数の態様を組み込んで使用するコンピューティング環境の別の例が図２を参照しつつ記載される。１つの例において、コンピューティング環境はここでも、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供される、上記参照したｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づいてもよい。別の例において、コンピューティング環境は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供される、上記参照したＰｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅに基づいてもよい。コンピューティング環境は、また、インテル６４およびＩＡ−３２アーキテクチャを含むがこれらに限定されない、他のアーキテクチャに基づいてもよい。他の例も存在する。
【００３２】
図２を参照すると、１つの例において、コンピューティング環境２００は、１つまたは複数の高次キャッシュ２０５に結合される、中央処理装置（ＣＰＵ）などの少なくとも１つの処理ユニット（ＰＵ）を含む。中央処理装置１６は、例えば、データを要求および消費する１つまたは複数の実行ユニット２０１を含む。実行ユニット２０１は、ロード／ストア・ユニット（ＬＳＵ）２０２に結合されており、それはロード／ストア・キュー（ＬＳＱ）２０３を含む。ロード／ストア・ユニット２０２は、プリフェッチされたデータを取り出す、またはデータがメモリ・サブシステムもしくは高次キャッシュからフェッチされるようにするメモリ・アクセス操作（ロードおよびストア）を発行する。ＬＳＵ２０２は、例えば、例として変換索引バッファ（ＴＬＢ）または実効対実アドレス変換テーブル（ＥＲＡＴ）などの変換メカニズムを介してローカル・キャッシュ２０４に結合されてもよい。
【００３３】
処理ユニット１６は、例えば、Ｌ１データ・キャッシュを含んでもよい、ローカル・キャッシュ２０４；単一の２次（Ｌ２）キャッシュまたは複数の他の連続番号の高次、例えば、Ｌ３、Ｌ４を含んでもよい、１つまたは複数の高次キャッシュ２０５；メモリ２１５；およびメモリ２１５へのアクセスを制御する、関連メモリ・コントローラ２１０を含むメモリ階層に結合されて、それと通信する。ローカル・キャッシュ２０４は、プリフェッチされるデータ（またはデータ・ストリームあるいはその両方）のためのプリフェッチ・バッファの役目を果たす。ローカル・キャッシュ２０４は、対応ロード・ミス・キュー（ＬＭＱ）を有しており、それをキャッシュが活用して進行中のプリフェッチ要求についての情報を保存する。
【００３４】
更に、１つの実施形態において、ローカル・キャッシュ２０４は、関連キャッシュ・ディレクトリを有してもよく、それはキャッシュの一部として実装されても、またはそこから別々に維持されてもよい。キャッシュ・ディレクトリは、ローカル・キャッシュにおける各キャッシュ・ラインに対するタグを含んでもよい。タグは、キャッシュ・ラインにおけるデータの実または絶対アドレスの少なくとも一部の他に、データが排他的に保持されているか共用されているか等などの状況情報；それが最も最近に使用されたか最も過去に使用されたかその間のどこかでか等などのデータの使用；または他の状況情報；あるいはその組合せを含む、キャッシュ・ラインについての情報を提供する。タグは、キャッシュ・ラインにおけるデータに関する追加情報も含んでもよい。各キャッシュ・レベルは、関連キャッシュ・ディレクトリ、すなわち、それ自体のディレクトリか共用ディレクトリかを有してもよい。
【００３５】
メモリ階層例に加えて、コンピューティング環境２００は、処理ユニット１６の観点からメモリ階層の一部を形成する追加の記憶デバイスも含んでもよい。記憶デバイスは、フロッピー・ディスク、ハード・ドライブ、ＣＤ−ＲＯＭまたはＤＶＤなどの１つまたは複数の電子記憶媒体であってもよい。ＣＰＵ１６は、例として、バスまたは直接チャネルあるいはその両方を介してを含め、様々なメカニズムによってメモリ階層内の上記のデバイスの各々と通信する。
【００３６】
バスは、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィクス・ポート、および各種のバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、数種類のバス構造のいずれかの１つまたは複数を表してもよい。限定でなく、例として、そのようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ）ローカル・バスおよびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスを含む。
【００３７】
更なる実施形態において、本明細書に開示される処理は、図３を参照しつつ下記されるものなどのマルチプロセッサ環境で使用されてもよい。１つの例において、マルチプロセッサ環境３００は、複数のコア３０２ａ．．．３０２ｎを含む。各コアは、Ｌ１キャッシュ３０６ａ、３０６ｎなどのローカル・キャッシュを含む少なくとも１つのハードウェア・スレッドまたは処理ユニット３０４ａ、３０４ｎを含む。各コア３０２ａ、３０２ｎは、０個以上の高次プライベート・キャッシュ（例えば、Ｌ２キャッシュ）に結合される。追加的に、マルチプロセッサ環境３００は、コア間で共用される、より詳細には、処理ユニット間で共用される、Ｌ３またはＬ４キャッシュあるいはその両方などの０個以上の共用キャッシュ３１０を含む。他のトポロジも存在してもよい。
【００３８】
マルチプロセッサ環境（または処理ユニットの部分集合）における各処理ユニットは、利用可能であれば、共用キャッシュの１つまたは複数を含むキャッシュの１つまたは複数に問い合わせて選択データのキャッシュ常駐状況または他の情報あるいはその両方を取得するために使用されることになる問合せ機能も含んでもよい。
【００３９】
言及したように、本発明の１つまたは複数の態様に従って、コンピューティング環境内の処理を強化するための機構が本明細書で提供される。図４に例示されるように、本機構は、コンピューティング環境の複数の処理ユニットによって共用される共通の記憶場所に対する記憶域オペランド要求が制約されているかどうかを判定する能力４００を含んでもよい。オペランド要求が制約されていると判定したことに基づいて、記憶域オペランドは一時的に抑制されてもよい、すなわち、記憶域オペランド要求に従う共通の記憶場所への１つまたは複数のアクセス問合せが延期されてもよい４１０。
【００４０】
１つまたは複数の実装において、記憶域オペランド要求を抑制することは、記憶域オペランド要求と関連付けられた命令、または命令の操作がほぼ完了するまで記憶域オペランド要求の処理を抑制することを含んでもよい。抑制することは、記憶域オペランド要求が、記憶域オペランド要求を処理するために、コンピューティング環境の複数の処理ユニットによって共用される共通の記憶域へのアクセスを必要とする場合に発生してもよい。更に、処理を実装する処理ユニットが、記憶域オペランド要求が処理ユニットのプライベート・キャッシュにヒットするかどうかを更に判定してもよく、そして記憶域オペランド要求がプライベート・キャッシュにおいてヒットを生成したことに基づいて、抑制することを行うことなく、記憶域オペランド要求の処理に進んでもよい。
【００４１】
１つまたは複数の実装において、記憶域オペランド要求は、記憶域オペランド要求が、コンピューティング環境の複数の処理ユニットによって共用される共通の記憶場所へのアクセスを必要とする場合、記憶域オペランド要求のキューに置かれてもよい。例として、一時的に抑制することは、記憶域オペランド要求と関連付けられた命令または命令の操作がほぼ完了するまで記憶域オペランド要求を記憶域オペランド要求のキューに、例えば、ロード記憶ユニットに保持することを含んでもよい。
【００４２】
加えて、本機構は、記憶域オペランド要求を制約されていると識別する能力を含んでもよい。識別することは、次順命令のオペランドと関連付けられたアクセス目的を示すアクセス目的命令を、処理ユニットによって取得することを含んでもよい。アクセス目的は、記憶域オペランド要求の使用法を制約されていると示してもよい。１つまたは複数の実装において、アクセス目的命令は、次命令アクセス目的命令であってもよく、そして記憶域オペランド要求の制約されているとの識別は、本明細書に更に記載されるように、次命令アクセス目的命令内に制約アクセス目的コードを設けることを含んでもよい。
【００４３】
１つまたは複数の実施形態において、記憶域オペランド要求は、命令または命令の操作と関連付けられた投機的記憶域オペランド要求であり、ここで命令は、命令セットアーキテクチャにおけるような、アーキテクト命令を指してもよく、そして命令の操作は、解読されることができる設計された命令の部品などのマイクロ操作を指してもよい。
【００４４】
図５は、本発明の１つまたは複数の態様に従ってプロセス・フローのより詳細な実施形態を描く。図示されるように、処理ユニットは、命令をフェッチし５００、そして命令をデコードして、例えば、オペランド関連信号、実行ユニット（ＬＳＵ、ＦＸＵ等）、「制約」指定等を判定してもよい５０５。言及したように、制約指定を提供する能力は、命令セット・アーキテクチャ（ＩＳＡ）で実装されてもよく、その一例が図６〜８を参照しつつ下記される。
【００４５】
命令は実行のためにキューに入れられ５１０、そして処理ユニットは、命令の発行準備ができているかどうかを判定する５１５。「いいえ」であれば、命令はキュー５１０に留まる。そうでなければ、命令は実行ユニットに発行される。この例において、命令は、記憶域オペランド要求またはアクセスを含むと仮定されて、ロード・ストア・ユニット（ＬＳＵ）５０１に発行される。
【００４６】
提供される例において、ＬＳＵ５０１は、記憶域オペランド・アドレス５３０を決定し、そして１つまたは複数のローカルまたはプライベート・キャッシュから処理ユニットへの記憶域オペランド・アクセスを要求する５３５。処理ユニットは、要求がローカル・キャッシュにヒットするかミスするかを判定する５４０。キャッシュ・ヒットがあれば、処理ユニットは標準命令処理を続ける。しかしながら、キャッシュ・ミスがあれば、命令はキュー５１０に戻され、そして命令と関連付けられた記憶域オペランド要求は、考え得る投機的性能のために記憶域オペランド要求のキューに配置される。
【００４７】
描かれる実装において、ＬＳＵ５０１は、記憶域オペランド要求のキュー５４５における次記憶域オペランド要求が制約されていると指定されているかどうかを判定する５５０。「いいえ」であれば、処理ユニットは、処理ユニットから外部の記憶階層へのアクセスを要求する、すなわち、コンピューティング環境の複数の処理ユニットによって共用される共通の記憶場所へのアクセスを要求する。記憶域オペランド要求が制約されていると指定されていれば、処理ユニットは、要求と関連付けられた命令、または命令の操作がほぼ完了する（ＮＴＣ）かどうかを判定する５５５。対応命令が実行のための命令のキューにおいてほぼ完了する場合、処理ユニットは、処理ユニットに外部の記憶階層にアクセス問合せを送る。そうでなければ、記憶域オペランド要求は、記憶域オペランド要求のキュー５４５に戻されて記憶域オペランド要求を一時的に抑制する。抑制することは、要求と関連付けられた命令（または操作）がほぼ完了するまで続き、その時点で、要求は結果として、所望の共通の記憶場所へのアクセスのために処理ユニットに外部の記憶階層への問合せになる。
【００４８】
本発明の１つまたは複数の実施形態に従って使用されることができる命令形式の１つの実施形態が図６、７および８を参照しつつ下記される。図６において、次命令アクセス目的（ＮＩＡＩ）命令として知られている命令形式が描かれる。この命令形式は、これが次命令アクセス目的命令であることを示す操作コード・フィールド６０１を含んでもよい。追加的に、予備フィールド６０２が設けられてもよく、１つまたは複数の実施形態においてゼロを含んでもよい。命令形式は、アクセス目的制御フィールド６０３（Ｉ１）および別のアクセス目的制御フィールド６０４（Ｉ２）などのフィールドまたはオペランドも含んでもよい。
【００４９】
この命令形式に関して、用語一次アクセス・オペランドは、命令の最低番号の記憶域オペランドを意味する。同様に、用語二次アクセス・オペランドは、命令の次に最低番号の記憶域オペランドを意味する。これらの用語は、用語第１のオペランドおよび第２のオペランドとは、たとえ何らかの相関があるとしても、同じ意味を有しない。
【００５０】
Ｉ１  ６０３およびＩ２  ６０４フィールドにおける制御を条件として、ＣＰＵには、次順命令の一次アクセスおよび二次アクセス・オペランドの一方または両方に対する将来のアクセス目的が伝えられる。次順命令は、ＮＩＡＩ命令の後に取り出されて実行される命令であってもよい。Ｉ１  ６０３フィールドは、次順命令の一次アクセス・オペランドに対するアクセス目的をＣＰＵに伝えるコードを含んでもよい。Ｉ２  ６０４フィールドは、次順命令の二次アクセス・オペランドに対するアクセス目的をＣＰＵに伝えるコードを含んでもよい。次順命令が単一の記憶域オペランドだけを有する場合、Ｉ２  ６０４フィールドは無視されてもよい。
【００５１】
命令形式の１つの実施形態は、単一のアクセス目的フィールドを含んでもよい。命令形式の別の実施形態は、２つのアクセス目的フィールドを含んでもよい。命令形式の別の実施形態は、複数のアクセス目的フィールドを含んでもよい。命令形式の更に別の実施形態は、後続の次順命令の数を指定する値を含むフィールドまたはオペランドを含んでもよい。アクセス目的制御フィールドＩ１  ６０３およびＩ２  ６０４は、図７に描かれるような形式６１０を有してもよく、ここでＩ１  ６０３およびＩ２  ６０４フィールドの設定数のビットが、次順命令の対応オペランドに対するアクセス目的をＣＰＵに伝えるコードとして使用される符号なし整数を含む。
【００５２】
本発明の１つまたは複数の態様に従って、アクセス目的制御フィールドが「制約」値、例えば、値４を含む場合、次順命令の対応オペランド参照は、多重処理環境における共通の記憶領域に対してである。オペランドの処理がＣＰＵのローカル（またはプライベート）キャッシュ・レベルだけを使用して達成されることができない場合、ＣＰＵは、次順命令より前のいずれの命令も処理を完了する後まで外部記憶階層へのいかなる問合せも延期することが推奨される。有利には、次命令アクセス目的命令のための制約アクセス目的値は、構成の全体にわたって非常に争われる記憶場所に対する投機的要求を回避するために使用されてもよく、それによって記憶サブシステムにおける不必要な操作を低減させる。
【００５３】
ＣＰＵのモデルに応じて、ＣＰＵは、必ずしもオペランドに対する全てのアクセス目的を認識することができるわけではない。ＣＰＵによって認識されないアクセス目的に関しては、命令は、ノー・オペレーションとして作用してもよい。ノー・オペレーションとは、命令が実際にはオペレーションを行わないときである。更に、次命令アクセス目的命令は、後続の命令オペランド・アクセスに影響するだけでよく、そしてそれは、例えば、後続の命令フェッチに影響しなくてもよい。
【００５４】
１つまたは複数の実施形態において、プログラムが、１つまたは複数のキャッシュ・ライン境界を横切ってもよい対応記憶域オペランドに関してアクセス目的値を使用してもしなくてもよいことが予想される。
【００５５】
更に、次命令アクセス目的の実行の後に、かつ次順命令の実行の前に割り込みが発生した場合、次命令アクセス目的はノー・オペレーションとして作用してもよく、そして特定されたアクセス目的は無視される。
【００５６】
１つまたは複数の実装において、制約アクセス目的値は、Ｉ１フィールドによって特定される一次アクセス・オペランドに関して使用されてもよい。
【００５７】
実施形態に係るフロー図の１つの実施形態が図８を参照しつつ記載される。図示されるように、１つまたは複数の実装において、ＣＰＵは、アクセス目的を示すアクセス目的命令を取得する７００。アクセス目的は、次順命令のオペランドと関連付けられてもよい。アクセス目的は、次順命令に後続の命令によってオペランドの使用法も示してもよい。ＣＰＵは、次いでアクセス目的命令を実行する７１０。１つの実施形態において、処理ユニットは、アクセス目的を内部に、例えば、内部メモリまたは内部制御レジスタに格納することによって、それを記憶してもよい。ＣＰＵは、次順命令を取得する７２０。次順命令は実行され、そして実行の一部として、処理ユニット挙動がアクセス目的命令のアクセス目的に基づいて制御される７３０。
【００５８】
１つの実施形態において、制御される処理ユニット挙動が、例えば、アクセス目的命令を使用して記憶域オペランド要求が制約されているとプログラムによって判定または識別される場合に、記憶域オペランド要求の処理を選択的に抑制するように本明細書に記載される。記憶域オペランド要求を制約されていると識別することは、言及したように、１つまたは複数の実装において、アクセス目的命令の制御フィールドの１つまたは複数における指定アクセス目的コードを活用して達成されてもよい。
【００５９】
より詳細には、本明細書で言及されるアクセス目的値を特定することによって、記号アドレスＣＮＴＲ（例えば、構成における複数のＣＰＵ間で共用されるカウンタに対する記憶場所である）に関するＣＰＵのローカル・キャッシュ・レベルの外部の記憶階層に対する投機的問合せが提供されてもよい。ＣＰＵのローカル・キャッシュ・レベルの外部の記憶階層に対する問合せがＣＮＴＲを処理することを要求される場合、要求と関連付けられた命令または命令の操作より前の命令が処理を完了するまで、問合せは延期される。ＣＮＴＲに対する複数のＣＰＵ間の問合せの数が最小化されると、ＣＮＴＲを更新するために各ＣＰＵによって必要とされる時間も最小化される。
【００６０】
図９および１０を参照すると、本発明の１つまたは複数の態様に従って、コンピューティング環境内の処理を容易にすること（８００）は：コンピューティング環境の複数の処理ユニットによって共用される共通の記憶場所に対する記憶域オペランド要求が制約されているかどうかを判定することと；記憶域オペランド要求が制約されていると判定したことに基づいて、記憶域オペランド要求に従う共通の記憶場所へのアクセスを要求することを一時的に抑制することとを含む。
【００６１】
一時的に抑制することは、記憶域オペランド要求が、記憶域オペランド要求を処理するために、コンピューティング環境の複数の処理ユニットによって共用される共通の記憶場所へのアクセスを必要とする場合、記憶域オペランド要求の処理を抑制すること（８０５）を含んでもよい。更に、処理することが処理ユニットによって行われる場合、処理ユニットは、記憶域オペランド要求が処理ユニットのプライベート・キャッシュにヒットするかどうかを更に判定してもよく、そして記憶域オペランド要求がプライベート・キャッシュにおいてヒットを生成したことに基づいて、抑制することを行うことなく、記憶域オペランド要求の処理に進んでもよい（８１０）。
【００６２】
加えて、抑制することは、記憶域オペランド要求と関連付けられた命令、または命令の操作がほぼ完了するまで記憶域オペランド要求の処理を抑制すること（８１５）を含んでもよい。これは、例えば、記憶域オペランド要求が、コンピューティング環境の複数の処理ユニットによって共用される共通の記憶場所へのアクセスを必要とする場合、記憶域オペランド要求を記憶域オペランド要求のキューに配置すること（８２０）を含んでもよい。例として、一時的に抑制することは、記憶域オペランド要求と関連付けられた命令または命令の操作がほぼ完了するまで記憶域オペランド要求を記憶域オペランド要求のキューに保持すること（８２５）を含んでもよい。
【００６３】
１つまたは複数の実装において、処理を容易にすることは、記憶域オペランド要求を制約されていると識別すること（８３０）を更に含んでもよい。識別することは、次順命令のオペランドと関連付けられたアクセス目的を示すアクセス目的命令を、処理ユニットによって取得することを含んでもよい。アクセス目的指示は、記憶域オペランド要求の使用法が制約されていると示してもよい（８３０）。例えば、アクセス目的命令は、次命令アクセス目的命令であってもよく、そして記憶域オペランド要求を制約されていると識別することは、次命令アクセス目的命令内に制約アクセス目的コードを設けること（８３５）を含んでもよい。
【００６４】
１つまたは複数の実装において、記憶域オペランド要求は、命令または命令の操作と関連付けられた投機的記憶域オペランド要求であってもよい（８４０）。
【００６５】
１つまたは複数の態様を組み込んで使用するコンピューティング環境の別の実施形態が図１１を参照しつつ記載される。この例において、例えば、コンピューティング環境９００は、例えば１つまたは複数のバス９０８または他の接続あるいはその両方を介して互いに結合される、ネイティブ中央処理装置（ＣＰＵ）９０２、メモリ９０４および１つまたは複数の入出力デバイスまたはインタフェース９０６あるいはその両方を含む。例として、コンピューティング環境９００は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供されるＰｏｗｅｒＰＣ（Ｒ）プロセッサもしくはｐＳｅｒｉｅｓサーバ；カリフォルニア州パロアルトのヒューレット・パッカード社によって提供されるインテルＩｔａｎｉｕｍ（Ｒ）ＩＩプロセッサ搭載ＨＰ  Ｓｕｐｅｒｄｏｍｅ；またはインターナショナル・ビジネス・マシーンズ社、ヒューレット・パッカード社、インテル社、オラクル社その他によって提供されるアーキテクチャに基づく他のマシン；あるいはその組合せを含んでもよい。
【００６６】
ネイティブ中央処理装置９０２は、環境内の処理の間に使用される１つもしくは複数の汎用レジスタまたは１つもしくは複数の専用レジスタあるいはその両方などの１つまたは複数のネイティブ・レジスタ９１０を含む。これらのレジスタは、任意の特定の時点での環境の状態を表す情報を含む。
【００６７】
その上、ネイティブ中央処理装置９０２は、メモリ９０４に記憶される命令およびコードを実行する。１つの特定の例において、中央処理装置は、メモリ９０４に記憶されるエミュレータ・コード９１２を実行する。このコードは、１つのアーキテクチャで構成されたコンピューティング環境が別のアーキテクチャをエミュレートすることを可能にする。例えば、エミュレータ・コード９１２は、ＰｏｗｅｒＰＣプロセッサ、ｐＳｅｒｉｅｓサーバ、ＨＰ  Ｓｕｐｅｒｄｏｍｅサーバその他などの、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ以外のアーキテクチャに基づくマシンが、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅをエミュレートし、かつｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づいて開発されたソフトウェアおよび命令を実行するようにする。
【００６８】
エミュレータ・コード９１２に関する更なる詳細が図１２を参照しつつ記載される。図１１および１２を集合的に参照すると、メモリ９０４に記憶されるゲスト命令９５０が、ネイティブＣＰＵ９０２のそれ以外のアーキテクチャで実行されるように開発されたソフトウェア命令（例えば、マシン命令に相関する）を含む。例えば、ゲスト命令９５０、はｚ／Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサで実行するように設計されたかもしれないが、その代わりに、ネイティブＣＰＵ９０２でエミュレートされており、それは、例えば、インテルＩｔａｎｉｕｍ  ＩＩプロセッサであってもよい。１つの例において、エミュレータ・コード９１２は、メモリ９０４から１つまたは複数のゲスト命令９５０を取得し、そして任意選択で取得された命令のためのローカル・バッファリングを提供する命令フェッチ・ルーチン９５２を含む。それは、取得されたゲスト命令の型を判定し、そしてゲスト命令を１つまたは複数の対応ネイティブ命令９５６へ変換する命令変換ルーチン９５４も含む。この変換は、例えば、ゲスト命令によって行われることになる機能を識別すること、およびネイティブ命令を選んでその機能を行うことを含む。
【００６９】
更に、エミュレータ・コード９１２は、ネイティブ命令が実行されるようにするエミュレーション制御ルーチン９６０を含む。エミュレーション制御ルーチン９６０は、ネイティブＣＰＵ９０２が、１つまたは複数の以前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行し、そのような実行の結びに、命令フェッチ・ルーチンに制御を返して、次のゲスト命令または一群のゲスト命令の取得をエミュレートするようにしてもよい。ネイティブ命令９５６の実行は、メモリ９０４からレジスタへデータをロードすること；レジスタからメモリに逆にデータを格納すること；または変換ルーチンによって決定される、何らかの型の算術もしくは論理演算を行うことを含んでもよい。
【００７０】
各ルーチンは、例えば、ソフトウェアで実装され、それは、メモリに記憶されてネイティブ中央処理装置９０２によって実行される。他の例において、ルーチンまたは演算の１つまたは複数がファームウェア、ハードウェア、ソフトウェアまたはその何らかの組合せで実装される。エミュレートされるプロセッサのレジスタは、ネイティブＣＰＵのレジスタ９１０を使用してまたはメモリ９０４における場所を使用することによってエミュレートされてもよい。実施形態において、ゲスト命令９５０、ネイティブ命令９５６およびエミュレータ・コード９１２は、同じメモリに存在してもよく、または異なるメモリ・デバイス間で分配されてもよい。
【００７１】
本明細書で使用される場合、ファームウェアは、例えば、プロセッサのマイクロコード、ミリコードまたはマクロコードあるいはその組合せを含む。同用語は、例えば、高レベル・マシン・コードの実装で使用されるハードウェア・レベル命令またはデータ構造あるいはその両方を含む。１つの実施形態において、ファームウェアは、例えば、下部ハードウェアに特有の信頼できるソフトウェアまたはマイクロコードを含み、かつシステム・ハードウェアへのオペレーティング・システム・アクセスを制御するマイクロコードとして典型的に配布される専有コードを含んでもよい。
【００７２】
取得、変換および実行されるゲスト命令９５０は、例えば、本明細書に記載される命令の１つまたは複数である。１つのアーキテクチャ（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ）のである命令は、メモリからフェッチされ、変換され、そして別のアーキテクチャ（例えば、ＰｏｗｅｒＰＣ、ｐＳｅｒｉｅｓ、インテル等）の一連のネイティブ命令９５６として表現される。これらのネイティブ命令は、次いで実行されてもよい。
【００７３】
様々な例が提供されるが、特許請求される態様の思想から逸脱することなく変形が可能である。例えば、命令によって使用されるレジスタまたはフィールドあるいはその両方に含まれる値が、他の実施形態において、記憶場所等などの他の場所にあってもよい。多くの他の変形が可能である。
【００７４】
１つまたは複数の態様がクラウド・コンピューティングに関してもよい。
【００７５】
本開示がクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に詳述される教示の実装がクラウド・コンピューティング環境に限定されないことが事前に理解される。むしろ、本発明の実施形態は、現在知られている、または後に開発されるいずれの他の種類のコンピューティング環境と併せても実装されることが可能である。
【００７６】
クラウド・コンピューティングは、最小の管理労力またはサービスの提供者との相互作用で迅速にプロビジョニングおよび解放されることができる構成可能なコンピューティング・リソース（例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシンおよびサービス）の共用プールへの簡便でオンデマンドのネットワーク・アクセスを可能にするためのサービス配布のモデルである。このクラウド・モデルは、少なくとも５つの特性、少なくとも３つのサービス・モデルおよび少なくとも４つの展開モデルを含んでもよい。
【００７７】
特性は以下の通りである：
【００７８】
オンデマンド・セルフサービス：クラウド消費者が、サービスの提供者との人間相互作用を必要とすることなく必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を一方的にプロビジョニングすることができる。
【００７９】
ブロード・ネットワーク・アクセス：能力がネットワークを通じて利用可能であり、かつ異種シンまたはシック・クライアント・プラットフォーム（例えば、移動電話、ラップトップおよびＰＤＡ）による使用を促す標準メカニズムを通じてアクセスされる。
【００８０】
リソース・プーリング：提供者のコンピューティング・リソースがプールされて、マルチ・テナント・モデルを使用して複数の消費者に応対し、異なる物理および仮想リソースが需要に従って動的に割当ておよび再割当てされる。消費者が、提供されたリソースの正確な位置に関する制御または知識を全体的に有しないが、より高抽象化レベル（例えば、国、州またはデータ・センタ）で位置を特定することができ得るという点で、位置独立の感覚がある。
【００８１】
迅速弾性：能力が迅速かつ弾性的に、場合によっては自動的に、プロビジョニングされて急速に拡大し、そして迅速に解放されて急速に縮小することができる。消費者にとって、プロビジョニングに利用可能な能力はしばしば無限であるように見えて、いつでもいかなる量でも購入されることができる。
【００８２】
度数制：クラウド・システムは、サービスの種類（例えば、ストレージ、処理、帯域幅およびアクティブ・ユーザ・アカウント）に適切な中抽象化レベルで測定能力を活かすことによってリソース使用を自動的に制御および最適化する。リソース使用が監視、制御および報告されて、活用されるサービスの提供者にも消費者にも透明性を提供することができる。
【００８３】
サービス・モデルは以下の通りである：
【００８４】
サービスとしてのソフトウェア（ＳａａＳ）：消費者に提供される能力は、クラウド・インフラストラクチャで動く提供者のアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ（例えば、ウェブベースの電子メール）などのシン・クライアント・インタフェースを通じて様々なクライアント・デバイスからアクセス可能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージまたは個々のアプリケーション能力さえも含む下部クラウド・インフラストラクチャを管理または制御しないが、限られたユーザ特有のアプリケーション構成設定の可能性は除く。
【００８５】
サービスとしてのプラットフォーム（ＰａａＳ）：消費者に提供される能力は、提供者によってサポートされるプログラミング言語およびツールを使用して作成された消費者作成または獲得アプリケーションをクラウド・インフラストラクチャ上へ展開することである。消費者は、ネットワーク、サーバ、オペレーティング・システムまたはストレージを含む下部クラウド・インフラストラクチャを管理または制御しないが、しかし展開されたアプリケーションおよび場合により環境構成をホストしているアプリケーションに対する制御権を有する。
【００８６】
サービスとしてのインフラストラクチャ（ＩａａＳ）：消費者に提供される能力は、処理、ストレージ、ネットワーク、および消費者が、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアを展開して動かすことができる、他の基本的なコンピューティング・リソースをプロビジョニングすることである。消費者は、下部クラウド・インフラストラクチャを管理または制御しないが、しかしオペレーティング・システム、ストレージ、展開されたアプリケーションに対する制御権を有し、場合により選択ネットワーク部品（例えば、ホスト・ファイアウォール）の限られた制御権を有する。
【００８７】
展開モデルは以下の通りである：
【００８８】
プライベート・クラウド：クラウド・インフラストラクチャは組織のためだけに運営される。それは、組織または第三者によって管理されてもよく、そして構内にまたは構外に存在してもよい。
【００８９】
コミュニティ・クラウド：クラウド・インフラストラクチャはいくつかの組織によって共用され、そして懸念（例えば、任務、セキュリティ要件、規定およびコンプライアンス問題）を共用した特定のコミュニティをサポートする。それは、組織または第三者によって管理されてもよく、そして構内にまたは構外に存在してもよい。
【００９０】
パブリック・クラウド：クラウド・インフラストラクチャは一般大衆または大企業集団に利用可能であり、そしてクラウド・サービスを販売する組織によって所有される。
【００９１】
ハイブリッド・クラウド：クラウド・インフラストラクチャは、一意のエンティティのままであるが、しかしデータおよびアプリケーション・ポータビリティ（例えば、クラウド間の負荷平衡のためのクラウド・バースティング）を可能にする標準化または専有技術によって結合される２つ以上のクラウド（プライベート、コミュニティまたはパブリック）の合成である。
【００９２】
クラウド・コンピューティング環境は、無国籍、低結合、モジュラー性および意味論的相互運用性に焦点が合わされたサービスである。クラウド・コンピューティングの中心は、相互接続したノードのネットワークを備えるインフラストラクチャである。
１つのそのようなノードが、図１に描かれるノード１０である。
【００９３】
コンピューティング・ノード１０は、適切なクラウド・コンピューティング・ノードの単に１つの例であり、本明細書に記載される本発明の実施形態の使用または機能性の範囲に関していかなる限定も示唆するとは意図されない。とにかく、クラウド・コンピューティング・ノード１０は、上記された機能性のいずれも実装されるまたは行うあるいはその両方をすることが可能である。
【００９４】
ここで図１３を参照すると、例示的なクラウド・コンピューティング環境５０が描かれる。図示されるように、クラウド・コンピューティング環境５０は、例えば、携帯情報端末（ＰＤＡ）もしくはセルラ電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃまたは自動車コンピュータ・システム５４Ｎあるいはその組合せなどの、クラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信してもよい、１つまたは複数のコンピューティング・ノード１０を備える。ノード１０は、互いと通信してもよい。それらは、上記されたプライベート、コミュニティ、パブリックまたはハイブリッド・クラウド、あるいはその組合せなどの、１つまたは複数のネットワークで、物理的にまたは仮想的にグループ化されでもよい（図示せず）。これは、クラウド・コンピューティング環境５０が、クラウド消費者がローカル・コンピューティング・デバイス上のリソースを維持する必要がないサービスとしてインフラストラクチャ、プラットフォームまたはソフトウェアあるいはその組合せを提供するようにする。図１３に図示されるコンピューティング・デバイス５４Ａ−Ｎの種類が単に例示的であると意図され、そしてコンピューティング・ノード１０およびクラウド・コンピューティング環境５０が、任意の種類のネットワークまたはネットワーク・アドレス可能接続（例えば、ウェブ・ブラウザを使用する）あるいはその両方を通じて任意の種類のコンピュータ化デバイスと通信することができることが理解される。
【００９５】
ここで図１４を参照すると、クラウド・コンピューティング環境５０（図１３）によって提供される機能抽象化層の集合が図示される。図１４に図示される部品、層および機能が単に例示的であると意図され、そして本発明の実施形態がそれに限定されないことが事前に理解されるべきである。描かれるように、以下の層および対応機能が提供される：
【００９６】
ハードウェアおよびソフトウェア層６０は、ハードウェアおよびソフトウェア部品を含む。ハードウェア部品の例としては、メインフレーム６１；ＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャ・ベースのサーバ６２；サーバ６３；ブレード・サーバ６４；ストレージ・デバイス６５；ならびにネットワークおよびネットワーキング部品６６を含む。いくつかの実施形態において、ソフトウェア部品は、ネットワーク・アプリケーション・サーバ・ソフトウェア６７およびデータベース・ソフトウェア６８を含む。
【００９７】
仮想化層７０は、抽象化層を提供し、これから仮想エンティティの以下の例が提供されてもよい：仮想サーバ７１；仮想記憶域７２；仮想プライベート・ネットワークを含む、仮想ネットワーク７３；仮想アプリケーションおよびオペレーティング・システム７４；ならびに仮想クライアント７５。
【００９８】
１つの例において、管理層８０は、下記される機能を提供してもよい。リソース・プロビジョニング８１は、クラウド・コンピューティング環境内のタスクを行うために活用されるコンピューティング・リソースおよび他のリソースの動的調達を提供する。計量および価格決定８２は、クラウド・コンピューティング環境内でリソースが活用されるにつれてコスト追跡を、およびこれらのリソースの消費に対する課金または代金請求を提供する。１つの例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでもよい。セキュリティは、クラウド消費者およびタスクに対する識別情報検証の他に、データおよび他のリソースに対する保護を提供する。ユーザ・ポータル８３は、消費者およびシステム管理者に対してクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理８４は、必要とされるサービス・レベルが満たされるように、クラウド・コンピューティング・リソース割当ておよび管理を提供する。サービス・レベル合意（ＳＬＡ）計画および遂行８５は、ＳＬＡに従って将来の要件が予想されるクラウド・コンピューティング・リソースの事前手配および調達を提供する。
【００９９】
ワークロード層９０は、クラウド・コンピューティング環境が活用されることができる機能性の例を提供する。この層から提供されることができるワークロードおよび機能の例としては：マッピングおよびナビゲーション９１；ソフトウェア開発およびライフサイクル管理９２；仮想教室教育配信９３；データ解析処理９４；トランザクション処理９５；および命令処理９６を含む。
【０１００】
本発明は、任意の可能な技術詳細レベルの集積化のシステム、方法またはコンピュータ・プログラム製品あるいはその組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体を含んでもよい。
【０１０１】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶することができる有形デバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイスまたは上記の任意の適切な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体例の非網羅的な列挙としては、以下を含む：ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、パンチ・カードまたはそこに命令が記録される溝に隆起された構造などの機械的に符合化されたデバイス、および上記の任意の適切な組合せ。コンピュータ可読記憶媒体は、本明細書で使用される場合、電波もしくは他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通って伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通って伝送される電気信号など、それ自体一時的信号であるとは解釈されないものである。
【０１０２】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくはワイヤレス・ネットワークまたはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを備えてもよい。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そしてコンピュータ可読プログラム命令をそれぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体における記憶のために転送する。
【０１０３】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、またはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などといったオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む、１つもしくは複数のプログラミング言語の任意の組合せで書かれるソース・コードかオブジェクト・コードかであってもよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意の種類のネットワークを通じてユーザのコンピュータに接続されてもよく、または外部コンピュータに接続がなされてもよい（例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて）。いくつかの実施形態において、例えば、プログラマブル論理回路網、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）またはプログラマブル論理アレイ（ＰＬＡ）を含む電子回路網は、本発明の態様を行うために、コンピュータ可読プログラム命令の状態情報を活用して電子回路網を個人化することによってコンピュータ可読プログラム命令を実行してもよい。
【０１０４】
本発明の態様は、本発明の実施形態に係る方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート例またはブロック図あるいはその両方を参照しつつ本明細書に記載される。フローチャート例またはブロック図あるいはその両方の各ブロック、およびフローチャート例またはブロック図あるいはその両方におけるブロックの組合せがコンピュータ可読プログラム命令によって実装されることができることが理解されるであろう。
【０１０５】
これらのコンピュータ可読プログラム命令は、命令が、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行し、フローチャートまたはブロック図の、あるいはその両方のブロックに特定される機能／行為を実装するための手段を生じさせるように、汎用コンピュータ、専用コンピュータまたは他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを生成してもよい。これらのコンピュータ可読プログラム命令はまた、そこに命令が記憶されるコンピュータ可読記憶媒体が、フローチャートまたはブロック図の、あるいはその両方のブロックに特定される機能／行為の態様を実装する命令を含む製品を構成するように、コンピュータ、プログラマブル・データ処理装置または他のデバイスあるいはその組合せに特定の方式で機能するように指図することができるコンピュータ可読記憶媒体に記憶されてもよい。
【０１０６】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置または他のデバイス上で実行する命令が、フローチャートまたはブロック図の、あるいはその両方のブロックに特定される機能／行為を実装するように、コンピュータ、他のプログラマブル・データ処理装置または他のデバイスへロードされて、一連の動作ステップがコンピュータ、他のプログラマブル装置または他のデバイス上で行われてコンピュータ実装工程を生成させてもよい。
【０１０７】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態に係るシステム、方法およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性および動作を例示する。この点で、フローチャートまたはブロック図における各ブロックは命令のモジュール、セグメントまたは部分を表してもよく、それは特定された論理機能を実装するための１つまたは複数の実行可能命令を備える。いくつかの代替実装では、ブロックに示される機能は、図に示される順序と異なって生じてもよい。例えば、連続して図示される２つのブロックは、実際、実質的に並行して実行されてもよく、またはブロックは時には逆順に実行されてもよく、関与する機能性次第である。ブロック図またはフローチャート例の、あるいはその両方の各ブロック、およびブロック図またはフローチャート例における、あるいはその両方におけるブロックの組合せが、特定された機能または行為を行うか、または専用ハードウェアおよびコンピュータ命令の組合せを実施する専用ハードウェア・ベースのシステムによって実装されることができることも留意されるであろう。
【０１０８】
上記に加えて、１つまたは複数の態様が、顧客環境の管理を提案するサービス提供者によって提供、提案、展開、管理、実施等される。例えば、サービス提供者は、１人または複数の顧客のために１つまたは複数の態様を行うコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成、維持、サポート等することができる。代わりに、サービス提供者は、例として、会費または手数料あるいはその両方の合意の下で顧客から支払いを受けてもよい。追加的または代替的に、サービス提供者は、１人または複数の第三者への広告コンテンツの販売から支払いを受けてもよい。
【０１０９】
一つの態様では、アプリケーションは、１つまたは複数の実施形態を行うために展開されてもよい。一つの例として、アプリケーションの展開は、１つまたは複数の実施形態を行うように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【０１１０】
更なる態様として、コンピューティング・インフラストラクチャは、コンピューティング・システムへコンピュータ可読コードを組み込むことを含んで展開されてもよく、コードは、コンピューティング・システムと併せて１つまたは複数の実施形態を行うことが可能である。
【０１１１】
更なる態様として、コンピュータ・システムへコンピュータ可読コードを組み込むことを含むコンピューティング・インフラストラクチャを組み込むためのプロセスが提供されてもよい。コンピュータ・システムは、コンピュータ可読媒体を備え、コンピュータ媒体は、１つまたは複数の実施形態を含む。コードは、コンピュータ・システムと併せて１つまたは複数の実施形態を行うことが可能である。
【０１１２】
様々な実施形態が上記されたが、これらは単に例である。例えば、１つまたは複数の実施形態を組み込んで使用するために、他のアーキテクチャのコンピューティング環境が使用されることができる。更に、異なる命令、命令形式、命令フィールドまたは命令値あるいはその組合せが使用されてもよい。多くの変化が可能である。
【０１１３】
更に、他の種類のコンピューティング環境が利益を得ることができて使用されることができる。一例として、プログラム・コードを記憶または実行するあるいはその両方をするのに適するデータ処理システムが、システムバスを通じてメモリ素子に直接または間接的に結合される少なくとも２つのプロセッサを含んで、使用可能である。メモリ素子は、例えば、プログラム・コードの実際の実行中に利用されるローカル・メモリ、バルク・ストレージ、および実行中にバルク・ストレージからコードが検索されなければならない回数を低減させるために少なくとも一部のプログラム・コードの一時記憶を提供するキャッシュ・メモリを含む。
【０１１４】
入出力またはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブおよび他のメモリ媒体等を含むがこれらに限定されない）がシステムに直接か介在Ｉ／Ｏコントローラを通じてかで結合されることができる。システムにネットワーク・アダプタも結合されて、データ処理システムが介在プライベートまたはパブリック・ネットワークを通じて他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合されることを可能にしてもよい。モデム、ケーブル・モデムおよびイーサネット・カードは、利用可能な種類のネットワーク・アダプタのごく一部である。
【０１１５】
本明細書で使用される専門用語は単に特定の実施形態を記載する目的のためであり、限定的であるとは意図されない。本明細書で使用される場合、単数形「ａ（ある１つの）」、「ａｎ（ある１つの）」および「ｔｈｅ（その）」は、文脈が別途明示しない限り、複数形も含むと意図される。用語「ｃｏｍｐｒｉｓｅｓ（備える）」または「ｃｏｍｐｒｉｓｉｎｇ（備えている）」あるいはその両方は、本明細書で使用されるとき、明記された特徴、完全体、ステップ、動作、要素または部品あるいはその組合せの存在を特定するが、しかし１つまたは複数の他の特徴、完全体、ステップ、動作、要素、部品またはその群あるいはその組合せの存在または追加を排除しないことが更に理解されるであろう。
【０１１６】
以下の請求項における、もしあれば、全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為および等価物は、詳細に特許請求される他の特許請求される要素と併せて機能を行うために任意の構造、材料または行為を含むと意図される。１つまたは複数の実施形態の記載が、例示および説明の目的で提示されたが、網羅的または開示された形態に限定されるとは意図されない。多くの変更および変形が当業者に明らかであろう。実施形態は、様々な態様および実際的応用を最良に説明するためにかつ当業者が企図された特定の使用に適した様々な変更を伴う様々な実施形態を理解することを可能にするために選ばれて記載される。
【図１】
2020516970.tif 000003
【図２】
2020516970.tif 000004
【図３】
2020516970.tif 000005
【図４】
2020516970.tif 000006
【図５】
2020516970.tif 000007
【図６】
2020516970.tif 000008
【図７】
2020516970.tif 000009
【図８】
2020516970.tif 000010
【図９】
2020516970.tif 000011
【図１０】
2020516970.tif 000012
【図１１】
2020516970.tif 000013
【図１２】
2020516970.tif 000014
【図１３】
2020516970.tif 000015
【図１４】
2020516970.tif 000016
【国際調査報告】
2020516970.tif 000017
2020516970.tif 000018
2020516970.tif 000019