JP2008027435A - 排他的所有権のスヌープフィルタ - Google Patents

排他的所有権のスヌープフィルタ Download PDF

Info

Publication number
JP2008027435A
JP2008027435A JP2007170088A JP2007170088A JP2008027435A JP 2008027435 A JP2008027435 A JP 2008027435A JP 2007170088 A JP2007170088 A JP 2007170088A JP 2007170088 A JP2007170088 A JP 2007170088A JP 2008027435 A JP2008027435 A JP 2008027435A
Authority
JP
Japan
Prior art keywords
snoop filter
entry
line
coherence
coherence engine
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
JP2007170088A
Other languages
English (en)
Other versions
JP4737691B2 (ja
Inventor
Jeffrey D Gilbert
ディー. ギルバート、ジェフリー
Kai Cheng
チェン、カイ
Liqun Cheng
チェン、リグン
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2008027435A publication Critical patent/JP2008027435A/ja
Application granted granted Critical
Publication of JP4737691B2 publication Critical patent/JP4737691B2/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)

Abstract

【課題】マルチプロセッサ・システムにおけるマルチプル・キャッシュのためのデータ・コヒーレンス情報を保持するスヌープフィルタのエントリ除去によるキャッシュラインのインバリデーションの防止。
【解決手段】スヌープフィルタが、マルチプロセッサ・システムのマルチプル・キャッシュのためのデータ・コヒーレンス情報を保持する。排他的所有権のスヌープフィルタだけが、プロセッサにより排他的に所有されるエントリを記憶する。コヒーレンス・エンジンは、前記エントリが排他状態で出力される場合に前記スヌープフィルタからエントリが除去されるように、前記スヌープフィルタ中の前記エントリをアップデートする。データ・コヒーレンスを確実にするために、前記コヒーレンス・エンジンは、読出リクエストを書込リクエストから分離するシーケンス・ルールをインプリメントする。
【選択図】図2

Description

