(57)【要約】【課題】  仮想ブロックを用いてフラッシュメモリへのアクセススピードを高速化しつつ、フラッシュメモリ内の一部の記憶領域にアクセスが集中することを回避できるメモリコントローラを提供する。【解決手段】  メモリコントローラ３は、論理ブロック単位で複数の論理ゾーンに論理アドレスが連続する複数セクタの領域を振り分ける。また、フラッシュメモリチップ２−０，２−１内の複数個の物理ゾーンを関連付け、関連付けられた複数個の物理ゾーンに論理ゾーンを割り当てる。このような設定の下、関連付けられた複数個の物理ゾーンから１個ずつ選択された複数個の物理ブロックを、仮想的に結合することにより仮想ブロックを形成する。この仮想ブロック対して論理ブロックを割り当てる。尚、論理ブロックに含まれる領域の容量は、仮想ブロックに含まれるユーザ領域の容量と一致させる。【選択図】図２
2008243156.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられるセクタ単位の論理アドレスに基づいて、物理ブロック単位で記憶データの消去が行われる複数個のフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記論理アドレスが連続する複数セクタの領域を含む論理ブロックを形成し、該論理ブロック単位で複数個の論理ゾーンに前記論理アドレスが連続する複数セクタの領域を振り分ける論理アドレス振り分け手段と、
同じ前記フラッシュメモリ内の複数個の物理ブロックで構成された物理ゾーンを、それぞれの前記フラッシュメモリ内に複数個形成し、互いに異なる前記フラッシュメモリ内の複数個の物理ブロックで構成された複数個の前記物理ゾーンを関連付ける物理ゾーン管理手段と、
前記関連付けられた複数個の前記物理ゾーンに対して、１個の前記論理ゾーンを割り当てる論理ゾーン割り当て手段と、
前記関連付けられた複数個の前記物理ゾーンから各１個ずつ選択された複数個の物理ブロックを仮想的に結合した仮想ブロックを形成する仮想ブロック形成手段と、
前記仮想ブロックに対して、該仮想ブロックを構成する各物理ブロックが属する複数個の前記物理ゾーンに割り当てられた前記論理ゾーンに属する論理ブロックを割り当てる論理ブロック割り当て手段とを備え、
前記論理ブロックに含まれる領域の容量と前記仮想ブロックに含まれるユーザ領域の容量とが等しいことを特徴とするメモリコントローラ。
【請求項２】
前記論理ゾーンの個数と前記仮想ブロックを構成する物理ブロックの個数が共に２のべき乗で与えられる値であり、
前記仮想ブロックを構成する各物理ブロックに含まれるユーザ領域のセクタ数が２のべき乗で与えられる値であることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記論理ゾーンの個数が２ｍ個で前記仮想ブロックに含まれるユーザ領域の容量が２ｎセクタであり、
論理アドレスの下位側から数えてｎ＋１ビット目からｍ＋ｎビット目までの値が同一のセクタ単位の領域が、同じ前記論理ゾーンに振り分けられることを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
物理ブロック単位で記憶データの消去が行われる複数個のフラッシュメモリと、請求項１乃至３のいずれか１項に記載のメモリコントローラを備えることを特徴とするフラッシュメモリシステム。
【請求項５】
ホストシステムから与えられるセクタ単位の論理アドレスに基づいて、物理ブロック単位で記憶データの消去が行われる複数個のフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
前記論理アドレスが連続する複数セクタの領域を含む論理ブロックを形成し、該論理ブロック単位で複数個の論理ゾーンに前記論理アドレスが連続する複数セクタの領域を振り分ける論理アドレス振り分けステップと、
同じ前記フラッシュメモリ内の複数個の物理ブロックで構成された物理ゾーンを、それぞれの前記フラッシュメモリ内に複数個形成し、互いに異なる前記フラッシュメモリ内の物理ブロックで構成された複数個の前記物理ゾーンを関連付け、該関連付けられた複数個の前記物理ゾーンに対して、１個の前記論理ゾーンを割り当てる論理ゾーン割り当てステップと、
前記関連付けられた複数個の前記物理ゾーンから各１個ずつ選択された複数個の物理ブロックを仮想的に結合した仮想ブロックを形成し、該仮想ブロックに対して、該仮想ブロックを構成する各物理ブロックが属する複数個の前記物理ゾーンに割り当てられた前記論理ゾーンに属する論理ブロックを割り当てる論理ブロック割り当てステップとを有し、
前記論理ブロックに含まれる領域の容量と前記仮想ブロックに含まれるユーザ領域の容量が等しいことを特徴とするフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
従来、データの物理的な読み書きの単位であるページを所定数含んだ、データ消去の単位である物理ブロックによって構成されている複数個のフラッシュメモリチップに対するアクセスにおいて、互いに異なるフラッシュメモリチップ内の複数個の物理ブロックを仮想的に結合した仮想ブロックを形成してアクセスする方法が知られている（例えば、特許文献１参照）。この仮想ブロックを形成したアクセスでは、異なるフラッシュメモリチップ内の物理ブロックが並行してアクセスされるため、アクセススピードが高速になる。
【０００３】
また、大容量化したフラッシュメモリチップ内の記憶領域を円滑に管理するため、フラッシュメモリチップ内の記憶領域を複数の物理ゾーンに分割して管理する方法が用いられている（例えば、特許文献２参照）。各物理ゾーンは、複数の物理ブロックで構成されている。そして、各物理ゾーンには固有の物理ゾーン番号（ＰＺＮ）が、各物理ブロックには固有の物理ブロックアドレス（ＰＢＡ）が割り当てられている。
【０００４】
一方、セクタ（５１２バイト）単位の領域につけた通し番号であるＬＢＡ（Logical Block Address）で管理されているホストシステム側のアドレス空間も複数の論理ゾーンに分割して管理されている。各論理ゾーンに含まれる複数セクタの領域内では、ＬＢＡが連続している。更に、各論理ゾーン内は複数の論理ブロックに分割して管理されている。そして、各論理ゾーンには論理ゾーン番号（ＬＺＮ）が、各論理ブロックには論理ブロック番号（ＬＢＮ）が割り当てられている。
【０００５】
この管理方法では、物理ゾーンに対して論理ゾーンが１対１の対応関係で割り当てられ、対応関係にある物理ゾーンと論理ゾーンとの間で、物理ゾーンに含まれる物理ブロックと論理ゾーンに含まれる論理ブロックとの対応関係が管理される。
【特許文献１】国際公開第ＷＯ２００２／０４６９２９号パンフレット
【特許文献２】２００５−１８４９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＬＢＡが特定の範囲の領域（例えば、ファイルアロケーションテーブルが格納される領域等）にデータの書込みや書換えが集中すると、その領域が属する論理ゾーンに対応する物理ゾーンに含まれる物理ブロックに書き込みが集中する。フラッシュメモリは、消去回数が多くなると、不良ブロック化する可能性が高くなるため、上述のように、特定の物理ブロックに書き込みが集中すると不良ブロックが発生しやすくなるという問題があった。
【０００７】
かかる実情に鑑み、本発明は、仮想ブロックを用いてフラッシュメモリへのアクセススピードを高速化し、フラッシュメモリ内の一部の記憶領域にアクセスが集中することを回避できるメモリコントローラ及びメモリコントローラの制御方法を提供する。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明のメモリコントローラは、ホストシステムから与えられるセクタ単位の論理アドレスに基づいて、物理ブロック単位で記憶データの消去が行われる複数個のフラッシュメモリに対するアクセスを制御するメモリコントローラであって、前記論理アドレスが連続する複数セクタの領域を含む論理ブロックを形成し、該論理ブロック単位で複数個の論理ゾーンに前記論理アドレスが連続する複数セクタの領域を振り分ける論理アドレス振り分け手段と、同じ前記フラッシュメモリ内の複数個の物理ブロックで構成された物理ゾーンを、それぞれの前記フラッシュメモリ内に複数個形成し、互いに異なる前記フラッシュメモリ内の複数個の物理ブロックで構成された複数個の前記物理ゾーンを関連付ける物理ゾーン管理手段と、前記関連付けられた複数個の前記物理ゾーンに対して、１個の前記論理ゾーンを割り当てる論理ゾーン割り当て手段と、前記関連付けられた複数個の前記物理ゾーンから各１個ずつ選択された複数個の物理ブロックを仮想的に結合した仮想ブロックを形成する仮想ブロック形成手段と、前記仮想ブロックに対して、該仮想ブロックを構成する各物理ブロックが属する複数個の前記物理ゾーンに割り当てられた前記論理ゾーンに属する論理ブロックを割り当てる論理ブロック割り当て手段とを備え、前記論理ブロックに含まれる領域の容量と前記仮想ブロックに含まれるユーザ領域の容量とが等しいことを特徴とする。
【０００９】
また、アクセスが集中する領域が、振り分け単位である論理ブロックに含まれる領域より十分に広ければ、アクセスが特定の領域に集中しても、そのアクセスは各物理ゾーンに含まれる物理ブロックに対するアクセスに分散される。更に、論理ブロックに含まれる領域の容量と仮想ブロックに含まれるユーザ領域の容量とが等しいため、各仮想ブロックに割り当てられる領域の論理アドレスは連続したアドレスになる。
【００１０】
また、仮想ブロック形成手段が仮想ブロックを形成しているため、異なるフラッシュメモリに並行してアクセスすることができるようになり、アクセススピードが高速になる。
【００１１】
尚、前記論理ゾーンの個数と前記仮想ブロックを構成する物理ブロックの個数が共に２のべき乗で与えられる値であることが好ましい。
【００１２】
論理ブロックに含まれる領域の容量と仮想ブロックに含まれるユーザ領域の容量とが等しいため、論理ブロックに含まれる領域のセクタ数も２のべき乗で与えられる値となる。従って、論理アドレスの特定のビットを参照することによって、論理ブロックの属する論理ゾーンを特定することができる。
【００１３】
また、前記論理ゾーンの個数が２ｍ個で前記仮想ブロックに含まれるユーザ領域の容量が２ｎセクタであり、論理アドレスの下位側から数えてｎ＋１ビット目からｍ＋ｎビット目までの値が同一のセクタ単位の領域が、同じ前記論理ゾーンに振り分が好ましい。
【００１４】
本発明のフラッシュメモリの制御方法は、物理ブロック単位で記憶データの消去が行われる複数個のフラッシュメモリと、上記のメモリコントローラを備えることを特徴とする。
【００１５】
本発明のフラッシュメモリの制御方法は、ホストシステムから与えられるセクタ単位の論理アドレスに基づいて、物理ブロック単位で記憶データの消去が行われる複数個のフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、前記論理アドレスが連続する複数セクタの領域を含む論理ブロックを形成し、該論理ブロック単位で複数個の論理ゾーンに前記論理アドレスが連続する複数セクタの領域を振り分ける論理アドレス振り分けステップと、同じ前記フラッシュメモリ内の複数個の物理ブロックで構成された物理ゾーンを、それぞれの前記フラッシュメモリ内に複数個形成し、互いに異なる前記フラッシュメモリ内の物理ブロックで構成された複数個の前記物理ゾーンを関連付け、該関連付けられた複数個の前記物理ゾーンに対して、１個の前記論理ゾーンを割り当てる論理ゾーン割り当てステップと、前記関連付けられた複数個の前記物理ゾーンから各１個ずつ選択された複数個の物理ブロックを仮想的に結合した仮想ブロックを形成し、該仮想ブロックに対して、該仮想ブロックを構成する各物理ブロックが属する複数個の前記物理ゾーンに割り当てられた前記論理ゾーンに属する論理ブロックを割り当てる論理ブロック割り当てステップとを有し、前記論理ブロックに含まれる領域の容量と前記仮想ブロックに含まれるユーザ領域の容量が等しいことを特徴とする。
【００１６】
論理ブロックに含まれる領域の容量と仮想ブロックに含まれるユーザ領域の容量とが等しいため、各仮想ブロックに割り当てられる領域の論理アドレスは連続したアドレスになる。また、アクセスが集中する領域が、振り分け単位である論理ブロックに含まれる領域より十分に広ければ、アクセスが特定の領域に集中しても、そのアクセスは各物理ゾーンに含まれる物理ブロックに対するアクセスに分散される。また、仮想ブロックを形成しているため、異なるフラッシュメモリに並行してアクセスすることができるようになり、アクセススピードが高速になる。
【発明の効果】
【００１７】
本発明のメモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法によれば、論理ブロックに含まれる領域の容量と仮想ブロックに含まれるユーザ領域の容量とが等しくなるように設定し、このように設定した論理ブロック単位で、ＬＢＡが連続する領域を各論理ゾーンに振り分けている。このように、論理ブロック単位で、論理アドレスが連続する複数セクタの領域を振り分けているため、アクセスが集中する領域が、振り分け単位である論理ブロックに含まれる領域より十分に広ければ、アクセスが特定の領域に集中しても、そのアクセスは各物理ゾーンに含まれる物理ブロックに対するアクセスに分散される。また、振り分け単位である論理ブロックに含まれる領域の容量を、仮想ブロックに含まれるユーザ領域の容量と等しくしているので、各仮想ブロックにはＬＢＡが連続する領域が割り当てられ、アドレス管理が煩雑にならない。さらに、仮想ブロックを形成しているため、異なるフラッシュメモリに並行してアクセスすることができるようになり、アクセススピードが高速になる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態を、図面を参照しながら説明する。図１は、本発明に係るフラッシュメモリシステム１を概略的に示すブロック図である。図１に示すように、フラッシュメモリシステム１は、２つのフラッシュメモリチップ２−０，２−１とから成るフラッシュメモリ２と、それを制御するメモリコントローラ３とで構成されている。
【００１９】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００２０】
メモリコントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインタフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインタフェースブロック１０と、ＥＣＣ（Error Correcting Code）ブロック１１と、ＲＯＭ（Read Only Memory）１２とから構成される。メモリコントローラ３は、内部バス１４−０，１４−１を介してそれぞれフラッシュメモリチップ２−０，２−１と接続されている。これら機能ブロックによって構成されるメモリコントローラ３は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
【００２１】
ホストインタフェースブロック７は、ホストシステム４との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインタフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインタフェースブロック７を出口としてホストシステム４に供給される。
【００２２】
ワークエリア８は、フラッシュメモリチップ２−０，２−１の制御に必要なデータを一時的に保持する作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成されている。ワークエリア８には、例えば、後述の論理ブロックと物理ブロック（仮想ブロック）との関係を示したアドレス変換テーブル、空きブロックを検索する空ブロック検索テーブルなどが記憶される。
【００２３】
バッファ９は、フラッシュメモリチップ２−０，２−１から読み出したデータを、ホストシステム４が受け取り可能な状態となるまで保持する。また、フラッシュメモリチップ２−０，２−１に書き込むデータを、フラッシュメモリチップ２−０，２−１が書き込み可能な状態となるまで保持する。
【００２４】
フラッシュメモリインタフェースブロック１０は、それぞれ内部バス１４−０，１４−１を介して、フラッシュメモリチップ２−０，２−１との間でデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、内部コマンドとは、メモリコントローラ３がフラッシュメモリチップ２−０，２−１に処理の実行を指示するためのコマンドであり、フラッシュメモリチップ２−０，２−１は、メモリコントローラ３から与えられる内部コマンドに従って動作する。
【００２５】
ＥＣＣブロック１１は、フラッシュメモリチップ２−０，２−１に書き込むデータにエラーコレクションコードを生成するとともに、読み出したデータに付加されるエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００２６】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムが記憶される不揮発性の記憶素子である。例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムが格納されている。
【００２７】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、メモリコントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、各種処理を定義したコマンドセットをＲＯＭ１２から読み出して、フラッシュメモリインタフェースブロック１０に各種処理を実行させる。
【００２８】
フラッシュメモリチップ２−０，２−１はＮＡＮＤ型フラッシュメモリからなる。ＮＡＮＤ型フラッシュメモリは、不揮発性メモリでありレジスタと、複数のメモリセルが２次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの書き込み又は読み出し、即ち、レジスタから選択されたメモリセルへの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。即ち、フラッシュメモリチップ２−０，２−１に入力されたデータは、レジスタを介してメモリセルに書き込まれ、メモリセルから読み出されたデータは、レジスタを介してフラッシュメモリチップ２−０，２−１から出力される。
【００２９】
ＮＡＮＤ型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック（物理ブロック）単位でおこなわれる。物理ブロックは、複数のページで構成される。フラッシュメモリの物理ブロックの構成は、フラッシュメモリの大容量化に伴い変化している。本発明の実施の形態では、１個のページが４セクタ（２０４８バイト）のユーザ領域と６４バイトの冗長領域とで構成され、１個の物理ブロックが６４個のページで構成されているフラッシュメモリを用いる。本発明の実施の形態では用いないが、１個のページが１セクタ（５１２バイト）のユーザ領域と１６バイトの冗長領域とで構成され、１個の物理ブロックが３２個のページで構成されているフラッシュメモリも知られている。
【００３０】
ユーザ領域はホストシステム４から与えられるデータを記憶するための領域である。冗長領域は、誤り訂正符号（ＥＣＣ：Error Correcting Code）、論理アドレス情報、ブロックステータス（フラグ）等の付加データを記憶するための領域である。
【００３１】
論理アドレス情報は、ユーザ領域に有効なデータが格納されている物理ブロックと対応関係にある論理ブロックを特定するための情報である。ユーザ領域に有効なデータが格納されていない物理ブロックについては、そのブロックの冗長領域に、論理アドレス情報は格納されていない。したがって、冗長領域に論理アドレス情報が格納されているか否かを判定することにより、その冗長領域が含まれている物理ブロックに有効なデータが格納されているか否かを判定することができる。つまり、冗長領域に論理アドレス情報が格納されていないとき、その物理ブロックには、有効なデータが格納されていないと判断する。
【００３２】
尚、論理ブロックと物理ブロックとの対応関係は通常、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各物理ブロックの冗長領域に記憶されている論理アドレス情報に基づいて作成される。
【００３３】
ブロックステータス（フラグ）は、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域には、不良ブロックであることを示すブロックステータス（フラグ）が書き込まれる。尚、初期不良の不良ブロックには、不良ブロックであることを示すブロックステータス（フラグ）が出荷前に書き込まれる。
【００３４】
ホストシステム４側のアドレス空間は、セクタ（５１２バイト）単位で分割した領域に付けた通し番号であるＬＢＡ（Logical Block Address）で管理されている。図２に示すように、本実施の形態では、ホストシステム４側からＬＢＡ＃０〜＃４０９５９９９からなる４０９６０００セクタの領域がアクセスされる場合について説明する。ここでは、ＬＢＡが連続する５１２セクタの領域を論理ブロックとして管理し、この論理ブロックに論理ブロック番号（ＬＢＮ）を付している。例えば、ＬＢＡ＃０〜＃５１１の５１２セクタの領域は、ＬＢＮ＃０の論理ブロックに属し、ＬＢＡ＃５１２〜＃１０２３の５１２セクタの領域は、ＬＢＮ＃２の論理ブロックに属している。このように、ＬＢＡ＃０〜＃４０９５９９９の４０９６０００セクタの領域内には、ＬＢＮ＃０〜＃７９９９の８０００個の論理ブロックが構成される。
【００３５】
尚、各論理ブロックに属する領域の容量（セクタ数）については、後述する１個の仮想ブロックに含まれるユーザ領域の容量（セクタ数）に一致するように適宜設定される。
【００３６】
本実施の形態では、８つの論理ゾーン（ＬＺＮ＃０〜＃７）にそれぞれ１０００個の論理ブロックを振り分けている。ここで、振り分け先の論理ゾーンの個数及び振り分け単位である論理ブロックに含まれる領域のセクタ数は、共に２のべき乗で与えられる数値に設定する。尚、論理ブロックに含まれる領域のセクタ数については、１個の仮想ブロックに含まれるユーザ領域の容量（セクタ数）に一致するように設定されるので、１個の仮想ブロックに含まれるユーザ領域のセクタ数が２のべき乗で与えられる数値になるように仮想ブロックが構成される。つまり、１個の物理ブロックに含まれるユーザ領域のセクタ数が２のべき乗で与えられる数値になっている場合、仮想ブロックを構成する物理ブロックの個数が２のべき乗で与えられる数値になる。このように設定することにより、論理ブロックに含まれるセクタ単位の領域の振り分け先は、ＬＢＡをビット表示（２進数表示）したときの、一部のビットの値に基づいて判別することができる。
【００３７】
図３はビット表示（２進数表示）のＬＢＡであり、ＬＢＡ＃０〜＃４０９５９９９を２２ビット表示している。この２２ビットのＬＢＡの上位１３ビット（ＬＢＡの下位側から数えて１０ビット目から２２ビット目までの１３ビット）は各論理ブロックに付けたＬＢＮを示し、下位９ビット（ＬＢＡの下位側から数えて１ビット目から９ビット目までの９ビット）は各論理ブロックに含まれるセクタ単位の領域に付けた通し番号である論理セクタ番号（ＬＳＮ）を示す。ＬＢＮの下位３ビット（ＬＢＡの下位側から数えて１０ビット目から１２ビット目までの３ビット）は、８個の論理ゾーンに付けたＬＺＮを示す。つまり、論理ブロックに含まれるセクタ単位の領域の振り分け先は、ＬＢＮの下位３ビット（ＬＢＡの下位側から数えて１０ビット目から１２ビット目までの３ビット）の値に基づいて判別することができる。
【００３８】
振り分け先の論理ゾーンのＬＺＮに対応するビットは、振り分け先の論理ゾーンの個数及び振り分け単位である論理ブロックに含まれる領域のセクタ数に基づいて決定される。例えば、振り分け先の論理ゾーンの個数が２ｍ個で、論理ブロックに含まれる領域のセクタ数が２ｎセクタの場合、ＬＢＡの下位側から数えてｎ＋１ビット目からｍ＋ｎビット目までのｍビットの値に基づいて振り分け先の論理ゾーンが判別される。又、各論理ブロックに付けたＬＢＮは、ＬＢＡの下位ｎビットを除いたＬＢＡの上位側のビットによって示される。論理ゾーン内の論理ブロックの通し番号であるＬＺＩＢＮは、ＬＢＮの下位ｍビットを除いたＬＢＮの上位側のビット（ＬＢＡの下位ｎ＋ｍビットを除いたＬＢＡの上位側のビット）によって示される。図３に示した例では、ＬＢＮの下位３ビットを除いたＬＢＮの上位側のビット（ＬＢＡの下位１２ビットを除いたＬＢＡの上位側のビット）がＬＺＩＢＮを示す。
【００３９】
図４に示すように、フラッシュメモリチップ２−０，２−１はそれぞれ８１９２個の物理ブロックを有している。以下、フラッシュメモリチップ２−０内の物理ゾーン番号及び物理ブロックアドレスを表す際には、ＰＺＮ０及びＰＢＡ０のように添え字０を用い、フラッシュメモリチップ２−１内の物理ゾーン番号及び物理ブロックアドレスを表す際には、ＰＺＮ１及びＰＢＡ１のように添え字１を用いる。フラッシュメモリチップ２−０，２−１内の物理ブロックには、それぞれ、ＰＢＡ０＃０〜＃８１９１，ＰＢＡ１＃０〜＃８１９１が付されている。各フラッシュメモリチップ２−０，２−１内は、８個の物理ゾーンに分割されている。即ち、各物理ゾーンには、ＰＢＡが連続する１０２４個の物理ブロックがそれぞれ含まれている。例えば、フラッシュメモリチップ２−０において、＃０〜＃１０２３の物理ブロックは、ＰＺＮ０＃０の物理ゾーンに含まれ、ＰＢＡ０＃１０２４〜＃２０４７の物理ブロックは、ＰＺＮ０＃１の物理ゾーンに含まれる。フラッシュメモリチップ２−１においても同様に、＃０〜＃１０２３の物理ブロックは、ＰＺＮ１＃０の物理ゾーンに含まれ、ＰＢＡ１＃１０２４〜＃２０４７の物理ブロックは、ＰＺＮ１＃１の物理ゾーンに含まれる。尚、各物理ゾーン内の物理ブロックに付けた通し番号を物理ゾーン内ブロック番号（ＰＺＩＢＮ）と呼ぶ。また、フラッシュメモリチップ２−０内の物理ゾーン内ブロック番号を表す際には、ＰＺＩＢＮ０のように添え字０を用い、フラッシュメモリチップ２−１内の物理ゾーン内ブロック番号を表す際には、ＰＺＩＢＮ１のように添え字１を用いる。
【００４０】
フラッシュメモリチップ２−０内の物理ゾーンとフラッシュメモリチップ２−１内の物理ゾーンは、ＰＺＮ０とＰＺＮ１とが一致する物理ゾーン同士が相互に関連付けられている。例えば、フラッシュメモリチップ２−０内のＰＺＮ０＃０の物理ゾーンとフラッシュメモリチップ２−１内のＰＺＮ１＃０の物理ゾーンとが関連付けられ、フラッシュメモリチップ２−０内のＰＺＮ０＃１の物理ゾーンとフラッシュメモリチップ２−１内のＰＺＮ１＃１の物理ゾーンとが関連付けられている。
【００４１】
相互に関連付けられた物理ゾーンには、その物理ゾーンのＰＺＮ（ＰＺＮ０とＰＺＮ１）とＬＺＮが一致する論理ゾーンが割り当てられる。例えば、フラッシュメモリチップ２−０内のＰＺＮ０＃０の物理ゾーンとフラッシュメモリチップ２−１内のＰＺＮ１＃０の物理ゾーンに対しては、ＬＺＮ＃０の論理ゾーンが割り当てられ、フラッシュメモリチップ２−０内のＰＺＮ０＃１の物理ゾーンとフラッシュメモリチップ２−１内のＰＺＮ１＃１の物理ゾーンに対しては、ＬＺＮ＃１の論理ゾーンが割り当てられる。
【００４２】
メモリコントローラ３は、関連付けられた２個の物理ゾーンからそれぞれ１つずつ物理ブロックを選択し、選択された２つの物理ブロックを仮想的に結合して仮想ブロックを形成する。この仮想ブロックには、この仮想ブロックを構成する物理ブロックが含まれる物理ゾーンと対応関係にある論理ゾーンに属する論理ブロックが割り当てられる。図５は、ＬＺＮ＃０の論理ゾーン内の論理ブロックと、フラッシュメモリチップ２−０内のＰＺＮ０＃０の物理ゾーン内の物理ブロックとフラッシュメモリチップ２−１内のＰＺＮ１＃０の物理ゾーン内の物理ブロックを仮想的に結合した仮想ブロックとの対応関係を示した図である。ハッチングされた物理ブロックが、仮想ブロックを構成する物理ブロックを表している。例えば、ＬＢＮ＃０の論理ブロックは、フラッシュメモリチップ２−０内のＰＺＮ０＃０の物理ゾーン内のＰＺＩＢＮ０＃１４の物理ブロックとフラッシュメモリチップ２−１内のＰＺＮ１＃０の物理ゾーン内のＰＺＩＢＮ１＃１６の物理ブロックとで構成される仮想ブロックに割り当てられている。また、ＬＢＮ＃８の論理ブロックは、ＰＺＩＢＮ０＃２の物理ブロックとＰＺＩＢＮ１＃３の物理ブロックとで構成される仮想ブロックに割り当てられている。
【００４３】
尚、論理ブロックと仮想ブロック（物理ブロック）の対応関係は、論理ブロックを構成する各物理ブロックの冗長領域に書き込まれる論理アドレス情報に基づいて判別される。例えば、ＬＢＮ＃８の論理ブロック、つまり、ＬＺＩＢＮ＃１の論理ブロックに割り当てられたＰＺＩＢＮ０＃２の物理ブロック及びＰＺＩＢＮ１＃３の物理ブロックの冗長領域には、論理アドレス情報として＃１が書き込まれる。
【００４４】
フラッシュメモリチップ２−０，２−１内の物理ブロックで構成された仮想ブロックにアクセスするときは、アクセス対象の領域が属する論理ブロック及び論理ゾーンが特定される。続いて、その論理ゾーンに割り当てられた２個の物理ゾーンが特定される。さらに、アクセス対象の領域が属する論理ブロックと対応関係にある仮想ブロックを構成する２個の物理ブロックが特定される。
【００４５】
次に、各論理ブロックに属するＬＢＡが連続する５１２セクタの領域と、各仮想ブロックを構成する２個の物理ブロック内の記憶領域との対応関係について説明する。尚、物理ブロック内の各ページに含まれる４セクタのユーザ領域については、先頭から順番に第１セクタ領域、第２セクタ領域、第３セクタ領域、第４セクタ領域と呼ぶ。
【００４６】
図６は、フラッシュメモリチップ２−０のＰＢＡ０＃１４の物理ブロックとフラッシュメモリチップ２−１のＰＢＡ１＃１６の物理ブロックとで構成された仮想ブロック内の記憶領域と、この仮想ブロックに割り当てられたＬＢＮ＃０の論理ブロックに属するＬＳＮ＃０〜＃５１１の５１２セクタの領域との対応関係を示している。フラッシュメモリチップ２−０のＰＢＡ０＃１４の物理ブロックには、ＬＢＮ＃０の論理ブロックに属するＬＳＮが偶数の領域が割り当てられ、フラッシュメモリチップ２−１のＰＢＡ１＃１６の物理ブロックには、ＬＢＮ＃０の論理ブロックに属するＬＳＮが奇数の領域が割り当てられる。各物理ブロックに含まれるページ番号（ＰＮ）＃０〜＃６３の各ページには、ページ番号の順番で（ページ番号が若い方から順番に）、各ページ内では第１セクタ領域、第２セクタ領域、第３セクタ領域、第４セクタ領域の順番で、論理ブロックに属する２５６セクタの領域が、ＬＳＮが若い方から順番に割り当てられる。
【００４７】
図７は、図６に示されたＬＢＮ＃０の論理ブロックに属する５１２セクタの領域に付けられたＬＳＮを、ＬＢＡに置き換えて示した図である。論理ブロックに属する５１２セクタの領域のＬＢＡは連続しているので、仮想ブロックには、ＬＢＡが連続する５１２セクタの領域が割り当てられる。尚、他の論理ブロック（ＬＢＮ＃０以外の論理ブロック）に属するＬＳＮ＃０〜＃５１１の５１２セクタの領域と、その論理ブロックが割り当てられた仮想ブロック内の記憶領域との対応関係も、図６に示した対応関係と同様になる。また、他の論理ブロックの場合には、ＬＳＮとＬＢＡの対応関係がＬＢＮ＃０の論理ブロックの場合と異なるが、いずれの論理ブロックの場合であっても、仮想ブロックには、ＬＢＡが連続する５１２セクタの領域が割り当てられる。
【００４８】
また、フラッシュメモリでは、データを書き換える際に、書き換え対象となるデータが保存されている物理ブロックの内容を別の物理ブロックに転写して書き換えを行なう。このため、物理ゾーンに含まれる物理ブロックの数が論理ゾーンに含まれる論理ブロックの数より多く構成される。また、フラッシュメモリ内の物理ブロックには、出荷時から不良である先天性の不良ブロックが含まれている。更に、出荷時に良品の物理ブロックであっても、使用開始後に劣化して不良ブロックになる物理ブロック（後天性の不良ブロック）もある。従って、各論理ゾーンに含まれる論理ブロックの個数は、物理ゾーンに含まれる良品の物理ブロックの個数及び後天性の不良ブロックの発生個数等を考慮して決定される。本実施の形態では、１０００個の論理ブロックが含まれる論理ゾーンに対して、１０２４個の仮想ブロックに相当する記憶領域を割り当てている。つまり、各物理ゾーンに含まれる物理ブロックの数を１０２４個としている。
【００４９】
上述のフラッシュメモリシステム１に新たなデータを書き込む場合、メモリコントローラ３は、まず、書き込み先のＬＢＡの下位側から数えて１０ビット目から１２ビット目までの３ビットの値に基づいて、その書き込み先の領域が属する論理ゾーンを特定する。次にメモリコントローラ３は、特定された論理ゾーンと対応関係にあるフラッシュメモリチップ２−０内の物理ゾーン及びフラッシュメモリチップ２−１内の物理ゾーンから、それぞれ１個ずつデータが書き込まれていない物理ブロックを検索し、検出された２個の物理ブロックを仮想的に結合して仮想ブロックを構成し、当該仮想ブロックにデータを保存する。この仮想ブロックを構成する２個の物理ブロックの先頭ページの冗長領域には、その書き込み先の領域が属する論理ブロックのＬＺＩＢＮ（ＬＢＡの下位１２ビットを除いたＬＢＡの上位側のビット）が書き込まれる。
【００５０】
尚、上述の空きブロックの検索では、冗長領域を参照して、論理アドレス情報（ＬＺＩＢＮ）が保存されていない物理ブロック（不良ブロックを除く）のＰＢＡ０，ＰＢＡ１を記載した空きブロック検索テーブルを予め作成しておき、この空きブロック検索テーブルを用いて仮想ブロックを構成する物理ブロックを選択するようにしてもよい。
【００５１】
以上で説明した本発明の実施の形態では、論理ブロック単位でＬＢＡが連続する領域を各論理ゾーンに振り分けている。このため、アクセスが集中する領域が、振り分け単位である論理ブロックに含まれる領域より十分に広ければ、アクセスが特定の領域に集中しても、そのアクセスは各物理ゾーンに含まれる物理ブロックに対するアクセスに分散される。このため、不良ブロックが発生する確率が低減できる。
【００５２】
また、フラッシュメモリチップ２−０，２−１のそれぞれから選択された２つの物理ブロックを用いて仮想ブロックを構成しているため、異なるフラッシュメモリチップ内の物理ブロックに並行してアクセスすることができるようになり、アクセススピードが高速になる。
【００５３】
また、フラッシュメモリシステム１において、メモリコントローラ３は、ＬＢＡの特定のビットを参照することによって、論理ブロックの振り分け先となる論理ゾーンを判別することができる。
【００５４】
更に、振り分けの単位である論理ブロックに属する領域の容量（セクタ数）と、仮想ブロックに含まれるユーザ領域の容量（セクタ数）とが等しいため、各仮想ブロックに対しては、ＬＢＡが連続する領域が割り当てられ、アドレス管理が煩雑にならない。
次に、比較例として、図８から図１０に示したように、割り振りの単位を仮想ブロックに含まれるユーザ領域の容量（セクタ数）の１／２とした場合（割り振りの単位を２５６セクタとした場合）について説明する。
【００５５】
割り振りの単位である２５６セクタ単位の領域を、説明の便宜上論理グループとし、この論理グループにグループ番号（ＧＮ）を付している。つまり、ＬＢＡ＃０〜＃２５５の２５６セクタの領域はＧＮ＃０の論理グループに属し、ＬＢＡ＃２５６〜＃５１１の２５６セクタの領域はＧＮ＃１の論理グループに属し、ＬＢＡ＃５１２〜＃７６７の２５６セクタの領域はＧＮ＃３の論理グループに属し、以下同様に論理グループが構成され、グループ番号が付される。これらの論理グループは、ＬＺＮ＃０〜＃７の８個の論理ゾーンに対して順次割り振られる。例えば、ＧＮ＃０の論理グループはＬＺＮ＃０の論理ゾーンに割り振られ、ＧＮ＃１の論理グループはＬＺＮ＃１の論理ゾーンに割り振られ、ＧＮ＃２の論理グループはＬＺＮ＃２の論理ゾーンに割り振られる。
【００５６】
各論理ゾーンに割り振られた論理グループは、２個の論理グループが１組となって１個の論理ブロックが構成され、この１個の論理ブロックが１個の仮想ブロックに割り当てられる。例えば、ＬＺＮ＃０の論理ゾーンに割り振られるＧＮ＃０，＃８，＃１６，＃２４の論理グループは、ＧＮ＃０，＃８の２個の論理グループが１組となって１個の論理ブロック（ＬＺＩＢＮ＃０の論理ブロック）が構成され、ＧＮ＃１６，＃２４の論理グループが１組となって１個の論理ブロック（ＬＺＩＢＮ＃１の論理ブロック）が構成される。
【００５７】
この論理グループ単位の振り分けを、ビット表示（２進数表示）のＬＢＡを参照して説明する。
【００５８】
図９に示すように、２２ビットのＬＢＡの上位１４ビットが、割り振りの単位である論理グループに付けたＧＮを示し、このＧＮの下位３ビット、つまり、ＬＢＡの下位側から数えて１０ビット目から１２ビット目までの３ビットが、振り分け先の論理ゾーンのＬＺＮを示す。また、ＧＮの上位１０ビット、つまり、ＬＢＡの下位側から数えて１３ビット目から２２ビット目までの１０ビットが、各論理ブロックに付けられたＬＺＩＢＮを示す。
【００５９】
従って、振り分け先の論理ゾーンのＬＺＮを示すＧＮの下位３ビット及びＬＺＩＢＮを示すＧＮの上位１０ビットが同一の２つの論理グループ、つまり、ＧＮの下位側から数えて４ビット目だけが異なる２つの論理グループが１個の論理ブロックになる。例えば、ＧＮを示す全ビットが“０”のＧＮ＃０の論理グループと、ＧＮを示す１４ビットの下位側から数えて４ビット目だけが“１”のＧＮ＃８の論理グループが、ＬＺＮ＃０の論理ゾーン内のＬＺＩＢＮ＃０の論理ブロックを構成する。又、ＬＢＡの下位側から数えて１２ビット目のビットとＬＢＡの下位８ビットを連結した９ビットが、論理ブロックに含まれるセクタ単位の領域に付けたＬＳＮを示す。
【００６０】
各論理ゾーンに割り振られた２個の論理グループで１個の論理ブロックを構成し、この１個の論理ブロックが１個の仮想ブロックに割り当てた場合も、この論理ブロックに属するＬＳＮ＃０〜＃５１１の５１２セクタの領域と、この論理ブロックが割り当てられた仮想ブロック内の記憶領域との対応関係は、図６と同様の対応関係になる。しかし、１個の論理ブロックを構成する２個の論理グループにおいて、一方の論理グループに属する領域のＬＢＡと他方の論理グループに属する領域のＬＢＡは連続していなので、ＬＳＮをＬＢＡに置き換えた場合、ＬＳＮ＃０〜＃２５５に対応する領域のＬＢＡとＬＳＮ＃２５６〜＃５１１に対応する領域のＬＢＡは連続していない。
【００６１】
例えば、図９は、ＬＺＮ＃０の論理ゾーン内のＬＺＩＢＮ＃０の論理ブロックを、フラッシュメモリチップ２−０内のＰＺＮ０＃０の物理ゾーン内のＰＺＩＢＮ０＃１４の物理ブロックとフラッシュメモリチップ２−１内のＰＺＮ１＃０の物理ゾーン内のＰＺＩＢＮ１＃１６の物理ブロックとで構成される仮想ブロックに割り当てた場合を示している。この論理ブロックに属するＬＳＮ＃０〜＃２５５の領域は、ＬＢＡ＃０〜＃２５５に対応し、ＬＳＮ＃２５６〜＃５１１の領域は、ＬＢＡ＃２０４８〜＃２３０３に対応する。このように、ＬＳＮ＃０〜＃２５５に対応する領域のＬＢＡとＬＳＮ＃２５６〜＃５１１に対応する領域のＬＢＡが連続していない。
【００６２】
尚、本発明のフラッシュメモリシステムは、上記した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【００６３】
例えば、フラッシュメモリの数は２個に限定されず、２のべき乗個であればよい。また論理ブロック内のセクタ数、及び、論理ゾーンの個数も２のべき乗個であれば８個に限定されない。いずれの場合も、論理ブロックに属する領域の容量（セクタ数）と仮想ブロックのユーザ領域の容量（セクタ数）を同じにし、論理ブロック単位で各論理ゾーンにセクタ単位の領域を振り分けるようにすればよい。
【図面の簡単な説明】
【００６４】
【図１】本発明の実施の形態によるフラッシュメモリシステムの概略構成を示すブロック図である。
【図２】論理ブロックを論理ゾーンに振り分ける処理を説明する図である。
【図３】ビット表示（２進数表示）したＬＢＡを示した図である。
【図４】関連付けられた物理ゾーンに対する論理ゾーンの割り当てを説明する図である。
【図５】仮想ブロックの構成を示す図である。
【図６】仮想ブロック内の記憶領域と論理ブロックに属する領域との対応関係を、ＬＳＮを用いて示した図である。
【図７】仮想ブロック内の記憶領域と論理ブロックに属する領域との対応関係を、ＬＢＡを用いて示した図である。
【図８】比較例における振り分け処理を説明する図である。
【図９】比較例におけるビット表示（２進数表示）したＬＢＡを示した図である。
【図１０】比較例における仮想ブロック内の記憶領域と論理ブロックに属する領域との対応関係を、ＬＢＡを用いて示した図である。
【符号の説明】
【００６５】
１  フラッシュメモリシステム
２  フラッシュメモリ
２−１，２−０  フラッシュメモリチップ
３  メモリコントローラ
【図１】
2008243156.tif 000003
【図２】
2008243156.tif 000004
【図３】
2008243156.tif 000005
【図４】
2008243156.tif 000006
【図５】
2008243156.tif 000007
【図６】
2008243156.tif 000008
【図７】
2008243156.tif 000009
【図８】
2008243156.tif 000010
【図９】
2008243156.tif 000011
【図１０】
2008243156.tif 000012