JP4960989B2 - インバリデーショントランザクションのスヌープフィルタからの削除 - Google Patents

インバリデーショントランザクションのスヌープフィルタからの削除 Download PDF

Info

Publication number
JP4960989B2
JP4960989B2 JP2009124745A JP2009124745A JP4960989B2 JP 4960989 B2 JP4960989 B2 JP 4960989B2 JP 2009124745 A JP2009124745 A JP 2009124745A JP 2009124745 A JP2009124745 A JP 2009124745A JP 4960989 B2 JP4960989 B2 JP 4960989B2
Authority
JP
Japan
Prior art keywords
snoop filter
transaction
invalidation
cache
entry
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
JP2009124745A
Other languages
English (en)
Other versions
JP2009295156A (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.)
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 JP2009295156A publication Critical patent/JP2009295156A/ja
Application granted granted Critical
Publication of JP4960989B2 publication Critical patent/JP4960989B2/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
    • G06F12/082Associative directories
    • 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

複数のプロセッサおよび複数のキャッシュを有するマルチプロセッサシステムにおいては、各キャッシュは、メモリに記憶されたデータのコピーを格納しうる。同じデータのコピーを複数のキャッシュが有すると問題が生じる。複数のキャッシュにおけるデータコヒーレンシーを確実にするさまざまな技術が開発されている。例えば、1つのキャッシュ内のデータが修正されると、データの他のコピーは無効とマークされることにより、それらを使用できなくする。
多くのシステムは、このような複数のキャッシュのキャッシュラインにおけるデータの存在および状態を決定するのを援助するスヌープフィルタなどのディレクトリを有しており、キャッシュコヒーレンスの維持に役立てている。スヌープ動作は、バスのエージェントが例えば読み書き動作などのメモリトランザクションをモニタする場合に起こりうる。エージェントは、スヌープフィルタにおけるメモリトランザクションに関わるキャッシュラインの状態を記録しうる。キャッシュラインの状態は、ラインがメインメモリ以外に有効なコピーを1つだけ有するか、複数のキャッシュにより共有される複数の有効なコピーを有するか、または、メインメモリ以外にはコピーを1つも持たない(すなわち、すべてのキャッシュで無効とされている)かどうかを示してよい。スヌープフィルタにおけるデータエントリは、多くの場合、メインメモリ内のそのアドレスの一部によって部分的にインデックス付けされる。
スヌープフィルタは、新しいメモリトランザクションのラインの状態を記録するスペースを使い果たしてしまうことがあり、新しいトランザクションに対応するためにスヌープフィルタからエントリを退避させる必要が生じることもある。スヌープフィルタからエントリが退避させられる場合は、たいてい、退避させられるエントリに関連するラインの有効なコピーを保持している可能性があるすべてのプロセッサキャッシュに、バックインバリデーションメッセージが送信される。キャッシュミスの多くは、使用しようとしたキャッシュラインのスヌープフィルタから生じたバックインバリデーションが原因である。
インクルーシブスヌープフィルタ(ISF)と称されるスヌープフィルタがあり、これは、スヌープフィルタがカバーするキャッシュのキャッシュラインによって、スヌープフィルタにおける情報が包括的に維持されるというものである。インクルーシブキャッシュ階層においては、キャッシュメモリの1つ(すなわち低レベルのキャッシュメモリ)は、他のキャッシュメモリ(すなわち上レベルキャッシュメモリ)に含まれるデータのサブセットを有する。キャッシュ階層は、アクセス速度が比較的速い小さいキャッシュが使用頻度の高いデータを有することを可能としているので、プロセッサの性能を高めることができる。一方、小さいキャッシュよりアクセス速度が遅い大きいキャッシュは、使用頻度の低いデータ(および低レベルキャッシュにおけるデータのコピー)を格納する。
スヌープフィルタは、それらがカバーするキャッシュ同様、エントリの割り当ておよび退避を行う。しかしながら、ISFを有するインクルーシブキャッシュ階層は、若干の共有データを格納するので、1つのキャッシュレベルまたはスヌープフィルタにおけるキャッシュラインを退避させると、キャッシュ階層を維持するためにキャッシュ階層の他のレベルにおける対応するキャッシュラインが退避させられることになる。ISFは、スヌープフィルタから退避させられるアドレスを有するキャッシュラインはカバーされるすべてのキャッシュから削除されることを保証しなければならない。一般に、このことは、バックインバリデーション要求をスヌープフィルタからカバーされるキャッシュに送信することを含む。スヌープフィルタがこのような要求を多数送信すると、有効メモリレイテンシを増大させうる相互接続帯域幅を消費し、それと共に有用なキャッシュエントリを除去する可能性がある。
マルチプロセッサシステムの一実施形態を示すブロック図である。
本発明の一実施形態におけるコヒーレンシーコントローラのブロック図である。
本発明の一実施形態における、キャッシュエージェント、スヌープフィルタ、および、ステージングのやりとりを示すブロック図である。
本発明の一実施形態における方法のフローチャートである。
さまざまな実施形態において、スヌープフィルタは、結合されるキャッシュへ送信するバックインバリデーションメッセージを減らすように構成されうる。このような方法で、キャッシュから退避させられるエントリを少なくし、キャッシュヒット率を高める。バックインバリデーションメッセージの数を減少させることにより、システムの相互接続トラフィックも減らし、メモリレイテンシならびに他のシステム効率因子も向上させる。より詳しくは、さまざまな実施態様において、スヌープフィルタは、エントリ(所定のキャッシュラインに関連するエントリ)を退避させることにより、対応するキャッシュが当該キャッシュライン用の自身のインバリデーションメッセージをすぐに発行する可能性があるにもかかわらず、バックインバリデーションメッセージを送信することを防ぐ。このような方法で、スヌープフィルタから無駄なバックインバリデーションメッセージを送信することも防ぐことができる。
キャッシュ容量および用途によっては、スヌープフィルタから退避させられるキャッシュラインのかなりの部分は、変更される(「ダーティ」とも言う)。キャッシュは、ダーティラインを退避させることを決定すると、通常「明示的ライトバック」(EWB)トランザクションを発行する。いくつかの実施態様では、このトランザクションは、2つのセマンティクスを単一のトランザクションにする明示的インバリデーションライトバック(またはBWL.INVLD)トランザクションとも呼ばれる。より詳しくは、このトランザクションは、問題のキャッシュラインの現在の値を報告し、当該キャッシュラインはキャッシュ階層のすべてのレベルから完全に削除されたという表示を提供する。複数の実施形態がこの2番目の属性を導入することにより、当該キャッシュをカバーするスヌープフィルタは、それに関連するエントリを無許可で削除できる。すなわち、スヌープフィルタは、バックインバリデーション要求を発行せずにスヌープフィルタから対応するエントリを退避させてよい。
このように、カバーされたキャッシュは退避させられたまたは退避させられようとしているISFエントリについての明示的インバリデーションライトバックトランザクションを発行する可能性があると決定できる場合、ISFは、インバリデーション要求の発行を遅らせてよい。そして、キャッシュが問題のキャッシュラインの当該トランザクションを発行した場合、スヌープフィルタは、インバリデーション要求を発行する必要はない。
このように、複数の実施形態は、そのスヌープフィルタ内の退避させられた(または退避させられようとしている)エントリに対して明示的インバリデーションライトバックが発行される可能性のあるという表示をISFが提供する第1のメカニズムと、この情報を利用して、所定の期間インバリデーション要求を発行するのを控える第2のメカニズムとを提供する。関連する明示的インバリデーションライトバックトランザクションがこの期間に受信された場合、スヌープフィルタは、インバリデーション要求を送信しないようにしてよい。
一実施形態では、第1のメカニズムは、読み込み結果用の空間を作るために特定のキャッシュラインにおけるどのキャッシュライン場所が退避させられるかを示す、読み込みトランザクションに伴うヒントを利用してよい。ヒント自体が情報を含んでよく、本願明細書中では退避させられる行が変更されることを報告する「EWBヒント」と呼ばれる。このメカニズムの代替形態は、スヌープフィルタ自体における情報を利用してよい。例えば、退避ヒントを受信した後、スヌープフィルタは、退避させられるべきラインの占有権をキャッシュが得ているという表示を保持してよい。ラインの占有権を要求することは、そのラインを変更することと非常に関連性がある(典型的には、インテル(登録商標)64およびインテル(登録商標)Architecture(IA)−32のinstruction set architecture (ISA)アプリケーションについては90%をはるかに超える確率)。このように、当該表示によって、スヌープフィルタは、インバリデーションメッセージの送信を遅らせてよい。
一実施形態では、第2のメカニズムは、例えば、インバリデーション要求の仮想的または物理的キューまたはプールなどのバッファとして実装されてよい。すなわち、スヌープフィルタは、すべてのスヌープフィルタエントリが格納される一次スヌープフィルタ部分と、二次スヌープフィルタ部分とに分割され、二次スヌープフィルタ部分は、本願明細書においてはステージングプールまたはインバリデーションプールとも呼ばれ、スヌープフィルタから退避させられるエントリが格納される。したがって、退避前の、スヌープフィルタからのインバリデーション要求の送信が控えられる少なくともある期間(例えば、いくつかの実施形態では約100ナノ秒オーダーであってよい予め決められた期間)、一次スヌープフィルタから退避させられたエントリは、このステージングプールに格納されてよい。このようにして生じた明示的インバリデーションライトバックトランザクションが用いられることにより、インバリデーション要求を待っているペンディングのエントリセットを含む当該プールのサーチを可能にし、一致するアイテムはいかなるものも削除することができる。この仮想的または物理的構造におけるペンディングのインバリデーションは、ある期間の後に発行されてよく、プールまたはキューの占有率があるレベルに達するはずの世代を基準に発行されてよく、および/または、十分なシステム資源が利用可能になる場合に発行されてよい。
図1を参照すると、マルチプロセッサシステム10の一実施形態のブロック図が示されている。図1に示すように、システム10は、チップセット13と相互接続する複数の処理ノード17を有してよい。処理ノード17のそれぞれは、1つ以上のプロセッサ11(図には処理ノードごとに2つのプロセッサが示されており、各プロセッサは、プロセッサコアまたはマルチコアプロセッサであってよい)、および、キャッシュ12を有してよい。各キャッシュ12には、「ホームノード」(このキャッシュが配置される処理ノード)のプロセッサ11によるローカルアクセスが可能であり、「リモートノード」(ホームノード以外の処理ノード)のプロセッサ11によるリモートアクセスが可能である。キャッシュ12は、ホームノードのプロセッサ11に対し「ローカルキャッシュ」と呼ばれ、例えば、スタティックRAM(SRAM)のような比較的小型かつ高速のメモリであってよい。処理ノード17は、1つ以上のフロントサイドバス(FSB)14(図にはFSBが2つだけ示されている)または、ポイントツーポイントインターコネクトなどの他のタイプの相互接続を介してチップセット13に結合されてよい。1つ以上の処理ノード17が単一のチップに実装されてよい。システム10は、全体の処理力が高いのでサーバシステムとして用いられてよいが、本発明は、これに限定されない。
チップセット13は、本発明の一実施形態におけるスヌープフィルタを含みうるコヒーレンシーコントローラ132を有してよく、当該コヒーレンシーコントローラ132は、FSB14から受け取った要求を処理し、キャッシュ12間のデータコヒーレンシーを維持する。コヒーレンシーコントローラ132の機能は、図2に関連して以下に詳しく述べる。チップセット13は、処理ノード17にインターフェースを提供するメモリコントローラ134と、メモリ15の記憶場所にアクセスするシステム10の他のコンポーネントとを有してよい。メモリ15は、DRAM(ダイナミックランダムアクセスメモリ)デバイス、または、サーバまたは一般的用途に適した他の揮発性または不揮発性記憶装置であってよい。
チップセット13は、処理ノード11にインターフェースを提供するI/Oコントローラ136と、1つ以上のI/Oデバイス16にアクセスするシステム10の他のコンポーネントも有してよい。I/Oデバイス16は、Industry Standard Architecture (ISA)デバイス、Peripheral Component Interconnect (PCI)デバイス、PCI Expressデバイス、Universal Serial Bus (USB)デバイス、Small Computer System Interface(SCSI)デバイス、または、サーバまたは一般的用途に適した他の標準または登録商標の入出力デバイスを有してよい。いくつかの実施形態では、チップセット13は、単一のチップセットとして実装されてよい。いくつかの実施形態では、チップセット13は、2つ以上のチップセットとして実装されてよい。
プロセッサ11は、それぞれのローカルキャッシュ12におけるメモリのラインを格納することにより、高速アクセスを容易にしてよい。キャッシュ12は、データ、命令、または、それらの組合せを格納してよい。各キャッシュラインに対し、キャッシュ12は、キャッシュラインをメモリ15内の対応するラインに関連付けるかまたはマップするタグ(例えばメモリアドレスの一部)を格納してよい。キャッシュ12は、また、各キャッシュラインのコヒーレンシー状態を格納し、アップデートしてよい。例えば、キャッシュ12は、キャッシュラインが変更された(M)状態、排他的(E)状態、共有(S)状態、または、有効(I)状態であってよいMESIコヒーレンシー状態をサポートしてよい。
図2を参照すると、一実施形態では、コヒーレンシーコントローラ132は、キャッシュラインのコヒーレンシー情報を提供するスヌープフィルタ24を有してよい。図2に示すように、コヒーレンシーコントローラ132の一実施形態は、いくつかのFSBポート(FSB_Port_0 21およびFSB_Port_1 22)、コヒーレンシーエンジン23、スヌープフィルタ24、および、ステージングプール28を有してよい。
スヌープフィルタ24は、例えば、コヒーレンシー情報を格納する行またはラインを有する完全結合アレイ、セット結合アレイ、または、直接マップアレイなどの1つ以上の記憶アレイを有してよい。一実施形態では、スヌープフィルタ24は、N個のキャッシュラインのコヒーレンシー情報を格納する、各セットがN個のスロット(または行)225(図には1つしか示されていない)を含むN個の行の結合アレイを有する。キャッシュラインは、例えば、メモリアドレスの特定のビットを用いてセットの1つにマップされてよい。各行225は、ライン情報を格納してよい。情報は、アドレスタグ、MESIコヒーレンシー状態情報、および、存在ベクトルを含んでよい。存在ベクトルは、キャッシュラインを有しうるキャッシュにどのFSB14が接続するかを示してよい。
一実施形態では、スヌープフィルタ24は、E/M状態にあるラインに関連するエントリのみを格納してよい。このようなスヌープフィルタエントリをE/Mエントリと称してよい。すなわち、スヌープフィルタ24は、いずれかのキャッシュがメインメモリ以外にラインの専用コピーを含むかまたは含むかも知れない場合、1ラインにつき1E/Mエントリを格納してよい。E/Mエントリのみを格納することにより、スヌープフィルタ24に格納されるエントリの総数を減らすことができ、スヌープフィルタを有効に拡大することもできる。トレードオフとして、EMエントリのみを格納することにより、スヌープフィルタ24によって生成されるスヌープ数を増やしてよい。しかしながら、特に読み込み強化用途については、一般的に、システム全体の性能が向上する。
図2にさらに示されるように、スヌープフィルタ24は、ステージングプール28と連結されていてもよい。図2の実施形態ではこのような構造が示されているが、本発明の範囲はこれに限定されず、さまざまな実施態様では、ステージングプール28はスヌープフィルタ24の一部であってもよい。ステージングプール28は、エントリが実際に退避させられ、(したがってステージングプール28から削除され)、対応するインバリデーションメッセージがコヒーレンシーエンジン23から1つ以上のプロセッサノードに伝送される前に、スヌープフィルタ24から退避させられるエントリを格納してよい。
一実施形態では、メモリトランザクションの要求がコヒーレンシーコントローラ132に届くと、コヒーレンシーエンジン23は、要求の転送先を決定してよい。メモリトランザクションは、メモリまたはキャッシュへのアクセスを要求するトランザクションのことを指す。コヒーレンシーエンジン23は、スヌープフィルタ24を調べてスヌープフィルタが要求されたラインの情報を持っているかどうか決定する。スヌープフィルタ24が情報を持っている場合、コヒーレンシーエンジン23は、ラインの存在ベクトルに基づき、ラインの現在のコピーを有するキャッシュに接続しているFSBポート(21または22)に要求を転送する。トランザクションが要求されたラインの状態を変更する可能性がある場合、コヒーレンシーエンジン23は、アップデートユニット25を用いてスヌープフィルタ24における情報をアップデートし、変更を反映する。スヌープフィルタ24がライン情報を持っていない場合、コヒーレンシーエンジン23は、スヌープフィルタにエントリを追加し、アップデートユニット25を用いて要求されたラインのコヒーレンシー情報を記録してよい。
完全なスヌープフィルタに新しいエントリが挿入されるという状況においては、あるいは、スヌープフィルタ24における所定のエントリに関連付けられたキャッシュからインバリデーショントランザクションを受け取る場合には、コヒーレンシーエンジン23のインバリデーションユニット26は、スヌープフィルタにおけるエントリを無効にするよう用いられてよい。このようなインバリデーションの実行によって、選択されたエントリはスヌープフィルタ24から退避させられるであろう。しかしながら、退避させられるエントリのキャッシュから明示的インバリデーションライトバックトランザクションを受け取る可能性がある場合、インバリデーションユニット26は、スヌープフィルタ24によってエントリをステージングプール28に送ることにより、バックインバリデーションメッセージの送信を防いでよい。
図3は、本発明の一実施形態における、キャッシュエージェント、スヌープフィルタ、および、ステージング領域のやりとりを示すブロック図である。特に、図3は、図2のプロセッサノードの1つに対応しうるキャッシュエージェント17を示す。キャッシュエージェント17は、スヌープフィルタ24に結合され、スヌープフィルタ24は、ステージングプール28に結合されている。説明を簡単にすべく、図では、さらにステージングプール28がキャッシュエージェント17に結合されている。しかしながら、さまざまな実施態様において、スヌープフィルタ24およびステージングプール28は、対応するキャッシュエージェントに結合されるチップセットまたは他のインターフェースの一部であってよい。
動作中、例えば、レベル2(L2)キャッシュなどのキャシュエージェント17に関連付けられたキャシュメモリは、追加の情報を格納するためには1つ以上のエントリを退避させる必要がある容量レベルにあることを決定してよい。そのようにするには、キャッシュエージェント17は、容量退避トランザクションをスヌープフィルタ24を含むインターフェースへと送信してよい。スヌープフィルタ24は、インクルーシブスヌープフィルタなので、このような容量退避トランザクションを受け取ると、キャッシュエージェント17から退避させられるべきキャッシュラインの関連するエントリを自身から退避させてよい。図3に示すように、明示的インバリデーションライトバックトランザクションがこのキャッシュラインのキャッシュエージェント17から発行される可能性があることをスヌープフィルタ24が決定すると、スヌープフィルタ24からエントリを直接退避させる代わりに、スヌープフィルタ24からのインバリデーション要求をラインの占有権を有するキャッシュエージェントに送信させ、この場合、スヌープフィルタ24は、ペンディングのエントリをステージングプール28に移動させてよい。すなわち、ステージングプール28は、スヌープフィルタ24からの退避を待っているさまざまなエントリのための記憶領域を有してよい。このエントリがステージングプール28に入った後、所定の期間が経過する前に、キャッシュエージェント17がインバリデーション退避トランザクションを発行した場合、バックインバリデーション要求を送信せずにステージングプール28からエントリが退避させられてよい。
図4は、本発明の一実施形態における方法のフローチャートを示す。方法300は、本発明の一実施形態に従い、スヌープフィルタからのインバリデーション要求の送信を遅らせるために用いられてよい。図4に示すように、方法300は、キャッシュエージェントからペンディングの容量退避の表示を受け取ることから始まってよい(ブロック310)。次に、キャッシュエージェントからのインバリデーションライトバックトランザクションがありうるかどうかがスヌープフィルタによって決定されてよい(ひし形320)。上述のごとく、この決定は、キャッシュエージェントからの1つ以上のヒント、および/または、スヌープフィルタにすでに存在している情報に基づきなされてよいが、これに限定されない。このようなトランザクションが起こりそうにない場合、制御はブロック330へと進み、スヌープフィルタにおける情報に基づいて、関連するスヌープフィルタエントリが退避させられ、スヌープフィルタから1つ以上のキャッシュエージェントにインバリデーショントランザクションが送信されてよい。
しかしながら、上述のごとく、このようなインバリデーショントランザクションの送信がシステムの相互接続帯域幅に影響を及ぼすことがある。したがって、さまざまな実施形態では、キャッシュエージェントからのインバリデーションライトバックトランザクションが起こりそうな場合、制御は、ひし形320からブロック340へと進む。ここで、関連するスヌープフィルタエントリは、ステージングまたはインバリデーションプールのようなステージング領域へと移動してよい。そして、エントリがステージング領域へと移動したときから予め決められた期間内に、キャッシュエージェントからインバリデーションライトバックトランザクションを受け取ったかどうかが決定されてよい(ひし形350)。すなわち、新たなインバリデーションライトバックトランザクションを所定の期間内に受信することによってエントリが削除されない限り、当該ステージングプールは、送信されるべきインバリデーショントランザクションのリストと一致してよい。このような方法で、上記のようなインバリデーションライトバックトランザクションが受信された場合、スヌープフィルタからインバリデーションメッセージが送信されるのを防ぐ。
インバリデーションライトバックトランザクションが所定の期間内に受信された場合、インバリデーショントランザクションを送信せずにスヌープフィルタエントリが退避させられてよい(ブロック360)。しかしながら、このようなトランザクションを所定の期間内にキャッシュエージェントから受け取らない場合、上述のごとく制御はひし形350からブロック330へと進む。図4の実施形態で示すのは、特定の実施態様であるが、本発明の範囲はこれに限定されない。
このように、複数の実施形態では、インクルーシブスヌープフィルタを用いてシステムの相互接続帯域幅を縮小し、それによって有効なメモリレイテンシも短縮させ、システムの性能を高めることができる。さらに、システム資源の可用性に少なくとも一部基づいてインバリデーショントラフィックを調整することにより、システム性能のばらつきを抑えることができる。
複数の実施形態は、暗号で実装されてよく、命令を格納する記憶媒体に格納されてよい。命令は、当該命令を実行するシステムをプログラムするために用いられてよい。記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、CD−ROM、CD−RW、および、光磁気ディスクを含むいかなるタイプのディスク、ROM(リードオンリーメモリ)、DRAM(ダイナミックRAM)などのRAM(ランダムアクセスメモリ)、SRAM(スタティックRAM)、EPROM、フラッシュメモリ、EEPROM(登録商標)などの半導体デバイス、磁気または光カード、あるいは、電子命令を格納するのに適した他のいかなるタイプの媒体を含んでよい。
これまで限定した数の実施形態に関連して本発明を説明してきたが、そこからさまざまな修正および変更がなされうることが当業者には理解できよう。添付の請求項は、このような修正および変更も真の趣旨および範囲内に収まるものとしてすべて含むものとする。

