(57)【特許請求の範囲】
【請求項１】
少なくとも１つの不揮発性メモリから構成される不揮発性メモリユニットであって、当該メモリユニットを管理するための論理ブロック／物理ブロック変換テーブルを含む管理情報が保存される不揮発性メモリユニットを制御するコントローラにおいて、
前記不揮発性メモリユニットへのデータライトの終了後に、そのデータライトが反映された新たな管理情報を、その時点までは最新であった管理情報が保存されている前記不揮発性メモリユニットの領域とは別領域にライトする手段と、
前記管理情報ライト手段による管理情報ライトの終了後に、それまで最新であった管理情報に対応付けて当該管理情報が旧管理情報であることを示す旧管理情報フラグをライトする手段と、
初期化時に前記不揮発性メモリユニットから最新の正常な管理情報を検索する手段と、
前記検索手段により最新の正常な管理情報が見つけられなかった場合、前記旧管理情報フラグに対応付けられている正常な旧管理情報をもとに最新の管理情報を復元する手段と
を具備することを特徴とする不揮発性メモリユニットのコントローラ。
【請求項２】
前記管理情報ライト手段による管理情報ライトの終了後、前記旧管理情報フラグライト手段による旧管理情報フラグライトの前に、当該管理情報ライトが最後まで実行されたことを示すエンドフラグを、当該管理情報に対応付けてライトする手段を更に具備し、
前記検索手段は前記エンドフラグに対応付けられていて前記旧管理情報フラグには対応付けられていない管理情報を最新の管理情報とすることを特徴とする請求項１記載の不揮発性メモリユニットのコントローラ。
【請求項３】
前記管理情報ライト手段による管理情報ライトと並行して、当該管理情報のページ毎に、当該管理情報がライトされていることを示す管理情報フラグをライトする手段を更に具備し、
前記検索手段は、前記不揮発性メモリユニットから前記管理情報フラグを探すことで、検索する管理情報を絞ることを特徴とする請求項１記載の不揮発性メモリユニットのコントローラ。
【請求項４】
前記エンドフラグライト手段によるエンドフラグライトの終了後、前記旧管理情報フラグライト手段による旧管理情報フラグライトの前に、前記管理情報ライト手段によりライトされた前記管理情報をリードして、当該管理情報が正しくライトされているか否かを確認するベリファイを行い、ベリファイエラーの場合に前記管理情報ライト手段による管理情報ライトを再実行させるベリファイ手段を更に具備することを特徴とする請求項２記載の不揮発性メモリユニットのコントローラ。
【請求項５】
少なくとも１つの不揮発性メモリから構成される不揮発性メモリユニットであって、当該メモリユニットの管理情報が保存される不揮発性メモリユニットと、
前記不揮発性メモリユニットを制御するコントローラと、
前記コントローラが使用する情報の格納に用いられる、前記不揮発性メモリより高速アクセスが可能な揮発性メモリと
を具備し、
前記コントローラは、
前記不揮発性メモリユニットへのデータライトの終了後に、そのデータライトが反映された新たな管理情報を、その時点までは最新であった管理情報が保存されている前記不揮発性メモリユニットの領域とは別領域にライトする手段と、
前記管理情報ライト手段による管理情報ライトの終了後に、それまで最新であった管理情報に対応付けて当該管理情報が旧管理情報であることを示す旧管理情報フラグをライトする手段と、
初期化時に前記不揮発性メモリユニットから管理情報をリードしてそのコピーを前記揮発性メモリに格納する管理情報リード手段と、
前記管理情報リード手段によってリードされた管理情報が最新でない場合、或いは最新であっても異常である場合には、前記旧管理情報フラグに対応付けられている正常な旧管理情報をもとに最新の管理情報を復元する手段と
を備えていることを特徴とするメモリシステム。
【請求項６】
複数の物理ブロックから構成される不揮発性メモリユニットであって、当該メモリユニットを管理するための論理ブロック／物理ブロック変換テーブルを含む管理情報が保存される不揮発性メモリユニットを制御する不揮発性メモリユニットの制御方法において、
前記不揮発性メモリユニットへのデータライト要求を受けて当該要求を処理するライト要求処理ステップと、
初期化時に前記管理情報の検索処理を実行する管理情報検索処理ステップと
を具備し、
前記ライト要求処理ステップは、
前記データライト要求で指定されたデータを前記不揮発性メモリにライトするステップと、
前記データライトステップによる前記不揮発性メモリユニットへのデータライトの終了後に、そのデータライトが反映された新たな管理情報を、その時点までは最新であった管理情報が保存されている前記不揮発性メモリユニットの領域とは別領域にライトするステップと、
前記管理情報ライトステップによる管理情報ライトの終了後に、それまで最新であった管理情報に対応付けて当該管理情報が旧管理情報であることを示す旧管理情報フラグをライトするステップと
を備え、
前記管理情報検索処理ステップは、
初期化時に前記不揮発性メモリユニットから最新の正常な管理情報を検索するステップと、
前記検索ステップで最新の正常な管理情報が見つけられなかった場合、前記旧管理情報フラグに対応付けられている正常な旧管理情報をもとに最新の管理情報を復元するステップと
を備えていることを特徴とする不揮発性メモリユニットの制御方法。
【請求項７】
前記管理情報ライトステップでは、前記データライト要求で指定されたデータが論理的に複数のブロックにまたがる場合、当該指定されたデータが前記データライトステップで全てライトし終えた後に、そのデータライトが全て反映された前記新たな管理情報のライトを実行することを特徴とする請求項６記載の不揮発性メモリユニットの制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、不揮発性メモリユニットへのライト中に異常が発生した場合に好適な不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法に関する。
【０００２】
【従来の技術】
近年、画像データや音楽データに代表される種々のデジタル情報を保存する記憶装置として、電源がオフされても保存情報が消失する虞のない書き換え可能な少なくとも１つの不揮発性メモリからなる不揮発性メモリユニットを有するメモリシステム、例えばメモリカードが広まってきている。
【０００３】
しかし、不揮発性メモリユニットであっても、当該ユニットへのデータライト中に電源供給が遮断されたり、電源電圧が低下するといった異常（ライト異常）時には問題が発生する。つまり、不揮発性メモリ内に書きかけのデータが残ったり、消去（erase）が完全に実行されなかったりして不揮発性メモリのデータ管理用の情報（管理情報）が破壊されてしまうために、その後正しい電源電圧の電源を供給しても正常にライトできなくなったり、不揮発性メモリの管理情報がないためにデータが全て失われてしまうといった問題が発生する。
【０００４】
そこで、特開平７−２００４１８号公報では、半導体メモリ装置（不揮発性メモリユニット）へのデータライト中に電源供給が遮断されても、電源供給後にデータの書き込みを再開できるようにした技術が提案されている。ここでは、データ記憶部（を構成する不揮発性半導体メモリなど）に電源が供給されなくてもデータを一時的に記憶できる第１のメモリと、その第１のメモリから上記データ記憶部へのデータ転送に必要な制御情報を、データ記憶部に電源が供給されなくても一時的に記憶できる第２のメモリと、上記データ転送時に電源の供給が遮断されたときに、その転送中の所定単位のデータを電源供給再開後にデータ記憶部に再書き込みするための制御手段とを備えている。
【０００５】
【発明が解決しようとする課題】
上記公報に記載された技術では、データ記憶部（不揮発性メモリユニット）へのデータライト中に電源供給が遮断されても、電源供給後にデータの書き込みを再開できるようするためには、データ記憶部用のメモリとは別に、電源が供給されていなくてもデータを保持できるメモリを備える必要があった。
【０００６】
本発明は上記事情を考慮してなされたものでその目的は、不揮発性メモリユニットへのライト中に何らかの要因でライト異常が発生した場合でも、不揮発性メモリユニット用のメモリとは別にデータを保持できるメモリを必要とすることなく、不揮発性メモリユニットの状態を正常に保ち、ライト異常の要因が解消された後も正常に不揮発性メモリユニットが使用できるようにすることにある。
【０００７】
【課題を解決するための手段】
本発明は、少なくとも１つの不揮発性メモリから構成される不揮発性メモリユニットであって、当該メモリユニットの管理情報が保存される不揮発性メモリユニットを制御するコントローラにおいて、不揮発性メモリユニットへのデータライトの終了後に、そのデータライトが反映された新たな管理情報を、その時点までは最新であった管理情報が保存されている不揮発性メモリユニットの領域とは別領域にライトする手段と、この管理情報ライト手段による管理情報ライトの終了後に、それまで最新であった管理情報に対応付けて当該管理情報が旧管理情報であることを示す旧管理情報フラグをライトする手段と、初期化時に不揮発性メモリユニットから最新の正常な管理情報を検索する手段と、この検索手段により最新の正常な管理情報が見つけられなかった場合、上記旧管理情報フラグに対応付けられている正常な旧管理情報をもとに最新の管理情報を復元する手段とを備えたことを特徴とする。
【０００８】
このような構成のコントローラによって不揮発性メモリユニットを制御することにより、データライトの終了後に、新たな管理情報が、その時点まで最新であった管理情報を消去せずに残した状態で、不揮発性メモリユニットの別領域にライトされる。そして、それまで最新であった管理情報には旧管理情報であることを示す旧管理情報フラグがつけられる。これにより、たとえ不揮発性メモリユニットへのライト中にライト異常が発生して、不揮発性メモリユニット上の最新の管理情報が失われてしまい、そのままでは不揮発性メモリユニットが全く使用できないような異常な状態になる恐れがある場合でも、旧管理情報フラグがつけられている旧管理情報を、例えばそのまま使用して最新の管理情報として復元することで、不揮発性メモリユニット（を備えたメモリシステム）が異常になるのを防止できる。
【０００９】
ここで、データライトに際しては、不揮発性メモリユニット（の物理アドレス空間）を構成する複数の物理ブロックのうちの空きブロックを探して当該ブロックをイレースし、そのイレースしたブロックにデータライトを行えはよい。同様に、管理情報ライトに際しても、空きブロックを探して当該ブロックをイレースし、そのイレースしたブロックに管理情報ライトを行えばよい。この他に、上記管理情報ライトと並行して、当該管理情報のページ毎に、当該管理情報がライトされていることを示す管理情報フラグをライトする手段を更に備えるならば、上記検索手段では、不揮発性メモリユニットから管理情報フラグを探すことで、検索する管理情報を絞ることができ、管理情報検索を効率的に行うことが可能となる。
【００１０】
また本発明は、管理情報ライトの終了後、旧管理情報フラグライトの前に、当該管理情報ライトが最後まで実行されたことを示すエンドフラグを、当該管理情報に対応付けてライトする手段とを更に備え、エンドフラグに対応付けられていて旧管理情報フラグには対応付けられていない管理情報を最新の管理情報とすることを特徴とする。
【００１１】
このような構成においては、たとえ不揮発性メモリユニットへのライト中にライト異常が発生して、不揮発性メモリユニット上の最新の管理情報が失われてしまい、そのままでは不揮発性メモリユニットが全く使用できないような異常な状態になる恐れがある場合でも、管理情報ライトが最後まで実行されたことを示すエンドフラグをチェックすることで書きかけの管理情報は使用しないように制御されるため、不揮発性メモリユニットが異常な状態になるのを防止できる。
【００１２】
また本発明は、エンドフラグライトの終了後、旧管理情報フラグライトの前に、上記管理情報ライト手段によりライトされた管理情報をリードして、当該管理情報が正しくライトされているか否かを確認するベリファイを行い、ベリファイエラーの場合に管理情報ライトを再実行させるベリファイ手段を更に備えたことを特徴とする。
【００１３】
このような構成においては、ライトされた管理情報のベリファイを行うことで、ライト時に発生する不揮発性メモリユニットのエラーを検出し、再度管理情報ライトをやり直すことでライトエラーをなくすことができる。ここでライトされた管理情報をリードしてＥＣＣチェックのみでベリファイを行うならば、高速にベリファイを実行することができる。また、ライトされた管理情報をリードし、そのリードした管理情報と元の管理情報とのデータコンペアによりベリファイを行うならば、正確にベリファイを実行することができる。また、ＥＣＣチェックとデータコンペアとを併用するならば、より一層正確にベリファイできる。
【００１４】
以上の不揮発性メモリのコントローラに係る発明は、不揮発性メモリユニットとコントローラとを備えたメモリシステムに係る発明としても成立する。ここで不揮発性メモリユニットの管理情報は、当該メモリユニットを対象とするリード、ライト、イレースなどの処理を行うのに必要な情報であり、頻繁にアクセスされる。そこで、上記コントローラが使用する情報の格納に用いられる、不揮発性メモリより高速アクセスが可能な揮発性メモリを更に備えると共に、上記コントローラに、初期化時に不揮発性メモリユニットから管理情報をリードしてそのコピーを上記揮発性メモリに格納する管理情報リード手段を設けるとよい。このように、不揮発性メモリより高速で、且つデータの書き換え時にイレース動作が不要な揮発性メモリに管理情報のコピーを用意して、通常の不揮発性メモリユニットアクセス時には当該揮発性メモリ内の管理情報が利用可能な構成とすることで、高速処理を実現することが可能となる。
【００１５】
また、以上の不揮発性メモリのコントローラに係る本発明は、当該コントローラで適用される処理手順からなる方法（不揮発性メモリユニットの制御方法）に係る発明としても成立する。ここで、ライトすべきデータが論理的に複数のブロックにまたがる場合、当該データが全てライトし終えた後に、そのデータライトが全て反映された新たな管理情報のライトが実行される構成とするとよい。もし、ブロック単位でデータライトを行い、そのブロック単位のデータライト（ブロックライト）の都度、そのブロックライトが反映された新たな管理情報をライトするならば、その途中でライト異常が発生すると、不揮発性メモリユニット上にライト異常発生前のデータはライトされていて、ライト異常発生後のデータはライトされていない状態になる。このように論理的に複数のブロックにまたがるデータ同士で不整合が発生しないように、全てのデータのライトが終了した後に、管理情報をライトすることで、論理的に複数のブロックにまたがるデータの一貫性を保つことができる。
【００１６】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
【００１７】
［構成］
図１は本発明の一実施形態に係るメモリシステム１０の全体構成を示すブロック図である。
【００１８】
図１のメモリシステム１０は、パーソナルコンピュータ、電子カメラ、ゲーム機を始めとする各種電子機器（ホストシステム）のカードスロットに装着して使用されるメモリカードであるものとする。このメモリシステム（メモリカード）１０は、コントローラ１１と、ＲＡＭ１２と、不揮発性メモリユニット１３と、バス１４とを備えている。
【００１９】
コントローラ１１は、不揮発性メモリユニット１３を制御するもので、マイクロプロセッサ（ＭＰＵ）１１１及び制御プログラム（ファームウェア）が予め格納されているＲＯＭ１１２を内蔵する。コントローラ１１（内のマイクロプロセッサ１１１）は、図１のメモリシステム（メモリカード）１０が装着されるカードスロットを備えたホストシステム（例えばパーソナルコンピュータ）から送られるコマンドをＲＯＭ１１２に格納されている制御プログラムに従って解釈して実行する。
【００２０】
ＲＡＭ１２は揮発性メモリである。ＲＡＭ１２は、コントローラ１１（内のマイクロプロセッサ１１１）の作業用領域の他に、後述する論理ブロック／物理ブロック変換テーブル１３１及びアサインテーブル１３２のコピー（である論理ブロック／物理ブロック変換テーブル１２１、アサインテーブル１２２）を格納するテーブル領域１２０を提供する。
【００２１】
不揮発性メモリユニット１３は、少なくとも１つの不揮発性メモリ（不揮発性メモリ素子）から構成される。ここでは、不揮発性メモリユニット１３は、書き換えが可能なｋ個の不揮発性メモリ１３０-1〜１３０-kから構成されるものとする。
【００２２】
不揮発性メモリユニット１３（内の不揮発性メモリ）をリード／ライトするためのアクセスの単位をページと呼ぶ。また、不揮発性メモリユニット１３（内の不揮発性メモリ）に記憶されているデータを消去（erace）するためのアクセスの単位をブロックと呼ぶ。このブロックは、１以上の所定数のページ、例えばページ１〜ページｍのｍページから構成される。このブロックとページとの関係を図２に示す。
【００２３】
不揮発性メモリユニット１３は、複数のブロック（物理ブロック）、例えばｎ個のブロック０〜ブロック（ｎ−１）から構成される。この不揮発性メモリユニット１３のブロック構成を図３に示す。
【００２４】
不揮発性メモリユニット１３内の物理ブロックは、ホストシステムから見ることはできない。ホストシステムから見えるのは不揮発性メモリユニット１３（内の全物理ブロックの一部）が割り当てられている論理アドレス空間を構成する論理ブロックである。このため、ホストシステムから論理ブロック（を示す論理ブロック番号）を指定してメモリシステム１０内の不揮発性メモリユニット１３をアクセスするには、メモリシステム１０内で、論理ブロック（を示す論理ブロック番号）から物理ブロック（を示す物理ブロック番号）への変換が必要となる。
【００２５】
そこで、この変換を可能とするために、不揮発性メモリユニット１３には、論理ブロック（を示す論理ブロック番号）と当該論理ブロック（を示す論理ブロック番号）に割り当てられている物理ブロック（を示す物理ブロック番号）との対応を示す管理情報（割り当て情報）が用意される。ここでは、この管理情報として、図４に示すデータ構造の論理ブロック／物理ブロック変換テーブル１３１が用いられる。本実施形態において、変換テーブル１３１の各エントリの並び順で決まるエントリ番号は、そのまま論理ブロック番号を表すようになっている。このテーブル１３１の各エントリには、そのエントリに固有の論理ブロック番号に対応付けられている物理ブロック番号が設定されている。なお、変換テーブル１３１の各エントリに、論理ブロック番号及び当該論理ブロック番号に対応付けられている物理ブロック番号の対が設定されるようにしても構わない。変換テーブル１３１には、１ブロックのページ数ｍに満たない複数ページが割り当てられる。
【００２６】
また、不揮発性メモリユニット１３には、当該ユニット１３を構成する物理ブロックの中で新たに使用可能な物理ブロックを示す管理情報、例えば各物理ブロック毎に、そのブロックが使用中か否（空き状態にある）かを示す管理情報が用意される。ここでは、この管理情報として、図５に示すデータ構造のアサインテーブル１３２が用いられる。本実施形態において、アサインテーブル１３２の各エントリの並び順で決まるエントリ番号がそのまま物理ブロック番号を表すようになっている。このテーブル１３１の各エントリには、そのエントリに固有の物理ブロック番号の物理ブロックが使用中であるか否（空きである）かを示すフラグ（フラグデータ）が設定されている。アサインテーブル１３２には、１ページが割り当てられる。このアサインテーブル１３２及び上記変換テーブル１３１は、任意の同一ブロック内の所定の領域に格納される。またアサインテーブル１３２及び上記変換テーブル１３１のコピーがアサインテーブル１２２及び変換テーブル１２１としてＲＡＭ１２内のテーブル領域１２０に格納される。
【００２７】
不揮発性メモリユニット１３を構成する各ページは、図６に示すように、例えばバイト０からバイト５１１の５１２バイトのデータ部６０１と、バイト５１２からバイト５２７の１６バイトの冗長部６０２とからなる。この冗長部６０２は、管理情報フラグＦ１、エンドフラグＥＦ及び旧管理情報フラグＦ２が設定される（書き込まれる）それぞれ１バイトのフラグフィールド６０２ａ，６０２ｂ及び６０２ｃと、エラー訂正符号（ＥＣＣ）が設定されるＥＣＣフィールド（図示せず）とを含む。ここでは、バイト５１２がフラグＦ１の、バイト５１３がフラグＥＦの、そしてバイト５１４がフラグＦ２の、それぞれフラグフィールドをなす。フラグＦ１はオン（有効）状態で、該当ページ（のデータ部６０１）に管理情報、つまり変換テーブル１３１の一部またはアサインテーブル１３２が格納されていることを示す。フラグＥＦはオン（有効）状態で、管理情報の書き込み、つまりアサインテーブル１３２及び変換テーブル１３１の書き込みが最後まで終了していることを示す。フラグＦ２はオン（有効）状態で、格納されている管理情報が古くなったこと、つまり旧管理情報（無効管理情報）が格納されていることを示す。
【００２８】
本実施形態では、フラグフィールド（６０２ａ，６０２ｂ，６０２ｃ）の全ビットに“１”のデータが書かれている状態により、対応するフラグ（Ｆ１，ＥＦ，Ｆ２）のオフ（無効）状態が示される。この状態で、フラグフィールドの全ビットに“０”のデータを書くことにより、対応するフラグをオン（有効）状態に設定できる。つまり、フラグフィールド６０２ａ，６０２ｂ，６０２ｃにそれぞれ“０”のデータを書くことは、有効なフラグＦ１，ＥＦ，Ｆ２を書くことを意味する。なお不揮発性メモリユニット１３では、“０”が書かれている任意のビットを“１”に書き換えることはできない。したがって、フラグ（Ｆ１，ＥＦ，Ｆ２）をオフ（無効）状態に設定するには、該当するブロック内の全ビットに“１”のデータを書き込むイレースが必要となる。
【００２９】
今、不揮発性メモリユニット１３内のブロック（物理ブロック）ｉに変換テーブル１３１及びアサインテーブル１３２が格納されているものとすると、このブロックｉ内の変換テーブル１３１及びアサインテーブル１３２の格納形態は、図７のようになる。即ち、ブロックｉの先頭ページ１のデータ部６０１にはアサインテーブル１３２が格納され、ブロックｉのページ１〜ページ６のデータ部６０１には、アサインテーブル１３２が分割して格納される。このように、ブロックｉのページ１〜ページ６にアサインテーブル１３２及び変換テーブル１３１、即ち管理情報が書き込まれ、しかも当該管理情報の書き込みが最後まで終了しており、更に当該管理情報が最新の管理情報であり、旧管理情報でない場合には、ページ１〜ページ５の冗長部６０２内のフラグＦ１，ＥＦ，Ｆ２は、それぞれオン（０），オフ（１），オフ（１）である。またページ６の冗長部６０２内のフラグＦ１，ＥＦ，Ｆ２は、それぞれオン（０），オン（０），オフ（１）である。
【００３０】
［動作］
次に、図１の構成のメモリシステム（メモリカード）１０における動作について、（１）初期化時と、（２）ライト時を例に順に説明する。
【００３１】
（１）初期化時
メモリシステム１０の初期化（立ち上げ）時には、コントローラ１１は、論理ブロックから物理ブロックへの変換などのために必要な管理情報、即ち論理ブロック／物理ブロック変換テーブル１３１及びアサインテーブル１３２を不揮発性メモリユニット１３から検索してリードし、ＲＡＭ１０４へ格納する動作を実行する。この初期化時の管理情報の検索処理の詳細について、図８のフローチャートを参照して説明する。
【００３２】
コントローラ１１はまず、検索する物理ブロックを表すインデックス（ｉｎｄｅｘ）を、管理情報が格納され得る不揮発性メモリユニット１３内の領域（管理情報の保存領域）のスタートブロックに設定する（ステップＳ１）。ここでは、管理情報の保存領域は、不揮発性メモリユニット１３を構成する全ての物理ブロックの範囲とする。この場合、不揮発性メモリユニット１３の物理ブロック範囲のスタートブロック及びエンドブロックは、それぞれ管理情報保存領域のスタートブロック及びエンドブロックに一致する。
【００３３】
次にコントローラ１１は、ｉｎｄｅｘの示すブロックの先頭ページ１から、当該ブロックに管理情報が格納（ライト）されているか否かを示す管理情報フラグＦ１をリードする（ステップＳ２）。もし、リードしたフラグＦ１がオン（有効）であったならば、即ち有効なフラグＦ１がライトされていたならば（ステップＳ３）、コントローラ１１はｉｎｄｅｘの示すブロックには管理情報が格納されているものとしてステップＳ４へ進む。これに対し、リードしたフラグＦ１がオフ（無効）であったならば、即ち有効なフラグＦ１がライトされていなかったならば（ステップＳ３）、コントローラ１１はｉｎｄｅｘの示すブロックには管理情報が格納されていないものとしてステップＳ１０へ進む。
【００３４】
ステップＳ４においてコントローラ１１は、ｉｎｄｅｘの示すブロックから管理情報、即ち変換テーブル１３１及びアサインテーブル１３２をリードし、そのコピーである変換テーブル１２１及びアサインテーブル１２２をＲＡＭ１０４のテーブル領域１２０へ格納する。そしてコントローラ１１は、リードしたデータ（管理情報）が正常ならば（ステップＳ５）、ステップＳ６へ進む。これに対し、リードした管理情報にエラーがあれば、コントローラ１１はステップＳ１０へ進む。
【００３５】
ステップＳ６においてコントローラ１１は、管理情報の書き込みが最後まで終了したか否かを示すエンドフラグＥＦ及び旧管理情報であるか否かを示す旧管理情報フラグＦ２を、管理情報が書かれている最終ページ（ここではページ６）からリードする。そしてコントローラ１１は、リードしたフラグＥＦがオン状態にあり、且つフラグＦ２がオフ状態にあるならば（ステップＳ７）、ｉｎｄｅｘの示すブロックに格納されている管理情報（変換テーブル１３１及びアサインテーブル１３２）が最後まで正常に書かれた最新の管理情報であるとして、つまり最新の管理情報が検索できたとして検索処理を終了する。
【００３６】
これに対し、フラグＥＦがオン状態にない場合には（ステップＳ８）、コントローラ１１はこの管理情報は書きかけの情報であり、したがって使用できないものと判断する。この場合、コントローラ１１はステップＳ１０へ進む。またフラグＥＦ及びＦ２が共にオン状態にあるならば（ステップＳ８）、コントローラ１１はｉｎｄｅｘの示すブロックに格納されている管理情報（変換テーブル１３１及びアサインテーブル１３２）は無効化された古い管理情報（旧管理情報）であり、使用しないものと判断し、その際のｉｎｄｅｘをＲＡＭ１２内の所定領域に一時的に格納して（ステップＳ９）、ステップＳ１０へ進む。
【００３７】
ステップＳ１０においてコントローラ１１は、次のブロックを検索するためにｉｎｄｅｘをインクリメントする。そしてコントローラ１１は、インクリメント後のｉｎｄｅｘが管理情報の保存領域内を指しているか否かを判定する（ステップＳ１１）。もし、保存領域内であれば、コントローラ１１はインクリメント後のｉｎｄｅｘを用いてステップＳ２以降の処理を再度実行する。これに対し保存領域外であれば、ステップＳ１２へ進む。
【００３８】
ステップＳ１２においてコントローラ１１は、最新の正常な管理情報が見つからなかったことから、ステップＳ９でＲＡＭ１２内の所定領域に一時的に格納しておいたｉｎｄｅｘの示すブロックに格納されている管理情報、即ち旧管理情報を示すフラグＦ２が有効なために使用されなかった管理情報（つまり旧管理情報）から最新の管理情報を作成し直す（復元する）エラー処理を実行する。ここでは、旧管理情報がそのまま最新の管理情報として用いられ、テーブル領域１２０内の管理情報もその新管理情報に書き換えられる。これにより、以後ステップＳ１２のエラー処理で作成された管理情報が用いられる。
【００３９】
なお、以上の説明では、管理情報を管理情報保存領域のスタートブロックからインクリメントする方向へ検索したが、エンドブロックからスタートブロック方向へと検索してもよい。管理情報保存領域内のブロックが全て検索対象になる方法ならば、どのような順番で検索してもよい。また冗長部６０２内のフラグＦ１，ＥＦ，Ｆ２をステップＳ２とステップＳ６とに分けてリードしているが、ステップＳ２でまとめてリードしてもよい。
【００４０】
コントローラ１１は、以上のようにして検索した管理情報、即ち変換テーブル１３１及びアサインテーブル１３２（のコピーであるＲＡＭ１２内の変換テーブル１２１及びアサインテーブル１２２）を用いて、不揮発性メモリユニット１３を有するメモリシステム１０の初期化を行う。
【００４１】
（２）ライト時
次にメモリシステム（メモリカード）１０におけるライト時の動作（ライト要求処理）について、図９のフローチャートを参照して説明する。
【００４２】
コントローラ１１は、ホストシステムからライト要求が与えられた場合、ＲＡＭ１２のテーブル領域１２０に格納されている管理情報の１つであるアサインテーブル１２２を検索して、不揮発性メモリユニット１３内のいずれの物理ブロックがデータライトに使用できる空きブロックであるかをサーチする（ステップＳ２１）。
【００４３】
次にコントローラ１１は、ステップＳ２１で見つけられた空きブロックをイレース（erase）する（ステップＳ２２）。ブロックのイレースは、当該ブロック内の全ビットに“１”のデータを書き込む動作により行われる。
【００４４】
そしてコントローラ１１は、ステップＳ２２でイレースしたブロックに、ホストから指定されたデータをライトして（ステップＳ２３）、ステップＳ２４へ進む。ここで、指定されたデータが１ブロックに満たない場合で、且つＲＡＭ１２のテーブル領域１２０に格納されている変換テーブル１２１により、指定された論理ブロックに割り当てられている物理ブロックが存在することが示されている場合、その物理ブロックのデータと指定されたデータとから１ブロック分の新たなライトデータを生成し、当該新たなライトデータを上記イレースしたブロックにライトする。この新たなライトデータは、物理ブロックのデータのうち、指定されたデータに対応するページが当該指定されたデータに置き換えられたものである。また、複数の論理ブロックにまたがるアクセス要求の場合、つまり論理的に複数のブロックにまたがるアクセス要求の場合には、同数の空き物理ブロックを探してイレースし（ステップＳ２１，Ｓ２２）、その同数のブロックにブロック単位でデータを全てライトしてから（ステップＳ２３）、ステップＳ２４へ進む。
【００４５】
ステップＳ２４においてコントローラ１１は、ＲＡＭ１２のテーブル領域１２０に格納されている管理情報の１つであるアサインテーブル１２２を検索し、今度は不揮発性メモリユニット１３内のいずれの物理ブロックが管理情報ライトに使用できる空きブロックであるかをサーチする。このステップＳ２４の処理自体は、上記ステップＳ２１と同様である。
【００４６】
次にコントローラ１１は、ステップＳ２４で見つけられた空きブロックをイレースする（ステップＳ２５）。
そしてコントローラ１１は、ステップＳ２５でイレースしたブロックの先頭ページ１から順に、そのページのデータ部６０１に、管理情報、即ちアサインテーブル１３２及び変換テーブル１３１をページ単位でライトとすると共に、そのページの冗長部６０２内のフラグフィールドに有効な管理情報フラグＦ１をライトする（ステップＳ２６）。これにより、有効な管理情報フラグＦ１がライトされたページ、即ちフラグＦ１がオンされたページには管理情報がライトされていることが示される。
【００４７】
ここで、ステップＳ２５でイレースしたブロックに書き込まれる管理情報（アサインテーブル１３２及び変換テーブル１３１）は、現在ＲＡＭ１２のテーブル領域１２０に格納されている管理情報（アサインテーブル１２２及び変換テーブル１２１）、即ちステップＳ２３でのデータライトのために利用された管理情報をもとに生成することができる。具体的には、アサインテーブル１２２の各エントリのうち、ステップＳ２２及びＳ２５でイレースされた全てのブロックに対応するエントリが、空きを示す状態から使用中を示す状態に変更された新たなアサインテーブル１３２が生成される。また、変換テーブル１２１の各エントリのうち、ホストシステムから指定された論理ブロックに対応するエントリの内容が、ステップＳ２５でイレースされた物理ブロックを指す物理ブロック番号に変更された新たな変換テーブル１３１が生成される。
【００４８】
コントローラ１１は、上記イレースしたブロックに管理情報を全てライトし終えると、即ち当該ブロックのページ６のデータ部６０１に変換テーブル１３１の最終ページ部分を書き終えると共に当該ページ６の冗長部６０２内のフラグフィールド６０２ａに有効な管理情報フラグＦ１を書き込むと（ステップＳ２６）、この冗長部６０２内のフラグフィールド６０２ｂに有効なエンドフラグＥＦをライトする（ステップＳ２７）。この有効なフラグＥＦのライト操作、即ちフラグＥＦのオン操作により、管理情報ライトが最後まで終了したことが示される。
【００４９】
次にコントローラ１１は、管理情報ライトが正常に行えたか否かをチェックするために、ライトした管理情報のベリファイを行う（ステップＳ２８）。このベリファイの方法としては、ライトした管理情報をリードして冗長部６０２のＥＣＣフィールドに設定されているＥＣＣに基づくエラー検出処理（ＥＣＣチェック）を行う第１の方法、ライトした管理情報をＲＡＭ１２の所定領域に一時的に格納しておき、ライトした管理情報をリードして、ＲＡＭ１２に一時的に格納しておいた元の管理情報と比較して一致の有無をチェックするデータコンペアを行う第２の方法、またはＥＣＣチェックとデータコンペアの両方を用いてベリファイを行う第３の方法が適用可能である。
【００５０】
コントローラ１１は、ステップＳ２８でのベリファイの結果が正常でなかった場合には（ステップＳ２９）、ステップＳ２４以降の処理を再度実行する。
これに対し、ステップＳ２８でのベリファイの結果が正常であったならば（ステップＳ２９）、コントローラ１１は不揮発性メモリユニット１３内の古い管理情報がライトされているブロックに旧管理情報であることを示す有効な旧管理情報フラグＦ２をライトして、古い管理情報が使用されないようにする（ステップＳ３０）。具体的には、古い管理情報がライトされているブロック内のページ１〜ページ６の冗長部６０２のフラグフィールド６０２ｃに有効な旧管理情報フラグＦ２をライトする。この段階で、ＲＡＭ１２のテーブル領域１２０に格納されている管理情報（変換テーブル１２１及びアサインテーブル１２２）を、上記ステップＳ２６でライトされた最新の管理情報のコピーに変更する。
【００５１】
［電源遮断時のタイミングの違いによるメモリシステム１０の状態］
次に、以上のような処理を行うことで、メモリシステム（メモリカード）１０がホストシステムのカードスロットから引き抜かれたなどの要因で、当該メモリシステム１０への電源供給が遮断された際のタイミングの違いにより、当該メモリシステム１０がどのような状態になるかについて以下に説明する。
【００５２】
（１）ステップＳ２１の実行前
ステップＳ２１の実行前にメモリシステム１０への電源供給が遮断された場合、まだライト処理が何も実行されていないことになる。このため、不揮発性メモリユニット１３はライト前の状態のままであり、問題はない。
【００５３】
（２）ステップＳ２１の実行中
ステップＳ２１はデータライトするブロックをサーチする処理である。したがってステップＳ２１の実行中に電源が遮断されても、不揮発性メモリユニット１３に対しては何も実行されていない。つまり不揮発性メモリユニット１３はライト前の状態のままであり、問題はない。
【００５４】
（３）ステップＳ２１とステップＳ２２との間
上記（２）で述べたように、ステップＳ２１はデータライトするブロックをサーチする処理であり、不揮発性メモリユニット１３に対しては何も実行されていない。したがって、このステップＳ２１とステップＳ２２との間で電源が遮断されても、不揮発性メモリユニット１３はライト前の状態のままであり、問題はない。
【００５５】
（４）ステップＳ２２の実行中
ステップＳ２２の処理は、データライトするブロックをイレースする処理である。したがってステップＳ２２の実行中に電源が遮断されると、ステップＳ２１で見つけられたブロックのイレースが途中で終了してしまう。しかし再び電源が供給された後にこのブロックへのライトが発生したとしても、ライト前には必ずイレースを行うため、問題はない。
【００５６】
（５）ステップＳ２２とステップＳ２３との間
データライトするブロックをステップＳ２２でイレースした後、ステップＳ２３でのデータライト前に電源が遮断されても、空きブロックをイレースしただけなので、問題はない。
【００５７】
（６）ステップＳ２３の実行中
ステップＳ２３でのデータライト実行中に電源が遮断されると、そのブロックには書きかけのデータが残ってしまう。しかしライトが実行されたブロックは空きブロックであり、管理情報は更新前であるためライト実行前の状態を保持している。このため問題はない。
【００５８】
（７）ステップＳ２３とステップＳ２４との間
ステップＳ２３でのデータライトの実行後に電源が遮断されると、データライトは終了したが管理情報が更新されていない状態になる。しかし、上記（６）で述べたように、ライトを実行したブロックは空きブロックであり、管理情報は更新されていないためライト実行前の状態を保持している。このため問題はない。
【００５９】
（８）ステップＳ２４の実行中
ステップＳ２４での管理情報ライト用ブロックのサーチ中に電源が遮断されても、上記（７）の状態と同じなので、問題はない。
【００６０】
（９）ステップＳ２４とステップＳ２５との間
ステップＳ２４での管理情報ライト用ブロックのサーチを実行後、ステップＳ２５での管理情報ライト用ブロックのイレース実行前に電源が遮断されても、上記（７）の状態と同じなので、問題はない。
【００６１】
（１０）ステップＳ２５の実行中
ステップＳ２５での管理情報ライト用ブロックのイレース実行中に電源が遮断されると、そのブロックのイレースが途中で終了してしまう。しかし再び電源が供給された後にこのブロツクへのライトが発生したとしても、ライト前には必ずイレースを行うため、問題はない。また、データライトは終了したが管理情報が更新されていない状態になってしまうが、上記（７）の場合と同じ理由により問題はない。
【００６２】
（１０）ステップＳ２５とステップＳ２６との間
ステップＳ２５で管理情報ライト用ブロックをイレースした後、そのイレースしたブロックへのステップＳ２６での管理情報ライト前に電源が遮断されても、空きブロックをイレースしただけなので、問題はない。またデータライトは終了したが管理情報が更新されていない状態になってしまうが、上記（７）の場合と同じ理由により問題はない。
【００６３】
（１１）ステップＳ２６の実行中
ステップＳ２６での管理情報ライトの実行中に電源が遮断されると、書きかけの管理情報ができてしまう。しかし、次のステップＳ２７は実行されておらず、管理情報ライトが最後まで終了していことを示す有効なエンドフラグＥＦはライトされていないため、再び電源が供給されたときにはこの管理情報は書きかけと判断されて使用されない。また古い管理情報は不揮発性メモリユニット１３にそのまま残っているため、ライト実行前の状態を保持している。したがって、前記ステップＳ１２での処理で、この古い管理情報に基づいて新たな管理情報が生成できる。また、データライトは終了したが管理情報が更新されていない状態になってしまうが、上記（７）の場合と同じ理由により問題はない。
【００６４】
（１２）ステップＳ２６とステップＳ２７との間
ステップＳ２６での管理情報ライトを実行した後、ステップＳ２６での有効なエンドフラグＥＦのライト前に電源が遮断されると、管理情報はライトされたが、エンドフラグＥＦが無効（オフ）状態のままになってしまう。しかし、エンドフラグＥＦが無効（オフ）状態のため、即ち有効でないため、再び電源が供給されたときにはこの管理情報は書きかけと判断されて使用されない。また古い管理情報は不揮発性メモリユニット１３にそのまま残っているため、ライト実行前の状態を保持している。したがって、この古い管理情報から新たな管理情報が生成できる。また、データライトは終了したが管理情報が更新されていない状態になってしまうが、上記（７）の場合と同じ理由により問題はない。
【００６５】
（１３）ステップＳ２７の実行中
ステップＳ２７での有効なエンドフラグＥＦのライト中に電源が遮断されると、管理情報はライトされたが、エンドフラグＥＦが無効（オフ）状態のままになってしまう。しかし、エンドフラグＥＦが有効でないため、再び電源が供給されたときにはこの管理情報は書きかけと判断されて使用されない。また古い管理情報は不揮発性メモリユニット１３にそのまま残っているため、ライト実行前の状態を保持している。また、データライトは終了したが管理情報が更新されていない状態になってしまうが、上記（７）の場合と同じ理由により問題はない。
【００６６】
（１４）ステップＳ２７とステップＳ３０との間
ステップＳ２７での有効なエンドフラグＥＦのライト後、ステップＳ３０で古い管理情報に旧管理情報（無効管理情報）であることを示す旧管理情報フラグＦ２をつける前に電源が遮断されると、正常と判断される管理情報が、新たにライトされたものと、古いものとの２つ存在してしまう。このため、再び電源が供給されたときは、新たにライトされた管理情報を使用する場合と，古い管理情報を使用する場合の２通りが考えられる。
【００６７】
新しい管理情報を使用した場合には、ホストシステムから要求されたライトが正常に終了した状態になる。しかし古い管理情報を使用した場合にはホストシステムから要求されたライトはまだ実行されていない状態になる。しかしホストシステムからのライト実行中に電源が遮断されたので、どちらの状態であってもメモリシステム（メモリカード）１０は異常にはならないので問題ない。
【００６８】
（１５）ステップＳ３０の実行中
ステップＳ３０で有効な旧管理情報フラグＦ２のライト中に電源が遮断されると、つまり古い管理情報のブロックライト中に電源が遮断されると、古い管理情報が異常になってしまう場合が考えられる。しかし本実施形態では、図８のフローチャートに示したように、再び電源が供給されたときに管理情報が正しいかをチェックしてを行って、正しい管理情報が使用される。したがって古い管理情報が異常であったなら、古い管理情報は使用されずに、新しい管理情報が使用される。これによりホストシステムから要求されたライトが正常に終了した状態になるため問題はない。
【００６９】
（１６）ステップＳ３０の終了後
ステップＳ３０での有効な旧管理情報フラグＦ２のライト後に電源が遮断されても、正常にライトが終了しているため問題はない。
【００７０】
以上の説明から明らかなように、本実施形態においては、メモリシステム（メモリカード）１０がホストシステムのカードスロットから引き抜かれたなどの要因で、当該メモリシステム１０への電源供給がどのようなタイミングで遮断されたとしても、不揮発性メモリユニット１３へのライトが正常に実行できない状況になったり、書きかけの管理情報を使用してしまうことによりデータがリードできなくなってしまうような状況の発生を防止できる。このような効果は、電源供給が遮断された場合に限らず、電源電圧が低下した場合にも同様に得られる。
【００７１】
以上に述べた実施形態では、不揮発性メモリユニット１３の管理情報として当該ユニット１３の全ブロックに対して１つの変換テーブル１３１と１つのアサインテーブル１３２とを用意する場合について説明したが、これに限るものではない。例えば、不揮発性メモリユニット１３の物理アドレス空間と、不揮発性メモリユニット１３が割り当てられている論理アドレス空間とを、それぞれ一定のブロック数ｐ，ｑからなるｒ個のゾーン０〜ゾーンｒ−１に分割し、対応するゾーンｉ（ｉ＝０〜ｒ−１）毎に、そのゾーン内の各論理ブロックに割り当てられている物理ブロックを示す変換テーブル１３１とそのゾーン内の使用可能な物理ブロックを示すアサインテーブル１３２との組を用意するようにしても構わない。ここでは、ＲＡＭ１２内のテーブル領域１２０には、全ての変換テーブル１３１とアサインテーブル１３２との組のコピーを格納するのではなく、一部の組のみのコピーを格納するとよい。
【００７２】
このようにすると、テーブル領域１２０の必要サイズを減らして、ＲＡＭ１２の必要容量を低減できる。但し、ホストシステムから不揮発性メモリユニット１３へのアクセスが要求された場合に、論理ブロックから物理ブロックへの変換に必要な変換テーブル１３１のコピーがテーブル領域１２０に存在するかを判定し、存在しない場合には、変換テーブル１３１とアサインテーブル１３２との組のコピーを入れ替える必要がある。
【００７３】
また、以上に述べた実施形態では、不揮発性メモリユニット１３を制御するコントローラ１１が当該ユニット１３を内蔵するメモリシステム１０に設けられている場合について説明したが、メモリシステム１０を利用するホストシステム側に設けられていても構わない。また、ＲＡＭ１２がコントローラ１１に内蔵されていても構わない。
【００７４】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００７５】
【発明の効果】
以上詳述したように本発明によれば、不揮発性メモリユニットへのライト中に何らかの要因でライト異常が発生して、不揮発性メモリユニット上の最新の管理情報が失われてしまい、そのままでは不揮発性メモリユニットが全く使用できないような異常な状態になる恐れがある場合でも、不揮発性メモリユニット用のメモリとは別にデータを保持できるメモリを必要とすることなく、それ以前の管理情報を利用して最新の管理情報として復元できる。これにより、不揮発性メモリユニットの状態を正常に保ち、ライト異常の要因が解消された後も正常に不揮発性メモリユニットが使用できる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るメモリシステム１０の全体構成を示すブロック図。
【図２】不揮発性メモリユニット１３をリード／ライトするためのアクセスの単位であるページと、不揮発性メモリユニット１３の消去のアクセスの単位であるブロックとの関係を示す図。
【図３】不揮発性メモリユニット１３のブロック構成を示す図。
【図４】論理ブロック／物理ブロック変換テーブル１３１のデータ構造例を示す図。
【図５】アサインテーブル１３２のデータ構造例を示す図。
【図６】ページのデータ構造例を示す図。
【図７】アサインテーブル１３２及び変換テーブル１３１が格納されている不揮発性メモリユニット１３内のブロックにおける、当該テーブル１３２，１３１のページ毎の格納形態とフラグＦ１，ＥＦ，Ｆ２との関係を示す図。
【図８】同実施形態における初期化時の動作（管理情報検索処理）を説明するためのフローチャート。
【図９】同実施形態におけるライト時の動作（ライト要求処理）を説明するためのフローチャート。
【符号の説明】
１０…メモリシステム
１１…コントローラ
１２…ＲＡＭ
１３…不揮発性メモリユニット
１１１…マイクロプロセッサ（ＭＰＵ）
１２０…テーブル領域
１２１，１３１…論理ブロック／物理ブロック変換テーブル（管理情報）
１２２，１３２…アサインテーブル（管理情報）
１３０-1〜１３０-k…不揮発性メモリ
６０１…データ部
６０２…冗長部
６０２ａ，６０２ｂ，６０２ｃ…フラグフィールド
【図１】
0004037605.tif 000002
【図２】
0004037605.tif 000003
【図３】
0004037605.tif 000004
【図４】
0004037605.tif 000005
【図５】
0004037605.tif 000006
【図６】
0004037605.tif 000007
【図７】
0004037605.tif 000008
【図８】
0004037605.tif 000009
【図９】
0004037605.tif 000010