(57)【特許請求の範囲】
【請求項１】
フラッシュメモリへのアクセスを制御するメモリコントローラであって、
電源電圧が予め設定された第１の電圧より低くなったことを検出する第１の電源電圧検出手段と、
電源電圧が第１の電圧より低くなった後に、予め設定された第２の電圧より高くなったことを検出する第２の電源電圧検出手段と、
電源電圧が第１の電圧より低くなってから第２の電圧より高くなるまでの間に予め設定された第３の電圧より低くなったことを検出する第３の電源電圧検出手段と、
電源電圧が第１の電圧より低くなったことを前記第１の電源電圧検出手段が検出したときにフラッシュメモリに対する処理を停止させ、電源電圧が第２の電圧より高くなったことを前記第２の電源電圧検出手段が検出したときにフラッシュメモリに対する処理を再開させ、電源電圧が第１の電圧より低くなってから第２の電圧より高くなるまでの間に第３の電圧より低くなったことを検出しなかった場合だけ、処理を再開させたときに停止していた処理を続行させる管理手段と、
を備え、
第２の電圧は第１の電圧より高い電圧値に、第３の電圧は第１の電圧より低い電圧値に設定されている、
ことを特徴とするメモリコントローラ。
【請求項２】
第３の電圧がフラッシュメモリの最小動作電圧と同じ電圧値に設定されていることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記管理手段は、電源電圧が第１の電圧より低くなってから第２の電圧より高くなるまでの間に第３の電圧より低くなったことを前記第３の電源電圧検出手段が検出した場合、処理を再開させたときに停止していた処理を中止し、フラッシュメモリを再起動させることを特徴とする請求項１に記載のメモリコントローラ。
【請求項４】
請求項１から３のいずれか１項に記載のメモリコントローラと、
フラッシュメモリと、
から構成されることを特徴とするフラッシュメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラおよび当該メモリコントローラを備えるフラッシュメモリシステムに関する。
【背景技術】
【０００２】
近年、不揮発性の記憶媒体であるフラッシュメモリの開発が行われ、デジタルカメラ等の情報機器（ホストシステム）の記憶媒体として普及している。
このような機器が扱うデータが大容量化したことに伴い、フラッシュメモリの大容量化・高密度化が進んでいる。
【０００３】
一般に、フラッシュメモリシステムは、フラッシュメモリと、メモリコントローラとから構成され、フラッシュメモリとメモリコントローラとは内部バスで接続され、メモリコントローラとホストシステムとは外部バスで接続される。ホストシステムは、メモリコントローラに、外部コマンドとフラッシュメモリに書き込むデータを供給する。メモリコントローラは、与えられた外部コマンドに従って、フラッシュメモリに内部コマンドを供給すると共に、ホストシステムから与えられたデータを転送する。
ここで、メモリコントローラから与えられる内部コマンドに従って書き込み処理等を実行するフラッシュメモリは、電源電圧が低下したときに誤動作することがある。この誤動作を防止するため、電源電圧が低下したときに機能を停止するフラッシュメモリがある（例えば、特許文献１を参照）。
【特許文献１】特開平１０−２４１３８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
フラッシュメモリシステムに供給される電源電圧がフラッシュメモリの最小動作電圧を下回ると、フラッシュメモリは動作しないがメモリコントローラは動作する場合がある。このような場合、フラッシュメモリが動作しないにもかかわらず、メモリコントローラが誤って内部コマンドや書き込みデータ等をフラッシュメモリに供給してしまうことがある。また、電源電圧が低下しても機能を停止しないフラッシュメモリを用いた場合には、電源電圧がフラッシュメモリの最小動作電圧より低くなっているにも関わらず、フラッシュメモリに内部コマンド等が供給され、フラッシュメモリが誤動作を起こすことがある。
【０００５】
本発明は、上記問題点に鑑みてなされたものであり、供給される電源電圧が所定の電圧以下となったときに、フラッシュメモリに対する処理を停止させるメモリコントローラおよびフラッシュメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明の第１の観点に係るメモリコントローラは、
フラッシュメモリへのアクセスを制御するメモリコントローラであって、
電源電圧が予め設定された第１の電圧より低くなったことを検出する第１の電源電圧検出手段と、
電源電圧が第１の電圧より低くなった後に、予め設定された第２の電圧より高くなったことを検出する第２の電源電圧検出手段と、
電源電圧が第１の電圧より低くなってから第２の電圧より高くなるまでの間に予め設定された第３の電圧より低くなったことを検出する第３の電源電圧検出手段と、
電源電圧が第１の電圧より低くなったことを前記第１の電源電圧検出手段が検出したときにフラッシュメモリに対する処理を停止させ、電源電圧が第２の電圧より高くなったことを前記第２の電源電圧検出手段が検出したときにフラッシュメモリに対する処理を再開させ、電源電圧が第１の電圧より低くなってから第２の電圧より高くなるまでの間に第３の電圧より低くなったことを検出しなかった場合だけ、処理を再開させたときに停止していた処理を続行させる管理手段と、
を備え、
第２の電圧は第１の電圧より高い電圧値に、第３の電圧は第１の電圧より低い電圧値に設定されている、
ことを特徴とする。
【０００７】
第３の電圧がフラッシュメモリの最小動作電圧と同じ電圧値に設定されていることが好ましい。
【０００８】
前記管理手段は、電源電圧が第１の電圧より低くなってから第２の電圧より高くなるまでの間に第３の電圧より低くなったことを前記第３の電源電圧検出手段が検出した場合、処理を再開させたときに停止していた処理を中止し、フラッシュメモリを再起動させることが好ましい。
【０００９】
上記課題を解決するため、本発明の第２の観点に係るフラッシュメモリシステムは、
上記のメモリコントローラと、
フラッシュメモリと、
から構成されることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、電源電圧が低下したときに、フラッシュメモリの最小動作電圧よりも高い所定の電圧で、フラッシュメモリに対する処理を停止し、電源電圧が回復したときにフラッシュメモリの正常動作が保証できるか否かを判断し、正常動作が保証できる場合には停止していた処理を続行するメモリコントローラおよびフラッシュメモリシステムを提供できる。従って、電源電圧が低下したときの誤動作が減少し、フラッシュメモリの信頼性を向上させることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態について、図面を参照して説明する。
【００１２】
図１は、本発明に係るフラッシュメモリシステム１を概略的に示すブロック図である。図１に示すように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するコントローラ３で構成されている。
【００１３】
なお、フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１４】
フラッシュメモリ２は、ＮＡＮＤ型フラッシュメモリから構成される。ＮＡＮＤ型フラッシュメモリは、不揮発性メモリであり、レジスタと、メモリセルアレイとから構成される。フラッシュメモリ２は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
【００１５】
メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
【００１６】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成される。ここで、上側のゲート、下側のゲートは、それぞれ、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。
【００１７】
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。
【００１８】
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「０」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「１」に対応する。
【００１９】
このようなフラッシュメモリ２のアドレス空間を図２に示す。フラッシュメモリ２のアドレス空間は、“ページ”及び“ブロック（物理ブロック）”で構成されている。
【００２０】
ページは、フラッシュメモリ２にて行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。物理ブロックは、フラッシュメモリ２にて行われるデータ消去動作における処理単位であり、複数個のページで構成されている。
【００２１】
図２に示したフラッシュメモリでは、１つのページは、１セクタ（５１２バイト）のユーザ領域２５と、１６バイトの冗長領域２６で構成され、１つの物理ブロックは３２個のページで構成されている。なお、１つのページが４セクタのユーザ領域と６４バイトの冗長領域で構成され、１つの物理ブロックが６４個のページで構成されているフラッシュメモリもある。ユーザ領域２５は、ホストシステム４から供給されるユーザデータを格納する。
【００２２】
冗長領域２６は、ＥＣＣ（Error Correcting Code）、論理アドレス情報、ブロックステータス（フラグ）等の付加データを記録するための領域である。
【００２３】
ＥＣＣは、ユーザ領域２５に記憶されているデータに含まれる誤りを検出し、訂正するためのデータであり、後述するＥＣＣブロックにより生成される。
【００２４】
論理アドレス情報は、フラッシュメモリ２の各物理ブロックに含まれている少なくとも１個のページのユーザ領域２５に有効なデータが格納されているとき、そのデータに対応する論理ブロックを特定するための情報である。
【００２５】
なお、ユーザ領域２５に有効なデータが格納されていない物理ブロックについては、そのブロックの冗長領域２６に、論理アドレス情報は格納されていない。
【００２６】
したがって、冗長領域２６に論理アドレス情報が格納されているか否かを判定することにより、その冗長領域２６が含まれている物理ブロックに有効なデータが格納されているか否かを判定することができる。つまり、冗長領域２６に論理アドレス情報が格納されていないとき、その物理ブロックには、有効なデータが格納されていない。
【００２７】
上述のように、１つの物理ブロックは、複数のページを含んでいる。これらのページには、データの上書きができない。このため、１つのページに格納されたデータのみを書き換えるときであっても、そのページが含まれた物理ブロック内の全ページに格納されたデータを、再度書き込まなければならない。
【００２８】
つまり、通常のデータ書き換えでは、書き換えるページが含まれる物理ブロックの全ページに格納されたデータが、別の消去されている物理ブロックに書き込まれる。この際、データが変更されないページに格納されているデータは、以前に格納されていたデータがそのまま再度書き込まれる。
【００２９】
上記のようにデータを書き換えるにあたっては、通常、書き換えられたデータは、以前に格納されていた物理ブロックとは異なる物理ブロックに書き込まれる。このため、論理ブロックアドレスと物理ブロックアドレスの間の対応関係は、フラッシュメモリ２にてデータが書き換えられる毎に、動的に変化する。
【００３０】
したがって、論理ブロックと物理ブロックとの対応関係を管理する必要があり、通常、この対応関係は、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各物理ブロックの冗長領域２６に記憶されている論理アドレス情報に基づいて作成される。なお、このような動的なアドレス管理手法は、上述の通り、フラッシュメモリを用いたメモリシステムでは一般的に行われている手法である。
【００３１】
ブロックステータス（フラグ）は、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域２６には、不良ブロックであることを示すブロックステータス（フラグ）が書き込まれる。
【００３２】
このようなフラッシュメモリ２は、コントローラ３から、データ、アドレス情報、内部コマンド等を受信して、データの読み出し処理、書き込み処理、ブロック消去処理、転送処理等の各処理を行う。
【００３３】
ここで、内部コマンドとは、コントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、コントローラ３から与えられる内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。
【００３４】
コントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣブロック１１と、ＲＯＭ（Read Only Memory）１２と、から構成される。これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００３５】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、コントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、各種処理等を定義したコマンドセットをＲＯＭ１２から読み出してフラッシュメモリインターフェースブロック１０に供給し、フラッシュメモリインターフェースブロック１０に処理を実行させる。
【００３６】
ホストインターフェースブロック７は、ホストシステム４との間の、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００３７】
より詳細には、ホストインターフェースブロック７は、ステータスレジスタＲ１と電源電圧検知回路Ｃ１と割り込みレジスタとを備える。
ステータスレジスタＲ１は、マイクロプロセッサ６が現在のフラッシュメモリシステム１の状態をホストシステム４に通知するためのレジスタである。たとえば、フラッシュメモリシステム１がビジー状態でありホストシステム４からのデータを受け付けない場合は、マイクロプロセッサ６はステータスレジスタＲ１にビジー状態であることを示す情報を設定し、ビジー状態が解除された場合はビジー状態でないことを示す情報を設定する。また、書き込み等の処理が正常に終了したかどうかを示すエラー情報も設定される。
電源電圧検知回路Ｃ１は、フラッシュメモリシステム１に供給される電源電圧が所定の電圧以下となった場合や所定の電圧以上となった場合に、マイクロプロセッサ６に割り込み信号を出力する回路である。また、電源電圧検知回路Ｃ１は複数種類の電圧を検知し、また、検知した電圧に基づいて、異なった割り込み信号を出力する。
割り込みレジスタ（図示せず）は、電源電圧検知回路Ｃ１による割り込み信号の出力状態を示すレジスタである。
【００３８】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００３９】
バッファ９は、フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ２から読み出されたデータは、ホストシステム４が受け取り可能な状態となるまでバッファ９に保持され、フラッシュメモリ２に書き込むべきデータは、フラッシュメモリ２が書き込み可能な状態となるまでバッファ９に保持される。
【００４０】
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。より詳細には、フラッシュメモリインターフェースブロック１０は、アドレス処理部、コマンドレジスタ、命令処理ブロック等から構成される。
【００４１】
フラッシュメモリインターフェースブロック１０は、命令処理ブロックによって出力される内部コマンド、アドレス情報等をフラッシュメモリ２に供給することにより、フラッシュメモリ２に読み出し、書き込み等を実行させる。
【００４２】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータ（ユーザデータ）に付加されるＥＣＣを生成するとともに、読み出しデータに付加されたＥＣＣに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００４３】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ＲＯＭ１２は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
【００４４】
本実施形態においては、コントローラ３の定格電圧は３．３Ｖ、最大動作電圧は３．６Ｖ、最小動作電圧は２．７Ｖであるものとし、フラッシュメモリ２の定格電圧は３．３Ｖ、最大動作電圧は３．６Ｖ、最小動作電圧は２．８Ｖであるものとする。
【００４５】
続いて、図３及び図４に示したような電源電圧変動が生じたときのコントローラ３の動作について図５のフローチャートを用いて説明する。
【００４６】
第１の電源電圧変動は、図３に示すように、電源電圧が３．０Ｖより低くなるが、２．８Ｖより低くなることなく回復（３．１Ｖより高い電源電圧に回復）した場合の例である。
【００４７】
ここで、図３に示すように、フラッシュメモリシステム１に供給される電源電圧が、フラッシュメモリ２の定格電圧（３．３Ｖ）と最小動作電圧（２．８Ｖ）の間の第１の電圧（３．０Ｖ）より低くなったときに、電源電圧検知回路Ｃ１が割り込み信号ＩＮＴ０を発生する。
割り込み信号ＩＮＴ０の発生後に、電源電圧が第２の電圧（３．１Ｖ）より高くなったときに、割り込み信号ＩＮＴ１を発生する。
【００４８】
一方、第２の電圧変動は、図４に示すように、電源電圧がフラッシュメモリ２の最小動作電圧（２．８Ｖ）より低くなり、コントローラ３の最小動作電圧（２．７Ｖ）より低くなることなく回復（３．１Ｖより高い電圧に回復）した場合の例である。
【００４９】
ここで、図４に示すように、フラッシュメモリシステム１に供給される電源電圧が、フラッシュメモリ２の定格電圧（３．３Ｖ）と最小動作電圧（２．８Ｖ）の間の第１の電圧（３．０Ｖ）より低くなったときに、電源電圧検知回路Ｃ１が割り込み信号ＩＮＴ０を発生する。
【００５０】
割り込み信号ＩＮＴ０の発生後に、フラッシュメモリシステム１に供給される電源電圧が更に低下して、フラッシュメモリ２の最小動作電圧である第３の電圧（２．８Ｖ）より低くなったときに、電源電圧検知回路Ｃ１が割り込み信号ＩＮＴ２を発生する。
【００５１】
割り込み信号ＩＮＴ２の発生後に、フラッシュメモリシステム１に供給される電圧が第２の電圧（３．１Ｖ）より高くなったときに、電源電圧検知回路Ｃ１が割り込み信号ＩＮＴ１を発生する。
【００５２】
フラッシュメモリシステム１に供給される電源電圧が第３の電圧（２．８Ｖ）より低くなった後、第２の電圧（３．１Ｖ）より高い電圧まで回復することから、第２の電圧変動では、ＩＮＴ０、ＩＮＴ２、ＩＮＴ１の順番で割り込み信号が発生する。
【００５３】
次に、図５のフローチャートを用いて、第１の電源電圧変動と第２の電源電圧変動におけるコントローラ３の動作について説明する。なお、以下の説明で、フラッシュメモリシステム１は書き込み処理を行っていたものとする。
【００５４】
まず、マイクロプロセッサ６は、供給される電源電圧が第１の電圧（３．０Ｖ）より低くなり、電源電圧検知回路Ｃ１から、割り込み信号ＩＮＴ０が発生したかどうかを判別する（ステップＳ１）。割り込み信号ＩＮＴ０が発生していなければ（ステップＳ１；Ｎｏ）、再度、ステップＳ１に戻る。つまり、コントローラ３は、割り込み信号ＩＮＴ０の発生を待ちつつ、フラッシュメモリ２に内部コマンド等を供給し、書き込み処理を続ける。
【００５５】
割り込み信号ＩＮＴ０が発生した場合（ステップＳ１；Ｙｅｓ）、コントローラ３は、フラッシュメモリ２に対する新たな内部コマンド等の供給を停止する（ステップＳ２）。この場合、コントローラ３からフラッシュメモリ２に転送されたデータがフラッシュメモリ２内のレジスタに存在していても、レジスタからメモリセルアレイへの書き込みを指示する内部コマンドを供給しない。ここで、レジスタからメモリセルアレイへの書き込みを指示する内部コマンドを供給しないのは、レジスタからメモリセルアレイへの書き込みを実行しているときに、電源電圧がフラッシュメモリ２の最小動作電圧（２．８Ｖ）より低くなった場合、その書き込みを正常に終了させることができなくなるからである。このような場合、フラッシュメモリ２内に正常に書き込まれていないデータが残ってしまい記憶データの信頼性を低下させてしまう。
【００５６】
マイクロプロセッサ６は、電源電圧検知回路Ｃ１が割り込み信号ＩＮＴ０を発生した後に、電源電圧が更に低下して第３の電圧（２．８Ｖ）より低くなり、電源電圧検知回路Ｃ１から割り込み信号ＩＮＴ２が発生したかどうかを判別する（ステップＳ１０１）。第２の電圧変動の場合は、電源電圧が第３の電圧（２．８Ｖ）より低くなり、割り込み信号ＩＮＴ２が発生するので、ステップＳ１０２に進む（ステップＳ１０１；Ｙｅｓ）。一方、第１の電圧変動の場合は、電源電圧が第３の電圧（２．８Ｖ）より低くならず、割り込み信号ＩＮＴ２が発生しないので、ステップＳ４に進む（ステップＳ１０１；Ｎｏ）。
【００５７】
割り込み信号ＩＮＴ２が発生した場合、つまり、電源電圧が第３の電圧（２．８Ｖ）より低くなった場合（ステップＳ１０１；Ｙｅｓ）、マイクロプロセッサ６は、割り込みレジスタに、電源電圧が第３の電圧（２．８Ｖ）より低くなり割り込み信号ＩＮＴ２が発生したことを示す情報（以下、この情報を中止情報という。）を設定する（ステップＳ１０２）。この中止情報は、割り込み信号ＩＮＴ２が発生した場合だけ設定されるので、第１の電圧変動では中止情報が設定されない。
【００５８】
続いて、マイクロプロセッサ６は、電源電圧が回復して、電源電圧が第２の電圧（３．１Ｖ）より高くなり、電源電圧検知回路Ｃ１から割り込み信号ＩＮＴ１が発生したかどうかを判別する（ステップＳ４）。ここで、電源電圧が第２の電圧（３．１Ｖ）より高くならず、割り込み信号ＩＮＴ１が発生しなかった場合は（ステップＳ４；Ｎｏ）、ステップＳ１０２に戻り、割り込み信号ＩＮＴ２が発生したかどうかと、割り込み信号ＩＮＴ１が発生したかどうかを再度判断する。
【００５９】
電源電圧が第２の電圧（３．１Ｖ）より高くなり、割り込み信号ＩＮＴ１が発生した場合（ステップＳ４；Ｙｅｓ）、マイクロプロセッサ６は、割り込みレジスタに中止情報が設定されているかどうかを判別する（ステップＳ１０３）。判別の結果、中止情報が設定されている場合、つまり、第２の電圧変動の場合（ステップＳ１０３；Ｙｅｓ）、ステップＳ１０４に進み、中止情報が設定されていない場合、つまり、第１の電圧変動の場合（ステップＳ１０３；Ｎｏ）、ステップＳ５に進む。
【００６０】
中止情報が設定されている場合は、割り込み信号ＩＮＴ１が発生する前に割り込み信号ＩＮＴ２が発生しているので、電源電圧がフラッシュメモリ２の最小動作電圧（第３の電圧（２．８Ｖ））以下になった後に電源電圧が回復したと判断する。電源電圧がフラッシュメモリ２の最小動作電圧以下になった場合、フラッシュメモリ２の正常動作が保証できないため、フラッシュメモリ２をリセットして初期化する必要がある。従って、中止情報が設定されている場合（ステップＳ１０３；Ｙｅｓ）、停止していた書き込み処理を中止して、フラッシュメモリ２にリセット（再起動）を指示する内部コマンドを供給する（ステップＳ１０４）。
【００６１】
フラッシュメモリ２をリセット（再起動）して初期化が終了した後に、中止した書き込み処理で書き込み先になっていた物理ブロック内の有効データだけを、他の物理ブロックに転送し、中止した書き込み処理で書き込み先になっていた物理ブロックに記憶されているデータを消去する。（ステップＳ１０５）。又、中止した書き込み処理でホストシステム４から供給されたデータがバッファ９に残っている場合は、これを破棄する。
【００６２】
ここで、有効データとは、物理ブロックに記憶されているデータであって、中止した書き込み処理で中止前に書き込んだデータを除いて残ったデータをいう。例えば、１５ページ分のデータが記憶されている物理ブロックに、１０ページ分のデータを追加書き込みする書き込み処理を、５ページ分のデータを書き込んだ時点で中止した場合は、この５ページ分のデータを書き込む前に物理ブロックに記憶されていた１５ページ分のデータを有効なデータとして取り扱う。
【００６３】
続いて、マイクロプロセッサ６は、ステータスレジスタＲ１に、書き込み処理がエラーになったことを通知するエラー情報を設定する（ステップＳ１０６）。ホストシステム４は、このエラー情報に基づいて、書き込み処理がエラーになったことを知り、再度書き込み処理を実行する場合は、外部コマンド等をフラッシュメモリシステム１に再度供給する。
【００６４】
中止情報が設定されていない場合は、電源電圧がフラッシュメモリ２の最小動作電圧（第３の電圧（２．８Ｖ））より低くならずに電源電圧が回復したと判断する。従って、中止情報が設定されてない場合（ステップＳ１０３；Ｎｏ）、停止していた書き込み処理を続行する（ステップＳ５）。つまり、フラッシュメモリ２に対する内部コマンド等の供給を再開する。例えば、コントローラ３からフラッシュメモリ２にデータを転送した後で内部コマンド等の供給を停止していた場合は、レジスタからメモリセルアレイへの書き込みを指示する内部コマンドを供給する。
【００６５】
コントローラ３が処理を再開し、ステップＳ５の処理又はステップＳ１０４〜Ｓ１０６の処理を行った後はステップＳ１に戻る。ステップＳ１に戻った後は、電源電圧が第１の電圧（３．０Ｖ）より低くなり、電源電圧検知回路Ｃ１から割り込み信号ＩＮＴ０が発生するのを待ちつつ、処理が続けられる。
【００６６】
以上説明したように、本発明に係るコントローラ３は、電源電圧が予め設定された第１の電圧より低くなったときに処理を停止し、その後、電源電圧が予め設定された第２の電圧より高くなったときに処理を再開する。更に、処理を停止してから処理を再開するまでの間に予め設定された第３の電圧より低くなった期間がある場合は、電源電圧が第２の電圧より高くなっても、停止していた処理を続行せずに処理を中止する。ここで、第１の電圧及び第２の電圧は、フラッシュメモリの最小動作電圧から定格電圧までの間で適宜設定することができる。但し、第２の電圧は、第１の電圧よりも高い電圧に設定する。第３の電圧は、第１の電圧よりも低い電圧に設定すればよいが、フラッシュメモリの最小動作電圧と一致するように設定することが好ましい。
【００６７】
電源電圧が予め設定された第１の電圧より低くなったときに処理を停止するようにしたので、フラッシュメモリ内で処理が実行されている最中に電源が遮断され、フラッシュメモリ内に正常に書き込まれていないデータが残ってしまうことを回避することができる。又、フラッシュメモリが正常に動作する状態であるか否かを判断して、正常に動作する状態であると判断した場合は処理を続行し、正常に動作する状態でないと判断した場合は処理を中止するようにしたので、電源電圧が回復した後の処理の信頼性も向上する。
【００６８】
尚、上記実施の形態では、電源電圧検知回路Ｃ１をコントローラ３の内部に設けたが、電源電圧検知回路Ｃ１をコントローラ３の外部に設けて、電源電圧検知回路Ｃ１から発生する割込み信号ＩＮＴ０〜ＩＮＴ２がコントローラ３に入力されるようにしてもよい。
【図面の簡単な説明】
【００６９】
【図１】フラッシュメモリシステムの一例を示すブロック図である。
【図２】フラッシュメモリのアドレス空間の構造の一例を示す図である。
【図３】フラッシュメモリシステムへの供給電圧が変化する場合における、供給電圧を示す図および割り込み信号の発生のタイミングチャートを示す図である。
【図４】フラッシュメモリシステムへの供給電圧が変化する場合における、供給電圧を示す図および割り込み信号の発生のタイミングチャートを示す図である。
【図５】フラッシュメモリシステムへの供給電圧が変化する場合における、コントローラの処理のフローチャートである。
【符号の説明】
【００７０】
１    フラッシュメモリシステム
２    フラッシュメモリ
３    コントローラ
４    ホストシステム
６    マイクロプロセッサ
７    ホストインターフェースブロック
８    ワークエリア
９    バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  ＲＯＭ
１３  外部バス
１４  内部バス
【図１】
0004544167.tif 000002
【図２】
0004544167.tif 000003
【図３】
0004544167.tif 000004
【図４】
0004544167.tif 000005
【図５】
0004544167.tif 000006