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