JP5064753B2 - 方法、コンピュータ・プログラム製品、コンピュータ・プログラム、情報ハンドリング・システム(デフォルト・データ転送コヒーレント・キャッシング・エージェントのシステムおよび方法) - Google Patents

方法、コンピュータ・プログラム製品、コンピュータ・プログラム、情報ハンドリング・システム(デフォルト・データ転送コヒーレント・キャッシング・エージェントのシステムおよび方法) Download PDF

Info

Publication number
JP5064753B2
JP5064753B2 JP2006273480A JP2006273480A JP5064753B2 JP 5064753 B2 JP5064753 B2 JP 5064753B2 JP 2006273480 A JP2006273480 A JP 2006273480A JP 2006273480 A JP2006273480 A JP 2006273480A JP 5064753 B2 JP5064753 B2 JP 5064753B2
Authority
JP
Japan
Prior art keywords
cache line
request
node controller
determining
exclusive
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
JP2006273480A
Other languages
English (en)
Other versions
JP2007179528A (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 JP2007179528A publication Critical patent/JP2007179528A/ja
Application granted granted Critical
Publication of JP5064753B2 publication Critical patent/JP5064753B2/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
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)

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

本発明は、デフォルト・データ転送コヒーレント・キャッシング・エージェントのシステムおよび方法に関する。具体的には、本発明は、スケーラブル・ノード・コントローラ・コンピュータ・システムを効果的にサポートするためにMESIFプロトコルの「Forward」状態制御を変更するシステムおよび方法に関する。
キャッシュ・コヒーレンシは、コンピュータ・システムの一体の要素であり、データが失われるか上書きされることがなくなるようにキャッシュを管理するプロセスである。例えば、データがキャッシュ内で更新されたが、まだそのターゲットのメモリまたはディスクに転送されてないときに、破壊の可能性が高い。キャッシュ・コヒーレンシは、キャッシュを記憶するアルゴリズムおよびプロトコルを使用して得られる。対称マルチプロセッシング(SMP)システムでは、複数のプロセッサが同一のメモリ空間を共用するので、キャッシュ・コヒーレンシがさらにクリティカルである。
1つの既存のキャッシュ・コヒーレンシ・プロトコルが、MESIF(Modify,Exclusive, Shared, Invalid, Forward)プロトコルである。キャッシュ・ラインが「modified」状態であるときに、キャッシング・エージェントは、コンピュータ・システム内に正しいデータだけを有する。キャッシュ・ラインが「exclusive」状態である(データが変更されていない)ときに、キャッシング・エージェントは、キャッシュ・ラインを変更するために排他的制御を有する。キャッシュ・ラインが「shared」状態であるときに、複数のキャッシング・エージェントが、そのキャッシュ・メモリ内に読み取るべきキャッシュ・ラインを有する可能性があり、各コピーは正しい。あるキャッシング・エージェントのキャッシュ・ラインが「invalid」状態であるときに、別のプロセッサが、対応するメモリ部分を更新したか、キャッシュ・ラインのexclusive状況を有するので、そのキャッシング・エージェントのコピーは正しくない。
最後に、キャッシング・エージェントが、キャッシュ・ライン「転送」状態制御を有するときに、そのキャッシング・エージェントは、キャッシュ・ライン要求を受け取ったときにそのキャッシュ・ラインを要求元のキャッシング・エージェントに転送する。転送状態は、ローカル・キャッシング・エージェントがキャッシュ・ラインのためにメイン・メモリにアクセスする必要を無くし、これによって、総合的なシステム性能が改善される。しかし、見つかっている課題は、転送状態が、スケーラブル・ノード・コントローラを使用するシステムについて最適化されていないということである。これらのシステムについて、リモート・プロセッサへのキャッシュ・アクセスから生じる待ち時間は、転送状態管理に応じて深刻になる場合がある。
したがって、必要なものは、スケーラブル・ノード・コントローラを使用するシステムについてMESIFプロトコルのキャッシュ・ライン転送状態制御を効果的に管理するシステムおよび方法である。
前述の課題が、ノード・コントローラだけがMESIFプロトコルのキャッシュ・ライン転送状態制御を有することを許可するシステムおよび方法を使用することによって解決されることが発見された。ノード・コントローラが、ローカル・キャッシング・エージェントから要求を受け取ったときに、そのノード・コントローラは、対応するキャッシュ・ラインをローカル・キャッシング・エージェントに送り、その間ずっと、キャッシュ・ライン転送状態制御を維持する。ノード・コントローラが、リモート・ノード・コントローラから要求を受け取ったときには、そのノード・コントローラは、キャッシュ・ラインを、キャッシュ・ライン転送状態制御と共にリモート・ノード・コントローラに送る。
ノード・コントローラは、ローカル・キャッシング・エージェント(ローカル・プロセッサ)またはリモート・ノード・コントローラのいずれかからキャッシュ・ライン要求を受け取る。ノード・コントローラは、キャッシュ・ライン要求のソース、要求タイプ、およびキャッシュ・ラインの現在の状況に基づいて、特定のアクションを実行する。ノード・コントローラが、ローカル・キャッシング・エージェントからshared要求を受け取り、対応するキャッシュ・ラインの現在の状況がsharedであるときには、そのノード・コントローラは、単純にそのキャッシュ・ラインをローカル・キャッシング・エージェントに送る。例えば、2つのプロセッサが、特定のキャッシュ・ラインを共用しており(例えば読み取っており)、第3のプロセッサが、同一のキャッシュ・ラインの読み取りを望む場合がある。
ノード・コントローラが、ローカル・キャッシング・エージェントからshared要求を受け取り、対応するキャッシュ・ラインの現在の状況がexclusiveであるときには、そのノード・コントローラは、まず、exclusive状態のキャッシュ・ラインを有するキャッシング・エージェントである制御するエージェントに、状況を「shared」にダウングレードするように通知する。次に、ノード・コントローラは、キャッシュ・ラインをローカル・キャッシング・エージェントに送り、そのキャッシュ・ラインがshared状態であることのログを更新する。
ノード・コントローラが、ローカル・キャッシング・エージェントからexclusive要求を受け取るときには、キャッシュ・ラインの現在の状況は多少重要でない。というのは、ローカル・キャッシング・エージェントが排他的アクセスを要求するので、ノード・コントローラが、共用するキャッシング・エージェントならびに制御するエージェントに、状況を「invalid」にダウングレードするように通知するからである。この通知が送られたならば、ノード・コントローラは、キャッシュ・ラインをローカル・キャッシング・エージェントに送り、次に、そのログを更新して、そのキャッシュ・ラインの制御するエージェントとしてそのローカル・キャッシング・エージェントを識別する。
ノード・コントローラが、リモート・ノード・コントローラからremote shared要求を受け取り、そのキャッシュ・ラインの現在の状況がsharedであるときには、ノード・コントローラは、そのキャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送る。次に、ノード・コントローラは、そのログを更新して、リモート・ノード・コントローラが現在その特定のキャッシュ・ラインのキャッシュ・ライン転送状態制御を有することを識別する。
ノード・コントローラが、リモート・ノード・コントローラからremote shared要求を受け取り、その対応するキャッシュ・ラインの現在の状況がexclusiveであるときには、ノード・コントローラは、まず、制御するエージェントに、状況をsharedにダウングレードするように通知する。ノード・コントローラは、次に、そのキャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送る。次に、ノード・コントローラは、そのログを更新して、リモート・ノード・コントローラが現在その特定のキャッシュ・ラインのキャッシュ・ライン転送状態制御を有することを識別する。
最後に、ノード・コントローラが、リモート・ノード・コントローラからremoteexclusive要求を受け取るときには、これは、キャッシュ・ラインの現在の状況に関して多少重要でない。ノード・コントローラは、まず、共用するキャッシング・エージェントならびに制御するエージェントに、状況を「invalid」にダウングレードするように通知する。通知が送られたならば、ノード・コントローラは、そのキャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送る。次に、ノード・コントローラは、そのログを更新して、リモート・ノード・コントローラが現在その特定のキャッシュ・ラインの転送状態制御を有することを識別する。
前述は、要約であり、したがって、必要により、詳細の単純化、一般化、および省略を含む。その結果、当業者は、この要約が、例示的に過ぎず、いかなる形でも制限的であることを意図されていないことを諒解するであろう。本発明の他の態様、発明的特徴、および利益は、請求項のみによって定義されるが、下で示す非制限的な詳細な説明から明白になる。
添付図面を参照することによって、本発明をよりよく理解でき、その多数の目的、特徴および利益が当業者に明白になる。
次は、本発明の実施例の詳細な説明を提供することを意図されたものであって、本発明自体の制限と解釈してはならない。そうではなく、任意の個数の変形形態を本発明の範囲に含めることができ、本発明の範囲は、この説明に添付された請求項で定義される。
図1は、本明細書に記載の発明なしの、既存のMESIF(Modify,Exclusive, Shared, Invalid, Forward)プロトコルに従うコンピュータ・システムを示す図である。図1に示された各プロセッサおよびノード・コントローラに、キャッシング・エージェントが含まれ、このキャッシング・エージェントが、キャッシュ・ラインを要求し、受け取る。プロセッサは、特定のキャッシュ・ラインの「ホーム・ノード」を判定するためにメモリ・マップにアクセスし、ホーム・ノードは、キャッシュ・ラインの物理位置である。
図1の例は、プロセッサA 100が、読取のみのためにキャッシュ・ラインを要求することから始まる。プロセッサA 100は、プロセッサD 115が、その特定のキャッシュ・ラインのホーム・ノードであると判定し、要求150をプロセッサD 115に送る。さらに、プロセッサA 100は、「スヌープ」152、154、および156を、それぞれプロセッサB 105、プロセッサC 110、およびノード・コントローラY 120に送る。スヌープは、ホーム・ノードでない他のローカル・キャッシング・エージェントへの、ホーム・ノード・キャッシング・エージェント以外のキャッシング・エージェントが要求されたキャッシュ・ラインの制御を有するときの状況を処理する要求である(下を参照されたい)。
図1に示された実施例では、プロセッサC 110が、特定のキャッシュ・ラインの制御を有し、「キャッシュ・ライン転送状態制御」も有する(既存のMESIFプロトコルに基づいて)。キャッシュ・ライン転送状態制御を有するキャッシング・エージェントは、キャッシュ・ラインをローカル・キャッシング・エージェントに転送する責任を負う。したがって、プロセッサC 110は、キャッシュ・ラインならびにキャッシュ・ライン転送状態制御をプロセッサA 100に転送する(転送160)。さらに、プロセッサC 110は、そのアクションを示すスヌープ応答162をプロセッサD 115(ホーム・ノード)に送る。プロセッサB 105、プロセッサC 110、およびノード・コントローラY 120も、それぞれスヌープ応答158、162、および159をプロセッサD 115に送る。
図1の実施例を続けると、今度はプロセッサE 125(リモート・プロセッサ)が、同一のキャッシュ・ラインを読み取ることを要求する。したがって、プロセッサE 125は、要求170をノード・コントローラZ 145に送り、ノード・コントローラZ 145が、要求170をノード・コントローラY 120に送る。この時点で、既存技術は、プロセッサE 125にキャッシュ・ラインを与える2つの代替案を許す。
第1の代替案は、ノード・コントローラYに、キャッシュ・ライン転送状態制御と共にキャッシュ・ラインをプロセッサE 125に送らせることである(転送N 175)。この代替案の不利益は、キャッシュ・ライン転送状態制御の複雑な管理であり、これは、プロセッサA 100およびプロセッサE 125が、同時にキャッシュ・ライン転送状態制御を有することをもたらす可能性がある。
第2の代替案は、プロセッサA 100に、キャッシュ・ライン転送状態制御と共にキャッシュ・ラインをノード・コントローラY 120を介してプロセッサE 125に送らせることである(転送P 180)。この代替案の不利益は、データ待ち時間の大きい増加があることであり、これは、総合的なシステム性能を劣化させる。したがって、本明細書で説明する発明を使用して、ノード・コントローラだけがキャッシュ・ライン転送状態制御を有するようにさせるようにMESIFプロトコルを変更することによって、システムの複雑さおよびシステム待ち時間が減る(さらなる詳細については図2〜6および対応するテキストを参照されたい)。
図2は、本明細書で説明する発明を使用して変更されたMESIFプロトコルに従うコンピュータ・システムを示す図である。変更されたMESIFプロトコルは、ノード・コントローラだけがキャッシュ・ライン転送状態制御を有することを可能にする。その結果、ノード・コントローラは、ローカル・キャッシュ・エージェントにキャッシュ・ラインを送ると同時に、キャッシュ・ライン転送状態制御を維持する。ノード・コントローラが、リモート・ノード・コントローラから要求を受け取ったときに、ノード・コントローラは、キャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送る。プロセッサA 100、B 105、C 110、D 115、ならびにノード・コントローラY 120およびZ 145は、図1に示されたものと同一である。
図2の実施例は、図1と同様に、プロセッサA 100が、キャッシュ・ライン「shared要求」(読取目的のみ)を要求することから始まる。プロセッサA 100は、プロセッサD 115が、その特定のキャッシュ・ラインのホーム・ノードであると判定し、要求200をプロセッサD 115に送る。さらに、プロセッサA 100は、「スヌープ」202、204、および206を、それぞれプロセッサB 105、プロセッサC 110、およびノード・コントローラY 120に送る。
一実施形態で、shared要求は、「Bus Read Line」(BRL)要求である。この実施形態では、キャッシング・エージェントは、キャッシュ・ラインがshared、exclusive、invalidのエンタープライズ・ティア・コンポーネントであるかどうかを知らない。キャッシュ・ラインが、別のプロセッサまたはノード・コントローラで使用中である場合に、要求元エージェントは、BRL要求の結果として、shared状態でそのラインをキャッシングする。
図2に示された実施例では、プロセッサC 110が、プロセッサA 100によって要求されたキャッシュ・ライン(exclusive状態)の制御を有する。しかし、本明細書で説明する発明を使用すると、プロセッサC 110は、キャッシュ・ライン転送状態制御を有しない。そうではなく、ノード・コントローラY 120がキャッシュ・ライン転送状態制御を有する。プロセッサB 105、プロセッサC 110、およびノード・コントローラY 120は、それぞれスヌープ応答208、210、および212をプロセッサD 115に送る。
ノード・コントローラY 120がキャッシュ・ライン転送状態制御を有することの結果として、ノード・コントローラY 120は、メッセージ220をプロセッサC 110に送り、このメッセージは、プロセッサC 110に、その状況をshared状態にダウングレードするように指示する。次に、ノード・コントローラY 120は、キャッシュ・ラインをプロセッサA 100に送り(送出215)、その間ずっと、キャッシュ・ライン転送状態制御を維持する。
図2の実施例を続けると、今度は、プロセッサE 125(リモート・プロセッサ)が、同一のキャッシュ・ラインを読み取ることを要求する。したがって、プロセッサE 125は、要求230をノード・コントローラZ 145に送り、ノード・コントローラZ 145が、要求230をノード・コントローラY 120に送る。ノード・コントローラY 120は、キャッシュ・ライン転送状態制御を有するので、ノード・コントローラY 120は、キャッシュ・ラインをキャッシュ・ライン転送状態制御と共にノード・コントローラZ 145に送る(転送240)。転送240を送る前に、ノード・コントローラY 120は、状況をダウングレードするように通知するメッセージを1つまたは複数のローカル・プロセッサ(プロセッサA 100、プロセッサB 105、プロセッサC 110、およびプロセッサD 115)に送ることができる。このメッセージは、そのキャッシュ・ラインの現在の状況および要求230の要求「タイプ」(sharedまたはexclusive)に基づく(状況ダウングレードに関するさらなる詳細については、図3および対応するテキストを参照されたい)。
ノード・コントローラZ 145は、キャッシュ・ラインおよびキャッシュ・ライン転送状態制御を受け取ったならば、キャッシュ・ライン転送状態制御を保持し、キャッシュ・ラインをプロセッサE 125に送る(送出250)。その結果、ノード・コントローラY 120およびZ 145だけが、キャッシュ・ライン転送状態制御の所有を有する。
図3は、キャッシュ・ライン要求タイプおよびキャッシュ・ラインの現在の状況に基づくノード・コントローラ・アクションを示す表である。キャッシュ・ライン要求タイプを、ノード・コントローラがサポートするプロセッサからなどのローカル要求とすることができ、あるいは、キャッシュ・ライン要求を、リモート・ノード・コントローラからなどのリモート要求とすることができる。キャッシュ・ラインの現在の状況は、1つまたは複数のキャッシング・エージェントがあるキャッシュ・ラインを読み取っている場合には「shared」とすることができ、あるいは、キャッシュ・ラインの現在の状況は、キャッシング・エージェントのうちの1つがexclusive状態でキャッシュ・ラインを有し、そのキャッシュ・ラインの変更を意図しているが、まだそのキャッシュ・ラインを変更していない場合に「exclusive」とすることができる。
一実施形態で、exclusive要求は、「Bus Read InvalidateLine」(BRIL)要求である。この実施形態で、キャッシング・エージェントは、キャッシュ・ラインが現在shared、exclusive、invalidなどであるかどうかを知らない。キャッシング・エージェントが、キャッシュ・ラインの内容を変更する意図をもってキャッシュ・ラインを読み取ることを要求する(BRIL要求)ときに、そのキャッシュ・ラインの状態が、現在そのキャッシュ・ラインを使用している他のキャッシング・エージェントで「invalid」にダウングレードされる。
表300に、列310から330が含まれる。列310に、ノード・コントローラがローカル・キャッシング・エージェントまたはリモート・ノード・コントローラから受け取る様々な要求タイプが含まれる。列320に、「shared」または「exclusive」のキャッシュ・ラインの現在の状況識別子が含まれ、列330に、列310の要求タイプおよび列320のキャッシュ・ラインの現在の状況に基づいてノード・コントローラが実行するアクションが含まれる。
行340から360に、ノード・コントローラがローカル・キャッシング・エージェントからキャッシュ・ライン要求を受け取ったときに行われるアクションを示す。行340は、ローカル・キャッシング・エージェントからshared要求を受け取ることと、対応するキャッシュ・ラインの現在の状況がsharedであることによって、ノード・コントローラが、単純にそのキャッシュ・ラインをローカル・キャッシング・エージェントに送ることを示す。例えば、2つのプロセッサが、特定のキャッシュ・ラインを共用しており(例えば、読み取っており)、第3のプロセッサが、同一のキャッシュ・ラインを読み取ることを望む場合がある。
行350は、ノード・コントローラが、ローカル・キャッシング・エージェントからshared要求を受け取り、対応するキャッシュ・ラインの現在の状況がexclusiveであるときに、ノード・コントローラが、まず、状況を「shared」にダウングレードするように制御するエージェントに通知することを示し、この制御するエージェントは、exclusive状態のキャッシュ・ラインを有するキャッシング・エージェントである。次に、ノード・コントローラは、キャッシュ・ラインをローカル・キャッシング・エージェントに送り、次に、ノード・コントローラは、キャッシュ・ラインがshared状況であることのログを更新する。
行360は、ノード・コントローラがexclusive要求タイプを受け取ったときに、これが、キャッシュ・ラインの現在の状況に関して多少重要でないことを示す。というのは、ローカル・キャッシング・エージェントが排他的アクセスを要求するので、ノード・コントローラが、共用するキャッシング・エージェントならびに制御するエージェントに、状況をinvalidにダウングレードするように通知するからである。この通知が送られたならば、ノード・コントローラは、キャッシュ・ラインをローカル・キャッシング・エージェントに送り、次に、そのログを更新して、そのキャッシュ・ラインの制御するエージェントとしてそのローカル・キャッシング・エージェントを識別する。
行370から390は、ノード・コントローラがリモート・ノード・コントローラから要求を受け取ったときに行われるアクションを示す。行370は、ノード・コントローラがremote shared要求を受け取り、そのキャッシュ・ラインの現在の状況がsharedであるときに、ノード・コントローラが、そのキャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送ることを示す。次に、ノード・コントローラは、そのログを更新して、リモート・ノード・コントローラが、現在、その特定のキャッシュ・ラインのキャッシュ・ライン転送状態制御を有することを識別する。
行380は、ノード・コントローラが、remote shared要求を受け取り、対応するキャッシュ・ラインの現在の状況がexclusiveであるときに、ノード・コントローラが、まず、状況をsharedにダウングレードするように制御するエージェントに通知することを示す。次に、ノード・コントローラは、キャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送る。次に、ノード・コントローラは、そのログを更新して、リモート・ノード・コントローラが、現在、その特定のキャッシュ・ラインのキャッシュ・ライン転送状態制御を有することを識別する。
行390は、ノード・コントローラがremote exclusive要求タイプを受け取ったときに、これが、行360に示されているように、キャッシュ・ラインの現在の状況に関して多少重要でないことを示す。ノード・コントローラは、まず、共用するキャッシング・エージェントならびに制御するエージェントに、状況をinvalidにダウングレードするように通知する。この通知が送られたならば、ノード・コントローラは、キャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送る。次に、ノード・コントローラは、そのログを更新して、リモート・ノード・コントローラが、現在、その特定のキャッシュ・ラインのキャッシュ・ライン転送状態制御を有することを識別する。
図4は、キャッシュ・ラインを要求し、ノード・コントローラからそのキャッシュ・ラインを受け取るキャッシング・エージェントで行われるステップを示す流れ図である。キャッシング・エージェントは、プロセッサに含まれ、アプリケーションからなど、キャッシュ・ライン要求を処理する。キャッシュ・ライン要求は、内部キャッシュ・ライン(プロセッサの内部)または外部キャッシュ・ライン(プロセッサの外部)に対応するものとすることができる。
キャッシング・エージェント処理は、400で開始され、その後、キャッシング・エージェントが、ステップ410でアプリケーション405からメモリ要求を受け取る。例えば、アプリケーション405が、数値を計算しており、特定のキャッシュ・ラインに保管された数を必要とする場合がある。ステップ420で、キャッシング・エージェントが、メモリ・マップ425内でメモリ位置をルック・アップして、キャッシュ・ラインの「ホーム・ノード」を識別し、このホーム・ノードは、キャッシュ・ラインの物理プロセッサ位置である。メモリ・マップ425は、コンピュータ・メモリなどの揮発性ストレージ・エリアに保管することができる。
そのプロセッサ自体がホーム・ノードであるかどうかに関する判定を行う(判断430)。そのプロセッサ自体がホーム・ノードである場合には、判断430は、「Yes」分岐432に分岐し、その後、キャッシング・エージェントが、ローカル・メモリからキャッシュ・ラインを取り出し(ステップ435)、ステップ440でそのキャッシュ・ラインをアプリケーション405に供給する。キャッシング・エージェント処理は、445で終了する。
その一方で、要求されたキャッシュ・ラインのホーム・ノードが、異なるプロセッサである場合に、判断430は、「No」分岐438に分岐し、その後、キャッシング・エージェントが、上の識別されたメモリ・マップ位置に基づいて、対応するキャッシュ・ラインのホーム・ノードを識別する(ステップ450)。例えば、4プロセッサ・システムで、キャッシング・エージェントが、キャッシュ・ラインのホーム・ノードが第3プロセッサであると識別する場合がある。
ステップ460で、キャッシング・エージェントが、ホーム・ノード・プロセッサ(プロセッサ465に含まれる)に要求を送り、プロセッサ465ならびにノード・コントローラ470内で他のプロセッサに「スヌープ」を送る。ノード・コントローラ470は、キャッシュ・ライン転送を制御するローカル・ノード・コントローラである。ステップ480で、キャッシング・エージェントが、要求されたキャッシュ・ラインをノード・コントローラ470から受け取り、ステップ485で、そのキャッシュ・ラインをアプリケーション405に供給する。処理は490で終了する。
図5は、キャッシュ・ライン要求を処理するノード・コントローラ内で行われるステップを示す高水準流れ図である。ノード・コントローラ処理は、500で開始され、その後、ノード・コントローラが、プロセッサ515に含まれるローカル・キャッシング・エージェントまたはリモート・ノード・コントローラ520のいずれかからキャッシュ・ライン要求を受け取る。
キャッシュ・ライン要求が、プロセッサ515から(ローカル要求)またはリモート・ノード・コントローラから(リモート要求)のどちらであるかに関する判定を行う(判断530)。キャッシュ・ライン要求がリモート要求である場合には、判断530は、「Yes」分岐532に分岐し、その後、ノード・コントローラが、リモート要求を処理する(事前定義の処理ブロック535。さらなる詳細については図6および対応するテキストを参照されたい)。
その一方で、キャッシュ・ライン要求がローカル要求である場合に、判断530は、「No」分岐538に分岐し、その後、キャッシュ・ライン要求の「要求タイプ」に関する判定を行う。要求タイプが「shared」要求(読取専用)である場合と、要求タイプが「exclusive」要求(変更が意図される)である場合がある(判断540)。要求がexclusive要求である場合に、判断540は、「Exclusive」分岐542に分岐し、その後、ローカル・キャッシング・エージェントが対応するキャッシュ・ラインに対するexclusive状況を要求しているので、処理は、shared状態またはexclusive状態である対応するキャッシュ・ラインを有する他のエージェントに、状況を「invalid」状態にダウングレードするように通知する(ステップ545)。
ステップ550で、ノード・コントローラは、キャッシュ・ラインをローカル・キャッシング・エージェントに送り、その間ずっと、そのキャッシュ・ラインの「転送状態制御」を維持する。その間に、ノード・コントローラがキャッシュ・ラインをローカル・キャッシング・エージェントに送った場合であっても、あるキャッシング・エージェントが次に同一キャッシュ・ラインを要求したときに、ノード・コントローラは、まだそのキャッシュ・ラインをそのキャッシング・エージェントに送る責任を負う。ステップ555で、ノード・コントローラは、新しい制御するエージェントとしてそのローカル・キャッシング・エージェントを識別するログを更新する(exclusiveキャッシュ・ライン要求に起因して)。
その一方で、キャッシュ・ライン要求がshared要求(読取専用)である場合に、判断540は、「Shared」分岐548に分岐し、その後、対応するキャッシュ・ラインの現在の状況(sharedまたはexclusiveである場合がある)に関する判定を行う(判断560)。キャッシュ・ラインの現在の状況が「shared」の場合に、判断560は、「Shared」分岐562に分岐し、その後、ノード・コントローラが、ステップ565で、プロセッサ515内のローカル・キャッシング・エージェントにキャッシュ・ラインを送る。やはり、ノード・コントローラは、転送状態制御を維持する。
その一方で、キャッシュ・ラインの現在の状況がexclusiveである場合に、判断560は、「Exclusive」分岐568に分岐し、その後、ノード・コントローラが、ステップ570で、制御するエージェント(キャッシュ・ラインのexclusive状況を現在有するエージェント)に、状況を「shared」にダウングレードするように通知する。ステップ575で、ノード・コントローラは、キャッシュ・ラインを、プロセッサ515内に位置するローカル・キャッシング・エージェントに転送する。ノード・コントローラは、ステップ580で、どのキャッシング・エージェントも、現在は制御するエージェントでないことをログ記録する。
ノード・コントローラ処理を継続するかどうかに関する判定を行う(判断590)。ノード・コントローラが、キャッシュ・ライン要求の処理を継続しなければならない場合には、判断590は、「Yes」分岐592に分岐し、これは、もう1つのキャッシュ・ライン要求を処理するためにループ・バックする。このループは、ノード・コントローラが終了しなければならなくなるまで継続され、その時点で、判断590は、「No」分岐598に分岐し、その後、処理が599で終了する。
図6は、リモート・キャッシュ・ライン要求を処理する際に行われるステップを示す流れ図である。図6のステップは、図5のステップに似ているが、ノード・コントローラが、キャッシュ・ラインの「転送状態制御」ならびにキャッシュ・ライン自体をリモート・ノード・コントローラに転送することが異なる。処理は、600で開始され、その後、リモート・ノード・コントローラの要求タイプに関する判定を行う(判断610)。要求がremote exclusive要求である場合に、判断610は、「Remote Exclusive」分岐612に分岐し、その後、ローカル・キャッシング・エージェントが対応するキャッシュ・ラインに対するexclusive状況を要求しているので、処理は、shared状態またはexclusive状態である対応するキャッシュ・ラインを有する他のエージェントに、状況をinvalid状態にダウングレードするように通知する(ステップ615)。
ステップ620で、ノード・コントローラは、キャッシュ・ラインおよび転送状態制御をリモート・ノード・コントローラに送る。その結果、リモート・ノード・コントローラは、現在、その特定のキャッシュ・ラインに関する後続要求を処理する責任を負う。ステップ625で、ノード・コントローラは、そのキャッシュ・ラインの転送状態制御を有するリモート・コントローラを識別するログを更新する。
その一方で、キャッシュ・ライン要求がshared要求(読取専用)である場合に、判断610は、「RemoteShared」分岐618に分岐し、その後、対応するキャッシュ・ラインの現在の状況(sharedまたはexclusiveである場合がある)に関する判定を行う(判断630)。キャッシュ・ラインの現在の状況が「shared」の場合に、判断630は、「Shared」分岐632に分岐し、その後、ノード・コントローラが、ステップ635で、リモート・ノード・コントローラにキャッシュ・ラインおよび転送状態制御を送る。ステップ640で、ノード・コントローラは、そのキャッシュ・ラインの転送状態制御を有するリモート・コントローラを識別するログを更新する。
その一方で、キャッシュ・ラインの現在の状況がexclusiveである場合に、判断630は、「Exclusive」分岐638に分岐し、その後、ノード・コントローラが、ステップ645で、制御するエージェント(キャッシュ・ラインのexclusive状況を現在有するエージェント)に、状況を「shared」にダウングレードするように通知する。ステップ650で、ノード・コントローラは、キャッシュ・ラインおよび転送状態制御をリモート・ノード・コントローラに送る。ノード・コントローラは、ステップ655で、どのキャッシング・エージェントも、制御するエージェント(排他制御)でないことと、リモート・ノード・コントローラがそのキャッシュ・ラインの転送状態制御を有することをログ記録する。処理は、660でリターンする。
図7に、本明細書で説明したコンピューティング動作を実行できるコンピュータ・システムの単純化された実施例である、情報ハンドリング・システム701を示す。情報ハンドリング・システム701に、プロセッサ700が含まれ、プロセッサ700は、ホスト・バス702に結合される。レベル2(L2)キャッシュ・メモリ704も、ホスト・バス702に結合される。ホスト−PCIブリッジ706が、メイン・メモリ708に結合され、キャッシュ・メモリおよびメイン・メモリ制御機能を含み、PCIバス710、プロセッサ700、L2キャッシュ・メモリ704、メイン・メモリ708、およびホスト・バス702の間の転送を処理するバス制御を提供する。メイン・メモリ708は、ホスト−PCIブリッジ706ならびにホスト・バス702に結合される。LANカード730など、プロセッサ700だけによって使用されるデバイスは、PCIバス710に結合される。サービス・プロセッサ・インターフェースおよびISAアクセス・パススルー712が、PCIバス710とPCIバス714の間のインターフェースを提供する。この形で、PCIバス714が、PCIバス710から絶縁される。フラッシュ・メモリ718などのデバイスが、PCIバス714に結合される。一実装で、フラッシュ・メモリ718に、様々な低水準システム機能およびシステム・ブート機能に必要なプロセッサ実行可能コードを組み込んだBIOSコードが含まれる。
PCIバス714は、プロセッサ700およびサービス・プロセッサ716によって共用される、例えばフラッシュ・メモリ718を含む様々なデバイスに関するインターフェースを提供する。PCI−ISAブリッジ735は、PCIバス714とISAバス740の間の転送を処理するバス制御、universal serial bus(USB)機能性745、ならびに電力管理機能性755を提供し、リアルタイム・クロック(RTC)、DMA制御、割込みサポート、およびシステム管理バス・サポートなど、図示されていない他の機能要素を含むことができる。不揮発性RAM 720が、ISAバス740に接続される。サービス・プロセッサ716に、初期化ステップ中にプロセッサ700と通信するJTAG/I2Cバス722が含まれる。JTAG/I2Cバス722は、L2キャッシュ・メモリ704、ホスト−PCIブリッジ706、およびメイン・メモリ708にも結合され、プロセッサ、サービス・プロセッサ、L2キャッシュ、ホスト−PCIブリッジ、およびメイン・メモリの間の通信経路を提供する。サービス・プロセッサ716は、情報ハンドリング・システム701をパワー・ダウンするためにシステム電源リソースにもアクセスすることができる。
周辺デバイスおよび入出力(I/O)デバイスを、様々なインターフェース(例えば、ISAバス740に結合されたパラレル・インターフェース762、シリアル・インターフェース764、キーボード・インターフェース768、およびマウス・インターフェース770)に接続することができる。その代わりに、多数のI/Oデバイスに、ISAバス740に接続されたスーパーI/Oコントローラ(図示せず)によって対処することができる。
ネットワークを介してファイルをコピーするために情報ハンドリング・システム701を別のコンピュータ・システムに接続するために、LANカード730が、PCIバス710に結合される。同様に、電話回線接続を使用してインターネットに接続するために情報ハンドリング・システム701をISPに接続するために、モデム775が、シリアル・インターフェース764およびPCI−ISAブリッジ735に接続される。
図7に、プロセッサ700を使用する1つの情報ハンドリング・システムが示されているが、情報ハンドリング・システムは、多数の形をとることができる。例えば、情報ハンドリング・システム701は、デスクトップ機、サーバ機、ポータブル機、ラップトップ機、ノートブック機、または他のフォーム・ファクタのコンピュータまたはデータ処理システムの形をとることができる。情報ハンドリング・システム701は、携帯情報端末(PDA)、ゲーム機、ATM機、ポータブル電話デバイス、通信デバイス、またはプロセッサおよびメモリを含む他のデバイスなど、他のフォーム・ファクタをとることもできる。
本発明の好ましい実施形態の1つが、クライアント・アプリケーションすなわち、例えばコンピュータのランダム・アクセス・メモリに常駐することのできる、コード・モジュール内の命令のセット(プログラム・コード)である。コンピュータによって要求されるまで、命令のセットを、別のコンピュータ・メモリ、例えば、ハード・ディスク・ドライブ内または光ディスク(CD ROMでの最終的な使用のために)もしくはフロッピ・ディスク(フロッピ・ディスク・ドライブでの最終的な使用のために)などのリムーバブル・メモリ内に保管することができ、あるいは、インターネットまたは他のコンピュータ・ネットワークを介してダウンロードすることができる。したがって、本発明は、コンピュータで使用されるコンピュータ・プログラム製品として実施することができる。さらに、説明された様々な方法は、ソフトウェアによって選択的にアクティブ化されるか再構成される汎用コンピュータで便利に実施されるが、当業者は、そのような方法を、ハードウェアで、ファームウェアで、または必要な方法ステップを実行するように構成されたより特殊化された装置で実行できることも認めるであろう。
本発明の特定の実施形態を図示し、説明してきたが、本明細書の教示に基づいて、本発明およびそのより広い態様から逸脱せずに変更および修正を行えることは、当業者に明白であろう。したがって、添付請求項は、その範囲に、本発明の真の趣旨および範囲に含まれるものとしてそのような変更および修正のすべてを含まなければならない。さらに、本発明が、添付請求項のみによって定義されることを理解されたい。特定の個数の導入された請求要素が意図される場合に、その意図が、請求項に明示的に示され、そのような明示がない場合に、そのような制限が存在しないことが、当業者によって理解されるであろう。
本明細書に記載の発明なしの、キャッシュ・ライン転送状態制御をリモート・ノード・プロセッサに転送するプロセッサまたはノード・コントローラを示す図である。 キャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに転送するノード・コントローラを示す図である。 キャッシュ・ライン要求タイプおよびキャッシュ・ラインの現在の状況に基づくノード・コントローラ・アクションを示す表である。 キャッシュ・ラインを要求し、ノード・コントローラからそのキャッシュ・ラインを受け取るプロセッサで行われるステップを示す流れ図である。 キャッシュ・ライン要求を処理するノード・コントローラ内で行われるステップを示す高水準流れ図である。 リモート・キャッシュ・ライン要求を処理する際に行われるステップを示す流れ図である。 本発明を実装することのできるコンピューティング・デバイスを示すブロック図である。
符号の説明
100 プロセッサA
105 プロセッサB
110 プロセッサC
115 プロセッサD
120 ノード・コントローラY
125 プロセッサE
145 ノード・コントローラZ
150 要求
152 スヌープ
154 スヌープ
156 スヌープ
158 スヌープ応答
159 スヌープ応答
160 転送
162 スヌープ応答
170 要求
175 転送N
180 転送P
200 要求
202 スヌープ
204 スヌープ
206 スヌープ
208 スヌープ応答
210 スヌープ応答
212 スヌープ応答
215 送出
220 メッセージ
230 要求
240 転送
250 送出
400 キャッシング・エージェントが開始するステップ
405 アプリケーション
410 メモリ要求を受け取るステップ
420 メモリ位置をルック・アップするステップ
425 メモリ・マップ
430 ホーム・ノードかどうかを判定するステップ
435 キャッシュ・ラインを取り出すステップ
440 キャッシュ・ラインを供給するステップ
445 終了するステップ
450 ホーム・ノードを識別するステップ
460 ホーム・ノードに要求を送り、他のノードをスヌープするステップ
465 プロセッサ
470 ノード・コントローラ
480 キャッシュ・ラインをノード・コントローラから受け取るステップ
485 キャッシュ・ラインを供給するステップ
490 終了するステップ
500 ノード・コントローラが開始するステップ
510 要求を受け取るステップ
515 プロセッサ
520 リモート・ノード・コントローラ
530 リモート要求かどうかを判定するステップ
535 リモート要求処理のステップ
540 要求タイプは何かを判定するステップ
545 エージェントに、invalid状況にダウングレードするように通知するステップ
550 キャッシュ・ラインを要求元エージェントに送るステップ
555 ログを更新するステップ
560 現在の状況は何かを判定するステップ
565 キャッシュ・ラインを要求元エージェントに送るステップ
570 Shared状況にダウングレードするように、制御するエージェントに通知するステップ
575 キャッシュ・ラインを要求元エージェントに送るステップ
580 ログを更新するステップ
590 継続するかどうかを判定するステップ
599 終了するステップ
600 リモート要求を開始するステップ
610 要求タイプは何かを判定するステップ
615 エージェントに、invalid状況にダウングレードするように通知するステップ
620 キャッシュ・ラインおよび転送状態制御をリモート・ノード・コントローラに送るステップ
625 ログを更新するステップ
630 現在の状況は何かを判定するステップ
635 リモート・ノード・コントローラにキャッシュ・ラインおよび転送状態制御を送るステップ
640 ログを更新するステップ
645 Shared状況にダウングレードするようにエージェントに通知するステップ
650 キャッシュ・ラインおよび転送状態制御をリモート・ノード・コントローラに送るステップ
655 ログを更新するステップ
660 リターンするステップ
700 プロセッサ
701 情報ハンドリング・システム
702 ホスト・バス
704 レベル2(L2)キャッシュ・メモリ
706 ホスト−PCIブリッジ
708 メイン・メモリ
710 PCIバス
712 サービス・プロセッサ・インターフェースおよびISAアクセス・パススルー
714 PCIバス
716 サービス・プロセッサ
718 フラッシュ・メモリ
720 不揮発性RAM
722 JTAG/I2Cバス
730 LANカード
735 PCI−ISAブリッジ
740 ISAバス
745 universal serial bus(USB)機能性
755 電力管理機能性
762 パラレル・インターフェース
764 シリアル・インターフェース
768 キーボード・インターフェース
770 マウス・インターフェース
775 モデム

