(57)【要約】  マルチコアプロセッサ内に分散される共有キャッシュの設計及び動作のためのシステム及び方法が開示される。一実施形態では、共有されるキャッシュを複数のキャッシュモレキュール間に分散させることができる。各キャッシュモレキュールは、アクセス待ち時間の観点から、プロセッサコアのうちの１つの最も近くに位置することができる。一実施形態では、メモリからもたらされるキャッシュラインは最初に、要求しているプロセッサコアに最も近いキャッシュモレキュールではないキャッシュモレキュール内に置くことができる。要求しているプロセッサコアが、そのキャッシュラインに繰返しアクセスするとき、そのキャッシュラインは、キャッシュモレキュール間、又は１つのキャッシュモレキュール内のいずれかで動かされることができる。キャッシュ内でキャッシュラインを動かすことができることから、種々の実施形態において、特別な探索方法を用いて、特定のキャッシュラインの位置を特定することができる。【選択図】  図５
2008525902.tif 000002
【特許請求の範囲】
【請求項１】
インターフェースを介して接続される１組のプロセッサコアと、
同時に探索することができる１組のキャッシュタイルと
を備え、前記１組のキャッシュタイルのうちの第１のキャッシュタイル及び第２のキャッシュタイルが第１のキャッシュラインを受信することになり、前記１組のプロセッサコアのうちの第１のコアから前記第１のキャッシュタイルまでの距離及び前記第２のキャッシュタイルまでの距離は異なる、プロセッサ。
【請求項２】
前記インターフェースはリングである、請求項１に記載のプロセッサ。
【請求項３】
前記リングは時計回りリング及び反時計回りリングを含む、請求項２に記載のプロセッサ。
【請求項４】
前記インターフェースは格子である、請求項１に記載のプロセッサ。
【請求項５】
前記１組のキャッシュタイルのうちの第１のサブセットはそれぞれ、前記１組のプロセッサコアのうちの１つのプロセッサコアに接続され、且つ該１組のプロセッサコアのうちの該１つのプロセッサコアの第１のキャッシュチェーンに関連付けられ、前記１組のキャッシュタイルのうちの第２のサブセットはそれぞれ、前記１組のプロセッサコアのうちの前記１つのプロセッサコアに接続され、且つ該１組のプロセッサコアのうちの該１つのプロセッサコアの第２のキャッシュチェーンに関連付けられる、請求項１に記載のプロセッサ。
【請求項６】
前記１組のプロセッサコアのうちの前記１つのプロセッサコアの前記第１のキャッシュチェーン及び該１組のプロセッサコアのうちの該１つのプロセッサコアの前記第２のキャッシュチェーンはそれぞれ、該１組のプロセッサコアのうちの該１つのプロセッサコアのキャッシュモレキュールに関連付けられる、請求項５に記載のプロセッサ。
【請求項７】
前記１組のプロセッサコアのうちの第１のプロセッサコアによって要求される第１のキャッシュラインは、該第１のプロセッサコアに接続されない第１のキャッシュモレキュール内の第１のキャッシュタイル内に置かれることになる、請求項６に記載のプロセッサ。
【請求項８】
前記キャッシュタイルはそれぞれ、新たなキャッシュラインを配置するためのスコアを指示することになり、前記キャッシュモレキュールはそれぞれ、前記キャッシュタイルの前記スコアから選択されるモレキュール最高スコアを指示することになる、請求項７に記載のプロセッサ。
【請求項９】
前記第１のキャッシュラインは、前記モレキュール最高スコアのうちの全体で最も高いスコアに応答して配置されることになる、請求項８に記載のプロセッサ。
【請求項１０】
前記第１のキャッシュラインは、ソフトウエアクリティカリティの暗示に応答して配置される、請求項７に記載のプロセッサ。
【請求項１１】
前記第１のキャッシュチェーンの前記第１のキャッシュタイル内の前記第１のキャッシュラインは、該第１のキャッシュラインが何度もアクセスされるときに、前記第１のキャッシュチェーンの第２のキャッシュタイルに動かされる、請求項７に記載のプロセッサ。
【請求項１２】
前記第１のキャッシュラインは、立ち退いたキャッシュラインのロケーションに動かされる、請求項１１に記載のプロセッサ。
【請求項１３】
前記第１のキャッシュラインは、前記第２のキャッシュタイルの第２のキャッシュラインと交換されることになる、請求項１１に記載のプロセッサ。
【請求項１４】
前記第１のキャッシュモレキュール内の前記第１のキャッシュラインは、該第１のキャッシュラインが何度もアクセスされるときに、第２のキャッシュモレキュールに動かされる、請求項７に記載のプロセッサ。
【請求項１５】
前記第１のキャッシュラインは、立ち退いたキャッシュラインのロケーションに動かされる、請求項１４に記載のプロセッサ。
【請求項１６】
前記第１のキャッシュラインは、前記第２のキャッシュモレキュールの第２のキャッシュラインと交換されることになる、請求項１４に記載のプロセッサ。
【請求項１７】
前記第１のキャッシュモレキュール内の前記第１のキャッシュラインのルックアップ要求は、前記第１のキャッシュチェーンの全てのキャッシュタイルに同時に送信されることになる、請求項７に記載のプロセッサ。
【請求項１８】
前記第１のキャッシュラインのルックアップ要求は、前記キャッシュモレキュールに同時に送信されることになる、請求項７に記載のプロセッサ。
【請求項１９】
前記キャッシュモレキュールはそれぞれ、第１のテーブルにヒットメッセージ又はミスメッセージを返す、請求項１８に記載のプロセッサ。
【請求項２０】
前記第１のテーブルが、前記ヒットメッセージ又は前記ミスメッセージが全てミスを指示するものと判定するとき、存在するキャッシュラインのタグの第２のテーブルに対する探索が行われる、請求項１９に記載のプロセッサ。
【請求項２１】
前記第１のキャッシュラインの第１のタグが前記第２のテーブルにおいて見つけられるとき、該第１のキャッシュラインは、存在するが見つからないものと判定されることになる、請求項２０に記載のプロセッサ。
【請求項２２】
前記キャッシュモレキュールのうちの第１のキャッシュモレキュールは、前記ルックアップ要求を受信した後に、前記第１のキャッシュラインの転送を受け入れるのを拒否することになる、請求項１８に記載のプロセッサ。
【請求項２３】
第１のプロセッサコアに関連付けられるキャッシュタイル内にある第１のキャッシュラインを探索すること、
前記第１のキャッシュラインが前記第１のプロセッサコアに関連付けられる前記キャッシュタイル内で見つけられない場合には、該第１のプロセッサコアではないプロセッサコアに関連付けられる複数の組のキャッシュタイルに前記第１のキャッシュラインの要求を送信すること、及び
レジスタを用いて前記複数の組のキャッシュタイルからの応答を追跡すること
を含む、方法。
【請求項２４】
前記追跡することは、前記応答の予想される数をカウントダウンすることを含む、請求項２３に記載の方法。
【請求項２５】
前記第１のキャッシュラインは、第１のキャッシュタイルから第２のキャッシュタイルに動くことができる、請求項２４に記載の方法。
【請求項２６】
前記応答が全て受信された後に、前記第１のキャッシュラインが前記タイル内で見つけられないことを宣言することをさらに含む、請求項２５に記載の方法。
【請求項２７】
前記第１のキャッシュラインが前記タイル内で見つけられないときに、存在するキャッシュラインのディレクトリを探索することであって、それによって、前記第１のキャッシュラインが存在するが見つからないか否かを判定する、探索することをさらに含む、請求項２６に記載の方法。
【請求項２８】
マーカを検査することによって前記第２のキャッシュタイルからの応答が発行された後に、前記第１のキャッシュラインが前記第２のキャッシュタイルの中に動くのを防ぐことをさらに含む、請求項２３に記載の方法。
【請求項２９】
第１のキャッシュラインを第１のキャッシュタイルに配置すること、及び
前記第１のキャッシュラインを、要求しているプロセッサコアに近い第２のキャッシュタイルに動かすこと
を含む、方法。
【請求項３０】
前記動かす前に、前記要求しているプロセッサコアからの前記第１のキャッシュラインの要求回数をカウントすることをさらに含む、請求項２９に記載の方法。
【請求項３１】
前記要求しているプロセッサコアからの前記第１のキャッシュラインの要求方向を追跡することであって、それによって、該方向に動かすことができるようにする、追跡することをさらに含む、請求項２９に記載の方法。
【請求項３２】
前記動かすことは、前記第１のキャッシュタイルを保持する第１のキャッシュモレキュールと前記第２のタイルを保持する第２のキャッシュモレキュールとの間で動かすことを含む、請求項２９に記載の方法。
【請求項３３】
前記動かすことは、前記要求しているプロセッサコアに接続され、前記第１のキャッシュタイル及び前記第２のキャッシュタイルを保持する第１のキャッシュモレキュール内で動かすことを含む、請求項２９に記載の方法。
【請求項３４】
前記動かすことは、前記第２のキャッシュタイル内の第２のキャッシュラインを立ち退かせることを含む、請求項２９に記載の方法。
【請求項３５】
前記動かすことは、前記第１のキャッシュタイル内の前記第１のキャッシュラインと、前記第２のキャッシュタイル内の第２のキャッシュラインとを交換することを含む、請求項２９に記載の方法。
【請求項３６】
インターフェースを介して接続される１組のプロセッサコアと、同時に探索することができる１組のキャッシュタイルとを備えるプロセッサであって、該１組のキャッシュタイルのうちの第１のキャッシュタイル及び第２のキャッシュタイルが第１のキャッシュラインを受信することになり、該１組のプロセッサコアのうちの第１のコアから該第１のキャッシュタイルまでの距離及び該第２のキャッシュタイルまでの距離は異なる、プロセッサと、
前記プロセッサを入力／出力デバイスに接続するためのシステムインターフェースと、
前記プロセッサから信号を受信するためのネットワークコントローラと
を備える、システム。
【請求項３７】
前記１組のキャッシュタイルのうちの第１のサブセットはそれぞれ、前記１組のプロセッサコアのうちの１つのプロセッサコアに接続され、且つ該１組のプロセッサコアのうちの該１つのプロセッサコアの第１のキャッシュチェーンに関連付けられ、前記１組のキャッシュタイルのうちの第２のサブセットはそれぞれ、前記１組のプロセッサコアのうちの前記１つのプロセッサコアに接続され、且つ該１組のプロセッサコアのうちの該１つのプロセッサコアの第２のキャッシュチェーンに関連付けられる、請求項３６に記載のシステム。
【請求項３８】
前記１組のプロセッサコアのうちの前記１つのプロセッサコアの前記第１のキャッシュチェーン及び該１組のプロセッサコアのうちの該１つのプロセッサコアの前記第２のキャッシュチェーンはそれぞれ、該１組のプロセッサコアのうちの該１つのプロセッサコアのキャッシュモレキュールに関連付けられる、請求項３７に記載のシステム。
【請求項３９】
前記１組のプロセッサコアのうちの第１のプロセッサコアによって要求される第１のキャッシュラインは、該第１のプロセッサコアに接続されない第１のキャッシュモレキュール内の第１のキャッシュタイル内に置かれることになる、請求項３８に記載のシステム。
【請求項４０】
前記第１のキャッシュチェーンの前記第１のキャッシュタイル内の前記第１のキャッシュラインは、該第１のキャッシュラインが何度もアクセスされるときに、前記第１のキャッシュチェーンの第２のキャッシュタイルに動かされる、請求項３９に記載のシステム。
【請求項４１】
前記第１のキャッシュラインは、立ち退いたキャッシュラインのロケーションに動かされる、請求項３９に記載のシステム。
【請求項４２】
前記第１のキャッシュラインは、前記第２のキャッシュタイルの第２のキャッシュラインと交換されることになる、請求項３９に記載のシステム。
【請求項４３】
前記第１のキャッシュモレキュール内の前記第１のキャッシュラインは、該第１のキャッシュラインが何度もアクセスされるときに、第２のキャッシュモレキュールに動かされる、請求項３９に記載のシステム。
【請求項４４】
前記第１のキャッシュモレキュール内の前記第１のキャッシュラインのルックアップ要求は、前記第１のキャッシュチェーンの全てのキャッシュタイルに同時に送信されることになる、請求項３９に記載のシステム。
【請求項４５】
前記第１のキャッシュラインのルックアップ要求は、前記キャッシュモレキュールに同時に送信されることになる、請求項３９に記載のシステム。
【請求項４６】
第１のプロセッサコアに関連付けられるキャッシュタイル内にある第１のキャッシュラインを探索するための手段と、
前記第１のキャッシュラインが前記第１のプロセッサコアに関連付けられる前記キャッシュタイル内で見つけられない場合には、１組のプロセッサコアに前記第１のキャッシュラインの要求を送信するための手段と、
レジスタを用いて前記１組のプロセッサコアからの応答を追跡するための手段と
を備える、装置。
【請求項４７】
前記追跡するための手段は、前記応答の予想される数をカウントダウンするための手段を含む、請求項４６に記載の装置。
【請求項４８】
前記第１のキャッシュラインは、第１のキャッシュタイルから第２のキャッシュタイルに動くことができる、請求項４７に記載の装置。
【請求項４９】
前記応答が全て受信された後に、前記第１のキャッシュラインが前記タイル内で見つけられないことを宣言するための手段をさらに備える、請求項４８に記載の装置。
【請求項５０】
前記第１のキャッシュラインが前記タイル内で見つけられないときに、存在するキャッシュラインのディレクトリを探索するための手段であって、それによって、前記第１のキャッシュラインが存在するが見つからないか否かを判定する、探索するための手段をさらに備える、請求項４９に記載の装置。
【請求項５１】
マーカを検査することによって前記第２のキャッシュタイルからの応答が発行された後に、前記第１のキャッシュラインが前記第２のキャッシュタイルの中に動くのを防ぐための手段をさらに備える、請求項４８に記載の装置。
【請求項５２】
第１のキャッシュラインを第１のキャッシュタイルに配置するための手段と、
前記第１のキャッシュラインを、要求しているプロセッサコアに近い第２のキャッシュタイルに動かすための手段と
を備える、装置。
【請求項５３】
前記動かす前に、前記要求しているプロセッサコアからの前記第１のキャッシュラインの要求回数をカウントするための手段をさらに備える、請求項５２に記載の装置。
【請求項５４】
前記要求しているプロセッサコアからの前記第１のキャッシュラインの要求方向を追跡するための手段であって、それによって、該方向に動かすことができるようにする、追跡するための手段をさらに備える、請求項５２に記載の装置。
【請求項５５】
前記動かすための手段は、前記第１のキャッシュタイルを保持する第１のキャッシュモレキュールと前記第２のタイルを保持する第２のキャッシュモレキュールとの間で動かすための手段を含む、請求項５２に記載の装置。
【請求項５６】
前記動かすための手段は、前記要求しているプロセッサコアに接続され、前記第１のキャッシュタイル及び前記第２のキャッシュタイルを保持する第１のキャッシュモレキュール内で動かすための手段を含む、請求項５２に記載の装置。
【請求項５７】
前記動かすための手段は、前記第２のキャッシュタイル内の第２のキャッシュラインを立ち退かせるための手段を含む、請求項５６に記載の装置。
【請求項５８】
前記動かすための手段は、前記第１のキャッシュタイル内の前記第１のキャッシュラインと、前記第２のキャッシュタイル内の第２のキャッシュラインとを交換するための手段を含む、請求項５６に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は包括的にはマイクロプロセッサに関し、より具体的には、複数のプロセッサコアを備えることができるマイクロプロセッサに関する。
【背景技術】
【０００２】
最新のマイクロプロセッサは、単一の半導体デバイス上に２つ以上のプロセッサコアを備えることができる。そのようなマイクロプロセッサは、マルチコアプロセッサと呼ばれる場合がある。これらの複数のコアを使用することによって、その性能を、単一のコアを用いることによって得られる性能よりも改善することができる。しかしながら、従来の共有キャッシュアーキテクチャは、マルチコアプロセッサの設計に対応するのに特に適していない場合がある。ここで、「共有」は、複数のコアがそれぞれ、キャッシュ内のキャッシュラインにアクセスできることを意味することができる。従来のアーキテクチャによる共有キャッシュは、キャッシュラインを格納するための１つの共通の構造を用いることがある。レイアウトの制約及び他の要因に起因して、そのようなキャッシュからコアへのアクセス待ち時間は、別のコアへのアクセス待ち時間と異なる場合がある。一般的に、この状況は、種々のコアからのアクセス待ち時間のために「ワーストケース」デザインルールを採用することによって補償することができる。そのようなポリシーは、全てのコアの場合の平均アクセス待ち時間を増やす場合がある。
【０００３】
キャッシュを分割して、種々のプロセッサコアを含む半導体デバイス全体にわたって、その分割された部分を配置することが可能であろう。しかしながら、それだけでは、全てのコアの場合の平均アクセス待ち時間が大幅には短縮されない場合がある。キャッシュの分割された部分が、要求しているコアに物理的に近く配置される場合には、或る特定のコアのアクセス待ち時間が短縮される場合がある。しかしながら、要求しているコアは、半導体デバイス上の要求しているコアから物理的に離れて配置される分割された部分の中に含まれるキャッシュラインにアクセスする場合もある。そのようなキャッシュラインの場合のアクセス待ち時間は、要求しているコアに物理的に近く配置される、キャッシュの分割された部分からのアクセス待ち時間よりも大幅に長くなることがある。
【０００４】
本開示は、添付の図面の複数の図において、例示として示されるが、限定としては示されない。なお、添付の図面において、類似の参照符号は類似の構成要素を指している。
【発明を実施するための最良の形態】
【０００５】
以下の説明は、マルチコアプロセッサにおける、不均等共有キャッシュの設計及び動作のための技法を含む。以下の説明では、本発明をさらに十分に理解してもらうために、ロジックの実施態様、ソフトウエアモジュールの割当て、バス及び他のインターフェースシグナリング技法、並びに動作の詳細のような多数の具体的な詳細が述べられる。しかしながら、そのような具体的な詳細を用いることなく、本発明を実施することができることは当業者には理解されよう。他の事例では、本発明をわかりにくくしないために、制御構造、ゲートレベル回路及び完全なソフトウエア命令シーケンスは詳細には示されない。当業者は、明細書に記述される説明から、むやみに試してみることなく、適切な機能を実現することができるであろう。或る特定の実施形態では、本発明は、Ｉｔａｎｉｕｍ（登録商標）プロセッサファミリ互換プロセッサ（インテル（登録商標）社によって製造されるプロセッサ等）、並びに関連するシステム及びプロセッサファームウエアの環境において開示される。しかしながら、本発明は、Ｐｅｎｔｉｕｍ（登録商標）互換プロセッサシステム（インテル（登録商標）社によって製造されるプロセッサ等）、Ｘ−Ｓｃａｌｅ（登録商標）ファミリ互換プロセッサ、又は他の供給元若しくは設計者のプロセッサアーキテクチャのいずれかによる多種多様な汎用プロセッサのうちのいずれかのような、他の種類のプロセッサシステムで実施することもできる。さらに、いくつかの実施形態は、グラフィックス、ネットワーク、画像、通信、又は任意の他の既知のタイプ、若しくはそれ以外の入手可能なタイプのプロセッサ及びその関連するファームウエアのような専用プロセッサを含むことができるか、又は用いることができる。
【０００６】
ここで図１を参照すると、本開示の一実施形態による、リング相互接続上にあるキャッシュモレキュールの図が示される。プロセッサ１００は、いくつかのプロセッサコア１０２〜１１６と、キャッシュモレキュール１２０〜１３４とを備えることができる。種々の実施形態において、プロセッサコア１０２〜１１６は、共通のコア設計から成る類似の複製品にすることができるか、又は大幅に処理能力が異なる場合がある。キャッシュモレキュール１２０〜１３４は集合的に、従来の単一のキャッシュと同等の機能を有することができる。一実施形態では、それらのモレキュールは２次（Ｌ２）キャッシュを形成することができ、１次（Ｌ１）キャッシュはコア１０２〜１１６内に配置されている。他の実施形態では、それらのキャッシュモレキュールは、キャッシュ階層全体の中の異なるレベルに配置される場合がある。
【０００７】
コア１０２〜１１６及びキャッシュモレキュール１２０〜１３４は、時計回り（ＣＷ）リング１４０及び反時計回り（ＣＣＷ）リング１４２から成る、冗長な双方向リング相互接続で接続されるものとして示される。リングの各部分は、図示されるモジュールの間で任意のデータを搬送することができる。コア１０２〜１１６はそれぞれ、各キャッシュモレキュール１２０〜１３４と対を成すものとして示される。対にすることは、アクセス待ち時間を短縮するという観点から、コアを「最も近い」キャッシュモレキュールに論理的に関連付けることである。たとえば、コア１０４は、キャッシュモレキュール１２２内のキャッシュラインにアクセスするときに、アクセス待ち時間を最も短くすることができ、他のキャッシュモレキュールにアクセスするときに、アクセス待ち時間が長くなるであろう。他の実施形態では、２つの以上のコアが単一のキャッシュモレキュールを共有することができるか、又は特定のコアに２つ以上のキャッシュモレキュールを関連付けることができる。
【０００８】
特定のコアに対するキャッシュモレキュールの待ち時間の順序を記述するために、「距離」のメトリックを用いることができる。いくつかの実施形態では、この距離は、相互接続に沿ったコアとキャッシュモレキュールとの間の物理的な距離に関連付けることができる。たとえば、キャッシュモレキュール１２２とコア１０４との間の距離は、キャッシュモレキュール１２６とコア１０４との間の距離よりも短い場合があり、その距離はさらに、キャッシュモレキュール１２８とコア１０４との間の距離よりも短いことがある。他の実施形態では、単一のリング相互接続、直線相互接続、又は格子相互接続のような、他の形態の相互接続が用いられることがある。それぞれの場合に、特定のコアに対するキャッシュモレキュールの待ち時間の順序を記述するために、距離のメトリックを定義することができる。
【０００９】
ここで図２を参照すると、本開示の一実施形態による、キャッシュモレキュールの図が示される。一実施形態では、キャッシュモレキュールとして、図１のキャッシュモレキュール１２０を用いることができる。キャッシュモレキュール１２０は、Ｌ２コントローラ２１０と、１つ又は複数のキャッシュチェーンとを備えることができる。Ｌ２コントローラ２１０は、相互接続と接続するための１つ又は複数の接続２６０、２６２を有することができる。図２の実施形態では、４つのキャッシュチェーン２２０、２３０、２４０、２５０が示されるが、キャッシュモレキュール内に５つ以上、又は３つ以下のチェーンが存在することもできる。一実施形態では、メモリ内の任意の特定のキャッシュラインが、４つのキャッシュチェーンのうちのただ１つのチェーンにマッピングされることができる。キャッシュモレキュール１２０内の特定のキャッシュラインにアクセスするとき、探索され、アクセスされる必要があるのは、対応するキャッシュチェーンだけである。それゆえ、キャッシュチェーンは、従来のセットアソシアティブキャッシュ内のセットになぞらえることができる。しかしながら、本開示のキャッシュ内に存在する相互接続の数のゆえに、一般的には、類似のキャッシュサイズの従来のセットアソシアティブキャッシュ内のセットよりも、キャッシュチェーンの数を少なくすることができる。他の実施形態では、メモリ内の任意の特定のキャッシュラインは、キャッシュモレキュール内の２つ以上のキャッシュチェーンにマッピングされることがある。
【００１０】
各キャッシュチェーンは、１つ又は複数のキャッシュタイルを含む場合がある。キャッシュチェーン２２０は、キャッシュタイル２２２〜２２８を有するものとして示される。他の実施形態では、キャッシュチェーン内に５つ以上の、又は３つ以下のキャッシュタイルが存在することができる。一実施形態では、キャッシュチェーンのキャッシュタイルはアドレス分割されることはなく、たとえば、キャッシュチェーン内にロードされるキャッシュラインは、そのキャッシュチェーンのキャッシュタイルのいずれかの中に置かれることができる。キャッシュチェーンに沿った相互接続長が異なることに起因して、ただ１つのキャッシュチェーンの中でも、キャッシュタイルへのアクセス時間が異なる場合がある。たとえば、キャッシュタイル２２２からのアクセス待ち時間は、キャッシュタイル２２８からのアクセス待ち時間よりも短いことがある。したがって、特定のキャッシュチェーンに関するキャッシュタイルの待ち時間の順序を記述するために、キャッシュチェーンに沿った「距離」のメトリックを用いることができる。一実施形態では、特定のキャッシュチェーン内の各キャッシュタイルは、そのキャッシュチェーン内の他のキャッシュタイルと同時に探索されることがある。
【００１１】
コアが特定のキャッシュラインを要求し、要求されるキャッシュラインが、そのキャッシュ内に存在しない（「キャッシュミス」）と判定されるとき、そのキャッシュラインは、キャッシュ階層内のメモリに近いキャッシュから、又はメモリから、そのキャッシュ内に取り込まれる場合がある。一実施形態では、最初に、その新たなキャッシュラインを、要求しているコアの近くに配置することができる。しかしながら、実施形態によっては、最初に、要求しているコアから距離を置いて新たなキャッシュラインを配置し、その後、そのキャッシュラインが繰返しアクセスされるときに、そのキャッシュラインを要求しているコアの近くに動かすことが好都合な場合もある。
【００１２】
一実施形態では、新たなキャッシュラインは単に、要求しているプロセッサコアから最も遠いキャッシュタイル内に置かれる場合がある。しかしながら、別の実施形態では、各キャッシュタイルは、キャッシュミス後に新たなキャッシュラインを受信するためのロケーションを割り当てるために、容量、妥当性又は他の受け入れるメトリックを指示することができるスコアを返すことができる。そのようなスコアは、キャッシュタイルの物理的なロケーション、及び潜在的なビクティムキャッシュラインが最後にアクセスされてから経過した時間のような情報を反映することができる。各キャッシュモレキュールが要求されたキャッシュラインへのミスを報告するとき、そのキャッシュモレキュールは、その中のキャッシュタイルによって報告される最も高いスコアを返すことができる。全キャッシュへのミスが判定されると、そのキャッシュは、モレキュールの最高スコアを比較し、全体で最も高いスコアを有するモレキュールを選択して、新たなキャッシュラインを受信することができる。
【００１３】
別の実施形態では、キャッシュは、どのキャッシュラインが最も長い時間使用されなかったか（最長未使用時間：ＬＲＵ）を判定し、ミスの後に新たなキャッシュラインを受け入れるために、そのキャッシュラインを立ち退かせるために選択することができる。ＬＲＵの判定は実施するのが複雑である場合があるので、別の実施形態では、擬似ＬＲＵ置換法が用いられる場合がある。ＬＲＵカウンタを、全キャッシュ内の各キャッシュタイルの各ロケーションに関連付けることができる。キャッシュヒット時に、要求されるキャッシュラインを含む場合があるが、実際には含んでいなかった各キャッシュタイル内の各ロケーションがアクセスされることがあり、そのロケーションのＬＲＵカウンタがインクリメントされる。その後、別の要求されるキャッシュラインが、特定のキャッシュタイル内の特定のロケーションにおいて見つけられるとき、その場所のＬＲＵカウンタはリセットされることができる。このようにして、そのロケーションのＬＲＵカウンタは、各キャッシュタイル内のそのロケーションのキャッシュラインがアクセスされる頻度に関連付けられる値を含むことができる。この実施形態では、キャッシュは、各キャッシュタイル内の最も高いＬＲＵカウンタ値を判定し、その後、全体で最も高いＬＲＵカウンタ値を有するキャッシュタイルを選択して、新たなキャッシュラインを受信することができる。
【００１４】
これらの配置法のいずれかに対する改善は、メモリ内のキャッシュラインのためのクリティカリティの暗示（criticality hint）を使用することを含むことができる。キャッシュラインが、クリティカリティを暗示する命令によってロードされるデータを含むとき、そのキャッシュラインは、転送要求等の或る解放イベントが生じるまで、立ち退きのために選択されなくてもよい。
【００１５】
特定のキャッシュラインが全キャッシュ内に配置されると、そのキャッシュラインを、それを頻繁に要求するコアの近くに動かすことが好都合な場合がある。実施形態に応じて、２種類のキャッシュラインの動かし方に対応することができる。第１の種類の移動はモレキュール間で動かすことであり、その場合、キャッシュラインは、相互接続に沿って、キャッシュモレキュール間で動くことができる。第２の種類の移動はモレキュール内で動かすことであり、その場合、キャッシュラインは、キャッシュチェーンに沿って、キャッシュタイル間で動くことができる。
【００１６】
最初にモレキュール間移動を説明する。一実施形態では、キャッシュラインは、それらのキャッシュラインが要求しているコアによってアクセスされるときには必ず、要求しているコアの近くに動かされることができる。しかしながら、別の実施形態では、キャッシュラインが、特定の要求しているコアによって何度もアクセスされるまで、動かすのを遅らせることが好都合な場合もある。１つのそのような実施形態では、各キャッシュタイルの各キャッシュラインは、所定のカウント値の後に飽和する、関連する飽和カウンタを有することができる。各キャッシュラインは、新たに要求しているコアが、相互接続に沿ったどの方向に配置されるかを判定するための付加ビット及び関連するロジックも有することができる。他の実施形態では、他の形式のロジックを用いて、要求の量又は頻度、及び要求しているコアの場所又は素性を判定することもできる。これらの他の形式のロジックは、相互接続がデュアルリング相互接続ではなく、シングルリング相互接続、直線相互接続又は格子相互接続である実施形態において特に用いられる場合がある。
【００１７】
再び図１を参照すると、一例として、コア１１０を要求しているコアとし、且つ要求されるキャッシュラインが最初にキャッシュモレキュール１３４内に置かれるものとする。コア１１０からのアクセス要求は、キャッシュモレキュール１３４内の要求されるキャッシュラインに関連付けられる付加ビット及びロジックによって、反時計回りの方向からもたらされるものと指示されるであろう。要求されるキャッシュラインの飽和カウンタがその所定の値において飽和するのに必要とされる回数のアクセスが発生した後に、要求されるキャッシュラインを、コア１１０に向かって反時計回りの方向に動かすことができる。一実施形態では、そのキャッシュラインは、キャッシュモレキュール１３２まで、１キャッシュモレキュール分だけ動かされることができる。他の実施形態では、そのキャッシュラインは、一度に、２モレキュール分以上動かされることもある。キャッシュモレキュール１３２内に置かれると、要求されるキャッシュラインは、０にリセットされた新たな飽和カウンタに関連付けられるであろう。コア１１０がその要求されるキャッシュラインにアクセスし続ける場合には、そのキャッシュラインは再び、コア１１０の方向に動かされることができる。一方、そのキャッシュラインが、別のコア、たとえばコア１０４によって繰返しアクセスされ始める場合には、そのキャッシュラインは、コア１０４に近づくように、時計回りの方向に戻される場合がある。
【００１８】
ここで図３を参照すると、本開示の一実施形態による、キャッシュチェーン内のキャッシュタイルの図が示される。一実施形態では、キャッシュタイル２２２〜２２８として、図２のキャッシュモレキュール１２０のキャッシュタイルを用いることができ、それは、図１のコア１０２に対応する最も近いキャッシュモレキュールとして示される。
【００１９】
ここで、モレキュール内移動を説明する。一実施形態では、特定のキャッシュモレキュール内でのモレキュール内移動は、対応する「最も近い」コア（たとえば、そのモレキュールへの最小距離メトリックを有するコア）からの要求に対する応答においてのみ行われる場合がある。他の実施形態では、モレキュール内移動は、他のさらに遠隔したコアからの要求に対する応答において許可されることもある。一例として、対応する最も近いコア１０２が、最初にキャッシュタイル２２８のロケーション２３８にあるキャッシュラインへのアクセスを繰返し要求するものとする。この例では、ロケーション２３８の関連するビット及びロジックが、それらの要求が最も近いコア１１０からなされており、時計回り又は反時計回りのいずれの方向からのものでもないことを指示することができる。ロケーション２３８にある要求されるキャッシュラインの飽和カウンタがその所定の値において飽和するのに必要とされる回数のアクセスが発生した後に、要求されるキャッシュラインは、コア１１０に向かう方向に動かされることができる。一実施形態では、そのキャッシュラインは、キャッシュタイル２２６内のロケーション２３６まで、１キャッシュタイル分だけ近くに動かされることができる。他の実施形態では、一度に、２キャッシュタイル分以上近くに動かされることがある。キャッシュタイル２２６内に置かれると、ロケーション２３６にある要求されるキャッシュラインは、０にリセットされた新たな飽和カウンタに関連付けられる。
【００２０】
モレキュール間移動又はモレキュール内移動のいずれの場合でも、ターゲットにされるキャッシュモレキュール又はターゲットにされるキャッシュタイル内の宛先ロケーションはそれぞれ、動かされるキャッシュラインを受け入れるように選択され、準備される必要がある。いくつかの実施形態では、宛先ロケーションは、従来のキャッシュビクティム法を用いて、キャッシュタイル間若しくはキャッシュモレキュール間で「バブル」が伝搬することによって、又はそのキャッシュラインと、宛先構造（モレキュール又はタイル）内の別のキャッシュラインとを交換することによって、選択し、準備することができる。一実施形態では、宛先構造内にあるキャッシュラインの飽和カウンタ並びに関連するビット及びロジックを検査して、動かされることが望まれるキャッシュラインの方向に戻るように判定を動かそうとしている交換する候補キャッシュラインが存在するか否かを判定することができる。存在する場合には、これら２つのキャッシュラインを交換することができ、それらのキャッシュラインはいずれも、それぞれの要求しているコアに向かって都合良く動くことができる。別の実施形態では、宛先ロケーションを判定するのを助けるために、擬似ＬＲＵカウンタを検査することができる。
【００２１】
ここで図４を参照すると、本開示の一実施形態による、キャッシュラインを探索することに関する図が示される。図１に示されるＬ２キャッシュのような、分散しているキャッシュ内でキャッシュラインを探索するには、最初に、要求されるキャッシュラインが、そのキャッシュ内に存在する（「ヒット」）か、存在しない（「ミス」）かの判定を行なうことが必要とされる場合がある。一実施形態では、対応する「最も近い」キャッシュモレキュールに対して、スコアからのルックアップ要求がなされる。ヒットが見いだされる場合には、その過程は終了する。しかしながら、そのキャッシュモレキュールにおいてミスが見いだされる場合には、他のキャッシュモレキュールに対してルックアップ要求が送信される。その後、他のキャッシュモレキュールはそれぞれ、要求されるキャッシュラインを有するか否かを判定し、ヒット又はミスを返すことができる。この２段階のルックアップは、ブロック４１０によって表すことができる。１つ又は複数のキャッシュモレキュールにおいてヒットが判定される場合には、その過程はブロック４１２において完了する。他の実施形態では、キャッシュラインの探索は、要求しているプロセッサコアの最も近くにある１つ又は複数のキャッシュモレキュール又はキャッシュタイルを探索することによって開始することができる。そこで、キャッシュラインが見つからない場合には、その探索は、要求しているプロセッサコアからの距離の順序で、又は同時に、他のキャッシュモレキュール又はキャッシュタイルを探索し始めることができる。
【００２２】
しかしながら、ブロック４１４において、全てのキャッシュモレキュールがミスを報告する場合には、その過程は必ずしも終了するわけではない。以前に説明されたようなキャッシュラインを動かす技法に起因して、要求されるキャッシュラインは、第１のキャッシュモレキュールから出て、第２のキャッシュラインに入っているが、第１のキャッシュモレキュールは、要求されるキャッシュラインが出た後にミスを報告し、第２のキャッシュモレキュールは、要求されるキャッシュラインが入る前に報告した可能性がある。この状況では、全てのキャッシュモレキュールが、要求されるキャッシュラインに対するミスを報告する可能性があるが、要求されるキャッシュラインは実際には、そのキャッシュ内に依然として存在している。そのような状況におけるキャッシュラインの状態は、「存在するが見つからない」（ＰＮＦ）と呼ばれる場合がある。ブロック４１４では、キャッシュモレキュールによって報告されるミスが、真のミスであるか（その過程はブロック４１６において完了する）、ＰＮＦであるかを見いだすために、さらに判定を行うことができる。ブロック４１８において、ＰＮＦが判定される場合には、実施形態にもよるが、要求されるキャッシュラインが移動間において見つけられるまで、その過程を繰り返すことが必要とされる場合がある。
【００２３】
ここで図５を参照すると、本開示の一実施形態による、不均等キャッシュアーキテクチャ収集サービスの図が示される。一実施形態では、多数のキャッシュモレキュール５１０〜５１８及びプロセッサコア５２０〜５２８を、時計回りリング５５２及び反時計回りリング５５０を有するデュアルリング相互接続で相互接続することができる。他の実施形態では、キャッシュモレキュール又はコアの他の分散形態を用いることができ、且つ他の相互接続を用いることができる。
【００２４】
キャッシュを探索し、報告されたミスが真のミスであるか、ＰＮＦであるかを判定するのを支援するために、一実施形態では、不均等キャッシュ収集サービス（ＮＣＳ）５３０モジュールを用いることができる。ＮＣＳ５３０は、キャッシュからの立ち退きを支援するためのライトバックバッファ５３２を備えることができ、ミスと宣言された同じキャッシュラインへの複数の要求を支援するためのミス状態保持レジスタ（ＭＳＨＲ）５３４も有することができる。一実施形態では、ライトバックバッファ５３２及びＭＳＨＲ５３４は従来通りに設計することができる。
【００２５】
一実施形態では、未完了のメモリ要求の状態を追跡するために、ルックアップ状態保持レジスタ（ＬＳＨＲ）５３６を用いることができる。ＬＳＨＲ５３６は、キャッシュラインへのアクセス要求に応答して、種々のキャッシュモレキュールからヒット報告又はミス報告を受信し、表にすることができる。ＬＳＨＲ５３６が全てのキャッシュモレキュールからミス報告を受信した場合には、真のミスが生じているか、ＰＮＦが生じているかが明らかにならないことがある。
【００２６】
それゆえ、一実施形態では、ＮＣＳ５３０は、真のミスの場合とＰＮＦの場合とを区別するためにフォンブック５３８を備えることができる。他の実施形態では、他のロジック及び方法を用いて、その区別を行うことができる。フォンブック５３８は、全キャッシュ内に存在するキャッシュライン毎に１つのエントリを含むことができる。１つのキャッシュラインがキャッシュの中に持ち込まれるときに、対応するエントリがフォンブック５３８に入力される。そのキャッシュラインが、そのキャッシュから除去されるとき、対応するフォンブックエントリは無効化されるか、又は別の方法で割当てを取り消されることができる。一実施形態では、そのエントリとしてキャッシュラインのキャッシュタグを用いることができるが、他の実施形態では、キャッシュラインのための他の形式の識別子を用いることができる。ＮＣＳ５３０は、任意の要求されるキャッシュラインのためのフォンブック５３８を探索するのを支援するためのロジックを含むことができる。一実施形態では、フォンブック５３８はコンテント・アドレッサブル・メモリ（ＣＡＭ）であってもよい。
【００２７】
ここで図６Ａを参照すると、本開示の一実施形態による、ルックアップ状態保持レジスタ（ＬＳＨＲ）の図が示される。一実施形態では、そのＬＳＨＲとして、図５のＬＳＨＲ５３６を用いることができる。ＬＳＨＲ５３６は多数のエントリ６１０〜６３２を含むことができ、各エントリは、１つのキャッシュラインの未完了の要求を表すことができる。種々の実施形態において、エントリ６１０〜６３２は、要求されるキャッシュライン、及び種々のキャッシュモレキュールから受信されるヒット又はミス報告を記述するためのフィールドを含むことができる。ＬＳＨＲ５３６が、任意のキャッシュモレキュールからヒット報告を受信するとき、ＭＣＳ５３０は、ＬＳＨＲ５３６内の対応するエントリの割当てを取り消すことができる。ＬＳＨＲ５３６が、或る特定の要求されるキャッシュラインの場合に全てのキャッシュモレキュールからミス報告を受信したとき、ＮＣＳ５３０は、真のミスが生じているか、これがＰＮＦの問題であるかを判定するためのロジックを呼び出すことができる。
【００２８】
ここで図６Ｂを参照すると、本開示の一実施形態による、ルックアップ状態保持レジスタエントリの図が示される。一実施形態では、そのエントリは、元の低次キャッシュ要求の指示（ここでは、１次Ｌ１キャッシュからの要求であり、「初期Ｌ１要求」）６４０と、最初に「ミス」に設定されるが、任意のキャッシュモレキュールがそのキャッシュラインへのヒットを報告するときに、「ヒット」にトグルすることができるミス状態ビット６４２と、未完了の応答の数６４４を示すカウントダウンフィールドとを含むことができる。一実施形態では、初期Ｌ１要求は、要求されるキャッシュラインのキャッシュタグを含むことができる。未完了の応答の数６４４のフィールドは最初に、キャッシュモレキュールの全数に設定することができる。初期Ｌ１要求６４０において、要求されるキャッシュラインのための報告が受信される度に、未完了の応答の数６４４をデクリメントすることができる。未完了の応答の数６４４が０に達するとき、ＮＣＳ５３０は、ミス状態ビット６４２を検査することができる。ミス状態ビット６４２がミスのままである場合には、ＮＣＳ５３０は、フォンブック５３８を検査して、これが真のミスであるか、ＰＮＦであるかを判定することができる。
【００２９】
ここで図７を参照すると、本開示の一実施形態による、キャッシュラインを探索するための方法の流れ図が示される。他の実施形態では、図７のブロックによって示される過程の個々の部分が、その過程を実行している間に、時間とともに割当て及び配列し直される場合がある。一実施形態では、図７の方法は、図５のＮＣＳ５３０によって実行することができる。
【００３０】
判定ブロック７１２において開始するとき、キャッシュモレキュールからヒット報告又はミス報告が受信される。その報告がヒットである場合には、その過程はＮＯパスに沿って進み、ブロック７１４において終了する。その報告がミスであり、依然として、未完了の報告が存在する場合には、その過程は未完了パスに沿って進み、再び判定ブロック７１２に入る。しかしながら、その報告がミスであり、且つそれ以上の未完了の報告がない場合には、その過程はＹＥＳパスに沿って進む。
【００３１】
その後、判定ブロック７１８において、ミスしているキャッシュラインがライトバックバッファ内にエントリを有するか否かを判定することができる。エントリを有する場合には、その過程はＹＥＳパスに沿って進み、ブロック７２０において、そのキャッシュライン要求は、キャッシュコヒーレンシ動作の一部として、ライトバックバッファ内のエントリによって満たされることがある。その後、その探索はブロック７２２において終了することができる。しかしながら、ミスしているキャッシュラインがライトバックバッファ内にエントリを有さない場合には、その過程はＮＯパスに沿って進む。
【００３２】
判定ブロック７２６では、キャッシュ内に存在する全てのキャッシュラインのタグを含むフォンブックを探索することができる。フォンブックにおいて一致が見いだされる場合には、その過程はＹＥＳパスに沿って進み、ブロック７２８において、存在するが見つからないという条件を宣言することができる。しかしながら、一致が見いだされない場合には、その過程はＮＯパスに沿って進む。その後、判定ブロック７３０では、同じキャッシュラインへの別の未完了の要求があるか否かを判定することができる。これは、図５のＭＳＨＲ５３４のようなミス状態保持レジスタ（ＭＳＨＲ）を検査することによって実行することができる。要求がある場合には、その過程はＹＥＳブランチに沿って進み、その探索は、ブロック７３４の既存の探索と連結される。先在する要求がなく、且つＭＳＨＲ又はライトバックバッファが一時的にフルである場合のように、資源に制約がある場合には、その過程は、要求をバッファ７３２に入れて、再び判定ブロック７３０に入ることができる。しかしながら、先在している要求がなく、且つ資源に制約がない場合には、その過程は、判定ブロック７４０に入ることができる。
【００３３】
判定ブロック７４０では、キャッシュにおいて要求されるキャッシュラインを受信するためのロケーションを割り当てるのに最良の方法を判定することができる。何らかの理由で、現時点で割当てを行うことができない場合には、その過程は、その要求をバッファ７４２に入れて、後に再び試行することができる。立ち退きを強要することなく、無効状態のキャッシュラインを含むロケーション等への割当てを行うことができる場合には、その過程はブロック７４４に進み、メモリに対する要求を実行することができる。立ち退きを強要することによって、頻繁にはアクセスされていなかった有効状態のキャッシュラインを含むロケーション等への割当てを行うことができる場合には、その過程は判定ブロック７５０に進む。判定ブロック７５０では、ビクティム化されたキャッシュラインの内容のライトバックが必要とされるか否かを判定することができる。必要とされない場合には、ブロック７４４においてメモリへの要求を開始する前に、ブロック７５２において、ビクティムのために除外されたライトバックバッファ内のエントリの割当てを取り消すことができる。必要とされる場合には、ブロック７４４におけるメモリへの要求は、対応するライトバック動作も含むことができる。いずれの場合でも、ブロック７４４のメモリ動作は、ブロック７４６において任意のタグミスを除去することで終了する。
【００３４】
ここで図８を参照すると、本開示の一実施形態による、ブレッドクラムテーブルを有するキャッシュモレキュールの図が示される。キャッシュモレキュール８００のＬ２コントローラ８１０は、ブレッドクラムテーブル８１２を追加されている。一実施形態では、Ｌ２コントローラ８１０がキャッシュラインの要求を受信するときには必ず、Ｌ２コントローラは、そのキャッシュラインのタグ（又は他の識別子）をブレッドクラムテーブル８１２のエントリ８１４に挿入することができる。ブレッドクラムテーブル内のエントリは、要求されるキャッシュラインの未完了の探索が完了するような時点まで、保持されることがある。その後、そのエントリは、割当てを取り消されることができる。
【００３５】
別のキャッシュモレキュールが、キャッシュラインをキャッシュモレキュール８００の中に動かすことを望むとき、Ｌ２コントローラ８１０は最初に、移動候補キャッシュラインが、ブレッドクラムテーブル８１２の中にそのタグを有するか否かを確認することができる。たとえば、移動候補キャッシュラインが要求されるキャッシュラインであり、そのタグがエントリ８１４内に存在する場合には、Ｌ２コントローラ８１０は、移動候補キャッシュラインを受け入れるのを拒否することができる。要求されるキャッシュラインの未完了の探索が完了するまで、このように拒否し続けることができる。その探索は、全てのキャッシュモレキュールが個々のヒット報告又はミス報告を提出した後にのみ完了することができる。これは、転送しているキャッシュモレキュールが、そのヒット報告又はミス報告を提出した後の或る時点まで、要求されるキャッシュラインを保持しなければならないことを意味することができる。この状況では、転送しているキャッシュモレキュールからのヒット又はミス報告は、ミスではなく、ヒットを指示するであろう。このようにして、ブレッドクラムテーブル８１２を使用することにより、存在するが見つからないキャッシュラインが発生しないようにすることができる。
【００３６】
ブレッドクラムテーブルを含むキャッシュモレキュールとともに用いられるとき、図５のＮＣＳ５３０は、フォンブックを削除するように変更することができる。その際、ＬＳＨＲ５３６がキャッシュモレキュールから全てのミス報告を受信したとき、ＮＣＳ５３０は、真のミスを宣言することができ、その探索は、完了したものと見なすことができる。
【００３７】
ここで図９Ａ及び図９Ｂを参照すると、本開示の２つの実施形態による、複数のコア及びキャッシュモレキュールを有するプロセッサを備えるシステムの概略図が示される。図９Ａのシステムは、プロセッサ、メモリ及び入力／出力デバイスがシステムバスによって相互接続されるシステムを概略的に示すのに対して、図９Ｂのシステムは、プロセッサ、メモリ及び入力／出力デバイスが多数のポイント・ツー・ポイントインターフェースによって相互接続されるシステムを概略的に示す。
【００３８】
図９Ａのシステムは、１つ又はいくつかのプロセッサを含むことができるが、ここでは明確にするために、そのうちの２つのプロセッサ４０、６０だけが示される。プロセッサ４０、６０は２次キャッシュ４２、６２を備えることができ、各プロセッサ４０、６０は、それぞれが複数のコアを含むことができ、且つキャッシュ４２、６２はそれぞれが複数のキャッシュモレキュールを含むことができる。図７Ａのシステムは、システムバス６とのバスインターフェース４４、６４、１２、８を介して接続されるいくつかの機能を有することができる。一実施形態では、システムバス６として、インテル（登録商標）社によって製造されるＰｅｎｔｉｕｍ（登録商標）クラスプロセッサで利用されるフロントサイドバス（ＦＳＢ）を用いることができる。他の実施形態では、他のバスを用いることができる。いくつかの実施形態において、メモリコントローラ３４及びバスブリッジ３２はまとめて、チップセットと呼ばれることがある。いくつかの実施形態では、チップセットの機能は、図９Ａの実施形態において示されるのとは異なるように、物理的なチップの間で分割されることがある。
【００３９】
メモリコントローラ３４によって、プロセッサ４０、６０は、システムメモリ１０に対して、且つ基本入力／出力システム（ＢＩＯＳ）消去可能プログラマブルリードオンリーメモリ（ＥＰＲＯＭ）３６に対して、読出し及び書込みを行うことができるようになる。いくつかの実施形態では、ＢＩＯＳ  ＥＰＲＯＭ３６は、フラッシュメモリを利用することができ、ＢＩＯＳの代わりに、他の基本演算ファームウエアを含むこともできる。メモリコントローラ３４は、バスインターフェース８を備え、メモリ読出し及び書込みデータが、システムバス６上でバスエージェントとの間で搬送されるようにすることができる。メモリコントローラ３４は、ハイパフォーマンスグラフィックスインターフェース３９を介して、ハイパフォーマンスグラフィックス回路３８と接続することもできる。或る特定の実施形態では、ハイパフォーマンスグラフィックスインターフェース３９は、アドバンスドグラフィックスポートＡＧＰインターフェースであってもよい。メモリコントローラ３４は、ハイパフォーマンスグラフィックスインターフェース３９を介して、データをシステムメモリ１０からハイパフォーマンスグラフィックス回路３８に送信することができる。
【００４０】
図９Ｂのシステムは、１つ又はいくつかのプロセッサを含むことができるが、ここでは明確にするために、そのうちの２つのプロセッサ７０、８０だけが示される。プロセッサ７０、８０は、２次キャッシュ５６、５８を備えることができ、各プロセッサ７０、８０は、それぞれが複数のコアを含むことができ、且つキャッシュ５６、５８はそれぞれが複数のキャッシュモレキュールを含むことができる。プロセッサ７０、８０はそれぞれ、メモリ２、４と接続するためのローカルメモリコントローラハブ（ＭＣＨ）７２、８２を含むことができる。プロセッサ７０、８０は、ポイント・ツー・ポイントインターフェース５０を介して、ポイント・ツー・ポイントインターフェース回路７８、８８を用いてデータを交換することができる。プロセッサ７０、８０はそれぞれ、ポイント・ツー・ポイントインターフェース５２、５４を介して、ポイント・ツー・ポイントインターフェース回路７６、９４、８６、９８を用いてチップセット９０とデータを交換することができる。他の実施形態では、チップセット機能は、プロセッサ７０、８０内に実装することができる。チップセット９０は、ハイパフォーマンスグラフィックスインターフェース９２を介して、ハイパフォーマンスグラフィックス回路３８とデータを交換することもできる。
【００４１】
図９Ａのシステムでは、バスブリッジ３２によって、システムバス６とバス１６との間でデータを交換できるようになり、いくつかの実施形態では、そのバスは、業界標準アーキテクチャ（ＩＳＡ）バス又は周辺機器相互接続（ＰＣＩ）バスであってもよい。図９Ｂのシステムでは、チップセット９０は、バスインターフェース９６を介して、バス１６とデータを交換することができる。いずれのシステムでも、実施形態によって、ローパフォーマンスグラフィックスコントローラ、ビデオコントローラ、及びネットワーキングコントローラを含む、バス１６上に種々の入力／出力Ｉ／Ｏデバイス１４が存在する場合がある。いくつかの実施形態では、バス１６とバス２０との間でデータを交換できるようにするために、別のバスブリッジ１８を用いることができる。実施形態によって、バスは、小型コンピュータシステムインターフェース（ＳＣＳＩ）バス、インテグレーテッドドライブエレクトロニクス（ＩＤＥ）バス、又はユニバーサルシリアルバス（ＵＳＢ）バスであってもよい。さらに別のＩ／Ｏデバイスをバス２０に接続することができる。これらのデバイスは、キーボード及びマウスを含むカーソル制御デバイス２２と、オーディオＩ／Ｏ２４と、モデム及びネットワークインターフェースを含む通信デバイス２６と、データ記憶デバイス２８とを含むことができる。ソフトウエアコード３０は、データ記憶デバイス２８上に格納することができる。実施形態によって、データ記憶デバイス２８として、固定磁気ディスク、フロッピィディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープ、又はフラッシュメモリを含む不揮発性メモリを用いることができる。
【００４２】
これまでの明細書において、本発明は、その具体的な例示的実施形態を参照しながら説明されてきた。しかしながら、添付の特許請求の範囲において述べられるような本発明の広い精神及び範囲から逸脱することなく、それらの例示的実施形態に対して種々の変更及び改変を行うことができることは明らかであろう。したがって、明細書及び図面は、限定するものと解釈されるのではなく、例示と見なされるべきである。
【図面の簡単な説明】
【００４３】
【図１】本開示の一実施形態による、リング相互接続上のキャッシュモレキュールの図である。
【図２】本開示の一実施形態による、キャッシュモレキュールの図である。
【図３】本開示の一実施形態による、キャッシュチェーン内のキャッシュタイルの図である。
【図４】本開示の一実施形態による、キャッシュラインの探索の図である。
【図５】本開示の別の実施形態による、不均等キャッシュアーキテクチャ収集サービスの図である。
【図６Ａ】本開示の別の実施形態による、ルックアップ状態保持レジスタの図である。
【図６Ｂ】本開示の別の実施形態による、ルックアップ状態保持レジスタエントリの図である。
【図７】本開示の別の実施形態による、キャッシュラインを探索するための方法の流れ図である。
【図８】本開示の別の実施形態による、ブレッドクラムテーブルを有するキャッシュモレキュールの図である。
【図９Ａ】本開示の一実施形態による、複数のコア及びキャッシュモレキュールを有するプロセッサを備えるシステムの概略図である。
【図９Ｂ】本開示の別の実施形態による、複数のコア及びキャッシュモレキュールを有するプロセッサを備えるシステムの概略図である。
【図１】
2008525902.tif 000003
【図２】
2008525902.tif 000004
【図３】
2008525902.tif 000005
【図４】
2008525902.tif 000006
【図５】
2008525902.tif 000007
【図６Ａ】
2008525902.tif 000008
【図６Ｂ】
2008525902.tif 000009
【図７】
2008525902.tif 000010
【図８】
2008525902.tif 000011
【図９Ａ】
2008525902.tif 000012
【図９Ｂ】
2008525902.tif 000013
【国際調査報告】
2008525902.tif 000014
2008525902.tif 000015
2008525902.tif 000016
2008525902.tif 000017
2008525902.tif 000018