JP3866447B2 - マルチプロセッサ・ノードデータ処理システムに使用するディレクトリエントリ割当てシステム及び方法 - Google Patents
マルチプロセッサ・ノードデータ処理システムに使用するディレクトリエントリ割当てシステム及び方法 Download PDFInfo
- Publication number
- JP3866447B2 JP3866447B2 JP12896699A JP12896699A JP3866447B2 JP 3866447 B2 JP3866447 B2 JP 3866447B2 JP 12896699 A JP12896699 A JP 12896699A JP 12896699 A JP12896699 A JP 12896699A JP 3866447 B2 JP3866447 B2 JP 3866447B2
- Authority
- JP
- Japan
- Prior art keywords
- directory
- entry
- cache
- shared
- state
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
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)
- Memory System (AREA)
Description
【発明の属する技術分野】
本発明は、一般に、マルチプロセッサデータ処理システムにおけるキャッシュコヒーレンス(coherence)、特に、キャッシュディレクトリエントリを選択するためのアルゴリズムでキャッシュの動作を増強することに関する。
なお本願は、1998年5月8日付けの米国仮出願による利益を請求するものである。
【0002】
また本願は、次の同時係属出願と関連している。同時係属米国特許出願番号09/003,721、「分散共有メモリマルチプロセッサシステムのための統合されたメッセージパッシングおよびメモリ保護を備えるキャッシュコヒーレンスユニット」の名称で、1998年1月7日に出願、同時係属米国特許出願番号09/003,771、「統合されたメッセージパッシングサポートを備える分散共有メモリマルチプロセッサのためのメモリ保護メカニズム」の名称で、1998年1月7日に出願、同時係属米国特許出願番号09/041,568、「パイプライン化されたスヌーピープロトコルを有する相互接続用マルチプロセッサノードのためのキャッシュコヒーレンスユニット」の名称で、1998年3月12日に出願、同時係属米国特許出願番号09/281,714、「分散共有メモリマルチプロセッサのための分割疎ディレクトリ」の名称で、1998年3月30日に出願、同時係属米国特許出願番号09/285,316、「ネットワーク通信におけるデッドロックを回避するためのコンピュータアーキテクチャ」の名称で、1999年4月2日に出願、同時係属米国特許出願番号09/287,650、「マルチプロセッサコンピュータシステムにおけるオーバラン保護用クレジットベースドメッセージプロトコル」の名称で、1999年4月7日に出願。参考として、上記の米国特許出願番号の09/003,721は米国特許6,209,064に対応し、09/003,771は米国特許6,212,610に対応し、09/041,568はWO99/46681(特表2001−525095および米国特許6,631,448)に対応し、09/281,714は特表2001−525095および米国特許6,560,681に対応し、09/285,316は特表2000−67023および米国特許6,490,630に対応し、09/287,650は特表2000−90060および米国特許6,715,008に対応する。
【0003】
【従来の技術】
コンピュータシステムノードは、メモリサブシステムとプロセッササブシステムに分割することができる。メモリサブシステムは、メインダイナミックランダムアクセスメモリ(DRAM)を含み、任意の数の接続されたプロセッサからの要求に応えてメモリからのデータを提供する。通常、メモリサブシステム内のデータにアクセスするのに費す時間はプロセッサの速度に比べてかなり長いものであり、従って、プロセッサは往々にして自らの性能を改善するべくキャッシュを備えて構築されている。プロセッササブシステムは、プロセッサと単数または複数のキャッシュを含んでいる。キャッシュというのは、プロセッサとメインメモリの間に接続され、メインメモリから最近使用されたデータを格納する小形メモリである。キャッシュは、メインメモリサブシステムに比べてはるかにアクセス速度が速く、通常ははるかに小形である。キャッシュ内へおよびキャッシュから外へ転送され得る最小のデータ単位は、キャッシュド「ライン」(cached“line”)と呼ばれる。1キャッシュドラインに対応するメモリ内のデータは、メモリラインと呼ばれる。1データラインというのは、1キャッシュドラインまたは1メモリラインのいずれかを指す。
【0004】
全てのキャッシュアーキテクチャは、その多くが複数のキャッシュドラインに対応する1又は一連のメモリラインを含む物理的に連続したセグメントへと、メインメモリを分割する。キャッシュドラインにアクセスするには、そのラインに対応するセグメントを識別するためのセグメントタグおよびセグメント内のラインを識別するためのラインインデックスが必要である。当業者であれば、1セグメントが1つのラインしかもたない場合、ラインインデックスが不要であることがわかるだろう。プロセッサが、ローカルキャッシュ内にすでに含まれているデータラインを要求する場合、そのデータラインはプロセッサに受渡し(deliver)される。そうでない場合、プロセッサはメインメモリからデータラインを獲得する。
【0005】
セットアソシエティブおよびフルアソシエティブキャッシュは「多」ウェイ(“multiple”ways)であり、これはすなわちディレクトリエントリが、同じメモリセグメントインデックスを有するが異なるセグメントに帰属する多数のキャッシュドラインを参照することを意味する。これは、直接マッピングされたキャッシュと比較して、多方向ディレクトリが同じ方向にマッピングするアクティブキャッシュライン間のコンテンションを低減させることから、キャッシュヒット率を改善することができる。キャッシュラインの直接マッピングでは、新たに要求されたキャッシュドラインを参照するのにディレクトリが必要とされるとき、置換(replace)すべきディレクトリを選択するという問題が回避されるが、フルアソシエイティブおよびセットアソシエティブキャッシュマッピングスキームは、置換すべき特定のキャッシュドラインを参照するディレクトリを選択するのに、置換プロトコルを必要とする。最も一般的なプロトコルは、未使用時間が最も長いキャッシュラインを置換する最低使用頻度(LRU)プロトコルである。
【0006】
標準的には、セットアソシエティブキャッシュは、4〜8ウェイであり、一方フルアソシエティブキャッシュは32〜64ウェイである。
共用メモリマルチプロセッサシステムにおいては、各プロセッサは通常、それ自身のキャッシュを有し、従ってシステムは多数のキャッシュをもつ。各キャッシュは、与えられたデータラインのコピーを保持できることから、全ての異なるキャッシュドラインの状態を一貫性ある状態に保ち、いずれか1つのプロセッサにより書込まれた最新バージョンで更新することが重要である。通常、キャッシュ動作を支配するべく1組の規則をもつキャッシュのコヒーレンスプロトコルを含むプロセッサのメモリモデルによって規定される通りの正しい値を、キャッシュまたはメインメモリから戻すことを担当するのは、メモリサブシステムである。
【0007】
システム中でキャッシュコヒーレンスを維持するために、キャッシュコヒーレンスプロトコルは、キャッシュコヒーレンス制御情報を収納するディレクトリを使用する。通常メモリサブシステムの一部である、このディレクトリは、メモリデータがシステム内のどこかのキャッシュ内に存在しうるか否かを示す状態情報を伴う各メインメモリロケーションのためのエントリを有する。コヒーレンスプロトコルは、メモリ要求に応えてとるべき全ての遷移およびトランザクションを特定する。キャッシュライン上でとられるいかなる動作も、ディレクトリ内に格納された状態の中に反映される。共通のキャッシュコヒーレンススキームはこれを達成するために次の3つの常駐(permanent)状態を使用する。すなわち、
無効(invalid):ラインはキャッシュ内のどこにも入れられていない。メインメモリは、コピーしか持っていない。
【0008】
共用(shared):ラインは、遠隔ノードにおいて少なくとも1つのキャッシュ内で有効である。
ダーティ(dirty):ラインは、遠隔ノードにおいて1つのキャッシュ内で有効である。その遠隔ノード内でプロセッサによりそのコピーを修正することが可能である。メインメモリには古いデータが含まれている可能性がある。
【0009】
コヒーレンスプロトコルは、ラインが遷移中であることを示すため、他の非常駐(transient)状態を使用することができる。充分な時間があれば、これらの非常駐状態は、上述の常駐状態の1つへと戻る。
プロセッサからのメモリ要求毎に、メモリサブシステムは、キャッシュドラインに対応するメモリラインを格納するセグメントを識別するために全てのキャッシュタグ(cache tag)を見なくてはならない。「スヌーピープロトコル」(snoopy protocol)内の各キャッシュは、全ての要求を「のぞき回り」(snoop)し、次にメモリサブシステムに対し、それがキャッシュドラインの最新バージョンを有するか否かの信号を送る。あるいは、メモリ−サブシステムは、キャッシュドラインの最新バージョンのロケーションを見い出すため各キャッシュのタグの複製を保持することができる。複製タグベースの方法は、時として「ディレクトリベースのキャッシュコヒーレンスプロトコル」と呼ばれる。
【0010】
【発明が解決しようとする課題】
図1は、メインDRAMメモリ122のためのメモリ制御機構(MC)120に対しバス118により接続されたそれぞれのローカルキャッシュ110A,110B,110Cおよび110Dを有する多数のCPU102A,102B,102Cおよび102Dを含む従来のシステム100を示す。この例においては、メインメモリ122は各々のメモリラインについて、ディレクトリ124エントリ専用の空間を持ち、従って、ディレクトリ124内のエントリ数を決定するキャッシュドラインの合計数が通常メモリ122内のメモリラインの合計数よりもはるかに少ないことから、メモリ空間が浪費される。さらに、従来のシステム100用のキャッシュコヒーレンスプロトコルは、キャッシュ110の数およびメモリ122のサイズが増大するにつれて、ディレクトリ124のサイズは異常に大きくなるという点で不完全である。
【0011】
システム100は、ディレクトリエントリのキャッシュである疎な(sparse)ディレクトリを用いることによって改善することができる。しかしながら、既存のキャッシュドラインの状態の如何に関わらず、新しいキャッシュドラインを参照するためのディレクトリエントリを見つけ出すための置換アルゴリズムが、メモリ122とキャッシュ110との間の大量のデータ通信量をひき起こし、かくしてシステムの性能を劣化させる可能性がある。
【0012】
従って、必要とされているのは、上述の欠点を解決できる疎なディレクトリにおいて使用するための置換アルゴリズムである。
【0013】
【課題を解決するための手段】
本発明は、プロセッサからのメモリ要求に応えて、キャッシュドラインの状態を格納するべくディレクトリエントリを割当てるアルゴリズムを提供する。かくして該アルゴリズムは、エントリのためのディレクトリをサーチする。少なくとも1つのフリーエントリが利用可能である場合、アルゴリズムは利用可能なエントリのうちの1つを使用する。そうでなければ、アルゴリズムは「共用」(shared)エントリをサーチし、少なくとも1つの共用エントリが発見された場合、アルゴリズムは、好ましくは利用可能な共用エントリの間でサーチするために「最低使用頻度」(LRU)基準を使用する。そうでなければ、アルゴリズムは「ダーティ」エントリをサーチする。少なくとも1つのダーティエントリが発見された場合には、アルゴリズムは好ましくは、利用可能なダーティエントリの中からサーチするためにLRU基準を使用する。アルゴリズムは、かなり以前に割当てられ最近使用されていないエントリが失効する確率が比較的高いという理由から、LRU基準を使用する。システムの性能を増大させるためには、アルゴリズムは好ましくは、ダーティエントリをサーチする前に、共用エントリをサーチする。
【0014】
かくして、本発明は、セットアソシエティブおよびフルアソシエティブ式のディレクトリベースのキャッシュコヒーレンスプロトコルの性能を高め、それぞれのキャッシュを備える少なくとも1つのプロセッサを、各々が含む、複数のプロセッサノードを有するデータ処理システムにおいて、有用である。
本発明のこれらのおよびその他の利点は、以下の詳細な説明および添付図面から、当業者にとって明らかなものとなるであろう。
【0015】
【発明の実施の形態】
図2は、本発明を利用するシステム200を示すブロック図である。システム200は、メモリ122の一部となる代りにMC120に接続されているディレクトリ224を含んでいるという点を除いて、システム100と同様のものである。通常「疎」(sparse)ディレクトリと呼ばれるディレクトリ224は、メモリ122内のメモリライン数より少ない数のディレクトリエントリを収納し、ディレクトリ124よりも小さくかつ高速であり、標準的に、より高い速度のためのスタティックランダムアクセスメモリ(SRAM)の中にある。
【0016】
ディレクトリ224は、複数のエントリDIR1〜DIRNを含んでいる。セットアソシエティブキャッシュにおいては、1つのDIRエントリは、メモリ122のセグメント(SEG0〜SEGM)の各々の中の1つのデータラインに対応する。従って、SEGがK本のデータラインを有する場合、ディレクトリ224はK個のエントリを有する。1つのSEG内でメモリラインはSEGベースからのオフセットによって識別され、かくして「セット」(set)というのは、同じオフセットを有するものの異なるSEGの中に格納される全てのデータラインを指す。その結果、例えばDIR1は、全てのSEG0〜SEGM内でオフセット1を持つ全てのデータラインを指すセット1に対応する。同様にして、DIR2は、全てのSEG0〜SEGM内でオフセット2を持つ全てのデータラインを指すセット2に対応する。図2の例において、DIR3は、SEG5のライン3(またはオフセット3またはセット3)(および図示していないその他のSEGのライン3)に対応する。各DIRエントリは、「状態情報」(state information)フィールド326,ビット−ベクトル(BV)フィールド328,「タグ」フィールド330および、該当する場合には、LRUフィールド336を含む。矢印3010は、DIR3とそのフィールド326,328,330および336を示す。
【0017】
状態情報フィールド326は、好ましくは「無効」、「共用」、「ダーティ」および「非常駐」を含むキャッシュドラインの状態を示している。「無効」状態は、DIRが利用可能であり、かくして使用できることを表わす。「共用」状態は、キャッシュドラインが少なくとも1つのキャッシュ110内で有効であることを表す。「ダーティ」状態は、メモリ122内のデータラインがキャッシュ110の1つにおいて修正されたことを表し、「非常駐」状態は、ラインがメモリ122とキャッシュ110との間で遷移中であることを表す。
【0018】
BVフィールド328は、どのキャッシュ110がメモリ122からのラインのコピーを有するかを識別するため、キャッシュ110A,110B,110Cおよび110Dにそれぞれ対応する複数のサブフィールド328A,328B,328Cおよび328Dを含む。例えば、フィールド328A内のBVビットが「1」(論理high)である場合、キャッシュ110Aは、メモリ122のデータラインのコピーを有する。換言すると、フィールド328A内の同じBVビットが「0」(論理low)である場合、キャッシュ110Aはメモリ122のデータラインのコピーを持たない。
【0019】
タグフィールド330は、DIRエントリが結びつけられるキャッシュドラインに対応するメモリセグメントを識別する。例えば、タグフィールド330が値「5」を示す場合、そのDIRエントリは、矢印3008により表示されるメモリ122のセグメント5内のメモリラインに対応するキャッシュドラインに対応する。
【0020】
セットアソシエティブキャッシュまたはフルアソシエティブキャッシュにおいては、ディレクトリ224は、「多」ウェイであってよい。すなわち、1つのDIRエントリは多数のキャッシュドラインを参照することができる。そうである場合、DIRエントリは、「最低使用頻度」(LRU)基準に基づいて、どのキャッシュドラインが、プロセッサによる使用頻度が最低であるかを識別するLRUフィールド336を含んでいる。LRUフィールド336内の値は通常符号化され、システム設計中に割り当てられた予め定められた値と結びつけて、このLRUフィールド336を評価することにより、メモリ122のデータラインを参照するためのDIRエントリをアクセスする、正確な順序が明らかになる。
【0021】
DIRエントリが、例えば2本のキャッシュドラインにマッピングできる場合、ディレクトリ224は、2ウェイ(2−way)アソシエティブダイレクトリと呼ばれる。同様にして、DIRエントリが、n本のキャッシュドラインにマッピングできる場合、ディレクトリ224は、nウェイアソシエティブディレクトリと呼ばれる。本発明に関係する一実施形態においては、アソシエティブディレクトリは、通常4〜8ウェイである。
【0022】
メモリ122は、多数の、つまり通常は数百万個にも至るセグメントを含み、これらはSEG0,SEG1,…SEGMと呼ばれる。セットアソシエティブキャッシュ内の各SEGは、一連のメモリラインを含む一方、フルアソシエティブキャッシュ内の各SEGはわずか1本のメモリラインしか含んでいない。セットアソシエティブキャッシュの各SEG内では、メモリラインはロケーションオフセットにより識別されている。上述のとおり、1つのSEG内で同じロケーションオフセットを持つ全てのラインが、1つの「セット」を構成する。かくして、メモリアドレス302は、メモリ122のどのセグメント(SEG0,SEG1,SEG2等)をメモリアドレス302がポイントしているかを識別するためのタグ部分306およびアドレス302がポイントしているSEG内の1本のラインのロケーションオフセットを決定するためのセット番号部分308を含んでいる。従って、例えば図2において、アドレス302−1は3というオフセット(またはセット)を持つSEG5内のメモリラインをポイントする。同様に、アドレス302−2は、8というオフセットをもつSEGM内のメモリラインをポイントする。
【0023】
図3は、DIR1により表されたキャッシュドラインL1が、例えば、2つのキャッシュ110Aおよび110Dにより共用されているシステム例200を示す。その結果、ラインL1についての状態フィールド326は「共用」(shared)とマーキングされ、キャッシュ110Aおよび110Dに対応するBVフィールド328内の2つのビット328Aおよび328Dは、「1」という値をもつ。
【0024】
図4は、DIR2により表されているキャッシュドラインL2がキャッシュ110C内で修正された、同じシステム200を示している。従ってラインL2のための状態情報フィールド326は「ダーティ」(dirty)とマーキングされ、キャッシュ110Cに対応するフィールド328C内のBVビットは「1」という値を有する。
【0025】
好ましいシステム200においては、キャッシュ110内の有効なキャッシュドラインは、ディレクトリ224内に対応する有効エントリを有するはずである。しかしながら、さまざまな理由から、キャッシュ110は、対応するディレクトリ224のエントリを更新せずにそのキャッシュドラインを置換することができ、その結果、対応する有効キャッシュドライン無しの「有効な」(valid)ディレクトリエントリ、または換言すると「失効」ディレクトリエントリとなる。
【0026】
図5は、「失効」ディレクトリエントリを有するシステム200を示す。DIR5により表わされるキャッシュドラインL5は、当初2つのキャッシュ110Aおよび110Cにより共用されている。従って、状態フィールド326は「共用」(shared)を示し、2つのビット328Aおよび328Cは「1」を示す。ただし、キャッシュ110Cは後にそのラインL5をDIR5を更新せずに置換することから、キャッシュ110CのラインL5は「無効」(invalid)と示され、DIR5は「失効」(stale )している。
【0027】
図6は、2ウェイセットアソシエティブディレクトリ224をもつシステム200を示す。かくして、ディレクトリDIR6は、「ウェイ1」および「ウェイ2」と呼ばれる2つのキャッシュドラインのための情報を含んでいる。ウェイ1では、メモリSEG2内のキャッシュドラインL6は4つのキャッシュ110A,110B,110Cおよび110Dによって共用され、従ってラインL6のための状態情報フィールド326−1は「共用」とマーキングされる。キャッシュ110A,110B,110C,および110Dに対応するBVビット328A,328B,328Cおよび328Dは、「1」という値を含み、タグフィールド330−1は「2」という値を示す。ウェイ2においては、SEG0内のメモリラインL7がキャッシュ110Bにより修正されている。かくしてラインL7の状態フィールド326−2は「ダーティ」(dirty)とマークされ、キャッシュ110Bに対応するBVフィールド328B内のビットは、「1」という値を有し、タグフィールド330−2はSEG「0」を示す。
【0028】
プロセッサ102がメモリ122からのデータラインを要求したときに、MC120はディレクトリ224内のエントリを割当てる。ディレクトリ224が満杯である場合には、古いエントリを「追い出さ」なくてはならない。すなわち、新たに要求されたキャッシュドラインについてのディレクトリ情報を保持するため、そのディレクトリが選択されることになる。
【0029】
図7のフローチャートは、新しいメモリ要求のためのDIRエントリを割当てるために本発明が使用する置換アルゴリズムを例示している。ステップ1002では、プロセッサ102は、DIRエントリにより表されたメモリラインLを戻すためメモリ122を要求する。ステップ1003でMC120は、利用可能なエントリ、すなわち「無効」とマーキングされた状態フィールド326を含むDIRエントリのためのディレクトリ224をサーチする。ステップ1004でMC120が、DIRエントリが利用可能であると判断した場合、ステップ1006で、MC120は、新たに要求されたラインLについていずれか1つの利用可能なDIRエントリを割当てる。ステップ1007で、MC120は、新しいラインLを参照するため、利用可能なDIRエントリを用いる。しかしながらステップ1004で、MC120が利用可能なDIRエントリを見い出すことができない場合、そのときはステップ1008でMC120は、少なくとも1つの「共用」DIRエントリ(すなわち「共用」とマーキングされた状態フィールド326をもつエントリ)が存在するか否かを判断する。その場合、ステップ1012でMC120は、LRU基準を用いて最低使用頻度(LRU)共用DIRエントリを発見し、ステップ1014で、発見されたLRU共用DIRエントリを無効化し、ステップ1015で、無効化されたDIRエントリを用いて新しいラインLを参照する。
【0030】
ステップ1008でMC120が共用エントリを発見できない場合、ステップ1010でMC120は、「ダーティ」とマーキングされた状態フィールド326をもつ少なくとも1つのDIRエントリが存在するか否かをテストする。存在する場合、MC120は、ステップ1018でLRU基準を用いてLRUダーティDIRエントリを発見する。次にMC120は、ステップ1020で、発見されたLRUダーティエントリをフラッシュ(flush)する。すなわち、MC120は、発見されたエントリを無効化し、データをメモリ122内の対応するキャッシュドライン内に戻す。ステップ1022において、MC120は、新しいラインLを参照するために、この発見されたエントリを用いる。
【0031】
ステップ1010でMC120がダーティDIRエントリを発見できない場合、MC120はステップ1024で、メモリラインLの要求を後で再試行するようプロセッサ102に依頼する。ステップ1010でダーティDIRエントリが発見されないということは、ディレクトリ224内の全てのDIRエントリにより表されたキャッシュドラインが現在メモリ122およびキャッシュ110間の遷移中にあることを表している。遷移ラインを表すDIRエントリは置換から除外される。ステップ1026で、アルゴリズムは終了する。
【0032】
上述のアルゴリズムでは、メモリ122とキャッシュ110の間のデータ通信量を低減させるため、MC120は、新しいメモリラインを参照するためダーティDIRエントリをサーチする前に、共用DIRエントリをサーチする。共用DIRエントリを使用するためには、対応するメモリラインの無効化が必要とされるだけであるのに対し、ダーティDIRエントリの使用には、メモリ122へのキャッシュドラインの戻し(または書込み)が必要である。さらに、共用DIRエントリは、より「失効する」確率が高い。かくして、本発明は、このアルゴリズムを使用して、付加的なコストを負うことなく、システム性能を増強させる。本発明は同様に、ディレクトリ224により表される全てのデータラインがメモリ122とキャッシュ110間で遷移状態にあるとき、新しいデータラインに対する要求を再試行できるようにするため、コヒーレンスプロトコルをも単純化している。
【0033】
従って、本発明は、キャッシュドラインの状態の如何に関わらず、新しいメモリラインLのために使用済みDIRエントリを選択するのにLRUアルゴリズムのみを使用する従来技術の解決法に比べ有利である。本発明は、最近使用されていない(つまり最低使用頻度の)DIRエントリが最近使用されたエントリに比べ失効する確率が高いことから、共用(ステップ1012)またはダーティ(ステップ1018)DIRエントリを選択するのにLRU基準を使用する。ステップ1014または1020で発見されたエントリを無効化すると、無効化メッセージが、その無効化されたキャッシュドラインと結びつけられた全てのキャッシュ110に送られる。本発明は同様に、その他のキャッシュ全体にわたる包含(inclusion)を維持しようと試みる全てのキャッシュ構造(L3,スヌープフィルタタグ等)においても有用である。キャッシュ包含は、1本のデータラインが多重レベルのキャッシュシステムの1つのキャッシュレベル内に存在する場合、そのラインがより高いキャッシュレベルでも存在するということを意味している。
【0034】
本発明について、好ましい一実施形態を参考にして記述してきた。本開示に照らし合わせて、当業者にはその他の実施形態も明らかになることだろう。例えば、本発明は、ここで記述されたもの以外の構成を利用しても容易に実現可能である。さらに、本発明は記述されたもの以外のシステムと組合わせて有効に使用することができる。従って、好ましい実施形態に対するこれらのおよびその他の変形形態は、添付の請求項によってのみ制限される本発明の特許請求の範囲内のものである。
【図面の簡単な説明】
【図1】バスを介してメインメモリに接続されたローカルキャッシュを各々有する多重CPUを含む先行技術システムを示す図である。
【図2】本発明を利用するより小形でより高速のキャッシュディレクトリを示す図である。
【図3】2つのキャッシュにより共用されるメモリラインの例を示す図である。
【図4】「ダーティ」状態情報フィールドを含む修正されたキャッシュの一例を示す図である。
【図5】2つのプロセッサが共用する1つのメモリラインとそのそれぞれのキャッシュとを示し、両方のキャッシュは後に共に、ディレクトリ情報を更新することなくその内容を無効化していることを示す図である。
【図6】2ウェイセットアソシエティブディレクトリエントリを示す図である。
【図7】本発明による置換アルゴリズムのフローチャートである。
【符号の説明】
102…CPU
110…キャッシュ
120…メモリ制御機構
122…メモリ
124…ディレクトリ
Claims (18)
- 複数のキャッシュドラインを格納することのできるそれぞれのキャッシュを、各々有する複数のプロセッサと、
前記複数のキャッシュドラインの状態を格納するためのディレクトリと、
前記キャッシュおよび前記ディレクトリと通信を行うメモリ制御機構と、を備えるデータ処理システムであって、
該メモリ制御機構は、新しいメモリ要求のためのディレクトリエントリを割当てる置換アルゴリズムを実行するように構成され、該置換アルゴリズムは、前記複数のキャッシュドラインの少なくとも1つの状態が「共用」状態であるならば共用ディレクトリエントリを選択し、該「共用」状態でないならばダーティディレクトリエントリを選択するアルゴリズムであって、ここに該「共用」状態とは、前記キャッシュドラインが少なくとも1つの前記キャッシュ内で有効である状態を表すことを特徴とするデータ処理システム。 - 前記アルゴリズムは、最低使用頻度(LRU)エントリを選択する請求項1に記載のシステム。
- 前記アルゴリズムは、前記共用ディレクトリエントリか前記ダーティディレクトリエントリかのいずれかを選択する前に、現在使用中でないディレクトリエントリがもしあればこれを選択する請求項1に記載のシステム。
- 前記アルゴリズムは、前記プロセッサのうちの少なくとも1つにおいて有効であるキャッシュドラインを表すディレクトリエントリを選択する請求項1に記載のシステム。
- 前記アルゴリズムは、前記プロセッサのうちの1つにおいてダーティなキャッシュドラインを表すディレクトリエントリを選択する請求項1に記載のシステム。
- 前記アルゴリズムがメモリラインを表す全てのディレクトリエントリが遷移状態にあることを決定した場合、次に要求を再試行する請求項1に記載のシステム。
- 前記アルゴリズムは、前記割当てられたキャッシュディレクトリエントリにより表されたキャッシュドラインを無効にする請求項1に記載のシステム。
- 新しいメモリ要求のためのディレクトリエントリを割当てるために、状態情報をもつ複数のディレクトリエントリの中から1つのディレクトリエントリを選択する方法において、
前記ディレクトリエントリを選択するために前記状態情報を使用して、
前記複数のディレクトリエントリの少なくとも1つの状態が「共用」状態であるならば、共用ディレクトリエントリを選択するようにする第1の段階と、
上記第1の段階に代え、もし前記複数のディレクトリエントリの少なくとも1つの状態が「ダーティ」状態であるならば、ダーティディレクトリエントリを選択する第2の段階と、
上記第2の段階に代え、もし前記複数のディレクトリエントリの全てが、遷移状態のキャッシュドラインを表す場合には、前記ディレクトリエントリの再要求を許可する段階と、を含んでなり、ここに前記「共用」状態とは、前記キャッシュドラインが少なくとも1つの前記キャッシュ内で有効である状態を表す方法。 - 「無効」状態にあるエントリが存在する場合は、かかるエントリを選択する段階をさらに含んでなる請求項8に記載の方法。
- 前記共用ディレクトリエントリを選択する段階は、最低使用頻度(LRU)アルゴリズムを使用する請求項8に記載の方法。
- 前記ダーティディレクトリエントリを選択する段階は、最低使用頻度(LRU)アルゴリズムを使用する請求項8に記載の方法。
- 前記選択されたディレクトリエントリにより表されるキャッシュドラインを無効にする段階をさらに含んでなる請求項11に記載の方法。
- 新しいメモリ要求のためのディレクトリエントリを割当てるために 、状態情報をもつ複数のディレクトリエントリの中から1つのディレクトリエントリを選択する方法において、
少なくとも1つの「利用可能な」エントリが利用可能な場合、使用されていないキャッシュディレクトリエントリの中からその「利用可能な」エントリを選択する第1の段階と、
上記第1の段階に代え、少なくとも1つの「共用」エントリが利用可能な場合には、少なくとも1つのプロセッサにより共用されているキャッシュドラインを表すキャッシュディレクトリエントリの中から1つの「共用」エントリを選択する第2の段階と、
上記第2の段階に代え、少なくとも1つの「ダーティ」エントリが利用可能な場合には、少なくとも1つのプロセッサのうちの1つにおいて、ダーティなキャッシュドラインを表す前記キャッシュディレクトリエントリの中からその「ダーティ」エントリを選択する第3の段階、
を含んでなり、ここに前記の「共用」とは、前記キャッシュドラインが少なくとも1つの前記キャッシュ内で有効であることを表すことを特徴とする方法。 - 前記の1つの「共用」エントリを選択する第2の段階は、最低使用頻度(LRU)アルゴリズムを使用する請求項13に記載の方法。
- 前記の1つの「ダーティ」エントリを選択する第3の段階は、最低使用頻度(LRU)アルゴリズムを使用する請求項13に記載の方法。
- 付随するキャッシュを伴う少なくとも1つのプロセッサを各々有する多数のプロセッサノードを含むデータ処理システム内で使用するためのキャッシュコヒーレンスユニットであって、
前記キャッシュとメモリとの間でデータを転送するためのバスインタフェースと、
前記キャッシュ内に格納された複数のキャッシュドラインについての状態情報を格納するためのディレクトリと、
新しいメモリ要求のためのディレクトリエントリを割当てる置換アルゴリズムであって、前記複数のキャッシュドラインの少なくとも1つの状態が「共用」状態であるならば共用ディレクトリエントリを選択し、該「共用」状態でないならばダーティディレクトリエントリを選択するような置換アルゴリズムを用いることによってキャッシュコヒーレンスを維持すると共に前記バスインタフェースに結合されるメモリ制御機構と、
を備え、ここに前記の「共用」状態とは、前記キャッシュドラインが少なくとも1つの前記キャッシュ内で有効である状態を表すことを特徴とするキャッシュコヒーレンスユニット。 - 前記メモリ制御機構が、
前記ディレクトリから状態情報を読取るための手段および
前記ディレクトリ内で前記状態情報を更新するための手段
を備える請求項16に記載のキャッシュコヒーレンスユニット。 - 前記置換アルゴリズムは、前記状態情報を使用するための手段が、最低使用頻度の「共用」エントリまたは「ダーティ」エントリを使用する請求項16に記載のキャッシュコヒーレンスユニット。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8479598P | 1998-05-08 | 1998-05-08 | |
US60/084795 | 1999-03-30 | ||
US09/304,432 US6625694B2 (en) | 1998-05-08 | 1999-05-03 | System and method for allocating a directory entry for use in multiprocessor-node data processing systems |
US09/304432 | 1999-05-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000155747A JP2000155747A (ja) | 2000-06-06 |
JP3866447B2 true JP3866447B2 (ja) | 2007-01-10 |
Family
ID=26771441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP12896699A Expired - Fee Related JP3866447B2 (ja) | 1998-05-08 | 1999-05-10 | マルチプロセッサ・ノードデータ処理システムに使用するディレクトリエントリ割当てシステム及び方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6625694B2 (ja) |
JP (1) | JP3866447B2 (ja) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631448B2 (en) * | 1998-03-12 | 2003-10-07 | Fujitsu Limited | Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol |
US6633960B1 (en) * | 2000-08-31 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Scalable directory based cache coherence protocol |
US6832297B2 (en) * | 2001-08-09 | 2004-12-14 | International Business Machines Corporation | Method and apparatus for managing data in a distributed buffer system |
US7187689B1 (en) * | 2001-10-29 | 2007-03-06 | Juniper Networks, Inc. | Self-cleaning mechanism for error recovery |
US6842827B2 (en) | 2002-01-02 | 2005-01-11 | Intel Corporation | Cache coherency arrangement to enhance inbound bandwidth |
US6965972B2 (en) * | 2002-09-25 | 2005-11-15 | International Business Machines Corporation | Real time emulation of coherence directories using global sparse directories |
US7225299B1 (en) | 2003-07-16 | 2007-05-29 | Transmeta Corporation | Supporting speculative modification in a data cache |
US7370154B2 (en) * | 2004-02-24 | 2008-05-06 | Silicon Graphics, Inc. | Method and apparatus for maintaining coherence information in multi-cache systems |
US7685372B1 (en) | 2005-01-13 | 2010-03-23 | Marvell International Ltd. | Transparent level 2 cache controller |
US8347034B1 (en) * | 2005-01-13 | 2013-01-01 | Marvell International Ltd. | Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access |
US7376798B1 (en) | 2005-04-07 | 2008-05-20 | Transmeta Corporation | Memory management methods and systems that support cache consistency |
US20070079074A1 (en) * | 2005-09-30 | 2007-04-05 | Collier Josh D | Tracking cache coherency in an extended multiple processor environment |
US7996366B1 (en) * | 2005-10-13 | 2011-08-09 | Cadence Design Systems, Inc. | Method and system for identifying stale directories |
US20070101064A1 (en) * | 2005-11-02 | 2007-05-03 | Arm Limited | Cache controller and method |
US7475193B2 (en) * | 2006-01-18 | 2009-01-06 | International Business Machines Corporation | Separate data and coherency cache directories in a shared cache in a multiprocessor system |
US8127082B2 (en) * | 2006-02-01 | 2012-02-28 | International Business Machines Corporation | Method and apparatus for allowing uninterrupted address translations while performing address translation cache invalidates and other cache operations |
US20100332762A1 (en) * | 2009-06-30 | 2010-12-30 | Moga Adrian C | Directory cache allocation based on snoop response information |
US8392665B2 (en) | 2010-09-25 | 2013-03-05 | Intel Corporation | Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines |
US10846235B2 (en) | 2018-04-28 | 2020-11-24 | International Business Machines Corporation | Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator |
US11928472B2 (en) | 2020-09-26 | 2024-03-12 | Intel Corporation | Branch prefetch mechanisms for mitigating frontend branch resteers |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5265232A (en) * | 1991-04-03 | 1993-11-23 | International Business Machines Corporation | Coherence control by data invalidation in selected processor caches without broadcasting to processor caches not having the data |
DE69323790T2 (de) * | 1992-04-29 | 1999-10-07 | Sun Microsystems, Inc. | Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem |
JPH10154100A (ja) * | 1996-11-25 | 1998-06-09 | Canon Inc | 情報処理システム及び装置及びその制御方法 |
US5848434A (en) * | 1996-12-09 | 1998-12-08 | Intel Corporation | Method and apparatus for caching state information within a directory-based coherency memory system |
US5897655A (en) * | 1996-12-10 | 1999-04-27 | International Business Machines Corporation | System and method for cache replacement within a cache set based on valid, modified or least recently used status in order of preference |
US5933849A (en) * | 1997-04-10 | 1999-08-03 | At&T Corp | Scalable distributed caching system and method |
US6185658B1 (en) * | 1997-12-17 | 2001-02-06 | International Business Machines Corporation | Cache with enhanced victim selection using the coherency states of cache lines |
-
1999
- 1999-05-03 US US09/304,432 patent/US6625694B2/en not_active Expired - Lifetime
- 1999-05-10 JP JP12896699A patent/JP3866447B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000155747A (ja) | 2000-06-06 |
US20020078304A1 (en) | 2002-06-20 |
US6625694B2 (en) | 2003-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6826651B2 (en) | State-based allocation and replacement for improved hit ratio in directory caches | |
JP3866447B2 (ja) | マルチプロセッサ・ノードデータ処理システムに使用するディレクトリエントリ割当てシステム及び方法 | |
JP4447580B2 (ja) | 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ | |
US7266647B2 (en) | List based method and apparatus for selective and rapid cache flushes | |
US7698508B2 (en) | System and method for reducing unnecessary cache operations | |
US5893150A (en) | Efficient allocation of cache memory space in a computer system | |
JP3281893B2 (ja) | キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム | |
US6629205B2 (en) | System and method for increasing the snoop bandwidth to cache tags in a cache memory subsystem | |
US6901483B2 (en) | Prioritizing and locking removed and subsequently reloaded cache lines | |
US6339813B1 (en) | Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory | |
KR20170098187A (ko) | 저장 서브시스템을 위한 연관적 및 원자적 라이트-백 캐싱 시스템 및 방법 | |
US20160210232A1 (en) | Cache coherence protocol | |
US7117312B1 (en) | Mechanism and method employing a plurality of hash functions for cache snoop filtering | |
US7925857B2 (en) | Method for increasing cache directory associativity classes via efficient tag bit reclaimation | |
US7325102B1 (en) | Mechanism and method for cache snoop filtering | |
EP3486787B1 (en) | Systems and methods for tag-less buffer implementation | |
JP4068185B2 (ja) | コンピュータ・システムでのメモリ・ストレージ・モードの効果的な選択 | |
JP3295436B2 (ja) | マイクロプロセッサキャッシュの一貫性 | |
CN1153144C (zh) | 含有hr状态的高速缓存相关协议 | |
EP0817079A2 (en) | Skip-level write-through in a multi-level memory of a computer system | |
US6240491B1 (en) | Process and system for switching between an update and invalidate mode for each cache block | |
US20080104333A1 (en) | Tracking of higher-level cache contents in a lower-level cache | |
US12093177B2 (en) | Multi-level partitioned snoop filter |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040324 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051222 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060110 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060313 |
|
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: 20060905 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061005 |
|
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: 20091013 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101013 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101013 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111013 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111013 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121013 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121013 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131013 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |