(57)【要約】【課題】メモリに格納されたデータを使用して処理動作を実行する方法を提供すること。【解決手段】この方法は、ローカルメモリに格納された第１データがデータキャッシュに格納された第２データに対して相対的にコヒーレントであるかどうかを判定するように構成されたスヌープ要求であって、バス上のデータキャッシュを識別する宛先情報と、データキャッシュ内で第２データが配置される場所を識別するキャッシュラインアドレスとを含むスヌープ要求を生成するステップと、スヌープ要求の、バスを介しての第２プロセッサへの送信ステップと、スヌープ要求からキャッシュラインアドレスの抽出ステップと、第２データがコヒーレントであるかの判定ステップと、完了情報を含む完了メッセージを生成するステップと、完了メッセージの、バスを介しての第１プロセッサへの送信ステップとを含む。【選択図】図４
2010140485.tif 000002
【特許請求の範囲】
【請求項１】
第１プロセッサと、
前記第１プロセッサに関連するローカルメモリと、
第２プロセッサと、
第２プロセッサに関連するデータキャッシュと、
前記第１プロセッサと前記第２プロセッサとの間でメッセージをルーティングするように構成された直列インターフェースバスと
を備える、メモリに格納されたデータが有効であるかどうかを判定するコンピュータシステムであって、
前記第１プロセッサが、
・前記ローカルメモリに格納された第１データが前記データキャッシュに格納された第２データに対して相対的にコヒーレントであるかどうかを判定するように構成されたスヌープ要求であって、
前記直列インターフェースバス上の前記データキャッシュを識別する宛先情報と、
前記データキャッシュ内で前記第２データが配置される場所を識別するキャッシュラインアドレスと
を含むスヌープ要求を生成し、
・前記データキャッシュを識別する前記宛先情報に基づいて、前記スヌープ要求を前記直列インターフェースバスを介して前記第２プロセッサに送り、
・前記ローカルメモリに格納された前記第１データを使用して処理動作を実行する
ように構成され、
前記第２プロセッサが、
・前記スヌープ要求から前記キャッシュラインアドレスを抽出し、
・前記データキャッシュ内で前記キャッシュラインアドレスに格納された前記第２データが前記第１データに対して相対的にコヒーレントであるかどうかを判定し、
・前記直列インターフェースバス上で前記ローカルメモリを識別する宛先情報と、
前記第１データが前記第２データに対して相対的にコヒーレントであることを示す完了情報と
を含む完了（ＣＰＬ）メッセージを生成し、
・前記ローカルメモリを識別する前記宛先情報に基づいて、前記ＣＰＬメッセージを前記直列インターフェースバスを介して前記第１プロセッサに送る
ように構成されている、コンピュータシステム。
【請求項２】
前記スヌープ要求が、非ポストトランザクションであり、前記第１プロセッサは、前記スヌープ要求に応答して前記第２プロセッサからメッセージを受け取ることを待機する、請求項１に記載のコンピュータシステム。
【請求項３】
前記スヌープ要求が、前記データキャッシュを識別する前記宛先情報を含むベンダ定義ヘッダを有するベンダ定義メッセージである、請求項１に記載のコンピュータシステム。
【請求項４】
前記データキャッシュ内で前記キャッシュラインアドレスに格納された前記第２データがコヒーレントであるかどうかの前記判定が、前記第１データに対する相対的な前記第２データの状態を判定するために前記キャッシュラインアドレスに関連するキャッシュラインタグを調べることを含む、請求項１に記載のコンピュータシステム。
【請求項５】
前記第２プロセッサが、さらに、
・前記データキャッシュ内で前記キャッシュラインアドレスに格納された前記第２データが変更されたことを判定し、
・前記第２データを前記ローカルメモリに送り、
・前記第２データを前記ローカルメモリに書き込ませ、
・前記キャッシュラインが無効であることを示すために前記キャッシュに関連する前記キャッシュラインタグを変更する
ように構成されている、請求項４に記載のコンピュータシステム。
【請求項６】
前記第２プロセッサが、さらに、読取り要求を前記直列インターフェースを介して前記第２プロセッサから前記第１プロセッサに送るように構成され、前記読取り要求が、前記ローカルメモリに格納された前記第１データを読み取る要求であり、
前記第１プロセッサが、さらに、
・前記第２プロセッサから受け取られる前記ＣＰＬメッセージを無視し、
・前記処理動作を実行した後に、前記直列インターフェースを介する前記第２プロセッサへの前記第１データの送信を行わせることによって前記読取り要求にサービスし、前記第１データが、前記実行される処理動作によって変更される
ように構成されている、請求項４に記載のコンピュータシステム。
【請求項７】
メモリに格納されたデータを使用して処理動作を実行する方法であって、
・第１プロセッサに結合されたローカルメモリに格納された第１データが第２プロセッサに結合されたデータキャッシュに格納された第２データに対して相対的にコヒーレントであるかどうかを判定するように構成されたスヌープ要求であって、
直列インターフェースバス上の前記データキャッシュを識別する宛先情報と、
前記データキャッシュ内で前記第２データが配置される場所を識別するキャッシュラインアドレスと
を含むスヌープ要求を生成するステップと、
・前記データキャッシュを識別する前記宛先情報に基づいて、前記スヌープ要求を前記直列インターフェースバスを介して前記第２プロセッサに送るステップと、
・前記スヌープ要求から前記キャッシュラインアドレスを抽出するステップと、
・前記データキャッシュ内で前記キャッシュラインアドレスに格納された前記第２データが前記ローカルメモリに格納された前記第１データに対して相対的にコヒーレントであるかどうかを判定するステップと、
・前記直列インターフェースバス上で前記ローカルメモリを識別する宛先情報と、
前記第１データが前記第２データに対して相対的にコヒーレントであることを示す完了情報と
を含む完了（ＣＰＬ）メッセージを生成するステップと、
・前記ローカルメモリを識別する前記宛先情報に基づいて、前記ＣＰＬメッセージを前記直列インターフェースバスを介して前記第１プロセッサに送るステップと、
・前記ローカルメモリに格納された前記第１データを使用して処理動作を前記第１プロセッサ上で実行するステップと
を含む、方法。
【請求項８】
判定する前記ステップが、前記キャッシュラインアドレスに関連するキャッシュラインタグを調べて、前記第１データに対する相対的な前記第２データの状態を判定するステップを含む、請求項７に記載の方法。
【請求項９】
前記データキャッシュ内で前記キャッシュラインアドレスに格納された前記第２データが変更されたことを判定するステップと、
前記第２データを前記ローカルメモリに送るステップと、
前記第２データを前記ローカルメモリに書き込むステップと、
前記キャッシュに関連する前記キャッシュラインタグを変更して、前記キャッシュラインが無効であることを示すステップと
をさらに含む、請求項８に記載の方法。
【請求項１０】
読取り要求を前記第２プロセッサから前記直列インターフェースを介して前記第１プロセッサに送るステップであって、前記読取り要求が、前記ローカルメモリに格納された前記第１データを読み取る要求を含む、ステップと、
前記第１プロセッサで、前記第２プロセッサから受け取られる前記ＣＰＬメッセージを無視するステップと、
前記処理動作が前記第１プロセッサ上で実行された後に、前記直列インターフェースを介する前記第２プロセッサへの前記第１データの送信を行うことによって前記読取り要求にサービスするステップであって、前記第１データが、前記実行される処理動作によって変更される、ステップと
をさらに含む、請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明は、全般的には分散コンピューティングの分野に関し、より具体的には、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）などの直列インターフェースバスにまたがってキャッシュコヒーレンシを維持するシステム及び方法に関する。
【背景技術】
【０００２】
[0002]従来のコンピューティングシステムでは、プロセッサは、外部メモリユニットからデータを読み取り、データのコピーを後の使用のために短待ち時間キャッシュメモリユニット（キャッシュ）に格納する。次に、プロセッサは、データを使用して動作を実行する時に、外部メモリユニットからデータを読み取るのではなく、キャッシュからデータのコピーを読み取ることができる。プロセッサと外部メモリユニットとの間のデータアクセスは、プロセッサとキャッシュとの間のデータアクセスより長い待ち時間を有するので、キャッシュからのデータの取出は、プロセッサが命令をよりすばやく実行することを可能にし、最終的に、プロセッサの性能を高める。キャッシュは、通常、スタティックランダムアクセスメモリ（ＳＲＡＭ）又は別のタイプの短待ち時間メモリユニットとして実施される。
【０００３】
[0003]通常のキャッシュは、複数のラインに編成され、このラインにデータが格納される。各ラインは、そのラインに格納されたキャッシングされたデータの有効性を記述するタグを用いてマークされる。たとえば、プロセッサが、外部メモリから特定のキャッシュラインにデータをコピーする時に、そのキャッシュラインは、「有効」としてマークされる。というのは、データのキャッシングされたコピーが、外部メモリユニットに格納されたオリジナルデータと同一であるからである。その代わりに、プロセッサが、キャッシュラインからデータを読み取り、データを変更し、変更されたデータをキャッシュラインに書き戻す時には、キャッシュラインを、「変更済み」としてマークすることができる。というのは、データのキャッシングされたコピーが、外部メモリユニットに格納されたオリジナルデータに対して相対的に変更されるからである。変更されたデータを外部メモリユニットに書き戻すことができ、その結果、外部メモリユニットに格納されたデータが、キャッシングされたデータと同一になる。外部メモリユニットに格納されたデータが、キャッシュに格納された対応するデータと同一である時には、キャッシュは、「コヒーレント」であると考えられる。キャッシュは、キャッシュデータが「変更済み」としてマークされる限り、データがメインメモリに格納されたものと異なる場合にもコヒーレントである。キャッシュデータは、キャッシュがメインメモリに格納されたものと異なるデータを格納するが、データが変更済みとしてマークされない場合、又は異なるキャッシュが変更済みとしてマークされた同一データを有する場合に、「非コヒーレント」になる。
【０００４】
[0004]キャッシュを、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）バスによって相互接続された複数のプロセッサを含む分散コンピューティングシステム内で実施することができる。各プロセッサは、１つ又は複数の外部メモリユニットからデータを読み取り、データのコピーをそのプロセッサに関連するキャッシュに格納することができる。次に、プロセッサは、データのキャッシングされたコピーを使用して、処理動作を実行することができる。プロセッサが、データのキャッシングされたコピーを変更する場合に、プロセッサは、上で説明したように、外部メモリユニットとのキャッシュコヒーレンシを維持するために変更されたデータを外部メモリユニットに書き戻すことができる。しかし、従来のシステムの複数のＣＰＵは、現在ＰＣＩｅにまたがってキャッシュコヒーレンシを維持する形が存在しないので、ＰＣＩｅにまたがってデータを読み取り、キャッシングすることができない。
【０００５】
[0005]各プロセッサは、ＰＣＩｅバスを介してデータを受け取ることもできる。プロセッサが、ＰＣＩｅバスを介してデータを受け取る時に、そのデータは、通常、「キャッシング不能」（ＵＣ）又は「ライトコンバイン」（ＷＣ）としてマークされる。キャッシング不能とマークされたデータは、コンピューティングシステムの状態がこのデータに依存する可能性があるので、キャッシュに格納することができない。その場合に、このデータを参照することは、コンピューティングシステムによって待機（ｅｘｐｅｃｔ）され、通常動作のために要求される副作用を有する場合がある。したがって、データは、このデータに対する変更がコンピューティングシステムに既知になるようにするために、コンピュータシステムからアクセス可能でなければならない。したがって、このデータを、コンピューティングシステムの予期されない動作という危険を冒さずに介在するキャッシュに格納することはできない。ＷＣとマークされたデータは、データフラグメントとしてバッファに受け取られる。その後、これらのフラグメントが組み合わされて、データが再生される。その後、組み合わされたデータは、複数のより小さい書込みではなく、１つの大きい書込みとして配送される。ＷＣとマークされたデータは、ＷＣとマークされた位置への読取りがＵＣとマークされた位置への読取りと同一の形で扱われるので、キャッシングすることができない。
【０００６】
[0006]前述の構成に伴う１つの問題は、プロセッサが、ＵＣ又はＷＣとマークされたデータを読み取る時に、そのデータをプロセッサによってキャッシングできないことである。たとえば、プロセッサが、ＵＣ又はＷＣとマークされた同一のデータを使用する複数の処理動作を実行する場合に、プロセッサは、外部（非キャッシュ）メモリユニットからそのデータを複数回読み取ることを要求され、したがって、大きい待ち時間が導入される。もう１つの問題は、プロセッサが、ＵＣとマークされたデータを使用して命令を実行する時に、プロセッサが、これらの命令の実行をシリアライズし、これが、プロセッサの効率を低下させることである。重要なことに、ＰＣＩｅバスを介して受け取られるデータ（たとえば、マルチプロセッサシステム内の別のプロセッサのキャッシュからコピーされるデータ）は、ＵＣ又はＷＣとしてマークされる。したがって、このデータは、キャッシングできず、これが追加の待ち時間を導入する。この問題に対する１つの解決策は、プロセッサをＰＣＩｅバスに接続するのを避けることである。しかし、この解決策は、コンピューティングシステムの可能な構成を大幅に制限する。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
[0007]したがって、当技術分野には、改善されたキャッシング技法の必要が残っている。
【課題を解決するための手段】
【０００８】
[0008]本発明の一実施形態は、データキャッシュに格納されたデータを使用して処理動作を実行する方法を示す。この方法は、第１プロセッサに結合されたローカルメモリに格納された第１データが第２プロセッサに結合されたデータキャッシュに格納された第２データに対して相対的にコヒーレントであるかどうかを判定するように構成されたスヌープ要求であって、直列インターフェースバス上のデータキャッシュを識別する宛先情報と、データキャッシュ内で第２データが配置される場所を識別するキャッシュラインアドレスとを含むスヌープ要求を生成するステップと、データキャッシュを識別する宛先情報に基づいてスヌープ要求を直列インターフェースバスを介して第２プロセッサに送らせるステップと、スヌープ要求からキャッシュラインアドレスを抽出するステップと、データキャッシュ内でキャッシュラインアドレスに格納された第２データがローカルメモリに格納された第１データに対して相対的にコヒーレントであるかどうかを判定するステップと、直列インターフェースバス上でローカルメモリを識別する宛先情報と、第１データが第２データに対して相対的にコヒーレントであることを示す完了情報とを含む完了（ＣＰＬ）メッセージを生成するステップと、ローカルメモリを識別する宛先情報に基づいて、ＣＰＬメッセージを直列インターフェースバスを介して第１プロセッサに送らせるステップと、ローカルメモリに格納された第１データを使用して処理動作を第１プロセッサ上で実行させるステップとを含む。
【０００９】
[0009]有利なことに、ＰＣＩｅバスを介して送られるデータを、「キャッシング可能」としてマークすることができ、このデータを受け取るプロセッサが、プログラム命令の実行をシリアライズする必要が除去される。したがって、ＰＣＩｅバスを介して受け取られるデータを用いる動作を実行する時に、従来技術の手法に対して相対的に、プロセッサ速度が改善される。
【図面の簡単な説明】
【００１０】
上に列挙した本発明の特徴を詳細に理解できるように、上で短く要約した本発明のより具体的な説明を、実施形態を参照することによって得ることができ、この実施形態のいくつかは、添付図面に示されている。添付図面は、本発明の通常の実施形態だけを示し、したがって、本発明の範囲について限定的と考えてはならない。というのは、本発明が、他の同等に有効な実施形態を許すことができるからである。
【図１】本発明の１つ又は複数の態様を実施するように構成されたコンピューティングシステムを示すブロック図である。
【図２Ａ】「スヌープ」（ＳＮＰ）トランザクションに関連するパケットの第１実施形態を示す概念図である。
【図２Ｂ】「スヌープ」（ＳＮＰ）トランザクションに関連するパケットの第２実施形態を示す概念図である。
【図３Ａ】本発明の一実施形態による、第１のＳＮＰトランザクションを示す図である。
【図３Ｂ】本発明の一実施形態による、第２のＳＮＰトランザクションを示す図である。
【図３Ｃ】本発明の一実施形態による、第３のＳＮＰトランザクションを示す図である。
【図４】本発明の一実施形態による、ＰＣＩｅバス上のＳＮＰトランザクションを実施する方法ステップを示す流れ図である。
【図５】本発明の一実施形態による、ＰＣＩｅバス上の送出に関するＳＮＰ要求を生成する方法ステップを示す流れ図である。
【図６】本発明の一実施形態による、ＰＣＩｅバス上の送出に関するＣＰＬメッセージを生成する方法ステップを示す流れ図である。
【発明を実施するための形態】
【００１１】
[0017]次の説明では、本発明のより完全な理解を提供するために、多数の具体的な詳細を示す。しかし、これらの特定の詳細のうちの１つ又は複数を伴わずに本発明を実践できることは、当業者に明白であろう。他の場合には、本発明を不明瞭にするのを避けるために、周知の特徴は説明しない。
【００１２】
[0018]図１は、本発明の１つ又は複数の態様を実施するように構成されたコンピューティングシステム１００のブロック図である。図示されているように、コンピューティングシステム１００は、ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｆａｃｅ  ｅｘｐｒｅｓｓ（ＰＣＩｅ）バス１０２、ローカルメモリ１１０、メモリコントローラ１１１、プロセッサ１１２、システムメモリ１１４、メモリコントローラ１１６、プロセッサ１１８、及びキャッシュ１２０を含む。ＰＣＩｅバス１０２は、トランザクションレイヤ１０４、リンクレイヤ１０６、及び物理レイヤ１０８を含む。ＰＣＩｅバス１０２は、プロセッサ１１２及びプロセッサ１１８を相互接続し、これらのコンポーネントの間の通信経路を提供する。
【００１３】
[0019]プロセッサ１１２及びプロセッサ１１８は、中央処理装置（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、並列処理ユニット（ＰＰＵ）、特定用途向け集積回路（ＡＳＩＣ）、又は他のタイプの処理ユニットとすることができる。プロセッサ１１２及びプロセッサ１１８は、同一タイプの処理ユニット又は異なるタイプの処理ユニットとすることができる。たとえば、プロセッサ１１２を、グラフィックス処理動作を実行するＧＰＵとすることができ、プロセッサ１１８を、システムメモリ１１４に格納されたオペレーティングシステム（ＯＳ）を実行するＣＰＵとすることができる。
【００１４】
[0020]プロセッサ１１８は、メモリコントローラ１１６に結合され、メモリコントローラ１１６を介してシステムメモリ１１４からデータを読み取ることができる。一実施形態では、プロセッサ１１２及び／又はプロセッサ１１８は、ＰＣＩｅバス１０２のトランザクションレイヤ１０４を介してメモリコントローラ１１６に結合される。したがって、プロセッサ１１２及び／又はプロセッサ１１８の両方は、ＰＣＩｅバス１０２を介してシステムメモリ１１４にアクセスすることができる。プロセッサ１１２及びプロセッサ１１８は、プログラム命令及び／又はプログラム命令を実行するために必要なデータを含むデータをシステムメモリ１１４から読み取ることができる。たとえば、プロセッサ１１２がＧＰＵであるときに、プロセッサ１１２は、特定のグラフィックス処理動作を実行するためにプロセッサ１１２内に含まれるグラフィックス処理パイプラインのコンポーネントを構成するプログラム命令を読み取ることができる。プロセッサ１１２は、システムメモリ１１４及び／又はローカルメモリ１１０からグラフィックスデータを読み取り、グラフィックス処理パイプラインを使用してそのグラフィックスデータを処理することもできる。
【００１５】
[0021]システムメモリ１１４は、プロセッサ１１２、１１８の動作を調整するように構成されたプログラム命令のセットとして実施されるソフトウェアドライバ１１５を含む。たとえば、ドライバ１１５を構成するプログラム命令を、プロセッサ１１８によって実行して、下で詳細に述べるドライバ１１５の機能性を実施することができる。
【００１６】
[0022]プロセッサ１１２は、メモリコントローラ１１１を介してローカルメモリ１１０に結合され、したがって、ローカルメモリ１１０の動作を制御する。プロセッサ１１２がＰＣＩｅバス１０２からデータを受け取る時に、プロセッサ１１２は、受け取られたデータを後の使用のためにローカルメモリ１１０に格納することができる。ローカルメモリ１１０は、プロセッサ１１２によって実行されるプログラム命令の実行を加速するように構成された短待ち時間メモリユニットとすることができる。ローカルメモリ１１０は、プロセッサ１１２によって実行された時にコンピュータシステム１００のさまざまな機能性を実施するプログラム命令及び／又はドライバを格納することもできる。
【００１７】
[0023]プロセッサ１１８は、キャッシュ１２０に直接に結合され、キャッシュ１２０の動作を制御する。プロセッサ１１８が、システムメモリ１１４から又はＰＣＩｅバス１０２からデータを受け取る時に、プロセッサ１１８は、受け取られたデータの一時コピーを後の使用のためにキャッシュ１２０に格納することができる。キャッシュ１２０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）モジュールなどの短待ち時間メモリユニットである。キャッシュ１２０に対して行われる読取り要求は、システムメモリ１１４に対して行われる読取り要求より短い待ち時間を有する。したがって、キャッシュ１２０は、要求されたデータをキャッシュ１２０から取り出せる時にシステムメモリ１１４への長待ち時間読取りが回避されるので、プロセッサ１１８によって実行されるプログラム命令の実行を加速することができる。
【００１８】
[0024]「スヌープ」（ＳＮＰ）トランザクションは、プロセッサ１１２が、キャッシュ１２０に格納されたオリジナルデータの状態をチェックすることを可能にする。ＳＮＰトランザクションは、プロセッサ１１２とプロセッサ１１８との間でＰＣＩｅバス１０２のトランザクションレイヤ１０４を介して転送される異なるメッセージの使用を介して実施される。これらのメッセージは、ＳＮＰ要求及び「完了」ＣＰＬメッセージを含む。プロセッサ１１２は、スヌープ経路１３０に沿ってＳＮＰ要求を送って、ＳＮＰトランザクションを開始する。ＳＮＰ要求は、キャッシングされるデータのアドレスを含む。ＳＮＰ要求に応答して、プロセッサ１１８は、下で図２Ａ〜２Ｂ及び図３Ａ〜３Ｂで詳細に説明するように、キャッシュ１２０に格納されたデータを調べ、データの状態に依存する特定のタスクを実行する。プロセッサ１１８がこれらのタスクを完了した時に、プロセッサ１１８は、ＳＮＰトランザクションが完了したことを示すＣＰＬメッセージを送ることができる。
【００１９】
[0025]ＰＣＩｅバス１０２は、ルートコンプレックス（図示せず）を含む。ルートコンプレックスは、プロセッサ１１２及びプロセッサ１１８など、ＰＣＩｅバス１０２に接続されたエンドポイントの間でトランザクションを管理するコントローラである。したがって、ルートコンプレックスを、ＳＮＰトランザクションに関連するメッセージをルーティングするように構成することができる。一実施形態では、ルートコンプレックスは、あるエンドポイントから受け取られたＳＮＰ要求を、ルートコンプレックスの上にありＰＣＩｅバス１０２上にはない他のすべてのエンドポイント又はエンドポイントのピアにブロードキャストする。
【００２０】
[0026]図２Ａは、本発明の一実施形態による、ＳＮＰトランザクションに関連するパケットの第１実施形態を示す概念図である。図示されているように、図２Ａには、トランザクションレイヤ１０４を介して移動するＳＮＰ要求２０２Ａ及びＣＰＬメッセージ２０８Ａが示されている。一実施形態では、ＳＮＰ要求２０２Ａ及びＣＰＬメッセージ２０８Ａは、本明細書でより詳細に説明するように、トランザクションレイヤを介して同時には移動しない。ＳＮＰ要求２０２Ａは、キャッシュラインアドレス２０４及びトランザクションレイヤパケット（ＴＬＰ）ヘッダ２０６を含む。キャッシュラインアドレス２０４は、調べられるキャッシュラインのアドレスを指定する。ＴＬＰヘッダ２０６は、メッセージの受取り側に対してＳＮＰ要求２０２Ａとしてメッセージを識別する。
【００２１】
[0027]ＳＮＰ要求２０２Ａを、「非ポストトランザクション（ｎｏｎ−ｐｏｓｔｅｄ  ｔｒａｎｓａｃｔｉｏｎ）」としてＰＣＩｅ標準プロトコルに追加することができる。第１のＰＣＩｅエンドポイントが非ポストトランザクションを第２のＰＣＩｅエンドポイントに送る時に、第１のＰＣＩｅエンドポイントは、それに応答するＣＰＬメッセージを待機する。したがって、プロセッサ１１２が、プロセッサ１１８にＳＮＰ要求２０２Ａを送る時に、プロセッサ１１２は、それに応答するプロセッサ１１８からのＣＰＬメッセージ２０８Ａを待機する。したがって、プロセッサ１１８は、ＳＮＰトランザクションが完了する時にプロセッサ１１２にＣＰＬメッセージ２０８Ａを送る。
【００２２】
[0028]プロセッサ１１２は、ローカルメモリ１１０に格納されたデータがキャッシュ１２０に格納されたデータとコヒーレントであるかどうかを判定するために、ＳＮＰ要求２０２Ａを生成し、プロセッサ１１８に送ることができる。プロセッサ１１２がＳＮＰ要求２０２Ａを生成する時に、プロセッサ１１２は、データが格納されているキャッシュ１２０内のキャッシュラインのアドレスをキャッシュラインアドレス２０４として含める。このメッセージは、このメッセージをプロセッサ１１８に対してＳＮＰ要求２０２Ａとして識別するＴＬＰヘッダ２０６をも含む。プロセッサ１１８がＳＮＰ要求２０２Ａを受け取る時に、プロセッサ１１８は、ＳＮＰ要求２０２Ａを解析し、キャッシュラインアドレス２０４を抽出する。次に、プロセッサ１１８は、下で図３Ａ〜３Ｃでより詳細に説明するように、キャッシュ１２０内の指定されたキャッシュラインに関連するタグを調べ、動作のシーケンスを実行する。ＳＮＰ要求２０２Ａは非ポスト書込みなので、プロセッサ１１２は、ＳＮＰ要求２０２Ａに応答してＣＰＬメッセージ２０８Ａがプロセッサ１１８によって返されることを待機する。したがって、プロセッサ１１８は、ＳＮＰ要求２０２Ａに応答してＣＰＬ  ２０８Ａを送るように構成される。
【００２３】
[0029]図２Ｂは、本発明の一実施形態による、ＳＮＰトランザクションに関連するパケットの第２実施形態を示す概念図である。図示されているように、図２Ｂには、トランザクションレイヤ１０４を介して移動するＳＮＰ要求２０２Ｂ及びＣＰＬメッセージ２０８Ｂが示されている。一実施形態では、ＳＮＰ要求２０２Ｂ及びＣＰＬメッセージ２０８Ｂは、トランザクションレイヤ１０４を介して同時には移動しない。ＳＮＰ要求２０２Ｂは、キャッシュラインアドレス２０４及びベンダ定義メッセージ（ＶＤＭ）ヘッダ２１０を含む。ＣＰＬメッセージ２０８Ｂは、ＶＤＭヘッダ２１０及びＳＮＰ  ＣＰＬ  ２１４を含む。ＳＮＰ要求２０２Ｂ及びＣＰＬメッセージ２０８Ｂは、両方ともＶＤＭであり、ＰＣＩｅ標準プロトコルには含まれない。プロセッサ１１２は、ＳＮＰ要求２０２Ａ及びＳＮＰ要求２０２Ｂを類似する形で使用して、ＳＮＰトランザクションを開始する。プロセッサ１１８は、ＣＰＬ  ２０８Ａメッセージ及びＣＰＬ  ２０８Ｂメッセージを類似する形で使用して、ＳＮＰトランザクションが完了したことを示す。
【００２４】
[0030]プロセッサ１１２がＳＮＰ要求２０２Ｂをプロセッサ１１８に送る時に、プロセッサ１１８は、キャッシュ１２０に格納されたオリジナルデータの状態に応じて、プロセッサ１１２にＣＰＬメッセージ２０８Ｂを返すことができる。プロセッサ１１２がＣＰＬメッセージ２０８Ｂを受け取る時に、プロセッサ１１２は、ＣＰＬメッセージ２０８Ｂを解析し、キャッシングされたデータが有効であるかどうかを判定するためにＳＮＰ  ＣＰＬ  ２１４を抽出する。次に、プロセッサ１１２は、データが有効と判定される場合に、ローカルメモリ１１０に格納された要求されたデータを読み取ることができる。
【００２５】
[0031]図３Ａ、３Ｂ、及び３Ｃに、それぞれ、本発明の一実施形態による、第１、第２、及び第３のＳＮＰトランザクションを示す。第１、第２、及び第３のＳＮＰトランザクションのそれぞれは、プロセッサ１１２によって実行される命令（たとえば、ドライバ）が、プロセッサ１１２に、正しい結果を得るためにこれらの命令の実行の一部としてＳＮＰ要求を生成させる時に発生し得る。それに応答して、プロセッサ１１８は、ＳＮＰ要求内でアドレッシングされたキャッシュライン内に格納されたデータを調べ、プロセッサ１１８は、ＣＰＬメッセージを返させる。図３Ａに示された第１のＳＮＰトランザクションは、キャッシュラインが「排他」又は「共有」とマークされている時に発生する。図３Ｂに示された第２のＳＮＰトランザクションは、キャッシュラインが「変更済み」とマークされている時に発生する。図３Ｃに示された第３のＳＮＰトランザクションは、キャッシュラインが「無効」とマークされている時に発生する。本明細書で使用される時に、キャッシュラインは、そのキャッシュラインが任意の状態のキャッシュに存在する時に「有効」と考えられる。通常実施されるキャッシュ状態は、キャッシュラインがキャッシュ内に存在しないことを意味する「無効」、キャッシュラインがキャッシュ内に存在し、メモリ内のコピーと同一の値を有し、他のキャッシュがコピーを有しないことを意味する「排他」、キャッシュラインがキャッシュ内に存在し、メモリ内のコピーと同一の値を有し、別のキャッシュもコピーを有することを意味する「共有」、及びキャッシュラインが存在し、メモリ内とは異なる値を有することを意味する「変更済み」である。
【００２６】
[0032]各ＳＮＰトランザクションは、プロセッサ１１２がプロセッサ１１８にＳＮＰ要求を送る時に開始される。一実施形態では、ＳＮＰ要求は、ＳＮＰ要求２０２Ａである。代替実施形態では、ＳＮＰ要求は、ＳＮＰ要求２０２Ｂである。
【００２７】
[0033]図３Ａは、本発明の一実施形態による、第１のＳＮＰトランザクションを実施するように構成されたコンピュータシステム３００Ａを示す。図示されているように、コンピュータシステム３００Ａは、図１に示されたものと同一のコンポーネントを含む。さらに、キャッシュ１２０内のキャッシュラインが「排他」又は「共有」とマークされている時に発生する処理ステップを示す順次処理レグが、境界線を描かれている。第１のＳＮＰトランザクションを、プロセッサ１１２がレグ３０１に沿ってプロセッサ１１８にＳＮＰ要求を送る時に開始することができる。プロセッサ１１８は、ＳＮＰ要求を受け取り、ＳＮＰ要求を解析する。プロセッサ１１８は、ＳＮＰ要求からキャッシュラインアドレス２０４（この図には図示せず）を抽出する。プロセッサ１１８は、レグ３０３に沿ってキャッシュ１２０内の指定されたキャッシュラインにアクセスし、指定されたキャッシュラインに関連するタグを調べる。
【００２８】
[0034]データが「排他」又は「共有」とマークされている場合に、プロセッサ１１８は、レグ３０５に沿ったプロセッサ１１２へのＣＰＬメッセージの送出を引き起こす。さらに、キャッシュラインの状態が、「無効」に変更される（すなわち、キャッシュラインがキャッシュから除去される）。キャッシュラインの除去は、プロセッサ１１８が、プロセッサ１１２がキャッシュラインを変更した後にキャッシュ１２０からのキャッシュラインの「古い」コピーを使用しないことを保証する。ＣＰＬメッセージは、ＳＮＰトランザクションが完了し、ローカルメモリ１１０に格納されたデータが正しいバージョンであることをプロセッサ１１２に示す。したがって、プロセッサ１１２は、ローカルメモリ１１０に格納されたデータを使用して、処理動作を実行することができる。プロセッサ１１２がＣＰＬメッセージを受け取る時に、プロセッサ１１２は、ローカルメモリ１１０からデータを読み取る。
【００２９】
[0035]図３Ｂは、本発明の一実施形態による、第２のＳＮＰトランザクションを実施するように構成されたコンピュータシステム３００Ｂを示す。図示されているように、コンピュータシステム３００Ｂは、図１に示されたものと同一のコンポーネントを含む。さらに、キャッシュ１２０内のキャッシュラインが「変更済み」とマークされている時に発生する処理ステップを示す順次処理レグが、境界線を描かれている。第２のＳＮＰトランザクションは、図３Ａで説明したものに実質的に類似するいくつかのステップを含む。しかし、第２のＳＮＰトランザクションは、指定されたキャッシュラインの検査から、データが「変更済み」とマークされていると判定されるときに、異なる形で進行する。
【００３０】
[0036]データが「変更済み」とマークされている場合に、プロセッサ１１８は、レグ３０９に沿って、キャッシュ１２０の指定されたキャッシュラインに格納されたデータをプロセッサ１１２に送る。次に、プロセッサ１１２は、ローカルメモリ１１０に格納されたデータの対応するコピーを上書きし、したがってデータの最新バージョンを反映するようにローカルメモリ１１０を更新することによって、受け取られたデータをローカルメモリ１１０に書き込む。プロセッサ１１２がデータの書込みを終了する時に、プロセッサ１１８は、プロセッサ１１２から書込み完了を受け取る（図示せず）。一実施形態では、書込み完了は、データがローカルメモリ１１０に成功して書き込まれたことを示すＣＰＬメッセージである。次に、プロセッサ１１８は、レグ３０５に沿って、ＣＰＬメッセージをプロセッサ１１２に送る。このＣＰＬメッセージは、ＳＮＰトランザクションが完了したことと、ローカルメモリ１１０に格納されたデータが正しいこととをプロセッサ１１２に示す。したがって、プロセッサ１１２は、ローカルメモリ１１０に格納されたデータを使用して、処理動作を実行することができる。プロセッサ１１２がＣＰＬメッセージを受け取る時に、プロセッサ１１２は、ローカルメモリ１１０からデータを読み取ることができる。
【００３１】
[0037]図３Ｃは、本発明の一実施形態による、第３のＳＮＰトランザクションを実施するように構成されたコンピュータシステム３００Ｃを示す。図示されているように、コンピュータシステム３００Ｃは、図１に示されたものと同一のコンポーネントを含む。さらに、キャッシュ１２０内のキャッシュラインが「無効」とマークされている時に発生する処理ステップを示す順次処理レグが、境界線を描かれている。第３のＳＮＰトランザクションは、図３Ａ及び３Ｂで説明したものに実質的に類似するいくつかのステップを含む。しかし、第３のＳＮＰトランザクションは、指定されたキャッシュラインの検査から、データが「無効」とマークされていると判定されるときに、異なる形で進行する。
【００３２】
[0038]第３のＳＮＰトランザクションを、プロセッサ１１２がレグ３０１に沿ってＳＮＰ要求をプロセッサ１１８に送る時に開始することができる。プロセッサ１１８は、指定されたキャッシュラインを調べ、データが無効とマークされていると判定する（図示せず）。次に、プロセッサ１１８は、ローカルメモリ１１０に格納されたデータがそのデータの最も最近に格納された及び／又は変更されたバージョンであることを示すＣＰＬメッセージをプロセッサ１１２に送らせる。
【００３３】
[0039]さらに、プロセッサ１１２は、ローカルメモリ１１０に格納されたデータを必要とし、したがって、プロセッサ１１８へのＳＮＰ要求を発行し、それと一致して、プロセッサ１１８は、ローカルメモリ１１０内の同一のデータをターゲットとする読取り要求を発行する。プロセッサ１１８によって発行された読取り要求は、プロセッサ１１２がＳＮＰ要求を発行した後だが、そのＳＮＰ要求がプロセッサ１１８に到着する前に、プロセッサ１１２によって受け取られる。その場合に、従来のシステムを使用すると、プロセッサ１１２は、ＳＮＰ要求に応答してＣＰＬメッセージが返されるのを待ち、プロセッサ１１８は、読取り要求が完了するまでＣＰＬメッセージを発行しない。これらの従来のシステムでは、プロセッサ１１２は、読取り要求にサービスする前にＣＰＬメッセージを待ち、プロセッサ１１８は、ＣＰＬメッセージを発行する前に読取り要求データを待つ。この問題のある状況は、「デッドロック」として知られている。
【００３４】
[0040]もう１つの問題のある状況は、標準ＰＣＩｅオーダリングルールが、読取り要求がＣＰＬメッセージを渡すことを許容するので、従来のシステムを使用する時に発生し得る。プロセッサ１１８が、読取り要求を発行する前にＣＰＬメッセージを発行する場合に、その読取り要求は、ＣＰＬメッセージの前にプロセッサ１１２に到着する可能性がある。プロセッサ１１８は、やはり、プロセッサ１１２が読取り要求のデータを返す時に、キャッシュ１２０内にローカルメモリ１１０からのデータのコピーを有する。次に、プロセッサ１１２は、別のＳＮＰ要求を発行する必要があり、このサイクルが、おそらくは無限に、それ自体を繰り返す。この状況は、「ライブロック」として知られている。
【００３５】
[0041]本発明の実施形態は、プロセッサ１１８がキャッシュ１２０内にデータのコピーを有する場合に、読取り要求がキャッシュ１２０によってサービスされ、読取り要求が絶対にプロセッサ１１２に送られないことに注意することによって、可能なデッドロック及びライブロックの問題を防ぐ。その結果、プロセッサ１１２が、未解決のＳＮＰ要求を有するメモリ位置に関する読取り要求を受け取る（すなわち、ＣＰＬメッセージがＳＮＰ要求に応答して受け取られていない）場合に、プロセッサ１１２は、トランザクションがプロセッサ１１８で発行された順序（たとえば、読取り要求とその後のＳＮＰ要求、又はＳＮＰ要求とその後の読取り要求）とは無関係に、データのコピーがキャッシュ１２０内で見つからなかったことをプロセッサ１１８が示したかのように応答する。したがって、プロセッサ１１２は、ローカルメモリ位置を安全に使用し、及び／又は変更することができ、その後、読取り要求にサービスするためにこのデータを返すことができる。したがって、プロセッサ１１２は、「順方向進行」を行っており、現在参照されているデータに関するＳＮＰ要求を再発行する必要がなく（すなわち、可能なライブロックを防ぐ）、プロセッサ１１２は、ＳＮＰ要求に関連するＣＰＬメッセージを受け取る前に読取り要求に関連するデータを返すことができる（すなわち、可能なデッドロックを防ぐ）。ＳＮＰ要求に関するＣＰＬメッセージは、それでも、プロセッサ１１２によって返されるが、一実施形態では、プロセッサ１１２は、ローカルメモリ１１０に格納されたデータが正しいことをプロセッサ１１８からの読取り要求の受取に基づいて既に判定しているので、このＣＰＬメッセージを無視する。
【００３６】
[0042]図４は、本発明の一実施形態による、ＰＣＩｅバス上のＳＮＰトランザクションを実施する方法ステップの流れ図である。当業者は、方法４００が、図１〜３Ｃのシステムに関連して説明されるが、この方法ステップを任意の順序で実行するように構成された任意のシステムが、本発明の範囲に含まれることを理解するであろう。
【００３７】
[0043]図示されているように、方法４００は、ステップ４０２で開始され、ここで、プロセッサ１１２が、ＳＮＰ要求を生成する。一実施形態では、プロセッサ１１２によって実行されるドライバが、プロセッサ１１２にデータを使用するように指示し、この指示が、プロセッサ１１２に、コヒーレンシを保証するためにＳＮＰ要求を生成させる。たとえば、プロセッサ１１２は、処理動作を実行するためにローカルメモリ１１０に格納されたデータを使用することを試みている場合があり、ここで、データのキャッシングされたコピーが、プロセッサ１１８に関連するキャッシュ１２０に格納されている。ＳＮＰ要求は、プロセッサ１１２がローカルメモリ１１０とキャッシュ１２０との間でコヒーレンシを維持することを可能にするＳＮＰトランザクションを開始するために発行される。プロセッサ１１２が、ＳＮＰ要求を生成する時に、プロセッサ１１２は、下で図５でより詳細に説明するように、要求されるデータが格納された、キャッシュ内のキャッシュラインを示すアドレスを含む。ＳＮＰ要求は、それぞれ図２Ａ及び２Ｂで説明した、ＳＮＰ要求２０２Ａ又はＳＮＰ要求２０２Ｂとすることができる。
【００３８】
[0044]ステップ４０４で、プロセッサ１１２は、ＰＣＩｅバス１０２を介するプロセッサ１１８へのＳＮＰ要求の送出を引き起こす。ＳＮＰ要求は、ＰＣＩｅバス１０２のトランザクションレイヤ１０４を介して移動する。ステップ４０６で、プロセッサ１１８は、ＳＮＰ要求を受け取り、ＳＮＰ要求からキャッシュラインアドレス２０４を抽出する。プロセッサ１１８は、キャッシュラインアドレス２０４によって識別されるキャッシュラインを調べ、そのキャッシュラインに関連するタグを抽出する。このタグは、キャッシュラインに格納されたデータの状態を示す。
【００３９】
[0045]ステップ４０８で、プロセッサ１１８は、キャッシュラインが「排他」又は「共有」とマークされているかどうかを判定する。キャッシュラインが「排他」又は「共有」とマークされている場合には、キャッシュ１２０に格納されたデータがローカルメモリ１１０に格納されたデータと同一なので、キャッシュ１２０とローカルメモリ１１０との間でキャッシュコヒーレンシを確立するためにアクションは不要である。方法４００は、ステップ４１０に進み、ここで、プロセッサ１１８は、キャッシュラインを「無効」としてマークする。したがって、キャッシュラインの状態は、「無効」に変更される（すなわち、キャッシュラインがキャッシュから除去される）。キャッシュラインの除去は、プロセッサ１１８が、プロセッサ１１２がキャッシュラインを変更した後にキャッシュ１２０からのキャッシュラインの古いコピーを使用しないことを保証する。
【００４０】
[0046]次に、方法４００は、ステップ４１２に進み、ここで、プロセッサ１１８は、ＣＰＬメッセージを生成する。ＣＰＬメッセージは、それぞれ図２Ａ及び２Ｂで説明したＣＰＬメッセージ２０８Ａ又はＣＰＬメッセージ２０８Ｂとすることができる。
【００４１】
[0047]ステップ４１４で、プロセッサ１１８は、ローカルメモリ１１０に格納されたデータがキャッシュ１２０に格納されたオリジナルデータとコヒーレントであり、及び／又は正しいことを示すために、プロセッサ１１２へのＣＰＬメッセージの送出を引き起こす。ステップ４１６で、プロセッサ１１２は、ローカルメモリ１１０からデータを読み取り、この方法は終了する。
【００４２】
[0048]戻ってステップ４０８を参照すると、プロセッサ１１８が、キャッシュラインが「排他」又は「共有」とマークされてはいないと判定する場合に、この方法は、ステップ４１８に進み、そこで、プロセッサ１１８は、キャッシュラインが「変更済み」としてマークされているかどうかを判定する。キャッシュラインは、ローカルメモリ１１０に格納されたデータに対して相対的にキャッシュ１２０に格納されたデータの値を変更した処理動作をプロセッサ１１８が実行した時に、変更済みとマークされる可能性がある。プロセッサ１１８が、ステップ４１８で、キャッシュラインが「変更済み」とマークされていると判定する場合には、この方法はステップ４２０に進み、そこで、プロセッサ１１８は、変更されたデータをローカルメモリ１１０に書き込む。その後、この方法はステップ４１０に進み、このステップは、本明細書で前に説明したものである。
【００４３】
[0049]ステップ４１８で、キャッシュラインが「変更済み」とマークされていない場合には、方法４００は、ステップ４１２に進み、このステップは、本明細書で前に説明したものである。キャッシュラインが「排他」でも「共有」でもなく（ステップ４０８）、キャッシュラインが「変更済み」ではない場合に、キャッシュラインは、「無効」であり、プロセッサ１１８は、キャッシュ１２０とローカルメモリ１１０との間でキャッシュコヒーレンシを確立するためにアクションが必要ではないので、ＣＰＬメッセージを生成する。
【００４４】
[0050]さらに、図３Ｃで説明したように、プロセッサ１１８は、ＳＮＰ要求に関連するメモリ位置に対応するローカルメモリ１１０内のメモリ位置に関する読取り要求を発行することができる。そのようなシナリオでは、プロセッサ１１２は、読取り要求を受け取り、ＳＮＰ要求に応答してプロセッサ１１８から受け取られるＣＰＬメッセージを無視し、ローカルメモリに格納されたデータを使用して動作を実行し（おそらくはそのデータを変更する）、その後、プロセッサ１１８に対して読取り要求をサービスする。したがって、プロセッサ１１２は、「順方向進行」を行っており、現在の参照に関するＳＮＰ要求を再発行する必要がなく（すなわち、可能なライブロックを防ぐ）、プロセッサ１１２は、おそらくはＳＮＰ要求に関するＣＰＬメッセージを受け取る前に、読取り要求に関するデータを返すことができる（すなわち、可能なデッドロックを防ぐ）。ＳＮＰ要求に関するＣＰＬメッセージは、それでも、プロセッサ１１２によって返されるが、一実施形態では、プロセッサ１１２は、ローカルメモリ１１０に格納されたデータが正しいことをプロセッサ１１８からの読取り要求の受取に基づいて既に判定しているので、このＣＰＬメッセージを無視する。
【００４５】
[0051]図５は、本発明の一実施形態による、ＰＣＩｅバス上の送出に関するＳＮＰ要求を生成する方法ステップの流れ図である。当業者は、方法５００が図１〜４のシステム及び方法に関連して説明されるが、この方法ステップを任意の順序で実行するように構成された任意のシステムが、本発明の範囲に含まれることを理解するであろう。
【００４６】
[0052]図示されているように、方法５００はステップ５０２で開始され、ここで、プロセッサ１１２は、ＳＮＰ要求ヘッダを生成する。ステップ５０４で、プロセッサ１１２は、ＳＮＰ要求ヘッダをブランクパケットに追加する。一実施形態では、ＳＮＰ要求は、ＳＮＰ要求２０２Ａであり、ＳＮＰ要求ヘッダは、ＴＬＰヘッダ２０６である。ＴＬＰヘッダ２０６は、メッセージをプロセッサ１１８へのＳＮＰ要求２０２Ａとして識別する。代替実施形態では、ＳＮＰ要求は、ＳＮＰ要求２０２Ｂであり、ＳＮＰ要求ヘッダは、ＶＤＭヘッダ２１０である。ＶＤＭヘッダ２１０は、メッセージをプロセッサ１１８へのＳＮＰ要求２０２Ｂとして識別する。
【００４７】
[0053]ステップ５０６で、プロセッサ１１２は、宛先情報をパケットに追加する。この宛先情報は、プロセッサ１１８をＳＮＰ要求の所期の受取り側として識別する。ＰＣＩｅバスは、宛先情報に従ってＳＮＰ要求をプロセッサ１１８にルーティングするロジックを含む。ステップ５０８で、プロセッサ１１２は、「スヌープされる」キャッシュ１２０のキャッシュラインアドレスをＳＮＰ要求に追加する。このキャッシュラインアドレスは、キャッシュ１２０内のオリジナルデータの位置を示す。
【００４８】
[0054]図６は、本発明の一実施形態による、ＰＣＩｅバス上の送出に関するＣＰＬメッセージを生成する方法ステップを示す流れ図である。当業者は、方法６００が図１〜４のシステム及び方法に関連して説明されるが、この方法ステップを任意の順序で実行するように構成された任意のシステムが、本発明の範囲に含まれることを理解するであろう。
【００４９】
[0055]図示されているように、方法６００は、ステップ６０２で開始され、ここで、プロセッサ１１８は、ＣＰＬメッセージヘッダを生成する。プロセッサ１１８は、ＳＮＰ要求を受け取り済みである場合があり、ローカルメモリ１１０又はキャッシュ１２０のいずれかを更新するために上で図３Ａ〜３Ｃで説明したアクションを実行済みである場合がある。これらのアクションが完了し、ローカルメモリ１１０がデータの最新バージョンを格納した後に、プロセッサ１１８は、プロセッサ１１２によって受け取られた時にＳＮＰトランザクションを完了するＣＰＬメッセージを生成する必要がある可能性がある。
【００５０】
[0056]ステップ６０４で、プロセッサ１１８は、ＣＰＬメッセージヘッダをブランクパケットに追加する。一実施形態では、ＣＰＬメッセージは、ＣＰＬメッセージ２０８Ａである。代替実施形態では、ＣＰＬメッセージは、ＣＰＬメッセージ２０８Ｂであり、ＣＰＬメッセージヘッダは、ＶＤＭヘッダ２１２である。ＶＤＭヘッダ２１２は、プロセッサ１１２に対してＣＰＬメッセージ２０８Ｂを識別する。
【００５１】
[0057]ステップ５０６で、プロセッサ１１８は、完了状況をＣＰＬメッセージに追加する。一実施形態では、完了状況は、読取り完了通知である。代替実施形態では、完了状況は、アクションが行われなかったことを示す。第３の実施形態では、完了状況はブランクである。ステップ６０８で、プロセッサ１１８は、宛先情報をパケットに追加する。宛先情報は、プロセッサ１１２をＣＰＬメッセージの初期の受取り側として識別する。ＰＣＩｅバスは、宛先情報に従ってＣＰＬメッセージをプロセッサ１１２にルーティングするロジックを含む。プロセッサ１１２がＣＰＬメッセージを受け取る時に、ＳＮＰトランザクションは完了し、ローカルメモリ１１０は、キャッシュ１２０とコヒーレントである。
【００５２】
[0058]要約すると、本発明の実施形態は、ＰＣＩｅバス上の「スヌープ」（ＳＮＰ）トランザクションを実行する技法を提供する。ＳＮＰトランザクションは、ＳＮＰ要求及び「完了」ＣＰＬメッセージを使用して実施される。第１プロセッサが、ＰＣＩｅバスを介して受け取られたデータをローカルメモリユニットに格納する時に、第１プロセッサは、そのデータがコヒーレントであるかどうかを判定するためにＳＮＰ要求を使用してデータのソースをチェックし、コヒーレントでない場合には更新されたバージョンを入手する。オリジナルデータのソースが、第２プロセッサに関連するキャッシュである時には、第１プロセッサは、キャッシュへのキャッシュラインアドレスを含むＳＮＰ要求を生成する。このキャッシュラインアドレスは、オリジナルデータが格納された、キャッシュのキャッシュラインを示す。第１プロセッサは、第２プロセッサへのＳＮＰ要求の送出を引き起こす。第２プロセッサがＳＮＰ要求を受け取る時に、第２プロセッサは、キャッシュラインアドレスを解析し、そのキャッシュラインに関連するタグを取り出す。
【００５３】
[0059]タグが、キャッシュラインが「排他」又は「共有」であることを示す時に、第２プロセッサは、ＰＣＩｅバスを介する第１プロセッサへの「完了」（ＣＰＬ）メッセージの送出を引き起こす。ＣＰＬメッセージは、ローカルメモリユニットに格納されたデータが有効であり、処理動作を実行する時に使用できることを第１プロセッサに知らせる。その後、第１プロセッサは、ローカルメモリユニットからデータを取り出すことができる。
【００５４】
[0060]タグが、キャッシュラインが「変更済み」であることを示す時に、第２プロセッサは、変更されたデータをキャッシュから取り出し、そのデータをローカルメモリユニットに書き込む。第２プロセッサは、ＣＰＬメッセージを第１プロセッサに送り、その後、第１プロセッサは、要求されたデータを第１キャッシュから取り出すことができる。
【００５５】
[0061]タグが、キャッシュラインが「無効」であることを示す時には、第２プロセッサは、ＣＰＬメッセージを発行し、第１プロセッサが要求されたデータをローカルメモリユニットから安全に取り出せることを第１プロセッサに知らせる。
【００５６】
[0062]本発明のさらなる実施形態は、介在する読取り要求が同一メモリ位置にアクセスするために第２プロセッサから受け取られる時に、第１プロセッサに、ＳＮＰ要求に応答して受け取られるＣＰＬメッセージを無視させることによって、可能なデッドロック状況及びライブロック状況を回避する技法を提供する。
【００５７】
[0063]さらに、ＳＮＰ要求を、トランザクションレイヤパケット（ＴＬＰ）又はベンダ定義メッセージ（ＶＤＭ）としてＰＣＩｅ標準プロトコル内に定義することができる。ＳＮＰ要求がＴＬＰとして定義される時に、ＳＮＰ要求は、ＴＬＰヘッダ及び調べられるキャッシュラインのアドレスを含む。その後、ＣＰＬメッセージが送られ、ＳＮＰトランザクションが完了したことを示す。ＳＮＰ要求がＶＤＭとして定義される時には、ＳＮＰ要求は、ＶＤＭヘッダ及び調べられるキャッシュラインのアドレスを含む。データペイロード内に「完了」通知を含む第２ＶＤＭも定義される。第２ＶＤＭは、ＳＮＰトランザクションが完了した後に送られる。
【００５８】
[0064]有利なことに、第１プロセッサは、データがＰＣＩｅバスを介して受け取られ、第２プロセッサによってキャッシングされる時に、ローカルメモリユニットにデータを格納することができる。第１プロセッサは、データが第２プロセッサによってキャッシングされたデータとコヒーレントであることを保証するのに、ＳＮＰ要求を使用する。さらなる利益は、ＰＣＩｅバス上で送られるデータを、「キャッシング可能」としてマークすることができ、このデータを受け取るプロセッサがプログラム命令の実行をシリアライズする必要がなくなることである。したがって、ＰＣＩｅバスを介して受け取られるデータを用いて動作を実行する時に、プロセッサ速度を大きく改善することができる。
【００５９】
[0065]前述は、本発明の実施形態を対象とするが、本発明の他の及びさらなる実施形態を、本発明の基本的な範囲から逸脱せずに考案することができる。たとえば、本発明の諸態様を、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組合せで実施することができる。本発明の一実施形態を、コンピュータシステムと共に使用されるプログラム製品として実施することができる。プログラム製品のプログラム（複数可）は、実施形態（本明細書で説明した方法を含む）の機能を定義し、さまざまなコンピュータ可読記憶媒体に含めることができる。例示的なコンピュータ可読記憶媒体は、（ｉ）情報が永久的に格納される書込み不能記憶媒体（たとえば、ＣＤ−ＲＯＭドライブによって読取り可能なＣＤ−ＲＯＭディスク、フラッシュメモリ、ＲＯＭチップ、又は任意のタイプのソリッドステート不揮発性半導体メモリなど、コンピュータ内の読取り専用メモリデバイス）、及び（ｉｉ）変更可能な情報が格納される書込み可能記憶媒体（たとえば、ディスケットドライブ内のフロッピディスク、ハードディスクドライブ、又は任意のタイプのソリッドステートランダムアクセス半導体メモリ）を含むが、これらに限定はされない。そのようなコンピュータ可読記憶媒体は、本発明の機能を指示するコンピュータ可読命令を担持する時に、本発明の実施形態である。したがって、本発明の範囲は、添付の特許請求の範囲によって決定される。
【符号の説明】
【００６０】
１００  コンピューティングシステム
１０２  ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｆａｃｅ  ｅｘｐｒｅｓｓ（ＰＣＩｅ）バス
１０４  トランザクションレイヤ
１０６  リンクレイヤ
１０８  物理レイヤ
１１０  ローカルメモリ
１１１  メモリコントローラ
１１２  プロセッサ
１１４  システムメモリ
１１５  ソフトウェアドライバ
１１６  メモリコントローラ
１１８  プロセッサ
１２０  キャッシュ
１３０  スヌープ経路
２０２Ａ  ＳＮＰ要求
２０２Ｂ  ＳＮＰ要求
２０４  キャッシュラインアドレス
２０６  トランザクションレイヤパケット（ＴＬＰ）ヘッダ
２０８Ａ  ＣＰＬメッセージ
２０８Ｂ  ＣＰＬメッセージ
２１０  ベンダ定義メッセージ（ＶＤＭ）ヘッダ
２１４  ＳＮＰ  ＣＰＬ
３００Ａ  コンピュータシステム
３００Ｂ  コンピュータシステム
３００Ｃ  コンピュータシステム
３０１  レグ
３０３  レグ
３０５  レグ
３０９  レグ
４００  方法
５００  方法
６００  方法
【図１】
2010140485.tif 000003
【図２Ａ】
2010140485.tif 000004
【図２Ｂ】
2010140485.tif 000005
【図３Ａ】
2010140485.tif 000006
【図３Ｂ】
2010140485.tif 000007
【図３Ｃ】
2010140485.tif 000008
【図４】
2010140485.tif 000009
【図５】
2010140485.tif 000010
【図６】
2010140485.tif 000011
【外国語明細書】
2010140485000001.pdf