JP4663329B2 - 書き込みデータをキャッシュにインジェクトする方法及び装置 - Google Patents

書き込みデータをキャッシュにインジェクトする方法及び装置 Download PDF

Info

Publication number
JP4663329B2
JP4663329B2 JP2004568047A JP2004568047A JP4663329B2 JP 4663329 B2 JP4663329 B2 JP 4663329B2 JP 2004568047 A JP2004568047 A JP 2004568047A JP 2004568047 A JP2004568047 A JP 2004568047A JP 4663329 B2 JP4663329 B2 JP 4663329B2
Authority
JP
Japan
Prior art keywords
data
cache
write
cpu
data element
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 - Lifetime
Application number
JP2004568047A
Other languages
English (en)
Other versions
JP2006513510A (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2006513510A publication Critical patent/JP2006513510A/ja
Application granted granted Critical
Publication of JP4663329B2 publication Critical patent/JP4663329B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • 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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units

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)
  • Communication Control (AREA)

Description

一般的に本発明はデータ処理システムに関し、より具体的にはキャッシュを備えたデータ処理システムに関する。
コンピュータ・システムの性能を高める周知の方法として、ローカルの高速メモリをコンピュータ・システムに含める、キャッシュが知られている。キャッシュによってシステム性能が向上する。その理由は、中央処理装置(CPU)が特定のアドレスにおけるデータ・エレメントにアクセスすると、その次のアクセスは隣接するアドレスへのアクセスである確率が高いからである。キャッシュによって、リクエストされているデータの一部に隣接して配置されているデータが、遅いメイン・メモリ、つまり下位レベルのキャッシュからフェッチされ、格納される。非常に高性能のコンピュータ・システムでは、階層式で設けられうるキャッシュもある。CPUに最も近く、また、上位の、又は“L1”キャッシュとして周知のキャッシュは階層の最上位のキャッシュであり、一般的に最速である。その他の、通常はより遅いキャッシュは “L2”キャッシュなどから始まり、メイン・メモリと接続された最も低いレベルのキャッシュまで、階層式で上から下へ順番に設けられる。
データを格納する場合と破棄する場合は、キャッシュはある方法に従う。例えば、多くのプロセッサは“アロケート・オン・ライト”(allocate-on-write)法に従う。この方法は、CPUによって書き込みされる、メモリ・ロケーションに対応するキャッシュラインが、キャッシュに格納されるように指示を行うものである。一般にキャッシュは、LRU(least-recently-used:使用頻度が最も低い)として知られる方法に従い、すべてのロケーションが一杯になると、破棄すべきロケーションを判断し、新たなデータ・エレメント用にスペースを設ける。
一般にキャッシュには複数のステータス・ビットが含まれ、キャッシュラインのステータスが示され、システム全体を通じて、データの整合性、つまりコヒーレンシが維持される。1つの一般のコヒーレンシ・プロトコルは、“MOESI”プロトコルとして周知のプロトコルである。このプロトコルによれば、各キャッシュラインにはステータス・ビットが含まれ、ラインがどのMOESIステートにあるかが示される。ビットには、キャッシュラインが修正されたことを示すビット(M:Modified)、キャッシュラインは排他的である(E:Exclusive)、又は共用されている(S:Shared)ことを示すビット、又は、キャッシュラインは無効である(I:Invalid)ことを示すビットが含まれる。所有(O:Owned)ステートでは、ラインが1つのキャッシュの中で修正されていることと、他のキャッシュに共用コピーがあり得ることと、メモリにあるデータは陳腐化(stale)されていることを示す。
一般の構成では、すべてのキャッシュは同じ集積回路において、CPUと結合されており、また、メイン・メモリは外部に設けられている。メイン・メモリはシステムにおいて、最も遅く安価なメモリであり、低価格で、比較的遅いダイナミック・ランダム・アクセス・メモリ(DRAM)チップにより構成されることができる。この特性により、外部DRAMのメイン・メモリへのアクセス時にボトルネックが生じる。そのため、可能な限りは、これらのボトルネックを回避することが望ましい。更に近年、マイクロプロセッサの速度はDRAMのアクセス速度よりも速くなっており、このボトルネック問題である、いわゆる“メモリ・ウォール”を悪化させている。そのため、システムの性能を高めるために、メイン・メモリのアクセスの要件を低減することが可能な方法とデータ・プロセッサが所望されている。そのような方法及びデータ・プロセッサが本発明によって提供される。その特徴や利点は、添付の図面とあわせて、以下の詳細な説明からより明白に理解されることであろう。
発明の詳細な説明
本発明により、1つの態様では、キャッシュと下位レベルのメモリシステムとを有するメモリ階層を持つデータ処理システムにおいて使用するための方法が提供される。固有のライト・ウイズ・インジェクト属性を持つデータ・エレメントがデータ・プロデューサから受信される。データ・エレメントは下位レベルのメモリへアクセスせずにキャッシュへと送られる。次に、そのデータ・エレメントを含む少なくとも1つのキャッシュラインがそのキャッシュ内で更新される。
別の態様では、本発明により、各々がCPUと関連のキャッシュを含む複数のノードを持つデータ処理システムにおいて使用するための方法が提供される。ライト・ウイズ・インジェクトパケットと関連付けられたデータ・エレメントを持つライト・ウイズ・インジェクトパケットがデータ・プロデューサから受信される。ディレクトリのチェックが行われ、データ・エレメントが所定のステートでディレクトリに既に存在するかどうかが確認される。データ・エレメントが所定のステートでディレクトリに存在しない場合、ディレクトリ・エントリがデータ・エレメントに対して生成され、データ・エレメントは下位レベルのメモリシステムに書き込まれる。データ・エレメントが所定のステートで既にディレクトリに存在する場合、データ・エレメントはデータ・エレメントのオーナーであるキャッシュへ、下位レベルのメモリシステムへアクセスせずに送られる。
更に別の態様では、本発明により、キャッシュと、ホスト・ブリッジと、メモリ・コントローラとを含むCPUを持つデータ・プロセッサが提供される。CPUはプローブ・プリフェッチの受信に応答して、プリフェッチ・リードを開始するように構成されている。ホスト・ブリッジはCPUと結合され、データ・プロデューサからのデータ・エレメントに対するライト・ウイズ・インジェクトパケットを受信するように構成される。メモリ・コントローラはCPU、及び、ホスト・ブリッジと結合され、また、低レベルのメモリシステムと結合されるように構成されている。更にメモリ・コントローラにはCPUと結合されている出力部が含まれる。メモリ・コントローラにはバッファが含まれ、ホスト・ブリッジからのデータ・エレメントが格納される。メモリ・コントローラはデータ・エレメントの受信に応答してCPUへプローブ・プリフェッチを送り、CPUからのプリフェッチ・リードに応答して、バッファからデータ・エレメントを送る。
更に別の態様では、本発明により、キャッシュと、ホスト・ブリッジと、ディレクトリ/メモリ・コントローラとを含むCPUを有するデータ・プロセッサが提供される。ホスト・ブリッジはCPUと結合され、また、データ・プロデューサからのデータ・エレメントに対するライト・ウイズ・インジェクトパケットを受信するように構成されている。ディレクトリ/メモリ・コントローラはCPU及びホスト・ブリッジと結合され、また、低レベルのメモリシステムと結合されるように構成され、更に、CPUと結合される出力部を備えている。ディレクトリ/メモリ・コントローラはライト・ウイズ・インジェクトパケットに応答し、そのディレクトリのチェックを行い、データ・エレメントに関連付けられているラインのキャッシュ・ステートが所定のステートにあるかどうかが確認される。所定のステートにある場合、ディレクトリ/メモリ・コントローラはデータ・エレメントをCPUへ送り、低レベルのメモリシステムへアクセスせずに、キャッシュへ格納する。
更に別の態様では、本発明により、キャッシュと、ホスト・ブリッジと、送信用手段とを備えたCPUを有するデータ・プロセッサが提供される。ホスト・ブリッジはCPUと結合され、また、データ・プロデューサからのデータ・エレメントに対するライト・ウイズ・インジェクトパケットを受信するように構成される。送信用手段はCPUと、ホスト・ブリッジと、下位レベルのメモリシステムとに結合されており、また、データ・エレメントをCPUへ送信し、下位レベルのメモリシステムへアクセスせずに、キャッシュへ格納する。
本発明は添付の図面と併せて以下に説明されており、同じ参照符号は同じ要素を表わす。
図1に、従来技術において周知の、プローブ・ベースの(probe-based)データ処理システムにおけるデータ信号と制御信号の流れ、つまり、フローに関連付けられたタイミング図10を例示する。図1に示すように、縦軸には上から下へと流れる時間が示されている。図1には3つのデバイス(ノード)が描かれており、水平方向に沿って垂直線が配置されている。“NODE C”と表示されている第1ノードはデータ・プロデューサである。例えば、NODE Cは、データ通信チャネルの受信機などの入力/出力デバイスに対応することもできる。“NODE B”と表示されている第2ノードは、下位レベルのメモリシステムであり、NODE Bには、メイン・メモリが含まれ、また場合によっては1つ以上の下位レベルのキャッシュも含まれる。“NODE A”と表示されている第3ノードは、アプリケーションプログラムを実行するCPUなどのキャッシュを持つ、データ・コンシューマである。データ通信の点から言えば、NODE Cはフレーム単位でデータを受信し、NODE Bにおけるメモリにそのデータを格納し、これによりNODE Aにおいて、アプリケーションプログラムによる指示に基づき、プロセッサがデータを利用可能になる。
データ信号と制御信号のフローを以下に説明する。まずNODE CにおけるI/Oデバイスは、その通信リンクを介してデータ・フレームを受け取る。NODE Cにおける関連のDMAコントローラは、矢印12によって示されているように、DMAライト・オペレーションをメモリ・ロケーションへ行うことによって、データ・フレームに対しデータの書き込みを行う。時間14の間に、NODE Bにおけるメモリ・コントローラは、メモリへデータの書き込みを行うとともに、同時に矢印16によって示されているように、NODE Aへインバリデート・プローブ(invalidating probe)を発行する。このインバリデート・プローブによって、NODE Aにおけるキャッシュに、データが修正されることが通知される。また、関連付けられている1つ又は複数のキャッシュラインのコピーをNODE Aが有している場合は、その1つ又は複数のキャッシュラインは無効状態にされる。18によって示されているように、NODE Aはプローブ・レスポンスで応答する。矢印20によって示されているように、その後、NODE A上に実行しているアプリケーション・ソフトウエアによって、データに対しリード・リクエストが開始される。NODE Bにおけるメモリ・コントローラによって、時間22の間にデータの読み出しが行われ、その後、矢印24によって示されているように、メモリ・コントローラによって、NODE Aへデータが送信される。最後に、時間26の間に、NODE Aによるキャッシュラインフィルが完了される。
この従来のオペレーションでは、メイン・メモリへの1書き込みと1読み出しが必要とされる。従って、時間14と22の間にメイン・メモリ・バスが使用され、それぞれ書き込みと読み出しが行われる。高帯域の通信プロトコルを実装しているシステムに対しては、このオペレーションが多くの場合において繰り返され、利用可能な帯域の大部分が消費される。近年では、メイン・メモリの速度は速くなっているが、プロセッサの速度ほどは高速ではなく、また、このオペレーションに必要とされるメイン・メモリ・バスの帯域を低減することが望ましい。
メイン・メモリ・バスの帯域要件を低減するために、発明者たちは以下の点を理解した。それは、通信オペレーションというのは、メイン・メモリへデータを格納する必要なしに、データがプロセッサのキャッシュ内だけで動作することができる特殊な場合である、ということである。より詳細には、データ通信受信バッファは、一般にはメモリにおける循環バッファであり、データ・プロデューサは循環バッファへデータの書き込みを行い、また、入力/出力ドライバは循環バッファからプロトコル・ヘッダ情報(コンシューマ1)の読み出しを行い、また、アプリケーションプログラムは循環バッファからペイロード・データ(コンシューマ2)の読み出しを行う。メイン・メモリへデータを格納しないようにするために、そのような状態を通知し、メイン・メモリへのアクセスが生じないようにするための方法と対応のデータ処理システムが発明者たちによって考案されている。このデータ処理システムは、データ・プロセッサに単純な修正を加えることで実装されることができる。このデータ処理システムを少し変更することによって、受信したデータ・パケットの特殊なライト・ウイズ・インジェクト属性を認識し、メイン・メモリへのアクセスを抑制し、CPUのキャッシュへ直接データを送信し、キャッシュラインをある種の状態にすることによって、その属性に応答することができる。このような方法は図2を参照することで理解することができる。図2には本発明によるブローブベースのデータ処理システムのデータ信号と制御信号のフローに関連したタイミング図50が例示されている。
オペレーションはNODE CにおけるI/Oデバイスと、NODE Bにおけるメモリ・コントローラとの間で、“WRITE WITH INJECT”(ライト・ウィズ・インジェクト)パケットとして周知の、特定のDMAライト・リクエストから開始される。この特定のライト・リクエストに応答して、NODE Bにおけるメモリ・コントローラにより、時間54の間にディレクトリの読み出しが行われ、矢印56によって示されている、スヌープ・プレフェッチとしても周知の、ブロードキャスト(broadcast)・プローブ・プレフェッチが、NODE Aとシステムの他のプロセッサすべてに送信され、NODE Aにおけるキャッシュの中に書き込みされる、つまり注入されるデータの存在が通知される。NODE Aはすでにそのローカル・キャッシュへメモリアドレスを割り当てているが、このNODE Aは58によって示されている、プローブ・レスポンスで応答する。データはメモリ・コントローラにおけるストア・バッファに保持され、また、低レベルのメモリ・システムへの書き込みは遅延される。その後、NODE Aにおけるデータ・プロセッサによって、矢印60によって示されているように、NODE Bへプレフェッチ・リードが送信される。NODE Bのメモリ・コントローラは時間62の間にストア・バッファからデータ・エレメントの読み出しを行い、矢印64によって示されているように、NODE Aへデータを送信することにより、応答する。NODE Aにおけるデータ・プロセッサが正常にプレフェッチ・リードを送信することができる場合、NODE Bにおけるメモリ・コントローラは、メイン・メモリへアクセスせずに、データを送ることが可能である。しかし、NODE Bにおけるメモリ・コントローラが、別の目的のためにそのストア・バッファを再度用いる必要がある場合(プロセッサがプレフェッチ・リードを送信する前にその他すべてのバッファがフル状態である場合に、通常のライト・リクエストを満足させるため、などの場合)、メモリではなく、メモリ・コントローラによってデータの書き込みが行われる。最後に、NODE Aによって時間66の間にキャッシュラインフィルが完了する。データが引き続きNODE A上で用いられる場合、キャッシュラインは、LRUなどのキャッシュのデアロケーション(deallocation)法を用いて、通常のプロセス・フロー中に、デアロケーションに用いることができる。データ・エレメントはプロセッサによって1度だけ用いられるので、キャッシュではラインは修正されず、そのために、メイン・メモリへラインをライトバックする必要はない。従って、この方法によって通常はメイン・メモリへの任意の書き込みがなくされ、また、この方法によって、NODE Bにおけるメイン・メモリ・コントローラへの少ない帯域量で、ディレクトリ・リード・オペレーションとリード・バッファ・オペレーションを行うことができる。
図3には本発明による複数のプロセッサを備えた、ブローブベース(probe-based)のデータ処理システム80のブロック図が例示されている。データ処理システム80には、“A”、“B”、“C”、“D”と表示されている単一のプロセッサ81、82、83、84がそれぞれ含まれ、これらのプロセッサはいわゆる、コヒーレント型のHyperTransport通信プロトコルを用いて、環状(ring fashion)に接続されている。図3に示すように、プロセッサ81から84には、プロセッサ81から84と関連付けられている対応のデータ・プロデューサが含まれる。このデータ・プロデューサはそれぞれ、“I/O A”、“I/O B”、“I/O C”、“I/O D”と表示されているI/Oコントローラ85から88の形状のデータ・プロデューサであり、各データ・プロデューサは、いわゆる非コヒーレント型のHyperTransportプロトコルを用いて、直接、プロセッサ81から84のうちの対応する1つと結合されている。プロセッサ81から84の各々は更に、ローカル・メモリ91から94とも関連付けられている。HyperTransportプロトコルにより、リング周辺の様々なポイントで処理を分配することができる。例えば、I/Oコントローラ87は、I/Oコントローラ87と関連付けられたローカル・プロセッサ83へのライト・ウィズ・インジェクト・オペレーションを開始することができる。また、プロセッサ83のホーム・ノードにおけるメモリ・コントローラは、そのローカル・キャッシュのデータに対してだけではなく、コヒーレントHyperTransportを用いて、システムの全キャッシュに対してプローブを送信する。別の例では、I/Oドライバ又はアプリケーションは別のプロセッサ81上に動作していてもよく、また、そのデータに対するホーム・ノードはプロセッサ82などの別のプロセッサであってもよい。図3に示すように、I/Oコントローラ87は、プロセッサ83へライト・ウィズ・インジェクト・パケットを実際に送信するコントローラでありうる。
図4は、本発明による単一のプロセッサを有する、プローブベースのデータ処理システム100のブロック図を例示している。データ処理システム100には通常、シングルチップのマイクロプロセッサ120の形状のデータ・プロセッサと、入力/出力(I/O)デバイス160と、DRAM(ダイナミック・ランダム・アクセス・メモリ)170とが含まれる。マイクロプロセッサ120には通常、中央処理装置(CPU)122と、メモリ・コントローラ126と、“XBAR”と表示されているクロスバ・スイッチ128と、それぞれが“HT”(HyperTransport)と表示されている、3つのホスト・ブリッジ130、140、150とが含まれ、詳細を以下に説明する。CPU122はいわゆるx86命令セットの命令を実行するように構成されているプロセッサである。x86命令セットは8086マイクロプロセッサの命令セットを基礎としたものであり、この命令セットは、米国カリフォルニア州サンタクララのインテルコーポレーションが最初に製造したものである。しかしCPU122には、x86命令セットのプログラムを高性能に実行するための多くの優れた機能が搭載されており、その優れた機能としてはパイプライン化の機能やスーパースカラ設計機能などが挙げられる。CPU122には少なくとも1つのキャッシュ124が含まれ、頻繁に使用されるデータが格納される。好ましい形状では、CPUには実際には2つのL1キャッシュ(1つは命令用、もう1つはデータ用)と、命令ストリームとデータ・ストリームによって共用されるL2キャッシュとが含まれる。この態様では、共用L2キャッシュはライト・ウィズ・インジェクト属性が与えられているデータを格納する。しかし、本発明は少なくとも1つのキャッシュを持つ任意のCPUに応用可能である。
メモリ・コントローラ126はマイクロプロセッサ120とDRAM170との間でデータ伝送を行うための機構である。メモリ・コントローラ126はCPU122からのメモリアクセスの開始及び終了タスクのオフロードを行う。メモリ・コントローラ126には内部キューが含まれ、DRAM170への外部バスを効率的に利用することができる。他の実施形態では、DRAM170は1つ以上の付加的キャッシュとメイン・メモリを含む下位レベルのメモリシステムや、スタティックRAM、不揮発性メモリなどに置き換えることができる。
XBAR128はスイッチング/マルチプレキシング回路(switching/multiplexing circuit)であり、マイクロプロセッサ120内のバスをまとめて連結するように設計されている。
ホスト・ブリッジ130、140、150はそれぞれの出力チャネル132、142、152を介して、また、それぞれの入力チャネル134、144、154を介して、マイクロプロセッサ120の外側にあるデバイスと結合されている。ホスト・ブリッジ130、140、150の各々は、コピーライト:2001 HyperTransport Technology Consortiumの、HyperTransport(商標) I/O Link Specification、Revision 1.03に準拠しており、1600MHzのデータ転送率を用いる場合に、1秒当たり3.2GBのスループットを実現することができる。HyperTransport技術はパケットベースのリンクであり、それぞれが独立した2本の単方向性のワイヤセット上に実装される。そのため、例えば、ホスト・ブリッジ130は出力接続部132と入力接続部134とを介して、I/Oデバイス160との通信を行う。HyperTransportリンクは、名目上はポイント・ツー・ポイントであり、2つのデバイスを接続する。HyperTransportのチェーンはI/Oデバイスとブリッジとをホスト・システムに結合するI/Oチャネルとしても利用することができる。
HyperTransportリンクはCPU、メモリとI/Oデバイスとの間に、高性能でスケーラブルな相互接続をするように設計されている。HyperTransportリンクは差動終端部が内蔵された(オンダイの)低振幅の差動信号を用いて、非常に高速なデータ転送率を実現する。HyperTransportリンクはスケーラブルな周波数とデータ幅を用いて、スケーラブルな帯域幅を実現する。
I/Oデバイス160はデータ・プロデューサとして機能する入力/出力デバイスである。例示の実施形態では、I/Oデバイス160はLAN(ローカルエリアネットワーク)通信プロトコルを実装しているコントローラである。この通信プロトコルは一般に“イーサネット”(Ethernet)と呼ばれる、電気電子学会(IEEE:Institute of Electrical and Electronics Engineers)によるIEEE802.3委員会の下で規格化されている。しかし、本発明は他のデータ・プロデューサにも同様に応用できる。
実際の動作では、I/Oデバイス160はイーサネット・プロトコルを実行する間に、定期的にフレームを受信する。フレームを受信すると、I/Oデバイス160内のDMAコントローラは、特定のライト・ウィズ・インジェクト・パケットを送信することによって、キャッシュ124へデータの書き込みを行う。この場合、データ・フレームは2つの部分から構成され、1つの部分にはプロトコル・ヘッダ情報が含まれ、もう1つの部分にはペイロード・データが含まれる。別の実施形態では、1つのマイクロプロセッサは、ヘッダ情報を処理し、一方でもう1つのプロセッサはペイロード・データを消費する。しかし、図4に示している1つのプロセッサシステムでは、I/Oドライバとアプリケーションプログラムの双方がCPU120上に起動する。
DMA・ライトは、入力部134を介して、HyperTransportプロトコルを用いて行われる。まずホスト・ブリッジ130がデータを受信し、そのデータを、XBAR128を介してメモリ・コントローラ126へ送信する。次いでメモリ・コントローラ128はパケットのライト・ウィズ・インジェクト属性を認識し、そのデータをローカル・バッファに格納する。メモリ・コントローラ126はCPU122へプローブを送信し、キャッシュ124に書き込まれるデータが存在することをCPU122へ通知する。その後、CPUから送信されるプリフェッチ・リード信号に応答して、メモリ・コントローラ126は、DRAM170への書き込みと、その後のDRAM170からの読み出しを行わずに、CPU122へデータを送り、キャッシュ124にそのデータを格納する。
このオペレーションは図5を参照すると更に理解することができる。図5には図4のデータ処理システム100のブロック図180が例示されており、ライト・ウィズ・インジェクト・オペレーションを行う間のデータ・フローが破線で示されている。上述のように、データ・フローはI/Oデバイス160から開始し、ホスト・ブリッジへと流れ、XBAR128を介してメモリ・コントローラ126へ、そして最後にメモリ・コントローラ126からXBAR128を介してCPU122へと流れる。
図6では、メモリ・コントローラ126内のライト・ウィズ・インジェクト・オペレーション中のデータ・フローがより具体的に説明されている。図6にはメモリ・コントローラ126を含む図4のデータ処理システム100の1部のブロック図が例示されている。メモリ・コントローラ126には一般に、一連のリード・リクエスト・バッファ222と、一連のライト・リクエスト・バッファ224と、マルチプレクサ226と、DRAMコントローラ228と、ドライバ230と、ライト・データ・バッファ242と、リクエスト・オーダリング・バッファ262と、制御ブロック264と、ドライバ244、246と、リード・データ・バッファ248と、マルチプレクサ250とが含まれる。メモリ・コントローラ126がXBAR128からメモリ・アクセス・リクエストを受け取ると、メモリ・コントローラ126は必要に応じてそのリクエストをリード・リクエスト・バッファ222又はライト・リクエスト・バッファ224に、及び、リクエスト・オーダリング・バッファ262に配置する。これらのバッファによって、アクセスに関するアドレス及びシーケンス情報が格納される。次いで制御ブロック264によって順序が制御され、その順序でバッファ222と224からリクエストの読み出しが行われ、DRAMコントローラ228へ送られる。この機構によって、メモリ・コントローラ126に、より古いデータの読み出しをパスする手法が実装され、これにより性能が向上する。アクセス・リクエストがライト・アクセスの場合、ライト・バッファ242のうちの、対応するバッファによって、メモリへ書き込みされるデータが格納される。制御ブロック264はリクエスト・オーダリング・バッファ262を用いて、アクセスを適切に調整する。ドライバ230はDRAM170へアドレスを出力する。ライト・データはバッファ242から読み出され、対応のアドレスを用いて、ドライバ244によってDRAMデータ・バスの中へ運ばれる。リード・オペレーション中に、リード入力データは入力ドライバ246を介してDRAM170から受信され、リード・データ・バッファ248に格納される。制御ブロック264により、このようにして格納されたリード・データは、マルチプレクサ250の第2入力部を選択することによって、XBAR128を介してCPU122へ送られる。
ライト・ウィズ・インジェクト(WRITE WITH INJECT)パケットの受信に応答して、メモリ・コントローラ126はライト・アドレスとライト・データをバッファ224と242にそれぞれ格納する。このライト・バッファは同じアドレスへの書き込みをまとめ、すべての読み出しをスヌープする。重要なことには、リードがライト・バッファでヒットすると、そのデータはマルチプレクサ250を介してXBAR128へ戻され、そのライト・バッファのエントリはデアロケートされることである。ライト・バッファが一杯になり、プリフェッチ・リードがメモリ・コントローラ126に到達する前にライト・オペレーションが行われると、メモリ・コントローラ126はDRAM170からのデータの読み出しだけを進める。しかし実際には、ライト・バッファが十分に大きく作られている場合、データがDRAM170へ格納されることはあまりない。
図7に、キャッシュ124を含む図4の、CPU122の部位300のブロック図を例示する。部位300にはプリフェッチャ302と、ロード/ストアユニット304と、マルチプレクサ306と、プローブ・バッファ308と、リクエスト未解決用のバッファ、つまり、リクエスト・アウトスタンディング・バッファ(request outstanding buffer)310と、犠牲の、つまり、ビクティム・バッファ312と、プローブ・レスポンス・データ・バッファ314と、マルチプレクサ316と、リード・レスポンス・データ・バッファ318と、ストア・データ・バッファ320と、マルチプレクサ322とが含まれる。プローブはXBAR128から受信され、バッファ308に格納される。プローブの処理が行われると、それらのプローブはマルチプレクサ306を介してキャッシュからのリード・リクエストでありうる。このデータがキャッシュに存在する場合はプローブ・ヒットとなる。キャッシュ124への、プローブ・イニシエイト(probe-initiated)のアクセスに加え、マルチプレクサ306はロード/ストアユニット304から生じたキャッシュ・リード・リクエストも、キャッシュ124のリード入力部へ送信する。ライトの場合、ロード/ストアユニット304はキャッシュ124のライト・ポートへアドレスを送り、格納データをストア・バッファ320の中に配置し、格納データはマルチプレクサ322を介してキャッシュ124の中に入力される。キャッシュ124はまた、下位レベルのメモリシステムへ読み出しを行った結果として、リード・レスポンス・データを受信し、このようなデータをリード・レスポンス・データ・バッファ318に格納し、データはマルチプレクサ322の第1入力部を介して、キャッシュ124のライト・データ・ポートに格納される。
ライト・ウィズ・インジェクト(WRITE WITH INJECT)パケットに応答して発行されるプローブ・プリフェッチは、プローブ・バッファ308を介し、プリフェッチャ302へと向かう、破線により示されている経路に従う。プリフェッチ・プローブに応答して、第1CPU122は、プローブ・レスポンス・データ・バッファ314を介してプローブ・レスポンスを発行し、次にメモリ・コントローラ126へプリフェッチ・ロードを発行する。プリフェッチ・リード・データが戻されると、プリフェッチ・リード・データはバッファ318に格納され、その後、マルチプレクサ322の第1入力部を介してキャッシュ124へ書き込みされ、修正した(M)状態で、適切なキャッシュラインにインストールされ、I/Oドライバソフトウエアによってその後すぐに利用される。ラインはM状態でインストールされ、LRUなどの、キャッシュの通常の置換え法を用いてラインがデアロケートされる際に、メモリに確実に書き込みが行われるようにする。
表1に、マイクロプロセッサ120で利用可能ないくつかのプローブのタイプと、それらに関連付けられたリスポンスを例示する。
Figure 0004663329
メモリ・コントローラ126はライト・ウィズ・インジェクト(WRITE WITH INJECT)パケットに応答して、“プリフェッチ”属性セットを持つプローブを発行する。表1に示すように、キャッシュ124のアクションは、ビクティム・ステートに応じて変化する。
図8にHyperTransportパケット200の図を例示する。I/Oデバイス160はこのHyperTransportパケット200によって、ライト・ウィズ・インジェクト・パケットを形成することができる。利用されるパケット構造は、アドレスを持つリクエストパケットとして周知である。パケットは4バイト長であり、付加的な4バイトのアドレス拡張を有す。以下に更に説明するように、本発明によれば、I/Oデバイス160は、コマンドフィールドに新たなライト・ウィズ・インジェクト・エンコーディングを追加することによって、ライト・ウィズ・インジェクト属性を知らせる。
このライト・ウィズ・インジェクト・パケットに関連付けられている様々なフィールドを以下に説明する。SeqID[3:0](ビット−タイム0のビット7と6及びビット−タイム1のビット6と5を連結して形成される)は、順序付けされたシーケンスの一部としてデバイスにより発行されており、仮想チャネル内でしっかりと順序付けされる必要のある、複数のリクエストグループをタグ付けするように用いられる。マッチング・ノンゼロ・SeqIDフィールド(matching nonzero SeqID field)を持つ、同一のI/Oストリームと仮想チャネル内のすべてのリクエストは、その順序を維持する必要がある。0×0のSeqID値が予約され、トランザクションはシーケンスの一部ではないことが示される。この値を用いたトランザクションは、シーケンス・オーダリングの、つまり順序付けの制限は設けられていないが、HyperTransport規格のチャプター6で説明しているように、その他の理由によって順序付けられることもできる。
Cmd[5:0]フィールドはHyperTransportプロトコルの様々なコマンドを知らせるために用いられる。2001HyperTransport規格によれば、Cmd[5:0]フィールドの様々なエンコードが規定され、その他のエンコードが予約される(その他のエンコードもある)。表2に、その規定されたエンコードと予約されたエンコードとを示す。
Figure 0004663329
PassPWはこのパケットが同一のI/Oストリームの受信(posted)リクエストチャネルのパケットを送ることができることを示している。別の態様では、このパケットは同一のI/Oストリームの受信チャネルのパケットの後ろの順番に留まっておく必要がある。HyperTransport技術の標準のPCI(personal computer interface)のようなオーダリング・モデルを維持するために、このビットはクリア(clear)される必要がある。PCIのようなオーダリングを必要としないシステムは、高性能のためにPassPWを設定することができる。
UnitID[4:0]フィールドは、トランザクションのパーティシパントを識別するように機能する。すべてのパケットは、構造(fabric)の端部におけるホスト・ブリッジへ、又はホスト・ブリッジから伝送されるので、ソース・ノード又は宛先ノードのいずれかが示される。値0はホスト・ブリッジのUnitID用に予約される。UnitIDの利用の更なる詳細については、2001HyperTransport規格のセクション4.2を参照されたい。複数の論理I/Oストリームを持つノードは、複数のUnitID値を持つことができる。
HyperTransportプロトコルは、そのコマンドに固有となるように、ビットタイム2と3の間に送られた2つのバイトを予約する。
Addr[39:2]はリクエストによりアクセスされるダブルワードのアドレスを表わす。すべてのアドレス・ビットが全リクエストタイプに含まれるわけではない。より細かな粒度(granularity)が要求される場合は、バイトマスクが用いられる。
I/Oデバイス160は好適には“Reserved−I/O”とマークされているCmd[5:0]フィールド定義のうちの、任意の1つを用いることによって、ライト・ウィズ・インジェクト・リクエストを送るのが望ましい。また、しかし、I/Oデバイスに対して予約されたコマンドエンコーディングは非常に少ないので、新たなライト・ウィズ・インジェクト・パケットが好適には1つのReserved−I/Oコマンドエンコーディングを用いて、その他の新たなパケットフォーマットと組み合わせられるのが望ましい。この目的は、4ビットのSeqIDを用いることにより実現され、追加条件がエンコードされ、その他の新たなパケットタイプ間が区別される。
図9に、本発明によるディレクトリベースのデータ処理システムにおける、データ信号と制御信号のフローに関連付けられたタイミング図500を例示する。この実施形態では、NODE Bにおいて、低レベルのメモリシステムは、ディレクトリベースのキャッシュコヒーレンシープロトコルを維持する。前述のように、データ・プロデューサ、低レベルのメモリシステム、及びキャッシュを備えたプロセッサはすべて、別々のノードを占有することができる。
矢印502によって例示されているように、ライト・ウィズ・インジェクト・パケットを与えているNODE Cにおけるデータ・プロデューサに応答して、NODE Bにおけるディレクトリ/メモリ・コントローラはそのディレクトリをチェックし、時間504の間に、その関連付けられた1つの、又は複数のキャッシュ(以下にさらに説明する)にアドレス指定されたラインの存在を確認する。通信レシーバ用に用いられる回路バッファと同様に、このような1つの、又は複数のキャッシュにエントリが既に割り当てられており、エントリが特定の状態(修正又は排他状態)にある場合、メモリ・コントローラは矢印506によって示されるプローブ・フェッチをNODE Aに送り、NODE Aにおけるキャッシュに注入されるデータが存在することを知らせる。しかし、図2に示すシステムとは違い、図9のディレクトリベースのシステムは、システムの全プロセッサのうち、データをキャッシュし、プリフェッチを同時送信せずにデータ・オーナーへ有向(directed)プリフェッチを送るプロセッサの経過を知ることができる。NODE A(データ・オーナー)は矢印508で示されるプローブレスポンスで応答する。データはメモリ・コントローラのストア・バッファに保持され、低レベルのメモリシステムへの書き込みは遅延される。その後、NODE Aにおけるデータ・プロセッサは矢印510によって示されているようにNODE Bへプリフェッチ・リードを送る。NODE Bのメモリ・コントローラは時間512の間にストア・バッファからデータ・エレメントの読み出しを行い、矢印514によって示されているように、NODE Aにデータを送ることにより応答する。NODE Aにおけるデータ・プロセッサがプリフェッチ・リードを正常に送ることができる場合、NODE Bのメモリ・コントローラはメイン・メモリへアクセスせずにデータを送ることができる。しかし、NODE Bにおけるメモリ・コントローラが、別の目的のために(プロセッサがプリフェッチ・リードを送る前に、その他すべてのライト・バッファが一杯になった場合に、通常の書き込み要求を実行する、など)ストア・バッファを再度利用する必要がある場合、メモリ・コントローラがメモリの代わりにデータの書き込みを行う。最後に、NODE Aは時間516の間にキャッシュラインフィルを完了する。続いてNODE Aにおいてデータが利用される場合、LRUなどのキャッシュのデアロケーション法を用いて、通常のプロセス・フローの間にキャッシュラインは割り当ての解除にも利用することができる。プロセッサによるデータ・エレメントの利用は1度だけであるので、キャッシュにおいてラインは修正されず、また、メイン・メモリに戻ってラインの書き込みを行う必要はない。従って、この方法により、通常はメイン・メモリへのいずれの書き込みもなくなり、そのため、NODE Bにおけるメモリ・コントローラへの少量の帯域幅のみが消費され、ディレクトリ・リード・オペレーションと、リード・バッファ・オペレーションが実行される。
図10に、本発明によるディレクトリベースのデータ処理システム600のブロック図を例示する。データ処理システム600には、システム相互接続602によりまとめて接続されているNノードが含まれる。図10に例示されているのは、典型的なノードであり、それらはノード604、606、608、610、612であり、それぞれが“NODE 1”、“NODE 2”、“NODE 3”、“NODE N−1”、“NODE N”と表示されている。例示的なノードとして、608の詳細が示されている。NODE 608には、キャッシュ624と628とそれぞれ関連付けられている2つのCPUコア622と626と、“XBAR”630と表示されているクロスバスイッチと、“HT”632と表示されているI/Oコントローラと、ネットワーク・インターフェース634と、ディレクトリ/メモリ・コントローラ636とを備えたマイクロプロセッサ620が含まれる。I/Oコントローラ632は外部インターフェースによって関連の入力/出力デバイス640と結合されている。I/Oコントローラ632はいわゆる、非コヒーレントHyperTransportプロトコルを実装している。ネットワーク・インターフェース634はシステム相互接続602と結合され、いわゆる、コヒーレントHyperTransportプロトコルを実装している。ディレクトリ/メモリ・コントローラ636はDRAM650の形状で低レベルのメモリシステムと結合されている。
処理の際に、ノード608はキャッシュコヒーレントの非一様メモリアクセス(“CC NUMA:cache coherent non-uniform memory access”)を実装している。ノード608のようなシステムの各ノードには、プロセッサ620のように、キャッシュを備えたCPUと、DRAMコントローラと、ディレクトリ・コントローラと、入力/出力デバイスとを持つプロセッサが含まれる。ノード608は、そのローカル・キャッシュのいずれか一方に直接的に書き込みデータを注入することができ、又は、データが既にM(修正)状態かE(排他)状態でキャッシュされている場合には、システム相互接続620を介して別のノードに設けられているキャッシュへ間接的に書き込みデータを注入することができる。データを格納するキャッシュはこのキャッシュラインへ連続して行われるリード又はライトリクエストを満足させる必要がある。このキャッシィング機構が目的とするのは、図9に示しているように、DRAMメモリの帯域幅を低減することと、ラインがキャッシュに既に存在する場合は、システムの任意のキャッシュへDMAライト・データを送り、これによりキャッシュに既に存在するデータをアップデートすることである。
ノード608は各ラインに対し、ディレクトリに存在する3つの基本ステートをサポートする。Invalid(I)ステートは、ラインがシステムのいずれのキャッシュにもキャッシュされないことを示す。Iステートのラインへのリード・リクエストにより、低レベルのメモリシステムへのアクセスが生じる。Uncached(U)ステートは、低レベルのメモリシステムへライトバックされた、読み出し専用アクセス用のキャッシング・エージェント(caching agent)によりラインの読み出しが行われたことを示す。Modified/Exclusive(ME)ステートは、リード/ライトアクセスのために、キャッシング・エージェントによりラインの読み出しが行われたことを示す。特定のキャッシュラインに対するディレクトリ・エントリがMEステートにある場合、キャッシング・エージェントは、Eステート、又は、Mステートのいずれかで、そのローカル・キャッシュにデータを有すことができる。キャッシング・エージェントがEステートのラインを有する場合、そのキャッシィング・エージェントはそのラインのコピーに対し、リード/ライト許可を有するが、ラインへの書き込みは行われていない。キャッシング・エージェントがMステートのラインを有する場合、キャッシング・エージェントはキャッシュされたラインのコピーに対してリード/ライト許可を有し、キャッシング・エージェントによってデータの修正が既に行われている。キャッシング・エージェントがMステートのラインをそのキャッシュに有している場合、メモリ内のデータは陳腐化(stale)している。ラインはまず、Eステートでキャッシング・エージェントにインストールされ、その後、修正されるとMステートへと遷移する。システムの1ノードは正確にラインへのリード/ライトアクセスを有することができる。ディレクトリにおいて、MEステートのラインへのいずれのリード・リクエストによって、まず、最新のコピーがシステムのどこに存在するのかがチェックされ、確認される必要がある。最新のデータがプロセッサキャッシュに存在する場合、そのプロセッサはラインを与える必要がある。プロセッサがEステートのキャッシュラインを有する場合、ラインはプロセッサキャッシュにて無効にされ(Iステートにおかれる)、メモリ・エージェントによりラインが与えられる。
MEステートのラインが読み出されると、ディレクトリ・エントリはOwn(O)ステートへと遷移し、メモリ内のデータが陳腐化されるとともに、シェアラ(sharer)が存在することも示す。
キャッシュが読み出し専用のデータのコピーを有している場合、いずれのディレクトリ・エントリも割り当てられない。ディレクトリ・エントリが存在しないということは、ラインがシステムにキャッシュされうることである。スパース・ディレクトリ・キャッシュでミスするストアは、すべてのキャッシュへプローブの同時送信を行い、共用コピーを無効にする。
ディレクトリの可用性により、プロセッサ620はより一般的な例をサポートすることができ、具体的には、図9のNODE A、NODE B、NODE Cは、システム内の全キャッシュにデータの存在をチェックするために、同時にプローブ送信をせずに、識別が可能である。プロセッサ620により、ディレクトリ/メモリ・コントローラ636のディレクトリが用いられ、現在のところラインがキャッシュされているかが判断される。ラインがキャッシュされており、Mステート又はEステートにある場合、I/Oデバイス640からのデータは適切なキャッシュの中に保存される。別の態様では、データはメモリへ書き込まれる。
より詳細には、ディレクトリ/メモリ・コントローラ636は新たなディレクトリ・ステートを実装しており、それにより機構がサポートされる。ディレクトリ・エントリなしに、ラインへのライト・ウィズ・インジェクト・パケットを受け取るI/Oコントローラ632に応答して、ディレクトリ/メモリコントローラ636はDRAM650へラインの書き込みを行う。キャッシュ・エントリの追い出しを行わずにディレクトリ・エントリが生成される限り(つまり、Uエントリ又はIエントリを置き換えることによって)、ディレクトリ・エントリは新たなステート、書き込み済(W)ステートに生成される。この場合、ディレクション・エントリの“ソフト・アロケーション”(soft allocation)が用いられる。この、ソフト・アロケーションにより、キャッシュのワーキング・セットを破壊する(trash)ライト・インジェクトによる、性能上の問題を引き起こす可能性が回避される。その後、CPUがラインの読み出しをすると、ラインは別の新たなステート、予約(R)ステートにインストールされ、ディレクトリ・エントリはWステートからRステートへと遷移する。Rステートにインストールされたラインへのその後の書き込みが、プロセッサキャッシュの中に直接インジェクトされ、ディレクトリ・エントリはメイン・メモリへの書き込みを行わずに、また別の新たなディレクトリ・ステート、MODIFIED(M)ステートに遷移する。プロセッサはそのキャッシュのRエントリに上書きする場合はいつでも、リプレースメント通知を送る。
図11に図10のディレクトリ/メモリコントローラ634のエントリ650を例示する。エントリ650などの各エントリには3つのフィールドが含まれ、それらは、TAGフィールド652、STATEフィールド654、OWNER(オーナー)フィールド656、である。TAGフィールドはディレクトリ・エントリを物理アドレスと関連づけるために用いられる。OWNERフィールドは、ラインがMEステート、又はOステートにある場合のオーナー(owner)を示す。3つの付加的なディレクトリ・ステートには、このWRITE WITH INJECT機構、つまり、Wステートと、Rステートと、Mステートとを実装することが要求される。STATEフィールドにより示される、フルセットのディレクトリ・ステートは以下の表3に示されており、新たなステートはイタリック体で示されている。
Figure 0004663329
この、ディレクトリベースの機構をサポートするために、1つの付加的なプロセッサのキャッシュステート、Rステートが導入される。フルセットのプロセッサキャッシュステートが表4に示されており、新たなステートはイタリック体で示されている。
Figure 0004663329
ライト・ウィズ・インジェクト・シグナリング(signaling)についての前述の議論は、HyperTransportプロトコルに固有のものであることは明らかである。しかし、本発明のその他の実施形態では、ライト・ウィズ・インジェクト条件をシグナリングするその他の方法も用いることができる。例えば、ビット・フィールドや、既存の、または付加的な入力/出力ピン、などの特別エンコーディングが用いられ、ライト・ウィズ・インジェクト条件を知らせることができる。ライト・ウィズ・インジェクト・シグナリングは、その他のバス(PCI、PCI−X、PCIEなど)に、I/O DMAリード・リクエスト・パケットに予約された、またはメーカに固有のフィールドを用いて実現されることができる。
本発明を好ましい実施形態に関連して説明してきたが、様々な変形は当業者にとっては明らかであろう。例えば、本明細書に開示している方法を用いたデータ処理システムは、メイン・メモリや下位レベルキャッシュへ直接接続しているシステムにも応用することができる。更に、本発明は1つ以上の上位レベルキャッシュにも応用することができる。メイン・メモリはDRAM、SRAM、不揮発性メモリ、または、その他の任意のメモリのタイプを用いて構成されることができる。更に、プリフェッチ・リードを待つ間、一時的にデータを格納するいくつかの方法も可能である。従って、本発明は添付の請求項によって規定されている発明の範疇に属するすべての変形例をカバーするものである。
従来技術で周知の、プローブベースのデータ処理システムにおける、データ信号と制御信号のフローに関連付けられたタイミング図。 本発明による、ブローブベースのデータ処理システムにおける、データ信号と制御信号のフローに関連付けられたタイミング図。 本発明による複数のプロセッサを有するプローブベースのデータ処理システムのブロック図。 本発明による単一のプロセッサを有するプローブベースのデータ処理システムのブロック図。 ライト・ウイズ・インジェクト・オペレーションを実行している間のデータ・フローを示す、図4のデータ処理システムのブロック図。 メモリ・コントローラを含む図4のデータ処理システム一部のブロック図。 キャッシュを含む図4のCPUの一つのブロック図。 ライト・ウィズ・インジェクト・パケットを形成するために用いることができる、HyperTransportパケットのエンコーディングテーブルを例示した説明図。 本発明によるディレクトリベースのデータ処理システムのデータ信号と制御信号のフローに関連付けられたタイミング図。 本発明によるディレクトリベースのデータ処理システムのブロック図。 図10のディレクトリ/メモリ・コントローラのエントリを例示した説明図。

Claims (10)

  1. キャッシュ(124、624)と、前記キャッシュにバスを通じて接続された下位レベルのメモリシステム(170、650)とを含むメモリ階層を持つデータ処理システム(100、600)において用いられる方法であって、
    データ・エレメントと関連付けられたライト・ウイズ・インジェクト属性を持つデータ・エレメントをデータ・プロデューサ(160、640)から前記バスとは別の入力部を経て受信する(52、502)ステップと、
    前記下位レベルのメモリシステム(170、650)へアクセスせずに、前記ライト・ウイズ・インジェクト属性に応答して前記データ・エレメントを前記キャッシュ(124、624)へ選択的に送信する(54、56、58、60、62、64、504、506、508、510、512、514)ステップと、
    前記キャッシュ(124、624)の前記データ・エレメントを含む少なくとも1つのキャッシュラインをアップデートするステップとを含む方法。
  2. 前記データ・エレメントを受信する(52、502)前記ステップは、実質的にHyperTransport(商標) I/O Link Specification、 Revision 1.03に準拠したリンクを用いて、前記ライト・ウイズ・インジェクト属性を持つ前記データ・エレメントを受信する(52、502)前記ステップを含む、請求項1記載の方法。
  3. 前記受信する(52、502)ステップは更に、リクエストパケットにおいてエンコードを行う予約コマンドフィールドからライト・ウイズ・インジェクト属性を検出するステップを含む、請求項記載の方法。
  4. 前記選択的に送信する(54、56、58、60、62、64、504、506、508、510、512、514)ステップは、前記データ・エレメントをバッファ(242)に一時的に格納(54、504)するステップを含む、請求項1記載の方法。
  5. 前記データ処理システム(100、600)が前記選択的に送信する(54、56、58、60、62、64、504、506、508、510、512、514)ステップが行われる前に、前記バッファ(242)を別の目的のために必要とする場合には、前記データ・エレメントを前記下位レベルのメモリシステム(170、650)に書き込むステップを更に含む、請求項4記載の方法。
  6. 前記選択的に送信する(54、56、58、60、62、64、504、506、508、510、512、514)ステップは更に、
    前記キャッシュ(124、624)と結合された中央処理ユニット(CPU)(122、622)へプローブ・プリフェッチを送信する(56、506)ステップと、
    前記プローブ・プリフェッチに応答して、前記CPU(122、622)によりリード・リクエストを発行する(60、510)ステップと、
    前記リード・リクエストに応答して、前記キャッシュ(124、624)へ前記データ・エレメントを送信する(64、514)ステップと、
    前記バッファ(242)から前記データ・エレメントを取り除く(62、512)ステップとを更に含む請求項4記載の方法。
  7. データ・プロセッサ(120、620)であって、
    キャッシュ(124、624)を含むCPU(122,622)と、
    前記CPU(122)と結合され、データ・プロデューサ(160、640)からデータ・エレメント用のライト・ウイズ・インジェクトパケットを前記データ・プロセッサ(120、620)の入力部を経て受信するように構成されたホスト・ブリッジと、
    前記CPU(122)と、前記ホスト・ブリッジ(130)と結合され前記入力部とは別のバスを通じて下位レベルのメモリシステム(170、650)と結合されるとともに、前記CPUと前記下位レベルのメモリシステムの間に位置するように構成され、前記ライト・ウイズ・インジェクトパケットに応答して前記データ・エレメントを前記CPU(122、622)へ選択的に送り、前記下位レベルのメモリシステム(170、65)へアクセスせずに前記キャッシュ(124、624)に格納する手段(メモリ・コントローラ)(126、636)とを有する、データ・プロセッサ。
  8. 前記CPU(122)はプローブ・プリフェッチの受信に応答して、プリフェッチ・リードを開始するように構成されており、かつ、選択的な送信(126)のための前記手段には、バッファ(242)を含むメモリ・コントローラ(126)が含まれ、前記メモリ・コントローラ(126)は前記ホスト・ブリッジからの前記データ・エレメントを前記バッファ(242)に格納し、前記データ・エレメントの受信に応答して、前記プローブ・プリフェッチを前記CPU(122)へ送り、前記CPU(122)からの前記プリフェッチ・リードに応答して前記バッファ(242)から前記データ・エレメントを送る、請求項7記載のデータ・プロセッサ(120)。
  9. 前記選択的な送信(126)のための前記手段には、ディレクトリ/メモリ・コントローラ(636)が含まれ、前記ディレクトリ/メモリ・コントローラ(636)は前記ライト・ウイズ・インジェクトパケットに反応して、そのディレクトリのチェックを行い、前記データ・エレメントに関連付けられたラインのキャッシュステートが、所定のステートにあるかどうか、そして、前記キャッシュ(624)によって所有されているかがどうかを確認し、そうである場合は、前記下位レベルのメモリシステム(650)にアクセスせずに、前記キャッシュ(624)に格納するために、前記データ・エレメントを前記CPU(622)へ送る、請求項7記載のデータ・プロセッサ(120)。
  10. 前記ホスト・ブリッジ(130)は、実質的にHyperTransport(商標) I/O Link Specification、Revision 1.03に準拠しているリンクを用いて、前記データ・プロデューサ(160、640)と結合されるように構成されている、請求項7記載のデータ・プロセッサ(120、620)。
