(57)【特許請求の範囲】
【請求項１】
第１の記憶手段と、
前記第１の記憶手段に接続された第２の記憶手段と、
前記第１の記憶手段に格納されているデータの誤り検査情報を求める計算手段と、
前記第１の記憶手段に格納されている前記データ及び前記計算手段により求められた前記誤り検査情報を前記第２の記憶手段へ転送する第１の転送手段と、
前記第２の記憶手段へ転送した最新の誤り検査情報及び該転送の以前に前記第２の記憶手段へ転送した旧誤り検査情報並びに前記第２の記憶手段へ転送したデータを前記第２の記憶手段から前記第１の記憶手段へ戻す第２の転送手段と、
前記第２の転送手段により戻されたデータを基に前記計算手段により第３の誤り検査情報を生成し、該第３誤り検査情報が前記第２の転送手段により戻された前記最新の誤り検査情報と一致するとき、前記第２の転送手段により戻されたデータは最新のデータであると判断し、前記第３の誤り検査情報が前記第２の転送手段により戻された前記旧誤り検査情報と一致するとき、前記第２の転送手段により戻されたデータは前記第１の転送手段が前記第２の記憶手段に前回転送したデータであると判断し、該判断を基に前記第２の記憶手段にある前記最新の誤り検査情報を前記第２の記憶手段にある旧誤り検査情報に置き換える検出手段と、
を備えることを特徴とするデータ転送システム。
【請求項２】
前記検出手段は、前記第３誤り検査情報が前記最新の誤り検査情報および前記旧誤り検査情報のいずれにも一致しないとき、前記転送エラーとしてデータ破壊を検出することを特徴とする請求項１記載のデータ転送システム。
【請求項３】
複数の前記第２の記憶手段を備え、
前記第１の転送手段は、前記第１の記憶手段に格納されている前記データ及び前記計算手段により求められた前記誤り検査情報を前記複数の第２の記憶手段へ転送することを特徴とする請求項１又は２記載のデータ転送システム。
【請求項４】
前記各第２の記憶手段を探索する探索手段を備え、
いずれかの前記第２の記憶手段から前記第１の記憶手段へ前記第２の転送手段により戻されたデータについて、該データは前記第１の転送手段が前記いずれかの第２の記憶手段に前回転送したデータであると前記検出手段が判断したとき、他の前記第２の記憶手段を探索し、該探索された他の前記第２の記憶手段に格納されているデータにより前記いずれかの第２の記憶手段のデータを修復する手段を更に備えることを特徴とする請求項３記載のデータ転送システム。
【請求項５】
前記第１の記憶手段は主記憶手段であり、前記第２の記憶手段は外部記憶手段であることを特徴とする請求項１乃至４のいずれか１項に記載のデータ転送システム。
【請求項６】
第１の記憶手段に格納されているデータの誤り検査情報を求め、
前記データ及び前記求めた誤り検査情報を前記第１の記憶手段に接続されている第２の記憶手段へ転送し、
前記第２の記憶手段へ転送した最新の誤り検査情報及び該転送の以前に前記第２の記憶手段へ転送した旧誤り検査情報並びに前記第２の記憶手段へ転送したデータを前記第２の記憶手段から前記第１の記憶手段へ戻し、
前記第２の転送手段により戻されたデータを基に第３の誤り検査情報を生成し、
前記第３誤り検査情報が前記戻された最新の誤り検査情報と一致するとき、前記戻されたデータは最新のデータであると判断し、
前記第３の誤り検査情報が前記戻された旧誤り検査情報と一致するとき、前記戻されたデータは前記第１の記憶手段から前記第２の記憶手段へ前回転送されたデータであると判断し、該判断を基に前記第２の記憶手段にある前記最新の誤り検査情報を前記第２の記憶手段にある旧誤り検査情報に置き換えることを特徴とするデータ転送方法。
【請求項７】
前記第３誤り検査情報が前記最新の誤り検査情報および前記旧誤り検査情報のいずれにも一致しないとき、前記転送エラーとしてデータ破壊を検出することを特徴とする請求項６記載のデータ転送方法。
【請求項８】
前記第１の記憶手段に格納されている前記データ及び前記計算手段により求められた前記誤り検査情報を複数の前記第２の記憶手段へ転送することを特徴とする請求項６又は７記載のデータ転送方法。
【請求項９】
いずれかの前記第２の記憶手段から前記第１の記憶手段へ戻されたデータについて、該データは前記いずれかの第２の記憶手段に前回転送したデータであると判断したとき、他の前記第２の記憶手段を探索し、該探索された他の前記第２の記憶手段に格納されているデータにより前記いずれかの第２の記憶手段のデータを修復することを特徴とする請求項８記載のデータ転送方法。
【請求項１０】
前記第１の記憶手段は主記憶手段であり、前記第２の記憶手段は外部記憶手段であることを特徴とする請求項６乃至９のいずれか１項に記載のデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送システムに関し、特に、記憶手段相互でデータ転送を行うデータ転送システムに関する。
【０００２】
【従来の技術】
従来、主記憶手段と外部記憶手段間でデータ転送を行うものとして、以下のようなものがある。
【０００３】
特開２０００−２３５５２４には、不揮発性記憶部でのデータの保全を充分に行えるようにすることを課題として、書き換え可能な不揮発性記憶部にデジタルデータを記憶し保全するデータ保全装置として、不揮発性記憶部内に設定した、それぞれ一つ以上のデータエリアから成る第一データエリアおよび第二データエリアと、不揮発性記憶部に対する初期データ書き込み時およびデータ書き替え時に、第一および第二データエリアの各エリア等にそれぞれ同一内容のデータを書き込み記憶させる書き込み記憶手段と、第一データエリアに記憶したデータを所定の周期でリフレッシュするリフレッシュ手段と、第二データエリアに記憶したデータを所定の周期毎に検査し、誤りデータが発見された場合、その誤りデータのみを対象に正しい論理値で書き換え修復する検査修復手段と、を備える技術が記載されている。
【０００４】
また、特開平２−１８９６６３号公報には、ＣＰＵからＩ／Ｏインタフェースに、また該Ｉ／Ｏインタフェースから前記ＣＰＵに、データを転送する際において、送信側で一連のデータの最後にチェックＳＵＭを付加して送信し、受信側で、受信された前記データと前記チェックＳＵＭとを照合することにより受信データの誤りを検出する技術について記載されている。
【０００５】
また、特開平５−２５７８８４号公報には、メモリ上でのデータ化けを検出することが可能なデータ転送制御装置を得ることを目的として、メモリと周辺デバイスの間で転送しているデータのチェックサムを計算するチェックサム計算回路と、このチェックサム計算回路の計算結果がセットされるチェックサムレジスタと、チェックサム計算回路の現在の計算結果とチェックサムレジスタにセットされている計算結果の不一致を検出する不一致検出回路とで構成する技術が記載されている。
【０００６】
特開平１０−１３３９６２号公報には、従来との互換をとりつつ、確実にデータ転送上の誤りを防止して、ＡＴＡインタフェースを持つデータ処理装置の外部記録装置とのデータ転送上のデータ検証方法および装置を提供することを課題として、ＡＴＡＩ／Ｆで接続されたデータ処理装置と外部記録装置との間のデータ転送時に、第１の段階では転送データをシリアルデータとしてデータチェックコードをデータ処理装置側で計算し、第２の段階ではこの転送データをシリアルデータとしてデータチェックコードを外部記録装置側で計算し、第３の段階ではデータ転送終了時にデータ処理装置側と外部記録装置側とでそれぞれ計算したデータチェックコードを比較し、第４の段階では２つのデータチェックコードが一致したときにデータ転送が正常と判定し、一致しなかった場合にはデータ転送が正常でないと判定して、データ転送時の誤りの発生を防止する技術が記載されている。
【０００７】
特開平１１−１８４７０５号公報には、ダウンロードした制御プログラムが運用中に化けて（破壊されて）しまった場合、それを検出し、自動補正（復元）することを課題として、各メモリ（ＲＡＭ，ＩＣカード）に格納されている制御プログラムのチェックサムの計算を定期的に行い、計算結果の誤ったメモリが検出された場合、そのメモリに対し、計算結果の正しいメモリに記憶されたデータを上書きコピーする技術が記載されている。
【０００８】
【発明が解決しようとする課題】
しかし、従来の技術は、いずれも主記憶手段と外部記憶手段との経路の一部で発生したエラーしか検出できず、そのため、エラーが検出不可能な箇所でエラーが発生した場合には、そのエラーが検出されずにデータが転送される事態が生じる。
【０００９】
また、従来の技術は、データが正常であるか、破壊されているかが管理されていないため、主記憶手段から外部記憶手段へのデータの出力中に、システムクラッシュによってデータが破壊された場合、破壊されたデータを特定できないことである。
【００１０】
さらに、データにエラーが生じたときに、データの復旧ができるように内部に複製したデータを保持するアプリケーションがあるが、その仕組み作りには多大なコストがかかる上に、別のアプリケーションでは利用できなく、汎用性の面で問題があった。
【００１１】
そこで、本発明は、データの転送経路で生じたエラーについては汎用的に検出できるようにすることを課題とする。
【００１２】
【課題を解決するための手段】
上記課題を解決するために、本発明は、第１の記憶手段と、前記第１の記憶手段に接続された第２の記憶手段と、前記第１の記憶手段に格納されているデータの誤り検査情報を求める計算手段と、前記第１の記憶手段に格納されている前記データ及び前記計算手段により求められた前記誤り検査情報を前記第２の記憶手段へ転送する第１の転送手段と、前記第２の記憶手段へ転送した最新の誤り検査情報及び該転送の以前に前記第２の記憶手段へ転送した旧誤り検査情報並びに前記第２の記憶手段へ転送したデータを前記第２の記憶手段から前記第１の記憶手段へ戻す第２の転送手段と、前記第２の転送手段により戻されたデータを基に前記計算手段により第３の誤り検査情報を生成し、該第３誤り検査情報が前記第２の転送手段により戻された前記最新の誤り検査情報と一致するとき、前記第２の転送手段により戻されたデータは最新のデータであると判断し、前記第３の誤り検査情報が前記第２の転送手段により戻された前記旧誤り検査情報と一致するとき、前記第２の転送手段により戻されたデータは前記第１の転送手段が前記第２の記憶手段に前回転送したデータであると判断し、該判断を基に前記第２の記憶手段にある前記最新の誤り検査情報を前記第２の記憶手段にある旧誤り検査情報に置き換える検出手段とを備えることを特徴とする。
【００１３】
【発明の実施の形態】
以下、本発明の実施形態について図面を参照して説明する。
【００１４】
（実施形態１）
［構成の説明］
図１は、本発明の実施形態１のエラー検出装置を備えたデータ転送システムの模式的な構成を示すブロック図である。
【００１５】
図１には、揮発性メモリなどの主記憶手段１００と、プログラム制御により動作するデータ一貫性維持手段２００と、磁気ディスクなどの外部記憶手段８００と、ＳＣＳＩ（Small Computer System Interface）、ファイバーチャネルなどの入出力制御手段５００とを示している。
【００１６】
主記憶手段１００は、チェックサム格納域１１０と、データ格納域１２０とを備えている。
【００１７】
データ格納域１２０は、外部記憶手段８００へ出力するデータ及び外部記憶手段８００から入力するデータを格納する領域である。チェックサム格納域１１０は、データ格納域１２０に格納されているデータに対するチェックサムを格納する領域である。
【００１８】
データ一貫性維持手段２００は、チェックサム／データ入出力制御手段２１０と、転送エラー検出手段２２０と、チェックサム計算手段２３０とを備えている。
【００１９】
チェックサム／データ入出力制御手段２１０は、主記憶手段１００と外部記憶手段８００間でのチェックサム及びデータの転送指示を行う。
【００２０】
転送エラー検出手段２２０は、主記憶手段１００から外部記憶手段８００へデータを出力する場合と、外部記憶手段８００から主記憶手段１００へデータを入力する場合とで動作が異なる。主記憶手段１００から外部記憶手段８００へデータを出力する場合は、主記憶手段１００のデータ格納域１２０に格納されているデータに対して、データの読み書き単位毎にチェックサムを計算し、それをチェックサム格納域１１０に格納する（チェックサムを付加する）。この場合、データに付加するチェックサムは、チェックサム計算手段２３０を用いて計算される。外部記憶手段８００から主記憶手段１００にデータを入力する場合は、主記憶手段１００のデータ格納域１２０に入力されたデータのチェックサムを計算し、それをチェックサム格納域１１０に入力されたチェックサムと比較する。チェックサムが同じであれば入力は成功する。チェックサムが異なる場合は、入力データを転送エラーとして検出する。
【００２１】
チェックサム計算手段２３０は、転送エラー検出手段２２０から渡されたデータの読み書き単位を入力として、各データに一意な値を計算し、それをチェックサムとして返す。
【００２２】
入出力制御手段５００は、主記憶手段１００から外部記憶手段８００へのデータの出力、外部記憶手段８００から主記憶手段１００へのデータの入力を行う。
【００２３】
外部記憶手段８００は、チェックサム格納域８１０とデータ格納域８２０とを備えている。なお、外部記憶手段８００はコンピュータ本体に直結しても、コンピュータネットワークを経由して接続してもよい。
【００２４】
図４は、図１の外部記憶手段８００の内部構成図である。なお、ここでは、図１の主記憶手段１００も図４と同様の構成としている。
【００２５】
データ格納域８２０は、データを格納する領域である。チェックサム格納域８１０は、データ格納域８２０に格納されているデータに対するチェックサムを格納する領域である。そして、図４に示すようにチェックサム格納域８１０とデータ格納域８２０とが対応付けされた状態で、チェックサムとデータとが格納されている。
【００２６】
［動作の説明］
まず、図１のデータ転送システムの動作の概要について説明する。
【００２７】
図１に示す主記憶手段１００に格納されているデータを外部記憶手段８００へ出力する命令が発行されると、転送エラー検出手段２２０は、データ格納域１２０に格納されているデータに対して、データの読み書き単位（セクタ）毎にチェックサムを計算し、それをチェックサム格納域１１０に格納する（チェックサムを付加する）。
【００２８】
ここでチェックサムとは、チェックサム計算手段２３０によって各データに基づいて計算された値のことであり、データ毎に一意な値となる。
【００２９】
チェックサム／データ入出力制御手段２１０は、入出力制御手段５００を介して、チェックサム格納域１１０のチェックサムを外部記憶手段８００のチェックサム格納域８１０へ、データ格納域１２０のデータをデータ格納域８２０へそれぞれ出力する。
【００３０】
その後、外部記憶手段８００に格納されているデータを主記憶手段１００へ入力する命令が発行されると、チェックサム／データ入出力制御手段２１０は、入出力制御手段５００を介して、チェックサム格納域８１０のチェックサムを主記憶手段１００のチェックサム格納域１１０へ、データ格納域８２０のデータをデータ格納域１２０へそれぞれ入力する。
【００３１】
転送エラー検出手段２２０は、チェックサムとデータとが主記憶手段１００へ入力されると、チェックサム計算手段２３０を用いてデータ格納域１２０に入力したデータのチェックサムを求め、それとチェックサム格納域１１０に入力したチェックサムと比較する。チェックサムが同じであれば入力は成功する。チェックサムが異なれば、入力データを転送エラーとして検出する。
【００３２】
こうすることで、主記憶手段１００と外部記憶手段８００とを結ぶ経路のすべてで発生するデータの転送エラーを検出できる。
【００３３】
図２は、図１の主記憶手段１００に格納されているデータを外部記憶手段８００へ出力する場合の動作を示すフローチャートである。
【００３４】
主記憶手段１００に格納されているデータを外部記憶手段８００へ出力する命令が発行されると、転送エラー検出手段２２０は、データ格納域１２０に格納されているデータに対して、データの読み書き単位毎にチェックサムを計算し、それをチェックサム格納域１１０に格納する（チェックサムを付加する）（ステップＡ１）。
【００３５】
出力データにチェックサムが付加されると、チェックサム／データ入出力制御手段２１０は、チェックサム格納域１１０のチェックサムを外部記憶手段８００のチェックサム格納域８１０へ出力するよう入出力制御手段５００に指示をし、入出力制御手段５００はこの指示に応じてチェックサム格納域１１０のチェックサムをチェックサム格納域８１０へ出力する（ステップＡ２）。
【００３６】
その後、データ格納域１２０のデータを外部記憶手段８００のデータ格納域８２０へ出力するよう入出力制御手段５００に指示をし、入出力制御手段５００はこの指示に応じてデータ格納域１２０のデータをデータ格納域８２０へ出力する（ステップＡ３）。
【００３７】
図３は、図１の外部記憶手段８００に格納されているデータを主記憶手段１００へ出力する場合の動作を示すフローチャートである。
【００３８】
外部記憶手段８００に格納されているデータを主記憶手段１００に入力する命令が発行されると、チェックサム／データ入出力制御手段２１０は、チェックサム格納域８１０のチェックサムをチェックサム格納域１１０へ、データ格納域８２０のデータをデータ格納域１２０へ出力するよう入出力制御手段５００に指示をし、入出力制御手段５００はこの指示に応じてチェックサム格納域８１０のチェックサムをチェックサム格納域１１０へ、データ格納域８２０のデータをデータ格納域１２０へそれぞれ出力する（ステップＢ１）。
【００３９】
転送エラー検出手段２２０は、チェックサムとデータとが主記憶手段１００へ入力されると、チェックサム計算手段２３０を用いてデータ格納域１２０に入力したデータのチェックサムを求める（ステップＢ２）。
【００４０】
それから、求めたチェックサムとチェックサム格納域１１０に入力されたチェックサムとを比較する（ステップＢ３）。
【００４１】
チェックサムが同じであれば入力は成功したことを意味するので図３に示す処理を終了する。一方、チェックサムが異なれば、データの転送エラーとして検出する（ステップＢ４）。
【００４２】
図５は、図１の外部記憶手段８００のチェックサム格納域８１０及びデータ格納域８２０の記憶内容を示す模式的図である。
【００４３】
図５を用いて具体的なデータ転送の際の動作について説明する。
【００４４】
例えば、主記憶手段１００のデータ格納域１２０にデータＡが格納されており、これを外部記憶手段８００に出力し、それを主記憶手段１００に戻す場合を考える。
【００４５】
最初に、データ格納域８２０とチェックサム格納域８１０とは、図５（１）に示すように、データが何も格納されておらず「−」、チェックサムが「０」のような状態であるとする。
【００４６】
この状態で、主記憶手段１００に格納されているデータＡを外部記憶手段８００へ出力する命令が発行されると、転送エラー検出手段２２０は、データＡに対するチェックサム（これをａとする）を求め、それをチェックサム格納域１１０に格納する。
【００４７】
データにチェックサムが付加されると、チェックサム／データ入出力制御手段２１０は、チェックサム格納域１１０のチェックサムａを外部記憶手段８００のチェックサム格納域８１０へ出力するよう入出力制御手段５００に指示する。
【００４８】
このため、データ格納域８２０とチェックサム格納域８１０とは、図５（２）に示すように、データが何も格納されておらず「−」、チェックサムが「ａ」という状態になる。
【００４９】
それから、データ格納域１２０のデータＡを外部記憶手段８００のデータ格納域８２０へ出力するよう入出力制御手段５００に指示する。
【００５０】
このため、データ格納域８２０とチェックサム格納域８１０とは、図５（３）に示すように、データＡが格納され、チェックサム「ａ」が格納された状態になる。
【００５１】
その後、外部記憶手段８００に格納されているデータＡを主記憶手段１００へ入力する命令が発行されると、チェックサム／データ入出力制御手段２１０は、チェックサム格納域８１０のチェックサムａを主記憶手段１００のチェックサム格納域１１０へ、データ格納域８２０のデータＡをデータ格納域１２０へ入力するよう入出力制御手段５００に指示する。
【００５２】
チェックサムａとデータＡが主記憶手段１００に入力されると、転送エラー検出手段２２０は、チェックサム計算手段２３０を用いてデータ格納域１２０に入力したデータＡのチェックサムを計算する。このとき、データＡにエラーがなければチェックサムとしてａが求められる。それをチェックサム格納域１１０のチェックサムａと比較するので、入力は成功する。
【００５３】
一方、データＡにエラーが生じれば、求められたチェックサムは「ａ」以外になるので、チェックサムは一致せず転送エラーとして検出される。
【００５４】
（実施形態２）
［構成の説明］
図６は、本発明の実施形態２に係る外部記憶手段８００の内部構成図である。なお、本実施形態のデータ転送システムの他の部分の構成は、図１と同様である。
【００５５】
本実施形態は、外部記憶手段８００のチェックサム格納域８１０に新、旧２つのチェックサム領域を有している。
【００５６】
本実施形態のエラー検出装置は、外部記憶手段８００にデータ及びこのデータに対応するチェックサムが格納されている状態で、主記憶手段１００から例えばデータの上書きのような形態で、外部記憶手段８００に格納してあるデータを更新し、その後、主記憶手段１００にデータを戻すときなどに有効である。
【００５７】
チェックサム格納域８１０の新チェックサム領域は、更新後のデータのチェックサムを格納する領域である。旧チェックサム領域は、更新前のデータのチェックサムを格納する領域である。
【００５８】
［動作の説明］
図７は、主記憶手段１００に格納されているデータを外部記憶手段８００へ出力する場合の動作を示すフローチャートである。
【００５９】
主記憶手段１００に格納されているデータを外部記憶手段８００へ出力する命令が発行されると、転送エラー検出手段２２０は、データ格納域１２０に格納されているデータに対して、データの読み書き単位毎にチェックサムを計算し、それをチェックサム格納域１１０に格納する（チェックサムを付加する）（ステップＣ１）。
【００６０】
出力データにチェックサムが付加されると、チェックサム／データ入出力制御手段２１０は、チェックサム格納域１１０のチェックサムを外部記憶手段８００のチェックサム格納域８１０へ出力するよう入出力制御手段５００に指示をし、入出力制御手段５００はこの指示に応じてチェックサム格納域１１０のチェックサムをチェックサム格納域８１０へ出力する（ステップＣ２）。
【００６１】
チェックサム格納域８１０では、新チェックサム領域に格納されているチェックサムを旧チェックサム領域に移し、新たなチェックサムを新チェックサム領域に出力する。
【００６２】
すなわち、新チェックサム領域には主記憶手段１００から新たに出力しようとしているデータのチェックサムが格納され、旧チェックサム領域には実際に外部記憶手段８００に格納されているデータのチェックサムが格納されている状態にする。なお、それまで旧チェックサム領域に格納されているデータ（例えば後述する「０」）は破棄される。
【００６３】
その後、チェックサム／データ入出力制御手段２１０は、データ格納域１２０のデータを外部記憶手段８００のデータ格納域８２０へ出力するよう入出力制御手段５００に指示をし、入出力制御手段５００はこの指示に応じてデータ格納域１２０のデータをデータ格納域８２０へ出力する（ステップＣ３）。
【００６４】
データ出力が完了した後、チェックサム／データ入出力制御手段２１０は、チェックサム格納域８１０の旧チェックサム領域にデータ出力終了フラグ（例えば０）を出力する（ステップＣ４）。
【００６５】
外部記憶手段８００に格納されているデータを主記憶手段１００へ入力する場合の動作については、チェックサム格納域１１０に入力するチェックサムがチェックサム格納域８１０の新チェックサムになる点を除いては、図３に示すフローチャートと同様である。
【００６６】
図８は、図１に示すデータ転送システム内でシステムクラッシュが生じたときにデータの復旧を行う場合の動作を示すフローチャートである。
【００６７】
システムクラッシュが生じた後に、外部記憶手段８００内のデータの復旧を行う命令が発行されると、外部記憶手段８００のデータ格納域８２０内のすべてのデータに対して次のことが行われる。
【００６８】
すなわち、チェックサム／データ入出力検出手段２１０は、データとそれに対応する新、旧チェックサムを外部記憶手段８００から主記憶手段１００へ出力するよう入出力制御手段５００に指示をし、入出力制御手段５００はこの指示に応じてチェックサム格納域８１０のチェックサムをチェックサム格納域１１０へ出力し、データ格納域８２０のデータをデータ格納域１２０へ出力する（ステップＤ１）。
【００６９】
このとき、主記憶手段１００のチェックサム格納域１１０には、新、旧チェックサム両方が格納される。転送エラー検出手段２２０は、チェックサムとデータが主記憶手段１００に入力されると、チェックサム格納域１１０の旧チェックサムが「０」であるかどうかをチェックする（ステップＤ２）。
【００７０】
チェックの結果、旧チェックサムが「０」であればこのデータの検査は終了する。一方、旧チェックサムが「０」でなければ、データ格納域１２０の入力データのチェックサムを求める（ステップＤ３）。
【００７１】
そして、求めたチェックサムとチェックサム格納域１１０の新チェックサムとが一致するかどうか比較する（ステップＤ４）。
【００７２】
チェックサムが一致すれば、データ格納域８２０に格納されているデータは出力後の新しいデータであるので、チェックサム格納域８１０の旧チェックサム領域に「０」を出力するよう入出力制御手段５００に指示をし、入出力制御手段５００はこの指示に応じてチェックサム格納域８１０の旧チェックサム領域に「０」を出力する（ステップＤ８）。
【００７３】
一方、求めたチェックサムとチェックサム格納域１１０の旧チェックサムとが一致すれば、データ格納域８２０に格納されているデータは、主記憶手段１００から出力されるデータで上書きされる前のデータであるので、チェックサム格納域８１０の旧チェックサム領域の値を新チェックサム領域に移し、旧チェックサム領域に０を出力するよう入出力制御手段５００に指示をし、入出力制御手段５００はこの指示に応じてチェックサム格納域８１０の旧チェックサム領域の値を新チェックサム領域に移し、旧チェックサム領域に０を出力する（ステップＤ７）。
【００７４】
求めたチェックサムがチェックサム格納域１１０の新、旧チェックサムのどちらとも一致しない場合は、データ破壊として検出する（ステップＤ６）。
【００７５】
図９は、本実施形態に係る外部記憶手段８００のチェックサム格納域８１０及びデータ格納域８２０の記憶内容を示す模式図である。
【００７６】
図９を用いて具体的なデータ転送の際の動作について説明する。
【００７７】
最初に、例えば、図９（１）に示すように、外部記憶手段８００のデータ格納域８２０にデータＡが格納されており、チェックサム格納域８１０の新チェックサム格納領域に「ａ」、旧チェックサム格納領域に「０」が格納されており、一方、主記憶手段１００のデータ格納域１２０にデータＢが格納されており、これを外部記憶手段８００に出力している途中で、システムクラッシュが発生した場合を考える。
【００７８】
主記憶手段１００に格納されているデータＢを外部記憶手段８００へ出力する命令が発行されると、転送エラー検出手段２２０は、データＢに対するチェックサム（これをｂとする）を計算し、それをチェックサム格納域１１０に格納する。
【００７９】
データにチェックサムが付加されると、チェックサム／データ入出力制御手段２１０は、チェックサム格納域１１０のチェックサムｂを外部記憶手段８００のチェックサム格納域８１０に出力するよう入出力制御手段５００に指示する。
【００８０】
このため、データ格納域８２０とチェックサム格納域８１０とは、図９（２）に示すように、データＡと、新チェックサムが「ｂ」、旧チェックサムが「ａ」という状態になる。
【００８１】
それから、データ格納域１２０のデータＢを外部記憶手段８００のデータ格納域８２０に出力するよう入出力制御手段５００に指示する。
【００８２】
そして、実際にデータＢが外部記憶手段８００のデータ格納域８２０に格納される前に、システムクラッシュが発生してシステムがダウンしたとする。その後システムを再起動し、外部記憶手段８００内のデータの復旧を行う命令が発行されると、チェックサム／データ入出力制御手段２１０は、データＡと新、旧チェックサム（チェックサムｂ、チェックサムａ）を外部記憶手段８００から主記憶手段１００へ出力するよう入出力制御手段５００に指示する。
【００８３】
転送エラー検出手段２２０は、主記憶手段１００にチェックサムとデータが入力されると、チェックサム格納域１１０の旧チェックサムをチェックする。チェックサム格納域１１０の旧チェックサムａは０ではないので、転送エラー検出手段２２０は、データ格納域１２０のデータＡのチェックサムを求める。
【００８４】
それから、求めたチェックサムとチェックサム格納域１１０の新チェックサムとを比較する。ここでは、チェックサムは一致しないので、次に、求めたチェックサムとチェックサム格納域１１０の旧チェックサムとを比較する。ここでは、チェックサムが一致するので、チェックサム格納域８１０の旧チェックサム領域の「ａ」を新チェックサム領域に移し、旧チェックサム領域に「０」を出力することで、出力前の古いデータとしてデータＡを復旧する。
【００８５】
（実施形態３）
図１０は、本発明の実施形態３のエラー検出装置を備えたデータ転送システムの模式的な構成を示すブロック図である。
【００８６】
図１０には、図１に示した部分に加え、以下説明する復旧データ探索手段２４０と、外部記憶手段９００とを示している。
復旧データ探索手段２４０は、同一データを格納している外部記憶手段を管理しており、ある外部記憶手段（例えば外部記憶手段８００）が入力されると、同一データを格納している外部記憶手段（例えば外部記憶手段９００）を探索する。このとき、探索済みの外部記憶手段は復旧データ探索手段２４０内で記憶されているため、同一データを格納している外部記憶手段が３つ以上の場合でも、探索する度に異なる外部記憶手段を探索することができる。
【００８７】
外部記憶手段９００は、外部記憶手段８００と同じ論理アドレスで対応する複写データを検索できるようにしており、チェックサム格納域９１０，データ格納域９２０がそれぞれチェックサム格納域８１０，データ格納域８２０に対応している。また、外部記憶手段９００には、外部記憶手段８００のデータと同じ内容のデータが外部記憶手段８００へのデータの格納処理の完了を待って格納される。
【００８８】
なお、ここでは外部記憶手段８００，９００でのチェックサムが１つの場合（図４）を説明するが、チェックサムが２つの場合（図６）も同様の拡張が可能である。また、外部記憶手段の数は例示であり、３つ以上備えていてもよい。
【００８９】
図１１は、図１０の外部記憶手段８００から主記憶手段１００へデータを出力する場合の動作を示すフローチャートである。
【００９０】
なお、主記憶手段１００から外部記憶手段８００，９００へデータを出力する場合の動作については、図２と同様であるが、上記のように外部記憶手段８００へのデータの格納の完了後に、外部記憶手段９００へ同じデータが格納される。
【００９１】
外部記憶手段８００に格納されているデータを主記憶手段１００に入力する命令が発行されると、チェックサム／データ入出力制御手段２１０は、データとそれに対応するチェックサムを外部記憶手段８００から主記憶手段１００へ出力するよう入出力制御手段５００に指示をし、入出力制御手段５００はこの指示に応じてデータとそれに対応するチェックサムを外部記憶手段８００から主記憶手段１００へ出力する（ステップＥ１）。
【００９２】
転送エラー検出手段２２０は、チェックサムとデータとが主記憶手段１００へ入力されると、チェックサム計算手段２３０を用いてデータ格納域１２０のデータのチェックサムを求める（ステップＥ２）。
【００９３】
そして、求めたチェックサムとチェックサム格納域１１０のチェックサムとを比較する（ステップＥ３）。
【００９４】
チェックサムが同じであれば入力は成功したことを意味するので図１１に示す処理を終了する。
【００９５】
一方、チェックサムが異なれば、転送エラー検出手段２２０は、外部記憶手段８００と同一データを格納している外部記憶手段を探索するよう、復旧データ探索手段２４０に指示し、復旧データ探索手段２４０はこの指示に応じて外部記憶手段８００と同一データを格納している外部記憶手段（ここでは外部記憶手段９００）を探索する（ステップＥ４）。
【００９６】
外部記憶手段８００と同一データを格納している外部記憶手段が存在しなければ、入力データを転送エラーとして検出する（ステップＥ１０）。
【００９７】
一方、外部記憶手段８００と同一データを格納している外部記憶手段が存在していれば、チェックサム／データ入出力制御手段２１０は、データとそれに対応するチェックサムを探索された外部記憶手段（ここでは外部記憶手段９００）から主記憶手段１００へ入力する（ステップＥ６）。
【００９８】
転送エラー検出手段２２０は、チェックサムとデータとが主記憶手段１００へ入力されると、チェックサム計算手段２３０を用いてデータ格納域１２０のデータのチェックサムを求める（ステップＥ７）。
【００９９】
そして、求めたチェックサムとチェックサム格納域１１０のチェックサムとを比較する（ステップＥ８）。
【０１００】
チェックサムが同じであれば、探索された外部記憶手段（ここでは外部記憶手段９００）に格納されているデータを用いて外部記憶手段８００に格納されているデータを復旧する（ステップＥ９）。
一方、チェックサムが異なれば、転送エラー検出手段２２０は、外部記憶手段８００と同一データを格納している外部記憶手段を探索するよう、再度復旧データ探索手段２４０に指示する（ここでは、外部記憶手段８００と同一データを格納しているのは外部記憶手段９００のみであるため、復旧データ探索手段２４０は探索に失敗し、入力したデータは転送エラーとして検出される）。
【０１０１】
【発明の効果】
以上、説明したように、本発明によると、記憶手段相互間の経路の全てで発生する転送エラーを検出できることである。
【０１０２】
また、本発明によると、データ転送中にシステムクラッシュが発生しても、破壊されたデータ領域の復旧あるいは検出が可能となるので、システムクラッシュ後の復旧処理のコストを低減することができる。
【０１０３】
さらに、本発明によると、転送エラーに係るデータを復旧できる。
【図面の簡単な説明】
【図１】本発明の実施形態１のエラー検出装置を備えたデータ転送システムの模式的な構成を示すブロック図である。
【図２】図１の主記憶手段１００に格納されているデータを外部記憶手段８００へ出力する場合の動作を示すフローチャートである。
【図３】図１の外部記憶手段８００に格納されているデータを主記憶手段１００へ出力する場合の動作を示すフローチャートである。
【図４】図１の外部記憶手段８００の内部構成図である。
【図５】図１の外部記憶手段８００のチェックサム格納域８１０及びデータ格納域８２０の記憶内容を示す模式的図である。
【図６】本発明の実施形態２に係る外部記憶手段８００の内部構成図である。
【図７】主記憶手段１００に格納されているデータを外部記憶手段８００へ出力する場合の動作を示すフローチャートである。
【図８】図１に示すデータ転送システム内でシステムクラッシュが生じたときにデータの復旧を行う場合の動作を示すフローチャートである。
【図９】本発明の実施形態２に係る外部記憶手段８００のチェックサム格納域８１０及びデータ格納域８２０の記憶内容を示す模式図である。
【図１０】本発明の実施形態３のエラー検出装置を備えたデータ転送システムの模式的な構成を示すブロック図である。
【図１１】図１０の外部記憶手段８００から主記憶手段１００へデータを出力する場合の動作を示すフローチャートである。
【符号の説明】
１００  主記憶手段
１１０  チェックサム格納域
１２０  データ格納域
２００  データ一貫性維持手段
２１０  チェックサム／データ入出力制御手段
２２０  転送エラー検出手段
２３０  チェックサム計算手段
５００  入出力制御手段
【図１】
0003680821.tif 000002
【図２】
0003680821.tif 000003
【図３】
0003680821.tif 000004
【図４】
0003680821.tif 000005
【図５】
0003680821.tif 000006
【図６】
0003680821.tif 000007
【図７】
0003680821.tif 000008
【図８】
0003680821.tif 000009
【図９】
0003680821.tif 000010
【図１０】
0003680821.tif 000011
【図１１】
0003680821.tif 000012