(57)【要約】【課題】デフォルト・データ転送コヒーレント・キャッシング・エージェントのシステムおよび方法を提供すること。【解決手段】ノード・コントローラが、ローカル・キャッシング・エージェント（ローカル・プロセッサ）またはリモート・ノード・コントローラのいずれかからキャッシュ・ライン要求を受け取る。ノード・コントローラは、ローカル・キャッシング・エージェントから要求を受け取るときに、対応するキャッシュ・ラインをローカル・キャッシング・エージェントに送り、その間ずっと、キャッシュ・ライン転送状態制御を維持する。ノード・コントローラは、リモート・ノード・コントローラから要求を受け取るときに、キャッシュ・ラインをキャッシュ・ライン転送状態制御と共にリモート・ノード・コントローラに送る。さらに、ノード・コントローラは、キャッシュ・ライン要求のソース、要求タイプ、およびキャッシュ・ラインの現在の状況に基づいて、特定のアクションを実行する。【選択図】図２
2007179528.tif 000002
【特許請求の範囲】
【請求項１】
ノード・コントローラで、キャッシュ・ライン要求を検出することと、
前記ノード・コントローラで、前記キャッシュ・ライン要求がローカル・キャッシング・エージェントに対応するかどうかを判定することと、
前記キャッシュ・ライン要求が前記ローカル・キャッシング・エージェントに対応するとの判定に応答して、キャッシュ・ライン転送状態制御を前記ノード・コントローラで保持すると同時にキャッシュ・ラインを前記ローカル・キャッシング・エージェントに転送することであって、前記キャッシュ・ラインが、前記キャッシュ・ライン要求に対応し、前記キャッシュ・ライン転送状態制御が、前記キャッシュ・ラインに対応する転送する、ことと
を含む、コンピュータ実施される方法。
【請求項２】
前記キャッシュ・ライン要求がリモート・ノード・コントローラに対応することを判定することと、
前記キャッシュ・ライン要求が前記リモート・ノード・コントローラに対応するとの判定に応答して、前記キャッシュ・ラインおよび前記キャッシュ・ライン転送状態制御を前記リモート・ノード・コントローラに転送することと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記キャッシュ・ライン要求が、前記リモート・ノード・コントローラに対応し、前記方法が、さらに、
前記キャッシュ・ライン要求がremote shared要求であることを判定することと、
前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定することと、
前記キャッシュ・ライン要求がremote shared要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
制御するエージェントにその状況をsharedにダウングレードするように通知することであって、前記制御するエージェントが、前記exclusiveキャッシュ・ライン状況に関連する、通知することと、
前記通知に応答して、前記リモート・ノード・コントローラが前記キャッシュ・ラインに関する前記キャッシュ・ライン転送状態制御を有することのログを更新することと
を含む、請求項２に記載の方法。
【請求項４】
前記キャッシュ・ライン要求が、前記リモート・ノード・コントローラに対応し、前記方法が、さらに、
前記キャッシュ・ライン要求がremote exclusive要求であることを判定することと、
前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定することと、
前記キャッシュ・ライン要求がremote exclusive要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
１つまたは複数の他のローカル・キャッシング・エージェントにその状況をinvalidにダウングレードするように通知することと、
前記通知に応答して、前記リモート・ノード・コントローラが前記キャッシュ・ラインに関する前記キャッシュ・ライン転送状態制御を有することのログを更新することと
を含む、請求項２に記載の方法。
【請求項５】
前記キャッシュ・ライン要求がshared要求であることを判定することと、
前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定することと、
前記キャッシュ・ライン要求がshared要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
制御するエージェントにその状況をsharedにダウングレードするように通知することであって、前記制御するエージェントが、前記exclusiveキャッシュ・ライン状況に関連する、通知することと、
前記通知に応答して、前記制御するエージェントがもはや前記キャッシュ・ラインに関するexclusiveキャッシュ・ライン状況を有しないことのログを更新することと
をさらに含む、請求項１に記載の方法。
【請求項６】
前記キャッシュ・ライン要求がexclusive要求であることを判定することと、
前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定することと、
前記キャッシュ・ライン要求がexclusive要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
制御するエージェントにその状況をinvalidにダウングレードするように通知することであって、前記制御するエージェントが、前記exclusiveキャッシュ・ライン状況に関連する、通知することと、
前記通知に応答して、前記ローカル・エージェントが前記キャッシュ・ラインに関するexclusiveキャッシュ・ライン状況を有することのログを更新することと
をさらに含む、請求項１に記載の方法。
【請求項７】
前記キャッシュ・ライン要求が、bus read line要求およびbus readinvalidate要求からなる群から選択される、請求項１に記載の方法。
【請求項８】
キャッシュ・ライン転送状態制御を管理するためのプログラムであって、該プログラムがコンピュータに、
ノード・コントローラで、キャッシュ・ライン要求を検出する機能と、
前記ノード・コントローラで、前記キャッシュ・ライン要求がローカル・キャッシング・エージェントに対応するかどうかを判定する機能と、
前記キャッシュ・ライン要求が前記ローカル・キャッシング・エージェントに対応するとの判定に応答して、キャッシュ・ライン転送状態制御を前記ノード・コントローラで保持すると同時にキャッシュ・ラインを前記ローカル・キャッシング・エージェントに転送することであって、前記キャッシュ・ラインが、前記キャッシュ・ライン要求に対応し、前記キャッシュ・ライン転送状態制御が、前記キャッシュ・ラインに対応する、転送する機能と
を実現させるプログラム。
【請求項９】
前記プログラムが、
前記キャッシュ・ライン要求がリモート・ノード・コントローラに対応することを判定する機能と、
前記キャッシュ・ライン要求が前記リモート・ノード・コントローラに対応するとの判定に応答して、前記キャッシュ・ラインおよび前記キャッシュ・ライン転送状態制御を前記リモート・ノード・コントローラに転送する機能と
をさらに含む、請求項８に記載のプログラム。
【請求項１０】
前記キャッシュ・ライン要求が、前記リモート・ノード・コントローラに対応し、前記プログラムが、さらに、
前記キャッシュ・ライン要求がremote shared要求であることを判定する機能と、
前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定する機能と、
前記キャッシュ・ライン要求がremote shared要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
制御するエージェントにその状況をsharedにダウングレードするように通知する機能であって、前記制御するエージェントが、前記exclusiveキャッシュ・ライン状況に関連する、通知する機能と、
前記通知に応答して、前記リモート・ノード・コントローラが前記キャッシュ・ラインに関する前記キャッシュ・ライン転送状態制御を有することのログを更新する機能と
を含む、請求項９に記載のプログラム。
【請求項１１】
前記キャッシュ・ライン要求が、前記リモート・ノード・コントローラに対応し、前記プログラムが、さらに、
前記キャッシュ・ライン要求がremote exclusive要求であることを判定する機能と、
前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定する機能と、
前記キャッシュ・ライン要求がremote exclusive要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
１つまたは複数の他のローカル・キャッシング・エージェントにその状況をinvalidにダウングレードするように通知する機能と、
前記通知に応答して、前記リモート・ノード・コントローラが前記キャッシュ・ラインに関する前記キャッシュ・ライン転送状態制御を有することのログを更新する機能と
を含む、請求項９に記載のプログラム。
【請求項１２】
前記プログラムが、
前記キャッシュ・ライン要求がshared要求であることを判定する機能と、
前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定する機能と、
前記キャッシュ・ライン要求がshared要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
制御するエージェントにその状況をsharedにダウングレードするように通知する機能であって、前記制御するエージェントが、前記exclusiveキャッシュ・ライン状況に関連する、通知する機能と、
前記通知に応答して、前記制御するエージェントがもはや前記キャッシュ・ラインに関するexclusiveキャッシュ・ライン状況を有しないことのログを更新する機能と
をさらに含む、請求項８に記載のプログラム。
【請求項１３】
前記プログラムが、
前記キャッシュ・ライン要求がexclusive要求であることを判定する機能と、
前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定する機能と、
前記キャッシュ・ライン要求がexclusive要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
制御するエージェントにその状況をinvalidにダウングレードするように通知する機能であって、前記制御するエージェントが、前記exclusiveキャッシュ・ライン状況に関連する、通知する機能と、
前記通知に応答して、前記ローカル・エージェントが前記キャッシュ・ラインに関するexclusiveキャッシュ・ライン状況を有することのログを更新する機能と
をさらに含む、請求項８に記載のプログラム。
【請求項１４】
前記キャッシュ・ライン要求が、bus read line要求およびbus readinvalidate要求からなる群から選択される、請求項８に記載のプログラム。
【請求項１５】
１つまたは複数のプロセッサと、
前記プロセッサによってアクセス可能なメモリと、
前記プロセッサによってアクセス可能な１つまたは複数の不揮発性ストレージ・デバイスと、
キャッシュ・ライン転送状態制御を管理するキャッシュ・ライン管理ツールと
を含む情報ハンドリング・システムであって、前記キャッシュ・ライン管理ツールが、効果的に、
ノード・コントローラで、コンピュータ・ネットワークを介して受け取られたキャッシュ・ライン要求を検出し、
前記ノード・コントローラで、前記キャッシュ・ライン要求がローカル・キャッシング・エージェントに対応するかどうかを判定し、
前記キャッシュ・ライン要求が前記ローカル・キャッシング・エージェントに対応するとの判定に応答して、キャッシュ・ライン転送状態制御を前記ノード・コントローラで保持すると同時に前記コンピュータ・ネットワークを介してキャッシュ・ラインを前記ローカル・キャッシング・エージェントに転送し、前記キャッシュ・ラインが、前記キャッシュ・ライン要求に対応し、前記キャッシュ・ライン転送状態制御が、前記キャッシュ・ラインに対応する
情報ハンドリング・システム。
【請求項１６】
前記キャッシュ・ライン管理ツールが、さらに、効果的に、
前記キャッシュ・ライン要求がリモート・ノード・コントローラに対応することを判定し、
前記キャッシュ・ライン要求が前記リモート・ノード・コントローラに対応するとの判定に応答して、前記コンピュータ・ネットワークを介して前記キャッシュ・ラインおよび前記キャッシュ・ライン転送状態制御を前記リモート・ノード・コントローラに転送する
請求項１５に記載の情報ハンドリング・システム。
【請求項１７】
前記キャッシュ・ライン要求が、前記リモート・ノード・コントローラに対応し、前記キャッシュ・ライン管理ツールが、さらに、効果的に、
前記キャッシュ・ライン要求がremote shared要求であることを判定し、
前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定し、
前記キャッシュ・ライン要求がremote shared要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
前記コンピュータ・ネットワークを介して制御するエージェントにその状況をsharedにダウングレードするように通知し、前記制御するエージェントが、前記exclusiveキャッシュ・ライン状況に関連し
前記通知に応答して、前記リモート・ノード・コントローラが前記キャッシュ・ラインに関する前記キャッシュ・ライン転送状態制御を有することの、前記不揮発性ストレージ・デバイスのうちの１つに置かれるログを更新する
請求項１６に記載の情報ハンドリング・システム。
【請求項１８】
前記キャッシュ・ライン要求が、前記リモート・ノード・コントローラに対応し、前記キャッシュ・ライン管理ツールが、さらに、効果的に、
前記キャッシュ・ライン要求がremote exclusive要求であることを判定し、
前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定し、
前記キャッシュ・ライン要求がremote exclusive要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
前記コンピュータ・ネットワークを介して１つまたは複数の他のローカル・キャッシング・エージェントにその状況をinvalidにダウングレードするように通知し、
前記通知に応答して、前記リモート・ノード・コントローラが前記キャッシュ・ラインに関する前記キャッシュ・ライン転送状態制御を有することの、前記不揮発性ストレージ・デバイスのうちの１つに含まれるログを更新する
請求項１６に記載の情報ハンドリング・システム。
【請求項１９】
前記キャッシュ・ライン管理ツールが、さらに、効果的に、
前記キャッシュ・ライン要求がshared要求であることを判定し、
前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定し、
前記キャッシュ・ライン要求がshared要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
前記コンピュータ・ネットワークを介して制御するエージェントにその状況をsharedにダウングレードするように通知し、前記制御するエージェントが、前記exclusiveキャッシュ・ライン状況に関連し、
前記通知に応答して、前記制御するエージェントがもはや前記キャッシュ・ラインに関するexclusiveキャッシュ・ライン状況を有しないことの、前記不揮発性ストレージ・デバイスのうちの１つに置かれるログを更新する
請求項１５に記載の情報ハンドリング・システム。
【請求項２０】
前記キャッシュ・ライン管理ツールが、さらに、効果的に、
前記キャッシュ・ライン要求がexclusive要求であることを判定し、
前記キャッシュ・ラインに対応するキャッシュ・ラインの現在の状況がexclusiveであることを判定し、
前記キャッシュ・ライン要求がexclusive要求であるとの判定および前記キャッシュ・ラインの現在の状況がexclusiveであるとの判定に応答して、
前記コンピュータ・ネットワークを介して制御するエージェントにその状況をinvalidにダウングレードするように通知し、前記制御するエージェントが、前記exclusiveキャッシュ・ライン状況に関連し、
前記通知に応答して、前記ローカル・キャッシュ・エージェントが前記キャッシュ・ラインに関するexclusiveキャッシュ・ライン状況を有することの、前記不揮発性ストレージ・デバイスのうちの１つに置かれるログを更新する
請求項１５に記載の情報ハンドリング・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デフォルト・データ転送コヒーレント・キャッシング・エージェントのシステムおよび方法に関する。具体的には、本発明は、スケーラブル・ノード・コントローラ・コンピュータ・システムを効果的にサポートするためにＭＥＳＩＦプロトコルの「Forward」状態制御を変更するシステムおよび方法に関する。
【背景技術】
【０００２】
キャッシュ・コヒーレンシは、コンピュータ・システムの一体の要素であり、データが失われるか上書きされることがなくなるようにキャッシュを管理するプロセスである。例えば、データがキャッシュ内で更新されたが、まだそのターゲットのメモリまたはディスクに転送されてないときに、破壊の可能性が高い。キャッシュ・コヒーレンシは、キャッシュを記憶するアルゴリズムおよびプロトコルを使用して得られる。対称マルチプロセッシング（ＳＭＰ）システムでは、複数のプロセッサが同一のメモリ空間を共用するので、キャッシュ・コヒーレンシがさらにクリティカルである。
【０００３】
１つの既存のキャッシュ・コヒーレンシ・プロトコルが、ＭＥＳＩＦ（Modify,Exclusive, Shared, Invalid, Forward）プロトコルである。キャッシュ・ラインが「modified」状態であるときに、キャッシング・エージェントは、コンピュータ・システム内に正しいデータだけを有する。キャッシュ・ラインが「exclusive」状態である（データが変更されていない）ときに、キャッシング・エージェントは、キャッシュ・ラインを変更するために排他的制御を有する。キャッシュ・ラインが「shared」状態であるときに、複数のキャッシング・エージェントが、そのキャッシュ・メモリ内に読み取るべきキャッシュ・ラインを有する可能性があり、各コピーは正しい。あるキャッシング・エージェントのキャッシュ・ラインが「invalid」状態であるときに、別のプロセッサが、対応するメモリ部分を更新したか、キャッシュ・ラインのexclusive状況を有するので、そのキャッシング・エージェントのコピーは正しくない。
【０００４】
最後に、キャッシング・エージェントが、キャッシュ・ライン「転送」状態制御を有するときに、そのキャッシング・エージェントは、キャッシュ・ライン要求を受け取ったときにそのキャッシュ・ラインを要求元のキャッシング・エージェントに転送する。転送状態は、ローカル・キャッシング・エージェントがキャッシュ・ラインのためにメイン・メモリにアクセスする必要を無くし、これによって、総合的なシステム性能が改善される。しかし、見つかっている課題は、転送状態が、スケーラブル・ノード・コントローラを使用するシステムについて最適化されていないということである。これらのシステムについて、リモート・プロセッサへのキャッシュ・アクセスから生じる待ち時間は、転送状態管理に応じて深刻になる場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、必要なものは、スケーラブル・ノード・コントローラを使用するシステムについてＭＥＳＩＦプロトコルのキャッシュ・ライン転送状態制御を効果的に管理するシステムおよび方法である。
【課題を解決するための手段】
【０００６】
前述の課題が、ノード・コントローラだけがＭＥＳＩＦプロトコルのキャッシュ・ライン転送状態制御を有することを許可するシステムおよび方法を使用することによって解決されることが発見された。ノード・コントローラが、ローカル・キャッシング・エージェントから要求を受け取ったときに、そのノード・コントローラは、対応するキャッシュ・ラインをローカル・キャッシング・エージェントに送り、その間ずっと、キャッシュ・ライン転送状態制御を維持する。ノード・コントローラが、リモート・ノード・コントローラから要求を受け取ったときには、そのノード・コントローラは、キャッシュ・ラインを、キャッシュ・ライン転送状態制御と共にリモート・ノード・コントローラに送る。
【０００７】
ノード・コントローラは、ローカル・キャッシング・エージェント（ローカル・プロセッサ）またはリモート・ノード・コントローラのいずれかからキャッシュ・ライン要求を受け取る。ノード・コントローラは、キャッシュ・ライン要求のソース、要求タイプ、およびキャッシュ・ラインの現在の状況に基づいて、特定のアクションを実行する。ノード・コントローラが、ローカル・キャッシング・エージェントからshared要求を受け取り、対応するキャッシュ・ラインの現在の状況がsharedであるときには、そのノード・コントローラは、単純にそのキャッシュ・ラインをローカル・キャッシング・エージェントに送る。例えば、２つのプロセッサが、特定のキャッシュ・ラインを共用しており（例えば読み取っており）、第３のプロセッサが、同一のキャッシュ・ラインの読み取りを望む場合がある。
【０００８】
ノード・コントローラが、ローカル・キャッシング・エージェントからshared要求を受け取り、対応するキャッシュ・ラインの現在の状況がexclusiveであるときには、そのノード・コントローラは、まず、exclusive状態のキャッシュ・ラインを有するキャッシング・エージェントである制御するエージェントに、状況を「shared」にダウングレードするように通知する。次に、ノード・コントローラは、キャッシュ・ラインをローカル・キャッシング・エージェントに送り、そのキャッシュ・ラインがshared状態であることのログを更新する。
【０００９】
ノード・コントローラが、ローカル・キャッシング・エージェントからexclusive要求を受け取るときには、キャッシュ・ラインの現在の状況は多少重要でない。というのは、ローカル・キャッシング・エージェントが排他的アクセスを要求するので、ノード・コントローラが、共用するキャッシング・エージェントならびに制御するエージェントに、状況を「invalid」にダウングレードするように通知するからである。この通知が送られたならば、ノード・コントローラは、キャッシュ・ラインをローカル・キャッシング・エージェントに送り、次に、そのログを更新して、そのキャッシュ・ラインの制御するエージェントとしてそのローカル・キャッシング・エージェントを識別する。
【００１０】
ノード・コントローラが、リモート・ノード・コントローラからremote shared要求を受け取り、そのキャッシュ・ラインの現在の状況がsharedであるときには、ノード・コントローラは、そのキャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送る。次に、ノード・コントローラは、そのログを更新して、リモート・ノード・コントローラが現在その特定のキャッシュ・ラインのキャッシュ・ライン転送状態制御を有することを識別する。
【００１１】
ノード・コントローラが、リモート・ノード・コントローラからremote shared要求を受け取り、その対応するキャッシュ・ラインの現在の状況がexclusiveであるときには、ノード・コントローラは、まず、制御するエージェントに、状況をsharedにダウングレードするように通知する。ノード・コントローラは、次に、そのキャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送る。次に、ノード・コントローラは、そのログを更新して、リモート・ノード・コントローラが現在その特定のキャッシュ・ラインのキャッシュ・ライン転送状態制御を有することを識別する。
【００１２】
最後に、ノード・コントローラが、リモート・ノード・コントローラからremoteexclusive要求を受け取るときには、これは、キャッシュ・ラインの現在の状況に関して多少重要でない。ノード・コントローラは、まず、共用するキャッシング・エージェントならびに制御するエージェントに、状況を「invalid」にダウングレードするように通知する。通知が送られたならば、ノード・コントローラは、そのキャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送る。次に、ノード・コントローラは、そのログを更新して、リモート・ノード・コントローラが現在その特定のキャッシュ・ラインの転送状態制御を有することを識別する。
【００１３】
前述は、要約であり、したがって、必要により、詳細の単純化、一般化、および省略を含む。その結果、当業者は、この要約が、例示的に過ぎず、いかなる形でも制限的であることを意図されていないことを諒解するであろう。本発明の他の態様、発明的特徴、および利益は、請求項のみによって定義されるが、下で示す非制限的な詳細な説明から明白になる。
【００１４】
添付図面を参照することによって、本発明をよりよく理解でき、その多数の目的、特徴および利益が当業者に明白になる。
【発明を実施するための最良の形態】
【００１５】
次は、本発明の実施例の詳細な説明を提供することを意図されたものであって、本発明自体の制限と解釈してはならない。そうではなく、任意の個数の変形形態を本発明の範囲に含めることができ、本発明の範囲は、この説明に添付された請求項で定義される。
【００１６】
図１は、本明細書に記載の発明なしの、既存のＭＥＳＩＦ（Modify,Exclusive, Shared, Invalid, Forward）プロトコルに従うコンピュータ・システムを示す図である。図１に示された各プロセッサおよびノード・コントローラに、キャッシング・エージェントが含まれ、このキャッシング・エージェントが、キャッシュ・ラインを要求し、受け取る。プロセッサは、特定のキャッシュ・ラインの「ホーム・ノード」を判定するためにメモリ・マップにアクセスし、ホーム・ノードは、キャッシュ・ラインの物理位置である。
【００１７】
図１の例は、プロセッサＡ  １００が、読取のみのためにキャッシュ・ラインを要求することから始まる。プロセッサＡ  １００は、プロセッサＤ  １１５が、その特定のキャッシュ・ラインのホーム・ノードであると判定し、要求１５０をプロセッサＤ  １１５に送る。さらに、プロセッサＡ  １００は、「スヌープ」１５２、１５４、および１５６を、それぞれプロセッサＢ  １０５、プロセッサＣ  １１０、およびノード・コントローラＹ  １２０に送る。スヌープは、ホーム・ノードでない他のローカル・キャッシング・エージェントへの、ホーム・ノード・キャッシング・エージェント以外のキャッシング・エージェントが要求されたキャッシュ・ラインの制御を有するときの状況を処理する要求である（下を参照されたい）。
【００１８】
図１に示された実施例では、プロセッサＣ  １１０が、特定のキャッシュ・ラインの制御を有し、「キャッシュ・ライン転送状態制御」も有する（既存のＭＥＳＩＦプロトコルに基づいて）。キャッシュ・ライン転送状態制御を有するキャッシング・エージェントは、キャッシュ・ラインをローカル・キャッシング・エージェントに転送する責任を負う。したがって、プロセッサＣ  １１０は、キャッシュ・ラインならびにキャッシュ・ライン転送状態制御をプロセッサＡ  １００に転送する（転送１６０）。さらに、プロセッサＣ  １１０は、そのアクションを示すスヌープ応答１６２をプロセッサＤ  １１５（ホーム・ノード）に送る。プロセッサＢ  １０５、プロセッサＣ  １１０、およびノード・コントローラＹ  １２０も、それぞれスヌープ応答１５８、１６２、および１５９をプロセッサＤ  １１５に送る。
【００１９】
図１の実施例を続けると、今度はプロセッサＥ  １２５（リモート・プロセッサ）が、同一のキャッシュ・ラインを読み取ることを要求する。したがって、プロセッサＥ  １２５は、要求１７０をノード・コントローラＺ  １４５に送り、ノード・コントローラＺ  １４５が、要求１７０をノード・コントローラＹ  １２０に送る。この時点で、既存技術は、プロセッサＥ  １２５にキャッシュ・ラインを与える２つの代替案を許す。
【００２０】
第１の代替案は、ノード・コントローラＹに、キャッシュ・ライン転送状態制御と共にキャッシュ・ラインをプロセッサＥ  １２５に送らせることである（転送Ｎ  １７５）。この代替案の不利益は、キャッシュ・ライン転送状態制御の複雑な管理であり、これは、プロセッサＡ  １００およびプロセッサＥ  １２５が、同時にキャッシュ・ライン転送状態制御を有することをもたらす可能性がある。
【００２１】
第２の代替案は、プロセッサＡ  １００に、キャッシュ・ライン転送状態制御と共にキャッシュ・ラインをノード・コントローラＹ  １２０を介してプロセッサＥ  １２５に送らせることである（転送Ｐ  １８０）。この代替案の不利益は、データ待ち時間の大きい増加があることであり、これは、総合的なシステム性能を劣化させる。したがって、本明細書で説明する発明を使用して、ノード・コントローラだけがキャッシュ・ライン転送状態制御を有するようにさせるようにＭＥＳＩＦプロトコルを変更することによって、システムの複雑さおよびシステム待ち時間が減る（さらなる詳細については図２〜６および対応するテキストを参照されたい）。
【００２２】
図２は、本明細書で説明する発明を使用して変更されたＭＥＳＩＦプロトコルに従うコンピュータ・システムを示す図である。変更されたＭＥＳＩＦプロトコルは、ノード・コントローラだけがキャッシュ・ライン転送状態制御を有することを可能にする。その結果、ノード・コントローラは、ローカル・キャッシュ・エージェントにキャッシュ・ラインを送ると同時に、キャッシュ・ライン転送状態制御を維持する。ノード・コントローラが、リモート・ノード・コントローラから要求を受け取ったときに、ノード・コントローラは、キャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送る。プロセッサＡ  １００、Ｂ  １０５、Ｃ  １１０、Ｄ  １１５、ならびにノード・コントローラＹ  １２０およびＺ  １４５は、図１に示されたものと同一である。
【００２３】
図２の実施例は、図１と同様に、プロセッサＡ  １００が、キャッシュ・ライン「shared要求」（読取目的のみ）を要求することから始まる。プロセッサＡ  １００は、プロセッサＤ  １１５が、その特定のキャッシュ・ラインのホーム・ノードであると判定し、要求２００をプロセッサＤ  １１５に送る。さらに、プロセッサＡ  １００は、「スヌープ」２０２、２０４、および２０６を、それぞれプロセッサＢ  １０５、プロセッサＣ  １１０、およびノード・コントローラＹ  １２０に送る。
【００２４】
一実施形態で、shared要求は、「Bus Read Line」（ＢＲＬ）要求である。この実施形態では、キャッシング・エージェントは、キャッシュ・ラインがshared、exclusive、invalidのエンタープライズ・ティア・コンポーネントであるかどうかを知らない。キャッシュ・ラインが、別のプロセッサまたはノード・コントローラで使用中である場合に、要求元エージェントは、ＢＲＬ要求の結果として、shared状態でそのラインをキャッシングする。
【００２５】
図２に示された実施例では、プロセッサＣ  １１０が、プロセッサＡ  １００によって要求されたキャッシュ・ライン（exclusive状態）の制御を有する。しかし、本明細書で説明する発明を使用すると、プロセッサＣ  １１０は、キャッシュ・ライン転送状態制御を有しない。そうではなく、ノード・コントローラＹ  １２０がキャッシュ・ライン転送状態制御を有する。プロセッサＢ  １０５、プロセッサＣ  １１０、およびノード・コントローラＹ  １２０は、それぞれスヌープ応答２０８、２１０、および２１２をプロセッサＤ  １１５に送る。
【００２６】
ノード・コントローラＹ  １２０がキャッシュ・ライン転送状態制御を有することの結果として、ノード・コントローラＹ  １２０は、メッセージ２２０をプロセッサＣ  １１０に送り、このメッセージは、プロセッサＣ  １１０に、その状況をshared状態にダウングレードするように指示する。次に、ノード・コントローラＹ  １２０は、キャッシュ・ラインをプロセッサＡ  １００に送り（送出２１５）、その間ずっと、キャッシュ・ライン転送状態制御を維持する。
【００２７】
図２の実施例を続けると、今度は、プロセッサＥ  １２５（リモート・プロセッサ）が、同一のキャッシュ・ラインを読み取ることを要求する。したがって、プロセッサＥ  １２５は、要求２３０をノード・コントローラＺ  １４５に送り、ノード・コントローラＺ  １４５が、要求２３０をノード・コントローラＹ  １２０に送る。ノード・コントローラＹ  １２０は、キャッシュ・ライン転送状態制御を有するので、ノード・コントローラＹ  １２０は、キャッシュ・ラインをキャッシュ・ライン転送状態制御と共にノード・コントローラＺ  １４５に送る（転送２４０）。転送２４０を送る前に、ノード・コントローラＹ  １２０は、状況をダウングレードするように通知するメッセージを１つまたは複数のローカル・プロセッサ（プロセッサＡ  １００、プロセッサＢ  １０５、プロセッサＣ  １１０、およびプロセッサＤ  １１５）に送ることができる。このメッセージは、そのキャッシュ・ラインの現在の状況および要求２３０の要求「タイプ」（sharedまたはexclusive）に基づく（状況ダウングレードに関するさらなる詳細については、図３および対応するテキストを参照されたい）。
【００２８】
ノード・コントローラＺ  １４５は、キャッシュ・ラインおよびキャッシュ・ライン転送状態制御を受け取ったならば、キャッシュ・ライン転送状態制御を保持し、キャッシュ・ラインをプロセッサＥ  １２５に送る（送出２５０）。その結果、ノード・コントローラＹ  １２０およびＺ  １４５だけが、キャッシュ・ライン転送状態制御の所有を有する。
【００２９】
図３は、キャッシュ・ライン要求タイプおよびキャッシュ・ラインの現在の状況に基づくノード・コントローラ・アクションを示す表である。キャッシュ・ライン要求タイプを、ノード・コントローラがサポートするプロセッサからなどのローカル要求とすることができ、あるいは、キャッシュ・ライン要求を、リモート・ノード・コントローラからなどのリモート要求とすることができる。キャッシュ・ラインの現在の状況は、１つまたは複数のキャッシング・エージェントがあるキャッシュ・ラインを読み取っている場合には「shared」とすることができ、あるいは、キャッシュ・ラインの現在の状況は、キャッシング・エージェントのうちの１つがexclusive状態でキャッシュ・ラインを有し、そのキャッシュ・ラインの変更を意図しているが、まだそのキャッシュ・ラインを変更していない場合に「exclusive」とすることができる。
【００３０】
一実施形態で、exclusive要求は、「Bus Read InvalidateLine」（ＢＲＩＬ）要求である。この実施形態で、キャッシング・エージェントは、キャッシュ・ラインが現在shared、exclusive、invalidなどであるかどうかを知らない。キャッシング・エージェントが、キャッシュ・ラインの内容を変更する意図をもってキャッシュ・ラインを読み取ることを要求する（ＢＲＩＬ要求）ときに、そのキャッシュ・ラインの状態が、現在そのキャッシュ・ラインを使用している他のキャッシング・エージェントで「invalid」にダウングレードされる。
【００３１】
表３００に、列３１０から３３０が含まれる。列３１０に、ノード・コントローラがローカル・キャッシング・エージェントまたはリモート・ノード・コントローラから受け取る様々な要求タイプが含まれる。列３２０に、「shared」または「exclusive」のキャッシュ・ラインの現在の状況識別子が含まれ、列３３０に、列３１０の要求タイプおよび列３２０のキャッシュ・ラインの現在の状況に基づいてノード・コントローラが実行するアクションが含まれる。
【００３２】
行３４０から３６０に、ノード・コントローラがローカル・キャッシング・エージェントからキャッシュ・ライン要求を受け取ったときに行われるアクションを示す。行３４０は、ローカル・キャッシング・エージェントからshared要求を受け取ることと、対応するキャッシュ・ラインの現在の状況がsharedであることによって、ノード・コントローラが、単純にそのキャッシュ・ラインをローカル・キャッシング・エージェントに送ることを示す。例えば、２つのプロセッサが、特定のキャッシュ・ラインを共用しており（例えば、読み取っており）、第３のプロセッサが、同一のキャッシュ・ラインを読み取ることを望む場合がある。
【００３３】
行３５０は、ノード・コントローラが、ローカル・キャッシング・エージェントからshared要求を受け取り、対応するキャッシュ・ラインの現在の状況がexclusiveであるときに、ノード・コントローラが、まず、状況を「shared」にダウングレードするように制御するエージェントに通知することを示し、この制御するエージェントは、exclusive状態のキャッシュ・ラインを有するキャッシング・エージェントである。次に、ノード・コントローラは、キャッシュ・ラインをローカル・キャッシング・エージェントに送り、次に、ノード・コントローラは、キャッシュ・ラインがshared状況であることのログを更新する。
【００３４】
行３６０は、ノード・コントローラがexclusive要求タイプを受け取ったときに、これが、キャッシュ・ラインの現在の状況に関して多少重要でないことを示す。というのは、ローカル・キャッシング・エージェントが排他的アクセスを要求するので、ノード・コントローラが、共用するキャッシング・エージェントならびに制御するエージェントに、状況をinvalidにダウングレードするように通知するからである。この通知が送られたならば、ノード・コントローラは、キャッシュ・ラインをローカル・キャッシング・エージェントに送り、次に、そのログを更新して、そのキャッシュ・ラインの制御するエージェントとしてそのローカル・キャッシング・エージェントを識別する。
【００３５】
行３７０から３９０は、ノード・コントローラがリモート・ノード・コントローラから要求を受け取ったときに行われるアクションを示す。行３７０は、ノード・コントローラがremote shared要求を受け取り、そのキャッシュ・ラインの現在の状況がsharedであるときに、ノード・コントローラが、そのキャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送ることを示す。次に、ノード・コントローラは、そのログを更新して、リモート・ノード・コントローラが、現在、その特定のキャッシュ・ラインのキャッシュ・ライン転送状態制御を有することを識別する。
【００３６】
行３８０は、ノード・コントローラが、remote shared要求を受け取り、対応するキャッシュ・ラインの現在の状況がexclusiveであるときに、ノード・コントローラが、まず、状況をsharedにダウングレードするように制御するエージェントに通知することを示す。次に、ノード・コントローラは、キャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送る。次に、ノード・コントローラは、そのログを更新して、リモート・ノード・コントローラが、現在、その特定のキャッシュ・ラインのキャッシュ・ライン転送状態制御を有することを識別する。
【００３７】
行３９０は、ノード・コントローラがremote exclusive要求タイプを受け取ったときに、これが、行３６０に示されているように、キャッシュ・ラインの現在の状況に関して多少重要でないことを示す。ノード・コントローラは、まず、共用するキャッシング・エージェントならびに制御するエージェントに、状況をinvalidにダウングレードするように通知する。この通知が送られたならば、ノード・コントローラは、キャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに送る。次に、ノード・コントローラは、そのログを更新して、リモート・ノード・コントローラが、現在、その特定のキャッシュ・ラインのキャッシュ・ライン転送状態制御を有することを識別する。
【００３８】
図４は、キャッシュ・ラインを要求し、ノード・コントローラからそのキャッシュ・ラインを受け取るキャッシング・エージェントで行われるステップを示す流れ図である。キャッシング・エージェントは、プロセッサに含まれ、アプリケーションからなど、キャッシュ・ライン要求を処理する。キャッシュ・ライン要求は、内部キャッシュ・ライン（プロセッサの内部）または外部キャッシュ・ライン（プロセッサの外部）に対応するものとすることができる。
【００３９】
キャッシング・エージェント処理は、４００で開始され、その後、キャッシング・エージェントが、ステップ４１０でアプリケーション４０５からメモリ要求を受け取る。例えば、アプリケーション４０５が、数値を計算しており、特定のキャッシュ・ラインに保管された数を必要とする場合がある。ステップ４２０で、キャッシング・エージェントが、メモリ・マップ４２５内でメモリ位置をルック・アップして、キャッシュ・ラインの「ホーム・ノード」を識別し、このホーム・ノードは、キャッシュ・ラインの物理プロセッサ位置である。メモリ・マップ４２５は、コンピュータ・メモリなどの揮発性ストレージ・エリアに保管することができる。
【００４０】
そのプロセッサ自体がホーム・ノードであるかどうかに関する判定を行う（判断４３０）。そのプロセッサ自体がホーム・ノードである場合には、判断４３０は、「Yes」分岐４３２に分岐し、その後、キャッシング・エージェントが、ローカル・メモリからキャッシュ・ラインを取り出し（ステップ４３５）、ステップ４４０でそのキャッシュ・ラインをアプリケーション４０５に供給する。キャッシング・エージェント処理は、４４５で終了する。
【００４１】
その一方で、要求されたキャッシュ・ラインのホーム・ノードが、異なるプロセッサである場合に、判断４３０は、「No」分岐４３８に分岐し、その後、キャッシング・エージェントが、上の識別されたメモリ・マップ位置に基づいて、対応するキャッシュ・ラインのホーム・ノードを識別する（ステップ４５０）。例えば、４プロセッサ・システムで、キャッシング・エージェントが、キャッシュ・ラインのホーム・ノードが第３プロセッサであると識別する場合がある。
【００４２】
ステップ４６０で、キャッシング・エージェントが、ホーム・ノード・プロセッサ（プロセッサ４６５に含まれる）に要求を送り、プロセッサ４６５ならびにノード・コントローラ４７０内で他のプロセッサに「スヌープ」を送る。ノード・コントローラ４７０は、キャッシュ・ライン転送を制御するローカル・ノード・コントローラである。ステップ４８０で、キャッシング・エージェントが、要求されたキャッシュ・ラインをノード・コントローラ４７０から受け取り、ステップ４８５で、そのキャッシュ・ラインをアプリケーション４０５に供給する。処理は４９０で終了する。
【００４３】
図５は、キャッシュ・ライン要求を処理するノード・コントローラ内で行われるステップを示す高水準流れ図である。ノード・コントローラ処理は、５００で開始され、その後、ノード・コントローラが、プロセッサ５１５に含まれるローカル・キャッシング・エージェントまたはリモート・ノード・コントローラ５２０のいずれかからキャッシュ・ライン要求を受け取る。
【００４４】
キャッシュ・ライン要求が、プロセッサ５１５から（ローカル要求）またはリモート・ノード・コントローラから（リモート要求）のどちらであるかに関する判定を行う（判断５３０）。キャッシュ・ライン要求がリモート要求である場合には、判断５３０は、「Yes」分岐５３２に分岐し、その後、ノード・コントローラが、リモート要求を処理する（事前定義の処理ブロック５３５。さらなる詳細については図６および対応するテキストを参照されたい）。
【００４５】
その一方で、キャッシュ・ライン要求がローカル要求である場合に、判断５３０は、「No」分岐５３８に分岐し、その後、キャッシュ・ライン要求の「要求タイプ」に関する判定を行う。要求タイプが「shared」要求（読取専用）である場合と、要求タイプが「exclusive」要求（変更が意図される）である場合がある（判断５４０）。要求がexclusive要求である場合に、判断５４０は、「Exclusive」分岐５４２に分岐し、その後、ローカル・キャッシング・エージェントが対応するキャッシュ・ラインに対するexclusive状況を要求しているので、処理は、shared状態またはexclusive状態である対応するキャッシュ・ラインを有する他のエージェントに、状況を「invalid」状態にダウングレードするように通知する（ステップ５４５）。
【００４６】
ステップ５５０で、ノード・コントローラは、キャッシュ・ラインをローカル・キャッシング・エージェントに送り、その間ずっと、そのキャッシュ・ラインの「転送状態制御」を維持する。その間に、ノード・コントローラがキャッシュ・ラインをローカル・キャッシング・エージェントに送った場合であっても、あるキャッシング・エージェントが次に同一キャッシュ・ラインを要求したときに、ノード・コントローラは、まだそのキャッシュ・ラインをそのキャッシング・エージェントに送る責任を負う。ステップ５５５で、ノード・コントローラは、新しい制御するエージェントとしてそのローカル・キャッシング・エージェントを識別するログを更新する（exclusiveキャッシュ・ライン要求に起因して）。
【００４７】
その一方で、キャッシュ・ライン要求がshared要求（読取専用）である場合に、判断５４０は、「Shared」分岐５４８に分岐し、その後、対応するキャッシュ・ラインの現在の状況（sharedまたはexclusiveである場合がある）に関する判定を行う（判断５６０）。キャッシュ・ラインの現在の状況が「shared」の場合に、判断５６０は、「Shared」分岐５６２に分岐し、その後、ノード・コントローラが、ステップ５６５で、プロセッサ５１５内のローカル・キャッシング・エージェントにキャッシュ・ラインを送る。やはり、ノード・コントローラは、転送状態制御を維持する。
【００４８】
その一方で、キャッシュ・ラインの現在の状況がexclusiveである場合に、判断５６０は、「Exclusive」分岐５６８に分岐し、その後、ノード・コントローラが、ステップ５７０で、制御するエージェント（キャッシュ・ラインのexclusive状況を現在有するエージェント）に、状況を「shared」にダウングレードするように通知する。ステップ５７５で、ノード・コントローラは、キャッシュ・ラインを、プロセッサ５１５内に位置するローカル・キャッシング・エージェントに転送する。ノード・コントローラは、ステップ５８０で、どのキャッシング・エージェントも、現在は制御するエージェントでないことをログ記録する。
【００４９】
ノード・コントローラ処理を継続するかどうかに関する判定を行う（判断５９０）。ノード・コントローラが、キャッシュ・ライン要求の処理を継続しなければならない場合には、判断５９０は、「Yes」分岐５９２に分岐し、これは、もう１つのキャッシュ・ライン要求を処理するためにループ・バックする。このループは、ノード・コントローラが終了しなければならなくなるまで継続され、その時点で、判断５９０は、「No」分岐５９８に分岐し、その後、処理が５９９で終了する。
【００５０】
図６は、リモート・キャッシュ・ライン要求を処理する際に行われるステップを示す流れ図である。図６のステップは、図５のステップに似ているが、ノード・コントローラが、キャッシュ・ラインの「転送状態制御」ならびにキャッシュ・ライン自体をリモート・ノード・コントローラに転送することが異なる。処理は、６００で開始され、その後、リモート・ノード・コントローラの要求タイプに関する判定を行う（判断６１０）。要求がremote exclusive要求である場合に、判断６１０は、「Remote Exclusive」分岐６１２に分岐し、その後、ローカル・キャッシング・エージェントが対応するキャッシュ・ラインに対するexclusive状況を要求しているので、処理は、shared状態またはexclusive状態である対応するキャッシュ・ラインを有する他のエージェントに、状況をinvalid状態にダウングレードするように通知する（ステップ６１５）。
【００５１】
ステップ６２０で、ノード・コントローラは、キャッシュ・ラインおよび転送状態制御をリモート・ノード・コントローラに送る。その結果、リモート・ノード・コントローラは、現在、その特定のキャッシュ・ラインに関する後続要求を処理する責任を負う。ステップ６２５で、ノード・コントローラは、そのキャッシュ・ラインの転送状態制御を有するリモート・コントローラを識別するログを更新する。
【００５２】
その一方で、キャッシュ・ライン要求がshared要求（読取専用）である場合に、判断６１０は、「RemoteShared」分岐６１８に分岐し、その後、対応するキャッシュ・ラインの現在の状況（sharedまたはexclusiveである場合がある）に関する判定を行う（判断６３０）。キャッシュ・ラインの現在の状況が「shared」の場合に、判断６３０は、「Shared」分岐６３２に分岐し、その後、ノード・コントローラが、ステップ６３５で、リモート・ノード・コントローラにキャッシュ・ラインおよび転送状態制御を送る。ステップ６４０で、ノード・コントローラは、そのキャッシュ・ラインの転送状態制御を有するリモート・コントローラを識別するログを更新する。
【００５３】
その一方で、キャッシュ・ラインの現在の状況がexclusiveである場合に、判断６３０は、「Exclusive」分岐６３８に分岐し、その後、ノード・コントローラが、ステップ６４５で、制御するエージェント（キャッシュ・ラインのexclusive状況を現在有するエージェント）に、状況を「shared」にダウングレードするように通知する。ステップ６５０で、ノード・コントローラは、キャッシュ・ラインおよび転送状態制御をリモート・ノード・コントローラに送る。ノード・コントローラは、ステップ６５５で、どのキャッシング・エージェントも、制御するエージェント（排他制御）でないことと、リモート・ノード・コントローラがそのキャッシュ・ラインの転送状態制御を有することをログ記録する。処理は、６６０でリターンする。
【００５４】
図７に、本明細書で説明したコンピューティング動作を実行できるコンピュータ・システムの単純化された実施例である、情報ハンドリング・システム７０１を示す。情報ハンドリング・システム７０１に、プロセッサ７００が含まれ、プロセッサ７００は、ホスト・バス７０２に結合される。レベル２（Ｌ２）キャッシュ・メモリ７０４も、ホスト・バス７０２に結合される。ホスト−ＰＣＩブリッジ７０６が、メイン・メモリ７０８に結合され、キャッシュ・メモリおよびメイン・メモリ制御機能を含み、ＰＣＩバス７１０、プロセッサ７００、Ｌ２キャッシュ・メモリ７０４、メイン・メモリ７０８、およびホスト・バス７０２の間の転送を処理するバス制御を提供する。メイン・メモリ７０８は、ホスト−ＰＣＩブリッジ７０６ならびにホスト・バス７０２に結合される。ＬＡＮカード７３０など、プロセッサ７００だけによって使用されるデバイスは、ＰＣＩバス７１０に結合される。サービス・プロセッサ・インターフェースおよびＩＳＡアクセス・パススルー７１２が、ＰＣＩバス７１０とＰＣＩバス７１４の間のインターフェースを提供する。この形で、ＰＣＩバス７１４が、ＰＣＩバス７１０から絶縁される。フラッシュ・メモリ７１８などのデバイスが、ＰＣＩバス７１４に結合される。一実装で、フラッシュ・メモリ７１８に、様々な低水準システム機能およびシステム・ブート機能に必要なプロセッサ実行可能コードを組み込んだＢＩＯＳコードが含まれる。
【００５５】
ＰＣＩバス７１４は、プロセッサ７００およびサービス・プロセッサ７１６によって共用される、例えばフラッシュ・メモリ７１８を含む様々なデバイスに関するインターフェースを提供する。ＰＣＩ−ＩＳＡブリッジ７３５は、ＰＣＩバス７１４とＩＳＡバス７４０の間の転送を処理するバス制御、universal serial bus（ＵＳＢ）機能性７４５、ならびに電力管理機能性７５５を提供し、リアルタイム・クロック（ＲＴＣ）、ＤＭＡ制御、割込みサポート、およびシステム管理バス・サポートなど、図示されていない他の機能要素を含むことができる。不揮発性ＲＡＭ  ７２０が、ＩＳＡバス７４０に接続される。サービス・プロセッサ７１６に、初期化ステップ中にプロセッサ７００と通信するＪＴＡＧ／Ｉ２Ｃバス７２２が含まれる。ＪＴＡＧ／Ｉ２Ｃバス７２２は、Ｌ２キャッシュ・メモリ７０４、ホスト−ＰＣＩブリッジ７０６、およびメイン・メモリ７０８にも結合され、プロセッサ、サービス・プロセッサ、Ｌ２キャッシュ、ホスト−ＰＣＩブリッジ、およびメイン・メモリの間の通信経路を提供する。サービス・プロセッサ７１６は、情報ハンドリング・システム７０１をパワー・ダウンするためにシステム電源リソースにもアクセスすることができる。
【００５６】
周辺デバイスおよび入出力（Ｉ／Ｏ）デバイスを、様々なインターフェース（例えば、ＩＳＡバス７４０に結合されたパラレル・インターフェース７６２、シリアル・インターフェース７６４、キーボード・インターフェース７６８、およびマウス・インターフェース７７０）に接続することができる。その代わりに、多数のＩ／Ｏデバイスに、ＩＳＡバス７４０に接続されたスーパーＩ／Ｏコントローラ（図示せず）によって対処することができる。
【００５７】
ネットワークを介してファイルをコピーするために情報ハンドリング・システム７０１を別のコンピュータ・システムに接続するために、ＬＡＮカード７３０が、ＰＣＩバス７１０に結合される。同様に、電話回線接続を使用してインターネットに接続するために情報ハンドリング・システム７０１をＩＳＰに接続するために、モデム７７５が、シリアル・インターフェース７６４およびＰＣＩ−ＩＳＡブリッジ７３５に接続される。
【００５８】
図７に、プロセッサ７００を使用する１つの情報ハンドリング・システムが示されているが、情報ハンドリング・システムは、多数の形をとることができる。例えば、情報ハンドリング・システム７０１は、デスクトップ機、サーバ機、ポータブル機、ラップトップ機、ノートブック機、または他のフォーム・ファクタのコンピュータまたはデータ処理システムの形をとることができる。情報ハンドリング・システム７０１は、携帯情報端末（ＰＤＡ）、ゲーム機、ＡＴＭ機、ポータブル電話デバイス、通信デバイス、またはプロセッサおよびメモリを含む他のデバイスなど、他のフォーム・ファクタをとることもできる。
【００５９】
本発明の好ましい実施形態の１つが、クライアント・アプリケーションすなわち、例えばコンピュータのランダム・アクセス・メモリに常駐することのできる、コード・モジュール内の命令のセット（プログラム・コード）である。コンピュータによって要求されるまで、命令のセットを、別のコンピュータ・メモリ、例えば、ハード・ディスク・ドライブ内または光ディスク（ＣＤ  ＲＯＭでの最終的な使用のために）もしくはフロッピ・ディスク（フロッピ・ディスク・ドライブでの最終的な使用のために）などのリムーバブル・メモリ内に保管することができ、あるいは、インターネットまたは他のコンピュータ・ネットワークを介してダウンロードすることができる。したがって、本発明は、コンピュータで使用されるコンピュータ・プログラム製品として実施することができる。さらに、説明された様々な方法は、ソフトウェアによって選択的にアクティブ化されるか再構成される汎用コンピュータで便利に実施されるが、当業者は、そのような方法を、ハードウェアで、ファームウェアで、または必要な方法ステップを実行するように構成されたより特殊化された装置で実行できることも認めるであろう。
【００６０】
本発明の特定の実施形態を図示し、説明してきたが、本明細書の教示に基づいて、本発明およびそのより広い態様から逸脱せずに変更および修正を行えることは、当業者に明白であろう。したがって、添付請求項は、その範囲に、本発明の真の趣旨および範囲に含まれるものとしてそのような変更および修正のすべてを含まなければならない。さらに、本発明が、添付請求項のみによって定義されることを理解されたい。特定の個数の導入された請求要素が意図される場合に、その意図が、請求項に明示的に示され、そのような明示がない場合に、そのような制限が存在しないことが、当業者によって理解されるであろう。
【図面の簡単な説明】
【００６１】
【図１】本明細書に記載の発明なしの、キャッシュ・ライン転送状態制御をリモート・ノード・プロセッサに転送するプロセッサまたはノード・コントローラを示す図である。
【図２】キャッシュ・ラインおよびキャッシュ・ライン転送状態制御をリモート・ノード・コントローラに転送するノード・コントローラを示す図である。
【図３】キャッシュ・ライン要求タイプおよびキャッシュ・ラインの現在の状況に基づくノード・コントローラ・アクションを示す表である。
【図４】キャッシュ・ラインを要求し、ノード・コントローラからそのキャッシュ・ラインを受け取るプロセッサで行われるステップを示す流れ図である。
【図５】キャッシュ・ライン要求を処理するノード・コントローラ内で行われるステップを示す高水準流れ図である。
【図６】リモート・キャッシュ・ライン要求を処理する際に行われるステップを示す流れ図である。
【図７】本発明を実装することのできるコンピューティング・デバイスを示すブロック図である。
【符号の説明】
【００６２】
１００  プロセッサＡ
１０５  プロセッサＢ
１１０  プロセッサＣ
１１５  プロセッサＤ
１２０  ノード・コントローラＹ
１２５  プロセッサＥ
１４５  ノード・コントローラＺ
１５０  要求
１５２  スヌープ
１５４  スヌープ
１５６  スヌープ
１５８  スヌープ応答
１５９  スヌープ応答
１６０  転送
１６２  スヌープ応答
１７０  要求
１７５  転送Ｎ
１８０  転送Ｐ
２００  要求
２０２  スヌープ
２０４  スヌープ
２０６  スヌープ
２０８  スヌープ応答
２１０  スヌープ応答
２１２  スヌープ応答
２１５  送出
２２０  メッセージ
２３０  要求
２４０  転送
２５０  送出
４００  キャッシング・エージェントが開始するステップ
４０５  アプリケーション
４１０  メモリ要求を受け取るステップ
４２０  メモリ位置をルック・アップするステップ
４２５  メモリ・マップ
４３０  ホーム・ノードかどうかを判定するステップ
４３５  キャッシュ・ラインを取り出すステップ
４４０  キャッシュ・ラインを供給するステップ
４４５  終了するステップ
４５０  ホーム・ノードを識別するステップ
４６０  ホーム・ノードに要求を送り、他のノードをスヌープするステップ
４６５  プロセッサ
４７０  ノード・コントローラ
４８０  キャッシュ・ラインをノード・コントローラから受け取るステップ
４８５  キャッシュ・ラインを供給するステップ
４９０  終了するステップ
５００  ノード・コントローラが開始するステップ
５１０  要求を受け取るステップ
５１５  プロセッサ
５２０  リモート・ノード・コントローラ
５３０  リモート要求かどうかを判定するステップ
５３５  リモート要求処理のステップ
５４０  要求タイプは何かを判定するステップ
５４５  エージェントに、invalid状況にダウングレードするように通知するステップ
５５０  キャッシュ・ラインを要求元エージェントに送るステップ
５５５  ログを更新するステップ
５６０  現在の状況は何かを判定するステップ
５６５  キャッシュ・ラインを要求元エージェントに送るステップ
５７０  Shared状況にダウングレードするように、制御するエージェントに通知するステップ
５７５  キャッシュ・ラインを要求元エージェントに送るステップ
５８０  ログを更新するステップ
５９０  継続するかどうかを判定するステップ
５９９  終了するステップ
６００  リモート要求を開始するステップ
６１０  要求タイプは何かを判定するステップ
６１５  エージェントに、invalid状況にダウングレードするように通知するステップ
６２０  キャッシュ・ラインおよび転送状態制御をリモート・ノード・コントローラに送るステップ
６２５  ログを更新するステップ
６３０  現在の状況は何かを判定するステップ
６３５  リモート・ノード・コントローラにキャッシュ・ラインおよび転送状態制御を送るステップ
６４０  ログを更新するステップ
６４５  Shared状況にダウングレードするようにエージェントに通知するステップ
６５０  キャッシュ・ラインおよび転送状態制御をリモート・ノード・コントローラに送るステップ
６５５  ログを更新するステップ
６６０  リターンするステップ
７００  プロセッサ
７０１  情報ハンドリング・システム
７０２  ホスト・バス
７０４  レベル２（Ｌ２）キャッシュ・メモリ
７０６  ホスト−ＰＣＩブリッジ
７０８  メイン・メモリ
７１０  ＰＣＩバス
７１２  サービス・プロセッサ・インターフェースおよびＩＳＡアクセス・パススルー
７１４  ＰＣＩバス
７１６  サービス・プロセッサ
７１８  フラッシュ・メモリ
７２０  不揮発性ＲＡＭ
７２２  ＪＴＡＧ／Ｉ２Ｃバス
７３０  ＬＡＮカード
７３５  ＰＣＩ−ＩＳＡブリッジ
７４０  ＩＳＡバス
７４５  universal serial bus（ＵＳＢ）機能性
７５５  電力管理機能性
７６２  パラレル・インターフェース
７６４  シリアル・インターフェース
７６８  キーボード・インターフェース
７７０  マウス・インターフェース
７７５  モデム
【図１】
2007179528.tif 000003
【図２】
2007179528.tif 000004
【図３】
2007179528.tif 000005
【図４】
2007179528.tif 000006
【図５】
2007179528.tif 000007
【図６】
2007179528.tif 000008
【図７】
2007179528.tif 000009