JP6540309B2 - 共有メモリシステム、演算処理装置、及び方法 - Google Patents

共有メモリシステム、演算処理装置、及び方法 Download PDF

Info

Publication number
JP6540309B2
JP6540309B2 JP2015141842A JP2015141842A JP6540309B2 JP 6540309 B2 JP6540309 B2 JP 6540309B2 JP 2015141842 A JP2015141842 A JP 2015141842A JP 2015141842 A JP2015141842 A JP 2015141842A JP 6540309 B2 JP6540309 B2 JP 6540309B2
Authority
JP
Japan
Prior art keywords
request
node
circuit
information
setting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015141842A
Other languages
English (en)
Other versions
JP2017027121A (ja
Inventor
典彦 福住
典彦 福住
誠 畑井田
誠 畑井田
誠之 岡田
誠之 岡田
仁 ▲高▼橋
仁 ▲高▼橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015141842A priority Critical patent/JP6540309B2/ja
Priority to US15/172,212 priority patent/US9959173B2/en
Publication of JP2017027121A publication Critical patent/JP2017027121A/ja
Application granted granted Critical
Publication of JP6540309B2 publication Critical patent/JP6540309B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0686Additional information in the notification, e.g. enhancement of specific meta-data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/85Active fault masking without idle spares

Description

本発明は、共有メモリシステム、演算処理装置、及び方法に関する。
複数の演算処理装置が主記憶装置を共有する対称型マルチプロセッサ(SMP:Symmetric Multi-Processor)が知られている。このようなSMPの技術が適用された情報処理システムの一例として、演算処理装置と主記憶装置とを有する複数のノードを同一のバスで接続し、バスを介して、各演算処理装置が各主記憶装置を共有する情報処理システムがある。このような情報処理システムには、ディレクトリ方式を用いて、各ノードの演算処理装置がキャッシュしたデータのコヒーレンシを保持するものがある。
SMPでは複数のノードを1パーティションとして扱うため、一つのノードの故障が他のノードすべてのダウンにつながる。このようなエラーの影響範囲を抑えるための技術に共有メモリシステムがある。
これに関し、情報処理装置がダウンする可能性を抑制するための技術が知られている(例えば、特許文献1参照)。また、ノード間のデータ転送に関わる異常が発生した場合に、エラーの影響範囲を抑えるための技術が知られている(例えば、特許文献2参照)。サーバから複数の端末にデータを送信するシステムにおいて、端末へのデータ送信の性能の低下を招かないようにするための技術が知られている(例えば、特許文献3参照)。制御装置が複数の端末に順次ポーリングする際に、他の端末へのサービスの低下を防止および端末を監視して復旧を速やかに行うための技術が知られている(例えば、特許文献4参照)。ノード間クロスバスイッチを介してノード間のデータ転送を行うシステムにおいて、1台のクロスバスイッチに障害が発生した場合においてもシステムダウンを防止するための技術が知られている(例えば、特許文献5参照)。
特開2013−182355号公報 特開2013−140445号公報 特開2002−259264号公報 特開平6−152612号公報 特開2006−39897号公報
しかしながら、例えば、或るノードのCPU(演算処理装置)が別なノードにリクエストを送信した場合に、別なノードが故障しておりリクエストに対する応答がないことがある。その結果、リクエストがタイムアウトしてしまい、CPU内部の処理監視時間を超えてしまう、或いは、CPU内部の資源を使い切ってしまうことがある。そして、リクエストを発行したノードが故障していなくてもダウンしてしまうことがある。本発明の一態様に係る目的は、共有メモリシステムにおいて、或るノードが、他のノードの故障に起因してダウンしてしまうことを抑止することである。
本発明の一つの態様の共有メモリシステムは、複数のノードを含み、複数のノード各々は、演算処理装置と、メモリとを含む。演算処理装置は、プロセッサコアと、リクエスト発行回路と、記憶回路と、設定回路と、発行抑止回路とを含む。リクエスト発行回路は、共有メモリシステム内の他のノードが備えるメモリに対する第1のリクエストを発行する。記憶回路は、複数のノードそれぞれについて故障していることを示す第1の情報又は故障していないことを示す第2の情報が設定される第1の故障ノードリストを記憶する。設定回路は、リクエスト発行回路が発行した第1のリクエストがタイムアウトした場合、第1の故障ノードリストにおいて他のノードに第1の情報を設定する。発行抑止回路は、プロセッサコアから他のノードが備えるメモリに対する第2のリクエストが入力された場合に、第1の故障ノードリストにおいて他のノードに第1の情報が設定されていればリクエスト発行回路による第2のリクエストの発行を抑止する。また、発行抑止回路は、第1の故障ノードリストにおいて他のノードに第2の情報が設定されていればリクエスト発行回路による第2のリクエストの発行を抑止しない。
共有メモリシステムにおいて、或るノードが、他のノードの故障に起因してダウンしてしまうことを抑止することができる。
例示的な共有メモリシステムを示す図である。 共有メモリシステムの動作例を示す図である。 共有メモリシステムにおけるリクエストのタイムアウトとノードのダウンとを例示する図である。 ビルディングブロックの故障と経路の故障とを例示する図である。 第1の実施形態に係る情報処理システムを例示するブロック図である。 CPU内部のホームエージェント回路によるリクエストの発行と抑止とを例示する図である。 情報処理システムにおけるリクエストの発行の抑止動作を例示する図である。 故障ノードリストによるリクエスト及びオーダーの発行と発行抑止とについて例示する図である。 CPU間を繋ぐ経路の構成を例示する図である。 ホームエージェント回路とルータ共通回路とルータポート固有回路とを例示する図である。 経路の異常が検出された場合に故障ノードフラグの設定を抑止する動作の流れを例示する図である。 ホームエージェント回路とSCFとによる故障ノードリストの同期を例示する図である。 第2の実施形態に係る情報処理システムにおいてノードを強制終了する場合の動作を例示する図である。 第2の実施形態に係る情報処理システムのビルディングブロック間の接続を例示する図である。 第2の実施形態に係る情報処理システムにおける第2の故障ノードリストの利用の別な例を示す図である。
以下、図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、複数の図面において対応する要素には同一の符号を付す。
図1は、例示的な共有メモリシステム100を示す図である。共有メモリシステム100は、例えば、複数のビルディングブロック(BB)101、及びクロスバスイッチ102を含む。ビルディングブロック101は、例えば、クロスバスイッチ(GXB)102を介して互いに接続されている。共有メモリシステム100において、例えば、ビルディングブロック101はノードとして動作する。ビルディングブロック101は、例えば、メモリ111、CPU(演算処理装置)112、クロスバチップ(LXB)113を含む。ビルディングブロック101は、メモリ111と、CPU112を複数含んでいてもよく、又はメモリ111と、CPU112を1つ含んでいてもよい。CPU112は、例えば、CPU112外部とのインタフェースである外部インタフェース(IF)121を含む。CPU112は、外部インタフェース121を通じて同じビルディングブロック101内のCPU112と接続されている。また、CPU112は、別のビルディングブロック101内のCPU112とクロスバスイッチ102を通じて接続されている。また、各CPU112はメモリ111と接続されている。メモリ111は、例えば、同じビルディングブロック101内のCPU112のみが使用できるローカル領域と、他のビルディングブロック101からも使用できる共有領域の2つの領域を含む。
図2は、共有メモリシステム100の動作例を示す図である。例えば、或るCPU112が、同じビルディングブロック101内のメモリ111の共有領域にアクセスした場合に、アクセスした共有領域の実体データが別のビルディングブロック101内のメモリ111の共有領域にあったとする(図2の(1))。この場合、CPU112は、共有領域の実体データを有する別のビルディングブロック101にリクエストを送信し、その応答としてデータを取得する(図2の(2))。なお、メモリ111へのアクセスはキャッシュコヒーレントを保ちながら処理されてよい。
リクエストの送信は、CPU112内部のパイプラインによって順序の制御が行われる。また、送信したリクエストに対する応答が返ってこない場合に、応答を待ち続けることを避けるためにリクエストには待ち時間が設定されている。そして、例えば、リクエストに対する応答が待ち時間を経過しても返ってこない場合、リクエストはタイムアウトする。ここで、リクエストのタイムアウトは回復不能なエラーではなく回復可能なエラーとして扱えるように設定することができる。即ち、例えば、或るビルディングブロック101のCPU112が別のビルディングブロック101へと発行したリクエストがタイムアウトになっても、リクエストのタイムアウトによりビルディングブロック101がダウンしないように設定することができる。しかし、この場合にも、リクエストに対する応答が、CPU112内部の処理監視時間を超えて受信されない場合、ビルディングブロック101のリセットや、強制停止などが実行され、ビルディングブロック101はダウンしてしまう。なお、CPU112内部の処理監視時間は、例えば、ウォッチドッグタイマであってよく、例えば、約1秒に設定されていてよい。この様に、他のビルディングブロック101に送信したリクエストのタイムアウトに起因して、正常に動作可能な状態であったとしてもビルディングブロック101がダウンしてしまうことがある。
図3は共有メモリシステム100におけるリクエストのタイムアウトとノードのダウンとを例示する図である。例えば、ビルディングブロック#0(BB#0)のCPU112が、同じビルディングブロック内のメモリ111の共有領域にアクセスし、アクセスした共有領域の実体データが別のビルディングブロック#1(BB#1)のメモリ111の共有領域にあったとする。この場合、ビルディングブロック#0のCPU112は、共有領域の実体データを有する別のビルディングブロック#1にリクエストを送信し、その応答でデータを取得する。ここで、リクエストの送信先であるビルディングブロック#1が故障していたとする。この場合、ビルディングブロック#0のCPU112は、故障しているビルディングブロック#1へとリクエストを送信するが(図3の301)、故障しているビルディングブロック#1からはリクエストに対する応答が返ってこない(図3の302)。また、応答を待つ間にも、別途、故障しているビルディングブロック#1へのリクエストが発生することもあり(図3の303)、この場合、応答を待つリクエストが積みあがっていくことになる(図3の304)。
そして、故障しているビルディングブロック#1へと送信したリクエストがタイムアウトした場合に、更に、CPU内部の処理監視時間もタイムアウトしてしまい、正常に動作可能な状態にあったとしてもビルディングブロック#0がダウンしてしまうことがある。或いは、この様なリクエストのタイムアウトが複数回に発生し、応答を待つリクエストが積みあがっていくと、CPU112内部の資源を使い切るなどしてしまい、正常なノードがスローダウンし、異常ノードとなってしまうこともある。例えば、CPU112が同時に実行可能な命令の個数には限りがあり、タイムアウトなどにより処理が解放されないと、その資源を使い切ってしまうことがある。この様に、或るノードが他のノードにリクエストを送信した場合に、何らかの異常に起因して応答を受信できない場合、リクエストを送信したノードが正常なノードであっても、ダウンしたり、異常なノードになってしまったりすることがある。そのため、例えば、共有メモリシステムにおいて、或るノードが、他のノードの故障に起因してダウンしてしまうことを抑止することができる技術が望まれる。
また、例えば、ビルディングブロック101のCPU112が送信したリクエストに対する応答が返ってこない原因には、図4に示す様に、ビルディングブロック101の故障の他にも、ビルディングブロック同士をつなぐ経路の故障もあり得る。しかしながら、リクエストのタイムアウトからは、故障個所が、例えば、リクエストの送信先のビルディングブロックにあるのか、又は経路にあるのかは特定することが困難である。そして、例えば、リクエストのタイムアウトが発生した場合に、リクエストの送信先のノードが故障していると見做し、リクエストのタイムアウトが発生した送信先のノードに対するリクエストの発行を抑止する制御を行ったとする。この場合、例えば、同じ経路を通るリクエストの送信先のノードのすべてを故障ノードと判定してしまい、実際には故障した経路を縮退することで通信を継続可能であったとしても、送信先のノードとの通信を抑止してしまうことになる。そのため、例えば、リクエストのタイムアウトが発生した場合に、リクエストの送信先のノードが故障しているのか、又は経路が故障しているのかを速やかに切り分けることのできる技術が望まれる。以下、図5から図11を参照して、第1の実施形態を説明する。
<第1の実施形態>
図5は、第1の実施形態に係る情報処理システム500を例示するブロック図である。図5において、情報処理システム500は、複数のビルディングブロック(BB)501、及びクロスバスイッチ(GXB)502を含む。ビルディングブロック501は、メモリ511、CPU(演算処理装置)512、及びクロスバチップ(LXB)513を含む。なお、ビルディングブロック501は、メモリ511と、CPU512とを複数含んでいてもよく、又は、メモリ511と、CPU512とを一つ含んでいてもよい。ビルディングブロック501は、例えば情報処理システム500においてノードとして動作してよい。また、情報処理システム500は、例えば、ディレクトリ方式を採用する共有メモリシステムであり、ディレクトリ方式を用いて、各ノードのCPU512がキャッシュしたデータのコヒーレンシを保持してよい。
CPU512は、コア515、ホームエージェント(HA)回路520、及び外部インタフェース530を含む。コア515は、例えば、CPU512のプロセッサコアである。ホームエージェント回路520は、例えば、パイプ(PIPE)522、ムーブインバッファ(MIB)などを含むリクエスト発行回路523、タイマ(TIM)524、設定回路525を含む。
パイプ522は、例えば、ノードマップと故障ノードリスト(FNL)550とを保持する記憶回路を含み、他のノードへのアクセスの可否を制御する。故障ノードリスト550には、例えば、情報処理システム500に含まれるノード(例えばビルディングブロック501)が故障している場合に、故障していることを示す故障情報が設定されている。故障情報は、例えば、ノードが故障していることを示すフラグの値であってよい。以下では、或るノードが故障している場合には、故障ノードリスト550においてそのノードに対応する故障ノードフラグが論理“1”に設定され、また、或るノードが正常に動作している場合には、故障ノードフラグが論理“0”に設定される場合を例示する。リクエスト発行回路523は、例えば、CPU512がリクエストを制御するためのバッファ及びレジスタを備え、リクエストを発行する。タイマ524は、リクエスト発行回路523がリクエストを発行してから応答を受け取るまでの時間を監視するタイマである。設定回路525は、故障ノードリスト550の故障ノードフラグを設定する。
外部インタフェース(IF)530は、他のCPU512と通信するためのインタフェースである。外部インタフェース530は、例えば、ルータ(RT)回路531を含む。ルータ回路531は、例えば、リクエストをクロスバチップ513へと出力したり、通信経路の縮退を実行したりする。なお、ルータ回路531は、後述するルータ共通回路902と、経路毎に備えられているルータポート固有回路903とを含む。
図6は、図5のCPU512内部のホームエージェント回路520によるリクエストの発行と抑止とを例示する図である。ホームエージェント回路520は、例えば、パイプ522、リクエスト発行回路523、タイマ524、設定回路525、発行抑止回路526、割込通知回路527を含む。パイプ522は、例えば、ノードマップ601と故障ノードリスト550とを格納する記憶回路を含み、他のノードへのアクセスの可否を制御する。リクエスト発行回路523は、例えば、バッファ及びレジスタを含む。図6では、ムーブインバッファ(MIB)、リプレイス(RPB)バッファ、メッセージ送受信(MSGQ)・クレンズ制御(CLPT)のバッファ、及びロックレジスタ(LKR)などをリクエスト発行回路523が含む例が示されている。リクエストは、例えば、種類に応じて、これらのリクエスト発行回路523のいずれかへと振り分けられてよい。
そして、第1の実施形態においては、コア515から入力されたリクエストの発行と抑止は、故障ノードリスト550を用いて以下のように制御されてよい。例えば、ビルディングブロック#aのCPU#1が、他のビルディングブロック501#bのCPU512#2のメモリ511の共有領域にアクセスするとする。この場合、コア515は、リクエストを発行抑止回路526に出力するとともに、リクエストの送信先のビルディングブロック501#bのCPU512#2を示すアドレス情報をパイプ522に入力する。パイプ522は、例えば、情報処理システム500内で動作しているノードと、CPU512とを示すノードマップを記憶している。そして、パイプ522は、アドレス情報が入力されると、ノードマップを参照し、アクセス先のビルディングブロック501#bのCPU512#2が情報処理システム内に含まれているか否かをチェックする。また、パイプ522は、故障ノードリスト550を参照し、アクセス先のノードに対応する故障ノードフラグが論理“1”に設定されているか否かをチェックする。そして、例えば、アクセス先のビルディングブロック501#bのCPU512#2が、ノードマップに含まれており、且つ、アクセス先のノードに対する故障ノードフラグが論理“0”であるとする。この場合、パイプ522は、リクエストの出力を抑止させる抑止信号を発行抑止回路526に出力しない。この場合、コア515から出力されたリクエストは発行抑止回路526で抑止されず、リクエスト発行回路523でリクエストが発行される。一方、アクセス先のビルディングブロック501#bのCPU512#2がノードマップに含まれていない、又は、アクセス先のノードに対する故障ノードフラグが論理“1”である場合、パイプ522は抑止信号を出力する。そのため、コア515から出力されたリクエストは、例えば、発行抑止回路526で抑止され、リクエスト発行回路523はリクエストを発行しない。従って、故障ノードリスト550において論理“1”を設定することで、リクエスト発行回路523からのリクエストの発行を抑止することができる。なお、発行抑止回路526は、例えば、論理回路:ANDで実現することができる。
また、リクエスト発行回路523は、リクエストが入力されると、アクセス先のCPU512のメモリ511の共有領域にアクセスするリクエストを発行し、タイマ524を起動する。ここで、リクエスト発行回路523がリクエストを発行した後に、そのリクエストに対する応答がなく、タイマ524がタイムアウトしたとする。この場合に、割込通知回路527は、タイムアウトしたリクエストについて、CPU内部の処理監視時間による監視をリセット(例えば、解放)するために、コア515に割り込み通知を出力する。割込通知回路527は、例えば、割り込み通知として、送信先のノードから正常に応答を受信できたことを示す通知を疑似的に生成し、コア515に出力してよい。それにより、CPU内部の処理監視時間を計時するタイマがリセットされるため、リクエストのタイムアウトによりCPU内部の処理監視時間もタイムアウトしてしまい、リクエストを送信したビルディングブロック501がダウンしてしまうことを回避できる。また、設定回路525は、リクエストがタイムアウトした場合に、故障ノードリスト550においてリクエストの送信先のノードに対応する故障ノードフラグを論理“1”に設定する。上述のように、故障ノードフラグが論理“1”に設定されたノードに対する新規のリクエストは発行抑止回路526により抑止される。そのため、故障ノードフラグが論理“1”に設定された以降は、その故障ノードに対してのリクエストのリクエスト発行回路523による発行は抑止される。例えば、上述のように、リクエストに対する応答のないノードに対して複数回にわたってリクエストを発行してしまった場合、応答を待つリクエストが積みあがっていく。この場合、例えば、CPU112内部の資源を使い切るなどしてしまい、正常なノードがスローダウンし、異常ノードとなってしまうことがある。しかしながら、第1の実施形態によれば、故障ノードリスト550により故障ノードに対するリクエストの発行が抑止できる。そのため、CPU112内部の資源を使い切るなどしてしまい、正常なノードがスローダウンし、異常ノードとなってしまうことを抑止できる。なお、例えば、故障ノードの情報処理システム500からの切り離しなどの処理が完了し、正常なノードへのアクセスが可能になった場合には、故障ノードフラグを論理“1”から論理“0”に設定し、アクセスを再開できるようにしてよい。また、第1の実施形態によれば、リクエストのタイムアウトが発生した場合、割込通知回路527は、割り込み通知をコア515に出力し、それにより、CPU内部の処理監視時間を計時するタイマがリセットされる。そのため、リクエストのタイムアウトによりCPU内部の処理監視時間もタイムアウトしてしまい、リクエストを送信したビルディングブロック501がダウンしてしまうことを抑止できる。
図7は、情報処理システム500におけるリクエストの発行の抑止動作を例示する図である。例えば、ビルディングブロック#0のCPU512が、同じビルディングブロック#0内のメモリ511の共有領域にアクセスした場合に、アクセスした共有領域の実体データが別のビルディングブロック#1のメモリ511の共有領域にあったとする。この場合、ビルディングブロック#0のCPU512は、共有領域の実体データを有する別のビルディングブロック#1にリクエストを送信し、その応答でデータを取得する。ここで、リクエストの送信先であるビルディングブロック#1が故障していたとする。この場合、ビルディングブロック#0のCPU512は、故障しているビルディングブロック#1へとリクエストを送信することになる(図7の701)。しかしながら、故障しているビルディングブロック#1からはリクエストに対する応答が返ってこず、リクエストのタイムアウトが発生する(図7の702)。この場合に、ビルディングブロック#0のCPU512は、リクエストの送信先であるビルディングブロック#1に対応する故障ノードフラグを故障ノードリスト550において論理“1”に設定する。それによって、ビルディングブロック#1に対する以降の新規のリクエストの発行が抑止される(図7の703)。そのため、応答を待つリクエストが積みあがっていくことを抑制でき、例えば、CPU112内部の資源が使い切られて正常なノードがスローダウンし、それによって異常ノードとなってしまうことが抑止できる。また、タイムアウトしたリクエストについては、割込通知回路527が、割り込み通知をコア515に通知することで、CPU512内部の処理監視時間を計時するタイマをリセットする。そのため、リクエストのタイムアウトによりCPU内部の処理監視時間もタイムアウトしてしまい、それによってリクエストを送信したビルディングブロック501がダウンしてしまうことを抑止できる。
なお、上記においては、ビルディングブロック#0のCPU512が、ビルディングブロック#1へのリクエストの発行を故障ノードリスト550に基づいて抑止する場合を例示している。しかしながら、実施形態はこれに限定されるものではない。例えば、或るビルディングブロック501のCPU512が、他のビルディングブロック501からのリクエストを受信し、リクエストに対する応答を返信する際にも故障ノードリスト550を用いた制御が実行されてよい。また、或るビルディングブロック501のCPU512が、他のビルディングブロック501からのリクエストを受信した際に、そのリクエストの対象となるデータが、更に別のビルディングブロック501に持ち出されていることがある。この様な場合には、リクエストを受信したビルディングブロック501のCPU512は、リクエストの対象となるデータの持ち出し先のビルディングブロック501へとリクエスト(キャッシュ要求)を発行する。なお、以下の説明では、この様に、データの持ち出し先のビルディングブロック501へと更にリクエストを発行する場合、そのリクエストをオーダーと呼ぶことがある。そして、オーダーの送受信の際にも故障ノードリスト550による制御が実行されてよい。
図8は、故障ノードリスト550によるリクエスト及びオーダーの発行と、発行抑止とについて例示する図である。図8は、ロード命令の実行時に故障ノードリスト550を参照する場合を例示する。図8には、BB#a−CPU#1、BB#b−CPU#2、BB#c−CPU#3の異なる3つのノードに含まれるCPUが示されている。そして、例えば、BB#a−CPU#1がBB#b−CPU#2に対してリクエストを送信する場合、BB#a−CPU#1は、リクエストの送信先のBB#b−CPU#2に対応する故障ノードフラグが論理“1”に設定されていないことをチェックする。一方、BB#b−CPU#2が、BB#a−CPU#1から受信したリクエストに対する応答を返信する場合、BB#b−CPU#2は、BB#a−CPU#1に対応する故障ノードフラグが論理“1”に設定されていないことをチェックする。また、受信したリクエストで要求されるデータが他のBB#c−CPU#cに持ち出されていることがある。この場合、BB#b−CPU#2は、データの持ち出し先のBB#c−CPU#3に対応する故障ノードフラグが論理“1”に設定されていないことをチェックする。そして、BB#c−CPU#3に対応する故障ノードフラグが論理“1”に設定されていなければBB#c−CPU#3にオーダー(キャッシュ要求)を送信する。また、BB#c−CPU#3がBB#b−CPU#2から受信したオーダーに対する応答を返信する際、BB#c−CPU#3は、故障ノードリスト550を参照し、BB#b−CPU#2に対応する故障ノードフラグが論理“1”でないことをチェックする。従って、図8の例では、BB#a−CPU#1がリクエストを発行し、データを受信するまでに故障ノードリスト550を用いた確認が4回実行されている。例えば、この様に、リクエストやオーダーの送信及び受信の際に、故障ノードリスト550を用いたリクエストの発行抑止の制御を複数回実行することで、故障ノードに対する無駄なリクエストや応答の送信を更に低減することができる。
また、上述のように、例えば、リクエストのタイムアウトが発生した場合に、その原因が経路の故障に起因する場合がある。この場合、例えば、故障した経路を縮退することで通信を継続可能であることがある。そのため、CPU512は、ルータ回路531において経路の故障が検出されている場合には、故障ノードリスト550の設定を抑止し、例えば、リクエストのタイムアウトが発生したとしても、故障ノードリスト550の設定を行わないように制御してよい。この場合、CPU512は、例えば、故障した経路を縮退した後、アクセスを再開する。経路故障の場合の経路の縮退制御と、故障ノードリスト550の設定抑止とは例えば以下のように実行されてよい。
図9は、CPU512間を繋ぐ経路(ウェイ)の構成を例示する図である。図9には、CPU512と、クロスバチップ513と、クロスバスイッチ502とが示されている。CPU512は、ホームエージェント回路520と、ルータ共通回路902、ルータポート固有回路903とを含む。ホームエージェント回路520は、コア515及びメモリ511へのアクセスを行う。ルータ共通回路902と、ルータポート固有回路903とはCPU512を経路に繋ぐ。なお、ルータポート固有回路903は、経路毎に個別に備えられている。また、ルータ共通回路902と、ルータポート固有回路903とは、上述のルータ回路531に含まれる。経路は、クロスバチップ513と、クロスバスイッチ502とで形成されている。図9では、経路は、経路#0と経路#1との2つの経路の冗長構成となっており、例えば一方の経路が故障した場合には故障した経路を縮退することで、もう一方の経路を用いて通信を継続することが可能である。
図10は、ホームエージェント回路520と、ルータ共通回路902、ルータポート固有回路903とを更に詳細に例示する図である。図10を参照して、故障ノードフラグの設定と、経路故障の場合の経路の縮退とについて以下に説明する。
図10において、ホームエージェント回路520は、例えば、パイプ522、リクエスト発行回路523、タイマ524、設定回路525、割込通知回路527、縮退タイミング制御回路1001、パケット発行抑止制御回路1002を含む。リクエスト発行回路523は、例えば、バッファ及びレジスタを含む。図10では、ムーブインバッファ(MIB)、リプレイス(RPB)バッファ、メッセージ送受信(MSGQ)・クレンズ制御(CLPT)のバッファ、及びロックレジスタ(LKR)などをリクエスト発行回路523が含む例が示されている。また、縮退タイミング制御回路1001は、ドレインタイマ1003及びバリッド(VLD)回路1004を含む。
ルータ共通回路902は、例えば、縮退制御回路1011、及び振分制御部1013を含む。縮退制御回路1011は、経路毎に、縮退仮保持(Pending Latch)部1015と、縮退保持(Delete Latch)部1016とを含む。縮退制御回路1011は、ルータポート固有回路903から経路の異常を通知する経路別異常検出通知を受けると、その通知された経路に対する異常検出の情報を一時的に縮退仮保持部1015に記録する。また、縮退制御回路1011は、経路別異常検出通知を受けると、経路で異常が発生したことを通知する異常検出通知をホームエージェント回路520の縮退タイミング制御回路1001に出力する。そして、縮退制御回路1011は、縮退タイミング制御回路1001から異常検出通知に対する応答である縮退実行応答を受信すると、縮退仮保持部1015に一時的に記録された経路の異常を解除し、縮退保持部1016に記憶する。縮退保持部1016は、縮退された経路の情報を記憶する。また、縮退制御回路1011は、縮退実行応答を受信すると、後述する振分制御部1013の振分回路1019に縮退を指示する。
振分制御部1013は、例えば、マルチプレクサ1017、バッファ1018、振分回路1019、タイマ1020、クレジット回路1021を含み、リクエストをどの経路へと流すかを制御する。マルチプレクサ1017は、パケット発行抑止制御回路1002から入力されたリクエストを、バッファ1018に出力する。バッファ1018は、例えば、入力されたリクエストを一時的に蓄積し、振分回路1019へと出力する。振分回路1019は、例えば、リクエストを経路へと振り分ける。クレジット回路1021は、例えば、クロスバスイッチ502との間でのクレジットのやり取りを管理する回路である。タイマ1020は、例えば、クロスバスイッチ502に貸し出したクレジットが返ってきたか否かを監視するためのタイマである。
また、CPU512は、経路毎に、ルータポート固有回路903を備える。図10では経路#0系と、経路#1系の2つのルータポート固有回路903が含まれている。ルータポート固有回路903は、例えば、経路故障検出回路(WF)1031、ポートエラー(PE)検出回路1032、異常通知回路1033、バッファ1034、ポート1035、破棄回路1036を含む。ポート1035は、例えば、送信ポート1037、受信ポート1038、及びモジュール回路1039を含む。受信ポート1038は、例えば、データを受信するポートであり、送信ポート1037は、データを送信するポートである。モジュール回路1039は、データリンク層のデータを処理するモジュールである。ルータポート固有回路903が備えるその他の回路の動作については、後述する。
以下、図13を参照して、まず経路に異常が発生していない場合のリクエストの発行とリクエストの発行抑止について説明する。なお、後述するように、経路故障が発生している場合、縮退タイミング制御回路1001は、リクエスト発行回路523にFNL設定抑止信号を出力し、また、パケット発行抑止制御回路1002に所定の期間にわたってパケット発行抑止信号を出力する。一方、経路故障が発生していない場合、縮退タイミング制御回路1001は、FNL設定抑止信号及びパケット発行抑止信号を出力しない。この場合に、パイプ522は、コア515からリクエストが入力されると、図6を参照して述べた様に、故障ノードリスト550を参照し、リクエストの送信先のノードが故障しているノードであるか否かを判定する。例えば、リクエストの送信先のノードに対する故障ノードフラグが論理“1”に設定されている場合、送信先のノードが故障ノードであると考えられるため、パイプ522はリクエストを抑止する。一方、故障ノードフラグが論理“0”に設定されており、送信先のノードが故障ノードでない場合、パイプ522はリクエストをリクエスト発行回路523に入力する。リクエスト発行回路523は、例えば、入力されたリクエストをバッファに一時的に蓄積し、その後、リクエストをパケット発行抑止制御回路1002に出力することで送信先ノードに対してリクエストを発行し、タイマ524を起動する。
パケット発行抑止制御回路1002は、例えば、縮退タイミング制御回路1001からパケット発行抑止信号が入力されていない場合、入力されたリクエストを、振分制御部1013のマルチプレクサ1017へと出力する。マルチプレクサ1017は、例えば、複数のリクエスト発行回路523から入力されたリクエストをバッファ1018に出力する。バッファ1018は、入力されたリクエストを一時的に蓄積し、振分回路1019へと出力する。振分回路1019は、例えば、リクエストを各経路のルータポート固有回路903のバッファ1034へと振り分ける。ルータポート固有回路903のバッファ1034は、入力されたリクエストを一時的に蓄積し、ポート1035を介してリクエストをCPU512の外部へと出力する。
ここで、例えば、リクエスト発行回路523がリクエストを発行し、そのリクエストが送信先のノードに向けて送信された後、リクエストに対応する応答がなく、タイマ524がタイムアウトしたとする。この場合、設定回路525は、パイプ522が備える故障ノードリスト550において、リクエストの送信先のノードと対応する故障ノードフラグを論理“1”に設定する。これにより、以降のそのノードに対するリクエストの発行を抑止することができる。また、タイムアウトしたリクエストについては、割込通知回路527が、割り込み通知をコア515に通知する。それにより、コア515が保持するCPU512内部の処理監視時間を計時するタイマをリセットするため、CPU内部の処理監視時間のタイムアウトによるビルディングブロック501のダウンを回避することができる。
続いて、経路の異常が検出された場合の経路の縮退処理について説明する。なお、経路の異常は、例えば、クロスバスイッチ502の故障や、ポート1035の故障を含んでよい。
例えば、経路が故障した場合、ルータポート固有回路903のポート1035は、クロスバスイッチ502から経路の故障を通知するフェイタルパケットを受信する。ポート1035で受信されたフェイタルパケットは、モジュール回路1039で処理される。経路故障検出回路1031は、ポート1035でフェイタルパケットが受信されたことを検出し、異常通知回路1033に経路の異常を通知する。また、ポートエラー検出回路1032は、接続しているポートの異常を検出し、異常通知回路1033にポートの異常を通知する。ポートエラー検出回路1032は、例えば、ポート1035のリンクダウン(LDW)、又はFOS(Fatal Ordered Set)を検出することで、ポートの異常を検出してよい。なお、リンクダウン及びFOSは、例えば、クロスバスイッチ502からのポートの異常を示す通知であってよい。また、ポートエラー検出回路1032は、ポートの異常を検出すると、破棄回路1036に破棄信号を出力する。破棄回路1036は、破棄信号が入力されると、バッファ1034が一杯にならないようにリクエストを破棄する。異常通知回路1033は、経路故障検出回路1031又はポートエラー検出回路1032のいずれかから異常が通知されると、ルータ共通回路902の縮退制御回路1011に経路の異常を示す経路別異常検出通知を通知する。なお、異常通知回路1033は、例えば、論理回路:ORで実現することができる。なお、ルータポート固有回路903は、例えば、経路毎に備えられており、経路別異常検出通知は経路毎の経路の異常を通知する情報である。
ルータ共通回路902の縮退制御回路1011は、経路毎に、縮退仮保持部1015と、縮退保持部1016とを含む。そして、縮退制御回路1011は、経路毎に備えられたルータポート固有回路903のいずれかの異常通知回路1033から経路別異常検出通知を受けると、その経路に対応する縮退仮保持部1015を論理“1”に設定する。例えば、ルータポート固有回路903#0系から経路別異常検出通知を受けた場合、縮退制御回路1011は、経路#0系に対応する縮退仮保持部1015を論理“1”に設定する。また、縮退制御回路1011は、経路別異常検出通知を受けた場合、異常検出通知をホームエージェント回路520の縮退タイミング制御回路1001へと出力する。
ホームエージェント回路520の縮退タイミング制御回路1001は、縮退制御回路1011から異常検出通知が入力されると、例えば、ドレインタイマ1003(例えば、ドレインタイマ#1及び#2)を起動する。既にタイマを起動中の場合は、後続の異常検出通知は無視する。また、縮退タイミング制御回路1001は、異常検出通知が入力されると、設定回路525が故障ノードリスト550の故障ノードフラグを論理“1”へと設定することを抑止するためのFNL設定抑止信号をリクエスト発行回路523に出力する。リクエスト発行回路523は、FNL設定抑止信号が入力されると、FNL設定抑止信号が入力された時点においてリクエスト発行回路523内のバッファに蓄積されているリクエストに対して、設定抑止情報を設定する。設定抑止情報は、例えば、設定回路525によるFNLの更新を抑止するために用いられるFNL更新抑止フラグであってよく、例えば、リクエスト発行回路523が備える記憶回路に記憶されていてよい。例えば、設定回路525は、FNL更新抑止フラグがセットされている場合、そのリクエストの送信先のノードに対する故障ノードフラグの設定を抑止する。従って、リクエストがタイムアウトしたとしても、その原因が経路の異常に起因する場合には、故障ノードフラグの設定は実行されない。
また、縮退タイミング制御回路1001は、異常検出通知が入力されると、ドレインタイマ#1のカウントを開始し、パケット発行抑止制御回路1002にパケット発行抑止信号を出力する。そして、バリッド回路1004は、ドレインタイマ#1が所定の期間のカウントを完了するのを監視する。そして、バリッド回路1004がカウントの完了を検出すると、縮退タイミング制御回路1001は、パケット発行抑止信号の出力を停止する。パケット発行抑止制御回路1002は、パケット発行抑止信号が入力されると、リクエスト発行回路523からのリクエストの発行を抑止する。なお、パケット発行抑止制御回路1002は、例えば、論理回路:ANDで実現することができる。また、縮退タイミング制御回路1001は、異常検出通知が入力されると、ドレインタイマ#2のカウントを開始する。そして、バリッド回路1004は、ドレインタイマ#2が所定の期間のカウントを完了するのを監視する。そして、バリッド回路1004がカウントの完了を検出すると、縮退タイミング制御回路1001は、ルータ共通回路902の縮退制御回路1011に、異常が検出された経路の縮退実行を要求する縮退実行応答を出力する。なお、ここで、ドレインタイマ#2によりカウントされる所定の期間は、例えば、ルータポート固有回路903から異常検出通知が通知された後、ルータ共通回路902において経路を縮退できるようになるまでの待ち時間である。
縮退制御回路1011は、縮退実行応答が入力されると、例えば、縮退対象の経路に設定されている縮退仮保持部1015の設定を解除する。また、縮退制御回路1011は、縮退実行応答が入力されると、例えば、経路毎の縮退保持部1016のいずれにも縮退を示す情報がセットされていない場合に限り、縮退対象の経路に対応する縮退保持部1016に、経路の縮退を示す情報を設定する。また、この場合、縮退制御回路1011は、振分制御部1013の振分回路1019に縮退対象の経路の縮退を指示する縮退指示信号を出力する。
振分制御部1013の振分回路1019は、バッファ1018に入力されたリクエストを各経路のルータポート固有回路903のバッファ1034へと振り分ける。例えば、振分回路1019は、リクエストを経路#0又は経路#1へと振り分けてよい。また、振分回路1019は、例えば、縮退制御回路1011から縮退を指示する縮退指示信号が入力された場合、縮退が指示されていない経路へとリクエストを振り分ける。
以上で述べた様に、経路における異常が検出された場合には、縮退タイミング制御回路1001がFNL設定抑止信号をリクエスト発行回路523に出力し、それによって、設定回路525による故障ノードリスト550の設定が抑止される。そのため、例えば、リクエストのタイムアウトが、経路異常に起因している場合にリクエストの送信先のノードを故障ノードとして故障ノードリスト550に設定してしまうことを防止できる。
図11は、経路の異常が検出された場合に故障ノードフラグの設定を抑止する動作の流れを例示している。例えば、クロスバスイッチ502において経路#0の異常が検出された場合、クロスバスイッチ502はフェイタルパケット(図11のFATAL−XXX#0)を経路#0に対応するルータポート固有回路903に送信する(図11の(1))。ルータポート固有回路903は、フェイタルパケットを受信すると、経路別異常検出通知をルータ共通回路902の縮退制御回路1011に通知する(図11の(2))。縮退制御回路1011は、経路別異常検出通知を受けると、対応する経路#0の縮退仮保持部1015を論理“1”に設定する(図11の(3))。また、縮退制御回路1011は、経路別異常検出通知を受けると、異常検出通知をホームエージェント回路520の縮退タイミング制御回路1001に出力する(図11の(4))。縮退タイミング制御回路1001は、異常検出通知が入力されると、ドレインタイマ1003(例えば、ドレインタイマ#1及び#2)を起動する(図11の(5))。また、縮退タイミング制御回路1001は、異常検出通知が入力されると、リクエスト発行回路523にFNL設定抑止信号を通知する(図11の(6))。更に、縮退タイミング制御回路1001は、異常検出通知が入力されると、パケット発行抑止制御回路1002にドレインタイマ#1が所定の期間のカウントを完了するまでパケット発行抑止信号を出力する。また、縮退タイミング制御回路1001は、ドレインタイマ#2が所定の期間のカウントを完了すると、縮退制御回路1011に、異常が検出された経路の縮退実行を要求する縮退実行応答を出力する(図11の(7))。縮退制御回路1011は、縮退実行応答が入力されると、縮退仮保持部1015#0を論理“0”に設定する。また、縮退制御回路1011は、縮退実行応答が入力されると、縮退保持部#0,#1のどちらもが論理“1”でない場合に限り、経路異常の検出された経路#0の縮退保持部#0を論理“1”に設定し(図11の(8))、振分制御部1013に縮退を指示する。また、リクエスト発行回路523は、FNL設定抑止信号を受信すると、FNL設定抑止信号が入力された時点においてリクエスト発行回路523内のバッファに蓄積されているリクエストに対して、設定抑止情報を設定する(図11の(9))。
ここで、例えば、コア515がリクエストをリクエスト発行回路523に入力した場合、リクエスト発行回路523はリクエストを発行し、タイマ524を起動する(図11の(10))。そして、発行されたリクエストは送信先のノード宛てで出力される(11)。この場合に、例えば、リクエストの送信先のノードが故障しており、パケットがロストしてしまい(図11の(12))、結果として、リクエスト発行回路523が発行したリクエストがタイムアウトしてしまったとする(図11の(13))。この場合にも、リクエストには設定抑止情報が設定されているため、設定回路525は故障ノードリスト550の設定を抑止する(図11の(14))。
従って、リクエストがタイムアウトした場合にも、経路故障が検出されていれば、設定回路525による故障ノードリスト550の設定が抑止される。上述のように、例えば、リクエストのタイムアウトが発生した場合に、リクエストの送信先のノードが故障していると見做し、リクエストのタイムアウトが発生した送信先のノードに対するリクエストの発行を抑止する制御を行ったとする。この場合、例えば、同じ経路を通るリクエストの送信先のノードのすべてを故障ノードと判定してしまい、実際には故障した経路を縮退することで通信を継続可能であったとしても、送信先のノードとの通信を抑止してしまうことになる。しかしながら、本実施形態によれば、経路故障が検出されていれば、故障ノードリスト550の設定を抑止する。そのため、例えば、故障した経路を通る別のリクエストの送信先のノードを誤って故障ノードと判定してしまい、リクエストを抑止してしまうことが防止できる。そして、例えば故障した経路を縮退することで、もう一方の経路を用いて通信を継続することができる。
以上で述べた様に、第1の実施形態では、送信先のノードに発行したリクエストがタイムアウトした場合に、設定回路525は、その送信先のノードに対応する故障ノードフラグを故障ノードリスト550において論理“1”に設定する。そして、故障ノードフラグが論理“1”に設定されている場合、発行抑止回路526はそのノードに対するその後のリクエストの発行を抑止する。そのため、故障しているノードに複数回にわたりリクエストを発行してしまい、応答を待つリクエストが積みあがってしまうことを抑止できる。それによって、CPU112内部の資源を使い切るなどしてしまい、正常なノードがスローダウンし、異常ノードとなってしまうことを回避できる。また、例えば、リクエストがタイムアウトした場合に、経路の異常が通知されていれば、故障ノードリスト550への設定が抑止される。そのため、経路の異常である場合に、送信先のノードを故障ノードと誤判断してしまい、そのノードに対するリクエストの発行を故障ノードリスト550により抑止してしまうことが防止できる。更に、タイムアウトしたリクエストについては、割込通知回路527が、割り込み通知をコア515に通知する。それにより、コア515が保持するCPU512内部の処理監視時間を計時するタイマをリセットするため、CPU内部の処理監視時間のタイムアウトによるビルディングブロック501のダウンを回避することができる。
<第2の実施形態>
第1の実施形態では、CPU内部に備えられたパイプ522が故障ノードリスト550を記憶し、パイプ522が故障ノードリスト550によりリクエストの発行と抑止とを制御する例を述べた。しかしながら、実施形態はこれに限定されるものではない。第2の実施形態では、更に、ビルディングブロック501で動作するファームウェア又はソフトウェアが設定可能な第2の故障ノードリスト1202を用いる場合を例示する。
図12は第2の実施形態に係るホームエージェント回路520とSCF1200とによる故障ノードリストの同期を例示する図である。図12に示されるように、ホームエージェント回路520は、例えば、パイプ522、リクエスト発行回路523、タイマ524、設定回路525、発行抑止回路526、割込通知回路527を含む。
また、CPU512を備えるビルディングブロック501は、更に、SCF(System Control Facility)1200と呼ばれるファームウェア又はソフトウェアを実行する装置と、記憶装置1210とを備えている。例えば、SCF1200は、ビルディングブロック501が備えるCPU512、メモリ511の状態や、ビルディングブロック501内の温度など、ビルディングブロック501の状態を監視する監視装置であってよい。また、SCF1200は、例えば、ビルディングブロック501が備えるFPGA(field-programmable gate array)で実装されてよく、別の実施形態では、SCF1200は、SCF内のプロセッサが記憶装置1210内のプログラムを実行することでファームウェア又はソフトウェアを実行してよい。SCF1200は、記憶装置1210に記憶されている第2の故障ノードリスト1202を読み書きしてよい。そして、第2の故障ノードリスト1202の故障ノードフラグは、例えば、故障ノードリスト550との間で同期されてよい。例えば、設定回路525が故障ノードリスト550の故障ノードフラグの設定を変更したとする。この場合に、割込通知回路527は、コア515に割り込み通知を出力し、コア515からの通知を受けて、SCF1200は、記憶装置1210の第2の故障ノードリスト1202の故障ノードフラグに同じ設定の変更を行う。一方、SCF1200が、第2の故障ノードリスト1202の故障ノードフラグの設定を変更した場合、SCF1200は設定の変更をCPU512のコア515に通知し、コア515の指示に従って、例えば、設定回路525が同じ変更を故障ノードフラグに行う。それによって、故障ノードリスト550と、第2の故障ノードリスト1202とは同期される。
そして、SCF1200は、例えば、CPU512内部のパイプ522の故障ノードリスト550の設定が変更された場合に、その変更を他のビルディングブロック501のCPU512に通信経路を介して通知する。即ち、例えば、或るビルディングブロック501のCPU512が発行したリクエストがタイムアウトし、CPU512が故障ノードリスト550において送信先のノードに対し故障ノードフラグを設定したとする。この場合に、同じノード内のSCF1200は、第2の故障ノードリスト1202に同様に設定を行い、また、他のノードのSCF1200にも故障ノードフラグを設定したことを通知する。通知を受けた他のノードのSCF1200は、通知に従って、同じノード内の第2の故障ノードリスト1202に故障ノードフラグを設定する。第2の故障ノードリスト1202の設定が変更されると、その変更が同じノード内のCPU512の故障ノードリスト550に同期される。これにより、他のノードが故障ノードに不要なリクエストを送信してしまうことを抑止することができる。
第2の実施形態の活用例として、例えば、或るノードの電源を強制的にパワーオフする際に故障ノードフラグを設定することが考えられる。例えば、ソフトウェアや、OS(オペレーティングシステム)の不具合などでノードの電源を強制的にオフするために、強制終了と呼ばれる機能がある。しかし、共有メモリシステムにおいて、ノードを強制的に切断すると、他ノードからはそのノードが故障したように見えてしまい望ましくない。これを回避するために、第2の故障ノードリスト1202を利用することができる。
図13は、第2の実施形態に係る情報処理システム500においてノードを強制終了する場合の動作を例示する図である。S1301において、ユーザはビルディングブロックAで動作するSCF1200に強制終了の指示を入力する。S1302においてSCF1200は、第2の故障ノードリスト1202において、情報処理システム500内で動作する他のビルディングブロック501(例えば、ビルディングブロックB,C)に対応する故障ノードフラグを論理“1”に設定する。また、SCF1200は、情報処理システム500内の他のビルディングブロック(例えばB、C)のSCF1200に、第2の故障ノードリスト1202において、ビルディングブロックAに対する故障ノードフラグを論理“1”に設定するように指示を通知する。
また、SCF1200は、第2の故障ノードリスト1202に実行した設定の変更を、同じビルディングブロックAに含まれるCPU512に対して通知する。それによって、第2の故障ノードリスト1202に実行した設定の変更が、CPU512の故障ノードリスト550にも実行され、故障ノードリスト550は、第2の故障ノードリスト1202と内容が一致するように同期される(S1303)。
故障ノードリスト550の同期により、他のビルディングブロック501に対するリクエストの発行は抑止される(S1304)。S1305においてSCF1200は、強制終了を開始し、S1306において強制終了を完了する。
また、S1307において、他のビルディングブロック501のSCF1200は、ビルディングブロックAから、ビルディングブロックAに対応する故障ノードフラグを論理“1”に変更するよう指示する通知を受信する。すると、他のビルディングブロック501のSCF1200は、第2の故障ノードリスト1202において、ビルディングブロックAに対応する故障ノードフラグを論理“1”に設定する。更に、SCF1200は、その設定の変更を、同じビルディングブロック内のCPU512に通知し、第2の故障ノードリスト1202に対する設定の変更が故障ノードリスト550にも適用される(S1308)。これにより、故障ノードリスト550は、第2の故障ノードリスト1202の内容と一致するように同期される。そして、他のビルディングブロック501のCPU512が、強制終了したビルディングブロックAに対してアクセスすることが抑止される(S1309)。
以上で述べた様に、強制終了を実行する前にSCF1200が、他のビルディングブロック501のSCF1200に第2の故障ノードリスト1202の故障ノードフラグの設定を変更するように指示する。すると、指示に従って、SCF1200の第2の故障ノードリスト1202が変更され、その設定の変更は他のビルディングブロック501のCPU512が備える故障ノードリスト550にも反映される。従って、情報処理システム500において動作する他のビルディングブロック501のCPU512が、強制終了したビルディングブロック501のCPU512にリクエストを発行してしまうといった、無駄なリクエストの発行が抑止される。これにより、強制終了の実行時の安全性も高まる。
なお、第2の実施形態において、SCF1200間の通信は例えば、図14に示す様に、ビルディングブロック501間を接続する通信ケーブル1401などを介して実行されてよい。通信ケーブル1401には、例えば、LAN(Local Area Network)ケーブルを用いることができる。
また、図13では強制終了が実行される場合を例示したが、実施形態はこれに限定されるものではない。図15は、第2の実施形態に係る情報処理システム500における第2の故障ノードリスト1202の利用の別な例を示す図である。S1501において、ビルディングブロックAのCPU512は、ビルディングブロックXに送信したリクエストのタイムアウトを検出する。S1502においてCPU512は、故障ノードリスト550においてビルディングブロックXに対応する故障ノードフラグを論理“1”に設定し、その設定変更をビルディングブロックAのSCF1200に通知する。S1503において、ビルディングブロックAのSCF1200は、通知された設定変更に従って、第2の故障ノードリスト1202においてビルディングブロックXに対応する故障ノードフラグを論理“1”に設定する。また、ビルディングブロックAのSCF1200は、その変更を情報処理システム500内の他のビルディングブロック501(例えば、B,C)のSCF1200に通知する。S1504において、他のビルディングブロック501のSCF1200は、通知された設定変更に従って、第2の故障ノードリスト1202においてビルディングブロックXに対応する故障ノードフラグを論理“1”に設定する。また、他のビルディングブロック501のSCF1200は、通知された設定変更を同じビルディングブロック501内のCPU512に通知する。S1505において、設定変更の通知を受けたCPU512は、通知された設定変更に従って、故障ノードリスト550においてビルディングブロックXに対応する故障ノードフラグを論理“1”に設定する。従って、例えば、情報処理システム500内の或るノードにおいて、別の故障ノードに対する故障ノードフラグが故障ノードリスト550に設定された場合に、その設定が情報処理システム500内の他のノードでも反映される。そのため、他のノードが故障ノードにリクエストを送信してしまうことを抑止できる。また、第2の実施形態ではSCF1200は、ファームウェア又はソフトウェアにより設定可能な第2の故障ノードリスト1202を備えている。そのため、ビルディングブロック501が備えるソフトウェアにより制御可能な通信経路等の資源を用いて第2の故障ノードリスト1202を用いた多様な処理が可能となる。
以上において、いくつかの実施形態が例示される。しかしながら、実施形態はこれに限定されるものではない。例えば、上記の実施形態においては、故障ノードフラグ、縮退仮保持部1015、縮退保持部1016などに対して設定される値の例として、論理“1”及び論理“0”を設定し処理を制御する例を述べている。しかしながら、同様の制御を実行するために、その他の値が故障ノードフラグ、縮退仮保持部1015、縮退保持部1016に対して設定されてもよい。
上述の実施形態を含むいくつかの実施形態は、上述の実施形態の各種変形形態及び代替形態を包含するものとして当業者には理解される。例えば、各種実施形態は、構成要素を変形して具体化されてよい。また、上述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施形態が実施されてよい。更には、実施形態に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施形態に示される構成要素にいくつかの構成要素を追加して種々の実施形態が実施されてよい。
100 共有メモリシステム
101 ビルディングブロック
102 クロスバスイッチ
111 メモリ
112 CPU
121 外部インタフェース
500 情報処理システム
501 ビルディングブロック
502 クロスバスイッチ
511 メモリ
512 CPU
513 クロスバチップ
515 コア
520 ホームエージェント回路
522 パイプ
523 リクエスト発行回路
524 タイマ
525 設定回路
526 発行抑止回路
527 割込通知回路
530 外部インタフェース
531 ルータ回路
902 ルータ共通回路
903 ルータポート固有回路
1001 縮退タイミング制御回路
1002 パケット発行抑止制御回路
1003 ドレインタイマ
1004 バリッド回路
1011 縮退制御回路
1013 振分制御部
1015 縮退仮保持部
1016 縮退保持部
1017 マルチプレクサ
1018 バッファ
1019 振分回路
1020 タイマ
1021 クレジット回路
1031 経路故障検出回路
1032 ポートエラー検出回路
1033 異常通知回路
1034 バッファ
1035 ポート
1036 破棄回路
1037 送信ポート
1038 受信ポート
1039 モジュール回路
1200 SCF
1210 記憶装置
1401 通信ケーブル

Claims (6)

  1. 複数のノードを含む共有メモリシステムであって、
    前記複数のノード各々は、
    演算処理装置と、
    メモリと、
    を含み、
    前記演算処理装置は、
    プロセッサコアと、
    前記共有メモリシステム内の他のノードが備える前記メモリに対する第1のリクエストを発行するリクエスト発行回路と、
    前記複数のノードそれぞれについて故障していることを示す第1の情報又は故障していないことを示す第2の情報が設定される第1の故障ノードリストを記憶する記憶回路と、
    前記リクエスト発行回路が発行した前記第1のリクエストがタイムアウトした場合、前記第1の故障ノードリストにおいて前記他のノードに前記第1の情報を設定する設定回路と、
    前記プロセッサコアから前記他のノードが備える前記メモリに対する第2のリクエストが入力された場合に、前記第1の故障ノードリストにおいて前記他のノードに前記第1の情報が設定されていれば前記リクエスト発行回路による前記第2のリクエストの発行を抑止し、前記第1の故障ノードリストにおいて前記他のノードに前記第2の情報が設定されていれば前記リクエスト発行回路による前記第2のリクエストの発行を抑止しない、発行抑止回路と、
    を含む、共有メモリシステム。
  2. 前記リクエスト発行回路は、更に、第1のノードとの間の通信経路の異常が通知された場合、前記リクエスト発行回路が備えるバッファ内に保持される前記第1のノードを送信先とする第3のリクエストに設定抑止情報を設定し、
    前記設定回路は、前記第1の故障ノードリストにおいて、前記設定抑止情報が設定されている前記第3のリクエストの送信先の前記第1のノードに前記第1の情報を設定する動作を抑止する、
    ことを特徴とする請求項1に記載の共有メモリシステム。
  3. 前記複数のノード各々は更に、
    監視装置と、
    前記複数のノードそれぞれについて前記第1の情報又は前記第2の情報が設定される第2の故障ノードリストを記憶する記憶装置と、
    を含み、
    前記監視装置は、前記設定回路が前記第1の故障ノードリストにおいて、第2のノードに前記第1の情報を設定した場合、前記共有メモリシステム内の別のノードの前記監視装置に前記第2の故障ノードリストにおいて前記第2のノードに前記第1の情報を設定するように指示し、
    前記演算処理装置及び前記監視装置は、前記第1の故障ノードリスト又は前記第2の故障ノードリストの一方の設定を変更した場合に、前記設定の変更を他方に反映させるように動作する、
    ことを特徴とする請求項1又は2に記載の共有メモリシステム。
  4. 前記演算処理装置は、更に、
    前記第1のリクエストがタイムアウトした場合に、前記第1のリクエストの処理時間の監視を解放させる割り込み通知を前記プロセッサコアに送信する割込通知回路を備える、
    ことを特徴とする請求項1から3のいずれか1項に記載の共有メモリシステム。
  5. プロセッサコアと、
    共有メモリシステム内の複数のノードのうちの他のノードが備えるメモリに対する第1のリクエストを発行するリクエスト発行回路と、
    前記複数のノードそれぞれについて故障していることを示す第1の情報又は故障していないことを示す第2の情報が設定される第1の故障ノードリストを記憶する記憶回路と、
    前記リクエスト発行回路が発行した前記第1のリクエストがタイムアウトした場合、前記第1の故障ノードリストにおいて前記他のノードに前記第1の情報を設定する設定回路と、
    前記プロセッサコアから前記他のノードが備える前記メモリに対する第2のリクエストが入力された場合に、前記第1の故障ノードリストにおいて前記他のノードに前記第1の情報が設定されていれば前記リクエスト発行回路による前記第2のリクエストの発行を抑止し、前記第1の故障ノードリストにおいて前記他のノードに前記第2の情報が設定されていれば前記リクエスト発行回路による前記第2のリクエストの発行を抑止しない、発行抑止回路と、
    を含む、演算処理装置。
  6. 共有メモリシステム内の複数のノードのうちの他のノードが備えるメモリに対してリクエスト発行回路が発行した第1のリクエストがタイムアウトした場合、前記複数のノードのそれぞれについて故障していることを示す第1の情報又は故障していないことを示す第2の情報が設定される第1の故障ノードリストにおいて、前記他のノードに対して前記第1の情報を設定回路が設定する工程と、
    プロセッサコアから前記他のノードが備える前記メモリに対する第2のリクエストが入力された場合に、前記第1の故障ノードリストにおいて前記他のノードに前記第1の情報が設定されていれば前記リクエスト発行回路による前記第2のリクエストの発行を発行抑止回路が抑止し、前記他のノードに前記第2の情報が設定されていれば前記リクエスト発行回路による前記第2のリクエストの発行を前記発行抑止回路が抑止しない工程と、
    を含む、演算処理装置が実行する方法。

JP2015141842A 2015-07-16 2015-07-16 共有メモリシステム、演算処理装置、及び方法 Active JP6540309B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015141842A JP6540309B2 (ja) 2015-07-16 2015-07-16 共有メモリシステム、演算処理装置、及び方法
US15/172,212 US9959173B2 (en) 2015-07-16 2016-06-03 Node, arithmetic processing device, and arithmetic processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015141842A JP6540309B2 (ja) 2015-07-16 2015-07-16 共有メモリシステム、演算処理装置、及び方法

Publications (2)

Publication Number Publication Date
JP2017027121A JP2017027121A (ja) 2017-02-02
JP6540309B2 true JP6540309B2 (ja) 2019-07-10

Family

ID=57776574

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015141842A Active JP6540309B2 (ja) 2015-07-16 2015-07-16 共有メモリシステム、演算処理装置、及び方法

Country Status (2)

Country Link
US (1) US9959173B2 (ja)
JP (1) JP6540309B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107870832B (zh) * 2016-09-23 2021-06-18 伊姆西Ip控股有限责任公司 基于多维度健康诊断方法的多路径存储设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06152612A (ja) 1992-11-10 1994-05-31 Fujitsu Ltd ポーリング制御方式
JP3345626B2 (ja) * 1994-09-29 2002-11-18 富士通株式会社 マルチプロセッサシステムにおけるプロセッサ異常対策装置およびマルチプロセッサシステムにおけるプロセッサ異常対策方法
US6163831A (en) * 1997-11-14 2000-12-19 Lucent Technologies, Inc. Minimum refractory period in a multiple agent resource sharing environment
JP2002259264A (ja) 2001-03-06 2002-09-13 Toshiba Corp サーバ及びデータ送信方法
JP3988146B2 (ja) 2004-07-27 2007-10-10 日本電気株式会社 マルチノードシステム、ノード間クロスバスイッチ、ノード、スイッチプログラム及びノードプログラム
JP5590022B2 (ja) * 2011-12-28 2014-09-17 富士通株式会社 情報処理装置、制御方法および制御プログラム
JP5614419B2 (ja) 2012-02-29 2014-10-29 富士通株式会社 情報処理装置、制御方法および制御プログラム
US9084155B2 (en) * 2012-06-13 2015-07-14 All Purpose Networks LLC Optimized broadband wireless network performance through base station application server
US9141461B2 (en) * 2013-06-23 2015-09-22 Intel Corporation Machine check architecture execution environment for non-microcoded processor

Also Published As

Publication number Publication date
JP2017027121A (ja) 2017-02-02
US20170017549A1 (en) 2017-01-19
US9959173B2 (en) 2018-05-01

Similar Documents

Publication Publication Date Title
US9256500B2 (en) Physical domain error isolation and recovery in a multi-domain system
US10007629B2 (en) Inter-processor bus link and switch chip failure recovery
JP5714571B2 (ja) キャッシュクラスタを構成可能モードで用いるキャッシュデータ処理
US7668923B2 (en) Master-slave adapter
US8850141B2 (en) System and method for mirroring data
US20050081080A1 (en) Error recovery for data processing systems transferring message packets through communications adapters
EP2634696B1 (en) Information processing apparatus, control method, and control program
US20060143497A1 (en) System, method and circuit for mirroring data
JP4529767B2 (ja) クラスタ構成コンピュータシステム及びその系リセット方法
CN104798349A (zh) 响应于端口故障的故障转移
JP6098778B2 (ja) 冗長化システム、冗長化方法、冗長化システムの可用性向上方法、及びプログラム
WO2017215430A1 (zh) 一种集群内的节点管理方法及节点设备
US7797571B2 (en) System, method and circuit for mirroring data
US20050080869A1 (en) Transferring message packets from a first node to a plurality of nodes in broadcast fashion via direct memory to memory transfer
US20050080920A1 (en) Interpartition control facility for processing commands that effectuate direct memory to memory information transfer
KR20180062807A (ko) 시스템 인터커넥트 및 이를 포함하는 시스템 온 칩
WO2012164417A1 (en) Sideband error signaling
US20050080945A1 (en) Transferring message packets from data continued in disparate areas of source memory via preloading
US20140298076A1 (en) Processing apparatus, recording medium storing processing program, and processing method
US20050078708A1 (en) Formatting packet headers in a communications adapter
US8868731B1 (en) Technique for false positives prevention in high availability network
JP6540309B2 (ja) 共有メモリシステム、演算処理装置、及び方法
US20100191942A1 (en) Information processor and control method
US11163630B2 (en) Using real-time analytics to manage application features
JP2010176345A (ja) マルチノードシステム、ノード、メモリダンプ処理方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190312

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190417

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190514

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190527

R150 Certificate of patent or registration of utility model

Ref document number: 6540309

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150