(57)【要約】データの書き込み中又は消去中に電源遮断等の異常が発生し処理が中断した場合であっても、次回起動後のデータ書き込みを正常に行える不揮発性記憶装置の制御方法を提供する。本発明の不揮発性記憶装置の制御方法は、複数の物理ブロックで構成される不揮発性メモリにデータを書き込むときに、物理ブロックの先頭ページの冗長領域にあり、その先頭ページにデータが書き込まれているか否かを示す第１のフラグに、データが書き込まれていることを示す固定値を書き込む第１のフラグ書き込みステップと、その物理ブロックにデータを書き込むデータ書き込みステップと、を有する。
2004031966.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、
前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の、先頭ページの前記冗長領域に設けられその先頭ページにデータが書き込まれているか否かを示す第１のフラグに、データが書き込まれていることを示す固定値を書き込む第１のフラグ書き込みステップと、
その物理ブロックにデータを書き込むデータ書き込みステップと、
を有することを特徴とする不揮発性記憶装置の制御方法。
【請求項２】
不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの前記第１のフラグを読み出して、前記第１のフラグが書き込み済みか否かに基づいて、論理アドレス／物理アドレス変換テーブルと消去済みテーブルとを生成する初期化ステップを更に有することを特徴とする請求項１に記載の不揮発性記憶装置の制御方法。
【請求項３】
不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、
前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の先頭ページの前記冗長領域に設けられその先頭ページにデータが書き込まれているか否かを示す第１のフラグに、データが書き込まれていることを示す固定値を書き込む第１のフラグ書き込みステップと、
その物理ブロックにデータを書き込むデータ書き込みステップと、
前記物理ブロックの所定のページの冗長領域に設けられその物理ブロックにデータが書き込まれているか否かを示す第２のフラグに、その物理ブロックにデータが書き込まれていることを示す固定値を書き込む第２のフラグ書き込みステップと、
を有することを特徴とする不揮発性記憶装置の制御方法。
【請求項４】
前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの前記第１のフラグ及び前記第２のフラグを読み出して、前記第１のフラグ及び前記第２のフラグが書き込み済みか否かに基づいて、論理アドレス／物理アドレス変換テーブルと消去済みテーブルとを生成する初期化ステップを更に有することを特徴とする請求項３に記載の不揮発性記憶装置の制御方法。
【請求項５】
物理ブロックにデータを書き込む時、最後のページのデータのＥＣＣ符号及び／又はＣＲＣ符号を、又はそれらと更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データとをその最後のページの冗長領域に書き込む書き込みステップと、
前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの最後のページからデータとそのデータのＥＣＣ符号及び／又はＣＲＣ符号を読み出して、又はそれらと更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データとを読み出して、誤り検出を行い、誤りの有無に基づいて、論理アドレス／物理アドレス変換テーブルを生成する初期化ステップを更に有することを特徴とする請求項１に記載の不揮発性記憶装置の制御方法。
【請求項６】
前記物理ブロックの最後のページの、単独で別個に書き込み可能なデータを書き込むための領域を除く領域の全てのアドレスにデータを書き込み、その領域をデータと前記データのＥＣＣ符号及び／又はＣＲＣ符号とで埋め尽くし、又はそれらに更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データを加えて埋め尽くす最後のページ書き込みステップを更に有することを特徴とする請求項１に記載の不揮発性記憶装置の制御方法。
【請求項７】
前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの最後のページの前記データと、前記データのＥＣＣ符号及び／又はＣＲＣ符号とを読み出して、又はそれらと更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データとを読み出して、誤り検出を行い、誤りの有無に基づいて、論理アドレス／物理アドレス変換テーブルを生成する初期化ステップを更に有することを特徴とする請求項６に記載の不揮発性記憶装置の制御方法。
【請求項８】
不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、
管理領域とデータ記録領域とを有する前記不揮発性メモリの前記管理領域に設けられ、無効データを有する物理ブロック（以下、「旧物理ブロック」と呼ぶ。）の物理アドレスと、前記旧物理ブロックの無効データが消去済みか否かを示す第３のフラグとを有する無効テーブルに、旧物理ブロックの物理アドレスを登録する物理アドレス登録ステップと、
前記旧物理ブロックの無効データを消去する無効データ消去ステップと、
前記旧物理ブロックの物理アドレスに対応する前記第３のフラグに前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、
を有することを特徴とする不揮発性記憶装置の制御方法。
【請求項９】
前記不揮発性記憶装置の起動時に、前記管理領域の前記無効テーブルを読み出して、前記第３のフラグが書き込み済みでない前記旧物理ブロックの無効データを消去する無効データ消去ステップと、
前記旧物理ブロックの物理アドレスに対応する前記第３のフラグに、前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、
を更に有することを特徴とする請求項８に記載の不揮発性記憶装置の制御方法。
【請求項１０】
不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、
前記物理ブロックにデータを書き込む時に、前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の所定のページの前記冗長領域に、無効データを有する旧物理ブロックの物理アドレスを登録する物理アドレス登録ステップと、
前記旧物理ブロックの無効データを消去する無効データ消去ステップと、
前記旧物理ブロックの物理アドレスが登録された前記冗長領域に設けられ、その旧物理ブロックの無効データが消去済みか否かを示す第３のフラグに、前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、
を有することを特徴とする不揮発性記憶装置の制御方法。
【請求項１１】
前記不揮発性記憶装置の起動時に、前記物理ブロックの冗長領域の前記第３のフラグを読み出して、前記第３のフラグが書き込み済みでない前記旧物理ブロックの無効データを消去する無効データ消去ステップと、
前記第３のフラグに、前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、
を更に有することを特徴とする請求項１０に記載の不揮発性記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】  本発明は、不揮発性記憶装置の制御方法に関する。
【背景技術】  近年、音楽データや映像データを取り扱う携帯機器の記憶装置として、データの書き換えが可能で、携帯性が高く、電池等によるバックアップが不要であるフラッシュメモリ等の不揮発性メモリを備えた不揮発性記憶装置（例えば、メモリカード）が使われるようになってきた。
図１〜４、図２４及び図２５を用いて、従来の不揮発性記憶装置の制御方法を説明する。図１は不揮発性記憶装置の構成を示すブロック図である。図１において、１０１は不揮発性記憶装置、１０２はホストである。不揮発性記憶装置１０１は、不揮発性メモリ１０３、コントローラ１０４、消去済みテーブル１０５、論理アドレス／物理アドレス変換テーブル１０６を有する。不揮発性メモリ１０３はフラッシュメモリである。ホスト１０２は不揮発性記憶装置１０１にデータの書き込み及び読み出し等を指令し、書き込むデータを伝送し、不揮発性記憶装置１０１から送られた読み出しデータを受け取る。不揮発性記憶装置１０１のコントローラ１０４は、ホスト１０２からの指令に基づいて、不揮発性メモリ１０３にデータを書き込むこと又は不揮発性メモリ１０３のデータを読み出すこと等の制御をする。
不揮発性メモリ１０３は複数の物理ブロックで構成される。図２４を用いて、物理ブロックの構成を説明する。図２４は従来例の不揮発性メモリ１０３の物理ブロックの構成を示す図である。物理ブロック５０１は、３２ページで構成される。１ページの容量は５２８バイトであり、５１２バイトのデータ領域５０２と１６バイトの冗長領域５０３とに区分される。データ領域５０２はホスト１０２から伝送されるデータを書き込む領域である。冗長領域５０３はデータ領域５０２のＥＣＣ符号及びその物理ブロック５０１に対応する論理アドレス等の管理情報を書き込む領域である。１ページはデータの書き込み単位、読み出し単位である。データの書き込み時には、物理ブロックのページ０からページ３１まで順にページ単位でデータを書き込む。消去済みのメモリに１を書き込む動作は、省略することができる。物理ブロック５０１はデータの消去単位であり、消去時には物理ブロックに含まれる３２ページ全てを一度に消去する。不揮発性メモリ１０３のデータは、消去済みの状態において全てのビットが１である。
不揮発性記憶装置１０１の電源投入後、コントローラ１０４は消去済みテーブル１０５と論理アドレス／物理アドレス変換テーブル１０６とをＲＡＭに生成する初期化処理を行う。
図２は消去済みテーブル１０５の構成を示す図である。消去済みテーブル１０５は、物理ブロックが消去済み（未書き込み）か否かを示すテーブルであって、各物理ブロックに１ビットのデータが対応付けられている。図２において、左欄が物理アドレス（不揮発性メモリ１０３の物理ブロックのアドレスを「物理アドレス」と呼ぶ。）であり、右欄が、１が「消去済み」を示し、０が「消去済みでないこと」を示すデータである。左欄の物理アドレスは説明のために記載したものであって、通常ＲＡＭに書き込まれない。通常、物理アドレスを所定の変換式でＲＡＭのアドレスに変換し、そのＲＡＭアドレスに消去済み（未書き込み）か否かを示すビットを書き込む。
例えば初期化処理時、物理アドレス０の物理ブロックの先頭ページの冗長領域５０３に値０のビットを含むデータが書き込まれている場合（先頭ページの冗長領域５０３の全ビットが１である場合以外の場合）、書き込み済みと判断して、物理アドレス０のデータに０を書き込む。物理アドレス１の物理ブロックの先頭ページの冗長領域５０３が全て１のデータである場合、消去済みと判断して、物理アドレス１のデータに１を書き込む。このようにして、最終物理アドレスまでの消去済みテーブル１０５を完成させる。
図３は論理アドレス／物理アドレス変換テーブル１０６の構成を示す図である。不揮発性メモリ１０３を用いた不揮発性記憶装置１０１において、ホスト１０２から指定されるアドレス（「論理アドレス」と呼ぶ。）と、不揮発性メモリ１０３内に配置されるアドレス（「物理アドレス」と呼ぶ。）は一般的に一致しない。一致させると、不揮発性メモリ内で不良が発生した物理アドレスを使用できないこと又はデータの書き換えに時間がかかること等によりアプリケーションに負担がかかるからである。又、特定アドレスに書き込みが頻発するシステムでは、その物理アドレスが短期間で書き換え保証回数（一般に不揮発性メモリの書き換え保証回数は制限される。）を上回り短寿命になってしまう、という不都合が生じるからである。不揮発性記憶装置１０１のコントローラ１０４は、ホスト１０２が指定した論理アドレスを物理アドレスに変換し、物理ブロックのデータ記録時に、冗長領域５０３にその物理アドレスに対応する論理アドレスを書き込む。一般的に先頭ページの冗長領域５０３に論理アドレスを書き込む。
不揮発性記憶装置１０１の電源投入後、コントローラ１０４は物理ブロックの冗長領域５０３に書き込まれている論理アドレスを読み出して、ＲＡＭ上に論理アドレス／物理アドレス変換テーブル１０６を生成する。例えば物理アドレス０の物理ブロックの先頭ページにデータが有り、論理アドレスとして２が書き込まれている場合、論理アドレス／物理アドレス変換テーブル１０６の論理アドレス２に対応する物理アドレスに０を書き込む。物理アドレス２の物理ブロックの先頭ページにデータが有り、論理アドレスとして９９９が書き込まれている場合、論理アドレス／物理アドレス変換テーブル１０６の論理アドレス９９９に対応する物理アドレスに２を書き込む。対応する論理アドレスのデータが不揮発性メモリ１０３の中にない場合、例えば論理アドレスとして１が書き込まれた物理ブロックがない場合、論理アドレス／物理アドレス変換テーブル１０６の論理アドレス１に対応する物理アドレスに、データが存在しないことを示す値である１０００を書き込む。
図４は従来の不揮発性記憶装置１０１の初期化処理のフローチャートである。ブロックカウンタに０（初期値）を設定する（ステップ４０１）。コントローラ１０４は、不揮発性メモリ１０３の読み出し対象である物理ブロックの先頭ページの冗長領域５０３を読み出す（ステップ４０２）。冗長領域５０３が消去済みか否か判断する（ステップ４０３）。冗長領域５０３が全て１のデータである場合は消去済み、値０のビットを含むデータが書き込まれている場合は書き込み済みと判断する。冗長領域５０３が消去済みであれば、消去済みテーブル１０５のその物理ブロック欄に１を書き込み、物理ブロックが消去済みであると登録する（ステップ４０４）。冗長領域５０３が消去済みでなければ、消去済みテーブル１０５のその物理ブロック欄に０（消去済みでない）を書き込む（ステップ４０５）。冗長領域５０３が消去済みでなければ、更に冗長領域５０３に書き込まれている論理アドレスを読み出して、論理アドレス／物理アドレス変換テーブル１０６のその論理アドレスに対応する位置に物理アドレスを登録する（ステップ４０６）。最終物理ブロックであるか否か判断する（ステップ４０７）。最終物理ブロックでなければ、ブロックカウンタに１を加算し（ステップ４０８）、ステップ４０２に戻り処理を繰り返す。最終物理ブロックであれば、初期化を終了する。
不揮発性メモリ１０３のデータ書き換え方法を説明する。ホスト１０２が不揮発性記憶装置１０１にデータの書き込みを指令すると、コントローラ１０４は不揮発性メモリ１０３にホスト１０２から伝送されたデータを書き込む。図２５は、従来例の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。コントローラ１０４は、消去済みテーブル１０５から消去済み物理ブロックを検出し、書き込み先の物理ブロックとして確保する（ステップ６０１）。確保した物理ブロックにデータをページ単位で書き込む（ステップ６０３）。無効データ（新しいデータを書き込むことによって、必要でなくなったデータ）を含む物理ブロック（旧物理ブロック）を消去する（ステップ６０４）。旧物理ブロックをその場で直ちに消去しても良く、一旦、そのデータが無効であるか否かを示すフラグを無効を示す値にセットしておき、別タイミングで消去しても良い。消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ６０５）。具体的には、消去済みテーブル１０５に、書き込みを行った物理ブロックに対応するビットに０（書き込み済み）を書き込む。旧物理ブロック（無効データを含む物理ブロック）を消去後、旧物理ブロックに対応するビットに１（消去済み）を書き込む。論理アドレス／物理アドレス変換テーブル１０６の論理アドレスに対応する物理アドレスを、旧物理ブロックから書き込みを行った新物理ブロックに更新する。
ステップ６０３でデータの書き込み中に電源遮断等の異常が発生した場合、書き込み途中の物理ブロックのデータが不正なデータになるおそれがある。
特開２００１−５１８８３号公報に、電源遮断の異常等により書き込み途中で処理を終了した場合、次回起動時に自動的に書き込み前の状態に復元する自己修復機能を備えた不揮発性メモリを有する従来例１の不揮発性記憶装置が記載されている。従来例１の不揮発性記憶装置は、メモリ外に、書き込み中フラグ、アドレスバッファ及びデータバッファを有する。データ書き込み中には、書き込み中フラグを有効状態にし、それ以外の時には書き込み中フラグを無効状態にする。起動時に書き込み中フラグが有効状態であれば、データバッファの内容をアドレスバッファが示すメモリ領域に書き込む。又、これにより、起動時に、異常な書き込み前の状態に復元できる。
従来例の不揮発性記憶装置において、ステップ６０３で物理ブロックの先頭ページにデータを書き込んでいる時に電源遮断等の異常が発生した場合、データ領域５０２のみにデータが一部書き込まれており、冗長領域５０３は消去済み（未書き込み）という状態があり得る。この状態で初期化処理を行うと、先頭ページの冗長領域５０３のデータをもとに消去済みテーブル１０５を生成するので、この物理ブロックを消去済みと誤判定することになる。
ステップ６０４で旧物理ブロックの消去中に電源遮断等の異常が発生した場合、旧物理ブロックの先頭ページは消去済みで、他のページは消去されていない状態があり得る。この状態で初期化処理を行うと、この旧物理ブロックを消去済みと誤判定することになる。
このように消去済みでない物理ブロックを消去済みと誤判定すると、その後データの書き込みが発生した場合に、消去済みと誤判定された物理ブロックにデータを書き込むことになる。不揮発性メモリは書き込み済みの物理ブロックにデータを上書きすることができない（ページ単位で、０のビットに１を書き込むことはできない。）ため、正しく書き込むことができず不正データとなるという問題があった。
また、書き込み中断又は消去中断により、物理ブロックの先頭ページの冗長領域は書き込み済みで、他のページは書き込み済みでないという状態があり得る。この状態で初期化処理を行うと、先頭ページの冗長領域に書き込まれた論理アドレスを読み出して、論理アドレス／物理アドレス変換テーブル１０６に登録してしまう。書き込み途中又は消去途中の物理ブロックを書き込み済みの有効な物理ブロックと誤判定してしまう。物理ブロックの先頭ページの冗長領域５０３には不揮発性メモリ１０３の管理データが書き込まれていることが多く、初期化処理において誤ったテーブルを生成すると、不揮発性メモリ１０３に対してアクセスできなくなるおそれがある。
従来例１の不揮発性記憶装置は、データを書き込む前に必ず、多くのバッファ（書き込み中フラグ、アドレスバッファ（論理アドレスバッファ、旧物理アドレスバッファ、新物理アドレスバッファ）及びデータバッファ）にデータを書き込む必要が有る故に、不揮発性記憶装置の処理が遅くなる恐れがある。
本発明は、データの書き込み中又は消去中に電源遮断等の異常が発生し処理が中断した場合であっても、次回起動後のデータ書き込みを正常に行える不揮発性記憶装置の制御方法を提供することを目的とする。これにより、正確に不揮発性メモリにアクセスでき、高いデータ信頼性を有する不揮発性記憶装置の制御方法を提供できる。
【発明の開示】
上記課題を解決するため、本発明は下記の構成を有する。
本発明の１つの観点による不揮発性記憶装置の制御方法は、不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の、先頭ページの前記冗長領域に設けられその先頭ページにデータが書き込まれているか否かを示す第１のフラグに、データが書き込まれていることを示す固定値を書き込む第１のフラグ書き込みステップと、その物理ブロックにデータを書き込むデータ書き込みステップと、を有する。
従来の不揮発性記憶装置の制御方法においては、例えば３２ページからなる物理ブロックにデータを書き込む場合、１ページを単位とする３２回の書き込みステップでデータを書き込んだ。しかし、書き込みの途中で電源が遮断された場合、データの書き込みが完了していない不正な物理ブロックが存在する。このような突然の電源遮断も考慮して、１つの物理ブロックが消去済みであるか否かを確実に知ろうとすれば、３２ページの全ビットを調べ、全ビットが１であるか又は０のビットが含まれるかを調べなければならなかった。
第１ページ目に第１のフラグを割り付け、第１ページ目のデータを第１のフラグと一緒に書き込むことも考えられる。しかし、第１ページ目の書き込み途中に電源が遮断された場合、第１ページ目のデータ領域にはデータが正常に書き込まれ、第１のフラグは書き込まれない状態（０を記録しようとしたが、そのビットの値は１のままである状態）が発生し得る。従って、このような方法でも１つの物理ブロックが真に消去済みであるか否かを判断することは困難である。
本発明においては、最初に、固定値（実施の形態では００）の第１のフラグのみを単独で書き込み、その後通常のデータを３２ページに書き込む。従って、一旦書き込みを開始したならば、書き込み途中に電源が遮断したとしても、第１のフラグは確実に所定の固定値（例えば００）である。もし第１のフラグが固定値でなければ（例えば１１）、その物理ブロックは確実に消去済みである。
本発明は、書き込み途中で電源が遮断されても、物理ブロックが消去済みか否かを確実に検知できる不揮発性記憶装置の制御方法を実現する。
本発明の他の観点による上記の不揮発性記憶装置の制御方法は、不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの前記第１のフラグを読み出して、前記第１のフラグが書き込み済みか否かに基づいて、論理アドレス／物理アドレス変換テーブルと消去済みテーブルとを生成する初期化ステップを更に有する。
本発明によれば、データ書き込みの途中で電源が遮断された後の初期化処理においても、短時間で正確な消去済みテーブルを生成できる。これにより、消去済みでない物理ブロックに誤ってデータを書くことを防ぐことができる。
本発明の別の観点による不揮発性記憶装置の制御方法は、不揮発性メモリの論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルを用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、前記物理ブロックにデータを書き込むデータ書き込みステップと、前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の所定のページの冗長領域に設けられその物理ブロックにデータが書き込まれているか否かを示す第２のフラグに、その物理ブロックにデータが書き込まれていることを示す固定値を書き込む第２のフラグ書き込みステップと、を有する。
従来の不揮発性記憶装置の制御方法においては、例えば３２ページからなる物理ブロックにデータを書き込む場合、１ページを単位とする３２回の書き込みステップでデータを書き込んだ。しかし、書き込みの途中で電源が遮断された場合、データの書き込みが完了していない不正な物理ブロックが生じる。このような突然の電源遮断も考慮して、１つの物理ブロックが真に書き込み済みであるか否かを判断することは困難である。
所定のページ、好ましくは第３２ページ目に第２のフラグを割り付け、第３２ページ目のデータを第２のフラグと一緒に書き込むことも考えられる。しかし、第３２ページ目の書き込み途中に電源が遮断された場合、第２のフラグは正常に書き込まれ、他のいずれかのビットが書き込まれない状態（０を記録しようとしたが、そのビットの値は１のままである状態）が発生し得る。従って、このような方法でも１つの物理ブロックが真に書き込み済みであるか否かを判断することは困難である。
本発明においては、通常のデータを３２ページに書き込み、最後に、所定の固定値（実施の形態では００）の第２のフラグのみを単独で書き込む。従って、第２のフラグが固定値（例えば００）であれば、その物理ブロックの書き込みは確実に終了している。第２のフラグが固定値でなければ（例えば１１）、データの書き込みの途中で電源が遮断されたと判断できる。
本発明は、書き込み途中で電源が遮断されても、物理ブロックが正しく書き込み終了したか否かを確実に検知できる不揮発性記憶装置の制御方法を実現する。
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの前記第２のフラグを読み出して、前記第２のフラグが書き込み済みか否かに基づいて、論理アドレス／物理アドレス変換テーブルを生成する初期化ステップを更に有する。
本発明によれば、データ書き込みの途中で電源が遮断された後の初期化処理においても、短時間で正確な論理アドレス／物理アドレス変換テーブルを生成できる。これにより、書き込みが完了していない不正な物理ブロックを有効な物理ブロックと誤判定することを防ぐことができる。
本発明の更に別の観点による不揮発性記憶装置の制御方法は、不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の先頭ページの前記冗長領域に設けられその先頭ページにデータが書き込まれているか否かを示す第１のフラグに、データが書き込まれていることを示す固定値を書き込む第１のフラグ書き込みステップと、その物理ブロックにデータを書き込むデータ書き込みステップと、前記物理ブロックの所定のページの冗長領域に設けられその物理ブロックにデータが書き込まれているか否かを示す第２のフラグに、その物理ブロックにデータが書き込まれていることを示す固定値を書き込む第２のフラグ書き込みステップと、を有する。
本発明においては、最初に第１のフラグに固定値（実施の形態では００）を単独で書き込み、その後通常のデータを３２ページに書き込み、最後に固定値（実施の形態では００）の第２のフラグのみを単独で書き込む。従って、第１のフラグが固定値でなければ（例えば１１）、その物理ブロックは消去済みと判断できる。第１のフラグが固定値（例えば００）で、第２のフラグが固定値でなければ（例えば１１）、データ書き込みの途中で電源が遮断され、書き込みが完了していないと判断できる。第１のフラグと第２のフラグが共に固定値（例えば００）であれば、その物理ブロックの書き込みは確実に完了していると判断できる。
本発明は、書き込み途中で電源が遮断されても、物理ブロックが消去済みか否か、物理ブロックが正しく書き込み終了したか否かを確実に検知できる不揮発性記憶装置の制御方法を実現する。
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの前記第１のフラグ及び前記第２のフラグを読み出して、前記第１のフラグ及び前記第２のフラグが書き込み済みか否かに基づいて、論理アドレス／物理アドレス変換テーブルと消去済みテーブルとを生成する初期化ステップを更に有する。
本発明によれば、データ書き込みの途中で電源が遮断された後の初期化処理においても、短時間で正確な消去済みテーブルと論理アドレス／物理アドレス変換テーブルとを生成できる。これにより、消去済みでない物理ブロックに誤ってデータを書くことを防ぐことができる。書き込みが完了していない不正な物理ブロックを有効な物理ブロックと誤判定することを防ぐことができる。
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、物理ブロックにデータを書き込む時、最後のページのデータのＥＣＣ符号及び／又はＣＲＣ符号を、又はそれらと更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データとをその最後のページの冗長領域に書き込む書き込みステップと、前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの最後のページからデータとそのデータのＥＣＣ符号及び／又はＣＲＣ符号を読み出して、又はそれらと更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データとを読み出して、誤り検出を行い、誤りの有無に基づいて、論理アドレス／物理アドレス変換テーブルを生成する初期化ステップを有する。
本発明によれば、データ書き込みの途中で電源が遮断された後の初期化処理においても、短時間で正確な論理アドレス／物理アドレス変換テーブルを生成できる。これにより、書き込みが完了していない不正な物理ブロックを有効な物理ブロックと誤判定することを防ぐことができる。上記の構成において、第１のフラグを有しない構成としても良い。
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、前記物理ブロックの最後のページの、単独で別個に書き込み可能なデータを書き込むための領域を除く領域の全てのアドレスにデータを書き込み、その領域をデータと前記データのＥＣＣ符号及び／又はＣＲＣ符号とで埋め尽くし、又はそれらに更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データを加えて埋め尽くす最後のページ書き込みステップを有する。
本発明においては、通常のデータを３１ページに書き込み、最後のページにデータを書き込むときに、所定の領域を通常のデータと、ＥＣＣ符号及び／又はＣＲＣ符号とで埋め尽くし、又はそれらと更に相補データとを加えて埋め尽くす。初期化処理において、データの整合性に基づいて（誤り検出の有無）、データの書き込みが完了しているか否か判断できる。
本発明は、書き込み途中で電源が遮断されても、物理ブロックが正しく書き込み完了したか否かを検知できる不揮発性記憶装置の制御方法を実現する。上記の構成において、第１のフラグを有しない構成としても良い。
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの最後のページの前記データと、前記データのＥＣＣ符号及び／又はＣＲＣ符号とを読み出して、又はそれらと更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データとを読み出して、誤り検出を行い、誤りの有無に基づいて、論理アドレス／物理アドレス変換テーブルを生成する初期化ステップを更に有する。
本発明によれば、データ書き込みの途中で電源が遮断された後の初期化処理においても、短時間で正確な論理アドレス／物理アドレス変換テーブルを生成できる。これにより、書き込みが完了していない不正な物理ブロックを有効な物理ブロックと誤判定することを防ぐことができる。
本発明の更に別の観点による不揮発性記憶装置の制御方法は、不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、管理領域とデータ記録領域とを有する前記不揮発性メモリの前記管理領域に設けられ、無効データを有する物理ブロック（以下、「旧物理ブロック」と呼ぶ。）の物理アドレスと、前記旧物理ブロックの無効データが消去済みか否かを示す第３のフラグとを有する無効テーブル（消去予約テーブル）に、旧物理ブロックの物理アドレスを登録する物理アドレス登録ステップと、前記旧物理ブロックの無効データを消去する無効データ消去ステップと、前記旧物理ブロックの物理アドレスに対応する前記第３のフラグに前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、を有する。
従来の不揮発性記憶装置の制御方法において、物理ブロックのデータを消去する場合、例えばデータが無効であるか否かを示すフラグが無効にセットされている物理ブロックを消去した。しかし、消去の途中で電源が遮断された場合、データの消去は終了しておらず、０のビットが含まれている場合があった。このような突然の電源遮断も考慮して、１つの物理ブロックが消去済みであるか否かを確実に知ろうとすれば、３２ページの全ビットを調べ、全ビットが１であるか又は０のビットが含まれるかを調べなければならなかった。
本発明においては、消去すべき物理ブロックのアドレスと第３のフラグとで構成される消去予約テーブルを不揮発性メモリの管理領域に生成し、物理ブロックを消去する前に、消去予約テーブルに消去すべき物理ブロックの物理アドレスを登録する。その後、その物理ブロックを消去する。最後に、消去した物理ブロックに対応する第３のフラグに固定値（実施の形態では００）を書き込む。
従って、一旦消去を開始したとしても、消去途中に電源が遮断された場合、第３のフラグは所定の固定値でない（例えば１１）。消去予約テーブルに登録されている物理ブロックの第３のフラグが固定値でない場合、その物理ブロックの消去は終了していないことが確実に分かる。もし第３のフラグが所定の固定値であれば（例えば００）、その物理ブロックの消去は確実に終了している。
本発明は、消去途中で電源が遮断されても、物理ブロックの消去が終了したか否かを確実に検知できる不揮発性記憶装置の制御方法を実現する。
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、前記不揮発性記憶装置の起動時に、前記管理領域の前記無効テーブルを読み出して、前記第３のフラグが書き込み済みでない前記旧物理ブロックの無効データを消去する無効データ消去ステップと、前記旧物理ブロックの物理アドレスに対応する前記第３のフラグに、前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、を更に有する。
本発明は、消去途中で電源が遮断されて物理ブロックの消去が終了していなくても、起動時にそのことを確実に検知して、物理ブロックを消去する不揮発性記憶装置の制御方法を実現する。これにより、消去済みでない物理ブロックに誤ってデータを書くことを防ぐことができる。
本発明の更に別の観点による不揮発性記憶装置の制御方法は、不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、前記物理ブロックにデータを書き込む時に、前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の所定のページの前記冗長領域に、無効データを有する旧物理ブロックの物理アドレスを登録する物理アドレス登録ステップと、前記旧物理ブロックの無効データを消去する無効データ消去ステップと、前記旧物理ブロックの物理アドレスが登録された前記冗長領域に設けられ、その旧物理ブロックの無効データが消去済みか否かを示す第３のフラグに、前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、を有する。
本発明は、消去途中で電源が遮断されても、物理ブロックの消去が終了したか否かを確実に検知できる不揮発性記憶装置の制御方法を実現する。本発明は、旧物理ブロックの物理アドレスと第３のフラグとをデータ書き込み先の物理ブロックの冗長領域に書き込むため、消去予約テーブルを作成するための専用の領域を不揮発性メモリの管理領域に設ける必要がない。物理ブロックの所定のページのデータ書き込みと同時に、旧物理ブロックの物理アドレスを登録するため、物理アドレス登録に要する時間が余分に発生することがなく、消去予約テーブルを設ける方法と比較して処理時間が短い。
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、前記不揮発性記憶装置の起動時に、前記物理ブロックの冗長領域の前記第３のフラグを読み出して、前記第３のフラグが書き込み済みでない前記旧物理ブロックの無効データを消去する無効データ消去ステップと、前記第３のフラグに、前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、を更に有する。
本発明は、消去途中で電源が遮断されて物理ブロックの消去が終了していなくても、起動時にそのことを確実に検知して、物理ブロックを消去する不揮発性記憶装置の制御方法を実現する。これにより、消去済みでない物理ブロックに誤ってデータを書くことを防ぐことができる。
本発明の更に別の観点による不揮発性記憶装置の制御方法は、不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、データの書き込みを実行する前記物理ブロックを決定した後、前記物理ブロックにデータを書き込む前に、必ず前記物理ブロックに書き込まれているデータを消去する旧データ消去ステップと、を有する。
本発明によれば、未消去の物理ブロックに誤ってデータを書き込むという事故を確実に防ぐことができる。
本発明の更に別の観点による不揮発性記憶装置の制御方法は、不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、前記物理ブロックにデータを書き込む前に、前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の先頭ページを読み出して、前記先頭ページの前記冗長領域に設けられたその物理ブロックの管理情報に基づいて、前記先頭ページが消去済みか否かを判断し、消去済みでなければ前記物理ブロックに書き込まれているデータを消去する旧データ消去ステップと、を有する。
本発明によれば、未消去の物理ブロックに誤ってデータを書き込むという事故を確実に且つ効率的に防ぐことができる。
発明の新規な特徴は添付の請求の範囲に特に記載したものに他ならないが、構成及び内容の双方に関して本発明は、他の目的や特徴と共に、図面と共同して理解されるところの以下の詳細な説明から、より良く理解され評価されるであろう。
【図面の簡単な説明】  図１は、不揮発性記憶装置の構成を示すブロック図である。
図２は、消去済みテーブル１０５の構成を示す図である。
図３は、論理アドレス／物理アドレス変換テーブル１０６の構成を示す図である。
図４は、従来例及び本発明の実施の形態１の不揮発性記憶装置１０１の初期化処理のフローチャートである。
図５は、本発明の実施の形態１の不揮発性メモリ１０３の物理ブロックの構成を示す図である。
図６は、本発明の実施の形態１の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。
図７は、本発明の実施の形態１における物理ブロックにデータが書き込まれる状態を段階的に示す図である。
図８は、本発明の実施の形態２の不揮発性メモリ１０３の物理ブロックの構成を示す図である。
図９は、本発明の実施の形態２の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。
図１０は、本発明の実施の形態２における物理ブロックにデータが書き込まれる状態を段階的に示す図である。
図１１は、本発明の実施の形態２の不揮発性記憶装置１０１の初期化処理のフローチャートである。
図１２は、本発明の実施の形態３の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。
図１３は、本発明の実施の形態４の不揮発性メモリ１０３の物理ブロックの構成を示す図である。
図１４は、本発明の実施の形態５の不揮発性メモリ１０３の構成を示す図である。
図１５は、本発明の実施の形態５の消去予約テーブルの構成を示す図である。
図１６は、本発明の実施の形態５の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。
図１７は、本発明の実施の形態５における消去予約テーブルの状態変化を段階的に示す図である。
図１８は、本発明の実施の形態５の不揮発性記憶装置１０１の初期化処理のフローチャートである。
図１９は、本発明の実施の形態６の不揮発性メモリ１０３の物理ブロックの構成を示す図である。
図２０は、本発明の実施の形態６の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。
図２１は、本発明の実施の形態６の不揮発性記憶装置１０１の初期化処理のフローチャートである。
図２２は、本発明の実施の形態７の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。
図２３は、本発明の実施の形態８の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。
図２４は、従来例の不揮発性メモリ１０３の物理ブロックの構成を示す図である。
図２５は、従来例の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。
図面の一部又は全部は、図示を目的とした概要的表現により描かれており、必ずしもそこに示された要素の実際の相対的大きさや位置を忠実に描写しているとは限らないことは考慮願いたい。
【発明を実施するための最良の形態】  以下本発明の実施をするための最良の形態を具体的に示した実施の形態について、図面とともに記載する。
《実施の形態１》
図１〜７を用いて、実施の形態１の不揮発性記憶装置の制御方法を説明する。図１において、１０１は不揮発性記憶装置、１０２はホストである。不揮発性記憶装置１０１は、不揮発性メモリ１０３、コントローラ１０４、消去済みテーブル１０５、論理アドレス／物理アドレス変換テーブル１０６を有する。実施の形態１において、不揮発性記憶装置１０１はメモリカードであり、ホスト１０２は携帯電話であり、不揮発性メモリ１０３はフラッシュメモリである。図１〜４は従来例と同一であるため、詳細な説明を省略する。
図５は本発明の不揮発性メモリ１０３の物理ブロックの構成を示す図である。物理ブロック５０１は、３２ページで構成される。１ページの容量は５２８バイトであり、５１２バイトのデータ領域５０２と１６バイトの冗長領域５０３とに区分される。１ページはデータの書き込み単位、読み出し単位である。データの書き込みは、物理ブロックのページ０からページ３１まで順にページ単位で書き込まれる。物理ブロックはデータの消去単位であり、消去時には物理ブロックに含まれる３２ページ全てを一度に消去する。
不揮発性メモリの物理ブロック５０１のデータは１と０とで表され、消去済みの状態において全てのビットが１である。データの書き込みは０を書き込むことであって、０のビットに１を上書きすることはできない。そのため、消去済みでない物理ブロックに新しいデータを上書きで書き込むと、不正データとなる。新しいデータは、消去済みの物理ブロックに書き込まなければならない。
実施の形態１の物理ブロックが従来例の物理ブロックの構成（図２４）と違うところは、先頭ページであるページ０の冗長領域５０３に第１のフラグ５１１を有することである。第１のフラグ５１１は、データ信頼性を高めるため、複数ビットデータで表す。実施の形態１において、第１のフラグは２ビットで構成され、論理値１１又は００で表す。それ以外の点において、本発明の実施の形態１の物理ブロックは、従来例の構成と同一である。
図６及び図７を用いて、実施の形態１の不揮発性記憶装置１０１のデータの書き換え方法を説明する。図６は実施の形態１の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図７は、実施の形態１の物理ブロックにデータが書き込まれる状態を段階的に示す図である。
ホスト１０２からデータの書き込み指令を受信すると、不揮発性記憶装置１０１のコントローラ１０４は、消去済みテーブル１０５から消去済み物理ブロックを検出し、書き込み先の物理ブロックとして確保する（ステップ６０１）。不揮発性メモリ１０３の物理ブロック５０１は、消去済みの状態においてビットは全て１である（図７（ａ））。
まず、確保した物理ブロックの第１のフラグに固定値（消去した時の値と異なる値であって、実施の形態では００）を書き込む（ステップ６０２、図７（ｂ））。具体的には、第１のフラグのみが００でそれ以外のデータが全て１であるデータを先頭ページに書き込む。書き込み先物理ブロックは、先頭ページの冗長領域５０３の一部（第１のフラグ５１１）のみが書き込み済みの状態となる。第１のフラグ５１１は、これからその物理ブロックにデータの書き込みが開始されることを示す。その後、第１のフラグ以外のデータを物理ブロックのページ０からページ３１まで順にページ単位で書き込む（ステップ６０３、図７（ｃ））。
無効データ（新しいデータを書き込むことによって、必要でなくなったデータ）を含む旧物理ブロックを消去する（ステップ６０４）。消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ６０５）。具体的には、消去済みテーブル１０５に、ステップ６０１で確保した物理ブロックに対応するビットに０（書き込み済み）を書き込む。ステップ６０４で消去した旧物理ブロックに対応するビットに１（消去済み）を書き込む。論理アドレス／物理アドレス変換テーブル１０６の論理アドレスに対応する物理アドレスを、旧物理ブロックから書き込みを行った物理ブロックを示すように更新する。
第１のフラグを別ステップで書き込む実施の形態１の書き込み方法は、従来例の書き込み方法より１ステップ処理が多い。しかし、例えば１ページ（最小書き込み単位）の書き込みを１ステップで実行するとすれば、１物理ブロック（３２ページ）の書き込みに要する書き込みステップ数は、従来の３２ステップより１ステップ多い３３ステップになるだけである。
例えば、不揮発性メモリ１０３に、１ページ分のデータを転送する時間は４０μｓ、１ページ分のデータの書き込み時間は２００μｓであるので、１物理ブロックの書き込み時間は、（４０＋２００）×３２＝７６８０μｓである。これに対し、１ページ分の冗長領域のみのデータを転送する時間は１．５μｓで、１ページ分のデータの書き込み時間は２００μｓであるので、１ページ分の冗長領域のみの書き込み時間は１．５＋２００＝２０１．５μｓである。従って、実施の形態１のデータの書き込み時間（２０１．５μｓ＋７６８０μｓ）は従来例（７６８０μｓ）より約２．６％長くなるだけである。実施の形態は、アドレス、データ等を常に２箇所に書き込む従来例１と比較してはるかにデータ書き込み速度が速い。１ページの書き込みステップ数が１ステップでなく複数ステップであれば、第１のフラグを別ステップで書き込むことによる処理速度の低下の割合は、更に小さい。
図４を用いて、実施の形態１の初期化処理を説明する。図４は従来例の不揮発性記憶装置１０１の初期化処理のフローチャートであり、本発明の実施の形態１は従来例と同一の方法で初期化処理を行う。不揮発性メモリ１０３の全ての物理ブロックについて、先頭ページのみの冗長領域５０３を読み出して（ステップ４０２）、物理ブロックが消去済みか否かを判断する（ステップ４０３）。物理ブロックが消去済みか否かの判断は、先頭ページの冗長領域５０３が全て１のデータである場合は消去済み、値０のビットを含むデータが書き込まれている場合は書き込み済みとする。
本発明の実施の形態１は、データの書き込み前に第１のフラグに固定値を書き込んでいるので（ステップ６０２）、電源遮断等の異常によりデータの書き込みが中断した物理ブロックにおいても、第１のフラグには既に００が書き込まれている。例えば、先頭ページにデータを書き込み中に処理が中断した物理ブロックにおいても、第１のフラグは００である。従って、実施の形態１の不揮発性記憶装置１０１は、データの書き込みが中断した（完全に消去済みでない）物理ブロックを消去済みと誤って判定し、消去済みテーブル１０５に登録することはない。
本発明の実施の形態１の不揮発性記憶装置の制御方法によれば、データより先に第１のフラグを書き込むことにより、従来例と同じ初期化処理を用いて、物理ブロックが消去済みか否かを確実に検知できる。データの書き込みが電源遮断等によって途中で中断した場合であっても、消去済みテーブル１０５を正しく生成することができ、消去済みでない物理ブロックに誤ってデータを書くことを防ぐことができる。
《実施の形態２》
図１〜３、図８〜１１を用いて、実施の形態２の不揮発性記憶装置の制御方法を説明する。図１〜３は、従来例及び実施の形態１と同一であるため、詳細な説明を省略する。図８は本発明の実施の形態２の不揮発性メモリ１０３の物理ブロックの構成を示す図である。図８において、従来例（図２４）と同一部には同一符号を付している。
実施の形態２の物理ブロックが従来例の物理ブロックの構成と違うところは、所定のページ（実施の形態２においては、最後のページであるページ３１）の冗長領域５０３に第２のフラグ８０１を有することである。第２のフラグ８０１は、データ信頼性を高めるため、複数ビットデータで表す。実施の形態２において、第２のフラグは２ビットで構成され、論理値１１又は００で表す。それ以外の点において、本発明の実施の形態２の物理ブロックは、従来例の構成と同一である。
図９及び図１０を用いて、実施の形態２の不揮発性記憶装置１０１のデータの書き換え方法を説明する。図９は実施の形態２の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図９において、実施の形態１の図６と同一ステップには、同一符号を付している。図１０は、実施の形態２の物理ブロックにデータが書き込まれる状態を段階的に示す図である。
ホスト１０２からデータの書き込み指令を受信すると、不揮発性記憶装置１０１のコントローラ１０４は、消去済みテーブル１０５から消去済み物理ブロックを検出し、書き込み先の物理ブロックとして確保する（ステップ６０１）。不揮発性メモリ１０３の物理ブロック５０１は、消去済みの状態においてビットは全て１である（図１０（ａ））。
確保した物理ブロックにデータをページ単位で書き込む（ステップ６０３、図１０（ｂ））。具体的には、ページ０からページ３０まで順にデータを書き込む。第２のフラグ以外のデータをページ３１に書き込む。具体的には、第２のフラグを１１として所望のデータを最後のページに書き込む。その結果、書き込み先物理ブロックは、最後のページの冗長領域５０３の一部（第２のフラグ８０１）以外は全て書き込み済みの状態となる。
最後に、第２のフラグに固定値（消去した時の値と異なる値であって、実施の形態では００）を書き込む（ステップ９０１、図１０（ｃ））。具体的には、第２のフラグのみが００でそれ以外のデータが全て１であるデータを最後のページに書き込む。第２のフラグの書き込みが完了した時点で、その物理ブロックのデータの書き込みが完了する。第２のフラグ８０１は、物理ブロックのデータの書き込みが完了したことを示す。
無効データ（新しいデータを書き込むことによって、必要でなくなったデータ）を含む旧物理ブロックを消去する（ステップ６０４）。
消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ６０５）。具体的には、消去済みテーブル１０５に、ステップ６０１で確保した物理ブロックに対応するビットに０（書き込み済み）を書き込む。ステップ６０４で消去した旧物理ブロックに対応するビットに１（消去済み）を書き込む。論理アドレス／物理アドレス変換テーブル１０６の論理アドレスに対応する物理アドレスを、旧物理ブロックから書き込みを行った物理ブロックを示すように更新する。
第２のフラグを別ステップで書き込む実施の形態２の書き込み方法は、従来例の書き込み方法より１ステップ処理が多い。しかし、例えば１ページ（最小書き込み単位）の書き込みを１ステップで実行するとすれば、１物理ブロック（３２ページ）の書き込みに要する書き込みステップ数は、従来の３２ステップより１ステップ多い３３ステップになるだけである。
例えば、不揮発性メモリ１０３に、１ページ分のデータを転送する時間は４０μｓ、１ページ分のデータの書き込み時間は２００μｓであるので、１物理ブロックの書き込み時間は、（４０＋２００）×３２＝７６８０μｓである。これに対し、１ページ分の冗長領域のみのデータを転送する時間は１．５μｓで、１ページ分のデータの書き込み時間は２００μｓであるので、１ページ分の冗長領域のみの書き込み時間は１．５＋２００＝２０１．５μｓである。従って、実施の形態２のデータの書き込み時間（７６８０μｓ＋２０１．５μｓ）は従来例（７６８０μｓ）より約２．６％長くなるだけである。実施の形態は、アドレス、データ等を常に２箇所に書き込む従来例１と比較してはるかにデータ書き込み速度が速い。１ページの書き込みステップ数が１ステップでなく複数ステップであれば、第２のフラグを別ステップで書き込むことによる処理速度の低下の割合は、更に小さい。
図１１を用いて、実施の形態２の初期化処理を説明する。図１１は実施の形態２の不揮発性記憶装置１０１の初期化処理のフローチャートである。図１１において、図４（従来例及び実施の形態１）と同一ステップには同一符号を付している。
ブロックカウンタに０（初期値）を設定する（ステップ４０１）。コントローラ１０４は、不揮発性メモリ１０３の読み出し対象である物理ブロックの先頭ページの冗長領域５０３を読み出す（ステップ４０２）。
物理ブロックが消去済みか否か判断する（ステップ４０３）。物理ブロックが消去済みか否かの判断は、従来例と同様に先頭ページの冗長領域５０３が全て１のデータであるか、又は値０のビットを含むデータが書き込まれているかで行う。
先頭ページの冗長領域が全て１のデータである場合は、物理ブロックは消去済みと判断し、消去済みテーブル１０５のその物理ブロックに対応する欄に１を書き込み、物理ブロックが消去済みであると登録する（ステップ４０４）。ステップ４０７に進む。
先頭ページの冗長領域に値０のビットを含むデータが書き込まれている場合は消去済みでないと判断し、第２のフラグを有する最後のページの冗長領域を読み出す（ステップ１１０１）。第２のフラグが書き込み済みか否か判断する（ステップ１１０２）。第２のフラグが書き込み済みでなければ（＝１１）、その物理ブロックは電源遮断等によって書き込みが完了していないと判断し、物理ブロックを消去して（ステップ１１０３）、ステップ４０４に進む。
第２のフラグが書き込み済み（＝００）の場合、消去済みテーブル１０５のその物理ブロック欄に０（消去済みでない）を書き込む（ステップ４０５）。先頭ページの冗長領域５０３に書き込まれている論理アドレスを読み出して、論理アドレス／物理アドレス変換テーブル１０６のその論理アドレスに対応する位置に物理アドレスを登録する（ステップ４０６）。ステップ４０７に進む。
最終物理ブロックであるか否か判断する（ステップ４０７）。最終物理ブロックでなければ、ブロックカウンタに１を加算し（ステップ４０８）、ステップ４０２に戻り処理を繰り返す。最終物理ブロックであれば、初期化を終了する。
実施の形態２の不揮発性記憶装置の制御方法は、データの書き込みが中断した不完全な物理ブロックを誤って論理アドレス／物理アドレス変換テーブル１０６に登録することがない。例えば、電源遮断等によって書き込み処理が中断した場合、第２のフラグは１１のままである。先頭ページは書き込み済みであっても、最後のページまで書き込みが完了していないと判断できる。第２のフラグが００の場合、その物理ブロックの書き込みは完了していると判断できる。
本発明の実施の形態２の不揮発性記憶装置の制御方法によれば、データの書き込みが電源遮断等によって途中で中断した場合であっても、第２のフラグに基づいて論理アドレス／物理アドレス変換テーブル１０６を正しく生成することができる。
なお、実施の形態２において、第２のフラグ８０１は物理ブロックの最後のページに有した。これに代えて、第２のフラグを物理ブロックの最後のページ以外の任意のページの冗長領域５０３に有しても良い。この場合、図１１の初期化処理のステップ１１０１において、最後のページに代えて第２のフラグを有するページの冗長領域を読み出せば良い。
《実施の形態３》
図１１及び図１２を用いて、実施の形態３の不揮発性記憶装置の制御方法を説明する。実施の形態３の不揮発性メモリ１０３の物理ブロック５０１は、第１のフラグと第２のフラグの両方を有する。実施の形態３の物理ブロックが有する第１のフラグ５１１及び第２のフラグ８０１はそれぞれ実施の形態１の第１のフラグ５１１及び実施の形態２の第２のフラグ８０１と同一である。
図１２を用いて、実施の形態３の不揮発性記憶装置１０１のデータの書き換え方法を説明する。図１２は実施の形態３の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図１２において、実施の形態１の図６及び実施の形態２の図９と同一ステップには、同一符号を付している。
ホスト１０２からデータの書き込み指令を受信すると、不揮発性記憶装置１０１のコントローラ１０４は、消去済みテーブル１０５から消去済み物理ブロックを検出し、書き込み先の物理ブロックとして確保する（ステップ６０１）。不揮発性メモリ１０３の物理ブロック５０１は、消去済みの状態においてビットは全て１である（図７（ａ））。
まず、確保した物理ブロックの第１のフラグに固定値（実施の形態では００）を書き込む（ステップ６０２、図７（ｂ））。書き込み先物理ブロックは、先頭ページの冗長領域５０３の一部（第１のフラグ５１１）のみが書き込み済みの状態となる。第１のフラグ５１１は、これからその物理ブロックにデータの書き込みが開始されることを示す。
その後、物理ブロックにデータをページ単位で書き込む（ステップ６０３、図７（ｃ））。具体的には、第１のフラグ以外のデータをページ０に書き込む。ページ１からページ３０まで順にデータを書き込む。第２のフラグ以外のデータをページ３１に書き込む（図１０（ｂ））。
最後に、第２のフラグに固定値（実施の形態では００）を書き込む（ステップ９０１、図１０（ｃ））。第２のフラグの書き込みが完了した時点で、その物理ブロックのデータの書き込みが完了する。第２のフラグ８０１は、物理ブロックのデータの書き込みが完了したことを示す。
無効データ（新しいデータを書き込むことによって、必要でなくなったデータ）を含む旧物理ブロックを消去する（ステップ６０４）。
消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ６０５）。具体的には、消去済みテーブル１０５に、ステップ６０１で確保した物理ブロックに対応するビットに０（書き込み済み）を書き込む。ステップ６０４で消去した旧物理ブロックに対応するビットに１（消去済み）を書き込む。論理アドレス／物理アドレス変換テーブル１０６の論理アドレスに対応する物理アドレスを、旧物理ブロックから書き込みを行った物理ブロックを示すように更新する。
図１１を用いて、実施の形態３の初期化処理を説明する。実施の形態３は実施の形態２と同一の方法で初期化処理を行う。ステップ４０２で、物理ブロックの先頭ページのみの冗長領域５０３を読み出す。ステップ４０３の物理ブロックが消去済みか否かの判断において、先頭ページの冗長領域５０３が全て１のデータである場合は消去済み、値０のビットを含むデータが書き込まれている場合は書き込み済みと判断する。
先頭ページの冗長領域が全て１のデータである場合、つまり第１のフラグに固定値が書き込まれていない場合は、消去済みテーブル１０５のその物理ブロック欄に１を書き込み、物理ブロックが消去済みであると登録する（ステップ４０４）。
冗長領域５０３が消去済みでない、つまり第１のフラグに固定値が書き込まれている場合は、最後のページの冗長領域を読み出す（ステップ１１０１）。最後のページの冗長領域に有する第２のフラグが書き込み済みか否か判断する（ステップ１１０２）。第２のフラグが書き込み済みでなければ（＝１１）、その物理ブロックは電源遮断等によって書き込みが完了していないと判断し、その物理ブロックを消去して（ステップ１１０３）、ステップ４０４に進む。
第２のフラグが書き込み済み（＝００）の場合、消去済みテーブル１０５のその物理ブロック欄に０（消去済みでない）を書き込む（ステップ４０５）。先頭ページの冗長領域５０３に書き込まれている論理アドレスを読み出して、論理アドレス／物理アドレス変換テーブル１０６のその論理アドレスに対応する位置に物理アドレスを登録する（ステップ４０６）。ステップ４０７に進む。
従って、実施の形態３における物理ブロックの状態は、下記のように判定できる。
第１のフラグ＝１１かつ第２のフラグ＝１１の場合、物理ブロックは消去済み（未書き込み）であることを示す。
第１のフラグ＝００かつ第２のフラグ＝１１の場合、データの書き込みが電源遮断等によって途中で中断し、データの書き込みが開始されているが完了していないことを示す。
第１のフラグ＝１１かつ第２のフラグ＝００の場合、正常な処理では発生しない。
第１のフラグ＝００かつ第２のフラグ＝００の場合、物理ブロックが書き込み済みであることを示す。
本発明の実施の形態３の不揮発性記憶装置の制御方法によれば、データより先に第１のフラグを書き込むことにより、物理ブロックが消去済みか否かを確実に検知できる。
本発明の実施の形態３の不揮発性記憶装置の制御方法によれば、データを書き込んだ後に第２のフラグを書き込むことにより、物理ブロックが書き込み済みか否かを確実に検知できる。
本発明の実施の形態３の不揮発性記憶装置の制御方法によれば、データの書き込みが電源遮断等によって途中で中断した場合であっても、第１のフラグと第２のフラグに基づいて、消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６の両方を正しく生成することができる。実施の形態３は、実施の形態１の効果と実施の形態２の効果の両方を有する。
なお、実施の形態３において、第２のフラグ８０１は物理ブロックの最後のページに有した。これに代えて、第２のフラグを物理ブロックの最後のページ以外の任意のページの冗長領域５０３に有しても良い。この場合、図１１の初期化処理のステップ１１０１において、最後のページに代えて第２のフラグを有するページの冗長領域を読み出せば良い。
なお、第１のフラグ及び第２のフラグを別ステップで書き込むことにより、初期化処理において生成する消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６の正確性は向上する。しかし、実施の形態３の書き込み方法は、従来例の書き込み方法より２ステップ処理が多く、実施の形態１又は実施の形態２の書き込み方法より１ステップ処理が多いため、データの書き込みに要する時間は長い。例えば、１物理ブロックの書き込み時間が７６８０μｓで、１ページの冗長領域のみの書き込み時間が２０１．５μｓであるので、実施の形態３のデータの書き込み時間は従来例より５．２％、実施の形態１又は実施の形態２より約２．６％長くなる。
データの書き込みに要する時間及び初期化処理に要する時間の短縮を優先するか、又は消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６の正確性を優先するかによって、第１のフラグのみを有してもよいし（実施の形態１）、第２のフラグのみを有してもよいし（実施の形態２）、第１のフラグと第２のフラグを共に有してもよい（実施の形態３）。
《実施の形態４》
図１３を用いて、実施の形態４の不揮発性記憶装置の制御方法を説明する。図１３は、実施の形態４の不揮発性メモリ１０３の物理ブロック５０１の構成を示す図である。実施の形態４の物理ブロック５０１が、実施の形態２の物理ブロックと違うところは、第２のフラグ８０１に代えて、管理情報Ａ１３０１及び管理情報Ａ’１３０２を最後のページに有することである。それ以外の点において、実施の形態４の物理ブロックは、実施の形態２と同一である。
実施の形態４において、管理情報Ａ１３０１は各物理ブロックについてユニークなデータであって、例えば最後のページのデータのＥＣＣ符号及び／又はＣＲＣ符号を含む。管理情報Ａ’１３０２は、管理情報Ａのそれぞれのビットが反転したデータ（相補データ）である。
ＥＣＣ符号、ＣＲＣ符号は、最後のページの冗長領域５０３のデータのみのＥＣＣ符号、ＣＲＣ符号であっても良く、データ領域（又はデータ領域及び冗長領域）のデータのＥＣＣ符号、ＣＲＣ符号であっても良い。
好ましくは、物理ブロックの最後のページの、単独で別個に書き込み可能なデータ（例えば第２のフラグ等）を書き込むための領域を除く領域の全てのアドレスにデータを書き込み、その領域をデータと、ＥＣＣ符号及び／又はＣＲＣ符号と、そのＥＣＣ符号及び／又はＣＲＣ符号の相補データで埋め尽くす。これにより、電源の瞬時停電に起因する誤判断の確率を更に小さく出来る。
実施の形態４の不揮発性記憶装置１０１のデータ書き換え方法を説明する。実施の形態４の不揮発性記憶装置１０１のデータ書き換え方法は、従来例の図２５と同一のフローチャートを用いて行う。但し、ステップ６０３の処理が異なる。実施の形態４の不揮発性記憶装置１０１は、物理ブロック５０１にデータを書き込む場合（ステップ６０３）、最後のページであるページ３１のデータ領域５０２にデータを書き込むのと同時に冗長領域５０３に管理情報Ａ及び管理情報Ａ’を書き込む。それ以外の点においては、従来例のデータ書き換え方法と同一であるため、説明を省略する。
図１１を用いて、実施の形態４の不揮発性記憶装置１０１の初期化処理を説明する。実施の形態４の初期化処理は、ステップ１１０１及びステップ１１０２が実施の形態２と異なる。実施の形態２では、最後のページの冗長領域のみを読み出して（ステップ１１０１）、第２のフラグ８０１が書き込み済みか否かに基づいて、物理ブロック５０１にデータが書き込まれているか否かを判断した（ステップ１１０２）。実施の形態４では、最後のページのデータ領域と冗長領域とを読み出す（ステップ１１０１）。データとＥＣＣ符号及び／又はＣＲＣ符号とにより最後のページのデータに誤りがあるか否か、更に管理情報Ａ１３０１及び管理情報Ａ’１３０２が相補な関係であるか否か（整合しているか又は誤りを含むか）を判断する（ステップ１１０２）。データとＥＣＣ符号及び／又はＣＲＣ符号とが整合し、且つ管理情報Ａ及び管理情報Ａ’が相補なデータである場合は、物理ブロックは書き込み済みと判断し、ステップ４０５に進む。データとＥＣＣ符号及び／又はＣＲＣ符号とが整合せず、又は管理情報Ａ１３０１及び管理情報Ａ’１３０２が相補なデータでない（誤りを含む）場合は、物理ブロックの書き込みが電源遮断等により途中で中断したと判断し、ステップ１１０３で物理ブロックを消去した後、ステップ４０４に進む。それ以外の点においては、実施の形態２の初期化処理と同一であるため、説明を省略する。
実施の形態４の不揮発性記憶装置の制御方法によれば、データ領域５０２にデータを書き込むのと同時に冗長領域５０３に相補なデータ（管理情報Ａ及びＡ’）を書き込むので、相補なデータを書き込むための余計なプログラム時間が不要である。物理ブロック５０１にデータを書き込んだ後に、第２のフラグ８０１を別ステップで書き込む実施の形態２と比較して、処理時間が早い。但し、実施の形態４の制御方法は、誤判断の可能性は極めてゼロに近いもののゼロではなく、正確の信頼性においては、実施の形態２の制御方法のほうが優れている。
データの書き込みに要する時間の短縮を優先するか、又は消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６の正確性を優先するかによって、第２のフラグを有しても良いし（実施の形態２）、相補データを有してもよい（実施の形態４）。
上記方法に代えて、管理情報Ａ’１３０２を有さず、ＥＣＣ符号及び／又はＣＲＣ符号のみを最後のページの冗長領域に有しても良い。好ましくは、物理ブロックの最後のページの、単独で別個に書き込み可能なデータ（例えば第２のフラグ等）を書き込むための領域を除く領域の全てのアドレスにデータを書き込み、その領域をデータと、ＥＣＣ符号及び／又はＣＲＣ符号とで埋め尽くす。これにより、電源の瞬時停電に起因する誤判断の確率を更に小さく出来る。
ＥＣＣ符号及び／又はＣＲＣ符号は、物理ブロック５０１の最後のページであるページ３１のデータ領域５０２にデータを書き込むのと同時に、冗長領域５０３に書き込む。それ以外の点においては、従来例のデータ書き換え方法と同一である。
図１１を用いて、管理情報Ａ’１３０２を有さない場合の不揮発性記憶装置１０１の初期化処理を説明する。最後のページのデータ領域と冗長領域とを読み出す（ステップ１１０１）。データとＥＣＣ符号及び／又はＣＲＣ符号とにより最後のページのデータに誤りがあるか否かを判断する（ステップ１１０２）。データとＥＣＣ符号及び／又はＣＲＣ符号とが整合すれば、物理ブロックは書き込み済みと判断し、ステップ４０５に進む。データとＥＣＣ符号及び／又はＣＲＣ符号とが整合しなければ、物理ブロックの書き込みが電源遮断等により途中で中断したと判断し、ステップ１１０３で物理ブロックを消去した後、ステップ４０４に進む。それ以外の点においては、管理情報Ａ’１３０２を有する上記の初期化処理と同一であるため、説明を省略する。
《実施の形態５》
図１４〜図１８を用いて、実施の形態５の不揮発性記憶装置の制御方法を説明する。実施の形態１〜４の不揮発性記憶装置の制御方法は、データの書き込み中に電源遮断が起こった場合に対処する方法であった。実施の形態５の不揮発性記憶装置の制御方法は、データの消去中に電源遮断が起こった場合に対処できる方法である。
従来例（図２５）のステップ６０４において旧物理ブロックを消去している最中に電源遮断が発生すると、その旧物理ブロックの消去が終了していない可能性がある。この状態で、電源再投入時に初期化処理を行うと、完全に消去していない旧物理ブロック（例えば最初のページの冗長領域が消去済みで、残りのデータは書き込み済みの物理ブロック）を誤って消去済みと判断し、消去済みテーブル１０５に登録する可能性がある。また、完全に消去していない旧物理ブロック（例えば最初のページの冗長領域は書き込み済みで、残りのデータが消去済みの物理ブロック）を誤って書き込み済みと判断し、論理アドレス／物理アドレス変換テーブル１０６に登録する可能性もある。
上記のような誤判断を防ぐため、実施の形態５の不揮発性記憶装置の制御方法は、データの消去中に電源遮断が起こった場合に対処できる方法を実現する。実施の形態５の不揮発性記憶装置１０１は、旧物理ブロックが消去済みか否かを判断するための消去予約テーブルを不揮発性メモリに有する。
図１４は、不揮発性メモリの構成を示す図である。不揮発性メモリ１０３は、管理領域１４１１とデータ記録領域１４１２とに区分される。データ記録領域１４１２は、データを書き込むための領域である。実施の形態５において、データ記録領域１４１２の物理ブロック５０１は、従来例の物理ブロック５０１（図２４）と同一である。管理領域１４１１は、不揮発性メモリ１０３の管理情報を記憶する領域で、管理領域１４１１の物理ブロック１４０１を消去予約テーブルに割り当てる。なお、管理領域１４１１とデータ記録領域１４１２とは、コントローラ１０４によって明確に区別できれば良く、管理領域１４１１を不揮発性メモリ１０３内の固定した物理ブロックに占有する必要はない。固定した物理ブロックによらず自由にその領域を変化させてもよい。
図１５は、消去予約テーブルの構成を示す図である。消去予約テーブル１５０１は、消去する物理ブロックの物理アドレス１５１１を登録する消去アドレス登録領域１５０２と、冗長領域１５０３とで構成される。冗長領域１５０３は、第３のフラグ１５１２を有する。第３のフラグ１５１２は、データ信頼性を高めるため、複数ビットデータで表す。実施の形態５において、第３のフラグは２ビットで構成され、論理値１１又は００で表す。第３のフラグ１５１２は、そのページの消去アドレス登録領域１５０２に書き込まれている物理アドレス１５１１が示す物理ブロックが消去済みか否かを表す。第３のフラグが「１１」の場合、物理ブロックは、未消去と判断し、第３のフラグが「００」の場合、物理ブロックは消去済みと判断する。消去予約テーブル１５０１は、物理ブロック１４０１で構成されているため、ページ０からページ３１を有し、物理アドレスを３２個分登録できる。実施の形態５において、物理アドレスの登録は、ページ０から昇順に行う。
図１６及び図１７を用いて、実施の形態５のデータの書き換え方法を説明する。図１６は実施の形態５の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図１６（実施の形態５）において、図２５（従来例）と同一ステップには同一符号を付している。図１７は、消去予約テーブルに物理アドレスと第３のフラグが書き込まれる状態を段階的に示す図である。図１７において、ページ０とページ１には既に物理アドレスが書き込まれており、且つ第３のフラグが「００」であるので、ページ０とページ１に登録された物理ブロックは消去済みである。今回ページ２を使用する。
実施の形態５のデータの書き換え方法（図１６）が従来例（図２５）と違うところは、ステップ１６０１と１６０２が追加された点である。ステップ１６０１以降について説明する。
物理ブロックのデータの書き込みが完了すると、無効データ（新しいデータを書き込むことによって、必要でなくなったデータ）を含む旧物理ブロックの物理アドレス１５１１を、消去予約テーブル１５０１の消去アドレス登録領域１５０２に登録する（ステップ１６０１、図１７（ｂ））。消去予約テーブルに登録することで、消去すべき物理ブロックであることを示す。その後、旧物理ブロックを消去する（ステップ６０４）。
旧物理ブロックの物理アドレス１５１１を登録した消去予約テーブルのページ２の冗長領域１５０３の第３のフラグ１５１２に固定値（実施の形態では００）を書き込む（ステップ１６０２、図１７（ｃ））。第３のフラグに固定値を書き込むことで、登録した旧物理ブロックの消去が完了したことを示す。
消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ６０５）。具体的には、消去済みテーブル１０５に、ステップ６０１で確保した物理ブロックに対応するビットに０（書き込み済み）を書き込む。ステップ６０４で消去した旧物理ブロックに対応するビットに１（消去済み）を書き込む。論理アドレス／物理アドレス変換テーブル１０６の論理アドレスに対応する物理アドレスを、旧物理ブロックから書き込みを行った物理ブロックを示すように更新する。
実施の形態５の不揮発性記憶装置１０１は、図４に示す初期化処理を行った後に、図１８に示す初期化処理を行う。図４においては、従来例と同一であるため、説明を省略する。図１８について説明する。
不揮発性メモリ１０３の管理領域１４１１に有する消去予約テーブル１５０１を読み出す（ステップ１８０１）。消去済みでない物理ブロックが有るか否か判断する（ステップ１８０２）。消去予約テーブル１５０１の消去アドレス登録領域１５０２に物理アドレス１５１１が登録されていない、又は全ての登録済みの物理アドレス１５１１に対応する第３のフラグ１５１２に固定値（００）が書き込まれていれば、消去済みでない物理ブロックは無いと判断し、初期化処理を終了する。
消去予約テーブル１５０１に物理アドレス１５１１が登録されているが、第３のフラグ１５１２が書き込まれていない（１１）場合、電源遮断等により消去が途中で終わっていると判断し、登録されている物理ブロックを消去する（ステップ１８０３）。消去予約テーブル１５０１の消去した物理ブロックに対応する第３のフラグ１５１２に固定値を書き込む（ステップ１８０４）。
消去中の電源遮断等の異常により、作成済みのテーブルに誤りのある可能性があるので、消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を修正する（ステップ１８０５）。具体的には、消去済みテーブル１０５に消去した物理ブロックを登録する。論理アドレス／物理アドレス変換テーブル１０６に消去した物理ブロックがあれば、登録を削除する。ステップ１８０２に戻り、消去予約テーブルに登録された物理ブロックが全て消去されるまで処理を繰り返す。
本発明の実施の形態５の不揮発性記憶装置の制御方法によれば、消去予約テーブル１５０１に物理アドレス１５１１と第３のフラグ１５１２とを書き込むことにより、物理ブロック５０１の消去が完了しているか否かを確実に検知できる。物理ブロックの消去が電源遮断等によって途中で中断した場合であっても、次回起動時に、消去予約テーブル１５０１に基づいて消去済みでない物理ブロックを完全に消去し、消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６の両方を正しく生成することができる。これにより、消去済みでない物理ブロックに誤ってデータを書くことを防ぐことができる。
なお、データ消去中の電源遮断に対応する実施の形態５の不揮発性記憶装置の制御方法と、データ書き込み中の電源遮断に対応する実施の形態１〜４のいずれかの不揮発性記憶装置の制御方法と、を組み合わせても良い。これにより、更に信頼性の高い消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を生成することができる。
なお、実施の形態５の消去予約テーブル１５０１はデータの書き換え時の旧物理ブロックの消去のみに限られず、ホスト１０２からの消去指令に基づいて物理ブロックを消去する場合にも使用できる。
《実施の形態６》
図１９〜２１を用いて、実施の形態６の不揮発性記憶装置の制御方法を説明する。実施の形態６の不揮発性記憶装置の制御方法は、データの消去中に電源遮断が起こった場合に対処できる方法である。
実施の形態６の不揮発性記憶装置の制御方法が、実施の形態５と異なる点について説明する。実施の形態５の制御方法は、消去する物理ブロックの物理アドレス１５１１とその物理ブロックが消去済みか否かを示す第３のフラグ１５１２とを不揮発性メモリ１０３の管理領域１４１１に有する消去予約テーブル１５０１に登録した。実施の形態５の制御方法はデータ記録領域１４１２の物理ブロック５０１に対するデータ書き込みとは別ステップで、物理アドレス１５１１を消去予約テーブル１５０１に登録するため、消去予約テーブル１５０１の書き込みに要する時間が長いという欠点があった。
実施の形態６では、処理時間の短い制御方法を実現する。図１９は、実施の形態６の物理ブロックの構成を示す図である。実施の形態６の物理ブロック５０１は、所定のページ（実施の形態６において、先頭ページ）の冗長領域５０３に、旧物理ブロックの物理アドレス（「旧物理アドレス」と呼ぶ。）１９１１と旧物理ブロックが消去済みか否かを示す第３のフラグ１５１２とを有する。実施の形態６の旧物理アドレス１９１１の登録領域は２バイトで構成される。
第３のフラグ１５１２は、実施の形態５の第３のフラグと同様で、データ信頼性を高めるため、複数ビットデータで表す。実施の形態６において、第３のフラグは２ビットで構成され、論理値１１又は００で表す。第３のフラグ１５１２は、旧物理アドレス１９１１が示す物理ブロックが消去済みか否かを表す。第３のフラグが「１１」の場合、旧物理アドレス１９１１が示す物理ブロックは未消去と判断し、第３のフラグが「００」の場合は消去済みと判断する。
実施の形態６において、不揮発性メモリ１０３は消去予約テーブル１５０１を持たず、データ書き込み先の物理ブロック５０１の冗長領域５０３を使用して、旧物理ブロックが消去済みか否かを登録する。
図２０を用いて、実施の形態６のデータの書き換え方法を説明する。図２０は実施の形態６の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図２０において、従来例の図２５と同一ステップには同一符号を付している。
ホスト１０２からデータの書き込み指令を受信すると、不揮発性記憶装置１０１のコントローラ１０４は、消去済みテーブル１０５から消去済み物理ブロックを検出し、書き込み先の物理ブロック（「新物理ブロック」と呼ぶ。）として確保する（ステップ６０１）。
新物理ブロックにデータを書き込むと同時に、無効データ（新しいデータを書き込むことによって、必要でなくなったデータ）を含む旧物理ブロックの物理アドレス１９１１と旧物理ブロックに対応する第３のフラグ１５１２（値は未消去であることを示す１１）とを、新物理ブロックの先頭ページの冗長領域５０３に書き込む（ステップ２００１）。
旧物理ブロックを消去する（ステップ６０４）。新物理ブロックの先頭ページの冗長領域５０３に有する第３のフラグに固定値（実施の形態では消去済みであることを示す００）を書き込む（ステップ２００２）。第３のフラグ１５１２に固定値を書き込むことで、旧物理ブロックが消去されたことを示す。消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ６０５）。
図２１を用いて、実施の形態６の不揮発性記憶装置１０１の初期化処理を説明する。実施の形態６の不揮発性記憶装置１０１は、初期化処理時に、第３のフラグ１５１２に基づいて無効テーブルをＲＡＭ上に生成する。無効テーブルは、電源遮断等によりデータの消去が中断した不正な旧物理ブロックの物理アドレスと、旧物理ブロックが消去済みか否かを登録している新物理ブロックの物理アドレスとを登録するためのテーブルである。図２１は実施の形態６の不揮発性記憶装置１０１の初期化処理のフローチャートである。図２１において、従来例の図４と同一ステップには同一符号を付し、説明を省略する。ステップ２１０１〜２１０７について説明する。
ステップ４０１〜４０６において書き込み済みと判断された物理ブロック５０１に対して、ステップ４０２で読み出された先頭ページの冗長領域５０３に基づいて、第３のフラグ１５１２が未書き込み（＝１１）の旧物理ブロックが有るか否か判断する（ステップ２１０１）。旧物理アドレス１９１１が登録されていない、又は第３のフラグ１５１２が書き込み済み（＝００）であれば、ステップ４０７に進む。
旧物理アドレス１９１１は登録されているが、第３のフラグ１５１２が未書き込みであれば、消去処理中に電源遮断等の異常が発生し、旧物理ブロックの消去が完了していないと判断する。ＲＡＭ上に作成された無効テーブルに新物理ブロック（冗長領域５０３に旧物理ブロックの物理アドレス１９１１が書き込まれている物理ブロック）の物理アドレスと、旧物理ブロックの物理アドレスとを登録し（ステップ２１０２）、ステップ４０７に進む。
現在の物理ブロックが最終物理ブロックであるか否かを判断する（ステップ４０７）。最終物理ブロックでなければ、ブロックカウンタに１を加算し（ステップ４０８）、ステップ４０２に戻る。最終物理ブロックであれば、ＲＡＭ上に生成した無効テーブルに新物理ブロックと旧物理ブロックのアドレスが書き込まれているか否か判断する（ステップ２１０３）。無効テーブルが空であれば、初期化処理を終了する。無効テーブルにアドレスが登録されていれば、その旧物理ブロックを消去する（ステップ２１０４）。消去した旧物理ブロックの物理アドレスが書き込まれている新物理ブロックの第３のフラグに固定値を書き込む（ステップ２１０５）。第３のフラグに固定値を書き込むことで、旧物理ブロックを完全に消去したことを示す。ＲＡＭ上の無効テーブルを更新する（ステップ２１０６）。具体的には、新物理ブロックと旧物理ブロックのアドレスを無効テーブルから削除して、未消去の旧物理ブロックがないことを示す。
消去中の電源遮断等の異常により、作成済みのテーブルに誤りのある可能性があるので、消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ２１０７）。具体的には、消去済みテーブル１０５に消去した旧物理ブロックを登録する。論理アドレス／物理アドレス変換テーブル１０６に消去した旧物理ブロックがあれば、登録を削除する。
実施の形態６の不揮発性記憶装置の制御方法は、消去予約テーブル１５０１を設けるための専用の領域を不揮発性メモリ１０３の管理領域１４１１に確保する必要がない。データ記録領域１４１２の物理ブロック５０１に対してデータを書き込むと同時に、その先頭ページに旧物理ブロックのアドレス１９１１を登録するため、実施の形態５と比較して処理時間が短い。但し、実施の形態６の制御方法は、消去する旧物理ブロックの物理アドレス１９１１を新物理ブロック５０１の冗長領域５０３に登録するため、データの書き換え時にのみ使用でき、ホスト１０２からの消去指令に基づいて物理ブロックを消去する場合には、使用できない。
実施の形態６の不揮発性記憶装置１０１は、旧物理ブロックの消去と平行して、次に実行する書き込みデータを不揮発性メモリ１０３に転送することにより、データの書き換えにかかる時間を短縮することができる。
なお、旧物理ブロックの物理アドレス１９１１及び第３のフラグ１５１２の登録は、新物理ブロック５０１の先頭ページに限定されない。新物理ブロックの先頭ページ以外の冗長領域５０３に登録しても良い。この場合、初期化処理において、図２１のステップ４０６とステップ２１０１との間に、旧物理アドレス１９１１と第３のフラグ１５１２とを有するページの冗長領域を読み出すステップを追加すれば良い。
なお、データ消去中の電源遮断に対応する実施の形態６の不揮発性記憶装置の制御方法と、データ書き込み中の電源遮断に対応する実施の形態１〜４のいずれかの不揮発性記憶装置の制御方法と、を組み合わせても良い。これにより、更に信頼性の高い消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を生成することができる。
《実施の形態７》
図２２を用いて、実施の形態７の不揮発性記憶装置の制御方法を説明する。実施の形態１〜６において、データの書き込み中又はデータの消去中に電源遮断等が起こり処理が中断した場合であっても、第１のフラグ、第２のフラグ、第３のフラグ又は相補データを用いて、次回起動時にそのことを検知し、消去済みテーブル１０５及び／又は論理アドレス／物理アドレス変換テーブル１０６を正確に生成できる不揮発性記憶装置の制御方法について説明した。
実施の形態７の不揮発性記憶装置の制御方法においては、上記第１〜第３のフラグ及び相補データを有さない、従来の物理ブロックと同じ構成であっても、正確にデータを書き込むことができる方法を実現する。実施の形態７において、物理ブロックは第１〜第３のフラグ及び相補データを有さず、従来例と同一の方法で初期化処理を行うため、電源遮断等により処理が中断されたことを検知することはできない。例えば、電源遮断等により、消去が完了していない不正な物理ブロックを誤って消去済みと判断し、消去済みテーブル１０５に登録する場合がある（図４、ステップ４０４）。
そこで、実施の形態７においては、図２２の方法を用いてデータの書き換えを行う。図２２は実施の形態７の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図２２において、図２５と同一ステップには同一符号を付し、説明を省略する。実施の形態７のデータの書き換え方法（図２２）が、従来例（図２５）と違うところは、ステップ２２０２が追加された点である。
ホスト１０２からデータの書き込み指令を受信すると、不揮発性記憶装置１０１のコントローラ１０４は、消去済みテーブル１０５から消去済み物理ブロックを検出し、書き込み先の物理ブロックとして確保する（ステップ６０１）。しかし、その書き込み先物理ブロックは書き込み中又は消去中の電源遮断等の異常により、実際には消去済みでないのに、初期化処理において間違って消去済みテーブルに登録されている可能性がある。そのため、確保した書き込み先物理ブロックを一旦消去し、確実に消去済みの状態にする（ステップ２２０２）。その後、物理ブロックにデータを書き込む（ステップ６０３）。
実施の形態７の制御方法は、初期化処理で消去済みでない物理ブロックを誤って消去済みと判断し、消去済みテーブル１０５に登録した場合であっても、データの書き込み前に一旦物理ブロックを消去することによりホスト１０２からの書き込み指令を正しく処理することができる。
なお、実施の形態７の不揮発性記憶装置の制御方法を実施の形態１〜６と組み合わせても良い。これにより、書き込み時間及び読み出し時間等の処理時間は多くなるが、消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を正確に生成でき、且つ確実に消去済みの物理ブロックにデータを書き込むことができる。
《実施の形態８》
図２３を用いて、実施の形態８の不揮発性記憶装置の制御方法を説明する。実施の形態８は、実施の形態７と同様に、物理ブロックが第１〜第３のフラグ及び相補データを有さない、従来の物理ブロックと同じ構成であっても、正しくデータの書き換えをすることができる方法である。
図２３は、実施の形態８の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図２３において、図２２と同一のステップには同一の符号を付し、説明を省略する。実施の形態８のデータの書き換え方法（図２３）が、実施の形態７（図２２）と違うところは、ステップ２３０２及びステップ２３０３が追加されたことである。それ以外の点において、実施の形態７と同一である。
実施の形態７では、データの書き込み前にすべての物理ブロックを一旦消去した。しかし、不揮発性メモリ１０３の物理ブロックの消去に要する時間は、物理ブロックの１ページの読み出しに要する時間よりもはるかに長い。そこで、実施の形態８においては、書き込み先物理ブロックの管理情報を有する先頭ページのデータを読み出す（ステップ２３０２）。物理ブロックが消去済みでない場合、先頭ページの冗長領域に、その物理ブロックの管理情報（例えばデータ領域に書き込まれたデータの相補データ、ＥＣＣ符号及び／又はＣＲＣ符号、その物理ブロックに対応する論理アドレス等の情報）が書き込まれている。先頭ページを読み出し、管理情報が全て１か、又は０を含むかを検出すれば、物理ブロックが消去済みか否か判断することができる。
先頭ページが消去済みか否か判断し（ステップ２３０３）、先頭ページが消去済みでなければ、電源遮断等により物理ブロックの消去が完了していないと判断し、物理ブロックを消去する（ステップ２２０２）。先頭ページが消去済みであれば、ステップ２２０２を実行せずにステップ６０３に進む。
実施の形態８の制御方法は、初期化処理で消去済みでない物理ブロックを誤って消去済みと判断し、消去済みテーブル１０５に登録した場合であっても、ホスト１０２からの書き込み指令を正しく処理することができる。
実施の形態８では、物理ブロックの先頭ページを読み出して消去済みか否か判断し、未消去の物理ブロックのみを消去することにより、実施の形態７よりデータの書き換えに要する時間を短縮することができる。
なお、実施の形態８の不揮発性記憶装置の制御方法を実施の形態１〜６と組み合わせも良い。不揮発性メモリ１０３に不正な状態の物理ブロックが存在した場合、実施の形態を組み合わせて使用することにより、データの書き込みの正確性が向上する。消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を正確に生成でき、且つ確実に消去済みの物理ブロックにデータを書き込むことができる。
本発明は、データの書き込み中又は消去中に電源遮断等の異常が発生し処理が中断した場合であっても、次回起動後のデータ書き込みを正常に行える不揮発性記憶装置の制御方法を実現できるという有利な効果が得られる。これにより、正確に不揮発性メモリにアクセスでき、高いデータ信頼性を有する不揮発性記憶装置の制御方法を実現できる。
発明をある程度の詳細さをもって好適な形態について説明したが、この好適形態の現開示内容は構成の細部において変化してしかるべきものであり、各要素の組合せや順序の変化は請求された発明の範囲及び思想を逸脱することなく実現し得るものである。
【産業上の利用可能性】  本発明は、例えば携帯機器に接続使用する不揮発性記憶装置（例えばメモリカード）の制御方法として有用である。
【図１】
2004031966.tif 000003
【図２】
2004031966.tif 000004
【図３】
2004031966.tif 000005
【図４】
2004031966.tif 000006
【図５】
2004031966.tif 000007
【図６】
2004031966.tif 000008
【図７】
2004031966.tif 000009
【図８】
2004031966.tif 000010
【図９】
2004031966.tif 000011
【図１０】
2004031966.tif 000012
【図１１】
2004031966.tif 000013
【図１２】
2004031966.tif 000014
【図１３】
2004031966.tif 000015
【図１４】
2004031966.tif 000016
【図１５】
2004031966.tif 000017
【図１６】
2004031966.tif 000018
【図１７】
2004031966.tif 000019
【図１８】
2004031966.tif 000020
【図１９】
2004031966.tif 000021
【図２０】
2004031966.tif 000022
【図２１】
2004031966.tif 000023
【図２２】
2004031966.tif 000024
【図２３】
2004031966.tif 000025
【図２４】
2004031966.tif 000026
【図２５】
2004031966.tif 000027
【手続補正書】
【提出日】平成16年5月25日(2004.5.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
不揮発性メモリのデータの消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、
前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の、先頭ページの前記冗長領域に設けられその先頭ページにデータが書き込まれているか否かを示す第１のフラグに、データが書き込まれていることを示す固定値を書き込む第１のフラグ書き込みステップと、
その物理ブロックにデータを書き込むデータ書き込みステップと、
を有することを特徴とする不揮発性記憶装置の制御方法。
【請求項２】
不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの前記第１のフラグを読み出して、前記第１のフラグが書き込み済みか否かに基づいて、論理アドレス／物理アドレス変換テーブルと消去済みテーブルとを生成する初期化ステップを更に有することを特徴とする請求項１に記載の不揮発性記憶装置の制御方法。  
【請求項３】
不揮発性メモリの論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルを用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、
前記物理ブロックにデータを書き込むデータ書き込みステップと、
前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の所定のページの冗長領域に設けられその物理ブロックにデータが書き込まれているか否かを示す第２のフラグに、その物理ブロックにデータが書き込まれていることを示す固定値を書き込む第２のフラグ書き込みステップと、
を有することを特徴とする不揮発性記憶装置の制御方法。
【請求項４】
前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの前記第２のフラグを読み出して、前記第２のフラグが書き込み済みか否かに基づいて、論理アドレス／物理アドレス変換テーブルを生成する初期化ステップを更に有することを特徴とする請求項３に記載の不揮発性記憶装置の制御方法。
【請求項５】
不揮発性メモリのデータの消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、
前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の先頭ページの前記冗長領域に設けられその先頭ページにデータが書き込まれているか否かを示す第１のフラグに、データが書き込まれていることを示す固定値を書き込む第１のフラグ書き込みステップと、
その物理ブロックにデータを書き込むデータ書き込みステップと、
前記物理ブロックの所定のページの冗長領域に設けられその物理ブロックにデータが書き込まれているか否かを示す第２のフラグに、その物理ブロックにデータが書き込まれていることを示す固定値を書き込む第２のフラグ書き込みステップと、
を有することを特徴とする不揮発性記憶装置の制御方法。
【請求項６】
前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの前記第１のフラグ及び前記第２のフラグを読み出して、前記第１のフラグ及び前記第２のフラグが書き込み済みか否かに基づいて、論理アドレス／物理アドレス変換テーブルと消去済みテーブルとを生成する初期化ステップを更に有することを特徴とする請求項５に記載の不揮発性記憶装置の制御方法。
【請求項７】
物理ブロックにデータを書き込む時、最後のページのデータのＥＣＣ符号及び／又はＣＲＣ符号を、又はそれらと更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データとをその最後のページの冗長領域に書き込む書き込みステップと、
前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの最後のページからデータとそのデータのＥＣＣ符号及び／又はＣＲＣ符号を読み出して、又はそれらと更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データとを読み出して、誤り検出を行い、誤りの有無に基づいて、論理アドレス／物理アドレス変換テーブルを生成する初期化ステップを更に有することを特徴とする請求項１に記載の不揮発性記憶装置の制御方法。
【請求項８】
前記物理ブロックの最後のページの、単独で別個に書き込み可能なデータを書き込むための領域を除く領域の全てのアドレスにデータを書き込み、その領域をデータと前記データのＥＣＣ符号及び／又はＣＲＣ符号とで埋め尽くし、又はそれらに更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データを加えて埋め尽くす最後のページ書き込みステップを更に有することを特徴とする請求項１に記載の不揮発性記憶装置の制御方法。
【請求項９】
前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの最後のページの前記データと、前記データのＥＣＣ符号及び／又はＣＲＣ符号とを読み出して、又はそれらと更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データとを読み出して、誤り検出を行い、誤りの有無に基づいて、論理アドレス／物理アドレス変換テーブルを生成する初期化ステップを更に有することを特徴とする請求項８に記載の不揮発性記憶装置の制御方法。
【請求項１０】
不揮発性メモリのデータの消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、
管理領域とデータ記録領域とを有する前記不揮発性メモリの前記管理領域に設けられ、無効データを有する物理ブロック（以下、「旧物理ブロック」と呼ぶ。）の物理アドレスと、前記旧物理ブロックの無効データが消去済みか否かを示す第３のフラグとを有する無効テーブルに、旧物理ブロックの物理アドレスを登録する物理アドレス登録ステップと、
前記旧物理ブロックの無効データを消去する無効データ消去ステップと、
前記旧物理ブロックの物理アドレスに対応する前記第３のフラグに前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、
を有することを特徴とする不揮発性記憶装置の制御方法。
【請求項１１】
前記不揮発性記憶装置の起動時に、前記管理領域の前記無効テーブルを読み出して、前記第３のフラグが書き込み済みでない前記旧物理ブロックの無効データを消去する無効データ消去ステップと、
前記旧物理ブロックの物理アドレスに対応する前記第３のフラグに、前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、
を更に有することを特徴とする請求項１０に記載の不揮発性記憶装置の制御方法。
【請求項１２】
不揮発性メモリのデータの消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、
前記物理ブロックにデータを書き込む時に、前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の所定のページの前記冗長領域に、無効データを有する旧物理ブロックの物理アドレスを登録する物理アドレス登録ステップと、
前記旧物理ブロックの無効データを消去する無効データ消去ステップと、
前記旧物理ブロックの物理アドレスが登録された前記冗長領域に設けられ、その旧物理ブロックの無効データが消去済みか否かを示す第３のフラグに、前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、
を有することを特徴とする不揮発性記憶装置の制御方法。
【請求項１３】
前記不揮発性記憶装置の起動時に、前記物理ブロックの冗長領域の前記第３のフラグを読み出して、前記第３のフラグが書き込み済みでない前記旧物理ブロックの無効データを消去する無効データ消去ステップと、
前記第３のフラグに、前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、
を更に有することを特徴とする請求項１２に記載の不揮発性記憶装置の制御方法。
【請求項１４】
不揮発性メモリのデータの消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、
データの書き込みを実行する前記物理ブロックを決定した後、前記物理ブロックにデータを書き込む前に、必ず前記物理ブロックに書き込まれているデータを消去する旧データ消去ステップと、
を有することを特徴とする不揮発性記憶装置の制御方法。
【請求項１５】
不揮発性メモリのデータの消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、
前記物理ブロックにデータを書き込む前に、前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の先頭ページを読み出して、前記先頭ページが消去済みか否かを判断し、消去済みでなければ前記物理ブロックに書き込まれているデータを消去する旧データ消去ステップと、
を有することを特徴とする不揮発性記憶装置の制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性記憶装置の制御方法に関する。
【背景技術】
【０００２】
近年、音楽データや映像データを取り扱う携帯機器の記憶装置として、データの書き換えが可能で、携帯性が高く、電池等によるバックアップが不要であるフラッシュメモリ等の不揮発性メモリを備えた不揮発性記憶装置（例えば、メモリカード）が使われるようになってきた。
【０００３】
図１〜４、図２４及び図２５を用いて、従来の不揮発性記憶装置の制御方法を説明する。図１は不揮発性記憶装置の構成を示すブロック図である。図１において、１０１は不揮発性記憶装置、１０２はホストである。不揮発性記憶装置１０１は、不揮発性メモリ１０３、コントローラ１０４、消去済みテーブル１０５、論理アドレス／物理アドレス変換テーブル１０６を有する。不揮発性メモリ１０３はフラッシュメモリである。ホスト１０２は不揮発性記憶装置１０１にデータの書き込み及び読み出し等を指令し、書き込むデータを伝送し、不揮発性記憶装置１０１から送られた読み出しデータを受け取る。不揮発性記憶装置１０１のコントローラ１０４は、ホスト１０２からの指令に基づいて、不揮発性メモリ１０３にデータを書き込むこと又は不揮発性メモリ１０３のデータを読み出すこと等の制御をする。
【０００４】
不揮発性メモリ１０３は複数の物理ブロックで構成される。図２４を用いて、物理ブロックの構成を説明する。図２４は従来例の不揮発性メモリ１０３の物理ブロックの構成を示す図である。物理ブロック５０１は、３２ページで構成される。１ページの容量は５２８バイトであり、５１２バイトのデータ領域５０２と１６バイトの冗長領域５０３とに区分される。データ領域５０２はホスト１０２から伝送されるデータを書き込む領域である。冗長領域５０３はデータ領域５０２のＥＣＣ符号及びその物理ブロック５０１に対応する論理アドレス等の管理情報を書き込む領域である。１ページはデータの書き込み単位、読み出し単位である。データの書き込み時には、物理ブロックのページ０からページ３１まで順にページ単位でデータを書き込む。消去済みのメモリに１を書き込む動作は、省略することができる。物理ブロック５０１はデータの消去単位であり、消去時には物理ブロックに含まれる３２ページ全てを一度に消去する。不揮発性メモリ１０３のデータは、消去済みの状態において全てのビットが１である。
不揮発性記憶装置１０１の電源投入後、コントローラ１０４は消去済みテーブル１０５と論理アドレス／物理アドレス変換テーブル１０６とをＲＡＭに生成する初期化処理を行う。
【０００５】
図２は消去済みテーブル１０５の構成を示す図である。消去済みテーブル１０５は、物理ブロックが消去済み（未書き込み）か否かを示すテーブルであって、各物理ブロックに１ビットのデータが対応付けられている。図２において、左欄が物理アドレス（不揮発性メモリ１０３の物理ブロックのアドレスを「物理アドレス」と呼ぶ。）であり、右欄が、１が「消去済み」を示し、０が「消去済みでないこと」を示すデータである。左欄の物理アドレスは説明のために記載したものであって、通常ＲＡＭに書き込まれない。通常、物理アドレスを所定の変換式でＲＡＭのアドレスに変換し、そのＲＡＭアドレスに消去済み（未書き込み）か否かを示すビットを書き込む。
【０００６】
例えば初期化処理時、物理アドレス０の物理ブロックの先頭ページの冗長領域５０３に値０のビットを含むデータが書き込まれている場合（先頭ページの冗長領域５０３の全ビットが１である場合以外の場合）、書き込み済みと判断して、物理アドレス０のデータに０を書き込む。物理アドレス１の物理ブロックの先頭ページの冗長領域５０３が全て１のデータである場合、消去済みと判断して、物理アドレス１のデータに１を書き込む。このようにして、最終物理アドレスまでの消去済みテーブル１０５を完成させる。
【０００７】
図３は論理アドレス／物理アドレス変換テーブル１０６の構成を示す図である。不揮発性メモリ１０３を用いた不揮発性記憶装置１０１において、ホスト１０２から指定されるアドレス（「論理アドレス」と呼ぶ。）と、不揮発性メモリ１０３内に配置されるアドレス（「物理アドレス」と呼ぶ。）は一般的に一致しない。一致させると、不揮発性メモリ内で不良が発生した物理アドレスを使用できないこと又はデータの書き換えに時間がかかること等によりアプリケーションに負担がかかるからである。又、特定アドレスに書き込みが頻発するシステムでは、その物理アドレスが短期間で書き換え保証回数（一般に不揮発性メモリの書き換え保証回数は制限される。）を上回り短寿命になってしまう、という不都合が生じるからである。不揮発性記憶装置１０１のコントローラ１０４は、ホスト１０２が指定した論理アドレスを物理アドレスに変換し、物理ブロックのデータ記録時に、冗長領域５０３にその物理アドレスに対応する論理アドレスを書き込む。一般的に先頭ページの冗長領域５０３に論理アドレスを書き込む。
【０００８】
不揮発性記憶装置１０１の電源投入後、コントローラ１０４は物理ブロックの冗長領域５０３に書き込まれている論理アドレスを読み出して、ＲＡＭ上に論理アドレス／物理アドレス変換テーブル１０６を生成する。例えば物理アドレス０の物理ブロックの先頭ページにデータが有り、論理アドレスとして２が書き込まれている場合、論理アドレス／物理アドレス変換テーブル１０６の論理アドレス２に対応する物理アドレスに０を書き込む。物理アドレス２の物理ブロックの先頭ページにデータが有り、論理アドレスとして９９９が書き込まれている場合、論理アドレス／物理アドレス変換テーブル１０６の論理アドレス９９９に対応する物理アドレスに２を書き込む。対応する論理アドレスのデータが不揮発性メモリ１０３の中にない場合、例えば論理アドレスとして１が書き込まれた物理ブロックがない場合、論理アドレス／物理アドレス変換テーブル１０６の論理アドレス１に対応する物理アドレスに、データが存在しないことを示す値である１０００を書き込む。
【０００９】
図４は従来の不揮発性記憶装置１０１の初期化処理のフローチャートである。ブロックカウンタに０（初期値）を設定する（ステップ４０１）。コントローラ１０４は、不揮発性メモリ１０３の読み出し対象である物理ブロックの先頭ページの冗長領域５０３を読み出す（ステップ４０２）。冗長領域５０３が消去済みか否か判断する（ステップ４０３）。冗長領域５０３が全て１のデータである場合は消去済み、値０のビットを含むデータが書き込まれている場合は書き込み済みと判断する。冗長領域５０３が消去済みであれば、消去済みテーブル１０５のその物理ブロック欄に１を書き込み、物理ブロックが消去済みであると登録する（ステップ４０４）。冗長領域５０３が消去済みでなければ、消去済みテーブル１０５のその物理ブロック欄に０（消去済みでない）を書き込む（ステップ４０５）。冗長領域５０３が消去済みでなければ、更に冗長領域５０３に書き込まれている論理アドレスを読み出して、論理アドレス／物理アドレス変換テーブル１０６のその論理アドレスに対応する位置に物理アドレスを登録する（ステップ４０６）。最終物理ブロックであるか否か判断する（ステップ４０７）。最終物理ブロックでなければ、ブロックカウンタに１を加算し（ステップ４０８）、ステップ４０２に戻り処理を繰り返す。最終物理ブロックであれば、初期化を終了する。
【００１０】
不揮発性メモリ１０３のデータ書き換え方法を説明する。ホスト１０２が不揮発性記憶装置１０１にデータの書き込みを指令すると、コントローラ１０４は不揮発性メモリ１０３にホスト１０２から伝送されたデータを書き込む。図２５は、従来例の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。コントローラ１０４は、消去済みテーブル１０５から消去済み物理ブロックを検出し、書き込み先の物理ブロックとして確保する（ステップ６０１）。確保した物理ブロックにデータをページ単位で書き込む（ステップ６０３）。無効データ（新しいデータを書き込むことによって、必要でなくなったデータ）を含む物理ブロック（旧物理ブロック）を消去する（ステップ６０４）。旧物理ブロックをその場で直ちに消去しても良く、一旦、そのデータが無効であるか否かを示すフラグを無効を示す値にセットしておき、別タイミングで消去しても良い。消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ６０５）。具体的には、消去済みテーブル１０５に、書き込みを行った物理ブロックに対応するビットに０（書き込み済み）を書き込む。旧物理ブロック（無効データを含む物理ブロック）を消去後、旧物理ブロックに対応するビットに１（消去済み）を書き込む。論理アドレス／物理アドレス変換テーブル１０６の論理アドレスに対応する物理アドレスを、旧物理ブロックから書き込みを行った新物理ブロックに更新する。
ステップ６０３でデータの書き込み中に電源遮断等の異常が発生した場合、書き込み途中の物理ブロックのデータが不正なデータになるおそれがある。
【００１１】
特開２００１−５１８８３号公報に、電源遮断の異常等により書き込み途中で処理を終了した場合、次回起動時に自動的に書き込み前の状態に復元する自己修復機能を備えた不揮発性メモリを有する従来例１の不揮発性記憶装置が記載されている。従来例１の不揮発性記憶装置は、メモリ外に、書き込み中フラグ、アドレスバッファ及びデータバッファを有する。データ書き込み中には、書き込み中フラグを有効状態にし、それ以外の時には書き込み中フラグを無効状態にする。起動時に書き込み中フラグが有効状態であれば、データバッファの内容をアドレスバッファが示すメモリ領域に書き込む。又、これにより、起動時に、異常な書き込み前の状態に復元できる。
【００１２】
【特許文献１】特開２００１−５１８８３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
従来例の不揮発性記憶装置において、ステップ６０３で物理ブロックの先頭ページにデータを書き込んでいる時に電源遮断等の異常が発生した場合、データ領域５０２のみにデータが一部書き込まれており、冗長領域５０３は消去済み（未書き込み）という状態があり得る。この状態で初期化処理を行うと、先頭ページの冗長領域５０３のデータをもとに消去済みテーブル１０５を生成するので、この物理ブロックを消去済みと誤判定することになる。
【００１４】
ステップ６０４で旧物理ブロックの消去中に電源遮断等の異常が発生した場合、旧物理ブロックの先頭ページは消去済みで、他のページは消去されていない状態があり得る。この状態で初期化処理を行うと、この旧物理ブロックを消去済みと誤判定することになる。
このように消去済みでない物理ブロックを消去済みと誤判定すると、その後データの書き込みが発生した場合に、消去済みと誤判定された物理ブロックにデータを書き込むことになる。不揮発性メモリは書き込み済みの物理ブロックにデータを上書きすることができない（ページ単位で、０のビットに１を書き込むことはできない。）ため、正しく書き込むことができず不正データとなるという問題があった。
【００１５】
また、書き込み中断又は消去中断により、物理ブロックの先頭ページの冗長領域は書き込み済みで、他のページは書き込み済みでないという状態があり得る。この状態で初期化処理を行うと、先頭ページの冗長領域に書き込まれた論理アドレスを読み出して、論理アドレス／物理アドレス変換テーブル１０６に登録してしまう。書き込み途中又は消去途中の物理ブロックを書き込み済みの有効な物理ブロックと誤判定してしまう。物理ブロックの先頭ページの冗長領域５０３には不揮発性メモリ１０３の管理データが書き込まれていることが多く、初期化処理において誤ったテーブルを生成すると、不揮発性メモリ１０３に対してアクセスできなくなるおそれがある。
【００１６】
従来例１の不揮発性記憶装置は、データを書き込む前に必ず、多くのバッファ（書き込み中フラグ、アドレスバッファ（論理アドレスバッファ、旧物理アドレスバッファ、新物理アドレスバッファ）及びデータバッファ）にデータを書き込む必要が有る故に、不揮発性記憶装置の処理が遅くなる恐れがある。
【００１７】
本発明は、データの書き込み中又は消去中に電源遮断等の異常が発生し処理が中断した場合であっても、次回起動後のデータ書き込みを正常に行える不揮発性記憶装置の制御方法を提供することを目的とする。これにより、正確に不揮発性メモリにアクセスでき、高いデータ信頼性を有する不揮発性記憶装置の制御方法を提供できる。
【課題を解決するための手段】
【００１８】
上記課題を解決するため、本発明は下記の構成を有する。
本発明の１つの観点による不揮発性記憶装置の制御方法は、不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の、先頭ページの前記冗長領域に設けられその先頭ページにデータが書き込まれているか否かを示す第１のフラグに、データが書き込まれていることを示す固定値を書き込む第１のフラグ書き込みステップと、その物理ブロックにデータを書き込むデータ書き込みステップと、を有する。
【００１９】
従来の不揮発性記憶装置の制御方法においては、例えば３２ページからなる物理ブロックにデータを書き込む場合、１ページを単位とする３２回の書き込みステップでデータを書き込んだ。しかし、書き込みの途中で電源が遮断された場合、データの書き込みが完了していない不正な物理ブロックが存在する。このような突然の電源遮断も考慮して、１つの物理ブロックが消去済みであるか否かを確実に知ろうとすれば、３２ページの全ビットを調べ、全ビットが１であるか又は０のビットが含まれるかを調べなければならなかった。
【００２０】
第１ページ目に第１のフラグを割り付け、第１ページ目のデータを第１のフラグと一緒に書き込むことも考えられる。しかし、第１ページ目の書き込み途中に電源が遮断された場合、第１ページ目のデータ領域にはデータが正常に書き込まれ、第１のフラグは書き込まれない状態（０を記録しようとしたが、そのビットの値は１のままである状態）が発生し得る。従って、このような方法でも１つの物理ブロックが真に消去済みであるか否かを判断することは困難である。
【００２１】
本発明においては、最初に、固定値（実施の形態では００）の第１のフラグのみを単独で書き込み、その後通常のデータを３２ページに書き込む。従って、一旦書き込みを開始したならば、書き込み途中に電源が遮断したとしても、第１のフラグは確実に所定の固定値（例えば００）である。もし第１のフラグが固定値でなければ（例えば１１）、その物理ブロックは確実に消去済みである。
本発明は、書き込み途中で電源が遮断されても、物理ブロックが消去済みか否かを確実に検知できる不揮発性記憶装置の制御方法を実現する。
【００２２】
本発明の他の観点による上記の不揮発性記憶装置の制御方法は、不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの前記第１のフラグを読み出して、前記第１のフラグが書き込み済みか否かに基づいて、論理アドレス／物理アドレス変換テーブルと消去済みテーブルとを生成する初期化ステップを更に有する。
本発明によれば、データ書き込みの途中で電源が遮断された後の初期化処理においても、短時間で正確な消去済みテーブルを生成できる。これにより、消去済みでない物理ブロックに誤ってデータを書くことを防ぐことができる。
【００２３】
本発明の別の観点による不揮発性記憶装置の制御方法は、不揮発性メモリの論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルを用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、前記物理ブロックにデータを書き込むデータ書き込みステップと、前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の所定のページの冗長領域に設けられその物理ブロックにデータが書き込まれているか否かを示す第２のフラグに、その物理ブロックにデータが書き込まれていることを示す固定値を書き込む第２のフラグ書き込みステップと、を有する。
【００２４】
従来の不揮発性記憶装置の制御方法においては、例えば３２ページからなる物理ブロックにデータを書き込む場合、１ページを単位とする３２回の書き込みステップでデータを書き込んだ。しかし、書き込みの途中で電源が遮断された場合、データの書き込みが完了していない不正な物理ブロックが生じる。このような突然の電源遮断も考慮して、１つの物理ブロックが真に書き込み済みであるか否かを判断することは困難である。
【００２５】
所定のページ、好ましくは第３２ページ目に第２のフラグを割り付け、第３２ページ目のデータを第２のフラグと一緒に書き込むことも考えられる。しかし、第３２ページ目の書き込み途中に電源が遮断された場合、第２のフラグは正常に書き込まれ、他のいずれかのビットが書き込まれない状態（０を記録しようとしたが、そのビットの値は１のままである状態）が発生し得る。従って、このような方法でも１つの物理ブロックが真に書き込み済みであるか否かを判断することは困難である。
【００２６】
本発明においては、通常のデータを３２ページに書き込み、最後に、所定の固定値（実施の形態では００）の第２のフラグのみを単独で書き込む。従って、第２のフラグが固定値（例えば００）であれば、その物理ブロックの書き込みは確実に終了している。第２のフラグが固定値でなければ（例えば１１）、データの書き込みの途中で電源が遮断されたと判断できる。
本発明は、書き込み途中で電源が遮断されても、物理ブロックが正しく書き込み終了したか否かを確実に検知できる不揮発性記憶装置の制御方法を実現する。
【００２７】
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの前記第２のフラグを読み出して、前記第２のフラグが書き込み済みか否かに基づいて、論理アドレス／物理アドレス変換テーブルを生成する初期化ステップを更に有する。
本発明によれば、データ書き込みの途中で電源が遮断された後の初期化処理においても、短時間で正確な論理アドレス／物理アドレス変換テーブルを生成できる。これにより、書き込みが完了していない不正な物理ブロックを有効な物理ブロックと誤判定することを防ぐことができる。
【００２８】
本発明の更に別の観点による不揮発性記憶装置の制御方法は、不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の先頭ページの前記冗長領域に設けられその先頭ページにデータが書き込まれているか否かを示す第１のフラグに、データが書き込まれていることを示す固定値を書き込む第１のフラグ書き込みステップと、その物理ブロックにデータを書き込むデータ書き込みステップと、前記物理ブロックの所定のページの冗長領域に設けられその物理ブロックにデータが書き込まれているか否かを示す第２のフラグに、その物理ブロックにデータが書き込まれていることを示す固定値を書き込む第２のフラグ書き込みステップと、を有する。
【００２９】
本発明においては、最初に第１のフラグに固定値（実施の形態では００）を単独で書き込み、その後通常のデータを３２ページに書き込み、最後に固定値（実施の形態では００）の第２のフラグのみを単独で書き込む。従って、第１のフラグが固定値でなければ（例えば１１）、その物理ブロックは消去済みと判断できる。第１のフラグが固定値（例えば００）で、第２のフラグが固定値でなければ（例えば１１）、データ書き込みの途中で電源が遮断され、書き込みが完了していないと判断できる。第１のフラグと第２のフラグが共に固定値（例えば００）であれば、その物理ブロックの書き込みは確実に完了していると判断できる。
本発明は、書き込み途中で電源が遮断されても、物理ブロックが消去済みか否か、物理ブロックが正しく書き込み終了したか否かを確実に検知できる不揮発性記憶装置の制御方法を実現する。
【００３０】
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの前記第１のフラグ及び前記第２のフラグを読み出して、前記第１のフラグ及び前記第２のフラグが書き込み済みか否かに基づいて、論理アドレス／物理アドレス変換テーブルと消去済みテーブルとを生成する初期化ステップを更に有する。
【００３１】
本発明によれば、データ書き込みの途中で電源が遮断された後の初期化処理においても、短時間で正確な消去済みテーブルと論理アドレス／物理アドレス変換テーブルとを生成できる。これにより、消去済みでない物理ブロックに誤ってデータを書くことを防ぐことができる。書き込みが完了していない不正な物理ブロックを有効な物理ブロックと誤判定することを防ぐことができる。
【００３２】
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、物理ブロックにデータを書き込む時、最後のページのデータのＥＣＣ符号及び／又はＣＲＣ符号を、又はそれらと更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データとをその最後のページの冗長領域に書き込む書き込みステップと、前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの最後のページからデータとそのデータのＥＣＣ符号及び／又はＣＲＣ符号を読み出して、又はそれらと更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データとを読み出して、誤り検出を行い、誤りの有無に基づいて、論理アドレス／物理アドレス変換テーブルを生成する初期化ステップを有する。
【００３３】
本発明によれば、データ書き込みの途中で電源が遮断された後の初期化処理においても、短時間で正確な論理アドレス／物理アドレス変換テーブルを生成できる。これにより、書き込みが完了していない不正な物理ブロックを有効な物理ブロックと誤判定することを防ぐことができる。上記の構成において、第１のフラグを有しない構成としても良い。
【００３４】
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、前記物理ブロックの最後のページの、単独で別個に書き込み可能なデータを書き込むための領域を除く領域の全てのアドレスにデータを書き込み、その領域をデータと前記データのＥＣＣ符号及び／又はＣＲＣ符号とで埋め尽くし、又はそれらに更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データを加えて埋め尽くす最後のページ書き込みステップを有する。
【００３５】
本発明においては、通常のデータを３１ページに書き込み、最後のページにデータを書き込むときに、所定の領域を通常のデータと、ＥＣＣ符号及び／又はＣＲＣ符号とで埋め尽くし、又はそれらと更に相補データとを加えて埋め尽くす。初期化処理において、データの整合性に基づいて（誤り検出の有無）、データの書き込みが完了しているか否か判断できる。
本発明は、書き込み途中で電源が遮断されても、物理ブロックが正しく書き込み完了したか否かを検知できる不揮発性記憶装置の制御方法を実現する。上記の構成において、第１のフラグを有しない構成としても良い。
【００３６】
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、前記不揮発性記憶装置の起動時に、前記不揮発性メモリの全ての前記物理ブロックの最後のページの前記データと、前記データのＥＣＣ符号及び／又はＣＲＣ符号とを読み出して、又はそれらと更に前記ＥＣＣ符号及び／又はＣＲＣ符号の相補データとを読み出して、誤り検出を行い、誤りの有無に基づいて、論理アドレス／物理アドレス変換テーブルを生成する初期化ステップを更に有する。
【００３７】
本発明によれば、データ書き込みの途中で電源が遮断された後の初期化処理においても、短時間で正確な論理アドレス／物理アドレス変換テーブルを生成できる。これにより、書き込みが完了していない不正な物理ブロックを有効な物理ブロックと誤判定することを防ぐことができる。
【００３８】
本発明の更に別の観点による不揮発性記憶装置の制御方法は、不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、管理領域とデータ記録領域とを有する前記不揮発性メモリの前記管理領域に設けられ、無効データを有する物理ブロック（以下、「旧物理ブロック」と呼ぶ。）の物理アドレスと、前記旧物理ブロックの無効データが消去済みか否かを示す第３のフラグとを有する無効テーブル（消去予約テーブル）に、旧物理ブロックの物理アドレスを登録する物理アドレス登録ステップと、前記旧物理ブロックの無効データを消去する無効データ消去ステップと、前記旧物理ブロックの物理アドレスに対応する前記第３のフラグに前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、を有する。
【００３９】
従来の不揮発性記憶装置の制御方法において、物理ブロックのデータを消去する場合、例えばデータが無効であるか否かを示すフラグが無効にセットされている物理ブロックを消去した。しかし、消去の途中で電源が遮断された場合、データの消去は終了しておらず、０のビットが含まれている場合があった。このような突然の電源遮断も考慮して、１つの物理ブロックが消去済みであるか否かを確実に知ろうとすれば、３２ページの全ビットを調べ、全ビットが１であるか又は０のビットが含まれるかを調べなければならなかった。
【００４０】
本発明においては、消去すべき物理ブロックのアドレスと第３のフラグとで構成される消去予約テーブルを不揮発性メモリの管理領域に生成し、物理ブロックを消去する前に、消去予約テーブルに消去すべき物理ブロックの物理アドレスを登録する。その後、その物理ブロックを消去する。最後に、消去した物理ブロックに対応する第３のフラグに固定値（実施の形態では００）を書き込む。
従って、一旦消去を開始したとしても、消去途中に電源が遮断された場合、第３のフラグは所定の固定値でない（例えば１１）。消去予約テーブルに登録されている物理ブロックの第３のフラグが固定値でない場合、その物理ブロックの消去は終了していないことが確実に分かる。もし第３のフラグが所定の固定値であれば（例えば００）、その物理ブロックの消去は確実に終了している。
本発明は、消去途中で電源が遮断されても、物理ブロックの消去が終了したか否かを確実に検知できる不揮発性記憶装置の制御方法を実現する。
【００４１】
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、前記不揮発性記憶装置の起動時に、前記管理領域の前記無効テーブルを読み出して、前記第３のフラグが書き込み済みでない前記旧物理ブロックの無効データを消去する無効データ消去ステップと、前記旧物理ブロックの物理アドレスに対応する前記第３のフラグに、前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、を更に有する。
【００４２】
本発明は、消去途中で電源が遮断されて物理ブロックの消去が終了していなくても、起動時にそのことを確実に検知して、物理ブロックを消去する不揮発性記憶装置の制御方法を実現する。これにより、消去済みでない物理ブロックに誤ってデータを書くことを防ぐことができる。
【００４３】
本発明の更に別の観点による不揮発性記憶装置の制御方法は、不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、前記物理ブロックにデータを書き込む時に、前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の所定のページの前記冗長領域に、無効データを有する旧物理ブロックの物理アドレスを登録する物理アドレス登録ステップと、前記旧物理ブロックの無効データを消去する無効データ消去ステップと、前記旧物理ブロックの物理アドレスが登録された前記冗長領域に設けられ、その旧物理ブロックの無効データが消去済みか否かを示す第３のフラグに、前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、を有する。
【００４４】
本発明は、消去途中で電源が遮断されても、物理ブロックの消去が終了したか否かを確実に検知できる不揮発性記憶装置の制御方法を実現する。本発明は、旧物理ブロックの物理アドレスと第３のフラグとをデータ書き込み先の物理ブロックの冗長領域に書き込むため、消去予約テーブルを作成するための専用の領域を不揮発性メモリの管理領域に設ける必要がない。物理ブロックの所定のページのデータ書き込みと同時に、旧物理ブロックの物理アドレスを登録するため、物理アドレス登録に要する時間が余分に発生することがなく、消去予約テーブルを設ける方法と比較して処理時間が短い。
【００４５】
本発明の更に別の観点による上記の不揮発性記憶装置の制御方法は、前記不揮発性記憶装置の起動時に、前記物理ブロックの冗長領域の前記第３のフラグを読み出して、前記第３のフラグが書き込み済みでない前記旧物理ブロックの無効データを消去する無効データ消去ステップと、前記第３のフラグに、前記旧物理ブロックの無効データの消去が完了したことを示す固定値を書き込む第３のフラグ書き込みステップと、を更に有する。
本発明は、消去途中で電源が遮断されて物理ブロックの消去が終了していなくても、起動時にそのことを確実に検知して、物理ブロックを消去する不揮発性記憶装置の制御方法を実現する。これにより、消去済みでない物理ブロックに誤ってデータを書くことを防ぐことができる。
【００４６】
本発明の更に別の観点による不揮発性記憶装置の制御方法は、不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、データの書き込みを実行する前記物理ブロックを決定した後、前記物理ブロックにデータを書き込む前に、必ず前記物理ブロックに書き込まれているデータを消去する旧データ消去ステップと、を有する。
本発明によれば、未消去の物理ブロックに誤ってデータを書き込むという事故を確実に防ぐことができる。
【００４７】
本発明の更に別の観点による不揮発性記憶装置の制御方法は、不揮発性メモリのデータの最小消去単位である物理ブロックが消去済みか否かを示す消去済みテーブルと、論理アドレスと物理アドレスとを変換する論理アドレス／物理アドレス変換テーブルと、を用いて、前記不揮発性メモリのデータの書き込み及び読み出しを制御する制御ステップと、前記物理ブロックにデータを書き込む前に、前記物理ブロックに含まれる、データ領域と冗長領域とを有しデータの最小書き込み単位である複数のページの中の先頭ページを読み出して、前記先頭ページの前記冗長領域に設けられたその物理ブロックの管理情報に基づいて、前記先頭ページが消去済みか否かを判断し、消去済みでなければ前記物理ブロックに書き込まれているデータを消去する旧データ消去ステップと、を有する。
【００４８】
本発明によれば、未消去の物理ブロックに誤ってデータを書き込むという事故を確実に且つ効率的に防ぐことができる。
発明の新規な特徴は添付の請求の範囲に特に記載したものに他ならないが、構成及び内容の双方に関して本発明は、他の目的や特徴と共に、図面と共同して理解されるところの以下の詳細な説明から、より良く理解され評価されるであろう。
図面の一部又は全部は、図示を目的とした概要的表現により描かれており、必ずしもそこに示された要素の実際の相対的大きさや位置を忠実に描写しているとは限らないことは考慮願いたい。
【発明の効果】
【００４９】
本発明は、データの書き込み中又は消去中に電源遮断等の異常が発生し処理が中断した場合であっても、次回起動後のデータ書き込みを正常に行える不揮発性記憶装置の制御方法を実現できるという有利な効果が得られる。これにより、正確に不揮発性メモリにアクセスでき、高いデータ信頼性を有する不揮発性記憶装置の制御方法を実現できる。
【発明を実施するための最良の形態】
【００５０】
以下本発明の実施をするための最良の形態を具体的に示した実施の形態について、図面とともに記載する。
【００５１】
《実施の形態１》
図１〜７を用いて、実施の形態１の不揮発性記憶装置の制御方法を説明する。図１において、１０１は不揮発性記憶装置、１０２はホストである。不揮発性記憶装置１０１は、不揮発性メモリ１０３、コントローラ１０４、消去済みテーブル１０５、論理アドレス／物理アドレス変換テーブル１０６を有する。実施の形態１において、不揮発性記憶装置１０１はメモリカードであり、ホスト１０２は携帯電話であり、不揮発性メモリ１０３はフラッシュメモリである。図１〜４は従来例と同一であるため、詳細な説明を省略する。
【００５２】
図５は本発明の不揮発性メモリ１０３の物理ブロックの構成を示す図である。物理ブロック５０１は、３２ページで構成される。１ページの容量は５２８バイトであり、５１２バイトのデータ領域５０２と１６バイトの冗長領域５０３とに区分される。１ページはデータの書き込み単位、読み出し単位である。データの書き込みは、物理ブロックのページ０からページ３１まで順にページ単位で書き込まれる。物理ブロックはデータの消去単位であり、消去時には物理ブロックに含まれる３２ページ全てを一度に消去する。
【００５３】
不揮発性メモリの物理ブロック５０１のデータは１と０とで表され、消去済みの状態において全てのビットが１である。データの書き込みは０を書き込むことであって、０のビットに１を上書きすることはできない。そのため、消去済みでない物理ブロックに新しいデータを上書きで書き込むと、不正データとなる。新しいデータは、消去済みの物理ブロックに書き込まなければならない。
【００５４】
実施の形態１の物理ブロックが従来例の物理ブロックの構成（図２４）と違うところは、先頭ページであるページ０の冗長領域５０３に第１のフラグ５１１を有することである。第１のフラグ５１１は、データ信頼性を高めるため、複数ビットデータで表す。実施の形態１において、第１のフラグは２ビットで構成され、論理値１１又は００で表す。それ以外の点において、本発明の実施の形態１の物理ブロックは、従来例の構成と同一である。
【００５５】
図６及び図７を用いて、実施の形態１の不揮発性記憶装置１０１のデータの書き換え方法を説明する。図６は実施の形態１の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図７は、実施の形態１の物理ブロックにデータが書き込まれる状態を段階的に示す図である。
ホスト１０２からデータの書き込み指令を受信すると、不揮発性記憶装置１０１のコントローラ１０４は、消去済みテーブル１０５から消去済み物理ブロックを検出し、書き込み先の物理ブロックとして確保する（ステップ６０１）。不揮発性メモリ１０３の物理ブロック５０１は、消去済みの状態においてビットは全て１である（図７（ａ））。
【００５６】
まず、確保した物理ブロックの第１のフラグに固定値（消去した時の値と異なる値であって、実施の形態では００）を書き込む（ステップ６０２、図７（ｂ））。具体的には、第１のフラグのみが００でそれ以外のデータが全て１であるデータを先頭ページに書き込む。書き込み先物理ブロックは、先頭ページの冗長領域５０３の一部（第１のフラグ５１１）のみが書き込み済みの状態となる。第１のフラグ５１１は、これからその物理ブロックにデータの書き込みが開始されることを示す。その後、第１のフラグ以外のデータを物理ブロックのページ０からページ３１まで順にページ単位で書き込む（ステップ６０３、図７（ｃ））。
【００５７】
無効データ（新しいデータを書き込むことによって、必要でなくなったデータ）を含む旧物理ブロックを消去する（ステップ６０４）。消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ６０５）。具体的には、消去済みテーブル１０５に、ステップ６０１で確保した物理ブロックに対応するビットに０（書き込み済み）を書き込む。ステップ６０４で消去した旧物理ブロックに対応するビットに１（消去済み）を書き込む。論理アドレス／物理アドレス変換テーブル１０６の論理アドレスに対応する物理アドレスを、旧物理ブロックから書き込みを行った物理ブロックを示すように更新する。
【００５８】
第１のフラグを別ステップで書き込む実施の形態１の書き込み方法は、従来例の書き込み方法より１ステップ処理が多い。しかし、例えば１ページ（最小書き込み単位）の書き込みを１ステップで実行するとすれば、１物理ブロック（３２ページ）の書き込みに要する書き込みステップ数は、従来の３２ステップより１ステップ多い３３ステップになるだけである。
【００５９】
例えば、不揮発性メモリ１０３に、１ページ分のデータを転送する時間は４０μｓ、１ページ分のデータの書き込み時間は２００μｓであるので、１物理ブロックの書き込み時間は、（４０＋２００）×３２＝７６８０μｓである。これに対し、１ページ分の冗長領域のみのデータを転送する時間は１．５μｓで、１ページ分のデータの書き込み時間は２００μｓであるので、１ページ分の冗長領域のみの書き込み時間は１．５＋２００＝２０１．５μｓである。従って、実施の形態１のデータの書き込み時間（２０１．５μｓ＋７６８０μｓ）は従来例（７６８０μｓ）より約２．６％長くなるだけである。実施の形態は、アドレス、データ等を常に２箇所に書き込む従来例１と比較してはるかにデータ書き込み速度が速い。１ページの書き込みステップ数が１ステップでなく複数ステップであれば、第１のフラグを別ステップで書き込むことによる処理速度の低下の割合は、更に小さい。
【００６０】
図４を用いて、実施の形態１の初期化処理を説明する。図４は従来例の不揮発性記憶装置１０１の初期化処理のフローチャートであり、本発明の実施の形態１は従来例と同一の方法で初期化処理を行う。不揮発性メモリ１０３の全ての物理ブロックについて、先頭ページのみの冗長領域５０３を読み出して（ステップ４０２）、物理ブロックが消去済みか否かを判断する（ステップ４０３）。物理ブロックが消去済みか否かの判断は、先頭ページの冗長領域５０３が全て１のデータである場合は消去済み、値０のビットを含むデータが書き込まれている場合は書き込み済みとする。
【００６１】
本発明の実施の形態１は、データの書き込み前に第１のフラグに固定値を書き込んでいるので（ステップ６０２）、電源遮断等の異常によりデータの書き込みが中断した物理ブロックにおいても、第１のフラグには既に００が書き込まれている。例えば、先頭ページにデータを書き込み中に処理が中断した物理ブロックにおいても、第１のフラグは００である。従って、実施の形態１の不揮発性記憶装置１０１は、データの書き込みが中断した（完全に消去済みでない）物理ブロックを消去済みと誤って判定し、消去済みテーブル１０５に登録することはない。
【００６２】
本発明の実施の形態１の不揮発性記憶装置の制御方法によれば、データより先に第１のフラグを書き込むことにより、従来例と同じ初期化処理を用いて、物理ブロックが消去済みか否かを確実に検知できる。データの書き込みが電源遮断等によって途中で中断した場合であっても、消去済みテーブル１０５を正しく生成することができ、消去済みでない物理ブロックに誤ってデータを書くことを防ぐことができる。
【００６３】
《実施の形態２》
図１〜３、図８〜１１を用いて、実施の形態２の不揮発性記憶装置の制御方法を説明する。図１〜３は、従来例及び実施の形態１と同一であるため、詳細な説明を省略する。図８は本発明の実施の形態２の不揮発性メモリ１０３の物理ブロックの構成を示す図である。図８において、従来例（図２４）と同一部には同一符号を付している。
実施の形態２の物理ブロックが従来例の物理ブロックの構成と違うところは、所定のページ（実施の形態２においては、最後のページであるページ３１）の冗長領域５０３に第２のフラグ８０１を有することである。第２のフラグ８０１は、データ信頼性を高めるため、複数ビットデータで表す。実施の形態２において、第２のフラグは２ビットで構成され、論理値１１又は００で表す。それ以外の点において、本発明の実施の形態２の物理ブロックは、従来例の構成と同一である。
【００６４】
図９及び図１０を用いて、実施の形態２の不揮発性記憶装置１０１のデータの書き換え方法を説明する。図９は実施の形態２の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図９において、実施の形態１の図６と同一ステップには、同一符号を付している。図１０は、実施の形態２の物理ブロックにデータが書き込まれる状態を段階的に示す図である。
ホスト１０２からデータの書き込み指令を受信すると、不揮発性記憶装置１０１のコントローラ１０４は、消去済みテーブル１０５から消去済み物理ブロックを検出し、書き込み先の物理ブロックとして確保する（ステップ６０１）。不揮発性メモリ１０３の物理ブロック５０１は、消去済みの状態においてビットは全て１である（図１０（ａ））。
【００６５】
確保した物理ブロックにデータをページ単位で書き込む（ステップ６０３、図１０（ｂ））。具体的には、ページ０からページ３０まで順にデータを書き込む。第２のフラグ以外のデータをページ３１に書き込む。具体的には、第２のフラグを１１として所望のデータを最後のページに書き込む。その結果、書き込み先物理ブロックは、最後のページの冗長領域５０３の一部（第２のフラグ８０１）以外は全て書き込み済みの状態となる。
【００６６】
最後に、第２のフラグに固定値（消去した時の値と異なる値であって、実施の形態では００）を書き込む（ステップ９０１、図１０（ｃ））。具体的には、第２のフラグのみが００でそれ以外のデータが全て１であるデータを最後のページに書き込む。第２のフラグの書き込みが完了した時点で、その物理ブロックのデータの書き込みが完了する。第２のフラグ８０１は、物理ブロックのデータの書き込みが完了したことを示す。
【００６７】
無効データ（新しいデータを書き込むことによって、必要でなくなったデータ）を含む旧物理ブロックを消去する（ステップ６０４）。
消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ６０５）。具体的には、消去済みテーブル１０５に、ステップ６０１で確保した物理ブロックに対応するビットに０（書き込み済み）を書き込む。ステップ６０４で消去した旧物理ブロックに対応するビットに１（消去済み）を書き込む。論理アドレス／物理アドレス変換テーブル１０６の論理アドレスに対応する物理アドレスを、旧物理ブロックから書き込みを行った物理ブロックを示すように更新する。
【００６８】
第２のフラグを別ステップで書き込む実施の形態２の書き込み方法は、従来例の書き込み方法より１ステップ処理が多い。しかし、例えば１ページ（最小書き込み単位）の書き込みを１ステップで実行するとすれば、１物理ブロック（３２ページ）の書き込みに要する書き込みステップ数は、従来の３２ステップより１ステップ多い３３ステップになるだけである。
【００６９】
例えば、不揮発性メモリ１０３に、１ページ分のデータを転送する時間は４０μｓ、１ページ分のデータの書き込み時間は２００μｓであるので、１物理ブロックの書き込み時間は、（４０＋２００）×３２＝７６８０μｓである。これに対し、１ページ分の冗長領域のみのデータを転送する時間は１．５μｓで、１ページ分のデータの書き込み時間は２００μｓであるので、１ページ分の冗長領域のみの書き込み時間は１．５＋２００＝２０１．５μｓである。従って、実施の形態２のデータの書き込み時間（７６８０μｓ＋２０１．５μｓ）は従来例（７６８０μｓ）より約２．６％長くなるだけである。実施の形態は、アドレス、データ等を常に２箇所に書き込む従来例１と比較してはるかにデータ書き込み速度が速い。１ページの書き込みステップ数が１ステップでなく複数ステップであれば、第２のフラグを別ステップで書き込むことによる処理速度の低下の割合は、更に小さい。
【００７０】
図１１を用いて、実施の形態２の初期化処理を説明する。図１１は実施の形態２の不揮発性記憶装置１０１の初期化処理のフローチャートである。図１１において、図４（従来例及び実施の形態１）と同一ステップには同一符号を付している。
ブロックカウンタに０（初期値）を設定する（ステップ４０１）。コントローラ１０４は、不揮発性メモリ１０３の読み出し対象である物理ブロックの先頭ページの冗長領域５０３を読み出す（ステップ４０２）。
【００７１】
物理ブロックが消去済みか否か判断する（ステップ４０３）。物理ブロックが消去済みか否かの判断は、従来例と同様に先頭ページの冗長領域５０３が全て１のデータであるか、又は値０のビットを含むデータが書き込まれているかで行う。
先頭ページの冗長領域が全て１のデータである場合は、物理ブロックは消去済みと判断し、消去済みテーブル１０５のその物理ブロックに対応する欄に１を書き込み、物理ブロックが消去済みであると登録する（ステップ４０４）。ステップ４０７に進む。
【００７２】
先頭ページの冗長領域に値０のビットを含むデータが書き込まれている場合は消去済みでないと判断し、第２のフラグを有する最後のページの冗長領域を読み出す（ステップ１１０１）。第２のフラグが書き込み済みか否か判断する（ステップ１１０２）。第２のフラグが書き込み済みでなければ（＝１１）、その物理ブロックは電源遮断等によって書き込みが完了していないと判断し、物理ブロックを消去して（ステップ１１０３）、ステップ４０４に進む。
【００７３】
第２のフラグが書き込み済み（＝００）の場合、消去済みテーブル１０５のその物理ブロック欄に０（消去済みでない）を書き込む（ステップ４０５）。先頭ページの冗長領域５０３に書き込まれている論理アドレスを読み出して、論理アドレス／物理アドレス変換テーブル１０６のその論理アドレスに対応する位置に物理アドレスを登録する（ステップ４０６）。ステップ４０７に進む。
最終物理ブロックであるか否か判断する（ステップ４０７）。最終物理ブロックでなければ、ブロックカウンタに１を加算し（ステップ４０８）、ステップ４０２に戻り処理を繰り返す。最終物理ブロックであれば、初期化を終了する。
【００７４】
実施の形態２の不揮発性記憶装置の制御方法は、データの書き込みが中断した不完全な物理ブロックを誤って論理アドレス／物理アドレス変換テーブル１０６に登録することがない。例えば、電源遮断等によって書き込み処理が中断した場合、第２のフラグは１１のままである。先頭ページは書き込み済みであっても、最後のページまで書き込みが完了していないと判断できる。第２のフラグが００の場合、その物理ブロックの書き込みは完了していると判断できる。
【００７５】
本発明の実施の形態２の不揮発性記憶装置の制御方法によれば、データの書き込みが電源遮断等によって途中で中断した場合であっても、第２のフラグに基づいて論理アドレス／物理アドレス変換テーブル１０６を正しく生成することができる。
なお、実施の形態２において、第２のフラグ８０１は物理ブロックの最後のページに有した。これに代えて、第２のフラグを物理ブロックの最後のページ以外の任意のページの冗長領域５０３に有しても良い。この場合、図１１の初期化処理のステップ１１０１において、最後のページに代えて第２のフラグを有するページの冗長領域を読み出せば良い。
【００７６】
《実施の形態３》
図１１及び図１２を用いて、実施の形態３の不揮発性記憶装置の制御方法を説明する。実施の形態３の不揮発性メモリ１０３の物理ブロック５０１は、第１のフラグと第２のフラグの両方を有する。実施の形態３の物理ブロックが有する第１のフラグ５１１及び第２のフラグ８０１はそれぞれ実施の形態１の第１のフラグ５１１及び実施の形態２の第２のフラグ８０１と同一である。
【００７７】
図１２を用いて、実施の形態３の不揮発性記憶装置１０１のデータの書き換え方法を説明する。図１２は実施の形態３の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図１２において、実施の形態１の図６及び実施の形態２の図９と同一ステップには、同一符号を付している。
ホスト１０２からデータの書き込み指令を受信すると、不揮発性記憶装置１０１のコントローラ１０４は、消去済みテーブル１０５から消去済み物理ブロックを検出し、書き込み先の物理ブロックとして確保する（ステップ６０１）。不揮発性メモリ１０３の物理ブロック５０１は、消去済みの状態においてビットは全て１である（図７（ａ））。
【００７８】
まず、確保した物理ブロックの第１のフラグに固定値（実施の形態では００）を書き込む（ステップ６０２、図７（ｂ））。書き込み先物理ブロックは、先頭ページの冗長領域５０３の一部（第１のフラグ５１１）のみが書き込み済みの状態となる。第１のフラグ５１１は、これからその物理ブロックにデータの書き込みが開始されることを示す。
その後、物理ブロックにデータをページ単位で書き込む（ステップ６０３、図７（ｃ））。具体的には、第１のフラグ以外のデータをページ０に書き込む。ページ１からページ３０まで順にデータを書き込む。第２のフラグ以外のデータをページ３１に書き込む（図１０（ｂ））。
最後に、第２のフラグに固定値（実施の形態では００）を書き込む（ステップ９０１、図１０（ｃ））。第２のフラグの書き込みが完了した時点で、その物理ブロックのデータの書き込みが完了する。第２のフラグ８０１は、物理ブロックのデータの書き込みが完了したことを示す。
【００７９】
無効データ（新しいデータを書き込むことによって、必要でなくなったデータ）を含む旧物理ブロックを消去する（ステップ６０４）。
消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ６０５）。具体的には、消去済みテーブル１０５に、ステップ６０１で確保した物理ブロックに対応するビットに０（書き込み済み）を書き込む。ステップ６０４で消去した旧物理ブロックに対応するビットに１（消去済み）を書き込む。論理アドレス／物理アドレス変換テーブル１０６の論理アドレスに対応する物理アドレスを、旧物理ブロックから書き込みを行った物理ブロックを示すように更新する。
【００８０】
図１１を用いて、実施の形態３の初期化処理を説明する。実施の形態３は実施の形態２と同一の方法で初期化処理を行う。ステップ４０２で、物理ブロックの先頭ページのみの冗長領域５０３を読み出す。ステップ４０３の物理ブロックが消去済みか否かの判断において、先頭ページの冗長領域５０３が全て１のデータである場合は消去済み、値０のビットを含むデータが書き込まれている場合は書き込み済みと判断する。
【００８１】
先頭ページの冗長領域が全て１のデータである場合、つまり第１のフラグに固定値が書き込まれていない場合は、消去済みテーブル１０５のその物理ブロック欄に１を書き込み、物理ブロックが消去済みであると登録する（ステップ４０４）。
冗長領域５０３が消去済みでない、つまり第１のフラグに固定値が書き込まれている場合は、最後のページの冗長領域を読み出す（ステップ１１０１）。最後のページの冗長領域に有する第２のフラグが書き込み済みか否か判断する（ステップ１１０２）。第２のフラグが書き込み済みでなければ（＝１１）、その物理ブロックは電源遮断等によって書き込みが完了していないと判断し、その物理ブロックを消去して（ステップ１１０３）、ステップ４０４に進む。
【００８２】
第２のフラグが書き込み済み（＝００）の場合、消去済みテーブル１０５のその物理ブロック欄に０（消去済みでない）を書き込む（ステップ４０５）。先頭ページの冗長領域５０３に書き込まれている論理アドレスを読み出して、論理アドレス／物理アドレス変換テーブル１０６のその論理アドレスに対応する位置に物理アドレスを登録する（ステップ４０６）。ステップ４０７に進む。
【００８３】
従って、実施の形態３における物理ブロックの状態は、下記のように判定できる。
第１のフラグ＝１１かつ第２のフラグ＝１１の場合、物理ブロックは消去済み（未書き込み）であることを示す。
第１のフラグ＝００かつ第２のフラグ＝１１の場合、データの書き込みが電源遮断等によって途中で中断し、データの書き込みが開始されているが完了していないことを示す。
第１のフラグ＝１１かつ第２のフラグ＝００の場合、正常な処理では発生しない。
第１のフラグ＝００かつ第２のフラグ＝００の場合、物理ブロックが書き込み済みであることを示す。
【００８４】
本発明の実施の形態３の不揮発性記憶装置の制御方法によれば、データより先に第１のフラグを書き込むことにより、物理ブロックが消去済みか否かを確実に検知できる。
本発明の実施の形態３の不揮発性記憶装置の制御方法によれば、データを書き込んだ後に第２のフラグを書き込むことにより、物理ブロックが書き込み済みか否かを確実に検知できる。
本発明の実施の形態３の不揮発性記憶装置の制御方法によれば、データの書き込みが電源遮断等によって途中で中断した場合であっても、第１のフラグと第２のフラグに基づいて、消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６の両方を正しく生成することができる。実施の形態３は、実施の形態１の効果と実施の形態２の効果の両方を有する。
【００８５】
なお、実施の形態３において、第２のフラグ８０１は物理ブロックの最後のページに有した。これに代えて、第２のフラグを物理ブロックの最後のページ以外の任意のページの冗長領域５０３に有しても良い。この場合、図１１の初期化処理のステップ１１０１において、最後のページに代えて第２のフラグを有するページの冗長領域を読み出せば良い。
【００８６】
なお、第１のフラグ及び第２のフラグを別ステップで書き込むことにより、初期化処理において生成する消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６の正確性は向上する。しかし、実施の形態３の書き込み方法は、従来例の書き込み方法より２ステップ処理が多く、実施の形態１又は実施の形態２の書き込み方法より１ステップ処理が多いため、データの書き込みに要する時間は長い。例えば、１物理ブロックの書き込み時間が７６８０μｓで、１ページの冗長領域のみの書き込み時間が２０１．５μｓであるので、実施の形態３のデータの書き込み時間は従来例より５．２％、実施の形態１又は実施の形態２より約２．６％長くなる。
【００８７】
データの書き込みに要する時間及び初期化処理に要する時間の短縮を優先するか、又は消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６の正確性を優先するかによって、第１のフラグのみを有してもよいし（実施の形態１）、第２のフラグのみを有してもよいし（実施の形態２）、第１のフラグと第２のフラグを共に有してもよい（実施の形態３）。
【００８８】
《実施の形態４》
図１３を用いて、実施の形態４の不揮発性記憶装置の制御方法を説明する。図１３は、実施の形態４の不揮発性メモリ１０３の物理ブロック５０１の構成を示す図である。実施の形態４の物理ブロック５０１が、実施の形態２の物理ブロックと違うところは、第２のフラグ８０１に代えて、管理情報Ａ１３０１及び管理情報Ａ’１３０２を最後のページに有することである。それ以外の点において、実施の形態４の物理ブロックは、実施の形態２と同一である。
実施の形態４において、管理情報Ａ１３０１は各物理ブロックについてユニークなデータであって、例えば最後のページのデータのＥＣＣ符号及び／又はＣＲＣ符号を含む。管理情報Ａ’１３０２は、管理情報Ａのそれぞれのビットが反転したデータ（相補データ）である。
【００８９】
ＥＣＣ符号、ＣＲＣ符号は、最後のページの冗長領域５０３のデータのみのＥＣＣ符号、ＣＲＣ符号であっても良く、データ領域（又はデータ領域及び冗長領域）のデータのＥＣＣ符号、ＣＲＣ符号であっても良い。
好ましくは、物理ブロックの最後のページの、単独で別個に書き込み可能なデータ（例えば第２のフラグ等）を書き込むための領域を除く領域の全てのアドレスにデータを書き込み、その領域をデータと、ＥＣＣ符号及び／又はＣＲＣ符号と、そのＥＣＣ符号及び／又はＣＲＣ符号の相補データで埋め尽くす。これにより、電源の瞬時停電に起因する誤判断の確率を更に小さく出来る。
【００９０】
実施の形態４の不揮発性記憶装置１０１のデータ書き換え方法を説明する。実施の形態４の不揮発性記憶装置１０１のデータ書き換え方法は、従来例の図２５と同一のフローチャートを用いて行う。但し、ステップ６０３の処理が異なる。実施の形態４の不揮発性記憶装置１０１は、物理ブロック５０１にデータを書き込む場合（ステップ６０３）、最後のページであるページ３１のデータ領域５０２にデータを書き込むのと同時に冗長領域５０３に管理情報Ａ及び管理情報Ａ’を書き込む。それ以外の点においては、従来例のデータ書き換え方法と同一であるため、説明を省略する。
【００９１】
図１１を用いて、実施の形態４の不揮発性記憶装置１０１の初期化処理を説明する。実施の形態４の初期化処理は、ステップ１１０１及びステップ１１０２が実施の形態２と異なる。実施の形態２では、最後のページの冗長領域のみを読み出して（ステップ１１０１）、第２のフラグ８０１が書き込み済みか否かに基づいて、物理ブロック５０１にデータが書き込まれているか否かを判断した（ステップ１１０２）。実施の形態４では、最後のページのデータ領域と冗長領域とを読み出す（ステップ１１０１）。データとＥＣＣ符号及び／又はＣＲＣ符号とにより最後のページのデータに誤りがあるか否か、更に管理情報Ａ１３０１及び管理情報Ａ’１３０２が相補な関係であるか否か（整合しているか又は誤りを含むか）を判断する（ステップ１１０２）。データとＥＣＣ符号及び／又はＣＲＣ符号とが整合し、且つ管理情報Ａ及び管理情報Ａ’が相補なデータである場合は、物理ブロックは書き込み済みと判断し、ステップ４０５に進む。データとＥＣＣ符号及び／又はＣＲＣ符号とが整合せず、又は管理情報Ａ１３０１及び管理情報Ａ’１３０２が相補なデータでない（誤りを含む）場合は、物理ブロックの書き込みが電源遮断等により途中で中断したと判断し、ステップ１１０３で物理ブロックを消去した後、ステップ４０４に進む。それ以外の点においては、実施の形態２の初期化処理と同一であるため、説明を省略する。
【００９２】
実施の形態４の不揮発性記憶装置の制御方法によれば、データ領域５０２にデータを書き込むのと同時に冗長領域５０３に相補なデータ（管理情報Ａ及びＡ’）を書き込むので、相補なデータを書き込むための余計なプログラム時間が不要である。物理ブロック５０１にデータを書き込んだ後に、第２のフラグ８０１を別ステップで書き込む実施の形態２と比較して、処理時間が早い。但し、実施の形態４の制御方法は、誤判断の可能性は極めてゼロに近いもののゼロではなく、正確の信頼性においては、実施の形態２の制御方法のほうが優れている。
データの書き込みに要する時間の短縮を優先するか、又は消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６の正確性を優先するかによって、第２のフラグを有しても良いし（実施の形態２）、相補データを有してもよい（実施の形態４）。
【００９３】
上記方法に代えて、管理情報Ａ’１３０２を有さず、ＥＣＣ符号及び／又はＣＲＣ符号のみを最後のページの冗長領域に有しても良い。好ましくは、物理ブロックの最後のページの、単独で別個に書き込み可能なデータ（例えば第２のフラグ等）を書き込むための領域を除く領域の全てのアドレスにデータを書き込み、その領域をデータと、ＥＣＣ符号及び／又はＣＲＣ符号とで埋め尽くす。これにより、電源の瞬時停電に起因する誤判断の確率を更に小さく出来る。
ＥＣＣ符号及び／又はＣＲＣ符号は、物理ブロック５０１の最後のページであるページ３１のデータ領域５０２にデータを書き込むのと同時に、冗長領域５０３に書き込む。それ以外の点においては、従来例のデータ書き換え方法と同一である。
【００９４】
図１１を用いて、管理情報Ａ’１３０２を有さない場合の不揮発性記憶装置１０１の初期化処理を説明する。最後のページのデータ領域と冗長領域とを読み出す（ステップ１１０１）。データとＥＣＣ符号及び／又はＣＲＣ符号とにより最後のページのデータに誤りがあるか否かを判断する（ステップ１１０２）。データとＥＣＣ符号及び／又はＣＲＣ符号とが整合すれば、物理ブロックは書き込み済みと判断し、ステップ４０５に進む。データとＥＣＣ符号及び／又はＣＲＣ符号とが整合しなければ、物理ブロックの書き込みが電源遮断等により途中で中断したと判断し、ステップ１１０３で物理ブロックを消去した後、ステップ４０４に進む。それ以外の点においては、管理情報Ａ’１３０２を有する上記の初期化処理と同一であるため、説明を省略する。
【００９５】
《実施の形態５》
図１４〜図１８を用いて、実施の形態５の不揮発性記憶装置の制御方法を説明する。実施の形態１〜４の不揮発性記憶装置の制御方法は、データの書き込み中に電源遮断が起こった場合に対処する方法であった。実施の形態５の不揮発性記憶装置の制御方法は、データの消去中に電源遮断が起こった場合に対処できる方法である。
【００９６】
従来例（図２５）のステップ６０４において旧物理ブロックを消去している最中に電源遮断が発生すると、その旧物理ブロックの消去が終了していない可能性がある。この状態で、電源再投入時に初期化処理を行うと、完全に消去していない旧物理ブロック（例えば最初のページの冗長領域が消去済みで、残りのデータは書き込み済みの物理ブロック）を誤って消去済みと判断し、消去済みテーブル１０５に登録する可能性がある。また、完全に消去していない旧物理ブロック（例えば最初のページの冗長領域は書き込み済みで、残りのデータが消去済みの物理ブロック）を誤って書き込み済みと判断し、論理アドレス／物理アドレス変換テーブル１０６に登録する可能性もある。
【００９７】
上記のような誤判断を防ぐため、実施の形態５の不揮発性記憶装置の制御方法は、データの消去中に電源遮断が起こった場合に対処できる方法を実現する。実施の形態５の不揮発性記憶装置１０１は、旧物理ブロックが消去済みか否かを判断するための消去予約テーブルを不揮発性メモリに有する。
【００９８】
図１４は、不揮発性メモリの構成を示す図である。不揮発性メモリ１０３は、管理領域１４１１とデータ記録領域１４１２とに区分される。データ記録領域１４１２は、データを書き込むための領域である。実施の形態５において、データ記録領域１４１２の物理ブロック５０１は、従来例の物理ブロック５０１（図２４）と同一である。管理領域１４１１は、不揮発性メモリ１０３の管理情報を記憶する領域で、管理領域１４１１の物理ブロック１４０１を消去予約テーブルに割り当てる。なお、管理領域１４１１とデータ記録領域１４１２とは、コントローラ１０４によって明確に区別できれば良く、管理領域１４１１を不揮発性メモリ１０３内の固定した物理ブロックに占有する必要はない。固定した物理ブロックによらず自由にその領域を変化させてもよい。
【００９９】
図１５は、消去予約テーブルの構成を示す図である。消去予約テーブル１５０１は、消去する物理ブロックの物理アドレス１５１１を登録する消去アドレス登録領域１５０２と、冗長領域１５０３とで構成される。冗長領域１５０３は、第３のフラグ１５１２を有する。第３のフラグ１５１２は、データ信頼性を高めるため、複数ビットデータで表す。実施の形態５において、第３のフラグは２ビットで構成され、論理値１１又は００で表す。第３のフラグ１５１２は、そのページの消去アドレス登録領域１５０２に書き込まれている物理アドレス１５１１が示す物理ブロックが消去済みか否かを表す。第３のフラグが「１１」の場合、物理ブロックは、未消去と判断し、第３のフラグが「００」の場合、物理ブロックは消去済みと判断する。消去予約テーブル１５０１は、物理ブロック１４０１で構成されているため、ページ０からページ３１を有し、物理アドレスを３２個分登録できる。実施の形態５において、物理アドレスの登録は、ページ０から昇順に行う。
【０１００】
図１６及び図１７を用いて、実施の形態５のデータの書き換え方法を説明する。図１６は実施の形態５の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図１６（実施の形態５）において、図２５（従来例）と同一ステップには同一符号を付している。図１７は、消去予約テーブルに物理アドレスと第３のフラグが書き込まれる状態を段階的に示す図である。図１７において、ページ０とページ１には既に物理アドレスが書き込まれており、且つ第３のフラグが「００」であるので、ページ０とページ１に登録された物理ブロックは消去済みである。今回ページ２を使用する。
実施の形態５のデータの書き換え方法（図１６）が従来例（図２５）と違うところは、ステップ１６０１と１６０２が追加された点である。ステップ１６０１以降について説明する。
【０１０１】
物理ブロックのデータの書き込みが完了すると、無効データ（新しいデータを書き込むことによって、必要でなくなったデータ）を含む旧物理ブロックの物理アドレス１５１１を、消去予約テーブル１５０１の消去アドレス登録領域１５０２に登録する（ステップ１６０１、図１７（ｂ））。消去予約テーブルに登録することで、消去すべき物理ブロックであることを示す。その後、旧物理ブロックを消去する（ステップ６０４）。
旧物理ブロックの物理アドレス１５１１を登録した消去予約テーブルのページ２の冗長領域１５０３の第３のフラグ１５１２に固定値（実施の形態では００）を書き込む（ステップ１６０２、図１７（ｃ））。第３のフラグに固定値を書き込むことで、登録した旧物理ブロックの消去が完了したことを示す。
【０１０２】
消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ６０５）。具体的には、消去済みテーブル１０５に、ステップ６０１で確保した物理ブロックに対応するビットに０（書き込み済み）を書き込む。ステップ６０４で消去した旧物理ブロックに対応するビットに１（消去済み）を書き込む。論理アドレス／物理アドレス変換テーブル１０６の論理アドレスに対応する物理アドレスを、旧物理ブロックから書き込みを行った物理ブロックを示すように更新する。
【０１０３】
実施の形態５の不揮発性記憶装置１０１は、図４に示す初期化処理を行った後に、図１８に示す初期化処理を行う。図４においては、従来例と同一であるため、説明を省略する。図１８について説明する。
不揮発性メモリ１０３の管理領域１４１１に有する消去予約テーブル１５０１を読み出す（ステップ１８０１）。消去済みでない物理ブロックが有るか否か判断する（ステップ１８０２）。消去予約テーブル１５０１の消去アドレス登録領域１５０２に物理アドレス１５１１が登録されていない、又は全ての登録済みの物理アドレス１５１１に対応する第３のフラグ１５１２に固定値（００）が書き込まれていれば、消去済みでない物理ブロックは無いと判断し、初期化処理を終了する。
【０１０４】
消去予約テーブル１５０１に物理アドレス１５１１が登録されているが、第３のフラグ１５１２が書き込まれていない（１１）場合、電源遮断等により消去が途中で終わっていると判断し、登録されている物理ブロックを消去する（ステップ１８０３）。消去予約テーブル１５０１の消去した物理ブロックに対応する第３のフラグ１５１２に固定値を書き込む（ステップ１８０４）。
【０１０５】
消去中の電源遮断等の異常により、作成済みのテーブルに誤りのある可能性があるので、消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を修正する（ステップ１８０５）。具体的には、消去済みテーブル１０５に消去した物理ブロックを登録する。論理アドレス／物理アドレス変換テーブル１０６に消去した物理ブロックがあれば、登録を削除する。ステップ１８０２に戻り、消去予約テーブルに登録された物理ブロックが全て消去されるまで処理を繰り返す。
【０１０６】
本発明の実施の形態５の不揮発性記憶装置の制御方法によれば、消去予約テーブル１５０１に物理アドレス１５１１と第３のフラグ１５１２とを書き込むことにより、物理ブロック５０１の消去が完了しているか否かを確実に検知できる。物理ブロックの消去が電源遮断等によって途中で中断した場合であっても、次回起動時に、消去予約テーブル１５０１に基づいて消去済みでない物理ブロックを完全に消去し、消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６の両方を正しく生成することができる。これにより、消去済みでない物理ブロックに誤ってデータを書くことを防ぐことができる。
【０１０７】
なお、データ消去中の電源遮断に対応する実施の形態５の不揮発性記憶装置の制御方法と、データ書き込み中の電源遮断に対応する実施の形態１〜４のいずれかの不揮発性記憶装置の制御方法と、を組み合わせても良い。これにより、更に信頼性の高い消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を生成することができる。
なお、実施の形態５の消去予約テーブル１５０１はデータの書き換え時の旧物理ブロックの消去のみに限られず、ホスト１０２からの消去指令に基づいて物理ブロックを消去する場合にも使用できる。
【０１０８】
《実施の形態６》
図１９〜２１を用いて、実施の形態６の不揮発性記憶装置の制御方法を説明する。実施の形態６の不揮発性記憶装置の制御方法は、データの消去中に電源遮断が起こった場合に対処できる方法である。
実施の形態６の不揮発性記憶装置の制御方法が、実施の形態５と異なる点について説明する。実施の形態５の制御方法は、消去する物理ブロックの物理アドレス１５１１とその物理ブロックが消去済みか否かを示す第３のフラグ１５１２とを不揮発性メモリ１０３の管理領域１４１１に有する消去予約テーブル１５０１に登録した。実施の形態５の制御方法はデータ記録領域１４１２の物理ブロック５０１に対するデータ書き込みとは別ステップで、物理アドレス１５１１を消去予約テーブル１５０１に登録するため、消去予約テーブル１５０１の書き込みに要する時間が長いという欠点があった。
【０１０９】
実施の形態６では、処理時間の短い制御方法を実現する。図１９は、実施の形態６の物理ブロックの構成を示す図である。実施の形態６の物理ブロック５０１は、所定のページ（実施の形態６において、先頭ページ）の冗長領域５０３に、旧物理ブロックの物理アドレス（「旧物理アドレス」と呼ぶ。）１９１１と旧物理ブロックが消去済みか否かを示す第３のフラグ１５１２とを有する。実施の形態６の旧物理アドレス１９１１の登録領域は２バイトで構成される。
【０１１０】
第３のフラグ１５１２は、実施の形態５の第３のフラグと同様で、データ信頼性を高めるため、複数ビットデータで表す。実施の形態６において、第３のフラグは２ビットで構成され、論理値１１又は００で表す。第３のフラグ１５１２は、旧物理アドレス１９１１が示す物理ブロックが消去済みか否かを表す。第３のフラグが「１１」の場合、旧物理アドレス１９１１が示す物理ブロックは未消去と判断し、第３のフラグが「００」の場合は消去済みと判断する。
実施の形態６において、不揮発性メモリ１０３は消去予約テーブル１５０１を持たず、データ書き込み先の物理ブロック５０１の冗長領域５０３を使用して、旧物理ブロックが消去済みか否かを登録する。
【０１１１】
図２０を用いて、実施の形態６のデータの書き換え方法を説明する。図２０は実施の形態６の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図２０において、従来例の図２５と同一ステップには同一符号を付している。
ホスト１０２からデータの書き込み指令を受信すると、不揮発性記憶装置１０１のコントローラ１０４は、消去済みテーブル１０５から消去済み物理ブロックを検出し、書き込み先の物理ブロック（「新物理ブロック」と呼ぶ。）として確保する（ステップ６０１）。
【０１１２】
新物理ブロックにデータを書き込むと同時に、無効データ（新しいデータを書き込むことによって、必要でなくなったデータ）を含む旧物理ブロックの物理アドレス１９１１と旧物理ブロックに対応する第３のフラグ１５１２（値は未消去であることを示す１１）とを、新物理ブロックの先頭ページの冗長領域５０３に書き込む（ステップ２００１）。
【０１１３】
旧物理ブロックを消去する（ステップ６０４）。新物理ブロックの先頭ページの冗長領域５０３に有する第３のフラグに固定値（実施の形態では消去済みであることを示す００）を書き込む（ステップ２００２）。第３のフラグ１５１２に固定値を書き込むことで、旧物理ブロックが消去されたことを示す。消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ６０５）。
【０１１４】
図２１を用いて、実施の形態６の不揮発性記憶装置１０１の初期化処理を説明する。実施の形態６の不揮発性記憶装置１０１は、初期化処理時に、第３のフラグ１５１２に基づいて無効テーブルをＲＡＭ上に生成する。無効テーブルは、電源遮断等によりデータの消去が中断した不正な旧物理ブロックの物理アドレスと、旧物理ブロックが消去済みか否かを登録している新物理ブロックの物理アドレスとを登録するためのテーブルである。図２１は実施の形態６の不揮発性記憶装置１０１の初期化処理のフローチャートである。図２１において、従来例の図４と同一ステップには同一符号を付し、説明を省略する。ステップ２１０１〜２１０７について説明する。
【０１１５】
ステップ４０１〜４０６において書き込み済みと判断された物理ブロック５０１に対して、ステップ４０２で読み出された先頭ページの冗長領域５０３に基づいて、第３のフラグ１５１２が未書き込み（＝１１）の旧物理ブロックが有るか否か判断する（ステップ２１０１）。旧物理アドレス１９１１が登録されていない、又は第３のフラグ１５１２が書き込み済み（＝００）であれば、ステップ４０７に進む。
【０１１６】
旧物理アドレス１９１１は登録されているが、第３のフラグ１５１２が未書き込みであれば、消去処理中に電源遮断等の異常が発生し、旧物理ブロックの消去が完了していないと判断する。ＲＡＭ上に作成された無効テーブルに新物理ブロック（冗長領域５０３に旧物理ブロックの物理アドレス１９１１が書き込まれている物理ブロック）の物理アドレスと、旧物理ブロックの物理アドレスとを登録し（ステップ２１０２）、ステップ４０７に進む。
【０１１７】
現在の物理ブロックが最終物理ブロックであるか否かを判断する（ステップ４０７）。最終物理ブロックでなければ、ブロックカウンタに１を加算し（ステップ４０８）、ステップ４０２に戻る。最終物理ブロックであれば、ＲＡＭ上に生成した無効テーブルに新物理ブロックと旧物理ブロックのアドレスが書き込まれているか否か判断する（ステップ２１０３）。無効テーブルが空であれば、初期化処理を終了する。無効テーブルにアドレスが登録されていれば、その旧物理ブロックを消去する（ステップ２１０４）。消去した旧物理ブロックの物理アドレスが書き込まれている新物理ブロックの第３のフラグに固定値を書き込む（ステップ２１０５）。第３のフラグに固定値を書き込むことで、旧物理ブロックを完全に消去したことを示す。ＲＡＭ上の無効テーブルを更新する（ステップ２１０６）。具体的には、新物理ブロックと旧物理ブロックのアドレスを無効テーブルから削除して、未消去の旧物理ブロックがないことを示す。
【０１１８】
消去中の電源遮断等の異常により、作成済みのテーブルに誤りのある可能性があるので、消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を更新する（ステップ２１０７）。具体的には、消去済みテーブル１０５に消去した旧物理ブロックを登録する。論理アドレス／物理アドレス変換テーブル１０６に消去した旧物理ブロックがあれば、登録を削除する。
【０１１９】
実施の形態６の不揮発性記憶装置の制御方法は、消去予約テーブル１５０１を設けるための専用の領域を不揮発性メモリ１０３の管理領域１４１１に確保する必要がない。データ記録領域１４１２の物理ブロック５０１に対してデータを書き込むと同時に、その先頭ページに旧物理ブロックのアドレス１９１１を登録するため、実施の形態５と比較して処理時間が短い。但し、実施の形態６の制御方法は、消去する旧物理ブロックの物理アドレス１９１１を新物理ブロック５０１の冗長領域５０３に登録するため、データの書き換え時にのみ使用でき、ホスト１０２からの消去指令に基づいて物理ブロックを消去する場合には、使用できない。
実施の形態６の不揮発性記憶装置１０１は、旧物理ブロックの消去と平行して、次に実行する書き込みデータを不揮発性メモリ１０３に転送することにより、データの書き換えにかかる時間を短縮することができる。
【０１２０】
なお、旧物理ブロックの物理アドレス１９１１及び第３のフラグ１５１２の登録は、新物理ブロック５０１の先頭ページに限定されない。新物理ブロックの先頭ページ以外の冗長領域５０３に登録しても良い。この場合、初期化処理において、図２１のステップ４０６とステップ２１０１との間に、旧物理アドレス１９１１と第３のフラグ１５１２とを有するページの冗長領域を読み出すステップを追加すれば良い。
なお、データ消去中の電源遮断に対応する実施の形態６の不揮発性記憶装置の制御方法と、データ書き込み中の電源遮断に対応する実施の形態１〜４のいずれかの不揮発性記憶装置の制御方法と、を組み合わせても良い。これにより、更に信頼性の高い消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を生成することができる。
【０１２１】
《実施の形態７》
図２２を用いて、実施の形態７の不揮発性記憶装置の制御方法を説明する。実施の形態１〜６において、データの書き込み中又はデータの消去中に電源遮断等が起こり処理が中断した場合であっても、第１のフラグ、第２のフラグ、第３のフラグ又は相補データを用いて、次回起動時にそのことを検知し、消去済みテーブル１０５及び／又は論理アドレス／物理アドレス変換テーブル１０６を正確に生成できる不揮発性記憶装置の制御方法について説明した。
【０１２２】
実施の形態７の不揮発性記憶装置の制御方法においては、上記第１〜第３のフラグ及び相補データを有さない、従来の物理ブロックと同じ構成であっても、正確にデータを書き込むことができる方法を実現する。実施の形態７において、物理ブロックは第１〜第３のフラグ及び相補データを有さず、従来例と同一の方法で初期化処理を行うため、電源遮断等により処理が中断されたことを検知することはできない。例えば、電源遮断等により、消去が完了していない不正な物理ブロックを誤って消去済みと判断し、消去済みテーブル１０５に登録する場合がある（図４、ステップ４０４）。
【０１２３】
そこで、実施の形態７においては、図２２の方法を用いてデータの書き換えを行う。図２２は実施の形態７の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図２２において、図２５と同一ステップには同一符号を付し、説明を省略する。実施の形態７のデータの書き換え方法（図２２）が、従来例（図２５）と違うところは、ステップ２２０２が追加された点である。
【０１２４】
ホスト１０２からデータの書き込み指令を受信すると、不揮発性記憶装置１０１のコントローラ１０４は、消去済みテーブル１０５から消去済み物理ブロックを検出し、書き込み先の物理ブロックとして確保する（ステップ６０１）。しかし、その書き込み先物理ブロックは書き込み中又は消去中の電源遮断等の異常により、実際には消去済みでないのに、初期化処理において間違って消去済みテーブルに登録されている可能性がある。そのため、確保した書き込み先物理ブロックを一旦消去し、確実に消去済みの状態にする（ステップ２２０２）。その後、物理ブロックにデータを書き込む（ステップ６０３）。
【０１２５】
実施の形態７の制御方法は、初期化処理で消去済みでない物理ブロックを誤って消去済みと判断し、消去済みテーブル１０５に登録した場合であっても、データの書き込み前に一旦物理ブロックを消去することによりホスト１０２からの書き込み指令を正しく処理することができる。
【０１２６】
なお、実施の形態７の不揮発性記憶装置の制御方法を実施の形態１〜６と組み合わせても良い。これにより、書き込み時間及び読み出し時間等の処理時間は多くなるが、消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を正確に生成でき、且つ確実に消去済みの物理ブロックにデータを書き込むことができる。
【０１２７】
《実施の形態８》
図２３を用いて、実施の形態８の不揮発性記憶装置の制御方法を説明する。実施の形態８は、実施の形態７と同様に、物理ブロックが第１〜第３のフラグ及び相補データを有さない、従来の物理ブロックと同じ構成であっても、正しくデータの書き換えをすることができる方法である。
図２３は、実施の形態８の不揮発性記憶装置１０１のデータの書き換え方法のフローチャートである。図２３において、図２２と同一のステップには同一の符号を付し、説明を省略する。実施の形態８のデータの書き換え方法（図２３）が、実施の形態７（図２２）と違うところは、ステップ２３０２及びステップ２３０３が追加されたことである。それ以外の点において、実施の形態７と同一である。
【０１２８】
実施の形態７では、データの書き込み前にすべての物理ブロックを一旦消去した。しかし、不揮発性メモリ１０３の物理ブロックの消去に要する時間は、物理ブロックの１ページの読み出しに要する時間よりもはるかに長い。そこで、実施の形態８においては、書き込み先物理ブロックの管理情報を有する先頭ページのデータを読み出す（ステップ２３０２）。物理ブロックが消去済みでない場合、先頭ページの冗長領域に、その物理ブロックの管理情報（例えばデータ領域に書き込まれたデータの相補データ、ＥＣＣ符号及び／又はＣＲＣ符号、その物理ブロックに対応する論理アドレス等の情報）が書き込まれている。先頭ページを読み出し、管理情報が全て１か、又は０を含むかを検出すれば、物理ブロックが消去済みか否か判断することができる。
【０１２９】
先頭ページが消去済みか否か判断し（ステップ２３０３）、先頭ページが消去済みでなければ、電源遮断等により物理ブロックの消去が完了していないと判断し、物理ブロックを消去する（ステップ２２０２）。先頭ページが消去済みであれば、ステップ２２０２を実行せずにステップ６０３に進む。
【０１３０】
実施の形態８の制御方法は、初期化処理で消去済みでない物理ブロックを誤って消去済みと判断し、消去済みテーブル１０５に登録した場合であっても、ホスト１０２からの書き込み指令を正しく処理することができる。
実施の形態８では、物理ブロックの先頭ページを読み出して消去済みか否か判断し、未消去の物理ブロックのみを消去することにより、実施の形態７よりデータの書き換えに要する時間を短縮することができる。
【０１３１】
なお、実施の形態８の不揮発性記憶装置の制御方法を実施の形態１〜６と組み合わせも良い。不揮発性メモリ１０３に不正な状態の物理ブロックが存在した場合、実施の形態を組み合わせて使用することにより、データの書き込みの正確性が向上する。消去済みテーブル１０５及び論理アドレス／物理アドレス変換テーブル１０６を正確に生成でき、且つ確実に消去済みの物理ブロックにデータを書き込むことができる。
発明をある程度の詳細さをもって好適な形態について説明したが、この好適形態の現開示内容は構成の細部において変化してしかるべきものであり、各要素の組合せや順序の変化は請求された発明の範囲及び思想を逸脱することなく実現し得るものである。
【産業上の利用可能性】
【０１３２】
本発明は、例えば携帯機器に接続使用する不揮発性記憶装置（例えばメモリカード）の制御方法として有用である。
【図面の簡単な説明】
【０１３３】
【図１】不揮発性記憶装置の構成を示すブロック図
【図２】消去済みテーブル１０５の構成を示す図
【図３】論理アドレス／物理アドレス変換テーブル１０６の構成を示す図
【図４】従来例及び本発明の実施の形態１の不揮発性記憶装置１０１の初期化処理のフローチャート
【図５】本発明の実施の形態１の不揮発性メモリ１０３の物理ブロックの構成を示す図
【図６】本発明の実施の形態１の不揮発性記憶装置１０１のデータの書き換え方法のフローチャート
【図７】本発明の実施の形態１における物理ブロックにデータが書き込まれる状態を段階的に示す図
【図８】本発明の実施の形態２の不揮発性メモリ１０３の物理ブロックの構成を示す図
【図９】本発明の実施の形態２の不揮発性記憶装置１０１のデータの書き換え方法のフローチャート
【図１０】本発明の実施の形態２における物理ブロックにデータが書き込まれる状態を段階的に示す図
【図１１】本発明の実施の形態２の不揮発性記憶装置１０１の初期化処理のフローチャート
【図１２】本発明の実施の形態３の不揮発性記憶装置１０１のデータの書き換え方法のフローチャート
【図１３】本発明の実施の形態４の不揮発性メモリ１０３の物理ブロックの構成を示す図
【図１４】本発明の実施の形態５の不揮発性メモリ１０３の構成を示す図
【図１５】本発明の実施の形態５の消去予約テーブルの構成を示す図
【図１６】本発明の実施の形態５の不揮発性記憶装置１０１のデータの書き換え方法のフローチャート
【図１７】本発明の実施の形態５における消去予約テーブルの状態変化を段階的に示す図
【図１８】本発明の実施の形態５の不揮発性記憶装置１０１の初期化処理のフローチャート
【図１９】本発明の実施の形態６の不揮発性メモリ１０３の物理ブロックの構成を示す図
【図２０】本発明の実施の形態６の不揮発性記憶装置１０１のデータの書き換え方法のフローチャート
【図２１】本発明の実施の形態６の不揮発性記憶装置１０１の初期化処理のフローチャート
【図２２】本発明の実施の形態７の不揮発性記憶装置１０１のデータの書き換え方法のフローチャート
【図２３】本発明の実施の形態８の不揮発性記憶装置１０１のデータの書き換え方法のフローチャート
【図２４】従来例の不揮発性メモリ１０３の物理ブロックの構成を示す図
【図２５】従来例の不揮発性記憶装置１０１のデータの書き換え方法のフローチャート
【符号の説明】
【０１３４】
１０１    不揮発性記憶装置
１０２    ホスト
１０３    不揮発性メモリ
１０４    コントローラ
１０５    消去済みテーブル
１０６    論理アドレス／物理アドレス変換テーブル
【国際調査報告】
2004031966.tif 000028
2004031966.tif 000029
2004031966.tif 000030
2004031966.tif 000031
2004031966.tif 000032