(57)【特許請求の範囲】
【請求項１】
複数の物理ブロックで構成される不揮発性メモリを制御する不揮発性メモリコントローラであって、
外部機器からの最小論理アドレスから最大論理アドレスまでの有効論理アドレス範囲内の論理アドレスに基づいて前記物理ブロックに対するデータの書き込み及び／又は読み出しを制御する制御部と、
前記論理アドレスに対してデータの書き込みの反映を不可とする、前記有効論理アドレス範囲内の１箇所以上の部分領域を論理不良クラスタとし、当該論理不良クラスタの論理アドレスの情報を格納する論理不良クラスタテーブルと、
前記物理ブロックに格納されるデータの、前記有効論理アドレス範囲の論理アドレスと前記物理ブロックの物理アドレスとの対応情報を格納するアドレス変換テーブルとを備え、
前記制御部は、前記論理不良クラスタテーブルに格納された論理アドレスに対する前記外部機器からのデータの書き込み命令を受けた場合、当該論理アドレスに対するデータの前記物理ブロックへの書き込みの反映を不可とし、
前記制御部は、前記物理ブロックへのアクセス時に不良ブロックが発生し、前記外部機器からデータを書き込むことができる物理ブロックが所定値以上ないときに、前記外部機器からのアクセスを不可とする論理アドレスを決定して前記論理不良クラスタテーブルに登録し、登録した論理アドレスに対するデータの前記物理ブロックへの書き込みの反映を不可とすることを特徴とする不揮発性メモリコントローラ。
【請求項２】
前記制御部は、前記論理不良クラスタテーブルに格納された論理アドレスに対する前記外部機器からデータの読み出し命令を受けた場合、所定の固定値データを出力することを特徴とする請求項１に記載の不揮発性メモリコントローラ。
【請求項３】
前記制御部は、前記論理不良クラスタテーブルに格納された論理アドレスに対する前記外部機器からデータの読み出し命令を受けた場合、データの出力を行わないことを特徴とする請求項１に記載の不揮発性メモリコントローラ。
【請求項４】
前記制御部は、前記論理不良クラスタテーブルに格納された論理アドレスに対する前記外部機器からのデータの書き込み命令を受けた場合、前記外部機器に書き込みエラーの発生を通知することを特徴とする請求項１に記載の不揮発性メモリコントローラ。
【請求項５】
前記不揮発性メモリコントローラは、さらに、
前記論理アドレスに対応するデータが格納されておらず、新たなデータの書き込みが可能な物理ブロックの物理アドレスを格納する無効ブロックテーブルを備え、
前記制御部は、前記物理ブロックへのデータの書き込みの反映を不可とした論理アドレスに対応する前記アドレス変換テーブルの物理アドレスの情報を、前記無効ブロックテーブルに登録することを特徴とする請求項１に記載の不揮発性メモリコントローラ。
【請求項６】
前記制御部は、前記外部機器からのアクセスを不可とする論理アドレスとして、有効なデータが書き込まれていない論理アドレスを選択することを特徴とする請求項５に記載の不揮発性メモリコントローラ。
【請求項７】
前記制御部は、前記外部機器からのアクセスを不可とする論理アドレスとして、前記アドレス変換テーブルに格納されている論理アドレスの中から、有効な物理アドレスと対応しない論理アドレスを選択することを特徴とする請求項５に記載の不揮発性メモリコントローラ。
【請求項８】
前記物理ブロックへのアクセスは、前記物理ブロックに対するデータの書き込み又は消去を含むことを特徴とする請求項５に記載の不揮発性メモリコントローラ。
【請求項９】
請求項１から８のいずれか１項に記載の不揮発性メモリコントローラと、
前記不揮発性メモリを有する記憶部とを備えることを特徴とする不揮発性記憶装置。
【請求項１０】
前記不揮発性メモリは、フラッシュメモリを含むことを特徴とする請求項９に記載の不揮発性記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ等の不揮発性メモリを制御する不揮発性メモリコントローラ、及び、該不揮発性メモリコントローラを用いた不揮発性記憶装置に関する。
【背景技術】
【０００２】
近年、書き換え可能な不揮発性メモリであるＮＡＮＤタイプのフラッシュメモリを搭載した不揮発性記憶装置として、メモリーカードがデジタルカメラや携帯電話の記憶媒体に使用され、その市場が拡大している。
【０００３】
また、不揮発性記憶装置は、年々下がるビット単価に伴い、安価な記憶デバイスとしてメモリーカード以外の市場、例えば、ＨＤＤ（Hard Disk Drive）と置き換えられるＳＳＤ（Solid State Drive）にも用いられ、その適用が拡がっている。
【０００４】
上記のフラッシュメモリのメモリセルは、ＭＯＳ（Metal Oxide Semiconductor）タイプトランジスタのコントロールゲートと基盤との間に電子を不揮発で保持するフローティングゲートを持つ構成をとり、基盤とフローティングゲートとの間で電子をやり取りすることにより、データの消去及び書き込みを行う。また、フラッシュメモリを構成するトランジスタに流れる電流量を判定することにより、フラッシュメモリのメモリセルからデータが読み出される。
【０００５】
上記のように、フラッシュメモリのメモリセルに対して、データの消去及び書き込みを繰り返すので、基盤とフローティングゲートとの間を電子が移動し、基盤とフローティングゲートとの間の絶縁膜（以降、ゲート絶縁膜）が劣化してしまう。ゲート絶縁膜が劣化すると、ゲート絶縁膜中に存在する欠陥を経由して、フローティングゲートから基盤に電子が漏れ、ゲート絶縁膜中の欠陥にトラップされた電子の影響により、書き込みの効率が低下して、消去や書き込みの不良を発生させる要因となる。
【０００６】
上記の消去や書き込みのエラーが発生したブロックのことを不良ブロックというが、フラッシュメモリにおいて、不良ブロックの存在は不可避である。フラッシュメモリを制御するコントローラは、不良ブロックが発生すると、該不良ブロックのデータを他の正常なブロックに退避すると共に、不良ブロックに対して新たなデータの消去や書き込みを行わないように制御する必要がある。
【０００７】
また、他の従来技術として、特許文献１には、フラッシュメモリにおいて、不良ブロックが発生した際の処理が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００２−１９７８９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記のように、フラッシュメモリには不良ブロックが存在するため、メモリーカードは、メモリーカードに搭載するフラッシュメモリの容量よりも少ない容量しか持たないことを、ホスト機器に通知する必要がある。例えば、実際に市場に流通する１Ｇバイトの容量を有するメモリーカードやＵＳＢフラッシュの有効容量は、１Ｇバイトよりも小さい。
【００１０】
このように、予め不良ブロックの存在や発生を見越してメモリーカードの有効容量を決定しているが、データの書き換えを繰り返すことにより不良ブロックが多発した場合には、メモリーカードが接続されているホスト機器に通知している有効容量を維持することができなくなり、全く書き込みが行えなくなってしまうという課題がある。
【００１１】
本発明の目的は、不良ブロックが発生しても、新たなデータの書き込みが可能な不揮発性メモリコントローラ及び不揮発性記憶装置を提供することである。
【課題を解決するための手段】
【００１２】
本発明に係る不揮発性メモリコントローラは、複数の物理ブロックで構成される不揮発性メモリを制御する不揮発性メモリコントローラであって、外部機器からの最小論理アドレスから最大論理アドレスまでの有効論理アドレス範囲内の論理アドレスに基づいて前記物理ブロックに対するデータの書き込み及び／又は読み出しを制御する制御部と、前記論理アドレスに対してデータの書き込みの反映を不可とする、前記有効論理アドレス範囲内の１箇所以上の部分領域を論理不良クラスタとし、当該論理不良クラスタの論理アドレスの情報を格納する論理不良クラスタテーブルと、前記物理ブロックに格納されるデータの、前記有効論理アドレス範囲の論理アドレスと前記物理ブロックの物理アドレスとの対応情報を格納するアドレス変換テーブルとを備え、前記制御部は、前記論理不良クラスタテーブルに格納された論理アドレスに対する前記外部機器からのデータの書き込み命令を受けた場合、当該論理アドレスに対するデータの前記物理ブロックへの書き込みの反映を不可とする。
【００１３】
この不揮発性メモリコントローラにおいては、有効論理アドレス範囲内の１箇所以上の部分領域を論理不良クラスタとし、当該論理不良クラスタの論理アドレスの情報を論理不良クラスタテーブルに格納し、論理不良クラスタテーブルに格納された論理アドレスに対する外部機器からのデータの書き込み命令を受けた場合、当該論理アドレスに対するデータの物理ブロックへの書き込みの反映を不可とし、また、有効論理アドレス範囲の論理アドレスと前記物理ブロックの物理アドレスとの対応情報をアドレス変換テーブルに格納し、論理不良クラスタテーブルに格納されていない論理アドレスに対する外部機器からのデータの書き込み命令を受けた場合、アドレス変換テーブルを用いて、外部機器からの論理アドレスを物理ブロックの物理アドレスに変換し、当該物理アドレスを用いて、外部機器からのデータを物理ブロックに書き込むことができる。したがって、不良ブロックが発生しても、外部機器に通知している不揮発性メモリの有効容量を維持することができるので、新たなデータの書き込みを行うことが可能になる。
【００１４】
前記制御部は、前記論理不良クラスタテーブルに格納された論理アドレスに対する前記外部機器からデータの読み出し命令を受けた場合、所定の固定値データを出力することが好ましい。
【００１５】
この場合、論理不良クラスタテーブルに格納された論理アドレスに対する外部機器からデータの読み出し命令を受けた場合、所定の固定値データを外部機器に出力しているので、外部機器が固定値データを識別することにより、当該論理アドレスがアクセス不能であることを外部機器に通知することができる。
【００１６】
前記制御部は、前記論理不良クラスタテーブルに格納された論理アドレスに対する前記外部機器からデータの読み出し命令を受けた場合、データの出力を行わないことが好ましい。
【００１７】
この場合、論理不良クラスタテーブルに格納された論理アドレスに対する外部機器からデータの読み出し命令を受けた場合、データが出力されないので、データが出力されないことを外部機器が認識することにより、当該論理アドレスがアクセス不能であることを外部機器に通知することができる。
【００１８】
前記制御部は、前記論理不良クラスタテーブルに格納された論理アドレスに対する前記外部機器からのデータの書き込み命令を受けた場合、前記外部機器に書き込みエラーの発生を通知することが好ましい。
【００１９】
この場合、論理不良クラスタテーブルに格納された論理アドレスに対する外部機器からデータの書き込み命令を受けた場合、外部機器に書き込みエラーの発生を通知しているので、当該論理アドレスにデータが書き込めないことを外部機器に通知することができる。
【００２０】
前記不揮発性メモリコントローラは、さらに、前記論理アドレスに対応するデータが格納されておらず、新たなデータの書き込みが可能な物理ブロックの物理アドレスを格納する無効ブロックテーブルを備え、前記制御部は、前記物理ブロックへのアクセス時に不良ブロックが発生し、前記外部機器からデータを書き込むことができる物理ブロックが所定値以上ないときに、前記外部機器からのアクセスを不可とする論理アドレスを決定して前記論理不良クラスタテーブルに登録し、登録した論理アドレスに対するデータの前記物理ブロックへの書き込みの反映を不可とし、前記物理ブロックへのデータの書き込みの反映を不可とした論理アドレスに対応する前記アドレス変換テーブルの物理アドレスの情報を、前記無効ブロックテーブルに登録することが好ましい。
【００２１】
この場合、論理アドレスに対応するデータが格納されておらず、新たなデータの書き込みが可能な物理ブロックの物理アドレスが無効ブロックテーブルに格納され、物理ブロックへのアクセス時に不良ブロックが発生し、外部機器からデータを書き込むことができる物理ブロックが所定値以上なくなったときに、外部機器からのアクセスを不可とする論理アドレスを決定して論理不良クラスタテーブルに登録し、登録した論理アドレスに対するデータの物理ブロックへの書き込みの反映を不可とするとともに、物理ブロックへのデータの書き込みの反映を不可とした論理アドレスに対応するアドレス変換テーブルの物理アドレスの情報を、無効ブロックテーブルに登録しているので、不良ブロックが多発した場合でも、無効ブロックテーブルに新たなデータの書き込みが可能な物理ブロックの物理アドレスを登録することができ、この物理ブロックを書き込み可能な書き込み先物理ブロックとして使用し、外部機器からのデータの書き込みを継続することができる。
【００２２】
前記制御部は、前記外部機器からのアクセスを不可とする論理アドレスとして、有効なデータが書き込まれていない論理アドレスを選択することが好ましい。
【００２３】
この場合、有効なデータが書き込まれていない論理アドレスを論理不良クラスタテーブルに登録し、登録した論理アドレスに対応するアドレス変換テーブルの物理アドレスの情報を無効ブロックテーブルに登録することができるので、書き込み可能な書き込み先物理ブロックを確保することができる。
【００２４】
前記制御部は、前記外部機器からのアクセスを不可とする論理アドレスとして、前記アドレス変換テーブルに格納されている論理アドレスの中から、有効な物理アドレスと対応しない論理アドレスを選択することが好ましい。
【００２５】
この場合、アドレス変換テーブルに格納されている論理アドレスの中の、有効な物理アドレスと対応しない論理アドレスを論理不良クラスタテーブルに登録し、登録した論理アドレスに対応するアドレス変換テーブルの物理アドレスの情報を無効ブロックテーブルに登録することができるので、書き込み可能な書き込み先物理ブロックを確保することができる。
【００２６】
前記物理ブロックへのアクセスは、前記物理ブロックに対するデータの書き込み又は消去を含むことが好ましい。
【００２７】
この場合、物理ブロックに対するデータの書き込み又は消去により、多数の不良ブロックが発生したとしても、外部機器に通知している不揮発性メモリの有効容量を維持することができるので、新たなデータの書き込みを行うことが可能になる。
【００２８】
本発明に係る不揮発性記憶装置は、上記いずれかの不揮発性メモリコントローラと、前記不揮発性メモリを有する記憶部とを備える。
【００２９】
前記不揮発性メモリは、フラッシュメモリを含むことが好ましい。
【００３０】
この場合、フラッシュメモリに不良ブロックが発生したとしても、外部機器に通知しているフラッシュメモリの有効容量を維持することができるので、新たなデータの書き込みを行うことが可能になる。
【発明の効果】
【００３１】
本発明によれば、不良ブロックが発生しても、新たなデータの書き込みが可能な不揮発性メモリコントローラ及び不揮発性記憶装置を提供することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の一実施の形態のメモリーカードの構成を示す図である。
【図２】図１に示すメモリーカードのアドレス変換テーブルの構成の一例を示す図である。
【図３】図１に示すメモリーカードの無効ブロックテーブルの構成の一例を示す図である。
【図４】図１に示すメモリーカードの論理不良クラスタテーブルの構成の一例を示す図である。
【図５】図１に示すメモリーカードのフラッシュメモリ部の構成の一例を示す図である。
【図６】図１に示すメモリーカードのフラッシュメモリ部の物理ブロック内部の構成を説明する模式図である。
【図７】図１に示すメモリーカードの読み出し処理のフローチャートである。
【図８】図１に示すメモリーカードの書き込み処理のフローチャートである。
【図９】図１に示すメモリーカードの書き込み処理による更新前の各テーブルの状態を示す図である。
【図１０】図１に示すメモリーカードの書き込み処理による更新後の各テーブルの状態を示す図である。
【図１１】図１に示すメモリーカードのデータ書き込みのフローチャートである。
【図１２】図１に示すメモリーカードの不良ブロック発生時の更新後の各テーブルの状態を示す図である。
【図１３】図１１に示す論理不良クラスタの判定処理の詳細なフローチャートである。
【図１４】図１に示すメモリーカードの論理不良クラスタ登録の更新前の各テーブルの状態を示す図である。
【図１５】図１に示すメモリーカードの論理不良クラスタ登録の更新後の各テーブルの状態を示す図である。
【発明を実施するための形態】
【００３３】
以下、図面を参照して、本発明の一実施の形態のメモリーカードについて説明する。図１は、本発明の一実施の形態のメモリーカードの構成を示すブロック図である。
【００３４】
＜１．メモリーカードの構成＞
メモリーカード１０１は、外部のホスト機器２００と接続され、ホスト機器２００と双方向に通信を行うことにより、ホスト機器２００からの指示に応じてデータの読み出し及び／又は書き込みを行う。
【００３５】
メモリーカード１０１は、コントローラ１０２と、フラッシュメモリ部１０３とを備える。コントローラ１０２は、メモリーカード１０１とホスト機器２００とのインターフェースの制御を行うと共に、フラッシュメモリ部１０３の制御を行う。
【００３６】
フラッシュメモリ部１０３は、不揮発性メモリの一例であるフラッシュメモリからなる。図示しないが、フラッシュメモリは、複数の物理ブロックからなり、物理ブロックは、複数のメモリセルからなる。物理ブロックは、フラッシュメモリにおけるデータの消去単位である。
【００３７】
ここで、メモリーカード１０１が不揮発性記憶装置の一例であり、コントローラ１０２が不揮発性メモリコントローラの一例であり、フラッシュメモリ部１０３が書き換え可能な不揮発性メモリを有する記憶部の一例である。また、ホスト機器２００の一例としては、デジタルカメラ、携帯電話、ビデオレコーダ、コンピュータ等が該当する。
【００３８】
メモリーカード１０１は、外部のホスト機器２００からのアドレスを指定したデータの書き込み又は読み出しの制御に対応して、フラッシュメモリ部１０３にデータを書き込み、又は、フラッシュメモリ部１０３からデータを読み出す。外部からのアドレス指定は、メモリーカード１０１が備える、最小論理アドレスから最大論理アドレスまでの一連のアドレス範囲（以降、「有効論理アドレス範囲」という）に限定して行われる。
【００３９】
コントローラ１０２は、ホストインターフェース部１０４、フラッシュメモリ制御部１０５、バッファメモリ１０６、ＥＣＣ１０７、制御部１０８、アドレス変換テーブル１０９、無効ブロックテーブル１１０、不良ブロックテーブル１１１、及び論理不良クラスタテーブル１１２を備える。
【００４０】
ホストインターフェース部１０４は、ホスト機器２００とのインターフェースを制御する。フラッシュメモリ制御部１０５は、フラッシュメモリ部１０３の制御を行う。バッファメモリ１０６は、ホスト機器２００からの書き込みデータや、ホスト機器２００への読み出しデータをフラッシュメモリ部１０３との間で転送する際に、一時的にデータを格納するための揮発性のバッファメモリである。
【００４１】
ＥＣＣ１０７は、ＥＣＣ（エラー検出訂正）回路であり、フラッシュメモリ部１０３にデータを書き込む際に付加するＥＣＣ（Error Correcting Code：誤り訂正符号）を生成し、フラッシュメモリ部１０３からデータを読み出す際に、読み出したデータの訂正を行う。
【００４２】
制御部１０８は、図示を省略した配線により各ブロックに接続され、各ブロックの動作を制御することにより、コントローラ１０２内部全体の制御を行う。また、制御部１０８は、ホスト機器２００から指定された有効論理アドレス範囲内の論理アドレスに基づいてフラッシュメモリ部１０３の物理ブロックに対するデータの書き込み及び／又は読み出しを制御する。
【００４３】
アドレス変換テーブル１０９は、ホスト機器２００から指定されるアドレス（論理アドレス）と、フラッシュメモリ部１０３の物理ブロックのアドレス（物理アドレス）との対応情報を記録する。ここでの論理アドレスの範囲は、上記の有効論理アドレス範囲に相当し、アドレス変換テーブル１０９は、物理ブロックに格納されるデータの、有効論理アドレス範囲の論理アドレスと物理ブロックの物理アドレスとの対応情報を格納している。
【００４４】
無効ブロックテーブル１１０は、フラッシュメモリ部１０３において有効なデータが書き込まれておらず、且つ、不良ブロックでない（不良ブロックテーブル１１１で管理されていない）物理ブロックのアドレスのリストを記録する。すなわち、無効ブロックテーブル１１０は、論理アドレスに対応するデータが格納されておらず、新たなデータの書き込みが可能な物理ブロックの物理アドレスを格納しており、データの書き込みに使用可能な物理ブロックが無効ブロックテーブル１１０に登録されている。
【００４５】
不良ブロックテーブル１１１は、フラッシュメモリ部１０３における不良ブロックの物理アドレスのリストを記録する。
【００４６】
論理不良クラスタテーブル１１２は、有効論理アドレス範囲内において、メモリーカード１０１がホスト機器２００からのアクセスを不能にする論理アドレスを定義するテーブルである。
【００４７】
具体的には、論理不良クラスタテーブル１１２は、論理アドレスに対してデータの書き込みの反映を不可とする、有効論理アドレス範囲内の１箇所以上の部分領域を論理不良クラスタとし、当該論理不良クラスタの論理アドレスの情報を格納している。また、制御部１０８は、論理不良クラスタテーブル１１２に格納された論理アドレスに対するホスト機器２００からのデータの書き込み命令を受けた場合、当該論理アドレスに対するデータの、フラッシュメモリ部１０３の物理ブロックへの書き込みの反映を不可とする。
【００４８】
＜２．各種テーブルの構成例＞
図２は、アドレス変換テーブル１０９の構成の一例を示す図である。アドレス変換テーブル１０９は、論理ブロックアドレス２０１の情報と、物理ブロックアドレス２０２の情報とを対応付けて記憶している。ここで、論理アドレスの範囲（有効論理アドレス範囲）を、フラッシュメモリ部１０３の物理ブロックの容量と等量の単位の論理ブロックに分割し、各論理ブロックを特定するための論理アドレスの情報を、論理ブロックアドレス２０１の情報とする。一方、物理ブロックアドレス２０２の情報は、物理ブロックを特定するための物理アドレスの情報である。アドレス変換テーブル１０９では、１つの論理ブロックアドレス２０１と、それに対応するフラッシュメモリ部１０３の物理ブロックアドレス２０２との組で一つのレコードが構成されている。
【００４９】
例えば、論理ブロックアドレス「００００ｈ」に対応するデータは、物理ブロックアドレス「００００ｈ」の物理ブロックすなわちフラッシュメモリ部１０３のアドレス「００００ｈ」の物理ブロックに格納され、論理ブロックアドレス「０００１ｈ」に対応するデータは、物理ブロックアドレス「００１０ｈ」の物理ブロックすなわちフラッシュメモリ部１０３のアドレス「００１０ｈ」の物理ブロックに格納されていることを示す。また、論理ブロックアドレスとして、００００ｈから１Ｆ３９ｈまでの範囲のアドレスが管理されている。
【００５０】
図３は、無効ブロックテーブル１１０の構成の一例を示す図である。無効ブロックテーブル１１０は、フラッシュメモリ部１０３における無効なデータを格納する物理ブロックのアドレスである物理ブロックアドレスの情報、例えば、０１２３ｈ、０４５６ｈ、…を記憶している。なお、フラッシュメモリ部１０３の物理ブロックのアドレスの範囲は、００００ｈ〜１ＦＦＦｈの範囲とし、２０００ｈは、無効ブロックテーブル１１０における無効な値として取り扱う。
【００５１】
不良ブロックテーブル１１１の構成は、上記の無効ブロックテーブル１１０と同様であり、フラッシュメモリ部１０３における不良データの物理ブロックのアドレスを格納する。すなわち、不良ブロックテーブル１１１は、不良ブロックの物理ブロックアドレスの情報を格納し、２０００ｈを無効値として取り扱う。
【００５２】
図４は、論理不良クラスタテーブル１１２の構成の一例を示す図である。メモリーカード１０１がホスト機器２００からのアクセスを不能とする論理ブロックのアドレスの情報、すなわち、論理不良クラスタの論理アドレスの情報を、論理ブロックアドレスとして格納する。なお、論理不良クラスタテーブル１１２でも、無効ブロックテーブル１１０と同様に、２０００ｈを無効値として取り扱う。図４の例では、全てが無効な論理ブロックアドレスの状態である。
【００５３】
＜３．フラッシュメモリ部の構成例＞
図５は、フラッシュメモリ部１０３の構成の一例を示す図である。フラッシュメモリ部１０３内部には、データを不揮発で記憶する複数のメモリセルからなるメモリセルアレイ５０１がある。メモリセルアレイ５０１に記憶可能な容量が、フラッシュメモリ部１０３の記憶容量となる。メモリセルアレイ５０１は、複数の物理ブロック５０２からなる。物理ブロック５０２は、フラッシュメモリ部１０３におけるデータの消去単位である。
【００５４】
本実施の形態において、物理ブロックのアドレスとして、００００ｈ〜１ＦＦＦｈをとるので、２０００ｈ個（８１９２個）の物理ブロック５０２がある場合を例として説明している。
【００５５】
フラッシュメモリ部１０３は、メモリセルのデータを読み出すためのセンスアンプ５０３と、メモリセルのデータを消去したり、メモリセルにデータを書き込むための書き込み・消去制御部５０４と、ページバッファ５０５と、制御回路５０６とを備える。
【００５６】
センスアンプ５０３で読み出したデータや、書き込み・消去制御部５０４で書き込みを行うためのデータは、フラッシュメモリ部１０３内部において、ページバッファ５０５に一時的に格納される。また、コントローラ１０２がフラッシュメモリ部１０３に対して読み出し又は書き込みを行うデータは、ページバッファ５０５に格納される。
【００５７】
制御回路５０６は、フラッシュメモリ部１０３全体を制御する。制御回路５０６は、フラッシュメモリ部１０３内部を制御することにより、コントローラ１０２からのデータの書き込み及び読み出しを可能にする。
【００５８】
図６は、物理ブロック５０２内部の構成を説明する模式図である。物理ブロック５０２は、複数の物理ページ６０１からなる。物理ブロック５０２は、フラッシュメモリ部１０３におけるデータの消去単位であったが、物理ページ６０１は、フラッシュメモリ部１０３におけるデータの書き込み単位である。
【００５９】
＜４．書き込み・読み出し処理＞
＜４．１読み出し処理＞
図７は、メモリーカード１０１に対するデータの読み出し処理における制御部１０８の動作を示すフローチャートである。メモリーカード１０１は、ホスト機器２００からの論理アドレスを指定した読み出し命令によって読み出し処理を開始する。
【００６０】
まず、判定処理７０１を説明する。制御部１０８は、論理不良クラスタテーブル１１２を参照して、ホスト機器２００からの論理アドレスが論理ブロックアドレスとして論理不良クラスタテーブル１１２に登録されているか否かを判定する。論理ブロックアドレスが登録されている時には、ホスト機器２００からの論理アドレスはアクセス不能とすべきアドレスであるから、制御部１０８は、読み出し処理をそのまま終了して、ホスト機器２００に対してデータを出力しない。
【００６１】
一方、論理ブロックアドレスが登録されていない時には、制御部１０８は、処理７０２を実施し、読み出し元物理ブロックを決定する。具体的には、制御部１０８は、アドレス変換テーブル１０９を参照し、ホスト機器２００から指定された論理ブロックアドレスに対応するアドレス変換テーブル１０９の物理ブロックアドレスの物理ブロックを、読み出し元物理ブロックとして決定する。
【００６２】
次に、処理７０３を説明する。制御部１０８は、処理７０２で決定されたフラッシュメモリ部１０３の読み出し元物理ブロックからデータを読み出し、フラッシュメモリ部１０３の読み出し元物理ブロックからのデータをホスト機器２００へ転送する。
【００６３】
なお、論理不良クラスタテーブル１１２が、図４の例の場合、即ち登録されている論理ブロックアドレスが全て無効値の場合には、判定処理７０１でアクセス不能にする判定は行わない。
【００６４】
また、判定処理７０１で論理ブロックアドレスが論理不良クラスタテーブル１１２に登録されている場合には、ホスト機器２００に対してデータを出力しないとしたが、所定の固定値を出力する構成としても構わない。また、論理ブロックアドレスが論理不良クラスタテーブル１１２に登録されている場合、登録されている論理ブロックアドレスに対して、アドレス変換テーブル１０９には、有効な物理ブロックアドレスが登録されていないので、有効な物理ブロックアドレスがなくても行える処理であれば、他の処理を行うようにしてもよい。
【００６５】
＜４．２書き込み処理＞
図８は、メモリーカード１０１に対するデータの書き込み処理における制御部１０８の動作のフローチャートである。メモリーカード１０１は、ホスト機器２００からの論理アドレスを指定した書き込み命令によって書き込み処理を開始する。
【００６６】
まず、判定処理８０１を説明する。制御部１０８は、論理不良クラスタテーブル１１２を参照して、ホスト機器２００からの論理アドレスが論理ブロックアドレスとして論理不良クラスタテーブル１１２に登録されているかどうかを判定する。論理ブロックアドレスが登録されている時には、ホスト機器２００からの論理アドレスはアクセス不能とすべきアドレスであるから、制御部１０８は、書き込み処理をそのまま終了する。
【００６７】
一方、論理ブロックアドレスが登録されていない時には、制御部１０８は、処理８０２を実施し、書き込み先物理ブロックを決定する。具体的には、制御部１０８は、無効ブロックテーブル１１０を参照し、無効ブロックテーブル１１０に登録されている物理ブロックアドレスから、新たなデータの書き込みが可能な物理ブロックを選択し、選択した物理ブロックを書き込み先物理ブロックとして決定する。
【００６８】
次に、処理８０３を説明する。制御部１０８は、ホスト機器２００からのデータの書き込みを行う。具体的には、制御部１０８は、ホスト機器２００から転送される書き込みデータを、処理８０２で決定されたフラッシュメモリ部１０３の書き込み先物理ブロックに転送して書き込む。この時、ホスト機器２００からの書き込みデータが物理ブロック単位に満たないときには、フラッシュメモリ部１０３に既書き込みのデータを使用することにより、書き込みデータを物理ブロック単位のデータにして、フラッシュメモリ部１０３に書き込む。このような処理を行う必要があるのは、後述するように、フラッシュメモリ部１０３のデータの消去単位でしか、データを書き換えることができないためである。
【００６９】
次に、処理８０４を説明する。制御部１０８は、アドレス変換テーブル１０９及び無効ブロックテーブル１１０の更新を行う。具体的には、制御部１０８は、ホスト機器２００から指定された論理ブロックアドレスに対応するアドレス変換テーブル１０９の物理ブロックアドレスと、書き込み先物理ブロックの物理ブロックアドレス（処理８０２で選択された無効ブロックテーブル１１０の物理ブロックアドレス）とを入れ替えてアドレス変換テーブル１０９及び無効ブロックテーブル１１０を更新する。
【００７０】
ここで、処理８０４における書き込み処理におけるテーブル更新の処理を具体例で説明する。図９は、書き込み処理による更新前の各テーブルの状態を示す図である。図９では、アドレス変換テーブル１０９は、図２と同じ状態であり、無効ブロックテーブル１１０は、図３と同じ状態であり、論理不良クラスタテーブル１１２は、図４と同じ状態である。不良ブロックテーブル１１１の不良ブロックアドレス（物理ブロックアドレス）は、全て無効値であるとする。
【００７１】
この状態からホスト機器２００からのアドレス指定が論理ブロックアドレス「０００１ｈ」であり、処理８０２で、書き込み先物理ブロックとして、無効ブロックテーブル１１０の物理ブロックアドレス「０１２３ｈ」が選択された場合には、以下のように、処理８０４で各テーブルが更新される。
【００７２】
図１０は、書き込み処理による更新後の各テーブルの状態を示す図である。制御部１０８は、アドレス変換テーブル１０９の、ホスト機器２００が指定した論理ブロックアドレスに対応する物理ブロックアドレス「００１０ｈ」と、無効ブロックテーブル１１０の物理ブロックアドレス「０１２３ｈ」とを交換する。この結果、図１０に示すように、アドレス変換テーブル１０９の論理ブロックアドレスに対応する物理ブロックアドレスが「０１２３ｈ」となり、無効ブロックテーブル１１０の物理ブロックアドレスが「００１０ｈ」となる。
【００７３】
なお、判定処理８０１で論理ブロックアドレスが論理不良クラスタテーブル１１２に登録されている場合には、そのまま書き込み処理を終了するとした。これは、ホスト機器２００がデータ書込み後にデータの読み出しを行うことで、正しくデータの書き込みが行えたかどうかを確認することを想定しているためである。
【００７４】
しかしながら、メモリーカード１０１が、ホスト機器２００に対してエラーを通知することで、正しくデータの書き込みが行えなかったことをホスト機器２００が認識できる仕組みでも構わない。例えば、判定処理８０１において、制御部１０８は、ホスト機器２００からの論理ブロックアドレスが論理不良クラスタテーブル１１２に登録されていると判定した場合に、書き込み処理を終了し、正しくデータの書き込みが行えなかったことを通知するための書き込みエラー情報をホスト機器２００へ送信するようにしてもよい。
【００７５】
＜４．３書き込み処理時の不良ブロック登録＞
図１１は、図８に示したフローチャートのデータ書き込み処理８０３の詳細なフローチャートである。
【００７６】
まず、処理１１０１を説明する。制御部１０８は、書き込み先物理ブロックの消去を行う。具体的には、制御部１０８は、フラッシュメモリ部１０３に対して書き込み先物理ブロックの物理アドレスを指定してデータを消去するコマンドを発行する。フラッシュメモリ部１０３の制御回路５０６は、書き込み・消去制御部５０４を使用して該当する物理ブロックのデータを消去する。
【００７７】
但し、フラッシュメモリ部１０３への消去処理において、後発性の不良ブロックの発生の可能性がある。この可能性は低い確率ではあるものの、物理ブロックのデータの消去に失敗する場合がある。この場合、フラッシュメモリ部１０３は、消去に失敗したことをステータスとして制御部１０８へ出力する。そこで、以下の判定処理１１０２を実施する。
【００７８】
次に、判定処理１１０２を説明する。制御部１０８は、フラッシュメモリ部１０３からステータス、例えば、消去処理が成功したことを示すステータス、又は、消去処理が失敗したことを示すステータスを取得することにより、処理１１０１での消去処理が成功したのか、失敗して不良ブロックとして管理する必要があるのかを判定する。消去処理が成功している場合には、処理１１０３へ移行し、失敗している場合には、処理１１０６へ移行する。
【００７９】
次に、処理１１０３を説明する。制御部１０８は、ホスト機器２００からのデータをフラッシュメモリ部１０３の書き込み単位である物理ページ単位で書き込みを行う。
【００８０】
但し、フラッシュメモリ部１０３へのデータの書き込み処理においても、消去処理と同様に後発性の不良ブロックの可能性がある。そこで、判定処理１１０４を実施する。制御部１０８は、フラッシュメモリ部１０３からステータス、例えば、書き込み処理が成功したことを示すステータス、又は、書き込み処理が失敗したことを示すステータスを取得することにより、処理１１０３での書き込み処理が成功したのか、失敗して不良ブロックとして管理する必要があるのかを判定する。書き込み処理が成功している場合には、判定処理１１０５へ移行し、失敗している場合には処理１１０６へ移行する。
【００８１】
次に、判定処理１１０５を説明する。制御部１０８は、全ての書き込み処理が完了したかどうかを判定する。まだ未書き込みのデータが残っている場合には、処理１１０３へ戻り、全てのデータの書き込みが完了している場合には、処理を終了する。
【００８２】
次に、処理１１０６を説明する。制御部１０８は、無効ブロックテーブル１１０及び不良ブロックテーブル１１１の更新を行う。具体的には、制御部１０８は、不良ブロックとして管理する必要のある書き込み先物理ブロックの物理アドレスを物理ブロックアドレスとして不良ブロックテーブル１１１に移動する。この物理ブロックアドレスの移動処理は、無効ブロックテーブル１１０の書き込み先物理ブロックの物理ブロックアドレスを無効値に差し替えて、不良ブロックテーブル１１１の無効値を書き込み先物理ブロックの物理ブロックアドレスに差し替えて行う。
【００８３】
次に、処理１１０７を説明する。制御部１０８は、論理不良クラスタの判定処理を行い、論理不良クラスタの判定処理の後に、書き込み処理を終了する。ここでの書き込み処理の終了は、ホスト機器２００からの書き込みデータを正しく書き込み処理できていないので、処理８０４を行わずに書き込み処理を終了する。上記の論理不良クラスタの判定処理については、後で説明する。
【００８４】
次に、図１１のフローチャートで示した書き込み処理における処理１１０６による各テーブルの更新処理の具体例を説明する。処理１１０６を行う前のテーブルの状態が図１０で示されるとする。この状態から書き込み先物理ブロックの物理ブロックアドレスとして「１ＦＦＦｈ」が選択されている場合、以下のようにしてテーブルを更新する。
【００８５】
図１２は、不良ブロック発生時の更新後の各テーブルの状態を示す図である。制御部１０８は、無効ブロックテーブル１１０の書き込み先物理ブロックの物理ブロックアドレス「１ＦＦＦｈ」を無効値「２０００ｈ」に差し替え、不良ブロックテーブル１１１の不良ブロックアドレス（物理ブロックアドレス）の無効値「２０００ｈ」を、消去又は書き込み不良が発生した不良ブロックの物理ブロックアドレス「１ＦＦＦｈ」に差し替える。
【００８６】
＜４．４論理不良クラスタの登録＞
図１３は、図１１に示す論理不良クラスタを判定する処理１１０７の詳細なフローチャートである。不良ブロックが多発した場合に、無効ブロックテーブル１１０の有効な値の物理ブロックアドレスがなくなってしまい、書き込み処理における処理８０２で書き込み先物理ブロックを決定することができなくなる場合がある。書き込み先物理ブロックを決定することができなくなると、ホスト機器２００からのデータの書き込みが一切できなくなってしまう。この状態を回避するために、論理不良クラスタの判定処理を行っている。
【００８７】
まず、処理１３０１を説明する。制御部１０８は、ワークブロックの確認を行う。ワークブロックとは、ホスト機器２００からの書き込みデータを書き込むことのできる物理ブロックのことである。有効なデータが書かれている物理ブロックでないと共に、不良ブロックでないことが、ワークブロックであることの条件である。このワークブロックの確認は、制御部１０８が無効ブロックテーブル１１０ではなく、不良ブロックテーブル１１１を参照することで行う。
【００８８】
上記では説明しなかったが、上記のように無効ブロックテーブル１１０を参照して判断しないのは、以下の理由による。すなわち、ホスト機器２００からの新たなデータを書き込むためには、無効ブロックテーブル１１０の有効な物理ブロックアドレス（データの書き込みに使用可能な物理ブロック）がなくならないように、メモリーカード１０１を制御する必要があるが、アドレス変換テーブル１０９に登録されている物理ブロックアドレスが無効値「２０００ｈ」である論理ブロックアドレスに対してデータの書き込みが行われる場合には、消去又は書き込みの不良が発生しないにもかかわらず、無効ブロックテーブル１１０の物理ブロックアドレスが無効値「２０００ｈ」に差し変わるからである。このため、本実施の形態では、不良ブロックの数を確認できる不良ブロックテーブル１１１を参照して、無効ブロックテーブル１１０の有効な物理ブロックアドレスの数が足りているかどうか、すなわち、ワークブロックが規定値以上あるかどうかを判定する。
【００８９】
次に、判定処理１３０２を説明する。制御部１０８は、ワークブロックが規定値以上あるかどうかを判定する。規定値以上のワークブロックがあると判断した場合には、処理を終了し、ワークブロックが規定値に満たない場合には、処理１３０３へ移行する。ここで、規定値としては、種々の所定値を用いることができ、例えば、有効論理アドレス範囲、フラッシュメモリ部１０３の物理ブロック数等を考慮することにより、適宜決定される。
【００９０】
次に、処理１３０３を説明する。ワークブロックが規定値以上ない場合、制御部１０８は、ワークブロック候補の論理ブロックを決定する。ワークブロック候補の論理ブロックの決定とは、ホスト機器２００からアクセスを不能にする論理ブロックの論理アドレスを論理ブロックアドレスとして決定することである。
【００９１】
この時の論理ブロックアドレスの決定において、制御部１０８は、メモリーカード１０１に書き込まれているデータに使用されているファイルシステムを理解して、ファイルシステム上の使用可能な連続したクラスタ（有効論理アドレス範囲内の１箇所以上の部分領域）を論理不良クラスタとして選択し、当該論理不良クラスタの論理アドレスをワークブロック候補の論理ブロックアドレスとして決定する。
【００９２】
また、制御部１０８は、メモリーカード１０１に書き込まれているデータのファイルシステムを解釈できないときには、アドレス変換テーブル１０９に登録されている物理ブロックアドレスが無効値の論理ブロックアドレスを、ワークブロック候補の論理ブロックアドレスとして選択する。
【００９３】
いずれも候補がないときには、制御部１０８は、任意の論理ブロックアドレスを選択する。このように、処理１３０３で選択した論理ブロックアドレス（以降、論理不良ブロックアドレス）に対しては、制御部１０８は、以下の処理により、今後のホスト機器２００からの読み出し及び書き込みを不能にする。
【００９４】
次に、処理１３０４を説明する。制御部１０８は、アドレス変換テーブル１０９及び無効ブロックテーブル１１０の更新を行う。具体的には、制御部１０８は、アドレス変換テーブル１０９の論理不良ブロックアドレスの物理ブロックアドレスと、無効ブロックテーブル１１０の無効値とを入れ替えて更新する。
【００９５】
次に、処理１３０５を説明する。制御部１０８は、論理不良クラスタテーブル１１２の更新を行う。具体的には、制御部１０８は、論理不良クラスタテーブル１１２に論理不良ブロックアドレスを書き込むことにより、論理不良クラスタを登録し、処理を終了する。
【００９６】
次に、処理１３０４及び処理１３０５による各テーブルの更新処理を具体例で説明する。図１４は、論理不良クラスタ登録の更新前の各テーブルの状態を示す図であり、図１５は、論理不良クラスタ登録の更新後の各テーブルの状態を示す図である。
【００９７】
図１４に示すように、更新前のテーブルの状態から処理１３０３により論理不良ブロックアドレスを「１Ｆ３９ｈ」と決定した場合には、図１５に示す更新後の状態に各テーブルを更新する。すなわち、制御部１０８は、アドレス変換テーブル１０９の論理ブロックアドレス「１Ｆ３９ｈ」にあった物理ブロックアドレス「１０００ｈ」と、無効ブロックテーブル１１０の無効値「２０００ｈ」とを交換し、論理不良クラスタテーブル１１２に論理不良ブロックアドレス「１Ｆ３９ｈ」を新たに書き込む。
【００９８】
以上の処理を行うことにより、有効論理アドレス範囲に無効な論理アドレスを設けることができる。従って、新たな不良ブロックが発生しても、無効な論理アドレスを増やすことにより、無効ブロックテーブル１１０の有効な物理ブロックアドレスの数を増やすことができる。この結果、本実施の形態では、不良ブロックが発生しても、ホスト機器２００に通知しているメモリーカード１０１の有効容量を維持することができるので、新たなデータの書き込みを行うことが可能になる。
【００９９】
なお、上記の説明では、１個の論理ブロックの論理アドレスに１個の物理ブロックの物理アドレスを対応させたが、この例に特に限定されず、１個の論理ブロックの論理アドレスに２個以上の物理ブロックの物理アドレスを対応させてもよく、例えば、１個の論理ブロックの論理アドレスに２個又は４個の物理ブロックの物理アドレスを対応させてもよい。具体的には、１個の論理ブロックに２個の物理ブロックが対応する場合、アドレス変換テーブルは、１個の論理ブロックの論理アドレスに２個の物理ブロックの物理アドレスを対応付けて記憶し、ホスト機器２００が指定した１個の論理ブロックの論理アドレスを、当該論理ブロックの論理アドレス（１個の論理ブロックアドレス）に対応付けられている２個の物理ブロックの物理アドレス（２個の物理ブロックアドレス）に変換するようにしてもよい。このように、論理ブロックに対応する物理ブロックの数等に応じて、上記の処理を適宜変更することにより、１個の論理ブロックの論理アドレスが２個以上の物理ブロックの物理アドレスに対応する場合も、本発明を上記と同様に適用することができる。
【産業上の利用可能性】
【０１００】
本発明は、不良ブロックが多発しても、書き込み不能とはならないユーザ利便性の高い不揮発性記憶装置を提供することができるので、不揮発性メモリを用いた不揮発性記憶装置、及び不揮発性メモリを制御する不揮発性メモリコントローラに有用である。
【符号の説明】
【０１０１】
１０１  メモリーカード
１０２  コントローラ
１０３  フラッシュメモリ部
１０４  ホストインターフェース部
１０５  フラッシュメモリ制御部
１０６  バッファメモリ
１０７  ＥＣＣ
１０８  制御部
１０９  アドレス変換テーブル
１１０  無効ブロックテーブル
１１１  不良ブロックテーブル
１１２  論理不良クラスタテーブル
５０１  メモリセルアレイ
５０２  物理ブロック
５０３  センスアンプ
５０４  書き込み・消去制御部
５０５  ページバッファ
５０６  制御回路
【図１】
0005612514.tif 000002
【図２】
0005612514.tif 000003
【図３】
0005612514.tif 000004
【図４】
0005612514.tif 000005
【図５】
0005612514.tif 000006
【図６】
0005612514.tif 000007
【図７】
0005612514.tif 000008
【図８】
0005612514.tif 000009
【図９】
0005612514.tif 000010
【図１０】
0005612514.tif 000011
【図１１】
0005612514.tif 000012
【図１２】
0005612514.tif 000013
【図１３】
0005612514.tif 000014
【図１４】
0005612514.tif 000015
【図１５】
0005612514.tif 000016