(57)【要約】【課題】本発明は、フラッシュメモリの特定の物理ゾーンに不良ブロックが集中した場合に、その物理ゾーンが必要とする有効ブロックの数を確保できなくなることを回避できるようにする。【解決手段】フラッシュメモリ内の全ブロックをサーチして、各物理ゾーンに有効ブロックが均等に配分されるように、各物理ゾーンに割当られる物理ブロックの範囲を決定する。【選択図】図６
2007156846.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムからの命令に応答して前記フラッシュメモリへのアクセスを制御するメモリコントローラであって、
前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた複数の物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンとの対応関係を管理するゾーン管理手段と、
前記各物理ゾーン内の有効ブロック数に基づいて、前記各物理ゾーンに属する前記物理ブロックの範囲を設定する物理ゾーン設定手段と、
前記物理ゾーン設定手段によって設定された前記各物理ゾーンに属する前記物理ブロックの範囲に基づいて前記各物理ブロックが属する前記物理ゾーンを決定する物理ゾーン管理手段と、
を備えることを特徴とするメモリコントローラ。
【請求項２】
前記物理ゾーン設定手段は、前記物理ゾーン内の有効ブロック数が最大の物理ゾーンと最小の物理ゾーンの有効ブロック数の差が小さくなるように、前記各物理ゾーンに属する前記物理ブロックの範囲を設定することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記物理ゾーン設定手段は、前記物理ゾーン内の有効ブロック数が最大の物理ゾーンと最小の物理ゾーンの有効ブロック数の差が１以下になるように、前記各物理ゾーンに属する前記物理ブロックの範囲を設定することを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記物理ゾーン設定手段は、前記各物理ゾーンに属する前記物理ブロックの範囲に関する情報を含むゾーン境界情報を、前記フラッシュメモリに格納することを特徴とする請求項１乃至３のいずれか１項に記載のメモリコントローラ。
【請求項５】
前記物理ゾーン管理手段は、前記ゾーン境界情報に基づいて、前記各物理ブロックが属する前記物理ゾーンを決定することを特徴とする請求項４に記載のメモリコントローラ。
【請求項６】
前記物理ゾーン設定手段は、前記各物理ゾーンに属する前記物理ブロックの範囲を再設定することにより、属する物理ゾーンが変化した物理ブロックの記憶データを、前記再設定の前に属していた物理ゾーン内の物理ブロックに移動する手段を含む、ことを特徴とする請求項１乃至５のいずれか１項に記載のメモリコントローラ。
【請求項７】
前記物理ゾーン設定手段は、前記各物理ゾーン内の有効ブロック数の総和が所定数以下となる場合に、前記物理ゾーンの数を減少させて、前記各物理ゾーンに属する物理ブロックの範囲を再設定する手段を含むことを特徴とする請求項１乃至６のいずれか１項に記載のメモリコントローラ。
【請求項８】
請求項１乃至７のいずれか１項に記載のメモリコントローラと、フラッシュメモリと、から構成される、
ことを特徴とするフラッシュメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムに関する。
【背景技術】
【０００２】
近年、不揮発性の記憶媒体であるフラッシュメモリの開発が盛んに行われ、デジタルカメラ等の情報機器（ホストシステム）の記憶媒体として普及している。
【０００３】
このような機器が扱うデータが大容量化したことに伴い、フラッシュメモリの記憶容量も大容量化が進んでいる。このように大容量化したフラッシュメモリの記憶領域を円滑に管理するため、近年は、この記憶領域を複数のゾーンに分割して管理する手法が用いられている（例えば特許文献１を参照）。
【０００４】
従来の物理ゾーンの構成では、図９に示すように、そのフラッシュメモリが有する全物理ブロックが先頭から均等にｎ個（図９では、４個）に分割され、同一サイズのｎ個の物理ゾーンが構成されている。
【０００５】
【特許文献１】特開２００５−１８４９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
各物理ゾーンに含まれている物理ブロック数が均一であると、初期不良の物理ブロックが特定の領域に集中していた場合、その領域に割り当てられた物理ゾーンが必要とする有効ブロックの必要数を確保することができないという問題が生じる。又、必要とする有効ブロック数を確保できた場合であっても、有効ブロックの実数と必要数の差が小さい物理ゾーンでは、許容できる後天性の不良ブロック（使用開始後に劣化して使用できなくなった物理ブロック）の数が少ないので、使用中に有効ブロックの実数が必要数より少なくなってしまう確率が高くなる。更に、特定の物理ゾーンへのアクセスが集中した場合に、その物理ゾーンに含まれる物理ブロックの劣化（不良ブロック化）だけが早まり、物理ゾーンが必要とする有効ブロックの数が足りなくなってしまう場合もある。
【０００７】
本発明は上記の実情に鑑みてなされたもので、特定の領域に不良ブロックが集中した場合でも、その領域に割当てられた物理ゾーンが必要とする有効ブロック数を確保できなくなることを避けることができるメモリコントローラ、及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明のメモリコントローラは、
ホストシステムからの命令に応答して前記フラッシュメモリへのアクセスを制御するメモリコントローラであって、
前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた複数の物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンとの対応関係を管理するゾーン管理手段と、
前記各物理ゾーン内の有効ブロック数に基づいて、前記各物理ゾーンに属する前記物理ブロックの範囲を設定する物理ゾーン管理手段と、
前記物理ゾーン設定手段によって設定された前記各物理ゾーンに属する前記物理ブロックの範囲に基づいて前記各物理ブロックが属する前記物理ゾーンを決定する物理ゾーン管理手段と、を備えることを特徴とする。
【０００９】
前記物理ゾーン設定手段は、例えば、前記物理ゾーン内の有効ブロック数が最大の物理ゾーンと最小の物理ゾーンの有効ブロック数の差が小さくなるように、前記各物理ゾーンに属する前記物理ブロックの範囲を設定する。
【００１０】
前記物理ゾーン設定手段は、例えば、前記物理ゾーン内の有効ブロック数が最大の物理ゾーンと最小の物理ゾーンの有効ブロック数の差が１以下になるように、前記各物理ゾーンに属する前記物理ブロックの範囲を設定する。
【００１１】
前記物理ゾーン設定手段は、例えば、前記各物理ゾーンに属する前記物理ブロックの範囲に関する情報を含むゾーン境界情報を、前記フラッシュメモリに格納する。
【００１２】
前記物理ゾーン管理手段は、例えば、前記ゾーン境界情報に基づいて、前記各物理ブロックが属する前記物理ゾーンを決定する。
【００１３】
前記物理ゾーン設定手段は、例えば、前記各物理ゾーンに属する前記物理ブロックの範囲を再設定することにより、属する物理ゾーンが変化した物理ブロックの記憶データを、前記再設定の前に属していた物理ゾーン内の物理ブロックに移動する手段を含む。
【００１４】
前記物理ゾーン設定手段は、例えば、前記各物理ゾーン内の有効ブロック数の総和が所定数以下となる場合に、前記物理ゾーンの数を減少させて、前記各物理ゾーンに属する物理ブロックの範囲を再設定する手段を含む。
【００１５】
この発明のフラッシュメモリシステムは、上述のメモリコントローラと、フラッシュメモリと、から構成される。
【発明の効果】
【００１６】
この発明のメモリコントローラは、物理ゾーン設定手段を備えているので、各物理ゾーンの有効ブロックの実数と必要数の差を均等に配分し、各物理ゾーンで許容できる後天性の不良ブロックの数を均等化することができる。更に、何らかの原因により、特定の物理ゾーンに含まれる有効ブロックの数が不足した場合などに、物理ゾーンと物理ブロックとの関係を適正に再設定して、各物理ゾーンを有効な状態に維持することが可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
【００１８】
図１は、本発明に係るフラッシュメモリシステム１を概略的に示すブロック図である。図１に示すように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するコントローラ３で構成されている。
【００１９】
なお、フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００２０】
フラッシュメモリ２は、不揮発性メモリであり、レジスタと、メモリセルアレイと、から構成される。フラッシュメモリ２は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
【００２１】
メモリセルアレイは、複数のメモリセル群と、ワード線と、を備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
【００２２】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成される。ここで、上側のゲート、下側のゲートは、それぞれ、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。
【００２３】
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。
【００２４】
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「０」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「１」に対応する。
【００２５】
フラッシュメモリ２のアドレス空間を図２に示す。フラッシュメモリ２のアドレス空間は、“ページ”及び“ブロック（物理ブロック）”で構成されている。
【００２６】
ページは、フラッシュメモリ２にて行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。物理ブロックは、フラッシュメモリ２にて行われるデータ消去動作における処理単位であり、１個又は複数個のページで構成されている。
ホストシステム側のアドレス空間は、セクタ（１セクタは５１２バイト）単位のアドレスであるＬＢＡ（Logical Block Address）で管理されており、セクタを複数個まとめたものを論理ブロックとし、論理ブロックを複数まとめたものを論理ゾーンとしている。又、論理ブロックに付けた通番を論理ブロック番号ＬＢＮとし、論理ゾーン内での論理ブロックの通番を論理ゾーン内ブロック番号ＬＺＩＢＮとしている。
【００２７】
図２に示したフラッシュメモリでは、１つのページは、１セクタ（５１２バイト）のユーザ領域２５と、１６バイトの冗長領域２６で構成され、１つの物理ブロックは３２個のページで構成されている。なお、１つのページが４セクタのユーザ領域と６４バイトの冗長領域で構成され、１つの物理ブロックが６４個のページで構成されているフラッシュメモリもある。ユーザ領域２５は、ホストシステム４から供給されるユーザデータを格納する。
【００２８】
冗長領域２６は、エラーコレクティングコード、論理ブロック情報、ブロックステータス（フラグ）等の付加データを記録するための領域である。
【００２９】
エラーコレクティングコードは、ユーザ領域２５に記憶されているデータに含まれる誤りを検出し、訂正するためのデータである。
【００３０】
論理ブロック情報は、フラッシュメモリ２の各物理ブロックに含まれている少なくとも１つのユーザ領域２５に有効なデータが格納されているとき、そのデータに対応する論理ブロックを特定するための情報（論理ゾーン内ブロック番号ＬＺＩＢＮ又は論理ブロック番号ＬＢＮ）である。なお、ユーザ領域２５に有効なデータが格納されていない物理ブロックについては、そのブロックの冗長領域２６に、論理ブロック情報は格納されていない。
【００３１】
従って、冗長領域２６に論理ブロック情報が格納されているか否かを判定することにより、その冗長領域２６が含まれている物理ブロックに有効なデータが格納されているか否かを判定することができる。つまり、冗長領域２６に論理アドレス情報が格納されていないとき、その物理ブロックには、有効なデータが格納されていないと判断される。
【００３２】
上述のように、１つの物理ブロックは、複数のページを含んでいる。これらのページには、データの上書きができない。このため、１つのページに格納されたデータのみを書き換えるときであっても、そのページが含まれた物理ブロック内の全ページに格納されたデータを、再度書き込まなければならない。
【００３３】
つまり、通常のデータ書き換えでは、書き換えるページが含まれる物理ブロックの全ページに格納されたデータが、別の消去されている物理ブロックに書き込まれる。この際、データが変更されないページに格納されているデータは、以前に格納されていたデータがそのまま再度書き込まれる。
【００３４】
上記のようにデータを書き換えるにあたっては、書き換えられたデータは、以前に格納されていた物理ブロックとは異なる物理ブロックに書き込まれる。このため、論理ブロックと物理ブロックの間の対応関係は、フラッシュメモリ２にてデータが書き換えられる毎に、動的に変化する。
【００３５】
従って、論理ブロックと物理ブロックとの対応関係を管理する必要があり、通常、この対応関係は、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各物理ブロックの先頭ページの冗長領域２６に記憶されている論理ブロック情報（ＬＺＩＢＮ又はＬＢＮ）に基づいて作成される。なお、このような動的なアドレス管理手法は、フラッシュメモリを用いたメモリシステムでは一般的に行われている手法である。
【００３６】
ブロックステータス（フラグ）は、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域２６には、不良ブロックであることを示すブロックステータス（フラグ）が書き込まれる。従って、不良ブロックであることを示すブロックステータス（フラグ）が書き込まれていない物理ブロックが有効ブロックとして取扱われる。
【００３７】
フラッシュメモリ２は、コントローラ３から、データ、アドレス情報、内部コマンド等を受信して、データの読み出し処理、書き込み処理、ブロック消去処理、転送処理等の各処理を行う。
【００３８】
ここで、内部コマンドとは、コントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、コントローラ３から与えられる内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。
【００３９】
コントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（エラー・コレクティング・コード）ブロック１１と、ＲＯＭ（Read Only Memory）１２と、から構成される。これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００４０】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、コントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、各種処理等を定義したコマンドセットをＲＯＭ１２から読み出してフラッシュメモリインターフェースブロック１０に供給し、フラッシュメモリインターフェースブロック１０に処理を実行させる。
【００４１】
ホストインターフェースブロック７は、ホストシステム４との間の、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００４２】
図１に示すワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００４３】
バッファ９は、フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ２から読み出されたデータは、ホストシステム４が受け取り可能な状態となるまでバッファ９に保持され、フラッシュメモリ２に書き込むべきデータは、フラッシュメモリ２が書き込み可能な状態となるまでバッファ９に保持される。
【００４４】
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２にアクセスする。
【００４５】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加されるエラーコレクティングコードを生成するとともに、読み出しデータに付加されたエラーコレクティングコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００４６】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ＲＯＭ１２は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
【００４７】
フラッシュメモリ２のいずれかの領域には、フラッシュメモリにアクセスする際に必要となる管理情報が格納されている。尚、管理情報は、フラッシュメモリに格納せずに、メモリコントローラ内に設けた不揮発性メモリ部、又は、外部の不揮発性メモリに格納してもよい。
【００４８】
この管理情報は、図３（ａ）に示すように、フラッシュメモリ２の物理ゾーンを規定するゾーン境界情報を含み、このゾーン境界情報に基づいて４個の物理ゾーンに振り分けられる。ここで、物理ブロックに付けた通番を物理ブロックアドレスＰＢＡとし、物理ゾーンに付けた通番を物理ゾーン番号ＰＺＮとしている。このゾーン境界情報に基づいて、フラッシュメモリ２の２０４８個の物理ブロックをＰＺＮ＃０〜＃３の物理ゾーンに割り当てた場合、ＰＢＡ＃０〜ＰＢＡ＃５１１の物理ブロックがＰＺＮ＃０の物理ゾーンに区分され、ＰＢＡ＃５１２〜ＰＢＡ＃１０２３の物理ブロックがＰＺＮ＃１の物理ゾーンに区分され、ＰＢＡ＃１０２４〜ＰＢＡ＃１５３５の物理ブロックがＰＺＮ＃２の物理ゾーンに区分され、ＰＢＡ＃１５３６〜ＰＢＡ＃２０４７の物理ブロックがＰＺＮ＃３の物理ゾーンに区分されている。つまり、図３（ａ）の例では、各物理ゾーン（ＰＺＮ＃０〜ＰＺＮ＃３）は同一のサイズに設定されている。
尚、図３（ａ）の例では、各物理ゾーンの境界を示すゾーン境界情報が、各物理ゾーンの最終ブロックの物理アドレス（ＰＢＡ）で示されているが、他の情報、例えば各物理ゾーンの先頭ブロックの物理アドレス（ＰＢＡ）や各ゾーンに含まれる物理ブロックの数で示してもよい。
【００４９】
また、この管理情報は、ゾーン対応情報を含んでもよい。このゾーン対応情報は、論理ゾーンと物理ゾーンとを対応付ける情報である。図３（ａ）の例では、ＬＺＮ＃０の論理ゾーンは、ＰＺＮ＃０の物理ゾーンに対応付けられ、ＬＺＮ＃１の論理ゾーンは、ＰＺＮ＃１の物理ゾーンに対応付けられ、ＬＺＮ＃２の論理ゾーンは、ＰＺＮ＃２の物理ゾーンに対応付けられ、ＬＺＮ＃３の論理ゾーンは、ＰＺＮ＃３の物理ゾーンに対応付けられている。
尚、論理ゾーンと物理ゾーンの対応関係が固定の場合（例えば、ＬＺＮとＰＺＮが同じ値の論理ゾーンと物理ゾーンを対応付ける場合）、ゾーン対応情報は無くてもよい。
【００５０】
図４は、図３（ａ）に示された管理情報に基づいて構成した物理ゾーンである。ＰＢＡ＃０〜＃２０４７の２０４８個の物理ブロックが、ＰＺＮ＃０〜ＰＺＮ＃３の物理ゾーンに５１２個ずつ割り当てられる。従って、各物理ゾーンに割り当られた物理ブロックの各物理ゾーン内での通番である物理ゾーン内ブロック番号（ＬＺＩＢＮ）は、＃０〜＃５１１になっている。又、ホストシステムのアドレス空間も、物理ゾーンの数と等しい４個の論理ゾーンで構成され、各論理ゾーンには５００個の論理ブロックが割り当てられている。
【００５１】
つまり、ＬＺＮ＃０の論理ゾーンにＬＢＮ＃０〜＃４９９（ＬＺＮ＃０の論理ゾーンの論理ゾーン内ブロック番号ＬＺＩＢＮ＃０〜＃４９９）の論理ブロックが割り当てられ、ＬＺＮ＃１の論理ゾーンにＬＢＮ＃５００〜＃９９９（ＬＺＮ＃１の論理ゾーンの論理ゾーン内ブロック番号ＬＺＩＢＮ＃０〜＃４９９）の論理ブロックが割り当てられ、ＬＺＮ＃２の論理ゾーンにＬＢＮ＃１０００〜＃１４９９（ＬＺＮ＃２の論理ゾーンの論理ゾーン内ブロック番号ＬＺＩＢＮ＃０〜＃４９９）の論理ブロックが割り当てられ、ＬＺＮ＃３の論理ゾーンにＬＢＮ＃１５００〜＃１９９９（ＬＺＮ＃３の論理ゾーンの論理ゾーン内ブロック番号ＬＺＩＢＮ＃０〜＃４９９）の論理ブロックが割り当てられる。尚、各論理ゾーンに割り当てる論理ブロックの数は適宜設定する。
【００５２】
ここで、論理ゾーンを構成する論理ブロックの数５００と物理ゾーンを構成する物理ブロックの数５１２との差の１２、即ち、１２物理ブロックが、不良ブロックや書替時の転送先等を考慮した「余裕」又は「予備」である。不良ブロックには、初期不良によるものと、フラッシュメモリ２を使用している間に、不良ブロック化するものがある。従って、使用開始前に初期不良の不良ブロックの数を調べ、各物理ゾーンに含まれる有効ブロック（良品の物理ブロック）の数が等しくなるようにゾーン境界情報を設定することが好ましい。
【００５３】
また、論理ブロックと物理ブロックとの対応関係を示したアドレス変換テーブルは、論理ゾーン毎に作成される。相互に対応する論理ゾーンと物理ゾーンのアドレス変換テーブルは、論理ゾーン内での論理ブロックの通番である論理ゾーン内ブロック番号ＬＺＩＢＮと物理ゾーン内ブロック番号ＰＺＩＢＮとの対応関係で示すことができる。図３（ｂ）は、ＬＺＩＢＮとＰＺＩＢＮの対応関係で示されたアドレス変換テーブルの例であり、ＬＺＩＢＮ＃０の論理ブロックがＰＺＩＢＮ＃１０の物理ブロックに対応し、ＬＺＩＢＮ＃１の論理ブロックがＰＺＩＢＮ＃３３の物理ブロックに対応している。このアドレス変換テーブルは、物理ブロックの冗長領域に書き込まれているＬＺＩＢＮ又はＬＢＮに基づいて起動時又はアクセス時に作成される。
【００５４】
次に、フラッシュメモリシステム１の動作を説明する。
ホストシステム４がフラッシュメモリ２にデータを書き込む場合、ホストシステム４は、ホストインターフェースブロック７に、書き込むデータのセクタ数、書き込むデータのＬＢＡの先頭値を設定し、さらに、書き込み処理を指示する外部コマンドを設定する。
【００５５】
コントローラ３は、外部コマンドに従って、書き込み動作を開始し、ＬＢＡに基づいて、論理ブロックを判別し、さらに、その論理ブロックが属する論理ゾーンのＬＺＮと論理ゾーン内ブロック番号ＬＺＩＢＮを判別する。ここで、１個の論理ブロックが３２個のセクタで構成されていた場合、複数ビット表示したＬＢＡの下位５ビットを除いた上位ビットがＬＢＮであり、ＬＢＮを各論理ゾーンに含まれる論理ブロックの数で割ったときの商がＬＺＮとなり、余りがＬＺＩＢＮになる。
【００５６】
続いて、論理ゾーンに対応する物理ゾーンのゾーン境界情報を取得し、その物理ゾーンに割り当てられている物理ブロックの範囲を判別する。更に、その物理ゾーンのアドレス変換テーブルと空きブロックテーブルを、その物理ゾーンに割り当てられた物理ブロックの冗長領域に書き込まれている論理ブロック情報とブロックステータスに基づいて作成する。アドレス変換テーブルと空きブロックテーブルを作成するときは、作成対象の物理ゾーンに割り当てられた物理ブロックをゾーン境界情報に基づいて判断したうえで、作成対象の物理ゾーンに割り当てられた物理ブロックの冗長領域に書き込まれている論理ブロック情報とブロックステータスを参照して作成する。
【００５７】
書き込み先のＬＺＩＢＮに対応する物理ブロックのＰＺＩＢＮを、アドレス変換テーブルを参照して求め、データの書き込み先が求めたＰＺＩＢＮの物理ブロックの空きページに対応している場合は、そのページにデータを書き込む。空きページに対応していなかった場合は、データの書き込み先の空きブロックを、空きブロックテーブルを参照して選択し、選択した空きブロックのＰＺＩＢＮにより指示される物理ブロックにデータを書き込む。書き込み後に、アドレス変換テーブルの論理ブロックと物理ブロックとの対応関係を更新する。
【００５８】
尚、物理ゾーン内のアクセス対象の物理ブロックのＰＺＩＢＮからその物理ブロックのＰＢＡを求めるときは、その物理ゾーンの先頭物理ブロックのＰＢＡをアクセス対象の物理ブロックのＰＺＩＢＮに加算する。各物理ゾーンの先頭物理ブロックのＰＢＡはゾーン境界情報を参照することによって求められる。例えば、図３（ａ）に示されたゾーン境界情報に基づいて物理ゾーンが構成されている場合に、ＰＺＮ＃２の物理ブロックのＰＢＡは、その物理ブロックのＰＺＩＢＮに「１５３５」を加算することによって求められる。
【００５９】
次に、使用開始後にフラッシュメモリ２の物理ブロックの一部が不良ブロック化し、特定の各物理ゾーン内の有効ブロックの数が論理ゾーン内の論理ブロックの数５００と等しいか又は少なくなってしまった場合について説明する。
【００６０】
このような場合に本実施形態のコントローラ３は、物理ゾーンの構成を最適な状態に調整するため、物理ゾーンの再設定処理を行う。
【００６１】
この物理ゾーンの再設定処理を図６と図７を参照して説明する。
【００６２】
マイクロプロセッサ６は、フラッシュメモリ２の各物理ブロックの冗長領域２６に格納されているステータスフラグをチェックすることにより、全物理ブロックについて不良ブロックか否かの判別を行う（ステップＳ１１）。
【００６３】
次に、管理情報に基づく現在の物理ゾーンの境界で、全て（４つ）の物理ゾーンに含まれる有効ブロックの数が５００＋α（αは例えば、５）以上であるか否かを判別する（ステップＳ１２）。全ての物理ゾーンに含まれる有効ブロックの数が５００＋α以上であると判別した場合、論理ゾーンの境界変更が不要であると判断し（ステップＳ１２；Ｎｏ）、物理ゾーンの調整は行わずに、再設定処理を終了する。
【００６４】
一方、少なくとも１つの物理ゾーンが有効ブロックを５００＋α未満しか有していないと判別した場合、物理ゾーンの構成の変更が必要であると判断し（ステップＳ１２；Ｙｅｓ）、処理はステップＳ１３に進む。
【００６５】
ステップＳ１３において、マイクロプロセッサ６は、全て（４つ）の物理ゾーンが有効ブロックを、５００＋α個以上有するように、図３（ａ）に示す管理情報のゾーン境界情報を書き換える。
【００６６】
具体的には、図７に示すように、まず、マイクロプロセッサ６は、ステップＳ１１での判別に基づいて、有効ブロックの総数を求める（ステップ２１）。次に、有効ブロック総数をゾーン数（４）で割り、その商を１物理ゾーンの物理ブロックの数とする（ステップＳ２２）。
【００６７】
次に、各物理ゾーンがステップＳ２２で求めた数の有効ブロックを有するように、ＰＺＮ＃０の物理ゾーンから順に連続する物理ブロックを割り当てる（ステップＳ２３）。例えば、有効ブロックの総数が２０２０であった場合には、２０２０／４＝５０５と判別し、ＰＢＡ＃０から始まるＰＺＮ＃０の物理ゾーンに５０５個の有効ブロックが含まれるように、この物理ゾーン（ＰＺＮ＃０）の最終ブロックＰＢＡ＃ｉを決定し、ＰＢＡ＃ｉ＋１から始まるＰＺＮ＃１の物理ゾーンに５０５個の有効ブロックが含まれるように、この物理ゾーン（ＰＺＮ＃１）の最終ブロックのＰＢＡ＃ｊを決定し、ＰＢＡ＃ｊ＋１から始まるＰＺＮ＃２の物理ゾーンに５０５個の有効ブロックが含まれるように、この物理ゾーンの最終ブロックのＰＢＡ＃ｋを決定する。このようにして、ゾーン境界情報を決定することにより、ＰＺＮ＃０〜＃３の各物理ゾーンに５０５個の有効ブロックが均等に割当られる。
【００６８】
なお、ステップＳ２２で、余りが発生した場合、即ち、有効ブロックの総数が物理ゾーン数の整数倍でない場合には、余りの物理ブロックは、例えば、物理ゾーン間の有効ブロックの個数の差が１以下となるように、任意の物理ゾーンに適宜分配する。
最後に、このようにして決定したゾーン境界情報を新たな管理情報として設定する（ステップＳ２４）。
【００６９】
この結果、図５（ａ）に示すようにゾーン境界情報が変更された場合、ＰＺＮ＃０の物理ゾーンに含まれる物理ブロックは５１８個となり、ＰＺＮ＃１の物理ゾーンに含まれる物理ブロックは５０６個となり、ＰＺＮ＃２の物理ゾーンに含まれる物理ブロックは５１４個となり、ＰＺＮ＃３の物理ゾーンに含まれる物理ブロックは５１０個となる。ただし、ＰＺＮ＃０の物理ゾーンに割り当てられたＰＢＡ＃０〜＃５１７の範囲に含まれる有効ブロックの数と、ＰＺＮ＃１の物理ゾーンに割り当てられたＰＢＡ＃５１８〜＃１０２３の範囲に含まれる有効ブロックの数と、ＰＺＮ＃２の物理ゾーンに割り当てられたＰＢＡ＃１０２４〜＃１５３７の範囲に含まれる有効ブロックの数と、ＰＺＮ＃３の物理ゾーンに割り当てられたＰＢＡ＃１５３８〜＃２０４７の範囲に含まれる有効ブロックの数とは等しくなる（又は差が最大１）。
【００７０】
次に、図６のステップＳ１４で、属する物理ゾーンが移動した書き込み済みの物理ブロックが存在するか否かを判別する。そのような物理ブロックが存在する場合（ステップＳ１４；Ｙｅｓ）には、その物理ブロックに格納されていたデータを、元の物理ゾーンに属す任意の空き物理ブロックに書き込み、元の物理ブロックのデータを消去又は無効化する（ステップＳ１５）。
【００７１】
例えば、ステップＳ１３の物理ゾーン設定処理により、物理ゾーンの構成が図４の状態から、図５の状態に変更されたとする。この場合、例えば、ＰＢＡ＃５１７の物理ブロックは、ＰＺＮ＃１からＰＺＮ＃０に物理ゾーンが変更されている。そこで、ＰＢＡ＃５１７の物理ゾーンのデータを元のＰＺＮ＃１のいずれかの空き物理ブロック、即ち、ＰＢＮ＃５１８〜＃１０２３の物理ブロックのうちの任意の空き領域に移動し、ＰＢＡ＃５１７の記憶データを消去する。
【００７２】
このような構成とすれば、特定の物理ゾーンに不良ブロックが集中した場合でも、その物理ゾーンが必要とする有効ブロックの必要数を確保できなくなるということを回避することができる。
【００７３】
以上に説明したように、各物理ゾーンに含まれる物理ブロックの数を適宜設定すれば、特定の物理ゾーンで有効ブロックの必要数が確保できなくなることを回避することができる。又、このような物理ゾーン設定処理を行った場合、各物理ゾーンに割り当てられた物理ブロックの範囲をゾーン境界情報として記憶しておけば、このゾーン境界情報に基づい
て、各物理ゾーンに割り当てられた物理ブロックの範囲を判断することができる。
【００７４】
なお、図６及び図７に示した物理ゾーン設定処理では、物理ゾーンの数を変更していない。しかし、例えば、図８に示すように、有効ブロックの全数が、従前の物理ゾーンの数を維持するために必要な数よりも小さくなった場合（ステップＳ３１；Ｎｏ）に、物理ゾーンの数を従前の値よりも−１して（ステップＳ３２）、更新された物理ゾーン数で、ステップＳ１３の物理ゾーンの再設定を行うようにしてもよい。
【００７５】
なお、上記実施の形態における、論理ゾーン数、物理ゾーン数、論理ブロック数、物理ゾーン数、ページ数、セクタ数などは例示にすぎず、本発明は、これらに限定されるものではない。
【００７６】
また、物理ゾーンの設定は任意のタイミングで実行できるが、データが書き込まれていない状態で実行することが好ましい。
【００７７】
また、各物理ゾーンに配分する有効ブロックの数は必ずしも同一である必要はなく、互いに異なっていてもよい。
【図面の簡単な説明】
【００７８】
【図１】本発明の実施の形態に係るフラッシュメモリシステムを概略的に示すブロック図である。
【図２】この発明の実施の形態のフラッシュメモリのアドレス空間の構造を概略的に示す図である。
【図３】管理情報の例とアドレス変換テーブルの例を示す図である。
【図４】図３に示す管理情報とアドレス変換テーブルとから特定されるフラッシュメモリの構成を示す図である。
【図５】更新された管理情報の例と、更新された管理情報から特定されるフラッシュメモリの構成を示す図である。
【図６】電源投入時などに、マイクロプロセッサが実行する物理ゾーンを設定する処理を説明するためのフローチャートである。
【図７】図６に示す物理ゾーン再設定処理の詳細を説明するためのフローチャートである。
【図８】図６に示す物理ゾーン設定処理の変形例を説明するための部分的なフローチャートである。
【図９】従来のフラッシュメモリのアドレス空間の構造を概略的に示す図である。
【符号の説明】
【００７９】
１    フラッシュメモリシステム
２    フラッシュメモリ
３    コントローラ
４    ホストシステム
６    マイクロプロセッサ
７    ホストインターフェースブロック
８    ワークエリア
９    バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  ＲＯＭ
１３  外部バス
１４  内部バス
【図１】
2007156846.tif 000003
【図２】
2007156846.tif 000004
【図３】
2007156846.tif 000005
【図４】
2007156846.tif 000006
【図５】
2007156846.tif 000007
【図６】
2007156846.tif 000008
【図７】
2007156846.tif 000009
【図８】
2007156846.tif 000010
【図９】
2007156846.tif 000011
【手続補正書】
【提出日】平成18年11月17日(2006.11.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホストシステムからの命令に応答してフラッシュメモリへのアクセスを制御するメモリコントローラであって、
前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンとの対応関係を管理するゾーン管理手段と、
前記各物理ゾーン内の有効ブロック数に基づいて、前記各物理ゾーンに属する前記物理ブロックの範囲を設定する物理ゾーン設定手段と、
前記物理ゾーン設定手段によって設定された前記各物理ゾーンに属する前記物理ブロックの範囲に基づいて前記各物理ブロックが属する前記物理ゾーンを決定する物理ゾーン管理手段と、を備え、
前記物理ゾーン設定手段は、前記各物理ゾーン内の有効ブロック数の総和が所定数以下となる場合に、前記物理ゾーンの数を減少させて、前記各物理ゾーンに属する物理ブロックの範囲を再設定する手段を含むことを特徴とするメモリコントローラ。
【請求項２】
前記物理ゾーン設定手段は、前記物理ゾーン内の有効ブロック数が最大の物理ゾーンと最小の物理ゾーンの有効ブロック数の差が小さくなるように、前記各物理ゾーンに属する前記物理ブロックの範囲を設定することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記物理ゾーン設定手段は、前記物理ゾーン内の有効ブロック数が最大の物理ゾーンと最小の物理ゾーンの有効ブロック数の差が１以下になるように、前記各物理ゾーンに属する前記物理ブロックの範囲を設定することを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記物理ゾーン設定手段は、前記各物理ゾーンに属する前記物理ブロックの範囲に関する情報を含むゾーン境界情報を、前記フラッシュメモリに格納することを特徴とする請求項１乃至３のいずれか１項に記載のメモリコントローラ。
【請求項５】
前記物理ゾーン管理手段は、前記ゾーン境界情報に基づいて、前記各物理ブロックが属する前記物理ゾーンを決定することを特徴とする請求項４に記載のメモリコントローラ。
【請求項６】
前記物理ゾーン設定手段は、前記各物理ゾーンに属する前記物理ブロックの範囲を再設定することにより、属する物理ゾーンが変化した物理ブロックの記憶データを、前記再設定の前に属していた物理ゾーン内の物理ブロックに移動する手段を含む、ことを特徴とする請求項１乃至５のいずれか１項に記載のメモリコントローラ。
【請求項７】
請求項１乃至６のいずれか１項に記載のメモリコントローラと、フラッシュメモリと、から構成される、
ことを特徴とするフラッシュメモリシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
上記目的を達成するため、本発明のメモリコントローラは、
ホストシステムからの命令に応答してフラッシュメモリへのアクセスを制御するメモリコントローラであって、
前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンとの対応関係を管理するゾーン管理手段と、
前記各物理ゾーン内の有効ブロック数に基づいて、前記各物理ゾーンに属する前記物理ブロックの範囲を設定する物理ゾーン設定手段と、
前記物理ゾーン設定手段によって設定された前記各物理ゾーンに属する前記物理ブロックの範囲に基づいて前記各物理ブロックが属する前記物理ゾーンを決定する物理ゾーン管理手段と、を備え、前記物理ゾーン設定手段は、前記各物理ゾーン内の有効ブロック数の総和が所定数以下となる場合に、前記物理ゾーンの数を減少させて、前記各物理ゾーンに属する物理ブロックの範囲を再設定する手段を含むことを特徴とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】削除
【補正の内容】