(57)【特許請求の範囲】
【請求項１】
演算処理装置とメモリをそれぞれ備えた複数のノードを有する情報処理装置において、
前記演算処理装置は、
他のノードに含まれる前記メモリに対するリクエストを生成するリクエスト生成部と、
前記他のノードに対して生成された前記リクエストを発行するリクエスト発行部と、
故障情報を記憶する記憶部と、
所定の契機で前記他のノードに対して応答要求を送信し、所定時間内に前記他のノードから応答を受信しない場合、前記他のノードの故障を示す情報を前記故障情報として前記記憶部に記憶させる制御部と、
前記故障情報が前記他のノードの故障を示す場合、前記リクエスト発行部による前記リクエストの発行を抑止する抑止部とを含む、
ことを特徴とする情報処理装置。
【請求項２】
前記制御部は、前記複数のノード間における経路の故障又はノード故障を示す故障通知を受信した場合を前記所定の契機として、前記他のノードに対して前記応答要求を発行することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記制御部は、前記複数のノードのうちいずれかのノードから前記応答要求を受信した場合を前記所定の契機として、前記他のノードに対して前記応答要求を発行することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記制御部は、前記所定の契機において前記他のノードに対して前記応答要求を発行済みである場合、前記応答要求の発行を抑止することを特徴とする請求項１記載の情報処理装置。
【請求項５】
複数のノードを有する情報処理装置の制御方法であって、
前記複数のノード各々に含まれる演算処理装置が、所定の契機で他のノードに対して応答要求を送信し、
所定時間内に前記他のノードから応答を受信しない場合、前記演算処理装置が、前記他のノードの故障を示す情報を、記憶部が記憶する故障情報に設定し、
前記演算処理装置が、前記他のノードに含まれるメモリに対するリクエストを生成し、
前記故障情報が前記他のノードの故障を示す場合、前記演算処理装置が、前記他のノードに対する前記リクエストの発行を抑止する、
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
複数の演算処理装置が主記憶装置（メインメモリ）を共有する対称型マルチプロセッサ（ＳＭＰ：Symmetric Multi-Processor）が知られている。ＳＭＰの技術が適用された情報処理システムの一例として、演算処理装置とメモリとを含む複数のノードをバスで接続し、各ノードの演算処理装置がバスを介して他のノードのメモリにアクセスする共有メモリシステムがある。このような共有メモリシステムでは、ディレクトリ方式を用いて、各ノードの演算処理装置がキャッシュしたデータのコヒーレンシ（キャッシュコヒーレンシ）を保持することがある。
【０００３】
しかし、ＳＭＰでは、複数のノードを１パーティションとして扱うため、１つのノードの故障が他のノードすべてのノードダウンにつながる。
【０００４】
共有メモリシステムがダウンする可能性を抑制する技術、ノード間におけるデータ転送の異常の影響範囲を抑える技術等も知られている（例えば、特許文献１及び特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１８２３５５号公報
【特許文献２】特開２０１３−１４０４４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＳＭＰを利用した複数のノードが主記憶装置を共有する共有メモリシステムにおいて、いずれかのノードが故障によりダウンした際に、その影響を受けて、直接的に故障と関係のない他のノードもダウンすることがある。
【０００７】
なお、かかる問題は、共有メモリシステムに限らず、複数のノードを有する他の情報処理装置においても生ずるものである。
【０００８】
１つの側面において、本発明は、複数のノードを有する情報処理装置において、他のノードの故障によるノードダウンを防止することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、情報処理装置は、演算処理装置とメモリをそれぞれ含む複数のノードを有する。演算処理装置は、リクエスト生成部、リクエスト発行部、記憶部、制御部、及び抑止部を含む。
【００１０】
リクエスト生成部は、他のノードに含まれるメモリに対するリクエストを生成し、リクエスト発行部は、他のノードに対して生成されたリクエストを発行する。記憶部は、故障情報を記憶し、制御部は、所定の契機で他のノードに対して応答要求を送信し、所定時間内に他のノードから応答を受信しない場合、他のノードの故障を示す情報を故障情報として記憶部に記憶させる。抑止部は、故障情報が他のノードの故障を示す場合、リクエスト発行部によるリクエストの発行を抑止する。
【発明の効果】
【００１１】
実施形態によれば、複数のノードを有する情報処理装置において、他のノードの故障によるノードダウンを防止することができる。
【図面の簡単な説明】
【００１２】
【図１】共有メモリシステムの構成図である。
【図２】抑止動作を示す図である。
【図３】ノード故障が発生した場合の登録動作を示す図である。
【図４】タイマ積算を示す図である。
【図５】ノード故障を示す図である。
【図６】情報処理装置の構成図である。
【図７】情報処理装置の制御方法のフローチャートである。
【図８】情報処理装置の具体例の構成図である。
【図９】ＨＡ回路の構成図である。
【図１０】制御回路及びルータ回路の構成図である。
【図１１】探索パケットを示す図である。
【図１２】ノード故障と経路故障とを判別する方法を示す図である。
【図１３】探索パケットの増殖を示す図である。
【図１４】ＦＡＴＡＬパケットを受信した場合の登録動作を示す図である。
【図１５】共有メモリシステムにおけるエラー回復シーケンスを示す図である。
【図１６】情報処理装置におけるエラー回復シーケンスを示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、実施形態を詳細に説明する。
図１は、ＳＭＰを利用した共有メモリシステムの構成例を示している。図１の共有メモリシステム１００は、ノード１０１−１〜ノード１０１−Ｍ（Ｍは２以上の整数）のＭ個のノードと、クロスバスイッチ１０２とを含む。各ノード１０１−ｉ（ｉ＝１〜Ｍ）は、クロスバスイッチ１０２を介して互いに接続されている。各ノード１０１−ｉは、ビルディングブロックと呼ばれることもある。以下では、各ノード１０１−ｉを、単にノード１０１と記すことがある。
【００１４】
各ノード１０１は、１つ以上のメモリ１１１、１つ以上の中央処理装置（ＣＰＵ）１１２、及びクロスバチップ（ＬＸＢ）１１３を含む。各ＣＰＵ１１２は、外部インタフェース（ＩＦ）１２１を含み、外部ＩＦ１２１によって同じノード１０１内の他のＣＰＵ１１２と接続されている。また、各ＣＰＵ１１２は、ＬＸＢ１１３及びクロスバスイッチ１０２を介して、他のノード１０１内のＣＰＵ１１２と接続されている。
【００１５】
また、各ＣＰＵ１１２は、メモリ１１１とも接続されている。各メモリ１１１は、同じノード１０１内のＣＰＵ１１２のみが使用できるローカル領域と、他のノード１０１内のＣＰＵ１１２も使用できる共有領域とを含む。
【００１６】
各ＣＰＵ１１２から各メモリ１１１へのアクセスは、キャッシュコヒーレンシを保持しながら処理される。このとき、ＣＰＵ１１２内のパイプラインによって、アクセスの順序制御が行われ、タイムアウト等のエラー応答で終了する場合であっても、ＣＰＵ１１２の処理監視時間内にアクセスの処理が完了する。この処理監視時間としては、例えば、１秒程度以内の時間が用いられる。
【００１７】
しかし、異常ノード１０１へのアクセスがタイムアウトし、同じ異常ノード１０１へのアクセスが複数回連続して発生すると、処理が完了するまでに１秒近くかかることがあり得る。この場合、ＣＰＵ１１２の処理監視時間内に処理が完了せず、アクセス元のノード１０１自体が異常ノードになることがある。
【００１８】
このように、あるノード１０１が故障によりダウンした際に、その影響を受けて、直接的に故障と関係のない他のノード１０１もダウンすることを防止するために、先願である特願２０１５−１４１８４２号に記載された共有メモリシステムが提案されている。
【００１９】
先願の共有メモリシステムでは、故障ノードを示す故障ノードリスト（ＦＮＬ：Fail Node List）がＣＰＵ１１２内に設けられる。ＣＰＵ１１２は、他のノード１０１内のメモリ１１１の共有領域にアクセスするリクエストを発行する際に、ＦＮＬを参照して故障ノードに対する新規のリクエストの発行を抑止し、タイムアウトを待つことなく、直ちにエラーとして処理する。また、ＦＮＬに故障ノードが登録されたことを示す割り込み通知をソフトウェアへ出力することで、故障ノードの判定及び切り離しが可能になる。
【００２０】
以下では、共有メモリシステム１００におけるノード１０１の故障を「ノード故障」と記し、クロスバスイッチ１０２、又はクロスバスイッチ１０２とノード１０１との間のケーブルの故障を「経路故障」と記すことがある。
【００２１】
ＦＮＬは故障ノードを示す故障情報であるため、ノード故障が発生したノードをＦＮＬに登録することが望ましい。しかし、経路故障が発生した経路を通過するパケットが喪失した場合に、そのパケットの宛先ノードをＦＮＬに登録することは適切ではない。そこで、パケット送信中に経路故障の発生を通知するＦＡＴＡＬパケットを受信した場合、ＦＮＬに故障ノードを登録する動作が抑止される。
【００２２】
図２は、経路故障が発生した場合に故障ノードの登録を抑止する抑止動作の例を示している。ノード間の経路は冗長化されており、例えば、パケットの送信元ノード１０１と宛先ノード１０１との間には、経路＃０及び経路＃１の２本の経路が存在する。図２の抑止動作は、以下の手順で実行される。
【００２３】
（１）ノード１０１のＣＰＵ１１２のホームエージェント（ＨＡ）回路は、他のノード１０１内のメモリ１１１にアクセスするリクエストを発行し、発行したリクエストに対するタイマを起動する。
（２）クロスバスイッチ１０２は、経路＃０の異常を検出した場合、ＦＡＴＡＬパケットＦＡＴＡＬ−ＸＸＸ＃０を経路＃０へ出力する。
（３）ＣＰＵ１１２の外部ＩＦ１２１は、ＦＡＴＡＬ−ＸＸＸ＃０を受信する。
（４）外部ＩＦ１２１は、ＦＡＴＡＬ−ＸＸＸ＃０に対応する経路＃０を縮退候補に設定する。
（５）外部ＩＦ１２１は、異常検出通知をＨＡ回路へ出力する。
（６）ＨＡ回路は、異常検出通知に基づいて、縮退実行を待ち合わせる期間をカウントするドレインタイマを起動する。
（７）ＨＡ回路は、異常検出通知に基づいてＦＮＬ設定抑止信号を生成する。
（８）ＨＡ回路は、ＦＮＬ設定抑止信号に基づいて、処理が完了していないリクエストに対する設定抑止情報を生成する。
（９）外部ＩＦ１２１は、手順（１）で発行されたリクエストのパケットを、経路＃０を介して宛先ノード１０１へ送信する。
（１０）経路＃０の経路故障のため、送信されたパケットが喪失する。
（１１）ＨＡ回路は、ドレインタイマが所定時間のカウントを完了すると、縮退実行を指示するＧＯ信号を外部ＩＦ１２１へ出力する。
（１２）外部ＩＦ１２１は、ＧＯ信号に基づいて、経路＃０を縮退候補から縮退対象に変更し、経路＃０の縮退を実行する。
（１３）発行したリクエストに対するタイマがタイムアウトする。
（１４）ＨＡ回路は、タイムアウトしたリクエストに対する設定抑止情報に基づいて、宛先ノード１０１をＦＮＬに設定する動作を抑止し、その設定抑止情報を消去する。
【００２４】
このような抑止動作によれば、経路故障が検出された場合は、リクエストがタイムアウトしても故障ノードの登録が抑止される。したがって、正常な宛先ノード１０１を故障ノードとしてＦＮＬに登録し、そのノード１０１に対するリクエストの発行を抑止することが防止される。
【００２５】
しかし、経路故障ではなく、ノード故障が発生している場合、図２の抑止動作によって、１回目のタイムアウト発生したときにＦＮＬに故障ノードが登録されず、２回目以降のタイムアウトが発生したときに故障ノードが登録される。例えば、ノード間に冗長化されたＫ本（Ｋは２以上の整数）の経路が存在する場合、Ｋ回目のタイムアウトが発生したときにＦＮＬに故障ノードを登録してもよい。
【００２６】
図３は、ノード間に２本の経路が存在し、ノード故障が発生した場合に、２回目のタイムアウトで故障ノードを登録する登録動作の例を示している。図３の登録動作は、以下の手順で実行される。
【００２７】
（２１）ノード１０１のＣＰＵ１１２のＨＡ回路は、他のノード１０１内のメモリ１１１にアクセスするリクエストを発行し、発行したリクエストに対するタイマを起動する。
（２２）クロスバスイッチ１０２は、経路＃０の異常を検出した場合、ＦＡＴＡＬパケットＦＡＴＡＬ−ＸＸＸ＃０を経路＃０へ出力する。
（２３）ＣＰＵ１１２の外部ＩＦ１２１は、ＦＡＴＡＬ−ＸＸＸ＃０を受信する。
（２４）外部ＩＦ１２１は、ＦＡＴＡＬ−ＸＸＸ＃０に対応する経路＃０を縮退候補に設定する。
（２５）外部ＩＦ１２１は、異常検出通知をＨＡ回路へ出力する。
（２６）ＨＡ回路は、異常検出通知に基づいてドレインタイマを起動する。
（２７）ＨＡ回路は、異常検出通知に基づいてＦＮＬ設定抑止信号を生成する。
（２８）ＨＡ回路は、ＦＮＬ設定抑止信号に基づいて、処理が完了していないリクエストに対する設定抑止情報を生成する。
（２９）外部ＩＦ１２１は、手順（２１）で発行されたリクエストのパケットを、経路＃０又は経路＃１を介して宛先ノード１０１へ送信する。
（３０）宛先ノード１０１のノード故障のため、送信されたパケットが喪失する。
（３１）クロスバスイッチ１０２は、経路＃１の異常を検出した場合、ＦＡＴＡＬパケットＦＡＴＡＬ−ＸＸＸ＃１を経路＃１へ出力する。
（３２）ＣＰＵ１１２の外部ＩＦ１２１は、ＦＡＴＡＬ−ＸＸＸ＃１を受信する。
（３３）外部ＩＦ１２１は、ＦＡＴＡＬ−ＸＸＸ＃１に対応する経路＃１を縮退候補に設定する。
（３４）外部ＩＦ１２１は、異常検出通知をＨＡ回路へ出力する。このとき、ドレインタイマが既に起動されているため、異常検出通知は無視される。
（３５）ＨＡ回路は、ドレインタイマが所定時間のカウントを完了すると、縮退実行を指示するＧＯ信号を外部ＩＦ１２１へ出力する。
（３６）外部ＩＦ１２１は、ＧＯ信号に基づいて、設定されている縮退候補をチェックする。この場合、経路＃０及び経路＃１の両方が縮退候補に設定されているため、外部ＩＦ１２１は、経路の縮退を実行しない。
（３７）発行したリクエストに対するタイマがタイムアウトする。
（３８）ＨＡ回路は、タイムアウトしたリクエストに対する設定抑止情報に基づいて、宛先ノード１０１をＦＮＬに設定する動作を抑止し、その設定抑止情報を消去する。
（３９）ＨＡ回路は、手順（２１）で発行されたリクエストと同じノード１０１内のメモリ１１１にアクセスするリクエストを発行し、発行したリクエストに対するタイマを起動する。
（４０）外部ＩＦ１２１は、手順（３９）で発行されたリクエストのパケットを、経路＃０又は経路＃１を介して宛先ノード１０１へ送信する。
（４１）宛先ノード１０１のノード故障のため、送信されたパケットが喪失する。
（４２）発行したリクエストに対するタイマがタイムアウトする。
（４３）ＨＡ回路は、同じ宛先ノード１０１に対して２回目のタイムアウトが発生したため、その宛先ノード１０１を故障ノードとしてＦＮＬに設定する。
【００２８】
この場合、手順（２１）から手順（４３）までの期間３０１において、ＦＮＬに故障ノードが登録されないため、パケットが喪失し続けることになる。同じ宛先ノード１０１のパケットしか送信されない場合、ワーストケースでは、期間３０１がリクエストに対するタイマのカウント時間の２倍になる。このように、経路故障によるＦＮＬの設定を抑止するために、結果としてノード故障が発生したときのＦＮＬの設定が遅延し、共有メモリシステムの性能低下を招く。
【００２９】
図４は、ノード間におけるデータのコヒーレンシ制御に伴って発生する、タイマ積算の例を示している。ローカルノードＬＮ、ホームノードＨＮ、及びリモートノードＲＮは、図１のノード１０１−１〜ノード１０１−Ｍのいずれかに対応する。
【００３０】
ローカルノードＬＮのＣＰＵ１１２は、例えば、リモートノードＲＮ内のメモリ１１１に格納されたデータを要求するリクエストパケット４０１を、ホームノードＨＮのＣＰＵ１１２へ送信する。そして、ホームノードＨＮのＣＰＵ１１２は、そのデータを要求するリクエストパケット４０２を、リモートノードＲＮのＣＰＵ１１２へ送信する。
【００３１】
リモートノードＲＮのＣＰＵ１１２から応答パケットが送信されない場合、ホームノードＨＮのＣＰＵ１１２内のＦＮＬに故障ノードが登録されるまでに、ホームノードＨＮのタイマのカウント時間Ｔ３の２倍の時間が積算される。このため、ローカルノードＬＮのＣＰＵ１１２のタイマのカウント時間Ｔ２は、Ｔ３の２倍に設定され、ローカルノードＬＮのＣＰＵ１１２内のＦＮＬに故障ノードが登録されるまでに、Ｔ２の２倍の時間が積算される。したがって、ローカルノードＬＮのＣＰＵ１１２における処理監視時間Ｔ１は、Ｔ２の２倍に設定され、Ｔ３の４倍に相当する。
【００３２】
このように、コヒーレンシ制御に伴ってタイマ積算が発生するため、各ＣＰＵ１１２における処理監視時間が長くなる。
【００３３】
また、図３の登録動作では、故障ノードに対するリクエストのタイムアウトを待ってＦＮＬにその故障ノードを登録しているため、故障ノードに対するリクエストが発行されなければ、その故障ノードがＦＮＬに登録されることはない。
【００３４】
図５は、ノード故障の例を示している。ノード１０１−（ｉ＋１）のノード故障が発生し、ノード１０１−１のＣＰＵ１１２がノード１０１−（ｉ＋１）に対して発行したリクエストのタイムアウトが２回発生した場合を想定する。この場合、ノード１０１−１のＦＮＬ５０１には、ノード１０１−（ｉ＋１）が故障ノードとして登録される。しかし、このままでは、ノード１０１−２、ノード１０１−（ｉ＋２）等の他のノード１０１のＦＮＬ５０１には、ノード１０１−（ｉ＋１）が登録されない。
【００３５】
このように、ＣＰＵ１１２毎にＦＮＬが設けられているため、特定のノード１０１が故障ノード１０１を検出したとしても、故障ノード１０１の情報が他のノード１０１のＦＮＬには反映されない。このため、他のノード１０１において同じ故障ノードに対するリクエストが発行され、２回目のタイムアウトが発生するまで、他のノード１０１のＦＮＬへの登録が待たされることになる。さらに、他のノード１０１において同じ故障ノード１０１に対するリクエストが発行されなければ、その故障ノード１０１は他のノード１０１のＦＮＬには登録されない。
【００３６】
そこで、共有メモリシステム１００から故障ノード１０１を切り離して、正常なノード１０１のみで共有メモリシステム１００を運用するために、ソフトウェアによってＦＮＬの故障情報を共有することが考えられる。しかし、ソフトウェアによるＦＮＬ同期処理には時間がかかるため、ノード故障の発生からエラー回復までの時間が長くなる。
【００３７】
図６は、実施形態の情報処理装置の構成例を示している。図６の情報処理装置６０１は、ノード６１１−１〜ノード６１１−Ｍ（Ｍは２以上の整数）のＭ個のノードを含み、各ノードは、演算処理装置６２１及びメモリ６２２を含む。演算処理装置６２１は、リクエスト生成回路６３１（リクエスト生成部）、リクエスト発行回路６３２（リクエスト発行部）、記憶回路６３３（記憶部）、制御回路６３４（制御部）、及び抑止回路６３５（抑止部）を含む。
【００３８】
リクエスト生成回路６３１は、他のノードに含まれるメモリ６２２に対するリクエストを生成し、リクエスト発行回路６３２は、他のノードに対して生成されたリクエストを発行する。記憶回路６３３は、故障情報を記憶し、制御回路６３４は、所定の契機で他のノードに対して応答要求を送信し、所定時間内に他のノードから応答を受信しない場合、他のノードの故障を示す情報を故障情報として記憶回路６３３に記憶させる。抑止回路６３５は、故障情報が他のノードの故障を示す場合、リクエスト発行回路６３２によるリクエストの発行を抑止する。
【００３９】
図７は、図６の情報処理装置６０１の制御方法の例を示すフローチャートである。まず、各ノードに含まれる演算処理装置６２１は、所定の契機で他のノードに対して応答要求を送信する（ステップ７０１）。そして、所定時間内に他のノードから応答を受信しない場合、演算処理装置６２１は、他のノードの故障を示す情報を、記憶回路６３３が記憶する故障情報に設定する（ステップ７０２）。
【００４０】
次に、演算処理装置６２１は、他のノードに含まれるメモリ６２２に対するリクエストを生成する（ステップ７０３）。そして、故障情報が他のノードの故障を示す場合、演算処理装置６２１は、他のノードに対するリクエストの発行を抑止する（ステップ７０４）。
【００４１】
図６の情報処理装置６０１によれば、複数のノードを有する情報処理装置において、他のノードの故障によるノードダウンを防止することができる。
【００４２】
図８は、図６の情報処理装置６０１の具体例を示している。図８の情報処理装置６０１は、ノード６１１−１〜ノード１０１−Ｍとクロスバスイッチ８０１とを含む。各ノード６１１−ｉは、クロスバスイッチ８０１を介して互いに接続されている。各ノード６１１−ｉは、ビルディングブロックと呼ばれることもある。以下では、各ノード６１１−ｉを、単にノード６１１と記すことがある。
【００４３】
各ノード６１１は、１つ以上のメモリ８１１、１つ以上のＣＰＵ８１２、及びＬＸＢ８１３を含む。各メモリ８１１は、図６のメモリ６２２に対応し、各ＣＰＵ８１２は、図６の演算処理装置６２１に対応する。各ＣＰＵ８１２は、プロセッサコア８２１、ＨＡ回路８２２、及び外部ＩＦ８２３を含む。
【００４４】
プロセッサコア８２１は、プログラムを実行することで様々な情報処理を行う。プロセッサコア８２１は、図６のリクエスト生成回路６３１に対応する。ＨＡ回路８２２は、プロセッサコア８２１が生成するリクエストの発行を制御する。
【００４５】
外部ＩＦ８２３は、制御回路６３４及びルータ回路８３１を含み、ＬＸＢ８１３及びクロスバスイッチ８０１を介して、他のノード６１１と接続されている。ルータ回路８３１は、ＨＡ回路８２２が発行するリクエストをＬＸＢ８１３へ出力するとともに、ＨＡ回路８２２からの指示に基づいて経路の縮退を実行する。制御回路６３４は、所定の契機で他のノード６１１に対して応答要求を送信し、所定時間内に他のノード６１１から応答を受信しない場合、他のノード６１１の故障を示す故障検出信号を、ＨＡ回路８２２へ出力する。
【００４６】
また、各ＣＰＵ８１２は、メモリ８１１と接続されている。各メモリ８１１は、同じノード６１１内のＣＰＵ８１２のみが使用できるローカル領域と、他のノード６１１内のＣＰＵ８１２も使用できる共有領域とを含む。ノード６１１間には、冗長化されたＫ本の経路が存在する。
【００４７】
図９は、図８のＨＡ回路８２２の構成例を示している。図９のＨＡ回路８２２は、リクエスト発行回路６３２、抑止回路６３５、パイプ回路９０１、及び設定回路９０２を含む。
【００４８】
プロセッサコア８２１は、リクエストを生成して抑止回路６３５へ出力するとともに、リクエストのアクセス対象である宛先ノード６１１の識別情報を含む宛先情報を、パイプ回路９０１へ出力する。そして、プロセッサコア８２１は、ＣＰＵ８１２の処理監視時間をカウントする監視タイマを起動して、リクエストに対する処理を監視する。
【００４９】
パイプ回路９０１は、記憶回路６３３を含み、記憶回路６３３は、ノードマップ９１１及びＦＮＬ９１２を記憶する。ノードマップ９１１は、情報処理装置６０１内で動作しているノード及びＣＰＵ８１２の識別情報を含む。
【００５０】
ＦＮＬ９１２は、故障ノードを示す故障情報を含む。故障情報は、例えば、ノードマップ９１１に含まれる各ノードが故障しているか否かを示すフラグであってもよい。この場合、ＦＮＬ９１２はノード毎のフラグを含み、故障ノードのフラグは論理“１”に設定され、正常なノードのフラグは論理“０”に設定される。
【００５１】
パイプ回路９０１は、ノードマップ９１１を参照し、プロセッサコア８２１から入力された宛先情報が示す宛先ノード６１１の識別情報が、ノードマップ９１１に含まれているか否かをチェックする。宛先ノード６１１の識別情報がノードマップ９１１に含まれていない場合、パイプ回路９０１は、リクエストの発行を抑止する抑止信号を抑止回路６３５へ出力する。
【００５２】
一方、宛先ノード６１１の識別情報がノードマップ９１１に含まれている場合、パイプ回路９０１は、ＦＮＬ９１２を参照し、宛先ノード６１１のフラグをチェックする。宛先ノード６１１のフラグが論理“１”である場合、パイプ回路９０１は、抑止信号を抑止回路６３５へ出力する。
【００５３】
抑止回路６３５は、パイプ回路９０１から抑止信号が入力されない場合、プロセッサコア８２１から入力されたリクエストを、リクエスト発行回路６３２へ出力する。一方、パイプ回路９０１から抑止信号が入力された場合、リクエストをリクエスト発行回路６３２へ出力しない。抑止回路６３５は、例えば、抑止信号とリクエストの論理積を出力するＡＮＤ回路であってもよい。
【００５４】
リクエスト発行回路６３２は、抑止回路６３５から入力されるリクエストを保持するバッファを含み、バッファに保持されたリクエストをルータ回路８３１へ出力する。
【００５５】
設定回路９０２は、制御回路６３４から故障検出信号が入力された場合、ＦＮＬ９１２のフラグのうち、故障検出信号が示す故障ノード６１１に対応するフラグを論理“１”に設定する。これにより、故障ノード６１１に対するリクエストの発行が抑止され、故障ノード６１１からの応答を待つリクエストの増加が抑制される。したがって、ＣＰＵ８１２の動作がスローダウンして正常なノード６１１が異常ノードに変化し、そのノード６１１がダウンすることを防止できる。
【００５６】
なお、故障ノード６１１の切り離し等のエラー回復処理が完了した場合、故障ノード６１１のフラグが論理“１”から論理“０”に変更される。
【００５７】
また、設定回路９０２は、制御回路６３４から故障検出信号が入力された場合、故障ノード６１１の識別情報を含む割り込み通知をプロセッサコア８２１へ出力し、プロセッサコア８２１は、監視タイマをリセットする。したがって、監視タイマのタイムアウトにより正常なノード６１１が異常ノードに変化し、そのノード６１１がダウンすることを防止できる。
【００５８】
図１０は、図８の制御回路６３４及びルータ回路８３１の構成例を示している。図１０の制御回路６３４は、ＯＲ回路１００１、ＡＮＤ回路１００２、指示回路１００３、ＡＮＤ回路１００４、振分回路１００５、レジスタ１００６、及び応答監視回路１００７を含む。
【００５９】
例えば、ノード６１１間に経路＃０及び経路＃１の２本の経路が存在する場合、ルータ回路８３１は、経路＃０に接続されたポート１０１１と、経路＃１に接続されたポート１０１２とを含む。
【００６０】
制御回路６３４は、信号Ｒ１〜信号Ｒ４のいずれかが論理“１”になったことを契機として、ノード故障が発生しているか否かを判定するための探索パケットを、ルータ回路８３１へ発行する。探索パケットは、他のノード６１１に対する応答要求に対応する。信号Ｒ１〜信号Ｒ４は、例えば、以下のような契機に論理“１”になる。
【００６１】
Ｒ１：ノード故障又は経路故障の発生を通知する故障通知（ＦＡＴＡＬパケット）を受信した場合
Ｒ２：制御回路６３４が属するノード６１１内において、タイムアウト、キャッシュプロトコルエラー等の異常を検知した場合
Ｒ３：他のノード６１１から探索パケットを受信した場合
Ｒ４：プロセッサコア８２１が実行するプログラムが探索パケットの発行を指示した場合
【００６２】
例えば、信号Ｒ１及び信号Ｒ３は、ルータ回路８３１から制御回路６３４へ出力され、信号Ｒ２及び信号Ｒ４は、ＨＡ回路８２２から制御回路６３４へ出力される。信号Ｒ１を契機として用いることで、他のノード６１１又は経路上で異常が検出された場合に探索パケットを発行することができ、信号Ｒ２を契機として用いることで、自ノード６１１内で異常が検出された場合に探索パケットを発行することができる。
【００６３】
信号Ｒ３を契機として用いることで、他のノード６１１が探索パケットを発行した場合に探索パケットを発行することができる。信号Ｒ４を契機として用いることで、ソフトウェアの指示によって探索パケットを発行することができ、情報処理装置６０１内の接続を確認するｐｉｎｇとして探索パケットを使用することが可能になる。
【００６４】
レジスタ１００６は、探索パケットを発行したか否かを示す発行済みフラグを保持する。探索パケットが発行されると、発行済みフラグに論理“１”が設定される。ＯＲ回路１００１は、信号Ｒ１〜信号Ｒ４の論理和をＡＮＤ回路１００２へ出力する。
【００６５】
ＡＮＤ回路１００２は、ＯＲ回路１００１が出力する論理和と、レジスタ１００６が保持する発行済みフラグを反転した値との論理積を出力する。したがって、発行済みフラグが論理“０”である場合は、ＯＲ回路１００１の出力が指示回路１００３へ転送され、発行済みフラグが論理“１”である場合は、ＯＲ回路１００１の出力が無視される。
【００６６】
指示回路１００３は、ノードマップ９１１に含まれる各ノード６１１を宛先ノードとする探索パケットの発行指示を出力する。ＡＮＤ回路１００４は、指示回路１００３が出力する発行指示と、探索パケットの宛先ノード６１１に対応するＦＮＬ９１２のフラグを反転した値との論理積を出力する。したがって、宛先ノード６１１のフラグが論理“０”である場合は、その宛先ノード６１１に対する発行指示が振分回路１００５へ転送され、そのフラグが論理“１”である場合は、その宛先ノード６１１に対する発行指示が無視される。
【００６７】
振分回路１００５は、ＡＮＤ回路１００４が出力する発行指示に基づいて、探索パケットをポート１０１１又はポート１０１２へ出力する。応答監視回路１００７は、探索パケットの宛先ノード６１１毎に、応答したか否かを示す応答フラグを保持し、それぞれの宛先ノード６１１の応答フラグに、未応答を示す論理“０”を設定する。そして、応答監視回路１００７は、所定の応答監視時間をカウントするタイマを起動する。このとき、レジスタ１００６の発行済みフラグに論理“１”が設定される。
【００６８】
ポート１０１１又はポート１０１２は、探索パケットを宛先ノード６１１へ送信し、探索パケットに対する応答パケットを宛先ノード６１１から受信して、応答監視回路１００７へ転送する。
【００６９】
応答監視回路１００７は、応答監視時間内に応答した宛先ノード６１１の応答フラグを論理“１”に変更し、応答監視時間が経過したとき、論理“０”の応答フラグを有する宛先ノード６１１を抽出する。そして、応答監視回路１００７は、抽出した宛先ノード６１１から応答パケットを受信しなかったと判定し、その宛先ノード６１１の識別情報を含む故障検出信号を設定回路９０２へ出力するとともに、レジスタ１００６の発行済みフラグを論理“０”に変更する。
【００７０】
応答監視時間として、リクエストに対するタイマのカウント時間よりも短い時間を設定することで、図３の登録動作よりも短時間で故障ノードを検出することができる。
【００７１】
図１１は、図８の情報処理装置６０１における探索パケットの例を示している。ノード６１１−１は、信号Ｒ１〜信号Ｒ４のいずれかを契機として、経路１１０１に沿って、ノード６１１−２〜ノード６１１−Ｍに探索パケットを発行する。
【００７２】
このとき、ノード６１１−２は、経路１１０２に沿って、ノード６１１−１へ応答パケットを送信し、ノード６１１−ｉは、経路１１０３に沿って、ノード６１１−１へ応答パケットを送信する。また、ノード６１１−（ｉ＋１）は、経路１１０４に沿って、ノード６１１−１へ応答パケットを送信し、ノード６１１−Ｍは、経路１１０５に沿って、ノード６１１−１へ応答パケットを送信する。
【００７３】
しかし、ノード６１１−（ｉ＋２）は、故障しているため、応答監視時間内に探索パケットに対する応答パケットを送信しない。そこで、ノード６１１−１は、ＦＮＬ９１２のフラグのうち、ノード６１１−（ｉ＋２）に対応するフラグを論理“１”に設定し、ノード６１１−（ｉ＋２）に対するリクエストの発行を抑止する。
【００７４】
図１０の制御回路６３４によれば、コヒーレンシ制御以外の所定の契機で探索パケットを発行することで、リクエストに対するタイマのタイムアウトを待つことなく、迅速に故障ノードをＦＮＬ９１２に登録することが可能になる。また、ハードウェアによって自律的に探索パケットを発行するため、故障ノードに対するリクエストが発行されなくても、故障ノードをＦＮＬ９１２に登録することが可能になる。
【００７５】
さらに、ハードウェアによって迅速に検出した故障ノードをプロセッサコア８２１に通知するため、アプリケーションプログラムは、クラスタソフトウェアによる死活監視よりも高速に故障ノードを特定することができ、ダウンタイムの短縮に寄与する。
【００７６】
図１２は、探索パケットを用いてノード故障と経路故障とを判別する方法の例を示している。ノード＃ｘ、ノード＃ｙ、及びノード＃ｚは、ノード６１１−１〜ノード６１１−Ｍのいずれかに対応し、ノード間には、冗長化された経路＃０（Ｗ＃０）及び経路＃１（Ｗ＃１）の２本の経路が存在する。
【００７７】
ＧＸＢ１２０１〜ＧＸＢ１２０６は、クロスバスイッチ８０１内のスイッチ回路であり、ＧＸＢ１２０１〜ＧＸＢ１２０３は経路＃１に属し、ＧＸＢ１２０４〜ＧＸＢ１２０６は経路＃０に属する。ＬＸＢ１２１１、ＬＸＢ１２１２、及びＣＰＵ１２２１はノード＃ｘに含まれ、ＬＸＢ１２１３、ＬＸＢ１２１４、及びＣＰＵ１２２２はノード＃ｙに含まれ、ＬＸＢ１２１５、ＬＸＢ１２１６、及びＣＰＵ１２２３はノード＃ｚに含まれる。
【００７８】
例えば、ノード＃ｘのＣＰＵ１２２１は、ノード＃ｚに対する探索パケット１２３１を経路＃０上に発行するとともに、同じノード＃ｚに対する探索パケット１２３２を経路＃１上に発行する。
【００７９】
図１２（ａ）に示すように、ＣＰＵ１２２３が故障しており、いずれの経路からも応答パケットを受信しない場合、ＣＰＵ１２２１は、ノード故障が発生していると判定し、ノード＃ｚをＦＮＬ９１２に登録する。
【００８０】
一方、図１２（ｂ）に示すように、ＬＸＢ１２１５が故障しており、経路＃０から応答パケットを受信しないが、経路＃１から応答パケット１２４１を受信した場合、ＣＰＵ１２２１は、経路＃０の経路故障が発生していると判定する。この場合、ＣＰＵ１２２１は、ノード＃ｚをＦＮＬ９１２に登録しない。
【００８１】
このように、同じ宛先ノードに対する探索パケットを経路＃０及び経路＃１の両方に発行することで、ノード故障と経路故障とを判別することができる。なお、図１２では、ノード＃ｚに対する探索パケットのみが示されているが、同様にして、ノード＃ｙに対する探索パケットも発行される。
【００８２】
図１３は、信号Ｒ３を契機として探索パケットを発行することによる、探索パケットの増殖の例を示している。まず、図１３（ａ）に示すように、ノード＃ｘのＣＰＵ１２２１は、レジスタ１００６の発行済みフラグが論理“０”に設定されているため、ノード＃ｙに対する探索パケット１３０１と、ノード＃ｚに対する探索パケット１３０２とを、経路＃０上に発行する。そして、ＣＰＵ１２２１は、発行済みフラグを論理“１”に変更する。
【００８３】
ノード＃ｙのＣＰＵ１２２２は、探索パケット１３０１を受信して、応答パケットをＣＰＵ１２２１へ送信するが、ノード＃ｚのＣＰＵ１２２３は故障しているため、応答パケットを送信しない。
【００８４】
次に、図１３（ｂ）に示すように、ＣＰＵ１２２２は、レジスタ１００６の発行済みフラグが論理“０”に設定されているため、ノード＃ｘに対する探索パケット１３０３と、ノード＃ｚに対する探索パケット１３０４とを、経路＃０上に発行する。そして、ＣＰＵ１２２２は、発行済みフラグを論理“１”に変更する。
【００８５】
ＣＰＵ１２２１は、探索パケット１３０３を受信して、応答パケットをＣＰＵ１２２２へ送信するが、ＣＰＵ１２２３は、応答パケットを送信しない。この場合、ＣＰＵ１２２１は、発行済みフラグが論理“１”に設定されているため、新たな探索パケットを発行しない。
【００８６】
このような動作をすべてのノード６１１が行うことで、正常なノード６１１から故障ノード６１１に対するリクエストが発行されなくても、故障ノード６１１を検出することが可能になる。このとき、各ＣＰＵ内に発行済みフラグを設けることで、探索パケットを重複して発行することが抑止され、情報処理装置６０１内における探索パケットの無限増殖が防止される。なお、図１３では、経路＃０上の探索パケットのみが示されているが、同様にして、経路＃１上にも探索パケットが発行される。
【００８７】
図１４は、ＦＡＴＡＬパケットを受信した場合に故障ノードをＦＮＬ９１２に登録する登録動作の例を示している。図１４の登録動作は、以下の手順で実行される。
【００８８】
（５１）ノード６１１のＣＰＵ８１２は、他のノード６１１内のメモリ８１１にアクセスするリクエストを発行する。
（５２）クロスバスイッチ８０１は、経路＃０の異常を検出した場合、ＦＡＴＡＬパケットＦＡＴＡＬ−ＸＸＸ＃０を経路＃０へ出力する。
（５３）ＣＰＵ８１２の外部ＩＦ８２３は、ＦＡＴＡＬ−ＸＸＸ＃０を受信する。
（５４）外部ＩＦ８２３のルータ回路８３１は、信号Ｒ３を論理“１”に設定し、制御回路６３４は、探索パケットを他のノード６１１へ発行する。
（５５）ルータ回路８３１は、手順（５１）で発行されたリクエストのパケットを、経路＃０又は経路＃１を介して宛先ノード６１１へ送信する。
（５６）宛先ノード６１１のノード故障のため、送信されたパケットが喪失する。
（５７）ルータ回路８３１は、応答監視時間が経過しても、手順（５４）で宛先ノード６１１に対して発行された探索パケットに対する応答パケットを、宛先ノード６１１から受信しない。
（５８）制御回路６３４は、応答パケットを送信しなかった宛先ノード６１１を、故障ノードとしてＦＮＬ９１２に設定する。
【００８９】
この場合、ＦＮＬ９１２に故障ノードが登録されない期間は、手順（５１）から手順（５８）までの期間１４０１である。応答監視時間として、リクエストに対するタイマのカウント時間よりも短い時間を設定することで、期間１４０１を短縮することができる。
【００９０】
図１５は、先願の共有メモリシステムにおいてノード故障が発生した場合のエラー回復シーケンスの例を示している。ノード１０１−１〜ノード１０１−４は、図１の共有メモリシステム１００におけるノード１０１に対応し、ノード１０１−１は、マスタノードとして動作する。
【００９１】
ノード１０１−１〜ノード１０１−４は、システム制御部（ＳＣＦ）１５０１を含み、ノード１０１−２〜ノード１０１−４のＣＰＵ１１２上では、ソフトウェア１５０２が動作する。ソフトウェア１５０２は、例えば、ハイパーバイザ、オペレーティングシステム、ユーザアプリケーション等を含む。
【００９２】
ＳＣＦ１５０１は、ＣＰＵ１１２内のＦＮＬ５０１と同じ故障情報を含むＦＮＬを保持し、各ノード１０１のＦＮＬ５０１を同期させる同期制御を行う。ＳＣＦ１５０１は、例えば、Field-Programmable Gate Array（ＦＰＧＡ）であってもよく、ＣＰＵ及びメモリの組み合わせであってもよい。
【００９３】
例えば、ノード１０１−２のＣＰＵ１１２において、ノード故障１５１１が発生した場合を想定する。この場合、ＣＰＵ１１２は、ノード１０１−３及びノード１０１−４に対して、ノード故障の発生を通知するＦＡＴＡＬパケット１５１２及びＦＡＴＡＬパケット１５１３をそれぞれ送信する。
【００９４】
ＦＡＴＡＬパケット１５１２を受信したノード１０１−３のＣＰＵ１１２は、ソフトウェア１５０２に対して割り込み１５１６を発生させ、ユーザアプリケーションは、期間１５４２において処理を停止する。同様に、ＦＡＴＡＬパケット１５１３を受信したノード１０１−４のＣＰＵ１１２は、ソフトウェア１５０２に対して割り込み１５１７を発生させ、ユーザアプリケーションは、期間１５４４において処理を停止する。
【００９５】
しかし、ノード１０１−３及びノード１０１−４からノード１０１−２に対するリクエストが発行されないため、ノード１０１−３及びノード１０１−４のＦＮＬ５０１には、ノード１０１−２が故障ノードとして設定されない。そこで、ノード１０１−２のＣＰＵ１１２は、ＳＣＦ１５０１へ同期開始要求１５１４を出力し、ＳＣＦ１５０１は、ノード１０１−１へＦＮＬ更新要求１５１５を送信する。ノード１０１−２のＣＰＵ１１２は、同期開始要求１５１４を出力した後、期間１５４１において動作を停止する。
【００９６】
ＦＮＬ更新要求１５１５を受信したノード１０１−１のＳＣＦ１５０１は、ＦＮＬ生成処理１５３１を行って、ノード１０１−２を故障ノードとして設定したＦＮＬをＳＣＦ１５０１内で生成し、ＦＮＬ生成通知をＣＰＵ１１２へ送信する。そして、ＣＰＵ１１２は、ノード１０１−２を故障ノードとして、ＣＰＵ１１２内のＦＮＬ５０１に設定する。
【００９７】
次に、ＳＣＦ１５０１は、ノード１０１−２〜ノード１０１−４に対して、ＦＮＬ更新指示１５１８〜ＦＮＬ更新指示１５２０をそれぞれ送信する。
【００９８】
ＦＮＬ更新指示１５１９を受信したノード１０１−３のＳＣＦ１５０１は、ＦＮＬ更新処理１５３２を行って、ノード１０１−２を故障ノードとして、ＳＣＦ１５０１内のＦＮＬに設定する。そして、ＳＣＦ１５０１は、ＣＰＵ１１２に対してＦＮＬ更新通知１５２１を送信する。
【００９９】
次に、ＣＰＵ１１２は、ノード１０１−２を故障ノードとして、ＣＰＵ１１２内のＦＮＬ５０１に設定するとともに、ソフトウェア１５０２に対してＦＮＬ更新通知１５２２を転送する。そして、ソフトウェア１５０２は、期間１５４３においてエラー回復処理を行う。
【０１００】
同様に、ＦＮＬ更新指示１５２０を受信したノード１０１−４のＳＣＦ１５０１は、ＦＮＬ更新処理１５３３を行って、ノード１０１−２を故障ノードとして、ＳＣＦ１５０１内のＦＮＬに設定する。そして、ＳＣＦ１５０１は、ＣＰＵ１１２に対してＦＮＬ更新通知１５２３を送信する。
【０１０１】
次に、ＣＰＵ１１２は、ノード１０１−２を故障ノードとして、ＣＰＵ１１２内のＦＮＬ５０１に設定するとともに、ソフトウェア１５０２に対してＦＮＬ更新通知１５２４を転送する。そして、ソフトウェア１５０２は、期間１５４５においてエラー回復処理を行う。
【０１０２】
このように、ノード１０１−３及びノード１０１−４のＦＮＬ５０１に故障ノード１０１−２を登録するために、ノード１０１−１のＳＣＦ１５０１経由でＦＮＬ５０１の同期制御が行われる。
【０１０３】
図１６は、図８の情報処理装置６０１においてノード故障が発生した場合のエラー回復シーケンスの例を示している。ノード６１１−１〜ノード６１１−４は、図８の情報処理装置６０１におけるノード６１１に対応し、ノード６１１−１は、マスタノードとして動作する。
【０１０４】
ノード６１１−１〜ノード６１１−４は、ＳＣＦ１６０１を含み、ノード６１１−２〜ノード６１１−４のＣＰＵ８１２上では、ソフトウェア１６０２が動作する。ソフトウェア１６０２は、例えば、ハイパーバイザ、オペレーティングシステム、ユーザアプリケーション等を含む。ＳＣＦ１６０１は、ＣＰＵ８１２内のＦＮＬ９１２と同じ故障情報を含むＦＮＬを保持する。
【０１０５】
例えば、ノード６１１−２のＣＰＵ８１２において、ノード故障１６１１が発生した場合、ＣＰＵ８１２は、ノード６１１−３及びノード６１１−４に対して、ＦＡＴＡＬパケット１６１２及びＦＡＴＡＬパケット１６１３をそれぞれ送信する。
【０１０６】
ＦＡＴＡＬパケット１６１２を受信したノード６１１−３のＣＰＵ８１２は、ノード６１１−２及びノード６１１−４に対して、探索パケット１６１６及び探索パケット１６１７をそれぞれ送信する。そして、ＣＰＵ８１２は、ソフトウェア１６０２に対して割り込み１６２０を発生させ、ユーザアプリケーションは、期間１６４２において処理を停止する。
【０１０７】
同様に、ＦＡＴＡＬパケット１６１３を受信したノード６１１−４のＣＰＵ８１２は、ノード６１１−２及びノード６１１−３に対して、探索パケット１６１８及び探索パケット１６１９をそれぞれ送信する。そして、ＣＰＵ８１２は、ソフトウェア１６０２に対して割り込み１６２１を発生させ、ユーザアプリケーションは、期間１６４４において処理を停止する。
【０１０８】
ノード６１１−２のＣＰＵ８１２は、ＳＣＦ１６０１へ同期開始要求１６１４を出力し、ＳＣＦ１６０１は、ノード６１１−１へＦＮＬ更新要求１６１５を送信する。ノード６１１−２のＣＰＵ８１２は、同期開始要求１６１４を出力した後、期間１６４１において動作を停止する。
【０１０９】
ＦＮＬ更新要求１６１５を受信したノード６１１−１のＳＣＦ１６０１は、ＦＮＬ生成処理１６３１を行って、ノード６１１−２を故障ノードとして設定したＦＮＬをＳＣＦ１６０１内で生成し、ＦＮＬ生成通知をＣＰＵ８１２に送信する。そして、ＣＰＵ８１２は、ノード６１１−２を故障ノードとして、ＣＰＵ８１２内のＦＮＬ９１２に設定する。
【０１１０】
ノード６１１−３のＣＰＵ８１２は、応答監視時間内にノード６１１−４から応答パケットを受信し、ノード６１１−２から応答パケットを受信しない場合、ノード６１１−２を故障ノードとして、ＣＰＵ８１２内のＦＮＬ９１２に設定する。そして、ＣＰＵ８１２は、ＳＣＦ１６０１に対してＦＮＬ更新通知１６２２を送信する。
【０１１１】
ＳＣＦ１６０１は、ＦＮＬ更新処理１６３２を行って、ノード６１１−２を故障ノードとして、ＳＣＦ１６０１内のＦＮＬに設定する。次に、ＳＣＦ１６０１は、ＣＰＵ８１２に対してＦＮＬ更新通知１６２４を送信し、ＣＰＵ８１２は、ソフトウェア１６０２に対してＦＮＬ更新通知１６２５を転送する。そして、ソフトウェア１６０２は、期間１６４３においてエラー回復処理を行う。
【０１１２】
同様に、ノード６１１−４のＣＰＵ８１２は、応答監視時間内にノード６１１−３から応答パケットを受信し、ノード６１１−２から応答パケットを受信しない場合、ノード６１１−２を故障ノードとして、ＣＰＵ８１２内のＦＮＬ９１２に設定する。そして、ＣＰＵ８１２は、ＳＣＦ１６０１に対してＦＮＬ更新通知１６２３を送信する。
【０１１３】
ＳＣＦ１６０１は、ＦＮＬ更新処理１６３３を行って、ノード６１１−２を故障ノードとして、ＳＣＦ１６０１内のＦＮＬに設定する。次に、ＳＣＦ１６０１は、ＣＰＵ８１２に対してＦＮＬ更新通知１６２６を送信し、ＣＰＵ８１２は、ソフトウェア１６０２に対してＦＮＬ更新通知１６２７を転送する。そして、ソフトウェア１６０２は、期間１６４５においてエラー回復処理を行う。
【０１１４】
このように、ノード６１１−１のＳＣＦ１６０１を経由することなく、ＦＮＬ９１２の同期制御が行われ、ノード６１１−３及びノード６１１−４のＦＮＬ９１２に故障ノード６１１−２が登録される。このため、図１５の場合と比較して、ユーザアプリケーションが停止する期間１６４２及び期間１６４４が短縮され、期間１６４３及び期間１６４５におけるエラー回復処理が早く完了する。
【０１１５】
図１及び図５の共有メモリシステム１００の構成は一例に過ぎず、共有メモリシステム１００の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、ノード１０１−１〜ノード１０１−Ｍは、クロスバスイッチ１０２の代わりに、通信ネットワークを介して接続されていてもよい。
【０１１６】
図６、図８、及び図１１の情報処理装置６０１の構成は一例に過ぎず、情報処理装置６０１の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、ノード６１１−１〜ノード６１１−Ｍは、クロスバスイッチ８０１の代わりに、通信ネットワークを介して接続されていてもよい。
【０１１７】
図９のＨＡ回路８２２の構成は一例に過ぎず、情報処理装置６０１の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。図１０の制御回路６３４及びルータ回路８３１の構成は一例に過ぎず、情報処理装置６０１の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【０１１８】
例えば、信号Ｒ１〜信号Ｒ４のうちいずれか１つのみを契機として探索パケットを発行する場合は、図１０のＯＲ回路１００１を省略することができる。探索パケットを重複して発行することを許容する場合は、ＡＮＤ回路１００２及びレジスタ１００６を省略することができる。レジスタ１００６は、探索パケットの宛先ノード６１１毎に発行済みフラグを保持してもよい。ノード６１１間に冗長化されたＫ本の経路が存在する場合、ルータ回路８３１は、Ｋ個のポートを含んでいてもよい。
【０１１９】
図７のフローチャートは一例に過ぎず、情報処理装置６０１の構成又は条件に応じて一部の処理を省略又は変更してもよい。
【０１２０】
図２の抑止動作、図３の登録動作、図４のタイマ積算、及び図１５のエラー回復シーケンスは一例に過ぎず、共有メモリシステム１００の構成又は条件に応じて別の動作が行われることもある。
【０１２１】
図１２及び図１３の探索パケットは一例に過ぎず、情報処理装置６０１の構成又は条件に応じて別の探索パケットが発行されることもある。図１４の登録動作及び図１６のエラー回復シーケンスは一例に過ぎず、情報処理装置６０１の構成又は条件に応じて別の動作が行われることもある。
【０１２２】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０１２３】
図１乃至図１６を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）
演算処理装置とメモリをそれぞれ備えた複数のノードを有する情報処理装置において、
前記演算処理装置は、
他のノードに含まれる前記メモリに対するリクエストを生成するリクエスト生成部と、
前記他のノードに対して生成された前記リクエストを発行するリクエスト発行部と、
故障情報を記憶する記憶部と、
所定の契機で前記他のノードに対して応答要求を送信し、所定時間内に前記他のノードから応答を受信しない場合、前記他のノードの故障を示す情報を前記故障情報として前記記憶部に記憶させる制御部と、
前記故障情報が前記他のノードの故障を示す場合、前記リクエスト発行部による前記リクエストの発行を抑止する抑止部とを含む、
ことを特徴とする情報処理装置。
（付記２）
前記制御部は、前記複数のノード間における経路の故障又はノード故障を示す故障通知を受信した場合を前記所定の契機として、前記他のノードに対して前記応答要求を発行することを特徴とする付記１記載の情報処理装置。
（付記３）
前記制御部は、前記複数のノードのうちいずれかのノードから前記応答要求を受信した場合を前記所定の契機として、前記他のノードに対して前記応答要求を発行することを特徴とする付記１又は２記載の情報処理装置。
（付記４）
前記制御部は、前記所定の契機において前記他のノードに対して前記応答要求を発行済みである場合、前記応答要求の発行を抑止することを特徴とする付記１記載の情報処理装置。
（付記５）
複数のノードを有する情報処理装置の制御方法であって、
前記複数のノード各々に含まれる演算処理装置が、所定の契機で他のノードに対して応答要求を送信し、
所定時間内に前記他のノードから応答を受信しない場合、前記演算処理装置が、前記他のノードの故障を示す情報を、記憶部が記憶する故障情報に設定し、
前記演算処理装置が、前記他のノードに含まれるメモリに対するリクエストを生成し、
前記故障情報が前記他のノードの故障を示す場合、前記演算処理装置が、前記他のノードに対する前記リクエストの発行を抑止する、
ことを特徴とする制御方法。
（付記６）
前記演算処理装置は、前記複数のノード間における経路の故障又はノード故障を示す故障通知を受信した場合を前記所定の契機として、前記他のノードに対して前記応答要求を発行することを特徴とする付記５記載の制御方法。
（付記７）
前記演算処理装置は、前記複数のノードのうちいずれかのノードから前記応答要求を受信した場合を前記所定の契機として、前記他のノードに対して前記応答要求を発行することを特徴とする付記５又は６記載の制御方法。
（付記８）
前記演算処理装置は、前記所定の契機において前記他のノードに対して前記応答要求を発行済みである場合、前記応答要求の発行を抑止することを特徴とする付記５記載の制御方法。
【符号の説明】
【０１２４】
１００  共有メモリシステム
１０１−１〜１０１−Ｍ、６１１−１〜６１１−Ｍ  ノード
１０２、８０１  クロスバスイッチ
１１１、６２２、８１１  メモリ
１１２、８１２、１２２１〜１２２３  ＣＰＵ
１１３、８１３、１２１１〜１２１６  ＬＸＢ
１２１、８２３  外部ＩＦ
３０１、１４０１、１５４１〜１５４５、１６４１〜１６４５  期間
４０１、４０２  リクエストパケット
５０１、９１２  ＦＮＬ
６０１  情報処理装置
６２１  演算処理装置
６３１  リクエスト生成回路
６３２  リクエスト発行回路
６３３  記憶回路
６３４  制御回路
６３５  抑止回路
８２１  プロセッサコア
８２２  ＨＡ回路
８３１  ルータ回路
９０１  パイプ回路
９０２  設定回路
９１１  ノードマップ
１００１  ＯＲ回路
１００２、１００４  ＡＮＤ回路
１００３  指示回路
１００５  振分回路
１００６  レジスタ
１００７  応答監視回路
１０１１、１０１２  ポート
１１０１〜１１０５  経路
１２０１〜１２０６  ＧＸＢ
１２３１、１２３２、１３０１〜１３０４、１６１６〜１６１９  探索パケット
１２４１  応答パケット
１５０２、１６０２  ソフトウェア
１５１１、１６１１  ノード故障
１５１２、１５１３、１６１２、１６１３  ＦＡＴＡＬパケット
１５１４、１６１４  同期開始要求
１５１５、１６１５  ＦＮＬ更新要求
１５１８〜１５２０  ＦＮＬ更新指示
１５２１〜１５２４、１６２２〜１６２７  ＦＮＬ更新通知
１５３１、１６３１  ＦＮＬ生成処理
１５３２、１５３３、１６３２、１６３３  ＦＮＬ更新処理
【図１】
0006658299.tif 000002
【図２】
0006658299.tif 000003
【図３】
0006658299.tif 000004
【図４】
0006658299.tif 000005
【図５】
0006658299.tif 000006
【図６】
0006658299.tif 000007
【図７】
0006658299.tif 000008
【図８】
0006658299.tif 000009
【図９】
0006658299.tif 000010
【図１０】
0006658299.tif 000011
【図１１】
0006658299.tif 000012
【図１２】
0006658299.tif 000013
【図１３】
0006658299.tif 000014
【図１４】
0006658299.tif 000015
【図１５】
0006658299.tif 000016
【図１６】
0006658299.tif 000017