JP2008077650A - キャストアウトに関する改良されたコヒーレンシ管理を支援するプロセッサ、データ処理システム、およびデータ処理方法 - Google Patents

キャストアウトに関する改良されたコヒーレンシ管理を支援するプロセッサ、データ処理システム、およびデータ処理方法 Download PDF

Info

Publication number
JP2008077650A
JP2008077650A JP2007233730A JP2007233730A JP2008077650A JP 2008077650 A JP2008077650 A JP 2008077650A JP 2007233730 A JP2007233730 A JP 2007233730A JP 2007233730 A JP2007233730 A JP 2007233730A JP 2008077650 A JP2008077650 A JP 2008077650A
Authority
JP
Japan
Prior art keywords
cache
cache memory
level cache
request
cache line
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
JP2007233730A
Other languages
English (en)
Other versions
JP5190236B2 (ja
Inventor
Lynn Guthrie Guy
ガイ・リン・ガスリー
William John Starke
ウィリアム・ジョン・スターク
Edward Williams Derek
デレク・エドワード・ウィリアムス
S Fields James Jr
ジェームズ・ステファン・フィールズ・ジュニア
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 JP2008077650A publication Critical patent/JP2008077650A/ja
Application granted granted Critical
Publication of JP5190236B2 publication Critical patent/JP5190236B2/ja
Active 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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

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)

Abstract

【課題】データ処理システムのキャッシュ・コヒーレンシにおいてキャストアウトに関する改良されたコヒーレンシ管理を支援するプロセッサ、データ処理システム、および方法を提供する。
【解決手段】データ処理システムにおけるコヒーレンシ管理の方法は、キャッシュ・ラインを上位レベルのキャッシュ・メモリ内に排他的所有コヒーレンシ状態で保持するステップ、しかる後、そのキャッシュ・ラインを上位レベルのキャッシュ・メモリから取り除き、かつ、共用的所有コヒーレンシ状態の指示を含めて、そのキャッシュ・ラインについてのキャストアウト要求を、上位レベルのキャッシュ・メモリから下位レベルのキャッシュ・メモリに送るステップと、キャストアウト要求に応答して、キャストアウト要求に従って決定されたコヒーレンシ状態でキャッシュ・ラインを下位レベルのキャッシュ・メモリに配置するステップを含む。
【選択図】図1

Description

本発明は、一般的にはデータ処理システムに関し、特に、データ処理システムにおけるコヒーレンシ管理に関するものである。更に詳しく云えば、本発明は、データ処理システムのキャッシュ・コヒーレンシにおいてキャストアウトに関する改良されたコヒーレンシ管理を支援するプロセッサ、データ処理システム、および方法に関するものである。
サーバ・コンピュータ・システムのような通常の対称マルチプロセッサ(SMP)コンピュータ・システムは、典型的には1つまたはそれ以上のアドレス、データ、および制御バスを有するシステム相互接続網にすべて接続された複数の処理ユニットを含む。そのシステム相互接続網にはシステム・メモリが接続される。システム・メモリは、マルチプロセッサ・コンピュータ・システムにでは最も低いレベルの揮発性メモリを表わし、一般に、すべての処理ユニットによる読取りおよび書込みアクセスのためにアクセス可能である。システム・メモリにある命令およびデータに対するアクセス待ち時間を少なくするために、各処理ユニットは、一般に、それぞれのマルチレベル・キャッシュ・コヒーレンシによって更に支援される。低いレベルのキャッシュ・コヒーレンシは1つまたは複数のプロセッサ・コアによって共用されることもある。
キャッシュ・メモリは、一般に、システム・メモリから必要なデータおよび命令をロードしなければならないことにより生じるアクセス待ち時間を少なくすることによって処理をスピード・アップするために、プロセッサによりアクセスされるメモリ・ブロックを一時的にバッファするように利用される。或るマルチプロセッサ(MP)システムでは、キャッシュ・コヒーレンシは少なくとも2つのレベルを有する。レベル1(L1)の、即ち、上位レベルのキャッシュは、通常、特定のプロセッサ・コアに関連した専用キャッシュであり、MPシステムにおける他のコアがそれを直接にアクセスすることはできない。典型的には、ロードまたはストア命令のようなメモリ・アクセス命令に応答して、プロセッサ・コアは、先ず、上位レベルのキャッシュをアクセスする。要求されたメモリ・ブロックが上位レベルのキャッシュにおいて見つからなかった場合、またはメモリ・アクセス要求が上位レベルのキャッシュにおいてサービスされ得なかった場合(例えば、L1キャッシュがストア・スルー・キャッシュである場合)、プロセッサ・コアは、要求されたメモリ・ブロックへのメモリ・アクセスをサービスするために下位レベルのキャッシュ(例えば、レベル2(L2)のキャッシュまたはレベル3(L3)のキャッシュ)をアクセスする。最低レベル(例えば、L2またはL3)のキャッシュは、多くの場合、複数のプロセッサ・コア間で共用される。
メモリの内容の一貫したビューは、コヒーレンシ・プロトコルの実装によって、コンピュータ・システム全体にわたって分布した個々のメモリ・ブロックの潜在的に複数のコピーが存在することで維持される。コヒーレンシ・プロトコル、例えば、周知のMESIプロトコルまたはそれの変形は、メモリ・ブロックの各キャッシュされたコピーと関連する状態情報を維持すること、およびメモリ・アクセス要求を他の処理ユニットにとって可視的にするために処理ユニット間で少なくとも幾つかのメモリ・アクセス要求を伝達することを伴う。
複数の処理ユニットおよび実行スレッドの間におけるメモリの特定部分(例えば、キャッシュ・ライン)に対するアクセスを同期させるために、多くの場合、ロード・予約(load-reserve)命令およびストア・条件付き(store-conditional)命令のペアが使用される。例えば、ロード・予約命令およびストア・条件付き命令は、それぞれ、LWARX/LDARXおよびSTWCX/STDCXニーモニック(以下、LARXおよびSTCXという)と関連した命令コード(オペランド)と共にPowerPC(商標)命令セット体系において実装されている。プロセッサによるLARX命令の実行は、指定されたキャッシュ・ラインをそのプロセッサのキャッシュ・メモリにロードし、そして、プロセッサが、その予約されたキャッシュ・ラインをターゲットとするその後のSTCX命令の実行を通してそのキャッシュ・ラインを自動的に更新することに関心を持っている、ということを意味する予約フラッグおよびアドレス・レジスタをセットする。その後、キャッシュは、他のプロセッサがそのキャッシュ・ラインを修正したということを意味するオペレーションに関してストレージ・サブシステムを監視し、そのオペレーションが検出された場合、予約の取り消しを表わすために予約フラッグをリセットする。プロセッサが、LARXの実行を通して予約されたキャッシュ・ラインをターゲットとするその後のSTCX命令を実行するとき、キャッシュ・メモリは、そのキャッシュラインについての予約が依然として保留中である場合、STCX命令によって要求されたキャッシュ・ラインの更新だけを行う。従って、微量性(atomicity)を厳格に強制する基本的な微量更新を使わずに共用メモリに対する更新を同期化することが可能である。
予約フラッグの状態とその予約されたキャッシュ・ラインのキャッシングとは無関係であり、それは、例えば、キャストアウト・オペレーションによって予約プロセッサのキャッシュから関連のキャッシュ・ラインが取り除かれる場合、予約フラッグが自動的にはリセットされないということを意味する。キャッシュ・メモリからキャストアウトされる1つの予約されたキャッシュ・ラインが、その後、予約プロセッサ以外のプロセッサによって修正される場合、予約されたキャッシュ・ラインが「修正済み」以外の状態にあるならば、予約は通常のコヒーレンシ伝達によって自動的に取り消されるであろう。しかし、「予約済み」のキャッシュ・ラインは「暗黙に」(即ち、キャッシュ間のコヒーレンシ伝達なしに)更新され得るので、失敗するべきSTCX命令が成功しないことを保証するために、そのようなキャッシュ・ラインに対して特別の準備が施されなければならない。
或る従来技術の方法では、1つのキャッシュ・ライン(予約されたキャッシュ・ラインを含む)が、上位レベルのキャッシュから下位レベルのキャッシュに、それが上位レベルのキャッシュに保持されていた状態と同じコヒーレンシ状態で、キャストアウトされることを許容することによって、および、そのキャッシュ・ラインが上位レベルのキャッシュによって下位レベルのキャッシュから再び得られる場合、そのキャッシュ・ラインのコヒーレンシ状態が、排他的所有状態(例えば、「修正済み」(M))から共用的所有状態(例えば、「タグ付き」(T))に格下げされることを、それが妥当ならば、要求することによって、1つのコヒーレンシ・プロトコルが上記の動作シナリオに対処した。その強制された格下げは、キャッシュ・ラインを排他的所有状態に保持しているときに別のプロセッサがそのキャッシュ・ラインを更新しようとする場合、そのキャッシュ・ラインに対するいずれの保留の予約も取り消されることを保証する。
本発明者は、キャッシュ・ラインが更新される場合に待ち時間を少なくし且つ不必要なコヒーレンシ・コミュニケーションを排除するために、「修正済み」(M)コヒーレンシ状態のような排他的所有コヒーレンシ状態を、できれば、保存することが望ましいことを認識した。従って、本発明の目的は、データ処理システムのキャッシュ・ハイアラーキにおけるキャストアウトに関する改良されたコヒーレンシ管理を支援する、改良されたプロセッサ、データ処理システム、およびデータ処理の方法を提供することにある。
本発明の一実施例によれば、データ処理システムにおけるコヒーレンシ管理の方法は、キャッシュ・ラインを上位レベルのキャッシュ・メモリ内に排他的所有コヒーレンシ状態で保持するステップと、しかる後、そのキャッシュ・ラインを上位レベルのキャッシュ・メモリから取り除き、かつ、共用的所有コヒーレンシ状態の指示を含めて、そのキャッシュ・ラインについてのキャストアウト要求を、上位レベルのキャッシュ・メモリから下位レベルのキャッシュ・メモリに送るステップと、キャストアウト要求に応答して、キャストアウト要求に従って決定されたコヒーレンシ状態でキャッシュ・ラインを下位レベルのキャッシュ・メモリに配置するステップと、を含む。
本発明のすべての目的、特徴、および利点が、以下の詳細に記載された説明において明らかになるであろう。
図面全体を通して、同じ参照番号は同じ部分または対応する部分を指す。図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キャストアウトをバッファするためのL3ビクティム(victim)・キャッシュ232を含む。図示の実施例では、プロセッサ・コア200aおよび200dがそれぞれのL3キャッシュ(即ち、それぞれ、L3キャッシュ230aおよび230d)を有し、プロセッサ・コア200bおよび200cがL3キャッシュ230bを共用する。もちろん、別の実施例では、プロセッサ・コア200の各々がそれ自身のL3キャッシュ232を有してもよく、或いは、プロセッサ・コア200の各々がL3キャッシュを1つまたはそれ以上の他のプロセッサ・コアと共用してもよい。少なくともいくつかの実施例では、L3キャッシュ232は、プロセッサ・コア200によってアクセスされそうなデータを処理ユニット104のキャッシュ・ハイアラーキ内にできるだけ長い間保存するために、1つの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を含む。そのようなメモリ・アクセス命令はロード・予約命令およびストア・条件付き命令を含み、それらの命令は、同じ処理ユニット内または異なる処理ユニット内の、同じプロセッサ・コア200における実行であろうとまたは異なるプロセッサ・ユニット200における実行であろうと、特定のスレッド実行および他の並行したスレッド実行の間で共用メモリに対するアクセスを同期させるために利用される。
本発明によれば、分岐したL1データ・キャッシュおよび命令キャッシュを含み得るL1キャッシュ306は、他のプロセッサ・コア200に関するキャッシュ・コヒーレンシのポイントがL1キャッシュ306の下に置かれるということ、および、図示の実施例では、L2キャッシュ230に置かれるということを意味するストア・スルー・キャッシュとして実施される。従って、L1キャッシュ306は、それのキャッシュラインについての真のキャッシュ・コヒーレンシ状態を維持するのではなく、有効/無効ビットだけを維持する。
更に図3に示されるように、L2キャッシュ230は、命令およびデータのキャッシュ・ラインをストアするデータ・アレイ310、データ・アレイ310のキャッシュ・ディレクトリ312、およびL2キャッシュ230のデータおよびコヒーレンシ・オペレーションを制御するキャッシュ・コントローラ330を含む。通常のセット・アソシアティブ・キャッシュにおけるように、システム・メモリ108におけるメモリ・ロケーションが、システム・メモリ(実)アドレス内の所定のインデックス・ビットを利用してデータ・アレイ310内の特定の合同クラスにマップされる。一実施例では、コヒーレンシ・システムに対する標準のメモリ・ブロックが128バイトのキャッシュ・ラインにセットされる。データ・アレイ310内にストアされた特定のキャッシュ・ラインが、データ・アレイ310における各キャッシュ・ラインに対する1つのディレクトリ・エントリを含むキャッシュ・ディレクトリ312に記録される。当業者には明らかであるように、キャッシュ・ディレクトリ312における各ディレクトリ・エントリは、少なくとも、対応する実アドレスの一部を利用してデータ・アレイ310に記憶された特定のキャッシュ・ラインを指定するタグ・フィールド314、キャッシュ・ラインのコヒーレンシ状態を表わす状態フィールド316、および同じ合同クラスにおける他のキャッシュ・ラインに関してそのキャッシュラインについての置換順序を表わすLRU(最低使用頻度)フィールド318を含む。
状態フィールド316に記録することが可能なコヒーレンシ状態は具現化方法特有のものであり、システム・アーキテクチャと複雑性および精度の所望レベルとに従って変わり得る。1つの好適な実施例(他の実施例も可能である)では、周知のMESIプロトコルの変形が使用され、それは、少なくとも、下記の表1に示されたコヒーレンシ状態を含む。
Figure 2008077650
表1に示された例示的なコヒーレンシ状態が、更なる無効状態、共用状態、共用的所有状態、および排他的所有状態を含む1つまたはそれ以上の更なるコヒーレンシ状態を含むように拡張可能であるということは当業者には明らかであろう。
L2キャッシュ230は、結局、関連するプロセッサ・コア200によって実行されたスレッドの予約を記録するための予約ロジック320を含む。特に、予約ロジック320は、プロセッサ・コア200によって並行して実行され得る各スレッドに対する、予約アドレス・フィールド322および予約フラッグ324を含むそれぞれの予約レジスタを含む。例えば、プロセッサ・コア200が2つのスレッドを並行して実行し得る図示の例では、予約ロジック320はプロセッサ・コア200のための2つの予約レジスタ、即ち、スレッド0に対する予約アドレス・フィールド322aおよび予約フラッグ324aと、スレッド1に対する予約アドレス・フィールド322bおよび予約フラッグ324bとを含む。予約フラッグ324は、それが(例えば、1に)セットされると、関連の実行スレッドが、関連の予約アドレス・フィールド322に含まれたアドレスに対する予約を保持していることを表わし、予約フラッグがセットされない場合には、それは、予約が保持されてないことを表わす。予約ロジック320は、ストア・条件付きオペレーションの結果を表わす合格/失敗の指示をそれぞれの合格/失敗バス326を介してプロセッサ・コア200に供給する。
次に図4を参照すると、L3キャッシュに関する本発明の実施例の更に詳細なブロック図が示される。図3および図4を比較するとわかるように、L2キャストアウトをバッファするためのビクティム・キャッシュとして働くL3キャッシュ232が、図3のL2キャッシュ230と同様に構成される。従って、L3キャッシュ232は、セット・アソシアティブ・データ・アレイ410、データ・アレイ410の内容のキャッシュ・ディレクトリ412、およびキャッシュ・コントローラ430を含む。更に図4に示されるように、キャッシュ・ディレクトリ412における各ディレクトリ・エントリは、少なくとも、対応する実アドレスの一部分を利用して、データ・アレイ410にストアされた特定のキャッシュ・ラインを指定するタグ・フィールド414、キャッシュ・ラインのコヒーレンシ状態を表わす状態フィールド416、およびそのキャッシュラインについての置換順序を、同じ合同クラスにおける他のキャッシュ・ラインに関連して表わすLRU(最低使用頻度)フィールド418を含む。L3キャッシュ232が複数のL2キャッシュ230によって共用され、および/または、L3キャッシュ232がL3からL3へのキャストアウトを許容するように接続されるような本発明の少なくとも幾つかの実施例では、L3キャッシュ・ディレクトリ412における各エントリは、どのL2キャッシュ230がそのキャッシュ・ラインのオリジナル・ソースであったかを表わすソース・フィールド420を更に含む。
図5を参照すると、本発明に従って、L2キャッシュがデータ処理システムにおいてプロセッサ(CPU)要求をサービスする例示的な方法の高レベルの論理的フローチャートが示される。図示のように、プロセスはブロック500で開始し、そのブロックは、L2キャッシュ230におけるキャッシュ・コントローラ330が処理ユニット104における関連のプロセッサ・コア200からCPU要求(例えば、CPUデータ・ロード要求、CPUデータ・ストア要求、CPUロードおよび予約要求、CPU命令ロード要求等)を受けることを表わす。ブロック502では、CPU要求を受けたことに応答して、ターゲット実アドレスによりそのCPU要求内の識別されるターゲット・メモリ・ブロックが、相互接続ファブリック上のオペレーションを生じることなくそのCPU要求のサービスを許容するコヒーレンシ状態でL2キャッシュ・ディレクトリ312に保持されているかどうかを、キャッシュ・コントローラ330が決定する。例えば、CPU命令フェッチ要求またはデータ・ロード要求は、ターゲット・メモリ・ブロックのコヒーレンシ状態がM、Me、T、またはS状態のいずれかであるということをL2キャッシュ・ディレクトリ312が表わす場合、相互接続ファブリックにおいてバス・オペレーションを生じることなくサービスされ得る。CPUデータ・ストア要求は、ターゲット・メモリ・ブロックのコヒーレンシ状態がMまたはMe状態の一方であるということをキャッシュ・ディレクトリ312が表わす場合、相互接続ファブリックにおいてバス・オペレーションを生じることなくサービスされ得る。CPU要求が相互接続ファブリックにおいてバス・オペレーションを生じることなくサービスされ得るということを、ブロック502においてキャッシュ・コントローラ330が決定する場合、キャッシュ・コントローラ330は、ブロック514に示されるように、CPU要求をサービスするためにL2データ・アレイ310をアクセスする。例えば、キャッシュ・コントローラ330は、CPUデータ・ロード要求または命令フェッチ要求に応答して1つの要求されたメモリ・ブロックを獲得し、その要求されたメモリ・ブロックを要求元のプロセッサ・コア200に供給し得るか、またはCPUデータ・ストア要求において与えられたデータをL2データ・アレイ310にストアし得る。ブロック514に続いて、プロセスはブロック520において終了する。
ブロック502に説明を戻すと、ターゲット・メモリ・ブロックが、相互接続ファブリックにおけるバス・オペレーションを生じることなくそのCPU要求のサービスを許容するコヒーレンシ状態でL2キャッシュ・ディレクトリ312内に保持されていない場合、ブロック504において、既存のL2キャッシュ・ラインのキャストアウトがターゲット・メモリ・ブロックをL2キャッシュ230内に収容することを求められるかまたは収容することが望ましいかどうかの決定が行われる。1つの実施例では、ブロック504において、CPU要求に応答して要求元のプロセッサのL2キャッシュ230から排出するためのメモリ・ブロックが選択される場合、キャストアウト・オペレーションが行われ、M、Me、T、またはSコヒーレンシ状態のいずれかにあるものとしてL2キャッシュ・ディレクトリ312においてマークされる。キャストアウトが行われるというブロック504における決定に応答して、キャッシュ・コントローラ330は、ブロック506に表されるように、L2からL3へのキャッシュアウト・オペレーションを遂行する。ブロック506に示されたキャストアウト・オペレーションは、後述のように、宛先のL3キャッシュ232にそれ自身のキャッシュアウトを行わせ得る。キャッシュ・コントローラ330は、ブロック510に示されるように、相互接続網110および114を含む相互接続ファブリックにおけるバス・オペレーションを開始する。
バス・オペレーションに応答して、キャッシュ・コントローラ330は、そのバス・オペレーションに対するシステムの応答を供給する、結合応答と呼ばれるコヒーレンシ・メッセージを受取る。ブロック512において、キャッシュ・コントローラ330はその結合応答をテストする。バス・オペレーションが成功したということを結合応答が表わさない場合(例えば、結合応答が「再試行」を表わす場合)、プロセスがブロック510に戻ることによって表されるように、キャッシュ・コントローラ330はバス・オペレーションを再発行する。一方、ブロック512において、キャッシュ・コントローラが「成功」を表わすバス・オペレーションに対する結合応答を受取る場合、プロセスは、コントローラ232がCPU要求をサービスすることを表わすブロック514に進む。しかる後、プロセスは、ブロック520で終了する。
本発明によれば、キャッシュ・コントローラ330、430によるキャストアウト・キャッシュラインについてのコヒーレンシ状態の管理(例えば、図5のL2キャストアウト・オペレーション506およびキャッシュ・ラインのすべてのキャッシュ・ラインの転送)は、プロセッサ・コア200が排他的所有状態(例えば、MまたはMe状態)におけるキャストアウト・キャッシュ・ラインに対して保留の予約を有する可能性を考慮する。キャッシュ・コントローラ330、430の予約承知の(reservation-aware)コヒーレンシ管理は、下記の点を含む多数の設計要素に基づいて種々の異なる実施例において実現することが可能である。
(1)ソースの高レベル・キャッシュからキャストアウトされる排他的所有状態のキャッシュ・ラインを、宛先の低レベル・キャッシュにおいて共用状態(例えば、T)に格下げし得るかどうか、
(2)どのようなコヒーレンシ状態のキャストアウトされたキャッシュ・ラインを、2つの低レベル・キャッシュ(例えば、L3)の間で「水平に」送り得るか、
(3)どのようなコヒーレンシ状態のキャストアウトされたキャッシュ・ラインを、低レベル・キャッシュ(L3)から高レベル・キャッシュ(L2)に「垂直に」送り得るか。
本明細書では、5つのそのような実施例を説明することにする。
本発明のコヒーレンシ管理に関する第1および第2実施例では、上位レベル(例えば、L2)のキャッシュに排他的所有(例えば、MまたはMe)状態で保持され、しかる後、下位レベル(例えば、L3)のキャッシュにキャストアウトされるキャッシュ・ラインのコヒーレンシ状態が初期のキャストアウト・オペレーション中だけキャッシュ・ラインの起り得る予約を明示するように修正される。キャッシュ・ラインがその後他のキャッシュに水平に(例えば、L3からL3に)または垂直に(例えば、L3からL2に)送られる場合、起り得る予約を明示するための更なるコヒーレンシ状態管理は必要ない。第1および第2実施例は、第1実施例では、キャッシュラインについての予約が存在し得るものと仮定して、上位レベル(例えば、L2)のキャッシュから下位レベル(例えば、L3)のキャッシュにキャストアウトされる排他的所有状態におけるキャッシュ・ラインが下位レベルのキャッシュにおいて排他的所有状態から共用的所有状態に不正確に格下げされる、という点で異なる。一方、第2実施例は、キャッシュラインについての予約が実際に存在する場合にのみ、そのラインのコヒーレンシ状態を排他的所有状態から共用的所有状態に正確に格下げする。第1および第2実施例では、ソース・フィールド420は使用されない。
本発明のコヒーレンシ管理に関する第3、第4、および第5実施例では、上位レベル(例えば、L2)のキャッシュに排他的所有(例えば、MまたはMe)状態で保持され、しかる後、下位レベル(例えば、L3)のキャッシュにキャストアウトされるキャッシュ・ラインのコヒーレンシ状態は、初期のキャストアウト・オペレーションに続くキャッシュからキャッシュへのキャッシュ・ラインの転送時にのみ、そのキャッシュ・ラインの可能な予約を明示するように修正される。即ち、本発明の第3、第4、および第5実施例では、排他的所有状態(例えば、MまたはMe状態)におけるキャッシュ・ラインが同じ排他的所有状態でキャッシュアウトされる。その第3、第4、および第5実施例は、そのようなキャストアウトされたキャッシュ・ラインのコヒーレンシ状態を、必要な場合に格下げする方法が異なる。
第3実施例では、下位レベルのキャッシュは専用の(即ち、単一の上位レベルのキャッシュのみに直接に接続された)ものであり、ソース・フィールド420を利用するソース追跡は使用されない。この第3実施例では、排他的所有状態でキャストアウトされたキャッシュ・ラインのコヒーレンシ状態は、そのキャッシュ・ラインがその後(例えば、データ要求に応答して)上位レベルのキャッシュに送り戻される場合には変更されず、キャストアウトされたキャッシュ・ラインの水平方向の(例えば、L3からL3への)転送が許容される場合には、水平方向の(例えば、L3からL3への)転送時に、排他的所有(例えば、MまたはMe)コヒーレンシ状態から共用的所有(例えば、T)コヒーレンシ状態に格下げされる。
第4および第5実施例では、ソース・フィールド420を利用したキャッシュ・ラインのコヒーレンシ状態のソース追跡が使用される。第4実施例では、ソース追跡は、例えば、L2キャッシュ230bおよび230cがL3キャッシュ232bに直接接続されるというように、下位レベルのキャッシュ・メモリに直接接続された上位レベルのキャッシュ・メモリに限定される。この第4実施例では、キャッシュ・ラインは、キャストアウトされたキャッシュ・ラインの水平方向の(例えば、L3からL3への)転送時またはソース・キャッシュ以外の上位レベルのキャッシュへの垂直方向の(例えば、L3からL2への)転送時には排他的所有(例えば、MまたはMe)コヒーレンシ状態から共用的所有(例えば、T)コヒーレンシ状態に格下げされるが、上位レベルのソース・キャッシュへの垂直方向の転送時には排他的所有状態のままである。
第5実施例では、下位レベルのキャッシュ・メモリにおけるソース追跡が同じ処理ユニットにおけるすべての上位レベルのキャッシュ・メモリ(例えば、すべてのL2キャッシュ230a〜230d)に拡張される。第5実施例では、キャストアウトされたキャッシュ・ラインは、そのキャストアウトされたキャッシュ・ラインのすべての水平方向の(例えば、L3からL3への)転送時または上位レベルのソース・キャッシュへの垂直方向の(例えば、L3からL2への)転送時には排他的所有状態のままであることを許容されるが、ソース・キャッシュ以外の上位レベルのキャッシュへの垂直方向の(例えば、L3からL2への)転送時には排他的所有状態から共用的所有(例えば、T)状態に格下げされる。下位レベルのキャッシュ相互間での排他的所有状態におけるキャストアウトされたキャッシュ・ラインの水平方向の転送を許容するために、下位レベルのキャッシュ相互間の転送はソース・フィールド420からのソース追跡情報を含む。
本発明の上記の実施例が排他的でないことは明らかであろう。実際に、第1乃至第4実施例のいずれかを、任意の数の第1乃至第4実施例と関連して、1つのデータ処理システムにおいて使用することも可能である。更に、本発明の第5実施例を具現化する任意の処理ユニットにおけるすべてのキャッシュ・メモリが第5実施例を具現化するように構成される限り、その第5実施例を1つまたはそれ以上の他の実施例と共に同じデータ処理ユニットにおいて使用することも可能である。
次に図6を参照すると、本発明の第1および第2実施例による例示的なL2キャストアウト・プロセスの高レベルの論理的フローチャートが示される。図示のように、プロセスは、例えば、CPU要求をサービスするためにL2キャストアウト・オペレーションが遂行されなければならない図5のブロック504におけるL2キャッシュ・コントローラ330による決定に応答して、ブロック600で開始する。そこで、プロセスはブロック602に進む。ブロック602では、例えば、CPU要求のターゲット・アドレスがマップする合同クラスにおけるディレクトリ・エントリのLRUフィールド318を参照することによって、キャッシュ・コントローラ330が、キャストアウトすべきキャッシュ・ラインを選択する。次に、ブロック604において、キャッシュ・コントローラ330は、状態フィールド316が、キャストアウト・オペレーションの開始直前にキャッシュに対して排他的所有状態(例えば、MまたはMe)を表わしていたかどうかを決定する。その決定が否定的である場合、プロセスはブロック614に進む。ブロック614において、キャッシュ・コントローラ330は、データのキャッシュ・ラインと、それの実アドレスと、キャッシュ・ディレクトリ312に記録されたコヒーレンシ状態とを含むキャストアウト要求を関連のL3キャッシュ232に送る。関連のL3キャッシュ232のキャッシュ・コントローラ430がデータ・アレイ410にそのキャッシュ・ラインを収納し、キャストアウト要求の内容に基づいてキャッシュ・ディレクトリ412における対応するエントリのタグ・フィールド414、状態フィールド416、およびLRUフィールド418を更新する。この場合、キャストアウト・オペレーションによる、そのキャッシュラインについてのコヒーレンシ状態の変更は行われない。ブロック614に続いて、プロセスはブロック620において終了する。
ブロック604に説明を戻すと、キャストアウトされるべきキャッシュが排他的所有状態にあるという決定に応答して、L2キャッシュ・コントローラ330は、必要な場合、ブロック610、612に示されるように、キャッシュ・ラインの状態を格下げする。コヒーレンシ状態の格下げが不明確に行われる本発明の第1実施例では、キャッシュ・コントローラ330は動作ブロック610に示された決定を省略し、キャストアウトされるべきキャッシュ・ラインのコヒーレンシ状態を排他的所有状態(例えば、MまたはMe)から共用的所有状態(例えば、T)に格下げする。そこで、キャッシュ・コントローラ330は、共用的所有状態(例えば、T)を指定するキャストアウト要求を関連のL3キャッシュ232に発生し(ブロック614)、それによって、そのキャッシュラインについてのすべてのその後の更新が、その更新を知る必要のあるすべてのキャッシュにとって可視的に行われることを保証する。上述のように、ブロック614に示されたキャストアウト・オペレーションは、更に、後述のように、宛先のL3キャッシュ232にそれ自身のキャストアウトを行わせることが可能である。しかる後、プロセスはブロック620において終了する。
代替方法として、本発明の第2実施例では、ブロック610に示されるように、現在、キャッシュ・ラインにとって予約が保留中であることを予約アドレス・フィールド322および予約フラッグ324が表わしているかどうかを決定するために、キャッシュ・コントローラ330が予約ロジック320のチェックを行う。そのキャッシュ・ラインのアドレスに対する予約が現在保留中でないということをキャッシュ・コントローラ330が決定する場合、キャッシュ・コントローラ330は、キャストアウトされるべきキャッシュ・ラインのコヒーレンシ状態を格下げせず、プロセスはブロック610から前述のブロック614に直接に進む。一方、キャストアウトされるべきキャッシュ・ラインの予約が関連のプロセッサ200では実行中のスレッドの1つによって現在保持されているということをキャッシュ・コントローラ330が決定する場合、キャッシュ・コントローラ330は、ブロック612に関連して説明したように、キャッシュ・ライン要求におけるキャッシュ・ラインのコヒーレンシ状態を明確に格下げする。
従って、本発明の第1および第2実施例は、キャッシュ・ラインが上位レベルのキャッシュ・メモリから下位レベルのキャッシュ・メモリにキャストアウトされるとき、キャッシュ・ラインのコヒーレンシ状態を格下げする。キャッシュ・ラインに関する予約の可能性を明示するためには、キャストアウト・キャッシュ・ラインの更なるコヒーレンシ管理は必要ない。(もちろん、例えば、相互接続ファブリックにおけるスヌーピング・オペレーションに応答して、キャッシュ・ラインの一般的なコヒーレンシ管理が実施される)。
次に図7を参照すると、本発明の第3、第4、および第5実施例によるコヒーレンシ管理の例示的方法に関する高レベルのフローチャートが示される。上述のように、本発明の第3、第4、および第5実施例では、上位レベル(例えば、L2)のキャッシュに排他的所有(例えば、MまたはMe)状態に保持され、その後、下位レベル(例えば、L3)のキャッシュにキャストアウトされるキャッシュ・ラインのコヒーレンシ状態は、必要な場合、初期のキャストアウト・オペレーションに続いてキャッシュ・ラインのキャッシュ間転送時にのみキャッシュ・ラインの可能な予約を明示するように修正される。
図示のプロセスはブロック700で始まり、ブロック702に進む。ブロック702では、L3キャッシュ・コントローラ430が、垂直方向に接続されたL2キャッシュ232から要求を受取る。L2キャストアウト要求またはデータ要求であってもよいその要求は、少なくともターゲット・アドレスと、L2キャストアウト要求の場合、L3データ・アレイ410においてキャッシュされるべきデータのキャッシュ・ラインとを指定する。その要求を受けたことに応答して、キャッシュ・コントローラ430は、ブロック704において、要求のタイプを決定する。要求がL2キャストアウト(CO)要求であるということをキャッシュ・コントローラ430が決定する場合、キャッシュ・コントローラ430は、ブロック710〜714に示されるように、その要求をサービスする。要求がデータ要求であるということをキャッシュ・コントローラ430が決定する場合、キャッシュ・コントローラ430は、ブロック720〜728に示されるように、その要求をサービスする。
要求がL2キャストアウト要求である場合、キャッシュ・コントローラ430は、ブロック710において、垂直方向に接続されたL2キャッシュ232から受けたキャストアウト・キャッシュ・ラインを収容するためのL3キャッシュアウトを行うべきかどうかを決定する。本発明によれば、少なくとも、L3キャッシュから排出するために選択されたキャッシュ・ラインが排他的所有コヒーレンシ状態または共用的所有コヒーレンシ状態のいずれかにあるときに、L3キャストアウトが遂行される。ブロック710において、遂行されるべきキャッシュアウトがないということをキャッシュ・コントローラ430が決定する場合、プロセスはブロック714に進み、キャッシュ・ライン・データを用いてデータ・アレイ410を更新することおよびキャッシュ・ディレクトリ412の対応するエントリを更新することによって、L3キャッシュ・コントローラ430は、L2キャッシュ230から受取ったキャッシュ・ラインのキャストインを遂行する。キャッシュ・ディレクトリ412を更新する場合、キャッシュ・コントローラ430は、キャッシュ・ライン・アドレスの一部分を用いてエントリのタグ・フィールド414を更新し、L2キャストアウト要求において指定されたコヒーレンシ状態を用いて状態フィールド416を更新し、最高使用頻度(MRU)を反映するようにLRUフィールド418を更新し、そしてキャッシュ・コントローラ430が本発明の第4および第5実施例を具現化する場合にL2キャストアウト要求のソースであったL2キャッシュ230を識別するためにソース・フィールド420を更新する。上述のように、L3キャッシュ・コントローラ430が本発明の第3実施例を具現化する場合、ソース・フィールド420がキャッシュ・ディレクトリ412から省かれ、ソース・フィールドに対する更新は行われない。ブロック714に続いて、プロセスはブロック740において終了する。
ブロック710に説明を戻すと、L2キャッシュ230から受けたキャッシュ・ラインを収容するために排出されたL3キャッシュラインについてのL3キャストアウトが行われなければならないということをL3キャッシュ・コントローラ430が決定する場合、L3キャッシュ・コントローラ430は、ブロック714に示されたキャストイン・オペレーションに加えて、L3キャストアウトを行う。L3キャッシュ232が他のL3キャッシュ232に「水平方向に」接続されてない場合、L3キャッシュ・コントローラ430は、ブロック712において、システム・メモリ108に対して通常のL3キャストアウトを行う。しかし、L3キャッシュ232が他のL3キャッシュ232に「水平方向に」接続されている(例えば、L3キャッシュ232bがL3キャッシュ232aおよび232dに接続されている)場合、L3キャッシュ・コントローラ430は、ブロック712において、L3からL3へのキャストアウトを行うことが可能である。上述のように、図8に関連して更に詳細に説明される本発明の第3および第4実施例では、排他的所有状態におけるキャッシュ・ラインがL3からL3へのキャストアウト時に共用的所有状態に格下げされる。しかし、図9に関連して後述する本発明の第5実施例では、そのようなコヒーレンシ状態の格下げは適用されない。
再びブロック704を参照すると、垂直方向に接続されたL2キャッシュ230から受けた要求がデータ要求であるということをキャッシュ・コントローラ430が決定する場合、L3キャッシュ・コントローラ430は、その要求のターゲット・アドレスがキャッシュ・ヒットという結果を生じるかどうかを決定するためにキャッシュ・ディレクトリ412をアクセスする。その結果が否定的である場合、プロセスは、ブロック740において終了する。しかし、要求の指定されたターゲット・アドレスがキャッシュ・ディレクトリ412においてヒットする場合、キャッシュ・コントローラ430は、ブロック722において、ターゲット・アドレスが排他的所有(例えば、MまたはMe)コヒーレンシ状態でキャッシュ・ディレクトリ412においてヒットするかどうかを決定する。その結果が否定的である場合、キャッシュ・コントローラ430は、ブロック728に示されるように、要求されたキャッシュ・ラインおよびそのコヒーレンシ状態の指示を要求元のL2キャッシュ230に供給するだけである。しかる後、プロセスはブロック740において終了する。
ブロック722における、L2データ要求のターゲット・アドレスが排他的所有状態でキャッシュ・ディレクトリ412においてヒットするという決定に応答して、ブロック724において、要求元のL2キャッシュ230が、そのキャッシュ・ラインをL3キャッシュ232に取込んだキャストアウト・オペレーションのソースであったかどうかに関する決定が行われる。キャッシュ・コントローラ430が本発明の第3実施例を具現化する場合、ブロック724に示された決定は肯定的であり、その設計により非明示的に行われる。一方、L3キャッシュ・コントローラ430が本発明の第4および第5実施例を具現化する場合(例えば、そのL3キャッシュ・コントローラが垂直方向に接続された複数のL2キャッシュ230によるL3キャッシュ230の共用(例えば、L3キャッシュ232bが、垂直方向に接続されたL2キャッシュ230b〜230cによって共用されるとき)によって、或いは、L3からL3へのキャストアウトを支援するためにL3キャッシュ232の水平方向接続によって、複数の可能なソースのL2キャッシュ230に接続される場合)、キャッシュ・コントローラ430は、キャッシュ・ディレクトリ412における関連のソース・フィールド420を参照することにより、ブロック724に示された決定を明示的に行う。
ブロック724における肯定的な決定に応答して、要求されたキャッシュ・ラインのコヒーレンシ状態に対する格下げは適用されず、プロセスは上述のブロック728に進む。一方、ブロック724において、キャッシュ・コントローラ430が否定的な決定を行う場合、プロセスはブロック726に進む。ブロック726では、キャッシュ・コントローラ430は、ブロック728においてキャッシュ・ラインを要求元のL2キャッシュ230に供給する前に、要求されたキャッシュ・ラインのコヒーレンシ状態を排他的所有状態から共用的所有(例えば、T)状態に格下げする。コヒーレンシ状態の格下げは、キャッシュラインについてのその後のすべての更新が、予約管理のための更新を知る必要のあるすべてのキャッシュにとって可視的に行われるということを保証する。しかる後、プロセスはブロック740において終了する。
次に図8を参照すると、本発明の第3、および第4実施例に従ってキャッシュ・ラインについてのコヒーレンシ状態の格下げを排他的所有状態に加える例示的な、L3からL3へのキャストアウト・プロセスに関する高レベルの論理的フローチャートが示される。上述のように、本発明の第1、第2、および第5実施例は、L3からL3へのキャストアウト時に排他的所有状態におけるキャッシュ・ラインに対してそのようなコヒーレンシ状態の格下げを適用しない。
図示のように、プロセスは、例えば、L2キャストアウト要求をサービスするためにはL3キャストアウト・オペレーションを行わなければならないという、図7のブロック710におけるL3キャッシュ・コントローラ430による決定に応答して開始する。次にプロセスはブロック802に進む。ブロック802では、キャッシュ・コントローラ430が、例えば、L2キャストアウト要求のターゲット・アドレスがマップする合同クラスにおけるディレクトリ・エントリのLRUフィールド418を参照することによって、キャストアウトすべきキャッシュ・ラインを選択する。次に、ブロック804において、キャッシュ・コントローラ430は、状態フィールド416が、キャストアウト・オペレーションの開始直前にキャッシュラインについての排他的所有状態(例えば、MまたはMe)を表わしたかどうかを決定する。その結果が否定的である場合、プロセスはブロック808に進む。ブロック808では、キャッシュ・コントローラ430が、データのキャッシュ・ラインと、その実アドレスと、キャッシュ・ディレクトリ412内に記録されたコヒーレンシ状態とを他のL3キャッシュ232に送る。他のL3キャッシュ232のキャッシュ・コントローラ430は、そのキャッシュ・ラインをデータ・アレイ410に収納し、キャストアウト要求の内容に基づいてそのキャッシュ・ディレクトリ412における対応するエントリのタグ・フィールド414、状態フィールド416、およびLRUフィールド418を更新する。宛先のL3キャッシュ232は、システム・メモリ108に対してすべての必要なキャストアウトを遂行する。この場合、キャッシュ・ラインに対して、キャストアウト・オペレーションによるコヒーレンシ状態の変更は行われない。ブロック808に続いて、プロセスはブロック810において終了する。
ブロック804に説明を戻すと、キャストアウトされるべきキャッシュ・ラインが排他的所有状態にあるという決定に応答して、L3キャッシュ・コントローラ430は、ブロック806に示されるように、キャッシュ・ラインの状態を排他的所有状態(例えば、MまたはMe)から共用的所有状態(例えば、T)に格下げする。次に、L3キャッシュ・コントローラ430は、共用的所有状態(例えば、T)を指定するL3キャストアウト要求を他のL3キャッシュ232に発生し、それによって、キャッシュラインについてのいずれのその後の更新も、予約管理に関する更新を知る必要のあるすべてのキャッシュにとって可視的に行われることを保証する(ブロック808)。しかる後、プロセスはブロック810において終了する。
次に図9を参照すると、本発明の第5実施例による例示的なL3からL3へのキャストアウト・プロセスの高レベルの論理的フローチャートが示される。上述のように、本発明の第5実施例は、L3からL3へのキャストアウト時に排他的所有状態におけるキャッシュ・ラインにコヒーレンシ状態の格下げを適用しないで、L3からL3へのキャストアウトと関連したソース追跡情報を送る。
図示のように、プロセスは、ブロック820において、例えば、L3キャストアウト・オペレーションがL2キャストアウト要求をサービスするために行われなければならない、図7のブロック710におけるL3キャッシュ・コントローラ430による決定に応答して開始する。次に、プロセスは、キャストアウトすべきキャッシュ・ラインをL3キャッシュ・コントローラ430が選択することを示すブロック822に進む。そのキャッシュ・ラインの選択は、例えば、L2キャストアウト要求のターゲット・アドレスがマップする合同クラスにおけるディレクトリ・エントリのLRUフィールド418を参照することによって行われる。次に、ブロック824において、キャッシュ・コントローラ430は、状態フィールド416が、キャストアウト・オペレーションの開始直前にそのキャッシュラインについての排他的所有状態(例えば、MまたはMe)を表わしたかどうかを決定する。その結果が否定的である場合、プロセスはブロック828に進む。ブロック828では、キャッシュ・コントローラ430が、データのキャッシュ・ラインと、その実アドレスと、キャッシュ・ディレクトリ412に記録されたコヒーレンシ状態とを含むL3キャストアウト要求を他のL3キャッシュ232に送る。他のL3キャッシュ232のキャッシュ・コントローラ430は、そのキャッシュ・ラインをキャッシュ・アレイ410に収納し、キャストアウト要求の内容に基づいてそのキャッシュ・ディレクトリ412における対応するエントリのタグ・フィールド414、状態フィールド416、およびLRUフィールド418を更新する。ディレクトリ・エントリのソース・フィールド420に対する更新は行われない。L3キャストアウト要求をサービスする場合、宛先のL3キャッシュ232はシステム・メモリ108に対する任意の必要なキャストアウトを行う。ブロック828に続いて、プロセスはブロック830において終了する。
ブロック824に説明を戻すと、キャスアウトされるべきキャッシュ・ラインが排他的所有状態にあるという決定に応答して、L3キャッシュ・コントローラ430は、データのキャッシュ・ラインと、その実アドレスと、キャッシュ・ディレクトリ412における関連のディレクトリ・エントリの状態フィールド416およびソース・フィールド420に記録されたコヒーレンシ状態およびソース追跡情報とを含むL3キャストアウト要求を形成する(ブロック826)。次に、L3キャッシュ・コントローラ430は、ブロック828に示されるように、L3キャストアウト要求を他のL3キャッシュ232に発生する。この場合、宛先のL3キャッシュ232のキャッシュ・コントローラ430はシステム・メモリ108に対する任意の必要なキャストアウトを行い、しかる後、L3キャストアウト要求によって表わされたキャストインを行う。特に、宛先のL3キャッシュ232のキャッシュ・コントローラ430はそのデータ・アレイ410にキャッシュ・ラインを収納し、L3キャストアウト要求の内容に基づいてそのキャッシュ・ディレクトリ412における対応するエントリのタグ・フィールド414、状態フィールド416、LRUフィールド418、およびソース・フィールド420を更新する。しかる後、プロセスはブロック830において終了する。
前述したように、本発明は、機能強化された予約承知のコヒーレンシ管理を提供する改良されたデータ処理システム、プロセッサ、およびデータ処理方法を提供する。或る実施例では、排他的所有状態におけるキャッシュ・ラインのコヒーレンシ状態が、上位レベルのキャッシュに存在する予約を明示するために、必要な場合、上位レベルのキャッシュから下位レベルのキャッシュに格下げされる。別の実施例では、排他的所有状態におけるキャストアウト・キャッシュのコヒーレンシ状態が、キャストアウト・キャッシュ・ラインを上位レベルのキャッシュに垂直方向にまたは下位レベルのキャッシュに水平方向に転送する際、必要な場合、格下げされる。いずれの場合も、キャストアウト・キャッシュ・ラインのコヒーレンシ状態は排他的所有状態から共用的所有状態(例えば、T)のような共用状態に格下げされる。共用的所有状態の使用は、宛先のキャッシュが、キャッシュ間のデータ介在によって他のキャッシュに対してキャストアウト・キャッシュ・ラインのソースを明示することを可能にし、キャッシュ・ラインがキャッシュ・コヒーレンシから排出される場合に、修正されたデータが失われないことを保証する。
好適な実施例に関連して説明したように本発明を詳細に示したが、本発明の真意および範囲を逸脱することなく形式および細部における種々の変更を行い得ることは当業者には明らかであろう。例えば、本発明はL1、L2、およびL3キャッシュが処理ユニット内に組み込まれているメモリ・ハイアラーキの特定の実施例に関連して説明されているが、追加のレベルのインライン・キャッシュ、ルックアサイド・キャッシュまたはビクティム・キャッシュを使用することが可能であること、および、実施例によっては、1つまたはそれ以上のキャッシュがオフ・チップであってもよいことは当業者には明らかであろう。更に、特定のコヒーレンシ状態を有する例示的なコヒーレンシ・プロトコルに関して本発明を説明したが、異なるまたは追加の状態名および/または状態定義を使用し得るということも明らかである。
本発明による例示的なデータ処理システムの高レベルのブロック図である。 図1のデータ処理システムにおける処理ユニットの実施例のより詳細なブロック図である。 図2の処理ユニットにおけるプロセッサ・コアおよびL2キャッシュのより詳細なブロック図である。 図2の処理ユニットにおけるL3キャッシュのより詳細なブロック図である。 図1のデータ処理システムにおけるプロセッサ・コアから受けたオペレーションをL2キャッシュ・メモリがサービスする例示的な方法の高レベルの論理的フローチャートである。 本発明の第1および第2実施例に従ってL2キャッシュ・メモリがキャストアウト・オペレーションを遂行する例示的な方法の高レベルの論理的フローチャートである。 本発明の第3、第4、および第5実施例に従って、L2キャッシュ・メモリから受けたオペレーションをL3キャッシュ・メモリがサービスする例示的な方法の高レベルの論理的フローチャートである。 本発明の第3および第4実施例に従って、L3からL3へのキャストアウト・オペレーションを遂行する例示的な方法の高レベルの論理的フローチャートである。 本発明の第5実施例に従って、L3からL3へのキャストアウト・オペレーションを遂行する例示的な方法の高レベルの論理的フローチャートである。
符号の説明
100 データ処理システム
102a、102b 処理ノード
104a〜104d 処理ユニット
110 システム相互接続網
114 ローカル相互接続網