Claims (7)

  1. コンピュータの処理により、キャッシュ・ライン転送状態制御を管理する方法であって、
    ノード・コントローラで、キャッシュ・ライン要求を検出するステップと、
    前記ノード・コントローラで、前記キャッシュ・ライン要求がローカル・キャッシング・エージェントに対応するかどうかを判定するステップと、
    前記キャッシュ・ライン要求が前記ローカル・キャッシング・エージェントに対応するとの判定に応答して、キャッシュ・ライン転送状態制御を前記ノード・コントローラで保持すると同時にキャッシュ・ラインを前記ローカル・キャッシング・エージェントに転送するステップであって、前記キャッシュ・ラインが、前記キャッシュ・ライン要求に対応し、前記キャッシュ・ライン転送状態制御が、前記キャッシュ・ラインに対応する転送する、ステップと
    前記キャッシュ・ライン要求がリモート・ノード・コントローラに対応するステップを判定するステップと、
    前記キャッシュ・ライン要求が前記リモート・ノード・コントローラに対応するとの判定に応答して、前記キャッシュ・ラインおよび前記キャッシュ・ライン転送状態制御を前記リモート・ノード・コントローラに転送するステップと、
    前記キャッシュ・ライン要求がremote shared要求であることを判定するステップと、
    前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定するステップと、
    前記キャッシュ・ライン要求がremote shared要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
    制御するエージェントにその状況をsharedにダウングレードするように通知するステップであって、前記制御するエージェントが、前記exclusiveキャッシュ・ライン状況に関連する、通知するステップと、
    前記通知に応答して、前記リモート・ノード・コントローラが前記キャッシュ・ラインに関する前記キャッシュ・ライン転送状態制御を有するステップのログを更新するステップと
    を含む、方法。
  2. 前記キャッシュ・ライン要求が、前記リモート・ノード・コントローラに対応し、前記方法が、さらに、
    前記キャッシュ・ライン要求がremote exclusive要求であることを判定するステップと、
    前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定するステップと、
    前記キャッシュ・ライン要求がremote exclusive要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
    1つまたは複数の他のローカル・キャッシング・エージェントにその状況をinvalidにダウングレードするように通知するステップと、
    前記通知に応答して、前記リモート・ノード・コントローラが前記キャッシュ・ラインに関する前記キャッシュ・ライン転送状態制御を有するステップのログを更新するステップと
    を含む、請求項1に記載の方法。
  3. 前記キャッシュ・ライン要求がshared要求であることを判定するステップと、
    前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定するステップと、
    前記キャッシュ・ライン要求がshared要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
    制御するエージェントにその状況をsharedにダウングレードするように通知するステップであって、前記制御するエージェントが、前記exclusiveキャッシュ・ライン状況に関連する、通知するステップと、
    前記通知に応答して、前記制御するエージェントがもはや前記キャッシュ・ラインに関するexclusiveキャッシュ・ライン状況を有しないことのログを更新するステップと
    をさらに含む、請求項1に記載の方法。
  4. 前記キャッシュ・ライン要求がexclusive要求であることを判定するステップと、
    前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定するステップと、
    前記キャッシュ・ライン要求がexclusive要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
    制御するエージェントにその状況をinvalidにダウングレードするように通知するステップであって、前記制御するエージェントが、前記exclusiveキャッシュ・ライン状況に関連する、通知するステップと、
    前記通知に応答して、前記ローカル・エージェントが前記キャッシュ・ラインに関するexclusiveキャッシュ・ライン状況を有するステップのログを更新するステップと
    をさらに含む、請求項1に記載の方法。
  5. 前記キャッシュ・ライン要求が、bus read line要求およびbus readinvalidate要求からなる群から選択される、請求項1に記載の方法。
  6. 請求項1〜5の何れか1つに記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
  7. 1つまたは複数のプロセッサと、前記プロセッサによってアクセス可能なメモリと、前記プロセッサによってアクセス可能な1つまたは複数の不揮発性ストレージ・デバイスを具備する、キャッシュ・ライン転送状態制御システムであって、
    ノード・コントローラで、キャッシュ・ライン要求を検出する手段と、
    前記ノード・コントローラで、前記キャッシュ・ライン要求がローカル・キャッシング・エージェントに対応するかどうかを判定する手段と、
    前記キャッシュ・ライン要求が前記ローカル・キャッシング・エージェントに対応するとの判定に応答して、キャッシュ・ライン転送状態制御を前記ノード・コントローラで保持すると同時にキャッシュ・ラインを前記ローカル・キャッシング・エージェントに転送する手段であって、前記キャッシュ・ラインが、前記キャッシュ・ライン要求に対応し、前記キャッシュ・ライン転送状態制御が、前記キャッシュ・ラインに対応する転送する、手段と
    前記キャッシュ・ライン要求がリモート・ノード・コントローラに対応する手段を判定する手段と、
    前記キャッシュ・ライン要求が前記リモート・ノード・コントローラに対応するとの判定に応答して、前記キャッシュ・ラインおよび前記キャッシュ・ライン転送状態制御を前記リモート・ノード・コントローラに転送する手段と、
    前記キャッシュ・ライン要求がremote shared要求であることを判定する手段と、
    前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定する手段と、
    前記キャッシュ・ライン要求がremote shared要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
    制御するエージェントにその状況をsharedにダウングレードするように通知する手段であって、前記制御するエージェントが、前記exclusiveキャッシュ・ライン状況に関連する、通知する手段と、
    前記通知に応答して、前記リモート・ノード・コントローラが前記キャッシュ・ラインに関する前記キャッシュ・ライン転送状態制御を有する手段のログを更新する手段
    を具備する、システム。
