(57)【要約】【課題】障害検出の抑止期間であってもソフトウェアから最新の障害発生状況を確認可能とする。【解決手段】障害報告制御部１２により、エラー処理部１１でのエラー検出に応じて、エラー処理部１１で障害を検出したことを示す障害検出を診断装置３０へ通知するとともに、当該エラー検出から所定の抑止期間にわたり後続するエラー検出に応じた障害検出の通知を抑止し、障害ログ制御部１３により、エラー処理部１１でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するアドレス空間ごとに、障害ログ情報として当該エラーの発生回数をカウントして保持し、任意のアドレス空間に関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、障害検出を診断装置３０へ通知する。【選択図】  図１
2010170462.tif 000002
【特許請求の範囲】
【請求項１】
対象となるデータ処理装置から取得したデータから訂正可能なエラーを検出するエラー処理部と、
前記エラー処理部でのエラー検出に応じて、前記エラー処理部で障害を検出したことを示す障害検出を上位装置へ通知するとともに、当該エラー検出から所定の抑止期間にわたり後続するエラー検出に応じた障害検出の通知を抑止する障害報告制御部と、
前記エラー処理部でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するデータブロックごとに、障害ログ情報として当該エラーの発生回数をカウントして保持し、任意のデータブロックに関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、前記障害検出を前記上位装置へ通知する障害ログ制御部と
を備えることを特徴とする障害処理装置。
【請求項２】
請求項１に記載の障害処理装置において、
前記上位装置からの診断命令に応じて、前記障害ログ制御部で保持している前記障害ログ情報を取得し、前記上位装置へ通知する診断命令制御部をさらに備えることを特徴とする障害処理装置。
【請求項３】
請求項１に記載の障害処理装置において、
前記障害報告制御部は、
前記上位装置へ通知する障害検出の有無を示すフラグ値を保持するエラーフラグと、
前記障害検出の通知に対する抑止有無を示すフラグ値を保持するとともに、前記エラーフラグが障害検出有を示すフラグ値に変化した時点で自フラグ値を抑止有に設定するマスクフラグと、
前記エラー処理部でのエラー検出有無を示すエラー検出有無信号と前記マスクフラグの反転値とのＡＮＤ論理値を前記エラーフラグへ登録するＡＮＤ論理回路と、
前記マスタフラグが抑止有を示すフラグ値に変化した時点で一定期間ごとにカウント動作を開始するカウンタと、
前記カウンタのカウント値と予め設定されたマスクカウント閾値とを比較し、その比較結果に応じて前記マスクフラグのフラグ値を抑制無にリセットするとともに、前記カウンタのカウント値をリセットする比較器と
を含むことを特徴とする障害処理装置。
【請求項４】
請求項１に記載の障害処理装置において、
前記障害ログ制御部は、
前記エラー処理部でのエラー検出に応じて前記エラー処理部から通知された、当該エラーデータに関するエラー位置情報を保持する位置情報保持部と、
前記データブロックごとに、当該データブロックに関する位置情報と前記エラー位置情報との一致回数を、当該データブロックでのエラー発生回数としてカウントするエラーカウント制御部と、
前記エラーデータのエラー位置情報と当該エラーブロックでのエラー発生回数との組を前記障害ログ情報として保持する障害ログ情報保持部と、
前記組ごとに、当該組のエラー発生回数と前記エラーカウント閾値とを比較し、その比較結果を前記障害検出として出力する比較器と
を含むことを特徴とする障害処理装置。
【請求項５】
対象となるデータ処理装置から取得したデータに基づき障害発生を検出して上位装置へ通知する障害処理装置で用いられる障害処理方法であって、
エラー処理部が、前記データ処理装置から取得したデータから訂正可能なエラーを検出するエラー処理ステップと、
障害報告制御部が、前記エラー処理部でのエラー検出に応じて、前記エラー処理部で障害を検出したことを示す障害検出を前記上位装置へ通知するとともに、当該エラー検出から所定の抑止期間にわたり後続するエラー検出に応じた障害検出の通知を抑止する障害報告制御ステップと、
障害ログ制御部が、前記エラー処理部でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するデータブロックごとに、障害ログ情報として当該エラーの発生回数をカウントして保持し、任意のデータブロックに関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、前記障害検出を前記上位装置へ通知する障害ログ制御ステップと
を備えることを特徴とする障害処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、障害処理技術に関し、特にデータ処理装置で発生した障害を検出して上位装置へ通知する障害処理技術に関する。
【背景技術】
【０００２】
高信頼性を求められるコンピュータシステムでは、メモリやデータ伝送路上のデータを保護するためにＥＣＣ（Error Checking and Correction）と呼ばれるエラー訂正機能が利用されている。メモリに誤ったデータが記録された場合や伝送路上に誤ったデータが送出された場合に、ＥＣＣを用いて、訂正可能エラーの場合は、エラーしたｂｉｔを訂正してコンピュータシステムを動作継続し、訂正不可能なエラーの場合は、訂正不可能であることを検出するとともに、コンピュータシステムの動作継続が不可能であると判断して、システムダウンさせるような障害処理方式を取っている。
【０００３】
メモリ等で発生するエラーの要因には、ハードウェアにおける論理設計ミスや電気的な回路設計ミスにより発生するもの、また半導体素子や配線の劣化等によるハードウェア破壊等がある。また、一般的に、α線等が原因でメモリ上のｂｉｔエラーを一時的に引き起こすソフトエラーもある。さらには、コンピュータシステムの電源環境や設置環境による温度異常等により、エラーが引き起こされることも要因の一つである。
【０００４】
このような様々な状況下では、多くの要因により障害が多数発生することが考えられる。一般的に、コンピュータシステムに障害が発生すると、障害報告やこの報告契機により、障害箇所のログ情報採取といった割り込み処理が診断装置によって行われる。
しかしながら、様々な要因により障害が多発して、診断装置の処理能力以上の割り込み処理が頻発すると、一部の割り込み処理が未実行となり、必要な障害処理ができなくなってしまう問題が発生する。
【０００５】
従来、このような障害多発による割り込み処理を軽減させるために、訂正可能エラー検出以後、訂正可能エラーの発生回数を計数し、発生回数が閾値に達した時点で、障害検出を通知することにより、一定期間、障害検出を抑止することで、割り込み処理の未実行を防止する関連技術が提案されている（例えば、特許文献１など参照）。但し、この抑止期間中に検出する訂正可能エラーは訂正される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−０２７２８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、このような関連技術では、障害検出の抑止期間中において障害報告も抑止されるため、障害ログ情報といった処理が実施されず、次障害報告は、障害検出抑止の解除後となる。このため、抑止期間中は、あたかも障害が発生しないものとして扱われていることになり、この抑止期間中に同様な障害が多発してしまうと、訂正不可能エラーに発展し、システムダウンに繋がる恐れがある。
【０００８】
また、ＯＳなどのソフトウェアには、メモリをページ単位に分け、ページごとに発生するメモリの訂正可能エラー発生回数をカウントし、エラー発生回数が閾値に達すると、障害メモリページを論理的に切り離す機能を備えているものがある。エラー発生回数のカウントアップ契機は、ハードウェアから報告される障害ログであるが、上述のように一定期間障害検出が抑止されるような障害処理方法では、当該ソフトウェアによる障害監視が機能しないことになり、ソフトウェアの目的とする効果が得られていないという問題点もあった。
【０００９】
本発明はこのような課題を解決するためのものであり、障害検出の抑止期間であってもソフトウェアから最新の障害発生状況を確認できる障害処理装置および方法を提供することを目的としている。
【課題を解決するための手段】
【００１０】
このような目的を達成するために、本発明にかかる障害処理装置は、対象となるデータ処理装置から取得したデータから訂正可能なエラーを検出するエラー処理部と、エラー処理部でのエラー検出に応じて、エラー処理部で障害を検出したことを示す障害検出を上位装置へ通知するとともに、当該エラー検出から所定の抑止期間にわたり後続するエラー検出に応じた障害検出の通知を抑止する障害報告制御部と、エラー処理部でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するデータブロックごとに、障害ログ情報として当該エラーの発生回数をカウントして保持し、任意のデータブロックに関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、障害検出を上位装置へ通知する障害ログ制御部とを備えている。
【００１１】
また、本発明にかかる対象となる障害処理方法は、データ処理装置から取得したデータに基づき障害発生を検出して上位装置へ通知する障害処理装置で用いられる障害処理方法であって、エラー処理部が、データ処理装置から取得したデータから訂正可能なエラーを検出するエラー処理ステップと、障害報告制御部が、エラー処理部でのエラー検出に応じて、エラー処理部で障害を検出したことを示す障害検出を上位装置へ通知するとともに、当該エラー検出から所定の抑止期間にわたり後続するエラー検出に応じた障害検出の通知を抑止する障害報告制御ステップと、障害ログ制御部が、エラー処理部でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するデータブロックごとに、障害ログ情報として当該エラーの発生回数をカウントして保持し、任意のデータブロックに関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、障害検出を上位装置へ通知する障害ログ制御ステップとを備えている。
【発明の効果】
【００１２】
本発明によれば、障害検出通知の抑止期間であっても、エラー発生回数に応じて障害検出が障害処理装置から上位装置へ通知される。これにより、エラー検出から一定期間にわたり障害検出通知が抑止されているような障害処理方式を持つハードウェアが搭載されたコンピュータシステムであっても、診断装置さらにはソフトウェア（ＯＳ）において、ハードウェアに関する最新の障害発生状況を確認することができる。したがって、当該ハードウェアに対する本来の障害処理動作が阻害されることなく、適切に処理実行することが可能となり、抑止期間中に発生する恐れがあるシステムダウンの発生確率を軽減させることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施の形態にかかる障害処理装置の構成を示すブロック図である。
【図２】ソフトウェアの機能を示す説明図である。
【図３】従来の障害処理の概略フローである。
【図４】本発明の一実施の形態にかかる障害処理の概略フローである。
【発明を実施するための形態】
【００１４】
次に、本発明の実施の形態について図面を参照して説明する。
［一実施の形態］
まず、図１を参照して、本発明の一実施の形態にかかる障害処理装置について説明する。図１は、本発明の一実施の形態にかかる障害処理装置の構成を示すブロック図である。
図１のコンピュータシステム１には、障害処理装置１０、メモリ２０、診断装置３０、記憶装置４０、およびプロセッサ５０が設けられており、内部バスを介して接続されている。
【００１５】
障害処理装置１０は、専用の信号処理回路からなり、データ処理装置から取得したデータで発生したエラーを検出して上位装置へ通知する機能を有している。
本実施の形態では、障害処理装置１０をコンピュータシステム１で使用されるメモリコントローラへ適用し、障害処理対象となるデータ処理装置であるメモリ２０から取得したデータから訂正可能なエラーを検出した際に、その上位装置である診断装置３０へ障害検出を通知する場合を例として説明する。
【００１６】
メモリ２０は、半導体記憶装置（主記憶）からなり、障害処理装置１０を介したプロセッサ５０からのアクセスに応じて各種データの書き込みおよび読み出しを行う機能と、データ書き込み時に入力されたＥＣＣ用の誤り訂正情報を保持する機能とを有している。
診断装置３０は、当該コンピュータシステム１の診断制御を行う装置であり、障害処理装置１０からの障害検出通知を受けて、障害ログ採取や障害復旧処理といった障害診断処理を行う機能を有している。
【００１７】
記憶装置４０は、ハードディスクや不揮発性メモリなどの記憶装置からなり、診断装置３０により採取された障害ログ情報、さらにはプロセッサで実行されるソフトウェアのプログラムを記憶する機能を有している。
プロセッサ５０は、ＣＰＵなどの演算処理回路からなり、記憶装置４０のプロクラムを実行することにより、各種情報処理を行う機能を有している。
【００１８】
図２は、ソフトウェアの機能を示す説明図である。
ソフトウェア５１は、コンピュータシステム１を制御するＯＳやアプリケーションのプログラムであり、プロセッサ５０で実行されることにより、障害処理装置１０への各種設定を実行する。本実施の形態では、プロセッサ５０からの命令は診断装置３０を介して行うこととしている。
また、ソフトウェア５１は、コンピュータシステム１が使用しているメモリ２０をページと呼ばれるデータブロックの単位に分け、メモリ２０から取得したデータから検出したエラー発生回数をページごとにカウントし、エラー発生回数が閾値に達すると、当該ページを論理的に切り離して使用不可とする障害処理機能を備えている。
【００１９】
ソフトウェア５１は、診断装置３０によって採取されたログ情報を、プロセッサ５０を介して取得し、コンピュータシステム１全体の構成制御機能５１Ａおよびメモリ管理機能５１Ｂによって、上述のようなメモリ２０における任意のページ切り離しを行う。
なお、診断装置３０、プロセッサ５０、およびソフトウェア５１に関わる詳細動作については、周知の技術に基づくものであり、個々での詳細な説明は省略する。
【００２０】
［障害処理装置］
次に、図１を参照して、本実施の形態にかかる障害処理装置の構成について詳細に説明する。
障害処理装置１０には、主な機能部として、エラー処理部１１、障害報告制御部１２、障害ログ制御部１３、および診断命令制御部１４が設けられている。一般的には、障害処理装置１０が適用されるメモリコントローラには、例えば、プロセッサ５０からの書き込み命令に応じて、任意のデータをメモリ２０内の所定アドレスへ書き込むデータ書込部や、プロセッサ５０からの読み出し命令に応じて、任意のデータをメモリ２０内の所定アドレスから読み出すデータ読出部など、これら以外の機能部も設けられているが、図１では、本実施の形態における障害処理に関する機能部のみが図示されている。
【００２１】
エラー処理部１１は、メモリ２０から読み出したデータとその誤り訂正情報とに基づいてＥＣＣチェックを行う機能と、当該データに訂正可能エラーがあると、当該エラーｂｉｔの訂正、障害報告制御部１２に対する障害検出通知、および障害ログ制御部１３に対して当該エラーデータの障害を検出したアドレスの送出を行う機能と、メモリ２０から読み出したデータに訂正不可能なエラーがある場合は、エラー検出のみを行う機能とを有している。なお、訂正不可能なエラー検出をした時の動作については、周知の技術を用いればよく、ここでの説明は省略する。
【００２２】
障害報告制御部１２は、エラー処理部１１から報告されるエラー検出に応じて、診断装置３０に対する障害検出の通知制御を行う機能を有している。障害報告制御部１２には、主な構成として、エラーフラグ１２Ａ、マスクフラグ１２Ｂ、ＡＮＤ論理回路１２Ｃ、カウンタ１２Ｄ、マスクカウント閾値１２Ｅ、比較器１２Ｆ、およびＯＲ論理回路１２Ｇが設けられている。このうち、エラーフラグ１２Ａ、マスクフラグ１２Ｂ、およびマスクカウント閾値１２Ｅは、レジスタで構成されているものとする。
【００２３】
エラーフラグ１２Ａは、診断装置３０へ通知する障害検出の有無を示すフラグ値を保持する機能を有しており、ＡＮＤ論理回路１２Ｃで得られた、エラー処理部１１から出力されるエラー検出の有無（検出無＝「０」，検出有＝「１」）と、マスクフラグ１２Ｂのフラグ値（抑止無＝「０」，抑止有＝「１」）の反転値との論理積の演算結果により更新される。実際には、マスクフラグ１２Ｂのフラグ値が「０」で障害検出が「１」の場合にのみ、エラーフラグ１２Ａが「１」にセットされる。
また、診断装置３０により障害処理が実施されると「０」にリセットされるとともに、後述のとおり、エラーフラグ１２Ａは、比較器１２Ｆの比較結果により「０」にリセットされる。
【００２４】
マスクフラグ１２Ｂは、障害検出の通知に対する抑止有無を示すフラグ値を保持する機能を有しており、このフラグ値により、エラー処理部１１から報告されたエラー検出以後、一定期間にわたり、ＡＮＤ論理回路１２Ｃによりエラーフラグ１２Ａのセット、すなわち診断装置３０へ障害検出の通知が抑止される。
エラーフラグ１２Ａが「１」にセットされると、マスクフラグ１２Ｂも「１」にセットされる。したがって、エラーフラグ１２Ａが「１」にセットされた後、マスクフラグ１２Ｂが「１」に保持される期間だけ、エラーフラグ１２Ａへのセットが抑止される。
【００２５】
カウンタ１２Ｄは、マスタフラグ１２Ｂが抑止有を示すフラグ値に変化した時点で一定期間ごとにカウント動作を開始する機能を有している。マスクフラグ１２Ｂが「１」にセットされている間、カウンタ値が一定間隔でインクリメントされる。
マスクカウント閾値１２Ｅには、障害検出の抑止期間を指定する閾値が予め設定されている。
【００２６】
比較器１２Ｆは、このマスクカウント閾値１２Ｅの値とカウンタ１２Ｄのカウンタ値を比較し、その比較結果に応じてマスクフラグ１２Ｂのフラグ値を抑制無にリセットするとともに、カウンタのカウント値をリセットする機能を有している。
カウンタ値がマスクカウント閾値１２Ｅの値に達すると、比較器１２Ｆの比較結果が反転して、マスクフラグ１２Ｂおよびカウンタ１２Ｄがリセットされる。
以上のようにして、障害報告制御部１２では、障害検出以後、一定期間障害検出を抑止する制御が行われる。
【００２７】
障害ログ制御部１３は、エラー処理部１１でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するデータブロックごとに、障害ログ情報として当該エラーの発生回数をカウントして保持する機能と、任意のデータブロックに関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、障害検出を障害報告制御部１２を介して診断装置３０へ通知する機能とを有している。
【００２８】
障害ログ制御部１３には、主な構成として、位置情報保持部１３Ａ、エラーカウント制御部１３Ｂ、障害ログ保持部１３Ｆ、エラーカウント閾値１３Ｇ、および比較器１３Ｈが設けられている。
【００２９】
位置情報保持部１３Ａは、エラー処理部１１でのエラー検出に応じてエラー処理部１１から通知された、当該エラーデータに関するエラー位置情報を保持するレジスタである。本実施の形態では、メモリ２０のうち、エラーデータが記憶されていたアドレス情報が、エラー処理部１１から通知され、エラー位置情報として位置情報保持部１３Ａで保持される。
エラーカウント制御部１３Ｂは、データブロックごとに、当該データブロックに関する位置情報とエラー位置情報との一致回数を、当該データブロックのエラー発生回数としてカウントする機能を有している。
【００３０】
このエラーカウント制御部１３Ｂには、データブロックごとに、比較アドレス１３Ｃ、比較器１３Ｄ、およびカウンタ１３Ｅの組が、エントリとしてそれぞれ設けられている。
本実施の形態では、メモリ２０を分割して設けたアドレス空間をデータブロックとし、これらアドレス空間単位でエラー発生回数を計測するものとする。したがって、比較アドレス１３Ｃには、これらアドレス空間のアドレスを示す上限値および下限値が予め設定されている。
【００３１】
例えば、メモリ２０のアドレス空間を４ＫＢ単位に分割する場合、エントリ０の比較アドレス１３Ｃの下限値には、３２’ｈ００００＿００００、上限値には、３２’ｈ００００＿０ＦＦＦの値が設定される。（本表記の３２’ｈ００００＿００００および３２’ｈ００００＿０ＦＦＦは、３２ｂｉｔのアドレスを１６進数で表したものである。）
この設定は、コンピュータシステム１のメモリ容量を管理するソフトウェア（ＯＳ）により、最適な値が計算されて行われる。なお、ここでは、設定の一例を示しているが、このような設定方法のみに限定されるものではない。
【００３２】
比較器１３Ｄは、比較アドレス１３Ｃに設定されたアドレス空間と、位置情報保持部１３Ａで保持しているアドレスとを比較する。
カウンタ１３Ｅは、比較機１３Ｄの比較結果が両アドレスの一致を示す場合、カウンタ値をインクリメントする。
【００３３】
したがって、エラーカウント制御部１３Ｂでは、エラー処理部１１から当該エラーデータに関するアドレス情報が位置情報保持部１３Ａへ格納された時点で、当該アドレス情報と対応するアドレス空間に関するエラー発生回数がインクリメントされ、新たなエラー発生回数が障害ログ保持部１３Ｆへ出力される。
以上のようにして、障害処理装置１０が管理するメモリ空間において、設定されたアドレス空間ごとのエラー発生回数を計数を行う。
【００３４】
障害ログ保持部１３Ｆは、複数のレジスタからなり、エラー処理部１１から通知されたエラーデータのエラー位置情報と当該エラーブロックのエラー発生回数との組を障害ログ情報として保持する機能を有している。
障害ログ保持部１３Ｆは、レジスタとして、エラーカウント制御部１３Ｂと同様のエントリ数を具備しており、位置情報保持部１３Ａから受け取った障害発生アドレス（エラー位置情報）と、エラーカウント制御部１３Ｂから受け取ったアドレス空間（エラーブロック）でのエラー発生回数との組からなる障害ログ情報を、当該アドレス空間と対応するエントリに格納する。
【００３５】
なお、本実施の形態では、障害ログの中にアドレスを格納しているが、エラーカウントを行うアドレス空間の設定は、プロセッサ５０で実行されるソフトウェア（ＯＳ）５１で行われる。したがって、ソフトウェア５１では、設定段階でエントリごとに指定するアドレス空間を把握しているため、アドレスの格納は行わなくても良い。
【００３６】
エラーカウント閾値１３Ｇは、障害ログ保持部１３Ｆに格納されているカウント値の閾値を予め保持するレジスタである。
比較器１３Ｈは、障害ログ保持部１３Ｆの各エントリで保持されているエラー発生回数と、エラーカウント閾値１３Ｇの値とを比較し、その比較結果を障害検出として出力する機能を有している。これにより、いずれかのアドレス空間（エラーブロック）でのエラー発生回数が閾値に達すると、比較器１３Ｈの比較結果が、検出無＝「０」から検出有＝「１」に変化することにより、障害報告制御部１２に対して、障害検出が通知される。
【００３７】
本実施の形態では、このエラーカウント閾値１３Ｇは、障害ログ保持部１３Ｆで管理する全エントリの閾値を一元管理するものとしており、エントリごとに複数の閾値がユニークに設定されるようにしても良い。なお、この閾値設定は、ハードウェアにより初期値として値を設定（例：初期値３）する方法もしくは、ソフトウェア（ＯＳ）によって設定される方法のどちらでも良い。
【００３８】
診断命令制御部１４は、診断装置３０やプロセッサ５０からの診断命令を受け付けて、障害処理装置１０内の各部を制御することにより、障害処理装置１０内の各部への値設定や、障害ログ保持部１３Ｆからの障害ログ採取などの診断命令を実行する機能を有している。
【００３９】
［一実施の形態の動作］
次に、図１および図２を参照して、本実施の形態にかかる障害処理装置の動作について説明する。
メモリ２０に書き込まれるデータには、ＥＣＣ用の誤り訂正情報が付加される。メモリ２０からデータが読み出されると、エラー処理部１１は、同じくメモリ２０から読み出した誤り訂正情報に基づきＥＣＣチェックを行う。
メモリ２０から読み出されたデータに、訂正可能エラーが発生していた場合、障害処理装置１０は、次のような障害処理動作を実行する。
【００４０】
エラー処理部１１は、ＥＣＣチェックにより訂正可能エラーが発生していることを検出するとともに、エラーしているｂｉｔのエラー訂正を行う。この時、エラー検出したことにより、エラー処理部１１は、障害報告制御部１２に対してエラー検出を通知し、また、エラー検出時の障害ログ情報を保存するために、障害ログ制御部１３に対して、エラー検出したアドレス情報を送出する。
【００４１】
障害報告制御部１２は、ＡＮＤ論理回路１２Ｃにより、エラー処理部１１からのエラー検出の有無とマスクフラグ１２Ｂの反転値の論理積を求め、この結果に応じてエラーフラグ１２Ａを点灯させる。この際、エラー検出通知時点では、マスクフラグ１２Ｂの値は「０」であるため、エラーフラグ１２Ａは「１」に設定され、続いてマスクフラグ１２Ｂが「１」に設定される。
【００４２】
マスクフラグ１２Ｂが「１」に設定されると、カウンタ１２Ｄのインクリメントが開始される。なお、マスクフラグ１２Ｂが「１」になった時点で、カウンタ１２Ｄの値は「０」になっている。このカウンタ１２Ｄは、所定間隔でインクリメントされ、そのカウンタ値が、比較器１２Ｆにより、マスクカウント閾値１２Ｅに設定されている値と比較される。したがって、カウンタ値がマスクカウント閾値１２Ｅに設定されている値までインクリメントされ、カウンタ１２Ｄの値がマスクカウント閾値１２Ｅに達すると、比較器１２Ｆの比較結果が反転して、マスクフラグ１２Ｂおよびカウンタ１２Ｄがリセットされる。
【００４３】
これにより、マスクフラグ１２Ｂが「１」に設定されている間、エラー処理部１１から新たなエラー検出が通知されても、障害検出したことを示すエラーフラグ１２Ａが「１」に設定されないため、障害検出以後、一定期間にわたり、診断装置３０への障害検出通知が抑止されることになる。
障害報告制御部１２のＯＲ論理回路１２Ｇには、エラーフラグ１２Ａと障害ログ制御部１３からの障害検出通知とが入力されており、両入力のいずれか一方、ここではエラーフラグ１２Ａが「１」になることによって、診断装置３０に対して、障害検出通知が行われる。
【００４４】
一方、障害ログ制御部１３は、エラー処理部１１からエラーデータに関するアドレス情報を受け取り、障害ログ情報の制御を行う。
エラー処理部１１から送出されたアドレス情報は、位置情報保持部１３Ａに一旦格納され、エラーカウント制御部１３Ｂおよび障害ログ保持部１３Ｆに送られる。
【００４５】
まず、エラーカウント制御部１３Ｂでは、障害発生したアドレス空間ごとにエラー発生回数を計数する。ここで、障害が発生したアドレスが、エントリ０のアドレス空間に一致する番地であった場合、エントリ０では、位置情報保持部１３Ａで保持しているアドレスと、比較アドレス１３Ｃに設定されている当該アドレス空間のアドレス範囲との一致を比較器１３Ｄで確認する。これにより、当該エラーデータのアドレスがエントリ０に該当するアドレスであると認識し、エントリ０のカウンタ１３Ｅをインクリメントする。このカウンタ１３Ｅの値は、障害ログ保持部１３Ｆに出力される。
【００４６】
障害ログ保持部１３Ｆは、エラーカウント制御部１３Ｂから指示されたエントリ０に対して、位置情報保持部１３Ａに保持しているアドレス情報と、カウンタ１３Ｅのカウント値を書き込む。
この時点では、障害ログ保持部１３Ｆには、エントリ０のみに障害ログが書き込まれており、エラー発生回数は「１」となっている。
【００４７】
障害ログ制御部１３では、エラー発生回数の閾値管理を実施するため、エラーカウント閾値１３Ｇにエラー発生回数の閾値が予め設定されている。ここでは、閾値が「３」である場合について説明する。
障害ログ保持部１３Ｆのカウント値とエラーカウント閾値１３Ｇで設定されている値は、比較器１３Ｈで比較され、その比較結果が障害検出有無として障害報告制御部１２へ通知される。上述の場合、障害が発生した回数は「１」回であるため、障害ログ保持部１３Ｆのカウント値とエラーカウント閾値１３Ｇで設定されている値とは一致せず、比較結果は「０」となる。このため、この時点では、障害報告制御部１２への障害検出は、検出無し＝「０」が通知される。
【００４８】
次に、障害報告制御部１２から診断装置３０に対して障害検出通知された場合の動作について説明する。
障害検出が抑止されていない期間に障害が発生した場合、障害報告制御部１２から診断装置３０に障害検出通知が行われる。これに応じて、診断装置３０は、次のような障害処理動作を開始する。
【００４９】
診断装置３０は、障害処理装置１０からの障害検出通知を契機として、障害処理装置１０の診断命令制御部１４に対して、障害ログ採取命令を通知する。
診断命令制御部１４は、診断装置３０から障害ログ採取命令を受けると、障害ログ保持部１３Ｆから障害ログを読み出して、診断装置３０に返送する。
この後、診断装置３０は、障害処理装置１０からの障害ログ採取が完了すると、障害処理装置１０の診断命令制御部１４に対して、障害復旧命令を通知する。
これに応じて、診断命令制御部１４は、障害報告制御部１２のエラーフラグ１２Ａをリセットする。
【００５０】
障害報告制御部１２では、エラーフラグ１２Ａがリセットされた際、マスクフラグ１２Ｂが「１」になっているため、エラー処理部１１から新たなエラー検出が通知されても、この値が「１」である間、すなわち一定の抑止期間にわたり、エラーフラグ１２Ａが「１」に設定されることはなく、診断装置３０へ障害検出が通知されることはない。
一方、障害ログ制御部１３では、この抑止期間に発生した障害は、上述したとおりの動作で、障害ログ保持部１３Ｆに障害ログ情報が順次格納される。
【００５１】
診断装置３０は、障害処理装置１０の障害ログ保持部１３Ｆから採取した障害ログを記憶装置４０に格納する。この記憶装置４０に格納された障害ログは、プロセッサ５０により取得され、ソフトウェア５１に受け渡す。
【００５２】
ソフトウェア５１は、この障害ログを元にしてメモリ２０の障害状態を解析し、任意のアドレス空間に関するエラー発生回数が、予めソフトウェア５１で管理しているエラー発生回数の閾値に達していれば、当該アドレス空間に対応するメモリページを論理的に切り離す障害処理を行う。これまでの説明では、障害発生回数が「１」回であるため、障害処理は実施せず、このままコンピュータシステム１の動作継続を行っていく。
以上が、エラー発生回数が閾値に達していない場合の動作説明である。
【００５３】
次に、障害検出が抑止されている間に障害が発生した場合について説明する。
エラー処理部１１は、障害検出通知の抑止期間においても、メモリ２０から読み出したデータから訂正可能エラーを検出する。
障害検出通知の抑止期間において、エラー処理部１１により訂正可能エラーが検出された場合、障害報告制御部１２では、マスクフラグ１２Ｂにより、障害検出が抑止されているため、エラーフラグ１２Ａは「１」に設定されず、診断装置３０への障害検出通知は行われない。
【００５４】
一方、障害検出通知の抑止期間において、エラー処理部１１により訂正可能エラーが検出された場合、障害ログ制御部１３は、上述と同様に、エラー処理部１１から受け取ったアドレス情報を元に、障害ログ保持部１３Ｆへの障害ログ格納動作を行う。
【００５５】
ここで、エラー発生回数の閾値管理であるが、２回目に発生した障害アドレスがエントリ０に設定されているアドレス空間であれば、カウント値は「２」を示すが、ここでは、エラーカウント閾値１３Ｇを「３」としているため、この時点でも閾値には達していないため、障害ログ制御部１３から障害報告制御部１２に対して障害検出通知は行われない。この結果、診断装置３０への障害検出通知も行われないため、コンピュータシステム１は、動作を継続していく。
以上のような動作を繰り返し実施していくことで、障害検出が抑止されている期間であっても、障害ログを格納していいき、障害ログ情報を蓄積させていく。
【００５６】
このような動作が繰り返されて、エントリ０に設定されているアドレス空間内で発生したエラー発生回数が「３」になると、エラーカウント閾値１３Ｇに達したことにより、比較器１３Ｈの比較結果が「１」となる。このため、障害検出通知の抑止期間であっても、障害ログ制御部１３は、障害報告制御部１２に対して、障害検出通知を行う。
【００５７】
障害報告制御部１２のＯＲ論理回路１２Ｇには、エラーフラグ１２Ａと障害ログ制御部１３からの障害検出通知が入力されており、両者のうちいずれか一方、ここでは障害検出通知が「１」となるため、この障害検出通知が、障害報告制御部１２を介して診断装置３０に通知され、診断装置３０により、障害処理が開始される。
障害処理で行われるログ採取方法は上述と同様であるため、省略する。
【００５８】
ここで、採取された障害ログ情報は、再びソフトウェア５１に渡され、障害状態の解析が行われる。ソフトウェア５１は、障害ログ情報に基づき、当該アドレス空間でのエラー発生回数が、閾値「３」に達したことを認識し、このアドレス空間に対応するメモリページを論理的に切り離す障害処理動作を実行する。切り離し対象となるメモリページは、障害ログ情報のアドレス情報より、アドレス空間のうち「３２’ｈ００００＿００００〜３２’ｈ００００＿０ＦＦＦ」であると判定され、ソフトウェア５１は、本アドレス空間の切り離し処理を実施する。
【００５９】
図３は、従来の障害処理の概略フローである。図４は、本実施の形態にかかる障害処理の概略フローである。図３および図４において、縦方向を時間軸として、エラー発生からログ採取が行われるまでの処理順序を明示したものである。
【００６０】
従来の障害処理方法では、図３に示すように、最初に訂正可能エラーが検出されると、障害処理装置から診断装置に対して障害検出が通知されるとともにエラー発生回数がログとして記録される。診断装置は、この障害検出通知に応じて、障害処理装置から障害ログを採取し、その内容がソフトウェアに通知される。この際、エラー発生回数が「１」であることから、上述のようにソフトウェアによるエラー発生回数の閾値が３回として設定されている場合には、両者が一致せず、ソフトウェアによる障害処理は実行されない。
【００６１】
この後、障害処理装置では、エラー検出後から一定期間にわたり障害検出通知の抑止期間となるため、この抑止期間中に検出された新たなエラーに関する障害検出については診断装置へ通知されず、診断装置でのログ採取による障害監視も行われない。
したがって、障害検出通知は、抑止期間が解除されている抑止期間外でエラーが検出された場合のみとなるため、ソフトウェアによるエラー発生回数の閾値が３回として設定されている場合、抑止期間外でエラーが３回検出された時点、すなわち最初のエラー検出から抑止期間が２回以上経過した時点で、初めてソフトウェアによる障害処理が実行されて、障害メモリページの切り離しが行われる。
【００６２】
このように、従来の障害処理方法によれば、抑止期間中に発生する障害が多発したとしても、しばらくの間、障害が発生していないものとして運用継続されるため、訂正不可能なエラーに発展し、システムダウンに繋がる場合もあった。
【００６３】
一方、本実施の形態にかかる障害処理の場合、図４に示すように、最初に訂正可能エラーが検出されると、障害処理装置から診断装置に対して障害検出が通知されるとともにエラー発生回数がログとして記録される。診断装置は、この障害検出通知に応じて、障害処理装置から障害ログを採取し、その内容がソフトウェアに通知される。この際、エラー発生回数が「１」であることから、上述のようにソフトウェアによるエラー発生回数の閾値が３回として設定されている場合には、両者が一致せず、ソフトウェアによる障害処理は実行されない。
【００６４】
この際、障害処理装置では、更新した障害ログのエラー発生回数と障害処理装置によるエラー発生回数の閾値とを比較し、その比較結果に応じて障害検出の通知要否を判断している。
したがって、障害処理装置によるエラー発生回数の閾値が３回として設定されている場合、図４に示すように、抑制期間内であっても、３回目にエラーを検出した時点で、そのエラー発生回数が、障害処理装置によるエラー発生回数の閾値に達することになり、障害処理装置から診断装置に対して障害検出が通知される。
【００６５】
これに応じて、診断装置により、障害処理装置からログが採取されてソフトウェアに通知される。
これにより、ソフトウェアによるエラー発生回数の閾値が３回として設定されている場合、ログで通知されたエラー発生回数が「３」であることから、両者が一致し、障害処理装置が障害検出通知の抑止期間中であっても、ソフトウェアによる障害処理、すなわち当該アドレス空間の切り離しが行われる。この結果、システムダウンに繋がり兼ねない障害メモリページの切り離し処理が一早く行われ、システムダウンの発生確率を軽減させることが可能である。
【００６６】
［一実施の形態の効果］
このように、本実施の形態では、障害報告制御部１２により、エラー処理部１１でのエラー検出に応じて、エラー処理部１１で障害を検出したことを示す障害検出を診断装置（上位装置）３０へ通知するとともに、当該エラー検出から所定の抑止期間にわたり後続するエラー検出に応じた障害検出の通知を抑止し、障害ログ制御部１３により、エラー処理部１１でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するアドレス空間（データブロック）ごとに、障害ログ情報として当該エラーの発生回数をカウントして保持し、任意のアドレス空間に関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、障害検出を診断装置３０へ通知している。
【００６７】
これにより、エラー検出から一定期間にわたり障害検出通知が抑止されているような障害処理方式を持つハードウェアが搭載されたコンピュータシステム１であっても、診断装置さらにはソフトウェア（ＯＳ）において、ハードウェアに関する最新の障害発生状況を確認することができる。したがって、当該ハードウェアに対する本来の障害処理動作が阻害されることなく、適切に処理実行することが可能となり、抑止期間中に発生する恐れがあるシステムダウンの発生確率を軽減させることができる。
【００６８】
［実施の形態の拡張］
以上では、障害処理装置１０をメモリコントローラに適用して、メモリ２０から読み出されたデータに対するエラーを検出する場合を例として説明したが、これに限定されるものではなく、メモリコントローラと同様に、例えばデータ通信インターフェース回路のように、高速でデータを取得する電子回路であれば、本発明にかかる障害処理装置１０を前述と同様にして適用でき、同様の作用効果を得ることができる。
【００６９】
また、以上では、障害処理装置１０、診断装置３０、およびプロセッサ５０を別個の回路構成で実現した場合を例として説明したが、これに限定されるものではなく、これら回路構成を任意に１つの回路構成で実現してもよい。
また、以上では、エラー訂正方式としてＥＣＣを用いる場合を例として説明したが、これに限定されるものではなく、他のエラー訂正方式を適用してもよい。
【符号の説明】
【００７０】
１…コンピュータシステム、１０…障害処理装置（メモリコントローラ）、１１…エラー処理部、１２…障害報告制御部、１２Ａ…エラーフラグ、１２Ｂ…マスクフラグ、１２Ｃ…ＡＮＤ論理回路、１２Ｄ…カウンタ、１２Ｅ…マスクカウント閾値、１２Ｆ…比較器、１２Ｇ…ＯＲ論理回路、１３…障害ログ制御部、１３Ａ…位置情報保持部、１３Ｂ…エラーカウント制御部、１３Ｃ…比較アドレス、１３Ｄ…比較器、１３Ｅ…カウンタ、１３Ｆ…障害ログ保持部、１３Ｇ…エラーカウント閾値、１３Ｈ…比較器、１４…診断命令制御部、２０…メモリ、３０…診断装置、４０…記憶装置、５０…プロセッサ、５１…ソフトウェア、５１Ａ…構成制御機能、５１Ｂ…メモリ管理機能。
【図１】
2010170462.tif 000003
【図２】
2010170462.tif 000004
【図３】
2010170462.tif 000005
【図４】
2010170462.tif 000006