JP2004568047A 2003-01-27 2003-12-22 書き込みデータをキャッシュにインジェクトする方法及び装置 Expired - Lifetime JP4663329B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/353,216 US7155572B2 (en) 2003-01-27 2003-01-27 Method and apparatus for injecting write data into a cache
PCT/US2003/041180 WO2004070519A2 (en) 2003-01-27 2003-12-22 Method and apparatus for injecting write data into a cache

Publications (2)

Publication Number Publication Date
JP2006513510A JP2006513510A (ja) 2006-04-20
JP4663329B2 true JP4663329B2 (ja) 2011-04-06

Family

ID=32736135

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004568047A Expired - Lifetime JP4663329B2 (ja) 2003-01-27 2003-12-22 書き込みデータをキャッシュにインジェクトする方法及び装置

Country Status (9)

Country Link
US (1) US7155572B2 (ja)
JP (1) JP4663329B2 (ja)
KR (1) KR101089810B1 (ja)
CN (1) CN100424656C (ja)
AU (1) AU2003300342A1 (ja)
DE (1) DE10394081B4 (ja)
GB (1) GB2413879B (ja)
TW (1) TWI341462B (ja)
WO (1) WO2004070519A2 (ja)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040019704A1 (en) * 2002-05-15 2004-01-29 Barton Sano Multiple processor integrated circuit having configurable packet-based interfaces
US7334102B1 (en) 2003-05-09 2008-02-19 Advanced Micro Devices, Inc. Apparatus and method for balanced spinlock support in NUMA systems
JP4508608B2 (ja) * 2003-11-13 2010-07-21 株式会社日立製作所 統合キャッシュを備えた記憶装置アダプタ
US7231470B2 (en) * 2003-12-16 2007-06-12 Intel Corporation Dynamically setting routing information to transfer input output data directly into processor caches in a multi processor system
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
US7366845B2 (en) * 2004-06-29 2008-04-29 Intel Corporation Pushing of clean data to one or more processors in a system having a coherency protocol
US20060004965A1 (en) * 2004-06-30 2006-01-05 Tu Steven J Direct processor cache access within a system having a coherent multi-processor protocol
US7290107B2 (en) * 2004-10-28 2007-10-30 International Business Machines Corporation Direct deposit using locking cache
US7395375B2 (en) * 2004-11-08 2008-07-01 International Business Machines Corporation Prefetch miss indicator for cache coherence directory misses on external caches
US9026744B2 (en) 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
US20070094432A1 (en) * 2005-10-24 2007-04-26 Silicon Integrated Systems Corp. Request transmission mechanism and method thereof
CN100396059C (zh) * 2006-03-03 2008-06-18 清华大学 分裂式网络处理器控制信息高速缓冲存储器
JP2007241612A (ja) * 2006-03-08 2007-09-20 Matsushita Electric Ind Co Ltd マルチマスタシステム
US8009566B2 (en) * 2006-06-26 2011-08-30 Palo Alto Networks, Inc. Packet classification in a network security device
CN101288055B (zh) * 2006-11-07 2010-10-13 日立软件工程株式会社 数据处理控制方法,信息处理设备和数据处理控制系统
US20080109604A1 (en) * 2006-11-08 2008-05-08 Sicortex, Inc Systems and methods for remote direct memory access to processor caches for RDMA reads and writes
US7774554B2 (en) * 2007-02-20 2010-08-10 International Business Machines Corporation System and method for intelligent software-controlled cache injection
US7752395B1 (en) * 2007-02-28 2010-07-06 Network Appliance, Inc. Intelligent caching of data in a storage server victim cache
US8594085B2 (en) 2007-04-11 2013-11-26 Palo Alto Networks, Inc. L2/L3 multi-mode switch including policy processing
US20080295097A1 (en) * 2007-05-24 2008-11-27 Advanced Micro Devices, Inc. Techniques for sharing resources among multiple devices in a processor system
US20110004732A1 (en) * 2007-06-06 2011-01-06 3Leaf Networks, Inc. DMA in Distributed Shared Memory System
US20090006668A1 (en) * 2007-06-28 2009-01-01 Anil Vasudevan Performing direct data transactions with a cache memory
US7856530B1 (en) * 2007-10-31 2010-12-21 Network Appliance, Inc. System and method for implementing a dynamic cache for a data storage system
GB0722707D0 (en) * 2007-11-19 2007-12-27 St Microelectronics Res & Dev Cache memory
GB2454809B (en) * 2007-11-19 2012-12-19 St Microelectronics Res & Dev Cache memory system
US8510509B2 (en) * 2007-12-18 2013-08-13 International Business Machines Corporation Data transfer to memory over an input/output (I/O) interconnect
US7865668B2 (en) * 2007-12-18 2011-01-04 International Business Machines Corporation Two-sided, dynamic cache injection control
US8099557B2 (en) * 2008-02-26 2012-01-17 Globalfoundries Inc. Push for sharing instruction
US8209489B2 (en) * 2008-10-22 2012-06-26 International Business Machines Corporation Victim cache prefetching
US8347037B2 (en) * 2008-10-22 2013-01-01 International Business Machines Corporation Victim cache replacement
US8117397B2 (en) * 2008-12-16 2012-02-14 International Business Machines Corporation Victim cache line selection
US8225045B2 (en) * 2008-12-16 2012-07-17 International Business Machines Corporation Lateral cache-to-cache cast-in
US8499124B2 (en) * 2008-12-16 2013-07-30 International Business Machines Corporation Handling castout cache lines in a victim cache
US8489819B2 (en) * 2008-12-19 2013-07-16 International Business Machines Corporation Victim cache lateral castout targeting
US8873556B1 (en) 2008-12-24 2014-10-28 Palo Alto Networks, Inc. Application based packet forwarding
US8769664B1 (en) 2009-01-30 2014-07-01 Palo Alto Networks, Inc. Security processing in active security devices
US8719499B2 (en) * 2009-02-10 2014-05-06 International Business Machines Corporation Cache-line based notification
US8949540B2 (en) * 2009-03-11 2015-02-03 International Business Machines Corporation Lateral castout (LCO) of victim cache line in data-invalid state
US8285939B2 (en) * 2009-04-08 2012-10-09 International Business Machines Corporation Lateral castout target selection
US8327073B2 (en) * 2009-04-09 2012-12-04 International Business Machines Corporation Empirically based dynamic control of acceptance of victim cache lateral castouts
US8347036B2 (en) * 2009-04-09 2013-01-01 International Business Machines Corporation Empirically based dynamic control of transmission of victim cache lateral castouts
US8312220B2 (en) * 2009-04-09 2012-11-13 International Business Machines Corporation Mode-based castout destination selection
US20110228674A1 (en) * 2010-03-18 2011-09-22 Alon Pais Packet processing optimization
US9037810B2 (en) 2010-03-02 2015-05-19 Marvell Israel (M.I.S.L.) Ltd. Pre-fetching of data packets
US9189403B2 (en) * 2009-12-30 2015-11-17 International Business Machines Corporation Selective cache-to-cache lateral castouts
US8327047B2 (en) 2010-03-18 2012-12-04 Marvell World Trade Ltd. Buffer manager and methods for managing memory
AU2010201718B2 (en) * 2010-04-29 2012-08-23 Canon Kabushiki Kaisha Method, system and apparatus for identifying a cache line
US8751714B2 (en) * 2010-09-24 2014-06-10 Intel Corporation Implementing quickpath interconnect protocol over a PCIe interface
US9098203B1 (en) 2011-03-01 2015-08-04 Marvell Israel (M.I.S.L) Ltd. Multi-input memory command prioritization
US9047441B2 (en) 2011-05-24 2015-06-02 Palo Alto Networks, Inc. Malware analysis system
US8695096B1 (en) 2011-05-24 2014-04-08 Palo Alto Networks, Inc. Automatic signature generation for malicious PDF files
DE112011105911T5 (de) * 2011-12-01 2014-09-11 Intel Corporation Server mit Switch-Schaltungen
US9268732B2 (en) 2012-06-08 2016-02-23 Advanced Micro Devices, Inc. Tunnel suitable for multi-segment communication links and method therefor
JP6028470B2 (ja) * 2012-08-31 2016-11-16 富士通株式会社 演算処理装置、情報処理装置および演算処理装置の制御方法
US9218291B2 (en) 2013-07-25 2015-12-22 International Business Machines Corporation Implementing selective cache injection
KR102238650B1 (ko) * 2014-04-30 2021-04-09 삼성전자주식회사 저장 장치, 상기 저장 장치를 포함하는 컴퓨팅 시스템 및 상기 저장 장치의 동작 방법
JP6248809B2 (ja) * 2014-05-23 2017-12-20 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN103995786B (zh) * 2014-06-04 2017-05-17 龙芯中科技术有限公司 高速缓存一致性消息的传输方法和装置
US9594521B2 (en) 2015-02-23 2017-03-14 Advanced Micro Devices, Inc. Scheduling of data migration
US9792210B2 (en) * 2015-12-22 2017-10-17 Advanced Micro Devices, Inc. Region probe filter for distributed memory system
JP6565729B2 (ja) * 2016-02-17 2019-08-28 富士通株式会社 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法
US10042762B2 (en) 2016-09-14 2018-08-07 Advanced Micro Devices, Inc. Light-weight cache coherence for data processors with limited data sharing
WO2020038466A1 (zh) * 2018-08-24 2020-02-27 华为技术有限公司 数据预取方法及装置
US10761986B2 (en) 2018-10-23 2020-09-01 Advanced Micro Devices, Inc. Redirecting data to improve page locality in a scalable data fabric
US11036658B2 (en) 2019-01-16 2021-06-15 Advanced Micro Devices, Inc. Light-weight memory expansion in a coherent memory system
CN110727612B (zh) * 2019-09-09 2021-01-15 无锡江南计算技术研究所 一种基于精确预取的计算缓存装置
US11914517B2 (en) 2020-09-25 2024-02-27 Advanced Micro Devices, Inc. Method and apparatus for monitoring memory access traffic
US11874783B2 (en) 2021-12-21 2024-01-16 Advanced Micro Devices, Inc. Coherent block read fulfillment
US20240078197A1 (en) * 2022-09-01 2024-03-07 Advanced Micro Devices, Inc. Locality-based data processing

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04190436A (ja) * 1990-11-26 1992-07-08 Mitsubishi Electric Corp マイクロプロセッサ内蔵キャッシュメモリ回路
JPH04195576A (ja) * 1990-11-28 1992-07-15 Nec Corp キャッシュメモリ方式
JPH07168780A (ja) * 1993-11-16 1995-07-04 Mitsubishi Electric Corp ネットワークインタフェイス装置
US5553265A (en) * 1994-10-21 1996-09-03 International Business Machines Corporation Methods and system for merging data during cache checking and write-back cycles for memory reads and writes
JPH10154099A (ja) * 1996-11-26 1998-06-09 Fujitsu Ltd 情報処理装置
JP2000082011A (ja) * 1998-05-13 2000-03-21 Axis Ab Dmaユニットによる改良されたメモリ・アクセスをする方法及びコンピュ―タ・システム
US6044438A (en) * 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
US20020087796A1 (en) * 2000-12-29 2002-07-04 Fanning Blaise B. Method and apparatus for optimizing data streaming in a computer system utilizing random access memory in a system logic device
JP2002278834A (ja) * 2001-03-21 2002-09-27 Nec Corp キャッシュメモリ装置およびそれを含むデータ処理装置
JP2002533812A (ja) * 1998-12-21 2002-10-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド コヒーレンシ維持のための柔軟なプローブ/プローブ応答経路制御
JP2003099324A (ja) * 2001-07-10 2003-04-04 Hitachi Ltd マルチメディアプロセッサ用のストリーミングデータキャッシュ
JP2004005287A (ja) * 2002-06-03 2004-01-08 Hitachi Ltd コプロセッサを搭載したプロセッサシステム
US20040034747A1 (en) * 2002-05-15 2004-02-19 Rowlands Joseph B. Scalable cache coherent distributed shared memory processing system
US20040128450A1 (en) * 2002-12-30 2004-07-01 Edirisooriya Samantha J. Implementing direct access caches in coherent multiprocessors
JP2006501568A (ja) * 2002-09-30 2006-01-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド キャッシュを備えたデータ処理システムのオーバーヘッドを小さくするための方法及び装置

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4197580A (en) * 1978-06-08 1980-04-08 Bell Telephone Laboratories, Incorporated Data processing system including a cache memory
US4503497A (en) * 1982-05-27 1985-03-05 International Business Machines Corporation System for independent cache-to-cache transfer
CA2047597A1 (en) 1990-07-24 1992-01-25 Atsushi Goh Halogen-containing compounds, herbicidal composition containing the same as an active ingredient, and intermediary compounds therefor
US5375216A (en) 1992-02-28 1994-12-20 Motorola, Inc. Apparatus and method for optimizing performance of a cache memory in a data processing system
US5535116A (en) * 1993-05-18 1996-07-09 Stanford University Flat cache-only multi-processor architectures
CA2148186A1 (en) * 1994-05-04 1995-11-05 Michael T. Jackson Processor board having a second level writeback cache system and a third level writethrough cache system which stores exclusive state information for use in a multiprocessor computer system
US6101574A (en) * 1995-02-16 2000-08-08 Fujitsu Limited Disk control unit for holding track data in non-volatile cache memory
US5680576A (en) * 1995-05-05 1997-10-21 Silicon Graphics, Inc. Directory-based coherence protocol allowing efficient dropping of clean-exclusive data
WO1996035169A1 (en) * 1995-05-05 1996-11-07 Silicon Graphics, Inc. Page migration in a non-uniform memory access (numa) system
US5850534A (en) * 1995-06-05 1998-12-15 Advanced Micro Devices, Inc. Method and apparatus for reducing cache snooping overhead in a multilevel cache system
US5829028A (en) * 1996-05-06 1998-10-27 Advanced Micro Devices, Inc. Data cache configured to store data in a use-once manner
US5829025A (en) * 1996-12-17 1998-10-27 Intel Corporation Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction
US5996048A (en) * 1997-06-20 1999-11-30 Sun Microsystems, Inc. Inclusion vector architecture for a level two cache
US6223258B1 (en) * 1998-03-31 2001-04-24 Intel Corporation Method and apparatus for implementing non-temporal loads
US6212568B1 (en) * 1998-05-06 2001-04-03 Creare Inc. Ring buffered network bus data management system
US6490654B2 (en) * 1998-07-31 2002-12-03 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
US6654953B1 (en) * 1998-10-09 2003-11-25 Microsoft Corporation Extending program languages with source-program attribute tags
US6108764A (en) * 1998-12-17 2000-08-22 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention
US6442666B1 (en) * 1999-01-28 2002-08-27 Infineon Technologies Ag Techniques for improving memory access in a virtual memory system
US6502171B1 (en) * 1999-08-04 2002-12-31 International Business Machines Corporation Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data
US6549961B1 (en) * 1999-10-27 2003-04-15 Infineon Technologies North America Corporation Semaphore access in a multiprocessor system
US6427188B1 (en) * 2000-02-09 2002-07-30 Hewlett-Packard Company Method and system for early tag accesses for lower-level caches in parallel with first-level cache
US6751684B2 (en) * 2000-12-21 2004-06-15 Jonathan M. Owen System and method of allocating bandwidth to a plurality of devices interconnected by a plurality of point-to-point communication links
US7100001B2 (en) * 2002-01-24 2006-08-29 Intel Corporation Methods and apparatus for cache intervention
US6912612B2 (en) * 2002-02-25 2005-06-28 Intel Corporation Shared bypass bus structure
US6839816B2 (en) * 2002-02-26 2005-01-04 International Business Machines Corporation Shared cache line update mechanism
US20040019704A1 (en) * 2002-05-15 2004-01-29 Barton Sano Multiple processor integrated circuit having configurable packet-based interfaces

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04190436A (ja) * 1990-11-26 1992-07-08 Mitsubishi Electric Corp マイクロプロセッサ内蔵キャッシュメモリ回路
JPH04195576A (ja) * 1990-11-28 1992-07-15 Nec Corp キャッシュメモリ方式
JPH07168780A (ja) * 1993-11-16 1995-07-04 Mitsubishi Electric Corp ネットワークインタフェイス装置
US5553265A (en) * 1994-10-21 1996-09-03 International Business Machines Corporation Methods and system for merging data during cache checking and write-back cycles for memory reads and writes
JPH10154099A (ja) * 1996-11-26 1998-06-09 Fujitsu Ltd 情報処理装置
US6044438A (en) * 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
JP2000082011A (ja) * 1998-05-13 2000-03-21 Axis Ab Dmaユニットによる改良されたメモリ・アクセスをする方法及びコンピュ―タ・システム
JP2002533812A (ja) * 1998-12-21 2002-10-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド コヒーレンシ維持のための柔軟なプローブ/プローブ応答経路制御
US20020087796A1 (en) * 2000-12-29 2002-07-04 Fanning Blaise B. Method and apparatus for optimizing data streaming in a computer system utilizing random access memory in a system logic device
JP2002278834A (ja) * 2001-03-21 2002-09-27 Nec Corp キャッシュメモリ装置およびそれを含むデータ処理装置
JP2003099324A (ja) * 2001-07-10 2003-04-04 Hitachi Ltd マルチメディアプロセッサ用のストリーミングデータキャッシュ
US20040034747A1 (en) * 2002-05-15 2004-02-19 Rowlands Joseph B. Scalable cache coherent distributed shared memory processing system
JP2004005287A (ja) * 2002-06-03 2004-01-08 Hitachi Ltd コプロセッサを搭載したプロセッサシステム
JP2006501568A (ja) * 2002-09-30 2006-01-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド キャッシュを備えたデータ処理システムのオーバーヘッドを小さくするための方法及び装置
US20040128450A1 (en) * 2002-12-30 2004-07-01 Edirisooriya Samantha J. Implementing direct access caches in coherent multiprocessors

