(57)【要約】【課題】  フラッシメモリの使用効率を低下させることなく、不良ブロックの発生に対する許容量を向上させることができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステムを提供する。【解決手段】  フラッシュメモリ内の複数ブロックで構成されたゾーンと、該ゾーンに割当てられるホストシステム側の論理ブロックアドレス空間との関係を管理する割当管理機能と、前記ゾーンに対するアクセスを制御するアクセス制御機能と、複数の前記ゾーンに属するブロックが存在するように前記ゾーンを構成するゾーン構成機能を備える。【選択図】図６
2005141419.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリ内の複数ブロックで構成されたゾーンと、該ゾーンに割当てられるホストシステム側の論理ブロックアドレス空間との対応関係を管理する割当管理機能と、
前記ゾーンに対するアクセスを制御するアクセス制御機能と、
複数の前記ゾーンに属するブロックが存在するように前記ゾーンを構成するゾーン構成機能とを備えたことを特徴とするメモリコントローラ。
【請求項２】
前記ゾーン構成機能が、２つの前記ゾーンに属するブロックが存在するように前記ゾーンを構成することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記ゾーン構成機能が、前記ゾーンのうちのいずれか１つのゾーンと、他の２つのゾーンとに属するブロックが存在するように前記ゾーンを構成することを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記ゾーン毎のアドレス変換テーブルを作成する変換テーブル作成手段を備えることを特徴とする請求項１乃至３のいずれか１項に記載のメモリコントローラ。
【請求項５】
前記ゾーン毎の候補テーブルを作成する候補テーブル作成手段を備えることを特徴とする請求項１乃至４のいずれか１項に記載のメモリコントローラ。
【請求項６】
請求項１乃至５のいずれか１項に記載のメモリコントローラと、フラッシュメモリとを備えることを特徴とするフラッシュメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステムに関する。
【背景技術】
【０００２】
近年、メモリカードやシリコンディスクなどのメモリシステムに用いられる半導体メモリとして、フラッシュメモリが用いられることが多い。このフラッシュメモリは不揮発性メモリの一種であり、電源が投入されているか否かに関わらず、データが保持されていることが要求される。
【０００３】
ところで、上記のような装置に特に用いられることが多いＮＡＮＤ型フラッシュメモリは、メモリセルを消去状態（論理値の「１」）から書込状態（論理値の「０」）に変化させる場合には、メモリセル単位で行うことができるが、メモリセルを書込状態（論理値の「０」）から消去状態（論理値の「１」）に変化させる場合には、メモリセル単位で行うことができず、複数のメモリセルからなる所定の消去単位（ブロック）でしかこれを行うことができない。かかる一括消去動作は、一般的にブロック消去と呼ばれている。
【０００４】
従って、ＮＡＮＤ型フラッシュメモリで、データの書替を行なう場合には、ブロック消去されている消去済ブロックに新たなデータ（書替後のデータ）を書込み、古いデータ（書替前のデータ）が書込まれていたブロックを消去するという処理を行なわなければならない。このようにデータを書替える場合、書替後のデータは書替前と異なるブロックに書込まれるため、ホストシステム側から与えられる論理ブロックアドレスと、フラッシュメモリ内でのブロックアドレスである物理ブロックアドレスとの対応関係は、データを書替える毎に動的に変化する。このため、論理ブロックアドレスと物理ブロックアドレスの対応関係を示したアドレス変換テーブルが必要となる。
【０００５】
このアドレス変換テーブルを、フラッシュメモリ内の全ブロックを対象にして作成した場合、フラッシュメモリの容量の増加に伴いアドレス変換テーブルのサイズが大きくなるため、アドレス変換テーブルを作成する際の領域的、又は時間的な負担が大きくなる。この問題を解決するため、特許文献１（特開２０００ー２８４９９６）では、フラッシュメモリ内を複数のゾーンに分割し、各ゾーンに割当てられたブロックを対象にしてアドレス変換テーブルを作成している。
【０００６】
又、上記ゾーンを採用したフラッシュメモリシステムでは、不良ブロックの発生を考慮して、ホストシステム側のデータ領域（特定範囲の論理ブロックアドレスに対応したデータ領域）対して、ゾーンを構成するブロックが余分に割当てている。
【特許文献１】特開２０００ー２８４９９６
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記のようにフラッシュメモリ内の複数のブロックでゾーンを構成した場合に、各ゾーンに割当てる予備的なブロック（不良ブロックの発生を考慮して、余分に割当てられたブロック）の数を多くすると、予備的なブロックの比率が高くなり同一容量のフラッシュメモリでカバーできるホストシステム側のデータ領域が狭くなる（以下、同一容量のフラッシュメモリでカバーできるホストシステム側のデータ領域の広狭を使用効率という。）。一方、各ゾーンに割当てる予備的なブロックの数を少なくすると、フラッシメモリの使用
効率は向上するが、不良ブロックの発生に対する許容量（許容できる不良ブロックの発生数）が低下する。
【０００８】
そこで、本発明は、フラッシメモリの使用効率を低下させることなく、不良ブロックの発生に対する許容量を向上させることができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る目的は、フラッシュメモリ内の複数ブロックで構成されたゾーンと、該ゾーンに割当てられるホストシステム側の論理ブロックアドレス空間との対応関係を管理する割当管理機能と
前記ゾーンに対するアクセスを制御するアクセス制御機能と、
複数の前記ゾーンに属するブロックが存在するように前記ゾーンを構成するゾーン構成機能とを備えたことを特徴とするメモリコントローラによって達成される。
【００１０】
又、本発明に係る目的は、前記メモリコントローラと、フラッシュメモリを備えることを特徴とするフラッシュメモリシステムによっても達成される。
【００１１】
ここで、「複数の前記ゾーンに属するブロックが存在する」とは、２又は３以上のゾーンに属するブロックが存在し、そのブロックは２又は３以上のゾーンが共用する共用ブロックとなっていることを意味する。
【００１２】
又、本発明によれば、前記ゾーン構成機能が、２つの前記ゾーンに属するブロックが存在するように前記ゾーンを構成することが好ましい。
【００１３】
ここで、「２つの前記ゾーンに属するブロックが存在する」とは、２つのゾーンが共用する共用ブロックが存在することを意味する。
【００１４】
又、本発明によれば、前記ゾーン構成機能が、前記ゾーンのうちのいずれか１つのゾーンと、他の２つのゾーンとに属するブロックが存在するように前記ゾーンを構成することが好ましい。
【００１５】
ここで、「前記ゾーンのうちのいずれか１つのゾーンと、他の２つのゾーンとに属するブロックが存在する」とは、第１のゾーン、第２のゾーン及び第３のゾーンにおいて、第１のゾーンと第２のゾーンで共用するブロックと、第１のゾーンと第３のゾーンで共用するブロックが存在することを意味する。つまり、第１のゾーンが、第２のゾーンと共用するブロックと、第３のゾーンと共用するブロックを含んでいることを意味する。
【００１６】
又、本発明によれば、前記ゾーン毎のアドレス変換テーブルを作成する変換テーブル作成手段を備えることが好ましい。
【００１７】
又、本発明によれば、前記ゾーン毎の候補テーブルを作成する候補テーブル作成手段を備えることが好ましい。
【発明の効果】
【００１８】
本発明によれば、フラッシュメモリの複数のブロックで構成されたゾーン内に、共有ブロック（複数のゾーンで共用しているブロック）が存在するので、この共有ブロックを不良ブロックの発生数の多いゾーンが優先的に使用すれば、フラッシメモリの使用効率の低下を抑えつつ、不良ブロックの発生に対する許容量を向上させることができる。
【発明を実施するための最良の形態】
【００１９】
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
【００２０】
[フラッシュメモリシステム１の説明]
図１は、本発明に係るフラッシュメモリシステム１を概略的に示すブロック図である。図１に示したようにフラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するコントローラ３で構成されている。又、フラッシュメモリシステム１は、通常ホストシステム４に着脱可能に装着されて使用され、ホストシステム４に対して一種の外部記憶装置として用いられる。
【００２１】
尚、ホストシステム４としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【００２２】
フラッシュメモリ２は、ページ単位で読出し又は書込みを、ブロック単位で消去を実行するデバイスであり、例えば、１ブロックは３２ページで構成され、１ページは５１２バイトのユーザ領域と１６バイトの冗長領域で構成されている。
【００２３】
コントローラ３は、ホストインターフェース制御ブロック５と、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（エラー・コレクション・コード）ブロック１１と、フラッシュメモリシーケンサブロック１２とから構成される。これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積されている。以下に各ブロックの機能を説明する。
【００２４】
マイクロプロセッサ６は、コントローラ３を構成する各機能ブロック全体の動作を制御する機能ブロックである。
【００２５】
ホストインターフェース制御ブロック５は、ホストインターフェースブロック７の動作を制御する機能ブロックである。ここで、ホストインターフェース制御ブロック５は、ホストインターフェースブロック７の動作を設定する動作設定レジスタ（図示せず）を備えており、この動作設定レジスタに基づきホストインターフェースブロック７は動作する。
【００２６】
ホストインターフェースブロック７は、ホストシステム４とデータ、アドレス情報、ステータス情報及び外部コマンド情報の授受を行なう機能ブロックである。すなわち、フラッシュメモリシステム１がホストシステム４に装着されると、フラッシュメモリシステム１とホストシステム４は、外部バス１３を介して相互に接続され、かかる状態において、ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてコントローラ３の内部に取り込まれ、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００２７】
さらに、ホストインターフェースブロック７は、ホストシステム４より供給されるホストアドレス及び外部コマンドを一時的に格納するタスクファイルレジスタ（図示せず）及びエラーが発生した場合にセットされるエラーレジスタ（図示せず）等を有している。
【００２８】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）セルによって構成される機能ブロックである。
【００２９】
バッファ９は、フラッシュメモリ２から読出したデータ及びフラッシュメモリ２に書込
むデータを一時的に保持する機能ブロックである。すなわち、フラッシュメモリ２から読出したデータは、ホストシステム４が受け取り可能な状態になるまでバッファ９に保持され、フラッシュメモリ２に書込むデータは、フラッシュメモリ２が書込み可能な状態となるまでバッファ９に保持される。
【００３０】
フラッシュメモリシーケンサブロック１２は、内部コマンドに基づきフラッシュメモリ２の動作を制御する機能ブロックである。フラッシュメモリシーケンサブロック１２は、複数のレジスタ（図示せず）を備え、この複数のレジスタに内部コマンドを実行する際に必要な情報が設定される。この複数のレジスタに内部コマンドを実行する際に必要な情報が設定されると、フラッシュメモリシーケンサブロック１２は、その情報に基づいて処理を実行する。ここで、「内部コマンド」とは、コントローラ３からフラッシュメモリ２に与えられるコマンドであり、ホストシステム４からフラッシュメモリシステム１に与えられるコマンドである「外部コマンド」と区別される。
【００３１】
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報及び内部コマンド情報の授受を行う機能ブロックである。
【００３２】
ＥＣＣブロック１１は、フラッシュメモリ２に書込むデータに付加されるエラーコレクションコードを生成するとともに、読出しデータに付加されたエラーコレクションコードに基づいて、読出したデータに含まれる誤りを検出・訂正する機能ブロックである。
【００３３】
[メモリセルの説明]
次に、図２及び３を参照して図１に示したフラッシュメモリ２を構成するメモリセル１６の具体的な構造について説明する。
【００３４】
図２は、フラッシュメモリを構成するメモリセル１６の構造を概略的に示す断面図である。同図に示したように、メモリセル１６は、Ｐ型半導体基板１７に形成されたＮ型のソース拡散領域１８及びドレイン拡散領域１９と、ソース拡散領域１８とドレイン拡散領域１９との間のＰ型半導体基板１７を覆って形成されたトンネル酸化膜２０と、トンネル酸化膜２０上に形成されたフローティングゲート電極２１と、フローティングゲート電極２１上に形成された絶縁膜２２と、絶縁膜２２上に形成されたコントロールゲート電極２３とから構成される。このような構成を有するメモリセル１６が、フラッシュメモリ内で複数個直列に接続されている。
【００３５】
メモリセル１６は、フローティングゲート電極２１に電子が注入されているか否かによって、「消去状態（電子が蓄積されていない状態）」と「書込状態（電子が蓄積されている状態）」のいずれかの状態が示される。ここで、１つのメモリセル１６は１ビットのデータに対応し、メモリセル１６の「消去状態」が論理値の「１」のデータに対応し、メモリセル１６の「書込状態」が論理値の「０」のデータに対応する。
【００３６】
「消去状態」においては、フローティングゲート電極２１に電子が蓄積されていないため、コントロールゲート電極２３に読出し電圧（高レベル電圧）が印加されていないときには、ソース拡散領域１８とドレイン拡散領域１９との間の、Ｐ型半導体基板１７の表面にチャネルが形成されず、ソース拡散領域１８とドレイン拡散領域１９は電気的に絶縁される。一方、コントロールゲート電極２３に読出し電圧（高レベル電圧）が印加されると、ソース拡散領域１８とドレイン拡散領域１９との間の、Ｐ型半導体基板１７の表面にチャネル（図示せず）が形成され、ソース拡散領域１８とドレイン拡散領域１９は、このチャネルによって電気的に接続される。
【００３７】
すなわち、「消去状態」においてはコントロールゲート電極２３に読出し電圧（高レベ
ル電圧）が印加されていない状態では、ソース拡散領域１８とドレイン拡散領域１９とは電気的に絶縁され、コントロールゲート電極２３に読出し電圧（高レベル電圧）が印加された状態では、ソース拡散領域１８とドレイン拡散領域１９とは電気的に接続される。
【００３８】
図３は、「書込状態」であるメモリセル１６を概略的に示す断面図である。同図に示したように、「書込状態」とは、フローティングゲート電極２１に電子が蓄積されている状態を指す。フローティングゲート電極２１はトンネル酸化膜２０及び絶縁膜２２に挟まれているため、一旦、フローティングゲート電極２１に注入された電子は、きわめて長時間フローティングゲート電極２１内にとどまる。この「書込状態」においては、フローティングゲート電極２１に電子が蓄積されているので、コントロールゲート電極２３に読出し電圧（高レベル電圧）が印加されているか否かに関わらず、ソース拡散領域１８とドレイン拡散領域１９との間の、Ｐ型半導体基板１７の表面にはチャネル２４が形成される。したがって、「書込状態」においてはソース拡散領域１８とドレイン拡散領域１９とは、コントロールゲート電極２３に読出し電圧（高レベル電圧）が印加されているか否かに関わらず、チャネル２４によって常に電気的に接続状態となる。
【００３９】
又、上記メモリセル１６が消去状態であるか書込状態であるかは、次のようにして読み出すことができる。メモリセル１６はフラッシュメモリ内で複数個直列に接続されている。この直列体の中で選択するメモリセル１６に低レベル電圧を印加し、それ以外のメモリセル１６のコントロールゲート電極２３に高レベル電圧を印加する。この状態でメモリセル１６の直列体が導通状態であるか否かの検出が行われる。その結果、この直列体が導通状態であれば、選択されたメモリセル１６は書込状態であると判断され、絶縁状態であれば、選択されたフラッシュメモリセル１６は消去状態であると判断される。このようにして、直列体に含まれる任意のメモリセル１６に保持されたデータが「０」であるのか「１」であるのかを読み出すことができる。
【００４０】
又、消去状態であるメモリセル１６を書込状態に変化させる場合は、コントロールゲート電極２３が高電位側となる高電圧を印加し、トンネル酸化膜２０を介してフローティングゲート電極２１へ電子を注入する。この際、ＦＮ（ファウラーノルトハイム）トンネル電流が流れフローティングゲート電極２１に電子が注入される。一方、書込状態であるフラッシュメモリセル１６を消去状態に変化させる場合は、コントロールゲート電極２３が低電位側となる高電圧を印加し、トンネル酸化膜２０を介してフローティングゲート電極２１に蓄積された電子を排出する。
【００４１】
[フラッシュメモリのメモリ構造の説明]
次に、フラッシュメモリのメモリ構造を説明する。図４は、フラッシュメモリのメモリ構造を概略的に示す図である。図４に示したように、フラッシュメモリはデータの読出し及び書込みにおける処理単位であるページと、データの消去単位であるブロックで構成されている。
【００４２】
上記ページは、例えば５１２バイトのユーザ領域２５と、１６バイトの冗長領域２６によって構成される。ユーザ領域２５は、主に、ホストシステム４から供給されるデータが格納される領域であり、冗長領域２６は、エラーコレクションコード、対応論理ブロックアドレス及びブロックステータス等の付加情報が格納される領域である。
【００４３】
エラーコレクションコードは、ユーザ領域２５に格納されたデータに含まれる誤りを訂正するための付加情報であり、ＥＣＣブロックによって生成される。このエラーコレクションコードに基づき、ユーザ領域２５に格納されたデータに含まれる誤りが所定数以下であれば、その誤りが訂正される。
【００４４】
対応論理ブロックアドレスは、そのブロックにデータが格納されている場合に、そのブ
ロックがどの論理ブロックアドレスに対応するかを示している。尚、そのブロックにデータが格納されていない場合は、対応論理ブロックアドレスも格納されていないので、対応論理ブロックアドレスが格納されているか否かで、そのブロックが消去済ブロックであるか否かを判断することができる。つまり、対応論理ブロックアドレスが格納されていない場合は消去済ブロックであると判断する。
【００４５】
ブロックステータスは、そのブロックが不良ブロック（正常にデータの書込み等を行なうことができないブロック）であるか否かを示すフラグであり、そのブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
【００４６】
[論理ブロックアドレスと物理ブロックアドレスの説明]
フラッシュメモリはデータの上書きができないため、データの書替えを行なう場合には、ブロック消去されている消去済ブロックに新たなデータ（書替後のデータ）を書込み、古いデータ（書替前のデータ）が書込まれていたブロックを消去するという処理を行なわなければならない。この際、消去はブロック単位で処理されるため、古いデータ（書替前のデータ）が書込まれていたページが含まれるブロックの、全ページのデータが消去されてしまう。従って、データの書替えを行なう場合、書替えるページが含まれるブロックの、他のページのデータについても、消去済ブロックに移動させる処理が必要となる。
【００４７】
上記のようにデータを書替える場合、書替後のデータは書替前と異なるブロックに書込まれるため、ホストシステム側から与えられる論理ブロックアドレスと、フラッシュメモリ内でのブロックアドレスである物理ブロックアドレスとの対応関係は、データを書替える毎に動的に変化する。このため、論理ブロックアドレスと物理ブロックアドレスの対応関係を示したアドレス変換テーブルが必要となる。尚、このアドレス変換テーブルは、フラッシュメモリの冗長領域に書込まれている対応論理ブロックアドレスに基づいて作成され、データが書替えられる毎に、その書替えに関わった部分の対応関係が更新される。
【００４８】
［ゾーンの構成の説明］
次に、フラッシュメモリ内の複数のブロックで構成したゾーンを、論理ブロックアドレスの空間に割当てるゾーン管理について図面を参照して説明する。図５は、５１２のブロックでゾーンを構成した例を示している。図５に示した例では、ゾーンは、５１２のブロックＢ００００〜Ｂ０５１１（物理ブロックアドレスの００００〜０５１１）で構成され、各ブロックは、読出し及び書込み処理の単位である３２のページＰ００〜Ｐ３１で構成されている。ここで、ブロックは消去処理の単位であり、ページは読出し及び書込み処理の単位である。
【００４９】
又、このゾーンを、論理ブロックアドレスの空間に割当てる場合、不良ブロックの発生を考慮して、ゾーンを構成するブロック数よりも少ないブロック数の論理ブロックアドレスの空間に割当てられる。この割当は、通常、フラッシュメモリの仕様に応じて行なわれるが、例えば、５１２のブロックで構成されたゾーンを、５００ブロック分の論理ブロックアドレスの空間に割当てたり、４９０ブロック分の論理ブロックアドレスの空間に割当てたりすることができる。この際、論理ブロックアドレスの空間に割当てるブロック数を増やせば、フラッシュメモリの使用効率は良くなるが、不良ブロックの発生に対する許容量（許容できる不良ブロックの発生数）は少なくなる。例えば、５１２のブロックで構成されたゾーンを、５００ブロック分の論理ブロックアドレスの空間に割当てた場合と、４９０ブロック分の論理ブロックアドレスの空間に割当てた場合を比較すると、フラッシュメモリの使用効率は、５００ブロック分の論理ブロックアドレスの空間に割当てた場合の方が良くなるが、不良ブロックの発生に対する許容量は、４９０ブロック分の論理ブロックアドレスの空間に割当てた場合の方が多くなる。
【００５０】
本発明に係るフラッシュメモリシステムでは、上記ゾーンを構成するブロックを２つのゾーンで共用している（以下、複数のゾーンで共用しているブロックを、共用ブロックと
いう。）。このゾーン間でのブロックの共用について図面を参照して説明する。図６は、本発明に係るフラッシュメモリシステムにおけるゾーンの構成を示した例である。ここで、各ゾーンは５１２のブロックで構成されており、それらのゾーンが４９６ブロック分の論理ブロックアドレスの空間に割当てられている。又、各ゾーンは、１６のブロックを他のゾーンと共用している。
【００５１】
例えば、ゾーン０は、ブロックＢ００００〜Ｂ０００７（物理ブロックアドレスの００００〜０００７）をゾーンＮと共用し、ブロックＢ０５０４〜Ｂ０５１１（物理ブロックアドレスの０５０４〜０５１１）をゾーン１と共用している。ゾーン１は、ブロックＢ０５０４〜Ｂ０５１１（物理ブロックアドレスの０５０４〜０５１１）をゾーン０と共用し、ブロックＢ１００８〜Ｂ１０１５（物理ブロックアドレスの１００８〜１０１５）をゾーン２と共用している。ゾーン２は、ブロックＢ１００８〜Ｂ１０１５（物理ブロックアドレスの１００８〜１０１５）をゾーン１と共用し、ブロックＢ１５１２〜Ｂ１５１９（物理ブロックアドレスの１５１２〜１５１９）をゾーン３と共用している。ゾーン３は、ブロックＢ１５１２〜Ｂ１５１９（物理ブロックアドレスの１５１２〜１５１９）をゾーン２と共用し、ブロックＢ２０１６〜Ｂ２０２３（物理ブロックアドレスの２０１６〜２０２３）をゾーン４と共用している。これ以降のゾーンについても同様に、各ゾーンが他の２つのゾーンとそれぞれ８のブロックを共用している。
【００５２】
このようにゾーンを構成した場合、共用ブロックを全て占有したゾーンについては、最大１６の不良ブロックの発生を許容することができる。但し、データ書替の際に一旦別のブロックに新データを書込み、その後、旧データが書込まれていたブロックをブロック消去する場合には、新データを書込むための予備ブロックが必要なので許容できるブロック数は最大１５ブロックになる。又、フラッシュメモリの使用効率については、５０４のブロックで構成されているゾーンを４９６ブロック分の論理ブロックアドレスの空間に割当てた場合と同じになる。従って、フラッシメモリの使用効率の低下を抑えつつ、不良ブロックの発生に対する許容量を向上させることができる。
【００５３】
尚、共用ブロックとするブロックの数（又は比率）は、フラッシュメモリの仕様やゾーンを構成するブロックの数に応じて適宜設定することが好ましい。又、各ゾーンのブロック数や各ゾーンに含まれる共有ブロックの数はゾーン毎に異なってもよい。又、不良ブロックの発生数に応じて共用ブロックの数を増減させてもよい。
【００５４】
［アドレス変換テーブルの説明］
次に、アドレス変換テーブルについて、図面を参照して説明する。図７は、図６に示したゾーン０に対するアドレス変換テーブルの一例を示したものであり、各論理ブロックアドレスに対応するデータが格納されているフラッシュメモリ内での物理ブロックアドレスが、論理ブロックアドレス順に記述されている。つまり、各サブゾーンに割当てられている論理ブロックアドレスと物理ブロックアドレスの対応関係が、論理ブロックアドレス順に記述されている。又、フラッシュメモリにデータが格納されていない論理ブロックアドレスについては、アドレス変換テーブルのその論理ブロックアドレスに対応した部分に、物理ブロックアドレスではなく、データが格納されていないことを示すフラグ（以下、対応するデータが格納されていないことを示すフラグを未格納フラグと言う。）を設定する。
【００５５】
例えば、図６に示したゾーン０のアドレス変換テーブルを作成する場合、４９６ブロック分の物理ブロックアドレスを記述できる領域をＳＲＡＭ上に確保し、その物理ブロックアドレスを記述する領域に初期設定として未格納フラグを設定する。その後、ゾーン０を構成するブロックの冗長領域を順次読出していき、冗長領域に論理ブロックアドレス（対応論理ブロックアドレスとして記述されている論理ブロックアドレス）が記述されている場合には、アドレス変換テーブルのその論理ブロックアドレスに対応する部分に、その論
理ブロックアドレスが記述されているブロックの物理ブロックアドレスを記述する。
【００５６】
ここで、ゾーン０は、ブロックＢ００００〜Ｂ０００７（物理ブロックアドレスの００００〜０００７）をゾーンＮと共用し、ブロックＢ０５０４〜Ｂ０５１１（物理ブロックアドレスの０５０４〜０５１１）をゾーン１と共用しているので、ゾーンＮと共用しているブロックには、ゾーンＮに割当てられている論理ブロックアドレスのデータが格納されている場合があり、ゾーン１と共用しているブロックには、ゾーン１に割当てられている論理ブロックアドレスのデータが格納されている場合がある。従って、冗長領域に記述されている論理ブロックアドレスが、ゾーンＮやゾーン１に割当てられている論理ブロックアドレスの場合、ゾーン０のアドレス変換テーブルへの物理ブロックアドレスの記述は行なわれない。つまり、冗長領域に記述されている論理ブロックアドレスが、ゾーン０に割当てられている論理ブロックアドレスのときに、ゾーン０のアドレス変換テーブルの、その論理ブロックアドレスに対応する部分に、その論理ブロックアドレスが記述されているブロックの物理ブロックアドレスを記述する。
【００５７】
尚、このアドレス変換テーブルの作成処理で物理ブロックアドレスが記述されなかった部分については、初期設定で記述された未格納フラグがそのまま残る。
【００５８】
［消去済ブロック検索用テーブルと候補テーブルの説明］
次に、消去済ブロック検索用テーブルと候補テーブルについて、図面を参照して説明する。候補テーブルは、データの書込み先として準備しておく消去済ブロック（以下、データの書込み先として準備しておく消去済ブロックを書込み候補ブロックと言う。）を設定しておくテーブルであり、各ゾーン毎に作成される。又、消去済ブロック検索用テーブルは、候補テーブルに書込み候補ブロックとして設定される消去済ブロックを検索するためのテーブルである。
【００５９】
まず、消去済ブロック検索用テーブルを用いて、消去済ブロックを検索する方法について説明する。例えば、図６に示したゾーンの消去済ブロックを検索する場合、５１２ビットの領域をＳＲＡＭ上に確保し、その領域の各ビットにゾーンを構成する各ブロックを割当てた消去済ブロック検索用テーブルを作成する。但し、図６に示したゾーンのように各ゾーン間でブロックを共用している場合、消去済ブロック検索用テーブル上の共用ブロックに対応したビットも共用させることが好ましい。
【００６０】
図８は、図６に示したゾーン０〜２の消去済ブロック検索用テーブルを概念的に示した概念図である。ここで、ゾーン０の消去済ブロック検索用テーブル上のビットは、ブロックＢ００００〜Ｂ０５１１（物理ブロックアドレスの００００〜０５１１）に対応し、ゾーン１の消去済ブロック検索用テーブル上のビットは、ブロックＢ０５０４〜Ｂ１０１５（物理ブロックアドレスの０５０４〜１０１５）に対応し、ゾーン２の消去済ブロック検索用テーブル上のビットは、ブロックＢ１００８〜Ｂ１５１９（物理ブロックアドレスの１００８〜１５１９）に対応する。従って、消去済ブロック検索用テーブル上のブロックＢ００００〜Ｂ０００７（物理ブロックアドレスの００００〜０００７）に対応するビットは、ゾーン０とゾーンＮの消去済ブロック検索用テーブルが共用し、ブロックＢ０５０４〜Ｂ０５１１（物理ブロックアドレスの０５０４〜０５１１）に対応するビットは、ゾーン０とゾーン１の消去済ブロック検索用テーブルが共用し、ブロックＢ１００８〜Ｂ１０１５（物理ブロックアドレスの１００８〜１０１５）に対応するビットは、ゾーン１とゾーン２の消去済ブロック検索用テーブルが共用し、ブロックＢ１５１２〜Ｂ１５１９（物理ブロックアドレスの１５１２〜１５１９）に対応するビットは、ゾーン２とゾーン３の消去済ブロック検索用テーブルが共用する。
【００６１】
又、消去済ブロック検索用テーブル上のビットと、ゾーンを構成するブロックとの対応関係については、図８に示した消去済ブロック検索用テーブル上のビットを、上の行から
下の行へ、各行を左から右へ物理ブロックアドレス順に対応させている。従って、ゾーン０の消去済ブロック検索用テーブルでは、左上のビットが、Ｂ００００（物理ブロックアドレスの００００）のブロックに対応し、右下のビットが、Ｂ０５１１（物理ブロックアドレスの０５１１）のブロックに対応する。
【００６２】
又、消去済ブロック検索用テーブル上のビットは、「０」と「１」で消去済ブロックであるか否かを示しており、例えば、データが書込まれている場合（又は不良ブロックであることを示すブロックステータスが記述されている場合）は、そのビットに「０」を、データが書込まれていない場合（消去済ブロックの場合）は、そのビットに「１」を設定する。尚、この消去済ブロック検索用テーブルは、アドレス変換テーブルを作成する際に一緒に作成することができる。例えば、消去済ブロック検索用テーブルを作成するＳＲＡＭ上の領域に「０」を設定しておき、各ブロックの冗長領域に対応論理ブロックアドレスも不良ブロックであることを示すブロックステータスも記述されていないときに、そのブロックに対応するビットに「１」を設定するようにすれば、アドレス変換テーブルを作成する際に一緒に作成することができる。つまり、ゾーンを構成するブロックの冗長領域に記述されているデータを読出したときにこの処理を行なえば、消去済ブロックに対応するビットだけに「１」が設定され、消去済ブロックでないブロックに対応するビットは予め設定した「０」のままになる。
【００６３】
又、この消去済ブロック検索用テーブルの更新については、消去済ブロックにデータを書込んだときに、そのブロックに対応するビットを「１」から「０」に変更し、データが書込まれているブロックをブロック消去したときに、そのブロックに対応するビットを「０」から「１」に変更する。
【００６４】
次に、この消去済ブロック検索用テーブルを用いて消去済ブロックを検索する場合について図９を参照して説明する。図９は、ゾーン０の消去済ブロック検索用テーブルを示しており、一番上の行の各ビットは、ゾーンＮと共用しているブロックＢ００００〜Ｂ０００７（物理ブロックアドレスの００００〜０００７）に対応し、一番下の行はゾーン１と共用しているブロックＢ０５０４〜Ｂ０５１１（物理ブロックアドレスの０５０４〜０５１１）に対応する。又、一番上の行と一番下の行を除いた部分の各ビットは、ゾーン０だけが使用するブロックＢ０００８〜Ｂ０５０３（物理ブロックアドレスの０００８〜０５０３）に対応する。
【００６５】
例えば、ゾーン０だけが使用するブロックＢ０００８〜Ｂ０５０３（物理ブロックアドレスの０００８〜０５０３）を優先的に使用したい場合は、一番上の行と一番下の行を除いた部分を用いて消去済ブロックの検索を行なう。つまり、ブロックＢ０００８（物理ブロックアドレスの０００８）に対応するビット（上から２番目の行の、一番左のビット）から、ブロックＢ０５０３（物理ブロックアドレスの０５０３）に対応するビット（下から２番目の行の、一番右のビット）までを走査していき、消去済ブロックに対応する「１」のビットを検索する。尚、前記走査は、上の行から下の行へ、各行を左から右へ向かって行なわれる。
【００６６】
図９に示した消去済ブロック検索用テーブルで、上から２番目の行の、一番左のビットから走査を開始した場合、上から２番目の行の、左から３番目のビットが「１」なので、ここで検索を終了し、このビットに対応するブロックＢ００１０（物理ブロックアドレスの００１０）を、書込み候補ブロックとして候補テーブルに設定する。又、次回の検索は、上から２番目の行の、左から４番目のビットから走査を開始し、上から４番目の行の、左から５番目のビットが「１」なので、ここで検索を終了し、このビットに対応するブロックＢ００２８（物理ブロックアドレスの００２８）を、書込み候補ブロックとして候補テーブルに設定する。その後も、このような検索を続けていき、下から２番目の行の、一
番右のビットまで走査が進んだときは、上から２番目の行の、一番左のビットに戻る。又、一番上の行と一番下の行を除いた部分のビットが全て「０」になった場合、つまりゾーン０だけが使用するブロックＢ０００８〜Ｂ０５０３（物理ブロックアドレスの０００８〜０５０３）に消去済ブロックがない場合、ゾーンＮ又はゾーン１と共用しているブロックに対応したビットである一番上の行又は一番下の行を走査する。
【００６７】
尚、上記の説明では、他のゾーンと共用していないブロックを優先的に使用するようにしたが、共用ブロックであるか否かに関係なく、全てのゾーンを同じように使用するようにしても良い。又、不良ブロックの発生数の多いゾーンについては、共用ブロックを優先的に使用するようにすることが好ましい。
【００６８】
次に、上記検索で検出した消去済ブロックを、書込み候補ブロックとして設定する候補テーブルについて説明する。図１０は候補テーブルのデータ項目を示す図である。この候補テーブルには、データ項目としてブロック番号、チェック要求フラグ、エラー検出フラグ及びチェックスタートページが設定されている。
【００６９】
ここで、ブロック番号の設定部には、上記検索により検出した消去済ブロックの物理ブロックアドレスを設定する。又、候補テーブルに設定されている書込み候補ブロックにデータを書込んだ場合は、このブロック番号の設定部に「未設定フラグ（例えば、ブロック番号の設定部にブロックアドレスが有効か又は無効かを示すビットを設け、このビットが無効を示している場合を未設定フラグとする。そして、ブロック番号の設定部にブロックアドレスを設定したときは、このビットが有効を示すようにする。）」を設定する。チェック要求フラグの設定部には、チェック要求の有無、つまり、チェックの完了前は「有りフラグ」を、チェックの完了後は「無しフラグ」を設定する。エラー検出フラグの設定部には、後述する消去状態のチェックでエラーを検出しなかったときは「ＯＫフラグ」を、エラーを検出したときに「ＮＧフラグ」を設定する。チェックスタートページの設定部には、後述する消去状態のチェックを中断した場合に、中断解除後に処理を続行するページを設定する。尚、候補テーブルに設定されている書込み候補ブロックにデータを書込んだ場合は、ブロック番号、チェック要求フラグ及びエラー検出フラグの設定部に「未設定フラグ」を設定し、チェックスタートページの設定部に「０」を設定する。
【００７０】
この候補テーブルに設定された書込み候補ブロックにいては、データを書込む前に、消去状態のチェックが行なわれる。この消去状態のチェックでは、候補テーブルのブロック番号の設定部に設定されているブロックの各ページのデータが全て消去状態（論理値の「１」）であるかがチェックされ、全てのビットが消去状態（論理値の「１」）であればエラー検出フラグの設定部に「ＯＫフラグ」が、１ビットでも書込状態（論理値の「０」）のビットがあればエラー検出フラグの設定部に「ＮＧフラグ」がセットされる。
【００７１】
例えば、初期設定時に図１０（ａ）に示したように、ブロック番号、チェック要求フラグ及びエラー検出フラグの設定部に「未設定フラグ」を、チェックスタートページの設定部に「０」を設定する。次に、消去済ブロックを検索し、そのブロックアドレスがＢ００１０であれば、ブロック番号の設定部にＢ００１０を設定し、チェック要求フラグの設定部に「有りフラグ」を設定する（図１０（ｂ））。
【００７２】
その後、消去状態のチェックを実行し、１４ページまでチェックを終了した時点で処理を中断したときは、チェックスタートページに「１５」を設定する（図１０（ｃ））。その後、消去状態のチェックを再開し、その処理が完了したときに、３２ページ全てが正常に消去されていた場合は、図１０（ｄ）に示したように、チェック要求フラグの設定部に「無しフラグ」を、エラー検出フラグの設定部に「ＯＫフラグ」を設定する。一方、正常に消去されていないページが検出された場合には、図１０（ｅ）に示したように、チェッ
ク要求フラグの設定部に「無しフラグ」を、エラー検出フラグの設定部に「ＮＧフラグ」を設定する。
【００７３】
［読出し処理及び書込み処理の説明］
ホストシステム側からの要求により、フラッシュメモリに格納されているデータを読出す場合は、ホストシステム側から与えられる論理ブロックアドレスが、図７に示したアドレス変換テーブルに基づき物理ブロックアドレス（論理ブロックアドレスに対応するデータが格納されているブロックの物理ブロックアドレス）に変換される。続いて、フラッシュメモリシーケンサブロックが有するレジスタに、以下のような読出し処理の設定がなされる。
１）内部コマンドとして内部読出しコマンドが、フラッシュメモリシーケンサブロック内の所定のレジスタに設定される。
２）ホストシステム側から与えられる論理ブロックアドレスに対応するデータが格納されているブロック内のページのアドレスが、フラッシュメモリシーケンサブロック内の所定のレジスタに設定される。ここで、上記ページのアドレスは、物理ブロックアドレスにページ番号に相当する５ビット（３２のページを識別するためのビット）を付加することによって与えられる。
【００７４】
その後、上記読出し処理の設定に基づいて、フラッシュメモリシーケンサブロックが処理を実行する。この処理が実行されると、フラッシュメモリインターフェースブロックから、内部バスを介してフラッシュメモリに内部読出しコマンドを実行するためのコマンド情報やアドレス情報等が供給される。そして、これらの情報に基づいてホストシステム側から与えられる論理ブロックアドレスに対応するデータが格納されているブロック内のページに格納されているデータが、内部バスを介してバッファに読出される。
【００７５】
又、ホストシステム側からの要求により、フラッシュメモリにデータを書込む場合は、図１０に示した候補テーブルに設定されている書込み候補ブロックに対してデータの書込み処理が行なわれる。この書込み処理では、フラッシュメモリシーケンサブロックが有するレジスタに、以下のような書込み処理の設定がなされる。
１）内部コマンドとして内部書込みコマンドが、フラッシュメモリシーケンサブロック内の所定のレジスタに設定される。
２）候補テーブルに設定されている書込み候補ブロック内のページのアドレスが、フラッシュメモリシーケンサブロック内の所定のレジスタに設定される。
【００７６】
その後、上記書込み処理の設定に基づいて、フラッシュメモリシーケンサブロックが処理を実行する。この処理が実行されると、フラッシュメモリインターフェースブロックから、内部バスを介してフラッシュメモリに内部書込みコマンドを実行するためのコマンド情報やアドレス情報等が供給される。又、バッファに保持されている書込みデータも、内部バスを介してフラッシュメモリに供給され、候補テーブルに設定されている書込み候補ブロック内のページに書込まれる。
【００７７】
又、上記書込み処理で、ホストシステム側から供給された論理ブロックアドレスに対応する旧データが存在する場合は、上記新データの書込み処理の後に旧データの消去処理が行なわれる。尚、消去する旧データが格納されているブロックの物理ブロックアドレスは、図７に示したアドレス変換テーブルに基づいて得ることができる。この消去処理では、フラッシュメモリシーケンサブロックが有するレジスタに以下のような消去処理の設定がなされる。
１）内部コマンドとして内部消去コマンドが、フラッシュメモリシーケンサブロック内の所定のレジスタに設定される。
２）旧データが格納されているブロックの物理ブロックアドレスが、フラッシュメモリシーケンサブロック内の所定のレジスタに設定される。
【００７８】
その後、上記消去処理の設定に基づいて、フラッシュメモリシーケンサブロックが処理を実行する。この処理が実行されると、フラッシュメモリインターフェースブロックから、内部バスを介してフラッシュメモリに内部消去コマンドを実行するためのコマンド情報やアドレス情報等が供給され、旧データが格納されていたブロックのデータが消去される。
【図面の簡単な説明】
【００７９】
【図１】図１は、本発明に係るフラッシュメモリシステムを概略的に示すブロック図である。
【図２】図２は、フラッシュメモリを構成するメモリセルの構造を概略的に示す断面図である。
【図３】図３は、書込状態であるメモリセルを概略的に示す断面図である。
【図４】図４は、フラッシュメモリのアドレス空間の構造を概略的に示す図である。
【図５】図５は、５１２のブロックでゾーンを構成した例を示す図である。
【図６】図６は、共有ブロックを含むゾーンの構成例を示す図である。
【図７】図７は、アドレス変換テーブルの例を示した図である。
【図８】図８は、消去済ブロック検索用テーブルの例を示す概念図である。
【図９】図９は、消去済ブロック検索用テーブルを用いた消去済ブロックの検索方法を説明するための図である。
【図１０】図１０は、候補テーブルを説明するための図である。
【符号の説明】
【００８０】
１  フラッシュメモリシステム
２  フラッシュメモリ
３  コントローラ
４  ホストシステム
５  ホストインターフェース制御ブロック
６  マイクロプロセッサ
７  ホストインターフェースブロック
８  ワークエリア
９  バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  フラッシュメモリシーケンサブロック
１３  外部バス
１４  内部バス
１６  メモリセル
１７  Ｐ型半導体基板
１８  ソース拡散領域
１９  ドレイン拡散領域
２０  トンネル酸化膜
２１  フローティングゲート電極
２２  絶縁膜
２３  コントロールゲート電極
２４  チャネル
２５  ユーザ領域
２６  冗長領域
【図１】
2005141419.tif 000003
【図２】
2005141419.tif 000004
【図３】
2005141419.tif 000005
【図４】
2005141419.tif 000006
【図５】
2005141419.tif 000007
【図６】
2005141419.tif 000008
【図７】
2005141419.tif 000009
【図８】
2005141419.tif 000010
【図９】
2005141419.tif 000011
【図１０】
2005141419.tif 000012