(57)【特許請求の範囲】
【請求項１】
ブロック内の全ビットを２値の一方の値に設定する消去がブロック単位でのみ可能であるとともにブロック内の各ビットの値を２値の他方の値に設定する書込がビット単位で可能であり、かつ各ブロック内にそれぞれ複数個の小ブロックが設定される不揮発性のブロック消去型記憶媒体に接続され、ブロック消去型記憶媒体の各ブロックのデータを消去する消去処理および各ブロックにデータを書き込む書込処理が可能な管理装置であって、前記小ブロックごとに、当該小ブロックへのデータの書込開始および書込終了をそれぞれ示す書込開始フラグおよび書込終了フラグと、当該小ブロックのデータが別のブロックから転送された場合にデータの転送が終了した元のブロックのデータの消去終了を示す消去終了フラグとを備えるフラグエリアが設けられ、ブロックのデータを変更する際にデータの変更が生じない小ブロックについては更新元のブロックから更新先のブロックに小ブロックごとにデータを転送し、データの変更が生じる小ブロックについては更新先のブロックの小ブロックに変更されたデータを書き込む書込処理部と、更新元のブロックにおける所要の小ブロックのデータが更新先のブロックに転送された後に更新元のブロックのデータを消去する消去処理部と、更新先の各小ブロックへのデータの書込の開始時および終了時と更新元のブロックのデータの消去の終了時に更新先のブロックの各小ブロックにおける書込開始フラグ、書込終了フラグ、消去終了フラグの値をそれぞれ反転させるフラグ書込部と、異常による処理中断からの復帰時にフラグエリアの内容を監視しフラグエリアの内容に応じた復帰処理を行う判定処理部とを備えることを特徴とするブロック消去型記憶媒体の管理装置。
【請求項２】
前記フラグエリアが各小ブロックに個別に設定された識別番号が書込可能である番号領域を含み、前記フラグ書込部が、書込開始フラグの値を反転させる際に、更新元のブロックがあれば更新元の小ブロックの識別番号を番号領域に書き込み、更新元のブロックがなければ規定値を番号領域に書き込む機能を有し、前記判定処理部では異常による処理中断からの復帰時に書込開始フラグが設定され書込終了フラグが設定されていないときに、番号領域を参照して抽出された更新元の小ブロックからデータの転送を再開させることを特徴とする請求項１記載のブロック消去型記憶媒体の管理装置。
【請求項３】
前記各ブロックに、当該ブロックの消去の開始時に値が反転されるブロック消去開始フラグと、当該ブロックの消去の終了時に値が反転されるブロック消去終了フラグとが小ブロックとは別に設けられ、前記判定処理部では異常による処理中断からの復帰時にブロック消去開始フラグの値が反転しブロック消去終了フラグの値が反転していないときに消去処理部に指示を与えて当該ブロックのデータを消去させることを特徴とする請求項１または請求項２記載のブロック消去型記憶媒体の管理装置。
【請求項４】
前記判定処理部では、異常による処理中断からの復帰時にいずれかの小ブロックにおいて書込開始フラグの値のみが反転しているときには、同じブロック内で書込開始フラグおよび書込終了フラグがともに反転している小ブロックが存在していれば、書込処理部に指示を与えて書込開始フラグおよび書込終了フラグがともに反転している小ブロックのデータを別のブロックに転送させた後に、消去処理部に指示を与えて当該ブロックのデータを消去させることを特徴とする請求項１記載のブロック消去型記憶媒体の管理装置。
【請求項５】
ブロック内の全ビットを２値の一方の値に設定する消去がブロック単位でのみ可能であるとともにブロック内の各ビットの値を２値の他方の値に設定する書込がビット単位で可能であり、かつ各ブロック内にそれぞれ複数個の小ブロックが設定される不揮発性のブロック消去型記憶媒体に接続され、ブロック消去型記憶媒体の各ブロックのデータを消去する消去処理および各ブロックにデータを書き込む書込処理が可能な管理装置であって、前記各ブロックに、当該ブロックの消去の開始時に値が反転されるブロック消去開始フラグと、当該ブロックの消去の終了時に値が反転されるブロック消去終了フラグとが小ブロックとは別に設けられ、前記小ブロックごとに、当該小ブロックへのデータの書込開始および書込終了をそれぞれ示す書込開始フラグおよび書込終了フラグと、当該小ブロックのデータが別のブロックから転送された場合にデータの転送が終了した元のブロックのデータの消去終了を示す消去終了フラグと、各小ブロックに個別に設定された識別番号が書込可能である番号領域とを備えるフラグエリアが設けられ、ブロックのデータを変更する際にデータの変更が生じない小ブロックについては更新元のブロックから更新先のブロックに小ブロックごとにデータを転送し、データの変更が生じる小ブロックについては更新先のブロックの小ブロックに変更されたデータを書き込む書込処理部と、更新元のブロックにおける所要の小ブロックのデータが更新先のブロックに転送された後に更新元のブロックのデータを消去する消去処理部と、更新先の各小ブロックへのデータの書込の開始時および終了時と更新元のブロックのデータの消去の終了時に更新先のブロックの各小ブロックにおける書込開始フラグ、書込終了フラグ、消去終了フラグの値をそれぞれ反転させるフラグ書込部と、異常による処理中断からの復帰時にフラグエリアの内容を監視しフラグエリアの内容に応じた復帰処理を行う判定処理部とを備え、前記フラグ書込部が、書込開始フラグの値を反転させる際に、更新元のブロックがあれば更新元の小ブロックの識別番号を番号領域に書き込み、更新元のブロックがなければ規定値を番号領域に書き込む機能を有し、前記判定処理部では異常による処理中断からの復帰時に、ブロック消去開始フラグの値が反転しブロック消去終了フラグの値が反転していなければ消去処理部に指示を与えて当該ブロックのデータを消去させ、いずれかの小ブロックにおいて書込開始フラグの値のみが反転しているときには、同じブロック内で書込開始フラグおよび書込終了フラグがともに反転している小ブロックが存在していれば、書込処理部に指示を与えて書込開始フラグおよび書込終了フラグがともに反転している小ブロックのデータを別のブロックに転送させた後に、消去処理部に指示を与えて当該ブロックのデータを消去させ、かつ番号領域を参照して抽出された更新元の小ブロックから前記別のブロックにデータを転送させることを特徴とするブロック消去型記憶媒体の管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュメモリに代表される不揮発性の記憶媒体であって、ブロック内の全ビットを２値の一方の値にする「消去」がブロック単位でのみ可能であり、ブロック内の各ビットの値を２値の他方の値にする「書込」がビット単位で可能であるブロック消去型記憶媒体の管理装置に関するものである。
【０００２】
【従来の技術】
近年、記憶領域が複数のブロックに分割された不揮発性メモリであって、記憶されたデータがブロック単位でのみ消去可能であるフラッシュメモリが広く用いられている。ブロックとは複数バイトを一括した単位であって、たとえば５２８バイトを１ページとし、１６ページを１ブロックとしたフラッシュメモリが提供されている。この種のブロック消去型記憶媒体には、ブロックの全ビットを２値の一方の値（たとえば、１）にする「消去」についてはブロック単位でのみ処理可能であり、ブロック内の各ビットの値を２値の他方の値（たとえば、０）にする「書込」についてはビット単位で処理可能としたものが提供されている。つまり、ブロック単位で「消去」を行うことによってブロック内の全ビットを同じ値にしておき、所要のビットの値を反転させる「書込」を行うことによって、ブロックにデータを書き込むのである。
【０００３】
このように、ブロック単位での消去とビット単位での書込とを可能としたフラッシュメモリでは、ブロックにデータがすでに書き込まれているときに同じブロックに別のデータを書き込もうとすれば、そのブロックのデータを消去してからでなければ、新たなデータを書き込むことができない。そこで、すでに格納されているデータの一部をブロックよりも小さい単位で書き換える手順として以下の方法が考えられている。
【０００４】
いま、データがすでに書き込まれているブロックに含まれる１つの小ブロック（たとえば、ページ）のデータのみを変更する場合について考える。ここで、データが変更される小ブロックを小ブロックＡ、データが変更されない小ブロックを小ブロックＢとする。上述のように、データがすでに存在しているブロックの内容を変更するには、そのブロックのデータを消去する必要があるが、小ブロックＢについてはデータを変更しないから、ブロックのデータを消去する前に小ブロックＢのデータを他のブロックあるいは他の記憶媒体に一旦退避させる。つまり、小ブロックＡのデータを変更するには、まず小ブロックＢのデータを退避させ、次に元のブロックのデータを消去し、最後に小ブロックＡの新たなデータと退避していた小ブロックＢのデータとを元のブロックに書き込むことになる。さらに、小ブロックＢのデータを同じフラッシュメモリの別のブロックに退避している場合には、小ブロックＢのデータを元のブロックに書き込んだ後に小ブロックＢを退避していたブロックのデータを消去することも必要になる。
【０００５】
また、小ブロックＡのデータを変更したブロックが元のブロックとは異なるブロックでもよい場合には、以下の手順を採用することも可能である。つまり、小ブロックＢのデータを同じフラッシュメモリ内で元のブロックとは異なるブロックに転送するようにし、小ブロックＢのデータを転送するブロックに小ブロックＡの新たなデータも書き込み、最後に元のブロックのデータを消去するようにしてもよい。この方法を採用すれば、元のブロックに変更後のデータを書き込む場合に比較して手順が少なくなる。
【０００６】
【発明が解決しようとする課題】
ところで、上述のように前者の手順に比較して後者の手順は処理数が少なくなるから、高速な処理が期待できる点で優れているものの、以下のような問題が生じる可能性がある。たとえば、小ブロックＡの新たなデータをブロックに書き込んでいる期間、小ブロックＢのデータを別のブロックに転送している期間、元のブロックのデータを消去している期間のいずれかの期間において、フラッシュメモリにデータの転送や消去を指示している管理装置の電源の遮断のように処理が中断する異常が生じたとすると、フラッシュメモリに不要なデータが残されることになる。つまり、小ブロックＡのデータの更新処理を開始してから、元のブロックのデータを消去してしまうまでの間に処理が停止すると、２つのブロックに何らかのデータが存在することになり、両ブロックのどちらのデータが正しいデータであるかを判断することができなくなる可能性がある。
【０００７】
一方、特開平１１−５３２４８号公報などに記載されているように、従来からフラッシュメモリの一部の領域にアロケーションテーブルとディレクトリとをまとめて記憶させることによって（以下では、この領域を「集中管理領域」と呼ぶ）、オペレーティングシステムの管理下においてディスク装置（フレキシブルディスクあるいはハードディスク）と等価に扱うことを可能にする技術が提案されている。この種の技術を採用すれば、ディレクトリには各ブロックのデータに対して行っている処理内容に応じたフラグが書き込まれるから、電源の遮断のような異常から復帰したときにフラグの情報を用いて、異常が生じる前の状態から処理を再開させることが可能になる。
【０００８】
しかしながら、このような構成を採用したとしても、集中管理領域はフラッシュメモリに設けられているから、アロケーションテーブルやディレクトリをブロック単位で消去することになり、アロケーションテーブルやディレクトリを書き換える際にデータの変更時と同様の問題が生じる。つまり、アロケーションテーブルやディレクトリを変更する処理を行っている間に停電によって電源が遮断されるような異常が生じると、フラッシュメモリに残されたデータのどれが正しいデータかを判別することができず、異常から復帰したときに異常の発生前の状態に復帰できなくなる場合がある。
【０００９】
本発明は上記事由に鑑みて為されたものであり、その目的は、データの更新処理の期間中に電源が遮断されるような処理の中断する異常が生じても異常からの復帰後には異常の発生前の状態から処理を確実に再開させることを可能にしたブロック消去型記憶媒体の管理装置を提供することにある。
【００１０】
【課題を解決するための手段】
請求項１の発明は、ブロック内の全ビットを２値の一方の値に設定する消去がブロック単位でのみ可能であるとともにブロック内の各ビットの値を２値の他方の値に設定する書込がビット単位で可能であり、かつ各ブロック内にそれぞれ複数個の小ブロックが設定される不揮発性のブロック消去型記憶媒体に接続され、ブロック消去型記憶媒体の各ブロックのデータを消去する消去処理および各ブロックにデータを書き込む書込処理が可能な管理装置であって、前記小ブロックごとに、当該小ブロックへのデータの書込開始および書込終了をそれぞれ示す書込開始フラグおよび書込終了フラグと、当該小ブロックのデータが別のブロックから転送された場合にデータの転送が終了した元のブロックのデータの消去終了を示す消去終了フラグとを備えるフラグエリアが設けられ、ブロックのデータを変更する際にデータの変更が生じない小ブロックについては更新元のブロックから更新先のブロックに小ブロックごとにデータを転送し、データの変更が生じる小ブロックについては更新先のブロックの小ブロックに変更されたデータを書き込む書込処理部と、更新元のブロックにおける所要の小ブロックのデータが更新先のブロックに転送された後に更新元のブロックのデータを消去する消去処理部と、更新先の各小ブロックへのデータの書込の開始時および終了時と更新元のブロックのデータの消去の終了時に更新先のブロックの各小ブロックにおける書込開始フラグ、書込終了フラグ、消去終了フラグの値をそれぞれ反転させるフラグ書込部と、異常による処理中断からの復帰時にフラグエリアの内容を監視しフラグエリアの内容に応じた復帰処理を行う判定処理部とを備えるものである。この構成によれば、更新先へのデータの書込中や更新元のデータの消去中において、電源の遮断のような異常が生じて処理が中断しても、判定処理部が書込開始フラグ、書込終了フラグ、消去終了フラグの値を監視することによって、異常から復帰したときには異常の発生前における処理の進行状況を把握することができ、適切な復帰処理が可能になる。
【００１１】
請求項２の発明は、請求項１の発明において、前記フラグエリアが各小ブロックに個別に設定された識別番号が書込可能である番号領域を含み、前記フラグ書込部が、書込開始フラグの値を反転させる際に、更新元のブロックがあれば更新元の小ブロックの識別番号を番号領域に書き込み、更新元のブロックがなければ規定値を番号領域に書き込む機能を有し、前記判定処理部では異常による処理中断からの復帰時に書込開始フラグが設定され書込終了フラグが設定されていないときに、番号領域を参照して抽出された更新元の小ブロックからデータの転送を再開させることを特徴とする。この構成によれば、異常からの復帰時に判定処理部が番号領域を確認することによって、更新元の小ブロックのうちデータの転送が未終了である小ブロックを容易に発見することができ、データの転送を容易に再開させることができる。
【００１２】
請求項３の発明は、請求項１または請求項２の発明において、前記各ブロックに、当該ブロックの消去の開始時に値が反転されるブロック消去開始フラグと、当該ブロックの消去の終了時に値が反転されるブロック消去終了フラグとが小ブロックとは別に設けられ、前記判定処理部では異常による処理中断からの復帰時にブロック消去開始フラグの値が反転しブロック消去終了フラグの値が反転していないときに消去処理部に指示を与えて当該ブロックのデータを消去させることを特徴とする。この構成によれば、ブロックのデータを消去している間に電源の遮断のような異常が生じたとしても、ブロック消去開始フラグの値が反転しブロック消去終了フラグの値が反転していなければ、消去処理の途中で異常が生じたことを認識することができ、当該ブロックの消去処理をあらためて行うことができる。
【００１３】
請求項４の発明は、請求項１の発明において、前記判定処理部では、異常による処理中断からの復帰時にいずれかの小ブロックにおいて書込開始フラグの値のみが反転しているときには、同じブロック内で書込開始フラグおよび書込終了フラグがともに反転している小ブロックが存在していれば、書込処理部に指示を与えて書込開始フラグおよび書込終了フラグがともに反転している小ブロックのデータを別のブロックに転送させた後に、消去処理部に指示を与えて当該ブロックのデータを消去させることを特徴とする。この構成によれば、一つのブロック内において書込が終了した小ブロックと書込が終了しておらずデータに欠損がある小ブロックとが混在しているときに、書込が終了した小ブロックのデータを別のブロックに転送することによって、欠損の生じているデータを消去しながらも、書込が終了した小ブロックについてはデータを活用することができ、データが無駄にならない。
【００１４】
請求項５の発明は、ブロック内の全ビットを２値の一方の値に設定する消去がブロック単位でのみ可能であるとともにブロック内の各ビットの値を２値の他方の値に設定する書込がビット単位で可能であり、かつ各ブロック内にそれぞれ複数個の小ブロックが設定される不揮発性のブロック消去型記憶媒体に接続され、ブロック消去型記憶媒体の各ブロックのデータを消去する消去処理および各ブロックにデータを書き込む書込処理が可能な管理装置であって、前記各ブロックに、当該ブロックの消去の開始時に値が反転されるブロック消去開始フラグと、当該ブロックの消去の終了時に値が反転されるブロック消去終了フラグとが小ブロックとは別に設けられ、前記小ブロックごとに、当該小ブロックへのデータの書込開始および書込終了をそれぞれ示す書込開始フラグおよび書込終了フラグと、当該小ブロックのデータが別のブロックから転送された場合にデータの転送が終了した元のブロックのデータの消去終了を示す消去終了フラグと、各小ブロックに個別に設定された識別番号が書込可能である番号領域とを備えるフラグエリアが設けられ、ブロックのデータを変更する際にデータの変更が生じない小ブロックについては更新元のブロックから更新先のブロックに小ブロックごとにデータを転送し、データの変更が生じる小ブロックについては更新先のブロックの小ブロックに変更されたデータを書き込む書込処理部と、更新元のブロックにおける所要の小ブロックのデータが更新先のブロックに転送された後に更新元のブロックのデータを消去する消去処理部と、更新先の各小ブロックへのデータの書込の開始時および終了時と更新元のブロックのデータの消去の終了時に更新先のブロックの各小ブロックにおける書込開始フラグ、書込終了フラグ、消去終了フラグの値をそれぞれ反転させるフラグ書込部と、異常による処理中断からの復帰時にフラグエリアの内容を監視しフラグエリアの内容に応じた復帰処理を行う判定処理部とを備え、前記フラグ書込部が、書込開始フラグの値を反転させる際に、更新元のブロックがあれば更新元の小ブロックの識別番号を番号領域に書き込み、更新元のブロックがなければ規定値を番号領域に書き込む機能を有し、前記判定処理部では異常による処理中断からの復帰時に、ブロック消去開始フラグの値が反転しブロック消去終了フラグの値が反転していなければ消去処理部に指示を与えて当該ブロックのデータを消去させ、いずれかの小ブロックにおいて書込開始フラグの値のみが反転しているときには、同じブロック内で書込開始フラグおよび書込終了フラグがともに反転している小ブロックが存在していれば、書込処理部に指示を与えて書込開始フラグおよび書込終了フラグがともに反転している小ブロックのデータを別のブロックに転送させた後に、消去処理部に指示を与えて当該ブロックのデータを消去させ、かつ番号領域を参照して抽出された更新元の小ブロックから前記別のブロックにデータを転送させることを特徴とする。この構成によれば、更新先へのデータの書込中や更新元のデータの消去中において、電源の遮断のような異常が生じて処理が中断しても、判定処理部が書込開始フラグ、書込終了フラグ、消去終了フラグの値を監視することによって、異常から復帰したときには異常の発生前における処理の進行状況を把握することができ、適切な復帰処理が可能になる。また、ブロックのデータを消去している間に電源の遮断のような異常が生じたとしても、ブロック消去開始フラグの値が反転しブロック消去終了フラグの値が反転していなければ、消去処理の途中で異常が生じたことを認識することができ、当該ブロックの消去処理をあらためて行うことができる。しかも、ブロックのデータを消去している間に電源の遮断のような異常が生じたとしても、ブロック消去開始フラグの値が反転しブロック消去終了フラグの値が反転していなければ、消去処理の途中で異常が生じたことを認識することができ、当該ブロックの消去処理をあらためて行うことができる。さらに、一つのブロック内において書込が終了した小ブロックと書込が終了しておらずデータに欠損がある小ブロックとが混在しているときに、書込が終了した小ブロックのデータを別のブロックに転送することによって、欠損の生じているデータを消去しながらも、書込が終了した小ブロックについてはデータを活用することができ、データが無駄にならない。
【００１５】
【発明の実施の形態】
以下に説明する発明の実施の形態では、説明を簡単にするために、ブロックのデータが消去された状態でブロック内の全ビットが１になり、書込に際してはビット単位でビット値を０に変更できるものとする。また、ブロック内には２個の小ブロックが存在するものとする。ただし、ブロック内の小ブロックが３個以上であっても本発明の技術思想は適用可能である。
【００１６】
（第１の実施の形態）
本実施形態では、図３に示すように、フラッシュメモリ１（図１参照）の２個のブロックＢ１，Ｂ２に着目し、各ブロックＢ１，Ｂ２がそれぞれ２個ずつの．小ブロック（たとえば、ページ）Ｐ１１，Ｐ１２、Ｐ２１，Ｐ２２を備えるものとする。また、初期状態では図３（ａ）のようにブロックＢ１における小ブロックＰ１１，Ｐ１２にそれぞれデータＤ１，データＤ２が格納されており、最終的には図３（ｄ）のようにブロックＢ２における小ブロックＰ２１，Ｐ２２にそれぞれデータＤ３，データＤ２を格納するものとする。要するに、小ブロックＰ１１のデータＤ１をデータＤ３に変更するとともに、ブロックＢ１からブロックＢ２にデータを転送したことになる。以下では、ブロックＢ１を更新元と呼び、ブロックＢ２を更新先と呼び、更新先のブロックＢ２にデータが書き込まれた後には更新元のブロックＢ１のデータは消去されるものとする。
【００１７】
更新先のブロックＢ２において小ブロックＰ２１に書き込まれるデータＤ３は、更新元のブロックＢ１には存在しなかったデータであるから、ブロックＢ２があらかじめ消去されていれば、ブロックＢ２に書き込むことができる。一方、小ブロックＰ２２に書き込まれるデータＤ２は、更新元のブロックＢ１における小ブロックＰ１２に格納されているデータであるから、ブロックＢ１からブロックＢ２に転送されることになる。つまり、手順としては、図３（ａ）の状態から図３（ｂ）のようにブロックＢ２の小ブロックＰ２１にデータＤ３を書き込むとともに、図３（ｃ）のようにブロックＢ１の小ブロックＰ１２からブロックＢ２の小ブロックＰ２２にデータＤ２を転送し、最後に図３（ｄ）のようにブロックＢ１のデータを消去することになる。この手順は従来構成として説明した手順と同様である。
【００１８】
ところで、本実施形態は、各小ブロックＰ１１，Ｐ１２、Ｐ２１，Ｐ２２ごとにそれぞれフラグエリアＦを設定した点が従来構成と相違する。各フラグエリアＦは３ビットであって、図４に示すように、書込開始フラグｆ１、書込終了フラグｆ２、消去終了フラグｆ３を備える。いずれもビット値が０である状態がフラグの設定された状態であって、ビット値が０であるフラグについてはその処理が行われたことを意味する。書込開始フラグｆ１はデータの更新先のブロックＢ２における小ブロックＰ２１，Ｐ２２においてデータの書込開始前に設定され、各小ブロックＰ２１，Ｐ２２においてデータの書込が終了した時点で、その小ブロックＰ２１，Ｐ２２に対して書込終了フラグｆ２が設定される。消去終了フラグｆ３の機能については後述する。また、フラグエリアＦは小ブロックＰ１１，Ｐ１２、Ｐ２１，Ｐ２２の適宜箇所に設けることができるが、通常は小ブロックＰ１１，Ｐ１２、Ｐ２１，Ｐ２２の先頭アドレスからフラグエリアＦが設定される。
【００１９】
図３の処理を例にして具体的に説明する。初期状態ではブロックＢ２は消去されているから、図３（ａ）の状態では、書込開始フラグｆ１＝１、書込終了フラグｆ２＝１、消去終了フラグｆ３＝１である。データＤ３の書込が開始される前には書込開始フラグｆ１が０に設定されるから、書込開始フラグｆ１＝０、書込終了フラグｆ２＝１、消去終了フラグｆ３＝１になり、その後、図３（ｂ）のようにデータＤ３が小ブロックＰ２１に書き込まれることになる。また、小ブロックＰ２１へのデータＤ３の書込が終了すると書込終了フラグｆ２が０に設定されるから、書込開始フラグｆ１＝０、書込終了フラグｆ２＝０、消去終了フラグｆ３＝１になる。要するに、小ブロックＰ２１のフラグエリアＦの内容は、図３（ｂ）の前後において、「ｆ１＝０、ｆ２＝１、ｆ３＝１」から、「ｆ１＝０、ｆ２＝０、ｆ３＝１」になる。
【００２０】
同様にして、図３（ｃ）のようにデータＤ２をブロックＢ２の小ブロックＰ２２に書き込む際に、小ブロックＰ２２のフラグエリアＦの内容は、当初は「ｆ１＝１、ｆ２＝１、ｆ３＝１」であるが、データＤ２の転送を開始する前に「ｆ１＝０、ｆ２＝１、ｆ３＝１」に設定され、データＤ２の転送が終了すれば「ｆ１＝０、ｆ２＝０、ｆ３＝１」に設定される。つまり、図３（ｃ）の前後においては、小ブロックＰ２２のフラグエリアＦの内容が、「ｆ１＝０、ｆ２＝１、ｆ３＝１」から、「ｆ１＝０、ｆ２＝０、ｆ３＝１」になる。
【００２１】
上述のようにしてブロックＢ２に所要のデータＤ２，Ｄ３が書き込まれた後には、図３（ｄ）のように、ブロックＢ１のデータＤ１，Ｄ２が消去されるのであって、更新元のブロックＢ１のデータＤ１，Ｄ２の消去後には、更新先のブロックＢ２の小ブロックＰ２１，Ｐ２２における消去終了フラグｆ３がともに０にされる。ここに、更新元のブロックＢ１の小ブロックＰ１１，Ｐ１２においては、消去によってフラグエリアＦのすべてのフラグが１になるから、再書込が可能な状態を示すことになる。
【００２２】
上述した処理手順を図２にまとめる。すなわち、データの更新処理を開始すると、まず書込対象である更新先のブロックＢ２の小ブロックＰ２１，Ｐ２２のフラグエリアＦに書込開始フラグｆ１が設定され（Ｓ１）、データが書き込まれる（Ｓ２）。１つの小ブロックＰ２１，Ｐ２２へのデータの書込が終了すれば（Ｓ３）、その小ブロックＰ２１，Ｐ２２に書込終了フラグｆ２が設定され（Ｓ４）、所要の小ブロックＰ２１，Ｐ２２へのデータの書込が終了すれば（Ｓ５）、次には更新元のブロックＢ１のデータの消去が開始され（Ｓ６）、更新元のブロックＢ１のデータが消去されると（Ｓ７）、更新先のブロックＢ１のすべての小ブロックＰ２１，Ｐ２２に消去終了フラグｆ３が設定される。
【００２３】
上述の動作は、図１に示すように、フラッシュメモリ１に接続した管理装置２が行っている。管理装置２は、マイクロプロセッサあるいは専用のハードウェアにより構成され、小ブロック間でのデータの転送を行うとともに各小ブロックへのデータの書込を行う書込処理部２１と、ブロック単位でデータを消去する消去処理部２２とを備えるほか、フラグエリアＦへのフラグの書込を行うフラグ処理部２３と、処理の進行状況を監視するとともにデータの更新処理を行うための指示を与える判定処理部２０とを備える。判定処理部２０では、データの更新処理の指示を外部から受けると、書込処理部２１、消去処理部２２、フラグ書込部２３に指示を与えて図２に示した手順で小ブロックのデータを操作する。また、判定処理部２０は、異常からの復帰時にフラグエリアＦの内容に基づいて以下に説明する処理を行う機能も備える。
【００２４】
上述した構成では、フラッシュメモリ１においてビット単位での書込が可能なことを利用して、フラグエリアＦに処理の進行状況を表すビット単位のフラグを処理の各段階ごとに書き込むから、いずれかの段階において電源が遮断されるような処理の中断する異常が生じたとしても、フラグエリアＦの内容を参照することによって、異常の発生前の状態に復帰させる復帰処理が可能になる。復帰処理は、フラグエリアＦの内容に応じて選択される。つまり、フラグエリアＦの内容を参照することによって、データの更新処理を行っている期間におけるどの段階で電源の遮断などの異常が生じたかを判断することができるから、各段階に対応した復帰処理を行うことになる。
【００２５】
つまり、異常から復帰した時点で、各小ブロックのフラグエリアの内容を参照したときに、フラグエリアＦのすべてのフラグが０であれば、データの変更に関する処理がすべて終了したことを意味し、フラグエリアｆのすべてのフラグが１であれば、その小ブロックはデータが消去され書込が可能であることを意味することになる。一方、３個のフラグのうちのいずれかが他のフラグと異なっていれば、電源の遮断のような異常の発生時にデータの更新処理が途中であったことが把握できる。したがって、判定処理部２０ではフラグの内容を監視することによって、データの転送先が書込可能であることを把握したり、異常からの復帰時に異常の発生前の処理を継続させたりすることが可能になる。
【００２６】
ところで、小ブロックＰへの書込が開始され、書込が終了するまでに異常が生じたときには、その小ブロックＰのフラグエリアＦは「ｆ１＝０、ｆ２＝１、ｆ３＝１」になっている。つまり、フラグエリアＦの内容が「ｆ１＝０、ｆ２＝１、ｆ３＝１」である小ブロックＰは、データの書込の途中で異常が生じたことがわかる。言い換えると、この小ブロックＰのデータは一部が欠損していることになる。ただし、欠損したデータを含むブロックＢ内の他の小ブロックＰについては、データに欠損がない可能性がある。
【００２７】
そこで、図５に示すように、異常から復帰したときには、まずフラッシュメモリ１のすべての小ブロックＰにおけるフラグエリアＦを参照し、フラグエリアＦの内容が「ｆ１＝０、ｆ２＝１、ｆ３＝１」である小ブロックＰをすべて抽出する（Ｓ１〜Ｓ３）。次に、抽出された小ブロックＰを含むブロックＢ内でフラグエリアＦの内容が「ｆ１＝１、ｆ２＝１、ｆ３＝１」である小ブロックＰが存在するか否かを検出し（Ｓ４）、一つのブロックＢにデータが正常である小ブロックＰと異常である小ブロックＰとが混在するときには、データが正常である小ブロックＰのデータを別のブロックに転送する（Ｓ５）。データの転送後に当該ブロックＢのデータを消去すれば（Ｓ６）、欠損のあるデータのみが消去され、欠損のあったデータを適宜の小ブロックＰに書き込む処理から再開させることができる。このような処理を行えば、消去するデータ量を少なくすることができ、比較的短時間で復帰させることが可能になる。
【００２８】
（第２の実施の形態）
本実施形態は、図６に示すように、フラグエリアＦに番号領域ｆ４を追加したものである。本実施形態では、各小ブロックに識別番号が付与されていることを前提にしている。しかして、小ブロック間でのデータの転送時に転送先の番号領域ｆ４に転送元の小ブロックの識別番号が書き込まれる。番号領域ｆ４への識別番号の書込は、書込開始フラグｆ１の設定時と同じタイミングになっている。したがって、小ブロックへのデータの書込が開始されるときには、小ブロック間でのデータの転送であれば転送元が番号領域ｆ４に書き込まれる。その結果、データの転送中の期間に電源が遮断されるような異常が生じても、番号領域ｆ４によって転送元を知ることができ、正常なデータの所在を知ることによってデータの転送を再開させることができる。
【００２９】
図３に示した例で説明すれば、図３（ｂ）（ｃ）のようにブロックＢ１の小ブロックＰ１２からブロックＢ２の小ブロックＰ２２にデータを転送するにあたって、小ブロックＰ１２の識別番号が０２であるとすれば、フラグエリアＦの内容が、「ｆ１＝１、ｆ２＝１、ｆ３＝１、ｆ４＝ＦＦ」の状態から「ｆ１＝０、ｆ２＝１、ｆ３＝１、ｆ４＝０２」に変更される。したがって、データの転送中に電源が遮断されるような異常が生じたとしても番号領域ｆ４の値である０２を見ることによって、小ブロックＰ１２には元のデータが残っていることを知ることができる。なお、小ブロックに書き込まれるデータが他の小ブロックから転送されるものでないときには、小ブロックの識別番号に用いられていない規定値（たとえば、０）を番号領域ｆ４に設定する。
【００３０】
（第３の実施の形態）
上述した実施形態では、更新先のブロックＢ２にデータを書き込んだ後に更新元のブロックＢ１のデータを消去する例を示しており、書込終了フラグｆ２の設定から消去終了フラグｆ３の設定までの期間を消去処理の期間とみなしている。しかしながら、データが格納されているブロックについてデータの消去のみを行う場合には、データの消去処理を開始した時点を知ることができない。したがって、消去処理の期間において電源が遮断されるような異常が生じた場合には、消去終了フラグｆ３が０に保たれていることがあり、一部が消去されたデータか正常なデータかの判別ができなくなる可能性が生じる。
【００３１】
本実施形態では、図７に示すように、ブロックＢごとに小ブロックＰとは別の領域にそれぞれ１ビットであるブロック消去開始フラグｆ５とブロック消去終了フラグｆ６とを設けることにより、ブロック単位での消去の開始と終了とを示すようにしたものである。ブロック消去開始フラグｆ５はブロックＢについて消去処理を開始する直前に０に設定され、ブロック消去終了フラグｆ６は消去処理が終了すると０に設定される。
【００３２】
したがって、データが格納されているか否かにかかわらず正常なブロックＢでは「ｆ５＝１、ｆ６＝０」であり、消去処理が開始されると「ｆ５＝０、ｆ６＝０」になる。その後、ブロックＢのデータがすべて消去されると「ｆ５＝１、ｆ６＝１」になり、消去処理が終了すればブロック消去終了フラグｆ６が設定されて、「ｆ５＝１、ｆ６＝０」になる。
【００３３】
このように、消去処理が正常に行われたブロックＢ（フラッシュメモリ１の使用開始時の初期化による消去処理でも同様）では「ｆ５＝１、ｆ６＝０」であるから、ブロック消去開始フラグｆ５とブロック消去終了フラグｆ６との値が上述の関係以外のときには消去処理中に異常が生じたと判断することができる。本実施形態では、異常からの復帰時に、ブロック消去開始フラグｆ５およびブロック消去終了フラグｆ６の値を判定処理部２０において監視し、「ｆ５＝１、ｆ６＝０」ではないブロックＢについては消去処理部２２に対して消去処理を指示する。他の構成および動作は第１ないし第２の実施の形態と同様である。
【００３４】
本実施形態における消去処理を図８にまとめる。すなわち、消去処理が指示されると、まず消去対象であるブロックＢのブロック消去開始フラグｆ５が設定され（Ｓ１）、ブロックＢの消去が開始される（Ｓ２）。ブロックＢの消去が終了すれば（Ｓ３）、消去対象であるブロックＢにブロック消去終了フラグｆ６が設定されるのである。
【００３５】
本実施形態のように各ブロックＢにブロック消去開始フラグｆ５およびブロック消去終了フラグｆ６を用いる構成を、第２の実施の形態のように各小ブロックＰにそれぞれ番号領域ｆ４を付与する構成と併用すれば、異常からの復帰時において消去すべきデータが残っているか否かを判断することができ、そのようなデータが残っているブロックに対して消去処理を施すことが可能になる。
【００３６】
たとえば、ブロックＢの消去処理の期間において異常が生じたとすると、異常からの復帰時にはブロックＢの消去が完了していないから、不完全なデータが残されることになる。また、第１の実施の形態のようにデータの更新処理の際に、更新先のブロックＢ２の一部の小ブロックＰ２１，Ｐ２２へのデータの書込が終了したものの、他の小ブロックＰ２１，Ｐ２２へのデータの書込が終了する前に異常が生じることがある。つまり、ブロックＢ１の消去処理が予定されている状態で消去処理の前に異常が生じることがある。ここで、書込の終了したデータが更新元から更新先に転送されたものであるときには、更新元のブロックＢ１と更新先のブロックＢ２とに同じデータの２つの小ブロックが存在することになる。また、この場合には書込が終了していない小ブロックＰ２１，Ｐ２２のデータには欠損が生じていることになる。
【００３７】
このように消去処理中や消去処理が予定されている状態での異常により欠損の生じたデータは異常からの復帰時に消去することが必要であり、消去処理中あるいは消去処理が予定されていたブロックは異常からの復帰後にデータを消去しなければならない。
【００３８】
図９を用いて動作を簡単に説明する。上述したように、ブロックＢの消去処理の期間において異常が生じたときには、「ｆ５＝０、ｆ６＝０」であるから、異常からの復帰時に各ブロックＢのブロック消去開始フラグｆ５とブロック消去終了フラグｆ６との組を検索して「ｆ５＝０、ｆ６＝０」であれば、ブロックＢの消去処理が正常に終了していないものと判断し、判定処理部２０から消去処理部２２に対して当該ブロックＢのデータを消去するように指示する（Ｓ１）。
【００３９】
一方、データの更新処理に際して、更新先のブロックＢ２の一部の小ブロックＰ２１へのデータの書込後で、他の小ブロックＰ２２へのデータの書込中に異常が生じたときには、更新先のブロックＢ２における小ブロックＰ２１のフラグエリアＦの内容は「ｆ１＝０、ｆ２＝０、ｆ３＝１、ｆ４＝３」であり、小ブロックＰ２２のフラグエリアＦの内容は「ｆ１＝０、ｆ２＝１、ｆ３＝１、ｆ４＝４」になっている。そこで、異常からの復帰時に各小ブロックＰ１１，Ｐ１２，Ｐ２１，Ｐ２２のフラグエリアＦの内容を検索して「ｆ１＝０、ｆ２＝１、ｆ３＝１」である小ブロックが抽出されたときには（Ｓ２〜Ｓ４）、同じブロックＢ２内に「ｆ１＝０、ｆ２＝０、ｆ３＝１」である小ブロックＰ２１が含まれるか否かを検証する（Ｓ５）。ここでは、ブロックＢ２において、書込が終了した小ブロックＰ２１と書込中の小ブロックＰ２２とが混在していると想定しており、このような場合には、異常からの復帰時の復帰処理において、すでに書込が終了した小ブロックＰ２１を活用するために、書込が終了した小ブロックＰ２１のデータについては別のブロックＢに転送する（Ｓ６）。つまり、書込が終了した小ブロックＰ２１のデータを退避したことになり、データの退避が終了した後にブロックＢ２の消去処理を行えば、欠損の生じているデータを消去することができる（Ｓ７）。このとき、番号領域ｆ４を利用することによって、欠損の生じているデータを保有していた小ブロックＰ２２を特定することができるから、ブロックＢ２のデータを消去した後、小ブロックＰ２２への書込を予定していたデータを、小ブロックＰ２１のデータを転送したブロックにおける小ブロックに書き込むようにすればよい（Ｓ８）。その後、すべての小ブロックへのデータの書込が終了すれば、更新元のブロックＢ１のデータを消去する（Ｓ９）。この処理によって、更新元と更新先との２つの小ブロックが同じデータを持つことを回避することができる。
【００４０】
フラグエリアＦの内容を検索したときに、「ｆ１＝０、ｆ２＝１、ｆ３＝１」である小ブロックが抽出されなければ、データに欠損の生じている小ブロックは存在しないから、異常が生じる前の処理から継続することによって、データの更新処理を正常に終了させることが可能になる。他の構成および動作は第１の実施の形態と同様である。
【００４１】
【発明の効果】
請求項１の発明では、更新先へのデータの書込中や更新元のデータの消去中において電源の遮断のような異常が生じて処理が中断しても、判定処理部が書込開始フラグ、書込終了フラグ、消去終了フラグの値を監視することによって、異常から復帰したときには異常の発生前における処理の進行状況を把握することができ、適切な復帰処理が可能になる。
【００４２】
請求項２の発明では、請求項１の発明の効果に加えて、異常からの復帰時に判定処理部が番号領域を確認することによって、更新元の小ブロックのうちデータの転送が未終了である小ブロックを容易に発見することができ、データの転送を容易に再開させることができる。
【００４３】
請求項３の発明では、請求項１または請求項２の発明の効果に加えて、ブロックのデータを消去している間に電源の遮断のような異常が生じたとしても、ブロック消去開始フラグの値が反転しブロック消去終了フラグの値が反転していなければ、消去処理の途中で異常が生じたことを認識することができ、当該ブロックの消去処理をあらためて行うことができる。
【００４４】
請求項４の発明では、請求項１の発明の効果に加えて、一つのブロック内において書込が終了した小ブロックと書込が終了しておらずデータに欠損がある小ブロックとが混在しているときに、書込が終了した小ブロックのデータを別のブロックに転送することによって、欠損の生じているデータを消去しながらも、書込が終了した小ブロックについてはデータを活用することができ、データが無駄にならない。
【００４５】
請求項５の発明では、更新先へのデータの書込中や更新元のデータの消去中において、電源の遮断のような異常が生じて処理が中断しても、判定処理部が書込開始フラグ、書込終了フラグ、消去終了フラグの値を監視することによって、異常から復帰したときには異常の発生前における処理の進行状況を把握することができ、適切な復帰処理が可能になる。また、ブロックのデータを消去している間に電源の遮断のような異常が生じたとしても、ブロック消去開始フラグの値が反転しブロック消去終了フラグの値が反転していなければ、消去処理の途中で異常が生じたことを認識することができ、当該ブロックの消去処理をあらためて行うことができる。しかも、ブロックのデータを消去している間に電源の遮断のような異常が生じたとしても、ブロック消去開始フラグの値が反転しブロック消去終了フラグの値が反転していなければ、消去処理の途中で異常が生じたことを認識することができ、当該ブロックの消去処理をあらためて行うことができる。さらに、一つのブロック内において書込が終了した小ブロックと書込が終了しておらずデータに欠損がある小ブロックとが混在しているときに、書込が終了した小ブロックのデータを別のブロックに転送することによって、欠損の生じているデータを消去しながらも、書込が終了した小ブロックについてはデータを活用することができ、データが無駄にならない。
【図面の簡単な説明】
【図１】本発明の実施の形態を示すブロック図である。
【図２】本発明の第１の実施の形態を示す動作説明図である。
【図３】同上の動作説明図である。
【図４】同上におけるフラグエリアの説明図である。
【図５】同上の復帰処理を示す動作説明図である。
【図６】本発明の第２の実施の形態におけるフラグエリアの説明図である。
【図７】本発明の第３の実施の形態におけるブロックの説明図である。
【図８】同上の動作説明図である。
【図９】同上の復帰処理を示す動作説明図である。
【符号の説明】
１  フラッシュメモリ
２  管理装置
２０  判定処理部
２１  書込処理部
２２  消去処理部
２３  フラグ書込部
Ｂ  ブロック
Ｂ１，Ｂ２  ブロック
Ｆ  フラグ
ｆ１  書込開始フラグ
ｆ２  書込終了フラグ
ｆ３  消去終了フラグ
ｆ４  番号領域
ｆ５  ブロック消去開始フラグ
ｆ６  ブロック消去終了フラグ
Ｐ  小ブロック
Ｐ１１，Ｐ１２  小ブロック
Ｐ２１，Ｐ２２  小ブロック
【図１】
0004654531.tif 000002
【図２】
0004654531.tif 000003
【図３】
0004654531.tif 000004
【図４】
0004654531.tif 000005
【図５】
0004654531.tif 000006
【図６】
0004654531.tif 000007
【図７】
0004654531.tif 000008
【図８】
0004654531.tif 000009
【図９】
0004654531.tif 000010