説明

診断修復装置、診断修復方法、及び診断修復プログラム

【課題】メモリを用いたデータ処理の安全性及び継続性を向上させる。
【解決手段】予め設定されたアプリケーションによる処理を実行し、実行された処理結果を比較してデータの診断及び修復を行う診断修復装置において、所定のデータを3以上の複数のデータ領域に記憶する記憶手段と、前記所定のデータを前記3以上の複数のデータ領域に異なる形式で書き込み、前記アプリケーションの実行時に前記3以上の複数のデータ領域にそれぞれ書き込んだデータを読み込んで照合し、照合の結果が不一致であった場合に所定の修復を行い、修復後のデータを用いて前記アプリケーションを実行する処理プログラム実行手段と、前記アプリケーションを実行した結果と、少なくとも1つの他の診断修復装置で前記アプリケーションを実行した結果とを照合する照合処理手段とを有することにより、上記課題を解決する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、診断修復装置、診断修復方法、及び診断修復プログラムに係り、特に、メモリを用いたデータ処理の安全性及び継続性を向上させるための診断修復装置、診断修復方法、及び診断修復プログラムに関する。
【背景技術】
【0002】
従来では、例えば放射線等により生じるデータ処理後の一過性のソフトエラー現象を減少させるため、メモリ(以下、必要に応じて「メモリ装置」という)に格納された処理後のデータに対して診断を行う技術が存在する。ここで、ソフトエラーとは、例えばメモリである半導体チップの一部が壊れる等の不良(ハードエラー)ではなく、記憶しておいたデータの一部だけが反転してしまう等の不良を意味する。このようなソフトエラーは、例えばアルファ線や中性子線、陽子線、重イオン線等の粒子線が半導体チップに突入することで引き起こされ、また粒子線が半導体チップを通過する時間は極めて短く、ほんの一瞬である等の特徴が知られている。また、ソフトエラーは、プリント板の細密化により発生しやすくなる。
【0003】
ここで、従来では、例えばリアルタイムに読み書きするメモリにおけるソフトエラーの修復に関して、メモリ素子をリセットしたり、リライト(再書き込み)したりすることによって正常な動作に戻すことができることが知られている(例えば、非特許文献1参照)。また、非特許文献1では、ソフトエラー対策として、誤り訂正符号(以下、「ECC」(Error Correction Code)という)の検出において、チェック情報である単一ビット或いは2ビット以上が変化したのを調べたり、単一ビットだけが変化したかを決定し、そのビットを補数値に反転させることによってデータを訂正したりすることが示されている。また、既存のインターリーブ方式とECCとの併用も示されている。
【0004】
また、従来では、予め正データとその反転データを保存しておき、データアクセス時のパリティチェック等で異常を検出した場合に、その反転データを利用する手法が知られている(例えば、特許文献1参照)。また、従来では、予め正データとその反転データとチェックコードとを格納しておき、マスターキーを抜く時点等のデータを監視して修復する手法が知られている。更に、従来では、ソフトウェアエラーが生じた場合に、そのソフトウェアの実行時に使用したハードウェアであるCPU(Central Processing Unit)やメモリに対して診断を行う手法が知られている(例えば、非特許文献2参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平5−216771号公報
【特許文献2】特開2002−55885号公報
【非特許文献】
【0006】
【非特許文献1】design feature、2005年2月、「http://ednjapan.cancom−j.com/content/issue/2005/02/feature/feature02.html」
【非特許文献2】IEC61508 Functional safety of electrical/electronic/programmable electronic safety−related systems(IEC61508−7;A.5.7(Double RAM with hardware or software comparison and read/write test))
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、リアルタイムに読み書きするメモリにおいて、非特許文献1に示されているような複雑なECCを搭載するには、ハードウェアコストが増大してしまう。また、非特許文献1に示されている手法では、インターリーブ等の特殊な方式と併用しないと2ビット以上のデータ修正ができない。また、ECCの検出では、エラーを発生したメモリへの再書き込みを行わないため、メモリのソフトエラー修復ができない。
【0008】
また、従来のソフトエラーの診断は、特定のタイミング又は定期的に行われる。したがって、従来では、実際に所定の処理を行うためにメモリを読むタイミングと、診断するためにメモリを読むタイミングとが異なり、処理するデータを読み込んだタイミングでソフトエラーを検出・修復できない可能性がある。つまり、ソフトエラーの診断では、エラー検出修復タイミングと、処理に使用するためのメモリ読み込みタイミングとが同時であり、エラー検出・修復したデータを用いて処理をする必要がある。
【0009】
また、特許文献1に示されているような方法は、メモリを取り出す時にエラーを検出するが、その検出方法が不明確である。例えば、特許文献1には、パリティチェックの記載があるが、パリティチェックではエラー検出能力が低い。また、特許文献1の手法では、エラーが発生したメモリへの再書き込みを行わないため、メモリのソフトエラーの修復ができない。
【0010】
また、特許文献2に示されているような手法は、監視する時期が指定されておらず、所定の処理を行う場合に使用するタイミングでメモリのソフトエラーを検出することができず、エラーデータで処理する可能性があり、データの信頼性を担保できない。
【0011】
また、特許文献2に示されている手法では、対象がEPROM(Erasable Programmable Read Only Memory),EEPROM(Electrically Erasable Programmable Read−Only Memory)を想定しており、RAM(Random Access Memory)についてのソフトエラーの検知及び修復については示されておらず、またチェックコードが必要になる等の処理の負荷が増加するため、リアルタイムでのメモリ使用には適用できない。
【0012】
更に、非特許文献2に記載されている「IEC61508−7 A.5.7 Double RAM」は、メモリアクセス時にソフトエラーを検出できるが、データの修復及びソフトエラーの修復ができない。したがって、上述したような手法では、メモリ等を用いたシステム上のデータ処理の安全性及び継続性を向上させることができなかった。
【0013】
本発明は、上述した課題に鑑みてなされたものであって、メモリを用いたデータ処理の安全性及び継続性を向上させるための診断修復装置、診断修復方法、及び診断修復プログラムを提供することを目的とする。
【課題を解決するための手段】
【0014】
上述した課題を解決するために、本発明は、以下の特徴を有する課題を解決するための手段を採用している。
【0015】
本発明は、予め設定されたアプリケーションによる処理を実行し、実行された処理結果を比較してデータの診断及び修復を行う診断修復装置において、所定のデータを3以上の複数のデータ領域に記憶する記憶手段と、前記所定のデータを前記3以上の複数のデータ領域に異なる形式で書き込み、前記アプリケーションの実行時に前記3以上の複数のデータ領域にそれぞれ書き込んだデータを読み込んで照合し、照合の結果が不一致であった場合に所定の修復を行い、修復後のデータを用いて前記アプリケーションを実行する処理プログラム実行手段と、前記アプリケーションを実行した結果と、少なくとも1つの他の診断修復装置で前記アプリケーションを実行した結果とを照合する照合処理手段とを有することを特徴とする診断修復装置。
【0016】
また本発明は、予め設定されたアプリケーションによる処理を実行し、実行された処理結果を比較してデータの診断及び修復を行う診断修復方法において、所定のデータを記憶手段の3以上の複数のデータ領域に記憶する記憶ステップと、前記所定のデータを前記3以上の複数のデータ領域に異なる形式で書き込み、前記アプリケーションの実行時に前記3以上の複数のデータ領域にそれぞれ書き込んだデータを読み込んで照合し、照合の結果が不一致であった場合に所定の修復を行い、修復後のデータを用いて前記アプリケーションを実行する処理プログラム実行ステップと、前記アプリケーションを実行した結果と、少なくとも1つの他の診断修復方法で前記アプリケーションを実行した結果とを照合する照合処理ステップとを有することを特徴とする。
【0017】
また本発明は、コンピュータを、上述した診断修復装置が有する各手段として機能させるための診断修復プログラムである。
【0018】
なお、本発明の構成要素、表現又は構成要素の任意の組み合わせを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造等に適用したものも本発明の態様として有効である。
【発明の効果】
【0019】
本発明によれば、メモリを用いたデータ処理の安全性及び継続性を向上させることができる。
【図面の簡単な説明】
【0020】
【図1】本実施形態における診断修復装置のブロック構成の一例を示す図である。
【図2】本実施形態における診断修復の概要について説明するための図である。
【図3】本実施形態における診断修復処理が実現可能なハードウェア構成の一例を示す図である。
【図4】診断修復処理手順の一例を示すフローチャートである。
【図5】データ書込関数の処理手順の一例を示すフローチャートである。
【図6】図5のデータ書込関数処理手順に対応するデータの書き込みの一例を示す図である。
【図7】データ管理テーブルの一例を示す図である。
【図8】構造体定義ファイルの一例を示す図である。
【図9】データ読込関数の処理手順の一例を示すフローチャートである。
【図10】照合処理手順の一例を示すフローチャートである。
【図11】照合先の処理が先行している場合の照合処理を説明するための図である。
【図12】照合先の処理が遅行している場合の照合処理を説明するための図である。
【図13】照合データファイルの一例を示す図である。
【発明を実施するための形態】
【0021】
<本発明について>
本発明は、例えばリアルタイムでデータを読み書きするメモリ等の記憶手段のソフトエラーを検知し、例えば多数決原理等を用いてメモリ等のソフトエラーの修復や検証等の診断を行うことで、リアルタイム性を保持しつつ、安全性、信頼性、可用性、及びコスト面等を改善する。
【0022】
また、本発明では、例えばダイバース(diverse)診断手法を用いて診断を実施することで、同一出力であっても処理方式を別にすることにより一過性エラー以外のCPUやメモリの異常等を、より適切に診断することができる。
【0023】
ここで、本発明における「ダイバース診断手法」を以下のように定義する。ダイバース診断手法とは、例えば、所定の入力データを読み込み、同一のデータを出力する場合に、その入力データの読み込む機器(装置等)や処理方式等を別にして得られる結果を診断するものである。
【0024】
更に、具体的に説明すれば、ダイバース診断手法は、例えば取得したあるデータに対して何らかのデータ処理を行う場合には、そのプログラム言語の違いやアルゴリズムの違い、バージョンの違い、コンパイラの違い、コンパイラのパラメータの違い、また複数のタスクを実行する場合には、その実行順序の違い、装置の違い(ここで、装置の違いには、例えば同種類の2つの装置や他社製品による異なる装置といった概念も含む)等といった、それぞれ異なる条件において処理された結果を用いて診断する手法をいう。なお、ダイバース診断手法における異なる条件については、本発明においてはこれに限定されるものではない。また、ダイバース診断手法により設定される条件は、上記の違いのうち何れか1つでもよく、複数を組み合わせてもよい。
【0025】
また、本発明では、ダイバースにより得られるそれぞれの誤差範囲やデータの誤差範囲について、予め設定しておき、その設定された範囲において一致しているか否かを判断したり、適宜多数決により、その処理結果が正常か異常かを判断することによりソフトエラーの安全性を向上させる。
【0026】
以下に、本発明における診断修復装置、診断修復方法、及び診断修復プログラムを好適に実施した形態について、図面を用いて説明する。
【0027】
<診断修復装置のブロック構成例>
図1は、本実施形態における診断修復装置のブロック構成の一例を示す図である。ここで、図1に示す診断修復装置10−1,10−2は、複数の診断修復装置が多重化されていることを示すものであり、各装置を区別するため10−1,10−2としているが、これらは同一の構成を有している。そこで、以下の説明では、便宜上、診断修復装置10−1のみを用いて各構成による機能を説明する。また、本実施形態における診断修復装置10−1,10−2は、各CPU(例えば、CPU1,CPU2等)で処理される機能として定義することもできる。
【0028】
診断修復装置10−1は、記憶手段としてのメモリ11と、データ管理テーブル12と、構造体定義ファイル13と、処理プログラム実行手段14と、照合データファイル15と、照合処理手段16と、通信手段17と、時間管理手段18とを有するよう構成されている。
【0029】
メモリ11は、例えばリアルタイムに読み書き可能なメモリ(例えば、RAM等)である。また、メモリ11は、内部に複数のデータ領域を有する。図1の例では、メモリ11内の複数のデータ領域のうち、ソフトエラーを検出及び修復対象とする領域を、「データ領域1」、「データ領域2」、「データ領域3」に区分して管理する。なお、本実施形態において、データ領域の数はこれに限定されるものではないが、データ領域のデータを用いて多数決による判定を行う場合もあるため、データ領域の数は3以上の奇数であることが好ましい。
【0030】
また、本実施形態では、所定の処理内容にて処理されるデータを格納する領域としてレジスタ等を有していてもよく、その他にもアクセスするデータを一時的に保存するキャッシュメモリ等を有していてもよい。
【0031】
データ管理テーブル12は、処理プログラム14に含まれるデータ書込関数14a及びデータ読込関数14bの何れか、又は、両方の関数からアクセスできる共通領域に配置され、メモリ11のデータ領域の先頭アドレスを管理する。
【0032】
構造体定義ファイル13は、データ書込関数14a及びデータ読込関数14bの何れか、又は、両方の関数からアクセスできる共通領域に配置され、例えば各データ名、当該データ名のバイト数、当該データ名の先頭の相対アドレス等を定義した情報を管理する。ここで、例えば上述した各関数がC言語の場合には、プロブラムのコンパイル時等のように診断修復装置10−1(CPU)が実際の処理を実行する前に、予め設定された構造体定義データ21から取得したデータを変換して構造体定義ファイル13として構築することもできる。
【0033】
処理プログラム実行手段14は、少なくともデータ書込関数14a及びデータ読込関数14bを有する。データ書込関数14aは、メモリ11内のデータ領域に所定のデータを所定の形式等で書き込むための関数である。また、データ読込関数14bは、メモリ11内のデータ領域からデータを読み込み、メモリの診断やデータ及びソフトエラーの修復等を行うための関数である。
【0034】
つまり、処理プログラム実行手段14は、ソフトエラー検出対象のデータの書き込みや読み込みを行うアプリケーション処理プロブラムとして、データ書込関数14a及びデータ読込関数14bを有する。
【0035】
更に、処理プログラム実行手段14は、各種アプリケーション14cを有する。各種アプリケーション14cには、異なる処理を行う複数のアプリケーションが含まれている。処理プログラム実行手段14は、予め設定された処理内容に応じて各種アプリケーション14cからアプリケーションを選択し、選択したアプリケーションに対応した処理プログラム(アプリケーション処理プログラム)を実行し、実行した結果を照合データファイル15に出力する。
【0036】
ここで、各種アプリケーション14cによるアプリケーション処理プロブラムは、例えば診断修復装置10−1(CPU1)と診断修復装置10−2(CPU2)とで同じ入力に対し、所定の制御命令等により同じ出力をするプロブラムである。つまり、アプリケーション処理プロブラムは、例えば上述したCPU1とCPU2とで同じアルゴリズムで処理をするか、又は上述したダイバース診断手法を適用し、入力に対して別の処理アルゴリズム等を用いた処理を行い、同じ出力をするといったダイバース化による処理を行う。本実施形態では、ダイバース化を行うことで、例えばプログラムや設計のミス等による共通原因の故障を検出し回避することができる。
【0037】
照合データファイル15は、例えば診断修復装置10−1(CPU1)における処理プログラム実行手段14の処理結果と、診断修復装置10−2(CPU2)における処理プログラム実行手段14の処理結果とを照合することで、修復したデータを検証して診断するためのデータを格納する。なお、照合データファイル15は、今までの処理結果の履歴情報(例えば、前回データ、今回データ等)を格納することもできる。
【0038】
照合処理手段16は、照合処理として、例えば診断修復装置10−1における処理プログラム実行手段14の処理結果と、診断修復装置10−2における処理プログラム実行手段14の処理結果とを照合することで、所定結果が一致しているか否かを確認し、修復したデータを検証して診断するための処理を行う。なお、一致しているか否かの判断は、完全一致に限定されるものではなく、例えば所定の誤差範囲にあるか否かにより判断してもよい。
【0039】
また、照合処理手段16は、多重化された診断修復装置のそれぞれの今回分の処理結果データ(今回データ)を対象に照合を行ってもよく、各診断修復装置における処理のタイミング等に対応させて、例えば前回分の処理結果データ(前回データ)等を用いて照合を行ってもよい。
【0040】
通信手段17は、診断修復装置10−1と診断修復装置10−2とで、データの送受信を可能とする。具体的には、通信手段17により、例えば診断・修復結果の照合等を行う。
【0041】
時間管理手段18は、処理プログラム実行手段14において予め設定された少なくとも1つの処理(アプリケーション)を実行させるための時間を管理する。また、時間管理手段18は、多重化された他の診断修復装置との実行の同期を取るための時間を管理する。したがって、多重化された各診断修復装置10における各時間管理手段18は、通信ネットワーク等により同期が取れるように接続されていてもよい。
【0042】
なお、本実施形態においては、これに限定されるものではなく、例えば各診断修復装置10の処理プログラム実行手段14で同期させて所定の処理が実行されるように制御する管理制御装置等を設け、その管理制御装置から多重化された各診断修復装置10に対して所定の処理を実行させる時間情報を出力するようにしてもよい。これにより、本実施形態では、時間管理によるリアルタイムな診断修復処理を実現することができる。
【0043】
構造体定義データ21は、外部から取得されるデータの構造体が定義されたデータである。本実施形態では、構造体定義データ21を変換して構造対定義ファイル13を取得しているが、本発明においてはこれに限定されるものではなく、例えば構造体定義ファイル13そのものを外部から直接取得してもよい。なお、外部からの取得は、他の装置からインターネットやLAN(Local Area Network)等の通信ネットワークを介して取得してもよく、ユーザ等からの入力により設定されてもよい。
【0044】
ここで、診断修復装置10−2は、多重化した診断修復装置10−1と同等のブロック構成を有し、上述した各機能に対応する処理を行う。なお、診断修復装置10−2は、多重化した診断修復装置10−1と並行して処理を行ったり、異なるタイミングで処理を行うことができ、これらはユーザ等により予め設定することができる。また、図1の例において、診断修復装置10−2(CPU2)は、診断修復装置10−1(CPU1)と並列二重化システムを構成しているが、本発明においてはこれに限定されるものではなく、診断修復装置10を三重以上の構成にして多重化システムを構成してもよい。
【0045】
<診断修復の概要について>
ここで、本実施形態における診断修復の概要について図を用いて説明する。図2は、本実施形態における診断修復の概要について説明するための図である。本実施形態では、図2に示すように、リアルタイムに読み書きするメモリ11について、以下の手順で、メモリの診断、読み込みデータの修復、及びメモリ11のソフトエラーの修復を行う。なお、図2では、上述したデータ領域1〜3をそれぞれメモリ11−1〜11−3とする。
【0046】
まず、本実施形態では、図2の(1)に示すように、データ書き込み時に、所定のデータを例えば3つの異なる形式でデータ領域へ書き込む。書き込むデータ形式は、例えばそのままのデータ(正データ)や、正データを16進数ffff(ハイバリュー(オールf))でEOR(排他的論理和)演算したデータ(反転データ)、正データを予め設定された1又は複数の異なる所定のパターン(例えば、16進数aaaa、abcd、4321、0a0a等)でEOR演算したデータ(パターンデータ)とし、それらのデータを選択的に用いてソフトエラー以外のビットエラー等のエラー検出もできるようにする。更に、本実施形態では、後述する図2の(5)に示す照合処理を行うことで、データの信頼性を向上させ、チェックサム等の付加的データを不要とする。
【0047】
なお、上述した所定のパターンは、16進数aaaaのように同一数字が連続するものでもよく、16進数1234,4321のように昇順、降順になったものでもよく、16進数0a0aのように所定の2以上の値を交互に配列されたものでもよい。また、上述したデータのパターンは、処理毎に変更してもよく、常に予め設定されたパターンに固定されていてもよい。更に、本実施形態における演算内容は、上述したEOR演算に限定されるものではなく、例えば論理積演算等の所定の演算を用いてもよく、各処理毎や処理データの内容に応じて演算手法を任意に設定してもよい。なお、上述した16進数ffffやaaaa等の付加データの桁数は、説明の便宜上4桁で示しているが、実際には、正データのバイト数に対応させた桁数が設定される。
【0048】
次に、本実施形態では、処理に使用するタイミングで図2の(2)に示すデータの読み込みを行う。また読み込み時に図2の(1)の処理でメモリ11−1に書き込んだ正データと、メモリ11−2に書き込んだ16進数ffffでEOR演算した反転データとを照合して一致を確認する。ここで、照合時には、メモリ11−2から得られた反転データを、16進数ffffでEOR演算する前のデータに戻してから照合を行う。なお、一致しているか否かの判断は、完全一致に限定されるものではなく、例えば所定の誤差範囲にあるか否かにより判断してもよい。照合の結果が不一致の場合には、メモリエラーと判断する。
【0049】
更に、本実施形態では、メモリ11−3に書き込んだパターンデータを用い、上述した正データと照合して一致を確認する。なお、パターン処理と照合する場合には、例えばデータ3のパターンデータを16進数aaaaが付加される前に戻した後に、データ1と照合する。つまり、ここでの照合は、正データ、反転データ、パターンデータの3つのデータで照合して一致を確認する。
【0050】
次に、本実施形態では、図2の(3)の処理として、上述した図2の(2)の処理でメモリエラーが発生したと判断した場合に、メモリ11−1〜11−3で書き込んだ3つの領域のデータで多数決を行い、多数のものを正常データと判定する。つまり、上述の例では、3つのデータのうち、同じデータが2つあるデータを正常データとする。
【0051】
また、判定により得られた正常データを実際の所定の処理に使用すると共に、当該正常データをメモリエラーと判定されたメモリに所定の形式で書き込み、ソフトエラーを修復する。
【0052】
次に、本実施形態では、図2の(4)の処理として、メモリエラーと判定したメモリ(図2の例では、メモリ11−1)に書き込んだデータを再読み込みし、書き込んだデータと再読み込みしたデータとが一致するか否かを判定し、一致しない場合には、ハードエラーとみなして、所定のハードエラー処理を行う。
【0053】
次に、本実施形態では、図2の(5)の処理として、二重系以上の多重化システムで、当該システム(例えば、CPU1)で修復したデータを使用した処理結果と、他システム(例えば、CPU2)における該当する処理結果との照合を行う。この照合において、一致した場合には、修復データが正しいことが検証される。また、一致しない場合には、エラーとして所定のエラー処理を行う。
【0054】
なお、図2の例では、本実施形態では、メモリ11−1に正データ、メモリ11−2に反転データ、メモリ11−3にパターンデータを書き込んだが、本発明においてはこれに限定されるものではなく、例えばメモリ11−2,11−3にそれぞれ異なるパターンを正データに付加したパターンデータを書き込んでもよい。更に、本実施形態では、例えばデータ領域を5つ用意し、そのうちの1つには正データを書き込み、残りの4つには、反転データを2つ、異なるパターンを用いて得られたパターンデータを2つ書き込んでもよく、また4つとも異なるパターンを用いて得られたパターンデータを書き込んでもよい。どのデータ領域にどのようなデータを書き込むかについては、データの内容等に応じて選択的に設定することができる。
【0055】
<ハードウェア構成例>
ここで、上述した診断修復装置10(10−1,10−2を含む)においては、各機能をコンピュータに実行させることができる実行プログラム(診断修復プログラム)を生成し、例えば汎用のパーソナルコンピュータ、サーバ等にその実行プログラムをインストールすることにより、本発明における診断修復処理等を実現することができる。
【0056】
ここで、本実施形態における診断修復処理が実現可能なコンピュータのハードウェア構成例について図を用いて説明する。図3は、本実施形態における診断修復処理が実現可能なハードウェア構成の一例を示す図である。
【0057】
図3におけるコンピュータ本体には、入力装置31と、出力装置32と、ドライブ装置33と、補助記憶装置34と、メモリ装置35と、各種制御を行うCPU36と、ネットワーク接続装置37とを有するよう構成されており、これらはシステムバスBで相互に接続されている。
【0058】
入力装置31は、ユーザ等が操作するキーボード及びマウス等のポインティングデバイスを有しており、ユーザ等からの各種プログラムの実行指示等の各種操作信号を入力する。
【0059】
出力装置32は、本発明における処理を行うためのコンピュータ本体を操作するのに必要な各種ウィンドウやデータ等を表示するディスプレイを有し、CPU36が有する制御プログラムにより、上述したアプリケーション処理プロブラム等の各種プログラムの実行経過や結果等を表示することができる。
【0060】
ここで、本発明においてコンピュータ本体にインストールされる実行プログラムは、例えばUSB(Universal Serial Bus)メモリやCD−ROM等の可搬型の記録媒体38等により提供される。プログラムを記録した記録媒体38は、ドライブ装置33にセット可能であり、記録媒体38に含まれる実行プログラムが、記録媒体38からドライブ装置33を介して補助記憶装置34にインストールされる。
【0061】
補助記憶装置34は、ハードディスク等のストレージ手段であり、本発明における実行プログラムやコンピュータに設けられた制御プログラム、本発明における診断修復処理を実行するために必要な各種データ(例えば、データ管理テーブル12、構造体定義ファイル13、照合データファイル15等)等を蓄積し、必要に応じて入出力を行うことができる。
【0062】
メモリ装置35は、上述したメモリ11に相当する記憶手段である。また、メモリ手段35は、CPU36により補助記憶装置34から読み出された実行プログラム等を格納する。なお、メモリ装置35は、RAMやROM(Read Only Memory)等からなる。
【0063】
CPU36は、例えばOS(Operating System)等の制御プログラム、及びメモリ装置35等に格納されている実行プログラム、処理プログラム実行手段14等が有するアプリケーション処理プログラム等に基づいて、各種演算や各ハードウェア構成部とのデータの入出力等、コンピュータ全体の処理を制御して、診断修復処理における各処理を実現することができる。なお、プログラムの実行中に必要な各種情報等は、補助記憶装置34から取得することができ、また実行結果等を格納することもできる。
【0064】
ネットワーク接続装置37は、通信ネットワーク等と接続することにより、実行プログラム等を通信ネットワークに接続されている外部装置等から取得(ダウンロード)したり、プログラムを実行することで得られた実行結果又は本発明における実行プログラム自体を外部装置等に提供することができる。また、ネットワーク接続手段37は、通信ネットワーク等を介して外部装置から、本発明における診断修復処理を実施するために必要な各種データ(例えば、構造体定義データ21等)を取得することができる。
【0065】
上述したようなハードウェア構成により、本発明における診断修復処理を実行することができる。また、プログラムをインストールすることにより、汎用のパーソナルコンピュータ等で本発明における診断修復処理を容易に実現することができる。
【0066】
<診断修復処理手順>
次に、本実施形態における診断修復処理手順の一例について、フローチャートを用いて説明する。図4は、診断修復処理手順の一例を示すフローチャートである。図4において、診断修復処理は、上述したアプリケーション処理プロブラム等を用いて処理が行われる。
【0067】
まず、診断修復処理は、データ書込関数14aを呼び出し、予め設定されたメモリ11内の複数のデータ領域に対して、所定のデータを所定の形式で書き込む処理を実行する(S01)。このとき、所定の形式とは、例えば上述したように、そのままのデータ(正データ)、正データの反転データ、正データに所定のパターンを付加したパターンデータ等から任意に選択される。
【0068】
次に、診断修復処理は、データ読込関数を呼び出して対応する処理を実行する(S02)。具体的には、各データ領域のデータを読み出して照合により一致を確認する。ここで、診断修復処理は、照合結果に基づくデータ読込関数の関数値が正常終了であるか否かを判断する(S03)。なお、S03の処理では、例えば「正常終了であるか」、「データ修復処理を行うか」、「異常終了であるか」が判断される。
【0069】
診断修復処理は、S03の処理において、「データ修復処理を行う」と判断された場合、所定のデータ修復を行い、修復したデータをメモリ11内の所定のデータ領域に記憶するデータ修復処理を行う(S04)。なお、所定のデータ領域とは、照合の結果が一致しなかったデータ領域のみであってもよく、全データ領域であってもよい。
【0070】
また、S03の処理において、「正常終了である」と判断された場合、又は、上述したS04の処理が終了した場合には、予め設定された少なくとも1つのアプリケーション処理プログラムを実行する所定のアプリケーション処理を行う(S05)。また、その処理結果を照合処理データとして、例えば実行した各処理を識別するための「処理番号」と、「照合処理データ」と、「データ修復の有無」とを含む情報を照合データファイル15に書き込む(S06)。
【0071】
その後、診断修復処理は、例えば多重化された他の診断修復装置における所定の処理の結果が書き込まれた照合処理データファイルとの照合処理を行う(S07)。なお、本実施形態では、S07の処理を行わなくてもよい。また、診断修復処理は、上述するS03の処理において、「異常終了である」と判断された場合、その旨をユーザ等に通知する所定の異常処理を行う(S08)。また、本実施形態では、メモリのハードエラーをデータ読込関数14bの実行時等に検知した場合、メモリハードエラーに対応する所定の異常処理等を行う。
【0072】
ここで、上述した照合データファイル15に書き込まれる「処理番号」とは、例えば処理プロブラム毎に付与された診断修復装置(CPU)内で一意の番号であり、例えば多重化された2つの診断修復装置(CPU1とCPU2)において、同一の処理を行う処理プログラムに対しては、同一の処理番号が付与される。また、上述した「照合処理データ」は、所定のアプリケーション処理の結果として生成されたデータ等を示す。更に、上述したデータ修復処理における「データ修復の有無」の判断は、例えば実際にデータ修復を行った場合に、データ修復ありを示すフラグや文字、識別情報等をセットする。
【0073】
<データ書込関数14aの処理手順>
次に、上述したデータ書込関数の処理手順例について、フローチャートを用いて説明する。図5は、データ書込関数の処理手順の一例を示すフローチャートである。また、図6は、図5のデータ書込関数処理手順に対応するデータの書き込みの一例を示す図である。
【0074】
ここで、本実施形態におけるデータ書込関数14aのパラメータは、書込データ名と書込データである。以下の説明では、関数の記述例として、例えば「rinf=wsdat(a[3]=20)」の場合を示す。これは、書込データ名が、後述する図8(b)で定義したように整数型aの3番目(相対値)、書込データが20であることを示している。更に、rinfは関数値であるが、本実施形態におけるデータ書込関数14aでは使用しない。
【0075】
なお、本実施形態では、書込データ名と書込データとを指定する例を記載しているが、本発明においてはこれに限定されるものではなく、他の関数を用いて、例えば書込アドレスが連続したデータを書込先頭相対アドレスと、書込データバイト数と、書込データとをパラメータとして、各データを関連付けて一括で書き込むこともできる。
【0076】
図5の例において、データ書込関数14aは、データ管理テーブル12と構造体定義ファイル13とを読み込み、書込先頭アドレスを計算する(S11)。なお、S11の処理における計算例は、例えば「書込先頭アドレス=データ領域1先頭アドレス+書込データ名先頭アドレス+(相対値−1)×データ名バイト数」のような式を用いて算出することがきるが、本発明においてはこれに限定されるものではない。
【0077】
次に、データ書込関数14aは、パラメータのデータを構造体定義ファイル13のデータ名に対応するバイト数分書き込む(S12)。例えば、整数型の場合には、2バイト書き込まれる。
【0078】
次に、データ書込関数14aは、データ管理テーブル12から「データ領域2」の先頭アドレスを読み込み、構造体定義ファイル13から書込先頭アドレスを計算する(S13)。S13の処理における計算は、例えば上述したS11における処理の計算に対してデータ領域先頭アドレスが変わるのみであり、具体的には、「書込先頭アドレス=データ領域2先頭アドレス+書込データ名先頭アドレス+(相対値−1)×データ名バイト数」のような式を用いて算出することができるが、本発明においてはこれに限定されるものではない。
【0079】
次に、データ書込関数14aは、書込データに例えば16進数ffffのEOR演算を付加し(S14)、その付加したデータ(反転データ)を対応するデータ型のバイト数で書き込む(S15)。そのとき書き込むアドレスは、上述したS13の処理で計算したアドレスに書き込む。
【0080】
次に、データ書込関数14aは、データ管理テーブル12から「データ領域3」の先頭アドレスを読み込み、構造体定義ファイル13から書込先頭アドレスを計算する(S16)。なお、ここでの計算は、例えば上述したS01の処理での計算と同様にデータ領域先頭アドレスが変わるのみである。具体的には、「書込先頭アドレス=データ領域3先頭アドレス+書込データ名先頭アドレス+(相対値−1)×データ名バイト数」のような式を用いて算出することができるが、本発明においてはこれに限定されるものではない。
【0081】
次に、データ書込関数14aは、書込データに例えば所定のパターンである16進数aaaaのEOR演算を付加し(S17)、その付加したデータ(パターンデータ)をS16の処理にて計算されたアドレスから対応するデータ型のバイト数で書き込む(S18)。上述した処理により、図6に示すように、先頭相対アドレスからa[3]の領域に整数型2バイト×40のデータが書き込まれる。
【0082】
<データ管理テーブル12について>
ここで、上述したデータ管理テーブル12の具体例について図を用いて説明する。図7は、データ管理テーブルの一例を示す図である。図7に示すデータ管理テーブルは、項目として、例えば「番号」、「名称」等を有しているが、本発明においてはこれに限定されるものではない。
【0083】
データ管理テーブル12は、メモリ11内に設定された複数のデータ領域が「番号」で識別され、各番号毎に、データ書込関数14a及びデータ読込関数14b内で使用されるメモリ11内の各データ領域の先頭アドレスが格納される。なお、先頭アドレスが変わる場合には、対象のデータ領域のアドレスが更新される。
【0084】
<構造体定義ファイル13について>
次に、上述した構造体定義ファイル13の具体例について図を用いて説明する。図8は、構造体定義ファイルの一例を示す図である。なお、図8(a)は、構造体定義データ21を示し、図8(b)は、図8(a)の構造体定義データ21から得られる構造体定義ファイル13を示し、図8(c)は、メモリ割り付けの一例を示している。
【0085】
図8(a)に示す構造体定義データ21は、例えばC言語を使用する場合の構造体定義データ21の例を示している。ここで、「char」は文字型であり1文字1バイトで構成されている。また、「int」は、整数型であり1データ2バイトで構成されている。また「long」は、倍長整数型であり1データ4バイトで構成されている。また、「double」は、倍精度実数型であり1データ8バイトで構成されている。
【0086】
なお、各型(例えば、整数型等)のデータ名は、複数設定することもできる。また、[n]は、データ領域がnデータ分であることを示している。
【0087】
図8(b)に示す構造体定義ファイル13は、図1に示すデータ書込関数14a及びデータ読込関数14bの何れか、又は、両方の関数からアクセスできる共通領域に配置され、例えば「データ名」、「当該データ名のバイト数」、「当該データ名の先頭の相対アドレス」等を管理する。なお、図8(b)に示す構造体定義ファイル13の項目としては、例えば「データ名」、「バイト数」、「先頭相対アドレス」等があるが、本発明においてはこれに限定されるものではない。
【0088】
本実施形態では、図8(a)に示す構造体定義データ21の入力し、各データをテーブルに変換して、図8(b)に示す構造体定義ファイル13が構築される。
【0089】
図8(c)では、構造体定義ファイル13をメモリ11へ割り付けした例を示している。ここで、上述した図1の例では、メモリ11内のデータ領域は3つあるため、同じ領域割り付けがメモリ11内の3か所に所定の形式(例えば、文字型、整数型、倍長整数型、倍精度実数型等のデータタイプやデータタイプに対応するバイト数等)で設定される。
【0090】
<データ読込関数14bの処理手順>
次に、上述したデータ読込関数14bの処理手順例についてフローチャートを用いて説明する。図9は、データ読込関数の処理手順の一例を示すフローチャートである。
【0091】
ここで、本実施形態におけるデータ読込関数14bのパラメータは、読込データ名と読込レジスタ名である。また、関数値は、例えば「正常」、「異常」、「データ修復」の3種類である。以下の説明では、関数の記述例として、「rinf=rsdat(b[5],x)」の場合を示す。これは、読込データ名が、上述した図8で定義したように倍長整数型bの5番目(相対値)、読込データ格納領域がxであることを示す。また、rinfは関数値であるが、本実施形態におけるデータ読込関数14bでは使用しない。
【0092】
なお、本実施形態では、読込データ名と読込レジスタ名とを指定する例を記載しているが、本発明においてはこれに限定されるものではなく、他の関数を用いて、例えば読込アドレスが連続したデータを読込先頭相対アドレスと、読込データバイト数と、読込データ領域とをパラメータとして、各データを関連付けて一括して読み込むこともできる。
【0093】
図9の例において、データ読込関数14bは、データ管理テーブル12と構造体定義ファイル13とを読み込み、データ領域1、2、3の読込先頭アドレスを計算する(S21)。なお、S21の処理における計算例は、例えば「読込先頭アドレス1=データ領域1先頭アドレス+読込データ名先頭アドレス+(相対値−1)×データ名バイト数」、「読込先頭アドレス2=データ領域2先頭アドレス+読込データ名先頭アドレス+(相対値−1)×データ名バイト数」、「読込先頭アドレス3=データ領域3先頭アドレス+読込データ名先頭アドレス+(相対値−1)×データ名バイト数」のような式を用いて算出することができるが、本発明においてはこれに限定されるものではない。
【0094】
次に、データ読込関数14bは、読込アドレス1,2,3から、各データ領域に書き込まれているデータを所定の読込データバイト数で読み込む(S22)。このときのそれぞれの読込データを、便宜上データ1,2,3とする。次に、データ読込関数14bは、データ2を16進数ffff、データ3を所定のパターンデータ(16進数aaaa)でEOR演算する(S23)。このときのそれぞれのデータを、便宜上データa,データbとする。具体的には、例えば「データa=“データ2” EOR “16進数ffff”」、「データb=“データ3” EOR “16進数aaaa”」の演算を行う。上述の処理は、データ書込関数14aにより、データ領域2(データ2)には正データに対して16進数ffffを付加した反転データが書き込まれ、データ領域3(データ3)には正データに対して16進数aaaaを付加したパターンデータが書き込まれているため、これらのデータを付加前のデータに戻すために、同一の付加データを用いてEOR演算を行う。
【0095】
なお、上述したデータ書込関数14aで付加データをEOR演算以外の演算手法で付加した場合、データ読込関数14bは、その付加データの内容や演算手法等に対応させて、データ2及びデータ3が付加前のデータに戻るような付加データや演算手法を用いて処理が行われる。
【0096】
次に、データ読込関数14bは、データ1と、データa,bとを照合し、データの一致を確認する(S24)。ここで、3つのデータが一致しているか否かを判断し(S25)、一致していない場合(S25において、NO)、次に、2つのデータが一致しているか否かを判断する(S26)。
【0097】
ここで、データ読込関数14bは、2つのデータが一致している場合(S26において、YES)、当該一致データを読込データの正常データとする(S27)。
【0098】
次に、データ読込関数14bは、正常データを不一致データのアドレスに書き込む(S28)。ここで、例えばキャシュメモリを使用している場合には、キャッシュメモリのみが更新されるため、キャッシュメモリをスルーして、不一致データのアドレスに書き込むようにする。つまり、上述したキャッシュメモリをスルーするとは、例えばキャッシュメモリとメモリ11内の所定のデータ領域の両方に正常データを書き込むことを意味する。
【0099】
次に、データ読込関数14bは、当該書込データのアドレスからデータを読み込む(S29)。なお、この場合にもキャシュメモリをスルーする。ここで、上述したキャッシュメモリをスルーするとは、例えばキャッシュメモリからではなく、メモリ11内の所定のデータ領域からデータを読み込むことを意味する。
【0100】
次に、書込データと読込データとが一致しているか否かを判断し(S30)、一致している場合(S30において、YES)、メモリデータが修復されたと判断し、発生したエラーはソフトエラーと判断する。その後、データ読込関数14bは、関数値に「データ修復」を設定し(S31)、関数の処理を終了する。
【0101】
また、データ読込関数14bは、S30の処理において、書込データと読込データとが一致していない場合(S30において、NO)、S28におけるリライト処理でもデータが修復しないため、ハードエラーと判断し、関数値に「異常」を設定し(S32)、関数を終了する。なお、データ読込関数14bは、S26の処理において、2つのデータが一致していない場合(S26において、NO)、3つ全てのデータが一致していないことになるため、エラーと判断し、関数値に「異常」を設定する(S32)。
【0102】
また、データ読込関数14bは、上述したS25の処理において、3つのデータが一致する場合(S25において、YES)、関数値に「正常終了」を設定し、データ1を正常データとし(S33)、関数の処理を終了する。
【0103】
<照合処理手順>
次に、上述した照合処理手順の一例についてフローチャートを用いて説明する。図10は、照合処理手順の一例を示すフローチャートである。図10に示す照合処理は、例えばある診断修復装置10(CPU)での一連の処理シーケンスが完了した時点で起動する。したがって、一定周期の起動で一連の処理シーケンスを行うシステムでは、同様に一定周期で照合処理が起動する。
【0104】
ここで、以下の説明では、照合先CPUをCPU1とし、照合元CPUをCPU2とし、各照合データファイルには、所定のアプリケーション処理を実施した今回分と前回分の処理結果(今回データ、前回データ)が存在するものとする。
【0105】
また、本実施形態において、例えば照合元CPU(CPU2)でデータ修復をした場合には、照合先CPU(CPU1)へ当該処理番号と照合処理データとを送信し、照合を依頼する。また、本実施形態において、例えば照合先CPU(CPU1)が照合失敗と判断した場合には、照合元CPU(CPU2)で所定の異常処理を行う。
【0106】
また、本実施形態において、照合先CPU(CPU1)は、照合元CPU(CPU2)から照合データ(データ修復をした処理番号と照合処理データ)を受信し、その受信した照合データから所定の照合処理を行い、照合成功/照合失敗を照合元CPU(CPU2)に送信する。この場合、照合先CPU(CPU1)は、正常であるため、異常処理は行わない。
【0107】
ここで、CPU1とCPU2とは、互いに照合先と照合元とになり得るため、照合元と照合先との両方のCPUにて照合処理が行われることになる。なお、本実施形態では、これに限定されるものではなく、例えば予め設定したCPUのみで照合処理を行ってもよい。以下の説明では、照合元と照合先との両方の機能を持つ照合処理手順について説明する。
【0108】
まず、照合処理は、照合送信データを作成する(S41)。具体的には、例えば照合データファイル15のデータ修復ありのアプリケーション処理番号と当該アプリケーション処理番号の照合処理データとで照合先のCPUへ送信する伝文(照合データ)を作成する。
【0109】
次に、照合処理は、照合先のCPUへ照合データを送信する(S42)。なお、メモリの修復がない場合には、アプリケーション処理番号を0とし、照合処理データを空欄として送信する。なお、本実施形態では、アプリケーション処理番号が0の場合に、照合処理データを送信しなくてもよい。
【0110】
次に、照合処理は、照合元のCPUから照合データを受信する(S43)。なお、受信した伝文(照合データ)の構成は、送信した伝文と同じく、例えば照合データファイルのデータ修復ありのアプリケーション処理番号及び照合処理データであり、データ修復がない場合にはアプリケーション処理番号が0である。
【0111】
ここで、照合処理は、照合元での修復なし、すなわち処理番号が0(処理番号=0)であるか否かを判断する(S44)。照合処理は、処理番号が0でない場合(S44において、NO)、照合データファイル15の今回データの処理番号及び当該処理番号の照合処理データに、受信したアプリケーション処理番号及び照合処理データと一致するものがあるか否かを判断する(S45)。照合処理は、一致するものがない場合(S45において、NO)、照合データファイル15の前回データの処理番号及び当該処理番号の照合処理データに、受信したアプリケーション処理番号及び照合処理データが一致するものがあるか否かを判断する(S46)。
【0112】
ここで、照合処理は、一致するものがある場合(S46において、YES)、S44の処理において処理番号=0である場合(S44において、YES)、又はS45の処理において、照合処理データが一致する場合(S45において、YES)、照合成功を照合元CPUへ送信する(S47)。また、照合処理は、S46の処理において、一致しない場合(S46において、NO)、照合失敗を照合先CPUへ送信する(S48)。
【0113】
次に、照合処理は、照合結果として照合成功又は照合失敗のデータを照合先から受信し(S49)、受信データとの照合が失敗であるか否かを判断する(S50)。ここで、照合失敗である場合(S50において、YES)、その旨をユーザ等に通知する所定の異常処理を行う(S51)。異常処理では、メモリ修復の検証が不成功となったため、当該状況に対応して予め設定された異常処理を行う。また、照合処理は、照合が成功した場合(S50において、NO)、照合処理を終了する。
【0114】
<照合の具体例と照合データファイル15について>
次に、本実施形態における照合の具体例と照合データファイル15の具体例について図を用いて説明する。図11は、照合先の処理が先行している場合の照合処理を説明するための図である。また、図12は、照合先の処理が遅行している場合の照合処理を説明するための図である。また、図13は、照合データファイルの一例を示す図である。
【0115】
ここで、図11及び図12は、時間軸における各処理の通信タイムチャートを示しており、例えば、「処理番号1→処理番号2→処理番号3→照合処理」を1つのサイクルとして、照合元CPU(CPU2)で2回(A1,A2)及び照合先CPU(CPU1)で2回(B1,B2)の処理が、同期と取りながら繰り返し処理を行っている。また、図11及び図12では、一例として「(a)処理番号2の入力に変化がない場合」と、「(b)処理番号2の入力に変化がある場合」とを示している。
【0116】
また、図13に示す照合データファイル15は、複数の照合データの履歴情報が蓄積されている。例えば、図13(a)では、今回データを示し、図13(b)は、前回データを示しているが、本発明においてはこれに限定されるものではなく、更に過去のデータを蓄積しておいてもよい。また、今回データと前回データとの違いは、単に処理回数の違いに限定されるものではなく、例えば上述したダイバース化による処理の違い等も含む。図11及び図12の例では、A1,B1が前回データ(図13(b))に対応し、A2,B2が今回データ(図13(a))に対応する。
【0117】
図13に示す照合データファイル15の項目としては、例えば「処理番号」、「照合処理データ」、「データ修復」等があるが、本発明においてはこれに限定されるものではない。例えば、図13(a)に示す今回データは、照合先CPU(CPU1)の最新のデータを格納する。また、処理番号は、CPUのアプリケーション処理単位に一意に付加した番号である。同一処理番号では、CPU1とCPU2とが同じデータを入力し、処理結果となるようにアプリケーション処理として所定の処理を実行させる。このとき、上述したダイバース化によるアプリケーション処理を行ってもよい。
【0118】
また、照合データファイル15には、各アプリケーション処理の時系列の順番に処理番号を格納する。照合処理データは、当該処理番号のアプリケーション処理の処理結果を格納する。したがって、例えば、処理番号2において「1+2=3」の演算処理(所定のアプリケーション処理プログラム)を行った場合には、処理番号2の照合処理データは3となる。また、照合データファイル15の「データ修復」の項目には、当該処理をするためのメモリデータでデータ修復が発生したか否かの有無を格納する。
【0119】
また、図13(b)に示す前回データは、照合先CPU(CPU1)で一連の処理シーケンスが完了し、上述した図10に示すような照合処理が完了した時点で図13(a)に示す今回データをコピーしたものである。この時点で図10(a)の今回データの領域は初期化される。ここで、処理番号は、照合先CPU(CPU1)と照合元CPU(CPU2)とで周期的に同一処理をしているため、両方のCPUとも同じ番号が周期的に繰り返される。
【0120】
次に、照合の具体例について説明する。図11及び図12に示すCPU1及びCPU2は、上述した診断修復装置10の機能を有し、互いに照合先にも照合元にもなり得る。ここで、照合先CPU(CPU1)と照合元CPU(CPU2)とは、時間管理手段18を設けてお互いの処理タイミングを同期させていたとしても各CPUの負荷や処理性能等の影響により完全に同期を取ることは困難である。そのため、本実施形態では、例えば照合先CPU(CPU1)が照合元CPU(CPU2)より先行している場合と遅行している場合とでそれぞれの処理を行う。
【0121】
まず、図11に示すように、照合先CPU(CPU1)が照合元CPU(CPU2)より先行し、A1で処理番号2のメモリ修復があったとしても、メモリ修復により処理番号2の内容に変化がない場合(図11の(a))、照合先CPU(CPU1)のB2における照合処理では、処理番号2についての入力の変化がないため、A1の照合受信データとB2の今回データとが一致する。
【0122】
また、A1で処理番号2のメモリ修復があった後に処理番号2の入力変化がある場合(図11の(b))、照合先CPU(CPU1)のB2における照合処理では、処理番号2の入力データに変化があるため、A1の照合受信データと、CPU1の今回データ(B2)とは一致しない。この場合、本実施形態では、A1の照合受信データと、CPU1の前回データ(B1)とを比較する。そして、図11(b)の例では、その場合にお互いのデータが一致する。このように、本実施形態では、照合処理に対して前の履歴情報(例えば、前回データ等)を利用することで、今回データ同士(1回)の照合エラーで直ちにシステムを終了させることなく、拡張した照合処理を実現することができる。これにより、本実施形態では、データ処理の安全性及び継続性を向上させたリアルタイムな診断修復処理を実現することができる。
【0123】
また、図12に示すように、照合先CPU(CPU1)が照合元CPU(CPU2)より遅行している場合において、A2の処理番号2のメモリ修復があったとしても、メモリ修復により処理番号2に変化がない場合(図12(a))でも、A2の照合受信データと、CPU1の今回データ(B2)とが一致する。
【0124】
また、A2で処理番号2のメモリ修復があった後に処理番号2の入力変化がある場合(図12(b))、A2の処理番号2では、入力後にメモリ修復が行われて、処理番号2の内容が修復されているため、A2の照合受信データと、CPU1の今回データ(B2)とが一致する。つまり、図12の例において、メモリ修復成功の場合には、処理番号2の照合処理データは、今回データと一致することになる。
【0125】
なお、上述した本実施形態では、3つのデータ領域に対して照合処理を行い、二重化したCPU(診断修復装置10)を用いて処理を行っているが、本発明においてはこれに限定されるものではなく、CPUを三重以上に多重化し、多重化したものについてそれぞれ照合処理を行って、多数決処理等により異常の有無を診断するようにしてもよい。
【0126】
上述したように本発明によれば、メモリを用いたデータ処理の安全性及び継続性を向上させることができる。具体的には、本発明は、RAM等のメモリに対するソフトエラーを診断・検出し、読み込みデータの修復とメモリ内のデータを修復する。
【0127】
また、本発明では、照合が一致しない場合に、当該タイミングで予め所定の形式で書き込んだデータを読み込み、それらを多数決で修復データを判定し、読み込みデータを修復すると共に、メモリに再書き込みをすることでソフトエラーを解消する。
【0128】
したがって、本発明によれば、ECCハードウェアが必要なく、低コストでソフトエラーの検出及び修復をすることができる。また、本発明では、実際に所定の処理を行うタイミングでリアルタイムにソフトエラーの検出及び修復ができ、所定の処理に正しいデータを使用することができる。また、本発明では、ECCで対応できない複数ビットのエラー検出と修復を行うことができる。
【0129】
また、本発明では、修復後のアプリケーション処理結果を多重化システム間で照合することで、メモリデータに余分なチェックサム等の追加処理をすることなくソフトエラー修復の検証をすることができ、リアルタイムにデータ書込み、読込みが可能となる。また、本発明では、修復後のアプリケーション処理結果を多重化システム間で照合することで、メモリのソフトエラーと同時に発生したメモリ以外のCPUやレジスタ等のソフトエラーを検出することができる。
【0130】
また、本発明では、二重系以上の多重化システムにより修復データの正確性を照合により検証することができる。更に、本発明では、照合処理に対して、履歴情報(例えば、前回データ等)を利用することで、今回データ同士の照合エラーで直ちにシステムを終了させることなく、拡張した照合処理を実現することができる。これにより、本発明では、データ処理の安全性及び継続性を向上させたリアルタイムな診断修復処理を実現することができる。
【0131】
また、本発明では、照合もアプリケーション処理単位で行うことにより、多重化システム間で同一のアプリケーション処理を行う必要がなく、多重化システム間のアプリケーション処理のダイバーシティを確保することができる。したがって、本発明では、ソフトエラーに対するロバスト性が向上し、システムの安全性と可用性とを向上させることができる。
【0132】
以上本発明の好ましい実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
【符号の説明】
【0133】
10 診断修復装置
11 メモリ(記憶手段)
12 データ管理テーブル
13 構造体定義ファイル
14 処理プログラム実行手段
15 照合データファイル
16 照合処理手段
17 通信手段
18 時間管理手段
21 構造体定義データ
31 入力装置
32 出力装置
33 ドライブ装置
34 補助記憶装置
35 メモリ装置
36 CPU(Central Processing Unit)
37 ネットワーク接続装置
38 記録媒体

【特許請求の範囲】
【請求項1】
予め設定されたアプリケーションによる処理を実行し、実行された処理結果を比較してデータの診断及び修復を行う診断修復装置において、
所定のデータを3以上の複数のデータ領域に記憶する記憶手段と、
前記所定のデータを前記3以上の複数のデータ領域に異なる形式で書き込み、前記アプリケーションの実行時に前記3以上の複数のデータ領域にそれぞれ書き込んだデータを読み込んで照合し、照合の結果が不一致であった場合に所定の修復を行い、修復後のデータを用いて前記アプリケーションを実行する処理プログラム実行手段と、
前記アプリケーションを実行した結果と、少なくとも1つの他の診断修復装置で前記アプリケーションを実行した結果とを照合する照合処理手段とを有することを特徴とする診断修復装置。
【請求項2】
前記記憶手段は、
前記異なる形式として、入力されたデータ、前記データの反転データ、及び前記データと所定のパターンとの論理演算により得られるパターンデータのうち、少なくとも2つの形式を前記3以上の複数のデータ領域に書き込むことを特徴とする請求項1に記載の診断修復装置。
【請求項3】
前記処理プログラム実行手段は、
前記所定の修復処理として、読み出した3以上の複数のデータの多数決判定により正常データを決定し、決定された正常データを前記データ領域に書き込むことを特徴とする請求項1又は2に記載の診断修復装置。
【請求項4】
前記照合処理手段は、
前記アプリケーションを実行した結果と、前記アプリケーションを実行するタイミングに同期させて前記他の診断修復装置で前記アプリケーションを実行した結果とを照合し、照合が不一致であった場合に、前記アプリケーションを前回実行して得られた結果を用いて照合を行うことを特徴とする請求項1乃至3の何れか1項に記載の診断修復装置。
【請求項5】
前記プログラム実行手段は、所定のダイバース診断手法により設定された条件で前記アプリケーションを複数回実行し、
前記照合処理手段は、前記複数回実行された結果に基づいて照合を行うことを特徴とする請求項1乃至4の何れか1項に記載の診断修復装置。
【請求項6】
予め設定されたアプリケーションによる処理を実行し、実行された処理結果を比較してデータの診断及び修復を行う診断修復方法において、
所定のデータを記憶手段の3以上の複数のデータ領域に記憶する記憶ステップと、
前記所定のデータを前記3以上の複数のデータ領域に異なる形式で書き込み、前記アプリケーションの実行時に前記3以上の複数のデータ領域にそれぞれ書き込んだデータを読み込んで照合し、照合の結果が不一致であった場合に所定の修復を行い、修復後のデータを用いて前記アプリケーションを実行する処理プログラム実行ステップと、
前記アプリケーションを実行した結果と、少なくとも1つの他の診断修復方法で前記アプリケーションを実行した結果とを照合する照合処理ステップとを有することを特徴とする診断修復方法。
【請求項7】
前記記憶ステップは、
前記異なる形式として、入力されたデータ、前記データの反転データ、及び前記データと所定のパターンとの論理演算により得られるパターンデータのうち、少なくとも2つの形式を前記3以上の複数のデータ領域に書き込むことを特徴とする請求項6に記載の診断修復方法。
【請求項8】
前記処理プログラム実行ステップは、
前記所定の修復処理として、読み出した3以上の複数のデータの多数決判定により正常データを決定し、決定された正常データを前記データ領域に書き込むことを特徴とする請求項6又は7に記載の診断修復方法。
【請求項9】
前記照合処理ステップは、
前記アプリケーションを実行した結果と、前記アプリケーションを実行するタイミングに同期させて前記他の診断修復方法で前記アプリケーションを実行した結果とを照合し、照合が不一致であった場合に、前記アプリケーションを前回実行して得られた結果を用いて照合を行うことを特徴とする請求項6乃至8の何れか1項に記載の診断修復方法。
【請求項10】
前記プログラム実行ステップは、所定のダイバース診断手法により設定された条件で前記アプリケーションを複数回実行し、
前記照合処理ステップは、前記複数回実行された結果に基づいて照合を行うことを特徴とする請求項6乃至9の何れか1項に記載の診断修復方法。
【請求項11】
コンピュータを、
請求項1乃至5の何れか1項に記載の診断修復装置が有する各手段として機能させるための診断修復プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2013−109532(P2013−109532A)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2011−253301(P2011−253301)
【出願日】平成23年11月18日(2011.11.18)
【出願人】(000005234)富士電機株式会社 (3,146)
【Fターム(参考)】