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