(57)【要約】【課題】本発明は、フラッシュメモリの設定情報が正しく読み出せなくなる事態を防止し、設定情報を確実に利用可能な状態に置くことが可能なメモリコントローラ、及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。【解決手段】フラッシュメモリ２の複数の一部のブロックは、フラッシュメモリ２のＣＩＳを記憶するためのＣＩＳ領域を構成していて、ＣＩＳ領域内の複数のブロックにそれぞれＣＩＳを記憶している。コントローラ３は、ＣＩＳを記憶するブロックに異常があるか否かを判別し、異常があると判別すると、ＣＩＳ領域内にある正常な空きブロックを特定する。そして、特定された空きブロックにＣＩＳを書き込むことにより、フラッシュメモリ２が記憶するＣＩＳの数を所定数に保つ。【選択図】図１
2007094638.tif 000002
【特許請求の範囲】
【請求項１】
複数のページを含んだブロックを複数備えるフラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して前記フラッシュメモリへのアクセスを制御するメモリコントローラであって、
各前記ブロックのうちの複数のブロックは、前記フラッシュメモリの設定情報を優先的に記憶するための設定情報領域を構成していて、当該設定情報領域内の複数のブロックにそれぞれ設定情報を記憶しており、
前記メモリコントローラは、
前記設定情報を記憶するブロックに異常があるか否かを判別する判別手段と、
前記設定情報を記憶するブロックに異常があると判別したことに応答して、前記設定情報領域内にある正常な空きブロックを特定する空きブロック特定手段と、
特定された当該空きブロックに前記設定情報を書き込むことにより、前記フラッシュメモリが記憶する設定情報の数を所定数に保つ設定情報書込手段と、を備える、
ことを特徴とするメモリコントローラ。
【請求項２】
前記設定情報は、ＣＩＳ（Card Information Structure）より構成されている、
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記設定情報領域内に正常な空きブロックが存在しなくなった場合、当該設定情報領域外にある正常な空きブロックを、新たに当該設定情報領域に編入する手段を備える、
ことを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記ブロックにはブロックアドレスが割り当てられており、
前記空きブロック特定手段は、前記設定情報領域内にある正常な空きブロックのうち最も上位のブロックアドレスを割り当てられているブロックを特定する、
ことを特徴とする請求項１、２又は３に記載のメモリコントローラ。
【請求項５】
前記ブロックにはブロックアドレスが割り当てられており、
前記空きブロック特定手段は、前記設定情報領域内にある正常な空きブロックのうち最も下位のブロックアドレスを割り当てられているブロックを特定する、
ことを特徴とする請求項１、２又は３に記載のメモリコントローラ。
【請求項６】
前記フラッシュメモリの記憶領域は複数のゾーンより構成されており、２個以上の当該ゾーンは、前記設定情報領域を有する、
ことを特徴とする請求項１乃至５のいずれか１項に記載のメモリコントローラ。
【請求項７】
前記設定情報書込手段は、前記複数のゾーン内の各前記設定情報領域のうち、互いに異なるゾーンに属する２個以上の設定情報領域が前記設定情報を記憶するように、前記設定情報の書き込みを行う、
ことを特徴とする請求項６に記載のメモリコントローラ。
【請求項８】
請求項１から７のいずれか１項に記載のメモリコントローラと、フラッシュメモリと、から構成される、
ことを特徴とするフラッシュメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムに関する。
【背景技術】
【０００２】
近年、不揮発性の記録媒体であるフラッシュメモリの開発が盛んに行われ、デジタルカメラ等の情報機器（ホストシステム）の記憶媒体として普及している。
【０００３】
フラッシュメモリには通常、メモリコントローラ等がこのフラッシュメモリへアクセスする態様を設定するなどの目的で、ＣＩＳ（Card Information Structure）等の設定情報が予め書き込まれる（例えば特許文献１を参照）。
【特許文献１】特開２００５−２１５９５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述の設定情報は一般的には不変情報であり、通常は書き替えられることがない。一方、フラッシュメモリはメモリセルへの電荷の注入及びメモリセルからの電荷の排出によって論理値を記憶するが、時間経過に伴って電荷が自然に放出される等の原因で、論理値を正しく読み出せなくなる、という現象を起こすことがある。
【０００５】
従って、フラッシュメモリの設定情報が正しく読み出せなくなると、以後このフラッシュメモリに正しくアクセスできなくなる、という問題が生じる。
【０００６】
本発明は上記の実情に鑑みてなされたもので、フラッシュメモリの設定情報が正しく読み出せなくなる事態を防止し、設定情報を確実に利用可能な状態に置くことが可能なメモリコントローラ、及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の第１の観点に係るメモリコントローラは、
複数のページを含んだブロックを複数備えるフラッシュメモリを記憶媒体として利用するホストシステムからの命令に応答して前記フラッシュメモリへのアクセスを制御するメモリコントローラであって、
各前記ブロックのうちの複数のブロックは、前記フラッシュメモリの設定情報を優先的に記憶するための設定情報領域を構成していて、当該設定情報領域内の複数のブロックにそれぞれ設定情報を記憶しており、
前記メモリコントローラは、
前記設定情報を記憶するブロックに異常があるか否かを判別する判別手段と、
前記設定情報を記憶するブロックに異常があると判別したことに応答して、前記設定情報領域内にある正常な空きブロックを特定する空きブロック特定手段と、
特定された当該空きブロックに前記設定情報を書き込むことにより、前記フラッシュメモリが記憶する設定情報の数を所定数に保つ設定情報書込手段と、を備える、
ことを特徴とする。
【０００８】
前記設定情報は、例えば、ＣＩＳ（Card Information Structure）より構成されている。
【０００９】
前記メモリコントローラは、前記設定情報領域内に正常な空きブロックが存在しなくなった場合、当該設定情報領域外にある正常な空きブロックを、新たに当該設定情報領域に編入する手段を備えていてもよい。
【００１０】
前記ブロックにはブロックアドレスが割り当てられている場合、前記空きブロック特定手段は、前記設定情報領域内にある正常な空きブロックのうち最も上位のブロックアドレスを割り当てられているブロックを特定するものであってもよい。
【００１１】
あるいは、前記ブロックにはブロックアドレスが割り当てられている場合、前記空きブロック特定手段は、前記設定情報領域内にある正常な空きブロックのうち最も下位のブロックアドレスを割り当てられているブロックを特定するものであってもよい。
【００１２】
前記フラッシュメモリの記憶領域は複数のゾーンより構成されていてもよく、この場合、２個以上の当該ゾーンは、前記設定情報領域を有するものであってもよい。
【００１３】
前記設定情報書込手段は、前記複数のゾーン内の各前記設定情報領域のうち、互いに異なるゾーンに属する２個以上の設定情報領域が前記設定情報を記憶するように、前記設定情報の書き込みを行うものであってもよい。
【００１４】
また、本発明の第２の観点に係るフラッシュメモリシステムは、上記のいずれかの特徴を有するメモリコントローラと、フラッシュメモリと、から構成されることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、フラッシュメモリの設定情報が正しく読み出せなくなる事態を防止し、設定情報を確実に利用可能な状態に置くことが可能なメモリコントローラ、及び当該メモリコントローラを備えるフラッシュメモリシステムが実現される。
【発明を実施するための最良の形態】
【００１６】
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
【００１７】
図１は、本発明に係るフラッシュメモリシステム１を概略的に示すブロック図である。図１に示すように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するコントローラ３で構成されている。
【００１８】
なお、フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１９】
フラッシュメモリ２は、不揮発性メモリであり、レジスタと、メモリセルアレイと、から構成される。フラッシュメモリ２は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
【００２０】
メモリセルアレイは、複数のメモリセル群と、ワード線と、を備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
【００２１】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成される。ここで、上側のゲート、下側のゲートは、それぞれ、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。
【００２２】
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧を印加して電子が注入される。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧を印加して電子が排出される。
【００２３】
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「０」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「１」に対応する。
【００２４】
このようなフラッシュメモリ２のアドレス空間を図２に示す。フラッシュメモリ２のアドレス空間は、“ページ”と“ブロック”に基づいて分割されている。
【００２５】
ページは、フラッシュメモリ２にて行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。ブロックは、フラッシュメモリ２にて行われるデータ消去動作における処理単位である。
【００２６】
図２に示したフラッシュメモリでは、１つのページは、１セクタ（５１２バイト）のユーザ領域２５と、１６バイトの冗長領域２６とを含んでいる。又、一つのページが４セクタのユーザー領域と６４バイトの冗長領域で構成されているフラッシュメモリもある。ユーザ領域２５は、ホストシステム４から供給されるユーザデータを格納する。
【００２７】
冗長領域２６は、エラーコレクションコード、対応論理ブロックアドレス、ブロックステータス（フラグ）等の付加データを記録するための領域である。
【００２８】
エラーコレクションコードは、ユーザ領域２５に記憶されているデータに含まれる誤りを検出し、訂正するためのデータである。
【００２９】
対応論理ブロックアドレスは、１つのブロックに含まれている少なくとも１つのユーザ領域２５に有効なデータが格納されているとき、そのブロックが対応付けられている論理ブロックのアドレスを示す。
【００３０】
論理ブロックアドレスは、ホストシステム４から与えられるホストアドレスに基づいて決定されるブロックのアドレスである。一方、フラッシュメモリ２内における実際のブロックのアドレスは、物理ブロックアドレスと称される。
【００３１】
１つのブロックに含まれているいずれのユーザ領域２５にも有効なデータが格納されていないときには、そのブロックに含まれている冗長領域２６に、対応論理ブロックアドレスは格納されていない。
【００３２】
従って、冗長領域２６に対応論理ブロックアドレスが格納されているか否かを判定することにより、その冗長領域２６が含まれているブロックのデータが消去されているか否かを判定することができる。冗長領域２６に対応論理ブロックアドレスが格納されていないとき、そのブロックは、データが消去された状態となっている。
【００３３】
フラッシュメモリ２が備えるブロックのうちの所定の複数のブロックは、ＣＩＳ（Card Information Structure）を記憶するためのＣＩＳ領域を構成している。ＣＩＳは、フラッシュメモリ２やその製造者を識別し、あるいはフラッシュメモリ２の動作条件を規定するための情報を含むテーブルである。そして、このＣＩＳ領域内の正常なブロックのうち、先頭の２以上の所定数のブロックには、それぞれＣＩＳがあらかじめ書き込まれ、あるいはコントローラ３により書き込まれる。
【００３４】
１つのブロックは、複数のページを含んでいる。フラッシュメモリ２では、データの上書きができない。このため、１つのページに格納されたデータのみを書き換えるときであっても、そのページが含まれたブロック内の全ページに格納されたデータを、再度書き込まなければならない。
【００３５】
つまり、通常のデータ書き換えでは、書き換えるページが含まれるブロックの全ページに格納されたデータが、別の消去されているブロックに書き込まれる。この際、データが変更されないページに格納されているデータは、以前に格納されていたデータがそのまま再度書き込まれる。
【００３６】
上記のようにデータを書き換えるにあたっては、書き換えられたデータは、以前に格納されていたブロックとは異なるブロックに書き込まれる。このため、論理ブロックアドレスと物理ブロックアドレスの間の対応関係は、フラッシュメモリ２にてデータが書き換えられる毎に、動的に変化する。
【００３７】
従って、論理ブロックアドレスと物理ブロックアドレスとの対応関係を管理する必要があり、通常、この対応関係は、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各ページの冗長領域２６に記憶されている対応論理ブロックアドレスに基づいて作成される。なお、このような動的なアドレス管理手法は、フラッシュメモリを用いたメモリシステムでは一般的に行われている手法である。
【００３８】
ブロックステータスは、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域２６には、不良ブロックであることを示すブロックステータスが書き込まれる。
【００３９】
このようなフラッシュメモリ２は、コントローラ３から、データ、アドレス情報、ステータス情報、内部コマンド等を受信して、データの読み出し処理、書き込み処理、ブロック消去処理、転送処理等の各処理を行う。
【００４０】
ここで、内部コマンドとは、コントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、コントローラ３から与えられる内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。
【００４１】
コントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（エラー・コレクション・コード）ブロック１１と、ＲＯＭ（Read Only Memory）１２と、から構成される。これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００４２】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、コントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、各種処理等を定義したコマンドセットをＲＯＭ１２から読み出してフラッシュメモリインターフェースブロック１０に供給し、フラッシュメモリインターフェースブロック１０に処理を実行させる。
【００４３】
ホストインターフェースブロック７は、図３に示すようにコマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３を備えており、ホストシステム４との間で、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。すなわち、フラッシュメモリシステム１とホストシステム４は、外部バス１３を介して相互に接続される。かかる状態において、ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００４４】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００４５】
バッファ９は、フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ２から読み出されたデータは、ホストシステム４が受け取り可能な状態となるまでバッファ９に保持され、フラッシュメモリ２に書き込むべきデータは、フラッシュメモリ２が書き込み可能な状態となるまでバッファ９に保持される。
【００４６】
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。より詳細には、フラッシュメモリインターフェースブロック１０は、アドレスレジスタ、コマンドレジスタ、命令処理ブロック等から構成される。
【００４７】
アドレスレジスタは、アクセス先の物理ブロックアドレスを格納するためのレジスタである。物理ブロックアドレスは、フラッシュメモリインターフェースブロック１０が実行する一連の制御処理でアクセスするフラッシュメモリ２内のブロックを指定するためのアドレス情報である。
【００４８】
コマンドレジスタは、コマンドセットを構成するシーケンスコマンドを格納するためのレジスタである。このコマンドセットには、コントローラ３内での処理を指示するコマンドや、フラッシュメモリ２への内部コマンド、アドレス情報等の供給を指示するコマンドが含まれている。
【００４９】
命令処理ブロックは、コマンドレジスタに格納されているシーケンスコマンドに従って、フラッシュメモリ２を制御するための内部コマンド、アドレス情報等を出力する。
【００５０】
フラッシュメモリインターフェースブロック１０は、命令処理ブロックによって出力される内部コマンド、アドレス情報等をフラッシュメモリ２に供給することにより、フラッシュメモリ２に読み出し、書き込み等を実行させる。
【００５１】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００５２】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ＲＯＭ１２は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
【００５３】
このように構成されるフラッシュメモリシステム１において、ホストシステム４がフラッシュメモリ２にデータを書き込む場合、ホストシステム４は、ホストインターフェースブロック７のセクタ数レジスタＲ２に、書き込むデータのサイズを設定し、ＬＢＡレジスタＲ３に、書き込みを行うデータの論理アドレスを設定し、その後、コマンドレジスタＲ１に、書き込み処理を指示する外部コマンドを設定する。
【００５４】
コントローラ３は、書き込み処理を指示する外部コマンドが、コマンドレジスタＲ１に設定されると、書き込み処理を開始する。
【００５５】
書き込み処理が開始されると、書き込むデータがホストシステム４から順次ホストインターフェースブロック７に供給され、このデータは、ホストインターフェースブロック７から、バッファ９によって読み出される。
【００５６】
ホストインターフェースブロック７からバッファ９に読み出されたデータは、フラッシュメモリ２が書き込み可能な状態になるまでバッファ９に保持される。そして、該データ、及び該データのエラーコレクションコードは、フラッシュメモリ２が書き込み可能な状態になると、フラッシュメモリインターフェースブロック１０及び内部バス１４を介してフラッシュメモリ２の所望のページに書き込まれる。
【００５７】
書き込みの動作を完了すると、コントローラ３は、フラッシュメモリ２に書き込んだデータ及びエラーコレクションコードをフラッシュメモリインターフェースブロック１０及び内部バス１４を介して読み出す。そしてＥＣＣブロック１１が、読み出したデータ及びエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出する。
【００５８】
そして、誤りが検出された場合（つまり、書き込みに失敗した場合）、誤りが検出されたデータを読み出したページを含むブロックを不良ブロックと判別し、当該ブロックの冗長領域２６に、不良ブロックであることを示すブロックステータスを書き込む（すなわち、不良化する）。そして、後続のブロックのうち、不良ブロックではない空きブロックを特定し、特定した空きブロックに、書き込みに失敗したデータを再度書き込み、書き込んだデータの誤りを検出し、誤りが検出されれば当該ブロックを不良化する、という処理を、誤りが検出されなくなるまで繰り返す。
【００５９】
一方、フラッシュメモリシステム１において、ホストシステム４がフラッシュメモリ２からデータを読み出す場合、ホストシステム４は、ホストインターフェースブロック７のセクタ数レジスタＲ２に、読み出すデータのサイズを設定し、ＬＢＡレジスタＲ３に、読み出すデータの論理アドレスを設定し、その後、コマンドレジスタＲ１に、読み出し処理を指示する外部コマンドを設定する。
【００６０】
コントローラ３は、読み出し処理を指示する外部コマンドが、コマンドレジスタＲ１に設定されると、読み出し処理を開始する。
【００６１】
読み出し処理では、マイクロプロセッサ６は、論理アドレスを物理アドレスへと変換する。そして、フラッシュメモリ２の該物理アドレスに格納されたデータは、フラッシュメモリインターフェースブロック１０及び内部バス１４を介してバッファ９に読み出される。バッファ９に読み出されたデータは、バッファ９から、ホストインターフェースブロック７を介してホストシステム４に供給される。
【００６２】
読み出しの動作を完了すると、ＥＣＣブロック１１は、読み出したデータに含まれるエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出する。そして、誤りが検出された場合（つまり、読み出しに失敗した場合）、誤りが検出されたデータを読み出したページを含むブロックを不良ブロックと判別し、当該ブロックの冗長領域２６に、不良ブロックであることを示すブロックステータスを書き込む。
【００６３】
読み出しに失敗したデータがＣＩＳである場合、コントローラ３は更に、読み出しに失敗したＣＩＳを格納しているブロックを不良化し、ＣＩＳ領域内で当該ブロックに後続する正常な空きブロックのうちの先頭のブロックを特定して、特定された空きブロックにＣＩＳを書き込む。
【００６４】
すなわち、例えば、フラッシュメモリ２はＣＩＳを３個記憶するものとし、またＣＩＳ領域内の各ブロックのステータスが図４（ａ）に示す通りであるとした場合、先頭のＣＩＳを格納しているブロック（物理ブロックアドレスが“０”のブロック）が不良ブロックであると判別すると、コントローラ３は、図４（ｂ）に示すように、物理ブロックアドレスが“０”のブロックを不良化する。そして、ＣＩＳ領域内の後続のブロックのステータスを順次チェックし、図４（ｃ）に示すように、不良ブロックではない先頭の空きブロック（図４の場合においては、物理ブロックアドレスが“４”のブロック）を特定して、特定されたこの空きブロックにＣＩＳを書き込む。
【００６５】
ＣＩＳを記憶しているブロックは複数存在するので、読み出しに失敗した場合におけるＣＩＳの書き込みは、ＣＩＳを記憶している他のブロックから読み出して転記することにより行えばよい。このようにＣＩＳの書き込みを行うことにより、フラッシュメモリ２には常に２以上の所定数のＣＩＳが記憶された状態に保たれる。図４の場合では、ＣＩＳは常に３個記憶された状態に保たれる。
【００６６】
なお、コントローラ３がＣＩＳを書き込む場合、書き込んだＣＩＳの誤りの検出や、検出した場合のブロックの不良化、再書き込みの処理は省略してよい。誤りの検出、不良化や再書き込みの処理を省略することにより、これらの処理の実行中における電源異常等に起因するトラブルが避けられる。すなわち、これらの処理の実行中に電源異常が発生すると、ＣＩＳ領域を構成する全ブロックが、ＥＣＣブロック１１により誤って異常ブロックと判別されてしまう、というトラブルが発生する可能性があり、これらの処理を省略することにより、そのようなトラブルが回避される。
【００６７】
以上で説明したように、本実施の形態のフラッシュメモリシステム１では、複数のＣＩＳがＣＩＳ領域内の互いに異なるブロックに格納され、ＣＩＳを記憶するブロックに異常が検出された場合、ＣＩＳ領域内の正常な他のブロックに新たにＣＩＳが書き込まれる。この結果、フラッシュメモリ２には常に２以上の所定数のＣＩＳが記憶された状態に保たれ、ＣＩＳの消失が防止され、ＣＩＳが確実に利用可能な状態に置かれる。
【００６８】
なお、上記の実施の形態では、ＣＩＳは、ＣＩＳ領域内の正常なブロックのうち、末尾の２以上の所定数のブロックに書き込まれてもよい。この場合コントローラ３は、ＣＩＳの読み出しに失敗した場合、読み出しに失敗したＣＩＳを格納しているブロックを不良化した後、ＣＩＳ領域内で物理ブロックアドレスが当該ブロックに先行する正常な空きブロックのうちの末尾のブロックにＣＩＳを書き込めばよい。
【００６９】
すなわち、例えばフラッシュメモリ２が１０２４個のブロックを有しており、ＣＩＳ領域内の各ブロックのステータスが図５（ａ）に示す通りである場合において、末尾のＣＩＳを格納しているブロック（物理ブロックアドレスが“１０２３”のブロック）が不良ブロックであると判別した場合、コントローラ３は、図５（ｂ）に示すように、物理ブロックアドレスが“１５”のブロックを不良化し、次いで、図５（ｃ）に示すように、ＣＩＳを格納するブロックより物理ブロックアドレスが小さいブロックのうち、不良ブロックではない末尾の空きブロック（図５の場合においては、物理ブロックアドレスが“１０１９”のブロック）を特定して、この空きブロックにＣＩＳを書き込むものとしてもよい。
【００７０】
また、フラッシュメモリ２が記憶するＣＩＳの個数は任意であり、また、フラッシュメモリ２の記憶領域が複数の“ゾーン”に分割されている場合は、複数のゾーンがそれぞれＣＩＳ領域を有していてもよい。
【００７１】
すなわち、例えば図６に示すように、フラッシュメモリ２の記憶領域がブロック１０２４個からなるゾーン４個（ゾーン０〜ゾーン３）に分割されている場合は、図６（ａ）に示すようにそれぞれのゾーンの先頭の複数のブロックがＣＩＳ領域を有していてもよく、あるいは図６（ｂ）に示すように、それぞれのゾーンの末尾の複数のブロックがＣＩＳ領域を有していてもよい。
【００７２】
そして、複数のゾーンがそれぞれＣＩＳ領域を有している場合、コントローラ３は、複数のＣＩＳが互いに異なるゾーンに記憶されるようにＣＩＳの書き込みを行うこととしてもよい。
【００７３】
また、コントローラ３は、ＣＩＳ領域内にも、ホストシステム４から供給されるユーザデータを書き込むようにしてもよい。ＣＩＳ領域内のユーザデータが格納されているブロックにＣＩＳを書き込む場合は、そのブロックのユーザデータを他のブロックに移した後に、ＣＩＳを書き込むようにしてもよい。ＣＩＳ領域内にユーザデータを書き込むようにした場合には、ＣＩＳが格納されているブロックに、ＣＩＳが格納されていることを示す情報を書き込んでもよい（この情報は、例えばブロックステータスとして書き込めばよい）。また、ＣＩＳ領域内に正常な空きブロックが存在しなくなった場合、コントローラ３は、ＣＩＳ領域外にある正常な空きブロックを、新たにＣＩＳ領域に編入するようにしてもよい。つまり、ユーザデータよりもＣＩＳが優先的に格納されるＣＩＳ領域を設定しているのは、ＣＩＳを格納しているブロックを検索する際の便宜のためであり、従って、ＣＩＳ領域を特に設定せずに、ユーザデータとＣＩＳが格納されるブロックを混在させてもよい。
【図面の簡単な説明】
【００７４】
【図１】本発明に係るフラッシュメモリシステムを概略的に示すブロック図である。
【図２】フラッシュメモリのアドレス空間の構造を概略的に示す図である。
【図３】ホストインターフェースブロックの構成を示すブロック図である。
【図４】（ａ）は、ＣＩＳ記憶領域内の各ブロックのステータスの例を示す図であり、（ｂ）は、（ａ）に示す場合においてＣＩＳを格納するブロックが不良と判別された状態を示す図であり、（ｃ）は、（ｂ）に示す場合において新たにＣＩＳが書き込まれた状態を示す図である。
【図５】（ａ）は、ＣＩＳ記憶領域内の各ブロックのステータスの他の例を示す図であり、（ｂ）は、（ａ）に示す場合においてＣＩＳを格納するブロックが不良と判別された状態を示す図であり、（ｃ）は、（ｂ）に示す場合において新たにＣＩＳが書き込まれた状態を示す図である。
【図６】（ａ）及び（ｂ）は、フラッシュメモリが複数のゾーンを有している場合におけるＣＩＳ領域の配置の例を示す図である。
【符号の説明】
【００７５】
１    フラッシュメモリシステム
２    フラッシュメモリ
３    コントローラ
４    ホストシステム
６    マイクロプロセッサ
７    ホストインターフェースブロック
８    ワークエリア
９    バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  ＲＯＭ
１３  外部バス
１４  内部バス
２５  ユーザ領域
２６  冗長領域
【図１】
2007094638.tif 000003
【図２】
2007094638.tif 000004
【図３】
2007094638.tif 000005
【図４】
2007094638.tif 000006
【図５】
2007094638.tif 000007
【図６】
2007094638.tif 000008