本発明は、マルチプロセッサ・システムにおけるキャッシュのコヒーレンスに関する。
マルチプル・キャッシュを備えるマルチプロセッサ・システムにおいて、各々のキャッシュは、メモリに格納されたわずかなデータのコピーを有している場合がある。キャッシュ内のマルチプル・データ・コピーがコヒーレントではないときに、問題が生じる。多様な技術が、データ・コヒーレンスを確保するために開発された。例えば、1つのキャッシュ内のデータが変更されるときに、データの他のコピーは、それらが使用されないようにインバリッドとマークされる。
キャッシュ内のデータのコピーは、しばしばキャッシュ・ライン、メモリ・ライン、ラインとして参照される。スヌーピング・オペレーションは、例えば、キャッシュの中にも存在する可能性のあるメイン・メモリのロケーションに対するリード/ライト・オペレーションのように、バスのエージェントが、メモリ・トランザクションのためのバスをモニタするプロセスに関する。エージェントは、例えば、スヌープフィルタのように、ディレクトリ内のメモリ・トランザクションに関係しているキャッシュ・ラインの状態を記録してもよい。キャッシュ・ラインの状態は、そのラインが、メイン・メモリの外側に1つだけバリッドなコピーを有しているか否か、マルチプル・キャッシュにより共有される複数のバリッドなコピーを有しているか否か、又は、インバリッドにされたか否かを示してもよい。スヌープフィルタ内のデータエントリは、メイン・メモリ内のそのアドレスによりしばしばインデックスを付けられる。
大きいスヌープフィルタは、プロセッサ・キャッシュのトータル・サイズの数倍のカバレージを提供できることが一般に求められる(例えば、8倍のカバレージというのは、そのスヌープフィルタが、スヌープフィルタが保持できるキャッシュの約8倍のキャッシュラインが記載された情報を保持できることを示す技術用語である)。大きいスヌープフィルタは、プロセッサ・キャッシュのヒット率を増大させ、システム性能を改善できる可能性がある。しかし、プロセッサ・キャッシュのサイズは時間とともに増加しているので、回路設計者には、ダイ・サイズの制限により同等な1xカバレージで供給することが強く求められている。したがって、スヌープフィルタは、新規なメモリ・トランザクションのためのラインの状態を記録するためのスペースがときどき無くなる場合があり、そして、新規なトランザクションを収容するために、スヌープフィルタからエントリを立ち退かせる必要がある場合がある。エントリが一旦スヌープフィルタから立ち退かせられると、バック−インバリデーション・メッセージが、立ち退かせられたエントリと関連するラインのバリッドなコピーを保持している可能性のある全てのプロセッサ・キャッシュに送信される。実験は、使用されようとしていたキャッシュ・ラインのバック・インバリデーションのため、大量(例えば20%)のキャッシュがミスしたことを示している。
図1に示されたように、マルチプロセッサ・システム10の実施形態は、チップセット13と相互接続した複数の処理ノード17を備えていてよい。各々の処理ノード17は、一つ以上のプロセッサ11(処理ノードにつき2つのプロセッサが示される)と、キャッシュ12を有していてもよい。各々のキャッシュ12は、「ホーム・ノード」(このキャッシュが配置された処理ノード)のプロセッサ11によって、局所的にアクセス可能であってもよく、「リモートノード」(ホーム・ノード以外の処理ノード)のプロセッサ11によって、遠く離れてアクセス可能であってもよい。キャッシュ12は、ホーム・ノードのプロセッサ11に関するローカルキャッシュとして参照される。処理ノード17は、一つ以上のフロントサイド・バス(FSB)14(2つのFSBだけが示される)、又は、他のタイプのデータ・パス(例えば2地点間接続)を経由してチップセット13に接続されてもよい。一つ以上の処理ノード17は、シングルチップ上でインプリメントされてもよい。システム10は、それが持つ高い集合的な処理能力のため、サーバーシステムとして使用されてもよい。しかし、システム10は、また、デスクトップコンピュータ、又は、他のいかなるコンピューティング・システムとして使用されてもよい。
チップセット13は、各FSB14から受け取るリクエストを処理し、そして、各キャッシュ12間のデータ・コヒーレンスを維持するためのコヒーレンス・コントローラ132を有してもよい。コヒーレンス・コントローラ132のファンクションは、図2により詳細を後述する。チップセット13は、各処理ノード17とメモリ15の記憶場所にアクセスするためのシステム10の他のコンポーネントとのインタフェースを供給するメモリーコントローラ134を有していてもよい。メモリ15は、例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、シンクロナス・ダイナミック・ランダム・アクセス・メモリ(SDRAM)デバイス、ダブル・データレート(DDR)SDRAMデバイス、又は、サーバ又は一般的なアプリケーションに適している他の揮発性、又は、不揮発性メモリ・デバイスのようなメモリー素子の一つ以上のタイプを含んでもよい。いくつかのサーバー・アプリケーションにおいて、メモリ15に記憶されるデータビットは、エラー訂正コード(ECC)によりエラープロテクトされてもよい。
チップセット13は、また、処理ノード17と、一つ以上の入出力デバイス16にアクセスするためのシステム10の他のコンポーネントとのインタフェースを提供するI/Oコントローラ136を有していてもよい。入出力デバイス16は、インダストリー・スタンダード・アーキテクチャー(ISA)デバイス、ペリフェラル・コンポーネント・インターコネクト(PCI)デバイス、PCI・エクスプレス・デバイス、ユニバーサル・シリアルバス(USB)デバイス、スモール・コンピュータ・システム・インタフェース(SCSI)デバイス、又は、サーバ又は一般的なアプリケーションに適している他の標準又は専用の入出力デバイスを含んでもよい。いくつかの実施形態において、チップセット13は、シングルチップとしてインプリメントされてもよい。いくつかの実施形態において、チップセット13は、2つ以上のチップとしてインプリメントされてもよい。チップセット13は、時にはメモリ制御ハブ(MCH)又は、ノース・ブリッジ(NB)として参照されてもよい。マルチ−チップ・インプリメンテーションにおいて、チップセット13の二次チップは、入出力ハブ(IOH)、入出力コントローラ・ハブ(ICH)、及び/又は、サウス・ブリッジ(SB)として参照されてもよい。
プロセッサ11は、短時間のアクセスを容易にするために、それぞれのローカルキャッシュ12のメモリのラインを記憶してもよい。キャッシュ12は、データ、命令、又は、両方の組合せを記憶してもよい。各々のキャッシュ・ラインのために、キャッシュ12は、メモリ15の対応するラインとキャッシュ・ラインを関連させるか、又は、マップ化するためのタグ(例えば、メモリ・アドレスの一部)を記憶してもよい。キャッシュ12は、また、各々のキャッシュ・ラインのためのコヒーレンス状態を記憶して、アップデートしてもよい。例えば、キャッシュ12は、キャッシュ・ラインが、モディファイド(M)状態、排他的(E)状態、シェアード(S)状態、又は、インバリッド(I)状態を有することができるMESIコヒーレンス状態をサポートしてもよい。
MESI状態を使用しているキャッシュ・コヒーレンス・プロトコルの実例によれば、インバリッド状態(I)は、その関連したキャッシュ・ラインが、ラインの現在のコピーでないことを示す。ラインの現在のコピーは、メモリ15内、及び/又は、リモートノード内の他のキャッシュ12のうちの1つに存在してもよい。シェアード状態(S)は、その関連したキャッシュ・ラインが、ラインの現在のコピーであることと、0個以上の他のキャッシュ12は、また、シェアード状態のラインの現在のコピーを有してもよいことを示す。排他状態(E)は、関連したキャッシュ・ラインをその中に有するキャッシュ12が、ラインの所有権を獲得し、そして、ラインの現在のコピーを有することを示す。更に、E状態は、もはや他のキャッシュ12が、M、E、又は、S状態のラインのコピーを有さないことを示す。モディファイド状態(M)は、関連したキャッシュ・ラインをその中に有するキャッシュ12が、モディファイドされたラインの現在のコピーを有することを示す。E状態と同様に、M状態は、もはや他のキャッシュ12は、M、E、又は、S状態のラインのコピーを有さないことを示す。更に、M状態は、関連したラインが、メモリ15の対応するデータラインよりもより最近のものであってよいことを示す。M状態、又は、E状態のいずれも有しているラインは、キャッシュ12のうちの1つと排他的(例えば、所有される、又は、モディファイド)に関連され、M状態及びE状態は、E/M状態に結合されてもよく、時に排他状態として参照される。
キャッシュ・ラインの状態は、例えば、システム10の集中化した配置のスヌープフィルタ又は他の任意のメモリ・コンポーネントのように、集中化したディレクトリにより記録されてもよい。図2に関して、本実施形態におけるコヒーレンス・コントローラ132は、キャッシュ・ラインのコヒーレンス情報を提供するためのスヌープフィルタ24を含んでもよい。図2に示すように、コヒーレンス・コントローラ132の実施形態では、いくつかのFSBポート(FSB_Port_0 21及びFSB_Port_1 22)、コヒーレンス・エンジン23、及び、スヌープフィルタ24を含んでもよい。
スヌープフィルタ24は、コヒーレンス情報を記憶するためのウェイ、又は、ラインを含んで、例えば、完全に結合したアレー、セット結合したアレー、又は、直接にマップ化されたアレーのような一つ以上のストレージ・アレーを含んでもよい。一実施形態において、スヌープフィルタ24は、96キャッシュ・ラインのコヒーレンス情報を記憶するために、各4Kのセットがいずれも96のスロット(又は、ウェイ)225(1つだけが示される)を含む、96−ウェイ・セット結合アレーを有している。キャッシュラインは、各4Kのセットのうちの1つにより、例えば、メモリ・アドレスの最後の12のビットを使用することでマップ化されてもよい。各々のウェイ225は、ラインのための情報を記憶してもよい。情報は、アドレスタグ及びプレゼンス・ベクトルを含んでもよい。アドレス・タグは、各ラインのメモリ・アドレスの全部、又は、一部を含んでもよい。最後の12のメモリ・アドレスビットがセットの位置を決めるために使用される上記の実例において、アドレス・タグは、それらの12のアドレスビットに先んじている他のメモリ・アドレスビットであってもよい。プレゼンス・ベクトルは、どのFSB14を、キャッシュ・ラインを有する可能性があるキャッシュ12に接続するか否かを示してもよい。
一実施形態において、スヌープフィルタ24は、E/M状態を有しているラインに関するエントリだけを記憶してもよい。そのようなスヌープフィルタエントリは、時にはE/Mエントリとして参照される。すなわち、例えば、メイン・メモリ15の外側のラインの排他的・コピーを含むか、又は、含んでもよいなんらかのキャッシュ12がある場合に、スヌープフィルタ24は、ラインのE/Mエントリを記憶してもよい。E/Mエントリだけを記憶することは、スヌープフィルタ24に記憶されるエントリの合計数を減らす可能性があり、そして、スヌープフィルタの大きさを効果的に広くする可能性がある。トレードオフとして、E/Mエントリだけを記憶することは、スヌープフィルタ24により生成されるスヌープの数を増加させる可能性がある。しかし、特に読出が集中するアプリケーションに対して、全体的なシステム性能が一般に改善される。
一実施形態において、メモリ・トランザクションのためのリクエストがコヒーレンス・コントローラ132に到着するときに、コヒーレンスエンジン23が、リクエストをどこへ発送するかを決定してもよい。メモリ・トランザクションは、メモリ15、又は、任意のキャッシュ12にアクセスを要求するトランザクションに関する。コヒーレンス・エンジン23は、スヌープフィルタがリクエストされたラインの情報を有するか否か決定するために、スヌープフィルタ24をルックアップしてもよい。スヌープフィルタ24が情報を有する場合、コヒーレンス・エンジン23は、ラインのプレゼンス・ベクトルに基づくラインの現在のコピーを有するキャッシュ12に接続するFSBポート(21、又は、22)に、リクエストを発送する。トランザクションがリクエストされたラインの状態を変更する可能性がある場合、コヒーレンス・エンジン23は、変更を反映するためにスヌープフィルタ24の情報をアップデートする。スヌープフィルタ24がラインの情報を有していない場合、コヒーレンス・エンジンは、リクエストされたラインのコヒーレンス情報を記録するために、スヌープフィルタにエントリを加えてもよい。
スヌープフィルタ24におけるE/Mだけのストレージをサポートするために、コヒーレンス・エンジン23は、データ・コヒーレンスを保持するためのシーケンス・ルールをインプリメントする。シーケンス・ルールは、メモリーリクエストタイプを読出リクエスト及び書込リクエストに分析する。読出リクエストは、書込リクエストから分離される。プロセッサ11及び入出力デバイス16(図1)は、各々読出リクエスト及び書込リクエストを発行してもよい。プロセッサ・リクエストのために、書込リクエストは、書込(別名所有権のための読出)と書込インバリッドを含んでもよい。各々のリクエスト・タイプのために、異なるコヒーレンス・アクションは、スヌープフィルタのヒット及びスヌープフィルタのミスの場合に用いられる。コヒーレンス・エンジン23は、ハードウエア、又は、埋め込まれたファームウェアによるシーケンス・ルールをインプリメントしてもよい。
Figure 2008027435
シーケンス・ルールの実例がテーブル1に記載されている。各々のリクエスト・タイプ(例えば、読出、又は、書込)に対して、そして、各々のスヌープフィルタの結果(例えば、ヒット、又は、ミス)に対して、コヒーレンス・エンジン23は、データ・コヒーレンスを保持するために、スヌープフィルタ・アクション及びコヒーレンス・アクションを実施する。スヌープフィルタ・アクションは、スヌープフィルタエントリをアップデートするアクションに関する。コヒーレンス・アクションは、キャッシュ・ラインのコヒーレンス状態をアップデートするための一つ以上のプロセッサにスヌープ・メッセージを送信するアクションに関する。一実施形態において、コヒーレンス・エンジン23は、スヌープフィルタアップデートユニット25、インバリッドユニット26、そして、スヌープフィルタ・アクションとコヒーレンス・アクションをインプリメントするためのGoto_Sユニット27を含む回路を有していてもよい。
例えば、プロセッサがメイン・メモリからラインを読みとることをリクエストし、そして、リクエストがスヌープフィルタ24においてヒットする結果になると仮定する。スヌープフィルタ24のヒットは、そのエントリが排他状態(E/M)であり、関連したラインがプロセッサ・キャッシュによって、現在所有されることを意味する。このように、他のプロセッサからの新規な読出リクエストは、ラインにおいて、E/M状態を終了させて、S状態に入らせる。スヌープフィルタ24がE/Mエントリを記憶するだけであり、新しくリクエストされたエントリであり、現在S状態であるならば、スヌープフィルタから除去されなければならない。このように、スヌープフィルタアップデートユニット25は、スヌープフィルタからそのエントリを削除するように、スヌープフィルタ24に指示する。更に、Goto_Sユニット27は、ラインがシェアードになったことをそのラインの現在の所有者に知らせるための「Goto_S」スヌープ・メッセージを送信する。従って、現在の所有者は、E/MからSまでラインの状態を変更してもよい。
読出リクエストが、結果としてスヌープフィルタ24のミスになる場合、リクエストされたエントリは、0以上のキャッシュにより現在所有されていてもよい。メイン・メモリの現在のコピーは、最新であり、新規な読出リクエストは、その現在の状態を変更しない。このように、スヌープフィルタ24は、アップデートされず、そして、コヒーレンス・アクションは実施されない。
プロセッサが、ラインをメイン・メモリへ書き込むリクエストをして、そのリクエストが結果としてスヌープフィルタ24のヒットとなる場合、スヌープフィルタアップデートユニット25は、そのリクエストしているプロセッサがラインの新規な所有者であることを示すスヌープフィルタエントリをアップデートする。スヌープフィルタ24は、排他的所有権が変わったにもかかわらず、エントリがまだE/M状態であるので、エントリを保持する。ユニット26をインバリッドにすることは、現在のローカルコピーはもはや最新でないことを示すために、インバリッド・メッセージをラインの現在の所有者に送信する。このように、排他的アクセス権が、リクエストしているプロセッサに許可され、現在の所有者により所有されるコピーは、インバリッドにされる。
プロセッサは、ラインをメイン・メモリへ書込むようリクエストして、そのリクエストは、スヌープフィルタ24のミスに結果としてなると仮定する。ミスは、任意のプロセッサによりラインが排他的に所有されないことを示す。なぜならば、書込リクエストは、リクエストするプロセッサにより排他的に所有されるラインを発生させ、スヌープフィルタアップデートユニット25は、スヌープフィルタエントリをリクエストされたラインに割り当てる。メイン・メモリの外側でキャッシュに入れられる可能性のあるラインのコピーは、インバリッドにされる。従って、インバリッドユニット26は、インバリッドにするメッセージを、現在のローカルコピーがもはや最新でないことを示すプロセッサの全てに発行する。その結果として、排他的アクセス権が、リクエストしているプロセッサに許可される。
他のシナリオにおいて、プロセッサは、ラインを書込インバリッドにすることをリクエストしてもよい。書込インバリッドオペレーションは、メイン・メモリに対する書込操作であり、加えて、プロセッサのローカルキャッシュ内の全てのコピーをインバリッドにする。書込インバリッドの後、メイン・メモリは、システムの現在のコピーだけを保持する。このように、関連するスヌープフィルタエントリは、もしあれば、エントリが現在の所有者によりもはや排他的に所有されないことを示すために削除される。従って、書込インバリッドリクエストが結果としてスヌープフィルタ24のヒットになる場合、インバリッドユニット26は、現在の所有者にインバリッドにするメッセージを送信する。書込インバリッドリクエストが結果としてミスになる場合、インバリッドユニット26は、メイン・メモリの外側のそのコピーは、もはや最新でないことを示すためのインバリッドにするメッセージをプロセッサの全てに送信する。書込インバリッドリクエストの結果としては、ラインのコピーを有するキャッシュ12が無くなる。
入出力デバイスは、時にはダイレクト・メモリ・アクセス(DMA)読出リクエストを発行してもよい。I/O DMA読出リクエストは、プロセッサ読出リクエストと同様にして扱われる。このように、スヌープフィルタ24のヒットがある場合、関連されたスヌープフィルタエントリは削除され、現在の所有者により所有されるコピーは、S状態に変更される。ミスがある場合、スヌープフィルタ・アクション、又は、コヒーレンス・アクションは実施されない。
入出力デバイスがDMA書込リクエストを発行し、そのリクエストがヒットという結果になる場合、スヌープフィルタアップデートユニット25は、その関連されたラインがもはやE/M状態にないことを示すエントリを削除する。インバリッドにするメッセージは、現在ラインを所有するプロセッサに送信される。リクエストが結果としてミスになる場合、インバリデートメッセージは、全てのプロセッサの各々がラインのコピーを所有する可能性があるので、全てのプロセッサに送信される。I/O転送は、コヒーレンス・アクションが完了された後に発生する。
コヒーレンス・エンジン23により実行されるある一例のプロセスが図3に示される。図1を同様に参照して、ブロック310において、コヒーレンス・エンジン23は、メモリ・トランザクションのためのプロセッサ、又は、入出力デバイスのうちの1つからリクエストを受信する。ブロック320において、コヒーレンス・エンジン23は、リクエストされたラインがスヌープフィルタのエントリを有するか否かを決定するために、スヌープフィルタ24を調べる。スヌープフィルタ24のリクエストされたラインのためのエントリがある場合、ブロック330において、コヒーレンス・エンジン23は、リクエストがエントリの排他的所有権を変更するか否かを決定する。ブロック340において、排他的所有権の変更がある場合、コヒーレンス・エンジン23は、スヌープフィルタエントリをアップデートする。排他的所有権の変更がない場合、コヒーレンス・エンジン23は、スヌープフィルタ24をアップデートしない。ブロック320に戻り、リクエストされたラインがスヌープフィルタ24のエントリを有さない場合、コヒーレンス・エンジン23は、リクエストが、ブロック350において、プロセッサにより排他的に所有されるラインを発生させるか否かを決定する。ラインがプロセッサにより排他的に所有される場合、ブロック360において、コヒーレンス・エンジン23は、エントリをリクエストされたラインに割り当てる。コヒーレンス・エンジン23は、ラインがプロセッサにより排他的に所有されない場合、スヌープフィルタ24をアップデートしない。
ブロック370において、リクエストされたトランザクションが結果としてミスになる読出である状況を除いて、コヒーレンス・エンジン23は、一つ以上のプロセッサにスヌープ・メッセージを発行する。スヌープ・メッセージは、そのラインがS状態に変わったことをラインの現在の所有者に通知する「Goto_S」メッセージであってもよい。スヌープ・メッセージは、そのラインがもはやバリッドでないことをラインの現在の所有者に通知するインバリデートメッセージであってもよい。スヌープ・メッセージは、いくつかがラインのコピーを所有する可能性がある全てのプロセッサについて、ライン又はいくつかのシナリオの現在の所有者に送信されてもよい。スヌープ・メッセージのタイプと、スヌープ・メッセージの宛先は、リクエスト・タイプとスヌープフィルタの結果(例えばヒット、又は、ミス)に依存してもよい。ブロック380において、スヌープ・メッセージが送信された後で、リクエストしているエージェントは、リクエストされたトランザクションの実行を進めてもよい。
前述の本明細書においては、特定の実施形態が記載されている。しかし、それに対して、添付の請求の範囲と広義の趣旨とから逸脱することなく、多様な形態変更と改変ができることは明白である。本明細書及び図面は、このように、制限的な意味よりもむしろ実例と考えられるものである。
本実施形態は、例により示されるが、限定するものではなく、添付図面において、同様な参照番号は同様な要素を示す。本明細書中に記載される「一」又は「一つの」の実施形態とは、同じ実施形態である必要は無く、そして、そのような記載は、少なくとも1つの実施形態を意味することに注意しなければならない。
複数のキャッシュを含むマルチプロセッサ・システムの実施形態のブロック図である。
図1のマルチプロセッサ・システムにおける、スヌープフィルタ及びコヒーレンス・エンジンを含むコヒーレンス・コントローラの実施形態のブロック図である。
図2のコヒーレンス・エンジンによりインプリメントされるシーケンス・ルールのプロセスを示しているフローチャートの一例である。

