(57)【特許請求の範囲】
【請求項１】
第１の装置及び第２の装置を備えるコンピュータシステムであって、
前記第１の装置は、直近のタイムアウト例外の発生前に前記第２の装置に対して発行し、処理が完了していないリクエストの数である第１のカウント値を保持し、前記第１のカウント値に基づいて、前記第２の装置から受信したデータの処理方法を決定する、コンピュータシステム。
【請求項２】
前記第１の装置は、前記第１のカウント値が０である場合に、前記第２の装置から受信したデータをデータ処理に用いる記憶部に書込み、
前記第１のカウント値が０ではない場合に、前記第２の装置から受信したデータを保持しないことを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記第１の装置は、直近の前記タイムアウト例外の発生後に前記第２の装置に対して発行し、処理が完了していないリクエストの数である第２のカウント値を保持し、
前記タイムアウト例外の発生の際に、前記第１のカウント値と前記第２のカウント値の加算値を、新たな前記第１のカウント値として設定することを特徴とする請求項１または請求項２に記載のコンピュータシステム。
【請求項４】
前記コンピュータシステムは、前記第２の装置の障害診断を行う診断装置を備え、
前記第１の装置は、前記診断装置からの障害通知の際に、前記第１及び第２のカウント値を０に設定することを特徴とする請求項１乃至請求項３のいずれか１項に記載のコンピュータシステム。
【請求項５】
前記コンピュータシステムは、第３の装置をさらに備え、
前記第１の装置は、直近のタイムアウト例外の発生前に前記第３の装置に対して発行し、処理が完了していないリクエストの数である第３のカウント値を保持し、前記第３のカウント値に基づいて、前記第３の装置から受信したデータの処理方法を決定することを特徴とする請求項１乃至請求項４のいずれか１項に記載のコンピュータシステム。
【請求項６】
前記第１乃至第３のカウント値は、前記第１の装置の最大リクエスト発行数まで増加可能であることを特徴とする請求項５に記載のコンピュータシステム。
【請求項７】
直近のタイムアウト例外の発生前に外部装置に対して発行し、処理が完了していないリクエストの数である第１のカウント値を保持し、前記第１のカウント値に基づいて、前記外部装置から受信したデータの処理方法を決定する、処理装置。
【請求項８】
第１の装置及び第２の装置を備えるシステムの例外処理方法であって、
前記第１の装置は、直近のタイムアウト例外の発生前に前記第２の装置に対して発行し、処理が完了していないリクエストの数である第１のカウント値を保持し、前記第１のカウント値に基づいて、前記第２の装置から受信したデータの処理方法を決定する、例外処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータシステム、処理装置、及び例外処理方法に関する。
【背景技術】
【０００２】
近年のシステムには、システムの障害を監視する機能が備えられていることが多い（例えば、特許文献１）。例えば、２つ以上の装置を備え、当該２つの装置間でのデータのやり取りを行い、当該２つの装置の動作診断を行う診断処理装置を備えるシステムが知られている。
【０００３】
このようなシステムの一般的な構成を図８に示す。当該システムは、演算処理装置１と、外部演算処理装置２と、診断処理装置３と、を備える。演算処理装置１は、３つのＳＶＲ（Software Visible Register）、すなわちＳＶＲ１０、ＳＶＲ１１、ＳＶＲ１２を備える。以下の説明では、ＳＶＲ１１には外部演算処理装置２内のメモリ空間のアドレスが格納されているものとする。同様に、ＳＶＲ１２には外部演算処理装置２内のメモリ空間のアドレスが格納されているものとする。以下の説明では、これらのアドレスに格納されているメモリ空間を、メモリ空間（ＳＶＲ１１）、メモリ空間（ＳＶＲ１２）と記載する。以下に、各装置の動作詳細を説明する。
【０００４】
演算処理装置１は、読み出し命令を実行する。本説明において、読み出し命令とは、ＳＶＲ１０を他の読み出し命令が使用しないよう確保し、外部演算処理装置２内のメモリ空間（ＳＶＲ１１）またはメモリ空間（ＳＶＲ１２）からデータを読み出し、読み出したデータをＳＶＲ１０に書き込む命令である。まず、演算処理装置１は、外部演算処理装置２に対して外部演算処理装置２内のメモリ空間（ＳＶＲ１１）またはメモリ空間（ＳＶＲ１２）のデータの送信を要求する読み出しリクエストを発行する。
【０００５】
外部演算処理装置２は、当該読み出しリクエストに対する読み出しリプライを演算処理装置１に送信する。外部演算処理装置２は、障害が生じない限りにおいて、演算処理装置１に対して読み出しリプライを読み出しリクエストと同じ順序で送信する。外部演算処理装置２において障害が発生した場合、読み出しリクエストまたは読み出しリプライがロスト、すなわち失われてしまう。この場合、外部演算処理装置２が読み出しリプライを送信することができない。この場合の処理は、後述する。
【０００６】
診断処理装置３は、外部演算処理装置２の障害を検出し、検出した障害を演算処理装置１に対して通知する。
【０００７】
次に、外部演算処理装置２が想定時間内に演算処理装置１からの読み出しリクエストに対する読み出しリプライを送信しない場合の処理について説明する。一般的に、これらのシステムは、外部演算処理装置２において障害が発生し、読み出しリクエストまたは読み出しリプライが失われてしまうことを考慮して設計されている。演算処理装置１は、読み出しリクエストを発行してから読み出しリプライを受信するまでにかかると想定している最長時間よりも更に長い時間をタイムアウト時間として設定する。演算処理装置１では、読み出しリクエストを発行してからタイムアウト時間が経過するまでに外部演算処理装置２からの読み出しリプライを受信しない場合にタイムアウト例外が発生する。タイムアウト例外が発生した場合、演算処理装置１は、当該タイムアウト例外の発生前に発行した読み出しリクエストのためのＳＶＲを解放する。演算処理装置１は、診断処理装置３から障害通知を受信すると、障害が生じた外部演算処理装置２の切り離し、再組込等の障害回復処理を行う。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−１７２２１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、図８に記載のシステムでは、想定外の原因により外部演算処理装置２がタイムアウト時間内に読み出しリプライを送信できない場合、データ化け（すなわち、不正なデータが演算処理装置１において保持される）という問題が生じる。図９は、この問題が生じ得る動作例を示す図である。図９に示す動作について説明する。
【００１０】
（１） はじめに、演算処理装置１が、外部演算処理装置２内のメモリ空間（ＳＶＲ１１）からデータを読み出し、読み出したデータをＳＶＲ１０に書き込むための読み出しリクエストを発行する。
（２） タイムアウト時間経過し、演算処理装置１内にてタイムアウト例外が発生する。そして、演算処理装置１は、ＳＶＲ１０の解放処理を行う。
（３） 続いて演算処理装置１が、外部演算処理装置２内のメモリ空間（ＳＶＲ１２）からデータを読み出し、読み出したデータをＳＶＲ１０に書き込むための読み出しリクエストを発行する。
（４） 演算処理装置１は、（１）の読み出しリクエストに対応する読み出しリプライを外部演算処理装置２から受信し、受信したデータをＳＶＲ１０に書き込む。
【００１１】
上記のように、タイムアウト例外が発生することにより、演算処理装置１は、（１）の処理にかかる読み出しリクエストのために確保していたＳＶＲ１０を解放する。その後、演算処理装置は、（３）の処理にて新たな読み出しリクエストを発行する。この際、演算処理装置１は、（３）の処理にかかる読み出しリクエストのためにＳＶＲ１０を確保する。その後、演算処理装置１は、外部演算処理装置２からの読み出しリプライを受信するが、当該読み出しリプライは（１）の処理にかかる読み出しリクエストに対応するものである。そのため、演算処理装置１はこの読み出しリプライを破棄することが望まれる。しかしながら、演算処理装置１は、読み出しリプライがどの読み出しリクエストに対応するものであるかを判別することが出来ないために、受信した読み出しリプライからデータを取得してＳＶＲ１０に書き込んでしまう。すなわち、不正なデータがＳＶＲ１０に格納される状態となる。そのため、（３）にかかる読み出しリクエストに対応する読み出しリプライを受信する前にＳＶＲ１０を参照すると、不正なデータが使用されてしまうこととなる。
【００１２】
本発明はこのような問題を解決するためになされたものであり、不正なデータを書き込むことがないコンピュータシステム、及び例外処理方法、を提供することを主たる目的とする。
【課題を解決するための手段】
【００１３】
本発明にかかるコンピュータシステムの一態様は、
第１の装置及び第２の装置を備えるコンピュータシステムであって、
前記第１の装置は、直近のタイムアウト例外の発生前に前記第２の装置に対して発行し、処理が完了していないリクエストの数である第１のカウント値を保持し、前記第１のカウント値に基づいて、前記第２の装置から受信したデータの処理方法を決定する、ものである。
【００１４】
本発明にかかる処理装置の一態様は、
直近のタイムアウト例外の発生前に外部装置に対して発行し、処理が完了していないリクエストの数である第１のカウント値を保持し、前記第１のカウント値に基づいて、前記外部装置から受信したデータの処理方法を決定する、ものである。
【００１５】
本発明にかかる例外処理方法の一態様は、
第１の装置及び第２の装置を備えるシステムの例外処理方法であって、
前記第１の装置は、直近のタイムアウト例外の発生前に前記第２の装置に対して発行し、処理が完了していないリクエストの数である第１のカウント値を保持し、前記第１のカウント値に基づいて、前記第２の装置から受信したデータの処理方法を決定する、ものである。
【発明の効果】
【００１６】
本発明によれば、不正なデータを書き込むことがないコンピュータシステム、及び例外処理方法、を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】実施の形態１にかかるコンピュータシステムの構成を示すブロック図である。
【図２】実施の形態１にかかるコンピュータシステムの動作を示すシーケンス図である。
【図３】実施の形態１にかかるコンピュータシステムの動作を示すシーケンス図である。
【図４】実施の形態１にかかるコンピュータシステムの動作を示すシーケンス図である。
【図５】実施の形態１にかかるコンピュータシステムの動作を示すシーケンス図である。
【図６】実施の形態２にかかるコンピュータシステムの構成を示すブロック図である。
【図７】実施の形態１にかかる演算処理装置の最小構成を示すブロック図である。
【図８】本発明に関連するコンピュータシステムの構成を示すブロック図である。
【図９】本発明に関連するコンピュータシステムの動作を示すシーケンス図である。
【発明を実施するための形態】
【００１８】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。図１は、本実施の形態にかかるコンピュータシステムの構成を示すブロック図である。本システムは、演算処理装置１と、外部演算処理装置２と、診断処理装置３と、を備える。
【００１９】
演算処理装置１は、図８の構成と同様に、３つのＳＶＲ（Software Visible Register）、すなわちＳＶＲ１０、ＳＶＲ１１、ＳＶＲ１２を備える。以下の説明でも図８の説明と同様に、ＳＶＲ１１には外部演算処理装置２内のメモリ空間のアドレスが格納されているものとする。同様に、ＳＶＲ１２には外部演算処理装置２内のメモリ空間のアドレスが格納されているものとする。これらのアドレスに格納されているメモリ空間を、メモリ空間（ＳＶＲ１１）、メモリ空間（ＳＶＲ１２）と記載する。ＳＶＲ１０には、外部演算処理装置２から読み出したデータが書き込まれる。
【００２０】
演算処理装置１は、さらにカウンタ１６及び１７を備える。カウンタ１６は、直近のタイムアウト例外の発生前に外部演算処理装置２に対して発行され、仕掛中（処理が完了していない）となっているリクエストの数をカウントするカウンタである。カウンタ１７は、直近のタイムアウト例外の発生後に外部演算処理装置２に対して発行され、仕掛中（処理が完了していない）となっているリクエストの数をカウントするカウンタである。
【００２１】
なお、カウンタ１６及びカウンタ１７は、読み出しリクエストの最大発行数と同数までカウントできるカウンタである。演算処理装置１は、読み出しリクエストに対するタイムアウトを制御する制御機構（図示せず）も備えている。
【００２２】
演算処理装置１は、外部演算処理装置２に対する読み出しリクエストを発行した際にカウンタ１７の値をインクリメント（１だけ増加）する。
【００２３】
タイムアウト例外が発生した場合、演算処理装置１は、カウンタ１６に、カウンタ１６の値とカウンタ１７の値とを加算した加算値を設定した後に、カウンタ１７の値をリセット（すなわち０に設定）する。
【００２４】
演算処理装置１は、後述の診断処理装置３から外部演算処理装置２の障害通知を受信したときに、カウンタ１６及びカウンタ１７を共にリセットする。
【００２５】
演算処理装置１は、外部演算処理装置２から読み出しリプライを受信した際に、カウンタ１６の値が０である場合にカウンタ１７をデクリメント（１だけ減少）するとともに、受信した読み出しリプライをＳＶＲ１０に書き込む。一方、カウンタ１６の値が０ではない場合、演算処理装置１は、カウンタ１６のデクリメント（１だけ減少）のみを行う。
【００２６】
外部演算処理装置２は、演算処理装置１からの読み出しリクエストを受信し、当該リクエストに対応するデータを読み出しリプライとして演算処理装置１に送信する。
【００２７】
診断処理装置３は、外部演算処理装置２の障害を監視し、障害が検出された場合に、演算処理装置１に対して障害通知を送信する。
【００２８】
続いて、図２を参照して、本実施の形態にかかる演算処理装置１と、外部演算処理装置２と、の動作を説明する。図２は、演算処理装置１が外部演算処理装置２に対して読み出しリクエストを発行したものの、タイムアウト時間内に読み出しリプライが送信されなかった場合の動作を示すシーケンス図である。
【００２９】
図中の（０）の時点において、演算処理装置１のカウンタ１６及びカウンタ１７の値は共に０とする。演算処理装置１は、（１）の時点に外部演算処理装置２内のメモリ空間（ＳＶＲ１１）からデータを読み出し、読み出したデータをＳＶＲ１０に書き込むための読み出しリクエストを発行する。さらに、演算処理装置１は、発行した読み出しリクエストに対してＳＶＲ１０を確保する。
【００３０】
ここで、演算処理装置１は、カウンタ１７の値をインクリメントする、すなわちカウンタ１７の値を０から１に変更する。カウンタ１７の値が１であるため、演算処理装置１が直近のタイムアウト例外の発生後に発行し、仕掛中である読み出しリクエストは１つとなる。なお、この時点ではカウンタ１６の値は０であるため、演算処理装置１において、直近のタイムアウト例外の発生前に発行し、仕掛中である読み出しリクエストがないことを示す。
【００３１】
（２）の時点において、タイムアウト例外が発生している。すなわち、外部演算処理装置２が想定外の原因により（１）の読み出しリクエストに対する読み出しリプライを送信できなかったことを示す。
【００３２】
そのため、演算処理装置１は、（２）の時点においてカウンタ１６の値と、カウンタ１７の値とを加算し、加算した値をカウンタ１６に設定する。本例では、カウンタ１６には１（０＋１）が設定される。そして、カウンタ１６の設定の後に、演算処理装置１は、カウンタ１７をリセットし、ＳＶＲ１０を解放する。
【００３３】
上記より、（２）の時点では、カウンタ１６の値は１となるため、演算処理装置１において、直近のタイムアウト例外の発生後に発行し、仕掛中である読み出しリクエストが一つあることを示す。また、カウンタ１７の値が０であるため、演算処理装置１が直近のタイムアウト例外の発生後に発行し、仕掛中である読み出しリクエストがないことを示す。
【００３４】
（３）の時点において、演算処理装置１は、外部演算処理装置２内のメモリ空間（ＳＶＲ１２）からデータを読み出し、読み出したデータをＳＶＲ１０に書き込むための読み出しリクエストを発行する。さらに、演算処理装置１は、発行した読み出しリクエストに対してＳＶＲ１０を確保する。ここで、演算処理装置１は、カウンタ１７の値をインクリメントする、すなわちカウンタ１７の値を０から１に変更する。カウンタ１７の値が１であるため、演算処理装置１が直近のタイムアウト例外の発生後に発行し、仕掛中である読み出しリクエストは１つとなる。
【００３５】
（４）の時点において、外部演算処理装置２は、（１）の読み出しリクエストに対する読み出しリプライを演算処理装置１に送信する。演算処理装置１は、当該リプライを受信すると、カウンタ１６の値を参照する。カウンタ１６の値が１であるため、演算処理装置１は、当該リプライが直前のタイムアウト例外の発生前に発行した読み出しリクエストに対応するものであると判定する。このように判定したことから、演算処理装置１は、カウンタ１６のデクリメントのみを行い、ＳＶＲ１０へのデータ書き込みを行わない。このデクリメントにより、直前に発生したタイムアウト例外の発生前に発行された読み出しリクエストの処理が一つ完了したことになる。デクリメント後に、カウンタ１６の値は０となる。
【００３６】
このように、カウンタ１６が１以上の値を持つ場合にはＳＶＲ１０へのデータ書き込みを省略することにより、不正なデータがＳＶＲ１０に書き込まれることを防止できる。すなわち、データ化けが生じることを防止できる。
【００３７】
続いて（５）の時点において、外部演算処理装置２は、（３）の読み出しリクエストに対する読み出しリプライを演算処理装置１に送信する。演算処理装置１は、当該リプライを受信すると、カウンタ１６の値を参照する。
【００３８】
カウンタ１６の値は０であるため、演算処理装置１は、直近のタイムアウト例外の発生前に発行され、仕掛中の読み出しリクエストがないものと判定する。すなわち、演算処理装置１は、受信した読み出しリプライが直近のタイムアウト例外の発生後に発行された読み出しリクエストに対応するものであると判定する。よって、演算処理装置１は、カウンタ１７をデクリメントするとともに、受信した読み出しリプライをＳＶＲ１０に書き込む。カウンタ１７のデクリメントにより、直近のタイムアウト例外の発生後に発行された読み出しリクエストの処理が一つ完了したことになる。
【００３９】
このように、カウンタ１６（すなわち、直近のタイムアウト例外の発生前に発行され、仕掛中となっているリクエストの数）を参照してＳＶＲ１０にデータを書き込むか否かを判定することにより、不正なデータがＳＶＲ１０に書き込まれることを防止している。
【００４０】
続いて、演算処理装置１が外部演算処理装置２との切離し、及び再組込を行う場合の処理について図３〜図５を参照して説明する。切離し、及び再組込とは、演算処理装置１が障害の発生した外部演算処理装置２との接続を一旦解除した上で、初期状態から再度接続を再開することを指す。ここで、演算処理装置１が切離し、及び再組込を行う場合にはカウンタ１６及びカウンタ１７の値がともに０でなければならない。なぜならば、外部演算処理装置２にて障害が発生した場合には、読み出しリクエストまたは読み出しリプライがロスト、すなわち失われているためである。
【００４１】
演算処理装置１が診断装置３から障害通知を受信する場合は、３通りに分類することができる。この３通りについての処理順序を以下に列挙する。
（Ａ）
・演算処理装置１が読み出しリクエストを発行する前に外部演算処理装置２にて障害が発生
（Ｂ）
・演算処理装置１が読み出しリクエストを発行
・外部演算処理装置２にて障害が発生
・演算処理装置１が当該障害にかかる障害発生通知をタイムアウト例外が発生する前に受信
（Ｃ）
・演算処理装置１が読み出しリクエストを発行
・外部演算処理装置２にて障害が発生
・演算処理装置１にてタイムアウト例外が発生
・演算処理装置１が障害発生通知を受信
【００４２】
はじめに図３を参照して、上述の（Ａ）の場合の各装置の処理について説明する。（０）の時点において、演算処理装置１のカウンタ１６及びカウンタ１７の値は０とする。（１）の時点において、外部演算処理装置２の障害が発生する。そして、（２）の時点において、診断処理装置３は、外部演算処理装置２にて障害が発生したことを検知し、障害通知を演算処理装置１に対して行う。
【００４３】
演算処理装置１は、（３）の時点において、障害通知を受信する。障害通知を受信した演算処理装置１は、カウンタ１６及びカウンタ１７の値をリセットする。この例では、カウンタ１６及びカウンタ１７の値は０であるため、値は変更しない。その後、演算処理装置１は、外部演算処理装置２の切離し、及び再組込を行う。ここで、切離し、及び再組込の処理開始の際に、カウンタ１６及びカウンタ１７の値はともに０である。よって、当該切離し、及び再組込は正常に実行される。
【００４４】
次に図４を参照して、上述の（Ｂ）の場合の各装置の処理について説明する。（０）の時点において、演算処理装置１のカウンタ１６及びカウンタ１７の値は０とする。（１）の時点において、演算処理装置１は、外部演算処理装置２に対して読み出しリクエストを発行する。この時、演算処理装置１は、カウンタ１７の値をインクリメント、すなわち１に変更する。カウンタ１７の値が１であるため、演算処理装置１が直近のタイムアウト例外の発生後に発行し、仕掛中である読み出しリクエストは１つとなる。
【００４５】
（２）の時点において、外部演算処理装置２の障害が発生する。診断処理装置３は、（３）の時点において、外部演算処理装置２の障害発生を検知する。そして、診断処理装置３は、演算処理装置１に対して障害通知を送信する。
【００４６】
演算処理装置１は、（４）の時点において、診断処理装置３からの障害通知を受信する。障害通知の受信により、演算処理装置１は、カウンタ１６及びカウンタ１７の値をリセットする。これにより、カウンタ１６及びカウンタ１７の値は共に０となる。よって、演算処理装置１は、外部演算処理装置２の切離し、及び再組込を正常に実行することができる。
【００４７】
次に図５を参照して、上述の（Ｃ）の場合の各装置の処理について説明する。（０）の時点において、演算処理装置１のカウンタ１６及びカウンタ１７の値は０とする。（１）の時点において、演算処理装置１は、外部演算処理装置２に対して読み出しリクエストを発行する。この時、演算処理装置１は、カウンタ１７の値をインクリメント、すなわち１に変更する。カウンタ１７の値が１であるため、演算処理装置１が直近のタイムアウト例外の発生後に発行し、仕掛中である読み出しリクエストは１つとなる。
【００４８】
（２）の時点において、外部演算処理装置２の障害が発生する。（３）の時点において、演算処理装置１の内部にてタイムアウト例外が発生する。タイムアウト例外の発生により、演算処理装置は、カウンタ１６とカウンタ１７の値を合計した値である１をカウンタ１６に格納し、カウンタ１７をリセットする。すなわち、演算処理装置１のカウンタ１６の値は１となり、カウンタ１７の値は０となる。カウンタ１６の値が１であるため、演算処理装置１が直近のタイムアウト例外の発生前に発行し、仕掛中である読み出しリクエストは１つとなる。カウンタ１７の値が０であるため、演算処理装置１が直近のタイムアウト例外の発生後に発行し、仕掛中である読み出しリクエストは存在しないことを示す。
【００４９】
続いて、診断処理装置３は、（４）の時点において、外部演算処理装置２の障害発生を検知する。そして、診断処理装置３は、演算処理装置１に対して障害通知を送信する。
【００５０】
演算処理装置１は、（５）の時点において、診断処理装置３からの障害通知を受信する。障害通知の受信により、演算処理装置１は、カウンタ１６及びカウンタ１７の値をリセットする。これにより、カウンタ１６及びカウンタ１７の値は共に０となる。よって、演算処理装置１は、外部演算処理装置２の切離し、及び再組込を正常に実行することができる。
【００５１】
続いて、本実施の形態にかかるコンピュータシステムの効果について説明する。上述のように、演算処理装置１は、カウンタ１６とカウンタ１７を備え、直近のタイムアウト例外前に発行したにもかかわらず仕掛中となっている読み出しリクエスト数を保持する。この読み出しリクエスト数を参照することにより、不正なデータをＳＶＲ１０に書き込むことを防止できる。すなわち、データ化けを防止することができる。
【００５２】
さらに、演算処理装置１は、障害通知を受信した際にカウンタ１６及びカウンタ１７の値をリセットし、その後に外部演算処理装置の切離し、及び再組込を実行する。これにより、切離し、及び再組込を正常に実施することができる。
【００５３】
＜実施の形態２＞
本実施の形態にかかるコンピュータシステムは、複数の外部演算処理装置を備えることを特徴とする。本実施の形態にかかるコンピュータシステムについて図６を参照して説明する。以下の例では、演算処理装置１が２つの外部演算処理装置２１及び２２と接続されている。
【００５４】
図６に記載のコンピュータシステムは、演算処理装置１と、外部演算処理装置２１と、外部演算処理装置２２と、診断処理装置３と、を備える。
【００５５】
演算処理装置１は、カウンタ１６と、カウンタ１７と、カウンタ１８と、カウンタ１９と、を備える。カウンタ１６は、直近のタイムアウト例外の発生前に外部演算処理装置２１に対して発行され、仕掛中（処理が完了していない）となっているリクエストの数をカウントするカウンタである。カウンタ１７は、直近のタイムアウト例外の発生後に外部演算処理装置２１に対して発行され、仕掛中（処理が完了していない）となっているリクエストの数をカウントするカウンタである。カウンタ１８は、直近のタイムアウト例外の発生前に外部演算処理装置２２に対して発行され、仕掛中（処理が完了していない）となっているリクエストの数をカウントするカウンタである。カウンタ１９は、直近のタイムアウト例外の発生後に外部演算処理装置２２に対して発行され、仕掛中（処理が完了していない）となっているリクエストの数をカウントするカウンタである。
【００５６】
ＳＶＲ１１には、外部演算処理装置２１または外部演算処理装置２２内のメモリ空間のアドレスが格納されているものとする。同様に、ＳＶＲ１２には、外部演算処理装置２１または外部演算処理装置２２内のメモリ空間のアドレスが格納されているものとする。ＳＶＲ１０には、外部演算処理装置２１または外部演算処理装置２２から読み出したデータが書き込まれる。
【００５７】
診断処理装置３は、外部演算処理装置２１の障害を検知し、外部演算処理装置２１にて障害が起きたことを演算処理装置１に対して通知する。同様に、診断処理装置３は、外部演算処理装置２２の障害を検知し、外部演算処理装置２２にて障害が起きたことを演算処理装置１に対して通知する。
【００５８】
続いて、本実施の形態における演算処理装置１の詳細な動作を以下に説明する。
【００５９】
外部演算処理装置２１に対して発行した読み出しリクエストのタイムアウト例外が発生した場合、演算処理装置１は、カウンタ１６の値と、カウンタ１７の値とを加算し、加算した値をカウンタ１６に設定する。さらに、演算処理装置１は、カウンタ１７をリセットする。
【００６０】
外部演算処理装置２２に対して発行した読み出しリクエストのタイムアウト例外が発生した場合、演算処理装置１は、カウンタ１８の値と、カウンタ１９の値とを加算し、加算した値をカウンタ１８に設定する。さらに、演算処理装置１は、カウンタ１９をリセットする。
【００６１】
診断処理装置３から外部演算処理装置２１にて障害が発生したことを通知された場合、演算処理装置１は、カウンタ１６及びカウンタ１７をリセットする。同様に、診断処理装置３から外部演算処理装置２２にて障害が発生したことを通知された場合、演算処理装置１は、カウンタ１８及びカウンタ１９をリセットする。
【００６２】
演算処理装置１が外部演算処理装置２１に対して読み出しリクエストを発行した場合、演算処理装置１は、カウンタ１７をインクリメントする。同様に、演算処理装置１が外部演算処理装置２２に対して読み出しリクエストを発行した場合、演算処理装置１は、カウンタ１９をインクリメントする。
【００６３】
演算処理装置１が外部演算処理装置２１からの読み出しリプライを受信した場合、演算処理装置１は、カウンタ１６が０であればカウンタ１７をデクリメントするとともに、受信した読み出しリプライをＳＶＲ１０に書き込む。一方、カウンタ１６が０でなければ、演算処理装置１は、カウンタ１６のデクリメントのみを行う。
【００６４】
演算処理装置１が外部演算処理装置２２からの読み出しリプライを受信した場合、演算処理装置１は、カウンタ１８が０であればカウンタ１９をデクリメントするとともに、受信した読み出しリプライをＳＶＲ１０に書き込む。一方、カウンタ１８が０でなければ、演算処理装置１は、カウンタ１８のデクリメントのみを行う。
【００６５】
続いて、本実施の形態にかかるコンピュータシステムの効果について説明する。上述のように、演算処理装置１は、カウンタ１６〜１９を備え、外部演算装置毎に、直近のタイムアウト例外前に発行したにもかかわらず仕掛中となっている読み出しリクエスト数を保持する。この読み出しリクエスト数を参照することにより、外部演算処理装置が複数ある場合であっても、演算処理装置１は、不正なデータをＳＶＲ１０に書き込むことを防止できる。すなわち、データ化けを防止することができる。
【００６６】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【００６７】
なお、図７に本実施の形態１にかかる演算処理装置１の最小構成を示す。演算処理装置１は、直近のタイムアウト例外の発生前に前記第２の装置に対して発行し、処理が完了していないリクエストの数をカウンタ１６に保持し、カウンタ１６の値に応じてＳＶＲ１０へのデータ書き込みを制御する。これにより、データ化けを回避することができる。
【符号の説明】
【００６８】
１  演算処理装置
１０  ＳＶＲ
１１  ＳＶＲ
１２  ＳＶＲ
１６  カウンタ
１７  カウンタ
１８  カウンタ
１９  カウンタ
２  外部演算処理装置
２１  外部演算処理装置
２２  外部演算処理装置
３  診断処理装置
【図１】
0005601167.tif 000002
【図２】
0005601167.tif 000003
【図３】
0005601167.tif 000004
【図４】
0005601167.tif 000005
【図５】
0005601167.tif 000006
【図６】
0005601167.tif 000007
【図７】
0005601167.tif 000008
【図８】
0005601167.tif 000009
【図９】
0005601167.tif 000010