(57)【特許請求の範囲】
【請求項１】
エラー検出プログラム及びデータを格納した情報記憶装置と、
前記エラー検出プログラムを演算実行する中央処理装置とを備えた情報処理システムにおいて、
前記情報記憶装置の中の監視対象領域にあるデータの整合性を確認するための第一チェック値を算出する第一チェック値算出手段と、
第一チェック値を算出している途中で監視対象領域にあるデータを書き換える場合にその書き換えによる第一チェック値の変化を表す情報を作成する変化情報作成手段と、
第一チェック値の算出が完了したときに第一チェック値及び前記変化情報作成手段により得られる第一チェック値の変化を表す情報から第二チェック値を繰り返し算出する第二チェック値算出手段と、
前記第二チェック値算出手段で得られた第二チェック値とそれ以前に得られた第二チェック値とを比較することによりデータエラーを判定するデータエラー判定手段とを備えることを特徴とする情報処理システム。
【請求項２】
データエラー判定を開始する時点で監視対象領域に格納されているデータの前記第二チェック値が予めわかっている場合、前記データエラー判定手段において比較する情報は、予め分かっている前記第二チェック値と、前記第二チェック値算出手段により得られる第二チェック値であることを特徴とする請求項１記載の情報処理システム
【請求項３】
エラー検出プログラム及びデータを格納した情報記憶装置と、前記エラー検出プログラムを演算実行する中央処理装置とを備えた情報処理システムのデータエラーを検出するデータエラー検出方法において、
前記情報記憶装置の中の監視対象領域にあるデータの整合性を確認するための第一チェック値を算出する第一チェック値算出ステップと、
第一チェック値を算出している途中で監視対象領域にあるデータを書き換える場合にその書き換えによる第一チェック値の変化を表す情報を作成する変化情報作成ステップと、
第一チェック値の算出が完了したときに第一チェック値及び前記変化情報作成ステップにより得られる第一チェック値の変化を表す情報から第二チェック値を繰り返し算出する第二チェック値算出ステップと、
前記第二チェック値算出ステップで得られた第二チェック値とそれ以前に得られた第二チェック値とを比較することによりデータエラーを判定するデータエラー判定ステップとを備えることを特徴とするデータエラー検出方法。
【請求項４】
データエラー判定を開始する時点で監視対象領域に格納されているデータの前記第二チェック値が予めわかっている場合、前記データエラー判定ステップにおいて比較する情報は、あらかじめ分かっている前記第二チェック値と、前記第二チェック値算出ステップにより得られる第二チェック値であることを特徴とする請求項３記載のデータエラー検出方法。
【請求項５】
エラー検出プログラム及びデータを格納した情報記憶装置と、前記エラー検出プログラムを演算実行する中央処理装置とを備え、情報処理システムとして機能させるためのコンピュータにおいて、
前記情報記憶装置の中の監視対象領域にあるデータの整合性を確認するための第一チェック値を算出する第一チェック値算出手段と、
第一チェック値を算出している途中で監視対象領域にあるデータを書き換える場合にその書き換えによる第一チェック値の変化を表す情報を作成する変化情報作成手段と、
第一チェック値の算出が完了したときに第一チェック値及び前記変化情報作成手段により得られる第一チェック値の変化を表す情報から第二チェック値を繰り返し算出する第二チェック値算出手段と、
前記第二チェック値算出手段で得られた第二チェック値とそれ以前に得られた第二チェック値とを比較することによりデータエラーを判定するデータエラー判定手段として機能させるためのプログラム。
【請求項６】
データエラー判定を開始する時点で監視対象領域に格納されているデータの前記第二チェック値が予めわかっている場合、前記データエラー判定手段において比較する情報は、予め分かっている前記第二チェック値と、前記第二チェック値算出手段により得られる第二チェック値であることを特徴とする請求項５記載のプログラム。
【請求項７】
請求項５または請求項６記載のプログラムを格納することを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データを冗長化せずに情報記憶装置におけるビットエラーを検出する情報処理システム、データエラー検出方法、プログラム及び記憶媒体に関する。
【背景技術】
【０００２】
コンピュータの主記憶装置や補助記憶装置等の情報記憶装置には、ビット化け等のデータエラーが発生する場合がある。データエラーを検出する方法としては、データに対するチェック値を算出する方法と、データを冗長化して整合性チェックを行う方法との大きく二つの方法がある。
【０００３】
前者はデータに対するチェックサムやCRCコード等のチェック値を算出してデータに付加し、その後に再びデータからチェック値を算出して両者を比較することによりデータの整合性をチェックする方法である。また、後者の例としては、エラー検出訂正システムを搭載したメモリ装置として、読み出しデータから求められたシンドロームに基づいて有限体要素間の積や和を計算する計算回路を備えてエラー位置探索を行うようにしたものがある（例えば、特許文献１参照）。
【０００４】
（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０-１０８５６９号広報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、データに対するチェック値を算出する方法の場合、チェック値算出中にデータを書き換えることができない。また、データを冗長化して整合性チェックを行う方法の場合は、データを書き換えながらデータの整合性のチェックができるが、データの冗長化が必要であるため、情報記憶装置の本来の記憶容量よりも少ない情報量しか記憶できず、単位情報を保存するのに要するハードウェアコストが冗長化しない場合に比べて高くなる。このように、従来はデータを冗長化せずにデータを書き換えながらデータエラーを検出することができなかった。
【０００７】
本発明の実施形態では、データの冗長化を行わずにデータを書き換えながらデータエラーの検出を行うことができる情報処理システム、データエラー検出方法、プログラム及び記憶媒体を得ることである。
【課題を解決するための手段】
【０００８】
本発明の実施形態の情報処理システムは、エラー検出プログラム及びデータを格納した情報記憶装置と、エラー検出プログラムを演算実行する中央処理装置とを備える。中央処理装置は、情報記憶装置の中の監視対象領域にあるデータの整合性を確認するための第一チェック値を算出する第一チェック値算出手段と、第一チェック値を算出している途中で監視対象領域にあるデータを書き換える場合にその書き換えによる第一チェック値の変化を表す情報を作成する変化情報作成手段と、第一チェック値の算出が完了したときに第一チェック値及び変化情報作成手段により得られる第一チェック値の変化を表す情報から第二チェック値を繰り返し算出する第二チェック値算出手段と、第二チェック値算出手段で得られた第二チェック値とそれ以前に得られた第二チェック値とを比較することによりデータエラーを判定するデータエラー判定手段とを備える。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態１に係る情報処理システムの構成図。
【図２】本発明の実施形態１のエラー検出プログラムを実行処理して実現されるデータエラー検出処理内容を示すフローチャート。
【図３】図２のデータエラー検出処理を実行した場合のデータの変化の一例の説明図。
【図４】本発明の実施形態２に係る情報処理システムの構成図。
【図５】図２に示したフローチャートにおいてチェック値算出のために使用した演算を一般化したデータエラー検出処理内容を示すフローチャート。
【図６】本発明の実施形態３に係る情報処理システムの構成図。
【図７】本発明の実施形態４に係る情報処理システムの構成図。
【図８】本発明の実施形態４に係る情報処理システムの記憶媒体に格納されたエラー検出プログラムの構成図。
【発明を実施するための形態】
【００１０】
（実施形態１）
本発明の実施形態１を説明する。図１は本発明の実施形態１に係る情報処理システムの構成図であり、図１（ａ）はハードウエア構成図、図１（ｂ）は機能構成図である。本発明の実施形態１の情報処理システムは、中央処理装置１、主記憶装置２、情報伝送路３より構成される。主記憶装置２には監視対象領域２１、エラー検出プログラム２２が含まれる。そして、中央処理装置１においてエラー検出プログラムが演算実行されることにより、図１（ｂ)に示す第一チェック値算出手段１１、変化情報作成手段１２、第二チェック値算出手段１３、データエラー判定手段１４の各種機能が実現される。
【００１１】
第一チェック値算出手段１１は、主記憶装置２の中の監視対象領域２１にあるデータの整合性を確認するための第一チェック値を算出するものである。変化情報作成手段１２は、第一チェック値を算出している途中で主記憶装置２の中の監視対象領域２１にあるデータを書き換える場合に、その書き換えによる第一チェック値の変化を表す情報を作成するものである。
【００１２】
また、第二チェック値算出手段１３は、第一チェック値の算出が完了したときに第一チェック値及び変化情報作成手段１２により得られる第一チェック値の変化を表す情報から第二チェック値を繰り返し算出するものである。データエラー判定手段１４は、第二チェック値算出手段１３で得られた第二チェック値と、それ以前に得られた第二チェック値とを比較することにより、データエラーを判定するものである。
【００１３】
すなわち、中央処理装置１は、エラー検出プログラム２２によってデータエラー検出処理を行い、監視対象領域２１で発生するデータエラーを検出する。中央処理装置１と主記憶装置２との間の情報のやり取りは情報伝送路３を介して行われる。図２は実施形態１のエラー検出プログラム２２を実行処理して実現されるデータエラー検出処理内容を示すフローチャートである。
【００１４】
第一チェック値算出手段１１は、図２のステップＳ１０１、ステップＳ１０２、ステップＳ１０６、ステップＳ１０７の処理を行う。変化情報作成手段１２、図２のステップＳ１０３、ステップＳ１０４、ステップＳ１０５の処理を行う。第二チェック値算出手段１３は、図２のステップＳ１０８、ステップＳ１０９、ステップＳ１１０の処理を行う。
【００１５】
ただし、ステップＳ１１０ではｖ−ｆの算出のみを行う。データエラー判定手段１４は、図２のステップＳ１１０、ステップＳ１１１の処理を行う。ただし、ステップＳ１１０についてはステップＳ１１０により算出されたｖ−ｆの計算結果と第二チェック値ｃとの比較処理を行う。
【００１６】
まず、ステップＳ１０１では、第一チェック値ｖ、前方変化値ｆ、後方変化値ｒを０で初期化し、チェック値計算済みアドレスｋをｋ０−１で初期化する。ここで、ｖ、ｆ、ｒは情報処理システム上ではビット列を保持する変数である。初期化に使用する０という値は、状態が０のビット列を表す。ｖ、ｆ、ｒの各変数のビット長は等しいものとする。また、チェック値計算済みアドレスｋは初期値として監視対象領域２１の先頭アドレスｋ０の一つ前のアドレスｋ０−１をとる。
【００１７】
ステップＳ１０２では、監視対象領域２１にデータを書き込むか否かを判定する。書き込む場合はステップＳ１０３に進み、そうでない場合はステップＳ１０６に進む。書き込む場合、書き込み先アドレスをａ、書込む値をｉとする。
【００１８】
ステップＳ１０３では、書き込み先アドレスａがチェック値計算済みアドレスｋよりも大きいか否かを判定する。ａがｋよりも大きい場合はステップＳ１０４に進み、そうでない場合はステップＳ１０５に進む。
【００１９】
ステップＳ１０４では、前方変化値ｆにｆ＋ｉ−ｍａの計算結果を格納する。ここで、ｍａは主記憶装置２のアドレスａに格納されているデータを表す。また、演算子＋は加算を、演算子−は減算を意味し、ｆが表現できる範囲を超えた場合は次に示す例を用いて丸め込むものとする。例えば、ｆが４ｂｉｔの場合は１０進数で０〜１５までの値を表現できるが、ｆ＋ｉ−ｍａの計算結果が１６以上になった場合は１６割った余りをその計算結果とし、負数になった場合は正数になるまで１６を加算して得られる値を計算結果とする。ｆに値を格納した後、ｍａにｉを書き込む。
【００２０】
ステップＳ１０５では、ｒにｒ＋ｉ−ｍａの計算結果を格納する。演算子＋及び−の意味はステップＳ１０４の場合と同じである。ｒに値を格納した後、ｍａにｉを書込む。
【００２１】
ステップＳ１０６ではチェック値計算済みアドレスｋにｋ＋１を格納する。ｋ＋１はｋが指しているアドレスの次のアドレスを意味する。そして、第一チェック値ｖにｖ＋ｍｋの計算結果を格納する。ここで、演算子＋の意味はステップＳ１０４の場合と同じである。
【００２２】
ステップＳ１０７ではチェック値計算済みアドレスｋが終端アドレスｌと等しいか否かを判定する。ｌは監視対象領域２１の終端のアドレスを表す。ｋとｌが等しい場合はステップＳ１０８に進み、そうでない場合はステップＳ１０２に進む。ステップＳ１０８では、第二チェック値ｃに有効な値が格納されているか否かを判定する。
【００２３】
図２に示したフローチャートの処理を実行してから初めてステップＳ１０８を実行する場合は、第二チェック値ｃに有効な値が格納されていないと判定し、ステップＳ１０９に進む。そうでない場合はステップＳ１１０に進む。ただし、ステップＳ１０１を実行する時点で監視対象領域２１の第二チェック値がわかっている場合、つまり、監視対象領域２１の各アドレスに格納されているデータを演算子＋により結び付けて演算した結果がわかっている場合は、その時点でｃに第二チェック値を格納しておき、Ｓ１０８が実行される場合には初回か否かに関わらずｃに有効な値が格納されていると判定し、ステップＳ１１０に進む。ステップＳ１０９では、ｃにｖ−ｆを、ｆにｆ＋ｒを、ｖに０を、ｒに０を、ｋにｋ０−１を格納する処理を順に行う。演算子＋及び−の意味はステップＳ１０４の場合と同じである。
【００２４】
ステップＳ１１０ではｖ−ｆとｃが等しいか否かを判定する。等しい場合はステップＳ１１１に進み、そうでない場合はデータエラー発生と判定する。演算子−の意味はステップＳ１０４の場合と同じである。ステップＳ１１１では、ｆにｆ＋ｒを、ｖに０を、ｒに０を、ｋにｋ０−１を格納する処理を順に行う。演算子＋の意味はステップＳ１０４の場合と同じである。
【００２５】
次に、図３は図２のデータエラー検出処理を実行した場合のデータの変化の一例の説明図である。図３に示した一例は、監視対象領域２１が１２ｂｉｔ、１アドレスあたりのビット数が４ｂｉｔでｖ、ｆ、ｒ、ｋ、ｃのビット長が４ｂｉｔの例であり、それぞれの値は０〜Ｆの１６進数で表されている。
【００２６】
監視対象領域２１の先頭アドレスｋ０は１であり、終端アドレスｌは３である。監視対象領域２１に格納されているデータの初期値は任意でよいが、ここでは、図３の（１）に示したとおりとする。処理は（１）から（１６）まで順に行われ、処理内容と監視対象領域２１の内容、及びｖ、ｆ、ｒ、ｋ、ｃの演算結果をその右側に示している。また、Ｌ１はチェック値計算済みラインである。
【００２７】
（１）は処理開始時であり、図２のステップＳ１０１を実行する。その結果、ｖ、ｆ、ｒ、ｋそれぞれに０が格納される。その後、処理はステップＳ１０２に進む。
【００２８】
（２）は監視対象領域２１のデータを書き換えない場合、つまり、ステップＳ１０２においてＮＯと判定した場合の処理であり、Ｓ１０６を実行する。その結果、ｋには１が格納され、ｖには４が格納される。その後、Ｓ１０７を実行する。ｋが１、ｌが３であるからＳ１０７の次はＳ１０２に進む。なお、チェック値計算済みラインＬ１は、チェック値算出の進捗を表すもので、チェック値計算済みアドレスｋが指し示すアドレスとその次のアドレスの間に引かれるラインである。
【００２９】
（３）は監視対象領域２１のデータを書き換える場合、つまり、ステップＳ１０２においてＹＥＳと判定した場合の処理であり、ステップＳ１０３を実行する。書込み先アドレスａが１、チェック値計算済みアドレスｋが１であるからステップＳ１０３の次はステップＳ１０５に進む。ステップＳ１０５を実行すると、ｒには０＋５−４＝１が格納され、アドレス１の内容は５に書き換えられる。その後、ステップＳ１０２に進む。
【００３０】
（４）は監視対象領域２１のデータを書き換えない場合、つまり、ステップＳ１０２においてＮＯに進んだ場合の処理であり、（２）の場合と同様の処理を行う。その結果、ｋには２が格納され、ｖには０が格納される。その後、ステップＳ１０２に進む。
【００３１】
（５）は監視対象領域２１のデータを書き換えない場合、つまり、ステップＳ１０２においてＮＯと判定した場合の処理であり、ステップＳ１０７までは（２）と同様の処理を行う。その結果、ｋには３が格納され、ｖには３が格納される。ステップＳ１０７では、ｋとｌとが共に３であるため等しいと判定し、ステップＳ１０８に進む。ステップＳ１０８では、第二チェック値ｃに有効な第二チェック値が格納されているか否かを判定する。図３の（１）の処理を開始してからｃには何も格納していないため、ｃに有効な第二チェック値が格納されていないと判定し、ステップＳ１０９に進む。
【００３２】
（６）は、ステップＳ１０９を実行した結果であり、ｃには３−０＝３が、ｆには０＋１＝１がｖ、ｒ、ｋには０が順に格納される。その後、ステップＳ１０２に進む。
【００３３】
（７）は、監視対象領域２１のデータを書き換えない場合、つまり、ステップＳ１０２においてＮＯと判定した場合の処理であり、（２）の場合と同じ処理を行う。その結果、ｋには１が格納され、ｖには５が格納される。
【００３４】
（８）は、監視対象領域２１のデータを書き換える場合、つまり、ステップＳ１０２においてＹＥＳと判定した場合の処理であり、ステップＳ１０３を実行する。書込み先アドレスａが３、チェック値計算済みアドレスｋが１であるからステップＳ１０３の次はステップＳ１０４に進む。ステップＳ１０４を実行すると、ｆには１＋Ｂ−３＝９が格納され、アドレス３の内容はＢに書き換えられる。その後、ステップＳ１０２に進む。
【００３５】
（９）は、監視対象領域２１のデータを書き換えない場合、つまり、ステップＳ１０２においてＮＯと判定した場合の処理であり、（２）の場合と同様の処理を行う。その結果、ｋには２が格納され、ｖには１が格納される。
【００３６】
（１０）は、監視対象領域２１のデータを書き換える場合、つまり、ステップＳ１０２においてＹＥＳと判定した場合の処理であり、（３）の場合と同様の処理を行う。その結果、ｒには８が格納され、アドレス２の内容は４に書き換えられる。
【００３７】
（１１）は、監視対象領域２１のデータを書き換えない場合、つまり、ステップＳ１０２においてＮＯと判定した場合の処理であり、ステップＳ１０８までは（５）と同様の処理を行う。その結果、ｋには３が格納され、ｖにはＣが格納される。ステップＳ１０８では、（６）においてｃに有効な第二チェック値を格納したため、有効な第二チェック値が格納されていると判定し、ステップＳ１１０に進む。ステップＳ１１０では、ｃとｖ−ｆを比較する。ｃが３、ｖ−ｆが３で等しいため、ステップＳ１１１に進む。
【００３８】
（１２）は、ステップＳ１１１を実行した結果であり、ｆには９＋８＝１が、ｖ、ｒ、ｋには０が順に格納される。その後、ステップＳ１０２に進む。
【００３９】
（１３）は、監視対象領域２１のデータを書き換えない場合、つまり、ステップＳ１０２においてＮＯと判定した場合の処理であり、（２）の場合と同様の処理を行う。その結果、ｋには１が格納され、ｖには５が格納される。
【００４０】
（１４）は、監視対象領域２１のデータにデータエラーが発生し、アドレス２の内容が０に変化したことを表す。
【００４１】
（１５）は、監視対象領域２１のデータを書き換えない場合、つまり、ステップＳ１０２においてＮＯと判定した場合の処理であり、（２）の場合と同様の処理を行う。その結果、ｋには２が格納され、ｖには５が格納される。
【００４２】
（１６）は、監視対象領域２１のデータを書き換えない場合、つまり、ステップＳ１０２においてＮＯと判定した場合の処理であり、ステップＳ１１０までは（１１）と同様の処理を行う。その結果、ｋには３が格納され、ｖには０が格納される。ステップ１１０ではｃとｖ−ｆとを比較する。ｃが３、ｖ−ｆがＦであり、値が一致しないため、ステップ１１０のＮＯに進む。つまり、データエラーが発生したと判定する。（１４）においてデータエラーが発生しているため、この判定は正しいものである。
【００４３】
本発明の実施形態１によれば、監視対象領域２１に格納されたデータを書き換えながら、データエラー検出を行うことができる。データの冗長化を行う必要がないため、監視対象領域２１全体に任意の情報を格納することができる。また、特別なハードウェアは不要であり、主記憶装置２と中央演算装置１とを備える情報処理システムにおいて、ソフトウェアによる主記憶装置２のデータエラー検出が可能である。
【００４４】
（実施形態２）
本発明の実施形態２を説明する。図４は本発明の実施形態２に係る情報処理システムの構成図である。この実施形態２は、図１に示した実施形態１に対し、主記憶装置２には、監視対象領域２１−１、２１−２、エラー検出プログラム２２−１、２２−２を設けたものである。
【００４５】
中央処理装置１は、エラー検出プログラム２２−１、２２−２によって監視対象領域２１−１、２１−２で発生するデータエラーを検出する。中央処理装置１と主記憶装置２との間の情報のやり取りは情報伝送路３を介して行われる。エラー検出プログラム２２−１は監視対象領域２１−１のデータエラー検出処理を行う。また、エラー検出プログラム２２−２は監視対象領域２１−２のデータエラー検出処理を行う。この場合、エラー検出プログラム２２−１、２２−２は、それぞれ独立してデータエラー検出処理を行う。
【００４６】
図５は、図２に示したフローチャートにおいてチェック値算出のために使用した演算を一般化したものである。実施形態２において、データエラー検出処理において行う処理は図２に示したものでも良いし、図５に示したものでも良い。以下の説明では、図２に示したフローチャートにおいてチェック値算出のために使用した演算を一般化した図５のフローチャートについて説明する。
【００４７】
図５において、ステップＳ２０１では、第一チェック値ｖ、前方変化値ｆ、後方変化値ｒ、チェック値計算済みアドレスｋをそれぞれｖ０、ｆ０、ｅ、ｋ０−１で初期化する。ここで、ｖ０、ｆ０は、ｖ、ｆが保持可能な任意のビット列を表す。ｖ、ｆ、ｒが保持可能なビット列のビット長は等しいものとする。また、図５では演算子「・」を用いているが、これはｖ、ｆ、ｒが保持可能な任意のビット列ｘ１、ｘ２、ｘ３に対して以下の（１）〜（５）の関係を満たす二項演算を表す。
【００４８】
（１）ｘ１・ｘ２の演算結果はｖ、ｆ、ｒが保持可能なビット列になる。  
（２）ｘ１・（ｘ２・ｘ３）＝（ｘ１・ｘ２）・ｘ３が成り立つ。  
（３）ｘ１・ｅ＝ｘ１となるビット列ｅが存在する（以降、これを単位元と呼ぶ）。  
（４）ｘ１に対してｘ１・ｘ１−１＝ｅとなるビット列ｘ１−１が存在する（以降、これをｘ１に対する逆元と呼ぶ）。  
（５）ｘ１・ｘ２＝ｘ２・ｘ１が成り立つ。
【００４９】
例えば、前述した加算「＋」を演算子「・」に対応させれば上記条件を満たす。この場合、単位元ｅは状態が０のビット列であり、減算ｘ１−ｘ２は、ｘ１・ｘ２−１が対応する。このほか、排他的論理和や、減算（一定の範囲を超えた場合は加算「＋」の場合と同じように丸め込む）といった演算を演算子「・」に対応させることができる。ｒに格納するビット列ｅは上記（３）のｅである。監視対象領域２１の先頭アドレスはｋ０とし、ｋ０−１はｋ０の一つ前のアドレスを指すものとする。
【００５０】
ステップＳ２０２では、監視対象領域２１にデータを書込むか否かを判定する。書き込む場合はステップＳ２０３に進み、そうでない場合はステップＳ２０６に進む。書き込む場合、書き込み先アドレスをａ、書込む値をｉとする。なお、ａ、ｉはビット列で表される情報である。
【００５１】
ステップＳ２０３では、書き込み先アドレスａがチェック値計算済みアドレスｋよりも大きいか否かを判定する。ａがｋよりも大きい場合はステップＳ２０４に進み、そうでない場合はステップＳ２０５に進む。
【００５２】
ステップＳ２０４では、前方変化値ｆにｆ・ｉ・ｍａ−１の計算結果を格納する。ここで、ｍａはアドレスａに格納されているデータを表し、ｍａ−１はｍａの逆元を表す。ｆに値を格納した後、ｍａにｉを書込む。
【００５３】
ステップＳ２０５では、ｒにｒ・ｉ・ｍａ−１の計算結果を格納する。ｒに値を格納した後、ｍａにｉを書込む。
【００５４】
ステップＳ２０６ではチェック値計算済みアドレスｋにｋ＋１の計算結果を格納する。ここで、ｋ＋１はｋの次のアドレスを表す。そして、第一チェック値ｖにｖ・ｍｋの計算結果を格納する。
【００５５】
ステップＳ２０７ではチェック値計算済みアドレスｋが終端アドレスｌと等しいか否かを判定する。等しい場合はステップＳ２０８に進み、そうでない場合はステップＳ２０２に進む。ここで、ｌは監視対象領域２１の終端のアドレスを表す。
【００５６】
ステップＳ２０８では、第二チェック値ｃに有効な値が格納されているか否かを判定する。図５に示したフローチャートの処理を実行してから初めてステップＳ２０８を実行する場合は、ｃに有効な値が格納されていないと判定し、ステップＳ２０９に進む。そうでない場合はステップＳ２１０に進む。ただし、ステップＳ２０１を実行する時点で監視対象領域２１の第二チェック値がわかっている場合、つまり、監視対象領域２１の各アドレスに格納されているデータを演算子「・」により結び付けて演算した結果がわかっている場合は、その時点でｃに第二チェック値を格納しておき、Ｓ２０８が実行される場合には初回か否かに関わらずｃに有効な値が格納されていると判定し、ステップＳ２１０に進む。
【００５７】
ステップＳ２０９では、ｃにｖ・ｆ−１を、ｆにｆ・ｒを、ｖにｖ０を、ｒにｅを、ｋにｋ０−１を格納する処理を順に行う。ここで、ｆ−１はｆの逆元を表す。
【００５８】
ステップＳ２１０ではｖ・ｆ−１とｃが等しいか否かを判定する。等しい場合はステップＳ２１１に進み、そうでない場合はデータエラー発生と判定する。
【００５９】
ステップＳ２１１では、ｆにｆ・ｒを、ｖにｖ０を、ｒにｅを、ｋにｋ０−１を格納する処理を順に行う。
【００６０】
データエラー検出プログラム２２−１、２２−２がそれぞれ独立して図５の処理を行うことにより、データエラー検出プログラム２２−１、２２−２はそれぞれ監視対象領域２１−１、２１−２のデータエラー検出処理を行うことができる。
【００６１】
本発明の実施形態２では、主記憶装置２内に複数の監視対象領域２１を設け、それぞれに対してデータエラー検出プログラム２２を動作させることにより、各監視対象領域２１に対するデータエラーチェックを行うことができる。この場合、データエラー検出は監視対象領域２１単位に行われる。そのため、例えば一つの監視対象領域２１に一つのアプリケーションを格納している場合で、かつ、データエラーが発生した場合にアプリケーションを再起動するようにしている場合、データエラー発生時に停止させるアプリケーションは、データエラーが発生した監視対象領域２１で動作しているアプリケーションのみで済ませることができる。また、図５において示したチェック値算出方法以外にも様々なビット演算を用いてチェック値を算出することができる。
【００６２】
（実施形態３）
本発明の実施形態３を説明する。図６は本発明の実施形態３に係る情報処理システムの構成図である。この実施形態３は、図１に示した実施形態１に対し、主記憶装置２にエラー検出プログラム２２を格納し、補助記憶装置４の監視対象領域４１を監視対象領域としたものである。
【００６３】
図６において、中央処理装置１、主記憶装置２、情報伝送路３、補助記憶装置４より構成される。主記憶装置２にはエラー検出プログラム２２が含まれる。補助記憶装置４には監視対象領域４１が含まれる。主記憶装置２及び補助記憶装置４は、ともに情報記憶装置である。
【００６４】
中央処理装置１は、エラー検出プログラム２２によって補助記憶装置４のデータエラー検出処理を行い、監視対象領域４１で発生するデータエラーを検出する。中央処理装置１、主記憶装置２、補助記憶装置４の間の情報のやり取りは情報伝送路３を介して行われる。エラー検出プログラム２２は、図５に示したフローチャートに従って処理を行うものとする。
【００６５】
図５において、ステップＳ２０１では、第一チェック値ｖ、前方変化値ｆ、後方変化値ｒ、チェック値計算済みアドレスｋをそれぞれｖ０、ｆ０、ｅ、ｋ０−１で初期化する。ここで、ｖ０、ｆ０は、それぞれｆ、ｒが保持可能な任意のビット列を表す。また、ｅは演算子「・」に対する単位元である。演算子「・」の意味は実施形態２の場合と同じである。また、ステップＳ２０１では監視対象領域４１のデータを主記憶装置２に格納する。ここで、主記憶装置２に格納した監視対象領域４１のデータの主記憶装置２上での先頭アドレスをｋ０とする。ｋ０−１はｋ０の一つ前のアドレスを指すものとする。
【００６６】
ステップＳ２０２では、監視対象領域４１にデータを書き込むか否かを判定する。書き込む場合はステップＳ２０３に進み、そうでない場合はステップＳ２０６に進む。書き込む場合、監視対象領域４１のデータと主記憶装置２に格納した監視対象領域４１のデータのアドレスを対応させ、監視対象領域４１の書き込み先に対応する主記憶装置２上でのアドレスをａとする。また、書込む値をｉとする。
【００６７】
ステップＳ２０３では、書き込み先アドレスａがチェック値計算済みアドレスｋよりも大きいか否かを判定する。ａがｋよりも大きい場合はステップＳ２０４に進み、そうでない場合はステップＳ２０５に進む。
【００６８】
ステップＳ２０４では、前方変化値ｆにｆ・ｉ・ｍａ−１の計算結果を格納する。ここで、ｍａは主記憶装置２のアドレスａに格納されているデータを表し、ｍａ−１はｍａの逆元を表す。ｆに値を格納した後、ｍａにｉを書込む。その後、監視対象領域４１のアドレスａに対応する場所にｉを書込む。
【００６９】
ステップＳ２０５では、ｒにｒ・ｉ・ｍａ−１の計算結果を格納する。ｒに値を格納した後、ｍａにｉを書込む。その後、監視対象領域４１のアドレスａに対応する場所にｉを書込む。
【００７０】
ステップＳ２０６ではチェック値計算済みアドレスｋにｋ＋１を格納する。ここで、ｋ＋１はｋの次のアドレスを表す。そして、第一チェック値ｖにｖ・ｍｋの計算結果を格納する。
【００７１】
ステップＳ２０７ではチェック値計算済みアドレスｋが終端アドレスｌと等しいか否かを判定する。ここで、ｌは主記憶装置２に格納した監視対象領域４１のデータの終端のアドレスを表す。等しい場合はステップＳ２０８に進み、そうでない場合はステップＳ２０２に進む。
【００７２】
ステップＳ２０８では、第二チェック値ｃに有効な値が格納されているか否かを判定する。図５に示したフローチャートの処理を実行してから初めてステップＳ２０８を実行する場合は、ｃに有効な値が格納されていないと判定し、ステップＳ２０９に進む。そうでない場合はステップＳ２１０に進む。ただし、ステップＳ２０１を実行する時点で監視対象領域４１の第二チェック値がわかっている場合、つまり、監視対象領域４１のデータを主記憶装置２に格納した場合の各アドレスに格納されているデータを演算子・により結び付けて演算した結果がわかっている場合は、その時点でｃに第二チェック値を格納しておき、Ｓ２０８が実行される場合には初回か否かに関わらずｃに有効な値が格納されていると判定し、ステップＳ２１０に進む。
【００７３】
ステップＳ２０９では、ｃにｖ・ｆ−１を、ｆにｆ・ｒを、ｖにｖ０を、ｒにｅを、ｋにｋ０−１を格納する処理を順に行う。ここで、ｆ−１はｆの逆元を表す。
【００７４】
ステップＳ２１０ではｖ・ｆ−１とｃが等しいか否かを判定する。等しい場合はステップＳ２１１に進み、そうでない場合はデータエラー発生と判定する。
【００７５】
ステップＳ２１１では、ｆにｆ・ｒを、ｖにｖ０を、ｒにｅを、ｋにｋ０−１を格納する処理を順に行う。
【００７６】
なお、補助記憶装置４の中に複数の監視対象領域４１を設けても良い。その場合、監視対象領域４１のそれぞれに対してエラー検出プログラム２２を主記憶装置２の中に格納し、各エラー検出プログラム２２はそれぞれ図５に示した処理を独立して行うようにする。これにより、各監視対象領域４１に対するデータエラーチェックを行うことができる。
【００７７】
本発明の実施形態３では、主記憶装置２だけでなく、補助記憶装置４に対しても、データを書き換えながらデータエラー検出を行うことができる。この場合もデータの冗長化及び特別なハードウェアは不要である。
【００７８】
（実施形態４）
本発明の実施形態４を説明する。図７は本発明の実施形態４に係る情報処理システムの構成図である。この実施形態４は、図１に示した実施形態１に対し、記憶媒体６にエラー検出プログラム６２を格納し、主記憶装置２の監視対象領域２１、補助記憶装置４の監視対象領域４１、記憶媒体６の監視対象領域６１を監視対象領域としたものである。主記憶装置２、補助記憶装置４、記録媒体６は、ともに情報記憶装置である。
【００７９】
図７において、中央処理装置１、主記憶装置２、情報伝送路３、補助記憶装置４、Ｉ／Ｏ装置５、記憶媒体６より構成される。記憶媒体６はＩ／Ｏ装置５を介して中央処理装置１に接続されている。主記憶装置２には監視対象領域２１が含まれる。補助記憶装置４には監視対象領域４１が含まれる。記憶媒体６には監視対象領域６１、エラー検出プログラム６２が含まれる。
【００８０】
図８は記憶媒体６に含まれるエラー検出プログラム６２の構成図である。エラー検出プログラム６２は、第一チェック値算出プログラムコードＰ１、変化情報作成プログラムコードＰ２、第二チェック値算出プログラムコードＰ３、データエラー判定プログラムコードＰ４より構成される。
【００８１】
中央処理装置１、主記憶装置２、補助記憶装置４、Ｉ／Ｏ装置５は、情報伝送路３を介して情報をやり取りする。Ｉ／Ｏ装置５は記憶媒体６と情報のやり取りを行い、記憶媒体６に格納された情報の読み込み／書き込みを行う。
【００８２】
主記憶装置２は記憶媒体６に格納されたエラー検出プログラム６２を読み込み、エラー検出プログラム６２を動作させる。このエラー検出プログラム６２がデータエラー検出の対象とするデータは、主記憶装置２の監視対象領域２１に格納されたデータでも良いし、補助記憶装置４の監視対象領域４１に格納されたデータでも良いし、記憶媒体６の監視対象領域６１に格納されたデータでも良い。なお、図７に示した監視対象領域２１、４１、６１はいずれか一つ以上あればよく、例えば、主記憶装置２に読み込まれたエラー検出プログラム６２が監視対象領域４１に格納されたデータを対象としてデータエラー検出処理を行う場合、監視対象領域２１及び監視対象領域６１は設けなくて良い。
【００８３】
エラー検出プログラム６２が主記憶装置２の監視対象領域２１に格納されたデータを対象としてデータエラー検出処理を行う場合は実施形態２で述べた処理を行う。
【００８４】
エラー検出プログラム６２が補助記憶装置４の監視対象領域４１に格納されたデータを対象としてデータエラー検出処理を行う場合は実施形態３で述べた処理を行う。
【００８５】
エラー検出プログラム６２が記憶媒体６の監視対象領域６１に格納されたデータを対象としてデータエラー検出処理を行う場合は、図５に示した処理を行う。具体的には、実施形態３で述べた図５の処理において、補助記憶装置４を記録媒体６に、監視対象領域４１を監視対象領域６１に置き換えた処理を行う。
【００８６】
エラー検出プログラム６２は、図８に示したプログラム構成となっている。第一チェック値算出プログラムコードＰ１は、図５のステップＳ２０１、ステップＳ２０２、ステップＳ２０６、ステップＳ２０７の処理を行う。変化情報作成プログラムコードＰ２は、図５のステップＳ２０３、ステップＳ２０４、ステップＳ２０５の処理を行う。第二チェック値算出プログラムコードＰ３は、図５のステップＳ２０８、ステップＳ２０９、ステップＳ２１０の処理を行う。ただし、ステップＳ２１０についてはｖ・ｆ−１の算出のみ行う。
【００８７】
データエラー判定プログラムコードＰ４は、図５のステップＳ２１０、ステップＳ２１１の処理を行う。ただし、ステップＳ２１０については第二チェック値算出プログラムコードＰ３により算出されたｖ・ｆ−１の計算結果と第二チェック値ｃとの比較処理を行う。
【００８８】
こうしてエラー検出プログラム６２は、監視対象領域２１、４１、６１のいずれかに格納されたデータのデータエラー検出処理を行う。
【００８９】
本発明の実施形態４では、記憶媒体６に格納されたエラー検出プログラム６２を用いて、図７に示した情報処理システム上でデータエラー検出処理を実行することができる。また、主記憶装置２や補助記憶装置４だけでなく、記憶媒体６に対しても、データを書き換えながらデータエラー検出を行うことができる。この場合もデータの冗長化や特別なハードウェアは不要である。
【００９０】
従って、データの冗長化を行わず、かつ、データの整合性をチェックしている間にデータを書き換えることを許容するようなデータの整合性チェック方法が存在すれば、単位情報を保存するのに要するハードウェアコストを高めることなくデータの整合性をチェックすることができることになる。
【００９１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９２】
１：中央処理装置、２：主記憶装置、３：情報伝送路、４：補助記憶装置、５：Ｉ／Ｏ装置、６：記憶媒体、１１：第一チェック値算出手段、１２：変化情報作成手段、１３：第二チェック値算出手段、１４：データエラー判定手段、２１：監視対象領域、２２：エラー検出プログラム、４１：監視対象領域、６１：監視対象領域、６２：エラー検出プログラム、Ｌ１：チェック値計算済みライン、Ｐ１：第一チェック値算出プログラムコード、Ｐ２：変化情報作成プログラムコード、Ｐ３：第二チェック値算出プログラムコード、Ｐ４：データエラー判定プログラムコード
【図１】
0005793379.tif 000002
【図２】
0005793379.tif 000003
【図３】
0005793379.tif 000004
【図４】
0005793379.tif 000005
【図５】
0005793379.tif 000006
【図６】
0005793379.tif 000007
【図７】
0005793379.tif 000008
【図８】
0005793379.tif 000009