JP2003067246A - シングル・ラインとライン・グループの両方のコヒーレンシを維持するライン・グループのキャッシュ・システム - Google Patents

シングル・ラインとライン・グループの両方のコヒーレンシを維持するライン・グループのキャッシュ・システム

Info

Publication number
JP2003067246A
JP2003067246A JP2002195680A JP2002195680A JP2003067246A JP 2003067246 A JP2003067246 A JP 2003067246A JP 2002195680 A JP2002195680 A JP 2002195680A JP 2002195680 A JP2002195680 A JP 2002195680A JP 2003067246 A JP2003067246 A JP 2003067246A
Authority
JP
Japan
Prior art keywords
line
cache
group
lines
memory
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.)
Withdrawn
Application number
JP2002195680A
Other languages
English (en)
Other versions
JP2003067246A5 (ja
Inventor
Blaine D Gaither
ブレーン・ディー・ガイザー
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2003067246A publication Critical patent/JP2003067246A/ja
Publication of JP2003067246A5 publication Critical patent/JP2003067246A5/ja
Withdrawn 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/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration

Landscapes

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

Abstract

(57)【要約】 【課題】 コヒーレンシを保持しながら全体的な呼び出
し時間を短縮する。 【解決手段】 単一のメモリ・トランザクションによっ
て1つのライン・グループを読み出してキャッシュに格
納するキャッシュ・メモリ(C1、C2)と、存在する
場合、そのライン・グループを所有するデバイスと、存
在する場合、そのライン・グループ内の個々のラインを
所有するデバイスを継続的に認識しているシステムを備
える。好ましい態様によれば、プロセッサ(P)をさら
に含み、プロセッサがライン・グループ内の単一のライ
ンを要求し、そのラインがキャッシュ・メモリ内に存在
せず、そのライン・グループ内の2つ以上のラインが所
有されていない場合に、その2つ以上のラインをキャッ
シュ・メモリにコピーする。

Description

【発明の詳細な説明】 【0001】 【発明の属する技術分野】本発明は一般にコンピュータ
・システムに関し、特にキャッシュ・メモリ・システム
に関する。 【0002】 【従来の技術】ほとんどのコンピュータ・システムで
は、複数レベルの階層構造をとるメモリ・システムを採
用している。階層の最高レベルにおける比較的高速であ
り、高価で容量が限られているメモリから、階層の最低
レベルにおける比較的低速であり、安価で大容量のメモ
リである。一般に、この階層には高速化のためのキャッ
シュと呼ばれる小規模で高速のメモリが含まれており、
速度のため、プロセッサ集積回路に物理的に組み込まれ
るか、又は物理的にプロセッサの近くに装着される。命
令キャッシュとデータ・キャッシュが別々に存在する場
合もある。複数レベルのキャッシュが存在する場合もあ
る。 【0003】キャッシュは、通常、ライン、ブロック、
ページと呼ばれるメモリ量を中心にして構成される。本
明細書では、「ライン」という用語を使用するが、本発
明はブロック又はページを採用するシステムにも同様に
適用できる。 【0004】多くのコンピュータ・システムでは複数の
プロセッサを搭載しており、個々のプロセッサは複数レ
ベルのキャッシュを備えることができる。一部のキャッ
シュを複数のプロセッサが共用してもよい。すべてのプ
ロセッサとキャッシュは、同一のメイン・メモリを共用
できる。特定のラインは、メモリと複数のプロセッサの
キャッシュ階層に同時に存在できる。キャッシュ内の1
つのラインのコピーはすべて同一でなければならない。
この特性はコヒーレンシと呼ばれる。複数のプロセッサ
のコヒーレンシを維持するプロトコルは、キャッシュ・
コヒーレンシ・プロトコルと呼ばれる。 【0005】キャッシュがラインを「所有」するとは、
キャッシュが更なるコヒーレンシ・トランザクションを
発行することなくラインを変更することを許可されてい
る場合である。ラインには唯一の「オーナー」が存在し
得る。いかなるキャッシュ・コヒーレンシ・プロトコル
も、キャッシュ・ラインの最新のコピーをその最新のオ
ーナー(存在する場合)から取得し、このデータのコピ
ーをリクエスタに提供する必要がある。ラインを変更す
る場合は、リクエスタが所有権を取得する必要があり、
共用のコピーをすべて無効にする必要がある。 【0006】ラインのオーナーが存在する場所を確認す
るには、一般的な3とおりの方法があり、その様々な変
形や組み合わせが可能である。スヌーピング・プロトコ
ル又はスヌープベースの・プロトコルと呼ばれる1つの
方法では、オーナーが不明であり、すべてのキャッシュ
に問い合わせ(スヌープ)を行って要求されたラインの
最新のコピーの位置を決定する必要がある。システム内
のあらゆる装置によるキャッシュ・ラインへのすべての
アクセス要求は、システム内のすべてのキャッシュに転
送される。最終的に、ラインの最新のコピーが存在する
場所が特定され、リクエスタにコピーが提供される。シ
ングルバス・システムでは、コヒーレンシ(スヌーピン
グ)トラフィック、アドレスに加えて、多くの場合にデ
ータもすべて同一のバスを共用する。 【0007】ディレクトリベースのプロトコルと呼ばれ
る第2の方法では、メモリ・システム内の各ラインの状
態に関する情報を保持するためにメモリが提供される。
例えば、メモリ内の各ラインについて、キャッシュ階層
ごとにそのキャッシュ階層がラインのコピーを保持する
かどうかを示すビットと、そのキャッシュ階層が所有権
を有するかどうかを示すビットをディレクトリに含める
ことができる。キャッシュ・ラインへのアクセス要求ご
とに、ディレクトリに問い合わせてオーナーを決定する
必要がある。それから、ラインの最新のコピーを取得し
てリクエスタにそれを提供する。一般に、ディレクトリ
のタグとステータス・ビットはメイン・メモリに保存さ
れるので、状態情報の要求はメイン・メモリのサイクル
を起動し、メイン・メモリの呼び出し時間が発生する。
マルチバス・システムでは、ディレクトリ・トラフィッ
クを別個のバスに分離できる。 【0008】第3の方法はグローバル・コヒーレンシ・
フィルタである。この方法では、キャッシュ・システム
内の有効なラインごとにタグが存在する。コヒーレンシ
・フィルタは、システム内のすべてのキャッシュに関す
る第2のタグのセットを備えるスヌープ・システムであ
り、中央に保存されている。キャッシュ・ラインの要求
は、すべてのキャッシュでなく中央のフィルタに転送さ
れる。コヒーレンシ・フィルタのタグは、通常は小規模
な高速のメモリに保存される。一部のコヒーレンシ・フ
ィルタは、所有されているラインのみを追跡でき、シス
テム内のすべての共用ラインを含むわけではない。マル
チバス・システムでは、コヒーレンシ・フィルタ・トラ
フィックを別個のバスに分離できる。 【0009】バスが単一又は少数の比較的小規模なシス
テムでは、スヌープベースのプロトコルによって最適な
パフォーマンスが提供される。ただし、スヌープベース
のシステムでバスが単一の場合はバス・トラフィックが
増大するので、バスが単一又は少数の大規模なシステム
ではスヌープ・トラフィックによって全体のパフォーマ
ンスが制限される恐れがある。ディレクトリベースのシ
ステムは、シングル・バス上ではスヌーピングに比較し
てラインを取得するのに必要な時間(呼び出し時間)は
増大するが、マルチ・バス上ではディレクトリによるシ
ステム・バス上のコヒーレンシ・トラフィックはスヌー
プベースのシステムより小さくなる。大規模なマルチバ
ス・システムでは、バス・トラフィックが呼び出し時間
より重要な場合に、通常はディレクトリベースのシステ
ムによって全体的に最適なパフォーマンスが提供され
る。多くのコンピュータ・システムでは、何らかの形で
スヌープベースのプロトコルとディレクトリベースのプ
ロトコルを組み合わせて使用している。例えば、マルチ
バス・システムでは、スヌープベースのプロトコルを使
用して各ローカル・バス上のコヒーレンシを維持し、デ
ィレクトリベースのプロトコルを使用してバス間のコヒ
ーレンシを維持することもできる。 【0010】プロセッサがラインを要求する場合、ライ
ンの取得に必要な時間全体(呼び出し時間全体)には、
(1)キャッシュ・コヒーレンシ・プロトコルを使用し
てアクセス権を取得するのに必要な時間、(2)アドレ
スを処理するのに必要な時間、(3)データを取得し、
転送するのに必要な時間が含まれる。前述のように、コ
ヒーレンシに関する要求のためのバス・トラフィックに
よって全体的なパフォーマンスが制限される恐れがあ
る。 【0011】コヒーレンシに関する要求のためのバス・
トラフィックを軽減する1つの方法は、ライン・サイズ
を大きくすることである。例えば、隣接するラインが要
求された場合は、ラインごとに別々のコヒーレンシ要求
が必要である。ライン・サイズが2倍になると、コヒー
レンシ要求ごとに2倍の量のデータが読み出される。さ
らに、呼び出し時間全体のかなりの部分はメモリ要求を
様々なメモリ・コンポーネントにルーティングし、当該
コンポーネントからデータを取得するのに必要な時間で
ある。ライン・サイズが大きくなると、要求あたりのデ
ータ量が増大する。しかし、ライン・サイズがさらに増
大すると、多くの不要なデータが転送され、多くのキャ
ッシュ領域に不要なデータが入る。従って、データ転送
のためのバス・トラフィックが増大し、キャッシュ・ミ
ス率が高くなる。いずれにしても全体的なパフォーマン
スに悪影響を及ぼす。さらに、ラインの一部が2つ以上
のプロセッサ又はノードで排他的(専用)に要求される
場合がある。この結果、2つのプロセッサ又はノードが
所有権を争うので、過度のキャッシュ間コピー・アクテ
ィビティが発生する恐れがあり、コヒーレンシ要求が増
大する場合がある。 【0012】代わりの方法として、ラインの一部(又は
ブロックの一部)を無効化できる方法が知られている。
余分なサブラインをプリフェッチする方法も知られてい
る。例えば、C. K. Liu and T. C.
King, A Performance Stud
y on Bounteous Transferin
Multiprocessor Sectored
Caches, The Journal of Su
percomputing, 11, 405−420
(1997)を参照されたい。Liu and Ki
ngは、サブラインを無効化し、複数のサブラインをプ
リフェッチするコヒーレンシ・プロトコルについて記述
している。 【0013】 【発明が解決しようとする課題】特に大規模なマルチバ
ス・システムでは、コヒーレンシを保持しながら全体的
な呼び出し時間を短縮する必要性が継続的に存在する。 【0014】 【課題を解決するための手段】コンピュータ・システム
は、ラインのグループを取得して保存する。ライン・グ
ループに関しても、個々のラインに関してもコヒーレン
シ状態が維持される。あるいは、ライン・グループのコ
ヒーレンシ状態はそのすべてのサブラインのコヒーレン
シ状態から推定できる。この方法では、単一のコヒーレ
ンシ・トランザクションと単一のアドレス・トランザク
ションによって複数ラインのデータを転送できるので、
全体的な呼び出し時間が短縮される。複数のラインをグ
ループとして取り出しても、その後でラインは個別に処
理できる。この方法では、キャッシュ間コピー・アクテ
ィビティの増大など、長いラインで発生する問題の多く
が回避される。ライン・グループには、複数のライン・
オーナーが存在してもよい。最大でライン・グループ全
体を要求する特殊な命令を実施できる。すなわち、この
ような命令では所有権によって単一のラインしか転送で
きない場合もあるが、最大ではライン・グループ全体を
転送することもできる。マルチバス・システムでは、所
有されていないラインをキャッシュからでなくメモリか
ら取得することで呼び出し時間をさらに短縮できるのが
好ましい。 【0015】 【発明の実施の形態】図1は、本発明で使用するのに適
したコンピュータ・システムの例を表す。図1では、複
数のノード(100、102、104)がスイッチ10
6又は他の相互接続を介して相互に接続されている。各
ノードは、複数のプロセッサ(p)を備えている。各プ
ロセッサは、1次キャッシュ(C1)を備えている。各
ノードは、共用2次キャッシュ(C2)と共用メモリ
(M)を備えている。各共用メモリは、ディレクトリ
(D)を備えている。ノードの数、ノードあたりのプロ
セッサの数、キャッシュの数、メモリの位置、ディレク
トリの使用は、すべて説明のみを目的とする。 【0016】キャッシュ・ミスの場合、プロセッサが同
じノード内の他のプロセッサの1次キャッシュからライ
ンを取り出す時間すなわち呼び出し時間(例えば、プロ
セッサ108がキャッシュ110からラインを取り出す
ための呼び出し時間)をTナノ秒と仮定する。この場
合、プロセッサが同じノード内のメモリからラインを取
り出す時間(例えば、プロセッサ108がメモリ112
からラインを取り出すための呼び出し時間)は約3Tナ
ノ秒と推定できる。また、プロセッサがリモート・ノー
ド内のメモリからラインを取り出す時間(例えば、プロ
セッサ108がメモリ114からラインを取り出すため
の呼び出し時間)は約6Tナノ秒と推定できる。さら
に、プロセッサがリモート・ノード内の1次レベルキャ
ッシュからラインを取り出す時間(例えば、プロセッサ
がキャッシュ116からラインを取り出す呼び出し時
間)は約9Tナノ秒と推定できる。典型的なシングルバ
ス・システム(例えばバス106)では、キャッシュか
らキャッシュへの転送は一般にメモリからの転送より高
速である。典型的なマルチバス・システム(例えば図
1)では、メモリからの最悪の転送は(6Tナノ秒)は
キャッシュからキャッシュへの最悪の転送(9Tナノ
秒)より高速である。従って、マルチバス・システムで
は、シングルバス・システムに比べて、全体的なメモリ
の呼び出し時間を最適化するために、キャッシュ・ミス
の場合にラインを取り出す別の戦略が必要である。 【0017】典型的なコンピュータ・システムでは、1
つのメモリ・アドレスがメモリ内の1つのラインに対応
する。メモリ・システムにアドレスが提供されると、メ
モリ・システムは多くの場合にインターリーブされた複
数のソースから要求されたデータを取り出し、得られた
データをメモリ・レジスタに格納することができる。並
行性を向上するために、メモリ・システム(例えばメモ
リ112)は実際に複数のラインを取り出して複数のラ
インをメモリ・レジスタに格納することが知られてい
る。例えば、商用のコンピュータ・システムの1つの例
では、1ラインは128バイトであり、1つのラインが
要求された場合でも、メモリ・システムは512バイト
(4ライン)を取り出してその4ラインをレジスタに格
納する。要求側のプロセッサは要求した1ラインのみを
受け取る。残りのラインは、そのいずれかのラインがす
ぐに要求された場合に、短い呼び出し時間で読み出しが
可能になる。この構成に関する知識を使用してコンパイ
ラを最適化できる。コンパイラは、他のラインの呼び出
し時間の短縮を利用できる。 【0018】キャッシュは関連のプリフェッチ・バッフ
ァを備えており、キャッシュ・ミスの場合に要求された
ラインとその後のNラインをメモリから取得することも
知られている。一般に、Nラインのそれぞれの転送は別
々のバス・トランザクションによる。要求側のキャッシ
ュは要求した1ラインのみを受け取り、残りのラインは
そのいずれかのラインがすぐに要求された場合に、短い
呼び出し時間で読み出しが可能になる。 【0019】以上とは異なり、本発明に従ったコンピュ
ータ・システムでは、単一の読み出し命令によって、複
数ラインのグループをメモリから取得し(すなわちキャ
ッシュからコピーし)、そのライン・グループ全体を要
求側のキャッシュに格納する。さらに、ライン・グルー
プについても個々のラインについてもキャッシュ・コヒ
ーレンシを維持する。特に、ライン・グループ内の各ラ
インはオーナーが異なってもよい。その結果、いくつか
の利点が得られる。まず、前述の相対的な呼び出し時間
について考察する。プロセッサ108がメモリ114の
1ラインを要求すると、呼び出し時間の多くはラインの
検出に関連する。隣接するラインが呼び出される可能性
(空間局所性)が高い場合、本発明に従ったシステムで
は複数のラインを提供するので呼び出し時間はほとんど
増大しない。ライン・グループ内の各ラインに所有権を
指定できるので、キャッシュ間コピー・アクティビティ
が削減される。また、特殊なメモリ命令では転送を許可
されるラインの数が所有権によって変わり、キャッシュ
間コピー・アクティビティがさらに削減される。さら
に、以下に詳しく記述するように、本発明に従ったシス
テムでは、マルチバス・システムにおいて通常はライン
・グループをキャッシュからでなくメモリから転送する
ことによって平均呼び出し時間を短縮し、ローカル・バ
ス・トラフィックを削減し、リンク(例えば118)ト
ラフィックを削減する。例えば、ノード100のプロセ
ッサがノード104のメモリll4内にあり、ノード1
02のキャッシュにも格納されているラインを要求する
と、本システムではノード104のディレクトリ内でエ
ントリを検出し、ノード102に更なるバス・トラフィ
ックを発生することなく、メモリll4から直接ライン
を取得する。従って、本発明に従ってライン・グループ
を使用するシステムでは、セクターに分割されたキャッ
シュやプリフェッチ・バッファ以上に、呼び出し時間を
短縮し、空間的局所性を利用して余分なキャッシュ間の
転送を回避する。 【0020】典型的なキャッシュでは、ライン・サイズ
がLであり、コヒーレンシの単位と転送の単位もLであ
る。セクターに分割され、サブラインを伴うキャッシュ
では、サブライン(すなわち、サブブロック)のサイズ
がSであり(ただしS<L)、コヒーレンシの単位は
S、転送の単位はS及びLが可能である。本発明に従っ
たキャッシュでは、ライン・サイズがLであり、転送の
単位はL及びLの整数倍が可能である。コヒーレンシの
単位はLとLの整数倍である。ライン・グループはサブ
ラインの使用を補うことができる。つまり、セクターに
分割されたキャッシュとサブライン(及びスヌーピン
グ)は各ノード内で利用でき、ライン・グループとディ
レクトリ又はコヒーレンシ・フィルタは複数のノードに
わたって利用できる。 【0021】メモリ・システムでNラインを取り出して
それをレジスタに格納すると、同じNラインをライン・
グループとして使用する場合に便利である。ただし、ラ
イン・グループは必ずしもメモリ・レジスタと同じサイ
ズでなくてもよい。以下の記述の一部では、単に実例を
示すためにライン・グループを4ラインと仮定する。M
ビットのアドレスとライン・グループ内のNラインが指
定された場合、ライン・グループは上位M−log
(N)ビットで定義される。例えば、ライン・グルー
プを4ラインと仮定し、簡単のために16ビットのアド
レスを想定すると、アドレスの上位14ビットで定義さ
れる4ラインのライン・グループにアドレスの下位2ビ
ットのあらゆる組み合わせを結合したものが存在する。 【0022】1つのキャッシュを複数のセットに編し、
アドレス・ビットを索引として使用して特定のアドレス
にどのセットを使用するかを指定する方法が知られてい
る。セットごとに、タグと呼ばれる別のアドレス・ビッ
トを使用して、このアドレスにセットのどのラインが対
応するかを指定する。本発明に従ったライン・グループ
では、索引は単一のラインでなくライン・グループに対
応してもよい。例えば、Iビットの索引が指定された場
合、索引の上位I−2ビットを4ラインのライン・グル
ープの索引として使用できる。1つのタグをライン・グ
ループ全体に適用してもよい。あるいは、各ラインにラ
インのタグで指定するようなアドレス指定可能な別のエ
ントリが存在するのが好ましい。各ラインに独自のコヒ
ーレンシ状態が存在し、オプションでライン・グループ
全体には別個のコヒーレンシ状態が存在できるのが好ま
しい。ライン・グループ全体に関する別個のコヒーレン
シ状態については、後で詳しく説明する。 【0023】以上の記述により、アドレスが指定された
場合にメモリ又は他のキャッシュからN個のラインをグ
ループとして取得でき、そのNラインをグループとして
キャッシュに格納できる。ライン・グループがキャッシ
ュに格納されると、以下に記述するように、これらのラ
インをグループとしても個別にも処理できる。 【0024】キャッシュ・コヒーレンシ・プロトコルで
は、一般にキャッシュに格納された各ラインを複数の状
態のいずれかに設定する。1つの一般的な方法では、キ
ャッシュ内の各ラインに対して3とおりの状態を使用す
る。キャッシュにラインを格納する前は、すべてのエン
トリが「無効」(Invalid)と呼ばれるデフォルトの状態
である。まだキャッシュに格納されていない物理ライン
がキャッシュに格納されると、このキャッシュ内のエン
トリの状態が無効から「共用」(Shared)に変わる。キャ
ッシュ内でラインが変更された場合は、直ちにメモリ内
でもラインを変更できる(ライト・スルーと呼ばれ
る)。あるいは、キャッシュ内で変更されたラインが無
効化される場合や置き換えられるときに初めて、キャッ
シュ内で変更されたラインをメモリに書き込むこともで
きる(ライト・バックと呼ばれる)。ライト・バック・
キャッシュでは、キャッシュ内でラインが変更された場
合、又は変更が見込まれる場合は、キャッシュ内のエン
トリの状態が「変更」(Modified)に変わる。以上の3つ
の状態の指定をMSIプロトコルと呼ぶこともある。M
SIは3つの状態のそれぞれの頭文字を表す。 【0025】一般的な変形では、もう1つの状態が追加
される。この変形では、物理ラインがキャッシュにコピ
ーされるときに、このラインのコピーが他のキャッシュ
内に存在しない場合は、ラインが「専用」(Exclusive)
の状態になる。「専用」という用語は、このラインのコ
ピーがまさに1つのキャッシュ階層に存在するという意
味である。ラインが第1のプロセッサのキャッシュ階層
内で「専用」の状態にある場合に第2のプロセッサが同
じラインを要求すると、このラインは2つのキャッシュ
階層にコピーされるので、各キャッシュのエントリの状
態は「共用」の状態に設定される。以上の4つの状態の
指定はMESIプロトコルと呼ばれることがある。ME
SIは4つの状態のそれぞれの頭文字を表す。他にも多
くの変形がある。 【0026】専用の状態のラインは、コヒーレンシに関
する特別な操作を実行することなくオーナーがいつでも
変更できる。ラインが変更されると、ローカル・キャッ
シュ内で「変更」のマークが付く。専用の状態では、ラ
インを所有でき(システム内で唯一のコピーであり)、
変更されることはない。この方式によって、ラインの変
更に必要な余分のコヒーレンシに関する要求が削減され
る。 【0027】以下の記述では、MESIプロトコルを使
用して本発明の第1の実施態様の例を示す。本発明は、
キャッシュ・コヒーレンシに関する他のシステム及び方
法にも同様に適用できる。さらに、第1の実施態様の例
を説明しやすくするために、以下のようにいくつかの仮
定を追加する。MESIプロトコルでラインが所有され
るのは、そのラインの状態が変更又は専用の場合であ
る。単に例を示すために、ラインのオーナーが存在して
おり(状態が変更又は専用)、ラインを変更できるリク
エスタがラインを要求した場合に、ラインの最新のコピ
ーがリクエスタに提供され、さらにメモリに書き込まれ
るものとする。以前のオーナーはそのラインのコピーを
無効の状態にし、新しいオーナーはラインの初期状態を
専用に設定する。ラインが所有されていない場合(キャ
ッシュに存在しない場合、又はキャッシュ内に共用の状
態で存在する場合)、リクエスタはそのラインの初期状
態を共用に設定する。 【0028】追加の仮定はライン・グループには有効で
ある。要求されたラインが所有権の混在するライン・グ
ループに属する場合(すなわちライン・グループ内の少
なくとも2つのラインのオーナーが異なる場合)、リク
エスタは要求した1ラインのみの所有権を取得して余計
なキャッシュ間転送を回避するのが好ましい。一方、要
求されたラインが属するライン・グループ全体を単一の
オーナーが所有する場合は、恐らくデータ構造全体の所
有権が変わり、リクエスタはライン・グループ全体の所
有権を取得するのが好ましい。このような規則によっ
て、すべてのラインを以前の同じオーナーが所有してい
た場合はライン・グループとグループの所有権を転送す
ることでライン・グループの呼び出し時間を短縮し、一
方では同時に異なるオーナーが所有した履歴をもつライ
ンを組み合わせないことでキャッシュ間転送の増大を回
避する。 【0029】本発明に従ったシステムのさらにもう1つ
のオプションの機能は、1つのラインだけが要求された
場合に複数のラインを転送するかどうかをリクエスタが
制御できることである。具体的には、オプションで要求
を単一のラインに限定したり、オプションで複数のライ
ンの転送を許可したりする新しいメモリ・システム・コ
マンドを実施できる。 【0030】前述の仮定と機能が与えられた場合に、図
2は要求されたラインの所有権が要求されないライン要
求に関してライン・グループのコヒーレンシを維持する
ための方法の例を示している。図3と4は、要求された
ラインの所有権が要求されるライン要求に関してライン
・グループのコヒーレンシを維持するための方法の例を
示している。図1と以下の図2乃至4の説明では、単に
システムの例を示すためにディレクトリを想定している
が、コヒーレンシ・フィルタなど、コヒーレンシを維持
する他の方法も同様に適用できる。 【0031】図2では、ラインは要求されるがラインの
所有権は要求されない。つまり、リクエスタはデータの
読み出しは要求するが、データの変更は要求しない。デ
ィレクトリ内で、対応するライン・グループのコヒーレ
ンシ状態が確認される。ステップ200で、対応するラ
イン・グループ内のすべてのラインが所有されていない
場合は(MESIでは、いずれのキャッシュにも変更と
専用の状態がない場合)、ステップ202でリクエスタ
は要求したラインのコピーと、最大で対応するライン・
グループ内の他のすべてのラインのコピーを取得する。
リクエスタは取得したラインのコピーに共用のマークを
付け(ローカルにも該当するディレクトリ内でも)、さ
らに取得していないラインのエントリの位置に無効のマ
ークを付ける。ステップ204で、対応するライン・グ
ループ内の一部のラインが所有され、要求したラインが
所有されていない場合は、ステップ206でリクエスタ
は要求したラインのコピーと、最大で対応するライン・
グループ内の所有されていない他のすべてのラインのコ
ピーを取得する。リクエスタは取得したラインのコピー
に共用のマークを付け(ローカルにも該当するディレク
トリ内でも)、さらに取得していないラインのエントリ
の位置に無効のマークを付ける。 【0032】ただし、ステップ202と206で、要求
されたラインおよび恐らくライン・グループ内の他のラ
インも所有されていないことに留意すべきである。従っ
て、所有されていないラインをメモリから取得できる。
前述のように、マルチバス・システムではリモート・ノ
ードで所有されていないラインがメモリから取得される
のが好ましい。本システムでは、ノード内で可能な場合
はキャッシュからのラインの取得が優先され、スヌーピ
ングを利用できる。複数ノードにまたがる場合はメモリ
からのラインの取得が優先され、ディレクトリ又はコヒ
ーレンシ・フィルタを利用できる。結果として、1回の
要求で複数のラインが転送されるので、ラインあたりの
呼び出し時間が短縮される。マルチバス・システムで
は、キャッシュでなくメモリからラインが取り出される
ので、呼び出し時間がさらに短縮され、ローカル・バス
・トラフィックが削減される。 【0033】ステップ208では、要求したラインが所
有されている。ライン・グループ内の所有権が混在する
場合は(すなわち対応するライン・グループ内にオーナ
ーの異なるラインが存在する場合)、ステップ210で
リクエスタはオーナーから要求したラインのみを取得す
る。前述のように、リクエスタは要求されたラインだけ
の所有権を取得して余分なキャッシュ間転送を回避する
のが好ましい。リクエスタは取得したラインのコピーに
専用又は共用のマークを付け(ローカルにも該当するデ
ィレクトリ内でも)、さらに取得していないラインのエ
ントリの位置に無効のマークを付ける。ステップ212
では、対応するライン・グループ内の全てのラインが同
じオーナーによって所有される。リクエスタは要求した
ラインのコピーと、最大で同じグループ内の他のすべて
のラインのコピーをオーナーから取得できる。前述のよ
うに、多くの場合、データ構造全体の所有権が変わり、
リクエスタはライン・グループ全体のコピーを取得する
のが好ましい。リクエスタは取得したラインのコピーに
専用又は共用のマークを付け(ローカルにも該当するデ
ィレクトリ内でも)、さらに取得していないラインのエ
ントリの位置に無効のマークを付ける。 【0034】図3では、ラインが要求され、ラインの所
有権が要求されている。ステップ300で、対応するラ
イン・グループ内のすべてのラインが所有されていない
場合は、ステップ302でリクエスタは要求したライン
のコピーと、最大で対応するライン・グループ内の他の
すべてのラインのコピーを取得できる。リクエスタのコ
ピー以外の、要求したラインの既存のコピーには、すべ
て無効のマークが付く。リクエスタは要求したラインの
コピーに専用のマークを付け、他に取得したラインのコ
ピーに共用のマークを付け(ローカルにも該当するディ
レクトリ内でも)、さらに取得していないラインのエン
トリの位置に無効のマークを付ける。ステップ304
で、対応するグループ内の一部のラインが所有され、要
求したラインが所有されていない場合は、ステップ30
6でリクエスタは要求したラインのコピーと、最大で対
応するライン・グループ内の所有されていない他のすべ
てのラインのコピーを取得する。リクエスタのコピー以
外の、要求したラインの既存のコピーには、すべて無効
のマークが付く。リクエスタは要求したラインのコピー
に専用のマークを付け(ローカルにも該当するディレク
トリ内でも)、他に取得したラインのコピーに共用のマ
ークを付け、さらに取得していないラインのエントリの
位置に無効のマークを付ける。既に図2との組み合わせ
で説明したように、マルチバス・システムでは、所有さ
れていないラインをメモリから取得するのが好ましい。
専用のラインは、所有するキャッシュからでもメイン・
メモリからでも取得できる。 【0035】ステップ308では、要求されたラインが
所有されている。対応するライン・グループ内の一部の
ラインが別々のオーナーに所有されている場合は、ステ
ップ310でリクエスタは要求したラインのオーナーか
ら要求したラインのみを取得する。リクエスタのコピー
以外の、要求したラインの既存のコピーには、すべて無
効のマークが付く。リクエスタは要求したラインのコピ
ーに専用のマークを付け(ローカルにも該当するディレ
クトリ内でも)、さらに取得していないラインのエント
リの位置に無効のマークを付ける。ステップ312で、
対応するライン・グループ内のすべてのラインが同じオ
ーナーによって所有される。前述のように、多くの場
合、データ構造全体の所有権が変わり、リクエスタはラ
イン・グループ全体の所有権を取得するのが好ましい。
ステップ312で、グループ全体の最新のコピーがメモ
リにコピーされ、リクエスタにコピーされ、リクエスタ
のコピー以外の、グループの既存のコピーにはすべて無
効のマークが付く。リクエスタはこのグループのコピー
に専用のマークを付ける(ローカルにも該当するディレ
クトリ内でも)。 【0036】リクエスタにグループ全体をコピーする
か、グループのサブセットのみをコピーするかの選択を
変更できる。特に、図3のステップ312では、グルー
プが所有されており、ライン・グループ全体がリクエス
タにコピーされる。グループ所有権によってスラッシン
グ(余分なキャッシュ間転送)が発生する恐れがある。
図4に代替の方法を示す。最初に、図3のステップ30
8で”YES”と判断する。現在のオーナーがグループ
の一部のみを変更した場合は、グループの所有権を分割
できる。 【0037】図4では、テスト400が追加され、元の
1人のオーナーがグループ内のすべてのラインを変更し
たかどうかを判断する。ステップ400ではライン・グ
ループ全体が所有されている。変更されていないライン
がある場合は(一部のラインが変更の状態にない場
合)、ステップ402で要求したラインのみがリクエス
タにコピーされる。リクエスタは要求したラインのコピ
ーに専用のマークを付け(ローカルにも該当するディレ
クトリ内でも)、取得していないラインのエントリの位
置に無効のマークを付ける。代替方法として、ステップ
402’で、要求したラインのコピーに加えて要求した
ライン以外のすべてのラインをコピーし、要求したライ
ン以外のラインの状態に共用のマークを付けてもよい。
さらにもう1つの代替方法として、ステップ402’’
で、要求したラインのコピーに加えて要求したライン以
外のすべてのラインをコピーし、以前は変更の状態で要
求されていないすべてのラインの状態に専用のマークを
付け、以前は専用の状態で要求されていないすべてのラ
インの状態に共用のマークを付けてもよい。従って、す
べてのラインを1オーナーが所有しても、2つのキャッ
シュがグループ内の別々のラインの変更を要求する場合
は、各キャッシュが別々のラインの所有権を取得でき、
スラッシングが回避される。元のオーナーがグループ全
体を変更している場合は、ステップ404でグループ全
体の所有権がリクエスタに転送され、スラッシングが発
生する可能性は低い。 【0038】さらに、所有されていないグループの元の
コピーを残すことができるかどうかの選択を変更でき
る。例えば、図2のステップ202で、ライン・グルー
プ全体の既存のコピーを無効化できる。ただし、空き領
域が必要ない場合は、図2に示すように、ライン・グル
ープの元のコピーを残しておくことができる。本システ
ムでは、ラインのコピーが存在する場所を追跡できるの
で、ラインが変更された場合に、変更されたラインのコ
ピーが存在するキャッシュのみに通知する必要がある。 【0039】前述のように、ディレクトリとグローバル
・コヒーレンシ・フィルタでは、バス上のコヒーレンシ
・トラフィックは削減されるが呼び出し時間は長くな
る。ライン・グループの読み出しと書き込みを実行する
とコヒーレンシ・トラフィックが削減されるので、グル
ープでない読み出しと書き込みではディレクトリ又はグ
ローバル・コヒーレンシ・フィルタが必要になる場合
も、図1に示すバスベースのシステムを利用できる。さ
らに、本発明はディレクトリ又はグローバル・コヒーレ
ンシ・フィルタを使用するシステムにも同様に適用でき
る。例えば、コヒーレンシ状態を判断する各ステップ
(図2のステップ200、204、208、図3のステ
ップ300、304、308、図4のステップ400)
では、スヌーピング、ディレクトリのチェック、グロー
バル・コヒーレンシ・フィルタのチェックによってコヒ
ーレンシ状態を判断できる。 【0040】図2乃至5により、所有権は本発明におい
て重要な概念である。MESIでなく所有権に基づくコ
ヒーレンシ状態は特に有効である。先の出願(米国特許
出願番号09/704,176、2000年10月31
日出願)において、スヌーピング、ディレクトリ、グロ
ーバル・コヒーレンシ・フィルタに代わる方法が開示さ
れている。出願09/704,176では、特定のキャ
ッシュが所有権をもつシステム内のすべてのキャッシュ
・ラインのタグのリスト(グローバル・オーナーシップ
・タグ・リストすなわちGOTL)をコンピュータ・シ
ステムが保持している。すなわち、GOTL内の各タグ
に対応するラインは汚れている(dirty)かもしれず、又
は単に汚れている恐れがある(変更可能である)かもし
れない。GOTLには所有されているラインは含まれて
いるが、一般にシステム内の共用のラインがすべて含ま
れるわけではない。特定のラインのエントリがGOTL
内にない場合、このラインは共用と仮定できる。GOT
Lを使用すると、実際にデータを転送しなくても所有権
を転送できることも留意されたい。 【0041】GOTLは、本発明に特に適している。つ
まり、GOTLには少なくとも1ラインが所有されてい
る各ライン・グループのエントリを含めることができ
る。さらに、各エントリにはライン・グループ内の各ラ
インのコヒーレンシ状態と、どのプロセッサ、キャッシ
ュ、ノード、バスがそのラインのオーナーかに関する情
報を含めることができる。キャッシュ内の特定の1ライ
ンが所有されている場合は、対応するライン・グループ
のタグをGOTLに配置でき、GOTLエントリの要素
としてこの特定のラインに所有のマークが付き、オーナ
ーが特定される。コヒーレンシ状態を判断する各ステッ
プ(図2のステップ200、204、208、図3のス
テップ300、304、308、図4のステップ40
0)では、GOTLをチェックすることでコヒーレンシ
状態を判断できる。ただし、通常、ラインのアドレスが
GOTLに記載されるのは、そのラインが所有されてお
り、グループ内の個々のラインに共用のマークが付いて
も、GOTL内のライン・グループのアドレスをGOT
Lに残すことができる場合のみであることに留意された
い。例えば、前述のように、図2のステップ202で
は、ライン・グループ全体の既存のコピーを無効化でき
る。又は、空き領域が必要なければライン・グループの
元のコピーを残しておくこともできる。GOTLの領域
が必要な場合、システムは所有されていないライン・グ
ループを削除してから、部分的に所有権のあるグループ
を削除することができる。 【0042】図5に、図3と図4(所有権が要求され
る)に相当するものでGOTLを使用した場合のもう1
つの例を示す。前述の説明によると、オプションでライ
ン・グループを部分的に所有しなくなってもそれをキャ
ッシュ内に残しておくことができる。従って、ライン・
グループ内のラインが所有されていない場合でも、その
ライン・グループのエントリをGOTLに残すことがで
きる。つまり、ライン・グループのラインが所有される
と必ずGOTLにエントリが作成されるが、そのライン
・グループ内のすべてのラインが所有されなくなって
も、そのエントリが直ちに削除されるとは限らない。G
OTLは、汚れているラインを含むことがある。要求さ
れたラインを含むライン・グループがGOTL内にない
場合(ステップ500)、又はライン・グループはGO
TL内に存在するが全体が所有されてはいない場合(ス
テップ502)は、リクエスタは最大でこのライン・グ
ループ全体を受け取る(ステップ504)。要求された
ラインは所有されていないが、同じライン・グループ内
の他のラインが所有されている場合は(ステップ50
6)、最大で所有されていないすべてのラインを受け取
る(ステップ508)。要求されたラインが所有されて
おり、対応するライン・グループの所有権が混在する場
合は、要求されたラインのみを受け取る(ステップ51
2)。ライン・グループ全体が同一のオーナーに所有さ
れている場合は、このライン・グループ全体を受け取る
(ステップ514)。 【0043】ただし、図2乃至4の一部のステップで
は、例えば図2のステップ202のようにグループのサ
ブセットがコピーされる。例えば、CPU命令によって
単一のラインが要求された場合、対応するライン・グル
ープ内の所有されていないすべてのラインがまもなく要
求される見込みがある場合はそれらが推論に基づいてコ
ピーされる。あるいは、リクエスタが1つのラインを要
求しただけの場合にも、複数のラインの所有権を認める
ことができる。あるいは、1つのラインとライン・グル
ープ内の所有されていない他のすべてのラインを明示的
に要求する特殊なCPU命令を実施することもできる。
以上のいずれの場合にも、本システムは最低限要求され
たラインをコピーする。あるいは、ライン・グループ全
体のコピー又は所有権を明示的に要求する特殊なCPU
命令を実施してもよい。システム・アーキテクチャの他
の部分によっては、分割できない1つの操作で2ライン
以上を要求することもできる。 【0044】以上の記述では、ライン・グループのコヒ
ーレンシが保持される。例えばMESIを利用できる。
MESIでは、ライン・グループがMの状態にあるのは
グループ内のすべてのラインがMの状態にある場合のみ
である(他の状態についても同様)。ただし、図2乃至
5に示す方法では、ライン・グループの所有権によって
ライン・グループに関するより有効なコヒーレンシ情報
が提供される。特に、図2乃至5に示す方法で、判断2
00、208、300、308、400、502、51
0には以下に示す一連のライン・グループの所有権コヒ
ーレンシ状態が好ましい。 【0045】未所有(グループ内のすべてのラインが未
所有) 複数オーナー(少なくとも1ラインが所有されており、
すべてのラインが同一のオーナーによって所有されるわ
けではない) 1オーナー(グループ内のすべてのラインが同一のオー
ナーに所有されている) 1オーナーの変更(グループ内のすべてのラインが同一
のオーナーによって変更されている) さらに、図2乃至5の判断にはキャッシュ・レベルでな
くノード・レベルの所有権のみが必要である。例えば、
グループ内のすべてのラインが同一のノード内のキャッ
シュ(複数)に所有されており、1本のバス上でスヌー
プできることがわかれば十分である。 【0046】本発明に関する以上の記述は、例示と説明
のみを目的とするものである。本発明のすべてを記述す
るものではなく、本発明を開示した形式のみに限定する
ものでもない。上述の教示を参照して、他の変更および
変形が可能である。本実施態様は、本発明の原理の最適
な説明を提供するために選択され、記述されており、他
の当業者はこれを実用的に応用することで、検討中の特
定の用途に適した様々な実施態様と様々な変形に本発明
を最適に利用できる。特許請求の範囲は、従来の技術に
よって制限される場合を除き、本発明のその他の実施態
様を含めて解釈されるものとする。 【0047】本発明の態様を以下に例示する。 【0048】1.単一のメモリ・トランザクションによ
って1つのライン・グループを読み出してキャッシュに
格納するキャッシュ・メモリ(C1、C2)と、存在す
る場合、そのライン・グループを所有するデバイスと、
存在する場合、そのライン・グループ内の個々のライン
を所有するデバイスを継続的に認識しているシステムを
備えるコンピュータ・システム。 【0049】2.プロセッサ(P)をさらに含み、プロ
セッサがライン・グループ内の単一のラインを要求し、
そのラインがキャッシュ・メモリ内に存在せず、そのラ
イン・グループ内の2つ以上のラインが所有されていな
い場合に、その2つ以上のラインをキャッシュ・メモリ
にコピーする上記1に記載のコンピュータ・システム。 【0050】3.メモリ・システムをさらに含み、第1
のノード(100)のキャッシュ・メモリ(110)が
第2のノード(102)のキャッシュ・メモリから取得
できるラインを要求し、このラインが第3のノード(1
04)の共用メモリ(114)からも取得できる場合
に、メモリ・システムが第3のノードの共用メモリから
第1のノードのキャッシュ・メモリにライン・グループ
をコピーする上記1に記載のコンピュータ・システム。 【0051】4.第1のノード(100)のキャッシュ
・メモリ(110)が第2のノード(104)のキャッ
シュ・メモリ(116)内の共用の状態で取得できるラ
インを要求した場合に、このラインを第2のノードのキ
ャッシュ・メモリからでなく第2のノードのメモリ(1
14)から取得する上記1に記載のコンピュータ・シス
テム。 【0052】5.ライン・グループ内の少なくとも2つ
のラインのオーナーが異なる上記1に記載のコンピュー
タ・システム。 【0053】6.単一のメモリ・トランザクションによ
って1つのライン・グループを読み出してキャッシュに
格納するキャッシュ・メモリ(C1、C2)を含み、ラ
イン・グループが要求され、そのライン・グループの一
部を別のキャッシュ・メモリが所有する場合に、キャッ
シュ・メモリがそのライン・グループのすべてのライン
より少ないラインを受け取るコンピュータ・システム。 【0054】7.コンピュータ・システムのコヒーレン
シを維持する方法であって、単一のラインの要求に応答
して1つのライン・グループを取得すること(202、
206、212、302、306、312、402’、
402’’、404)と、そのライン・グループとその
ライン・グループ内の個々のラインの所有権に関する情
報を保持すること(202、206、212、302、
306、312、402’、402’’、404)を含
む方法。 【0055】8.コンピュータ・システム内でメモリの
ラインを転送する方法であって、プロセッサ(P)によ
ってメモリのラインを要求することと、要求されたメモ
リのラインを共用メモリ(M)からキャッシュ・メモリ
(C1、C2)にコピーすることと、要求されたライン
に対応するライン・グループ内の所有されていない他の
すべてのラインを共用メモリからキャッシュ・メモリに
コピーすること(202、206、302、306)
と、このライン・グループ内の要求されたライン以外の
所有されているライン(存在する場合)をコピーしない
ことを含む方法。 【0056】9.コンピュータ・システムのコヒーレン
シを維持する方法であって、(a)プロセッサ(P)に
よってメモリのライン、すなわちライン・グループ内の
メモリのラインを要求することと、(b) ステップ
(a)の要求に応答して、ライン・グループ内のすべて
のラインが同一のオーナーによって変更された場合に、
このライン・グループ内のすべてのラインをプロセッサ
のキャッシュ・メモリ(C1、C2)にコピーすること
(404)と、(c) ステップ(a)の要求に応答し
て、ライン・グループ内のすべてのラインが所有されて
いるがこのライン・グループ内の少なくとも1つのライ
ンが変更されていない場合に、このライン・グループ内
の要求されたラインのみをプロセッサのキャッシュ・メ
モリにコピーすること(402)を含む方法。
【図面の簡単な説明】 【図1】本発明で使用するのに適したコンピュータ・シ
ステムの例を表すブロック図である。 【図2】所有権を要求しないライン要求のコヒーレンシ
を維持する方法の例を表す流れ図である。 【図3】所有権を要求するライン要求のコヒーレンシを
維持する方法の例を表す流れ図である。 【図4】図3の一部に代替方法の例を表す流れ図であ
る。 【図5】 図2乃至4に代替方法の例を表す流れ図であ
る。 【符号の説明】 100、102、104 ノード C1、C2 キャッシュ・メモリ M 共用メモリ P プロセッサ
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 12/08 551 G06F 12/08 551C 15/16 645 15/16 645 15/177 682 15/177 682J Fターム(参考) 5B005 JJ12 KK03 KK14 MM01 NN12 NN42 NN54 PP11 5B045 BB12 BB28 DD12 DD13 EE03 EE07

Claims (1)

  1. 【特許請求の範囲】 【請求項1】単一のメモリ・トランザクションによって
    1つのライン・グループを読み出してキャッシュに格納
    するキャッシュ・メモリと、 存在する場合、そのライン・グループを所有するデバイ
    スと、存在する場合、そのライン・グループ内の個々の
    ラインを所有するデバイスを継続的に認識しているシス
    テムを備えるコンピュータ・システム。
JP2002195680A 2001-07-31 2002-07-04 シングル・ラインとライン・グループの両方のコヒーレンシを維持するライン・グループのキャッシュ・システム Withdrawn JP2003067246A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/919,309 2001-07-31
US09/919,309 US6662277B2 (en) 2001-07-31 2001-07-31 Cache system with groups of lines and with coherency for both single lines and groups of lines

Publications (2)

Publication Number Publication Date
JP2003067246A true JP2003067246A (ja) 2003-03-07
JP2003067246A5 JP2003067246A5 (ja) 2005-05-26

Family

ID=25441869

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002195680A Withdrawn JP2003067246A (ja) 2001-07-31 2002-07-04 シングル・ラインとライン・グループの両方のコヒーレンシを維持するライン・グループのキャッシュ・システム

Country Status (3)

Country Link
US (2) US6662277B2 (ja)
JP (1) JP2003067246A (ja)
DE (2) DE10262164B4 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285992A (ja) * 2005-03-31 2006-10-19 Internatl Business Mach Corp <Ibm> タグ付きキャッシュ状態に基づいて下位レベル・キャッシュへの参照なしに相互接続ファブリック上にリクエストを送出するためのデータ処理システム、キャッシュ・システム、および方法
JP2008027435A (ja) * 2006-06-29 2008-02-07 Intel Corp 排他的所有権のスヌープフィルタ

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7222220B2 (en) * 2001-05-01 2007-05-22 Sun Microsystems, Inc. Multiprocessing system employing address switches to control mixed broadcast snooping and directory based coherency protocols transparent to active devices
US7210006B2 (en) * 2002-06-28 2007-04-24 Sun Microsystems, Inc. Computer system supporting read-to-write-back transactions for I/O devices
US7162588B2 (en) * 2002-08-23 2007-01-09 Koninklijke Philips Electronics N.V. Processor prefetch to match memory bus protocol characteristics
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US6996645B1 (en) * 2002-12-27 2006-02-07 Unisys Corporation Method and apparatus for spawning multiple requests from a single entry of a queue
US8751753B1 (en) 2003-04-09 2014-06-10 Guillermo J. Rozas Coherence de-coupling buffer
US7636815B1 (en) 2003-04-09 2009-12-22 Klaiber Alexander C System and method for handling direct memory accesses
US7363432B2 (en) * 2004-03-25 2008-04-22 International Business Machines Corporation Method and apparatus for directory-based coherence with distributed directory management
US7321956B2 (en) * 2004-03-25 2008-01-22 International Business Machines Corporation Method and apparatus for directory-based coherence with distributed directory management utilizing prefetch caches
US7434008B2 (en) * 2004-04-23 2008-10-07 Hewlett-Packard Development Company, L.P. System and method for coherency filtering
US7454576B2 (en) * 2004-12-27 2008-11-18 Intel Corporation System and method for cache coherency in a cache with different cache location lengths
US7971002B1 (en) 2005-04-07 2011-06-28 Guillermo Rozas Maintaining instruction coherency in a translation-based computer system architecture
US8688890B2 (en) * 2006-12-05 2014-04-01 Hewlett-Packard Development Company, L.P. Bit ordering for communicating an address on a serial fabric
US8539164B2 (en) * 2007-04-30 2013-09-17 Hewlett-Packard Development Company, L.P. Cache coherency within multiprocessor computer system
US20080307169A1 (en) * 2007-06-06 2008-12-11 Duane Arlyn Averill Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory
US20110004729A1 (en) * 2007-12-19 2011-01-06 3Leaf Systems, Inc. Block Caching for Cache-Coherent Distributed Shared Memory
US8255635B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Claiming coherency ownership of a partial cache line of data
US8024527B2 (en) * 2008-02-01 2011-09-20 International Business Machines Corporation Partial cache line accesses based on memory access patterns
US8140771B2 (en) 2008-02-01 2012-03-20 International Business Machines Corporation Partial cache line storage-modifying operation based upon a hint
US8266381B2 (en) * 2008-02-01 2012-09-11 International Business Machines Corporation Varying an amount of data retrieved from memory based upon an instruction hint
US8117401B2 (en) * 2008-02-01 2012-02-14 International Business Machines Corporation Interconnect operation indicating acceptability of partial data delivery
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
US20090198910A1 (en) * 2008-02-01 2009-08-06 Arimilli Ravi K Data processing system, processor and method that support a touch of a partial cache line of data
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US8117390B2 (en) * 2009-04-15 2012-02-14 International Business Machines Corporation Updating partial cache lines in a data processing system
US8140759B2 (en) * 2009-04-16 2012-03-20 International Business Machines Corporation Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US9274955B2 (en) * 2012-08-17 2016-03-01 Futurewei Technologies, Inc. Reduced scalable cache directory
US20140223100A1 (en) * 2013-02-07 2014-08-07 Alex J. Chen Range based collection cache
US9596279B2 (en) * 2013-02-08 2017-03-14 Dell Products L.P. Cloud-based streaming data receiver and persister
US9442993B2 (en) 2013-02-11 2016-09-13 Dell Products L.P. Metadata manager for analytics system
US9141680B2 (en) 2013-02-11 2015-09-22 Dell Products L.P. Data consistency and rollback for cloud analytics
US9191432B2 (en) 2013-02-11 2015-11-17 Dell Products L.P. SAAS network-based backup system
US20140281270A1 (en) * 2013-03-15 2014-09-18 Henk G. Neefs Mechanism to improve input/output write bandwidth in scalable systems utilizing directory based coherecy
US20150074357A1 (en) * 2013-09-09 2015-03-12 Qualcomm Incorporated Direct snoop intervention
US10102000B2 (en) * 2016-04-01 2018-10-16 Intel Corporation Apparatus and method for non-serializing split locks

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5150472A (en) * 1989-10-20 1992-09-22 International Business Machines Corp. Cache management method and apparatus for shared, sequentially-accessed, data
US5404483A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for delaying the processing of cache coherency transactions during outstanding cache fills
US5787475A (en) * 1992-07-21 1998-07-28 Digital Equipment Corporation Controlled prefetching of data requested by a peripheral
US5666514A (en) * 1994-07-01 1997-09-09 Board Of Trustees Of The Leland Stanford Junior University Cache memory containing extra status bits to indicate memory regions where logging of data should occur
US5615334A (en) * 1994-10-07 1997-03-25 Industrial Technology Research Institute Memory reflection system and method for reducing bus utilization and device idle time in the event of faults
US6049847A (en) * 1996-09-16 2000-04-11 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US5832232A (en) * 1996-12-16 1998-11-03 Intel Corporation Method and apparatus for providing user-based flow control in a network system
US6035376A (en) * 1997-10-21 2000-03-07 Apple Computer, Inc. System and method for changing the states of directory-based caches and memories from read/write to read-only
US6049845A (en) * 1997-11-05 2000-04-11 Unisys Corporation System and method for providing speculative arbitration for transferring data
US6330591B1 (en) * 1998-03-09 2001-12-11 Lsi Logic Corporation High speed serial line transceivers integrated into a cache controller to support coherent memory transactions in a loosely coupled network
US6189078B1 (en) * 1998-12-22 2001-02-13 Unisys Corporation System and method for increasing data transfer throughput for cache purge transactions using multiple data response indicators to maintain processor consistency
US6405322B1 (en) * 1999-04-13 2002-06-11 Hewlett-Packard Company System and method for recovery from address errors
US6266744B1 (en) * 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
US6374332B1 (en) * 1999-09-30 2002-04-16 Unisys Corporation Cache control system for performing multiple outstanding ownership requests
US6493809B1 (en) * 2000-01-28 2002-12-10 International Business Machines Corporation Maintaining order of write operations in a multiprocessor for memory consistency
US6412046B1 (en) * 2000-05-01 2002-06-25 Hewlett Packard Company Verification of cache prefetch mechanism
US6647453B1 (en) * 2000-08-31 2003-11-11 Hewlett-Packard Development Company, L.P. System and method for providing forward progress and avoiding starvation and livelock in a multiprocessor computer system
US6711662B2 (en) * 2001-03-29 2004-03-23 Intel Corporation Multiprocessor cache coherence management

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285992A (ja) * 2005-03-31 2006-10-19 Internatl Business Mach Corp <Ibm> タグ付きキャッシュ状態に基づいて下位レベル・キャッシュへの参照なしに相互接続ファブリック上にリクエストを送出するためのデータ処理システム、キャッシュ・システム、および方法
JP2008027435A (ja) * 2006-06-29 2008-02-07 Intel Corp 排他的所有権のスヌープフィルタ

Also Published As

Publication number Publication date
US20040039879A1 (en) 2004-02-26
DE10262164B4 (de) 2010-11-11
US7310708B2 (en) 2007-12-18
US20030028730A1 (en) 2003-02-06
DE10232926B4 (de) 2006-04-13
DE10232926A1 (de) 2003-03-06
US6662277B2 (en) 2003-12-09

Similar Documents

Publication Publication Date Title
JP2003067246A (ja) シングル・ラインとライン・グループの両方のコヒーレンシを維持するライン・グループのキャッシュ・システム
US7669010B2 (en) Prefetch miss indicator for cache coherence directory misses on external caches
US6959364B2 (en) Partially inclusive snoop filter
JP5201514B2 (ja) チップマルチプロセッサおよび方法
KR100970229B1 (ko) 원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템
US7373457B2 (en) Cache coherence protocol for a multiple bus multiprocessor system
KR101014394B1 (ko) 통합 디렉토리 및 프로세서 캐시를 구비한 컴퓨터 시스템
JP4447580B2 (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
US20050188159A1 (en) Computer system supporting both dirty-shared and non dirty-shared data processing entities
US20170177484A1 (en) Region probe filter for distributed memory system
US6405290B1 (en) Multiprocessor system bus protocol for O state memory-consistent data
JP2007501479A (ja) キャッシュ状態情報を提供する方法および装置
JP2007257637A (ja) アクセラレータ用低コストのキャッシュ一貫性を維持する方法及びシステム
JP2013058225A (ja) マルチプロセッサ・システムにおけるキャッシュ・コヒーレンスにおいて用いるフォワード状態
JPH02141845A (ja) マルチプロセッサシステムにおいて中央処理ユニットにより主メモリからデータブロックを読み取る方法
US5937431A (en) Multi- node, multi-level cache- only memory architecture with relaxed inclusion
US7308538B2 (en) Scope-based cache coherence
US7117312B1 (en) Mechanism and method employing a plurality of hash functions for cache snoop filtering
US20140229678A1 (en) Method and apparatus for accelerated shared data migration
EP1652091B1 (en) Methods and apparatus for providing early responses from a remote data cache
EP0817079A2 (en) Skip-level write-through in a multi-level memory of a computer system
US7543112B1 (en) Efficient on-chip instruction and data caching for chip multiprocessors
US6356982B1 (en) Dynamic mechanism to upgrade o state memory-consistent cache lines
JP2008269513A (ja) マルチプロセッサコンピュータシステム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040803

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040803

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20070129