Claims (20)

  1. キャッシュエージェントからペンディングの容量退避の表示を受信する段階と、
    前記ペンディングの容量退避に関連するキャッシュラインに対して、前記キャッシュエージェントからのインバリデーションライトバックトランザクションが起こり得るどうかを決定する段階と、
    前記インバリデーションライトバックトランザクションが起こり得る場合、前記キャッシュラインに関連するスヌープフィルタエントリを、スヌープフィルタからステージング領域へと移動させる段階と、
    を備える方法。
  2. 前記インバリデーションライトバックトランザクションが起こり得ない場合、前記スヌープフィルタにおける情報に基づき、前記スヌープフィルタエントリを退避させ、前記スヌープフィルタから1つ以上のキャッシュエージェントへとバックインバリデーショントランザクションを送信する段階をさらに備える、請求項1に記載の方法。
  3. 前記インバリデーションライトバックトランザクションは、前記スヌープフィルタエントリが前記ステージング領域へと移動したときから予め決められた期間内に前記キャッシュエージェントから受信されたかどうかを決定する段階をさらに備える、請求項1または2に記載の方法。
  4. 前記インバリデーションライトバックトランザクションが前記予め決められた期間内に受信された場合、バックインバリデーショントランザクションを送信せずに、前記ステージング領域から前記スヌープフィルタエントリを退避させる段階をさらに備える、請求項3に記載の方法。
  5. 前記インバリデーションライトバックトランザクションが前記予め決められた期間内に受信されない場合、前記スヌープフィルタからの前記バックインバリデーショントランザクションを1つ以上のキャッシュエージェントに送信する段階をさらに備える、請求項4に記載の方法。
  6. システム資源レベルに少なくとも一部基づき、前記バックインバリデーショントランザクションを前記スヌープフィルタから前記1つ以上のキャッシュエージェントへ送信する段階をさらに備える、請求項5に記載の方法。
  7. 退避させられるべきキャッシュラインを変更することを示す前記キャッシュエージェントからの行ヒントに少なくとも一部基づき、前記インバリデーションライトバックトランザクションが起こり得ることを決定する段階をさらに備える、請求項1から6のいずれか一項に記載の方法。
  8. 前記キャッシュエージェントでは退避させられるべき対応する前記キャッシュラインが排他的状態にあるという前記スヌープフィルタの表示に基づき、前記インバリデーションライトバックトランザクションが起こり得ることを決定する段階をさらに備える、請求項1から7のいずれか一項に記載の方法。
  9. キャッシュメモリのキャッシュラインにそれぞれ対応付けられたエントリを格納するスヌープフィルタと、
    前記スヌープフィルタに結合されて前記スヌープフィルタを制御するコヒーレンシーユニットと、
    を備え、
    前記スヌープフィルタは、複数のキャッシュメモリを有するインクルーシブスヌープフィルタであり、
    前記コヒーレンシーユニットは、退避させられるスヌープフィルタエントリに対応するキャッシュラインのインバリデーションライトバックトランザクションをキャッシュエージェントが送信する可能性がある場合、前記スヌープフィルタから退避させられる前記スヌープフィルタエントリのバックインバリデーショントランザクションを送信しないようにする、
    装置。
  10. 前記スヌープフィルタに結合され、前記コヒーレンシーユニットからバックインバリデーショントランザクションが送信される前に、前記スヌープフィルタから退避させられたスヌープフィルタエントリを格納する記憶領域をさらに備える、請求項9に記載の装置。
  11. 前記コヒーレンシーユニットは、前記スヌープフィルタエントリに対応する前記キャッシュラインの退避トランザクションを受信すると、前記退避させられたスヌープフィルタエントリを前記記憶領域に移動させる、請求項10に記載の装置。
  12. 前記コヒーレンシーユニットは、前記スヌープフィルタエントリに対応する前記キャッシュラインのインバリデーションライトバックトランザクションを受信すると、前記バックインバリデーショントランザクションを送信せずに、前記スヌープフィルタエントリを前記記憶領域から削除する、請求項11に記載の装置。
  13. 前記コヒーレンシーユニットは、前記退避トランザクションにおける行ヒント情報に少なくとも一部基づき、前記インバリデーションライトバックトランザクションが起こり得ることを決定する、請求項11に記載の装置。
  14. 前記スヌープフィルタエントリが変更された状態にある場合、前記コヒーレンシーユニットは、前記インバリデーションライトバックトランザクションが起こり得ることを決定する、請求項9から13のいずれか一項に記載の装置。
  15. 前記スヌープフィルタエントリが前記記憶領域内に予め決められた期間存在する場合、前記コヒーレンシーユニットは、前記バックインバリデーショントランザクションを送信する、請求項11に記載の装置。
  16. 少なくとも1つのコア、および、少なくとも1つのキャッシュメモリを有する第1のプロセッサと、
    少なくとも1つのコア、および、少なくとも1つのキャッシュメモリを有する第2のプロセッサと、
    前記第1のプロセッサおよび前記第2のプロセッサに結合されるチップセットと、
    前記チップセットに結合されるDRAM(ダイナミックランダムアクセスメモリ)と、
    を備え、
    前記チップセットは、
    前記キャッシュメモリのうちの1つのキャッシュのキャッシュラインにそれぞれ対応付けられたエントリを格納するスヌープフィルタと、
    前記スヌープフィルタに結合され、前記第1のプロセッサおよび前記第2のプロセッサが、退避させられるスヌープフィルタエントリに対応するキャッシュラインのインバリデーションライトバックトランザクションを送信する可能性がある場合、前記スヌープフィルタから退避させられる前記スヌープフィルタエントリのバックインバリデーショントランザクションを送信しないようにするコヒーレンシーユニットと、
    前記スヌープフィルタに結合され、前記コヒーレンシーユニットからバックインバリデーショントランザクションが送信される前に、前記スヌープフィルタから退避させられた前記スヌープフィルタエントリを格納する記憶領域と、を有する、
    システム。
  17. 前記コヒーレンシーユニットは、前記スヌープフィルタエントリに対応する前記キャッシュの退避トランザクションを受信すると、退避させられたスヌープフィルタエントリを前記記憶領域に移動させる、請求項16に記載のシステム。
  18. 前記コヒーレンシーユニットは、前記スヌープフィルタエントリに対応する前記キャッシュラインのインバリデーションライトバックトランザクションを受信すると、前記バックインバリデーショントランザクションを送信せずに、前記スヌープフィルタエントリを前記記憶領域から削除する、請求項17に記載のシステム。
  19. 前記コヒーレンシーユニットは、前記退避トランザクションにおける行ヒント情報に少なくとも一部基づき、前記インバリデーションライトバックトランザクションが起こり得ることを決定する、請求項18に記載のシステム。
  20. 前記スヌープフィルタエントリが前記記憶領域内に予め決められた期間存在する場合、前記コヒーレンシーユニットは、前記バックインバリデーショントランザクションを送信する、請求項16から19のいずれか一項に記載のシステム。
