(57)【要約】【課題】エラー情報領域の１つの書込み単位であるページの容量に対して、エラー情報を書込む際に、ページの容量を有効に利用し、ページ内に空白の部分が生じないようにする。また、外的要因により電源遮断が発生した場合でも、エラー情報の書換えの前にエラー情報領域に存在した直前のエラー情報が失われてないようにし、エラー情報を復旧できるようにする。【解決手段】不揮発性メモリの管理領域２０１に、不良ブロックのアドレス情報を格納する管理ブロックＭＢ−１〜ＭＢ−ｍを設け、不良ブロックを除いてこれらを１つずつ巡回的に使用する。管理ブロックに格納された登録情報を更新する際は、新たな管理ブロックに書き込みを行い、書き込みが成功したことを確認してから元の管理ブロックのデータを消去する。【選択図】図５
2007249508.tif 000002
【特許請求の範囲】
【請求項１】
データの消去単位であるブロックを複数有し、前記ブロックはデータを保持する複数のデータブロックと、前記複数のブロック中の不良ブロックのアドレスを登録する複数の管理ブロックとを含む不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリコントローラであって、
前記複数の管理ブロック中の不良ブロックとしてアドレスが登録されたブロックを除いて１つずつ巡回的に管理ブロックを取得して、新たに発生した不良ブロックのアドレスを当該取得した管理ブロックに登録する制御部を有することを特徴とするメモリコントローラ。
【請求項２】
前記制御部は、
不良ブロックのアドレスを前記複数の管理ブロックのうちの１つの管理ブロックに登録する際に、当該管理ブロックが不良ブロックとなった場合、当該管理ブロックに登録する予定であった前記不良ブロックのアドレスを含む全ての不良ブロックのアドレスを、巡回的に取得した別の管理ブロックに登録することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記制御部は、
不良ブロックのアドレスを前記管理ブロックに登録する際に、当該管理ブロックが不良ブロックとなった場合、当該管理ブロックに登録する予定であった前記不良ブロックのアドレスを含む全ての不良ブロックのアドレスの登録を、巡回的に取得した別の管理ブロックに対して最大リトライ回数まで行なうことを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
前記制御部は、
前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、それぞれの管理ブロックにおいて登録されている不良ブロックの数を調べ、その数が最大の管理ブロックを最新のデータが存在する管理ブロックであると判断することを特徴とする請求項１〜３のいずれか１項に記載のメモリコントローラ。
【請求項５】
前記制御部は、
前記管理ブロックに不良ブロックのアドレスを登録する際に不良ブロック数も書き込み、前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、前記管理ブロックに書き込まれている前記不良ブロック数から、最新のデータが存在する管理ブロックを判断することを特徴とする請求項４に記載のメモリコントローラ。
【請求項６】
前記制御部は、
前記管理ブロックのデータを更新する際、前記巡回的に取得した別の管理ブロックに書き込みを行い、書き込んだデータにエラーがないことを確認した後、元の管理ブロックのデータを消去することを特徴とする請求項１〜５のいずれか１項に記載のメモリコントローラ。
【請求項７】
前記制御部は、
前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、不良ブロックの発生とは無関係に更新する必要のある第１の情報の更新に伴って、別の管理ブロックに前記更新された第１の情報が書き込まれるときに更新されるカウンタの値が最新で、かつ不良ブロックが登録されている数が最大のものを最新の管理ブロックであると判断することを特徴とする請求項１〜６のいずれか１項に記載のメモリコントローラ。
【請求項８】
前記第１の情報は、論理アドレスと前記不揮発性メモリの物理アドレスとの対応関係を示す情報である請求項７記載のメモリコントローラ。
【請求項９】
前記制御部は、
最新のデータが存在する管理ブロックを検索する際、少なくとも前記不良ブロックのアドレス情報、前記第１の情報、及び前記カウンタとから計算されるチェックコードを検査し、前記チェックコードが不正である管理ブロックを除外して最新のデータが存在する管理ブロックを検索することを特徴とする請求項７又は８に記載のメモリコントローラ。
【請求項１０】
前記制御部は、
前記管理ブロックのデータの書き込み単位であるページの数以下の複数の領域に前記管理ブロックを分割し、１つの管理ブロックについて前記複数の領域に順次データの書き込みを行い、前記複数の領域全てにデータが書き込まれた後に、別の管理ブロックを新たに使用することを特徴とする請求項１〜９のいずれか１項に記載のメモリコントローラ。
【請求項１１】
前記制御部は、
前記管理ブロックはデータの書き込み単位であるページの数以下の複数の領域に前記管理ブロックを分割し、１つの管理ブロックについて前記複数の領域に順次データの書き込みを行い、前記複数の領域全てにデータが書き込まれた後に、別の管理ブロックを新たに使用し、
前記管理ブロックが分割されてできた前記複数の領域のうち、最初の領域にデータを書き込む際は、前記不良ブロックのアドレスと前記第１の情報とを書き込み、前記第１の情報を更新する際は、前記更新された第１の情報を次の領域に書き込むことを特徴とする請求項７〜９のいずれか１項に記載のメモリコントローラ。
【請求項１２】
前記不揮発性メモリは、フラッシュメモリであることを特徴とする請求項１〜１１のいずれか１項に記載のメモリコントローラ。
【請求項１３】
データの消去単位であるブロックを複数有し、前記ブロックはデータを保持する複数のデータブロックと、前記複数のブロック中の不良ブロックのアドレスを登録する複数の管理ブロックとを含む不揮発性メモリと、
前記不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリコントローラと、を具備する不揮発性記憶装置であって、
前記メモリコントローラは、
前記複数の管理ブロック中の不良ブロックとしてアドレスが登録されたブロックを除いて１つずつ巡回的に管理ブロックを取得して、新たに発生した不良ブロックのアドレスを当該取得した管理ブロックに登録する制御部を有することを特徴とする不揮発性記憶装置。
【請求項１４】
前記メモリコントローラの制御部は、
不良ブロックのアドレスを前記複数の管理ブロックのうちの１つの管理ブロックに登録する際に、当該管理ブロックが不良ブロックとなった場合、当該管理ブロックに登録する予定であった前記不良ブロックのアドレスを含む全ての不良ブロックのアドレスを、巡回的に取得した別の管理ブロックに登録することを特徴とする請求項１３に記載の不揮発性記憶装置。
【請求項１５】
前記メモリコントローラの制御部は、
不良ブロックのアドレスを前記管理ブロックに登録する際に、当該管理ブロックが不良ブロックとなった場合、当該管理ブロックに登録する予定であった前記不良ブロックのアドレスを含む全ての不良ブロックのアドレスの登録を、巡回的に取得した別の管理ブロックに対して最大リトライ回数まで行なうことを特徴とする請求項１４に記載の不揮発性記憶装置。
【請求項１６】
前記メモリコントローラの制御部は、
前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、それぞれの管理ブロックにおいて登録されている不良ブロックの数を調べ、その数が最大の管理ブロックを最新のデータが存在する管理ブロックであると判断することを特徴とする請求項１３〜１５のいずれか１項に記載の不揮発性記憶装置。
【請求項１７】
前記メモリコントローラの制御部は、
前記管理ブロックに不良ブロックのアドレスを登録する際に不良ブロック数も書き込み、前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、前記管理ブロックに書き込まれている前記不良ブロック数から、最新のデータが存在する管理ブロックを判断することを特徴とする請求項１６に記載の不揮発性記憶装置。
【請求項１８】
前記メモリコントローラの制御部は、
前記管理ブロックのデータを更新する際、前記巡回的に取得した別の管理ブロックに書き込みを行い、書き込んだデータにエラーがないことを確認した後、元の管理ブロックのデータを消去することを特徴とする請求項１３〜１７のいずれか１項に記載の不揮発性記憶装置。
【請求項１９】
前記不揮発性メモリの管理ブロックは、不良ブロックの発生とは無関係に更新する必要のある第１の情報と、前記第１の情報の更新に伴って別の管理ブロックに前記更新された第１の情報が書き込まれるときに更新されるカウンタの情報と、を保持し、
前記メモリコントローラの制御部は、
前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、前記カウンタの値が最新で、かつ不良ブロックが登録されている数が最大のものを最新の管理ブロックであると判断することを特徴とする請求項１３〜１８のいずれか１項に記載の不揮発性記憶装置。
【請求項２０】
前記第１の情報は、論理アドレスと前記不揮発性メモリの物理アドレスとの対応関係を示す情報である請求項１９に記載の不揮発性記憶装置。
【請求項２１】
前記管理ブロックは、少なくとも前記不良ブロックのアドレス情報、前記第１の情報、及び前記カウンタとから計算されるチェックコードを保持し、
前記メモリコントローラの制御部は、最新のデータが存在する管理ブロックを検索する際、前記チェックコードを検査し、前記チェックコードが不正である管理ブロックを除外して最新のデータが存在する管理ブロックを検索することを特徴とする請求項１９又は２０に記載の不揮発性記憶装置。
【請求項２２】
前記管理ブロックはデータの書き込み単位であるページを複数備え、
前記メモリコントローラの制御部は、前記管理ブロックを前記ページ数以下の複数の領域に分割し、１つの管理ブロックについて前記複数の領域に順次データの書き込みを行い、前記複数の領域全てにデータが書き込まれた後に、別の管理ブロックを新たに使用することを特徴とする請求項１３〜２１のいずれか１項に記載の不揮発性記憶装置。
【請求項２３】
前記管理ブロックはデータの書き込み単位であるページを複数備え、
前記メモリコントローラの制御部は、前記管理ブロックを前記ページ数以下の複数の領域に分割し、１つの管理ブロックについて前記複数の領域に順次データの書き込みを行い、前記複数の領域全てにデータが書き込まれた後に、別の管理ブロックを新たに使用し、
前記管理ブロックが分割されてできた前記複数の領域のうち、最初の領域にデータを書き込む際は、前記不良ブロックのアドレスと前記第１の情報とを書き込み、前記第１の情報を更新する際は、前記更新された第１の情報を次の領域に書き込むことを特徴とする請求項１９〜２１のいずれか１項に記載の不揮発性記憶装置。
【請求項２４】
前記不揮発性メモリは、フラッシュメモリであることを特徴とする請求項１３〜２３のいずれか１項に記載の不揮発性記憶装置。
【請求項２５】
データの消去単位であるブロックを複数有し、前記ブロックはデータを保持する複数のデータブロックと、前記複数のブロック中の不良ブロックのアドレスを登録する複数の管理ブロックとを含む不揮発性メモリと、
前記不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリコントローラと、
前記メモリコントローラに対して、前記不揮発性メモリへのデータの書き込みと読み出しとを指示するアクセス装置と、を具備する不揮発性記憶システムであって、
前記メモリコントローラは、
前記複数の管理ブロック中の不良ブロックとしてアドレスが登録されたブロックを除いて１つずつ巡回的に管理ブロックを取得して、新たに発生した不良ブロックのアドレスを当該取得した管理ブロックに登録する制御部を有することを特徴とする不揮発性記憶システム。
【請求項２６】
前記メモリコントローラの制御部は、
不良ブロックのアドレスを前記複数の管理ブロックのうちの１つの管理ブロックに登録する際に、当該管理ブロックが不良ブロックとなった場合、当該管理ブロックに登録する予定であった前記不良ブロックのアドレスを含む全ての不良ブロックのアドレスを、巡回的に取得した別の管理ブロックに登録することを特徴とする請求項２５に記載の不揮発性記憶システム。
【請求項２７】
前記メモリコントローラの制御部は、
不良ブロックのアドレスを前記管理ブロックに登録する際に、当該管理ブロックが不良ブロックとなった場合、当該管理ブロックに登録する予定であった前記不良ブロックのアドレスを含む全ての不良ブロックのアドレスの登録を、巡回的に取得した別の管理ブロックに対して最大リトライ回数まで行なうことを特徴とする請求項２６に記載の不揮発性記憶システム。
【請求項２８】
前記メモリコントローラの制御部は、
前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、それぞれの管理ブロックにおいて登録されている不良ブロックの数を調べ、その数が最大の管理ブロックを最新のデータが存在する管理ブロックであると判断することを特徴とする請求項２５〜２７のいずれか１項に記載の不揮発性記憶システム。
【請求項２９】
前記メモリコントローラの制御部は、
前記管理ブロックに不良ブロックのアドレスを登録する際に不良ブロック数も書き込み、前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、前記管理ブロックに書き込まれている前記不良ブロック数から、最新のデータが存在する管理ブロックを判断することを特徴とする請求項２８に記載の不揮発性記憶システム。
【請求項３０】
前記メモリコントローラの制御部は、
前記管理ブロックのデータを更新する際、前記巡回的に取得した別の管理ブロックに書き込みを行い、書き込んだデータにエラーがないことを確認した後、元の管理ブロックのデータを消去することを特徴とする請求項２５〜２９のいずれか１項に記載の不揮発性記憶システム。
【請求項３１】
前記不揮発性メモリの管理ブロックは、不良ブロックの発生とは無関係に更新する必要のある第１の情報と、前記第１の情報の更新に伴って別の管理ブロックに前記更新された第１の情報が書き込まれるときに更新されるカウンタの情報と、を保持し、
前記メモリコントローラの制御部は、
前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、前記カウンタの値が最新で、かつ不良ブロックが登録されている数が最大のものを最新の管理ブロックであると判断することを特徴とする請求項２５〜３０のいずれか１項に記載の不揮発性記憶システム。
【請求項３２】
前記第１の情報は、論理アドレスと前記不揮発性メモリの物理アドレスとの対応関係を示す情報である請求項３１に記載の不揮発性記憶システム。
【請求項３３】
前記管理ブロックは、少なくとも前記不良ブロックのアドレス情報、前記第１の情報、及び前記カウンタとから計算されるチェックコードを保持し、
前記メモリコントローラの制御部は、最新のデータが存在する管理ブロックを検索する際、前記チェックコードを検査し、前記チェックコードが不正である管理ブロックを除外して最新のデータが存在する管理ブロックを検索することを特徴とする請求項３１又は３２に記載の不揮発性記憶システム。
【請求項３４】
前記管理ブロックはデータの書き込み単位であるページを複数備え、
前記メモリコントローラの制御部は、前記管理ブロックを前記ページ数以下の複数の領域に分割し、１つの管理ブロックについて前記複数の領域に順次データの書き込みを行い、前記複数の領域全てにデータが書き込まれた後に、別の管理ブロックを新たに使用することを特徴とする請求項２５〜３３のいずれか１項に記載の不揮発性記憶システム。
【請求項３５】
前記管理ブロックはデータの書き込み単位であるページを複数備え、
前記メモリコントローラの制御部は、前記管理ブロックを前記ページ数以下の複数の領域に分割し、１つの管理ブロックについて前記複数の領域に順次データの書き込みを行い、前記複数の領域全てにデータが書き込まれた後に、別の管理ブロックを新たに使用し、
前記管理ブロックが分割されてできた前記複数の領域のうち、最初の領域にデータを書き込む際は、前記不良ブロックのアドレスと前記第１の情報とを書き込み、前記第１の情報を更新する際は、前記更新された第１の情報を次の領域に書き込むことを特徴とする請求項３１〜３３のいずれか１項に記載の不揮発性記憶システム。
【請求項３６】
前記不揮発性メモリは、フラッシュメモリであることを特徴とする請求項２５〜３５のいずれか１項に記載の不揮発性記憶システム。
【請求項３７】
データの消去単位であるブロックを複数有し、前記ブロックはデータを保持する複数のデータブロックと、前記複数のブロック中の不良ブロックのアドレスを登録する複数の管理ブロックとを含む不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリ制御方法であって、
前記複数の管理ブロック中の不良ブロックとしてアドレスが登録されたブロックを除いて１つずつ巡回的に管理ブロックを取得し、
新たに発生した不良ブロックのアドレスを当該取得した管理ブロックに登録することを特徴とするメモリ制御方法。
【請求項３８】
不良ブロックのアドレスを前記複数の管理ブロックのうちの１つの管理ブロックに登録する際に、当該管理ブロックが不良ブロックとなった場合、当該管理ブロックに登録する予定であった前記不良ブロックのアドレスを含む全ての不良ブロックのアドレスを、巡回的に取得した別の管理ブロックに登録することを特徴とする請求項３７に記載のメモリ制御方法。
【請求項３９】
不良ブロックのアドレスを前記管理ブロックに登録する際に、当該管理ブロックが不良ブロックとなった場合、当該管理ブロックに登録する予定であった前記不良ブロックのアドレスを含む全ての不良ブロックのアドレスの登録を、巡回的に取得した別の管理ブロックに対して最大リトライ回数まで行なうことを特徴とする請求項３８に記載のメモリ制御方法。
【請求項４０】
前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、それぞれの管理ブロックにおいて登録されている不良ブロックの数を調べ、
その数が最大の管理ブロックを最新のデータが存在する管理ブロックであると判断することを特徴とする請求項３７〜３９のいずれか１項に記載のメモリ制御方法。
【請求項４１】
前記管理ブロックに不良ブロックのアドレスを登録する際に不良ブロック数も書き込み、
前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、前記管理ブロックに書き込まれている前記不良ブロック数から、最新のデータが存在する管理ブロックを判断することを特徴とする請求項４０に記載のメモリ制御方法。
【請求項４２】
前記管理ブロックのデータを更新する際、前記巡回的に取得した別の管理ブロックに書き込みをし、
書き込んだデータにエラーがないことを確認した後、元の管理ブロックのデータを消去することを特徴とする請求項３７〜４１のいずれか１項に記載のメモリ制御方法。
【請求項４３】
前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、不良ブロックの発生とは無関係に更新する必要のある第１の情報の更新に伴って別の管理ブロックに前記更新された第１の情報が書き込まれるときに更新されるカウンタの値が最新で、かつ不良ブロックが登録されている数が最大のものを最新の管理ブロックであると判断することを特徴とする請求項３７〜４２のいずれか１項に記載のメモリ制御方法。
【請求項４４】
前記第１の情報は、論理アドレスと前記不揮発性メモリの物理アドレスとの対応関係を示す情報である請求項４３に記載のメモリ制御方法。
【請求項４５】
最新のデータが存在する管理ブロックを検索する際、少なくとも前記不良ブロックのアドレス情報、前記第１の情報、及び前記カウンタとから計算されるチェックコードを検査し、
前記チェックコードが不正である管理ブロックを除外して最新のデータが存在する管理ブロックを検索することを特徴とする請求項４３又は４４に記載のメモリ制御方法。
【請求項４６】
前記管理ブロックのデータの書き込み単位であるページの数以下の複数の領域に前記管理ブロックを分割し、
１つの管理ブロックについて前記複数の領域に順次データを書き込み、
前記複数の領域全てにデータが書き込まれた後に、別の管理ブロックを新たに使用することを特徴とする請求項３７〜４５のいずれか１項に記載のメモリ制御方法。
【請求項４７】
前記管理ブロックのデータの書き込み単位であるページの数以下の複数の領域に前記管理ブロックを分割し、
１つの管理ブロックについて前記複数の領域に順次データを書き込み、
前記複数の領域全てにデータが書き込まれた後に、別の管理ブロックを新たに使用し、
前記管理ブロックが分割されてできた前記複数の領域のうち、最初の領域にデータを書き込む際は、前記不良ブロックのアドレスと前記第１の情報とを書き込み、
前記第１の情報を更新する際は、前記更新された第１の情報を次の領域に書き込むことを特徴とする請求項４３〜４５のいずれか１項に記載のメモリ制御方法。
【請求項４８】
前記不揮発性メモリは、フラッシュメモリであることを特徴とする請求項３７〜４７のいずれか１項に記載のメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書換え可能な不揮発性メモリをデータ記憶媒体として有する半導体メモリカード等の不揮発性記憶装置と、これに内蔵されるメモリコントローラと、さらに、アクセス装置を構成要素に加えた不揮発性記憶システム、及びメモリコントローラにおけるメモリ制御方法とに関するものである。
【背景技術】
【０００２】
書き換え可能な不揮発性メモリを備えた不揮発性記憶装置は、半導体メモリカードを中心に広く用いられており、この半導体メモリカードを使った不揮発性記憶装置は、デジタルスチルカメラやパーソナルコンピュータ等と組み合わせた不揮発性記憶システムとして、その需要が広まっている。現在様々な種類の半導体メモリカードが存在している。
【０００３】
メモリカードは、データを記憶するフラッシュメモリと、それを制御するメモリコントローラＬＳＩとから構成されている。メモリコントローラＬＳＩは、デジタルスチルカメラ等のアクセス装置の読み書き指示に対応して、フラッシュメモリへのデータの読み書きを制御するデバイスである。フラッシュメモリは、代表的なものにＮＡＮＤタイプやＡＮＤタイプなどがある。
【０００４】
これらのメモリチップの中には、データの消去単位となるブロックが複数存在しており、さらにひとつのブロック内には、データの書き込み単位となるページが複数存在している。即ち、書込み単位であるページのサイズは、消去単位であるブロックのサイズよりも小さい。また、フラッシュメモリは、書込みと消去を繰り返すにつれて読み出しや書込みが不能となった不良ブロックが増加するので、発生した不良ブロックを回避しつつフラッシュメモリの使用を続ける必要がある。不良ブロックを回避する方法としては、特許文献１に開示されたような方法がある。
【０００５】
この方法は、まずエラーが発生すると元のエラー情報に新しいエラーの情報を加えてエラー情報を更新する。次に、エラー情報を格納しているエラー情報領域を一旦消去してから、更新されたエラー情報をエラー情報領域に書き込む。このようにエラー情報の書換えを行なって不良ブロックの使用を回避している。
【特許文献１】特許第３６０９７３９号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
書込み単位であるページにページの容量より小さいデータを書き込むと、そのページには、データが書き込まれていない空白の部分が生じる。この空白の部分を有効利用するには、ページの容量を満たすまで、空白の部分にデータを書き足せばよい。しかし実際には、フラッシュメモリの特性を考慮して同一ページへデータを書き足せる回数には上限が決められている。
【０００７】
特許文献１のような構成では、エラー情報領域がフラッシュメモリ上に１箇所しか確保されていないので、エラー情報領域のエラー情報の更新の手順は、まず既にあるエラー情報を消去してから、新しく更新されたエラー情報を書き込むようになっている。このような更新の手順では、消去もしくは書き込みの途中でエラーが発生したり、外的要因により電源遮断が発生したりすると、消去前にエラー情報領域に存在した直前のエラー情報が既に失われてしまっているので、エラー情報を復旧することができなくなってしまう。
【０００８】
上述のような電源遮断によるエラー情報の消失を防ぐために、エラー情報領域のデータを消失することなくエラー情報を書き足す方法が考えられる。しかし、エラー情報領域の１つの書込み単位であるページの容量に対して、エラー情報が非常に小さいため上限の回数までエラー情報を書き足してもエラー情報はページの容量を満たさないのでデータが書き込まれていない空白の部分が生じてしまう。このように、フラッシュメモリの容量に含まれるエラー情報領域の容量は有効に利用されていない。
【０００９】
本発明は、エラー情報の格納の際に不揮発性メモリの容量を有効に利用することと、エラー情報の更新の際にエラーや電源遮断が発生しても既に書き込まれている直前のエラー情報を失わないようにすることとを目的としている。
【課題を解決するための手段】
【００１０】
この課題を解決するため、本発明のメモリコントローラは、データの消去単位であるブロックを複数有し、前記ブロックはデータを保持する複数のデータブロックと、前記複数のブロック中の不良ブロックのアドレスを登録する複数の管理ブロックとを含む不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリコントローラであって、
前記複数の管理ブロック中の不良ブロックとしてアドレスが登録されたブロックを除いて１つずつ巡回的に管理ブロックを取得して、新たに発生した不良ブロックのアドレスを当該取得した管理ブロックに登録する制御部を有することを特徴とするものである。
【００１１】
この課題を解決するため、本発明の不揮発性記憶装置は、データの消去単位であるブロックを複数有し、前記ブロックはデータを保持する複数のデータブロックと、前記複数のブロック中の不良ブロックのアドレスを登録する複数の管理ブロックとを含む不揮発性メモリと、前記不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリコントローラと、を具備する不揮発性記憶装置であって、前記メモリコントローラは、前記複数の管理ブロック中の不良ブロックとしてアドレスが登録されたブロックを除いて１つずつ巡回的に管理ブロックを取得して、新たに発生した不良ブロックのアドレスを当該取得した管理ブロックに登録する制御部を有することを特徴とするものである。
【００１２】
この課題を解決するため、本発明の不揮発性記憶システムは、データの消去単位であるブロックを複数有し、前記ブロックはデータを保持する複数のデータブロックと、前記複数のブロック中の不良ブロックのアドレスを登録する複数の管理ブロックとを含む不揮発性メモリと、前記不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリコントローラと、前記メモリコントローラに対して、前記不揮発性メモリへのデータの書き込みと読み出しとを指示するアクセス装置と、を具備する不揮発性記憶システムであって、前記メモリコントローラは、前記複数の管理ブロック中の不良ブロックとしてアドレスが登録されたブロックを除いて１つずつ巡回的に管理ブロックを取得して、新たに発生した不良ブロックのアドレスを当該取得した管理ブロックに登録する制御部を有することを特徴とするものである。
【００１３】
ここで前記制御部は、不良ブロックのアドレスを前記複数の管理ブロックのうちの１つの管理ブロックに登録する際に、当該管理ブロックが不良ブロックとなった場合、当該管理ブロックに登録する予定であった前記不良ブロックのアドレスを含む全ての不良ブロックのアドレスを、巡回的に取得した別の管理ブロックに登録するようにしてもよい。
【００１４】
ここで前記制御部は、不良ブロックのアドレスを前記管理ブロックに登録する際に、当該管理ブロックが不良ブロックとなった場合、当該管理ブロックに登録する予定であった前記不良ブロックのアドレスを含む全ての不良ブロックのアドレスの登録を、巡回的に取得した別の管理ブロックに対して最大リトライ回数まで行なうようにしてもよい。
【００１５】
ここで前記制御部は、前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、それぞれの管理ブロックにおいて登録されている不良ブロックの数を調べ、その数が最大の管理ブロックを最新のデータが存在する管理ブロックであると判断するようにしてもよい。
【００１６】
ここで前記制御部は、前記管理ブロックに不良ブロックのアドレスを登録する際に不良ブロック数も書き込み、前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、前記管理ブロックに書き込まれている前記不良ブロック数から、最新のデータが存在する管理ブロックを判断するようにしてもよい。
【００１７】
ここで前記制御部は、前記管理ブロックのデータを更新する際、前記巡回的に取得した別の管理ブロックに書き込みを行い、書き込んだデータにエラーがないことを確認した後、元の管理ブロックのデータを消去するようにしてもよい。
【００１８】
ここで前記制御部は、前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、不良ブロックの発生とは無関係に更新する必要のある第１の情報の更新に伴って、別の管理ブロックに前記更新された第１の情報が書き込まれるときに更新されるカウンタの値が最新で、かつ不良ブロックが登録されている数が最大のものを最新の管理ブロックであると判断するようにしてもよい。
【００１９】
ここで前記第１の情報は、論理アドレスと前記不揮発性メモリの物理アドレスとの対応関係を示す情報としてもよい。
【００２０】
ここで前記制御部は、最新のデータが存在する管理ブロックを検索する際、少なくとも前記不良ブロックのアドレス情報、前記第１の情報、及び前記カウンタとから計算されるチェックコードを検査し、前記チェックコードが不正である管理ブロックを除外して最新のデータが存在する管理ブロックを検索するようにしてもよい。
【００２１】
ここで前記制御部は、前記管理ブロックのデータの書き込み単位であるページの数以下の複数の領域に前記管理ブロックを分割し、１つの管理ブロックについて前記複数の領域に順次データの書き込みを行い、前記複数の領域全てにデータが書き込まれた後に、別の管理ブロックを新たに使用するようにしてもよい。
【００２２】
ここで前記制御部は、前記管理ブロックはデータの書き込み単位であるページの数以下の複数の領域に前記管理ブロックを分割し、１つの管理ブロックについて前記複数の領域に順次データの書き込みを行い、前記複数の領域全てにデータが書き込まれた後に、別の管理ブロックを新たに使用し、前記管理ブロックが分割されてできた前記複数の領域のうち、最初の領域にデータを書き込む際は、前記不良ブロックのアドレスと前記第１の情報とを書き込み、前記第１の情報を更新する際は、前記更新された第１の情報を次の領域に書き込むようにしてもよい。
【００２３】
ここで前記不揮発性メモリは、フラッシュメモリとしてもよい。
【００２４】
この課題を解決するため、本発明のメモリ制御方法は、データの消去単位であるブロックを複数有し、前記ブロックはデータを保持する複数のデータブロックと、前記複数のブロック中の不良ブロックのアドレスを登録する複数の管理ブロックとを含む不揮発性メモリに対してデータの書き込み及び読み出しを制御するメモリ制御方法であって、前記複数の管理ブロック中の不良ブロックとしてアドレスが登録されたブロックを除いて１つずつ巡回的に管理ブロックを取得し、新たに発生した不良ブロックのアドレスを当該取得した管理ブロックに登録することを特徴とするものである。
【００２５】
ここで不良ブロックのアドレスを前記複数の管理ブロックのうちの１つの管理ブロックに登録する際に、当該管理ブロックが不良ブロックとなった場合、当該管理ブロックに登録する予定であった前記不良ブロックのアドレスを含む全ての不良ブロックのアドレスを、巡回的に取得した別の管理ブロックに登録するようにしてもよい。
【００２６】
ここで不良ブロックのアドレスを前記管理ブロックに登録する際に、当該管理ブロックが不良ブロックとなった場合、当該管理ブロックに登録する予定であった前記不良ブロックのアドレスを含む全ての不良ブロックのアドレスの登録を、巡回的に取得した別の管理ブロックに対して最大リトライ回数まで行なうようにしてもよい。
【００２７】
ここで前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、それぞれの管理ブロックにおいて登録されている不良ブロックの数を調べ、その数が最大の管理ブロックを最新のデータが存在する管理ブロックであると判断するようにしてもよい。
【００２８】
ここで前記管理ブロックに不良ブロックのアドレスを登録する際に不良ブロック数も書き込み、前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、前記管理ブロックに書き込まれている前記不良ブロック数から、最新のデータが存在する管理ブロックを判断するようにしてもよい。
【００２９】
ここで前記管理ブロックのデータを更新する際、前記巡回的に取得した別の管理ブロックに書き込みをし、書き込んだデータにエラーがないことを確認した後、元の管理ブロックのデータを消去するようにしてもよい。
【００３０】
ここで前記複数の管理ブロックから最新のデータが存在する管理ブロックを検索する際、不良ブロックの発生とは無関係に更新する必要のある第１の情報の更新に伴って別の管理ブロックに前記更新された第１の情報が書き込まれるときに更新されるカウンタの値が最新で、かつ不良ブロックが登録されている数が最大のものを最新の管理ブロックであると判断するようにしてもよい。
【００３１】
ここで前記第１の情報は、論理アドレスと前記不揮発性メモリの物理アドレスとの対応関係を示す情報としてもよい。
【００３２】
ここで最新のデータが存在する管理ブロックを検索する際、少なくとも前記不良ブロックのアドレス情報、前記第１の情報、及び前記カウンタとから計算されるチェックコードを検査し、前記チェックコードが不正である管理ブロックを除外して最新のデータが存在する管理ブロックを検索するようにしてもよい。
【００３３】
ここで前記管理ブロックのデータの書き込み単位であるページの数以下の複数の領域に前記管理ブロックを分割し、１つの管理ブロックについて前記複数の領域に順次データを書き込み、前記複数の領域全てにデータが書き込まれた後に、別の管理ブロックを新たに使用するようにしてもよい。
【００３４】
ここで前記管理ブロックのデータの書き込み単位であるページの数以下の複数の領域に前記管理ブロックを分割し、１つの管理ブロックについて前記複数の領域に順次データを書き込み、前記複数の領域全てにデータが書き込まれた後に、別の管理ブロックを新たに使用し、前記管理ブロックが分割されてできた前記複数の領域のうち、最初の領域にデータを書き込む際は、前記不良ブロックのアドレスと前記第１の情報とを書き込み、前記第１の情報を更新する際は、前記更新された第１の情報を次の領域に書き込むようにしてもよい。
【００３５】
ここで前記不揮発性メモリは、フラッシュメモリとしてもよい。
【発明の効果】
【００３６】
以上のような本発明によれば、不良ブロックのアドレスなどのエラー情報を更新する際、更新された不良ブロックのアドレス情報をメモリ上の別の場所に書き込んでエラー情報を蓄積するので、書き込み単位である１つのページへデータを書き足す回数に上限があるフラッシュメモリでもメモリ容量を有効に利用できる。さらに、管理ブロックの情報を更新する際に、エラーや電源遮断が発生しても既に管理ブロックに書き込まれている直前のエラー情報が失われることがないという、優れたメモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法を実現できる。
【発明を実施するための最良の形態】
【００３７】
次に本発明の実施の形態について説明する。図１は、本実施の形態における不揮発性記憶システムを示した構成図である。不揮発性記憶システム１００は、データの書込み及び読出しを指示するアクセス装置１０１と、不揮発性記憶装置１０２とを含んでいる。不揮発性記憶装置１０２は、アクセス装置１０１から送られたユーザデータやユーザデータの管理に用いるデータを格納するフラッシュメモリで構成された不揮発性メモリ１１０と、アクセス装置１０１の指示に従って不揮発性メモリ１１０に対するデータの書込み及び読出しを制御するメモリコントローラ１０３とを備えている。メモリコントローラ１０３は、バッファ１０５とＲＯＭ１０８とＲＡＭ１０７とＣＰＵ１０６とを有する制御部と、ホストＩ／Ｆ１０４と、不揮発性メモリＩ／Ｆ１０９とを備えている。
【００３８】
メモリコントローラ１０３において、ホストＩ／Ｆ１０４はアクセス装置１０１との間でユーザデータや各種のコマンドを送受信するものであり、不揮発性メモリＩ／Ｆ１０９は不揮発性メモリ１１０との間でユーザデータや管理のためのデータを送受信するものである。ＲＯＭ１０８はメモリコントローラの処理を実行するためのプログラムを格納しており、ＲＡＭ１０７はＲＯＭ１０８に格納されたプログラムを実行する際に用いられる。バッファ１０５はアクセス装置１０１及び不揮発性メモリ１１０からのデータを一時的に蓄積したりＲＡＭ１０７を補ったりするものである。ＣＰＵ１０６は、ＲＡＭ１０７を用いて、ＲＯＭ１０８に格納されたプログラムを実行し、不揮発性メモリＩ／Ｆ１０９を介して、不揮発性メモリ１１０にデータの書き込みと読み出し及び消去を実現する。
【００３９】
図２は、本実施の形態における不揮発性メモリ１１０の構成図である。不揮発性メモリ１１０は複数のブロックで構成されたフラッシュメモリである。各ブロックはデータの消去単位である。例えば、メモリ容量が１Ｇバイトのフラッシュメモリにおいて、データの消去単位が５１２ｋバイトであれば、ブロックは２０４８個存在することになる。本図は、この複数のブロックを管理領域２０１とデータ領域２０２に分けて使用することと、両領域はそれぞれ複数のブロックを含むこととを示している。管理領域２０１のブロックを管理ブロックといい、データ領域２０２のブロックをデータブロックという。本図では、管理領域２０１はＭＢ−１からＭＢ−ｍまでのブロックを含み、データ領域２０２はＤＢ−１からＤＢ−ｎまでのブロックを含んでいる。各ブロックは複数のページで構成されており、各ページはデータの書込み単位である。本図に示すように、ブロックＭＢ−２はＭＰ−１からＭＰ−ｓまでのページを含んでいる。各ブロックは管理領域２０１、データ領域２０２を問わず同様の構成である。ページの容量を２ｋバイトとすれば、１つのブロックにはページが２５６個存在することになる。
【００４０】
各ページには１回もしくは複数回のデータの書き足しが可能であるが、１つのページのデータだけを消去するということはできない。つまり、データの消去では、消去単位であるブロック内のデータを一度に消去しなければならない。従って先の例でいえば２５６ページ分のデータを一度に消去することになる。しかし、一旦消去した後は再びページ単位で１回もしくは複数回の書き込みが可能となる。
【００４１】
図３は、データブロックＤＢ−ｉ（ｉ＝１〜ｎ）の構成図である。先述の管理ブロックと同様に、データブロックはＤＰ−１からＤＰ−ｓまでの複数のページで構成されており、各ページはアクセス装置１０１から送られたユーザデータを格納するデータ部３０１と、そのユーザデータに対応した論理アドレスを格納する冗長部３０２とで構成される。つまり、メモリコントローラ１０３が、１つのページをデータ部３０１と冗長部３０２に区別して各ページを使用する。
【００４２】
図４は、管理ブロックＭＢ−ｊ（ｊ＝１〜ｍ）の構成図である。管理ブロックも先述のとおりＭＰ−１からＭＰ−ｓまでの複数のページで構成されており、その先頭ページであるＭＰ−１には、論理アドレスとデータブロックの物理アドレスとの対応を表す第１の情報であるアドレステーブルと、不揮発性メモリ１１０の書き込みや消去においてエラーが発生し、以後使用できなくなったブロックのアドレスを示す不良ブロックアドレス情報とが格納されている。尚、不良ブロックアドレス情報は、管理領域２０１とデータ領域２０２の両方の不良ブロックのアドレスを含んでいる。さらにＭＰ−１には、不良ブロックアドレス情報に含まれる不良ブロックの数を示す不良ブロック数と、カウンタ及びチェックコードも当該先頭ページに格納されている。尚チェックコードは、ページに書き込まれたデータのエラーを検証するためにあり、ＭＰ−１からＭＰ−ｓまでの各ページにはそのページのデータに対するチェックコードが格納されている。ＭＰ−１以外のページにはアドレステーブルとチェックコードが格納されている。尚、カウンタは、アドレステーブルが更新された後、更新されたアドレステーブルを別の管理ブロックの先頭ページへの書き込むときにインクリメントされる。カウンタは、複数の管理ブロックの中で最も新しいデータを保持する管理ブロックであることを示す値を一意に特定できるだけのビット数を有する。また、チェックコードは、ページ内のデータの正当性をチェックするためのもので各ページに格納されている。その例として、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）が挙げられるが、誤り訂正、検出が可能なＲＳ（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ）符号等のＥＣＣコードも使用可能である。
【００４３】
以下に、別の管理ブロックに使用を変更する場合の手順を説明する。図４において管理ブロックは、まず初めに、初期状態の先述の各情報を先頭ページＭＰ−１に格納している。続いて、データ領域２０２のデータが書き換えられて論理アドレスと物理アドレスの対応が変化するとアドレステーブルが更新され、更新された最新のアドレステーブルとチェックコードは次ページのＭＰ−２に書き込まれる。以降アドレステーブルの更新が行なわれると、最新のアドレステーブルが順次次ページに書き込まれる。このように、先頭ページ以外のページにはアドレステーブルとチェックコードの情報しか格納しないようにすると、アドレステーブル更新時の処理を高速化することができる。また、先頭ページに不良ブロック数を格納しているが、これにより、不良ブロックアドレス情報を参照して不良ブロックを数える手間を省くことができ、処理を高速化することができる。
【００４４】
図５は本実施の形態における管理領域２０１の管理ブロックの使用方法である。図中先頭の管理ブロックからＭＢ−１、ＭＢ−２、ＭＢ−３と順に番号が付されており、先頭の管理ブロックであるＭＢ−１から順に１つずつ巡回的に管理ブロックが使用されるので、同時に複数の管理ブロックにデータが書込まれることはない。本図では、不良ブロックであるＭＢ−３の管理ブロックをとばして、ＭＢ−２の次にＭＢ−４を使用している様子を表している。このように、管理領域には複数の管理ブロックが存在し、それぞれが先述の図４に示した構成となっている。現在使用している管理ブロックから別の管理ブロックに使用を変更するきっかけは２つあり、１つはアドレステーブルの更新で、もう１つは不良ブロックアドレス情報の更新である。
【００４５】
１つ目のきっかけであるアドレステーブルの更新において、更新されたアドレステーブルは、先述のとおり管理ブロック内で順次新しいページに書き込まれるが、全てのページにデータが書き込まれていて次に書き込むページがないときは、別の管理ブロックの先頭ページに先述した他のデータと共に書き込まれる。つまり、別の管理ブロックの先頭ページには、更新されたアドレステーブルが書き込まれ、カウンタの値には直前の管理ブロックの値からインクリメントされた値が書き込まれる。その他の不良ブロックアドレス情報と不良ブロック数は直前の管理ブロックのデータと同じものが書き込まれて、チェックコードには書き込まれたデータに対応したものが書き込まれる。このようにして別の新しい管理ブロックの先頭ページが使用され、次にアドレステーブルが更新されると、先頭ページの次のページに更新されたアドレステーブルが書き込まれる。
【００４６】
２つ目のきっかけである不良ブロックアドレス情報が更新される場合について説明する。不良ブロックが発生し、その不良ブロックのアドレスが不良ブロックアドレス情報に新たに加えられ、不良ブロックアドレス情報が更新されると、管理ブロックの先頭ページの不良ブロックアドレス情報を書換えなければならない。そのとき、当該先頭ページのデータは消去しないで、別の新しい管理ブロックの先頭ページに更新された不良ブロックアドレス情報を書き込む。この先頭ページには不良ブロックアドレス情報に合わせて更新された不良ブロック数が書き込まれる。その他のアドレステーブルとカウンタは直前の管理ブロックの先頭ページのデータと同じものである。また、チェックコードには書き込まれたデータに対応したものが書き込まれる。
【００４７】
別の管理ブロックに使用を変更する際、アドレステーブルの更新に伴う場合はカウンタの値が更新され、不良ブロックアドレス情報の更新に伴う場合は不良ブロック数が更新される。これによると、カウンタの値が同一で不良ブロック数が異なる管理ブロックや、その反対で不良ブロック数が同一でカウンタの値が異なる管理ブロックが発生する。しかし、カウンタと不良ブロック数の両方を用いれば、現在使われている最新の管理ブロックを特定することができる。
【００４８】
続いて、本実施の形態の不揮発性記憶システムにおけるデータ書込み処理について説明する。図６は、不揮発性記憶装置１０２の管理ブロックの検索処理を表すフロー図である。アクセス装置１０１から不揮発性記憶装置１０２に電力が供給されると、不揮発性記憶装置１０２のメモリコントローラ１０３はアドレス情報の取得や、メモリの消去などの初期化処理を行なう。この初期化処理に続いて、図６に示すように最新のデータが存在する管理ブロックの検索を開始する。
【００４９】
まず、先頭の管理ブロックを対象ブロックとする（Ｓ６０１）。次に対象ブロックの先頭ページのデータを読み出す（Ｓ６０２）。そして、対象ブロックが消去済みのブロックであるか否かを判断する（Ｓ６０３）。消去済みのブロックでない場合は、読み出したデータが正しいものであるか否かを判断するために、チェックコードが正しいかどうかを調べる（Ｓ６０４）。チェックコードが正しければ、次に、不良ブロック数がそれまでに検索した管理ブロックの中で最大であるか否かを判断する（Ｓ６０５）。次に、不良ブロック数が最大であれば、カウンタがそれまでに検索した管理ブロックの中で最新の値であるか否かを判断する（Ｓ６０６）。最新の値であれば、対象ブロックを最新の管理ブロックであるとする（Ｓ６０７）。そして、対象ブロックが最終の管理ブロックであるか否かを判断する（Ｓ６０８）。最終の管理ブロックでなければ、次の管理ブロックを対象ブロックとし（Ｓ６０９）、Ｓ６０２に戻って検索処理を継続する。最終の管理ブロックであれば検索処理を終了する。このようにすれば、検索処理の終了時に保持している最新の管理ブロックに最新のデータが存在することになり、そのデータをＲＡＭまたはバッファ上に保持して不揮発性記憶装置の管理ブロックの検索処理を終える。尚、Ｓ６０３で消去済みの管理ブロックであった場合、Ｓ６０４でチェックコードが不正であった場合、Ｓ６０５で不良ブロック数が最大でなかった場合、Ｓ６０６でカウンタが最新でなかった場合は、当該管理ブロックは最新のデータを持つ管理ブロックではないので、Ｓ６０８の処理に移る。
【００５０】
図７は、不揮発性メモリ１１０にデータを書き込む際の処理を示すフロー図である。不揮発性メモリにデータが書き込まれると（Ｓ７０１）、書き込まれた当該データにエラーがあるかどうかを判断する（Ｓ７０２）。エラーがあれば当該データブロックのアドレスを不良ブロックアドレス情報に登録する（Ｓ７０３）。正しく書き込まれていて、エラーがなければアドレステーブルを更新して（Ｓ７０４）、当該処理を終了する。
【００５１】
Ｓ７０３で行なわれる、データブロックのアドレスを不良ブロックアドレス情報に登録する手順を図８のフロー図を用いて説明する。データブロックに書き込んだデータにエラーがあると、メモリコントローラ１０３は、バッファ上もしくはＲＡＭ上に、最新のデータが存在する管理ブロックの最新のアドレステーブルを格納しているページからアドレステーブルを読み出す（Ｓ８０１）。そして、その管理ブロックの先頭ページにある、不良ブロックアドレス情報、不良ブロック数、カウンタの最新の情報を読み出す（Ｓ８０２）。続いて、Ｓ８０２で読み出した不良ブロックアドレス情報に新たな不良ブロックのアドレスを追加し（Ｓ８０３）、Ｓ８０２で読み出した不良ブロック数をインクリメントする（Ｓ８０４）。しかる後に、新たな管理ブロックを取得する（Ｓ８０５）。新たな管理ブロックは管理領域２０１内で巡回的に取得するが、不良ブロックアドレス情報に登録された不良ブロックを除外して取得する。次に、新たな管理ブロックの先頭ページにＳ８０１で読み出したアドレステーブルとＳ８０２で読み出したカウンタと、更新された不良ブロックアドレス情報と、不良ブロックアドレスと、これらデータに対応したチェックコードとを書き込む（Ｓ８０６）。そして、エラーがないかどうかを判断する（Ｓ８０７）。エラーがなければ、不良ブロックアドレス情報の登録は成功であり、これに続いて直前の管理ブロックのデータを消去する。エラーがあれば、今回の新たな管理ブロックの取得が、管理ブロック取得に対する最大リトライ回数を超えるか否かを判断する（Ｓ８０８）。最大リトライ回数は予め定められており、Ｓ８０７でエラーが検出され新たな管理ブロックの取得ができなかった場合に、新たな管理ブロックの取得を試みる回数の上限を示している。超えない場合は再びＳ８０３に戻って、Ｓ８０７でエラーが確認されたデータブロックのアドレスを不良ブロックアドレスとして不良ブロックアドレス情報に追加して、以下同様の処理を繰り返す。Ｓ８０３に戻る際は、バッファ上もしくはＲＡＭ上に保持しているアドレステーブル、不良ブロックアドレス情報、不良ブロック数、カウンタを保持したまま戻る必要がある。最大リトライ回数を超える場合は、不良ブロックアドレス情報の登録は失敗であり、アクセス装置に対してエラーを返して処理を終了する。
【００５２】
このように失敗で終了するケースもあるが、リトライを続けるよりもよい場合がある。フラッシュメモリを用いた不揮発性メモリ１１０でエラーが発生する確率は小さいので、連続して何回もエラーが発生するときは、電源異常等の他の異常が発生している可能性がある。メモリ以外の異常が原因でエラーが発生したにもかかわらず、当該ブロックを不良ブロックアドレスに加えることは、本来エラーにならないはずの正常なブロックを使用不可能にしまうということになる。これは大きな問題となるため、Ｓ８０８のように最大リトライ回数で判断し、それを越える場合に不良ブロックのアドレスの登録を諦めるというのは有効な方法である。
【００５３】
Ｓ７０４で行なわれるアドレステーブルの更新手順を、図９Ａ、図９Ｂを用いて説明する。まず、メモリコントローラ１０３はバッファまたはＲＡＭ上に、最新のデータが存在する管理ブロックの最新のアドレステーブルが格納されているページからアドレステーブルを読み出す（Ｓ９０１）。そして読み出したアドレステーブルの内容をバッファもしくはＲＡＭ上で更新する（Ｓ９０２）。次に、最新のデータが存在する管理ブロック内に新たにアドレステーブルを書き込むための空きページが存在するかを判断する（Ｓ９０３）。存在すれば、その空きページに更新されたアドレステーブルを書き込む（Ｓ９０４）。空きページが存在しなければ、新たな管理ブロックに書き込む必要がある。そのために、最新のデータが存在する管理ブロックの先頭ページのデータを読み出し、不良ブロックアドレス情報、不良ブロック数、カウンタの最新の情報を取得する（Ｓ９０５）。次に、カウンタの値をインクリメントし（Ｓ９０６）、新たな管理ブロックを取得する（Ｓ９０７）。この際に、不良ブロックアドレス情報に登録されている不良ブロックを除外して新たな管理ブロックを取得する。こうして、新たな管理ブロックの先頭ページに不良ブロックアドレス情報と、不良ブロック数と、更新されたアドレステーブル、カウンタと、これらデータに対応したチェックコードを書き込む（Ｓ９０８）。
【００５４】
次に図９Ｂに示すように、Ｓ９０４またはＳ９０８の書き込みの後に、書き込んだデータにエラーがあるかどうかを判断する（Ｓ９０９）。エラーがなければ、アドレステーブルの更新は成功であり、処理を終了する。エラーがあれば、最新のデータを持つ管理ブロックの先頭ページのデータを読み出す（Ｓ９１０）。しかし、Ｓ９０５で既に当該データを読み出している場合はＳ９１０の処理はとばしても良い。次に、管理ブロックの不良ブロックアドレス情報の登録を行ない（Ｓ９１１）、このとき書き込まれたデータにエラーがあるかどうかを判断する（Ｓ９１２）。エラーがあれば、今回の不良ブロックアドレス情報の登録が最大リトライ回数を超えるかどうかを判断し（Ｓ９１３）、超えていなければＳ９１１へ戻って再度不良ブロックアドレス情報の登録を行なう。最大リトライ回数を超えていれば、不良ブロックアドレス情報の登録は失敗であり、アクセス装置に対してエラーを返して処理を終了する。Ｓ９１２でエラーがなければアドレステーブルの更新の処理を終える。
【００５５】
尚、Ｓ９１１の内容については、図１０に示したとおりであり、Ｓ１００１，１００２，１００３，１００４はそれぞれ、図８のＳ８０３，８０４，８０５，８０６と同様の処理を行なうので、ここでは説明を省略する。
【００５６】
以上のように、不良ブロックアドレスの登録またはアドレステーブルの更新を経てデータブロックへのデータの書込みが行なわれる。このような本実施の形態によれば、新たな管理ブロックへの書き込みが成功した直後に古い管理ブロックを消去するので、処理の途中でエラーや電源遮断が発生しても、更新前後の少なくとも一方の管理ブロックのデータは不揮発性メモリ１１０に記憶され残っている。そのため、更新されたデータをメモリに書き込む際のエラーや電源遮断により、更新直前のデータまでもが一緒に消えてしまうということはない。また、管理ブロックの消去の際にエラーが発生し、当該管理ブロックが不良ブロックとなった場合でも、図９及び図１０に示した処理によって、当該管理ブロックは不良ブロックアドレス情報に加えられるので、以後使用されることはない。さらに、不良ブロックアドレス情報は更新によって蓄積され、１つのまとまりとしてページに書き込まれるので、ページの容量を有効に活用することができる。
【００５７】
なお、本発明の本実施の形態において、アドレステーブル、不良ブロックアドレス情報、不良ブロック数、カウンタは管理ブロックの先頭ページに配置したが、必ずしも先頭ページにある必要はない。また、アドレステーブル、不良ブロックアドレス情報は共に１つのページ内に格納されているが、複数ページを使用して格納するように構成することも可能である。さらに、不良ブロックアドレス情報と不良ブロック数は、１つの管理ブロックに１回のみ登録するものとしたが、データ領域２０２で新たな不良ブロックが発生した場合や管理領域２０１の消失で新たな不良ブロックが発生した場合には、最新の管理ブロックに空きページが存在すれば、最新の管理ブロックに複数回登録することも可能である。また、管理ブロックは１つのブロックで構成するものとしたが、複数のブロックをまとめて１つの管理ブロックとして構成することも可能である。
【産業上の利用可能性】
【００５８】
本発明のメモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法は、不良ブロックのアドレス管理において信頼性が高く、かつメモリ容量を有効に使用できる。本発明は静止画記録再生装置や動画記録再生装置等のポータブルＡＶ機器、あるいは携帯電話等のポータブル通信機器の記録再生用途として有益である。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施の形態における不揮発性記憶システムを示した構成図である。
【図２】本発明の実施の形態における不揮発性メモリを示した構成図である。
【図３】本発明の実施の形態におけるデータブロックを示した構成図である。
【図４】本発明の実施の形態における管理ブロックを示した構成図である。
【図５】本発明の実施の形態における管理領域の説明図である。
【図６】本発明の実施の形態における最新の管理ブロック検索のフローチャートである。
【図７】本発明の実施の形態におけるデータ書込み後の処理を示すフローチャートである。
【図８】本発明の実施の形態におけるデータ領域で発生した不良ブロックのアドレスの登録のフローチャートである。
【図９Ａ】本発明の実施の形態におけるアドレステーブルの更新のフローチャートである。
【図９Ｂ】本発明の実施の形態におけるアドレステーブルの更新のフローチャートである。
【図１０】本発明の実施の形態における管理ブロックの不良ブロックアドレス情報の登録処理を示すフローチャートである。
【符号の説明】
【００６０】
１００  不揮発性記憶システム
１０１  アクセス装置
１０２  不揮発性記憶装置
１０３  メモリコントローラ
１０４  ホストＩ／Ｆ
１０５  バッファ
１０６  ＣＰＵ
１０７  ＲＡＭ
１０８  ＲＯＭ
１０９  不揮発性メモリＩ／Ｆ
１１０  不揮発性メモリ
【図１】
2007249508.tif 000003
【図２】
2007249508.tif 000004
【図３】
2007249508.tif 000005
【図４】
2007249508.tif 000006
【図５】
2007249508.tif 000007
【図６】
2007249508.tif 000008
【図７】
2007249508.tif 000009
【図８】
2007249508.tif 000010
【図９Ａ】
2007249508.tif 000011
【図９Ｂ】
2007249508.tif 000012
【図１０】
2007249508.tif 000013