Claims (18)

  1. 少なくとも上位レベルおよび下位レベルを含むマルチレベル・キャッシュ・ハイアラーキを有するマルチプロセッサ・データ処理システムにおいてコヒーレンシを管理する方法であって、
    キャッシュ・ラインを上位レベルのキャッシュ・メモリ内に排他的所有コヒーレンシ状態で保持するステップと、
    その後、前記キャッシュ・ラインを前記上位レベルのキャッシュ・メモリから取り除き、かつ、共用的所有コヒーレンシ状態の指示を含めて、前記キャッシュ・ラインについてのキャストアウト要求を、前記上位レベルのキャッシュ・メモリから下位レベルのキャッシュ・メモリに送るステップと、
    前記キャストアウト要求に応答して、前記キャストアウト要求に従って決定されたコヒーレンシ状態で前記キャッシュ・ラインを前記下位レベルのキャッシュ・メモリに配置するステップと、
    を含む、方法。
  2. 前記データ処理システムは予約レジスタを含み、
    前記上位レベルのキャッシュ・メモリが、前記キャッシュ・ラインについての予約に関して前記予約レジスタをチェックするステップと、
    前記予約レジスタが前記キャッシュ・ラインについての予約を表わす場合、前記上位レベルのキャッシュ・メモリが、前記キャストアウト要求内に前記共用的所有コヒーレンシ状態の前記指示を加えるステップと、
    前記予約レジスタが前記キャッシュ・ラインについての予約を表わさない場合、前記上位レベルのキャッシュ・メモリが、前記キャストアウト要求内に前記排他的所有コヒーレンシ状態の指示を加えるステップと、
    をさらに含む、請求項1に記載の方法。
  3. 前記共用的所有コヒーレンシ状態は、前記キャッシュ・ラインが、システム・メモリにおける対応するデータに関連した修正済みデータを含むこと、および前記キャッシュ・ラインを保持するキャッシュ・メモリが、前記修正済みデータによるシステム・メモリの更新を担当すること、を示す、請求項1に記載の方法。
  4. 前記下位レベルのキャッシュ・メモリが、前記共用的所有コヒーレンシ状態にあるキャッシュ・ラインを前記上位レベルのキャッシュ・メモリに供給するステップを更に含む、請求項1に記載の方法。
  5. 前記下位レベルのキャッシュ・メモリは、前記上位レベルのキャッシュ・メモリについてのビクティム・キャッシュであり、
    前記下位レベルのキャッシュ・メモリを、前記上位レベルのキャッシュ・メモリからキャストアウトされたキャッシュ・ラインで占めさせるステップを更に含む、請求項1に記載の方法。
  6. プロセッサ・コアと、
    前記プロセッサ・コアに接続された上位レベルのキャッシュ・メモリであって、
    キャッシュ・ラインを保持するデータ・アレイと、
    前記キャッシュ・ラインと関連したコヒーレンシ状態フィールドを含む、前記データ・アレイの内容のディレクトリと、
    前記データ・アレイから前記キャッシュ・ラインを取り除き、かつ、前記キャッシュ・ラインについてのキャストアウト要求を前記上位レベルのキャッシュ・メモリから下位レベルのキャッシュ・メモリに送るキャッシュ・コントローラであって、前記下位レベルのキャッシュ・メモリが前記キャストアウト要求によって指定されたコヒーレンシ状態で前記キャッシュ・ラインをバッファするように、共用的所有コヒーレンシ状態の指示を前記キャストアウト要求が含むことを特徴とする、キャッシュ・コントローラと、
    を含む、上位レベルのキャッシュ・メモリと、
    を備える、データ処理システム。
  7. 前記キャッシュ・コントローラに接続された予約レジスタを含み、
    前記キャッシュ・コントローラは、前記予約レジスタが前記キャッシュ・ラインについての予約を表わす場合には、前記キャストアウト要求内に前記共用的所有コヒーレンシ状態の指示を加え、前記予約レジスタが前記予約を表わさない場合には、前記キャストアウト要求内に排他的所有コヒーレンシ状態の指示を加える、
    請求項6に記載のデータ処理システム。
  8. 前記下位レベルのキャッシュ・メモリは前記上位レベルのキャッシュ・メモリに接続される、請求項6に記載のデータ処理システム。
  9. 複数の上位レベルのキャッシュ・メモリおよび1つの下位レベルのキャッシュ・メモリを有するマルチプロセッサ・データ処理システムにおいてコヒーレンシを管理する方法であって、
    キャッシュ・ラインを前記複数の上位レベルのキャッシュ・メモリのうちの第1の上位レベルのキャッシュ・メモリから取り除き、かつ、排他的所有コヒーレンシ状態の指示を含めて、前記キャッシュ・ラインについてのキャストアウト要求を、前記第1の上位レベルのキャッシュ・メモリから下位レベルのキャッシュ・メモリに送るステップと、
    前記キャストアウト要求に応答して、前記キャッシュ・ラインを前記下位レベルのキャッシュ・メモリに前記排他的所有コヒーレンシ状態で配置し、かつ、前記複数の上位レベルのキャッシュ・メモリのどれが前記キャッシュ・ラインのソースであったかを表わすソース指示を前記下位レベルのキャッシュ・メモリに記録するステップと、
    前記複数の上位レベルのキャッシュ・メモリの1つからのその後のデータ要求に応答して、前記データ要求が前記キャッシュ・ラインの前記ソースから受取られたかどうかを前記ソース指示を参照して決定し、その決定の結果が肯定的である場合、前記データ要求に応答して前記キャッシュ・ラインを前記排他的所有コヒーレンシ状態で供給するステップと
    を含む、方法。
  10. 前記下位レベルのキャッシュ・メモリは、前記データ要求が前記キャッシュ・ラインの前記ソースから受取られなかった場合、前記データ要求に応答して前記キャッシュ・ラインを共用的所有コヒーレンシ状態で供給する、請求項9に記載の方法。
  11. 前記下位レベルのキャッシュ・メモリは、前記第1の上位レベルのキャッシュ・メモリと、前記上位レベルのキャッシュ・メモリのうちの第2の上位レベルのキャッシュ・メモリとに接続された、共有ビクティム・キャッシュであり、
    前記第1の上位レベルのキャッシュ・メモリおよび前記第2の上位レベルのキャッシュ・メモリのうちの1つから前記データ要求を受取るステップを更に含む、請求項9に記載の方法。
  12. 前記下位レベルのキャッシュ・メモリは第1の下位レベルのキャッシュ・メモリであり、前記キャストアウト要求は第2のキャストアウト要求であり、
    前記第1の下位レベルのキャッシュ・メモリが前記キャッシュ・ラインを置換のために選択するステップと、
    前記キャッシュ・ラインを置換のために選択するステップに応答して、前記第1の下位レベルのキャッシュ・メモリから第2の下位レベルのキャッシュ・メモリに第2のキャストアウト要求を送るステップと
    を更に含む、請求項9に記載の方法。
  13. 前記第2のキャストアウト要求は共用的所有コヒーレンシ状態の指示を含む、請求項12に記載の方法。
  14. 第1のプロセッサ・コアおよび第2のプロセッサ・コアと、
    前記第1のプロセッサ・コアに接続された第1の上位レベルのキャッシュ・メモリおよび前記第2のプロセッサ・コアに接続された第2の上位レベルのキャッシュ・メモリと、
    前記第1の上位レベルのキャッシュ・メモリおよび前記第2の上位レベルのキャッシュ・メモリ、に接続された下位レベルのキャッシュ・メモリであって、
    データ・アレイと、
    前記データ・アレイの内容のディレクトリと、
    排他的所有コヒーレンシ状態を表わすキャストアウト要求を受取ったことに応答して、キャッシュ・ラインを前記データ・アレイに前記排他的所有コヒーレンシ状態で配置し、前記上位レベルのキャッシュ・メモリのどちらが前記キャッシュ・ラインのソースであったかを表わすソース指示を前記ディレクトリに記録し、前記上位レベルのキャッシュ・メモリの1つからのその後のデータ要求に応答して、前記データ要求が前記キャッシュ・ラインの前記ソースから受取られたかどうかを前記ソース指示を参照して決定し、その決定の結果が肯定的である場合、前記データ要求に応答して前記キャッシュ・ラインを前記排他的所有コヒーレンシ状態で供給する、キャッシュ・コントローラと、
    を含むキャッシュ・メモリと、
    を備えるデータ処理システム。
  15. 前記キャッシュ・コントローラは、前記データ要求が前記キャッシュ・ラインの前記ソースから受取られなかった場合、前記データ要求に応答して前記キャッシュ・ラインを共用的所有コヒーレンシ状態で供給する、請求項14に記載のデータ処理システム。
  16. 前記下位レベルのキャッシュ・メモリは、前記第1の上位レベルのキャッシュ・メモリと、前記第2の上位レベルのキャッシュ・メモリとに接続された、共有ビクティム・キャッシュである、請求項14に記載のデータ処理システム。
  17. 前記下位レベルのキャッシュ・メモリは第1の下位レベルのキャッシュ・メモリであり、
    前記第1の下位レベルのキャッシュ・メモリに接続された第2の下位レベルのキャッシュ・メモリを含み、
    前記キャストアウト要求は第2のキャストアウト要求であり、
    前記キャッシュ・コントローラは、前記キャッシュ・ラインを置換のために選択し、かつ、前記選択したことに応答して、前記第1の下位レベルのキャッシュ・メモリから前記第2の下位レベルのキャッシュ・メモリに第2のキャストアウト要求を送る、
    請求項14に記載のデータ処理システム。
  18. 前記第2のキャストアウト要求は共用的所有コヒーレンシ状態の指示を含む、請求項17に記載のデータ処理システム。
JP2007233730A 2006-09-19 2007-09-10 複数の上位レベルのキャッシュ・メモリおよび1つの下位レベルのキャッシュ・メモリを有するマルチプロセッサ・データ処理システムにおいてコヒーレンシを管理する方法、およびデータ処理システム Active JP5190236B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/532981 2006-09-19
US11/532,981 US7689771B2 (en) 2006-09-19 2006-09-19 Coherency management of castouts

Publications (2)

Publication Number Publication Date
JP2008077650A true JP2008077650A (ja) 2008-04-03
JP5190236B2 JP5190236B2 (ja) 2013-04-24

Family

ID=39190039

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007233730A Active JP5190236B2 (ja) 2006-09-19 2007-09-10 複数の上位レベルのキャッシュ・メモリおよび1つの下位レベルのキャッシュ・メモリを有するマルチプロセッサ・データ処理システムにおいてコヒーレンシを管理する方法、およびデータ処理システム

Country Status (3)

Country Link
US (1) US7689771B2 (ja)
JP (1) JP5190236B2 (ja)
CN (1) CN101149706B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198490A (ja) * 2009-02-26 2010-09-09 Fujitsu Ltd キャッシュ制御装置

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8296520B2 (en) * 2007-12-19 2012-10-23 International Business Machines Corporation System and method for optimizing neighboring cache usage in a multiprocessor environment
US8327072B2 (en) 2008-07-23 2012-12-04 International Business Machines Corporation Victim cache replacement
US8347037B2 (en) * 2008-10-22 2013-01-01 International Business Machines Corporation Victim cache replacement
US8209489B2 (en) * 2008-10-22 2012-06-26 International Business Machines Corporation Victim cache prefetching
US8117397B2 (en) * 2008-12-16 2012-02-14 International Business Machines Corporation Victim cache line selection
US8499124B2 (en) * 2008-12-16 2013-07-30 International Business Machines Corporation Handling castout cache lines in a victim cache
US8225045B2 (en) * 2008-12-16 2012-07-17 International Business Machines Corporation Lateral cache-to-cache cast-in
US8489819B2 (en) 2008-12-19 2013-07-16 International Business Machines Corporation Victim cache lateral castout targeting
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
US9110808B2 (en) * 2009-12-30 2015-08-18 International Business Machines Corporation Formation of an exclusive ownership coherence state in a lower level cache upon replacement from an upper level cache of a cache line in a private shared owner state
US9189403B2 (en) 2009-12-30 2015-11-17 International Business Machines Corporation Selective cache-to-cache lateral castouts
US8364904B2 (en) 2010-06-21 2013-01-29 International Business Machines Corporation Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer
US8352687B2 (en) 2010-06-23 2013-01-08 International Business Machines Corporation Performance optimization and dynamic resource reservation for guaranteed coherency updates in a multi-level cache hierarchy
US9104583B2 (en) 2010-06-24 2015-08-11 International Business Machines Corporation On demand allocation of cache buffer slots
US20110320863A1 (en) * 2010-06-24 2011-12-29 International Business Machines Corporation Dynamic re-allocation of cache buffer slots
US20130219125A1 (en) * 2012-02-21 2013-08-22 Microsoft Corporation Cache employing multiple page replacement algorithms
CN103294612B (zh) * 2013-03-22 2014-08-13 浪潮电子信息产业股份有限公司 在多级缓存一致性域系统局部域构造Share-F状态的方法
US20150186289A1 (en) * 2013-12-26 2015-07-02 Cambridge Silicon Radio Limited Cache architecture
CN104679669B (zh) * 2014-11-27 2018-04-27 华为技术有限公司 高速缓存cache存储器系统及访问缓存行cache line的方法
US10585800B2 (en) 2017-06-16 2020-03-10 International Business Machines Corporation Reducing cache transfer overhead in a system
CN110232030B (zh) * 2019-06-12 2021-08-10 上海兆芯集成电路有限公司 多芯片系统及缓存处理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH052534A (ja) * 1991-06-26 1993-01-08 Agency Of Ind Science & Technol 階層キヤツシユ・メモリ装置
WO2004104794A2 (en) * 2003-05-20 2004-12-02 Newisys, Inc. Methods and apparatus for providing cache state information
WO2006085140A2 (en) * 2004-06-24 2006-08-17 Sony Computer Entertainment Inc. Disable write back on atomic reserved line in a small cache system
WO2007094046A1 (ja) * 2006-02-14 2007-08-23 Fujitsu Limited コヒーレンシ維持装置およびコヒーレンシ維持方法
JP2008016033A (ja) * 2006-07-06 2008-01-24 Internatl Business Mach Corp <Ibm> 階層テーブルを管理するための方法およびコンピュータ・システム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802571A (en) * 1996-10-21 1998-09-01 International Business Machines Corporation Apparatus and method for enforcing data coherency in an information handling system having multiple hierarchical levels of cache memory
US6334172B1 (en) * 1998-02-17 2001-12-25 International Business Machines Corporation Cache coherency protocol with tagged state for modified values
US6275907B1 (en) * 1998-11-02 2001-08-14 International Business Machines Corporation Reservation management in a non-uniform memory access (NUMA) data processing system
US6360301B1 (en) * 1999-04-13 2002-03-19 Hewlett-Packard Company Coherency protocol for computer cache
US6442653B1 (en) * 1999-06-24 2002-08-27 International Business Machines Corporation Data processing system, cache, and method that utilize a coherency state to indicate the latency of cached data
US6279086B1 (en) * 1999-08-04 2001-08-21 International Business Machines Corporation Multiprocessor system bus with combined snoop responses implicitly updating snooper LRU position
US6275909B1 (en) * 1999-08-04 2001-08-14 International Business Machines Corporation Multiprocessor system bus with system controller explicitly updating snooper cache state information
US6725334B2 (en) * 2000-06-09 2004-04-20 Hewlett-Packard Development Company, L.P. Method and system for exclusive two-level caching in a chip-multiprocessor
US7146468B2 (en) * 2002-04-24 2006-12-05 Ip-First, Llc. Cache memory and method for handling effects of external snoops colliding with in-flight operations internally to the cache
US6993631B2 (en) * 2002-05-15 2006-01-31 Broadcom Corporation L2 cache maintaining local ownership of remote coherency blocks
US6990559B2 (en) * 2002-10-03 2006-01-24 Hewlett-Packard Development Company, L.P. Mechanism for resolving ambiguous invalidates in a computer system
US7237070B2 (en) * 2005-04-19 2007-06-26 International Business Machines Corporation Cache memory, processing unit, data processing system and method for assuming a selected invalid coherency state based upon a request source

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH052534A (ja) * 1991-06-26 1993-01-08 Agency Of Ind Science & Technol 階層キヤツシユ・メモリ装置
WO2004104794A2 (en) * 2003-05-20 2004-12-02 Newisys, Inc. Methods and apparatus for providing cache state information
JP2007501479A (ja) * 2003-05-20 2007-01-25 ニューイシス・インコーポレーテッド キャッシュ状態情報を提供する方法および装置
WO2006085140A2 (en) * 2004-06-24 2006-08-17 Sony Computer Entertainment Inc. Disable write back on atomic reserved line in a small cache system
JP2008503821A (ja) * 2004-06-24 2008-02-07 株式会社ソニー・コンピュータエンタテインメント 小容量キャッシュシステムにおけるアトミック予約ライン上のライトバックを無効化する方法およびシステム
WO2007094046A1 (ja) * 2006-02-14 2007-08-23 Fujitsu Limited コヒーレンシ維持装置およびコヒーレンシ維持方法
JP2008016033A (ja) * 2006-07-06 2008-01-24 Internatl Business Mach Corp <Ibm> 階層テーブルを管理するための方法およびコンピュータ・システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198490A (ja) * 2009-02-26 2010-09-09 Fujitsu Ltd キャッシュ制御装置

