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