JP5116418B2 - マルチプロセッサ・データ処理システムにおいて、データを処理する方法、マルチプロセッサ・データ処理システムのための処理ユニット、およびデータ処理システム - Google Patents

マルチプロセッサ・データ処理システムにおいて、データを処理する方法、マルチプロセッサ・データ処理システムのための処理ユニット、およびデータ処理システム Download PDF

Info

Publication number
JP5116418B2
JP5116418B2 JP2007247897A JP2007247897A JP5116418B2 JP 5116418 B2 JP5116418 B2 JP 5116418B2 JP 2007247897 A JP2007247897 A JP 2007247897A JP 2007247897 A JP2007247897 A JP 2007247897A JP 5116418 B2 JP5116418 B2 JP 5116418B2
Authority
JP
Japan
Prior art keywords
cache
coherency
state
memory
domain
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007247897A
Other languages
English (en)
Other versions
JP2008097598A (ja
Inventor
ガイ・リン・ガスリー
ウィリアム・ジョン・スターク
デレク・エドワード・ウィリアムス
フィリップ・ジー・ウィリアムス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2008097598A publication Critical patent/JP2008097598A/ja
Application granted granted Critical
Publication of JP5116418B2 publication Critical patent/JP5116418B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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

Landscapes

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

Description

本発明は、マルチプロセッサ・データ処理システムの改良に係り、更に詳しく云えば、マルチプロセッサ・データ処理システムにおける階層キャッシュ・システムのコヒーレンシ管理の改良に係る
サーバ・コンピュータ・システムのような通常の対称マルチプロセッサ(SMP)コンピュータ・システムは、典型的には1つまたは複数のアドレス・バス、データ・バス、および制御バスを含むシステム相互接続バスにすべて接続された複数の処理ユニットを含む。システム相互接続バスに接続されるシステム・メモリは、マルチプロセッサ・コンピュータ・システムにおける最低レベルの揮発性メモリを表し、一般に、すべての処理ユニットによる読取りおよび書込みアクセスのためにアクセス可能である。システム・メモリに存在する命令およびデータに対するアクセス待ち時間を少なくするために、各処理ユニットは、典型的には、それぞれのマルチレベル・キャッシュ階層によって更に支援され、その階層の下位レベルのものが1つまたは複数のプロセッサ・コアによって共用される。
複数のプロセッサ・コアがデータの同じキャッシュ・ラインへの書込みアクセスを要求し得るし、修正されたキャッシュ・ラインがシステム・メモリと直接的には同期しないので、マルチプロセッサ・コンピュータ・システムのキャッシュ階層は、システム・メモリの内容に関して種々のプロセッサ・コアの「ビュー(view)」間での少なくとも最低レベルのコヒーレンシを保証するようにキャッシュ・コヒーレンシ・プロトコルを実する。詳しく云えば、キャッシュ・コヒーレンシは、少なくとも、処理ユニットがメモリ・ブロックのコピーをアクセスし、その後、そのメモリ・ブロックの更新されたコピーをアクセスした後、処理ユニットがそのメモリ・ブロックの古いコピーを再びアクセスすることができないことを必要とする。
キャッシュ・コヒーレンシ・プロトコルは、一般に、キャッシュ階層の各レベルにストアされたキャッシュ・ラインと関連してストアされた一組のキャッシュ状態、およびキャッシュ階層間でキャッシュ状態の情報を通信するために利用される一組のコヒーレンシ・メッセージを定義する。典型的な実装では、キャッシュ状態の情報は、周知のMESI(Modified, Exclusive, Shared, Invalid)プロトコルまたはその変形という形態をとり、コヒーレンシ・メッセージは、メモリ・アクセス要求の要求元および/または宛先のキャッシュ階層におけるプロトコル定義されたコヒーレンシ状態の遷移を表す。MESIプロトコルは、データのキャッシュ・ラインが4つの状態、即ち、M(Modified ‐ 修正済み)、E(Exclusive ‐ 排他的)、S(Shared ‐ 共用)、またはI(Invalid ‐ 無効)、の1つによってタグ付けされることを可能にする。「修正済み」状態は、コヒーレンシ・グラニュールが、修正されたコヒーレンシ・グラニュールをストアしているキャッシュにおいてのみ有効であるということ、および修正されたコヒーレンシ・グラニュールの値がシステム・メモリに書込まれていないということを表す。メモリ階層におけるすべてのキャッシュのうち、その時点でコヒーレンシ・グラニュールが「排他的」として表されているとき、そのキャッシュだけがコヒーレンシ・グラニュールを保持する。しかし、「排他的」状態におけるデータは、システム・メモリと整合している。もし、或るコヒーレンシ・グラニュールがキャッシュ・ディレクトリにおいて「共用」としてマークされるならば、そのコヒーレンシ・グラニュールは、関連するキャッシュに、および、恐らくはメモリ階層内の1つまたは複数の他のキャッシュに存在し、そのコヒーレンシ・グラニュールのすべてのコピーがシステム・メモリと整合している。最後に、「無効」状態は、コヒーレンシ・グラニュールと関連するデータおよびアドレスが共に無効であるということを表す
各コヒーレンシ・グラニュール(例えば、キャッシュ・ライン)がセットされる状態は、そのキャッシュ・ライン内のデータの前の状態と、要求元の装置(例えば、プロセッサ)から受けたメモリ・アクセス要求のタイプとの両方に依存する。従って、システムにおいてメモリ階層を維持するということは、メモリ・ロケーションから読取るまたはメモリ・ロケーションに書込むという意図を表すメッセージをプロセッサがシステム全体にわたって通信することを必要とする。例えば、プロセッサが或るメモリ・ロケーションにデータを書込みたいとき、プロセッサは、先ず、そのメモリ・ロケーションにデータを書込むという意図を他のすべての処理要素に知らせなければならず、書込みオペレーションを実行するための許可を他のすべての処理要素から受けなければならない。要求元のプロセッサが受けた許可メッセージは、そのメモリ・ロケーションの内容のすべての他のキャッシュされたコピーが無効にされたということ或いは無効にされるであろうということを表し、それによって、他のプロセッサがそれらの失効したローカル・データを間違ってアクセスしないということを保証する。
或るシステムでは、キャッシュ階層は、少なくとも2つのレベルのキャッシュ、即ち、レベル1(L1)または上位レベルのキャッシュと、レベル2(L2)キャッシュおよびレベル3(L3)キャッシュのような1つまたは複数のレベルの下位レベルのキャッシュを含む(L2キャッシュはL3キャッシュに関して上位レベルのキャッシュである)。L1キャッシュは、通常、MPシステムにおける特定のプロセッサ・コアに関連する専用キャッシュである。プロセッサ・コアは、先ず、そのL1キャッシュにおけるデータをアクセスしようとする。もし、要求されたデータがL1キャッシュにおいて見つからなければ、プロセッサ・コアは、要求されたデータに関して1つまたは複数の下位レベルのキャッシュ(例えば、レベル2(L2)またはレベル3(L3)キャッシュ)をアクセスする。多くの場合、最低レベルのキャッシュ(例えば、L3キャッシュ)は幾つかのプロセッサ・コアの間で共用される。
典型的には、上位レベルのキャッシュの合同クラスが満杯になるとき、データ・ラインが、記憶のために下位レベルのキャッシュにまたはシステム・メモリに「排出(evict)」または書き出される。しかし、いずれのメモリ階層の場合も、メモリ階層にある同じデータの複数のコピーが同時に存在し得る。より多くのスペースを上位レベルのキャッシュに与えるためにラインを排出するというポリシは、その結果として、下位レベルのキャッシュに対する更新を生じさせ、それは下位レベルのキャッシュ・ディレクトリにおけるコヒーレンシ状態情報の更新も含む。
従来は、キャッシュ・コヒーレンシ・プロトコルは、一般に、キャッシュ・コヒーレンシを維持するために、上位レベルのキャッシュからのキャッシュ・ラインの排出時に、上位レベルのキャッシュからのコヒーレンシ状態が下位レベルのキャッシュにコピーされるものと仮定していた。本発明はキャストアウトが行われるときおよび他のデータ処理シナリオのために、キャッシュ階層におけるコヒーレンシ状態とコヒーレンシ状態遷移とを適切に定義することによって、データ処理システムに対するパフォーマンスの強化を達成することが可能であると認識するものである。
本発明の目的は、マルチプロセッサ・データ処理システムにおいてコヒーレンシ管理を行うための改良された処理ユニット、データ処理システム、および方法を提供することにある。
本発明の一実施例によれば、データ処理システムは、少なくとも第1コヒーレンシ・ドメインおよび第2コヒーレンシ・ドメインを含み、第1コヒーレンシ・ドメインはシステム・メモリおよびキャッシュ・メモリを含む。本発明のデータを処理する方法は、キャッシュ・メモリのデータ・アレイにキャッシュ・ラインをバッファするステップと、キャッシュ・ラインがデータ・アレイにおいて有効であること、キャッシュ・ラインがキャッシュ・メモリに非排他的に保持されること、および第2コヒーレンシ・ドメインにおける別のキャッシュがそのキャッシュ・ラインのコピーを保持し得ること、を表すためにキャッシュ・メモリのキャッシュ・ディレクトリにおける状態フィールドをコヒーレンシ状態にセットするステップと、を有する。
本発明のすべての目的、特徴、および利点が以下の詳細な説明において明らかになるであろう。
I.例示的アーキテクチャの概要
図面全体を通して、同じ参照番号は同じ部分または対応する部分を指す。図1を参照すると、本発明を実装し得る例示的なデータ処理システムを表す高レベルのブロック図が示される。データ処理システムは、キャッシュ・コヒーレントな対称マルチプロセッサ(SMP)・データ処理システム100として示される。図示のように、データ処理システム100は、データおよび命令を処理するための複数の処理ノード102a、102bを含む。処理ノード102は、アドレス、データ、および制御情報を通信するためのシステム相互接続網110に接続される。システム相互接続網110は、例えば、バス型の相互接続網、交換型の相互接続網、またはハイブリッド相互接続網として実装することが可能である。
図示の実施例では、各処理ノード102は、4つの処理ユニット104a〜104dを含むマルチチップ・モジュール(MCM)として実装される。各処理ユニットは、それぞれの集積回路として実装されることが望ましい。各処理ノード102における処理ユニット104は、ローカル相互接続網114によって相互におよびシステム相互接続網110に通信を行うために接続される。ローカル相互接続網114は、システム相互接続網110のように、例えば、1つまたは複数のバスまたはスイッチを用いて実装することも可能である。
図2に示されるように、各処理ユニット104は、それぞれのシステム・メモリ108に接続された統合メモリ・コントローラ(IMC)206を含む。システム・メモリ108に存在するデータおよび命令は、一般に、データ処理システム100内の任意の処理ノード102の任意の処理ユニット104におけるプロセッサ・コアがアクセスおよび修正することも可能である。本発明の別の実施例では、1つまたは複数のメモリ・コントローラ206(およびシステム・メモリ108)をシステム相互接続網110またはローカル相互接続網114に接続することも可能である。
図1のSMPデータ処理システム100が、相互接続ブリッジ、不揮発性記憶装置、ネットワークまたは付属装置等への接続のためのポート、のような多くの追加の図示されてないコンポーネントを含み得るということは当業者には明らかであろう。そのような追加のコンポーネントは、本発明の理解にとっては必要のないものなので図1には示されず、これ以上説明されない。しかし、本発明によって提供される機能強化が様々なアーキテクチャのキャッシュ・コヒーレントなデータ処理システムに適用可能であって、図1に示された汎用データ処理システム・アーキテクチャにまったく限定されないということは当然である。
図2を参照すると、本発明に従っ例示的な処理ユニット104の更に詳細なブロック図が示される。図示の実施例では、単一の集積回路として都合よく実装し得る各処理ユニット104は、互いに独立して命令およびデータを処理するための4つのプロセッサ・コア200a〜200dを含む。1つの好適な実施例では、各プロセッサ・コア200は、複数(例えば、2つ)の同時的なハードウェア・スレッドの実行を支援する。
各プロセッサ・コア200のオペレーションはマルチ・レベルの揮発性メモリ・サブシステムによって支援され、そのメモリ・サブシステムは、共用システム・メモリ108を最低レベルで有し、キャッシュ可能なアドレス内に存在するデータおよび命令をキャッシュするための2つまたはそれ以上のレベルのキャッシュ・メモリを上位レベルで有する。図示の実施例では、キャッシュ・メモリ階層は、各プロセッサ・コア200内にあってそのプロセッサ・コア専用のそれぞれのストア・スルー・レベル1(L1)キャッシュ(図示されてない)、各プロセッサ・コア200に専用のそれぞれのストア・イン・レベル2(L2)キャッシュ230、およびL2キャストアウト(castout)をバッファするためのL3ビクティム(victim)・キャッシュ232を含む。図示の実施例では、プロセッサ・コア200aおよび200dがそれぞれのL3キャッシュ232aを共用し、プロセッサ・コア200bおよび200cがL3キャッシュ232bを共用する。もちろん、別の実施例では、プロセッサ・コア200の各々がそれ自身のL3キャッシュ232を有することも可能である。図2に示されたものを含む少なくともいくつかの実施例では、L3キャッシュ232a、232bがデータ交換を可能にするために更に相互に接続される。このデータ交換は、プロセッサ・コア200によってアクセスされそうなデータを処理ユニット104のキャッシュ階層内にできるだけ長い期間保存するために、一方のL3キャッシュ232がそれのキャッシュ・ラインの1つを他方のL3キャッシュ232にキャストアウトすることを可能にすることを含む。
各処理ユニット104は応答ロジック210のインスタンスを含み、その応答ロジックは、データ処理システム100内のキャッシュ・コヒーレンシを維持する分散型のコヒーレンシ信号機構の一部を実装する。更に、各処理ユニット104は、処理ユニット104と、ローカル相互接続網114およびシステム相互接続網110との間の通信を管理するための相互接続ロジック212のインスタンスを含む。L2キャッシュ230およびL3キャッシュ232の各々は、図1の相互接続網110および114を介したデータおよびコヒーレンシ通信における参加を可能にするために相互接続ロジック212に接続される。最後に、各処理ユニット104は、I/O装置216のような1つまたは複数のI/O装置の接続を支援する統合I/Oコントローラ214を含む。I/Oコントローラ214は、I/O装置216による要求に応答してローカル相互接続網114および/またはシステム相互接続網110上のオペレーションを発行させることが可能である。
次に図3を参照すると、図2の処理ユニット104におけるプロセッサ・コア200およびL2キャッシュ230の更に詳細なブロック図が示される。図示のように、プロセッサ・コア200は、実行のために命令をフェッチして順序付けるための命令シーケンス・ユニット(ISU)300、命令を実行するための1つまたは複数の実行ユニット302、およびL1キャッシュ306を含む。
実行ユニット302は、データをメモリからロードさせるためにおよびメモリにストアさせるためにメモリ・アクセス命令(例えば、ロードおよびストア命令)を実行するロード・ストア・ユニット(LSU)304を含む。メモリ・サブシステムによるコヒーレンシ・プロトコルの実を通してそのようなメモリ・アクセス・オペレーションを行うとき、メモリ内容のコヒーレントなビューが維持される。
本発明によれば、分離したL1データおよび命令キャッシュを含み得るL1キャッシュ306は、他のプロセッサ・コア200に関するキャッシュ・コヒーレンシのポイントがL1キャッシュ306の下に置かれ、図示の実施例では、L2キャッシュ230に置かれるということを意味するストア・スルー・キャッシュとして実装される。従って、L1キャッシュ306は、それのキャッシュ・ラインに関して真のキャッシュ・コヒーレンシ状態を維持するのではなく、有効/無効ビットを維持するだけである。
L2キャッシュ230は、命令およびデータのキャッシュ・ラインをストアするデータ・アレイ310、およびデータ・アレイ310のキャッシュ・ディレクトリ312を含む。通常のセット・アソシアティブ・キャッシュにおけるように、システム・メモリ108におけるメモリ・ブロックは、システム・メモリ(実)アドレス内の所定のインデックス・ビットを利用してデータ・アレイ310内の特定の合同クラスにマップされる。一実施例では、コヒーレンシ・システムに対する標準のメモリ・ブロックは128バイトのキャッシュ・ラインにセットされる。データ・アレイ310内にストアされた特定のメモリ・ブロックまたはキャッシュ・ラインがキャッシュ・ディレクトリ312に記録される。なお、キャッシュ・ディレクトリ312は、データ・アレイ310における各キャッシュ・ラインに対して1つのディレクトリ・エントリを含む。当業者には明らかであるように、キャッシュ・ディレクトリ312における各ディレクトリ・エントリは、少なくとも、対応する実アドレスの一部分を利用してデータ・アレイ310にストアされた特定のキャッシュ・ラインを指定するタグ・フィールド314、キャッシュ・ラインのコヒーレンシ状態を表す状態フィールド316、および同じ合同クラスにおける他のキャッシュ・ラインに関してそのキャッシュ・ラインに対する置換順序を表すLRU(最低使用頻度)フィールド318を含む。
更に図3に示されるように、L2キャッシュ230は、L2キャッシュ230のデータおよびコヒーレンシ・オペレーションを制御するキャッシュ・コントローラ330も含む。キャッシュ・コントローラ330は、関連するプロセッサ・コア200から受けたロード(LD)要求およびストア(ST)要求を独立して且つ同時にサービスするための複数の読取り・クレーム(Read-Claim : RC)・マシン332、並びに、関連するプロセッサ・コア200以外のプロセッサ・コアによって発され且つローカル相互接続網114から「スヌープされた」リモート・メモリ・アクセス要求を独立して且つ同時にサービスするための複数のスヌープ(SN)・マシン334を含む。明らかなように、RCマシン332によるメモリ・アクセス要求のサービスは、データ・アレイ310内のメモリ・ブロックの置換または無効化を必要とすることがある。従って、キャッシュ・コントローラ330は、データ・アレイ310からのメモリ・ブロックの除去または書き戻しを管理する複数のCO(キャストアウト)マシン336も含む。
次に図4を参照すると、本発明に従っL3キャッシュの実施例の更に詳細なブロック図が示される。図3および図4を比較するとわかるように、L2キャストアウトをバッファするためのビクティム・キャッシュとして働くL3キャッシュ232は、図3のL2キャッシュ230と同様に構成される。従って、L3キャッシュ232は、セット・アソシアティブ・データ・アレイ360、データ・アレイ360の内容のキャッシュ・ディレクトリ362、およびキャッシュ・コントローラ380を含む。
キャッシュ・ディレクトリ362における各ディレクトリ・エントリは、対応する実アドレスの一部分を利用してデータ・アレイ360にストアされた特定のキャッシュ・ラインを指定するタグ・フィールド364、キャッシュ・ラインのコヒーレンシ状態を表す状態フィールド366、および同じ合同クラスにおける他のキャッシュ・ラインに関してそのキャッシュ・ラインに対する置換順序を表すLRU(最小使用頻度)フィールド368を含む。キャッシュ・コントローラ380は、図3を参照して説明したように、複数のスヌープ(SN)・マシン384および複数のキャストアウト(CO)・マシン386を含む。RCマシンの代わりに、キャッシュ・コントローラ380は、垂直方向に接続されたL2キャッシュ230のデータ要求をサービスする複数の読取り(RD)マシン382を含む。
II.例示的オペレーション
次に図5を参照すると、図1のデータ処理システム100のローカル相互接続網114またはシステム相互接続網110を介した例示的オペレーションの時空線図が示される。相互接続網110、114は必ずしもバス型の相互接続網ではないが、1つまたは複数のローカル相互接続網114および/またはシステム相互接続網110を介して伝送されるオペレーションは本明細書では「バス・オペレーション」と呼ばれ、プロセッサ・コア200とそれ自身のキャッシュ階層内にあるキャッシュ・メモリとの間で伝送されるCPU要求とは区別される。
図示のバス・オペレーションは、L2キャッシュ230のRCマシン332またはI/Oコントローラ214のようなマスタ(M)400がローカル相互接続網114および/またはシステム相互接続網110を介して要求402を発するときに開始する。要求402は、所望のアクセスのタイプを表すトランザクション・タイプおよびその要求によってアクセスすべきリソースを表すリソース識別子(例えば、実アドレス)を含むことが望ましい。要求の一般的なタイプは、下記の表1に示されるものを含むことが望ましい。
Figure 0005116418
要求402は、L2キャッシュ230のスヌープ・マシン334、L3キャッシュ232のスヌープ・マシン384のようなスヌーパ412、およびメモリ・コントローラ206(図2)によって受取られる。一般に、若干の例外はあるものの、要求402を発行したRCマシン332と同じL2キャッシュ230におけるスヌープ・マシン334および接続されたL3キャッシュ232のスヌープ・マシン384は、要求402をスヌープしない(即ち、一般に、自己スヌーピングは存在しない)。というのは、要求402は、それが処理ユニット104によって内部的にサービスされ得ない場合にだけローカル相互接続網114および/またはシステム相互接続網110を介して伝送されるからである。要求402を受取る各スヌーパ412は、少なくとも要求402に対するそのスヌーパの応答を表すそれぞれの部分的応答406を供給し得る。メモリ・コントローラ206は、例えば、そのメモリ・コントローラ206が要求アドレスに対して責任を負うのかどうか、およびそれが要求のサービスのために使用可能なリソースを有するかどうかに基づいて供給すべき部分的応答406を決定する。L2またはL3キャッシュは、例えば、L2キャッシュ・ディレクトリの使用可能性、要求を処理すべきスヌープ・マシンの使用可能性、およびキャッシュ・ディレクトリにおける要求アドレスと関連するコヒーレンシ状態に基づいてその部分的応答406を決定することが可能である。
スヌーパ412の部分的応答が、1つまたは複数の応答ロジック210のインスタンスによって段階的にまたは同時に論理的に結合され、要求402に対するシステム・ワイドの結合応答(CR)410を決定する。後述の範囲制限(scope restriction)次第で、応答ロジック210は結合応答410を、ローカル相互接続網114および/またはシステム相互接続網110を介してバス・オペレーションのマスタおよびスヌーパに与えて要求402に対するシステム・ワイドの応答(例えば、成功、失敗、再試行等)を表示させる。もし、CR410が要求402の成功を表すのであれば、CR410は、例えば、要求されたメモリ・ブロックのデータ・ソース、その要求されたメモリ・ブロックがキャッシュされるべきキャッシュ状態、および1つまたは複数のL2キャッシュ230またはL3キャッシュ232におけるその要求されたメモリ・ブロックを無効にする「クリーンアップ」オペレーションが必要であるかどうかを表すことも可能である。
典型的には、結合応答410を受取ったことに応答して、1つまたは複数のマスタ400およびスヌーパ412は、要求402をサービスするために1つまたは複数のオペレーション実行する。これらのオペレーションは、データをマスタ400に供給すること、1つまたは複数のL2キャッシュまたはL3キャッシュにおいてキャッシュされたデータのコヒーレンシ状態を無効にするかまたは更新すること、キャストアウト・オペレーションを遂行すること、データをシステム・メモリ108に書き戻すこと等を含み得る。もし、要求402によって必要とされるのであれば、要求されたメモリ・ブロックまたはターゲット・メモリ・ブロックは、応答ロジック210による結合応答410の発生の前または後にマスタ400にまたはマスタ400から伝送され得る。
以下の記述では、要求に対するスヌーパ412の部分的応答並びにその要求および/またはその結合応答に応答してスヌーパによって行われるオペレーションを、スヌーパが、要求によって指定された要求アドレスに関し、「コヒーレンシの最高ポイント(Highest Point of Coherency : HPC)」であるか、「コヒーレンシの最低ポイント(Lowest Point of Coherency : LPC)」であるか、またはそのいずれでもないかに関連して、説明することにする。LPCは、本明細書では、メモリ・ブロックに対するリポジトリとして作用するメモリ装置またはI/O装置として定義される。メモリ・ブロックに対するHPCが存在しない場合、LPCは、そのメモリ・ブロックの真のイメージを保持し、そのメモリ・ブロックの追加のキャッシュされたコピーを発生するための要求を許または拒否する権限を有する。図1および図2のデータ処理システムの実施例における一般的な要求に関して、LPCは、参照メモリ・ブロックを保持するシステム・メモリ108のためのメモリ・コントローラ206であろう。HPCは、本明細書では、メモリ・ブロックの真のイメージ(LPCにおける対応するメモリ・ブロックと整合していてもよく或いは整合していなくてもよい)をキャッシュし且つメモリ・ブロックを修正するための要求を許または拒否する権限を有する一意的に識別された装置として定義される。記述的には、HPCは、メモリ・ブロックを修正しないオペレーションに応答して要求元にメモリ・ブロックのコピーを供給することも可能である。従って、図1および図2のデータ処理システムの実施例における一般的な要求に対してHPCは、存在するとすれば、L2キャッシュ230であろう。メモリ・ブロックに対するHPCを指定するために他の標識を利用することも可能であるが、本発明の好適な実施例は、下記の表2を参照し後述するように、L2キャッシュ230のL2キャッシュ・ディレクトリ312またはL3キャッシュ232のL3キャッシュ・ディレクトリ362における選択されたキャッシュ・コヒーレンシ状態を利用してメモリ・ブロックに対するHPCを、それが存在する場合、指定する。
図5を更に参照すると、要求402において参照されたメモリ・ブロックに対するHPCが存在する場合にはそのHPCが、またはHPCの不存在の場合にはそのメモリ・ブロックのLPCが、保護ウィンドウ404aの期間中に要求402に応答してメモリ・ブロックの所有権の移動を防止する責任を有することが望ましい。図5に示された例示的なシナリオでは、要求402の要求アドレスによって指定されたメモリ・ブロックに対するHPCであるスヌーパ412は、スヌーパ412がその部分的応答406を決定する時間からスヌーパ412が結合応答410を受取るまで延びている保護ウィンドウ404aの期間中に、マスタ400へのその要求されたメモリ・ブロックの所有権の移転を防止する。保護ウィンドウ404aの期間中、スヌーパ412は、同じ要求アドレスを指定する他の要求に対する部分的応答を供給することによって所有権の移転を防止する。なお、その部分的応答は、所有権がマスタ400に成功裏に移転してしまうまで他のマスタが所有権を得ることを防止する。マスタ400は、同様に、結合応答410の受け取りに続いて要求402において要求されたメモリ・ブロックの所有権を保護するために、保護ウィンドウ404bを開始する。
III.データ配信ドメイン
通常のブロードキャスト・ベースのデータ処理システムは、ブロードキャスト通信を通してキャッシュ・コヒーレンシおよびデータ配の両方を処理する。ブロードキャスト通信は、通常のシステムでは、システム相互接続網を通して少なくともそのシステムにおけるすべてのメモリ・コントローラおよびキャッシュ階層に伝送される。別のアーキテクチャおよび同様の規模のシステムと比べると、ブロードキャスト・ベースのシステムは少ないアクセス待ち時間、並びに、共用メモリ・ブロックの良好なデータ処理およびコヒーレンシ管理の提供に有用である。
ブロードキャスト・ベースのシステムは大きさが増大するので、システム相互接続網におけるトラフィック量は増加し、それは、システム相互接続網を介した通信のために更なる帯域幅を必要とするので、システムのコストがシステムの規模と共に急激に上昇することを意味する。即ち、m個のプロセッサ・コアを有し、各プロセッサ・コアの平均トラフィック量がn個のトランザクションであるシステムは、m*nのトラフィック量を有することになり、それは、ブロードキャスト・ベースのシステムにおけるトラフィック量が加算的ではなく乗算的に増加することを意味する。かなり大きな相互接続網の帯域幅を必要とするほかに、システム・サイズの増加は、アクセス待ち時間の増加という二次的効果を有する。例えば、データ読取りのアクセス待ち時間は、最悪の場合、要求されたメモリ・ブロックを共用コヒーレンシ状態(この状態から要求されたデータが配信され得る)で保持する最も遠い低レベル・キャッシュの結合応答待ち時間によって制限される。
ブロードキャスト・ベースのシステムの利点を保持しながら、システム相互接続網の帯域幅要件およびアクセス待ち時間を少なくするために、データ処理システム100全体にわたって分散した複数のL2キャッシュは、「特別」共用コヒーレンシ状態で同じメモリ・ブロックのコピーを保持することを許容される。このようにすると、これらのキャッシュ、キャッシュ間のデータ介入(cache-to-cache data intervention)を使って要求元のL2キャッシュ230にメモリ・ブロックを供給すること可能になる。データ処理システム100のようなSMPデータ処理システムにおいて、共用メモリ・ブロックに対する複数の並行で且つ分散されたソースを実装するためには、2つの問題点が扱われなければならない。第1に、述の「特別」共用コヒーレンシ状態におけるメモリ・ブロックのコピーの作成を管理するルールが実されなければならない。第2に、スヌーピングL2キャッシュ230が存在する場合、どのスヌーピングL2キャッシュが、例えば、バス読取りオペレーションまたはバスRWITMオペレーションに応答して、共用メモリ・ブロックを要求元のL2キャッシュ230に供給するのかを管理するルールがなければならない。
本明細書では、これらの問題点がいずれもデータ配信(sourcing)ドメインの実装を通して扱われる。詳しく云えば、SMPデータ処理システム内の各ドメイン(なお、ドメインは、データ要求に対する応答に参加する1つまたは複数の下位レベルの(例えば、L2またはL3)キャッシュを含むように定義される)、特定のメモリ・ブロックを「特別」共用コヒーレンシ状態で保持する唯一のキャッシュを含むことを許される。そのキャッシュが存在する場合、そのキャッシュは、バス読取りタイプ(例えば、READまたはRWITM)オペレーションが同じドメインにおける要求元のキャッシュによって開始されるとき、要求元のキャッシュに対してその要求されたメモリ・ブロックを配信する責任を負う。多くの異なるドメイン・サイズを定義することが可能であるが、図1のデータ処理システム100において、各処理ノード102(即ち、MCM)データ配信ドメインと見なすと、好都合である。表2を参照して、そのような「特別」共用コヒーレンシ状態(例えば、Sl およびSlg)の例を後述する。
IV.コヒーレンシ・ドメイン
述のデータ配ドメインの実データ・アクセス待ち時間を改良するが、この機能強化は、システムの規模が増大すると、m*nの乗算的なトラフィック量に対処しない。ブロードキャスト・ベースのコヒーレンシ機構を維持しながらトラフィック量を減らすために、本発明の好適な実施例は、前述のデータ配ドメインのように、別々のコヒーレンシ・ドメインを形成する各処理ノード102によって複数のコヒーレンシ・ドメインを都合よく(しかし必要なことではないが)追加的にすることが可能である。データ配ドメインおよびコヒーレンシ・ドメインは、共存することが可能であるが、必ずしもそうである必要はない。データ処理システム100の例示的オペレーションを説明する便宜上、以下では、これらのコヒーレンシ・ドメインが、処理ノード102によって定義された境界を有するものと仮定する。
コヒーレンシ・ドメインの実は、すべてのコヒーレンシ・ドメインよりも少ないコヒーレンシ・ドメインによる参加によって要求がサービスされる場合、システム相互接続網110を介したドメイン間のブロードキャスト通信を制限することによってシステム・トラフィックを減少させる。例えば、処理ノード102aの処理ユニット104aが発すべきバス読取りオペレーションを有するのであれば、処理ユニット104aは、最初に、他のコヒーレンシ・ドメイン(例えば、処理ノード102b)における参加者を除く、それ自身のコヒーレンシ・ドメイン(例えば、処理ノード102a)内の参加者全部に対し、バス読取りオペレーションをブロードキャストすることを選択し得る。オペレーションのマスタと同じコヒーレンシ・ドメイン内の参加者のみに伝送されるブロードキャスト・オペレーションは、本明細書では、「ローカル・オペレーション」として定義される。もし、ローカル・バス読取りオペレーションが処理ユニット104aのコヒーレンシ・ドメイン内でサービスされ得るならば、バス読取りオペレーションの更なるブロードキャストは行われない。しかし、ローカル・バス読取りオペレーションが処理ノード102aのコヒーレンシ・ドメイン内で単独ではサービスされ得ないということを、そのローカル・バス読取りオペレーションに対する部分的応答および結合応答が表すならば、ローカル・コヒーレンシ・ドメインに加えて、1つまたは複数の追加のコヒーレンシ・ドメインを含むようにブロードキャストの範囲を拡張することも可能である。
基本的な実装では、2つのブロードキャスト範囲、即ち、ローカル・コヒーレンシ・ドメインのみを含む「ローカル」範囲およびSMPデータ処理システムにおける他のすべてのコヒーレンシ・ドメインを含む「グローバル」範囲、が使用される。従って、本明細書では、SMPデータ処理システムにおけるすべてのコヒーレンシ・ドメインに伝送されるオペレーションは「グローバル・オペレーション」として定義される。重要な点として、ローカル・オペレーションまたはそれよりも更に拡張的な範囲のオペレーション(例えば、グローバル・オペレーション)がオペレーションのサービスのために使用されるかどうかに関係なく、キャッシュ・コヒーレンシはSMPデータ処理システムにおけるすべてのコヒーレンシ・ドメインにわたって維持される。ローカル・オペレーションおよびグローバル・オペレーションの例は、米国特許出願番号11/055,697号の明細書に詳細に説明されている。
好適な実施例では、オペレーションの範囲は、一実施例では、1ビット・フラッグから構成し得るローカル/グローバル範囲標識(信号)によりバス・オペレーションにおいて表される。処理ユニット104における相互接続ロジック212は、ローカル相互接続網114を介して受取られたオペレーションを、そのオペレーションにおけるローカル/グローバル範囲標識(信号)の設定に基づいてシステム相互接続網110上に転送すべきかどうかを決定することが望ましい。
V.ドメイン標識
不要なローカル・オペレーションの発を制限することによって、操作待ち時間を減少させ且つローカル相互接続網上の追加の帯域幅を浪費しないようにするために、本発明は、関連するメモリ・ブロックのコピーがローカル・コヒーレンシ・ドメインの外でキャッシュされるかどうかを表す、メモリ・ブロックごとのドメイン標識を実装することが望ましい。図6は、本発明に従ったドメイン標識の第1実例を示す。図6に示されるように、ダイナミック・ランダム・アクセス・メモリ(DRAM)において実装されるシステム・メモリ108は複数のメモリ・ブロック500をストアする。システム・メモリ108は、各メモリ・ブロック500と関連して、そのメモリ・ブロック500における可能なエラーを訂正するために利用されるエラー訂正コード(ECC)502およびドメイン標識504ストアする。本発明の或る実施例では、ドメイン標識504は特定のコヒーレンシ・ドメインを識別し(即ち、コヒーレンシ・ドメインまたはノードIDを指定し)得るが、以後の説明では、ドメイン標識504は、1ビットの標識であるものと仮定し、そして関連するメモリ・ブロック500がLPCとして作用するメモリ・コントローラ206と同じコヒーレンシ・ドメイン内にのみキャッシュされる場は、(例えば、「ローカル」を表すために「1」に)セットされるものと仮定する。さもなければ、ドメイン標識504は(例えば、「グローバル」を表すために「0」に)リセットされる。「ローカル」を表すようにドメイン標識504を設定することは、「グローバル」を誤って設定しても如何なるコヒーレンシ・エラーも生じさせないが、オペレーションの不要なグローバル・ブロードキャストを生じさせ得るという点で、不正確に実装され得る。
オペレーションに応答してメモリ・ブロックを配信するメモリ・コントローラ206は、要求されたブロックと共に関連するドメイン標識504を伝送することが望ましい。
VI.例示的コヒーレンシ・プロトコル
好適な実施例では、L2キャッシュ230およびL3キャッシュ232は、周知のMESIプロトコルの変形を使用する。コヒーレンシ状態の集合体は、
(1)キャッシュがメモリ・ブロックに対するHPCであるかどうかの表示、
を提供することに加えて、次のような3つの属性を表示する。
(2)キャッシュされたコピーがそのメモリ階層レベルにおけるキャッシュ間でユニークである(即ち、唯一のキャッシュされたコピーである)かどうかの表示、
(3)キャッシュがメモリ・ブロックのコピーを要求のマスタに提供し得るかどうか、およびいつそれを提供し得るかの表示、
(4)メモリ・ブロックのキャッシュされたイメージがLPCにおける対応するブロックと整合しているかどうかの表示。
これらの4つの属性は、下記の表2において要約されるコヒーレンシ・プロトコル状態において表される。
Figure 0005116418

Figure 0005116418

Figure 0005116418

Figure 0005116418
図1を参照して説明したデータ処理システム100の実施例において、ドメイン標識は、関連するメモリ・ブロックと共にL2/L3キャッシュ230、232によって受取られ、任意選択的に、そのメモリ・ブロックと共にデータ・アレイ310、360にストアされ得る。この構成はドメイン標識のための単純化されたデータ・フローを許容するが、第1のL2キャッシュ230が、要求されたメモリ・ブロックを供給することによって異なるコヒーレンシ・ドメインにある第2のL2キャッシュ230のRWITMオペレーションに応答するとき、如何なる「グローバル」標識も、ローカル・コヒーレンシ・ドメインにおいてキャッシュされていない。従ってメモリ・ブロックがローカルにのみキャッシュされていることが知られているかどうかを決定するために、LPCをアクセスしなければならない。その結果、もし、メモリ・ブロックに対するHPCがリモート・コヒーレンシ・ドメインにおける要求元からバスRWITMオペレーション(または、他のストレージ修正オペレーション)を受取るならば、システムは、要求されたメモリ・ブロックのキャッシュ・キャストアウトおよびバスRWITMオペレーションの再試行を含む再試行−プッシュ(retry-push)でもって応答する。明らかなように、再試行−プッシュ・オペレーションと関連する待ち時間および帯域幅利用を排除することが望ましい。
ドメイン標識に対するアクセス待ち時間を少なくするために、Ig(Invalid Global : 無効グローバル)、Sg(Shared Global:共用グローバル)および Slg(Shared Local Global : 共用ローカル・グローバル)コヒーレンシ状態が提供される。Ig状態は、本明細書では、次の3つの状態を表すキャッシュ・コヒーレンシ状態として定義される。
(1)キャッシュ・アレイにおける関連するメモリ・ブロックが無効である、
(2)キャッシュ・ディレクトリにおけるアドレス・タグが有効である、
(3)アドレス・タグにより識別されたメモリ・ブロックの修正コピーが、リモート・コヒーレンシ・ドメインにおけるキャッシュに対して配信された。
Sg状態は、本明細書では、次の4つの状態を表すキャッシュ・コヒーレンシ状態として定義される。
(1)キャッシュ・アレイにおける関連するメモリ・ブロックが有効である、
(2)キャッシュ・ディレクトリにおけるアドレス・タグが有効である、
(3)アドレス・タグにより識別されたメモリ・ブロックの修正コピーが、リモート・コヒーレンシ・ドメインにおけるキャッシュに対して配信された。
(4)メモリ・ブロックのコピーが他のキャッシュに保持されていたし、依然として当該他のキャッシュに保持されていることも可能である。
Slg状態は、本明細書では、次の5つの状態を表すキャッシュ・コヒーレンシ状態として同様に定義される。
(1)キャッシュ・アレイにおける関連するメモリ・ブロックが有効である、
(2)キャッシュ・ディレクトリにおけるアドレス・タグが有効である、
(3)アドレス・タグにより識別されたメモリ・ブロックの修正コピーが、リモート・コヒーレンシ・ドメインにおけるキャッシュに対して配信された。
(4)メモリ・ブロックのコピーが他のキャッシュに保持されていたし、依然として当該他のキャッシュに保持されていることも可能である。
(5)キャッシュは、キャッシュ間のデータ介入によって、メモリ・ブロックのコピーをそのコヒーレンシ・ドメインにおけるマスタに対して配信する権限を有する。
所与のメモリ・ブロックに対する Ig、Sg、および Slg を、そのメモリ・ブロックに対するLPCを含むコヒーレンシ・ドメイン内においてのみ、形成することが望ましいことがある。このような実施例では、或る機構(例えば、LPCによる部分的応答、およびその後の結合応答)は、要求されたメモリ・ブロックを配信するキャッシュに対し、LPCがそのローカル・コヒーレンシ・ドメイン内にあるということ表示するように実装されなければならない。LPCがローカルであるという表示の通信を支援しない他の実施例では、メモリ・ブロックがリモート・コヒーレンシ・ドメインに対して配信されるときに、Ig、Sg、およびSlg 状態が形成され、従って、Ig、Sg、および Slg が不正確に形成されることがある。
幾つかのルールがIg、Sg、および Slg(「Xg」と総称)キャッシュ・エントリの選択および置換を管理する。第1に、キャッシュが Xg エントリを置換のためのビクティムとして選択すれば、Xgエントリのキャストアウトが(I または S エントリが選択されるときの場合とは異なって)行われる。第2に、Xg 状態のキャストアウトは、ローカル・オペレーションとして行われることが望ましく、或いは、グローバル・オペレーションとして行われるのであれば、キャストアウト・アドレスのリモートLPGによって無視される。もし、Xgエントリが、メモリ・ブロックに対するLPCと同じコヒーレンシ・ドメイン内にないキャッシュにおいて形成することを許されるならば、LPCにおけるドメイン標識に対する更新は必要ない。第4に、Xg状態のキャストアウトは、ドメイン標識が(そのキャストアウト行うキャッシュにとってはローカルである場合)LPCに書き戻されるというデータレス・アドレス・オンリ・オペレーションとして行われることが望ましい。
Xg状態を含むキャッシュ・ディレクトリ・エントリは潜在的に有用な情報を保有しているので、少なくとも幾つかの実装では、例えば、置換のためのビクティム・キャッシュ・エントリを選択するようにLRUフィールド318、368を評価するために利用される最低使用頻度(LRU)アルゴリズムを修正することによって、同じベース状態(例えば、SまたはI)を有する他のエントリよりもXg状態にあるエントリを優先的に維持することが望ましい。Xg ディレクトリ・エントリはキャッシュ内に維持されるので、そのようなエントリは、時間とともに「失効」することがあり得る。というのは、排他的アクセス要求の結果としてXg 状態の形成を生じさせたキャッシュが、メモリ・ブロックのアドレス・タグをXg状態で保持するキャッシュに通知することなく、そのメモリ・ブロックのコピーを割当て解除しまたは書き戻し得るからである。そのようなケースでは、ローカル・オペレーションの代わりにグローバル・オペレーションが発されなければならないということを間違って表す「失効」したXg状態は如何なるコヒーレンシ・エラー生じさせないであろうが、そうでない場合にローカル・オペレーションを利用してサービスされ得る幾つかのオペレーションをグローバル・オペレーションとして発させるだけであろう。そのような非効率の発生は、「失効」のサブgキャッシュ・エントリの最終的な置換によって期間を制限されるであろう。
Xgコヒーレンシ状態の実は、(Ig のケースのように)コヒーレンシ・ドメインにおいてキャッシュされているメモリ・ブロックの有効コピーがないときでも、コヒーレンシ・ドメインにおけるメモリ・ブロックに対するキャッシュされたドメイン標識を維持することによって通信効率を改する。その結果、メモリ・ブロックに対するHPCは、リモート・コヒーレンシ・ドメインからの排他的アクセス要求(例えば、バスRWITMオペレーションまたはバスDClaimオペレーション)を再試行することなくおよびLPCへの要求されたメモリ・ブロックのプッシュを行うことなく、そのような要求をサービスすることができる。
VII.例示的L2/L3コヒーレンシ状態遷移
次に図7を参照すると、本発明の好適な実施例に従っL3キャッシュへのキャストインを行う例示的な方法の高レベルの論理的流れ図が示される。図7に示されたプロセスはL3キャッシュ・コントローラ380によるオペレーションを含む。プロセスはブロック600で開始し、次に、ブロック602に進み、そこで、L3キャッシュ232(例えば、L3キャッシュ232a)のL3キャッシュ・コントローラ380は、ソースのL2キャッシュ230からキャッシュ・ラインが排出され結果として、それが接続されているL2キャッシュ230の1つ(例えば、L2キャッシュ230a)からキャストアウト要求を受取る。キャストアウト要求はターゲット・アドレス、キャストイン・キャッシュ・ライン、およびキャストイン・キャッシュ・ラインのキャッシュ・ディレクトリ状態を含む。L3キャッシュ・コントローラ380は、キャストイン・キャッシュ・ラインがそのデータ・アレイ360に保存されるかどうかを決定し、そうであれば、状態フィールド366におけるそのキャッシュ・ラインに対する適切なコヒーレンシ状態を決定するための置換ポリシでもってプログラムされる。
次に、ブロック604において、キャッシュ・コントローラ380は、ターゲット・アドレスに対するディレクトリ・エントリが既に存在するかどうかを決定するために、L3キャッシュ・ディレクトリ362のタグ・フィールド364を読取る。もし、そのターゲット・アドレスがタグ・フィールド364において見つからなければ、プロセスはブロック605に進み、そこで、キャッシュ・コントローラ380、システム・メモリにキャストアウトされ得る置換のためのビクティム・キャッシュ・ラインを、そのビクティム・キャッシュのコヒーレンシ状態(例えば、Xg、M、T、またはTn)に従って、選択する。次に、プロセスはブロック606に進み、そこで、キャッシュ・コントローラ380は、ソースのL2キャッシュ230から受取ったキャストイン・キャッシュ・ラインをL3データ・アレイ360にストアし、キャッシュ・ディレクトリ362内に対応するキャッシュ・ディレクトリ・エントリを作成する。キャッシュ・コントローラ380は、キャストアウト要求において指定された状態に従ってディレクトリ・エントリのコヒーレンシ状態フィールド366をセットする。しかる後、プロセスはブロック608において終了する。
ブロック604に説明を戻す。もし、キャッシュ・コントローラ380が、キャストイン・キャッシュ・ラインのターゲット・アドレスに対するディレクトリ・エントリが既にL3キャッシュ・ディレクトリ362内に存在するということを決すれば、プロセスはブロック610に進み、そこで、キャッシュ・コントローラ380は、表3および図8を参照して後述するように、キャストイン・ポリシに従ってキャストアウト要求を参照することにより、データ・アレイ360およびキャッシュ・ディレクトリ362を更新する。本発明の好適な実施例において実されるように、キャストインは、次の2つの事項を指定する。即ち、
(1)キャストイン・キャッシュ・ラインがL3データ・アレイ360内にストアされるのか或いは廃棄されるのか、
(2)キャッシュ・ディレクトリ366における対応するエントリのコヒーレンシ状態。
好適な実施例では、キャッシュ・ディレクトリ362においてエントリを既に有しているキャッシュ・ラインに対してキャストインを行うとき、L3キャッシュ232によって実されるキャストイン・ポリシが下記の表3に要約される。表3は、L3キャッシュ・ディレクトリ362におけるキャッシュ・ラインの前の状態とキャストアウト要求において指定されたコヒーレンシ状態との関数として状態フィールド366におけるその結果のコヒーレンシ状態を識別する。
Figure 0005116418
このキャストイン・ポリシは、更に、L3データ・アレイ360内にストアされたメモリ・ブロックが維持されるべきかまたはソースのL2キャッシュ230から受けたキャストイン・キャッシュ・ラインによって上書きされるべきかを管理する。キャッシュ・ライン・データを上書きすべきかどうかの決定は、表3では下線付きの結果のコヒーレンシ状態によって示される。もし、結果のコヒーレンシ状態の遷移が下線付きであれば、キャストイン・キャッシュ・ラインは、前のキャッシュ・ライン・データに代わってL3キャッシュ・アレイ360にストアされる。もし、その結果のコヒーレンシ状態の遷移が下線付きでなければ、キャッシュ・アレイ360内のキャッシュ・ラインは維持され、状態フィールド366におけるコヒーレンシ状態が、表3において識別されるその結果のコヒーレンシ状態に更新される。
表3のSg またはSlg 行を詳細に参照すると、L3キャッシュ・ディレクトリ362におけるキャッシュ・ラインの現在の状態がIn、Ig、またはIコヒーレンシ状態のいずれかであり、キャストイン・コヒーレンシ状態がSgまたはSlg である場合、そのキャストイン・コヒーレンシ状態は、状態フィールド366を更新するために利用される。更に、表3における下線付きのエントリによって表されるように、キャッシュ・ラインはキャッシュ・アレイ360内キャストイン・データと置換される。もし、L3キャッシュ・ディレクトリ362におけるキャッシュ・ラインの現在の状態がSgであり、キャストイン・コヒーレンシ状態がSlg であれば、キャストイン・コヒーレンシ状態は、Slg における「l」が意味するように、キャッシュ間のデータ介入によりデータを配信するための機能が維持されるように、状態フィールド366を更新するために利用される。しかし、L3キャッシュ・ディレクトリ362におけるキャッシュ・ラインの現在の状態がSg状態であり、キャストイン・コヒーレンシ状態がSg であれば、L3キャッシュ232に対するコヒーレンシまたはデータ更新は行われない。同様に、L3キャッシュ・ディレクトリ362における現在の状態がSlgであり、キャストイン状態がSg またはSlg であれば、L3キャッシュ232に対するコヒーレンシ更新またはデータ更新は行われない。もし、L3キャッシュ・ディレクトリ362におけるキャッシュ・ラインの現在の状態がSまたはSlgであり、キャストイン・コヒーレンシ状態がSg またはSlg であれば、キャッシュ・コントローラ380は、ドメイン標識504が更新されるべきであるというキャッシュ表示を維持するために状態フィールド366をSからSgに、またはSl からSlg に更新する。キャッシュ・コントローラ380は、キャストインSlg コヒーレンシ状態を受取ったことに応答して、S状態からSlg 状態への同様のコヒーレンシ状態の更新を行う。更に表3に示されるように、L2およびL3キャッシュの両者、キャッシュ・ラインをSlx状態で含むことができず、それは、エラーが生じたことをSl-Slg ケースが表すということを意味する。もし、L3の現在の状態が、Tx およびMx 列に示されるようにTxまたはMx であれば、この情報は、L2からのキャストイン時にはいつもL3キャッシュ内に維持される。
に表3のSg およびSlg 列を参照すると、Tx コヒーレンシ状態のキャストインのケースでは、キャッシュ・コントローラ380は、データ・アレイ360へのデータ更新およびSgまたはSlg からTx へのコヒーレンシ状態の更新の両方を行う。キャッシュ・ディレクトリ362内に記録された前のコヒーレンシ状態がSlg である別のケースでは、キャストインを受けたことに応答してデータ更新またはコヒーレンシ状態の更新は行われない。キャッシュ・ディレクトリ362においてSgとマークされたキャッシュ・ラインに対して、キャッシュ・コントローラ380は、Sl またはSlg コヒーレンシ状態におけるキャストイン・キャッシュ・ラインに応答して、SgからSlg へのコヒーレンシ状態の更新を行うが、In、Ig、Sg、またはSコヒーレンシ状態におけるキャストイン・キャッシュ・ラインに対するデータの更新またはコヒーレンシ状態の更新を行わない。
次に図8を参照すると、本発明の好適な実施例に従っキャストアウト要求を受けたことに応答してL3キャッシュにおいてキャストイン・ポリシを実する例示的方法の高レベルの論理的流れ図が示される。プロセスは、例えば、図7のブロック604における肯定的な決定に応答して、ブロック700において開始し、しかる後、ブロック704に進み、そこで、L3キャッシュ・コントローラ380、ビクティム・キャッシュ・ラインの指定されたコヒーレンシ状態を決定するためにキャストアウト要求を調べる。更に、ブロック706において、L3キャッシュ・コントローラ380は、キャストイン・キャッシュ・ラインに対する存在するコヒーレンシ状態を決定するために、キャッシュ・ディレクトリ362における関連するエントリの状態フィールド366を読取る。次に、プロセスはブロック708に進み、そこで、L3キャッシュ・コントローラ380、表3に要約されたキャストイン・ポリシに従って、L3キャッシュ・ディレクトリ362における適切な結果のコヒーレンシ状態を決定する。この決定は、例えば、L3キャッシュ232内の不揮発性メモリにおける状態テーブルを参照することによって行うことが可能である。別の実施例では、L3キャッシュ・コントローラ380、ソフトウェアの実行を通してまたは集積回路により行われる計算を通して、ブロック708に示された決定を行うこと可能である。
次に、プロセスはブロック710に進み、そこで、キャッシュ・コントローラ380は、ブロック708で決定された結果のコヒーレンシ状態に基づいて、ビクティム・キャッシュ・ラインに対する既存のコヒーレンシ状態が更新されるかどうかを決定する。もし、現在の状態が更新されるべきものであれば、プロセスはブロック712に進み、そこで、キャッシュ・コントローラ380は、ブロック708で決定された結果のコヒーレンシ状態でもってキャッシュディレクトリ362におけるコヒーレンシ状態を上書きする。プロセスは、ブロック712から、またはコヒーレンシ状態に対する更新が行われるべきでない場合にはブロック710から、判断ブロック714に進み、そこで、キャッシュ・コントローラ380は、L2キャッシュ230から受取ったキャストイン・キャッシュ・ラインがL3データ・アレイ360にストアされるべきであるということをキャストイン・ポリシが表すかどうかを決定する。そうであれば、プロセスはブロック716に進み、そこで、キャッシュ・コントローラ380は、キャストイン・キャッシュ・ラインをL3データ・アレイ360にストアすることによって、キャストイン・ターゲット・アドレスに対する前にストアされたキャッシュ・ラインを上書きする。ブロック716に続いて、またはデータ更新が行われるべきでない場合にはブロック714に続いて、プロセスはブロック718において終了する。
表3並びに図7および図8を参照し説明したように、本発明に従ったSg およびSlg コヒーレンシ状態の実装は、L3キャストイン・オペレーションが行われる態様に影響を与えることに加えて、L2キャッシュによってL2コヒーレンシ状態で保持されたキャッシュ・ラインに関してヒットするCPU読取り要求またはCPU更新要求の受け取りに応答して、L2キャッシュ230のような上位レベルのキャッシュによって行われるオペレーションを単純化する。そのような動作シナリオ(図10に示される)に応じた、L2キャッシュ230における処理の例示的方法の理解を容易にするために、先ず、図9を参照し、L2キャッシュにおける従来の処理方法を説明することにする。
図9を参照すると、Ig コヒーレンシ状態でL2キャッシュに保持されたキャッシュ・ラインにおいてヒットするCPU読取り要求を受取ったことに応答して、従来のL2キャッシュにより行われるオペレーションを表すタイミング図が示される。図示のように、プロセスは、従来のL2キャッシュがその関連するプロセッサ・コアからCPU読取り要求を受取るときに開始する。CPU読取り要求を受取ったことに応答して、L2キャッシュは、参照番号802で示されるように、その要求をサービスするようにRCマシンを割り当て、参照番号804で示されるように、それのキャッシュ・ディレクトリのディレクトリ読取りを開始する。
キャッシュ・ディレクトリに記録されたコヒーレンシ状態がIg であるという決定に応答して、従来のL2キャッシュは、コヒーレンシ状態が維持されるようシステム・メモリにおけるドメイン標識を「グローバル」状態に更新するために、参照番号806で示されるようにCOマシンを割り当てる。RCおよびCOマシンのオペレーションの完了は非同期的であり、それは、これらのオペレーションが任意の順序で完了し得ることを意味する。もし、RCマシンが時間t0にそのオペレーションを完了し、COマシンが時間t1にそのオペレーションを完了すれば、コヒーレンシ解決ウィンドウ810が形成される。時間t0までに、RCマシンは、新たに獲得されたキャッシュ・ラインの状態を反映するようにディレクトリを(例えば、「共用」に)更新しているが、COマシンは、時間t1までキャストアウトに関して依然としてアクティブに作業を行っている
通常、相互接続網を介してスヌープされたオペレーションに対する部分的応答を決定するとき、L2キャッシュにおいてアクティブマシンにより反映されたコヒーレンシ状態だけが考察される。しかし、COマシンにより処理中のものと同じキャッシュ・ラインをターゲットとするコヒーレンシ解決ウィンドウ期間中にスヌープされたオペレーションにとって、このポリシは不十分である。そのため、ディレクトリ状態およびアクティブキャッシュアウト・マシンによって反映されたコヒーレンシ状態の両方とも、そのスヌープされたオペレーションに与えられるべき部分的応答を決定する場合に考慮されなければならない。そのように行うことができないと、要求元のL2キャッシュにおいて不正確なコヒーレンシ状態が形成され得ることになり、ひいてはコヒーレンシの喪失につながることにある。従って、コヒーレンシ解決ウィンドウ800の期間中にCOマシンによる処理中のものと同じキャッシュ・ラインに対するスヌープを処理するために、特別のコヒーレンシ解決ロジックがL2キャッシュ内に実装されなければならない。
L2キャッシュの設計、特に、図9に示された動作シナリオの下でのそのコヒーレンシ処理は、本発明に従っSl およびSlg コヒーレンシ状態の実装によって簡易化される。次に、図10を参照すると、本発明に従っL2キャッシュ230のような上位レベルのキャッシュにおけるコヒーレンシ処理の例示的方法の高レベルの論理的フローチャートが示される。図示のように、プロセスはブロック900で開始し、しかる後、ブロック902に進み、そこで、L2キャッシュ230は、その関連するプロセッサ・コア200からのCPU読取り要求またはCPU更新要求を受け取る。一般に要求のタイプを識別するトランザクション・タイプ(TTYPE)およびターゲット・アドレスを含むCPU要求を受取ったことに応答して、ブロック904において、L2キャッシュ230のL2キャッシュ・コントローラ330は、ターゲット・アドレスに関してそのコヒーレンシ状態を決定するためにターゲット・アドレスを利用してそのキャッシュ・ディレクトリ312をアクセスし、CPU要求をサービスするためにRCマシン332をディスパッチする。ブロック906に示されるように、コヒーレンシ状態がIgであることをキャッシュ・コントローラ330が決定すれば、キャッシュ・コントローラ330は、ブロック920およびそれに続くブロックに示されるようにCPU要求をサービスする。もし、コヒーレンシ状態がIgとは異なるものであれば、キャッシュ・コントローラ330は、ブロック910に示された他の処理を利用してCPU要求をサービスする。
次にブロック920を参照すると、ディスパッチされたRCマシン332は、CPU要求のターゲット・メモリ・ブロックに対するコヒーレンシ状態がL2キャッシュ・ディレクトリ312においてIg であるという決定に応答して、TTYPEがCPU更新要求を表すかどうかを決定し、そうであれば、ブロック922において、ターゲット・メモリ・ブロックの排他的コピーを得るためにすべてのローカル相互接続網114およびグローバル相互接続網110上にグローバル範囲のバスRWITMオペレーションを発る。RCマシン332は、メモリ・ブロックの更新されたコピーがリモート・コヒーレンシ・ドメイン内にあるという、Igコヒーレンシ状態により供給された不正確な表示に基づいてグローバル・オペレーション範囲を選択する。RCマシン332は、ターゲット・メモリ・ブロックのコピーを受取ると、ブロック924に示されるように、そのターゲット・メモリ・ブロックをデータ・アレイ310内に配置し、L2キャッシュ・ディレクトリ312における対応するエントリのコヒーレンシ状態をIgからMに更新する。しかる後、RCマシン332は割当て解除され、プロセスはブロック940において終了する。
ブロック920を再び参照する。もし、RCマシン332が、CPU要求のTTYPEから、それがCPU読取り要求であるということを決すれば、プロセスはブロック930に進み、そこで、RCマシン332、ターゲット・メモリ・ブロックのコピーを得るためにグローバル範囲のバスREADオペレーションを発る。RCマシン332は、再び、そのメモリ・ブロックの更新されたコピーがリモート・コヒーレンシ・ドメインにあるというIg コヒーレンシ状態によって提供される不正確な表示に基づいてグローバル・オペレーション範囲を選択する。要求されたメモリ・ブロックを受取ったことに応答して、RCマシン332は、ブロック932に示されるように、データ・アレイ310にそのメモリ・ブロックを配置し、キャッシュ・ディレクトリ312における対応するエントリの状態フィールド316をIg状態からSlg またはMe 状態の一方に更新する。特に、RCマシン332は、メモリ・ブロックがメモリ・コントローラ206によって配信され且つ他のキャッシュがメモリ・ブロックのコピーを保持していない場合にはコヒーレンシ状態をMeに更新し、そうでない場合には、コヒーレンシ状態をSlg に更新する。しかる後、RCマシン332は割当て解除され、プロセスはブロック940において終了する。
明らかに、本発明に従っSg およびSlg コヒーレンシ状態の実装は、少なくとも次の2つの点でコヒーレンシ処理を簡単にする。第1に、Ig 状態によって表されたドメイン標識のグローバル状態のキャッシュされた表示は、SgまたはSlg コヒーレンシ状態のいずれかによってキャッシュ・ディレクトリにおいて維持されることが可能であるので、CPU読取り要求に対するIgヒットの場合にIg コヒーレンシ状態をキャストアウトするためにどのCOマシン336も割り当てられない。従って、L2キャッシュ・コントローラ330内の有限なリソースの利用率が減少する。第2に、そのようなケースにおいてキャストアウトを行うためどのCOマシン336も割り当てられないので、コヒーレンシ解決ウィンドウ800は形成されず、そのため、応答ロジック210は、スヌープされた要求に対する部分的応答の基礎となる適切なコヒーレンシ状態をキャッシュ・ディレクトリ312から直接的に決定することができる。その結果、応答ロジック210に実装されるロジックが単純化される。
述のように、本発明は、特定のメモリ・ブロックが複数のキャッシュに保持され得ることおよびそのメモリ・ブロックのコピーがキャッシュのローカル・コヒーレンシ・ドメインの外にあるという表示を行うために、Sg またはSlg のようなコヒーレンシ状態が利用される、データ処理のための改良された方法、装置、およびシステムを提供する。1つまたは複数のそのようなコヒーレンシ状態の実は、共用の低レベル(例えばL3)のキャッシュがメモリ・ブロックのIgコピーにおけるキャストアウト・ヒットの場合にそのメモリ・ブロックのコピーを維持することを許容するという点で有利である。更に、1つまたは複数のそのようなコヒーレンシ状態の実は、上位レベル(例えばL2)のキャッシュの設計を簡素化し、コヒーレンシ処理を率的にする。
好適な実施例を参照して本発明を詳細に開示および説明したが、本発明の真意および範囲から逸脱することなく、形態および細部における種々の変更を行い得ることは当業者には明らかであろう。
本発明に従ったキャッシュ・コヒーレントな対称マルチプロセッサ(SMP)データ処理システムの実施例の高レベル・ブロック図である。 本発明の好適な実施例に従った例示的な処理ユニットのブロック図である。 本発明の好適な実施例に従ったプロセッサ・コアおよびL2キャッシュの実施例の更に詳細なブロック図である。 本発明の好適な実施例に従ったL3キャッシュの実施例の更に詳細なブロック図である。 本発明の好適な実施例に従ったデータ処理システムのローカルまたはシステム相互接続網における例示的なオペレーションの時空間表示図である。 本発明の好適な実施例に従ったドメイン標識を含むシステム・メモリを示す概略図である。 本発明の好適な実施例に従ったL3キャッシュ・メモリへのキャストインを行う例示的な方法の高レベルの論理的流れ図である。 本発明の好適な実施例に従ったキャストインに応答してL3キャッシュ・メモリにおいてコヒーレンシ状態遷移方法を実する例示的な方法の高レベルの論理的流れ図である。 スヌープされた読取りタイプ・オペレーションに対する適切なコヒーレンシ応答を決定するためにキャッシュ・ディレクトリを調べなければならないコヒーレンシ解決ウィンドウを、Ig コヒーレンシ状態におけるキャストアウト・ヒットが作成する従来オペレーション・フローを示すタイミング図である。 本発明の好適な実施例に従ったL2キャッシュ・メモリによって実されるコヒーレンシ状態遷移方法の例示的方法の高レベルの論理的流れ図である。

Claims (8)

  1. 少なくとも第1コヒーレンシ・ドメインおよび第2コヒーレンシ・ドメインを含み、該第1コヒーレンシ・ドメインが少なくとも1つの処理ユニット、システム・メモリ、およびキャッシュ・メモリを含む、マルチプロセッサ・データ処理システムにおいて、データを処理する方法であって、
    前記キャッシュ・メモリのデータ・アレイにおいてキャッシュ・ラインをバッファするステップと、
    前記キャッシュ・ラインが前記データ・アレイにおいて有効であること、前記キャッシュ・ラインが前記キャッシュ・メモリに非排他的に且つ前記システム・メモリにおける対応するメモリ・ブロックに関し修正されずに保持されること、前記第2コヒーレンシ・ドメインにおける別のキャッシュが前記キャッシュ・ラインのコピーを保持し得ること、そして前記第2コヒーレンシ・ドメインを含まない前記キャッシュ・ラインについての第1コヒーレンシ通信範囲を表す第1状態および前記第2コヒーレンシ・ドメインを含む前記キャッシュ・ラインについての第2コヒーレンシ通信範囲を表す第2状態を有する、前記第1コヒーレンシ・ドメインにおける前記ドメイン標識が前記第2状態に更新されなければならないこと、表すために前記キャッシュ・メモリのキャッシュ・ディレクトリにおける状態フィールドをコヒーレンシ状態にセットするステップと、
    を有する、方法。
  2. 前記キャッシュ・メモリは、下位レベルのキャッシュ・メモリであり、
    前記データ処理システムは前記下位レベルのキャッシュ・メモリに接続された複数の上位レベルのキャッシュ・メモリを含み、
    前記コヒーレンシ状態は第1コヒーレンシ状態であり、
    前記セットするステップは、前記複数の上位レベルのキャッシュ・メモリの1つから前記データ・アレイへの前記キャッシュ・ラインのキャストインに応答して、前記キャッシュ・ラインが無効であることを表す第2コヒーレンシ状態から前記第1コヒーレンシ状態に前記状態フィールドを更新するステップを有する、
    請求項1に記載の方法。
  3. 前記キャッシュ・メモリは前記データ処理システムの相互接続網に接続され、
    前記コヒーレンシ状態は第1コヒーレンシ状態であり、
    前記キャッシュ・メモリ、前記相互接続網上前記キャッシュ・ラインについて要求を発するステップを更に有し、
    前記セットするステップは、前記要求に対する応答として前記キャッシュ・ラインを受取ったことに応答して、前記キャッシュ・ラインが無効であること、および前記第2コヒーレンシ・ドメインにおける別のキャッシュが前記キャッシュ・ラインのコピーを保持していること、を表す第2コヒーレンシ状態から、前記第1コヒーレンシ状態に前記状態フィールドを更新するステップを有する、
    請求項1に記載の方法。
  4. 前記キャッシュ・ラインを前記データ・アレイから排出するために選択するステップと、
    前記キャッシュ・ラインを前記データ・アレイから排出するために選択したことに応答して、前記第2コヒーレンシ・ドメインにおける別のキャッシュが前記キャッシュ・ラインのコピーを保持しているという表示のデータレス・キャストアウトを、前記キャッシュ・メモリが行うステップと、
    を更に有する、請求項1に記載の方法。
  5. 前記第2コヒーレンシ・ドメインにおける別のキャッシュが前記キャッシュ・ラインのコピーを保持しているという前記表示を受取ったことに応答して、前記システム・メモリのメモリ・コントローラが、前記キャッシュ・ラインについての前記ドメイン標識を更新するステップを更に含む、請求項4に記載の方法。
  6. 前記コヒーレンシ状態は、更に、前記キャッシュ・メモリが、キャッシュ間データ介入によって前記キャッシュ・ラインのコピーを配信するための前記第1コヒーレンシ・ドメインにおける権限を有するということを表す、請求項1に記載の方法。
  7. 少なくとも第1コヒーレンシ・ドメインおよび第2コヒーレンシ・ドメインを含むマルチプロセッサ・データ処理システムのための処理ユニットであって、該第1コヒーレンシ・ドメインはシステム・メモリおよび該処理ユニットを含み、
    プロセッサ・コアと、
    前記プロセッサ・コアに接続されたキャッシュ・メモリとを備え、
    前記キャッシュ・メモリは、
    キャッシュ・ラインを保持するデータ・アレイと、
    前記キャッシュ・ラインと関連付けられ且つ状態フィールドを含むエントリを保持するキャッシュ・ディレクトリと、
    キャッシュ・コントローラとを有し、
    前記キャッシュ・コントローラは、
    前記キャッシュ・ラインが前記データ・アレイにおいて有効であること、前記キャッシュ・ラインが前記キャッシュ・メモリに非排他的に且つ前記システム・メモリにおける対応するメモリ・ブロックに関し修正されずに保持されること、前記第2コヒーレンシ・ドメインにおける別のキャッシュが前記キャッシュ・ラインのコピーを保持し得ること、そして前記第2コヒーレンシ・ドメインを含まない前記キャッシュ・ラインについての第1コヒーレンシ通信範囲を表す第1状態および前記第2コヒーレンシ・ドメインを含む前記キャッシュ・ラインについての第2コヒーレンシ通信範囲を表す第2状態を有する、前記第1コヒーレンシ・ドメインにおける前記ドメイン標識が前記第2状態に更新されなければならないこと、表すために前記状態フィールドをコヒーレンシ状態にセットする、
    理ユニット。
  8. 相互に接続されたキャッシュ・コヒーレントな第1コヒーレンシ・ドメインおよび第2コヒーレンシ・ドメインを少なくとも備え、該第1コヒーレンシ・ドメインは第1処理ユニットおよびドメイン標識を含み、該第2コヒーレンシ・ドメインは第2処理ユニットを含み、システム・メモリが前記第1コヒーレンシ・ドメインおよび前記第2コヒーレンシ・ドメインの少なくとも1つに配置されている、データ処理システムであって、
    前記第1処理ユニット
    プロセッサ・コアと、
    前記プロセッサ・コアに接続されたキャッシュ・メモリとを備え、
    前記キャッシュ・メモリは、
    キャッシュ・ラインを保持するデータ・アレイと、
    前記キャッシュ・ラインと関連付けられ且つ状態フィールドを含むエントリを保持するキャッシュ・ディレクトリと、
    キャッシュ・コントローラとを有し、
    前記キャッシュ・コントローラは、
    前記キャッシュ・ラインが前記データ・アレイにおいて有効であること、前記キャッシュ・ラインが前記キャッシュ・メモリに非排他的に且つ前記システム・メモリにおける対応するメモリ・ブロックに関し修正されずに保持されること、前記第2コヒーレンシ・ドメインにおける別のキャッシュが前記キャッシュ・ラインのコピーを保持し得ること、そして前記第2コヒーレンシ・ドメインを含まない前記キャッシュ・ラインについての第1コヒーレンシ通信範囲を表す第1状態および前記第2コヒーレンシ・ドメインを含む前記キャッシュ・ラインについての第2コヒーレンシ通信範囲を表す第2状態を有する、前記第1コヒーレンシ・ドメインにおける前記ドメイン標識が前記第2状態に更新されなければならないこと、表すために前記状態フィールドをコヒーレンシ状態にセットする、
    データ処理システム。
JP2007247897A 2006-10-09 2007-09-25 マルチプロセッサ・データ処理システムにおいて、データを処理する方法、マルチプロセッサ・データ処理システムのための処理ユニット、およびデータ処理システム Expired - Fee Related JP5116418B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/539694 2006-10-09
US11/539,694 US8495308B2 (en) 2006-10-09 2006-10-09 Processor, data processing system and method supporting a shared global coherency state

Publications (2)

Publication Number Publication Date
JP2008097598A JP2008097598A (ja) 2008-04-24
JP5116418B2 true JP5116418B2 (ja) 2013-01-09

Family

ID=39275855

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007247897A Expired - Fee Related JP5116418B2 (ja) 2006-10-09 2007-09-25 マルチプロセッサ・データ処理システムにおいて、データを処理する方法、マルチプロセッサ・データ処理システムのための処理ユニット、およびデータ処理システム

Country Status (3)

Country Link
US (1) US8495308B2 (ja)
JP (1) JP5116418B2 (ja)
CN (1) CN101162442A (ja)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8244983B2 (en) * 2006-10-30 2012-08-14 Hewlett-Packard Development Company, L.P. Memory control systems with directory caches and methods for operation thereof
US8117401B2 (en) * 2008-02-01 2012-02-14 International Business Machines Corporation Interconnect operation indicating acceptability of partial data delivery
US8255635B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Claiming coherency ownership of a partial cache line of data
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
US8108619B2 (en) 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US8140771B2 (en) * 2008-02-01 2012-03-20 International Business Machines Corporation Partial cache line storage-modifying operation based upon a hint
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US8327072B2 (en) 2008-07-23 2012-12-04 International Business Machines Corporation Victim cache replacement
US8209489B2 (en) * 2008-10-22 2012-06-26 International Business Machines Corporation Victim cache prefetching
US8347037B2 (en) * 2008-10-22 2013-01-01 International Business Machines Corporation Victim cache replacement
US8225045B2 (en) * 2008-12-16 2012-07-17 International Business Machines Corporation Lateral cache-to-cache cast-in
US8499124B2 (en) * 2008-12-16 2013-07-30 International Business Machines Corporation Handling castout cache lines in a victim cache
US8117397B2 (en) * 2008-12-16 2012-02-14 International Business Machines Corporation Victim cache line selection
US8489819B2 (en) 2008-12-19 2013-07-16 International Business Machines Corporation Victim cache lateral castout targeting
US8799587B2 (en) * 2009-01-26 2014-08-05 International Business Machines Corporation Region coherence array for a mult-processor system having subregions and subregion prefetching
US8949540B2 (en) 2009-03-11 2015-02-03 International Business Machines Corporation Lateral castout (LCO) of victim cache line in data-invalid state
US8285939B2 (en) * 2009-04-08 2012-10-09 International Business Machines Corporation Lateral castout target selection
US8327073B2 (en) * 2009-04-09 2012-12-04 International Business Machines Corporation Empirically based dynamic control of acceptance of victim cache lateral castouts
US8312220B2 (en) * 2009-04-09 2012-11-13 International Business Machines Corporation Mode-based castout destination selection
US8347036B2 (en) * 2009-04-09 2013-01-01 International Business Machines Corporation Empirically based dynamic control of transmission of victim cache lateral castouts
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
US20120297011A1 (en) * 2009-12-30 2012-11-22 Nokia Corporation Intelligent Reception of Broadcasted Information Items
US9189403B2 (en) * 2009-12-30 2015-11-17 International Business Machines Corporation Selective cache-to-cache lateral castouts
US9767025B2 (en) 2012-04-18 2017-09-19 Qualcomm Incorporated Write-only dataless state for maintaining cache coherency
US9411595B2 (en) * 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
CN102866923B (zh) * 2012-09-07 2015-01-28 杭州中天微系统有限公司 对称多核的高效一致性侦听过滤装置
CN103049422B (zh) * 2012-12-17 2013-11-27 浪潮电子信息产业股份有限公司 一种具有多cache一致性域的多处理器节点系统构建方法
US9208091B2 (en) * 2013-06-19 2015-12-08 Globalfoundries Inc. Coherent attached processor proxy having hybrid directory
CN103955435B (zh) * 2014-04-09 2017-01-11 上海理工大学 一种融合多级缓存目录建立访问方法
EP3198824A4 (en) * 2014-09-25 2018-05-23 Intel Corporation Reducing interconnect traffics of multi-processor system with extended mesi protocol
US9740617B2 (en) * 2014-12-23 2017-08-22 Intel Corporation Hardware apparatuses and methods to control cache line coherence
US9639276B2 (en) * 2015-03-27 2017-05-02 Intel Corporation Implied directory state updates
US9619396B2 (en) * 2015-03-27 2017-04-11 Intel Corporation Two level memory full line writes
US10255184B2 (en) * 2016-11-07 2019-04-09 International Business Machines Corporation Memory access architecture with coherence
US10733102B2 (en) 2018-12-19 2020-08-04 International Business Machines Corporation Selectively updating a coherence state in response to a storage update
US10705957B1 (en) 2018-12-19 2020-07-07 International Business Machines Corporation Selectively updating a coherence state in response to a storage update
US10691599B1 (en) 2018-12-19 2020-06-23 International Business Machines Corporation Selectively updating a coherence state in response to a storage update
US11360906B2 (en) * 2020-08-14 2022-06-14 Alibaba Group Holding Limited Inter-device processing system with cache coherency
US11354239B2 (en) * 2020-09-18 2022-06-07 Microsoft Technology Licensing, Llc Maintaining domain coherence states including domain state no-owned (DSN) in processor-based devices
CN112612727B (zh) * 2020-12-08 2023-07-07 成都海光微电子技术有限公司 一种高速缓存行替换方法、装置及电子设备
US11599467B2 (en) * 2021-05-27 2023-03-07 Arm Limited Cache for storing coherent and non-coherent data

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01175660A (ja) 1987-12-29 1989-07-12 Matsushita Electric Ind Co Ltd マルチプロセッサシステム
US6038644A (en) 1996-03-19 2000-03-14 Hitachi, Ltd. Multiprocessor system with partial broadcast capability of a cache coherent processing request
US5852716A (en) 1996-07-02 1998-12-22 Sun Microsystems, Inc. Split-SMP computer system with local domains and a top repeater that distinguishes local and global transactions
US6038651A (en) 1998-03-23 2000-03-14 International Business Machines Corporation SMP clusters with remote resource managers for distributing work to other clusters while reducing bus traffic to a minimum
US6606676B1 (en) 1999-11-08 2003-08-12 International Business Machines Corporation Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system
JP3709322B2 (ja) 2000-03-10 2005-10-26 株式会社日立製作所 多次元クロスバーネットワークおよび並列計算機システム
US6754782B2 (en) 2001-06-21 2004-06-22 International Business Machines Corporation Decentralized global coherency management in a multi-node computer system
US6785774B2 (en) 2001-10-16 2004-08-31 International Business Machines Corporation High performance symmetric multiprocessing systems via super-coherent data mechanisms
US7100001B2 (en) 2002-01-24 2006-08-29 Intel Corporation Methods and apparatus for cache intervention
US7096323B1 (en) 2002-09-27 2006-08-22 Advanced Micro Devices, Inc. Computer system with processor cache that stores remote cache presence information
US7702717B2 (en) 2003-03-27 2010-04-20 Oracle America, Inc. Method and apparatus for controlling management agents in a computer system on a packet-switched input/output network
US7526631B2 (en) 2003-04-28 2009-04-28 International Business Machines Corporation Data processing system with backplane and processor books configurable to support both technical and commercial workloads
GB2403560A (en) 2003-07-02 2005-01-05 Advanced Risc Mach Ltd Memory bus within a coherent multi-processing system
US7337280B2 (en) * 2005-02-10 2008-02-26 International Business Machines Corporation Data processing system and method for efficient L3 cache directory management
US7366844B2 (en) * 2005-02-10 2008-04-29 International Business Machines Corporation Data processing system and method for handling castout collisions
US7536513B2 (en) 2005-03-31 2009-05-19 International Business Machines Corporation Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state

Also Published As

Publication number Publication date
US8495308B2 (en) 2013-07-23
CN101162442A (zh) 2008-04-16
US20080086602A1 (en) 2008-04-10
JP2008097598A (ja) 2008-04-24

Similar Documents

Publication Publication Date Title
JP5116418B2 (ja) マルチプロセッサ・データ処理システムにおいて、データを処理する方法、マルチプロセッサ・データ処理システムのための処理ユニット、およびデータ処理システム
US7536513B2 (en) Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state
US7404046B2 (en) Cache memory, processing unit, data processing system and method for filtering snooped operations
US7747826B2 (en) Data processing system and method for efficient communication utilizing an in coherency state
US7716428B2 (en) Data processing system, cache system and method for reducing imprecise invalid coherency states
US8140770B2 (en) Data processing system and method for predictively selecting a scope of broadcast of an operation
US7543116B2 (en) Data processing system, cache system and method for handling a flush operation in a data processing system having multiple coherency domains
US7290094B2 (en) Processor, data processing system, and method for initializing a memory block to an initialization value without a cache first obtaining a data valid copy
US7451277B2 (en) Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
US7237070B2 (en) Cache memory, processing unit, data processing system and method for assuming a selected invalid coherency state based upon a request source
US7454578B2 (en) Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory
US7478201B2 (en) Data processing system, cache system and method for passively scrubbing a domain indication
JP5004571B2 (ja) 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法
US20070226426A1 (en) Data processing system, cache system and method for precisely forming an invalid coherency state based upon a combined response
US7467262B2 (en) Data processing system, cache system and method for scrubbing a domain indication in response to execution of program code
US7475195B2 (en) Data processing system, cache system and method for actively scrubbing a domain indication
US7584331B2 (en) Data processing system and method for selectively updating an invalid coherency state in response to snooping a castout
US7725619B2 (en) Data processing system and method that permit pipelining of I/O write operations and multiple operation scopes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120831

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: 20120925

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121016

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: 20151026

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees