(57)【要約】【課題】二次記憶手段としてメモリ部及びコントローラ部と有する記憶手段ＣＦを用い、ＣＦのデータ書き換え動作中に電源遮断が生じてもデータ消失が発生せずデータ書き換え動作を正確に再実行可能なデータ記憶制御装置を実現する。【解決手段】主記憶メモリ１３５のバックアップデータ１３０を二次記憶装置としてのＣＦ１４５の記憶ブロック単位と同一の記憶ブロック単位に分割し、ＣＦ１４５へのデータ書き込み時にはバックアップデータ１３０領域における、データ書き込みセクタを含むブロックにフラグをセットする。セクタ単位の書き込みデータがＣＦ１４５に転送されるが、ＣＦ１４５ではその書き込みデータを含むブロック全体の書き込みを実行する。ＣＦ１４５のデータ書き込み途中で電源遮断が発生した場合はバックアップデータ１３０領域におけるフラグがセットされた位置のブロック全体の書き込みをＣＦ１４５に対して行う。【選択図】      図１
2006113841.tif 000002
【特許請求の範囲】
【請求項１】
主記憶手段と、メモリ部及びコントローラ部と有する二次記憶手段と、上記主記憶手段及び二次記憶手段へのデータの読み書きを制御するデータ制御手段とを備えるデータ記憶制御装置において、
このデータ記憶制御装置への供給電力が遮断したか否かと電力供給が復旧したことを検出する電力遮断検出手段を備え、
上記データ制御手段は、上記主記憶手段に、バックアップデータ領域が形成され、このバックアップデータ領域は、上記二次記憶手段のデータ書き換え単位であるブロックサイズの倍数をデータ格納単位とし、上記バックアップデータ領域から上記二次記憶手段にデータの書き込みを実行するとき、バックアップデータ領域の書き込みデータが存在するブロックを示す位置情報を記憶し、上記電力遮断検出手段が、データ書き込み中に電力遮断を検出し、その後、電力の復旧を検出すると、記憶した位置情報のブロック単位で、二次記憶手段に対してデータの書き込みを再度実行することを特徴とするデータ記憶制御装置。
【請求項２】
請求項１記載のデータ記憶制御装置において、上記二次記憶手段からのデータ読み出しの際に、実際の二次記憶手段からのデータ読み出しに先んじて、上記バックアップデータ領域を検索し、読み出し対象領域に対応する二次記憶手段のデータ記録位置がバックアップデータ領域内に存在した場合は、バックアップデータを読み出し、バックアップデータ領域内に上記二次記憶手段のデータ記録位置が存在しなかった場合は、読み出し対象領域を二次記憶手段から読み出し、読み出したデータを後の読み出し要求のためにバックアップデータとして主記憶手段に格納することを特徴とするデータ記憶制御装置。
【請求項３】
請求項１記載のデータ記憶制御装置において、上記データ制御装置は、
上記二次記憶手段へのデータ書き込みの際に、データ書き込みに先んじて、上記バックアップデータ領域を検索し、書き込み対象領域に対応する上記二次記憶手段の記録位置がバックアップデータ領域内に存在しなかった場合は、書き込み対象領域が含まれる上記二次記憶手段の消去ブロックの全部の記録情報を読み出してバックアップデータとし、
書き込み対象領域がバックアップデータ領域内に存在するが、書き込み対象領域が含まれる上記二次記憶手段の消去ブロックの一部の記録情報しか存在しない場合は、不足している記録情報を上記二次記憶手段から読み出して補うことで、上記二次記憶手段書き込みコマンド発行前には書き込み対象領域が含まれる上記二次記憶手段の消去ブロックの全部の記録情報が、バックアップデータとして主記憶手段に格納されることを特徴とするデータ記憶制御装置。
【請求項４】
請求項１から３のうちのいずれか一項記載のデータ記憶制御装置において、上記,主記憶手段は、不揮発性メモリであり、上記二次記憶手段はフラシュメモリを有することを特徴とするデータ記憶制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記憶制御装置に係わり、特に、データ書き込み中に発生した意図しない電力遮断によって、不良状態となったメモリを、正常状態へと復旧する機能を有するデータ記憶制御装置に関する。
【背景技術】
【０００２】
フラッシュメモリを用いたデータ記憶制御装置において、データ書き込み中に発生した意図しない電力遮断によって、不良状態となったメモリを正常状態へと復旧する方法が知られている。
【０００３】
この復旧方法の一例として、ファイルシステムに工夫を凝らしたものがある。代表的なファイルシステムであるＦＡＴファイルシステムに適用可能な方法の一つとして、特許文献１に記載された技術がある。
【０００４】
この特許文献１に記載された技術は、ＦＡＴファイルシステムを構成する３種類の情報、すなわちＦＡＴ情報、ノード情報（ディレクトリエントリ）、ファイルデータ情報のいずれの書き込み中に電力遮断が発生しても、次回復電時には、これら３情報の関係に生じた矛盾から復旧し、書き込み前の状態にロールバックすることを可能とするものである。
【０００５】
特許文献１に記載の技術は、データ書き換えの際に、書き換え対象領域を上書きするのではなく、まず、空き領域に更新後データを書き込んで冗長性を持たせた状態をつくり、しかる後に、更新前データを削除することで、電力遮断に対する耐性を向上する技術である。
【０００６】
また、フラッシュメモリの性質を考慮した技術として、特許文献２に記載された技術がある。この特許文献２に記載された技術は、フラッシュメモリと、それを制御する制御部とを接続するバスの情報を、所定のタイミングで記録する補助不揮発性メモリを有しており、復電時には補助不揮発性メモリに保存されている情報に基づいて復旧処理を実施するものである。
【０００７】
また、特許文献３に記載された技術は、不揮発性メモリからフラッシュメモリへのデータ書き込み中に、電源の瞬断があった場合に、電源再投入時に自己診断を行い、エラー処理を行う技術である。
【０００８】
この特許文献３に記載の技術においては、不揮発性メモリの記憶領域内に、フラッシュメモリの記憶領域の書き込み状態を記憶するフラグ領域を有している。そして、電源瞬断があった場合、不揮発性メモリのフラグ領域のデータに基づき、フラッシュメモリへの書き込みエラーを判断している。
【０００９】
【特許文献１】特開２００４−１０２６６０号公報
【特許文献２】特開２０００−９９４０５号公報
【特許文献３】特開２００１−３４４１５６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ところで、フラッシュメモリを用いた外部記憶装置は、小型軽量・低価格・高信頼などの優れた特徴により、主にデジタルカメラ向けの記憶装置として一般に普及している。
【００１１】
一方、産業用の組み込みコントローラの分野においても、信頼性が要求されるコントローラでは、回転式ハードディスクと異なり機械的な稼動部がないため信頼性の高いフラッシュメモリを、ハードディスクの代替とするなどの採用が進んでいる。
【００１２】
特に、高信頼の要求されるプラント制御装置においては、トレンドデータ蓄積や障害情報蓄積用の大容量外部二次記憶装置としてフラッシュメモリは好適である。
【００１３】
ここで、フラッシュメモリチップとコントローラチップとを搭載する二次記憶手段（ＣＦ）をハードディスクに代替することができれば便利である。
【００１４】
しかしながら、ＣＦには回転式ハードディスクにはない特有の問題がある。それは、データ書き換えに要する時間が長いため、書き込み中の意図しない電力遮断に対する信頼性が低いという問題である。
【００１５】
書き込み中に電力遮断した場合、次復旧電時には、書き込み前の状態に戻っていることが望ましいが、現実には、不定の状態になり、書き込み後のデータのみならず、書き込み前のデータをも消失してしまう。
【００１６】
データの消失は、高信頼の要求されるプラント制御装置等では許容されるものではない。そこで、このような場合にとられる従来からの方法として、無停電電源装置を適用することが考えられる。
【００１７】
しかしながら、プラント制御装置等にも高い経済性が要求される近年においては、装置の高価格化につながる無停電電源装置は敬遠されつつある。
【００１８】
そこで、特許文献１記載の技術を用いて、ＣＦが有する上記問題点を解消することが考えられる。
【００１９】
しかしながら、特許文献１記載の技術は、ＦＡＴ情報を始めとするファイルシステム管理情報に生じた矛盾の修復を想定しているため、ＣＦにおけるＥＣＣエラーの如き記録メディアのエラーから復旧することは困難な場合が多い。
【００２０】
その理由として、ＣＦは、内部のフラッシュメモリを書き換える際に、ＣＦ制御ソフトウェアからの書き込み要求サイズ（セクタ単位での書き込み要求サイズ）に関わらず、一般的にブロックとよばれる、セクタより大きな単位で書き換えを行っていることが挙げられる。
【００２１】
なお、ＣＦではなく、一般のフラッシュメモリの場合は、書き換え要求自体がブロック単位でなされるようなインターフェースが設けられ、書き込み要求サイズと実際の書き換えサイズとは一致している。
【００２２】
ＣＦの場合における、このような書き込み要求サイズと実際の書き換えサイズとの相違は、通常はＣＦ内部のフラッシュメモリコントローラによって隠蔽され、データの整合性を保持するよう適切に制御されてはいるものの、書き込み中の電力遮断によってフラッシュメモリが不良状態となった場合はその限りではない。
【００２３】
すなわち、セクタ単位で書き換え要求した側は、ＣＦが、その書き換え要求されたセクタを含むブロック全体として書き換えを実行していることは認識しえず、書き換え中に電力遮断が、生じた場合は、書き換え要求したセクタから書き換ええ再開となる。このような状況では、ＣＦが書き換え中であったブロックの内容は復旧できず、最大でブロックサイズ分の記憶領域が不良状態となる可能性があるのである。
【００２４】
特許文献１に記載の技術をＣＦに適用したときの問題点は、具体的には次のとおりである。
【００２５】
更新後データの書き込み中に電力遮断が発生し、且つ更新後データを書き込むために選択された空き領域が、更新前データと同一のフラッシュメモリ消去ブロックに含まれていた場合は、更新後データと更新前データの両方が消失してしまい、正常状態にロールバックできない可能性がある。
【００２６】
また、特許文献２記載の技術は、特にフラッシュメモリに対して有効だが、実施するにはフラッシュメモリとそれを制御する制御部とを接続するバスに、補助不揮発性メモリを接続する必要がある。
【００２７】
しかし、フラッシュメモリとその制御部とがパッケージ化され、すでに一体となったＣＦに対して、補助不揮発性メモリを接続することは、ＣＦ利用者の立場では不可能なことである。
【００２８】
また、特許文献３記載の技術を、適用したとしても、主記憶装置側では、セクタ単位でデータ書き換え要求をしているので、フラグ領域も、ＣＦの実際の書き換え単位であるブロックとは対応しておらず、このフラグ領域のみの記憶情報からでは、ＣＦの消失したデータを復活させることはきない。
【００２９】
本発明の目的は、二次記憶手段として、メモリ部及びコントローラ部と有する記憶手段ＣＦを用い、このＣＦにデータ書き換え動作中に電源遮断が生じても、データの消失が発生せず、データ書き換え動作を正確に再実行可能な、フラッシュメモリを用いたデータ記憶制御装置を実現することである。
【課題を解決するための手段】
【００３０】
本発明においては、主記憶メモリのバックアップデータを、二次記憶装置としてのＣＦの記憶ブロック単位と、同一の記憶ブロック単位に分割し、ＣＦへのデータ書き込み時には、バックアップデータ領域における、データ書き込みセクタを含むブロックにフラグをセットする。セクタ単位の書き込みデータがＣＦに転送されるが、ＣＦではその書き込みデータを含むブロック全体の書き込みを実行する。
【００３１】
ＣＦのデータ書き込み途中で電源遮断が発生した場合は、バックアップデータ領域におけるフラグがセットされた位置のブロック全体の書き込みをＣＦに対して行う。
【００３２】
ＣＦへのデータ書き込みが終了したら、バックアップデータ領域の上記フラグは、リセットされる。
【００３３】
本発明は次のように構成される。  
（１）主記憶手段と、メモリ部及びコントローラ部と有する二次記憶手段と、上記主記憶手段及び二次記憶手段へのデータの読み書きを制御するデータ制御手段とを備えるデータ記憶制御装置において、このデータ記憶制御装置への供給電力が遮断したか否かと電力供給が復旧したことを検出する電力遮断検出手段を備え、上記データ制御手段は、上記主記憶手段に、バックアップデータ領域が形成され、このバックアップデータ領域は、上記二次記憶手段のデータ書き換え単位であるブロックサイズの倍数をデータ格納単位とし、上記バックアップデータ領域から上記二次記憶手段にデータの書き込みを実行するとき、バックアップデータ領域の書き込みデータが存在するブロックを示す位置情報を記憶し、上記電力遮断検出手段が、データ書き込み中に電力遮断を検出し、その後、電力の復旧を検出すると、記憶した位置情報のブロック単位で、二次記憶手段に対してデータの書き込みを再度実行する。
【００３４】
（２）好ましくは、上記（１）において、上記二次記憶手段からのデータ読み出しの際に、実際の二次記憶手段からのデータ読み出しに先んじて、上記バックアップデータ領域を検索し、読み出し対象領域に対応する二次記憶手段のデータ記録位置がバックアップデータ領域内に存在した場合は、バックアップデータを読み出し、バックアップデータ領域内に上記二次記憶手段のデータ記録位置が存在しなかった場合は、読み出し対象領域を二次記憶手段から読み出し、読み出したデータを後の読み出し要求のためにバックアップデータとして主記憶手段に格納する。
【００３５】
（３）また、好ましくは、上記（１）において、上記データ制御装置は、上記二次記憶手段へのデータ書き込みの際に、データ書き込みに先んじて、上記バックアップデータ領域を検索し、書き込み対象領域に対応する上記二次記憶手段の記録位置がバックアップデータ領域内に存在しなかった場合は、書き込み対象領域が含まれる上記二次記憶手段の消去ブロックの全部の記録情報を読み出してバックアップデータとし、書き込み対象領域がバックアップデータ領域内に存在するが、書き込み対象領域が含まれる上記二次記憶手段の消去ブロックの一部の記録情報しか存在しない場合は、不足している記録情報を上記二次記憶手段から読み出して補うことで、上記二次記憶手段書き込みコマンド発行前には書き込み対象領域が含まれる上記二次記憶手段の消去ブロックの全部の記録情報が、バックアップデータとして主記憶手段に格納される。
【００３６】
（４）また、好ましくは、上記（１）〜（３）において、上記,主記憶手段は、不揮発性メモリであり、上記二次記憶手段はフラッシュメモリを有する。
【発明の効果】
【００３７】
本発明によれば、二次記憶装置としてＣＦを用いた場合でも、データの消失が発生せず、データ書き換え動作を正確に再実行可能な、フラッシュメモリを用いたデータ記憶制御装置を実現することができる。
【００３８】
また、本発明をプラント制御装置に適用すれば、一般に流通している安価なＣＦを用いて、意図しない電力遮断によるデータ消失に対して耐性のあるプラント制御装置を、簡便に実現できる。
【発明を実施するための最良の形態】
【００３９】
以下、本発明の実施形態を添付図面を参照して説明する。  
なお、以下に説明する実施形態は、本発明を、プラント制御装置のコントローラに適用した場合の例であり、電源投入後の起動時間を短縮するために不揮発性の主記憶メモリを有し、また、トレンドデータ蓄積や障害情報蓄積のための大容量二次記憶装置として、メモリ部及びコメントローラ部と有する記憶手段（ＣＦ）を有する例である。
【００４０】
図１は、本発明の一実施形態であるフラッシュメモリを用いたデータ記憶制御装置であるコントローラの概略ブロック図であり、図６は本発明が適用されるプラント制御装置の全体概略図である。
【００４１】
まず、図６を参照して、プラント制御装置の全体構成を説明する。  
図６において、操作卓６００とコントローラ１００とが通信路６０５によって接続され、操作卓６００からの指示に基づいて、プラント６１０を構成するセンサやバルブ等のＩ／Ｏ制御をコントローラ１００が行う。
【００４２】
落雷等によってコントローラ１００への電力供給の瞬断が発生した場合でも、速やかに制御を回復するために、プラント制御装置向けコントローラ１００には、電源投入後に短時間で立ち上げ処理を完了できる機能を有している。
【００４３】
この高速立ち上げ機能実現のための手段として、コントローラ１００にはバッテリを接続し、電源が遮断しても、後述する主記憶メモリの内容が保持されるようになっている。
【００４４】
この不揮発性の主記憶メモリによって、一般的な情報処理装置の如き外部二次記憶装置からの基本ソフトのローディングといった時間のかかる処理が不要となり、１秒以内に立ち上げ処理が完了する。また、コントローラ１００には、トレンドデータの蓄積や障害情報の蓄積のためのＣＦが装着されている。
【００４５】
次に、図１を参照して、コントローラ１００の構成を説明する。  
図１において、コントローラ１００は、アプリケーションプログラム１０５と、ファイルシステム１１０と、バックアップデータ作成手段１１５と、電力遮断検出手段１２０と、復旧手段１２５と、ＣＦ制御ソフトウェア１４０と、不揮発性の主記憶メモリ１３５とを備えている。このコントローラ１００には、外部二次記憶装置として、ＣＦ１４５が接続されている。
【００４６】
不揮発性の主記憶メモリ１３５には、バックアップデータ１３０が格納されている。このバックアップデータ１３０は、バックアップデータ作成手段１１５、電力遮断検出手段１２０、復旧手段１２５によって管理される。
【００４７】
図２（ａ）は、ＣＦ１４５に内蔵されているフラッシュメモリ１４５の内容説明図である。図２（ａ）に示すように、フラッシュメモリ１４５は、複数のブロック２００から構成されていることを表している。
【００４８】
ここで、ブロックとは、フラッシュメモリにおける消去・書き込みの単位である。また、ブロックの大きさと個数は、フラッシュメモリの品種により異なるが、この例では、１ブロック３２ＫＢ、ブロック数１６Ｋ個としている。ゆえに、ＣＦの総記録容量は、３２ＫＢ×１６Ｋ＝５１２ＭＢである。
【００４９】
図２（ｂ）は、主記憶メモリ１３５におけるバックアップデータ１３０のデータ構造の概略を表している。図２（ｂ）に示すように、バックアップデータ１３０は、複数のブロックキャッシュ２０５と、ブロックキャッシュ２０５を管理する複数のブロックキャッシュ管理情報２１０とを備えている。
【００５０】
ブロックキャッシュ２０５の大きさは、後述するように、本発明ではブロックサイズの倍数でなければならないため、この例ではブロック２００のサイズと同じく３２ＫＢとしている。
【００５１】
ブロックキャッシュ１３０の個数について特に制約は設けないが、本発明においてはブロックキャッシュ１３０はＣＦの読み取り性能向上のためのディスクキャッシュとしての役割も併せ持つため、数が多いほど性能の向上が期待できる。実施形態では８個としている。ブロックキャッシュ管理情報２１０も、ブロックキャッシュ１３０と同数設ける必要がある。
【００５２】
図３は、一実施形態におけるブロックキャッシュ管理情報２１０の具体的なデータ項目を示す図である。図３に示すように、ブロックキャッシュ管理情報は５つの項目から構成されている。
【００５３】
すなわち、リスト構造を成すための「次の管理情報へのポインタ３００」と、管理情報に一対一で対応するブロックキャッシュ２０５を指し示す「ブロックキャッシュへのポインタ３０５」と、ブロックキャッシュ２０５に格納されているデータの先頭のセクタ番号を表す「先頭セクタ番号３１０」と、ブロックキャッシュ２０５内の実際の格納状況を表す「格納済みセクタマップ３１５」と、ＣＦへ書き込み中か否かを表す「書き込み状態フラグ３２０」とである。
【００５４】
ここで、一実施形態例では、書き込み状態フラグの値が０の時に「書き込み中ではない」ことを意味し、書き込み状態フラグの値が１の時に「書き込み中である」ことを意味している。
【００５５】
図４は、一実施形態におけるブロックキャッシュ管理情報２１０とブロックキャッシュ２０５との関係を示す図である。図４に示すように、複数のブロックキャッシュ管理情報２１０と複数のブロックキャッシュ２０５とは、一つのブロックキャッシュに対して、一つのブロックキャッシュ管理情報が対応し、一対一の関係がある。
【００５６】
また、ブロックキャッシュ管理情報２１０は、「次の管理情報へのポインタ」に基づいたリスト構造を成しており、先頭のブロックキャッシュ管理情報２１０のアドレスから、順次リストを手繰ってゆくことで、すべての管理情報と「ブロックキャッシュへのポインタ」によって示されるブロックキャッシュへアクセスすることができるようになっている。
【００５７】
次に、「先頭セクタ番号」と「格納済みセクタマップ」の用途について図５を参照して説明する。  
本発明の一実施形態では、図５に示すように、格納済みセクタマップ３１５はＡ〜Ｄに４等分されており、Ａ〜Ｄの各領域は、このブロックキャッシュ管理情報２１０に対応するブロックキャッシュ２０５を同じく４等分した時の、ブロックキャッシュ２０５の各領域Ａ〜Ｄ（各領域８ＫＢ）について、その内容が、対応するＣＦ領域からキャッシュされたものであるかどうかを表している。
【００５８】
図５に示した例においては、格納済みセクタマップ３１５が、Ａ〜Ｄの順に０、１、０、１となっているので、値０が未格納、値１が格納済みを表すものとすれば、領域Ａはデータ未格納、領域Ｂはデータは可能済み、領域Ｃはデータ未格納、領域Ｄはデータは可能済みとなる。
【００５９】
先頭セクタ番号３１０は、領域Ａの先頭のセクタ番号を表している。ここで、セクタとは、ＣＦの記録位置を表現する座標であり、一般的にはセクタ番号０が先頭の記録位置に対応し、以下１セクタ＝５１２バイトとして、セクタ番号と記録位置は一対一対応する。セクタ番号は、ＣＦを読み書きする際に、ＣＦ制御ソフトウェアが指示し、ＣＦが参照する。
【００６０】
図５に示した例では、先頭セクタ番号は６４を示しているため、領域Ａはセクタ６４〜７９（計１６セクタ＝８ＫＢ）、領域Ｂはセクタ８０〜９５、領域Ｃはセクタ９６〜１１１、領域Ｄはセクタ１１２〜１２７に対応している。
【００６１】
なお、図５に示した例では、格納済みセクタマップ３１５を４等分しているが、最適な読み出し性能を達成するために、さらに粗くしたり（２等分など）、逆にさらに細かくしたり（８等分など）しても良い。
【００６２】
次に、本発明の一実施形態の動作について説明する。  
まず、ＣＦからのデータ読み取り時の動作について説明する。
【００６３】
図７は、ＣＦからのデータ読み取り時の動作フローチャートである。  
ブロックキャッシュ２０５を検索して、格納用ブロックキャッシュ２０５があるか否かを検索する（ステップ７００）。
【００６４】
ステップ７００で、格納用ブロックキャッシュが検索できなかった場合、ステップ７０５に進み、新たに格納用ブロックキャッシュ２０５を割付ける。ブロックキャッシュ２０５の割付けにおいては、有限個の（一実施形態においては８個の）ブロックキャッシュ２０５のなかから置換すべきキャッシュ２０５を１つ選択しなければならない（置換エントリ決定）。
【００６５】
選択の基準は、参照頻度の高低に基づいたり、あるいは乱数で決定することも考えられる。次に、ステップ７１０に進み、読み取り対象のセクタ位置を、ブロックキャッシュサイズで丸めることで先頭セクタ番号を算出し、選択したブロックキャッシュ管理情報の先頭セクタ番号に格納する。また、格納済みセクタマップをゼロクリアする。そして、ステップ７１５に進む。
【００６６】
ステップ７００において、格納用ブロックキャッシュが検索された場合には、ステップ７１５において、読み取り対象領域が、検索したブロックキャッシュにすでに格納されているかどうか判別する。この判別は、読み取り対象セクタ位置からブロックキャッシュ内相対位置Ａ〜Ｄを算出し、これに対応する格納済みセクタマップの領域の値が０か１かで判別する。
【００６７】
読み取り対象領域が格納されていなかった場合、ＣＦから対象領域を読み出し、ブロックキャッシュへ格納し、格納済みセクタマップに１を設定することで、対象領域が格納済みであることをマークする（ステップ７２０、７２５）。そして、ステップ７３０に進む。
【００６８】
この時点で、読み取り対象領域は必ずブロックキャッシュに格納されている。そして、ブロックキャッシュから、対象領域を読み出して処理を完了する（ステップ７３０）。
【００６９】
なお、置換キャッシュエントリの決定を、キャッシュへの参照頻度の高低に基づいて行う場合は、ここで参照頻度情報を更新しても良い。
【００７０】
次に、図８を参照してブロックキャッシュ検索動作について説明する。  
ブロックキャッシュの検索は、そのブロックキャッシュが読み書き要求セクタを含むか否かで検索する。つまり、対象セクタ位置と、各ブロックキャッシュ管理情報の先頭セクタ位置を比較することで行う（ステップ８００）。
【００７１】
先頭セクタ位置は、ブロックキャッシュに含まれるすべてのセクタを代表するものであるため、比較においては、対象セクタ位置が、先頭セクタ位置によって代表されるセクタ範囲に含まれるか否かの判別を行う。例えば、対象セクタ位置が８０だったと仮定して、先頭セクタ位置が６４なるブロックキャッシュが存在すれば、このキャッシュはセクタ６４〜１２７に対応しているため、検索ヒットとなる。
【００７２】
このような比較演算を、検索ヒットするかまたは未検索ブロックキャッシュがなくなるまで繰り返し実施する（ステップ８０５）。検索ヒットしなかった場合は、ミスヒットとなる。
【００７３】
以上説明したように、ブロックキャッシュをＣＦからのデータ読み取りの際のディスクキャッシュとして活用することで、見かけ上のＣＦ読み取り性能を向上することができる。
【００７４】
次に、ＣＦへのデータ書き込み時の動作について説明する。
【００７５】
図９はＣＦへのデータ書き込み動作フローチャートである。  
書き込み要求セクタ位置に対応するブロックキャッシュが存在するか否か検索し、存在しなかった場合は新たなキャッシュを割付けるところまでは、読み取り時の動作と同じである（ステップ９００、９０５、９１０）。
【００７６】
続いて、検索したキャッシュブロックのＡ〜Ｄの各領域について、すべての領域がキャッシュに格納されていることを確認する（ステップ９１５）。ステップ９１５で、未格納領域があれば、ＣＦからデータを読み取り（ステップ９２０）、格納済みセクタマップを更新する（ステップ９２５）。全領域が終了するまで、ステップ９１５、９２０、９２５を繰り返す（ステップ９３０）。こうして、すべての領域が格納されるようにする。
【００７７】
次に、書き込み要求位置のブロックキャッシュ内の対応領域に、書き込みデータを上書きする（ステップ９３５）。この時点で、書き込み対象領域を含むＣＦの消去ブロックの全データ情報と書き込み位置情報とが、ブロックキャッシュに格納されている。これがバックアップデータとなる。
【００７８】
続いて、実際のＣＦへの書き込みを行うが、その前に書き込み状態フラグを１にセットする（ステップ９４０）。
【００７９】
そして、ＣＦへ書き込みコマンドを発行し、実際にＣＦにデータを書き込む（ステップ９４５）。ここで書き込むサイズは、書き込み要求サイズ分のみを書き込む。
【００８０】
書き込みコマンドが完了したら、書き込み状態フラグを０にセットして、書き込み処理を完了する（９５０）。
【００８１】
以上の動作によって、ＣＦへの書き込みコマンド発行前に、書き込み対象領域を含むフラッシュメモリの消去ブロックの、書き込みデータ情報と書き込み位置情報とが、バックアップデータとして不揮発性の主記憶メモリに作成される。
【００８２】
そして、書き込み状態フラグの操作によって、電力遮断検出手段によるデータ書き込み中の意図しない電力遮断の検出を可能としている。
【００８３】
最後に、電力遮断検出処理／復旧処理の動作について、図１０を参照して説明する。なお、検出／復旧処理は、コントローラへの電源投入を起点として数えたときの、最初のＣＦアクセスに先んじて実施されるものである。
【００８４】
図１０において、書き込み状態フラグが１になっているブロックキャッシュ管理情報を検索する（ステップ９５５）。ここで、書き込み状態フラグの値１が意味するところは、そのブロックキャッシュに含まれる一部または全部のデータをＣＦへ書き込んでいる最中に、電力遮断が発生したことを表している。
【００８５】
ステップ９５５で、もし、そのような管理情報が見つかれば、その管理情報の「ブロックキャッシュへのポインタ」が指し示すブロックキャッシュの全データ情報を（一実施形態では３２ＫＢ）、先頭セクタ情報によって示されるＣＦの記録位置へ、再度書き込みを行う（ステップ９６０）。
【００８６】
電力遮断によって不良状態となる可能性のある記録領域は、最大でブロックサイズであるため、再書き込み処理においては、ここで示したようにブロック単位で実施することが重要である。
【００８７】
再書き込み完了後、書き込み状態フラグを０に戻し、検出／復旧処理を終了する（ステップ９６５）。
【００８８】
以上の処理を、書き込み状態フラグが１の管理情報が見つかるかまたは未検索の管理情報が無くなるまで繰り返す（ステップ９７０）。
【００８９】
なお、上述した例は、本発明を、プラント制御装置のコントローラに適用した場合の例であるが、これに限らず、二次記憶手段としてＣＦを用いたデータ記憶制御装置に適用可能である。
【図面の簡単な説明】
【００９０】
【図１】本発明の一実施形態におけるコントローラの概略ブロック図である。
【図２】ＣＦ内蔵されているフラッシュメモリの内容と、主記憶メモリに格納されたバックアップデータの内部構造を示す図である。
【図３】ブロックキャッシュ管理情報の構成図である。
【図４】ブロックキャッシュ管理情報とブロックキャッシュの関係図である。
【図５】先頭セクタ情報と格納済みセクタマップの構成図である。
【図６】本発明を適用したプラント制御装置の全体概略構成図である。
【図７】ＣＦからのデータ読み取り操作を説明する動作フローチャートである。
【図８】ブロックキャッシュ検索処理を説明する動作フローチャートである。
【図９】ＣＦへのデータ書込み操作を説明する動作フローチャートである。
【図１０】ＣＦの復旧処理を説明する動作フローチャートである。
【符号の説明】
【００９１】
１００        コントローラ
１０５        アプリケーションプログラム
１１０        ファイルシステム
１１５        バックアップデータ作成手段
１２０        電力遮断検出手段
１２５        復旧手段
１３０        バックアップデータ
１３５        不揮発性の主記憶メモリ
１４０        ＣＦ制御ソフトウェア
１４５        メモリ部及びコメントローラ部とを有する二次記憶手段（ＣＦ）
２００        フラッシュメモリの消去ブロック
２０５        ブロックキャッシュ
２１０        ブロックキャッシュ管理情報
３００        次の管理情報のポインタ
３０５        ブロックキャシュへのポインタ
３１０        先頭セクタ番号
３１５        格納済みセクタマップ
３２０        書き込み状態フラグ
６００        操作卓
６０５        通信路
６１０        プラント装置
【図１】
2006113841.tif 000003
【図２】
2006113841.tif 000004
【図３】
2006113841.tif 000005
【図４】
2006113841.tif 000006
【図５】
2006113841.tif 000007
【図６】
2006113841.tif 000008
【図７】
2006113841.tif 000009
【図８】
2006113841.tif 000010
【図９】
2006113841.tif 000011
【図１０】
2006113841.tif 000012