本発明者は本発明に先立ってフラッシュメモリモジュールとメインCPU(以下、CPUと言う)をチップ上に搭載したマイクロコントローラの開発に従事した。フラッシュメモリモジュールは、フラッシュメモリとフラッシュコントロールユニットとを含み、フラッシュメモリモジュールのフラッシュメモリの書き込み及び消去の制御はフラッシュコントロールユニットのローカルCPUのプログラム制御によって行われる。
マイクロコントローラのCPUはフラッシュコントロールユニットのローカルCPUにフラッシュメモリの書き込み又は消去を行う所定のコマンドを発行すると、所定のコマンドに応答してローカルCPUは命令の逐次実行によりフラッシュメモリの書き込み又は消去を行う。その結果、フラッシュコントロールユニットのローカルCPUによるフラッシュメモリの書き込み又は消去の動作と並列に、CPUはフラッシュメモリへのアクセス以外のその他のデータ処理の動作を実行することが可能となり、リアルタイム性能を向上することができる。
フラッシュメモリモジュールとCPUとを内蔵するマイクロコントローラを搭載する種々の電子機器では、稼働中の種々のユーザーデータや稼働終了時の種々のユーザーデータがフラッシュメモリに書き込まれることによって不揮発性メモリへと記憶される。これらのユーザーデータの不揮発性メモリに対する記憶により、電子機器の稼動状況が把握される。フラッシュメモリでは、データの書き込みは消去済みの領域に行われる。また、フラッシュメモリでは、消去単位はハードディスクの1セクター(512バイト)の整数倍、例えば2048バイトの消去ブロックとされることが多い。一方、データの書き込み単位は128バイトのページと、消去ブロックよりも小さなものとなる。小さなサイズの同一ファイル名でも生成日時の異なる複数のユーザーデータは1つの消去ブロック中に書き込まれるが、1つの消去ブロックに空き領域が無くなると、同一ファイル名でも生成日時の新しいユーザーデータは別の1つの消去済みの消去ブロック中に書き込まれる。同一ファイル名で生成日時の古いユーザーデータを格納して空き領域が無くなった古い消去ブロックは一般に不必要であるので、古い消去ブロックの有効フラグは無効にマークされる。無効な古い消去ブロックは稼働中の適切なタイミングで消去されることにより、空き領域が生成されて再利用が可能となる。
冒頭で説明したように、フラッシュメモリでは、読み出し動作の時間と比較すると消去の動作時間は長い。無効な古い消去ブロックの消去は空き領域の生成による再利用のために必須であるが、この古い消去ブロックに対する長時間の消去動作の間に、新しいユーザーデータが書き込まれた別の消去ブロックの読み出しが必要になる。古い消去ブロックに対する消去中には、割り込みによる中断命令を用いて消去動作を中断して、中断期間中に新しいユーザーデータを読み出すことが可能である。しかし、リアルタイム性の高い機器制御を実現するためには、新しいユーザーデータの読み出し要求に対する応答時間を短縮するために、消去動作の間の割り込みによる中断命令を供給してから実際に中断されるまでの移行時間を短くする必要性が明らかになった。
一方、消去に際して不揮発性フラッシュメモリセルへの電気的ストレスを低減しないと、良く知られているようにフラッシュメモリの寿命を短くする。フラッシュメモリの消去回数は10万回程度と言うことも、良く知られている。フラッシュメモリでは、書き込み単位は128バイトのページと小さく、消去単位はハードディスクの1セクターの整数倍と大きいので、フラッシュメモリを長寿命化するには書き込み時のストレスよりも消去時のストレスを低減することが必要である。フラッシュメモリの長寿命化のために、不揮発性フラッシュメモリセルへ書き込み時に印加される書き込みパルスの振幅値よりも消去時に印加される消去パルスの振幅値を小さくして消去時のストレスを低減する。その結果、消去パルスの印加と消去ベリファイとの反復による消去動作の時間は、書き込みパルスの印加と書き込みベリファイとの反復による書き込み動作の時間よりも長くなる。この長時間の消去動作中に割り込みによる中断命令を供給して消去動作を中断して読み出し動作を行った後に、レジュームコマンドの復帰命令により中断した消去動作を再開するに際しては、不揮発性フラッシュメモリセルへのストレスが低い再開方法が必要となることが明らかとなった。
フラッシュメモリモジュールとCPUとをチップ上に搭載したマイクロコントローラを種々の電子機器に搭載するに際して、種々の電子機器の制御プログラムがマイクロコントローラ搭載のフラッシュメモリモジュールのフラッシュメモリに格納される。大量のプログラムのデータをマイクロコントローラ搭載のフラッシュメモリモジュールのフラッシュメモリに書き込もうとすると、書き込み動作の時間は非常に長くなる。また、マイクロコントローラを出荷する半導体メーカーは、出荷前にマイクロコントローラ内蔵のフラッシュメモリを消去する。しかし、消去が不完全な場合もあり、電子機器メーカーはマイクロコントローラ内蔵フラッシュメモリの消去を行うことになる。この消去は内蔵フラッシュメモリの全てのユーザーデータ領域のデータを消去することになるので、消去動作の時間も更に非常に長くなる。
このような長時間の書き込み動作もしくは消去動作の間に、書き込み対象もしくは消去対象のマイクロコントローラが不良である場合もある。半導体メーカーは出荷前にマイクロコントローラの試験を行い、良品のみを出荷する。しかし、試験が完璧でなく、不良品が混入する可能性もあり、また出荷後の在庫期間中に良品が不良品となる可能性もある。不良品に長時間の書き込み動作もしくは消去動作を行っても、書き込み動作もしくは消去動作が完了しないことが多い。従って、電子機器メーカーは、生産ラインでの長時間の書き込み動作もしくは消去動作の途中で良品のマイクロコントローラから生産ラインの書き込み・消去装置へ定期的に通信する方式を採用する。不良品は書き込み・消去装置へ定期的な通信も行えないので、書き込み・消去装置は定期的な通信のないマイクロコントローラを不良品として認識して、この不良品への書き込み動作もしくは消去動作を中止することができる。
この長時間の書き込み動作もしくは消去動作の間の書き込み・消去装置への通信に、割り込みによる中断命令を用いて書き込み動作もしくは消去動作を中断して、中断期間中にマイクロコントローラから書き込み・消去装置へ良品としての適切なデータの転送を行うことが可能である。しかし、長時間の書き込み動作もしくは消去動作中に割り込みによる中断命令を供給して書き込み・消去装置への通信を行った後に、レジュームコマンドの復帰命令により書き込み動作もしくは消去動作を再開するに際しては、同一の書き込み動作もしくは消去動作を繰り返さないようにしないと生産ラインでの書き込み・消去のトータル時間を短縮することができないことが明らかとなった。
無効な古い消去ブロックの消去中の割り込みによる中断命令の供給から実際の中断までの移行時間を短くするためには、中断命令に応答して消去パルスの印加を直ちに解除することが望ましい。しかし、この方法では、復帰命令により中断した消去動作を再開するに際して印加解除した同一の消去パルスが再び不揮発性フラッシュメモリセルに印加される。従って、不揮発性フラッシュメモリセルへの消去パルスの印加回数が大きくなり、不揮発性フラッシュメモリセルへのストレスが高いことが明らかとなった。また、同一の消去パルス印加処理が繰り返される方法では、消去処理全体に要する時間を短縮することができないことも明らかになった。
本発明は上記の如き本発明に先立った本発明者等の検討により明らかとなった事項を基にしてなされたものであり、本発明の目的とするところは書き込み動作又は消去動作中の割り込みによる中断命令の供給から実際の中断までの移行時間を短くする一方、復帰命令により中断した書き込み動作又は消去動作を再開するに際して不揮発性メモリへのストレスを低減すること、あるいは書き込み・消去処理全体に要する時間を短縮することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
〔1〕本発明に係る半導体集積回路(1)は、電気的に書き込み又は消去可能な不揮発性メモリ(4)と当該不揮発性メモリ(4)の書き込みと消去との少なくともひとつの動作の制御を行うコントローラ(5)を具備する。
前記コントローラ(5)は、書き込み命令又と消去命令との少なくともひとつの命令に応答して前記不揮発性メモリ(4)へ前記書き込みと前記消去との前記少なくともひとつの動作のパルスの印加とベリファイとの反復処理により前記少なくともひとつの動作の不揮発記憶動作を制御する。
前記コントローラは、第1の動作(SUSP=“1”)と第2の動作(SUSP=“0”)とに設定されることができる。
前記第1の動作(SUSP=“1”)に設定された前記コントローラ(5)は、前記不揮発記憶動作の前記反復処理の前記パルスの前記印加中に中断命令に応答して前記パルスの前記印加の解除により前記不揮発記憶動作を中断する(S7A)。前記第1の動作(SUSP=“1”)に設定された前記コントローラ(5)は、復帰命令に応答して前記解除となった前記パルスの印加から中断された前記不揮発記憶動作の前記反復処理を再開する(S8A)。
前記第2の動作(SUSP=“0”)に設定された前記コントローラ(5)は、前記不揮発記憶動作の前記反復処理の前記パルスの前記印加中に中断命令に応答して前記パルスの前記印加を継続して前記印加の完了した時点で前記不揮発記憶動作を中断する(S7B)。前記第2の動作に設定された前記コントローラ(5)は、復帰命令に応答して前記印加の完了した不揮発性メモリセルのベリファイから中断された前記不揮発記憶動作の前記反復処理を再開する(S8B;図5参照)。
前記第1の動作に設定された前記コントローラ(5)による前記不揮発記憶動作の中断処理と再開処理とにより、割り込みによる中断命令の供給から実際の中断までの移行時間を短くすることが可能となる。
また、前記第2の動作に設定された前記コントローラ(5)による前記不揮発記憶動作の中断処理と再開処理とにより、不揮発性記憶装置へのストレスを低減すること、および書き込み又は消去処理全体に要する時間を短縮することが可能となる。
本発明の好適な形態による半導体集積回路(1)は、前記コントローラ(5)は揮発性メモリ(15)と前記反復処理による前記不揮発記憶動作の制御のための動作制御レジスタ(18)とを含む。前記不揮発記憶動作の中断の後に前記復帰命令に応答して前記不揮発記憶動作の前記反復処理の再開に必要な前記動作制御レジスタ(18)の情報を、前記コントローラ(5)は前記不揮発記憶動作の前記中断の前に前記揮発性メモリ(15)に退避する(S45、S49;図7参照)。前記復帰命令に応答して前記コントローラ(5)は、前記揮発性メモリ(15)に退避した前記情報を前記動作制御レジスタ(18)に回復して中断された前記不揮発記憶動作の前記反復処理を再開する(S61、S64、S67;図8参照)。
本発明のより好適な形態による半導体集積回路(1)では、前記コントローラ(5)は前記消去命令に応答して前記不揮発性メモリ(4)へ前記消去のパルスの印加とベリファイとの反復処理により消去(S6)の前記不揮発記憶動作を制御する。前記コントローラ(5)は前記中断命令に応答して前記消去の前記不揮発記憶動作を中断する(S7A、S7B)。前記消去の前記不揮発記憶動作の中断の間に、前記不揮発性メモリ(4)は読み出し可能な状態とされる(S4;図5参照)。
本発明のより好適な形態による半導体集積回路(1)では、前記第1の動作(SUSP=“1”)に設定された前記コントローラ(5)が前記不揮発記憶動作の前記反復処理の前記パルスの前記印加中に前記中断命令に応答して前記不揮発記憶動作の中断に際して前記パルスの前記印加を解除すると(S111)、前記コントローラ(5)の動作モードを前記第1の動作(SUSP=“1”)から前記第2の動作(SUSP=“0”)に変更するフラグ情報を設定する(S112)。前記コントローラ(5)が前記復帰命令に応答して前記解除となった前記パルスの印加からの中断された前記不揮発記憶動作の前記反復処理の再開中に再び中断命令を受けると、前記設定されたフラグ情報に応答して前記コントローラ(5)は前記第2の動作(SUSP=“0”)に設定されることによって前記不揮発記憶動作の再開された前記反復処理の前記パルスの前記印加中に前記中断命令に応答して前記パルスの前記印加を継続して前記印加の完了した時点で前記不揮発記憶動作を中断する(S42、S43、S113;図12参照)。前記第2の動作に設定された前記コントローラ(5)は、復帰命令に応答して前記印加の完了した不揮発性メモリセルのベリファイから中断された前記不揮発記憶動作の前記反復処理を再開する(S17;図11参照)。
本発明の前記より好適な形態による手段によれば、前記コントローラ(5)の前記第1の動作(SUSP=“1”)により書き込み動作又は消去動作中の割り込みによる中断命令の供給から実際の中断までの移行時間は短くなるが、中断によって不揮発記憶動作の反復処理のパルス印加が一向に進展しないと言う事態を回避することができる。
本発明のより好適な形態による半導体集積回路(1)は、前記不揮発性メモリ(4)に格納されたプログラムによって動作可能な中央処理ユニット(2)と、前記中央処理ユニット(2)のワーク領域として動作可能なランダムアクセスメモリ(3)と、内部バス(IBUS)と、バスコントローラ(6)と、周辺バス(PBUS)と、周辺回路(7)とを含む。前記中央処理ユニット(2)と前記ランダムアクセスメモリ(3)と前記不揮発性メモリ(4)の読み出しポートとは前記内部バス(IBUS)に接続され、前記内部バス(IBUS)は前記バスコントローラ(6)を介して前記周辺バス(PBUS)に接続され、前記周辺バス(PBUS)に前記周辺回路(7)と前記コントローラ(5)とが接続され、前記不揮発性メモリ(4)の不揮発記憶ポートは前記コントローラ(5)を介して前記周辺バス(PBUS)に接続される。前記中央処理ユニット(2)は前記内部バス(IBUS)を介して前記不揮発性メモリ(4)の前記読み出しポートからのデータの読み出しを行い、前記コントローラ(5)は前記不揮発性メモリ(4)の前記不揮発記憶ポートから前記不揮発記憶動作を制御する。
本発明のより好適な形態による手段によれば、前記中央処理ユニット(2)による前記内部バス(IBUS)を介して前記不揮発性メモリ(4)の前記読み出しポートからのデータの高速読み出しが可能となる。また、前記中央処理ユニット(2)による前記内部バス(IBUS)を介して前記ランダムアクセスメモリ(3)へのアクセスと並列に、前記周辺バス(PBUS)と前記不揮発性メモリ(4)の前記不揮発記憶ポートとを介して前記コントローラ(5)は前記不揮発性メモリ(4)の前記不揮発記憶動作を制御することが可能となる。
本発明のより好適な形態による半導体集積回路(1)では、前記中断命令に応答して前記不揮発記憶動作が中断されている間に、前記中央処理ユニット(2)は読み出し命令に応答して前記内部バス(IBUS)と前記バスコントローラ(6)と前記周辺バス(PBUS)と前記コントローラ(5)とを介して前記不揮発性メモリ(4)の前記不揮発記憶ポートからのデータの読み出しを行うものである。
本発明の具体的な形態による半導体集積回路(1)では、前記コントローラ(5)に供給される動作モード信号(SUSP)により前記コントローラ(5)は前記第1の動作(SUSP=“1”)と前記第2の動作(SUSP=“0”)とのいずれにも任意に設定される。
本発明のより具体的な形態では、前記不揮発性メモリ(4)は、プログラムを格納する第1不揮発性メモリ(4A)と、ユーザーデータを格納する第2不揮発性メモリ(4B)とを含む。前記第1不揮発性メモリ(4A)と前記第2不揮発性メモリ(4B)とは、異なるフラッシュメモリアレーにより構成され、前記第1不揮発性メモリと前記第2不揮発性メモリとは異なるワード線と異なるビット線と異なる消去ブロックとを有する。
本発明のより具体的な形態による手段によれば、前記第2不揮発性メモリ(4B)への前記ユーザーデータの頻繁な書き込みや頻繁な消去による前記プログラムを格納した前記第1不揮発性メモリ(4A)でのディスターブの影響を低減することができる。
本発明の更に具体的な形態では、前記第2不揮発性メモリ(4B)に格納される少なくとも一部のユーザーデータの書き込み又は消去の不揮発記憶動作の中断に際しては、前記コントローラ(5)は前記第1の動作(SUSP=“1”)に設定され、前記不揮発記憶動作の前記反復処理の前記パルスの前記印加中に中断命令に応答して前記パルスの前記印加の解除により前記不揮発記憶動作を中断して(S7A)、その後、前記復帰命令に応答して前記解除となった前記パルスの印加から中断された前記不揮発記憶動作の前記反復処理を再開する(S8A)。前記第1不揮発性メモリ(4A)に格納される少なくとも一部のプログラムの書き込み又は消去の不揮発記憶動作の中断に際しては、前記コントローラ(5)は前記第2の動作(SUSP=“0”)に設定され、前記不揮発記憶動作の前記反復処理の前記パルスの前記印加中に入力される中断命令に応答して前記パルスの前記印加を継続して前記印加の完了した時点で前記不揮発記憶動作を中断して(S7B)、その後、前記復帰命令に応答して前記印加の完了した不揮発性メモリセルのベリファイから中断された前記不揮発記憶動作の前記反復処理を再開する(S8B;図5、図17参照)。
本発明の最も具体的な形態では、前記第2不揮発性メモリ(4B)に格納される前記一部のユーザーデータに関係する管理データ(MD_D1…)の前記第2不揮発性メモリ(4B)での書き込み又は消去の不揮発記憶動作の中断に際しては、前記コントローラ(5)は前記第2の動作(SUSP=“0”)に設定され、前記不揮発記憶動作の前記反復処理の前記パルスの前記印加中に中断命令に応答して前記パルスの前記印加を継続して前記印加の完了した時点で前記不揮発記憶動作を中断して(S7B)、その後、前記復帰命令に応答して前記印加の完了した不揮発性メモリセルのベリファイから中断された前記不揮発記憶動作の前記反復処理を再開する(S8B;図5、図17参照)。
〔2〕本発明に係る記憶装置(1)は、電気的に書き込み又は消去可能な不揮発性メモリ(4)と当該不揮発性メモリ(4)の書き込みと消去との少なくともひとつの動作の制御を行うコントローラ(5)を具備する。
前記コントローラ(5)は、書き込み命令と消去命令との少なくともひとつの命令に応答して前記不揮発性メモリ(4)へ前記書き込みと前記消去との前記少なくともひとつの動作のパルスの印加とベリファイとの反復処理により前記少なくともひとつの動作の不揮発記憶動作を制御する。
前記コントローラは、第1の動作(SUSP=“1”)と第2の動作(SUSP=“0”)とに設定されることができる。
前記第1の動作(SUSP=“1”)に設定された前記コントローラ(5)は、前記不揮発記憶動作の前記反復処理の前記パルスの前記印加中に中断命令に応答して前記パルスの前記印加の解除により前記不揮発記憶動作を中断する(S7A)。前記第1の動作(SUSP=“1”)に設定された前記コントローラ(5)は、復帰命令に応答して前記解除となった前記パルスの印加から中断された前記不揮発記憶動作の前記反復処理を再開する(S8A)。
前記第2の動作(SUSP=“0”)に設定された前記コントローラ(5)は、前記不揮発記憶動作の前記反復処理の前記パルスの前記印加中に中断命令に応答して前記パルスの前記印加を継続して前記印加の完了した時点で前記不揮発記憶動作を中断する(S7B)。前記第1の動作に設定された前記コントローラ(5)は、復帰命令に応答して前記印加の完了した不揮発性メモリセルのベリファイから中断された前記不揮発記憶動作の前記反復処理を再開する(S8B;図5参照)。
前記第1の動作に設定された前記コントローラ(5)による前記不揮発記憶動作の中断処理と再開処理とにより、割り込みによる中断命令の供給から実際の中断までの移行時間を短くすることが可能となる。
また、前記第2の動作に設定された前記コントローラ(5)による前記不揮発記憶動作の中断処理と再開処理とにより、不揮発性記憶装置へのストレスを低減すること、および書き込み又は消去処理全体に要する時間を短縮することが可能となる。
本発明の好適な形態による記憶装置(1)は、前記コントローラ(5)は揮発性メモリ(15)と前記反復処理による前記不揮発記憶動作の制御のための動作制御レジスタ(18)とを含む。前記不揮発記憶動作の中断の後に前記復帰命令に応答して前記不揮発記憶動作の前記反復処理の再開に必要な前記動作制御レジスタ(18)の情報を、前記コントローラ(5)は前記不揮発記憶動作の前記中断の前に前記揮発性メモリ(15)に退避する(S45、S49;図7参照)。前記復帰命令に応答して前記コントローラ(5)は、前記揮発性メモリ(15)に退避した前記情報を前記動作制御レジスタ(18)に回復して中断された前記不揮発記憶動作の前記反復処理を再開する(S61、S64、S67;図8参照)。
本発明のより好適な形態による記憶装置(1)では、前記コントローラ(5)は前記消去命令に応答して前記不揮発性メモリ(4)へ前記消去のパルスの印加とベリファイとの反復処理により消去(S6)の前記不揮発記憶動作を制御する。前記コントローラ(5)は前記中断命令に応答して前記消去の前記不揮発記憶動作を中断する(S7A、S7B)。前記消去の前記不揮発記憶動作の中断の間に、前記不揮発性メモリ(4)は読み出し可能な状態とされる(S4;図5参照)。
本発明のより好適な形態による記憶装置(1)では、前記第1の動作(SUSP=“1”)に設定された前記コントローラ(5)が前記不揮発記憶動作の前記反復処理の前記パルスの前記印加中に前記中断命令に応答して前記不揮発記憶動作の中断に際して前記パルスの前記印加を解除すると(S111)、前記コントローラ(5)の動作モードを前記第1の動作(SUSP=“1”)から前記第2の動作(SUSP=“0”)に変更するフラグ情報を設定する(S112)。前記コントローラ(5)が前記復帰命令に応答して前記解除となった前記パルスの印加からの中断された前記不揮発記憶動作の前記反復処理の再開中に再び中断命令を受けると、前記設定されたフラグ情報に応答して前記コントローラ(5)は前記第2の動作(SUSP=“0”)に設定されることによって前記不揮発記憶動作の再開された前記反復処理の前記パルスの前記印加中に前記中断命令に応答して前記パルスの前記印加を継続して前記印加の完了した時点で前記不揮発記憶動作を中断する(S42、S43、S113;図12参照)。前記第2の動作に設定された前記コントローラ(5)は、復帰命令に応答して前記印加の完了した不揮発性メモリセルのベリファイから中断された前記不揮発記憶動作の前記反復処理を再開する(S17;図11参照)。
本発明の前記より好適な形態による手段によれば、前記コントローラ(5)の前記第1の動作(SUSP=“1”)により書き込み動作又は消去動作中の割り込みによる中断命令の供給から実際の中断までの移行時間は短くなるが、中断によって不揮発記憶動作の反復処理のパルス印加が一向に進展しないと言う事態を回避することができる。
本発明の具体的な形態による記憶装置(1)では、前記コントローラ(5)に供給される動作モード信号(SUSP)により前記コントローラ(5)は前記第1の動作(SUSP=“1”)と前記第2の動作(SUSP=“0”)とのいずれにも任意に設定される。
本発明のより具体的な形態では、前記不揮発性メモリ(4)に格納される少なくとも一部のユーザーデータの書き込み又は消去の不揮発記憶動作の中断に際しては、前記コントローラ(5)は前記第1の動作(SUSP=“1”)に設定され、前記不揮発記憶動作の前記反復処理の前記パルスの前記印加中に中断命令に応答して前記パルスの前記印加の解除により前記不揮発記憶動作を中断して(S7A)、その後、前記復帰命令に応答して前記解除となった前記パルスの印加から中断された前記不揮発記憶動作の前記反復処理を再開する(S8A)。前記不揮発性メモリ(4)に格納される少なくとも一部のプログラムの書き込み又は消去の不揮発記憶動作の中断に際しては、前記コントローラ(5)は前記第2の動作(SUSP=“0”)に設定され、前記不揮発記憶動作の前記反復処理の前記パルスの前記印加中に中断命令に応答して前記パルスの前記印加を継続して前記印加の完了した時点で前記不揮発記憶動作を中断して(S7B)、その後、前記復帰命令に応答して前記印加の完了した不揮発性メモリセルのベリファイから中断された前記不揮発記憶動作の前記反復処理を再開する(S8B;図5、図17参照)。
本発明の最も具体的な形態では、前記不揮発性メモリ(4)に格納される前記一部のユーザーデータに関係する管理データ(MD_D1…)の前記不揮発性メモリ(4B)での書き込み又は消去の不揮発記憶動作の中断に際しては、前記コントローラ(5)は前記第2の動作(SUSP=“0”)に設定され、前記不揮発記憶動作の前記反復処理の前記パルスの前記印加中に中断命令に応答して前記パルスの前記印加を継続して前記印加の完了した時点で前記不揮発記憶動作を中断して(S7B)、その後、前記復帰命令に応答して前記印加の完了した不揮発性メモリセルのベリファイから中断された前記不揮発記憶動作の前記反復処理を再開する(S8B;図5、図17参照)。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
すなわち、本発明によれば、書き込み動作又は消去動作中の割り込みによる中断命令の供給から実際の中断までの移行時間を短くする一方、復帰命令により中断した書き込み動作又は消去動作を再開するに際して不揮発性メモリへのストレスを低減すること、および書き込み又は消去処理全体に要する時間を短縮することが可能になる。
(第1の実施形態)
≪マイクロコントローラの全体構成≫
図1は本発明の第1の実施形態によるマイクロコントローラを示すブロック図である。
同図に示されたマイクロコントローラ1を構成する回路素子は、CMOSフラッシュメモリ製造プロセスによって、単結晶シリコンの1個の半導体基板上に形成される。
マイクロコントローラ(MCU)1は、中央処理ユニット(CPU)2、ランダムアクセスメモリ(RAM)3、不揮発性記憶装置としてのフラッシュメモリ(FLASH)4、制御装置としてのフラッシュコントロールユニット(FCU)5、バスコントローラ(BSC)6、周辺回路(PRHRL)7、I/Oポート(IOP)8及びシステムコントローラ(SYSC)9を有する。周辺回路7には、タイマ、パルス出力回路、シリアルコミュニケーションインタフェース、A/D変換器などが含まれる。図示はしないが、割込みコントローラやクロック発振器などの回路モジュールも搭載される。中央処理ユニット2は命令をフェッチしてデコードする命令制御部と、命令制御部による命令デコード結果に基づいて演算等を行って命令を実行する命令実行部とを有する。ランダムアクセスメモリ3は、中央処理ユニット2のワーク領域とされる。
≪マイクロコントローラのフラッシュメモリ≫
フラッシュメモリ4は中央処理ユニット2のプログラムを格納したり、あるいは不揮発記憶すべきデータの格納に利用される。フラッシュメモリ4は、電気的に消去及び書き込み可能な不揮発性メモリトランジスタを含む複数の不揮発性メモリセルを有する。不揮発性メモリトランジスタには、特に制限されないが、ソースとドレインの間のチャネル形成領域の上に各々絶縁されたフローティングゲートのような電荷蓄積領域とコントロールゲートを積み重ねたスタックドゲート構造を採用可能である。あるいはチャネル形成領域の上に選択ゲートとメモリゲートを分離して配置して、メモリゲートとチャンネル形成領域との間にシリコンナイトライドのような電荷蓄積領域を形成したスプリット構造等を採用してもよい。
不揮発性メモリセルのトランジスタは電荷蓄積領域に電子が注入される書き込みによってしきい値電圧が高くされ、書き込みによって蓄積された電子の放出又はホールの注入によってしきい値電圧が低くされる。例えばメモリゲートと基板の間に高電界を形成して、ソース・ドレイン間電流によって発生されるホットエレクトロンを電荷蓄積領域に注入することによって書き込みが行われる。消去の場合には、ホットホールを発生させてこれを電荷蓄積領域に注入するか、高電界によるトンネル効果により電荷蓄積領域から電子を放出すればよい。高電界を形成するのに、書き込みでは書き込みパルス電圧を用い、消去では消去パルス電圧を用いる。不揮発性メモリセルのトランジスタは、そのしきい値電圧の相違として情報を記憶する。1個のメモリセルによる情報記憶は1ビットを示す低いしきい値電圧と高いしきい値電圧との2値、或いは2ビットを示す低いしきい値電圧と低中間のしきい値電圧と高中間のしきい値電圧と高いしきい値電圧との4値等の多値のいずれであっても良い。
≪フラッシュメモリの消去動作≫
消去命令に応答するフラッシュコントロールユニット5の制御によるフラッシュメモリ4の消去動作では、ハードディスクの1セクターのユーザーデータが512バイトの整数倍の例えば2048バイトのユーザーデータの消去ブロックの複数のフラッシュメモリセルが一括して消去される。一括消去(フラッシュ消去)は、消去ブロックの複数のフラッシュメモリセルへの消去パルスの並列印加と複数のセルの消去並列ベリファイとの反復処理により実行される。例えば、消去並列ベリファイの単位は、32個のメモリセルである。消去パルスの印加により所定の消去レベルのしきい値電圧に到達したセルは、次回の消去パルス印加の対象から除外され、消去レベルに未到達のセルが次回の消去パルス印加の対象とされる。良好な電気的特性を持つ消去ブロックでは、妥当な回数の反復処理によって全ての複数のフラッシュメモリセルのしきい値電圧が消去レベルに到達する。
しかし、製造時の不具合もしくは使用によるストレス劣化により、若干の消去ブロックでは、妥当な回数の反復処理によって全ての複数のフラッシュメモリセルのしきい値電圧が消去レベルに到達しない。反復処理の上限は、例えば20回に設定される。消去パルス印加と消去ベリファイとの20回の反復処理によっても、しきい値電圧が消去レベルに到達しないメモリセルを含む消去ブロックの管理領域にはこの消去ブロックの不良を示す不良フラグが書き込まれる。不良消去ブロックが他の良消去ブロックにより代替される場合には、不良消去ブロックの管理領域に代替の良消去ブロックのアドレスが書き込まれる。更に、不良消去ブロックの管理領域に書き込まれた不良フラグや代替アドレスの読み出し際のビットエラーを訂正するECC(誤り訂正コード)データを管理領域に書き込むことが推奨される。
反復処理の回数が上限に達する前に全ての複数のフラッシュメモリセルのしきい値電圧が消去レベルに到達すると、その消去ブロックの消去動作が完了する。この消去動作の完了の際に、消去動作が完了した消去ブロックの管理領域に格納された消去・書き込み回数を+1インクリメントすることが推奨される。フラッシュメモリ4の多くの消去ブロックの間の疲弊度を均一化(ウェアレベリング)するために、フラッシュメモリ4の稼働中の適切なタイミングで消去・書き込み回数の非常に大きな消去ブロックのデータと消去・書き込み回数の非常に小さな消去ブロックのデータとを置換することが推奨される。この置換によって、回数の小さな消去ブロックのデータのディスターブによるデータ破壊と回数の大きな消去ブロックのデータの疲弊によるデータ破壊とが、回避される。以上の制御は、フラッシュコントロールユニット5によって実行される。
≪フラッシュメモリの書き込み動作≫
書き込み命令に応答するフラッシュコントロールユニット5の制御によるフラッシュメモリ4の書き込み動作は、上記の消去動作により消去が完了した消去ブロックに行われる。フラッシュメモリ4の書き込み動作では、書き込み単位である例えば128バイトのページで、2048バイトのユーザーデータの消去ブロックよりもはるかに小さい。1ページの書き込み動作は、1ページの複数のフラッシュメモリセルへの書き込みパルスの並列印加と複数のセルの書き込み並列ベリファイとの反復処理により実行される。例えば、書き込み並列ベリファイの単位は、32個のメモリセルである。書き込みパルスの印加により消去レベルのしきい値電圧から所定の書き込みレベルのしきい値電圧に到達したセルは、次回の書き込みパルス印加の対象から除外され、書き込みレベルに未到達のセルが次回の書き込みパルス印加の対象とされる。良好な電気的特性を持つページでは、妥当な回数の反復処理によって全ての複数のフラッシュメモリセルのしきい値電圧が書き込みレベルに到達する。
しかし、製造時の不具合もしくは使用によるストレス劣化により、若干のページでは、妥当な回数の反復処理によって全ての複数のフラッシュメモリセルのしきい値電圧が書き込みレベルに到達しない。反復処理の上限は、例えば20回に設定される。書き込みパルス印加と書き込みベリファイとの20回の反復処理によっても、しきい値電圧が書き込みレベルに到達しないメモリセルのページを含む消去ブロックの管理領域にはこの消去ブロックの不良を示す不良フラグが書き込まれる。不良消去ブロックが他の良消去ブロックにより代替される場合には、不良消去ブロックの管理領域に代替の良消去ブロックのアドレスが書き込まれる。
反復処理の回数が上限に達する前に消去ブロックの1ページの全ての複数のフラッシュメモリセルのしきい値電圧が書き込みレベルに到達すると、1ページの書き込み動作が完了する。同様にして1つの消去ブロックの残りのページの書き込み動作を行うことができる。この書き込み動作で、1つの消去ブロックの2048バイトのユーザーデータ領域にユーザーデータが書き込まれるだけでなく、1つの消去ブロックの適切な大きさの管理領域にユーザーデータの読み出しのビットエラーを訂正するECC(誤り訂正コード)データが書き込まれる。
≪フラッシュメモリの管理動作≫
上述したように、データの書き込み単位は128バイトのページと、消去ブロックよりも小さなものとなる。小さなサイズの同一ファイル名でも生成日時の異なる複数のユーザーデータは1つの消去ブロック中に書き込まれるが、1つの消去ブロックに空き領域が無くなると、同一ファイル名でも生成日時の新しいユーザーデータは別の1つの消去済みの消去ブロック中に書き込まれる。同一ファイル名で生成日時の古いユーザーデータを格納して空き領域が無くなった古い消去ブロックは一般に不必要であるので、古い消去ブロックの有効フラグは無効にマークされる。無効な古い消去ブロックは稼働中の適切なタイミングで消去されることにより、空き領域が生成されて再利用が可能となる。無効な古い消去ブロックの消去は空き領域の生成による再利用のために必須で、ガーベージコレクションと呼ばれている処理である。
また、ファイル名はマイクロコントローラ1の中央処理ユニット2の論理アドレスで示され、この論理アドレスに対応する最新のユーザーデータを格納した物理領域(物理アドレス)が刻々と変化することになる。従って、マイクロコントローラ1の中央処理ユニット2が論理アドレスに対応する最新のユーザーデータをフラッシュメモリ4から読み出すためのアドレス変換テーブルが、フラッシュメモリ4に格納されている。マイクロコントローラ1に電源が供給された稼動状態では、論理アドレスと物理アドレスとの対応を示すアドレス変換テーブルはRAM3に存在して、フラッシュメモリ4のユーザーデータが更新される毎にRAM3上のアドレス変換テーブルの論理アドレスと物理アドレスとの対応も更新される。マイクロコントローラ1の電源が遮断される際には、RAM3上の最新のアドレス変換テーブルはフラッシュメモリ4の適切な格納領域に退避される。また、マイクロコントローラ1の電源の投入時には、フラッシュメモリ4の適切な格納領域から最新のアドレス変換テーブルから読み出されてRAM3に転送されるので、中央処理ユニット2は論理アドレスに対応する最新のユーザーデータをフラッシュメモリ4から読み出すことが可能となる。
≪マイクロコントローラのシステムコントローラ≫
システムコントローラ9には、外部のモード端子MD0〜MD2及びリセット端子RESET等が接続される。リセット端子RESETがローレベルにされるとシステムコントローラ9内部の初期化が開始され、リセット端子RESETがハイレベルにされてリセット指示が解除されると、中央処理ユニット2は例えばプログラムの先頭アドレスの命令をフェッチして命令実行動作を開始する。リセットの指示が解除される時に、モード端子MD0〜MD2の状態に応じてマイクロコントローラの動作モードが決定される。例えば通常モード又はテストモードにされる。テストモードは、特に制限されないが、通常モードに比べ、デバイステスト、デバイス評価、更にはシステム評価の便に供する機能を利用可能な動作モードである。
≪マイクロコントローラのバス≫
マイクロコントローラ1は、内部バスIBUS、周辺バスPBUS、及び外部バスEXBUSを有する。それぞれのバスは、アドレスバス、データバスの他、バス権要求信号、バスアクノレッジ信号、バスコマンド(またはリード信号、ライト信号、バスサイズ信号)、レディ信号(またはウェイト信号)等の信号線を含む。
内部バスIBUSは、中央処理ユニット2或いは図示を省略するダイレクトメモリアクセスコントローラ(DMAC)のようなそのほかの内部バスマスタに直接接続されるバスである。内部バスIBUSにはランダムアクセスメモリ3、バスコントローラ6、フラッシュメモリ4、及びI/Oポート等、少数の回路モジュールが接続される。内部バスIBUSを介するランダムアクセスメモリ3及びフラッシュメモリ4に対する読み出しアクセスは1ステートで可能にされる。内部バスIBUSの接続先が少数であるため、バス幅は任意にでき、例えばそのデータバスは32ビット幅とされる。
周辺バスPBUSには、周辺回路7、システムコントローラ9、フラッシュコントロールユニット5及びI/Oポート8などが接続される。周辺バスPBUSは、バスコントローラ6を介して内部バスIBUSと接続される。これにより、中央処理ユニット2のプログラムリードなどで、主として使用する内部バスIBUSの負荷を軽減して、アクセスの高速化ができる。更に、中央処理ユニット2等が周辺バスPBUSを使用しない時に周辺バスの状態を保持することが可能になるから、これによって低消費電力化することができる。中央処理ユニット2が周辺バスPBUSに接続される回路モジュール内の内部I/Oレジスタをアクセスする場合には、内部バスIBUS及びバスコントローラ6を経由して行う。内部I/Oレジスタのアクセスは2ステートで行われる。内部バスIBUSに比べて周辺バスPBUSの接続先は多数であるため、周辺バスPBUSのバス幅を広げると物理的な規模が増加するため、周辺バスPBUSは例えば16ビットのデータバスを有する。
内部バスIBUSと外部バスEXBUSは、外部バスバッファ回路(BUF)10によってインタフェースされる。外部バスバッファ回路10は、入出力ポート8に含まれる。周辺バスPBUS及び外部バスEXBUSに対するバス制御はバスコントローラ6が行う。
通常モードにおけるフラッシュメモリ4のリード動作は内部バスIBUSを経由して行う。書き込み及び消去を指示するためのコマンド及びデータの供給は周辺バスPBUSを介してフラッシュコントロールユニット5に対して行う。書き込み及び消去動作は、それ自体に時間がかかり、また、書き込み及び消去動作の頻度はそれほど高くなく、少なくとも内部バスIBUSを経由したリード動作より大幅に少ないということを考慮したものである。フラッシュコントロールユニット5を内部バスIBUSに接続すれば、内部バスIBUSの負荷が大幅に増えることになるからである。
≪マイクロコントローラのフラッシュコントロールユニット≫
フラッシュコントロールユニット5は、ローカルCPU(FCPU)12を備える。通常モードにおいてローカルCPU12は中央処理ユニット2から発行されたコマンドに応答して逐次命令を実行してフラッシュメモリ4に対する書き込み及び消去制御を行うことが可能とされる。中央処理ユニット2は、コマンド発行後に書き込み及び消去制御から開放される。テストモードでは、中央処理ユニット2が逐次命令を実行してフラッシュメモリ4に対する書き込み及び消去制御を行うことが可能にされる。ローカルCPU12の動作プログラムに制限されることなく、中央処理ユニット2のプログラムに従ってテストや検証のための書き込み及び消去制御を自由に行うことができる。
図2は、図1に示したマイクロコントローラ1のフラッシュコントロールユニット5の構成を示すブロック図である。フラッシュコントロールユニット5は、ローカルCPU12の他に、CPUインタフェースコントローラ(FIMC)13、バス制御回路(FBSC)14、コントロールRAM(CRAM)15、書き込み消去制御回路(FLC)16、及びローカルバスFBUSを有する。
フラッシュコントロールユニット5は中央処理ユニット2のアドレス空間に配置され、中央処理ユニット2は周辺バスPBUSを介してフラッシュコントロールユニット5の内部をアクセスすることができる。すなわち、CPUインタフェースコントローラ13は周辺バスPBUSに接続され、中央処理ユニット2からのアクセスに対してフラッシュコントロールユニット5の全体的な制御を行う。第1に、CPUインタフェースコントローラ13は、割込み要求信号IRQと対応するベクタを発行してローカルCPU12を起動する。第2に、CPUインタフェースコントローラ13は、バス制御回路14にバスコマンドを発行することによってコントロールRAM15及び書き込み消去制御回路16に対するローカルバスFBUS経由のバス制御を行う。コントロールRAM15はローカルCPU12の動作プログラムの格納領域、或いはローカルCPU12のワーク領域等に用いられる。
≪フラッシュコントロールユニットの書き込み消去制御回路≫
書き込み消去制御回路16は、フラッシュメモリ4に対する動作制御レジスタ(FCNTR)18を有する。動作制御レジスタ18は、種々の制御ビットを含むとともに、トリミングビット情報及び消去ブロックビット情報も含んでいる。書き込み消去制御回路16は動作制御レジスタ18に設定される制御ビットの状態に従ってフラッシュメモリ4の動作を制御する。動作制御レジスタ18の制御ビットは、例えば書き込みイネーブルビットWE、書き込み指示ビットP、消去指示ビットE、書き込みベリファイ指示ビットPV、及び消去ベリファイ指示ビットEV等とされる。書き込みイネーブルビットWEは、論理値“1”によって書き込み消去動作の指示の有効性を示す。書き込み指示ビットPは、論理値“1”によって書き込みパルス電圧の印加を指示する。消去指示ビットEは、論理値“1”によって消去パルス電圧の印加を指示する。トリミングビット情報はフラッシュメモリ4の書き込みパルス電圧、消去パルス電圧、ドレイン電圧、ソース電圧、ベリファイ電圧の各々の電圧レベルの微調整や、書き込みパルス電圧及び消去パルス電圧のパルス幅の微調整を行うためのトリミングビット情報が設定される。トリミングデータやローカルCPU12の動作プログラムの初期値はフラッシュメモリ4が保有し、その初期値データはパワーオンリセットに応答して中央処理ユニット2が動作制御レジスタ18及びコントロールRAM15に内部転送する。動作制御レジスタ18は通常モードではユーザプログラムを実行しているCPU2からの書き込みアクセス不可能にされ、保護される。テストモードでは自由にアクセス可能にされる。消去ブロックビット情報には、消去ブロック又は消去アドレスが指定される。書き込みデータ及び書き込みアドレスはフラッシュメモリ内部のデータレジスタ及びアドレスレジスタにセットされる。
≪フラッシュコントロールユニットのCPUインタフェースコントローラ≫
CPUインタフェースコントローラ13は、中央処理ユニット2から周辺バスPBUSを介してアクセス可能にされる内部I/Oレジスタ(IIOR)20、コントロールレジスタ(CNTR)21、ステータスレジスタ(STSR)22およびサスペンドモードレジスタ(SUSMD)31を有する。コントロールレジスタ21は書き込み消去フラグFENTRY等の設定領域とされ、中央処理ユニット2によって書き込み可能にされ、ローカルCPU12によって読み出し可能にされる。ステータスレジスタ22はビジーフラグBUSYやコマンドエンドフラグCMDE等の記憶領域とされ、ローカルCPU12によってライト可能にされ、中央処理ユニット2によってリード可能にされる。ローカルCPU12は経路23からステータスレジスタ22に対する書き込みを行う。本発明の特徴であるサスペンドモードレジスタ31は、フラッシュコントロールユニット5の動作モードを設定する動作モードビット信号SUSPを格納する。動作モードビット信号SUSPが“1”レベルであるとフラッシュコントロールユニット5は第1の動作モードに設定され、動作モードビット信号SUSPが“0”レベルであるとフラッシュコントロールユニット5は第2の動作モードに設定される。動作モードを設定する動作モードビット信号SUSPは、図1のシステムコントローラ9にシステム起動時にリセット信号RESETとともに供給されるモード信号MD0〜MD2から供給することもできる。また、通常モードの動作中でも、中央処理ユニット2から内部バスIBUS、バスコントローラ6、周辺バスPBUSを介して動作モードビット信号SUSPがサスペンドモードレジスタ31に供給されることもできる。
≪フラッシュコントロールユニットによる書き込み処理と消去処理≫
フラッシュコントロールユニット5は、書き込み命令又は消去命令に応答してフラッシュメモリ4へ書き込み又は消去のパルスの印加とベリファイとの反復処理により書き込み又は消去の不揮発記憶動作を制御する。第1の動作(SUSP=“1”レベル)に設定されたフラッシュコントロールユニット5は、不揮発記憶動作の反復処理のパルスの印加中に中断命令に応答してパルスの印加の解除により不揮発記憶動作を中断する。第1の動作(SUSP=“1”レベル)に設定されたフラッシュコントロールユニット5は、復帰命令に応答して解除となったパルスの印加から中断された不揮発記憶動作の反復処理を再開する。第2の動作(SUSP=“0”レベル)に設定されたフラッシュコントロールユニット5は、不揮発記憶動作の反復処理のパルスの印加中に中断命令に応答してパルスの印加を継続して印加の完了した時点で不揮発記憶動作を中断する。第2の動作(SUSP=“0”レベル)に設定されたフラッシュコントロールユニット5は、復帰命令に応答して印加の完了した不揮発性メモリセルのベリファイから、中断された不揮発記憶動作に対する反復処理を再開する。
サスペンドモードレジスタ31の動作モードビット信号SUSPは、中央処理ユニット2からは周辺バスPBUSを経由して書き込みと読み出しが可能であり、ローカルCPU12からは経路23とフラッシュバスFBUSとバス制御回路14とを使用して読み出し可能な制御ビットで、消去サスペンド時の中断処理を切り替えるために使用される。また、書き込み消去制御回路16の動作制御レジスタ18の消去ベリファイ指示ビット(EV)と書き込みベリファイ指示ビット(PV)は、ローカルCPU12から経路23を使用して書き込み/読み出し可能なビットで、フラッシュメモリ4をそれぞれ消去ベリファイ、書き込みベリファイする場合に使用される。
通常モードにおいて書き込み消去フラグFENTRY=“1”の時に、CPUインタフェースコントローラ13は、フラッシュメモリ4の不揮発性メモリアレイにマッピングされたアドレスにデータを書き込む中央処理ユニット2からのアクセスを検出すると、その書き込みアクセスを書き込みデータに応じてフラッシュ書き込みコマンド、フラッシュ消去コマンド、レジュームコマンドとして認識する。CPUインタフェースコントローラ13はそのコマンド解釈に従って割り込み要求信号IRQを活性化して、コマンドに応ずるベクタを発行する。これによってローカルCPU12は、ベクタによって指定される書き込み制御プログラム又は消去制御プログラムをコントロールRAM15からフェッチして実行する。フラッシュ書き込みコマンドに応答する場合、ローカルCPU12は、その書き込み制御プログラムに従ってフラッシュ書き込みコマンドと認識した書き込みアクセスに係るアドレスとデータを内部IOレジスタ20からコントロールRAM15に取り込み、フラッシュメモリに転送して、動作制御レジスタ18の書き込みイネーブルビットWE、書き込み指示ビットP等を順次設定しながら、フラッシュメモリ4に対する書き込みを行う。フラッシュ消去コマンドに応答する場合、ローカルCPU12はその消去制御プログラムに従ってフラッシュ消去コマンドと認識した消去ブロック指定データを内部IOレジスタ20から読み出して動作制御レジスタ18に消去ブロック番号を設定し、動作制御レジスタ18の書き込みイネーブルビットWE、消去指示ビットE等を順次設定しながら、フラッシュメモリ4に対する消去を行う。
書き込み消去フラグFENTRYはバスコントローラ6に供給され、通常モードにおいて書き込み消去フラグFENTRY=“0”レベルの時に、バスコントローラ6がフラッシュメモリ4のマッピングアドレスに対する中央処理ユニット2からの書き込みアクセスを検出すると、例えばアドレスエラーを発生させて、フラッシュメモリ4に対する当該書き込み動作を無効とする。従って、通常モードにおいて書き込み消去フラグFENTRY=“0”レベルの時には、フラッシュメモリ4は内部バスIBUS経由のリードアクセスだけが可能にされる。尚、テストモードでは書き込み消去フラグFENTRYはバスコントローラ6によるフラッシュメモリ4に対するアクセス経路の制御だけに用いられる。即ち、フラッシュメモリ4に対しては、テストモードにおいて書き込み消去フラグFENTRY=“1”レベルの時にはバスコントローラ6及び周辺バスPBUS経由のアクセスだけが許容され、書き込み消去フラグFENTRY=“0”レベルの時には内部バスIBUS経由のリードアクセスだけが許容される。
≪フラッシュコントロールユニットのバス制御回路≫
フラッシュコントロールユニット5のバス制御回路14を経由するコントロールRAM15及び書き込み消去制御回路16のアクセス制御について説明する。CPUインタフェースコントローラ13は、通常モード及びテストモードのいずれにおいても、コントロールRAM15のマッピングアドレスに対する中央処理ユニット2からのアクセスに対して、アクセスコマンドをバス制御回路14に発行する。発行されたアクセスコマンドに従ってバス制御回路14は、ローカルバスFBUSの制御を行ってコントロールRAM15に対するリードアクセス及びライトアクセスを行うことができる。特に制限されないが、通常モードでは書き込み消去制御回路16の動作制御レジスタ18に対する自由なアクセスは、許容されていない。テストモードでは、中央処理ユニット2からフラッシュメモリ4のマッピングアドレスにデータを書き込むアクセスがあっても、また、中央処理ユニット2から動作制御レジスタ18に対してデータを書込むアクセスがあっても、CPUインタフェースコントローラ13はローカルCPU12を起動せず、対応するアクセスコマンドをバス制御回路14に発行する。それに従ってバス制御回路14がローカルバスFBUSの制御を行って、CPUインタフェースコントローラ13の内部IOレジスタ20に保持された書き込みデータ及び書き込みアドレスをフラッシュメモリ4に供給し、又は消去ブロックアドレスを動作制御レジスタ18に供給する。この後、中央処理ユニット2は書き込み消去制御回路16の動作制御レジスタ18に対する書き込みアクセスを発行することによって消去ビットEや書き込み指示ビットPを直接操作して、消去動作又は書き込み動作を行うことができる。
テストモードでは、中央処理ユニット2は書き込み消去制御回路16の動作制御レジスタ18のトリミング情報ビットを直接操作することができるから、トリミングデータの設定次第で、例えば、フラッシュメモリ4における書き込みパルス電圧、消去パルス電圧、パルス印加時間、ドレイン電圧、及びソース電圧等を微調整することができる。そのような電圧や時間を微調整することによって、マイクロコントローラ1の製造プロセス、不揮発性メモリの素子構成、あるいはマイクロコントローラ1の個体差などに即して、最適な書き込み、最適な消去の制御が可能にされる。これらの電圧や時間は量産時には固定にされるのがよいが、少なくとも試作評価時には可変にする必要がある。
更にテストモードでは、中央処理ユニット2はコントロールRAM15が保有するローカルCPU12のプログラムを書き換えることができる。試作評価時には、テストモードで、中央処理ユニット2による制御プログラム実行で書き込み/消去を実行し、基本機能や所要のパラメータなどの確認を行うことができる。試作評価時は、機器制御を行うわけではないので、リアルタイム性の要求される割込み処理などを考慮する必要がない。その後は、制御プログラムをローカルCPU12用に変更して、コントロールRAM15に転送し、この後、テストコマンドを用いて中央処理ユニット2がCPUインタフェースコントローラ13に書き込み/消去動作を指示することで、ローカルCPU12にそのプログラムを実行させて書き込み及び消去を行わせることも可能である。当然この場合には、CPUインタフェースコントローラ13の内部IOレジスタ20には書き込みアドレス及び書き込みデータ、あるいは消去ブロック指定データが保持されているとよい。
≪中央処理ユニットのアドレス空間≫
図3は、図1に示したマイクロコントローラ1の中央処理ユニット2のアドレス空間を示す図である。中央処理ユニット2のアドレス空間は、例えば4ギガバイト(GB)である。その内の先頭側16メガバイト(MB)が、フラッシュコントロールユニット5にマッピングされる。中央処理ユニット2とローカルCPU12の双方が、フラッシュコントロールユニット5のマッピングアドレスをアクセス可能である。このローカルCPU12のアドレス空間は、バス制御回路14が管理し、ローカルCPU12がバス制御回路14に対し、バスコマンドとアドレスを与えることによって、アクセスが実行される。前述の如くフラッシュメモリ4は、書き込み消去フラグFENTRY=“1”レベルの時に周辺バスPBUSアクセスが可能にされ、書き込み消去フラグFENTRY=“0”レベルの時に内部バスIBUSアクセスが可能にされる。フラッシュコントロールユニット5のコントロールRAM15も、中央処理ユニット2のアドレス空間上に配置されているから、中央処理ユニット2によって、フラッシュメモリ4上に保持したローカルCPU12のプログラムをコントロールRAM15に転送し、コントロールRAM15に格納することができる。あるいは、任意のプログラムをコントロールRAM15に格納し、ローカルCPU12に実行させることができる。なお、コントロールRAM15は、誤動作などによって不所望に書き換えられないように、アクセスイネーブルビットなどを持つようにするのがよい。更に、フラッシュコントロールユニット5のCPUインタフェースコントローラ13内部の内部I/Oレジスタ(IIOR)20、コントロールレジスタ(CNTR)21、ステータスレジスタ(STSR)22およびサスペンドモードレジスタ(SUSMD)31も、中央処理ユニット2のアドレス空間上に配置されている。書き込み消去制御回路16に含まれる動作制御レジスタ(FCNTR)18もアドレス空間上に配置されており、テストモードでは周辺バスPBUS経由で中央処理ユニット2によりアクセス可能とされている。
≪フラッシュコントロールユニット5の状態遷移≫
図4は、図1に示したマイクロコントローラ1のフラッシュコントロールユニット5の状態遷移の概略を示す図である。マイクロコントローラ1がリセットされるとフラッシュコントロールユニット5はリセット状態(S1)になる。リセット解除後はCPUインターフェースコントローラ13のコントロールレジスタ21の書き込み消去フラグFENTRYのビットが“0”のレベルであるため、フラッシュコントロールユニット5は停止状態(S2)である。また、書き込み消去フラグFENTRYのビットが“0”のレベルの場合には、バスコントローラ6によってフラッシュメモリ4は内部バスIBUSにマッピングされ、中央処理ユニット2によるフラッシュメモリ4の読み出しアクセスが可能となる。中央処理ユニット2が、CPUインターフェースコントローラ13のコントロールレジスタ21の書き込み消去フラグFENTRYのビットを“1”のレベルにセットすると、フラッシュコントロールユニット5はコマンド待ち状態(S3)に遷移する。書き込み消去フラグFENTRYのビットが“1”のレベルの場合には、バスコントローラ6によってフラッシュメモリ4は周辺バスPBUSにマッピングされる。コマンド待ち状態(S3)で、周辺バスPBUSからフラッシュメモリ4のアドレスに対する読み出しアクセスがあった場合、CPUインターフェースコントローラ13はバス制御回路14にリードバスコマンドを発行してフラッシュメモリ4のリード動作(S4)を行い、リード動作(S4)の後は、ただちにコマンド待ち状態(S3)に遷移する。
コマンド待ち状態(S3)で、周辺バスPBUSからフラッシュメモリ4の所定のアドレスに対して書き込みが行われた場合には、CPUインターフェースコントローラ13はその書き込みデータに応じて当該書き込みアクセスをフラッシュ書き込みコマンド、フラッシュ消去コマンド、またはレジュームコマンドと解釈し、割り込み要求信号IRQを活性化してそれぞれのコマンドに対応するベクタを発行する。ローカルCPU12は割り込みベクタで指示されるスタートアドレスに従って、コントロールRAM15上に配置したプログラムの実行を開始する。ローカルCPU12を割り込み要求信号IRQにより起動した直後には、ローカルCPU12の割り込み要求信号IRQの受け付けは禁止状態になる。割り込み要求信号IRQの受け付けの許可/禁止は、ローカルCPU12のプログラムで設定可能である。
CPUインターフェースコントローラ13がフラッシュ書き込みコマンドを検出してローカルCPU12がコントロールRAM15上の書き込み制御プログラムの実行を開始すると、フラッシュコントロールユニット5は書き込み処理状態(S5)に遷移して、コントロールレジスタ21のビジーフラグ(BUSY)は“1”のレベルにセットされる。書き込み制御プログラムでは、フラッシュ書込みコマンドと認識した周辺バスPBUSアクセスに関わるアドレスとデータとをCPUインターフェースコントローラ13の内部IOレジスタ20から取り込み、フラッシュメモリ4に転送し、書き込み消去制御回路16の動作制御レジスタ18の書き込みイネーブルビット(WE)、書き込み指示ビット(P)等を順次設定しながら、フラッシュメモリ4に対する書き込みを行う。書き込み制御プログラムの実行が完了して、ローカルCPU12がコントロールレジスタ21のコマンドエンドフラグ(CMDE)を“1”のレベルにセットすると、ビジーフラグ(BUSY)が“0”のレベルにクリアされてフラッシュコントロールユニット5はコマンド待ち状態(S3)に遷移する。
書き込み処理状態(S5)でかつローカルCPU12の割り込み要求信号IRQの受け付けが許可された状態で、周辺バスPBUSからフラッシュメモリ4の所定のアドレスに対して所定のデータが書き込まれた場合には、CPUインターフェースコントローラ13がサスペンドコマンドを検出して、割り込み要求信号IRQを活性化してサスペンドコマンドに対応するベクタを発行する。ローカルCPU12がコントロールRAM15上のコマンド中断処理プログラムの実行を開始すると、フラッシュコントロールユニット5はコマンド中断処理状態(S7)に遷移する。コマンド中断処理(S7)では、ローカルCPU12によって実行されていた処理の状態を処理の中断の後の処理の再開前に回復するのに必要な情報を書き込み消去制御回路16の動作制御レジスタ18及びローカルCPU12の汎用レジスタからコントロールRAM15に退避する。退避処理が完了してローカルCPU12がコントロールレジスタ21のコマンドエンドフラグ(CMDE)を“1”のレベルにセットすると、ビジーフラグ(BUSY)が“0”のレベルにクリアされてフラッシュコントロールユニット5はコマンド待ち状態(S3)に遷移する。
CPUインターフェースコントローラ13が消去コマンドを検出してローカルCPU12がコントロールRAM15上の消去制御プログラムの実行を開始すると、フラッシュコントロールユニット5は消去処理状態(S6)に遷移してコントロールレジスタ21のビジーフラグ(BUSY)は“1”のレベルにセットされる。消去制御プログラムでは、フラッシュ消去コマンドと認識した周辺バスPBUSアクセスに関わる消去ブロックまたは消去アドレスの指定データをCPUインターフェースコントローラ13の内部IOレジスタ20から取り込み、書き込み消去制御回路16の動作制御レジスタ18の書き込みイネーブルビット(WE)、消去指示ビット(E)等を順次設定しながら、フラッシュメモリ4に対する消去を行う。消去制御プログラムの実行が完了して、ローカルCPU12がコントロールレジスタ21のコマンドエンドフラグ(CMDE)を“1”のレベルにセットすると、ビジーフラグ(BUSY)が“0”のレベルにクリアされてフラッシュコントロールユニット5はコマンド待ち状態(S3)に遷移する。
消去処理状態(S6)かつローカルCPU12の割り込み要求信号IRQの受け付けが許可された状態で、周辺バスPBUSからフラッシュメモリ4の所定のアドレスに対して所定のデータが書き込まれた場合には、CPUインターフェースコントローラ13がサスペンドコマンドを検出し、割り込み要求信号IRQを活性化してサスペンドコマンドに対応するベクタを発行する。ローカルCPU12がコントロールRAM15上のコマンド中断処理プログラムの実行を開始すると、フラッシュコントロールユニット5はコマンド中断処理状態(S7)に遷移する。コマンド中断処理(S7)では、ローカルCPU12によって実行されていた処理の状態を処理の中断の後の処理の再開前に回復するのに必要な情報を書き込み消去制御回路16の動作制御レジスタ18及びローカルCPU12の汎用レジスタからコントロールRAM15に退避する。退避処理が完了してローカルCPU12がコントロールレジスタ21のコマンドエンドフラグ(CMDE)を“1”のレベルにセットすると、ビジーフラグ(BUSY)が“0”のレベルにクリアされてフラッシュコントロールユニット5はコマンド待ち状態(S3)に遷移する。
コマンド待ち状態(S3)でCPUインターフェースコントローラ13がレジームコマンドを検出してローカルCPU12がコントロールRAM15上のコマンド再開プログラムの実行を開始すると、フラッシュコントロールユニット5はコマンド再開処理状態(S8)に遷移してコントロールレジスタ21のビジーフラグ(BUSY)は“1”のレベルにセットされる。コマンド再開処理状態(S8)では、コマンド中断処理(S7)でコントロールRAM15に退避したローカルCPU12の処理状態が書き込み消去制御回路16の動作制御レジスタ18及びローカルCPU12の汎用レジスタに回復される。回復された情報が書き込み処理用の情報であった場合には、ローカルCPU12は書き込み処理用のプログラムを再開し、フラッシュコントロールユニット5は書き込み処理状態(S5)に遷移する。回復された情報が消去処理用の情報であった場合には、ローカルCPU12は消去処理用のプログラムを再開し、フラッシュコントロールユニット5は消去処理状態(S6)に遷移する。
書き込み処理状態(S5)や消去処理状態(S6)でサスペンドコマンドを発行して処理を中断させてコマンド待ち状態(S3)に遷移した後に、フラッシュメモリ4のリード動作(S4)を実行させることにより、中央処理ユニット2は内部バスIBUSとバスコントローラ6と周辺バスPBUSとフラッシュコントロールユニット5とフラッシュメモリ4の不揮発性記憶ポートとからフラッシュメモリ4のデータを読み出すことが可能になる。内部バスIBUSとフラッシュメモリ4の読み出しポートとを使用してフラッシュメモリ4のデータを更に高速に読み出したい場合には、書き込み消去フラグFENTRYのビットを“0”のレベルに設定することが推奨される。このようなサスペンド機能は、フラッシュコントロールユニット5がフラッシュメモリ4を書き込み/消去処理している状態で、優先度の高い割り込み要求などによって中央処理ユニット2によるフラッシュメモリ4のデータの高速読み出しが必要になる場合などに有用である。
図5は、図1に示したマイクロコントローラ1のフラッシュコントロールユニット5の状態遷移の詳細を示す図である。図4のコマンド中断処理(S7)は図5の高速中断処理(S7A)と高信頼中断処理(S7B)とに対応して、図4のコマンド再開処理状態(S8)は図5のコマンド再開処理状態(S8A)とコマンド再開処理状態(S8B)とに対応する。
図5に示すように、フラッシュコントロールユニット5が書き込み処理状態(S5)もしくは消去処理状態(S6)で、割り込み要求IRQが許可され、サスペンドコマンドが検出され、動作モードビット信号SUSPの“1”のレベルによりフラッシュコントロールユニット5の第1の動作(SUSP=“1”レベル)が指定されると、高速中断処理(S7A)に状態が遷移する。高速中断処理(S7A)では、書き込み処理状態(S5)もしくは消去処理状態(S6)の書き込みもしくは消去の反復処理のN番目のパルスの印加中にサスペンドコマンドに応答してN番目のパルスの印加の解除により書き込み処理状態(S5)もしくは消去処理状態(S6)が中断される。コマンド待ち状態(S3)でレジュームコマンドが供給されると、コマンド再開処理状態(S8A)に遷移する。コマンド再開処理状態(S8A)では、高速中断処理(S7A)で印加解除となったN番目のパルスの印加から中断された書き込み処理(S5)もしくは消去処理(S6)が再開される。
フラッシュコントロールユニット5が書き込み処理状態(S5)もしくは消去処理状態(S6)で、割り込み要求IRQが許可され、サスペンドコマンドが検出され、動作モードビット信号SUSPの“0”のレベルによりフラッシュコントロールユニット5の第2の動作(SUSP=“0”レベル)が指定されると、高信頼中断処理(S7B)に状態が遷移する。高信頼中断処理(S7B)では、書き込み処理状態(S5)もしくは消去処理状態(S6)の書き込みもしくは消去の反復処理のN番目のパルスの印加中にサスペンドコマンドに応答してN番目のパルスの印加を継続し、N番目のパルスの印加が完了した時点で書き込み処理状態(S5)もしくは消去処理状態(S6)が中断される。コマンド待ち状態(S3)でレジュームコマンドが供給されると、コマンド再開処理状態(S8B)に遷移する。コマンド再開処理状態(S8B)では、N番目のパルスの印加が完了した不揮発性メモリセルのベリファイから中断された書き込み処理(S5)もしくは消去処理(S6)が再開される。
≪ローカルCPUによる消去制御プログラム≫
図6は図1に示したマイクロコントローラ1のフラッシュコントロールユニット5が消去状態S7に遷移した場合に、ローカルCPU12が実行する消去制御プログラムのフローチャートを示す図である。プログラム処理中で設定する変数などの格納先のハードウェアを特定していない箇所については、ローカルCPU12の汎用レジスタまたはコントロールRAM15の所定の領域に格納されるものとする。消去制御プログラムの冒頭のステップS30では、プログラム処理中で使用する変数の初期化処理を行う。例えば、ステップS12からステップS24までの一連の処理を実行した回数を示す変数が“1”レベルに初期化される。次に、ステップS10で消去ブロック番号などの消去先アドレスを指定する情報を、CPUインターフェースコントローラ13の内部IOレジスタ20から読み取り、書き込み消去制御回路16の動作制御レジスタ18に消去ブロック番号を設定する。次に、ステップS11で書き込み消去制御回路16の動作制御レジスタ18の書き込みイネーブルビット(WE)を“1”のレベルに設定し所定時間ウェイトすることにより、フラッシュメモリ4内の電源が所定の状態になり、フラッシュメモリ4の書き込み/消去が可能になる。次に、ステップS12で処理再開アドレスをステップS12に設定することにより、レジュームコマンド発行後の再開処理において、ローカルCPU12のプログラムがステップS12(消去パルス印加前)から再開されるように設定する。次に、ステップS13でローカルCPU12の割り込み要求信号IRQの割り込みの受け付けを許可することにより、サスペンドコマンドの受け付けが可能な状態とする。この状態で、書き込み消去制御回路16の動作制御レジスタ18の消去ビット(E)を“1”のレベルに設定し所定時間ウェイトすることにより、ステップS14でフラッシュメモリ4に消去パルスが印加される。ステップS14での消去パルス印加のウェイトが完了した後に、ステップS15で割り込み要求信号IRQの受け付けを禁止して、ステップS16で消去ビット(E)を“0”のレベルに設定して消去パルスの印加を解除する。このため、ステップS14での消去パルスの印加中(ウェイト中)にサスペンドコマンドが受け付けることができる。
消去パルスの印加を解除すると、ステップS17で書き込み消去制御回路16の動作制御レジスタ18に消去ベリファイ実行のアドレスを消去ブロック先頭アドレスに設定する。次に、ステップS18で処理再開アドレスをステップS18に設定し、レジュームコマンド発行後の再開処理において、ローカルCPU12のプログラムがステップS18(ベリファイ実行前)から再開されるように設定する。次に、ステップS19でローカルCPU12の割り込み要求信号IRQの受け付けを許可することにより、サスペンドコマンドの受け付けが可能な状態にする。ステップS20で、書き込み消去制御回路16の動作制御レジスタ18のイレーズベリファイビット(EV)を“1”のレベルに設定して所定時間ウェイト後に、消去ベリファイ先アドレスのメモリセルが所定の消去状態(所定のしきい値電圧状態)に到達したかを確認して、確認後にイレーズベリファイビット(EV)を“0”のレベルに設定して所定時間ウェイトする消去ベリファイの動作を実行する。ステップS20の消去ベリファイが完了した後、ステップS21で割り込み要求信号IRQの割り込みの受け付けを禁止する。このため、ステップS20での消去ベリファイ中にサスペンドコマンドが受け付けることができる。
1回の消去ベリファイでベリファイ可能なメモリのビット数は例えば32ビット単位であり、これに対して消去ブロックの単位は例えば2048ビットであるため、1つの消去ブロック分のデータ消去を確認するためには複数回の消去ベリファイを実行する必要がある。このため、ステップS22で消去ベリファイ先のアドレスを確認して、ブロック最終アドレスでない場合にはステップS23でベリファイ先のアドレスを後続の32ビットデータのアドレスに更新して、消去ベリファイの動作を継続する。消去ベリファイ先のアドレスがブロック最終アドレスであった場合には、ステップS24で1つの消去ブロック分のデータが全て消去状態であったかを確認する。尚、全ビットの確認をするためには、ステップS20の消去ベリファイにおいて、消去ベリファイの途中結果を記憶しておく必要がある。1つの消去ブロックが全て消去状態であった場合には、ステップS25で書き込みイネーブルビット(WE)を“0”レベルに設定し所定時間ウェイトすることによりフラッシュメモリ4の書き込み/消去の動作を禁止状態にする。その後、ステップS29でCPUインターフェースコントローラ13のステータスレジスタ22のコマンドエンドフラグ(CMDE)を“1”レベルに設定することにより、消去処理が終了する。
ステップS24で消去状態でないビットが含まれていた場合には、ステップS12からステップS24までの一連の処理を実行した回数の確認をステップS26で行う。所定の回数に到達した場合には、ステップS27でフラッシュメモリへの書き込みは禁止に設定され、ステップS28で消去ブロックを不良とするエラーフラグの設定などのエラー処理を実行した後に、ステップS29で消去処理が完了する。回数が未到達の場合には、ステップS31で回数に1を加算した後にステップS12の処理に戻り、消去パルス印加とベリファイが繰り返される。
≪ローカルCPUによるコマンド中断処理プログラム≫
図7は、図1に示したマイクロコントローラ1のフラッシュコントロールユニット5がコマンド中断処理状態S7(S7A、S7B)に遷移した場合に、ローカルCPU12が実行するコマンド中断処理プログラムのフローチャートを示す図である。尚、図7のフローチャートでは動作モードビット信号SUSPの値に影響を受ける消去処理に対する中断処理S7としてコマンド高速処理状態S7A(ステップS46)とコマンド高信頼処理状態S7B(ステップS42からステップS44)との2つを用意しており、書き込み処理に対する中断処理S7として1つのコマンド中断処理状態S7(ステップS51)のみを用意している。これは、発明が解決しようとする課題の欄でも説明したように、下記の事項に起因している。
すなわち、フラッシュメモリでは、書き込み単位は128バイトのページと小さく、消去単位はハードディスクの1セクターの整数倍と大きいので、フラッシュメモリを長寿命化するには書き込み時のストレスよりも消去時のストレスを低減することが必要である。フラッシュメモリの長寿命化ために、不揮発性フラッシュメモリセルへ書き込み時に印加される書き込みパルスの振幅値よりも消去時に印加される消去パルスの振幅値をより小さくして消去時のストレスを低減する。その結果、消去パルスの印加と消去ベリファイとの反復による消去動作の時間は、書き込みパルスの印加と書き込みベリファイとの反復による書き込み動作の時間よりも長くなる。この長時間の消去動作中に割り込みによる中断命令を供給して消去動作を中断して読み出し動作を行った後に、レジュームコマンドの復帰命令により中断した消去動作を再開するに際しては、不揮発性フラッシュメモリセルへのストレスが低い再開方法が必要である。一方、リアルタイム性の高い機器制御用のプログラムを実行している場合には、長時間の消去動作中の割り込みによる中断命令の供給から実際の中断までの移行時間を短くするためには、中断命令に応答して消去パルスの印加を直ちに解除することが望ましい。しかし、この方法では、復帰命令により中断した消去動作を再開するに際して、印加解除した同一の消去パルスが再び不揮発性フラッシュメモリセルに印加される。
従って、処理時間の長い消去処理S6での中断処理S7としてコマンド高速処理状態S7A(ステップS46の移行時間の短い中断処理)とコマンド高信頼処理状態S7B(ステップS42からステップS44の再開後のストレスが低い中断処理)との2つを用意しており、処理時間の短い書き込み処理S5での中断処理S7として1つのコマンド中断処理状態S7(ステップS51)のみを用意している。
ちなわち、コマンド中断処理状態S7に遷移すると、図7に示すようにローカルCPU12はサスペンドコマンド発行時の処理が、消去パルス印加中(消去ビット(E)が“1”レベルであったのかをステップS40で判断して、消去ベリファイ中(イレーズベリファイビット(EV)が“1”レベルであったのかをステップS47で判断して、書き込み処理中(書き込み指示ビット(P)あるいはプログラムベリファイビット(PV)が“1”のレベル)であったのかをステップS50で判定する。
サスペンドコマンド発行時の処理が消去パルスの印加中であった場合、ローカルCPU12はCPUインターフェースコントローラ13のサスペンドモードレジスタ31の動作モードビット信号SUSPを読み出して、ステップS41で中断処理の内容を切り替える。動作モードビット信号SUSPが“0”のレベルの場合には、ステップS42でサスペンドコマンド発行前の消去パルス印加時間も含めた時間が所定時間を経過するまで消去パルスの印加が継続され、所定の消去パルス印加時間が経過するとステップS43で消去パルスの印加が解除される。つまり、所定の消去パルス印加が完了される。また、消去パルス印加完了後の処理再開アドレスは図6の消去制御プログラムのステップS17(消去ベリファイアドレスの設定)にステップS44で変更されるため、消去処理が再開される場合には図6のステップS17の消去ベリファイアドレスの設定処理から再開されることになる。次に、ステップS45で消去ブロック番号などの処理再開に必要な変数を書き込み消去制御回路16の動作制御レジスタ18からコントロールRAM15に退避して、ステップS52で処理再開アドレスをコントロールRAM15に退避して、ステップS53でフラッシュメモリを書き込み禁止に設定した後、CPUインターフェースコントローラ13のステータスレジスタ22のコマンドエンドフラグ(CMDE)を“1”のレベルに設定することにより、ステップS54でコマンド中断処理が終了する。動作モードビット信号SUSPが“1”のレベルの場合には、ステップS46でローカルCPU12はただちに消去パルスの印加を解除して、ステップS45で消去ブロック番号などを動作制御レジスタ18からコントロールRAM15に退避して、ステップS52で処理再開アドレスを動作制御レジスタ18からコントロールRAM15に退避して、ステップS53でフラッシュメモリを書き込み禁止に設定して、ステップS54でコマンド中断処理が終了する。ステップS46でローカルCPU12はただちに消去パルスの印加を解除して、ステップS45で消去ブロック番号などを動作制御レジスタ18からコントロールRAM15に退避すると、消去パルス印加完了後の処理再開アドレスは図6の消去制御プログラムのステップS12(処理再開アドレス)のままで変更されないため、消去処理が再開される場合には図6のステップS12(処理再開アドレスの設定)から再開されてステップS14で以前に解除されたパルスが印加されることになる。
サスペンドコマンド発行前の処理が消去ベリファイ中であった場合は、ステップS48でローカルCPU12はただちに消去ベリファイを中断して、ステップS49で消去ブロック番号/消去ベリファイ先アドレス/消去ベリファイ途中結果などの処理再開に必要な変数をコントロールRAM15に退避した後、ステップS52で処理再開アドレスを退避して、ステップS53でフラッシュメモリを書き込み禁止に設定して、ステップS54でコマンド中断処理が終了する。
サスペンド発行前の処理が書き込み処理中であった場合には、書き込み処理と書き込みベリファイ処理とが完了した書き込みページの再書き込みを中断後の処理再開時に、フラッシュコントロールユニット5が要求しないような書き込み処理の中断に必要な処理をステップS51で実行した後、ステップS52で処理再開アドレスをコントロールRAM15に退避して、ステップS53でフラッシュメモリを書き込み禁止に設定して、ステップS54でコマンド中断処理が終了する。
≪ローカルCPUによるコマンド再開処理プログラム≫
図8は、図1に示したマイクロコントローラ1のフラッシュコントロールユニット5がコマンド再開処理状態S8に遷移した場合に、ローカルCPU12が実行するコマンド再開処理プログラムのフローチャートを示す図である。尚、図8のコマンド再開処理プログラムのフローチャートでは、ステップS60やステップS63やステップS66やステップS69でのローカルCPU12による種々の処理再開アドレスのコントロールRAM15からの読み出しとコントロールRAM15に退避していた変数の動作制御レジスタ18での回復処理の後のステップS62やステップS65やステップS68での図6の消去制御プログラムの処理再開アドレスS12、S17、S18への分岐と、図8のステップS69でのローカルCPU12によるコントロールRAM15に退避していた書き込みデータや変数の動作制御レジスタ18での回復処理の後のステップS70での書き込み制御プログラムの分岐とを示している。しかし、図8のコマンド再開処理プログラムのフローチャートでは、動作モードビット信号SUSPの値“1”、“0”に影響を受ける処理の違いは無いかのように見える。しかし、図8のステップS62、65により図6の消去制御プログラムの処理再開アドレスS12、S17へ分岐した後の再開処理が、異なっている。
すなわち、図7のコマンド中断処理プログラムでサスペンドコマンド発行時の処理が消去パルスの印加中であった場合、ローカルCPU12はCPUインターフェースコントローラ13のサスペンドモードレジスタ31の動作モードビット信号SUSPを読み出して、図7のステップS41で中断処理の内容を切り替えた。動作モードビット信号SUSPが“0”のレベルの場合には、ステップS42でサスペンドコマンド発行前の消去パルス印加時間も含めた時間が所定時間を経過するまで消去パルスの印加が継続され、所定の消去パルス印加時間が経過するとステップS43で消去パルスの印加が解除される。つまり、所定の消去パルス印加が完了される。また、消去パルス印加完了後の処理再開アドレスは図6の消去制御プログラムのステップS17(消去ベリファイアドレスの設定)にステップS44で変更されるため、消去処理が再開される場合には図6のステップS17の消去ベリファイアドレスの設定処理から再開されることになる。一方、動作モードビット信号SUSPが“1”のレベルの場合には、ステップS46でローカルCPU12はただちに消去パルスの印加を解除して、ステップS45で消去ブロック番号などを動作制御レジスタ18からコントロールRAM15に退避する。また、消去パルス印加完了後の処理再開アドレスは図6の消去制御プログラムのステップS12(処理再開アドレス)のままで変更されないため、消去処理が再開される場合には図6のステップS12(処理再開アドレス)から再開されてステップS14で以前に解除されたパルスが印加されることになる。
コマンド再開処理S8に遷移すると、図8に示すようにステップS60やステップS63やステップS66でローカルCPU12は処理再開アドレスをコントロールRAM15から読み出した後、再開する処理に応じてコントロールRAM15に退避していた変数の回復処理を行って、処理再開アドレスに分岐する。ステップS60で処理再開アドレスがステップS12であった場合には、ステップS61で消去ブロック番号などをコントロールRAM15から読み出して回復して、ステップS71でフラッシュメモリを書き込み許可に設定した後にステップS62で図6のステップS12に分岐することにより、消去パルスの印加前の時点から消去処理を再開する。ステップS63で処理再開アドレスがステップS17であった場合には、ステップS64で消去ブロックなどをコントロールRAM15から読み出して回復して、ステップS72でフラッシュメモリを書き込み許可に設定した後にステップS65で図6のステップS17に分岐することにより、消去ブロック先頭の消去ベリファイの時点から消去処理を再開する。ステップS66で処理再開アドレスが図6のステップS18であった場合には、ステップS67で消去ブロック/ベリファイ先アドレス/ベリファイ途中結果などをコントロールRAM15から読み出して回復して、ステップS73でフラッシュメモリを書き込み許可に設定した後にステップS68で図6のステップS18に分岐することにより、消去ブロックの任意のアドレスに対する消去ベリファイから消去処理を再開する。処理再開アドレスがステップS12、ステップS17、ステップS18のいずれとも一致しなかった場合には、ステップS69で書き込み処理用のデータを回復して、ステップS74でフラッシュメモリを書き込み許可に設定した後にステップS70で書き込み処理用のプログラムに分岐する。
≪消去処理と消去サスペンド動作≫
図9は、図1に示したマイクロコントローラ1のCPUインターフェースコントローラ13のサスペンドモードレジスタ31の動作モードビット信号SUSPが“1”レベルの場合における消去サスペンド動作を示す図である。フラッシュコントロールユニット5は時刻t1で消去コマンドを受け付けると消去処理状態S6に遷移して、ステータスレジスタ22のビジーフラグ(BUSY)を“1”レベルに設定する。消去処理が開始されて所定の時間が経過すると、消去処理の制御プログラムによって割り込み要求信号IRQの受け付けが許可された状態で消去パルスが印加される(消去ビット(E)=“1”レベル)。時刻t2において、消去パルスの印加中にサスペンドコマンドがフラッシュコントロールユニット5により受け付けられると、フラッシュコントロールユニット5はコマンド中断処理状態S7に遷移する。動作モードビット信号SUSPが“1”レベルの場合には、消去パルスの印加がただちに解除される(消去ビット(E)=“0”レベル)。時刻t3でコマンド中断処理が完了してステータスレジスタ22のコマンドエンドフラグ(CMDE)が“1”レベルに設定されると、ビジーフラグ(BUSY)が“0”レベルに変化してフラッシュコントロールユニット5はコマンド待ち状態S3に遷移する。時刻t4においてフラッシュコントロールユニット5がレジュームコマンドを受け付けると、フラッシュコントロールユニット5はコマンド再開処理状態S8に遷移して、ビジーフラグ(BUSY)が再び“1”レベルに設定される。時刻t2におけるサスペンドコマンド受け付け後に消去パルスの印加を中断したため、時刻t5では消去パルス印加前の時点から処理が再開され、消去パルスの再印加が実施される(消去ビット(E)=“1”レベル)。時刻t6において、消去パルスの印加中にサスペンドコマンドがフラッシュコントロールユニット5により再び受け付けられると、フラッシュコントロールユニット5はコマンド中断処理状態S7に遷移する。中断処理においては、消去パルスの印加が再びただちに解除され(消去ビット(E)=“0”レベル)、時刻t7でコマンド中断処理が完了してフラッシュコントロールユニット5はコマンド待ち状態S3に遷移する。時刻t8においてフラッシュコントロールユニット5がレジュームコマンドを受け付けると、フラッシュコントロールユニット5はコマンド再開処理状態S8に遷移する。時刻t6におけるサスペンドコマンド受け付け後に消去パルスの印加を中断したため、時刻t9では消去パルス印加前の時点から処理が再開され、消去パルスの再印加が実施される(消去ビット(E)=“1”レベル)。尚、消去ベリファイ中のサスペンド受け付け時の動作は動作モードビット信号SUSPの値“1”、“0”に影響を受けない。図9では消去ベリファイ中のサスペンドコマンド受け付け時の動作は説明しなかったが、以下の図10と同様である。
図10は、図1に示したマイクロコントローラ1のCPUインターフェースコントローラ13のサスペンドモードレジスタ31の動作モードビット信号SUSPが“0”のレベルの場合における消去サスペンド動作を示す図である。フラッシュコントロールユニット5は時刻t20の時点で消去コマンドを受け付けると消去処理状態S6に遷移して、ステータスレジスタ22のビジーフラグ(BUSY)を“1”レベルに設定する。消去処理が開始されて所定の時間が経過すると、消去処理の制御プログラムによって割り込み要求信号IRQの受け付けが許可された状態で消去パルスが印加される(消去ビット(E)=“1”レベル)。時刻t21において、消去パルスの印加中にサスペンドコマンドがフラッシュコントロールユニット5により受け付けられると、フラッシュコントロールユニット5はコマンド中断処理状態S7に遷移する。動作モードビット信号SUSPが“0”のレベルの場合には、消去動作で必要とされる所定時間の消去パルスの印加が継続された後に消去パルスの印加が解除される(消去ビット(E)=“0”レベル)。時刻t22でコマンド中断処理が完了してステータスレジスタ22のコマンドエンドフラグ(CMDE)が“1”レベルに設定されると、ビジーフラグ(BUSY)が“0”のレベルに変化してフラッシュコントロールユニット5はコマンド待ち状態S3に遷移する。時刻t23においてフラッシュコントロールユニット5がレジュームコマンドを受け付けると、フラッシュコントロールユニット5はコマンド再開処理状態S8に遷移して、ビジーフラグ(BUSY)が再び“1”レベルに設定される。時刻t21におけるサスペンドコマンド受け付け後に消去パルスの印加を継続したため、時刻t24では消去ブロック先頭の消去ベリファイ処理前から消去処理が再開され、消去ベリファイが実施される(イレーズベリファイビット(EV)=“1”レベル)。時刻t25において、消去ベリファイ中にサスペンドコマンドがフラッシュコントロールユニット5により受け付けられると、フラッシュコントロールユニット5はコマンド中断処理状態S7に遷移する。中断処理においては、消去ベリファイがただちに中断され(イレーズベリファイビット(EV)=“0”レベル)、時刻t26でコマンド中断処理が完了してフラッシュコントロールユニット5はコマンド待ち状態S3に遷移する。時刻t27においてフラッシュコントロールユニット5がレジュームコマンドを受け付けると、フラッシュコントロールユニット5はコマンド再開処理状態S8に遷移する。サスペンドコマンド受け付け後に時刻t25で消去ベリファイを中断したため、時刻t28では消去ベリファイ前の時点から処理が再開され、消去ベリファイが再実施される(消去ビット(E)=“1”レベル)。
以上説明したように、第1の実施形態では、中央処理ユニット2によりフラッシュコントロールユニット5のCPUインタフェースコントローラ13のサスペンドモードレジスタ31の動作モードビット信号SUSPの設定を“1”レベルあるには“0”レベルに切り替えることによって、消去パルスの印加を中断してサスペンドモードへ高速移行する方式(中断処理S7A)と消去パルスの印加を完了してサスペンドモードへ移行する方式(中断処理S7B)を切り替え可能であるため、システムの処理内容に合わせたサスペンド処理を実現可能である。例えば、中央処理ユニット2の割り込み処理時にフラッシュメモリ4の読み出しを即時に実行する必要性があるリアルタイム性の高いアプリケーションを実行している場合には消去パルスの印加を中断してサスペンドモードへ高速移行する方式(中断処理S7A)に設定を行い、不揮発性メモリのストレスを低減する必要性がある場合や消去処理全体に要する時間を短期間に実行する必要性があるアプリケーションを実行している場合には消去パルスの印加を完了してサスペンドモードへ移行する高信頼中断方式(中断処理S7B)に設定を行うといった切り替えが可能である。
消去パルスの印加を中断してサスペンドモードへ移行する設定では、サスペンドモードへの移行時間を短縮できる。消去パルスの印加時間は1mSec以上におよぶ場合があるが、32ビット単位の1回の消去ベリファイ時間は100μSec程度である。サスペンドモード移行時間を律速する要因は消去パルスの印加中断処理であるので、高速移行方式(中断処理S7A)により消去パルス印加を中断することによってサスペンドモード移行時間を短縮することが可能になる。一方、不揮発性メモリのストレスを低減するためあるいは消去処理全体に要する時間を短縮するためには、高信頼中断方式(中断処理S7B)により消去パルスの印加を完了してサスペンドモードに移行する方式が有効である。
(第2の実施形態)
第2の実施形態と上記の第1の実施形態の違いは、ローカルCPU12が実行する消去制御プログラム/コマンド中断処理プログラム/コマンド再開処理プログラムの内容のみである。第2の実施形態のフラッシュコントロールユニット5では、動作モードビット信号SUSPが“1”レベルで同一の消去パルスの印加時に複数回サスペンドコマンドを受け付けた場合に、1回目のサスペンドコマンドではパルス印加を中断するが、2回目のサスペンドコマンドではパルス印加を継続するものである。その結果、フラッシュコントロールユニット5の第1の動作(SUSP=“1”レベル)により書き込み動作又は消去動作中の割り込みによる中断命令の供給から実際の中断までの移行時間は短くなるが、中断によって不揮発記憶動作の反復処理のパルス印加が一向に進展しないと言う事態を回避することができる。
図11は、本発明の第2の実施形態による消去制御プログラムを示す図である。第2の実施形態の消去制御では消去パルス中断フラグと呼ばれる変数を使用して、消去パルスの中断回数を監視している。消去パルス中断フラグは、サスペンドコマンド受け付け後に、消去パルスの印加を中断した場合に“1”レベル、初回の消去パルスの印加前または消去パルスの印加を完了した場合に“0”のレベルに設定されるフラグである。図11の消去制御プログラムでは、このフラグを操作する処理が第1の実施形態の図6の消去制御プログラムに対して追加されている。具体的には、ステップS14の消去パルスを印加する前のステップS100とステップS16の消去パルス印加の完了後のステップS101とで消去パルス中断フラグを“0”のレベルにする処理を追加している。
図12は、本発明の第2の実施形態によるコマンド中断処理プログラムを示す図である。第1の実施形態の図7のコマンド中断処理プログラムに対して第2の実施形態の図12のコマンド中断処理プログラムも消去パルス中断フラグに対応して追加/変更が行われている。図12のコマンド中断処理プログラムでは、動作モードビット信号SUSPが“0”のレベルの場合には所定の消去パルス印加が完了しているので、ステップS113で処理再開アドレスを図11の消去制御プログラムのステップS101に設定することにより消去処理再開後に消去パルス中断フラグが“0”のレベルになるようにしている。また、動作モードビット信号SUSPが“1”レベルの場合には、図12のステップS110で消去パルス中断フラグの値に従って異なる処理が実行されるようにしている。消去パルス中断フラグが“0”のレベルの場合には、ステップS111でただちに消去パルスを解除して、ステップS112で消去パルス中断フラグを“1”レベルに設定する。また、消去パルス中断フラグが“1”レベルの場合には、動作モードビット信号SUSPが“0”のレベルの場合と同じ処理をステップS42からステップS43で実行する。ステップS114、ステップS115の中断前の変数の退避処理では、消去パルス中断フラグもコントロールRAM15に退避される。
図13は、本発明の第2の実施形態によるコマンド再開処理プログラムを示す図である。第1の実施形態の図8のコマンド再開処理プログラムに対して第2の実施形態の図13のコマンド再開処理プログラムも消去パルス中断フラグに対応した変更が行われている。図13のステップS120、ステップS122、ステップS124でのコントロールRAM15に退避した変数の復元処理では、消去パルス中断フラグも回復される。また、消去ブロック先頭の消去ベリファイの時点から消去処理を再開する処理に先立って、ステップS101で消去パルス中断フラグを“0”のレベルに設定するように変更したため、ステップS121とステップS123の分岐先を変更している。
図14は、本発明の第2の実施形態において動作モードビット信号SUSPが“1”レベルの場合における消去処理と消去サスペンド動作を示す図である。第1実施形態と第2実施形態の動作の違いは、動作モードビット信号SUSPが“1”レベルの場合のみ現れる。フラッシュコントロールユニット5は時刻t100で消去コマンドを受け付けると消去処理状態S6に遷移して、ステータスレジスタ22のビジーフラグ(BUSY)を“1”レベルに設定する。消去処理が開始されて所定の時間が経過すると、消去処理の制御プログラムによって割り込み要求信号IRQの受け付けが許可かつ消去パルス中断フラグが“0”のレベルに設定された状態で消去パルスが印加される(消去ビット(E)=“1”レベル)。時刻t101において、消去パルスの印加中にサスペンドコマンドが受け付けられると、フラッシュコントロールユニット5はコマンド中断処理状態S7Aに遷移する。動作モードビット信号SUSPが“1”レベルで消去パルス中断フラグが“0”のレベルの場合には、消去パルスの印加がただちに解除されて(消去ビット(E)=“0”のレベル)、消去パルス中断フラグが“1”レベルに設定される。時刻t102でコマンド中断処理が完了してステータスレジスタ22のコマンドエンドフラグ(CMDE)が“1”レベルに設定されると、ビジーフラグ(BUSY)が“0”のレベルに変化してフラッシュコントロールユニット5はコマンド待ち状態S3に遷移する。時刻t103においてフラッシュコントロールユニット5がレジュームコマンドを受け付けると、フラッシュコントロールユニット5はコマンド再開処理状態S8Aに遷移して、ビジーフラグ(BUSY)が再び“1”レベルに設定される。時刻t103におけるサスペンドコマンド受け付け後に消去パルスの印加を中断したため、時刻t104では消去パルス印加前の時点から処理が再開され、消去パルスの再印加が実施される(消去ビット(E)=“1”レベル)。時刻t105において、消去パルスの印加中にサスペンドコマンドが再び受け付けられると、フラッシュコントロールユニット5はコマンド中断処理状態S7Bに遷移する。動作モードビット信号SUSPが“1”レベルで消去パルス中断フラグが“1”レベルの場合には、消去動作で必要とされる所定時間の消去パルスの印加が継続された後に消去パルスの印加が解除される(消去ビット(E)=“0”のレベル)。時刻t106でコマンド中断処理が完了するとフラッシュコントロールユニット5はコマンド待ち状態S3に遷移する。時刻t105におけるサスペンドコマンド受け付け後に消去パルスの印加を継続したため、時刻t108では消去パルス中断フラグを“0”のレベルに設定する処理から消去処理が再開され、その後に消去ブロック先頭の消去ベリファイが実施される(イレーズベリファイビット(EV)=“1”レベル)。
以上説明したように、第2の実施形態では動作モードビット信号SUSPを“1”レベルに設定することにより、消去パルス印加中の1回目の中断処理では消去パルス印加を中断するコマンド高速中断処理状態S7Aへ移行する。従って、平均的なサスペンドモードへの移行時間を動作モードビット信号SUSPが“0”のレベルの場合よりも短縮できる。また、2回目の中断処理では消去パルスの印加を完了するコマンド高信頼中断処理状態S7Bへ移行する。また、コマンド高速中断処理状態S7Aとコマンド高信頼中断処理状態S7Bとは、交互に発生する。従って、第1の実施形態で動作モードビット信号SUSP=“1”レベルによる第1の動作モードと動作モードビット信号SUSP=“0”レベルによる第2の動作モードとが交互に発生しているのが、第2の実施形態である。従って、第2の実施形態によれば、中断命令の供給から実際の中断までの平均的な移行時間の短縮と不揮発性メモリへの平均的なストレスの低減とをバランス良く実現することができる。
(第3の実施形態)
図15は、本発明の第3の実施形態による書き込み制御プログラムを示す図である。この図15に示した書き込み制御プログラムは書き込みパルスの印加と書き込みベリファイとの反復処理による書き込み処理で、図6に示した本発明の第1の実施形態による消去制御プログラムの消去パルスの印加と消去ベリファイとの反復処理による書き込み処理と類似している。図15の書き込み制御プログラムでも、ステップS´14での書き込みパルスの印加中(ウェイト中)にサスペンドコマンドが受け付けられることができ、ステップS´20での書き込みベリファイ中にサスペンドコマンドが受け付けられることができる。
図16は、本発明の第3の実施形態によるコマンド中断処理プログラムを示す図である。この図16に示したコマンド中断処理プログラムは、図7に示した本発明の第1の実施形態によるコマンド中断処理プログラムのステップ51の書き込み中断処理を図16のステップS81〜S86に置き換えている。この図16のステップS81〜S86の書き込み中断処理は図7および図16のステップS41〜S46の消去中断処理と類似している。図16のコマンド中断処理プログラムでは、サスペンドコマンド発行時の処理が書き込みパルスの印加中であった場合、ローカルCPU12はCPUインターフェースコントローラ13のサスペンドモードレジスタ31の動作モードビット信号SUSPを読み出して、ステップS81で中断処理の内容を切り替える。動作モードビット信号SUSPが“0”のレベルの場合には、ステップS82でサスペンドコマンド発行前の書き込みパルス印加時間も含めた時間が所定時間を経過するまで書き込みパルスの印加が継続され、所定の書き込みパルス印加時間が経過するとステップS83で書き込みパルスの印加が解除される。また、書き込みパルス印加完了後の処理再開アドレスは図15の書き込み制御プログラムのステップS´17(書き込みベリファイアドレスの設定)にステップS84で変更されるため、書き込み処理が再開される場合には図15のステップS´17の書き込みベリファイアドレスの設定処理から再開されることになる。次に、ステップS85で書き込みブロック番号などの処理再開に必要な変数をコントロールRAM15に退避する。動作モードビット信号SUSPが“1”のレベルの場合には、ステップS86でローカルCPU12はただちに書き込みパルスの印加を解除される。この時の処理再開アドレスは、図15の書き込み制御プログラムのステップS´12(処理再開アドレスの設定)となる。
この第3の実施形態では動作モードビット信号SUSPを“1”レベルに設定することにより、図5の書き込み処理状態S5でサスペンドコマンドが受け付けると、書き込みパルス印加中の中断処理では書き込みパルス印加を中断するコマンド高速中断処理状態S7Aへ移行する。このコマンド高速中断処理状態S7Aは、図16のコマンド中断処理プログラムのステップS86での書き込みパルスの印加解除である。この時の処理再開アドレスは、図15の書き込み制御プログラムのステップS´12(処理再開アドレスの設定)となる。
また、動作モードビット信号SUSPを“0”レベルに設定することにより、図5の書き込み処理状態S5でサスペンドコマンドが受け付けると、書き込みパルス印加中の中断処理では書き込みパルス印加を継続して印加を完了するコマンド高信頼中断処理状態S7Bへ移行する。このコマンド高信頼中断処理状態S7Bは、図16のコマンド中断処理プログラムのステップS82〜S84となる。この時の処理再開アドレスは、図15のステップS´17の書き込みベリファイアドレスの設定処理となる。
以上説明したように、本発明の第3の実施形態では動作モードビット信号SUSPを“1”レベルに設定することにより、書き込みパルス印加中の中断処理では書き込みパルス印加を中断してコマンド高速中断処理状態S7Aへ高速移行することが可能である。また、動作モードビット信号SUSPを“0”レベルに設定することにより、中断処理では書き込みパルス印加を継続して印加を完了する不揮発性メモリのストレスが低減されるコマンド高信頼中断処理状態S7Bすることが可能である。
また、本発明の第3の実施形態でも本発明の第2の実施形態と同様に書き込みパルス中断フラグを使用することにより、動作モードビット信号SUSP=“1”レベルによる第1の動作モードと動作モードビット信号SUSP=“0”レベルによる第2の動作モードとが交互に発生させることも可能である。
(第4の実施形態)
図17は、本発明の第4の実施形態によるマイクロコントローラ1を示すブロック図である。図17に示したマイクロコントローラ1が、図1のマイクロコントローラ1と相違する点を説明する。
図17ではフラッシュメモリ4は、プログラムを格納するプログラムフラッシュメモリ4Aと、ユーザーデータを格納するデータフラッシュメモリ4Bとを含み、プログラムフラッシュメモリ4Aとデータフラッシュメモリ4Bとは異なるフラッシュメモリアレーで構成され、異なるフラッシュメモリアレーにより構成され、プログラムフラッシュメモリ4Aとデータフラッシュメモリ4Bとは異なるワード線と異なるビット線と異なる消去ブロックとを有する。
その結果、データフラッシュメモリ4Bへのユーザーデータの頻繁な書き込みや頻繁な消去によるプログラムを格納したプログラムフラッシュメモリ4Aでのディスターブの影響を低減することができる。もし、2つのフラッシュメモリでワード線やビット線や消去ブロックが共通していると、相互のディスターブの影響でフラッシュメモリセルのしきい値電圧が不所望に変化してしまう。
図17のプログラムフラッシュメモリ4Aとデータフラッシュメモリ4Bとは、それぞれファイル・アロケーション・テーブル(FAT_P、FAT_D)とルート・ディレクトリー(RtDi_P、RtDi_D)とを含むことにより、フラッシュメモリによる磁気ディスク・エミュレーションを実現している。すなわち、ブートレコードとファイル・アロケーション・テーブルとルート・ディレクトリーとをシステム領域に含むことにより、MS−DOSオペレーティングシステムを不揮発性フラッシュメモリに構築することができる。尚、MS−DOSは、Microsoft Disk Operating Systemの略称である。このために、磁気ディスクの論理クラスターを不揮発性半導体メモリのファイル構造の物理セクターにマッピングするクラスター・マッピング・テーブルが構築される。尚、論理クラスターは磁気ディスクにて論理的にアドレス可能な最小の記憶単位であり、3.5インチディスクの場合には、論理クラスターは512バイトの1つの物理セクターに対応している。また、ファイル・アロケーション・テーブル(FAT)は1つのファイルを構成する複数のクラスターがどのようにリンクされているかを示すチェーン形式の記録を含んでおり、更に、ルート・ディレクトリーは、ファイル名と、1つのファイルを形成する複数のクラスターのスタート・クラスター番号と、ファイル・サイズ等とを含んでいる。論理クラスターをファイル構造の物理セクターにマッピングするクラスター・マッピング・テーブルは、外部の論理アドレスとファイル構造の物理セクターとをリンクする。
プログラムフラッシュメモリ4Aには、ファイル・アロケーション・テーブルFAT_Pとルート・ディレクトリーRtDi_Pとその管理データMD_P1が格納され、さらにブートプログラムBoot_PRGとその管理データMD_P2、オペレーティングシステムプログラムOS_PRGとその管理データMD_P3、複数のアプリケーションプログラムAP_PRG1、AP_PRG2、AP_PRG3…とその管理データMD_P4、MD_P5、MD_P6…も格納されている。特に、管理データMD_P1…MD_P6は、それが格納された消去ブロックの良・不良コード、書き換え・消去回数、ECC(誤り訂正コード)データ、代替アドレス情報等の重要な管理データを含んでいる。
データフラッシュメモリ4Bにも、ファイル・アロケーション・テーブルFAT_Dとルート・ディレクトリーRtDi_Dとその管理データMD_D1が格納され、さらに大きなユーザーデータを格納可能なユーザーデータ領域User_Dataとその管理データを格納可能な管理領域MD_D2を含んでいる。
図17では、データフラッシュメモリ4Bのユーザーデータ領域User_Dataでの大容量データのダウンロード等の書き込みもしくは大容量データの削除等の消去に際しては、フラッシュコントロールユニット5のCPUインタフェースコントローラ13のサスペンドモードレジスタ31の動作モードビット信号SUSPが“1”レベルにセットされる。その結果、大容量データの書き込み処理もしくは消去処理の間にサスペンドコマンドに応答して高速のリアルタイム性に優れた高速中断処理状態S7Aに遷移することができる。高速中断処理状態S7Aに遷移した後、コマンド待ち状態S3でレジームコマンドを受け付けると、中断したパルスを再印加するコマンド再開処理S8Aに推移する。
一方、プログラムフラッシュメモリ4Aでのプログラムのインストール等の書き込みもしくはアンインストール等の消去に際しては、プログラムフラッシュメモリ4Aへのストレスを低減することが望ましい。データフラッシュメモリ4Bのユーザーデータ領域User_Dataでのユーザーデータの頻繁な書き込みや頻繁な消去と比較すると、プログラムフラッシュメモリ4Aでのプログラムのインストール等の書き込みもしくはやアンインストール等の消去の頻度は極めて低くプログラムフラッシュメモリ4AはROM(リードオンリメモリ)に近い動作環境である。プログラムフラッシュメモリ4Aでの頻度の少ない書き込みや消去に際して、プログラムフラッシュメモリ4Aへのストレスが高い書き込み処理の中断や消去処理の中断が生じると、プログラムフラッシュメモリ4AへのストレスによりブートプログラムBoot_PRGやオペレーティングシステムプログラムOS_PRGや管理データMD_P2、MD_P3のデータがディスターブにより読み出し不能となる危険性がある。特に、管理データMD_P2、MD_P3のECCデータや代替アドレス情報等の重要な管理データが読み出し不能となると、マイクロコントローラ1はパワーオン時にブートプログラムBoot_PRGやオペレーティングシステムプログラムOS_PRGを起動できなくなり、システムクラッシュとなる。従って、プログラムフラッシュメモリ4Aでの書き込みや消去処理では、サスペンドモードレジスタ31の動作モードビット信号SUSPが“0”レベルにセットされる。その結果、書き込み処理もしくは消去処理の間にサスペンドコマンドに応答してプログラムフラッシュメモリ4Aへのストレスが低減された高信頼性中断処理状態S7Bに遷移することができる。高信頼性中断処理状態S7Bに遷移した後、コマンド待ち状態S3でレジームコマンドを受け付けると、パルス印加を継続してパルス印加を完了したフラッシュメモリセルのベリファイから再開するコマンド再開処理S8Bに推移する。
また、データフラッシュメモリ4Bのユーザーデータ領域User_Dataでのデータの書き込みもしくはデータの消去に際しては、上述のようにサスペンドモードレジスタ31の動作モードビット信号SUSPが“1”レベルにセットされた。しかし、データフラッシュメモリ4Bの管理領域MD_D1、MD_D2のECCデータや代替アドレス情報等の重要な管理データが読み出し不能となると、ファイル・アロケーション・テーブルFAT_Dやルート・ディレクトリーRtDi_Dやユーザーデータ領域User_Dataの重要な管理データが読み出し不可能となる。従って、データフラッシュメモリ4Bの管理領域MD_D1、MD_D2の書き込みや消去処理では、サスペンドモードレジスタ31の動作モードビット信号SUSPが“0”レベルにセットされる。その結果、書き込み処理もしくは消去処理の間にサスペンドコマンドに応答してプログラムフラッシュメモリ4Aへのストレスが低減された高信頼性中断処理状態S7Bに遷移することができる。この時も、高信頼性中断処理状態S7Bに遷移した後、コマンド待ち状態S3でレジームコマンドを受け付けると、パルス印加を継続してパルス印加を完了したフラッシュメモリセルのベリファイから再開するコマンド再開処理S8Bに推移する。
以上のように、データフラッシュメモリ4Bのユーザーデータ領域USer_Dataへの書き込みや消去には動作モードビット信号SUSP=“1”レベルによる第1の動作に設定して、プログラムフラッシュメモリ4Aでのプログラムのインストール等の書き込みもしくはアンインストール等の消去とデータフラッシュメモリ4Bの管理領域MD_D1、管理領域MD_D2…の書き込みや消去に際しては動作モードビット信号SUSP=“0”レベルによる第2の動作に設定すると言う制御は、プログラムフラッシュメモリ4AのオペレーティングシステムプログラムOS_PRGで実行することも可能である。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、本発明はマイクロコントローラ以外にも、フラッシュメモリカードのような記憶装置にも適用することができる。
(第5の実施形態)
図18は、本発明の第5の実施形態によるフラッシュメモリカード1を示すブロック図である。フラッシュメモリカード1は、USB(ユニバーサルシリアルバス)等のような外部バスExt_Busを介してパーソナルコンピュータ等のホスト機器Hostと接続可能なリムーバブルな2次記憶装置として構成されている。またリムーバブルな2次記憶装置以外にも、携帯電話やモバイル機器に搭載される組込型記憶装置にも応用することが可能である。外部バスExt_Busには、メモリコントローラ2のホストインターフェースHost_Intが接続される。メモリコントローラ2では、ホストインターフェースHost_IntにマイクロコントローラMCUとバッファ制御ユニットBuffer Cntが接続され、バッファ制御ユニットBuffer Cntにはバッファメモリ3が接続され、マイクロコントローラMCUにはデータ転送制御ユニットCnt_Unitが接続され、データ転送制御ユニットCnt_UnitにはECC(誤り訂正)制御ユニットECCが接続されている。
メモリコントローラ2のデータ転送制御ユニットCnt_Unitには、内部バスInt_Busを介して複数のフラッシュメモリデバイスFLASH 4(1)…FLASH 4(N)が接続されている。複数のフラッシュメモリデバイスFLASH 4(1)…FLASH 4(N)は、フラッシュメモリアレーFLASH ARRAY(1)…FLASH ARRAY(N)とオンチップ・フラッシュメモリコントロールユニットFCU 5(1)…FCU 5(N)とを含んでいる。
フラッシュメモリデバイスFLASH 4(1)…FLASH 4(N)の上のこのオンチップ・フラッシュメモリコントロールユニットFCU 5(1)…FCU 5(N)のそれぞれの構成と動作とは、図1に示したマイクロコントローラ1のフラッシュコントロールユニット(FCU)5と同様となっている。すなわち、オンチップ・フラッシュメモリコントロールユニットFCU 5(1)…FCU 5(N)の内部のサスペンドモードレジスタ31の動作モードビット信号SUSPの値によって、その動作モードが制御される。動作モードビット信号SUSPが“1”レベルであるとオンチップ・フラッシュメモリコントロールユニットFCU 5(1)…FCU 5(N)は第1の動作モードに設定され、動作モードビット信号SUSPが“0”レベルであるとオンチップ・フラッシュメモリコントロールユニットFCU 5(1)…FCU 5(N)は第2の動作モードに設定される。尚、複数のオンチップ・フラッシュメモリコントロールユニットFCU 5(1)…FCU 5(N)への複数の動作モードビット信号SUSPは、書き込み処理や消去処理の前に内部バスInt_Busを介してメモリコントローラ2から供給される。
第1の動作(SUSP=“1”レベル)に設定されたオンチップ・フラッシュメモリコントロールユニットFCU 5(1)…FCU 5(N)は、不揮発記憶動作の反復処理のパルスの印加中に中断命令に応答してパルスの印加の解除により不揮発記憶動作を中断する。第1の動作(SUSP=“1”レベル)に設定されたオンチップ・フラッシュメモリコントロールユニットFCU 5(1)…FCU 5(N)は、復帰命令に応答して解除となったパルスの印加から中断された不揮発記憶動作の反復処理を再開する。
第2の動作(SUSP=“0”)に設定されたオンチップ・フラッシュメモリコントロールユニットFCU 5(1)…FCU 5(N)は、不揮発記憶動作の反復処理のパルスの印加中に中断命令に応答してパルスの印加を継続して印加の完了した時点で不揮発記憶動作を中断する。第2の動作に設定されたオンチップ・フラッシュメモリコントロールユニットFCU 5(1)…FCU 5(N)は、復帰命令に応答して印加の完了した不揮発性メモリセルのベリファイから中断された不揮発記憶動作の反復処理を再開する。
本発明の第5の実施形態によるフラッシュメモリカードのような記憶装置においても、第1の動作(SUSP=“1”レベル)に設定することにより書き込み動作又は消去動作中の割り込みによる中断命令の供給から実際の中断までの移行時間を短くする一方、第2の動作(SUSP=“0”)に設定することにより復帰命令により中断した書き込み動作又は消去動作を再開するに際して不揮発性メモリへのストレスを低減することや書き込み・消去処理全体に要する時間を短縮することが可能になる。
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロコントローラに適用した場合について説明したが、それに限定されるものではなく、その他の半導体集積回路装置、例えば、シングルチップマイクロコンピュータ、デジタルシグナルプロセッサ(DSP)を中心にした半導体集積回路装置にも適用可能である。
さらに不揮発性メモリ4としては、フラッシュメモリ等のように電荷蓄積領域に電荷を注入したり電荷蓄積領域から電荷を放出するタイプ以外に、例えば相変化メモリも採用することができる。例えば、相変化メモリの消去はメモリセルの抵抗に電流を流すことにより抵抗を溶融した後に電流を激減させることで多結晶化して高抵抗とし、相変化メモリの書き込みはメモリセルの抵抗に電流を流すことにより抵抗を溶融した後に電流を徐々に減少させることで単結晶化して低抵抗とすることで実現することができる。この相変化メモリでも、消去処理や書き込み処理は消去または書き込みの電流パルスの印加とベリファイ動作との反復処理となる。相変化メモリの消去処理や書き込み処理の間の割り込みによる中断処理を、動作モード信号によってリアルタイム性能に優れた高速中断処理とメモリセルの抵抗へのストレスの低減された高信頼中断処理とに切り換えることも有益であろう。