(57)【要約】【課題】　複数のプロセッサ間でキャッシュを共有する装置及び方法を提供すること。【解決手段】　複数のプロセッサ(114)と、キャッシュデータアレイ(118)と、前記プロセッサを前記キャッシュデータアレイに接続するクロスバーインタフェース(122)を有する処理システム(100)。各プロセッサ(114)はキャッシュデータアレイにマッピングされたタグアレイ(132)を含む。他の実施形態では、キャッシュデータアレイ(118)はクロスバーインタフェース(122)の複数のポート(128)を介してアクセス可能な複数のサブアレイ(124)を含む場合がある。システム(100)は、キャッシュ待ち時間を短縮しつつ、上位レベルのキャッシュデータアレイを複数のプロセッサ間で共有することを可能にする。【選択図】　図２
2004078958.tif 000002
【特許請求の範囲】
【請求項１】
　複数のプロセッサ(114)と、キャッシュデータアレイ(118)と、前記プロセッサを前記キャッシュデータアレイに接続するクロスバーインタフェース(122)とからなる処理システム(100)であって、前記プロセッサの各々が前記キャッシュデータアレイにマッピングされたタグアレイ(132)を含む、処理システム。
【請求項２】
　前記複数のプロセッサ(114)により前記データアレイ(118)への並列アクセスが可能であるようにさらに構成される、請求項１の処理システム。
【請求項３】
　前記データアレイ(118)は、前記クロスバーインタフェース(122)の複数のポート(128)を介してアクセス可能な複数のサブアレイ(124)を含む、請求項２の処理システム。
【請求項４】
　前記データアレイ(118)が複数のサブアレイ(124)を含み、前記タグアレイ(132)の各々が前記サブアレイ(124)のうちの少なくとも１つにマッピングされる、請求項１の処理システム。
【請求項５】
　前記サブアレイ(124)が異なるサイズを有する、請求項４の処理システム。
【請求項６】
　前記サブアレイ(124)の数が前記タグアレイ(132)の数と異なる、請求項４の処理システム。
【請求項７】
　複数のプロセッサ(114)と、前記プロセッサのうちの少なくとも１つによって要求されたメモリ(162)からのデータを保持するための複数のキャッシュデータサブアレイ(124)とからなり、前記サブアレイの各々が前記プロセッサとインタフェースするためのクロスバーポート(128)を備える、処理システム(100)。
【請求項８】
　前記プロセッサ(114)の各々が前記サブアレイ(124)のうちの少なくとも１つにマッピングされたタグアレイ(132)を含む、請求項７の処理システム。
【請求項９】
　前記タグアレイ(132)はデータラインが格納されるウェイ(190)を含み、該ウェイが前記サブアレイ(124)のうちの１つに関連付けられている、請求項８の処理システム。
【請求項１０】
　前記プロセッサ(114)の各々は、前記キャッシュデータサブアレイのうちの１つにアクセスするのと同時に、別のプロセッサが前記キャッシュデータサブアレイ(124)のうちの別のものにアクセスするように構成される、請求項８の処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、概してマルチプロセッサシステムに関し、特に、マルチプロセッサシステムにおいてプロセッサ間でキャッシュメモリを共有することに関する。
【背景技術】
【０００２】
　マルチプロセッサシステムにおけるプロセッサは通常、システムの主記憶装置に格納されたデータに高速にアクセスするため、階層キャッシュを利用している。第１レベルのかかる階層は通常、プロセッサに統合することが可能な小容量の高速一次（Ｌ１）キャッシュである。上位レベルのキャッシュメモリは一般に、プロセッサ間で共有される。プロセッサは通常、タグアレイおよびデータアレイが格納されている共有二次（Ｌ２）キャッシュメモリへのアクセスを調停する。例えば中央アービタなどの調停ロジックによって駆動されるキャッシュコントローラは、プロセッサがＬ２キャッシュへのアクセス権を得る順序を決定する。キャッシュコントローラは、Ｌ２タグアレイを用いてＬ２データアレイに格納されたデータにアクセスし、そのデータを要求元のプロセッサに送信する。
【０００３】
　Ｌ２キャッシュへのプロセッサのアクセスは通常直列化されるので、２基以上のプロセッサがＬ２キャッシュを集中的に使用した場合、システムのパフォーマンスが低下することがある。１つの代替策は、Ｌ２キャッシュタグアレイに複数のポートを設けることにより、一度に２基以上のプロセッサがデータを取得できるようにするというものであるが、こうしたシステムには法外な費用がかかる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
　本発明の目的は、プロセッサ間でキャッシュを共有する装置および方法を提供することである。
【課題を解決するための手段】
【０００５】
　本発明は、一実施形態では、複数のプロセッサと、キャッシュデータアレイと、プロセッサをキャッシュデータアレイに接続するクロスバーインタフェースとを備えた処理システムに関する。各プロセッサは、キャッシュデータアレイにマッピングされたタグアレイを有する。
【０００６】
　上記の処理システム実施形態では、プロセッサはクロスバーを介してＬ２キャッシュデータアレイにアクセスすることができ、このクロスバーは他の処理システムルーティングおよび調停機能の実行にも用いることができる。キャッシュデータサブアレイを用いた実施形態では、あるプロセッサがあるクロスバーポートを介してあるＬ２サブアレイにアクセスしているときに、別のプロセッサが別のクロスバーポートを介して別のサブアレイにアクセスすることが可能である。そのため、キャッシュの待ち時間を短縮しつつ、上位レベルのキャッシュデータアレイを複数のプロセッサ間で共有することが可能になる。クロスバーインタフェースは、プロセッサとキャッシュデータアレイとの間のルーティングを行なう。したがって、上位レベルのキャッシュアクセスのために、プロセッサ間を調停する複雑なロジックを設ける必要がなくなる。
【０００７】
　以下に提供する詳細な説明から、本発明を適用することのできる分野がさらに明らかになろう。詳細な説明および具体的な例は本発明の実施形態を示すものであるが、その目的は専ら例示であり、本発明の範囲を限定する意図がないことを理解されたい。
【０００８】
　本発明に対する理解は、詳細な説明および添付の図面からより完全なものになろう。
【発明を実施するための最良の形態】
【０００９】
　以下の本発明の実施形態についての説明は、専ら例示的な性質のものであり、本発明、その適用、または使用を限定する意図は決してない。本発明の実施形態について、二次レベルキャッシュに関して説明するが、本発明はそのように限定されるものではない。本発明の実施形態は、二次レベル（Ｌ２）キャッシュよりも高次のレベルのキャッシュと併せて実施することも可能である。
【００１０】
　図１において、簡略化した従来のマルチプロセッサシステム全体を符号１０で示す。システム１０は、Ｌ２キャッシュ１８を共有する複数のプロセッサ１４を含む。キャッシュ１８は、タグアレイ２２およびデータアレイ２６を備える。データアレイ２６は、少なくとも１基のプロセッサ１４から使用の要求があった主記憶装置（図１に示さず）のデータラインを保持する。タグアレイ２２はデータアレイ２６にマッピングされ、データアレイ２６はタグアレイ２２が示すアドレスに対応するデータを格納する。主記憶装置および他のキャッシュ（図示せず）に関するデータアレイ２６のコヒーレンシは、当技術分野において既知のキャッシュコヒーレンシ技術によって維持される。
【００１１】
　プロセッサは、調停ロジック３４により駆動されるキャッシュコントローラ３０の制御下でキャッシュ１８を共有する。プロセッサ１４には、調停ロジック３４に組み込まれた相対優先順位でキャッシュ１８へのアクセス権が順番に与えられる。プロセッサ１４からのデータ要求は、Ｌ２キャッシュにおいて以下の方法で処理される。キャッシュタグアレイ２２を調べて、要求されたデータがデータアレイ２６に格納されているか否かを判定する。要求されたデータがデータアレイ２６中に存在した場合（すなわち、キャッシュ「ヒット」がある場合）、キャッシュコントローラ３０はそのデータを要求元のプロセッサ１４へ送信する。要求されたデータがデータアレイ２６中に存在しなかった場合（すなわち、キャッシュ「ミス」）、要求されたデータを主記憶装置から取得し、データアレイ２６に格納した後、要求元のプロセッサ１４へ送信する。要求元のプロセッサ１４へのデータの送信も、調停ロジック３４に従い、キャッシュコントローラ３０によって優先順位が付けられる。したがって、キャッシュ１８の使用に関してプロセッサ１４間で競合がある場合、プロセッサ１４は、キャッシュ１８からのデータ取得を待たなければならない場合がある（すなわち、キャッシュ待ち時間が増大することがある）。
【００１２】
　図２において、本発明の一実施形態によるマルチプロセッサシステム全体を符号１００で示す。システム１００は、クロスバーインタフェース１２２を介してキャッシュデータアレイ１１８にリンクされた複数のプロセッサ１１４を含む。図２の実施形態では、キャッシュデータアレイ１１８が複数のサブアレイ１２４を含み、各サブアレイ１２４がクロスバーインタフェース１２２の対応ポート１２８に接続されている。サブアレイ１２４はポート１２８ｄ、１２８ｆ、および１２８ｈに接続され、プロセッサはポート１２８ａ、１２８ｂ、および１２８ｃに接続されている。システム１００の他のエージェント、たとえばメモリコントローラ１３０、主記憶装置１６２、および入出力モジュール（図示せず）も、ポート１２８ｅおよび１２８ｇを介してクロスバー１２２に接続することが可能である。
【００１３】
　後で詳しく説明するように、データアレイ１１８は、少なくとも１基のプロセッサ１１４からデータ要求を受けたとき、主記憶装置１６２から取得したデータラインを格納するように構成されている。図２の実施形態では、３つのキャッシュデータサブアレイ１２４が、主記憶装置１６２の相互に排他的な部分（３番目）から取得したデータラインをそれぞれ格納するように構成されている。３より多いサブアレイや３より少ないサブアレイを用いた他の実施形態も可能である。また、後で詳しく説明するように、サブアレイを使用せずにデータアレイ１１８を構成する実施形態も考えられる。
【００１４】
　各プロセッサ１１４は、データアレイ１１８内のデータラインの位置を記述するタグアレイ１３２を有する。図２の実施形態では、各プロセッサ１１４がそれぞれ専用のタグアレイ１３２を有している。他の実施形態として、２基以上のプロセッサ１１４で１つのタグアレイ１３２を共有することもできる。各プロセッサ１１４がデータアレイ１１８全体を使用するように構成される実施形態では、各タグアレイ１３２がデータアレイ１１８全体にマッピングされる。プロセッサ１１４がデータアレイ１１８の一部しか使用しない実施形態も考えられる。そのようなプロセッサのタグアレイ１３２は、データアレイ１１８の全体に満たない部分にマッピングされる。
【００１５】
　タグアレイ１３２およびデータアレイ１１８の構成には、様々なマッピング方法を用いることができる。例えば、図３に全体を符号１４０示す３ウェイセット・アソシエイティブマッピング方式を用いて、主記憶装置１６２に関するタグアレイ１３２およびデータアレイ１１８を構成することができる。図３に示すように、タグアレイ１３２のうちの１つは、そのタグアレイ１３２が示す主記憶装置１６３アドレスに対応するデータを格納するデータアレイ１１８にマッピングされる。主記憶装置１６２に格納されるデータライン１６６は、データライン１６６の長さがキャッシュデータアレイ１１８中のデータ格納ライン１７８の長さと等しくなるように、キャッシュライン境界１７０に位置合わせされる。
【００１６】
　後で詳しく説明するように、主記憶装置１６２中のデータの各アドレスの所定数の上位ビットは、タグ参照１８２として使用することができる。また、主記憶装置１６２は複数のグループ１８４に分割されているものとして考えることができる。主記憶装置１６２中のデータの各アドレスの所定数の下位ビットは、グループ識別子１８６として使用することができる。図３に示していないが、各主記憶装置１６２アドレスの最下位ビットは、格納されているデータラインの各バイトを参照するのに使用することができる。
【００１７】
　各グループ１８４には、データアレイ１１８に格納されている３つのデータライン１７８のセット１８８が関連付けられる。セット１８８の３つのデータ格納ライン１７８の各々は、データライン１６６をデータアレイ１１８に格納することが可能な３つの「ウェイ」１９０のうちの１つを表すものと考えることができる。データアレイ１１８のサブアレイ１２４は、データを格納することが可能なウェイ１９０に関連して構成される。たとえば、図３に示すように、サブアレイ１２４ａは、ライン１６６が第１のウェイ１９０ａに格納されるデータ記憶ライン１７８を含む。サブアレイ１２４ｂは、ライン１６６が第２のウェイ１９０ｂに格納されるデータ格納ライン１７８を含み、サブアレイ１２４ｃは、ライン１６６が第３のウェイ１９０ｃに格納されるデータ格納ライン１７８を含む。図３に示すウェイ１９０はサブアレイ１２４と１対１の対応になっているが、他の実施形態では、１つのサブアレイに２以上のウェイを関連付けることもできることに留意されたい。たとえば、６ウェイセット・アソシエイティブキャッシュは、キャッシュデータアレイの３つのサブアレイの各々が２つのウェイに格納されるラインを保持するように構成することもできる。
【００１８】
　タグアレイ１３２は、キャッシュデータアレイ１１８中のすべてのデータ格納ライン１７８について、対応する要素１９２を有する。タグアレイ要素１９２は、キャッシュデータアレイセット１８８（および主記憶装置１６２中のグループ１８４）に対応するセット１９４に配置される。したがって、タグアレイ１３２は、データライン１６６がデータアレイ１１８に格納されるウェイ１９０を反映している。本明細書で用いる「要素」なる語は、アレイ内の位置（そこを占めているのは有効データである場合もそうでない場合もある）と定義される。タグアレイ１３２の各要素１９２は、タグエントリ１９６および「有効」ビット１９８を含む。また、図３には示していないが、タグアレイ要素１９２には、キャッシュコヒーレンシに関する情報も格納することができる。そのような情報には、当技術分野において既知の「ダーティ」ビットおよび「排他／共有」ビット等の状態ビットが含まれる。
【００１９】
　データライン１６６がキャッシュデータアレイ１１８に書き込まれる場合、そのデータライン１６６は、書き込むデータライン１６６の書き込み元である主記憶装置１６２のグループ１８４に関連付けられた、セット１８８中の３つのデータ格納ライン１７８のうちの１つに書き込まれる。３つのデータ格納ライン１７８のうちのいずれがデータライン１６６を受け取るものとして選択されるかは、データ格納ライン１７８に対応するタグ要素１９２の「有効」ビット１９８の内容に部分的に基づき、これについてはさらに後述する。データライン１６６がデータ格納ライン１７８に書き込まれるとき、主記憶装置１６２中のデータライン１６６を参照するタグ参照１６２が、タグアレイ１３２の対応するタグエントリ１９６に書き込まれる。また、対応する「有効」ビット１９８も、データライン１６６の書き込み先のデータ格納ライン１７８が有効データを格納していることを示すように更新される。
【００２０】
　上記のように、主記憶装置１６２の各ラインアドレスは、タグ参照１８２とグループ参照１８６とを含む。プロセッサ１１４が主記憶装置１６２中のアドレスのデータを要求すると、要求されたアドレスのグループ参照１８６に対応するタグアレイセット１９４の要素１９２が、要求されたアドレスのタグ参照１８２について検査される。キャッシュミスが発生した場合、要求されたデータラインは主記憶装置１６２から取得され、データアレイ１１８に格納される。データラインは、少なくとも１つの配置換えアルゴリズムの制御下でデータアレイ１１８に格納され、これについては以下にさらに述べる。
【００２１】
　キャッシュヒットが発生した場合、要求されたデータライン１６６は以下のようにしてキャッシュデータアレイ１１８から取得される。要求されたライン１６６を指すタグアレイ要素１９２は、要求されたライン１６６がデータアレイセット１８８内で有する相対位置と同じ相対位置をそのタグセット１９４内で有する。すなわち、要求されたデータライン１６６を格納するウェイ１９０は、タグアレイとデータアレイの両方に反映される。また、ウェイ１９０は、データライン１６６を格納しているサブアレイ１２４を識別し、適当なサブアレイ１２４にアクセスするために使用すべきクロスバーポート１２８（図２に示す）も識別する。具体的には、プロセッサ１１４は、サブアレイ１２４とポート１２８との間の予め設定された対応関係を用いることにより、あるいは、プロセッサに格納された経路表（図示せず）を用いることにより、適当なポート１２８を識別することができる。プロセッサ１１４は、クロスバー１２２を介してデータ要求をサブアレイ１２４に送信する。要求されたデータライン１６６は、適当なサブアレイ１２４からクロスバー１２２を介して要求元のプロセッサ１１４に送信される。
【００２２】
　図４において、直接マッピングを使用してタグアレイおよび３つのデータサブアレイを構成する方法の一実施形態の全体を符号２００で示す。図４に示すように、プロセッサ２３４のタグアレイ２３２はデータアレイ２１８にマッピングされ、データアレイ２１８はタグアレイ２３２が示す主記憶装置２６２アドレスに対応するデータを格納している。データアレイ２１８には３つのサブアレイ２２４ａ、２２４ｂおよび２２４ｃが含まれ、各サブアレイ２２４がクロスバー（図示せず）のポート２２８ａ、２２８ｂ、および２２８ｃを介してプロセッサ２３４に接続されている。
【００２３】
　各主記憶装置グループ２８４には、データアレイ２１８中のデータ格納ライン２７８が関連付けられている。タグアレイ２３２は、データアレイ２１８中のすべてのデータ格納ライン２７８について、対応する要素２９２を有する。したがって、各タグアレイ要素２９２には、３つのサブアレイ２２４のうちの１つが関連付けられる。タグアレイ２３２の各要素２９２は、タグエントリ２９６および「有効」ビット２９８を含む。図４には示していないが、タグアレイ要素２９２には、キャッシュコヒーレンシに関する情報も格納することができる。
【００２４】
　データライン２６６がキャッシュデータアレイ２１８に書き込まれる場合、そのデータライン１６６は、書き込むデータライン２６６の書き込み元である主記憶装置２６２のグループ２８４に関連付けられたデータ格納ライン２７８に書き込まれる。データライン２６６がデータ格納ライン２７８に書き込まれるとき、主記憶装置２６２中のデータライン２６６を参照するタグ２８２が、タグアレイ２３２の対応するタグエントリ２９６に書き込まれる。また、対応する「有効」ビット２９８も更新される。
【００２５】
　プロセッサ２３４が主記憶装置２６２中のあるアドレスのデータを要求すると、要求されたアドレスのグループ参照２８６に対応するタグ要素２９２のタグエントリ２９６が、要求されたアドレスのタグ参照２８２について検査される。キャッシュミスが発生した場合、上記のように、要求されたデータは主記憶装置２６２から取得され、データアレイ２１８に格納される。キャッシュヒットが発生した場合、データライン２６６は以下のようにキャッシュデータアレイ２１８から取得される。要求されたデータライン２６６のタグアレイ要素２９２の位置は、要求されたデータライン２６６を格納している特定のサブアレイ２２４を識別し、要求されたデータラインを取得することが可能なクロスバーポート２２８も識別する。要求されたデータライン２６６は、適当なサブアレイ２２４からクロスバーポート２２８を介してプロセッサ２３４に送信される。
【００２６】
　上記の実施形態は３ウェイセットアソシエイティブおよび直接マッピングについて説明したものであるが、４以上の「ウェイ」を用いたセットアソシエイティブマッピングを使用する他の実施形態も考えられる。そのような実施形態では、図３を参照して、２以上の「ウェイ」１９０を特定のサブアレイ１２４に関連付けることができる。また、他の実施形態のマッピングには、２以下の「ウェイ」を用いたアソシエイティブマッピングも含まれる。さらに、複数のキャッシュデータサブアレイのサイズが互いに異なる実施形態も可能である。たとえば、あるサブアレイがプロセッサによって集中的に使用される傾向のあるデータを格納している一方、別のサブアレイは比較的使用頻度の低いデータを格納しているというようにデータが主記憶装置内で分散している場合、使用頻度の高いサブアレイは、使用頻度の低いサブアレイよりも大きく構成することができる。そのような環境では、このようにしてキャッシュミスの回数を減らすことができる。
【００２７】
　図５に全体を符号３００で示すマッピングの他の例示的実施形態では、プロセッサ３３４のタグアレイ３３２がデータアレイ３１８にマッピングされる。データアレイ３１８は、クロスバー３３６のポート３２８ａ〜ｄを介してプロセッサ３３４にそれぞれ接続された４つのサブアレイ３２４ａ、３２４ｂ、３２４ｃ、および３２４ｄを有する。データアレイ３１８は、タグアレイ３３２の指示に従って、主記憶装置メモリ３６２に格納されているラインを格納している。主記憶装置３６２に格納されるデータライン３６６は、データライン３６６の長さがキャッシュデータアレイ３１８中のデータ格納ライン３７８の長さと等しくなるように、キャッシュライン境界３７０に位置合わせされる。各主記憶装置３６２アドレスの所定数の上位ビット（たとえば、図５に示すように２ビット）は、タグ参照３８２として使用される。さらに、主記憶装置３６２は複数のグループ３８４に分割される。各主記憶装置３６２アドレスの所定数の下位ビット（たとえば、図５に示すように４ビット）は、グループ識別子３８６として使用される。
【００２８】
　タグアレイ３３２は、キャッシュデータアレイ３１８中のすべてのデータ格納ライン３７８について、対応する要素３９２を有する。タグアレイ３３２の各要素３９２は、タグエントリ３９６および「有効」ビット３９８を含む。図５には示していないが、タグアレイ要素３９２には、キャッシュコヒーレンシに関する情報、たとえば「ダーティ」ビットおよび「排他／共有」ビットなどを格納することもできる。
【００２９】
　さらに以下に述べるように、データライン３６６がデータアレイ格納ライン３７８に書き込まれる場合、主記憶装置３６２中のそのデータライン３６６を参照するタグ参照３８２が、利用可能なタグエントリ３９６の上位ビット３７４に書き込まれる。さらに、ライン３６６のグループ参照３８６が、そのタグエントリの下位ビット３７６に書き込まれる。したがって、このタグエントリ３９６には、データアレイ３１８に格納されているライン３６６の主記憶装置アドレス全体が格納される。また、対応する「有効」ビット３９８も、データライン３６６の書き込み先であるデータ格納ライン３７８が有効データを格納していることを示すように更新される。
【００３０】
　この実施形態では、データアレイの各サブアレイ３２４に主記憶装置のタグ参照３８２が関連付けられる。ライン３６６が主記憶装置３６２からデータアレイ３１８に書き込まれる場合、そのライン３６６はそのラインのタグ参照３８２に対応するサブアレイ３２４に書き込まれる。また、上記のように、利用可能なタグ要素３９２も更新される。したがって、各サブアレイ３２４はライン３６６をデータアレイ３１８に格納する「ウェイ」を実現するものであり、それらの「ウェイ」は、格納される各ラインに関するタグエントリ３９６の上位ビット３７４に反映される。図５から分かるように、タグ要素３９２はタグアレイ３３２に任意の順序で格納することができ、ライン３６６は対応するサブアレイ３２４に任意の順序で格納することができる。
【００３１】
　プロセッサ３３４が主記憶装置３６２中のあるアドレスのデータを要求する場合、タグアレイのタグエントリ３９６が、要求アドレスについて検査される。キャッシュミスが発生した場合、要求されたデータラインは主記憶装置３６２から取得され、データアレイ３１８に格納される。データラインは、さらに以下に述べるように、少なくとも１つの配置換えアルゴリズムの制御下でデータアレイ３１８に格納される。
【００３２】
　キャッシュヒットが発生した場合、要求されたデータライン３６６は、下記のようにキャッシュデータアレイ３１８から取得される。要求されたデータラインのタグ参照３８２（対応するタグエントリ３９２の上位ビット３７４に反映される）を復号して、いずれのサブアレイ３２４がライン３６６を格納しているかを判定する。データライン３６６が格納されてるサブアレイ３２４を識別することにより、プロセッサ３３４が適当なサブアレイ３２４にアクセスするために使用すべきクロスバーポート３２８も識別される。具体的には、プロセッサ３３４は、サブアレイ３２４とポート３２８との間の予め設定された対応関係を用いることにより、あるいは、プロセッサに格納されている経路表（図示せず）を用いることにより、適当なポート３２８を識別することができる。プロセッサのライン要求が適当なサブアレイ３２４に届くと、グループ参照３８６（対応するタグエントリ３９２の下位ビット３７６に反映される）を用いてそのサブアレイが検査され、要求されたライン３６６が探し出される。要求されたデータライン３６６は、適当なサブアレイ３２４からプロセッサ３３４に送信される。
【００３３】
　他の例示的実施形態を図６に示し、マルチプロセッサシステム全体を符号４００で示す。システム４００は、クロスバーインタフェース４２２を介してキャッシュデータアレイ４１８にリンクされた複数のプロセッサ４１４を含む。クロスバーインタフェースは、少なくとも１つのクロスバー４２４を備える。各プロセッサ４１４は、クロスバー４２４のポート４２６に接続されるとともに、データアレイ４１８にマッピングされた専用タグアレイ４３２を備える。クロスバー４２４は、ポート４２８において、クロスバー４２４の他のポートよりも広い帯域幅の接続を有するように構成される。そのようなクロスバーは、２００２年５月１６日付で出願されたNaffziger他による「Configurable Crossbar and Related Methods」と題する同時係属の米国特許出願第１０／１４７，１９３号に記載されている。クロスバー４２４は、複数のプロセッサ４１４がデータアレイ４１８にアクセスしているときのポート４２８における「ボトルネック」を低減し、またはなくすことができる。システム４００の他のエージェント（図６に示さず）、たとえばメモリコントローラおよび入出力モジュールも、ポート４３０ａおよび４３０ｂを介してクロスバーインタフェース４２２に接続することができる。
【００３４】
　クロスバー４２４は、図７に符号４３４で示す例示的クロスバーを参照してこれから説明する原理に従って構成される。クロスバー４３４は、４つのポート４４４、４４８、４５２、および４５６を備える。各ポート４４４、４４８、４５２、および４５６は、ビット幅の等しい複数のデータミニポート４６０を含む。各ミニポート４６０は、４ビットのビット幅を有する。ポート４４４はミニポート４６０ａ〜４６０ｄを含み、ポート４４８はミニポート４６０ｅ〜４６０ｈを含み、ポート４５２はミニポート４６０ｉ〜４６０ｌを含み、ポート４５６はミニポート４６０ｍ〜４６０ｐを含む。
【００３５】
　各ポート４４４、４４８、４５２、および４５６も、４ビットの制御ビット幅、すなわち４ビット制御接続または制御サブポート４６４を有し、これについてさらに以下に述べる。具体的には、ポート４４４は制御サブポート４６４ａを含み、ポート４４８は制御サブポート４６４ｂを含み、ポート４５２は制御サブポート４６４ｃを含み、ポート４５６は制御サブポート４６４ｄを含む。「制御サブポート」という用語には、明示的な制御サブポートと暗示的な制御サブポートとが含まれる。暗示的な制御サブポートは、制御情報を伝達するためのプロトコルの規定に従ってデータビットを抽出する。明示的な制御サブポートでは、データビット幅が制御ビット幅によって規定されることはない。クロスバー４３４内部のマルチプレクサスイッチ４６８は、クロスバーの４７２側にあるミニポート４６０とクロスバーの４７６側にあるミニポート４６０との間で、データ信号を選択的に接続する。
【００３６】
　さらに後述するように、各制御サブポート４６４は、ミニポート４６０のドメインを選択的に制御するように構成される。具体的には、図７に示すように、制御サブポート４６４ａおよび４６４ｂは、ミニポート４６０ａ〜４６０ｈを含むミニポートドメイン４８０を制御するように、それぞれ別個に構成される。制御サブポート４６４ｃおよび４６４ｄは、ミニポート４６０ｉ〜４６０ｐを含むドメイン４８４を制御するように、それぞれ別個に構成される。
【００３７】
　各ミニポート４６０は、選択ラインまたは選択サブポート４９０を含み、これを用いてドメイン内に所与のミニポート４６０を含む制御サブポート４６４を選択し、その所与のミニポート４６０を介するデータ信号を制御することが可能になっている。各選択サブポート４９０は、たとえば、結線やシステムプログラミングオプションによって設定することができる。このように、制御サブポート４６４を用いてミニポート４６０を構成することにより、クロスバー４３４を通して比較的使用頻度の高い経路については比較的広いデータビット幅を、比較的使用頻度が低い経路については比較的狭いデータビット幅を提供することができる。
【００３８】
　たとえば、図７に示すように、制御サブポート４６４を用いると、ミニポート４６０を接続ポイント４９２、４９４、４９６、および４９８（図６に示すポート４２６、４２８、および４３０等のポートに対応する）として構成することができ、これにより、最大４個のシステムエージェント（図示せず）をクロスバー４３４に接続することが可能になる。接続ポイント４９２および４９６は、２４ビット幅のデータ信号を転送するように構成され、接続ポイント４９４および４９８は、８ビット幅のデータ信号用に構成されている。たとえば、クロスバーの４７２側においてミニポート４６０ａ、４６０ｂ、４６０ｃ、４６０ｄ、４６０ｅ、および４６０ｆの選択ライン４９０が制御サブポート４６４ａから制御用の選択信号を受信した場合、接続ポイント４９２は２４ビットのデータビット幅になる。一方、クロスバーの４７６側においてミニポート４６０ｉ、４６０ｊ、４６０ｋ、４６０ｌ、４６０ｍ、および４６０ｎの選択ライン４９０が制御サブポート４６４ｃから制御用の選択信号を受信した場合、接続ポイント４９６も２４ビットのビット幅になる。したがって、対応する接続ポイント４９２および４９６は、クロスバー４３４を介して２４ビットのデータ接続を行なうことができる。クロスバーの４７２側にある接続ポイント４９４は、ミニポート４６０ｇおよび４６０ｈの選択ライン４９０が制御サブポート４６４ｂから制御用の選択信号を受信した場合、８ビットのビット幅になる。対応する接続ポイント４９８は、ミニポート４６０ｏおよび４６０ｐの選択ライン４９０が制御サブポート４６４ｄから制御用の選択信号を受信した場合、８ビットのビット幅になる。したがって、接続ポイント４９４および４９８は、クロスバー４３４を介して８ビットのデータ接続を行なうことができる。
【００３９】
　接続ポイント４９２、４９４、４９６、および４９８を構成するときに、スイッチ４６８に変更を施す必要がないことに注意して欲しい。さらに、ポート、ミニポート、ミニポートドメイン、選択サブポート、および／または制御サブポートには、複数の代替構成が可能であると考えられる。たとえば、Ｐ個のポートを有し、１ポート当たりＱ個のミニポートを有するクロスバーの場合、ドメインサイズはミニポート１個からミニポートＰ×Ｑ／２個（各々の数を含む）までの範囲をとり得る。図７に示す例では、ポート数Ｐが４、１ポート当たりのミニポート数Ｑが４、ドメインサイズＰ×Ｑ／２がミニポート８個になっている。図７に図示したものと異なる接続ポイントのビット幅、制御ポートのビット幅、及び／又は、ミニポートのビット幅を用いることも可能である。
【００４０】
　システム１００（図２に示す）等の処理システムでは、様々な従来の方法、たとえばＭＥＳＩ（Invalid(無効)、Exclusive(排他)、Shared(共有)、Modified(変更)）プロトコルを用いて、複数のキャッシュ間でコヒーレンシを維持することができる。また、複数のタグアレイが同じキャッシュデータアレイを参照可能な場合は、そのキャッシュデータアレイ中のラインの配置及び／又は再配置に関してコヒーレンシを維持するのに、図８に符号５００で一実施形態の全体を示すようなアルゴリズム及び方法が有用である。アルゴリズム５００について、処理システム１００（図２に示す）およびマッピング方法１４０（図３に示す）を参照して説明する。図８において、プロセッサ１１４に固有の動作全体を符号５００Ａで示す。また、コヒーレンシを制御するシステムエージェント、たとえばメモリコントローラ１３０に固有の動作全体を符号５００Ｂで示す。
【００４１】
　所与のプロセッサ１１４に固有の動作５００Ａは、以下のステップを含む。ステップ５１０で、プロセッサ１１４がデータアレイ１１８のラインを要求し、キャッシュミスが発生した場合、ステップ５１４で、要求元のプロセッサ１１４は要求したラインの主記憶装置アドレスをメモリコントローラ１３０に送信する。メモリコントローラ１３０は、後で動作５００Ｂに関連して説明するように、その要求に応答する。
【００４２】
　ステップ５１８で、メモリコントローラ１３０からのスヌープ要求が検出された場合、ステップ５２２で、そのスヌープ要求に含まれる主記憶装置アドレスを用いてキャッシュヒットを探す。たとえば、図３に示すマッピングを参照し、要求されたアドレスのグループ参照１８６によって指示されたプロセッサタグアレイ１３２中のセット１９４を調べてヒットを探す。ヒットが発生した場合、ステップ５２６で、要求された主記憶装置１６２アドレスのサブセット、例えばタグ参照１８２及びグループ参照１８６（あわせてキャッシュインデックスと呼ばれることもある）を用いて、アドレス指定されたセット中のいずれのウェイが有効であるかを確認する。たとえば、データアレイ１１８中のいずれのウェイ１９０がタグアレイ１３２中に「有効」ビット１９８を有している（これは、有効データの存在を示す）かを確認する。ステップ５３０で、有効ベクトルまたは占有ベクトル（図示せず）をメモリコントローラ１３０に送信する。占有ベクトルの各ビットは、アドレス指定されたセット１８８中の対応するウェイ１９０が有効であるか無効であるかを示すものである。たとえば、図３に示す３ウェイキャッシュの場合、３ビットの占有ベクトルがメモリコントローラ１３０に送信される。
【００４３】
　次に、メモリコントローラ１３０に固有の動作５００Ｂについて説明する。ステップ５５０で、メモリコントローラ１３０がプロセッサ１１４からライン要求を受信すると、ステップ５５４で、メモリコントローラ１３０は要求されたラインの主記憶装置１６２アドレスを含むスヌープ要求を各プロセッサ１１４に発行する。ステップ５５８でメモリコントローラ１３０に返されるプロセッサ１１４のスヌープ応答には、ヒットが発生したか否かが含まれ、キャッシュコヒーレンシを維持するために、そのような状態ビットが当該技術分野において既知の「ダーティ」ビットおよび「排他／共有」ビットとして含まれる。また、各プロセッサ１１４の応答には、ステップ５３０を参照して上で説明したような占有ベクトルも含まれる。
【００４４】
　ステップ５６２で、メモリコントローラ１３０は要求されたデータラインをデータアレイ１１８に格納するための「ウェイ」を割り当てる。この割り当ては、各プロセッサ１１４から返された占有ベクトルに少なくとも部分的に基づいて行なう。具体的には、例えば、アドレス指定されたデータアレイセット１８８中に空いている「ウェイ」がない場合、メモリコントローラは、「犠牲」にするプロセッサ１１４にコマンドを発行し、そのプロセッサのタグアレイ１３２から、メモリコントローラによって割り当てられたウェイ１９０への参照をフラッシュすることにより、そのプロセッサ１１４を犠牲にする。
【００４５】
　ステップ５５４で発行されたスヌープ要求と並行し、ステップ５７０で、メモリコントローラ１３０は要求されたデータラインを主記憶装置１６２からフェッチする。ステップ５７４で、メモリコントローラ１３０は、当技術分野において既知のように、そのデータラインの「クリティカルチャンク(critical chunk)」を要求元プロセッサ１１４のパイプラインに送信する。ステップ５７８で、メモリコントローラ１３０は、割り当て中のウェイ１９０についていずれの「有効」ビット１８９を有効として設定すべきかを要求元プロセッサ１１４に通知する。メモリコントローラ１３０によるプロセッサへの情報の通知は、ステップ５７４及びステップ５７８のいずれで行なうこともでき、個別のメッセージで行なうこともできるし、一度にまとめて行なうこともできるということに注意して欲しい。
【００４６】
　ステップ５７４でクリティカルチャンクを要求元プロセッサに送信するのと並行して、ステップ５８２で、メモリコントローラ１３０は要求されたデータライン全体をキャッシュデータアレイ１１８に送信する。コントローラ１３０は、そのようなデータをキャッシュサブアレイ１２４に送信するとき、上記のように、ウェイ１９０を用いてクロスバー１２２を通るデータラインをルーティングする。また、メモリコントローラ１３０はキャッシュコントローラ（図示せず）がそのデータラインをデータサブアレイ１２４に書き込むのに十分なだけのビット数のラインアドレスも送信し、キャッシュコントローラはそのデータラインをキャッシュサブアレイ１２４に書き込む。
【００４７】
　アルゴリズム５００はキャッシュコヒーレンシの維持について「スヌープ」ベースのモデルを参照して説明されているが、本発明はそのように限定されないことに留意されたい。たとえば、当技術分野において既知のようにキャッシュコヒーレンシの維持にディレクトリベースのモデルを利用した処理システムにおいて使用するための他の実施形態なども考えられる。
【００４８】
　上記の処理システム実施形態は、キャッシュ待ち時間を短縮しつつ、上位レベルのキャッシュデータアレイを複数のプロセッサ間で共有することが可能である。クロスバーインタフェースにより、プロセッサとキャッシュデータアレイとの間のルーティングが可能になる。また、例えば２基のプロセッサがそれぞれ異なるデータサブアレイにアクセスする場合でも、クロスバーによってデータの同時転送が可能になる。さらに、広帯域のクロスバーを用いた実施形態では、複数のプロセッサとキャッシュデータアレイとの間のデータ転送も高速化することができる。したがって、上位レベルのキャッシュアクセスのために、プロセッサを調停する複雑なロジックを設ける必要はもはやない。
【００４９】
　本発明の説明は単に例示的な性質のものであり、本発明の要旨から逸脱しない変形は本発明の範囲内に含めることを意図している。そのような変形は、本発明の思想および範囲から外れるものとみなすべきでない。
【図面の簡単な説明】
【００５０】
【図１】従来技術によるマルチプロセッサシステムを示す図である。
【図２】本発明の一実施形態によるマルチプロセッサシステムを示す図である。
【図３】一実施形態による主記憶装置に対してタグアレイおよびキャッシュデータアレイをマッピングする方法を示す図である。
【図４】一実施形態による主記憶装置に対してタグアレイおよびキャッシュデータアレイをマッピングする方法を示す図である。
【図５】一実施形態による主記憶装置に対してタグアレイおよびキャッシュデータアレイをマッピングする方法を示す図である。
【図６】一実施形態によるマルチプロセッサシステムを示す図である。
【図７】一実施形態によるクロスバー使用経路間における転送ビット幅を設定可能なクロスバーを示す概略図である。
【図８】一実施形態によるマルチプロセッサシステムにおけるプロセッサタグアレイ間でコヒーレンシを維持する方法を示すフロー図である。
【符号の説明】
【００５１】
１００　マルチプロセッサシステム
１１４　プロセッサ
１１８　キャッシュデータアレイ
１２２　クロスバーインタフェース
１２４　サブアレイ
１３２　タグアレイ
１９０　ウェイ
【図１】
2004078958.tif 000003
【図２】
2004078958.tif 000004
【図３】
2004078958.tif 000005
【図４】
2004078958.tif 000006
【図５】
2004078958.tif 000007
【図６】
2004078958.tif 000008
【図７】
2004078958.tif 000009
【図８】
2004078958.tif 000010