(57)【要約】  １次キャッシュ内に異なるキャッシュロケーション長を有するキャッシュシステムの設計及び動作のためのシステム及び方法が開示される。一実施形態では、各１次キャッシュは、２次キャッシュラインの部分を保持することができる、異なる長さを有するキャッシュロケーションから成るグループを含むことができる。共有ベクトル内のデータから状態木を作成することができる。１次キャッシュから要求が到着するとき、２次キャッシュは、状態木のノードを検査して、到来する要求に対応する状態木のノードが既にアクティブであるか否かを判定することができる。この判定結果を用いて、その要求の同時処理を禁止又は許可することができる。【選択図】  図１
2008525904.tif 000002
【特許請求の範囲】
【請求項１】
第１の長さを有するキャッシュロケーションから成る第１のグループと、第２の長さを有するキャッシュロケーションから成る第２のグループとを含む第１のキャッシュを備える第１のコアと、
前記第１のキャッシュよりも前記第１のコアから離れた階層レベルにあり、第３の長さを有するキャッシュロケーションから成る第３のグループを有する第２のキャッシュと、
コヒーレンシ動作を実行し、前記第１のキャッシュ内のキャッシュラインに対応するフィールドを有する前記第３のグループのキャッシュロケーションのうちの１つの中に第１のキャッシュラインのディレクトリエントリを保持するための第１のロジックと
を備える、プロセッサ。
【請求項２】
前記ディレクトリエントリは、前記第１のグループのキャッシュロケーション及び前記第２のグループのキャッシュロケーションの中に前記第１のキャッシュラインの部分が存在するか否かを表すベクトルを含む、請求項１に記載のプロセッサ。
【請求項３】
前記第１の長さを有するキャッシュロケーションから成る第４のグループと、前記第２の長さを有するキャッシュロケーションから成る第５のグループとを含む第３のキャッシュを備える第２のコアをさらに含む、請求項２に記載のプロセッサ。
【請求項４】
前記ベクトルは、前記第４のグループのキャッシュロケーション及び前記第５のグループのキャッシュロケーションの中に前記第１のキャッシュラインの部分が存在するか否かをさらに表す、請求項３に記載のプロセッサ。
【請求項５】
前記第１のキャッシュが状態木の第１のノードに対応するメモリ又はキャッシュ動作を要求するときに、前記第１のロジックは前記ベクトルから該状態木を形成する、請求項４に記載のプロセッサ。
【請求項６】
前記第１のノードが既にアクティブであるとき、前記第１のロジックは前記コヒーレンシ動作を遅延させる、請求項５に記載のプロセッサ。
【請求項７】
前記状態木内の前記第１のノードの先祖が既にアクティブであるとき、前記第１のロジックは前記コヒーレンシ動作を遅延させる、請求項５に記載のプロセッサ。
【請求項８】
前記状態木内の前記第１のノードの子孫が既にアクティブであるとき、前記第１のロジックは前記コヒーレンシ動作を遅延させる、請求項５に記載のプロセッサ。
【請求項９】
前記第１のロジックは、前記第１のノード及び第２のノードの従属性に応じて、該第１のノード及び該第２のノードの許容できる状態のための規則を実施する、請求項５に記載のプロセッサ。
【請求項１０】
前記第２のキャッシュは、前記第１のグループ、前記第２のグループ、前記第４のグループ及び前記第５のグループのキャッシュロケーション内の前記第１のキャッシュラインの部分を得るために、前記第１のキャッシュ及び前記第３のキャッシュに対してなされる要求を追跡するための第１のレジスタグループを含む、請求項３に記載のプロセッサ。
【請求項１１】
前記第２のキャッシュは、前記部分をアセンブルし、前記部分のうちの該アセンブルされた部分の現在値を収集するための第２のロジックを備える、請求項１０に記載のプロセッサ。
【請求項１２】
一群の１次キャッシュのうちの１つからメモリ又はキャッシュ動作の要求を受信することであって、各１次キャッシュは第１の長さを有するキャッシュロケーション及び第２の長さを有するキャッシュロケーションを含む、受信すること、
２次キャッシュにおいて、前記第１の長さを有する前記キャッシュロケーション及び前記第２の長さを有する前記キャッシュロケーションのうちのいずれが、前記要求に対応する該２次キャッシュの第１のキャッシュラインの部分を含むかを判定すること、並びに
前記判定の結果に一部基づいて、前記メモリ又はキャッシュ動作の前記要求を遅延させること
を含む、方法。
【請求項１３】
前記判定することは、ディレクトリ内のベクトルを検査することを含む、請求項１２に記載の方法。
【請求項１４】
前記判定することはさらに、前記２次キャッシュのロジックを用いて、前記ベクトルから状態木を構成することを含む、請求項１３に記載の方法。
【請求項１５】
前記禁止することは、前記要求に対応するノードから前記状態木内の先祖及び子孫に規則を適用することを含む、請求項１４に記載の方法。
【請求項１６】
前記判定が前記第１のキャッシュラインの部分を見つけた、前記一群の１次キャッシュのうちの選択された１次キャッシュに、一群のデータ要求を送信することをさらに含む、請求項１２に記載の方法。
【請求項１７】
レジスタ内で前記データ要求を追跡すること、及び前記部分を収集して前記第１のキャッシュラインの現在値に入れることをさらに含む、請求項１６に記載の方法。
【請求項１８】
第１の長さを有するキャッシュロケーションから成る第１のグループ及び第２の長さを有するキャッシュロケーションから成る第２のグループを含む第１のキャッシュを備える第１のコアと、該第１のキャッシュよりも該第１のコアから離れた階層レベルにあり、第３の長さを有するキャッシュロケーションから成る第３のグループを有する第２のキャッシュと、コヒーレンシ動作を実行し、該第１のキャッシュ内のキャッシュラインに対応するフィールドを有する該第３のグループのキャッシュロケーションのうちの１つの中に第１のキャッシュラインのディレクトリエントリを保持するための第１のロジックとを備えるプロセッサと、
前記プロセッサを入力／出力デバイスに接続するための相互接続と、
前記相互接続によって前記プロセッサに接続されるネットワークコントローラと
を備える、システム。
【請求項１９】
前記ディレクトリエントリは、前記第１のグループのキャッシュロケーション及び前記第２のグループのキャッシュロケーションの中に前記第１のキャッシュラインの部分が存在するか否かを表すベクトルを含む、請求項１８に記載のシステム。
【請求項２０】
前記第１の長さを有するキャッシュロケーションから成る第４のグループと、前記第２の長さを有するキャッシュロケーションから成る第５のグループとを含む第３のキャッシュを備える第２のコアをさらに含む、請求項１９に記載のシステム。
【請求項２１】
前記ベクトルは、前記第４のグループのキャッシュロケーション及び前記第５のグループのキャッシュロケーションの中に前記第１のキャッシュラインの部分が存在するか否かをさらに表す、請求項２０に記載のシステム。
【請求項２２】
前記第１のキャッシュが状態木のノードに対応するコヒーレンシ動作を要求するときに、前記第１のロジックは前記ベクトルから該状態木を形成する、請求項２１に記載のシステム。
【請求項２３】
前記ノードが既にアクティブであるとき、前記第１のロジックは前記コヒーレンシ動作を遅延させる、請求項２２に記載のシステム。
【請求項２４】
前記状態木内の前記ノードの先祖が既にアクティブであるとき、前記第１のロジックは前記コヒーレンシ動作を遅延させる、請求項２３に記載のシステム。
【請求項２５】
前記状態木内の前記ノードの子孫が既にアクティブであるとき、前記第１のロジックは前記コヒーレンシ動作を遅延させる、請求項２４に記載のシステム。
【請求項２６】
一群の１次キャッシュのうちの１つからメモリ又はキャッシュ動作の要求を受信するための手段であって、各１次キャッシュは第１の長さを有するキャッシュロケーション及び第２の長さを有するキャッシュロケーションを含む、受信するための手段と、
２次キャッシュにおいて、前記第１の長さを有する前記キャッシュロケーション及び前記第２の長さを有する前記キャッシュロケーションのうちのいずれが、前記要求に対応する該２次キャッシュの第１のキャッシュラインの部分を含むかを判定するための手段と、
前記判定するための手段によって生成される結果に一部基づいて、前記メモリ又はキャッシュ動作の前記要求を遅延させるための手段と
を備える、装置。
【請求項２７】
前記判定するための手段は、ディレクトリ内のベクトルを検査するための手段を含む、請求項２６に記載の装置。
【請求項２８】
前記判定するための手段は、前記２次キャッシュのロジックを用いて、前記ベクトルから状態木を構成するための手段をさらに含む、請求項２７に記載の装置。
【請求項２９】
前記禁止するための手段は、前記要求に対応するノードから前記状態木内の先祖及び子孫に規則を適用するための手段を含む、請求項２８に記載の装置。
【請求項３０】
前記判定するための手段が前記第１のキャッシュラインの部分を見つけた、前記一群の１次キャッシュのうちの選択された１次キャッシュに、一群のデータ要求を送信するための手段をさらに備える、請求項２６に記載の装置。
【請求項３１】
レジスタ内で前記データ要求を追跡するための手段と、前記部分を収集して前記第１のキャッシュラインの現在値に入れるための手段とをさらに備える、請求項３０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は包括的にはデータキャッシュを備えるマイクロプロセッサに関し、より具体的には、異なる長さのキャッシュロケーションのグループを有するデータキャッシュを含むことができるマイクロプロセッサに関する。
【背景技術】
【０００２】
最新のマイクロプロセッサは、単一の半導体デバイス上に２つ以上のプロセッサコアを備えることができる。そのようなマイクロプロセッサは、マルチコアプロセッサと呼ばれる場合がある。これらの多数のコアを使用することによって、その性能を、シングルコアを用いることによって得られる性能よりも高めることができる。各コアは、その１次データ及び命令キャッシュを備えることができ、さらに、そのデバイス上に２次キャッシュを備えることもできる。
【０００３】
性能を高めるために、１次データキャッシュ内のキャッシュロケーションは、予想されるデータタイプに応じて選択される長さを有することができる。デバイスサイズに制約があることよって、キャッシュロケーション長を短くして数を増やすか、又はキャッシュロケーション長を長くして数を減らすかのいずれかが可能になり得る。予想されるデータが、大きな空間的局在性を有する（たとえば、そのデータがメモリの連続したエリア内に配置される傾向がある）とき、キャッシュロケーション長を長くして数を減らすことによって、性能を高めることができる。それとは逆に、予想されるデータに空間的局在性がほとんどない（たとえば、そのデータがメモリ全体にわたってランダムに、又は擬似ランダムに散在することがある）とき、キャッシュロケーション長を短くして数を増やすことによって、性能を高めることができる。
【発明の開示】
【課題を解決するための手段】
【０００４】
それぞれが異なる長さのキャッシュロケーションを含む、いくつかのキャッシュロケーショングループを有する１次データキャッシュを設計することができる。これにより、多種多様な予想データにわたって、性能を高めることができる場合がある。さらに、データの特定の部分が、複数のキャッシュロケーショングループ内に同時に存在することができるので、さらに性能を高めることができる。しかしながら、大部分のキャッシュコヒーレンシエンジンは、キャッシュロケーション／キャッシュラインサイズを細分して動作する。簡単にするために、これらのエンジンは、共通のキャッシュロケーション／キャッシュラインサイズに対応するように設計される。それゆえ、特に、根本的に設計変更することなく既存のキャッシュコヒーレンシプロトコルが用いられることが好ましいときに、種々のキャッシュロケーション長を有するキャッシュとともに用いるのに適しているキャッシュコヒーレンシエンジンが設計上の課題となっている。
【０００５】
本開示は、添付の図面の複数の図において、例示としてのキャッシュロケーションよって示されるが、限定としてのキャッシュロケーションによって示されない。なお、添付の図面において、類似の参照符号は類似の構成要素を指している。
【発明を実施するための最良の形態】
【０００６】
以下の説明は、マルチコアプロセッサにおける、異なる長さのキャッシュロケーションを有するデータキャッシュの設計及びコヒーレント動作のための技法を含む。以下の説明では、本発明をさらに十分に理解してもらうために、ロジックの実施態様、ソフトウエアモジュールの割当て、バス及び他のインターフェースシグナリング技法、並びに動作の詳細のような多数の具体的な詳細が述べられる。しかしながら、そのような具体的な詳細を用いることなく、本発明を実施することができることは当業者には理解されよう。他の事例では、本発明をわかりにくくしないために、制御構造、ゲートレベル回路及び完全なソフトウエア命令シーケンスは詳細には示されない。当業者は、明細書に記述される説明から、むやみに試してみることなく、適切な機能を実現することができるであろう。或る特定の実施形態では、本発明は、Ｉｔａｎｉｕｍ（登録商標）プロセッサファミリ互換プロセッサ（インテル（登録商標）社によって製造されるプロセッサ等）、並びに関連するシステム及びプロセッサファームウエアの環境において開示される。しかしながら、本発明は、Ｐｅｎｔｉｕｍ（登録商標）互換プロセッサシステム（インテル（登録商標）社によって製造されるプロセッサ等）、Ｘ−Ｓｃａｌｅ（登録商標）ファミリ互換プロセッサ、又は他の供給元若しくは設計者のプロセッサアーキテクチャのいずれかによる多種多様な汎用プロセッサのうちのいずれかのような、他の種類のプロセッサシステムで実施することもできる。さらに、いくつかの実施形態は、グラフィックス、ネットワーク、画像、通信、又は任意の他の既知のタイプ、若しくはそれ以外の入手可能なタイプのプロセッサ及びその関連するファームウエアのような専用プロセッサを含むことができるか、又は用いることができる。
【０００７】
ここで図１を参照すると、本開示の一実施形態による、異なる長さのキャッシュロケーションを含む、キャッシュを有する複数のプロセッサコアを備えるプロセッサの図が示される。一実施形態では、プロセッサモジュール１  １３０及びプロセッサモジュール２  １４０が示されるが、他の実施形態では、特定の全プロセッサ実施態様の中に、さらに多くのプロセッサモジュールが存在することもできる。
【０００８】
プロセッサモジュール１  １３０及びプロセッサモジュール２  １４０はそれぞれ、プログラムを実行するためのコア１３４、１４４と、１次（Ｌ１）データキャッシュコントローラ１３２、１４２と、キャッシュアレイ１３６、１４６とを備えることができる。ここで、「１次」は、階層レベルにおいてプロセッサコアに最も近いキャッシュを指示することができる。キャッシュアレイ１３２、１４２は、メモリからもたらされるデータをキャッシュラインとして保持することができる種々のキャッシュロケーションを含むことができる。これらのキャッシュロケーションは、長さが異なることがあり、性能を高めるために、全キャッシュラインではなく、キャッシュラインの一部を含むことができる。
【０００９】
プロセッサモジュール１  １３０及びプロセッサモジュール２  １４０は、相互接続１２０を介して、２次（Ｌ２）キャッシュ１１０に接続することができる。ここで、「２次」は、階層レベルにおいて、プロセッサコアから１ステップ離れた（removed）キャッシュを指示することができる。Ｌ２キャッシュ１１０は、メモリからもたらされるデータをキャッシュラインとして保持することができるキャッシュロケーションを含む、キャッシュアレイ１１４を含むことができる。また、Ｌ２キャッシュ１１０は、キャッシュアレイ１１４内、及び種々のＬ１キャッシュ内に含まれるキャッシュラインのためのタグ及び状態データを保持するためのディレクトリ１１６を含むこともできる。最後に、Ｌ２キャッシュ１１０は、キャッシュ動作を支援するためのいくつかの組のレジスタ１１２を含むことができる。
【００１０】
ここで図２を参照すると、本開示の一実施形態による、プロセッサモジュールの図が示される。プロセッサモジュール２３０は、図１に関連して先に説明されたように、コア２４４と、１次データキャッシュコントローラ２４２と、キャッシュアレイ２４６とを備えることができる。
【００１１】
キャッシュアレイ２４６は、長さが異なるキャッシュロケーショングループを含むことができる。たとえば、グループ２６０のキャッシュロケーションは、キャッシュ階層の全キャッシュラインを保持することができる。しかしながら、グループ２７０のキャッシュロケーションは、全キャッシュラインの一部を保持することができ、各部分は全キャッシュラインの半分の長さしかない。同様に、グループ２５０のキャッシュロケーションは、全キャッシュラインの一部を保持することができ、各部分は全キャッシュラインの４分の１の長さしかない。そのようなキャッシュアレイの数多くの実施形態が存在する場合があり、種々のキャッシュロケーションが種々の長さを有することができる。４種類以上の、又は２種類以下のキャッシュロケーションが存在する場合もあり、他の実施形態では、キャッシュロケーション長は、全キャッシュ階層の全キャッシュライン長に対して、必ずしも２の累乗によって関連付けられない場合もある。図２の実施形態では、グループ２６０のキャッシュロケーションは全キャッシュラインを保持することができるが、他の実施形態では、グループ２６０のキャッシュロケーション、すなわちキャッシュアレイ２４６内の最も長いキャッシュロケーションは、全キャッシュラインの一部しか保持することができない。
【００１２】
キャッシュアレイ２４６の使用を説明するために、表現「ブロック」が役に立つ場合がある。ここで、ブロックは、Ｌ１データキャッシュのコヒーレンシにおいて最も小さなキャッシュロケーションの長さと定義することができる。それゆえ、グループ２５０は、１ブロックキャッシュロケーションを含み、グループ２７０は２ブロックキャッシュロケーションを含み、グループ２６０は４ブロックキャッシュロケーションを含む。他の実施形態では、他のブロック長のキャッシュロケーションを用いることができる。
【００１３】
キャッシュとして動作するために、キャッシュロケーショングループ２５０、２６０、２７０は、１次データキャッシュコントローラ２４２に接続される。これは、コントローラ、コヒーレンスエンジン、ミス状態保持レジスタ（ＭＳＨＲ）２５２、ライトバックバッファ（ＷＢ）２５０及び相互接続インターフェース２２０を提供する。実施形態によっては、キャッシュロケーショングループ２５０、２６０、２７０毎に、これらを備えることができるが、この実施形態では、これらは、キャッシュロケーションの間で共有することができる。Ｌ２キャッシュは、異なるキャッシュロケーショングループを認識することができ、それゆえ、異なるキャッシュロケーショングループのそれぞれに向けてコヒーレンスメッセージを送信することができる。１次データキャッシュコントローラ２４２は、そのようなメッセージを受信し、それらのメッセージに基づいて動作することができ、その動作は、それらのメッセージに印を付けること、及びそれらのメッセージを、キャッシュアレイ２４６内の特定のキャッシュロケーショングループからのメッセージとして、又は特定のキャッシュロケーショングループへのメッセージとして解釈することを伴う場合がある。
【００１４】
ＭＳＨＲ２５２は、単一のキャッシュロケーション長を有するキャッシュ内で見られる従来のＭＳＨＲと比べると変更することができる。従来のＭＳＨＲは、複数のメモリ要求を、ミスであると判定された同じアドレスにバッファリングすることがある。長さが異なるキャッシュロケーショングループがあるので、同じアドレスへのそのような複数のメモリ要求を、異なる長さのキャッシュロケーションに向ける場合がある。従来のようにして、複数のメモリ要求をバッファリングすることによって、性能が低下することがある。一例として、１つのアドレスに向けられる第２の要求が、第１のメモリ要求のキャッシュロケーションよりも長いキャッシュロケーションに適している場合に、第１のメモリ要求から返される結果は、第２のメモリ要求を満たすだけの十分なブロックを含まないであろう。それゆえ、一実施形態では、ＭＳＨＲ２５２は、同じアドレスへのメモリ要求が未完であるキャッシュロケーショングループ毎に別個のエントリを割り当てることができる。各メモリ要求は、Ｌ２キャッシュに送信されるであろう。ＭＳＨＲ２５２内の個別のエントリは、そのアドレス、及びその要求がもたらされたキャッシュロケーショングループを特定する識別子の両方で索引を付けることができる。このようにして、同じキャッシュロケーショングループからもたらされる特定のアドレスへのメモリ要求だけが、第１の要求後に、その特定のアドレスにバッファリングされることができる。
【００１５】
従来、ミスが宣言される前に、１つのアドレスに対する到来する要求の受信時にＷＢが検査されていた。要求されたアドレスがＷＢ内で見つかる場合には、そのアドレスに向けられる到来する要求はバッファリングされ、ライトバックが完了できるようにし、その後、その要求で処理を続けることができる。しかしながら、ライトバックエントリが、到来する要求を生成したのとは異なる長さのキャッシュロケーショングループから生じる場合には、ミスの処理を遅らせないことが可能である場合がある。これに対応するために、一実施形態では、ＷＢ２５０は、そのアドレス、及び到来する要求がもたらされるキャッシュロケーショングループの種類を特定する識別子の両方で索引を付けることができる。
【００１６】
ここで図３を参照すると、本開示の一実施形態による、ディレクトリ構造を有する２次キャッシュが示される。Ｌ２キャッシュ３１０は、データ３５０を保持するための多数のキャッシュロケーションと、ディレクトリ３６０とを含むことができる。ディレクトリ３６０は、データ３５０内の同等のキャッシュロケーションの内容に対応する、いくつかの種類のエントリを含むことができる。これらのエントリの種類は、タグ３７０と、キャッシュコヒーレンシ状態３８０と、共有ベクトル３９０とを含むことができる。一実施形態では、それらの状態は、ＭＳＩキャッシュコヒーレンシプロトコルの非アクティブ状態変更（Ｍ），共有（Ｓ）又は無効（Ｉ）の場合がある。他の実施形態では、他のキャッシュコヒーレンシ状態に対応することができる。
【００１７】
共有ベクトルは、Ｌ２キャッシュ３１０のキャッシュコヒーレンシ空間内の全てのＬ１データキャッシュに関する情報を含むことができる。詳細には、共有ベクトルは、プロセッサコア当たり、異なる長さを有するキャッシュロケーショングループが存在するのと同じだけ多くのビットを含むことができる。いくつかの実施形態では、特定のＬ１データキャッシュ内に全キャッシュラインのうちのどの部分が存在する場合があるかを指示するために、キャッシュロケーショングループ当たり付加的なビットが存在する場合もある。図２を簡単に参照すると、そのような付加的なビットは、キャッシュロケーション２７２内の２つのブロックが、対応する全キャッシュラインのうちの第１の２つのブロックからもたらされるか、第２の２つのブロックからもたらされるかを指示することができる。ディレクトリ３６０内のエントリ３６２の一実施形態の詳細が、図４に関連して後に詳細に説明される。
【００１８】
Ｌ２キャッシュ３１０は、いくつかの組のレジスタも備えることができる。図３の実施形態では、これらのレジスタは、ライトバックレジスタ３２０と、ミス状態保持レジスタ（ＭＳＨＲ）３３０と、収集状態保持レジスタ（ＣＳＨＲ）３４０とを含むことができる。一実施形態では、ライトバックレジスタ３２０及びＭＳＨＲ３３０は、従来どおりの設計から構成することができる。ＣＳＨＲ３４０、及び全キャッシュラインの更新された部分を収集するためのその有用性が、図６に関連して後に詳細に説明される。
【００１９】
ここで図４を参照すると、本開示の一実施形態による、図３の２次キャッシュのためのディレクトリエントリ３６２の図が示される。エントリ３６２は、全キャッシュラインのためのタグ４０２に対して割り当てられるビットを有する。また、そのエントリは、キャッシュコヒーレンシ状態４０４のための１つ又は複数のビットも有する。存在しているコア毎に、且つそのコアのデータキャッシュのキャッシュロケーションの種類及びそのデータキャッシュ内に存在する場合がある全キャッシュラインの部分の取り得る組み合わせ毎に、そのキャッシュロケーション種類内の全キャッシュラインのその部分の存否を指示するためのビットが存在する場合がある。
【００２０】
図１のプロセッサ１００について考える。ただし、各プロセッサモジュールには、図２のプロセッサモジュール２３０を用いることができる。その際、エントリ３６２内に、それぞれコア１、２内に４つのブロックを保持するキャッシュロケーションのグループを表す２ビット４０８、４１２が存在する。全キャッシュラインの１つの部分だけが、４ブロックキャッシュロケーション、すなわち全キャッシュラインそのものの内に含まれる場合があるので、１ビットで十分であろう。
【００２１】
２ブロックを保持するキャッシュロケーションのグループに関するエントリ３６２の部分の場合、コア１は２ビット４１６、４１８を有し、コア２は２ビット４２０、４２２を有する。ここで、２ブロックを保持するキャッシュロケーションは、全キャッシュラインのうちの２つの部分（たとえば、全キャッシュラインの第１又は第２の２ブロック）のうちの一方を保持する場合があるので、コア毎に２ビットが用いられることがある。たとえば、４１８に「１」が置かれる場合、コア１のキャッシュロケーションの２ブロックグループ内に、全キャッシュラインのうちの第２の部分が存在することを指示することができる。
【００２２】
１つのブロックを保持するキャッシュロケーションのグループに関するエントリ３６２の部分の場合、コア１は４ビット４２４〜４３０を有し、コア２は４ビット４３２〜４３８を有する。１ブロックを保持するキャッシュロケーションは、全キャッシュラインの４つの部分（たとえば、全キャッシュラインのうちの第１、第２、第３又は第４のブロック）のうちの１つを保持する場合があるので、ここでは、コア当たり４ビットを用いることができる。たとえば、４２４内に「１」が置かれる場合、コア１のキャッシュロケーションの１ブロックグループ内に、全キャッシュラインのうちの第１のブロック部分が存在することを指示することができる。
【００２３】
他の実施形態では、エントリ３６２は、単に適切な場所にビットフィールドを追加することによって、３つ以上のコアを有するプロセッサの場合を含むように拡張することができる。エントリ３６２の設計によって、コアの数に特別な制約が課せられないことに注目されたい。同様に、他の実施形態では、エントリ３６２は、単に適切な場所においてビットフィールドを追加又は削除することによって、異なる長さを有する４つ以上のキャッシュロケーショングループ、又は２つ以下のキャッシュロケーショングループを有するプロセッサの場合を含むように拡張することができる。図４の実施形態は、エントリ３６２のビットがキャッシュロケーションの長さによってグループ化されることを示す。しかしながら、他の実施形態では、１つのエントリのビットを、コアによって編成することもできる。
【００２４】
上述したキャッシュコヒーレンシプロトコルの非アクティブ状態は、一実施形態においてＭ、Ｓ及びＩとして与えられた。コヒーレンシ動作によって、これらの非アクティブ状態のうちの１つ状態が別の状態に遷移する場合がある。コヒーレンシ動作の要求が処理されるとき、そのコヒーレンシ動作によって、キャッシュラインの状態が、種々のアクティブ状態を通り抜けることがある。従来のキャッシュコヒーレンシプロトコルの規則は、キャッシュラインがアクティブ状態にあるとき、従来のコヒーレンシ動作は行われない場合があるという規則である場合がある。
【００２５】
しかしながら、本開示のキャッシュシステムの一実施形態では、１次データキャッシュの異なるキャッシュロケーションが、全キャッシュラインの異なる部分を保持することができる。コヒーレンシ動作の要求が全キャッシュラインの「別個の」部分に対する要求であるときに、その要求を同時に処理できるようにすることが可能である。ここで、別個の部分は、全キャッシュラインを半分にした部分のうちの第１の部分及び第２の部分の場合があるか、又は全キャッシュラインを４分の１にした部分のうちのいずれか一対の場合がある。コヒーレンス動作は、メッセージを送信すること、及び応答を待つことを含む場合があるので、要求を同時に処理できるようにすることによって、キャッシュ性能を高めることができる。
【００２６】
Ｌ２キャッシュ３１０において実行されるコヒーレンスプロトコルは、プロセッサモジュールから、４つの異なる種類のコヒーレンシ動作要求を受信する場合がある。これらの要求は、読出し要求、排他的読出し要求（たとえば、書込みのための所有権を受信するため）、アップグレード要求及びライトバック要求を含む場合がある。異なる長さのキャッシュロケーショングループを有する状況において、これらの要求を考えるとき、それらの要求は、全キャッシュラインの種々の部分によって保持される状態を考慮することを望む場合がある。この考慮を効率的に実行するために、状態ビット４０４及び共有ベクトルビット４０８〜４３８に含まれるビットが、それらがあたかも状態木であるかのように、論理的に検査することができる。
【００２７】
ここで図５を参照すると、本開示の一実施形態による、図４のディレクトリエントリ３６２に対応する状態木５００の図が示される。状態木５００は、１組のノード５１０、５１２、５１４、５２０、５２２、５２４、５２６から形成することができる。各ノードは、種々のＬ１データキャッシュ内に存在するキャッシュロケーションの種類のうちの１つに保持されることがある全キャッシュラインの種々の部分のうちの１つの部分の状態を表すことができる。Ｌ２キャッシュ内のロジックが、未完のコヒーレンシ動作に応じて、ノードを非アクティブ状態又はアクティブ状態のいずれかにすることができる。
【００２８】
たとえば、根ノード５１０は、任意の非アクティブ又は未完のアクティブキャッシュコヒーレンシ状態を表すことができ、全キャッシュラインが種々のＬ１データキャッシュ内に存在することができる場所を示すエントリ３６２の部分（たとえば、ビット４０８、４１２）を表すことができる。Ｌ１データキャッシュがいずれも４ブロックキャッシュロケーションを含まない実施形態では、根ノード５１０は、未完のアクティブキャッシュコヒーレンシ状態を保持しながら、エントリ３６２のその部分を省くことができる。
【００２９】
ノード５１２、５１４は、任意の非アクティブ又は未完のアクティブキャッシュコヒーレンシ状態を表すことができ、全キャッシュラインを半分にした部分のうちのそれぞれ第１の部分及び第２の部分が、種々のＬ１データキャッシュ内に存在することができる場所を示すエントリ３６２の部分（たとえば、それぞれビット４１６、４２０及び４１８、４２２）を表すことができる。同様に、ノード５２０、５２２、５２４及び５２６は、任意の未完のアクティブキャッシュコヒーレンシ状態を表すことができ、全キャッシュラインを４分の１にした部分のうちのそれぞれ第１の部分、第２の部分、第３の部分及び第４の部分が、種々のＬ１データキャッシュ内に存在することができる場所を示すエントリ３６２の部分（たとえば、それぞれ、ビット４２４、４３２；４２６、４３４；４２８、４３６及び４３０、４３８）を表すことができる。
【００３０】
異なる形式のキャッシュコヒーレンシプロトコルが、状態木５００のノードの間のコヒーレンスのための異なる規則を生み出すことがある。一例として以前に説明されたＭＳＩプロトコルを用いるとき、ノードのロケーション及び相対的な従属性に応じて異なる状態を有するために、異なるノードが必要とされることがある。たとえば、ノード５１４がＭ状態にあるとき、その先祖（根ノードに向かう木の枝に沿って存在するノード）、すなわち根ノード５１０はＩ状態にある必要があり、その子孫ノード（根ノードから離れる木の枝に沿って存在するノード）５２４、５２６の場合も同様である。しかしながら、ノード５１４とノード５１２、５２０及び５２２との間に従属性がないことに起因して、後者のノードはＭＳＩ状態のいずれかである可能性がある（たとえば、「ドントケア」状態）。同様に、ノード５２６がＭ状態にある場合には、ノード５１０及び５１４はＩ状態にある必要があるが、ノード５２４、５１２、５２０及び５２２は、従属性がないことに起因して、ＭＳＩ状態のいずれかである可能性がある。根ノード５１０は、全ての他のノードが根ノード５１０に従属性があるという点で、他のノードとは異なる。キャッシュコヒーレンシプロトコルの他の実施形態では、従属性ノード及び非従属性ノードの間の状態のために他の規則が用いられる場合がある。
【００３１】
状態木５００を用いて、全キャッシュラインの所与の部分が現時点でコヒーレンシ動作に関与するか否かを判定するのを助けることができる。特定のノードの先祖が、ノードそのものが表すデータの上位集合を表すことができると考える。そして、ノードの子孫は、ノードそのものが表す部分の中に含まれる全キャッシュラインの部分を表すことができる。これらの特性によって、単純な１組の規則を用いて、ノードによって表される全キャッシュラインの部分が、現時点でコヒーレンシ動作に関与するか否かを判定することができる。これらの規則は、ディレクトリのエントリに関して演算を行うことができるＬ２キャッシュのロジックにおいて実現することができる。
【００３２】
規則１は、或るノードが既にアクティブ状態にある先祖を有する場合には、そのノードは新たなコヒーレンシ動作を開始しなくてもよいという規則にすることができる。規則２は、或るノードそのものが既にアクティブ状態にある場合には、そのノードは新たなコヒーレンシ動作を開始しなくてもよいという規則にすることができる。規則３は、そのノードのいずれかの子孫が既にアクティブ状態にある場合には、そのノードは新たなコヒーレンシ動作を開始しなくてもよいという規則にすることができる。規則４は、新たなコヒーレンシ動作が、そのノードのいずれかの先祖の状態を変更することになる場合には、規則１、２及び３が、その根ノードに最も近い先祖にも適用されることになるという規則にすることができる。他の実施形態では、他の複数の組の規則を確立して、全キャッシュラインの一部が現時点でコヒーレンシ動作に関与するか否かを判定することができる。
【００３３】
ここで図６を参照すると、本開示の一実施形態による、収集状態保持レジスタ（ＣＳＨＲ）の図が示される。従来のキャッシュシステムでは、１つのデータＬ１キャッシュが、別のデータＬ１キャッシュによって所有されるキャッシュラインにアクセスすることを望むとき、対応するＬ２キャッシュが、そのラインの状態を更新して、所有しているデータＬ１キャッシュに要求を転送することができる。異なる長さのキャッシュロケーションを有するキャッシュシステムの一実施形態では、ラインの状態を更新して、所有しているデータＬ１キャッシュに要求を転送する過程は、特定の事例の場合と同じようにして実行することができる。それらの事例は、所有しているデータＬ１キャッシュが、要求しているデータＬ１キャッシュ内の対応するキャッシュロケーション以上の長さであるキャッシュロケーション内にキャッシュラインの要求される部分を有する事例を含むことができる。
【００３４】
しかしながら、そのラインが、要求されるブロック細分性よりも小さなブロック細分性において変更されると、たとえば、要求されたキャッシュラインの一部が、一方のデータＬ１キャッシュにおいて変更された状態になり、残りの部分が別のデータＬ１キャッシュ（又はメモリ）にある場合がある。このような状況では、要求されるキャッシュラインのこれらの種々の部分を収集し、アセンブルする必要が生じる。要求されるキャッシュラインのこれらの種々の部分を収集し、アセンブルするための方法は、いくつかのキャッシュロケーションにおいて実行することができる。一実施形態では、要求しているデータＬ１キャッシュが、それらの部分そのものを収集し、アセンブルすることができる。これは、要求を処理する待ち時間を短くすることができるので好都合である。
【００３５】
しかしながら、別の実施形態では、状態木内のいくつかの異なるノードに対応するキャッシュラインの部分を共有することは、比較的稀にしか起こらないものと予想することができる。それゆえ、それに応じて、要求しているキャッシュラインのこれらの種々の部分を収集し、アセンブルする必要性も、比較的稀にしか起こらないであろう。この実施形態では、Ｌ２キャッシュにおいて収集及びアセンブルを実行するとともに、後にアセンブルされたラインを、要求している１次データキャッシュに転送するのがより簡単である。
【００３６】
Ｌ２キャッシュにおいて収集及びアセンブルを実行するために、ＣＳＨＲ３４０を用いることができる。ＣＳＨＲ３４０内の各エントリは、特定の１次データキャッシュ要求を追跡することができる。それらのエントリは、１次データキャッシュ要求に対応するＬ２キャッシュラインアドレスによって索引を付けることができる。各エントリは、到来する１次データキャッシュ要求を含むことができ、その要求は、要求がなされ、また全キャッシュラインの特定の部分（たとえば、半分にした部分のうちの第１の部分、４分の１にした部分のうちの第３の部分等）が要求される、キャッシュロケーションの長さを含むことができる。各エントリは最初に、Ｌ２キャッシュが種々の１次データキャッシュキャッシュに対して行うことになる要求の数を格納していることがある。この数は、各応答が到着する度にデクリメントすることができる。その数が０に達するとき、Ｌ２キャッシュは、全ての部分が収集されたこと、そしてアセンブルの処理を開始することができることを知るであろう。
【００３７】
１次データキャッシュのうちの１つからの要求は以下のように処理することができる。Ｌ２キャッシュが要求を受信するとき、Ｌ２キャッシュは最初に、その要求が、所有している１次データキャッシュと同じブロック細分性を有するか否かを判定することができる。同じブロック細分性を有する場合には、Ｌ２キャッシュは単に、その要求を、所有している１次データキャッシュに転送することができる。しかしながら、ブロック細分性が同じでない場合には、ＣＳＨＲ３４０内のエントリ６１０を割り当てることができる。到来する１次データキャッシュ要求は、要求フィールド６１２に入れることができ、Ｌ２キャッシュが種々の１次データキャッシュに対して行うことになる要求の数は、未処理応答フィールド６１４の数に入れることができる。その後、Ｌ２キャッシュは種々の１次データキャッシュに対して要求を発行して、応答が到着するのを待つことができる。各応答がＬ２キャッシュに到着するのに応じて、対応するデータが保持され、未処理応答フィールド６１４の数をデクリメントすることができる。未処理応答フィールド６１４の数が０に達するとき、Ｌ２キャッシュは、全ての部分が収集されたことを知るであろう。その後、Ｌ２キャッシュは、１次データキャッシュから受信されたデータをアセンブルすることができる。アセンブルすると、Ｌ２キャッシュは、アセンブルされたキャッシュラインを、元の要求している１次データキャッシュに転送することができる。
【００３８】
ここで図７Ａ及び図７Ｂを参照すると、本開示の２つの実施形態による、複数のコアを有するプロセッサを備えるシステムの概略図が示される。図７Ａのシステムは、プロセッサ、メモリ及び入力／出力デバイスがシステムバスによって相互接続されるシステムを概略的に示すのに対して、図７Ｂのシステムは、プロセッサ、メモリ及び入力／出力デバイスが多数のポイント・ツー・ポイントインターフェースによって相互接続されるシステムを概略的に示す。
【００３９】
図７Ａのシステムは、１つ又はいくつかのプロセッサを含むことができるが、ここでは明確にするために、そのうちの２つのプロセッサ４０、６０だけが示される。プロセッサ４０、６０は２次キャッシュ４２、６２を備えることができ、各プロセッサ４０、６０は、それぞれが１つの１次キャッシュを有する複数のコアを含むことができる。図７Ａのシステムは、システムバス６とのバスインターフェース４４、６４、１２、８を介して接続されるいくつかの機能を有することができる。一実施形態では、システムバス６として、インテル（登録商標）社によって製造されるＰｅｎｔｉｕｍ（登録商標）クラスプロセッサで利用されるフロントサイドバス（ＦＳＢ）を用いることができる。他の実施形態では、他のバスを用いることができる。いくつかの実施形態において、メモリコントローラ３４及びバスブリッジ３２はまとめて、チップセットと呼ばれることがある。いくつかの実施形態では、チップセットの機能は、図７Ａの実施形態において示されるのとは異なるように、物理的なチップの間で分割されることがある。
【００４０】
メモリコントローラ３４によって、プロセッサ４０、６０は、システムメモリ１０に対して、且つ基本入力／出力システム（ＢＩＯＳ）消去可能プログラマブルリードオンリーメモリ（ＥＰＲＯＭ）３６に対して、読出し及び書込みを行うことができるようになる。いくつかの実施形態では、ＢＩＯＳ  ＥＰＲＯＭ３６は、フラッシュメモリを利用することができ、ＢＩＯＳの代わりに、他の基本演算ファームウエアを含むこともできる。メモリコントローラ３４は、バスインターフェース８を備え、メモリ読出し及び書込みデータが、システムバス６上でバスエージェントとの間で搬送されるようにすることができる。メモリコントローラ３４は、ハイパフォーマンスグラフィックスインターフェース３９を介して、ハイパフォーマンスグラフィックス回路３８と接続することもできる。或る特定の実施形態では、ハイパフォーマンスグラフィックスインターフェース３９は、アドバンスドグラフィックスポートＡＧＰインターフェースであってもよい。メモリコントローラ３４は、ハイパフォーマンスグラフィックスインターフェース３９を介して、データをシステムメモリ１０からハイパフォーマンスグラフィックス回路３８に送信することができる。
【００４１】
図７Ｂのシステムは、１つ又はいくつかのプロセッサを含むことができるが、ここでは明確にするために、そのうちの２つのプロセッサ７０、８０だけが示される。プロセッサ７０、８０は、２次キャッシュ５６、５８を備えることができ、各プロセッサ７０、８０は、それぞれが１つの１次キャッシュを有する複数のコアを含むことができる。プロセッサ７０、８０はそれぞれ、メモリ２、４と接続するためのローカルメモリコントローラハブ（ＭＣＨ）７２、８２を含むことができる。プロセッサ７０、８０は、ポイント・ツー・ポイントインターフェース５０を介して、ポイント・ツー・ポイントインターフェース回路７８、８８を用いてデータを交換することができる。プロセッサ７０、８０はそれぞれ、ポイント・ツー・ポイントインターフェース５２、５４を介して、ポイント・ツー・ポイントインターフェース回路７６、９４、８６、９８を用いてチップセット９０とデータを交換することができる。他の実施形態では、チップセット機能は、プロセッサ７０、８０内に実装することができる。チップセット９０は、ハイパフォーマンスグラフィックスインターフェース９２を介して、ハイパフォーマンスグラフィックス回路３８とデータを交換することもできる。
【００４２】
図７Ａのシステムでは、バスブリッジ３２によって、システムバス６とバス１６との間でデータを交換できるようになり、いくつかの実施形態では、そのバスは、業界標準アーキテクチャ（ＩＳＡ）バス又は周辺機器相互接続（ＰＣＩ）バスであってもよい。図７Ｂのシステムでは、チップセット９０は、バスインターフェース９６を介して、バス１６とデータを交換することができる。いずれのシステムでも、実施形態によって、ローパフォーマンスグラフィックスコントローラ、ビデオコントローラ、及びネットワーキングコントローラを含む、バス１６上に種々の入力／出力Ｉ／Ｏデバイス１４が存在する場合がある。いくつかの実施形態では、バス１６とバス２０との間でデータを交換できるようにするために、別のバスブリッジ１８を用いることができる。実施形態によって、バスは、小型コンピュータシステムインターフェース（ＳＣＳＩ）バス、インテグレーテッドドライブエレクトロニクス（ＩＤＥ）バス、又はユニバーサルシリアルバス（ＵＳＢ）バスであってもよい。さらに別のＩ／Ｏデバイスをバス２０に接続することができる。これらのデバイスは、キーボード及びマウスを含むカーソル制御デバイス２２と、オーディオＩ／Ｏ２４と、モデム及びネットワークインターフェースを含む通信デバイス２６と、データ記憶デバイス２８とを含むことができる。ソフトウエアコード３０は、データ記憶デバイス２８上に格納することができる。実施形態によって、データ記憶デバイス２８として、固定磁気ディスク、フロッピィディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープ、又はフラッシュメモリを含む不揮発性メモリを用いることができる。
【００４３】
これまでの明細書において、本発明は、その具体的な例示的実施形態を参照しながら説明されてきた。しかしながら、添付の特許請求の範囲において述べられるような本発明の広い精神及び範囲から逸脱することなく、それらの例示的実施形態に対して種々の変更及び改変を行うことができることは明らかであろう。したがって、明細書及び図面は、限定するものと解釈されるのではなく、例示と見なされるべきである。
【図面の簡単な説明】
【００４４】
【図１】本開示の一実施形態による、異なる長さのキャッシュロケーションを含むキャッシュを有するマルチプロセッサコアを備えるプロセッサの図である。
【図２】本開示の一実施形態による、プロセッサモジュールの図である。
【図３】本開示の一実施形態による、ディレクトリ構造を有する２次キャッシュの図である。
【図４】本開示の一実施形態による、図３の２次キャッシュのディレクトリエントリの図である。
【図５】本開示の一実施形態による、図４のディレクトリエントリに対応する状態木の図である。
【図６】本開示の別の実施形態による、収集状態保持レジスタの図である。
【図７Ａ】本開示の一実施形態による、複数のコアを有するプロセッサを備えるシステムの概略図である。
【図７Ｂ】本開示の別の実施形態による、複数のコアを有するプロセッサを備えるシステムの概略図である。
【図１】
2008525904.tif 000003
【図２】
2008525904.tif 000004
【図３】
2008525904.tif 000005
【図４】
2008525904.tif 000006
【図５】
2008525904.tif 000007
【図６】
2008525904.tif 000008
【図７Ａ】
2008525904.tif 000009
【図７Ｂ】
2008525904.tif 000010
【国際調査報告】
2008525904.tif 000011
2008525904.tif 000012
2008525904.tif 000013
2008525904.tif 000014