(57)【特許請求の範囲】
【請求項１】
メモリブロックを有するメモリモジュール、及び共通バスとを備え、各メモリブロックは、自身がコンピュータノードに対して専用である状態、外部デバイスとコンピュータノードによって共有されている状態、及びコンピュータノードにおいて無効である状態を含む、自身の状態をトラックするための関連メモリタグ、及びローカル物理アドレスを有する、コンピュータシステムにおいて、外部デバイス及び共通バスが共通プロトコルを使用しているか否か、及び外部デバイス及び共通バスが同一速度で動作しているか否かに関わりなく、コンピュータノードの共通バスに結合されているコヒーレンス変換装置によって外部デバイスに対してメモリブロックの共有を許容するための方法であって、
前記共通バスを介して前記メモリモジュールにて前記メモリブロックの第１メモリブロックの有効なコピーについての第１メモリアクセス要求を前記コヒーレンス変換装置とは異なるエンティティである前記第１メモリアクセス要求の発行元から受信するステップと、
前記第１メモリブロックに対応する第１メモリタグとともに、前記第１メモリブロックの第１コピーを前記メモリモジュールから前記第１メモリアクセス要求の発行元に対して送信することにより、前記第１メモリアクセス要求に応答するステップと、
前記第１メモリアクセス要求の発行元を使用して、前記第１メモリタグ状態を調べるステップと、
前記第１メモリタグ状態が無効の場合には、前記コヒーレンス変換装置に第２メモリアクセス要求の提供を要求するために、前記第１メモリアクセス要求発行元からの前記第１メモリブロックに適合する第２メモリアクセス要求を発行するステップとを備え、
これにより、前記第１メモリアクセス要求発行元は、前記第１メモリブロックの前記有効コピーを取得し得ることを特徴とする、メモリブロック共有方法。
【請求項２】
請求項１に記載のメモリブロック共有方法において、前記第１メモリアクセス要求は前記第１メモリブロックの専用コピーについての要求であり、前記第１メモリタグ状態が無効の場合、前記方法はさらに、
前記コヒーレンス変換装置を使用して、前記外部デバイスから前記第１メモリブロックの第２コピーを取得するステップと、
前記外部デバイスにおける前記第１メモリブロックの前記第２コピーを無効にするステップと、
前記コヒーレンス変換装置を用い、前記共通バスを介して前記第１メモリブロックの前記第２コピーを前記第２メモリアクセス要求発行元に送信するステップと、
前記コヒーレンス変換装置を用い、前記共通バスを介して前記メモリモジュール内の前記第１メモリタグ状態を専用状態に変更するステップとを備えることを特徴とする、メモリブロック共有方法。
【請求項３】
請求項１に記載のメモリブロック共有方法において、前記第１メモリアクセス要求は前記第１メモリブロックの専用コピーについての要求であり、前記方法はさらに、
前記第１メモリタグ状態が共有の場合には、前記コヒーレンス変換装置に前記第１メモリアクセス要求の提供を要求するために、前記第１メモリアクセス要求発行元からの前記第１メモリブロックに適合する第２メモリアクセス要求を発行するステップを備えることを特徴とする、メモリブロック共有方法。
【請求項４】
請求項３に記載のメモリブロック共有方法において、さらに、
前記外部デバイスにおいて前記第１メモリブロックの第２コピーを無効にするステップと、
前記コヒーレンス変換装置を用い、前記共通バスを介して前記コンピュータノードから前記第１メモリブロックの前記第１コピーを取得するステップと、
前記コンピュータノードにおける前記第１メモリブロックの全コピーを無効にするステップと、
前記メモリブロックの前記第１コピーを前記コヒーレンス変換装置から前記第２メモリアクセス要求発行元に送信するステップと、
前記コヒーレンス変換装置を用い、前記共通バスを介して前記第１メモリタグ状態を専用状態に変更するステップとを備えることを特徴とする、メモリブロック共有方法。
【請求項５】
請求項１に記載のメモリブロック共有方法において、前記第１メモリアクセス要求は前記第１メモリブロックの共有コピーについての要求であり、前記第１メモリタグ状態が無効の場合、前記方法はさらに、
前記コヒーレンス変換装置を使用して、前記外部デバイスから前記第１メモリブロックの第２コピーを取得するステップと、
前記コヒーレンス変換装置を用い、前記共通バスを介して前記第１メモリブロックの前記第２コピーを前記第２メモリアクセス要求発行元に送信するステップと、
前記コヒーレンス変換装置を用い、前記共通バスを介して前記メモリモジュール内の前記第１メモリタグ状態を共有状態に変更するステップとを備えることを特徴とする、メモリブロック共有方法。
【請求項６】
前記第２メモリアクセス要求がリモートメモリアクセス要求である、請求項５に記載のメモリブロック共有方法において、さらに、
前記第２メモリアクセス要求が発行されたときに、前記第１メモリタグが共有状態、あるいは、専用状態のいずれかを表す場合には、誤り状態を知らせるステップを備えることを特徴とするメモリブロック共有方法。
【請求項７】
請求項１に記載のメモリブロック共有方法において、さらに、
前記共通バスと結合されているコヒーレンス変換装置にて、第２メモリブロックについての第３メモリアクセス要求を前記外部デバイスから受信するするステップと、
前記コヒーレンス変換装置を使用して、前記第２メモリブロックを前記共通バスから取得するステップと、
前記外部デバイスが前記第２メモリブロックの有効なコピーをキャッシュしている事実を反映するために、前記コヒーレンス変換装置を使用して、前記コンピュータノードにおける前記メモリモジュール中の前記第２メモリブロックと関連する第２メモリタグを変更するステップと、
前記コヒーレンス変換装置から前記外部デバイスに対して前記第２メモリブロックの前記有効コピーを送信するステップと、を備えることを特徴とする、メモリブロック共有方法。
【請求項８】
請求項７に記載のメモリブロック共有方法において、前記外部デバイスからの前記第３メモリアクセス要求は、前記第２メモリブロックの専用コピーについての要求であり、
前記第２メモリタグ変更ステップはさらに、前記メモリモジュール中の前記第２メモリタグを無効状態に変更するステップを備えることを特徴とする、メモリブロック共有方法。
【請求項９】
請求項８に記載のメモリブロック共有方法において、さらに、
前記コンピュータノードにて前記第２メモリブロックの全有効コピーを無効にするステップを備えることを特徴とする、メモリブロック共有方法。
【請求項１０】
共通バスに結合されたコンピュータノード及び外部デバイスを備え、前記コンピュータノードはメモリモジュール内にローカル物理アドレスを有するメモリブロックを備える、コンピュータシステムにおいて、
前記外部デバイス及び前記共通バスの両方が共通プロトコルを使用しているか否か、及び前記外部デバイス及び前記共通バスの両方が同一速度で動作しているか否か、に関わりなく、前記コンピュータノードの前記共通バスに結合されているコヒーレンス変換装置によって、前記コンピュータノードと前記外部デバイスとが前記メモリブロックを共有し得るようにしており、
各メモリブロックは、自身がコンピュータノードに対して専用である状態、外部デバイスとコンピュータノードによって共有されている状態、及びコンピュータノードにおいて無効である状態を含む、自身の状態をトラックするための関連メモリタグ、及びローカル物理アドレスを有し、
前記共通バスを介して前記メモリモジュールにて前記メモリブロックの第１メモリブロックの有効なコピーについての第１メモリアクセス要求を前記コヒーレンス変換装置とは異なるエンティティである前記第１メモリアクセス要求の発行元から受信し、そして  前記第１メモリブロックに対応する第１メモリタグとともに、前記第１メモリブロックの第１コピーを前記メモリモジュールから前記第１メモリアクセス要求の発行元に対して送信することにより、前記第１メモリアクセス要求に応答するように構成されたメモリモジュールを備え、
前記発行元は、
前記第１メモリタグ状態を調べ、そして
前記第１メモリタグ状態が無効の場合には、前記コヒーレンス変換装置に第２メモリアクセス要求の提供を要求するために、前記第１メモリアクセス要求の発行元からの前記第１メモリブロックに適合する第２メモリアクセス要求を発行し、
これにより、前記第１メモリアクセス要求の発行元は、前記第１メモリブロックの前記有効コピーを取得し得る、
ことを特徴とするコンピュータシステム。
【請求項１１】
請求項１０に記載のコンピュータシステムにおいて、前記コヒーレンス変換装置内の受信論理回路はさらに、前記外部デバイスにより発行された第３メモリアクセス要求により要求される第２メモリブロックのアドレス、及び状態を一時的に格納するとともに、前記外部デバイスによりキャッシュされた前記第２メモリブロックを反映するために、前記メモリモジュール中において前記第２メモリブロックのメモリタグ状態が変更された後に割当てが解除される一時バッファを１つ以上備えることを特徴とする、コンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムのコヒーレンスドメイン間でメモリを共有するための方法、及び装置に関する。更に詳細には、本発明は、コンピュータシステムの特定のコンピュータノード内にローカル物理アドレス（ＬＰＡ）を有するメモリブロックが、そのコンピュータノードと結合されている外部エントリにより共有されるのと同様に、そのシステムの他のノードによって共有されているとき、コヒーレンス問題を効率よく解決するための新規な方法、及び装置に関する。
【０００２】
【従来の技術】
複数のコヒーレンスドメイン間におけるメモリの共有は、固有のコヒーレンス問題を呈する。これらコヒーレンス問題の説明を容易にするために、図１には、例えば、より複雑なコンピュータシステムにおけるコンピュータノードを表す、コンピュータノード１００が図示されている。コンピュータノード１００内には、共通バス１０８に結合されている複数の処理ノード１０２，１０４，１０６が図示されている。各処理ノード１０２，１０４，１０６は、例えば、プロセッサ、及びプロセッサのメモリキャッシュ等を含み得る離散処理装置を表している。コンピュータノード１００に備えられるプロセッサノード数は、説明を簡単にするためにここでは僅か３つしか図示していないが、必要に応じて変化し得るとともに、あらゆる任意の数を含み得る。
【０００３】
コンピュータノード１００内には、コンピュータノード１００のメモリスペースを表すとともにダイナミックランダムアクセスメモリ（ＤＲＡＭ）といった従来型のメモリを用いて実現され得る、メモリモジュール１１０と結合されている共通バス１０８が図示されている。メモリモジュール１１０内部には、一般的に、唯一的にアドレス指定可能な複数のメモリブロック１１２が構成されている。メモリモジュール１１０の各メモリブロック、例えば、メモリブロック１１２（ａ）、またはメモリブロック１１２（ｂ）は、コンピュータノード１００内にローカル物理アドレス（ＬＰＡ）、すなわち、コンピュータ１００のメモリスペース内にマップされる自身の固有アドレスを有している。各メモリブロック１１２は、データを格納するための記憶装置を表し、また、各々は共通バス１０８を介して処理ノード１０２，１０４，１０６間で共有され得る。当然のことながら、コンピュータノード１００の記憶のニーズを満たすために要求される数だけメモリブロックが備えられ得る。
【０００４】
当業者に知られているように、コンピュータプロセッサ、例えば、プロセッサノード１０２内のプロセッサ１１６は、一般的に、メモリモジュール１１０の速度よりも高速な速度で作動する。メモリモジュール１１０のメモリブロック１１２に対して高速にアクセスするために、通常、各処理ノード、例えば、処理ノード１０２には、メモリキャッシュ１１４が備えられている。メモリキャッシュ、例えば、メモリキャッシュ１１４は、プロセッサ、例えば、プロセッサ１１６が、おそらく他のランダムなメモリロケーションでなく、自身が直近に参照したメモリアドレスを参照するという利点をもたらす。さらに、メモリキャッシュ１１４は、一般的に、高速なメモリを使用するとともに小型であり、さらに、高速な動作に寄与する。
【０００５】
メモリキャッシュ１１４内には、メモリブロック、例えば、メモリブロック１１２のコピーを格納するための複数のブロックフレーム１１８が存在する。各ブロックフレーム１１８は、キャッシュされたメモリブロックのアドレスを格納するためのアドレス部１２０を有している。メモリブロック１１２（ａ）の固有アドレスが、例えば、ＦＦ５ｈの場合には、このアドレスは、メモリモジュール１１０のメモリブロック１１２（ａ）がメモリキャッシュ１１４内にキャッシュされるときに、ブロックフレーム１１８のアドレス部１２０に格納される。ブロックフレーム１１８内にはまた、被キャッシュメモリブロックのデータ値を格納するためのデータ部１２２が備えられている。例えば、メモリブロック１１２（ａ）がブロックフレーム１１８内にキャッシュされる際、メモリブロック１１２（ａ）内に格納されている値が１２の場合には、この値１２はブロックフレーム１１８のデータ部１２２に格納される。
【０００６】
また、ブロックフレーム１１８内には、キャッシュされたメモリブロックの状態を格納するためのステータスタブ１２４が備えられている。そのような状態の例としては、それぞれグローバル専用、グローバル共有、及びグローバル無効を表すｇＭ，ｇＳ及びｇＩがある。これらの状態の意味を、例えば図４を参照して以下詳細に説明する。
【０００７】
処理ノードは、それが唯一、有効なコピーを有するエントリーであるとき、自身のキャッシュ内におけるメモリブロックの専用コピーを保持し得る。そのような専用コピーは、それがキャッシュされている処理ノードによりすでに変更されていることがあるので、メモリモジュール１１０内における自身の発行元とは異なる可能性がある。あるいは、処理ノードは、メモリブロックの共有、読出し専用コピーを処理し得る。１つの処理ノード、例えば、処理ノード１０２がメモリブロック、例えば、メモリブロック１１２（ａ）の共有コピーをキャッシュするとき、他の処理ノード、例えば、処理ノード１０４，１０６もまた、同一メモリブロックの共有コピーを処理し得る。
【０００８】
メモリブロックが処理ノード内で一度もキャッシュされない場合、あるいは、一度キャッシュされたが、既にそこにはキャッシュされていない場合には、その処理ノードは、メモリブロックの無効なコピーを有していると言われる。そのブロックフレームに関連する状態が無効であるとき、ブロックフレーム内には有効なデータは含まれていない。
【０００９】
コヒーレントの問題は、以下に詳細に説明する図１の処理ノード１０２，１０４，１０６間でメモリブロック１１２が共有されるときに現れ得る。メモリブロック１１２内に格納されている値を１２から１３に変更するために、処理ノード１０２がメモリブロック１１２（ａ）のコピーを自身のメモリキャッシュ１１４内にキャッシュするものとする。一般的に、値が処理ノード、例えば、処理ノード１０２によって変更されるとき、その値は、直ちには更新されメモリモジュール１１０内に戻されない。むしろ、更新は、一般に、処理ノード１０２のメモリキャッシュ１１４が、先にキャッシュされたメモリブロック１１２（ａ）のコピーをライトバックするときに実行される。
【００１０】
メモリキャッシュ１１４が、メモリブロック１１２の変更された値、即ち１３をメモリモジュール１１０内にライトバックする機会を得る前に、処理ノード１０４が、メモリブロック１１２（ａ）の参照を望んでいるものとする。処理ノード１０４は、先ず、メモリブロック１１２（ａ）のコピーが先にその中にキャッシュされてしまっているか否かを決定するために、自身のメモリキャッシュ１３２内を確認する。メモリブロック１１２（ａ）のコピーが処理ノード１０４にて一度もキャッシュされていない場合には、キャッシュミスが発生する。
【００１１】
キャッシュミスを経験すると、処理ノード１０４は、メモリモジュール１１０からメモリブロック１１２（ａ）のコピーを取得するために処理を進め得る。メモリブロック１１２（ａ）の変更された値が、処理ノード１０２によってメモリモジュール１１０内に未だライトバックされていないので、メモリブロック１１２（ａ）内の古い値、即ち１２が処理ノード１０４によって取得される。この問題は、コヒーレンス問題と呼ばれ、処理ノード、及び共通メモリを共有する他のデバイスに対して誤った値を提供する可能性がある。
【００１２】
これまで、コンピュータノード１００に対して内的なデバイス、即ち共通バス１０８と結合されるよう、また、同一通信プロトコルを使用してそれに対して通信するために設計された処理ノード１０２，１０４，１０６といったデバイスを参照してメモリブロック１１２の共有を説明してきた。例えば、コンピュータシステムの拡張を容易にするためにコンピュータノード１００を他の外部デバイスに対して結合しなければならないときが幾度とあり得る。しばしば、外部デバイスは、コンピュータノード１００の共通バス１０８上にて採用されているプロトコルとは異なるプロトコルを採用することができ、また、異なる速度でさえも動作し得る。
【００１３】
図１の外部デバイス１４０は、このような外部デバイスを表している。説明の都合上、外部デバイス１４０は、例えば、ネットワークに対するゲートウェイのようなＩ／Ｏデバイスであり得る。あるいは、外部デバイス１４０は、例えば、プロトコル、及び動作速度が共通バス１０８上のそれとは異なるプロセッサを表す、（カリフォルニア州サンタクララ市のインテルから入手可能な）Pentium Pro （登録商標）マイクロプロセッサのようなプロセッサであり得る。さらに例えば、外部デバイス１４０は、コンピュータノード１００を、それら自身のメモリスペースを有する他のエンティティ、例えば、自身のメモリモジュールを有する他のコンピュータノードに対して結合するための分散共有メモリエージェントを表し得る。分散共有メモリエージェントを介することにより、他のメモリスペースを含むエンティティ内のメモリブロックと同様に、コンピュータノード１００内のメモリブロックは、共有され得る。
【００１４】
外部デバイスは、メモリモジュール１１０内に格納されているデータを共有しなければならないであろうが、外部デバイス１４０がメモリモジュール１１０内のメモリブロックを共有することを許容するために、外部デバイス１４０のような外部デバイスを共通バス１０８に対して直接結合することは一般的に不可能である。直接に結合することは、特に前述したようにプロトコル、及び動作速度が異なるために不可能である。
【００１５】
【発明が解決しようとする課題】
本発明は、上記した従来技術の問題点を解決するためになされたものであり、効率的かつエラーのない方法で、他の処理ノード、及び外部デバイスといった相互接続エンティティ間において、特定のコンピュータ内にローカル物理アドレス（ＬＰＡ）を有するメモリブロックの共有を許容する方法、及び装置を提供することを目的とする。
【００１６】
【課題を解決するための手段】
上記目的を達成するために請求項１に記載の発明に係るメモリブロックの共有方法は、共通バスを有するコンピュータノードを備えるコンピュータシステムにおいて、外部デバイス及び共通バスが共通プロトコルを使用しているか否か、及び外部デバイス及び共通バスが同一速度で動作しているか否かに関わりなく、外部デバイスが、コンピュータノードにおけるメモリモジュール内にローカル物理アドレスを有するメモリブロックを共有することを許容する。各メモリブロックは、自身がコンピュータノードに対して専用である旨を示す状態、外部デバイスとコンピュータノードによって共有されている旨を示す状態、及びコンピュータノードにおいて無効である旨を示す状態を含む、自身の状態をトラックするための関連メモリタグを有する。
【００１７】
この方法はまた、前記共通バスと結合されているコヒーレンス変換装置にて、第１メモリブロックについてのメモリアクセス要求を前記外部デバイスから受信するステップ、及び前記コヒーレンス変換装置を使用して、前記第１メモリブロックを前記共通バスから取得するステップを備える。この方法はさらに、前記外部デバイスが前記第１メモリブロックの有効なコピーをキャッシュしている事実を反映するために、前記コヒーレンス変換装置を使用して、前記コンピュータノードにおける前記メモリモジュール中の前記第１メモリブロックと関連する第１メモリタグを変更するステップ、及び前記コヒーレンス変換装置から前記外部デバイスに対して前記第１メモリブロックの前記有効コピーを送信するステップを備える。
【００１８】
また、請求項１０に記載の発明に係るメモリブロックの共有方法では、共通バスを有するコンピュータノードを備えるコンピュータシステムにおいて、コンピュータノードの共通バスに結合されているコヒーレンス変換装置を通じて、外部デバイスが、コンピュータノードにおけるメモリモジュール内にローカル物理アドレスを有するメモリブロックを共有することを許容する。この方法は、外部デバイスが外部デバイス及び共通バスが共通プロトコルを使用しているか否か、及び外部デバイス及び共通バスが同一速度で動作しているか否かに関わりなく、メモリブロックの共有を促進する。各メモリでバスは、自身コンピュータノードに対して専用である旨を示す状態、外部デバイスとコンピュータノードによって共有されている旨を示す状態、及びコンピュータノードに関して無効である旨を示す状態を含む、自身の状態をトラックするための関連メモリタグを有する。
【００１９】
この方法は、前記共通バスを介して前記メモリモジュールにて前記メモリブロックの第１メモリブロックの有効なコピーについての第１メモリアクセス要求を前記コヒーレンス変換装置とは異なるエンティティである前記第１メモリアクセス要求の発行元から受信するステップ、及び前記第１メモリブロックに対応する第１メモリタグとともに、前記第１メモリブロックの第１コピーを前記メモリモジュールから前記第１メモリブロックの前記発行元に対して送信することにより、前記第１メモリアクセス要求に応答するステップを備える。この方法はまた、前記第１メモリブロックの前記発行元を使用して、前記第１メモリタグ状態を調べるステップ、及び前記第１メモリタグ状態が無効の場合には、前記コヒーレンス変換装置に第２メモリアクセス要求の提供を要求するために、前記第１メモリアクセス要求発行元からの前記第１メモリブロックに適合する第２メモリアクセス要求を発行するステップを備え、これにより、前記第１メモリアクセス要求発行元は前記第１メモリブロックの前記有効コピーを取得し得る。
【００２０】
さらに、請求項１７に記載の発明に係るメモリブロック共有促進装置は、外部デバイス及び全共通バスが共通プロトコルを使用しているか否か、及び外部デバイス及び共通バスが同一速度で動作しているか否かに関わりなくコンピュータノード及び外部デバイス間におけるメモリブロックの共有を促進する。前記各メモリブロックは、前記コンピュータノードにおける全前記メモリモジュール内にローカル物理アドレスを有するとともに、自身が前記コンピュータノードに対して専用である旨を示す状態、前記外部デバイスと前記コンピュータノードによって共有されている旨を示す状態、及び前記コンピュータノードにおいて無効である旨を示す状態を含む、自身の状態をトラックするための関連メモリタグを有する。
【００２１】
この装置は、前記コンピュータノードの共通バスと結合するために構成されるとともに、前記共通バスと結合されたとき、前記共通バス上の前記装置に対して固有のメモリアクセス要求を受信するように構成される受信論理回路を備える。また、この装置は、前記外部デバイスと結合されたとき、前記装置が、前記外部デバイスとの通信に好適なプロトコルを用いて前記外部デバイスと通信し得るよう前記受信論理回路に結合されているプロトコル変換論理回路を備える。
【００２２】
【発明の実施の形態】
以下、内部処理ノード、及び外部デバイスといった相互接続エンティティ間において、効率的かつエラーのない方法で、ローカル物理アドレス（ＬＰＡ）を有する特定のコンピュータ内におけるメモリブロックの共有を許容する発明について説明する。以下の説明において、多くの詳細な説明は、本発明の理解を容易にするためのものである。しかしながら、本発明がこれらの詳細な説明の全て、あるいは、一部を伴わずして実行され得ることは、当業者にとって明らかなことである。また、本発明が不必要に曖昧になることなきよう、周知の構造、及びプロセスステップの詳細については説明しない。
【００２３】
本発明に係る発明の実施の形態の１つによれば、コンピュータノード、例えば、コンピュータノード１００を複数の外部デバイスに対して結合するためのコヒーレンス変換装置が提供される。コヒーレンス変換装置は、コンピュータノード１００が採用するプロトコルとは異なるプロトコルを採用し得るとともに、動作速度までも異なり得る外部デバイスが、ローカル物理アドレスを有するコンピュータノード１００内のメモリブロックにアクセスすることを許容する。本発明に係る発明の実施の形態の１つによれば、コヒーレンス変換装置は、コンピュータノード１００上における選択されたメモリアクセス要求を監視する。コンピュータノード１００上におけるメモリアクセス要求の１つが、現在、外部デバイスによりキャッシュされているメモリブロックに適合する場合には、コヒーレンス変換装置は、そのメモリブロックの最新コピーを要求元エンティティに対して提供することが可能であり、これにより、コヒーレンス問題を回避することとができる。更に、コヒーレンス変換装置はまた、外部デバイスがローカル物理アドレスを有するコンピュータノード１００内のメモリブロックのコピーをコヒーレント的に取得することを許容する。
【００２４】
コヒーレンス変換装置の詳細な動作については、以下に図面を参照して詳述する。図２を参照すると、本発明に係る発明の実施の形態の１つに従う、コンピュータノード１００を外部デバイス２０２，２０４，２０６の内の１つに結合するためのコヒーレンス変換装置２００が図示されている。図面の都合上、外部デバイス（２０２，２０４，２０６）の種々の型の内の１つしか図示されていないが、実際には、コヒーレンス変換装置２００と結合される種々の型の多くの外部デバイスが存在し得る。コヒーレンス変換装置２００を介することにより、メモリモジュール１１０のメモリブロック、例えば、メモリブロック１１２、の内容が外部デバイス２０２，２０４，２０６のいずれかによってアクセスされ得る。本発明に係る発明の実施の形態の１つによれば、これらの外部デバイスは、コンピュータノード１００の共通バス１０８上におけるプロトコル、及び動作速度とは異なるプロトコル、及び動作速度を採用しているが、メモリモジュール１１０のメモリブロックを共有することができる。
【００２５】
外部デバイス２０２は、例えば、コヒーレンス変換装置２００を介してメモりモジュール１１０から一時に２，３個のメモリモジュールを取得し得る、コンピュータネットワークに対するゲートウェイのようなＩ／Ｏデバイスであり得る。外部デバイス２０４は、例えば、共通バス上で稼働中のものとは異なる内部プロトコル、及び内部動作速度を有するプロセッサのようなコヒーレンスドメインを表し得る。相違例には、ブロックサイズ、及び信号における相違が含まれる。外部デバイス２０６は、例えば、分散共有メモリエージェントデバイスを表し得る。
【００２６】
分散共有メモリエージェントデバイス２０６は、異なるＤＳＭドメイン及びコンピュータノード１００間におけるメモリブロックの共有を容易にするために、コンピュータノード１００を他の分散共有メモリ（ＤＳＭ）ドメイン、例えば、他のコンピュータノードに接続するためのハードウェアあるいはソフトウェアのいずれかにより実行される論理回路構成を含み得る。さらに、分散共有メモリエージェントデバイス２０６は、コンピュータノード１００内の処理ノード１０２が、自身のローカルメモリモジュール１１０内のメモリブロック１１２、及びコンピュータノード１５０，１６０，１７０内部のメモリモジュールに関連するメモリブロックの双方にアクセスすることを許容し、その逆もまた同様に許容する。分散共有メモリエージェントデバイス２０６を使用することにより、集中メモリリソースが異なるコンピュータノード間で物理的に実装されているとともに、分散されているにもかかわらず、コンピュータノード１００，１５０，１６０，１７０内のプロセッサがアクセスし得る集中共有メモリリソースが存在するという仮想状態がもたらされる。
【００２７】
コヒーレンス変換装置２００は、コヒーレンス変換装置リンク２２０を介してコンピュータノード１００の共通バス１０８と通信し得る。外部ドメインでは、コヒーレンス変換装置２００は、通信する外部デバイスに対する適当なプロトコルを使用してリンク２２２，２２４，２２６を介し、どのような外部デバイス、例えば、外部デバイス２０２，２０４，２０６のいずれとも通信し得る。
【００２８】
図３には、発明の実施の形態の１つにおけるメモリモジュール１１０内の複数のメモリタグ（Ｍタグ）２５２が図示されている。各Ｍタグ２５２は、メモリモジュール１１０内のメモリブロックと論理的に関連づけられている。一例においては、Ｍタグ２５２は、Ｍタグが関連付けられているメモリブロックとして、また、その各メモリブロック１１２が物理的に近接するメモリブロックとして、同一メモリスペース内、例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）内に実装されている。他の例においては、Ｍタグ２５２は、異なるメモリスペース内に実装されるにもかかわらず、各メモリブロックと論理的に関連付けられる。
【００２９】
Ｍタグ２５２は自身が関連する各メモリブロックのグローバル状態、すなわち、（処理ノードがメモリブロックを有しているか否かに関わらず）コンピュータノード１００がメモリブロックに対する専用、共有、あるいは無効アクセスを有しているか否かをトラックする。図４は発明の実施の形態の１つにおけるＭタグ２５２内に格納され得る種々の利用可能な状態を図示する。図４には３つの可能性ある状態、それぞれ、内部エンティティ、例えば、コンピュータノード１００内のエンティティによって保持されているメモリブロックの無効、共有、専用コピーを意味するｇＩ，ｇＳ，ｇＭを図示している。Ｍタグ２５２の状態は、本発明の目的から、関連するメモリブロックが内部エンティティ（例えば、メモリモジュール１１０、あるいは、プロセッサ１０２、１０４、１０６のいずれか）によって、あるいは、外部ドメイン内のデバイス（すなわち、コンピュータノード１００に対して外的な外部デバイス２０２，２０４，２０６のいずれか）によって参照されているか否かによって決定されることに留意すべきである。さらに、各Ｍタグの状態は、一般的に、これらドメイン内における現在のメモリブロックを有している特定のデバイスに依存しない。この結果、Ｍタグは、一般的に外部デバイスがメモリブロックの有効なコピーを有しているか否かを示すことができる。しかしながら、Ｍタグの状態は、一般的に、内部デバイス、外部デバイスのどちらが現在、最新の有効なコピーを有しているかを示すことはできない。
【００３０】
Ｍタグ２５２の状態がｇＭ（global Modified）の場合には、内部ドメインは、関連するメモリブロックの有効な、専用（メモリモジュール１１０内のコピーから変更されている可能性のある）コピーを有する。さらに、専用コピーが所定のデバイスによりキャッシュされるとき、同一メモリブロックの他の有効なコピーは、どこにも存在し得ないので、外部ドメイン内における同一メモリブロックの有効なコピー（専用であれ、共有であれ）は存在し得ない。
【００３１】
Ｍタグ２５２の状態がｇＳ（global Shared ）の場合には、内部ドメインは、関連するメモリブロックの有効な、共有コピーを有する。さらに、多くの同一メモリブロックの共有コピーが、同時にコンピュータシステム内に存在し得るので、外部ドメインは、同一メモリブロックの他の共有コピーを同様に有し得る。Ｍタグ２５２の状態がｇＩ（global Invalid）の場合には、内部ドメインは、関連するメモリブロックの有効なコピーを有しない。メモリモジュール１１０、及び全バスエンティティ１０２，１０４，１０６のいずれもが有効なコピーを有していないので、有効なコピーは外部ドメインに存在し得る。一つの例では、Ｍタグ２５２の状態がｇＩのとき、外部ドメインが関連するメモリブロックの専用（及び変更されている可能性のある）コピーを有していることが理解される。
【００３２】
図５は本発明に係る発明の実施の形態の１つに従う、メモリブロックに要求するために、共通バス１０８上の一般的なメモリアクセス要求を表すメモリアクセス要求４００のフォーマットを図示している。メモリアクセス要求は、例えば、処理ノード１０２，１０４，１０６の内の１つ、または、外部デバイス２０２，２０４，２０６の内の１つに代わって共通バス１０８上のコヒーレンス変換装置２００によって出力される。
【００３３】
メモリアクセス要求４００は、一般的に型フィールド４０２，アドレスフィールド４０４，ソースＩＤフィールド（ＳＩＤ）４０６、及びオウンフラグ４０８を含んでいる。型フィールド４０２は、発行されたメモリアクセス要求型を表わす。図８を参照して後に詳述されるように、フィールド４０２に記述されるメモリアクセス要求型は、特に、オウン要求（ＲＴＯ）、オウン遠隔要求（ＲＲＴＯ）、共有要求（ＲＴＳ）、共有遠隔要求（ＲＲＴＳ）、及びライトバック（ＷＢ）を含み得る。アドレスフィールド４０４は、メモリアクセス要求４００の発行元のアイデンティティ、すなわち、メモリアクセス要求により要求されたメモリブロックのアドレスを表す。ソースＩＤフィールド４０６は、メモリアクセス要求を発行するエンティティのアイデンティティを表す。
【００３４】
オウンフラグ４０８は、通常、外部メモリアクセス要求を提供し得る、メモリモジュール１１０以外のエンティティの１つ、例えば、処理ノード１０２〜１０６がオウンフラグ４０８をセットするまでリセットされるフラグビットを表す。共通バス１０８に結合されているエンティティは、現在メモリアクセス要求がメモリモジュール１１０によって提供されるべきでない、すなわち、そのメモリブロックをキャッシュし得るエンティティの１つが既にキャッシュの実行を終了し、そして、現在、モジュール内のコピーよりも新しいコピーを潜在的に有し得ることをを表すために、オウンフラグ４０８のセットを要求し得る。
【００３５】
図６は、本発明にかかる発明の実施の形態の１つに従う応答５００のフォーマットを詳細に図示する。応答５００は、一般的に、例えば、図５に示すメモリアクセス要求のフォーマットを有する先に発行されたメモリアクセス要求に応答するエンティティにより発行される。図６に図示されるように、応答５００は、それに対して応答が送信されるべき要求エンティティの固有ＩＤを表すソースＩＤ（ＳＩＤ）フィールド５０２を有している。発明の実施の形態の１つでは、ＳＩＤフィールド５０２は、その内容に関して、図５に図示するソースＩＤフィールド４０６に含まれるＳＩＤデータと実質的にほぼ同一である。ソースＩＤの使用は、コヒーレンス変換装置２００が共通バス１０８と直接通信することを許容し、また、コヒーレンス変換装置２００に対して共通バス１０８の機構に依存してＳＩＤを用いて要求を適当な最終目的地に転送する権限を与える。応答５００は、さらに、要求先メモリブロックの内容を表すデータフィールド５０４を含む。
【００３６】
図７には、コヒーレンス変換装置２００内の機能装置の一例が図示されている。この例においては、機能装置は、ディジタル論理回路として用いられる。しかしながら、当業者に理解され得るように、これらの機能装置は、必要に応じて、ハードウェア（ディジタル、または、アナログ）、あるいは、ソフトウェアのいずれかによって実現され得る。コヒーレンス変換装置２００内には、選択されたメモリアクセス要求を図２の共通バス１０８から受信するために用いられる機能装置を表す、受信論理回路２５０が備えられている。受信論理回路２５０は、コヒーレンス変換装置２００に適合する特定の選択された処理を識別するために好適なあらゆる従来技術を用いて実現され得る。
【００３７】
これまでの説明から、異なるプロトコル、及び／または、異なる動作速度を有するデバイス、及びシステムが、メモリブロックを共有し得るためには、いくつかのプロトコル形式の変換が必要であることは、当業者に理解されるべきである。プロトコル変換装置２６２は、コヒーレンス変換装置２００が外部デバイス、例えば、外部デバイス２０２，２０４，２０６の内の１つの通信することを許容する。プロトコル変換装置２６２の役割には、データ転送を可能にするために、１つのプロトコルで受信されたデータを他のプロトコルを使用して内部ドメインから外部ドメインの外部デバイスに対して中継すること、及びその逆が含まれる。プロトコル変換装置２６２は、例えば、外部デバイスがコンピュータノード１００にて用いられているプロトコルと同一のプロトコルを用いる場合、及び／または、同一速度で動作する場合には、省略され得る。
【００３８】
特定の外部デバイスと通信するために用いられる特定のプロトコルは、外部デバイスにより用いられるプロトコルの仕様によって大きく変化し得ることが理解されるべきである。以下詳細に説明するように、コヒーレンス変換装置２００及び外部デバイス間におけるメモリブロックの共有を目的とする通信は、Ｘプロトコルとして知られている汎用プロトコルを使用することにより達成し得る。特定の外部デバイスに対する説明されたＸプロトコルの適用は、当業者にとって容易に理解されるべきである。
【００３９】
図８及び図９は、発明の実施の形態の１つに係る、メモリアクセス要求、及びバスエンティティ、例えば、処理ノード１０２、１０４，１０６、あるいはコヒーレンス変換装置２００といった共通バス１０８に結合されているエンティティのいずれかにより発行された応答を図示している。以下の説明では、説明を簡単にするため、コンピュータノード１００に対して内的な共通バス１０８と結合されているバスエンティティ、例えば、処理ノード１０２が１つだけ存在するものとする。共通バス１０８と結合されているエンティティが１つ以上存在する場合には、例えば、処理ノード１０２，１０４がともに共通バス１０８上に現れる場合には、これら内部バスエンティティ間におけるコヒーレンス問題は、どの従来技術によっても解決され得る。
【００４０】
例えば、このようなコヒーレンス問題の１つの解決方法には、各内部バスエンティティに対するバス１０８のスヌープの要求が含まれる。スヌープされたメモリアクセス要求が、最新のコピーがその内部バスによりキャッシュされているメモリブロックを含む場合には、その内部バスエンティティは、メモリモジュール１１０が応答し得る前に外部メモリアクセス要求に応答するために介入し得る。要求が内部バスエンティティによりキャッシュされたメモリブロックを含んでいない場合、内部バスエンティティは、外部メモリアクセス要求を無視する。内部バスエンティティの介入がない場合には、メモリモジュール１１０は、現在処理しているコピーに応答する責任を有することとなる。
【００４１】
次に図８及び図９を参照する。バスエンティティ、例えば、処理ノード１０２は、オウン要求（ＲＴＯ）要求を発行することにより、メモリブロック１１２（ａ）の専用コピーについてのメモリアクセス要求を発行し得る。以下の説明において、要求は図５の要求４００の形を有し得る。一方、応答は図６の応答５００の形を有し得る。
【００４２】
ＲＴＯ要求に対する応答に介入する他の内部エンティティが存在しない場合には、要求先メモリブロックの状態（すなわち、関連するＭタグの内容）とともに要求先メモリブロックのコピーをメモリモジュール１１０からＲＴＯ発行元に提供するために、メモリモジュール１１０は、ＲＴＯデータとともに外部ＲＴＯ要求に応答し得る。あるいは、ＲＴＯ要求が誤りある場合、例えば、非存在メモリブロックを要求する場合には、メモリモジュール１１０は、ＲＴＯ要求は認められず、ＲＴＯ発行元により再試行される必要がある旨を表示するＲＴＯ-ｎａｃｋ応答とともに返答し得る。
【００４３】
一旦、メモリモジュール１１０からのＲＴＯデータ応答が、ＲＴＯ発行元、すなわち、この例では処理ノード１０２、によって受信されると、ＲＴＯ発行元は、発行済ＲＴＯ要求を提供するために、メモリモジュール１１０から受信されたメモリブロックの現在のコピーを用い得るか否かを決定するために同封されたＭタグの状態を調べる。例えば、状態がｇＩの場合には、外部デバイスは、現在、メモリブロックの専用コピーを有しており、ＲＴＯ発行元は、遠隔ＲＴＯメモリアクセス要求（ＲＲＴＯ）を介して、そのコピーを取得するとともに、全外部コピーを無効にするための要求を発行し得ることが理解される。ＲＴＯ及びＲＲＴＯ要求の詳細は、本明細書に記載されている他の要求とともに図８を参照して説明する。
【００４４】
Ｍタグ状態がｇＳの場合には、１つ以上の外部バスエンティティが共有、読出し専用コピーを有している。この場合、内的、及び外的に存在する全共有コピーを無効にするとともに、外部ＲＴＯ要求に対して最新コピーを伴い応答する必要がある。状態がｇＭの場合には、内部エンティティの１つが最新の有効なコピーを有しており、（後のコピーに介入する他の内部エンティティが存在しないと思われるので）ＲＴＯ発行元は、自身のＲＴＯニーズを満たすためにメモリモジュール１１０からＲＴＯデータ応答にリターンされたデータの使用を継続し得る。
【００４５】
遠隔ＲＴＯ（ＲＲＴＯ）メモリアクセス要求は、一般的に、メモリモジュール１１０から受信されたＭタグの状態を確認することにより、ＲＴＯ発行元が現在のＲＴＯ要求を提供するためにはＭタグの状態が不十分であることを見いだした後、ＲＴＯ発行元により発行される。この場合の不十分なＭタグ状態は、ｇＳまたはｇＩである。すなわち、外部に存在する要求先メモリブロックの共有、あるいは、専用コピーが存在し得る。ＲＲＴＯがｇＭＭタグに応答するＲＴＯ発行元によって発行された場合には、（状態ｇＭは、外部ドメインでなく内部ドメインが現在、要求先メモリブロックの専用コピーを有していることを示すので）コヒーレンス変換装置は、これは誤り状態であることを理解し、また、内部ドメインから専用コピーを取得するためにＲＲＴＯ発行元に再試行を要求する。
【００４６】
ＲＲＴＯが、ｇＳＭタグに応答するＲＴＯ発行元によって発行された場合には、コヒーレンス変換装置２００は、外部共有コピーを無効にし、要求先メモリブロックの最新コピーを外部ドメイン、あるいは、内部ドメインのいずれかから取得し、全内部共有コピーを無効にし、ＲＴＯＲデータ応答を介してそのコピーをＲＲＴＯにリターンすることにより、このＲＲＴＯコマンドに応答し得る。ＲＲＴＯが、ｇＩＭタグに応答するＲＴＯ発行元により発行された場合には、コヒーレンス変換装置２００は、外部専用コピーを取得し、その外部専用コピーを無効にし、ＲＴＯＲデータ応答を介してそのコピーをＲＲＴＯ発行元にリターンすることにより、このＲＲＴＯコマンドに応答し得る。更に、コヒーレンス変換装置２００は、ｇＭに関して要求先メモリブロックに対応するＭタグの状態をＲＴＯＲ応答を介して変更するために、メモリモジュール１１０に対するライトバックを実行し得る。ＲＲＴＯ要求が誤りである場合、例えば、非存在メモリブロックを要求する場合には、コヒーレンス変換装置２００は、ＲＲＴＯ要求は認められず、ＲＲＴＯ発行元によって再試行される必要がある旨を示すＲＴＯＲ_ｎａｃｋ 応答とともに返答し得る。
【００４７】
バスエンティティ、例えば、処理ノード１０２は、ＲＴＳ要求を発行することにより、メモリブロック１１２（ａ）の共有、読出し専用コピーについてのメモリアクセス要求を発行し得る。介入する他の内部エンティティが存在しない場合には、要求先メモリブロックの状態（すなわち、関連するＭタグの内容）とともに要求先メモリブロックのコピーをメモリモジュール１１０からＲＴＳ発行元に提供するために、メモリモジュール１１０は、ＲＴＳデータを伴い外部ＲＴＳ要求に応答し得る。あるいは、ＲＴＳ要求が間違いである場合、例えば、非存在メモリブロックを要求する場合には、メモリモジュール１１０は、ＲＴＳ要求は認められず、ＲＴＳ発行元により再試行される必要がある旨を表示するＲＴＳ-ｎａｃｋ応答とともに返答し得る。
【００４８】
一旦、ＲＴＳ発行元、すなわち、この例では処理ノード１０２、によってメモリモジュール１１０からのＲＴＳデータ応答が受信されると、ＲＴＳ発行元は、発行済ＲＴＳ要求を提供するためにメモリモジュール１１０から受信されたメモリブロックの現在のコピーを用い得るか否かを決定するために同封されたＭタグの状態を調べる。一般的に、Ｍタグの状態がｇＳの場合には、１つ以上の内部バスエンティティが、現在、共有、読出し専用コピーを有しおり、また、このＲＴＳメモリアクセス要求は、他の内部バスエンティティ、または、メモリモジュール１１０自身から受信されたデータのいずれかによって提供され得る。Ｍタグの状態がｇＭの場合には、１つ以上の内部バスエンティティが、現在、専用コピーを有し、また、このＲＴＳメモリアクセス要求は、他の内部バスエンティティ、または、メモリモジュール１１０自身から受信されたデータのいずれかによって提供され得る。
【００４９】
状態がｇＩの場合には、外部デバイスは、現在、メモリブロックの専用コピーを有しており、ＲＴＳ発行元は、遠隔ＲＴＳメモリアクセス要求（ＲＲＴＳ）を介してそのコピーを取得するための要求を発行し得ることが理解される。何らかの理由のため、ＲＲＴＳがｇＭＭタグ、またはｇＳＭタグに応答するＲＴＳ発行元により発行される場合には、コヒーレンス変換装置２００は、この状態は誤り状態であると理解し、共有コピーを内部バスエンティティから取得するためにＲＴＳ発行元に再試行を要求する。ＲＲＴＳが、ｇＩＭタグに応答するＲＴＳ発行元により発行された場合には、コヒーレンス変換装置２００は、要求先メモリブロックの共有コピーを外部デバイスから取得し、ＲＴＳＲデータ応答を介してそのコピーをＲＲＴＳ発行元にリターンすることにより、このＲＲＴＳコマンドに応答し得る。更に、コヒーレンス変換装置２００は、（ＲＴＳＲ応答を介して）ｇＳに関して要求先メモリブロックに対応するＭタグの状態を変更するために、メモリモジュール１１０に対するライトバックを実行し得る。ＲＲＴＳ要求が誤りである場合、例えば、非存在メモリブロックを要求する場合には、コヒーレンス変換装置２００は、ＲＲＴＳ要求は認められず、ＲＲＴＳ発行元によって再試行される必要がある旨を示すＲＴＳＲ_ｎａｃｋ応答とともに返答し得る。
【００５０】
処理ノードの１つ、例えば、処理ノード１０２、あるいは、（外部デバイスに代わって）コヒーレンス変換装置２００のいずれかは、先にキャッシュされたメモリブロックの専用コピーをメモリ１１０にライトバックするためにライトバック（ＷＢ）要求を発行し得る。ＷＢ要求が誤りの場合、例えば、非存在のメモリブロックを要求する場合には、メモリモジュール１００は、ＷＢ要求は認められず、ＷＢ発行元によって再試行される必要がある旨を示すＷＢ_ｎａｃｋ 応答とともに返答し得る。
【００５１】
一方、ＷＢ_ｎａｃｋ 応答が発行されない場合には、ＷＢ発行元は、メモリブロックをメモリモジュール１１０にライトバックするためにＷＢデータ応答を付け加え得る。さらに、メモリモジュール１１０内のＭタグの状態はまた、内部ドメインが現在このメモリブロックの専用コピーを有している事実を反映するために、（コヒーレンス変換装置２００がライトバックを要求する場合には）ｇＭに変更され得る。
【００５２】
前述のように、共通バス１０８上に遠隔メモリアクセス要求、例えば、ＲＲＴＯ、ＲＲＴＳが存在する場合には、コヒーレンス変換装置２００は、（コヒーレンス変換装置リンク２２０を介して）このメモリアクセス要求を受け取り、Ｍタグの状態に応じた適当な応答を生成する。コヒーレンス変換装置２００の動作は、図１０及び図１１を参照することにより、より明確に理解されよう。
【００５３】
図１０は、本発明に係る発明の実施の形態の１つにおける共通バス１０８上の遠隔メモリアクセス要求に応じてコヒーレンス変換装置２００により実行される選択処理を図示する。図１０を参照すると、遠隔メモリアクセス要求が共通バス上の内部バスエンティティの１つにより発行されるとき、この遠隔メモリアクセス要求は、コヒーレンス変換装置２００を含む、全バスエンティティに転送される。しかしながら、遠隔要求は、全内部バスエンティティ、例えば、プロセッサ１０２によって無視され得る。遠隔要求に応答して、コヒーレンス変換装置２００は、外部デバイスの１つが、共通バス１０８上の遠隔メモリアクセス要求に応答するための要求先メモリブロックの適当なコピーを有しているか否かを決定するために（遠隔要求に含まれる）Ｍタグの現在の状態を確認する。
【００５４】
「オウン遠隔要求（ＲＲＴＯ）」
遠隔メモリアクセス要求がメモリブロックの専用コピーについての要求（ＲＲＴＯ）であり、また、現在のＭタグの状態がｇＭの場合には、コヒーレンス変換装置２００は、（状態ｇＭは、外部ドメインでなく、内部ドメインが、現在、要求先メモリブロックが専用コピーを有していることを示すので）これは誤り状態であると理解し、また、内部ドメインから専用コピーを取得するためにＲＲＴＯ発行元に再試行を要求し得る。
【００５５】
ＲＲＴＯ要求がｇＳＭタグに応答するＲＴＯ発行元によって発行された場合には、コヒーレンス変換装置２００は、全外部デバイスに共有コピーを無効にするよう要求するためのＸプロトコル無効コマンドＸＩＮＶを発行して外部共有コピーを無効にすることによりこのＲＲＴＯコマンドに応答し得る。コヒーレンス変換装置２００は、ハードウェアであれ、ソフトウェアであれ、キャッシュされたメモリブロックの位置、及び型をトラックし続けるための論理回路を備えている場合には、Ｘプロトコルコマンドを一斉送信することが可能であり、あるいは、単に、Ｘプロトコルコマンドを適当な外部デバイスに対して送信することが可能である。
【００５６】
全外部コピーが無効にされたとき（ＸプロトコルＸＩＮＶ_ａｃｋ 応答の受領により確認される）、コヒーレンス変換装置２００は、要求先メモリブロックの最新コピーを内部ドメインから取得し得、また、全内部共有コピーを無効にし得る。１つの例では、コヒーレンス変換装置２００は、要求先メモリブロックの最新コピーを内部ドメインから取得し得、共有バス１０８に対してＲＴＯ要求を発行することにより全内部共有コピーを無効にし得る。（ＲＴＯ_ｄａｔａ 応答を介して）要求先コピーを内部ドメインから受信することにより、コヒーレンス変換装置２００は、ＲＴＯＲ応答を介して、適当なＭタグ、この場合ｇＭ、とともにコピーをメモリモジュール１１０にライトバックし得る。この後、コヒーレンス変換装置２００は、ＲＴＯＲ_ｄａｔａ 応答を介して、要求先コピーをＲＲＴＯ発行元に提供し得る。
【００５７】
ＸＩＮＶコマンドの使用は、外部デバイスによりキャッシュされた要求先メモリブロックの全共有コピーを都合よく無効にすることに注意を払うべきである。さらに、コヒーレンス変換装置２００による共通バス１０８に対するＲＴＯ要求の使用は、都合よく、コンピュータノード１００内の全内部共有コピーが無効化されているかを確認し、また、要求元エンティティ、すなわち  ＲＲＴＯ発行元に転送するために要求先メモリブロックを取得する。
【００５８】
ＲＲＴＯ要求がｇＩＭタグに応答するＲＴＯ発行元によって発行された場合には、コヒーレンス変換装置２００は、ＸプロトコルＸＲＴＯ要求を介して、外部専用コピーを取得し、その外部専用コピーを無効にすることによりこのＲＲＴＯコマンドに応答し得る。（ＸプロトコルＸＲＴＯ_ｄａｔａ応答を介して ）外部専用コピーが取得されると、コヒーレンス変換装置２００は、ＲＴＯＲ応答を介してｇＭに関して要求先メモリブロックに対応するＭタグの状態を変更するために、メモリモジュール１１０に対するライトバックを実行し得る。さらに、コヒーレンス変換装置２００は、ＲＴＯＲ_ｄａｔａ 応答を介して取得したメモリブロックのコピーをＲＲＴＯ発行元にリターンし得る。
【００５９】
「共有遠隔要求（ＲＲＴＳ）」
遠隔メモリアクセス要求がメモリブロックの共有コピーについての要求（ＲＲＴＳ）であり、また、現在のＭタグの状態がｇＭまたはｇＳの場合には、コヒーレンス変換装置２００は、（これらの状態は、１つ以上の有効な共有、または専用コピーが内部に存在していることを示すので）これは誤り状態であると理解し、また、内部バスエンティティから共有コピーを取得するためにＲＴＳ発行元に再試行を要求し得る。ＲＲＴＳ要求がｇＩＭタグに応答するＲＴＳ発行元によって発行された場合には、コヒーレンス変換装置２００は、（ＸプロトコルＸＲＴＳ要求を介して）外部デバイスから要求先メモリブロックの共有コピーを取得することにより、このＲＲＴＳコマンドに応答し得る。（ＸプロトコルＸＲＴＳ_ｄａｔａ応答を介して）外部専用コピーが取得されると、コヒーレンス変換装置２００は、ＲＴＯＲ応答を介してｇＳに関して要求先メモリブロックに対応するＭタグの状態を変更するために、メモリモジュール１１０に対するライトバックを実行し得る。さらに、コヒーレンス変換装置２００は、ＲＴＳＲ_ｄａｔａ 応答を介して取得したメモリブロックのコピーをＲＲＴＳ発行元にリターンし得る
。
【００６０】
コヒーレンス変換装置２００は、コンピュータノード１００内の処理ノードにより発行されたメモリアクセス要求に対して応答するためにそれら処理ノードと対話するだけでなく、コンピュータノード１００内にローカル物理アドレスを有するメモリブロックをパターニングするメモリアクセス要求を提供するために、外部デバイス、例えば、外部デバイス２０２，２０４，２０６とも対話する。
【００６１】
図１１は、外部デバイスの１つからのメモリアクセス要求に応じてコヒーレンス変換装置２００により実行される選択処理を図示する。図１１では、前述の汎用Ｘプロトコルを用いて、外部デバイスの１つ、例えば、外部デバイス２０２，２０４，２０６の内の１つにより、コヒーレンス変換装置２００に対してメモリアクセス要求が発行される。他の外部デバイスが現在、要求先メモリブロックの要求先コピーをキャッシュしている場合には、このメモリアクセスは、コヒーレンス変換装置２００自身のアテンションを必要とすることなく、コヒーレンス変換装置２００に備えられている論理回路構成により処理されることが好ましい。
【００６２】
一方、他の外部デバイスが、外部メモリアクセス要求を提供するために要求先メモリブロックの有効なコピーを有していない場合には、コヒーレンス変換装置２００は、コンピュータノード１００に対する適当なプロトコルを使用してメモリアクセス要求を共通バス１０８上に表し、これにより、コヒーレンス変換装置２００は、要求元の外部デバイスに代わって要求先メモリブロックの要求先コピーを取得し得る。さらに、メモリブロックのコピーは、現在、外部デバイスによりキャッシュされているので、このメモリブロックと関連するＭタグは、この変更を反映するためにメモリモジュール１１０内にて変更されなければならない。
【００６３】
「ＸＲＴＯメモリアクセス要求」
図１１を参照する。コンピュータノード１００内のローカル物理アドレスを有するメモリブロック、例えば、メモリブロック１１２（ａ）の専用コピーを取得するために、外部デバイスがメモリアクセス要求を発行するとき、外部デバイスは、コヒーレンス変換装置２００に対してＸＲＴＯ要求を発行する。コヒーレンス変換装置２００は、内部ドメインから要求先メモリブロックのコピーを取得し、（共通バス１０８に対してＲＴＯ要求を発行することにより）要求先メモリブロックの全内部コピーを無効にする。要求先メモリブロックのコピーを受け取った後、コヒーレンス変換装置２００は、自身の次の動作を決定するために関連するＭタグの状態を確認する。
【００６４】
（ＲＴＯ_ｄａｔａ 応答に含まれる）Ｍタグの状態がｇＩの場合には、外部ドメインは専用コピーを有しておらず（さもなければ、専用コピーを内部ドメインに要求する必要はない）、また、内部ドメインは共有、及び専用コピーの双方を有していない（ｇＩＭタグ状態）ので、コヒーレンス変換装置２００は、これを誤りであると理解する。誤り状態は、種々の従来技術、例えば、誤りフラグ、及び／またはソフトウェア、またはハードウェアリセットの実行を用いて処理され得る。
【００６５】
一方、Ｍタグの状態がｇＭ、またはｇＳの場合には、コヒーレンス変換装置２００は、内部ドメインには、もはや要求先メモリブロックの有効なコピーは存在しないことを示すために、（ＷＢ要求、及びＷＢ_ｄａｔａ 応答を介して）メモリモジュール１１０に新規な状態、すなわち、ｇＩをライトバックする。一例においては、ライトバックは、共通バス１０８上の帯域幅を節約するため、新規な状態ｇＩとともにだけ実行され得、要求先メモリブロックについてのいかなる他のデータともともに実行されることはない。この後、コヒーレンス変換装置２００は、取得済メモリブロックのコピーをＸプロトコルＸＲＴＯ_ｄａｔａ 応答を介して要求元外部デバイスに転送する。
【００６６】
「ＸＲＴＳメモリアクセス要求」
コンピュータノード１００内にローカル物理アドレスを有するメモリブロック、例えば、メモリブロック１１２（ａ）の共有コピーを取得するために外部デバイスがメモリアクセス要求を発行するとき、外部デバイスは、コヒーレンス変換装置２００に対してＸＲＴＳ要求を発行する。コヒーレンス変換装置２００は、内部ドメインから要求先メモリブロックのコピーを取得し、（ＲＴＳＭ要求を共通バス１０８に対して発行し、ＲＴＳＭ_ｄａｔａ 応答を受け取ることにより）ｇＳ状態をメモリモジュール１１０に書き込む。Ｍタグの状態がｇＩの場合には、コヒーレンス変換装置２００は、一般的に、メモリモジュールからＭタグｇＩを伴う応答を受信する。応答が受信され、ＲＴＳＭ_ｄａｔａ に含まれるＭタグの状態がｇＩであるとき、あるいは、何らかの理由により、応答がない場合には、外部ドメインは専用コピーを有しておらず（さもなければ、専用コピーを内部ドメインに要求する必要はない）、また、内部ドメインは共有、及び専用コピーの双方を有していない（ｇＩＭタグ状態）ので、コヒーレンス変換装置２００は、これを誤りであると理解する。誤り状態は、種々の従来技術、例えば、誤りフラグ、及び／またはソフトウェア、またはハードウェアリセットの実行を用いて処理され得る。
【００６７】
一方、Ｍタグの状態がｇＭ、またはｇＳの場合には、コヒーレンス変換装置２００は、取得済メモリブロックのコピーをＸプロトコルＸＲＴＳ_ｄａｔａ 応答を介して要求元外部デバイスに転送し得る。
【００６８】
ＲＴＳＭ及びＲＴＳＭ_ｄａｔａ 列は、（コヒーレンス変換装置２００から共通バス１０８への）ＲＴＯ、（共通バス１０８からコヒーレンス変換装置２００への） ＲＴＯ_ｄａｔａ、（メモリモジュール１１０への書込み許可を請うためのコヒーレンス変換装置２００から共通バス１０８への）ＷＢ、及び（メモリモジュール１１０内の対応メモリブロックにｇＳＭタグを書き込む）ＷＢ_ｄａｔａを含む列によって等しく置換され得ることに留意すべきである。
【００６９】
「ＸＷＢ要求」
先にキャッシュされたメモリブロックの専用コピーをコンピュータノード１００からライトバックするために外部デバイスが要求を発行するとき、外部デバイスは、コヒーレンス変換装置２００に対してＸプロトコルＸＷＢ要求を発行する。コヒーレンス変換装置２００は、関連するＭタグの現在の状態を確認するために内部ドメインから要求先メモリブロックのコピーを取得し得る。現在の状態がｇＭ、または、ｇＳの場合には、ライトバックを要求する外部ドメインは、有効な専用コピーを有しておらず、また、コンピュータシステム内のどこにも同一メモリブロックの他の有効な（専用、または、共有）コピーは存在し得ないので、コヒーレンス変換装置２００は、これを誤りであると理解する。誤り状態は、種々の従来技術、例えば、誤りフラグ、及び／またはソフトウェア、またはハードウェアリセットの実行を用いて処理され得る。
【００７０】
一方、Ｍタグの状態がｇＩの場合には、コヒーレンス変換装置２００は、（ＸプロトコルＸＷＢ_ｄａｔａ 応答を介して）外部デバイスからライトバックされるデータを受信し、また、このデータを新規なｇＭＭタグとともにメモリモジュール１１０内の適当なメモリロケーションに書き込む。一例においては、データ、及びｇＭＭタグ状態の双方の書込みは、データ、及び新規ｇＭＭタグの双方の書込みを要求するＷＳｇＭコマンド、続いて、ＷＳｇＭ_ｄａｔａコマンド中のデータ、及び新規ｇＭＭタグを共通バス１０８に対して発行することにより達成され得る。
【００７１】
ＷＳｇＭ及びＷＳｇＭ_ｄａｔａ 列は、（コヒーレンス変換装置２００から共通バス１０８への）ＲＴＯ、（共通バス１０８からコヒーレンス変換装置２００への） ＲＴＯ_ｄａｔａ、（メモリモジュール１１０への書込み許可を請うためのコヒーレンス変換装置２００から共通バス１０８への）ＷＢ、及び（メモリモジュール１１０内の対応メモリブロックにｇＳＭタグを書き込む）ＷＢ_ｄａｔａを含む列によって等しく置換され得ることに留意すべきである。
【００７２】
都合の良いことに、コヒーレンス変換装置及び密結合要求−応答処理の使用は、コンピュータノード１００の共通バス１０８上のプロトコルとは異なるプロトコルを使用する外部デバイスがコンピュータノード１００内にローカル物理アドレスを有するメモリブロックを共有することを許容する。さらに、コヒーレンス変換装置２００は、たとえ、各外部デバイスが、共通バス１０８上の動作速度とは異なる動作速度で動作している場合であってもこの共有を可能にする。
【００７３】
メモリを共有するために、外部デバイスがＭタグに適応する必要のないことに留意すべきである。バスエンティティ、例えば、メモリモジュール１１０、共通バス１０８と結合されているプロセッサ、及びコヒーレンス変換装置２００だけが、コヒーレンス問題を回避するためにＭタグの存在に気づいていなければならない。したがって、コヒーレンス変換装置２００のこの特徴は、外部デバイスに対していかなる変更をも要求することなく、メモリの共有を促進にするために、適当に構成されたコンピュータノードが幅広く既存の外部デバイスを取り扱うことを都合良く許容する。
【００７４】
本発明は、都合の良いことに、外部デバイスがどのような数のメモリブロックをもキャッシュすることを許容する。Ｍタグの存在により、コヒーレンス変換装置２００は、共通バス１０８上のメモリアクセス要求に介入するべきか否かを決定するために、外部デバイスにより現在キャッシュされている全メモリブロックをトラックし続ける必要がないという利点を有する。本発明に係る発明の実施の形態の１つによれば、メモリモジュール１１０からメモリブロックを取得するバスエンティティは、取得したメモリブロックのＭタグ状態を確認することにより、自身のために、（コヒーレント変換装置２００に対する遠隔要求ＲＲＴＯ、ＲＲＴＳを介して）より新しいコピーを外部デバイスに要求する必要があるか否かを決定する。このことは、外部からキャッシュされている全メモリブロックをトラックし続けなければならない技術とは大きく異なるとともに、これら技術を飛躍的に進歩させるものである。このような技術では、外部デバイスにより現在キャッシュされている全メモリブロックをトラックし続けるために、メモリオーバヘッド、及び介入が必要か否かを調査し、決定するために必要な時間を増加させる要因となる大きなメモリスペースを必要とする。
【００７５】
一つの例では、コヒーレンス変換装置には、外部デバイスの内の１つにより最も直近にアクセスされたメモリブロックのコピーを一時的に格納するために１つ以上のバッファブロックが備えられている。バッファブロックは、メモリブロックのアドレス、及び関連するＭタグデータの双方を格納し得る。バッファブロックは、メモリモジュール１１０内のＭタグの状態を変更するためにコヒーレンス変換装置２００が、メモリモジュール１１０にライトバックすることを許容するという利点を有する。
【００７６】
コヒーレンス変換装置２００が要求先メモリブロックのコピーを取得した後であって、コヒーレンス変換装置２００が、Ｍタグ、例えば、外部デバイスからのＸＲＴＯ要求に対応するＭタグをライトバックする前の期間、コヒーレンス変換装置２００は、介入のためにバッファ内に格納されているデータを使用して共通バス１０８を監視し得る。例えば、上記期間に、他の内部バスエンティティがこのメモリブロックを要求する場合には、介入が必要となり得る。介入は、本質的に、コヒーレンス変換装置２００によるバッファ内にてトラックされているメモリブロックへのメモリアクセス要求の提供を伴う。例えば、コヒーレンス変換装置のスヌーピング動作を介してメモリアクセス要求を提供するための技術の１つが同時継続中の米国特許出願（米国特許出願番号０８／６７７，０１５）に記載されている。
【００７７】
Ｍタグを適当な状態に変更するために一旦ライトバックが実行されると、バッファ中におけるそのメモリブロックのコピーをもはや保持する必要はなくなることに留意すべきである。メモリブロックのコピーは、一般的に、非常に短い時間バッファ内に保持されているので、要求されるバッファ数は、かなり少なく、介入が必要か否かを決定するためのバッファ検索に関連する遅れを都合良く最小化する。
【００７８】
さらに、外部発生メモリアクセス要求、例えば、ＸＲＴＯ、ＸＲＴＳ、ＸＷＢ等に対する応答は、対応するＭタグの状態の情報を要求するので、一例における最適化技術として、メモリモジュール１１０のいくつかの、または、全てのメモリブロックをトラックするためのＭタグキャッシュアレイが任意に備えられる。例えば、Ｍタグキャッシュアレイは、外部からキャッシュされたメモリブロックのＭタグ状態だけをトラックするために備えられ得る。あるいは、Ｍタグキャッシュアレイは、メモリモジュール１１０内の全メモリブロックのＭタグ状態をトラックするために使用され得る。
【００７９】
他の例では、Ｍタグキャッシュアレイは、Ｍタグ状態がｇＳ及びｇＩであるメモリブロックだけをトラックするために備えられ得る。この例は、特に、どの所定時間においても比較的少ない数のメモリブロックが外部的にキャッシュされているコンピュータシステムに都合がよい。このようなコンピュータシステムでは、ほとんどのメモリはｇＭ状態を有しており、僅かなメモリブロックはがｇＳ及びｇＩＭタグ状態を有している。
【００８０】
コヒーレンス変換装置２００は、所定のメモリブロックに関連するＭタグの情報を要求するとき、先ず、Ｍタグキャッシュアレイを調べる。キャッシュが発見された場合には、Ｍタグ状態を確認するために共通バス１０８の帯域幅は要求されない。キャッシュが発見されなかった場合には、コヒーレンス変換装置２００は、採るべき適当な動作を決定するために記述の様に共通バス１０８を介して関連するＭタグの状態を尋ねる。Ｍタグキャッシュアレイの存在は、必須要件ではなく、Ｍタグのキャッシュが実行されない実施例においても同様に機能する（この場合、コヒーレンス変換装置は、この情報が必要なとき、共通バス１０８を介してＭタグの状態を尋ねる）。
【００８１】
これまで、バスあたり１つのコヒーレンス変換装置を備える発明について説明してきた。しかしながら、システム設計者は、ある場合には、例えば、Ｉ／Ｏ装置、ＤＳＭメモリエージェント、コヒーレンスドメイン装置等の、同一、または、異なる型の多くの他の選択デバイスを接続するために、バスに対して複数のコヒーレンス変換装置の装着を望み得る。かかる複数のコヒーレンス変換装置の実施例は、当業者にとって明らかである。複数コヒーレンス変換装置の実施例では、Ｍタグに、どのコヒーレンス変換装置が外部からのブロックを有しているか識別するためのフィールドが付加され得るので、プロセッサはどのコヒーレンス変換装置が適当なＲＲＴＯ、及びＲＲＴＳを受信すべきかを理解する。
【００８２】
以上、いくつかの発明の実施の形態に基づき本発明を説明したが、本発明の趣旨から逸脱しない範囲で種々の変更改良が可能である。本発明に係る方法、及び装置は、他の多くの方法によっても実現可能であることに留意すべきである。本発明は、これらの、あるいは他の類似するシステムに対しても同様に適用される。
【００８３】
【発明の効果】
以上説明したように、本発明に係るコンピュータシステムをコヒーレントドメインと接続するための方法、及びその装置によれば、効率的かつエラーのない方法で、他の処理ノード、及び外部デバイスといった相互接続エンティティ間において、特定のコンピュータ内にローカル物理アドレス（ＬＰＡ）を有するメモリブロックの共有が許容される。
【図面の簡単な説明】
【図１】  本発明が適用される一般的なコンピュータシステムの概略構成を示す構成図である。
【図２】  本発明に係る発明の実施の形態の１つにおける、コヒーレンス変換装置ブロックを模式的に示すブロック図である。
【図３】  本発明に係る発明の実施の形態の１つにおける、メモリブロック、及びメモリブロックに関連するメモリタグ（Ｍタグ）を模式的に示すブロック図である。
【図４】  本発明に係る発明の実施の形態の１つにおける、Ｍタグに格納され得る種々の利用可能な状態を示す説明図である。
【図５】  本発明に係る発明の実施の形態の１つにおける、共通バス上の一般的なメモリアクセス要求のフォーマットの詳細を示す説明図である。
【図６】  本発明に係る発明の実施の形態の１つにおける、図５の要求に対する一般的な応答のフォーマットを詳細に示す説明図である。
【図７】  本発明に係る発明の実施の形態の１つにおける、コヒーレンス変換装置内の機能装置を示す説明図である。
【図８】  本発明に係る発明の実施の形態の１つにおける、バスエンティティによって発行され得る種々のメモリアクセス要求、及び応答を示す説明図である。
【図９】  本発明に係る発明の実施の形態の１つにおける、バスエンティティによって発行され得る種々のメモリアクセス要求、及び応答を示す説明図である。
【図１０】本発明に係る発明の実施の形態の１つにおける、共通バス上のメモリアクセス要求に対応してコヒーレンス変換装置により実行される選択処理を示す説明図である。
【図１１】本発明に係る発明の実施の形態の１つにおける、外部デバイスの１つからのメモリアクセス要求に対応してコヒーレンス変換装置により実行される選択処理を示す説明図である。
【符号の説明】
１００…コンピュータノード、１０８…共通バス、１１０…メモリモジュール、１１２…メモリブロック、２００…コヒーレンス変換装置、２０２，２０４，２０６…外部デバイス、２２０…コヒーレンス変換装置リンク、２２２，２２４，２２６…リンク、２５０…受信論理回路、２５２…メモリタグ（Ｍタグ）、２６２…プロトコル変換論理回路、４００…メモリアクセス要求、４０２…型フィールド、４０４…アドレスフィールド、４０６…ソースＩＤ（ＳＩＤ）フィールド、４０８…オウンフラグ、５００…応答、５０２…ソースＩＤ（ＳＩＤ）フィールド。
【図１】
0003919295.tif 000002
【図２】
0003919295.tif 000003
【図３】
0003919295.tif 000004
【図４】
0003919295.tif 000005
【図５】
0003919295.tif 000006
【図６】
0003919295.tif 000007
【図７】
0003919295.tif 000008
【図８】
0003919295.tif 000009
【図９】
0003919295.tif 000010
【図１０】
0003919295.tif 000011
【図１１】
0003919295.tif 000012