Claims (20)

  1. 排他状態を有するエントリだけをスヌープフィルタに記憶することと、
    リクエストが前記エントリと関連するラインの排他的所有権を変更すると、前記スヌープフィルタのエントリをアップデートすること、
    を備える方法。
  2. 前記スヌープフィルタをアップデートする際に、読出リクエストを書込リクエストから分離すること、
    を更に備える請求項1に記載の方法。
  3. 前記エントリをアップデートすることは、
    読出リクエストが受信されると、前記スヌープフィルタの前記エントリを削除すること、
    を有する請求項1に記載の方法。
  4. 前記エントリをアップデートすることは、
    プロセッサの書き込みリクエストが結果としてヒットになると、前記ラインの所有者を変更すること、
    を更に有する請求項1に記載の方法。
  5. 前記エントリをアップデートすることは、
    プロセッサが結果としてミスになる書込リクエストを発行すると、前記スヌープフィルタの新規なエントリを前記プロセッサに割り当てること、
    を更に有する請求項1に記載の方法。
  6. 前記エントリをアップデートすることは、
    ダイレクト・メモリ・アクセス(DMA)のリクエストが結果として前記スヌープフィルタのヒットになると、前記スヌープフィルタの前記エントリを削除すること、
    を更に有する請求項1に記載の方法。
  7. 書込リクエストが結果としてミスであると、キャッシュ・ラインが前記スヌープフィルタにより追跡される全てのプロセッサに、インバリッド・メッセージを送信すること、
    を更に備える請求項1に記載の方法。
  8. 書込リクエストが結果としてヒットになると、前記ラインの現在の所有者にインバリッド・メッセージを送信すること、
    を更に備える請求項1に記載の方法。
  9. 複数のプロセッサと、
    前記プロセッサに接続され、排他状態を有するエントリだけを記憶しているスヌープフィルタと、
    前記スヌープフィルタの前記エントリをアップデートするコヒーレンス・エンジンと、
    を備える装置。
  10. 前記コヒーレンス・エンジンは、
    読出リクエストを書込リクエストから分離するシーケンス・ルールをインプリメントする回路、
    を有する請求項9に記載の装置。
  11. 前記コヒーレンス・エンジンは、
    読出リクエストが前記コヒーレンス・エンジンにより受信されると、前記スヌープフィルタからエントリを除去するための、スヌープフィルタアップデートユニットを
    を更に有する請求項9に記載の装置。
  12. 前記コヒーレンス・エンジンは、
    ラインの排他状態をシェアード状態に変更するためのGoto_Sユニット、
    を更に有する請求項11に記載の装置。
  13. 前記コヒーレンス・エンジンは、
    書込リクエストが前記コヒーレンス・エンジンにより受信されると、少なくとも一つの前記プロセッサにインバリッド・メッセージを送信するためのインバリッドユニット、
    を更に有する請求項9に記載の装置。
  14. 前記複数のプロセッサは、
    MESI(モディファイド、排他的、シェアード、又は、インバリッド)状態を使用するキャッシュ・コヒーレンス・プロトコルをサポートする複数のキャッシュ、
    を有する請求項9に記載の装置。
  15. ダイレクト・メモリ・アクセス(DMA)リクエストを発行するために、前記スヌープフィルタに接続された複数の入出力(I/O)デバイス、
    を更に有する請求項9に記載の装置。
  16. 複数のプロセッサ、
    前記複数のプロセッサにより一部がキャッシュに格納されるサーバ・メモリ、
    外部リクエストを受信して応答する少なくとも一つのサーバ入出力(I/O)デバイスと、
    排他状態を含むエントリだけを記憶するためのスヌープフィルタと、
    前記スヌープフィルタの前記エントリをアップデートするためのコヒーレンス・エンジンと、
    を有するチップセット、
    を備えるシステム。
  17. 前記コヒーレンス・エンジンは、
    読出リクエストを書込リクエストから分離するシーケンス・ルールをインプリメントするための回路、
    を有する請求項16に記載のシステム。
  18. 前記コヒーレンス・エンジンは、
    前記コヒーレンス・エンジンにより読出リクエストが受信されると、前記スヌープフィルタからエントリを除去するためのスヌープフィルタ・アップデートユニット、
    を更に有する請求項16に記載のシステム。
  19. 前記コヒーレンス・エンジンは、
    ラインの排他状態をシェアード状態に変更するGoto_Sユニット、
    を更に有する請求項18に記載のシステム。
  20. 前記コヒーレンス・エンジンは、
    前記コヒーレンス・エンジンにより書込リクエストが受信されると、少なくとも一つのプロセッサにインバリッド・メッセージを送信するためのインバリッドユニット、
    を更に有する請求項16に記載のシステム。
