JP5037566B2 - ディレクトリ型コヒーレンシー・プロトコルでの同時アクセスの最適化 - Google Patents

ディレクトリ型コヒーレンシー・プロトコルでの同時アクセスの最適化 Download PDF

Info

Publication number
JP5037566B2
JP5037566B2 JP2009141086A JP2009141086A JP5037566B2 JP 5037566 B2 JP5037566 B2 JP 5037566B2 JP 2009141086 A JP2009141086 A JP 2009141086A JP 2009141086 A JP2009141086 A JP 2009141086A JP 5037566 B2 JP5037566 B2 JP 5037566B2
Authority
JP
Japan
Prior art keywords
directory
caching agent
request
caching
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.)
Expired - Fee Related
Application number
JP2009141086A
Other languages
English (en)
Other versions
JP2009301552A (ja
Inventor
タントリ ハリハラン
クマール アキレシュ
パク ソンジョン
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2009301552A publication Critical patent/JP2009301552A/ja
Application granted granted Critical
Publication of JP5037566B2 publication Critical patent/JP5037566B2/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/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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

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

多くのコンピュータシステムは、複数のプロセッサと、I/O及び記憶装置とインタフェース接続する入出力(I/O)エージェントとを含み、また、コヒーレント・メモリ(coherent memory)を含む。コヒーレント・メモリは、複数のプロセッサのコヒーレント・キャッシュ(coherent cache)でもよい。1つ以上のキャッシュは、これらの複数のプロセッサにしばしば含まれるため、コヒーレント・キャッシュは、プロセッサがキャッシュへのアクセスを要求し得る他のエージェント(例えば、他のプロセッサ又はI/Oエージェント)とそのキャッシュを共有することを意味する。
コンピュータシステムが複数のコヒーレント・キャッシュ・メモリと、複数のプロセッサ及びI/Oエージェントのような複数の要求エージェントとを含む場合、2つのエージェントが同時にキャッシュ・ライン(cache line)へのアクセスを要求したときに、衝突が生じ得る。この問題を軽減するために、典型的には、キャッシュ・コヒーレンシー・プロトコル(cache coherency protocol)を使用して、複数の要求エージェントの間の特定のキャッシュ・ラインへのアクセスを仲裁(arbitrate)するシステムが実現される。しばしば、1つ以上のキャッシュ・メモリに存在する様々なキャッシュ・ラインの位置及び状態を示すエントリを格納することによりキャッシュ・コヒーレンシーを維持管理するために、ディレクトリのような集中型エンティティが使用される。キャッシュ・コヒーレンシー・アルゴリズムは、同じメモリ位置への読み取り及び書き込みの動作を規定する。以下の条件が満たされるときに、キャッシュのコヒーレンスが得られる。(1)同じプロセッサPによるXへの書き込みに続くプロセッサPにより行われた位置Xへの読み取りは、他のプロセッサによるXの書き込みがPにより行われた書き込み及び読み取り命令の間に生じず、常にPにより書き込まれた値を戻さなければならない。(2)何らかのプロセッサによるXへの他の書き込みが2つのプロセッサの間に生じない場合に、他のプロセッサP2によるXへの書き込みに続くプロセッサP1による位置Xへの読み取りは、P2により行われた書き込み値を戻さなければならない。(3)何らかのプロセッサによるXへの他の書き込みが2つのアクセスの間に生じない場合に、他のプロセッサP2によるXへの書き込みに続くプロセッサP1により行われた位置Xへの読み取りは、P2により行われた書き込み値を戻さなければならない。
しかし、キャッシュ及び/又は要求エージェントの数がコンピュータシステムで増加すると、キャッシュ・コヒーレンシーを維持管理する複雑性、これらのエージェントの間で必要なメッセージの数も増加する。このため、キャッシュ・コヒーレンシー・プロトコルは、新たに拡大されたコンピュータシステムに適合しなければならない。更に、コヒーレンシーを維持管理するために、更なる数のメッセージが送信されなければならず、これは、相互接続のトラヒックを増加させ、他の通信の帯域を低減し、更に、データの要求に応答する際の待ち時間をもたらす。
本発明の方法は、
第1のキャッシング・エージェントがキャッシュ・ラインについて第1の要求に応じて第2のキャッシング・エージェントにキャッシュ・ラインを送信したことを示す完了メッセージを、前記第1のキャッシング・エージェントからディレクトリで受信し、
前記ディレクトリが前記キャッシュ・ラインを第3のキャッシング・エージェントに転送する第2の要求を前記第2のキャッシング・エージェントに送信できる前の時間遅延を決定し、
前記時間遅延後に前記第2の要求を送信することを特徴とする。
本発明の装置は、
キャッシュ・メモリをそれぞれ含む複数のキャッシング・エージェントと、
相互接続を介して前記複数のキャッシング・エージェントに結合されたディレクトリ手段と
を有し、
前記ディレクトリ手段は、前記ディレクトリ手段に結合されたキャッシング・エージェントのキャッシュ・メモリに格納されたキャッシュ・ラインにそれぞれ関連する複数のエントリを格納し、
前記ディレクトリ手段は、前記ディレクトリ手段が同時スヌープ要求を送信できる前の時間遅延を決定する手段を含むことを特徴とする。
本発明のシステムは、
複数のキャッシング・エージェントと、スヌープ要求、データメッセージ及び承諾メッセージについて独立のチャネルを含むリング相互接続を介して前記複数のキャッシング・エージェントに結合されたディレクトリとを含むマルチコア・プロセッサと、
前記マルチコア・プロセッサに結合されたダイナミック・ランダム・アクセス・メモリ(DRAM)と
を有するシステムであって、
前記ディレクトリは、第1のキャッシュ・ラインが、第1のキャッシング・エージェントの前記第1のキャッシュ・ラインの受信を示す第1の承諾メッセージを前記第1のキャッシング・エージェントから受信せずに、前記第1のキャッシング・エージェントから第2のキャッシング・エージェントに転送されること生じるために、前記ディレクトリが同時スヌープ要求を第1のキャッシング・エージェントに送信できる前の時間遅延を計算する手段を含むことを特徴とする。
本発明の実施例によれば、キャッシュ・コヒーレンシーの維持管理が改善される。
本発明の一実施例によるシステムの一部のブロック図 本発明の一実施例によるプロトコル処理のフローチャート 本発明の一実施例による出力シーケンサのブロック図 本発明の一実施例による入力パス構造のブロック図 本発明の一実施例によるディレクトリのブロック図 本発明の実施例による方法のフローチャート 本発明の実施例によるシステムのブロック図
様々な実施例で、様々なシステムエージェントを結合するシステムの基礎となる相互接続の特性は、キャッシュ・コヒーレンシーに使用されるディレクトリでのメッセージ処理の同時処理を増加させるために使用され、相互接続の帯域を低減し、システムのそれぞれ個々のコアでミス処理の合計待ち時間を低減することができる。
図1を参照すると、本発明の一実施例によるシステムの一部のブロック図が示されている。図1に示すように、システム10は、複数のキャッシング・エージェント(caching agent)C1-C3を含む。このようなキャッシング・エージェントのそれぞれは、キャッシュ・メモリを含んでもよく、キャッシュ・メモリにアクセスしてもよく、様々な実施例では、プロセッサ・ソケット、コア、又はキャッシュ・メモリを含む又はキャッシュ・メモリに関連する他のこのような処理ユニットでもよい。各キャッシュ・エージェントC1-C3は、相互接続20を介して結合される。相互接続20はリング相互接続でもよい。図1の実装に示すように、リング相互接続20は、それぞれ要求、応答及びデータパケットを伝達する3つの独立したメッセージパスを含んでもよい。しかし、本発明の範囲はこの点に限定されない。
図1に示すように、キャッシング・エージェントに加えて、ディレクトリDが存在する。ディレクトリDは、キャッシュ・コヒーレンシー・プロトコルを管理し、様々なキャッシング・エージェントC1-C3に格納された情報へのコヒーレント・アクセスを可能にするホーム・エージェント又は他のユニットの一部でもよい。例えば、ディレクトリDは、キャッシング・エージェントC1-C3に格納されたキャッシュ・ラインの位置及びこれらの状態に関して様々なエントリに情報を格納するテーブルを含んでもよい。或る実施例では、要求されたデータがどのキャッシング・エージェントにも存在しない場合、ホーム・エージェントはまた、メインメモリにアクセスするために使用されてもよい。
従って、キャッシング・エージェントが排他的又は共有アクセスのためにデータにアクセスしようとすると、排他的所有権要求(RdO:request for exclusive ownership)又は共有データ要求(RdS:request for shared data)のような要求をディレクトリDに送信し、要求されたデータを取得する。更に以下に説明するように、システム10は、対応するデータメッセージが転送側キャッシング・エージェントにより要求側(リクエスタ)に送信された後に(例えば、キャッシュ対キャッシュ転送メッセージ)、特定の承諾メッセージがディレクトリDに送信され得るキャッシュ・コヒーレンシー・プロトコルを実装してもよい。これにより、相互接続20で帯域及び待ち時間の低減が実現され得る。図1のリング相互接続アーキテクチャでは、リング相互接続20を通じて何らかの発信元−宛先の対の間で順序は存在しないことが想定され得る。しかし、バウンス(bounce)されないメッセージ(すなわち、データ及び応答メッセージ)は、同じメッセージクラスで何らかの2つのキャッシング・エージェントの間で順に配信されることが想定され得る。
更に以下に説明するように、ディレクトリDは、システム10の様々なキャッシュに格納された情報のメタデータを含む配列を含んでもよい。更に、ディレクトリDは、保留中の要求(処理されている要求及び衝突又は他の理由でまだ処理できていない保留中の要求)を保持する1つ以上のキューを含んでもよい。本発明の範囲はこの点に限定されないが、或る実装では、キャッシュ・コヒーレンシー・プロトコルは、MESI(modified, exclusive, shared, invalid)又はMESIF(modified, exclusive, shared, invalid, forwarded)プロトコルを使用して実装されてもよい。
M状態のキャッシング・エージェントC2により現在保持されているキャッシュ・ブロック(例えば、A1)へのキャッシング・エージェントC1による読み取り所有権(RFO:Read For Ownership)要求のトランザクションについて検討する。更に、C3も同じキャッシュ・ブロックにRFO要求を行い、C2の要求が完全に処理される前に要求がディレクトリDに到達することを仮定する。換言すると、この第2の要求は、同じデータについての同時要求である。
純粋なプライベート・キャッシュ(private cache)でのメッセージフローが以下の図2に示されている。図2は、本発明の一実施例によるプロトコル処理のフローチャートである。ディレクトリは、キャッシュ・ブロックへの保留中の同時要求をキューに保持し、到着順に先入れ先出し(FIFO:first-in-first-out)でサービス提供する。図2はまた、各キャッシング・エージェントとディレクトリとで行われる状態遷移を示している。図2に示す様々なメッセージの名前(RdO、FwdO等)は簡略記号であり、異なる実装では異なるラベルを有してもよい。一般的に、これらの名前は、メッセージ形式略号(例えば、読み取り(Rd)、転送(Fwd)等)と、要求されたキャッシュ状態(キャッシング・エージェントからディレクトリへ)、要求された転送状態(ディレクトリからスヌープされたキャッシュ(snooped cache)へ)又は遷移キャッシュ状態(キャッシュからキャッシュへ又はディレクトリからキャッシュへ)の略号(例えば、MESIの1つ)を有する。
図2に示すように、初期時点では、キャッシング・エージェントC1-C3は以下の状態を有する。C1及びC3は無効(I)状態であり、C2は変更(M)状態である。これは、キャッシング・エージェントC2が排他的にデータの有効なコピーのみを保持することを示す。従って、ディレクトリDは、C2が有効なデータの排他的なコピーを保持することを示す。図2に示すように、キャッシング・エージェントC1は、このデータについてディレクトリDに要求(すなわち、排他的読み取り所有権(RdO)要求)を送信する。この要求を受信すると、ディレクトリDは、そのテーブルの対応するエントリを調べ、このデータの有効な排他的なコピーがキャッシング・エージェントC2に存在することを決定してもよい。従って、ディレクトリDは、スヌープ要求(snoop request)(例えば、転送要求(すなわち、FwdO))をキャッシング・エージェントC2に送信する。その後、キャッシング・エージェントC3も同じデータについて同様の要求を行うため、キャッシング・エージェントC1及びC3は同じデータへの同時アクセスを求める点に留意すべきである。従って、時間Aにおいて、ディレクトリDは、キャッシング・エージェントC3からの要求を要求FIFOキューに格納する。
図2を参照し続けて、キャッシング・エージェントC2がディレクトリDから転送要求を受信すると、キャッシュ・ラインのそのコピーを無効にし、スヌープ要求への応答として、要求されたデータをキャッシング・エージェントC1に直接送信する。データメッセージは、応答側キャッシュにより変更された実際のデータを含み、メッセージ形式簡略記号(すなわち、DataM)は、受信側キャッシュC1が遷移すべきMESI状態(すなわち、M)を示す。キャッシング・エージェントC2は、要求されたデータをキャッシング・エージェントC1に送出した後まで、完了(CMP)応答をディレクトリDに返信しない点に留意すべきである。図2からわかるように、この完了メッセージがディレクトリDで受信されると、キャッシング・エージェントC3からの要求は、時間Cにキューから出される。時間B’’からCは、ディレクトリからのスヌープメッセージの少なくとも1サイクル前にキャッシング・エージェントC1がデータメッセージ(DataM)を見ることを確保するために、ディレクトリが待機しなければならない時間量(ゼロでもよい)を反映する。基礎となる相互接続として、バッファレス(bufferless)・リング相互接続を仮定しているため、この時間は、リングの如何なるエージェントによっても正確に計算可能である。この時点で、ディレクトリDは、スヌープ要求(すなわち、転送要求(FwdO))をキャッシング・エージェントC1に送信でき、これにより、要求されたデータがキャッシング・エージェントC3に転送され得る。
図2を参照し続けて、この要求に応じて、キャッシング・エージェントC1は、要求されたデータを含むスヌープ要求への応答(例えば、データメッセージ(DataM))をキャッシング・エージェントC3に送信し、その後、完了(CMP)メッセージをディレクトリDに返信してもよい。この時点で、キャッシング・エージェントC1は、コヒーレンス・プロトコルの標準的な規則に従って、キャッシュ・ラインのそのコピーを無効(I)にする。従って、図2に示す処理の完了後に、キャッシング・エージェントC1及びC2は、ラインの無効のコピーを含み、ラインの変更された有効なコピーは、対応するディレクトリのエントリにより示されるように、キャッシング・エージェントC3に存在する。
図2に示すプロトコル処理により、そうでなければ送信される必要のある様々な他のコヒーレンシー・プロトコル・メッセージが回避され得る。例えば、前述の例の代わりに、Dが何らかのキューにある要求を処理し始める前に完了メッセージがディレクトリDに送信される必要がある場合、相互接続で更なるメッセージ及び帯域の消費を生じる。更に、キャッシングC3からの同時要求がディレクトリDでキューに入れられる間に、大きい待ち時間が生じる。すなわち、様々な実施例で、時間Bの後にキャッシング・エージェントC1に到達する何らかの転送要求は、キャッシング・エージェントC1からディレクトリDに返信される中間の完了メッセージを必要とせずに、キャッシング・エージェントC1により処理され得る。更に、図1のようなバッファレス・リングのメッセージ特性の認識は、リング相互接続20で2つのエージェント間のメッセージ移動時間を正確に推定するために利用され得る。
従って、様々な実施例で、キャッシング・エージェントは、最初に要求側へのスヌープ応答(例えば、データメッセージ)を注入する前に、リング相互接続でディレクトリに返信されるスヌープ要求に完了メッセージを常に注入する(inject)ように制御される。このように、ディレクトリは、最小の所定の遅延時間の後に同時要求のスヌープ要求をリング相互接続に注入することができる。最小の所定の遅延時間は、ゼロ以上のサイクルでもよい。この遅延時間は、キャッシング・エージェントからの完了メッセージの到達と、要求側キャッシング・エージェント、転送側キャッシング・エージェント及びディレクトリDの相対位置とに部分的に基づいて計算されてもよい。
一実施例では、片方向リングを仮定し(アルゴリズムは双方向リングにも同様に当てはまり、以下に説明する持続時間計算が変更可能である)、異なるトポロジー・パラメータについて以下の値を仮定する。
第2の要求側(C2)からディレクトリへのホップ数=N
第1の要求側(C1)からディレクトリへのホップ数=M
C1からC2へのホップ数=P
リング・ストップ間の遅延(すなわち、リングメッセージが1つのホップから他のホップに移動するために要するサイクル単位の時間)=D
ディレクトリがC1に転送要求を開始する前に待機しなければならない完了メッセージの到達後の時間(サイクル単位)=T
一実施例では、以下の式が使用され得る。
T=(P−N−M+1)*D [式1]
追加のサイクル(すなわち、“+1”)は、データメッセージがエージェントにより受信されたときの少なくとも1サイクル後に、ディレクトリからの転送要求がキャッシング・エージェント(C1)に到達することを確保する。この計算は、データ及び完了メッセージの双方が同じサイクルでリング・ストップに注入されたことを仮定しており、データメッセージが完了メッセージの前に注入されたことを仮定している。或る状況では、Tは、ゼロ未満でもよい。この場合、ディレクトリは、転送要求をC1宛にリングに直ちに注入することができる。
この分析は、全てのキャッシング・エージェントについて以下の仮定を行う点に留意すべきである。(1)転送要求が何らかのキャッシング・エージェントにより受信されると、まず、キャッシング・エージェントは、ディレクトリに応答を送信する前に、転送されたデータ及び状態を要求側に与える。双方のメッセージは同じサイクルで注入されてもよいが、決してデータメッセージがデータ・リングに注入される前に完了メッセージが注入されることはない。(2)リング・ストップから同じリング・ストップのプロトコル・エージェントへのメッセージは、プロトコル・エージェントによりリング・ストップへの到着順に処理される。(3)このリング・ストップでのプロトコル・エージェントからリング・ストップへのメッセージは、プロトコル・エージェントによる生成順に注入される。(4)応答及びデータメッセージチャネルにバウンス(bounce)は存在しない(すなわち、要求がキャッシング・エージェントにより行われるときに、バッファは予め確保される)。(5)応答及びデータメッセージのいずれか2つのリング・ストップの間のメッセージ配信のための持続時間は、バッファレス・リングの全てのエージェントにより正確に予測され得る。(6)式1は、全てのパケットについて同じサイズであることを仮定する。異なるサイズのパケットでは、持続時間計算は、パケットサイズに適応するように変更され得る。
1つの実装では、同じアドレスへの同時アクセスに要する時間(衝突等)をかなり低減することに加えて、コヒーレンス・プロトコル・フローで少なくとも1つのメッセージは除去されてもよい。このようなプロトコルもまた、バリア同期(barrier synchronization)の待ち時間をかなり低減し得る。バリア同期では、複数のエージェントが、同時に同じキャッシュ・ブロックへの所有権を競う。
キャッシュ対キャッシュ転送の場合について本発明の実施例で得られる待ち時間の低減を定量化するために、全てのスレッドが関与するときのバリア同期処理に要する時間量が検証され得る。バリア同期は、グループの全ての他のメンバが同じ同期点に到達するまで、スレッドが“同期”点を待機する機構である。同期点で、全てのスレッドはバリアから“解放”され、通常の処理を続ける。バリア同期処理では、バリアに到達した全てのスレッドは、1だけバリア・カウントをインクリメントし、全てのスレッドがバリアに到達しているか否かを見るためにバリアの値を検査し、そうでなければビジー待ち(busy-wait)状態に移行する。定量化を簡単にするために、バリア同期のキャッシュ・ブロックがS状態を介入せずにM状態に移動することを仮定する。
パケットが全体リングを移動するための合計時間がTであることを仮定し、双方向リングが何らかのパケットの最大待ち時間をT/2サイクルに実質的に低減し、全てのエージェントがリング上に均一にランダムに分布することを仮定すると、以下の式は、1つのエージェントが同期変数を取得及び更新するための待ち時間を表す。特に、同じアドレスへの第2の要求を受け入れる前に、平均的にディレクトリが平均T/8サイクルを待機しなければならないことに留意して、要求の完了を完了するためのサイクル単位での待ち時間は以下のようになる。
待ち時間=(T/4+T/4+T/4+T/8)=7T/8サイクル [式2]
この待ち時間の低減は、競合するアドレスへの要求処理が通常の方法に従って処理される前に待機しなければならない時間量(すなわち、Tサイクル)に関して表されている点に留意すべきである。同様に、一対の同時要求を処理する通常の方法では、サイクル単位で要する時間は、以下のようになる。
待ち時間=2*Tサイクル
その代わり、本発明の一実施例によれば、合計待ち時間は以下のように得られ得る。最善の場合のシナリオでは、ディレクトリからのFwdOメッセージは、要求側がデータを受信したちょうど1サイクル後に到達する。双方の場合のプロトコル処理のオーバーヘッドが同じであり、このため、無視可能であることを仮定する。
待ち時間=(T/4+T/4+T/4)+1+T/4=T+1サイクル[最善の場合] [式3]
最悪の場合では、スヌープメッセージがデータを見た後に要求側に到達するためにT/4サイクルを要することを仮定する。このような場合、待ち時間は、以下のようになる。
待ち時間=(T/4+T/4+T/4)+(T/4+T/4)=5T/4サイクル[最悪の場合] [式4]
従って、平均的な場合、転送されたデータを見た後にキャッシング・エージェントC1によりスヌープで観測される遅延は、〜T/8サイクルになる。従って、平均的な場合、関与する2つのスレッドでのバリア同期の待ち時間は、以下の式により表され得る(第1のスレッドの要求が完全に処理される前に第2のスレッドの要求が到達することを仮定する)。
合計待ち時間=(3T/4)+(T/8+T/4)[2つのスレッドのバリア同期のときの平均的な場合]=3T/4+3T/8=9T/8サイクル [式5]
従って、式5は、同時アクセスについての合計時間の低減についての一般的な式であり、同じアドレスについて現在保留中の少なくとも1つのトランザクションでXのアクセスが到達する。最初のトランザクションが完了する前に全てのXのアクセスが到達することは必ずしも必要ではなく、(前の第2のものからの)トランザクションが到達したときに、現在進行中のトランザクションが存在しさえすればよい点に留意すべきである。これは、バリア同期では通常に生じ、特に、多くのコアを有する大規模なシステムでは通常に生じる。
要するに、異なるエージェントによる同じキャッシュ・ブロックへの同時アクセスのため、ディレクトリで保留中のトランザクションについて観測される待ち時間の低減は、約(T-7T/8)=T/8サイクルになり得る。更に、同時アクセスを完了するための合計待ち時間は、それぞれ(最初を除く)がディレクトリに到達するXの連続アクセスを仮定して、ディレクトリの同じアドレスに現在進行中のトランザクションが存在する場合、3T/4+X*(3T/8)である。従って、通常の方法に比べて、合計システム待ち時間の低減は、T/4+X*5T/8になる。
全てのトランザクションがキャッシュ対キャッシュ転送に関与するという仮定に基づいて、承諾リング(acknowledgement ring)での帯域の低減は、通常の場合に2つのメッセージが存在しなければならず、一実施例によればこのチャネルに唯一のメッセージが存在するという観測により計算され得る。従って、全てのトランザクションがキャッシュ対キャッシュ転送であることを仮定して、承諾リングでの帯域の低減は50%になる。
従って、実施例は、ディレクトリでキューに入れられるために費やされる時間を低減することにより、また、キャッシュ・ブロックの取得に関連するコヒーレンス動作を完了するために要するメッセージの数を減少させることにより、同じキャッシュ・ブロックへの同時要求の待ち時間を改善する。従って、待ち時間低減及び帯域節約の技術になる。実施例は、いつ特定のエージェントが相手のキャッシュから転送されたメッセージを受信したことを保証されたかを正確に決定するために、ディレクトリでタイマを使用してもよい。更に、実施例は、メッセージの順序を確保するためにハードウェアのサポートを使用してもよい。
従って、実施例は、同じキャッシュ・ブロックへのリトライのないディレクトリ型コヒーレンス・プロトコルの同時のコヒーレント動作に要する時間を低減する。これらの動作は、頻繁なバリア同期を行うマルチスレッドのRMS(recognition, mining and synthesis)負荷の間でかなり一般的である。従って、実施例は、コヒーレント動作で待ち時間及びメッセージ数を低減するために、基礎となる相互接続の特性を利用する。
様々な実施例では、プロトコル・エンジン(PE:protocol engine)リング・インタフェースでのスヌープ応答及び完了メッセージについてメッセージクラス(例えば、応答及びデータ)を通じて順序を確保するため、特定のハードウェア構造が提供されてもよい。1つの機構は、全てのキャッシング・エージェントでの全てのメッセージクラス(要求、応答及びデータ)について単一の先入れ先出し(FIFO)構造を有することでもよい。
従って、他の実施例では、プロトコル・エンジンとリング・エージェントとの間の組み合わせロジックが提供されてもよい。より具体的には、このハードウェア構造は、リング・ストップへのプロトコル・エンジンの間に結合される応答キューとデータ・キューとの間に配置され得る。このロジックは、元の要求側への対応するデータ応答がバッファレス(BL)・リングに注入される前に、完了応答が承諾(AK)リングに注入されることを妨げてもよい。このロジックは、個々のキュー及びその流出(drain)特性の性質に応じて異なる形式になり得る。
キュー毎にFIFOの実施例では、タグ(例えば、8ビットのタグ(FIFOキューのエントリの数よりかなり大きい))が、プロトコル・エンジン(応答生成エンティティ)によりスヌープ応答及び完了メッセージに付加されてもよい。次に、比較回路が、完了キューの先頭に結合され得る。完了応答がキューの先頭に到達し、AKリングに挿入される前に、完了応答は、データ・キューの先頭に対して検査される。データ・キューの先頭のエントリ・タグが完了エントリのタグより小さい値を有する場合、データ応答はまだBLリングに注入されていない。他方、等しい又は大きい値を有する場合、データ応答は、同じクロックサイクルで注入されるか、既にBLリングに注入されている。
図3を参照すると、本発明の一実施例による出力シーケンサ(output sequencer)のブロック図を示している。図3に示すように、出力シーケンサ200は、プロトコル・エンジン210からリング・ストップへのスヌープ応答を並び替えるために使用されてもよい。リング・ストップは、リング相互接続の複数のリング(例えば、データが通信されるバッファレス・リング245並びに完了及び他の承諾メッセージが送信される承諾(AK)リング255)への接続を形成する。
図3に示すように、プロトコル・エンジン210は、それぞれ一式のメッセージに関連するタグ(例えば、8ビットのタグ)を含むデータメッセージ及び完了メッセージを生成してもよい。関連するリングで送信されるこれらのメッセージは、キュー220及び230(すなわち、完了キュー220及びデータ・キュー230)の対応するものに提供される。一実施例では、キュー220及び230は、FIFOバッファとして適合されてもよい。図3に示すように、完了キュー220の先頭エントリは、比較器240に提供されてもよい。ここで、データ・バッファ230の先頭と比較される。比較は、完了バッファ220のタグがデータ・タグのものより小さい値を有しているか否かを含んでもよい。これは、対応するデータメッセージがまだリング245に注入されていないことを意味する。従って、比較器240の出力は、完了キュー220の先頭のエントリが承諾リング255に注入されることを妨げるために、ロジック250により使用されてもよい。図3の実施例のこの特定の実装で示したが、本発明の範囲はこの点に限定されない。
リング・ストップから注入されたスヌープがリング・ストップからプロトコル・エンジンへの途中で転送されたデータ応答を追い越さないことを確保するために、連想メモリ(CAM:content addressable memory)が入力パスに提供されてもよい。入力パスのCAMにより、ディレクトリからCAMへの全てのスヌープ要求がキューに入れられ、キャッシュ/コア宛の“進行中(in-flight)”のデータパケット(状態情報を有する)に追いつく(catch)ことになる。
データがデータ・キューで追いつかれると、同じアドレスのデータメッセージがキャッシュ・コントローラに注入されるまで、スヌープはブロックされる。このことにより、キャッシュは、コアにデータを供給することが可能になり、キャッシュ・ブロックが保留中のスヌープによりスヌープされる前に、コアがそれを用いて少なくとも1つの動作を実行することが可能になる(例えば、このデータが新しい値でデータを上書きするために供給されるRFO要求の場合)。
図4を参照すると、本発明の一実施例による入力パス構造のブロック図が示されている。図4に示すように、所定のキャッシュ・エージェントは、複数のリング(すなわち、要求(すなわち、AD)リング305、データ・リング(すなわち、BLリング)310、承諾リング(すなわち、AKリング)315)に結合されてもよい。一実施例に基づいて、相手のキャッシュから転送されたデータの少なくとも1サイクル後にスヌープ要求がリング・ストップに到達したことが保証されても、転送されたデータが観測される前に、スヌープが実際にキャッシング・エージェントにより見られ得ることが可能である。これは、ディレクトリへのキャッシング・エージェントによる矛盾した応答を生じる。このような発生を回避するため、連想メモリ(CAM)325に関する方式が提供される。それぞれの入力スヌープは、進行中の可能性がある何らかのメッセージについて、入力プロトコル・データ・キュー320でキャッシュ・ブロック・アドレス検索を実行する。メッセージが存在しない場合、スヌープ有効ロジック330を介してスヌープが有効になり、キャッシュ入力キュー372を介してキャッシュ370のキャッシュ・コントローラ・ロジック380に挿入される。(345において)同じキャッシュ・ブロックにデータメッセージが存在する場合、そのデータパケットは、データ応答プロトコル・キュー350でマーキングされ(ブロック355)、スヌープが保留中のままになる。入力データ応答プロトコルFIFOキュー350が流出するときに、(365において)マーキングされたパケットに直面した場合、遅延ユニット332を介した一定の遅延の後にスヌープ有効ロジック330はオンになる。このことにより、入力スヌープ・キュー320の先頭のスヌープが解放されることが可能になる。従って、キャッシュ・コントローラ380の内部のプロトコル処理は、変更されないままである。出力プロトコル処理375は、キャッシュ応答キュー374から受信したスヌープ応答の一部であるデータメッセージが、完了メッセージがAKリング315に配置される少なくとも1クロック前にBKリング310に配置されることを確保する出力シーケンサを含む。図4の実施例の特定の実装について示したが、本発明の範囲はこの点に限定されない。
第1及び第2の入力キューの間の検索のためにCAM構造を導入することにより、少ない数のメッセージで明示的書き込み(EWB:explicit write back)(Mコピー追い出し(M copy eviction))及びフル・ヒント(full hint)(Sコピー追い出し(S copy eviction))のトランザクションが実現され得る。通常のプロトコルでは、EWB要求及びフル・ヒントは、実際にラインを追い出す前に、最初にディレクトリに問い合わせ、進行中の競合する要求が存在することを確認する必要はない。CAM構造を提供することにより、EWBは、このようなメッセージなしに処理することができ、入力スヌープは、EWBに“追いつく(catch)”ことができる。この理由は、EWB/フル・ヒントが完了するまで、これらがプロトコル・バッファFIFO構造に存在するからである。
様々な実装で、実施例は、ホーム・エージェントに存在するようなディレクトリに実装されてもよい。図5を参照すると、本発明の一実施例によるディレクトリのブロック図が示されている。図5に示すように、ホーム・エージェントのディレクトリでもよいディレクトリ400は、所定のホーム・エージェント・ディレクトリに存在し得る他の構成要素の中でも、関連するキャッシュに格納されたキャッシュ・ラインに関する情報と、特定の制御ロジックと、キューと、タイマとを含む。
図5に示すように、ディレクトリ400は、ディレクトリ400が関連するキャッシュの1つの所定のキャッシュ・ラインにそれぞれ関連し得る複数のエントリを有するディレクトリ配列410を含んでもよい。各エントリは、潜在的な他のこのような情報の中でも、キャッシュ・ラインの位置及びその状態に関する様々な情報を含んでもよい。更に、ディレクトリ400は、保留中要求キュー420を含み、保留中要求キュー420は、ディレクトリ400に関連する異なるキャッシング・エージェントから様々な要求を格納する記憶装置でもよい。所定の要求が実行され得るか否かを決定するために、同じキャッシュ・ラインの何らかの前の未解決の要求が既に要求キュー420に存在するか否かが決定されてもよい。
更に図5に示すように、スヌープ・ロジック430が存在してもよい。このようなロジックは、入力要求と、ディレクトリ配列410の情報とを分析し、異なるキャッシング・エージェントへの様々なスヌープ要求の送信を可能にするために使用されてもよい。更に、実施例は、単一のキャッシュ・ラインの複数の要求がディレクトリ400に入力されている状況を扱うために使用され得る同時要求ロジック450を含んでもよい。例えば、同時要求ロジック450は、単一のキャッシュ・ラインの複数の同時要求の存在を決定し、ディレクトリ400からの第2のこのような同時要求の迅速な送信(すなわち、第1の同時要求に関連する完了メッセージの受信の前)を可能にしてもよい。このため、1つ以上のタイマ445に関連して、同時要求ロジック450は、第2の同時要求がディレクトリ400から送信され得る前に保留中要求キュー420に格納される所定の最小時間遅延を決定してもよい。例えば、1つ以上のタイマは、ディレクトリから送信され得る同時要求の間の所定のサイクル数を正確に測定し、キャッシュ・ミス要求の積極的な処理を可能にするために使用されてもよい。図5の実施例のこの特定の実装について示したが、本発明の範囲はこの点に限定されない。
或る特定の実装では、同時要求ロジック450は、以下の図6のフローチャートに従ってこのような同時要求を扱ってもよい。図6を参照すると、本発明の実施例に従って同時スヌープ要求が見られ得る前の最小時間遅延を決定するために、ディレクトリ又は他のトラッキング構造により使用され得る方法500のフローチャートが示されている。図6に示すように、方法500は、キャッシュ・ラインについて第2のキャッシング・エージェントから要求を受信することにより始まってもよい(ブロック510)。要求に基づいて、ディレクトリは、キャッシュ・ラインの位置及び状態を決定してもよい(ブロック520)。例えば、ディレクトリは、キャッシュ・ラインが第1のキャッシング・エージェントに存在することを決定してもよい。従って、ディレクトリは、第1のキャッシング・エージェントから第2のキャッシング・エージェントにキャッシュ・ラインを送信する第1のスヌープ要求を生成してもよい(ブロック530)。
何らかの時点で、この第1のスヌープ要求の送信前又はその後であるが、キャッシュ対キャッシュ転送の承諾の完了前に、ディレクトリは、同じキャッシュ・ラインについて第3のキャッシング・エージェントから同時要求を受信してもよい(ブロック540)。従って、ディレクトリは、ディレクトリ内のFIFOのような保留中要求キュー又は他のこのような一時記憶装置に同時要求を格納してもよい。
その後、ディレクトリは、第1及び第2のキャッシング・エージェントの間でのキャッシュ・ラインの送信の承諾を受信してもよい(ブロック550)。ブロック560においてこの承諾を受信したときに、最小時間遅延が決定されてもよい。この時間遅延は、ディレクトリが第2のスヌープ要求を送信し、キャッシュ・ラインが第2のキャッシング・エージェントから第3のキャッシング・エージェントに転送されることを要求することができる前の期間として計算されてもよい。一実施例では、この計算は、式1に従って行われてもよい。ダイヤモンド570において、例えばディレクトリのタイマに基づいて、この最小時間遅延に到達したか否かが決定されてもよい。到達していない場合、ダイヤモンド570はループバックしてもよい。時間遅延が実現した場合、第2のスヌープ要求は、第2のキャッシング・エージェントに送信され、キャッシュ対キャッシュ転送を生じてもよい(ブロック580)。その後、ディレクトリは、その送信の承諾を受信してもよい(ブロック590)。これにより、保留中の要求がキューのその位置から出され得る。図6の実施例のこの特定の実装について示したが、本発明の範囲はこの点に限定されない。
実施例は、複数の異なるシステム形式で実装されてもよい。図7を参照すると、本発明の実施例によるシステムのブロック図が示されている。図7に示すように、マルチプロセッサ・システム600は、ポイント・ツー・ポイント相互接続システムであり、ポイント・ツー・ポイント相互接続650を介して結合された第1のプロセッサ670及び第2のプロセッサ680を含む。図7に示すように、各プロセッサ670及び680は、第1及び第2のプロセッサ・コア(すなわち、プロセッサ・コア674a及び674b並びにプロセッサ・コア684a及び684b)と、ディレクトリ673及び683とを含むマルチコア・プロセッサでもよい。ディレクトリ673及び683は、バッファレス・リング相互接続を介してコアに結合されてもよい。各ディレクトリは、最小の待ち時間で同時のスヌープ要求の送信を可能にするために、図5に示すようなロジックを含んでもよい。
更に図7を参照すると、第1のプロセッサ670は、メモリ・コントローラ・ハブ(MCH:memory controller hub)672と、ポイント・ツー・ポイント(P-P)インタフェース676及び678とを更に含む。同様に、第2のプロセッサ680は、MCH682と、P-Pインタフェース686及び688とを含む。図7に示すように、MCH672及び682は、プロセッサを各メモリ(すなわち、メモリ632及びメモリ634)に結合する。メモリは、各プロセッサにローカルに付加されたメインメモリ(例えば、DRAM(dynamic random access memory))の一部でもよい。第1のプロセッサ670及び第2のプロセッサ680は、それぞれP-P相互接続652及び654を介してチップセット690に結合されてもよい。図7に示すように、チップセット690は、P-Pインタフェース694及び698を含む。
更に、チップセット690は、チップセット690を高性能グラフィック・エンジン638に結合するインタフェース692を含む。次に、チップセット690は、インタフェース696を介して第1のバス616に結合されてもよい。図7に示すように、様々なI/O装置614は、第1のバス616を第2のバス626に結合するバス・ブリッジ618と共に、第1のバス616に結合されてもよい。一実施例では、例えば、キーボード/マウス622、通信装置626及びデータ記憶ユニット628(コード630を含んでもよいディスクドライブ又は他の大容量記憶装置等)を含み、様々な装置は第2のバス620に結合されてもよい。更に、オーディオI/O624が第2のバス620に結合されてもよい。
実施例は、コードで実装されてもよく、命令を実行するようにシステムをプログラムするために使用され得る命令を格納した記憶媒体に格納されてもよい。記憶媒体は、如何なる種類のディスク(フロッピー(登録商標)ディスク、光ディスク、CD-ROM(compact disk read-only memory)、CD-RW(compact disk rewritable)及び光磁気ディスクを含む)及び半導体装置(ROM(read-only memory)、RAM(random access memory)(DRAM(dynamic random access memory)、SRAM(static random access memory)、EPROM(erasable programmable read-only memory)、フラッシュ・メモリ、EEPROM(electrically erasable programmable read-only memory)等)若しくは光カード、又は他の種類の電子命令を格納するのに適した媒体を含んでもよいが、これらに限定されない。
本発明について限られた数の実施例に関して説明したが、当業者は、複数の変更及び変形を認識する。特許請求の範囲は、この特許発明の真の要旨及び範囲内に入るこのような全ての変更及び変形をカバーすることを意図する。

Claims (17)

  1. 第1のキャッシング・エージェントにおいて、第1のキューの完了メッセージのエントリに関連するタグ値が第2のキューのデータメッセージの対応するエントリのタグ値より小さいか否かを決定し、
    前記決定に少なくとも部分的に基づいて、ディレクトリ、前記第1のキャッシング・エージェント及び第2のキャッシング・エージェントに結合された相互接続に前記完了メッセージを注入し、そうでない場合に、前記完了メッセージの注入を妨げ、
    前記第1のキャッシング・エージェントがキャッシュ・ラインについて第1の要求に応じて前記第2のキャッシング・エージェントにキャッシュ・ラインを送信したことを示す前記完了メッセージを、前記第1のキャッシング・エージェントから前記ディレクトリで受信し、
    前記完了メッセージを受信したときに、前記ディレクトリが前記キャッシュ・ラインを第3のキャッシング・エージェントに転送する第2の要求を前記第2のキャッシング・エージェントに送信できる前の時間遅延を決定し、
    前記時間遅延後に前記第2の要求を送信することを有する方法。
  2. 前記第1のキャッシング・エージェントが、前記キャッシュ・ラインを含む対応するデータメッセージを前記相互接続に注入した後に、前記第1のキャッシング・エージェントは、前記完了メッセージを送信する、請求項1に記載の方法。
  3. 前記相互接続の第1のチャネルで前記完了メッセージを受信し、前記相互接続の第2のチャネルで前記第2の要求を送信することを更に有する、請求項2に記載の方法。
  4. 前記第3のキャッシング・エージェントの前記キャッシュ・ラインを入力データ・キューに格納し、
    前記ディレクトリからの入力スヌープ要求が前記キャッシュ・ラインに対応するか否かを決定し、
    そうである場合、前記キャッシュ・ラインが前記入力データ・キューから流出されるまで、前記入力スヌープ要求を第2のキューに保持することを更に有する、請求項1に記載の方法。
  5. 前記入力スヌープ要求へのスヌープ応答を送信する前に、前記第3のキャッシング・エージェントから前記キャッシュ・ラインを含むデータメッセージを送信することを更に有する、請求項に記載の方法。
  6. 前記第1のキャッシング・エージェントから前記ディレクトリに追い出しトランザクションを送信せずに、前記第1のキャッシング・エージェントからキャッシュ・ラインのフル・ヒントを追い出す又は送信することを更に有する、請求項1に記載の方法。
  7. キャッシュ・メモリをそれぞれ含む複数のキャッシング・エージェントと、
    相互接続を介して前記複数のキャッシング・エージェントに結合されたディレクトリ手段と
    を有し、
    前記ディレクトリ手段は、前記ディレクトリ手段に結合されたキャッシング・エージェントのキャッシュ・メモリに格納されたキャッシュ・ラインにそれぞれ関連する複数のエントリを格納し、
    前記ディレクトリ手段は、前記ディレクトリ手段により完了メッセージを受信した後に、前記ディレクトリ手段がT=(P−N−M+1)*Dに従って第2の要求に応じてスヌープ要求を送信できる前の時間遅延を決定する手段を含み、ただし、Pは第1のキャッシング・エージェントから第2のキャッシング・エージェントへの相互接続ホップ数に対応し、Nは前記第2のキャッシング・エージェントから前記ディレクトリ手段への相互接続ホップ数に対応し、Mは前記第1のキャッシング・エージェントから前記ディレクトリ手段への相互接続ホップ数に対応し、Dは、前記相互接続のリング・ストップの間の遅延に対応し、前記第2の要求は、同じキャッシュ・ラインへの少なくとも1つの他の保留中のアクセスと同時である装置。
  8. 前記ディレクトリ手段は、いつ前記時間遅延が完了したかを示す少なくとも1つのタイマ手段を含む、請求項に記載の装置。
  9. 前記ディレクトリ手段は、第1のキャッシング・エージェントから完了メッセージを受信せずに、第1のキャッシング・エージェントに前記スヌープ要求を送信する、請求項に記載の装置。
  10. 前記スヌープ要求は、前記スヌープ要求に応じて第1のキャッシング・エージェントから第2のキャッシング・エージェントに転送される第1のキャッシュ・ラインの要求である、請求項に記載の装置。
  11. 前記ディレクトリ手段は、前記第2のキャッシング・エージェントからの第2の要求に応じて前記スヌープ要求を生成し、
    前記第2の要求は、前記キャッシュ・ラインについての前記第1のキャッシング・エージェントからの第1の要求の後に、前記ディレクトリ手段で受信される、請求項10に記載の装置。
  12. 前記ディレクトリ手段は、前記第2の要求を要求側キューに格納する、請求項11に記載の装置。
  13. 前記ディレクトリ手段は、前記第1のキャッシュ・ラインを前記第1のキャッシング・エージェントに転送した第3のキャッシング・エージェントからの完了メッセージに応じて、前記第2の要求をキューから出す、請求項11に記載の装置。
  14. 複数のキャッシング・エージェントと、スヌープ要求、データメッセージ及び承諾メッセージについて独立のチャネルを含むリング相互接続を介して前記複数のキャッシング・エージェントに結合されたディレクトリとを含むマルチコア・プロセッサと、
    前記マルチコア・プロセッサに結合されたダイナミック・ランダム・アクセス・メモリ(DRAM)と
    を有するシステムであって、
    前記ディレクトリは、第1のキャッシュ・ラインが、第1のキャッシング・エージェントの前記第1のキャッシュ・ラインの受信を示す第1の承諾メッセージを前記第1のキャッシング・エージェントから受信せずに、前記第1のキャッシング・エージェントから第2のキャッシング・エージェントに転送されること生じるために、前記ディレクトリがヌープ要求を第1のキャッシング・エージェントに送信できる前の時間遅延を計算する手段を含み、
    前記時間遅延は、前記第1のキャッシング・エージェントへの前記第1のキャッシュ・ラインの送信を示す第2の承諾メッセージを第3のキャッシング・エージェントから受信したときに計算され、前記第1のキャッシング・エージェントの前記第1のキャッシュ・ラインの受信を示す第1の承諾メッセージを前記第1のキャッシング・エージェントから受信しない、前記第2の承諾メッセージの受信と前記スヌープ要求の送信との間のサイクル数に対応するシステム。
  15. 前記計算する手段は、前記リング相互接続の特性に少なくとも部分的に基づいて、前記時間遅延を計算する、請求項14に記載のシステム。
  16. 前記ディレクトリは、いつ前記時間遅延か完了したかを示す少なくとも1つのタイマを含む、請求項14に記載のシステム。
  17. 前記第1のキャッシング・エージェントは、前記第3のキャッシング・エージェントから前記第1のキャッシュ・ラインを受信したときに、前記ディレクトリへの承諾メッセージの送信を妨げるように構成される、請求項14に記載のシステム。
JP2009141086A 2008-06-13 2009-06-12 ディレクトリ型コヒーレンシー・プロトコルでの同時アクセスの最適化 Expired - Fee Related JP5037566B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/157,792 2008-06-13
US12/157,792 US8190820B2 (en) 2008-06-13 2008-06-13 Optimizing concurrent accesses in a directory-based coherency protocol

Publications (2)

Publication Number Publication Date
JP2009301552A JP2009301552A (ja) 2009-12-24
JP5037566B2 true JP5037566B2 (ja) 2012-09-26

Family

ID=40902559

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009141086A Expired - Fee Related JP5037566B2 (ja) 2008-06-13 2009-06-12 ディレクトリ型コヒーレンシー・プロトコルでの同時アクセスの最適化

Country Status (6)

Country Link
US (1) US8190820B2 (ja)
JP (1) JP5037566B2 (ja)
CN (1) CN101604295B (ja)
DE (1) DE102009023898B4 (ja)
GB (1) GB2460747B (ja)
TW (1) TWI416322B (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8180963B2 (en) * 2009-05-21 2012-05-15 Empire Technology Development Llc Hierarchical read-combining local memories
US8468309B2 (en) 2010-09-25 2013-06-18 Intel Corporation Optimized ring protocols and techniques
JP5772458B2 (ja) * 2011-09-29 2015-09-02 富士通株式会社 データ管理プログラム、ノード、および分散データベースシステム
US9280468B2 (en) * 2011-10-26 2016-03-08 Qualcomm Technologies, Inc. Three channel cache-coherency socket protocol
US9910807B2 (en) 2011-11-29 2018-03-06 Intel Corporation Ring protocol for low latency interconnect switch
US9639490B2 (en) 2011-11-29 2017-05-02 Intel Corporation Ring protocol for low latency interconnect switch
EP2795472A1 (en) * 2011-12-23 2014-10-29 Intel Corporation Methods and apparatus for efficient communication between caches in hierarchical caching design
US9158578B1 (en) 2011-12-30 2015-10-13 Emc Corporation System and method for migrating virtual machines
US8627012B1 (en) 2011-12-30 2014-01-07 Emc Corporation System and method for improving cache performance
US8930947B1 (en) 2011-12-30 2015-01-06 Emc Corporation System and method for live migration of a virtual machine with dedicated cache
US9104529B1 (en) * 2011-12-30 2015-08-11 Emc Corporation System and method for copying a cache system
US9053033B1 (en) * 2011-12-30 2015-06-09 Emc Corporation System and method for cache content sharing
US9009416B1 (en) * 2011-12-30 2015-04-14 Emc Corporation System and method for managing cache system content directories
US9235524B1 (en) 2011-12-30 2016-01-12 Emc Corporation System and method for improving cache performance
US9135177B2 (en) 2013-02-26 2015-09-15 Apple Inc. Scheme to escalate requests with address conflicts
US9304926B2 (en) 2013-07-23 2016-04-05 Arm Limited Coherency control message flow
US9785556B2 (en) * 2014-12-23 2017-10-10 Intel Corporation Cross-die interface snoop or global observation message ordering
CN106326183B (zh) * 2015-06-30 2019-03-15 龙芯中科技术有限公司 基于目录的缓存一致性的实现方法及装置
US10387314B2 (en) * 2015-08-25 2019-08-20 Oracle International Corporation Reducing cache coherence directory bandwidth by aggregating victimization requests
US9971692B2 (en) 2015-11-17 2018-05-15 International Business Machines Corporation Supporting concurrent operations at fine granularity in a caching framework
US9965390B2 (en) 2015-11-17 2018-05-08 International Business Machines Corporation Reducing defragmentation in a multi-grained writeback cache
US10095595B2 (en) 2015-11-17 2018-10-09 International Business Machines Corporation Instant recovery in a multi-grained caching framework
US9817757B2 (en) 2015-11-17 2017-11-14 International Business Machines Corporation Scalable metadata management in a multi-grained caching framework
US9916249B2 (en) 2015-11-17 2018-03-13 International Business Machines Corporation Space allocation in a multi-grained writeback cache
US10152417B2 (en) * 2016-04-11 2018-12-11 International Business Machines Corporation Early freeing of a snoop machine of a data processing system prior to completion of snoop processing for an interconnect operation
US10733103B2 (en) 2017-12-13 2020-08-04 International Business Machines Corporation Non-blocking directory-based cache coherence
US11544193B2 (en) 2020-09-11 2023-01-03 Apple Inc. Scalable cache coherency protocol
CN112579479B (zh) * 2020-12-07 2022-07-08 成都海光微电子技术有限公司 在维护缓存一致性时维护事务次序的处理器及其方法
US11934313B2 (en) 2021-08-23 2024-03-19 Apple Inc. Scalable system on a chip

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2474201B1 (fr) * 1980-01-22 1986-05-16 Bull Sa Procede et dispositif pour gerer les conflits poses par des acces multiples a un meme cache d'un systeme de traitement numerique de l'information comprenant au moins deux processus possedant chacun un cache
US5778438A (en) * 1995-12-06 1998-07-07 Intel Corporation Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests
US5878213A (en) * 1996-02-15 1999-03-02 International Business Machines Corporation Methods, systems and computer program products for the synchronization of time coherent caching system
US5897657A (en) * 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessing system employing a coherency protocol including a reply count
US5832276A (en) * 1996-10-07 1998-11-03 International Business Machines Corporation Resolving processor and system bus address collision in a high-level cache
US6065101A (en) * 1997-06-12 2000-05-16 International Business Machines Corporation Pipelined snooping of multiple L1 cache lines
US6122719A (en) * 1997-10-31 2000-09-19 Silicon Spice Method and apparatus for retiming in a network of multiple context processing elements
FI108502B (fi) * 1998-12-11 2002-01-31 Nokia Corp Menetelmõ ja laitteet lyhytsanomien lõhettõmiseksi
US7461213B2 (en) * 2002-10-08 2008-12-02 Rmi Corporation Advanced processor system using request, data, snoop, and response rings
US20040103248A1 (en) * 2002-10-08 2004-05-27 Hass David T. Advanced telecommunications processor
US6922756B2 (en) * 2002-12-19 2005-07-26 Intel Corporation Forward state for use in cache coherency in a multiprocessor system
US7917646B2 (en) * 2002-12-19 2011-03-29 Intel Corporation Speculative distributed conflict resolution for a cache coherency protocol
JP4658064B2 (ja) 2003-10-22 2011-03-23 インテル コーポレイション 相互接続ネットワークでの効率的な順序保存用の方法及び装置
JP4085389B2 (ja) * 2003-12-24 2008-05-14 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサシステムにおける一貫性制御装置及び一貫性制御方法
US7856534B2 (en) * 2004-01-15 2010-12-21 Hewlett-Packard Development Company, L.P. Transaction references for requests in a multi-processor network
US7822929B2 (en) * 2004-04-27 2010-10-26 Intel Corporation Two-hop cache coherency protocol
EP1782244A4 (en) * 2004-07-07 2010-01-20 Emc Corp SYSTEMS AND METHODS FOR IMPLEMENTING DISTRIBUTED CACHED MEMORY COHERENCE
US7454576B2 (en) * 2004-12-27 2008-11-18 Intel Corporation System and method for cache coherency in a cache with different cache location lengths
US7406566B2 (en) * 2005-06-03 2008-07-29 Intel Corporation Ring interconnect with multiple coherence networks
US7437518B2 (en) * 2005-09-07 2008-10-14 Intel Corporation Hiding conflict, coherence completion and transaction ID elements of a coherence protocol
US8010753B2 (en) * 2005-09-28 2011-08-30 International Business Machines Corporation Systems and methods for temporarily transferring use of portions of partitioned memory between host computers
US7747897B2 (en) * 2005-11-18 2010-06-29 Intel Corporation Method and apparatus for lockstep processing on a fixed-latency interconnect
US7962694B2 (en) * 2006-03-31 2011-06-14 Intel Corporation Partial way hint line replacement algorithm for a snoop filter
US20080005486A1 (en) * 2006-06-29 2008-01-03 Mannava Phanindra K Coordination of snoop responses in a multi-processor system
US8301790B2 (en) * 2007-05-30 2012-10-30 Randy Morrison Synchronization of audio and video signals from remote sources over the internet
US7779210B2 (en) * 2007-10-31 2010-08-17 Intel Corporation Avoiding snoop response dependency
JP2009245323A (ja) * 2008-03-31 2009-10-22 Nec Computertechno Ltd レイテンシ短縮方式及び方法

Also Published As

Publication number Publication date
DE102009023898A1 (de) 2009-12-31
US8190820B2 (en) 2012-05-29
CN101604295A (zh) 2009-12-16
TWI416322B (zh) 2013-11-21
US20090313435A1 (en) 2009-12-17
JP2009301552A (ja) 2009-12-24
DE102009023898B4 (de) 2020-06-18
GB2460747B (en) 2010-08-04
GB0909592D0 (en) 2009-07-15
GB2460747A (en) 2009-12-16
CN101604295B (zh) 2013-03-27
TW201011536A (en) 2010-03-16

Similar Documents

Publication Publication Date Title
JP5037566B2 (ja) ディレクトリ型コヒーレンシー・プロトコルでの同時アクセスの最適化
US10169080B2 (en) Method for work scheduling in a multi-chip system
US8806148B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US7814279B2 (en) Low-cost cache coherency for accelerators
US9529532B2 (en) Method and apparatus for memory allocation in a multi-node system
US9170946B2 (en) Directory cache supporting non-atomic input/output operations
US8799589B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads
US7640401B2 (en) Remote hit predictor
US20150254182A1 (en) Multi-core network processor interconnect with multi-node connection
US10592459B2 (en) Method and system for ordering I/O access in a multi-node environment
US9372800B2 (en) Inter-chip interconnect protocol for a multi-chip system
US6877056B2 (en) System with arbitration scheme supporting virtual address networks and having split ownership and access right coherence mechanism
US6973545B2 (en) System with a directory based coherency protocol and split ownership and access right coherence mechanism
WO2020243067A1 (en) Memory pipeline control in a hierarchical memory system
US7797495B1 (en) Distributed directory cache
US20070073979A1 (en) Snoop processing for multi-processor computing system
US20080082756A1 (en) Mechanisms and methods of using self-reconciled data to reduce cache coherence overhead in multiprocessor systems
US10917198B2 (en) Transfer protocol in a data processing network
US6970980B2 (en) System with multicast invalidations and split ownership and access right coherence mechanism
US6970979B2 (en) System with virtual address networks and split ownership and access right coherence mechanism
JP2023544538A (ja) キャッシュライン追い出しのためのマルチレベルキャッシュコヒーレンシプロトコル

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120228

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

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

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

Free format text: PAYMENT UNTIL: 20150713

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees