(57)【特許請求の範囲】
【請求項１】
それぞれがプロセッサを備えデータを処理実行する単位構成であるセルを複数備え、セルとセルとを接続する複数のプレーンを有し、各プレーンが複数のディレクトリレベルを有するディレクトリキャッシュを有する分散共有メモリ型マルチプロセッサシステムであって、
第１のプレーンをデグレードする指示に応答して、前記第１のプレーンのディレクトリキャッシュの複数のレベルのうちの一部のレベルの記憶情報を掃き出す掃出手段と、
前記掃出手段による記憶情報の掃き出し後、前記第１のプレーンへのトランザクションのパスルートを前記第１のプレーンとは異なる第２のプレーンに変更するパスルート制御手段と、
前記パスルート制御手段によるパスルートの変更後、前記第１のプレーンのディレクトリキャッシュの複数のレベルのうちの前記一部のレベル以外の他のレベルの記憶情報を前記第２のプレーンのディレクトリキャッシュに転送する転送手段と、
を備える、ことを特徴とする分散共有メモリ型マルチプロセッサシステム。
【請求項２】
前記掃き出し手段は、前記第１のプレーンのディレクトリキャッシュの複数のレベルの少なくとも前記一部のレベルへのアクセスを受け付けた状態で、前記他のレベルの記憶情報を掃き出す、
ことを特徴とする請求項１に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項３】
前記掃き出し手段は、前記第１のプレーンのディレクトリキャッシュの前記一部のレベルに関し、掃き出しが終了したエントリへのアクセスを禁止する、
ことを特徴とする請求項１又は２に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項４】
前記第１のプレーンのディレクトリキャッシュはｎ（ｎは２以上の自然数）個のレベルを有し、
前記掃出手段は、（ｎ−１）個のレベルの情報を掃き出す、
ことを特徴とする請求項１、２又は３に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項５】
前記掃出手段は、
前記第１のプレーンのディレクトリキャッシュの前記一部のレベルのアドレスを更新しつつ索引し、前記一部のレベルの各エントリから読み出した情報で特定されるキャッシュメモリが格納する最新情報をメモリに掃き出させるトランザクションを発行するトランザクション発行手段を備える、
ことを特徴とする請求項１乃至４の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項６】
前記掃出手段は、記憶情報の掃き出しが終了したエントリに、無効データを書き込む、ことを特徴とする請求項１乃至５の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項７】
前記パスルート制御手段は、トランザクションを発行する装置にロックをかけた状態で、デグレード対象の第１のプレーンへのトランザクションのパスルートを運用系の第２のプレーンに変更する、
ことを特徴とする請求項１乃至６の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項８】
パスルートを特定するためのデータを格納するルーティングテーブルを備え、
前記パスルート制御手段は、ルーティングテーブルに格納されているデータを変更することにより、デグレード対象の第１のプレーンへのトランザクションのパスルートを運用系の第２のプレーンへのパスルートに変更する、
ことを特徴とする請求項１乃至７の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項９】
前記パスルート制御手段は、デグレードしない運用系の第２のプレーンに、デグレードする第１のプレーンのトランザクションを受け付けさせる、
ことを特徴とする請求項１乃至８の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項１０】
前記パスルート制御手段は、
デグレードする第１のプレーンのトランザクションに、運用系の第２のプレーンのディレクトリキャッシュの特定のレベルを使用させ、
運用系の第２のプレーンにルーティングされていたトランザクションに、運用系の第２のディレクトリレベルの前記特定のレベル以外のレベルを使用させる、
ことを特徴とする請求項１乃至９の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項１１】
前記転送手段は、
転送の進行状況を管理する進行状況管理手段と、
転送が終了していないエントリへのアクセスを伴うトランザクションが発生する場合に、スヌープトランザクションを発行する手段と、
を備える、ことを特徴とする請求項１乃至１０の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項１２】
前記転送手段は、記憶情報の転送が終了したエントリへのアクセスを許可する、
ことを特徴とする請求項１乃至１１の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項１３】
前記転送手段は、記憶情報の転送が終了したエントリに、無効データを書き込む、ことを特徴とする請求項１乃至１２の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項１４】
複数のディレクトリレベルを有するディレクトリキャッシュと、
デグレード指示に応答して、ディレクトリキャッシュの複数のレベルの一部のレベルの記憶情報を読み出し、読み出した記憶情報により特定されるキャッシュメモリの内容をメモリに出力させるトランザクションを発行する掃出手段と、
前記掃出手段による情報の掃き出し後、前記第１のプレーンへのトランザクションのパスルートを前記第１のプレーンとは異なる第２のプレーンに変更するパスルート制御手段と、
前記パスルート制御手段によるパスルートの変更後、ディレクトリキャッシュの残りのレベルの記憶情報を前記第２のプレーンのディレクトリキャッシュに転送する転送手段と、
を備える、ことを特徴とする分散共有メモリ型マルチプロセッサシステム用のチップセット。
【請求項１５】
デグレードの指示に応答して、デグレード対象の第１のプレーンのディレクトリキャッシュの複数のレベルのうちの一部のレベルの記憶情報を読み出し、読み出した記憶情報に基づいて、最新のデータをメモリに掃き出す掃き出しステップと、
データの掃き出し後、第１のプレーンへのトランザクションのパスルートを運用系の第２のプレーンに変更するステップと、
パスルートの変更後、前記第１のプレーンのディレクトリキャッシュの複数のレベルのうちの前記一部のレベル以外の他のレベルの記憶情報を第２のプレーンのディレクトリキャッシュに転送するステップと、
を備える、ことを特徴とするプレーンデグレード方法。
【請求項１６】
各プレーンが複数のディレクトリレベルを有するディレクトリキャッシュと、プロセッサとを備え、複数のプレーンのプロセッサが相互に接続された構成を有する分散共有メモリ型マルチプロセッサシステムにおいて、
デグレードされた第１のプレーンを復旧する場合に、運用系の第２のプレーンのディレクトリキャッシュの複数のレベルのうちの一部のレベルに関し、復旧する第１のプレーン用のトランザクションにより登録された情報を掃き出す掃出手段と、
前記掃出手段による情報の掃き出し後、前記第１のプレーンへのトランザクションのパスルートを復旧するパスルート制御手段と、
前記パスルート制御手段によるパスルートの復旧後、前記第２のプレーンの複数のディレクトリキャッシュのうちの前記一部のレベル以外の他のレベルに記憶されている情報であって、復旧する第１のプレーンのトランザクションにより登録された情報を第１のプレーンのディレクトリキャッシュに転送する転送手段と、
を備える、ことを特徴とする分散共有メモリ型マルチプロセッサシステム。
【請求項１７】
この分散共有メモリ型マルチプロセッサシステムは、
デグレードされた第１のプレーンのトランザクションによる情報を、前記第２のプレーンのディレクトリキャッシュの複数のレベルのうちの所定数の第１のレベルに登録し、運用系の第２のプレーンのトランザクションによる情報を、前記第２のプレーンの複数のレベルのうちの前記第１のレベルとは異なる複数個の第２のレベルに登録し、
前記掃出手段は、前記第１のプレーンのディレクトリキャッシュの第１のレベルのうちの一部のレベルに登録されている情報を掃き出す、
ことを特徴とする請求項１６に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項１８】
前記掃出手段は、前記第２のプレーンのディレクトリキャッシュの複数のレベルのうちの前記第１のレベルのうち前記一部のレベル以外の他のレベルへのアクセスを受け付けた状態で、前記第１のレベルのうちの前記一部のレベルの記憶情報を掃き出す、
ことを特徴とする請求項１７に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項１９】
前記掃出手段は、前記第２のプレーンのディレクトリキャッシュの第１のレベル内の前記一部のレベルに関し、掃き出しが終了したエントリへのアクセスを禁止する、
ことを特徴とする請求項１７又は１８に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項２０】
前記第２のプレーンの前記ディレクトリキャッシュの前記第１のレベルはｎレベルを有し、
前記掃出手段は、前記第２のプレーンの前記ディレクトリキャッシュの第１のレベルのうちの（ｎ−１）レベルの情報を掃き出す、
ことを特徴とする請求項１７，１８又は１９に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項２１】
前記掃出手段は、前記第２のプレーンのディレクトリキャッシュの第１のレベルのうちの前記一部のレベルをアドレスを更新しつつ索引し、各エントリから読み出した情報で特定されるキャッシュメモリが格納する最新情報をメモリに掃き出させるトランザクションを発行するトランザクション発行手段を備える、
ことを特徴とする請求項１７乃至２０の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項２２】
前記掃出手段は、前記第２のプレーンのディレクトリキャッシュの前記一部のレベルに関し、記憶情報の掃き出しが終了したエントリに、無効データを書き込む、ことを特徴とする請求項１７乃至２１の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項２３】
前記パスルート制御手段は、トランザクションを発行する装置にロックをかけた状態で、復旧対象の第１のプレーンへのパスルートを復旧する、
ことを特徴とする請求項１７乃至２２の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項２４】
パスルートを特定するためのデータを格納するルーティングテーブルを備え、
前記パスルート制御手段は、ルーティングテーブルに格納されているデータを変更することにより、前記第１のプレーンへのトランザクションのパスルートを復旧する、
ことを特徴とする請求項１７乃至２３の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項２５】
前記パスルート制御手段は、前記第１のプレーンへのパスルートの復旧後、第１のプレーンのトランザクションに割り当てられていた第１のレベルにトランザクションを受け付けさせる、
ことを特徴とする請求項１７乃至２４の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項２６】
前記転送手段は、
転送の進行状況を管理する進行状況管理手段と、
転送が終了していないエントリへのアクセスを伴うトランザクションが発生する場合に、スヌープトランザクションを発行する手段と、
を備える、ことを特徴とする請求項１７乃至２５の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項２７】
前記転送手段は、転送が終了したエントリへのアクセスを許可する、
ことを特徴とする請求項１７乃至２６の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項２８】
前記転送手段は、記憶情報の転送が終了したエントリに、無効データを書き込む、ことを特徴とする請求項１７乃至２７の何れか１項に記載の分散共有メモリ型マルチプロセッサシステム。
【請求項２９】
複数のディレクトリレベルを有するディレクトリキャッシュと、
デグレードした第１のプレーンの復旧の指示に応答して、第２のプレーンに配置されているディレクトリキャッシュの複数のレベルのうち、デグレードしたプレーンのトランザクション用のｎ個のレベルのうちのｍ個のレベルの記憶情報を読み出し、読み出した記憶情報で特定されるキャッシュメモリの内容をメモリに出力させるトランザクションを発行する掃出手段と、
復旧が指示された第１のプレーンへのトランザクションのパスルートを復旧するパスルート制御手段と、
前記パスルート制御手段による第１のプレーンへのパスルートの復旧後、前記第２のプレーンのディレクトリキャッシュの前記ｎ個のレベルのうちのｍ個以外の（ｎ−ｍ）個のレベルの記憶情報を第１のプレーンのディレクトリキャッシュに転送する転送手段と、
を備える、ことを特徴とする分散共有メモリ型マルチプロセッサシステム用のチップセット。
【請求項３０】
第１のプレーンをデグレードされた状態で第２のプレーンを運用している状態から第１のプレーンを復旧して、第１と第２のプレーンを運用する状態に復帰させるプレーン復旧制御装置において、
第２のプレーンのディレクトリキャッシュの複数のレベルのうちの一部のレベルの記憶情報であって、復旧対象の第１のプレーンのトランザクションにより生成されたものを読み出し、読み出した記憶情報に基づいて、最新データを所有しているコンポーネントに、キャッシュからメモリに最新データを掃き出させるトランザクションを発行するように指示する手段と、
前記第１のプレーンへのトランザクションのパスルートを復旧するように指示する手段と、
第１のプレーンへのパスルートを復旧した後、前記第２のプレーンのディレクトリキャッシュの前記一部のレベル以外の他のレベルの記憶情報のうち復旧対象の第１のプレーンのトランザクションにより生成されたものを前記第１のプレーンのディレクトリキャッシュに転送するように指示する手段と、
を備える、ことを特徴とする分散共有メモリ型マルチプロセッサシステム用におけるプレーン復旧制御装置。
【請求項３１】
デグレードされた第１のプレーンを復旧するとの指示に応答して、
運用中の第２のプレーンのディレクトリキャッシュの複数のレベルのうちの一部のレベルの記憶情報であって、第１のプレーンのトランザクションにより登録されたものを読み出し、読み出した記憶情報に基づいて、最新のデータをメモリに掃き出す掃き出しステップと、
データの掃き出し後、第１のプレーンへのトランザクションのパスルートを復旧する復旧ステップと、
パスルートの復旧後、前記第２のプレーンのディレクトリキャッシュの前記一部のレベル以外の他のレベルの記憶情報であって第１のプレーンのトランザクションにより登録されたものを第１のプレーンのディレクトリキャッシュに転送するステップと、
を備える、ことを特徴とするプレーンデグレード方法。
【請求項３２】
請求項１乃至１３の何れか１項に記載の前記掃き出し手段とパスルート制御手段と転送手段と、請求項１６乃至２８の何れか１項に記載の前記掃き出し手段とパスルート制御手段と転送手段とを備え、
請求項１乃至１３の何れか１項に記載の前記掃出手段とパスルート制御手段と転送手段によりデグレードされたプレーンを、請求項１６乃至２８の何れか１項に記載の前記掃出手段とパスルート制御手段と転送手段とにより復旧する、
ことを特徴とする分散共有メモリ型マルチプロセッサシステム。
【請求項３３】
デグレード指示に応答して、デグレード対象のプレーンのディレクトリキャッシュの複数のレベルの一部のレベルの記憶情報を読み出し、読み出した記憶情報に基づいて、最新のデータをメモリに掃き出し、デグレード対象の第１のプレーンへのトランザクションのパスルートを運用系の第２のプレーンへのパスルートに変更し、前記デグレード対象のプレーンのディレクトリキャッシュの残りのレベルの記憶情報を第２のプレーンのディレクトリキャッシュに転送することにより、第１のプレーンをデグレードし、
第１のプレーンがデグレードした状態で運用中の第２のプレーンのディレクトリキャッシュの複数のレベルのうちの一部のレベルの記憶情報であって、第１のプレーンのトランザクションにより登録されたものを読み出し、読み出した記憶情報に基づいて、最新のデータをメモリに掃き出し、第１のプレーンへのトランザクションのパスルートを復旧し、前記第２のプレーンのディレクトリキャッシュの前記一部のレベル以外の残りのレベルの記憶情報であって第１のプレーンのトランザクションにより登録されたものを第１のプレーンのディレクトリキャッシュに転送することにより、第１のプレーンを復旧する、
ことを特徴とするプレーンデグレード・復旧方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アドレスでインタリーブされている複数のプレーンを有するディレクトリ方式の分散共有メモリ型マルチプロセッサシステムにおいて、１つのプレーンを動的にデグレードするときにそのプレーン上のディレクトリの内容を他の運用プレーン上のディレクトリにコピーするときにロック処理を少ない回数で行う制御方法と、デグレードしたプレーンを復旧する復旧方法、等に関する。
【背景技術】
【０００２】
分散共有メモリ型マルチプロセッサシステムが、例えば、特許文献１に開示されている。この種の分散共有メモリ型マルチプロセッサシステムにおいて、動的にプレーンをデグレードする場合、チップセットは、まず、ロック処理を行いプロセッサやＩＯ装置等からのトランザクションを受け付けないように設定し、チップセット内に仕掛かり中トランザクションがいない状態を作る。チップセットは、仕掛かり中トランザクションがなくなると、デグレード対象のプレーン上のディレクトリを別の運用プレーン上のディレクトリにコピーする。
【特許文献１】特開平８−３２０８２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ディレクトリ容量が大きくなると、プレーンをデグレードする際にコピーする情報量が多くなる。このため、ロック時間が長くなり、プロセッサやＩＯ装置、ソフトウエアがタイムアウトを検出してしまうことがある。タイムアウト検出を避けるためにディレクトリの管理容量を予め縮退させたり一度に行うコピー容量を減らすためにコピーを分割してコピー１回当たりのロック時間を短縮したりしている。しかし、このような手法では、制御方法や制御回路が複雑になってしまう。
【０００４】
また、ロック処理はプロセッサやＩＯ装置の処理を一時的に停止させるため、ディレクトリを分割してコピーすると、ロック回数が増加し、性能が低下してしまう。同様の問題は、一旦デグレードしたプレーンを復旧する際にも同様に発生する。
【０００５】
この発明は上記実情に鑑みてなされたものであり、簡単な構成で、性能劣化の小さいプレーンデグレード、復旧方法、分散共有メモリ型マルチプロセッサシステム等を提供することを目的とする。
また、この発明はプレーンのデグレードや復旧が容易なマルチプレーンを有するシステムや方法を提供することを他の目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、この発明の第１の観点に係る分散共有メモリ型マルチプロセッサシステムは、
それぞれがプロセッサを備えデータを処理実行する単位構成であるセルを複数備え、セルとセルとを接続する複数のプレーンを有し、各プレーンが複数のディレクトリレベルを有するディレクトリキャッシュを有する分散共有メモリ型マルチプロセッサシステムであって、
第１のプレーンをデグレードする指示に応答して、前記第１のプレーンのディレクトリキャッシュの複数のレベルのうちの一部のレベルの記憶情報を掃き出す掃出手段と、
前記掃出手段による記憶情報の掃き出し後、前記第１のプレーンへのトランザクションのパスルートを前記第１のプレーンとは異なる第２のプレーンに変更するパスルート制御手段と、
前記パスルート制御手段によるパスルートの変更後、前記第１のプレーンのディレクトリキャッシュの複数のレベルのうちの前記一部のレベル以外の他のレベルの記憶情報を前記第２のプレーンのディレクトリキャッシュに転送する転送手段と、
を備える。
【０００７】
また、この発明の第２の観点に係る分散共有メモリ型マルチプロセッサシステム用のチップセットは、
複数のディレクトリレベルを有するディレクトリキャッシュと、
デグレード指示に応答して、ディレクトリキャッシュの複数のレベルの一部のレベルの記憶情報を読み出し、読み出した記憶情報により特定されるキャッシュメモリの内容をメモリに出力させるトランザクションを発行する掃出手段と、
前記掃出手段による情報の掃き出し後、前記第１のプレーンへのトランザクションのパスルートを前記第１のプレーンとは異なる第２のプレーンに変更するパスルート制御手段と、
前記パスルート制御手段によるパスルートの変更後、ディレクトリキャッシュの残りのレベルの記憶情報を前記第２のプレーンのディレクトリキャッシュに転送する転送手段と、
を備える。
【０００８】
また、この発明の第３の観点に係るプレーンデグレード方法は、
デグレードの指示に応答して、デグレード対象の第１のプレーンのディレクトリキャッシュの複数のレベルのうちの一部のレベルの記憶情報を読み出し、読み出した記憶情報に基づいて、最新のデータをメモリに掃き出す掃き出しステップと、
データの掃き出し後、第１のプレーンへのトランザクションのパスルートを運用系の第２のプレーンに変更するステップと、
パスルートの変更後、前記第１のプレーンのディレクトリキャッシュの複数のレベルのうちの前記一部のレベル以外の他のレベルの記憶情報を第２のプレーンのディレクトリキャッシュに転送するステップと、
を備える。
【０００９】
また、この発明の第４の観点に係る分散共有メモリ型マルチプロセッサシステムは、
各プレーンが複数のディレクトリレベルを有するディレクトリキャッシュと、プロセッサとを備え、複数のプレーンのプロセッサが相互に接続された構成を有する分散共有メモリ型マルチプロセッサシステムにおいて、
デグレードされた第１のプレーンを復旧する場合に、運用系の第２のプレーンのディレクトリキャッシュの複数のレベルのうちの一部のレベルに関し、復旧する第１のプレーン用のトランザクションにより登録された情報を掃き出す掃出手段と、
前記掃出手段による情報の掃き出し後、前記第１のプレーンへのトランザクションのパスルートを復旧するパスルート制御手段と、
前記パスルート制御手段によるパスルートの復旧後、前記第２のプレーンの複数のディレクトリキャッシュのうちの前記一部のレベル以外の他のレベルに記憶されている情報であって、復旧する第１のプレーンのトランザクションにより登録された情報を第１のプレーンのディレクトリキャッシュに転送する転送手段と、
を備える。
【００１０】
この発明の第５の観点に係る分散共有メモリ型マルチプロセッサシステム用のチップセットは、
複数のディレクトリレベルを有するディレクトリキャッシュと、
デグレードした第１のプレーンの復旧の指示に応答して、第２のプレーンに配置されているディレクトリキャッシュの複数のレベルのうち、デグレードしたプレーンのトランザクション用のｎ個のレベルのうちのｍ個のレベルの記憶情報を読み出し、読み出した記憶情報で特定されるキャッシュメモリの内容をメモリに出力させるトランザクションを発行する掃出手段と、
復旧が指示された第１のプレーンへのトランザクションのパスルートを復旧するパスルート制御手段と、
前記パスルート制御手段による第１のプレーンへのパスルートの復旧後、前記第２のプレーンのディレクトリキャッシュの前記ｎ個のレベルのうちのｍ個以外の（ｎ−ｍ）個のレベルの記憶情報を第１のプレーンのディレクトリキャッシュに転送する転送手段と、
を備える。
【００１１】
また、この発明の第６の観点に係る分散共有メモリ型マルチプロセッサシステム用におけるプレーン復旧制御装置は、
第１のプレーンをデグレードされた状態で第２のプレーンを運用している状態から第１のプレーンを復旧して、第１と第２のプレーンを運用する状態に復帰させるプレーン復旧制御装置において、
第２のプレーンのディレクトリキャッシュの複数のレベルのうちの一部のレベルの記憶情報であって、復旧対象の第１のプレーンのトランザクションにより生成されたものを読み出し、読み出した記憶情報に基づいて、最新データを所有しているコンポーネントに、キャッシュからメモリに最新データを掃き出させるトランザクションを発行するように指示する手段と、
前記第１のプレーンへのトランザクションのパスルートを復旧するように指示する手段と、
第１のプレーンへのパスルートを復旧した後、前記第２のプレーンのディレクトリキャッシュの前記一部のレベル以外の他のレベルの記憶情報のうち復旧対象の第１のプレーンのトランザクションにより生成されたものを前記第１のプレーンのディレクトリキャッシュに転送するように指示する手段と、
を備える。
【００１２】
この発明の第７の観点に係るプレーンデグレード方法は、
デグレードされた第１のプレーンを復旧するとの指示に応答して、
運用中の第２のプレーンのディレクトリキャッシュの複数のレベルのうちの一部のレベルの記憶情報であって、第１のプレーンのトランザクションにより登録されたものを読み出し、読み出した記憶情報に基づいて、最新のデータをメモリに掃き出す掃き出しステップと、
データの掃き出し後、第１のプレーンへのトランザクションのパスルートを復旧する復旧ステップと、
パスルートの復旧後、前記第２のプレーンのディレクトリキャッシュの前記一部のレベル以外の他のレベルの記憶情報であって第１のプレーンのトランザクションにより登録されたものを第１のプレーンのディレクトリキャッシュに転送するステップと、
を備える。
【００１３】
また、この発明の第８の観点に係るプレーンデグレード・復旧方法は、
デグレード指示に応答して、デグレード対象のプレーンのディレクトリキャッシュの複数のレベルの一部のレベルの記憶情報を読み出し、読み出した記憶情報に基づいて、最新のデータをメモリに掃き出し、デグレード対象の第１のプレーンへのトランザクションのパスルートを運用系の第２のプレーンへのパスルートに変更し、前記デグレード対象のプレーンのディレクトリキャッシュの残りのレベルの記憶情報を第２のプレーンのディレクトリキャッシュに転送することにより、第１のプレーンをデグレードし、
第１のプレーンがデグレードした状態で運用中の第２のプレーンのディレクトリキャッシュの複数のレベルのうちの一部のレベルの記憶情報であって、第１のプレーンのトランザクションにより登録されたものを読み出し、読み出した記憶情報に基づいて、最新のデータをメモリに掃き出し、第１のプレーンへのトランザクションのパスルートを復旧し、前記第２のプレーンのディレクトリキャッシュの前記一部のレベル以外の残りのレベルの記憶情報であって第１のプレーンのトランザクションにより登録されたものを第１のプレーンのディレクトリキャッシュに転送することにより、第１のプレーンを復旧する、
ことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、ディレクトリ容量が大きくなっても、容易に動的にプレーンデグレードや復旧を行うことができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態に係る分散共有メモリ型マルチプロセッサシステムを説明する。
【００１６】
（第１の実施の形態）
本実施形態の分散共有メモリ型マルチプロセッサシステム１は、図１に示すように、複数のセル＃０と、セル＃１とから構成されている。
【００１７】
セル＃０とセル＃１とは、それぞれ、制御部、記憶部、バス等を含む構成単位であり、論理的又は物理的な基板である。
セル＃０とセル＃１は、２つ経路で互いに接続されている。この経路上にあるチップセットやインタフェースをプレーン#０とプレーン#１と呼ぶ。
【００１８】
セル＃０には、２つのディレクトリキャッシュ（メモリ）＃００、＃０１を含むチップセットと、２つの制御部＃００、＃０１が搭載されている。理解を容易にするために図示しないが、Ｉ／Ｏ装置、メモリ等も配置されている。
【００１９】
同様に、セル＃１には、ディレクトリキャッシュ（メモリ）＃１０、＃１１を含むチップセットと、２つの制御部＃１０、＃１１等が搭載されている。
【００２０】
セル＃０のディレクトリキャッシュ＃００とセル＃１のディレクトリキャッシュ＃１０とは相互に接続されており、プレーン＃０に属す。
また、セル＃０のディレクトリキャッシュ＃０１とセル＃１のディレクトリキャッシュ＃１１とは相互に接続されており、プレーン＃１に属している。
【００２１】
セル＃０の制御部＃００は、ディレクトリキャッシュ＃００に接続されており、制御部＃０１はディレクトリキャッシュ＃１０に接続されている。セル＃１の制御部＃１０は、ディレクトリキャッシュ＃１０に接続されており、制御部＃１１はディレクトリキャッシュメモリ＃１１に接続されている。
【００２２】
また、セル＃０の制御部＃００と＃０１、セル＃１の制御部＃１０と＃１１は、それぞれ、バス＃０と＃１により相互に接続されている。
【００２３】
ディレクトリキャッシュ＃００、＃０１、＃１０、＃１１は、互いに同一の構成を有する。
【００２４】
ディレクトリキャッシュ＃００、＃０１、＃１０、＃１１は、それぞれ、複数のレベル（図では、L０〜L３の４レベル）に分割されており、レベル毎にデグレードできる構造を有する。
【００２５】
制御部＃００、＃０１、＃１０、＃１１は、それぞれ、掃出機能部ＳＭと、パスルート変更機能部ＰＭと、データ転送機能部ＤＭを備える。各機能部は、プロセッサ等のハードウエアとソフトウエアとの協働により実現される。
【００２６】
次に、上記構成の分散共有メモリ型マルチプロセッサシステム１において、プレーンを動的にデグレードする処理について説明する。
【００２７】
理解を容易にするため、プレーン＃１をデグレードするときの動作を説明する。
【００２８】
プレーンを動的にデグレードする処理は、図２に示すように、デグレード対象のプレーン上にあるディレクトリキャッシュの一部のレベルの内容を掃き出す処理（ステップＳ１１）、デグレード対象プレーンにルーティングされていたトランザクションを運用（継続）プレーンにルーティングする処理（ステップＳ１２）、デグレード対象プレーン上のデグレードしなかったディレクトリキャッシュレベルの内容を運用継続プレーン上のディレクトリキャッシュにコピーする処理（ステップＳ１３）、から構成される。
【００２９】
まず、ステップＳ１１の掃出処理について説明する。
この掃出処理は、各制御部＃００〜＃１１の掃出部ＳＭが主に実行するものである。この掃出処理は、デグレード対象プレーンのディレクトリキャッシュの内容を、本来の記憶場所（図示せぬメモリ、図示せぬＩＯ装置内のレジスタ、制御部内のレジスタ等）に掃き出して（書き戻して）、これらのメモリやレジスタの内容を最新の状態に更新すると共にディレクトリキャッシュの内容を無効にする処理である。ただし、デグレードする対象のプレーンのディレクトリキャッシュ全体を掃き出すのではなく、一部のレベルの内容のみを掃き出す。
【００３０】
以下、理解を容易にするため、セル＃０の制御部＃００が、この分散共有メモリ型マルチプロセッサシステム１全体を管理するマスタ制御部に設定されていると仮定して説明する。
また、各ディレクトリキャッシュのＬ１〜Ｌ３が掃き出しの対象として予定されているものとする。
【００３１】
マスタ制御部＃００は、デグレード対象のプレーン＃１に直接接続されている制御部＃０１，＃１１の掃出機能部ＳＭに、プレーン＃１に属すディレクトリキャッシュ＃０１，＃１１のレベルＬ１〜Ｌ３を掃き出す旨を通知する。
【００３２】
この通知に応答し、制御部＃０１及び制御部＃１１の掃出部ＳＭは、各ディレクトリキャッシュ＃０１，＃１１のディレクトリレベルＬ１〜Ｌ３への新規登録を禁止する。ただし、ディレクトリレベルＬ０への登録は可能に維持し、また、既存のトランザクションの処理は継続される。
【００３３】
制御部＃０１と＃１１は、それぞれ、掃き出し対象のディレクトリレベルＬ１〜Ｌ３の記憶情報に基づいて、キャッシュからメモリに最新データを掃き出させる。
【００３４】
ディレクトリキャッシュ＃０１，＃１１の各ディレクトリレベルＬ１〜Ｌ３には、データが登録出来ないように制御されている。このため、各コンポーネントは、ディレクトリキャッシュ＃０１，＃１１に情報を登録する必要がある場合は、デグレードしないディレクトリレベルＬ０に登録する。
【００３５】
ディレクトリキャッシュ＃０１，＃１１のデグレード対象のレベルＬ１〜Ｌ３の全エントリが掃き出されると、デグレード対象のレベルＬ１〜Ｌ３に有効データが無くなる。
【００３６】
次に、第２段階のルーティング変更処理（ステップＳ１２）を説明する。
ここでは、デグレード対象プレーン（プレーン＃１）にルーティングされていたトランザクションを運用継続プレーン（プレーン＃０）にルーティングする。
【００３７】
まず、マスタ制御部＃００は、ロックトランザクションを全セルのプロセッサ＃００〜＃１１に対して発行する。各制御部＃００〜＃１１は、ロックトランザクションに応答し、新たなトランザクションの発行を停止する。
【００３８】
マスタ制御部＃００は、システム内の仕掛かり中トランザクションの有無を周期的に判別し、システム内に仕掛かり中のトランザクションが無くなったと判別すると、トランザクションをプレーン＃０に導くように、トランザクションのルーティングを切り替えるトランザクションを各制御部＃００〜＃１１に発行する。各制御部＃００〜＃１１は、受信したトランザクションをプレーン＃０に導くように設定する。
【００３９】
続いて、マスタ制御部＃００は、ロック状態の解除を各制御部＃００〜＃１１に指示する。
【００４０】
続いて手順３（ステップＳ１３）の処理を説明する。
まず、マスタ制御部＃００は、制御部＃０１，＃１１に指示し、デグレード対象プレーン＃１上のデグレードしなかったディレクトリキャッシュレベルＬ０の内容を運用継続プレーン＃０上のディレクトリキャッシュにコピーすることを指示する。
指示に応答して、制御部＃０１は、ディレクトリキャッシュ＃０１のレベルＬ０の内容を順次読み出し、バス＃０を介して制御部＃００に提供する。制御部＃００は、提供されたデータをディレクトリキャッシュ＃００のいずれかのレベルに書き込む。また、制御部＃１１は、ディレクトリキャッシュ＃１１のレベルＬ０の内容を順次読み出し、制御部＃１０に提供する。制御部＃１０は、提供された情報をディレクトリキャッシュ＃１０のいずれかのレベルに書き込む。
【００４１】
以上の処理により、プレーン＃１のデグレードが完了する。以後、プレーン＃０のみで運用される。
【００４２】
以上説明したように、本実施の形態のキャッシュレベルのデグレード方式では、ディレクトリキャッシュのコピー中に運用系処理を止める必要がない。このため処理時間に制限されない。これによりディレクトリ容量が大きくなってもＯＳ（オペレーティングシステム）などのソフトウエアに依存せず、かつ複雑な制御回路を作り込む必要なく動的にプレーンデグレードを行うことができる。また、キャッシュメモリをロックする回数が１回だけで済むため、ロックによる性能低下も最小限に抑えることができる。
【００４３】
（第２の実施形態）
上記実施の形態においては、２プレーンで動作していたシステムを１プレーンに動的にデグレードする動作を説明した。本発明は、動的にプレーンをデグレードするだけではなく、片プレーンで運用していたシステムを動的に２つのプレーンに復旧することも可能である。
以下、デグレードプレーンを動的に復旧する実施の形態について説明する。
なお、システムの構成は、図１に示す第１の実施の形態の分散共有メモリ型マルチプロセッサシステム１の構成と同一である。
【００４４】
ここでは、理解を容易にするため、第１の実施形態でデグレードしたプレーン＃１を復旧するときの動作を説明する。
【００４５】
前提として、プレーン＃０のみで運用しているディレクトリキャッシュ＃００と＃１０のディレクトリキャッシュレベルＬ０〜Ｌ３のうち、ディレクトリキャッシュレベルＬ０とＬ１は旧プレーン＃０のトランザクションに割り付けられていて、ディレクトリキャッシュレベルＬ２とＬ３はデグレードされた旧プレーン＃１のトランザクションに割り付けられているものとする。
【００４６】
復旧の手順は大まかには、図３に示すように、旧プレーン＃１のトランザクションに割り付けられている２つのディレクトリキャッシュレベルＬ２とＬ３の内の１つを掃き出す手順（手順１１：ステップＳ５１）、
全ての通常動作トランザクションがプレーン＃０にルーティングされている状態から、復旧するプレーン＃１にルーティングを戻す手順（手順１２：ステップＳ５２）、
運用系プレーン上の、ステップＳ５１で掃き出しの対象としなかったディレクトリキャッシュレベルの内容を、復旧プレーン上のディレクトリキャッシュにコピーする手順（手順１３：ステップＳ５３）と、から構成される。
【００４７】
まず、手順１１の、旧プレーン＃１のトランザクションに割り付けられている２つのディレクトリキャッシュレベルの内の１つを掃き出す方法を説明する。
【００４８】
まず、マスタ制御部＃００は、掃き出したいレベルの掃き出しを対応する制御部＃００と＃１０に指示する。ここでは、旧プレーン＃１のトランザクションに割り付けられているディレクトリキャッシュ＃００と＃１０のレベルＬ２とＬ３のうち、ディレクトリキャッシュレベルＬ３を掃き出しの対象とする。
【００４９】
制御部＃００と＃０１の掃出機能部ＳＭは、それぞれ、ディレクトリキャッシュ＃００，＃１０の掃き出し対象のレベルＬ３の内の情報を読み出し、読み出した情報に基づいて、キャッシュからメモリに最新データを掃き出させるトランザクションを発行する。これにより、最新のデータがメモリに記録される。
【００５０】
このとき通常トランザクションは運用されている状態のままである。ただし、ディレクトリキャッシュレベルのデグレードのためにアクセスされたエントリには登録出来ないように、ライトディスエイブル状態に制御し、ディレクトリキャッシュに登録する必要がある場合は復旧対象プレーンに対応するデグレードしない１つのレベルに登録させる。ここではディレクトリキャッシュレベルＬ２を登録対象に設定する。
【００５１】
また、アクセスされたエントリに、無効データを書き込む。
【００５２】
このようにして、デグレード対象レベルＬ３の全エントリが掃き出されたところで、有効データがなくなり復旧対象プレーン＃１に対応するディレクトリキャッシュの１つの有効レベルＬ２を残しデグレードすることが可能となる。
【００５３】
次に、手順１２の、全ての通常動作トランザクションがプレーン＃０にルーティングされている状態から、復旧するプレーン＃１にルーティングを戻す処理について説明する。
【００５４】
マスタ制御部＃００は、全ての制御部＃００〜＃１１や、ＩＯ装置に対して発行する。全てのプロセッサとＩＯ装置とは、ロックトランザクションを受け取るとトランザクションの発行を停止する。
【００５５】
マスタ制御部＃００は、システム内の仕掛かり中トランザクションの有無を判別し、トランザクションの処理が終了したことを確認すると、例えば、アドレスインタリーブにより、プレーン＃１用のトランザクションをプレーン＃１に転送するルートを設定する。
【００５６】
続いて、マスタ制御部＃００は、ロック状態を解除するアンロックトランザクションを全制御部＃００〜＃１１とＩ／Ｏ装置に発行する。
【００５７】
これにより、これまでアドレスインタリーブなしでプレーン＃０にルーティングしていたトランザクションを、アドレスインタリーブに従い、プレーン＃１のチップセットでも受け付けるようになる。
【００５８】
続いて、マスタ制御部＃００は、復旧されたプレーンにルーティングされるトランザクションが、そのプレーン上の特定のディレクトリレベルを使用するよう制御する。これは、後述するコピー処理用に空きのレベルを確保するためである。例えば、制御部１１は、新しくプレーン＃１にルーティングされるトランザクションはプレーン＃１上のディレクトリレベルＬ１〜Ｌ３を使用するよう制御する。ディレクトリレベルＬ０については、空き状態を維持する。
【００５９】
続いて、手順１３の、運用系プレーン上のデグレードしなかったディレクトリキャッシュレベル内容を復旧プレーン上のディレクトリキャッシュにコピーする。
【００６０】
まず、マスタ制御部＃００は、プレーン＃０のディレクトリキャッシュに掃き出されずに残っているレベルを指定する。ここでは、プレーン＃０上のディレクトリキャッシュ＃００と＃１０のディレクトリキャッシュレベルＬ２を指定する。
【００６１】
制御部＃００，＃１０は、プレーン＃０のディレクトリキャッシュ＃００，＃１０のレベルＬ２内の情報を順次読み出し、読み出した情報を、プレーン間ディレクトリコピー制御トランザクションとして、バス＃０，＃１を介して、制御部復旧対象のプレーン＃１に対してプロセッサを経由した経路で順次発行する。復旧対象プレーンにルーティングされたディレクトリコピートランザクションのデータは、対応するディレクトリキャッシュ＃０１，＃１１の、先に空けておいたレベルＬ０に書き込まれる。
【００６２】
制御部＃０１，＃１１は、ディレクトリキャッシュ＃０１と＃１１のレベルＬ０のエントリうち、コピーが完了したエントリをアクセス可能とする。
【００６３】
また、コピー元のディレクトリキャッシュ＃００と＃１０では、コピー完了後に自プレーン（＃０）に対応するトランザクションに使用させるため、コピーが完了したエントリに情報を無効化するための無効データを書き込む。
【００６４】
コピーが終了すると、プレーン＃１の復旧が完了する。一方、プレーン＃０ではディレクトリキャッシュＬ２、Ｌ３を自プレーンに対応するトランザクションに使用を許可する。以後、プレーン＃０とプレーン＃１で運用される。
【００６５】
以上説明したように、この実施の形態のプレーン復旧方法によれば、ディレクトリキャッシュのコピー中にシステムを停止する必要がない。このため処理時間に制限されない。これによりディレクトリ容量が大きくなってもＯＳ（オペレーティングシステム）などのソフトウエアに依存せず、かつ複雑な制御回路を作り込む必要なく動的にプレーンデグレードを行うことができる。また、キャッシュメモリをロックする回数が１回で済むため、ロックによる性能低下も最小限に抑えることができる。
【００６６】
（第３の実施の形態）
以下、第１の実施の形態をより具体化した、第３の実施の形態に係る分散共有メモリ型マルチプロセッサシステム２１について図面を参照して説明する。  本実施の形態の分散共有メモリ型マルチプロセッサシステム２１は、図４に示すように、セル＃０と、セル＃１と、制御部１１とから構成されている。
【００６７】
セル＃０とセル＃１とは、それぞれ、プロセッサと、メモリと、バスとを含む構成単位であり、論理的又は物理的な基板である。
セル＃０とセル＃１とは、２つ経路で接続されている。実際にはチップセットに複数のセル間インタフェースを設けることで複数のセルが接続可能である。この２つの経路はアドレスによりインタリーブされている。アドレスによるインタリーブとは、アドレスの固定ビットの値により経路を割り付けることである。この経路、即ち、セルとセルとを繋ぐ経路上にあるチップセットやインタフェースをプレーンと呼ぶ。この分散共有メモリ型マルチプロセッサシステムでは、システム内に２つのプレーン（プレーン#０、プレーン#１）を持ち、これらもアドレスによるインタリーブで動作する。
また、制御部１１は、セル＃０とセル＃１の各内部回路に接続されている。
【００６８】
セル＃０には、２つのチップセットＬＳＩ（チップセット＃０００、＃１００）と、２つのプロセッサ（プロセッサ＃００，＃０１）と、２つのメモリ（メモリ＃００，＃０１）と、２つのＩＯ装置（ＩＯ装置＃００，＃０１）、が搭載されている。
【００６９】
同様に、セル＃１には、２つのチップセットＬＳＩ（チップセット＃０１０、＃１１０）と、２つのプロセッサ（プロセッサ＃１０，＃１１）と、２つのメモリ（メモリ＃１０，＃１１）と、２つのＩＯ装置（ＩＯ装置＃１０，＃１１）と、が搭載されている。
【００７０】
セル＃０のチップセット＃０００とセル＃１のチップセット＃０１０とは、プレーン＃０に属し、セル＃０のチップセット＃１００とセル＃１のチップセット＃１１０とはプレーン＃１に属している。
【００７１】
セル＃０のプロセッサ＃００は、チップセット＃０００と、メモリ＃００と、ＩＯ装置＃００とに接続されており、プロセッサ＃０１はチップセット＃１００と、メモリ＃０１と、ＩＯ装置＃０１とに接続されている。また、セル＃１のプロセッサ＃１０はチップセット＃０１０と、メモリ＃１０と、ＩＯ装置＃１０とに接続されており、プロセッサ＃１１はチップセット＃１１０と、メモリ＃１１と、ＩＯ装置＃１１とに接続されている。
【００７２】
また、セル＃０のプロセッサ＃００と＃０１、セル＃１のプロセッサ＃１０と＃１１は、それぞれ、バス２１と２２により相互に接続されている。
【００７３】
なお、プロセッサ＃００、＃０１、＃１０、＃１１と、ＩＯ装置＃００、＃０１、＃１０、＃１１と、チップセット＃０００、＃１００、＃０１０、＃１１０と、の間のインタフェースは同一のプロトコルのインタフェースで接続されている。図４ではセル＃０と＃１に、プロセッサとＩＯ装置とが２つずつ搭載しているが、それぞれは同一のプロトコルのインタフェースを使用しているためプロセッサやＩＯ装置の数を増やすことは可能である。
【００７４】
制御部１１は、セル＃０とセル＃１とに接続され、セル＃０とセル＃１との並行動作を制御する。
【００７５】
次に、図５を参照して、チップセット＃０００、＃１００、＃０１０、＃１１０の構成について説明する。
チップセット＃０００、＃１００、＃０１０、＃１１０は、互いに同一の構成を有し、ディレクトリキャッシュ１０００と、ディレクトリ掃き出しレベルバリッド部１００と、ディレクトリ掃き出し制御部２００と、ロックトランザクション発行機能部３００と、ルーティングテーブル書き換え機能部４００と、コヒーレンシ制御機能部５００と、ルーティングテーブル６００とを備える。
【００７６】
ディレクトリキャッシュ１０００は、複数のレベルに分割されていてレベル毎にデグレードできる構造を有する。本実施形態では、４つのレベルＤＩＲ＃０００、ＤＩＲ＃００１、ＤＩＲ＃００２、ＤＩＲ＃００３に分割されている。ディレクトリキャッシュ１０００はセットアソシアティブの構成で、索引アドレスは通常のメモリアクセスに使うトランザクションが持ち回るアドレスの下位アドレスに相当する。
【００７７】
図６に模式的に示すように、ディレクトリキャッシュ１０００の各エントリには、そのエントリが有効か無効かを示す有効フラグＦ、トランザクションが持ち回るアドレスの上位アドレス、ステートメント情報、等が格納されている。索引アドレスと該索引アドレスが指定するエントリに格納されている上位アドレスとを結合（上位アドレス：索引アドレス）することでメモリアドレスが得られる。各エントリのステートメント情報は、このメモリアドレスの最新データをキャッシングしているプロセッサやＩＯ装置を特定する。
【００７８】
ディレクトリ掃き出しレベルバリッド部１００は、制御部１１の指示に応答して、ディレクトリキャッシュ１０００のどのレベルを掃き出すかを制御する。
【００７９】
ディレクトリ掃き出し制御部２００は、制御部１１の指示に応答して、ディレクトリキャッシュ１０００の各レベルを索引するためのアドレス（索引アドレス）を発行する。
【００８０】
ロックトランザクション発行機能部３００は、各プロセッサ＃０１〜＃１１，ＩＯ装置＃００〜＃１１にトランザクションの新規受け付けを停止させるロックトランザクションを発行する。
【００８１】
ルーティングテーブル書き換え機能部４００は、ルーティングテーブル６００の内容を後述するように書き替える。
【００８２】
コヒーレンシ制御機能部５００は、通常トランザクションのコヒーレンシ制御を実行すると共にディレクトリキャッシュレベルのデグレードを行う際のプロセッサやＩＯ装置のキャッシュ掃き出しトランザクションの生成やアクセスしたディレクトリエントリの無効化処理を行う。また、プレーン間でディレクトリキャッシュの内容をコピーするトランザクションを生成する機能を有する。
【００８３】
ルーティングテーブル６００は、対象トランザクションをどこのコンポーネントにルーティングするか決定する情報が設定されているテーブルである。例えば、セル０のチップセット＃１００のルーティングテーブル６００を例にとると、例えば、プロセッサ＃１１にトランザクションを送信する際に、１）チップセット＃１００→チップセット＃１１０→プロセッサ＃１１というルート、２）チップセット＃１００→プロセッサ＃０１→プロセッサ＃００→チップセット＃０００→チップセット＃０１０→プロセッサ＃１０→プロセッサ＃１１というルート、のいずれを取るかを示す情報が設定されている。
【００８４】
プロセッサ＃００，＃０１，＃１０，＃１１は、様々なトランザクションを処理するものである。プロセッサ＃００，＃０１，＃１０，＃１１は、それぞれ、ルーティングテーブル＃００，＃０１，＃１０，＃１１とキャッシュメモリ＃００，＃０１，＃１０，＃１１とを備える。
【００８５】
ルーティングテーブル＃００，＃０１，＃１０，＃１１は、ルーティングテーブル６００と同様にトランザクションの転送ルートを指定する情報を格納する。
【００８６】
キャッシュメモリ＃００，＃０１，＃１０，＃１１は、メモリ＃００，＃０１，＃１０，＃１１＃の記憶データの写し等を記憶する高速メモリである。
【００８７】
ＩＯ装置＃００，＃０１，＃１０，＃１１は、外部装置と対応するプロセッサ＃００，＃０１，＃１０，＃１１との間のデータ通信を仲介するものである。ＩＯ装置＃００，＃０１，＃１０，＃１１は、それぞれ、ルーティングテーブル＃００，＃０１，＃１０，＃１１と、キャッシュメモリ＃００，＃０１，＃１０，＃１１と、を備える。
【００８８】
なお、ルーティングテーブル６００及び７００の内容を変更するにはプロセッサやＩＯ装置にロックをかけ、システム内に仕掛かり中のトランザクションがない状態にしてテーブル書き換え指示トランザクションを発行する必要がある。
【００８９】
なお、プロセッサ＃００、＃０１、＃１０、＃１１と、ＩＯ装置＃００、＃０１、＃１０、＃１１と、チップセット＃０００、＃１００、＃０１０、＃１１０との間のインタフェースは、同一のプロトコルのインタフェースで接続されている。従って、プロセッサやＩＯ装置の数を増やすことは可能である。
【００９０】
また、図４の構成では、ＩＯ装置をプロセッサに接続しているが、チップセットにインタフェースポートを設け、このインタフェースポートにＩＯ装置を接続することも可能である。メモリ＃００、＃０１、＃１０、＃１１はプロセッサ＃００、＃０１、＃１０、＃１１に接続されていて、プロセッサ、ＩＯ装置やチップセット内にあるルーティングテーブルによってどのメモリにアクセスするか決定され、途中の経路も決定される。
【００９１】
（デグレードの処理）
次に、図２，図７乃至１３を参照して、上述した構成の分散共有メモリ型マルチプロセッサシステムにおいて、プレーンを動的にデグレードする処理について説明する。
【００９２】
理解を容易にするため、プレーン＃１をデグレードするときの動作を説明する。
【００９３】
プレーンを動的にデグレードする処理は、図２に示すように、各チップセットのディレクトリキャッシュ１０００の一部のレベルの内容を掃き出す処理（ステップＳ１１）、デグレード対象プレーンにルーティングされていたトランザクションを運用（継続）プレーンにルーティングする処理（ステップＳ１２）、デグレード対象プレーン上のデグレードしなかったディレクトリキャッシュレベルの内容を運用継続プレーン上のディレクトリキャッシュにコピーする処理（ステップＳ１３）、から構成される。
【００９４】
ます、ステップＳ１１の掃出処理について説明する。
この掃出処理は、デグレードする対象のプレーンのディレクトリキャッシュの内容を、本来の記憶場所（メモリ、ＩＯ装置内のレジスタ、プロセッサ内のレジスタ等）に掃き出して（書き戻して）、これらのメモリ・レジスタの内容を最新の状態に更新する共にディレクトリキャッシュ１０００の内容を無効にする処理である。ただし、デグレードする対象のプレーンのディレクトリキャッシュ全体を掃き出すのではなく、一部のレベルの内容のみを掃き出す。
【００９５】
ここでは、効率的にプレーンをデグレードするため、各チップセット＃０００，＃１００，＃０１０，＃１１０内のディレクトリキャッシュ１０００のレベルを１つ残して、残りの３つのレベルを掃き出す方法を説明する。
【００９６】
制御部１１にオペレータの指示等により、プレーンデグレードが指示があると、制御部１１は、各セル＃０及び＃１のデグレード対象の各プレーン（＃０，＃１）のチップセット＃０００，＃１００、＃０１０、＃１１０のディレクトリ掃き出しレベルバリッド部１００に、掃き出したいレベルのバリッドをセットする（ステップＳ１１１）。
【００９７】
ここではチップセット＃０００〜＃１１０内のディレクトリキャッシュ１０００の、１つのレベルだけ残して他の３つのレベルに格納されている情報を掃き出させるものとする。一例として、制御部１１は、図１０に模式的に示すように、ディレクトリレベルＤＩＲ＃００１、ＤＩＲ＃００２、ＤＩＲ＃００３、ＤＩＲ＃１０１、ＤＩＲ＃１０２、ＤＩＲ＃１０３、ＤＩＲ＃０１１、ＤＩＲ＃０１２、ＤＩＲ＃０１３、ＤＩＲ＃１１１、ＤＩＲ＃１１２、ＤＩＲ＃１１３を指定する。即ち、制御部１１は、チップセット＃０００のディレクトリ掃き出しレベルバリッド部１００に、ディレクトリレベル＃００１、＃００２、＃００３をバリッドとして指定し、チップセット＃１００のディレクトリ掃き出しレベルバリッド部１００に、ＤＩＲ＃１０１、ＤＩＲ＃１０２、ＤＩＲ＃１０３をバリッドとして指定し、チップセット＃０１０のディレクトリ掃き出しレベルバリッド部１００に、ディレクトリレベルＤＩＲ＃０１１、ＤＩＲ＃０１２、ＤＩＲ＃０１３をバリッドとして指定し、チップセット＃０００のディレクトリ掃き出しレベルバリッド部１００に、ディレクトリレベルＤＩＲ＃１１１、ＤＩＲ＃１１２、ＤＩＲ＃１１３をバリッドとして指定する。
【００９８】
続いて、ディレクトリキャッシュ１０００のうち、デグレードが指定されたレベルへの登録を禁止する（ステップＳ１１２）。上述の例では、ディレクトリレベルＤＩＲ＃００１、ＤＩＲ＃００２、ＤＩＲ＃００３、ＤＩＲ＃１０１、ＤＩＲ＃１０２、ＤＩＲ＃１０３、ＤＩＲ＃０１１、ＤＩＲ＃０１２、ＤＩＲ＃０１３、ＤＩＲ＃１１１、ＤＩＲ＃１１２、ＤＩＲ＃１１３への登録が禁止される。ただし、ディレクトリレベルＤＩＲ＃０００、ＤＩＲ＃１００、ＤＩＲ＃０１０、ＤＩＲ＃１１０への登録は可能であり、トランザクションの処理は順次継続される。
【００９９】
制御部１１は、ディレクトリ掃き出しレベルバリッド部１００へのディレクトリレベルの指定に連動して、ディレクトリ掃き出し制御部２００に、索引アドレスのスキャンを指示する。この指示に応答して、ディレクトリ掃き出し制御部２００は、バリッドをセットされたディレクトリレベルに対して、索引アドレスを最下位アドレス（０）に設定し（ステップＳ１１３）、アドレス０の各エントリ内の情報を読み出す（ステップＳ１１４）。
【０１００】
前述のように、ディレクトリキャッシュ１０００はセットアソシアティブの構成で、索引アドレスは通常のメモリアクセスに使うトランザクションが持ち回るアドレスの下位アドレスに相当する。ディレクトリキャッシュ１０００の各エントリにはトランザクションが持ち回るアドレスの上位アドレスが格納されており、この上位アドレスとディレクトリ索引アドレス（０〜Ｎ）と結合することでメモリアドレス（上位アドレス：０〜上位アドレス：Ｎ）を得る。また、各エントリには対応するメモリアドレスの最新データをキャッシングしているプロセッサやＩＯ装置がステータスとして管理されており、ディレクトリキャッシュ１０００は、これらの情報をコヒーレンシ制御部５００に供給する。
【０１０１】
コヒーレンシ制御機能部５００は、最新データを所有しているコンポーネント（即ち、ディレクトリキャッシュ１００から読み出されたステータスが示すコンポーネント）に、メモリアドレスを指定して、キャッシュからメモリに最新データを掃き出させるトランザクションを発行する（ステップＳ１１５）。
【０１０２】
各コンポーネントは、トランザクションを実行し、指定されたアドレス位置のキャッシュからメモリに最新データを掃き出す。例えば、上位アドレスが「１１１」，下位アドレスが「０００」とし、ステータスがＩＯ装置＃１１を示しているとすれば、ＩＯ装置＃１１が有するキャッシュメモリのメモリアドレス「１１１０００」の位置のデータをメモリに出力させる。
【０１０３】
ステップＳ１１２で、レベルデグレードのためにアクセスされた各レベルには、データが登録出来ないように制御されている。このため、各コンポーネントは、ディレクトリキャッシュに登録する必要がある場合は、デグレードしない１つのレベル（ここではディレクトリレベルＤＩＲ＃０００、ＤＩＲ＃１００、ＤＩＲ＃０１０、ＤＩＲ＃１１０）の何れかに登録する。
【０１０４】
続いて、索引アドレスが最終アドレス（Ｎ）に達しているか否かを判別し（ステップＳ１１６）、最終アドレスに達していれなければ（ステップＳ１１６；Ｎｏ）、索引アドレスを更新（＋１）して（ステップＳ１１７）、ステップＳ１１４に戻り、次のエントリについて同様の処理を実行する。
【０１０５】
索引アドレスの更新が進み、ディレクトリキャッシュ１０００のデグレード対象のあるレベルの全エントリが掃き出されると（ステップＳ１１６；Ｙｅｓ）、全てのデグレード対象レベルの処理が終了したか否かを判別し（ステップＳ１１８）、終了していない即ち他のレベルが残っている場合（ステップＳ１１８；Ｎｏ）、掃き出し対象のレベルを更新し（ステップＳ１１８）、ステップＳ１１３にリターンし、同様の処理を実行する。
【０１０６】
掃き出し対象の全てのレベルの全てのエントリの情報が読み出されて掃き出しが終了し（ステップＳ１１８；Ｙｅｓ）、対応するトランザクションが実行されると、デグレード対象のレベルに有効データが無くなり、１つの有効なレベルを残しデグレードが可能となる。
【０１０７】
次に、第２段階（ステップＳ１２）の、デグレード対象プレーン（プレーン＃１）にルーティングされていたトランザクションを運用継続プレーン（プレーン＃０）にルーティングする方法を図８を参照して説明する。
【０１０８】
制御部１１は、複数あるチップセットのうち、ロックトランザクションを発行するものを所定のセル（マスターセルと呼ぶ）の所定のチップセットに設定している。ここでは、セル＃０のチップセット＃０００とする。
【０１０９】
制御部１１は、このマスターセル（セル＃０）のチップセット＃０００のロックトランザクション発行機能部３００に、ロックトランザクションを全セルのプロセッサ＃００〜＃１１とＩＯ装置＃００〜＃１１に対して発行させる（ステップＳ１２１）。
【０１１０】
なお、制御部１１自身が、全セルのプロセッサとＩＯ装置にロックトランザクションを発行してもよい。
【０１１１】
全てのプロセッサとＩＯ装置はロックトランザクションに応答し、新たなトランザクションの発行を停止する。一方、チップセット＃０００〜＃１１０は、動作を継続し、供給されたトランザクションを順次処理する。
【０１１２】
制御部１１は、チップセット＃０００〜＃１１０のトランザクション入力バッファメモリを周期的にチェックする等して、システム内の仕掛かり中トランザクションの有無を判別する（ステップＳ１２２）。制御部１１は、システム内に仕掛かり中のトランザクションが無くなったと判別すると（ステップＳ１２２；Ｙｅｓ）、プロセッサ、ＩＯ装置、及びチップセットが持つルーティングテーブルをプレーン#０にルーティングするように書き換えるため、マスターセルのルーティングテーブル書き換え機能部４００にルーティングテーブル書き換えトランザクションの発行を指示する。この指示に応答して、マスターセル（セル＃０）のチップセット＃０００のルーティングテーブル書き換え機能部４００に、ルーティングテーブル書き換えトランザクションの発行を指示する。
【０１１３】
この指示に応答して、マスターセルのルーティングテーブル書き換え機能部４００はルーティングテーブル書き換えトランザクションを各プロセッサ、ＩＯ装置、及びチップセットに発行する（ステップＳ１２３）。各プロセッサ、各ＩＯ装置，及びチップセットのルーティングテーブル書き換え機能部４００は、受信したルーティングテーブル書き換えトランザクションを実行し、各ルーティングテーブルを、例えば、チップセット＃０１０→プロセッサ＃１１→プロセッサ＃１０→チップセット＃０１０とルートに書き換え、受信したトランザクションをプレーン＃０のチップセットに導くように設定する。これにより、図１１に模式的に示すように、デグレード対象のプレーン＃１のチップセット＃１００、＃１１０へのトランザクションのパスルートが停止（×）され、一方、運用維持プレーン＃１のチップセット＃０００と＃０１０へのパスルートは維持される。
【０１１４】
続いて、制御部１１は、マスターセルのロックトランザクション発行機能部３００に、ロック状態を解除するアンロックトランザクションを各プロセッサとＩＯ装置に発行させる（ステップＳ１２４）。各プロセッサとＩＯ装置はアンロックトランザクションを受け取ると、停止していた通常トランザクションを発行する。
【０１１５】
続いて、制御部１１は、ａ）各セルのデグレード対象ではないプレーン#０上のチップセット#０００、#０１０にアドレスインタリーブの解除を指示して、これまでプレーン#１にルーティングしていたトランザクションを受け付け、ｂ）、それまでプレーン#１にルーティングされていたトランザクションがプレーン#０上のチップセットのディレクトリキャッシュレベル#００３と#０１３を使用し、ｃ）それまでプレーン#０にルーティングされていたトランザクションはプレーン#０上のチップセットのディレクトリレベル#０００、#００１または#０１０、#０１１を使用するように制御する（ステップＳ１２５）。
【０１１６】
なお、プレーン＃１上のデグレードしなかった１つのディレクトリキャッシュレベルＤＩＲ＃１００、ＤＩＲ＃１１０の内容はプレーン＃０にまだコピーされていない。このため、ロックが解除されて新たなトランザクションが発行され、元々プレーン＃１にルーティングされていたトランザクションがプレーン＃０にルーティングされてもコヒーレンシを保つことができない。このため、チップセット＃０００と＃０１０は、それぞれ、コピーが完了したエントリのアドレスを把握し、プロセッサやＩＯ装置が発行したトランザクションについて、該トランザクションがコピー前のアドレスにアクセスするか否かを判別し、アクセスすると判別した場合には、全プロセッサと全ＩＯ装置に対してスヌープトランザクションを発行するよう制御する。
【０１１７】
スヌープトランザクションとは通常はディレクトリキャッシュを索引して最新データの所在を確認しそのコンポーネントのキャッシュに対して最新データを取りに行くトランザクションである。ただし、このケースではディレクトリキャッシュがまだコピーされていないため全てのプロセッサやＩＯ装置のキャッシュに対して最新データを持っているかの確認を行うトランザクションである。確認してどのプロセッサやＩＯ装置も最新データを持っていなかった場合はメモリが最新データとなる。
【０１１８】
続いて手順３（ステップＳ１３）のコピー処理を図９を参照して説明する。
デグレード対象プレーン＃１上のデグレードしなかったディレクトリキャッシュレベルＤＩＲ＃１００，＃１１０の内容をもう一つの運用継続プレーン＃０上のディレクトリキャッシュ１０００にコピーする（ステップＳ１３）。このコピーの手順を、図１２を参照して説明する。ここでは、前述のように、デグレード対象プレーン＃１から運用継続プレーン＃０にコピーすることになる。
【０１１９】
まず、制御部１１は、ディレクトリ掃き出し制御部２００にプレーン＃１上のチップセット＃１００，＃１１０内にまだデグレードせずに残っているディレクトリキャッシュレベル（ディレクトリレベルＤＩＲ＃１００とＤＩＲ＃１１０）を指定し、そのうちの１つを処理対象として特定すると共にその全エントリの索引を指示する（ステップＳ１３１）。
【０１２０】
この指示に応答して、ディレクトリ掃き出し制御部２００は、特定されたディレクトリレベルの下位アドレス「０」を出力して索引し、アドレス「０」のエントリに格納されている情報（エントリ情報）を読み出し、コヒーレンシ制御機能部５００に供給する（ステップＳ１３２）。
【０１２１】
さらに、制御部１１は、コヒーレンシ制御機能部５００に、ディレクトリキャッシュ１０００から読み出されたエントリ情報を、運用継続プレーン＃０にプロセッサ経路で送信することを指示する。
【０１２２】
指示に応答して、コヒーレンシ制御機能部５００は、ディレクトリキャッシュ１０００から読み出されたエントリ情報を、プレーン間ディレクトリコピー制御トランザクションとして運用継続プレーン＃０に対してプロセッサを経由した経路で発行する（ステップＳ１３３）。
【０１２３】
具体的に説明すると、図１２に模式的に示すように、チップセット＃１００は、ディレクトリキャッシュレベル＃１００から読み出されたエントリ情報を、プレーン間ディレクトリコピー制御トランザクションとして、ルート情報を付してプロセッサ＃０１に提供する。プロセッサ＃０１は、ルート情報に従って、このトランザクションをプロセッサ＃００に供給し、さらに、プロセッサ＃００は、これをプレーン０のチップセット＃０００に供給する。同様に、チップセット＃１１０は、ディレクトリキャッシュレベル＃１１０から読み出されたエントリ情報を、プロセッサ＃１１を介して、プロセッサ＃１０に供給し、さらに、プロセッサ＃１０は、これをチップセット＃０１０に供給する。
【０１２４】
プレーン０のチップセット＃０００，＃０１０は、プレーン＃０にルーティングされたディレクトリコピートランザクションのデータを、チップセット＃０００，＃０１０内の任意のディレクトリキャッシュレベルにライトする。例えば、チップセット＃０００は、プロセッサ＃００を介して供給されたディレクトリコピートランザクションのデータを何れかのディレクトリレベルに書き込む。前述のように、プレーン＃１から転送されたトランザクション用にディレクトリレベルＤＩＲ＃００２とＤＩＲ＃００３、及びＤＩＲ＃０１２とＤＩＲ＃０１３とが設定されている。このため、例えば、これら２つのディレクトリキャッシュレベルのうちの１つ、例えば、ＤＩＲ＃００２とＤＩＲ＃０１２にライトする。
【０１２５】
可動継続プレーン＃０のディレクトリキャッシュ１０００のコピーが完了したエントリはアクセス可能となる。このため、通常トランザクションのアクセスを許可する（ステップＳ１３４）。即ち、そのエントリへのアクセスがあった際に、スヌープトランザクションを発行する対象から除外する。
【０１２６】
デグレード対象（コピー元）プレーン＃１のディレクトリキャッシュ１０００のレベルＤＩＲ＃１００とＤＩＲ＃１１０ではデグレードプレーンの復旧に備えてコピー完了エントリの情報無効化のため無効データ（無効フラグ）を書き込む（ステップＳ１３５）。
【０１２７】
続いて、索引アドレスが最終アドレス（Ｎ）に達しているか否かを判別し（ステップＳ１３６）、最終アドレスに達していれなければ（ステップＳ１３６；Ｎｏ）、索引アドレスを更新（＋１）して、ステップＳ１３４に戻り、次のエントリについて同様の処理を実行する。
【０１２８】
索引アドレスの更新が進み、特定されたレベルの全エントリのコピーが終了すると（ステップＳ１３６；Ｙｅｓ）、コピー処理が終了したか否かを判別し（ステップＳ１３８）、終了していない（コピー対象の他のレベルが残っている）場合（ステップＳ１３８；Ｎｏ）、掃き出し対象（コピー対象）のレベルを更新し（ステップＳ１３９）、ステップＳ１３２にリターンし、同様の処理を実行する。
【０１２９】
以上で、プレーン＃１のデグレードが完了する。以後、図１３に模式的に示すように、プレーン＃０のみで運用される。
【０１３０】
以上説明したように、本実施の形態のキャッシュレベルのデグレード方式では、ディレクトリキャッシュのコピー中に運用系処理を止める必要がない。このため処理時間に制限されない。これによりディレクトリ容量が大きくなってもＯＳ（オペレーティングシステム）などのソフトウエアに依存せず、かつ複雑な制御回路を作り込む必要なく動的にプレーンデグレードを行うことができる。
【０１３１】
また、キャッシュメモリをロックする回数が１回だけで済むため、ロックによる性能低下も最小限に抑えることができる。
【０１３２】
（第４の実施形態）
次に、第２の実施の形態をより具体化した第４の実施の形態に係るデグレードプレーンを動的に復旧する方法を説明する。
【０１３３】
なお、システムの構成は、図４〜図６を参照して説明した第３実施形態と同一である。
【０１３４】
ここでは、理解を容易にするため、デグレードしたプレーン＃１を復旧するときの動作を説明する。
【０１３５】
前提として、片プレーンで運用しているチップセット＃０００内のディレクトリキャッシュ１０００の各レベルは、ディレクトリキャッシュレベルＤＩＲ＃０００とＤＩＲ＃００１は旧プレーン＃０のトランザクションに割り付けられていて、ディレクトリキャッシュレベルＤＩＲ＃００２とＤＩＲ００３＃はデグレードされた旧プレーン＃１のトランザクションに割り付けられているものとする。同様に、チップセット＃０１０のディレクトリキャッシュ１０００の各レベルは、ディレクトリキャッシュレベルＤＩＲ＃０１０とＤＩＲ＃０１１は旧プレーン＃０のトランザクションに割り付けられていて、ディレクトリキャッシュレベルＤＩＲ＃０１２とＤＩＲ＃０１３＃はデグレードされた旧プレーン＃１のトランザクションに割り付けられているものとする。
【０１３６】
復旧の手順は大まかには、図３に示すように、旧プレーン＃１トランザクションに割り付けられている２つのディレクトリキャッシュレベルＤＩＲ＃００２とＤＩＲ＃００３、＃０１２とＤＩＲ＃０１３、の内１つを掃き出す手順（手順１１：ステップＳ５１）、
次に、全ての通常動作トランザクションがプレーン＃０にルーティングされている状態からこれから復旧するプレーン＃１にルーティングを戻す手順（手順１２：ステップＳ５２）、
続いて、運用系プレーン上の、ステップＳ５１で掃き出しの対象としなかったディレクトリキャッシュレベルの内容を、復旧プレーン上のディレクトリキャッシュにコピーする手順（手順１３：ステップＳ５３）と、から構成される。
【０１３７】
次に、手順１１の、旧プレーン＃１のトランザクションに割り付けられている２つのディレクトリキャッシュレベルの内１つを掃き出す方法を図１４を参照して説明する。
【０１３８】
まず、制御部１１は、ディレクトリ掃き出しレベルバリッド部１００に掃き出したいレベルのバリッドをセットする（ステップＳ５１１）。ここでは、図１７に模式的に示すように、現在運用しているプレーン＃０上のチップセット＃０００と＃０１０のディレクトリキャッシュレベルＤＩＲ＃００３とＤＩＲ＃０１３とを掃き出しの対象とする。
【０１３９】
これに連動して、ディレクトリ掃き出し制御部２００は、バリッドをセットされたディレクトリレベルに対して索引アドレスを最下位アドレス（０）に設定し（ステップＳ５１２）、掃き出し対象のレベルＤＩＲ＃００３とＤＩＲ＃０１３の索引アドレスで指定されるエントリ内の情報を読み出す（ステップＳ５１３）。
【０１４０】
コヒーレンシ制御機能部５００は、ステップＳ５１３で情報を読み出した各エントリのデータに基づいて、最新データを所有しているコンポーネントに対して、キャッシュからメモリに最新データを掃き出させるトランザクションを発行する。これにより、最新のデータがメモリに記録される。
【０１４１】
このとき通常トランザクションは運用されている状態のままである。ただし、ディレクトリキャッシュレベルのデグレードのためにアクセスされたエントリには登録出来ないように、エントリ単位でライトディスエイブル状態に制御し（ステップＳ５１４）、ディレクトリキャッシュ１０００に登録する必要がある場合は復旧対象プレーンに対応するデグレードしない１つのレベルに登録させる。ここではディレクトリキャッシュレベル＃００３、＃０１３を登録対象に設定する。
【０１４２】
また、アクセスされたエントリに、無効データを書き込む（ステップＳ５１５）。次に、索引アドレスが終了したか否かを判別し（ステップＳ５１６）、終了していなければ（ステップＳ５１６；Ｎｏ）、索引アドレスを更新し（ステップＳ５１７）、ステップＳ５１３にリターンして、次のエントリについて同様の処理を行う。
【０１４３】
一方、ステップＳ５１６で、索引アドレスが終了している（最大値）であると判別された場合（ステップＳ５１６；Ｙｅｓ）、１レベルについての処理が終了したので、掃き出し処理が終了したか否かを判別する（ステップＳ５１８）。未処理のレベルが残っていれば、ステップＳ５１８でＮｏと判別され、掃き出し対象のレベルを更新して（ステップＳ５１９）、ステップＳ５１２に戻り、同様の処理を行う。本例の場合、掃き出し対象のレベルが、チップセット＃０００と＃０１０でそれぞれ１個だけなので、１つのレベルについて処理が終了すると、ステップＳ５１９でＹｅｓと判別され、処理は終了する。
【０１４４】
このようにして、デグレード対象レベルの全エントリが掃き出されたところで、有効データがなくなり復旧対象プレーンに対応するディレクトリキャッシュの１つの有効レベルを残しデグレードすることが可能となる。
【０１４５】
次に、手順１２の、全ての通常動作トランザクションがプレーン＃０にルーティングされている状態から、復旧するプレーン＃１にルーティングを戻す方法を図１５を参照して説明する。
【０１４６】
制御部１１は、マスターセル（セル＃０）に指示し、このセルのチップセット（＃０００）のロックトランザクション発行機能部３００にロックトランザクションを全セルのプロセッサとＩＯ装置に対して発行することを指示する。この指示に応答して、ロックトランザクション発行機能部３００は、全てのプロセッサとＩＯ装置にロックトランザクションを発行する（ステップＳ５２１）。全てのプロセッサとＩＯ装置とは、ロックトランザクションを受け取るとトランザクションの発行を停止する。
【０１４７】
制御部１１は、システム内の仕掛かり中トランザクションの有無を判別し（ステップＳ５２２）、トランザクションの処理が終了したことを確認すると（ステップＳ５２２；Ｙｅｓ）、プロセッサとＩＯ装置とチップセットが持つルーティングテーブル６００，７００をアドレスインタリーブに従い、プレーン＃１にルーティングするように書き換えるため、マスターセルのルーティングテーブル書き換え機能部４００に、ルーティングテーブル書き換えトランザクションを発行する（ステップＳ５２３）。これにより、各ルーティングテーブルには、アドレスにより、プレーン＃１用のトランザクションをプレーン＃１に転送するルートが設定される。
【０１４８】
続いて、マスターセルのロックトランザクション発行機能部３００は、ロック状態を解除するアンロックトランザクションを発行する（ステップＳ５２４）。各プロセッサとＩＯ装置はアンロックトランザクションを受け取ると、停止していた通常トランザクションを新しいルーティングテーブルに従い発行する。
【０１４９】
これにより、図１８に模式的に示すように、これまでアドレスインタリーブなしでプレーン＃０にルーティングしていたトランザクションを、アドレスインタリーブに従い、プレーン＃１のチップセット＃１００，＃１１０でも受け付けるようになる。
【０１５０】
続いて、制御部１１は、復旧されたプレーンにルーティングされるトランザクションが、そのプレーン上のチップセットの特定のディレクトリレベルを使用するよう制御する（ステップＳ５２４）。これは、後述するコピー処理用に空きのレベルを確保するためである。本例の場合、制御部１１は、図１８に模式的に示すように、新しくプレーン＃１にルーティングされるトランザクションはプレーン＃１上のチップセット＃１００と＃１１０のディレクトリレベル＃１０１、＃１０２、＃１０３またはディレクトリレベル＃１１１、＃１１２、＃１１３を使用するよう制御する。ディレクトリレベル＃１００、＃１１０については、空き状態を維持する。
【０１５１】
なお、この段階では、プレーン＃０上のデグレードしなかったプレーン＃１対応の１つのディレクトリキャッシュレベルＤＩＲ＃００２とＤＩＲ＃０１２の内容はプレーン＃１上のディレクトリキャッシュにまだコピーされていない。このため、そのままでは、復旧前にプレーン＃０にルーティングされていたトランザクションがプレーン＃１にルーティングされてもコヒーレンシを保つことができない。そこで、プレーン＃１のチップセット＃１００と＃１１０は、プロセッサやＩＯ装置からの各トランザクションが、コピー前のアドレスにアクセスするか否かを判別し、アクセスすると判別した場合には、全プロセッサとＩＯ装置に対してスヌープトランザクションを発行するよう制御する。
【０１５２】
続いて、手順１３の、運用系プレーン上のデグレードしなかったディレクトリキャッシュレベル内容を復旧プレーン上のディレクトリキャッシュにコピーする方法を図１６を参照して説明する。
【０１５３】
この手順では、まず、制御部１１は、プレーン＃０のディレクトリキャッシュに掃き出されずに残っているレベルを指定する（ステップＳ５３１）。ここでは、プレーン＃０上のチップセット＃０００と＃０１０のディレクトリキャッシュレベルＤＩＲ＃００２とＤＩＲ＃０１２を指定する。
【０１５４】
続いて、索引アドレスを最小値（０）に設定し（ステップＳ５３２）、レベルＤＩＲ＃００２とＤＩＲ＃０１２の索引アドレスで指定されるエントリ内の情報を読み出す（ステップＳ５３３）。
【０１５５】
コヒーレンシ制御機能部５００は、読み出されたエントリ情報を、プレーン間ディレクトリコピー制御トランザクションとして、復旧対象のプレーン＃１に対してプロセッサを経由した経路で順次発行する。復旧対象プレーンにルーティングされたディレクトリコピートランザクションのデータは、対応するチップセット内のディレクトリキャッシュレベルに書き込まれる。
【０１５６】
具体的に説明すると、図１９に模式的に示すように、セル＃０のチップセット＃０００のコヒーレンシ制御機能部５００は、ディレクトリレベル＃００２の該当エントリから読み出した情報をディレクトリコピートランザクションとして、プロセッサ＃００を介してプロセッサ＃０１に送る。プロセッサ＃０１は、プレーン＃１にルーティングされたディレクトリコピートランザクションのデータを、チップセット＃１００内のディレクトリキャッシュレベルＤＩＲ＃１００にライトする。同様に、ディレクトリレベルＤＩＲ＃０１２から読み出された情報は、プロセッサ＃１０と＃１１を介して、チップセット＃１１０内のディレクトリレベルＤＩＲ＃１１０にライトされる。
【０１５７】
コピーが完了したエントリはアクセス可能となる。このため、各チップセット＃０００，＃１００，＃０１０，＃１１０は、コピーが完了したエントリへの通常トランザクションのアクセスを許可する（ステップＳ５３４）。
【０１５８】
また、コピー元のディレクトリキャッシュでは、コピー完了後に自プレーン（＃０）に対応するトランザクションに使用させるため、コピー完了エントリの情報無効化のため無効データを書き込む（フラグＦを無効を示す値とする）（ステップＳ５３５）。
【０１５９】
次に、索引アドレスが終了したか否かを判別し（ステップＳ５３６）、終了していなければ（ステップＳ５３６；Ｎｏ）、索引アドレスを更新し（ステップＳ５３７）、ステップＳ５３３にリターンして、次のエントリについて同様の処理を行う。
【０１６０】
一方、ステップＳ５３６で、索引アドレスが終了している（最大値＝Ｎ）であると判別された場合（ステップＳ５３６；Ｙｅｓ）、１個のディレクトリレベルについての処理が終了したので、コピー処理が終了したか否かを判別する（ステップＳ５３８）。未処理のディレクトリレベルが残っていれば、ステップＳ５３８でＮｏと判別され、コピー対象のレベルを更新して（ステップＳ５３９）、ステップＳ５３２に戻り、同様の処理を行う。本例の場合、コピー対象のディレクトリレベルが、チップセット＃０００と＃０１０でそれぞれレベルＤＩＲ＃００２とＤＩＲ＃０１２の１個ずつなので、１つのレベルについて処理が終了すると、ステップＳ５３９でＹｅｓと判別され、処理は終了する。
【０１６１】
対象レベルの全てのエントリを索引してコピーが終了すると、プレーン＃１の復旧が完了する。一方、プレーン＃０ではディレクトリキャッシュ＃００２、＃００３、＃０１２、＃０１３を自プレーンに対応するトランザクションに使用を許可する。以後、図２０に模式的に示すように、プレーン＃０とプレーン＃１で運用される。
【０１６２】
以上説明したように、この第２の実施の形態のプレーン復旧方法によれば、ディレクトリキャッシュのコピー中にシステムを停止する必要がない。このため処理時間に制限されない。これによりディレクトリ容量が大きくなってもＯＳ（オペレーティングシステム）などのソフトウエアに依存せず、かつ複雑な制御回路を作り込む必要なく動的にプレーンデグレードを行うことができる。
【０１６３】
また、キャッシュメモリをロックする回数が１回で済むため、ロックによる性能低下も最小限に抑えることができる。
【０１６４】
なお、この発明は、上記実施の形態に限定されず、種々の変形及び応用が可能である。
【０１６５】
例えば、上記実施の形態では、ディレクトリキャッシュのレベル数を４としたが、ディレクトリキャッシュのレベル数は任意であり、例えば、８，１６等でもよい。
【０１６６】
また、プレーンをデグレードする際に、掃き出しの対象とするディレクトリキャッシュのレベル数とコピーの対象とするレベル数も任意である。ただし、レベル数をｎとすれば、掃き出しの対象レベルをｎ−１個とし、コピーの対象を１個とすることが望ましい。
【０１６７】
また、プレーンをデグレードする際に、全てのチップセットについて、３つのディレクトリレベルを掃き出しの対象としたが、デグレードする対象のプレーン＃１のチップセットのディレクトリレベルのみ掃き出しの対象としてもよい。
【０１６８】
また、プレーン数を２としたが、プレーン数は２に限定されず、３以上でもよい。
【０１６９】
また、本発明は、アドレスインタリーブによる２プレーン構成ではなくプロセッサ固定割り付けの２プレーン構成の装置にも適用可能である。
【図面の簡単な説明】
【０１７０】
【図１】本発明の第１及び第２の実施の形態に係る分散共有メモリ型マルチプロセッサシステムの構成を示すブロック図である。
【図２】第１と第３の実施の形態において、プレーンデグレード処理全体の手順を説明するためのフローチャートである。
【図３】第１と第３の実施の形態において、デグレードしたプレーンを復旧する処理全体の手順を説明するためのフローチャートである。
【図４】本発明の実施形態に係る分散共有メモリ型マルチプロセッサシステムの構成を示すブロック図である。
【図５】チップセットの構成例を示すブロック図である。
【図６】ディレクトリキャッシュの構成例を示す図である。
【図７】図２に示す掃出処理の詳細を説明するためのフローチャートである。
【図８】図２に示すルーティング変更処理の詳細を説明するためのフローチャートである。
【図９】図２に示すコピー処理の詳細を説明するためのフローチャートである。
【図１０】掃き出し処理を説明するための概念図である。
【図１１】ルーティング変更処理を説明するための概念図である。
【図１２】コピー処理を説明するための概念図である。
【図１３】プレーン＃１のデグレードが完了した状態を説明するための概念図である。
【図１４】図３に示す掃出処理の詳細を説明するためのフローチャートである。
【図１５】図３に示すルーティング変更処理の詳細を説明するためのフローチャートである。
【図１６】図３に示すコピー処理の詳細を説明するためのフローチャートである。
【図１７】掃き出し処理を説明するための概念図である。
【図１８】ルーティング変更処理を説明するための概念図である。
【図１９】コピー処理を説明するための概念図である。
【図２０】プレーン＃１を復旧した２プレーン状態を説明するための図である。
【符号の説明】
【０１７１】
１    分散共有メモリ型マルチプロセッサシステム
１００  ディレクトリレベル掃き出しレベルバリッド部
２００  ディレクトリ掃き出し制御部
３００  ロックトランザクション発行機能部
４００  ルーティングテーブル書き換え機能部
５００  コヒーレンシ制御機能部
６００，７００  ルーティングテーブル
１０００  ディレクトリキャッシュ
【図１】
0004892746.tif 000002
【図２】
0004892746.tif 000003
【図３】
0004892746.tif 000004
【図４】
0004892746.tif 000005
【図５】
0004892746.tif 000006
【図６】
0004892746.tif 000007
【図７】
0004892746.tif 000008
【図８】
0004892746.tif 000009
【図９】
0004892746.tif 000010
【図１４】
0004892746.tif 000011
【図１５】
0004892746.tif 000012
【図１６】
0004892746.tif 000013
【図１０】
0004892746.tif 000014
【図１１】
0004892746.tif 000015
【図１２】
0004892746.tif 000016
【図１３】
0004892746.tif 000017
【図１７】
0004892746.tif 000018
【図１８】
0004892746.tif 000019
【図１９】
0004892746.tif 000020
【図２０】
0004892746.tif 000021