JP2000155747A - マルチプロセッサ・ノ―ドデ―タ処理システムに使用するディレクトリエントリ割当てシステム及び方法 - Google Patents
マルチプロセッサ・ノ―ドデ―タ処理システムに使用するディレクトリエントリ割当てシステム及び方法Info
- Publication number
- JP2000155747A JP2000155747A JP11128966A JP12896699A JP2000155747A JP 2000155747 A JP2000155747 A JP 2000155747A JP 11128966 A JP11128966 A JP 11128966A JP 12896699 A JP12896699 A JP 12896699A JP 2000155747 A JP2000155747 A JP 2000155747A
- Authority
- JP
- Japan
- Prior art keywords
- entry
- directory
- cache
- line
- cached
- 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.)
- Granted
Links
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)
Abstract
クトリエントリを選択するアルゴリズムであり、メモリ
空間の浪費とメモリサイズの増大を防止する。 【解決手段】 プロセッサノード内のプロセッサからの
メモリ要求に応えて、アルゴリズムは、要求されたメモ
リラインについての情報を格納するべく利用可能なエン
トリを発見し、エントリが利用可能である場合、利用可
能なエントリのうちの1つを使用する。そうでなけれ
ば、「共用」エントリをサーチする。共用エントリが利
用可能である場合、共用エントリの1つを使用する。そ
うでなければ、「ダーティ」エントリをサーチする。ダ
ーティエントリが利用可能である場合、ダーティエント
リの1つを使用する。ディレクトリエントリを選択する
にあたり、LRUアルゴリズムを使用する。
Description
ロセッサデータ処理システムにおけるキャッシュコヒー
レンス(coherence)、特に、キャッシュディ
レクトリエントリを選択するためのアルゴリズムでキャ
ッシュの動作を増強することに関する。なお本願は、1
998年5月8日付けの米国仮出願による利益を請求す
るものである。
いる。同時係属米国特許出願番号09/003,72
1、「分散共有メモリマルチプロセッサシステムのため
の統合されたメッセージパッシングおよびメモリ保護を
備えるキャッシュコヒーレンスユニット」の名称で、1
998年1月7日に出願、同時係属米国特許出願番号0
9/003,771、「統合されたメッセージパッシン
グサポートを備える分散共有メモリマルチプロセッサの
ためのメモリ保護メカニズム」の名称で、1998年1
月7日に出願、同時係属米国特許出願番号09/04
1,568、「パイプライン化されたスヌーピープロト
コルを有する相互接続用マルチプロセッサノードのため
のキャッシュコヒーレンスユニット」の名称で、199
8年3月12日に出願、同時係属米国特許出願番号09
/281,714、「分散共有メモリマルチプロセッサ
のための分割疎ディレクトリ」の名称で、1998年3
月30日に出願、同時係属米国特許出願番号09/28
5,316、「ネットワーク通信におけるデッドロック
を回避するためのコンピュータアーキテクチャ」の名称
で、1999年4月2日に出願、同時係属米国特許出願
番号09/287,650、「マルチプロセッサコンピ
ュータシステムにおけるオーバラン保護用クレジットベ
ースドメッセージプロトコル」の名称で、1999年4
月7日に出願。参考として、上記の出願の全てを本願発
明の全体に亘って取り入れている。
サブシステムとプロセッササブシステムに分割すること
ができる。メモリサブシステムは、メインダイナミック
ランダムアクセスメモリ(DRAM)を含み、任意の数
の接続されたプロセッサからの要求に応えてメモリから
のデータを提供する。通常、メモリサブシステム内のデ
ータにアクセスするのに費す時間はプロセッサの速度に
比べてかなり長いものであり、従って、プロセッサは往
々にして自らの性能を改善するべくキャッシュを備えて
構築されている。プロセッササブシステムは、プロセッ
サと単数または複数のキャッシュを含んでいる。キャッ
シュというのは、プロセッサとメインメモリの間に接続
され、メインメモリから最近使用されたデータを格納す
る小形メモリである。キャッシュは、メインメモリサブ
システムに比べてはるかにアクセス速度が速く、通常は
はるかに小形である。キャッシュ内へおよびキャッシュ
から外へ転送され得る最小のデータ単位は、キャッシュ
ド「ライン」(cached“line”)と呼ばれ
る。1キャッシュドラインに対応するメモリ内のデータ
は、メモリラインと呼ばれる。1データラインというの
は、1キャッシュドラインまたは1メモリラインのいず
れかを指す。
多くが複数のキャッシュドラインに対応する1又は一連
のメモリラインを含む物理的に連続したセグメントへ
と、メインメモリを分割する。キャッシュドラインにア
クセスするには、そのラインに対応するセグメントを識
別するためのセグメントタグおよびセグメント内のライ
ンを識別するためのラインインデックスが必要である。
当業者であれば、1セグメントが1つのラインしかもた
ない場合、ラインインデックスが不要であることがわか
るだろう。プロセッサが、ローカルキャッシュ内にすで
に含まれているデータラインを要求する場合、そのデー
タラインはプロセッサに受渡し(deliver)され
る。そうでない場合、プロセッサはメインメモリからデ
ータラインを獲得する。
ティブキャッシュは「多」ウェイ(“multipl
e”ways)であり、これはすなわちディレクトリエ
ントリが、同じメモリセグメントインデックスを有する
が異なるセグメントに帰属する多数のキャッシュドライ
ンを参照することを意味する。これは、直接マッピング
されたキャッシュと比較して、多方向ディレクトリが同
じ方向にマッピングするアクティブキャッシュライン間
のコンテンションを低減させることから、キャッシュヒ
ット率を改善することができる。キャッシュラインの直
接マッピングでは、新たに要求されたキャッシュドライ
ンを参照するのにディレクトリが必要とされるとき、置
換(replace)すべきディレクトリを選択すると
いう問題が回避されるが、フルアソシエイティブおよび
セットアソシエティブキャッシュマッピングスキーム
は、置換すべき特定のキャッシュドラインを参照するデ
ィレクトリを選択するのに、置換プロトコルを必要とす
る。最も一般的なプロトコルは、未使用時間が最も長い
キャッシュラインを置換する最低使用頻度(LRU)プ
ロトコルである。
シュは、4〜8ウェイであり、一方フルアソシエティブ
キャッシュは32〜64ウェイである。共用メモリマル
チプロセッサシステムにおいては、各プロセッサは通
常、それ自身のキャッシュを有し、従ってシステムは多
数のキャッシュをもつ。各キャッシュは、与えられたデ
ータラインのコピーを保持できることから、全ての異な
るキャッシュドラインの状態を一貫性ある状態に保ち、
いずれか1つのプロセッサにより書込まれた最新バージ
ョンで更新することが重要である。通常、キャッシュ動
作を支配するべく1組の規則をもつキャッシュのコヒー
レンスプロトコルを含むプロセッサのメモリモデルによ
って規定される通りの正しい値を、キャッシュまたはメ
インメモリから戻すことを担当するのは、メモリサブシ
ステムである。
持するために、キャッシュコヒーレンスプロトコルは、
キャッシュコヒーレンス制御情報を収納するディレクト
リを使用する。通常メモリサブシステムの一部である、
このディレクトリは、メモリデータがシステム内のどこ
かのキャッシュ内に存在しうるか否かを示す状態情報を
伴う各メインメモリロケーションのためのエントリを有
する。コヒーレンスプロトコルは、メモリ要求に応えて
とるべき全ての遷移およびトランザクションを特定す
る。キャッシュライン上でとられるいかなる動作も、デ
ィレクトリ内に格納された状態の中に反映される。共通
のキャッシュコヒーレンススキームはこれを達成するた
めに次の3つの常駐(permanent)状態を使用
する。すなわち、無効(invalid):ラインはキ
ャッシュ内のどこにも入れられていない。メインメモリ
は、コピーしか持っていない。
ードにおいて少なくとも1つのキャッシュ内で有効であ
る。 ダーティ(dirty):ラインは、遠隔ノードにおい
て1つのキャッシュ内で有効である。その遠隔ノード内
でプロセッサによりそのコピーを修正することが可能で
ある。メインメモリには古いデータが含まれている可能
性がある。
中であることを示すため、他の非常駐(transie
nt)状態を使用することができる。充分な時間があれ
ば、これらの非常駐状態は、上述の常駐状態の1つへと
戻る。プロセッサからのメモリ要求毎に、メモリサブシ
ステムは、キャッシュドラインに対応するメモリライン
を格納するセグメントを識別するために全てのキャッシ
ュタグ(cache tag)を見なくてはならない。
「スヌーピープロトコル」(snoopy proto
col)内の各キャッシュは、全ての要求を「のぞき回
り」(snoop)し、次にメモリサブシステムに対
し、それがキャッシュドラインの最新バージョンを有す
るか否かの信号を送る。あるいは、メモリ−サブシステ
ムは、キャッシュドラインの最新バージョンのロケーシ
ョンを見い出すため各キャッシュのタグの複製を保持す
ることができる。複製タグベースの方法は、時として
「ディレクトリベースのキャッシュコヒーレンスプロト
コル」と呼ばれる。
Mメモリ122のためのメモリ制御機構(MC)120
に対しバス118により接続されたそれぞれのローカル
キャッシュ110A,110B,110Cおよび110
Dを有する多数のCPU102A,102B,102C
および102Dを含む従来のシステム100を示す。こ
の例においては、メインメモリ122は各々のメモリラ
インについて、ディレクトリ124エントリ専用の空間
を持ち、従って、ディレクトリ124内のエントリ数を
決定するキャッシュドラインの合計数が通常メモリ12
2内のメモリラインの合計数よりもはるかに少ないこと
から、メモリ空間が浪費される。さらに、従来のシステ
ム100用のキャッシュコヒーレンスプロトコルは、キ
ャッシュ110の数およびメモリ122のサイズが増大
するにつれて、ディレクトリ124のサイズは異常に大
きくなるという点で不完全である。
のキャッシュである疎な(sparse)ディレクトリ
を用いることによって改善することができる。しかしな
がら、既存のキャッシュドラインの状態の如何に関わら
ず、新しいキャッシュドラインを参照するためのディレ
クトリエントリを見つけ出すための置換アルゴリズム
が、メモリ122とキャッシュ110との間の大量のデ
ータ通信量をひき起こし、かくしてシステムの性能を劣
化させる可能性がある。
点を解決できる疎なディレクトリにおいて使用するため
の置換アルゴリズムである。
らのメモリ要求に応えて、キャッシュドラインの状態を
格納するべくディレクトリエントリを割当てるアルゴリ
ズムを提供する。かくして該アルゴリズムは、エントリ
のためのディレクトリをサーチする。少なくとも1つの
フリーエントリが利用可能である場合、アルゴリズムは
利用可能なエントリのうちの1つを使用する。そうでな
ければ、アルゴリズムは「共用」(shared)エン
トリをサーチし、少なくとも1つの共用エントリが発見
された場合、アルゴリズムは、好ましくは利用可能な共
用エントリの間でサーチするために「最低使用頻度」
(LRU)基準を使用する。そうでなければ、アルゴリ
ズムは「ダーティ」エントリをサーチする。少なくとも
1つのダーティエントリが発見された場合には、アルゴ
リズムは好ましくは、利用可能なダーティエントリの中
からサーチするためにLRU基準を使用する。アルゴリ
ズムは、かなり以前に割当てられ最近使用されていない
エントリが失効する確率が比較的高いという理由から、
LRU基準を使用する。システムの性能を増大させるた
めには、アルゴリズムは好ましくは、ダーティエントリ
をサーチする前に、共用エントリをサーチする。
ブおよびフルアソシエティブ式のディレクトリベースの
キャッシュコヒーレンスプロトコルの性能を高め、それ
ぞれのキャッシュを備える少なくとも1つのプロセッサ
を、各々が含む、複数のプロセッサノードを有するデー
タ処理システムにおいて、有用である。本発明のこれら
のおよびその他の利点は、以下の詳細な説明および添付
図面から、当業者にとって明らかなものとなるであろ
う。
ム200を示すブロック図である。システム200は、
メモリ122の一部となる代りにMC120に接続され
ているディレクトリ224を含んでいるという点を除い
て、システム100と同様のものである。通常「疎」
(sparse)ディレクトリと呼ばれるディレクトリ
224は、メモリ122内のメモリライン数より少ない
数のディレクトリエントリを収納し、ディレクトリ12
4よりも小さくかつ高速であり、標準的に、より高い速
度のためのスタティックランダムアクセスメモリ(SP
AM)の中にある。
IR1〜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エントリは、「状態情報」(statei
nformation)フィールド326,ビット−ベ
クトル(BV)フィールド328,「タグ」フィールド
330および、該当する場合には、LRUフィールド3
36を含む。矢印3010は、DIR3とそのフィール
ド326,328,330および336を示す。
「無効」、「共用」、「ダーティ」および「非常駐」を
含むキャッシュドラインの状態を示している。「無効」
状態は、DIRが利用可能であり、かくして使用できる
ことを表わす。「共用」状態は、キャッシュドラインが
少なくとも1つのキャッシュ110内で有効であること
を表す。「ダーティ」状態は、メモリ122内のデータ
ラインがキャッシュ110の1つにおいて修正されたこ
とを表し、「非常駐」状態は、ラインがメモリ122と
キャッシュ110との間で遷移中であることを表す。
110がメモリ122からのラインのコピーを有するか
を識別するため、キャッシュ110A,110B,11
0Cおよび110Dにそれぞれ対応する複数のサブフィ
ールド328A,328B,328Cおよび328Dを
含む。例えば、フィールド328A内のBVビットが
「1」(論理high)である場合、キャッシュ110
Aは、メモリ122のデータラインのコピーを有する。
換言すると、フィールド328A内の同じBVビットが
「0」(論理low)である場合、キャッシュ110A
はメモリ122のデータラインのコピーを持たない。
が結びつけられるキャッシュドラインに対応するメモリ
セグメントを識別する。例えば、タグフィールド330
が値「5」を示す場合、そのDIRエントリは、矢印3
008により表示されるメモリ122のセグメント5内
のメモリラインに対応するキャッシュドラインに対応す
る。
ルアソシエティブキャッシュにおいては、ディレクトリ
224は、「多」ウェイであってよい。すなわち、1つ
のDIRエントリは多数のキャッシュドラインを参照す
ることができる。そうである場合、DIRエントリは、
「最低使用頻度」(LRU)基準に基づいて、どのキャ
ッシュドラインが、プロセッサによる使用頻度が最低で
あるかを識別するLRUフィールド336を含んでい
る。LRUフィールド336内の値は通常符号化され、
システム設計中に割り当てられた予め定められた値と結
びつけて、このLRUフィールド336を評価すること
により、メモリ122のデータラインを参照するための
DIRエントリをアクセスする、正確な順序が明らかに
なる。
ュドラインにマッピングできる場合、ディレクトリ22
4は、2ウェイ(2−way)アソシエティブダイレク
トリと呼ばれる。同様にして、DIRエントリが、n本
のキャッシュドラインにマッピングできる場合、ディレ
クトリ224は、nウェイアソシエティブディレクトリ
と呼ばれる。本発明に関係する一実施形態においては、
アソシエティブディレクトリは、通常4〜8ウェイであ
る。
百万個にも至るセグメントを含み、これらは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というオフセット(またはセット)を持つSEG
5内のメモリラインをポイントする。同様に、アドレス
302−2は、8というオフセットをもつSEGM内の
メモリラインをポイントする。
ュドラインL1が、例えば、2つのキャッシュ110A
および110Dにより共用されているシステム例200
を示す。その結果、ラインL1についての状態フィール
ド326は「共用」(shared)とマーキングさ
れ、キャッシュ110Aおよび110Dに対応するBV
フィールド328内の2つのビット328Aおよび32
8Dは、「1」という値をもつ。
ッシュドラインL2がキャッシュ110C内で修正され
た、同じシステム200を示している。従ってラインL
2のための状態情報フィールド326は「ダーティ」
(dirty)とマーキングされ、キャッシュ110C
に対応するフィールド328C内のBVビットは「1」
という値を有する。
ッシュ110内の有効なキャッシュドラインは、ディレ
クトリ224内に対応する有効エントリを有するはずで
ある。しかしながら、さまざまな理由から、キャッシュ
110は、対応するディレクトリ224のエントリを更
新せずにそのキャッシュドラインを置換することがで
き、その結果、対応する有効キャッシュドライン無しの
「有効な」(valid)ディレクトリエントリ、また
は換言すると「失効」ディレクトリエントリとなる。
有するシステム200を示す。DIR5により表わされ
るキャッシュドラインL5は、当初2つのキャッシュ1
10Aおよび110Cにより共用されている。従って、
状態フィールド326は「共用」(shared)を示
し、2つのビット328Aおよび328Cは「1」を示
す。ただし、キャッシュ110Cは後にそのラインL5
をDIR5を更新せずに置換することから、キャッシュ
110CのラインL5は「無効」(invalid)と
示され、DIR5は「失効」(stale )している。
ィレクトリ224をもつシステム200を示す。かくし
て、ディレクトリDIR6は、「ウェイ1」および「ウ
ェイ2」と呼ばれる2つのキャッシュドラインのための
情報を含んでいる。ウェイ1では、メモリSEG2内の
キャッシュドラインL6は4つのキャッシュ110A,
110B,110Cおよび110Dによって共用され、
従ってラインL6のための状態情報フィールド326−
1は「共用」とマーキングされる。キャッシュ110
A,110B,110C,および110Dに対応するB
Vビット328A,328B,328Cおよび328D
は、「1」という値を含み、タグフィールド330−1
は「2」という値を示す。ウェイ2においては、SEG
0内のメモリラインL7がキャッシュ110Bにより修
正されている。かくしてラインL7の状態フィールド3
26−2は「ダーティ」(dirty)とマークされ、
キャッシュ110Bに対応するBVフィールド328B
内のビットは、「1」という値を有し、タグフィールド
330−2はSEG「0」を示す。
ータラインを要求したときに、MC120はディレクト
リ224内のエントリを割当てる。ディレクトリ224
が満杯である場合には、古いエントリを「追い出さ」な
くてはならない。すなわち、新たに要求されたキャッシ
ュドラインについてのディレクトリ情報を保持するた
め、そのディレクトリが選択されることになる。
求のためのDIRエントリを割当てるために本発明が使
用する置換アルゴリズムを例示している。ステップ10
02では、プロセッサ102は、DIRエントリにより
表されたメモリラインLを戻すためメモリ122を要求
する。ステップ1003でMC120は、利用可能なエ
ントリ、すなわち「無効」とマーキングされた状態フィ
ールド326を含むDIRエントリのためのディレクト
リ224をサーチする。ステップ1004でMC120
が、DIRエントリが利用可能であると判断した場合、
ステップ1006で、MC120は、新たに要求された
ラインLについていずれか1つの利用可能なDIRエン
トリを割当てる。ステップ1007で、MC120は、
新しいラインLを参照するため、利用可能なDIRエン
トリを用いる。しかしながらステップ1004で、MC
120が利用可能なDIRエントリを見い出すことがで
きない場合、そのときはステップ1008でMC120
は、少なくとも1つの「共用」DIRエントリ(すなわ
ち「共用」とマーキングされた状態フィールド326を
もつエントリ)が存在するか否かを判断する。その場
合、ステップ1012でMC120は、LRU基準を用
いて最低使用頻度(LRU)共用DIRエントリを発見
し、ステップ1014で、発見されたLRU共用DIR
エントリを無効化し、ステップ1015で、無効化され
たDIRエントリを用いて新しいラインLを参照する。
トリを発見できない場合、ステップ1010でMC12
0は、「ダーティ」とマーキングされた状態フィールド
326をもつ少なくとも1つのDIRエントリが存在す
るか否かをテストする。存在する場合、MC120は、
ステップ1018でLRU基準を用いてLRUダーティ
DIRエントリを発見する。次にMC120は、ステッ
プ1020で、発見されたLRUダーティエントリをフ
ラッシュ(flush)する。すなわち、MC120
は、発見されたエントリを無効化し、データをメモリ1
22内の対応するキャッシュドライン内に戻す。ステッ
プ1022において、MC120は、新しいラインLを
参照するために、この発見されたエントリを用いる。
DIRエントリを発見できない場合、MC120はステ
ップ1024で、メモリラインLの要求を後で再試行す
るようプロセッサ102に依頼する。ステップ1010
でダーティDIRエントリが発見されないということ
は、ディレクトリ224内の全てのDIRエントリによ
り表されたキャッシュドラインが現在メモリ122およ
びキャッシュ110間の遷移中にあることを表してい
る。遷移ラインを表すDIRエントリは置換から除外さ
れる。ステップ1026で、アルゴリズムは終了する。
キャッシュ110の間のデータ通信量を低減させるた
め、MC120は、新しいメモリラインを参照するため
ダーティDIRエントリをサーチする前に、共用DIR
エントリをサーチする。共用DIRエントリを使用する
ためには、対応するメモリラインの無効化が必要とされ
るだけであるのに対し、ダーティDIRエントリの使用
には、メモリ122へのキャッシュドラインの戻し(ま
たは書込み)が必要である。さらに、共用DIRエント
リは、より「失効する」確率が高い。かくして、本発明
は、このアルゴリズムを使用して、付加的なコストを負
うことなく、システム性能を増強させる。本発明は同様
に、ディレクトリ224により表される全てのデータラ
インがメモリ122とキャッシュ110間で遷移状態に
あるとき、新しいデータラインに対する要求を再試行で
きるようにするため、コヒーレンスプロトコルをも単純
化している。
状態の如何に関わらず、新しいメモリラインLのために
使用済みDIRエントリを選択するのにLRUアルゴリ
ズムのみを使用する従来技術の解決法に比べ有利であ
る。本発明は、最近使用されていない(つまり最低使用
頻度の)DIRエントリが最近使用されたエントリに比
べ失効する確率が高いことから、共用(ステップ101
2)またはダーティ(ステップ1018)DIRエント
リを選択するのにLRU基準を使用する。ステップ10
14または1020で発見されたエントリを無効化する
と、無効化メッセージが、その無効化されたキャッシュ
ドラインと結びつけられた全てのキャッシュ110に送
られる。本発明は同様に、その他のキャッシュ全体にわ
たる包含(inclusion)を維持しようと試みる
全てのキャッシュ構造(L3,スヌープフィルタタグ
等)においても有用である。キャッシュ包含は、1本の
データラインが多重レベルのキャッシュシステムの1つ
のキャッシュレベル内に存在する場合、そのラインがよ
り高いキャッシュレベルでも存在するということを意味
している。
考にして記述してきた。本開示に照らし合わせて、当業
者にはその他の実施形態も明らかになることだろう。例
えば、本発明は、ここで記述されたもの以外の構成を利
用しても容易に実現可能である。さらに、本発明は記述
されたもの以外のシステムと組合わせて有効に使用する
ことができる。従って、好ましい実施形態に対するこれ
らのおよびその他の変形形態は、添付の請求項によって
のみ制限される本発明の特許請求の範囲内のものであ
る。
ルキャッシュを各々有する多重CPUを含む先行技術シ
ステムを示す図である。
シュディレクトリを示す図である。
ンの例を示す図である。
れたキャッシュの一例を示す図である。
ンとそのそれぞれのキャッシュとを示し、両方のキャッ
シュは後に共に、ディレクトリ情報を更新することなく
その内容を無効化していることを示す図である。
ントリを示す図である。
トである。
Claims (22)
- 【請求項1】 複数のキャッシュドラインを格納するこ
とのできるそれぞれのキャッシュを、各々有する複数の
プロセッサおよびキャッシュドラインの状態を追跡する
ためのディレクトリを備えるデータ処理システムであっ
て、1本のキャッシュラインに対する新たな要求があっ
た時点で、アルゴリズムは、要求されたキャッシュライ
ンのためのキャッシュディレクトリエントリを割当てる
ために前記キャッシュドラインの状態を使用することを
特徴とするデータ処理システム。 - 【請求項2】 アルゴリズムは、「ダーティ」状態にあ
るエントリを使用する前に「共用」状態にあるエントリ
を使用する請求項1に記載のシステム。 - 【請求項3】 アルゴリズムは、LRUエントリを選択
する請求項2に記載のシステム。 - 【請求項4】 アルゴリズムは、現在使用中でないディ
レクトリエントリを使用する請求項1に記載のシステ
ム。 - 【請求項5】 アルゴリズムは、前記プロセッサのうち
の少なくとも1つにおいて有効であるキャッシュドライ
ンを表すディレクトリエントリを選択する請求項1に記
載のシステム。 - 【請求項6】 アルゴリズムは、前記プロセッサのうち
の1つにおいてダーティなキャッシュドラインを表すデ
ィレクトリエントリを選択する請求項1に記載のシステ
ム。 - 【請求項7】 アルゴリズムがメモリラインを表す全て
のディレクトリエントリが遷移状態にあることを決定し
た場合、次に要求を再試行する請求項1に記載のシステ
ム。 - 【請求項8】 前記アルゴリズムは、前記割当てられた
キャッシュディレクトリエントリにより表されたキャッ
シュドラインを無効にする請求項1に記載のシステム。 - 【請求項9】 状態情報をもつ複数のディレクトリエン
トリの中から1つのディレクトリエントリを選択するた
めの方法において、 前記ディレクトリエントリを選択するために前記状態情
報を使用する段階および前記複数のディレクトリエント
リが遷移状態のキャッシュドラインを表す場合、前記デ
ィレクトリエントリの再要求を許可する段階を含んでな
る方法。 - 【請求項10】 「無効」状態にあるエントリが存在す
る場合は、かかるエントリを選択する段階をさらに含ん
でなる請求項9に記載の方法。 - 【請求項11】 「共用」状態にあるエントリが存在す
る場合は、かかるエントリを選択する段階をさらに含ん
でなる請求項10に記載の方法。 - 【請求項12】 共用エントリを選択する段階は、LR
Uアルゴリズムを使用する請求項11に記載の方法。 - 【請求項13】 ダーティ状態にあるエントリが存在す
る場合に、かかるエントリを選択する段階をさらに含ん
でなる請求項12に記載の方法。 - 【請求項14】 ダーティエントリを選択する段階は、
LRUアルゴリズムを使用する請求項13に記載の方
法。 - 【請求項15】 前記選択されたディレクトリエントリ
により表されるキャッシュドラインを無効にする段階を
さらに含んでなる請求項14に記載の方法。 - 【請求項16】 1つのキャッシュを伴う少なくとも1
つのプロセッサを各々が有する複数のプロセッサノード
を含むデータ処理システム内で使用するためのキャッシ
ュコヒーレンスを維持する方法であって、順序づけされ
た形で、 1つの「利用可能な」エントリが利用可能な場合、使用
されていないキャッシュディレクトリエントリの中から
その「利用可能な」エントリを選択する段階、 1つの「共用」エントリが利用可能な場合、少なくとも
1つのプロセッサにより共用されているキャッシュドラ
インを表すキャッシュディレクトリエントリの中からそ
の「共用」エントリを選択する段階および1つの「ダー
ティ」エントリが利用可能な場合、少なくとも1つのプ
ロセッサのうちの1つにおいてダーティなキャッシュド
ラインを表すキャッシュディレクトリエントリの中から
その「ダーティ」エントリを選択する段階、を含んでな
ることを特徴とする方法。 - 【請求項17】 「共用」エントリを選択する段階は、
LRUアルゴリズムを使用する請求項16に記載の方
法。 - 【請求項18】 「ダーティ」エントリを選択する段階
は、前記最低使用頻度アルゴリズムを使用する請求項1
6に記載の方法。 - 【請求項19】 付随するキャッシュを伴う少なくとも
1つのプロセッサを各々有する多数のプロセッサノード
を含むデータ処理システム内で使用するためのキャッシ
ュコヒーレンスユニットであって、 前記キャッシュとメモリとの間でデータを転送するため
のバスインタフェースと、 前記キャッシュ内に格納された複数のキャッシュドライ
ンについての状態情報を格納するためのディレクトリ
と、 キャッシュコヒーレンスを維持するため前記バスインタ
フェースに結合されたコヒーレンス制御機構と、を備え
ることを特徴とするキャッシュコヒーレンスユニット。 - 【請求項20】 前記コヒーレンス制御機構が、 前記ディレクトリから状態情報を読取るための手段およ
び前記ディレクトリ内で前記状態情報を更新するための
手段を備える請求項19に記載のキャッシュコヒーレン
スユニット。 - 【請求項21】 ディレクトリエントリを発見するのに
前記状態情報を使用するための手段をさらに備える請求
項19に記載のキャッシュコヒーレンスユニット。 - 【請求項22】 前記状態情報を使用するための手段
が、LRUアルゴリズムを使用する請求項21に記載の
キャッシュコヒーレンスユニット。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8479598P | 1998-05-08 | 1998-05-08 | |
US60/084795 | 1999-04-02 | ||
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 true JP2000155747A (ja) | 2000-06-06 |
JP3866447B2 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007193805A (ja) * | 2006-01-18 | 2007-08-02 | Internatl Business Mach Corp <Ibm> | デュアル・システム・ディレクトリ構造体を有するマルチプロセッサ・システムおよび方法 |
Families Citing this family (19)
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 |
US20070079075A1 (en) * | 2005-09-30 | 2007-04-05 | Collier Josh D | Providing 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 |
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 |
EP0568231B1 (en) * | 1992-04-29 | 1999-03-10 | Sun Microsystems, Inc. | Methods and apparatus for providing multiple outstanding operations in a cache consistent multiple processor computer system |
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
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007193805A (ja) * | 2006-01-18 | 2007-08-02 | Internatl Business Mach Corp <Ibm> | デュアル・システム・ディレクトリ構造体を有するマルチプロセッサ・システムおよび方法 |
Also Published As
Publication number | Publication date |
---|---|
US6625694B2 (en) | 2003-09-23 |
US20020078304A1 (en) | 2002-06-20 |
JP3866447B2 (ja) | 2007-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6826651B2 (en) | State-based allocation and replacement for improved hit ratio in directory caches | |
JP4447580B2 (ja) | 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ | |
US7266647B2 (en) | List based method and apparatus for selective and rapid cache flushes | |
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 | |
JP3866447B2 (ja) | マルチプロセッサ・ノードデータ処理システムに使用するディレクトリエントリ割当てシステム及び方法 | |
US6289420B1 (en) | System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem | |
US5893150A (en) | Efficient allocation of cache memory space in a computer system | |
US5537573A (en) | Cache system and method for prefetching of data | |
US7698508B2 (en) | System and method for reducing unnecessary cache operations | |
US6901483B2 (en) | Prioritizing and locking removed and subsequently reloaded cache lines | |
JP3281893B2 (ja) | キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム | |
JP3096414B2 (ja) | ディレクトリ内にアドレス・タグを記憶するためのコンピュータ | |
US10055349B2 (en) | Cache coherence protocol | |
JP2002536716A (ja) | 仮想メモリシステムにおけるメモリアクセスの改善技術 | |
JPH11506852A (ja) | 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減 | |
US7117312B1 (en) | Mechanism and method employing a plurality of hash functions for cache snoop filtering | |
US7325102B1 (en) | Mechanism and method for cache snoop filtering | |
JP4068185B2 (ja) | コンピュータ・システムでのメモリ・ストレージ・モードの効果的な選択 | |
US7093075B2 (en) | Location-based placement algorithms for set associative cache memory | |
JP4162493B2 (ja) | 下位レベルのキャッシュを含むアクセスを促進するためのリバースディレクトリ | |
JP3295436B2 (ja) | マイクロプロセッサキャッシュの一貫性 | |
US7669013B2 (en) | Directory for multi-node coherent bus | |
US6240491B1 (en) | Process and system for switching between an update and invalidate mode for each cache block | |
US20020002659A1 (en) | System and method for improving directory lookup speed |
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 |