(57)【要約】【課題】  本発明は、アドレススヌープ方法及びマルチプロセッサシステムに関し、多数のＩ／Ｏブロックをプロセッサブロックから独立させてマルチプロセッサシステムに容易に実装可能とすると共に、マルチプロセッサシステムの性能の上限の低下（レイテンシの増加）を防止可能とすることを目的とする。【解決手段】  複数のプロセッサと複数のメモリからなるプロセッサブロックが複数個アドレス結合装置を介して複数のＩ／Ｏブロックと接続された構成のマルチプロセッサシステムにおけるアドレススヌープ方法において、任意の１つのプロセッサブロックからアクセスリクエストが発生したときに、前記アクセスリクエストに対して応答するか否かを判断するアドレススヌープ処理を、各Ｉ／Ｏブロックに代わって前記アドレス結合装置において行うように構成する。【選択図】  図１
2006244388.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと複数のメモリからなるプロセッサブロックが複数個アドレス結合装置を介して複数のＩ／Ｏブロックと接続された構成のマルチプロセッサシステムにおけるアドレススヌープ方法であって、
任意の１つのプロセッサブロックからアクセスリクエストが発生したときに、該アクセスリクエストに対して応答するか否かを判断するアドレススヌープ処理を、各Ｉ／Ｏブロックに代わって該アドレス結合装置において行うことを特徴とする、アドレススヌープ方法。
【請求項２】
該任意の１つのプロセッサブロック及び任意の１つのＩ／Ｏブロックから該アドレス結合装置に入力されたアドレスのうち１つを選択してスヌープアドレスとして該任意の１つのプロセッサブロックに出力し、
該スヌープアドレスのコマンド種と、該アドレス結合装置内に保持されているアドレス情報から、該アクセスリクエストに対して該任意の１つのＩ／Ｏブロックが応答するべきであるか否かを判定することを特徴とする、請求項１記載のアドレススヌープ方法。
【請求項３】
該任意の１つのＩ／Ｏブロックが応答する必要が無いと、キャッシュステータスとしてノーヒット応答を該任意の１つのプロセッサブロックへ出力し、
該任意の１つのＩ／Ｏブロックが応答する必要があると、キャッシュステータスとしてヒット応答を該任意の１つのプロセッサブロックへ出力することを特徴とする、請求項２記載のアドレススヌープ方法。
【請求項４】
該当Ｉ／Ｏブロックに対してヒット応答をしたキャッシュステータスに対して、他のプロセッサブロックからのアクセス抑止がないか否かを判定し、
該他のＣＰＵブロックからのアクセス抑止がないと、該当Ｉ／Ｏブロック向けのリクエストを生成して該当Ｉ／Ｏブロックに対して出力することを特徴とする、請求項３記載のアドレススヌープ方法。
【請求項５】
生成したリクエストがアドレススヌープ処理に関わるデータを含むコンフィギュレーションアクセスであると該アドレス結合装置内にそのデータを保持、或いは、コピーして保持し、以降のアドレススヌープ処理を保持されたデータによる新しい設定に従って行うことを特徴とする、請求項４記載のアドレススヌープ方法。
【請求項６】
複数のプロセッサと複数のメモリからなるプロセッサブロックが複数個アドレス結合装置を介して複数のＩ／Ｏブロックと接続された構成のマルチプロセッサシステムであって、
任意の１つのプロセッサブロックからアクセスリクエストが発生したときに、該アクセスリクエストに対して応答するか否かを判断するアドレススヌープ処理を、各Ｉ／Ｏブロックに代わって該アドレス結合装置において行うことを特徴とする、マルチプロセッサシステム。
【請求項７】
該アドレス結合装置は、
該任意の１つのプロセッサブロック及び任意の１つのＩ／Ｏブロックから該アドレス結合装置に入力されたアドレスのうち１つを選択してスヌープアドレスとして該任意の１つのプロセッサブロックに出力するキャッシュステータス生成手段と、
該スヌープアドレスのコマンド種と、該アドレス結合装置内に保持されているアドレス情報から、該アクセスリクエストに対して該任意の１つのＩ／Ｏブロックが応答するべきであるか否かを判定する手段とを備えたことを特徴とする、請求項６記載のマルチプロセッサシステム。
【請求項８】
該キャッシュステータス生成手段は、該任意の１つのＩ／Ｏブロックが応答する必要が無いとキャッシュステータスとしてノーヒット応答を該任意の１つのプロセッサブロックへ出力し、該任意の１つのＩ／Ｏブロックが応答する必要があるとキャッシュステータスとしてヒット応答を該任意の１つのプロセッサブロックへ出力することを特徴とする、請求項７記載のマルチプロセッサシステム。
【請求項９】
該キャッシュステータス生成手段は、該当Ｉ／Ｏブロックに対してヒット応答をしたキャッシュステータスに対して他のプロセッサブロックからのアクセス抑止がないか否かを判定し、該他のＣＰＵブロックからのアクセス抑止がないと該当Ｉ／Ｏブロック向けのリクエストを生成して該当Ｉ／Ｏブロックに対して出力することを特徴とする、請求項８記載のマルチプロセッサシステム。
【請求項１０】
該アドレス結合装置は、
アドレススヌープ処理を行うアドレススヌープ回路を該Ｉ／Ｏブロックの数だけ対応させて備え、
各パーティションを、少なくとも１つのプロセッサブロックと、少なくとも１つのＩ／Ｏブロックと、該少なくとも１つのＩ／Ｏに対応する各アドレススヌープ回路とで構成可能としたことを特徴とする、請求項６〜９のいずれか１項記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アドレススヌープ方法及びマルチプロセッサシステムに係り、特に複数のプロセッサブロックと複数の入出力（Ｉ／Ｏ）ブロックとが結合装置を介して接続されたマルチプロセッサシステムにおけるアドレススヌープ処理を行うアドレススヌープ方法と、そのようなアドレススヌープ方法を用いるマルチプロセッサシステムに関する。
【背景技術】
【０００２】
マルチプロセッサシステムは、複数のプロセッサブロックと複数のＩ／Ｏブロックとが結合装置を介して接続された構成を有する。各プロセッサブロックは、複数のプロセッサと複数のメモリとからなる。他方、各Ｉ／Ｏブロックは、ディスク装置等の記憶装置を含む。以下の説明では、便宜上、各プロセッサブロックが、複数のＣＰＵと複数のキャッシュメモリとからなるＣＰＵブロックで構成されているものとする。
【０００３】
従来のマルチプロセッサシステムでは、Ｉ／ＯブロックがＣＰＵブロックと１対１で併設されるか、或いは、Ｉ／Ｏブロックが独立していても少数のＩ／Ｏブロックが複数のＣＰＵブロックから共用される構成になっている。しかし、ＣＰＵブロック数に比例してキャッシュメモリ間のアクセスは増加し、ＣＰＵブロック数を増加させることは必ずしもマルチプロセッサシステムの性能向上には結びつかない。そこで、ＣＰＵブロックをＩ／Ｏブロックを介してインタコネクト（Interconnect）し、マルチプロセッサシステムの性能を増加させる方式が提案されている。
【０００４】
ところが、このような提案方式を採用しても、従来のマルチプロセッサシステムのようにＣＰＵブロック数当たりのＩ／Ｏブロック数が制限されていたり、複数のＣＰＵブロックでＩ／Ｏブロックを共用していると、マルチプロセッサシステムの性能は大幅に制限され、このような提案方式を採用する意味が無くなってしまう。
【０００５】
このため、Ｉ／Ｏブロックを多数実装し、各ＣＰＵブロックで使用可能なＩ／Ｏブロック数を増加させ、ＣＰＵブロックとＩ／Ｏブロックをフレキシブルに組み合わせて使用できる構成が望まれている。
【０００６】
プロセッサユニットが出力するメモリアクセスをインタコネクトネットワークを用いて他のキャッシュが監視する構成のマルチプロセッサシステムは、例えば特許文献１に記載されている。転送先ポートが異なる複数のユニキャストを同時に実行する機構を有するマルチプロセッサシステムは、例えば特許文献２に記載されている。又、ノード間相互結合ネットワークで接続されたマルチプロセッサシステムは、例えば特許文献３に記載されている。
【特許文献１】特開平９−１３８７８２号公報
【特許文献２】特開平９−１３８７８３号公報
【特許文献３】特開２００１−１８４３２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
Ｉ／ＯブロックをＣＰＵブロックから独立させてマルチプロセッサシステムに多数実装すると、各Ｉ／Ｏブロックで個別にアドレスをスヌープする必要が生じる。この場合、アドレス結合装置から各Ｉ／Ｏブロックに対して、アドレススヌープ処理に必要な信号を供給しなければならない。しかし、各Ｉ／Ｏブロックにアドレススヌープ処理に必要な信号を供給するためには、アドレス結合装置のLSI当たりのピン数を増加させたり、複数のLSIに機能を分割する等の実装上の工夫が必要になるので、実装を困難にすると共にコストの増加も招くという問題があった。又、マルチプロセッサシステム（特にアドレス結合装置及びＩ／Ｏブロック）の構成も複雑になるため、配線長の増加及び伝送遅延を招き、マルチプロセッサシステムの性能の上限を低下させる（レイテンシを増加させる）原因になるという問題もあった。
【０００８】
そこで、本発明は、多数のＩ／Ｏブロックをプロセッサブロックから独立させてマルチプロセッサシステムに容易に実装可能とすると共に、マルチプロセッサシステムの性能の上限の低下（レイテンシの増加）を防止可能なアドレススヌープ方法及びマルチプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題は、複数のプロセッサと複数のメモリからなるプロセッサブロックが複数個アドレス結合装置を介して複数のＩ／Ｏブロックと接続された構成のマルチプロセッサシステムにおけるアドレススヌープ方法であって、任意の１つのプロセッサブロックからアクセスリクエストが発生したときに、該アクセスリクエストに対して応答するか否かを判断するアドレススヌープ処理を、各Ｉ／Ｏブロックに代わって該アドレス結合装置において行うことを特徴とするアドレススヌープ方法によって達成できる。
【００１０】
上記の課題は、複数のプロセッサと複数のメモリからなるプロセッサブロックが複数個アドレス結合装置を介して複数のＩ／Ｏブロックと接続された構成のマルチプロセッサシステムであって、任意の１つのプロセッサブロックからアクセスリクエストが発生したときに、該アクセスリクエストに対して応答するか否かを判断するアドレススヌープ処理を、各Ｉ／Ｏブロックに代わって該アドレス結合装置において行うことを特徴とするマルチプロセッサシステムによっても達成できる。
【発明の効果】
【００１１】
本発明によれば、多数のＩ／Ｏブロックをプロセッサブロックから独立させてマルチプロセッサシステムに容易に実装可能であると共に、マルチプロセッサシステムの性能の上限の低下（レイテンシの増加）を防止可能なアドレススヌープ方法及びマルチプロセッサシステムを実現することができる。
【発明を実施するための最良の形態】
【００１２】
一般的なマルチプロセッサシステムのＩ／Ｏブロックには、マルチプロセッサシステム全体でコンシステンシを保つ必要のあるキャッシュメモリが実装されていないのが通常であり、スヌープしたアドレスに対して応答するキャッシュステータスの生成処理は、プロセッサブロックのアクセスに比べて単純である。本発明ではこの点に着目し、アドレス結合装置にＩ／Ｏブロックでキャッシュステータスを生成するのに必要な情報のコピーを保持し、Ｉ／Ｏブロックに対するアドレススヌープ処理をＩ／Ｏブロックに代わってアドレス結合装置で行うように構成する。
【００１３】
Ｉ／Ｏブロックには、そのＩ／Ｏブロックに対するアクセスが確定した場合だけそのアドレス情報を通知することにより、Ｉ／Ｏブロックとアドレス結合装置間の接続端子数を削減することができる。つまり、多数のＩ／Ｏブロックを接続可能なマルチプロセッサシステムを、アドレス結合装置内のLSI当たりのピン数を増加させずに実現することができる。このようにして、アドレス結合装置とＩ／Ｏブロックとの間の接続端子数や配線数及び配線長を減少させることができるので、多数のＩ／Ｏブロックの接続と、高密度な実装及びそれによる伝送遅延削減の両方を実現可能となる。
【００１４】
以下に、本発明になるアドレススヌープ方法及びマルチプロセッサシステムの各実施例を、図面と共に説明する。
【実施例】
【００１５】
図１は、本発明になるマルチプロセッサシステムの一実施例の要部を示すブロック図である。マルチプロセッサの本実施例は、本発明になるアドレススヌープ方法の一実施例を採用する。同図中、マルチプロセッサシステム１は、複数のＣＰＵブロック１１−１〜１１−Lと、データ結合装置１２と、アドレス結合装置１３と、複数のＩ／Ｏブロック１４−１〜１４−Mからなる。ここで、Ｌ，Mは２以上の整数であり、本実施例では説明の便宜上L=M＝８であるものとする。
【００１６】
各ＣＰＵブロック１１−ｉ（ｉ＝１〜Ｌ）は、複数のＣＰＵ１１０−１〜１１０−Ｎ、複数のキャッシュメモリ１１１−１〜１１１−Ｏ等からなる周知の構成を有する。ここで、Ｎ，Ｏは、２以上の整数であり、本実施例では説明の便宜上Ｎ＝２，Ｏ＝４である。尚、キャッシュ制御部等の図示は省略する。
【００１７】
データ結合装置１２は、ＣＰＵブロック１１−１〜１１−ＬとＩ／Ｏブロック１４−１〜１５−Ｍ間のデータのやり取りを制御する周知の構成を有し、デコード部１２１，１２２等からなる。
【００１８】
アドレス結合装置１３は、ＣＰＵブロック１１−１〜１１−ＬとＩ／Ｏブロック１４−１〜１５−Ｍ間のアドレスのやり取りを制御する構成を有し、キュー部１３１、Ｍ個のスヌープ回路１３２−１〜１３２−Ｍ等からなる。アドレス結合装置１３のより詳細な構成については、図３と共に後述する。
【００１９】
各Ｉ／Ｏブロック１４−１〜１４−Ｍは、ディスク装置等の記憶装置等からなる周知の構成を有する。
【００２０】
本実施例では、各Ｉ／Ｏブロック１４−１〜１４−Ｍに対するアドレススヌープ処理は、全てアドレス結合装置１３内で処理される。又、スヌープ回路１３２−１〜１３２−Ｍがアドレス結合装置１３内に設けられているので、各Ｉ／Ｏブロック１４−１〜１４−Ｍ内にスヌープ回路を設ける場合と比較すると、アドレス結合装置１３とＩ／Ｏブロック１４−１〜１４−Ｍとの間は少ない配線数で結合されている。
【００２１】
データ結合装置１２は、アドレス結合装置１３とは並列に接続されている。アドレス結合装置１３により転送先の確定したデータは、データ結合装置１２を介して転送先に送られる。各ＣＰＵブロック１１−１〜１１−Ｌとデータ結合装置１２との間のバス上を流れるデータと、各Ｉ／Ｏブロック１４−１〜１４−Ｍとデータ結合装置１２との間のバス上を流れるデータとは、いずれもヘッダ及びデータ本体からなるデータ構造を有する。ヘッダに書かれた転送先及びデータ長に従って、後続のデータ部に書かれたデータが転送されるようになっている。
【００２２】
上記の如き構成のマルチプロセッサ１では、データ結合装置１２及びアドレス結合装置１３により、ＣＰＵブロックとＩ／Ｏブロック間だけではなく、ＣＰＵブロック間及びＩ／Ｏブロック間も接続される。
【００２３】
図２は、マルチプロセッサシステム１のパーティション構成を説明する図である。同図中、図１と同一部分には同一符号を付し、その説明は省略する。
【００２４】
各ＣＰＵブロック１１−１〜１１−ＬとＩ／Ｏブロック１４−１〜１４−Ｍとは、任意の組み合わせでパーティションを構成可能である。異なるパーティション間でのアクセスは行われない。図２は、パーティションＰ０がＣＰＵブロック１１−１とＩ／Ｏブロック１４−１，１４−２の組み合わせで構成され、パーティションＰ１がＣＰＵブロック１１−２，１１−３とＩ／Ｏブロック１４−３の組み合わせで構成されている場合を示す。尚、パーティションＰ０には、アドレス結合装置１３内の対応する２つのスヌープ回路１３２−１，１３２−２が含まれ、パーティションＰ１には、アドレス結合装置１３内の対応する１つのスヌープ回路１３２−３が含まれる。
【００２５】
スヌープ回路１３２−１〜１３２−Ｍがアドレス結合装置１３内に設けられているので、各Ｉ／Ｏブロック１４−１〜１４−Ｍ内にスヌープ回路を設ける場合と比較すると、アドレス結合装置１３とＩ／Ｏブロック１４−１〜１４−Ｍとの間が少ない配線数で結合されているものの、パーティションを構成するＣＰＵブロックとＩ／Ｏブロックの組み合わせをより大きな自由度で選択することができる。
【００２６】
図３は、アドレススヌープ回路１３２−ｊの要部を含むアドレス結合装置の構成を示すブロック図である。説明の便宜上、図３は、任意のＣＰＵブロック１１−ｊとＩ／Ｏブロック１４−ｊに関わるアドレス結合装置１３の要部を示す。
【００２７】
図３に示すように、アドレス結合装置１３は、スヌープ回路１３２−ｊ、バッファ１３４，１３５、選択回路１３６、キャッシュステータス合成部１３７、コマンドチェック部１３８及び動作オン・オフ部１３９からなる。バッファ１３４，１３５及び選択回路１３６は、図１に示すキュー部１３１を構成する。スヌープ回路１３２−ｊは、アドレスチェック部２０１、キャッシュステータス生成部２０２及びＩ／Ｏブロック向けリクエスト生成部２０３からなる。
【００２８】
本実施例では、例えば１つのＣＰＵブロック１１−ｊとアドレス結合装置１３との間が９５ビット幅の信号線（ＥＣＣを含む）で接続されている。９５ビット幅のうち、アドレス結合装置１３へのアドレスが１６ビット、ＣＰＵブロック１１−ｊへのスヌープアドレスが４８ビット、アドレス結合装置１３へのキャッシュステータスが１３ビット、ＣＰＵブロック１１−ｊへの合成されたキャッシュステータスが１８ビットである。他方、１つのＩ／Ｏブロック１４−ｊとアドレス結合装置１３との間は、２６ビット幅の信号線（ＥＣＣを含む）で接続されている。２６ビット幅のうち、アドレス結合装置１３へのアドレスが１３ビット、Ｉ／Ｏブロック１４−ｊへのリクエストが１３ビットである。
【００２９】
基本的には、スヌープ回路１３２−ｊをＩ／Ｏブロック１４−ｊ内ではなくアドレス結合装置１３に設けた構成となっており、更に、Ｉ／Ｏブロック１４−ｊに対するアクセスが確定したリクエストを通知する機能がスヌープ回路１３２−ｊに追加されている。
【００３０】
ＣＰＵブロック１１−ｊ及びＩ／Ｏブロック１４−ｊから入力されたアドレスは、ブロック毎に一旦対応するバッファ１３４，１３５内のキューに保存される。これらのアドレスは選択回路１３６により順次選択され、スヌープアドレスとして全ＣＰＵブロック１１−１〜１１−Ｌ及びアドレス結合装置１３内に包含された全スヌープ回路１３２−１〜１３２−Ｍにブロードキャストされる。ＣＰＵブロック１１−ｊは、スヌープアドレスからアクセスに必要な情報を得る。
【００３１】
Ｉ／Ｏブロック１４−ｊが処理を行うのに必要な情報は、スヌープアドレスをスヌープ回路１３２−ｊ内に保持しておいて生成する。Ｉ／Ｏブロック１４−ｊ宛てのリクエストは、スヌープアドレス全体ではなく、必要なアドレス情報部分のみを送れば良い。しかし、Ｉ／Ｏブロック１４−ｊで処理が必要なアクセスの割合は全体から見て少ないため、簡単化のためにＩ／Ｏブロック１４−ｊに送信する可能性のある全てのコマンドのデータを一度に包含できるコマンドフォーマットを用いることが望ましい。
【００３２】
Ｉ／Ｏブロック１４−ｊは、数種類のコマンドフォーマットのリクエストを受け取るが、一般的なコマンドは例えば１６０ビットの情報からなる。このような一般的なコマンドを例えば１０サイクルかけてアドレス結合装置１３とＩ／Ｏブロック１４−ｊ間を伝送させる。コマンドがアドレス結合装置１３内のスヌープアドレスバスを流れるときは、例えば１５０ビットのコマンドとなる。
【００３３】
スヌープ回路１３２−ｊの動作開始及び停止の指示は、Ｉ／Ｏブロック１４−ｊから出されるコマンドに従って、コマンドチェック部１３８及び動作オン・オフ部１３９を介して設定される。このコマンドは、スヌープ動作のオン・オフを設定するのみで、バッファ１３５内のアドレスキューには保持されない。コマンドチェック部１３８は、Ｉ／Ｏブロック１４−ｊから出力されるコマンドをチェックすることで、スヌープ回路１３２−ｊの動作開始又は動作停止の指示であるか否かを判定する。動作オン・オフ部１３９は、コマンドチェック部１３８によるコマンドのチェックの結果、動作開始の指示であればスヌープ回路１３２−ｊの動作開始を指示し、動作停止の指示であればスヌープ回路１３２−ｊの動作停止を指示する。
【００３４】
動作開始が指示されたスヌープ回路１３２−ｊ内では、アドレスチェック部２０１がスヌープアドレスをチェックし、キャッシュステータス生成部２０２がＩ／Ｏブロック１４−ｊに割り当てられたアドレス範囲の設定に従って、同じパーティションに属するＣＰＵブロックに対するデータキャッシュの状態、即ち、アクセスがヒット（Hit）したか否かを示すキャッシュステータスを生成する。このＩ／Ｏブロック１４−ｊから見たキャッシュステータスは、キャッシュステータス合成部１３７へ出力される。キャッシュステータス合成部１３７へは、Ｉ／Ｏブロック１４−ｊと同じパーティションに属するＣＰＵブロック（この場合、ＣＰＵブロック１１−ｊ等）からも、ＣＰＵブロックから見たキャッシュステータスが返される。
【００３５】
キャッシュステータス合成部１３７で合成されたキャッシュステータスは、全てのＣＰＵブロック１１−１〜１１−Ｌ及びアドレス結合装置１３内の全てのスヌープ回路１３２−１〜１３２−Ｍに再度ブロードキャストされる。合成されたキャッシュステータスは、各スヌープ回路１３２−１〜１３２−Ｍ内のＩ／Ｏブロック向けリクエスト生成部２０３に入力される。例えばＩ／Ｏブロック１４−ｊで処理を行う必要がある場合は、アドレス結合装置１３内のスヌープ回路１３２−ｊにおいてＩ／Ｏブロック向けリクエスト生成部２０３がそのリクエストを生成し、Ｉ／Ｏブロック１４−ｊに転送する。
【００３６】
この場合、ＣＰＵ１１−ｊからのキャッシュステータスがアドレス結合装置１３に再度入力されるまでは、スヌープアドレスは図３中太い破線で示すようにスヌープ回路１３２−ｊ内に保持されている。具体的には、スヌープアドレスは、アドレスチェック部２０１内のレジスタ、Ｉ／Ｏブロック向けリクエスト生成部２０３内のレジスタ、又はスヌープ回路１３２−ｊ内に別途設けられたレジスタ等に保持される。これは、最終的にスヌープ回路１３２−ｊ内のＩ／Ｏブロック向けリクエスト生成部２０３がＩ／Ｏブロック１４−ｊに対してリクエストを発行するときに、スヌープアドレスの情報が必要になるためである。尚、スヌープアドレスの入力から合成されたキャッシュステータスが入力されるまでの時間が、全ＣＰＵブロック１１−１〜１１−Ｌで固定サイクルになるように設計されている。
【００３７】
データ転送が発生する場合は、データ結合装置１２を介して処理が継続するが、データ転送自体は本発明の要旨と直接関係がないので、周知のデータ転送技術を採用可能であるため、その説明は省略する。
【００３８】
本実施例では、スヌープ回路１３２−ｊからＩ／Ｏブロック１４−ｊに対して発行するリクエストは、アドレスのフォーマットとは若干異なっており、Ｉ／Ｏブロック１１−ｊ等が必要とする情報のみを通知して配線数を削減している。Ｉ／Ｏブロック１４−ｊからアドレス結合装置１３への接続に関しても同様で、Ｉ／Ｏブロック１４−ｊが発行しないコマンドのサポートは不要であるため、フォーマットを最適化して信号数を削減している。
【００３９】
次に、コンフィグレーションアクセスを行う場合のＣＰＵブロックの管理ソフトウェアとアドレス結合装置１３との関係について、図４と共に説明する。図４は、コンフィグレーションアクセスを行う場合のＣＰＵブロックの管理ソフトウェアとアドレス結合装置１３との関係を説明するブロック図である同図中、図３と同一部分には同一符号を付し、その説明は省略する。
【００４０】
通常のデータ転送は、データ結合装置１２を介して行われるが、コンフィギュレーションアクセスを行うためのスヌープアドレスは、その中にデータを包含する形式になっている。
【００４１】
各ＣＰＵブロック１１−１〜１１−Ｌ（各ＣＰＵ１１０−１〜１１０−Ｎ）の管理ソフトウェアは、アドレス結合装置１３の構成を気にする必要は無い。本来、スヌープ回路は、Ｉ／Ｏブロック内に設けられるので、管理ソフトウェアは、各Ｉ／Ｏブロック１４−１〜１４−Ｍに対してアドレス範囲を通知するコンフィギュレーションアクセスを行う。このとき、本実施例では、各スヌープ回路１３２−１〜１３２−Ｍはアドレス結合装置１３内に設けられているので、自回路内でアドレススヌープ処理を行うのに必要なデータが流れると、そのデータを保持、或いは、コピーして保持して、それ以降のアドレス範囲のチェックの際に使用する。保持、或いは、コピーして保持するデータは、アドレスチェック部２０１内のレジスタ、Ｉ／Ｏブロック向けリクエスト生成部２０３内のレジスタ、又はスヌープ回路１３２−ｊ内に別途設けられたレジスタ等に保持される。図４は、Ｉ／Ｏブロック向けリクエスト生成部２０３内にデータのコピーが保持され、アドレスチェック部２０１におけるアドレス範囲のチェックの際にアドレス情報２０４として使用される場合を示す。
【００４２】
尚、Ｉ／Ｏブロック１１−１〜１１−Ｌに対するコンフィギュレーションアクセス自体は実行され、Ｉ／Ｏブロック１４−１〜１４−Ｍはそのコンフィギュレーションアクセスの情報を保持する。
【００４３】
このように、本実施例では、管理ソフトウェアを変更することなく、スヌープ回路がＩ／Ｏブロック内に設けられた構成のマルチプロセッサシステム用の管理ソフトウェアをそのまま使用することができる。
【００４４】
次に、マルチプロセッサシステム１の処理を、図５と共に説明する。図５は、マルチプロセッサシステム１の処理を説明するフローチャートである。尚、図５はある１つのスヌープアドレスに対する処理を表しているが、実際には各処理はパイプラインになっており、複数のスヌープアドレスが１つのスヌープ回路内を流れ行くこともあり得る。
【００４５】
図５中、ステップＳ１〜Ｓ８はスヌープ回路で実行される処理を示し、ステップＳ１１，Ｓ１２はＣＰＵブロック又はＩ／Ｏブロックで実行される処理を示す。
【００４６】
例えば図３に示す場合のように、ＣＰＵブロック１１−ｊ及びＩ／Ｏブロック１４−ｊからアドレス結合装置１３に入力されたアドレスのうち１つが選択されると、スヌープアドレスとしてＣＰＵブロック１１−ｊに出力されると共に、スヌープ回路１３２−ｊに入力される。ステップＳ１は、このスヌープアドレスを入力する。ステップＳ２は、入力されたスヌープアドレスのコマンド種と、スヌープ回路１３２−ｊ内に保持されているアドレス情報から、そのアクセスに対してＩ／Ｏブロック１４−ｊが応答するべきであるか否か、即ち、アクセスがヒット（Hit）したか否かを判定する。Ｉ／Ｏブロック１４−ｊが応答する必要が無く、ステップＳ２の判定結果がＮＯであると、ステップＳ３はキャッシュステータスとしてノーヒット（No Hit）応答をキャッシュステータス合成部１３７を介してＣＰＵブロック１１−ｊへ出力し、処理はステップＳ１へ戻る。
【００４７】
他方、アクセスがヒットしてステップＳ２の判定結果がＹＥＳであると、ステップＳ４はキャッシュステータスとしてヒット（Hit）応答をキャッシュステータス合成部１３７を介してＣＰＵブロック１１−ｊへ出力する。又、ステップＳ５は、該当Ｉ／Ｏブロック１１−ｊに対してヒット応答をしたキャッシュステータスに対して、他のＣＰＵブロックからのアクセス抑止がないか否か、即ち、グローバルヒット（Global Hit）であるか否かを判定する。他のＣＰＵブロックからのアクセス抑止があり（グローバルヒットではなく）ステップＳ５の判定結果がＮＯであると、処理はステップＳ１へ戻る。他のＣＰＵブロックからのアクセス抑止がなく（グローバルヒット）ステップＳ５の判定結果がＹＥＳであると、ステップＳ６は該当Ｉ／Ｏブロック１４−ｊ向けのリクエストを生成して実際にこのＩ／Ｏブロック１４−ｊに対して出力する。
【００４８】
ステップＳ７は、生成したリクエストがアドレススヌープ処理に関わるデータを含むコンフィギュレーションアクセスであるか否かを判定する。ステップＳ７の判定結果がＹＥＳであると、ステップＳ８はスヌープ回路１３２−ｊ内にそのデータを保持、或いは、コピーして保持し、処理はステップＳ１へ戻る。以降のアドレススヌープ処理は、ステップＳ８で保持されたデータによる新しい設定に従って行われる。
【００４９】
ステップＳ７の判定結果がＮＯであると、ステップＳ１１及びＳ１２の処理はアドレス結合装置１３ではなく、ＣＰＵブロック１１−ｊ又はＩ／Ｏブロック１４−ｊが判断して行われる。この判断は、ＣＰＵブロック１１−ｊの場合はキャッシュステータスの受信時、Ｉ／Ｏブロック１４−ｊの場合はリクエスト受信時に行われ、図５に示す処理におけるコンフィギュレーション操作との間で処理順序は関係無い。
【００５０】
ステップＳ１１は、コマンドの内容をデコードし、データ転送が必要であるか否かを判定する。ステップＳ１１の判定結果がＮＯであると、処理はステップＳ１へ戻る。他方、ステップＳ１１の判定結果がＹＥＳであると、ステップＳ１２はデータを持っている側のブロックからデータ結合装置１３に出力操作を行う。つまり、リードコマンドであればデータを読み出される側のブロックがデータを出力し、ライトコマンドであればデータを書き込む側のブロックがデータを出力する。
【００５１】
コマンドの中には、リクエスト（パケット）内にデータを含むものもあり、そのようなコマンドの場合にはデータ結合装置１２を使ったデータ転送は発生しない。コンフィギュレーションアクセスは、この種のコマンドに該当する。
【産業上の利用可能性】
【００５２】
本発明は、多数のＩ／Ｏブロックをプロセッサブロックから独立させてマルチプロセッサシステムに実装する場合に好適である。
【００５３】
尚、本発明は、以下に付記する発明をも包含するものである。
（付記１）  複数のプロセッサと複数のメモリからなるプロセッサブロックが複数個アドレス結合装置を介して複数のＩ／Ｏブロックと接続された構成のマルチプロセッサシステムにおけるアドレススヌープ方法であって、
任意の１つのプロセッサブロックからアクセスリクエストが発生したときに、該アクセスリクエストに対して応答するか否かを判断するアドレススヌープ処理を、各Ｉ／Ｏブロックに代わって該アドレス結合装置において行うことを特徴とする、アドレススヌープ方法。
（付記２）  該任意の１つのプロセッサブロック及び任意の１つのＩ／Ｏブロックから該アドレス結合装置に入力されたアドレスのうち１つを選択してスヌープアドレスとして該任意の１つのプロセッサブロックに出力し、
該スヌープアドレスのコマンド種と、該アドレス結合装置内に保持されているアドレス情報から、該アクセスリクエストに対して該任意の１つのＩ／Ｏブロックが応答するべきであるか否かを判定することを特徴とする、付記１記載のアドレススヌープ方法。
（付記３）  該任意の１つのＩ／Ｏブロックが応答する必要が無いと、キャッシュステータスとしてノーヒット応答を該任意の１つのプロセッサブロックへ出力し、
該任意の１つのＩ／Ｏブロックが応答する必要があると、キャッシュステータスとしてヒット応答を該任意の１つのプロセッサブロックへ出力することを特徴とする、付記２記載のアドレススヌープ方法。
（付記４）  該当Ｉ／Ｏブロックに対してヒット応答をしたキャッシュステータスに対して、他のプロセッサブロックからのアクセス抑止がないか否かを判定し、
該他のＣＰＵブロックからのアクセス抑止がないと、該当Ｉ／Ｏブロック向けのリクエストを生成して該当Ｉ／Ｏブロックに対して出力することを特徴とする、付記３記載のアドレススヌープ方法。
（付記５）  生成したリクエストがアドレススヌープ処理に関わるデータを含むコンフィギュレーションアクセスであると該アドレス結合装置内にそのデータを保持、或いは、コピーして保持し、以降のアドレススヌープ処理を保持されたデータによる新しい設定に従って行うことを特徴とする、付記４記載のアドレススヌープ方法。
（付記６）  該アドレス結合装置内にアドレススヌープ処理を行うアドレススヌープ回路を該Ｉ／Ｏブロックの数だけ対応させて設け、
各パーティションを、少なくとも１つのプロセッサブロックと、少なくとも１つのＩ／Ｏブロックと、該少なくとも１つのＩ／Ｏに対応する各アドレススヌープ回路とで構成可能としたことを特徴とする、付記１〜５のいずれか１項記載のアドレススヌープ方法。
（付記７）  複数のプロセッサと複数のメモリからなるプロセッサブロックが複数個アドレス結合装置を介して複数のＩ／Ｏブロックと接続された構成のマルチプロセッサシステムであって、
任意の１つのプロセッサブロックからアクセスリクエストが発生したときに、該アクセスリクエストに対して応答するか否かを判断するアドレススヌープ処理を、各Ｉ／Ｏブロックに代わって該アドレス結合装置において行うことを特徴とする、マルチプロセッサシステム。
（付記８）  該アドレス結合装置は、
該任意の１つのプロセッサブロック及び任意の１つのＩ／Ｏブロックから該アドレス結合装置に入力されたアドレスのうち１つを選択してスヌープアドレスとして該任意の１つのプロセッサブロックに出力するキャッシュステータス生成手段と、
該スヌープアドレスのコマンド種と、該アドレス結合装置内に保持されているアドレス情報から、該アクセスリクエストに対して該任意の１つのＩ／Ｏブロックが応答するべきであるか否かを判定する手段とを備えたことを特徴とする、付記７記載のマルチプロセッサシステム。
（付記９）  該キャッシュステータス生成手段は、該任意の１つのＩ／Ｏブロックが応答する必要が無いとキャッシュステータスとしてノーヒット応答を該任意の１つのプロセッサブロックへ出力し、該任意の１つのＩ／Ｏブロックが応答する必要があるとキャッシュステータスとしてヒット応答を該任意の１つのプロセッサブロックへ出力することを特徴とする、付記８記載のマルチプロセッサシステム。
（付記１０）  該キャッシュステータス生成手段は、該当Ｉ／Ｏブロックに対してヒット応答をしたキャッシュステータスに対して他のプロセッサブロックからのアクセス抑止がないか否かを判定し、該他のＣＰＵブロックからのアクセス抑止がないと該当Ｉ／Ｏブロック向けのリクエストを生成して該当Ｉ／Ｏブロックに対して出力することを特徴とする、付記９記載のマルチプロセッサシステム。
（付記１１）  該アドレス結合装置は、
生成したリクエストがアドレススヌープ処理に関わるデータを含むコンフィギュレーションアクセスであると該アドレス結合装置内にそのデータを保持、或いは、コピーして保持する手段を備え、
以降のアドレススヌープ処理を保持されたデータによる新しい設定に従って行うことを特徴とする、付記１０記載のマルチプロセッサシステム。
（付記１２）  該アドレス結合装置は、
アドレススヌープ処理を行うアドレススヌープ回路を該Ｉ／Ｏブロックの数だけ対応させて備え、
各パーティションを、少なくとも１つのプロセッサブロックと、少なくとも１つのＩ／Ｏブロックと、該少なくとも１つのＩ／Ｏに対応する各アドレススヌープ回路とで構成可能としたことを特徴とする、付記７〜１１のいずれか１項記載のマルチプロセッサシステム。
【００５４】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、種々の変形及び改良が可能であることは、言うまでもない。
【図面の簡単な説明】
【００５５】
【図１】本発明になるマルチプロセッサシステムの一実施例の要部を示すブロック図である。
【図２】マルチプロセッサシステムのパーティション構成を説明する図である。
【図３】アドレススヌープ回路の要部を含むアドレス結合装置の構成を示すブロック図である。
【図４】コンフィグレーションアクセスを行う場合のＣＰＵブロックの管理ソフトウェアとアドレス結合装置との関係を説明するブロック図である。
【図５】マルチプロセッサシステムの処理を説明するフローチャートである。
【符号の説明】
【００５６】
１      マルチプロセッサシステム
１１−１〜１１−Ｌ      ＣＰＵブロック
１２      データ結合装置
１３      アドレス結合装置
１４−１〜１４−Ｍ      Ｉ／Ｏブロック
１３２−１〜１３２−Ｍ      スヌープ回路
２０１      アドレスチェック部
２０２      キャッシュステータス生成部
２０３      Ｉ／Ｏブロック向けリクエスト生成部
【図１】
2006244388.tif 000003
【図２】
2006244388.tif 000004
【図３】
2006244388.tif 000005
【図４】
2006244388.tif 000006
【図５】
2006244388.tif 000007