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