(57)【要約】  本発明は、特に主アプリケーションの実行再開時に、複数の論理コアを含むマイクロプロセッサで、上位部と下位部とを備える階層編成の共有メモリを含む環境で少なくとも２つのプロセスの同時実行を可能にするマイクロプロセッサにおけるメモリアクセスを最適化する方法で、データがアプリケーションによって処理されるために下位部から上位部にコピーされるメモリアクセス最適化方法に関する。コンピュータは、主アプリケーションの実行を中断するのに適している。前記アプリケーションの実行の中断時に、メモリの上位部に記憶されているデータの参照が記憶され、前記データはアプリケーションの実行を可能にするために使用される。アプリケーションの実行再開をプログラミングした後、アプリケーションの実行再開前に、前記データは、メモリの上位部に記憶されている参照に従ってメモリの下位部でアクセスされる。
2013534670.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに対して、主アプリケーションの実行再開時に前記コンピュータのマイクロプロセッサにおけるメモリアクセスを最適化する方法にして、前記マイクロプロセッサは少なくとも上位部と下位部とを備える階層編成の共有メモリを備える環境で少なくとも２つのプロセスの同時実行を可能にし、少なくとも１つのデータ項目が前記主アプリケーションによって処理されるために下位部から上位部にコピーされ、前記コンピュータは前記主アプリケーションの実行を中断するのに適したメモリアクセス最適化方法であって、
前記主アプリケーションの実行の中断時に、少なくとも１つの補助アプリケーションを実行するために、
前記メモリの上位部に記憶されている少なくとも１つのデータ項目であって、前記主アプリケーションの実行を可能にするのに使用される前記少なくとも１つのデータ項目の少なくとも１つの参照を記憶するステップ（７１０）と、
前記少なくとも１つの補助アプリケーションの実行時に、前記主アプリケーションの実行再開をプログラミングした後、前記主アプリケーションの実行再開前に、
前記少なくとも１つの参照に従って、前記メモリの下位部の前記少なくとも１つのデータ項目にアクセスするステップ（８０５）と、
前記メモリの上位部の前記少なくとも１つのデータ項目を記憶するステップ（８１０）と
を含むことを特徴とする、方法。
【請求項２】
前記主アプリケーションの少なくとも１つの構成パラメータにアクセスするステップ（８００）をさらに含み、前記少なくとも１つのデータ項目にアクセスするステップは前記少なくとも１つのパラメータに従って実行される、請求項１に記載の方法。
【請求項３】
前記少なくとも１つの主アプリケーションが特権アプリケーションであると宣言される事前宣言ステップと、前記少なくともパラメータを定義するステップとをさらに含む、請求項２に記載の方法。
【請求項４】
前記少なくとも１つのパラメータを検証するステップをさらに含み、前記少なくとも１つのパラメータはデータブロックサイズを定義し、前記少なくとも１つの参照は少なくとも１つのメモリアドレスを含む、請求項３に記載の方法。
【請求項５】
前記プロセッサが少なくとも２つの論理コアを実装することができ、前記少なくとも２つのプロセスの各々は１つの論理コアによって実行可能であり、前記少なくとも２つの論理コアは前記共有メモリを共有し、前記主アプリケーションは前記少なくとも２つの論理コアのうちの一方の論理コアによって実行され、前記少なくとも１つのデータ項目にアクセスするステップおよび少なくとも１つのデータ項目を記憶するステップの実行に関連する命令は、前記少なくとも２つの論理コアの他方のコアに送信される、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記マイクロプロセッサが、マルチコアプロセッサであり、前記少なくとも２つの論理コアは、同じ物理コアで実装される、請求項５に記載の方法。
【請求項７】
前記少なくとも１つのデータ項目の前記少なくとも１つの参照を記憶するための前記命令および少なくとも１つのデータ項目にアクセスするための前記命令は、前記コンピュータの論理層によって開始される、請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記論理層が、前記コンピュータに実装されるオペレーティングシステムに属する、請求項７に記載の方法。
【請求項９】
コンピュータ上で実行される場合、請求項１から８のいずれか一項の方法のステップの各々を実行するのに適した命令を含むコンピュータプログラム。
【請求項１０】
取り外し可能または取り外し不可能で、請求項１から８のいずれか一項に記載の方法のステップの各々を実行するためのコンピュータプログラムのコード命令を含むコンピュータまたはマイクロプロセッサによって部分的または全体的に読み取り可能な情報記憶手段。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサのメモリアクセスに関し、特に、複数の論理コアを備えるマイクロプロセッサ、例えば、特に高性能コンピューティングのコンテキストで「同時マルチスレッディング」として周知の技術を実行するマイクロプロセッサにおけるアプリケーション実行再開時のメモリアクセス最適化方法および該方法を実行するコンピュータプログラムに関する。
【背景技術】
【０００２】
高性能コンピューティング（ＨＰＣ）は、特に、航空学、エネルギー科学、気候学、生命科学のような技術分野の大学の研究および産業用に開発されている。モデリングとシミュレーションにより、特に、開発コストを低減し、より信頼性が高くエネルギーをほとんど消費しない革新的な製品の発売を加速させることができる。研究技術者にとっては、高性能コンピューティングは研究の不可欠な手段となっている。
【０００３】
このコンピューティングは、通常、クラスタと呼ばれるデータ処理システムにおいて行われる。クラスタは、典型的には、相互接続ノードのセットを備える。特定のノードがコンピューティングタスクを実行するのに使用され（コンピューティングノード）、他のノードはデータを記憶するために使用され（記憶ノード）、１つまたは複数の他のノードはクラスタを管理する（管理ノード）。それぞれのノードは、例えば、Ｌｉｎｕｘ（登録商標）のようなオペレーティングシステムを実装するサーバである。ノード間の接続は、例えば、Ｅｔｈｅｒｎｅｔ(登録商標)またはＩｎｆｉｎｉｂａｎｄ（商標）リンクを使用して行われる。
【０００４】
図１は、Ｆａｔ−Ｔｒｅｅ形態のクラスタ用トポロジ１００の一例を示す図である。トポロジ１００は、符号１０５のノードセットを備える。セット１１０に属するノードは、コンピューティングノードであり、セット１１５のノードはサービスノード（記憶ノードおよび管理ノード）である。コンピューティングノードは、コンピューティングアイランドと呼ばれるサブセット１２０にグループ化されてもよく、セット１１５はサービスアイランドと呼ばれる。
【０００５】
ノードは、スイッチによって、例えば、階層的に互いに接続される。図１に示されている例では、ノードは第１のレベルスイッチ１２５に接続され、第１のレベルスイッチ１２５自体は第２のレベルスイッチ１３０に接続され、第２のレベルスイッチ１３０は第３のレベルスイッチ１３５に接続されている。
【０００６】
図２に示されているように、各々のノードは、通常、１つまたは複数のマイクロプロセッサ、ローカルメモリ、および通信インタフェースを備える。より詳細には、この場合、ノード２００は通信バス２０２を備え、通信バス２０２には、
中央処理ユニット（ＣＰＵ）またはマイクロプロセッサ２０４と、
プログラムの実行時に作製および変更された変数およびパラメータを記録するのに適したレジスタを備える、ランダムアクセスメモリ（ＲＡＭ）２０６のコンポーネント（図示されているように、各々のランダムアクセスメモリのコンポーネントはマイクロプロセッサに関連付けられてもよい）と、
データを送受信するのに適した通信インタフェース２０８と
が接続される。
【０００７】
ノード２００はさらに、この場合、特にプログラムの実行可能コードを含むことができるハードディスクのような内部記憶手段２１０を有する。
【０００８】
通信バスにより、ノード２００に含まれる、またはノード２００に接続される異なる要素間の通信および相互運用が可能になる。マイクロプロセッサ２０４は、単数または複数のプログラムのソフトウェアの一部の命令の実行を制御および指示する。電源を入れると、不揮発性メモリ、例えば、ハードディスクに記憶されている単数または複数のプログラムは、ランダムアクセスメモリ２０６に転送される。
【０００９】
各々のノードの性能を向上させるために、使用されるマイクロプロセッサは多くはマルチコアμプロセッサである、すなわち、並行して使用できる複数のコアを備えるマイクロプロセッサである。
【００１０】
また、通常、マイクロプロセッサ内の命令の実行時間はメモリ内のデータにアクセスする時間より短いので、通常は、キャッシュメモリと呼ばれる専用のメモリが使用される。したがって、典型的には、異なるメモリがアクセス時間、コスト、ひいてはサイズに従って編成されるメモリ階層がある。このような編成は、図３に示されている。この場合、メモリは、階層的に編成された６タイプのメモリ、つまり、大容量記憶メモリ、中央メモリ、レベルＬ３キャッシュメモリ、レベルＬ２キャッシュメモリ、レベルＬ１キャッシュメモリ、およびレジスタを備える。図示されているように、メモリが高価で速くなるほど、対応メモリのサイズは制限される。
【００１１】
アプリケーションの実行の可能な最適化は、アプリケーションの実行時にメモリ階層においてデータを低いレベルのメモリ、例えば、大容量記憶メモリから高いレベルのキャッシュメモリ、好ましくは、レベルＬ１のキャッシュメモリまたはレジスタまで引き上げることから成り、使用されるデータがマイクロプロセッサがそのデータを必要とする時にマイクロプロセッサにできるだけ近くなるようにする。プリフェッチとして周知のこのような最適化は明示的であり、対応する命令を使用してアプリケーション自体において実行されてもよい。また、この最適化は暗黙的であり、アプリケーションをコンパイルする時にはコンパイラによって、またはアプリケーションを実行する時にはマイクロプロセッサ自体によって実行されてもよい。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
この技術によりマイクロプロセッサの性能は大幅に向上するが、その利用が補助プログラムの実行によって妨げられる場合がある。正確には、主プログラムの実行時に、特に、デーモンと呼ばれるオペレーティングシステムの補助タスクを実行するために中断される場合が多い。中断に続いて、デーモンを実行する時に、キャッシュメモリがそのデーモンを実行するために最適化される。その結果、デーモンの実行後に、マイクロプロセッサが主プログラムを再び実行する時に、キャッシュメモリはデーモンに関連するデータを含み、主アプリケーションに接続されたデータがメモリ階層で引き上げられるために待ち時間が生じる。
【課題を解決するための手段】
【００１３】
本発明により、上述の少なくとも１つの問題が解決される。
【００１４】
本発明は、コンピュータに対して、主アプリケーションの実行再開時に前記コンピュータのマイクロプロセッサにおけるメモリアクセスを最適化する方法にして、前記マイクロプロセッサは少なくとも上位部と下位部とを備える階層編成の共有メモリを備える環境で少なくとも２つのプロセスの同時実行を可能にし、少なくとも１つのデータ項目が前記主アプリケーションによって処理されるために下位部から上位部にコピーされ、前記コンピュータは前記主アプリケーションの実行を中断するのに適したメモリアクセス最適化方法であって、
前記主アプリケーションの実行の中断時に、
前記メモリの上位部に記憶されている少なくとも１つのデータ項目であって、前記主アプリケーションの実行を可能にするのに使用される前記少なくとも１つのデータ項目の少なくとも１つの参照を記憶するステップと、
前記主アプリケーションの実行再開をプログラミングした後、前記主アプリケーションの実行再開前に、
前記少なくとも１つの参照に従って、前記メモリの下位部の前記少なくとも１つのデータ項目にアクセスするステップと、
前記メモリの上位部の前記少なくとも１つのデータ項目を記憶するステップと
を含む方法に関する。
【００１５】
したがって、本発明の方法により、アプリケーションの再開時にアプリケーションによって処理されるデータに予測的にアクセスすることができ、ひいては再開時間を低減することができる。
【００１６】
本発明の方法は、前記主アプリケーションの少なくとも１つの構成パラメータにアクセスするステップをさらに含むのが好ましく、前記少なくとも１つのデータ項目にアクセスするステップは前記少なくとも１つのパラメータに従って実行される。
【００１７】
有利には、本発明の方法は、前記少なくとも１つの主アプリケーションが特権アプリケーションであると宣言される事前宣言ステップと、前記少なくとも１つのパラメータを定義するステップとをさらに含む。このような宣言ステップにより、実行されるアプリケーションに従って選択的に、メモリアクセス最適化方法をトリガすることができる。
【００１８】
特定の実施形態によれば、本発明の方法は、前記少なくとも１つのパラメータを検証するステップをさらに含み、前記少なくとも１つのパラメータはデータブロックサイズを定義し、前記少なくとも１つの参照は少なくとも１つのメモリアドレスを含む。したがって、本発明の方法により、メモリアクセスのエラーを防ぐことができる。
【００１９】
さらに特定の実施形態によれば、前記プロセッサは少なくとも２つの論理コアを実装することができ、前記少なくとも２つのプロセスの各々は１つの論理コアによって実行可能であり、前記少なくとも２つの論理コアは前記共有メモリを共有し、前記主アプリケーションは前記少なくとも２つの論理コアのうちの一方の論理コアによって実行され、前記少なくとも１つのデータ項目にアクセスするステップおよび少なくとも１つのデータ項目を記憶するステップの実行に関連する命令は、前記少なくとも２つの論理コアの他方のコアに送信される。したがって、本発明の方法により、アプリケーションの実行性能を低下させることなく、主アプリケーションの実行再開に必要なデータへのアクセスを最適化することができる。
【００２０】
前記マイクロプロセッサは、好ましくは、マルチコアプロセッサであり、前記少なくとも２つの論理コアは、データへのアクセスひいては主アプリケーションの実行再開を最適化するのに使用されるメモリ階層の大部分を共有できるように同じ物理コアで実装される。
【００２１】
特定の実施形態によれば、前記少なくとも１つのデータ項目の前記少なくとも１つの参照を記憶するための前記命令および少なくとも１つのデータ項目にアクセスするための前記命令は、前記コンピュータの論理層、例えば、前記コンピュータ内に実装されているオペレーティングシステムの層によって開始される。したがって、本発明の方法は、実装しやすく、ほんの少しの修正が必要なだけである。
【００２２】
さらに、本発明は、コンピュータ上で実行される時に上述した方法のステップの各々を実行するのに適した命令を含むコンピュータプログラムと、取り外し可能または取り外し不可能な情報記憶手段であって、上述した方法のステップの各々を実行するためのコンピュータプログラムのコード命令を含むコンピュータまたはマイクロプロセッサによって部分的または全体的に読み取り可能な情報記憶手段とに関する。
【００２３】
このコンピュータプログラムおよび記憶手段によって得られる利点は、上述した利点と同様である。
【００２４】
本発明の他の利点、目的、および特徴は、添付図面に関して非限定的な例として説明されている以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【００２５】
【図１】クラスタのトポロジの一例を示す図である。
【図２】クラスタのノードのアーキテクチャの一例を示す図である。
【図３】データ処理システムにおけるメモリの階層編成を示す図である。
【図４ａ】データを予測的にプリロードする本発明の基本概念を示す図である。
【図４ｂ】データを予測的にプリロードする本発明の基本概念を示す図である。
【図５】本発明を実装する２つの論理コアを備えるプロセッサコアの命令のシーケンスの一例を示す図である。
【図６ａ】図５に関して説明されたマイクロプロセッサのレベルＬ１のキャッシュメモリのコンテンツからの異なる瞬間におけるデータ抽出を示す図である。
【図６ｂ】図５に関して説明されたマイクロプロセッサのレベルＬ１のキャッシュメモリのコンテンツからの異なる瞬間におけるデータ抽出を示す図である。
【図６ｃ】図５に関して説明されたマイクロプロセッサのレベルＬ１のキャッシュメモリのコンテンツからの異なる瞬間におけるデータ抽出を示す図である。
【図６ｄ】図５に関して説明されたマイクロプロセッサのレベルＬ１のキャッシュメモリのコンテンツからの異なる瞬間におけるデータ抽出を示す図である。
【図７ａ】主アプリケーションに「メモリ供給」機能を付与するためにオペレーティングシステムにおいて実施されるアルゴリズム例の特定のステップを示す図である。
【図７ｂ】主アプリケーションに「メモリ供給」機能を付与するためにオペレーティングシステムにおいて実施されるアルゴリズム例の特定のステップを示す図である。
【図８】主アプリケーションの実行再開を最適化することができるメモリロードの子プロセスによって実施されるアルゴリズム例の特定のステップを示す図である。
【図９】クラスタに属するノードのマイクロプロセッサであって、この場合、２つの論理コアを実装する２つのコアを備えるマイクロプロセッサの論理アーキテクチャの概略図である。
【発明を実施するための形態】
【００２６】
本発明は、全般的に、第１のアプリケーションの実行再開を最適化するために、第１のアプリケーションの実行中断に関連して実行される第２のアプリケーションの実行時に、キャッシュメモリを予測ロードして第１のアプリケーションの実行に関連したデータをロードするためのメカニズムを目的とする。
【００２７】
ここで、特定のマイクロプロセッサは複数の論理コアを備えることを思い出されたい。これらのマイクロプロセッサは、複数の物理コアを備え、一般に、各々が複数の論理コアを実装するのに適している。「同時マルチスレッディング」（Ｉｎｔｅｌ実装（Ｉｎｔｅｌは商標）の「ハイパースレッディング」）と呼ばれるこの技術により、「スレッド」と呼ばれる複数の基本プロセスをマイクロプロセッサの物理コアで並行して実行することができる。したがって、この技術を実装する物理コアは、一般に、物理コアを利用する論理層によってデュアルコアとして認識される。
【００２８】
この技術を実装する物理コアは、論理コア間で共有されるリソースと各々の論理コアに固有のリソースとを備える。共有リソースは、典型的には、実行ユニット、キャッシュメモリ、およびバスインタフェースである。固有リソースは、特に、論理コアのデータおよび命令のレジスタ、セグメントレジスタ、コントロールレジスタおよび割り込みコントローラ（ＡＰＩＣ（Ａｄｖａｎｃｅｄ  Ｐｒｏｇｒａｍｍｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）と呼ばれる）レジスタである。
【００２９】
しかしながら、この技術により、特定のアプリケーションに対して、特に画像処理アプリケーションに対してマイクロプロセッサの性能を大幅に向上させることができるが、他のアプリケーションに対して、特に科学計算アプリケーションに対しては、性能がわずかに向上するのみである、あるいは低下することが分かった。したがって、一般に、高性能コンピューティングに使用されるクラスタでは、この技術は無効にされる。
【００３０】
しかしながら、この技術により、１つの論理コアにつき限定数の命令を他方の論理コアによって実行される別のアプリケーションの実行を妨げずに実行することができるので、本発明はこの技術を使用して、補助アプリケーションが実行される時にキャッシュメモリの予測ロードを可能にすることができる。したがって、所与の時点で、第１の論理コアは補助アプリケーションの実行に関連付けられるが、第２の論理コアは主アプリケーション（すなわち、特権アプリケーション）に関連するデータを有するキャッシュメモリを予測ロードするのに使用される。
【００３１】
したがって、本発明によれば、第１のプロセス、例えば、ＨＰＣタイプのアプリケーションプロセスは、第１のプロセスが中断された後に第１のプロセスの実行に必要なデータをキャッシュメモリに戻す機能を有する子プロセスと呼ばれる第２のプロセスによって支援される。データは、第１のプロセスの実行再開を最適化する段階の前に戻される。これらのプロセスは、有利には、使用されるハードウェア要素に関連するコストを増加させずに第１のプロセスの実行性能を最適化するために、物理コアの２つの論理コアで実装される。このようなメカニズムは、遷移「プリフェッチ」と見なされる場合もあるが、この場合、「メモリ供給」と呼ばれる。
【００３２】
図４ａおよび図４ｂは、本発明の基本概念を示している。より具体的には、図４ａは、２つの論理コアを実装することができるが１つの論理コアは使用されないマイクロプロセッサのタスクの実行再開時の順序付けを示す図であるが、図４ｂは、同じマイクロプロセッサのタスクの実行再開時に、両方の論理コアが本発明を実行するのに使用される場合の順序付けを示す図である。
【００３３】
この場合、主アプリケーションを実行するのに使用されるプロセッサは、２つの論理コア４０５−１および４０５−２を実装する物理コア４００を備える。コア４００の右側の線は、時間に対して、論理コア各々によって実行されるタスクを示している。符号４１０は、この場合、メモリ階層の深さを示している。下位部は、階層の下位部、すなわち、下位レベルメモリ（マイクロプロセッサから最も遠いメモリ）を示し、上位部は、階層の上位部、すなわち、上位レベルメモリ（マイクロプロセッサに最も近いメモリ）を示す。したがって、上位レベルメモリにないデータ項目を処理するために、そのデータ項目にアクセスするための命令は、下位レベルのメモリにあるそのデータ項目を探すために下に降りて、その後、そのデータ項目を引き上げなければならない。
【００３４】
図４ａに示されているように、論理コア４０５−２が使用されない場合、論理コア４０５−１が全てのタスクを実行する。この場合、主アプリケーションの実行が所与の時間で中断されて（図示せず）、主アプリケーションの補助アプリケーション、例えば、その一部であるタスク４１５を実行すると考えられる。このタスクの実行時に、主アプリケーションに関連するデータを含むキャッシュメモリはこのデータを取り出して空にし、その代わりに補助アプリケーションに関連するデータを受信する。したがって、主アプリケーションの実行再開時に、４２０の時点で、主アプリケーションのタスク４２５は、そのタスクの実行に必要なデータにアクセスするための時間に相当する期間４３０の間保留される。これらのデータにアクセスするための時間は、メモリ階層の深さを通過する矢印（下降および上昇）で示されている。符号４２５’で示されるように、主アプリケーションの実行はデータが利用可能になるとすぐに再開される。探し出されたデータは、通常、マイクロプロセッサに最も近いメモリに存在しなくなるが、最も遠いメモリに常に存在するとも限らない。したがって、期間４３０の時間は、メモリ階層内で探し出されたデータの位置に関連した可変である。
【００３５】
物理コアの２つの論理コアが本発明を実行するのに使用される場合、論理コアの一方、例えば、論理コア４０５−１は、主アプリケーションおよび補助アプリケーション、特にデーモンを実行するのに使用され、他方の論理コア、この場合、論理コア４０５−２は、主アプリケーションに関連し遷移「プリフェッチ」を可能にするアプリケーションを実行するのに使用される。図４ｂに示されているように、補助アプリケーションのタスク４１５は、主プログラムの実行の中断に関連して論理コア４０５−１によって実行されてもよい。並行して、論理コア４０５−２は、データをマイクロプロセッサに最も近いメモリ、典型的には、レベルＬ１のキャッシュメモリにロードするのに使用されるが、これは主アプリケーションの再開時の実行に必要となる。この主アプリケーションの実行再開を可能にするデータにアクセスするタスクは、この場合、符号４３５で示されている。したがって、４４０で示された主アプリケーションの実行再開時には、その実行に必要なデータはマイクロプロセッサに近いメモリに存在し、マイクロプロセッサがデータの取得を待たなくても主アプリケーションのタスク４４５を実行することができる。符号１３０’で示されているこれらのデータにアクセスするための時間は、補助アプリケーションの実行によってマスクされた時間である。したがって、主アプリケーションの実行には弊害をもたらさない。
【００３６】
この場合、主アプリケーションに関連するデータをロードするという点では、論理コアによって実行される主アプリケーションと第２の論理コアによって実行される補助アプリケーションとの協調形態は、厳密である場合もあれば厳密でない場合もあることが分かる。強調形態が厳密である場合は、アプリケーション間の明示的な同期が必要であるが、厳密でない場合は、アプリケーションは互いに独立して実行され、データをロードするための補助アプリケーションが主アプリケーションのメモリに関して必要性を認識することができる。
【００３７】
有利には、メモリ参照は、主アプリケーションの実行再開時に対応するメモリアクセス時間を短くするために補助アプリケーションが主アプリケーションのメモリアクセスを予測できるようにするのに使用される。主アプリケーションのコンパイラのデータに基づいて行われた静的解析から、メモリマッピングが取得されてもよい。このメモリマッピングにより、時分割に関連して、主アプリケーションのメモリアクセスが予測できるメモリブロックを指定することができる。また、マッピングは、動的な場合もあり、アプリケーション自体によって残されたメモリコンテキストの読出トレースから、またはハードウェアオペレーティングシステムのコンテキストを変換するためのコードにより、またはプロセス間のメカニズムによって推定される場合もある。
【００３８】
図５は、本発明を実装する２つの論理コアを備えるプロセッサコアの命令のシーケンスの一例を示す図である。図５と並行して説明される図６ａ〜図６ｄは、図５に関して説明されるマイクロプロセッサのレベルＬ１のキャッシュメモリのコンテンツからの異なる時間におけるデータ抽出を示す図である。
【００３９】
図５において、符号５００−１および５００−２は、第１および第２の論理コアに対応する第１および第２の命令エンジンの命令シーケンスをそれぞれ表している。第１の命令エンジンは、複数のアプリケーション、特に、ＨＰＣ主アプリケーションおよびオペレーティングシステムの補助タスクの実行のために使用される。第２の命令エンジンは、第１の命令エンジン、この場合、ＨＰＣ計算アプリケーションによって実行される主アプリケーションに関連するデータのロードを可能にする補助アプリケーションを実行するためのものである。
【００４０】
時間ｔ０とｔ１との間で、命令シーケンス５００−１に対応する論理コアによって実行される命令は、符号５０５−１で示されるＨＰＣ計算用の主アプリケーションの命令である。時間ｔ１とｔ２との間で、命令シーケンス５００−１に対応する論理コアによって実行される命令は、符号５１０−１で示されるオペレーティングシステムのタスクの命令である。
【００４１】
ｔ１の時点で、「プリフェッチ」メカニズムが通常の方法で実行され、命令５１０−１の実行を最適化するために命令５１０−１に関連するデータがプレロードされる。この場合、マイクロプロセッサコアのレベルＬ１のキャッシュメモリは、図６ａに示されるように、基本的に、前に実行されたＨＰＣ計算用の主アプリケーションに関連するデータと、オペレーティングシステムの実行タスクに関連する少数のデータとを含む。
【００４２】
さらに、ＨＰＣ計算用の主アプリケーションは特権アプリケーションとして参照されるので、このアプリケーションの実行が中断されると実行コンテキストが記憶される。すなわち、キャッシュメモリに存在するデータのアドレスは、主アプリケーションの実行再開の前に、そのアドレスを後でロードできるように記憶される。
【００４３】
時間ｔ２とｔ３との間で、命令シーケンス５００−１に対応する論理コアによって実行される命令は、符号５１５で示される第１の補助アプリケーションの命令である。同様に、時間ｔ３とｔ４との間で、命令シーケンス５００−１に対応する論理コアによって実行される命令は、上述した符号５１０−２で示されるオペレーティングシステムのタスクの命令である。同様に、時間ｔ４とｔ５との間で、命令シーケンス５００−１に対応する論理コアによって実行される命令は、５２０で示される第２の補助アプリケーションの命令である。時間ｔ５とｔ６との間で、命令シーケンス５００−１に対応する論理コアによって実行される命令は、上述した符号５１０−３で示されるオペレーティングシステムのタスクの命令である。同様に、時間ｔ６とｔ７との間で、命令シーケンス５００−１に対応する論理コアによって実行される命令は、５２５で示される第３の補助アプリケーションの命令である。したがって、マイクロプロセッサコアのレベルＬ１のキャッシュメモリは、図６ｂに示されるように、実行されるオペレーティングシステムのタスクに関連するデータと、第１、第２および第３の補助アプリケーションに関連するデータとを含む。
【００４４】
時間ｔ０〜ｔ７の間で、命令シーケンス５００−２に対応する論理コアには実行する命令がない。
【００４５】
時間ｔ７の時点で、主アプリケーションの実行再開前に主アプリケーションに関連するデータを予測ロードできるようにする「メモリ供給」メカニズムが実装される。この時点で、命令シーケンス５００−２に対応する論理コアは、アドレスが主プログラムの中断時に記憶されているキャッシュメモリにデータをロードするための命令５３０を実行する。
【００４６】
したがって、時間ｔ７とｔ８との間で、命令シーケンス５００−１に対応する論理コアによって実行される命令は、符号５１０−４で示される上述のオペレーティングシステムのタスクの命令であるが、命令シーケンス５００−２に対応する論理コアによって実行される命令は、アドレスが主プログラムの中断時に記憶されているキャッシュメモリにデータをロードできるようにする命令である。
【００４７】
ｔ８の時点で、マイクロプロセッサコアのレベルＬ１のキャッシュメモリは、図６ｃに示されるように、オペレーティングシステムの実行されるタスクに関連するデータと、第２および第３の補助アプリケーションに関連するデータ、すなわち、実行される最後の命令に関連するデータと、主アプリケーションに関連するデータであって、主アプリケーションの実行の最適な再開を可能にするデータとを含む。主プログラムの実行は、符号５０５−２で示されるように、この時点で再開される。この時点から、命令シーケンス５００−２に対応する論理コアにはさらに実行する命令はない。
【００４８】
図６ｄに示されるように、ｔ９時点で、マイクロプロセッサコアのレベルＬ１のキャッシュメモリは、基本的に、ＨＰＣ計算用の主アプリケーションに関するデータと、前に実行されたオペレーティングシステムのタスクに関連する少数のデータであって、ＨＰＣ計算用の主アプリケーションに関連するデータに置き換えられていない少数のデータとを含む。
【００４９】
したがって、論理コアの１つで実行される主アプリケーションは、同じ物理コアの別の論理コアで実行される子プロセスによって支援される。この子プロセスは、主アプリケーションが要求データを取得するのを待つ間に要する待機サイクルを省く段階の前に（待機サイクル数を低減する）、主アプリケーションに必要なデータをメモリに戻すタスクを行う。
【００５０】
すなわち、本発明は、特に、使用されるオペレーティングシステムと物理コアに属する１つの論理コアによって実行されるメモリロードプロセスとの間の協調メカニズムの導入を目的とする。物理コアの別の論理コアは主アプリケーションを実行し、これらの論理コアはメモリ階層の少なくとも一部を共有する。
【００５１】
したがって、典型的には、１つの論理コアで起動されるオペレーティングシステムが、呼び出された時、または要求された時に、「メモリ供給」機能を使用できるようにする子プロセスを特定する。この子プロセスは、主アプリケーションと見なされる、すなわち、例えば、特定の特権を有すると宣言されたアプリケーションにのみ使用される。アプリケーションがこのような特権を有すると宣言された場合、オペレーティングシステムが特権およびパラメータ化に関して必要なチェックを行うことに留意されたい。チェック後に承認された場合、主アプリケーションは、実行が中断された時に「メモリ供給」機能にアクセスしてもよい。
【００５２】
主アプリケーションが中断された場合、オペレーティングシステムは、中断される前にアプリケーションによって使用されたメモリゾーンのマーカを記憶する。これらのマーカが記憶された後、オペレーティングシステムは、前に主アプリケーションを実行した論理コアによって後で実行される新しい非特権タスクを選択してもよい。このようなマーカは、例えば、データセットを特定するアドレスおよび長さによって形成される組である。
【００５３】
オペレーティングシステムは、スケジューラを介して主アプリケーションの実行再開を決定すると、子プロセスによる「メモリ供給」機能を指示する。その後、子プロセスは、オペレーティングシステムが保存しているメモリゾーンの参照に基づいて読み出し動作をトリガする。したがって、メモリ間隔を短くし、コンテキスト変換の再開の度に待機サイクルを省くことになる。
【００５４】
有利には、主アプリケーションは、「メモリ供給」機能への呼び出しを、オペレーティングシステムを使用してそのサービスを起動または解除することで制御してもよい。
【００５５】
当然、主アプリケーションと子プロセスとは、メモリ階層の少なくとも一部が共有される環境で実行されなければならない。したがって、主アプリケーションと子プロセスとは、同じ物理コアの２つの論理コアによって実行されるのが好ましい。
【００５６】
主アプリケーションと、「メモリ供給」機能を使用できるようにするメモリロードの子プロセスとの間で上述したインタフェースを実装するのに、ＯｐｅｎＣＬ規格が使用されてもよい。このようなインタフェースで使用される関数は、例えば、以下の関数である：
−アプリケーションに対して使用されるオペレーティングシステムの「メモリ供給」機能を生成する関数、
ｃｌ＿ｉｎｔ  ｃｌＭＦｅｅｄＱｕｅｒｙ（
ｃｌ＿ＭＦｅｅｄ  ＊ｍｆ）
ここで、ｍｆは、型がｃｌ＿ＭＦｅｅｄである関数のパラメータを示す。
−「メモリ供給」機能の利益を享受するために、アプリケーションにオペレーティングシステムと特権的関係であるアプリケーションであると宣言させる関数、
ｃｌ＿ｉｎｔ  ｃｌＭＦｅｅｄＤｅｃｌａｒｅ（
ｃｌ＿ＭＦｅｅｄ  ｍｆ，
ｃｌ＿ＭＦｅｅｄＰａｒａｍｓ  ＊ｍｆｐａｒａｍｓ）
ここで、ｍｆは、型がｃｌ＿ＭＦｅｅｄである関数のパラメータを示し、ｍｆｐａｒａｍｓは、型がｃｌ＿ＭＦｅｅｄＰａｒａｍｓである関数のパラメータを示す。
【００５７】
有利には、この関数は、特に、「プリフェッチ」されるデータブロックのサイズに関して、「メモリ供給」を実行するための子プロセスと同期させるために、アプリケーションのパラメータ化を変更する。これらのパラメータは重要であり、好ましくは、検証の対象でなければならない。それは、間違ったパラメータ化は、他の実行プロセスに対する悪い影響を強めることになるためである。さらに、
「メモリ供給」サービスを起動する関数および解除する関数、
ｃｌ＿ｉｎｔ  ｃｌＭＦｅｅｄＳｔａｒｔ（
ｃｌ＿ＭＦｅｅｄ  ＊ｍｆ）
ｃｌ＿ｉｎｔ  ｃｌＭＦｅｅｄＳｔｏｐ（
ｃｌ＿ＭＦｅｅｄ  ＊ｍｆ）
ここで、ｍｆは、型がｃｌ＿ＭＦｅｅｄである関数のパラメータを示す。
【００５８】
図７ａおよび図７ｂは、主アプリケーションに「メモリ供給」機能を付与するためにオペレーティングシステムにおいて実施されるアルゴリズム例の特定のステップを示す図である。図７ａは、基本的に、主アプリケーションの実行の中断に関連する段階が対象であり、図７ｂは、主アプリケーションの再開に関する。
【００５９】
この場合、主アプリケーションは予め特権アプリケーションであるとそれ自体宣言しているということ、およびオペレーティングシステムはその「メモリ供給」パラメータを検証済みであるということである。
【００６０】
第１のステップ（ステップ７００）は、中断を検出するためのステップである。中断が検出された場合、次のステップ（ステップ７０５）は、中断が主アプリケーションの実行を保留するための中断であるか否かを決定するテストから成る。
【００６１】
中断が主アプリケーションの実行の保留のための中断である場合、主アプリケーションの実行コンテキストが記憶される（ステップ７１０）。上述したように、このステップにより、特に、主アプリケーションの実行中にメモリ参照を記憶することができる。
【００６２】
反対に、中断が主アプリケーションの実行の保留のための中断でない場合、中断は標準的処理を受ける（ステップ７１５）。
【００６３】
停止されない限り、このアルゴリズムは繰り返されて全ての中断を処理する。
【００６４】
並行して、図７ｂに示されるように、プロセスの実行再開がスケジューラによってプランニングされた場合（ステップ７２０）、再開がプログラミングされたプロセスに対応するアプリケーションが主アプリケーションであるか否かを決定するテストが行われる（ステップ７２５）。
【００６５】
再開がプログラミングされたプロセスに対応するアプリケーションが主アプリケーションである場合、メモリロードするための子プロセスが呼び出されて「メモリ供給」機能が実行される（ステップ７３０）。このステップは、メモリ内のデータをメモリ階層内で引き上げるためのステップであり、メモリ参照は、主アプリケーションのパラメータ（アプリケーションが主アプリケーションとして宣言される時に設定される）に従って主アプリケーションの実行コンテキストを記憶する時に記憶されている。この場合、子プロセスは、好ましくは、物理コアに属する１つの論理コアによって実行され、物理コアは主アプリケーションの実行に使用される別の論理コアを備えるので、子プロセスと主アプリケーションとはメモリ階層の少なくとも一部を共有することを思い出されたい。これは、主アプリケーションに関連するブロックのサイズに従って予め記憶されているアドレスのメモリ内のデータを探すことが目的である。
【００６６】
停止されない限り、このアルゴリズムは繰り返されて全てのアプリケーション実行再開を処理する。
【００６７】
図８は、主アプリケーションの実行再開を最適化することができるメモリロードの子プロセスによって実施されるアルゴリズム例の特定のステップを示す図である。
【００６８】
呼び出された後、メモリロードの子プロセスは、主アプリケーションの実行が中断された時に予め記憶されている参照にアクセスし（ステップ８００）、さらにアプリケーションに関連するパラメータにもアクセスする。記憶されている参照は、特に、データアドレスを含むが、パラメータは、特に、「プリフェッチ」されるデータブロックのサイズおよび同期情報を含む。
【００６９】
上述したように、主アプリケーションと異なるプロセスを実行することにより、主アプリケーションによって使用されるデータは、通常、マイクロプロセッサの近く、すなわち、メモリ階層の上位部、特に、レベルＬ１のキャッシュメモリで記憶されなくなり、下位部で記憶される。したがって、アクセスされた参照が標準メカニズムにしたがって使用されて、メモリ階層内で見つけられるこれらのデータにアクセスする（ステップ８０５）。このメカニズムに従って、第１のメモリレベル、例えば、Ｌ１キャッシュメモリで、データがこのレベルに存在するか否かを決定するテストが行われる。データがこのレベルに存在する場合、データは所定のパラメータに従ってアクセスされる。データがこのレベルに存在しない場合、第１のメモリレベルより低い第２のメモリレベル、例えば、Ｌ２キャッシュメモリにおいて、データがそのレベルに存在するか否かを決定する別のテストが行われる。したがって、探されるデータがそれぞれのメモリレベルに存在するかを次から次へとテストすることで、データは最高レベルで見つけられる。
【００７０】
その後、アクセスデータは、所定のパラメータに従ってメモリの上位部に記憶される（ステップ８１０）。この場合、破線を使用して示唆されるように、このステップは、通常、子プロセスによって明示的に実行されないことが分かる。正確には、このステップは、データへのアクセスの結果である。このステップは、ハードウェア呼び出しのカスケード効果によってアクセスする時に、マイクロプロセッサによって自動的に行われる。
【００７１】
上述したように、クラスタのノードで使用可能な多数のマイクロプロセッサは、「同時マルチスレッディング」（Ｉｎｔｅｌ実装（Ｉｎｔｅｌは商標）の「ハイパースレッディング」）と呼ばれる技術を実装する。これらのマイクロプロセッサが使用される時、この技術は起動されてもよいし、起動されなくてもよい。
【００７２】
図９は、クラスタに属するノードのマイクロプロセッサであって、この場合、各々が２つの論理コアを実装する２つの物理コアを備えるマイクロプロセッサ、すなわち、高性能コンピューティングアプリケーションの実行時に「同時マルチスレッディング」が起動されているマイクロプロセッサの論理アーキテクチャの概略図である。各々の物理コアは、この場合、各々の物理コアに実装される異なる実行ユニットがあるために、同じサイクルで最高４つの命令を実行することができる。したがって、２つの論理コアは、それぞれ他方のコアの使用に応じて、最高４つの命令を実行してもよい。
【００７３】
図示されているように、物理コア９００−１および９００−２は、システムバス９０５によって接続される。システムバス９０５には、特に、通信インタフェースおよびメモリが接続される。各々の物理コアは、論理コア間で共有される実行ユニットと、各々の論理コアに固有の命令レジスタとを備える。
【００７４】
したがって、物理コア９００−１は、実行ユニットの組９１０−１と、物理コア９００−１の第１の論理コアに接続される命令レジスタ９１５−１１および物理コア９００−１の第２の論理コアに接続される命令レジスタ９１５−１２とを含む。同様に、物理コア９００−２は、実行ユニットの組９１０−２と、物理コア９００−２の第１の論理コアに接続される命令レジスタ９１５−２１および物理コア９００−２の第２の論理コアに接続される命令レジスタ９１５−２２とを含む。
【００７５】
論理コアの各々によって実行される命令は、この場合、黒い四角で示されている。したがって、図示されているように、命令レジスタ９１５−１１および９１５−２１に関連付けられた論理コアは、メモリレジスタ９１５−２１および９１５−２２に関連付けられた論理コアによって実行されるメモリ管理の子プロセスを除いて、アプリケーションおよびオペレーティングシステムを実行する役目をして、命令レジスタ９１５−１１および９１５−２１に関連付けられた論理コアによって実行される主アプリケーションの迅速な再開を可能にする。
【００７６】
当然、特定の要求を満たすために、当業者は、上述の記述に修正を加えることが可能である。
【図１】
2013534670.tif 000003
【図２】
2013534670.tif 000004
【図３】
2013534670.tif 000005
【図４ａ】
2013534670.tif 000006
【図４ｂ】
2013534670.tif 000007
【図５】
2013534670.tif 000008
【図６ａ】
2013534670.tif 000009
【図６ｂ】
2013534670.tif 000010
【図６ｃ】
2013534670.tif 000011
【図６ｄ】
2013534670.tif 000012
【図７ａ】
2013534670.tif 000013
【図７ｂ】
2013534670.tif 000014
【図８】
2013534670.tif 000015
【図９】
2013534670.tif 000016
【国際調査報告】
2013534670.tif 000017
2013534670.tif 000018
2013534670.tif 000019
2013534670.tif 000020