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