(57)【特許請求の範囲】
【請求項１】
コンピューティング環境において状態インジケータの更新を同期させるためのコンピュータ・プログラムであって、
第１のプロセッサにより、第２のプロセッサから、メモリ内に位置するアドレス変換構造の１つ又は複数のエントリの１つ又は複数の状態インジケータの保留中の更新をコミットするように前記第１のプロセッサに指示する同期要求を受信することと、
前記第１のプロセッサにより、前記同期要求の受信に基づいて、同期操作を実施して、前記１つ又は複数の状態インジケータの前記保留中の更新をコミットすることと、
前記同期操作の完了に基づいて、前記第１のプロセッサにより、完了を前記第２のプロセッサに示すことと、
を含む、コンピュータ・プログラム。
【請求項２】
前記１つ又は複数の状態インジケータは、変更インジケータと関連したメモリのユニットが更新されたかどうかを示す変更インジケータ、又は参照インジケータと関連した前記メモリのユニットにアクセスされたかどうかを示す参照インジケータのうちの少なくとも１つを含む、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記メモリのユニットはメモリのページを含み、前記アドレス変換構造はページ・テーブルを含み、前記変更インジケータ及び前記参照インジケータは、前記メモリのページに対応するページ・テーブル・エントリ内に位置する、請求項２に記載のコンピュータ・プログラム。
【請求項４】
前記１つ又は複数の状態インジケータの前記保留中の更新をコミットすることは、前記第１のプロセッサにより、前記第１のプロセッサのローカル構造内の前記変更インジケータ又は前記参照インジケータの変更値の少なくとも１つに基づいて、前記アドレス変換構造内の前記変更インジケータ又は前記参照インジケータのうちの少なくとも一方を更新することを含む、請求項２に記載のコンピュータ・プログラム。
【請求項５】
前記第１のプロセッサにより前記同期要求を受信することは、前記第２のプロセッサによる同期命令の発行に基づく、請求項１に記載のコンピュータ・プログラム。
【請求項６】
前記同期操作を実施することは、
前記第１のプロセッサのキューにおける、前記１つ又は複数の状態インジケータについての１つ又は複数の保留中の更新要求にマーク付けすることと、
前記キュー内の前記マーク付けされた１つ又は複数の保留中の更新要求に基づいて、前記アドレス変換構造の１つ又は複数のエントリを更新することと、
を含む、請求項１に記載のコンピュータ・プログラム。
【請求項７】
前記同期操作を実施することは、
前記同期要求の受信に基づいて、キュー内にマーカーを配置することであって、前記キューは、前記マーカーより前の、前記１つ又は複数の状態インジケータに対する１つ又は複数の保留中の更新要求を含む、配置することと、
前記マーカーより前の、前記キュー内の前記１つ又は複数の保留中の更新要求に基づいて、前記アドレス変換構造の１つ又は複数のエントリを更新することであって、前記同期操作の完了は、前記マーカーの到達に基づいて示される、更新することと、
を含む、請求項１に記載のコンピュータ・プログラム。
【請求項８】
前記コンピューティング環境は、特定の時間内に前記アドレス変換構造の更新が保証されないという点で、前記アドレス変換構造の非コヒーレントな更新のために構成される、請求項１に記載のコンピュータ・プログラム。
【請求項９】
前記同期要求を受信することは、同期を実施し、完了の表示を送るために、複数のプロセッサにより、前記同期要求を受信することを含む、請求項１に記載のコンピュータ・プログラム。
【請求項１０】
前記複数のプロセッサは、選択されたプロセッサのグループであり、前記選択されたプロセッサのグループは、特定のアドレス空間のパーティション化、グループ化、又は使用の１つ又は複数に基づいて選択される、請求項９に記載のコンピュータ・プログラム。
【請求項１１】
コンピューティング環境において状態インジケータの更新を同期させるためのコンピュータ・システムであって、
メモリと、
前記メモリと通信するプロセッサと、を含み、
第１のプロセッサにより、第２のプロセッサから、メモリ内に位置するアドレス変換構造の１つ又は複数のエントリの１つ又は複数の状態インジケータの保留中の更新をコミットするように、前記第１のプロセッサに指示する同期要求を受信することと、
前記第１のプロセッサにより、前記同期要求の受信に基づいて、同期操作を実施して、前記１つ又は複数の状態インジケータの前記保留中の更新をコミットすることと、
前記同期操作の完了に基づいて、前記第１のプロセッサにより、完了を前記第２のプロセッサに示すことと、
を実行する、コンピュータ・システム。
【請求項１２】
コンピューティング環境において状態インジケータの更新を同期させるための方法であって、
第１のプロセッサにより、第２のプロセッサから、メモリ内に位置するアドレス変換構造の１つ又は複数のエントリの１つ又は複数の状態インジケータの保留中の更新をコミットするように前記第１のプロセッサに指示する同期要求を受信することと、
前記第１のプロセッサにより、前記同期要求の受信に基づいて、同期操作を実施して、前記１つ又は複数の状態インジケータの前記保留中の更新をコミットすることと、
前記同期操作の完了に基づいて、前記第１のプロセッサにより、完了を前記第２のプロセッサに示すことと、
を含む、方法。
【請求項１３】
前記同期操作を実施することは、
前記第１のプロセッサのキューにおける、前記１つ又は複数の状態インジケータについての１つ又は複数の保留中の更新要求にマーク付けすることと、
前記キュー内の前記マーク付けされた１つ又は複数の保留中の更新要求に基づいて、前記アドレス変換構造の１つ又は複数のエントリを更新することと、
を含む、請求項１２に記載の方法。
【請求項１４】
前記同期操作を実施することは、
前記同期要求の受信に基づいて、キュー内にマーカーを配置することであって、前記キューは、前記マーカーより前の、前記１つ又は複数の状態インジケータに対する１つ又は複数の保留中の更新要求を含む、配置することと、
前記マーカーより前の、前記キュー内の前記１つ又は複数の保留中の更新要求に基づいて、前記アドレス変換構造の１つ又は複数のエントリを更新することであって、前記同期操作の完了は、前記マーカーの到達に基づいて示される、更新することと、
を含む、請求項１２に記載の方法。
【請求項１５】
コンピューティング環境において状態インジケータの更新を同期させるためのコンピュータ・プログラムであって、
前記コンピューティング環境の１つのプロセッサから、前記コンピューティング環境の少なくとも１つの他のプロセッサに、メモリ内に位置するアドレス変換構造の１つ又は複数のエントリの１つ又は複数の状態インジケータの保留中の更新をコミットするように、前記少なくとも１つの他のプロセッサに指示する同期要求を送ることと、
前記１つのプロセッサにより、前記少なくとも１つの他のプロセッサから、前記１つ又は複数の状態インジケータの前記保留中の更新の前記コミットが完了したことを示す完了の表示を受信することと、
前記少なくとも１つの他のプロセッサから前記完了の表示を受信することに基づいて、１つ又は複数の更新された状態インジケータを用いて１つ又は複数の操作を開始することと、
を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
１つ又は複数の態様は、一般に、マルチプロセッサ・コンピューティング環境内での処理に関し、とりわけ、マルチプロセッサ・コンピューティング環境により用いられるページ・テーブルの状態インジケータの更新を同期させることに関する。
【背景技術】
【０００２】
ページ・テーブルは、仮想アドレスと物理アドレスとの間のマッピングを格納するために用いられるデータ構造である。仮想アドレスは、付加的な物理メモリの外観を与えるために用いられる仮想メモリと関連付けられる。既知のように、物理メモリは、規定サイズのものであり、物理メモリが実際よりも大きく見えるようにするために、仮想メモリを利用する。仮想メモリは物理メモリにマッピングされ、物理メモリにアクセスするのに用いられる物理アドレスを含むページ・テーブル・エントリを特定するために仮想アドレスを用いる技術が提供される。
【０００３】
各ページ・テーブル・エントリは、エントリ及び／又はエントリと関連したメモリのページを管理するのに用いられる状態インジケータ（status indicator）を含む。さらに、性能を最適化するために、ページ・テーブル・エントリのキャッシュされたコピーが、変換ルックアサイド・バッファ（translation lookaside buffer、ＴＬＢ）などのキャッシュ内に保持される。従って、ページ・テーブル・エントリが修正されると、キャッシュされたコピーが更新又は無効化され、キャッシュされたコピーが更新された場合、その更新がページ・テーブル・エントリ内に反映される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】「Ｐｏｗｅｒ  ＩＳＡ（商標）  Ｖｅｒｓｉｏｎ  ２．０７」、ＩＢＭ、２０１３年５月３日
【非特許文献２】「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ−Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」、ＩＢＭ、発行番号ＳＡ２２−７９３２−０９、第１０版、２０１２年９月
【非特許文献３】「Ｐｏｗｅｒ  ＩＳＡ（商標）  Ｖｅｒｓｉｏｎ  ２．０７  ｓｐｅｃｉｆｉｃａｔｉｏｎ」、インターナショナル・ビジネス・マシーンズ・コーポレーション、２０１３年５月３日
【非特許文献４】「Ｉｎｔｅｌ  Ｉｔａｎｉｕｍ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒ’ｓ  Ｍａｎｕａｌ  Ｖｏｌｕｍｅ  ２：Ｓｙｓｔｅｍ  Ａｒｃｈｉｔｅｃｔｕｒｅ、文書番号：２４５３１８、２０１０年５月
【発明の概要】
【発明が解決しようとする課題】
【０００５】
コンピューティング環境において状態インジケータの更新を同期させるためのコンピュータ・プログラム、コンピュータ・システム及び方法を提供する。
【課題を解決するための手段】
【０００６】
コンピューティング環境において状態インジケータの更新を同期させるためのコンピュータ・プログラムを提供することにより、従来技術の欠点が克服され、利点がもたらされる。コンピュータ・プログラムは、処理回路により読み取り可能であり、方法を実施するための処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を含む。この方法は、例えば、第１のプロセッサにより、第２のプロセッサから、メモリ内に位置するアドレス変換構造の１つ又は複数のエントリの１つ又は複数の状態インジケータの保留中の更新をコミットするように第１のプロセッサに指示する同期要求を受信することと、第１のプロセッサにより、同期要求の受信に基づいて、同期操作を実行して、１つ又は複数の状態インジケータの保留中の更新をコミットすることと、同期操作の完了に基づいて、第１のプロセッサにより、完了を第２のプロセッサに示すこととを含む。
【０００７】
１つ又は複数の実施形態に関連する方法及びシステムも、本明細書で説明され、特許請求される。さらに、１つ又は複数の実施形態に関連するサービスも説明され、本明細書で特許請求され得る。
付加的な特徴及び利点が実現される。他の実施形態及び態様は、本明細書で詳細に説明され、特許請求される本発明の一部と見なされる。
【０００８】
１つ又は複数の態様が、具体的に示され、例として本明細書の最後にある特許請求の範囲において明確に特許請求される。上記及び他の目的、特徴、並びに利点は、添付図面と関連して用いられる以下の詳細な説明から明らかである。
【図面の簡単な説明】
【０００９】
【図１】同期能力の１つ又は複数の態様を組み込み、用いるためのコンピューティング環境の一例を示す。
【図２】同期能力の１つ又は複数の態様を組み込み、用いるためのコンピューティング環境の別の例を示す。
【図３】同期能力の１つ又は複数の態様を組み込み、用いるためのコンピューティング環境のさらに別の例を示す
【図４】図３のメモリのさらなる詳細を示す。
【図５】ページ・テーブル・エントリの一例を示す。
【図６】同期命令の１つの実装を示す。
【図７】同期論理の一実施形態を示す。
【図８】同期論理の別の実施形態を示す。
【図９】ストア（store、格納）操作と関連した論理の一実施形態を示す。
【図１０】メモリ命令と関連した論理の一実施形態を示す。
【図１１】メモリ命令と関連した論理の別の実施形態を示す。
【図１２】アドレス空間の再構成の一例を示す。
【図１３】ページを読み取り専用にする一実施形態を示す。
【図１４】ページを読み取り専用にする別の実施形態を示す。
【図１５】メモリ・ページのフリー・リストを管理するための論理の一実施形態を示す。
【図１６】プロセスの終了に基づいてメモリを管理するための論理の一実施形態を示す。
【図１７】コンピュータ・プログラムの一実施形態を示す。
【図１８】クラウド・コンピューティング・ノードの一実施形態を示す。
【図１９】クラウド・コンピューティング環境の一実施形態を示す。
【図２０】抽象化モデル層の一例を示す。
【発明を実施するための形態】
【００１０】
１つ又は複数の態様によると、キャッシュされたエントリにおける保留中の更新（pending update）を、メモリ内で（即ち、インメモリ・ページ・テーブル・エントリ内で）強制的に可視にすることによって、ページ・テーブルの更新を同期するための同期能力が提供される。一例として、命令の完了後、同期命令の前に行われたキャッシュされたエントリの更新を、メモリ内で可視にすることを保証する同期命令が用いられる。本明細書における特定の例において、同期命令は、ページ・テーブルの参照（Ｒ）及び変更（Ｃ）インジケータの更新を同期するので、ＲＣｓｙｎｃ命令と呼ばれる。しかしながら、他の実施形態においては、同じ命令又は異なる命令を用いて、ページ・テーブルの状態インジケータの他の更新を同期させることもできる。
【００１１】
一実施形態において、同期は、メモリの大きいセクションを読み取り専用に変更するために用いられる一括操作（bulkoperation）、メモリ・ページのフリー・リストを管理するための操作、及び／又はプロセスの終了と関連した操作などの、メモリ管理操作を容易にするために用いられる。
【００１２】
異なるアーキテクチャのコンピューティング環境が、本明細書で提供される同期能力の１つ又は複数の態様を組み込み、用いることができる。例えば、インターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ）により提供され、その全体が引用により本明細書に組み入れられる非特許文献１に記載される、Ｐｏｗｅｒ  ＩＳＡ（登録商標）とも呼ばれるＰｏｗｅｒＰＣアーキテクチャに基づいた環境は、１つ又は複数の態様、並びに、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供され、その全体が引用により本明細書に組み入れられる非特許文献２に記載される、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅなどの他のアーキテクチャのコンピューティング環境を含むことができる。
【００１３】
Ｐｏｗｅｒ、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ、ＰｏｗｅｒＰＣ、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ、ＩＢＭ、ＡＩＸ、ＰｏｗｅｒＶＭ、ｚ／ＯＳ及びｚ／ＶＭ（本明細書で参照される）は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で用いられる他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーション、又は他の会社の登録商標、商標又は製品名であり得る。
【００１４】
同期能力の１つ又は複数の態様を組み込み、用いるためのコンピューティング環境の一例が、図１を参照して説明される。一例において、コンピューティング環境１００は、複数のプロセッサ（中央処理ユニット−ＣＰＵ）を含み、各プロセッサは、例えば、少なくとも１つのメモリ管理ユニット（ＭＭＵ）１０４、１つ又は複数のアドレス変換構造１０５、１つ又は複数のキャッシュ１０６、及び本明細書で説明される同期能力を与えるための同期ユニット１０７を含む。
【００１５】
各プロセッサ１０２は、１つ又は複数のキャッシュ１１０を有するメモリ部分１０８（同じ部分又は異なる部分）及び入力／出力（Ｉ／Ｏ）サブシステム１１２（同じく、同じサブシステム又は異なるサブシステム）に通信可能に結合される。Ｉ／Ｏサブシステム１１２は、例えば、データ入力デバイス、センサ、及び／又はディスプレイのような出力デバイスを含むことができる外部Ｉ／Ｏデバイス１１４に通信可能に結合される。
【００１６】
メモリ管理ユニット１０４は、アドレス変換を提供することによってメモリへのアクセスを容易にすることを含む、メモリ部分１０８の管理に用いられる。アドレス変換を改善するために、メモリ管理ユニットは、例えば、一実施形態ではＭＭＵ内に配置される、変換ルックアサイド・バッファ（ＴＬＢ）及びセグメント・ルックアサイド・バファシリティ（ＳＬＢ）を含む１つ又は複数のアドレス変換構造１０５を利用する。更に別の実施形態において、アドレス変換構造１０５はまた、例えば、プロセッサ内のＭＭＵの外に位置する、実効アドレス−実アドレス変換（effective to real address translation、ＥＲＡＴ）構造も含む。
【００１７】
同期能力の１つ又は複数の態様を組み込み、用いるためのコンピューティング環境の更に別の実施形態が、図２を参照して説明される。図２を参照すると、一例において、コンピューティング環境２００が、１つ又は複数の制御ユニット２０６を介して１つ又は複数の入力／出力（Ｉ／Ｏ）デバイス２０４に結合された中央プロセッサ・コンプレックス（central processor complex、ＣＰＣ）２０２を含む。中央プロセッサ・コンプレックス２０２は、それぞれが以下にさらに説明される１つ又は複数の中央プロセッサ（別名、中央処理ユニット（ＣＰＵ））２１０及びＩ／Ｏサブシステム２１２に結合されたプロセッサ・メモリ２０８（別名、主メモリ、主ストレージ、中央ストレージ）を含む。
【００１８】
プロセッサ・メモリ２０８は、１つ又は複数の仮想マシン２１４（ＰｏｗｅｒＰＣアーキテクチャの一例における）又は１つ又は複数の論理パーティション２１４（ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの一例における）、並びにハイパーバイザ２１８及び他のプロセッサ・ファームウェア２２０を含むプロセッサ・ファームウェア２１６を含む。本明細書で用いられる場合、ファームウェアは、例えば、プロセッサのマイクロコード及び／又はミリコードを含む。ファームウェアは、例えば、より上位レベルのマシン・コードの実装に用いられる、ハードウェア・レベルの命令及び／又はデータ構造を含む。一実施形態において、ファームウェアは、例えば、典型的には、信頼できるソフトウェアを含むマイクロコード又は基礎をなすハードウェアに特有のマイクロコードとして配信される独自のコードを含み、システム・ハードウェアへのオペレーティング・システムのアクセスを制御する。
【００１９】
各々の仮想マシン又は論理パーティション２１４は、別個のシステムとして機能し、１つ又は複数のアプリケーション２２２を有し、随意的に、各々の仮想マシン又は論理パーティションによって異なり得る、内部の常駐オペレーティング・システム２２４を有する。一実施形態において、オペレーティング・システムは、ｚ／ＶＭオペレーティング・システム、ｚ／ＯＳオペレーティング・システム、ｚ／Ｌｉｎｕｘオペレーティング・システム、ＴＰＦオペレーティング・システム、ＡＩＸオペレーティング・システム、Ｐｏｗｅｒ  Ｌｉｎｕｘオペレーティング・システム、ＩＢＭ  ｉ／ＯＳオペレーティング・システム、又はニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供される別のオペレーティング・システム、又は別の会社により提供される別のオペレーティング・システムである。仮想マシンは、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供される、Ｐｏｗｅｒ  ＶＭなどのハイパーバイザ２１８によって管理され、論理パーティションは、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供される、プロセッサ・リソース／システム・マネジャ（ＰＲ／ＳＭ）などのハイパーバイザ２１８によって管理される。
【００２０】
中央プロセッサ２１０は、仮想マシンに割り当て可能な又は論理パーティションに割り当てられる物理プロセッサ・リソースである。例えば、各々の仮想マシン又は論理パーティション２１４は、各々が、仮想マシン又はパーティションに動的に割り当てることができる１つ又は複数の物理プロセッサ２１０の全て又は割り当て分(share）を表す、１つ又は複数の論理プロセッサを含む。中央プロセッサは、メモリ管理ユニット（ＭＭＵ）２３０、１つ又は複数のアドレス変換構造２３１、少なくとも１つのキャッシュ２３２、及び本明細書で説明される同期能力を提供するために用いられる同期ユニット２３４を含むことができる。
【００２１】
入力／出力（Ｉ／Ｏ）サブシステム２１２は、入力／出力デバイス２０４と主メモリ２０８との間の情報の流れを方向付ける。入力／出力（Ｉ／Ｏ）サブシステム２１２は、中央処理コンプレックスに結合され、中央処理コンプレックスの一部とすることも又はそれとは別個のものとすることもできる。Ｉ／Ｏサブシステムは、中央プロセッサを、入力／出力デバイスと直接通信するタスクから解放し、データ処理が、入力／出力処理と同時に進行することを可能にする。通信を提供するために、Ｉ／Ｏサブシステムは、Ｉ／Ｏ通信アダプタを用いる。例えば、チャネル、Ｉ／Ｏアダプタ、ＰＣＩカード、イーサネット・カード、Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）カード等を含む、種々のタイプの通信アダプタがある。さらに、Ｉ／Ｏサブシステムは、入力／出力デバイス２０４との間の情報の流れを管理する際に、１つ又は複数の入力／出力経路を通信リンクとして使用する。
【００２２】
同期能力の１つ又は複数の態様を組み込み、用いるためのコンピューティング環境の別の実施形態が、図３を参照して説明される。この例において、コンピューティング環境３００は、例えば１つ又は複数のバス３０８及び／又は他の接続を介して互いに結合された、例えば、ネイティブ中央処理ユニット３０２、メモリ３０４、並びに１つ又は複数の入力／出力デバイス及び／又はインターフェース３０６を含む。例として、コンピューティング環境３００は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるＰｏｗｅｒＰＣプロセッサ又はＰｏｗｅｒ  Ｓｙｓｔｅｍｓサーバ；カリフォルニア州Ｐａｌｏ  Ａｌｔｏ所在のＨｅｗｌｅｔｔ  Ｐａｃｋａｒｄ  Ｃｏ．により提供されるＩｎｔｅｌ  Ｉｔａｎｉｕｍ  ＩＩプロセッサを伴うＨＰ  Ｓｕｐｅｒｄｏｍｅ；及び／又はインターナショナル・ビジネス・マシーンズ・コーポレーション、Ｈｅｗｌｅｔｔ  Ｐａｃｋａｒｄ、Ｉｎｔｅｌ、Ｏｒａｃｌｅ、又はその他により提供されるアーキテクチャに基づいた他のマシンを含むことができる。
【００２３】
ネイティブ中央処理ユニット３０２は、環境内での処理の際に用いられる、１つ又は複数の汎用レジスタ及び／又は１つ又は複数の専用レジスタなどの１つ又は複数のネイティブ・レジスタ３１０、並びに１つ又は複数のアドレス変換構造３１１を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
【００２４】
さらに、ネイティブ中央処理ユニット３０２は、メモリ３０４内に格納された命令及びコードを実行する。１つの特定の例において、中央処理ユニットは、メモリ３０４内に格納されたエミュレータ・コード３１２を実行する。このコードにより、１つのアーキテクチャにおいて構成されたコンピューティング環境が、別のアーキテクチャをエミュレートすることが可能になる。例えば、エミュレータ・コード３１２により、ＰｏｗｅｒＰＣプロセッサ、Ｐｏｗｅｒ  Ｓｙｓｔｅｍｓサーバ、ＨＰ  Ｓｕｐｅｒｄｏｍｅサーバ又は他のものなどの、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ以外のアーキテクチャに基づいたマシンが、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅをエミュレートし、かつ、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づいて開発されたソフトウェア及び命令を実行することが可能になる、又は、ＨＰ  Ｓｕｐｅｒｄｏｍｅサーバ又は他のものなどの、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ以外のアーキテクチャに基づいたマシンが、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅをエミュレートし、かつ、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅに基づいて開発されたソフトウェア及び命令を実行することが可能になる。
【００２５】
エミュレータ・コード３１２に関する更なる詳細が、図４を参照して説明される。メモリ３０４内に格納されたゲスト命令３５０が、ネイティブＣＰＵ３０２のもの以外のアーキテクチャにおいて実行されるように開発されたソフトウェア命令（例えば、マシン命令に関連する）を含む。例えば、ゲスト命令３５０は、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒ又はｚ／Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサ１０２上で実行されるように設計することができるが、代わりに、例えばＩｎｔｅｌ  Ｉｔａｎｉｕｍ  ＩＩプロセッサとすることができるネイティブＣＰＵ３０２上でエミュレートされることもある。一例において、エミュレータ・コード３１２は、メモリ３０４から１つ又は複数のゲスト命令３５０を取得し、取得された命令に対してローカル・バッファリングを随意的に提供するための命令フェッチ・ルーチン３５２を含む。エミュレータ・コード３１２はまた、取得されたゲスト命令のタイプを判断し、ゲスト命令を１つ又は複数の対応するネイティブ命令３５６に変換するための命令変換ルーチン３５４も含む。この変換は、例えば、ゲスト命令により実施される機能を識別することと、その機能を実施するためのネイティブ命令を選択することとを含む。
【００２６】
さらに、エミュレータ・コード３１２は、ネイティブ命令を実行させるためのエミュレーション制御ルーチン３６０を含む。エミュレーション制御ルーチン３６０は、ネイティブＣＰＵ３０２に、１つ又は複数の以前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、こうした実行の最後に、次のゲスト命令又はゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに戻させることができる。ネイティブ命令３５６の実行は、データをメモリ３０４からレジスタ内にロードすること、データをレジスタから再びメモリに格納すること、又は変換ルーチンによって求められるような何らかのタイプの算術演算又は論理演算を実施することを含むことができる。
【００２７】
各ルーチンは、例えば、メモリ内に格納され、ネイティブ中央処理ユニット３０２によって実行される、ソフトウェアで実装される。他の例において、１つ又は複数のルーチン又は演算は、ファームウェア、ハードウェア、ソフトウェア、又はそれらの幾つかの組み合わせで実装される。エミュレートされるプロセッサのレジスタは、ネイティブＣＰＵのレジスタ３１０又はメモリ３０４内の位置を使用して、エミュレートすることができる。実施形態において、ゲスト命令３５０、ネイティブ命令３５６、及びエミュレータ・コード３１２は、同一のメモリ内に存在してもよく、又は、異なるメモリ・デバイスの間に分散されてもよい。
【００２８】
実装において、本明細書で説明される同期能力は、エミュレーションを実施しているＣＰＵにより提供されることも、又はエミュレートされるソフトウェアにより提供されることもある。種々の実施形態が可能である。
【００２９】
上述のコンピューティング環境は、用いることができるコンピューティング環境の単なる例にすぎない。複数のプロセッサを有する他の環境、他のパーティション化された環境、及び／又は他のエミュレートされた環境を含むがこれらに限定されない他の環境を用いることもできる。実施形態は、いずれか１つの環境に限定されるものではない。
【００３０】
しかしながら、各々のコンピューティング環境は、ページ・テーブルと呼ばれるデータ構造を含む、仮想アドレス指定の態様を用いる。既知のように、物理メモリは、規定サイズのものであり、物理メモリが実際よりも大きく見えるようにするために、仮想メモリが利用される。仮想メモリは、例えばページ・テーブル・エントリ（ＰＴＥ）を特定するためのハッシュ・ページ・テーブル（ＨＰＴ）技術を介して、実メモリにマッピングされる。仮想メモリの各セグメントは、実効セグメントＩＤ（ＥＳＩＤ）により識別されるセグメントＩＤ（ＳＩＤ）エントリにマッピングされる。プログラムにより用いられる実効アドレスは、例えば、ＥＳＩＤ、ページ部分及びバイト部分を含み、ＥＳＩＤ値、並びに仮想セグメントＩＤ（ＶＳＩＤ）値を含むＳＩＤエントリを選択するために用いられる。ＶＳＩＤ値は、ハッシュ・ページ・テーブルを検索するためのハッシュ・アルゴリズムによって使用される仮想アドレスの上位ビットを表す。ＶＳＩＤに基づいたハッシュ値を用いて、ページ・テーブル・エントリ（ＰＴＥ）を特定する。ページ・テーブル・エントリは、物理メモリのページのアドレスを含む。性能向上のために、ひとたびＰＴＥが見出されると、実効アドレスのページ部分及びＰＴＥ内に見出された物理メモリ・ページのアドレスが、変換ルックアサイド・バッファ（ＴＬＢ）などのキャッシュ構造内に格納され、その結果、同じ実効アドレス・ページへのさらなるアクセスは、ＴＬＢにおいて「ヒット」し、ＰＴＥ検索を回避する。他の実施形態においては、ＴＬＢの代わりに又はこれに加えて他のキャッシュ構造を使用し、これに限られるものではないが、実効アドレス−実アドレス変換（ＥＲＡＴ）構造を含むページ・テーブル・エントリを格納することもできる。
【００３１】
ページ・テーブル・エントリと関連したさらなる詳細が、図５を参照して説明される。各ページ・テーブル・エントリ４００は、１つの仮想番号を１つの実ページ番号にマッピングする。Ｐｏｗｅｒ  ＩＳＡアーキテクチャの一例として、ページ・テーブル・エントリは、以下を含む。
【表１】
0006362769.tif 000002
【００３２】
ＬＰと連結されたＡＲＰＮ（（ＡＲＰＮ∪ＬＰ）０：５９−Ｐ）は、実アドレス４４０の第１の部分４４２を提供し、実効アドレスからのバイト部分４４４は、実アドレスの第２の部分を提供する。
【００３３】
ページ・テーブル及びページ・テーブル・エントリの１つの実装に関するさらなる詳細が、その全体を引用により本明細書に組み入れる非特許文献３に記載される。
【００３４】
アドレスを変換するためのハッシュ・ページ・テーブルの使用は、変換技術の一例にすぎない。変換テーブルの階層を使用するものを含む他のアドレス変換スキームは、以下の発行物、即ち、各々の全体が引用により本明細書に組み入れられる非特許文献２及び非特許文献４に記載される。一例において、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの場合、テーブルの階層は動的アドレス変換（ＤＡＴ）テーブルと呼ばれ、Ｐｏｗｅｒ  ＩＳＡの場合、テーブルは基数（radix）テーブルと呼ばれる。
【００３５】
本明細書で説明される場合、同期能力は、ページ・テーブル・エントリの更新を同期させるために提供される。使用することができる、本明細書ではＲＣｓｙｎｃと呼ばれる同期命令の一例が、図６を参照して説明される。１つの実装において、ＲＣｓｙｎｃ命令５００は、同期操作を示す操作コード５０２ａ、５０２ｂ；同期操作のタイプを示すために用いられるＬフィールド５０４（例えば、Ｌ＝３は、ＲＣｓｙｎｃ操作を示す）；及び本実施形態では０である要素バリア（Ｅ）フィールド５０６を含む。他の実施形態においては、ＲＣｓｙｎｃ命令は、種々のｓｙｎｃ操作のために使用される一般的なオペコードを有し、ＬフィールドによりＲＣｓｙｎｃを指定するのではなく、独自のオペコードを有する。多くの変形が可能である。
【００３６】
例えばＲＣｓｙｎｃを用いる同期論理の一実施形態が、図７を参照して説明される。一実施形態において、同期プロセスを開始するプロセッサであるローカル・プロセッサ、及び同期プロセスの開始に応答して処理を実行している１つ又は複数の遠隔プロセッサを含む複数のプロセッサが、この論理を実行している。
【００３７】
図７を参照すると、最初に、ローカル・プロセッサが、ＲＣｓｙｎｃ命令を開始し（ステップ６００）、ＲＣｓｙｎｃ要求を１つ又は複数の遠隔プロセッサにブロードキャストする（ステップ６０２）。実施形態において、ＲＣｓｙｎｃ要求は、例として、同じ論理パーティション（ＬＰＡＲ）、仮想マシン（ＶＭ）、又は他のグループ内の全てのプロセッサ；同じアドレス空間を使用しているプロセッサ；又は、構成の全てのプロセッサにブロードキャストされる。１つの特定の例において、ブロードキャストが全てのプロセッサに送られる場合、これは、ＬＰＡＲ  ｉｄ、ＶＭ  ｉｄ、又は他の識別子と共に送られ、要求を受け取るプロセッサが、ＬＰＡＲ、ＶＭ、又は他のグループの一部ではない場合、プロセッサは、即座に完了を確認する。
【００３８】
要求をブロードキャストした後、ローカル・プロセッサは、ＲＣｓｙｎｃ処理を完了した遠隔プロセッサからの確認を待つ（ステップ６０４）。代替的な実施形態において、ローカル・プロセッサは、確認を連続的に受け取ったか又は所定の間隔で受け取ったかをチェックする。ローカル・プロセッサが、要求をブロードキャストした遠隔プロセッサから確認を受け取っていない場合（問い合わせ６０６）、ローカル・プロセッサは待ち続ける（ステップ６０４）。他の場合には、同期は完了し、このことは、インメモリ・ページ・テーブル・エントリが、キャッシュされたエントリ（例えば、ＴＬＢ）内の変更（例えば、Ｒ／Ｃインジケータの更新）を反映させるように更新されたことを意味する（ステップ６０８）。
【００３９】
各遠隔プロセッサ上で、ローカル・プロセッサからＲＣｓｙｎｃ要求を受信し（ステップ６２０）、全ての保留中の参照及び変更（Ｒ／Ｃ）更新要求にマーク付けする（ステップ６２２）。例えば、参照及び／又は変更更新が、キャッシュ（例えば、ＴＬＢ）内で行われると、保留中の更新が、メモリへの最終的な書き込みのためにストア・キューに入れられる。（さらに別の実施形態において、保留中のＲ／Ｃ更新は、別個のＲ／Ｃ更新キュー内に格納される。）従って、ＲＣｓｙｎｃ要求を受信すると、キュー内で、ＲＣｓｙｎｃ要求に先行する各更新にマーク付けされ、メモリの保留中のアドレス変換キャッシュ更新のコミットが開始される。さらに、一実施形態において、マーク付けされたＲ／Ｃ更新要求の加速されたライトバックを処理する随意的なステップが実行される（ステップ６２４）。
【００４０】
更に別の実施形態において、ＲＣｓｙｎｃ要求の受信に応答して、マーク付けを実施する前に、保留中の更新のキューがない場合には、キューが作成され；及び／又は、キューが最新であることを確実にするように処理を行うことができる。
【００４１】
次いで、遠隔プロセッサは、ストア・キューの少なくとも１つのＲ／Ｃ更新がメモリ（例えば、ＰＴＥ）に書き込まれるまで待つ（ステップ６２６）。代替的な実施において、遠隔プロセッサは、更新がメモリに書き込まれたかどうかを常にチェックする、又は所定の間隔でチェックすることができる。少なくとも１つのＲ／Ｃ更新がメモリに書き込まれた後、遠隔プロセッサは、全てのマーク付けされた更新がメモリに書き込まれたかどうかをチェックする（問い合わせ６２８）。全てのマーク付けされた更新がメモリに書き込まれていない場合（問い合わせ６２８）、プロセッサは待ち続ける（ステップ６２６）。他の場合には、遠隔ＲＣｓｙｎｃの完了を要求側、即ち、ローカル・プロセッサに示す（ステップ６３０）。
【００４２】
１つの代替的な実施形態において、技術は、ステップ６２２において、ストア又は他のキュー内のＲ／Ｃ更新エントリの数を求め、ステップ６２６において、カウントされたエントリの数が処理されるのを待つことができる。
【００４３】
更に別の代替的な実施形態においては、ステップ６２２において、ストア又は他のキューへの付加的なメモリ要求の生成が随意的に停止され、プロセッサは、ＲＣｓｙｎｃ要求の完了を示す前に、ステップ６２６において、ストア又は他のキューが空になるまで待つ。
【００４４】
上記に加えて、一実施形態において、ローカル・プロセッサはまた、同期を局所的に実施し、局所的にキャッシュされたページ・テーブル（例えば、ローカルＴＬＢ）内のあらゆる変更をメモリに（例えば、ＰＴＥのインメモリ・コピーに）書き出すことを確実にする。
【００４５】
例えばＲＣｓｙｎｃを用いる同期論理の別の実施形態が、図８を参照して説明される。一実施形態において、同期プロセスを開始するプロセッサであるローカル・プロセッサ、及び同期プロセスの開始に応答して処理を実行している１つ又は複数のプロセッサを含む複数のプロセッサが、この論理を実行している。
【００４６】
図８を参照すると、最初に、ローカル・プロセッサが、ＲＣｓｙｎｃ命令を開始し（ステップ７００）、ＲＣｓｙｎｃ要求を１つ又は複数の遠隔プロセッサ（例えば、システム又はそのサブセット内の遠隔プロセッサの全て）にブロードキャストする（ステップ７０２）。次いで、ローカル・プロセッサは、ＲＣｓｙｎｃ処理を完了した遠隔プロセッサからの確認を待つ（ステップ７０４）。代替的な実施形態において、ローカル・プロセッサは、確認を連続的に受け取ったか又は所定の間隔で受け取ったかをチェックする。ローカル・プロセッサが、要求をブロードキャストした全ての遠隔プロセッサから確認を受け取っていない場合（問い合わせ７０６）、ローカル・プロセッサは待ち続ける（ステップ７０４）。他の場合には、同期は完了する（ステップ７０８）。
【００４７】
各遠隔プロセッサ上で、ローカル・プロセッサからＲＣｓｙｎｃ要求を受け取り（ステップ７２０）、ストア・キュー内の各々の実行中の（in-flight）Ｒ／Ｃ更新要求にマーク付けする代わりに、マーカーをストア・キュー内に配置し、キューがイン・オーダー式に処理されると仮定して、マーカーがキューの先頭に来ると、ＲＣｓｙｎｃの受信に先行する更新の全てが処理されたことが分かる（ステップ７２２）。
【００４８】
ページ・テーブルへのＲ／Ｃ更新の書き込みを開始することによって、キューが処理される（ステップ７２３）。さらに、一実施形態において、Ｒ／Ｃ更新要求の加速されたライトバックを処理する随意的なステップが実行される（ステップ７２４）。
【００４９】
更に別の実施形態において、ＲＣｓｙｎｃ要求の受信に応答して、マーク付けを実施する前に、保留中の更新のキューがない場合には、キューが作成され；及び／又は、キューが最新であることを確実にするように処理を行うことができる。
【００５０】
次いで、遠隔プロセッサは、マーカーがキューの前方即ち先頭に来るまで待つ（ステップ７２６）。マーカーがキューの先頭に来ることに基づいて、遠隔プロセッサは、遠隔ＲＣｓｙｎｃの完了を要求側（即ち、ローカル・プロセッサ）に示す（ステップ７２８）。
【００５１】
１つの代替的な実施形態において、技術は、ステップ７２２において、ストア又は他のキュー内のエントリの数を求め、ステップ７２６において、カウントされたエントリの数が処理されるのを待つことができる。
【００５２】
更に別の代替的な実施形態においては、ステップ７２２において、ストア又は他のキューへの付加的なメモリ要求の生成が随意的に停止され、プロセッサは、ＲＣｓｙｎｃ要求の完了を示す前に、ステップ７２６において、ストア又は他のキューが空になるまで待つ。
【００５３】
また、上記に加えて、一実施形態において、ローカル・プロセッサはまた、同期を局所的に実施し、局所的にキャッシュされたページ・テーブル（例えば、ローカルＴＬＢ）内のあらゆる変更をメモリに（例えば、ＰＴＥのインメモリ・コピーに）書き出すことを確実にする。
【００５４】
一態様において、ＲＣｓｙｎｃは、ＲＣｓｙｎｃ要求を受け取る予定の全ての遠隔ノード上で、保留中である遠隔参照及び変更（Ｒ／Ｃ）更新が完了したことを確実にする。１つの実施において、ＲＣｓｙｎｃが発行されると、ＲＣｓｙｎｃより前のメモリの状態に対応するＲ／Ｃ更新が完了される。ＲＣｓｙｎｃの完了後、各ページ・テーブル・エントリについて、ＲＣｓｙｎｃ時点又はその後のページ・テーブル・エントリの値を反映するページ・テーブル・エントリ更新のみが可能である。従って、ページ・テーブル・エントリが、ＲＣｓｙｎｃより前に読み取り専用に設定されたが、以前は書き込み可能であった場合、ＲＣｓｙｎｃは、ページ・テーブル・エントリ内のあらゆるＣインジケータの設定を強制し、ＲＣｓｙｎｃの完了後、新しいＰＴＥ値がそれを禁じるため、Ｃインジケータへのそれ以上の変更は行われない。しかしながら、Ｃインジケータが、ＴＬＢにおいて、書き込みが行われたことを示すように設定された場合、ＴＬＢが無効化又は更新されるまで、ＴＬＢを用いる将来の書き込みは可能である。同様に、ＰＴＥが無効であるように設定された場合、ＲＣｓｙｎｃ操作の後、新しいＰＴＥ値がそれを禁じるため、Ｒ／Ｃ更新は行われない。
【００５５】
既存のメモリ・システムによると、キャッシュされたＴＬＢエントリが、読み取りを可能にするキャッシュから書き込みを可能にするキャッシュに移行するとき、書き込み許可を有するＴＬＢエントリを付加する前に、ページ・テーブル・エントリ（又は、その有効及び／又は書き込み許可）が読み取られ、更新される。従って、ひとたびインメモリＰＴＥエントリが無効であるように及び／又は書き込み許可を有していないように更新されると、ＴＬＢエントリは、Ｃインジケータの更新をトリガしない。
【００５６】
ＲＣｓｙｎｃの使用の結果としてのストア操作及びキャッシュされたエントリの使用と関連した論理の一実施形態が、図９を参照して説明される。ストア操作の前又は後にＲＣｓｙｎｃを実施することができ、従って、この論理は、ＲＣｓｙｎｃがいつ実施されるかに関係なく使用することができる。
【００５７】
図９を参照すると、最初に、プロセッサは、データをメモリ内の特定のページに書き込むストア命令を受け取る（ステップ８００）。ストア命令の受信に基づいて、プロセッサは、変換ルックアサイド・バッファ（ＴＬＢ）又は実効アドレス−実アドレス変換構造（ＥＲＡＴ）のような１つ又は複数のアドレス変換構造においてルックアップを実施し、ページに対応する変換エントリがキャッシュされたかどうかを判断する（ステップ８０２）。ＴＬＢ及び／又はＥＲＡＴエントリのようなキャッシュ・エントリが存在する場合（問い合わせ８０４）、キャッシュ・エントリが、変更インジケータを更新されたものとして示し（例えば、Ｃ＝１）、このページが以前に書き込まれていることを示すかどうかについてさらなる判断を行う（問い合わせ８０６）。変更インジケータが設定されている（Ｃ＝１）場合、アドレス変換においてエントリを用いて、実アドレスを提供し（ステップ８０８）、処理はストアを続行する（ステップ８１０）。
【００５８】
しかしながら、問い合わせ８０４に戻ると、キャッシュ・エントリが存在しない場合、メモリから少なくとも１つの関連するページ・テーブル・エントリを取り出すことによって、現在のページ変換に対応するキャッシュ・エントリを作成する（ステップ８１４）。その後、最新の読み取り／書き込み状態を得るために、ページ・テーブル・エントリの妥当性及び書き込み許可をチェックする（ステップ８１６）。ページ・テーブル・エントリが有効であり、書き込み許可が与えられていると仮定すると、現在のページ変換に対応するキャッシュ・エントリ内の変更インジケータは、これを反映する（例えばＣ＝１）（随意的に、ＴＬＢにおいて、参照インジケータ及び／又は他のインジケータも設定される）（ステップ８１８）。一実施形態において、書き込み更新をストア・キュー内に入力して、少なくともＣビットを更新し、現在のページが修正されていることを示す（即ち、Ｃ＝１）。
【００５９】
次いで、更新されたキャッシュ・エントリを１つ又は複数のキャッシュ（例えば、ＴＬＢ及び／又はＥＲＡＴ）に付加し（ステップ８２０）、ステップ８０８において処理は続行する。しかしながら、上記の処理において、ページ・テーブル・エントリが無効であるか又は書き込み許可が与えられていない場合、ストアは続行せず、随意的に、エラーが提示される。
【００６０】
問い合わせ８０６に戻ると、キャッシュ・エントリが、変更インジケータを、書き込みについて設定済みとして示さない場合、キャッシュ・エントリを無効化（例えば、キャッシュ・エントリ内のＶインジケータを０に設定する又はエントリを削除する）又は無視し（ステップ８３０）、処理はステップ８１４を続ける。
【００６１】
上記のストア処理に加えて、ＲＣｓｙｎｃ命令の前又は後に他の処理を行うこともできる。つまり、ＲＣｓｙｎｃの前又は後に、メモリ命令（例えば、ロード、ストア等）を発行することができる。１つの特定の例において、ＴＬＢ又はＥＲＡＴエントリのようなキャッシュ・エントリのプリフェッチを可能にする実施において、論理を実行して、参照インジケータをチェックし、最初の使用時にキャッシュ・エントリの妥当性を確認する。他の実施形態においては、メモリ命令に対応するメモリ・アドレス変換を実施するために、最初の使用前にＴＬＢエントリはプリフェッチされない。
【００６２】
メモリ命令を処理するための論理の一実施形態が、図１０を参照して説明される。一例において、この論理は、参照インジケータを設定する（例えば、Ｒ＝１）ことなく、キャッシュ・エントリ（例えば、ＴＬＢエントリ、ＥＲＡＴエントリ等）のプリフェッチが許容される場合に使用される。
【００６３】
図１０を参照すると、最初に、プロセッサは、メモリの選択されたページにアクセスするためのメモリ命令を受け取る（ステップ９００）。メモリ命令の受信に基づいて、プロセッサは、ＴＬＢ又はＥＲＡＴのようなキャッシュ内のルックアップを実施し、アクセスされるページに対応するアドレス変換が以前にキャッシュされているかどうかを判断する（ステップ９０２）。アクセスされるメモリのページに対応するエントリがキャッシュ内に存在する場合（問い合わせ９０４）、参照インジケータが、このページに以前アクセスされたことを示すように更新されることを（例えば、Ｒ＝１に）、キャッシュ・エントリが示すかどうかについてさらなる判断を行う（問い合わせ９０６）。キャッシュ・エントリが、参照インジケータが設定されることを示す場合、キャッシュ・エントリを用いてアドレス変換を行い、メモリ・アクセスのために使用される実アドレスを計算する（ステップ９０８）。次に、処理はメモリ命令を続ける（ステップ９１０）。
【００６４】
問い合わせ９０４に戻ると、キャッシュ・エントリが存在しない場合、メモリから関連するページ・テーブル・エントリを取り出すことによって、キャッシュ・エントリを作成する（ステップ９１４）。その後、ページ・テーブル・エントリの妥当性を、及び随意的に、最新の状態を得るために、メモリ命令がストア命令である場合には書き込み許可をチェックする（ステップ９１６）。ページ・テーブル・エントリが有効であると仮定すると、参照インジケータ（及び随意的に、変更インジケータ及び／又はページ・テーブル・エントリの他のインジケータ）を更新する（例えば、Ｒ＝１に）（ステップ９１８）。少なくとも１つの実施形態において、書き込み更新をストア・キューに入力して、少なくともＲビットを更新し、現在のページが修正されていることを示す（即ち、Ｒ＝１）。別の実施形態において、ストア操作が行われることに応答して、Ｃ＝１を同時に更新することもできる。
【００６５】
次に、現在のページ・アドレスについてのアドレス変換に対応する更新されたキャッシュ・エントリを、１つ又は複数のキャッシュ（例えば、ＴＬＢ及び／又はＥＲＡＴ）に付加し、参照インジケータ（及び／又は随意的に１つ又は複数の他のインジケータ）を、更新されたものとして示す（ステップ９２０）。次に、処理はステップ９０８に進む。しかしながら、上記の処理において、ページ・テーブル・エントリが無効である場合、メモリ命令は続行せず、随意的に、エラーが提示される。
【００６６】
問い合わせ９０６に戻ると、キャッシュ・エントリが、参照インジケータを設定されたものとして示さない場合、キャッシュ・エントリは無効化又は無視され（ステップ９３０）、処理はステップ９１４に続く。
【００６７】
メモリ命令の処理と関連した論理の別の実施形態が、図１１を参照して説明される。一例において、参照インジケータを設定する（例えば、Ｒ＝１に）ことなく、キャッシュ・エントリ（例えば、ＴＬＢエントリ、ＥＲＡＴエントリ等）のプリフェッチが許容される場合、この論理が用いられる。
【００６８】
図１１を参照すると、最初に、プロセッサは、メモリの選択されたページにアクセスするためのメモリ命令を受け取る（ステップ１０００）。メモリ命令の受信に基づいて、プロセッサは、ＴＬＢ又はＥＲＡＴのようなキャッシュ内のルックアップを、アクセスされるページが以前にキャッシュされたどうかを判断する（ステップ１００２）。アクセスされるメモリのページに対応するエントリがキャッシュ内に存在する場合（問い合わせ１００４）、参照インジケータが、このページに以前アクセスされたことを示すように更新されることを（例えば、Ｒ＝１に）を、キャッシュ・エントリが示すかどうかについてさらなる判断を行う（問い合わせ１００６）。キャッシュ・エントリが、参照インジケータが設定されることを示す場合、キャッシュ・エントリを用いてアドレス変換を行い、メモリ・アクセスのために使用される実アドレスを計算する（ステップ１００８）。次に、処理はメモリ命令を続ける（ステップ１０１０）。さらに、一実施形態において、必要に応じて、操作が検証される（ステップ１０１２）。
【００６９】
問い合わせ１００４に戻ると、キャッシュ・エントリが存在しない場合、メモリから関連するページ・テーブル・エントリを取り出すことによって、キャッシュ・エントリを作成する（ステップ１０１４）。その後、ページ・テーブル・エントリの妥当性を、及び随意的に、最新の状態を得るために、メモリ命令がストア命令である場合には書き込み許可をチェックする（ステップ１０１６）。ページ・テーブル・エントリが有効であると仮定すると、参照インジケータ（及び随意的に、変更インジケータ及び／又はページ・テーブル・エントリの他のインジケータ）を更新する（例えば、Ｒ＝１に）（ステップ１０１８）。
【００７０】
次に、更新されたキャッシュ・エントリを、１つ又は複数のキャッシュ（例えば、ＴＬＢ及び／又はＥＲＡＴ）に付加し、参照インジケータ（及び／又は、随意的に、１つ又は複数の他のインジケータ）を、更新されたものとして示す（ステップ１０２０）。次に、処理はステップ１００８に続く。しかしながら、上記の処理において、ページ・テーブル・エントリが無効である場合、メモリ命令は続行せず、随意的に、エラーが提示される。
【００７１】
問い合わせ１００６に戻ると、キャッシュ・エントリが参照インジケータを更新されたものとして示さない場合、ページ・テーブル・エントリは、検証で用いられるようにメモリから取り出され、この検証は、ページ・エントリの同時検証（concurrent validation）と並行して処理ステップを行うためにキャッシュされたエントリを用いるステップ１００８及び１０１０の１つ又は複数と並行して進む（ステップ１０３０）。例えば、キャッシュ・エントリが、参照インジケータを更新されたものとして示さない場合、プロセッサは、並行検証（ステップ１０１４、１０１６、１０１８、１０２０を包含する）を開始し、ステップ１００８及びステップ１０１０を並行して実行する。次に、これが有効なエントリであった場合、処理を検証すべきである（即ち、ステップ１００８及び１０１０で行われた作業は、完了することが許可されるべきである）。次に、処理はステップ１０１２に続き、そこで、ステップ１００２において配置されたキャッシュされたエントリがイネーブルにされる場合、操作が検証される。
【００７２】
１つ又は複数の態様によると、プロセッサは、同期操作を実行し、保留中のページ・テーブル・エントリの更新をいつかは強制する。つまり、弱く順序付けられた（weakly ordered）メモリ・システムにおいて、ページ・テーブル・エントリは、最終的に更新することはできるが、更新される時間に関する保証がない。従って、同期処理は、同期命令の受信に基づいて更新を強制する。さらに、１つの実施において、更新は、個々のキャッシュ及び／又はページ・テーブル・エントリの無効化を要求することなく、行われる。
【００７３】
例として、再構成などのメモリ・ページ上で行われる一括操作、メモリ・ページのフリー・リストの管理、及びプロセスが終了するときのティアダウン（teardown）の実施を含む、こうした同期プロセスを使用することができる多くの状況がある。同期を行って、ページ・テーブル・エントリの更新を強制し、従って、全てのエントリを無効化するのではなく、例えば無効化される（例えば、Ｃ＝１）エントリにおける選択性を提供する。
【００７４】
図１２を参照して説明されるように、同期操作を用いることができる１つの例示的な状況は、アドレス空間の再構成である。図１２を参照すると、最初に、ローカル・プロセッサが、ＲＣｓｙｎｃ操作を発行して、あらゆる保留中のＲ／Ｃ更新（又は他の例では、他の状況の更新）でのページ・テーブル・エントリの更新を強制する（ステップ１１００）。その後、本明細書で説明されるように、ＲＣｓｙｎｃ命令を実行しているローカル・プロセッサからＲＣｓｙｎｃ要求を受け取る各遠隔プロセッサが、同期操作を行う。進行中のＲＣｓｙｎｃ操作（ステップ１１００）と並行して、ローカル・プロセッサは、各遠隔プロセッサに、例えば、ＴＬＢＩＥＬ命令又はローカルＩＰＴＥ命令（例えば、ローカルＴＬＢクリア・ファシリティがインストールされ、Ｍ４フィールドにおけるＬＣビットが１である場合のＩＰＴＥ命令）を用いて、遠隔プロセッサに対応する１つ又は複数のキャッシュ内の複数のページ・テーブル・エントリの一括操作無効化を行うことを要求する（ステップ１１０２ａ〜１１０２ｃ）。例として、エントリの無効化は、エントリ内の有効インジケータを特定の値（例えば、Ｖ＝０）に設定すること、エントリを削除すること、又は他の方法でエントリを使用不能にすること等を含む。
【００７５】
ローカル・プロセッサが要求する遠隔ＲＣｓｙｎｃ操作の完了に続いて、各遠隔プロセッサは、それぞれの遠隔プロセッサ上のローカル無効化が完了したかどうかに関係なく、ＲＣｓｙｎｃ操作の完了を示す表示をローカル・プロセッサに送る（ステップ１１０３）。ローカル・プロセッサが、遠隔プロセッサがＲＣｓｙｎｃ同期操作を完了したとの表示を受信することに基づいて、ローカル・プロセッサは、アドレス空間の再構成を続行して、メモリ内の１つ又は複数のページ・テーブル・エントリを、再構成されたアドレス空間の状態を反映させるように更新し、プロセッサのキャッシュ・エントリ上でローカル無効化操作を実施し（ステップ１１０４）、再構成前のアドレス空間に対応するＣ＝古くなったキャッシュ・エントリが、ローカル・プロセッサ上に格納されないことを保証する。遠隔プロセッサが無効化を完了すると、遠隔プロセッサは、例えばステップ１１０６を介して、アドレスの再構成の完了を待つ。その後、ローカル及び遠隔プロセッサ上で、実行を再開することができる（ステップ１１０６）。一実施形態においては、ＲＣｓｙｎｃを実行することにより、ローカル・プロセッサは、遠隔プロセッサ上のローカル無効化が完了するまで待つ必要はないが、代わりに、遠隔プロセッサがＲＣｓｙｎｃ同期処理を完了したという表示を受け取った後、並行して続行することができ、従って、１つ又は複数の態様によれば、メモリ内に含まれるページ・テーブル・エントリは、最新の状態のＲ及びＣ状態インジケータ、並びに、随意的に、遠隔プロセッサにより更新され、ＲＣｓｙｎｃで同期することができるＰＴＥ内に含まれる他の情報を含む。
【００７６】
１つの特定の例において、同期操作を用いて、アドレス空間を、読み取り専用アドレス空間に対応するように再構成することができる。一実施形態によると、書き込まれたページは既知であるので、それらを追跡し、ディスクに書き込むこと等が可能である。具体的な例において、アドレス空間は、パーティション・マイグレーション（partition migration）のような技術及びコピー・オン・ライト（copy-on-write）技術において、読み取り専用にされる。コピー・オン・ライトは、例えば、Ｕｎｉｘオペレーティング・システムにおけるｆｏｒｋ（）操作並びに他の操作において用いられる。１つのこうした実施形態において、コピー・オン・ライトは、大きなメモリ領域を、こうした領域に対応する全てのメモリ・ページの複製と関連した長い初期待ち時間を生じさせることなくコピーするために用いられる。例えば、コピー・オン・ライト技術は、一例として、メモリ全体を読み取り専用にし、複数のプロセスがメモリ・ページを共有することを可能にする。次に、特定のプロセスが、メモリ空間のコピーの特定のページへの書き込みを望むとき、システムが機能し、プロセスによりそうしたページへの書き込みに進むのを可能にする前に、そのページのコピー・オン・ライト・コピーを実施し、そのページを書き込み可能にする。
【００７７】
ページを読み取り専用にするための論理の一実施形態が、図１３を参照して説明される。一例において、ローカル・プロセッサ（即ち、アドレス空間を読み取り専用にしたいと望むプロセッサ）は、読み取り専用にされるメモリ・ページに対応するページ・テーブル・エントリを更新して、読み取り専用を指示し（ｐｐとマーク付けされた図５のページ保護ビット、即ちページ・テーブル・エントリの第２のダブルワードのビット０、６２及び６３を、対象ページへの書き込みを許可しないように設定する）（ステップ１２００）、次に、ＲＣｓｙｎｃのような同期操作を実行して、ＲＣｓｙｎｃ操作を発行する時点まで更新が実行中であり得る全ての参照及び変更インジケータを同期させる（例えば、強制する）（ステップ１２０２）。
【００７８】
上述のように、遠隔プロセッサは、ＲＣｓｙｎｃ操作を受け取り、これを処理し（ステップ１２０４）、完了を指し示す（ステップ１２０６）。他の遠隔処理も続行する（ステップ１２０８）。
【００７９】
ローカル・プロセッサは、完了の表示を受け取り、遠隔プロセッサにより同期操作が完了した後、ローカル・プロセッサは、遠隔格納されたページ（例えば、Ｃ＝１を有するもの）の正確なリストを有する。さらに、ページ・テーブル・エントリは読み取り専用に設定されたので、遠隔プロセッサは、ストア操作のために新しいページを使用することができず、従って、例えば図９に説明される変更インジケータ・チェック技術は機能しない。
【００８０】
今やローカル・プロセッサは、変更設定（set change）インジケータを有する（例えば、Ｃ＝１）ページ・テーブル・エントリに対応するアドレス変換キャッシュ・エントリを無効化する（ステップ１２１０）。例えば、ローカル・プロセッサは、それ自体のローカル・エントリを無効化し、表示を遠隔プロセッサにブロードキャストし、遠隔プロセッサに、各自のキャッシュされたエントリを無効化するように指示する。これらのキャッシュされたページ・テーブル・エントリは、ステップ１２００における更新の後、遠隔プロセッサにより依然として書き込み更新され得る全てのページに対応し（他のページに格納しようとする試みにより、図９の技術が機能しなくなるので）、全てのページ・テーブル・エントリにおける正確なＲ／Ｃ情報の存在なしに無効化しなければならない場合よりも少ないページのセットを表す。これらのキャッシュされたページ・テーブル・エントリは、例えば無効化されるページのリストに応答してＴＬＢＩＥＬ命令又はローカルＩＰＴＥ命令を用いる、各遠隔プロセッサ上のソフトウェアにより調整されるローカル・キャッシュ無効化と併せて、ＴＬＢＩＥ又はＩＰＴＥのようなグローバル・ハードウェア無効化命令のブロードキャスト、又は、単一の一括無効化要求をブロードキャストすること（例えば、プロセッサ間割り込みファシリティを用いた）を含むソフトウェア・シーケンスのいずれかを用いて、無効化することができる。さらに、変更設定インジケータを有するページは、ページをディスクに書き込むなど、処理される。
【００８１】
別の実施形態において、ステップ１２００に対応する第１のページ・テーブル・エントリ更新ステップは、ＲＣｓｙｎｃを実施する前に無効にされる全てのページ・テーブル・エントリを更新し、第２の処理ステップ１２１０は、ページ・テーブル・エントリを更新して読み取り専用にし、ＲＣｓｙｎｃに応答して遠隔プロセッサにより実施されるページ・テーブル・エントリの同時更新をさらに同期させる。
【００８２】
ページを読み取り専用にするための論理の一実施形態が、図１４を参照して説明される。一例において、ローカル・プロセッサ（即ち、アドレス空間を読み取り専用にしたいと望むプロセッサ）は、ＲＣｓｙｎｃ命令のような第１の同期操作を遠隔プロセッサに発行する（ステップ１３００）。上述のように、遠隔プロセッサは、同期操作を受け取り、それを処理し（ステップ１３０２）、次いで、完了を示す表示を送る（ステップ１３０４）。さらに、遠隔プロセッサにおける処理が続行する（ステップ１３０５）。（別の実施形態においては、図１３に示されるように、この第１の同期操作は実施されない。）
【００８３】
遠隔プロセッサから、同期操作の完了表示を受け取ることに基づいて、ローカル・プロセッサは、読み取り専用にされるメモリ・ページに対応するページ・テーブル・エントリを更新して読み取り専用を指示すると共に、上述のように変更設定インジケータを有する（例えば、Ｃ＝１）キャッシュ・エントリを無効化し、それらのページについての処理をスケジューリングする（ステップ１３０６）。修正されたページの処理の一実施形態において、修正されたページが、外部ストレージ（例えば、ハード・ディスク又はフラッシュ・メモリなど）に書き込まれる。その後、ローカル・プロセッサにより、ＲＣｓｙｎｃのような第２の同期操作が発行され、第２のＲＣｓｙｎｃ操作の発行時点まで実行中であった、最初のＲＣｓｙｎｃ（ステップ１３００）以来行われた全ての残りのページ・テーブルのＲ及びＣ状態更新を同期させる（例えば、強制する）（ステップ１３０８）。
【００８４】
上述のように、遠隔プロセッサは、ＲＣｓｙｎｃ操作を受け取り、これを処理し（ステップ１３１０）、完了を示す（ステップ１３１１）。他の遠隔処理も続行する（ステップ１３１２）。遠隔プロセッサにより、第２の同期操作が完了された後、ローカル・プロセッサは、遠隔格納されたページ（例えば、Ｃ＝１）の正確なリストを有する。さらに、ページ・テーブル・エントリは読み取り専用に設定されたので、遠隔プロセッサは、ストアのために新しいページを使用することができず、従って、変更インジケータ・チェック技術は機能しない。
【００８５】
本明細書で説明されるように、ローカル・プロセッサは、変更設定インジケータを有する（例えば、Ｃ＝１）キャッシュ・エントリを無効化する（ステップ１３１４）。１つ又は複数の態様によると、この第２の処理ステップ（ステップ１３１４）は、第１のＲＣｓｙｎｃと第２のＲＣｓｙｎｃとの間で修正されたあらゆるページの処理に対応する。この実施形態において、更新の大部分は、ステップ１３０６の間に開始することができ、無効化及び他の処理（外部ストレージへの修正されたページの書き込みに対応するＩ／Ｏ操作など）が、ＲＣｓｙｎｃの処理と重複することがある（１３０８）。さらに、変更設定インジケータを有するページが、ページをディスクに書き込むなど、処理される。
【００８６】
さらに、無効化要求のハードウェア・ブロードキャストと併せてＴＬＢＩＥ又はＩＰＴＥを実行することによって、又は、ローカル及び遠隔プロセッサの各々で実行されるソフトウェアにより同期されるローカル無効化によって、無効化を実施することができる。
【００８７】
少なくとも１つの代替的な実施形態において、ステップ１３０６は、有効インジケータを無効に設定することによって無効化されるインメモリ・ページ・テーブル・エントリを示し、第２のステップ１３１４は、例えば、ページ・テーブル・エントリ更新をさらに同期するために、ページ・テーブル・エントリを読み取り専用状態に更新する。
【００８８】
ページを読み取り専用にする他の実施形態において、最初にページ・テーブル・エントリを無効化し、次に、エントリを読み取り専用にマーク付けすることができる。
【００８９】
同期操作の別の使用は、メモリ・ページのフリー・リストを更新することである。仮想メモリを使用するシステムにおいて、オペレーティング・システムは、例として、ページがページインされるとき、バッファが割り当てられるとき、又はアプリケーションにより新しいページが要求されるときに使用されるメモリ・ページのフリー・リストを保持することになる。フリー・リストを保持する目的は、殆ど使用されないページをフリー・リストに入れることである。従って、オペレーティング・システムは、Ｒ＝０を有するページを探すか、又はより細かい粒子の処理についての付加的な参照情報を調べる。一実施形態において、付加的な情報は、最後の参照（例えば、ページへの読み取り又は書き込みアクセス）のタイムスタンプ、又は、複数のタイム・スライスの各々において参照が行われるかどうかを示すビット・ベクトルに対応し、ビット・ベクトルの各ビットが１つのそうしたスライスに対応する。
【００９０】
フリー・リストを管理するために同期操作を用いる一実施形態が、図１５を参照して説明される。最初に、ローカル・プロセッサ（例えば、フリー・リストを管理しているプロセッサ）は、最新の情報を得るために、ＲＣｓｙｎｃのような第１の同期操作を発行する（ステップ１４００）。上述のように、同期要求を受け取る遠隔プロセッサは、それを処理し（ステップ１４０２）、次に、完了を示す（ステップ１４０４）。さらに、遠隔処理が続行する（ステップ１４０６）。（別の実施形態においては、この第１の同期操作は実施されない。）
【００９１】
同期操作を実施する予定だった遠隔プロセッサの全てから完了表示を受け取ることに基づいて、ローカル・プロセッサは、多数のタスクを実施する（ステップ１４０８）。これらのタスクは、例えば、参照インジケータが設定されない（例えば、Ｒ＝０）ページのような、フリー・リストについての１つ又は複数のページを識別し；随意的に、変更インジケータが設定される（例えば、Ｃ＝１）場合、ディスク書き込みについて１つ又は複数のページをスケジューリングし；ページ・テーブル・エントリ内の１つ又は複数のページを無効に設定し（又は、それらをフリー・リストにあるものとしてマーク付けする）；及び／又は本明細書に説明されるように（例えば、ＩＰＴＥ、ＴＬＢＩＥを用いて）無効化する必要があるページに対応するあらゆるキャッシュ・アドレス変換エントリに対して無効化を実施することを含む。
【００９２】
その後、ローカル・プロセッサは、ＲＣｓｙｎｃのような第２の同期操作を遠隔プロセッサに発行する（ステップ１４１０）。遠隔プロセッサは、第２の同期操作を処理し（ステップ１４１２）、完了を示す（ステップ１４１４）。さらに、他の遠隔処理が続行する（ステップ１４１６）。
【００９３】
同期操作を実施する予定の遠隔プロセッサにより、同期操作が完了された後、ローカル・プロセッサは、遠隔使用されるページの正確なリストを有する。今やローカル・プロセッサは、本明細書で説明されるように、変更設定又は参照インジケータを有する（例えば、Ｃ＝１又はＲ＝１）ページ・テーブル・エントリ及び／又はキャッシュ・エントリだけを無効化する（ステップ１４１８）。これは、第１の同期操作から第２の同期操作へと変化したページのクリーンアップである。一実施形態において、１つ又は複数のプロセッサにより参照され、１つ又は複数の変換キャッシュ内にある可能性が高いことが分かっているページだけを無効化する必要があり、それにより、ページ無効化の必要性が低減される。さらに、変更設定インジケータを有するページが、ページをディスクに書き込むなど、処理される。
【００９４】
同期処理が用いられる別の例は、プロセスが終了するときに行われるプロセス・ディアダウンにおけるものである。プロセス・ティアダウンにおいて、このプロセスが唯一のユーザである場合、そのプロセスのページの全てが無効化される又はフリー・リスト上に載せられる。また、プロセス・ティアダウンにおいて、ページがライトバックされる場合、ライトバック処理が開始される。
【００９５】
プロセス・ティアダウンを実施するために同期操作を用いる一実施形態が、図１６を参照して説明される。最初に、ローカル・プロセッサ（例えば、プロセス・ティアダウンを実施しているプロセッサ）は、最新の情報を得るために、ＲＣｓｙｎｃのような第１の同期操作を発行する（ステップ１５００）。上述のように、同期要求を受け取る遠隔プロセッサは、それを処理し（ステップ１５０２）、次に、完了を示す（ステップ１５０４）。さらに、遠隔処理が続行する（ステップ１５０６）。（別の実施形態においては、この第１の同期操作は実施されない。）
【００９６】
同期操作を実施する予定だった遠隔プロセッサの全てから完了の表示を受け取ることに基づいて、ローカル・プロセッサは、多数のタスクを実施する（ステップ１５０８）。これらのタスクは、例えば、プロセスの各ページについて、ページがプロセスにおいてのみ使用される場合、ページを無効に設定し；随意的に、本明細書に説明されるように（例えば、ＩＰＴＥ、ＴＬＢＩＥを用いて）無効化する必要があるあらゆるページについてのキャッシュされたアドレス変換の無効化を実施し；及びページがディスクにライトバックされる場合、ライトバック操作を開始することを含む。
【００９７】
その後、ローカル・プロセッサは、ＲＣｓｙｎｃのような第２の同期操作を遠隔プロセッサに発行する（ステップ１５１０）。遠隔プロセッサは、第２の同期操作を処理し（ステップ１５１２）、完了を示す（ステップ１５１４）。さらに、他の遠隔処理が続行する（ステップ１５１６）。
【００９８】
同期操作を実施する予定の遠隔プロセッサにより同期操作が完了された後、ローカル・プロセッサは、遠隔使用されるページの正確なリストを有する。今やローカル・プロセッサは、本明細書で説明されるように、変更設定又は参照インジケータを有する（例えば、Ｃ＝１又はＲ＝１）ページ・テーブル・エントリ及び／又はキャッシュ・エントリだけを無効化する（ステップ１５１８）。これは、第１の同期操作から第２の同期操作へと変化したページのクリーンアップである。さらに、変更設定インジケータを有するページが、ページをディスクに書き込むなど、処理される。
【００９９】
ページ・テーブル・エントリについての最新の状態情報を得るために多数の技術が使用できる同期能力が、本明細書に詳細に説明される。一例において、同期操作は、マルチプロセッサ・システムにおけるＲＣｓｙｎｃの実行が完了する前に行われたページ・テーブル・エントリの動的に更新された部分の全ての更新を確実にするＲＣｓｙｎｃ命令を使用する。一実施形態において、単一のＲＣｓｙｎｃにより全てのタイプの更新が完了したことが保証され、別の実施形態においては、ＲＣｓｙｎｃは、特定のフィールドを指定するために（例えば、Ｃフィールドを更新するが、Ｒは更新しない等）、付加的なパラメータを提供する。多くの変形が可能である。
【０１００】
更に別の実施形態において、命令のシーケンスを実行することによって、及び／又は、１つ又は複数の制御レジスタを書き込むことによって、ＲＣｓｙｎｃを指し示すことができる。他の変形も可能である。
【０１０１】
一実施形態において、ＲＣｓｙｎｃは、単一の命令を用いて、キャッシュ・エントリを無効化することなく（即ち、キャッシュ・エントリが有効なままでいることを可能にしながら）、ＲＣｓｙｎｃを受け取るときに識別されるキャッシュ・エントリ内の保留中の更新に基づいて、更新されるべき全てのページ・テーブル・エントリを更新する。
【０１０２】
最新のＲ／Ｃインジケータを受け取るための現在の手法は、ＰＴＥごとの無効化（例えば、ＴＬＢＩＥ）を必要とする。しかしながら、１つ又は複数の態様によれば、単一のブロードキャストが、Ｒ／Ｃ（及び／又は他のＰＴＥ状態情報）を更新し、処理を加速することができる。例えば、各遠隔プロセッサへの単一のラウンドトリップ（round trip）において、ＲＣｓｙｎｃの実施前に保留中である全てのＲ／Ｃ更新が、メモリにコミットされる。この同期処理は、ローカルＴＬＢの無効化を実施するために単一のソフトウェア要求を用いるプロセッサ間割り込み（interprocessor interrupt、ＩＰＩ）ベースのＴＬＢ無効化と併せて用いることができる。
【０１０３】
１つ又は複数の態様によると、延期されたＲ／Ｃ更新を有する弱く順序付けられたメモリを備えるコンピューティング環境（即ち、いずれかの特定の時間内に更新が保証されないという点で、コヒーレントな更新なしに構成されたコンピューティング環境）が、例えば、一括降格（デモート）、無効化等を局所的に実施するのを可能にする同期プロセスが提供される。
【０１０４】
本明細書における多数の例においては、ページ・テーブルが更新されるが、１つ又は複数の態様は、他のアドレス変換構造にも適用できる。さらに、ページ以外の他のメモリのユニットにアクセスし、及び／又はそこに格納することができる。ページ及びページ・テーブルの使用は例にすぎない。さらに、メモリのページは、４Ｋ、又は４Ｋを上回る若しくは下回るなど、いずれのサイズであってもよい。
【０１０５】
図１７を参照すると、一例において、コンピュータ・プログラム１６００が、例えば、１つ又は複数の実施形態を提供し、容易にするように、コンピュータ可読プログラム・コード手段、論理及び／又は命令１６０４をその上に格納するための１つ又は複数の非一時的コンピュータ可読ストレージ媒体１６０２を含む。
【０１０６】
本発明は、システム、方法、及び／又はコンピュータ・プログラムとすることができる。コンピュータ・プログラムは、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体（単数又は複数）を含むことができる。
【０１０７】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの：即ち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み取り専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、パンチカード又は命令が記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、又はワイヤを通って伝搬される電気信号などの、一時的信号自体として解釈されない。
【０１０８】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク及び／又は無線ネットワークなどのネットワークを介して、外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び／又はエッジ・サーバを含むことができる。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
【０１０９】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、又は、「Ｃ」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又はプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、コンピュータ可読プログラム命令の状態除法を用いて、電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
【０１１０】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラムのフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【０１１１】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。
【０１１２】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実行するためのプロセスを提供するようにすることもできる。
【０１１３】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラムの可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【０１１４】
上記に加えて、１つ又は複数の態様は、顧客環境の管理を提供するサービス・プロバイダによって供与、提供、配備、管理、サービス等を行うことができる。例えば、サービス・プロバイダは、１又は複数の顧客のために１つ又は複数の態様を実施するコンピュータ・コード及び／又はコンピュータ・インフラストラクチャの作成、保守、サポート等を行うことができる。見返りに、サービス・プロバイダは、例として、予約申し込み及び／又は報酬契約の下で顧客から支払いを受けることができる。付加的に又は代替的に、サービス・プロバイダは、１又は複数の第三者に対する広告内容の販売から支払いを受けることができる。
【０１１５】
一態様において、１つ又は複数の実施形態を実施するために、アプリケーションを配備することができる。一例として、アプリケーションの配備は、１つ又は複数の実施形態を実施するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【０１１６】
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピュータ・インフラストラクチャを配備することができ、そこでは、コードは、コンピューティング・システムと協働して、１つ又は複数の実施形態を実施することができる。
【０１１７】
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、プロセスを提供することができる。コンピュータ・システムは、コンピュータ可読媒体を含み、ここで、コンピュータ媒体は、１つ又は複数の実施形態を含む。コードは、コンピュータ・システムと協働して、１つ又は複数の実施形態を実施することができる。
【０１１８】
種々の実施形態が上述されたが、これらは例にすぎない。例えば、１つ又は複数の実施形態を組み込み、使用するために、他のアーキテクチャのコンピューティング環境を使用することもできる。さらに、異なる命令、命令形式、命令フィールド、及び／又は命令の値を使用することができる。さらに、他の方法で同期を実施することもできる。多くの変形が可能である。
【０１１９】
さらに、他のタイプのコンピューティング環境の利益を得、これを使用することができる。一例として、プログラム・コードを格納及び／又は実行するのに適しており、システム・バスを介してメモリ要素に直接又は間接的に結合された少なくとも２つのプロセッサを含む、データ処理システムを使用することができる。メモリ要素は、例えば、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量記憶装置、及び実行中に大容量記憶装置からコードを取り出さなければならない回数を減らすために少なくとも幾つかのプログラム・コードの一時的なストレージを提供するキャッシュ・メモリを含む。
【０１２０】
入力／出力即ちＩ／Ｏデバイス（これらに限定されるものではないが、キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サムドライブ及び他のメモリ媒体等）は、直接システムに結合することもでき、又は介在するＩ／Ｏコントローラを介してシステムに結合することができる。ネットワーク・アダプタをシステムに結合させて、データ処理システムが、介在する私的ネットワーク又は公衆ネットワークを通じて他のデータ処理システム又は遠隔プリンタ若しくはストレージ・デバイスに結合できるようにすることもできる。モデム、ケーブル・モデム及びイーサネット・カードは、ネットワーク・アダプタの利用可能なタイプのうちのほんの数例である。
【０１２１】
更に別の実施形態において、１つ又は複数の態様は、クラウド・コンピューティングに関する。本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書で述べられる教示の実装は、クラウド・コンピューティング環境に限定されるものではないことが予め理解される。むしろ、本発明の実施形態は、現在知られている又は後に開発される他のいずれかのタイプのコンピューティング環境と併せて実装することができる。
【０１２２】
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス）の共有プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするサービス配信のモデルである。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、及び少なくとも４つの配備モデルを含むことができる。
【０１２３】
特徴は、以下の通りである。
オンデマンド・セルフサービス：クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス：機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、及びＰＤＡ）による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化：プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないが、より高レベルの抽象化では位置（例えば、国、州、又はデータセンタ）を特定できる場合があるという点で、位置とは独立しているといえる。
迅速な弾力性：機能は、迅速かつ弾力的に、幾つかの場合自動的に、プロビジョニングして素早くスケール・アウトし、迅速にリリースして素早くスケール・インさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
サービスの測定：クラウド・システムは、サービスのタイプ（例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント）に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
【０１２４】
サービス・モデルは以下の通りである。
Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＳａａＳ）：クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ（例えば、ウェブ・ベースの電子メール）などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＰａａＳ）：プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上に配備するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、配備されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＩａａＳ）：コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアを配備及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント（例えば、ホストのファイアウォール）選択の限定された制御を有する。
【０１２５】
配備モデルは以下の通りである。
プライベート・クラウド：クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
コミュニティ・クラウド：クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項（例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項）を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
パブリック・クラウド：クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド：クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術（例えば、クラウド間の負荷分散のためのクラウド・バースティング）によって結び付けられる２つ又はそれより多いクラウド（プライベート、コミュニティ、又はパブリック）の混成物である。
【０１２６】
クラウド・コンピューティング環境は、無国籍性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【０１２７】
ここで図１８を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示される。クラウド・コンピューティング・ノード６０１０は、好適なクラウド・コンピューティング・ノードの単なる一例であり、本明細書で説明される本発明の実施形態の使用又は機能の範囲に対するいずれかの制限を示唆することを意図するものではない。上記に関係なく、クラウド・コンピューティング・ノード６０１０は、本明細書で上述された機能のいずれかを実装及び／又は実施することができる。
【０１２８】
クラウド・コンピューティング・ノード６０１０には、他の多数の汎用又は専用コンピューティング・システム環境又は構成で動作可能な、コンピュータ・システム／サーバ６０１２が存在する。コンピュータ・システム／サーバ６０１２と共に用いるのに好適な周知のコンピューティング・システム、環境、及び／又は構成の例としては、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ型デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上述のシステム又はデバイス等のいずれかを含む分散型クラウド・コンピューティング環境が含まれる。
【０１２９】
コンピュータ・システム／サーバ６０１２は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム／サーバ６０１２は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体に配置することができる。
【０１３０】
図１８に示されるように、クラウド・コンピューティング・ノード６０１０のコンピュータ・システム／サーバ６０１２は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム／サーバ６０１２のコンポーネントは、これらに限定されるものではないが、１つ又は複数のプロセッサ又は処理ユニット６０１６、システム・メモリ６０２８、及びシステム・メモリ６０２８を含む種々のシステム・コンポーネントをプロセッサ６０１６に結合するバス６０１８を含むことができる。
【０１３１】
バス６０１８は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のうちのいずれかの１つ又は複数を表す。限定ではなく例としては、このようなアーキテクチャは、業界標準アーキテクチャ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ、ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ、ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカル・バス、及びＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスを含む。
【０１３２】
コンピュータ・システム／サーバ６０１２は、典型的には、種々のコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム／サーバ６０１２がアクセス可能ないずれかの利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
【０１３３】
システム・メモリ６０２８は、ランダム・アクセス・メモリ（ＲＡＭ）６０３０及び／又はキャッシュ・メモリ６０３２など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ６０１２は、他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体（図示されておらず、典型的には「ハードドライブ」と呼ばれる）との間の読み出し及び書き込みのために、ストレージ・システム６０３４を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク（例えば、「フレキシブル・ディスク」）との間の読み出し及び書き込みのための磁気ディスク・ドライブと、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。このような例においては、それぞれを、１つ又は複数のデータ媒体インターフェースによってバス６０１８に接続することができる。以下でさらに示され説明されるように、メモリ６０２８は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールの組（例えば、少なくとも１つ）を有する少なくとも１つのプログラムを含むことができる。
【０１３４】
限定ではなく例として、メモリ６０２８内に、プログラム・モジュール６０４２の組（少なくとも１つ）を有するプログラム／ユーティリティ６０４０、並びにオペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装形態を含むことができる。プログラム・モジュール６０４２は、一般に、本明細書で説明される本発明の実施形態の機能及び／又は方法を実行する。
【０１３５】
コンピュータ・システム／サーバ６０１２は、キーボード、ポインティング・デバイス、ディスプレイ６０２４等のような１つ又は複数の外部デバイス６０１４；ユーザがコンピュータ・システム／サーバ６０１２と対話することを可能にする１つ又は複数のデバイス；及び／又はコンピュータ・システム／サーバ６０１２が１つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス（例えば、ネットワーク・カード、モデムなど）と通信することもできる。このような通信は、入力／出力（Ｉ／Ｏ）インターフェース６０２２を経由して行うことができる。さらにまた、コンピュータ・システム／サーバ６０１２は、ネットワーク・アダプタ６０２０を介して、ローカル・エリア・ネットワーク（ＬＡＮ）、汎用広域ネットワーク（ＷＡＮ）、及び／又はパブリック・ネットワーク（例えば、インターネット）などの１つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ６０２０は、バス６０１８を介して、コンピュータ・システム／サーバ６０１２の他のコンポーネントと通信する。図示されないが、コンピュータ・システム／サーバ６０１２と共に他のハードウェア及び／又はソフトウェア・コンポーネントを使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部のディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープドライブ、及びデータ・アーカイブ・ストレージ・システムなどが含まれる。
【０１３６】
ここで図１９を参照すると、例示的なクラウド・コンピューティング環境６０５０が示される。示されるように、クラウド・コンピューティング環境６０５０は、例えば携帯情報端末（ＰＤＡ）又は携帯電話６０５４Ａ、デスクトップ・コンピュータ６０５４Ｂ、ラップトップ・コンピュータ６０５４Ｃ、及び／又は自動車コンピュータ・システム６０５４Ｎなどといった、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、１つ又は複数のクラウド・コンピューティング・ノード６０１０を含む。ノード６０１０は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくはハイブリッド・クラウド、又はこれらの組み合わせなど、１つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる（図示せず）。これにより、クラウド・コンピューティング環境６０５０は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、及び／又はソフトウェアを提供することが可能になる。図２６に示されるコンピューティング・デバイス６０５４Ａ−Ｎのタイプは単に例示であることを意図し、コンピューティング・ノード１０及びクラウド・コンピューティング環境６０５０は、いずれのタイプのネットワーク及び／又はネットワーク・アドレス指定可能な接続上でも（例えば、ウェブ・ブラウザを用いて）、いずれのタイプのコンピュータ化された装置とも通信できることを理解されたい。
【０１３７】
ここで図２０を参照すると、クラウド・コンピューティング環境６０５０（図１９）によって提供される機能抽象化層の組が示される。図２０に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
【０１３８】
ハードウェア及びソフトウェア層６０６０は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、ＩＢＭｚＳｅｒｉｅｓシステムを一例とするメインフレームと、ＩＢＭ  ｐＳｅｒｉｅｓシステムを一例とするＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）アーキテクチャ・ベースのサーバと、ＩＢＭ  ｘＳｅｒｉｅｓシステムと、ＩＢＭ  ＢｌａｄｅＣｅｎｔｅｒシステムと、ストレージ・デバイスと、ネットワーク及びネットワーク・コンポーネントと、が含まれる。ソフトウェア・コンポーネントの例として、ＩＢＭ  ＷｅｂＳｐｈｅｒｅアプリケーション・サーバ・ソフトウェアを一例とするネットワーク・アプリケーション・サーバ・ソフトウェアと、ＩＢＭ  ＤＢ２データベース・ソフトウェアを一例とするデータベース・ソフトウェアとが含まれる。（ＩＢＭ、ｚＳｅｒｉｅｓ、ｘＳｅｒｉｅｓ、ＢｌａｄｅＣｅｎｔｅｒ、ＷｅｂＳｐｈｅｒｅ、及びＤＢ２は、世界中の多数の管轄区域において登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。）
【０１３９】
仮想化層６０６２は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーション及びオペレーティング・システム、並びに仮想クライアントを提供することができる。
【０１４０】
一例においては、管理層６０６４は、以下で説明される機能を提供することができる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、リソースの消費に対する課金又は請求とを提供する。１つの例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータルは、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ、ＳＬＡ）の計画及び履行は、ＳＬＡに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
【０１４１】
ワークロード層６０６６は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例には、マッピング及びナビゲーション、ソフトウェア開発及びライフサイクル管理、仮想教室教育配信、データ分析処理、及びトランザクション処理が含まれる。
【０１４２】
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「１つの（a）」、「１つの（an）」及び「その（the）」は、文脈が特に明示しない限り、複数形も同様に含むことを意図したものである。「含む（comprise）」及び／又は「含んでいる（comprising）」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び／又はコンポーネントの存在を指示するが、１つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び／又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
【０１４３】
以下の特許請求の範囲に存在する場合、「手段又はステップと機能との組合せ（ミーンズ又はステップ・プラス・ファンクション）」要素の対応する構造、材料、動作及び均等物は、明確に特許請求された他の請求要素と共に機能を実行するための任意の構造、材料、又は行為を含むことを意図したものである。本発明の説明は、例証及び説明のためだけに提示されたものであり、網羅的であること又は本発明を開示した形態に限定することを意図したものではない。当業者には、本発明の範囲から逸脱しない多くの修正物及び変形物が明らかとなるであろう。実施形態は、本発明の原理及び実際の用途を最もよく説明するため、及び、当業者が、企図した特定の用途に適するように種々の修正を有する種々の実施形態に関して本発明を理解することができるように、選択され記述された。
【符号の説明】
【０１４４】
１００、２００：コンピューティング環境
１０２：プロセッサ
１０４、２３０：メモリ管理ユニット（ＭＭＵ）
１０５、２３１、３１１：アドレス変換構造
１０６、１１０、２３２：キャッシュ
１０７、２３４：同期ユニット
１１２、２１２：入力／出力（Ｉ／Ｏ）サブシステム
１１４：外部Ｉ／Ｏデバイス
２０２：中央プロセッサ・コンプレックス（ＣＰＣ）
２０８：プロセッサ・メモリ
２１０：中央プロセッサ
２１２：入力／出力（Ｉ／Ｏ）サブシステム
２１４：仮想マシン（又は論理パーティション）
２１６、２２０：プロセッサ・ファームウェア
２１８：ハイパーバイザ
２２２：アプリケーション
２２４：オペレーティング・システム
３０２：ネイティブ中央処理ユニット
３０４：メモリ
３１０：ネイティブ・レジスタ
３１２：エミュレータ・コード
３５０：ゲスト命令
３５４：命令変換ルーチン
３６０：エミュレーション制御ルーチン
４００：ページ・テーブル・エントリ
５００：ＲＣｓｙｎｃ命令
１６００：コンピュータ・プログラム
【図１】
0006362769.tif 000003
【図２】
0006362769.tif 000004
【図３】
0006362769.tif 000005
【図４】
0006362769.tif 000006
【図５】
0006362769.tif 000007
【図６】
0006362769.tif 000008
【図７】
0006362769.tif 000009
【図８】
0006362769.tif 000010
【図９】
0006362769.tif 000011
【図１０】
0006362769.tif 000012
【図１１】
0006362769.tif 000013
【図１２】
0006362769.tif 000014
【図１３】
0006362769.tif 000015
【図１４】
0006362769.tif 000016
【図１５】
0006362769.tif 000017
【図１６】
0006362769.tif 000018
【図１７】
0006362769.tif 000019
【図１８】
0006362769.tif 000020
【図１９】
0006362769.tif 000021
【図２０】
0006362769.tif 000022