(57)【要約】【課題】  改善されたマルチプロセッサ・システムおよび方法を提供すること。【解決手段】  キャッシュ・データのためのスーパーセット・ディレクトリと、コヒーレンシ管理のみのためのサブセット・ディレクトリを含む、デュアル・システム・キャッシュ・ディレクトリ構造体が提供される。スーパーセット・ディレクトリとサブセット・ディレクトリは実質的に等しいサイズを有し、全体としてプロセッサ・キャッシュのディレクトリ・エントリのすべてを格納するのに十分なサイズを有することが好ましい。スーパーセット・ディレクトリのみが、プロセッサによってアクセスされたデータの最新の断片をバックアップするようにシステム・キャッシュ・データをホストし、サブセット・ディレクトリは、削除されたラインと、そのデータを使用しているプロセッサのアドレスを含むアドレスのみを維持する。システム・キャッシュ・データによってバックアップされるディレクトリだけが、システム・キャッシュ・データ・ヒットのために評価される。【選択図】      図２
2007193805.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記複数のプロセッサそれぞれに関連するプロセッサ・キャッシュと、
前記複数のプロセッサ全体に関連するシステム・キャッシュを備え、
前記システム・キャッシュは、キャッシュ・データのためのスーパーセット・ディレクトリと、コヒーレンシ管理のみのためのサブセット・ディレクトリを含む、デュアル・システム・キャッシュ・ディレクトリ構造体を備える、マルチプロセッサ・システム。
【請求項２】
前記スーパーセット・ディレクトリのサイズと、前記サブセット・ディレクトリのサイズが等しい、請求項１に記載のマルチプロセッサ・システム。
【請求項３】
前記スーパーセット・ディレクトリおよび前記サブセット・ディレクトリは、前記プロセッサ・キャッシュのディレクトリ・エントリを格納するために十分なサイズを全体として有する、請求項１に記載のマルチプロセッサ・システム。
【請求項４】
前記システム・キャッシュとしてバックアップされるディレクトリが、システム・キャッシュ・データ・ヒットのために評価される、請求項１に記載のマルチプロセッサ・システム。
【請求項５】
前記サブセット・ディレクトリは、システム・キャッシュ・コヒーレンシ・データを格納する、請求項１に記載のマルチプロセッサ・システム。
【請求項６】
前記サブセット・ディレクトリは、いずれのメモリの部分をキャッシュしたかに関する記録を保持し、
前記メモリの部分は前記マルチプロセッサ・システムに含まれるプロセッサが使用している、請求項５に記載のマルチプロセッサ・システム。
【請求項７】
キャッシュ・データのためのスーパーセット・ディレクトリと、コヒーレンシ管理のみのためのサブセット・ディレクトリを含む、デュアル・システム・キャッシュ・ディレクトリ構造体を備えるマルチプロセッサ・システムにおいて、キャッシュ・コヒーレンシを維持するための方法であって、
前記スーパーセット・ディレクトリにエントリを書き込み、前記サブセット・ディレクトリに前記エントリに関するアドレスおよび呼び出しプロセッサ識別子を書き込むステップと、
前記スーパーセット・ディレクトリから前記エントリを削除するステップと、
前記削除するステップにおいて前記エントリがスーパーセット・ディレクトリから削除された後に、前記サブセット・ディレクトリ内に前記エントリに関するアドレスおよび呼び出しプロセッサ識別子を維持するステップと、
を含む方法。
【請求項８】
前記削除するステップにおいて、前記エントリがＬＲＵ方式に従って削除される、請求項７に記載の方法。
【請求項９】
前記プロセッサによってアクセスされた前記最新のデータを格納するように前記サブセット・ディレクトリ内のシステム・キャッシュ・データをホストするステップを含む、請求項７に記載の方法。
【請求項１０】
システム・キャッシュ・データ・ヒットのために前記サブセット・ディレクトリを評価するステップを含む、請求項８に記載の方法。
【請求項１１】
いずれのメモリの部分をキャッシュしたかに関する記録を前記サブセット・ディレクトリ内に保持するステップであって、前記メモリの部分は前記マルチプロセッサ・システムに含まれるプロセッサが使用しているステップを含む、請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサ・システムにおいて、共有キャッシュ・メモリに格納されたデータとメインメモリのデータとが同一であること、または、最新でないデータと最新のデータが混同されないように制御されていることを保証することに関する。
【背景技術】
【０００２】
従来の共有メモリ・マルチプロセッサ・システムは、それぞれのプロセッサが別個のキャッシュ・メモリを備え、任意の１つの命令オペランドについて多数のコピー（例えば、メインメモリ内および個々のキャッシュ・メモリ内のコピー）を有することがある。かかる状況において、あるオペランドのコピーが変更された場合、そのオペランドについての他のコピーも変更することによって、キャッシュ・コヒーレンスを維持する必要がある。なお、キャッシュ・コヒーレンスとは、共有オペランドなどの値の変更のシステム全体への適時かつ適切な伝播を保証することである。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
キャッシュ・コヒーレンスという観点から、明白に区別することができる以下の３つのレベルがある。なお、以下の第２のレベルおよび第３のレベルでは、システムのプログラムは、最新でないデータを認識してしまうおそれがある。
【０００４】
１．書き込み動作がすべて即時に実施される（または、そのように見える）レベル
２．すべてのプロセスが、各々の別個のオペランド値の変更の正確に同じシーケンスを認識するレベル
３．異なるプロセスが、オペランドが異なるシーケンスの値をとると認識する可能性があるレベル（なお、この場合は非コヒーレントに動作しているとみなされる）
【０００５】
ここで、それぞれのプロセッサ・キャッシュのコンテンツがシステム・キャッシュのサブセットになるようにされているのであれば、単一のシステム・キャッシュ・ディレクトリ・アレイを使用することによって、マルチプロセッサ・システム全体わたってキャッシュ・コヒーレンシを効率的に制御する機構、および、最近アクセスされたメモリのコンテンツを格納するシステム・キャッシュを提供することが、理論上は可能となるだろう。
【０００６】
しかし、上述のプロセッサ・レベル・キャッシュのコンテンツをシステム・キャッシュのサブセットとする技法によれば、プロセッサ・キャッシュのサイズの合計が大きい場合に、効果的に動作するために必要なシステム・キャッシュのサイズが大きくなり過ぎる可能性があり、現実的ではなくなってしまう可能性がある。
【０００７】
この課題に対する解決策の１つとして、部分的にだけキャッシュ・データとしてバックアップを実施する単一のシステム・キャッシュ・ディレクトリを備えることが考えられる。しかし、かかる部分的にだけバックアップを実施する技法は、システム・キャッシュのデータ・ヒットを判定するときに、どのエントリがデータを有し、どのエントリがデータを有していないかを評価しなければならないので、やはり現実的ではない可能性がある。
【課題を解決するための手段】
【０００８】
上記の課題に対する解決策として、２つの相補的なシステム・キャッシュ・ディレクトリを有するマルチプロセッサ・システムが提供される。２つの相補的なシステム・キャッシュ・ディレクトリは、ある特定のプロセッサまたはプロセッサ群に関連するものではなく、システム内のすべてのプロセッサがアクセス可能なシステム・キャッシュ・ディレクトリである。
【０００９】
２つの相補的なシステム・キャッシュ・ディレクトリは実質的に等しいサイズを有し、全体としてプロセッサ・キャッシュのディレクトリ・エントリのすべてを格納するのに十分なサイズを有することが好ましい。
【００１０】
２つの相補的なシステム・キャッシュ・ディレクトリのうちの１つだけが、プロセッサによってアクセスされた最新のデータの断片（ｆｒａｃｔｉｏｎ）をキャッシュする。こうすることによって、システム・キャッシュによってバックアップされるディレクトリだけが、システム・キャッシュ・データ・ヒットのために評価されることになる。
【００１１】
より具体的には、本発明は、実質的に等しいサイズを有し、重なり合わない２つのシステム・キャッシュ・ディレクトリを使用することが好ましい。この２つのシステム・キャッシュ・ディレクトリは、本明細書において「スーパーセット・ディレクトリ」および「サブセット・ディレクトリ」と称される。
【００１２】
「スーパーセット・ディレクトリは」、システム・キャッシュにキャッシュされたデータに対応するエントリを含むシステム・キャッシュ・ディレクトリである。なお、かかるシステム・キャッシュにキャッシュされたデータは、プロセッサまたはサブセット・キャッシュが使用可能なデータのスーパーセットである。スーパーセット・ディレクトリは、コヒーレンシおよびデータの両方を管理する。
【００１３】
「サブセット・ディレクトリ」は、システム・キャッシュによってデータがキャッシュされないデータに対応するエントリを含むシステム・キャッシュ・ディレクトリである。すなわち、プロセッサまたはサブセット・ディレクトリだけが、システム・キャッシュ中で使用不可能なデータを有する。サブセット・ディレクトリは、コヒーレンシだけを管理する。
【００１４】
２つのキャッシュ・ディレクトリは、システム・キャッシュとともに、全体として、すべての基本的なプロセッサ・キャッシュ・ディレクトリ・エントリを格納するのに十分なサイズとすることが好ましい。
【００１５】
本発明のキャッシュ・システムは、アクセス速度およびチップ面積などの所与のファクターに対してより現実的なものとなるだろう。また、システム・キャッシュ・ディレクトリ・エントリの最新の断片がスーパーセット・ディレクトリ中にマッピングされることとなる。
【００１６】
２つのキャッシュ・ディレクトリは、全体として、データ・キャッシュおよびシステム全体のコヒーレンシ・キャッシュとして動作することになる。
【００１７】
したがって、本発明に係るシステムおよび方法は、システム・キャッシュのサイズがすべての基本キャッシュのコンテンツを格納するために不十分である場合に特に効果的となる、キャッシュ・データに対するスーパーセット・ディレクトリと、コヒーレンシ管理のみのためのサブセット・ディレクトリを含む、デュアル・システム・ディレクトリ構造体に関連する。
【００１８】
上記のディレクトリ構造体は、データ・キャッシュとしては、プロセッサが必要とする最新のメモリ・データを記憶するために使用され、システム全体のコヒーレンシ・キャッシュとしては、マルチプロセッサ内のどのプロセッサがメモリのどの部分のコピーを有するのか、プロセッサがどのような状態にあるのかに関する記録を保持する、システム全体のコヒーレンシを制御するために使用される。
【００１９】
上記から、単一のディレクトリ構造体による解決法の複雑さが回避され、コヒーレンシを管理するための基本キャッシュ上のキャッシュ・レベルでの余分なオーバーヘッドを避け、さらにシステム・データ・キャッシュの欠如さえも回避されることが理解される。
【００２０】
また、対称的な２つのキャッシュ・ディレクトリを使用することによって、キャッシュ・ディレクトリ内のエントリが一対一でペアを形成することとなる。そのような場合、あるエントリが、スーパーセット・ディレクトリから（例えば、ＬＲＵ方式に従って）削除されると識別されたことに応答して、特別なロジックを必要とすることなく、削除されるエントリを受信するそれぞれのサブセット・ディレクトリ内のエントリが素早く識別されるという利点を得ることができる。
【００２１】
さらに、プロセッサがシステム検索を要求する場合に、スーパーセット・ディレクトリだけのスキャンが必要となるので、データがバックアップされたシステム・キャッシュ・エントリと、データのないシステム・キャッシュ・エントリとを区別するための付加的ロジックを必要とする複合ディレクトリの検索は不要である。
【００２２】
また、マルチプロセッサ・システムの設計の観点からは、スーパーセット・ディレクトリおよびシステム・キャッシュを、全体として従来のシステム・キャッシュとみなすことができる。そのスーパーセット・ディレクトリおよびシステム・キャッシュの組み合わせにサブセット・ディレクトリを加えることによって、エントリは、通常はサブセット・ディレクトリからＬＲＵ方式により削除される。加えて、それぞれのプロセッサ・キャッシュのエントリがサブセット・ディレクトリ内に配置され、そのエントリはプロセッサ内で持続するように残されることによって、全体の性能が向上する。
【発明を実施するための最良の形態】
【００２３】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００２４】
本発明の実施形態においては、データ・キャッシュのためのキャッシュ・ディレクトリおよびコヒーレンシを維持するためのキャッシュ・ディレクトリからなる２つの相補的なキャッシュ・ディレクトリが使用される。２つの相補的なキャッシュ・ディレクトリは実質的にサイズが等しく、全体としてすべてのプロセッサ・キャッシュ・ディレクトリ・エントリを格納するために十分なサイズを備えている。
【００２５】
２つの相補的なキャッシュ・ディレクトリのうちの１つだけが、マルチプロセッサ・システムのプロセッサによってアクセスされたデータの最新の断片をキャッシュするために機能する。システム・キャッシュ・データによってバックアップされることが分かっているディレクトリだけが、システム・キャッシュ・データ・ヒットのために評価されることになる。
【００２６】
本発明の実施形態のシステムおよび方法は、システム・キャッシュのサイズが、すべての基本的なキャッシュ・コンテンツをキャッシュするために不十分である場合に特に効果的な、データ・キャッシュのためのキャッシュ・ディレクトリと、コヒーレンシを維持するためのキャッシュ・ディレクトリの役割を果たすデュアル・システム・ディレクトリ構造体と関連する。
【００２７】
図１は、プロセッサ１０１および１０３のセットを備えるマルチプロセッサ・システムを示す。プロセッサ１０１および１０３は、それぞれ関連するキャッシュ１０１Ａおよび１０３Ａを有する。キャッシュ１０１Ａと１０３Ａは、それぞれが関連付けられたプロセッサにおいて実行された最近の命令および最近の作業データのコピーを格納する。キャッシュ１０１Ａおよび１０３Ａは、データ・バス１１１を通じてシステム・キャッシュ１１５に接続されている。システム・キャッシュ１１５は、バス１１７を通じてメインメモリ１３１に接続されている。
【００２８】
以下に、本発明の実施形態の概略を説明する。すなわち、スーパーセット・ディレクトリ２２１ａおよび２２１ｂ、ならびに、サブセット・ディレクトリ２２３ａおよび２２３ｂは、全体としてキャッシュ・コヒーレンシを管理する。さらに、スーパーセット・ディレクトリ２２１ａおよび２２１ｂは、データをキャッシュし、キャッシュしたデータを、データをリクエストした任意のプロセッサに直ちに供給することができる。
【００２９】
サブセット・ディレクトリ２２３ａおよび２２３ｂは、スーパーセット・ディレクトリ２２１ａおよび２２１ｂからＬＲＵ方式により削除されたラインを、低いオーバーヘッドでプロセッサ２０１ａ〜２０１ｈが維持することができるようにするための機構である。
【００３０】
本発明の実施形態においては、サブセット・ディレクトリ２２３ａおよび２２３ｂは、スーパーセット・ディレクトリ２２１ａおよび２２１ｂには連結されておらず、また、データ・キャッシュではない。すなわち、サブセット・ディレクトリ２２３ａおよび２２３ｂは、メモリ・アドレスおよび呼び出しプロセッサ識別子として機能するプロセッサ・アドレスのみを格納するキャッシュ・ディレクトリである。
【００３１】
したがって、あるデータがスーパーセット・ディレクトリ２２１ａおよび２２１ｂからＬＲＵ方式により削除された場合であっても、そのデータのアドレスは依然としてサブセット・ディレクトリ２２３ａおよび２２３ｂ内に維持される。
【００３２】
サブセット・ディレクトリ２２３ａおよび２２３ｂが存在しなければ、キャッシュ・システムは、スーパーセット・ディレクトリ２２１ａおよび２２１ｂからＬＲＵ方式によりあるデータが削除される場合に、すべてのプロセッサ２０１ａ〜２０１ｈにおいて対応するラインを無効にすることが必要となる。
【００３３】
すなわち、サブセット・ディレクトリ２２３ａおよび２２３ｂが存在しなければ、Ｌ２ディレクトリがラインのコヒーレンシを管理できない場合に、いずれのプロセッサも対応するラインを維持することができなくなる。しかし、本発明の実施形態においては、スーパーセット・ディレクトリ２２１ａおよび２２１ｂからＬＲＵ方式により削除されたラインをサブセット・ディレクトリ２２３ａおよび２２３ｂが管理し続ける限り、プロセッサはこれらのラインを維持することができる。
【００３４】
本発明の実施形態においては、プロセッサ２０１ａ〜２０１ｈは、メインメモリ２３１と直接には通信しない。具体的には、プロセッサ２０１ａ〜２０１ｈは、Ｌ２制御ロジック２１１ａおよび２１１ｂ、スーパーセット・ディレクトリ２２１ａおよび２２１ｂ、Ｌ２データ・アレイ２２９ａおよび２２９ｂを通じてメインメモリ２３１と通信する。
【００３５】
本発明の実施形態においては、サブセット・ディレクトリ２２３ａおよび２２３ｂに接続されるデータ・バスは存在せず、制御ラインがアドレス検索を行い、プロセッサからラインを無効にする。
【００３６】
図２は、互いに分離されたデータ・バス２２７および制御バス２２５を図示している。Ｌ２ブロック２２０ａおよび２２０ｂ（「Ｌ２ノード」とも称される）は、制御ロジック２１１ａおよび２１１ｂ、スーパーセット・ディレクトリ２２１ａおよび２２１ｂ、サブセット・ディレクトリ２２３ａおよび２２３ｂ、ならびにデータ・アレイ２２９ａおよび２２９ｂを含む。
【００３７】
本発明の実施形態においては、スーパーセット・ディレクトリ２２１ａおよび２２１ｂと、サブセット・ディレクトリ２２３ａおよび２２３ｂの間を接続する制御バス２２５は、前者から後者に向かう一方向性のものであることに注意されたい。
【００３８】
本発明の実施形態においては、かかる制御バス２２５は、スーパーセット・ディレクトリ２２１ａおよび２２１ｂからＬＲＵ方式により削除されるディレクトリ・エントリをサブセット・ディレクトリ２２３ａおよび２２３ｂにコピーする。
【００３９】
具体的には、スーパーセット・ディレクトリ２２１ａおよび２２１ｂは、対応するラインをＬＲＵ方式により削除することを通知する信号を制御ロジック２１１ａおよび２１１ｂに送信する。次に、制御ロジック２１１ａおよび２１１ｂは、そのラインをサブセット・ディレクトリ２２３ａおよび２２３ｂに書き込む。
【００４０】
リソースへのアクセスを制御し、キャッシュ・コヒーレンシを保証するためのシステム制御方法およびシステムが提供される。本明細書では、単一の構造（レベル）のシステム、構造体、または方法として本発明の実施形態を説明するが、本明細書を読んだ当業者は、かかる方法、システム、および構造体は、多層構造のシステム、方法、および構造体に拡張することができることに留意されたい。
【００４１】
本発明の実施形態のキャッシュ・データに対するスーパーセット・ディレクトリと、コヒーレンシ管理のみのためのサブセット・ディレクトリを含む、デュアル・システム・キャッシュ・ディレクトリ構造体は、複数のプロセッサと、複数のプロセッサそれぞれに関連するプロセッサ・キャッシュと、複数のプロセッサ全体に関連するシステム・キャッシュを備えるマルチプロセッサ・システムにおいてキャッシュ・コヒーレンシを維持するために有益である。
【００４２】
本発明の実施形態のマルチプロセッサ・システムは、スーパーセット・ディレクトリにエントリを書き込むステップと、サブセット・ディレクトリにそのエントリに関するアドレスおよび呼び出しプロセッサ識別子を書き込むステップと、スーパーセット・ディレクトリから該エントリを（例えばＬＲＵ方式に従って）削除するステップと、該エントリに関するアドレスおよび呼び出しプロセッサ識別子をサブセット・ディレクトリ中に維持するステップを含む方法によって動作される。
【００４３】
このようにしてシステム・キャッシュ・データは、プロセッサによってアクセスされた最新のデータをバックアップするためにサブセット・ディレクトリ内でホストされる。こうすることによって、システム・キャッシュ・データ・ヒットのためにサブセット・ディレクトリを評価することを可能になる。加えて、どのプロセッサが、それらが実際に使用しているメモリのどの部分をキャッシュしたかについての記録をサブセット・ディレクトリ内に保持することが可能になる。
【００４４】
以下に、本発明の実施形態のシステム、デュアル・システム・キャッシュ・ディレクトリ構造体、および方法に関連する２つの重要な概念が説明される。
【００４５】
１．システム・キャッシュ
スーパーセット・ディレクトリ２２１ａおよび２２１ｂは、本発明の実施形態によるシステムの制御下にあるプロセッサの、すべての最新の命令およびデータのキャッシュである。システム・キャッシュは以下の２つの機能（１）、（２）を実現する。
（１）データがエージ・アウトするか、プロセッサ・キャッシュから除去されたことを条件に、データをプロセッサ・キャッシュに再び供給すること。
（２）データが１以上のプロセッサによって使用される場合に、そのデータを他のプロセッサに提供すること。
【００４６】
２．システム・キャッシュ・コヒーレンシ
システム・キャッシュ・コヒーレンシは、サブセット・ディレクトリ２２３ａおよび２２３ｂを通して確保される。メインメモリは、必要な場合、またメモリ内容が変更された場合であっても、アクセス時間がプロセッサのスピードに比べて非常に長いため、常にアクセスできるとは限らない。
【００４７】
そのため、本発明の実施形態のシステムにおいて、それぞれのプロセッサ・キャッシュを介してのプロセッサに対するメモリの単一のコヒーレント・ビューを維持する機能を実現する必要がある。本発明の実施形態のシステムは、どのプロセッサが、それらが実際に使用しているメインメモリのどの部分をキャッシュしたかに関する記録を保持することによって、別のプロセッサがメインメモリの当該部分にアクセスする必要がある場合に、適切な機能を実現することができる。
【００４８】
マルチプロセッサ・システムのシステム・キャッシュのサイズを十分に大きくなるようにシステムを設計することが可能ならば、すなわち、システム・キャッシュのサイズが、すべてのプロセッサ・キャッシュのコンテンツがシステム・キャッシュのコンテンツの部分であるという要求（「サブセット・ルール」）を満たすほどに十分に大きいならば、問題は発生しないだろう。
【００４９】
しかし、かかるシステム・キャッシュのサイズが大きすぎて実用的でない場合には、システムを再設計すること、システム・キャッシュをもたないこと、上記のサブセット・ルールが使用可能なプロセッサ・キャッシュを制限すること、あるいは、キャッシュを管理するキャッシュ・ディレクトリおよびキャッシュ・コヒーレンシを管理するキャッシュ・ディレクトリという２つの別々のシステム・キャッシュ・ディレクトリの導入することが必要となるだろう。
【００５０】
本発明の実施形態の方法、システム、およびディレクトリ構造体によれば、システム・キャッシュにデータが格納されないサブセット・システム・キャッシュ・ディレクトリと、スーパーセット・ディレクトリ２２１ａおよび２２１ｂが提供される。すなわち、プロセッサまたはサブセット・ディレクトリだけが、システム・キャッシュ内で使用不可能なデータを有する形態のキャッシュ・ディレクトリが提供されることになる。なお、すべてのプロセッサ・キャッシュ・コンテンツは、システム・キャッシュのコンテンツのサブセットである。
【００５１】
このように、サブセット・ディレクトリはコヒーレンシだけを管理し、サブセット・ディレクトリとスーパーセット・ディレクトリとの両方が、全体として、システム・キャッシュ・コヒーレンシと、実用的なサイズのシステム・キャッシュを取り扱うのに十分な大きさとなる。最新のアクセスされたエントリをホストするスーパーセット・ディレクトリだけがシステム・キャッシュ内に対応するデータを有する。
【００５２】
サイズがＮ＝Ｃ＊Ａ個のエントリである図１のシステム・キャッシュ１１５、または図２のスーパーセット・キャッシュ・ディレクトリ２２１およびサブセット・キャッシュ・ディレクトリ２２３を、本発明の実施形態を説明するための例として考えることとする。
【００５３】
なお、Ｃはそれぞれが可能な値の一つに対応するメモリの一組のアドレスを表す合同クラス（ｃｏｎｇｒｕｅｎｃｅ  ｃｌａｓｓ）の数であり、Ａは合同クラスを選択するために用いられる同じアドレス・マッピングを共有できるキャッシュ・エントリの数（すなわち、それぞれの合同クラスの関連度）であるものとする。
【００５４】
典型的なコンピュータ・キャッシュの設計に従う図１のシステム・キャッシュ１１５は、上記の構造に加えて、類似のＮ＝Ｃ＊Ａの構造を有する対応するキャッシュ・ディレクトリを有する。キャッシュ・ディレクトリの各エントリは、対応するキャッシュ・エントリを表わし、かつ、キャッシュ・エントリのメモリ・アドレス、データにアクセスした最後のプロセッサ、および、該データがメモリ・コンテンツに関して変更されているかどうかなどの情報を含む。
【００５５】
さらに、ＬＲＵ（最も長い間使われていない）ロジックが、それぞれの合同クラスに関して、その合同クラス内でＬＲＵ（最も長い間使われていない）からＭＲＵ（最も最近使われた）までのエントリを管理するために存在する。
【００５６】
ＬＲＵロジックの一般的な動作は以下の１および２に記載される通りである。
１．アップデート動作。アドレスがディレクトリ内で検出されたことに応答して、ＭＲＵ（Ｍｏｓｔ  Ｒｅｃｅｎｔｒｙ  Ｕｓｅｄ）エントリが作成され、そのエントリとＭＲＵの位置との間にあるすべてのエントリに取って代わる。
２．インストール動作。アドレスがディレクトリ内で検出されなかった場合、ある場所がそのためにクリアされ、ＬＲＵ（最も長い間使われていない）エントリを選択し、それを新しいエントリで置き換え、さらに新しいエントリをＭＲＵエントリとする。
【００５７】
ここで、説明をシステム・キャッシュに戻すこととする。Ｎ個のエントリが効率的なシステム・キャッシュ・コヒーレンシを確保するのに不十分である一方で、２＊Ｎ個のエントリが効率的なシステム・キャッシュ・コヒーレンシを確保するのに十分であるものとする。
【００５８】
このような場合、図２のキャッシュ２２１、２２３に示されるように、システム・キャッシュはＮ個のエントリに保たれるが、システム・キャッシュ・ディレクトリは、倍の２＊Ｎ個となる。既存のディレクトリはスーパーセット・ディレクトリ（データがバックアップされたディレクトリ）と呼ばれ、新しく加えられたエントリはサブセット・ディレクトリ（データ無し、コヒーレンシ・ディレクトリ）と呼ばれる。
【００５９】
本発明の実施形態では、サブセット・ディレクトリおよびスーパーセット・ディレクトリのペアがアップデート機能およびインストール機能の両方を実行する。特定のアドレスを検索するときは、両方のディレクトリが並行してアクセスされる。
【００６０】
新しいスーパーセット・ディレクトリ・エントリが変更のためにインストールされ、同じエントリのヒットがサブセット・ディレクトリ中に検出されたことに応答して、そのサブセット・ディレクトリのエントリは無効にされ、サブセット・ディレクトリによってエントリを格納していると識別されたプロセッサ・キャッシュからも無効にされることになる。
【００６１】
新しいスーパーセット・ディレクトリがインストールされ、同じエントリのヒットがサブセット・ディレクトリ中に検出されたことに応答して、そのエントリはサブセット・ディレクトリから無効にされる。加えて、以下の１〜３が実施される。
１．新しいエントリが共有され、サブセット・ディレクトリ・エントリが共有される場合は、そのエントリの状態はスーパーセット・ディレクトリ・エントリ内にマージされ、一方サブセット・ディレクトリによって該エントリをホストしていると識別されたプロセッサ内では、該エントリはもとのままに残される。
２．新しいエントリが変更されることになり、サブセット・ディレクトリが共有される場合、該エントリ／データは、サブセット・ディレクトリによって該エントリを有すると識別されたすべてのプロセッサから無効にされる。
３．サブセット・ディレクトリ内のエントリが変更される場合は、適切なコヒーレンシ管理が、特定の実装によって要求されるように実行される。
【００６２】
新しいスーパーセット・ディレクトリのインストールが、そのスーパーセット・ディレクトリからＬＲＵ方式による削除を要求したことに応答して、当該エントリはやはりシステム・キャッシュから除去されるが、スーパーセット・ディレクトリ内のエントリは無効にされず、その代わりにサブセット・ディレクトリ内に移行させられる。
【００６３】
このスーパーセットからサブセットへのディレクトリの移行に伴って、サブセット・ディレクトリからのＬＲＵ方式による削除を必要となった場合、サブセット内のディレクトリによってディレクトリを格納していると識別されたすべてのプロセッサからの削除も必要になる。
【００６４】
サブセット・ディレクトリの無効化の結果として、データがプロセッサから無効にされる場合、もしそのデータがメインメモリのコピーと異なる場合には、逆にメインメモリにエントリを書き込むなどの適切な動作が実施される。
【００６５】
なお、上述のサブセット・ディレクトリの無効化は、例えば、同じエントリのヒットがサブセット・ディレクトリ内に検出されるインストールされた新しいスーパーセット・ディレクトリによるか、またはスーパーセット・ディレクトリからのＬＲＵ方式による削除を必要とする新しいスーパーセット・ディレクトリのインストールにより発生する。
【００６６】
本発明の実施形態においては、スーパーセット・ディレクトリおよびサブセット・ディレクトリは対称的であるので、スーパーセット・ディレクトリからサブセット・ディレクトリに移行するために特別なロジックが不要である。
【００６７】
すなわち、スーパーセット・ディレクトリ（［Ｃ］［Ａ］）からあるエントリがＬＲＵ方式により削除されたことに応答して、そのエントリはサブセット・ディレクトリ（［Ｃ］［Ａ］）内に移行するので、スーパーセット・ディレクトリだけが、ＬＲＵ／ＭＲＵロジックを必要とすることとなるのである。
【００６８】
本発明の実施形態は、システム・キャッシュのサイズがすべてのプロセッサ・キャッシュのコンテンツを格納するのに不十分である場合に、データ・キャッシュのためのキャッシュ・ディレクトリと、コヒーレンシを維持するためのキャッシュ・ディレクトリからなるデュアル・システム・ディレクトリ構造体と関連する。
【００６９】
特定の好ましい実施形態および例示に関して本発明を説明したが、本発明の範囲をそれによって限定することを意図するものではなく、本発明は添付の特許請求の範囲によってのみ限定される。
【図面の簡単な説明】
【００７０】
【図１】複数のプロセッサを備えるマルチプロセッサ・システムの高水準の概念図である。
【図２】本発明の実施形態によるデュアル・システム・キャッシュ・ディレクトリ構造体を含むシステム・キャッシュを備えるマルチプロセッサ・システムの高水準の概念図である。
【符号の説明】
【００７１】
１０１，１０３：プロセッサ
１０１Ａ、１０３Ａ：プロセッサ・キャッシュ
１１１：データ・バス
１１５：システム・キャッシュ
１１７：バス
１３１：メインメモリ
２０１ａ〜ｈ：プロセッサ
２２０ａ、２２０ｂ：Ｌ２ブロック
２１１ａ、２１１ｂ：制御ロジック
２２１ａ、２２１ｂ：スーパーセット・ディレクトリ
２２３ａ、２２３ｂ：サブセット・ディレクトリ
２２５：制御バス
２２７：データ・バス
２２９ａ、２２９ｂ：Ｌ２データ・アレイ
２３１：メインメモリ
【図１】
2007193805.tif 000003
【図２】
2007193805.tif 000004