(57)【特許請求の範囲】
【請求項１】
データを登録するキャッシュメモリをそれぞれ有し、ストア要求を発行する複数の演算処理装置と、
前記複数の演算処理装置から共有される主記憶装置と、
前記複数の演算処理装置と前記主記憶装置に接続され、前記複数の演算処理装置のうち一の演算処理装置からストア要求を受信した場合、前記キャッシュメモリが登録する前記ストア要求の対象データの状態を示す情報が、当該対象データが複数の演算処理装置から共有され且つ更新済みである旨の情報であるならば、前記対象データを登録するキャッシュメモリを有する複数の送信元候補の演算処理装置の中から、前記主記憶装置との物理的な距離が最も近い演算処理装置を選択し、前記対象データと前記選択した演算処理装置のキャッシュメモリから読み出したデータとを結合して前記主記憶装置に格納させるとともに、前記送信元候補の演算処理装置が有するキャッシュメモリが登録する前記対象データの状態を示す情報を無効に変更する制御装置を有することを特徴とする情報処理装置。
【請求項２】
前記制御装置は、前記送信元候補の演算処理装置の中に、前記対象データを格納する前記主記憶装置に直接接続された該制御装置に直接接続された演算処理装置が存在する場合に、当該演算処理装置を、前記主記憶装置との物理的な距離が最も近い演算処理装置として選択することを特徴とする請求項１記載の情報処理装置。
【請求項３】
データを登録するキャッシュメモリをそれぞれ有し、ストア要求を発行する複数の演算処理装置と、前記複数の演算処理装置から共有される主記憶装置に接続される制御装置において、
前記複数の演算処理装置のうちーの演算処理装置からストア要求を受信する受信部と、
前記演算処理装置が有するキャッシュメモリが登録する各データの状態を示す情報を保持する情報保持部と、
前記ストア要求の対象データに関して前記情報保持部が保持する情報が、当該対象データが複数の演算処理装置から共有され且つ更新済みである旨の情報であるとき、前記対象データを登録するキャッシュメモリを有する複数の送信元候補の演算処理装置の中から、前記主記憶装置との物理的な距離が最も近い演算処理装置を選択し、前記対象データと前記選択した演算処理装置のキャッシュメモリから読み出したデータとを結合して前記主記憶装置に格納させるとともに、前記送信元候補の演算処理装置が有するキャッシュメモリが登録する前記対象データの状態を示す前記情報保持部が保持する情報を無効に変更する制御部を有することを特徴とする制御装置。
【請求項４】
前記制御部は、前記送信元候補の演算処理装置の中に、前記対象データを格納する前記主記憶装置に直接接続されるとともに、該制御部を有する制御装置に直接接続された演算処理装置が存在する場合に、当該演算処理装置を、前記主記憶装置との物理的な距離が最も近い演算処理装置として選択することを特徴とする請求項３記載の制御装置。
【請求項５】
データを登録するキャッシュメモリをそれぞれ有し、ストア要求を発行する複数の演算処理装置と、前記複数の演算処理装置から共有される主記憶装置と、前記複数の演算処理装置と前記主記憶装置に接続される制御装置の制御方法において、
前記制御装置が有する受信部が、前記複数の演算処理装置のうち一の演算処理装置からストア要求を受信するステップと、
前記ストア要求の対象データに関して前記制御装置が有する情報保持部が保持する情報が、当該対象データが複数の演算処理装置から共有され且つ更新済みである旨の情報であるとき、前記制御装置が有する制御部が、前記対象データを登録するキャッシュメモリを有する複数の送信元候補の演算処理装置の中から、前記主記憶装置と物理的な距離が最も近い演算処理装置を選択するステップと、
前記制御部が、前記対象データと前記選択した演算処理装置のキャッシュメモリから読み出したデータとを結合して前記主記憶装置に格納させるステップと、
前記制御部が、前記送信元候補の演算処理装置が有するキャッシュメモリが登録する前記対象データの状態を示す前記情報保持部が保持する情報を無効に変更するステップを有することを特徴とする制御方法。
【請求項６】
前記主記憶装置と物理的な距離が最も近い演算処理装置を選択するステップにおいて、前記制御部は、前記送信元候補の演算処理装置の中に、前記対象データを格納する前記主記憶装置に直接接続されるとともに、該制御部を有する制御装置に直接接続された演算処理装置が存在する場合に、当該演算処理装置を、前記主記憶装置との物理的な距離が最も近い演算処理装置として選択することを特徴とする請求項５記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリを有するマルチプロセッサ構成の情報処理装置、その情報処理装置に搭載される制御装置およびその制御方法に関するものであり、特に、キャッシュメモリ間またはキャッシュメモリとメインメモリ間のデータ転送において効率よくバスを使用する情報処理装置、制御装置および制御方法に関するものである。
【背景技術】
【０００２】
キャッシュメモリを有する複数のＣＰＵが搭載される複数のシステムボードを有する情報処理装置において、キャッシュメモリのコヒーレンシを保ちつつ高速にキャッシュメモリ間のデータ転送を実行するための従来技術として、たとえば、特許文献１がある。
【０００３】
特許文献１に記載の従来技術では、要求元デバイス（要求元キャッシュメモリ）が要求するデータとして転送可能なデータを有するデバイス（キャッシュメモリ）が複数存在する場合、論理的に近いキャッシュメモリ（たとえば、同一ノード（システムボード）上のキャッシュメモリや要求されたデータを変更したキャッシュメモリ、最も以前に選択されたキャッシュメモリ）選択し、選択したキャッシュメモリから要求元キャッシュメモリにデータを転送するようにしている。
【０００４】
【特許文献１】特開２００１−１０１１４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ここで、キャッシュメモリを有する複数のＣＰＵ、複数の入出力装置、および複数のメモリデバイス（メインメモリ）と、これらＣＰＵ，入出力装置、およびメインメモリを管理するシステムコントローラを搭載するシステムボードを複数備え、各システムボードをバス接続した構成の情報処理装置に、上記特許文献１に記載のデータ転送方法を適用した場合について考える。
【０００６】
キャッシュメモリがスワップ方式であり、キャッシュメモリ間のコヒーレンシを維持するキャッシュプロトコルとしてＭＯＥＳＩプロトコルを用いた場合に、キャッシュメモリ間のデータ転送については、同一システムボード上のキャッシュメモリに転送可能なデータが存在する場合には同一システムボード上のキャッシュメモリが選択されシステムボードを接続するバスを使用することなくデータ転送を行なうことができる。
【０００７】
しかしながら、上記特許文献１に記載の従来のデータ転送方法では、メモリアクセス要求の種類やキャッシュメモリとメインメモリとの関係について考慮されていないため、ライトバック時のキャッシュメモリからメインメモリへのデータ転送の効率を上げることはできないという問題があった。
【０００８】
本発明は、上述した従来技術による問題点を解消し、上記課題を解決するためになされたものであって、スワップ方式を用いたキャッシュメモリ間、またはキャッシュメモリとメインメモリ間のデータ転送において、データ転送に用いるバスを効率よく使用する情報処理装置、制御装置および制御方法を得ることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、キャッシュメモリを有する少なくとも１つのＣＰＵと、共有メモリを構成する少なくとも１つのメインメモリと、前記ＣＰＵおよびメインメモリを管理するとともにメモリアクセス要求によって前記キャッシュメモリまたはメインメモリのデータ転送を制御するシステムコントローラとを有する複数のシステムボードがバスによって接続される情報処理装置において、前記各システムコントローラは、前記メモリアクセス要求の要求するデータが存在するキャッシュメモリが複数存在する場合、前記メモリアクセス要求の種類、および前記データが存在するキャッシュメモリ毎のデータの状態を示す登録型に基づいて、前記データが存在するキャッシュメモリを有する送信元候補のＣＰＵの中から、前記メモリアクセス要求を発行した要求元のＣＰＵ、または前記メモリアクセス要求の要求するデータをライトバック時にストアするライトバック対象のメインメモリと物理的な距離が最も近い送信元候補のＣＰＵを送信元のＣＰＵとして選択し、選択した送信元のＣＰＵが自身が管理するＣＰＵの場合には前記メモリアクセス要求の要求するデータを転送するとともに、要求元のＣＰＵおよび送信元のＣＰＵと、前記ライトバック対象のメインメモリとの物理的な距離に応じて前記登録型を移動させるスヌープ制御部、を備えることを特徴とする。
【００１０】
また、本発明は、上記発明において、前記メモリアクセス要求がフェッチ要求あって、かつ共有型・更新済みのデータ転送である場合、前記スヌープ制御部は、前記送信元候補のＣＰＵの中で、登録型が「オーナ」であるキャッシュメモリを有するＣＰＵと前記フェッチ要求の要求するデータを格納するメインメモリとの物理的な距離、および前記フェッチ要求を発行した要求元であるＣＰＵと前記ライトバック対象のメインメモリとの物理的な距離を求め、前記要求元のＣＰＵの方が登録型が「オーナ」であるキャッシュメモリを有するＣＰＵよりも前記ライトバック対象のメインメモリとの物理的な距離が近い場合には、前記登録型が「オーナ」であるキャッシュメモリを有するＣＰＵを送信元のＣＰＵとして選択し、選択した送信元のＣＰＵが自身が管理するＣＰＵの場合には前記フェッチ要求の要求するデータを送信元のＣＰＵに転送するとともに、送信元のＣＰＵが有するキャッシュメモリの登録型を「共有」に変更し、要求元のＣＰＵが有するキャッシュメモリの登録型を「オーナ」に変更すること、を特徴とする。
【００１１】
また、本発明は、上記発明において、前記メモリアクセス要求がストア要求であって、かつ共有型・更新済みデータの転送である場合、前記スヌープ制御部は、前記送信元候補のＣＰＵの中で、前記ライトバック対象のメインメモリに物理的な距離が最も近い送信元候補のＣＰＵを送信元のＣＰＵとして選択し、選択した送信元のＣＰＵが自身が管理するＣＰＵである場合には、前記ストア要求が要求するデータと前記送信元のＣＰＵが有するキャッシュメモリから読み出したデータとをマージして前記ライトバック対象のメインメモリに格納させるとともに、前記送信元候補のＣＰＵが有するキャッシュメモリの登録型を「無効」に変更すること、を特徴とする。
【００１２】
また、本発明は、キャッシュメモリを有する少なくとも１つのＣＰＵと、共有メモリを構成する少なくとも１つのメインメモリと、前記ＣＰＵおよびメインメモリを管理するとともにメモリアクセス要求によって前記キャッシュメモリまたはメインメモリのデータ転送を制御するシステムコントローラとを有する複数のシステムボードがバスによって接続される情報処理装置に適用されるデータ転送方法であって、前記各システムコントローラは、前記メモリアクセス要求の要求するデータが存在するキャッシュメモリが複数存在する場合、前記メモリアクセス要求の種類、および前記データが存在するキャッシュメモリ毎のデータの状態を示す登録型に基づいて、前記データが存在するキャッシュメモリを有する送信元候補のＣＰＵの中から、前記メモリアクセス要求を発行した要求元のＣＰＵ、または前記メモリアクセス要求の要求するデータをライトバック時にストアするライトバック対象のメインメモリと物理的な距離が最も近い送信元候補のＣＰＵを送信元のＣＰＵとして選択する送信元選択ステップと、前記送信元選択ステップによって選択された送信元のＣＰＵが自身が管理するＣＰＵの場合には前記メモリアクセス要求の要求するデータを転送するとともに、要求元のＣＰＵおよび送信元のＣＰＵと、前記ライトバック対象のメインメモリとの物理的な距離に応じて前記登録型を移動させるデータ転送ステップと、を含むことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、メモリアクセス要求の要求するデータが存在するキャッシュメモリが複数存在する場合、メモリアクセス要求の種類、およびデータが存在するキャッシュメモリ毎のデータの状態を示す登録型に基づいて、データが存在するキャッシュメモリを有する送信元候補のＣＰＵの中から、メモリアクセス要求を発行した要求元のＣＰＵ、またはメモリアクセス要求の要求するデータをライトバック時にストアするライトバック対象のメインメモリと物理的な距離が最も近い送信元候補のＣＰＵを送信元のＣＰＵとして選択してデータを転送するとともに、要求元のＣＰＵおよび送信元のＣＰＵと、ライトバック対象のメインメモリとの物理的な距離に応じて登録型を移動させるようにしているため、データ転送時にバスを効率よく使用することができる情報処理装置を得ることができるという効果を奏する。
【００１４】
また、本発明によれば、メモリアクセス要求がフェッチ要求あって、かつ共有型・更新済みのデータ転送である場合、要求元のＣＰＵのほうが、送信元のＣＰＵよりもライトバック対象のメインメモリと物理的な距離が近い場合には、要求元のＣＰＵが有するキャッシュメモリの登録型を「オーナ」に変更することで、ライトバック時にライトバック対象のメインメモリに格納するデータが存在するキャッシュメモリを、ライトバック対象のメインメモリと物理的な距離を近づけるようにしているため、ライトバック時のデータ転送時にバスを効率よく使用することができる情報処理装置を得ることができるという効果を奏する。
【００１５】
また、本発明によれば、メモリアクセス要求がストア要求であって、かつ共有型・更新済みデータの転送である場合、送信元候補のＣＰＵの中から、ライトバック対象のメインメモリに物理的な距離が最も近いＣＰＵを送信元として選択するようにしているため、データ転送時にバスを効率よく使用することができる情報処理装置を得ることができるという効果を奏する。
【００１６】
また、本発明によれば、メモリアクセス要求の要求するデータが存在するキャッシュメモリが複数存在する場合、メモリアクセス要求の種類、およびデータが存在するキャッシュメモリ毎のデータの状態を示す登録型に基づいて、データが存在するキャッシュメモリを有する送信元候補のＣＰＵの中から、メモリアクセス要求を発行した要求元のＣＰＵ、またはメモリアクセス要求の要求するデータをライトバック時にストアするライトバック対象のメインメモリと物理的な距離が最も近い送信元候補のＣＰＵを送信元のＣＰＵとして選択してデータを転送するとともに、要求元のＣＰＵおよび送信元のＣＰＵと、ライトバック対象のメインメモリとの物理的な距離に応じて登録型を移動させるようにしているため、データ転送時にバスを効率よく使用することができるデータ転送方法を得ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に、本発明における情報処理装置、制御装置および制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１８】
図１〜図１１を用いてこの発明における情報処理装置の実施例を説明する。図１は、この発明における情報処理装置の構成を示す図である。図１において、情報処理装置は、クロスバーＸＢ０に接続されるシステムボードＳＢ０〜ＳＢ３と、クロスバーＸＢ１に接続されるシステムボードＳＢ４〜ＳＢ７とを備え、システムボードＳＢ０〜ＳＢ３はクロスバーＸＢ０を介してデータ転送を実行し、システムボードＳＢ４〜ＳＢ７はクロスバーＸＢ１を介してデータ転送を実行し、システムボードＳＢ０〜ＳＢ３とシステムボードＳＢ４〜ＳＢ７とは、クロスバーＸＢ０，ＸＢ１を介してデータ転送を実行する。
【００１９】
システムボードＳＢ０〜ＳＢ７は、全て同じ機能を備えている。図２に示したシステムボードＳＢ０の構成を示すブロック図を参照して、システムボードの機能について説明する。システムボードＳＢ０は、キャッシュメモリ１１ａ，１１ｂを有するＣＰＵ１ａ，１ｂと、入出力装置（以下、ＩＯ装置とする）２ａ，２ｂと、メインメモリ３ａ，３ｂと、システムコントローラＳＣとを備えている。
【００２０】
メインメモリ３（３ａ，３ｂを示す）は、キャッシュメモリ１１（１１ａ，１１ｂを示す）よりも記憶容量が大きくて、かつキャッシュメモリ１１よりもアクセス速度が遅いメモリデバイスで構成され、情報処理装置の共有メモリとして用いられ、システムボードＳＢ０〜ＳＢ７のＣＰＵ１（１ａ，１ｂを示す）が実行するプログラムを含むデータを格納する。
【００２１】
キャッシュメモリ１１は、メインメモリ３よりも記憶容量が小さくて、かつメインメモリ３よりもアクセス速度が速いメモリデバイスで構成され、ＣＰＵ１が発行するメモリアクセス要求によって実行されるキャッシュメモリ１１間、またはキャッシュメモリ１１とメインメモリ３間のデータ転送によりメインメモリ３が格納するデータの一部を格納する。また、キャッシュメモリ１１は、スワップ方式を用いている。
【００２２】
システムコントローラＳＣは、自身が搭載されるシステムボードＳＢ０に搭載されるＣＰＵ１、ＩＯ装置２（２ａ，２ｂを示す）、およびメインメモリ３を管理する。また、システムコントローラＳＣは、たとえば、ＭＯＥＳＩプロトコルなどの予め定められたキャッシュプロトコルに基づいてＣＰＵ１内のキャッシュメモリ１１の状態を管理し、ＣＰＵ１またはＩＯ装置２からのメモリアクセス要求によりキャッシュメモリ１１間のコヒーレンスを保ちつつ、キャッシュメモリ１１間およびキャッシュメモリ１１とメインメモリ３との間のデータ転送を制御する。
【００２３】
図３は、ＣＰＵ１またはＩＯ装置２からのメモリアクセス要求に対するデータ転送におけるメモリアクセス処理の起動に関するシステムコントローラＳＣの構成を示すブロック図である。図３において、システムコントローラＳＣは、メモリアクセス要求受信部４と、ブロードキャスト送受信部５と、スヌープ制御部６と、ＣＰＵリクエスト発行部７と、ＭＳアクセス発行部８と、キャッシュ管理テーブル９とを備えている。
【００２４】
キャッシュ管理テーブル９には、自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１が有するキャッシュメモリ１１の状態が登録され、メモリアクセス要求によって要求されたデータがキャッシュメモリ１１に存在しているか否かの判定に用いられる。
【００２５】
キャッシュメモリ１１間のデータ転送、およびキャッシュメモリ１１からメインメモリ３へのデータ転送はキャッシュライン単位で実行され、メインメモリ３からキャッシュメモリ１１へのデータ転送はエントリー単位で実行される。エントリーのバイト数とキャッシュラインのバイト数は、「エントリーのバイト数＝キャッシュラインのバイト数×ｎ（ｎは自然数）」が成り立つように予め定められている。よって、キャッシュメモリ１１の状態はキャッシュライン毎に管理する。
【００２６】
図４は、キャッシュ管理テーブル９の構成の一例を示す図である。図４において、キャッシュ管理テーブル９には、キャッシュメモリ１１ａ，１１ｂのキャッシュラインを識別するためのキャッシュライン識別子が登録されるサブブロック情報に対応付けて、当該キャッシュラインが格納するデータとメインメモリ３のデータとの対応付けを示すメインメモリ情報、および当該キャッシュラインが格納するデータの状態（登録型）を示すキャッシュライン状態情報が登録される。
【００２７】
図２に戻って、メモリアクセス要求受信部４は、自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１およびＩＯ装置２が発行するメモリアクセス要求を受信する。メモリアクセス要求受信部４は、受信したメモリアクセス要求をブロードキャスト送受信部５に出力する。
【００２８】
ブロードキャスト送受信部５は、システムコントローラＳＣ間の通信インタフェースを有し、メモリアクセス要求受信部４から入力されるメモリアクセス要求をスヌープ制御部６に出力するとともに、他のシステムボードＳＢ１〜ＳＢ７のシステムコントローラＳＣに送信する。また、他のシステムボードＳＢ１〜ＳＢ７のシステムコントローラＳＣからのメモリアクセス要求を受信してスヌープ制御部６に出力する。すなわち、ブロードキャスト送受信部５は、自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１およびＩＯ装置２が発行したメモリアクセス要求を全てのシステムボードＳＢ０〜ＳＢ７システムコントローラＳＣ内のスヌープ制御部６にブロードキャストする。
【００２９】
スヌープ制御部６は、メモリアクセス要求を受けると、自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１内のキャッシュメモリ１１のキャッシュラインの状態（メモリアクセス要求によって要求されるデータがキャッシュメモリ１１のキャッシュラインに存在するか否か）およびデータ転送に用いる資源（キャッシュメモリに対するチップセレクト信号やリードライト制御信号などの制御バス、アドレスバス、データバス）の状態を検出してメモリアクセス要求によって要求されたデータ（対象データ）に対するキャッシュメモリ１１毎のステータスを選択するスヌープ処理を実行する。
【００３０】
また、スヌープ制御部６は、スヌープ処理によって選択したキャッシュメモリ１１毎のステータスをスヌープ処理結果として他のスヌープ制御部６に通知し、装置内すべてのキャッシュメモリ１１のステータスをマージして最終ステータスを決定し、決定したステータスに基づいてキャッシュメモリ１１間、またはキャッシュメモリ１１とメインメモリ３との間のメモリ間データ転送のためのメモリアクセス処理を起動するメモリアクセス起動処理を実行するとともに、キャッシュ管理テーブル９のキャッシュメモリ状態情報に登録される登録型を更新する。
【００３１】
ここで、スヌープ制御部６がスヌープ処理によって選択するステータスの種類と選択条件を説明する。スヌープ制御部６が選択するステータスとして「ＢＵＳＹ」、「ＨＩＴ」、および「ＭＩＳＳ」の３種類が定義される。「ＢＵＳＹ」は、現時点でキャッシュメモリ１１に対象メモリアクセス要求の対象データが存在するかを特定することができないことを示すステータスであり、対象メモリアクセス要求の対象データと、メモリアクセス起動処理およびメモリアクセス処理の対象となっているメモリアクセス要求、すなわち対象メモリアクセス要求よりも前に発行され、メモリアクセス起動処理やメモリアクセス処理の対象となっているメモリアクセス要求（先行メモリアクセス要求）の対象データとが競合している場合（対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが同一のキャッシュラインに存在する場合）、またはデータ転送のための資源が枯渇している場合に選択される。なお、データ転送のための資源の枯渇とは、先行メモリアクセス要求のメモリアクセス処理によってキャッシュメモリ１１にアクセスしており、対象メモリアクセス要求の対象データへのアクセスができない状態のことである。
【００３２】
「ＨＩＴ」は、キャッシュメモリ１１に対象メモリアクセス要求の対象データとして使用可能なデータが存在することを示すステータスであり、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合しておらず、かつデータ転送のための資源が枯渇していない（「ＢＵＳＹ」ではない）場合であって、かつ対象メモリアクセス要求の対象データがキャッシュメモリ１１のサブブロックに存在している場合に選択される。
【００３３】
「ＭＩＳＳ」は、メインメモリ３からデータを転送する必要があることを示すステータスであり、対象メモリアクセス要求の対象データと先行メモリアクセス要求の対象データとが競合しておらず、かつデータ転送のための資源が枯渇していない（「ＢＵＳＹ」ではない）場合であって、かつ対象メモリアクセス要求の対象データがキャッシュメモリ１１のサブブロックに存在していない場合に選択される。
【００３４】
スヌープ制御部６は、自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１内のキャッシュメモリ１１毎に「ＢＵＳＹ」、「ＨＩＴ」、および「ＭＩＳＳ」の３つのステータスのいずれかを選択するスヌープ処理が終了すると、選択したキャッシュメモリ１１毎のステータスをスヌープ処理結果として他のスヌープ処理部に通知する。そして、自身および他のスヌープ制御部６から得られた装置内すべてのキャッシュメモリ１１のステータスをマージして最終ステータスを決定する。
【００３５】
具体的には、スヌープ制御部６は、すべてのステータスの中に「ＢＵＳＹ」が存在する場合には最終ステータスとして「ＢＵＳＹ」を選択し、ステータスの中に「ＢＵＳＹ」が存在せず、「ＨＩＴ」が存在する場合には最終ステータスとして「ＨＩＴ」を選択し、ステータスの中に「ＢＵＳＹ」および「ＨＩＴ」が存在しない場合、すなわちすべてのステータスが「ＭＩＳＳ」の場合には最終ステータスとして「ＭＩＳＳ」を選択する。
【００３６】
最終ステータスが「ＢＵＳＹ」の場合、スヌープ制御部６は、最終ステートが「ＨＩＴ」または「ＭＩＳＳ」になるまでスヌープ処理を繰り返す。最終ステータスが「ＨＩＴ」の場合、スヌープ制御部６は、ステータスが「ＨＩＴ」であるキャッシュメモリ１１の１つに対してデータ転送を要求するメモリアクセス処理を起動する。
【００３７】
詳細には、スヌープ制御部６は、データを要求しているＣＰＵ１が有するキャッシュメモリ１１と、ステータスが「ＨＩＴ」となっているキャッシュメモリ１１を有するＣＰＵ１との物理的な距離が最も近いＣＰＵ１を選択する。ここで、キャッシュメモリ１１を有するＣＰＵ１間の物理的な距離とは、データ転送に用いるバスの経路長であり、同一システムボード内に搭載されるＣＰＵ１ａとＣＰＵ１ｂが最も物理的な距離が近く、つぎに、同一のクロスバーＸＢ０を介して接続されるシステムボードＳＢ０〜ＳＢ３に搭載されるＣＰＵ１、クロスバーＸＢ１を介して接続されるシステムボードＳＢ４〜ＳＢ７に搭載されるＣＰＵ１の物理的な距離が近く、最も物理的な距離が遠いのは、クロスバーＸＢ０とクロスバーＸＢ１とを介して接続されるシステムボードＳＢ０〜ＳＢ３に搭載されるＣＰＵ１とシステムボードＳＢ４〜ＳＢ７に搭載されるＣＰＵ１である。
【００３８】
スヌープ制御部６は、メモリアクセス要求をブロードキャストする際に要求元であるＣＰＵ１ａ，１ｂが搭載されるシステムボードＳＢ０〜ＳＢ７に予め付与されている物理番号を付加しておく。また、スヌープ処理結果にも自身が搭載されるシステムボードＳＢ０〜ＳＢ７の物理番号を付加しておく。そして、スヌープ制御部６は、メモリアクセス要求に含まれる物理番号、およびスヌープ処理結果に含まれる物理番号に基づいてＣＰＵ１の物理的な距離を求めて、メモリアクセス要求を発行したＣＰＵ１と最も物理的に近いＣＰＵ１を選択する。なお、同一システムボードＳＢ０〜ＳＢ７に搭載されるＣＰＵ１ａのキャッシュメモリ１１ａとＣＰＵ１ｂのキャッシュメモリ１１ｂとのステータスがともに「ＨＩＴ」の場合は、予め定められた順番にしたがって１つを選択するようにすればよい。
【００３９】
スヌープ制御部６は、選択したＣＰＵ１が自身を搭載するシステムコントローラＳＣが管理するＣＰＵ１の場合、スヌープ制御部６はキャッシュメモリ１１に対してデータ転送を要求するメモリアクセス処理を起動する。
【００４０】
最終ステータスが「ＭＩＳＳ」であって、かつメモリアクセス要求がフェッチ要求（データを参照する共有型フェッチ要求またはデータを更新することを前提とした排他型フェッチ要求）の場合、スヌープ制御部６は、メインメモリ３から対象データをリードするメモリアクセス処理を起動する。
【００４１】
詳細には、スヌープ制御部６は、共有型フェッチ要求または排他型フェッチ要求に含まれるアドレスおよびメインメモリ３に割当てられているアドレス空間に基づいて、共有型フェッチ要求または排他型フェッチ要求の対象データを格納するメインメモリ３が、自身を搭載するシステムコントローラＳＣが管理するメインメモリ３であるか否かを判定する。共有型フェッチ要求または排他型フェッチ要求の対象データを格納するメインメモリ３が、自身を搭載するシステムコントローラＳＣが管理するメインメモリ３である場合、スヌープ制御部６は、メインメモリ３に対してデータ転送を要求するメモリアクセス処理を起動する。
【００４２】
最終ステータスが「ＭＩＳＳ」であって、かつメモリアクセス要求がストア要求の場合、スヌープ制御部６は、メインメモリ３に対象データをストアするメモリアクセス処理を起動する。
【００４３】
詳細には、スヌープ制御部６は、ストア要求に含まれるアドレスおよびメインメモリ３に割当てられているアドレス空間に基づいて、ストア要求の対象データをストアするメインメモリ３が、自身を搭載するシステムコントローラＳＣが管理するメインメモリ３であるか否かを判定する。ストア要求の対象データをストアするメインメモリ３が、自身を搭載するシステムコントローラＳＣが管理するメインメモリ３である場合、スヌープ制御部６は、ストア要求に含まれる対象データをメインメモリ３にストアするメモリアクセス処理を起動する。
【００４４】
また、スヌープ制御部６は、起動したメモリアクセス処理によって実行されるデータ転送に応じてキャッシュ管理テーブル９のキャッシュライン状態情報の登録型を遷移させて更新する。図５および図６を参照して、キャッシュ管理テーブル９のキャッシュライン状態情報に登録される登録型および遷移条件について説明する。
【００４５】
ここでは、キャッシュプロトコルとしてＭＯＥＳＩプロトコルを用いた場合を例に挙げて説明する。ＭＯＥＳＩプロトコルでは、データの状態として、キャッシュラインに有効な状態が格納されていないことを示す「無効（Ｉ）」と、キャッシュラインが格納するデータが更新されており、当該データのコピーが他のキャッシュメモリ１１のキャッシュラインおよびメインメモリ３に存在しない状態を示す「更新・排他（Ｍ）」と、キャッシュラインが格納するデータが未変更であって、かつ当該データのコピーが他のキャッシュメモリ１１のキャッシュラインに存在しない状態を示す「未更新・排他（Ｅ）」と、キャッシュラインが格納するデータが未変更であって、かつ当該データのコピーが他のキャッシュメモリ１１のキャッシュラインに存在することを示す「共有（Ｓ）」と、キャッシュラインが格納するデータが変更されており、ライトバック時にメインメモリにデータを書き込むオーナであることを示す「オーナ（Ｏ）」との５つの状態を有している。
【００４６】
「無効（Ｉ）」から「未更新・排他（Ｅ）」への遷移条件は、フェッチ要求によってメインメモリ３からキャッシュラインにデータを転送した場合、すなわちメインメモリ３からキャッシュラインにデータをコピーした場合である。「無効（Ｉ）」から「共有（Ｓ）」への遷移条件は、フェッチ要求によって他のキャッシュメモリ１１からキャッシュラインにデータを転送した場合、すなわち他のキャッシュメモリ１１からデータをコピーした場合である「無効（Ｉ）」から「更新・排他（Ｍ）」への遷移条件は、メモリアクセス要求であるストア要求によって、他のキャッシュメモリ１１またはメインメモリ３からキャッシュラインにデータをコピーし、コピーしたデータを変更した場合である。「無効（Ｉ）」から「オーナ（Ｏ）」への遷移条件は、フェッチ要求によって登録型が「共有（Ｓ）」または「オーナ（Ｏ）」のキャッシュメモリ１１のキャッシュラインからデータを転送した場合であって、かつ転送したデータを格納するメインメモリ３との物理的な距離がデータ転送前の「オーナ（Ｏ）」よりも近くなった場合である。
【００４７】
「未更新・排他（Ｅ）」から「更新・排他（Ｍ）」への遷移条件は、ストア要求によってキャッシュラインのデータを変更した場合である。「未更新・排他（Ｅ）」から「共有（Ｓ）」への遷移条件は、フェッチ要求により他のキャッシュメモリ１１へデータを転送した場合である。「未更新・排他（Ｅ）」から「無効（Ｉ）」への遷移条件は、キャッシュラインが追い出される場合である。
【００４８】
「共有（Ｓ）」から「更新・排他（Ｍ）」への遷移条件は、ストア要求によってキャッシュラインのデータを変更した場合である。「共有（Ｓ）」から「無効（Ｉ）」への遷移条件は、ストア要求によって自身のキャッシュラインが格納するデータと同一のデータを格納している他のキャッシュラインのデータが変更された場合である。「共有（Ｓ）」から「無効（Ｉ）」への遷移条件は、ストア要求によって、キャッシュラインと同じデータを格納する他のキャッシュメモリ１１のデータが変更された場合である。
【００４９】
「更新・排他（Ｍ）」から「オーナ（Ｏ）」への遷移条件は、フェッチ要求によって他のキャッシュメモリ１１にデータを転送し、転送先のキャッシュメモリ１１よりもデータを格納するメインメモリ３との物理的な距離が近い場合である。「更新・排他（Ｍ）」から「無効（Ｉ）」への遷移条件は、キャッシュラインから追い出された場合である。「更新・排他（Ｍ）」から「共有（Ｓ）」への遷移条件は、フェッチ要求によって他のキャッシュメモリ１１へデータを転送した場合である。
【００５０】
「オーナ（Ｏ）」から「無効（Ｉ）」への遷移条件は、キャッシュラインから追い出された場合である。「オーナ（Ｏ）」から「更新・排他（Ｍ）」への遷移条件は、ストア要求によってキャッシュラインのデータが変更された場合である。「オーナ（Ｏ）」から「共有（Ｓ）」への遷移条件は、フェッチ要求によって他のキャッシュメモリ１１にデータを転送し、転送先のキャッシュメモリ１１よりもデータを格納するメインメモリ３との物理的な距離が遠い場合である。
【００５１】
ここで、メインメモリ３との物理的な距離とは、データ転送に用いるバスの経路長であり、同一システムボードＳＢ０〜ＳＢ７内に、キャッシュラインのデータを格納するメインメモリ３と当該キャッシュラインを有するキャッシュメモリ１１を有するＣＰＵ１とが存在する場合、すなわち、ライトバック時にクロスバーＸＢ０，ＸＢ１を介する必要がない場合が最もメインメモリ３とＣＰＵ１と物理的な距離が最も近く、つぎに物理的な距離が近いのは、同一クロスバーＸＢ０、またはクロスバーＸＢ１のみを介してライトバックを行なう場合であり、最も物理的が遠いのは、クロスバーＸＢ０およびクロスバーＸＢ１を介してライトバックを行なう場合である。なお、同一システムボードＳＢ０〜ＳＢ７に搭載されるＣＰＵ１ａのキャッシュメモリ１１ａとＣＰＵ１ｂのキャッシュメモリ１１ｂとのステータスがともに「ＨＩＴ」の場合は、予め定められた順番にしたがって１つを選択するようにすればよい。
【００５２】
ＣＰＵリクエスト発行部７は、スヌープ制御部６によって起動されるメモリアクセス処理によってＣＰＵ１内のキャッシュメモリ１１のアクセス制御を行う。ＭＳアクセス発行部８は、スヌープ制御部６によって起動されるメモリアクセス処理によってメインメモリのアクセス制御を行う。
【００５３】
つぎに、図１〜図１２を参照して、この発明における情報処理装置の動作をシステムボードＳＢ０に搭載されるＣＰＵ１ａがメモリアクセス要求を発行した場合を例に挙げて説明する。
【００５４】
システムボードＳＢ０のＣＰＵ１ａが発行したメモリアクセス要求を受信すると、システムボードＳＢ０のシステムコントローラＳＣのメモリアクセス要求受信部４は、受信したメモリアクセス要求をブロードキャスト送受信部５に出力する。ブロードキャスト送受信部５は、システムボードＳＢ０に予め付与された物理番号を付加した物理番号付きメモリアクセス要求をスヌープ制御部６に出力するとともに、システムボードＳＢ１〜システムボードＳＢ７のシステムコントローラＳＣのブロードキャスト送受信部５に送信する。
【００５５】
システムボードＳＢ１〜システムボードＳＢ７のシステムコントローラＳＣのブロードキャスト送受信部５は、受信した物理番号付きメモリアクセス要求をスヌープ制御部６に出力する。
【００５６】
システムボードＳＢ０〜ＳＢ７のシステムコントローラＳＣのスヌープ制御部６は、自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１が有するキャッシュメモリ１１のキャッシュラインの状態およびデータ転送に用いる資源の状態を検出して、キャッシュメモリ１１のステータスを選択するスヌープ処理を実行する。
【００５７】
スヌープ処理を実行した後、システムボードＳＢ０〜ＳＢ７のシステムコントローラＳＣのスヌープ制御部６は、キャッシュメモリを識別するためのキャッシュメモリ識別子、当該キャッシュメモリ識別子が示すキャッシュメモリ１１のステータス、および自身が搭載されるシステムボードＳＢ０〜ＳＢ７の物理番号を含むスヌープ処理結果を他のシステムボードＳＢ０〜ＳＢ７のシステムコントローラＳＣのスヌープ制御部６に通知する。なお、スヌープ制御部６は、ステータスが「ＨＩＴ」の場合には登録型も含めて通知する。
【００５８】
システムボードＳＢ０〜ＳＢ７のシステムコントローラＳＣのスヌープ制御部６は、自身が選択したステータスおよび他のスヌープ制御部６から通知されたステータスをマージして、最終ステータスを選択する。最終ステータスが「ＢＵＳＹ」の場合、スヌープ制御部６は、最終ステートが「ＨＩＴ」または「ＭＩＳＳ」になるまでスヌープ処理を繰り返す。最終ステータスが「ＨＩＴ」の場合、スヌープ制御部６は、ステータスが「ＨＩＴ」であるキャッシュメモリ１１の１つに対してデータ転送を要求するメモリアクセス処理を起動するとともに、当該キャッシュメモリ１１の登録型を更新する。
【００５９】
最終ステータスが「ＭＩＳＳ」であって、かつメモリアクセス要求がフェッチ要求の場合、スヌープ制御部６は、メインメモリ３から対象データをリードするメモリアクセス処理を起動するとともに、キャッシュメモリ１１の登録型を更新する。
【００６０】
また、最終ステータスが「ＭＩＳＳ」であって、かつメモリアクセス要求がストア要求の場合、スヌープ制御部６は、メインメモリ３に対象データをストアするメモリアクセス処理を起動する。
【００６１】
図７−１および図７−２のフローチャートを参照して、最終ステートが「ＨＩＴ」の場合のデータ転送の転送元となるキャッシュメモリ１１の選択動作について詳細に説明する。なお、スヌープ処理結果の中で「ＨＩＴ」が１つの場合には、ステータスが「ＨＩＴ」であるキャッシュメモリが転送元となるので、ここでは、複数のステータスが「ＨＩＴ」である場合について説明する。
【００６２】
システムボードＳＢ０〜ＳＢ７のシステムコントローラＳＣのスヌープ制御部６は、自身のスヌープ処理結果に「ＨＩＴ」が含まれているか否かを判定する（図７−１のステップＳ１００）。自身のスヌープ処理結果に「ＨＩＴ」が含まれていない場合、データ転送の対象ではないので処理を終了する。自身のスヌープ処理結果に「ＨＩＴ」が含まれている場合、各スヌープ制御部６は、物理番号付きメモリアクセス要求がフェッチ要求あって、かつ共有型・未更新のデータ転送であるか否か、すなわち物理番号付きメモリアクセス要求がフェッチ要求あって、かつスヌープ処理結果が「ＨＩＴ」の登録型が全て「共有（Ｓ）」であるか否かを判定する（図７−１のステップＳ１０１）。
【００６３】
物理番号付きメモリアクセス要求がフェッチ要求あって、かつ共有型・未更新のデータ転送である場合、各スヌープ制御部６は、物理番号付きメモリアクセス要求の物理番号と、スヌープ処理結果に含まれる物理番号に基づいて、メモリアクセス要求を発行したＣＰＵ１（要求元）と、スヌープ処理結果が「ＨＩＴ」であるキャッシュメモリ１１を有するそれぞれのＣＰＵ１（送信元候補）との物理的な距離が最も近い送信元候補を送信元として選択する（図７−１のステップＳ１０２）。具体的には、たとえば、各スヌープ制御部６に予め各物理番号間の物理的な距離を数値化して登録しておき、物理番号付きメモリアクセス要求の物理番号とスヌープ処理結果に含まれる物理番号に対応付けられた数値を抽出し、抽出した数値が最も小さい送信元候補を送信元として選択する。
【００６４】
各スヌープ制御部６は、送信元となるＣＰＵ１が自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１であるか否かを判定する（図７−１のステップＳ１０３）。送信元となるＣＰＵが自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１ではない場合、各スヌープ制御部６は処理を終了する。送信元となるＣＰＵが自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１である場合、スヌープ制御部６は、ＣＰＵリクエスト発行部７を介して選択したＣＰＵ１のキャッシュメモリ１１からデータを読み出すアクセス要求を出力してデータを読み出し、読み出したデータと当該データの登録型を「共有（Ｓ）」とすることを含む応答を要求元に送信する（図７−１のステップＳ１０４）。これにより、要求元であるＣＰＵ１は、応答に含まれるデータをキャッシュラインに格納するとともに、当該キャッシュラインのキャッシュライン識別子に対応付けて登録されているキャッシュライン状態情報に「共有（Ｓ）」を登録する。
【００６５】
たとえば、図８に示すように、システムボードＳＢ１のＣＰＵ１ａ、システムボードＳＢ４のＣＰＵ１ａ，１ｂ、およびシステムボードＳＢ５のＣＰＵ１ａ，１ｂの登録型が「共有（Ｓ）」であった場合には、要求元であるシステムボードＳＢ０のＣＰＵ１ａと最も物理的な距離が近いシステムボードＳＢ１のＣＰＵ１ａが送信元として選択され、システムボードＳＢ１のＣＰＵ１ａがシステムボードＳＢ０のＣＰＵ１ａにデータを転送し、データを格納したシステムボードＳＢ０のＣＰＵ１ａが有するキャッシュメモリ１１ａのキャッシュラインの登録型が「無効（Ｉ）」から「共有（Ｓ）」に変更される。
【００６６】
一方、物理番号付きメモリアクセス要求がフェッチ要求あって、かつ共有型・未更新のデータ転送ではない場合（図７−１のステップＳ１０１，Ｎｏ）、各スヌープ制御部６は、物理番号付きメモリアクセス要求がフェッチ要求あって、かつ共有型・更新済みのデータ転送であるか否か、すなわち物理番号付きメモリアクセス要求がフェッチ要求であって、かつスヌープ処理結果が「ＨＩＴ」の登録型に「共有（Ｓ）」および「オーナ（Ｏ）」が含まれているか否かを判定する（図７−１のステップＳ１０５）。物理番号付きメモリアクセス要求がフェッチ要求あって、かつ共有型・更新済みのデータ転送である場合、各スヌープ制御部６は、登録型が「オーナ（Ｏ）」のＣＰＵ１とライトバック時にデータを格納するメインメモリ３（ライトバック対象メインメモリ）との物理的な距離、および要求元であるＣＰＵ１とライトバック対象メインメモリ３との物理的な距離を求める（図７−１のステップＳ１０６）。
【００６７】
具体的には、たとえば、スヌープ制御部６に、予め各システムボードＳＢ０〜ＳＢ７に搭載されるそれぞれのメインメモリ３のアドレス空間と搭載されるシステムボードＳＢ０〜ＳＢ７との対応付けを登録しておき、この対応付けと、物理番号付きメモリアクセス要求に含まれるアドレスとに基づいてライトバック対象メインメモリの物理番号を認識し、上述したＣＰＵ１間の物理的な距離を求めた場合と同様にして登録型が「オーナ（Ｏ）」のＣＰＵ１とライトバック時にデータを格納するメインメモリ３（ライトバック対象メインメモリ）との物理的な距離、および要求元であるＣＰＵ１とライトバック対象メインメモリとの物理的な距離を求める。
【００６８】
各スヌープ制御部６は、要求元であるＣＰＵ１の方が、登録型が「オーナ（Ｏ）」のＣＰＵ１よりもライトバック対象メインメモリとの物理的な距離が近いか否かを判定する（図７−１のステップＳ１０７）。要求元であるＣＰＵ１の方が登録型が「オーナ（Ｏ）」のＣＰＵ１よりもとライトバック対象メインメモリとの物理的な距離が近い場合、各スヌープ制御部６は、登録型が「オーナ（Ｏ）」のＣＰＵ１を送信元として選択する（図７−１のステップＳ１０８）。
【００６９】
各スヌープ制御部６は、送信元となるＣＰＵ１が自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１であるか否かを判定する（図７−１のステップＳ１０９）。送信元となるＣＰＵが自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１ではない場合、スヌープ制御部６は処理を終了する。送信元となるＣＰＵが自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１である場合、スヌープ制御部６は、ＣＰＵリクエスト発行部７を介して選択したＣＰＵ１のキャッシュメモリ１１からデータを読み出すアクセス要求を出力し、読み出したデータと当該データの登録型を「オーナ（Ｏ）」とすることを含む応答を要求元に送信するとともに、当該キャッシュラインを示すキャッシュライン識別子に対応付けてキャッシュ管理テーブル９に登録されているキャッシュライン状態情報の登録型を「オーナ（Ｏ）」から「共有（Ｓ）」に変更する（図７−１のステップＳ１１０）。これにより、要求元であるＣＰＵ１は、応答に含まれるデータをキャッシュメモリ１１ａのキャッシュラインに格納するとともに、当該キャッシュラインのキャッシュライン識別子に対応付けてキャッシュ管理テーブル９に登録されているキャッシュライン状態情報に「オーナ（Ｏ）」を登録する。
【００７０】
たとえば、図９に示すように、システムボードＳＢ１のＣＰＵ１ａの登録型が「オーナ（Ｏ）」であって、システムボードＳＢ４のＣＰＵ１ａ，１ｂ、およびシステムボードＳＢ５のＣＰＵ１ａ，１ｂの登録型が「共有（Ｓ）」である場合であって、かつライトバック対象メインメモリがシステムボードＳＢ０のメインメモリ３ｂの場合、要求元であるシステムボードＳＢ０のＣＰＵ１ａとメインメモリ３ｂとの物理的な距離の方が、登録型が「オーナ（Ｏ）」のシステムボードＳＢ１のＣＰＵ１ａとシステムボードＳＢ０のメインメモリ３ｂとの物理的な距離よりも近い。したがって、登録型が「オーナ（Ｏ）」のシステムボードＳＢ１のＣＰＵ１ａが送信元として選択され、システムボードＳＢ１のＣＰＵ１ａがシステムボードＳＢ０のＣＰＵ１ａにデータを転送するとともに、登録型を「オーナ（０）」から「共有（Ｓ）」に変更し、データを格納したシステムボードＳＢ０のＣＰＵ１ａが有するキャッシュメモリ１１ａのキャッシュラインの登録型が「無効（Ｉ）」から「オーナ（Ｏ）」に変更される。これにより、登録型が「オーナ（Ｏ）」のデータは、ライトバック時にデータを格納するメインメモリ３ａと同一のシステムボードＳＢ０に存在することになり、ライトバック時にバスおよびクロスバーＸＢ０，ＸＢ１を介することなくメインメモリ３ａに格納することが可能となる。
【００７１】
一方、要求元であるＣＰＵ１とライトバック対象メインメモリとの物理的な距離の方が登録型が「オーナ（Ｏ）」のＣＰＵ１とライトバック対象メインメモリとの物理的な距離の方が遠い場合（図７−１のステップＳ１０７，Ｎｏ）、システムボードＳＢ０のシステムコントローラＳＣのスヌープ制御部６は、要求元と送信元候補との物理的な距離が最も近い送信元候補を送信元として選択する（図７−１のステップＳ１１１）。
【００７２】
システムボードＳＢ０〜ＳＢ７のシステムコントローラＳＣのスヌープ制御部６は、送信元となるＣＰＵ１が自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１であるか否かを判定する（図７−１のステップＳ１１２）。送信元となるＣＰＵが自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１であると判定した場合、スヌープ制御部６は、ＣＰＵリクエスト発行部７を介して選択したＣＰＵ１のキャッシュメモリ１１からデータを読み出すアクセス要求を出力し、読み出したデータと当該データの登録型を「共有（Ｓ）」とすることを含む応答を要求元に送信する（図７−１のステップＳ１１３）。これにより、要求元であるＣＰＵ１は、応答に含まれるデータをキャッシュラインに格納するとともに、当該キャッシュラインのキャッシュライン識別子に対応付けて登録されているキャッシュライン状態情報に「共有（Ｓ）」を登録する。
【００７３】
たとえば、図１０に示すように、システムボードＳＢ１のＣＰＵ１ａの登録型が「オーナ（Ｏ）」であって、システムボードＳＢ１のＣＰＵ１ｂ、およびシステムボードＳＢ５のＣＰＵ１ｂの登録型が「共有（Ｓ）」である場合であって、かつライトバック対象メインメモリがシステムボードＳＢ４のメインメモリ３ａの場合、登録型が「オーナ（Ｏ）」のシステムボードＳＢ１のＣＰＵ１ａの方が、要求元であるシステムボードＳＢ０のＣＰＵ１ａよりもシステムボードＳＢ４のメインメモリ３ａとの物理的な距離が近い。また、システムボードＳＢ１のＣＰＵ１ａの方が、システムボードＳＢ１のＣＰＵ１ｂおよびシステムボードＳＢ５のＣＰＵ１ａよりも、要求元であるシステムボードＳＢ０のＣＰＵ１ａとの物理的な距離が近い。したがって、登録型が「オーナ（Ｏ）」のシステムボードＳＢ１のＣＰＵ１ａが送信元として選択され、システムボードＳＢ１のＣＰＵ１ａがシステムボードＳＢ０のＣＰＵ１ａにデータを転送する。これにより、データを格納したシステムボードＳＢ０のＣＰＵ１ａが有するキャッシュメモリ１１ａのキャッシュラインの登録型が「無効（Ｉ）」から「共有（Ｓ）」に変更される。すなわち、「オーナ（Ｏ）」の登録型の移動は行わない。
【００７４】
一方、物理番号付きメモリアクセス要求がフェッチ要求あって、かつ共有型・更新済みのデータ転送ではない場合（図７−１のステップＳ１０５，Ｎｏ）、各スヌープ制御部６は、物理番号付きメモリアクセス要求がストア要求であって、かつ共有型・更新済みデータの転送であるか否か、すなわち物理番号付きメモリアクセス要求がフェッチ要求あって、かつスヌープ処理結果が「ＨＩＴ」の登録型に、「共有（Ｓ）」および「オーナ（Ｏ）」が含まれているか否かを判定する（図７−２のステップＳ１１４）。
【００７５】
物理番号付きメモリアクセス要求がストア要求であって、かつ共有型・更新済みデータの転送である場合、各スヌープ制御部６は、送信元候補の中でデータをストアするメインメモリ３に物理的な距離が最も近い送信元候補を送信元として選択する（図７−２のステップＳ１１５）。送信元となるＣＰＵが自身が搭載されるシステムコントローラＳＣが管理するＣＰＵ１である場合、スヌープ制御部６は、ＣＰＵリクエスト発行部７を介して選択したＣＰＵ１のキャッシュメモリ１１からデータを読み出すアクセス要求を出力してデータを読み出し、読み出したデータとストア要求に含まれるデータとをマージする（ステップＳ１１７）。具体的には、キャッシュメモリ１１から読み出したデータの内、ストア要求に含まれるアドレスに対応するデータをストア要求に含まれるデータに置き換える。
【００７６】
スヌープ制御部６は、マージしたデータをストア先のメインメモリ３に格納するとともに、スヌープ処理結果が「ヒット」であるすべてのＣＰＵ１に当該キャッシュラインの登録型を「無効（Ｉ）」にするように通知する（ステップＳ１１８）。具体的には、ストア先のメインメモリ３が自身が搭載されるシステムコントローラＳＣが管理するメインメモリ３である場合、スヌープ制御部６は、ＭＳアクセス発行部８を介してストア先のメインメモリ３にマージしたデータを格納させるメモリアクセス処理を起動して、メインメモリ３にマージしたデータを格納させる。そして、当該キャッシュラインを示すキャッシュライン識別子に対応付けてキャッシュ管理テーブル９に登録されているキャッシュライン状態情報の登録型を「無効（Ｉ）」に変更するとともに、スヌープ処理結果が「ＨＩＴ」であるすべてのＣＰＵ１に当該キャッシュラインの登録型を「無効（Ｉ）」にするように通知し、スヌープ処理結果が「ＨＩＴ］であるすべてのＣＰＵ１の当該キャッシュラインの登録型を「無効（Ｉ）」に変更させる。
【００７７】
ストア先のメインメモリ３が自身が搭載されるシステムコントローラＳＣが管理するメインメモリ３ではない場合、スヌープ制御部６は、要求元としてストア先のメインメモリ３が搭載されるシステムボードＳＢ０〜ＳＢ７のシステムコントローラＳＣを選択してマージしたデータを送信し、要求元として選択したシステムボードＳＢ０〜ＳＢ７のシステムコントローラＳＣを介してストア先であるメインメモリ３にデータを格納させる。そして、当該キャッシュラインを示すキャッシュライン識別子に対応付けてキャッシュ管理テーブル９に登録されているキャッシュライン状態情報の登録型を「無効（Ｉ）」に変更するとともに、スヌープ処理結果が「ＨＩＴ」であるすべてのＣＰＵ１に当該キャッシュラインの登録型を「無効（Ｉ）」にするように通知し、スヌープ処理結果が「ＨＩＴ］であるすべてのＣＰＵ１の当該キャッシュラインの登録型を「無効（Ｉ）」に変更させる。
【００７８】
たとえば、図１１に示すように、システムボードＳＢ０のＣＰＵ１ｂ、システムボードＳＢ１のＣＰＵ１ａ，１ｂ、システムボードＳＢ４のＣＰＵ１ｂ、およびシステムボードＳＢ５のＣＰＵ１ａ，１ｂの登録型が「共有（Ｓ）」であって、システムボードＳＢ４のＣＰＵ１ａの登録型が「オーナ（Ｏ）」である場合であって、かつストア要求によるデータをストアするメインメモリがシステムボードＳＢ４のメインメモリ３ａである場合、システムボードＳＢ４のメインメモリ３ａと同一システムボードＳＢ４のＣＰＵ１ａが、システムボードＳＢ４のメインメモリ３ａと最も物理的な距離が近い。したがって、システムボードＳＢ４のシステムコントローラＳＣのスヌープ制御部６は、システムボードＳＢ４のＣＰＵ１ａからデータを読み出してストア要求のデータとマージし、マージしたデータをバスやクロスバーＸＢ０，ＸＢ１を介することなくシステムボードＳＢ４のメインメモリ３ａに格納させ、システムボードＳＢ０のＣＰＵ１ｂ、システムボードＳＢ１のＣＰＵ１ａ，１ｂ、システムボードＳＢ４のＣＰＵ１ｂ、およびシステムボードＳＢ５のＣＰＵ１ａ，１ｂの当該キャッシュラインの登録型を「共有（Ｓ）」から「無効（Ｉ）」に変更させる。
【００７９】
また、図１２に示すように、システムボードＳＢ０のＣＰＵ１ｂ、システムボードＳＢ０のＣＰＵ１ｂ、およびシステムボードＳＢ５のＣＰＵ１ｂの登録型が「共有（Ｓ）」であって、システムボードＳＢ１のＣＰＵ１ａの登録型が「オーナ（Ｏ）」である場合であって、かつストア要求によるデータをストアするメインメモリがシステムボードＳＢ４のメインメモリ３ａである場合、システムボードＳＢ５のＣＰＵ１ａがシステムボードＳＢ４のメインメモリ３ａと最も物理的な距離が近い。したがって、システムボードＳＢ５のシステムコントローラＳＣのスヌープ制御部６は、システムボードＳＢ５のＣＰＵ１ａからデータを読み出してストア要求のデータとマージし、マージしたデータをバス、クロスバーＸＢ１、およびシステムボードＳＢ４のシステムコントローラＳＣを介してシステムボードＳＢ４のメインメモリ３ａに格納させ、システムボードＳＢ０のＣＰＵ１ｂ、システムボードＳＢ０のＣＰＵ１ｂ、およびシステムボードＳＢ５のＣＰＵ１ｂの当該キャッシュラインの登録型を「共有（Ｓ）」から「無効（Ｉ）」に変更させる。
【００８０】
一方、物理番号付きメモリアクセス要求がストア要求であって、かつ共有型・更新済みデータの転送ではない場合（図７−２のステップＳ１１４，Ｎｏ）、各スヌープ制御部６は、スヌープ処理結果が「ＨＩＴ」したＣＰＵを送信元として選択して、一般的なデータ転送を実行し、データ転送に応じた登録型の更新を行う（図７−２のステップＳ１１９）。すなわち、従来のＭＯＥＳＩプロトコルに基づいたデータ転送処理を実行する。
【００８１】
以上説明したように、この実施例においては、メモリアクセス要求の要求するデータが存在するキャッシュメモリが複数存在する場合、メモリアクセス要求の種類、およびデータが存在するキャッシュメモリ毎のデータの状態を示す登録型に基づいて、データが存在するキャッシュメモリを有する送信元候補のＣＰＵの中から、メモリアクセス要求を発行した要求元のＣＰＵ、またはメモリアクセス要求の要求するデータをライトバック時にストアするライトバック対象のメインメモリと物理的な距離が最も近い送信元候補のＣＰＵを送信元のＣＰＵとして選択してデータを転送するとともに、要求元のＣＰＵおよび送信元のＣＰＵと、ライトバック対象のメインメモリとの物理的な距離に応じて登録型を移動させるようにしているため、データ転送時にバスを効率よく使用することができる。
【００８２】
また、この実施例においては、メモリアクセス要求がフェッチ要求あって、かつ共有型・更新済みのデータ転送である場合、要求元のＣＰＵのほうが、送信元のＣＰＵよりもライトバック対象のメインメモリと物理的な距離が近い場合には、要求元のＣＰＵが有するキャッシュメモリの登録型を「オーナ」に変更することで、ライトバック時にライトバック対象のメインメモリに格納するデータが存在するキャッシュメモリを、ライトバック対象のメインメモリと物理的な距離を近づけるようにしているため、ライトバック時のデータ転送時にバスを効率よく使用することができる。
【００８３】
さらに、この実施例においては、メモリアクセス要求がストア要求であって、かつ共有型・更新済みデータの転送である場合、送信元候補のＣＰＵの中から、ライトバック対象のメインメモリに物理的な距離が最も近いＣＰＵを送信元として選択するようにしているため、データ転送時にバスを効率よく使用することができる。
【００８４】
なお、この実施例においては、ＭＯＥＳＩプロトコルを用いた場合を例に挙げて説明したが、キャッシュメモリのコヒーレンシを維持するためのキャッシュプロトコルはこれに限るものではなく、登録型として「オーナ（Ｏ）」および「共有（Ｓ）」を有するキャッシュプロトコルであればよい。
【産業上の利用可能性】
【００８５】
以上のように、本発明における情報処理装置、制御装置および制御方法は、キャッシュメモリを有する複数のＣＰＵと、共有メモリを構成する複数のメインメモリとをグループ分けし、グループ毎にＣＰＵとメインメモリとを管理しキャッシュメモリ間またはキャッシュメモリとメインメモリとの間のデータ転送を制御するシステムコントローラを備える構成の大規模な情報処理装置に有用である。
【図面の簡単な説明】
【００８６】
【図１】図１は、この発明における情報処理装置の構成を示す図である。
【図２】図２は、図１に示したシステムボードの構成を示すブロック図である。
【図３】図３は、図２に示したシステムコントローラの構成を示すブロック図である。
【図４】図４は、図３に示したキャッシュ管理テーブルの構成を示す図である。
【図５】図５は、図２に示したキャッシュメモリのデータの状態の遷移を説明するための状態遷移図である。
【図６】図６は、図５に示した状態遷移図の遷移条件を説明するための図である。
【図７−１】図７−１は、この発明における情報処理装置の動作を説明するためのフローチャートである。
【図７−２】図７−２は、この発明における情報処理装置の動作を説明するためのフローチャートである。
【図８】図８は、この発明における情報処理装置の動作を説明するための図である。
【図９】図９は、この発明における情報処理装置の動作を説明するための図である。
【図１０】図１０は、この発明における情報処理装置の動作を説明するための図である。
【図１１】図１１は、この発明における情報処理装置の動作を説明するための図である。
【図１２】図１２は、この発明における情報処理装置の動作を説明するための図である。
【符号の説明】
【００８７】
１ａ，１ｂ  ＣＰＵ
２ａ，２ｂ  ＩＯ装置
３ａ，３ｂ  メインメモリ
４  メモリアクセス要求受信部
５  ブロードキャスト送受信部
６  スヌープ制御部
７  ＣＰＵリクエスト発行部
８  ＭＳアクセス発行部
９  キャッシュ管理テーブル
１１ａ，１１ｂ  キャッシュメモリ
ＳＢ０，ＳＢ１，ＳＢ２，ＳＢ３，ＳＢ４，ＳＢ５，ＳＢ６，ＳＢ７  システムボード
ＳＣ  システムコントローラ
ＸＢ０，ＸＢ１  クロスバー
【図１】
0004409619.tif 000002
【図２】
0004409619.tif 000003
【図３】
0004409619.tif 000004
【図４】
0004409619.tif 000005
【図５】
0004409619.tif 000006
【図６】
0004409619.tif 000007
【図７−１】
0004409619.tif 000008
【図７−２】
0004409619.tif 000009
【図８】
0004409619.tif 000010
【図９】
0004409619.tif 000011
【図１０】
0004409619.tif 000012
【図１１】
0004409619.tif 000013
【図１２】
0004409619.tif 000014