(57)【要約】【課題】メモリ内に不良ブロックが発生した場合の、データの書込み処理に要する時間を短縮する。【解決手段】シリアルＦｌａｓｈＩ／Ｆコントローラ３により、シリアルＦｌａｓｈ１のデータ領域の各物理ブロックに書込み対象（プログラム対象）データを書込む際に、書込み不可ブロックが存在する場合に、このブロックに書込もうとしたデータを、シリアルＦｌａｓｈＩ／Ｆコントローラ４により、シリアルＦｌａｓｈ２の不良ブロック代替領域に書込み、これと同時に、シリアルＦｌａｓｈＩ／Ｆコントローラ３は、シリアルＦｌａｓｈ１に書込めなかったデータの次に連続したデータをシリアルＦｌａｓｈ１のデータ領域にプログラムする。【選択図】    図１
2004302938.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位でデータの書込みおよび消去が可能な第１のメモリと、
ブロック単位でデータの書込みおよび消去が可能な第２のメモリと、
前記第１のメモリに対するデータの書込み中に不良ブロックが発生した場合に、この不良ブロックのデータを前記第２のメモリの所定の領域に書込むと同時に、前記第１のメモリに対し、当該データの次に連続するデータの書込み動作を継続して実行する制御手段と
を備えたことを特徴とするメモリ管理システム。
【請求項２】
前記制御手段は、
書込み対象となるブロックに既に書込まれているデータを消去できなかった場合に、そのブロックを不良ブロックとして判断する
ことを特徴とする請求項１に記載のメモリ管理システム。
【請求項３】
前記第１のメモリに対するデータの書込み動作中に不良ブロックが発生した場合に、その不良ブロックのデータの代替書込み先を前記第２のメモリの中で選択する代替先選択手段を備え、
前記制御手段は、前記代替先選択手段により選択された代替先に前記不良ブロックのデータを書込む
ことを特徴とする請求項１に記載のメモリ管理システム。
【請求項４】
ブロック単位でデータの書込みおよび消去が可能な第１のメモリと、
ブロック単位でデータの書込みおよび消去が可能な第２のメモリと、
前記第１および第２のメモリに対して、同一のデータの書込みを行い、この同一データの書込み動作中に前記第１および第２のメモリの一方に不良ブロックが発生した場合に、その不良ブロックに対応した他方のメモリのデータ書込み先を代替領域として設定する制御手段と
を備えたことを特徴とするメモリ管理システム。
【請求項５】
前記制御手段は、
書込み対象となるブロックに既に書込まれているデータを消去できなかった場合に、そのブロックを不良ブロックとして判断する
ことを特徴とする請求項４に記載のメモリ管理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えばＦｌａｓｈメモリに対するデータ読み書きを制御するメモリ管理システムに関する。
【０００２】
【従来の技術】
例えば情報端末機器などでは、シリアル方式のＦｌａｓｈメモリが使われている。Ｆｌａｓｈメモリは、データをブロック単位で書込み／消去可能なメモリである。
【０００３】
図８および図９に、Ｆｌａｓｈメモリに対する従来のアクセス方法を示す。
図８は、シリアル方式のＦｌａｓｈメモリの構造の一例を示す図であり、１２８Ｍビットのメモリ構成を示している。
なお、実際には、１ページあたり管理コード用に１６バイトが付加される。つまり５２８バイトが１ページあたりの容量であるが、図８の例ではデータの容量のみを示し、便宜上５１２バイトとしている。
【０００４】
シリアル方式のＦｌａｓｈメモリでは、データを書き換えるときには、一旦、データを消去してからデータを書込む。１２８ビットのＦｌａｓｈメモリの場合では、１ブロックは３２ページからなっているため、ブロック全部を書き換えるためには、１回のブロック消去で書込みは３２回行なわれる。
【０００５】
また、シリアル方式のＦｌａｓｈメモリでは、書換えを繰り返すことにより、書換えできない不良ブロックが発生する。この不良ブロックが発生した場合の処理として、例えば非特許文献１に開示されている方法が知られている。図９に、この不良ブロック処理を示す。
【０００６】
図９に示すように、通常はデータがブロック単位で書込まれる（ステップＣ１〜Ｃ３）。ところが、書込み不可となるブロック（つまり不良ブロック）が生じた場合には（ステップＣ１のＮＯまたはステップＣ２のＮＯ）、同一メモリ内において代替ブロックが選択され（ステップＣ４）、その代替ブロックにデータが書込まれる（ステップＣ５）。その際、データの書込み先の変更に合わせて、各ブロックのアドレスを管理しているアドレス管理テーブルが変更される（ステップＣ６）。
【０００７】
【非特許文献１】
東芝  “ＭＯＳ型デジタル集積回路  ＴＣ５８２５６ＡＦＴ  データシート”、［ｏｎｌｉｎｅ］、平成１３年４月１７日、［平成１５年２月２５日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｓｅｍｉｃｏｎ．ｔｏｓｈｉｂａ．ｃｏ．ｊｐ／ｊａ／ｂｕｃａｔ＿８／ｂｕｃａｔ＿２／ｂｕｃａｔ＿１／ｔｄ＿１／ＴＤ．ｐｄｆ＞
【０００８】
【発明が解決しようとする課題】
前述したように、従来、Ｆｌａｓｈメモリに不良ブロックが発生した場合には、同一メモリ中に設けた代替ブロックに、不良ブロックに書込む予定であったデータを退避させて書込んでいた。
しかし、Ｆｌａｓｈメモリでは、あるブロックにデータの書込みを行っている際に、別のブロックからデータを読み出すことはできるが、同一メモリ内において、アドレスが異なる２つのブロックに同時にデータを書込むことはできない。このため、不良ブロックが発生した場合に、同一のＦｌａｓｈメモリ内の代替ブロックにデータを退避させて書込む場合には、通常のデータの書込みをストップさせなければならない。このため、不良ブロックが発生した場合に、データの書込み処理に要する時間が長くなる問題があった。
【０００９】
本発明は、前記課題に鑑みなされたもので、メモリ内に不良ブロックが発生した場合のデータの書込み処理に要する時間を短縮することが可能になるメモリ管理システムを提供することを目的とする。
【００１０】
【課題を解決するための手段】
すなわち、本発明に係わる第１の発明は、ブロック単位でデータの書込みおよび消去が可能な第１のメモリと、ブロック単位でデータの書込みおよび消去が可能な第２のメモリと、前記第１のメモリに対するデータの書込み中に不良ブロックが発生した場合に、この不良ブロックのデータを前記第２のメモリの所定の領域に書込むと同時に、前記第１のメモリに対し、当該データの次に連続するデータの書込み動作を継続して実行する制御手段とを備えたことを特徴とする。
【００１１】
このような構成によれば、不良ブロックのデータを第２のメモリの所定の領域に書込むと同時に、第１のメモリに対し、当該データの次に連続するデータの書込み動作を継続して実行するので、不良ブロックが発生した場合の処理時間を短縮することが可能になる。
【００１２】
また、本発明に係わる第２の発明は、ブロック単位でデータの書込みおよび消去が可能な第１のメモリと、ブロック単位でデータの書込みおよび消去が可能な第２のメモリと、前記第１および第２のメモリに対して、同一のデータの書込みを行い、この同一データの書込み動作中に前記第１および第２のメモリの一方に不良ブロックが発生した場合に、その不良ブロックに対応した他方のメモリのデータ書込み先を代替領域として設定する制御手段とを備えたことを特徴とする。
【００１３】
このような構成によれば、第１および第２のメモリに対して同一のデータの書込みを行い、その書込み動作中に一方のメモリに不良ブロックが発生した場合には、その不良ブロックに対応した他方のメモリのデータ書込み先を代替領域とするので、不良ブロックが発生した場合の処理時間を短縮することが可能になる。
【００１４】
【発明の実施の形態】
以下本発明をシリアル方式のＦｌａｓｈメモリのメモリ管理システムに適用した場合の実施形態について図面を参照して説明する。
（第１の実施形態）
まず、本発明の第１の実施形態について説明する。
図１は、本発明の第１の実施形態にしたがったメモリ管理システムの回路構成を示す図である。
図１に示すように、本実施形態にしたがったメモリ管理システムは、シリアルＦｌａｓｈ１とシリアルＦｌａｓｈ２とを搭載する。シリアルＦｌａｓｈ１，２は、シリアル方式によるＦｌａｓｈメモリである。Ｆｌａｓｈメモリとは、データの書換え処理を行うことができるメモリである。
【００１５】
書換え処理とは、各ブロックに記憶された既存のデータを消去し、このブロックに書込み対象のデータをブロック単位で書込むことである。以後は、このデータを書込むことを「プログラム処理」と称し、書込み対象のデータを「プログラム対象データ」と称して説明する。
【００１６】
シリアル方式とは、書換え処理において、プログラム対象のブロックに、プログラム対象のデータをブロック単位で連続的にプログラムする方式である。なお、シリアル方式のＦｌａｓｈメモリでは、所定のアドレスに対応するブロックからデータを読み出している場合に、これと並行して、同一メモリ内の他のアドレスに対応するブロックにデータをプログラムすることが可能である。
【００１７】
シリアルＦｌａｓｈ１，２は、それぞれ、データ領域と不良ブロック代替領域とを有する。データ領域とは、通常時にプログラム対象のデータをプログラムすることができる領域である。不良ブロック代替領域とは、通常時以外、つまりデータ領域に不良ブロックが発生した場合に、プログラム対象データを退避させてプログラムすることができる領域である。
【００１８】
不良ブロックとは、データ領域において、既存のプログラム済みデータの消去、もしくはプログラム対象データのプログラムが出来ないブロックである。つまり、例えば、データ領域における任意のプログラム対象ブロックにおいて、プログラムおよび消去を繰り返し実行した場合に、当該ブロックが不良ブロックとなる。
【００１９】
これらデータ領域と不良ブロック代替領域は、所定の数の物理ブロックに区分される。これら物理ブロックは、それぞれ所定の数のページに区分される。これら物理ブロックおよびページには、それぞれ固有のアドレスが付与される。物理ブロックに付与されたアドレスを物理ブロックアドレスと称する。シリアルＦｌａｓｈ１とシリアルＦｌａｓｈ２において、データ領域と不良ブロック代替領域とのそれぞれの占有割合は特に限定されるものではない。
【００２０】
シリアルＦｌａｓｈ１における不良ブロック代替領域は、シリアルＦｌａｓｈ２のデータ領域へのプログラム対象データを退避させてプログラムする領域である。また、シリアルＦｌａｓｈ２における不良ブロック代替領域は、シリアルＦｌａｓｈ１のデータ領域へのプログラム対象データを退避させてプログラムする領域である。
【００２１】
図１に示すように、シリアルＦｌａｓｈ１とシリアルＦｌａｓｈ２は、データバス（Ｄａｔａ  Ｂｕｓ）を介して、シリアルＦｌａｓｈインタフェース（Ｉ／Ｆ）コントローラ３およびシリアルＦｌａｓｈＩ／Ｆコントローラ４と接続される。また、シリアルＦｌａｓｈ１，２と、シリアルＦｌａｓｈＩ／Ｆコントローラ３，４との間には、各種制御用コマンドをやりとりする制御線が設けられているが、これらの一部についての図示は省略する。
【００２２】
シリアルＦｌａｓｈＩ／Ｆコントローラ３は、シリアルＦｌａｓｈ１に対するデータ消去およびプログラム処理を実行する。シリアルＦｌａｓｈＩ／Ｆコントローラ３が実行するデータ消去およびプログラム処理とは、シリアルＦｌａｓｈ１のデータ領域における任意のプログラム対象ブロックに記憶されたプログラム済みデータを消去した上で、プログラム対象データをメモリ９から読み出して、シリアルＦｌａｓｈ１のプログラム対象ブロックにブロック単位でプログラムすることである。
シリアルＦｌａｓｈ１は、シリアルＦｌａｓｈＩ／Ｆコントローラ３に第１レディ信号（Ｒｅａｄｙ１信号）を出力する。シリアルＦｌａｓｈＩ／Ｆコントローラ３は、シリアルＦｌａｓｈ１に第１チップセレクト信号（ＣＳ１信号）を出力する。
【００２３】
シリアルＦｌａｓｈ１は、自身がビジー状態の場合には、シリアルＦｌａｓｈＩ／Ｆコントローラ３に対して、ＬレベルのＲｅａｄｙ１信号を出力し、レディ状態の場合には、ＨレベルのＲｅａｄｙ１信号を出力する。シリアルＦｌａｓｈＩ／Ｆコントローラ３は、シリアルＦｌａｓｈ１に対してアクセス、つまりコマンド入力、アドレス指定またはデータ入力などを行う場合には、ＬレベルのＣＳ１信号を出力し、それ以外の場合には、ＨレベルのＣＳ１信号を出力する。
【００２４】
シリアルＦｌａｓｈＩ／Ｆコントローラ４は、シリアルＦｌａｓｈ２に対するデータ消去またはプログラム処理を実行する。シリアルＦｌａｓｈＩ／Ｆコントローラ４が実行するデータ消去およびプログラム処理とは、シリアルＦｌａｓｈ２のデータ領域における任意のプログラム対象ブロックに記憶されたプログラム済みデータを消去した上で、プログラム対象データをメモリ９から読み出して、シリアルＦｌａｓｈ２のプログラム対象ブロックにブロック単位でプログラムする処理である。
シリアルＦｌａｓｈ２は、シリアルＦｌａｓｈＩ／Ｆコントローラ４に第２レディ信号（Ｒｅａｄｙ２信号）を出力する。シリアルＦｌａｓｈＩ／Ｆコントローラ４は、シリアルＦｌａｓｈ２に第２チップセレクト信号（ＣＳ２信号）を出力する。
【００２５】
シリアルＦｌａｓｈ２は、自身がビジー状態の場合には、シリアルＦｌａｓｈＩ／Ｆコントローラ４に対して、ＬレベルのＲｅａｄｙ２信号を出力し、レディ状態の場合には、ＨレベルのＲｅａｄｙ２信号を出力する。シリアルＦｌａｓｈＩ／Ｆコントローラ４は、シリアルＦｌａｓｈ２に対してアクセスを行う場合には、ＬレベルのＣＳ２信号を出力し、それ以外の場合には、ＨレベルのＣＳ２信号を出力する。
【００２６】
また、シリアルＦｌａｓｈＩ／Ｆコントローラ３，４は、それぞれ、アクセス調停回路５と接続される。アクセス調停回路５は、シリアルＦｌａｓｈＩ／Ｆコントローラ３または４からの、シリアルＦｌａｓｈ１または２へのアクセス要求に対して、いずれか一方にアクセスを承認する。これにより、データバスにおける衝突を防ぐ。
【００２７】
また、シリアルＦｌａｓｈＩ／Ｆコントローラ３，４は、それぞれ、不良ブロック通知回路６と接続される。シリアルＦｌａｓｈＩ／Ｆコントローラ３は、シリアルＦｌａｓｈ１に対するプログラム処理において、プログラム対象ブロックが不良ブロックであった場合に、不良ブロック検出信号を不良ブロック通知回路６に出力する。不良ブロック検出信号は、不良ブロックのアドレスを示す信号である。シリアルＦｌａｓｈＩ／Ｆコントローラ４は、シリアルＦｌａｓｈ２に対するプログラム処理において、プログラム対象ブロックが不良ブロックであった場合に、不良ブロック検出信号を不良ブロック通知回路６に出力する。
【００２８】
不良ブロック通知回路６は、管理テーブル制御回路７と接続される。管理テーブル制御回路７は、テーブルメモリ８と接続される。テーブルメモリ８はブロック管理テーブル８ａと代替アドレステーブル８ｂとを有する。代替アドレステーブル８ｂは、代替プログラム対象の物理ブロックアドレスの情報を一時的に記憶する。代替プログラム対象の物理ブロックアドレスとは、書込み対象ブロックが不良ブロックであった場合に、代替先として指定する物理ブロックアドレスである。ブロック管理テーブル８ａについては後述する。
シリアルＦｌａｓｈＩ／Ｆコントローラ３，４は、シリアルＦｌａｓｈ１，２へのアクセスの開始または終了に応じて、これをアクセス調停回路５および管理テーブル制御回路７に通知する。
【００２９】
図２は、図１に示したテーブルメモリが有するブロック管理テーブル８ａの一例を示した図である。
図２に示すように、ブロック管理テーブル８ａでは、プログラム対象データの仮想的なプログラム先を区別する論理ブロックアドレスと、シリアルＦｌａｓｈ１または２の物理ブロックアドレスとが対応付けて記憶される。このブロック管理テーブル８ａの構成は、論理ブロックアドレスとシリアルＦｌａｓｈ１の物理ブロックアドレスとの対応付け、または論理ブロックアドレスとシリアルＦｌａｓｈ２の物理ブロックアドレスとの対応付けがなされている構成であれば、他の構成であってもよい。
【００３０】
管理テーブル制御回路７は、ブロック管理テーブル８ａから、任意のプログラム対象の物理ブロックに付与されたアドレスの情報を読み出して、この情報を、シリアルＦｌａｓｈＩ／Ｆコントローラ３または４に出力する。
また、管理テーブル制御回路７は、ブロック管理テーブル８ａの情報を必要に応じて書換える。
【００３１】
次に、本発明の第１の実施形態にしたがったメモリ管理システムの動作について説明する。
図３は、図１に示したメモリ管理システムが実行する書換え処理の内容を示すフローチャートである。
図４は、図１に示したメモリ管理システムが、不良ブロック検出時に実行する処理の内容を示すタイミングチャートである。この図４に示した、ｆ１、ｆ２、ｆ３およびｆ４は、それぞれ、コマンド入力、アドレス入力、データ入力およびステータスリードの状態を示す。
【００３２】
本実施形態では、メモリ１の任意の物理ブロックに記憶される既存のデータ（プログラム済みデータ）に代えて、新たなデータをプログラム対象データとしてプログラムする処理について説明する。また、本実施形態では、図２に示すように、論理ブロックアドレス“Ｎ”に、シリアルＦｌａｓｈ１の物理ブロックアドレス“Ａ”が対応付けられていると仮定する。この物理ブロックアドレス“Ａ”に対応する物理ブロックは、シリアルＦｌａｓｈ１のデータ領域に設けられる物理ブロックである。
【００３３】
まず、プログラム用のコマンドが、外部からシリアルＦｌａｓｈＩ／Ｆコントローラ３に入力されると、シリアルＦｌａｓｈＩ／Ｆコントローラ３は、管理テーブル制御回路７に制御信号を出力する。
【００３４】
この制御信号にしたがい、管理テーブル制御回路７は、プログラム対象データのプログラム先に対応する論理ブロックアドレスが“Ｎ”である場合には、論理ブロックアドレス“Ｎ”に対応付けられる、シリアルＦｌａｓｈ１の物理ブロックアドレス“Ａ”を、テーブルメモリ８のブロック管理テーブル８ａから読み出す。そして、管理テーブル制御回路７は、この読み出した物理ブロックアドレス“Ａ”をプログラム対象ブロックのアドレス情報として、シリアルＦｌａｓｈＩ／Ｆコントローラ３に通知する（ステップＳ１）。
【００３５】
シリアルＦｌａｓｈＩ／Ｆコントローラ３は、管理テーブル制御回路７から通知されたアドレス情報にしたがって、アクセス調停回路５に第１リクエスト信号（Ｒｅｑ１）を出力する（ステップＳ２）。第１リクエスト信号とは、シリアルＦｌａｓｈＩ／Ｆコントローラ３によるシリアルＦｌａｓｈ１へのアクセスの承認をアクセス調停回路５に要求する信号である。
【００３６】
アクセス調停回路５は、第１リクエスト信号にしたがって、シリアルＦｌａｓｈＩ／Ｆコントローラ３または４により、データバスが使用されているか否かを判別する。アクセス調停回路５は、例えば、シリアルＦｌａｓｈＩ／Ｆコントローラ３または４からアクセスの開始または終了が通知されることで、データバスの使用の有無を判別する。
【００３７】
アクセス調停回路５は、シリアルＦｌａｓｈＩ／Ｆコントローラ３または４によりデータバスが使用されていないと判別した場合には、シリアルＦｌａｓｈＩ／Ｆコントローラ３に第１承認信号（Ａｃｋ１）を出力する（ステップＳ３）。第１承認信号とは、シリアルＦｌａｓｈＩ／Ｆコントローラ３に対して、シリアルＦｌａｓｈ１へのアクセスを承認する信号である。本実施形態では、プログラム対象ブロック、つまり物理ブロックアドレス“Ａ”に対応する物理ブロックに既存のデータが記憶されていると仮定する。
【００３８】
シリアルＦｌａｓｈＩ／Ｆコントローラ３は、アクセス調停回路５からの第１承認信号にしたがって、プログラム対象ブロックである物理ブロックアドレス“Ａ”に対応する物理ブロックに記憶されるプログラム済みデータを消去する（ステップＳ４）。
【００３９】
ここで、データが消去できなかった場合、つまり、物理ブロックアドレス“Ａ”に対応する物理ブロックに対する消去動作後のステータスリードにより、プログラム済みデータが正常に消去されていないことが判明した場合には、シリアルＦｌａｓｈＩ／Ｆコントローラ３は、不良ブロック検出信号を不良ブロック通知回路６に出力する（ステップＳ４のＮＯ→Ｓ７）。この不良ブロック検出信号は、シリアルＦｌａｓｈ１の物理ブロックアドレス“Ａ”に対応する物理ブロックが不良ブロックである旨を通知する信号である。
【００４０】
ステップＳ４によるデータ消去が正常に実行された場合には、シリアルＦｌａｓｈＩ／Ｆコントローラ３は、メモリ９からプログラム対象データを読出し、このデータをシリアルＦｌａｓｈ１の物理ブロックアドレス“Ａ”に対応する物理ブロックの各ページに転送してプログラム（Ｒｅａｄｙ１信号：Ｈ→Ｌレベル）する（ステップＳ４→Ｓ５）。
【００４１】
ここで、プログラム対象データのプログラムが出来なかった場合、つまり、物理ブロックアドレス“Ａ”に対応する物理ブロックに対するプログラム動作後のステータスリードにより、プログラム対象データが正常にプログラムされていないことが判明した場合には、シリアルＦｌａｓｈＩ／Ｆコントローラ３は、不良ブロック検出信号を不良ブロック通知回路６に出力する。（ステップＳ５→Ｓ７）。因みに、ステップＳ４によるデータ消去が正常になされた上で、ステップＳ５によるデータプログラムが正常になされない場合とは、ステップＳ４によるデータ消去に伴い、このデータ消去を実行した物理ブロックが不良ブロックとなった場合である。
【００４２】
ステップＳ５によるプログラムが正常に実行された場合において、次のプログラム対象データ、つまりプログラムしたデータの次に連続したデータが有る場合には、管理テーブル制御回路７は、このデータのプログラム先に対応する論理ブロックアドレスに対応付けられた物理ブロックアドレスをブロック管理テーブル８ａから読み出して、プログラムを実行する（ステップＳ６→Ｓ１）。全てのプログラム対象データが正常にプログラム出来た場合には、プログラム処理を終了する（ステップＳ６のＮＯ→終了）。
【００４３】
ステップＳ５によるデータプログラムが正常になされなかった場合の説明に戻る。不良ブロック通知回路６は、シリアルＦｌａｓｈＩ／Ｆコントローラ３により出力された不良ブロック検出信号にしたがって、この不良ブロック検出信号に含まれる不良ブロックアドレス“Ａ”の情報を認識して、これを管理テーブル制御回路７に出力する。
【００４４】
管理テーブル制御回路７は、不良ブロック通知回路６からの不良ブロックアドレス“Ａ”の情報にしたがって、まず、論理ブロックアドレス“Ｎ”に対する代替ブロック、つまり、不良ブロックアドレス“Ａ”に対応した物理ブロックに代わる、代替プログラム対象の物理ブロックアドレスを、シリアルＦｌａｓｈ２の不良ブロック代替領域のなかから選択決定する（ステップＳ８）。管理テーブル制御回路７は、例えばシリアルＦｌａｓｈ２の不良ブロック代替領域の物理ブロックアドレス“Ｚ”を選択決定する。
【００４５】
そして、管理テーブル制御回路７は、この選択決定した物理ブロックアドレス“Ｚ”をテーブルメモリ８の代替アドレステーブル８ｂに記憶する。なお、この物理ブロックアドレス“Ｚ”に対応した物理ブロックには既存のデータがプログラムされていないと仮定する。
【００４６】
管理テーブル制御回路７は、新たに選択決定した物理ブロックアドレス“Ｚ”を、代替プログラム対象の物理ブロックのアドレス情報として、シリアルＦｌａｓｈＩ／Ｆコントローラ４に通知する。
【００４７】
管理テーブル制御回路７は、ステップＳ７による不良ブロック検出信号出力と同時に、前述したプログラム対象データの次に連続したデータに対応する論理ブロックアドレスに対応付けられる物理ブロックアドレスをブロック管理テーブル８ａから読み出し、これをシリアルＦｌａｓｈＩ／Ｆコントローラ３に通知する（ステップＳ７→Ｓ６→Ｓ１）。ここで、該プログラム対象データに対応する論理ブロックアドレスを“Ｎ＋１”とする。
【００４８】
ブロック管理テーブル８ａにおいて、論理ブロックアドレス“Ｎ＋１”は、シリアルＦｌａｓｈ１の物理ブロックアドレス“Ｂ”に対応付けられているとする（図２参照）。また、この物理ブロックアドレス“Ｂ”に対応する物理ブロックには、既存のデータが記憶されていると仮定する。
【００４９】
そして、前述したステップＳ２，Ｓ３の処理と同様の処理が実行され、アクセス調停回路５により、第１承認信号（Ａｃｋ１）がシリアルＦｌａｓｈＩ／Ｆコントローラ３に出力された場合には、シリアルＦｌａｓｈＩ／Ｆコントローラ３は、この第１承認信号にしたがって、プログラム対象のブロック、つまり物理ブロックアドレス“Ｂ”に対応する物理ブロックに記憶される既存のデータを消去する。
【００５０】
このデータ消去が正常に実行されたと仮定する。すると、シリアルＦｌａｓｈＩ／Ｆコントローラ３は、メモリ９からプログラム対象データを読出し、このデータを、シリアルＦｌａｓｈ１の物理ブロックアドレス“Ｂ”に対応する物理ブロックの各ページに転送して（Ｒｅａｄｙ１信号：Ｈ→Ｌレベル）プログラムする。
【００５１】
以降は、シリアルＦｌａｓｈＩ／Ｆコントローラ３は、前述したステップＳ１〜Ｓ５と同様の処理により、さらに次のプログラム対象データを任意の物理ブロックにプログラムする。
【００５２】
一方、シリアルＦｌａｓｈＩ／Ｆコントローラ４は、ステップＳ８により選択決定されて通知された物理ブロックアドレス“Ｚ”の情報にしたがって、アクセス調停回路５に第２リクエスト信号（Ｒｅｑ２）を出力する。第２リクエスト信号とは、シリアルＦｌａｓｈＩ／Ｆコントローラ４によるシリアルＦｌａｓｈ２へのアクセスの承認を要求する信号である。
【００５３】
アクセス調停回路５は、第２リクエスト信号にしたがって、シリアルＦｌａｓｈＩ／Ｆコントローラ３または４によりデータバスが使用されているか否かを判別する（ステップＳ９）。
【００５４】
アクセス調停回路５は、シリアルＦｌａｓｈＩ／Ｆコントローラ３または４によりデータバスが使用されていないと判別した場合には、シリアルＦｌａｓｈＩ／Ｆコントローラ４に第２承認信号（Ａｃｋ２）を出力する。第２承認信号とは、シリアルＦｌａｓｈＩ／Ｆコントローラ４に対して、シリアルＦｌａｓｈ２へのアクセスを承認する信号である。
【００５５】
シリアルＦｌａｓｈＩ／Ｆコントローラ４は、アクセス調停回路５からの第２承認信号にしたがって、代替プログラム対象データをメモリ９から読出す。代替プログラム対象データとは、シリアルＦｌａｓｈ１へのプログラムに失敗したデータである。
【００５６】
シリアルＦｌａｓｈＩ／Ｆコントローラ４は、この読み出したデータをシリアルＦｌａｓｈ２の物理ブロックアドレス“Ｚ”に対応する物理ブロックの各ページに転送して（Ｒｅａｄｙ２信号：Ｈ→Ｌレベル）プログラムを開始する（ステップＳ１０）。つまり、シリアルＦｌａｓｈ１に対するデータ消去中の時間を利用して、シリアルＦｌａｓｈ２の不良ブロック代替領域に対して代替プログラム対象データをプログラムする。
【００５７】
本実施形態において、前出したデータ消去に要する時間は、最大で３［ｍｓ］である。アクセス調停回路５は、この３［ｍｓ］以下の任意の時間を計測し、この時間が経過すると、シリアルＦｌａｓｈＩ／Ｆコントローラ４による、アドレス“Ｚ”に対応する物理ブロックへのプログラムを中断（ＣＳ２信号：Ｌ→Ｈレベル）させる。
【００５８】
つまり、シリアルＦｌａｓｈＩ／Ｆコントローラ４によるプログラムは、シリアルＦｌａｓｈＩ／Ｆコントローラ３による、次のプログラムの開始より前に終了させる。本実施形態では、代替プログラム対象データを、“Ｚ”に対応する物理ブロックの“１”ページ目から“Ｍ”ページ目までプログラムした時点でプログラムが中断したと仮定する。
【００５９】
そして、シリアルＦｌａｓｈＩ／Ｆコントローラ３による、論理ブロック“Ｎ＋１”に対応した物理ブロックへのプログラムが終了して、さらに次のプログラム対象の論理ブロック“Ｎ＋２”に対応した物理ブロックへのプログラムに先立ったデータ消去が開始されると、アクセス調停回路５は、シリアルＦｌａｓｈＩ／Ｆコントローラ４に第２承認信号（Ａｃｋ２）を出力する。
【００６０】
シリアルＦｌａｓｈＩ／Ｆコントローラ４は、アクセス調停回路５からの第２承認信号にしたがって、メモリ９に記憶された残りの代替プログラム対象データを読出し、これを、シリアルＦｌａｓｈ２のアドレス“Ｚ”に対応する物理ブロックにおける各ページに転送してプログラムを再開（ＣＳ２信号：Ｈ→Ｌレベル）する。各ページとは、代替プログラムが中断するまでの間にプログラムされたページの次（“Ｍ＋１”ページ）以降のページである。全ての代替プログラム対象データのプログラムが実行された場合には、シリアルＦｌａｓｈ２に対するプログラムが終了する（ステップＳ１１のＹＥＳ）。
【００６１】
そして、管理テーブル制御回路７は、テーブルメモリ８の代替アドレステーブル８ｂから、代替プログラム対象の物理ブロックアドレス“Ｚ”を読み出す。そして、管理テーブル制御回路７は、ブロック管理テーブル８ａにおいて、論理ブロックアドレス“Ｎ”に対応付けられる物理ブロックアドレスを、シリアルＦｌａｓｈ１の“Ａ”からシリアルＦｌａｓｈ２の“Ｚ”に変更する（ステップＳ１２）。
【００６２】
また、管理テーブル制御回路７は、不良ブロックのアドレス、つまりシリアルＦｌａｓｈ１の物理ブロックアドレス“Ａ”をプログラム不可ブロックのアドレスとして設定し、これを管理する。これにより、該アドレスに対応した物理ブロックは使用されなくなる。
【００６３】
つまり、シリアルＦｌａｓｈＩ／Ｆコントローラ３により、シリアルＦｌａｓｈ１の任意の物理ブロックにプログラム対象データがプログラム出来なかった場合に、このデータを、シリアルＦｌａｓｈＩ／Ｆコントローラ４により、代替プログラム対象であるシリアルＦｌａｓｈ２の物理ブロックにプログラムし、このプログラムと同時に、シリアルＦｌａｓｈＩ／Ｆコントローラ３は、シリアルＦｌａｓｈ１にプログラムできなかったデータの次に連続したデータをシリアルＦｌａｓｈ１における任意の物理ブロックにプログラムするので、不良ブロックが発生した場合のプログラム処理時間を短縮することができるようになる。
【００６４】
（第２実施形態）
次に本発明の第２の実施形態について説明する。
なお、この実施形態に係る構成は、第１の実施形態のそれと同一の部分については同一の符号を用いて、その説明は省略する。
前述した第１の実施形態では、シリアルＦｌａｓｈ１または２のうち一方のシリアルＦｌａｓｈで不良ブロックが発生した場合に、プログラム対象データを、他方のシリアルＦｌａｓｈにプログラムしたが、第２の実施形態では、不良ブロックの発生の有無に関係なく、常に、一方のシリアルＦｌａｓｈのデータ領域における任意の物理ブロック（通常のプログラム対象ブロック）と、他方のシリアルＦｌａｓｈの不良ブロック代替領域における任意の物理ブロック（代替プログラム対象ブロック）に同一のデータをブロック単位で連続的にプログラムする。そして、一方のシリアルＦｌａｓｈに不良ブロックが発生した場合には、不良ブロックに対応した他方のメモリのデータプログラム先を管理する。
【００６５】
図５は、本発明の第２の実施形態にしたがったメモリ管理システムの回路構成を示す図である。
図５に示すように、第２の実施形態にしたがったメモリ管理システムは、前述した第１の実施形態にしたがったメモリ管理システム（図１参照）で用いたアクセス調停回路５に代えて、タイミング発生回路１０を設けている。タイミング発生回路１０は、シリアルＦｌａｓｈＩ／Ｆコントローラ３，４と接続される。
【００６６】
タイミング発生回路１０は、シリアルＦｌａｓｈＩ／Ｆコントローラ３，４にそれぞれ同期信号を出力する。同期信号は、シリアルＦｌａｓｈＩ／Ｆコントローラ３によるシリアルＦｌａｓｈ１へのアクセスと、シリアルＦｌａｓｈＩ／Ｆコントローラ４によるシリアルＦｌａｓｈ２へのアクセスとを同一のタイミングで開始させるための信号である。
【００６７】
また、本実施形態では、第１の実施形態と同様に、ブロック管理テーブル８ａ（図２参照）において、プログラム対象データに対する論理ブロックアドレス“Ｎ”に、プログラム対象の物理ブロックアドレスである、シリアルＦｌａｓｈ１の物理ブロックアドレス“Ａ”が対応付けられると仮定する。
【００６８】
次に、第２の実施形態にしたがったメモリ管理システムの動作について説明する。
図６は、図５に示したメモリ管理システムが実行する書換え処理の内容を示すフローチャートである。
図７は、図５に示したメモリ管理システムが実行する書換え処理の内容を示すタイミングチャートである。
本実施形態では、シリアルＦｌａｓｈ１のデータ領域の任意の物理ブロックを通常のプログラム先とし、シリアルＦｌａｓｈ２の不良ブロック代替領域の任意の物理ブロックを代替プログラム先とした場合の処理について説明する。
まず、管理テーブル制御回路７は、例えば、ブロック管理テーブル８ａにおいて、論理ブロックアドレス“Ｎ”に対応付けられる、シリアルＦｌａｓｈ１の物理ブロックアドレス“Ａ”を読み出す。また、管理テーブル制御回路７は、シリアルＦｌａｓｈ２の不良ブロック代替領域における物理ブロックのなかから、物理ブロックアドレス“Ｚ”を選択決定して、これをテーブルメモリ８の代替アドレステーブル８ｂに記憶する。
【００６９】
本実施形態では、シリアルＦｌａｓｈ１のアドレス“Ａ”に対応する物理ブロックと、シリアルＦｌａｓｈ２のアドレス“Ｚ”に対応する物理ブロックには、それぞれ既存のデータが記憶されていると仮定する。
【００７０】
そして、管理テーブル制御回路７は、読み出した物理ブロックアドレス“Ａ”を通常のプログラム対象の物理ブロックアドレス情報として、シリアルＦｌａｓｈＩ／Ｆコントローラ３に通知する。また、管理テーブル制御回路７は、選択決定した物理ブロックアドレス“Ｚ”を代替プログラム対象の物理ブロックアドレス情報として、シリアルＦｌａｓｈＩ／Ｆコントローラ４に通知する（ステップＢ１）。
【００７１】
シリアルＦｌａｓｈＩ／Ｆコントローラ３は、管理テーブル制御回路７から通知された、通常のプログラム対象のアドレス情報を認識すると、タイミング発生回路１０に同期リクエスト信号を出力する。同期リクエスト信号とは、タイミング発生回路１０に対して、同期信号の出力を要求する信号である。また、シリアルＦｌａｓｈＩ／Ｆコントローラ４は、管理テーブル制御回路７から通知された、代替プログラム対象のアドレス情報を認識すると、タイミング発生回路１０に同期リクエスト信号を出力する。
【００７２】
タイミング発生回路１０は、シリアルＦｌａｓｈＩ／Ｆコントローラ３による同期リクエスト信号およびシリアルＦｌａｓｈＩ／Ｆコントローラ４による同期リクエスト信号をともに入力すると、シリアルＦｌａｓｈＩ／Ｆコントローラ３，４にそれぞれ同期信号を出力する。ただし、タイミング発生回路１０によるシリアルＦｌａｓｈＩ／Ｆコントローラ３への同期信号の出力タイミングと、シリアルＦｌａｓｈＩ／Ｆコントローラ４への同期信号の出力タイミングは同一とする。
【００７３】
シリアルＦｌａｓｈＩ／Ｆコントローラ３は、タイミング発生回路１０による同期信号にしたがって、シリアルＦｌａｓｈ１のデータ領域のアドレス“Ａ”に対応する物理ブロックにアクセスし（Ｒｅａｄｙ１信号：Ｈ→Ｌレベル）、この物理ブロックの既存データを消去（通常データ消去）する（ステップＢ２）。
【００７４】
また、シリアルＦｌａｓｈＩ／Ｆコントローラ４は、タイミング発生回路１０による同期信号にしたがって、シリアルＦｌａｓｈ２の不良ブロック代替領域のアドレス“Ｚ”に対応する物理ブロックにアクセスし（Ｒｅａｄｙ２信号：Ｈ→Ｌレベル）、この物理ブロックの既存データを消去（代替先データ消去）する（ステップＢ３）。このステップＢ３の処理は、前述したステップＢ２の処理と同時になされる。
【００７５】
ステップＢ３により代替先データ消去が出来なかった場合には、シリアルＦｌａｓｈＩ／Ｆコントローラ４は、この物理ブロックのアドレスを、不良ブロック通知回路６を介して管理テーブル制御回路７に通知する。そして、管理テーブル制御回路７は、アクセスした物理ブロックのアドレス“Ｚ”をプログラム不可ブロックのアドレスとして設定し、これを管理する。そして、シリアルＦｌａｓｈＩ／Ｆコントローラ３による通常データプログラムが正常になされず、これが管理テーブル制御回路７に通知された場合には、ステップＢ１の処理に戻り、代替プログラム先の物理ブロックを選択し直す（ステップＢ３のＮＯ→Ｂ８→Ｂ１）。
【００７６】
通常データ消去および代替先データ消去が正常になされた場合（Ｒｅａｄｙ１信号：Ｌ→Ｈレベル、Ｒｅａｄｙ２信号：Ｌ→Ｈレベル）には、シリアルＦｌａｓｈＩ／Ｆコントローラ３，４は、タイミング発生回路１０にそれぞれ同期リクエスト信号を出力する。タイミング発生回路１０は、シリアルＦｌａｓｈＩ／Ｆコントローラ３，４による同期リクエスト信号をそれぞれ入力すると、シリアルＦｌａｓｈＩ／Ｆコントローラ３，４に、同一のタイミングで同期信号を出力する。
【００７７】
そして、シリアルＦｌａｓｈＩ／Ｆコントローラ３は、メモリ９からプログラム対象データを読出し、これをシリアルＦｌａｓｈ１のアドレス“Ａ”に対応する物理ブロックの１ページ目にプログラム（通常データプログラム）する（ステップＢ４）。また、シリアルＦｌａｓｈＩ／Ｆコントローラ４は、シリアルＦｌａｓｈＩ／Ｆコントローラ３による通常データプログラムと並行して、メモリ９からプログラム対象データを読出し、これをシリアルＦｌａｓｈ２のアドレス“Ｚ”に対応する物理ブロックの１ページ目にプログラム（代替先データプログラム）する（ステップＢ５）。ステップＢ４，Ｂ５の処理は、それぞれ同時になされる。
【００７８】
ステップＢ５により代替先データプログラムが出来なかった場合には、シリアルＦｌａｓｈＩ／Ｆコントローラ４は、この物理ブロックのアドレスを、不良ブロック通知回路６を介して管理テーブル制御回路７に通知する。そして、管理テーブル制御回路７は、アクセスした物理ブロックのアドレス“Ｚ”をプログラム不可ブロックのアドレスとして設定し、これを管理する。そして、通常データプログラムが正常になされなかった場合には、ステップＢ１の処理に戻る（ステップＢ４のＮＯ→Ｂ８→Ｂ１）。
【００７９】
以降、シリアルＦｌａｓｈＩ／Ｆコントローラ３は、シリアルＦｌａｓｈ１のアドレス“Ａ”に対応する物理ブロックの２ページ目以降に対する通常データプログラムを実行する。全ての通常データプログラムが終了した場合、シリアルＦｌａｓｈＩ／Ｆコントローラ３はこれを管理テーブル回路７に通知する。
【００８０】
また、シリアルＦｌａｓｈＩ／Ｆコントローラ４は、シリアルＦｌａｓｈ２のアドレス“Ｚ”に対応する物理ブロックの２ページ目以降に対する代替先データプログラムを実行する。全ての代替先データプログラムが終了した場合、シリアルＦｌａｓｈＩ／Ｆコントローラ４はこれを管理テーブル回路７に通知する。
【００８１】
ステップＢ４の通常データプログラムが正常に実行されると（Ｒｅａｄｙ１信号：Ｌ→Ｈレベル）、このプログラムしたデータの次に連続するデータ、つまり次のプログラム対象データが有る場合には、ステップＢ１の処理に戻る（ステップＢ６→Ｂ１）。この場合、例えば、ブロック管理テーブル８ａにおいて、論理ブロックアドレス“Ｎ＋１”に対応付けられる、シリアルＦｌａｓｈ１の物理ブロックアドレス“Ｂ”（図２参照）を通常データプログラム対象の物理ブロックアドレスとして読出し、シリアルＦｌａｓｈ２の不良ブロック代替領域の物理ブロックアドレス“Ｙ”を代替先データプログラム対象の物理ブロックアドレスとして選択決定する。この場合、通常データプログラムが正常に実行されているので、代替先データプログラム対象の物理ブロックアドレスとして、シリアルＦｌａｓｈ２の不良ブロック代替領域の物理ブロックアドレス“Ｚ”を再度選択決定してもよい。
【００８２】
一方、ステップＢ２の通常データ消去または、ステップＢ４の通常データプログラムが出来なかった場合、つまり、物理ブロックアドレス“Ａ”に対応する物理ブロックが不良ブロックであった場合には、シリアルＦｌａｓｈＩ／Ｆコントローラ３は、不良ブロック検出信号を不良ブロック通知回路６に出力する。不良ブロック通知回路６は、不良ブロック検出信号にしたがって、この不良ブロック検出信号に含まれる不良ブロックアドレス“Ａ”を認識して、この情報を管理テーブル制御回路７に出力する。
【００８３】
管理テーブル制御回路７は、シリアルＦｌａｓｈＩ／Ｆコントローラ４による代替先データプログラムの終了通知、および不良ブロック通知回路６からの不良ブロックアドレス“Ａ”の情報にしたがって、ブロック管理テーブル８ａにおいて、論理ブロックアドレス“Ｎ”に対応付けられる物理ブロックアドレスを、プログラムが失敗したアドレス、つまりシリアルＦｌａｓｈ１の物理ブロックアドレス“Ａ”から、プログラムが成功したアドレス、つまりシリアルＦｌａｓｈ２の物理ブロックアドレス“Ｚ“に変更する（ステップＢ９）。
【００８４】
このアドレス”Ｚ“の情報は、テーブルメモリ８の代替アドレステーブル８ｂに記憶されていた情報である。管理テーブル制御回路７は、不良ブロックである、シリアルＦｌａｓｈ１の物理ブロックアドレス“Ａ”をプログラム不可ブロックのアドレスとして管理する。これにより、該アドレスに対応した物理ブロックは使用されなくなる。
【００８５】
プログラム中に不良ブロックを検出した場合において、別のプログラム対象データが有る場合には、ステップＢ１の処理に戻る（ステップＢ４のＮＯ→Ｂ６→Ｂ１）。ここで、通常データプログラムが出来なかった場合の、ステップＢ６以降の処理は、前述したステップＢ９の処理と同時になされる。この場合、代替先データプログラム対象の物理ブロックアドレスとして、シリアルＦｌａｓｈ２の不良ブロック代替領域の物理ブロックアドレス“Ｚ”は選択しない。
【００８６】
つまりブロック管理テーブル８ａにおいて、論理ブロックアドレスと物理ブロックアドレスとの対応付けを変更することで、プログラム処理中に不良ブロックが発生した場合でも、該プログラム処理を中断させることなく継続させることができる。
【００８７】
前述した、第１および第２の実施形態において、論理ブロックアドレスに対する物理ブロックアドレスは、予めブロック管理テーブル８ａに記憶されており、管理テーブル制御回路７は、この物理ブロックアドレスに基づいてプログラムを実行する構成としたが、これに限らず、例えば、プログラムを開始する時点で、管理テーブル制御回路７がプログラム対象の物理ブロックアドレスを選択決定し、これに基づいてプログラムを実行する手順としてもよい。
【００８８】
なお、本発明は前記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、前記実施形態には、種々の段階の発明が含まれており、開示される複数の構成要件における適宣な組み合わせにより種々の発明が抽出され得る。例えば、前記実施形態で示される全構成要件から幾つかの構成要件が削除されても、「発明が解決しようとする課題」で述べた課題が解決でき、「発明の効果」の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【００８９】
【発明の効果】
以上のように、本発明に係わる第１の発明によれば、不良ブロックのデータを第２のメモリの所定の領域に書込むと同時に、第１のメモリに対し、当該データの次に連続するデータの書込み動作を継続して実行するので、不良ブロックが発生した場合の場合の処理時間を短縮することができるようになる。
【００９０】
また、本発明に係わる第２の発明によれば、第１および第２のメモリに対して同一のデータの書込みを行い、その書込み動作中に一方のメモリに不良ブロックが発生した場合には、その不良ブロックに対応した他方のメモリのデータ書込み先を代替領域とするので、不良ブロックが発生した場合の場合の処理時間を短縮することができるようになる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態にしたがったメモリ管理システムの回路構成を示す図。
【図２】図１に示したテーブルメモリ８が有するブロック管理テーブル８ａの一例を示した図。
【図３】図１に示したメモリ管理システムが実行する処理の内容を示すフローチャート。
【図４】図１に示したメモリ管理システムが実行する処理の内容を示すタイミングチャート。
【図５】本発明の第２の実施形態にしたがったメモリ管理システムの回路構成を示す図。
【図６】図５に示したメモリ管理システムが実行する処理の内容を示すフローチャート。
【図７】図５に示したメモリ管理システムが実行する処理の内容を示すタイミングチャート。
【図８】シリアル方式のＦｌａｓｈメモリの構造の一例を示す図。
【図９】シリアル方式のＦｌａｓｈメモリにおける処理の一例を示すフローチャート。
【符号の説明】
１，２・・シリアルＦｌａｓｈ、３，４・・・シリアルＦｌａｓｈＩ／Ｆコントローラ、５・・アクセス調停回路、６・・不良ブロック通知回路、７・・管理テーブル制御回路、８・・テーブルメモリ、８ａ・・・ブロック管理テーブル、８ｂ・・・代替アドレステーブル、９・・メモリ、１０・・・タイミング発生回路。
【図１】
2004302938.tif 000003
【図２】
2004302938.tif 000004
【図３】
2004302938.tif 000005
【図４】
2004302938.tif 000006
【図５】
2004302938.tif 000007
【図６】
2004302938.tif 000008
【図７】
2004302938.tif 000009
【図８】
2004302938.tif 000010
【図９】
2004302938.tif 000011