JP4307508B2 - 異なるキャッシュロケーション長を有するキャッシュにおいてキャッシュコヒーレンシを保持するためのシステム及び方法 - Google Patents

異なるキャッシュロケーション長を有するキャッシュにおいてキャッシュコヒーレンシを保持するためのシステム及び方法 Download PDF

Info

Publication number
JP4307508B2
JP4307508B2 JP2007548610A JP2007548610A JP4307508B2 JP 4307508 B2 JP4307508 B2 JP 4307508B2 JP 2007548610 A JP2007548610 A JP 2007548610A JP 2007548610 A JP2007548610 A JP 2007548610A JP 4307508 B2 JP4307508 B2 JP 4307508B2
Authority
JP
Japan
Prior art keywords
cache
group
length
locations
location
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007548610A
Other languages
English (en)
Other versions
JP2008525904A (ja
Inventor
チェン、イェン−クアン
ヒューズ、クリストファー
スリー、ジェームズ タック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2008525904A publication Critical patent/JP2008525904A/ja
Application granted granted Critical
Publication of JP4307508B2 publication Critical patent/JP4307508B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は包括的にはデータキャッシュを備えるマイクロプロセッサに関し、より具体的には、異なる長さのキャッシュロケーションのグループを有するデータキャッシュを含むことができるマイクロプロセッサに関する。
最新のマイクロプロセッサは、単一の半導体デバイス上に2つ以上のプロセッサコアを備えることができる。そのようなマイクロプロセッサは、マルチコアプロセッサと呼ばれる場合がある。これらの多数のコアを使用することによって、その性能を、シングルコアを用いることによって得られる性能よりも高めることができる。各コアは、その1次データ及び命令キャッシュを備えることができ、さらに、そのデバイス上に2次キャッシュを備えることもできる。
性能を高めるために、1次データキャッシュ内のキャッシュロケーションは、予想されるデータタイプに応じて選択される長さを有することができる。デバイスサイズに制約があることよって、キャッシュロケーション長を短くして数を増やすか、又はキャッシュロケーション長を長くして数を減らすかのいずれかが可能になり得る。予想されるデータが、大きな空間的局在性を有する(たとえば、そのデータがメモリの連続したエリア内に配置される傾向がある)とき、キャッシュロケーション長を長くして数を減らすことによって、性能を高めることができる。それとは逆に、予想されるデータに空間的局在性がほとんどない(たとえば、そのデータがメモリ全体にわたってランダムに、又は擬似ランダムに散在することがある)とき、キャッシュロケーション長を短くして数を増やすことによって、性能を高めることができる。
それぞれが異なる長さのキャッシュロケーションを含む、いくつかのキャッシュロケーショングループを有する1次データキャッシュを設計することができる。これにより、多種多様な予想データにわたって、性能を高めることができる場合がある。さらに、データの特定の部分が、複数のキャッシュロケーショングループ内に同時に存在することができるので、さらに性能を高めることができる。しかしながら、大部分のキャッシュコヒーレンシエンジンは、キャッシュロケーション/キャッシュラインサイズを細分して動作する。簡単にするために、これらのエンジンは、共通のキャッシュロケーション/キャッシュラインサイズに対応するように設計される。それゆえ、特に、根本的に設計変更することなく既存のキャッシュコヒーレンシプロトコルが用いられることが好ましいときに、種々のキャッシュロケーション長を有するキャッシュとともに用いるのに適しているキャッシュコヒーレンシエンジンが設計上の課題となっている。
本開示は、添付の図面の複数の図において、例示としてのキャッシュロケーションよって示されるが、限定としてのキャッシュロケーションによって示されない。なお、添付の図面において、類似の参照符号は類似の構成要素を指している。
以下の説明は、マルチコアプロセッサにおける、異なる長さのキャッシュロケーションを有するデータキャッシュの設計及びコヒーレント動作のための技法を含む。以下の説明では、本発明をさらに十分に理解してもらうために、ロジックの実施態様、ソフトウエアモジュールの割当て、バス及び他のインターフェースシグナリング技法、並びに動作の詳細のような多数の具体的な詳細が述べられる。しかしながら、そのような具体的な詳細を用いることなく、本発明を実施することができることは当業者には理解されよう。他の事例では、本発明をわかりにくくしないために、制御構造、ゲートレベル回路及び完全なソフトウエア命令シーケンスは詳細には示されない。当業者は、明細書に記述される説明から、むやみに試してみることなく、適切な機能を実現することができるであろう。或る特定の実施形態では、本発明は、Itanium(登録商標)プロセッサファミリ互換プロセッサ(インテル(登録商標)社によって製造されるプロセッサ等)、並びに関連するシステム及びプロセッサファームウエアの環境において開示される。しかしながら、本発明は、Pentium(登録商標)互換プロセッサシステム(インテル(登録商標)社によって製造されるプロセッサ等)、X−Scale(登録商標)ファミリ互換プロセッサ、又は他の供給元若しくは設計者のプロセッサアーキテクチャのいずれかによる多種多様な汎用プロセッサのうちのいずれかのような、他の種類のプロセッサシステムで実施することもできる。さらに、いくつかの実施形態は、グラフィックス、ネットワーク、画像、通信、又は任意の他の既知のタイプ、若しくはそれ以外の入手可能なタイプのプロセッサ及びその関連するファームウエアのような専用プロセッサを含むことができるか、又は用いることができる。
ここで図1を参照すると、本開示の一実施形態による、異なる長さのキャッシュロケーションを含む、キャッシュを有する複数のプロセッサコアを備えるプロセッサの図が示される。一実施形態では、プロセッサモジュール1 130及びプロセッサモジュール2 140が示されるが、他の実施形態では、特定の全プロセッサ実施態様の中に、さらに多くのプロセッサモジュールが存在することもできる。
プロセッサモジュール1 130及びプロセッサモジュール2 140はそれぞれ、プログラムを実行するためのコア134、144と、1次(L1)データキャッシュコントローラ132、142と、キャッシュアレイ136、146とを備えることができる。ここで、「1次」は、階層レベルにおいてプロセッサコアに最も近いキャッシュを指示することができる。キャッシュアレイ132、142は、メモリからもたらされるデータをキャッシュラインとして保持することができる種々のキャッシュロケーションを含むことができる。これらのキャッシュロケーションは、長さが異なることがあり、性能を高めるために、全キャッシュラインではなく、キャッシュラインの一部を含むことができる。
プロセッサモジュール1 130及びプロセッサモジュール2 140は、相互接続120を介して、2次(L2)キャッシュ110に接続することができる。ここで、「2次」は、階層レベルにおいて、プロセッサコアから1ステップ離れた(removed)キャッシュを指示することができる。L2キャッシュ110は、メモリからもたらされるデータをキャッシュラインとして保持することができるキャッシュロケーションを含む、キャッシュアレイ114を含むことができる。また、L2キャッシュ110は、キャッシュアレイ114内、及び種々のL1キャッシュ内に含まれるキャッシュラインのためのタグ及び状態データを保持するためのディレクトリ116を含むこともできる。最後に、L2キャッシュ110は、キャッシュ動作を支援するためのいくつかの組のレジスタ112を含むことができる。
ここで図2を参照すると、本開示の一実施形態による、プロセッサモジュールの図が示される。プロセッサモジュール230は、図1に関連して先に説明されたように、コア244と、1次データキャッシュコントローラ242と、キャッシュアレイ246とを備えることができる。
キャッシュアレイ246は、長さが異なるキャッシュロケーショングループを含むことができる。たとえば、グループ260のキャッシュロケーションは、キャッシュ階層の全キャッシュラインを保持することができる。しかしながら、グループ270のキャッシュロケーションは、全キャッシュラインの一部を保持することができ、各部分は全キャッシュラインの半分の長さしかない。同様に、グループ250のキャッシュロケーションは、全キャッシュラインの一部を保持することができ、各部分は全キャッシュラインの4分の1の長さしかない。そのようなキャッシュアレイの数多くの実施形態が存在する場合があり、種々のキャッシュロケーションが種々の長さを有することができる。4種類以上の、又は2種類以下のキャッシュロケーションが存在する場合もあり、他の実施形態では、キャッシュロケーション長は、全キャッシュ階層の全キャッシュライン長に対して、必ずしも2の累乗によって関連付けられない場合もある。図2の実施形態では、グループ260のキャッシュロケーションは全キャッシュラインを保持することができるが、他の実施形態では、グループ260のキャッシュロケーション、すなわちキャッシュアレイ246内の最も長いキャッシュロケーションは、全キャッシュラインの一部しか保持することができない。
キャッシュアレイ246の使用を説明するために、表現「ブロック」が役に立つ場合がある。ここで、ブロックは、L1データキャッシュのコヒーレンシにおいて最も小さなキャッシュロケーションの長さと定義することができる。それゆえ、グループ250は、1ブロックキャッシュロケーションを含み、グループ270は2ブロックキャッシュロケーションを含み、グループ260は4ブロックキャッシュロケーションを含む。他の実施形態では、他のブロック長のキャッシュロケーションを用いることができる。
キャッシュとして動作するために、キャッシュロケーショングループ250、260、270は、1次データキャッシュコントローラ242に接続される。これは、コントローラ、コヒーレンスエンジン、ミス状態保持レジスタ(MSHR)252、ライトバックバッファ(WB)250及び相互接続インターフェース220を提供する。実施形態によっては、キャッシュロケーショングループ250、260、270毎に、これらを備えることができるが、この実施形態では、これらは、キャッシュロケーションの間で共有することができる。L2キャッシュは、異なるキャッシュロケーショングループを認識することができ、それゆえ、異なるキャッシュロケーショングループのそれぞれに向けてコヒーレンスメッセージを送信することができる。1次データキャッシュコントローラ242は、そのようなメッセージを受信し、それらのメッセージに基づいて動作することができ、その動作は、それらのメッセージに印を付けること、及びそれらのメッセージを、キャッシュアレイ246内の特定のキャッシュロケーショングループからのメッセージとして、又は特定のキャッシュロケーショングループへのメッセージとして解釈することを伴う場合がある。
MSHR252は、単一のキャッシュロケーション長を有するキャッシュ内で見られる従来のMSHRと比べると変更することができる。従来のMSHRは、複数のメモリ要求を、ミスであると判定された同じアドレスにバッファリングすることがある。長さが異なるキャッシュロケーショングループがあるので、同じアドレスへのそのような複数のメモリ要求を、異なる長さのキャッシュロケーションに向ける場合がある。従来のようにして、複数のメモリ要求をバッファリングすることによって、性能が低下することがある。一例として、1つのアドレスに向けられる第2の要求が、第1のメモリ要求のキャッシュロケーションよりも長いキャッシュロケーションに適している場合に、第1のメモリ要求から返される結果は、第2のメモリ要求を満たすだけの十分なブロックを含まないであろう。それゆえ、一実施形態では、MSHR252は、同じアドレスへのメモリ要求が未完であるキャッシュロケーショングループ毎に別個のエントリを割り当てることができる。各メモリ要求は、L2キャッシュに送信されるであろう。MSHR252内の個別のエントリは、そのアドレス、及びその要求がもたらされたキャッシュロケーショングループを特定する識別子の両方で索引を付けることができる。このようにして、同じキャッシュロケーショングループからもたらされる特定のアドレスへのメモリ要求だけが、第1の要求後に、その特定のアドレスにバッファリングされることができる。
従来、ミスが宣言される前に、1つのアドレスに対する到来する要求の受信時にWBが検査されていた。要求されたアドレスがWB内で見つかる場合には、そのアドレスに向けられる到来する要求はバッファリングされ、ライトバックが完了できるようにし、その後、その要求で処理を続けることができる。しかしながら、ライトバックエントリが、到来する要求を生成したのとは異なる長さのキャッシュロケーショングループから生じる場合には、ミスの処理を遅らせないことが可能である場合がある。これに対応するために、一実施形態では、WB250は、そのアドレス、及び到来する要求がもたらされるキャッシュロケーショングループの種類を特定する識別子の両方で索引を付けることができる。
ここで図3を参照すると、本開示の一実施形態による、ディレクトリ構造を有する2次キャッシュが示される。L2キャッシュ310は、データ350を保持するための多数のキャッシュロケーションと、ディレクトリ360とを含むことができる。ディレクトリ360は、データ350内の同等のキャッシュロケーションの内容に対応する、いくつかの種類のエントリを含むことができる。これらのエントリの種類は、タグ370と、キャッシュコヒーレンシ状態380と、共有ベクトル390とを含むことができる。一実施形態では、それらの状態は、MSIキャッシュコヒーレンシプロトコルの非アクティブ状態変更(M),共有(S)又は無効(I)の場合がある。他の実施形態では、他のキャッシュコヒーレンシ状態に対応することができる。
共有ベクトルは、L2キャッシュ310のキャッシュコヒーレンシ空間内の全てのL1データキャッシュに関する情報を含むことができる。詳細には、共有ベクトルは、プロセッサコア当たり、異なる長さを有するキャッシュロケーショングループが存在するのと同じだけ多くのビットを含むことができる。いくつかの実施形態では、特定のL1データキャッシュ内に全キャッシュラインのうちのどの部分が存在する場合があるかを指示するために、キャッシュロケーショングループ当たり付加的なビットが存在する場合もある。図2を簡単に参照すると、そのような付加的なビットは、キャッシュロケーション272内の2つのブロックが、対応する全キャッシュラインのうちの第1の2つのブロックからもたらされるか、第2の2つのブロックからもたらされるかを指示することができる。ディレクトリ360内のエントリ362の一実施形態の詳細が、図4に関連して後に詳細に説明される。
L2キャッシュ310は、いくつかの組のレジスタも備えることができる。図3の実施形態では、これらのレジスタは、ライトバックレジスタ320と、ミス状態保持レジスタ(MSHR)330と、収集状態保持レジスタ(CSHR)340とを含むことができる。一実施形態では、ライトバックレジスタ320及びMSHR330は、従来どおりの設計から構成することができる。CSHR340、及び全キャッシュラインの更新された部分を収集するためのその有用性が、図6に関連して後に詳細に説明される。
ここで図4を参照すると、本開示の一実施形態による、図3の2次キャッシュのためのディレクトリエントリ362の図が示される。エントリ362は、全キャッシュラインのためのタグ402に対して割り当てられるビットを有する。また、そのエントリは、キャッシュコヒーレンシ状態404のための1つ又は複数のビットも有する。存在しているコア毎に、且つそのコアのデータキャッシュのキャッシュロケーションの種類及びそのデータキャッシュ内に存在する場合がある全キャッシュラインの部分の取り得る組み合わせ毎に、そのキャッシュロケーション種類内の全キャッシュラインのその部分の存否を指示するためのビットが存在する場合がある。
図1のプロセッサ100について考える。ただし、各プロセッサモジュールには、図2のプロセッサモジュール230を用いることができる。その際、エントリ362内に、それぞれコア1、2内に4つのブロックを保持するキャッシュロケーションのグループを表す2ビット408、412が存在する。全キャッシュラインの1つの部分だけが、4ブロックキャッシュロケーション、すなわち全キャッシュラインそのものの内に含まれる場合があるので、1ビットで十分であろう。
2ブロックを保持するキャッシュロケーションのグループに関するエントリ362の部分の場合、コア1は2ビット416、418を有し、コア2は2ビット420、422を有する。ここで、2ブロックを保持するキャッシュロケーションは、全キャッシュラインのうちの2つの部分(たとえば、全キャッシュラインの第1又は第2の2ブロック)のうちの一方を保持する場合があるので、コア毎に2ビットが用いられることがある。たとえば、418に「1」が置かれる場合、コア1のキャッシュロケーションの2ブロックグループ内に、全キャッシュラインのうちの第2の部分が存在することを指示することができる。
1つのブロックを保持するキャッシュロケーションのグループに関するエントリ362の部分の場合、コア1は4ビット424〜430を有し、コア2は4ビット432〜438を有する。1ブロックを保持するキャッシュロケーションは、全キャッシュラインの4つの部分(たとえば、全キャッシュラインのうちの第1、第2、第3又は第4のブロック)のうちの1つを保持する場合があるので、ここでは、コア当たり4ビットを用いることができる。たとえば、424内に「1」が置かれる場合、コア1のキャッシュロケーションの1ブロックグループ内に、全キャッシュラインのうちの第1のブロック部分が存在することを指示することができる。
他の実施形態では、エントリ362は、単に適切な場所にビットフィールドを追加することによって、3つ以上のコアを有するプロセッサの場合を含むように拡張することができる。エントリ362の設計によって、コアの数に特別な制約が課せられないことに注目されたい。同様に、他の実施形態では、エントリ362は、単に適切な場所においてビットフィールドを追加又は削除することによって、異なる長さを有する4つ以上のキャッシュロケーショングループ、又は2つ以下のキャッシュロケーショングループを有するプロセッサの場合を含むように拡張することができる。図4の実施形態は、エントリ362のビットがキャッシュロケーションの長さによってグループ化されることを示す。しかしながら、他の実施形態では、1つのエントリのビットを、コアによって編成することもできる。
上述したキャッシュコヒーレンシプロトコルの非アクティブ状態は、一実施形態においてM、S及びIとして与えられた。コヒーレンシ動作によって、これらの非アクティブ状態のうちの1つ状態が別の状態に遷移する場合がある。コヒーレンシ動作の要求が処理されるとき、そのコヒーレンシ動作によって、キャッシュラインの状態が、種々のアクティブ状態を通り抜けることがある。従来のキャッシュコヒーレンシプロトコルの規則は、キャッシュラインがアクティブ状態にあるとき、従来のコヒーレンシ動作は行われない場合があるという規則である場合がある。
しかしながら、本開示のキャッシュシステムの一実施形態では、1次データキャッシュの異なるキャッシュロケーションが、全キャッシュラインの異なる部分を保持することができる。コヒーレンシ動作の要求が全キャッシュラインの「別個の」部分に対する要求であるときに、その要求を同時に処理できるようにすることが可能である。ここで、別個の部分は、全キャッシュラインを半分にした部分のうちの第1の部分及び第2の部分の場合があるか、又は全キャッシュラインを4分の1にした部分のうちのいずれか一対の場合がある。コヒーレンス動作は、メッセージを送信すること、及び応答を待つことを含む場合があるので、要求を同時に処理できるようにすることによって、キャッシュ性能を高めることができる。
L2キャッシュ310において実行されるコヒーレンスプロトコルは、プロセッサモジュールから、4つの異なる種類のコヒーレンシ動作要求を受信する場合がある。これらの要求は、読出し要求、排他的読出し要求(たとえば、書込みのための所有権を受信するため)、アップグレード要求及びライトバック要求を含む場合がある。異なる長さのキャッシュロケーショングループを有する状況において、これらの要求を考えるとき、それらの要求は、全キャッシュラインの種々の部分によって保持される状態を考慮することを望む場合がある。この考慮を効率的に実行するために、状態ビット404及び共有ベクトルビット408〜438に含まれるビットが、それらがあたかも状態木であるかのように、論理的に検査することができる。
ここで図5を参照すると、本開示の一実施形態による、図4のディレクトリエントリ362に対応する状態木500の図が示される。状態木500は、1組のノード510、512、514、520、522、524、526から形成することができる。各ノードは、種々のL1データキャッシュ内に存在するキャッシュロケーションの種類のうちの1つに保持されることがある全キャッシュラインの種々の部分のうちの1つの部分の状態を表すことができる。L2キャッシュ内のロジックが、未完のコヒーレンシ動作に応じて、ノードを非アクティブ状態又はアクティブ状態のいずれかにすることができる。
たとえば、根ノード510は、任意の非アクティブ又は未完のアクティブキャッシュコヒーレンシ状態を表すことができ、全キャッシュラインが種々のL1データキャッシュ内に存在することができる場所を示すエントリ362の部分(たとえば、ビット408、412)を表すことができる。L1データキャッシュがいずれも4ブロックキャッシュロケーションを含まない実施形態では、根ノード510は、未完のアクティブキャッシュコヒーレンシ状態を保持しながら、エントリ362のその部分を省くことができる。
ノード512、514は、任意の非アクティブ又は未完のアクティブキャッシュコヒーレンシ状態を表すことができ、全キャッシュラインを半分にした部分のうちのそれぞれ第1の部分及び第2の部分が、種々のL1データキャッシュ内に存在することができる場所を示すエントリ362の部分(たとえば、それぞれビット416、420及び418、422)を表すことができる。同様に、ノード520、522、524及び526は、任意の未完のアクティブキャッシュコヒーレンシ状態を表すことができ、全キャッシュラインを4分の1にした部分のうちのそれぞれ第1の部分、第2の部分、第3の部分及び第4の部分が、種々のL1データキャッシュ内に存在することができる場所を示すエントリ362の部分(たとえば、それぞれ、ビット424、432;426、434;428、436及び430、438)を表すことができる。
異なる形式のキャッシュコヒーレンシプロトコルが、状態木500のノードの間のコヒーレンスのための異なる規則を生み出すことがある。一例として以前に説明されたMSIプロトコルを用いるとき、ノードのロケーション及び相対的な従属性に応じて異なる状態を有するために、異なるノードが必要とされることがある。たとえば、ノード514がM状態にあるとき、その先祖(根ノードに向かう木の枝に沿って存在するノード)、すなわち根ノード510はI状態にある必要があり、その子孫ノード(根ノードから離れる木の枝に沿って存在するノード)524、526の場合も同様である。しかしながら、ノード514とノード512、520及び522との間に従属性がないことに起因して、後者のノードはMSI状態のいずれかである可能性がある(たとえば、「ドントケア」状態)。同様に、ノード526がM状態にある場合には、ノード510及び514はI状態にある必要があるが、ノード524、512、520及び522は、従属性がないことに起因して、MSI状態のいずれかである可能性がある。根ノード510は、全ての他のノードが根ノード510に従属性があるという点で、他のノードとは異なる。キャッシュコヒーレンシプロトコルの他の実施形態では、従属性ノード及び非従属性ノードの間の状態のために他の規則が用いられる場合がある。
状態木500を用いて、全キャッシュラインの所与の部分が現時点でコヒーレンシ動作に関与するか否かを判定するのを助けることができる。特定のノードの先祖が、ノードそのものが表すデータの上位集合を表すことができると考える。そして、ノードの子孫は、ノードそのものが表す部分の中に含まれる全キャッシュラインの部分を表すことができる。これらの特性によって、単純な1組の規則を用いて、ノードによって表される全キャッシュラインの部分が、現時点でコヒーレンシ動作に関与するか否かを判定することができる。これらの規則は、ディレクトリのエントリに関して演算を行うことができるL2キャッシュのロジックにおいて実現することができる。
規則1は、或るノードが既にアクティブ状態にある先祖を有する場合には、そのノードは新たなコヒーレンシ動作を開始しなくてもよいという規則にすることができる。規則2は、或るノードそのものが既にアクティブ状態にある場合には、そのノードは新たなコヒーレンシ動作を開始しなくてもよいという規則にすることができる。規則3は、そのノードのいずれかの子孫が既にアクティブ状態にある場合には、そのノードは新たなコヒーレンシ動作を開始しなくてもよいという規則にすることができる。規則4は、新たなコヒーレンシ動作が、そのノードのいずれかの先祖の状態を変更することになる場合には、規則1、2及び3が、その根ノードに最も近い先祖にも適用されることになるという規則にすることができる。他の実施形態では、他の複数の組の規則を確立して、全キャッシュラインの一部が現時点でコヒーレンシ動作に関与するか否かを判定することができる。
ここで図6を参照すると、本開示の一実施形態による、収集状態保持レジスタ(CSHR)の図が示される。従来のキャッシュシステムでは、1つのデータL1キャッシュが、別のデータL1キャッシュによって所有されるキャッシュラインにアクセスすることを望むとき、対応するL2キャッシュが、そのラインの状態を更新して、所有しているデータL1キャッシュに要求を転送することができる。異なる長さのキャッシュロケーションを有するキャッシュシステムの一実施形態では、ラインの状態を更新して、所有しているデータL1キャッシュに要求を転送する過程は、特定の事例の場合と同じようにして実行することができる。それらの事例は、所有しているデータL1キャッシュが、要求しているデータL1キャッシュ内の対応するキャッシュロケーション以上の長さであるキャッシュロケーション内にキャッシュラインの要求される部分を有する事例を含むことができる。
しかしながら、そのラインが、要求されるブロック細分性よりも小さなブロック細分性において変更されると、たとえば、要求されたキャッシュラインの一部が、一方のデータL1キャッシュにおいて変更された状態になり、残りの部分が別のデータL1キャッシュ(又はメモリ)にある場合がある。このような状況では、要求されるキャッシュラインのこれらの種々の部分を収集し、アセンブルする必要が生じる。要求されるキャッシュラインのこれらの種々の部分を収集し、アセンブルするための方法は、いくつかのキャッシュロケーションにおいて実行することができる。一実施形態では、要求しているデータL1キャッシュが、それらの部分そのものを収集し、アセンブルすることができる。これは、要求を処理する待ち時間を短くすることができるので好都合である。
しかしながら、別の実施形態では、状態木内のいくつかの異なるノードに対応するキャッシュラインの部分を共有することは、比較的稀にしか起こらないものと予想することができる。それゆえ、それに応じて、要求しているキャッシュラインのこれらの種々の部分を収集し、アセンブルする必要性も、比較的稀にしか起こらないであろう。この実施形態では、L2キャッシュにおいて収集及びアセンブルを実行するとともに、後にアセンブルされたラインを、要求している1次データキャッシュに転送するのがより簡単である。
L2キャッシュにおいて収集及びアセンブルを実行するために、CSHR340を用いることができる。CSHR340内の各エントリは、特定の1次データキャッシュ要求を追跡することができる。それらのエントリは、1次データキャッシュ要求に対応するL2キャッシュラインアドレスによって索引を付けることができる。各エントリは、到来する1次データキャッシュ要求を含むことができ、その要求は、要求がなされ、また全キャッシュラインの特定の部分(たとえば、半分にした部分のうちの第1の部分、4分の1にした部分のうちの第3の部分等)が要求される、キャッシュロケーションの長さを含むことができる。各エントリは最初に、L2キャッシュが種々の1次データキャッシュキャッシュに対して行うことになる要求の数を格納していることがある。この数は、各応答が到着する度にデクリメントすることができる。その数が0に達するとき、L2キャッシュは、全ての部分が収集されたこと、そしてアセンブルの処理を開始することができることを知るであろう。
1次データキャッシュのうちの1つからの要求は以下のように処理することができる。L2キャッシュが要求を受信するとき、L2キャッシュは最初に、その要求が、所有している1次データキャッシュと同じブロック細分性を有するか否かを判定することができる。同じブロック細分性を有する場合には、L2キャッシュは単に、その要求を、所有している1次データキャッシュに転送することができる。しかしながら、ブロック細分性が同じでない場合には、CSHR340内のエントリ610を割り当てることができる。到来する1次データキャッシュ要求は、要求フィールド612に入れることができ、L2キャッシュが種々の1次データキャッシュに対して行うことになる要求の数は、未処理応答フィールド614の数に入れることができる。その後、L2キャッシュは種々の1次データキャッシュに対して要求を発行して、応答が到着するのを待つことができる。各応答がL2キャッシュに到着するのに応じて、対応するデータが保持され、未処理応答フィールド614の数をデクリメントすることができる。未処理応答フィールド614の数が0に達するとき、L2キャッシュは、全ての部分が収集されたことを知るであろう。その後、L2キャッシュは、1次データキャッシュから受信されたデータをアセンブルすることができる。アセンブルすると、L2キャッシュは、アセンブルされたキャッシュラインを、元の要求している1次データキャッシュに転送することができる。
ここで図7A及び図7Bを参照すると、本開示の2つの実施形態による、複数のコアを有するプロセッサを備えるシステムの概略図が示される。図7Aのシステムは、プロセッサ、メモリ及び入力/出力デバイスがシステムバスによって相互接続されるシステムを概略的に示すのに対して、図7Bのシステムは、プロセッサ、メモリ及び入力/出力デバイスが多数のポイント・ツー・ポイントインターフェースによって相互接続されるシステムを概略的に示す。
図7Aのシステムは、1つ又はいくつかのプロセッサを含むことができるが、ここでは明確にするために、そのうちの2つのプロセッサ40、60だけが示される。プロセッサ40、60は2次キャッシュ42、62を備えることができ、各プロセッサ40、60は、それぞれが1つの1次キャッシュを有する複数のコアを含むことができる。図7Aのシステムは、システムバス6とのバスインターフェース44、64、12、8を介して接続されるいくつかの機能を有することができる。一実施形態では、システムバス6として、インテル(登録商標)社によって製造されるPentium(登録商標)クラスプロセッサで利用されるフロントサイドバス(FSB)を用いることができる。他の実施形態では、他のバスを用いることができる。いくつかの実施形態において、メモリコントローラ34及びバスブリッジ32はまとめて、チップセットと呼ばれることがある。いくつかの実施形態では、チップセットの機能は、図7Aの実施形態において示されるのとは異なるように、物理的なチップの間で分割されることがある。
メモリコントローラ34によって、プロセッサ40、60は、システムメモリ10に対して、且つ基本入力/出力システム(BIOS)消去可能プログラマブルリードオンリーメモリ(EPROM)36に対して、読出し及び書込みを行うことができるようになる。いくつかの実施形態では、BIOS EPROM36は、フラッシュメモリを利用することができ、BIOSの代わりに、他の基本演算ファームウエアを含むこともできる。メモリコントローラ34は、バスインターフェース8を備え、メモリ読出し及び書込みデータが、システムバス6上でバスエージェントとの間で搬送されるようにすることができる。メモリコントローラ34は、ハイパフォーマンスグラフィックスインターフェース39を介して、ハイパフォーマンスグラフィックス回路38と接続することもできる。或る特定の実施形態では、ハイパフォーマンスグラフィックスインターフェース39は、アドバンスドグラフィックスポートAGPインターフェースであってもよい。メモリコントローラ34は、ハイパフォーマンスグラフィックスインターフェース39を介して、データをシステムメモリ10からハイパフォーマンスグラフィックス回路38に送信することができる。
図7Bのシステムは、1つ又はいくつかのプロセッサを含むことができるが、ここでは明確にするために、そのうちの2つのプロセッサ70、80だけが示される。プロセッサ70、80は、2次キャッシュ56、58を備えることができ、各プロセッサ70、80は、それぞれが1つの1次キャッシュを有する複数のコアを含むことができる。プロセッサ70、80はそれぞれ、メモリ2、4と接続するためのローカルメモリコントローラハブ(MCH)72、82を含むことができる。プロセッサ70、80は、ポイント・ツー・ポイントインターフェース50を介して、ポイント・ツー・ポイントインターフェース回路78、88を用いてデータを交換することができる。プロセッサ70、80はそれぞれ、ポイント・ツー・ポイントインターフェース52、54を介して、ポイント・ツー・ポイントインターフェース回路76、94、86、98を用いてチップセット90とデータを交換することができる。他の実施形態では、チップセット機能は、プロセッサ70、80内に実装することができる。チップセット90は、ハイパフォーマンスグラフィックスインターフェース92を介して、ハイパフォーマンスグラフィックス回路38とデータを交換することもできる。
図7Aのシステムでは、バスブリッジ32によって、システムバス6とバス16との間でデータを交換できるようになり、いくつかの実施形態では、そのバスは、業界標準アーキテクチャ(ISA)バス又は周辺機器相互接続(PCI)バスであってもよい。図7Bのシステムでは、チップセット90は、バスインターフェース96を介して、バス16とデータを交換することができる。いずれのシステムでも、実施形態によって、ローパフォーマンスグラフィックスコントローラ、ビデオコントローラ、及びネットワーキングコントローラを含む、バス16上に種々の入力/出力I/Oデバイス14が存在する場合がある。いくつかの実施形態では、バス16とバス20との間でデータを交換できるようにするために、別のバスブリッジ18を用いることができる。実施形態によって、バスは、小型コンピュータシステムインターフェース(SCSI)バス、インテグレーテッドドライブエレクトロニクス(IDE)バス、又はユニバーサルシリアルバス(USB)バスであってもよい。さらに別のI/Oデバイスをバス20に接続することができる。これらのデバイスは、キーボード及びマウスを含むカーソル制御デバイス22と、オーディオI/O24と、モデム及びネットワークインターフェースを含む通信デバイス26と、データ記憶デバイス28とを含むことができる。ソフトウエアコード30は、データ記憶デバイス28上に格納することができる。実施形態によって、データ記憶デバイス28として、固定磁気ディスク、フロッピィディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープ、又はフラッシュメモリを含む不揮発性メモリを用いることができる。
これまでの明細書において、本発明は、その具体的な例示的実施形態を参照しながら説明されてきた。しかしながら、添付の特許請求の範囲において述べられるような本発明の広い精神及び範囲から逸脱することなく、それらの例示的実施形態に対して種々の変更及び改変を行うことができることは明らかであろう。したがって、明細書及び図面は、限定するものと解釈されるのではなく、例示と見なされるべきである。
本開示の一実施形態による、異なる長さのキャッシュロケーションを含むキャッシュを有するマルチプロセッサコアを備えるプロセッサの図である。 本開示の一実施形態による、プロセッサモジュールの図である。 本開示の一実施形態による、ディレクトリ構造を有する2次キャッシュの図である。 本開示の一実施形態による、図3の2次キャッシュのディレクトリエントリの図である。 本開示の一実施形態による、図4のディレクトリエントリに対応する状態木の図である。 本開示の別の実施形態による、収集状態保持レジスタの図である。 本開示の一実施形態による、複数のコアを有するプロセッサを備えるシステムの概略図である。 本開示の別の実施形態による、複数のコアを有するプロセッサを備えるシステムの概略図である。

Claims (31)

  1. 第1の長さを有するキャッシュロケーションから成る第1のグループと、第2の長さを有するキャッシュロケーションから成る第2のグループとを含む第1のキャッシュを備える第1のコアと、
    前記第1のキャッシュよりも前記第1のコアから離れた階層レベルにあり、第3の長さを有するキャッシュロケーションから成る第3のグループを有する第2のキャッシュと、
    コヒーレンシ動作を実行し、前記第3のグループのキャッシュロケーションのうちの1つである第1のキャッシュラインに対するディレクトリエントリであって、前記第1のキャッシュ内のキャッシュロケーションに対応するフィールドを有するディレクトリエントリを保持するための第1のロジックと、
    前記第1の長さを有するキャッシュロケーションから成る第4のグループと、前記第2の長さを有するキャッシュロケーションから成る第5のグループとを含む第3のキャッシュを備える第2のコアと、
    を備え、
    前記ディレクトリエントリは、前記第1のグループのキャッシュロケーション及び前記第2のグループのキャッシュロケーションの中に前記第1のキャッシュラインの部分が存在するか否かを表すベクトルを含み、
    前記第2のキャッシュは、前記第1のグループ、前記第2のグループ、前記第4のグループ及び前記第5のグループのキャッシュロケーション内の前記第1のキャッシュラインの部分を得るために、前記第1のキャッシュ及び前記第3のキャッシュに対してなされる要求を追跡するための第1のレジスタグループを含む、
    プロセッサ。
  2. 前記ベクトルは、前記第4のグループのキャッシュロケーション及び前記第5のグループのキャッシュロケーションの中に前記第1のキャッシュラインの部分が存在するか否かをさらに表す、請求項に記載のプロセッサ。
  3. 前記第1のキャッシュが状態木の第1のノードに対応するメモリ又はキャッシュ動作を要求するときに、前記第1のロジックは前記ベクトルから該状態木を形成する、請求項1または2に記載のプロセッサ。
  4. 前記第1のノードが既にアクティブであるとき、前記第1のロジックは前記コヒーレンシ動作を遅延させる、請求項に記載のプロセッサ。
  5. 前記状態木内の前記第1のノードの先祖が既にアクティブであるとき、前記第1のロジックは前記コヒーレンシ動作を遅延させる、請求項3または4に記載のプロセッサ。
  6. 前記状態木内の前記第1のノードの子孫が既にアクティブであるとき、前記第1のロジックは前記コヒーレンシ動作を遅延させる、請求項3から5のいずれかに記載のプロセッサ。
  7. 前記第1のロジックは、前記第1のノード及び第2のノードの従属性に応じて、該第1のノード及び該第2のノードの許容できる状態のための規則を実施する、請求項3から6のいずれかに記載のプロセッサ。
  8. 前記第2のキャッシュは、前記部分をアセンブルし、前記部分のうちの該アセンブルされた部分の現在値を収集するための第2のロジックを備える、請求項1から7のいずれかに記載のプロセッサ。
  9. 第1の長さを有するキャッシュロケーションから成る第1のグループと、第2の長さを有するキャッシュロケーションから成る第2のグループとを含む第1のキャッシュを備える第1のコアと、
    前記第1のキャッシュよりも前記第1のコアから離れた階層レベルにあり、第3の長さを有するキャッシュロケーションから成る第3のグループを有する第2のキャッシュと、
    コヒーレンシ動作を実行し、前記第3のグループのキャッシュロケーションのうちの1つである第1のキャッシュラインに対するディレクトリエントリであって、前記第1のキャッシュ内のキャッシュロケーションに対応するフィールドを有するディレクトリエントリを保持するための第1のロジックと、
    前記第1の長さを有するキャッシュロケーションから成る第4のグループと、前記第2の長さを有するキャッシュロケーションから成る第5のグループとを含む第3のキャッシュを備える第2のコアと、
    を備え、
    前記ディレクトリエントリは、前記第1のグループのキャッシュロケーション及び前記第2のグループのキャッシュロケーションの中に前記第1のキャッシュラインの部分が存在するか否かを表すベクトルを含み、
    前記ベクトルは、前記第4のグループのキャッシュロケーション及び前記第5のグループのキャッシュロケーションの中に前記第1のキャッシュラインの部分が存在するか否かをさらに表し、
    前記第1のキャッシュが状態木の第1のノードに対応するメモリ又はキャッシュ動作を要求するときに、前記第1のロジックは前記ベクトルから該状態木を形成する
    プロセッサ。
  10. 前記第1のノードが既にアクティブであるとき、前記第1のロジックは前記コヒーレンシ動作を遅延させる、請求項9に記載のプロセッサ。
  11. 前記状態木内の前記第1のノードの先祖が既にアクティブであるとき、前記第1のロジックは前記コヒーレンシ動作を遅延させる、請求項9または10に記載のプロセッサ。
  12. 一群の1次キャッシュのうちの1つからメモリ又はキャッシュ動作の要求を受信することであって、各1次キャッシュは第1の長さを有するキャッシュロケーション及び第2の長さを有するキャッシュロケーションを含む、受信すること、
    2次キャッシュにおいて、前記第1の長さを有する前記キャッシュロケーション及び前記第2の長さを有する前記キャッシュロケーションのうちのいずれが、前記要求に対応する該2次キャッシュの第1のキャッシュラインの部分を含むかを判定すること、
    前記判定の結果に一部基づいて、前記メモリ又はキャッシュ動作の前記要求を遅延させること、並びに
    前記判定が前記第1のキャッシュラインの部分を見つけた、前記一群の1次キャッシュのうちの選択された1次キャッシュに、一群のデータ要求を送信すること、
    を含む、方法。
  13. 前記判定することは、前記2次キャッシュが有するディレクトリ内の、前記1次キャッシュの前記第1の長さのキャッシュロケーション及び前記第2の長さのキャッシュロケーションの中に前記2次キャッシュの前記第1のキャッシュラインの部分が存在するか否かを表すベクトルを検査することを含む、請求項12に記載の方法。
  14. 前記判定することはさらに、前記2次キャッシュのロジックを用いて、前記ベクトルから状態木を構成することを含む、請求項13に記載の方法。
  15. 前記判定することは、前記要求に対応するノードから前記状態木内の先祖及び子孫に規則を適用することを含む、請求項14に記載の方法。
  16. レジスタ内で前記データ要求を追跡すること、及び前記部分を収集して前記第1のキャッシュラインの現在値に入れることをさらに含む、請求項15に記載の方法。
  17. 一群の1次キャッシュのうちの1つからメモリ又はキャッシュ動作の要求を受信することであって、各1次キャッシュは第1の長さを有するキャッシュロケーション及び第2の長さを有するキャッシュロケーションを含む、受信すること、
    2次キャッシュにおいて、前記第1の長さを有する前記キャッシュロケーション及び前記第2の長さを有する前記キャッシュロケーションのうちのいずれが、前記要求に対応する該2次キャッシュの第1のキャッシュラインの部分を含むかを判定すること、並びに
    前記判定の結果に一部基づいて、前記メモリ又はキャッシュ動作の前記要求を遅延させること
    を含み、
    前記判定することは、前記2次キャッシュが有するディレクトリ内の、前記1次キャッシュの前記第1の長さのキャッシュロケーション及び前記第2の長さのキャッシュロケーションの中に前記2次キャッシュの前記第1のキャッシュラインの部分が存在するか否かを表すベクトルを検査すること、並びに、前記2次キャッシュのロジックを用いて、前記ベクトルから状態木を構成することを含む、
    方法。
  18. 第1の長さを有するキャッシュロケーションから成る第1のグループ及び第2の長さを有するキャッシュロケーションから成る第2のグループを含む第1のキャッシュを備える第1のコアと、該第1のキャッシュよりも該第1のコアから離れた階層レベルにあり、第3の長さを有するキャッシュロケーションから成る第3のグループを有する第2のキャッシュと、コヒーレンシ動作を実行し、前記第3のグループのキャッシュロケーションのうちの1つである第1のキャッシュラインに対するディレクトリエントリであって、前記第1のキャッシュ内のキャッシュロケーションに対応するフィールドを有するディレクトリエントリを保持するための第1のロジックと、前記第1の長さを有するキャッシュロケーションから成る第4のグループと、前記第2の長さを有するキャッシュロケーションから成る第5のグループとを含む第3のキャッシュを備える第2のコアと、
    を備えるプロセッサと、
    前記プロセッサを入力/出力デバイスに接続するための相互接続と、
    前記相互接続によって前記プロセッサに接続されるネットワークコントローラと
    を備え、
    前記ディレクトリエントリは、前記第1のグループのキャッシュロケーション及び前記第2のグループのキャッシュロケーションの中に前記第1のキャッシュラインの部分が存在するか否かを表すベクトルを含み、
    前記第2のキャッシュは、前記第1のグループ、前記第2のグループ、前記第4のグループ及び前記第5のグループのキャッシュロケーション内の前記第1のキャッシュラインの部分を得るために、前記第1のキャッシュ及び前記第3のキャッシュに対してなされる要求を追跡するための第1のレジスタグループを含む、
    システム。
  19. 前記ベクトルは、前記第4のグループのキャッシュロケーション及び前記第5のグループのキャッシュロケーションの中に前記第1のキャッシュラインの部分が存在するか否かをさらに表す、請求項18に記載のシステム。
  20. 前記第1のキャッシュが状態木のノードに対応するコヒーレンシ動作を要求するときに、前記第1のロジックは前記ベクトルから該状態木を形成する、請求項18または19に記載のシステム。
  21. 前記ノードが既にアクティブであるとき、前記第1のロジックは前記コヒーレンシ動作を遅延させる、請求項20に記載のシステム。
  22. 前記状態木内の前記ノードの先祖が既にアクティブであるとき、前記第1のロジックは前記コヒーレンシ動作を遅延させる、請求項20または21に記載のシステム。
  23. 前記状態木内の前記ノードの子孫が既にアクティブであるとき、前記第1のロジックは前記コヒーレンシ動作を遅延させる、請求項20から22のいずれかに記載のシステム。
  24. 第1の長さを有するキャッシュロケーションから成る第1のグループ及び第2の長さを有するキャッシュロケーションから成る第2のグループを含む第1のキャッシュを備える第1のコアと、該第1のキャッシュよりも該第1のコアから離れた階層レベルにあり、第3の長さを有するキャッシュロケーションから成る第3のグループを有する第2のキャッシュと、コヒーレンシ動作を実行し、前記第3のグループのキャッシュロケーションのうちの1つである第1のキャッシュラインに対するディレクトリエントリであって、前記第1のキャッシュ内のキャッシュロケーションに対応するフィールドを有するディレクトリエントリを保持するための第1のロジックと、前記第1の長さを有するキャッシュロケーションから成る第4のグループと、前記第2の長さを有するキャッシュロケーションから成る第5のグループとを含む第3のキャッシュを備える第2のコアと、を備えるプロセッサと、
    前記プロセッサを入力/出力デバイスに接続するための相互接続と、
    前記相互接続によって前記プロセッサに接続されるネットワークコントローラと

    を備え、
    前記ディレクトリエントリは、前記第1のグループのキャッシュロケーション及び前記第2のグループのキャッシュロケーションの中に前記第1のキャッシュラインの部分が存在するか否かを表すベクトルを含み、
    前記ベクトルは、前記第4のグループのキャッシュロケーション及び前記第5のグループのキャッシュロケーションの中に前記第1のキャッシュラインの部分が存在するか否かをさらに表し、
    前記第1のキャッシュが状態木の第1のノードに対応するメモリ又はキャッシュ動作を要求するときに、前記第1のロジックは前記ベクトルから該状態木を形成する
    システム。
  25. 前記ノードが既にアクティブであるとき、前記第1のロジックは前記コヒーレンシ動作を遅延させる、請求項24に記載のシステム。
  26. 一群の1次キャッシュのうちの1つからメモリ又はキャッシュ動作の要求を受信するための手段であって、各1次キャッシュは第1の長さを有するキャッシュロケーション及び第2の長さを有するキャッシュロケーションを含む、受信するための手段と、
    2次キャッシュにおいて、前記第1の長さを有する前記キャッシュロケーション及び前記第2の長さを有する前記キャッシュロケーションのうちのいずれが、前記要求に対応する該2次キャッシュの第1のキャッシュラインの部分を含むかを判定するための手段と、
    前記判定するための手段によって生成される結果に一部基づいて、前記メモリ又はキャッシュ動作の前記要求を遅延させるための手段と
    前記判定するための手段が前記第1のキャッシュラインの部分を見つけた、前記一群の1次キャッシュのうちの選択された1次キャッシュに、一群のデータ要求を送信するための手段と、
    を備える、装置。
  27. 前記判定するための手段は、前記2次キャッシュが有するディレクトリ内の、前記1次キャッシュの前記第1の長さのキャッシュロケーション及び前記第2の長さのキャッシュロケーションの中に前記2次キャッシュの前記第1のキャッシュラインの部分が存在するか否かを表すベクトルを検査するための手段を含む、請求項26に記載の装置。
  28. 前記判定するための手段は、前記2次キャッシュのロジックを用いて、前記ベクトルから状態木を構成するための手段をさらに含む、請求項27に記載の装置。
  29. 前記判定するための手段は、前記要求に対応するノードから前記状態木内の先祖及び子孫に規則を適用するための手段を含む、請求項28に記載の装置。
  30. レジスタ内で前記データ要求を追跡するための手段と、前記部分を収集して前記第1のキャッシュラインの現在値に入れるための手段とをさらに備える、請求項26から29のいずれかに記載の装置。
  31. 一群の1次キャッシュのうちの1つからメモリ又はキャッシュ動作の要求を受信するための手段であって、各1次キャッシュは第1の長さを有するキャッシュロケーション及び第2の長さを有するキャッシュロケーションを含む、受信するための手段と、
    2次キャッシュにおいて、前記第1の長さを有する前記キャッシュロケーション及び前記第2の長さを有する前記キャッシュロケーションのうちのいずれが、前記要求に対応する該2次キャッシュの第1のキャッシュラインの部分を含むかを判定するための手段と、
    前記判定するための手段によって生成される結果に一部基づいて、前記メモリ又はキャッシュ動作の前記要求を遅延させるための手段と
    を備え、
    前記判定するための手段は、前記2次キャッシュが有するディレクトリ内の、前記1次キャッシュの前記第1の長さのキャッシュロケーション及び前記第2の長さのキャッシュロケーションの中に前記2次キャッシュの前記第1のキャッシュラインの部分が存在するか否かを表すベクトルを検査するための手段と、前記2次キャッシュのロジックを用いて、前記ベクトルから状態木を構成するための手段を含む、
    装置。
JP2007548610A 2004-12-27 2005-12-27 異なるキャッシュロケーション長を有するキャッシュにおいてキャッシュコヒーレンシを保持するためのシステム及び方法 Expired - Fee Related JP4307508B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/024,278 US7454576B2 (en) 2004-12-27 2004-12-27 System and method for cache coherency in a cache with different cache location lengths
PCT/US2005/047595 WO2006072064A2 (en) 2004-12-27 2005-12-27 System and method for cache coherency in a cache with different cache location lengths

Publications (2)

Publication Number Publication Date
JP2008525904A JP2008525904A (ja) 2008-07-17
JP4307508B2 true JP4307508B2 (ja) 2009-08-05

Family

ID=36216791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007548610A Expired - Fee Related JP4307508B2 (ja) 2004-12-27 2005-12-27 異なるキャッシュロケーション長を有するキャッシュにおいてキャッシュコヒーレンシを保持するためのシステム及び方法

Country Status (7)

Country Link
US (1) US7454576B2 (ja)
JP (1) JP4307508B2 (ja)
KR (1) KR100925572B1 (ja)
CN (1) CN101088074B (ja)
DE (1) DE112005003243T5 (ja)
TW (1) TWI298457B (ja)
WO (1) WO2006072064A2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7454576B2 (en) * 2004-12-27 2008-11-18 Intel Corporation System and method for cache coherency in a cache with different cache location lengths
US8959292B1 (en) * 2005-12-22 2015-02-17 The Board Of Trustees Of The Leland Stanford Junior University Atomic memory access hardware implementations
DE102008012979A1 (de) * 2008-03-06 2009-09-10 Gip Ag Verfahren und Programm zum Bereitstellen von Datenkohärenz in Netzwerken
US9035959B2 (en) * 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US8190820B2 (en) * 2008-06-13 2012-05-29 Intel Corporation Optimizing concurrent accesses in a directory-based coherency protocol
US8555001B2 (en) * 2008-08-25 2013-10-08 Nec Corporation Cache memory, including miss status/information and a method using the same
WO2010124291A1 (en) 2009-04-24 2010-10-28 Level 3 Communications, Llc Media resource storage and management
US9774818B2 (en) 2009-04-24 2017-09-26 Level 3 Communications, Llc Media resource storage and management
US9086973B2 (en) 2009-06-09 2015-07-21 Hyperion Core, Inc. System and method for a cache in a multi-core processor
WO2012091702A1 (en) 2010-12-29 2012-07-05 Empire Technology Development Llc Accelerating cache state transfer on a directory-based multicore architecture
CN102270180B (zh) * 2011-08-09 2014-04-02 清华大学 一种多核处理器系统的管理方法
KR101856506B1 (ko) * 2011-09-22 2018-05-11 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 쓰기 방법
US8868843B2 (en) * 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
CN104809076B (zh) * 2014-01-23 2018-02-06 华为技术有限公司 Cache的管理方法及装置
US10204047B2 (en) * 2015-03-27 2019-02-12 Intel Corporation Memory controller for multi-level system memory with coherency unit
CN104850508B (zh) * 2015-04-09 2018-02-09 深圳大学 基于数据局部性的访存方法
SG11201803730TA (en) 2015-11-04 2018-06-28 Samsung Electronics Co Ltd Systems and methods for implementing coherent memory in a multiprocessor system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5996048A (en) * 1997-06-20 1999-11-30 Sun Microsystems, Inc. Inclusion vector architecture for a level two cache
JP3515333B2 (ja) * 1997-08-26 2004-04-05 株式会社東芝 情報処理装置
US6260114B1 (en) * 1997-12-30 2001-07-10 Mcmz Technology Innovations, Llc Computer cache memory windowing
JP3751741B2 (ja) * 1998-02-02 2006-03-01 日本電気株式会社 マルチプロセッサシステム
US6662277B2 (en) * 2001-07-31 2003-12-09 Hewlett-Packard Development Company, L.P. Cache system with groups of lines and with coherency for both single lines and groups of lines
US7111128B2 (en) * 2002-12-19 2006-09-19 Intel Corporation Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US7454576B2 (en) * 2004-12-27 2008-11-18 Intel Corporation System and method for cache coherency in a cache with different cache location lengths

Also Published As

Publication number Publication date
CN101088074A (zh) 2007-12-12
US20060143404A1 (en) 2006-06-29
KR20070093439A (ko) 2007-09-18
WO2006072064A3 (en) 2006-09-14
WO2006072064A2 (en) 2006-07-06
JP2008525904A (ja) 2008-07-17
US7454576B2 (en) 2008-11-18
TW200703100A (en) 2007-01-16
CN101088074B (zh) 2010-06-16
DE112005003243T5 (de) 2007-11-08
KR100925572B1 (ko) 2009-11-06
TWI298457B (en) 2008-07-01

Similar Documents

Publication Publication Date Title
JP4307508B2 (ja) 異なるキャッシュロケーション長を有するキャッシュにおいてキャッシュコヒーレンシを保持するためのシステム及び方法
JP3661761B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)データ処理システム
JP3644587B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム
CN106815151B (zh) 高性能互连相干协议
US7937532B2 (en) Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine
US6338122B1 (en) Non-uniform memory access (NUMA) data processing system that speculatively forwards a read request to a remote processing node
US7093079B2 (en) Snoop filter bypass
US6751710B2 (en) Scalable multiprocessor system and cache coherence method
US7389389B2 (en) System and method for limited fanout daisy chaining of cache invalidation requests in a shared-memory multiprocessor system
US6622217B2 (en) Cache coherence protocol engine system and method for processing memory transaction in distinct address subsets during interleaved time periods in a multiprocessor system
KR100324975B1 (ko) 잠재적인 제3 노드 트랜잭션을 버퍼에 기록하여 통신 대기시간을 감소시키는 비균일 메모리 액세스(numa) 데이터 프로세싱 시스템
TWI556161B (zh) 用以實施監測寫入至一位址的指令之處理器、系統和方法
JP3628595B2 (ja) 少なくとも1つのnuma(non−uniformmemoryaccess)データ処理システムとして構成可能な相互接続された処理ノード
US7568073B2 (en) Mechanisms and methods of cache coherence in network-based multiprocessor systems with ring-based snoop response collection
US20020124143A1 (en) System and method for generating cache coherence directory entries and error correction codes in a multiprocessor system
US6345352B1 (en) Method and system for supporting multiprocessor TLB-purge instructions using directed write transactions
TW200534110A (en) A method for supporting improved burst transfers on a coherent bus
KR20000022712A (ko) 노드 상호 접속망 상에서 요구를 예측 방식으로 발행하는 비균일 메모리 액세스 데이터 처리 시스템
US20120185228A1 (en) Structure for Performing Cacheline Polling Utilizing a Store and Reserve Instruction
US20070073977A1 (en) Early global observation point for a uniprocessor system
JP7419261B2 (ja) ストリーミングデータ転送のためのフロー圧縮を用いたデータ処理ネットワーク
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
US20090006824A1 (en) Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling
US7073004B2 (en) Method and data processing system for microprocessor communication in a cluster-based multi-processor network
Walters et al. The IBM z13 processor cache subsystem

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090216

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090407

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090428

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120515

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130515

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees