(57)【特許請求の範囲】
【請求項１】
それぞれが複数のプロセッサを有する複数のノード、主記憶ユニット及び応答収集配布ユニットを含むコンピュータ・システム内でデータを転送する方法であって、前記コンピュータ・システム内の全てのプロセッサは、トランザクション要求用のバスにより前記主記憶ユニットに接続され、同一のノード上にある複数のプロセッサの各々はノード毎に設けられた対応するノードレベルのスイッチを介して互いに接続され、前記複数のノードの各々はシステムレベルのスイッチを介して互いに及び前記主記憶ユニットに接続され、前記方法は、
前記トランザクション要求用のバス上でトランザクションが開始されたことに応答して、前記応答収集配布ユニットにより、データを要求した要求元のプロセッサを記録するステップと、
前記応答収集配布ユニットにより、前記要求元のプロセッサを除く全てのプロセッサ及び前記主記憶ユニットからの、前記トランザクション要求用のバス上に同報通信された前記データの要求に対する応答を収集するステップと、
前記応答収集配布ユニットにより、収集した前記応答を評価することによって、要求された前記データが、いずれかのプロセッサにおいて変更されたか否かを判定するステップと、
いずれのプロセッサにおいても前記データが変更されていないとの判定に応答して、前記応答収集配布ユニットにより、収集した前記応答を評価することによって、前記データを有し、かつ前記要求元のプロセッサと同一のノード上にあるプロセッサが存在するか否か判定するステップと、
存在するとの判定に応答して、前記応答収集配布ユニットにより、前記同一のノード上にあるプロセッサに、該プロセッサが前記要求元のプロセッサに対応する前記ノードレベルのスイッチを介して前記データを供給できるように、共有介入応答を返すステップと、
存在しないとの判定に応答して、前記応答収集配布ユニットにより、前記全てのプロセッサ及び前記主記憶ユニットに、前記主記憶ユニットが前記要求元のプロセッサに前記システムレベルのスイッチを介して前記データを供給できるように、共有応答を返すステップと
を含む方法。
【請求項２】
いずれかのプロセッサにおいて前記データが変更されたとの判定に応答して、前記応答収集配布ユニットにより、前記全てのプロセッサ及び前記主記憶ユニットに、前記データを変更したプロセッサが直接又は間接に前記要求元のプロセッサに前記データを供給できるように、前記データは変更済みであることを示す応答を返すステップを更に含む、請求項１に記載の方法。
【請求項３】
要求される前記データを有し、かつ前記要求元のプロセッサと同一のノード上にあるプロセッサが複数存在する場合、前記応答収集配布ユニットにより、データを転送するためのプロセッサとして最も以前に選択されたプロセッサを、前記要求元のプロセッサに前記データを供給するプロセッサとして選択するステップを更に含む、請求項１に記載の方法。
【請求項４】
要求される前記データを有し、かつ前記要求元のプロセッサと同一のノード上にあるプロセッサが複数存在する場合、前記応答収集配布ユニットにより、データを転送するためのプロセッサとして最も高い優先順位を割り当てられているプロセッサを、前記要求元のプロセッサに前記データを供給するプロセッサとして選択するステップを更に含む、請求項１に記載の方法。
【請求項５】
コンピュータ・システムであって、
それぞれが複数のプロセッサを有する複数のノードと、
主記憶ユニットと、
全ての前記プロセッサを前記主記憶ユニットに接続するトランザクション要求用のバスと、
同一のノード上にある複数のプロセッサの各々をそれぞれ接続する、ノード毎に設けられた複数のノードレベルのスイッチと、
前記複数のノードの各々を互いにかつ前記主記憶ユニットに接続するシステムレベルのスイッチと、
前記トランザクション要求用のバス上の前記全てのプロセッサ及び前記主記憶ユニットからの各応答を収集し、該各応答を評価し、前記全てのプロセッサ及び前記主記憶ユニットに応答を返す、応答収集配布ユニットとを含み、
前記応答収集配布ユニットは、前記トランザクション要求用のバス上でトランザクションが開始されたことに応答して、データを要求した要求元のプロセッサを記録し、前記要求元のプロセッサを除く全てのプロセッサ及び前記主記憶ユニットからの、前記トランザクション要求用のバス上に同報通信された前記データの要求に対する応答を収集して評価し、要求された前記データがいずれのプロセッサにおいても変更されておらず、かつ、前記要求元のプロセッサと同一のノード上に前記データを有するプロセッサが存在する場合は、該プロセッサに、該プロセッサが前記要求元のプロセッサに対応する前記ノードレベルのスイッチを介して前記データを供給できるように、共有介入応答を返し、要求された前記データがいずれのプロセッサにおいても変更されておらず、かつ、前記要求元のプロセッサと同一のノード上に前記データを有するプロセッサが存在しない場合は、前記全てのプロセッサ及び前記主記憶ユニットに、前記主記憶ユニットが前記要求元のプロセッサに前記システムレベルのスイッチを介して前記データを供給できるように、共有応答を返す、
コンピュータ・システム。
【請求項６】
いずれかのプロセッサにおいて前記データが変更されている場合、前記応答収集配布ユニットは、前記全てのプロセッサ及び前記主記憶ユニットに、前記データを変更したプロセッサが直接又は間接に前記要求元のプロセッサに前記データを供給できるように、前記データは変更済みであることを示す応答を返す、請求項５に記載のコンピュータ・システム。
【請求項７】
要求される前記データを有し、かつ前記要求元のプロセッサと同一のノード上にあるプロセッサが複数存在する場合、前記応答収集配布ユニットは、データを転送するためのプロセッサとして最も以前に選択されたプロセッサを、前記要求元のプロセッサに前記データを供給するプロセッサとして選択する、請求項５に記載のコンピュータ・システム。
【請求項８】
要求される前記データを有し、かつ前記要求元のプロセッサと同一のノード上にあるプロセッサが複数存在する場合、前記応答収集配布ユニットは、データを転送するためのプロセッサとして最も高い優先順位を割り当てられているプロセッサを、前記要求元のプロセッサに前記データを供給するプロセッサとして選択する、請求項５に記載のコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、全般的にはコンピュータ・ソフトウェアに関し、具体的には、性能が最大になる、複数プロセッサ・データ処理システム内のプロセッサ間でデータを転送する方法に関する。
【０００２】
【従来の技術】
ローカル・キャッシュを有するマルチプロセッサ・システムでは、バス・デバイスがデータを要求した時に、３つの状態のうちの１つがありえる。第１の状態は、要求されたデータが、他のバス・デバイスのローカル・キャッシュにまだ存在しない状態である。この状況では、データを主記憶によって供給しなければならない。第２の状態は、要求されたデータが、別のバス・デバイスのローカル・キャッシュ内に存在し、そのバス・デバイスが主記憶から取り出した後にデータを変更している状態である。この状況では、要求元のデバイスが、データの変更されたコピーを有するデバイスからデータを取り出さなければならない。これは、２つのバス・デバイス間のキャッシュ対キャッシュ転送を介して直接に、または、間接的な形すなわち、他方のバス・デバイスに主記憶内のデータを更新させ、その後、新しい要求元のバス・デバイスが更新されたデータを主記憶から取り出せるようにすることのいずれかによって行うことができる。第３の状態は、要求されたデータが、他のバス・デバイスのローカル・キャッシュ内に存在するが、そのバス・デバイスがまだそのデータを更新していない状態である。
【０００３】
第３の場合に、一部のバス・プロトコルでは、他のバス・デバイスのうちの１つが、メモリ・アクセス要求に介入し、新しい要求元にキャッシュ対キャッシュ転送を介して直接にデータを供給することができる。そのような「共用介入」転送は、通常は、主記憶アクセスより短い時間で達成でき、かなりの性能改善を実現することができる。
【０００４】
さらに、一部のマルチプロセッサ・システムでは、プロセッサが、複数のマルチプロセッサ・ノードにグループ化される（すなわち、２レベルのクラスタ化）。同一ノード上のプロセッサ間のデータ転送は、メモリからプロセッサへのデータ転送よりはるかに短い要求−データ待ち時間で達成でき、メモリからプロセッサへのデータ転送は、異なるノード上のプロセッサ間の転送より短い待ち時間を有する。その結果、選択的な形の共用介入を実施することが望ましかった。要求されたデータの共用コピーを有するプロセッサが、要求元のプロセッサと同一のノード上にある場合には、共用介入の進行が許可される。そうでない場合には、共用介入がブロックされ、その要求は、主記憶ユニットによって処理される。この機構を用いると、システムは、データ要求をサービスする、より高速で効率的な方法を使用することができるようになる。
【０００５】
【発明が解決しようとする課題】
しかし、共用応答システムを実施する現在の方法では、要求されたデータを要求元のプロセッサに送るのに使用するプロセッサの選択が、どのプロセッサが要求されたデータを所有するかに関して、すべてのプロセッサから受け取られた応答の優先順位だけに基づく。この結果、時には、共有介入がリモート・ノード上のプロセッサに対して認められ、その結果、読取−データ有効待ち時間が最長になり、システム・データ・バスおよびバッファの利用度が高くなる。したがって、共用介入がリモート・ノード上のプロセッサに対して認められる時の総合的な効果は、総合的なシステム帯域幅の低下になる。したがって、効率を改善された、マルチプロセッサ・データ処理システムのプロセッサ間でデータを転送する方法およびシステムを有することが望ましい。
【０００６】
【課題を解決するための手段】
本発明は、複数プロセッサ・データ処理システム内のプロセッサ間でデータを転送する方法を提供する。好ましい実施形態では、データの要求が、要求元プロセッサから、トランザクション応答収集配布論理ユニットで受け取られる。要求元プロセッサからのデータの要求は、データ処理システムのすべてのプロセッサに同報通信される。トランザクション応答収集配布論理ユニットは、複数のプロセッサのそれぞれから個々の応答を受け取り、この個々の応答によって、個々のプロセッサに関連するキャッシュ内の要求されたデータの状態が指定される。トランザクション応答収集配布論理ユニットは、受け取った応答のすべてを評価し、各プロセッサに適当な最終応答状態を供給する。この最終応答状態によって、どのプロセッサおよび関連するメモリ・キャッシュが要求されたデータを要求元プロセッサに送るか、または、要求されたデータがシステムの主記憶から供給されるかが決定される。
【０００７】
【発明の実施の形態】
本発明の特性を示すと考えられる新規の特徴を、特許請求の範囲に示す。しかし、本発明自体ならびに本発明の使用の好ましい態様、さらなる目的および長所は、添付図面と共に以下の例示的実施形態の詳細な説明を参照することによって最もよく理解されるであろう。
【０００８】
本発明は、プロセッサ間でデータを転送する方法を提供し、それぞれが複数のプロセッサを有する複数のノードを含む単一のデータ処理システム内で実施することができる。その代わりに、本発明を、それぞれが複数のプロセッサを含む複数のデータ処理システムにまたがって実施することもできる。
【０００９】
ここで図面、具体的には図１を参照すると、本発明を実施することができる複数のデータ処理システムの完全なシステムレベルの配置が示されている。システム１００は、複数の処理ノード（データ処理システム）１０２および１０４（個々のＳＭＰサーバとすることができる）および主記憶ユニット１７０からなり、これらのすべてが、システムレベル相互接続ネットワーク（システム・スイッチとも称する）１７２によって相互接続される。
【００１０】
処理ノード１０２には、計算プロセッサ１０６および１０８と、入出力インターフェース・プロセッサ１１８および１２０が含まれる。計算プロセッサ１０６および１０８（たとえばＩＢＭ  Ｐｏｗｅｒ３プロセッサ）には、通常は、内部計算ユニットによる使用のために命令およびデータ情報を記憶する１つまたは複数のレベルの内蔵キャッシュまたは付加キャッシュ１１０および１１２が含まれる。入出力インターフェース・プロセッサ１１８および１２０は、ディスク駆動装置アダプタ１２２および端末インターフェース１２６などのさまざまな周辺装置に接続するのに使用される。入出力インターフェース・プロセッサ１１８および１２０には、内蔵キャッシュを含めても含めなくてもよい。端末インターフェース１２６は、処理ノード１０２をモニタ１２８およびキーボード１３０に接続し、このモニタ１２８およびキーボード１３０は、処理ノード１０２にユーザ・インターフェースを提供する。
【００１１】
処理ノード１０２の計算プロセッサ１０６および１０８と入出力インターフェース・プロセッサ１１８および１２０は、ローカル相互接続１１４およびシステム−バス・ブリッジ・ユニット１１６を介して、お互いおよびシステム１００の残りに接続される。ローカル相互接続１１４は、ポイントツーポイント・クロスバー・ネットワークまたは共通共用バスとすることができる。システム−バス・ブリッジ・ユニット１１６は、ローカル相互接続１１４をシステムレベル相互接続ネットワーク１７２に接続する。
【００１２】
処理ノード１０４には、計算プロセッサ１４０および１４２と、入出力インターフェース・プロセッサ１５２および１５４の組合せが含まれる。計算プロセッサ１４０および１４２（たとえばＩＢＭ  Ｐｏｗｅｒ３プロセッサ）には、通常は、その内部計算ユニットによる使用のために命令およびデータ情報を記憶する１つまたは複数のレベルの内蔵キャッシュまたは付加キャッシュ１４４および１４６が含まれる。入出力インターフェース・プロセッサ１５２および１５４は、ディスク駆動装置アダプタ１５６およびネットワーク・アダプタ（ＬＡＮ／ＷＡＮ／ファイバ・チャネル／モデム）１５８などのさまざまな周辺装置への接続に使用される。入出力インターフェース・プロセッサ１５２および１５４には、内蔵キャッシュを含めても含めなくてもよい。ネットワーク・アダプタ１５８は、通信経路１６８に処理ノード１０４を接続し、通信経路１６８は、ＬＡＮ接続、ＷＡＮ接続、またはファイバ・チャネル接続とすることができる。通信経路１６８は、処理ノード１０４と、ネットワーク端末１６２、サーバ１６４、およびデータ処理システム１６６との間のインターフェースを提供する。
【００１３】
処理ノード１０４の計算プロセッサ１４０および１４２と入出力インターフェース・プロセッサ１５２および１５４は、ローカル相互接続１４８およびシステム−バス・ブリッジ・ユニット１５０を介してお互いおよびシステム１００の残りに接続される。ローカル相互接続１４８は、ポイントツーポイント・クロスバ・ネットワークまたは共通共用バスとすることができる。システム−バス・ブリッジ・ユニット１５０は、ローカル相互接続１４８をシステムレベル相互接続ネットワーク１７２に接続する。
【００１４】
システムレベル相互接続ネットワーク１７２は、ポイントツーポイント・クロスバ・ネットワーク、共通共用バス、またはシリアル通信ネットワークからなるものとすることができる。後者は、本発明の分散実施形態の場合に使用される。
【００１５】
主記憶ユニット１７０には、システム１００内の共用データ記憶域のすべてが含まれる。この記憶域は、通常は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）の形である。
【００１６】
単一データ処理システム実施形態（本発明による単一のマルチプロセッサ・データ処理システムの例は、下で説明し、図２に示す）では、最大の性能が達成されるのは、ローカル相互接続およびシステム相互接続が、高速並列インターフェースであり、ローカル−システム相互接続およびシステムレベル相互接続が、ポイントツーポイント・クロスバ・ネットワークである時である。
【００１７】
図１に示された分散データ処理実施形態では、処理ノード１０２および１０４を、高速ＬＡＮによるシステムレベル相互接続ネットワーク１７２を介してお互いおよび主記憶ユニット１７０に接続された個々の対称型マルチプロセッサ・サーバとすることができる。システムレベル相互接続ネットワーク１７２は、全ノードおよびメモリの間の環状のデイジーチェーン式とするか、システム・メモリ・ユニットへのポイントツーポイントＬＡＮ接続のいずれかとすることができ、後者には、どのノードでも他のノードと通信できるようにするために複数のＬＡＮインターフェースおよび対応する相互接続論理が含まれるはずである。
【００１８】
ここで図２を参照すると、通常のマルチプロセッサ式のコンピュータ・システム２１０の基本構造が示されている。コンピュータ・システム２１０は、複数の処理ユニット２１２ａ、２１２ｂ、および２１２ｃを有し、これらの処理ユニットは、さまざまな周辺装置に接続され、この周辺装置には、モニタ・アダプタ２０２および表示モニタ２０５と、キーボード・アダプタ２０４およびキーボード２０７と、ディスク・アダプタ２０３および永久記憶装置２０６とからのデータを受け入れ、これらにデータを供給する入出力エージェント２１４、プログラム命令を実行するために処理ユニットによって使用されるメモリ２１６（ダイナミック・ランダム・アクセス・メモリすなわちＤＲＡＭなど）、ならびに、コンピュータが初めて電源を投入された時に必ず周辺機器のうちの１つ（通常は永久記憶装置）からオペレーティング・システムを見つけ出し、ロードすることを主目的とするファームウェア２１８が含まれる。処理ユニット２１２ａ、２１２ｂ、および２１２ｃは、バス２２０を含むさまざまな手段によって周辺装置と通信する。コンピュータ・システム２１０は、モデムまたはプリンタなどの周辺装置への接続のためのシリアル・ポートおよびパラレル・ポートなど、図示されていない多数の追加の構成要素を有することができる。図２のブロック図に示された構成要素と共に使用することのできる他の構成要素があることを、当業者は諒解するであろう。たとえば、表示装置アダプタを使用して、ビデオ表示モニタを制御することができ、メモリ・コントローラを使用して、メモリ２１６にアクセスすることができる、などである。さらに、コンピュータ・システム２１０は、これより多数または少数のプロセッサを用いて構成することができる。本発明の他の実施形態は、メインフレーム、サーバ、ワークステーション、ネットワーク・コンピュータ、インターネット機器、パーム・コンピュータなど、他の種類のデータ処理システムで実施することができる。
【００１９】
対称型マルチプロセッサ（ＳＭＰ）コンピュータでは、処理ユニット２１２ａ、２１２ｂ、および２１２ｃのすべてが、一般に同一である。すなわち、これらの処理ユニットのすべてが、命令およびプロトコルの共通のセットまたはサブセットを使用して動作し、全般的に同一のアーキテクチャを有する。
【００２０】
ここで図３を参照すると、典型的な編成が示されている。処理ユニット３１２には、コンピュータを動作させるためにプログラム命令を実行する、複数のレジスタおよび実行ユニットを有するプロセッサ３２２が含まれる。プロセッサは、命令キャッシュ３２４およびデータ・キャッシュ３２６などのキャッシュを有することもできる。これらのキャッシュは、プロセッサのレジスタおよび実行ユニットと共に統合してパッケージ化される時には、「オンボード」と呼ばれる。キャッシュは、一般に、図２に示されたメモリ２１６などのメモリから値をロードするという長いステップを回避することによって処理を高速化するために、プロセッサによって繰り返してアクセスされる可能性がある値を一時的に記憶するのに使用される。
【００２１】
処理ユニット３１２に、キャッシュ３２８などの追加のキャッシュを含めることができる。キャッシュ３２８は、オンボード（レベル１）のキャッシュ３２４および３２６をサポートするので、レベル２（Ｌ２）キャッシュと呼ばれる。言い換えると、キャッシュ３２８は、メモリ２１６とオンボード・キャッシュの間の中間物として働き、オンボード・キャッシュよりはるかに大量の情報（命令およびデータ）を記憶することができるが、アクセス・ペナルティはオンボード・キャッシュより長い。たとえば、キャッシュ３２８は、２５６キロバイトまたは５１２キロバイトの記憶容量を有するチップとすることができ、処理ユニット３１２は、総記憶容量９６キロバイトのオンボード・キャッシュを有するＩＢＭ  ＰｏｗｅｒＰＣ  Ｐｏｗｅｒ３シリーズ・プロセッサとすることができる。キャッシュ３２８は、バス３２０に接続され、メモリ２１６から処理ユニット３１２への情報のロードのすべてが、キャッシュ３２８を介して行われなければならない。図３には、２レベルだけのキャッシュ階層が示されているが、直列に接続された多数のレベルのキャッシュがあるマルチレベル・キャッシュ階層を設けることができる。
【００２２】
ここで図４を参照すると、キャッシュ間接続（４４０ｘ、４４１ｘ、４４２ｘ）を介してＬ２キャッシュ（４４０ｃ、４４１ｃ、４４２ｃ）に接続されたＬ１キャッシュ（４４０ｂ、４４１ｂ、４４２ｂ）をそれぞれが有するプロセッサ（４４０ａ、４４１ａ、４４２ａ）からなる３つの処理ユニット（４４０、４４１、４４２）を有するコンピュータ・システムが示されている。Ｌ２キャッシュ（４４０ｃ、４４１ｃ、４４２ｃ）は、キャッシュ間接続（４４０ｙ、４４１ｙ、４４２ｙ）を介してＬ３キャッシュ（４４０ｄ、４４１ｄ、４４２ｄ）に接続される。各プロセッサ内または各プロセッサに付加されたキャッシュのそれぞれは、メモリ・サブシステム４４４からの命令およびデータのコピーをローカルに記憶し、その結果、そのような情報をプロセッサがすばやくアクセスできるようにするのに使用される。さらに、プロセッサ内またはプロセッサに付加されたキャッシュの合計の容量を、図４に示されるように複数のレベルのキャッシュに分割することができる。各キャッシュ・レベルは、プロセッサから離れるたびに、通常はより長いアクセス遅延（すなわち低速）と引き換えにより大きい容量という特性を有する。
【００２３】
プロセッサは、汎用相互接続４４３を介して通信する。プロセッサは、この相互接続を介してメッセージを渡して、メモリ位置の読取または書込を所望することを示す。メモリ・トランザクションが、相互接続上に提出された時に、他のプロセッサのすべてが、このトランザクションを受け取り、記録し、そのキャッシュの状態が、要求されたトランザクションの進行を許容することができるかどうかを判定し、そうである場合には、どの条件の下でそれを行えるかを判定する。この通信が必要になるのは、キャッシュを有するシステムで、所与のメモリのブロックの最新の有効なコピーが、メモリ・サブシステム４４４からシステム内の１つまたは複数のキャッシュに移動されている（すなわち変更済み状態）可能性があるからである。プロセッサが、ブロックの読取または書込を望む時には、そのプロセッサは、キャッシュ・コヒーレンシを維持するために、その望みをシステム内の他の処理ユニットに通信しなければならない。これを達成するために、キャッシュコヒーレンス・プロトコルによって、キャッシュ階層内の各レベルの各ブロックに、そのブロックの現在の「状態」を示す状況インジケータを関連付ける。状態情報は、汎用相互接続４４３とキャッシュ間接続４４０ｘ、４４０ｙ、４４１ｘ、４４１ｙ、４４２ｘおよび４４２ｙでのトランザクション・トラフィックを減らす、コヒーレンシ・プロトコルでの最適化を可能にするのに使用される。この機構の１例として、処理ユニットは、読取トランザクションを実行する時に、その読取トランザクションを後で再試行しなければならないか否かを示すメッセージまたは信号を受け取る。読取トランザクションが再試行されない場合には、そのメッセージに、通常は、他の処理ユニットもそのブロックのまだアクティブなコピーを有するかどうかをその処理ユニットが判定できるようにする情報も含まれる（これは、他の最下位レベル・キャッシュに、再試行されない読取トランザクションに関する「共用」、「非共用」、または「変更済み」の表示を与えさせることによって達成される）。
【００２４】
ここで図５に移ると、主記憶システムに接続された複数のプロセッサを示すブロック図が示されている。本発明は、単一のデータ処理システム内と、図１に示された複数のデータ処理システム内の両方で、プロセッサが図５に示された複数のマルチプロセッサ・ノードにグループ化される（すなわちマルチレベル・クラスタリング）システムに適用可能である。この説明全体を通じて、用語「プロセッサ」は、計算プロセッサまたは入出力プロセッサのいずれかを指す。どちらの場合でも、プロセッサは、内蔵キャッシュまたはローカル・キャッシュを組み込んでいると仮定する（必要ではない）。
【００２５】
このシステムは、ｘ個のノードからなり、各ノードには、２ないしｎ個のプロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎが含まれる。所与のノードのプロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎは、ノードレベル・クロスバ・データ・スイッチ５１０、５１２、５１４および５１６を介して、お互いおよびシステムの残りと接続される。１ないしｘ個のプロセッサ・ノードは、システムレベル・クロスバ・データ・スイッチ５０４を介して、お互いおよび主記憶と接続される。
【００２６】
機能的に共通のトランザクション要求バス５０６は、すべてのプロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎを主記憶５０２に接続する。これによって、各プロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎに、他のすべてのプロセッサのデータに関する要求の可視性が与えられて、キャッシュ・コヒーレンシが維持されることが保証される。
【００２７】
応答収集配布ユニット５０８は、システム内のプロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎのそれぞれからおよび主記憶からのキャッシュ・コヒーレンシ応答を収集する。応答収集配布ユニット５０８は、個々の応答を評価して、システムのコヒーレンシを保つためにどの集団応答タイプが必要であるかを判定する。その後、応答収集配布ユニット５０８は、その応答を、プロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎのそれぞれおよび主記憶に送り返す。
【００２８】
同一ノード上のプロセッサ間のデータ転送は、一般に、プロセッサ・キャッシュの比較的高速なアクセス時間と、データが単一のノードレベル・クロスバ・データ・スイッチ５１０だけを通過しなければならないという事実に起因して、最も高速な種類のデータ転送である。この種のデータ転送を、「ローカル」データ転送または「ノード内」（intra-node）データ転送と呼ぶことができる。図６に、ノードレベル・クロスバ・データ・スイッチ５１０でのプロセッサＡ０およびＡｎの間の「ローカル」データ転送６０２の例を示す。
【００２９】
プロセッサと主記憶５０２の間のデータ転送は、システムレベル・クロスバ・データ・スイッチ５０４の追加の遅延および主記憶５０２のより遅いアクセス時間が原因で、一般に、ローカル・プロセッサ対プロセッサ転送より低速である。これらの転送を、「主記憶」転送と称する。主記憶５０２とプロセッサＡ０の間の「主記憶」転送７０２の例を、図７に示す。
【００３０】
図８に示されたプロセッサＡ０とプロセッサＸｎの間のデータ転送８０２などの、異なるノードレベル・クロスバ・データ・スイッチ５１０、５１２、５１４、および５１６上のプロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎの間のデータ転送を、「リモート」転送または「ノード間」（inter-node）転送と呼ぶことができる。
【００３１】
リモート・ノードからのデータ転送は、データが、２つのノードレベル・クロスバ・スイッチ（図８に示された例ではノードレベル・クロスバ・データ・スイッチ５１６および５１０）ならびにシステムレベル・クロスバ・データ・スイッチ５０４を通過しなければならないという事実に起因して、ローカル・プロセッサ対プロセッサ転送より明らかに低速である。
【００３２】
リモート・プロセッサからのデータへのアクセスは、主記憶５０２からのデータに直接にアクセスするより早い場合とそうでない場合がある。クロスバ・スイッチングが効率的であり、主記憶５０２のアクセスがリモート・プロセッサのキャッシュ・アクセスに比較して非常に低速である場合には、リモート・プロセッサ・アクセスが、主記憶５０２よりかなり良い待ち時間を有する可能性がある。したがって、可能な時には必ず主記憶５０２のアクセスの代わりにそのような転送を選択することによって、総合的なシステム性能を改善することができる。
【００３３】
しかし、リモート・プロセッサからのデータへのアクセスが、主記憶５０２から直接データにアクセスするより大幅に高速ではない場合には、主記憶５０２のアクセスを使用することが望ましい。というのは、主記憶５０２のアクセスは、システムレベル・クロスバ・データ・スイッチ５０４とリモート・プロセッサの間のデータ経路資源を束縛せず、別のトランザクションのデータを転送するためにこれらの資源を使用でき、これによって、総合的なシステム帯域幅およびシステム性能が高まるからである。
【００３４】
ローカル・キャッシュを有するマルチプロセッサ・システムでは、バス・デバイスがデータを要求する時に、次の３つの状態のうちの１つが発生する。
（１）要求されたデータが、他のバス・デバイスのローカル・キャッシュにまだ存在しない。この状況では、データは、主記憶によって供給されなければならない。
（２）要求されたデータが、別のバス・デバイスのローカル・キャッシュに存在し、そのバス・デバイスが、主記憶からデータを取り出した後にデータを変更している。この状況では、要求元のデバイスは、変更されたコピーを有するデバイスからデータを得なければならない。これは、２つのバス・デバイス間のキャッシュ対キャッシュ転送（すなわち、６ＸＸ変更済み介入）を介して直接に、または、間接的な形（すなわち、他のデバイスに、主記憶内のデータを更新させ、その後、新しい要求元が主記憶からデータを取り出せるようにする）のいずれかで行われる。
（３）要求されたデータが、他のバス・デバイスのローカル・キャッシュ内に存在するが、そのバス・デバイスがデータを変更していない。
【００３５】
上のケース（３）では、バス・プロトコルによって、他のバス・デバイスの１つが、メモリ・アクセス要求に介入し、キャッシュ対キャッシュ転送を介して新しい要求元に直接データを供給できるようにする。そのような「共用介入」転送は、通常は、主記憶アクセスより短い時間で達成できるので、かなりの性能向上を実現することができる。
【００３６】
次のシステム特性を仮定する。
（１）同一ノード上のプロセッサ間のデータ転送は、プロセッサとメモリの間の転送よりはるかに短い要求−データ待ち時間で達成することができる。
（２）リモート・ノード上のプロセッサからのデータ転送は、主記憶からのアクセスよりかなり速いわけではない。
【００３７】
性能を最適化するためには、選択的な形の共用介入を実施することが望ましい。要求されたデータの共用コピーを有するプロセッサが、要求元プロセッサと同一のノード上にある場合には、共用介入の進行が許可される。そうでない場合には、共用介入がブロックされ、その要求は、主記憶ユニットによって処理される。この機構を用いると、システムは、システム資源（すなわちデータ経路）の使用を最小にすると同時に、データ要求をサービスする、より高速で効率的な方法を使用することができるようになる。
【００３８】
ここで図９に移ると、本発明の選択的共用介入機構を示す流れ図が示されている。この選択的共用介入機構は、応答収集配布ユニット５０８内で実施され、どの応答デバイスが、データを要求したデバイスに最も近い論理的近接を有するかを判定する。データを要求したデバイスに最も近い論理的近接であるデバイスとは、要求元デバイスへの最もすばやいデータの転送をもたらすデバイスである。たとえば、データが変更されている場合、変更されたデータを含むデバイスが、要求元デバイスに最も近い論理的近接である。もう１つの例として、要求元デバイスと同一のノード上の別のデバイスが、そのデータを含み、そのデータがシステム内の他の場所で変更されていない場合には、要求元デバイスと同一のノード上の、そのデータを有するデバイスが、要求元デバイスに最も近い論理的近接である。トランザクション要求バス５０６上でトランザクションが開始される時に（ステップ９０２）、応答収集配布ユニット５０８は、どのプロセッサがその要求を開始したかを記録する（ステップ９０４）。すべてのプロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎと主記憶５０２は、応答収集配布ユニットに、内蔵（または付加された）キャッシュ内での要求されたデータの状態に関する個々の応答を供給する（ステップ９０６）。応答収集配布ユニット５０８とプロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎと主記憶の間のキャッシュ・コヒーレンシ応答信号は、ノード単位を基礎として（on a node-wise basis）論理的にグループ化される。この２つの特性が一緒になって、応答収集配布ユニット５０８が、介入応答の局所性を判定できるようになり、各プロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎと主記憶５０２に、適当な最終応答状態を供給できるようになる（ステップ９０８）。
【００３９】
応答収集配布ユニット５０８は、判断ステップを実行して、プロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎから受け取った応答のいずれかが「変更済み」応答（データが変更されている）を示すかどうかを判定する（ステップ９１０）。応答の１つが、データが変更されていることを示す場合には、すべてのプロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎと主記憶５０２が、「変更済み」の最終応答を受け取る。「変更済み」を応答したデバイスは、直接的（キャッシュ対キャッシュ変更済み介入を介する）または間接的（主記憶５０２への書込とその後の主記憶５０２からの読取を介する）のいずれかで、要求元プロセッサにそのデータを供給する（ステップ９１２）。
【００４０】
「変更済み」応答を受け取らなかった場合には、応答収集配布ユニット５０８は、共用介入応答を受け取ったかどうかに関する判定を行う（ステップ９１４）。１つまたは複数の共用介入応答を受け取った場合には、応答収集論理は、共用介入応答を応答したプロセッサのうちの１つまたは複数が、要求元プロセッサと同一のノードに配置されているかどうかを判定する（ステップ９１６）。
【００４１】
共用介入応答を応答する１つまたは複数のプロセッサが、要求元プロセッサと同一のノードに存在する場合には、単一の共用介入「勝者（winner）」が、そのノードのプロセッサ間の固定優先順位付けまたはラウンドロビン優先順位付けに基づいて選択される。ラウンドロビン優先順位付けによって最も以前に選択されたデバイスが選択される。勝ったプロセッサは、共用介入応答を受け取り、要求されたデータをローカル・キャッシュ対キャッシュ転送を介して供給できるようになる。共用介入応答を応答した他のプロセッサ（同一ノード上または他のノード上のいずれか）には、単純な共用応答が提示され、これによって、それらの介入がブロックされる。他のすべてのバス・デバイスには、共用介入応答が提示される。勝った共用介入プロセッサは、キャッシュ対キャッシュ共用介入を介して、要求元プロセッサに直接データを供給する（ステップ９１８）。
【００４２】
共用介入応答が、要求元プロセッサと異なるノードからのものだけである場合には、すべてのバス・デバイスに共用応答が提示され、これによって、大域的に介入がブロックされ、主記憶５０２がデータを供給するようになる（ステップ９２２）。
【００４３】
「変更済み」応答または共用介入応答が、応答収集配布ユニット５０８によって受け取られない場合には、応答収集配布ユニット５０８は、「共用」応答を受け取ったかどうかを判定する（ステップ９２０）。「共用」応答を受け取った場合には、すべてのプロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎと主記憶５０２が、「共用」の最終応答を受け取る。その後、要求されたデータが、主記憶５０２によって要求元プロセッサに供給される（ステップ９２２）。
【００４４】
「変更済み」応答、共用介入応答、および「共用」応答のいずれもが受け取られていない場合には、すべてのプロセッサＡ０、Ａｎ、Ｂ０、Ｂｎ、Ｃ０、Ｃｎ、Ｘ０、およびＸｎと主記憶５０２が、受け取られた応答の最高の優先順位と等しい最終応答を受け取り、要求されたデータが、主記憶５０２によって要求元プロセッサに供給される（ステップ９２４）。
【００４５】
選択的共用介入機構は、以下の使用可能化特性／機能によって可能になることに留意されたい。
（１）応答収集論理は、各トランザクションのソース・プロセッサを判定できなければならない。
（２）プロセッサと応答収集配布ユニットの間の応答入出力は、プロセッサごとにグループ化されなければならない。実際に、これらの信号は、ポイントツーポイント接続（すなわち、複数のプロセッサの間で共用されない）でなければならない。
（３）従来の応答収集アルゴリズムでは、最終／大域コヒーレンシ応答が、さまざまな応答の相対的な優先順位だけに基づいて選択されるが、これとは異なって、本明細書に記載の機構では、応答するプロセッサの、要求元プロセッサに対する相対的な地理的近接も要因になる。
（４）従来の応答配布方式では、すべてのバス・デバイスに均等に最終／大域応答が同報通信されるが、これとは異なって、本明細書に記載の機構は、各プロセッサに対して独自の応答を供給できなければならない。これは、複数のプロセッサが共用介入を応答する場合を扱うために必要である。この状況では、勝ったプロセッサだけが、共用介入応答を受け取ることを許可されるようにすることができ、残りの共用介入応答は、それらが介入しないようにするために、「共用」応答を得なければならない。
【００４６】
上で述べたように、本発明を、主に単一のデータ処理システム上の複数のプロセッサに関して説明してきたが、当業者によって理解されるように、それぞれが複数のプロセッサを有する複数のノードを各データ処理システムが有する複数のデータ処理システムに本発明を適用することもできることに留意されたい。そのような複数のデータ処理システムは、図１に示されたシステム１００など、ネットワークを介して互いに接続することができる。
【００４７】
完全に機能するデータ処理システムに関して本発明を説明してきたが、本発明の処理を、命令のコンピュータ可読媒体の形およびさまざまな形で配布することができることと、本発明が配布の実行に実際に使用される信号担持媒体の特定の種類に無関係に同等に適用されることを、当業者が諒解するであろうことに留意することが重要である。コンピュータ可読媒体の例には、フロッピ・ディスク、ハード・ディスク装置、ＲＡＭ、およびＣＤ−ＲＯＭなどの記録可能型媒体と、ディジタル通信リンクおよびアナログ通信リンクなどの伝送型媒体が含まれる。
【００４８】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００４９】
（１）コンピュータ・システム内のデバイスの間でデータを転送する方法であって、
要求元デバイスからデータの要求を同報通信するステップと、
前記コンピュータ・システム内の複数のデバイスのそれぞれからの応答を識別するステップであって、識別される応答のそれぞれが、前記デバイスの位置および前記デバイスが前記データを含むかどうかを示す、識別するステップと、
前記複数のデバイスの中の前記データを含む選択されたデバイスから前記要求元デバイスへ前記データを転送するステップであって、前記選択されたデバイスが、前記要求元デバイスに対する最も近い論理的近接を有する、転送するステップと
を含む方法。
（２）前記要求元デバイスが、プロセッサである、上記（１）に記載の方法。
（３）前記複数のデバイスの少なくとも１つが、プロセッサである、上記（１）に記載の方法。
（４）前記複数のデバイスの１つが、主記憶ユニットである、上記（１）に記載の方法。
（５）前記要求元デバイスと同一のノード上のデバイスが前記データを含み、どのデバイスも前記データを変更していない場合に、前記要求元デバイスと同一の前記ノード上の前記デバイスが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１）に記載の方法。
（６）前記データが変更されている場合に、前記データを変更したデバイスが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１）に記載の方法。
（７）前記要求元デバイスと同一のノード上の複数のデバイスが、前記データを有し、前記データが変更されていない場合に、前記複数のデバイスのうちで、データを転送するためのデバイスとして最も以前に選択されたデバイスが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１）に記載の方法。
（８）前記要求元デバイスと同一のノード上の複数のデバイスが、前記データを有し、前記データが変更されていない場合に、前記複数のデバイスのうちで、最も高い優先順位を割り当てられているデバイスが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１）に記載の方法。
（９）前記要求元デバイスと同一のノード上のデバイスが、前記データを有さず、前記データが変更されていない場合に、主記憶ユニットが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１）に記載の方法。
（１０）コンピュータ・システム内のデバイスの間でデータを転送するための、データ処理システム内で使用するためのコンピュータ可読媒体内のコンピュータ・プログラム製品であって、
要求元デバイスからデータの要求を同報通信する第１命令と、
前記コンピュータ・システム内の複数のデバイスのそれぞれからの応答を識別する第２命令であって、識別される応答のそれぞれが、前記デバイスの位置および前記デバイスが前記データを含むかどうかを示す、第２命令と、
前記複数のデバイスの中の前記データを含む選択されたデバイスから前記要求元デバイスへ前記データを転送する第３命令であって、前記選択されたデバイスが、前記要求元デバイスに対する最も近い論理的近接を有する、第３命令と
を含むコンピュータ・プログラム製品。
（１１）前記要求元デバイスが、プロセッサである、上記（１０）に記載のコンピュータ・プログラム製品。
（１２）前記複数のデバイスの少なくとも１つが、プロセッサである、上記（１０）に記載のコンピュータ・プログラム製品。
（１３）前記複数のデバイスの１つが、主記憶ユニットである、上記（１０）に記載のコンピュータ・プログラム製品。
（１４）前記要求元デバイスと同一のノード上のデバイスが、前記データを含み、どのデバイスも前記データを変更していない場合に、前記要求元デバイスと同一の前記ノード上の前記デバイスが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１０）に記載のコンピュータ・プログラム製品。
（１５）前記データが変更されている場合に、前記データを変更したデバイスが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１０）に記載のコンピュータ・プログラム製品。
（１６）前記要求元デバイスと同一のノード上の複数のデバイスが、前記データを有し、前記データが変更されていない場合に、前記複数のデバイスのうちで、データを転送するためのデバイスとして最も以前に選択されたデバイスが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１０）に記載のコンピュータ・プログラム製品。
（１７）前記要求元デバイスと同一のノード上の複数のデバイスが、前記データを有し、前記データが変更されていない場合に、前記複数のデバイスのうちで、最も高い優先順位を割り当てられているデバイスが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１０）に記載のコンピュータ・プログラム製品。
（１８）前記要求元デバイスと同一のノード上のデバイスが、前記データを有さず、前記データが変更されていない場合に、主記憶ユニットが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１０）に記載のコンピュータ・プログラム製品。
（１９）コンピュータ・システム内のデバイスの間でデータを転送するシステムであって、
要求元デバイスからデータの要求を同報通信する手段と、
前記コンピュータ・システム内の複数のデバイスのそれぞれからの応答を識別する手段であって、識別される応答のそれぞれが、前記デバイスの位置および前記デバイスが前記データを含むかどうかを示す、識別する手段と、
前記複数のデバイスの中の前記データを含む選択されたデバイスから前記要求元デバイスへ前記データを転送する手段であって、前記選択されたデバイスが、前記要求元デバイスに対する最も近い論理的近接を有する、転送する手段と
を含むシステム。
（２０）前記要求元デバイスが、プロセッサである、上記（１９）に記載のシステム。
（２１）前記複数のデバイスの少なくとも１つが、プロセッサである、上記（１９）に記載のシステム。
（２２）前記複数のデバイスの１つが、主記憶ユニットである、上記（１９）に記載のシステム。
（２３）前記要求元デバイスと同一のノード上のデバイスが、前記データを含み、どのデバイスも前記データを変更していない場合に、前記要求元デバイスと同一の前記ノード上の前記デバイスが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１９）に記載のシステム。
（２４）前記データが変更されている場合に、前記データを変更したデバイスが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１９）に記載のシステム。
（２５）前記要求元デバイスと同一のノード上の複数のデバイスが、前記データを有し、前記データが変更されていない場合に、前記複数のデバイスのうちで、データを転送するためのデバイスとして最も以前に選択されたデバイスが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１９）に記載のシステム。
（２６）前記要求元デバイスと同一のノード上の複数のデバイスが、前記データを有し、前記データが変更されていない場合に、前記複数のデバイスのうちで、最も高い優先順位を割り当てられているデバイスが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１９）に記載のシステム。
（２７）前記要求元デバイスと同一のノード上のデバイスが、前記データを有さず、前記データが変更されていない場合に、主記憶ユニットが、前記要求元デバイスに対する前記最も近い論理的近接である、上記（１９）に記載のシステム。
（２８）バスと、
前記バスに接続された論理ブロックと、
前記バスに接続された複数のデバイスと
を含み、前記論理ブロックが、前記複数のデバイスの１つである要求元デバイスからデータの要求を受け取り、前記要求元デバイスへのデータの最も速い転送をもたらす、前記要求されたデータを含む送出デバイスを前記複数のデバイスから判定するように構成される
データ処理システム。
（２９）前記複数のデバイスの少なくとも１つが、プロセッサである、上記（２８）に記載のデータ処理システム。
（３０）前記複数のデバイスの少なくとも１つが、主記憶ユニットである、上記（２８）に記載のデータ処理システム。
（３１）複数のノード
をさらに含み、前記複数のデバイスが、デバイスの組に編成され、
デバイスの各組が、複数のデバイスを含み、
デバイスの各組の各デバイスが、前記複数のノードの同一のノードに接続される
上記（２８）に記載のデータ処理システム。
（３２）コンピュータ・システム内のデバイスの間でデータを転送する方法であって、
要求元デバイスからのデータの要求を、前記コンピュータ・システム内の複数のデバイスに同報通信するステップと、
前記同報通信に応答して、前記複数のデバイス内の前記デバイスの位置および前記デバイスが前記データを含むかどうかを示す、前記複数のデバイスのそれぞれからの応答を受け取るステップと、
前記複数のデバイスのうちの選択されたデバイスから前記要求元デバイスに前記要求されたデータを転送するステップであって、前記選択されたデバイスが、前記複数のデバイス内の他のデバイスと比較して、最も速いデータの転送を有する、転送するステップと
を含む方法。
（３３）前記要求元デバイスが、プロセッサである、上記（３２）に記載の方法。
（３４）前記複数のデバイスの少なくとも１つが、プロセッサである、上記（３２）に記載の方法。
（３５）前記複数のデバイスの少なくとも１つが、主記憶ユニットである、上記（３２）に記載の方法。
【図面の簡単な説明】
【図１】本発明を実施することができる複数のデータ処理システムの完全なシステムレベルの配置を示す図である。
【図２】通常のマルチプロセッサ・コンピュータ・システムの基本構造を示す図である。
【図３】プロセッサの典型的な編成を示す図である。
【図４】３つの処理ユニットを有するコンピュータ・システムを示す図である。
【図５】本発明の処理を示す、主記憶システムに接続された複数のプロセッサのブロック図である。
【図６】ノードレベル・クロスバ・データ・スイッチ５１０のプロセッサＡ０およびＡｎの間の「ローカル」データ転送６０２の例を示す図である。
【図７】主記憶５０２とプロセッサＡ０の間の「主記憶」転送７０２の例を示す図である。
【図８】「リモート」データ転送または「ノード間」データ転送の例を示す図である。
【図９】本発明の選択的共用介入機構を示す流れ図である。
【符号の説明】
５０２  主記憶
５０４  システムレベル・クロスバ・データ・スイッチ
５０６  トランザクション要求バス
５０８  応答収集配布ユニット
５１０  ノードレベル・クロスバ・データ・スイッチ
５１２  ノードレベル・クロスバ・データ・スイッチ
５１４  ノードレベル・クロスバ・データ・スイッチ
５１６  ノードレベル・クロスバ・データ・スイッチ
６０２  「ローカル」データ転送
７０２  「主記憶」転送
８０２  データ転送
【図１】
0004169914.tif 000002
【図２】
0004169914.tif 000003
【図３】
0004169914.tif 000004
【図４】
0004169914.tif 000005
【図５】
0004169914.tif 000006
【図６】
0004169914.tif 000007
【図７】
0004169914.tif 000008
【図８】
0004169914.tif 000009
【図９】
0004169914.tif 000010