(57)【要約】【課題】ノードコントローラの障害によるシステム停止時間を短縮することが可能なマルチプロセッサシステムを提供することにある。【解決手段】第一ノードコントローラと第二ノードコントローラは、リクエストに含まれるアクセス先のメモリアドレスに基づいて、リクエストの送信先の識別子を決定する第一、及び第二リクエスト制御部と、第一リクエスト制御部へリクエストを出力すべきリクエストの送信先の識別子を記憶する第一レジスタと、第二リクエスト制御部へリクエストを出力すべきリクエストの送信先の識別子を記憶する第二レジスタと、リクエストを受信すると、リクエストの送信先の識別子と、第一、及び第二レジスタに設定された識別子に基づいて、第一、第二リクエスト制御部のいずれかにリクエストの出力先を決定する第一ルーティングテーブルと、第一、第二リクエスト制御部の決定した送信先の識別子に基づいて、送信先の識別子に対応する信号線を選択して、リクエストを送信する第二ルーティングテーブルと、を備える。【選択図】図５
2010231723.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードを備え、
前記複数のノードの各々は、複数のプロセッサと、前記複数のプロセッサに対応して接続された複数のメモリと、前記複数のプロセッサと接続され互いに冗長関係にある第一ノードコントローラと第二ノードコントローラとを具備し、
前記各ノードの複数のプロセッサと、前記第一ノードコントローラと、前記第二ノードコントローラとは、それぞれ一意に定められた識別子を付与されており、
前記第一ノードコントローラと第二ノードコントローラは、
リクエストに含まれるアクセス先のメモリアドレスに基づいて、前記リクエストの送信先の識別子を決定する第一リクエスト制御部、及び第二リクエスト制御部と、
前記第一リクエスト制御部へ前記リクエストを出力すべき前記リクエストの送信先の識別子を記憶する第一レジスタと、
前記第二リクエスト制御部へ前記リクエストを出力すべき前記リクエストの送信先の識別子を記憶する第二レジスタと、
前記リクエストを受信すると、前記リクエストの送信先の識別子と、前記第一レジスタ、及び前記第二レジスタに設定された識別子に基づいて、前記第一リクエスト制御部か前記第二リクエスト制御部のいずれかに前記リクエストの出力先を決定する第一ルーティングテーブルと、
前記第一リクエスト制御部、あるいは前記第二リクエスト制御部の決定した前記送信先の識別子に基づいて、前記送信先の識別子に対応する信号線を選択して、前記リクエストを送信する第二ルーティングテーブルと
を備えるマルチプロセッサシステム。
【請求項２】
請求項１に記載のマルチプロセッサシステムであって、
前記第一ルーティングテーブルは、前記リクエストに含まれる当該リクエストの送信先を示す識別子と、前記第一レジスタ、及び前記第二レジスタに設定された識別子とが一致するかを判定して、前記リクエストの送信先を示す識別子と前記第一レジスタに設定された識別子とが一致する場合、前記第一レジスタに対応する前記第一リクエスト制御部を、前記リクエストの出力先と決定し、前記リクエストの送信先を示す識別子と前記第二レジスタに設定された識別子とが一致する場合、前記第二レジスタに対応する前記第二リクエスト制御部を、前記リクエストの出力先と決定する
マルチプロセッサシステム。
【請求項３】
請求項２に記載のマルチプロセッサシステムであって、
前記各ノードの前記第一ノードコントローラは、前記第二ノードコントローラに障害が発生すると、前記第二レジスタへ、前記第二ノードコントローラの識別子を設定する
マルチプロセッサシステム。
【請求項４】
請求項３に記載のマルチプロセッサシステムであって、
前記各ノードの備える前記複数のプロセッサの各々は、前記リクエストの送信先の識別子を決定するプロセッサルーティングテーブルを備え、
前記複数のノードのうち前記障害の発生した障害ノードの前記各プロセッサは、前記障害ノードの前記第二コントローラ宛の前記リクエストを前記障害ノードの前記第一コントローラ宛へ出力するように前記プロセッサルーティングテーブルの設定を変更し、
前記複数のノードのうち前記障害ノード以外のノードの備える前記第一ノードコントローラ、及び前記第二ノードコントローラは、前記障害ノードの前記第二コントローラ宛の前記リクエストを、前記障害ノードの前記第一ノードコントローラ宛へ出力するように前記第二ルーティングテーブルの設定を変更する
マルチプロセッサシステム。
【請求項５】
請求項４に記載のマルチプロセッサシステムであって、
第一リクエスト制御部と第二リクエスト制御部とは、それぞれ、前記リクエストに含まれるアクセス先のメモリアドレスに基づいて前記リクエストの送信先の識別子を決定するアドレスデコーダを備え、
前記障害ノードの前記第一リクエスト制御部は、前記第一リクエスト制御部の備えるアドレスデコーダの前記メモリアドレスの範囲を、前記第二リクエスト制御部の備えるアドレスデコーダの前記メモリアドレスの範囲を含むように設定を変更する
マルチプロセッサシステム。
【請求項６】
請求項２から請求項５までのいずれかに記載のマルチプロセッサシステムであって、
前記リクエストの送信先の識別子において参照するべきビットのビット位置を記録した第三レジスタをさらに備え、
前記ルーティングテーブルは、前記リクエストの含む送信先の識別子が、前記第一レジスタに設定された識別子と前記第二レジスタに設定された識別子とのいずれにも一致する場合、前記第三レジスタに設定された前記ビット位置基づいて前記リクエストの出力先を前記第一リクエスト制御部か前記第二リクエスト制御部かのいずれかに決定する
マルチプロセッサシステム。
【請求項７】
請求項６に記載のマルチプロセッサシステムであって、
前記ルーティングテーブルは、前記リクエストの含む送信先の識別子が、前記第一レジスタに設定された識別子と前記第二レジスタに設定された識別子とのいずれにも一致しない場合、前記ルーティングテーブルに記録されたデータを参照して転送先を決定する
マルチプロセッサシステム。
【請求項８】
請求項１〜請求項７までのいずれかに記載のマルチプロセッサシステムで使用されるノードコントローラ。
【請求項９】
複数のノードを備え、
前記複数のノードの各々は、複数のプロセッサと、前記複数のプロセッサに対応して接続された複数のメモリと、前記複数のプロセッサと接続され互いに冗長関係にある第一ノードコントローラと第二ノードコントローラとを具備するマルチプロセッサシステムにおいて、
前記各ノードの複数のプロセッサと、前記第一ノードコントローラと、前記第二ノードコントローラとは、それぞれ一意に定められた識別子を付与されており、
前記第一ノードコントローラと第二ノードコントローラは、
リクエストに含まれるアクセス先のメモリアドレスに基づいて、前記リクエストの送信先の識別子を決定するステップと、
前記第一リクエスト制御部へ前記リクエストを出力すべき前記リクエストの送信先の識別子を第一レジスタへ記憶するステップと、
前記第二リクエスト制御部へ前記リクエストを出力すべき前記リクエストの送信先の識別子を第二レジスタへ記憶するステップと、
前記リクエストを入力すると、前記リクエストの送信先の識別子と、前記第一レジスタ、及び前記第二レジスタに設定された識別子に基づいて、前記第一リクエスト制御部か前記第二リクエスト制御部のいずれかに前記リクエストの出力先を決定するステップと、
前記第一リクエスト制御部、あるいは前記第二リクエスト制御部の決定した前記送信先の識別子に基づいて、前記送信先の識別子に対応する信号線を選択して、前記リクエストを送信するステップと
を備えるマルチプロセッサシステムの障害回復方式。
【請求項１０】
請求項９に記載のマルチプロセッサシステムの障害回復方式であって、前記リクエストの出力先を決定するステップは、
前記リクエストに含まれる当該リクエストの送信先を示す識別子と、前記第一レジスタ、及び前記第二レジスタに設定された識別子とが一致するかを判定するステップと、
前記リクエストの送信先を示す識別子と前記第一レジスタに設定された識別子とが一致する場合、前記第一レジスタに対応する前記第一リクエスト制御部を、前記リクエストの出力先と決定するステップと、
前記リクエストの送信先を示す識別子と前記第二レジスタに設定された識別子とが一致する場合、前記第二レジスタに対応する前記第二リクエスト制御部を、前記リクエストの出力先と決定するステップと
を含むマルチプロセッサシステムの障害回復方式。
【請求項１１】
請求項１０に記載のマルチプロセッサシステムの障害回復方式であって、
前記第二ノードコントローラに障害が発生すると、前記第一ノードコントローラの前記第二レジスタへ、前記第二ノードコントローラの識別子を設定するステップ
をさらに備えるマルチプロセッサシステムの障害回復方式。
【請求項１２】
請求項１１に記載のマルチプロセッサシステムの障害回復方式であって、
前記各ノードの備える前記複数のプロセッサの各々は、前記リクエストの送信先の識別子を決定するプロセッサルーティングテーブルを備え、
前記複数のノードのうち前記障害の発生した障害ノードの前記第二コントローラ宛ての前記リクエストを前記障害ノードの前記第一コントローラ宛へ出力するように前記プロセッサルーティングテーブルの設定を変更するステップと、
前記障害ノードの前記第二コントローラ宛の前記リクエストを、前記障害ノードの前記第一ノードコントローラ宛へ出力するように前記第二ルーティングテーブルの設定を変更するステップと
をさらに備えるマルチプロセッサシステムの障害回復方式。
【請求項１３】
請求項１２に記載のマルチプロセッサシステムの障害回復方式であって、
第一リクエスト制御部と第二リクエスト制御部とは、それぞれ、前記リクエストに含まれるアクセス先のメモリアドレスに基づいて前記リクエストの送信先の識別子を決定するアドレスデコーダを備え、
前記第一リクエスト制御部の備えるアドレスデコーダの前記メモリアドレスの範囲を、前記第二リクエスト制御部の備えるアドレスデコーダの前記メモリアドレスの範囲を含むように設定を変更するステップ
をさらに備えるマルチプロセッサシステムの障害回復方式。
【請求項１４】
請求項１０から請求項１３までのいずれかに記載のマルチプロセッサシステムの障害回復方式であって、
前記リクエストの送信先の識別子において参照するべきビットのビット位置を記録した第三レジスタをさらに備え、
前記リクエストの出力先を決定するステップは、
前記リクエストの含む送信先の識別子が、前記第一レジスタに設定された識別子と前記第二レジスタに設定された識別子とのいずれにも一致する場合、前記第三レジスタに設定された前記ビット位置基づいて前記リクエストの出力先を前記第一リクエスト制御部か前記第二リクエスト制御部かのいずれかに決定するステップ
を含むマルチプロセッサシステムの障害回復方式。
【請求項１５】
請求項１４に記載のマルチプロセッサシステムの障害回復方式であって、前記リクエストの出力先を決定するステップは、
前記リクエストの含む送信先の識別子が前記第一レジスタに設定された識別子と前記第二レジスタに設定された識別子とのいずれにも一致しない場合、前記ルーティングテーブルに記録されたデータを参照して転送先を決定するステップ
を含むマルチプロセッサシステム障害回復方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムに関する。
【背景技術】
【０００２】
マルチプロセッサシステムにおいて、ノードコントローラは、一般に冗長化されている。そのため、ノードコントローラの障害時には、障害の発生していないノードコントローラの動作により、システムの動作を継続する。従来、ノードコントローラ障害時におけるシステム性能の低下を抑えるために、各ノードのアドレスデコーダや、ルーティングテーブル等の設定を多数変更する必要が生じていた。そのため、システムの動作を回復するまでに長い時間を要し、特にシステムをリブートせずに動作を継続する場合には、設定変更に要する時間がオペレーションシステムの制約を満たすことができないことがあった。マルチプロセッサシステムにおける障害対策に関する技術が以下の通り公開されている。
【０００３】
特許文献１は、障害による縮退運転時にも、アプリケーションが特別な処理を行う必要の無いマルチプロセッサシステムを開示している。特許文献１のマルチプロセッサシステムは、それぞれ個別の連続した識別情報が付与された複数のプロセッサを、通信経路情報を有する通信ノード要素を介して接続している。通信ノード要素は、故障が検出されたプロセッサへの通信経路を正常なプロセッサへの通信経路となるように変更して、見掛け上、複数のプロセッサの識別情報が連続し、かつ、総数が一定となるようにしている。そのため、特許文献１のマルチプロセッサシステムによれば、システムの縮退運転時に、アプリケーションがプロセッサの連続性や総数を意識した処理を行う必要が無くなる。
【０００４】
特許文献２は、二重化された通信制御装置を接続して構成された二重化されたリングのそれぞれの異なる通信制御装置に障害が発生しても、障害が発生した通信制御装置に接続するプロセッサ間の通信を可能とするマルチプロセッサ間通信制御システムにおけるフレーム中継通信処理方式を開示している。特許文献２のフレーム中継通信処理方式は、各系の通信制御システムで異なるプロセッサに対応する通信制御装置の障害が発生して該プロセッサ間の各系内の通信システムによる直接通信が不可能となると、障害の発生した通信制御装置に対応する一方のプロセッサから他方のプロセッサへの通信は、正常な通信制御装置の一方の系から、両系の通信制御装置が正常であるプロセッサを介して他方の系へフレームを中継して行うことを特徴とする。特許文献２のフレーム中継通信処理方式によれば、二重化された通信制御装置のそれぞれにより構成されたリング等のネットワークにおける二重障害の場合に、両系が共に正常である通信制御装置を持つプロセッサでフレームを中継して送受することにより、障害の通信制御装置を持ったプロセッサ間の通信ダウンを防止することができる。
【０００５】
特許文献３は、共通バスや、チャネル制御装置等の障害が発生しても系切替を行うことなく同じ通信バスを介する通信を維持することができる系間交絡通信制御方式を開示している。特許文献３の系間交絡通信制御方式は、０系と１系の各通信制御装置において、それぞれの共通バスインターフェース装置を二重化して、それぞれの一方の共通バスインターフェース装置は自系のリングバスインターフェース装置を介して自系のリングバスに接続し、他方は他系のリングバスインターフェース装置を介して他系のリングバスに接続し、各系のリングバスインターフェース装置は、通常は自系の共通バスに接続した共通バスインターフェース装置を選択し、自系の共通バスの障害等の場合には他系の共通バスに接続する共通バスインターフェース装置を選択して自系のリングバスを介する通信を行う。特許文献３の系間交絡通信制御方式によれば、現用系の共通バスに障害が発生しても、通信バスに接続された装置が正常である限り、他系との系間交絡通信を行うことにより、通信バスの系切替えを行うことなく通信を継続することができる。
【０００６】
特許文献４は、充分な障害回避対策が計られてシステム全体の稼働率を向上し得る分散メモリ型マルチプロセッサシステムを開示している。特許文献４の分散メモリ型マルチプロセッサシステムは、プロセッサ及びローカルメモリ間をローカルネットワークで接続して成るプロセッサ構成装置の複数のものの間同士を互いに通信可能なようにグローバルネットワークで接続して成る分散メモリ型マルチプロセッサシステムにおいて、複数のプロセッサ構成装置は、それぞれプロセッサに接続された入出力機能を有するＩ／Ｏプロセッサと、Ｉ／Ｏプロセッサに接続された所定数のチャネル装置と、Ｉ／Ｏプロセッサ及びバスに接続された縮退運転用のリクエスト送出装置とを備える。特許文献４の分散メモリ型マルチプロセッサシステムによれば、プロセッサ構成装置及びグローバルネットワーク間に故障が発生した場合、プロセッサ構成装置内のハードウェア自体に故障がなければ、故障の発生したプロセッサ構成装置を縮退させることなく、データ転送速度は、低下するものの充分な障害回避対策が計られてシステム全体の稼働率を向上されることができるようになる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平４−３２１１３８号公報
【特許文献２】特開平５−１５８８４０号公報
【特許文献３】特開平５−１７５９８０号公報
【特許文献４】特開平１１−０５３３３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、ノードコントローラの障害によるシステム停止時間を短縮することが可能なマルチプロセッサシステムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明のマルチプロセッサシステムは、複数のノードを備え、複数のノードの各々は、複数のプロセッサと、複数のプロセッサに対応して接続された複数のメモリと、複数のプロセッサと接続され互いに冗長関係にある第一ノードコントローラと第二ノードコントローラとを具備し、各ノードの複数のプロセッサと、第一ノードコントローラと、第二ノードコントローラとは、それぞれ一意に定められた識別子を付与されており、第一ノードコントローラと第二ノードコントローラは、リクエストに含まれるアクセス先のメモリアドレスに基づいて、リクエストの送信先の識別子を決定する第一リクエスト制御部、及び第二リクエスト制御部と、第一リクエスト制御部へリクエストを出力すべきリクエストの送信先の識別子を記憶する第一レジスタと、第二リクエスト制御部へリクエストを出力すべきリクエストの送信先の識別子を記憶する第二レジスタと、リクエストを受信すると、リクエストの送信先の識別子と、第一レジスタ、及び第二レジスタに設定された識別子に基づいて、第一リクエスト制御部か第二リクエスト制御部のいずれかにリクエストの出力先を決定する第一ルーティングテーブルと、第一リクエスト制御部、あるいは第二リクエスト制御部の決定した送信先の識別子に基づいて、送信先の識別子に対応する信号線を選択して、リクエストを送信する第二ルーティングテーブルと、を備える。
【００１０】
本発明のノードコントローラは、上述のマルチプロセッサシステムで使用される。
【００１１】
本発明のマルチプロセッサシステムの障害回復方式は、複数のノードを備え、複数のノードの各々は、複数のプロセッサと、複数のプロセッサに対応して接続された複数のメモリと、複数のプロセッサと接続され互いに冗長関係にある第一ノードコントローラと第二ノードコントローラとを具備するマルチプロセッサシステムにおいて、各ノードの複数のプロセッサと、第一ノードコントローラと、第二ノードコントローラとは、それぞれ一意に定められた識別子を付与されており、第一ノードコントローラと第二ノードコントローラは、リクエストに含まれるアクセス先のメモリアドレスに基づいて、リクエストの送信先の識別子を決定するステップと、第一リクエスト制御部へリクエストを出力すべきリクエストの送信先の識別子を第一レジスタへ記憶するステップと、第二リクエスト制御部へリクエストを出力すべきリクエストの送信先の識別子を第二レジスタへ記憶するステップと、リクエストを入力すると、リクエストの送信先の識別子と、第一レジスタ、及び第二レジスタに設定された識別子に基づいて、第一リクエスト制御部か第二リクエスト制御部のいずれかにリクエストの出力先を決定するステップと、第一リクエスト制御部、あるいは第二リクエスト制御部の決定した送信先の識別子に基づいて、送信先の識別子に対応する信号線を選択して、リクエストを送信するステップとを具備する。
【発明の効果】
【００１２】
本発明によれば、ノードコントローラの障害によるシステム停止時間を短縮することが可能なマルチプロセッサシステムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態のマルチプロセッサシステムにおけるノード１００の構成を示す図である。
【図２】本実施形態のマルチプロセッサシステムにおけるノード間の接続関係を示す図である。
【図３】本実施形態におけるプロセッサ１０１の構成を示す図である。
【図４】本実施形態におけるルーティングテーブル４０４を示す図である。
【図５】本実施形態におけるノードコントローラ１２１の構成を示す図である。
【図６】本実施形態のマルチプロセッサシステムにおけるノードコントローラ故障時の動作フローである。
【図７Ａ】本実施形態のマルチプロセッサシステムにおけるノード内からリクエストを受信した場合のノードコントローラの動作フローである。
【図７Ｂ】本実施形態のマルチプロセッサシステムにおけるノード内からリクエストを受信した場合のノードコントローラの動作フローである。
【図８Ａ】本実施形態のマルチプロセッサシステムにおけるノード外からリクエストを受信した場合のノードコントローラの動作フローである。
【図８Ｂ】本実施形態のマルチプロセッサシステムにおけるノード外からリクエストを受信した場合のノードコントローラの動作フローである。
【図８Ｃ】本実施形態のマルチプロセッサシステムにおけるノード外からリクエストを受信した場合のノードコントローラの動作フローである。
【図９】本実施形態におけるノード１００内の接続構成の変形例を示す図である。
【図１０】本実施形態におけるノード１００内の接続構成の変形例を示す図である。
【発明を実施するための形態】
【００１４】
添付図面を参照して、本発明の実施形態によるマルチプロセッサシステムを以下に説明する。
【００１５】
はじめに、図１を用いて本実施形態のマルチプロセッサシステムにおけるノード１００の構成の説明を行う。図１は、本実施形態のマルチプロセッサシステムにおけるノード１００の構成を示す図である。本実施形態のノード１００は、プロセッサ１０１、１０２、１０３、１０４と、メモリ１１１、１１２、１１３、１１４と、ノードコントローラ１２１と、１２２とを備える。なお、本実施形態においてノード１００は、４つのプロセッサとメモリとを備えているが、プロセッサ及びメモリの数量は限定せず、これより多くても良いし、あるいはこれより少なくても良い。なお、本実施形態において、プロセッサ１０１〜１０４、及びノードコントローラ１２１、１２２は、一意のＩＤを付与されている。プロセッサ１０１〜１０４は、それぞれノード１００内のプロセッサ１０１〜１０４、及びノードコントローラ１２１、１２２のＩＤ情報のみを記憶している。ノードコントローラ１２１、１２２は、ノード１００内のプロセッサ１０１〜１０４、及びノードコントローラ１２１、１２２のＩＤ情報のみでなく、後述する他ノードのノードコントローラのＩＤ情報を記憶している。そのため、プロセッサ１０１〜１０４は、ノード１００外のプロセッサやノードコントローラへアクセスするときには、ノードコントローラ１２１、１２２へリクエストを送信して、ノードコントローラ１２１、１２２にリクエストを転送させることでノード１００外へのアクセスを実現する。
【００１６】
プロセッサ１０１は、信号線１６５によりメモリ１１１と接続される。プロセッサ１０２は、信号線１６６によりメモリ１１２と接続される。プロセッサ１０３は、信号線１６７によりメモリ１１３と接続される。プロセッサ１０４は、信号線１６８によりメモリ１１４と接続される。また、プロセッサ１０１は、信号線１５１によりノードコントローラ１２１と接続され、信号線１５２によりノードコントローラ１２２と接続される。さらに、プロセッサ１０１は、信号線１５３〜１５５により、それぞれプロセッサ１０２〜１０４と接続される。プロセッサ１０２は、信号線１５６によりノードコントローラ１２１と接続され、信号線１５７によりノードコントローラ１２２と接続される。さらに、プロセッサ１０２は、信号線１５３、１５８、１５９により、それぞれプロセッサ１０１、１０３、１０４と接続される。プロセッサ１０３は、信号線１６０によりノードコントローラ１２１と接続され、信号線１６１により、ノードコントローラ１２２と接続される。さらに、プロセッサ１０３は、信号線１５４、１５８、１６２により、それぞれプロセッサ１０１、１０２、１０４と接続される。プロセッサ１０４は、信号線１６３によりノードコントローラ１２１と接続され、信号線１６４によりノードコントローラ１２２と接続される。さらに、プロセッサ１０４は、信号線１５５、１５９、１６２により、それぞれプロセッサ１０１、１０２、１０３と接続される。
【００１７】
プロセッサ１０１〜１０４は、それぞれ対応して接続されるメモリ１１１〜１１４のデータをキャッシュする。なお、プロセッサ１０１〜１０４は、それぞれ対応して接続されるメモリ１１１〜１１４以外の、ノード１００内の他のメモリ１１１〜１１４のデータをキャッシュすることもできる。さらに、プロセッサ１０１〜１０４は、後述する図１に図示されないノード１００の外部のノードの備えるメモリのデータもキャッシュすることが可能である。
【００１８】
メモリ１１１〜１１４は、それぞれプロセッサ１０１〜１０４からキャッシュライン単位でアクセスされる。１キャッシュラインのビット幅は、例えば、６４バイト（ｂｙｔｅ）で一定である。プロセッサ１０１〜１０４は、メモリアクセスの際に指定されるアドレスにより、キャッシュラインの位置を決定する。なお、メモリ１１１〜１１４は、後述する図１に図示されない外部のノードの備えるプロセッサからもデータをキャッシュされる。
【００１９】
ノードコントローラ１２１、１２２は、ノード１００の内部のプロセッサ１０１〜１０４がノード１００の外部へアクセスする際、あるいは、ノード１００の外部のプロセッサがノード１００の内部へアクセスする際に、アクセス先を決定する。ノードコントローラ１２１とノードコントローラ１２２とは、信号線１６９により互いに接続される。ノードコントローラ１２１とノードコントローラ１２２とは、同様の機能を備えており、冗長構成となっている。
【００２０】
以上が、本実施形態のマルチプロセッサシステムにおけるノード１００の構成の説明である。なお、プロセッサ１０１と、ノードコントローラ１２１、１２２については、後に、さらに詳述する。
【００２１】
次に、図２を用いて、本実施形態のマルチプロセッサシステムにおけるノード間の接続関係を説明する。図２は、本実施形態のマルチプロセッサシステムにおけるノード間の接続関係を示す図である。本実施形態のマルチプロセッサシステムは、ノード１００と同様の構成を備えるノード２００と、ノード３００とを備える。ノード２００は、プロセッサ２０１〜２０４と、メモリ２１１〜２１４と、ノードコントローラ２２１、２２２とを備える。また、ノード３００は、プロセッサ３０１〜３０４と、メモリ３１１〜３１４と、ノードコントローラ３２１と３２２とを備える。ノード２００とノード３００とにおける各構成要素の接続関係は、ノード１００と同様であるので説明を省略する。ノードコントローラ１２１と、２２１と、３２１とは、信号線２０、２１、２２を用いて互いに１対１で接続される。また、ノードコントローラ１２２と、２２２と、３２２とは、信号線１０、１１、１２を用いて互いに１対１で接続される。互いに接続されていないノードコントローラ間のおけるアクセスは、各ノード１００、２００、３００内のノードコントローラ間を接続する信号線１６１、２６１、３６１を使用する。例えば、ノードコントローラ１２１からノードコントローラ２２２へのアクセスする場合、信号線１６１と、ノードコントローラ１２２と、信号線１２とを経由してアクセスするか、あるいは、信号線２２と、ノードコントローラ２２１と、信号線２６１とを経由してアクセスすることができる。
【００２２】
以上が、本実施形態のマルチプロセッサシステムにおけるノード間の接続関係を説明である。なお、ノード２００とノード３００とは、前述したノード１００と同様の構成であるため、重ねての説明は省略する。
【００２３】
次に、図３を用いて本実施形態におけるプロセッサ１０１の構成の説明を行う。図３は、本実施形態におけるプロセッサ１０１の構成を示す図である。尚、ノード１００の備える他のプロセッサ１０２〜１０４、ノード２００の備えるプロセッサ２０１〜２０４、及びノード３００の備えるプロセッサ３０１〜３０４も同様の構成であるため重ねての説明は省略する。
【００２４】
プロセッサ１０１は、リクエスト処理部４０１と、キャッシュ制御部４０２と、アドレスデコーダ４０３と、ルーティングテーブル４０４と、キャッシュ４０５と、クロスバ４０６とを備える。
【００２５】
リクエスト処理部４０１は、命令を生成する。リクエスト処理部４０１は、キャッシュ制御部４０２と接続される。リクエスト処理部４０１は、メモリを読込むリードアクセス命令や、メモリへ書き込むライトアクセス命令などを生成する。リクエスト処理部４０１は、プロセッサ１０１上で動作するプロセスからの命令により、各命令を生成する。リクエスト制御部４０１は、生成した命令をキャッシュ制御部４０２へ出力する。
【００２６】
キャッシュ４０５は、メモリのデータを一時的に格納する。キャッシュ４０５は、キャッシュ制御部４０２と接続される。キャッシュ４０５は、ＭＥＳＩ（Ｍｏｄｉｆｉｅｄ，ＥｘＣｌｕｓｉｖｅ，Ｓｈａｒｅｄ，Ｉｎｖａｌｉｄ）のような一般的なキャッシュプロトコルを採用したキャッシュメモリである。キャッシュ４０５により、プロセッサ１０１は、一時的にメモリ１１１のデータをプロセッサ１０１内に格納することができる。
【００２７】
キャッシュ制御部４０２は、キャッシュ４０５へのアクセスを制御する。キャッシュ制御部４０２は、リクエスト処理部４０１と、アドレスデコーダ４０３と、キャッシュ４０５と、クロスバ４０６と接続される。キャッシュ制御部４０２は、リクエスト処理部４０１から命令を入力すると、命令に記述されているアクセス先のアドレスに基づいて、アクセス先のキャッシュラインに対するアクセス権を保持しているか否かを判定する。キャッシュ制御部４０２は、リードアクセス時に、アクセス先のアドレスのキャッシュラインに対するアクセス権を保持している場合、キャッシュ４０５の当該キャッシュラインからデータを取り出して、リクエスト処理部４０１へ出力する。一方、キャッシュ制御部４０２は、リードアクセス時に、アクセス先のアドレスのキャッシュラインに対するアクセス権を保持していない場合、リードリクエストを生成して、アドレスデコーダ４０３へ出力する。また、キャッシュ制御部４０２は、ライトアクセス時には、キャッシュ４０５の当該キャッシュラインからデータを取り出して、データをマージする。キャッシュ制御部４０２は、リクエスト制御部４０１から入力するリクエスト、あるいは、クロスバ４０６を介してノード１００外のプロセッサから入力するリクエストに基づいて、必要に応じてキャッシュ４０５のデータをメモリへ書き戻すライトリクエストを生成して、データと共にライトリクエストをアドレスデコーダ４０３へ出力する。また、キャッシュ制御部４０２は、クロスバ４０６を介してノード１００外のプロセッサからキャッシュ４０５のキャッシュラインに対するアクセス権を入力すると、当該プロセッサの当該キャッシュラインに対するアクセス権の有無を保持する。キャッシュ制御部４０２は、当該プロセッサからのクロスバ４０６を介したアクセスに応じて、キャッシュ４０５へデータを格納し、あるいは、リクエスト処理部４０１へデータを出力する。
【００２８】
アドレスデコーダ４０３は、リクエストに含まれるアクセス先のアドレスに基づいて、プロセッサ、あるいはノードコントローラのＩＤを特定する。アドレスデコーダ４０３は、キャッシュ制御部４０２と、ルーティングテーブル４０４と接続される。アドレスデコーダ４０３は、ノード１００内のメモリ１１２〜１１４、ノード２００の備えるメモリ２１１〜２１４、及びノード３００の備えるメモリ３１１〜３１４にそれぞれ割り当てられたアドレス範囲を示すレジスタを備える。アドレスデコーダ４０３は、キャッシュ制御部４０２から入力するリクエストに含まれるアドレスに基づいて、当該アドレスの属するアドレス範囲を備えるメモリを特定して、当該メモリに対応するプロセッサ、あるいはノードコントローラのＩＤを特定する。アドレスデコーダ４０３は、プロセッサ、あるいはノードコントローラのＩＤを、リクエストと共にルーティングテーブル４０４へ出力する。
【００２９】
ルーティングテーブル４０４は、リクエストを出力する信号線を決定する。ルーティングテーブル４０４は、アドレスデコーダ４０３と、クロスバ４０６と接続される。ルーティングテーブル４０４は、プロセッサ、及びノードコントローラの各ＩＤに対応する信号線を記憶している。ルーティングテーブル４０４は、アドレスデコーダ４０３から入力するＩＤに基づいて、リクエストを出力する信号線を決定する。
【００３０】
図４は、本実施形態におけるルーティングテーブル４０４を示す図である。ルーティングテーブル４０４は、プロセッサ、あるいはノードコントローラのＩＤと、出力先の信号線と、ＩＤに対応するプロセッサ、あるいはノードコントローラの名称とを対応させて記録している。本実施形態において、プロセッサ及びノードコントローラへ付与されるＩＤは、５ビットである。ＩＤの上位２ビット（第１ビット、第２ビット）は、ノード番号を示す。例えば、「００」でノード１００を、「０１」でノード２００を、「１０」でノード３００を、それぞれ示す。その下位のビット（第３ビット）は、プロセッサであるかノードコントローラであるかを示す。例えば、「０」でプロセッサを、「１」でノードコントローラを、それぞれ示す。ＩＤの下位２ビット（第４ビット、第５ビット）は、各プロセッサおよびノードコントローラに付与される番号を示す。ノード１００を例に示すと、「０００００」でプロセッサ１０１を、「００００１」でプロセッサ１０２を、「０００１０」でプロセッサ１０３を、「０００１１」でプロセッサ１０４を示す。また、「００１００」でノードコントローラ１２１を、「００１０１」でノードコントローラ１２２を示す。例えば、アドレスデコーダ４０３は、プロセッサ１０２のアドレス範囲を示すあるリクエストを入力するとＩＤ「００００１」と決定する。ルーティングテーブル４０４は、ＩＤ「００００１」に基づいて、当該リクエストの出力先信号線を「信号線１５３」と決定する。同様に、プロセッサ１０３に対応するＩＤ「０００１０」であれば、出力先を「信号線１５４」と、プロセッサ１０４に対応するＩＤ「０００１１」であれば、出力先を「信号線１５５」と決定する。なお、図４に示すＩＤは、一例でありこの例に限定はしない。
【００３１】
クロスバ４０６は、信号線１５１〜１５５、１６５へ、リクエストやリプライを出力する。クロスバ４０６は、キャッシュ制御部４０２と、ルーティングテーブル４０４と接続される。さらに、クロスバ４０６は、信号線１５１〜１５５、１６５を介して、メモリ１１１、プロセッサ１０２〜１０４、ノードコントローラ１２１、１２２と接続される。クロスバ４０６は、ルーティングテーブル４０４の決定した信号線へ、リクエスト処理部４０１の生成したリクエストを出力する。また、クロスバ４０６は、信号線１５１〜１５５、１６５から入力するリクエストや、リクエストに対するリプライをキャッシュ制御部４０２へ出力する。また、クロスバ４０６は、キャッシュ制御部４０２から入力するキャッシュ４０５のリプライを信号線１５１〜１５５、１６５へ出力する。さらに、クロスバ４０６は、他のプロセッサから入力したリクエストがプロセッサ１０１へのアクセスでない場合、当該リクエストに含まれるＩＤをルーティングテーブル４０４へ出力して、ルーティングテーブル４０４により出力すべき信号線決定し、当該出力すべき信号線へ当該リクエストを転送する。
【００３２】
以上が、本実施形態におけるプロセッサ１０１の構成の説明である。
【００３３】
次に、図５を用いて、本実施形態におけるノードコントローラ１２１、１２２の説明を行う。なお、ノードコントローラ１２１とノードコントローラ１２２とは、同様の構成であるため、ノードコントローラ１２１の説明のみを行い、ノードコントローラ１２２の説明を省略する。また、ノード２００の備えるノードコントローラ２２１、２２２、及びノード３００の備えるノードコントローラ３２１、３２２も、それぞれ同様の構成であるため説明を省略する。図５は、本実施形態におけるノードコントローラ１２１の構成を示す図である。本実施形態におけるノードコントローラ１２１は、リクエスト振り分け情報レジスタ部５００と、ルーティングテーブル５０４、５０６と、クロスバ５０５、５０７と、リクエスト制御部５０８、５０９とを備える。
【００３４】
リクエスト振り分け情報レジスタ部５００は、レジスタ５０１、５０２、５０３を備える。レジスタ５０１、５０２、５０３は、それぞれ、ルーティングテーブル５０４と接続される。レジスタ５０１、５０２、５０３は、ノードコントローラ１２１が受信したリクエストを、リクエスト制御部５０８とリクエスト制御部５０９のいずれに振り分けるかを決定するためのレジスタである。レジスタ５０１は、リクエスト制御部５０８へ振り分けを行うべき送信先ＩＤを設定している。つまり、例えば、リクエストの送信先ＩＤがレジスタ５０１に設定されているＩＤであった場合、当該リクエストは、リクエスト制御部５０８へ転送される。同様に、レジスタ５０２は、リクエスト制御部５０９へ振り分け行うべき送信先ＩＤを設定している。例えば、リクエストの送信先ＩＤがレジスタ５０２に設定されているＩＤであった場合、当該リクエストは、リクエスト制御部５０９へ転送される。レジスタ５０１、５０２に設定されたＩＤは、リクエストの出力先を決定するための情報として、ルーティングテーブル５０４へ出力される。また、レジスタ５０３は、アドレスインタリーブを行うビット位置を設定している。レジスタ５０３に設定されたビット位置は、アドレスインタリーブの振り分けを行うために、ルーティングテーブル５０４へ出力される。本実施形態において、レジスタ５０１、５０２は、５ビットのレジスタであり、レジスタ５０３は、６ビットのレジスタである。なお、レジスタ５０１、５０２、５０３のビット数は、これに限定しない。レジスタ５０１、５０２、５０３のビット数は、プロセッサや、ノードコントローラへ付与されるＩＤに応じて変化する。
【００３５】
ルーティングテーブル５０４は、前述したプロセッサ１０１の備えるルーティングテーブル４０４と同様の構成を備える。ルーティングテーブル５０４は、レジスタ５０１、５０２、５０３と、クロスバ５０５と接続される。ルーティングテーブル５０４は、プロセッサ１０１〜１０４や、ノードコントローラ１２２、２２１、３２１から入力するリクエストを、リクエスト振り分け情報レジスタ部５００のレジスタ５０１〜５０３に設定された情報と、ルーティングテーブル５０４に設定された図４に示すようなルーティング情報とに基づいて、出力先を決定する。ルーティングテーブル５０４は、ノードコントローラ１２１と接続するプロセッサ１０１〜１０４や、ノードコントローラ１２２、２２１、３２１から入力するリクエストに含まれる送信先ＩＤを取り出して、リクエスト振り分け情報レジスタ部５００のレジスタ５０１、５０２に設定されたＩＤと比較を行う。ルーティングテーブル５０４は、リクエストの送信先ＩＤがレジスタ５０１、あるいはレジスタ５０２のいずれかに設定されたＩＤと一致する場合、一致したＩＤに対応するリクエスト制御部へ当該リクエストを出力する。また、ルーティングテーブル５０４は、リクエストの送信先ＩＤがレジスタ５０１、及びレジスタ５０２に設定されたいずれのＩＤとも一致する場合、レジスタ５０３に設定されたアドレスインタリーブを行うビット位置のアドレスを比較して、出力するリクエスト制御部を決定する。さらに、ルーティングテーブル５０４は、リクエストの送信先ＩＤがレジスタ５０１、及びレジスタ５０２に設定されたいずれのＩＤとも一致しない場合、当該リクエストは別ノードへのアクセスするリクエストであると判定して、送信先ＩＤに基づいて図４に示すようなルーティング情報を参照して、ノードコントローラ１２１と接続されるプロセッサ１０１〜１０４や、ノードコントローラ１２２、２２１、３２１への信号線を決定する。
【００３６】
例えば、リクエストに含まれる送信先ＩＤが「００１００」であり、レジスタ５０１とレジスタ５０２とが共に「００１００」を設定している場合、ルーティングテーブル５０４は、レジスタ５０３に設定されたビット位置を参照する。ここで、例えば、レジスタ５０３が「０００１１１」を設定している場合、アドレスの「ビット７」を比較して、当該リクエストを出力するリクエスト制御部を決定する。また、リクエストに含まれる送信先ＩＤが「００１００」であり、レジスタ５０１が「００１００」を設定し、レジスタ５０２が「００１０１」を設定している場合、ルーティングテーブル５０４は、当該リクエストの出力先をリクエスト制御部５０８と決定する。一方、ルーティングテーブル５０４のテーブルの状態が図４で示した状態であるときに、リクエストに含まれる送信先ＩＤが「００００１」であって、レジスタ５０１が「００１００」を設定し、レジスタ５０２が「００１０１」を設定している場合、ルーティングテーブル５０４は、送信先ＩＤがレジスタ５０１及びレジスタ５０２のいずれのＩＤとも一致しないと判定する。ルーティングテーブル５０４は、ルーティング情報を参照して、当該リクエストの送信先ＩＤに対応するプロセッサ１０２への信号線１５３を、当該リクエストの出力先と決定する。
【００３７】
クロスバ５０５、５０７は、入力したリクエストを、それぞれのルーティングテーブル５０４、５０６の決定した信号線へ出力する。クロスバ５０５は、ルーティングテーブル５０４と、リクエスト制御部５０８、５０９と接続される。さらに、クロスバ５０５は、信号線を介して、ノード１００内のプロセッサ１０１〜１０４、ノードコントローラ１２２、及び、ノード２００の２２１、ノード３００の３２１とそれぞれ接続される。また、クロスバ５０７は、ルーティングテーブル５０６と、リクエスト制御部５０８、５０９と接続される。さらに、クロスバ５０５は、信号線を介して、ノード１００内のプロセッサ１０１〜１０４、ノードコントローラ１２２、及び、ノード２００の２２１、ノード３００の３２１とそれぞれ接続される。
【００３８】
リクエスト制御部５０８は、ノード外メモリアクセス制御部５１０と、ノード内メモリアクセス制御部５２０とを備える。また、リクエスト制御部５０９は、ノード外メモリアクセス制御部５３０と、ノード内メモリアクセス制御部５４０とを備える。リクエスト制御部５０９は、リクエスト制御部５０８と同様の構成であるので重ねての説明は省略する。
【００３９】
ノード外メモリアクセス制御部５１０は、ノード外メモリアクセスリクエスト格納バッファ５１１と、ノード外アクセス用アドレスレコーダ５１２とを備える。ノード外メモリアクセスリクエスト格納バッファ５１１は、クロスバ５０５、５０７と、ノード外アクセス用アドレスデコーダ５１２と接続される。ノード外アクセス用アドレスレコーダ５１２は、さらに、クロスバ５０７と接続される。ノード外メモリアクセスリクエスト格納バッファ５１１は、ノード１００の内部のプロセッサ１０１〜１０４が、ノード１００の外部に存在するメモリへアクセスを行うためのリクエストを格納する。ノード外アクセス用アドレスレコーダ５１２は、ノード外メモリアクセスリクエスト格納バッファ５１１から入力するリクエストに含まれたアドレスに基づいて、出力先のノードコントローラのＩＤを割り出す。また、ノード外アクセス用アドレスレコーダ５１２で割り出されたＩＤは、クロスバ５０５がリクエストを受信したときに、当該リクエストの転送先をルーティングテーブル５０４で参照することを可能にするために、ルーティングテーブル５０４へリクエストと共に送信される。
【００４０】
ノード外メモリアクセス制御部５１０は、ノード外メモリアクセスリクエスト格納バッファへ格納したリクエストからアドレスを抜き出して、ノード外アクセス用デコーダ５１２へ出力する。ノード外アクセス用アドレスデコーダ５１２は、ノード外メモリアクセスリクエスト格納バッファ５１１から入力するリクエストに含まれたアドレスに基づいて、出力先のノードコントローラのＩＤを割り出す。ノード外メモリアクセス制御部５１０は、ノード外アクセス用アドレスデコーダ５１２の割り出したＩＤと、ノード外メモリアクセスリクエスト格納バッファへ格納したリクエストとを、クロスバ５０７へ出力する。
【００４１】
ノード内メモリアクセス制御部５２０は、ノード内メモリアクセスリクエスト格納バッファ５２１と、ノード内アクセス用アドレスデコーダ５２２と、ディレクトリ５２３とを備える。ノード内メモリアクセスリクエスト格納バッファ５２１は、クロスバ５０５、５０７と、ノード内アクセス用アドレスデコーダ５２２と、ディレクトリ５２３と接続される。ノード内アクセス用アドレスデコーダ５２２と、ディレクトリ５２３とは、さらに、クロスバ５０７と接続される。ノード内メモリアクセスリスト格納バッファ５２１は、ノード１００の外部のプロセッサからノード１００の備えるメモリ１１１〜１１４へアクセスを行うためのリクエストを格納する。ノード内アクセス用アドレスデコーダ５２２は、ノード内メモリアクセスリクエスト格納バッファ５２１から入力するアドレスに基づいて、当該リクエストの出力先のプロセッサのＩＤを割り出す。また、ノード内アクセス用アドレスレコーダ５２２で割り出されたＩＤは、クロスバ５０５がリクエストを受信したときに、当該リクエストの転送先をルーティングテーブル５０４で参照することを可能にするために、ルーティングテーブル５０４へリクエストと共に送信される。ディレクトリ５２３は、ノード１００内のメモリ１１１〜１１４のライン毎にステータス情報を管理する。ステータス情報は、メモリ１１１〜１１４に格納されたデータが他ノードのプロセッサにキャッシュされているか否かを示す情報と、キャッシュされている場合、キャッシュしているプロセッサのＩＤとキャッシュされているメモリ１１１〜１１４のアドレス情報とを対応させて記録している。ディレクトリ５２３は、ノード１００外のプロセッサがキャッシュするノード１００内のメモリ１１１〜１１４のキャッシュラインのアドレス情報を、全て記録している。
【００４２】
ノード内メモリアクセス制御部５２０は、ノード内メモリアクセスリクエスト格納バッファ５２１に格納したリクエストからアドレスを抜き出して、ノード内アクセス用アドレスデコーダ５２２と、ディレクトリ５２３とへ出力する。ノード内アクセス用アドレスデコーダ５２２は、ノード内メモリアクセスリクエスト格納バッファ５２１から入力するアドレスに基づいて、当該リクエストの出先のプロセッサのＩＤを割り出す。ノード内メモリアクセス制御部５２０は、ノード内アクセス用アドレスデコーダ５２２の割り出したプロセッサのＩＤと、ノード内メモリアクセスリクエスト格納バッファ５２１に格納したリクエストとを、クロスバ５０７へ出力する。ディレクトリ５２３は、アクセス元のプロセッサのＩＤと、アクセス先のプロセッサのＩＤ、及びキャッシュされるメモリ１１１〜１１４のアドレス情報とを記憶する。また、ノード内メモリアクセス制御部５２０は、ディレクトリ５２３に記録されたメモリ１１１〜１１４のデータをキャッシュしているプロセッサに対して、当該キャッシュラインのアクセス権の返却を要求するスヌープを作成して、クロスバ５０７へ出力する。
【００４３】
ルーティングテーブル５０６は、ノード外メモリアクセス制御部５１０から出力されるリクエストを出力する信号線を、ノード外アクセス用アドレスデコーダ５１２から出力される転送先のＩＤに基づいて決定する。また、ルーティングテーブル５０６は、ノード内メモリアクセス制御部５２０から出力されるリクエストを出力する信号線を、ノード内アクセス用アドレスデコーダ５２２から出力される転送先のＩＤに基づいて決定する。ルーティングテーブル５０６は、クロスバ５０７と接続される。ルーティングテーブル５０６は、決定した信号線をクロスバ５０７へ通知する。
【００４４】
以上が、本実施形態におけるマルチプロセッサシステムの構成の説明である。
【００４５】
［動作方法の説明］
次に、本実施形態のマルチプロセッサシステムにおける動作方法の説明を行う。まず、図６を用いて、本実施形態のマルチプロセッサシステムにおけるノードコントローラ故障時の動作方法を説明する。図６は、本実施形態のマルチプロセッサシステムにおけるノードコントローラ故障時の動作フローである。本説明において、ノード１００のノードコントローラ１２２に故障が発生した場合を用いて説明する。
【００４６】
（ステップＳ６０１）
ノードコントローラ１２２に障害が発生する。ノードコントローラ１２２は、システムファームウェアへ障害を通知する。ここで、システムファームウェハは、マルチプロセッサ上で動作を行うソフトウェアであり、マルチプロセッサシステムを制御している。
【００４７】
（ステップＳ６０２）
システムファームウェアは、ノードコントローラ１２２の障害を検知すると、ノード１００、２００、３００の各プロセッサからのリクエスト出力を抑止する。
【００４８】
（ステップＳ６０３）
システムファームウェアは、ノード１００外のプロセッサに、キャッシュラインのアクセス権を返却させる。システムファームウェアは、ノードコントローラ１２１のディレクトリ５２３、５４３と、ノードコントローラ１２２のディレクトリ５２３、５４３（以下、区別のために、ディレクトリ５２３Ｂ、ディレクトリ５４３Ｂと表記する。）とに記録された、ノード１００外のプロセッサによるノード１００内のメモリ１１１〜１１４のキャッシュ状況に基づいて、ノード１００外のプロセッサにキャッシュしているデータをメモリ１１１〜１１４へ書き戻させて、ノード１００外のプロセッサにメモリ１１１〜１１４のキャッシュラインのアクセス権を返却させる。これによって、ノード１００内のメモリ１１１〜１１４のデータを最新の状態に更新することができ、コヒーレンシを保証することができる。なお、ノードコントローラ１２１のディレクトリ５２３、５４３と、ノードコントローラ１２２のディレクトリ５２３Ｂ、５４３Ｂとは、各ノード間のコヒーレンシを保証するために、ノード１００外のプロセッサによるキャッシュ状況を記録している。そのため、ノード１００内のプロセッサがメモリ１１１〜１１４のデータをキャッシュしていたとしても問題とはならない。
【００４９】
（ステップＳ６０４）
ノードコントローラ１２１は、振り分け制御レジスタ部５００のレジスタ５０２に設定されたＩＤを、ノードコントローラ１２２のＩＤへ変更する。これによって、ノードコントローラ１２２宛てのリクエストは、リクエスト制御部５０９へ転送されることになる。つまり、ノードコントローラ１２１宛てのリクエストは、リクエスト制御部５０８へ、ノードコントローラ１２２宛てのリクエストは、リクエスト制御部５０９へ出力されることになる。なお、本実施形態では、レジスタ５０２に設定されたＩＤを変更しているが、レジスタ５０１に設定されたＩＤをノードコントローラ１２２のＩＤへ変更することも可能である。この場合は、ノードコントローラ１２２宛てのリクエストは、リクエスト制御部５０８へ転送されることになる。
【００５０】
（ステップＳ６０５）
ノードコントローラ１２１は、ノードコントローラ１２１のリクエスト制御部５０９の備えるノード内アクセスアドレスデコーダ５４２がデコードを行うアドレス範囲を、ノードコントローラ１２２が対応していたアドレス範囲まで含むように変更する。リクエスト制御部５０９は、ノードコントローラ１２２宛てのリクエストを振り分けられるため、ノード内アクセスアドレスデコーダ５４２をノードコントローラ１２２のアドレス対応範囲まで適応させるためである。これによって、リクエスト制御部５０９にノードコントローラ１２２宛てのリクエストが転送されたとしても、ノード内アクセスアドレスデコーダ５４２は、ノードコントローラ１２２対応していたアドレス範囲に基づいて送信先のＩＤを決定することができる。なお、ノード外アクセス用アドレスデコーダ５３２は、ノードコントローラ１２１とノードコントローラ１２２で同様であるので、特に対応するための処理を行う必要はない。
【００５１】
（ステップＳ６０６）
システムファームウェアは、ノードコントローラ１２１、１２２以外のノードコントローラ２２１、２２２、３２１、３２２の備えるルーティングテーブルを、縮退したノードコントローラ１２２を経由しないルーティング経路となるように設定を変更する。例えば、ノードコントローラ２２２からノードコントローラ１２１へアクセスする場合に、ノードコントローラ２２２から、ノードコントローラ１２２を経由して、ノードコントローラ１２１へ、という経路設定であるならば、ノードコントローラ２２２から、ノードコントローラ２２１を経由して、ノードコントローラ１２１へという経路設定へ変更する。
【００５２】
また、ノードコントローラ１２２のＩＤへのアクセスがノードコントローラ１２１へ転送されるように、ルーティングテーブルの設定を変更する。このように設定することで、ノードコントローラ１２２宛てのリクエストは、ノードコントローラ１２１へ転送されることになる。ノードコントローラ１２１は、ノードコントローラ１２２宛てのリクエストを、リクエスト制御部５０９において処理するように設定されている。そのため、ノードコントローラ１２１は、ノードコントローラ１２２宛てのリクエストを受信して処理を行うことになる。
【００５３】
（ステップＳ６０７）
ノード１００内のプロセッサ１０１〜１０４は、ノードコントローラ１２２へのアクセスがノードコントローラ１２１へのアクセスとなるように、ルーティングテーブルの設定を変更する。すなわち、ノードコントローラ１２２のＩＤに対応する信号線を、ノードコントローラ１２１と接続された信号線へ変更する。このようにすることで、ノードコントローラ１２２宛てのリクエストは、ノードコントローラ１２１接続された信号線へ出力されて、ノードコントローラ１２１のリクエスト制御部５０９で処理されることになる。
【００５４】
（ステップＳ６０８）
システムファームウェアは、ノード１００、２００、３００に対するリクエストの出力抑止を解除する。その後、マルチプロセッサシステムが再開する。
【００５５】
以上が、本実施形態のマルチプロセッサシステムにおけるノードコントローラ故障時の動作方法の説明である。このように、本実施形態のマルチプロセッサシステムでは、冗長化されたノードコントローラ１２２の障害時において、ノードコントローラ１２１は、内部のレジスタ５０２にノードコントローラ１２２のＩＤを設定することで、ノードコントローラ１２２宛てのリクエスト等を処理することが可能となる。そのため、ノード１００内のプロセッサ１０１〜１０４や、他のノード２００、３００のノードコントローラ２２１、２２２、３２１、３２２の備えるルーティングテーブルの設定を、ノードコントローラ１２２宛てのリクエストがノードコントローラ１２１宛てに送信されるように変更するのみで、システムを再開することができる。そのため、リクエストの送信先ＩＤ自体を書き換えるために、各ノードのアドレスデコーダを書き換える場合に比べて、短時間でシステムを再開することができる。
【００５６】
次に、図７Ａ、及び図７Ｂを用いて、本実施形態のマルチプロセッサシステムにおけるノード内からリクエストを受信した場合のノードコントローラの動作方法を説明する。図７Ａ、及び図７Ｂは、本実施形態のマルチプロセッサシステムにおけるノード内からリクエストを受信した場合のノードコントローラの動作フローである。以下の説明では、ノード１００のプロセッサ１０１から、ノード２００のメモリ２１４へのリードリクエストが発行された場合を説明する。つまり、ノード１００内のプロセッサ１０１が、ノード１００外のメモリ２１４へアクセスする場合を説明する。
【００５７】
（ステップＳ７０１）
キャッシュ制御部４０２は、ノード２００のメモリ２１４へのリードリクエスト（以下、本説明においてリクエストと呼ぶ。）を生成する。プロセッサ１０１は、プロセッサ１０１上で動作するプロセスから要求を入力する。プロセッサ１０１のリクエスト処理部４０１は、ノード２００のメモリ２１４に記録されたデータをキャッシュするための命令を生成する。キャッシュ制御部４０２は、リクエスト処理部４０１の生成した命令に基づいて、ノード２００のメモリ２１４に記録されたデータをキャッシュするためのリードリクエストを生成する。
【００５８】
（ステップＳ７０２）
プロセッサ１０１は、リクエストの送信先ＩＤを決定する。プロセッサ１０１は、アドレスデコーダ４０３を参照して、キャッシュ制御部４０２の生成したリードリクエストに含まれるアクセス先のアドレスに基づいて、当該リードリクエストを送信する送信先ＩＤを決定する。なお、本説明では、アクセス先のアドレスがノード２００内のメモリ２４１上であるため、プロセッサ１０１は、送信先ＩＤをノードコントローラ１２１のＩＤに決定する。
【００５９】
（ステップＳ７０３）
プロセッサ１０１は、リクエストを出力する信号線を決定する。プロセッサ１０１は、ルーティングテーブル４０４を参照して、アドレスデコーダ４０３の決定した送信先ＩＤに基づいて、出力する信号線を決定する。クロスバ４０６は、ルーティングテーブル４０４の決定した信号線へ、リクエストを出力する。本説明では、送信先ＩＤがノードコントローラ１２１のＩＤであるため、プロセッサ１０１は、出力する信号線を信号線１５１と決定する。
【００６０】
（ステップＳ７０４）
ノードコントローラ１２１は、リクエスト制御部５０８、５０９のいずれにリクエストを出力するかを決定する。ノードコントローラ１２１は、プロセッサ１０１からリクエストを、クロスバ５０５に受信する。ノードコントローラ１２１は、ルーティングテーブル５０４に設定されたルーティング情報と、リクエスト振り分け情報レジスタ部５００のレジスタ５０１〜５０３に設定された情報とを参照して、リクエスト制御部５０８、５０９のいずれにリクエストを出力するかを決定する。
【００６１】
ルーティングテーブル５０４は、リクエスト振り分け情報レジスタ部５００からレジスタ５０１、５０２に設定されたＩＤを取得できる。ノードコントローラ１２１は、リクエストに含まれた送信先ＩＤがレジスタ５０１と一致する場合、リクエスト制御部５０８へ当該リクエストを出力する。一方、ノードコントローラ１２１は、リクエストに含まれた送信先ＩＤがレジスタ５０２と一致する場合、リクエスト制御部５０９へ当該リクエストを出力する。また、ノードコントローラ１２１は、リクエストに含まれた送信先ＩＤがレジスタ５０１、５０２のいずれとも一致する場合、レジスタ５０３に設定された値に基づいてアドレスインタリーブを行って、当該リクエストをリクエスト制御部５０８、５０９のいずれに出力するかを決定する。さらに、ノードコントローラ１２１は、リクエストに含まれた送信先ＩＤがレジスタ５０１、５０２のいずれとも一致しない場合、当該リクエストは、他のノードコントローラ、あるいはプロセッサ宛であると判定して、ルーティングテーブル５０４に設定されたルーティング情報を参照して出力先を決定する。クロスバ５０５は、ルーティングテーブル５０４によって決定された出力先へ、リクエストを出力する。なお、本説明において、ノードコントローラ１２１は、当該リクエストの出力先として、リクエスト制御部５０８のノード外メモリアクセス制御部５１０と決定する。
【００６２】
（ステップＳ７０５）
ノードコントローラ１２１は、リクエストの送信先ＩＤを決定する。リクエスト制御部５０８のノード外メモリアクセス制御部５１０は、クロスバ５０４からリクエストを入力する。ノード外メモリアクセス制御部５１０は、当該リクエストを、ノード外メモリアクセスリクエスト格納バッファ５１１へ格納する。ノード外メモリアクセス制御部５１０は、リクエストをクロスバ５０７へ出力する。また、同時に、ノード外メモリアクセス制御部５１０は、ノード外アクセス用アドレスデコーダ５１２を参照して、リクエストに含まれるアクセス先のアドレスに基づいて、リクエストの転送先をノードコントローラ２２２と決定して、ノードコントローラ２２２の送信先ＩＤをクロスバ５０７へ出力する。なお、本説明では、ノードコントローラ２２２は、アクセス先のアドレスがノード２００のメモリ２１４であるため、ノード２００のノードコントローラ２２１のＩＤを送信先ＩＤと決定する。
【００６３】
（ステップＳ７０６）
ノードコントローラ１２１は、送信先ＩＤに基づいて、リクエストを出力する信号線を決定する。クロスバ５０７は、ノード外アクセス用アドレスデコーダ５１２から送信先ＩＤを入力する。また、クロスバ５０７は、ノード外メモリアクセスリクエスト格納バッファ５１１からリクエストを入力する。ノードコントローラ１２１は、ルーティングテーブル５０６に設定されたルーティング情報を参照して、送信先ＩＤに基づいて、リクエストを出力する信号線を決定する。クロスバ５０７は、決定した信号線２２へリクエストを出力する。なお、本説明において、送信先ＩＤがノードコントローラ２２１のＩＤであるため、ルーティングテーブル５０６は、リクエストの出力先を出力線２２と決定する。クロスバ５０７は、リクエスト２２を出力線２２へ出力する。
【００６４】
（ステップＳ７０７）
ノード２００において処理が行われて、メモリ２１４からリプライデータを受信する。ノード２００のノードコントローラ２２１は、ノード１００のノードコントローラ１２１からリクエストを受信する。この後の動作は、別ノードでの動作のため説明を省略する。すなわち、この後、リクエストは、ノード２００内のノードコントローラ２２２へ転送される。ノードコントローラ２２２は、メモリ２１４のデータのキャッシュ状況の確認をおこなう。リクエストはプロセッサ２０４へ送信されて、プロセッサ２０４からメモリ２１４へアクセスが行われる。メモリ２１４のアクセス先のアドレスのデータが、リプライデータとして送信時の経路を経由して、ノードコントローラ１２１へ送信される。
【００６５】
（ステップＳ７０８）
ノードコントローラ１２１は、リクエスト制御部５０８、５０９のいずれにリプライデータを出力するかを決定する。ノードコントローラ１２１は、メモリ２１４からのリプライデータをクロスバ５０５に入力する。ノードコントローラ１２１は、ルーティングテーブル５０４に設定されたルーティング情報と、リクエスト振り分け情報レジスタ部５００の各レジスタに設定された情報とを参照して、リクエスト制御部５０８、５０９のいずれにリプライデータを出力するかを決定する。この処理は、ステップＳ７０４で説明を行った処理と同様であるので、重ねての説明を省略する。なお、本説明において、ノードコントローラ１２１は、リプライデータの出力先をリクエスト制御部５０８のノード外メモリアクセス制御部５１０と決定する。クロスバ５０５は、ルーティングテーブル５０４により決定した出力先へリプライデータを出力する。
【００６６】
（ステップＳ７０９）
ノード外メモリアクセス制御部５１０は、格納していたリクエストからリクエスト元のＩＤを取得する。ノード外メモリアクセス制御部５１０は、クロスバ５０５からリプライデータを入力すると、ノード外メモリアクセスリクエスト格納バッファ５１１へ格納していたリクエストに基づいて、当該リプライデータのリクエスト元のプロセッサ１０１のＩＤを決定する。ノード外メモリアクセス制御部５１０は、クロスバ５０７へ、プロセッサ１１のＩＤと共にリプライデータを出力する。
【００６７】
（ステップＳ７１０）
ノードコントローラ１２１は、リプライデータを出力する信号線を決定する。クロスバ５０７は、ノード外メモリアクセス制御部５１０からリプライデータを入力する。ノードコントローラ１２１は、ルーティングテーブル５０６に設定されたルーティング情報を参照して、リクエスト元のＩＤに基づいてリプライデータを出力する信号線を決定する。クロスバ５０５は、ルーティングテーブル５０６により決定された信号線へリプライデータを出力する。なお、本説明において、ノードコントローラ１２１は、リプライデータの信号線を、リクエスト元のプロセッサ１０１のＩＤに対応する信号線１５１と決定する。クロスバ５０５は、リプライデータを信号線１５１へ出力する
【００６８】
（ステップＳ７１１）
プロセッサ１０１は、リプライデータをキャッシュ４０５へ保存すると共に、リクエスト処理部４０１へリプライデータを出力する。プロセッサ１０１のクロスバ４０６は、信号線１５１からリプライデータを受信する。クロスバ４０６は、リプライデータをキャッシュ制御部４０２へ出力する。キャッシュ制御部４０２は、リプライデータをキャッシュ４０５へ保存すると共に、リプライデータをリクエスト処理部４０１へ出力する。これにより、リードリクエスト処理は完了する。
【００６９】
以上が、本実施形態のマルチプロセッサシステムにおけるノード内からリクエストを受信した場合のノードコントローラの動作方法の説明である。
【００７０】
次に、図８Ａ〜図８Ｃを用いて、本実施形態のマルチプロセッサシステムにおけるノード外からリクエストを受信した場合のノードコントローラの動作方法を説明する。図８Ａ〜図８Ｃは、本実施形態のマルチプロセッサシステムにおけるノード外からリクエストを受信した場合のノードコントローラの動作フローである。以下の説明では、ノード２００のプロセッサ２０４から、ノード１００のメモリ１０５へのリードリクエストが発行された場合を説明する。つまり、ノード１００外のプロセッサ２０４が、ノード１００内のメモリ１０５へアクセスする場合を説明する。
【００７１】
（ステップＳ８０１）
ノードコントローラ１２１は、ノード２００のプロセッサ２０４からリクエストを受信する。ノード２００のプロセッサ２０４は、ノード１００のメモリ１１１へのリードリクエスト（以下、本説明でリクエストと呼ぶ。）を発行する。この動作は、ステップＳ７０１からステップＳ７０３においてプロセッサ１０１が行った処理と同様であるので説明を省略する。プロセッサ２０４の出力したリクエストは、ノードコントローラ２２１を介して、ノード１００へ転送される。ノードコントローラ１２１は、ノードコントローラ２２１からプロセッサ２０４の発行したリクエストを、クロスバ５０５に受信する。
【００７２】
（ステップＳ８０２）
ノードコントローラ１２１は、リクエスト制御部５０８、５０９のいずれにリクエストを出力するかを決定する。ノードコントローラ１２１は、ルーティングテーブル５０４に設定されたルーティング情報とリクエスト振り分け情報レジスタ部５００のレジスタ５０１〜５０３に設定された情報とに基づいて、リクエスト制御部５０８、５０９のいずれにリクエストを出力するかを決定する。なお、本ステップにおける動作は、ステップＳ７０４と同様であるので重ねての説明を省略する。本説明において、ノードコントローラ１２１は、リクエストの出力先として、リクエスト制御部５０８のノード内メモリアクセス制御部５２０と決定する。クロスバ５０５は、リクエストをリクエスト制御部のノード内メモリアクセス制御部５２０へ出力する。
【００７３】
（ステップＳ８０３）
ノード内メモリアクセス制御部５２０は、メモリ１１１のデータキャッシュ状況を確認する。ノード内メモリアクセス制御部５２０は、クロスバ５０５からリクエストを入力すると、リクエストをノード内メモリアクセスリクエスト格納バッファ５２１へ格納する。ノード内メモリアクセス制御部５２０は、ディレクトリ５２３を参照して、リクエストに含まれるアクセス先アドレスのデータキャッシュ状況を確認する。なお、本説明において、ノード内メモリアクセス制御部５２０は、ディレクトリ５２３を参照して、メモリ１１１のデータキャッシュ状況を確認する。
【００７４】
（ステップＳ８０４）
ノード内メモリアクセス制御部５２０は、リクエストに含まれるメモリ１１１のアクセス先アドレスのデータが、他のプロセッサにキャッシュされているか否かを判定する。他のプロセッサにキャッシュされていない場合、ステップＳ８０５へ進む。一方、他のプロセッサにキャッシュされている場合、ステップＳ８０７へ進む。
【００７５】
（ステップＳ８０５）
ノード内メモリアクセス制御部５２０は、リクエストの送信先ＩＤを決定する。ノード内メモリアクセス制御部５２０は、リクエストに含まれるメモリ１１１のアクセス先アドレスのデータが他のプロセッサにキャッシュされていない場合、リクエストをクロスバ５０７へ出力する。同時に、ノード内メモリアクセス制御部５２０は、ノード内アクセス用アドレスデコーダ５２２を参照して、リクエストに含まれるアクセス先のアドレスに基づいて、送信先ＩＤを決定する。ノード内メモリアクセス制御部５２０は、送信先ＩＤをクロスバ５０７へ出力する。なお、本説明において、当該リクエストはメモリ１１１へのリードアクセスであるため、ノード内メモリアクセス制御部５２０は、送信先ＩＤをプロセッサ１０１のＩＤと決定する。
【００７６】
（ステップＳ８０６）
ノードコントローラ１２１は、リクエストを出力する信号線を決定する。クロスバ５０７は、ノード内メモリアクセス制御部５２０からリクエストと送信式ＩＤを入力する。ノードコントローラ１２１は、ルーティングテーブル５０６を参照して、リクエストを出力する信号線を決定する。クロスバ５０７は、ルーティングテーブル５０６により決定された出力先の信号線へリクエストを出力する。なお、本説明において、ノードコントローラ１２１は、プロセッサ１０１と接続された信号線１５１を、リクエストを出力する信号線と決定する。クロスバ５０７は、信号線１５１へリクエストを出力する。
【００７７】
（ステップＳ８０７）
ノード内メモリアクセス制御部５２０は、メモリ１１１のアクセス権の返却を要求するスヌープを生成する。ノード内メモリアクセス制御部５２０は、リクエストに含まれるメモリ１１１のアクセス先アドレスのデータが他のプロセッサにキャッシュされている場合、メモリ１１１のアクセス権の返却を要求するスヌープを生成する。
【００７８】
（ステップＳ８０８）
ノード内メモリアクセス制御部５２０は、スヌープを行うプロセッサの送信先ＩＤを決定する。ノード内メモリアクセス制御部５２０は、ディレクトリ５２３を参照して、アクセス先アドレスのデータをキャッシュしているプロセッサのＩＤを決定する。ノード内メモリアクセス制御部５２０は、スヌープと送信先ＩＤとをクロスバ５０７へ出力する。
【００７９】
（ステップＳ８０９）
ノードコントローラ１２１は、スヌープを出力する信号線を決定する。クロスバ５０７は、ノード内メモリアクセス制御部５２０からスヌープと送信先ＩＤとを入力する。ノードコントローラ１２１は、ルーティングテーブル５０６を参照して、送信先ＩＤに基づいて、スヌープを出力する信号線を決定する。クロスバ５０７は、ルーティングテーブル５０６により決定された信号線へ、スヌープを出力する。
【００８０】
（ステップＳ８１０）
ノード内メモリアクセス制御部５２０は、スヌープの結果に基づいて、所定の処理を行う。ノード内メモリアクセス制御部５２０は、スヌープのリプライを受信すると、必要に応じて、所定の処理を行う。ここで、所定の処理とは、メモリ１１１に対するライトリクエストの生成や、データの送受信や、ディレクトリ５２３の更新等である。このように、ノード内メモリアクセス制御部５２０は、スヌープのリプライに応じて、様々な処理を行うことになるが、これらは従来技術によるため、詳細な説明を省略する。なお、ノードコントローラ１２１は、この後、ステップＳ８０５、及びステップＳ８０６と同様の処理を実行する。すなわち、ノード内メモリアクセス制御部５２０は、リクエストの送信先ＩＤを決定する（ステップＳ８０５）。ノードコントローラ１２１は、リクエストを出力する信号線を決定して、クロスバ５０７は、信号線１５１へリクエストを出力する（ステップＳ８０６）。その後、ステップＳ８１１へ進む。
【００８１】
（ステップＳ８１１）
ノードコントローラ１２１は、メモリ１１１からリプライデータを受信する。プロセッサ１０１は、クロスバ５０７から出力されたリクエストを受信する。プロセッサ１０１は、メモリ１１１へリクエストを転送する。プロセッサ１０１は、メモリ１１１からアクセス先アドレスのデータを取得して、当該データを含めたリプライデータをノードコントローラ１２１へ出力する。
【００８２】
（ステップＳ８１２）
ノードコントローラ１２１は、リクエスト制御部５０８、５０９のいずれにリクエストを出力するかを決定する。ノードコントローラ１２１は、プロセッサ１０１から、リプライデータをクロスバ５０５へ入力する。ノードコントローラ１２１は、ルーティングテーブル５０４に設定されたルーティング情報と、リクエスト振り分け情報レジスタ部５００の各レジスタの情報とを参照して、リクエスト制御部５０８、５０９のいずれにリクエストを出力するかを決定する。クロスバ５０５は、ルーティングテーブル５０４により決定した出力先へリプライデータを出力する。なお、本ステップにおける動作は、ステップＳ７０４と同様であるので重ねての説明を省略する。なお、本説明において、ノードコントローラ１２１は、リプライデータの出力先を、リクエスト制御部５０８のノード内メモリアクセス制御部５２０と決定する。クロスバ５０５は、ノード内メモリアクセス制御部５２０へリプライデータを出力する。
【００８３】
（ステップＳ８１３）
ノード内メモリアクセス制御部５２０は、格納していたリクエストからリクエスト元のＩＤを取得する。ノード内メモリアクセス制御部５１０は、クロスバ５０５からリプライデータを入力すると、ノード内メモリアクセスリクエスト格納バッファ５２１へ格納していたリクエストに基づいて、リクエスト元のプロセッサのＩＤに基づいて、当該リプライデータの送信先ＩＤを決定する。ノード外メモリアクセス制御部５１０は、クロスバ５０７へ、送信先ＩＤと共にリプライデータを出力する。なお、本説明において、ノード内メモリアクセス制御部５１０は、リクエスト元のプロセッサＩＤに基づいて、当該リプライデータの送信先ＩＤを、ノードコントローラ２２１と決定する。
【００８４】
（ステップＳ８１４）
ノードコントローラ１２１は、リプライデータを出力する信号線を決定する。クロスバ５０７は、ノード内メモリアクセス制御部５２０からリプライデータと送信先ＩＤを入力する。ノードコントローラ１２１は、ルーティングテーブル５０６を参照して、送信先ＩＤに基づいて、リプライデータを出力する信号線を決定する。本説明において、ノードコントローラ１２１は、リプライデータの信号線を、ノードコントローラ２２１のＩＤに対応する信号線２２と決定する。クロスバ５０５は、リプライデータを信号線２２へ出力する
【００８５】
（ステップＳ８１５）
ノード内メモリアクセス制御部５２０は、リクエスト元のプロセッサ２０４の情報をディレクトリ５２３へ記録する。ノード内メモリアクセス制御部５２０は、キャッシュラインのアクセス権を渡したプロセッサ２０４の情報をディレクトリへ記録する。これにより、プロセッサ２０４からのリクエストに対するノードコントローラ１２１の処理は完了する。なお、プロセッサ２０４は、ノードコントローラ２２１を介してリプライデータを受信して、プロセッサ２０４のキャッシュにデータを記録すると共に、リクエスト処理部へデータを出力して、リードリクエストを完了する。
【００８６】
以上が、本実施形態のマルチプロセッサシステムにおけるノード外からリクエストを受信した場合のノードコントローラの動作方法の説明である。
【００８７】
ここまで、本実施形態の説明を行ってきた、本発明によれば、各ノードのノードコントローラは、データの処理を行う２つのリクエスト制御部に対応して、いずれのリクエスト制御部にデータを転送するかを決定するためのＩＤを格納する２つのレジスタを備えている。片系のノードコントローラの故障時には、正常なノードコントローラの１つのレジスタへ、故障により縮退したノードコントローラのＩＤを設定する。また、当該ノード外の各ノードコントローラとノード内の各プロセッサのルーティングテーブルとに設定されたデータを、故障したノードコントローラ宛のリクエストを正常なノードコントローラ宛へ転送するように変更を行う。これによって、正常なノードコントローラは、故障したノードコントローラ宛のリクエストを受信して、１つのリクエスト制御部で処理を行うことが可能となる。このように、実際には故障しているノードコントローラ宛のリクエストを正常なノードコントローラで処理を行うことができるため、他ノードの各ノードコントローラや、各プロセッサにおいて、アドレスデコーダの設定変更を行う必要がない。そのため、故障発生時にマルチプロセッサシステムの停止時間を短時間にすることができる。
【００８８】
なお、ノード１００内（他のノード内も含む。）における各ノードコントローラと各プロセッサの接続は、図１で説明を行った接続構成に限定しない。図９、及び図１０は、本実施形態におけるノード１００内の接続構成の変形例を示す図である。例えば、図９に示すように、信号線６０１〜６０９による接続のように各プロセッサ同士を１対１に接続しない接続構成でも良いし、図１０に示すようなバス７００による接続のようなバス型の接続構成でもよい。
【００８９】
また、ノードコントローラ１２１（他のノードコントローラを含む。）は、４つのアドレスデコーダ（５１２、５２２、５３２、５４２）を備えている。これは、ノード外アクセス用アドレスデコーダ５１２、５３２が、ノードコントローラ２２１、２２２、３２１、３２２までを対象としたアドレスデコーダであり、ノード内アクセス用アドレスデコーダ５２２、５４２が、ノード１００内のプロセッサ１０１〜１０４を対象としたアドレスデコーダであるためである。しかし、ノード外アクセス用アドレスデコーダ５１２、５３２が、ノード１００外のノード２００、３００の備えるプロセッサ２０１〜２０４、３０１〜３０４までを対象とするアドレスデコーダであるなら、ノード内へアクセスするときには、ノードコントローラ１２１から出力する出力先のプロセッサのＩＤが判明しているので、ノード内アクセス用アドレスデコーダ５２２、５４２を備えない構成とすることも可能である。
【００９０】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明の範囲内で当業者が理解し得る様々な変更を行うことが可能である。
【符号の説明】
【００９１】
１０〜１２  信号線
２０〜２２  信号線
１００  ノード
１０１〜１０４  プロセッサ
１１１〜１１４  メモリ
１２１、１２２  ノードコントローラ
１５１〜１６９  信号線
２００  ノード
２０１〜２０４  プロセッサ
２１１〜２１４  メモリ
２２１、２２２  ノードコントローラ
２６９  信号線
３００  ノード
３０１〜３０４  プロセッサ
３１１〜３１４  メモリ
３２１、３２２  ノードコントローラ
３６９  信号線
４０１  リクエスト処理部
４０２  キャッシュ制御部
４０３  アドレスデコーダ
４０４  ルーティングテーブル
４０５  キャッシュ
４０６  クロスバ
５００  リクエスト振り分け情報レジスタ部
５０１  レジスタ
５０２  レジスタ
５０３  レジスタ
５０４  ルーティングテーブル
５０５  クロスバ
５０６  ルーティングテーブル
５０７  クロスバ
５０８  リクエスト制御部
５０９  リクエスト制御部
５１０  ノード外メモリアクセス制御部
５１１  ノード外メモリアクセスリクエスト格納バッファ
５１２  ノード外アクセス用アドレスデコーダ
５２０  ノード内メモリアクセス制御部
５２１  ノード内メモリアクセスリクエスト格納バッファ
５２２  ノード内アクセス用アドレスデコーダ
５２３  ディレクトリ
５３０  ノード外メモリアクセス制御部
５３１  ノード外メモリアクセスリクエスト格納バッファ
５３２  ノード外アクセス用アドレスデコーダ
５４０  ノード内メモリアクセス制御部
５４１  ノード内メモリアクセスリクエスト格納バッファ
５４２  ノード内アクセス用アドレスデコーダ
５４３  ディレクトリ
６０１〜６０９  信号線
７００  バス
【図１】
2010231723.tif 000003
【図２】
2010231723.tif 000004
【図３】
2010231723.tif 000005
【図４】
2010231723.tif 000006
【図５】
2010231723.tif 000007
【図６】
2010231723.tif 000008
【図７Ａ】
2010231723.tif 000009
【図７Ｂ】
2010231723.tif 000010
【図８Ａ】
2010231723.tif 000011
【図８Ｂ】
2010231723.tif 000012
【図８Ｃ】
2010231723.tif 000013
【図９】
2010231723.tif 000014
【図１０】
2010231723.tif 000015