JP5146844B2 - 直列インターフェースバスにまたがってキャッシュコヒーレンシを維持するシステム及び方法 - Google Patents

直列インターフェースバスにまたがってキャッシュコヒーレンシを維持するシステム及び方法 Download PDF

Info

Publication number
JP5146844B2
JP5146844B2 JP2009279506A JP2009279506A JP5146844B2 JP 5146844 B2 JP5146844 B2 JP 5146844B2 JP 2009279506 A JP2009279506 A JP 2009279506A JP 2009279506 A JP2009279506 A JP 2009279506A JP 5146844 B2 JP5146844 B2 JP 5146844B2
Authority
JP
Japan
Prior art keywords
processor
data
cache
cache line
local memory
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.)
Active
Application number
JP2009279506A
Other languages
English (en)
Other versions
JP2010140485A (ja
Inventor
キース ランゲンドーフ ブライアン
ビー. グラスコ デイヴィッド
ブライアン コックス マイケル
エム. アルベン ジョナ
Original Assignee
エヌヴィディア コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エヌヴィディア コーポレイション filed Critical エヌヴィディア コーポレイション
Publication of JP2010140485A publication Critical patent/JP2010140485A/ja
Application granted granted Critical
Publication of JP5146844B2 publication Critical patent/JP5146844B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F13/14Handling requests for interconnection or transfer
    • 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
    • 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
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Systems (AREA)
  • Multi Processors (AREA)

Description

[0001]本発明は、全般的には分散コンピューティングの分野に関し、より具体的には、PCI Express(PCIe)などの直列インターフェースバスにまたがってキャッシュコヒーレンシを維持するシステム及び方法に関する。
[0002]従来のコンピューティングシステムでは、プロセッサは、外部メモリユニットからデータを読み取り、データのコピーを後の使用のために短待ち時間キャッシュメモリユニット(キャッシュ)に格納する。次に、プロセッサは、データを使用して動作を実行する時に、外部メモリユニットからデータを読み取るのではなく、キャッシュからデータのコピーを読み取ることができる。プロセッサと外部メモリユニットとの間のデータアクセスは、プロセッサとキャッシュとの間のデータアクセスより長い待ち時間を有するので、キャッシュからのデータの取出は、プロセッサが命令をよりすばやく実行することを可能にし、最終的に、プロセッサの性能を高める。キャッシュは、通常、スタティックランダムアクセスメモリ(SRAM)又は別のタイプの短待ち時間メモリユニットとして実施される。
[0003]通常のキャッシュは、複数のラインに編成され、このラインにデータが格納される。各ラインは、そのラインに格納されたキャッシングされたデータの有効性を記述するタグを用いてマークされる。たとえば、プロセッサが、外部メモリから特定のキャッシュラインにデータをコピーする時に、そのキャッシュラインは、「有効」としてマークされる。というのは、データのキャッシングされたコピーが、外部メモリユニットに格納されたオリジナルデータと同一であるからである。その代わりに、プロセッサが、キャッシュラインからデータを読み取り、データを変更し、変更されたデータをキャッシュラインに書き戻す時には、キャッシュラインを、「変更済み」としてマークすることができる。というのは、データのキャッシングされたコピーが、外部メモリユニットに格納されたオリジナルデータに対して相対的に変更されるからである。変更されたデータを外部メモリユニットに書き戻すことができ、その結果、外部メモリユニットに格納されたデータが、キャッシングされたデータと同一になる。外部メモリユニットに格納されたデータが、キャッシュに格納された対応するデータと同一である時には、キャッシュは、「コヒーレント」であると考えられる。キャッシュは、キャッシュデータが「変更済み」としてマークされる限り、データがメインメモリに格納されたものと異なる場合にもコヒーレントである。キャッシュデータは、キャッシュがメインメモリに格納されたものと異なるデータを格納するが、データが変更済みとしてマークされない場合、又は異なるキャッシュが変更済みとしてマークされた同一データを有する場合に、「非コヒーレント」になる。
[0004]キャッシュを、PCI Express(PCIe)バスによって相互接続された複数のプロセッサを含む分散コンピューティングシステム内で実施することができる。各プロセッサは、1つ又は複数の外部メモリユニットからデータを読み取り、データのコピーをそのプロセッサに関連するキャッシュに格納することができる。次に、プロセッサは、データのキャッシングされたコピーを使用して、処理動作を実行することができる。プロセッサが、データのキャッシングされたコピーを変更する場合に、プロセッサは、上で説明したように、外部メモリユニットとのキャッシュコヒーレンシを維持するために変更されたデータを外部メモリユニットに書き戻すことができる。しかし、従来のシステムの複数のCPUは、現在PCIeにまたがってキャッシュコヒーレンシを維持する形が存在しないので、PCIeにまたがってデータを読み取り、キャッシングすることができない。
[0005]各プロセッサは、PCIeバスを介してデータを受け取ることもできる。プロセッサが、PCIeバスを介してデータを受け取る時に、そのデータは、通常、「キャッシング不能」(UC)又は「ライトコンバイン」(WC)としてマークされる。キャッシング不能とマークされたデータは、コンピューティングシステムの状態がこのデータに依存する可能性があるので、キャッシュに格納することができない。その場合に、このデータを参照することは、コンピューティングシステムによって待機(expect)され、通常動作のために要求される副作用を有する場合がある。したがって、データは、このデータに対する変更がコンピューティングシステムに既知になるようにするために、コンピュータシステムからアクセス可能でなければならない。したがって、このデータを、コンピューティングシステムの予期されない動作という危険を冒さずに介在するキャッシュに格納することはできない。WCとマークされたデータは、データフラグメントとしてバッファに受け取られる。その後、これらのフラグメントが組み合わされて、データが再生される。その後、組み合わされたデータは、複数のより小さい書込みではなく、1つの大きい書込みとして配送される。WCとマークされたデータは、WCとマークされた位置への読取りがUCとマークされた位置への読取りと同一の形で扱われるので、キャッシングすることができない。
[0006]前述の構成に伴う1つの問題は、プロセッサが、UC又はWCとマークされたデータを読み取る時に、そのデータをプロセッサによってキャッシングできないことである。たとえば、プロセッサが、UC又はWCとマークされた同一のデータを使用する複数の処理動作を実行する場合に、プロセッサは、外部(非キャッシュ)メモリユニットからそのデータを複数回読み取ることを要求され、したがって、大きい待ち時間が導入される。もう1つの問題は、プロセッサが、UCとマークされたデータを使用して命令を実行する時に、プロセッサが、これらの命令の実行をシリアライズし、これが、プロセッサの効率を低下させることである。重要なことに、PCIeバスを介して受け取られるデータ(たとえば、マルチプロセッサシステム内の別のプロセッサのキャッシュからコピーされるデータ)は、UC又はWCとしてマークされる。したがって、このデータは、キャッシングできず、これが追加の待ち時間を導入する。この問題に対する1つの解決策は、プロセッサをPCIeバスに接続するのを避けることである。しかし、この解決策は、コンピューティングシステムの可能な構成を大幅に制限する。
[0007]したがって、当技術分野には、改善されたキャッシング技法の必要が残っている。
[0008]本発明の一実施形態は、データキャッシュに格納されたデータを使用して処理動作を実行する方法を示す。この方法は、第1プロセッサに結合されたローカルメモリに格納された第1データが第2プロセッサに結合されたデータキャッシュに格納された第2データに対して相対的にコヒーレントであるかどうかを判定するように構成されたスヌープ要求であって、直列インターフェースバス上のデータキャッシュを識別する宛先情報と、データキャッシュ内で第2データが配置される場所を識別するキャッシュラインアドレスとを含むスヌープ要求を生成するステップと、データキャッシュを識別する宛先情報に基づいてスヌープ要求を直列インターフェースバスを介して第2プロセッサに送らせるステップと、スヌープ要求からキャッシュラインアドレスを抽出するステップと、データキャッシュ内でキャッシュラインアドレスに格納された第2データがローカルメモリに格納された第1データに対して相対的にコヒーレントであるかどうかを判定するステップと、直列インターフェースバス上でローカルメモリを識別する宛先情報と、第1データが第2データに対して相対的にコヒーレントであることを示す完了情報とを含む完了(CPL)メッセージを生成するステップと、ローカルメモリを識別する宛先情報に基づいて、CPLメッセージを直列インターフェースバスを介して第1プロセッサに送らせるステップと、ローカルメモリに格納された第1データを使用して処理動作を第1プロセッサ上で実行させるステップとを含む。
[0009]有利なことに、PCIeバスを介して送られるデータを、「キャッシング可能」としてマークすることができ、このデータを受け取るプロセッサが、プログラム命令の実行をシリアライズする必要が除去される。したがって、PCIeバスを介して受け取られるデータを用いる動作を実行する時に、従来技術の手法に対して相対的に、プロセッサ速度が改善される。
上に列挙した本発明の特徴を詳細に理解できるように、上で短く要約した本発明のより具体的な説明を、実施形態を参照することによって得ることができ、この実施形態のいくつかは、添付図面に示されている。添付図面は、本発明の通常の実施形態だけを示し、したがって、本発明の範囲について限定的と考えてはならない。というのは、本発明が、他の同等に有効な実施形態を許すことができるからである。
本発明の1つ又は複数の態様を実施するように構成されたコンピューティングシステムを示すブロック図である。 「スヌープ」(SNP)トランザクションに関連するパケットの第1実施形態を示す概念図である。 「スヌープ」(SNP)トランザクションに関連するパケットの第2実施形態を示す概念図である。 本発明の一実施形態による、第1のSNPトランザクションを示す図である。 本発明の一実施形態による、第2のSNPトランザクションを示す図である。 本発明の一実施形態による、第3のSNPトランザクションを示す図である。 本発明の一実施形態による、PCIeバス上のSNPトランザクションを実施する方法ステップを示す流れ図である。 本発明の一実施形態による、PCIeバス上の送出に関するSNP要求を生成する方法ステップを示す流れ図である。 本発明の一実施形態による、PCIeバス上の送出に関するCPLメッセージを生成する方法ステップを示す流れ図である。
[0017]次の説明では、本発明のより完全な理解を提供するために、多数の具体的な詳細を示す。しかし、これらの特定の詳細のうちの1つ又は複数を伴わずに本発明を実践できることは、当業者に明白であろう。他の場合には、本発明を不明瞭にするのを避けるために、周知の特徴は説明しない。
[0018]図1は、本発明の1つ又は複数の態様を実施するように構成されたコンピューティングシステム100のブロック図である。図示されているように、コンピューティングシステム100は、peripheral component interface express(PCIe)バス102、ローカルメモリ110、メモリコントローラ111、プロセッサ112、システムメモリ114、メモリコントローラ116、プロセッサ118、及びキャッシュ120を含む。PCIeバス102は、トランザクションレイヤ104、リンクレイヤ106、及び物理レイヤ108を含む。PCIeバス102は、プロセッサ112及びプロセッサ118を相互接続し、これらのコンポーネントの間の通信経路を提供する。
[0019]プロセッサ112及びプロセッサ118は、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、並列処理ユニット(PPU)、特定用途向け集積回路(ASIC)、又は他のタイプの処理ユニットとすることができる。プロセッサ112及びプロセッサ118は、同一タイプの処理ユニット又は異なるタイプの処理ユニットとすることができる。たとえば、プロセッサ112を、グラフィックス処理動作を実行するGPUとすることができ、プロセッサ118を、システムメモリ114に格納されたオペレーティングシステム(OS)を実行するCPUとすることができる。
[0020]プロセッサ118は、メモリコントローラ116に結合され、メモリコントローラ116を介してシステムメモリ114からデータを読み取ることができる。一実施形態では、プロセッサ112及び/又はプロセッサ118は、PCIeバス102のトランザクションレイヤ104を介してメモリコントローラ116に結合される。したがって、プロセッサ112及び/又はプロセッサ118の両方は、PCIeバス102を介してシステムメモリ114にアクセスすることができる。プロセッサ112及びプロセッサ118は、プログラム命令及び/又はプログラム命令を実行するために必要なデータを含むデータをシステムメモリ114から読み取ることができる。たとえば、プロセッサ112がGPUであるときに、プロセッサ112は、特定のグラフィックス処理動作を実行するためにプロセッサ112内に含まれるグラフィックス処理パイプラインのコンポーネントを構成するプログラム命令を読み取ることができる。プロセッサ112は、システムメモリ114及び/又はローカルメモリ110からグラフィックスデータを読み取り、グラフィックス処理パイプラインを使用してそのグラフィックスデータを処理することもできる。
[0021]システムメモリ114は、プロセッサ112、118の動作を調整するように構成されたプログラム命令のセットとして実施されるソフトウェアドライバ115を含む。たとえば、ドライバ115を構成するプログラム命令を、プロセッサ118によって実行して、下で詳細に述べるドライバ115の機能性を実施することができる。
[0022]プロセッサ112は、メモリコントローラ111を介してローカルメモリ110に結合され、したがって、ローカルメモリ110の動作を制御する。プロセッサ112がPCIeバス102からデータを受け取る時に、プロセッサ112は、受け取られたデータを後の使用のためにローカルメモリ110に格納することができる。ローカルメモリ110は、プロセッサ112によって実行されるプログラム命令の実行を加速するように構成された短待ち時間メモリユニットとすることができる。ローカルメモリ110は、プロセッサ112によって実行された時にコンピュータシステム100のさまざまな機能性を実施するプログラム命令及び/又はドライバを格納することもできる。
[0023]プロセッサ118は、キャッシュ120に直接に結合され、キャッシュ120の動作を制御する。プロセッサ118が、システムメモリ114から又はPCIeバス102からデータを受け取る時に、プロセッサ118は、受け取られたデータの一時コピーを後の使用のためにキャッシュ120に格納することができる。キャッシュ120は、スタティックランダムアクセスメモリ(SRAM)モジュールなどの短待ち時間メモリユニットである。キャッシュ120に対して行われる読取り要求は、システムメモリ114に対して行われる読取り要求より短い待ち時間を有する。したがって、キャッシュ120は、要求されたデータをキャッシュ120から取り出せる時にシステムメモリ114への長待ち時間読取りが回避されるので、プロセッサ118によって実行されるプログラム命令の実行を加速することができる。
[0024]「スヌープ」(SNP)トランザクションは、プロセッサ112が、キャッシュ120に格納されたオリジナルデータの状態をチェックすることを可能にする。SNPトランザクションは、プロセッサ112とプロセッサ118との間でPCIeバス102のトランザクションレイヤ104を介して転送される異なるメッセージの使用を介して実施される。これらのメッセージは、SNP要求及び「完了」CPLメッセージを含む。プロセッサ112は、スヌープ経路130に沿ってSNP要求を送って、SNPトランザクションを開始する。SNP要求は、キャッシングされるデータのアドレスを含む。SNP要求に応答して、プロセッサ118は、下で図2A〜2B及び図3A〜3Bで詳細に説明するように、キャッシュ120に格納されたデータを調べ、データの状態に依存する特定のタスクを実行する。プロセッサ118がこれらのタスクを完了した時に、プロセッサ118は、SNPトランザクションが完了したことを示すCPLメッセージを送ることができる。
[0025]PCIeバス102は、ルートコンプレックス(図示せず)を含む。ルートコンプレックスは、プロセッサ112及びプロセッサ118など、PCIeバス102に接続されたエンドポイントの間でトランザクションを管理するコントローラである。したがって、ルートコンプレックスを、SNPトランザクションに関連するメッセージをルーティングするように構成することができる。一実施形態では、ルートコンプレックスは、あるエンドポイントから受け取られたSNP要求を、ルートコンプレックスの上にありPCIeバス102上にはない他のすべてのエンドポイント又はエンドポイントのピアにブロードキャストする。
[0026]図2Aは、本発明の一実施形態による、SNPトランザクションに関連するパケットの第1実施形態を示す概念図である。図示されているように、図2Aには、トランザクションレイヤ104を介して移動するSNP要求202A及びCPLメッセージ208Aが示されている。一実施形態では、SNP要求202A及びCPLメッセージ208Aは、本明細書でより詳細に説明するように、トランザクションレイヤを介して同時には移動しない。SNP要求202Aは、キャッシュラインアドレス204及びトランザクションレイヤパケット(TLP)ヘッダ206を含む。キャッシュラインアドレス204は、調べられるキャッシュラインのアドレスを指定する。TLPヘッダ206は、メッセージの受取り側に対してSNP要求202Aとしてメッセージを識別する。
[0027]SNP要求202Aを、「非ポストトランザクション(non−posted transaction)」としてPCIe標準プロトコルに追加することができる。第1のPCIeエンドポイントが非ポストトランザクションを第2のPCIeエンドポイントに送る時に、第1のPCIeエンドポイントは、それに応答するCPLメッセージを待機する。したがって、プロセッサ112が、プロセッサ118にSNP要求202Aを送る時に、プロセッサ112は、それに応答するプロセッサ118からのCPLメッセージ208Aを待機する。したがって、プロセッサ118は、SNPトランザクションが完了する時にプロセッサ112にCPLメッセージ208Aを送る。
[0028]プロセッサ112は、ローカルメモリ110に格納されたデータがキャッシュ120に格納されたデータとコヒーレントであるかどうかを判定するために、SNP要求202Aを生成し、プロセッサ118に送ることができる。プロセッサ112がSNP要求202Aを生成する時に、プロセッサ112は、データが格納されているキャッシュ120内のキャッシュラインのアドレスをキャッシュラインアドレス204として含める。このメッセージは、このメッセージをプロセッサ118に対してSNP要求202Aとして識別するTLPヘッダ206をも含む。プロセッサ118がSNP要求202Aを受け取る時に、プロセッサ118は、SNP要求202Aを解析し、キャッシュラインアドレス204を抽出する。次に、プロセッサ118は、下で図3A〜3Cでより詳細に説明するように、キャッシュ120内の指定されたキャッシュラインに関連するタグを調べ、動作のシーケンスを実行する。SNP要求202Aは非ポスト書込みなので、プロセッサ112は、SNP要求202Aに応答してCPLメッセージ208Aがプロセッサ118によって返されることを待機する。したがって、プロセッサ118は、SNP要求202Aに応答してCPL 208Aを送るように構成される。
[0029]図2Bは、本発明の一実施形態による、SNPトランザクションに関連するパケットの第2実施形態を示す概念図である。図示されているように、図2Bには、トランザクションレイヤ104を介して移動するSNP要求202B及びCPLメッセージ208Bが示されている。一実施形態では、SNP要求202B及びCPLメッセージ208Bは、トランザクションレイヤ104を介して同時には移動しない。SNP要求202Bは、キャッシュラインアドレス204及びベンダ定義メッセージ(VDM)ヘッダ210を含む。CPLメッセージ208Bは、VDMヘッダ210及びSNP CPL 214を含む。SNP要求202B及びCPLメッセージ208Bは、両方ともVDMであり、PCIe標準プロトコルには含まれない。プロセッサ112は、SNP要求202A及びSNP要求202Bを類似する形で使用して、SNPトランザクションを開始する。プロセッサ118は、CPL 208Aメッセージ及びCPL 208Bメッセージを類似する形で使用して、SNPトランザクションが完了したことを示す。
[0030]プロセッサ112がSNP要求202Bをプロセッサ118に送る時に、プロセッサ118は、キャッシュ120に格納されたオリジナルデータの状態に応じて、プロセッサ112にCPLメッセージ208Bを返すことができる。プロセッサ112がCPLメッセージ208Bを受け取る時に、プロセッサ112は、CPLメッセージ208Bを解析し、キャッシングされたデータが有効であるかどうかを判定するためにSNP CPL 214を抽出する。次に、プロセッサ112は、データが有効と判定される場合に、ローカルメモリ110に格納された要求されたデータを読み取ることができる。
[0031]図3A、3B、及び3Cに、それぞれ、本発明の一実施形態による、第1、第2、及び第3のSNPトランザクションを示す。第1、第2、及び第3のSNPトランザクションのそれぞれは、プロセッサ112によって実行される命令(たとえば、ドライバ)が、プロセッサ112に、正しい結果を得るためにこれらの命令の実行の一部としてSNP要求を生成させる時に発生し得る。それに応答して、プロセッサ118は、SNP要求内でアドレッシングされたキャッシュライン内に格納されたデータを調べ、プロセッサ118は、CPLメッセージを返させる。図3Aに示された第1のSNPトランザクションは、キャッシュラインが「排他」又は「共有」とマークされている時に発生する。図3Bに示された第2のSNPトランザクションは、キャッシュラインが「変更済み」とマークされている時に発生する。図3Cに示された第3のSNPトランザクションは、キャッシュラインが「無効」とマークされている時に発生する。本明細書で使用される時に、キャッシュラインは、そのキャッシュラインが任意の状態のキャッシュに存在する時に「有効」と考えられる。通常実施されるキャッシュ状態は、キャッシュラインがキャッシュ内に存在しないことを意味する「無効」、キャッシュラインがキャッシュ内に存在し、メモリ内のコピーと同一の値を有し、他のキャッシュがコピーを有しないことを意味する「排他」、キャッシュラインがキャッシュ内に存在し、メモリ内のコピーと同一の値を有し、別のキャッシュもコピーを有することを意味する「共有」、及びキャッシュラインが存在し、メモリ内とは異なる値を有することを意味する「変更済み」である。
[0032]各SNPトランザクションは、プロセッサ112がプロセッサ118にSNP要求を送る時に開始される。一実施形態では、SNP要求は、SNP要求202Aである。代替実施形態では、SNP要求は、SNP要求202Bである。
[0033]図3Aは、本発明の一実施形態による、第1のSNPトランザクションを実施するように構成されたコンピュータシステム300Aを示す。図示されているように、コンピュータシステム300Aは、図1に示されたものと同一のコンポーネントを含む。さらに、キャッシュ120内のキャッシュラインが「排他」又は「共有」とマークされている時に発生する処理ステップを示す順次処理レグが、境界線を描かれている。第1のSNPトランザクションを、プロセッサ112がレグ301に沿ってプロセッサ118にSNP要求を送る時に開始することができる。プロセッサ118は、SNP要求を受け取り、SNP要求を解析する。プロセッサ118は、SNP要求からキャッシュラインアドレス204(この図には図示せず)を抽出する。プロセッサ118は、レグ303に沿ってキャッシュ120内の指定されたキャッシュラインにアクセスし、指定されたキャッシュラインに関連するタグを調べる。
[0034]データが「排他」又は「共有」とマークされている場合に、プロセッサ118は、レグ305に沿ったプロセッサ112へのCPLメッセージの送出を引き起こす。さらに、キャッシュラインの状態が、「無効」に変更される(すなわち、キャッシュラインがキャッシュから除去される)。キャッシュラインの除去は、プロセッサ118が、プロセッサ112がキャッシュラインを変更した後にキャッシュ120からのキャッシュラインの「古い」コピーを使用しないことを保証する。CPLメッセージは、SNPトランザクションが完了し、ローカルメモリ110に格納されたデータが正しいバージョンであることをプロセッサ112に示す。したがって、プロセッサ112は、ローカルメモリ110に格納されたデータを使用して、処理動作を実行することができる。プロセッサ112がCPLメッセージを受け取る時に、プロセッサ112は、ローカルメモリ110からデータを読み取る。
[0035]図3Bは、本発明の一実施形態による、第2のSNPトランザクションを実施するように構成されたコンピュータシステム300Bを示す。図示されているように、コンピュータシステム300Bは、図1に示されたものと同一のコンポーネントを含む。さらに、キャッシュ120内のキャッシュラインが「変更済み」とマークされている時に発生する処理ステップを示す順次処理レグが、境界線を描かれている。第2のSNPトランザクションは、図3Aで説明したものに実質的に類似するいくつかのステップを含む。しかし、第2のSNPトランザクションは、指定されたキャッシュラインの検査から、データが「変更済み」とマークされていると判定されるときに、異なる形で進行する。
[0036]データが「変更済み」とマークされている場合に、プロセッサ118は、レグ309に沿って、キャッシュ120の指定されたキャッシュラインに格納されたデータをプロセッサ112に送る。次に、プロセッサ112は、ローカルメモリ110に格納されたデータの対応するコピーを上書きし、したがってデータの最新バージョンを反映するようにローカルメモリ110を更新することによって、受け取られたデータをローカルメモリ110に書き込む。プロセッサ112がデータの書込みを終了する時に、プロセッサ118は、プロセッサ112から書込み完了を受け取る(図示せず)。一実施形態では、書込み完了は、データがローカルメモリ110に成功して書き込まれたことを示すCPLメッセージである。次に、プロセッサ118は、レグ305に沿って、CPLメッセージをプロセッサ112に送る。このCPLメッセージは、SNPトランザクションが完了したことと、ローカルメモリ110に格納されたデータが正しいこととをプロセッサ112に示す。したがって、プロセッサ112は、ローカルメモリ110に格納されたデータを使用して、処理動作を実行することができる。プロセッサ112がCPLメッセージを受け取る時に、プロセッサ112は、ローカルメモリ110からデータを読み取ることができる。
[0037]図3Cは、本発明の一実施形態による、第3のSNPトランザクションを実施するように構成されたコンピュータシステム300Cを示す。図示されているように、コンピュータシステム300Cは、図1に示されたものと同一のコンポーネントを含む。さらに、キャッシュ120内のキャッシュラインが「無効」とマークされている時に発生する処理ステップを示す順次処理レグが、境界線を描かれている。第3のSNPトランザクションは、図3A及び3Bで説明したものに実質的に類似するいくつかのステップを含む。しかし、第3のSNPトランザクションは、指定されたキャッシュラインの検査から、データが「無効」とマークされていると判定されるときに、異なる形で進行する。
[0038]第3のSNPトランザクションを、プロセッサ112がレグ301に沿ってSNP要求をプロセッサ118に送る時に開始することができる。プロセッサ118は、指定されたキャッシュラインを調べ、データが無効とマークされていると判定する(図示せず)。次に、プロセッサ118は、ローカルメモリ110に格納されたデータがそのデータの最も最近に格納された及び/又は変更されたバージョンであることを示すCPLメッセージをプロセッサ112に送らせる。
[0039]さらに、プロセッサ112は、ローカルメモリ110に格納されたデータを必要とし、したがって、プロセッサ118へのSNP要求を発行し、それと一致して、プロセッサ118は、ローカルメモリ110内の同一のデータをターゲットとする読取り要求を発行する。プロセッサ118によって発行された読取り要求は、プロセッサ112がSNP要求を発行した後だが、そのSNP要求がプロセッサ118に到着する前に、プロセッサ112によって受け取られる。その場合に、従来のシステムを使用すると、プロセッサ112は、SNP要求に応答してCPLメッセージが返されるのを待ち、プロセッサ118は、読取り要求が完了するまでCPLメッセージを発行しない。これらの従来のシステムでは、プロセッサ112は、読取り要求にサービスする前にCPLメッセージを待ち、プロセッサ118は、CPLメッセージを発行する前に読取り要求データを待つ。この問題のある状況は、「デッドロック」として知られている。
[0040]もう1つの問題のある状況は、標準PCIeオーダリングルールが、読取り要求がCPLメッセージを渡すことを許容するので、従来のシステムを使用する時に発生し得る。プロセッサ118が、読取り要求を発行する前にCPLメッセージを発行する場合に、その読取り要求は、CPLメッセージの前にプロセッサ112に到着する可能性がある。プロセッサ118は、やはり、プロセッサ112が読取り要求のデータを返す時に、キャッシュ120内にローカルメモリ110からのデータのコピーを有する。次に、プロセッサ112は、別のSNP要求を発行する必要があり、このサイクルが、おそらくは無限に、それ自体を繰り返す。この状況は、「ライブロック」として知られている。
[0041]本発明の実施形態は、プロセッサ118がキャッシュ120内にデータのコピーを有する場合に、読取り要求がキャッシュ120によってサービスされ、読取り要求が絶対にプロセッサ112に送られないことに注意することによって、可能なデッドロック及びライブロックの問題を防ぐ。その結果、プロセッサ112が、未解決のSNP要求を有するメモリ位置に関する読取り要求を受け取る(すなわち、CPLメッセージがSNP要求に応答して受け取られていない)場合に、プロセッサ112は、トランザクションがプロセッサ118で発行された順序(たとえば、読取り要求とその後のSNP要求、又はSNP要求とその後の読取り要求)とは無関係に、データのコピーがキャッシュ120内で見つからなかったことをプロセッサ118が示したかのように応答する。したがって、プロセッサ112は、ローカルメモリ位置を安全に使用し、及び/又は変更することができ、その後、読取り要求にサービスするためにこのデータを返すことができる。したがって、プロセッサ112は、「順方向進行」を行っており、現在参照されているデータに関するSNP要求を再発行する必要がなく(すなわち、可能なライブロックを防ぐ)、プロセッサ112は、SNP要求に関連するCPLメッセージを受け取る前に読取り要求に関連するデータを返すことができる(すなわち、可能なデッドロックを防ぐ)。SNP要求に関するCPLメッセージは、それでも、プロセッサ112によって返されるが、一実施形態では、プロセッサ112は、ローカルメモリ110に格納されたデータが正しいことをプロセッサ118からの読取り要求の受取に基づいて既に判定しているので、このCPLメッセージを無視する。
[0042]図4は、本発明の一実施形態による、PCIeバス上のSNPトランザクションを実施する方法ステップの流れ図である。当業者は、方法400が、図1〜3Cのシステムに関連して説明されるが、この方法ステップを任意の順序で実行するように構成された任意のシステムが、本発明の範囲に含まれることを理解するであろう。
[0043]図示されているように、方法400は、ステップ402で開始され、ここで、プロセッサ112が、SNP要求を生成する。一実施形態では、プロセッサ112によって実行されるドライバが、プロセッサ112にデータを使用するように指示し、この指示が、プロセッサ112に、コヒーレンシを保証するためにSNP要求を生成させる。たとえば、プロセッサ112は、処理動作を実行するためにローカルメモリ110に格納されたデータを使用することを試みている場合があり、ここで、データのキャッシングされたコピーが、プロセッサ118に関連するキャッシュ120に格納されている。SNP要求は、プロセッサ112がローカルメモリ110とキャッシュ120との間でコヒーレンシを維持することを可能にするSNPトランザクションを開始するために発行される。プロセッサ112が、SNP要求を生成する時に、プロセッサ112は、下で図5でより詳細に説明するように、要求されるデータが格納された、キャッシュ内のキャッシュラインを示すアドレスを含む。SNP要求は、それぞれ図2A及び2Bで説明した、SNP要求202A又はSNP要求202Bとすることができる。
[0044]ステップ404で、プロセッサ112は、PCIeバス102を介するプロセッサ118へのSNP要求の送出を引き起こす。SNP要求は、PCIeバス102のトランザクションレイヤ104を介して移動する。ステップ406で、プロセッサ118は、SNP要求を受け取り、SNP要求からキャッシュラインアドレス204を抽出する。プロセッサ118は、キャッシュラインアドレス204によって識別されるキャッシュラインを調べ、そのキャッシュラインに関連するタグを抽出する。このタグは、キャッシュラインに格納されたデータの状態を示す。
[0045]ステップ408で、プロセッサ118は、キャッシュラインが「排他」又は「共有」とマークされているかどうかを判定する。キャッシュラインが「排他」又は「共有」とマークされている場合には、キャッシュ120に格納されたデータがローカルメモリ110に格納されたデータと同一なので、キャッシュ120とローカルメモリ110との間でキャッシュコヒーレンシを確立するためにアクションは不要である。方法400は、ステップ410に進み、ここで、プロセッサ118は、キャッシュラインを「無効」としてマークする。したがって、キャッシュラインの状態は、「無効」に変更される(すなわち、キャッシュラインがキャッシュから除去される)。キャッシュラインの除去は、プロセッサ118が、プロセッサ112がキャッシュラインを変更した後にキャッシュ120からのキャッシュラインの古いコピーを使用しないことを保証する。
[0046]次に、方法400は、ステップ412に進み、ここで、プロセッサ118は、CPLメッセージを生成する。CPLメッセージは、それぞれ図2A及び2Bで説明したCPLメッセージ208A又はCPLメッセージ208Bとすることができる。
[0047]ステップ414で、プロセッサ118は、ローカルメモリ110に格納されたデータがキャッシュ120に格納されたオリジナルデータとコヒーレントであり、及び/又は正しいことを示すために、プロセッサ112へのCPLメッセージの送出を引き起こす。ステップ416で、プロセッサ112は、ローカルメモリ110からデータを読み取り、この方法は終了する。
[0048]戻ってステップ408を参照すると、プロセッサ118が、キャッシュラインが「排他」又は「共有」とマークされてはいないと判定する場合に、この方法は、ステップ418に進み、そこで、プロセッサ118は、キャッシュラインが「変更済み」としてマークされているかどうかを判定する。キャッシュラインは、ローカルメモリ110に格納されたデータに対して相対的にキャッシュ120に格納されたデータの値を変更した処理動作をプロセッサ118が実行した時に、変更済みとマークされる可能性がある。プロセッサ118が、ステップ418で、キャッシュラインが「変更済み」とマークされていると判定する場合には、この方法はステップ420に進み、そこで、プロセッサ118は、変更されたデータをローカルメモリ110に書き込む。その後、この方法はステップ410に進み、このステップは、本明細書で前に説明したものである。
[0049]ステップ418で、キャッシュラインが「変更済み」とマークされていない場合には、方法400は、ステップ412に進み、このステップは、本明細書で前に説明したものである。キャッシュラインが「排他」でも「共有」でもなく(ステップ408)、キャッシュラインが「変更済み」ではない場合に、キャッシュラインは、「無効」であり、プロセッサ118は、キャッシュ120とローカルメモリ110との間でキャッシュコヒーレンシを確立するためにアクションが必要ではないので、CPLメッセージを生成する。
[0050]さらに、図3Cで説明したように、プロセッサ118は、SNP要求に関連するメモリ位置に対応するローカルメモリ110内のメモリ位置に関する読取り要求を発行することができる。そのようなシナリオでは、プロセッサ112は、読取り要求を受け取り、SNP要求に応答してプロセッサ118から受け取られるCPLメッセージを無視し、ローカルメモリに格納されたデータを使用して動作を実行し(おそらくはそのデータを変更する)、その後、プロセッサ118に対して読取り要求をサービスする。したがって、プロセッサ112は、「順方向進行」を行っており、現在の参照に関するSNP要求を再発行する必要がなく(すなわち、可能なライブロックを防ぐ)、プロセッサ112は、おそらくはSNP要求に関するCPLメッセージを受け取る前に、読取り要求に関するデータを返すことができる(すなわち、可能なデッドロックを防ぐ)。SNP要求に関するCPLメッセージは、それでも、プロセッサ112によって返されるが、一実施形態では、プロセッサ112は、ローカルメモリ110に格納されたデータが正しいことをプロセッサ118からの読取り要求の受取に基づいて既に判定しているので、このCPLメッセージを無視する。
[0051]図5は、本発明の一実施形態による、PCIeバス上の送出に関するSNP要求を生成する方法ステップの流れ図である。当業者は、方法500が図1〜4のシステム及び方法に関連して説明されるが、この方法ステップを任意の順序で実行するように構成された任意のシステムが、本発明の範囲に含まれることを理解するであろう。
[0052]図示されているように、方法500はステップ502で開始され、ここで、プロセッサ112は、SNP要求ヘッダを生成する。ステップ504で、プロセッサ112は、SNP要求ヘッダをブランクパケットに追加する。一実施形態では、SNP要求は、SNP要求202Aであり、SNP要求ヘッダは、TLPヘッダ206である。TLPヘッダ206は、メッセージをプロセッサ118へのSNP要求202Aとして識別する。代替実施形態では、SNP要求は、SNP要求202Bであり、SNP要求ヘッダは、VDMヘッダ210である。VDMヘッダ210は、メッセージをプロセッサ118へのSNP要求202Bとして識別する。
[0053]ステップ506で、プロセッサ112は、宛先情報をパケットに追加する。この宛先情報は、プロセッサ118をSNP要求の所期の受取り側として識別する。PCIeバスは、宛先情報に従ってSNP要求をプロセッサ118にルーティングするロジックを含む。ステップ508で、プロセッサ112は、「スヌープされる」キャッシュ120のキャッシュラインアドレスをSNP要求に追加する。このキャッシュラインアドレスは、キャッシュ120内のオリジナルデータの位置を示す。
[0054]図6は、本発明の一実施形態による、PCIeバス上の送出に関するCPLメッセージを生成する方法ステップを示す流れ図である。当業者は、方法600が図1〜4のシステム及び方法に関連して説明されるが、この方法ステップを任意の順序で実行するように構成された任意のシステムが、本発明の範囲に含まれることを理解するであろう。
[0055]図示されているように、方法600は、ステップ602で開始され、ここで、プロセッサ118は、CPLメッセージヘッダを生成する。プロセッサ118は、SNP要求を受け取り済みである場合があり、ローカルメモリ110又はキャッシュ120のいずれかを更新するために上で図3A〜3Cで説明したアクションを実行済みである場合がある。これらのアクションが完了し、ローカルメモリ110がデータの最新バージョンを格納した後に、プロセッサ118は、プロセッサ112によって受け取られた時にSNPトランザクションを完了するCPLメッセージを生成する必要がある可能性がある。
[0056]ステップ604で、プロセッサ118は、CPLメッセージヘッダをブランクパケットに追加する。一実施形態では、CPLメッセージは、CPLメッセージ208Aである。代替実施形態では、CPLメッセージは、CPLメッセージ208Bであり、CPLメッセージヘッダは、VDMヘッダ212である。VDMヘッダ212は、プロセッサ112に対してCPLメッセージ208Bを識別する。
[0057]ステップ506で、プロセッサ118は、完了状況をCPLメッセージに追加する。一実施形態では、完了状況は、読取り完了通知である。代替実施形態では、完了状況は、アクションが行われなかったことを示す。第3の実施形態では、完了状況はブランクである。ステップ608で、プロセッサ118は、宛先情報をパケットに追加する。宛先情報は、プロセッサ112をCPLメッセージの初期の受取り側として識別する。PCIeバスは、宛先情報に従ってCPLメッセージをプロセッサ112にルーティングするロジックを含む。プロセッサ112がCPLメッセージを受け取る時に、SNPトランザクションは完了し、ローカルメモリ110は、キャッシュ120とコヒーレントである。
[0058]要約すると、本発明の実施形態は、PCIeバス上の「スヌープ」(SNP)トランザクションを実行する技法を提供する。SNPトランザクションは、SNP要求及び「完了」CPLメッセージを使用して実施される。第1プロセッサが、PCIeバスを介して受け取られたデータをローカルメモリユニットに格納する時に、第1プロセッサは、そのデータがコヒーレントであるかどうかを判定するためにSNP要求を使用してデータのソースをチェックし、コヒーレントでない場合には更新されたバージョンを入手する。オリジナルデータのソースが、第2プロセッサに関連するキャッシュである時には、第1プロセッサは、キャッシュへのキャッシュラインアドレスを含むSNP要求を生成する。このキャッシュラインアドレスは、オリジナルデータが格納された、キャッシュのキャッシュラインを示す。第1プロセッサは、第2プロセッサへのSNP要求の送出を引き起こす。第2プロセッサがSNP要求を受け取る時に、第2プロセッサは、キャッシュラインアドレスを解析し、そのキャッシュラインに関連するタグを取り出す。
[0059]タグが、キャッシュラインが「排他」又は「共有」であることを示す時に、第2プロセッサは、PCIeバスを介する第1プロセッサへの「完了」(CPL)メッセージの送出を引き起こす。CPLメッセージは、ローカルメモリユニットに格納されたデータが有効であり、処理動作を実行する時に使用できることを第1プロセッサに知らせる。その後、第1プロセッサは、ローカルメモリユニットからデータを取り出すことができる。
[0060]タグが、キャッシュラインが「変更済み」であることを示す時に、第2プロセッサは、変更されたデータをキャッシュから取り出し、そのデータをローカルメモリユニットに書き込む。第2プロセッサは、CPLメッセージを第1プロセッサに送り、その後、第1プロセッサは、要求されたデータを第1キャッシュから取り出すことができる。
[0061]タグが、キャッシュラインが「無効」であることを示す時には、第2プロセッサは、CPLメッセージを発行し、第1プロセッサが要求されたデータをローカルメモリユニットから安全に取り出せることを第1プロセッサに知らせる。
[0062]本発明のさらなる実施形態は、介在する読取り要求が同一メモリ位置にアクセスするために第2プロセッサから受け取られる時に、第1プロセッサに、SNP要求に応答して受け取られるCPLメッセージを無視させることによって、可能なデッドロック状況及びライブロック状況を回避する技法を提供する。
[0063]さらに、SNP要求を、トランザクションレイヤパケット(TLP)又はベンダ定義メッセージ(VDM)としてPCIe標準プロトコル内に定義することができる。SNP要求がTLPとして定義される時に、SNP要求は、TLPヘッダ及び調べられるキャッシュラインのアドレスを含む。その後、CPLメッセージが送られ、SNPトランザクションが完了したことを示す。SNP要求がVDMとして定義される時には、SNP要求は、VDMヘッダ及び調べられるキャッシュラインのアドレスを含む。データペイロード内に「完了」通知を含む第2VDMも定義される。第2VDMは、SNPトランザクションが完了した後に送られる。
[0064]有利なことに、第1プロセッサは、データがPCIeバスを介して受け取られ、第2プロセッサによってキャッシングされる時に、ローカルメモリユニットにデータを格納することができる。第1プロセッサは、データが第2プロセッサによってキャッシングされたデータとコヒーレントであることを保証するのに、SNP要求を使用する。さらなる利益は、PCIeバス上で送られるデータを、「キャッシング可能」としてマークすることができ、このデータを受け取るプロセッサがプログラム命令の実行をシリアライズする必要がなくなることである。したがって、PCIeバスを介して受け取られるデータを用いて動作を実行する時に、プロセッサ速度を大きく改善することができる。
[0065]前述は、本発明の実施形態を対象とするが、本発明の他の及びさらなる実施形態を、本発明の基本的な範囲から逸脱せずに考案することができる。たとえば、本発明の諸態様を、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組合せで実施することができる。本発明の一実施形態を、コンピュータシステムと共に使用されるプログラム製品として実施することができる。プログラム製品のプログラム(複数可)は、実施形態(本明細書で説明した方法を含む)の機能を定義し、さまざまなコンピュータ可読記憶媒体に含めることができる。例示的なコンピュータ可読記憶媒体は、(i)情報が永久的に格納される書込み不能記憶媒体(たとえば、CD−ROMドライブによって読取り可能なCD−ROMディスク、フラッシュメモリ、ROMチップ、又は任意のタイプのソリッドステート不揮発性半導体メモリなど、コンピュータ内の読取り専用メモリデバイス)、及び(ii)変更可能な情報が格納される書込み可能記憶媒体(たとえば、ディスケットドライブ内のフロッピディスク、ハードディスクドライブ、又は任意のタイプのソリッドステートランダムアクセス半導体メモリ)を含むが、これらに限定はされない。そのようなコンピュータ可読記憶媒体は、本発明の機能を指示するコンピュータ可読命令を担持する時に、本発明の実施形態である。したがって、本発明の範囲は、添付の特許請求の範囲によって決定される。
100 コンピューティングシステム
102 peripheral component interface express(PCIe)バス
104 トランザクションレイヤ
106 リンクレイヤ
108 物理レイヤ
110 ローカルメモリ
111 メモリコントローラ
112 プロセッサ
114 システムメモリ
115 ソフトウェアドライバ
116 メモリコントローラ
118 プロセッサ
120 キャッシュ
130 スヌープ経路
202A SNP要求
202B SNP要求
204 キャッシュラインアドレス
206 トランザクションレイヤパケット(TLP)ヘッダ
208A CPLメッセージ
208B CPLメッセージ
210 ベンダ定義メッセージ(VDM)ヘッダ
214 SNP CPL
300A コンピュータシステム
300B コンピュータシステム
300C コンピュータシステム
301 レグ
303 レグ
305 レグ
309 レグ
400 方法
500 方法
600 方法

Claims (8)

  1. 第1プロセッサと、
    前記第1プロセッサに関連するローカルメモリと、
    第2プロセッサと、
    第2プロセッサに関連するデータキャッシュと、
    前記第1プロセッサと前記第2プロセッサとの間でメッセージをルーティングするように構成された直列インターフェースバスと
    を備える、メモリに格納されたデータが有効であるかどうかを判定するコンピュータシステムであって、
    前記第1プロセッサが、
    ・前記ローカルメモリに格納された第1データが前記データキャッシュに格納された第2データに対して相対的にコヒーレントであるかどうかを判定するように構成されたスヌープ要求であって、
    前記直列インターフェースバス上の前記データキャッシュを識別する宛先情報と、
    前記データキャッシュ内で前記第2データが配置される場所を識別するキャッシュラインアドレスと
    を含むスヌープ要求を生成し、
    ・前記データキャッシュを識別する前記宛先情報に基づいて、前記スヌープ要求を前記直列インターフェースバスを介して前記第2プロセッサに送り、
    ・前記ローカルメモリに格納された前記第1データを使用して処理動作を実行する
    ように構成され、
    前記第2プロセッサが、
    ・前記スヌープ要求から前記キャッシュラインアドレスを抽出し、
    ・前記データキャッシュ内で前記キャッシュラインアドレスに格納された前記第2データが前記第1データに対して相対的にコヒーレントであるかどうかを判定し、
    ・前記直列インターフェースバス上で前記ローカルメモリを識別する宛先情報と、
    前記第1データが前記第2データに対して相対的にコヒーレントであることを示す完了情報と
    を含む完了(CPL)メッセージを生成し、
    ・前記ローカルメモリを識別する前記宛先情報に基づいて、前記CPLメッセージを前記直列インターフェースバスを介して前記第1プロセッサに送る
    ように構成され、
    前記第2プロセッサが、さらに、読取り要求を前記直列インターフェースバスを介して前記第2プロセッサから前記第1プロセッサに送るように構成され、前記読取り要求が、前記ローカルメモリに格納された前記第1データを読み取る要求であり、
    前記第1プロセッサが、さらに、
    ・前記第2プロセッサから受け取られる前記CPLメッセージを無視し、
    ・前記処理動作を実行した後に、前記直列インターフェースバスを介する前記第2プロセッサへの前記第1データの送信を行わせることによって前記読取り要求にサービスし、前記第1データが、前記実行される処理動作によって変更される
    ように構成されている、コンピュータシステム。
  2. 前記スヌープ要求が、非ポストトランザクションであり、前記第1プロセッサは、前記スヌープ要求に応答して前記第2プロセッサからメッセージを受け取ることを待機する、請求項1に記載のコンピュータシステム。
  3. 前記スヌープ要求が、前記データキャッシュを識別する前記宛先情報を含むベンダ定義ヘッダを有するベンダ定義メッセージである、請求項1に記載のコンピュータシステム。
  4. 前記データキャッシュ内で前記キャッシュラインアドレスに格納された前記第2データがコヒーレントであるかどうかの前記判定が、前記第1データに対する相対的な前記第2データの状態を判定するために前記キャッシュラインアドレスに関連するキャッシュラインタグを調べることを含む、請求項1に記載のコンピュータシステム。
  5. 前記第2プロセッサが、さらに、
    ・前記データキャッシュ内で前記キャッシュラインアドレスに格納された前記第2データが変更されたことを判定し、
    ・前記第2データを前記ローカルメモリに送り、
    ・前記第2データを前記ローカルメモリに書き込ませ、
    ・前記キャッシュラインアドレスに対応するキャッシュラインが無効であることを示すために前記キャッシュラインアドレスに関連する前記キャッシュラインタグを変更する
    ように構成されている、請求項4に記載のコンピュータシステム。
  6. メモリに格納されたデータを使用して処理動作を実行する方法であって、
    ・第1プロセッサに結合されたローカルメモリに格納された第1データが第2プロセッサに結合されたデータキャッシュに格納された第2データに対して相対的にコヒーレントであるかどうかを判定するように構成されたスヌープ要求であって、
    直列インターフェースバス上の前記データキャッシュを識別する宛先情報と、
    前記データキャッシュ内で前記第2データが配置される場所を識別するキャッシュラインアドレスと
    を含むスヌープ要求を生成するステップと、
    ・前記データキャッシュを識別する前記宛先情報に基づいて、前記スヌープ要求を前記直列インターフェースバスを介して前記第2プロセッサに送るステップと、
    ・前記スヌープ要求から前記キャッシュラインアドレスを抽出するステップと、
    ・前記データキャッシュ内で前記キャッシュラインアドレスに格納された前記第2データが前記ローカルメモリに格納された前記第1データに対して相対的にコヒーレントであるかどうかを判定するステップと、
    ・前記直列インターフェースバス上で前記ローカルメモリを識別する宛先情報と、
    前記第1データが前記第2データに対して相対的にコヒーレントであることを示す完了情報と
    を含む完了(CPL)メッセージを生成するステップと、
    ・前記ローカルメモリを識別する前記宛先情報に基づいて、前記CPLメッセージを前記直列インターフェースバスを介して前記第1プロセッサに送るステップと、
    ・前記ローカルメモリに格納された前記第1データを使用して処理動作を前記第1プロセッサ上で実行するステップと
    を含み、
    読取り要求を前記第2プロセッサから前記直列インターフェースバスを介して前記第1プロセッサに送るステップであって、前記読取り要求が、前記ローカルメモリに格納された前記第1データを読み取る要求を含む、ステップと、
    前記第1プロセッサで、前記第2プロセッサから受け取られる前記CPLメッセージを無視するステップと、
    前記処理動作が前記第1プロセッサ上で実行された後に、前記直列インターフェースバスを介する前記第2プロセッサへの前記第1データの送信を行うことによって前記読取り要求にサービスするステップであって、前記第1データが、前記実行される処理動作によって変更される、ステップと
    をさらに含む、方法。
  7. 判定する前記ステップが、前記キャッシュラインアドレスに関連するキャッシュラインタグを調べて、前記第1データに対する相対的な前記第2データの状態を判定するステップを含む、請求項6に記載の方法。
  8. 前記データキャッシュ内で前記キャッシュラインアドレスに格納された前記第2データが変更されたことを判定するステップと、
    前記第2データを前記ローカルメモリに送るステップと、
    前記第2データを前記ローカルメモリに書き込むステップと、
    前記キャッシュラインアドレスに関連する前記キャッシュラインタグを変更して、前記キャッシュラインアドレスに対応するキャッシュラインが無効であることを示すステップと
    をさらに含む、請求項7に記載の方法。
JP2009279506A 2008-12-09 2009-12-09 直列インターフェースバスにまたがってキャッシュコヒーレンシを維持するシステム及び方法 Active JP5146844B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/331,302 2008-12-09
US12/331,302 US8234458B2 (en) 2008-12-09 2008-12-09 System and method for maintaining cache coherency across a serial interface bus using a snoop request and complete message

Publications (2)

Publication Number Publication Date
JP2010140485A JP2010140485A (ja) 2010-06-24
JP5146844B2 true JP5146844B2 (ja) 2013-02-20

Family

ID=42232360

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009279506A Active JP5146844B2 (ja) 2008-12-09 2009-12-09 直列インターフェースバスにまたがってキャッシュコヒーレンシを維持するシステム及び方法

Country Status (4)

Country Link
US (2) US8234458B2 (ja)
JP (1) JP5146844B2 (ja)
KR (1) KR101107391B1 (ja)
CN (1) CN101751370B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8751714B2 (en) * 2010-09-24 2014-06-10 Intel Corporation Implementing quickpath interconnect protocol over a PCIe interface
JPWO2012124431A1 (ja) * 2011-03-17 2014-07-17 ルネサスエレクトロニクス株式会社 半導体装置
US11144580B1 (en) * 2013-06-16 2021-10-12 Imperva, Inc. Columnar storage and processing of unstructured data
US10846223B2 (en) * 2017-10-19 2020-11-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Cache coherency between a device and a processor
US11477049B2 (en) * 2018-08-02 2022-10-18 Xilinx, Inc. Logical transport over a fixed PCIE physical transport network
US11210246B2 (en) * 2018-08-24 2021-12-28 Advanced Micro Devices, Inc. Probe interrupt delivery
US10769071B2 (en) * 2018-10-10 2020-09-08 Micron Technology, Inc. Coherent memory access
CN109617832B (zh) * 2019-01-31 2022-07-08 新华三技术有限公司合肥分公司 报文缓存方法及装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09223115A (ja) * 1996-02-19 1997-08-26 Canon Inc 情報処理装置及びシステム及びその制御方法
JP3849951B2 (ja) * 1997-02-27 2006-11-22 株式会社日立製作所 主記憶共有型マルチプロセッサ
US6292872B1 (en) 1998-02-17 2001-09-18 International Business Machines Corporation Cache coherency protocol having hovering (H) and recent (R) states
US20020053004A1 (en) * 1999-11-19 2002-05-02 Fong Pong Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links
US7644237B1 (en) * 2003-06-23 2010-01-05 Mips Technologies, Inc. Method and apparatus for global ordering to insure latency independent coherence
US7698509B1 (en) * 2004-07-13 2010-04-13 Oracle America, Inc. Snooping-based cache-coherence filter for a point-to-point connected multiprocessing node
US7360027B2 (en) 2004-10-15 2008-04-15 Intel Corporation Method and apparatus for initiating CPU data prefetches by an external agent
US7543115B1 (en) * 2006-01-11 2009-06-02 Intel Corporation Two-hop source snoop based cache coherence protocol
US7571286B2 (en) * 2006-08-24 2009-08-04 International Business Machines Corporation Reduced memory traffic via detection and tracking of temporally silent stores
US7836144B2 (en) * 2006-12-29 2010-11-16 Intel Corporation System and method for a 3-hop cache coherency protocol
US7861024B2 (en) * 2008-09-30 2010-12-28 Intel Corporation Providing a set aside mechanism for posted interrupt transactions

Also Published As

Publication number Publication date
US8234458B2 (en) 2012-07-31
KR101107391B1 (ko) 2012-01-19
KR20100066410A (ko) 2010-06-17
US20100146218A1 (en) 2010-06-10
US8782349B2 (en) 2014-07-15
CN101751370A (zh) 2010-06-23
JP2010140485A (ja) 2010-06-24
US20120290796A1 (en) 2012-11-15
CN101751370B (zh) 2013-11-20

Similar Documents

Publication Publication Date Title
JP5146844B2 (ja) 直列インターフェースバスにまたがってキャッシュコヒーレンシを維持するシステム及び方法
US7600080B1 (en) Avoiding deadlocks in a multiprocessor system
US20160224467A1 (en) Hierarchical cache structure and handling thereof
US11714754B2 (en) Shadow caches for level 2 cache controller
JP2008027435A (ja) 排他的所有権のスヌープフィルタ
US20080109609A1 (en) Mechanisms and methods of cache coherence in network-based multiprocessor systems with ring-based snoop response collection
US7685373B2 (en) Selective snooping by snoop masters to locate updated data
US7519780B2 (en) System and method for reducing store latency in symmetrical multiprocessor systems
US20070073977A1 (en) Early global observation point for a uniprocessor system
CN112612725A (zh) 用于处理缓存维护操作的装置和方法
WO2012040741A2 (en) Optimized ring protocols and techniques
JP2007080266A (ja) 方法、データ処理システム、メモリ・コントローラ(i/o書込みオペレーションのパイプライン化および多重オペレーション範囲を可能にするデータ処理システムおよび方法)
JP2023544538A (ja) キャッシュライン追い出しのためのマルチレベルキャッシュコヒーレンシプロトコル

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120403

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121004

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121115

R150 Certificate of patent or registration of utility model

Ref document number: 5146844

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20151207

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