JP2009124745A 2008-05-30 2009-05-22 インバリデーショントランザクションのスヌープフィルタからの削除 Expired - Fee Related JP4960989B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/156,340 2008-05-30
US12/156,340 US8015365B2 (en) 2008-05-30 2008-05-30 Reducing back invalidation transactions from a snoop filter

Publications (2)

Publication Number Publication Date
JP2009295156A JP2009295156A (ja) 2009-12-17
JP4960989B2 true JP4960989B2 (ja) 2012-06-27

Family

ID=40863041

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009124745A Expired - Fee Related JP4960989B2 (ja) 2008-05-30 2009-05-22 インバリデーショントランザクションのスヌープフィルタからの削除

Country Status (6)

Country Link
US (1) US8015365B2 (ja)
JP (1) JP4960989B2 (ja)
CN (2) CN101593160B (ja)
DE (1) DE102009022151B4 (ja)
GB (1) GB2460337B (ja)
TW (1) TWI410796B (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7779210B2 (en) * 2007-10-31 2010-08-17 Intel Corporation Avoiding snoop response dependency
US9448938B2 (en) 2010-06-09 2016-09-20 Micron Technology, Inc. Cache coherence protocol for persistent memories
US8694737B2 (en) 2010-06-09 2014-04-08 Micron Technology, Inc. Persistent memory for processor main memory
GB2484088B (en) * 2010-09-28 2019-08-07 Advanced Risc Mach Ltd Coherency control with writeback ordering
US8613074B2 (en) 2010-09-30 2013-12-17 Micron Technology, Inc. Security protection for memory content of processor main memory
US8489822B2 (en) 2010-11-23 2013-07-16 Intel Corporation Providing a directory cache for peripheral devices
US8635411B2 (en) 2011-07-18 2014-01-21 Arm Limited Data processing apparatus and method for managing coherency of cached data
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
US8935485B2 (en) 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
US9563560B2 (en) 2012-09-28 2017-02-07 Qualcomm Technologies, Inc. Adaptive tuning of snoops
US9639469B2 (en) * 2012-09-28 2017-05-02 Qualcomm Technologies, Inc. Coherency controller with reduced data buffer
US9507716B2 (en) 2014-08-26 2016-11-29 Arm Limited Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
US9639470B2 (en) 2014-08-26 2017-05-02 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
US9489305B2 (en) 2014-12-16 2016-11-08 Qualcomm Incorporated System and method for managing bandwidth and power consumption through data filtering
US11237965B2 (en) * 2014-12-31 2022-02-01 Arteris, Inc. Configurable snoop filters for cache coherent systems
US10157133B2 (en) * 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US9900260B2 (en) 2015-12-10 2018-02-20 Arm Limited Efficient support for variable width data channels in an interconnect network
GB2548387B (en) * 2016-03-17 2020-04-01 Advanced Risc Mach Ltd An apparatus and method for filtering transactions
US9990292B2 (en) 2016-06-29 2018-06-05 Arm Limited Progressive fine to coarse grain snoop filter
US11200177B2 (en) * 2016-09-01 2021-12-14 Arm Limited Cache retention data management
US10042766B1 (en) 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment
US11099871B2 (en) 2018-07-27 2021-08-24 Vmware, Inc. Using cache coherent FPGAS to accelerate live migration of virtual machines
US11126464B2 (en) 2018-07-27 2021-09-21 Vmware, Inc. Using cache coherent FPGAS to accelerate remote memory write-back
US11947458B2 (en) * 2018-07-27 2024-04-02 Vmware, Inc. Using cache coherent FPGAS to track dirty cache lines
US11231949B2 (en) 2018-07-27 2022-01-25 Vmware, Inc. Using cache coherent FPGAS to accelerate post-copy migration
US10761984B2 (en) 2018-07-27 2020-09-01 Vmware, Inc. Using cache coherent FPGAS to accelerate remote access
US10795816B2 (en) * 2018-07-30 2020-10-06 Slack Technologies, Inc. Method, apparatus and computer program product for implementing filter cache in a group-based communication platform
US10761985B2 (en) * 2018-08-02 2020-09-01 Xilinx, Inc. Hybrid precise and imprecise cache snoop filtering
US10657055B1 (en) * 2018-12-13 2020-05-19 Arm Limited Apparatus and method for managing snoop operations
CN112463652B (zh) * 2020-11-20 2022-09-27 海光信息技术股份有限公司 基于缓存一致性的数据处理方法、装置、处理芯片及服务器

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0600626A1 (en) * 1992-11-13 1994-06-08 Cyrix Corporation Coherency for write-back cache in a system designed for write-through cache
JPH1165929A (ja) * 1997-08-26 1999-03-09 Kofu Nippon Denki Kk バスブリッジ回路
US6360301B1 (en) * 1999-04-13 2002-03-19 Hewlett-Packard Company Coherency protocol for computer cache
US6598123B1 (en) * 2000-06-28 2003-07-22 Intel Corporation Snoop filter line replacement for reduction of back invalidates in multi-node architectures
US6574710B1 (en) * 2000-07-31 2003-06-03 Hewlett-Packard Development Company, L.P. Computer cache system with deferred invalidation
US6842830B2 (en) * 2001-03-31 2005-01-11 Intel Corporation Mechanism for handling explicit writeback in a cache coherent multi-node architecture
JP3678715B2 (ja) * 2002-04-24 2005-08-03 エヌイーシーコンピュータテクノ株式会社 分散共有メモリ型マルチプロセッサシステム及びそれに用いるタグ制御方法
US6959364B2 (en) * 2002-06-28 2005-10-25 Intel Corporation Partially inclusive snoop filter
US7093079B2 (en) * 2002-12-17 2006-08-15 Intel Corporation Snoop filter bypass
US7143246B2 (en) * 2004-01-16 2006-11-28 International Business Machines Corporation Method for supporting improved burst transfers on a coherent bus
US7373466B1 (en) * 2004-04-07 2008-05-13 Advanced Micro Devices, Inc. Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
US9727468B2 (en) * 2004-09-09 2017-08-08 Intel Corporation Resolving multi-core shared cache access conflicts
US7305524B2 (en) * 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
US20070094450A1 (en) * 2005-10-26 2007-04-26 International Business Machines Corporation Multi-level cache architecture having a selective victim cache
US7757045B2 (en) * 2006-03-13 2010-07-13 Intel Corporation Synchronizing recency information in an inclusive cache hierarchy
US7962694B2 (en) * 2006-03-31 2011-06-14 Intel Corporation Partial way hint line replacement algorithm for a snoop filter
US7383398B2 (en) * 2006-03-31 2008-06-03 Intel Corporation Preselecting E/M line replacement technique for a snoop filter
US20070233965A1 (en) * 2006-03-31 2007-10-04 Kai Cheng Way hint line replacement algorithm for a snoop filter
US7581068B2 (en) * 2006-06-29 2009-08-25 Intel Corporation Exclusive ownership snoop filter
US8055851B2 (en) 2006-12-14 2011-11-08 Intel Corporation Line swapping scheme to reduce back invalidations in a snoop filter

Also Published As

Publication number Publication date
US8015365B2 (en) 2011-09-06
CN103714015B (zh) 2017-01-18
TW201009578A (en) 2010-03-01
US20090300289A1 (en) 2009-12-03
TWI410796B (zh) 2013-10-01
DE102009022151B4 (de) 2018-09-06
CN101593160A (zh) 2009-12-02
GB2460337B (en) 2010-12-15
CN103714015A (zh) 2014-04-09
GB0909103D0 (en) 2009-07-01
GB2460337A (en) 2009-12-02
CN101593160B (zh) 2014-02-05
JP2009295156A (ja) 2009-12-17
DE102009022151A1 (de) 2010-01-28

Similar Documents

Publication Publication Date Title
JP4960989B2 (ja) インバリデーショントランザクションのスヌープフィルタからの削除
US10078592B2 (en) Resolving multi-core shared cache access conflicts
US7281092B2 (en) System and method of managing cache hierarchies with adaptive mechanisms
US6330643B1 (en) Cache coherency protocols with global and local posted operations
US7581068B2 (en) Exclusive ownership snoop filter
US6145059A (en) Cache coherency protocols with posted operations and tagged coherency states
US9170946B2 (en) Directory cache supporting non-atomic input/output operations
US9189403B2 (en) Selective cache-to-cache lateral castouts
US7827357B2 (en) Providing an inclusive shared cache among multiple core-cache clusters
US6574710B1 (en) Computer cache system with deferred invalidation
US20060184743A1 (en) Cache memory direct intervention
US20100235584A1 (en) Lateral Castout (LCO) Of Victim Cache Line In Data-Invalid State
JP2000250812A (ja) メモリ・キャッシュ・システムおよびその管理方法
JP2007257637A (ja) アクセラレータ用低コストのキャッシュ一貫性を維持する方法及びシステム
US20090006668A1 (en) Performing direct data transactions with a cache memory
US9164910B2 (en) Managing the storage of data in coherent data stores
US7380068B2 (en) System and method for contention-based cache performance optimization
US6418514B1 (en) Removal of posted operations from cache operations queue
US7779210B2 (en) Avoiding snoop response dependency
US6601145B2 (en) Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers that uses dynamic hardware/software controls
US6347361B1 (en) Cache coherency protocols with posted operations
US6345340B1 (en) Cache coherency protocol with ambiguous state for posted operations
US8489822B2 (en) Providing a directory cache for peripheral devices
US6546468B2 (en) Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers performing directory update
US6546469B2 (en) Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120210

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

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

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

Free format text: PAYMENT UNTIL: 20150330

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