Also Published As

Publication number Publication date
US7689771B2 (en) 2010-03-30
CN101149706A (zh) 2008-03-26
US20080071994A1 (en) 2008-03-20
CN101149706B (zh) 2011-04-20
JP5190236B2 (ja) 2013-04-24

Similar Documents

Publication Publication Date Title
JP5190236B2 (ja) 複数の上位レベルのキャッシュ・メモリおよび1つの下位レベルのキャッシュ・メモリを有するマルチプロセッサ・データ処理システムにおいてコヒーレンシを管理する方法、およびデータ処理システム
JP4928812B2 (ja) タグ付きキャッシュ状態に基づいて下位レベル・キャッシュへの参照なしに相互接続ファブリック上にリクエストを送出するためのデータ処理システム、キャッシュ・システム、および方法
US9189403B2 (en) Selective cache-to-cache lateral castouts
US8347037B2 (en) Victim cache replacement
US7620776B2 (en) Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of modified memory blocks
US8117397B2 (en) Victim cache line selection
US8499124B2 (en) Handling castout cache lines in a victim cache
US8209489B2 (en) Victim cache prefetching
JP5116418B2 (ja) マルチプロセッサ・データ処理システムにおいて、データを処理する方法、マルチプロセッサ・データ処理システムのための処理ユニット、およびデータ処理システム
US7395376B2 (en) Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks
US8225045B2 (en) Lateral cache-to-cache cast-in
US8489819B2 (en) Victim cache lateral castout targeting
US8949540B2 (en) Lateral castout (LCO) of victim cache line in data-invalid state
US8117390B2 (en) Updating partial cache lines in a data processing system
US20100262782A1 (en) Lateral Castout Target Selection
JP5004571B2 (ja) 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法
EP2122470B1 (en) System and method for implementing an enhanced hover state with active prefetches
US8176254B2 (en) Specifying an access hint for prefetching limited use data in a cache hierarchy

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

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120727

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130128

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160201

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5190236

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150