(57)【要約】【課題】データ保存を失敗してもデータを完全に喪失することを防ぐ手立てを提供する。【解決手段】所定の記憶領域を有する記憶部（８）と、前記記憶領域を複数の小領域に区分すると共に各小領域に管理番号を付与して前記記憶部を管理するもの（７）であって、データに当該データの更新順序を示す更新符号を付与し前記管理番号に基づいて前記各小領域に所定の順番で順次書き込む（２）一方、前記各小領域に記憶されたデータを読み出して用いる際には前記更新符号に基づいて最新と判断されるデータを採用する（２）書込・読出制御部とを備えるようにする。【選択図】図１
2007199977.tif 000002
【特許請求の範囲】
【請求項１】
所定の記憶領域を有する記憶部と、
前記記憶領域を複数の小領域に区分すると共に各小領域に管理番号を付与して前記記憶部を管理するものであって、データに当該データの更新順序を示す更新符号を付与し前記管理番号に基づいて前記各小領域に所定の順番で順次書き込む一方、前記各小領域に記憶されたデータを読み出して用いる際には前記更新符号に基づいて最新と判断されるデータを採用する書込・読出制御部と
を備えることを特徴とするデータ記憶装置。
【請求項２】
前記データは、自身と他とを識別可能にする識別情報を含み、
前記書込・読出制御部は、前記データを前記記憶部に保存する際、当該データの前記識別情報と同一の識別情報を有するデータ（旧データ）が前記記憶部に保存されている場合には、前記データ及び前記更新符号を、前記旧データのうち前記更新符号に基づいて最新と判断されるものが保存されている前記小領域以外の前記小領域に保存する
ことを特徴とする請求項１に記載のデータ記憶装置。
【請求項３】
前記書込・読出制御部は、前記データを前記記憶部に保存する際、前記データから生成した誤り訂正符号を前記データに付加して前記記憶部に保存する
ことを特徴とする請求項１又は２に記載のデータ記憶装置。
【請求項４】
記憶部の記憶領域を複数の小領域に区分すると共に各小領域に管理番号を付与して前記記憶部を管理し、データに当該データの更新順序を示す更新符号を付与し前記管理番号に基づいて前記各小領域に所定の順番で順次書き込む一方、前記各小領域に記憶されたデータを読み出して用いる際には前記更新符号に基づいて最新と判断されるデータを採用する
ことを特徴とするデータ記憶方法。
【請求項５】
データを前記記憶部に保存する際、当該データが含む自身と他とを識別可能にする識別情報と同一の識別情報を有するデータ（旧データ）が前記記憶部に保存されている場合には、前記データ及び前記更新符号を、前記旧データのうち前記更新符号に基づいて最新と判断されるものが保存されている前記小領域以外の前記小領域に保存する
ことを特徴とする請求項４に記載のデータ記憶方法。
【請求項６】
前記データを前記記憶部に保存する際、前記データから生成した誤り訂正符号を前記データに付加して前記記憶部に保存する
ことを特徴とする請求項４又は５に記載のデータ記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記憶装置及びデータ記憶方法に関する。
【背景技術】
【０００２】
従来、不揮発メモリにデータを保存し、当該データを不揮発メモリから読み出して用いる際、不揮発メモリから読み出したデータが正しいか否か、つまり、不揮発メモリに保存されているデータと不揮発メモリから読み出したデータとが同一のものであるか否かを判断する為に、ＣＲＣ（Cyclic Redundancy Check）や、チェックサム（Check Sum）等が利用されている。
ＣＲＣを用いる場合を例に挙げると、まず、不揮発メモリにデータを保存するにあたって、データからＣＲＣコードを生成し、データにＣＲＣコードを付加して不揮発性メモリに保存する。そして、不揮発メモリからデータを読み出すにあたって、データと共にＣＲＣコードをも読み出し、不揮発メモリから読み出したデータから新たにＣＲＣコードを生成し、当該ＣＲＣコードと不揮発メモリから読み出したＣＲＣコードとが一致するか否かを判断する。一致すれば、不揮発メモリから読み出したデータが正常であると判断して利用に供する。一致しなければ、不揮発メモリから読み出したデータに異常があると判断して破棄する。
【非特許文献１】奥村晴彦 著 “Ｃ言語による最新アルゴリズム事典”（３３２〜３３８ページ）、ＩＳＢＮ４−８７４０８−４１４−１、技術評論社
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来、上述のようにして、不揮発メモリに保存し読み出したデータが正常であるか否かについて万全を期するようにしているが、しかし、データ保存中に機器への給電が断たれた等の理由により、データ保存を失敗することがある。このような場合には、不揮発メモリに保存されたデータが破損してしまい、正常なデータを読み出すことができなくなってしまう。また、当該データが機器の動作状態や動作命令等であった場合には、機器の動作が困難になったり機器が意図に反した動作を行うようになったりし、機器の利用に支障を生じてしまう。
【０００４】
本発明は、上述した事情に鑑みてなされたもので、データ保存を失敗してもデータを完全に喪失することを防ぐ手立てを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明では、データ記憶装置に係る第１の手段として、所定の記憶領域を有する記憶部と、前記記憶領域を複数の小領域に区分すると共に各小領域に管理番号を付与して前記記憶部を管理するものであって、データに当該データの更新順序を示す更新符号を付与し前記管理番号に基づいて前記各小領域に所定の順番で順次書き込む一方、前記各小領域に記憶されたデータを読み出して用いる際には前記更新符号に基づいて最新と判断されるデータを採用する書込・読出制御部とを備えるものを採用した。
【０００６】
また、データ記憶装置に係る第２の手段として、上記第１の手段において、前記データは、自身と他とを識別可能にする識別情報を含み、前記書込・読出制御部は、前記データを前記記憶部に保存する際、当該データの前記識別情報と同一の識別情報を有するデータ（旧データ）が前記記憶部に保存されている場合には、前記データ及び前記更新符号を、前記旧データのうち前記更新符号に基づいて最新と判断されるものが保存されている前記小領域以外の前記小領域に保存するものを採用した。
【０００７】
データ記憶装置に係る第３の手段として、上記第１又は２の手段において、前記書込・読出制御部は、前記データを前記記憶部に保存する際、前記データから生成した誤り訂正符号を前記データに付加して前記記憶部に保存するものを採用した。
【０００８】
更に本発明では、データ記憶方法に係る第１の手段として、記憶部の記憶領域を複数の小領域に区分すると共に各小領域に管理番号を付与して前記記憶部を管理し、データに当該データの更新順序を示す更新符号を付与し前記管理番号に基づいて前記各小領域に所定の順番で順次書き込む一方、前記各小領域に記憶されたデータを読み出して用いる際には前記更新符号に基づいて最新と判断されるデータを採用する方法を採用した。
【０００９】
また、データ記憶方法に係る第２の手段として、上記第１の手段において、データを前記記憶部に保存する際、当該データが含む自身と他とを識別可能にする識別情報と同一の識別情報を有するデータ（旧データ）が前記記憶部に保存されている場合には、前記データ及び前記更新符号を、前記旧データのうち前記更新符号に基づいて最新と判断されるものが保存されている前記小領域以外の前記小領域に保存する方法を採用した。
【００１０】
データ記憶方法に係る第３の手段として、上記第１又は２の手段において、前記データを前記記憶部に保存する際、前記データから生成した誤り訂正符号を前記データに付加して前記記憶部に保存する方法を採用した。
【発明の効果】
【００１１】
本発明によれば、記憶部が複数備える領域を時系列的に移動しながら利用し、データの履歴を最新のものを優先しながら保存しておくことができるので、データ保存の際に失敗があっても、最新の履歴を復帰させることができるため、データを完全に喪失することを防ぎ、データの喪失を最小限にとどめることができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の第１実施形態について図面を参照して説明する。図１は、本実施形態におけるデータ記憶装置１の構成を示すブロック図である。
データ記憶装置１は、ＣＰＵ２（書込・読出制御部の一部）と、ＲＯＭ３と、ＲＡＭ４と、Ｉ／Ｏ５と、不揮発メモリ６とを備えている。
【００１３】
ＲＯＭ３は、ＣＰＵ２が実行する制御プログラムや当該制御プログラムの実行に必要な各種データ等を記憶している。ＲＡＭ４は、ＣＰＵ２によって読み書きされ、不揮発メモリ６から読み出したデータや当該データに行った編集結果等を一時的に記憶する。
Ｉ／Ｏ５は、ユーザによる操作を受け付けるキーやユーザに対して情報を提示する画面等を備え、情報の入出力を行う。
【００１４】
不揮発メモリ６は、ページ管理部７（書込・読出制御部の一部）とデータ記憶部８（記憶部）とを備えている。ページ管理部７は、データ記憶部８のアドレスを所定の間隔で区切ったものをページ（小領域）として、ページ番号（管理番号）を付与して管理している。具体的には、例えば、ページ１はアドレス0000〜00FF番地、ページ２はアドレス0100〜01FF番地、…、ページｎ−１はアドレスFE00〜FEFF番地、ページｎはアドレスFF00〜FFFF番地、というような管理である。
このような不揮発メモリ６に対して、ＣＰＵ２は、ページを指定してデータを読み書きする。指定されないページに対しては、読み出しも書き込みも行わない。
不揮発メモリ６に記憶されたデータは、データ記憶装置１の電源投入時に、ＲＯＭ３に記憶されたデータ復帰処理プログラムを実行するＣＰＵ２によって、ＲＡＭ４に複写される。また、ＲＡＭ４に一時的に記憶されているデータは、ＲＯＭ３に記憶されたデータ保存処理プログラムを実行するＣＰＵ２によって、不揮発メモリ６に保存される。
なお、不揮発メモリ６には、データとともに、当該データのファイル名（識別情報）と、データから生成されて保存ざれたＣＲＣコード（誤り訂正符号）と、同一のファイル名を有するデータの不揮発メモリ６への保存回数に応じた更新番号（更新符号）とが、保存されている。
【００１５】
上述のデータ復帰処理及びデータ保存処理について、図３に示すフローチャートを用いて説明する。まず、データ記憶装置１に電源が投入されると、ＣＰＵ２は、ページ番号として１を指定し（ステップＳ１）、不揮発メモリ６のページ番号に対応するアドレス範囲に記憶されたデータ、ＣＲＣコード及び更新番号を読み込む（ステップＳ２）。続いて、ＣＰＵ２は、ステップＳ２で読み込んだデータから新たにＣＲＣコードを生成する（ステップＳ３）。
更に、ＣＰＵ２は、ステップＳ２で読み込んだＣＲＣコードとステップＳ３で生成したＣＲＣコードとを比較し、一致すれば（ステップＳ４のＹｅｓ）、ステップＳ２で読み込んだデータは正常であると判断してデータフラグに正常を示す値を代入し（ステップＳ５）、一致しなければ（ステップＳ４のＮｏ）、ステップＳ２で読み込んだデータは異常であると判断してデータフラグに異常を示す値を代入する（ステップＳ６）。
そして、ＣＰＵ２は、ＲＡＭ４の一部領域４ａに、ページ番号、ページ番号毎のデータ、データフラグ（正常又は異常）及び更新番号を記憶させる。
ＣＰＵ２は、最終ページであるか否かを判断し（ステップＳ７）、最終ページでなければ（ステップＳ７のＮｏ）、次のページに移り（ステップＳ８）、ステップＳ２〜Ｓ６の処理を行う。
【００１６】
ＣＰＵ２は、ステップＳ７で最終ページであったら（ステップＳ７のＹｅｓ）、ページ番号を１に戻し（ステップＳ９）、ＲＡＭ４の一部領域４ａに記憶された当該ページ番号のデータのデータフラグは正常であるか否かを判断し（ステップＳ１０）、正常であれば（ステップＳ１０のＹｅｓ）、続いて、ここまでに読み出したデータのうち更新番号が最大であるか否かを判断し（ステップＳ１１）、更新番号が最大であれば（ステップＳ１１のＹｅｓ）、当該ページ番号をＲＡＭ４の一部領域４ｂに保存する（ステップＳ１２）。
そして、ＣＰＵ２は、最終ページであるか否かを判断し（ステップＳ１３）、最終ページでなければ（ステップＳ１３のＮｏ）、次のページに移り（ステップＳ１４）、ステップＳ１０〜Ｓ１２の処理を行う。
ステップＳ１０でデータフラグが異常であった場合（ステップＳ１０のＮｏ）とステップＳ１１で更新番号が最大でなかった場合（ステップＳ１１のＮｏ）とには、ステップＳ１３へ移る。
ステップＳ１３で最終ページであった場合には（ステップＳ１３のＹｅｓ）、ＣＰＵ２は、最終的にＲＡＭ４の一部領域４ｂに保存されているページのデータを最新保存データと判断し、このページのデータを機器で使用するデータとしてＲＡＭ４の一部領域４ｃに展開する。このとき、ＣＰＵ２は、ＲＡＭ４の一部領域４ｂに保存されている当該データのページ番号に１を加算し、次回のデータ保存に備える（ステップＳ１５）。
【００１７】
データ記憶装置１は、何らかの理由によりデータ記憶装置１への給電が突如断たれたような場合でも喪失してはならないデータが変更又は更新される都度、次のデータ保存処理を行う。まず、ＣＰＵ２は、不揮発メモリ６に保存すべきデータをＲＡＭ４から収集し（ステップＳ２１）、当該データの更新番号に１を加算し（ステップＳ２２）、当該データからＣＲＣコードを生成する（ステップＳ２３）。そして、ＣＰＵ２は、ＲＡＭ４の一部領域４ｂに保存されたページ番号を指定して、不揮発メモリ６に、ステップＳ２１で収集したデータ、ステップＳ２２で算出した更新番号及びステップＳ２３で生成したＣＲＣコードを保存する（ステップＳ２４）。
最後に、ＣＰＵ２は、ＲＡＭ４の一部領域４ｂに保存されている当該データのページ番号に１を加算し、次回のデータ保存に備える（ステップＳ２５）。
【００１８】
ここで、データ復帰処理において、不揮発メモリ６にデータが保存されていなかった場合には、全頁について、ステップＳ４でデータ異常と判断される。そして、ステップＳ１２でいずれのページ番号も保存されず、ステップＳ１５で新規のデータ保存に備えてページ番号が１に初期化される。
【００１９】
このようなデータ記憶装置１によれば、不揮発メモリ６に記憶されたデータで正常に読み出されたもののうち最新のデータを編集し、保存する際には、前回不揮発メモリ６から読み出してデータ記憶装置１で使用した正常データに上書きすることなく、その次のページに保存し、更なる編集後の保存においては更に次のページに保存するため、データ保存時にデータ記憶装置１への給電が突如断たれてデータ保存を失敗したような場合でも、当該保存処理の直前の保存処理で保存されたデータが使用可能であるので、不慮の場合のデータ喪失を最小限にとどめることができる。
【００２０】
次に、本発明の第２実施形態について、図３のデータ記憶装置１０１の構成を示すブロック図を用いて説明する。データ記憶装置１０１は、ＣＰＵ１０２（書込・読出制御部の一部）と、ＲＯＭ１０３と、ＲＡＭ１０４と、Ｉ／Ｏ１０５と、複数の不揮発メモリ１０６（小領域）からなるメモリ集団１０６ａ（記憶部）と、メモリ管理部１０７（書込・読出制御部の一部）とを備えている。
【００２１】
ＲＯＭ１０３、ＲＡＭ１０４及びＩ／Ｏ１０５の働きは、第１実施形態のＲＯＭ３、ＲＡＭ４及びＩ／Ｏ５の働きと同じであるので、説明を省略する。
【００２２】
メモリ管理部１０７は、複数の不揮発メモリ１０６それぞれに番号付けし、メモリ番号（管理番号）により複数の不揮発メモリ１０６を区別し、管理している。
不揮発メモリ１０６は、排他制御される制御線１０６ｂを有しており、一つのメモリ管理部１０７で管理される複数の不揮発メモリ１０６の制御線１０６ｂは、同一のメモリ管理部１０７に接続されている。これにより、一つのメモリ管理部１０７で管理される複数の不揮発メモリ１０６は、排他的に制御され、指定されない番号の不揮発メモリ１０６に対しては、読み出しも書き込みも行われない。
このような不揮発メモリ１０６に対して、ＣＰＵ１０２は、メモリ番号を指定してデータを読み書きする。
【００２３】
不揮発メモリ１０６に記憶されたデータは、データ記憶装置１０１の電源投入時に、ＲＯＭ１０３に記憶されたデータ復帰処理プログラムを実行するＣＰＵ１０２によって、ＲＡＭ１０４に複写される。また、ＲＡＭ１０４に一時的に記憶されているデータは、ＲＯＭ１０３に記憶されたデータ保存処理プログラムを実行するＣＰＵ１０２によって、不揮発メモリ１０６に保存される。
上述のデータ復帰処理及びデータ保存処理は、第１実施形態で図３により説明したデータ復帰処理及びデータ保存処理の「ページ番号」に変えて「メモリ番号」を適用したものである。
このような構成のデータ記憶装置１０１において、データ復帰処理及びデータ保存処理を行うことにより、第１実施形態と同様の作用を得ることができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の第１実施形態におけるデータ記憶装置の構成を示すブロック図である。
【図２】本発明の第１実施形態におけるデータ復帰処理及びデータ保存処理の流れを示すフローチャートである。
【図３】本発明の第２実施形態におけるデータ記憶装置の構成を示すブロック図である。
【符号の説明】
【００２５】
１…データ記憶装置、  ２…ＣＰＵ（書込・読出制御部の一部）、  ３…ＲＯＭ、  ４…ＲＡＭ、  ４ａ…一部領域、  ４ｂ…一部領域、  ４ｃ…一部領域、  ５…Ｉ／Ｏ、  ６…不揮発メモリ、  ７…ページ管理部（書込・読出制御部の一部）、  ８…データ記憶部（記憶部）
１０１…データ記憶装置、  １０２…ＣＰＵ（書込・読出制御部の一部）、  １０３…ＲＯＭ、  １０４…ＲＡＭ、  １０５…Ｉ／Ｏ、  １０６…不揮発メモリ（小領域）、  １０６ａ…メモリ集団（記憶部）、  １０６ｂ…制御線、  １０７…メモリ管理部（書込・読出制御部の一部）
【図１】
2007199977.tif 000003
【図２】
2007199977.tif 000004
【図３】
2007199977.tif 000005