(57)【特許請求の範囲】
【請求項１】
電源断時にデータが消去される揮発性記憶手段にデータを記憶して処理を行う電子機器において、
電源断時に電力を供給する補助電源と、
複数のブロックを有するとともに、データ書込順に対応するブロックの順序を各ブロックのアドレスで示したチェーンデータが記憶されるチェーンデータエリアを有する不揮発性記憶手段と、
前記複数のブロックのうち何れか１つのブロックの記憶データを消去して空きブロックにするデータ消去手段と、
電源断時に、前記空きブロックの中で、何れか１つのブロックを書込対象ブロックとして指定して、当該書込対象ブロックのアドレスを前記チェーンデータの末尾にチェーンデータの一部として追加して前記チェーンデータエリアに記憶させ、前記揮発性記憶手段に記憶されたデータを当該書込対象ブロックに書き込む電源断データ書込手段と、
前記電源断データ書込手段により前記書込対象ブロックのアドレスが前記チェーンデータの末尾に追加された後に、前記データ消去手段による消去途中のブロックのアドレスを、前記チェーンデータの末尾にチェーンデータの一部として追加して前記チェーンデータエリアに記憶させる消去チェーンデータ追加手段と、
電源断後の再起動時に、前記消去チェーンデータ追加手段により前記チェーンデータに追加されたアドレスのブロックの記憶データを前記データ消去手段に消去させるデータ消去制御手段と、
電源断後の再起動時に、前記消去チェーンデータ追加手段により追加されたアドレスの前のチェーンデータのアドレスのブロックのデータを用いて、処理を再開する処理再開手段と、
を備えることを特徴とする電子機器。
【請求項２】
請求項１記載の電子機器において、
前記消去チェーンデータ追加手段は、
電源断時に現時点での前記消去対象ブロックに対し、データの消去途中であることを示す特定データを書き込む特定データ書込手段を有し、
前記データ消去制御手段は、
電源断後の再起動時に、前記チェーンデータに含まれるアドレスのブロックに前記特定データが記憶されている場合に、前記データ消去手段に当該ブロックの記憶データを消去させることを特徴とする電子機器。
【請求項３】
請求項１又は２に記載の電子機器において、
前記不揮発性記憶手段は、
各ビットのデータを「１」にすることで記憶データが消去されるとともに、
各ビットのデータを「１」に維持するか、或いは「０」に不可逆的に変化させるかによってデータの書き込みが可能であり、
前記特定データは、
「０」が複数バイトだけ並んだデータであることを特徴とする電子機器。
【請求項４】
請求項３記載の電子機器において、
前記データ消去制御手段は、
前記チェーンデータエリアの前記チェーンデータに含まれる各アドレスのうち、前記消去チェーンデータ追加手段により前記チェーンデータに追加されたアドレスのデータを「０」の羅列のデータに書き換えるチェーンデータ上書手段を有し、
当該電子機器は、
前記チェーンデータエリアから前記チェーンデータを読み取るチェーンデータ読取手段を備え、
このチェーンデータ読取手段は、
前記チェーンデータに「０」の羅列のデータがアドレスのデータとして含まれる場合に、当該「０」の羅列のデータを飛ばして読み取りを行うことを特徴とする電子機器。
【請求項５】
電源断時にデータが消去される揮発性記憶手段にデータを記憶して処理を行う電子機器のコンピュータで実行されるプログラムであって、
前記電子機器は、
電源断時に電力を供給する補助電源と、
複数のブロックを有するとともに、データ書込順に対応するブロックの順序を各ブロックのアドレスで示したチェーンデータが記憶されるチェーンデータエリアを有する不揮発性記憶手段と、
を有し、
当該プログラムは、この電子機器のコンピュータに、
前記複数のブロックのうち何れか１つのブロックの記憶データを消去して空きブロックにするデータ消去機能と、
電源断時に、前記空きブロックの中で、何れか１つのブロックを書込対象ブロックとして指定して、当該書込対象ブロックのアドレスを前記チェーンデータの末尾にチェーンデータの一部として追加して前記チェーンデータエリアに記憶させ、前記揮発性記憶手段に記憶されたデータを当該書込対象ブロックに書き込む電源断データ書込機能と、
前記電源断データ書込機能により前記書込対象ブロックのアドレスが前記チェーンデータの末尾に追加された後に、前記データ消去機能による消去途中のブロックのアドレスを、前記チェーンデータの末尾にチェーンデータの一部として追加して前記チェーンデータエリアに記憶させる消去のチェーンデータ追加機能と、
電源断後の再起動時に、前記消去チェーンデータ追加機能により前記チェーンデータに追加されたアドレスのブロックの記憶データを前記データ消去機能により消去させるデータ消去制御機能と、
電源断後の再起動時に、前記消去チェーンデータ追加機能により追加されたアドレスの前のチェーンデータのアドレスのブロックのデータを用いて、処理を再開する処理再開機能と、
を実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器及びプログラムに関する。
【背景技術】
【０００２】
従来、揮発性メモリであるキャッシュメモリと不揮発性メモリ（例えばフラッシュメモリ）とを備える電子機器においては、処理データを一時的にキャッシュメモリに記憶しながら処理を行うとともに、電源断が生じた場合にキャッシュメモリ上のデータが消失してしまうのを防止するために、補助電源からの電力を利用しつつ、キャッシュメモリ上のキャッシュデータをフラッシュメモリの空きエリアに退避（バックアップ）するようになっている。そして、電源断後に電子機器が再起動されると、フラッシュメモリ内のバックアップデータがキャッシュメモリにリストアされることで電源断前の状態が復元され、次回の電源断に備えてフラッシュメモリの記憶データが消去されるようになっている。
【０００３】
近年、このような電源断時や再起動時の処理に関し、様々な技術が提案されている（例えば特許文献１，２参照）。
具体的には、特許文献１に記載の技術では、電源断後の再起動時に、フラッシュメモリからキャッシュメモリにキャッシュデータをリストアしたのち、フラッシュメモリの記憶データ全体を先頭から消去するようになっている。この技術によれば、再起動時の処理中に更に電源断となった場合にもフラッシュメモリに退避領域を確保することができるため、キャッシュデータがロストしてしまうのを防止することができる。
【０００４】
また、特許文献２に記載の技術では、フラッシュメモリにおけるブロック毎に、未使用、データ有、消去中（消去途中）などの管理データを記憶しておき、処理によってブロックの状態が変わる毎に管理データを書き換えるようになっており、再起動時には管理データを用いて全ブロックの状態を調べて、消去中のブロックを消去するようになっている。この技術によれば、特許文献１に記載の技術と同様に、再起動時の処理中に更に電源断となった場合にもフラッシュメモリに退避領域を確保することができるため、キャッシュデータがロストしてしまうのを防止することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２７１７９３号公報
【特許文献２】特開２００１−５１８８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の技術では、フラッシュメモリのデータ消去中に電源断が発生した場合には、再起動時にデータ消去を完了するのに手間がかかってしまう。
即ち、特許文献１に記載の技術では、再起動時にフラッシュメモリの記憶データ全体を先頭から消去するため、消去済みのブロックを改めて消去する場合が生じてしまい、その分、手間がかかってしまう。
また、特許文献２に記載の技術では、再起動時に管理データを用いて全ブロックの状態を調べてから消去中のブロックの消去を行うため、ブロックの状態を調べるのに手間がかかってしまう。
【０００７】
本発明の課題は、不揮発性記憶手段のデータ消去中に電源断が発生した後に再起動された場合に、容易かつ迅速にデータ消去を完了しつつ、中断された処理を再開することのできる電子機器及びプログラムを提供することである。
【課題を解決するための手段】
【０００８】
請求項１記載の発明は、電源断時にデータが消去される揮発性記憶手段にデータを記憶して処理を行う電子機器において、
電源断時に電力を供給する補助電源と、
複数のブロックを有するとともに、データ書込順に対応するブロックの順序を各ブロックのアドレスで示したチェーンデータが記憶されるチェーンデータエリアを有する不揮発性記憶手段と、
前記複数のブロックのうち何れか１つのブロックの記憶データを消去して空きブロックにするデータ消去手段と、
電源断時に、前記空きブロックの中で、何れか１つのブロックを書込対象ブロックとして指定して、当該書込対象ブロックのアドレスを前記チェーンデータの末尾にチェーンデータの一部として追加して前記チェーンデータエリアに記憶させ、前記揮発性記憶手段に記憶されたデータを当該書込対象ブロックに書き込む電源断データ書込手段と、
前記電源断データ書込手段により前記書込対象ブロックのアドレスが前記チェーンデータの末尾に追加された後に、前記データ消去手段による消去途中のブロックのアドレスを、前記チェーンデータの末尾にチェーンデータの一部として追加して前記チェーンデータエリアに記憶させる消去チェーンデータ追加手段と、
電源断後の再起動時に、前記消去チェーンデータ追加手段により前記チェーンデータに追加されたアドレスのブロックの記憶データを前記データ消去手段に消去させるデータ消去制御手段と、
電源断後の再起動時に、前記消去チェーンデータ追加手段により追加されたアドレスの前のチェーンデータのアドレスのブロックのデータを用いて、処理を再開する処理再開手段と、
を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、不揮発性記憶手段のデータ消去中に電源断が発生して再起動された場合に、容易かつ迅速にデータ消去を完了しつつ、中断された処理を再開することができる。
【図面の簡単な説明】
【００１０】
【図１】電子機器の機能構成を示すブロック図である。
【図２】電源断時処理の流れを示すフローチャートである。
【図３】電源再投入時処理の流れを示すフローチャートである。
【図４】（ａ）は通常時の動作を説明するための図であり、（ｂ）は電源断時処理の動作を説明するための図である。
【図５】（ａ）は電源断時処理の動作を説明するための図であり、（ｂ）は電源再投入時処理の動作を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して、本発明に係る電子機器の実施形態の一例を詳細に説明する。ただし、発明の範囲は、図示例に限定されない。
【００１２】
［構成］
まず、電子機器１の機能構成について説明する。図１は、電子機器１の内部構成を示すブロック図である。
【００１３】
この図に示すように、電子機器１は、表示部１０、入力部１１、記録媒体読取部１２、補助電源部５、ＣＰＵ（Central Processing Unit）２０、ＲＡＭ４及びフラッシュメモリ３を備え、各部はバスで相互にデータ通信可能に接続されて構成されている。
【００１４】
表示部１０は、ＣＰＵ２０から入力される表示信号に基づいて各種情報を表示するようになっている。
【００１５】
入力部１１は、押下されたキーなどに対応する信号をＣＰＵ２０に出力するようになっている。
【００１６】
記録媒体読取部１２は、カードスロット（図示せず）に装着された外部情報記憶媒体１２ａから情報を読み出したり、当該外部情報記憶媒体１２ａに情報を記録したりするようになっている。
【００１７】
補助電源部５は、電子機器１が電源断の状態となった場合に当該電子機器１に電力を供給するものであり、電源断検知部５０と補助電源５１とを有している。
【００１８】
電源断検知部５０は、電源断を検知するものであり、電子機器１に対する供給電力の電圧が所定電圧よりも低くなった場合に、電源断の検知信号を出力するようになっている。
【００１９】
補助電源５１は、コンデンサであり、電源断時に電子機器１に電力を供給するようになっている。
【００２０】
ＣＰＵ２０は、入力される指示に応じて所定のプログラムに基づいた処理を実行し、各機能部への指示やデータの転送等を行い、電子機器１を統括的に制御するようになっている。具体的には、ＣＰＵ２０は、入力部１１から入力される操作信号等に応じてフラッシュメモリ３に格納された各種プログラムを読み出し、当該プログラムに従って処理を実行する。そして、ＣＰＵ２０は、処理結果をＲＡＭ４やフラッシュメモリ３に一時保存するとともに、当該処理結果を表示部１０に適宜出力させる。
【００２１】
ＲＡＭ４は、ＣＰＵ２０の作業領域として機能するメモリである。本実施の形態においては、ＲＡＭ４は電源断時にデータが消失する揮発性メモリであり、キャッシュメモリ４０を有している。
【００２２】
キャッシュメモリ４０は、後述の図４（ａ）に示すように、ＣＰＵ２０から送信されるデータをバッファリング（一時保存）するメモリである。
【００２３】
フラッシュメモリ３は、電子機器１の各種機能を実現するためのプログラムやデータを記憶する不揮発性のメモリである。本実施の形態においては、フラッシュメモリ３は、本発明に係るメモリ管理プログラム８１等を記憶するとともに、データエリア８２を有している。
【００２４】
メモリ管理プログラム８１は、後述の電源断時処理（図２参照）や電源再投入時処理（図３参照）をＣＰＵ２０に実行させるためのプログラムである。
【００２５】
データエリア８２は、キャッシュメモリ４０に一時保存されたデータを記憶するようになっており、図４（ａ）に示すように、複数のブロックＢと、管理領域Ｋとを有している。これらのブロックＢ及び管理領域Ｋは、各ビットのデータを「１」にすることで記憶データが消去されるとともに、各ビットのデータを「１」に維持するか、或いは「０」に不可逆的に変化させるかによってデータの書き込みが可能となっている。
【００２６】
このうち、複数のブロックＢは、それぞれ所定バイト（数キロバイトから数十キロバイト）の容量を有しており、ブロックＢごとにデータの書き込みや消去の対象として指定されるようになっている。以下、書き込みの対象として指定されたブロックＢを書込中ブロックＢ１（書込対象ブロック）、消去の対象として指定されたブロックＢを消去中ブロックＢ３（消去対象ブロック）、データが消去されたブロックＢを空きブロックＢ２、その他のデータブロックを他のデータブロックＢ４として説明する。書込中ブロックＢ１は、空きブロックＢ２の中から何れか１つが指定されるようになっており、書込中ブロックＢ１に対する書き込みが完了するたびに順次、切り替えられる。また、消去中ブロックＢ３は、複数のブロックＢの中から何れか１つが指定されるようになっており、消去中ブロックＢ３に対する消去が完了するたびに順次、切り替えられる。これらのブロックＢには、各ブロックＢを識別するためのアドレス（ブロック番号）が割り当てられている。
【００２７】
管理領域Ｋは、本発明におけるチェーンデータエリアとして機能する領域であり、チェーンデータＣを逐次更新して記憶するようになっている。ここで、チェーンデータＣとは、クラスタチェーンとも称されるデータであり、データ書込順に対応するブロックＢの順序を、各ブロックＢのアドレスで示したデータである。なお、この管理領域Ｋには、記憶データのファイル名やデータ量などが記憶されていても良い。
【００２８】
［１．３  動作］
続いて、電子機器１の動作について、図面を参照しつつ説明する。
【００２９】
［１．３．１  電源断時処理］
図２は、ＣＰＵ２０がメモリ管理プログラム８１を読み出して実行する電源断時処理の流れを示すフローチャートである。なお、この電源断時処理は、電子機器１の起動時に自動的に実行されるようになっている。
【００３０】
この図に示すように、電源断時処理においてまずＣＰＵ２０は、電源断検知部５０により電源断が検知されたか否かを判定し（ステップＳ１）、検知されないと判定した場合（ステップＳ１；Ｎｏ）にはステップＳ１の処理を繰り返す。
【００３１】
なお、このステップＳ１が繰り返されている状態では、ＣＰＵ２０は、適宜、管理領域ＫからチェーンデータＣを読み取った後、チェーンデータＣにアドレスの含まれたブロックＢ、つまり以前に書込中ブロックＢ１として指定されたブロックＢからデータを読み取って、電子機器１で行われる処理に供する。但し、管理領域ＫのチェーンデータＣに「０」の羅列のデータがアドレスのデータとして含まれる場合（後述のステップＴ４参照）には、ＣＰＵ２０は、当該「０」の羅列のデータを飛ばして読み取りを行う。
【００３２】
更に、ステップＳ１が繰り返されている状態では、図４（ａ）に示すように、ＣＰＵ２０は、適宜、当該ＣＰＵ２０からＲＡＭ４のキャッシュメモリ４０にデータをバッファリングするとともに、キャッシュメモリ４０に書き込まれているデータを、フラッシュメモリ３における書込中ブロックＢ１に書き込んでバックアップを行い、書込中ブロックＢ１への書き込みが完了した場合には、何れか１つの空きブロックＢ２を新たな書込中ブロックＢ１として指定することにより、書込中ブロックＢ１として指定されるブロックＢを順次切り替えて、そのアドレスをチェーンデータＣの末尾にチェーンデータの一部として追加して管理領域Ｋに記憶させる。また、ＣＰＵ２０は、適宜、フラッシュメモリ３における消去中ブロックＢ３の記憶データを消去して空きブロックＢ２にし、消去中ブロックＢ３の消去が完了した場合には、何れか１つのブロックＢを新たな消去中ブロックＢ３として指定することにより、消去中ブロックＢ３として指定されるブロックＢを順次切り替える。
【００３３】
そして、上述のステップＳ１において電源断が検知されたと判定した場合（ステップＳ１；Ｙｅｓ）には、補助電源５１が電力供給を開始するとともに、ＣＰＵ２０がキャッシュメモリ４０のバックアップを開始する。
【００３４】
そして、ＣＰＵ２０は、現時点でデータエリア８２に消去中ブロックＢ３が存在するか否か、つまり何れかのブロックＢが消去中であるか否かを判定し（ステップＳ３）、消去中ブロックＢ３が存在しないと判定した場合（ステップＳ３；Ｎｏ）には後述のステップＳ１１に移行する。
【００３５】
一方、ステップＳ３において消去中ブロックＢ３が存在すると判定した場合（ステップＳ３；Ｙｅｓ）には、ＣＰＵ２０は、図４（ｂ）の（i）部分，（ii）部分に示すように、現時点での消去中ブロックＢ３での消去を中断した後、当該消去中ブロックＢ３の先頭部分に対し、データの消去途中であることを示す特定データ、本実施の形態においては複数バイト分（例えば２５６バイト分）だけ「０」が並んだデータを書き込む（ステップＳ７）。なお、図中の「０ｘ００」とは、１６進数の「０」を表している。
【００３６】
次に、ＣＰＵ２０は、現時点での消去中ブロックＢ３のアドレスをＲＡＭ４に一時記憶させる（ステップＳ９）。
【００３７】
次に、ＣＰＵ２０は、図５（ａ）の（i）部分に示すように、ＲＡＭ４のキャッシュメモリ４０に書き込まれているデータのうち、フラッシュメモリ３に書き込まれていないデータを、フラッシュメモリ３における書込中ブロックＢ１に書き込んでバックアップを行う（ステップＳ１１）。
【００３８】
次に、ＣＰＵ２０は、現時点の書込中ブロックＢ１に対して全データ（キャッシュメモリ４０に書き込まれているデータのうち、まだフラッシュメモリ３に書き込まれていない全てのデータ）を書き込めたか否かを判定する（ステップＳ１３）。
【００３９】
このステップＳ１３において書込中ブロックＢ１に対して全データを書き込めたと判定した場合（ステップＳ１３；Ｙｅｓ）には、ＣＰＵ２０は、チェーンデータＣを更新せずに、後述のステップＳ２５に移行する。
【００４０】
一方、ステップＳ１３において書込中ブロックＢ１に対して全データを書き込めないと判定した場合（ステップＳ１３；Ｎｏ）には、ＣＰＵ２０は、図５（ａ）の（ii）部分に示すように、何れかの空きブロックＢ２を新たな書込中ブロックＢ１として指定し、そのアドレスをチェーンデータＣの末尾にチェーンデータの一部として追加して管理領域Ｋに記憶させる（ステップＳ２１）。
【００４１】
次に、ＣＰＵ２０は、図５（ａ）の（iii）部分に示すように、ＲＡＭ４のキャッシュメモリ４０に書き込まれているデータのうち、まだフラッシュメモリ３に書き込まれていないデータを、フラッシュメモリ３における書込中ブロックＢ１に書き込んでバックアップを行う（ステップＳ２３）。
【００４２】
次に、ＣＰＵ２０は、消去の中断された消去中ブロックＢ３が存在するか否か、換言すれば、消去の中断された消去中ブロックＢ３のアドレスが上述のステップＳ９によって一時記憶されているか否かを判定し（ステップＳ２５）、消去の中断された消去中ブロックＢ３のアドレスが一時記憶されていないと判定した場合（ステップＳ２５；Ｎｏ）には、ファイルクローズの処理を行い、補助電源５１からの電力供給を停止させて、電子機器１をシャットダウンさせ（ステップＳ２９）、電源断時処理を終了する。
【００４３】
一方、ステップＳ２５において消去の中断された消去中ブロックＢ３のアドレスが一時記憶されていると判定した場合（ステップＳ２５；Ｙｅｓ）には、図５（ａ）の（iv）部分に示すように、ＣＰＵ２０は、そのアドレスをチェーンデータＣの末尾にチェーンデータの一部として追加して管理領域Ｋに記憶させた後（ステップＳ２７）、上述のステップＳ２９に移行する。なお、このステップＳ２７によるアドレス（消去中ブロックＢ３のアドレス）の追加は、上述のステップＳ１やステップＳ２１によるアドレス（書込中ブロックＢ１のアドレス）の追加よりも後に行われるため、消去中ブロックＢ３のアドレスは、電源断後の再起動時にチェーンデータＣの末尾に位置することとなる。
【００４４】
［１．３．２  電源再投入時処理］
図３は、ＣＰＵ２０がメモリ管理プログラム８１を読み出して実行する電源再投入時処理の流れを示すフローチャートである。なお、この電源再投入時処理は、電源断後の再起動時に自動的に実行されるようになっている。
【００４５】
この図と、図５（ｂ）の（i）部分とに示すように、電源再投入時処理においてまずＣＰＵ２０は、管理領域ＫのチェーンデータＣにおける末尾のアドレスを読み出し、このアドレスに対応するブロックＢを最終動作ブロックＢ５として特定する（ステップＴ１）。
【００４６】
次に、ＣＰＵ２０は、図５（ｂ）の（ii）部分に示すように、最終動作ブロックＢ５の記憶データを参照し、先頭部分が特定データ（本実施の形態においては複数バイト分だけ「０」が並んだデータ）であるか否か、つまり最終動作ブロックＢ５が消去の中断された消去中ブロックＢ３であるか否かを判定し（ステップＴ２）、先頭部分が特定データでないと判定した場合（ステップＴ２；Ｎｏ）には、通常の処理へ移行する。
【００４７】
一方、ステップＴ２において最終動作ブロックＢ５の記憶データの先頭部分が特定データであると判定した場合（ステップＴ２；Ｙｅｓ）、つまり最終動作ブロックＢ５が消去の中断された消去中ブロックＢ３であると判定した場合には、ＣＰＵ２０は、図５（ｂ）の（iii）部分に示すように、当該最終動作ブロックＢ５を消去中ブロックＢ３として改めて指定し、当該消去中ブロックＢ３の記憶データの消去を開始する（ステップＴ３）。
【００４８】
そして、ＣＰＵ２０は、図５（ｂ）の（iv）部分に示すように、管理領域ＫのチェーンデータＣに含まれる各アドレスのうち、ステップＴ３で消去の開始された消去中ブロックＢ３のアドレスのデータを「０」の羅列のデータに書き換えた後（ステップＴ４）、通常の処理へ移行する。なお、この通常の処理においてまずＣＰＵ２０は、管理領域ＫからチェーンデータＣを読み取った後、チェーンデータＣに含まれる各アドレスのうち、上述のステップＳ１やステップＳ２１により追加されたアドレス（書込中ブロックＢ１のアドレス）のブロックＢからデータを読み取って、電子機器１で行われる処理に供する。そして、ＣＰＵ２０は、上述のステップＳ１が繰り返されている状態で行われた処理と同様の処理を行う。
【００４９】
以上の電子機器１によれば、図２のステップＳ２７や図３のステップＴ１〜Ｔ３、図４〜図５等に示したように、電源断時には現時点での消去中ブロックＢ３のアドレスがチェーンデータＣの末尾にチェーンデータの一部として追加され、電源断後の再起動時には、このアドレスのブロックＢが消去中ブロックＢ３として指定され、当該消去中ブロックＢ３の記憶データが消去されるので、再起動時にフラッシュメモリ３の記憶データ全体を消去する従来の場合や、再起動時に全ブロックＢの状態を調べて消去途中のブロックＢの消去を再開する従来の場合と比較して、フラッシュメモリ３のデータ消去中に電源断が発生して再起動された場合に、容易かつ迅速にデータ消去を完了することができる。
また、電源断後の再起動時に、チェーンデータのアドレスのうち、消去中ブロックＢ３のアドレスの前のブロックのデータを用いて、処理が再開されるので、電源断で中断された処理を迅速に再開することができる。
また、上述のようにフラッシュメモリ３のデータ消去中に電源断が発生した場合であっても、再起動時に容易かつ迅速にデータ消去を完了することができるので、データの書き込まれていない空きブロックＢ２を、再起動時に迅速に確保することができる。従って、電源断時にキャッシュデータを確実に空きブロックＢ２に書き込んで退避させることができるため、再起動時に確実に元のキャッシュデータを利用して動作を再開することができる。
【００５０】
また、図２のステップＳ７や図３のステップＴ２〜Ｔ３、図４〜図５等に示したように、電源断時には現時点での消去中ブロックＢ３に対し、データの消去途中であることを示す特定データが書き込まれ、電源断後の再起動時には、チェーンデータＣに含まれるアドレスのブロックＢに前記特定データが記憶されている場合に、当該ブロックＢが消去中ブロックＢ３として指定され、当該消去中ブロックＢ３の記憶データが消去されるので、電源断時の消去中ブロックＢ３を再起動時に確実に消去中ブロックＢ３として指定し、データ消去を行うことができる。従って、消去中ブロックＢ３以外のブロックＢが誤って消去中ブロックＢ３として指定されてデータが消去されてしまうのを防止することができる。
【００５１】
また、図２のステップＳ２７や図３のステップＴ１〜Ｔ３、図４〜図５等に示したように、電源断時の消去中ブロックＢ３のアドレスが電源断後の再起動時にチェーンデータＣの末尾に位置するように、当該消去中ブロックＢ３のアドレスがチェーンデータＣに追加されるので、再起動時にはチェーンデータＣの末尾のアドレスのブロックＢのみを対象に特定データの書き込みの有無を判定することで、このブロックＢが消去中ブロックＢ３であるか否かを確認することができる。従って、チェーンデータＣの末尾のブロックＢから遡って、特定データの書き込まれたブロックＢを探す手間を省くことができる分、再起動時にいっそう容易かつ迅速にデータ消去を完了することができる。
【００５２】
また、図２のステップＳ７や図４〜図５等に示したように、特定データは「０」が複数バイトだけ並んだデータであるので、特定データが別のデータに誤って上書きされることがない。従って、電源断時の消去中ブロックＢ３を再起動時に確実に消去中ブロックＢ３として指定し、データ消去を行うことができるため、消去中ブロックＢ３以外のブロックＢが誤って消去中ブロックＢ３として指定されてデータが消去されてしまうのを防止することができる。
【００５３】
また、図３のステップＴ４や図５等に示したように、管理領域ＫのチェーンデータＣに含まれる各アドレスのうち、電源断時に追加された消去中ブロックＢ３のアドレスのデータが再起動時には「０」の羅列のデータに書き換えられ、チェーンデータＣに「０」の羅列のデータがアドレスのデータとして含まれる場合には、当該「０」の羅列のデータを飛ばして読み取りが行われるので、管理領域ＫのチェーンデータＣに消去中ブロックＢ３のアドレスを追加した場合であっても、再起動後に当該アドレスのブロックＢ（消去中ブロックＢ３）から読み取りが行われてしまうのを防止することができる。また、このように、チェーンデータＣに消去中ブロックＢ３のアドレスを追加しても、当該ブロックＢからの読み取りを防止することができるため、消去中ブロックＢ３のアドレスを消去するために管理領域Ｋの記憶データ全体を消去してチェーンデータＣを更新する手間を省くことができる。
【００５４】
また、電源断後の再起動時には、管理領域ＫのチェーンデータＣに含まれる各アドレスのうち、チェーンデータＣに最後に追加されたアドレスの書込中ブロックＢ１からデータが読み取られるので、電源断時に電子機器１で行われていた処理を再起動後に迅速に再開することができる。
【００５５】
なお、本発明を適用可能な実施形態は、上述した実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で適宜変更可能である。
【００５６】
例えば、本発明に係る電子機器１は、携帯電話、パソコン、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、ゲーム機などの電子機器全般に適用可能である。また、本発明に係るメモリ管理プログラム８１は、電子機器１に対して着脱可能な外部情報記憶媒体１２ａに記憶されることとしてもよい。
【００５７】
また、電源再投入時処理においては最終動作ブロックＢ５の記憶データの先頭部分が特定データであると判定された場合に、最終動作ブロックＢ５を消去中ブロックＢ３として指定して記憶データの消去を開始することとして説明したが、電源断時の消去中ブロックＢ３のアドレスが電源断後の再起動時にチェーンデータＣの末尾に位置するように、電源断時に当該消去中ブロックＢ３のアドレスがチェーンデータＣに追加される限りにおいて、最終動作ブロックＢ５の記憶データに関わらず当該最終動作ブロックを消去中ブロックＢ３として指定して記憶データの消去を開始しても良い。
【００５８】
また、電源断時処理においては消去の中断された消去中ブロックＢ３のアドレスを一時記憶しておき、書込中ブロックＢ１のアドレスをチェーンデータＣの末尾に追加してから消去中ブロックＢ３のアドレスをチェーンデータＣの末尾に追加することとして説明したが、消去中ブロックＢ３のアドレスを一時記憶せずにチェーンデータＣの末尾に追加した後、書込中ブロックＢ１のアドレスをチェーンデータＣの末尾に追加することとしても良い。この場合には、電源再投入時処理においてチェーンデータＣの末尾側から、各ブロックＢの記憶データの先頭部分が特定データであるか否かを判定し、特定データである場合に、そのブロックＢを消去中ブロックＢ３として指定し、記憶データの消去を開始する。
【００５９】
以上、本発明のいくつかの実施形態を説明したが、本発明の範囲は、上述の実施の形態に限定するものではなく、特許請求の範囲に記載された発明の範囲をその均等の範囲を含む。
以下に、この出願の願書に最初に添付した特許請求の範囲に記載した発明を付記する。付記に記載した請求項の項番は、この出願の願書に最初に添付した特許請求の範囲の通りである。
〔付記〕
＜請求項１＞
電源断時にデータが消去される揮発性記憶手段にデータを記憶して処理を行う電子機器において、
電源断時に電力を供給する補助電源と、
複数のブロックを有するとともに、データ書込順に対応するブロックの順序を各ブロックのアドレスで示したチェーンデータが記憶されるチェーンデータエリアを有する不揮発性記憶手段と、
前記複数のブロックのうち何れか１つのブロックの記憶データを消去して空きブロックにするデータ消去手段と、
電源断時に、前記空きブロックの中で、何れか１つのブロックを書込対象ブロックとして指定して、当該書込対象ブロックのアドレスを前記チェーンデータの末尾にチェーンデータの一部として追加して前記チェーンデータエリアに記憶させ、前記揮発性記憶手段に記憶されたデータを当該書込対象ブロックに書き込む電源断データ書込手段と、
前記電源断データ書込手段により前記書込対象ブロックのアドレスが前記チェーンデータの末尾に追加された後に、前記データ消去手段による消去途中のブロックのアドレスを、前記チェーンデータの末尾にチェーンデータの一部として追加して前記チェーンデータエリアに記憶させる消去チェーンデータ追加手段と、
電源断後の再起動時に、前記消去チェーンデータ追加手段により前記チェーンデータに追加されたアドレスのブロックの記憶データを前記データ消去手段に消去させるデータ消去制御手段と、
電源断後の再起動時に、前記消去チェーンデータ追加手段により追加されたアドレスの前のチェーンデータのアドレスのブロックのデータを用いて、処理を再開する処理再開手段と、
を備えることを特徴とする電子機器。
＜請求項２＞
請求項１記載の電子機器において、
前記消去チェーンデータ追加手段は、
電源断時に現時点での前記消去対象ブロックに対し、データの消去途中であることを示す特定データを書き込む特定データ書込手段を有し、
前記データ消去制御手段は、
電源断後の再起動時に、前記チェーンデータに含まれるアドレスのブロックに前記特定データが記憶されている場合に、前記データ消去手段に当該ブロックの記憶データを消去させることを特徴とする電子機器。
＜請求項３＞
請求項１又は２に記載の電子機器において、
前記不揮発性記憶手段は、
各ビットのデータを「１」にすることで記憶データが消去されるとともに、
各ビットのデータを「１」に維持するか、或いは「０」に不可逆的に変化させるかによってデータの書き込みが可能であり、
前記特定データは、
「０」が複数バイトだけ並んだデータであることを特徴とする電子機器。
＜請求項４＞
請求項３記載の電子機器において、
前記データ消去制御手段は、
前記チェーンデータエリアの前記チェーンデータに含まれる各アドレスのうち、前記消去チェーンデータ追加手段により前記チェーンデータに追加されたアドレスのデータを「０」の羅列のデータに書き換えるチェーンデータ上書手段を有し、
当該電子機器は、
前記チェーンデータエリアから前記チェーンデータを読み取るチェーンデータ読取手段を備え、
このチェーンデータ読取手段は、
前記チェーンデータに「０」の羅列のデータがアドレスのデータとして含まれる場合に、当該「０」の羅列のデータを飛ばして読み取りを行うことを特徴とする電子機器。
＜請求項５＞
電源断時にデータが消去される揮発性記憶手段にデータを記憶して処理を行う電子機器のコンピュータで実行されるプログラムであって、
前記電子機器は、
電源断時に電力を供給する補助電源と、
複数のブロックを有するとともに、データ書込順に対応するブロックの順序を各ブロックのアドレスで示したチェーンデータが記憶されるチェーンデータエリアを有する不揮発性記憶手段と、
を有し、
当該プログラムは、この電子機器のコンピュータに、
前記複数のブロックのうち何れか１つのブロックの記憶データを消去して空きブロックにするデータ消去機能と、
電源断時に、前記空きブロックの中で、何れか１つのブロックを書込対象ブロックとして指定して、当該書込対象ブロックのアドレスを前記チェーンデータの末尾にチェーンデータの一部として追加して前記チェーンデータエリアに記憶させ、前記揮発性記憶手段に記憶されたデータを当該書込対象ブロックに書き込む電源断データ書込機能と、
前記電源断データ書込機能により前記書込対象ブロックのアドレスが前記チェーンデータの末尾に追加された後に、前記データ消去機能による消去途中のブロックのアドレスを、前記チェーンデータの末尾にチェーンデータの一部として追加して前記チェーンデータエリアに記憶させる消去のチェーンデータ追加機能と、
電源断後の再起動時に、前記消去チェーンデータ追加機能により前記チェーンデータに追加されたアドレスのブロックの記憶データを前記データ消去機能により消去させるデータ消去制御機能と、
電源断後の再起動時に、前記消去チェーンデータ追加機能により追加されたアドレスの前のチェーンデータのアドレスのブロックのデータを用いて、処理を再開する処理再開機能と、
を実現させることを特徴とするプログラム。
【符号の説明】
【００６０】
１    電子機器
３    フラッシュメモリ
２０  ＣＰＵ
５１  補助電源
Ｂ    ブロック
Ｂ１  書込中ブロック
Ｂ２  空きブロック
Ｂ３  消去中ブロック
Ｃ    チェーンデータ
Ｋ    管理領域
【図１】
0006036618.tif 000002
【図２】
0006036618.tif 000003
【図３】
0006036618.tif 000004
【図４】
0006036618.tif 000005
【図５】
0006036618.tif 000006