説明

障害処理装置および方法

【課題】障害検出の抑止期間であってもソフトウェアから最新の障害発生状況を確認可能とする。
【解決手段】障害報告制御部12により、エラー処理部11でのエラー検出に応じて、エラー処理部11で障害を検出したことを示す障害検出を診断装置30へ通知するとともに、当該エラー検出から所定の抑止期間にわたり後続するエラー検出に応じた障害検出の通知を抑止し、障害ログ制御部13により、エラー処理部11でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するアドレス空間ごとに、障害ログ情報として当該エラーの発生回数をカウントして保持し、任意のアドレス空間に関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、障害検出を診断装置30へ通知する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、障害処理技術に関し、特にデータ処理装置で発生した障害を検出して上位装置へ通知する障害処理技術に関する。
【背景技術】
【0002】
高信頼性を求められるコンピュータシステムでは、メモリやデータ伝送路上のデータを保護するためにECC(Error Checking and Correction)と呼ばれるエラー訂正機能が利用されている。メモリに誤ったデータが記録された場合や伝送路上に誤ったデータが送出された場合に、ECCを用いて、訂正可能エラーの場合は、エラーしたbitを訂正してコンピュータシステムを動作継続し、訂正不可能なエラーの場合は、訂正不可能であることを検出するとともに、コンピュータシステムの動作継続が不可能であると判断して、システムダウンさせるような障害処理方式を取っている。
【0003】
メモリ等で発生するエラーの要因には、ハードウェアにおける論理設計ミスや電気的な回路設計ミスにより発生するもの、また半導体素子や配線の劣化等によるハードウェア破壊等がある。また、一般的に、α線等が原因でメモリ上のbitエラーを一時的に引き起こすソフトエラーもある。さらには、コンピュータシステムの電源環境や設置環境による温度異常等により、エラーが引き起こされることも要因の一つである。
【0004】
このような様々な状況下では、多くの要因により障害が多数発生することが考えられる。一般的に、コンピュータシステムに障害が発生すると、障害報告やこの報告契機により、障害箇所のログ情報採取といった割り込み処理が診断装置によって行われる。
しかしながら、様々な要因により障害が多発して、診断装置の処理能力以上の割り込み処理が頻発すると、一部の割り込み処理が未実行となり、必要な障害処理ができなくなってしまう問題が発生する。
【0005】
従来、このような障害多発による割り込み処理を軽減させるために、訂正可能エラー検出以後、訂正可能エラーの発生回数を計数し、発生回数が閾値に達した時点で、障害検出を通知することにより、一定期間、障害検出を抑止することで、割り込み処理の未実行を防止する関連技術が提案されている(例えば、特許文献1など参照)。但し、この抑止期間中に検出する訂正可能エラーは訂正される。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2008−027284号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、このような関連技術では、障害検出の抑止期間中において障害報告も抑止されるため、障害ログ情報といった処理が実施されず、次障害報告は、障害検出抑止の解除後となる。このため、抑止期間中は、あたかも障害が発生しないものとして扱われていることになり、この抑止期間中に同様な障害が多発してしまうと、訂正不可能エラーに発展し、システムダウンに繋がる恐れがある。
【0008】
また、OSなどのソフトウェアには、メモリをページ単位に分け、ページごとに発生するメモリの訂正可能エラー発生回数をカウントし、エラー発生回数が閾値に達すると、障害メモリページを論理的に切り離す機能を備えているものがある。エラー発生回数のカウントアップ契機は、ハードウェアから報告される障害ログであるが、上述のように一定期間障害検出が抑止されるような障害処理方法では、当該ソフトウェアによる障害監視が機能しないことになり、ソフトウェアの目的とする効果が得られていないという問題点もあった。
【0009】
本発明はこのような課題を解決するためのものであり、障害検出の抑止期間であってもソフトウェアから最新の障害発生状況を確認できる障害処理装置および方法を提供することを目的としている。
【課題を解決するための手段】
【0010】
このような目的を達成するために、本発明にかかる障害処理装置は、対象となるデータ処理装置から取得したデータから訂正可能なエラーを検出するエラー処理部と、エラー処理部でのエラー検出に応じて、エラー処理部で障害を検出したことを示す障害検出を上位装置へ通知するとともに、当該エラー検出から所定の抑止期間にわたり後続するエラー検出に応じた障害検出の通知を抑止する障害報告制御部と、エラー処理部でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するデータブロックごとに、障害ログ情報として当該エラーの発生回数をカウントして保持し、任意のデータブロックに関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、障害検出を上位装置へ通知する障害ログ制御部とを備えている。
【0011】
また、本発明にかかる対象となる障害処理方法は、データ処理装置から取得したデータに基づき障害発生を検出して上位装置へ通知する障害処理装置で用いられる障害処理方法であって、エラー処理部が、データ処理装置から取得したデータから訂正可能なエラーを検出するエラー処理ステップと、障害報告制御部が、エラー処理部でのエラー検出に応じて、エラー処理部で障害を検出したことを示す障害検出を上位装置へ通知するとともに、当該エラー検出から所定の抑止期間にわたり後続するエラー検出に応じた障害検出の通知を抑止する障害報告制御ステップと、障害ログ制御部が、エラー処理部でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するデータブロックごとに、障害ログ情報として当該エラーの発生回数をカウントして保持し、任意のデータブロックに関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、障害検出を上位装置へ通知する障害ログ制御ステップとを備えている。
【発明の効果】
【0012】
本発明によれば、障害検出通知の抑止期間であっても、エラー発生回数に応じて障害検出が障害処理装置から上位装置へ通知される。これにより、エラー検出から一定期間にわたり障害検出通知が抑止されているような障害処理方式を持つハードウェアが搭載されたコンピュータシステムであっても、診断装置さらにはソフトウェア(OS)において、ハードウェアに関する最新の障害発生状況を確認することができる。したがって、当該ハードウェアに対する本来の障害処理動作が阻害されることなく、適切に処理実行することが可能となり、抑止期間中に発生する恐れがあるシステムダウンの発生確率を軽減させることができる。
【図面の簡単な説明】
【0013】
【図1】本発明の一実施の形態にかかる障害処理装置の構成を示すブロック図である。
【図2】ソフトウェアの機能を示す説明図である。
【図3】従来の障害処理の概略フローである。
【図4】本発明の一実施の形態にかかる障害処理の概略フローである。
【発明を実施するための形態】
【0014】
次に、本発明の実施の形態について図面を参照して説明する。
[一実施の形態]
まず、図1を参照して、本発明の一実施の形態にかかる障害処理装置について説明する。図1は、本発明の一実施の形態にかかる障害処理装置の構成を示すブロック図である。
図1のコンピュータシステム1には、障害処理装置10、メモリ20、診断装置30、記憶装置40、およびプロセッサ50が設けられており、内部バスを介して接続されている。
【0015】
障害処理装置10は、専用の信号処理回路からなり、データ処理装置から取得したデータで発生したエラーを検出して上位装置へ通知する機能を有している。
本実施の形態では、障害処理装置10をコンピュータシステム1で使用されるメモリコントローラへ適用し、障害処理対象となるデータ処理装置であるメモリ20から取得したデータから訂正可能なエラーを検出した際に、その上位装置である診断装置30へ障害検出を通知する場合を例として説明する。
【0016】
メモリ20は、半導体記憶装置(主記憶)からなり、障害処理装置10を介したプロセッサ50からのアクセスに応じて各種データの書き込みおよび読み出しを行う機能と、データ書き込み時に入力されたECC用の誤り訂正情報を保持する機能とを有している。
診断装置30は、当該コンピュータシステム1の診断制御を行う装置であり、障害処理装置10からの障害検出通知を受けて、障害ログ採取や障害復旧処理といった障害診断処理を行う機能を有している。
【0017】
記憶装置40は、ハードディスクや不揮発性メモリなどの記憶装置からなり、診断装置30により採取された障害ログ情報、さらにはプロセッサで実行されるソフトウェアのプログラムを記憶する機能を有している。
プロセッサ50は、CPUなどの演算処理回路からなり、記憶装置40のプロクラムを実行することにより、各種情報処理を行う機能を有している。
【0018】
図2は、ソフトウェアの機能を示す説明図である。
ソフトウェア51は、コンピュータシステム1を制御するOSやアプリケーションのプログラムであり、プロセッサ50で実行されることにより、障害処理装置10への各種設定を実行する。本実施の形態では、プロセッサ50からの命令は診断装置30を介して行うこととしている。
また、ソフトウェア51は、コンピュータシステム1が使用しているメモリ20をページと呼ばれるデータブロックの単位に分け、メモリ20から取得したデータから検出したエラー発生回数をページごとにカウントし、エラー発生回数が閾値に達すると、当該ページを論理的に切り離して使用不可とする障害処理機能を備えている。
【0019】
ソフトウェア51は、診断装置30によって採取されたログ情報を、プロセッサ50を介して取得し、コンピュータシステム1全体の構成制御機能51Aおよびメモリ管理機能51Bによって、上述のようなメモリ20における任意のページ切り離しを行う。
なお、診断装置30、プロセッサ50、およびソフトウェア51に関わる詳細動作については、周知の技術に基づくものであり、個々での詳細な説明は省略する。
【0020】
[障害処理装置]
次に、図1を参照して、本実施の形態にかかる障害処理装置の構成について詳細に説明する。
障害処理装置10には、主な機能部として、エラー処理部11、障害報告制御部12、障害ログ制御部13、および診断命令制御部14が設けられている。一般的には、障害処理装置10が適用されるメモリコントローラには、例えば、プロセッサ50からの書き込み命令に応じて、任意のデータをメモリ20内の所定アドレスへ書き込むデータ書込部や、プロセッサ50からの読み出し命令に応じて、任意のデータをメモリ20内の所定アドレスから読み出すデータ読出部など、これら以外の機能部も設けられているが、図1では、本実施の形態における障害処理に関する機能部のみが図示されている。
【0021】
エラー処理部11は、メモリ20から読み出したデータとその誤り訂正情報とに基づいてECCチェックを行う機能と、当該データに訂正可能エラーがあると、当該エラーbitの訂正、障害報告制御部12に対する障害検出通知、および障害ログ制御部13に対して当該エラーデータの障害を検出したアドレスの送出を行う機能と、メモリ20から読み出したデータに訂正不可能なエラーがある場合は、エラー検出のみを行う機能とを有している。なお、訂正不可能なエラー検出をした時の動作については、周知の技術を用いればよく、ここでの説明は省略する。
【0022】
障害報告制御部12は、エラー処理部11から報告されるエラー検出に応じて、診断装置30に対する障害検出の通知制御を行う機能を有している。障害報告制御部12には、主な構成として、エラーフラグ12A、マスクフラグ12B、AND論理回路12C、カウンタ12D、マスクカウント閾値12E、比較器12F、およびOR論理回路12Gが設けられている。このうち、エラーフラグ12A、マスクフラグ12B、およびマスクカウント閾値12Eは、レジスタで構成されているものとする。
【0023】
エラーフラグ12Aは、診断装置30へ通知する障害検出の有無を示すフラグ値を保持する機能を有しており、AND論理回路12Cで得られた、エラー処理部11から出力されるエラー検出の有無(検出無=「0」,検出有=「1」)と、マスクフラグ12Bのフラグ値(抑止無=「0」,抑止有=「1」)の反転値との論理積の演算結果により更新される。実際には、マスクフラグ12Bのフラグ値が「0」で障害検出が「1」の場合にのみ、エラーフラグ12Aが「1」にセットされる。
また、診断装置30により障害処理が実施されると「0」にリセットされるとともに、後述のとおり、エラーフラグ12Aは、比較器12Fの比較結果により「0」にリセットされる。
【0024】
マスクフラグ12Bは、障害検出の通知に対する抑止有無を示すフラグ値を保持する機能を有しており、このフラグ値により、エラー処理部11から報告されたエラー検出以後、一定期間にわたり、AND論理回路12Cによりエラーフラグ12Aのセット、すなわち診断装置30へ障害検出の通知が抑止される。
エラーフラグ12Aが「1」にセットされると、マスクフラグ12Bも「1」にセットされる。したがって、エラーフラグ12Aが「1」にセットされた後、マスクフラグ12Bが「1」に保持される期間だけ、エラーフラグ12Aへのセットが抑止される。
【0025】
カウンタ12Dは、マスタフラグ12Bが抑止有を示すフラグ値に変化した時点で一定期間ごとにカウント動作を開始する機能を有している。マスクフラグ12Bが「1」にセットされている間、カウンタ値が一定間隔でインクリメントされる。
マスクカウント閾値12Eには、障害検出の抑止期間を指定する閾値が予め設定されている。
【0026】
比較器12Fは、このマスクカウント閾値12Eの値とカウンタ12Dのカウンタ値を比較し、その比較結果に応じてマスクフラグ12Bのフラグ値を抑制無にリセットするとともに、カウンタのカウント値をリセットする機能を有している。
カウンタ値がマスクカウント閾値12Eの値に達すると、比較器12Fの比較結果が反転して、マスクフラグ12Bおよびカウンタ12Dがリセットされる。
以上のようにして、障害報告制御部12では、障害検出以後、一定期間障害検出を抑止する制御が行われる。
【0027】
障害ログ制御部13は、エラー処理部11でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するデータブロックごとに、障害ログ情報として当該エラーの発生回数をカウントして保持する機能と、任意のデータブロックに関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、障害検出を障害報告制御部12を介して診断装置30へ通知する機能とを有している。
【0028】
障害ログ制御部13には、主な構成として、位置情報保持部13A、エラーカウント制御部13B、障害ログ保持部13F、エラーカウント閾値13G、および比較器13Hが設けられている。
【0029】
位置情報保持部13Aは、エラー処理部11でのエラー検出に応じてエラー処理部11から通知された、当該エラーデータに関するエラー位置情報を保持するレジスタである。本実施の形態では、メモリ20のうち、エラーデータが記憶されていたアドレス情報が、エラー処理部11から通知され、エラー位置情報として位置情報保持部13Aで保持される。
エラーカウント制御部13Bは、データブロックごとに、当該データブロックに関する位置情報とエラー位置情報との一致回数を、当該データブロックのエラー発生回数としてカウントする機能を有している。
【0030】
このエラーカウント制御部13Bには、データブロックごとに、比較アドレス13C、比較器13D、およびカウンタ13Eの組が、エントリとしてそれぞれ設けられている。
本実施の形態では、メモリ20を分割して設けたアドレス空間をデータブロックとし、これらアドレス空間単位でエラー発生回数を計測するものとする。したがって、比較アドレス13Cには、これらアドレス空間のアドレスを示す上限値および下限値が予め設定されている。
【0031】
例えば、メモリ20のアドレス空間を4KB単位に分割する場合、エントリ0の比較アドレス13Cの下限値には、32’h0000_0000、上限値には、32’h0000_0FFFの値が設定される。(本表記の32’h0000_0000および32’h0000_0FFFは、32bitのアドレスを16進数で表したものである。)
この設定は、コンピュータシステム1のメモリ容量を管理するソフトウェア(OS)により、最適な値が計算されて行われる。なお、ここでは、設定の一例を示しているが、このような設定方法のみに限定されるものではない。
【0032】
比較器13Dは、比較アドレス13Cに設定されたアドレス空間と、位置情報保持部13Aで保持しているアドレスとを比較する。
カウンタ13Eは、比較機13Dの比較結果が両アドレスの一致を示す場合、カウンタ値をインクリメントする。
【0033】
したがって、エラーカウント制御部13Bでは、エラー処理部11から当該エラーデータに関するアドレス情報が位置情報保持部13Aへ格納された時点で、当該アドレス情報と対応するアドレス空間に関するエラー発生回数がインクリメントされ、新たなエラー発生回数が障害ログ保持部13Fへ出力される。
以上のようにして、障害処理装置10が管理するメモリ空間において、設定されたアドレス空間ごとのエラー発生回数を計数を行う。
【0034】
障害ログ保持部13Fは、複数のレジスタからなり、エラー処理部11から通知されたエラーデータのエラー位置情報と当該エラーブロックのエラー発生回数との組を障害ログ情報として保持する機能を有している。
障害ログ保持部13Fは、レジスタとして、エラーカウント制御部13Bと同様のエントリ数を具備しており、位置情報保持部13Aから受け取った障害発生アドレス(エラー位置情報)と、エラーカウント制御部13Bから受け取ったアドレス空間(エラーブロック)でのエラー発生回数との組からなる障害ログ情報を、当該アドレス空間と対応するエントリに格納する。
【0035】
なお、本実施の形態では、障害ログの中にアドレスを格納しているが、エラーカウントを行うアドレス空間の設定は、プロセッサ50で実行されるソフトウェア(OS)51で行われる。したがって、ソフトウェア51では、設定段階でエントリごとに指定するアドレス空間を把握しているため、アドレスの格納は行わなくても良い。
【0036】
エラーカウント閾値13Gは、障害ログ保持部13Fに格納されているカウント値の閾値を予め保持するレジスタである。
比較器13Hは、障害ログ保持部13Fの各エントリで保持されているエラー発生回数と、エラーカウント閾値13Gの値とを比較し、その比較結果を障害検出として出力する機能を有している。これにより、いずれかのアドレス空間(エラーブロック)でのエラー発生回数が閾値に達すると、比較器13Hの比較結果が、検出無=「0」から検出有=「1」に変化することにより、障害報告制御部12に対して、障害検出が通知される。
【0037】
本実施の形態では、このエラーカウント閾値13Gは、障害ログ保持部13Fで管理する全エントリの閾値を一元管理するものとしており、エントリごとに複数の閾値がユニークに設定されるようにしても良い。なお、この閾値設定は、ハードウェアにより初期値として値を設定(例:初期値3)する方法もしくは、ソフトウェア(OS)によって設定される方法のどちらでも良い。
【0038】
診断命令制御部14は、診断装置30やプロセッサ50からの診断命令を受け付けて、障害処理装置10内の各部を制御することにより、障害処理装置10内の各部への値設定や、障害ログ保持部13Fからの障害ログ採取などの診断命令を実行する機能を有している。
【0039】
[一実施の形態の動作]
次に、図1および図2を参照して、本実施の形態にかかる障害処理装置の動作について説明する。
メモリ20に書き込まれるデータには、ECC用の誤り訂正情報が付加される。メモリ20からデータが読み出されると、エラー処理部11は、同じくメモリ20から読み出した誤り訂正情報に基づきECCチェックを行う。
メモリ20から読み出されたデータに、訂正可能エラーが発生していた場合、障害処理装置10は、次のような障害処理動作を実行する。
【0040】
エラー処理部11は、ECCチェックにより訂正可能エラーが発生していることを検出するとともに、エラーしているbitのエラー訂正を行う。この時、エラー検出したことにより、エラー処理部11は、障害報告制御部12に対してエラー検出を通知し、また、エラー検出時の障害ログ情報を保存するために、障害ログ制御部13に対して、エラー検出したアドレス情報を送出する。
【0041】
障害報告制御部12は、AND論理回路12Cにより、エラー処理部11からのエラー検出の有無とマスクフラグ12Bの反転値の論理積を求め、この結果に応じてエラーフラグ12Aを点灯させる。この際、エラー検出通知時点では、マスクフラグ12Bの値は「0」であるため、エラーフラグ12Aは「1」に設定され、続いてマスクフラグ12Bが「1」に設定される。
【0042】
マスクフラグ12Bが「1」に設定されると、カウンタ12Dのインクリメントが開始される。なお、マスクフラグ12Bが「1」になった時点で、カウンタ12Dの値は「0」になっている。このカウンタ12Dは、所定間隔でインクリメントされ、そのカウンタ値が、比較器12Fにより、マスクカウント閾値12Eに設定されている値と比較される。したがって、カウンタ値がマスクカウント閾値12Eに設定されている値までインクリメントされ、カウンタ12Dの値がマスクカウント閾値12Eに達すると、比較器12Fの比較結果が反転して、マスクフラグ12Bおよびカウンタ12Dがリセットされる。
【0043】
これにより、マスクフラグ12Bが「1」に設定されている間、エラー処理部11から新たなエラー検出が通知されても、障害検出したことを示すエラーフラグ12Aが「1」に設定されないため、障害検出以後、一定期間にわたり、診断装置30への障害検出通知が抑止されることになる。
障害報告制御部12のOR論理回路12Gには、エラーフラグ12Aと障害ログ制御部13からの障害検出通知とが入力されており、両入力のいずれか一方、ここではエラーフラグ12Aが「1」になることによって、診断装置30に対して、障害検出通知が行われる。
【0044】
一方、障害ログ制御部13は、エラー処理部11からエラーデータに関するアドレス情報を受け取り、障害ログ情報の制御を行う。
エラー処理部11から送出されたアドレス情報は、位置情報保持部13Aに一旦格納され、エラーカウント制御部13Bおよび障害ログ保持部13Fに送られる。
【0045】
まず、エラーカウント制御部13Bでは、障害発生したアドレス空間ごとにエラー発生回数を計数する。ここで、障害が発生したアドレスが、エントリ0のアドレス空間に一致する番地であった場合、エントリ0では、位置情報保持部13Aで保持しているアドレスと、比較アドレス13Cに設定されている当該アドレス空間のアドレス範囲との一致を比較器13Dで確認する。これにより、当該エラーデータのアドレスがエントリ0に該当するアドレスであると認識し、エントリ0のカウンタ13Eをインクリメントする。このカウンタ13Eの値は、障害ログ保持部13Fに出力される。
【0046】
障害ログ保持部13Fは、エラーカウント制御部13Bから指示されたエントリ0に対して、位置情報保持部13Aに保持しているアドレス情報と、カウンタ13Eのカウント値を書き込む。
この時点では、障害ログ保持部13Fには、エントリ0のみに障害ログが書き込まれており、エラー発生回数は「1」となっている。
【0047】
障害ログ制御部13では、エラー発生回数の閾値管理を実施するため、エラーカウント閾値13Gにエラー発生回数の閾値が予め設定されている。ここでは、閾値が「3」である場合について説明する。
障害ログ保持部13Fのカウント値とエラーカウント閾値13Gで設定されている値は、比較器13Hで比較され、その比較結果が障害検出有無として障害報告制御部12へ通知される。上述の場合、障害が発生した回数は「1」回であるため、障害ログ保持部13Fのカウント値とエラーカウント閾値13Gで設定されている値とは一致せず、比較結果は「0」となる。このため、この時点では、障害報告制御部12への障害検出は、検出無し=「0」が通知される。
【0048】
次に、障害報告制御部12から診断装置30に対して障害検出通知された場合の動作について説明する。
障害検出が抑止されていない期間に障害が発生した場合、障害報告制御部12から診断装置30に障害検出通知が行われる。これに応じて、診断装置30は、次のような障害処理動作を開始する。
【0049】
診断装置30は、障害処理装置10からの障害検出通知を契機として、障害処理装置10の診断命令制御部14に対して、障害ログ採取命令を通知する。
診断命令制御部14は、診断装置30から障害ログ採取命令を受けると、障害ログ保持部13Fから障害ログを読み出して、診断装置30に返送する。
この後、診断装置30は、障害処理装置10からの障害ログ採取が完了すると、障害処理装置10の診断命令制御部14に対して、障害復旧命令を通知する。
これに応じて、診断命令制御部14は、障害報告制御部12のエラーフラグ12Aをリセットする。
【0050】
障害報告制御部12では、エラーフラグ12Aがリセットされた際、マスクフラグ12Bが「1」になっているため、エラー処理部11から新たなエラー検出が通知されても、この値が「1」である間、すなわち一定の抑止期間にわたり、エラーフラグ12Aが「1」に設定されることはなく、診断装置30へ障害検出が通知されることはない。
一方、障害ログ制御部13では、この抑止期間に発生した障害は、上述したとおりの動作で、障害ログ保持部13Fに障害ログ情報が順次格納される。
【0051】
診断装置30は、障害処理装置10の障害ログ保持部13Fから採取した障害ログを記憶装置40に格納する。この記憶装置40に格納された障害ログは、プロセッサ50により取得され、ソフトウェア51に受け渡す。
【0052】
ソフトウェア51は、この障害ログを元にしてメモリ20の障害状態を解析し、任意のアドレス空間に関するエラー発生回数が、予めソフトウェア51で管理しているエラー発生回数の閾値に達していれば、当該アドレス空間に対応するメモリページを論理的に切り離す障害処理を行う。これまでの説明では、障害発生回数が「1」回であるため、障害処理は実施せず、このままコンピュータシステム1の動作継続を行っていく。
以上が、エラー発生回数が閾値に達していない場合の動作説明である。
【0053】
次に、障害検出が抑止されている間に障害が発生した場合について説明する。
エラー処理部11は、障害検出通知の抑止期間においても、メモリ20から読み出したデータから訂正可能エラーを検出する。
障害検出通知の抑止期間において、エラー処理部11により訂正可能エラーが検出された場合、障害報告制御部12では、マスクフラグ12Bにより、障害検出が抑止されているため、エラーフラグ12Aは「1」に設定されず、診断装置30への障害検出通知は行われない。
【0054】
一方、障害検出通知の抑止期間において、エラー処理部11により訂正可能エラーが検出された場合、障害ログ制御部13は、上述と同様に、エラー処理部11から受け取ったアドレス情報を元に、障害ログ保持部13Fへの障害ログ格納動作を行う。
【0055】
ここで、エラー発生回数の閾値管理であるが、2回目に発生した障害アドレスがエントリ0に設定されているアドレス空間であれば、カウント値は「2」を示すが、ここでは、エラーカウント閾値13Gを「3」としているため、この時点でも閾値には達していないため、障害ログ制御部13から障害報告制御部12に対して障害検出通知は行われない。この結果、診断装置30への障害検出通知も行われないため、コンピュータシステム1は、動作を継続していく。
以上のような動作を繰り返し実施していくことで、障害検出が抑止されている期間であっても、障害ログを格納していいき、障害ログ情報を蓄積させていく。
【0056】
このような動作が繰り返されて、エントリ0に設定されているアドレス空間内で発生したエラー発生回数が「3」になると、エラーカウント閾値13Gに達したことにより、比較器13Hの比較結果が「1」となる。このため、障害検出通知の抑止期間であっても、障害ログ制御部13は、障害報告制御部12に対して、障害検出通知を行う。
【0057】
障害報告制御部12のOR論理回路12Gには、エラーフラグ12Aと障害ログ制御部13からの障害検出通知が入力されており、両者のうちいずれか一方、ここでは障害検出通知が「1」となるため、この障害検出通知が、障害報告制御部12を介して診断装置30に通知され、診断装置30により、障害処理が開始される。
障害処理で行われるログ採取方法は上述と同様であるため、省略する。
【0058】
ここで、採取された障害ログ情報は、再びソフトウェア51に渡され、障害状態の解析が行われる。ソフトウェア51は、障害ログ情報に基づき、当該アドレス空間でのエラー発生回数が、閾値「3」に達したことを認識し、このアドレス空間に対応するメモリページを論理的に切り離す障害処理動作を実行する。切り離し対象となるメモリページは、障害ログ情報のアドレス情報より、アドレス空間のうち「32’h0000_0000〜32’h0000_0FFF」であると判定され、ソフトウェア51は、本アドレス空間の切り離し処理を実施する。
【0059】
図3は、従来の障害処理の概略フローである。図4は、本実施の形態にかかる障害処理の概略フローである。図3および図4において、縦方向を時間軸として、エラー発生からログ採取が行われるまでの処理順序を明示したものである。
【0060】
従来の障害処理方法では、図3に示すように、最初に訂正可能エラーが検出されると、障害処理装置から診断装置に対して障害検出が通知されるとともにエラー発生回数がログとして記録される。診断装置は、この障害検出通知に応じて、障害処理装置から障害ログを採取し、その内容がソフトウェアに通知される。この際、エラー発生回数が「1」であることから、上述のようにソフトウェアによるエラー発生回数の閾値が3回として設定されている場合には、両者が一致せず、ソフトウェアによる障害処理は実行されない。
【0061】
この後、障害処理装置では、エラー検出後から一定期間にわたり障害検出通知の抑止期間となるため、この抑止期間中に検出された新たなエラーに関する障害検出については診断装置へ通知されず、診断装置でのログ採取による障害監視も行われない。
したがって、障害検出通知は、抑止期間が解除されている抑止期間外でエラーが検出された場合のみとなるため、ソフトウェアによるエラー発生回数の閾値が3回として設定されている場合、抑止期間外でエラーが3回検出された時点、すなわち最初のエラー検出から抑止期間が2回以上経過した時点で、初めてソフトウェアによる障害処理が実行されて、障害メモリページの切り離しが行われる。
【0062】
このように、従来の障害処理方法によれば、抑止期間中に発生する障害が多発したとしても、しばらくの間、障害が発生していないものとして運用継続されるため、訂正不可能なエラーに発展し、システムダウンに繋がる場合もあった。
【0063】
一方、本実施の形態にかかる障害処理の場合、図4に示すように、最初に訂正可能エラーが検出されると、障害処理装置から診断装置に対して障害検出が通知されるとともにエラー発生回数がログとして記録される。診断装置は、この障害検出通知に応じて、障害処理装置から障害ログを採取し、その内容がソフトウェアに通知される。この際、エラー発生回数が「1」であることから、上述のようにソフトウェアによるエラー発生回数の閾値が3回として設定されている場合には、両者が一致せず、ソフトウェアによる障害処理は実行されない。
【0064】
この際、障害処理装置では、更新した障害ログのエラー発生回数と障害処理装置によるエラー発生回数の閾値とを比較し、その比較結果に応じて障害検出の通知要否を判断している。
したがって、障害処理装置によるエラー発生回数の閾値が3回として設定されている場合、図4に示すように、抑制期間内であっても、3回目にエラーを検出した時点で、そのエラー発生回数が、障害処理装置によるエラー発生回数の閾値に達することになり、障害処理装置から診断装置に対して障害検出が通知される。
【0065】
これに応じて、診断装置により、障害処理装置からログが採取されてソフトウェアに通知される。
これにより、ソフトウェアによるエラー発生回数の閾値が3回として設定されている場合、ログで通知されたエラー発生回数が「3」であることから、両者が一致し、障害処理装置が障害検出通知の抑止期間中であっても、ソフトウェアによる障害処理、すなわち当該アドレス空間の切り離しが行われる。この結果、システムダウンに繋がり兼ねない障害メモリページの切り離し処理が一早く行われ、システムダウンの発生確率を軽減させることが可能である。
【0066】
[一実施の形態の効果]
このように、本実施の形態では、障害報告制御部12により、エラー処理部11でのエラー検出に応じて、エラー処理部11で障害を検出したことを示す障害検出を診断装置(上位装置)30へ通知するとともに、当該エラー検出から所定の抑止期間にわたり後続するエラー検出に応じた障害検出の通知を抑止し、障害ログ制御部13により、エラー処理部11でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するアドレス空間(データブロック)ごとに、障害ログ情報として当該エラーの発生回数をカウントして保持し、任意のアドレス空間に関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、障害検出を診断装置30へ通知している。
【0067】
これにより、エラー検出から一定期間にわたり障害検出通知が抑止されているような障害処理方式を持つハードウェアが搭載されたコンピュータシステム1であっても、診断装置さらにはソフトウェア(OS)において、ハードウェアに関する最新の障害発生状況を確認することができる。したがって、当該ハードウェアに対する本来の障害処理動作が阻害されることなく、適切に処理実行することが可能となり、抑止期間中に発生する恐れがあるシステムダウンの発生確率を軽減させることができる。
【0068】
[実施の形態の拡張]
以上では、障害処理装置10をメモリコントローラに適用して、メモリ20から読み出されたデータに対するエラーを検出する場合を例として説明したが、これに限定されるものではなく、メモリコントローラと同様に、例えばデータ通信インターフェース回路のように、高速でデータを取得する電子回路であれば、本発明にかかる障害処理装置10を前述と同様にして適用でき、同様の作用効果を得ることができる。
【0069】
また、以上では、障害処理装置10、診断装置30、およびプロセッサ50を別個の回路構成で実現した場合を例として説明したが、これに限定されるものではなく、これら回路構成を任意に1つの回路構成で実現してもよい。
また、以上では、エラー訂正方式としてECCを用いる場合を例として説明したが、これに限定されるものではなく、他のエラー訂正方式を適用してもよい。
【符号の説明】
【0070】
1…コンピュータシステム、10…障害処理装置(メモリコントローラ)、11…エラー処理部、12…障害報告制御部、12A…エラーフラグ、12B…マスクフラグ、12C…AND論理回路、12D…カウンタ、12E…マスクカウント閾値、12F…比較器、12G…OR論理回路、13…障害ログ制御部、13A…位置情報保持部、13B…エラーカウント制御部、13C…比較アドレス、13D…比較器、13E…カウンタ、13F…障害ログ保持部、13G…エラーカウント閾値、13H…比較器、14…診断命令制御部、20…メモリ、30…診断装置、40…記憶装置、50…プロセッサ、51…ソフトウェア、51A…構成制御機能、51B…メモリ管理機能。

