(57)【特許請求の範囲】
【請求項１】
ホストシステムから与えられるアクセス指示に従って、物理ブロック単位で消去が行われる複数個のフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
複数個の前記フラッシュメモリ内の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータの書き込み先として使用するシステムブロックとして予約する予約手段と、
前記予約手段によって予約された前記システムブロックに対して前記システムデータを書き込むシステムデータ書き込み手段と、
前記アクセス指示で指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる論理ブロックと、異なる前記フラッシュメモリに含まれるアドレスが同一の物理ブロックを複数個集めた物理ブロック群との対応関係を管理するブロック管理手段と、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック群に、前記アクセス指示と共に与えられるデータを書き込むデータ書き込み手段と
を備え、
前記予約手段は、不良ブロックが含まれる前記物理ブロック群内の良品ブロックを、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックよりも優先的に前記システムブロックとして予約する、
ことを特徴とするメモリコントローラ。
【請求項２】
前記予約手段は、新たな不良ブロックが検出された場合に、前記新たな不良ブロックが含まれる前記物理ブロック群内の良品ブロックを、前記システムブロックとして追加予約する、
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記システムブロックの予約を解除する予約解除手段を更に備え、
前記予約解除手段は、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックに対する前記システムブロックの予約を、不良ブロックが含まれる前記物理ブロック群内の良品ブロックに対する前記システムブロックの予約よりも優先的に解除する、
ことを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記予約手段は、前記物理ブロック群単位で前記システムブロックの予約を行い、
前記予約解除手段は、前記物理ブロック群単位で前記システムブロックの予約を解除する、
ことを特徴とする請求項３に記載のメモリコントローラ。
【請求項５】
請求項１乃至４のうちのいずれか１項に記載のメモリコントローラと、
前記メモリコントローラによってアクセスされる複数個のフラッシュメモリと
を備えるフラッシュメモリシステム。
【請求項６】
ホストシステムから与えられるアクセス指示に従って、物理ブロック単位で消去が行われる複数個のフラッシュメモリの制御方法であって、
複数個の前記フラッシュメモリ内の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータの書き込み先として使用するシステムブロックとして予約する予約ステップと、
前記予約ステップによって予約された前記システムブロックに対して前記システムデータを書き込むシステムデータ書き込みステップと、
前記アクセス指示で指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる論理ブロックと、異なる前記フラッシュメモリに含まれるアドレスが同一の物理ブロックを複数個集めた物理ブロック群との対応関係を管理するブロック管理ステップと、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック群に、前記アクセス指示と共に与えられるデータを書き込むデータ書き込みステップと
を備え、
前記予約ステップでは、不良ブロックが含まれる前記物理ブロック群内の良品ブロックが、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックよりも優先的に前記システムブロックとして予約される、
ことを特徴とするフラッシュメモリの制御方法。
【請求項７】
前記システムブロックの予約を解除する予約解除ステップを更に備え、
前記予約解除ステップでは、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックに対する前記システムブロックの予約が、不良ブロックが含まれる前記物理ブロック群内の物理ブロックに対する前記システムブロックの予約よりも優先的に解除される、
ことを特徴とする請求項６に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
フラッシュメモリを記憶媒体として用いた記憶装置では、特許文献１に記載されているように、ホストシステムから与えられるユーザーデータの他に、アドレス変換テーブルのような、記憶データを管理するための情報が、フラッシュメモリに書き込まれる。従って、このような管理情報を保存するための領域が、フラッシュメモリ内に確保される。
【０００３】
また、フラッシュメモリを記憶媒体として用いた記憶装置では、特許文献２や特許文献３に記載されているように、アクセス効率を向上させるため、異なるフラッシュメモリに属する物理ブロックを複数個集めた物理ブロック群（グループ）を構成し、同一の物理ブロック群に属する物理ブロックに対して並行して、又はインターリーブ方式でアクセスする場合がある。
【０００４】
【特許文献１】特開２００１−１４２７７４号公報
【特許文献２】特開２０００−１３２９８２号公報
【特許文献３】国際公開第２００２／０４６９２９号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００５】
フラッシュメモリを記憶媒体として用いたフラッシュメモリシステムでは、管理情報の書き込み先の領域を、フラッシュメモリ内に適宜設定することができる。従って、管理情報の書き込み先の物理ブロックを固定せずに、任意の物理ブロックを管理情報の書き込み先として使用したり、ユーザーデータの書き込み先として使用したりするようにしてもよい。しかしながら、このように管理情報の書き込み先の物理ブロックを固定しなかった場合、管理情報の書き込み先の物理ブロックの管理が煩雑になる。
【０００６】
また、異なるフラッシュメモリに属する物理ブロックを複数個集めた物理ブロック群を構成する場合、同じ物理ブロック群に含まれる物理ブロックのアドレスが同一であることが好ましい。しかしながら、異なるフラッシュメモリに属するアドレスが同一の物理ブロックで物理ブロック群を構成するようにした場合、不良ブロックが含まれる物理ブロック群ついては、ユーザーデータの書き込み先として使用することができなくなる。
【０００７】
上記のような問題点は、管理情報に代えて又は加えて、他種のシステムデータ（例えば、複数個のフラッシュメモリに対するアクセスを制御するためのファームウェア）を物理ブロックに書き込む場合にも有り得る問題点である。
【０００８】
そこで、本発明は、システムデータの書き込み先の物理ブロックの管理を容易にし、且つ、不良ブロックが含まれる物理ブロック群内の良品ブロックを有効に使用できる記憶領域管理技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第一の観点に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に従って、物理ブロック単位で消去が行われる複数個のフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
複数個の前記フラッシュメモリ内の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータの書き込み先として使用するシステムブロックとして予約する予約手段と、
前記予約手段によって予約された前記システムブロックに対して前記システムデータを書き込むシステムデータ書き込み手段と、
前記アクセス指示で指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる論理ブロックと、異なる前記フラッシュメモリに含まれるアドレスが同一の物理ブロックを複数個集めた物理ブロック群との対応関係を管理するブロック管理手段と、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック群に、前記アクセス指示と共に与えられるデータを書き込むデータ書き込み手段と
を備える。前記予約手段は、不良ブロックが含まれる前記物理ブロック群内の良品ブロックを、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックよりも優先的に前記システムブロックとして予約する。
【００１０】
好適な実施形態では、前記予約手段は、新たな不良ブロックが検出された場合に、前記新たな不良ブロックが含まれる前記物理ブロック群内の良品ブロックを、前記システムブロックとして追加予約する。
【００１１】
好適な実施形態では、メモリコントローラが、前記システムブロックの予約を解除する予約解除手段を更に備える。前記予約解除手段は、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックに対する前記システムブロックの予約を、不良ブロックが含まれる前記物理ブロック群内の良品ブロックに対する前記システムブロックの予約よりも優先的に解除する。
【００１２】
好適な実施形態では、前記予約手段は、前記物理ブロック群単位で前記システムブロックの予約を行う。前記予約解除手段は、前記物理ブロック群単位で前記システムブロックの予約を解除する。
【００１３】
本発明の第二の観点に従うフラッシュメモリシステムは、前記第一の観点に従うメモリコントローラ（又は、前述した複数の好適な実施形態のうちのいずれかでのメモリコントローラ）と、前記メモリコントローラによってアクセスされる複数個のフラッシュメモリとを備える。
【００１４】
本発明の第三の観点に従う制御方法は、ホストシステムから与えられるアクセス指示に従って、物理ブロック単位で消去が行われる複数個のフラッシュメモリの制御方法であって、
複数個の前記フラッシュメモリ内の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータの書き込み先として使用するシステムブロックとして予約する予約ステップと、
前記予約ステップによって予約された前記システムブロックに対して前記システムデータを書き込むシステムデータ書き込みステップと、
前記アクセス指示で指定されるアドレスが割り当てられているセクタ単位の領域が複数個含まれる論理ブロックと、異なる前記フラッシュメモリに含まれるアドレスが同一の物理ブロックを複数個集めた物理ブロック群との対応関係を管理するブロック管理ステップと、
前記アクセス指示によりアクセス対象の領域として指定された論理アクセス領域が属する前記論理ブロックと対応する前記物理ブロック群に、前記アクセス指示と共に与えられるデータを書き込むデータ書き込みステップと
を備える。前記予約ステップでは、不良ブロックが含まれる前記物理ブロック群内の良品ブロックが、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックよりも優先的に前記システムブロックとして予約される。
【００１５】
好適な実施形態では、前記システムブロックの予約を解除する予約解除ステップが更に備えられる。前記予約解除ステップでは、不良ブロックが含まれていない前記物理ブロック群内の物理ブロックに対する前記システムブロックの予約が、不良ブロックが含まれる前記物理ブロック群内の物理ブロックに対する前記システムブロックの予約よりも優先的に解除される。
【発明の効果】
【００１６】
システムデータの書き込み先の物理ブロックの管理を容易にし、且つ、不良ブロックが含まれる物理ブロック群内の良品ブロックを有効に使用できる。
【発明を実施するための最良の形態】
【００１７】
図１は、本発明の一実施形態に係るフラッシュメモリシステム１を概略的に示すブロック図である。
【００１８】
図１に示すように、フラッシュメモリシステム１は、２個のフラッシュメモリ２Ａ，２Ｂと、それを制御するメモリコントローラ３とで構成されている。フラッシュメモリの個数は、２個より多くても良い（例えば、好ましくは２ｍ個（ｍは自然数））。また、以下の説明では、２個のフラッシュメモリ２Ａ、２Ｂを総称して「フラッシュメモリ２」と言うことがある。
【００１９】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００２０】
メモリコントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ＳＲＡＭ８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（Error-correcting code）ブロック１１と、ＲＯＭ（Read Only Memory）１２とから構成される。メモリコントローラ３は、内部バス１４を介してフラッシュメモリ２と接続されている。これら機能ブロックによって構成されるメモリコントローラ３は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
【００２１】
ホストインターフェースブロック７は、ホストシステム４との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００２２】
ＳＲＡＭ（Static Random Access Memory）８は、揮発性の記憶素子であり、フラッシュメモリ２の制御に必要なデータを一時的に格納するためのワーク領域として使用される。ワーク領域には、例えば、不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルが記憶される。本実施形態においてフラッシュメモリ２に書き込まれるシステムデータ（フラッシュメモリ２に対するアクセスを制御又は管理するためのシステムデータであり、管理情報及びファームウェア等のデータが含まれる）は、これら３種類のテーブルである。ここで、不良ブロックテーブルは、不良ブロックを示す情報を保持するテーブルである。アドレス変換テーブルは、論理ブロックと物理ブロックとの対応関係を示したテーブルである。空きブロックテーブルは、消去状態の物理ブロック（又は、有効なデータが書き込まれていない物理ブロック）を検索するためのテーブルである。なお、ＳＲＡＭ８には、ワーク領域に加えて、ファームウェアを格納するためのファームウェア領域が設けられても良い。
【００２３】
ＲＯＭ１２は、不揮発性の記憶素子である。ＲＯＭ１２には、フラッシュメモリ２の制御に必要なファームウェアが書き込まれている。なお、ＲＯＭ１２には、起動時に必要な最低限のファームウェア（以下、「起動用ファームウェア」と言う）だけが書き込まれていても良い。この場合、フラッシュメモリ２の制御に必要なファームウェアは、フラッシュメモリ２に書き込まれ、起動時に、メモリコントローラ３が起動用ファームウェアに基づいて動作することによって、フラッシュメモリ２から読み出され、ＳＲＡＭ８に設けられているファームウェア領域に格納される。
【００２４】
バッファ９は、ホストシステム４から与えられたデータやフラッシュメモリ２から読み出されたデータを一時的に保持する。例えば、フラッシュメモリ２に書き込まれるデータは、フラッシュメモリ２が書き込み可能な状態になるまでバッファ９に保持される。また、フラッシュメモリ２から読み出されたデータは、ホストシステム４が受け取り可能な状態になるまでバッファ９に保持される。
【００２５】
フラッシュメモリインターフェースブロック１０は、ＲＯＭ１２（又はＳＲＡＭ８上のファームウェア領域）からシーケンスコードを読み込み、読込んだシーケンスコードに従って、フラッシュメモリ２に対する各種の処理を実行する。シーケンスコードは、フラッシュメモリインターフェースブロック１０に読み込まれるファームウェアである。このシーケンスコードは、フラッシュメモリインターフェースブロック１０が実行するシーケンス処理毎に設定された複数個のコードから成るコードセットを複数セット含んでいる。このシーケンスコードに基づいて実行される処理では、フラッシュメモリインターフェースブロック１０とフラッシュメモリ２との間で、データ、アドレス情報、ステータス情報、内部コマンド等の授受が、内部バス１４を介して行なわれる。ここで、内部コマンドとは、メモリコントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、メモリコントローラ３から与えられる内部コマンドに従って動作する。
【００２６】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加される誤り訂正符号（ＥＣＣ：Error-correcting code））を生成するとともに、読み出したデータに付加されている誤り訂正符号に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００２７】
マイクロプロセッサ６は、ＲＯＭ１２（又はＳＲＡＭ８上のファームウェア領域）から読み込んだプログラムコードに従って、メモリコントローラ３の全体の動作を制御する。プログラムコードとは、マイクロプロセッサ６に読み込まれるファームウェアである。例えば、マイクロプロセッサ６は、読込んだプログラムコードに基づいて、ホストシステム４から与えられるアクセス指示によって特定されるアクセス対象の領域が属する論理ブロック及びこの論理ブロックと対応する物理ブロックを求めたり、データの書き込み先となる空きブロックを検索したりする。
【００２８】
フラッシュメモリ２Ａ，２Ｂは、それぞれ、ＮＡＮＤ型フラッシュメモリからなる。ＮＡＮＤ型フラッシュメモリは、レジスタと、複数のメモリセルが２次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。各フラッシュメモリ２Ａ，２Ｂは、レジスタからメモリセルへのデータの書き込み、メモリセルからレジスタへのデータの読み出し又はメモリセルに記憶されているデータの消去が行われている間、内部コマンド等の入力を受け付けないビジー状態となる。
【００２９】
ＮＡＮＤ型フラッシュメモリでは、データの読み出し及び書き込みはページ（物理ページ）単位で行われ、データの消去はブロック（物理ブロック）単位で行われる。物理ブロックは、複数のページ（物理ページ）で構成される。例えば、１個の物理ページは、所定サイズ（例えば２０４８バイト）のユーザ領域と、所定サイズ（例えば６４バイト）の冗長領域とで構成され、１個の物理ブロックは、所定個数（例えば６４個）の物理ページで構成されている。１個の物理ページのユーザ領域は、所定個数（例えば４個）の物理セクタ領域で構成されている。冗長領域は、誤り訂正符号（ＥＣＣ：Error-correcting code））、論理アドレス情報、ブロックステータス（フラグ）等の付加データが記憶される領域である。
【００３０】
冗長領域に書き込まれる論理アドレス情報は、物理ブロックと論理ブロックの対応関係を判別するための情報である。ブロックステータス（フラグ）は、物理ブロックの良否を示すフラグである。尚、正常にデータの書き込み等を行うことができない物理ブロックである不良ブロックには、出荷時から不良である初期不良の物理ブロック（以下、「初期不良ブロック」と言う）と、使用開始後に劣化して不良ブロックになった後発不良の物理ブロック（以下、「後発不良ブロック」と言う）がある。初期不良ブロックについては、不良ブロックであることを示すブロックステータス（フラグ）が製造メーカによって書き込まれている。また、この初期不良ブロックを示すブロックステータス（フラグ）を、ユーザ領域に書き込んでいる製造メーカもある。後発不良ブロックの判断基準については、設計の際に設計者が適宜設定することができる。例えば、書き込み又は消去を行った際にフラッシュメモリから与えられる処理ステータスがフェイルであった場合、読み出したデータに予め定められた閾値以上の誤りが含まれていた場合、又はこれらの組合せにより、後発不良理ブロックであるとの判断が行われてもよい。
【００３１】
本実施形態では、図２に示すように、互いに異なるフラッシュメモリ２Ａ，２Ｂに属する２個の物理ブロックで仮想ブロックが形成され、この仮想ブロックに対して、論理ブロックが割り当てられる。従って、ホストシステム４から書き込みを指示するアクセス指示が与えられた場合、メモリコントローラ３は、そのアクセス指示で指定されるアクセス対象の領域が属する論理ブロックと対応関係にある仮想ブロックを特定し、その仮想ブロックを形成する２個の物理ブロックに対して、そのアクセス指示に対応するデータを書き込む。このデータ書き込み処理で、メモリコントローラ３は、フラッシュメモリ２Ａに属する物理ブロック対するデータの書き込みとフラッシュメモリ２Ｂに属する物理ブロック対するデータの書き込みとを並行して行っても良いし、フラッシュメモリ２Ａに属する物理ブロック対するデータの書き込みとフラッシュメモリ２Ｂに属する物理ブロック対するデータの書き込みとを交互に行っても良い。後者は、いわゆるインターリーブ方式であり、この方式では、一方のフラッシュメモリがビジー状態のときにビジー状態ではない他方のフラッシュメモリに対するデータの書き込みが行われる。
【００３２】
ホストシステム４側のアドレス空間は、セクタ（５１２バイト）単位で分割した領域（以下、「論理セクタ領域」と言う）に付けた通番であるＬＢＡ（Logical Block Address）で管理されている。メモリコントローラ３内で行われるアドレス管理では、複数個の論理セクタ領域で論理ブロックが形成され、この論理ブロックに対して、仮想ブロックが割り当てられる。本実施形態では、１個の物理ブロックが、２５６個の物理セクタ領域で構成されており、仮想ブロックが、２個の物理ブロックで形成されている。このため、図３に示したように、ＬＢＡが連続する５１２個の論理セクタ領域をまとめたものが論理ブロックとされ、この論理ブロックに、通し番号が付されている。以下、論理ブロックに付された通し番号を、「論理ブロック番号（ＬＢＮ）」と言う。例えば、ＬＢＡ＃０−＃５１１の５１２個の論理セクタ領域は、ＬＢＮ＃０の論理ブロックに属する。
【００３３】
また、本実施形態では、図２に示すように、仮想ブロックを形成する２個の物理ブロックは、物理ブロックアドレス（ＰＢＡ）が同一の物理ブロックである。すなわち、仮想ブロックは、互いに異なるフラッシュメモリ２Ａ，２Ｂに属するＰＢＡが同一の物理ブロックで構成される。このようにすることにより、ＰＢＡが異なる２個の物理ブロックで仮想ブロックが形成される場合に比べて、仮想ブロックの管理が容易になる。つまり、ＰＢＡが異なる２個の物理ブロックで仮想ブロックが形成される場合、各論理ブロックにはＰＢＡが異なる物理ブロックが割り当てられるので、２個のフラッシュメモリ２Ａ，２Ｂの両方について、論理ブロックと物理ブロックの対応関係（ＬＢＮとＰＢＡの対応関係）が管理される必要がある。しかし、本実施形態のように、ＰＢＡが同一の２個の物理ブロックで仮想ブロックが形成されれば、各論理ブロックには必ずＰＢＡが同一の物理ブロックが割り当てられるので、２個のフラッシュメモリ２Ａ，２Ｂのうちの一方についてのみ、論理ブロックと物理ブロックの対応関係（ＬＢＮとＰＢＡの対応関係）が管理されれば良い。
【００３４】
図２に示すように、仮想ブロックには、不良ブロック（図２で“ＮＧ”と記載された物理ブロック）が含まれていない仮想ブロック（以下、「不良無し仮想ブロック」と言う）と、不良ブロックが含まれている仮想ブロック（以下、「不良有り仮想ブロック」と言う）との２種類がある。
【００３５】
不良無し仮想ブロック（例えば、ＰＢＡ＃２の２個の物理ブロックで構成される仮想ブロック）は、ユーザーデータの書き込み先として使用可能な仮想ブロックである。言い換えれば、不良無し仮想ブロックは、論理ブロック（例えば、ＬＢＮ＃０の論理ブロック）に割り当てられ得る仮想ブロックである。
【００３６】
一方、不良有り仮想ブロック（例えば、ＰＢＡ＃６の２個の物理ブロックで構成される仮想ブロック）は、ユーザーデータの書き込み先として使用不可能な仮想ブロックである。言い換えれば、不良有り仮想ブロックは、論理ブロックに割り当てられることのない仮想ブロックである。
【００３７】
本実施形態では、不良有り仮想ブロック内の良品ブロック（不良ブロックでない物理ブロック）が、システムデータの書き込み先として使用される物理ブロック（以下、「システムブロック」と言う）として優先的に予約される。つまり、不良有り仮想ブロックに含まれる良品ブロックが、不良無し仮想ブロックに含まれる物理ブロックよりも優先的にシステムブロックとして予約される。このようにすることにより、不良有り仮想ブロックに含まれる良品ブロックを有効に活用することができる。
【００３８】
システムブロックの予約は、フォーマット（初期化）の際に行われることが好ましい。本実施形態では、フォーマット（初期化）の際に、メモリコントローラ３によって、不良ブロックが検出され、検出された不良ブロックが含まれる不良有り仮想ブロック内の良品ブロックが、不良無し仮想ブロックに含まれる物理ブロックよりも優先的にシステムブロックとして予約される。システムブロックとして予約される物理ブロックの個数については、フラッシュメモリシステム１がホストシステム４の記憶装置として使用されたときに格納され得るシステムデータの容量を考慮して決定される。更に、この物理ブロックの個数を決定するときには、システムデータの更新処理やシステムブロックとして予約された物理ブロックが後発不良ブロックになること等も考慮される。フォーマット（初期化）の際には、これらのことを考慮して決定された所定個数の物理ブロックがシステムブロックとして予約される。
【００３９】
ここで、もし、不良有り仮想ブロック内の良品ブロックだけでは、所定個数の物理ブロックをシステムブロックとして予約することが不可能であれば（つまり、不良有り仮想ブロック内の良品ブロックの総数が所定個数に満たなければ）、不良無し仮想ブロック内の物理ブロックが、システムブロックとして予約される。
【００４０】
なお、システムブロックとして予約された物理ブロックは、ユーザーデータの書き込み先として使用されないので、仮想ブロックに含まれる一部の物理ブロックだけがシステムブロックとして予約されたとしても、その仮想ブロックに含まれる残りの物理ブロックがユーザーデータの書き込み先として使用されることはない。この点を考慮すれば、システムブロックの予約は、仮想ブロック単位で行われることが好ましい。従って、不良無し仮想ブロック内の物理ブロックがシステムブロックとして予約される場合には、その不良無し仮想ブロックに含まれる全ての物理ブロック（本実施形態では２個の物理ブロック）がシステムブロックとして予約されるようにすることが好ましい。
【００４１】
仮想ブロック単位でシステムブロックの予約を行ったことにより、予め決定されていた所定個数を越える個数の物理ブロックがシステムブロックとして予約されることがあっても構わない。従って、フォーマット（初期化）の際には、所定個数以上の物理ブロックがシステムブロックとして予約される。
【００４２】
その後、ユーザーデータの書き込み先として使用されていた物理ブロック（良品ブロック）が劣化して後発不良ブロックになったときには、その後発不良ブロックが含まれる不良有り仮想ブロック内の良品ブロックが、システムブロックとして追加予約される。この追加予約により、システムブロックの個数が増加する。その結果、不良無し仮想ブロック内の物理ブロックがシステムブロックとして予約されている必要がなくなった場合には、不良無し仮想ブロック内の物理ブロックに対する予約が、不良有り仮想ブロック内の良品ブロックに対する予約よりも優先的に解除される。なお、不良有り仮想ブロック内の良品ブロックはユーザーデータの書き込み先として使用されないので、不良有り仮想ブロック内の良品ブロックに対するシステムブロックの予約の解除は行われなくてもよい。つまり、システムブロックとして予約されている物理ブロックが全て不良有り仮想ブロック内の良品ブロックであれば、システムブロックの予約の解除は行われなくても良い。
【００４３】
また、システムブロックの予約の解除も仮想ブロック単位で行われることが好ましい。従って、仮想ブロック単位でシステムブロックの予約の解除が行われたときに、システムブロックとして予約されている物理ブロックの個数が所定個数以下になってしまうような場合は、システムブロックの予約の解除は行われない。不良無し仮想ブロック内の全ての物理ブロックに対するシステムブロックの予約が解除された場合、その不良無し仮想ブロックはユーザーデータの書き込み先として使用可能な状態になる。
【００４４】
本実施形態では、前述したように、不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルの３種類のテーブルがシステムデータとしてフラッシュメモリ２に保存される。である。以下、各種テーブルについて説明する。
【００４５】
図３は、不良ブロックテーブルを示す。
【００４６】
不良ブロックテーブルは、不良ブロック（初期不良又は後発不良の物理ブロック）を示す情報を保持するテーブルである。不良ブロックテーブルには、不良ブロックを示す情報として、例えば、不良ブロックが属するフラッシュメモリ２Ａ，２Ｂの識別子（以下、「チップ番号」と言う）と、その不良ブロックのＰＢＡとが書き込まれる。
【００４７】
不良ブロックテーブルは、フォーマット（初期化）の際に作成される。例えば、フォーマット（初期化）の際に不良ブロックの検索が行われ、検出された不良ブロックが属するフラッシュメモリ２Ａ，２Ｂのチップ番号及びその不良ブロックのＰＢＡが、ＳＲＡＭ８のワーク領域上に確保された不良ブロックテーブルの作成領域に書き込まれる。このようにして不良ブロックテーブルが作成された後に、作成された不良ブロックテーブルに基づいて上述のシステムブロックの予約が行われる。そして、ＳＲＡＭ８のワーク領域上に作成された不良ブロックテーブルは、不良ブロックテーブルの書き込み先として予約されているシステムブロックに書き込まれる。その後、後発不良ブロックが新たに検出されたときには、ＳＲＡＭ８のワーク領域上で不良ブロックテーブルが更新され（その新たに検出された後発不良ブロックに対応したチップ番号及びＰＢＡが不良ブロックテーブルに追加され）、更新後の不良ブロックテーブルが、再び、不良ブロックテーブルの書き込み先として予約されているシステムブロックに書き込まれる。
【００４８】
図４は、論理グループとアドレス変換テーブルの対応関係を示す。
【００４９】
論理グループとは、論理ブロックを複数個まとめることで形成されたグループである。以下、論理グループに付けられた通し番号を、「論理グループ番号（ＬＧＮ）」と言う。図４の例では、ＬＢＮが連続する論理ブロックが、異なる論理グループに順次振り分けられるようにして、論理グループが形成されている。例えば、ＬＢＮ＃０の論理ブロックはＬＧＮ＃０の論理グループに、ＬＢＮ＃１の論理ブロックはＬＧＮ＃１の論理グループに、ＬＢＮ＃２の論理ブロックはＬＧＮ＃２の論理グループにという順番で、ＬＢＮ＃０−＃７の論理ブロックがＬＧＮ＃０−＃７の論理グループに順次振り分けられていく。以下、同様に、ＬＢＮ＃８の論理ブロックがＬＧＮ＃０の論理グループに、ＬＢＮ＃９の論理ブロックがＬＧＮ＃１の論理グループに、ＬＢＮ＃１０の論理ブロックがＬＧＮ＃２の論理グループに振り分けられていく。このようにして、８個の論理グループが形成される。
【００５０】
論理グループは、図４に示すように、単なるアドレス変換テーブルの作成単位であり、各論理ブロックが割り当てられる物理ブロックは、その物理ブロックが属する論理グループに依存しない。つまり、どの論理ブロックがどの物理ブロックに割り当てられても良い。このアドレス変換テーブルは、論理ブロックと物理ブロックとの対応関係を記述したテーブルであり、図４に示した例では、各論理グループに対応する８個のテーブルに分割してアドレス変換テーブルの管理（作成、更新及び保存）を行っているが、全ての論理ブロックと物理ブロックとの対応関係を含む１個のテーブルであっても良い。
【００５１】
アドレス変換テーブルの一例として、図５に、ＬＧＮ＃０の論理グループに対応したアドレス変換テーブル＃０を示す。図５から分かるように、アドレス変換テーブル＃０には、ＬＧＮ＃０の論理グループに属する論理ブロックに関して、各論理ブロックに対応する物理ブロックのＰＢＡが書き込まれている。このアドレス変換テーブル＃０がシステムブロックに保存されていない場合は、アドレス変換テーブル＃０はＳＲＡＭ８のワーク領域上で作成された後、そのテーブルの書き込み先として予約されているシステムブロックに保存される。また、アドレス変換テーブル＃０がシステムブロックに保存されている場合は、必要なときにＳＲＡＭ８のワーク領域に読み出される。そして、アドレス変換テーブル＃０に関する論理ブロックと物理ブロックの対応関係が変化したときは、ワーク領域上でそのテーブルが更新され、更新後のアドレス変換テーブル＃０が、再び、そのテーブルの書き込み先として予約されているシステムブロックに書き込まれる。
【００５２】
図６は、空きブロックテーブルを示す。
【００５３】
空きブロックテーブルは、各物理ブロックが空きブロックであるか否かを示すテーブルである。空きブロックテーブルは、例えば、各ビットの論理値で、各ビットに割り当てられている物理ブロックが空きブロックであるか否かを示す。つまり、この空きブロックテーブルでは、０”又は“１”のいずれか一方の論理値が空きブロック（データが消去されている物理ブロック又はデータが無効化されている物理ブロック）を示し、他方の論理値が空きブロックではない物理ブロック（例えば、有効なユーザーデータが書き込まれている物理ブロック、システムブロック又は不良ブロック）を示す。この空きブロックテーブルもＳＲＡＭ８のワーク領域上で作成又は更新され、このテーブルの書き込み先として予約されているシステムブロックに保存される。
【００５４】
図６に示した空きブロックテーブルでは、各行（８ビット）の連続した２個のビットが、一つの仮想ブロックを形成する２個の物理ブロックに対応している。つまり、フラッシュメモリ２Ａに属する物理ブロックとフラッシュメモリ２Ｂに属する物理ブロックとが、ＰＢＡの順番で各行（８ビット）のビットに交互に割り当てられている。この物理ブロックの割り当ては、上の行から下の行に向かって、各行においては下位ビット側から上位ビット側に向かって行われる。このように、仮想ブロックを構成する各物理ブロックが空きブロックであるか否かに関する情報は、１つの空きブロックテーブル上で管理されることが好ましい。尚、本実施形態のように仮想ブロックに対して論理ブロックが割り当てられる場合には、仮想ブロック単位で空きブロックになるので、本実施形態における空きブロックテーブルは仮想ブロック単位で空きブロックであるか否かを示すようなテーブルであっても良い。つまり、本実施形態における空きブロックテーブルでは、各ビットに対して仮想ブロックが割り当てられ、各ビットの論理値がそのビットに割り当てられた仮想ブロックが空きブロックであるか否かを示すテーブルであっても良い。このように各ビットに対して仮想ブロックが割り当てられるようにすれば、空きブロックテーブルの容量を小さくすることができる。例えば、本実施形態のように２個の物理ブロックで仮想ブロックが形成されている場合、その仮想ブロックが各ビットに対して割り当てられれば、空きブロックテーブルの容量は１／２になる。
【００５５】
また、１個の空きブロックテーブルの容量は、１セクタ（１個の物理セクタ領域の記憶容量）又は１個の物理ページの記憶容量であることが好ましい。つまり、空きブロックテーブルは、１セクタ単位又は１ページ単位のテーブルに分割されて管理され、その単位でシステムブロックに保存されることが好ましい。
【００５６】
以上が、不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルについての説明である。これらのテーブルの書き込み先として予約されたシステムブロックを示す情報（以下、「システムブロック情報」と言う）は、例えば、フォーマット（初期化）の際に作成され、フラッシュメモリ２Ａ及び／又は２Ｂ内の先頭ブロックに保存される。本実施形態では、図７Ａ乃至図７Ｃに示すように、不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルの書き込み先として予約されたシステムブロックを特定するためのチップ番号及びＰＢＡがシステムブロック情報として管理される。図７Ａに示す情報は、不良ブロックテーブルの書き込み先として予約されたシステムブロックを特定するためのチップ番号及びＰＢＡを示す不良ブロックテーブル格納領域情報である。図７Ｂに示す情報は、アドレス変換テーブルの書き込み先として予約されたシステムブロックを特定するためのチップ番号及びＰＢＡを示すアドレス変換テーブル毎のアドレス変換テーブル格納領域情報である。また、図７Ｃに示す情報は、空きブロックテーブルの書き込み先として予約されたシステムブロックを特定するためのチップ番号及びＰＢＡを示す空きブロックテーブル毎の空きブロックテーブル格納領域情報である。このように、本実施形態におけるシステムブロックの予約は、不良ブロックテーブル格納領域情報、アドレス変換テーブル格納領域情報及び空きブロックテーブル格納領域情報を含むシステムブロック情報によって管理されている。
【００５７】
各テーブルの容量は、フラッシュメモリ２における書き込み又は読み出しの処理の単位である一個の物理ページに収まる容量（例えば、物理ページと同じ容量）であり、一個の物理ページには１個のテーブルが保存されることが好ましい。このようにした場合、テーブルが更新される毎に、更新されたテーブルが物理ブロック（システムブロック）内の次の物理ページに保存されることになる。また、最新のテーブルは、物理ブロック（システムブロック）内のデータ（テーブルのデータ）が書き込まれている末尾の物理ページに保存されていることになる。
【００５８】
尚、各物理ページに対して物理セクタ領域単位でデータを書き込んでいくことができるフラッシュメモリであれば、各テーブルの容量が一個の物理セクタ領域に収まる容量（例えば、物理セクタ領域と同じ容量）であり、一個の物理セクタ領域に１個のテーブルが保存されるようにしても良い。この場合、最新のテーブルは、物理ブロック（システムブロック）内のデータ（テーブルのデータ）が書き込まれている末尾の物理セクタ領域に保存されていることになる。
【００５９】
本実施形態では、各テーブルに対して、２個のシステムブロックが予約される。従って、２個のシステムブロックのうち、一方は、テーブルの書き込み先として使用されているシステムブロック（以下、「現行ブロック」と言う）になっており、他方はテーブルの書き込み先として使用されていない控えのシステムブロック（以下、「控えブロック」と言う）になっている。そして、現行ブロック内にテーブルを書き込むための空き領域（データの書き込まれていない物理ページ又は物理セクタ領域）が無くなった場合は、控えブロックが現行ブロックになり、現行ブロックが控えブロックになる。つまり、各テーブルに対して予約された２個のシステムブロックは、交互に現行ブロック（又は、控えブロック）になる。
【００６０】
システムブロック情報は、起動時にフラッシュメモリ２Ａ及び／又は２Ｂの先頭ブロックから読み出され、ＳＲＡＭ８のワーク領域に保持されている。そして、テーブルの書き込み先として予約されているシステムブロックが変更される場合、システムブロック情報は、ＳＲＡＭ８のワーク領域上で更新される。システムブロック情報が更新された場合は、更新後のシステムブロック情報がフラッシュメモリ２Ａ及び／又は２Ｂの先頭ブロックに書き込まれる。なお、本実施形態で、フラッシュメモリ２Ａ及び／又は２Ｂの先頭ブロックがシステムブロック情報の書き込み先として設定されているのは、一般に、先頭ブロックは、不良ブロックではないことが製造メーカによって保証されているためである。このため、通常、先頭ブロックには、属性情報（例えば、フラッシュメモリシステム１がどういうものであって、どういうフラッシュメモリが幾つ搭載されているか等を表す情報）が書き込まれていることが多く、先頭ブロックにユーザーデータ（ホストシステムから与えられるアクセス指示に従って書き込まれるデータ）が書き込まれることは殆ど無い。
【００６１】
本実施形態では、各テーブルに対して、２個のシステムブロックが予約され、それらのシステムブロックが交互に現行ブロックになる。従って、いずれかのテーブルに対して予約されている２個のシステムブロックのうち、少なくとも一方が後発不良ブロックになってしまった場合には、そのテーブルに対して別のシステムブロックが新たに予約される必要がある。このシステムブロックの新たな予約は、システムブロックが後発不良ブロックになったときに行なわれても良いが、予め確保されている予備のシステムブロック（以下、「予備ブロック」と言う）により後発不良ブロックになったシステムブロックの補充が行われるようにしても良い。つまり、フォーマット（初期化）の際に予約されるシステムブロックに予備ブロックが含まれていても良い。
【００６２】
予備ブロックを含めてシステムブロックの予約を行った場合には、予備ブロックとして予約されたシステムブロックを特定するための情報（以下、「予備ブロック情報」と言う）もシステムブロック情報として保存される。図８に示す情報は、予備ブロックとして予約されたシステムブロックを特定するためのチップ番号及びＰＢＡを示す予備ブロック情報である。この予備ブロック情報も不良ブロックテーブル格納領域情報、アドレス変換テーブル格納領域情報及び空きブロックテーブル格納領域情報と同様にシステムブロック情報として保存される。また、この予備ブロック情報も他のシステムブロック情報と同様に、ＳＲＡＭ８のワーク領域上で更新され、更新された予備ブロック情報はフラッシュメモリ２Ａ及び／又は２Ｂの先頭ブロックに保存される。
【００６３】
本実施形態では、不良ブロックテーブルについては、２個のシステムブロックが予約され、アドレス変換テーブルについては、８個のアドレス変換テーブル＃０〜＃７があるため（図７Ｂ参照）、８×２＝１６個のシステムブロックが予約され、空きブロックテーブルについては、２個の空きブロックテーブル＃０及び＃１があるため（図７Ｃ参照）、２×２＝４個のシステムブロックが予約され、更に、予備ブロック用のシステムブロックが少なくとも１個予約される。従って、予備ブロック用のシステムブロックの個数を３個とした場合、前述したシステムブロックとして予約される物理ブロックの所定個数は、２＋１６＋４＋３＝２５個になる。
【００６４】
不良ブロックテーブル、アドレス変換テーブル又は空きブロックテーブルに対して予約されているシステムブロックのうち、いずれかのシステムブロックが後発不良ブロックになった場合に行われるシステムブロックの補充について説明する。通常、後発不良ブロックであるか否かの判断は、データの書き込み、データの読み出し又は記憶データの消去が実行されたときに行われる。従って、現行ブロックでデータの書き込み又はデータの読み出しが実行されたときや、控えブロックで記憶データの消去が実行されたときに、後発不良ブロックであるか否かの判断が行われることが多い。ここで、後発不良ブロックになったと判断されたシステムブロックが現行ブロックであった場合には、そのシステムブロックの代わりに補充されるシステムブロック（予備ブロックとして予約されていたシステムブロック）に最新のテーブルが書き込まれると共に、システムブロック情報の更新が行われる。一方、後発不良ブロックになったと判断されたシステムブロックが控えブロックであった場合には、システムブロック情報の更新だけが行われる。
【００６５】
システムブロック情報の更新では、不良ブロックテーブル格納領域情報、アドレス変換テーブル格納領域情報及び空きブロックテーブル格納領域情報に記載されているシステムブロックのチップ番号及びＰＢＡのうち、後発不良ブロックになったと判断されたシステムブロックのチップ番号及びＰＢＡが補充されるシステムブロック（予備ブロックとして予約されていたシステムブロック）のチップ番号及びＰＢＡで置換えられる。続いて、予備ブロック情報に記載されているシステムブロックのチップ番号及びＰＢＡから、補充されるシステムブロック（予備ブロックとして予約されていたシステムブロック）のチップ番号及びＰＢＡが削除される。この更新はＳＲＡＭ８のワーク領域上で行われ、更新されたシステムブロック情報はフラッシュメモリ２Ａ及び／又は２Ｂの先頭ブロックに保存される。
【００６６】
尚、後発不良ブロックになったと判断されたシステムブロックのチップ番号及びＰＢＡは、不良ブロックテーブルに書き込まれる。この不良ブロックテーブルの更新は、ＳＲＡＭ８のワーク領域上で行われ、更新された不良ブロックテーブルは、そのテーブルの書き込み先として予約されているシステムブロックに保存される。
【００６７】
不良ブロックテーブル、アドレス変換テーブル又は空きブロックテーブルに対して予約されているシステムブロックのうちのいずれかのシステムブロックが後発不良ブロックになった場合には、予備ブロックによりその補充が行われるため、予備ブロック用のシステムブロックの個数が減少する。従って、予備ブロック用のシステムブロックの個数が０個になったとき、又は、予め設定した最低個数以下になったときには、予備ブロック用のシステムブロックの予約（追加予約）を行うことが好ましい。
【００６８】
また、不良無し仮想ブロック内の物理ブロックが劣化して後発不良ブロックになったときには、その後発不良ブロックが含まれる仮想ブロック内の良品ブロックが、予備ブロック用のシステムブロックとして追加予約される。従って、その良品ブロックのチップ番号及びＰＢＡは、予備ブロック情報に書き込まれる。このシステムブロックの追加予約により、予備ブロックの個数が増加し不良無し仮想ブロック内の物理ブロックをシステムブロックとして確保しておく必要がなくなった場合には、不良有り仮想ブロック内の良品ブロックに対する予約が解除される。つまり、不良無し仮想ブロック内の物理ブロックに対する予約は、不良有り仮想ブロック内の良品ブロックに対する予約よりも優先的に解除される。但し、不良有り仮想ブロック内の良品ブロックは、ユーザーデータの書き込み先として使用されることがないので、予備ブロックが全て不良有り仮想ブロック内の良品ブロックであれば、予備ブロックの個数が増加しても予備ブロック用のシステムブロックの予約は解除されなくても良い。
【００６９】
ここで、「不良無し仮想ブロック内の物理ブロックをシステムブロックとして確保しておく必要がなくなった場合」とは、例えば、予備ブロックとして予約されている物理ブロックに不良有り仮想ブロック内の良品ブロックと不良無し仮想ブロック内の良品ブロックとが含まれており、その予備ブロックの累計が、予め定められている予備ブロック用のシステムブロックの個数（以下、「所定予備個数」と言う）よりも多いことを意味している。なお、システムブロックの予約の解除は仮想ブロック単位で行われることが好ましいため、システムブロックの予約の解除は、所定予備個数を超えた予備ブロック用のシステムブロックの個数が仮想ブロックを形成する物理ブロックの個数以上（つまり、本実施形態では２個以上）になった場合に行われることが好ましい。つまり、仮想ブロック単位でシステムブロックの予約の解除が行われても、予備ブロック用のシステムブロックの個数が所定予備個数よりも少なくならないことが好ましい。
【００７０】
以下、システムブロックの予約及びその解除に関するメモリコントローラ３の動作について説明する。
【００７１】
フォーマット（初期化）の際、不良ブロックが検出され、検出された不良ブロックに対応したチップ番号及びＰＢＡが、不良ブロックテーブルに書き込まれる。ここで検出される不良ブロックは、初期不良ブロックであっても後発不良ブロックであっても良い。例えば、このフォーマット（初期化）の処理が、フラッシュメモリシステム１が一旦使用された後に行われる場合には、後発不良ブロックが存在することがある。そのような場合は、初期不良ブロックだけでなく後発不良ブロックも不良ブロックとして検出される。
【００７２】
次に、作成された不良ブロックテーブルに基づいて不良有り仮想ブロックに含まれる良品ブロックがシステムブロックとして予約される。この際、予約されるシステムブロックは、予備ブロック用のシステムブロックよりも不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルの書き込み先となるシステムブロックに優先的に割り当てられる。不良有り仮想ブロックに含まれる良品ブロックだけでは、所定個数のシステムブロックを確保することができなかった場合は、不良無し仮想ブロックに含まれる良品ブロックがシステムブロックとして予約される。このシステムブロックの予約は、仮想ブロック単位で行われる。つまり、システムブロックの予約では、不良無し仮想ブロックよりも不良有り仮想ブロックに含まれる良品ブロックが、優先的に予約される。
【００７３】
具体的には、不良有り仮想ブロック内の良品ブロックに対応したチップ番号及びＰＢＡが、システムブロック情報に優先的に書き込まれる。もし、不良有り仮想ブロック内の良品ブロックだけでは、所定個数のシステムブロックが確保されない場合には、不良無し仮想ブロックが適宜選択され、選択された不良無し仮想ブロックに含まれる全ての物理ブロックのチップ番号及びＰＢＡが、システムブロック情報に書き込まれる。
【００７４】
以上のようにして、フォーマット（初期化）の際に、所定個数以上のシステムブロックが予約される。
【００７５】
不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルがシステムブロックに保存されるときは、システムブロック情報に基づいて各テーブルの保存先のシステムブロックが特定される。尚、フォーマット（初期化）の際には作成されていないテーブル（例えば、アドレス変換テーブル）については、テーブルが作成されたときにシステムブロックに保存される。
【００７６】
その後、後発不良ブロックが検出されたときには、ＳＲＡＭ８のワーク領域上で、その後発不良ブロックに対応したチップ番号及びＰＢＡが不良ブロックテーブルに追記され、追記後の不良ブロックテーブルが、そのテーブルに対応するシステムブロック（現行ブロック）に書き込まれる。
【００７７】
続いて、その後発不良ブロックが含まれている仮想ブロック内の良品ブロックが予備ブロック用のシステムブロックとして追加予約される。具体的には、その良品ブロックのチップ番号及びＰＢＡが、予備ブロック情報に書き込まれる。この追加予約により予備ブロック用のシステムブロックの個数が所定予備個数より多くなった場合には、予備ブロック用のシステムブロックとして予約されている不良無し仮想ブロック内の物理ブロックに対するシステムブロックの予約が仮想ブロック単位で解除される。具体的には、システムブロックの予約が解除される不良無し仮想ブロック内の物理ブロックのチップ番号及びＰＢＡが、予備ブロック情報から削除される。
【００７８】
また、不良ブロックテーブル、アドレス変換テーブル又は空きブロックテーブルの保存先のシステムブロックとして不良無し仮想ブロック内の物理ブロックが割り当てられている場合には、その不良無し仮想ブロック内の物理ブロックが、予備ブロック用のシステムブロックとして予約された不良有り仮想ブロック内の物理ブロックと交換されることが好ましい。上述のようなシステムブロックの予約の解除が円滑に行われるためには、このようなシステムブロックの交換が適宜行われることが好ましい。尚、このようなシステムブロックの交換は、交換対象のシステムブロックが控えブロックになったときに行われることが好ましい。
【００７９】
システムブロックの予約が解除された不良無し仮想ブロックは、ユーザーデータの書き込み先として使用可能となる。
【００８０】
以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。例えば、フラッシュメモリ２に書き込まれるシステムデータは、不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブルのうちのいずれか一つ又は二つだけであっても良いし、それら３種類のテーブルに限らず、他種のシステムデータ（例えばファームウェア）であっても良い。また、物理ブロックを示す情報は、チップ番号及びＰＢＡの組合せに限らず、他種の情報が採用されても良い。
【図面の簡単な説明】
【００８１】
【図１】本発明の一実施形態によるフラッシュメモリシステムの概略構成を示すブロック図である。
【図２】論理ブロックと物理ブロック群の対応関係を示す図である。
【図３】不良ブロックテーブルの構成例を示す図である。
【図４】論理グループとアドレス変換テーブルの対応関係を示す図である。
【図５】アドレス変換テーブル＃０の構成例を示す図である。
【図６】空きブロックテーブルの構成例を示す図である。
【図７】図７Ａは、不良ブロックテーブル格納領域情報の構成例を示す図である。図７Ｂは、アドレス変換テーブル格納領域情報の構成例を示す図である。図７Ｃは、空きブロックテーブル格納領域情報の構成例を示す図である。
【図８】予備ブロック情報の構成例を示す図である。
【符号の説明】
【００８２】
１…フラッシュメモリシステム、２Ａ，２Ｂ…フラッシュメモリ、３…メモリコントローラ、６…マイクロプロセッサ
【図１】
0004702387.tif 000002
【図２】
0004702387.tif 000003
【図３】
0004702387.tif 000004
【図４】
0004702387.tif 000005
【図５】
0004702387.tif 000006
【図６】
0004702387.tif 000007
【図７】
0004702387.tif 000008
【図８】
0004702387.tif 000009