(57)【要約】【課題】局所的なキャッシュ・ブロック・フラッシュ命令を提供すること。【解決手段】マイクロプロセッサおよび関連するコンパイラは、プロセッサの実行ユニットが有効アドレスを決定するローカル・キャッシュ・ブロック・フラッシュ命令をサポートする。プロセッサは、決定された有効アドレスに対応するキャッシュ・ブロックに対するすべての保留中の参照をキャッシュ・サブシステムにコミットさせる。参照されたキャッシュ・ラインがローカル・キャッシュで修正されている場合（命令実行中のプロセッサに対応するキャッシュ・サブシステム）、それはメイン・メモリにライトバックされる。参照されたブロックがローカル・キャッシュで有効である場合、それは無効化されるが、ただしこれはローカル・キャッシュでのみである。参照されたブロックがローカル・キャッシュで有効でない場合、無効化は行われない。ローカル・キャッシュ・ブロック・フラッシュ命令を別のプロセッサからシステムを介して受け取る遠隔プロセッサはこの命令を無視する。【選択図】図４
2004326758.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサ環境でマイクロプロセッサによって命令を実行する方法において、
マイクロプロセッサによってアドレスを決定するステップと、
アドレスに対応するキャッシュ・ブロックがマイクロプロセッサに対してローカルなキャッシュ・メモリ・ユニットにあるという判定に応じて、
ローカル・キャッシュ・メモリ・ユニットのキャッシュ・ブロックを無効化するステップと、
遠隔キャッシュ・メモリ・ユニットにあるアドレスに対応する任意のキャッシュ・ブロックを有効に維持するステップとを含む方法。
【請求項２】
キャッシュ・ブロックを無効化する前に、対応するキャッシュ・ブロックに対するすべての保留中の参照をキャッシュ・メモリ階層にコミットさせるステップをさらに含む請求項１に記載の方法。
【請求項３】
キャッシュ・ブロックをキャッシュ・メモリ階層にコミットさせるステップが、キャッシュ・ブロックをプロセッサに対してローカルなＬ１、Ｌ２、およびＬ３キャッシュ・メモリ・ユニットにコミットさせることによってさらに特徴付けられる請求項２に記載の方法。
【請求項４】
アドレスに対応するキャッシュ・ブロックがマイクロプロセッサに対してローカルなキャッシュ・メモリ・ユニット内にあり、修正されているという判定に応じて、キャッシュ・ブロックをシステム・メモリにライトバックするステップをさらに含む請求項１に記載の方法。
【請求項５】
命令が２つのオペランドを含み、アドレスを決定するステップが２つのオペランドを加算するステップによって特徴付けられる請求項１に記載の方法。
【請求項６】
２つのオペランドがレジスタ参照であり、２つのオペランドを合計するステップが２つのソース・オペランドの内容を加算するステップを含む請求項５に記載の方法。
【請求項７】
命令が、影響を受けていない汎用レジスタの内容を残す請求項６に記載の方法。
【請求項８】
コンピュータ実行可能命令のセットを生成するためのコンパイラにおいて、コンパイラは、マイクロプロセッサによって実行された際に、
マイクロプロセッサによってアドレスを決定する動作と、
アドレスに対応するキャッシュ・ブロックがローカル・キャッシュ・メモリ・ユニットにあるという判定に応じて、
マイクロプロセッサに対してローカルなキャッシュ・メモリ・ユニットのキャッシュ・ブロックを無効化する動作と、
遠隔マイクロプロセッサに対してローカルなキャッシュ・メモリ・ユニットにあるアドレスに対応する任意のキャッシュ・ブロックを有効に維持する動作と
を含む動作を実行するローカル・キャッシュ・ブロック・フラッシュ命令を生成するためのコード手段を含むコンパイラ。
【請求項９】
キャッシュ・ブロックを無効化する前に、対応するキャッシュ・ブロックへのすべての保留中の参照をキャッシュ・メモリ階層にコミットさせる動作をさらに含む請求項８に記載のコンパイラ。
【請求項１０】
キャッシュ・ブロックをキャッシュ・メモリ階層にコミットさせる動作が、キャッシュ・ブロックをプロセッサに対してローカルなＬ１、Ｌ２、およびＬ３キャッシュ・メモリ・ユニットにコミットさせる動作によってさらに特徴付けられる請求項９に記載のコンパイラ。
【請求項１１】
そのアドレスに対応するキャッシュ・ブロックがマイクロプロセッサに対してローカルなキャッシュ・メモリ・ユニット内にあり、修正されているという判定に応じて、キャッシュ・ブロックをシステム・メモリにライトバックする動作をさらに含む請求項８に記載のコンパイラ。
【請求項１２】
命令が２つのオペランドを含み、アドレスを決定する動作が２つのオペランドを加算する動作によって特徴付けられる請求項８に記載のコンパイラ。
【請求項１３】
２つのオペランドがレジスタ参照であり、２つのオペランドを加算する動作が２つのソース・オペランドの内容を加算する動作を含む請求項１２に記載のコンパイラ。
【請求項１４】
命令が、影響を受けていない汎用レジスタの内容を残す請求項１３に記載のコンパイラ。
【請求項１５】
所定の特徴を有するソース・コード・シーケンスを決定する動作に応じて、コンパイラがローカル・キャッシュ・ブロック・フラッシュ命令を実行可能コードに挿入するよう構成されている請求項８に記載のコンパイラ。
【請求項１６】
所定の特徴を有するソース・コード・シーケンスを決定する動作が、最小の空間的局所性と最大の時間的局所性とによって特徴付けられるソース・コード・シーケンスを決定する動作によってさらに特徴付けられる請求項１５に記載のコンパイラ。
【請求項１７】
第１のマイクロプロセッサおよび少なくとも１つの他のマイクロプロセッサと、
第１のマイクロプロセッサに対してローカルな第１のキャッシュ・メモリ・ユニットおよび他のマイクロプロセッサに対してローカルな遠隔キャッシュ・メモリ・ユニットと、
ローカル・キャッシュ・ブロック・フラッシュ命令を複号し、
これに応じて、
アドレスを決定し、
アドレスに対応するキャッシュ・ブロックが第１のキャッシュ・メモリと遠隔キャッシュ・メモリにあるという判定に応じて、
ローカル・キャッシュ・メモリ・ユニットにあるキャッシュ・ブロックを無効化し、
他のプロセッサに対してローカルなキャッシュ・メモリのキャッシュ・ブロックをそのまま残すよう構成された第１のマイクロプロセッサ内の実行ユニットと
を含むマルチプロセッサ・データ処理システム。
【請求項１８】
前記実行ユニットが、キャッシュ・ブロックを無効化する前に、対応するキャッシュ・ブロックへのすべての保留中の参照をキャッシュ・メモリ階層にコミットさせるようさらに構成されている請求項１７に記載のシステム。
【請求項１９】
前記実行ユニットが、アドレスに対応するキャッシュ・ブロックがマイクロプロセッサに対してローカルなキャッシュ・メモリ・ユニット内にあり、修正されていると判定し、キャッシュ・ブロックをシステム・メモリにライトバックするようさらに構成されている請求項１７に記載のシステム。
【請求項２０】
前記命令が２つのレジスタ参照オペランドを含み、アドレスを決定することが２つのオペランドを加算することによって特徴付けられる請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、マイクロプロセッサ・アーキテクチャの分野に関し、より詳細には、キャッシュされたメモリ・サブシステムを利用するマルチプロセッサ・アーキテクチャに関する。
【背景技術】
【０００２】
マイクロプロセッサ・ベースのデータ処理システムの分野では、キャッシュ・メモリ・サブシステムとデータの局所性の関連する概念がよく知られている。キャッシュ・メモリは、アーキテクチャの点とヒューリスティックの点でシステムのメイン・メモリ（ＤＲＡＭ）よりもプロセッサのコアに近い１つまたは複数の小さいが高速のストレージ・アレイのことである。それらのサイズが制限されているために、キャッシュ・メモリは、システムのメイン・メモリに含まれる情報の一部を保存する容量しか有しない。要求されたデータがキャッシュ・メモリにない場合、システムは、処理オーバーヘッドの点で著しい犠牲を払ってそのデータのためにメイン・メモリにアクセスする必要がある。キャッシュ・メモリを組み込むことによって得られる利点は、キャッシュ・メモリが満たすことのできるデータ・アクセス要求のパーセンテージ（一般にキャッシュ「ヒット」率と呼ばれる）に大きく関係している。
【０００３】
都合のよいことに、比較的小さいキャッシュ・メモリは容認できる程度の高いヒット率をしばしば提供することができる。何故ならば、多くの応用例で分かるように、近い将来アクセスされる可能性の最も高いデータは、比較的最近アクセスされたデータである。したがって、単純に最近アクセスされたデータを記憶することによって、キャッシュ・メモリのサブシステムは、要求される可能性の最も高いデータに対する高速アクセスをマイクロプロセッサ・コアに提供することができる。
【０００４】
しかし最終的に、メイン・メモリよりも大幅に小さいキャッシュ・メモリによって１００％のヒット率を有するキャッシュ・メモリを実施することは不可能である。可能な限り最高のヒット率を達成し、使用可能な制限されたキャッシュ・メモリを完全に活用するために、設計者は常にキャッシュでデータを維持する方法を模索することに関心を持っている。一例として、いくつかのマイクロプロセッサの命令セットは、ユーザ・レベルまたは監督レベルあるいはその両方のキャッシュ管理命令に対するサポートを含んでいる。キャッシュ管理命令は、一般に、キャッシュ・メモリ・サブシステムのいくつかの態様全体で直接的なソフトウェア制御を可能にする。
【０００５】
ＩＢＭ製のプロセッサＰｏｗｅｒＰＣ（登録商標）ファミリーは、例えばデータ・キャッシュ・ブロック・フラッシュ（ｄｃｂｆ）命令を含めていくつかのキャッシュ管理命令に対するサポートを含んでいる。このｄｃｂｆ命令は、ソフトウェアがキャッシュ・メモリ・サブシステムの規定可能なブロックを無効にすることを可能にする。ｄｃｂｆ命令は、例えばキャッシュ・コヒーレンシー・プロトコルに参加していないサブシステムにデータの特定ブロックにアクセスすることを許可する前に（メイン・メモリまでずっと）コヒーレンシーを強化することが望ましい場合などの状況で有利である。
【０００６】
ｄｃｂｆ命令は、関連するメモリ位置が１回または立て続けに数回アクセスされる可能性が高く、その後少なくとも比較的長期にわたってアクセスされない可能性が高いことを合理的に適切な確率で決定することができるという状況でも有益である。この特性を示すデータは、空間的局所性は高く時間的局所性は低いと言われる。空間的局所性とは、メモリ・アドレスＡのデータに対するアクセスの後に、例えばＡの後に続くメモリ・アドレスに対する１つまたは複数のデータ・アクセスが続く可能性が高いデータの特性のことである。時間的局所性とは、時間Ｔにアクセスされるデータが時間Ｔ＋デルタに再度アクセスされる可能性が高いデータの特性のことである。ここで、デルタは比較的短い時間間隔を表す。時間的局所性と空間的局所性の高いデータは、キャッシュ・メモリ・サブシステムのストレージに対する適切な候補であることは明らかである。実際に、時間的局所性の実在は、キャッシュ・メモリを有するための基本的な理由である。
【０００７】
しかしある応用例では、データが高い空間的局所性と低い時間的局所性を示す場合がある。この状況によって、従来から実施されているキャッシュ・サブシステムはジレンマに陥る。一方では、データが要求された際にストール（機能停止）を防止するために高い空間的局所性を有するデータを先取りしてキャッシュすることが望ましい。しかし他方、時間的局所性の高い別のデータが常駐している場合にキャッシュに上記データを放置することは望ましくない。
【０００８】
マイクロプロセッサは、一般に「ｋｉｌｌ」命令と呼ばれる、キャッシュ指定キャッシュ・ラインを無効にし、それによって新しいデータを受理するためにキャッシュを解放する命令に対するサポートを長い間含んできた。複数の非同期コアによって動作しているマイクロプロセッサ・システムの状況で、ｋｉｌｌ命令はシステムのプロセッサのすべてにある指定されたキャッシュ・ブロックを無効にする。残念ながら、この方法でキャッシュ・ブロックをキルすることによって、対応するプロセッサがブロックに対するすべての参照を完了する前に特定のブロック・ラインが無効化される場合があり、したがって潜在的な未確定状態が生じることになる。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
したがって、マルチプロセッサ環境で発生する潜在的なタイミングおよびコヒーレンシーの問題を招かずに、オペレーティング・システム、プログラマー、またはプロセッサあるいはこれらのすべてが選択されたキャッシュ・ラインを制御し、識別し、かつ無効にすることを可能にしたプロセッサを実装することが望ましい。
【課題を解決するための手段】
【００１０】
上記に示した問題の大部分に、プロセッサの実行ユニット（execution unit）が有効アドレスを決定するローカル・キャッシュ・ブロック・フラッシュ命令をサポートするマイクロプロセッサおよびマイクロプロセッサ実行方法が対処する。プロセッサは、まず指定されたキャッシュ・ブロックへのすべての保留中の参照がキャッシュ・サブシステムにコミットするよう強制する。参照されたキャッシュ・ラインがローカル・キャッシュ（命令実行中のプロセッサに対応するキャッシュ・サブシステム）で修正されている場合、それはメイン・メモリにライトバックされる（writeback）。参照されたブロックがローカル・キャッシュで有効である場合、それは無効化されるが、ただしこれはローカル・キャッシュでのみである。参照されたブロックがローカル・キャッシュで有効でない場合、何のアクションも取られない。ローカル・キャッシュ・ブロック・フラッシュ命令を別のプロセッサからシステムを介して受け取る遠隔プロセッサはこの命令を無視する。
【発明を実施するための最良の形態】
【００１１】
本発明の他の目的および利点は、以下の詳細な説明を読み、かつ添付の図面を参照することによって明らかになろう。
【００１２】
本発明には様々な修正形態および代替形態が可能だが、その具体的な実施形態を例示として図示し、本明細書で詳細に説明することにする。しかし、本明細書に示した図面および詳細な説明は開示された特定の実施形態に本発明を限定するためのものではなく、むしろ首記の特許請求の範囲によって規定された本発明の趣旨および範囲に含まれるすべての修正形態、等価形態、および変更形態をカバーするものであるということを理解されたい。
【００１３】
一般に、本発明は、マルチプロセッサ環境で具体的なプロセッサの具体的なキャッシュ・ラインをフラッシュするためのキャッシュ管理命令をサポートするマイクロプロセッサ・ベースのデータ処理システムを企図する。命令が実行される際に、有効アドレスが決定される。決定された有効アドレスがローカル・プロセッサ（命令実行中のプロセッサ）のキャッシュ・メモリのキャッシュ・ブロックに「ヒット」した場合、ローカル・キャッシュ・ブロック・フラッシュ手順が開始される。キャッシュ・ブロックが修正された状態にある場合、ブロックはメイン・メモリにライトバックされる。次いでそのブロックはローカルに無効化され、それによって、キャッシュにより適している可能性のあるメモリ・セグメントに使用可能なキャッシュ・ブロックの空間が解放される。
【００１４】
次に図面を参照すると、図１は、本発明を実施することができる設計例であるマルチプロセッサ・データ処理システム１００の選択された要素を示している。図示した実施形態では、データ処理システム１００は、１０２Ａから１０２Ｄまでの４台のプロセッサのセット（本明細書では総称的に、すなわち一括して１つ以上のプロセッサ１０２と称する）を含んでいる。１０２Ａから１０２Ｄの各プロセッサは、１０４Ａから１０４Ｄの１つの対応するプロセッサ・コア（本明細書では総称的に、すなわち一括して１つ以上のコア１０４と称する）と、１０６Ａから１０６Ｄの１つの対応するローカル・キャッシュ・メモリ・ユニット（本明細書では総称的に、すなわち一括して１つ以上のローカル・キャッシュ１０６と称する）を含んでいる。一実施形態では、各コア１０４は、共通のローカル・キャッシュ・メモリを共有する２つの別個の完全に機能的なプロセッサを含んでいる。一実施形態では、各ローカル・キャッシュ１０６は、それぞれ次のレベルが前のレベルよりも大きい３つのレベル（Ｌ１、Ｌ２、およびＬ３）のキャッシュ・メモリを含んでいる。一実施形態の典型的なＩＢＭ社製のＰＯＷＥＲ４（登録商標）プロセッサでは、例えばＬ１およびＬ２キャッシュ・ユニットならびにＬ３キャッシュに対する複号およびディレクトリ回路はプロセッサ・コア１０４を有する単一チップ上に組み込まれるが、一方、実際のＬ３メモリは外部にある。
【００１５】
システム１００の様々なプロセッサ１０２はシステム・バス１０８を介してやりとりする。プロセッサのどれかによって実行されるメモリ・アクセス（ロードおよび記憶）は、コヒーレンシーを維持するために必要とされるホスト・バス上のトランザクションを生成する。例えばプロセッサ１０２Ａがデータをメモリ・アドレスに書き込む場合、すべての他のローカル・キャッシュ１０６は、それらが常駐のメモリ・アドレスに対応するキャッシュ・ブロックのコピーを有するか否かを判定することができ、有する場合はそのブロックのそれらのコピーを修正することができるように、書き込みトランザクションはホスト・バス１０８を介して送信する必要がある。
【００１６】
図１に示すシステム１００は、ホスト・バス１１０とシステム・メモリ１１２の間にインターフェースを提供するホスト・ブリッジ１１０も含んでいる。参照番号１２０で図１に一括して示したシステムの入出力装置は、システム・バス１０８に接続されている。入出力装置１２０は、例えばハードディスク・コントローラ、ビデオまたはグラフィック・アダプタ、高速ネットワーク・インターフェース・カードなどを含めてデータ処理システムに関連する従来型装置のどれでも包含する。システム・メモリ１１２へのアクセスは、プロセッサ１０８間で共有される。この種のマルチプロセッサ・システムは、各プロセッサがシステム・メモリ１１２に対して理論的に等価のアクセスを有していることを強調して一般に対称型マルチプロセッサ（ＳＭＰ）システムと称される。
【００１７】
図２を参照すると、システム１００のキャッシュ・メモリ・サブシステムが本発明の利点を説明するために示されている。図２に示すように、キャッシュ・メモリ・サブシステムは、１０６Ａから１０６Ｄのローカル・キャッシュのそれぞれを含んでいる。各ローカル・キャッシュ・ユニット１０６は、ホスト・バス１０８に結合されている少なくとも１つのポートと、各ローカル・キャッシュ１０６をその対応するコア１０４に接続するバス（本明細書では「ローカル」バスと称する）に結合されている少なくとも１つのポートとを含む。複数のローカル・バスは参照番号１１５Ａから１１５Ｄで示す（総称的に、すなわち一括して１つ以上のローカル・バス１１５と称する）。図２は、２文字の呼称「ＥＡ」で特定される特定のキャッシュ・ブロックが１０６Ａから１０６Ｃのローカル・キャッシュに常駐しており、ローカル・キャッシュ１０６Ｄで無効か、そうでなければ欠落している場合のキャッシュ・メモリ・サブシステムのスナップ・ショットを示している。呼称ＥＡは有効アドレス（effective address）の頭文字であり、命令実行中に生成されたすべての有効アドレスが対応するキャッシュ・ブロックにマップされることを強調することを意図している。実際の実行では、ＥＡから対応する「実際の」アドレスへの翻訳は、キャッシュ・メモリがアクセスされた際に発生する。したがって、データは、通常、その実際のアドレスに従ってキャッシュ・メモリに記憶される。しかし整合性のために、この応用例は、メモリ参照の有効アドレスだけを限定的に参照し、キャッシュ・メモリが実際のアドレスに従ってデータを構成することが理解されよう。
【００１８】
簡素な実施態様では、すべてのＥＡは、その対応する実際のアドレスの上位２０ビットによって特定されたブロックにマップする。キャッシュ・ブロックは、キャッシュ・サブシステムのアーキテクチャに応じてキャッシュ内の異なる物理位置に記憶することができる。したがって、図示するように、有効アドレスＥＡに対応するキャッシュ・ブロックはローカル・キャッシュ１０６Ａ、１０６Ｂ、および１０６Ｃによって異なる物理位置で見つけられる。
【００１９】
図示したキャッシュ・サブシステムの重要な特徴は、ローカル・バス１１５およびホスト・バス１０８へのアクセス用の独立ポートの使用法である。性能の利点を提供することに加えて別個のポートまたはインターフェースを使用することにより、キャッシュのローカル・プロセッサから発行されるトランザクションと、非ローカルまたは遠隔プロセッサで始められるトランザクションの識別が容易になる。「ローカル・トランザクション」と他のトランザクションとの区別は、本発明では様々なキャッシュ・メモリ・ユニット１０６の内容を管理するために使用される。
【００２０】
一般的な概念の説明は、図２と図３の比較によって提供される。この簡単な説明では、図２は、特定の命令シーケンスが実行される前のプロセッサ・サブシステムの状態を表しており、図３は、そのシーケンスの実行後のキャッシュ・メモリ・サブシステムの状態を表している。図２では、前段落で検討したように、ローカル・キャッシュ・ユニット１０６の３つが、特定の有効アドレスに対応するキャッシュ・ブロックＥＡの複数の有効なコピーを含んでいる。本発明によれば、命令は、プロセッサのローカル・キャッシュ１０６からＥＡキャッシュ・ブロックをフラッシュするが、一方、他のローカル・キャッシュに残っているＥＡのコピーはそのまま残すプロセッサ・コア１０４の１つの実行ユニットによって実行される。図示した実施形態では、具体的に、本発明によるローカル・キャッシュ・ブロック・フラッシュ（ＬＣＢＦ）命令はプロセッサ・コア１０４Ａによって実行される。ＬＣＢＦ命令は有効アドレスＥＡを計算する（実際のアドレスに対応する）。ローカル・キャッシュ・ユニットのそれぞれは、ＬＣＢＦがローカルに発行された場合には（例えば、ローカル・バス・ポートを介して受信された場合に）有効アドレスＥＡに対応するブロックをフラッシュし、そうでない場合はその命令を無視することによりＬＣＢＦをサポートするキャッシュ・コントローラを含んでいる。したがって、図３に示すように、コア１０４ＡによるＬＣＢＦの実行に従い、ローカル・キャッシュ・ユニット１０６Ａはキャッシュ・ブロックＥＡの有効なコピーを最早含まないが、キャッシュ１０６Ｂおよび１０６ＣのＥＡブロックは依然として有効なままである。この説明は、ＬＣＢＦが実行される際にキャッシュ・ブロックＥＡがローカル・キャッシュ１０６Ａで未修正であると仮定するようなある種の簡約化の仮定を含んでいるが、強固に結合したＳＭＰ環境でキャッシュ・メモリ・ユニットをローカルに管理する機能を強調している。従来型のＫＩＬＬ命令とは対照的に、ＬＣＢＦは、ローカルに動作し、無効が発生する前にキャッシュ・ブロックへのいかなる保留中の参照でも完了させることによって追加の制御を組み込む。
【００２１】
この局所化されたキャッシュ管理機能は、例えば性能を維持するにはコードを先取りすることが望ましい（すなわち、プロセッサによって必要とされる前にキャッシュにコードを記憶する）が、その実行後もそのコードをキャッシュに保存することは望ましくないという場合の状況に対処するために望ましい場合がある。例えばサイズの異なるアレイの要素を追加するための１つまたは複数の埋め込まれたループを含むコードを考えることができる。大部分の期間にわたり内部ループが実行されている場合、外部ループの各反復後にキャッシュから外部ループに限定的に関連したコードをキャストすると有益な場合がある。すなわち、実行前に外部ループ・コードをキャッシュに先取りすることは性能の点では望ましいが、それが必要とされないと分かっている期間中もそれをキャッシュに維持することは望ましくない。
【００２２】
既存のキャッシュ管理技術は、コードをキャッシュせずに先取りする機能と、特定のキャッシュ・ブロックを全体的にキル（kill）する機能とを含んでいる。キャッシュなし先取り（prefetch without cache）の解決方法は、先取りされたコードが１回だけ実行されることが分かっている場合に関してのみ最適化される。しかし、上記の埋め込まれたループの例のような多くの場合、キャッシュ・ブロックをキャッシュからキャストすることが望ましくなる前にそのキャッシュ・ブロックに複数回アクセスすることができる。例えば比較的稀にしか実行されないコード・シーケンスがアレイの３つの連続する要素を修正する場合、アレイに対する２回目と３回目の参照中にストールが発生するのでキャッシュなし先取りの選択肢は性能に悪影響を与える。全体的ｋｉｌｌキャッシュ管理命令は、単一プロセッサ環境では有益だが、第１のプロセッサまたはマスターから発行されたｋｉｌｌが別のプロセッサの不完了命令（in-flightinstruction）に必要とされるキャッシュ・ブロックを無効にする可能性があるので、複数のプロセッサが非同期的に実行されている環境では問題を生じる場合がある。
【００２３】
本発明は、従来型のキャッシュ管理方法および命令に関連する問題に対処する選択的ローカル・キャッシュ管理技術を提供する。図４を参照すると、本発明の一実施形態によるＬＣＢＦ命令を実行する概念的方法１３０を説明する流れ図が示されている。図示した実施形態では、ＬＣＢＦ命令はアドレスを決定する（ブロック１３１）。一実施形態では、プロセッサは命令実行中に有効アドレスを使用し、次いでキャッシュ・メモリにアクセスする際には有効アドレスを実際のアドレスへ翻訳またはマップする。図２および図３の説明に合わせて、有効アドレスはキャッシュ・アクセス機構の一部として実際のアドレスにマップすることができるという理解の下に、図４の流れ図を有効アドレスについて説明することにする。
【００２４】
特定のＬＣＢＦ命令の実施態様が２つの汎用レジスタ・オペランドを含む場合、ＥＡはその２つのオペランドの和となる場合がある。他の実施態様では、他の周知のアドレッシング方法を組み込むために、ＥＡが命令で明示的に示されるＬＣＢＦ即値、命令によって参照される指定されたメモリ位置にアドレスのあるメモリ位置の内容によってＥＡが決定される間接ＬＣＢＦ（LCBF indirect）などのようなＬＣＢＦの置換がある場合がある。
【００２５】
次いで、図示したＬＣＢＦの実施形態は、ＥＡキャッシュ・ブロック（ＥＡが特定のキャッシュ・サブシステム・アーキテクチャでマップされたキャッシュ・ブロック）を参照するすべてのローカルに保留中の記憶命令をキャッシュ・メモリ階層にコミットさせる（ブロック１３２）ことによってコヒーレンシーまたは同期を保証する。このような強制は、発行されたがコミットされていない記憶命令のどれかがＥＡキャッシュ・ブロックを参照するか否かを判定するために、スコアボードまたはレジスタ名前変更表を参照することによって達成することができる。すべての保留中の参照がキャッシュ階層にコミットされると、ローカル・キャッシュ１０６にあるＥＡキャッシュ・ブロックは、ＬＣＢＦが実行された際に現行となる。
【００２６】
次いでＬＣＢＦは、まずＥＡがローカル・キャッシュ１０６で有効であるか否かを判定する（ブロック１３４）ことによって進行することができる。ＥＡがローカル・キャッシュ１０６で欠落している（または有効でない）場合、（ブロックへの記憶命令の早期コミットメントを強制する以外）これ以上のアクションは取られず、ＬＣＢＦはローカル・キャッシュの変更を行わない。ＥＡがローカル・キャッシュ１０６で有効な場合、ＥＡキャッシュ・ブロックが修正されたか否かの判定が行われる（ブロック１３６）。ＥＡキャッシュ・ブロックが有効であり修正されている場合、修正されたキャッシュ・ブロックがメモリにライトバックされる（ブロック１３８）。ＥＡキャッシュ・ブロックが修正されているかいないかにかかわらず、そのＥＡキャッシュ・ブロックはローカルに無効化される（ローカル・キャッシュのみで無効化される）（ブロック１４０）。無効化は、キャッシュ・ブロックが共用状態にあるか排他的状態にあるかにかかわらず発生する。排他的状態とは遠隔キャッシュにそのブロックのコピーがないことを意味するので、排他的キャッシュ・ブロックのローカルな無効化は許容できる（コヒーレンシー状態を破壊しない）。共用状態は単に別のキャッシュがそのブロックの（無修正の）コピーを有している可能性があることを示すだけなので、共用状態を示すキャッシュ・ブロックのローカルな無効化も許容できる。ＭＥＳＩプロトコルは、例えば、修正されたキャッシュ・ブロックに対して発生するだけのヒットする書き込み以外のいかなるホスト・バス１０８トランザクションの後でもキャッシュの共用ブロックの状態を変更しない。
【００２７】
ローカル・キャッシュ１０６は、ＬＣＢＦ命令の発生源を決定することによってローカルな無効化を達成する。その命令がローカル・キャッシュのコア１０４によって発生した場合、その命令はローカル・バス１１５を介して受信され実行される。その命令が遠隔コアによって発生した場合、トランザクションはホスト・バス１０８を介して受信され、ノーオペレーションとして扱われる。このようにして、本発明は、適切なコード・シーケンスの性能を改善するために使用することのできる局所化されたキャッシュ管理技術を提供する。
【００２８】
本発明の一実施形態は、ＬＣＢＦ命令を使用することによって得られるソース・コード・シーケンスを決定し、１つまたは複数のＬＣＢＦ命令を実行可能（オブジェクト）コードに挿入するよう構成されたコンパイラを企図する。本発明のこの実施形態は、コンピュータ可読媒体に記憶されているコンピュータ実行可能命令のセット（すなわち、ソフトウェア）として実施される。図５の流れ図で概念的に説明されているこの実施形態では、コンパイラ１５０は、そのシーケンスがＬＣＢＦ命令を組み込むことが有益か否かを判定するためにソース・コード・シーケンスをまず評価する（ブロック１５２）。一例として、コンパイラは、コード・シーケンスがメモリ・アドレス空間の特定部分に関して高い空間的局所性を示すか否かを判定する（ブロック１５３）ことができる。コンパイラが、同一コード・シーケンスが同時に当該システム・メモリ・アドレス空間のその部分に関して低い時間的局所性を示すか否かも判定する場合、コンパイラは、メモリ位置の空間的局所性が既になくなったオブジェクト・コードの位置にＬＣＢＦ命令を有益に挿入する（ブロック１５５）。この実施形態では、時間的局所性の閾値はキャッシュ・ミスに関連した待ち時間に関係する場合がある。コンパイラが、当該システム・メモリ・アドレス空間のその部分がキャッシュ・ミス待ち時間より長い期間はアクセスされないと判定した場合、このアドレス空間にアクセスするコード・シーケンスはＬＣＢＦの候補になる。他の応用例では、ＬＣＢＦ命令はソース・コードへの直接挿入のためにキャッシュ管理ツールとしてプログラム開発者に使用可能である。
【００２９】
この開示の恩恵を受ける当業者には、本発明が、ローカル・キャッシュ管理制御が性能を改善するための方法およびシステムを企図するということが明らかになろう。詳細な説明および図面に示し記載した本発明の態様は、現時点での好ましい実施例であるとのみ解釈されるべきことを理解されたい。首記の特許請求の範囲は開示された好ましい実施形態のすべての変形形態を包含するものと広範に解釈されることを意図している。
【図面の簡単な説明】
【００３０】
【図１】マルチプロセッサ・データ処理システムの選択された要素のブロック図である。
【図２】本発明によるローカル・キャッシュ・メモリ管理命令を実行する前の図１のシステムのキャッシュ・メモリ・サブシステムの状態を示す図である。
【図３】ローカル・キャッシュ・メモリ管理命令を実行した後の図２のキャッシュ・メモリ・サブシステムの状態を示す図である。
【図４】本発明の一実施形態によるキャッシュ・メモリ・サブシステムを管理する方法を示す流れ図である。
【図５】図３に示すキャッシュ・メモリ管理命令をサポートするコンパイラを表す流れ図である。
【符号の説明】
【００３１】
１０２  プロセッサ
１０４  コア
１０６  ローカル・キャッシュ
１０８  システム・バス
１１０  ホスト・ブリッジ
１１２  システム・メモリ
１２０  入出力装置
【図１】
2004326758.tif 000003
【図２】
2004326758.tif 000004
【図３】
2004326758.tif 000005
【図４】
2004326758.tif 000006
【図５】
2004326758.tif 000007