【特許請求の範囲】
【請求項1】
対象となるデータ処理装置から取得したデータから訂正可能なエラーを検出するエラー処理部と、
前記エラー処理部でのエラー検出に応じて、前記エラー処理部で障害を検出したことを示す障害検出を上位装置へ通知するとともに、当該エラー検出から所定の抑止期間にわたり後続するエラー検出に応じた障害検出の通知を抑止する障害報告制御部と、
前記エラー処理部でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するデータブロックごとに、障害ログ情報として当該エラーの発生回数をカウントして保持し、任意のデータブロックに関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、前記障害検出を前記上位装置へ通知する障害ログ制御部と
を備えることを特徴とする障害処理装置。
【請求項2】
請求項1に記載の障害処理装置において、
前記上位装置からの診断命令に応じて、前記障害ログ制御部で保持している前記障害ログ情報を取得し、前記上位装置へ通知する診断命令制御部をさらに備えることを特徴とする障害処理装置。
【請求項3】
請求項1に記載の障害処理装置において、
前記障害報告制御部は、
前記上位装置へ通知する障害検出の有無を示すフラグ値を保持するエラーフラグと、
前記障害検出の通知に対する抑止有無を示すフラグ値を保持するとともに、前記エラーフラグが障害検出有を示すフラグ値に変化した時点で自フラグ値を抑止有に設定するマスクフラグと、
前記エラー処理部でのエラー検出有無を示すエラー検出有無信号と前記マスクフラグの反転値とのAND論理値を前記エラーフラグへ登録するAND論理回路と、
前記マスタフラグが抑止有を示すフラグ値に変化した時点で一定期間ごとにカウント動作を開始するカウンタと、
前記カウンタのカウント値と予め設定されたマスクカウント閾値とを比較し、その比較結果に応じて前記マスクフラグのフラグ値を抑制無にリセットするとともに、前記カウンタのカウント値をリセットする比較器と
を含むことを特徴とする障害処理装置。
【請求項4】
請求項1に記載の障害処理装置において、
前記障害ログ制御部は、
前記エラー処理部でのエラー検出に応じて前記エラー処理部から通知された、当該エラーデータに関するエラー位置情報を保持する位置情報保持部と、
前記データブロックごとに、当該データブロックに関する位置情報と前記エラー位置情報との一致回数を、当該データブロックでのエラー発生回数としてカウントするエラーカウント制御部と、
前記エラーデータのエラー位置情報と当該エラーブロックでのエラー発生回数との組を前記障害ログ情報として保持する障害ログ情報保持部と、
前記組ごとに、当該組のエラー発生回数と前記エラーカウント閾値とを比較し、その比較結果を前記障害検出として出力する比較器と
を含むことを特徴とする障害処理装置。
【請求項5】
対象となるデータ処理装置から取得したデータに基づき障害発生を検出して上位装置へ通知する障害処理装置で用いられる障害処理方法であって、
エラー処理部が、前記データ処理装置から取得したデータから訂正可能なエラーを検出するエラー処理ステップと、
障害報告制御部が、前記エラー処理部でのエラー検出に応じて、前記エラー処理部で障害を検出したことを示す障害検出を前記上位装置へ通知するとともに、当該エラー検出から所定の抑止期間にわたり後続するエラー検出に応じた障害検出の通知を抑止する障害報告制御ステップと、
障害ログ制御部が、前記エラー処理部でのエラー検出に応じて、当該エラーが検出されたエラーデータが属するデータブロックごとに、障害ログ情報として当該エラーの発生回数をカウントして保持し、任意のデータブロックに関するエラー発生回数が予め設定されたエラーカウント閾値に達した時点で、前記障害検出を前記上位装置へ通知する障害ログ制御ステップと
を備えることを特徴とする障害処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate