(57)【要約】      （修正有）【課題】マルチプロセッサ・システム内部のデータ一貫性を維持するシステムを提供すること。【解決手段】第１のプロセッサは、データ・ラインが第１のプロセッサのキャッシュ内に見つからないかどうかを判定し、そのデータ・ラインを求める要求を第２のプロセッサに転送するように構成される。第２のプロセッサは、第２のプロセッサから第１のプロセッサにデータ・ラインを転送し、データ・ラインが第１のプロセッサに転送されたことを反映するために第２のプロセッサのディレクトリを更新し、さらにデータ・ラインが第１のプロセッサに転送されたことを反映するためにディレクトリ更新メッセージを少なくとも１つの追加のプロセッサに転送するように構成される。ディレクトリ内のエントリは、メモリ・アドレス、最新のデータ所有者、およびライン状態を含む。【選択図】図１
2007183915.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサ・システムにおけるデータ一貫性を維持する方法であって、
データ・ラインが第１のプロセッサのキャッシュ内に見つからないことを判定するステップと、
前記データ・ラインを求める要求を第２のプロセッサに転送するステップと、
前記データ・ラインを前記第２のプロセッサから前記第１のプロセッサに転送するステップと、
前記データ・ラインが前記第１のプロセッサに転送されたことを反映するために、前記第２のプロセッサのディレクトリを更新するステップと、
前記データ・ラインが前記第１のプロセッサに転送されたことを反映するために、前記第１および第２のプロセッサとは別の少なくとも１つの追加のプロセッサにディレクトリ更新メッセージを転送するステップと
を含む方法。
【請求項２】
前記データ・ラインのアドレスを含むエントリが前記第１のプロセッサのディレクトリ内に見つからないことを判定するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記第１のプロセッサの前記ディレクトリ内にあるエントリが、メモリ・アドレス、最新のデータ所有者、およびライン状態を含む、請求項２に記載の方法。
【請求項４】
前記第２のプロセッサが前記データ・ラインのホーム・エージェントである、請求項２に記載の方法。
【請求項５】
前記データ・ラインのアドレスに対するエントリが前記第１のプロセッサのディレクトリ内に見つかることを判定するステップをさらに含む、請求項１に記載の方法。
【請求項６】
前記第１のプロセッサの前記ディレクトリ内にあるエントリが、メモリ・アドレス、最新のデータ所有者、およびライン状態を含む、請求項５に記載の方法。
【請求項７】
前記データ・ラインの前記アドレスが、前記第２のプロセッサがデータ所有者であることを指示する、請求項５に記載の方法。
【請求項８】
前記第１のプロセッサが前記第２のプロセッサから前記データ・ラインを受信した後で、前記第１のプロセッサの前記ディレクトリ内にある、前記データ・ラインの前記アドレスに対する前記エントリを無効にするステップをさらに含む、請求項５に記載の方法。
【請求項９】
前記少なくとも１つの追加のプロセッサが前記ディレクトリ更新メッセージを受信したことに応答して、前記データ・ラインが前記第１のプロセッサに転送されたことを反映するために前記少なくとも１つの追加のプロセッサのディレクトリを更新するステップをさらに含む、請求項１に記載の方法。
【請求項１０】
前記ディレクトリ内にあるエントリが、メモリ・アドレス、最新のデータ所有者、およびライン状態を含む、請求項１に記載の方法。
【請求項１１】
マルチプロセッサ・システムにおけるデータ一貫性を維持するシステムであって、
キャッシュおよびディレクトリを備えた第１のプロセッサと、
ディレクトリを備えた第２のプロセッサと、
ディレクトリを備えた、前記第１および第２のプロセッサとは別の少なくとも１つの追加のプロセッサとを含み、
前記第１のプロセッサが、
前記第１のプロセッサの前記キャッシュ内にデータ・ラインが見つからないかどうかを判定し、
前記データ・ラインを求める要求を前記第２のプロセッサに転送する
ように構成され、
前記第２のプロセッサが、
前記データ・ラインを前記第２のプロセッサから前記第１のプロセッサに転送し、
前記データ・ラインが前記第１のプロセッサに転送されたことを反映するために、前記第２のプロセッサの前記ディレクトリを更新し、
前記データ・ラインが前記第１のプロセッサに転送されたことを反映するために、前記少なくとも１つの追加のプロセッサにディレクトリ更新メッセージを転送する
ように構成されたシステム。
【請求項１２】
前記第１のプロセッサが、前記データ・ラインのアドレスを含むエントリが前記第１のプロセッサの前記ディレクトリ内に見つからないことを判定する、請求項１１に記載のシステム。
【請求項１３】
前記第１のプロセッサが、前記データ・ラインのアドレスに対するエントリが前記第１のプロセッサの前記ディレクトリ内に見つかることを判定する、請求項１１に記載のシステム。
【請求項１４】
前記第１のプロセッサが前記第２のプロセッサから前記データ・ラインを受信した後で、前記第１のプロセッサの前記ディレクトリ内にある、前記データ・ラインの前記アドレスに対する前記エントリを無効にするように前記第１のプロセッサが構成される、請求項１３に記載のシステム。
【請求項１５】
前記少なくとも１つの追加のプロセッサが前記ディレクトリ更新メッセージを受信したことに応答して、前記データ・ラインが前記第１のプロセッサに転送されたことを反映するために前記少なくとも１つの追加のプロセッサの前記ディレクトリを更新するように前記少なくとも１つの追加のプロセッサが構成される、請求項１１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般にマルチプロセッサ・コンピュータ・システムに関し、より詳細には、マルチプロセッサ・コンピュータ・システム内部のデータ一貫性を維持するための方法およびシステムに関する。
【背景技術】
【０００２】
データがマルチプロセッサ・コンピュータ・システム全体に分散されるときには、データ一貫性（data coherency）の問題が存在する。データ一貫性は、マルチプロセッサ・システムの複数のノード／プロセッサが、ほぼ同じ瞬間にまたはオーバラップ期間に特定のデータへのアクセスまたはそれの修正、あるいはその両方を試みた場合に問題になる。データ一貫性を保証するために多様な方法が使用されてきたが、これらの方法は、データ一貫性を保証するために、マルチプロセッサ・システム内の要求元プロセッサから他のプロセッサに宛てて、および他のプロセッサ間で多数の要求が使用されることによってその特徴が示される。例えば、特定のプロセッサのキャッシュにデータ・ライン（データ行）が見つからない場合、そのプロセッサは、マルチプロセッサ・システム内の他のプロセッサの各々に要求を送信して、他のプロセッサのキャッシュの１つにそのデータ・ラインが見つかるかどうかを判定することができる。これらのトランザクション／コマンド・トラフィックはプロセッサ／システム・リソースを消費することになり、結果として、マルチプロセッサ・システム内部の待ち時間を増加させることになる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
したがって、システム内部のトランザクションひいては待ち時間を削減しながら、マルチプロセッサ・システム内部のデータ一貫性を効率的に維持することができるシステムおよび方法が必要とされている。
【課題を解決するための手段】
【０００４】
本発明の諸実施形態は、マルチプロセッサ・システムに関する技術の欠点を解決するとともに、マルチプロセッサ・システムにおけるデータ一貫性を維持するための新規であり、かつ自明でないシステムおよび方法を提供する。マルチプロセッサ・システムは、キャッシュおよびディレクトリを備えた第１のプロセッサと、ディレクトリを備えた第２のプロセッサと、ディレクトリを備えた、第１および第２のプロセッサとは別の少なくとも１つの追加のプロセッサとを含む。第１のプロセッサは、データ・ラインが第１のプロセッサ内のキャッシュに見つからないかどうかを判定し、そのデータ・ラインを求める要求を第２のプロセッサに転送するように構成される。第２のプロセッサは、第２のプロセッサから第１のプロセッサにデータ・ラインを転送し、データ・ラインが第１のプロセッサに転送されたことを反映するために第２のプロセッサのディレクトリを更新し、さらにデータ・ラインが第１のプロセッサに転送されたことを反映するためにディレクトリ更新メッセージを少なくとも１つの追加のプロセッサに転送するように構成される。ディレクトリ内のエントリは、メモリ・アドレス、最新のデータ所有者（data holder）、およびライン状態を含む。
【０００５】
ある態様では、第１のプロセッサが第１のプロセッサのディレクトリ内にデータ・ラインのアドレスを有するエントリが見つからないと判定した場合に、要求が送信される第２のプロセッサは、そのデータ・ラインのホーム・エージェントである。第１のプロセッサが、データ・ラインのアドレスに対するエントリが第１のプロセッサのディレクトリ内に見つかったと判定した場合は、要求はデータ所有者である第２のプロセッサに送信される。第１のプロセッサはまた、第１のプロセッサが第２のプロセッサからのデータ・ラインを受信した後で、第１のプロセッサのディレクトリ内にある、そのデータ・ラインのアドレスに対するエントリを無効にするようにも構成される。少なくとも１つの追加のプロセッサは、その少なくとも１つの追加のプロセッサがディレクトリ更新メッセージを受信したことに応答して、データ・ラインが第１のプロセッサに転送されたことを反映するために、その少なくとも１つの追加のプロセッサのディレクトリを更新するように構成される。
【０００６】
本発明の追加の態様については、その一部は以下の記述の中で説明され、その一部は説明から自明であり、またその一部は本発明の実施によって習得することができるはずである。本発明の諸態様は、添付の特許請求の範囲で詳細に指摘した諸要素およびその組み合わせによって実現し達成することができる。前述の一般的な説明および以下の詳細な説明のどちらもが、例示および説明のためのものに過ぎず、特許請求の範囲に記載の本発明を制限するものではないことに留意されたい
【０００７】
本明細書に組み込まれ、その一部をなす添付の図面は、本発明の実施形態を例示するとともに、詳細な説明と併せて本発明の原理を説明するためのものである。本明細書に示した諸実施形態は、現在好ましい実施形態を示したものであるが、本発明が図示の構成および手段そのものに限定されるものではないことを理解されたい。
【発明を実施するための最良の形態】
【０００８】
図２および図３に示したように、マルチプロセッサ・システムの各プロセッサ１０、１１、１２、１３は、データ・ラインを格納するためのデータ・キャッシュおよびディレクトリを含む。ディレクトリは、マルチプロセッサ・システムを通してデータ・ラインがどのように流れたか示す記憶リポジトリ（storage repository）である。この方法に限られるものではないが、データ・ラインの各ディレクトリ・エントリには、データ・ラインのメモリ・アドレス、データ・ラインの最新の所有者、およびデータ・ラインの状態を含めることができる。一例として、ライン状態は、あるプロセッサがデータ・ラインの独占的な所有権を有していること、データ・ラインが読み出し専用にできること、あるいはデータ・ラインが修正されたことなどの場合がある。
【０００９】
マルチプロセッサ・システムにおいてデータ一貫性を維持するための例示的な方法が図１に示されている。ステップ１１０で、プロセッサ１０はすでに、プログラムの実行に使用されるデータ・ラインを求めて最終レベル・キャッシュを検索し、プロセッサ１０の最終レベル・キャッシュにデータ・ラインが存在しないことを確認済みである。ステップ１２０はステップ１１０と同時に実施することも可能であるが、このステップで、プロセッサ１０はデータ・ラインのアドレスを求めてプロセッサ１０のディレクトリを検索する。
【００１０】
データ・ラインのアドレスがプロセッサ１０のディレクトリ内に見つかった場合は、方法はステップ２３０〜２９０に進む。これらの各ステップについては、図３に関連して後で論ずる。一方、データ・ラインのアドレスがプロセッサ１０のディレクトリ内に見つからなかった場合は、方法はステップ１３０〜１８０に進む。これらの各ステップは図２にも示されている。ステップ１３０で、プロセッサ１０は、アドレス・ルーティング・テーブルによってデータ・ラインの所有者であるホーム・エージェント（すなわち、プロセッサ１２）に要求を送信する。アドレス・ルーティング・テーブルは、各プロセッサに関するメモリのメモリ・アドレスがどこから始まり、どこで終るかをマッピングしたものである。
【００１１】
ステップ１４０で、プロセッサ１２は、メモリからデータ・ラインを取り出し、そのデータ・ラインを要求元プロセッサ１０に送信する。ステップ１５０はステップ１４０と同時に実施することが可能であるが、このステップで、データ・ラインが要求元プロセッサ１０に送信されたことを反映するために、プロセッサ１２はそれ自体のディレクトリを更新する。ステップ１６０で、プロセッサ１２は、マルチプロセッサ・システム内の他のプロセッサ１１、１３にディレクトリ更新メッセージを転送する。ステップ１７０で、これらの他のプロセッサ１１、１３もまた、データ・ラインが要求元プロセッサ１０に送信されたことを反映するために、それらのディレクトリを更新する。ステップ１８０で、要求元プロセッサ１０はプロセッサ１２からデータ・ラインを受信し、要求元プロセッサ１０はそのデータをそれ自体のキャッシュに配置する。この方法に限られるものではないが、データ・ラインが現在、要求元プロセッサ１０のキャッシュに存在しているので、要求元プロセッサ１０は必ずしも、データ・ラインが要求元プロセッサ１０に送信されたことを反映するために、それ自体のディレクトリを更新する必要があるわけではない。
【００１２】
データ・ラインのアドレスがプロセッサ１０のディレクトリ内に見つかった場合は、ステップ２３０で、プロセッサ１０は、プロセッサ１０のディレクトリ内で見つかったアドレスに基づいてデータ所有者（すなわち、プロセッサ１１）に要求を送信する。ステップ２４０で、プロセッサ１１はメモリからデータ・ラインを取り出し、そのデータ・ラインを要求元プロセッサ１０に送信する。ステップ２５０はステップ２４０と同時に実施することができるが、このステップで、データ・ラインが要求元プロセッサ１０に送信されたことを反映するために、プロセッサ１１はそれ自体のディレクトリを更新する。ステップ２６０で、プロセッサ１１は、マルチプロセッサ・システム内の他のプロセッサ１２、１３にディレクトリ更新メッセージを転送する。ステップ２７０で、これらの他のプロセッサ１２、１３もまた、データ・ラインが要求元プロセッサ１０に送信されたことを反映するために、それらのディレクトリを更新する。ステップ２８０で、要求元プロセッサ１０はプロセッサ１１からデータ・ラインを受信し、要求元プロセッサ１０はそれ自体のキャッシュにそのデータを配置する。ステップ２９０で、要求元プロセッサ１０は、それ自体のディレクトリ内のそのデータ・ラインに対するエントリを無効にする。なぜならば、そのエントリがもはや正しいものではないからである。
【００１３】
ハードウェアとソフトウェアの代表的な組み合わせは、例えば、ロードされ実行されたときに、本明細書に記載された方法を実行するようにコンピュータ・システムを制御するコンピュータ・プログラムを備えた汎用コンピュータ・システムである。本発明は、本明細書に記載した方法の実装を可能にするあらゆる機能を含み、コンピュータ・システムにロードされたときにそれらの方法を実行することができるコンピュータ・プログラムに組み込むこともできる。
【００１４】
本文脈におけるコンピュータ・プログラムまたはアプリケーションという用語は、直接に、あるいは（ａ）他の言語、コード、もしくは表記法（notation）への変換、および（ｂ）異なる材料形態への複製の一方または両方の後で、情報処理機能を有するシステムに特定の機能を実施させることを意図した１組の命令の、任意の言語、コード、または表記法における任意の表現を意味する。重要なことは、本発明が、その趣旨または本質的な特性を逸脱することなく、他の特定の形態で実施することができることであり、したがって、本発明の範囲を指示するものとしては、前述の明細書ではなく、添付の特許請求の範囲を参照されたい。
【図面の簡単な説明】
【００１５】
【図１】本発明の構成に従って、マルチプロセッサ・コンピュータ・システムにおいてデータ一貫性を維持するための方法を示した流れ図である。
【図２】図１に示されたデータ一貫性を維持する方法に対する、マルチプロセッサ・コンピュータ・システムの一構成図である。
【図３】図１に示されたデータ一貫性を維持する方法に対する、マルチプロセッサ・コンピュータ・システムの一構成図である。
【図１】
2007183915.tif 000003
【図２】
2007183915.tif 000004
【図３】
2007183915.tif 000005