(57)【特許請求の範囲】
【請求項１】
論理ブロックアドレスからアドレス変換テーブルを参照することで変換される物理ブロックアドレスの物理ブロックを記憶単位として構成される不揮発性メモリにおいて、
各物理ブロックは、データが記憶されるデータ領域と、種々の管理情報等が記憶される冗長領域とを備え、
それぞれの前記冗長領域が、当該冗長領域の含まれる物理ブロックに対応する論理ブロックを特定する情報を記憶する論理ブロック情報記憶領域と、
対応する論理ブロックが１つ前に対応付けられていた物理ブロックである前使用物理ブロックを特定する情報を記憶する前使用物理ブロック情報記憶領域と、
当該冗長領域の含まれる物理ブロックをデータの書き込み対象としたデータ書き換え動作を実施する際に生起する各段階の動作状態を識別するステータス情報を記憶するステータス情報記憶領域とを有し、
上記ステータス情報記憶領域には、当該ステータス情報記憶領域の含まれる物理ブロックが消去状態にあることを示す第１のステータス情報と、当該ステータス情報記憶領域の含まれる物理ブロックへのデータの書き込みが完了してはいるが対応する前使用物理ブロックのデータが未消去である状態を示す第２のステータス情報と、当該ステータス情報記憶領域の含まれる物理ブロックへのデータの書き込みが完了するとともに対応する前使用物理ブロックのデータが消去済みである状態を示す第３のステータス情報とが少なくとも記憶され、
第１のステータス情報と第２のステータス情報と第３のステータス情報とが同じビット数で表現され、第１のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第２のステータス情報が構成され、第２のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第３のステータス情報が構成される
ことを特徴とする不揮発性メモリ。
【請求項２】
論理ブロックアドレスからアドレス変換テーブルを参照することで変換される物理ブロックアドレスの物理ブロックを記憶単位として構成され、各物理ブロックは、データが記憶されるデータ領域と、種々の管理情報等が記憶される冗長領域とを備え、それぞれの前記冗長領域が、当該冗長領域の含まれる物理ブロックに対応する論理ブロックを特定する情報を記憶する論理ブロック情報記憶領域と、対応する論理ブロックが１つ前に対応付けられていた物理ブロックである前使用物理ブロックを特定する情報を記憶する前使用物理ブロック情報記憶領域と、当該冗長領域の含まれる物理ブロックをデータの書き込み対象としたデータ書き換え動作を実施する際に生起する各段階の動作状態を識別するステータス情報を記憶するステータス情報記憶領域とを有し、上記ステータス情報記憶領域には、当該ステータス情報記憶領域の含まれる物理ブロックが消去状態にあることを示す第１のステータス情報と、当該ステータス情報記憶領域の含まれる物理ブロックへのデータの書き込みが完了してはいるが対応する前使用物理ブロックのデータが未消去である状態を示す第２のステータス情報と、当該ステータス情報記憶領域の含まれる物理ブロックへのデータの書き込みが完了するとともに対応する前使用物理ブロックのデータが消去済みである状態を示す第３のステータス情報とが少なくとも記憶され、第１のステータス情報と第２のステータス情報と第３のステータス情報とが同じビット数で表現され、第１のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第２のステータス情報が構成され、第２のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第３のステータス情報が構成される不揮発性メモリのデータ書き換え方法であって、
消去状態にある物理ブロックを検索してデータの書き込み対象となる物理ブロックを特定する第２のステップと、
論理ブロックと物理ブロックとを対応付けるアドレス変換テーブルを参照して、書き換え対象の論理ブロックに対応付けられている物理ブロックである前使用物理ブロックを特定する第３のステップと、
書き込み対象の物理ブロックにデータを書き込む第４のステップと、
前使用物理ブロックのデータを消去する第５のステップと、
書き換え対象の論理ブロックに書き込み対象の物理ブロックを対応付けるようにアドレス変換テーブルを更新する第６のステップとを有し、
書き込み対象の物理ブロックについては、当初消去状態にあることを示す第１のステータス情報が設定され、第４のステップの処理が終了した後にデータの書き込みが完了したことを示す第２のステータス情報が設定され、第５のステップの処理が終了した後に前使用物理ブロックのデータの消去が完了したことを示す第３のステータス情報が設定され、
第１のステータス情報と第２のステータス情報と第３のステータス情報とが同じビット数で表現され、第１のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第２のステータス情報が構成され、第２のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第３のステータス情報が構成されることを特徴とする不揮発性メモリのデータ書き換え方法。
【請求項３】
上記不揮発性メモリの記憶単位である各物理ブロック毎に検索を実施して、冗長領域内のステータス情報記憶領域からステータス情報を読み出し、
上記読み出したステータス情報に基づいて、当該物理ブロックに記憶されているデータが消去状態にあるべきか否かを判定し、
上記読み出したステータス情報が、当該物理ブロックに記憶されているデータが消去状態にあるべきことを示している場合には、当該物理ブロックのデータを消去し、
また、上記読み出したステータス情報が、当該物理ブロックに記憶されているデータが消去状態にあるべきことを示していない場合には、当該物理ブロックへのデータの書き込みは完了しているが当該物理ブロックに係る前使用物理ブロックのデータ消去が完了していない可能性があるか否かを判定し、前使用物理ブロックのデータ消去が完了していない可能性がある場合には、前使用物理ブロックのデータを消去するとともに、当該物理ブロックのステータス情報記憶領域に前使用物理ブロックのデータが消去済みである状態を示すステータス情報を書き込み、検索対象となっている物理ブロックの論理ブロックアドレス記憶領域を参照して対応する論理ブロックを特定して、アドレス変換テーブルにおいて当該論理ブロックに対応する物理ブロックとして検索対象となっている物理ブロックを登録し、
上記読み出したステータス情報が、当該物理ブロックへのデータの書き込みは完了しているが当該物理ブロックに係る前使用物理ブロックのデータ消去が完了していない可能性がないことを示している場合には、上記読み出したステータス情報が、当該物理ブロックのステータス情報記憶領域に前使用物理ブロックのデータが消去済みである状態を示している否かを判定し、
上記読み出したステータス情報が、当該物理ブロックのステータス情報記憶領域に前使用物理ブロックのデータが消去済みである状態を示している場合には、検索対象となっている物理ブロックの論理ブロックアドレス記憶領域３を参照して対応する論理ブロックを特定し、アドレス変換テーブルにおいて当該論理ブロックに対応する物理ブロックとして検索対象となっている物理ブロックを登録すし、
さらに、上記読み出したステータス情報が、当該物理ブロックのステータス情報記憶領域に前使用物理ブロックのデータが消去済みである状態を示していない場合には、検索対象となっている物理ブロックが異常ブロックであると判定して、当該物理ブロックのアドレスを異常ブロックテーブルに登録する
ことを特徴とする請求項２記載の不揮発性メモリのデータ書き換え方法。
【請求項４】
また、異常ブロックテーブルから登録されている物理ブロックのアドレスを取り出して検索対象の物理ブロックを特定し、
ステータス情報が消去処理の完了している前使用物理ブロックであることを示しているか否かを判定し、
上記ステータス情報が消去処理の完了している前使用物理ブロックであることを示している場合に、検索対象となっている物理ブロックに係るアドレスを異常ブロックテーブルから削除する
ことを特徴とする請求項３記載の不揮発性メモリのデータ書き換え方法。
【請求項５】
さらに、修正された異常ブロックテーブルから登録されている物理ブロックのアドレスを取り出して検索対象となる物理ブロックを特定し、
検索対象となっている物理ブロックの冗長領域からステータス情報を取り出して、当該ステータス情報に基づいて、検索対象となっている物理ブロックへのデータの書き込みは完了しているが当該物理ブロックに係る前使用物理ブロックのデータ消去は完了していない状態にあるか否かを判定し、
当該物理ブロックに係る前使用物理ブロックのデータ消去が完了している場合には、検索対象となっている物理ブロックのステータス情報記憶領域に前使用物理ブロックのデータを消去したことを示すステータス情報を書き込み、また、当該物理ブロックに係る前使用物理ブロックのデータ消去は完了していない状態にある場合には、前使用物理ブロックアドレス記憶領域に記憶されているアドレスにより特定される前使用物理ブロックのデータを消去し、検索対象となっている物理ブロックのステータス情報記憶領域に前使用物理ブロックのデータを消去したことを示すステータス情報を書き込む
ことを特徴とする請求項４記載の不揮発性メモリのデータ書き換え方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、メモリカード等の電子機器に設けられた例えばＮＡＮＤ型フラッシュメモリ等の不揮発性メモリにおいて停電等によるシステムダウンが生じても、再起動時に欠陥が生じているデータブロックを検出して正常な記憶状態への復帰を可能とする不揮発性メモリ、並びに当該不揮発性メモリにおけるデータ書き換え方法に関するものである。
【０００２】
【従来の技術】
近年、大量のデータを記憶するのに適した低コストのＮＡＮＤ型フラッシュメモリ等の不揮発性メモリが、家電機器、携帯電子機器、メモリカード等の電子機器に幅広く使用されている。例えばフラッシュメモリを備えた電子機器において停電や動作不良等に起因するシステムダウンが生じると、フラッシュメモリに記憶されたデータの一部が破壊される可能性がある。このようなシステムダウンに対するデータ保護対策の一方式としては、例えばチェックサムやＣＲＣ(Cyclic Redundancy Check)符号等を用いてフラッシュメモリに書き込むデータを冗長化しておくとともに、電源投入によるシステム復帰時においてフラッシュメモリに格納されたデータからチェックサムを算出し、データに異常があるか否かを判定する。
【０００３】
また、データ保護対策の他の方式としては、フラッシュメモリに加えてフラッシュメモリよりも高速書き込みが可能な補助不揮発性メモリを設けて、この補助不揮発性メモリにおいて最新の所定数の動作状態（ステータス）に係るバス情報を記憶するようにする。図８は、このような従来のフラッシュメモリを備えた電子機器の概略構成を示すブロック図である。図８において、１０１は電子機器、１０２はＣＰＵ、１０３はメインメモリとして与えられるフラッシュメモリ、１０４はフラッシュメモリよりも高速書き込みが可能な補助不揮発性メモリ、１０５はＣＰＵ１０２とフラッシュメモリ１０３とを接続するバス、１０６はバス１０５から分岐して補助不揮発性メモリ１０４に接続されるバス、１０７は補助不揮発性メモリ１０４にコントロール信号を供給する信号線である。
【０００４】
次に、図８に示された電子機器の動作について説明する。例えば、フラッシュメモリ１０３の各動作期間の前半にＣＰＵ１０２は補助不揮発性メモリ１０４にコントロール信号を供給し、補助不揮発性メモリ１０４は当該コントロール信号に応答してバス１０６を介してバス１０５上の情報を記録する。このバス情報の記録は、データの書き込み、読み出し、消去等の処理により生起するステータスについて最新の複数ステータスに係るバス情報のみを記録する。したがって、補助不揮発性メモリ１０４はそれほど大きな記憶容量を必要とはしない。これにより、書き込み動作や消去動作に長時間を要するフラッシュメモリにおいて、動作中に停電等によるシステムダウンが発生しても、その直前の所定数のステータスに係るバス情報が補助不揮発性メモリに記録されるので、システム復帰後に補助不揮発性メモリに記録されたバス情報を解析することで、システムダウン発生時の動作状態を特定しフラッシュメモリにおけるデータ異常を検出してフラッシュメモリを正常な記憶状態に復帰させる。
【０００５】
【発明が解決しようとする課題】
フラッシュメモリを備えた従来の電子機器は上記のようなデータ保護対策機能を有しており、前者のチェックサムやＣＲＣ符号を用いる方法では、システムダウン時の動作状態を検知することができないので、システムを復帰する処理あるいはフラッシュメモリのデータを復元する処理を実施する為に複雑なシステムを構築する必要があるという課題があった。
【０００６】
また、後者の補助不揮発性メモリにバス情報を記憶する方法では、記憶されたバス情報を解析してシステムダウン発生時の動作状態を特定して当該特定された動作状態に応じてフラッシュメモリのデータを復元しなければならず、データ復元処理を実施する為に複雑なシステムを構築する必要があるという課題があった。
【０００７】
この発明は上記のような課題を解決するためになされたもので、停電等によるシステムダウン時におけるＮＡＮＤ型フラッシュメモリ等の不揮発性メモリに係る動作状態を容易に検知することができて、迅速かつ確実に正常な記憶状態に復帰させることができる不揮発性メモリ、並びに当該不揮発性メモリのデータ書き換え方法を得ることを目的とする。
【０００８】
【課題を解決するための手段】
本発明は、論理ブロックアドレスからアドレス変換テーブルを参照することで変換される物理ブロックアドレスの物理ブロックを記憶単位として構成される不揮発性メモリにおいて、各物理ブロックは、データが記憶されるデータ領域と、種々の管理情報等が記憶される冗長領域とを備え、それぞれの前記冗長領域が、当該冗長領域の含まれる物理ブロックに対応する論理ブロックを特定する情報を記憶する論理ブロック情報記憶領域と、対応する論理ブロックが１つ前に対応付けられていた物理ブロックである前使用物理ブロックを特定する情報を記憶する前使用物理ブロック情報記憶領域と、当該冗長領域の含まれる物理ブロックをデータの書き込み対象としたデータ書き換え動作を実施する際に生起する各段階の動作状態を識別するステータス情報を記憶するステータス情報記憶領域とを有し、上記ステータス情報記憶領域には、当該ステータス情報記憶領域の含まれる物理ブロックが消去状態にあることを示す第１のステータス情報と、当該ステータス情報記憶領域の含まれる物理ブロックへのデータの書き込みが完了してはいるが対応する前使用物理ブロックのデータが未消去である状態を示す第２のステータス情報と、当該ステータス情報記憶領域の含まれる物理ブロックへのデータの書き込みが完了するとともに対応する前使用物理ブロックのデータが消去済みである状態を示す第３のステータス情報とが少なくとも記憶され、第１のステータス情報と第２のステータス情報と第３のステータス情報とが同じビット数で表現され、第１のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第２のステータス情報が構成され、第２のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第３のステータス情報が構成されることを特徴とする。
【０００９】
また、本発明は、論理ブロックアドレスからアドレス変換テーブルを参照することで変換される物理ブロックアドレスの物理ブロックを記憶単位として構成され、各物理ブロックは、データが記憶されるデータ領域と、種々の管理情報等が記憶される冗長領域とを備え、それぞれの前記冗長領域が、当該冗長領域の含まれる物理ブロックに対応する論理ブロックを特定する情報を記憶する論理ブロック情報記憶領域と、対応する論理ブロックが１つ前に対応付けられていた物理ブロックである前使用物理ブロックを特定する情報を記憶する前使用物理ブロック情報記憶領域と、当該冗長領域の含まれる物理ブロックをデータの書き込み対象としたデータ書き換え動作を実施する際に生起する各段階の動作状態を識別するステータス情報を記憶するステータス情報記憶領域とを有し、上記ステータス情報記憶領域には、当該ステータス情報記憶領域の含まれる物理ブロックが消去状態にあることを示す第１のステータス情報と、当該ステータス情報記憶領域の含まれる物理ブロックへのデータの書き込みが完了してはいるが対応する前使用物理ブロックのデータが未消去である状態を示す第２のステータス情報と、当該ステータス情報記憶領域の含まれる物理ブロックへのデータの書き込みが完了するとともに対応する前使用物理ブロックのデータが消去済みである状態を示す第３のステータス情報とが少なくとも記憶され、第１のステータス情報と第２のステータス情報と第３のステータス情報とが同じビット数で表現され、第１のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第２のステータス情報が構成され、第２のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第３のステータス情報が構成される不揮発性メモリのデータ書き換え方法であって、消去状態にある物理ブロックを検索してデータの書き込み対象となる物理ブロックを特定する第２のステップと、論理ブロックと物理ブロックとを対応付けるアドレス変換テーブルを参照して、書き換え対象の論理ブロックに対応付けられている物理ブロックである前使用物理ブロックを特定する第３のステップと、書き込み対象の物理ブロックにデータを書き込む第４のステップと、前使用物理ブロックのデータを消去する第５のステップと、書き換え対象の論理ブロックに書き込み対象の物理ブロックを対応付けるようにアドレス変換テーブルを更新する第６のステップとを有し、書き込み対象の物理ブロックについては、当初消去状態にあることを示す第１のステータス情報が設定され、第４のステップの処理が終了した後にデータの書き込みが完了したことを示す第２のステータス情報が設定され、第５のステップの処理が終了した後に前使用物理ブロックのデータの消去が完了したことを示す第３のステータス情報が設定され、第１のステータス情報と第２のステータス情報と第３のステータス情報とが同じビット数で表現され、第１のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第２のステータス情報が構成され、第２のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第３のステータス情報が構成されることを特徴とする。
【００１２】
【発明の実施の形態】
以下、添付の図面を参照して本願発明に係る実施の形態を説明する。なお、以下の説明においては、本願発明の実施の形態に記載された各手段および各工程と、特許請求の範囲に記載された発明の各手段および各工程との対応関係を明らかにするために、実施の形態に記載された各手段および各工程にそれぞれ対応する特許請求の範囲に記載された発明の各手段および各工程を適宜かっこ書きにより示すものとする。
【００１３】
実施の形態１．
図１は、不揮発性メモリの記憶領域に係る論理ブロックと物理ブロックとの関係を示す図である。書き換え可能な不揮発性メモリの代表的なものにＮＡＮＤ型フラッシュメモリがある。この種のフラッシュメモリは、ブロック単位で管理され、データの消去（通常は全ビットに対してバイナリデータ“１”を書き込む動作）はブロック単位で実施される。また、本願発明では、書き込みについても基本的にはブロック単位で実施するものとするが、１または複数の任意のビットに係るバイナリデータを“１”から“０”へ変換するのみで実行可能なデータの書き込みについてはより小さな記憶単位で実施することが可能である。
【００１４】
フラッシュメモリをアクセスする際には、図１に示されるように、与えられた論理ブロックアドレスを例えばＣＰＵに接続されたＲＡＭ内に格納されるアドレス変換テーブルを参照することで物理ブロックアドレスに変換し、データの消去、書き込み、読み出し等を実施する物理ブロックを特定する。このように論理ブロックアドレスによりアクセスする方式をとることで、欠陥のある物理ブロックが発生した場合に当該欠陥ブロックに対する処理動作を代替用の別の空きブロックに対して実施しても、アプリケーションプログラム等を実行するＣＰＵ側ではブロック代替の有無に関係なく同一の論理ブロックアドレスを用いてアクセスすることが可能となる。
【００１５】
図２は、本願発明において採用される物理ブロック内に格納される管理情報に係るデータ構造を示す図である。図２において、１は通常のデータが記憶されるデータ領域、２は当該物理ブロックに係る管理情報やエラー訂正符号等に係るデータが記憶される冗長領域であり、データ領域１と冗長領域２とから物理ブロックが構成される。また、３は当該冗長領域を有する物理ブロックに対応する論理ブロックのアドレスを記憶する論理ブロックアドレス記憶領域（論理ブロック情報記憶領域）、４は当該冗長領域を有する物理ブロックに対応する論理ブロックが１つ前に対応付けられていた物理ブロック（以下では、このような物理ブロックを前使用物理ブロックと称するものとする）のアドレスを記憶する前使用物理ブロックアドレス記憶領域（前使用物理ブロック情報記憶領域）、５は論理ブロックアドレス記憶領域３に記憶された論理ブロックアドレスと前使用物理ブロックアドレス記憶領域４に記憶された前使用物理ブロックアドレスとに係るエラー訂正符号を記憶する第１エラー訂正符号記憶領域、６は当該冗長領域を有する物理ブロックに対して実施される処理に基づいて生起する各段階の動作状態をそれぞれ示すステータス情報を記憶するステータス情報記憶領域、７はデータ領域１に記憶されたデータに係るエラー訂正符号を記憶する第２エラー訂正符号記憶領域である。
【００１６】
次に、本願発明に係るフラッシュメモリに対して実行されるデータ書き換え動作について説明する。まず所定の論理ブロックに記憶されたデータに係る書き換え動作の概略的な手順について説明する。第１に、データ書き換えの対象となる論理ブロックを特定する。第２に、空いている物理ブロックを検索する。第３に、空いている物理ブロックへ書き換え用のデータを書き込む。第４に、それまで書き換え対象の論理ブロックに対応付けられていた物理ブロックのデータを消去する。第５に、書き換え対象の論理ブロックを書き込みの実施された物理ブロックに対応付けるようにアドレス変換テーブルを更新する。このように、データ書き換えを実施する際に新たな物理ブロックにデータを書き込むとともに前使用物理ブロックに記憶されたデータを消去する方式をとることで、停電等によるシステムダウンが生じても書き換え対象の論理ブロックに係る管理情報が書き込み対象の物理ブロックまたは前使用物理ブロックのいずれかには残されて消失することがなくシステムの復帰が可能となり、また同一の物理ブロックへの書き込みの集中による素子の劣化を防止してフラッシュメモリ自体の寿命を延ばすことが可能となる。
【００１７】
次に、データ書き換え動作の詳細について説明する。図３はデータ書き換え動作を示すフローチャートである。図４は、データ書き換えに際して、消去処理の対象となる前使用物理ブロックと書き込み処理の対象となる物理ブロック内におけるデータの変化を示す図である。なお、図４の左端に示される番号はデータの書き換えを実施する過程で生起する各段階の動作状態を識別するためのステータス番号である。ここでは、前提条件として、書き換え対象の論理ブロックのアドレスをＬとし、アドレス変換テーブルにおいて当該論理ブロックに当初対応付けられている前使用物理ブロックのアドレスをＰ１とする。なお、以降の説明においては、アドレスｎによりアクセスされる論理ブロックおよび物理ブロックをそれぞれ論理ブロックｎおよび物理ブロックｎとそれぞれ適宜称するものとする。第１に、書き換え対象となる論理ブロックＬを特定する（ステップＳ１（第１のステップ））。第２に、フラッシュメモリの各物理ブロックを検索して、空きブロックを検出し当該空きブロックのアドレスＰ２を特定する（ステップＳ２（第２のステップ））。なお、初期状態では、消去処理の対象となる前使用物理ブロックＰ１の冗長領域において、ステータス情報としては“００００h”（ｈは１６進数を示すものである）、論理ブロックアドレスとしてはＬ、前使用物理ブロックアドレスとしては論理ブロックＬに物理ブロックＰ１が対応付けられる１つ前に論理ブロックＬに対応付けられていた前使用物理ブロックのアドレスＰ０が記憶されている。また、物理ブロックＰ２のデータ領域および冗長領域には全てバイナリデータ“１”が記憶され、すなわち消去状態にある（ステータス０）。
【００１８】
データの書き込み対象となる物理ブロックＰ２が特定されれば、アドレス変換テーブルを参照して、論理ブロックＬに対応付けられている前使用物理ブロックのアドレスＰ１を特定する（ステップＳ３（第３のステップ））。物理ブロックＰ２については、データ領域１にデータを書き込むとともに、冗長領域２内の論理ブロックアドレス記憶領域３には論理ブロックＬに係るアドレスデータを書き込み、前使用物理ブロックアドレス記憶領域４には論理ブロックＬに対して１つ前に対応付けられていた消去対象である前使用物理ブロックＰ１に係るアドレスデータを書き込み、第１エラー訂正符号記憶領域５には論理ブロックＬに係るアドレスデータと物理ブロックＰ１に係るアドレスデータとに対するエラー訂正符号を書き込み、第２エラー訂正符号記憶領域７にはデータ領域１に記憶されたデータに対するエラー訂正符号を書き込む（ステップＳ４（第４のステップ））。なお、ステータス情報記憶領域６については、ステータス情報“ＦＦＦＦh”（第１のステータス情報）を保持させる。なお、図４において、“１−＞０”はデータが書き込み途中であることを示し、図中縦方向に延びる矢印は前段階のステータスからデータの値がそのまま保持されることを示す。さらに、上記の物理ブロックＰ２へのデータ書き込み動作については、物理ブロックＰ２へデータが書き込まれている途中の動作状態をステータス１で示し、物理ブロックＰ２へのデータ書き込みが完了している動作状態をステータス２で示してそれぞれ区別するものとする。
【００１９】
物理ブロックＰ２へのデータ書き込みが完了すれば、前使用物理ブロックＰ２へのデータ書き込みが完了したことを示すように、ステータス情報記憶領域６にステータス情報“ＡＡＡＡh”（第２のステータス情報）を書き込む（ステップＳ５）。この際、冗長領域２内の他の記憶領域のデータについては同一の値を保持させる。また、上記のステータス情報記憶領域６へのステータス情報書き込み動作については、ステータス情報記憶領域６へデータが書き込まれている途中の動作状態をステータス３で示し、ステータス情報記憶領域６へのステータス情報“ＡＡＡＡh”の書き込みが完了している動作状態をステータス４で示してそれぞれ区別するものとする。
【００２０】
ステータス情報“ＡＡＡＡh”の書き込みが完了すれば、前使用物理ブロックＰ１のデータを消去する（ステップＳ６（第５のステップ））。この消去動作については、既に述べたように前使用物理ブロックＰ１内の全メモリセルについてバイナリデータ“１”を書き込むことで実現される。また、図中“０−＞１”はデータを消去途中であることを示す。さらに、上記の前使用物理ブロックＰ１の消去動作については、前使用物理ブロックＰ１のデータが消去される途中の動作状態をステータス５で示し、前使用物理ブロックＰ１のデータ消去が完了している動作状態をステータス６で示してそれぞれ区別するものとする。
【００２１】
前使用物理ブロックＰ１のデータ消去が完了すれば、論理ブロックＬが１つ前に対応付けられていた前使用物理ブロックＰ１に記憶されたデータの消去が完了したことを示すように、物理ブロックＰ２の冗長領域２内のステータス情報記憶領域６にステータス情報“００００h”（第３のステータス情報）を書き込む（ステップＳ７）。この際、冗長領域２内の他の記憶領域のデータについては同一の値を保持させる。また、上記のステータス情報記憶領域６への書き込み動作については、ステータス情報記憶領域６へデータが書き込まれている途中の動作状態をステータス７で示し、ステータス情報記憶領域６へのステータス情報“００００h”の書き込みが完了している動作状態をステータス８で示してそれぞれ区別するものとする。そして、アドレス変換テーブルにおいて、論理ブロックＬに対応付けられる物理ブロックを物理ブロックＰ１から物理ブロックＰ２に変更する（ステップＳ８（第６のステップ））ことで、データ書き換え動作を完了する。
【００２２】
次に、停電や動作不良等に起因するシステムダウンが生じた後に実施されるシステム復帰処理に伴ってフラッシュメモリ内におけるデータ記憶状態を正常化する方法について説明する。図５は、この発明の実施の形態１による記憶状態正常化方法を示すフローチャートである。システムが再起動すると、フラッシュメモリの記憶単位である各物理ブロック毎に検索を実施して、第１に冗長領域２内のステータス情報記憶領域６からステータス情報を読み出す（ステップＳ１１）。次に、ステータス情報が“ＦＦＦＦh”に等しいか否かを判定する（ステップＳ１２）。ステータス情報が“ＦＦＦＦh”に等しい場合には、当該物理ブロックに記憶されているデータが消去状態にあるべきことを示すものであるから、当該物理ブロックのデータを消去する処理すなわち当該物理ブロック内の全メモリセルについてバイナリデータ“１”を書き込む処理を実施する（ステップＳ１３）。これにより、図４に示されるステータス１またはステータス２において停電等によるシステムダウンが発生した場合でも、当該物理ブロックへ書き込み途中であるデータあるいは書き込まれたデータを消去して当該物理ブロックをステータス情報に応じた正常な記憶状態に復帰させることができる。なお、当該物理ブロックへの書き込みが予定されていたデータの再書き込みについては、システムダウンの生じた電子機器のホストシステムあるいはネットワークサーバへアクセスする等の方法を用いて、正しいデータを再書き込みすることで実現することが可能である。
【００２３】
ステップＳ１２においてステータス情報が“ＦＦＦＦh”に等しくない場合には、ステータス情報が“ＡＡＡＡh”に等しいか否かを判定する（ステップＳ１４）。ステータス情報が“ＡＡＡＡh”に等しい場合には、当該物理ブロックへのデータの書き込みは完了しているが当該物理ブロックに係る前使用物理ブロックのデータ消去が完了していない可能性があるために、前使用物理ブロックのデータを消去する（ステップＳ１５）とともに、当該物理ブロックのステータス情報記憶領域６に“００００h”を書き込む（ステップＳ１６）。これにより、図４に示されるステータス４、ステータス５またはステータス６において停電等によるシステムダウンが発生した場合でも、検索対象の物理ブロックのステータス情報を変更するとともに、データ未消去または消去途中の前使用物理ブロックのデータを消去することで、検索対象となっている物理ブロックおよび当該物理ブロックに係る前使用物理ブロックを正常な記憶状態に復帰させることができる。
【００２４】
ステップＳ１４においてステータス情報が“ＡＡＡＡh”に等しくない場合には、ステータス情報が“００００h”に等しいか否かを判定する（ステップＳ１７）。ステップＳ１６を終了した後、並びにステップＳ１７でステータス情報が“００００h”に等しい場合には、検索対象となっている物理ブロックの論理ブロックアドレス記憶領域３を参照して対応する論理ブロックを特定し、アドレス変換テーブルにおいて当該論理ブロックに対応する物理ブロックとして検索対象となっている物理ブロックを登録する（ステップＳ１８）。これにより、停電等によるシステムダウンに起因して消失したアドレス変換テーブルを再構築する。
【００２５】
ステップＳ１７においてステータス情報が“００００h”に等しくない場合には、検索対象となっている物理ブロックが異常ブロックであると判定して、当該物理ブロックのアドレスを異常ブロックテーブルに登録する（ステップＳ１９）。ステップＳ１３を終了した後、ステップＳ１８を終了した後、並びにステップＳ１９を終了した後には、全ての物理ブロックについて検索が完了したか否かを判定する（ステップＳ２０）。全ての物理ブロックについて検索が完了していない場合には、ステップＳ１１に戻って同様の処理を次の物理ブロックに対して実施する。また、全ての物理ブロックについて検索が完了した場合には、図５に示される処理を終了して後述する異常ブロックに係る処理を実施する。
【００２６】
全物理ブロックについての上記の検索処理において、物理ブロックが異常ブロックであると判定される要因については、ステータス３において書き込み対象の物理ブロックのステータス情報を“ＦＦＦＦh”から“ＡＡＡＡh”に変更している際に停電等のシステムダウンが発生した場合、ステータス５において消去対象の物理ブロックのステータス情報を“００００h”から“ＦＦＦＦh”に変更している際に停電等のシステムダウンが発生した場合、並びにステータス７において書き込み対象の物理ブロックのステータス情報を“ＡＡＡＡh”から“００００h”に変更している際に停電等のシステムダウンが発生した場合が考えられる。これらの要因のなかにおいて、ステータス５において消去対象の物理ブロックのステータス情報を“００００h”から“ＦＦＦＦh”に変更している際に停電等のシステムダウンが発生した場合については、対応する書き込み対象の物理ブロックについて図５に示されるステップＳ１５の処理を実施することで、異常ブロックであると判定された物理ブロックを消去状態として、当該物理ブロックのステータス情報を正常値である“ＦＦＦＦh”に訂正することができる。したがって、このような消去処理の完了した物理ブロックを異常ブロックテーブルから削除することが可能となる。
【００２７】
図６は、異常ブロックのなかにおける消去済み物理ブロックの検索処理を示すフローチャートである。まず、異常ブロックとして登録されている各物理ブロック毎に検索を実施するように、異常ブロックテーブルから登録されている物理ブロックのアドレスを取り出して検索対象の物理ブロックを特定する（ステップＳ２１）。次に、ステータス情報が“ＦＦＦＦh”に等しいか否かを判定する（ステップＳ２２）。ステータス情報が“ＦＦＦＦh”に等しい場合には、消去処理の完了している前使用物理ブロックであることを示すので、検索対象となっている物理ブロックに係るアドレスを異常ブロックテーブルから削除する（ステップＳ２３）。ステップＳ２３を終了した後、並びにステップＳ２２でステータス情報が“ＦＦＦＦh”に等しくない場合には、異常ブロックとして登録された全ての物理ブロックについて検索が完了したか否かを判定する（ステップＳ２４）。全ての物理ブロックについて検索が完了していない場合には、ステップＳ２１に戻って同様の処理を異常ブロックテーブルに基づいて特定される次の物理ブロックに対して実施する。全ての物理ブロックについて検索が完了した場合には、図６に示される処理を終了して後述する異常ブロックに係る次の処理を実施する。
【００２８】
図７は、異常ブロックに係る正常化処理を示すフローチャートである。まず、異常ブロックとして登録されている各物理ブロック毎に検索を実施するように、図６に示す処理により修正された異常ブロックテーブルから登録されている物理ブロックのアドレスを取り出して検索対象となる物理ブロックを特定する（ステップＳ３１）。次に、検索対象となっている物理ブロックの冗長領域２からステータス情報を取り出して、当該ステータス情報と“ＡＡＡＡh”との論理積をとる（ステップＳ３２）。既に述べたように、ＮＡＮＤ型フラッシュメモリのデータ書き込みはバイナリデータの“１”を“０”に変えることで実施される。したがって、ステータス３において書き込み対象の物理ブロックのステータス情報を“ＦＦＦＦh”から“ＡＡＡＡh”に変更している際に停電等によるシステムダウンが発生したことに起因してステータス情報が本来とるべき値とは異なる値を有する場合には、当該ステータス情報と“ＡＡＡＡh”との論理積は“ＡＡＡＡh”に等しくなる。また、ステータス７において書き込み対象の物理ブロックのステータス情報を“ＡＡＡＡh”から“００００h”に変更している際に停電等によるシステムダウンが発生したことに起因してステータス情報が本来とるべき値とは異なる値を有する場合には、当該ステータス情報と“ＡＡＡＡh”との論理積は“ＡＡＡＡh”に等しくなることはない。
【００２９】
ステータス情報に係る上記の特性に鑑みて、次のステップでは、ステータス情報と“ＡＡＡＡh”との論理積が“ＡＡＡＡh”に等しいか否かを判定する（ステップＳ３３）。論理積が“ＡＡＡＡh”に等しい場合には、検索対象となっている物理ブロックへのデータの書き込みは完了しているが当該物理ブロックに係る前使用物理ブロックのデータ消去は完了していないために、前使用物理ブロックアドレス記憶領域４に記憶されているアドレスにより特定される前使用物理ブロックのデータを消去する（ステップＳ３４）。ステップＳ３４を終了した後、並びにステップＳ３３において論理積が“ＡＡＡＡh”に等しくないと判定された場合には、検索対象となっている物理ブロックのステータス情報記憶領域６に“００００h”を書き込む（ステップＳ３５）。ステップＳ３４およびステップＳ３５の処理を実施することで、図４に示されるステータス３において停電等によるシステムダウンが発生した場合でも、前使用物理ブロックのデータ消去および新たなステータス情報の書き込みを実施して、検索対象となっている物理ブロックおよび前使用物理ブロックをステータス情報に応じた正常な記憶状態に復帰させることができる。また、ステップＳ３５の処理を実施することで、図４に示されるステータス７において停電等によるシステムダウンが発生した場合でも、新たなステータス情報の書き込みを実施して、検索対象となっている物理ブロックをステータス情報に応じた正常な記憶状態に復帰させることができる。
【００３０】
次に、検索対象となっている物理ブロックの論理ブロックアドレス記憶領域３を参照して対応する論理ブロックを特定し、アドレス変換テーブルにおいて当該論理ブロックに対応する物理ブロックとして検索対象となっている物理ブロックを登録する（ステップＳ３６）。ステップＳ３６の処理を異常ブロックとして登録された全ての物理ブロックに対して実施することで、停電等によるシステムダウンに起因して消失したアドレス変換テーブルの復元処理を完了することができる。
【００３１】
次に、異常ブロックとして登録された全ての物理ブロックについて検索が完了したか否かを判定する（ステップＳ３７）。全ての物理ブロックについて検索が完了していない場合には、ステップＳ３１に戻って同様の処理を異常ブロックテーブルに基づいて特定される次の物理ブロックに対して実施する。全ての物理ブロックについて検索が完了した場合には、処理を終了する。
【００３２】
以上のように、この実施の形態１によれば、データの書き換えの対象となる論理ブロックに対して消去状態にあった新たな物理ブロックを割り当てて当該物理ブロックにデータを書き込むとともに、それまで論理ブロックに対応付けられていた前使用物理ブロックのデータを消去することでデータの書き換えを実施するフラッシュメモリにおいて、冗長領域２が論理ブロックアドレス記憶領域３と、前使用物理ブロックアドレス記憶領域４と、ステータス情報記憶領域６とを有して構成されているので、停電等によるシステムダウンが生じても、ステータス情報記憶領域６を参照することでシステムダウン時に書き込みの対象となっていた物理ブロックについてその動作状態を検知することができるとともに、前使用物理ブロックアドレス記憶領域４を参照することで上記物理ブロックに係る前使用物理ブロックを特定することができるから、動作状態に応じてデータ破壊の生じた可能性のある物理ブロックおよび当該物理ブロックに係る前使用物理ブロックに対して適切な復元処理を実施することが可能となり、フラッシュメモリを正常な記憶状態に復帰させることができるという効果を奏する。
【００３３】
また、ステータス情報としては、物理ブロックが消去状態にあることを示す“ＦＦＦＦh”と、書き込み対象の物理ブロックへのデータの書き込みが完了してはいるが対応する前使用物理ブロックのデータが未消去である状態を示す“ＡＡＡＡh”と、書き込み対象の物理ブロックへのデータの書き込みが完了するとともに対応する前使用物理ブロックのデータが消去済みである状態を示す“００００h”とを備えるように構成したので、物理ブロックにデータ破壊が発生したとしても、ステータス情報が“ＦＦＦＦh”であれば書き込み対象の物理ブロックを消去すればよく、またステータス情報が“ＡＡＡＡh”であれば前使用物理ブロックを消去すればよく、データ書き換え動作に際して生起する各ステータスについてシステムダウンが生じた場合に必要とされる復元処理の内容が変わる時点でステータス情報が変更されるようになされているから、ステータス情報を参照することでフラッシュメモリを正常な記憶状態に容易に復帰させることができるという効果を奏する。
【００３４】
また、データの書き換えが進行するのに応じて、書き込み対象の物理ブロックに係るステータス情報が“ＦＦＦＦh”、“ＡＡＡＡh”、“００００h”と変化するので、ステータス情報を変更する際に停電等によるシステムダウンが発生してステータス情報が本来とるべき値を有しないという異常が生じたとしても、ステータス情報の変更がステータス情報を構成するビット列の所定のビットに係るバイナリデータを“１”から“０”へ変更することで実施されることに鑑みれば、異常の生じたステータス情報と“ＡＡＡＡh”との論理積をとって当該論理積を評価することで、ステータス情報を“ＦＦＦＦh”から“ＡＡＡＡh”へ変更する際にシステムダウンが発生したのか、あるいはステータス情報を“ＡＡＡＡh”から“００００h”へ変更する際にシステムダウンが発生したのかを判定することが可能となり、フラッシュメモリの動作状態を簡単な判定方式により詳細に検知することができて、フラッシュメモリを迅速かつ確実に正常な記憶状態に復帰させることができるという効果を奏する。
【００３５】
なお、上記実施の形態１により説明されるフラッシュメモリ並びにフラッシュメモリのデータ書き換え方法は、本願発明を限定するものではなく、例示することを意図して開示されているものである。本願発明の技術的範囲は特許請求の範囲の記載により定められるものであり、特許請求の範囲に記載された技術的範囲内において種々の設計的変更が可能である。例えばステータス情報は“ＦＦＦＦh”、“ＡＡＡＡh”、“００００h”に限定されるものではなく、消去状態にあることを示す第１のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで書き込み対象の物理ブロックへのデータの書き込みが完了してはいるが対応する前使用物理ブロックのデータが未消去である状態を示す第２のステータス情報が構成され、第２のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで書き込み対象の物理ブロックへのデータの書き込みが完了するとともに対応する前使用物理ブロックのデータが消去済みである状態を示す第３のステータス情報が構成されるようであれば、第１、第２、第３のステータス情報として任意のビット列を設定することが可能である。
【００３６】
【発明の効果】
以上のように、この発明によれば、データが記憶されるデータ領域と種々の管理情報等が記憶される冗長領域とを備える物理ブロックを記憶単位として構成され、データ書き換え対象となる論理ブロックに対して消去状態にあった新たな物理ブロックを割り当てて当該物理ブロックにデータを書き込むとともに、それまで論理ブロックに対応付けられていた前使用物理ブロックのデータを消去することでデータの書き換えを実施する不揮発性メモリにおいて、それぞれの冗長領域が、当該冗長領域の含まれる物理ブロックに対応する論理ブロックを特定する情報を記憶する論理ブロック情報記憶領域と、対応する前使用物理ブロックを特定する情報を記憶する前使用物理ブロック情報記憶領域と、当該冗長領域の含まれる物理ブロックをデータの書き込み対象としたデータ書き換え動作を実施する際に生起する各段階の動作状態を識別するステータス情報を記憶するステータス情報記憶領域とを有して構成されるようにしたので、停電等によるシステムダウンが生じても、ステータス情報記憶領域を参照することでシステムダウン時に書き込みの対象となっていた物理ブロックについてその動作状態を検知することができるとともに、前使用物理ブロック情報記憶領域を参照することで上記物理ブロックに係る前使用物理ブロックを特定することができるから、動作状態に応じてデータ破壊の生じた可能性のある物理ブロックおよび当該物理ブロックに係る前使用物理ブロックに対して適切な復元処理を実施することが可能となり、不揮発性メモリを正常な記憶状態に復帰させることができるという効果を奏する。
【００３７】
この発明によれば、ステータス情報記憶領域には、当該ステータス情報記憶領域の含まれる物理ブロックが消去状態にあることを示す第１のステータス情報と、当該ステータス情報記憶領域の含まれる物理ブロックへのデータの書き込みが完了してはいるが対応する前使用物理ブロックのデータが未消去である状態を示す第２のステータス情報と、当該ステータス情報記憶領域の含まれる物理ブロックへのデータの書き込みが完了するとともに対応する前使用物理ブロックのデータが消去済みである状態を示す第３のステータス情報とが少なくとも記憶されるように構成されているので、データ書き換え動作に際して生起する各段階の動作状態についてシステムダウンが生じた場合に必要とされる復元処理の内容が変わる時点でステータス情報が変更されるようになされているから、ステータス情報を参照することで不揮発性メモリを正常な記憶状態に容易に復帰させることができるという効果を奏する。
【００３８】
この発明によれば、第１のステータス情報と第２のステータス情報と第３のステータス情報とが同じビット数で表現され、第１のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第２のステータス情報が構成され、第２のステータス情報を表現するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで第３のステータス情報が構成されるようにしたので、ステータス情報を変更する際に停電等によるシステムダウンが発生してステータス情報が本来とるべき値を有しないという異常が生じたとしても、ステータス情報の変更がステータス情報を構成するビット列における１または複数のビットに係るバイナリデータを“１”から“０”へ変更することで実施されることに鑑みれば、異常の生じたステータス情報と第２のステータス情報を表現するビット列との論理積をとって当該論理積を評価することで、ステータス情報を第１のステータス情報から第２のステータス情報へ変更する際にシステムダウンが発生したのか、あるいはステータス情報を第２のステータス情報から第３のステータス情報へ変更する際にシステムダウンが発生したのかを判定することが可能となり、不揮発性メモリの動作状態を簡単な判定方式により詳細に検知することができて、不揮発性メモリを迅速かつ確実に正常な記憶状態に復帰させることができるという効果を奏する。
【図面の簡単な説明】
【図１】  不揮発性メモリの記憶領域に係る論理ブロックと物理ブロックとの関係を示す図である。
【図２】  物理ブロック内に記憶される管理情報に係るデータ構造を示す図である。
【図３】  不揮発性メモリにおけるデータの書き換え動作を示すフローチャートである。
【図４】  データの書き換えを実施する際における物理ブロック内のデータ変化を示す図である。
【図５】  この発明の実施の形態１による記憶状態正常化方法を示すフローチャートである。
【図６】  異常ブロックのなかにおける消去済み物理ブロックの検索処理を示すフローチャートである。
【図７】  異常ブロックに係る正常化処理を示すフローチャートである。
【図８】  フラッシュメモリを備えた従来の電子機器の概略構成を示すブロック図である。
【符号の説明】
１  データ領域、２  冗長領域、３  論理ブロックアドレス記憶領域（論理ブロック情報記憶領域）、４  前使用物理ブロックアドレス記憶領域（前使用物理ブロック情報記憶領域）、５  第１エラー訂正符号記憶領域、６  ステータス情報記憶領域、７  第２エラー訂正符号記憶領域
【図１】
0003675375.tif 000002
【図２】
0003675375.tif 000003
【図３】
0003675375.tif 000004
【図４】
0003675375.tif 000005
【図５】
0003675375.tif 000006
【図６】
0003675375.tif 000007
【図７】
0003675375.tif 000008
【図８】
0003675375.tif 000009