JP2007170088A 2006-06-29 2007-06-28 排他的所有権のスヌープフィルタ Expired - Fee Related JP4737691B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/479,327 US7581068B2 (en) 2006-06-29 2006-06-29 Exclusive ownership snoop filter
US11/479,327 2006-06-29

Publications (2)

Publication Number Publication Date
JP2008027435A true JP2008027435A (ja) 2008-02-07
JP4737691B2 JP4737691B2 (ja) 2011-08-03

Family

ID=38420925

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007170088A Expired - Fee Related JP4737691B2 (ja) 2006-06-29 2007-06-28 排他的所有権のスヌープフィルタ

Country Status (6)

Country Link
US (1) US7581068B2 (ja)
JP (1) JP4737691B2 (ja)
CN (1) CN101097545B (ja)
DE (1) DE102007030116B4 (ja)
GB (1) GB2439650B (ja)
TW (1) TWI336846B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009295156A (ja) * 2008-05-30 2009-12-17 Intel Corp インバリデーショントランザクションのスヌープフィルタからの削除
CN111417934A (zh) * 2017-12-05 2020-07-14 Arm有限公司 用于处理写入操作的装置和方法

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080109624A1 (en) * 2006-11-03 2008-05-08 Gilbert Jeffrey D Multiprocessor system with private memory sections
US7657710B2 (en) * 2006-11-17 2010-02-02 Sun Microsystems, Inc. Cache coherence protocol with write-only permission
US7996626B2 (en) * 2007-12-13 2011-08-09 Dell Products L.P. Snoop filter optimization
US9058272B1 (en) 2008-04-25 2015-06-16 Marvell International Ltd. Method and apparatus having a snoop filter decoupled from an associated cache and a buffer for replacement line addresses
US8041898B2 (en) * 2008-05-01 2011-10-18 Intel Corporation Method, system and apparatus for reducing memory traffic in a distributed memory system
US8489822B2 (en) 2010-11-23 2013-07-16 Intel Corporation Providing a directory cache for peripheral devices
US9477600B2 (en) * 2011-08-08 2016-10-25 Arm Limited Apparatus and method for shared cache control including cache lines selectively operable in inclusive or non-inclusive mode
CN104583956B (zh) 2012-06-15 2019-01-04 英特尔公司 用于实现加载存储重新排序和优化的指令定义
KR101996592B1 (ko) 2012-06-15 2019-07-04 인텔 코포레이션 명확화 없는 비순차 load store 큐를 갖는 재정렬된 투기적 명령어 시퀀스들
KR101996351B1 (ko) 2012-06-15 2019-07-05 인텔 코포레이션 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐
KR101832574B1 (ko) * 2012-06-15 2018-02-26 인텔 코포레이션 모든 store들이 캐시의 모든 워드들에 대한 검사를 스누핑해야만 하는 것을 방지하기 위해 store들을 필터링하는 방법 및 시스템
CN104583943B (zh) 2012-06-15 2018-06-08 英特尔公司 拥有具有分布式结构的动态分派窗口的虚拟加载存储队列
EP2862084A4 (en) 2012-06-15 2016-11-30 Soft Machines Inc METHOD AND SYSTEM FOR IMPLEMENTING RECOVERY FROM A SPECULATIVE TRANSMISSION OF FAULT FORECASTS / ERRORS DUE TO THE CHANGE AND OPTIMIZATION OF MEMORY LOADS
CN104583975B (zh) 2012-06-15 2017-07-14 英特尔公司 无消歧乱序加载存储队列
US20140095801A1 (en) * 2012-09-28 2014-04-03 Devadatta V. Bodas System and method for retaining coherent cache contents during deep power-down operations
US9405351B2 (en) 2012-12-17 2016-08-02 Intel Corporation Performing frequency coordination in a multiprocessor system
US9292468B2 (en) 2012-12-17 2016-03-22 Intel Corporation Performing frequency coordination in a multiprocessor system based on response timing optimization
US9436972B2 (en) 2014-03-27 2016-09-06 Intel Corporation System coherency in a distributed graphics processor hierarchy
US9639470B2 (en) * 2014-08-26 2017-05-02 Arm Limited Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
US9507716B2 (en) * 2014-08-26 2016-11-29 Arm Limited Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
US9727466B2 (en) * 2014-08-26 2017-08-08 Arm Limited Interconnect and method of managing a snoop filter for an interconnect
US9748788B2 (en) * 2015-09-17 2017-08-29 Qualcomm Incorporated Systems and methods for charging a battery
KR102428563B1 (ko) * 2015-09-30 2022-08-03 삼성전자주식회사 수눕 작동을 관리하는 코히런트 인터커넥트와 이를 포함하는 데이터 처리 장치들
US9900260B2 (en) 2015-12-10 2018-02-20 Arm Limited Efficient support for variable width data channels in an interconnect network
US10157133B2 (en) * 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US9990292B2 (en) * 2016-06-29 2018-06-05 Arm Limited Progressive fine to coarse grain snoop filter
US10346307B2 (en) 2016-09-28 2019-07-09 Samsung Electronics Co., Ltd. Power efficient snoop filter design for mobile platform
US10339060B2 (en) * 2016-12-30 2019-07-02 Intel Corporation Optimized caching agent with integrated directory cache
US10042766B1 (en) 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment
US10360158B2 (en) * 2017-03-27 2019-07-23 Samsung Electronics Co., Ltd. Snoop filter with stored replacement information, method for same, and system including victim exclusive cache and snoop filter shared replacement policies
US10915445B2 (en) 2018-09-18 2021-02-09 Nvidia Corporation Coherent caching of data for high bandwidth scaling
US11550720B2 (en) 2020-11-24 2023-01-10 Arm Limited Configurable cache coherency controller

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240621A (ja) * 1996-12-09 1998-09-11 Ncr Internatl Inc マルチプロセッサ・コンピュータ・システム
JPH10260898A (ja) * 1996-12-09 1998-09-29 Ncr Internatl Inc キャッシュ整合メモリ・システムの整合サイクルの回数を低減する方法
JP2002163149A (ja) * 2000-10-31 2002-06-07 Hewlett Packard Co <Hp> マルチプロセッサシステムのキャッシュコヒーレンスプロトコル
JP2003067246A (ja) * 2001-07-31 2003-03-07 Hewlett Packard Co <Hp> シングル・ラインとライン・グループの両方のコヒーレンシを維持するライン・グループのキャッシュ・システム
JP2006501546A (ja) * 2002-09-27 2006-01-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598123B1 (en) * 2000-06-28 2003-07-22 Intel Corporation Snoop filter line replacement for reduction of back invalidates in multi-node architectures
US6810467B1 (en) * 2000-08-21 2004-10-26 Intel Corporation Method and apparatus for centralized snoop filtering
US6950906B2 (en) * 2002-12-13 2005-09-27 Hewlett-Packard Development Company, L.P. System for and method of operating a cache
US7093079B2 (en) * 2002-12-17 2006-08-15 Intel Corporation Snoop filter bypass
US7107410B2 (en) * 2003-01-07 2006-09-12 Hewlett-Packard Development Company, L.P. Exclusive status tags
US7305524B2 (en) * 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
US7386685B2 (en) * 2005-03-29 2008-06-10 International Busniess Machines Corporation Method and apparatus for filtering snoop requests using multiple snoop caches

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240621A (ja) * 1996-12-09 1998-09-11 Ncr Internatl Inc マルチプロセッサ・コンピュータ・システム
JPH10260898A (ja) * 1996-12-09 1998-09-29 Ncr Internatl Inc キャッシュ整合メモリ・システムの整合サイクルの回数を低減する方法
JP2002163149A (ja) * 2000-10-31 2002-06-07 Hewlett Packard Co <Hp> マルチプロセッサシステムのキャッシュコヒーレンスプロトコル
JP2003067246A (ja) * 2001-07-31 2003-03-07 Hewlett Packard Co <Hp> シングル・ラインとライン・グループの両方のコヒーレンシを維持するライン・グループのキャッシュ・システム
JP2006501546A (ja) * 2002-09-27 2006-01-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009295156A (ja) * 2008-05-30 2009-12-17 Intel Corp インバリデーショントランザクションのスヌープフィルタからの削除
CN111417934A (zh) * 2017-12-05 2020-07-14 Arm有限公司 用于处理写入操作的装置和方法
JP2021505994A (ja) * 2017-12-05 2021-02-18 エイアールエム リミテッド 書込み動作を処理するための装置及び方法
JP7320508B2 (ja) 2017-12-05 2023-08-03 アーム・リミテッド 書込み動作を処理するための装置及び方法