Also Published As

Publication number Publication date
KR20050107402A (ko) 2005-11-11
US20040148473A1 (en) 2004-07-29
JP2006513510A (ja) 2006-04-20
AU2003300342A1 (en) 2004-08-30
CN100424656C (zh) 2008-10-08
KR101089810B1 (ko) 2011-12-12
WO2004070519A3 (en) 2005-08-04
GB2413879B (en) 2006-08-16
GB2413879A (en) 2005-11-09
TW200421089A (en) 2004-10-16
TWI341462B (en) 2011-05-01
CN1754158A (zh) 2006-03-29
DE10394081T5 (de) 2011-12-29
WO2004070519A2 (en) 2004-08-19
AU2003300342A8 (en) 2004-08-30
GB0516391D0 (en) 2005-09-14
US7155572B2 (en) 2006-12-26
DE10394081B4 (de) 2013-05-29

Similar Documents

Publication Publication Date Title
JP4663329B2 (ja) 書き込みデータをキャッシュにインジェクトする方法及び装置
US6944719B2 (en) Scalable cache coherent distributed shared memory processing system
US7171521B2 (en) Coherent shared memory processing system
KR100548908B1 (ko) 중앙 집중형 스누프 필터링 방법 및 장치
KR100970229B1 (ko) 원격 캐시 존재 정보를 저장하는 프로세서 캐시를 구비한 컴퓨터 시스템
US6948035B2 (en) Data pend mechanism
US5325504A (en) Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system
US7062610B2 (en) Method and apparatus for reducing overhead in a data processing system with a cache
US7269695B2 (en) Ambiguous virtual channels
US7493446B2 (en) System and method for completing full updates to entire cache lines stores with address-only bus operations
US20030217236A1 (en) L2 Cache maintaining local ownership of remote coherency blocks
JPH10301849A (ja) キャッシュ・コヒーレンシを維持する方法及び装置
US11314644B2 (en) Cache size change
KR19980079610A (ko) 멀티프로세서 데이터 처리 시스템의 캐쉬 일관성을 유지하기 위한 캐쉬 일관성 프로토콜 제공 방법 및 시스템
JP2001043130A (ja) コンピュータシステム
US7062609B1 (en) Method and apparatus for selecting transfer types
US6629213B1 (en) Apparatus and method using sub-cacheline transactions to improve system performance
US6965973B2 (en) Remote line directory which covers subset of shareable CC-NUMA memory space
JPH11328027A (ja) キャッシュ・コヒ―レンスを維持する方法及びコンピュ―タ・システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100216

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100421

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100430

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100512

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100616

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100706

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20100902

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4663329

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140114

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

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

EXPY Cancellation because of completion of term