(57)【要約】【課題】マルチプロセッサ・コンピュータ・システムの２プロセッサ・ノードの２つのプロセッサの間でコヒーレンスを管理する方法および装置を提供すること。【解決手段】全般的に、本発明は、メッセージ受渡並列コンピュータでのキャッシュ・コヒーレンスの管理を単純化し、大幅に高速化するソフトウェア・アルゴリズムと、このキャッシュ・コヒーレンス・アルゴリズムを支援するハードウェア装置に関する。ソフトウェア・アルゴリズムでは、put/getウィンドウのオープンおよびクローズを使用して、キャッシュ・コヒーレンスを達成するのに必要なアクティビティを調整する。ハードウェア装置は、ノードの物理メモリ・アドレス空間内で、（ａ）実際には存在せず、（ｂ）したがって、処理要素からの読取要求および書込要求に即座に応答することができる、仮想メモリの区域を作成する、ハードウェア・アドレス・デコードに対する拡張とすることができる。
2005507097.tif 000002
【特許請求の範囲】
【請求項１】
複数の非コヒーレント・プロセッサ要素を含むメッセージ受渡並列スーパーコンピュータでのキャッシュ・コヒーレンスの管理を単純化し、高速化する方法であって、１つのプロセッサ要素が、主に計算を実行している間に、他方のプロセッサ要素が、メッセージ受渡アクティビティを実行しており、前記方法が、
put/getウィンドウをオープンし、クローズするステップと、
キャッシュ・コヒーレンスを達成するアクティビティを実行するステップと、
前記キャッシュ・コヒーレンスを達成するアクティビティを調整するために前記put/getウィンドウをオープンし、クローズするステップを使用するステップと
を含む、方法。
【請求項２】
前記方法が、ソフトウェア・アルゴリズムによって実施される、請求項１に記載の方法。
【請求項３】
前記使用するステップが、送出されるデータがどちらのプロセッサのキャッシュにもないことと、受け取られるデータも、どちらのプロセッサのキャッシュにもないこととを保証するステップを含む、請求項１に記載の方法。
【請求項４】
前記保証するステップが、ソフトウェア・コマンドを発行することによってデータをキャッシュにロードするステップを含む、請求項３に記載の方法。
【請求項５】
複数の非コヒーレント・プロセッサ要素を含むメッセージ受渡並列スーパーコンピュータでのキャッシュ・コヒーレンスの管理を単純化し、高速化する方法ステップを実行するために計算機によって実行可能な命令のプログラムを有形に実施する、前記計算機によって可読のプログラム記憶装置であって、１つのプロセッサ要素が、主に計算を実行している間に、他方のプロセッサ要素が、メッセージ受渡アクティビティを実行しており、前記方法ステップが、
put/getウィンドウをオープンし、クローズするステップと、
キャッシュ・コヒーレンスを達成するアクティビティを実行するステップと、
前記キャッシュ・コヒーレンスを達成するアクティビティを調整するために前記put/getウィンドウをオープンし、クローズするステップを使用するステップと
を含む、プログラム記憶装置。
【請求項６】
前記使用するステップが、送出されるデータがどちらのプロセッサのキャッシュにもないことと、受け取られるデータも、どちらのプロセッサのキャッシュにもないこととを保証するステップを含む、請求項５に記載のプログラム記憶装置。
【請求項７】
前記保証するステップが、ソフトウェア・コマンドを発行することによってデータをキャッシュにロードするステップを含む、請求項６に記載のプログラム記憶装置。
【請求項８】
複数の非コヒーレント・プロセッサ要素を含むメッセージ受渡並列スーパーコンピュータでのキャッシュ・コヒーレンスの管理を単純化し、高速化するシステムであって、１つのプロセッサ要素が、主に計算を実行している間に、他方のプロセッサ要素が、メッセージ受渡アクティビティを実行しており、前記システムが、
put/getウィンドウをオープンし、クローズする手段と、
キャッシュ・コヒーレンスを達成するアクティビティを実行する手段と、
前記キャッシュ・コヒーレンスを達成するアクティビティを調整するために前記put/getウィンドウのオープンおよびクローズを使用する手段と
を含む、システム。
【請求項９】
前記使用する手段が、送出されるデータがどちらのプロセッサのキャッシュにもないことと、受け取られるデータも、どちらのプロセッサのキャッシュにもないこととを保証する手段を含む、請求項８に記載のシステム。
【請求項１０】
前記保証する手段が、ソフトウェア・コマンドを発行することによってデータをキャッシュにロードする手段を含む、請求項９に記載のシステム。
【請求項１１】
複数の非コヒーレント処理要素を含むメッセージ受渡並列コンピュータでキャッシュ・コヒーレンスを達成するのを支援するハードウェア装置であって、１つの処理要素が、主に計算を実行している間に、第２の処理要素が、メッセージ受渡アクティビティを実行しており、前記ハードウェア装置が、
ノードの物理メモリ・アドレス空間内で、（ａ）実際には存在せず、（ｂ）したがって、処理要素からの読取要求および書込要求に即座に応答することができる仮想メモリの区域を作成するメモリ・コントローラ
を含む、ハードウェア装置。
【請求項１２】
前記メモリ・コントローラが、プロセッサが絶対に使用しないガーベジ・データを、プロセッサのキャッシュにプルできるようにし、これによって、最適の性能で、修正されたデータを追い出し、未修正のデータを置き換える、請求項１１に記載のハードウェア装置。
【請求項１３】
前記ガーベジ・データが、実際にメモリから取り出される必要があるのではなく、前記メモリ・コントローラが即座に応答することだけが必要である、請求項１２に記載のハードウェア装置。
【請求項１４】
実際に修正されたデータだけが、キャッシュからメモリに書き込まれ、クリーン・データが、単純に即座に破棄される、請求項１３に記載のハードウェア装置。
【請求項１５】
put/getウィンドウの総サイズが、プロセッサのキャッシュのサイズを超える時に、この形でのキャッシュのクリーニングが、通信区域からのデータがキャッシュに残っていないことを保証するのに必要な作業の総量に関する上限を提供する、請求項１４に記載のハードウェア装置。
【請求項１６】
複数の非コヒーレント処理要素を含むメッセージ受渡並列コンピュータでキャッシュ・コヒーレンスを達成するのを支援するコンピュータ・ハードウェア装置を動作させる方法であって、１つの処理要素が、主に計算を実行している間に、第２の処理要素が、メッセージ受渡アクティビティを実行しており、前記方法が、
ノードの物理メモリ・アドレス空間内で、（ａ）実際には存在せず、（ｂ）したがって、処理要素からの読取要求および書込要求に即座に応答することができる仮想メモリの区域を作成するのにメモリ・コントローラを使用するステップ
を含む、方法。
【請求項１７】
前記メモリ・コントローラが、プロセッサが絶対に使用しないガーベジ・データを、プロセッサのキャッシュにプルできるようにし、これによって、最適の性能で、修正されたデータを追い出し、未修正のデータを置き換える、請求項１６に記載の方法。
【請求項１８】
前記ガーベジ・データが、実際にメモリから取り出される必要があるのではなく、前記メモリ・コントローラが即座に応答することだけが必要である、請求項１７に記載の方法。
【請求項１９】
実際に修正されたデータだけが、キャッシュからメモリに書き込まれ、クリーン・データが、単純に即座に破棄される、請求項１８に記載の方法。
【請求項２０】
put/getウィンドウの総サイズが、プロセッサのキャッシュのサイズを超える時に、この形でのキャッシュのクリーニングが、通信区域からのデータが前記キャッシュに残っていないことを保証するのに必要な作業の総量に関する上限を提供する、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば生命科学の分野の計算に適用される、分散メモリ・メッセージ受渡並列コンピュータの設計およびシステム・ソフトウェアの分野に関する。
【背景技術】
【０００２】
米国仮出願番号６０／２７１，１２４、表題「A Novel Massively ParallelSupercomputer」に、広範囲のアプリケーションにテラＯＰＳ（１兆演算毎秒）程度の処理能力を引き渡すように設計された、３次元トーラスの形の超並列スーパーコンピュータ・アーキテクチャが記載されている。このアーキテクチャには、６４×３２×３２の３次元トーラスとして編成された６５５３６個の処理ノードが含まれ、各処理ノードは、６つの隣接するノードに接続される。
【０００３】
このスーパーコンピュータ・アーキテクチャの各処理ノードは、２つの電子プロセッサ（他の構成要素の中でも）を含む半導体デバイスである。これらのプロセッサの１つが、「計算プロセッサ」と指定され、共通構成動作で、アプリケーション計算専用になる。他方のプロセッサは、「入出力プロセッサ」であり、これは、共通動作モードで、メッセージ受渡通信をサポートするアクティビティの実行専用のサービス・プロセッサである。これらのプロセッサのそれぞれに、別々の第１レベル・キャッシュ（Ｌ１）が含まれ、このＬ１に、両方のプロセッサによってアクセスされる共通メモリに保管されたデータのコピーを含めることができる。一方のプロセッサが、メモリ位置のＬ１コピーを変更し、他方のプロセッサが同一位置のコピーを有する場合に、２つのコピーは、同一になるようにされる場合に「コヒーレント」になる。
【０００４】
メッセージ受渡は、プロセッサがそれ自体のメモリから別のノードのメモリへデータを明示的にコピーする、一般に知られた形のコンピュータ通信である。上記の米国仮出願番号６０／２７１，１２４で開示された二重プロセッサ・ノードでは、入出力プロセッサが、主に、ノードの共通メモリと他のノードの共通メモリとの間のメッセージ受渡を容易にするのに使用される。したがって、入出力プロセッサは、計算プロセッサによって消費されるデータを作ること（メッセージが受け取られる時）と、計算プロセッサによって作られるデータを消費すること（メッセージを送出するために）の両方を行う。その結果、両方のプロセッサが、そのＬ１に同一メモリ位置のコピーを有することが、非常に一般的である。渡されるメッセージが、小さく、多数である場合に、この問題が悪化する。したがって、大規模な回路なしで、性能に対する影響を最小限にして、各プロセッサのＬ１をコヒーレントにする方法を見つける必要が明らかに存在する。
【０００５】
超並列コンピュータが、数千個の処理ノードにスケーリングされる時に、通常のアプリケーション・メッセージング・トラフィックは、ますます増える数のメッセージを伴い、そのようなメッセージのそれぞれに、コンピュータ内の他のノードによって通信される情報が含まれる。一般に、１つのノードは、ローカルに作られたメッセージをある数の他のノードにばらまきながら、ある数のリモートで作られたメッセージをそのローカル・メモリに受け取る。これらの大規模コンピュータの総合性能は、しばしば、システムのメッセージ受渡性能によって制限される。
【０００６】
そのようなデータ転送について、文献（たとえば、http://www.mpi-forum.org/docs/docs.htmlのMPI-2を参照されたい）に記載された共通メッセージ受渡インターフェースを、「ワンサイド通信」と称する。ワンサイド通信では、「put/get」メッセージ受渡パラダイムが使用され、メッセージは、ソース・メモリ・アドレス（getの場合）または宛先メモリ・アドレス（putの場合）を含む。共通問題に対して動作する並列スーパーコンピュータでは、putとgetが、通常は、バッチに組み立てられ、一緒に発行される。これによって、独立に動作するプロセッサが、粗い同期状態に保たれ、性能が最大になる。putおよびgetが発生する時間を、put/getウィンドウと称する。このウィンドウは、時間（それが発生する時）およびメモリ（putメッセージまたはgetメッセージによって運ばれるメモリ・アドレスの範囲）の両方に延びる。図２に、複数の別個のメッセージを有するput/getウィンドウ３０を示す。
【０００７】
put/getウィンドウによって、コヒーレンスの概念が、超並列スーパーコンピュータの異なる処理ノードのプロセッサに拡張される。put/getウィンドウの実装では、ウィンドウがオープンされている時間中にそのウィンドウにputされるすべてのメッセージが、そのウィンドウがクローズされる前にそのウィンドウのメモリに受け取られることを保証しなければならない。同様に、ウィンドウのメモリに対するgetは、そのウィンドウがオープンされている時間中に限って許可される。したがって、put/getウィンドウは、単に、ノードがそのメモリを操作するリモート・プロセッサと同期化する機構である。
【０００８】
put/getウィンドウの管理は、現在は、put/getメッセージのバッファリングまたは明示的同期化メッセージの使用のいずれかによって達成される。メッセージのバッファリングでは、常に制限された容量のメモリが消費される。各ウィンドウの明示的同期化は、ウィンドウにアクセスするすべてのノードの間での往復メッセージの長い待ち時間をもたらす。したがって、同時係属の国際出願番号ＰＣＴ／ＵＳ０２／０５５７１に記載されているような大規模計算機では、バッファリング用のメモリが限られており、特定のウィンドウにアクセスするノードの数が、しばしば、コンピュータ内の処理ノードの数に伴って増えるので、これらの手法はうまくいかない。
【０００９】
コンピュータ設計の分野の長年にわたる問題が、これらのＬ１キャッシュをコヒーレントに保つ方法である。通常の解決策では、他のプロセッサのメモリ・バスの「スヌープ」と称する技法が使用されるが、これは、低速であり、各プロセッサの性能を低下させる。別の方法として、共通メモリ内のデータの古いコピーをＬ１に含むプロセッサが、新しいコピーを要求するか、または古いコピーを廃止とマークすることができるが、これには、コピーが無効になった時を知る必要がある。時々、この知識が不完全であり、不必要なメモリ動作が強制され、さらに性能が低下する。他のコンピュータは、「インターロック」を活用し、これによって、一方のプロセッサが、あるデータを使用する許可を与えられるときは、他方のプロセッサは、当該データの使用を許可されないが、この許可には、２つのプロセッサの間の相互作用が含まれ、これは、通常は、半導体デバイス内の追加の複雑な回路を必要とし、２つのプロセッサの性能が低下する。
【００１０】
一般的に実践されている他の解決策では、共用を意図したメモリ区域のすべてのキャッシングが使用不可にされる。この実践では、共用データへのアクセスだけではなく、これらの区域へのすべてのメモリ・アクセスがペナルティを受ける。
【特許文献１】
米国仮出願番号６０／２７１，１２４
【特許文献２】
国際出願番号ＰＣＴ／ＵＳ０２／０５５７１
【非特許文献１】
http://www.mpi-forum.org/docs/docs.htmlのMPI-2
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明の目的は、並列処理コンピュータ・システムでコヒーレンスを管理するための改良された手順を提供することである。
【００１２】
本発明のもう１つの目的は、大規模な回路なしで、各プロセッサの性能に対する影響を最小にして、マルチプロセッサ・ノードのプロセッサの第１レベル・キャッシュの間のコヒーレンシを達成することである。
【００１３】
本発明のもう１つの目的は、性能を大きく低下させずにコヒーレンスを維持し、プロセッサまたは直接メモリ・アクセス（ＤＭＡ）デバイスの間の効率的な高速メッセージ受渡通信を達成する、ソフトウェア・アルゴリズムと共に機能する方法および装置を提供することである。
【課題を解決するための手段】
【００１４】
上記および他の目的は、本発明の方法および装置によって達成される。第１の態様によれば、本発明は、複数の非コヒーレント処理要素（またはＤＭＡコントローラ）を含み、１つの処理要素が主に計算を実行している間に、他方の要素がメッセージ受渡アクティビティを実行している、（同時係属の国際出願番号ＰＣＴ／ＵＳ０２／０５５７１に記載のような）メッセージ受渡超並列スーパーコンピュータでキャッシュ・コヒーレンスの管理を単純にし、大幅に高速化するソフトウェア・アルゴリズムを提供する。そのような超並列スーパーコンピュータでは、アルゴリズムが、しばしば、一連のステップとして進行し、各ステップは、計算フェーズとそれに続く通信フェーズからなる。通信フェーズでは、ノードが、計算フェーズによって作られた、アルゴリズムの次のステップに必要なデータを交換する。このアルゴリズムの性質のゆえに、フェーズは、通常は、密に同期化され、その結果、通信が、計算機全体で同時に生じる。したがって、put/getウィンドウの同期化を管理するコストを、多数のノードにわたって、各通信フェーズの開始時および終了時に償却することができる。簡単に言うと、グローバル動作を使用して、通信フェーズの開始時に多数のput/getウィンドウをオープンすることができ、第２のグローバル動作を使用して、通信フェーズの終了時にウィンドウをクローズすることができる。
【００１５】
入出力プロセッサは、キャッシュ・コヒーレンスが保証されるまでメッセージを実際に送受することができないので、本発明では、「put」（送出）されるデータが、どちらのプロセッサのキャッシュにもないことと、「get」（受取）されるデータも、どちらのプロセッサのキャッシュにもないことを保証する機構を提供する。「put/getウィンドウ」をオープンまたはクローズする時にこれらのアクティビティを調整することによって、本発明は、コヒーレンスを達成するのに必要な作業の総量を減らし、その作業を多数の個々のメッセージにわたって償却できるようにする。また、１ノード内の両方の処理要素が、この作業を実行しなければならないので、本発明は、これを並行して行えるようにする。さらに、必要な時に、同時係属の国際出願番号ＰＣＴ／ＵＳ０２／０５５７１に記載のグローバル・バリア・ネットワークを使用することによって、これらのアクティビティを超並列計算機の多数の独立のノードにまたがって調整することができる。
【００１６】
第２の態様によれば、本発明は、上で説明したキャッシュ・コヒーレンス・ソフトウェア・アルゴリズムを支援し、put/getウィンドウでのキャッシュ・コヒーレンスの達成に必要な総時間（または待ち時間）を制限するハードウェア装置を提供する。この装置は、ノードの物理メモリ・アドレス空間内で、（ａ）実際には存在せず、（ｂ）したがって、処理要素からの読取要求および書込要求に即座に応答することができる、メモリの区域を作成する、ハードウェア・アドレス・デコーダに対する単純な拡張である。これによって、コヒーレンス・アクティビティがさらに高速化される。というのは、ガーベジ・データ（プロセッサが絶対に使用しない）をプロセッサのキャッシュにプルすることができるようになり、これによって、最適の性能で、修正されたデータが追い出され、未修正のデータが置き換えられるからである。性能が高いのは、このガーベジ・データが、実際にメモリから取り出される必要がなく、メモリ・コントローラが、即座に応答することだけが必要であるからである。
【００１７】
性能が高いのは、修正されたデータだけがキャッシュからメモリに書き込まれ、クリーン・データが単純に即座に破棄されるからでもある。さらに、「put/getウィンドウ」の総サイズが、おそらくは大幅に、プロセッサのキャッシュのサイズを超える場合に、この形でキャッシュをクリーンにすることによって、通信区域からのデータがキャッシュに残っていないことを保証するのに必要な作業の総量の上限が与えられる。上で説明したソフトウェア・アルゴリズムと無関係に、このハードウェア・デバイスが、ＬＲＵ（LeastRecently Used）キャッシュ置換ポリシを使用するコンピュータ・システム全般に有用であることに留意されたい。
【００１８】
また、２つの特定のソフトウェア命令を、本発明の好ましい実施形態で使用することができる。一方の命令を、「データ・キャッシュ・ブロック・フラッシュおよび無効化」と称するが、これを使用して、第１プロセッサのメモリ区域から共用メモリ区域にデータを書き込むと同時に、第１プロセッサがそのメモリ区域に書き込まれるデータを使用しないようにすることができる。第２のソフトウェア命令を、「データ・キャッシュ・ブロック・ゼロ」と称するが、これを使用して、第１プロセッサのメモリ区域から共用メモリにデータを書き込むことができる。これらまたは類似するソフトウェア命令を使用することによって、ソフトウェア・アルゴリズムと共に働く本発明の方法および装置が、性能を大きく低下させずに、コヒーレンスを維持しながら、ノードの間での高速メッセージ受渡通信を達成する。
【００１９】
本発明のさらなる利益および長所は、本発明の好ましい実施形態を指定し、示す、添付図面と共に以下の詳細な説明を検討することから明白になる。
【発明を実施するための最良の形態】
【００２０】
本発明は、マルチプロセッサ・コンピュータ・システムのコヒーレンスを管理する方法および装置に関する。図１に、本発明を実施することができるノード１０を示す。ノード１０のプロセッサ１２および１４のそれぞれが、めいめいのキャッシュ・メモリ区域１６および２０を有し、この２つのプロセッサは、第３のメモリ区域２２を共用する。一般に、本発明は、メッセージ受渡並列コンピュータでのキャッシュ・メモリ・コヒーレンスの管理を単純化し、大幅に高速化するソフトウェア・アルゴリズムと、このキャッシュ・コヒーレンス・アルゴリズムを支援するハードウェア装置に関する。ソフトウェア・アルゴリズムでは、put/getウィンドウのオープンおよびクローズを使用して、キャッシュ・コヒーレンスを達成するのに必要なアクティビティを調整する。ハードウェア装置は、ノードの物理メモリ・アドレス空間内で、（ａ）実際には存在せず、（ｂ）したがって、処理要素からの読取要求および書込要求に即座に応答することができる、物理メモリの区域を作成する、ハードウェア・アドレス・デコードに対する拡張とすることができる。
【００２１】
上で示したように、本発明では、「put/get」データ転送と称する原理を使用する。並列マルチコンピュータが、増加する数のノードにスケーリングされる際に、通常のアプリケーション・メッセージング・トラフィックに、増加する数のメッセージが用いられ、そのような各メッセージに、マルチコンピュータ内の他のノードによって実行される作業が含まれる。一般に、あるノードは、ローカルに作られた作業項目を複数の他のノードに分散する（「put」）と同時に、多数のリモートで作られた作業項目をそのローカル・メモリに組み立てる（「get」）。これらのマルチコンピュータの総合性能は、しばしば、システムのメッセージ受渡性能によって制限される。
【００２２】
そのようなデータ転送に関して、文献（たとえば、http://www.mpi-forum.org/docs/docs.htmlのMPI-2を参照されたい）に記載された、特に効率的なメッセージ受渡インターフェースが、ワンサイド通信として既知である。ワンサイド通信では、「put/get」メッセージ受渡パラダイムが使用され、ここで、メッセージは、ソース・メモリ・アドレス（「get」の場合）または宛先メモリ・アドレス（「put」の場合）を含む。共通問題に対して動作する並列スーパーコンピュータでは、putとgetが、通常は、バッチに組み立てられ、一緒に発行される。これによって、独立に動作するプロセッサが、粗い同期状態に保たれ、共通問題に対するよい性能が可能になる。putおよびgetが発生する時間を、put/getウィンドウと称する。このウィンドウは、時間（それが発生する時）およびメモリ（putまたはgetのデータが存在するメモリ・アドレスの範囲）の両方に延びる。図２に、複数の別個のメッセージを有するput/getウィンドウ３０を示す。
【００２３】
本発明では、このput/getウィンドウを使用して、メモリ・コヒーレンスを管理する単純な手段を提供する。第１の態様によれば、複数の非コヒーレント処理要素（またはＤＭＡコントローラ）を含み、１つの処理要素が主に計算を実行している間に、他方の要素がメッセージ受渡アクティビティを実行している、（同時係属の国際出願番号ＰＣＴ／ＵＳ０２／０５５７１に記載のような）メッセージ受渡超並列スーパーコンピュータでのキャッシュ・コヒーレンスの管理を単純にし、大幅に高速化するソフトウェア・アルゴリズムを提供する。簡単に言うと、このアルゴリズムでは、「put/getウィンドウ」のオープンおよびクローズを使用して、キャッシュ・コヒーレンスの達成に必要なアクティビティを調整する。
【００２４】
具体的に言うと、キャッシュ・コヒーレンスが保証されるまでは、メッセージを実際に送受することができないので、本発明では、「put」（送出）されるデータが、どちらのプロセッサのキャッシュにもないことと、「get」（受取）されるデータも、どちらのプロセッサのキャッシュにもないことを保証する機構を提供する。「put/getウィンドウ」をオープンまたはクローズする時にこれらのアクティビティを調整することによって、本発明は、コヒーレンスを達成するのに必要な作業の総量を減らし、その作業を多数の個々のメッセージにわたって償却できるようにする。また、１ノード内の両方の処理要素が、この作業を実行しなければならないので、本発明は、これを並行して行えるようにする。さらに、必要な時に、同時係属の国際出願番号ＰＣＴ／ＵＳ０２／０５５７１に記載のグローバル・バリア・ネットワークを使用することによって、これらのアクティビティを超並列計算機の多数の独立のノードにまたがって調整することができる。
【００２５】
このアルゴリズムは、下で説明するハードウェアによって支援されるが、この装置がない場合であっても、一般にメッセージ受渡コンピュータに利益をもたらす。装置がない場合に、プロセッサのキャッシュと同一のサイズの、物理メモリの特別な予約された区域が使用されるが、予約された物理区域の各キャッシュ・ラインについてＤＣＢＴ（データ・キャッシュ・ブロック・タッチ）を発行することによってこの物理区域からキャッシュにロードすることによって性能が下がる。
【００２６】
本発明の第２の態様によれば、上で説明したキャッシュ・コヒーレンス・アルゴリズムを支援し、put/getウィンドウでのキャッシュ・コヒーレンスの達成に必要な総時間（または待ち時間）を制限する新規のハードウェア装置が提供される。この装置は、ノードの物理メモリ・アドレス空間内で、（ａ）実際には存在せず、（ｂ）したがって、処理要素からの読取要求および書込要求に即座に応答することができる、仮想メモリの区域を作成する、ハードウェア・アドレス・デコーダに対する単純な拡張である。これによって、コヒーレンス・アクティビティがさらに高速化される。というのは、ガーベジ・データ（プロセッサが絶対に使用しない）をプロセッサのキャッシュにプルすることができるようになり、これによって、最適の性能で、修正されたデータが追い出され、未修正のデータが置き換えられるからである。性能が高いのは、このガーベジ・データが、実際にメモリから取り出される必要がなく、メモリ・コントローラが、即座に応答することだけが必要であるからである。
【００２７】
性能が高いのは、実際に修正されたデータだけがキャッシュからメモリに書き込まれ、クリーン・データが単純に即座に破棄されるからでもある。さらに、「put/getウィンドウ」の総サイズが、おそらくは大幅に、プロセッサのキャッシュのサイズを超える場合に、この形でキャッシュをクリーンにすることによって、通信区域からのデータがキャッシュに残っていないことを保証するのに必要な作業の総量の上限が与えられる。たとえば、フル・アソシアティブ・キャッシュを仮定すると、通信区域が１６メガバイト（共通オカレンス）である場合に、従来のキャッシュ・フラッシュ技法は、（１６ＭＢ／キャッシュ・ラインごとに３２Ｂ＝）５２４２８８個のＤＣＢＦ命令を必要とするが、本明細書に記載のアルゴリズムは、プロセッサのキャッシュが３２キロバイトのサイズで３２バイトのキャッシュ・ラインを有する場合に、多くとも１０００個のＤＣＢＴ命令を必要とする。上で説明したソフトウェア・アルゴリズムと無関係に、このハードウェア・デバイスが、ＬＲＵキャッシュ置換ポリシを使用するコンピュータ・システム全般に有用であることに留意されたい。
【００２８】
２つの特定のソフトウェア実施形態を、下で説明する。第１の実施形態は、受け取られるメッセージのサイズが、Ｌ１のサイズより小さい場合に好ましく、第２の実施形態は、受け取られるメッセージのサイズがＬ１より大きい場合に好ましい。
【００２９】
第１の実施形態：受け取られるメッセージのサイズがＬ１のサイズより小さい場合。
【００３０】
この場合には、本発明は、「データ・キャッシュ・ブロック・フラッシュおよび無効化」（ＤＣＢＦ）と称するソフトウェア命令を活用し、これによって、メモリの連続する範囲が、Ｌ１から共通メモリに書き込まれる。ＤＣＢＦは、PowerPC BookE命令であり、類似する命令が、他のプロセッサについて存在する。それと同時に、キャッシュ内のデータが、無効としてマークされ、共通メモリから内容を再ロードせずに使用することはできない。ＤＣＢＦは、アドレス・ウィンドウ内のすべてのラインについて発行される。
【００３１】
具体的に言うと、ウィンドウが、putまたはgetのためにオープンされる時に、ソフトウェア（通信ライブラリ内の）が、受取り側プロセッサ（二重プロセッサ・ノード内の計算プロセッサ）に、上で説明したように、アドレス・ウィンドウ内のＬ１の内容をフラッシュするように指示する。この簡単な動作によって、共通メモリ内のデータが、計算プロセッサのキャッシュ内のデータと同一であることが保証され、さらに、無効化のゆえに、入出力プロセッサが共通メモリの内容を変更する機会が与えられる。その後、ソフトウェアは、すべての期待されるメッセージが到着するまで進行するように入出力プロセッサに指示する。その後、ソフトウェアは、コンピュータ・プロセッサが命令の処理を継続できるようにし、グローバル「and」を使用して、put/getウィンドウをクローズする。
【００３２】
第２の実施形態：受け取られるメッセージのサイズがＬ１のサイズより大きい場合。
【００３３】
この場合に、本発明では、「データ・キャッシュ・ブロック・ゼロ」（ＤＣＢＺ）と称する命令を利用して、サイズにおいてＬ１と等しい連続する物理アドレス範囲を予約する。ＤＣＢＺでは、ゼロの内容を有する新しいキャッシュ・ラインが作製される。新しいキャッシュ・ラインが使用可能でない場合には、Ｌ１内の別のキャッシュ・ライン（たとえば、使用頻度が最も低いライン）が、そのデータを共通メモリに書き戻され、ＤＣＢＺ命令によって与えられるアドレスでゼロにされる。ＤＣＢＺは、PowerPC BookE命令であり、類似する命令が、他のプロセッサについて存在する。ソフトウェアは、Ｌ１のすべてについて、予約される空間のアドレスを用いてＤＣＢＺを実行し、Ｌ１内のすべてのラインが、フラッシュされる、すなわち、すべての修正されたラインが、共通メモリに書き戻される。その後、ソフトウェアは、計算プロセッサが命令の処理を継続できるようにし、グローバル「and」を使用して、put/getウィンドウをクローズする。
【００３４】
予約される物理空間が、実際に存在する必要はなく、アドレス範囲が保護される（ユーザによって書き込まれず、読み取られない）ことだけが必要であることに留意されたい。この予約されたメモリ空間へのすべての書込が、原則として、メモリ・コントローラによって無視される。この予約されたメモリ空間へのすべての読取によって、原則として、要求元プロセッサＬ１に任意の値を即座に返すことができる。
【００３５】
ＤＣＢＦ命令が、ＤＣＢＺより低速である場合に、オペレーティング・システムが、Ｌ１より小さいメッセージについてＤＣＢＺ命令を使用することができ、逆も同様であることに留意されたい。
【００３６】
本発明を使用すると、入出力プロセッサは、すべての通信メモリ空間がそのＬ１キャッシュへのライトスルーとマークされている場合に、キャッシュをフラッシュする必要がない。
【００３７】
上で述べたグローバル「and」を短い時間間隔で行うことによって、put/getウィンドウを一時的に狭くすることができるが、これは、関連する国際出願番号ＰＣＴ／ＵＳ０２／０５６１８に詳細に記載されている。
【００３８】
本明細書で開示された発明が、前に述べた目的を満たすように十分に考慮されていることは明白であるが、多数の修正形態および実施形態を当業者が考案できることを諒解されたい。添付の請求項が、そのような修正形態および実施形態のすべてを、本発明の真の趣旨および範囲に含まれるものとして包含することが意図されている。
【図面の簡単な説明】
【００３９】
【図１】本発明を実施する２つのプロセッサ・ノードを示す図である。
【図２】本発明を実践するのに使用することができるput/getウィンドウを示す図である。
【図１】
2005507097.tif 000003
【図２】
2005507097.tif 000004
【国際公開パンフレット】
2005507097.tif 000005
2005507097.tif 000006
2005507097.tif 000007
2005507097.tif 000008
2005507097.tif 000009
2005507097.tif 000010
2005507097.tif 000011
2005507097.tif 000012
2005507097.tif 000013
2005507097.tif 000014
2005507097.tif 000015
2005507097.tif 000016
2005507097.tif 000017
2005507097.tif 000018
2005507097.tif 000019
2005507097.tif 000020
2005507097.tif 000021
2005507097.tif 000022
2005507097.tif 000023
【国際公開パンフレット（コレクトバージョン）】
2005507097.tif 000024
2005507097.tif 000025
【国際調査報告】
2005507097.tif 000026
2005507097.tif 000027