JP4966205B2 - 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測 - Google Patents

共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測 Download PDF

Info

Publication number
JP4966205B2
JP4966205B2 JP2007548605A JP2007548605A JP4966205B2 JP 4966205 B2 JP4966205 B2 JP 4966205B2 JP 2007548605 A JP2007548605 A JP 2007548605A JP 2007548605 A JP2007548605 A JP 2007548605A JP 4966205 B2 JP4966205 B2 JP 4966205B2
Authority
JP
Japan
Prior art keywords
processor
cache block
cache
shared
block
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
JP2007548605A
Other languages
English (en)
Other versions
JP2008525901A (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 JP2008525901A publication Critical patent/JP2008525901A/ja
Application granted granted Critical
Publication of JP4966205B2 publication Critical patent/JP4966205B2/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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

複数のマルチプロセッサデータプロセッシングシステムは、多数のプロセッサの集合的な計算力を利用する。メモリシステムは、マルチプロセッサシステムの中心となり、多数のプロセッサの間でデータを共有している間に十分な容量をそれぞれのプロセッサに提供するために拡張性がなければならない。特定のアプリケーションにとって、データを共有する効率的な手段は、多数のプロセッサの上で動作している複数のスレッドの間の効率的な協力のために重要である。
1つのCPUによって書き込まれる大部分のデータブロックは、所有権が取得された後すぐには、他の複数のエージェント/プロセッサによって読み出されたり、または書き込まれたりしない傾向にある。しかし、いくつかのブロックが多数の実行のスレッドを同期させるために用いられている場合には、それらのブロックは、短い時間でとても激しく共有され得る。通信または同期の待ち時間のオーバヘッドは、チップマルチプロセッサのようなマルチプロセッサシステムの上で、マルチスレッドの作業負荷の拡張性を決定するなかで、1つのファクターになり得る。
本発明の様々な特徴が添付の図面に示されたような好適な実施形態の下記の記述から明かになる。複数の図面を通して、同様の参照符号が同一の部分を通常参照する。複数の図面は、必ずしも一定の縮尺でなく、その代わりに、本発明の本質を示すことに重要性を置いている。
マルチプロセッサシステムのブロック図である。
図1のマルチプロセッサシステムの中のプロセッサのブロック図である。
所有されているキャッシュブロックのライトバックを早期に予測するために、図1のマルチプロセッサシステムによって実行される一例の方法のフローチャートである。
マルチスレッドのプロセッサのための環境を提供し得るシステムのブロック図である。
下記の記述において、限定ではなく説明の目的のため、本発明の様々な側面の十分な理解を提供するために、具体的な詳細、例えば、特定の構造、アーキテクチャ、インターフェース、技術等が説明される。しかし、本開示の利益を有する技術の当業者にとって、
本発明の様々な側面が、これらの具体的な詳細から外れる他の例において実施され得ることが明かである。場合によっては、周知のデバイス、回路、および方法の記述は、本発明の記述を不必要な詳細な記述で不明瞭にしないために省略される。
本発明は、複数のチップマルチプロセッサノードで構成された、1つの拡張性のある共有メモリシステムのための、所有された複数のキャッシュブロックの複数のライトバックに関する。本発明の複数の実施形態は、複数のプロセッサを含む1つの半導体チップを提供し、および1つの双方向性のリングは、複数のプロセッサおよび共有アドレス空間を連結するために相互接続する。本発明の1つの実施形態によれば、それぞれのプロセッサは、多数のCPUを含んでよく、アドレス空間は、1つの大きな共有キャッシュを含んでよい。それぞれのCPUは、独自のプライベートインストラクションおよび複数のデータキャッシュ(複数の第1レベルキャッシュ)を有してよく、すべてのCPUは、単一の第2レベルキャッシュを共有してよい。キャッシュコヒーレンスは、1つのチップの内部のすべてのキャッシュの間で、さらには、複数のノードを越えたすべてのキャッシュの間で、1つのプロトコルエンジンによって維持される。1つのキャッシュは、システムのそれぞれのノードに含まれてよい。
本文書で開示されたすべての詳細な数量(例えば、プロセッサの数、ノードの数、インターフェースの数)は、単に、1つの特定の実施形態の動作を説明する目的のためにだけ提供される。これらの数量は、重要な場合もあるが、典型的には、本発明の1つの実施と他の実施とで異なる。
図1を参照すると、多数のプロセッサノード102を含む1つのマルチプロセッサシステム100が示されている。それぞれのプロセッサノード102は、望ましくは、単一のチップマルチプロセッサとして実施される。1つの好適な実施形態において、それぞれのプロセッサノード102は、8つのプロセッサコア104を有してよい。しかし、他の複数の実施形態は、2つから16つのプロセッサコア104を有してよい。複数のプロセッサコア104のキャッシュおよび他のサポートする回路は、独立して示されるので(図2参照)、複数のプロセッサコア104は、1つの中央処理ユニットから構成されてよく、複数のプロセッサのコアである。
それぞれのコア104は、1つの論理的な共有バッキングキャッシュ106に連結される。共有バッキングキャッシュ106は、メモリ108に連結される。メモリ108は、複数のプロセッサによって用いられたまたは用いられる、データまたは複数の命令を格納するために用いられる任意の種類のメモリデバイスであってよい。
この点において、本発明は限定されないが、一般的に、メモリ108は、ダイナミックランダムアクセスメモリ(DRAM)で構成されてよい。他の実施形態において、メモリ108は、1つの半導体メモリを含んでよい。さらに他の実施形態において、メモリ108は、例えば、1つのディスクドライブ等の、1つの磁気ストレージデバイスを含んでよい。しかし、本発明は、ここで言及されたメモリの複数の例に限定されない。
多数のノード102は、1つのルータ109および1つのインターコネクト110を含む1つのサブシステムによって連結されてよい。サブシステムは、また、1つの入力キュー、1つの出力キュー、1つのパケットスイッチを含んでよい(すべて図示されていない)。ルータ109は、インターコネクト110を介して他の複数のノードに複数のパケットを送信してよく、複数のノードから複数のパケットを受信してよい。インターコネクト110は、多数のノード102に物理的に連結してよい。1つのシステムコントロールモジュール111は、様々なメンテナンスに関連する機能(例えば、システムコンフィグレーション、イニシャライゼーション、インタラプトディストリビューション)に対処する。
本発明は、1つのマルチプロセッサ共有メモリシステムに関して記述されるが、本発明は、また、複数のシングルプロセッサコンピュータシステムにも適用できる。
図1のコンピュータシステムの実施形態は、複数のプロセッサおよび複数のキャッシュを含んでよい。これらのプロセッサおよびキャッシュは、1つのマルチプロセッサシステムを備える。ここで、複数のキャッシュは、1つのキャッシュコヒーレンスメカニズムを通じて、1つの他のキャッシュとともにコヒーレントに保たれる。キャッシュコヒーレンスプロトコルは、複数のキャッシュをコヒーレントに保つために、プロセッサの複数のキャッシュおよびメモリの複数のインターコネクトの中で実施されてよい。
キャッシュコヒーレンシーは、複数のマルチプロセッサシステムで共有メモリとともに対処されなければならない。複数のキャッシュコヒーレンスプロトコルは、システムの中のプロセッサがローカルキャッシュの古いデータを使用していないことを保証する問題に対処する。一般に、古い複数のキャッシュエントリは、複数のキャッシュの中で、最近更新されたキャッシュデータの他をすべて無効にすること、または最近のデータで複数のキャッシュを更新することのいずれかによって削除される。無効型プロトコルを使用している1つのシステムにおいて、キャッシュから1つの無効にされたメモリロケーションにアクセスする1つの試みは、他のキャッシュまたはメインメモリから最近のデータの1つのコピーを読み込ませることになる。更新型プロトコルにおいて、1つの書き込み動作に続いて、そのデータの1つのキャッシュされたバージョンを有しているすべてのキャッシュは、最近のデータで更新される。したがって、最近のデータが、複数のキャッシュにおいて利用できる。
図2は、所有されている複数のキャッシュブロックのライトバックを早期に予測する、図1のマルチプロセッサシステムの中の1つのプロセッサのブロック図である。それぞれのコア104は、共有キャッシュ106に対する1つのサブセットである1つのプライベートキャッシュ112を含む。これらのキャッシュ112は、ライトスルーキャッシュであってよい。
1つのCPUが1つのメモリアドレスに対して1つの書き込みまたは1つの記録をしなければならないとき、CPUは、そのブロックのキャッシュヒエラルキーのより低いレベルからの所有権をリクエストする必要があり、所有権が与えられるまで、そのブロックに書き込まない。これは、正確なキャッシュコヒーレンシーを維持するために起こる必要がある。1つの所有権のリクエストがCPUxによって送られたとき、複数の無効信号が、潜在的な共有者に対して駆動される。潜在的な共有者とは、このブロックの複数のコピーを有する他の複数のCPUを意味する。コヒーレンスプログラムは、所有権をリクエストしたCPUxに、そのブロックのそれらの所有権をそれらに通知する確認メッセージを送る。確認メッセージが送られた後、ここで書き込みが起こってよい。
複数のライトスルーキャッシュ112が生成するストア容量を最小化するため、それぞれのCPU104は、同一のキャッシュブロックに最近のストアデータを集めるための1つのコアレスマージバッファ114を有してよい。マージバッファ114は、合計で16つのキャッシュブロックを含んでよい。一般的に、マージバッファ114は、ストアデータの合体を最大化するため、および元のキャッシュへのライトスルーのトラフィックを最小化するため、できるだけ長く、所有されている複数のブロックを維持しようと試みてよい。
ライトバックは、元のライトリクエストが送られた、マージバッファ114のエントリの中に、1つの「pergeMe」ビットを設定することによってもたらされ得る。1つのpurgeMeビットは、マージバッファ114の中のすべてのエントリに対して存在する。それぞれのサイクルに間に、マージバッファ114に関連するコントロールロジックは、そのpergeMeビットを設定することで1つのエントリを選択し、共有キャッシュ106にブロックをライトバックすること試みる。いずれのエントリもそれらのpergeMeビットが設定されない場合、いずれのエントリも選択されない。
purgeMeビットは、様々な理由によって設定されてよい。1つの理由は、マージバッファ114が有効な複数のエントリで満たされ、1つの「purge閾値」を横切ることである。マージバッファ114がこのpurge閾値を横切る場合、マージバッファ114に関連するコントロールロジックは、1つ以上のエントリに対してpurgeMeビットを設定してよい。複数のエントリのpurgeMeビットを設定することによって、それらは、ここで、新たに到着しているコミットされた複数のストアための空間を作るために、共有キャッシュ106にライトバックされ得る。
対応するデータが他のCPUまたはキャッシュコヒーレントエージェントによって利用されることが予測される場合、システム100に対して、purgeMeビットは、1つのエントリに対して設定してよい。
図3は、所有されている複数のキャッシュブロックのライトバックを早期に予測するために、図1のマルチプロセッサシステムによって実行される一例の方法300のフローチャートである。ライトバックのための複数のブロックの予測は、発しているCPUの所有権のリクエストに対応した、キャッシュコヒーレンスプロトコルの中の複数のメッセージに基づく。
1つの所有権のリクエストがCPUxから共有キャッシュに送られた場合(305)、共有キャッシュは、リクエストされたブロックが他のCPUによって所有されているか否かを第1に判定しなければならない(310)。リクエストされたブロックが他のCPUによって所有されていない場合、システムは、リクエストされたブロックが他のCPUまたは他の複数のCPUによって共有されているか否かを判定する(311)。ブロックがブロックの任意の他の共有者を有さない場合、1つのAckNonSharedメッセージが、ブロックの所有権を与え、他の複数のCPUがブロックの1つのコピーを有さないことを示すために送られる(315)。しかし、ブロックが所有されていないが供給されている場合、1つのAckSharedメッセージが送られ、所有権はCPUxに移される(312)。
ブロックがリクエストしているCPU、例えばCPUy等によって所有されていた場合、1つのエビクト(evict)メッセージがCPUyに送られる(320)。エビクトメッセージが受け取られる場合、CPUyは、最近のストアデータでブロックを更新し、purgeMeビットを設定し、そのマージバッファからブロックを引き出す(325)。ブロックがマージバッファから引き出されると、CPUyは、ブロックをメモリにライトバックし、その所有権を手放す(330)。
ここで、更新されたブロックは、リクエストしているCPUxに送られる(335)。ここで、CPUxは、現在のデータでブロックを更新し(340)、そして、即座に共有キャッシュにブロックを送ってよい(345)。データのブロックは、これまで他のCPU、CPUyによって所有されていたので、更新されたブロックは、すぐ共有キャッシュに送られる。
ここで、CPUxがブロックを再度書き込む必要があると仮定すると、他の所有権のリクエストが共有キャッシュに送られる(305)。このとき、他の複数のCPUがそれまでの間にブロックを読み出さなかった場合、つまり、ブロックが所有されておらず(310)、共有されていない(311)場合、1つのAckNonSharedメッセージがCPUxに送られる(315)。ここで、CPUxは、ブロックが容量の理由のために強制退去(evict)される(または他のCPUによってリクエストされる)まで、ブロックを保持してよい。
しかし、他のCPUがそれまでの間にブロックを読み出した場合、つまり、ブロックが所有されていない(310)が、共有されている(311)場合、AckWasSharedメッセージがCPUxに送られ(312)、早期にブロックが再度ライトバックされる。
ここで、CPUyがブロックをリクエストする場合、そのブロックは、ブロックをリクエストするために、前のCPUによって、共有キャッシュに既にライトバックされていてよく、CPUyがブロックをリクエストしない場合、ブロックが移動中であってよい。ブロックが共有キャッシュに既にライトバックされていた場合、これは、4ホップのトランザクションを2ホップのトランザクションに低減し、潜在的に同期の待ち時間を半分に削減する。
したがって、他の複数のCPUが、リクエストしているCPUが1つの所有権のリクエストを生成するときに、ブロックの複数のコピーを有していた(または有していたかもしれない)場合、それはそれをできるだけ早くライトバックする。他の複数のCPUがブロックの複数のコピーを有していたが、もはやそのブロックにアクセスしていない場合、そのブロックへの第1の書き込みは、そのブロックのライトバックの予測を生じさせてよいが、その後の複数の書き込みは、予測を生じさせなくてよい。
以前は、1つのプロセッサは、共有されていた1つのブロックと供給されていなかった1つのブロックとの確認応答を区別しなかった。上記の方法で、1つのプロセッサは、どのくらいの早さで共有バッキングキャッシュに1つのブロックを送り返すべきかを判定してよい。これは、いつ速い共有が必要であるかを、システムが予測することを可能にする。
有利なことに、この方法は、他のCPUによってリクエストされる可能性が高い、書き込まれた複数のブロックを、システムが予測することを可能にし、所有しているCPUが、ブロックの中のデータを更新した後できるだけ早く、これらのブロックをメモリにライトバックする。他のプロセッサがデータをリクエストしている場合、これは、データを得るための待ち時間を低減でき、同期のオーバヘッドを低減でき、さらに並列プログラムのスループットを増加できる。
ここで図4を参照すると、システム400は、所有されている複数のキャッシュブロックのライトバックの早期予測をサポートする複数のプロセッサを含む。システム400は、典型的に、複数のプロセッサ、メモリ、および複数の入力/出力デバイスが多数のポイントツーポイントインターフェースによって相互接続された1つのシステムを示す。システム400は、いくつかのプロセッサを含み、明確にするために、そのうちの2つがプロセッサ405、410で示される。それぞれのプロセッサ405、410は、それぞれ、メモリ425、430と接続するため、1つのローカルメモリコントーラハブ(MCH)415、420を含んでよい。プロセッサ405、410は、ポイントツーポイントインターフェース回路440、445を用いて、1つのポイントツーポイントインターフェース435を介してデータを交換してよい。プロセッサ405、410は、それぞれ、ポイントツーポイントインターフェース回路465、470、475、780を用いて、個々のポイントツーポイントインターフェース455、460を介して、1つのチップセット450とデータを交換してよい。チップセット450は、また、1つの高性能グラフィックスインターフェース490を介して、1つの高性能グラフィックス回路485とデータを交換してよい。
チップセット450は、1つのバスインターフェース495を介して、1つのバス416とデータを交換してよい。どちらのシステムにおいても、いくつかの実施形態において、複数の低性能グラフィックスコントローラ、複数のビデオコントローラ、および複数のネットワークコントローラを含む、様々な入力/出力・I/Oデバイス414がバス416上にあってよい。他のバスブリッジ418は、いくつかの実施形態において、バス416とバス420との間でデータを交換させるために使われてよい。バス420は、いくつかの実施形態において、1つのsmall computer system interface(SCSI)バス、1つのIntegrated drive electronics(IDE)バス、または1つのuniversal serial bus(USB)バスであってよい。追加の複数のI/Oデバイスは、バス420に接続されてよい。これらは、マウスを含むキーボードおよびカーソルコントロールデバイス422、オーディオI/O424、モデムおよびネットワークインターフェースを含む通信デバイス426、およびデータストレージデバイス428を含んでよい。いくつかの実施形態において、データストレージデバイス428は、固定磁気ディスク、フロッピーディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープ、またはフラッシュメモリを含む不揮発性メモリであってよい。
下記の記述において、限定ではなく説明の目的のため、本発明の様々な側面の十分な理解を提供するために、具体的な詳細、例えば、特定の構造、アーキテクチャ、インターフェース、技術等が説明される。しかし、本開示の利益を有する技術の当業者にとって、
本発明の様々な側面が、これらの具体的な詳細から外れる他の例において実施され得ることが明かである。場合によっては、周知のデバイス、回路、および方法の記述は、本発明の記述を不必要な詳細な記述で不明瞭にしないために省略される。

Claims (21)

  1. 第1プロセッサが、1つのキャッシュブロックを、前記第1プロセッサおよび第2プロセッサによって共有される共有キャッシュにリクエストする段階と、
    リクエストされた前記キャッシュブロックが前記第2プロセッサによって所有されていたか否かを、前記共有キャッシュが判定する段階と、
    リクエストされた前記キャッシュブロックが前記第2プロセッサによって共有されていたか否かを、システムが判定する段階と、
    前記リクエストされた前記キャッシュブロックが前記第1プロセッサに移された後に、前記第1プロセッサが、前記リクエストされた前記キャッシュブロックを更新済みキャッシュブロックに更新する段階と、
    前記リクエストされた前記キャッシュブロックが前記第1プロセッサに移される前に、前記リクエストされた前記キャッシュブロックが前記第2プロセッサによって所有も共有もされていなかったと判定したことに応じて、前記更新済みキャッシュブロックを他のストアデータと合体すべく、前記第1プロセッサが、前記更新済みキャッシュブロックを共有キャッシュへの書き込みをマージする、第1プロセッサに含まれる第1バッファ内で維持するように試みる段階と、
    前記リクエストされた前記キャッシュブロックが前記第1プロセッサに移される前に、前記リクエストされた前記キャッシュブロックが前記第2プロセッサによって所有されていたと判定したことに応じて、前記リクエストされた前記キャッシュブロックを更新した後に、前記第1プロセッサが、前記更新済みキャッシュブロックを前記共有キャッシュに即座に書き込む段階と、
    を備える、方法。
  2. 前記第1プロセッサに前記キャッシュブロックを移す段階は、前記第1プロセッサに第1信号を送る段階を備える、請求項1に記載の方法。
  3. 前記リクエストされた前記キャッシュブロックが前記第2プロセッサによって共有されていたか否かを、システムが判定する段階は、前記リクエストされた前記キャッシュブロックが前記第2プロセッサによって共有されていることを指示する共有信号を前記第1プロセッサが受け取る段階を備える、請求項1に記載の方法。
  4. 前記リクエストされた前記キャッシュブロックが前記第1プロセッサに移される前に、前記リクエストされた前記キャッシュブロックが前記第2プロセッサによって共有されていたことに応じて、前記第1プロセッサが前記リクエストされた前記キャッシュブロックを更新した後に、前記第1プロセッサが前記更新済みキャッシュブロックを前記共有キャッシュに即座に書き込む段階をさらに備える、請求項1に記載の方法。
  5. 前記リクエストされた前記キャッシュブロックが前記第2プロセッサによって所有されていたことに応じて、前記第2プロセッサに1つのエビクト信号が送られる、請求項1に記載の方法。
  6. 前記リクエストされた前記キャッシュブロックが前記第2プロセッサによって所有されていたことに応じて、前記リクエストされた前記キャッシュブロックを、前記第2プロセッサが当該第2プロセッサに含まれる第2バッファから引き出す段階をさらに備える、請求項5に記載の方法。
  7. 前記リクエストされた前記キャッシュブロックが前記第2プロセッサによって所有されていたことに応じて、前記第1プロセッサおよび前記第2プロセッサによって共有される前記共有キャッシュに、前記リクエストされたキャッシュブロックを書き込む段階をさらに備える、請求項6に記載の方法。
  8. 前記第1プロセッサが、前記更新済みキャッシュブロックをリクエストする段階と、
    前記更新済みキャッシュブロックが前記共有キャッシュに即座に書きこまれた後に、前記第2プロセッサが、前記更新済みキャッシュブロックをリクエストしたか否かを判定する段階と、
    前記更新済みキャッシュブロックを前記第1プロセッサに移す段階と、
    をさらに備える、請求項7に記載の方法。
  9. 前記更新済みキャッシュブロックが前記共有キャッシュに送られた後に、前記第2プロセッサが、前記更新済みキャッシュブロックをリクエストしなかった場合に、第1信号が前記第1プロセッサに送られる、請求項8に記載の方法。
  10. 共有キャッシュへの書き込みをマージする第1バッファを含む第1プロセッサコアと、
    前記共有キャッシュへの書き込みをマージする第2バッファを含む第2プロセッサコアと、
    前記第1プロセッサコアおよび前記第2プロセッサコアに結合される共有キャッシュと、
    を備え、
    前記第1プロセッサコアは、前記共有キャッシュに関連付けられたデータのキャッシュブロックの所有権を要求し、前記データの前記キャッシュブロックの所有権を獲得し、前記データの前記キャッシュブロックを、更新済みキャッシュブロックに更新し、
    前記第1プロセッサコアが前記データの前記キャッシュブロックの所有権をリクエストした場合に前記第2プロセッサコアが前記データの前記キャッシュブロックを所有も共有もしていなかったことに応じて、前記第1プロセッサコアは、さらに、前記第1バッファ内の他のストアデータと合体すべく、前記更新済みキャッシュブロックを前記第1バッファ内に維持することを試み、
    前記第1プロセッサコアが前記データの前記キャッシュブロックの所有権をリクエストした場合に前記第2プロセッサコアが前記データの前記キャッシュブロックを所有していると判定したことに応じて、前記第1プロセッサコアは、さらに、前記第1バッファからの前記更新済みキャッシュブロックを前記共有キャッシュに即座に書き戻す、
    装置。
  11. 前記第1プロセッサコアが、他のストアデータと合体すべく、前記更新済みキャッシュブロックを前記第1バッファ内に維持する試みの間に、続いて前記更新済みキャッシュブロックの所有権をリクエストした場合、
    前記第2プロセッサコアが更新済みキャッシュブロックを共有しているか否かを判定することと、前記第2プロセッサコアが前記更新済みキャッシュブロックを共有すると判定したことに応じて、前記第1バッファからの前記更新済みキャッシュブロックを前記共有キャッシュに即座に書き込む、
    請求項10に記載の装置。
  12. 前記第2バッファは、前記第2バッファ内のキャッシュブロックに対してパージビットを有し、前記第1プロセッサコアが前記データの前記キャッシュブロックの所有権を取得する前に前記第2プロセッサコアが前記データの前記キャッシュブロックを所有していたことに応じて前記第2プロセッサコアが前記パージビットをセットすることによって、前記データの前記キャッシュブロックが前記第2バッファから引き出される、請求項11に記載の装置。
  13. 前記第1バッファおよび前記第2バッファは、書き込みを共有キャッシュにマージできるプライベートキャッシュであり、前記共有キャッシュは、前記データのキャッシュブロックおよび前記更新済みキャッシュブロックの所有権を判定する、請求項11に記載の装置。
  14. 前記共有キャッシュが前記データの前記キャッシュブロックの所有権を判定することは、前記データの前記キャッシュブロックを、前記データの前記キャッシュブロックの所有権を指示するキャッシュコヒーレンシプロトコル状態に、前記共有キャッシュが維持する、請求項13に記載の装置。
  15. 複数のノードを備えるマルチプロセッサシステムであって、
    前記複数のノードのそれぞれは、
    少なくとも第1プロセッサおよび第2プロセッサ、
    を備え、
    前記第1プロセッサおよび前記第2プロセッサは、前記第1プロセッサおよび前記第2プロセッサに結合され、データのキャッシュブロックの所有権を判定する共有キャッシュを有し、
    前記第1プロセッサは、前記第1プロセッサ内に配置され前記共有キャッシュへの書き込みをマージできる、第1バッファを有し、
    前記第2プロセッサは、前記第2プロセッサ内に配置され前記共有キャッシュへの書き込みをマージできる、第2バッファを有し、
    前記第1プロセッサは、前記キャッシュブロックをリクエストし、前記キャッシュブロックを獲得し、前記キャッシュブロックを更新済みキャッシュブロックに更新し、
    前記第1プロセッサが前記キャッシュブロックを獲得する前に前記第2プロセッサが前記キャッシュブロックを所有も共有もしていなかったことに応じて、前記更新済みキャッシュブロックを他のストアデータと合体すべく、前記第1プロセッサが、前記更新済みキャッシュブロックを前記第1バッファ内で維持するように試み、
    前記第1プロセッサが前記キャッシュブロックを獲得する前に前記第2プロセッサが前記キャッシュブロックを所有または共有をしていたことに応じて、前記第1プロセッサは、前記更新済みキャッシュブロックを前記共有キャッシュに即座に書き込む、マルチプロセッサシステム。
  16. 前記第1プロセッサおよび前記第2プロセッサの中の前記第1バッファおよび前記第2バッファは、前記第1バッファおよび前記第2バッファの中のすべてのキャッシュブロックに対して1つのビットを含む、請求項15に記載のマルチプロセッサシステム。
  17. 前記ビットが設定された場合、前記第1バッファおよび前記第2バッファの中の前記キャッシュブロックは引き出される、請求項16に記載のマルチプロセッサシステム。
  18. 前記第2プロセッサが前記キャッシュブロックを所有していたことに応じて前記第1プロセッサが前記キャッシュブロックを獲得することは、前記キャッシュブロックを前記第1プロセッサに移すことを含む、請求項15に記載のマルチプロセッサシステム。
  19. 前記第1プロセッサおよび前記第2プロセッサが前記キャッシュブロックを共有していたことに応じて、前記第1プロセッサは前記キャッシュブロックを獲得し、前記キャッシュブロックを更新済みキャッシュブロックに更新し、前記更新済みキャッシュブロックを即座に書き込む、請求項15に記載のマルチプロセッサシステム。
  20. 前記第1プロセッサおよび前記第2プロセッサが前記キャッシュブロックを共有していたことに応じて、前記第1プロセッサは前記キャッシュブロックを獲得することは、前記共有キャッシュが、共有キャッシュコヒーレンシ状態に維持されていることを指示する共有信号を前記第1プロセッサに送ることを含む、請求項19に記載のマルチプロセッサシステム。
  21. 入/出力デバイスと通信するポイントツーポイントインターフェースである第1インターフェースをさらに備える、請求項15に記載のマルチプロセッサシステム。
JP2007548605A 2004-12-27 2005-12-27 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測 Expired - Fee Related JP4966205B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/023,882 2004-12-27
US11/023,882 US7624236B2 (en) 2004-12-27 2004-12-27 Predictive early write-back of owned cache blocks in a shared memory computer system
PCT/US2005/047589 WO2006072058A1 (en) 2004-12-27 2005-12-27 Predictive early write-back of owned cache blocks in a shared memory computer system

Publications (2)

Publication Number Publication Date
JP2008525901A JP2008525901A (ja) 2008-07-17
JP4966205B2 true JP4966205B2 (ja) 2012-07-04

Family

ID=36177973

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007548605A Expired - Fee Related JP4966205B2 (ja) 2004-12-27 2005-12-27 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測

Country Status (5)

Country Link
US (1) US7624236B2 (ja)
JP (1) JP4966205B2 (ja)
CN (1) CN101088076B (ja)
TW (1) TWI318737B (ja)
WO (1) WO2006072058A1 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8279886B2 (en) * 2004-12-30 2012-10-02 Intel Corporation Dataport and methods thereof
US20060174067A1 (en) * 2005-02-03 2006-08-03 Craig Soules Method of caching data
US8019947B2 (en) * 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization
US20070162475A1 (en) * 2005-12-30 2007-07-12 Intel Corporation Method and apparatus for hardware-based dynamic escape detection in managed run-time environments
US7610448B2 (en) * 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns
US9164910B2 (en) * 2008-02-21 2015-10-20 Arm Limited Managing the storage of data in coherent data stores
US8250336B2 (en) * 2008-02-25 2012-08-21 International Business Machines Corporation Method, system and computer program product for storing external device result data
US8489820B1 (en) 2008-03-18 2013-07-16 Netapp, Inc Speculative copying of data from main buffer cache to solid-state secondary cache of a storage server
US8412889B2 (en) * 2008-10-16 2013-04-02 Microsoft Corporation Low-level conditional synchronization support
US20100153612A1 (en) * 2008-12-15 2010-06-17 Lsi Corporation Transport agnostic scsi i/o referrals
US8195887B2 (en) * 2009-01-21 2012-06-05 Globalfoundries Inc. Processor power management and method
US9990287B2 (en) 2011-12-21 2018-06-05 Intel Corporation Apparatus and method for memory-hierarchy aware producer-consumer instruction
WO2013095464A1 (en) * 2011-12-21 2013-06-27 Intel Corporation Apparatus and method for memory-hierarchy aware producer-consumer instruction
US10025711B2 (en) * 2012-01-16 2018-07-17 Qualcomm Incorporated Hybrid write-through/write-back cache policy managers, and related systems and methods
US9274960B2 (en) * 2012-03-20 2016-03-01 Stefanos Kaxiras System and method for simplifying cache coherence using multiple write policies
EP2842031A4 (en) * 2012-04-25 2015-12-30 Intel Corp METHOD AND SYSTEM FOR SAVING THE RELEASE CONSISTENCY IN A COMMON MEMORY PROGRAMMING
CN102970350A (zh) * 2012-11-05 2013-03-13 曙光信息产业(北京)有限公司 在存储系统中维护副本一致性的方法
US9244841B2 (en) * 2012-12-31 2016-01-26 Advanced Micro Devices, Inc. Merging eviction and fill buffers for cache line transactions
CN103345451B (zh) * 2013-07-18 2015-05-13 四川九成信息技术有限公司 一种在多核处理器中缓冲数据的方法
US9846653B2 (en) 2014-02-21 2017-12-19 Hewlett Packard Enterprise Development Lp Performing write operations on main memory
US9933980B2 (en) * 2014-02-24 2018-04-03 Toshiba Memory Corporation NAND raid controller for connection between an SSD controller and multiple non-volatile storage units
JP6558009B2 (ja) * 2015-03-23 2019-08-14 富士ゼロックス株式会社 転送装置、転送システムおよびプログラム
KR101842764B1 (ko) * 2016-03-18 2018-03-28 연세대학교 산학협력단 하드웨어 가속기와 호스트 시스템 사이의 데이터 일관성 유지 장치 및 방법
US10452544B1 (en) * 2017-09-27 2019-10-22 EMC IP Holding Company LLC Using persistent memory technology as a host-side storage tier for clustered/distributed file systems, managed by host-side tier
US10452543B1 (en) * 2017-09-27 2019-10-22 EMC IP Holding Company LLC Using persistent memory technology as a host-side storage tier for clustered/distributed file systems, managed by storage appliance
US11210263B1 (en) * 2017-09-27 2021-12-28 EMC IP Holding Company LLC Using persistent memory technology as a host-side storage tier for clustered/distributed file systems, managed by cluster file system
JP7140972B2 (ja) * 2018-12-21 2022-09-22 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
US11010067B2 (en) * 2018-12-28 2021-05-18 Intel Corporation Defense against speculative side-channel analysis of a computer system
US20230143181A1 (en) * 2019-08-27 2023-05-11 Micron Technology, Inc. Write buffer control in managed memory system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4521874A (en) * 1982-09-28 1985-06-04 Trw Inc. Random access memory device
US4860192A (en) * 1985-02-22 1989-08-22 Intergraph Corporation Quadword boundary cache system
US5297269A (en) * 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
JPH04174042A (ja) * 1990-06-07 1992-06-22 Fujitsu Ltd マルチプロセッサシステム
US5625836A (en) * 1990-11-13 1997-04-29 International Business Machines Corporation SIMD/MIMD processing memory element (PME)
CA2051209C (en) * 1990-11-30 1996-05-07 Pradeep S. Sindhu Consistency protocols for shared memory multiprocessors
TW234174B (en) * 1993-05-14 1994-11-11 Ibm System and method for maintaining memory coherency
US5710907A (en) * 1995-12-22 1998-01-20 Sun Microsystems, Inc. Hybrid NUMA COMA caching system and methods for selecting between the caching modes
US6055605A (en) * 1997-10-24 2000-04-25 Compaq Computer Corporation Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches
US6151658A (en) * 1998-01-16 2000-11-21 Advanced Micro Devices, Inc. Write-buffer FIFO architecture with random access snooping capability
JP2001236221A (ja) * 2000-02-21 2001-08-31 Keisuke Shindo マルチスレッドを利用するパイプライン並列プロセッサ
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
US6748498B2 (en) * 2000-06-10 2004-06-08 Hewlett-Packard Development Company, L.P. Scalable multiprocessor system and cache coherence method implementing store-conditional memory transactions while an associated directory entry is encoded as a coarse bit vector
US6633960B1 (en) * 2000-08-31 2003-10-14 Hewlett-Packard Development Company, L.P. Scalable directory based cache coherence protocol
US6901450B1 (en) * 2000-09-22 2005-05-31 Hitachi, Ltd. Multiprocessor machine and cache control method for providing higher priority to shared cache that is accessed by multiprocessors
US6651145B1 (en) * 2000-09-29 2003-11-18 Intel Corporation Method and apparatus for scalable disambiguated coherence in shared storage hierarchies
US20030131201A1 (en) * 2000-12-29 2003-07-10 Manoj Khare Mechanism for efficiently supporting the full MESI (modified, exclusive, shared, invalid) protocol in a cache coherent multi-node shared memory system
US6865646B2 (en) * 2001-12-31 2005-03-08 Intel Corporation Segmented distributed memory module cache
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US7076609B2 (en) * 2002-09-20 2006-07-11 Intel Corporation Cache sharing for a chip multiprocessor or multiprocessing system

Also Published As

Publication number Publication date
JP2008525901A (ja) 2008-07-17
US20060143406A1 (en) 2006-06-29
US7624236B2 (en) 2009-11-24
WO2006072058A1 (en) 2006-07-06
CN101088076A (zh) 2007-12-12
TWI318737B (en) 2009-12-21
CN101088076B (zh) 2011-06-08
TW200636482A (en) 2006-10-16

Similar Documents

Publication Publication Date Title
JP4966205B2 (ja) 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測
TWI410796B (zh) 來自窺探過濾器之過期無效異動的減少
JP5431525B2 (ja) アクセラレータ用低コストのキャッシュ一貫性を維持するシステム
US7669018B2 (en) Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
JP4230998B2 (ja) リモートキャッシュプレゼンス情報を記録するプロセッサキャッシュを備えたコンピュータシステム
US9170946B2 (en) Directory cache supporting non-atomic input/output operations
US5893149A (en) Flushing of cache memory in a computer system
US7308539B2 (en) Concurrent read access and exclusive write access to data in shared memory architecture
US20110004729A1 (en) Block Caching for Cache-Coherent Distributed Shared Memory
US20070005899A1 (en) Processing multicore evictions in a CMP multiprocessor
JP2002163149A (ja) マルチプロセッサシステムのキャッシュコヒーレンスプロトコル
US20090006668A1 (en) Performing direct data transactions with a cache memory
US8732410B2 (en) Method and apparatus for accelerated shared data migration
CN115203071A (zh) 默认共享状态缓存一致性协议的应用
EP3850490B1 (en) Accelerating accesses to private regions in a region-based cache directory scheme
US7725660B2 (en) Directory for multi-node coherent bus
KR20090053837A (ko) 자기 조화형 데이터를 이용하여 멀티프로세서 시스템의 캐시 코히어런스 오버헤드를 저감시키는 메카니즘 및 방법
JPH0744459A (ja) キャッシュ制御方法およびキャッシュ制御装置
JP2023544538A (ja) キャッシュライン追い出しのためのマルチレベルキャッシュコヒーレンシプロトコル
JP2023552722A (ja) 階層キャッシュ回路内でデータを転送するための方法及び装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100629

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100929

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101006

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101028

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101105

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101125

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101202

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110920

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111219

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111227

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120119

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120217

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150406

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees