(57)【要約】【課題】メモリ参照レイテンシをサンプリングし、それに応じてシステムのコンポーネントを調整することにより、マルチプロセッサ・コンピューティング・システムを最適化する装置、方法、およびプログラム製品を提供する。【解決手段】コンピューティング・システムにおいてプロセスが実行される間、実行中のプロセスにおいて参照されるコンピューティング・システムの共有メモリから、メモリ位置のメモリ参照サンプリングが実行される。サンプリングから収集された、サンプリングされたメモリ参照はそれぞれ、レイテンシと、共有メモリ内の物理メモリ位置とに関連する。サンプリングされたメモリ参照はそれぞれ、共有メモリ内のメモリ位置の、準最適レイテンシに対応するセグメントを特定するために分析され、分析された、サンプリングされたメモリ参照に基づいて、特定された１つ以上のセグメントの物理位置、特定されたセグメントを参照する１つ以上のプロセスが実行されるプロセッサ、もしくは特定された１つ以上のセグメントに関連するステータス、またはそのいずれかの組み合わせが動的に調整され、それにより、マルチプロセッサ・コンピューティング・システムのメモリ・アクセスが最適化される。【選択図】図３
2015504541.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサ・コンピューティング・システムにおけるメモリ・アクセスを動的に最適化する方法であって、前記方法は、
前記マルチプロセッサ・コンピューティング・システム内の複数の物理プロセッサにより複数のプロセスが実行される間、前記複数のプロセスにより参照されている共有メモリから、メモリ位置のメモリ参照サンプリングを実行するステップであって、メモリ参照サンプリングの間に収集された、サンプリングされた複数のメモリ参照はそれぞれ、レイテンシと、前記共有メモリ内の物理位置とに関連する、前記ステップと、
前記共有メモリ内のメモリ位置の、少なくとも１つの準最適レイテンシに関連する少なくとも１つのセグメントを特定するために、メモリ参照サンプリングの間に収集された前記サンプリングされたメモリ参照を分析するステップと、
前記分析された、サンプリングされたメモリ参照に基づいて、前記共有メモリ内の前記特定されたセグメントの物理位置と、前記特定されたセグメント内のメモリ位置を参照する少なくとも１つのプロセスが実行される物理プロセッサと、前記特定されたセグメントに関連するステータスとのうちの少なくとも１つを動的に調整するステップと、
を含む方法。
【請求項２】
前記サンプリングされたメモリ参照を分析するステップは、
メモリ位置の個々の前記セグメントを読み出すのに必要な時間に基づいて、前記サンプリングされたメモリ参照それぞれにスコアを付けるステップ
を含む、請求項１に記載の方法。
【請求項３】
メモリ位置の複数の前記セグメントそれぞれを読み出すのに必要な前記時間に基づいて、前記サンプリングされたメモリ参照それぞれにスコアを付けるステップは、メモリ位置の前記複数のセグメントそれぞれを読み出すのに必要な前記時間を測定するステップを含む、請求項２に記載の方法。
【請求項４】
メモリ位置の前記個々のセグメントを読み出すのに必要な前記時間に基づいて、前記サンプリングされたメモリ参照それぞれにスコアを付けるステップは、メモリ位置の複数の前記セグメントそれぞれを読み出すのに必要な前記時間を概算するステップを含む、請求項２に記載の方法。
【請求項５】
前記共有メモリ内のメモリ位置の、少なくとも１つの準最適レイテンシに関連する少なくとも１つのセグメントを特定するために、メモリ参照サンプリングの間に収集された前記サンプリングされたメモリ参照を分析するステップは、前記サンプリングされたメモリ参照それぞれに関連する前記スコアに少なくとも部分的に基づく、請求項２に記載の方法。
【請求項６】
前記特定されたセグメントは、キャッシュ・ページに関連するキャッシュ・ラインである、請求項１に記載の方法。
【請求項７】
前記キャッシュ・ページの少なくとも一部分の将来の読み出しに関連する将来のレイテンシが削減されるように、前記キャッシュ・ページの前記一部分の位置を調整するステップ
をさらに含む、請求項６に記載の方法。
【請求項８】
前記キャッシュ・ページの前記一部分を第１のキャッシュから第２のキャッシュに転送するステップ
をさらに含む、請求項６に記載の方法。
【請求項９】
前記キャッシュ・ページの前記一部分を第１のノードから第２のノードに転送するステップ
をさらに含む、請求項６に記載の方法。
【請求項１０】
前記キャッシュ・ラインは、第１のキャッシュ・ラインであり、前記キャッシュ・ページは、少なくとも第２のキャッシュ・ラインを含む、請求項６に記載の方法。
【請求項１１】
前記特定されたセグメントに関連するキャッシュ・ページを特定するステップと、
前記特定されたセグメントに関連するオブジェクトの実行の位置を特定するステップと、
前記オブジェクトによる前記キャッシュ・ページの少なくとも一部分の将来の読み出しに関連する、将来のレイテンシが削減されるように、前記オブジェクトの位置を調整するステップと、
をさらに含む、請求項１に記載の方法。
【請求項１２】
前記オブジェクトは、前記コンピューティング・システムにより実行されるプロセスの少なくとも一部分である、請求項１１に記載の方法。
【請求項１３】
前記特定されたセグメント内のメモリ位置を参照するプロセスの少なくとも一部分を、第１の処理ユニットから第２の処理ユニットに転送するステップ
をさらに含む、請求項１に記載の方法。
【請求項１４】
前記特定されたセグメント内のメモリ位置を参照するプロセスの少なくとも一部分を、第１のノードから第２のノードに転送するステップ
をさらに含む、請求項１に記載の方法。
【請求項１５】
前記特定されたセグメントに関連する第１のキャッシュ・ページを特定するステップと、
メモリ位置の複数の前記セグメントに関するメモリ・リクエストのサブセットに関連する第２のキャッシュ・ページを特定するステップと、
前記第２のキャッシュ・ページの転送が、前記第１のキャッシュ・ページの転送よりも少なくとも１つ多くのステップを必要とすることを示すステータスを、前記第２のキャッシュ・ページに付与するステップと、
をさらに含む、請求項１に記載の方法。
【請求項１６】
前記共有メモリ内の前記メモリ位置の特定された個々のセグメントを参照する個々のプロセスがローカルの参照元プロセスであるかどうかを判断するために、前記個々のプロセスの位置を分析するステップと、
前記個々のプロセスが、ローカルの参照元プロセスであると判断するのに応じて、前記共有メモリ内の前記メモリ位置の前記特定された個々のセグメントに関して、前記個々のプロセスに拡張ステータスを付与するステップと、
をさらに含む、請求項１に記載の方法。
【請求項１７】
複数の物理プロセッサと、
マルチプロセッサ・コンピューティング・システムにおけるメモリ・アクセスを動的に最適化するために、少なくとも１つの物理プロセッサにより実行されるよう構成されたプログラム・コードと、
を含む、前記マルチプロセッサ・コンピューティング・システムであって、前記プログラム・コードは、前記複数の物理プロセッサの少なくともサブセットにより複数のプロセスが実行される間、前記複数のプロセスにより参照されている共有メモリから、メモリ位置のメモリ参照サンプリングを実行することであって、メモリ参照サンプリングの間に収集された、サンプリングされた複数のメモリ参照はそれぞれ、レイテンシと、前記共有メモリ内の物理位置とに関連する、前記実行すること、前記共有メモリ内のメモリ位置の、少なくとも１つの準最適レイテンシに関連する少なくとも１つのセグメントを特定するために、メモリ参照サンプリングの間に収集された前記サンプリングされたメモリ参照を分析すること、および前記分析された、サンプリングされたメモリ参照に基づいて、前記共有メモリ内の前記特定されたセグメントの物理位置と、前記特定されたセグメント内のメモリ位置を参照する少なくとも１つのプロセスが実行される物理プロセッサと、前記特定されたセグメントに関連するステータスとのうちの少なくとも１つを動的に調整すること、をするようさらに構成されている、コンピューティング・システム。
【請求項１８】
前記プログラム・コードは、メモリ位置の個々の前記セグメントを読み出すのに必要な時間に基づいて、複数の前記レイテンシそれぞれにスコアを付けるようさらに構成されている、請求項１７に記載のコンピューティング・システム。
【請求項１９】
前記プログラム・コードは、メモリ位置のセグメントをそのスコアに基づいて特定することにより、メモリ位置の少なくとも１つのセグメントを特定するようさらに構成されている、請求項１８に記載のコンピューティング・システム。
【請求項２０】
前記プログラム・コードは、前記特定されたセグメント内のメモリ位置を参照するプロセスの少なくとも一部分を、第１の処理ユニットから第２の処理ユニットに転送するようさらに構成されている、請求項１７に記載のコンピューティング・システム。
【請求項２１】
前記プログラム・コードは、前記特定されたセグメント内のメモリ位置を参照するプロセスの少なくとも一部分を、第１のノードから第２のノードに転送するようさらに構成されている、請求項１７に記載のコンピューティング・システム。
【請求項２２】
前記プログラム・コードは、
前記特定されたセグメントに関連する第１のキャッシュ・ページを特定すること、
メモリ位置の複数の前記セグメントに関するメモリ・リクエストのサブセットに関連する第２のキャッシュ・ページを特定すること、および
前記第２のキャッシュ・ページの転送が、前記第１のキャッシュ・ページの転送よりも少なくとも１つ多くのステップを必要とすることを示すステータスを、前記第２のキャッシュ・ページに付与すること、
をするようさらに構成されている、請求項１７に記載のコンピューティング・システム。
【請求項２３】
マルチプロセッサ・コンピューティング・システムの少なくとも１つの物理プロセッサにより実行されるよう構成されたプログラム・コード
を含む、プログラム製品であって、前記プログラム・コードは、前記マルチプロセッサ・コンピューティング・システム内の複数の前記物理プロセッサの少なくともサブセットにより複数のプロセスが実行される間、前記複数のプロセスにより参照されている共有メモリから、メモリ位置のメモリ参照サンプリングを実行することであって、メモリ参照サンプリングの間に収集された、サンプリングされた複数のメモリ参照はそれぞれ、レイテンシと、前記共有メモリ内の物理位置とに関連する、前記実行すること、前記共有メモリ内のメモリ位置の、少なくとも１つの準最適レイテンシに関連する少なくとも１つのセグメントを特定するために、メモリ参照サンプリングの間に収集された前記サンプリングされたメモリ参照を分析すること、および前記分析された、サンプリングされたメモリ参照に基づいて、前記共有メモリ内の前記特定されたセグメントの物理位置と、前記特定されたセグメント内のメモリ位置を参照する少なくとも１つのプロセスが実行される物理プロセッサと、前記特定されたセグメントに関連するステータスとのうちの少なくとも１つを動的に調整すること、により前記コンピューティング・システムにおけるメモリ・アクセスを動的に最適化するようさらに構成されている、プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティング・システムに関し、特に、マルチプロセッサ・コンピューティング・システムにおいてレイテンシを評価し、削減することに関する。
【背景技術】
【０００２】
コンピュータ技術は、著しい速度で進歩を続け、コンピューティング・システムの「頭脳」である処理ユニット、およびコンピューティング・システムにより処理されたデータを記憶するメモリのどちらの性能にも多数の改良が加えられている。
【０００３】
概して、処理ユニット（「ＣＰＵ」）とは、コンピュータ・プログラムを構成する一連の命令を実行することにより動作するマイクロプロセッサまたはその他集積回路である。命令は、典型的には、固有のメモリ・アドレスにより特定される複数のストレージ位置を有するメモリ・システムに記憶される。メモリ・アドレスは、集合的に、マイクロプロセッサによりアクセス可能なメモリ領域のアドレス指定可能領域を表現する「メモリ・アドレス空間」を定義する。
【０００４】
並列処理コンピューティング・システムは、多くの場合、複数のノードを含み、各ノードは、少なくとも１つのＣＰＵを含み、複数のノードは、相互に接続されており、各コンピューティング・ノードは、それらの間でデータを送受信でき、さらにシステム内の様々なノードに接続されたメモリにアクセスできるようになっている。複数のＣＰＵもしくは複数のノードまたはその両方を備えたコンピューティング・システムでは、メイン・メモリを複数のコンピューティング・ノードにわたって効果的に配分するために、非一様メモリ・アクセス（「ＮＵＭＡ：ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ」）構成が利用され得る。典型的なＮＵＭＡ構成では、少なくとも１つのＣＰＵ、１つ以上のＣＰＵキャッシュ、およびメイン・メモリの一部分（例えば動的ランダム・アクセス（「ＤＲＡＭ：ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ」）メモリ・デバイスのセット）がメモリ・バスに接続され、ノードを形成する。典型的には、複数のノードが高速インターコネクトによって接続されてＮＵＭＡ構成を形成する。メイン・メモリのうちＣＰＵと同じノード上にある部分は、典型的にはＣＰＵの「ローカル・メモリ」と見なされ、メイン・メモリのうち他のノード上にある部分は、典型的にはＣＰＵに対する「リモート・メモリ」と呼ばれる。ＮＵＭＡ構成を備えたコンピュータ・システム（「ＮＵＭＡシステム」）では、ローカルＣＰＵキャッシュまたはローカル・メモリのコンテンツにより満足されるＣＰＵによるデータ・アクセスは、「ローカル・ノード」アクセスと呼ばれる。したがって、典型的には、「リモート・ノード」アクセスとは、リモート・ノード上に記憶されているデータにアクセスすることにより満足されるアクセスである。リモート・ノードに対するデータ・アクセスは、ローカル・ノード・アクセスに比べ非常に高いレイテンシを伴う。
【０００５】
典型的には、プロセスがＮＵＭＡシステムにおいて実行されると、プロセスを実行しているＣＰＵは、１つ以上のメモリ位置にアクセスして、プロセスにより必要とされるデータを読み出す。典型的には、ＮＵＭＡシステムにおいてプロセスは、動作に必要なデータがローカル・メモリにあるノード上で動作を実行するよう構成されると、より高速に実行される。同じく、ＮＵＭＡシステムで実行されるプロセスは、動作に必要なデータがリモート・メモリにあるローカル・ノード上でタスクを実行するようプロセスが構成されると、リモート・ノードへのアクセスに関連するレイテンシの増大が原因で、より低速で実行され得る。さらに、分散度の高いＮＵＭＡシステム（すなわち、相互接続されたノードを大量に備えるＮＵＭＡシステム）では、ノードが第１のリモート・ノード内の第１のメモリにリモート・アクセスするのに関連するレイテンシが、第２のリモート・ノード内の第２のメモリにリモート・アクセスするのに関連するレイテンシと比べて異なることもあるが、その原因は、ノードと個々のリモート・ノードとの間の伝送経路長、個々のリモート・ノードそれぞれにおいて構成されているシステム・リソース、リモート・アクセス時に各リモート・ノード上で実行中のプロセス、リモート・アクセス時に各ノードへのリモート・アクセスを同じく試行する他のプロセス、もしくはその他同様の理由、またはそのいずれかの組み合わせである。
【０００６】
よって、例としてＮＵＭＡシステムを含む分散型システムでは、すべてのリモート・メモリ位置がすべてのプロセッサに対して等しいレイテンシを有するとは限らない。実際には、特定のプロセッサまたはノードに関連するキャッシュ間でのデータの転送を含め、メモリ内の種々のエリアへの効率的なアクセスには、特定のノード内の各プロセッサの物理位置および仮想位置により違いが生じる。メモリ・セグメントに対する重大な動作のネゴシエートを試行する２つのプロセッサが比較的「離れている」と、該プロセッサが当該セグメントを共有しアクセスする動作の効率は著しく低下し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、既存のシステムにおいてメモリ・アクセスのレイテンシを削減する共有メモリ・コンピュータ・システムの性能を最適化する必要性が、依然として存在している。
【課題を解決するための手段】
【０００８】
本発明の実施形態は、マルチプロセッサ・コンピューティング・システムにおけるメモリ・アクセスを動的に最適化する装置、方法、およびプログラム製品を提供する。本発明に適合する一部の実施形態では、コンピューティング・システムの１つ以上のプロセッサにより１つ以上のプロセスが実行される間、コンピューティング・システムの共有メモリから、メモリ位置のメモリ参照サンプリングが実行され、複数のメモリ参照が収集され、サンプリングの間に収集された各メモリ参照は、レイテンシと、共有メモリ内の個々のメモリの位置とに関連する。サンプリングされたメモリ参照は、共有メモリ内の１つ以上のメモリ位置の、準最適レイテンシ（ｓｕｂ−ｏｐｔｉｍａｌ  ｌａｔｅｎｃｙ）に関連する１つ以上のセグメントを特定するために分析される。特定された１つ以上のセグメントの物理位置、プロセスのうちの少なくとも１つが実行される物理プロセッサ、もしくは特定された１つ以上のセグメントに関連するステータス、またはそのいずれかの組み合わせが、分析されたメモリ参照に基づいて動的に調整される。一部の実施形態では、サンプリングされたメモリ参照を分析することは、メモリ位置の個々のセグメントを読み出すのに必要な時間に基づいて各メモリ参照にスコアを付けることを含む。
【０００９】
これらの利点および他の利点は、以下の図面および詳細な説明を考慮すると明らかとなる。
【００１０】
本明細書に組み入れられてその一部を構成する添付の図面は、本発明の実施形態を示し、上述した本発明の概略の説明および後述の実施形態の詳細な説明とともに、本発明の原理を説明するのに役立つ。
【００１１】
当然のことながら、添付の図面は、必ずしも一定の縮尺になってはおらず、本発明の基本原理の例示となる様々な好適な特徴の、いくぶん単純化された表現を示す。例えば示される様々なコンポーネントの具体的な寸法、向き、位置、および形状を含む、本願明細書で開示される一連の動作の具体的な設計上の特徴は、一つには、意図される特定の応用および使用環境により決まる。示される実施形態の特定の特徴は、視覚化および明確な理解を促進するために、他の特徴に対して拡大されていること、または歪められていることもある。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に適合する共有メモリ・コンピューティング・システムのブロック図である。
【図２】本発明の別の実施形態に適合する共有メモリ・コンピューティング・システムのブロック図である。
【図３】本発明の実施形態に適合する最適化アフィニティ・アジャスタにおいて生じ得る論理の流れの一実施形態を示す流れ図である。
【図４】メモリ参照にアクセスするために図１のコンピューティング・システムにより実行され得る、本発明の実施形態に適合する一連の動作を示す流れ図である。
【発明を実施するための形態】
【００１３】
本発明の実施形態に適合するコンピューティング・システムでは、コンピューティング・アーキテクチャは、参照されているメモリ位置の性能オーバーヘッドの低いサンプリングをサポートする。本発明の実施形態は、サンプリングを利用してプロセス毎およびページ毎のアフィニティ・スコアを判断して、あるノード内のより効率的なメモリ位置にメモリ・ページを、またはあるノード内のより効率的なＣＰＵにプロセスを動的に移動して、アフィニティ・レイテンシを削減する。メモリ・ページが記憶される、またはプロセスが実行されるノードは、メモリ・ページまたはプロセスの「ホーム」ノードと見なされ得る。
【００１４】
一部の実施形態では、メモリ参照サンプリング（ｍｅｍｏｒｙ  ｒｅｆｅｒｅｎｃｅ  ｓａｍｐｌｉｎｇ）が、メモリ位置に対して実行される。一部の実施形態では、メモリ・サンプリングは、パーティション全体に及んでも、もしくは選ばれたプロセスの選択されたセットに限られても、またはその両方でもよい。さらに、一部のサンプリング・アーキテクチャは、サンプリングが、オブジェクトのセットに限られることも可能にしてもよい。サンプリングされるデータは、参照されるページの「実」ＣＥＣメモリ位置を含んでもよい。本発明に適合する実施形態では、収集されたサンプリング・データが分析され、サンプリングされたメモリ参照それぞれに関連するスコアが判断されてもよい。さらに、サンプリングされたメモリ参照それぞれの関連スコアは、参照元プロセス（ｒｅｆｅｒｅｎｃｉｎｇ  ｐｒｏｃｅｓｓ）のＣＰＵもしくはノードまたはその両方に関する、サンプリングされたメモリ参照に対応する計算されたレイテンシもしくは概算されたレイテンシまたはその両方に、少なくとも部分的に基づいてもよい。
【００１５】
本発明に適合する実施形態では、サンプリング・データ（すなわちメモリ参照データ）が、統計分析されて、サンプリングされたすべてのオブジェクト、オブジェクトのサブセット、サンプリングされたすべてのプロセス、もしくはプロセスのサブセット、またはそのいずれかの組み合わせに関して高いレイテンシを示すスコアに関連するメモリ参照が判断されてもよい。さらに、一部の実施形態では、サンプリング・データを分析することは、類似のオブジェクト参照を含む１つ以上のプロセスを特定することを含んでもよい。
【００１６】
さらに、一部の実施形態では、メモリ・プールを含むシステムにおいて、サンプリング・データもしくは関連スコアまたはその両方に少なくとも部分的に基づいて、メモリの共通プールを使用することで恩恵を受ける（例えばより効率的、より高速に実行するなど）であろう１つ以上のプロセスが特定されてもよい。これらの実施形態では、１つ以上のプロセスがメモリの共通プールを使用することで恩恵を受け得ると判断するのに応じて、システムは、判断されたメモリの共通プールを参照するよう１つ以上のプロセスのメモリ参照を動的に変更するとよい。
【００１７】
一部の実施形態では、特定された１つ以上のＣＰＵもしくはノードまたはその両方を使用することで恩恵を受けるであろう１つ以上のプロセスが、サンプリング・データもしくは関連スコアまたはその両方に少なくとも部分的に基づいて特定されてもよい。特定された１つ以上のノードを実行に使用することで１つ以上のプロセスが恩恵を受けるであろうと判断するのに応じて、本発明の実施形態は、１つ以上のプロセスが実行される１つ以上のプロセッサを動的に変更してもよい。これらの実施形態では、１つ以上のノードを実行に使用することで１つ以上のプロセスが恩恵を受けることになるかどうかを判断することは、サンプリング・データもしくは関連スコアまたはその両方に少なくとも部分的に基づいて、システムの複数のノードから、プロセスが実行されるべき１つ以上のノードを特定することを含んでもよい。
【００１８】
さらに、一部の実施形態では、サンプリング・データもしくは関連スコアまたはその両方に少なくとも部分的に基づいて、高いレイテンシを示すスコアに関連する１つ以上のオブジェクト・ページが特定されてもよい。これらの実施形態では、高いレイテンシを示すスコアに関連するオブジェクト・ページを特定するのに応じて、本発明の実施形態は、オブジェクト・ページをより有利な（すなわちよりレイテンシの低い）メモリ位置に動的に移動してもよい。これらの実施形態では、１つ以上のオブジェクト・ページを動的に移動する前に、メモリ位置に関連するスコアに少なくとも部分的に基づいて、有利な１つ以上のメモリ位置が判断されてもよい。
【００１９】
さらに、一部の実施形態では、サンプリング・データもしくは関連スコアまたはその両方に少なくとも部分的に基づいて、参照度の高いオブジェクト・ページが特定されてもよい（すなわち、複数のプロセスにより参照されたオブジェクト・ページ）。これらの実施形態では、サンプリング・データもしくは関連スコアまたはその両方に少なくとも部分的に基づいて、参照度の高いオブジェクト・ページのためのより有利なメモリ位置が判断されてもよく、参照度の高いオブジェクト・ページが、より有利なメモリ位置に動的に移動されてもよい。さらに、一部の実施形態では、参照度の高いオブジェクト・ページをより有利なメモリ位置に移動するのに応じて、参照度の高いオブジェクト・ページをより有利なメモリ位置から移動できないように、または参照度の高いオブジェクト・ページをより有利なメモリ位置から移動することが制限され得るように、参照度の高いオブジェクト・ページに関連する属性が設定されてもよい。
【００２０】
本発明の実施形態は、１つ以上のプロセスに関して、プロファイリングされたメモリ参照データ（すなわちサンプリング・データ）を収集する。一部の実施形態では、メモリ参照データは、個々のプロセスに対応する識別子、または個々のプロセスにより参照された各メモリ・オブジェクトの仮想アドレス、または参照された各メモリ・オブジェクトの物理メモリ位置に対応するメモリもしくはノードもしくはその両方の識別子、またはそのいずれかの組み合わせを含む。本発明の実施形態に適合するコンピューティング・システムは、個々のプロセスにより参照された各メモリ・オブジェクトを分析して、個々のプロセスに関して、参照されたオブジェクトに関連するスコアを判断してもよい。判断されるスコアは、個々のプロセスに関する、参照されたオブジェクトの判断されたレイテンシもしくは概算されたレイテンシまたはその両方に、少なくとも部分的に基づいてもよい。コンピューティング・システムは、スコアもしくはメモリ参照データまたはその両方を分析して、個々のプロセスが、それらが現在実行されているＣＰＵ／ノードとは異なるＣＰＵもしくはノードまたはその両方で、より良好に（例えばより効率的、高速になど）実行されると考えられるかどうかを判断してもよい。個々のプロセスが異なるＣＰＵ／ノード上でより良好に実行されるであろうと判断するのに応じて、コンピューティング・システムは、個々のプロセスを異なるＣＰＵ／ノードに、それにより実行されるよう動的に移動してもよい。
【００２１】
本発明の実施形態は、１つ以上のプロセスに関して、プロファイリングされたメモリ参照データを収集する。本発明の実施形態に適合するコンピューティング・システムは、１つ以上のプロセスによる１つ以上のメモリ・オブジェクト参照を分析し、プロセスに関して、参照された１つ以上のオブジェクトに関連するスコアを判断してもよい。コンピューティング・システムは、スコアもしくは参照されたオブジェクトまたはその両方を分析して、複数のプロセスにより共通して参照される１つ以上のメモリ・オブジェクトを判断してもよい。コンピューティング・システムは、共通して参照されるオブジェクトをどのプロセスが参照しているかを示すレポート・データを生成してもよい。生成されたレポート・データは、共通して参照されるオブジェクトを共有しているプロセスの同時実行もしくは逐次実行またはその両方をスケジュールするために、コンピューティング・システムにより利用されてもよい。これらの実施形態では、そのようなスケジューリングにより、１つ以上のプロセスおよび共通して参照されるオブジェクトのレイテンシを削減すること、または二次ストレージ・ページング（Ｉ／Ｏ）アクションもしくはレイテンシもしくはその両方の増加の可能性を削減すること、またはプロセスのうちの１つ以上のより効率的な実行をもたらすこと、またはそのいずれかの組み合わせが果たされ得る。さらに、一部の実施形態では、レポーティング・データがコンピューティング・システムにより分析されて、共通して参照されるオブジェクトのうちの１つ以上のメモリ・オブジェクトであって、異なるメモリ位置に移動されることにより、１つ以上のプロセスに関して、共通して参照される該１つ以上のメモリ・オブジェクトに関連するレイテンシを削減し得る、該１つ以上のメモリ・オブジェクトが特定されてもよい。さらに、一部の実施形態では、レポーティング・データがコンピューティング・システムにより分析され、１つ以上のプロセスに関連するデータが調整されて、プロセスが実行中、１つ以上のメモリ・オブジェクトを優先的に参照するようにされてもよい。
【００２２】
本発明の実施形態は、複数の物理プロセスにより実行される複数のプロセスにより参照されている共有メモリから、メモリ位置のメモリ参照サンプリングを実行することにより、マルチプロセッサ・コンピューティング・システムにおいてメモリ・アクセスを動的に最適化するための装置、方法、およびプログラム製品を提供する。メモリ参照サンプリングの間に収集された、サンプリングされた複数のメモリ参照はそれぞれ、レイテンシと、共有メモリ内の物理位置とに関連する。次に、メモリ参照サンプリングの間に収集された、サンプリングされたメモリ参照が分析されて、共有メモリ内のメモリ位置の、準最適レイテンシをもつ少なくとも１つのセグメントが特定される。分析に基づいて、システムは、共有メモリ内の特定されたセグメントの物理位置、特定されたセグメント内のメモリ位置を参照する少なくとも１つのプロセスが実行される物理プロセッサ、もしくは特定されたセグメントに関連するステータス、またはそのいずれかの組み合わせを調整する。
【００２３】
本発明の一部の実施形態では、メモリ位置の個々のセグメントを読み出すために必要な時間に基づいて、レイテンシがスコアを付けられる。時間は、測定されても、概算されてもよい。特定される１つまたは複数のセグメントは、レイテンシ・スコアに基づき特定されてもよい。
【００２４】
本発明の一部の実施形態では、特定されるセグメントは、キャッシュ・ページに関連するキャッシュ・ラインである。本方法は、キャッシュ・ページの少なくとも一部分の将来の読み出しに関連する将来のレイテンシが削減されるように、キャッシュ・ページの該一部分の位置を調整することを含んでもよい。これは、第１のキャッシュから第２のキャッシュへ、または第１のノードから第２のノードへ、キャッシュ・ページの該一部分を転送することを含んでもよい。キャッシュ・ページはさらに、少なくとも２つのキャッシュ・ラインを含んでもよい。
【００２５】
本発明の別の実施形態では、メモリ・セグメントによりキャッシュ・ページが特定され、セグメントに関連するオブジェクトの実行の位置も特定される。オブジェクトの位置は、オブジェクトによるキャッシュ・ページの少なくとも一部分の将来の読み出しに関連する将来のレイテンシが削減されるように、調整される。特定の一実施形態では、オブジェクトは、コンピューティング・システムにより実行されるプロセスの少なくとも一部分である。
【００２６】
本発明の一部の実施形態は、特定されたセグメント内のメモリ位置を参照するプロセスの少なくとも一部分を、第１の処理ユニットから第２の処理ユニットに転送することを含む。
【００２７】
他の実施形態は、特定されたセグメント内のメモリ位置を参照するプロセスの少なくとも一部分を、第１のノードから第２のノードに転送することを含む。
【００２８】
さらに他の実施形態は、特定されたセグメントに関連する第１のキャッシュ・ページと、メモリ位置の複数のセグメントに関するメモリ・リクエストのサブセットに関連する第２のキャッシュ・ページとの両方を特定すること、続いて、第２のキャッシュ・ページの転送が、第１のキャッシュ・ページの転送よりも少なくとも１つ多くのステップを必要とすることを示す「拡張ステータス」を、第２のキャッシュ・ページに付与することを含む。
【００２９】
ハードウェアおよびソフトウェア環境
図面をより詳しく参照する。図面では、同じ番号は、いくつかの図にわたって同じ部分を示す。図１は、本発明の実施形態に適合する共有メモリ・コンピューティング・システム１０のブロック図である。共有メモリ・コンピューティング・システム１０は、特定の実施形態において、コンピュータ、コンピュータ・システム、コンピューティング・デバイス、サーバ、ディスク・アレイ、またはマルチユーザ・コンピュータ、シングル・ユーザ・コンピュータ、ハンドヘルド・デバイス、ネットワーク化デバイス（クラスタ構成のコンピュータを含む）、携帯電話、ビデオゲーム機（またはその他ゲーム用システム）などのプログラム可能デバイスであってもよい。共有メモリ・コンピューティング・システム１０は、「コンピューティング・システム」と呼ばれることもあるが、簡潔さのために「コンピュータ」と呼ぶ。コンピュータ１０の適切な一実装は、ニューヨーク州アーモンク市のインターナショナル・ビジネス・マシーンズ・コーポレーション（「ＩＢＭ：Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ」）から入手可能なコンピュータなどのマルチユーザ・コンピュータとされ得る。
【００３０】
コンピュータ１０は、一般に、メモリ・サブシステムに結合された１つ以上の処理ユニット１２を含み、メモリ・サブシステムは、キャッシュ・サブシステム１４、メモリ１５、およびメイン・ストレージ１６をさらに含んでもよい。キャッシュ・サブシステム１４は、動的ランダム・アクセス・メモリ（「ＤＲＡＭ：ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ」）、静的ランダム・アクセス・メモリ（「ＳＲＡＭ：ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ」）、フラッシュ・メモリ、もしくは別のデジタルもしくはソリッド・ステートのストレージ媒体、またはそのいずれかの組み合わせからなってもよく、該デジタルもしくはソリッド・ステートのストレージ媒体は、典型的には１つ以上のレベルのデータ・キャッシュ、命令キャッシュ、もしくは組み合わせキャッシュ、またはそのいずれかの組み合わせを含み、特定のキャッシュが、当該技術分野で周知のように共有される形で処理ユニット１２に対応する。特定の実施形態では、キャッシュ・サブシステム１４は、当該技術分野で周知のようにノードの処理ユニット１２間で共有され得る、共有メモリ１５（例えば、例としてレベル３［「Ｌ３」］キャッシュもしくはレベル４［「Ｌ４」］キャッシュまたはその両方など）もしくは他のデジタル・ストレージ・メモリまたはその両方を含む。メイン・ストレージ１６は、ハード・ディスク・ドライブもしくは別のデジタル・ストレージ媒体またはその両方を含んでもよい。さらに、後述のとおり、各処理ユニット１２は、少なくとも１つの処理コア、および少なくとも１つのレベルの専用キャッシュ・メモリを含んでもよい。
【００３１】
メイン・ストレージ１６は、システム・バス１８と、例えば１つ以上の外部ネットワーク２６、１つ以上のワークステーション２８、もしくは直接アクセス・ストレージ・デバイス（「ＤＡＳＤ：ｄｉｒｅｃｔ  ａｃｃｅｓｓ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ」）３０などの１つ以上のストレージ・デバイス、またはそのいずれかの組み合わせへの外部アクセスをそれぞれ提供する、入出力バス接続インターフェース２０、ワークステーション・コントローラ２２、もしくはストレージ・コントローラ２４、またはそのいずれかの組み合わせなどの複数のインターフェース・デバイスとを介して、いくつかの外部デバイス（例えばＩ／Ｏデバイス）に結合されてもよい。システム・バス１８はさらに、コンピュータ１０のユーザによりデータ入力のために操作可能なユーザ入力（図示せず）（例えば、ユーザ入力はマウス、キーボードなどを含んでもよい）、およびコンピュータ１０からのデータを表示するよう動作可能なディスプレイ（図示せず）（例えば、ディスプレイはＣＲＴモニタ、ＬＣＤディスプレイ・パネルなどであってもよい）に結合されてもよい。コンピュータ１０はさらに、分散型コンピューティング環境の構成要素として構成されて、ネットワーク２６を介して当該分散型コンピューティング環境の他の構成要素と通信してもよい。
【００３２】
コンピュータ１０は、当該技術分野で周知のように、共通のキャッシュ・メモリ（例えば少なくとも１つの処理ユニット１２のキャッシュ・サブシステム１４もしくはキャッシュ・メモリまたはその両方）により提供されるキャッシュ・ラインをリクエストする少なくとも１つのメモリ・リクエスタを含む。例えば、図１のコンピュータ１０は、共通のキャッシュ・メモリによりサービス提供される１つ以上の処理ユニット１２を含んでもよく、各処理ユニット１２は、共通のキャッシュ・メモリ（例えば、キャッシュ・サブシステム１４、メイン・ストレージ１６、もしくは処理ユニット１２の内部メモリ、またはそのいずれかの組み合わせ）によってサービス提供される１つ以上のメモリ・リクエスタを含んでもよい。特定の実施形態では、コンピュータ１０内のリクエスタは、少なくとも１つの処理ユニット１２、処理ユニット１２のコンポーネント（例えばレベル１キャッシュ、レベル２キャッシュ、Ｉ／Ｏコントローラ、または処理ユニット１２の後述する他のコンポーネント）、もしくは処理ユニット１２のコア（ならびにコアのハードウェア・スレッド）、またはそのいずれかの組み合わせを含んでもよい。
【００３３】
コンピュータ１０は、本発明の実施形態とともに使用される適切な１つの環境を単に代表するにすぎず、本発明の実施形態は、他の様々な代わりの環境で利用されてもよい。例として、図２は、本発明の実施形態に適合する別の共有メモリ・コンピューティング・システム４０のブロック図である。この別の共有メモリ・コンピューティング・システム４０、以下「システム」４０は、少なくとも１つの処理ユニット１２、メモリ４４、およびネットワーク・インターフェース４６をそれぞれ含む複数の処理ノード４２を含んでもよい。さらに、ネットワーク・インターフェース４６は、少なくとも１つのネットワーク４８、５０と通信してもよく、特にネットワーク・インターフェース４６は、処理ノード４２間の通信専用の少なくとも１つのノード間ネットワーク５０と通信するよう構成されていてもよい。各処理ノード４２は、オペレーティング・システム５２およびアプリケーション（図示せず）を用いて構成されてもよい。典型的な実施形態では、処理ノード４２それぞれが、アプリケーションを用いて少なくとも１つのタスクを受領および処理するよう構成され、それにより、処理ノード４２は集合的に、システム４０の作業の大部分を実行するよう構成される。なお、一部の実施形態では、一部の処理ノード４２は、専用Ｉ／Ｏノードとして構成されることにより、処理ノード４２およびネットワーク（単数または複数）４８、５０のサブセット、または「グループ」間のインターフェースを維持してもよい。さらに、Ｉ／Ｏノードは、当該技術分野で周知のプロセス認証および許可、タスク・アカウンティング、デバッギング、トラブルシューティング、ブート処理、および構成動作を実行するよう動作可能であってもよい。したがって、処理ノード４２のグループに関する総体的な作業が単純化されて、処理ノード４２全体およびシステム４０の残りの部分とインターフェースをとることによりもたらされるであろう処理ノード４２のグループの各処理ノードに対する追加の負担が回避される。当該技術分野で周知のように、各処理ノード４２は、２つ以上の処理ユニット１２を含んでもよく、特定の実施形態では、各ノードは、２つまたは４つの処理ユニット１２を含んでもよい。
【００３４】
システム４０は、コンパイラ、リンカ、ローダ、およびそのほかシステム４０と相互に作用するプログラムを記憶し得る１つ以上の管理ノード５４を含んでもよい。管理ノード５４は、少なくとも１つの管理ノード５４により制御されるワークステーション５６にてユーザによりアクセスされてもよい。そのようにして、ユーザは、コンパイリングすべき１つ以上のプログラム、実行すべきタスク、実行コンテキスト、ワークロード、ワークロードの一部、またはジョブをシステム４０の１つ以上のサービス・ノード５８にサブミットしてもよい。管理ノード５４はそれぞれ、少なくとも１つの処理ユニットおよびメモリを、処理ノード４２のそれと類似した形で含み、効率性その他の理由で、処理ノード４２またはサービス・ノード５８外での実行が最良と考えられる補助機能を実行してもよい。例えば、対話型データ入力、ソフトウェア・コード編集、ソフトウェア・コード・コンパイリング、もしくはその他ユーザ・インターフェース機能、またはそのいずれかの組み合わせが、管理ノード５４により処理されてもよい。
【００３５】
サービス・ノード５８は、システム４０のデータベースおよび管理用ツールを含んでもよい。データベースは、複数の処理ノード４２にわたるタスクの現在のスケジューリングを含む、処理ノード４２の状態情報を維持してもよく、管理用ツールは、プログラム、タスク、データ、およびジョブを各処理ノード４２の各処理ユニット１２上にロードすることを含む、プログラム、タスク、データ、およびジョブの処理ノード４２に対するスケジューリングおよびロードを制御してもよい。よって、サービス・ノード５８は、一部の実施形態では、処理ノード４２のグループを複数の処理ノード４２から集め、少なくとも１つのタスク、ジョブ、アプリケーション、ワークロードの一部、実行コンテキスト、またはプログラムを、実行のために処理ノード４２のグループにディスパッチしてもよい。以下、少なくとも１つのタスク、ジョブ、ワークロード、ワークロードの一部、実行コンテキスト、またはプログラムを、簡潔さのために「タスク」と呼ぶ。タスクは、処理されるよう、ネットワーク４８もしくは５０またはその両方を通じ、Ｉ／Ｏノードを介して処理ノード４２に伝達されてもよい。管理ノード５４もしくはサービス・ノード５８またはその両方の機能性は、処理ノード４２に関するジョブを受領、管理、スケジュール、再配分、およびその他の形で制御するよう動作可能な制御サブシステムにおいて組み合わされてもよい。
【００３６】
管理ノード５４もしくはサービス・ノード５８またはその両方はそれぞれ、処理ノード４２および少なくとも１つのＩ／Ｏノードのグループを含んでもよい。このように、管理ノード５４もしくはサービス・ノード５８またはその両方は、ノード間ネットワーク５０ならびにネットワーク４８を介して処理ノード４２に内部接続されていてもよい。あるいは、管理ノード５４もしくはサービス・ノード５８またはその両方はそれぞれ、処理ノード４２とは別個に、処理ノード４２および少なくとも１つのＩ／Ｏノードのグループを含んでもよい（すなわち、管理ノード５４もしくはサービス・ノード５８またはその両方が「スタンドアロン」ノードとして構成されてもよい）。さらに、管理ノード５４もしくはサービス・ノード５８またはその両方はそれぞれ、１つの処理ノード４２を含んでもよい。１つ以上の外部リソース・サーバ６０は、ネットワーク４８上でアクセス可能であり、例えばハード・ディスク・ドライブ６１、光学ドライブ（例えばＣＤ  ＲＯＭドライブ、ＣＤ  Ｒ／ＲＷドライブ、ＤＶＤ＋／−Ｒ／ＲＷドライブ、Ｂｌｕ−Ｒａｙ（Ｒ）ドライブ、ホログラフィック・ストレージ・ドライブなど）、ソリッド・ステート・メモリ・ドライブ、またはそのほか、データを求めて、もしくはタスクを処理するために、またはその両方のためにアクセスされ得るＩ／Ｏデバイス、リソース、もしくはコンポーネントなど、様々なデータ・ストレージ・デバイスにインターフェースを提供するよう構成されたサーバであってもよい。
【００３７】
コンピュータ１０と同様の形で、各処理ノード４２のメモリ４４は、ＤＲＡＭ、ＳＲＡＭ、フラッシュ・メモリ、もしくは別のデジタルもしくはソリッド・ステート・ストレージ媒体、またはそのいずれかの組み合わせからなる、キャッシュ・サブシステムを含んでもよい。さらに、各処理ノード４２のメモリ４４は、ハード・ディスク・ドライブもしくは別のデジタル・ストレージ媒体またはその両方を含むメイン・ストレージをさらに含んでもよい。さらに同様に、キャッシュ・サブシステムは、１つ以上のレベルのデータ・キャッシュ、命令キャッシュ、もしくは組み合わせキャッシュ、またはそのいずれかの組み合わせを含んでもよく、特定のキャッシュが、当該技術分野で周知のように共有される形で処理ユニット１２に対応する。
【００３８】
ノードは、処理ノード４２、Ｉ／Ｏノード、管理ノード５４、またはサービス・ノード５８のいずれとして構成されているかにかかわらず、当該技術分野で周知のように、キャッシュ・ラインの１つ以上のリクエスタを含み共通のキャッシュ・メモリ（例えばメモリ４４、またはノード４２の少なくとも１つの処理ユニット１２の内部キャッシュ・メモリ）によりサービス提供されるシステム４０の一部分である。特定の実施形態では、システム４０内のリクエスタは、処理ノード４２（以下「ノード」４２）、ノードのメモリ４４、少なくとも１つの処理ユニット１２、処理ユニット１２のコンポーネント（例えば、以下で開示されるようにキャッシュもしくはＩ／Ｏコントローラまたはその両方）、もしくは処理ユニット１２のコア（ならびにコアのハードウェア・スレッド）、またはそのいずれかの組み合わせを含んでもよい。特定の実施形態では、各ノード４２は、当該技術分野で周知のように、ワークロードもしくは１つ以上のタスクまたはその両方を処理し、個々のネットワーク・インターフェース４６を介して他のノード４２と協働して並列方式でワークロードもしくは１つ以上のタスクまたはその両方を処理するよう構成されてもよい。図２には１つのネットワーク・インターフェース４６が示されているが、各ノード４２は、複数のネットワーク・インターフェース４６またはその他ネットワーク接続を含んでもよい。よって、各ノード４２は、ノード間ネットワーク５０を含む様々なネットワークを介してシステム４０またはその他ノード４２に伝達するよう構成されてもよい。例えば、各ノード４２は、トーラス・ネットワークを介して他のすべてのノード４２に伝達してもよい。さらに、様々なノード４２は、様々な機能を実行するようカスタム構成されてもよい。例えば、システム４０の一部のノード４２は、（例えばワークロードもしくは少なくとも１つのタスクまたはその両方を受領してそのワークロードもしくは少なくとも１つのタスクまたはその両方を処理する）コンピューティング・ノード、（例えば各コンピューティング・ノードおよびシステム４０の残りの部分への伝達、もしくはそれらからの伝達、またはその両方を管理する）Ｉ／Ｏノード、（例えばシステム４０を管理し、ワークロードもしくは少なくとも１つのタスクまたはその両方を受領する）管理ノード、もしくは（例えばシステム４０の監視、ワークロードのスケジュール、もしくはノード４２のサポート、またはそのいずれかの組み合わせを行う）サービス・ノード、またはそのいずれかの組み合わせとして構成されてもよい。よって、一部の実施形態では、システム４０は、ＩＢＭにより販売されているＰｏｗｅｒ（ＩＢＭ社の登録商標）Ｓｙｓｔｅｍ共有コンピューティング・システムに適合するアーキテクチャを有してもよい。別の実施形態では、システム４０は、ＩＢＭにより開発されたＢｌｕｅＧｅｎｅ（ＩＢＭ社の登録商標）並列コンピューティング・システム・アーキテクチャに適合するアーキテクチャを有してもよい。代わりの実施形態では、システム４０は、同じくＩＢＭにより開発されたＲｏａｄＲｕｎｎｅｒ並列コンピューティング・システム・アーキテクチャに適合するアーキテクチャを有してもよい。さらに、他の代わりの実施形態では、システム４０は、当該技術分野で周知のように、非一様メモリ・アクセス（「ＮＵＭＡ」）もしくはキャッシュ・コヒーレントＮＵＭＡ（「ｃｃＮＵＭＡ：ｃａｃｈｅ  ｃｏｈｅｒｅｎｔ  ＮＵＭＡ」）コンピューティング・システムまたはその両方に適合するアーキテクチャを有してもよい。各ノードは、マルチレベル共有メモリ・アーキテクチャにおけるいくつかの異なるレベルにおいて定義されてもよく、一部の実施形態では、任意の特定の物理割り当てまたは境界に基づき互いに区別される必要はない。実際、一部の実施形態では、複数のノードが、同じコンピュータ上、同じカード上、または同じ集積回路上にさえ、物理的に配置され得る。
【００３９】
図１および図２により示されているように、コンピュータ１０および各ノード４２は、１つ以上の処理ユニット１２を含んでもよい。動作の間、キャッシュ・ラインに編成されている様々な命令もしくはデータまたはその両方が、タスクの処理に使用され得る。一部の実施形態では、キャッシュ・ラインは、コンピュータ１０もしくはシステム４０またはその両方のメモリ領域のデータの一部分である。共有メモリ・コンピューティング・システム（例えばコンピュータ１０もしくはシステム４０またはその両方）では、キャッシュ・ライン内のデータを更新するために当該データをロックする同期動作ならびにキャッシュ・ライン内のデータをアトミック更新する同期動作を含む同期動作により、キャッシュ・ライン内の共有データ、したがってひいてはキャッシュ・ライン自体の、読み取り、変更、もしくは解放、またはそのいずれかの組み合わせが行われる（当然のことながら、簡潔さのため、別途指定されない限り、本主題の開示全体にわたる「キャッシュ・ライン」の参照はキャッシュ・ラインのデータのすべてまたはサブセットのみを指す）。
【００４０】
特定の実施形態では、キャッシュ・ラインは、キャッシュ・ラインのロック変数を設定値に設定することによりロックされる。そのキャッシュ・ラインに関連するクリティカル・セクションが完了すると、そのキャッシュのロック変数はそのもとの状態（例えばクリア値）に戻され、そのキャッシュ・ラインに対するロックを獲得するために他のリクエスタが競争できる。したがって、特定の実施形態では、実行のクリティカル・セクションの間にキャッシュ・ラインのロックおよびロック解除をそれぞれ少なくとも行うよう、獲得動作および解放動作は対になっている。
【００４１】
さらに、一部の実施形態では、システムは、サンプリングに従事するプロファイラを含んでもよい。図２に示されているように、サービス・ノード５８は、１つ以上の処理ユニット１２およびメモリ４４を含んでもよく、サービス・ノード５８のメモリ４４は、本発明の一部の実施形態に適合しメモリ４４上に記憶された、プロファイラ６２に関係するプログラム・コードを含んでもよい。本発明に基づくアジャスタ（ａｄｊｕｓｔｅｒ）は、既存のサンプリング・プロファイラとともに動作してメモリ参照サンプリングを実行してもよく、高レイテンシ・メモリ参照を特定するのに十分なデータを提供する。例えば、図２を参照し、サービス・ノード５８は、本発明の一部の実施形態に適合しサービス・ノード５８上に記憶された、アジャスタ６３に関係するプログラム・コードを含んでもよい。よって、一部の実施形態では、サービス・ノード５８の１つ以上の処理ユニット１２は、サービス・ノード５８の処理ユニットが本発明の実施形態に適合したステップを実行するように、プロファイラ６２もしくはアジャスタ６３またはその両方を実行してもよい。図２では、プロファイラ６２およびアジャスタ６３が、本発明の実施形態に適合するステップを実行するために処理ユニット１２により実行され得る動作を含むプログラム・コードとして示されているが、本発明はそのように限定されない。例えば、一部の実施形態では、プロファイラ６２もしくはアジャスタまたはその両方が、本発明の実施形態に適合するステップを実行するよう構成された１つ以上の特殊用途プロセッサを含んでもよく、特殊用途プロセッサは、サービス・ノード５８に関連してもよく、または例えば管理ノード５４、外部リソース６０、処理ノード４２、もしくはワークステーション５６、もしくはそのいずれかの組み合わせを含むネットワーク４８に接続された１つ以上のデバイスに関連してもよく、またはその両方であってもよい。アジャスタは、図３の流れ図に示された分析およびシステム調整のプロセスを実行してもよい。
【００４２】
メモリ参照サンプリング（ブロック１０２）は、メモリ・プロファイラに基づいて実行されてもよい。例えば、ＩＢＭのＰＯＷＥＲ  ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の登録商標）は、低オーバーヘッド診断としてメモリ参照サンプリングを含む。プロファイラおよびアジャスタは、マルチノード・システム４０に関して上述したように、サービス・ノード５８上で実行されてもよい。各参照サンプルは、参照されたメモリおよび参照を呼び出すプロセスに関する情報を含む。この情報は、参照に関連するキャッシュ・ページに関するメモリ・アフィニティ・データ、参照されたメモリ・セグメントの物理位置、ならびに参照元プロセスに関連する処理ユニットおよびノードを含んでもよい。
【００４３】
各メモリ参照には、参照に関連するレイテンシを表現するスコアを付与することができる（ブロック１０４）。レイテンシにスコアを付ける方法は、当該技術分野で周知である。高レイテンシに寄与し得る要因には、ロックされたメモリのアクセスにおける遅延から生じるクリティカル・セクションの競合、データが最高速のキャッシュにない場合のキャッシュ・ミス、およびデータが参照元プロセスから離れたプロセッサまたはノードに関連するメモリ領域に位置する場合の非ローカル・メモリ呼び出しが含まれる。各メモリ参照のレイテンシ・スコアは、算出または概算されたレイテンシを表現し得る。
【００４４】
アフィニティ・アジャスタは、参照が高レイテンシを有すると特定された場合（ブロック１０６）に、問題に対処するよう動作する。各スコアは、生成されると即座に閾値に対して評価され、高レイテンシ参照が特定される。あるいは、高レイテンシ参照は、サンプリングの間、周期的に探されて特定されてもよい。特定されたスコアは、単一のサンプル・スコアを反映しても、複数のサンプルの分析を反映してもよい。例えば、最高スコアをもつ単一のサンプルが特定されてもよい。あるいは、サンプルの分析は、いくつかの参照にわたるレイテンシの平均または中央値が高い、例えばキャッシュ・ラインまたはキャッシュ・ページなどのメモリ・セグメントを返してもよい。別の実施形態では、同じメモリ・セグメントに関する特定の絶対数の高レイテンシ・サンプルだけ、あるいはセグメントにかかわる総サンプルに対する特定の割合の高レイテンシ・サンプルだけが、所与のメモリ・セグメントにかかわる参照の特定を生じ得るように、頻度閾値が設定されてもよい。
【００４５】
当業者であれば当然ことながら、時折生じる高レイテンシ参照は、通常は不可避でありシステム性能に大きくは影響しないため、レイテンシを削減することによりシステムの効率性を改善するには統計的手法が必要である。さらに、本願明細書に記載されさらに下記で説明される調整は、その正当化事由があまりに少ない状態で実装されれば、それ自体が性能を奪うこともある。しかしながら、前述のメモリ参照サンプリング・プロセスにより発見できるように、高レイテンシ参照のパターンが明らかになると、調整によりレイテンシが削減され得る。したがって、高レイテンシ参照の評価において、下記の記載では、「頻繁」および「繰り返し起こる」という用語が有意な定義を有するよう、十分なメモリ参照サンプリングが発生したものと想定している。とはいえ、当業者であれば当然のことながら、マルチプロセッサ・コンピューティング・システムにおいて、本願明細書に概説するステップは、非常に疎なサンプリングを用いてでも実行可能であるが、エラーの可能性が大きくなる。
【００４６】
高レイテンシ参照が特定されると、適切な調整を判断するために、関連するメモリ・セグメントに対してさらなる分析が実行される。一実施形態では、関連するメモリ・セグメントは、参照されたキャッシュ・ラインに関連するキャッシュ・ページと見なされる。あるいは、メモリ・セグメントは単に、キャッシュ・ライン自体であってもよい。アジャスタは、参照元プロセスの位置とともに、メモリ・セグメントのアフィニティ（ａｆｆｉｎｉｔｙ）を評価して、参照元プロセスがローカルであるか非ローカルであるかを判断する（ブロック１０８）。ローカル対非ローカル参照（すなわち参照元プロセス）の定義は、所与のシステムに対して定義され得る。メモリ・キャッシュがノードに固有である場合、ローカル参照とは、プロセスおよびメモリ・セグメントが同じノード上に位置するものとされ得る。プロセッサとメモリ・キャッシュとの間の相対的位置の要素としてレイテンシを用いる他のマルチプロセッサ・システムは、「ローカル」または「離れた」の他の定義を有することもある。
【００４７】
参照が非ローカルであった場合（決定ブロック１０８の「はい」の分岐）、特定されたプロセスから特定されたセグメントへの参照がローカル参照となるように、メモリ・セグメントの位置を調整することが適切なこともある。しかし、リソースが共有されている場合、メモリ・アフィニティの調整は、総システム・レイテンシを削減しないかもしれない。例えば、サンプリングが、別々のノード上で実行中の２つのプロセスに関連する頻繁なメモリ参照を示す場合、参照に関連するメモリ・セグメントを再配置することにより、１つのプロセスによる参照に関するレイテンシは削減されても、それは、同じセグメントを参照する他のプロセスに関するレイテンシの許容しがたい増加という代償によるかもしれない。この状況では、その別々のプロセスを、同じノードに関連するプロセッサ上でホストすることで、レイテンシが削減されるかもしれない。したがって、２つ以上のプロセスが両方とも同じメモリ・セグメントに強く関連している場合は、それらのプロセスを互いに近く、かつメモリ・セグメントの近くに配置することにより、特定されたレイテンシ問題に十分に対処され得る。
【００４８】
これは、離れた複数のプロセスが、特定されたメモリ・セグメントに頻繁にアクセスしているかどうかを確認するための評価により表される（ブロック１１０）。高レイテンシの非ローカル・メモリ参照により特定されるプロセスによる、他の離れたプロセスとのメモリの共有が著しいものでなければ（決定ブロック１１０の「いいえ」の分岐）、メモリ・セグメントは、特定されたプロセスとアフィニティ設定（ａｆｆｉｎｉｔｉｚｅ）される（ブロック１１２）。これは、このメモリ・セグメント、および適切であれば他の関連するメモリ・セグメントを、特定されたプロセスが実行されるプロセッサのローカルと見なされるキャッシュへ転送することを含んでもよい。適切であれば、特定されたメモリ・セグメントに関連するキャッシュ・ページが、プロセスが実行されるノード内のローカル・キャッシュ・メモリへ転送されてもよい。上述のとおり、ローカルの異なる定義から、種々のシステム・アーキテクチャとの関連で認められる他の種類のアフィニティ調整が生み出されてもよい。
【００４９】
高レイテンシの非ローカル・メモリ参照により特定されるプロセス以外の１つ以上のプロセスも、特定されたメモリ・セグメントに関して著しいトラフィックを表す場合（決定ブロック１１０の「はい」の分岐）、メモリ・セグメントを転送するよりもプロセスの１つ以上を転送するほうが適切かもしれない（ブロック１１４）。長いレイテンシ時間に関連するプロセスを、同じノード、そうでなければ近接したノードにまとめることにより、それらのプロセスが同じメモリ・セグメントを参照するときのレイテンシを削減できるかもしれない。プロセスの転送は、プロセスに密に関連する他のメモリ・セグメントも再配置されるように、これら関連セグメントのアフィニティを変更することを必要とし得る。当業者であれば当然のことながら、近接したプロセッサをグループ化するために１つ以上のプロセスをプロセッサ上へ再配置することのシステムに対するコストは、定量化可能である。一実施形態では、プロセスを再配置する前に、レイテンシの予想される削減と、算出された転送コストとを比較することができる（ブロック１１４）。
【００５０】
特定された参照がローカルであった場合（決定ブロック１０８の「いいえ」の分岐）の高レイテンシには、別の調整により対処できる。共有リソースへのアクセスに関して１つのプロセスに他のプロセスに比べ著しい特権を与えることにより、総レイテンシが削減され得る（ブロック１１６）。例えば、リソース間の通常の管理権のネゴシエーションは、上述のように典型的な「ロックされている」および「共有されている」ステータスを使用し、その結果、メモリ・セグメントに対する一番早い参照が尊重され、そのプロセスを反映するようセグメントのステータスが変更される。しかし、そうすることが非効率的であるということをサンプリングが示す場合、追加ステータスであって、そのステータスが実装されていると、別のプロセッサによるリソースの転送およびロックには追加ステップが要求されるような、該追加ステータスが導入されてもよい。
【００５１】
図４の流れ図は、拡張ステータス（ｅｎｈａｎｃｅｄ  ｓｔａｔｕｓ）を含むことができるメモリ参照に関連するステップのセットを例示する。図のように、プロセスがキャッシュ・ラインなどのメモリ・セグメントを参照すると（ブロック２０２）、キャッシュ・ラインのステータスが、そのキャッシュ・ラインを参照が使用できるかどうかを決定する（決定ブロック２０４）。キャッシュ・ラインが「ロックされている」と示されると（決定ブロック２０４の「ロックされている」の分岐）、参照はキューに入れられて参照のロック解除を待つ（ブロック２０６）。キャッシュ・ラインが「共有されている」と示され（決定ブロック２０４の「共有されている」の分岐）、メモリ参照がデータの読み取りに限られるためロックを必要としない（決定ブロック２０８の「いいえ」の分岐）場合、データのコピーを作成し、「共有されている」ステータスを備えるキャッシュ・ラインの別のコピーとしてローカルに保存することができる（ブロック２１２）。他方、書き込みアクセスであり、したがってデータに対するロックが必要である場合（決定ブロック２０８の「はい」の分岐）、参照はキューに入って「クリア」ステータスを待たなければならない（ブロック２１０）。
【００５２】
キャッシュ・ラインがクリアと示されると（決定ブロック２０４の「クリア」の分岐）、通常であれば、データはコピーされて「共有される」（決定ブロック２１４の「いいえ」の分岐、ブロック２１２）か、またはさらなる評価なしに転送され「ロックされる」ことが可能であると考えられる。しかし、本発明の一実施形態に基づき、コヒーレンス・プロトコルにより拡張ステータスが可能にされると、データ転送の発生前に少なくとも１つの追加ステップが必要である。図のように、システムは、キャッシュ・ラインが拡張ステータスを有するかどうかを確認する。有しなければ（決定ブロック２１６の「いいえ」の分岐）、通常どおりリソースは転送されロックされる。キャッシュ・ラインが拡張ステータスを有する場合（決定ブロック２１６の「はい」の分岐）、そのステータスは１つ以上のプロセスに関連付けられている。
【００５３】
メモリ・セグメントの転送が可能であることを保証するために、当該プロセスそれぞれに関してクエリが行われる。例えば、当該プロセスのいずれかが、同じくメモリ・セグメントに関するキューに入れられている参照に関連すれば、クエリは、リソースをロックするリクエストを拒否して（決定ブロック２２０の「拒否」の分岐）、参照を強制的に再度キューに入れてもよい（ブロック２０６）。あるいは、クエリを行われたプロセスそれぞれが、メモリ・セグメントへのアクセスをもはや必要としなければ、クエリは、リソースを転送およびロックするリクエストを許可してもよい。この拡張ステータスは、１つ以上のプロセスが、特権を与えられているメモリ・セグメントの任意のキューの先頭にジャンプすることを可能にしてもよく、またはプロセスの実行のクリティカル部分の間、実質的な「ソフトロック」を可能にしてもよい。拡張ステータスを備えるメモリ・セグメントを転送およびロックするプロセスに少なくとも１つの追加ステップを追加する任意の類似の手順が、種々のマルチプロセッサ・コンピューティング・システムに基づき実装され得る。
【００５４】
当業者には他の変更が明らかであろう。したがって、本発明は、添付の特許請求の範囲にある。
【図１】
2015504541.tif 000003
【図２】
2015504541.tif 000004
【図３】
2015504541.tif 000005
【図４】
2015504541.tif 000006
【手続補正書】
【提出日】平成26年6月20日(2014.6.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マルチプロセッサ・コンピューティング・システムにおけるメモリ・アクセスを動的に最適化する方法であって、
前記マルチプロセッサ・コンピューティング・システム内の複数の物理プロセッサにより複数のプロセスが実行される間、前記複数のプロセスにより参照されている共有メモリから、メモリ位置のメモリ参照サンプリングを実行するステップであって、メモリ参照サンプリングの間に収集された、サンプリングされた複数のメモリ参照はそれぞれ、レイテンシと、前記共有メモリ内の物理位置とに関連する、前記ステップと、
前記共有メモリ内のメモリ位置の、少なくとも１つの準最適レイテンシに関連する少なくとも１つのセグメントを特定するために、メモリ参照サンプリングの間に収集された前記サンプリングされたメモリ参照を分析するステップと、
前記分析された、サンプリングされたメモリ参照に基づいて、前記共有メモリ内の前記特定されたセグメントの物理位置と、前記特定されたセグメント内のメモリ位置を参照する少なくとも１つのプロセスが実行される物理プロセッサと、前記特定されたセグメントに関連するステータスとのうちの少なくとも１つを動的に調整するステップと、
を含む方法。
【請求項２】
前記サンプリングされたメモリ参照を分析するステップは、
メモリ位置の個々の前記セグメントを読み出すのに必要な時間に基づいて、前記サンプリングされたメモリ参照それぞれにスコアを付けるステップ
を含む、請求項１に記載の方法。
【請求項３】
メモリ位置の複数の前記セグメントそれぞれを読み出すのに必要な前記時間に基づいて、前記サンプリングされたメモリ参照それぞれにスコアを付けるステップは、メモリ位置の前記複数のセグメントそれぞれを読み出すのに必要な前記時間を測定するステップを含む、請求項２に記載の方法。
【請求項４】
メモリ位置の前記個々のセグメントを読み出すのに必要な前記時間に基づいて、前記サンプリングされたメモリ参照それぞれにスコアを付けるステップは、メモリ位置の複数の前記セグメントそれぞれを読み出すのに必要な前記時間を概算するステップを含む、請求項２に記載の方法。
【請求項５】
前記共有メモリ内のメモリ位置の、少なくとも１つの準最適レイテンシに関連する少なくとも１つのセグメントを特定するために、メモリ参照サンプリングの間に収集された前記サンプリングされたメモリ参照を分析するステップは、前記サンプリングされたメモリ参照それぞれに関連する前記スコアに少なくとも部分的に基づく、請求項２に記載の方法。
【請求項６】
前記特定されたセグメントは、キャッシュ・ページに関連するキャッシュ・ラインである、請求項１に記載の方法。
【請求項７】
前記キャッシュ・ページの少なくとも一部分の将来の読み出しに関連する将来のレイテンシが削減されるように、前記キャッシュ・ページの前記一部分の位置を調整するステップ
をさらに含む、請求項６に記載の方法。
【請求項８】
前記キャッシュ・ページの前記一部分を第１のキャッシュから第２のキャッシュに転送するステップ
をさらに含む、請求項６に記載の方法。
【請求項９】
前記キャッシュ・ページの前記一部分を第１のノードから第２のノードに転送するステップをさらに含む、請求項６に記載の方法。
【請求項１０】
前記キャッシュ・ラインは、第１のキャッシュ・ラインであり、前記キャッシュ・ページは、少なくとも第２のキャッシュ・ラインを含む、請求項６に記載の方法。
【請求項１１】
前記特定されたセグメントに関連するキャッシュ・ページを特定するステップと、
前記特定されたセグメントに関連するオブジェクトの実行の位置を特定するステップと、
前記オブジェクトによる前記キャッシュ・ページの少なくとも一部分の将来の読み出しに関連する、将来のレイテンシが削減されるように、前記オブジェクトの位置を調整するステップと、
をさらに含む、請求項１に記載の方法。
【請求項１２】
前記オブジェクトは、前記コンピューティング・システムにより実行されるプロセスの少なくとも一部分である、請求項１１に記載の方法。
【請求項１３】
前記特定されたセグメント内のメモリ位置を参照するプロセスの少なくとも一部分を、第１の処理ユニットから第２の処理ユニットに転送するステップ
をさらに含む、請求項１に記載の方法。
【請求項１４】
前記特定されたセグメント内のメモリ位置を参照するプロセスの少なくとも一部分を、第１のノードから第２のノードに転送するステップ
をさらに含む、請求項１に記載の方法。
【請求項１５】
前記特定されたセグメントに関連する第１のキャッシュ・ページを特定するステップと、
メモリ位置の複数の前記セグメントに関するメモリ・リクエストのサブセットに関連する第２のキャッシュ・ページを特定するステップと、
前記第２のキャッシュ・ページの転送が、前記第１のキャッシュ・ページの転送よりも少なくとも１つ多くのステップを必要とすることを示すステータスを、前記第２のキャッシュ・ページに付与するステップと、
をさらに含む、請求項１に記載の方法。
【請求項１６】
前記共有メモリ内の前記メモリ位置の特定された個々のセグメントを参照する個々のプロセスがローカルの参照元プロセスであるかどうかを判断するために、前記個々のプロセスの位置を分析するステップと、
前記個々のプロセスが、ローカルの参照元プロセスであると判断するのに応じて、前記共有メモリ内の前記メモリ位置の前記特定された個々のセグメントに関して、前記個々のプロセスに拡張ステータスを付与するステップと、
をさらに含む、請求項１に記載の方法。
【請求項１７】
メモリ・アクセスを動的に最適化するコンピューティング・システムであって、
複数の物理プロセッサと、
マルチプロセッサ・コンピューティング・システムにおけるメモリ・アクセスを動的に最適化するために、少なくとも１つの物理プロセッサにより実行されるよう構成されたプログラム・コードと、
を含む、前記マルチプロセッサ・コンピューティング・システムであって、前記プログラム・コードは、前記複数の物理プロセッサの少なくともサブセットにより複数のプロセスが実行される間、前記複数のプロセスにより参照されている共有メモリから、メモリ位置のメモリ参照サンプリングを実行することであって、メモリ参照サンプリングの間に収集された、サンプリングされた複数のメモリ参照はそれぞれ、レイテンシと、前記共有メモリ内の物理位置とに関連する、前記実行すること、前記共有メモリ内のメモリ位置の、少なくとも１つの準最適レイテンシに関連する少なくとも１つのセグメントを特定するために、メモリ参照サンプリングの間に収集された前記サンプリングされたメモリ参照を分析すること、および前記分析された、サンプリングされたメモリ参照に基づいて、前記共有メモリ内の前記特定されたセグメントの物理位置と、前記特定されたセグメント内のメモリ位置を参照する少なくとも１つのプロセスが実行される物理プロセッサと、前記特定されたセグメントに関連するステータスとのうちの少なくとも１つを動的に調整すること、をするようさらに構成されている、コンピューティング・システム。
【請求項１８】
マルチプロセッサ・コンピューティング・システムの少なくとも１つの物理プロセッサにより実行されるプログラムであって、
前記マルチプロセッサ・コンピューティング・システム内の複数の前記物理プロセッサの少なくともサブセットにより複数のプロセスが実行される間、前記複数のプロセスにより参照されている共有メモリから、メモリ位置のメモリ参照サンプリングを実行するプログラムであって、
前記プログラムは、
メモリ参照サンプリングの間に収集された、サンプリングされた複数のメモリ参照はそれぞれ、レイテンシと、前記共有メモリ内の物理位置とに関連する、前記実行すること、前記共有メモリ内のメモリ位置の、少なくとも１つの準最適レイテンシに関連する少なくとも１つのセグメントを特定するために、メモリ参照サンプリングの間に収集された前記サンプリングされたメモリ参照を分析すること、
前記分析された、サンプリングされたメモリ参照に基づいて、前記共有メモリ内の前記特定されたセグメントの物理位置と、前記特定されたセグメント内のメモリ位置を参照する少なくとも１つのプロセスが実行される物理プロセッサと、前記特定されたセグメントに関連するステータスとのうちの少なくとも１つを動的に調整すること、
により前記コンピューティング・システムにおけるメモリ・アクセスを動的に最適化するように、前記プロセッサに更に実行させる、プログラム。
【国際調査報告】
2015504541.tif 000007