(57)【要約】【課題】コンピューティング環境内の処理機能に対するメモリのユニットのローカリティ・ドメイン情報を突きとめることによってコンピューティング環境内の処理を促進する。【解決手段】いったん突きとめられると、メモリのユニットのローカリティ・ドメイン情報をデータ構造にキャッシュすることができ、コンピューティング環境の処理機能に対するメモリのユニットの１つまたは複数の親和性評価に関連付けられるローカリティ・ドメイン情報の１つまたは複数の後続のルックアップを促進する。【選択図】図２９
2021502637.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
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＮＵＭＡシステムのプロセッサは、素早くかつ効率的にローカル・メモリにアクセスすることができる。しかしながら、プロセッサが異なるブックのリモートのメモリにアクセスする必要がある場合、遅延があり、レイテンシとして知られている。また、ブックを相互接続するネットワーク上での帯域幅の問題もある。
【課題を解決するための手段】
【０００５】
コンピューティング環境内の処理を促進するためのコンピュータ・プログラム製品の提供を通じて、先行技術の欠点が対処され、さらなる利点が提供される。コンピュータ・プログラム製品は、処理回路によって読み取り可能であり、実行されると方法を実施する命令を記憶するコンピュータ可読記憶媒体を含む。方法は、例えば、コンピューティング環境内の処理機能に対するメモリのユニットのローカリティ・ドメイン情報を突きとめることと、メモリのユニットのローカリティ・ドメイン情報をデータ構造にキャッシュして、コンピューティング環境の処理機能に対するメモリのユニットの１つまたは複数の親和性評価に関連付けられるローカリティ・ドメイン情報の１つまたは複数の後続のルックアップを促進することとを含む。有利には、突きとめられたメモリのユニットのローカリティ・ドメイン情報をデータ構造にキャッシュすることは、続いてローカリティ・ドメイン情報を検索するための処理オーバヘッドを削減することによりコンピューティング環境内の処理を促進し、結果としてシステム・パフォーマンスが向上する。
【０００６】
１つまたは複数の実施形態において、メモリのユニットは、仮想メモリ・ユニットであり、突きとめることは、仮想メモリ・ユニットを実メモリ・ユニットに変換することと、実メモリ・ユニットを使用してローカリティ・ドメイン情報を、コンピューティング環境の物理的なコンポーネントに関するシステム位置情報を含む設定配列からフェッチすることとを含む。
【０００７】
１つまたは複数の実施形態において、キャッシュすることは、メモリのユニットのローカリティ・ドメイン情報を、コンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュに、キャッシュすることを含むことができる。１つまたは複数のさらなる実装形態において、キャッシュすることは、メモリのユニットのローカリティ・ドメイン情報を、コンピューティング環境のトランスレーション・ルックアサイド・バッファにキャッシュすることを含むことができる。
【０００８】
１つまたは複数の実施形態において、コンピューティング環境はｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（ＮＵＭＡ）コンピューティング環境であり、処理機能に対するメモリのユニットのローカリティ・ドメイン情報は、メモリのユニットがローカリティベースの親和性を有するＮＵＭＡコンピューティング環境の特定の処理ドメインを特定する情報を含む。
【０００９】
１つまたは複数の実装形態において、方法は、メモリのユニットが、コンピューティング環境の複数の処理ドメインの処理ドメインに対するローカリティ親和性を有するかどうかを判断することをさらに含む。判断することは、コンピューティング環境内の処理ドメインのローカリティとの比較のためにメモリのユニットのローカリティ・ドメイン情報をデータ構造から検索することを含むことができる。１つまたは複数の例において、データ構造はコンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュのうちの１つ、またはコンピューティング環境の配列トランスレーション・ルックアサイド・バッファである。さらには、１つまたは複数の例において、方法は、メモリのユニットのローカリティ・ドメイン情報が処理ドメインのローカリティに一致する場合、ローカル親和性を指定する指標を設定することを含むことができる。１つまたは複数の追加的な実施形態において、方法は、メモリのユニットが処理ドメインへのローカリティ親和性を有することに基づいて、処理ドメインによってメモリのユニットにガーベッジ・コレクション処理を実施することを含むことができる。
【００１０】
１つまたは複数の態様に関連するコンピュータ・システムおよびコンピュータ実装方法はまた、本明細書において説明され、特許請求される。さらには、１つまたは複数の態様に関連するサービスがやはり説明され、本明細書において特許請求され得る。
【００１１】
追加的な特徴および利点は、本発明の技法を通じて実現される。本発明の他の実施形態および態様は、本明細書において詳細に説明され、特許請求される発明の一部と見なされる。
【００１２】
本発明の１つまたは複数の態様は、本明細書の結びにおける請求項で例として特に示され明確に特許請求される。本発明の、前述、ならびに他の目的、特徴および利点は、以下の詳細な説明と併せて添付の図面から明らかとなる。
【図面の簡単な説明】
【００１３】
【図１】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例の図である。
【図２】本発明の１つまたは複数の態様による、図１のブック（ドロワー、ボード、サーバなど）のさらなる詳細の図である。
【図３】本発明の１つまたは複数の態様による、図１のブックのメモリ階層構造の一例の図である。
【図４】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境のさらなる詳細の図である。
【図５】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境のシステム・アーキテクチャの様々なレベルに対するメモリのローカリティの図である。
【図６】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境のシステム・アーキテクチャの様々なレベルに対するメモリのローカリティの図である。
【図７】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境のシステム・アーキテクチャの様々なレベルに対するメモリのローカリティの図である。
【図８】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境におけるガーベッジ・コレクションのワーク・キューの代替の実装形態の図である。
【図９】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境におけるガーベッジ・コレクションのワーク・キューの代替の実装形態の図である。
【図１０】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例の図である。
【図１１】アドレス変換の一例の図である。
【図１２】アドレス変換の別の例の図である。
【図１３】本発明の１つまたは複数の態様による、メモリのユニットのローカリティ・ドメイン情報をキャッシュするトランスレーション・ルックアサイド・バッファ（ＴＬＢ）の一例の図である。
【図１４】本発明の１つまたは複数の態様を組み込んで使用するためのアドレス変換機構の一実施形態の図である。
【図１５】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例の、簡略化された概略図である。
【図１６】本発明の１つまたは複数の態様による、ｌｏａｄ＿ｄｏｍａｉｎ命令の一実施形態の図である。
【図１７】本発明の１つまたは複数の態様による、ｌｏａｄ＿ｄｏｍａｉｎ命令にしたがう処理の一実施形態の図である。
【図１８】本発明の１つまたは複数の態様による、コンピューティング環境内のメモリのユニットのローカリティ・ドメイン情報を取得するための処理の代替的な実施形態の図である。
【図１９】本発明の１つまたは複数の態様による、メモリのユニットのローカリティ・ドメイン情報を取得するための処理の別の実施形態の図である。
【図２０】本発明の１つまたは複数の態様による、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）内のローカリティ・ドメイン情報をキャッシュすることと組合せたメモリ・アクセス処理の一実施形態の図である。
【図２１】本発明の１つまたは複数の態様による、ＴＬＢミスがあり、現在ドメイン情報がトランスレーション・ルックアサイド・バッファにない場合の、メモリにアクセスするため、およびローカリティ・ドメイン情報を管理するための、図２０の処理のさらなる実施形態の図である。
【図２２】本発明の１つまたは複数の態様による、ｉｓ＿ｌｏｃａｌ＿ｄｏｍａｉｎ命令の一実施形態の図である。
【図２３】本発明の１つまたは複数の態様による、メモリのユニット（例えば、ガーベッジ・コレクションが行われる）が現在の処理ドメインにローカルかどうかを判断する、ｉｓ＿ｌｏｃａｌ＿ｄｏｍａｉｎ命令にしたがう処理の一実施形態の図である。
【図２４】本発明の１つまたは複数の態様による、メモリ・マネージャ初期化処理の一実施形態の図である。
【図２５】本発明の１つまたは複数の態様による、メモリ・マネージャ初期化処理の代替の実施形態の図である。
【図２６】本発明の１つまたは複数の態様による、メモリ割り当てリクエスト処理の一実施形態の図である。
【図２７】本発明の１つまたは複数の態様による、例えばガーベッジ・コレクション処理に関連付けられるメモリ圧縮関連の処理の一実施形態の図である。
【図２８】本発明の１つまたは複数の態様による、メモリ解放関連の処理の一実施形態の図である。
【図２９】本発明の１つまたは複数の態様による、コンピューティング環境内で処理を促進する一実施形態の図である。
【図３０】本発明の１つまたは複数の態様による、コンピューティング環境内で処理を促進する一実施形態の図である。
【図３１】本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例の図である。
【図３２】図３１のメモリのさらなる詳細の図である。
【図３３】クラウド・コンピューティング環境の一実施形態の図である。
【図３４】抽象モデル・レイヤの一例の図である。
【発明を実施するための形態】
【００１４】
本発明の態様、ならびにその一定の特徴、利点および詳細が、添付の図面において図示される非限定的な例を参照して以下でより詳しく説明される。詳細において本発明を不必要に不明瞭にしないように、良く知られているコンピューティング・システム、デバイス、処理技法などの説明は省略する。しかしながら、詳細な説明および具体的な例は、本発明の態様を示している一方で、限定としてではなく単に説明のために与えられることが理解されるべきである。当業者にとっては、基礎的な発明の概念の思想または範囲あるいはその両方において、様々な置き換え、修正、追加または再構成あるいはその組合せが、本開示から明らかとなろう。さらに、多くの発明的な態様および特徴が本明細書において開示され、矛盾しない限り、それぞれ開示される態様または特徴は、所望であれば、例えばコンピューティング環境内の親和性ドメインベースの処理を促進するなど、コンピューティング環境で処理を促進するための特定のアプリケーションによって、あらゆる他の開示される態様または特徴と組合せ可能であることに留意されたい。
【００１５】
例示的な実施形態は、具体的なコード、設計、アーキテクチャ、プロトコル、レイアウト、概略図またはツールを使用して、限定ではなく単なる例として、説明することができる。さらには、例示的な実施形態は、いくつかの事例において、特定のソフトウェア、ツール、およびデータ処理環境を使用して、単なる明瞭な説明のための例として説明される。例示的な実施形態は、他の比較可能なまたは同様な目的の、構造、システム、アプリケーションまたはアーキテクチャと併せて使用することができる。例示的な実施形態は、ハードウェア、ソフトウェア、またはその組合せに実装することができる。
【００１６】
本開示の例は、単に説明の明瞭さのために使用され、例示的な実施形態に限定しない。追加的なデータ、動作、アクション、タスク、アクティビティ、および操作は、本開示から着想可能であり、それら同一物が例示的な実施形態の範囲内で企図される。
【００１７】
本明細書において列挙されるあらゆる利点は単なる例であり、例示的な実施形態に限定されるよう意図されていない。追加的、または様々な利点を、具体的で例示的な実施形態によって実現することができる。さらには、特定の例示的な実施形態は、本明細書において列挙される利点のいくつか、もしくはすべてを有することができるか、または有していなくてもよい。
【００１８】
ガーベッジ・コレクションは、メモリ内部においてもはや参照されないオブジェクトなどのデータ・ユニットを特定し、それらのオブジェクトを解放する、自動的なメモリ管理処理である。使用されていないメモリを検出するために、ガーベッジ・コレクション処理は典型的には動的に割り当てられるデータ項目のセット、またはヒープをスキャンして、それぞれのメモリ場所について、その場所のあらゆる使用がアプリケーションのメモリ内のあらゆる場所で検出可能であるかどうかを特定する。ガーベッジ・コレクションはプログラム内で合計処理時間のうちかなりの割合を占めることがあり、結果として、パフォーマンスに大きな影響を及ぼすことがある。さらには、ガーベッジ・コレクションのメモリ・スキャンは実際のアプリケーション・プログラムの望ましくない長期の休止をもたらすことがある（「ミューテータ」）。これは、メモリ場所のサブセットが、プロセッサのあるセットについてはプロセッサの別のセットよりも速い、こんにちのサーバ設計で一般的なｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓアーキテクチャなど一定のシステム・アーキテクチャ内でよりさらに増幅され得る。
【００１９】
したがって、１つまたは複数の態様によると、親和性ドメインベースのガーベッジ・コレクションを促進するための機能が提供される。１つまたは複数の実装形態において、アドレス由来の親和性に基づいて、親和的になされたガーベッジ・コレクション処理が本明細書で開示される。
【００２０】
まず、本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例が、図１を参照して説明される。一例において、コンピューティング環境１００は、インターナショナル・ビジネス・マシーンズ・コーポレーション（アメリカ合衆国ニューヨーク州アーモンク）によって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づいている。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の一実施形態は、その全体が参照により本明細書に組み込まれる"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に記載されている。ＰＯＷＥＲ  ＡＲＣＨＩＴＥＣＴＵＲＥ（Ｒ）は、インターナショナル・ビジネス・マシーンズ・コーポレーション（アメリカ合衆国ニューヨーク州アーモンク）の登録商標であることに、さらに留意されたい。
【００２２】
コンピューティング環境はまた、Ｉｎｔｅｌ（Ｒ）のｘ８６アーキテクチャを含むがそれに限定されない、他のアーキテクチャに基づくことができる。他の例もまた存在する。
【００２３】
一例において、コンピューティング環境１００は複数のブック（すなわちドロワー、ボードなど）１０２を含む。ブックは、１つまたは複数の中央処理（ＣＰ）クラスタ１０４（ノードとも称する）およびシステム・コントローラ（ＳＣ）１０６（例えばＳＣチップ）を含む。システム・コントローラはブック１０２を相互接続しており、ＣＰクラスタの１つもしくは複数とは別個であってもよいか、またはＣＰクラスタの１つもしくは複数の一部であってよいか、あるいはその両方である。ブック１０２に関連するさらなる詳細が図２を参照して説明される。
【００２４】
示されるように、一例において、ブック１０２は複数（例えば２つ）の中央処理クラスタ１０４を含む。中央処理クラスタ１０４は複数の中央プロセッサ・チップ１１０を含み、そのそれぞれはシステム・コントローラ１０６に結合されている。中央プロセッサ・チップ１１０は、例えば１チップ当たり８つのコアなど、１つまたは複数のコア（プロセッサまたは中央処理装置（ＣＰＵ）とも称する）１２０を含んでいる。さらに、一例において中央プロセッサ・チップ１１０は、ＣＰクラスタ１０４による使用のためのメモリを提供する、例えば１つまたは複数のデュアル・インライン・メモリ・モジュール（ＤＩＭＭ）１２２に結合されている。
【００２５】
ＣＰクラスタ１０４は、処理を促進するために主メモリならびにメモリ・キャッシュを使用する。ＣＰクラスタ１０４によって採用されるメモリ階層構造の一例が、図３を参照して説明される。一例において、メモリ階層構造２００は、主メモリ２０２、共有されるＬ４キャッシュ２０４、１つまたは複数の共有されるＬ３キャッシュ２０６、１つまたは複数のプライベートなＬ２キャッシュ２０８、および１つまたは複数のプライベートなＬ１キャッシュ２１０を、プロセッサ１２０内に含む。この例の実装形態において、Ｌ４キャッシュ２０４はシステム・コントローラ１０６の一部であり、他のブックへの接続性を与える。例のメモリ階層構造が本明細書において説明されるが、他の例が可能である。
【００２６】
ＣＰクラスタ１０４の一例に関連するさらなる詳細が図４を参照して説明される。一例において、汎用コンピューティング・デバイスの形態で、ＣＰクラスタ１０４が示されている。ＣＰクラスタ１０４は、１つまたは複数のプロセッサまたは処理ユニット３０４（例えば、コア１２０）、メモリ３０６（例として主メモリまたは記憶装置と称される；例えばメモリ２０２）、および１つまたは複数の入力／出力（Ｉ／Ｏ）インターフェース３０８を含むことができ、１つまたは複数のバスまたは他の接続３１０あるいはその両方を介して互いに結合されるが、それに限定されない。
【００２７】
バス３１０は、バス構造のいくつかのタイプのうちの任意の１つまたは複数を表しており、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、およびプロセッサまたは様々なバス・アーキテクチャの任意のものを使用するローカル・バスを含む。限定ではなく例として、そのようなアーキテクチャはインダストリ・スタンダード・アーキテクチャ（ＩＳＡ）、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）、エンハンストＩＳＡ（ＥＩＳＡ）、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカル・バス、およびＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）を含む。
【００２８】
メモリ３０６は例えば、マルチブック・システムにおいてプロセッサ、チップ、ＣＰクラスタおよび１つまたは複数のメモリ・コントローラを相互接続するバスの複合的なシステムを含むキャッシュ階層構造の一部としてプロセッサ３０４のローカル・キャッシュ３２２（例えば、Ｌ２キャッシュ２０８またはＬ１キャッシュ２１０あるいはその両方）に結合することができる共有キャッシュ（例えば、Ｌ４キャッシュ２０４またはＬ３キャッシュ２０６あるいはその両方）などのキャッシュ３２０を含むことができるか、またはそれらに結合することができるか、あるいはその両方である。さらには、メモリ３０６は、１つまたは複数のプログラムまたはアプリケーション３３０、オペレーティング・システム３３２、および１つまたは複数のコンピュータ可読プログラム命令３３４、ならびにガーベッジ・コレクション・ロジック３３６または命令を含むことができる。１つまたは複数の実施形態において、コンピュータ可読プログラム命令３３４は、本発明の態様の実施形態の機能を実行するように構成することができる。
【００２９】
ＣＰクラスタ１０４はまた、例えばＩ／Ｏインターフェース３０８を介して１つもしくは複数の外部デバイス３４０、１つもしくは複数のネットワーク・インターフェース３４２、または１つもしくは複数のデータ記憶デバイス３４４あるいはその組合せと通信することができる。外部デバイスの例としては、ユーザ端末、テープ・ドライブ、ポインティング・デバイス、ディスプレイなどが挙げられる。ネットワーク・インターフェース３４２により、ＣＰクラスタ１０４は、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的なワイド・エリア・ネットワーク（ＷＡＮ）、またはパブリック・ネットワーク（例えば、インターネット）あるいはその組合せなどの、１つまたは複数のネットワークと通信することができ、他のコンピューティング・デバイスまたはシステムとの通信を提供している。
【００３０】
データ記憶デバイス３４４は、１つもしくは複数のプログラム３４６、１つもしくは複数のコンピュータ可読プログラム命令３４８、またはデータあるいはその組合せなどを記憶することができる。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成することができる。
【００３１】
ＣＰクラスタ１０４は、リムーバブル／非リムーバブルの、揮発性／非揮発性のコンピュータ・システム記憶媒体を含むことができるか、またはそれらに結合することができるか、あるいはその両方である。例えば、非リムーバブルの、非揮発性の磁気媒体（典型的には「ハードドライブ」と呼ばれる）、リムーバブルの、非揮発性の磁気ディスク（例えば、「フロッピー（Ｒ）・ディスク」）からの読み取りおよびそれへの書き込みのための磁気ディスク・ドライブ、またはＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭもしくは他の光学媒体などのリムーバブルの、非揮発性の光学ディスクからの読み取りまたはそれへの書き込みのための光学ディスク・ドライブ、あるいはその組合せを含むことができるか、またはそれに結合することができるか、あるいはその組合せである。他のハードウェアまたはソフトウェアあるいはその両方のコンポーネントが、ＣＰクラスタ１０４と併せて使用することができることが理解されるべきである。例として、マイクロコード、デバイス・ドライバ、冗長化処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ記憶装置システムなどが挙げられるが、それに限定されない。
【００３２】
ＣＰクラスタ１０４は、多くの他の汎用または特殊目的の、コンピューティング・システム環境または構成で動作可能であり得る。ＣＰクラスタ１０４の使用に適切であり得る良く知られているコンピューティング・システム、環境、または構成あるいはそれらの組合せの例は、パーソナル・コンピュータ（ＰＣ）システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップのデバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能家庭用電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスなどの任意のものを含む分散クラウド・コンピューティング環境などを含むがそれに限定しない。
【００３３】
図１〜図４に関連して上述されたコンピューティング環境は、ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（ＮＵＭＡ）コンピューティング環境またはシステムの一例である。ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（ＮＵＭＡ）は、メモリ・アクセス時間がプロセッサに対するメモリ場所に依存する、マルチプロセッシングで使用されるコンピュータ・メモリ設計である。ＮＵＭＡのもとでプロセッサは、プロセッサ自身のローカル・メモリには、非ローカル・メモリ（すなわち、別のプロセッサにとってローカルなメモリ、またはプロセッサ間で共有されるメモリ）に対するよりも速くアクセスすることができる。そのようなコンピューティング環境においては、メモリが特定のプロセッサに対してローカル・メモリか、または非ローカル・メモリかどうかに関わらず、すべてのＮＵＭＡメモリはシステム内でプロセッサによって単一の共通のグローバル・アドレス空間でアクセスされる。上で説明したように、ＮＵＭＡコンピューティング環境において、プロセッサはブック（例えば、ドロワー、またはボード）にわたって分散され、それぞれのブックは、そのブックにローカルな１つまたは複数のプロセッサ接続メモリを含むことができる。図１および図２で図示されるように、あるブックのプロセッサが他のブックのメモリにアクセスすることができるように、ブックはネットワークによって相互接続される。述べたように、そのようなコンピューティング環境内のガーベッジ・コレクションは時間がかかることがあり、システムのパフォーマンスに大きな影響を及ぼすことがある。やはり述べたように、ガーベッジ・コレクション処理の一部としてのメモリ・スキャンは計算コストが高くつく可能性があり、実際のアプリケーション・プログラムの潜在的に望ましくない長期の休止につながる（「ミューテータ」）。これは、メモリ場所のサブセットが、プロセッサのあるセットについてはプロセッサの他のセットよりも速い、こんにちのサーバ設計で一般的なｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓシステムなどのコンピューティング環境内で増幅され得る。したがって、本明細書において開示されるように、可能であればこれらのメモリ場所へ最も速いアクセスを有するプロセッサのメモリ場所のそれぞれのセットについてアプリケーション・ヒープのメモリ・スキャンを実施することが望ましい。
【００３４】
そのような親和的になされたガーベッジ・コレクションへの一手法は、それぞれのソフトウェア実行スレッドについて、特定のプロセッサ・コアに密に接続され、ソフトウェア・スレッドを同一のコア上のハードウェア実行スレッドに結合していることが既知であるメモリ・プールからヒープ・メモリを割り当てることである。不利なこととして、そのような編成はソフトウェア・スタックにおいて著しい侵襲的な変更を必要とする。例えば、特定のプロセッサに取り付けられたメモリ内でメモリ割り当てをリクエストする能力を必要とする場合があり、アプリケーションからオペレーティング・システムへ、さらにはオペレーティング・システムからハイパーバイザへの適当なリクエストを含む。やはり、そのように割り当てられたメモリのプロセッサ・ノードへの結合が必要となる場合があり、すなわち、プロセッサがメモリをページ・アウトして、後でメモリにページ・インする場合、ページ・インは元々リクエストされたのと同一のプロセッサに割り当てられたメモリに発生する。さらには、プロセッサに取り付けられるメモリがいったん割り当てられてしまうと、実行がそのコア上に常駐し続け、オペレーティング・システムおよびハイパーバイザ両方についてのスケジューリングの自由度を限定するように、ソフトウェア・スレッドのハードウェア・プロセッサへの結合が必要となることがある。そのようなアーキテクチャでは、スレッドの数Ｔ（Ｎ）ごとに、割り当てられるヒープＨ（Ｔ（ｎ））が存在し、それぞれのスレッドＴ（ｎ）のアプリケーションはヒープ・メモリをＨ（Ｔ（ｎ））から割り当て、ガーベッジ・コレクションが実施される時、Ｔ（ｎ）に割り当てられるガーベッジ・コレクション・ワーカ・スレッドが、ヒープのスキャンを実施する。残念ながら、そのような手法は実行スレッドを自由に割り当てるためにメモリを自由に割り当てる能力において不必要に制限的であり、システム・インターフェースへの変更を必要とする観点から過剰に侵襲的であり、結果としてシステム効率を低下させること、ならびにそのように親和的になされたガーベッジ・コレクション処理をレガシ・システムに適用することができなくなることの両方をもたらす。したがって、レガシ・システムなどにおいて、より効率的なガーベッジ・コレクションを実施する一方で、効率的なリソース割り当て決定を行うためのオペレーティング・システムおよびハイパーバイザにとっての自由度も維持するために、異なる手法が望まれる。
【００３５】
有利には、アドレス由来の親和性に基づいて、親和的になされたガーベッジ・コレクション処理が本明細書において開示される。１つまたは複数の態様によると、ガーベッジ・コレクション動作を、ガーベッジ・コレクション動作が割り当てられるメモリ領域（本明細書においてプロセッサの親和性ドメインとも称する）に最も密に結合されているプロセッサに割り当てることを促進するための方法、システム、およびコンピュータ・プログラム製品が提供される。本明細書で与えられる説明において、ローカリティ・ドメイン、親和性ドメイン、またはドメインは互換的に使用され得ることに留意されたい。１つまたは複数の実施形態において、ローカリティ・ドメインは複数のメモリの場所、ユニットなどを有することができ、また例えば共通したアクセス特徴、例えば１つまたは複数のプロセッサに対するアクセス・パフォーマンスまたはレイテンシに関する特徴、を有するドメインであってもよい。１つまたは複数の実装形態において、ローカリティ・ドメインは数値または記述によって特定することができる。議論によっては、ローカリティ・ドメインはまた、特定のプロセッサまたはプロセッサのセットに最もローカルである特定のメモリを意味することがある。
【００３６】
例として、また本明細書においてさらなる説明として、親和的になされたガーベッジ・コレクション処理は、メモリ領域が割り当てられるのはどの親和性またはローカリティ・ドメインかを決定すること含むことができ、決定されたローカリティ・ドメインに基づいて、ローカリティ・ドメインが検討中の特定の（例えば、現在の）プロセッサのローカリティ・ドメインに対応するかどうかを判断するための試験を実施することができる。ローカリティ・ドメインの一致に基づいて、その特定のプロセッサでガーベッジ・コレクション動作が（直ちに、またはその特定のプロセッサについてのワーク・キュー（例えば、ガーベッジ・コレクションのワーク・キュー）内にガーベッジ・コレクション動作をキューイングすることにより）開始される（または開始するよう指示される）。そうでなければ、メモリ領域を、特定の（例えば現在の）プロセッサによってスキャンするのではなく、一致するローカリティ・ドメインを有する別のプロセッサによってスキャンすることができる。
【００３７】
様々な実施形態を本明細書において議論する。一実施形態において、レガシのガーベッジ・コレクションのワーク・キューを反映する統合されたワーク・キューを議論する。特定のプロセッサによってある要素が取得されると、判断を行うことができ、特定のプロセッサのワーク・ドメインに対応しない場合はワークがスキップされる。別の実施形態においては、動作にエンキューする時に判断を行うことがある。メモリ領域のローカリティ・ドメインのベースとなる、様々なハードウェア実施形態がやはり使用され得る。一実施形態において、ハードウェア実施形態は試験「この領域（または場所、またはページなど）は現在のプロセッサ上にあるか？」を与える。さらなる実施形態において、ハードウェアはある領域の特定のローカリティ・ドメインにリターンする命令を与えることができる。本明細書において、ガーベッジ・コレクションのサービス・ステアリングによるガーベッジ・コレクション・スレッドのローカライゼーションの実施形態も説明する。
【００３８】
述べたように、ガーベッジ・コレクションは再利用可能なメモリについてメモリをスキャンするために膨大な量のデータにアクセスする。例として、ＩＢＭのシステムｚ／ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）において、システム・アーキテクチャの少なくとも１つのレベル（すなわちブックのレベル）についてのレイテンシは、著しく不均一であり得、ガーベッジ・コレクションのスキャンを実施してブックにローカルなプロセッサ上で圧縮することが望ましい。現在、システムｚ／ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）において、特定のブックのメモリにメモリの割り当てをリクエストするメカニズムはなく、メモリを特定のブックに関連付けることが困難である。したがって、本明細書において、ハイパーバイザおよびオペレーティング・システムが複数のブロックを選択されたローカリティ・ドメインに割り当てるためのアプリケーションへのインターフェースを提供しないシステムにおいて、利用可能なローカルなガーベッジ・コレクションのスキャンおよび圧縮の利点を可能にする方法、システム、およびコンピュータ・プログラム製品が開示される。
【００３９】
ガーベッジ・コレクションのアルゴリズムであるマーク・アンド・スイープは、ガーベッジ・コレクションの一手法を具体化している。このアルゴリズムでは、プログラムの変数から開始してポインタが探索され、遭遇するすべてのレコードにマークがつけられる。次いでヒープ内のすべてのレコードを通してスイープが行われ、マークのつけられていないあらゆるレコードは回収され、マークのつけられたすべてのレコードは、マークが取り消される。この手法での仮定は、それぞれのレコードのサイズが既知であり、ポインタであるフィールドが既知であり、また回収されたレコードがフリーリストに維持されることである。
【００４０】
単に具体的な例としては、Ｂｏｅｈｍ−Ｄｅｍｅｒｓ−Ｗｅｉｓｅｒ（ＢＤＷ）のマーク・アンド・スイープのガーベッジ・コレクタが、そのポータビリティおよび言語非依存性によりポピュラーなガーベッジ・コレクタである。これは、あいまいなルートのガーベッジ・コレクタとして既知のガーベッジ・コレクタのクラスを最適化する。そのようなガーベッジ・コレクタは、あらゆるワードサイズの値が潜在的にアプリケーションのメモリ・ヒープ参照であると仮定することにより、ルートについての精密な情報および、オブジェクトのレイアウトの知識なしで済ませるために利用可能である。アプリケーションのメモリ・ヒープを参照するようにあいまいに見えるが、恐らくは単にアプリケーションのメモリ・ヒープ参照に見える値を有しているだけのあらゆる値は、メモリ参照として扱われ、それが参照するオブジェクトは「生きている」、すなわちガーベッジ・コレクションの候補ではないと見なされる。あいまいに参照されるオブジェクトは移動することができないが、それはそのあいまいなルートがオブジェクトの新しいアドレスで上書きすることができないからであり、すなわちあいまいな値が実際にはメモリ参照ではなく単にメモリ参照に見えている場合、これはやはり改変されるべきではない。ＢＤＷガーベッジ・コレクタはレジスタ、スタティックなエリア、およびスレッドのアクティベーション・スタックをあいまいに扱う。アプリケーション・プログラマまたはコンパイラからなどの、オブジェクトのレイアウト情報が利用可能である場合、ＢＤＷガーベッジ・コレクタはそれを利用することができるが、そうではない場合、オブジェクト内に含まれる値はやはりあいまいに扱われる。
【００４１】
あいまいなルートのガーベッジ・コレクタの利点は、アプリケーション・プログラミング言語およびコンパイラにおける独立性にある。ＢＤＷガーベッジ・コレクタはＣ言語およびＣ＋＋でコードされたアプリケーション用のガーベッジ・コレクションをサポートしており、精度の高いガーベッジ・コレクションを避けているが、それはＣ言語およびＣ＋＋はデータの型安全性がないからである。ＢＤＷはまたしばしば、コンパイラが精度の高いガーベッジ・コレクションをサポートするために必要な精密な情報を与えないようなデータの型安全性のある言語で使用される。最低限の要件は、ソース・プログラムがガーベッジ・コレクションからメモリ参照を隠さないこと、およびコンパイラがそのガーベッジ・コレクションからメモリ参照を隠す変形をしないことである。したがって、ＢＤＷガーベッジ・コレクションは、あらゆる他のガーベッジ・コレクタよりも恐らく多様な設定において使用される。結果的に、ＢＤＷガーベッジ・コレクタは基本的なパフォーマンスと、あいまいなルートのマイナスの影響を最小化するためと、の両方のために、高度にチューニングされてきた。
【００４２】
上で議論したＢＤＷのマーク・アンド・スイープのガーベッジ・コレクタは、非限定的な例として提示されていることに留意されたい。他のマーク・アンド・スイープのコレクタを含む様々なガーベッジ・コレクタ、ならびにコピーベースのコレクタまたは世代別コレクタなどの他のガーベッジ・コレクションの手法を、本明細書において開示される実施形態と併せて実践することができる。一般的に言うと、ローカルでワークを実施することを決定すること、および例えばプロセッサ親和性によって、コレクタによって実施されるワーク・ユニットをアクセスすること、または維持することのいずれかを含む処理が、本明細書において１つまたは複数の態様で開示される。
【００４３】
ＢＤＷのガーベッジ・コレクタによって実装されるようなマーク・アンド・スイープのガーベッジ・コレクションの基本構造は、アプリケーションのメモリ・ヒープのすべての到達可能なポインタを深さ優先探索する。この目的のために、アプリケーションのメモリ・ヒープへのメモリ参照を見つけるために、アプリケーションのレジスタ・ファイル、アプリケーション・スタック、およびデータ・セグメント内の既知のルートから、ルート・ポインタの初期のセットが使用される。これは、これらの既知のルートでマーク・スタックを初期化することによって達成される。
【００４４】
マーク・フェーズはアプリケーションのメモリ・ヒープ・アドレスをマーク・スタックから除去し、発見されたポインタに向けられたオブジェクトについての情報と併せてメモリ参照を使用し、このオブジェクトに記憶されたあらゆるポインタを提供する。オブジェクトについての必要な最小限の情報は、メモリ・アロケータから取得することができる、オブジェクトの開始アドレスおよび長さの中にある。そのようなオブジェクトについて、あらゆる適切にアラインされたデータ・ワードはリーガルなポインタであり得る。この方法で見つけられた、あらゆる新しく発見されたリーガルなアプリケーションのメモリ・ヒープ・アドレスは、マーク・スタックにプッシュされ、到達可能なオブジェクトはマーク・アレイ内でマークされる。アルゴリズムはアプリケーションのメモリ・ヒープが空になるまで繰り返される。次のコード断片はマーク・アンド・スイープのアルゴリズムの例である。
2021502637.tif 000003
【００４５】
アルゴリズムがすべての到達可能なアプリケーションのメモリ・ヒープのオブジェクトをトラバースすると、マーク・ビットはすべての到達可能なオブジェクトのビットマップを表現する。マークされていないオブジェクトはアプリケーションのメモリ・ヒープ上で線形なスイープを使用して解放される。次のコード断片は、マーク・アンド・スイープのアルゴリズムの一実施形態をコンパイルするスイープとフリーリストの例である。
2021502637.tif 000004
【００４６】
述べたように、マーク・アンド・スイープのアルゴリズムを用いて上で概説したような再帰的な手法は、機能を実施するために多すぎるリソースを要求することによりパフォーマンスに影響することがある。上で議論した一般的なマーク・アンド・スイープのアルゴリズムに代替的な手法は、再帰的な手法ではなく、ガーベッジ・コレクションのワーク・キューを含むループを実装することである。この手法を使用して、単に例として、マーク・アンド・スイープのアルゴリズムのマーク部分を次のように改変することができる。
2021502637.tif 000005
2021502637.tif 000006
【００４７】
上述の処理は、有利には、基本的なマーク・アンド・スイープのアルゴリズムをエンキューイング・ベースのアルゴリズムに変換し、キューは本明細書において開示されるローカリティ・ドメインベースのガーベッジ・コレクション処理に望ましいローカリティ関係性を確立するために管理される。
【００４８】
本明細書において開示されるようなローカリティ・ドメインベースのガーベッジ・コレクション処理は、様々なシステム・アーキテクチャのレベルに実装することができる。図５〜図７は、これらの概念を利用することができる異なるシステム・レベルの例を描写している。図５において、ＮＵＭＡコンピューティング環境のブック０（Ｂ０）およびブック１（Ｂ１）１０２が図示されており、図１〜図４に関連して上述したようなブック（またはドロワーまたはボード）のレベルの相互接続をやはり含む。それぞれのブック１０２は（この例では）、それぞれがチップのローカリティ・ドメインを有する複数のＣＰＵチップ１２０、およびそれぞれが同一のチップ１２０のプロセッサに対して異なるローカリティ特徴を備える複数のメモリ・チャネル４００を含んでいる。図６で描写するように、アプリケーション・イメージ４１０は、複数のローカリティ・ドメインの階層構造レベルにわたって複数のローカリティ・ドメイン内のメモリ・チャネル上のプロセッサとメモリとにまたがっていてもよい。図７は図５のコンピューティング環境を描写しており、示されているシステム・コントローラ・チップ１０６は、描かれているアーキテクチャに別の階層構造レベルを追加している。この実装形態において、複数のメモリ・チャネル４００が同一のＣＰＵチップ１２０上のプロセッサに対して異なるローカリティ特徴を備えて示されている。例示されるアーキテクチャにおいて、ＣＰＵチップのローカリティ・ドメインおよびシステム・チップのローカリティ・ドメインの両方がある。説明したように、アプリケーションまたはアプリケーション・イメージは、異なるＣＰＵチップ内にあり、異なるローカル・メモリまたは異なるメモリ・チャネルを有する、それに割り振られた異なるプロセッサを有することができ、また異なるブック（または、ドロワー、ボードなど）にまたがっていることができる。すなわち、単一のアプリケーションは複数のブックで実行中のプロセッサを利用することができる。
【００４９】
さらなる説明として、また述べたように、一実施形態において、図８で描かれるような統合された（またはグローバルな）ワーク・キューは本明細書において開示されるような親和的になされたガーベッジ・コレクション処理で使用することができる。単一の統合されたまたはグローバルなワーク・キューの実装形態は、有利には、ガーベッジ・コレクションのワーク・キューが提供される一定のレガシ・システムで使用することができる。ガーベッジ・コレクション処理の一実施形態は、１つまたは複数の態様によると、図８で描写されるような統合されたまたはグローバルなガーベッジ・コレクションのワーク・キューを使用して、次のようなアルゴリズムを採用することができる（単に例として）。
2021502637.tif 000007
【００５０】
この処理では、候補アドレス（またはメモリ領域）のローカリティ・ドメインが取得され、現在のプロセッサのローカリティ・ドメインと比較される。一致していると仮定すると、ガーベッジ・コレクション処理がそのプロセッサに割り当てられる。この手法を使用して、プロセッサはローカル・ドメインが一致した時だけガーベッジ・コレクション処理を実施する。別の実施形態において、ワーク・キュー内にプロセッサにとって利用可能なローカルのエントリがない場合、ガーベッジ・コレクションのワーカ（すなわち、プロセッサ）は非ローカルなＧＣメモリ領域スキャンを実施することができる。この処理の例示的な一実装形態は次のようになる。
2021502637.tif 000008
【００５１】
この手法では、もしプロセッサがガーベッジ・コレクションを実施するのにローカルのメモリで足りなくなると、全体的なガーベッジ・コレクションのワークがより早く完了されるように、他のプロセッサのガーベッジ・コレクションのワークロードを共有することができる。
【００５２】
上で述べたように、別の実装形態において、ワーク・キューは、コンピューティング環境の１つまたは複数のアーキテクチャ的なレベルで、それぞれのローカリティ・ドメインに割り当てることができる。図９の例において、それぞれのブック１０２（図１〜図７）にワーク・キューが割り振られる。この実装形態は、マッピングが正しいドメイン・キュー内にエンキューイングするために十分に安定であり、さらにワーク・キューから項目が検索されると正確な割り振りを可能にすると仮定している。１つまたは複数の実施形態において、ローカリティ・ドメインに対応するそれぞれのワーク・キューは、そのローカリティ・ドメインに対応するメモリ内に割り当てることができる。
【００５３】
アーキテクチャ内の所望の数のローカリティ・ドメインに応じて、あらゆる数のワーク・キューを利用することができる。例えば、ＣＰＵチップ・レベルまたはシステム・チップ・レベルあるいはその両方におけるローカリティ・ドメインを利用することができる。この手法において、プロセッサが関連付けられた（すなわちローカライズされた）ワーク・キュー構造内のメモリ上だけで動作するという点で、ＧＣ処理は単純化されている。単に例として、そのような手法を利用するガーベッジ・コレクション処理を実装するための一実施形態は次のようになる。
2021502637.tif 000009
【００５４】
この複数のワーク・キューの実装形態において、負荷の共有は、プロセッサがガーベッジ・コレクションするようなローカルのメモリを有していない場合に、やはりプロセッサによって実装することができる。そのような処理の例は次のようになる。
2021502637.tif 000010
【００５５】
複数のキューがある環境において、ワーク項目を置く場所（すなわちガーベッジ・コレクションが行われるメモリ領域）の決定は最初になされる必要があることに留意されたい。このコードの例は次を含むことができる。
2021502637.tif 000011
【００５６】
また、１つまたは複数の実施形態において、プロセッサは親和的であるかまたはローカリティ意識的であり得、また（例えば）スキャンするべきさらなるローカル・ドメイン・メモリを有していない場合は次に最も近いメモリ・ポートを優先することに留意されたい。この処理の例は次のようであってよい。
2021502637.tif 000012
【００５７】
１つまたは複数のさらなる態様によると、メモリについてのドメイン情報を取得することを促進するための、および親和性ドメインベースのガーベッジ・コレクションを促進するためにコンピューティング環境（上で議論したＮＵＭＡコンピューティング環境など）の現在の処理ドメインに対するメモリのユニットのローカリティを決定するための、機能が提供される。
【００５８】
本発明の１つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例が、図１０を参照して以下で説明される。図１０を参照すると、一例において、コンピューティング環境６００はやはりインターナショナル・ビジネス・マシーンズ・コーポレーション（ニューヨーク州アーモンク）によって提供されるｚ／ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づくものであり得る。別の一例において、コンピューティング環境は、インターナショナル・ビジネス・マシーンズ・コーポレーション（アメリカ合衆国ニューヨーク州アーモンク）によって提供されるＰＯＷＥＲ  ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づいていてもよい。
【００５９】
コンピューティング環境６００は、仮想マシンのサポートを提供する中央プロセッサ複合体（ＣＰＣ）６０２を含む。ＣＰＣ６０２は、１つまたは複数の制御ユニット６０８を介して、１つまたは複数の入力／出力（Ｉ／Ｏ）デバイス６０６に結合される。中央プロセッサ複合体６０２は、１つまたは複数の中央プロセッサ（中央処理装置（ＣＰＵ）としても知られる）６１０に結合される例えばプロセッサ・メモリ６０４（主メモリ、主記憶装置、中央記憶装置としても知られる）、および入力／出力サブシステム６１１を含み、これらのそれぞれを以下で説明する。
【００６０】
プロセッサ・メモリ６０４は、例えば１つまたは複数の仮想マシン６１２、仮想マシンを管理するハイパーバイザ６１４などの仮想マシン・マネージャ、およびプロセッサ・ファームウェア６１５を含む。ハイパーバイザ６１４の一例は、インターナショナル・ビジネス・マシーンズ・コーポレーション（ニューヨーク州アーモンク）によって提供されるｚ／ＶＭ（Ｒ）である。ハイパーバイザは時にホストと称される。さらには、本明細書で使用される場合、ファームウェアは例えばプロセッサのマイクロコードまたはミリコードあるいはその両方を含む。例えば、より高次のマシン・コードの実装形態で使用されるハードウェアレベルの命令またはデータ構造あるいはその両方を含む。一実施形態において、例えば、典型的には信頼されたソフトウェアを含むマイクロコードとして提供されるプロプライエタリなコード、または基礎となるハードウェアに特有のマイクロコードを含み、オペレーティング・システムのシステム・ハードウェアへのアクセスを制御する。
【００６１】
ＣＰＣの仮想マシンのサポートは大量の仮想マシン６１２を動作させる能力を提供し、それぞれが異なるプログラム６２０で動作すること、およびＬｉｎｕｘなどのゲストのオペレーティング・システム６２２を実行させることができる。それぞれの仮想マシン６１２は、別個のシステムとして機能することができる。すなわち、それぞれの仮想マシンは、独立的にリセットされ、ゲストのオペレーティング・システムを実行し、異なるプログラムで動作することができる。仮想マシン上で実行中のオペレーティング・システムまたはアプリケーション・プログラムは、全面的または完全なシステムにアクセスを有しているように見えるが、実際にはその一部のみが利用可能である。
【００６２】
プロセッサ・メモリ６０４は、仮想マシンに割り当て可能な物理的なプロセッサ・リソースである中央プロセッサ（ＣＰＵ）６１０に結合される。例えば、仮想マシン６１２は１つまたは複数の論理プロセッサを含み、そのそれぞれは仮想マシンに動的に割り当てることができる物理的なプロセッサ・リソース６１０のすべてまたは共有を表している。１つまたは複数の実施形態において、中央プロセッサ６１０は本明細書において説明されるようなアドレス変換機構６３０を含むことができる。
【００６３】
さらには、一実施形態において、それぞれのＣＰＵ６１０は、プロセッシング・コア（コアとしても知られる）６３２内部で実行するハードウェア・スレッドである。コアは、１つまたは複数のスレッドを含み、この例ではコア６３２は４つのハードウェア・スレッドを含んでいる。他の例では、コンピューティング環境は１つまたは複数のコアを含むことができ、それぞれのコアは１つまたは複数のハードウェア・スレッドを含むことができる。
【００６４】
図１〜図４に関連して上述したように、１つまたは複数の実装形態において、コンピューティング環境６００はｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（ＮＵＭＡ）コンピューティング環境またはシステムである。説明したように、そのようなコンピューティング環境では、プロセッサ・メモリ６０４は例えば１つまたは複数のコア、プロセッサ、または中央処理装置６１０などの中央処理装置にわたって分散することができる。さらには、上で説明したように、ＮＵＭＡコンピューティング環境内でＣＰＵレベルを含む様々なレベルのローカリティ・ドメインを定義することができる。１つまたは複数の実装形態において、特定のＣＰＵ６１０に接続されるプロセッサ・メモリ６０４は、そのプロセッサにローカルであると考えることができる。
【００６５】
さらには、プロセッサ・メモリ６０４はＩ／Ｏサブシステム６１１に結合される。入力／出力サブシステム６１１は入力／出力制御ユニット６０８とデバイス６０６と主記憶装置６０４との間で情報のフローを方向付ける。入力／出力サブシステム６１１は、中央処理複合体の一部であり得る、またはそれとは別個であり得るという点で、これは中央処理複合体に結合される。
【００６６】
一例において、仮想マシンのモデルはＶ＝Ｖモデルであり、仮想マシンの実メモリまたは絶対メモリは、実メモリまたは絶対メモリの代わりにホストの仮想メモリにバッキングされる。それぞれの仮想マシンは隣接する仮想メモリ空間を有する。物理的なリソースはホスト６１４によって管理することができ、共有される物理的なリソースはホストによって必要に応じてその処理需要を満たすためにゲストのオペレーティング・システムにディスパッチすることができる。このＶ＝Ｖ仮想マシン（すなわち、ページング可能なゲスト）モデルは、ゲストのオペレーティング・システムと物理的に共有されるマシン・リソースとの相互作用がホストによって制御されることを仮定しているが、それは大量のゲストは典型的にはホストがハードウェア・リソースを単純にパーテーショニングして、設定されたゲストに割り振ることを妨げるからである。
【００６７】
一実施形態において、ゲストのオペレーティング・システムおよびホストからの／への制御の移送を必要とせずにゲストのオペレーティング・システムの動作を処理するために、ホスト（例えば、ｚ／ＶＭ（Ｒ））およびプロセッサ（例えば、Ｓｙｓｔｅｍ  ｚ（Ｒ））のハードウェア／ファームウェアは互いに制御された協調的なやり方で相互作用する。ゲストの動作は、命令がページング可能なストレージ・モードのゲストを含むゲストのために解釈的に実行できるような機構を介してホストの介入なしに直接的に実行することができる。この機構によって、命令Ｓｔａｒｔ  Ｉｎｔｅｒｐｒｅｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ（ＳＩＥ）が提供され、ホストが発行することができるＳＩＥは、ゲスト（仮想マシン）状態ならびに実行制御およびモード制御などの制御を保持する状態記述と呼ばれる制御ブロックを指定する。命令はマシンを、ホスト・アテンションを必要とする条件が発生するまでゲストの命令および割り込みが直接的に処理される解釈的実行モードに置く。そのような条件が生じると、解釈的な実行は終了し、ホストの割り込みが提示されるか、またはＳＩＥ命令が遭遇した条件の詳細を記憶することを完了する。後者のアクションはインターセプションと呼ばれる。
【００６８】
本明細書において説明されるコンピューティング環境は、動的アドレス変換（ＤＡＴ）などの、アーキテクチャ的な機能をサポートする。オペレーティング・システムによる適当なサポートによって、動的アドレス変換機構を使用して、ストレージがその構成において利用可能な主記憶装置（主メモリとしても知られる）よりも大きく見えるシステムをユーザに提供することができる。この見かけの主記憶装置を仮想ストレージと称し、仮想ストレージ内で場所を指定するために使用されるアドレスを仮想アドレスと称する。ユーザの仮想ストレージは、その構成で利用可能な主記憶装置のサイズをはるかに上回ることができ、通常は補助的なストレージ（例えば、直接的にアドレッシングできないストレージ）内で維持される。仮想ストレージはページと呼ばれるアドレスのブロックから構成されると考える。仮想ストレージの最も最近参照されたページだけが、物理的な主記憶装置（例えば、ランダム・アクセス・メモリ（ＲＡＭ））のブロックを占有するために割り振られる。ユーザは主記憶装置には見られない仮想ストレージのページを参照するため、仮想ストレージのページはあまり必要とされそうにない主記憶装置のページを置換するよう導入される。ストレージのページのスワッピングは、ユーザが知らないうちにオペレーティング・システムによって実施され得る。
【００６９】
さらには、仮想のコンピューティング環境において、解釈的な実行アーキテクチャはページング可能なストレージ・モードと称される絶対ストレージ用のストレージ・モードを提供する。ページング可能なストレージ・モードでは、ゲストの主記憶装置をマッピングするために、ホスト・レベルで動的アドレス変換が使用される。ホストはページング可能なストレージ・モードのゲストの実ストレージを、ホストのＤＡＴを使用することによりホストの実ストレージ内のどこででも使用可能なフレームに散乱させ、ゲストのデータを補助ストレージにページ・アウトさせるための能力を有している。この技法は現実のマシン・リソースを割り当てる際、ゲスト用の絶対ストレージの隣接する範囲について期待される見え方を維持しながらも柔軟性を与える。
【００７０】
仮想マシンの環境は、複数回ＤＡＴの適用を要求することがある：最初はゲストのレベルで、ゲスト管理の変換テーブルを通じてゲストの仮想アドレスをゲストの非仮想アドレスに変換するため、次にページング可能なゲストについて、ホストのレベルで、対応するホストの仮想アドレス（すなわち、ゲストの非仮想アドレス）を、ホストの実アドレスまたは絶対アドレスなどのホストの非仮想アドレスに変換するため。
【００７１】
仮想ストレージに関連付けられる仮想アドレスのシーケンスは、アドレス空間と呼ばれ、複数のアドレス空間を提供するために動的アドレス変換機構を使用することができる。これらのアドレス空間を使用してユーザ間の分離の程度を与えることができる。そのようなサポートは、それぞれのユーザ用に完全に異なるアドレス空間を含むことができ、それにより完全な分離を与えることができるか、またはそれぞれのアドレス空間の一部を単一の共通ストレージ・エリアにマッピングすることにより共有エリアをもうけることができる。準特権を与えられたプログラムが２つ以上のそのようなアドレス空間にアクセスできるようにする命令も提供される。動的アドレス変換は、例えば制御レジスタ内の変換パラメータを変更することを必要とせずに、複数の異なるアドレス空間から仮想アドレスの変換を与える。
【００７２】
動的アドレス変換は、ストレージ参照の間に仮想アドレスを対応する実アドレスまたは絶対アドレスに変換する処理である。動的アドレス変換は、命令およびＣＰＵによって生成されたデータ・アドレスについて指定することができる。動的アドレス変換によって形成される実アドレスまたは絶対アドレス、およびプリフィクシングによって次いで形成される絶対アドレスは、一実施形態において、６４ビット長である。仮想アドレスは一次仮想アドレス、二次仮想アドレス、アクセス・レジスタ（ＡＲ）指定の仮想アドレス、またはホームの仮想アドレスであってもよい。アドレスは、それぞれ一次、二次、ＡＲ指定の、またはホームのアドレス空間制御要素（ＡＳＣＥ）によって変換される。適当なアドレス空間制御要素の選択の後、変換プロセスは４つのタイプの仮想アドレスのすべてに対して同一である。アドレス空間制御要素はセグメント・テーブル指定または領域テーブル指定であってもよい。セグメント・テーブル指定または領域テーブル指定は、実ストレージまたは絶対ストレージにおいてオペレーティング・システムによって確立されたテーブルにより変換を実施させる。
【００７３】
セグメント・テーブル指定または領域テーブル指定を使用する場合の変換プロセスでは、３つのタイプ−領域、セグメント、およびページの情報のユニットが認識される。それにより、仮想アドレスは４つのフィールドに分割される。一例において、ビット０〜３２は領域インデックス（ＲＸ）と呼ばれ、ビット３３〜４３はセグメント・インデックス（ＳＸ）と呼ばれ、ビット４４〜５１はページ・インデックス（ＰＸ）と呼ばれ、ビット５２〜６３はバイト・インデックス（ＢＸ）と呼ばれる。仮想アドレスのＲＸ部分は、それ自身が３つのフィールドに分割される。一実施形態において、ビット０〜１０は領域第１インデックス（ＲＦＸ）と呼ばれ、ビット１１〜２１は領域第２インデックス（ＲＳＸ）と呼ばれ、ビット２２〜３２は領域第３インデックス（ＲＴＸ）と呼ばれる。
【００７４】
図１１を参照して、仮想アドレスを実アドレスに変換する一例を説明する。この処理は、本明細書においてＤＡＴウォーク（またはページ・ウォーク）と称し、あるアドレス（例えば、仮想アドレス）を別のアドレス（例えば、実アドレス）に変換するためにアドレス変換テーブルをウォークする。この例では、アドレス空間制御要素（ＡＳＣＥ）７００は、テーブル・オリジン７０２、ならびに変換の開始レベルを示す（すなわち、階層構造内のどのレベルでアドレス変換を開始するかの指標）指定タイプ（ＤＴ）制御７０４を含む。テーブル・オリジン７０２およびＤＴ７０４を使用して、特定のテーブルのオリジンが位置決めされる。次にテーブルに基づいて、次のレベルのテーブルのオリジンを取得するために、特定のテーブルへのインデックス付けに仮想アドレスのビットが使用される。例えば、領域第１テーブル（ＲＦＴ）７０６が選択される場合、領域第１テーブルへのインデックス付けに仮想アドレスのビット０〜１０（ＲＦＸ）７０８が使用され、領域第２テーブル（ＲＳＴ）７１０のオリジンを取得する。次に、領域第２テーブル３１０へのインデックス付けに仮想アドレスのビット１１〜２１（ＲＳＸ）７１２が使用され、領域第３テーブル（ＲＴＴ）７１４のオリジンを取得する。同様に、領域第３テーブル７１４へのインデックス付けに仮想アドレスのビット２２〜３２（ＲＴＸ）７１６が使用され、セグメント・テーブル７１８のオリジンを取得する。次に、セグメント・テーブル７１８へのインデックス付けに仮想アドレスのビット３３〜４３（ＳＸ）７２０を使用してページ・テーブル７２２のオリジンを取得し、ページ・テーブル７２２へのインデックス付けに仮想アドレスのビット４４〜５１（ＰＸ）７２４を使用してページ・フレーム実アドレス（ＰＦＲＡ）７２６を有するページ・テーブル・エントリ（ＰＴＥ）７２５を取得する。ページ・フレーム実アドレスは、次いで実アドレスを取得するために、オフセット７２８（ビット５２〜６３）と結合される（例えば、連結される）。次に、対応する絶対アドレスを取得するためにプリフィクシングを適用することができる。
【００７５】
アドレス変換の別の例を図１２を参照して説明する。この例では、最初のゲスト仮想アドレスを最終的なホストの実アドレスに変換するためにＤＡＴウォークが実施される。この例では、アドレス空間制御要素（ＡＳＣＥ）７００は、ゲストのアドレス空間制御要素であり、ＡＳＣＥ７００のＤＴ７０４は、ゲストのアドレス変換構造７６０によって決定されるゲストの変換がテーブル・オリジン７０２によって指示される領域第１テーブル７０６から開始することを示している。したがって、領域第１テーブル７０６へのインデックス付けに最初のゲストの仮想アドレス（例えば、ＲＦＸ７０８）の適当なビットを使用して領域第１テーブルのエントリのポインタを取得する。領域第１テーブル・エントリ（ＲＦＴＥ）のアドレスは、ゲストの実アドレスまたは絶対アドレスである。主記憶装置のオリジンおよびリミット（limit）が適用された、このゲストの実アドレスまたは絶対アドレスは、ホストの仮想アドレスに対応している。この中間的なホストの仮想アドレスは、次いでホストのアドレス変換構造７７０を使用して変換される。特に、アドレス空間制御要素（ＡＳＣＥ）７５０は、ホストのアドレス変換構造７７２内の変換用の開始レベルを示すために使用されるホストのアドレス空間制御要素である。ＡＳＣＥ７５０のＤＴ７５４によって示される開始レベル（例えば、領域第１テーブル）に基づいて、図１１を参照して説明したように、ホストのアドレス変換構造７７２を使用する変換用に使用されるよう、示されたテーブルへテーブル・オリジン７５２でインデックスを付けるために、ホストの仮想アドレスの特定のビットが使用される。ゲストのＲＦＴＥに対応するホストの仮想アドレスの変換は、ホストのページ・フレーム実アドレス（ＰＦＲＡ）７７４ａが取得されるまで続く。
【００７６】
中間的なホストのページ・フレーム実アドレスにおけるデータは、ゲストのアドレス変換構造（例えばこの特定の例においては、ゲストの領域第２テーブル７１０）の次のレベルへのポインタであり、上述のように変換が続く。具体的に、ホストのアドレス変換構造７７６、７７８、７８０、および７８２を使用して、ゲストの領域第２テーブル７１０、領域第３テーブル７１４、セグメント・テーブル７１８およびページ・テーブル７２２にそれぞれ関連付けられる中間的なホストの仮想アドレスを変換し、結果的にホストのＰＦＲＡにおいてそれぞれ７７４ｂ、７７４ｃ、７７４ｄ、および７７４ｅとなる。ホストのページ・フレーム実アドレス７７４ｅはゲストのページ・テーブル・エントリ７２５のアドレスを含む。ゲストのページ・テーブル・エントリ７２５はゲストのページ・フレーム実アドレス７２６を含み、これは最初のゲストの仮想アドレスからのオフセットと連結されて対応するゲストの絶対アドレスを取得する。次に主記憶装置のオリジンおよびリミットが、対応するホストの仮想アドレスを計算するために適用され、次いで上述のようにアドレス変換構造７８４を使用して変換され、ホストのページ・フレーム実アドレス７７４ｆを取得する。ホストのページ・フレーム実アドレスは、次いでホストの仮想アドレスのオフセット（例えば、ビット５２〜６３）と結合（例えば、連結）され、最終的なホストの実アドレスを取得する。これで、ゲストの仮想アドレスの、ホストの実アドレスへの変換が完了する。
【００７７】
上の例では変換は領域第１テーブルで開始するが、これは単に一例に過ぎない。変換は、ゲストまたはホストいずれかの、あらゆるレベルで開始することができる。
【００７８】
さらには、一実施形態において、アドレス変換を改善するために、仮想アドレスから実アドレスまたは絶対アドレスへの変換のマッピングを、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）などのアドレス変換に関連付けられる構造のエントリに記憶することができる。ＴＬＢは仮想アドレス変換の速度を向上するためにメモリ管理ハードウェアによって使用されるキャッシュである。次に仮想アドレスの変換がリクエストされる時、ＴＬＢがチェックされ、もしそれがＴＬＢにあれば、ＴＬＢヒットがあり、実アドレスまたは絶対アドレスはそこから検索される。そうでなければ、上述のようなページ・ウォークが実施される。
【００７９】
図１３で描写されるような一例において、トランスレーション・ルックアサイド・バッファ７９０は、１つまたは複数のエントリ７９２を含むことができる。エントリは、コンピューティング環境のホスト用であってもよく、またはゲスト用であってもよく、また指標または値でそのようにマークしてもよい。さらには、本明細書において以下で説明するような使用のために、ＤＯＭ指標７９４が提供されてもよい。（例えば、本発明の１つまたは複数の態様によると、ＤＯＭ指標はローカリティ・ドメインまたは代替的にローカリティ・ドメイン指標（例えば、ドメインはローカルである、ドメインはローカルではない）を記憶することができる）。さらには、エントリは、アドレス変換テーブルのページ・テーブル・エントリ、領域テーブル・エントリ、またはセグメント・テーブル・エントリに関連付けることができる。トランスレーション・ルックアサイド・バッファの多くの実装形態が可能である。
【００８０】
示されるように、ゲストの変換はＴＬＢに含まれてもよい。これらのエントリは、非明示的に１つまたは複数のホストの変換を含む複合のゲスト／ホストのエントリであってもよい。例えば、ゲストの仮想ＴＬＢエントリは、最初のゲストの仮想アドレスから最後のホストの実アドレスまたは絶対アドレスまでの変換全体をバッファリングすることができる。このケースでは、上の図１２で説明したように、ゲストのＴＬＢエントリは非明示的にすべての中間的なホストの変換７７２、７７６、７７８、７８０および７８２、ならびに最終的なホストの変換７８４を含む。別の例では、階層構造的なＴＬＢは、最初のゲストの仮想アドレスからゲストのページ・テーブル７２２の関連付けられたオリジンまでの変換をバッファリングするＴＬＢの第１のレベルにエントリを含んでいる。この第１のレベルのエントリは、例えば、結合された領域およびセグメント・テーブル・エントリ（ＣＲＳＴＥ）を表現しており、ＴＬＢのＣＲＳＴＥ部分として参照することができる。さらには、階層構造的なＴＬＢは、ゲストのページ・テーブル・エントリ・アドレスから最終的なホストの実アドレスまたは絶対アドレスまでの変換をバッファリングするＴＬＢの第２のレベルからの、別個のエントリを含むことができる。この例では、図１２で説明したように、ＴＬＢの第１のレベル内のゲスト・エントリは、ゲストの領域およびセグメント・テーブルをバッキングするホストの変換に対応する中間的なホストの変換７７２、７７６、７７８、および７８０を非明示的に含み、第２のレベル内のゲスト・エントリは、ゲストのページ・テーブルおよび最終的なホストの変換７８４をバッキングする中間的なホストの変換７８２を非明示的に含む。トランスレーション・ルックアサイド・バッファの多くの実装形態が可能である。
【００８１】
図１４は、本発明の１つまたは複数の態様にしたがって使用することができる、アドレス変換機構８００の一実施形態を描写している。図示されるように、アドレス変換機構８００は、例えばＴＬＢ８０１へのロード・ストア・ユニット（ＬＳＵ）ルックアップ・リクエスト、ＴＬＢ８０２（テーブル・キャッシュがデータ・キャッシュ内に実装される）へのデータ・キャッシュ（ＤＣ）ルックアップ・リクエストを含む変換リクエストを多重化する入力マルチプレクサ８１０を含むことができる。選択されたＴＬＢルックアップ・リクエスト８０３はトランスレーション・ルックアサイド・バッファ（ＴＬＢ）８２０、ならびに変換エンジン８３０に転送される。ＴＬＢリクエストは、ＴＬＢミスがあるとＴＬＢルックアップ・リクエスト８０３に基づいて変換エンジン８３０を開始またはスタートさせる。ＴＬＢヒットがあると、ＴＬＢルックアップ結果８０５が、例えばデータ・キャッシュ内に存在し得るテーブル・キャッシュ８４０に書き込まれることに留意されたい。ＴＬＢミスがあると仮定すると、変換８３０はルックアップ・リクエストを処理し、そのようにしながら、テーブル・フェッチ・リクエスト８０６を、フェッチ結果をリターンする８０７テーブル・キャッシュ８４０に送信することができる。ＴＬＢルックアップ・リクエストを開始する次の選択の際、変換結果がＴＬＢ８２０内にありリクエスト・ヒットとなるよう、変換エンジン８３０は変換結果８０８をＴＬＢ８２０に書き込む。
【００８２】
初めに述べたように、プロセッサの設計は益々非対称かつ非均一になり続けており、処理タスクを、所与のメモリのユニット（例えば、場所、アドレス、エリア、ページなど）にとって最小のまたは最適なレイテンシおよび最良の帯域幅特徴を有するプロセッサに（より一般的には処理ドメインに）配置することが益々有利になっている。上述のように、ＮＵＭＡコンピューティング環境では、実メモリは共有される単一の対称的なスイッチによって均一にアクセスされるのではなく、特定のプロセッサ・コア、プロセッサ・チップ、プロセッサ・モジュール、プロセッサ・ブック、および他の物理的な構造物などの特定の処理ドメインに取り付けられるか、または関連付けられる。したがって、メモリに最も接近して配置される要素がそのメモリに対して良好なアクセス特徴を有する。
【００８３】
別の態様において、物理的なローカリティ・ドメインの発見、およびメモリに対するパフォーマンスの親和性は、全面的に仮想化されるシステムと関連して、またはレガシ・ソフトウェア・スタックと併せて、あるいはその両方で、本明細書において説明されるように有利に使用される。これらのコンテキストにおいて、特定の処理ドメインに対するメモリのユニットの親和性またはローカリティを特定するメカニズムを提供することが望ましい。
【００８４】
ＰＨＹＰなどの準仮想化されたシステム、およびそれが実装するＰＡＰＲ仕様において、特定のプロセッサまたはプロセッサ・ノードに取り付けられたメモリにリクエストするメカニズムが提供される。しかしながら、これらのシステムは、オペレーティング・システムまたはアプリケーション内で直接的ではなく、ハイパーバイザのコールを介してメモリ管理が実施されることを要求する。
【００８５】
本明細書において議論されるように、アプリケーションがプロセッサ上の処理をメモリ近くに配置できるようにするためには、メモリのユニット上の処理タスクが適当な処理ドメイン（例えば、プロセッサ）上に配置され得るか、またはそのようなドメインによって実行され得るように、処理機能に対するメモリの親和性を決定することが必要である。したがって、本明細書において開示される１つまたは複数の態様にしたがって、例えばドメインベースのガーベッジ・コレクション処理を促進するなどコンピューティング環境内の処理を促進するために、メモリのユニットの親和性またはローカリティを、クエリするインターフェースが提供される。
【００８６】
一実施形態によると、メモリのユニットを使って、そのメモリについての物理的なローカリティ・ドメイン情報を与える命令（ｌｏａｄ＿ｄｏｍａｉｎ）が提供される。一実施形態において、ドメイン情報は、メモリの１つまたは複数のローカリティ関連（または親和性関連）の属性を一意に特定する数字であることができる（例えば、関連するプロセッサ・コア、ノード、ブックなどを特定する）。一態様によると、クエリ応答は、最も近い処理ドメインまたは機能を一意に特定することができ、そして例えばシステム構造を記録もしくは組み込むテーブルへのルックアップによって、またはそのようなテーブルなどを提供するシステム・コールによってのいずれかで、物理的なシステム情報を取得することにより次に近い処理機能などを導出するために使用することができる。別の実施形態において、ポインタがリターンされることがあり、ポインタはメモリ領域が対応する階層構造のレベルおよびノード、またはコンピューティング環境内でのそれぞれの処理ドメイン要素までの距離についてなどの情報を提供する。
【００８７】
１つまたは複数の態様によると、システム・コールまたは命令の少なくとも１つは、メモリのユニット用のプロセッサ識別情報（ＩＤ）または対応するロケール識別子（例えばブック番号、プロセッサ番号などのロケール番号）を特定するトークンを取得するために与えられることがある。別の実施形態において、ポインタがリターンされることがあり、ポインタはそのメモリが対応する階層構造のレベルおよびノード、またはそれぞれの処理要素までの距離についてのいずれかについての情報を提供する。なおさらなる実施形態において、メモリ・アドレスおよびプロセッサ識別子を使って、メモリ場所から特定されたプロセッサまでの距離をリターンする命令が提供され得る。所望であれば、距離は正規化して抽象化することができる。
【００８８】
１つまたは複数の実装形態において、本明細書において開示される機能性は、アプリケーションがシステムの詳細を明らかにすることを妨げるために、例えば署名された（signed）、ｕｉｄセットされた（set-uid）信頼されるアプリケーション、または管理者によって実行されるプログラムあるいはその両方に制限することができる。
【００８９】
図１５は、上述のＮＵＭＡコンピューティング環境などのコンピューティング環境の一実施形態を描写しており、ブック１０２、ならびに例えば設定（ｃｏｎｆｉｇ）配列９００、１つまたは複数のホスト９０１、および１つまたは複数のゲストのシステムまたは仮想マシン９０２を含む簡略化された例示的な変換構造として描いている。１つまたは複数の他の実装形態において、上で議論したｚ／ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）コンピューティング環境などのブック１０２は、チップ、コアに取り付けられたメモリ・ポートなどの他のドメイン・レベルの処理で置換することができる。設定配列９００は、例えば特定のメモリがコンピューティング環境内のどこに配置されているかを指定する（または、示す）物理的なシステム情報を含むことができる。例えば、設定配列９００は、システム内の物理的なメモリについてのローカリティ・ドメイン情報９０５を含むことができる。この情報は、本明細書において開示される１つまたは複数の態様によると、例えばアドレス変換処理を介して、またはアドレス変換処理の一部としてアクセスすることができる。特に、ホストの実アドレスまたは絶対アドレスが取得されると、そのアドレスを使用して設定配列、および特にコンピューティング環境の特定のメモリ領域についてのドメイン情報を取得するための配列内のローカリティ・ドメイン情報を参照することができる。
【００９０】
図１６は本発明の１つまたは複数の態様による、ｌｏａｄ＿ｄｏｍａｉｎ（またはｇｅｔ  ｄｏｍａｉｎ）命令の一実施形態を描写している。図示されるように、ｌｏａｄ＿ｄｏｍａｉｎ命令は、例えば、ｌｏａｄ＿ｄｏｍａｉｎ演算を示すオペコードを含む１つまたは複数の演算コード・フィールド１０００、ならびに描写される例におけるように、アドレス変換処理の一部として指定されたアドレスのドメイン決定するためのアドレス・オペランド１００１、およびｌｏａｄ  ｄｏｍａｉｎ演算のためのターゲット・リターン値を示すターゲット・リターン（ＲＴ）フィールド１００２を含むことができる。ｌｏａｄ＿ｄｏｍａｉｎ命令を処理することは、例えば本明細書において一般的にメモリのユニット（またはメモリ・ユニット）と称する所与のメモリ・アドレス、場所、エリアなどについてのＮＵＭＡコンピューティング環境のブック・レベルなどの所望の処理構造レベルに対するローカリティ・ドメイン情報を決定することを含むことができる。ドメイン情報は、例えば、単一の数字またはパックされた記述構造（packed describing structure）へのアドレスとしてリターンされ得る。処理は、ページ・テーブルの複数のレベルをウォーキングすること、およびコンピューティング環境の設定配列（ｃｏｎｆｉｇ  ａｒｒａｙ）内の情報、すなわちドメイン情報にアクセスすることを伴うことがある。次に、以下で説明するように、この次にアドレスのルックアップが要求された時、情報を検索するための処理のオーバヘッドを削減することができるように、ローカリティ・ドメイン情報は設定配列キャッシュなどのデータ構造内に、またはトランスレーション・ルックアサイド・バッファ内にキャッシュされる。
【００９１】
図１７はｌｏａｄ＿ｄｏｍａｉｎ命令に関連付けられる処理の一実施形態を描写している。図１７において図示されるように、ｌｏａｄ  ｄｏｍａｉｎ処理１００１は、ホストの実アドレス（または絶対アドレス）を取得するためにアドレス変換１０１０を実施すること、および次に設定配列のルックアップ１０２０を実施するためにそのホストの実アドレスを使用して、例えばその実アドレスについてのドメイン情報を取得することを含み、ドメイン情報１０３０をリターンすることができ、ドメイン情報１０３０は例えば設定配列キャッシュ（ＣＡＣ）またはトランスレーション・ルックアサイド・バッファ（ＴＬＢ）１０４０にキャッシュされ得、ｌｏａｄ  ｄｏｍａｉｎ処理１００３を完了する。
【００９２】
本明細書において開示される処理はコンピューティング環境についていくつかの仮定を立てていることに留意されたい。例えば、メモリはサブページの粒度においてドメインをまたいでストライピングされていないと仮定している。しかしながらメモリがストライピングされている場合、ストライピングをセット・ドメインで始めて次にパターンを続けることにより、またはすべてのページが同一のパターンを続けることのいずれかによってストライピングを解決することが可能である。したがって、これらのパターンベースのストライピングは、やはり本明細書において説明される処理によって扱うことができる。さらには、到達可能であるには、それぞれのページがハードウェア内にＴＬＢ変換エントリを有するとの仮定が立てられる。
【００９３】
コンピューティング環境内の処理効率は、効率的にデータを提供することによって向上することができる。ローカリティ・ドメイン情報にアクセスするために、アーキテクトされた変換の後、上述のような設定配列内でルックアップを行うことができる。設定配列をアクセス可能にすることにより、または設定配列を効率的にアクセス可能にすることにより、あるいはその両方で、処理を向上することができる。さらには、データ構造内のローカリティ・ドメインのルックアップの結果をキャプチャし、この情報を探すかまたは参照する方法を提供することにより、効率を向上することができる。そのようなデータ構造のキャッシュへの、複数の手法が可能である。例えばオペレーティング・システムまたはアプリケーションは、設定配列キャッシュに関連付けられることがあり、１つまたは複数の実施形態において、設定配列キャッシュは仮想アドレスによって直接アクセスすることができ、それにより、所望のローカリティ・ドメイン情報が以前に取得されている場合アドレス変換を行う必要性を回避している。１つまたは複数の実施形態において、そのような設定配列キャッシュはアプリケーション維持であり得る。あらゆるアプリケーション維持のストレージ構造が、この目的のために使用され得ることに留意されたい。図１８は関与し得る処理の一実施形態を描写している。図示されるように、アドレス変換１１００を実施することの一部として、所望のローカリティ・ドメイン情報が設定配列キャッシュ１１１０内のローカルで利用可能かどうかの判断がなされ得る。「いいえ」の場合、設定配列のルックアップが実施され１１２０、関連する設定配列情報が設定配列キャッシュ１１３０にフェッチされる。設定配列キャッシュ内のドメイン情報とともに、ローカリティ・ドメイン情報をリターンすることができる１１４０。
【００９４】
図１３に関連して上で図示したように、別の実施形態において、（いったん検索された）ローカリティ・ドメイン情報を例えばトランスレーション・ルックアサイド・バッファ内にキャッシュすることができる。この一実施形態がアドレス変換１２００を実施することに関連して図１９に描写されており、所望のローカリティ・ドメイン情報をそれぞれのＴＬＢエントリ１２１０から取得し（例えば図１３のＤＯＭフィールドとして示されるように）、リターンすることができる１２２０。この点に関して、検索されたローカリティ・ドメイン情報を管理するためのＴＬＢ構造の使用は、ドメイン情報が数ビットなどと小さい場合に有利であり得ることに留意されたい。この手法は、配列処理のオーバヘッドをもたらす別個の設定配列キャッシュより効率的であり得る。
【００９５】
図２０および図２１は、ＴＬＢ構造内の特定のメモリ・ユニットのローカリティ・ドメイン情報を提供すること、または更新することについての例示的な実施形態を描写している。図２０において、メモリ・アクセス処理が示されており、例えば上述のようなアドレス変換を実施すること１３３０、およびＴＬＢヒットがあるかどうかを判断すること１３１０を含む。「いいえ」の場合、上述のようにＴＬＢ「ウォーク」を実施することができる１３２０。ＴＬＢヒットがあると仮定すると、メモリには例えば設定配列を使用してアクセスすることができ１３３０、データおよび設定配列の情報をＴＬＢに送信し戻すことができる１３４０。特定のページ・テーブル・エントリについてのＴＬＢ内にローカリティ・ドメイン情報がやはりない場合１３５０、ＴＬＢをローカリティ・ドメイン情報で更新することができ１３６０、データをリターンすることができる１３７０。
【００９６】
図２１は、要求される情報が現在ＴＬＢ構造にない場合の、ローカリティ・ドメイン情報のリクエストの一実施形態を描写している。アドレス変換が実施され１３００、ＴＬＢヒットがあるかどうかの問い合わせが行われる１３１０。「はい」の場合、所望のローカリティ・ドメイン情報がリターンされる１３９５。そうでなければ、上述のようにＴＬＢウォーク１３２０が行われ、リクエストされたローカリティ・ドメイン情報がシステム設定配列から取得される１３８０。ローカリティ・ドメイン情報は所望であればダミー・ロードとして偽装することができることに留意されたい。（図１３で示されるような）ＴＬＢ構造はローカリティ・ドメイン情報で更新され１３９０、情報をリターンすることができる１３９５。
【００９７】
当業者であれば、本明細書において議論される処理に対して様々な改善を採用することができることに留意されたい。例えば、１つまたは複数の追加的なヘルパ機能を使用して、メモリ範囲などのローカリティの範囲を特定することができる。関連付けられるローカリティ・ドメインの開始を取得することができ、同一のローカリティ・ドメイン内に入るすべてのメモリ場所を特定することができる。すなわち、例えば特定のメモリ・チップに関連付けられるメモリ・アドレスを見つけるよう所望される場合、メモリのローカル範囲を見出すことができる。１つまたは複数の実施形態において、一度に多数のアドレスについてローカリティ・ドメイン情報を取得すること、または指定することができるように、１メガバイトまたは１ギガバイトのページなどの大きなメモリ領域が特定されることがある。この方法では、処理は次の、例えば数百万のメモリ・アドレスについてのローカリティをテストすることを回避することができる。
【００９８】
図２２は本発明の１つまたは複数の態様による、ｉｓ＿ｌｏｃａｌ＿ｄｏｍａｉｎ命令の一実施形態を描写している。図示されるように、ｉｓ＿ｌｏｃａｌ＿ｄｏｍａｉｎ命令は、例えばｉｓ＿ｌｏｃａｌ＿ｄｏｍａｉｎ演算を示すオペコードを含む１つまたは複数の演算コード・フィールド１４００、ならびに例えばメモリがローカルであるかどうかを判断するための処理のためのアドレス場所またはメモリ・ユニット１４０２、ならびに結果識別子であり得る任意選択の結果指標１４０４を含むことができる。１つまたは複数の実装形態において、結果識別子は指定されたメモリ・ユニットまたはアドレスが、プロセッサなどの処理ドメインに対してローカルか、ローカルでないかを示すことができる。例えば、ｉｓ＿ｌｏｃａｌ＿ｄｏｍａｉｎ命令は、指定されたアドレスがローカルのプロセッサなどに、またはリモートに取り付けられたメモリ・チャネル上のローカル・ドメイン内にあるかどうかに応じて、フラグをｔｒｕｅまたはｆａｌｓｅにセットすることができる。この命令には変動があり得、命令の一部として、またはオペランドとしてのいずれかで、ローカリティ・レベルすなわちメモリがローカルのプロセッサに取り付けられているか、または同一のローカルのボードなどのプロセッサのうちの１つに取り付けられたメモリであるかどうかを指定することがあることに留意されたい。さらには、ローカリティは、システム・チップ、ボードなどに対してなど、別の構造に対して指定することができる。したがって１つまたは複数の実装形態において、近接性のレベルは例えばプロセッサへのローカル親和性があるかどうかを判断する際に考慮され得る。
【００９９】
図２３はｉｓ＿ｌｏｃａｌ＿ｄｏｍａｉｎ命令に関連付けられる処理の一実施形態を描写している。図２３に図示されるように、ｉｓ＿ｌｏｃａｌ＿ｄｏｍａｉｎ処理１４０１はメモリ・ユニットまたはアドレスを取得すること１４１０、ならびに例えば現在のプロセッサについてのローカリティ・ドメインを取得すること１４２０、を含むことができる。処理はメモリ・ユニットがローカルかどうかを判断する１４３０。「はい」の場合、結果指標をローカリティ親和性を指定するようセットすることができ１４４０、ｉｓ＿ｌｏｃａｌ＿ｄｏｍａｉｎ処理を完了する１４４５。そうでなければ、メモリ・ユニット（またはアドレス）はローカルではなく１４３０、結果指標はローカリティ親和性を指定するようセットされ得１４３５、処理を完了する。
【０１００】
１つまたは複数の実施形態において、結果指標は、指定されたメモリ・ユニットがローカルかどうかについての情報を与える条件コードまたはフラグなど他の指標であり得ることに留意されたい。
【０１０１】
１つまたは複数の実装形態において、任意選択のサービス機能が提供され得る。例えば、ローカリティ・ドメインのサイズを与えるために、ｄｏｍａｉｎ＿ｒａｎｇｅまたはｌｏｃａｌ＿ｄｏｍａｉｎ＿ｒａｎｇｅ命令が提供されてもよく、例えば自然にアラインされ、かつ与えられたアドレスと併せて使用することができるサイズをエンコードする。また、ｄｏｍａｉｎ＿ｓｔａｒｔ、ｄｏｍａｉｎ＿ｅｎｄまたはｌｏｃａｌ＿ｄｏｍａｉｎ＿ｓｔａｒｔ、ｌｏｃａｌ＿ｄｏｍａｉｎ＿ｅｎｄが、それぞれ拡張され指定されたメモリ範囲の開始および終了を定義することを促進するために提供されてもよい。１つまたは複数の実施形態において、最小の周囲サイズまたは同一のローカリティを有する最大の既知の広がりいずれかの観点で、ローカリティを定義することができる。
【０１０２】
１つまたは複数のさらなる態様によると、ハードウェア・プロセッサ（またはプロセッサ・スレッド）などの処理ドメインによる使用のためのメモリ・プールを作成し管理するための機能が提供され、上述の親和性ドメインベースのガーベッジ・コレクション処理などのローカリティ・ドメインベースの処理を促進する。機能は、上で議論したＮＵＭＡコンピューティング環境などのコンピューティング環境において特に有利である。
【０１０３】
本明細書において述べたように、特定のプロセッサ、またはより一般的には特定の処理ドメインにローカルなメモリ上で演算を実施することは、コンピューティング環境内の処理を有利に促進する。しかしながら全面的に仮想化された環境においては、特定の処理ドメインに関連付けられるメモリにリクエストするためのインターフェースがないことがある。したがって、プロセッサ（または処理ドメイン）がオペレーティング・システムまたはハイパーバイザなどのスーパバイザからそのようなローカライズされたメモリにリクエストすることができなくてもローカルの速度および帯域幅の有利性を得るべく、異なる物理的な処理ドメインに関連付けられるメモリ・プールを作成することについての手法が、本明細書において開示される。
【０１０４】
従来、メモリの割り当ては例えばアプリケーションに割り振られたメモリ・ヒープから生じ、メモリの割り当ての間、特定の処理ドメインに対して自由なメモリのローカリティを考慮はしない。メモリ・ヒープは、あらゆるリクエストを行う処理ドメイン（例えばプロセッサ）に割り当てられる自由なメモリのリストであり得、次のリクエストを行うもの（例えばプロセッサ）は例えば次の自由なメモリ・アドレスをヒープから取得することができる。これは、自由なメモリがコンピューティング環境内の複数の異なるローカリティ・ドメインに関連付けられ得、次の自由なメモリが、メモリをリクエストしている現在のハードウェア・スレッド（またはプロセッサ・スレッド）から離れたローカリティ・ドメインに関連付けられることがある、ＮＵＭＡコンピューティング環境内では問題となることがある。これは、複数のローカリティ・ドメインにわたっていくつかのプロセッサで実行しているマルチスレッドのアプリケーションで特に問題になることがある。
【０１０５】
有利には、メモリ・プールまたはローカリティ・ドメインによって編成されるフリーリストが本明細書において開示され、メモリをリクエストするアプリケーション・スレッドに、そのスレッドにローカルなメモリを割り当てられるようにする。この点において、上で説明したように、コンピューティング環境のローカリティは様々なレベルで定義され得ることに留意されたい。また、ローカリティ・ドメインは、ボード・ローカル、プロセッサ・ローカル、スレッド・ローカルなどの、ＮＵＭＡコンピューティング環境の複数のローカリティ・レベルの１つまたは複数において定義され得ることに留意されたい。本明細書において開示される１つまたは複数の実装形態において、単に例としてプロセッサ・ローカルの割り当てを議論する。
【０１０６】
有利には、１つまたは複数の態様において、ローカリティ・ドメインベースのフリーリストと称される、ローカリティ・ドメインベースのメモリ・プールの作成および使用が本明細書において開示される。１つまたは複数の実装形態において、メモリ・ヒープ用のメモリが取得され、対応するローカリティ・ドメインベースのフリーリストにメモリの異なる部分を割り振ることにより分類される。メモリの部分がローカリティ・ドメインによって異なるフリーリストに分類されると、次にメモリが割り当てられた時、メモリはリクエストしているもの（例えば、リクエストを行うプロセッサ）のローカル・ドメインに対応するローカリティ・ドメインのフリーリストから取得することができる。以下で説明するように、メモリ割り当ての際、次の自由なメモリが任意選択でローカリティ親和性がなお存在するかどうかを確認するために再評価される。例えば仮想化された環境内で実行中のアプリケーションのスレッドの再割り振りによってなど、ローカリティ・ドメインが変わっていると、再評価されたメモリを別のローカリティ・ドメインベースのフリーリストに再割り当てすることができる。やはり、ガーベッジ・コレクションの圧縮の際、処理される次のメモリについてのローカリティ情報を、ローカリティベースの親和性が継続されることを確認するために任意選択で再評価することができる。
【０１０７】
図２４は、本発明の１つまたは複数の態様による、メモリ・マネージャ初期化処理の一実施形態を描写している。（本明細書において開示される処理は、アプリケーションのリクエストにおいて、プロセッサ、またはメモリの割り当ておよび解放（また、可能であればメモリをガーベッジ・コレクションすること）について責任のあるプロセッサに結合されたコンポーネントによって実施することができることに留意されたい。）図示されるように、アプリケーションのメモリ・ヒープのためのメモリの範囲がリクエストされて処理が始まる１５０２。メモリ範囲は、ページ、オブジェクト、アドレスなどのメモリ・ユニットに分割され、次の未処理のメモリ・ユニットが取得される１５０４。例えば上で議論したｌｏａｄ＿ｄｏｍａｉｎ命令を使用して、現在のメモリ・ユニットについてのローカリティ・ドメイン（ＬＤ）が取得される１５０６。ローカリティ・ドメイン０からｎ（ＬＤ０・・・ＬＤｎ）が定義されている場合、処理は現在のメモリ・ユニットについて取得されたローカリティ・ドメインが、ローカリティ・ドメイン０（ＬＤ０）にあるかどうかを判断し１５０８、「はい」の場合、メモリ・ユニットをローカリティ・ドメイン０（ＬＤ０）についてフリーリストに追加する１５１０。そうでなければ、処理は現在のメモリ・ユニットに関連付けられるローカリティ・ドメインが、ローカリティ・ドメイン１（ＬＤ１）にあるかどうかを判断し１５１２、そうであれば、メモリ・ユニットをローカリティ・ドメイン１についてフリーリストに追加する１５１４。そうでなければ、処理はローカリティ・ドメインｎ（ＬＤｎ）まで続けられ１５１６、そこで処理はローカリティ・ドメインがローカリティ・ドメインｎと一致すると仮定し、メモリ・ユニットをローカリティ・ドメインｎについてフリーリストに追加する１５１８。ローカリティ・ドメインに追加される現在のメモリ・ユニットに基づいて、処理はさらなる未処理のメモリ・ユニットがあるかどうかを判断し１５２０、「はい」の場合、メモリ範囲から次の未処理のメモリ・ユニットを選択する。さらなる未処理のメモリ・ユニットがなくなってしまうと、この開始の処理は完了である１５２１。
【０１０８】
１つまたは複数の実装形態において、単一の大きな隣接するメモリ範囲がオペレーティング・システムによってリターンされることがあり、コンピューティング環境の異なるローカリティ・ドメインに対応して様々なサブ領域（すなわち様々なサブメモリ領域）を取得することができる。この一実施形態が、図２５で描写されている。図示されるように、メモリ・ヒープ１５３２ためのメモリの範囲がリクエストされて処理が始まる１５３０。これは範囲の開始のアドレスをリターンすることを含むことができる１５３４。命令ｄｏｍａｉｎ＿ｅｎｄ、またはｄｏｍａｉｎ＿ｒａｎｇｅを利用して、同一のローカリティ・ドメイン内にあるリターンされた範囲の領域のサイズを取得することができる１５３６。例えば上で議論したｌｏａｄ＿ｄｏｍａｉｎ命令を使用して、この特定の領域についてのローカリティ・ドメインが特定される１５３８。領域およびローカリティ・ドメインが取得されると、処理は現在のメモリ領域が、ローカリティ・ドメイン０にあるかどうかを判断し１５４０、そうであれば領域（ＡＤＤＲＥＳＳ，ＥＮＤ）をローカリティ・ドメイン０についてフリーリストに追加する１５４２。そうでなければ、処理は特定された領域がローカリティ・ドメイン１にあるかどうかを判断し１５４４、そうであれば、領域（ＡＤＤＲＥＳＳ，ＥＮＤ）をローカリティ・ドメイン１についてフリーリストに追加する１５４６。この処理は、ローカリティ・ドメインｎ（ＬＤｎ）まで続き１５４８、そこで領域（ＡＤＤＲＥＳＳ，ＥＮＤ）がローカリティ・ドメインｎについてフリーリストに追加される１５５０。領域が特定のフリーリストに追加されると、アドレスはちょうど処理されたメモリの領域の終了＋１までインクリメントされ１５５２、処理はさらなる未処理のメモリ領域があるかどうかを判断する１５５４。そうであれば、処理は次のメモリ領域の終了を決定することにより、次の領域の広がりを決定するためにリターンする１５３６。そうでなければ、未処理のメモリが残っていないことに基づいて、処理は完了される１５５６。１つまたは複数の実施形態において、いくつかの大きな隣接する範囲がリターンされることがあり、その場合例えば図２５の処理がメモリのそれぞれリターンされる範囲で実施されることに留意されたい。
【０１０９】
１つまたは複数の他の実施形態において、例えば図２４および図２５に関連して上述したような処理を実施するのではなく、フリーリスト内に提示されるリクエストを満たすのに十分なメモリを作成するためにメモリ割り当ての間にこれらの方法の一部を実施することができる。
【０１１０】
さらなる例として、図２６は、メモリ・ユニットが上述のようなそれぞれのローカリティ・ドメインベースのフリーリストにいったん割り振られている、メモリ割り当てのリクエスト処理の一実施形態を描写している。図示されるように、メモリ割り当て１６０１はメモリ・ユニット（例えば、オブジェクト、ページなど）をリクエストすること１６０２、現在のプロセッサのスレッドのローカリティ・ドメインについてフリーリストにアクセスすること１６０４を含むことができる。任意選択で、リターンされたメモリ・ユニットを、現在のプロセッサ・スレッドのローカリティ・ドメイン内にまだあるのかどうかを判断するために、評価することができる１６０６。例えば、上述のｌｏａｄ＿ｄｏｍａｉｎ命令を、フリーリストから取得されたメモリ・ユニットのために利用することができ、結果はローカルのスレッドのローカリティ・ドメインと比較される。別の実施形態において、これは上述のようなｉｓ＿ｌｏｃａｌ＿ｄｏｍａｉｎ命令を使用して実施してもよい。メモリ・ユニットがもはや現在のプロセッサのローカリティ・ドメイン内にない場合、メモリ・ユニットをメモリ・ユニットが現在対応している別のローカリティ・ドメインのフリーリストに再割り当てすることができる１６０８。再割り当てされると、処理は現在のプロセッサ・スレッドの関連付けられるフリーリストから次のメモリ・ユニットを取得することができる。現在のローカリティ・ドメイン内のメモリ・ユニットが取得されると、メモリ・オブジェクトはコーラに割り当てられ、割り当てられたオブジェクトへのポインタをそのコーラにリターンすることができ１６１０、これで割り当て処理を完了する１６１２。この処理によると、既存のメモリ割り当てインターフェースにしたがってメモリの割り当てをリクエストしているプロセスまたはタスクのローカリティ・ドメインに、メモリのリクエストを割り当てることができ、それにより既存のソース・コードとの互換性を保証していることに留意されたい。別の実施形態において、ローカリティ・ドメインは本発明の割り当てインターフェースにしたがって割り当てリクエスト内で指定することができ、メモリ・ユニットは対応するローカリティ・ドメインベースのフリーリストから選択される。
【０１１１】
１つまたは複数のさらなる態様によると、例えばガーベッジ・コレクション処理の間、特にメモリ・マネージャによるメモリ圧縮に関連して、メモリ・ユニットのローカリティを再評価または再確立することができる。図２７はそのような再評価処理の一実施形態を描写している。メモリ圧縮はメモリ・ユニットの再割り当て１７０２で開始し１７０１、メモリ・ユニットが元々割り当てられていた仮想環境のローカリティ・ドメイン（例えば、元々割り振られたローカリティ・ドメインベースのフリーリスト）を特定する１７０４。（選択されたローカリティ・ドメイン内のページに対応する）メモリ・ユニット用のターゲット・ページが選択され１７０６、処理は、ターゲット・ページがこのローカリティ・ドメイン内にまだあるかどうかを判断する１７０８。「いいえ」の場合、ターゲット・ページを別のローカリティ・ドメイン、すなわちページが関連付けられる別のローカリティ・ドメインのフリーリストに再割り当てすることができる１７１０。この点で、ｌｏａｄ＿ｄｏｍａｉｎ命令をフリーリストから取得されたメモリ領域用に使用し、それをローカルのプロセッサの（またはスレッドの）ローカリティ・ドメインと比較することができることに留意されたい。別の実施形態において、これは上で議論したｉｓ＿ｌｏｃａｌ＿ｄｏｍａｉｎ命令を使用して実施してもよい。ローカリティ・ドメインが確認されると、メモリ・ユニットをターゲット・ページに複製することができ１７１２、これで再配置されるメモリ・ユニットの処理を完了する１７１４。この処理は再配置されるメモリ・ユニット（例えば、オブジェクト）ごとに実施することができることに留意されたい。
【０１１２】
１つまたは複数の他の実装形態において、メモリの圧縮処理の一部として、またはそれに関連付けて、メモリ領域の親和性は必ずしも元々のローカリティベースの割り当てに基づいている必要はない。むしろ、ローカリティ親和性はこのコンテキストにおいては例えばメモリ・ユニットへの繰り返されるアクセスに基づいていることができる。例えば、メモリ・ユニットが特定のローカリティ・ドメイン内で特定のプロセッサによって繰り返しアクセスされる場合、元々の割り当てが異なる処理ドメインに対するものだったとしても、繰り返されるアクセスを発生させる特定の処理ドメインにメモリ・ユニットを割り当てることが望ましいことがある。したがって、メモリ・ユニット（オブジェクト、バッファなど）を、範囲に繰り返しアクセスするそのプロセッサ（または処理ドメイン）のローカリティ・ドメイン内にあるページに移動させてもよい。この方法において、「ローカリティ」は実際の処理に基づく最も望ましいローカリティ親和性であり得る。したがって、何が元々ローカリティ割り振りだったかに関して問い合わせを行うよりも、特定のアプリケーションに関して異なる処理ドメインに対するメモリの親和性を最適化するために何が最良のローカリティかに関しての決定を行うことができる。また、上で述べたように、ローカリティは階層構造的であり得、メモリの割り振りは階層構造レベルのあらゆるレベル、またはいくつかのレベルにおいて実施することができることに留意されたい。したがって、一実施形態において、メモリの圧縮は、個々のプロセッサに関係なくブック・レベルに対してローカルにオブジェクトを配置することを選ぶことができる。
【０１１３】
図２８は本発明の１つまたは複数の態様による、メモリ解放に関連して実施され得る処理の一実施形態を描写している。この処理はそれぞれ解放されるページ、オブジェクト、アドレス範囲などのメモリ部分（またはエンティティ）ごとに実施することができる。メモリ解放は、直接メモリ解放リクエスト（例えばＰＯＳＩＸ標準仕様によるｆｒｅｅ（）コール）に応答して、またはメモリがガーベッジ・コレクションにより解放されることに応答して、のいずれかで実施することができる。解放されたメモリ部分が取得され１８００、例えば上述のｌｏａｄ＿ｄｏｍａｉｎ命令を使用して現在のメモリ部分についてのローカリティ・ドメインが突きとめられる１８０２。解放されるメモリ部分についてローカリティ・ドメインが取得されると、処理はメモリがローカリティ・ドメイン０内にあるかどうかを判断し１８０４、そうであれば、メモリをローカリティ・ドメイン０について対応するドメインのフリーリストに追加する１８０６。そうでなければ、処理はメモリがローカリティ・ドメイン１にあるかどうかを判断し１８０８、そうであれば、メモリをローカリティ・ドメイン１についてフリーリストに追加する１８１０。この処理は、メモリがローカリティ・ドメインｎ内にあると考えられるローカリティ・ドメインｎまで続き１８１２、メモリはローカリティ・ドメインｎについてフリーリストに追加され１８１４、これで解放されるメモリの処理が完了する１８０７。
【０１１４】
本発明の１つまたは複数の態様はコンピュータ技術に密接に結びついており、コンピュータ内の処理を促進し、そのパフォーマンスを改善する。本発明の１つまたは複数の態様に関し、コンピューティング環境内で処理を促進するための一実施形態のさらなる詳細を、図２９〜図３０を参照して説明する。
【０１１５】
コンピューティング環境内の処理機能に対するメモリのユニットのローカリティ・ドメイン情報を突きとめること（１９０２）と、メモリのユニットのローカリティ・ドメイン情報をデータ構造にキャッシュして、コンピューティング環境の処理機能に対するメモリのユニットの１つまたは複数の親和性評価に関連付けられるローカリティ・ドメイン情報の１つまたは複数の後続のルックアップを促進すること（１９０４）と、により、コンピューティング環境内の処理が促進される（１９００）。
【０１１６】
１つまたは複数の実施形態において、メモリのユニットは、仮想メモリ・ユニットであり、突きとめることは、仮想メモリ・ユニットを実メモリ・ユニットに変換することと、実メモリ・ユニットを使用してローカリティ・ドメイン情報を、コンピューティング環境の物理的なコンポーネントに関するシステム位置情報を含む設定配列からフェッチすることとを含む（１９０６）。一例において、キャッシュすることは、メモリのユニットのローカリティ・ドメイン情報を、コンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュに、キャッシュすることを含む（１９０８）。別の例において、キャッシュすることは、メモリのユニットのローカリティ・ドメイン情報を、コンピューティング環境のトランスレーション・ルックアサイド・バッファにキャッシュすることを含む（１９１０）。
【０１１７】
図３０で図示されるように、１つまたは複数の実施形態において、コンピューティング環境はｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（ＮＵＭＡ）コンピューティング環境であり、処理機能に対するメモリのユニットのローカリティ・ドメイン情報は、メモリのユニットがローカリティベースの親和性を有するＮＵＭＡコンピューティング環境の特定のドメインを特定する情報を含む（１９１２）。
【０１１８】
１つまたは複数の実装形態において、処理は、メモリのユニットが、コンピューティング環境の複数の処理ドメインの処理ドメインに対するローカリティ親和性を有するかどうかを判断することをさらに含み、判断することは、コンピューティング環境内の処理ドメインのローカリティとの比較のためにメモリのユニットのローカリティ・ドメイン情報をデータ構造から検索することを含む（１９１４）。１つまたは複数の実施形態において、データ構造はコンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュであるか、またはコンピューティング環境のトランスレーション・ルックアサイド・バッファである（１９１６）。１つまたは複数の例において処理することは、メモリのユニットのローカリティ・ドメイン情報が処理ドメインのローカリティに一致する場合、ローカル親和性を指定する指標を設定することをさらに含む（１９１８）。処理ドメインへのローカリティ親和性を有するメモリのユニットに基づいて、方法は処理ドメインによって、メモリのユニットに対してガーベッジ・コレクション処理を実施することをさらに含むことができる（１９２０）。
【０１１９】
本発明の態様の思想から逸脱することなく、多くの変形形態が可能である。
【０１２０】
エミュレーション環境を含むが、それに限定されない、コンピューティング環境の他のタイプもまた本発明の１つまたは複数の態様を組み入れ使用することができ、その例を、図３１を参照して説明する。この例において、コンピューティング環境２０は、例えば、ネイティブな中央処理装置（ＣＰＵ）２２、メモリ２４、および１つもしくは複数の入力／出力デバイス、または例えば１つもしくは複数のバス２８または他の接続あるいはその両方を介して互いに結合されるインターフェース２６、あるいはその組合せを含む。例として、コンピューティング環境２０は、インターナショナル・ビジネス・マシーンズ・コーポレーション（ニューヨーク州アーモンク）によって提供されるＰｏｗｅｒＰＣ（Ｒ）プロセッサもしくはｐＳｅｒｉｅｓサーバ、またはインターナショナル・ビジネス・マシーンズ・コーポレーション、Ｉｎｔｅｌ、もしくは他の企業によって提供されるアーキテクチャに基づく他のマシンあるいはその組合せを含むことができる。
【０１２１】
ネイティブな中央処理装置２２は、その環境内で処理の間に使用される、１つもしくは複数の汎用レジスタ、または１つもしくは複数の特殊目的レジスタあるいはその両方などの、１つまたは複数のネイティブなレジスタ３０を含む。これらのレジスタは、あらゆる特定の時点における環境の状態を表す情報を含む。
【０１２２】
また、ネイティブな中央処理装置２２はメモリ２４に記憶される命令およびコードを実行する。特定の一例において、中央処理装置はメモリ２４に記憶されるエミュレータ・コード３２を実行する。このコードにより、あるアーキテクチャにおいて構成されたコンピューティング環境が、別のアーキテクチャをエミュレートすることができる。例えば、エミュレータ・コード３２によって、ＰｏｗｅｒＰＣ（Ｒ）プロセッサ、ｐＳｅｒｉｅｓサーバ、または他のサーバもしくはプロセッサなどの、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）以外のアーキテクチャに基づくマシンが、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）をエミュレートすること、およびｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づいて開発されたソフトウェアおよび命令を実行することができる。
【０１２３】
エミュレータ・コード３２に関連するさらなる詳細を、図３２Ｂを参照して説明する。メモリ２４に記憶されるゲスト命令４０は、ネイティブなＣＰＵ２２のアーキテクチャ以外のアーキテクチャで実行されるよう開発されたソフトウェア命令（例えば機械命令に相関する）を含む。例えば、ゲスト命令４０は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）のプロセッサで実行するように設計することができるが、その代わりに例えばＩｎｔｅｌ（Ｒ）プロセッサであり得るネイティブなＣＰＵ２２上でエミュレートされる。一例において、エミュレータ・コード３２は、メモリ２４から１つまたは複数のゲスト命令４０を取得するための命令フェッチ・ルーチン４２を含み、任意選択で、取得された命令についてローカルのバッファリングを与える。また、取得されているゲスト命令のタイプを決定するため、およびゲスト命令を１つまたは複数の対応するネイティブな命令４６に変換するための命令変換ルーチン４４を含む。この変換は、例えばゲスト命令によって実施される関数を特定すること、およびその関数を実施するネイティブな命令を選ぶこと、を含む。
【０１２４】
さらには、エミュレータ・コード３２は、ネイティブな命令を実行させる、エミュレーション制御ルーチン４８を含む。エミュレーション制御ルーチン４８はネイティブなＣＰＵ２２に、１つまたは複数の以前に取得されたゲスト命令をエミュレートするネイティブな命令のルーチンを実行させることができ、そのような実行の最後に、制御をその命令フェッチ・ルーチンに戻して、次のゲスト命令またはゲスト命令のグループを取得することをエミュレートする。ネイティブな命令４６の実行は、データをメモリ２４からのレジスタにロードすること、データをレジスタからメモリに格納し戻すこと、または変換ルーチンによって決定されるようにいくつかのタイプの算術もしくは論理演算を実施すること、を含むことができる。
【０１２５】
それぞれのルーチンは、例えば、メモリに記憶されるソフトウェアに実装され、ネイティブな中央処理装置２２によって実行される。他の例において、ルーチンまたは演算の１つまたは複数は、ファームウェア、ハードウェア、ソフトウェアまたはそのいくつかの組合せに実装される。エミュレートされたプロセッサのレジスタは、ネイティブなＣＰＵのレジスタ３０を使用して、またはメモリ２４内の場所を使用して、エミュレートすることができる。一実施形態において、ゲスト命令４０、ネイティブな命令４６およびエミュレータ・コード３２は、同一のメモリに存在することができるか、または異なるメモリ・デバイス間に分配されていてもよい。
【０１２６】
本明細書で使用される場合、ファームウェアは例えばマイクロコードまたはプロセッサのミリコードを含む。例えば、より高次のマシン・コードの実装形態で使用されるハードウェアレベルの命令またはデータ構造あるいはその両方を含む。一実施形態において、例えば、典型的には信頼されたソフトウェアを含むマイクロコードとして提供されるプロプライエタリなコード、または基礎となるハードウェアに特有のマイクロコードを含み、オペレーティング・システムのシステム・ハードウェアへのアクセスを制御する。
【０１２７】
取得され、変換され、実行されるゲスト命令４０は、例えば、本明細書で説明される命令の１つであることができる。あるアーキテクチャ（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ））の１つのものである、命令は、メモリからフェッチされ、変換され、別のアーキテクチャ（例えば、ＰｏｗｅｒＰＣ（Ｒ）、ｐＳｅｒｉｅｓ、Ｉｎｔｅｌ（Ｒ）など）のネイティブな命令４６のシーケンスとして表現される。そして、これらのネイティブな命令は実行される。
【０１２８】
１つまたは複数の態様は、クラウド・コンピューティングに関連することができる。
【０１２９】
本開示はクラウド・コンピューティングについての詳細な説明を含むが、本明細書で具陳される教示の実装形態はクラウド・コンピューティング環境に限定されないことを、前もって理解されたい。むしろ本発明の実施形態は、現在既知のまたは後に開発されるあらゆる他のタイプのコンピューティング環境と併せて実装することができる。
【０１３０】
クラウド・コンピューティングは、最小限の管理努力またはサービスのプロバイダとの対話で迅速にプロビジョニングおよびリリースされ得る、便利でオン・デマンドの構成可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシン、およびサービス）の共有されるプールへのネットワーク・アクセスを可能とするためのサービス提供のモデルである。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、および少なくとも４つの展開モデルを含むことができる。
【０１３１】
特徴は以下のとおりである：
オン・デマンド・セルフサービス：クラウド消費者は、サービスのプロバイダとの人間対話を要求することなく必要に応じて自動的に、サーバ時間およびネットワーク記憶装置などのコンピュータ機能を一方的にプロビジョニングすることができる。
幅広いネットワーク・アクセス：機能はネットワーク上で利用可能であり、異質なシンまたはシックなクライアントのプラットフォーム（例えば、携帯電話、ラップトップ、およびＰＤＡ）による使用を促進する標準的なメカニズムを通じてアクセスされる。
リソース・プール：プロバイダのコンピューティング・リソースは、マルチテナントのモデルを使用する複数の消費者にサービス提供するためにプールされ、異なる物理的および仮想的なリソースが要求にしたがって動的に割り当ておよび再割り当てされる。消費者が提供されるリソースの正確な場所についての制御または情報を一般的に持たない点で、場所の独立性の意味があるが、より高次の抽象化（例えば、国、州、またはデータセンタ）において場所を特定できることもある。
迅速な拡張性：機能は迅速かつ拡張可能にプロビジョニングすることができ、いくつかの場合において、自動的に、素早くスケール・アウトされ、迅速にリリースされて素早くスケール・インされる。消費者にとって、プロビジョニングのために利用可能な機能は、しばしば無制限なようで、いつでもいくらでも購入することができる。
サービスが計測される：クラウド・システムは、サービスのタイプ（例えば、記憶装置、処理、帯域幅、およびアクティブなユーザ・アカウント）に適当な抽象化のいくつかのレベルにおいて計測機能を活用することによりリソースの使用を自動的に制御し、かつ最適化する。リソースの使用は監視され、制御され、かつ報告され得、利用されるサービスのプロバイダおよび消費者の両方にとって透明性を与えている。
【０１３２】
サービス・モデルは以下のとおりである：
ソフトウェアを提供するサービス（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＳａａＳ））：消費者に提供される機能は、クラウド・インフラストラクチャで実行するプロバイダのアプリケーションを使用する。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インターフェース（例えば、ウェブ・ベースの電子メール）を通じて様々なクライアント・デバイスからアクセス可能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、記憶装置、またはさらには個々のアプリケーション機能を含む基礎となるクラウド・インフラストラクチャを管理または制御することはなく、あり得る例外として限定されたユーザ固有アプリケーションの構成設定が可能である。
プラットフォームを提供するサービス（Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ  （ＰａａＳ））：消費者に提供される機能は、プロバイダによってサポートされるプログラミング言語およびツールを使用した消費者作成の、または取得されたアプリケーション作成のクラウド・インフラストラクチャに展開する。消費者は、ネットワーク、サーバ、オペレーティング・システム、または記憶装置を含む基礎となるクラウド・インフラストラクチャの管理または制御をしないが、展開されたアプリケーション、および場合によっては環境構成をホストするアプリケーションについての制御を有する。
インフラストラクチャを提供するサービス（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＩａａＳ））：消費者に提供される機能は、消費者がオペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを展開および実行することができる処理、記憶装置、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングする。消費者は、基礎となるクラウド・インフラストラクチャの管理または制御をしないが、オペレーティング・システム、記憶装置、展開されたアプリケーション、および場合によっては選択ネットワーク・コンポーネント（例えば、ホスト・ファイヤウォール）の限定された制御についての制御を有する。
【０１３３】
展開モデルは以下のとおりである：
プライベート・クラウド：クラウド・インフラストラクチャはある組織のためだけに運用される。その組織またはサード・パーティによって管理され得、オンプレミスまたはオフプレミスで存在することができる。
コミュニティ・クラウド：クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有される事案（例えば、ミッション、セキュリティ要件、ポリシ、およびコンプライアンス懸案事項）を有する特定のコミュニティをサポートする。その組織またはサード・パーティによって管理され得、オンプレミスまたはオフプレミスで存在することができる。
パブリック・クラウド：クラウド・インフラストラクチャは、一般公衆または大規模な業界団体に対して利用可能とされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド：クラウド・インフラストラクチャは、一意なエンティティのままである２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）を組合せたものであるが、データおよびアプリケーションのポータビリティを可能にする標準化された、またはプロプライエタリな技術（例えば、クラウド間でロードバランシングを行うためのクラウド・バースト）によって結合される。
【０１３４】
クラウド・コンピューティング環境は、無国籍、低い結合性、モジュール性、および意味論的な相互運用性に集中するサービス指向である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【０１３５】
次に図３３を参照すると、例示的なクラウド・コンピューティング環境５０が描写されている。示されるように、クラウド・コンピューティング環境５０は、例えば、携帯情報端末（ＰＤＡ）または携帯電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、または自動車コンピュータ・システム５４Ｎあるいはその組合せなどのクラウドの消費者によって使用されるローカルのコンピューティング・デバイスと通信することができる１つまたは複数のクラウド・コンピューティング・ノード１０を備える。ノード１０は互いに通信することができる。本明細書において上述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウドまたはその組合せなどの１つまたは複数のネットワークにおいて、それらは物理的または仮想的にグループ化することができる（図示せず）。これにより、クラウド・コンピューティング環境５０は、クラウドの消費者がローカルのコンピューティング・デバイスでリソースを維持する必要のない、インフラストラクチャ、プラットフォーム、またはソフトウェアあるいはその組合せをサービスとして与えることができる。図３３に示されるコンピューティング・デバイス５４Ａ〜Ｎのタイプは、図示のみを意図されており、コンピューティング・ノード１０およびクラウド・コンピューティング環境５０は、あらゆるタイプのネットワーク上またはネットワーク・アドレス可能接続で（例えば、ウェブ・ブラウザを使用して）あるいはその両方であらゆるタイプのコンピュータ化されたデバイスと通信することができることが理解されよう。
【０１３６】
図３４を参照すると、クラウド・コンピューティング環境５０（図３３）によって提供される機能的な抽象化レイヤのセットが示されている。図３４に示されるコンポーネント、レイヤ、および機能は、図示のみを意図されており、本発明の実施形態はそれに限定されないことがまず理解されるべきである。描写されるように、以下のレイヤおよび対応する機能が提供される。
【０１３７】
ハードウェアおよびソフトウェア・レイヤ６０は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、以下が挙げられる：メインフレーム６１、縮小命令セット・コンピュータ（Reduced Instruction Set Computer（ＲＩＳＣ））アーキテクチャ・ベースのサーバ６２、サーバ６３、ブレード・サーバ６４、ストレージ・デバイス６５、ならびにネットワークおよびネットワーク・コンポーネント６６。いくつかの実施形態において、ソフトウェア・コンポーネントはネットワーク・アプリケーション・サーバ・ソフトウェア６７、およびデータベース・ソフトウェア６８を含む。
【０１３８】
仮想化レイヤ７０は、仮想エンティティの以下の例を提供することができる抽象化レイヤを与える：仮想サーバ７１、仮想ストレージ７２、仮想プライベート・ネットワークを含む仮想ネットワーク７３、仮想アプリケーションおよびオペレーティング・システム７４、および仮想クライアント７５。
【０１３９】
一例において、管理レイヤ８０は以下で説明される機能を提供することができる。リソース・プロビジョニング８１は、クラウド・コンピューティング環境内でタスクを実施するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。計測および課金８２は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費についての課金または請求書発行を提供する。一例において、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド消費者およびタスクについての識別情報の検証、ならびにデータおよび他のリソースについての保護を提供する。ユーザ・ポータル８３はクラウド・コンピューティング環境へのアクセスを消費者およびシステム管理者に提供する。サービス水準管理８４は、要求されるサービス水準が満たされるように、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス水準合意（ＳＬＡ）計画および遂行８５は、将来的な要求がＳＬＡにしたがって予期されるクラウド・コンピューティング・リソースについての事前申し合わせ、およびクラウド・コンピューティング・リソースの調達を提供する。
【０１４０】
ワークロード・レイヤ９０はクラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤからもたらされ得るワークロードおよび機能の例として以下が挙げられる：マッピングおよびナビゲーション９１、ソフトウェア開発およびライフサイクル管理９２、仮想授業教育配信９３、データ分析処理９４、トランザクション処理９５、およびメモリ親和性またはガーベッジ・コレクション処理あるいはその両方９６。
【０１４１】
本発明は、統合のあらゆる可能な技術的詳細レベルにおける、システム、方法、またはコンピュータ・プログラム製品あるいはその組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
【０１４２】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶装置デバイス、磁気記憶装置デバイス、光学記憶装置デバイス、電磁気記憶装置デバイス、半導体記憶装置デバイスまたは前述のあらゆる適切な組合せであってもよいが、それに限定はしない。コンピュータ可読記憶媒体のより具体的な例の非網羅的な列挙としては、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、静的ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、命令を記録されて有するパンチカードまたは溝に刻まれた構造などの機械的にエンコードされたデバイス、および前述のあらゆる適切な組合せ、を含む。本明細書において使用される場合、コンピュータ可読記憶媒体は、電波または他の自由に伝搬する電磁波、導波路もしくは他の送信媒体を介して伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、または電線を介して送信される電気的信号など、一過性の信号そのものであると解釈されてはならない。
【０１４３】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、個別のコンピューティング／処理デバイスに、あるいは、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはその組合せなどのネットワークを介して、外部のコンピュータもしくは外部の記憶装置デバイスに、ダウンロードすることができる。ネットワークは、銅の送信ケーブル、光学送信ファイバ、無線送信、ルータ、ファイヤウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを備えることができる。それぞれのコンピューティング／処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、個別のコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【０１４４】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいはスモールトーク（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および“Ｃ”プログラミング言語などの手続き型プログラミング言語もしくは類似するプログラミング言語、を含む１つまたは複数のプログラミング言語のあらゆる組合せで記述された、ソース・コードまたはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、すべてユーザのコンピュータ上で、一部はユーザのコンピュータ上でスタンドアロンのソフトウェア・パッケージとして、一部はユーザのコンピュータ上かつ一部は遠隔のコンピュータ上で、またはすべて遠隔のコンピュータ上もしくはサーバ上で、実行することができる。後者のシナリオにおいて、遠隔のコンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含むあらゆるタイプのネットワークを介してユーザのコンピュータに接続することができ、または接続は外部のコンピュータ（例えば、インターネット・サービス・プロバイダを使用するインターネットを介して）に対してなされてもよい。一部の実施形態において、例えば、プログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル論理アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して電子回路を個別化することができる。
【０１４５】
本発明の態様は本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書において説明される。フローチャート図またはブロック図あるいはその両方のそれぞれのブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装され得ることが理解されよう。
【０１４６】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／作用を実装する手段を作成すべく、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を作るものであってよい。これらのコンピュータ可読プログラム命令はまた、命令を記憶して有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／作用の態様を実装するための命令を含む製造物品を備えるべく、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに特定のやり方で機能するように指示することができるコンピュータ可読記憶媒体に記憶されてもよい。
【０１４７】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／作用を実装するべく、コンピュータ実装処理を作るために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作可能なステップを実施させるものであってもよい。
【０１４８】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態にしたがって、システム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能性、および動作を図示している。この点において、フローチャートまたはブロック図のそれぞれのブロックは、指定される論理機能を実装するための１つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表現することができる。一部の代替的な実装形態において、ブロックにおいて示した機能は図面で示した順とは異なって発生してもよい。例えば、連続して示される２つのブロックは、実際には実質的に同時に実行されてもよく、またはブロックは関与する機能性によっては、時に逆の順で実行されてもよい。ブロック図またはフローチャート図あるいはその両方のそれぞれのブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、指定される機能もしくは作用を実施する、または特殊目的ハードウェアおよびコンピュータ命令の組合せを実行する、特殊目的ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
【０１４９】
上記に加え、１つまたは複数の態様が、顧客環境の管理を提供するサービス・プロバイダによって提供され得、提案され得、展開され得、管理され得、サービスなどされ得る。例えば、サービス・プロバイダは、１つまたは複数の顧客に１つまたは複数の態様を実施するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を、作成すること、維持すること、サポートすることなどができる。その見返りに、サービス・プロバイダは、例として購読または料金契約あるいはその両方の下で顧客から支払いを受け取ることができる。追加的に、または代替的に、サービス・プロバイダは、１つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ることができる。
【０１５０】
一態様において、アプリケーションは１つまたは複数の実施形態を実施するために展開することができる。一例として、アプリケーションを展開することは、１つまたは複数の実施形態を実施するよう動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【０１５１】
さらなる態様として、コンピューティング・インフラストラクチャを、コンピュータ可読コードをコンピューティング・システムに統合することを含んで展開することができ、そこではコードは、コンピューティング・システムと組合せて１つまたは複数の実施形態を実施することができる。
【０１５２】
なおさらなる態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含むコンピューティング・インフラストラクチャを統合するためのプロセスが提供され得る。コンピュータ・システムは、コンピュータ可読媒体を備え、そこではコンピュータ媒体は１つまたは複数の実施形態を含む。コードは、コンピュータ・システムと組合せて１つまたは複数の実施形態を実施することができる。
【０１５３】
様々な実施形態を上で説明したが、これらはただの例である。例えば、他のアーキテクチャのコンピューティング環境は、１つまたは複数の実施形態を組み込んで使用するために使用することができる。さらには、様々なメモリまたはキャッシュの階層構造あるいはその両方を使用することができる。多くの変形形態が可能である。
【０１５４】
さらには、他のタイプのコンピューティング環境が有益であり得、使用することができる。例として、プログラム・コードを記憶することまたは実行することあるいはその両方に適切なデータ処理システムが使用可能であり、直接的にまたは間接的にシステム・バスを介してメモリ要素に結合される少なくとも２つのプロセッサを含む。メモリ要素は、例えば、プログラム・コードの実際の実行の間に利用されるローカル・メモリ、バルク・ストレージ、および実行中にコードがバルク・ストレージから検索されなければならない回数を減らすために、少なくともいくつかのプログラム・コードの一時的な記憶装置を提供するキャッシュ・メモリを含む。
【０１５５】
入力／出力またはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブ、および他のメモリ媒体などを含むがそれに限定されない）は、直接的または仲介的なＩ／Ｏコントローラを通じてのいずれかで、システムに結合することができる。データ処理システムが仲介的なプライベートまたはパブリックなネットワークを通じて他のデータ処理システムまたはリモートのプリンタもしくは記憶装置デバイスに結合することができるようにするために、ネットワーク・アダプタをシステムに結合することもできる。利用可能なタイプのネットワーク・アダプタとしてはモデム、ケーブル・モデム、およびイーサネット（Ｒ）・カードなどがある。
【０１５６】
本明細書で使用される用語は、特定の実施形態を説明するためだけのものであり、限定的であることを意図されていない。本明細書で使用される場合、コンテキストが明確にそうではないと指示しない限り、単数形「１つの（ａ）」、「１つの（ａｎ）」および「その（ｔｈｅ）」は複数形を同様に含むように意図されている。用語「を含む（ｃｏｍｐｒｉｓｅ）」または「を含む（ｃｏｍｐｒｉｓｉｎｇ）」あるいはその両方は、本明細書で使用される場合、述べられた特徴、整数、ステップ、動作、要素、またはコンポーネントあるいはその組合せの存在を特定するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネントまたはそのグループあるいはその組合せの、存在または追加を排除しないことが、さらに理解されよう。
【０１５７】
以下の特許請求の範囲における、すべての機能付き手段（ミーンズ・プラス・ファンクション）または機能付き工程（ステップ・プラス・ファンクション）の要素の対応する構造、材料、作用、および等価物は、もしあれば、具体的に特許請求されるような他の特許請求される要素と組合せて機能を実施するために、あらゆる構造、材料、または作用を含むことを意図されている。例示および説明を目的として、１つまたは複数の実施形態の説明を提示してきたが、網羅的であること、または開示された形態に限定することは意図されていない。多くの修正形態および変形形態が当業者にとって明らかとなろう。実施形態は、様々な態様および実践的な用途を最良に説明するために選ばれ説明されたものであり、企図される特定の使用に適した様々な修正形態を伴う様々な実施形態を、当業者の他の者に理解させることができる。
【図１】
2021502637.tif 000013
【図２】
2021502637.tif 000014
【図３】
2021502637.tif 000015
【図４】
2021502637.tif 000016
【図５】
2021502637.tif 000017
【図６】
2021502637.tif 000018
【図７】
2021502637.tif 000019
【図８】
2021502637.tif 000020
【図９】
2021502637.tif 000021
【図１０】
2021502637.tif 000022
【図１１】
2021502637.tif 000023
【図１２】
2021502637.tif 000024
【図１３】
2021502637.tif 000025
【図１４】
2021502637.tif 000026
【図１５】
2021502637.tif 000027
【図１６】
2021502637.tif 000028
【図１７】
2021502637.tif 000029
【図１８】
2021502637.tif 000030
【図１９】
2021502637.tif 000031
【図２０】
2021502637.tif 000032
【図２１】
2021502637.tif 000033
【図２２】
2021502637.tif 000034
【図２３】
2021502637.tif 000035
【図２４】
2021502637.tif 000036
【図２５】
2021502637.tif 000037
【図２６】
2021502637.tif 000038
【図２７】
2021502637.tif 000039
【図２８】
2021502637.tif 000040
【図２９】
2021502637.tif 000041
【図３０】
2021502637.tif 000042
【図３１】
2021502637.tif 000043
【図３２】
2021502637.tif 000044
【図３３】
2021502637.tif 000045
【図３４】
2021502637.tif 000046
【手続補正書】
【提出日】令和2年6月12日(2020.6.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティング環境内の処理を促進するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、
コンピュータに対し、
前記コンピューティング環境内の処理機能に対するメモリのユニットのローカリティ・ドメイン情報を突きとめることと、
前記メモリのユニットの前記ローカリティ・ドメイン情報をデータ構造にキャッシュして、前記コンピューティング環境の前記処理機能に対する前記メモリのユニットの１つまたは複数の親和性評価に関連付けられる前記ローカリティ・ドメイン情報の１つまたは複数の後続のルックアップを促進することと
を実行させる、コンピュータ・プログラム。
【請求項２】
前記メモリのユニットは、仮想メモリ・ユニットであり、前記突きとめることは、前記仮想メモリ・ユニットを実メモリ・ユニットに変換することと、前記実メモリ・ユニットを使用して前記ローカリティ・ドメイン情報を、前記コンピューティング環境の物理的なコンポーネントに関するシステム位置情報を含む設定配列からフェッチすることとを含む、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記キャッシュすることは、前記メモリのユニットの前記ローカリティ・ドメイン情報を、前記コンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュに、キャッシュすることを含む、請求項１に記載のコンピュータ・プログラム。
【請求項４】
前記キャッシュすることは、前記メモリのユニットの前記ローカリティ・ドメイン情報を、前記コンピューティング環境のトランスレーション・ルックアサイド・バッファにキャッシュすることを含む、請求項１に記載のコンピュータ・プログラム。
【請求項５】
前記コンピューティング環境はｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（ＮＵＭＡ）コンピューティング環境であり、前記処理機能に対する前記メモリのユニットの前記ローカリティ・ドメイン情報は、前記メモリのユニットがローカリティベースの親和性を有する前記ＮＵＭＡコンピューティング環境の特定の処理ドメインを特定する情報を含む、請求項１に記載のコンピュータ・プログラム。
【請求項６】
前記メモリのユニットが、前記コンピューティング環境の複数の処理ドメインの処理ドメインに対するローカリティ親和性を有するかどうかを判断することをさらに含み、前記判断することは、前記コンピューティング環境内の前記処理ドメインのローカリティとの比較のために前記メモリのユニットの前記ローカリティ・ドメイン情報を前記データ構造から検索することを含む、請求項１に記載のコンピュータ・プログラム。
【請求項７】
前記データ構造は前記コンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュのうちの１つ、または前記コンピューティング環境のトランスレーション・ルックアサイド・バッファである、請求項６に記載のコンピュータ・プログラム。
【請求項８】
コンピューティング環境内の処理を促進するためのコンピュータ・システムであって、前記コンピュータ・システムは
メモリと、
メモリと通信しているプロセッサと
を備え、前記コンピュータ・システムは
前記コンピューティング環境内の処理機能に対するメモリのユニットのローカリティ・ドメイン情報を突きとめることと、
前記メモリのユニットの前記ローカリティ・ドメイン情報をデータ構造にキャッシュして、前記コンピューティング環境の前記処理機能に対する前記メモリのユニットの１つまたは複数の親和性評価に関連付けられる前記ローカリティ・ドメイン情報の１つまたは複数の後続のルックアップを促進することと
を実施するように構成される、コンピュータ・システム。
【請求項９】
前記メモリのユニットは、仮想メモリ・ユニットであり、前記突きとめることは、前記仮想メモリ・ユニットを実メモリ・ユニットに変換することと、前記実メモリ・ユニットを使用して前記ローカリティ・ドメイン情報を、前記コンピューティング環境の物理的なコンポーネントに関するシステム位置情報を含む設定配列からフェッチすることとを含む、請求項８に記載のコンピュータ・システム。
【請求項１０】
前記キャッシュすることは、前記メモリのユニットの前記ローカリティ・ドメイン情報を、前記コンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュに、キャッシュすることを含む、請求項８に記載のコンピュータ・システム。
【請求項１１】
前記キャッシュすることは、前記メモリのユニットの前記ローカリティ・ドメイン情報を、前記コンピューティング環境のトランスレーション・ルックアサイド・バッファにキャッシュすることを含む、請求項８に記載のコンピュータ・システム。
【請求項１２】
前記コンピューティング環境はｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（ＮＵＭＡ）コンピューティング環境であり、前記処理機能に対する前記メモリのユニットの前記ローカリティ・ドメイン情報は、前記メモリのユニットがローカリティベースの親和性を有する前記ＮＵＭＡコンピューティング環境の特定の処理ドメインを特定する情報を含む、請求項８に記載のコンピュータ・システム。
【請求項１３】
コンピューティング環境内で処理を促進するためのコンピュータが実行する方法であって、前記方法は、
前記コンピューティング環境内の処理機能に対するメモリのユニットのローカリティ・ドメイン情報を突きとめることと、
前記メモリのユニットの前記ローカリティ・ドメイン情報をデータ構造にキャッシュして、前記コンピューティング環境の前記処理機能に対する前記メモリのユニットの１つまたは複数の親和性評価に関連付けられる前記ローカリティ・ドメイン情報の１つまたは複数の後続のルックアップを促進することと
を含む、コンピュータ実行可能な方法。
【請求項１４】
前記コンピューティング環境はｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（ＮＵＭＡ）コンピューティング環境であり、前記処理機能に対する前記メモリのユニットの前記ローカリティ・ドメイン情報は、前記メモリのユニットがローカリティベースの親和性を有する前記ＮＵＭＡコンピューティング環境の特定の処理ドメインを特定する情報を含む、請求項１３に記載のコンピュータ実行可能な方法。
【請求項１５】
コンピューティング環境内の処理を促進するためのコンピュータ・プログラムを記録したコンピュータ可読記憶媒体であって、前記コンピュータ可読記憶媒体は、
処理回路によって可読であり、
前記コンピューティング環境内の処理機能に対するメモリのユニットのローカリティ・ドメイン情報を突きとめることと、
前記メモリのユニットの前記ローカリティ・ドメイン情報をデータ構造にキャッシュして、前記コンピューティング環境の前記処理機能に対する前記メモリのユニットの１つまたは複数の親和性評価に関連付けられる前記ローカリティ・ドメイン情報の１つまたは複数の後続のルックアップを促進することと
を含む方法を実施するための命令を記憶する、
コンピュータ可読記憶媒体。
【国際調査報告】
2021502637.tif 000047
2021502637.tif 000048