(57)【要約】本発明は、複数のシステムコントローラを有し、各システムコントローラは自身が担当するキャッシュ装置に関するスヌープ処理を行うものであるマルチプロセッサシステムにおけるシステムコントローラに関する。システムコントローラは、他のシステムコントローラとの間の通信時間に基づいて、スヌープ処理のためのスヌープパイプラインの段数を調整する。この段数調整により、マルチプロセッサシステムの規模毎のスヌープ結果の通信時間の差を吸収する。また、システムコントローラは、スヌープ処理の際のアドレス競合等によりリトライが確定した場合には、アドレス競合の可能性のある他のアクセスがスヌープパイプライン上で先行していない状態になるまで待ってから、リトライ対象のアクセスをスヌープパイプラインに再投入する。この再投入タイミングにより、複数のシステムコントローラにおいてスヌープ処理のリトライが限りなく繰り返されることを防止する。
2007099614.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムを構成するキャッシュ装置を制御するシステムコントローラにおいて、
前記キャッシュ装置は、プロセッサモジュール毎に設けられ互いに接続され、主記憶装置の一部のデータをキャッシュラインのブロック単位に保持すると共に前記キャッシュラインに保持したデータブロック状態を示す情報を保持するキャッシュメモリと、前記データブロックの状態を、無効状態Ｉ（Invalid）、共有状態Ｓ（Shared）、排他状態Ｅ（Exclusive）、変更状態Ｍ（Modified）、共有変更状態Ｏ（Shared Modified）、書込可能状態Ｗ（Writable Modified）の６状態で表現して前記キャッシュメモリを制御するキャッシュコントローラと、を備え、
前記システムコントローラは、
他のシステムコントローラとの間の通信時間に基づいて、スヌープパイプラインの段数が定められたスヌープ制御部と、
を備えることを特徴とするシステムコントローラ。
【請求項２】
前記スヌープ制御部は、前記定められた段数に応じてリトライ間隔を決定することを特徴とする請求項１に記載のシステムコントローラ。
【請求項３】
前記システムコントローラは、前記キャッシュ装置を複数個備える大規模システムＬＳＩのためのＬＳＩであることを特徴とする請求項１に記載のシステムコントローラ。
【請求項４】
マルチプロセッサシステムを構成するキャッシュ装置を制御するキャッシュ制御方法において、
キャッシュメモリに主記憶の一部のデータをキャッシュラインのブロック単位に保持すると共に前記キャッシュラインに保持したデータブロック状態を示す情報を保持し、
前記データブロックの状態を、無効状態Ｉ（Invalid）、共有状態Ｓ（Shared）、排他状態Ｅ（Exclusive）、変更状態Ｍ（Modified）、共有変更状態Ｏ（Shared Modified）、書込可能状態Ｗ（Writable Modified）の６状態で表現して前記キャッシュメモリを制御し、
他のシステムコントローラとの間の通信時間に基づいて、スヌープパイプラインの段数が定められる、
ことを特徴とするキャッシュ制御方法。
【請求項５】
さらに、前記定められた段数に応じてリトライ間隔を決定することを特徴とする請求項４に記載のキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムを構成するキャッシュ装置を制御するシステムコントローラおよび該キャッシュ装置を制御するキャッシュ制御方法に関し、特に、スヌープ処理が実行された際のアクセス間のアドレス競合時のリトライの頻度を減少させることが可能なシステムコントローラおよびキャッシュ制御方法に関する。
【背景技術】
【０００２】
従来、コンピュータシステムの高速化の要求に伴い、マルチプロセッサシステムにおいては各ＣＰＵにキャッシュ装置を設けている。ＣＰＵ毎に設けたキャッシュ装置上のデータは、キャッシュ装置間に亘ってそのデータの正しさ、即ちデータの共有と一貫性を保つため、キャッシュコヒーレンスプロトコルと呼ばれるキャシュメモリ間のデータの整合性を保つ規則に従って、キャッシュ装置上でブロック毎に管理されている。【０００３】
従来の一般的なキャッシュプロトコルとしては、「Ｍ」「Ｅ」「Ｓ」「Ｉ」の４状態を管理するＭＥＳＩキャッシュプロトコルが知られている。ここで、Ｍは、変更（Modified）状態であり、複数のキャッシュ装置の１つにのみ有効データが保持されており、かつ、データは変更されており、主記憶装置のそれと値が同じであることが保証されない。Ｅは、排他（Exclusive）状態であり、複数のキャッシュ装置の１つにのみ有効データが保持されている。Ｓは、共有（Shared）状態であり、複数のキャッシュ装置上に同じデータが保持されている。そして、Ｉは、無効（Invalid）状態であり、キャッシュ装置上のデータは無効である。【０００４】
このようなＭＥＳＩキャッシュプロトコルを用いたキュッシュ制御において、あるＣＰＵがキャッシュ装置にストアしたデータブロックを、他系のＣＰＵが参照するフェッチ要求を行った場合、主記憶装置へのデータブロックの書込み（以下、ＭＳライトという）を必要とし、その分、アクセスに時間がかかる。【０００５】
そこで、ＭＥＳＩキャッシュプロトコルに、共有変更Ｏ（Shared Modified）状態を加えた５状態を示す構成とすることにより、フェッチ処理の際のＭＳライトを不要にしている。なお、共有変更の符号Ｏは、Ownerを表わす。【０００６】
しかしながら、この５状態をとるキャッシュプロトコルにあっても、自系フェッチ処理に続いて他系ストア処理が行われた場合、共有変更Ｏの状態にある他系に対し無効Ｉに切替えるための状態変更要求が必要であり、この他系への状態変更要求を行っている分、ストア処理に時間がかかり、自系のフェッチ要求で取得したキャッシュ上のデータブロックに自系でストア処理を行う頻度は高いため、装置全体としてりアクセス性能に大きく影響する問題があった。【０００７】
そこで、キャッシュメモリとキャッシュコントローラとを備えるキャッシュ装置において、キャッシュメモリは、主記憶装置の一部のデータをキャッシュラインのブロック単位に保持すると共にキャッシュラインに保持したデータブロック状態を示す情報を保持し、キャッシュコントローラは、データブロックの状態を、例えば無効状態Ｉ、共有状態Ｓ、排他系状態Ｅ、変更状態Ｍ、共有変更状態Ｏに加え、フェッチ要求があった場合に段階的に共有性を持たせるための状態である、書込可能状態Ｗ（Writable Modified）の６状態で表現してキャッシュメモリを制御する技術が開示されている。【０００８】
この技術により、キャッシュ装置上で管理するデータブロックの状態を細分化し、これによって他系への状態変更要求を減らし、結果としてキャッシュ装置へのアクセスを速くすることが可能となっている。【０００９】
図１は、比較的小規模のマルチプロセッサシステム（クロスバスイッチを介さない下位モデル）におけるフェッチ要求のスヌープ処理を示す図であり、図２は、比較的大規模のマルチプロセッサシステム（クロスバスイッチが介在する上位モデル）におけるフェッチ要求のスヌープ処理を示す図である。【００１０】
これら図１及び図２に示したように、プロセッサユニット（ＣＰＵ０）からメモリへアクセスが要求された場合、キャッシュ装置間のコヒーレンシーを保つため、そのメモリへのアクセス要求は、そのアクセスに関係する全てのシステムコントローラ（ＳＣ０、ＳＣ１）にブロードキャストされる。そして、各システムコントローラ（ＳＣ０、ＳＣ１）は、自身が担当するプロセッサユニットのキャッシュ装置の状態、対象データに対する競合、データ転送に使用する資源の検査を行うためのスヌープ処理を同時に実行し、その結果を該当システムコントローラ（ＳＣ０、ＳＣ１）間で通信し合う。【００１１】
図３は、下位モデルにおけるフェッチ要求のスヌープ処理（リトライ有り）を示す図である。
次に、得られた全てのスヌープ結果を総合的に判定し、最終的にそのメモリアクセス処理の動作を決定する。ここで得られた判定結果は、全てのシステムコントローラ（ＳＣ０、ＳＣ１）で同じ結果を同時に得なければならない。スヌープ処理中に何らかの競合や資源の枯渇などを検出した場合には、そのアクセスの処理は中断し、スヌープ処理をリトライすることになる。
【発明の開示】
【００１２】
しかしながら、上述のようなスヌープ制御においては、複数のシステムコントローラ間の距離に応じて通信時間が異なってしまい、マルチプロセッサシステムの規模に応じたスヌープ処理を実行しなければならないという問題点があった。
【００１３】
本発明は、上記事情に鑑みてなされたもので、マルチプロセッサで構成される大規模な情報処理装置において、複数のシステムコントローラ間で行われるスヌープ処理をスヌープパイプラインの段数調整によって、マルチプロセッサシステムの規模毎のスヌープ結果の通信時間の差を吸収し、かつ、スヌープ処理の際のアクセス間のアドレス競合時にはスヌープパイプラインの段数からリトライ間隔を決定し、アドレス競合時のリトライの頻発を防止するのが可能なシステムコントローラおよびキャッシュ制御方法を提供することを目的とする。
【００１４】
本発明は、上記課題を解決するため、下記のような構成を採用した。
すなわち、本発明の一態様によれば、本発明のシステムコントローラは、マルチプロセッサシステムを構成するキャッシュ装置を制御するシステムコントローラであって、前記キャッシュ装置が、プロセッサモジュール毎に設けられ互いに接続され、主記憶装置の一部のデータをキャッシュラインのブロック単位に保持すると共に前記キャッシュラインに保持したデータブロック状態を示す情報を保持するキャッシュメモリと、前記データブロックの状態を、無効状態Ｉ（Invalid）、共有状態Ｓ（Shared）、排他状態Ｅ（Exclusive）、変更状態Ｍ（Modified）、共有変更状態Ｏ（Shared Modified）、書込可能状態Ｗ（Writable Modified）の６状態で表現して前記キャッシュメモリを制御するキャッシュコントローラとを備え、前記システムコントローラが、他のシステムコントローラとの間の通信時間に基づいて、スヌープパイプラインの段数が定められたスヌープ制御部とを備えることを特徴とする。
【００１５】
また、本発明のシステムコントローラは、前記スヌープ制御部が、前記定められた段数に応じてリトライ間隔を決定することが望ましい。
また、本発明のシステムコントローラは、前記キャッシュ装置を複数個備える大規模システムＬＳＩのためのＬＳＩであることが望ましい。
【００１６】
また、本発明の一態様によれば、本発明のキャッシュ制御方法は、マルチプロセッサシステムを構成するキャッシュ装置を制御するキャッシュ制御方法であって、キャッシュメモリに主記憶の一部のデータをキャッシュラインのブロック単位に保持すると共に前記キャッシュラインに保持したデータブロック状態を示す情報を保持し、前記データブロックの状態を、無効状態Ｉ（Invalid）、共有状態Ｓ（Shared）、排他状態Ｅ（Exclusive）、変更状態Ｍ（Modified）、共有変更状態Ｏ（Shared Modified）、書込可能状態Ｗ（Writable Modified）の６状態で表現して前記キャッシュメモリを制御し、他のシステムコントローラとの間の通信時間に基づいて、スヌープパイプラインの段数が定められることが望ましい。
【００１７】
また、本発明のキャッシュ制御方法は、さらに、前記定められた段数に応じてリトライ間隔を決定することが望ましい。
本発明によれば、マルチプロセッサシステムの規模毎のスヌープ結果の通信時間の差を吸収するとともに、アドレス競合時のリトライの頻発を防止することができる。
【図面の簡単な説明】
【００１８】
【図１】下位モデルにおけるフェッチ要求のスヌープ処理（リトライ無し）を示す図である。
【図２】上位モデルにおけるフェッチ要求のスヌープ処理を示す図である。
【図３】下位モデルにおけるフェッチ要求のスヌープ処理（リトライ有り）を示す図である。
【図４】マルチプロセッサシステムの概要を説明するための図である。
【図５】大規模マルチプロセッサシステムの概要を説明するための図である。
【図６】マルチプロセッサシステムのハードウェア構成を示すブロック図である。
【図７】キャッシュ装置の機能を示すブロック図である。
【図８】システムコントローラの機能を示すブロック図である。
【図９】パイプラインのブロック図である。
【図１０】１つのシステムコントローラでスヌープ処理を実行した場合のアドレスの競合を説明するための図である。
【図１１】複数のシステムコントローラで同時にスヌープ処理を実行した場合のアドレスの競合を説明するための図である。
【図１２】リトライ時のパイプラインへのアクセス投入間隔を、スヌープパイプラインの段数以上に制御した場合を説明するための図である。
【発明を実施するための最良の形態】
【００１９】
以下、図面に基づいて本発明を適用した実施の形態を説明する。
図４は、マルチプロセッサシステムの概要を説明するための図である。
図４において、マルチプロセッサシステム１は、複数のシステムボード２−１，２−２を備えている。各システムボード２−１，２−２のそれぞれは、システムコントローラ１３−１または１３−２、複数のプロセッサモジュール１０−１，・・・，１０−ｎ、複数の入出力（ＩＯ）デバイス１１−１，・・・，１１−ｎ、複数のメモリ（ＭＥＭ）１６−１，・・・，１６−ｎを備えている。システムボード２−１，２−２は、互いに通信可能に接続され、プロセッサモジュール１０−１，・・・，１０−ｎまたは入出力デバイス１１−１，・・・，１１−ｎからの命令に従い、メモリ１６−１，・・・，１６−ｎへの読み書きをコントロールする。【００２０】
図５は、大規模マルチプロセッサシステムの概要を説明するための図である。
図５において、マルチプロセッサシステム３は、上記図４のマルチプロセッサシステム１と比較して規模が大きく、より多くのシステムボード２−１，２−２，２−３，２−４，２−５，２−６，２−７，２−８を備えており、さらに、これらのシステムボード２−１，・・・，２−８は、クロスバスイッチ４を介して互いに接続されている。【００２１】
そして、これらのシステムボード２−１，・・・，２−８は、上記図４のマルチプロセッサシステム１が備えるシステムボード２−１と同様、１つのシステムコントローラ１３−１，・・・，１３−５，・・・、複数のプロセッサモジュール１０−１，・・・，１０−ｎ、複数の入出力（ＩＯ）デバイス１１−１，・・・，１１−ｎ、複数のメモリ（ＭＥＭ）１６−１，・・・，１６−ｎを備えている。【００２２】
本発明はこれら図４乃至図５のようなマルチプロセッサシステムに適用することができる。
図６は、マルチプロセッサシステムのハードウェア構成を示すブロック図である。【００２３】
図６において、マルチプロセッサシステム１は、複数のプロセッサモジュール１０−１，１０−２，・・・，１０−ｎを備え、プロセッサモジュール１０−１〜１０−ｎのそれぞれには、ＣＰＵ（プロセッサ）１２−１〜１２−ｎ及びキャッシュ装置１４−１〜１４−ｎが設けられている。そして、各プロセッサモジュール１０−１〜１０−ｎは、キャッシュ装置１４−１〜１４−ｎがシステムバス１５に接続することにより相互に接続されている。【００２４】
キャッシュ装置１４−１〜１４−ｎを接続するシステムバス１５としては、例えばスヌープバスがある。スヌープバスとは、キャッシュ装置１４−１〜１４−ｎの何れかでＣＰＵ１２−１〜１２−ｎからフェッチまたはストアの処理要求があった際に、これらの処理要求に該当するキャッシュラインに保持しているデータブロックの状態をスヌープ制御線の状態信号により直ちに取得できるバスである。【００２５】
図７は、キャッシュ装置の機能を示すブロック図である。
図７において、キャッシュ装置１４−１は、キャッシュコントローラ１８とキャッシュメモリ２０とを備えている。キャッシュメモリ２０は、複数のキャッシュライン２２単位にデータを保持しており、各キャッシュライン２２はタグ２４とデータブロック３０とを含み、タグ２４は状態タグ２６とアドレスタグ２８とを備えている。【００２６】
キャッシュメモリ２０の状態タグ２６には、データブロックの状態を無効状態Ｉ、共有状態Ｓ、排他状態Ｅ、変更状態Ｍ、共有変更状態Ｏおよび書込可能状態Ｗの６状態で表現してキャッシュメモリ２０を管理している。【００２７】
キャッシュコントローラ１８にはキャッシュ制御管理部３２、状態管理部３４、プロセッサインタフェース（ＩＦ）３６、バスインタフェース（ＩＦ）３８が設けられる。また状態管理部３４にはフェッチプロトコル処理部４０とストアプロトコル処理部４２とが設けられる。【００２８】
キャッシュ制御管理部３２は、ＣＰＵ１２−１からフェッチ要求を受けると、キャッシュメモリ２０のタグ２４を参照し、要求アドレスとアドレス値の一致するアドレスタグ２８を持ったキャッシュライン２２を検索する。アドレスの一致するキャッシュライン２２が存在しない場合にはキャッシュミスとなり、主記憶装置もしくは他のキャッシュ装置１４−２〜１４−ｎの何れかからデータブロックを取得してＣＰＵ１２−１に提供する。【００２９】
キャッシュ制御管理部３２は、要求アドレスに一致するアドレスのキャッシュライン２２が存在した場合には、そのキャッシュライン２２の状態タグ２６による無効状態Ｉ、共有状態Ｓ、排他状態Ｅ、変更状態Ｍ、共有変更状態Ｏまたは書込可能状態Ｗの状態に応じた処理を行う。【００３０】
キャッシュ制御管理部３２は、ＣＰＵ１２−１からのストア要求に対し、キャッシュヒットであればキャッシュメモリ２０上の該当するキャッシュライン２２のデータブロックを更新するストア処理を行ない、ミスヒットであればキャッシュメモリ２０上に新たなキャッシュライン２２を確保してデータを書き込むストア処理を行う。このとき他のキャッシュ装置１４−２〜１４−ｎの何れかに該当するデータブロックが存在する場合には、最新のデータブロックを他のキャッシュ装置１４−２〜１４−ｎの何れかから取得した後にデータを書き込むストア処理を行う。【００３１】
状態管理部３４は、上述のようなキャッシュ制御管理部３２によるＣＰＵ１２−１及びシステムバス１５を経由した他のキャッシュ装置１４−２〜１４−ｎの何れかからの処理要求に対し、処理要求を実行した後の該当するキャッシュライン２２上の状態タグ２６の状態遷移制御を行う。【００３２】
状態管理部３４によるキャッシュコヒーレンスのための状態遷移制御として、無効状態Ｉ、共有状態Ｓ、排他状態Ｅ、変更状態Ｍ、共有変更状態Ｏおよび書込可能状態Ｗの６状態のキャッシュプロトコルを適用している。【００３３】
なお、他のキャッシュ装置１４−２〜１４−ｎも上述したキャッシュ装置１４−１と同様の機能を有している。
図８は、システムコントローラの機能を示すブロック図であり、図９は、パイプラインのブロック図である。【００３４】
図８において、システムコントローラ１３−１，１３−２のそれぞれは、メモリアクセス要求受信部５１、ブロードキャスト送受信部５２、アクセスポート部５６、スヌープ制御部５３、ＭＳアクセス発行部５４およびＣＰＵリクエスト発行部５５備えている。【００３５】
メモリアクセス要求受信部５１は、プロセッサモジュール１０−１，・・・，１０−ｎまたは入出力デバイス１１−１，・・・，１１−ｎからの、メモリ１６−１，・・・，１６−２へのアクセス要求を受信する。ブロードキャスト送受信部５２は、システムコントローラ１３−１または１３−２のメモリアクセス要求受信部５１が受信したアクセス要求が、他のシステムコントローラ１３−２または１３−１が備えるメモリ１６−１，・・・，１６−２へのアクセス要求である場合に、該他のシステムコントローラ１３−２または１３−１が備えるブロードキャスト送受信部５２との間でアクセス要求を送受信する。【００３６】
スヌープ制御部５３は、ブロードキャスト送受信部５２を介したプロセッサモジュール１０−１，・・・，１０−ｎまたは入出力デバイス１１−１，・・・，１１−ｎからのアクセス要求に基づいて、メモリ１６−１，・・・，１６−２に格納されている内容を検出するためのスヌープ処理を実行する。また、スヌープ制御部５３は、パイプラインの段数を調整する段数調整回路５３１を備える。近年の情報処理装置では大規模な構成による動作が要求されるため、特にシステムコントローラ１３−１，１３−２は各種構成による環境の差（上位モデルと下位モデル）を吸収できなければならない。スヌープ時のスヌープ結果（ＣＳＴパケット）の通信時間は構成毎に異なるため、この段数調整回路５３１がＣＳＴパケットの通信時間によってスヌープパイプラインの段数を調整する。【００３７】
ＭＳアクセス発行部５４は、スヌープ制御部５３からの指示に基づき、メモリ１６−１，・・・，１６−２へのアクセス命令を発行し、ＣＰＵリクエスト発行部５５は、スヌープ制御部５３からの指示に基づき、プロセッサモジュール１０−１，・・・，１０−ｎへのアクセス命令を発行する。【００３８】
次に、上述のような構成のマルチプロセッサシステムにおいて実行されるキャッシュ制御処理について説明する。
従来、パイプライン上で同一アドレスに対するアクセスが複数存在した場合、後続のアクセスは先行する同一アドレスに対するアクセスの処理のスヌープ結果が確定するまで処理ができなかった。これは、先行するアクセスがキャッシュメモリ上の対象データブロックの登録状態を更新したり、各種アドレスの排他制御のためのロック制御のためである。【００３９】
そこで、スヌープ制御部５３によるスヌープ処理中に、パイプライン上で先行するアクセスの中に同一アドレスに対するアクセスが存在するかのアドレス競合検査を行うようにする。そして、この検査の結果が競合を示す場合、そのアクセスの処理は中断されてスヌープ処理のリトライを行う。なお、ここでのアドレス競合検査の条件は、「（１）対象範囲として、パイプライン上に先行するアクセスで、スヌープ結果が未確定のものであること。」「（２）競合条件として、同一データブロックに対するアクセス、かつ既にリトライとなる要因が検出されていないこと。」である。【００４０】
次に、アドレスが互いに競合する３つのアクセス（Ａ，Ｂ，Ｃ）を例にして、スヌープ処理のリトライの動作を説明する。
図１０は、１つのシステムコントローラでスヌープ処理を実行した場合のアドレスの競合を説明するための図である。【００４１】
まず（ａ）において、アクセスＡが投入されると、先行するアクセスがないのでアドレス競合は起こらない（○）。
次に（ｂ）において、アクセスＢが投入されると、アクセスＢは先行するアクセスＡとアドレス競合する（×）ので、アクセスＢはリトライの対象となる。【００４２】
次に（ｃ）において、アクセスＣが投入されると、アクセスＣは先行するアクセスＡとアドレス競合する（×）ので、アクセスＣはリトライの対象となる。なお、アクセスＢは上記（ｂ）でリトライの対象となっているので、アクセスＣにとっては検査の対象外となる（○）。【００４３】
次に（ｄ）において、上記（ｂ）でリトライの対象となったアクセスＢが再投入（リトライ）されると、この時点では先行するアクセスがないのでアドレス競合は起こらない（○）。【００４４】
次に（ｅ）において、上記（ｃ）でリトライの対象となったアクセスＣが再投入（リトライ）されると、アクセスＣは先行するアクセスＢ（上記（ｄ）で再投入されたアクセスＢ）とアドレス競合する（×）ので、アクセスＣは再度リトライの対象となる。【００４５】
そして（ｆ）において、上記（ｄ）で２度目のリトライの対象となったアクセスＣが再投入（２度目のリトライ）されると、この時点では先行するアクセスがないのでアドレス競合は起こらない（○）。【００４６】
図１１は、複数のシステムコントローラで同時にスヌープ処理を実行した場合のアドレスの競合を説明するための図である。
説明を簡単にするために、複数のシステムコントローラ１３−１（ＳＣ０）および１３−２（ＳＣ１）で同時にスヌープ処理を実行した場合のアドレスの競合を説明する。【００４７】
まず（ａ）において、システムコントローラ１３−１（ＳＣ０）に対してアクセスＡが投入されると、先行するアクセスがないのでアドレス競合は起こらない（○）が、システムコントローラ１３−２（ＳＣ１）に対してアクセスＡが投入されると、他の要因によりアクセスＡのリトライが確定したとする（×）。【００４８】
すると（ｂ）において、システムコントローラ１３−１（ＳＣ０）に対してアクセスＢが投入されると、アクセスＢは先行するアクセスＡとアドレス競合する（×）ので、アクセスＢはリトライの対象となるが、システムコントローラ１３−２（ＳＣ１）に対してアクセスＢが投入されると、アクセスＡは上記（ａ）でリトライの対象となっているので、アクセスＢにとっては検査の対象外となる（○）。【００４９】
次に（ｃ）において、システムコントローラ１３−１（ＳＣ０）に対してアクセスＣが投入されると、アクセスＣは先行するアクセスＡとアドレス競合する（×）ので、アクセスＣはリトライの対象となる。なお、アクセスＢは上記（ｂ）でリトライの対象となっているので、アクセスＣにとっては検査の対象外となる（○）。また、システムコントローラ１３−２（ＳＣ１）に対してアクセスＣが投入されると、アクセスＡは上記（ａ）でリトライの対象となっているので、アクセスＣにとっては検査の対象外となる（○）。なお、アクセスＣは先行するアクセスＢとアドレス競合する（×）ので、アクセスＣはリトライの対象となる。【００５０】
次に（ｄ）において、システムコントローラ１３−１（ＳＣ０）に対して上記（ａ）でリトライの対象となったアクセスＡが再投入されると、アクセスＢは上記（ｂ）でリトライの対象となっているので、再投入されたアクセスＡにとっては検査の対象外となる（○）。なお、再投入されたアクセスＡは先行するアクセスＣとアドレス競合する（×）ので、アクセスＡは再度リトライの対象となる。また、システムコントローラ１３−２（ＳＣ１）に対してアクセスＡが再投入されると、アクセスＡは先行するアクセスＢとアドレス競合する（×）ので、アクセスＡは再度リトライの対象となる。なお、アクセスＣは上記（ｃ）でリトライの対象となっているので、アクセスＡにとっては検査の対象外となる（○）。【００５１】
次に（ｅ）において、システムコントローラ１３−１（ＳＣ０）に対して上記（ｂ）でリトライの対象となったアクセスＢが再投入されると、アクセスＢは先行するアクセスＣとアドレス競合する（×）ので、アクセスＢは再度リトライの対象となる。なお、アクセスＡは上記（ｄ）でリトライの対象となっているので、アクセスＢにとっては検査の対象外となる（○）。また、システムコントローラ１３−２（ＳＣ１）に対してアクセスＢが再投入されると、アクセスＣは上記（ｃ）でリトライの対象となっているので、アクセスＢにとっては検査の対象外となる（○）。なお、アクセスＢは先行するアクセスＡとアドレス競合する（×）ので、アクセスＢは再度リトライの対象となる。【００５２】
次に（ｆ）において、システムコントローラ１３−１（ＳＣ０）に対して上記（ｃ）でリトライの対象となったアクセスＣが再投入されると、アクセスＡは上記（ｄ）でリトライの対象となっているので、再投入されたアクセスＣにとっては検査の対象外となる（○）。なお、再投入されたアクセスＣは先行するアクセスＢとアドレス競合する（×）ので、アクセスＣは再度リトライの対象となる。また、システムコントローラ１３−２（ＳＣ１）に対してアクセスＣが再投入されると、アクセスＣは先行するアクセスＡとアドレス競合する（×）ので、アクセスＣは再度リトライの対象となる。なお、アクセスＢは上記（ｅ）でリトライの対象となっているので、アクセスＣにとっては検査の対象外となる（○）。【００５３】
以降、上記（ｄ）乃至（ｆ）が限りなく繰り返されてしまう可能性がある。
図１２は、リトライ時のパイプラインへのアクセス投入間隔を、スヌープパイプラインの段数以上に制御した場合を説明するための図である。【００５４】
まず（ａ）において、システムコントローラ１３−１（ＳＣ０）に対してアクセスＡが投入されると、先行するアクセスがないのでアドレス競合は起こらない（○）が、システムコントローラ１３−２（ＳＣ１）に対してアクセスＡが投入されると、他の要因によりアクセスＡのリトライが確定したとする（×）。【００５５】
すると（ｂ）において、システムコントローラ１３−１（ＳＣ０）に対してアクセスＢが投入されると、アクセスＢは先行するアクセスＡとアドレス競合する（×）ので、アクセスＢはリトライの対象となるが、システムコントローラ１３−２（ＳＣ１）に対してアクセスＢが投入されると、アクセスＡは上記（ａ）でリトライの対象となっているので、アクセスＢにとっては検査の対象外となる（○）。【００５６】
次に（ｃ）において、システムコントローラ１３−１（ＳＣ０）に対してアクセスＣが投入されると、アクセスＣは先行するアクセスＡとアドレス競合する（×）ので、アクセスＣはリトライの対象となる。なお、アクセスＢは上記（ｂ）でリトライの対象となっているので、アクセスＣにとっては検査の対象外となる（○）。また、システムコントローラ１３−２（ＳＣ１）に対してアクセスＣが投入されると、アクセスＡは上記（ａ）でリトライの対象となっているので、アクセスＣにとっては検査の対象外となる（○）。なお、アクセスＣは先行するアクセスＢとアドレス競合する（×）ので、アクセスＣはリトライの対象となる。【００５７】
このように、スヌープパイプライン上の先行するアクセスとの競合が発生した場合、そのアクセスを即時にリトライさせるのではなく、競合の可能性のある他のアクセスがパイプライン上で先行していない状態、すなわちリトライ時のパイプラインへのアクセス投入間隔を、スヌープパイプラインの段数以上になるように制御する。【００５８】
すると（ｄ１）において、システムコントローラ１３−１（ＳＣ０）に対してアクセスＡが再投入されると、先行するアクセスがないのでアドレス競合は起こらない（○）。また、システムコントローラ１３−２（ＳＣ１）に対してアクセスＡが再投入されても、先行するアクセスがないのでアドレス競合は起こらない（○）。【００５９】
次に（ｄ２）において、システムコントローラ１３−１（ＳＣ０）に対してのアクセス投入が禁止されると、上記（ｄ１）で再投入されたアクセスＡのスヌープ処理が完了する。同様に、システムコントローラ１３−２（ＳＣ１）に対してのアクセス投入が禁止されると、上記（ｄ１）で再投入されたアクセスＡのスヌープ処理が完了する。【００６０】
次に（ｅ１）において、システムコントローラ１３−１（ＳＣ０）に対してアクセスＢが再投入されると、先行するアクセスがないのでアドレス競合は起こらない（○）。また、システムコントローラ１３−２（ＳＣ１）に対してアクセスＢが再投入されても、先行するアクセスがないのでアドレス競合は起こらない（○）。【００６１】
次に（ｅ２）において、システムコントローラ１３−１（ＳＣ０）に対してのアクセス投入が禁止されると、上記（ｅ１）で再投入されたアクセスＢのスヌープ処理が完了する。同様に、システムコントローラ１３−２（ＳＣ１）に対してのアクセス投入が禁止されると、上記（ｅ１）で再投入されたアクセスＢのスヌープ処理が完了する。【００６２】
次に（ｆ１）において、システムコントローラ１３−１（ＳＣ０）に対してアクセスＣが再投入されると、先行するアクセスがないのでアドレス競合は起こらない（○）。また、システムコントローラ１３−２（ＳＣ１）に対してアクセスＣが再投入されても、先行するアクセスがないのでアドレス競合は起こらない（○）。【００６３】
次に（ｆ２）において、システムコントローラ１３−１（ＳＣ０）に対してのアクセス投入が禁止されると、上記（ｆ１）で再投入されたアクセスＣのスヌープ処理が完了する。同様に、システムコントローラ１３−２（ＳＣ１）に対してのアクセス投入が禁止されると、上記（ｆ１）で再投入されたアクセスＣのスヌープ処理が完了する。【００６４】
このように、複数のシステムコントローラ間で行われるスヌープ処理をスヌープパイプラインの段数調整によって、マルチプロセッサシステムの規模毎のスヌープ結果の通信時間の差を吸収し、かつ、スヌープ処理の際のアクセス間のアドレス競合時にはスヌープパイプラインの段数からリトライ間隔を決定し、アドレス競合時のリトライの頻発を防止することができる。【００６５】
以上、本発明の実施の形態を、図面を参照しながら説明してきたが、上述してきた本発明の実施の形態は、システムコントローラの一機能としてハードウェアまたはＤＳＰボードやＣＰＵボードでのファームウェアもしくはソフトウェアにより実現することができる。【００６６】
また、本発明が適用されるシステムコントローラは、その機能が実行されるのであれば、上述の実施の形態に限定されることなく、単体の装置であっても、複数の装置からなるシステムあるいは統合装置であっても、ＬＡＮ、ＷＡＮ等のネットワークを介して処理が行なわれるシステムであってもよいことは言うまでもない。【００６７】
また、バスに接続されたＣＰＵ、ＲＯＭやＲＡＭのメモリ、入力装置、出力装置、外部記録装置、媒体駆動装置、ネットワーク接続装置で構成されるシステムでも実現できる。すなわち、前述してきた実施の形態のシステムを実現するソフトェアのプログラムコードを記録したＲＯＭやＲＡＭのメモリ、外部記録装置、可搬記録媒体を、システムコントローラに供給し、そのシステムコントローラのコンピュータがプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。【００６８】
この場合、可搬記録媒体等から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記録した可搬記録媒体等は本発明を構成することになる。【００６９】
プログラムコードを供給するための可搬記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、磁気テープ、不揮発性のメモリーカード、ＲＯＭカード、電子メールやパソコン通信等のネットワーク接続装置（言い換えれば、通信回線）を介して記録した種々の記録媒体などを用いることができる。【００７０】
また、コンピュータ（情報処理装置）がメモリ上に読み出したプログラムコードを実行することによって、前述した実施の形態の機能が実現される他、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施の形態の機能が実現される。【００７１】
さらに、可搬型記録媒体から読み出されたプログラムコードやプログラム（データ）提供者から提供されたプログラム（データ）が、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施の形態の機能が実現され得る。【００７２】
すなわち、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または形状を取ることができる。
【図１】
2007099614.tif 000003
【図２】
2007099614.tif 000004
【図３】
2007099614.tif 000005
【図４】
2007099614.tif 000006
【図５】
2007099614.tif 000007
【図６】
2007099614.tif 000008
【図７】
2007099614.tif 000009
【図８】
2007099614.tif 000010
【図９】
2007099614.tif 000011
【図１０】
2007099614.tif 000012
【図１１】
2007099614.tif 000013
【図１２】
2007099614.tif 000014
【国際調査報告】
2007099614.tif 000015
2007099614.tif 000016