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
Application number
JP11128966A
Other languages
English (en)
Other versions
JP3866447B2 (ja
Inventor
N Masuri Nabil
エヌ.マスリ ナビル
Weber Wolf-Dietrich
ウェーバー ウォルフ−ディートリッチ
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2000155747A publication Critical patent/JP2000155747A/ja
Application granted granted Critical
Publication of JP3866447B2 publication Critical patent/JP3866447B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • 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
    • G06F12/082Associative 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

(57)【要約】 【課題】 マルチプロセッサノードシステム内でディレ
クトリエントリを選択するアルゴリズムであり、メモリ
空間の浪費とメモリサイズの増大を防止する。 【解決手段】 プロセッサノード内のプロセッサからの
メモリ要求に応えて、アルゴリズムは、要求されたメモ
リラインについての情報を格納するべく利用可能なエン
トリを発見し、エントリが利用可能である場合、利用可
能なエントリのうちの1つを使用する。そうでなけれ
ば、「共用」エントリをサーチする。共用エントリが利
用可能である場合、共用エントリの1つを使用する。そ
うでなければ、「ダーティ」エントリをサーチする。ダ
ーティエントリが利用可能である場合、ダーティエント
リの1つを使用する。ディレクトリエントリを選択する
にあたり、LRUアルゴリズムを使用する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に、マルチプ
ロセッサデータ処理システムにおけるキャッシュコヒー
レンス(coherence)、特に、キャッシュディ
レクトリエントリを選択するためのアルゴリズムでキャ
ッシュの動作を増強することに関する。なお本願は、1
998年5月8日付けの米国仮出願による利益を請求す
るものである。
【0002】また本願は、次の同時係属出願と関連して
いる。同時係属米国特許出願番号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日に出願。参考として、上記の出願の全てを本願発
明の全体に亘って取り入れている。
【0003】
【従来の技術】コンピュータシステムノードは、メモリ
サブシステムとプロセッササブシステムに分割すること
ができる。メモリサブシステムは、メインダイナミック
ランダムアクセスメモリ(DRAM)を含み、任意の数
の接続されたプロセッサからの要求に応えてメモリから
のデータを提供する。通常、メモリサブシステム内のデ
ータにアクセスするのに費す時間はプロセッサの速度に
比べてかなり長いものであり、従って、プロセッサは往
々にして自らの性能を改善するべくキャッシュを備えて
構築されている。プロセッササブシステムは、プロセッ
サと単数または複数のキャッシュを含んでいる。キャッ
シュというのは、プロセッサとメインメモリの間に接続
され、メインメモリから最近使用されたデータを格納す
る小形メモリである。キャッシュは、メインメモリサブ
システムに比べてはるかにアクセス速度が速く、通常は
はるかに小形である。キャッシュ内へおよびキャッシュ
から外へ転送され得る最小のデータ単位は、キャッシュ
ド「ライン」(cached“line”)と呼ばれ
る。1キャッシュドラインに対応するメモリ内のデータ
は、メモリラインと呼ばれる。1データラインというの
は、1キャッシュドラインまたは1メモリラインのいず
れかを指す。
【0004】全てのキャッシュアーキテクチャは、その
多くが複数のキャッシュドラインに対応する1又は一連
のメモリラインを含む物理的に連続したセグメントへ
と、メインメモリを分割する。キャッシュドラインにア
クセスするには、そのラインに対応するセグメントを識
別するためのセグメントタグおよびセグメント内のライ
ンを識別するためのラインインデックスが必要である。
当業者であれば、1セグメントが1つのラインしかもた
ない場合、ラインインデックスが不要であることがわか
るだろう。プロセッサが、ローカルキャッシュ内にすで
に含まれているデータラインを要求する場合、そのデー
タラインはプロセッサに受渡し(deliver)され
る。そうでない場合、プロセッサはメインメモリからデ
ータラインを獲得する。
【0005】セットアソシエティブおよびフルアソシエ
ティブキャッシュは「多」ウェイ(“multipl
e”ways)であり、これはすなわちディレクトリエ
ントリが、同じメモリセグメントインデックスを有する
が異なるセグメントに帰属する多数のキャッシュドライ
ンを参照することを意味する。これは、直接マッピング
されたキャッシュと比較して、多方向ディレクトリが同
じ方向にマッピングするアクティブキャッシュライン間
のコンテンションを低減させることから、キャッシュヒ
ット率を改善することができる。キャッシュラインの直
接マッピングでは、新たに要求されたキャッシュドライ
ンを参照するのにディレクトリが必要とされるとき、置
換(replace)すべきディレクトリを選択すると
いう問題が回避されるが、フルアソシエイティブおよび
セットアソシエティブキャッシュマッピングスキーム
は、置換すべき特定のキャッシュドラインを参照するデ
ィレクトリを選択するのに、置換プロトコルを必要とす
る。最も一般的なプロトコルは、未使用時間が最も長い
キャッシュラインを置換する最低使用頻度(LRU)プ
ロトコルである。
【0006】標準的には、セットアソシエティブキャッ
シュは、4〜8ウェイであり、一方フルアソシエティブ
キャッシュは32〜64ウェイである。共用メモリマル
チプロセッサシステムにおいては、各プロセッサは通
常、それ自身のキャッシュを有し、従ってシステムは多
数のキャッシュをもつ。各キャッシュは、与えられたデ
ータラインのコピーを保持できることから、全ての異な
るキャッシュドラインの状態を一貫性ある状態に保ち、
いずれか1つのプロセッサにより書込まれた最新バージ
ョンで更新することが重要である。通常、キャッシュ動
作を支配するべく1組の規則をもつキャッシュのコヒー
レンスプロトコルを含むプロセッサのメモリモデルによ
って規定される通りの正しい値を、キャッシュまたはメ
インメモリから戻すことを担当するのは、メモリサブシ
ステムである。
【0007】システム中でキャッシュコヒーレンスを維
持するために、キャッシュコヒーレンスプロトコルは、
キャッシュコヒーレンス制御情報を収納するディレクト
リを使用する。通常メモリサブシステムの一部である、
このディレクトリは、メモリデータがシステム内のどこ
かのキャッシュ内に存在しうるか否かを示す状態情報を
伴う各メインメモリロケーションのためのエントリを有
する。コヒーレンスプロトコルは、メモリ要求に応えて
とるべき全ての遷移およびトランザクションを特定す
る。キャッシュライン上でとられるいかなる動作も、デ
ィレクトリ内に格納された状態の中に反映される。共通
のキャッシュコヒーレンススキームはこれを達成するた
めに次の3つの常駐(permanent)状態を使用
する。すなわち、無効(invalid):ラインはキ
ャッシュ内のどこにも入れられていない。メインメモリ
は、コピーしか持っていない。
【0008】共用(shared):ラインは、遠隔ノ
ードにおいて少なくとも1つのキャッシュ内で有効であ
る。 ダーティ(dirty):ラインは、遠隔ノードにおい
て1つのキャッシュ内で有効である。その遠隔ノード内
でプロセッサによりそのコピーを修正することが可能で
ある。メインメモリには古いデータが含まれている可能
性がある。
【0009】コヒーレンスプロトコルは、ラインが遷移
中であることを示すため、他の非常駐(transie
nt)状態を使用することができる。充分な時間があれ
ば、これらの非常駐状態は、上述の常駐状態の1つへと
戻る。プロセッサからのメモリ要求毎に、メモリサブシ
ステムは、キャッシュドラインに対応するメモリライン
を格納するセグメントを識別するために全てのキャッシ
ュタグ(cache tag)を見なくてはならない。
「スヌーピープロトコル」(snoopy proto
col)内の各キャッシュは、全ての要求を「のぞき回
り」(snoop)し、次にメモリサブシステムに対
し、それがキャッシュドラインの最新バージョンを有す
るか否かの信号を送る。あるいは、メモリ−サブシステ
ムは、キャッシュドラインの最新バージョンのロケーシ
ョンを見い出すため各キャッシュのタグの複製を保持す
ることができる。複製タグベースの方法は、時として
「ディレクトリベースのキャッシュコヒーレンスプロト
コル」と呼ばれる。
【0010】
【発明が解決しようとする課題】図1は、メインDRA
Mメモリ122のためのメモリ制御機構(MC)120
に対しバス118により接続されたそれぞれのローカル
キャッシュ110A,110B,110Cおよび110
Dを有する多数のCPU102A,102B,102C
および102Dを含む従来のシステム100を示す。こ
の例においては、メインメモリ122は各々のメモリラ
インについて、ディレクトリ124エントリ専用の空間
を持ち、従って、ディレクトリ124内のエントリ数を
決定するキャッシュドラインの合計数が通常メモリ12
2内のメモリラインの合計数よりもはるかに少ないこと
から、メモリ空間が浪費される。さらに、従来のシステ
ム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内のメモリライン数より少ない
数のディレクトリエントリを収納し、ディレクトリ12
4よりも小さくかつ高速であり、標準的に、より高い速
度のためのスタティックランダムアクセスメモリ(SP
AM)の中にある。
【0016】ディレクトリ224は、複数のエントリD
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を示す。
【0017】状態情報フィールド326は、好ましくは
「無効」、「共用」、「ダーティ」および「非常駐」を
含むキャッシュドラインの状態を示している。「無効」
状態は、DIRが利用可能であり、かくして使用できる
ことを表わす。「共用」状態は、キャッシュドラインが
少なくとも1つのキャッシュ110内で有効であること
を表す。「ダーティ」状態は、メモリ122内のデータ
ラインがキャッシュ110の1つにおいて修正されたこ
とを表し、「非常駐」状態は、ラインがメモリ122と
キャッシュ110との間で遷移中であることを表す。
【0018】BVフィールド328は、どのキャッシュ
110がメモリ122からのラインのコピーを有するか
を識別するため、キャッシュ110A,110B,11
0Cおよび110Dにそれぞれ対応する複数のサブフィ
ールド328A,328B,328Cおよび328Dを
含む。例えば、フィールド328A内のBVビットが
「1」(論理high)である場合、キャッシュ110
Aは、メモリ122のデータラインのコピーを有する。
換言すると、フィールド328A内の同じBVビットが
「0」(論理low)である場合、キャッシュ110A
はメモリ122のデータラインのコピーを持たない。
【0019】タグフィールド330は、DIRエントリ
が結びつけられるキャッシュドラインに対応するメモリ
セグメントを識別する。例えば、タグフィールド330
が値「5」を示す場合、そのDIRエントリは、矢印3
008により表示されるメモリ122のセグメント5内
のメモリラインに対応するキャッシュドラインに対応す
る。
【0020】セットアソシエティブキャッシュまたはフ
ルアソシエティブキャッシュにおいては、ディレクトリ
224は、「多」ウェイであってよい。すなわち、1つ
のDIRエントリは多数のキャッシュドラインを参照す
ることができる。そうである場合、DIRエントリは、
「最低使用頻度」(LRU)基準に基づいて、どのキャ
ッシュドラインが、プロセッサによる使用頻度が最低で
あるかを識別するLRUフィールド336を含んでい
る。LRUフィールド336内の値は通常符号化され、
システム設計中に割り当てられた予め定められた値と結
びつけて、このLRUフィールド336を評価すること
により、メモリ122のデータラインを参照するための
DIRエントリをアクセスする、正確な順序が明らかに
なる。
【0021】DIRエントリが、例えば2本のキャッシ
ュドラインにマッピングできる場合、ディレクトリ22
4は、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というオフセット(またはセット)を持つSEG
5内のメモリラインをポイントする。同様に、アドレス
302−2は、8というオフセットをもつSEGM内の
メモリラインをポイントする。
【0023】図3は、DIR1により表されたキャッシ
ュドラインL1が、例えば、2つのキャッシュ110A
および110Dにより共用されているシステム例200
を示す。その結果、ラインL1についての状態フィール
ド326は「共用」(shared)とマーキングさ
れ、キャッシュ110Aおよび110Dに対応するBV
フィールド328内の2つのビット328Aおよび32
8Dは、「1」という値をもつ。
【0024】図4は、DIR2により表されているキャ
ッシュドラインL2がキャッシュ110C内で修正され
た、同じシステム200を示している。従ってラインL
2のための状態情報フィールド326は「ダーティ」
(dirty)とマーキングされ、キャッシュ110C
に対応するフィールド328C内のBVビットは「1」
という値を有する。
【0025】好ましいシステム200においては、キャ
ッシュ110内の有効なキャッシュドラインは、ディレ
クトリ224内に対応する有効エントリを有するはずで
ある。しかしながら、さまざまな理由から、キャッシュ
110は、対応するディレクトリ224のエントリを更
新せずにそのキャッシュドラインを置換することがで
き、その結果、対応する有効キャッシュドライン無しの
「有効な」(valid)ディレクトリエントリ、また
は換言すると「失効」ディレクトリエントリとなる。
【0026】図5は、「失効」ディレクトリエントリを
有するシステム200を示す。DIR5により表わされ
るキャッシュドラインL5は、当初2つのキャッシュ1
10Aおよび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は「共用」とマーキングされる。キャッシュ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」を示す。
【0028】プロセッサ102がメモリ122からのデ
ータラインを要求したときに、MC120はディレクト
リ224内のエントリを割当てる。ディレクトリ224
が満杯である場合には、古いエントリを「追い出さ」な
くてはならない。すなわち、新たに要求されたキャッシ
ュドラインについてのディレクトリ情報を保持するた
め、そのディレクトリが選択されることになる。
【0029】図7のフローチャートは、新しいメモリ要
求のための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を参照する。
【0030】ステップ1008でMC120が共用エン
トリを発見できない場合、ステップ1010でMC12
0は、「ダーティ」とマーキングされた状態フィールド
326をもつ少なくとも1つのDIRエントリが存在す
るか否かをテストする。存在する場合、MC120は、
ステップ1018でLRU基準を用いてLRUダーティ
DIRエントリを発見する。次にMC120は、ステッ
プ1020で、発見されたLRUダーティエントリをフ
ラッシュ(flush)する。すなわち、MC120
は、発見されたエントリを無効化し、データをメモリ1
22内の対応するキャッシュドライン内に戻す。ステッ
プ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エントリが最近使用されたエントリに比
べ失効する確率が高いことから、共用(ステップ101
2)またはダーティ(ステップ1018)DIRエント
リを選択するのにLRU基準を使用する。ステップ10
14または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 (22)

    【特許請求の範囲】
  1. 【請求項1】 複数のキャッシュドラインを格納するこ
    とのできるそれぞれのキャッシュを、各々有する複数の
    プロセッサおよびキャッシュドラインの状態を追跡する
    ためのディレクトリを備えるデータ処理システムであっ
    て、1本のキャッシュラインに対する新たな要求があっ
    た時点で、アルゴリズムは、要求されたキャッシュライ
    ンのためのキャッシュディレクトリエントリを割当てる
    ために前記キャッシュドラインの状態を使用することを
    特徴とするデータ処理システム。
  2. 【請求項2】 アルゴリズムは、「ダーティ」状態にあ
    るエントリを使用する前に「共用」状態にあるエントリ
    を使用する請求項1に記載のシステム。
  3. 【請求項3】 アルゴリズムは、LRUエントリを選択
    する請求項2に記載のシステム。
  4. 【請求項4】 アルゴリズムは、現在使用中でないディ
    レクトリエントリを使用する請求項1に記載のシステ
    ム。
  5. 【請求項5】 アルゴリズムは、前記プロセッサのうち
    の少なくとも1つにおいて有効であるキャッシュドライ
    ンを表すディレクトリエントリを選択する請求項1に記
    載のシステム。
  6. 【請求項6】 アルゴリズムは、前記プロセッサのうち
    の1つにおいてダーティなキャッシュドラインを表すデ
    ィレクトリエントリを選択する請求項1に記載のシステ
    ム。
  7. 【請求項7】 アルゴリズムがメモリラインを表す全て
    のディレクトリエントリが遷移状態にあることを決定し
    た場合、次に要求を再試行する請求項1に記載のシステ
    ム。
  8. 【請求項8】 前記アルゴリズムは、前記割当てられた
    キャッシュディレクトリエントリにより表されたキャッ
    シュドラインを無効にする請求項1に記載のシステム。
  9. 【請求項9】 状態情報をもつ複数のディレクトリエン
    トリの中から1つのディレクトリエントリを選択するた
    めの方法において、 前記ディレクトリエントリを選択するために前記状態情
    報を使用する段階および前記複数のディレクトリエント
    リが遷移状態のキャッシュドラインを表す場合、前記デ
    ィレクトリエントリの再要求を許可する段階を含んでな
    る方法。
  10. 【請求項10】 「無効」状態にあるエントリが存在す
    る場合は、かかるエントリを選択する段階をさらに含ん
    でなる請求項9に記載の方法。
  11. 【請求項11】 「共用」状態にあるエントリが存在す
    る場合は、かかるエントリを選択する段階をさらに含ん
    でなる請求項10に記載の方法。
  12. 【請求項12】 共用エントリを選択する段階は、LR
    Uアルゴリズムを使用する請求項11に記載の方法。
  13. 【請求項13】 ダーティ状態にあるエントリが存在す
    る場合に、かかるエントリを選択する段階をさらに含ん
    でなる請求項12に記載の方法。
  14. 【請求項14】 ダーティエントリを選択する段階は、
    LRUアルゴリズムを使用する請求項13に記載の方
    法。
  15. 【請求項15】 前記選択されたディレクトリエントリ
    により表されるキャッシュドラインを無効にする段階を
    さらに含んでなる請求項14に記載の方法。
  16. 【請求項16】 1つのキャッシュを伴う少なくとも1
    つのプロセッサを各々が有する複数のプロセッサノード
    を含むデータ処理システム内で使用するためのキャッシ
    ュコヒーレンスを維持する方法であって、順序づけされ
    た形で、 1つの「利用可能な」エントリが利用可能な場合、使用
    されていないキャッシュディレクトリエントリの中から
    その「利用可能な」エントリを選択する段階、 1つの「共用」エントリが利用可能な場合、少なくとも
    1つのプロセッサにより共用されているキャッシュドラ
    インを表すキャッシュディレクトリエントリの中からそ
    の「共用」エントリを選択する段階および1つの「ダー
    ティ」エントリが利用可能な場合、少なくとも1つのプ
    ロセッサのうちの1つにおいてダーティなキャッシュド
    ラインを表すキャッシュディレクトリエントリの中から
    その「ダーティ」エントリを選択する段階、を含んでな
    ることを特徴とする方法。
  17. 【請求項17】 「共用」エントリを選択する段階は、
    LRUアルゴリズムを使用する請求項16に記載の方
    法。
  18. 【請求項18】 「ダーティ」エントリを選択する段階
    は、前記最低使用頻度アルゴリズムを使用する請求項1
    6に記載の方法。
  19. 【請求項19】 付随するキャッシュを伴う少なくとも
    1つのプロセッサを各々有する多数のプロセッサノード
    を含むデータ処理システム内で使用するためのキャッシ
    ュコヒーレンスユニットであって、 前記キャッシュとメモリとの間でデータを転送するため
    のバスインタフェースと、 前記キャッシュ内に格納された複数のキャッシュドライ
    ンについての状態情報を格納するためのディレクトリ
    と、 キャッシュコヒーレンスを維持するため前記バスインタ
    フェースに結合されたコヒーレンス制御機構と、を備え
    ることを特徴とするキャッシュコヒーレンスユニット。
  20. 【請求項20】 前記コヒーレンス制御機構が、 前記ディレクトリから状態情報を読取るための手段およ
    び前記ディレクトリ内で前記状態情報を更新するための
    手段を備える請求項19に記載のキャッシュコヒーレン
    スユニット。
  21. 【請求項21】 ディレクトリエントリを発見するのに
    前記状態情報を使用するための手段をさらに備える請求
    項19に記載のキャッシュコヒーレンスユニット。
  22. 【請求項22】 前記状態情報を使用するための手段
    が、LRUアルゴリズムを使用する請求項21に記載の
    キャッシュコヒーレンスユニット。
JP12896699A 1998-05-08 1999-05-10 マルチプロセッサ・ノードデータ処理システムに使用するディレクトリエントリ割当てシステム及び方法 Expired - Fee Related JP3866447B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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