Also Published As

Publication number Publication date
TWI336846B (en) 2011-02-01
GB0712625D0 (en) 2007-08-08
TW200815992A (en) 2008-04-01
DE102007030116A1 (de) 2008-02-14
GB2439650B (en) 2011-09-28
CN101097545A (zh) 2008-01-02
DE102007030116B4 (de) 2014-11-13
US20080005485A1 (en) 2008-01-03
GB2439650A (en) 2008-01-02
US7581068B2 (en) 2009-08-25
CN101097545B (zh) 2012-05-30
JP4737691B2 (ja) 2011-08-03

Similar Documents

Publication Publication Date Title
JP4737691B2 (ja) 排他的所有権のスヌープフィルタ
US6115804A (en) Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention
TWI676891B (zh) 轉譯後備緩衝器管理
KR100308323B1 (ko) 공유된 개입 지원을 가지는 비균등 메모리 액세스 데이터처리 시스템
US6647453B1 (en) System and method for providing forward progress and avoiding starvation and livelock in a multiprocessor computer system
US7174431B2 (en) Mechanism for resolving ambiguous invalidates in a computer system
TWI391821B (zh) 在互連結構上發佈請求而無參照基於標籤快取狀態的低階快取之處理單元及資料處理系統與方法
US8015365B2 (en) Reducing back invalidation transactions from a snoop filter
US7814279B2 (en) Low-cost cache coherency for accelerators
US9170946B2 (en) Directory cache supporting non-atomic input/output operations
US8037252B2 (en) Method for reducing coherence enforcement by selective directory update on replacement of unmodified cache blocks in a directory-based coherent multiprocessor
JP3629511B2 (ja) 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム
KR20170069149A (ko) 데이터 처리 시스템의 캐시 일관성을 위한 스누프 필터
US6266743B1 (en) Method and system for providing an eviction protocol within a non-uniform memory access system
TW201107974A (en) Cache coherent support for flash in a memory hierarchy
WO2011041095A2 (en) Memory mirroring and migration at home agent
US6269428B1 (en) Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system
US7383398B2 (en) Preselecting E/M line replacement technique for a snoop filter
US7797495B1 (en) Distributed directory cache
US20180336135A1 (en) Ownership tracking updates across multiple simultaneous operations
US20080140942A1 (en) Implementing a hot coherency state to a cache coherency protocol in a symmetric multi-processor environment

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110228

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110422

R150 Certificate of patent or registration of utility model

Ref document number: 4737691

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140513

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees