(57)【要約】【課題】フラッシュメモリ内で後天性の不良ブロック数が増加したときの不具合の発生を防止する。【解決手段】フラッシュメモリの物理アドレス空間が、複数個の単位物理領域（物理ゾーン又は複数の物理セグメント）に分割される。各単位物理領域は、複数個の物理ブロックの集合である。単位物理領域毎に、アドレス変換テーブルの作成のような、論理ブロックと物理ブロックの対応関係の制御が行われる。いずれかの単位物理領域内の不良ブロック数が増えて、その単位物理領域内でデータ書換えに必要な消去済みブロックの確保が困難になると、その単位物理領域と別の単位物理領域が結合されて、より大きい単位物理領域に拡大され、消去済みブロックが確保できるようになる。【選択図】図２
2008226188.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられる論理セクタ単位の論理アドレスに基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
各々が複数個の前記論理セクタの集合である複数個の単位論理領域と、各々が複数個の前記物理ブロックの集合である複数個の単位物理領域との対応関係を管理する単位領域管理手段と、
各単位論理領域に含まれる論理アドレスと、前記各単位論理領域と対応する各単位物理領域に含まれる物理アドレスとの対応管理するアドレス管理手段と、
２個以上の前記単位物理領域を結合させて拡大された単位物理領域にする物理領域結合手段と
を備え、
前記単位領域管理手段は、結合後の前記拡大された単位物理領域に対して、結合前の前記２個以上の前記単位物理領域と対応していた２個以上の前記単位論理領域を対応させる、
メモリコントローラ。
【請求項２】
前記物理領域結合手段によって結合される前記２個以上の前記単位物理領域のうちの少なくとも1個の前記単位物理領域には、予め設定された設定個数以上の不良ブロックが含まれる、
請求項１記載のメモリコントローラ。
【請求項３】
前記複数個の単位物理領域の個数と前記物理領域結合手段によって結合される前記２個以上の前記単位物理領域の個数が、いずれも２のべき乗で与えられる数値である、
請求項１又は２に記載のメモリコントローラ。
【請求項４】
論理アドレス空間にて連続する複数個の前記論理ブロック領域を、前記複数個の前記単位論理領域に対して分散的に含ませる論理ブロック領域分散手段を備え、
前記論理ブロック領域の各々には、前記論理アドレスが連続する複数個の前記論理セクタが含まれ、
前記論理ブロック領域に属する前記論理セクタの個数及び前記複数個の前記単位論理領域の個数が、いずれも２のべき乗で与えられる数値である、
請求項１乃至３に記載のメモリコントローラ。
【請求項５】
前記論理ブロック領域に属する前記論理セクタの個数を２ｉ個とし、前記複数個の前記単位論理領域の個数を２ｊ個としたときに、前記論理セクタの前記論理アドレスの下位側から数えてｉ＋１ビット目からｉ＋ｊビット目までのビットの値に基づいて、該論理セクタが属する前記論理ブロック領域が含まれる前記単位論理領域と、該単位論理領域に対応する前記単位物理領域とを識別する、
請求項４記載のメモリコントローラ。
【請求項６】
物理ブロック単位で消去が行われるフラッシュメモリと、
請求項１乃至５のいずれか１項に記載のメモリコントローラを備えるフラッシュメモリシステム。
【請求項７】
ホストシステムから与えられる論理セクタ単位の論理アドレスに基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御する方法であって、
各々が複数個の前記論理セクタの集合である複数個の単位論理領域と、各々が複数個の前記物理ブロックの集合である複数個の単位物理領域との対応関係を管理するステップと、
各単位論理領域に含まれる論理アドレスと、前記各単位論理領域に対応する各単位物理領域に含まれる物理アドレスとの対応関係を管理するステップと、
２個以上の前記単位物理領域を結合させて拡大された単位物理領域にするステップと、
結合後の前記拡大された単位物理領域に対して、結合前の前記２個以上の前記単位物理領域に対応していた２個以上の個数の前記単位論理領域を対応させるステップと
を有するフラッシュメモリの制御方法。
【請求項８】
前記各単位物理領域内の空きブロックの有無を判断するステップをさらに有し、
前記各単位物理領域内に空きブロックが無いと判断されたときに、前記２個以上の前記単位物理領域の結合が行われる、
請求項７記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはフラッシュメモリのコントロールに関わり、特に、フラッシュメモリ内での後天的な不良ブロックの発生を考慮したメモリコントロールに関する。
【背景技術】
【０００２】
フラッシュメモリ、とりわけＮＡＮＤ型フラッシュメモリでは、データ消去は、複数の物理ページの集合である物理ブロックを単位として行ない得る。そのため、ホストシステムから或る論理アドレスに新データを書込む（つまり、その論理アドレスの旧データを新データに書換える）よう要求された場合、旧データを格納している物理ブロックに新データを上書きすることができない。この場合、新データを含んだ新ブロックデータを別の消去済みの物理ブロック（つまり、空きブロック）に書き込んだ後、旧データを格納している物理ブロックから旧ブロックデータを消去するというプロセスが行われる。このように、データ書換えが行なわれると、新データは旧データとは異なる物理ブロックに移動される。
【０００３】
従って、ホストシステムから提供される論理アドレスコードにより指定される論理ブロックと、フラッシュメモリ内の物理ブロックとの対応関係は、データ書換えが行われる都度、変化する。ホストシステムとフラッシュメモリとの間に介在するメモリコントローラが、この対応関係をコントロールし管理する。すなわち、各物理ブロックは、ユーザデータを格納するための領域の他に、主としてコントロールの目的で使用される冗長領域を有する。メモリコントローラは、各物理ブロックの冗長領域に、その物理ブロックに対応する論理ブロックを特定するための情報を記録する。そして、メモリコントローラは、個々の時点で、メモリ内の多数の物理ブロックの冗長領域から上記情報を読み、その情報に基づいて、論理ブロックと物理ブロックとの対応関係を記載したアドレス変換テーブルを作成する。
【０００４】
フラッシュメモリ内の物理ブロックの総数は非常に多い。フラッシュメモリの容量の増大に伴い、物理ブロックの数も増大する。もし、メモリコントローラが、フラッシュメモリ内の全ての物理ブロックについて上記対応関係を記載したアドレス変換テーブルを作成しようとするならば、アドレス変換テーブルの作成に時間がかかり、アクセス速度に支障を与えるであろう。この問題を解決するために、フラッシュメモリの物理アドレス空間を、各々が適当数の物理ブロックの集合である複数の物理ゾーンに分け、物理ゾーン毎に、上述したアドレス変換テーブルの作成のような論理ブロックと物理ブロック間の対応関係の制御を行なうことで、その制御の処理負担を軽減するという技術が知られている。
【０００５】
このゾーン分けの技術によれば、論理アドレスを定義した論理アドレス空間も、各々が適当数の論理ブロックの集合である複数の論理ゾーンに分割される。そして、複数の論理ゾーンと複数の物理ゾーンとが基本的に1対1の関係で対応付けられる。１つの物理ゾーンに含まれる物理ブロックの数は、それに対応する１つの論理ゾーンに含まれる論理ブロックの数より、若干数だけ多い。その理由の一つは、上述したように、１つの論理ブロックのデータを書換えるために、旧データを格納した物理ブロックの他に、新データを書き込むための空き物理ブロックが使用されるので、論理ブロックの数より多い数の物理ブロックが必要だからである。また、もう一つの理由は、全ての物理ブロック中には不良なブロックも一部含まれているため、ある程度の数までの不良ブロックを許容できるための物理ブロック数の余裕が各物理ゾーンに必要だからである。
【０００６】
しかし、フラッシュメモリのメモリセルアレイの特定箇所に不良ブロック（書込みや消去が正常にできない物理ブロック）が多く集中する場合、その特定箇所が割り当てられた特定の物理ゾーンに不良ブロックが集中し、その物理ゾーンで不具合（典型的には、空きブロックが確保できないこと）が生じるおそれがある。この問題を解決するため、初期設定の際に、１つの物理ゾーンに含まれる複数の物理ブロックを、フラッシュメモリ内で物理的に分散させ、物理ゾーンに含まれる先天性の不良ブロックの数を均等化する技術が提案されている（例えば特許文献１）。また、不良ブロックの位置を検出し、そして、良好な物理ブロックが複数の物理ゾーンに均等に分布するよう、物理ゾーンの境界を調整する技術も提案されている（例えば特許文献２）。
【０００７】
【特許文献１】特開2005-209140号公報
【特許文献２】特開2006-509304号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載のブロック分散技術や、特許文献２に記載のゾーン境界技術によれば、特定の物理ゾーンへの不良ブロックの集中を軽減することができる。しかし、フラッシュメモリ内では、アクセス回数の増加や経年劣化などにより、後天性の不良ブロックの数が徐々に増えていく。そのため、従って、フラッシュメモリの使用開始後、いずれかの物理ゾーンにおいて、不良ブロックの数が許容限界に達して空きブロックが確保できなくなるという時が、必ず到来する。
【０００９】
従って、本発明の目的は、フラッシュメモリ内で後天性の不良ブロック数が増加したときの不具合の発生を防止することにある。
【課題を解決するための手段】
【００１０】
本発明の第１の側面に従えば、ホストシステムから与えられる論理セクタ単位の論理アドレスに基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
各々が複数個の論理セクタの集合である複数の単位論理領域と、各々が複数個の前記物理ブロックの集合である複数個の単位物理領域との対応関係を管理する単位領域管理手段と、
各単位論理領域に含まれる論理アドレスと、前記各単位論理領域と対応する各単位物理領域に含まれる物理アドレスとの対応管理するアドレス管理手段と、
２個以上の前記単位物理領域を結合させて拡大された単位物理領域にする物理領域結合手段と
を備え、
前記単位領域管理手段は、結合後の前記拡大された単位物理領域の全領域に対して、結合前の前記２個以上の前記単位物理領域と対応していた２個以上の前記単位論理領域を対応させる、
メモリコントローラが提供される。
【００１１】
好適な実施形態では、前記物理領域結合手段によって結合される前記２個以上の前記単位物理領域のうちの少なくとも1個の前記単位物理領域には、予め設定された設定個数以上の不良ブロックが含まれるように、前記メモリコントローラが構成される。
【００１２】
また、好適な実施形態では、前記複数個の単位物理領域の個数と前記物理領域結合手段によって結合される前記２個以上の前記単位物理領域の個数が、いずれも２のべき乗で与えられるように、前記メモリコントローラが構成される。
【００１３】
また、好適な実施形態では、論理アドレス空間において連続する複数個の前記論理ブロック領域を、前記複数個の前記単位論理領域に対して分散的に含ませる論理ブロック領域分散手段がさらに備えられる。各論理ブロック領域には、前記論理アドレスが連続する複数個の前記論理セクタが含まれる。そして、前記論理ブロック領域に属する前記論理セクタの個数及び前記複数個の前記単位論理領域の個数が、いずれも２のべき乗で与えられる。
【００１４】
また、好適な実施形態では、前記論理ブロック領域に属する前記論理セクタの個数を２ｉ個とし、前記複数個の前記単位論理領域の個数を２ｊ個としたときに、前記論理セクタの前記論理アドレスの下位側から数えてｉ＋１ビット目からｉ＋ｊビット目までのビットの値に基づいて、該論理セクタが属する前記論理ブロック領域が含まれる前記単位論理領域と、該単位論理領域に対応する前記単位物理領域とを識別するように、前記メモリコントローラが構成される。
【００１５】
本発明の別の側面に従えば、上記メモリコントローラとフラッシュメモリとを備えたフラッシュメモリシステムが提供される。
【００１６】
本発明のまた別の側面に従えば、ホストシステムから与えられる論理セクタ単位の論理アドレスに基づいて、物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御する方法であって、
各々が複数個の前記論理セクタの集合である複数個の単位論理領域と、各々が複数個の前記物理ブロックの集合である複数個の単位物理領域との対応関係を管理するステップと、
各単位論理領域に含まれる論理アドレスと、前記各単位論理領域に対応する各単位物理領域に含まれる物理アドレスとの対応管理するステップと、
２個以上の前記単位物理領域を結合させて拡大された単位物理領域にするステップと、
結合後の前記拡大された単位物理領域に対して、結合前の前記２個以上の前記単位物理領域に対応していた２個以上の前記単位論理領域を対応させるステップと
を有するフラッシュメモリの制御方法が提供される。
【００１７】
好適な実施形態では、上記制御方法は、前記各単位物理領域内の空きブロックの有無を判断するステップをさらに有し、前記各単位物理領域内に空きブロックが無いと判断されたときに、前記２個以上の前記単位物理領域の結合が行われる。
【発明の効果】
【００１８】
本発明によれば、フラッシュメモリ内で後天性の不良ブロック数が増加したときの不具合の発生を防止することができる。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して本発明の幾つかの最良な実施形態を説明する。
【００２０】
図１は、本発明の実施形態に従うフラッシュメモリシステム１の全体構成を示す。
【００２１】
図１に示すように、フラッシュメモリシステム１は、フラッシュメモリ２とメモリコントローラ３を有する。メモリコントローラ３は、内部バス１４を介してフラッシュメモリ２と接続され、また、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、フラッシュメモリ２へのアクセスを要求する種々の装置、例えばパーソナルコンピュータやデジタルスチルカメラやその他の情報処理装置であり得る。メモリコントローラ３は、ホストシステム４からのアクセス（つまり、書込み及び読み出し）要求に応答して、フラッシュメモリ２に対するアクセスをコントロールする。フラッシュメモリ２は、データを記憶するための大容量の不揮発性のメモリセルアレイと、メモリセルアレイと内部バス１４間のデータの受け渡しを仲介するための小容量（例えば、１つの物理ページ相当）のレジスタとを有する。
【００２２】
メモリコントローラ３は、ホストシステム４から与えられる外部コマンド及び論理アドレス等に基づいて、内部コマンド、物理アドレス及びデータ等を、フラッシュメモリ２に与える。フラッシュメモリ２は、メモリコントローラ３から与えられる内部コマンド及び物理アドレス等に基づいて読み出し処理、書き込み処理、消去処理等の処理を実行する。ここで、ホストシステム４がフラッシュメモリシステム１に与えるコマンドを外部コマンドと呼び、メモリコントローラ３がフラッシュメモリ２に与えるコマンドを内部コマンドと呼ぶ。
【００２３】
図２は、フラッシュメモリ２のメモリセルアレイの物理アドレス空間の構成を示す。
【００２４】
図２に示すように、フラッシュメモリ２の物理アドレス空間は、多数の物理ブロックに区分される。各物理ブロックは、所定複数個の物理ページの集合である。本実施形態では、物理ブロックの総数は例えば８１９２個であり、１つの物理ブロックは例えば６４個の物理ページの集合である。ここで、物理ページは、フラッシュメモリ２にてデータ読出し及び書込みの対象とされるメモリ領域の単位（データ読出し及び書込み時に一度に選択されるメモリ群）である。物理ブロックは、フラッシュメモリ２にてデータ消去の対象とされるメモリ領域の単位（一度にデータが消去されるメモリセル群）である。
【００２５】
各物理ページは、ユーザ領域２５と冗長領域２６を有する。ユーザ領域２５は、ホストシステム４から与えられるユーザデータを格納するための記憶領域である。冗長領域２６は、主としてメモリコントローラ３により使用される制御目的の付加データを格納するための記憶領域である。本実施形態では、各物理ページのユーザ領域２５は、例えば４セクタ相当の容量、つまり２０４８バイトの容量をもち、冗長領域２６は６４バイトの容量をもつ。
【００２６】
さらに、本実施形態では、フラッシュメモリ２の物理アドレス空間は、所定複数個の物理ゾーンに区分され、物理ゾーンは所定複数個の物理ブロックから構成される。本実施形態では、物理ゾーンの総数は例えば８個であり、各物理ゾーンは、例えば１０２４個の物理ブロックの集合である。
【００２７】
またさらに、各物理ゾーンは、メモリコントローラ３により、所定複数個の物理セグメントに区分され、各物理セグメントは所定複数個の物理ブロックから構成される。尚、物理ゾーン及び物理セグメントの管理並びに論理ブロックと物理ブロックの対応関係の制御処理（アドレス変換テーブルの作成など）は、メモリコントローラ３によって行われる。また、本実施形態において、論理ブロックと物理ブロックの対応関係の制御処理（アドレス変換テーブルの作成など）は、物理セグメント単位で行われる（つまり、物理セグメント毎にアドレス変換テーブルが作成される）。
【００２８】
メモリコントローラ３は、フラッシュメモリ２の使用開始時（初期段階）には、１つの物理ゾーンを所定最大個数の物理セグメントに区分する（つまり、物理セグメントに含まれる物理ブロックの個数を最小にする）が、その物理ゾーン内での後天性の不良ブロックの数が増加するのに伴い、本発明に原理に従って、その物理ゾーン内の物理セグメントの数を減らし、各物理セグメントのサイズを拡大する（つまり、物理セグメントに含まれる物理ブロックの個数を増加させる）。すなわち、メモリコントローラ３は、初期段階から継続的に各物理セグメントに含まれる不良ブロック（先天性の不良ブロック及び後天性の不良ブロック）の個数を監視し、特定の物理セグメントに含まれる不良ブロックの個数が或るレベルまで増えると、その物理セグメントを他の物理セグメントと結合して、物理セグメントのサイズを拡大する。その後、このサイズが拡大された物理セグメントに含まれる不良ブロックの個数が或るレベルまで増えると、このサイズが拡大された物理セグメントを他の物理セグメントと結合して、物理セグメントのサイズを更に拡大する。ここで、物理セグメントを結合させるときのレベル（不良ブロックの個数）は、物理セグメントに含まれる物理ブロックの個数（総数）に応じて適宜設定することができる。
【００２９】
尚、物理セグメントに含まれる不良ブロックの個数に基づいて複数の物理セグメントを結合するのではなく、特定の物理セグメントで空きブロックを確保することができなくなったときに、その物理セグメントを他の物理セグメントと結合させて、物理セグメントのサイズを拡大するようにしてもよい。この場合も、サイズが拡大された物理セグメントで空きブロックを確保することができなくなったときには、物理セグメントのサイズを更に拡大させる物理セグメントの結合が行われる。
【００３０】
本実施形態では、初期段階において、１個の物理ゾーン内の物理セグメントの個数は例えば８個であり、１個の物理セグメントは例えば１２８個の物理ブロックの集合である。不良ブロックの数が増えるのに伴って、１個の物理ゾーン内の物理セグメントの数は段階的に減っていき、同時に、１個の物理セグメント（拡大物理セグメント）のサイズは段階的に拡大していく。
【００３１】
ここで、物理セグメントのサイズの拡大は、結合レベルに達した物理セグメント（不良ブロックの個数が或るレベルに達した物理セグメント又は空きブロックを確保することができなくなった物理セグメント）についてだけ行ってもよいが、結合レベルに達した物理セグメントが含まれる物理ゾーン全体について行うことが好ましい。つまり、１個の物理ゾーン内に８個の物理セグメントが存在するときに、その中の少なくとも１個の物理セグメントが結合レベルに達したとき（不良ブロックの個数が或るレベルに達したとき又は空きブロックを確保することができなくなったとき）は、結合レベルに達していない物理セグメントについてもサイズの拡大を行い、その物理ゾーンに存在する物理セグメントの個数を８個から例えば４個に減少させる。この後、サイズが拡大された物理セグメント（４個の物理セグメント）の中の少なくとも１個の物理セグメントが結合レベルに達したときは、更に、その物理ゾーンに存在する物理セグメントの個数を４個から例えば２個に減少させる。
【００３２】
尚、上記のように物理ゾーン毎に独立して物理セグメントのサイズの拡大を行った場合、物理ゾーン毎に物理ゾーン内に存在する物理セグメントの個数を管理する必要があるので、その管理を簡素化するために、物理ゾーン内に存在する物理セグメントの個数が最小になる物理ゾーンに合わせて、その他全ての物理ゾーンについても、物理ゾーン内に存在する物理セグメントの個数を減少させていってもよい。例えば、各物理ゾーン内に８個の物理セグメントが存在するときに、その中の１個の物理ゾーンについて、物理セグメントの個数を８個から４個に減少させるサイズの拡大を行う必要が生じたときには、その他全ての物理ゾーンについても、物理セグメントの個数を８個から４個に減少させるサイズの拡大を行うようにしてもよい。
【００３３】
このように、不良ブロックの数の増加に伴って、物理セグメントが拡大される（つまり、その物理セグメントに含まれる物理ブロックの数が増える）ことにより、不良ブロックの数の増加に起因する不具合の発生が防止される。この制御については、後に詳述する。この制御を容易にするために、各物理ゾーン内に存在する物理セグメントの個数は、いずれの段階でも２のべき乗で与えられる数値であることが望ましく、段階移行時に結合されるの物理セグメントの個数も２のべき乗で与えられる数値であることが望ましい。また、各物理セグメント内の物理ブロック数、各物理ブロック内の物理セクタ数、及び、各物理ブロックに対応する各論理ブロック内の論理セクタ数も、それぞれ、２のべき乗で与えられる数値であることが望ましい。
【００３４】
さて、各物理ページの冗長領域２６には、エラーコレクションコード、論理アドレス情報、ブロックステータス（フラグ）等の付加データが記憶される。エラーコレクションコードは、ユーザ領域２５に記憶されているユーザデータに含まれる誤りを検出し、訂正するために使用される。ブロックステータス（フラグ）は、物理ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができない不良な物理ブロックには、不良ブロックであることを示すブロックステータス（フラグ）が書き込まれる。
【００３５】
論理アドレス情報は、物理ブロックと論理ブロックの対応関係を判断するための情報であり、この論理アドレス情報が冗長領域２６に記憶されていない物理ブロックについては、空きブロックであると判断される。
【００３６】
上述のように、１つの物理ブロックは、複数の物理ページを含んでいる。これらの物理ページには、データの上書きができない。このため、１つの物理ページに格納されたデータのみを書き換えるときであっても、その物理ページが含まれた物理ブロック内の全物理ページに格納されたデータを、再度書き込まなければならない。この場合、書き換える物理ページが含まれる物理ブロックの全物理ページに格納されたデータが、別の消去済み物理ブロック（空きブロック)に書き込まれる。従って、論理ブロックと物理ブロック間の対応関係は、フラッシュメモリ２にてデータが書き換えられる毎に、動的に変化する。
【００３７】
メモリコントローラ３が、論理ブロックと物理ブロックとの対応関係を記述したアドレス変換テーブルを作成し、このアドレス変換テーブルを参照して、ホストシステム４から指定される論理アドレスを、フラッシュメモリ２へ指定すべき物理アドレスへと変換する。このアドレス変換テーブルは、物理セグメント毎に作成することができる。尚、アドレス変換テーブルは、物理ブロックの先頭物理ページの冗長領域２６に記憶されている論理アドレス情報に基づいて作成されため、或る物理セグメントのためのアドレス変換テーブルを作成するときには、その物理セグメントに含まれる物理ブロックの冗長領域２６から論理アドレス情報を順次読み出さなければならない。従って、物理セグメントのサイズ（そこに含まれる物理ブロックの数）が小さいほど、アドレス変換テーブルを作成するための処理時間は減り、より高速なメモリアクセスが可能になる。
【００３８】
メモリコントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（エラーコレクションコード）ブロック１１と、ＲＯＭ１２とを有する。
【００３９】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているファームウェアに基づいて各種の処理を実行する。ＲＯＭ１２内のファームウェアには、ホストインターフェースブロック７及びフラッシュメモリインターフェースブロック１０等のメモリコントローラ３の各部を制御するためのプログラムが含まれている。例えば、このプログラムに基づいて、上述した物理セグメントの管理及びアドレス変換テーブルの作成等の処理が実行される。
【００４０】
ホストインターフェースブロック７は、マイクロプロセッサ６による制御の下で、外部バス１３を通じて、ホストシステム４とデータ、論理アドレス、ステータス情報及び外部コマンド等の送受信を行う。フラッシュメモリインターフェースブロック１０は、マイクロプロセッサ６による制御の下で、内部バス１４を介して、フラッシュメモリ２とデータ、物理アドレス、ステータス情報及び内部コマンド等の送受信を行う。
【００４１】
ワークエリア８は、マイクロプロセッサ６により使用される作業領域である。ワークエリア８には、例えば、論理ブロックと物理ブロックとの対応関係を記載した上述のアドレス変換テーブル、及び、空きブロックを検索するための空きブロック検索テーブルなどが作成される。
【００４２】
バッファ９は、フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込むべきデータを一時的に保持する。すなわち、フラッシュメモリインターフェースブロック１０によりフラッシュメモリ２から読み出されたデータは、バッファ９に一時的に保持された後、ホストインターフェースブロック７を通じてホストシステム４に転送される。ホストシステム４からホストインターフェースブロック７に入力されたフラッシュメモリ２に書き込むべきデータは、バッファ９に一時的に保持された後、フラッシュメモリインターフェースブロック１０を通じてフラッシュメモリ２に転送される。
【００４３】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００４４】
以上のような構成を有する本実施形態にかかるフラッシュメモリシステム１において、メモリコントローラ３によって行われる本発明の原理に従った動作について、以下に詳細に説明する。
【００４５】
図３は、メモリコントローラ３とホストシステム４とが共有する論理アドレス空間における、論理ゾーンと論理ブロックの構成を示す。
【００４６】
論理アドレス空間は、多数の論理セクタ（典型的に５１２バイト）に分割される。図３の（ａ）に示されたＬＢＡ（Logical Block Address）は、全ての論理セクタに付与された通し番号である。基本的に、この論理セクタ単位のアドレスであるＬＢＡが、ホストシステム４からメモリコントローラ３に提供される論理アドレスとして使用される。
【００４７】
図３の（ａ）と（ｂ）に示すように、メモリコントローラ３は、連続するＬＢＡをもつ例えば２５６個の論理セクタの集合を、１個の論理ブロックとして管理する。メモリコントローラ３は、論理アドレス空間を、例えば８０００個（フラッシュメモリ２内の物理ブロックの総数８１９２個より若干少ない）の論理ブロックに分割し、そして、それらの論理ブロックに、ＬＢＮ（論理ブロック番号）と呼ばれる通し番号を付与する。
【００４８】
図３の（ｂ）と（ｃ）に示すように、メモリコントローラ３は、例えば１０００個（フラッシュメモリ２内の１個の物理ゾーンに含まれる物理ブロックの個数１０２４個より若干少ない）の論理ブロックの集合を、１個の論理ゾーンとして管理する。換言すれば、８０００個の論理ブロックが含まれる論理アドレス空間を、８個（フラッシュメモリ２内の物理ゾーンと同数）の論理ゾーンに分割して管理する。８個の論理ゾーンに対しては、所定の振り分け単位で、論理アドレス空間内の領域が振り分けられる。例えば、１ブロック（１個の論理ブロック）単位で、論理アドレス空間内の領域が各論理ゾーンに振り分けられる（つまり、２５６セクタ（２５６個の論理セクタ）単位で、論理アドレス空間内の領域が各論理ゾーンに振り分けられる）。このような振り分けを行うことにより、連続するＬＢＮをもつ論理ブロックが、異なる論理ゾーンに分散して割り当てられる。８個の論理ゾーンには、ＬＺＮ（論理ゾーン番号）と呼ばれる通し番号が付与される。さらに、論理ゾーン毎に、そこに含まれる１０００個の論理ブロックに、ＬＺＩＢＮ（論理ゾーン内ブロック番号）と呼ばれる通し番号が付与される。
【００４９】
尚、上記の振り分け単位は、適宜設定することができるが、２のべき乗で与えられる個数の論理セクタを含む集合であることが好ましい。又、１個の論理ブロックに含まれる論理セクタの個数は、通常、１個の論理ブロックに含まれる領域と１個の物理ブロックに含まれるユーザデータの記憶領域とが等しくなるように設定される。但し、１個の論理ブロックに対して複数個の物理ブロックを割り当てるような場合は、１個の論理ブロックに割り当てる物理ブロックの個数に応じて、１個の論理ブロックに含まれる論理セクタの個数が設定される。例えば、１個の論理ブロックに対して２個の物理ブロックを割り当てるような場合は、１個の論理ブロックに含まれる領域と２個の物理ブロックに含まれるユーザデータの記憶領域とが等しくなるように、１個の論理ブロックに含まれる論理セクタの個数が設定される。
【００５０】
上記のような論理アドレス空間の振り分けを行うことにより、論理アドレス空間内のＬＢＡが連続する特定の領域にアクセスが集中したとしても、その特定の領域が上記の振り分け単位より広い領域であれば、そのアクセスが複数の論理ゾーン（つまり、複数の物理ゾーン）に分散される。図３の（ｂ）と（ｃ）に示したように、２５６セクタ（２５６個の論理セクタ）単位で論理アドレス空間内の領域を各論理ゾーンに振り分けた場合、アクセスが集中する領域が２５７セクタ以上の領域であれば、そのアクセスは少なくとも２個以上の論理ゾーンに分散される。それにより、特定の物理ゾーンにのみアクセスが集中することが抑制され、結果として、特定の物理ゾーンにのみ後天性の不良ブロックが集中することが抑制される。
【００５１】
図４は、ＬＢＡ（Logical
Block Address）のビット構造を示す。
【００５２】
図４において、各「＊」マークが各ビットを意味する。ＬＢＡは、例えば２１ビットの２進数値であり、論理アドレス空間内の全ての論理セクタ（２５６×８０００個の論理セクタ）を識別する。ＬＢＡの上位所定数ビット（例えば上位１３ビット）がＬＢＮであり、下位の残り数ビット（例えば下位８ビット）がＬＳＮ（論理セクタ番号）である。ここで、ＬＳＮは、各論理ブロックに含まれる全ての論理セクタに付された通し番号である。各論理ブロックに含まれる論理セクタの個数は２のべき乗で与えられる数値、すなわち、２ｉ個（iは整数であり、例えば、i＝８で、２５６個）であることが好ましい。それにより、ＬＢＡの下位iビットを抽出すればＬＳＮが得られ、上位の残り数ビットを抽出すればＬＢＮが得られる。
【００５３】
また、論理ゾーンの個数も２のべき乗で与えられる数値、すなわち、２ｊ個（ｊは整数であり、例えば、ｊ＝３で、８個）であることが好ましい。それにより、図４に示すように、ＬＢＮの下位jビット（例えば下位３ビット）がＬＺＮであり、上位の残り数ビット（例えば上位１０ビット）がＬＺＩＢＮである。このようにＬＢＮの下位jビットをＬＺＮとするということは、ＬＢＡの下位から数えてi＋１ビット目からi＋ｊビット目をＬＺＮとすることに相当する。つまり、上記の振り分け単位が、２のべき乗で与えられる数値の論理セクタを含む集合であり、論理ゾーンの個数が２のべき乗で与えられる数値であれば、ＬＢＡの特定のビットに基づいて、その論理セクタ（又はその論理セクタが属する論理ブロック）が振り分けられる論理ゾーンを判別することができる。このようにして振り分けられる論理ゾーンを判別する方法は、図３の（ｂ）と（ｃ）に示したように、論理アドレス空間を複数の論理ゾーンに分散して割り当てるため、本実施形態で採用される一つの手法である。この手法を用いることにより、アクセス対象の論理ゾーンを判別するときに、メモリコントローラ３にてＬＢＮに対する割り算計算を行う必要がなくなる。更に、１個の論理ゾーンに含まれる論理セクタの総数が２のべき乗で与えられる数値に限定されず、且つ、１個の論理ゾーンに含まれる論理セクタの総数を容易に変更することができる、という利点がある。
【００５４】
図５は、メモリコントローラ３内で制御される論理ゾーンと物理ゾーン及び物理ブロックの対応関係を示す。図３と図５の双方を眺めることで、論理アドレス空間と物理アドレス空間との関係の全体像が理解できる筈である。
【００５５】
図５の（ａ）に示されるような例えば８個の論理ゾーンは、図５の（ｂ）に示されるような同数（つまり８個）の物理ゾーンに、1対１の関係で対応付けられる。図５の（ｂ）に示すように、それらの物理ゾーンには、ＰＺＮ（物理ゾーン番号）と呼ばれる通し番号が付与される。各物理ゾーン内には例えば１０２４個（各論理ゾーン内の論理ブロックの数１０００個より若干多い）の物理ブロックが含まれる。全ての物理ブロックには、ＰＢＡ（物理ブロック番号）と呼ばれる通し番号が付けられている。更に、物理ゾーン毎に、そこに含まれる１０２４個の物理ブロックに、ＰＺＩＢＮ（物理ゾーン内ブロック番号）と呼ばれる通し番号が付与される。
【００５６】
図６は、ＰＢＮ（物理ブロック番号）のビット構造を示す。
【００５７】
図６に示すように、ＰＢＡは例えば１３ビットの２進数値であり、全ての物理ブロック（例えば８１９２個の物理ブロック）を識別する。物理ゾーンの個数が２のべき乗で与えられる数値、すなわち、２ｐ個（ｐは整数であり、例えば、ｐ＝３で、８個）であれば、ＰＢＡの上位ｐビット（例えば上位３ビット）がＰＺＮであり、下位の残り数ビット（例えば下位１０ビット）がＰＺＩＢＮである。
【００５８】
ところで、図５の（ｂ）に示した例では、各物理ゾーンは、連続するＰＢＡをもつ物理ブロックの集合により構成される。しかし、図３に示された論理ブロックと論理ゾーンとの関係と同様に、連続しないＰＢＡをもつ物理ブロックの集合により各物理ゾーンを構成する（換言すれば、連続するＰＢＡをもつ物理ブロックを、異なる物理ゾーンに分散する）こともでき、それによる利点の一つは、特定の物理ゾーンに先天性の不良ブロックが集中することを抑制できることである。
【００５９】
図７は、物理ブロックの構成を示す。
【００６０】
図７に示すように、１個の物理ブロックは、所定複数個（例えば６４個）の物理ページから構成される。各物理ページは、所定複数個（例えば４個）の物理セクタから構成される。物理ブロック毎に、そこに含まれる全て（例えば６４個）の物理ページに、ＰＰＮ（物理ページ番号）と呼ばれる通し番号が付与される。また、物理ブロック毎に、そこに含まれる全て（例えば２５６個）の物理セクタに、ＰＳＮ（物理セクタ番号）と呼ばれる通し番号が付与される。
【００６１】
図示は省略してあるが、論理ブロックも、上記の物理ブロックと同様の構成をもつ。すなわち、１つの論理ブロックは、所定複数個（例えば６４個）の論理ページから構成される。各論理ページは、所定複数個（例えば４個）の論理セクタから構成される。論理ブロック毎に、そこに含まれる全て（例えば６４個）の論理ページに、ＬＰＮ（論理ページ番号）と呼ばれる通し番号が付与される。また、論理ブロック毎に、そこに含まれる全て（例えば２５６個）の論理セクタに、ＬＳＮ（論理セクタ番号）と呼ばれる通し番号が付与される。
【００６２】
図８は、ＬＳＮとＰＳＮのビット構造を示す。
【００６３】
図８に示すように、ＬＳＮとＰＳＮのいずれも、例えば８ビットの２進数値であり、上述した２５６個のセクタの全てを識別する。ＬＳＮとＰＳＮの上位の所定数ビット（例えば上位６ビット）が、それぞれ、ＬＰＮとＰＰＮであり、上述した６４個のページの全てを識別する。
【００６４】
ところで、対応する論理ブロックと物理ブロックの間では、例えば、ＬＰＮとＰＰＮが同じ値をもつ論理ページと物理ページが対応するように管理される。しかし、変形例として、対応する論理ブロックと物理ブロックの間で、対応する論理ページと物理ページのＬＰＮとＰＰＮとが異なる値をもつようにすることもできる。例えば、各物理ページの冗長領域２６に、各物理ページに対応する各論理ページのＬＰＮを記録しておく、というような方法を採用することで、論理ページと物理ページとの間の対応関係を管理することができる。
【００６５】
さて、既に説明したように、メモリコントローラ３は、各物理ゾーンを複数個の物理セグメントに分割する。メモリコントローラは、フラッシュメモリ２へのデータ書込みを行うときに、アクセス対象の物理セグメント（アクセス対象の論理セグメントに対応する物理セグメント）についてアドレス変換テーブルを作成する。メモリコントローラ３は、本発明の原理に従い、或る物理セグメント内で後天性の不良ブロックが増えるのに伴って、その物理セグメントと別の物理セグメントを結合して物理セグメントを拡大する。以下では、図９から図１７を参照して、メモリコントローラ３が行う物理セグメントの制御について、アドレス変換テーブルの作成処理と関連付けて、具体的に説明する。
【００６６】
図９は、論理アドレス空間上で定義される論理セグメントの構成を示す。
【００６７】
図９の（ａ）には、ＬＺＮ＃０の論理ゾーンが示されている。この論理ゾーンは、図９の（ｂ）に示すように、例えば、８個の論理セグメント（所定の最大数の論理セグメント）に分割されている。論理ゾーン内の論理セグメントの個数は、２のべき乗で与えられる数値であることが好ましい。論理ゾーン内の全ての論理セグメントには、図９の（ｂ）に示されるように、ＬＳＧＮ（論理セグメント番号）と呼ばれる通し番号が付与される。各論理セグメントは、連続しないＬＺＩＢＮをもつ論理ブロックの集合により構成される。換言すれば、連続するＬＺＩＢＮをもつ論理ブロックは、異なる論理セグメントに分散される。
【００６８】
本実施形態では、論理ゾーン内に８個の論理セグメントが存在する。このとき８個の論理セグメントに付与されている論理セグメント番号が、図９の（ｂ）では「ＬＳＧＮ＃０〜＃７」で示されている。「ＬＳＧＮ＃０〜＃７」で示されている各論理セグメントには、１２５個の論理ブロックが含まれている。初期段階（第１段階）では、８個の論理セグメントは、８個の物理セグメントに１対１の関係で対応付けられる。
【００６９】
第２段階では、８個の論理セグメントは、２個ずつの４個のグループとなり、それら４個のグループが４個の物理セグメントに対して対応付けられる。つまり、ＬＳＧＮ＃０とＬＳＧＮ＃１の論理セグメントが第１のグループとなり、ＬＳＧＮ＃２とＬＳＧＮ＃３の論理セグメントが第２グループとなり、ＬＳＧＮ＃４とＬＳＧＮ＃５の論理セグメントが第３グループとなり、ＬＳＧＮ＃６とＬＳＧＮ＃７の論理セグメントが第４グループとなる。そして、同じグループに属する２個の論理セグメントがそれぞれ同じ物理セグメントに対応付けられる。尚、図９の（ｂ）で、ＬＳＧＮ＃０とＬＳＧＮ＃１の論理セグメントのグループ番号はＧＮ＃０に対応し、ＬＳＧＮ＃２とＬＳＧＮ＃３の論理セグメントのグループ番号はＧＮ＃１に対応し、ＬＳＧＮ＃４とＬＳＧＮ＃５の論理セグメントのグループ番号はＧＮ＃２に対応し、ＬＳＧＮ＃６とＬＳＧＮ＃７の論理セグメントのグループ番号はＧＮ＃３に対応する。
【００７０】
第３段階では、８個の論理セグメントは、４個ずつの２個のグループとなり、それら２個のグループが２個の物理セグメントに対して対応付けられる。つまり、ＬＳＧＮ＃０〜＃３の論理セグメントが第１グループとなり、ＬＳＧＮ＃４〜＃７の論理セグメントが第２グループとなる。同じグループに属する４個の論理セグメントがそれぞれ同じ物理セグメントに対応付けられる。尚、図９の（ｂ）で、ＬＳＧＮ＃０〜＃３の論理セグメントのグループ番号はＧＮ’＃０に対応し、ＬＳＧＮ＃４〜＃７の論理セグメントのグループ番号はＧＮ’＃１に対応する。
【００７１】
論理ゾーンの個数が２ｊ個（ｊは整数であり、例えば、ｊ＝３で、８個）で、論理セグメントの個数が２ｓ個（ｓは整数であり、例えば、ｓ＝３で、８個）であるとき、論理セグメント番号（ＬＳＧＮ）は、ＬＢＮの下位側から数えてｊ＋１ビット目からｊ＋ｓビット目までのビットが示す値に対応する。例えば、論理ゾーンの個数が２３個（８個）で、論理セグメントの個数が２３個（８個）の場合、図１０Ａに示したように、ＬＢＮの下位側から数えて４ビット目から６ビット目までのビットが示す値が論理セグメント番号（ＬＳＧＮ）に対応する。尚、図９の（ｂ）に示したＧＮ（グループ番号）は、ＬＢＮの下位側から数えて５ビット目から６ビット目までのビットが示す値に対応し、ＧＮ’（グループ番号）は下位側から数えて６ビット目のビットが示す値に対応する。
【００７２】
＜第１段階の説明＞
図１１は、第１段階におけるＬＺＮ＃０の論理ゾーン内の論理セグメントと、ＰＺＮ＃０の物理ゾーン内の物理セグメントとの対応関係を示している。図１１の（ｂ）に示したように、ＰＺＮ＃０の物理ゾーン内にも、論理ゾーン側と同様に、８個の物理セグメント（所定の最大数の物理セグメント）が存在する。物理ゾーン内の全ての物理セグメントには、ＰＳＧＮ（物理セグメント番号）と呼ばれる通し番号が付与される。ＰＳＧＮ＃０〜＃７の各物理セグメントには、１２８個の物理ブロックが含まれている。論理セグメントと物理セグメントは1対１の関係で対応付けられおり、ＬＳＧＮとＰＳＧＮが同じ値をもつ論理セグメントと物理セグメントが対応するように管理される。ここで、ＬＳＧＮは、図１２Ａに示したように、ＬＢＮの下位側から数えて４ビット目から６ビット目までのビットが示す値に対応する。ＰＳＧＮは、図１２Ｂに示したように、ＰＢＡの上位側から数えて４ビット目から６ビット目までのビットが示す値に対応する（物理ゾーンの個数が２ｐ個（ｐは整数であり、例えば、ｐ＝３で、８個）で、物理セグメントの個数が２ｓ個（ｓは整数であり、例えば、ｓ＝３で、８個）であるとき、物理セグメント番号は、ＰＢＡの上位側から数えてｐ＋１ビット目からｐ＋ｓビット目までのビットが示す値に対応する）。
【００７３】
＜第２段階の説明＞
その後、８個の物理セグメントの中の少なくとも１個の物理セグメントが、所定の結合レベルに達したときに第２段階に移行する。この所定の結合レベルとしては、物理セグメント内の不良ブロックの個数が所定の個数に達したとき又は物理セグメント内で空きブロックを確保することができなくなったとき等が挙げられる。
【００７４】
図１３は、第２段階におけるＬＺＮ＃０の論理ゾーン内の論理セグメントと、ＰＺＮ＃０の物理ゾーン内の物理セグメントとの対応関係を示している。図１３の（ｂ）に示したように、ＰＺＮ＃０の物理ゾーン内の物理セグメントは８個から４個に減少し、各物理セグメントに含まれている物理ブロックの個数は、１２８個から２５６個に増加する。つまり、第１段階から第２段階に移行するときに、ＰＳＧＮ＃０とＰＳＧＮ＃１の物理セグメント、ＰＳＧＮ＃２とＰＳＧＮ＃３の物理セグメント、ＰＳＧＮ＃４とＰＳＧＮ＃５の物理セグメント及びＰＳＧＮ＃６とＰＳＧＮ＃７の物理セグメントがそれぞれ結合する。この際、不良ブロックの個数が所定の個数に達した物理セグメント又は空きブロックを確保することができなくなった物理セグメントだけを結合させてもよいが（例えば、ＰＳＧＮ＃３の物理セグメントだけが、物理セグメント内の不良ブロックの個数が所定の個数に達したとき又は物理セグメント内で空きブロックを確保することができなくなったときは、ＰＳＧＮ＃２とＰＳＧＮ＃３の物理セグメントの結合だけを行ってもよいが）、管理が煩雑になることを避けるため、結合させる必要のない物理セグメント（ＰＳＧＮ＃２及びＰＳＧＮ＃３以外の物理セグメント）についても同様に結合させている。
【００７５】
ＰＳＧＮ＃０とＰＳＧＮ＃１の物理セグメントを結合させたＰＳＧＮ’＃０の物理セグメントには、ＬＳＧＮ＃０とＬＳＧＮ＃１の論理セグメントが対応付けられる。従って、ＬＳＧＮ＃０の論理セグメントに含まれる１２５個の論理ブロックは、ＰＳＧＮ’＃０の物理セグメントに含まれる２５６個の物理ブロックのいずれかに対応付けることができるようになり、ＬＳＧＮ＃１の論理セグメントに含まれる１２５個の論理ブロックも、ＰＳＧＮ’＃０の物理セグメントに含まれる２５６個の物理ブロックのいずれかに対応付けることができるようになる。同様に、ＰＳＧＮ＃２とＰＳＧＮ＃３の物理セグメントを結合させたＰＳＧＮ’＃１の物理セグメントには、ＬＳＧＮ＃２とＬＳＧＮ＃３の論理セグメントが対応付けられる。ＰＳＧＮ＃４とＰＳＧＮ＃５の物理セグメントを結合させたＰＳＧＮ’＃２の物理セグメントには、ＬＳＧＮ＃４とＬＳＧＮ＃５の論理セグメントが対応付けられる。ＰＳＧＮ＃６とＰＳＧＮ＃７の物理セグメントを結合させたＰＳＧＮ’＃３の物理セグメントには、ＬＳＧＮ＃６とＬＳＧＮ＃７の論理セグメントが対応付けられる。
【００７６】
つまり、第２段階では、ＧＮ（グループ番号）＃０に対応する２個の論理セグメント（ＬＳＧＮ＃０とＬＳＧＮ＃１の論理セグメント）がＰＳＧＮ’＃０の物理セグメントに対応付けられ、ＧＮ（グループ番号）＃１に対応する２個の論理セグメント（ＬＳＧＮ＃２とＬＳＧＮ＃３の論理セグメント）がＰＳＧＮ’＃１の物理セグメントに対応付けられ、ＧＮ（グループ番号）＃２に対応する２個の論理セグメント（ＬＳＧＮ＃４とＬＳＧＮ＃５の論理セグメント）がＰＳＧＮ’＃２の物理セグメントに対応付けられ、ＧＮ（グループ番号）＃３に対応する２個の論理セグメント（ＬＳＧＮ＃６とＬＳＧＮ＃７の論理セグメント）がＰＳＧＮ’＃３の物理セグメントに対応付けられる。ここで、ＧＮ（グループ番号）は、図１４Ａに示したように、ＬＢＮの下位側から数えて５ビット目から６ビット目までのビットが示す値に対応する。ＰＳＧＮ’は、図１４Ｂに示したように、ＰＢＡの上位側から数えて４ビット目から５ビット目までのビットが示す値に対応する。
【００７７】
＜第３段階の説明＞
第２段階に移行した後、４個の物理セグメントの中の少なくとも１個の物理セグメントが、所定の結合レベルに達したときに第３段階に移行する。この所定の結合レベルとしては、物理セグメント内の不良ブロックの個数が所定の個数に達したとき又は物理セグメント内で空きブロックを確保することができなくなったとき等が挙げられる。
【００７８】
図１５は、第３段階におけるＬＺＮ＃０の論理ゾーン内の論理セグメントと、ＰＺＮ＃０の物理ゾーン内の物理セグメントとの対応関係を示している。図１５の（ｂ）に示したように、ＰＺＮ＃０の物理ゾーン内の物理セグメントは４個から２個に減少し、各物理セグメントに含まれている物理ブロックの個数は、２５６個から５１２個に増加する。つまり、第２段階から第３段階に移行するときに、ＰＳＧＮ’＃０とＰＳＧＮ’＃１の物理セグメント、ＰＳＧＮ’＃２とＰＳＧＮ’＃３の物理セグメントがそれぞれ結合する。この際、上述のように不良ブロックの個数が所定の個数に達した物理セグメント又は空きブロックを確保することができなくなった物理セグメントだけを結合させてもよいが、管理が煩雑になることを避けるため、結合させる必要のない物理セグメントについても同様に結合させている。
【００７９】
ＰＳＧＮ’＃０とＰＳＧＮ’＃１の物理セグメントを結合させたＰＳＧＮ”＃０の物理セグメント（ＰＳＧＮ＃０〜＃３の物理セグメントを結合させた物理セグメント）には、ＬＳＧＮ＃０〜＃３の論理セグメントが対応付けられる。従って、ＬＳＧＮ＃０の論理セグメントに含まれる１２５個の論理ブロックは、ＰＳＧＮ”＃０の物理セグメントに含まれる５１２個の物理ブロックのいずれかに対応付けることができるようになり、ＬＳＧＮ＃１〜＃３の各論理セグメントに含まれる１２５個の論理ブロックについても、ＰＳＧＮ”＃０の物理セグメントに含まれる５１２個の物理ブロックのいずれかに対応付けることができるようになる。同様に、ＰＳＧＮ’＃２とＰＳＧＮ’＃３の物理セグメントを結合させたＰＳＧＮ”＃１の物理セグメント（ＰＳＧＮ＃４〜＃７の物理セグメントを結合させた物理セグメント）には、ＬＳＧＮ＃４〜＃７の論理セグメントが対応付けられる。
【００８０】
つまり、第３段階では、ＧＮ’（グループ番号）＃０に対応する４個の論理セグメント（ＬＳＧＮ＃０〜＃３の論理セグメント）がＰＳＧＮ”＃０の物理セグメントに対応付けられ、ＧＮ’（グループ番号）＃１に対応する４個の論理セグメント（ＬＳＧＮ＃４〜＃７の論理セグメント）がＰＳＧＮ”＃１の物理セグメントに対応付けられる。ここで、ＧＮ’（グループ番号）は、図１６Ａに示したように、ＬＢＮの下位側から数えて６ビット目のビットが示す値に対応する。ＰＳＧＮ’は、図１４Ｂに示したように、ＰＢＡの上位側から数えて４ビット目のビットが示す値に対応する。
【００８１】
＜所定の結合レベルの説明＞
各物理セグメントに含まれる物理ブロックの個数は、その物理セグメントに対応付けられている論理セグメントに含まれる論理ブロックの個数よりも多くなるように設定されている。従って、各物理セグメントに含まれる物理ブロックの個数から先天性及び後天性の不良ブロックの個数を差し引いた有効ブロックの個数が、その物理セグメントに対応付けられている論理セグメントに含まれる論理ブロックの個数よりも多ければ、その物理セグメント内で空きブロックを確保することができなくなることはない。
【００８２】
又、各物理セグメントに含まれる有効ブロックの個数が、その物理セグメントに対応付けられている論理セグメントに含まれる論理ブロックの個数以下になっても、使用されている物理ブロック（データが記憶されている物理ブロック）が少なければ、その物理セグメント内で空きブロックを確保することができなくなることはない。つまり、各物理セグメントに含まれる有効ブロックの個数が、その物理セグメントに対応付けられている論理セグメントに含まれる論理ブロックの個数以下になった場合でも、複数個の物理セグメントを結合させる必要のない場合もある。
【００８３】
これらのことを考慮すれば、各物理セグメントに含まれる有効ブロックの個数が、その物理セグメントに対応付けられている論理セグメントに含まれる論理ブロックの個数以下になったときに、その物理セグメントを含む複数の物理セグメントを結合させてもよいが、その物理セグメント内で空きブロックを確保することができなくなるのを待って、複数の物理セグメントを結合させるようにしてもよい。
【００８４】
図１７は、メモリコントローラ３が作成するアドレス変換テーブルの構成例を示す。
【００８５】
メモリコントローラ３は、上述したどの段階においても、或る論理セグメントに関わる所定のイベントが発生した時（例えば、その論理セグメント内の論理ブロックに対するデータ書込み要求をホストシステム４から受けた時）、その論理セグメントに対応付けられている物理セグメントのアドレス変換テーブルを、次のようにして作成する。すなわち、メモリコントローラ３は、その論理セグメントに対応する物理セグメント内の全ての物理ブロックをスキャンして、それぞれの物理ブロックの冗長領域（例えば、それぞれの物理ブロックの先頭ページの冗長領域）２６に記憶された付加データ（論理アドレス情報及びブロックステータスなど）を読む。そして、メモリコントローラ３は、その物理セグメントについての図１７に示すようなアドレス変換テーブルを、その物理セグメント内のそれぞれの物理ブロックから読み出した論理アドレス情報に基づいて作成する。
【００８６】
ここで、論理アドレス情報としては、論理ブロックを特定することのできる情報、例えば、ＬＢＮ、ＬＺＩＢＮを用いることができるが、情報量の少ないＬＺＩＢＮを用いることが好ましい。尚、ＬＺＩＢＮは、論理ゾーンに含まれる論理ブロックに付与された通し番号なので、物理ゾーン内の全ての物理セグメントが結合された場合であっても、各物理ブロックの冗長領域に、論理アドレス情報として書き込まれているＬＺＩＢＮに基づいて、各物理ブロックに対応する論理ブロックを特定することができる。仮に、論理アドレス情報として、論理セグメントに含まれる論理ブロックに付与した通し番号を用いるようにした場合には、物理セグメントを結合するときに論理アドレス情報を書き換えなければ、番号が重複して各物理ブロックに対応する論理ブロックを特定することができなくなってしまう。
【００８７】
このアドレス変換テーブルには、例えば、図１７に示すように、論理セグメントに含まれる各論理ブロックのＬＺＩＢＮと、各論理ブロックに対応する物理ブロックのＰＺＩＢＮとが、互いに関連付けられた形で記載される。ここで、論理ブロックに対応する物理ブロックが無い場合、つまり、その論理ブロックに対応するデータがいずれの物理ブロックにも書き込まれていない場合には、その旨を示す情報（図１７に示した「無」）がその論理ブロックに関連付けられた形で記載される。例えば、ＬＺＩＢＮ＃２４の論理ブロックに対応するデータは、いずれの物理ブロックにも書き込まれていない。
【００８８】
メモリコントローラ３は、データの書込み又は読み出しを行う時、上記のようなアドレスレス変換テーブルに記述された論理ブロックと物理ブロックの対応関係に基づいて、論理アドレスを物理アドレスに変換する。空きブロックに対するデータの書込みを行った場合には、そのデータに対応する論理ブロックと物理ブロックの対応関係が変わるので、アドレス変換テーブルを更新する。
【００８９】
アドレス変換テーブルは物理セグメントを単位として作成されるから、物理セグメントのサイズが小さいほど、アドレス変換テーブルの作成の処理負担は小さく、メモリアクセスは短時間で終わる。このことを考慮して、第１段階では、物理セグメントのサイズが最小になっている。第１段階で動作することができなくなった場合、つまり、空きブロックを確保することができなくった場合は、第２段階に移行し、更に、第２段階で動作することができなくなった場合は、第３段階に移行する。このように次段階に移行していくことにより、物理セグメントのサイズが段階的に大きくなるから、アドレス変換テーブルの作成の処理負担は増大するが、動作不能になることは回避される。このように、アドレス変換テーブルの作成の処理負担を軽くする要求と、動作不能になることを回避する要求とは、トレードオフの関係にある。本実施形態によれば、動作不能になることを回避するという要求を満たせる範囲内で、アドレス変換テーブルの作成の処理負担をできるだけ軽くするように、物理セグメントのサイズが段階的に調整される。
【００９０】
尚、第２段階で動作することができなくなった場合は、物理ゾーン内の物理セグメントは無くなり、物理ゾーン単位でアドレス変換テーブルが作成される。
【００９１】
メモリコントローラ３は、上述したように或る物理セグメント内の全ての物理ブロックの付加データ（論理アドレス情報及びブロックステータスなど）を読み出したとき、アドレス変換テーブルを作成するだけでなく、それぞれの物理ブロックのブロックステータスに基づいて、その物理セグメント内の不良ブロックの個数を把握し、そして、その物理セグメントがもつ空きブロック確保能力のレベル（典型的には、確保できる空きブロックの個数）を把握する。そして、メモリコントローラ３は、把握された空きブロック確保能力のレベルに基づいて、その物理セグメントが通常使用可能か否か（又は、通常使用不能になる可能性が高いか否か）を判断する。この判断の具体的な方法として、例えば次の方法が採用できる。
【００９２】
すなわち、各段階で１個の物理セグメントに割り当てられる論理ブロックの個数をｍ（例えば、第１段階では１２５、第２段階では２５０、第３段階では５００）とし、各段階で１個の物理セグメントに含まれる物理ブロックの個数をｎ（例えば、第１段階では１２８、第２段階では２５６、第３段階では５１２）とし、予め設定された予備の物理ブロックの最低許容個数をｋ（例えば１）としたとき、その物理ブロック内の不良ブロックの個数が「ｎ−ｍ−ｋ」個（所定閾値）より多くなったとき、その物理セグメントは通常使用不能（又は、通常使用不能になる可能性が高い）との判断が下され、複数セグメントの結合が行われる。
【００９３】
上記の判断方法は、それぞれの物理ブロックが空きか否か（つまり、データが記憶されているか否か、換言すれば、未使用か否か）が考慮されてないが、別法として、それを考慮に入れることもできる。すなわち、その論理セグメント内の空き（未使用の）論理ブロックの個数が０個になったときに、複数セグメントの結合を行うようにしてもよい。
【００９４】
さて、上述した第１の実施形態では、個々の物理ゾーンを複数の物理セグメントに分割し、物理セグメント単位でアドレス変換テーブルを作成するとともに、不良ブロック数が増えると、複数の物理セグメントを結合してより大きい物理セグメントにするという制御が行われた。変形例として、このような物理セグメントに関して行われる制御に代えて、物理ゾーンに対しても同様の制御を行なうようにしてもよい。
【００９５】
そのような制御を物理ゾーンに対して行なうようにした本発明に従う第２の実施形態について、次に説明する。
【００９６】
この第２の実施形態では、物理ゾーン内を物理セグメントに分割せずに、物理ゾーン単位でアドレス変換テーブルを作成する。また、初期段階では、物理ゾーンのサイズが最小になっており、物理ゾーン内で空きブロックを確保することができなくった場合は、複数個の物理ゾーンを結合させて次段階に移行する。
【００９７】
以下に説明する第２の実施形態では、第１段階（初期段階）のときに６４個の物理ゾーンが有り、各物理ゾーンには１２８個の物理ブロックが含まれている。第１段階（初期段階）から第２段階に移行するときに、物理ゾーンの個数が６４個から３２個に減少し、各物理ゾーンに含まれる物理ブロックの個数は１２８個から２５６個に増加する。第２段階から第３段階に移行するときに、物理ゾーンの個数が３２個から１６個に減少し、各物理ゾーンに含まれる物理ブロックの個数は２５６個から５１２個に増加する。
【００９８】
論理ゾーンの個数は、第１段階（初期段階）のときの物理ゾーンの個数と同じ６４個であり、各論理ゾーンには１２５個の論理ブロックが含まれている。第１段階（初期段階）では、１個の物理ゾーンに対して１個の論理ゾーンが対応付けられ、第２段階では、１個の物理ゾーンに対して２個の論理ゾーンが対応付けられ、第３段階では、１個の物理ゾーンに対して４個の論理ゾーンが対応付けられる。
【００９９】
＜第１段階の説明＞
図１８は、第１段階における物理ゾーンと論理ゾーンのとの対応関係を示している（図１８には、ＬＺＮ＃０〜＃７の論理ゾーンと、これらの論理ゾーンに対応付けられる物理ゾーンだけが示されている）。
【０１００】
図１８に示したように、１２８個の物理ブロックが含まれる１個の物理ゾーンには、１２５個の論理ブロックが含まれる１個の論理ゾーンが対応付けられている。例えば、ＰＺＮ＃０の物理ゾーンにはＬＺＮ＃０の論理ゾーンが対応付けられ、ＰＺＮ＃１の物理ゾーンにはＬＺＮ＃１の論理ゾーンが対応付けられ、ＰＺＮ＃２の物理ゾーンにはＬＺＮ＃２の論理ゾーンが対応付けられている。
【０１０１】
図１８の（ａ）に示したように、論理アドレス空間は、第１の実施形態の場合と同様に、連続するＬＢＮをもつ論理ブロックが、異なる論理ゾーンに分散するように振り分けられている。第２の実施形態では、論理ゾーンの個数が２６個（６４個）なので、ＬＢＮの下位６ビットの値に基づいて論理ブロックの振り分けが行われる。つまり、図１９Ａに示したように、ＬＢＮの下位６ビットが振り分け先の論理ゾーンのＬＺＮに対応する。
【０１０２】
図１８の（ｂ）に示したように、物理アドレス空間は、２６個（６４個）の物理ゾーンに分割され、各物理ゾーンにはＰＢＡが連続する２７個（１２８個）の物理ブロックが含まれている。つまり、図１９Ｂに示したように、ＰＢＡの下位７ビットを除いた上位ビット、つまり、ＰＢＡの上位６ビットが、各物理ブロックが含まれる物理ゾーンのＰＺＮに対応している。
【０１０３】
＜第２段階の説明＞
その後、少なくとも１個の物理ゾーンが、所定の結合レベルに達したときに第２段階に移行する。この所定の結合レベルとしては、物理ゾーン内の不良ブロックの個数が所定の個数に達したとき又は物理セグメント内で空きブロックを確保することができなくなったとき等が挙げられる。
【０１０４】
図２０は、第２段階における物理ゾーンと論理ゾーンのとの対応関係を示している（図２０には、ＬＺＮ＃０〜＃７の論理ゾーンと、これらの論理ゾーンに対応付けられる物理ゾーンだけが示されている）。
【０１０５】
第１段階から第２段階に移行するときに、物理ゾーンが２個ずつ結合されるため、物理ゾーンの個数は２５個（３２個）になり、各物理ゾーンに含まれる物理ブロックの個数は２８個（２５６個）個になる。
【０１０６】
第２段階では、１個の物理ゾーンに対して２個の物理ゾーンが対応付けられる。例えば、ＰＺＮ＃０とＰＺＮ＃１の物理ゾーンを結合させたＰＺＮ’＃０の物理ゾーンには、ＧＮ（グループ番号）＃０に対応するＬＺＮ＃０とＬＺＮ＃１の論理ゾーンが対応付けられ、ＰＺＮ＃２とＰＺＮ＃３の物理ゾーンを結合させたＰＺＮ’＃１の物理ゾーンには、ＧＮ（グループ番号）＃１に対応するＬＺＮ＃２とＬＺＮ＃３の論理ゾーンが対応付けられる。
【０１０７】
ここで、ＧＮ（グループ番号）は、図２１Ａに示したように、ＬＺＮの上位５ビット、つまり、ＬＢＮの下位側から数えて２ビット目から６ビット目までのビットが示す値に対応する。ＰＺＮ’は、図２１Ｂに示したように、ＰＢＡの下位８ビットを除いた上位ビット、つまり、ＰＢＡの上位５ビットが示す値に対応する。
【０１０８】
＜第３段階の説明＞
第２段階に移行後、少なくとも１個の物理ゾーンが、所定の結合レベルに達したときに第３段階に移行する。この所定の結合レベルとしては、物理ゾーン内の不良ブロックの個数が所定の個数に達したとき又は物理セグメント内で空きブロックを確保することができなくなったとき等が挙げられる。
【０１０９】
図２２は、第３段階における物理ゾーンと論理ゾーンのとの対応関係を示している（図２２には、ＬＺＮ＃０〜＃７の論理ゾーンと、これらの論理ゾーンに対応付けられる物理ゾーンだけが示されている）。
【０１１０】
第２段階から第３段階に移行するときに、物理ゾーンが２個ずつ結合されるため、物理ゾーンの個数は２４個（１６個）になり、各物理ゾーンに含まれる物理ブロックの個数は２９個（５１２個）個になる。
【０１１１】
第３段階では、１個の物理ゾーンに対して４個の物理ゾーンが対応付けられる。例えば、ＰＺＮ’＃０とＰＺＮ’＃１の物理ゾーンを結合させたＰＺＮ”＃０の物理ゾーン（ＰＺＮ＃０〜＃３の物理ゾーンを結合させたＰＺＮ”＃０の物理ゾーン）には、ＧＮ’（グループ番号）＃０に対応するＬＺＮ＃０〜＃３の論理ゾーンが対応付けられ、ＰＺＮ’＃２とＰＺＮ’＃３の物理ゾーンを結合させたＰＺＮ”＃１の物理ゾーン（ＰＺＮ＃４〜＃７の物理ゾーンを結合させたＰＺＮ”＃１の物理ゾーン）には、ＧＮ’（グループ番号）＃１に対応するＬＺＮ＃４〜＃７の論理ゾーンが対応付けられる。
【０１１２】
ここで、ＧＮ’（グループ番号）は、図２３Ａに示したように、ＬＺＮの上位４ビット、つまり、ＬＢＮの下位側から数えて３ビット目から６ビット目までのビットが示す値に対応する。ＰＺＮ”は、図２３Ｂに示したように、ＰＢＡの下位９ビットを除いた上位ビット、つまり、ＰＢＡの上位４ビットが示す値に対応する。
【０１１３】
尚、ＬＺＩＢＮは各論理ゾーン内での通し番号なので、論理アドレス情報としてＬＺＩＢＮを用いた場合、同じ物理ゾーンに複数個の論理ゾーンが対応つけられたときに、物理ゾーンに含まれる物理ブロックと対応する論理ブロックが、いずれの論理ゾーンに含まれる論理ブロックであるかを判別するこができなくなってしまう。従って、同じ物理ゾーンに対応つけられ可能性のある複数個の論理ゾーンに含まれる論理ブロックに、重複しない通し番号（以下、ＬＢＩ（論理ブロックインデックス）と言う）を付与し、付与したＬＢＩを論理アドレス情報として用いることが好ましい。この第２の実施形態の場合には、例えば、ＬＢＮの上位７ビットにＬＢＮの下位２ビットを連結したものを、ＬＢＩとすればよい。
【０１１４】
尚、本発明の第１の実施形態及び第２の実施形態で説明したように、各段階で１個のアドレス変換テーブルによってカバーされる領域が異なっている。つまり、第１の実施形態では、各段階で物理セグメントのサイズ（物理セグメントに含まれる物理ブロックの個数）が異なり、第２の実施形態では、各段階で物理ゾーンのサイズ（物理ゾーンに含まれる物理ブロックの個数）が異なる。従って、現在、どの段階で動作しているかを示す情報（以下、物理アドレス空間管理情報という）、をフラッシュメモリ内の特定の物理ブロックに記憶しておくことが好ましい。そして、次段階に移行したときは、この物理アドレス空間管理情報を書き換えるようにすればよい。第１の実施形態の場合は、例えば、物理ゾーン内の物理セグメントの個数を物理アドレス空間管理情報として記憶しておけばよい。第２の実施形態の場合は、例えば、物理ゾーンの個数を物理アドレス空間管理情報として記憶しておけばよい。
【０１１５】
以上、本発明の２つの実施形態について説明したが、これらは本発明の説明のための例示であり、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。従って、本発明は、その要旨を逸脱することなく、上述した実施形態以外の態様でも実施することが可能である。
【図面の簡単な説明】
【０１１６】
【図１】本発明の第一の実施形態に従うフラッシュメモリシステム１の全体構成を示すブロック図。
【図２】フラッシュメモリ２内のメモリセルアレイの物理アドレス空間の構成を示す図。
【図３】メモリコントローラ３とホストシステム４とが共有する論理アドレス空間における論理ゾーンと論理ブロックの構成を示す図。
【図４】ＬＢＡ（論理ブロックアドレス）のビット構造を示す図。
【図５】論理ゾーンと物理ゾーン及び物理ブロックの対応関係を示す。
【図６】ＰＢＮ（物理ブロック番号）のビット構造を示す図。
【図７】個々の物理ブロックの構成を示す図。
【図８】ＬＳＮとＰＳＮのビット構造を示す図。
【図９】論理アドレス空間上で定義される論理セグメントの構成を示すブロック図。
【図１０】第１段階から第３段階におけるＬＢＮのビット構造を示す図。
【図１１】第１段階における論理セグメントと物理セグメントとの対応関係を示す図。
【図１２】第１段階におけるＬＢＮとＰＢＡのビット構造を示す図。
【図１３】第２段階における論理セグメントと物理セグメントとの対応関係を示す図。
【図１４】第２段階におけるＬＢＮとＰＢＡのビット構造を示す図。
【図１５】第３段階における論理セグメントと物理セグメントとの対応関係を示す図。
【図１６】第３段階におけるＬＢＮとＰＢＡのビット構造を示す図。
【図１７】メモリコントローラ３が作成するアドレス変換テーブルの構成例を示す図。
【図１８】第１段階における論理ゾーンと物理ゾーンとの対応関係を示す図。
【図１９】第１段階におけるＬＢＮとＰＢＡのビット構造を示す図。
【図２０】第２段階における論理ゾーンと物理ゾーンとの対応関係を示す図。
【図２１】第２段階におけるＬＢＮとＰＢＡのビット構造を示す図。
【図２２】第３段階における論理ゾーンと物理ゾーンとの対応関係を示す図。
【図２３】第３段階におけるＬＢＮとＰＢＡのビット構造を示す図。
【符号の説明】
【０１１７】
１      フラッシュメモリシステム
２      フラッシュメモリ
３      メモリコントローラ
４      ホストシステム
６      マイクロプロセッサ
７      ホストインターフェースブロック
８      ワークエリア
９      バッファ
１０    フラッシュメモリインターフェースブロック
１３    外部バス
１４    内部バス
２５    ユーザ領域
２６    冗長領域
３１    単位領域管理部
３２    アドレス管理部
３３    物理領域結合部
【図１】
2008226188.tif 000003
【図２】
2008226188.tif 000004
【図３】
2008226188.tif 000005
【図４】
2008226188.tif 000006
【図５】
2008226188.tif 000007
【図６】
2008226188.tif 000008
【図７】
2008226188.tif 000009
【図８】
2008226188.tif 000010
【図９】
2008226188.tif 000011
【図１０】
2008226188.tif 000012
【図１１】
2008226188.tif 000013
【図１２】
2008226188.tif 000014
【図１３】
2008226188.tif 000015
【図１４】
2008226188.tif 000016
【図１５】
2008226188.tif 000017
【図１６】
2008226188.tif 000018
【図１７】
2008226188.tif 000019
【図１８】
2008226188.tif 000020
【図１９】
2008226188.tif 000021
【図２０】
2008226188.tif 000022
【図２１】
2008226188.tif 000023
【図２２】
2008226188.tif 000024
【図２３】
2008226188.tif 000025