JP2006273480A 2005-12-28 2006-10-04 方法、コンピュータ・プログラム製品、コンピュータ・プログラム、情報ハンドリング・システム(デフォルト・データ転送コヒーレント・キャッシング・エージェントのシステムおよび方法) Expired - Fee Related JP5064753B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/320,075 US20070150664A1 (en) 2005-12-28 2005-12-28 System and method for default data forwarding coherent caching agent
US11/320075 2005-12-28

Publications (2)

Publication Number Publication Date
JP2007179528A JP2007179528A (ja) 2007-07-12
JP5064753B2 true JP5064753B2 (ja) 2012-10-31

Family

ID=38195271

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006273480A Expired - Fee Related JP5064753B2 (ja) 2005-12-28 2006-10-04 方法、コンピュータ・プログラム製品、コンピュータ・プログラム、情報ハンドリング・システム(デフォルト・データ転送コヒーレント・キャッシング・エージェントのシステムおよび方法)

Country Status (4)

Country Link
US (1) US20070150664A1 (ja)
JP (1) JP5064753B2 (ja)
CN (1) CN100474270C (ja)
TW (1) TW200809497A (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7512742B2 (en) * 2006-01-17 2009-03-31 International Business Machines Corporation Data processing system, cache system and method for precisely forming an invalid coherency state indicating a broadcast scope
US7836144B2 (en) * 2006-12-29 2010-11-16 Intel Corporation System and method for a 3-hop cache coherency protocol
US8205045B2 (en) * 2008-07-07 2012-06-19 Intel Corporation Satisfying memory ordering requirements between partial writes and non-snoop accesses
US8438337B1 (en) 2009-09-30 2013-05-07 Netlogic Microsystems, Inc. System and method for conditionally sending a request for data to a home node
US8799586B2 (en) * 2009-09-30 2014-08-05 Intel Corporation Memory mirroring and migration at home agent
US8566533B1 (en) * 2009-09-30 2013-10-22 Netlogic Microsystems, Inc. System, method, and computer program product for conditionally sending a request for data to a node based on a determination
US8656115B2 (en) * 2010-08-20 2014-02-18 Intel Corporation Extending a cache coherency snoop broadcast protocol with directory information
CN102318275B (zh) * 2011-08-02 2015-01-07 华为技术有限公司 基于cc-numa的报文处理方法、装置和系统
US8984228B2 (en) 2011-12-13 2015-03-17 Intel Corporation Providing common caching agent for core and integrated input/output (IO) module
US9170946B2 (en) * 2012-12-21 2015-10-27 Intel Corporation Directory cache supporting non-atomic input/output operations
CN103092807B (zh) * 2012-12-24 2015-09-09 杭州华为数字技术有限公司 节点控制器、并行计算服务器系统以及路由方法
CN103294611B (zh) * 2013-03-22 2015-06-17 浪潮电子信息产业股份有限公司 一种基于有限数据一致性状态的服务器节点数据缓存方法
CN103294612B (zh) * 2013-03-22 2014-08-13 浪潮电子信息产业股份有限公司 在多级缓存一致性域系统局部域构造Share-F状态的方法
US10339059B1 (en) * 2013-04-08 2019-07-02 Mellanoz Technologeis, Ltd. Global socket to socket cache coherence architecture
US9405687B2 (en) 2013-11-04 2016-08-02 Intel Corporation Method, apparatus and system for handling cache misses in a processor
US10713169B2 (en) 2018-01-17 2020-07-14 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10387310B2 (en) 2018-01-17 2019-08-20 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10579527B2 (en) 2018-01-17 2020-03-03 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10719248B2 (en) * 2018-04-20 2020-07-21 Micron Technology, Inc. Apparatuses and methods for counter update operations
US10915445B2 (en) 2018-09-18 2021-02-09 Nvidia Corporation Coherent caching of data for high bandwidth scaling
US11068407B2 (en) 2018-10-26 2021-07-20 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction
US10884740B2 (en) 2018-11-08 2021-01-05 International Business Machines Corporation Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads
US11119781B2 (en) 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11106608B1 (en) 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request
US11693776B2 (en) 2021-06-18 2023-07-04 International Business Machines Corporation Variable protection window extension for a target address of a store-conditional request

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816474A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd マルチプロセッサシステム
JPH09305489A (ja) * 1996-05-14 1997-11-28 Canon Inc 情報処理システム及びその制御方法
US6282615B1 (en) * 1999-11-09 2001-08-28 International Business Machines Corporation Multiprocessor system bus with a data-less castout mechanism
US20030131201A1 (en) * 2000-12-29 2003-07-10 Manoj Khare Mechanism for efficiently supporting the full MESI (modified, exclusive, shared, invalid) protocol in a cache coherent multi-node shared memory system
JP2003216596A (ja) * 2002-01-17 2003-07-31 Hitachi Ltd マルチプロセッサシステム及びノード装置
JP2003216597A (ja) * 2002-01-23 2003-07-31 Hitachi Ltd マルチプロセッサシステム
US7917646B2 (en) * 2002-12-19 2011-03-29 Intel Corporation Speculative distributed conflict resolution for a cache coherency protocol
US6922756B2 (en) * 2002-12-19 2005-07-26 Intel Corporation Forward state for use in cache coherency in a multiprocessor system
US6954829B2 (en) * 2002-12-19 2005-10-11 Intel Corporation Non-speculative distributed conflict resolution for a cache coherency protocol
US7111128B2 (en) * 2002-12-19 2006-09-19 Intel Corporation Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US7130969B2 (en) * 2002-12-19 2006-10-31 Intel Corporation Hierarchical directories for cache coherency in a multiprocessor system

Also Published As

Publication number Publication date
JP2007179528A (ja) 2007-07-12
TW200809497A (en) 2008-02-16
CN100474270C (zh) 2009-04-01
CN1991795A (zh) 2007-07-04
US20070150664A1 (en) 2007-06-28

Similar Documents

Publication Publication Date Title
JP5064753B2 (ja) 方法、コンピュータ・プログラム製品、コンピュータ・プログラム、情報ハンドリング・システム(デフォルト・データ転送コヒーレント・キャッシング・エージェントのシステムおよび方法)
US10891228B2 (en) Cache line states identifying memory cache
TWI463318B (zh) 快取一致性處理系統、快取記憶體,及其方法
US7480770B2 (en) Semi-blocking deterministic directory coherence
JP4594900B2 (ja) メモリ・ブロックを初期設定するためのプロセッサ、データ処理システム、および方法
JP4085389B2 (ja) マルチプロセッサシステム、マルチプロセッサシステムにおける一貫性制御装置及び一貫性制御方法
TW200832133A (en) Handling of write access requests to shared memory in a data processing apparatus
US7568073B2 (en) Mechanisms and methods of cache coherence in network-based multiprocessor systems with ring-based snoop response collection
JP2020529673A (ja) 分散ストアによる高可用性データベース
JP7193547B2 (ja) キャッシュ・メモリ動作の調整
US7925838B2 (en) Directory-based data transfer protocol for multiprocessor system
CN103294612A (zh) 一种在多级缓存一致性域系统局部域构造Share-F状态的方法
KR20030024895A (ko) 캐시 코히어런트 멀티-프로세서 시스템에서 순서화된입출력 트랜잭션을 파이프라이닝하기 위한 방법 및 장치
EP4026005B1 (en) Producer-to-consumer active direct cache transfers
EP4124963B1 (en) System, apparatus and methods for handling consistent memory transactions according to a cxl protocol
US7669013B2 (en) Directory for multi-node coherent bus
US7725660B2 (en) Directory for multi-node coherent bus
WO2017016427A1 (zh) 根据目录信息维护Cache数据一致性的方法及装置
JP2008521114A (ja) ローカルメモリデータのコヒーレントなキャッシュ処理
US20160217076A1 (en) Speculative cache reading using shared buffer
US9842050B2 (en) Add-on memory coherence directory
US7526611B2 (en) Unified processor cache model in multiprocessor system
US10489292B2 (en) Ownership tracking updates across multiple simultaneous operations
JP2003216596A (ja) マルチプロセッサシステム及びノード装置
JP6881485B2 (ja) メモリ配置装置、メモリ配置方法、及び、メモリ配置プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090629

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120306

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120510

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

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

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

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees