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