本発明者はフラッシュメモリに消去及び書き込み処理プログラムを格納して提供することについて検討した。マイクロコンピュータのオンチップフラッシュッメモリを消去及び書込み可能にする動作モードとして、ライタモード及びブートモードがある。ライタモードとは、マイクロコンピュータを見掛け上、フラッシュメモリチップと等価とし、EPROMライタのような書込み装置に接続して、消去及び書込みを可能にする動作モードである。ブートモードは、マイクロコンピュータがシステムに実装された状態で調歩同期などのシリアルインタフェースを介して実装システムとの通信を確立させて消去及び書込みを可能にする動作モードである。マイクロコンピュータをシステムに実装する前にオンチップフラッシュメモリにプログラムやデータを初期的に書き込む場合にはライタモードを利用できる。システム実装後に、プログラムのバージョンアップやデータのチューニングのためにオンチップフラッシュッメモリの記憶情報を書き換えるにはブートモードを利用すればよい。このようなブートモードにおいて、前記フラッシュメモリに格納されて提供される消去及び書き込み処理プログラムを利用することができる。
しかしながら、ユーザプログラム(ユーザが開発したプログラム)などの任意のプログラムをマイクロコンピュータで実行しているときでもフラッシュメモリの記憶情報を書き換えたい、という要求がある。例えば、機器制御において電源切断直前の状態をフラッシュメモリに退避したり、オペレータの操作状況に応じてフラッシュメモリ内の制御パラメータを最適化したりする場合である。前記ブートモードは、リセット解除後の動作モード設定で指定可能にされるから(要するにリセットスタートが必要になるから)、任意プログラムの実行状態の延長としてブートモードを利用したフラッシュメモリの書換えを行うことはできない。
ブートモードでアクセス可能にされるフラッシュメモリ上のブートマットをユーザプログラム等の任意プログラムの実行状態でアクセス可能にすれば、任意プログラムの実行状態の延長として任意のタイミングで、フラッシュメモリに格納された消去及び書き込み処理プログラムを実行して、書き込みを行うことが可能になる。しかしながら、ブートマットには公開を要しないテスト等のための機密情報も含まれることがあり、これも一緒に読み出されるようでは不都合である。ちなみに、ブートマット内のプログラム実行はリセットスタートを要するブートモードの指定により可能とされ、ブートモードでは割り込みやバス権要求を全て排除し、外部からブートマットへの任意アクセスを全く認めないようにする工夫もされているほどである。
本発明の目的は、リセットスタートを要することなく、換言すれば、任意プログラム(ユーザプログラム等)の実行状態から、ブートマット等の所定領域内の消去及び書き込み処理プログラム等の所定の処理プログラムを利用することができるマイクロコンピュータ又はデータ処理装置を提供することにある。
本発明の別の目的は、ブートマット等の所定領域内の機密情報を公開することなくそこに格納された消去及び書き込み処理プログラム等の所定の処理プログラムを任意プログラム(ユーザプログラム等)の実行状態から利用することができるマイクロコンピュータ又はデータ処理装置を提供することにある。
本発明の更に別の目的は、消去及び書き込み処理プログラムをオンチップ不揮発性メモリに保持させたとき、消去及び書き込みの信頼性を向上させることが容易なマイクロコンピュータ又はデータ処理装置を提供することにある。
本発明のその他の目的は、消去及び書き込み処理プログラムをオンチップ不揮発性メモリに保持させたときCPUが暴走しても不揮発性メモリの記憶情報が消失し難いマイクロコンピュータ又はデータ処理装置を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
〔1〕本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、リセットスタートの後にブートモードのような動作モードの指定によって利用可能な不揮発性メモリ上のブートマット(Tmat)に不揮発性メモリの消去及び書き込み処理プログラム等の処理プログラムを格納し、更にそこに、処理プログラムの転送制御プログラムを格納しておく。オンチップCPU(2)が任意プログラム(ユーザプログラム等の制御プログラム)を実行している状態から所定のレジスタ(FCCS)に特定の制御情報(SCO=1)を設定することをトリガとして、CPUを前記ブートマット内の転送制御プログラムを実行させる状態に遷移させ、処理プログラムをオンチップRAM(揮発性メモリ)に転送し、CPUを再び任意プログラムを実行する状態に復帰させる。CPUが転送制御プログラムを実行するとき、バス制御手段(4)には外部からのバス権要求を排除させ、ブートマット内に対する不所望な任意アクセスを不可能にする。また、CPUが転送制御プログラムを実行しているとき、割り込み制御手段(9)にはCPUが任意プログラム実行状態に復帰した後で処理可能なように割り込み要求を保存させる。
上記により以下の作用効果を得る。(1)処理プログラムの転送には所定のレジスタ(SCOビット)に特定の制御情報を設定すればよく、ユーザから見て自動的に消去及び書き込み処理プログラムのような処理プログラムがオンチップRAMに転送されるから、ユーザは簡単なソフトウェアにより、オンチップフラッシュメモリに対する消去及び書き込みなどの処理が可能になる。ブートモードのようにモード端子の設定を変更してリセットスタートするというようなシーケンスは不要である。(2)消去及び書込みの制御シーケンスが複雑になってもユーザの負担を大幅に軽減できる。(3)処理プログラムの転送が終了すれば、転送処理プログラムの実行開始直前の状態に復帰することができるため、制御プログラムの様なユーザプログラムに代表される任意プログラムの実行状態の一環としてダイナミックなプログラム転送が可能であり、マイクロコンピュータの使い勝手を向上させることができる。(4)処理プログラムの転送処理中は外部からのバス権要求が排除されるから、ブートマット内に対する不所望な任意アクセスが不可能にされ、ブートマット内のその他の情報に対する機密性を保つことができる。(5)処理プログラムの転送処理中に割込み処理などの要求が入ってもその処理は禁止されるが、その要因は保持されており、転送終了後にその割り込み処理が実行されるから、ユーザプログラムに代表される任意プログラムの実行中におけるシステムの応答性が損なわれることはない。
〔2〕本発明の更に詳しい第1態様に係るマイクロコンピュータ(1)は、CPU(2)、揮発性メモリとしてのRAM(3)、割込み制御手段(9)、バス制御手段(4)、第1領域(Tmat)及び第2領域(Umat,Mmat)を備え消去及び書き込み可能な不揮発性メモリ(13)、第1指示手段(15)、及び第2指示手段(FCCS)を備える。第1指示手段は、前記第1領域が保有するプログラムをCPUが実行する第1状態、又は第2領域が保有するプログラムをCPUが実行する第2状態を指示することが可能であり、リセット動作の解除に応答して第1状態又は第2状態へのモード信号を受け付ける入力回路によって構成される。前記第2指示手段は、前記第2状態から遷移して前記第1領域が保有するプログラムをCPUが実行する第3状態を指示することが可能であり、第2状態においてCPUによりアクセス可能であって第3状態への第1制御情報(SCO=1)が設定される第1記憶手段(FCCS)により構成される。
この態様のマイクロコンピュータは、リセットスタートを介して起動されるブートモードのような第1状態で参照される第1領域を、ユーザモード又はユーザブートモードのような第2状態からSCOモードのような第3状態に遷移することで参照可能になる。第3状態への遷移は第1記憶手段(FCCS)に第1制御情報(SCO=1)を設定すればよく、ユーザは簡単なソフトウェアにより、オンチップ不揮発性メモリに対する消去及び書き込みなどの処理プログラムが利用可能になる。ブートモードのようにモード端子の設定を変更してリセットスタートするというようなシーケンスは不要である。
前記第3状態への遷移には優先レベルの高い割り込みを利用するとよい。即ち、前記割込み制御手段は前記第1記憶手段に対する第3状態への第1制御情報の設定に応答して例えばマスク不可能な割込みが要求され、CPUはこのマスク不可能な割込要求に応答して第2状態から第3状態に遷移される。これにより割り込み制御手段はマスク不可能な割込み要求よりも割込み優先レベルの低い割込み要求による多重割り込みを排除することができる。一般的にマスク不可能な割込み要求よりも割り込みレベルの高い割込みもしくは例外処理要求はリセット要求であるから、第3状態における処理が多重割り込みで中断され、その間にCPUが暴走する虞を未然に防止することができる。
前記第1状態に応答して、前記割込み制御手段は割込要求の受付が不可能にされ、前記バス制御手段はCPU以外からのバス権要求の受付けが不可能にされる。これにより、第1状態において第1領域の記憶情報に対する機密保持を担保することができる。
前記第3状態に応答して、前記バス制御手段はCPU以外からのバス権要求の受付けが不可能にされる。これにより、第3状態において他の回路モジュールがバス権を獲得して第1領域の機密保持すべき情報が不所望に読み出される事態を未然に阻止することができる。
前記第3状態に応答して、前記割込み制御手段は第2状態への復帰後に処理可能なように割込要求を一時保存する。これにより、処理プログラムの転送処理中に割込み処理などの要求が入ってもその要因は保持されており、転送終了後にその割り込み処理が実行されるから、ユーザプログラムに代表される任意プログラムの実行中におけるシステムの応答性が損なわれることはない。
〔3〕第2の態様のマクロコンピュータにおいて、第3状態で実行される第1領域のプログラムに具体的に着目する。例えば、前記第1領域は前記第3状態においてCPUが実行する転送制御プログラムと、この転送制御プログラムによって揮発性メモリとしてのRAMに転送される処理プログラムとを保有する。
このとき、CPUは前記第3状態において第1領域の転送制御プログラムを実行し、前記処理プログラムをRAMに転送し、転送後、第3状態へ遷移する直前の第2状態に復帰する。処理プログラムの転送が終了すれば、転送処理プログラムの実行開始直前の状態に復帰することができるため、ユーザプログラムに代表される任意プログラムの実行状態の一環としてダイナミックなプログラム転送が可能であり、マイクロコンピュータの使い勝手を向上させることができる。
RAMへの転送先アドレスをプログラマブルに指定可能な転送先指定レジスタ(FTAB)を備えるとよい。要するに、処理プログラムをRAMに転送するとき転送先領域は可変になる可能性(書き込み/消去プログラムの最適化)がある。もしも、プログラムサイズがユーザの意図していたサイズより大きくなる場合は、内蔵RAMの記憶情報を破壊する可能性がある。これを防ぐために、転送先指定レジスタによりユーザが目的とするアドレスを指定できるようになる。
同様の観点より、転送制御プログラムによってRAMに転送されるべき処理プログラムの情報量が返される転送情報量レジスタ(FTDQ)を設ける。即ち、RAMに処理プログラムを転送する前に、転送サイズを返すレジスタとして転送情報量レジスタを用意する。転送制御プログラムが実行されると、このレジスタには、処理プログラムの転送前に、転送されるべき処理プログラムの転送長(情報量)が返される。ユーザがメモリ管理を実施していれば、その管理情報を参照し、転送長に見合う、RAM上の未使用領域に処理プログラムを動的に転送することが可能になる。
前記RAMに転送すべき処理プログラムの種類を選択的に指定可能な転送プログラム指定レジスタ(FEPS)を有してよい。種々のプログラムに対してユーザの負担を軽減することができる。
〔4〕第2の態様のマクロコンピュータにおいて、前記処理プログラムとして、不揮発性メモリに対する消去及び書込み処理プログラム(即ち消去プログラム及び書込みプログラム)に着目する。
CPUの暴走による不揮発性メモリの不所望な書換えを阻止するという観点より、前記不揮発性メモリに対する消去及び書込み処理を可能にするための必要条件の一つとされる第2制御情報(5A)が設定可能にされる第2記憶手段(FKEY)を設け、第2状態においてCPUが第2記憶手段に第2制御情報以外の所定の情報である第3制御情報(A5)を設定することを、前記第1記憶手段(FCCS)に第1制御情報(SCO=1)を設定可能にするための必要条件とする。要するに、ユーザが消去及び書き込みを実施したくない所で、プログラムが暴走し、消去及び書き込み処理プログラムが転送されると、ユーザプログラムを破壊する可能性が高くなる。これを回避するために、ユーザは、第1記憶手段(FCCS)に第1制御情報(SCO=1)をセットする前に、第2記憶手段(FKEY)に第3制御情報(A5)をストアする。この第3制御情報(A5)をストアしてない時は、第1記憶手段(FCCS)に第1制御情報(SCO=1)をセットすることはできない。第2記憶手段(FKEY)に第3制御情報(A5)がストアされている時は、第1記憶手段(FCCS)に第1制御情報(SCO=1)をセットすることが可能となり、これによってプログラムの転送が可能となる。
消去及び書き込み処理プログラムが転送された後にプログラムが暴走した場合の事を考え、第2記憶手段(FKEY)を使用する。基本的には、その他の条件により、CPUが暴走しても、消去及び書き込みが実施されないようになっているが、さらに信頼性を上げる為に、ユーザは、消去及び書き込みを実施する前に、第2記憶手段(FKEY)に第2制御情報(5A)をセットする。この第2制御情報(5A)をストアしてない時は、他の消去及び書き込み条件が誤ってイネーブルになっていたとしても、消去及び書込み動作は不可能なままにされる。
また、第2状態においてCPUが揮発性メモリとしてのRAMに格納されたプログラムから命令をフェッチして実行していることを、前記第1記憶手段に第1制御情報を設定可能にするための必要条件としてよい。これにより、CPUが不揮発性メモリから命令をフェッチして実行しているとき、不揮発性メモリが書き換えられて、CPUが暴走する事態の発生を未然に防止することができる。
内部シーケンサを持たずに第1領域からRAMに転送された消去及び書き込み処理プログラムを用いて消去及び書き込みを実施する手法は、消去電圧や書き込み電圧印加のパルス幅の変更が容易であるが、マイクロコンピュータチップの動作周波数によって、書きこみ/消去パルス幅が変わってしまう。これを回避するのに、チップ内部に動作周波数情報を設定可能なレジスタ(FPEFEQ)を設け、ユーザは、その動作周波数情報設定用のレジスタに書き込み/消去時にチップ動作周波数をセットする。消去及び書き込み処理プログラムは、実行時に、このチップ動作周波数のレジスタを参照し、現在の動作周波数を知る。チップ動作周波数を元に書き込み/消去時に必要なパルス時間や遷移時間のウェイトループ回数やタイマーのセット条件を決定すればよい。即ち、動作周波数情報をプログラマブルに設定可能な周波数レジスタを設け、第2状態においてCPUはその周波数レジスタを参照して、消去及び書込み処理プログラムによる高電圧印加パルス幅を決定する。
マイクロプロセッサを構成する半導体集積回路の製造プロセスのばらつきにより、ウェハ内で、書き込み/消去特性等にばらつきを生ずる。このばらつきに応じて回路特性を調整するには、書き込み時間等をトリミングで調整する技術があり、これは、デバイステスト時に書き込み消去を実施し、書き込みや消去時間を測定して、書き込み/消去時の電圧を自己整合的に調整するものである。これと同じ様に、テスト時に書き込み/消去を実施して、第1領域(Tmat)に、不揮発性メモリの書き込み/消去特性を保存しておき、この特性データを使用して、消去及び書き込み処理プログラムのパラメータを決定すればよい。例えば、書き込みが早い時には、書き込みパルス幅やその時の書き込み電圧をそれに合わせ、遅い時には、遅いときに合わせて調整する。消去についても同様である。
〔5〕本発明の更に別の観点は書込みプログラムに着目する。即ち、データ処理装置は、中央処理装置と、揮発性メモリ(RAM)と、書き込みプログラムと前記書き込みプログラムを前記揮発性メモリへ転送するための転送制御プログラムとを格納する第1記憶領域と、前記書き込みプログラムを前記中央処理装置に実行させることによって情報が書き込み可能にされ、かつ、第1動作モードにおいて前記中央処理装置によって処理される制御プログラムを格納する第2記憶領域とを有する電気的に書き込み可能な不揮発性メモリと、前記第1動作モードにおいて前記制御プログラムを実行する前記中央処理装置によって制御情報(SCO)が設定される記憶回路)FCCS)とを有する。前記記憶回路(FCCS)への前記制御情報(SCO)の設定に応答して、前記中央処理装置は前記転送制御プログラムを実行して前記書き込みプログラムを前記揮発性メモリへ転送し、前記揮発性メモリへの前記書き込みプログラムの転送の完了に応答して、前記中央処理装置を前記制御プログラムを実行する前記第1動作モードへ復帰させる。
例えば、前記中央処理装置が前記制御プログラムを実行する前記第1動作モードにおいて、前記中央処理装置は前記制御プログラムから前記不揮発性メモリに転送された前記書き込みプログラムに処理を移行することによって、前記不揮発性メモリに情報を書き込み、前記不揮発性メモリへの情報の書き込み終了に応答して、前記中央処理装置は前記書き込みプログラムの実行から前記制御プログラムの実行へ処理を復帰する。
このとき、データ処理装置に内蔵されるバス制御回路は、前述のように、前記中央処理装置が前記転送制御プログラムを実行している間、前記バスマスタ装置からの前記バス権の要求を排除するとよい。
また、データ処理装置に内蔵される割り込み制御回路には、前記中央処理装置が前記転送制御プログラムを実行している間に受けた割り込み要求を受付けて処理せずに保持するようにする保持回路を設け、前記保持回路に保持された割り込み要求は、前記中央処理装置の前記転送制御プログラムの実行の完了に応答して、前記中央処理装置によって処理されるようにするとよい。例えば、前記割込み制御回路には、前記記憶回路(FCCS)への前記制御情報(SCO)の設定に応答して、前記中央処理装置へノンマスカブル割り込み(NMI)の優先度より高い優先度を有する例外処理要求を発生させ、前記中央処理装置には、前記例外処理要求の受領に応答して、前記制御プログラムを実行する前記第1動作モードから前記転送制御プログラムの実行へ移行させ、このとき、前記割り込み制御回路は、前記中央処理装置が前記転送制御プログラムを実行している間に受けた割り込み要求を保持する保持回路を有し、前記保持回路に保持された割り込み要求は、前記中央処理装置の前記転送制御プログラムの実行の完了に応答して、前記中央処理装置によって処理されるようにしてよい。
〔6〕本発明の更に別の観点は消去プログラムに着目する。即ち、データ処理装置は、中央処理装置と、揮発性メモリ(RAM)と、消去プログラムと前記消去プログラムを前記揮発性メモリへ転送するための転送制御プログラムとを格納する第1記憶領域と、前記消去プログラムを前記中央処理装置に実行させることによって情報が消去可能にされ、かつ、第1動作モードにおいて前記中央処理装置によって処理される制御プログラムを格納する第2記憶領域とを有する電気的に消去可能な不揮発性メモリと、前記第1動作モードにおいて前記制御プログラムを実行する前記中央処理装置によって制御情報(SCO)が設定される記憶回路(FCCS)とを有する。前記中央処理装置は、前記記憶回路(FCCS)への前記制御情報(SCO)の設定に応答して、前記転送制御プログラムを実行して前記消去プログラムを前記揮発性メモリへ転送し、前記中央処理装置は、前記揮発性メモリへの前記消去プログラムの転送の完了に応答して、前記制御プログラムを実行する前記第1動作モードへ復帰させる。
例えば前記中央処理装置が前記制御プログラムを実行する前記第1動作モードにおいて、前記中央処理装置は前記制御プログラムから前記不揮発性メモリに転送された前記消去プログラムに処理を移行することによって、前記不揮発性メモリの情報を消去し、前記不揮発性メモリへの情報の消去の終了に応答して、前記中央処理装置は前記消去プログラムの実行から前記制御プログラムの実行へ処理を復帰する。
データ処理装置に内蔵するバス制御回路、割込み制御回路に関しては上述と同様の構成を採用してよい。
〔7〕本発明の更に別の観点は書込み及び消去プログラムに着目する。即ち、データ処理装置は、中央処理装置と、揮発性メモリ(RAM)と、書き込み及び消去プログラムと前記書き込み及び消去プログラムを前記揮発性メモリへ転送するための転送制御プログラムとを格納する第1記憶領域と、前記書き込み及び消去プログラムを前記中央処理装置に実行させることによって情報が書き込み及び消去可能にされ、かつ、第1動作モードにおいて前記中央処理装置によって処理される制御プログラムを格納する第2記憶領域とを有する電気的に消去可能な不揮発性メモリと、前記第1動作モードにおいて前記制御プログラムを実行する前記中央処理装置によって制御情報(SCO)が設定される記憶回路(FCCS)とを有する。前記記憶回路(FCCS)への前記制御情報(SCO)の設定に応答して、前記中央処理装置は前記転送制御プログラムを実行して前記書き込み及び消去プログラムを前記揮発性メモリへ転送し、前記揮発性メモリへの前記書き込み及び消去プログラムの転送の完了に応答して、前記中央処理装置を前記制御プログラムを実行する前記第1動作モードへ復帰させる。
例えば前記中央処理装置が前記制御プログラムを実行する前記第1動作モードにおいて、前記中央処理装置は前記制御プログラムから前記不揮発性メモリに転送された前記書き込みプログラムまたは消去プログラムに処理を移行することによって、前記不揮発性メモリに情報を書き込みまたは前記不揮発性メモリから情報を消去し、前記不揮発性メモリへの情報の書き込みの終了または情報の消去終了に応答して、前記中央処理装置は前記書き込みプログラムまたは前記消去プログラムの実行から前記制御プログラムの実行へ処理を復帰する。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
すなわち、処理プログラムの転送には所定のレジスタ(SCOビット)に特定の制御情報を設定すればよく、ユーザから見て自動的に消去及び書き込み処理プログラムのような処理プログラムがオンチップRAMに転送されるから、ユーザは簡単なソフトウェアにより、オンチップフラッシュメモリに対する消去及び書き込みなどの処理が可能になる。
ブートモードのようにモード端子の設定を変更してリセットスタートするというようなシーケンスは不要である。
消去及び書込みの制御シーケンスが複雑になってもユーザの負担を大幅に軽減できる。
処理プログラムの転送が終了すれば、転送処理プログラムの実行開始直前の状態に復帰することができるため、ユーザプログラムに代表される任意プログラムの実行状態の一環としてダイナミックなプログラム転送が可能であり、マイクロコンピュータの使い勝手を向上させることができる。
処理プログラムの転送処理中は外部からのバス権要求が排除されるから、ブートマット内に対する不所望な任意アクセスが不可能にされ、ブートマット内のその他の情報に対する機密性を保つことができる。
処理プログラムの転送処理中に割込み処理などの要求が入ってもその要因は保持されており、転送終了後にその割り込み処理が実行されるから、ユーザプログラムに代表される任意プログラムの実行中におけるシステムの応答性が損なわれることはない。
《マイクロコンピュータ》
図1には本発明の一例に係るデータ処理装置としてのマイクロコンピュータが示される。同図に示されるマイクロコンピュータ1は、特に制限されないが、単結晶シリコンのような1個の半導体基板(半導体チップ)にCMOS集積回路製造技術により形成される。
マイクロコンピュータ1は、演算制御装置としての中央処理装置(CPU)2、揮発性メモリとしてのRAM3、バスステートコントローラ(BSC)4、フラッシュメモリ13、及びその他の内蔵回路を総称するその他モジュール7を有する。前記フラッシュメモリ13は電気的に書き換え可能な不揮発性メモリの一例であり、フラッシュメモリモジュール5とフラッシュコントロールモジュール6によって構成される。前記その他モジュール7としてマスクROM8、割り込みコントローラ(INTC)9、タイマ(TMR)10、入出力ポート(I/O)11、シリアルインタフェースコントローラ(SCI)12、その他インタフェースコントローラ16、DMAC(Direct Memory Access Controller)17及びシステムコントローラ15等を有する。それら回路モジュールはバスIAB,IDB,PAB,PDB,CONTを介してインタフェースされる。
前記バスIAB,IDBは情報伝送速度の比較的速い内部アドレスバス、内部データバスである。前記バスPAB,PDBは情報伝送速度が比較的遅い周辺アドレスバス、周辺データバスである。バスCONTは、バスコマンド、バスアクセス制御信号、及びタイミング制御信号等を伝達する制御信号線を総称する。内部バスIDB,IABと周辺バスPDB,PABとの動作速度の相違若しくはアクセス対象に固有のアクセス形態の相違に対して前記BSC4がアクセス動作タイミング等を最適制御すると共に、前記BSC4はアクセスアドレスに応じたチップ選択若しくはモジュール選択制御等も行なう。
前記システムコントローラ15には外部から複数ビットのモード信号14及びリセット信号RESなどが入力される。マイクロコンピュータ1のパワーオンリセット或はハードウェアリセットによりリセット信号RESがローレベルにされると、そのローレベル期間においてマイクロコンピュータ1の内部でリセット動作が行われる。リセット信号RESによるリセットの解除後、複数ビットのモード信号14の状態に応じて、マイクロコンピュータ1の動作モードが決定される。CPU2は、その動作モードに応じたプログラム領域のリセットベクタをリードし、そのアドレスの命令をフェッチし、フェッチした命令を解読して、命令実行を開始する。
RAM3はCPU2のワーク領域若しくはデータ又はプログラムの一時記憶領域としても利用される。前記マスクROM8はデータテーブルなどの記憶領域とされる。フラッシュメモリモジュール5はCPU2のプログラムやデータの記憶領域とされる。
割り込みコントローラ10はマイクロコンピュータ1の外部から与えられる割込要求又はマイクロコンピュータ1内部の状態に応じて内蔵回路モジュールから発生される割込要求が入力され、割り込み優先レベル及び割り込みマスク等に従って、競合する割込み要求の調停と割込み優先レベルによる割込みマスク処理を行う。割り込みコントローラ10は割込み要求の調停と割込みマスク処理との結果に従って、CPU2に割込み信号IRQを与えるとと共に、受付ら得た割込み要求の割り込み要因に応ずる割り込みベクタアドレスをCPU2に与える。CPU2は割り込みベクタアドレスによって指示されるプログラムに処理を分岐する。割込みコントローラ9はCPU2から割込みマスクデータ(IMSK)が与えられ、この割込みマスクデータ(IMSK)で示される割込み優先レベルよりも低い割込み要求の受付をマスクする。尚、本明細書において割込み若しくは割込み要求というとき、例外処理もしくは例外処理要求を含む概念で用いている。
I/O11は外部アドレスバス及び外部データバスへの接続、SCI12の外部インタフェース、TMR10の外部イベント信号入力、そのインタフェースコントローラ16の外部インタフェース等に用いられる。インタフェースコントローラ16は例えば、ATAPI又はSCSIなどのインタフェースに適用可能である。
図2には前記CPU2の具体例が示される。CPU2は、特に制限されないが、シフタSFT及び算術論理演算器ALU等の演算器と、32ビットの汎用レジスタR0〜R31、プログラムカウンタPC、ステータスレジスタSR及びテンポラリレジスタTR等のレジスタ群、そしてリードデータバッファRDB、ライトデータバッファWDB及びアドレスバッファABなどのバッファ回路を実行部に有し、それらは第1乃至第3内部バスIB1〜IB3のうちの所定の内部バスに接続される。CPU2は命令制御部として、命令レジスタIR、命令デコーダIDEC、命令シーケンスロジックINTLを有する。
前記リードデータバッファRDBは例えば32ビットのデータバスIDBから入力したデータを内部バスIB2に供給する。ステータスレジスタSRは割込みマスクデータIMSKのフィールドを有する。割込みマスクデータIMSKは割込みコントローラ9に与えられる。割込みコントローラ9は割込みマスクデータIMSKで示される割込み優先レベルよりも低い割込み要求をマスクする。
前記プログラムカウンタPCは次に実行すべき命令アドレスを保有し、その命令アドレスがアドレスバッファABから内部アドレスバスIABに出力されると、RAM3等の対応アドレスからリードされた命令が内部データバスIDBを介して命令レジスタIRにフェッチされる。命令デコーダIDECは命令レジスタIRの命令を解読して、CPU2内部の制御信号を生成して、前記実行部による演算処理を制御する。命令シーケンスロジックINTLは割込み信号IRQ等に応答して命令実行順序を変更する制御を行なう。
図1においてフラッシュメモリモジュール5は、メモリセルアレイ20、Xデコーダ・ドライバ(XDE・DV)21、センスアンプアレイ(SAA)22、Yスイッチアレイ(YSW)23、Yデコーダ(YDE)24、入出力回路(IFB)25、電源回路(VGN)26、及びタイミングジェネレータ(TGN)27を有する。メモリセルアレイ20はマトリクス配置されたフラッシュッメモリセル(図示せず)を有する。フラッシュメモリセルは、特に制限されないが、半導体基板若しくはウェル領域にソース、ドレインを有し、チャネルの上方に夫々絶縁膜を介してフローティングゲート及びコントロールゲートが形成されたスタック構造を有し、ソースをソース線に、ドレインをビット線に、コントロールゲートをワード線に接続して構成される。
フラッシュメモリセルは閾値電圧がプログラム可能にされ、プログラムされた閾値電圧に応じて情報を保持する。例えば、1個のフラッシュメモリセルが1ビットの情報を保持する場合に、相対的に高い閾値電圧状態を書き込み状態、相対的に低い閾値電圧状態を消去状態と称する。書き込み状態を得る為の書き込み動作は、特に制限されないが、コントロールゲートに10V、ドレインに例えば5V、ソースおよび基板に例えば0Vを印加して、ドレイン・ソース間に電流を流し、これによってホットエレクトロン注入が起こり、フローティングゲートに電子が蓄積され、メモリセルの閾値電圧が高くなる。前記消去状態を得る為の消去動作は、特に制限されないが、コントロールゲートに10V、ソース及び基板に例えば−10Vを印加し、さらにドレインを例えば開放(フローティング)にして、フローティングゲートに蓄積された電子を基板に放出させ、これによってメモリセルの閾値電圧が低くなる。
前記入出力回路25はバスIAB,IDB,PAB,PDB,CONTとの間でアドレス、制御信号及びコマンドを入力すると共にデータの入出力を行なう。入出力回路25に入力されたアドレス信号はXDEC・DV21及びYDE24に入力されて夫々デコードされる。XDEC・DV21はそのデコード結果に従ってワード線を選択する。YDE24はそのデコード結果に従ってYSW23を介してビット線を選択する。ワード線選択及びビット線選択によってフラッシュメモリセルが選択される。読み出し動作では、前記選択されたフラッシュメモリセルの読み出しデータは、SAA22にて検出され、入出力回路25を経てバスPDBまたはIDBに出力される。書き込み動作では、バスPDB又はIDBから入出力回路25に与えられる書き込みデータが入出力回路25内の書き込みラッチ回路にラッチされ、ワード線選択されたメモリセルに対し、ラッチデータに従って書き込み・書き込み阻止が制御される。書き込み処理の前には予めブロック単位でフラッシュメモリセルに対する消去が行なわれる。
前記電源回路26はクランプ回路やチャージポンプ回路などを有し、フラッシュメモリの書き込み・消去・読み出しなどの動作で使用する様々な電圧を供給する。前記タイミングジェネレータ27は、制御バスCONTを介して供給されるストローブ信号及びデータバスPDB,IDBを介して入力されるコマンドに基づいてフラッシュメモリの外部とのインタフェース制御を行なう。
図1において前記フラッシュコントロールモジュール6は、フラッシュメモリモジュール5に対する書き込み及び消去やそのためのプログラム転送関係の各種制御レジスタ30と制御論理回路29とを有する。図1には制御レジスタとしてFCCS,FKEY,FMATS,FPEFEQ,FEPS,ROMCR,FTAB,FTDQ,PECNTが代表的に示されている。フラッシュメモリモジュール5に対する書き込み及び消去動作の制御にはRAM3の記憶領域やCPU2の汎用レジスタも利用される。
《フラッシュメモリのメモリマット》
図3にはフラッシュメモリのメモリマットが例示される。フラッシュメモリモジュール5のメモリセルアレイ20は、第1領域としてのブートマットTmatと、第2領域としてのユーザブートマットUmat及びユーザマットMmatと、リペア及びトリミングマットRmatとを有する。前記ブートマットTmat、ユーザブートマットUmat、及びユーザマットMmatは夫々CPU2のアドレス空間における先頭アドレスである0番地(H’0000000)をスタートアドレスとしてメモリ空間が割り当てられる。要するに、前記ブートマットTmat、ユーザブートマットUmat、及びユーザマットMmatはアドレス空間がオーバラップされ、前記アドレスデコーダYDEC及びXDEC・DVはどのマットを利用するかの指示に応答してアドレスデコード論理が選択されることになる。どのマットを利用するかはモード信号14で指示されるマイクロコンピュータの動作モードなどによって決まる。リペア及びトリミングマットRmatはメモリセルアレイにおける欠陥救済アドレスや回路の特性に応じた合わせ込みのためのトリミング回路の設定データが格納される。前記ブートマットTmatには、フラッシュッメモリ13の消去及び書込み処理プログラム、そのプログラム等をRAM3に転送する転送制御プログラム、そしてフラッシュメモリの特性情報(消去及び書き込み特性の情報)等が格納されている。ブートマットTmatに格納されたプログラムは基本的にマイクロコンピュータの製造メーカ自身で或は其の管理の下で作製される。
《動作モード》
フラッシュメモリは、プロセス世代が進むにつれて、書き込み関係、消去関係のプログラムが複雑化しつつある。このような事情の下で、消去及び書き込み処理プログラムをユーザが作成しなければならないとすると、ユーザの負担が大きくなる。マイクロコンピュータ1においては、ユーザに消去及び書き込みプログラムを作成する負担を減らし、簡単な手続きで消去及び書き込みをどのモードでも実施できるように考慮されている。特に、フラッシュメモリ13を消去及び書き込みするための高電圧パルス印加時間などのパラメータをチューニングしたり処理フローを変更したりするときに、ハードウェアに依存せずソフトウェアを使用して実施でき、ユーザに負担をかけず、簡単な手続きで消去及び書き込みを実施できる動作モードを用意している。その内容を簡単に説明すると、ブートマットTmatが保有している消去及び書き込み処理プログラムをどの動作モードでも参照できるようにし、しかも、ブートマットTmatのプログラムには、セキュリティに関する部分の記述もあるので、不都合のない範囲でユーザがそのプログラムを使用できるようにしてある。
マクロコンピュータ1の動作モードを詳述する。フラッシュメモリ13に対する消去及び書き込みに着目すると、パワーオンリセットを介して設定可能な動作モードとして、マイクロコンピュータ1は、ライタモード、ブートモード、ユーザブートモード、及びユーザモードを有する。特に制限されないが、前記モード信号14は2ビットであり、システムコントローラ15は、其の論理値の組み合わせを解読して、指示された動作モードが、前記ライタモード、ブートモード、ユーザブートモード、又はユーザモードの何れであるかを判定する。更に、ユーザモード又はユーザブートモードから動的に設定可能にされるSCOモードを有する。
前記ライタモードはEPROMライタのような書き込み装置を用いてフラッシュメモリ13の消去及び書き込みを実施可能にする動作モードである。ライタモードが指定されると、リセット処理後、CPU2はブートマットTmatの先頭番地からベクタフェッチを行ってプログラムの実行を開始する(ブートマットから起動)。そして、ライターモードに必要な処理として、コマンド判定プログラムや消去及び書き込み関係のプログラムを全てRAM3に転送する。その後に、CPU2は、RAM3に転送されたプログラムの実行に移行し、フラッシュメモリ13はEPROMライタによって消去及び書き込み可能にされる。このライタモードは、オフボード(マイクロコンピュータがシステムボードに実装されていない状態)で前記ユーザマットMmat及びユーザブートマットUmatに任意のユーザ制御プログラム等を格納するのに適している。
前記ブートモードは、マットTmat,Umat、Mmatの全てを消去し、SCI12を使用して書き込みを実施可能にする動作モードである。このブートモードは前記CPU2にブートマットTmatのプログラムを処理させると共に当該ブートマットTmatを消去及び書き込み不可能にする。具体的には、ブートモードが指定されると、リセット処理後、CPU2はブートマットTmatの先頭番地からベクタフェッチを行ってプログラムの実行を開始する。そして、ブートモードに必要な処理として、ブートマットTmat内の消去及び書き込み関係のプログラム及びコマンド判定プログラムをRAM3に転送する。転送終了とその他の処理終了後に、CPU2はRAM3上のプログラム実行に移る。RAM3上のプログラム実行でマットUmat、Mmatの全てを消去した後に、コマンド判定プログラムを起動し、SCI12を利用して書き込みが実施可能になる。このブートモードは、シリアル通信インタフェースを備えたオンボードで、前記ユーザマットMmat及びユーザブートマットUmatに任意のユーザ制御プログラム等を格納するのに適している。ブートモード中、前記割込みコントローラ9はリセット以外の割込み要求に対して割込みマスク処理を行ない、バスステートコントローラ4はCPU以外へのバス権を拒否することにより、ブートモード中に、ブートマットTmatが外部のプログラムなどによって不所望にアクセスされる事態の発生を未然に防止している。
前記ユーザブートモードは、前記CPU2にユーザブートマットUmatのプログラムを処理させてユーザ任意のインタフェースを使用した消去及び書き込みを実施可能とし、ブートマットTmat及びユーザブートマットUmatに対しては消去及び書き込みを不可能にする動作モードである。具体的には、ユーザブートモードは、ブートマットTmatから起動し、CPU2がブートマットTmat内のプログラムを実行すると共にRAM3へユーザブートマット切換えプログラムの転送を行う。その後に、CPU2はRAM3上のプログラム実行に移る。CPU2によるRAM3上のプログラム実行で、CPU2のアドレス空間で見えるフラッシュメモリ13上のマットをデフォルトのユーザマットMmatからユーザブートマットUmatへ切換え、ユーザブートマットUmatのベクタアドレスを読み出した後にその領域へジャンプする。セキュリティが掛かっている場合は、ユーザマットMmatの消去を実施した後にジャンプを実施する。書き込みを実施する時は、後述するSCOモードを使用して必要な消去及び書き込みプログラムをブートマットTmatからRAM3にダウンロードした後、その消去及び書き込み処理プログラムを利用して、ユーザマットMmatに対する書き込みを行う。要するに、ユーザブートマットUmatにユーザ専用のインタフェースプログラムを用意して、ユーザの実装ボートに合った書き込みデータ転送が実現可能となる。このユーザブートモードは、ユーザのシステムボードが備えているオンボードインタフェースを使用して、ユーザの制御プログラムなどをユーザマットMmatに書き込むのに適している。この動作においてユーザブートマットUmatの消去は阻止される。したがって、ユーザのシステムボードがシリアルインタフェースを備えず、オンボードでブートモードを利用できなくても、これに代えて、ユーザのシステムボードが備えているオンボードインタフェースを介する書き込みをを保証することができる。
前記ユーザモードはユーザマットMmatが保有するプログラムを利用して消去及び書き込みを実施可能にする動作モードであり、ブートマットTmat及びユーザブートマットUmatの消去及び書き込みについては不可能にする。詳しくは、CPU2をユーザマットMmatから起動し、ユーザマットMmat上のプログラムが実行される。特に、ユーザが必要な時に、後述するSCOビットをイネーブルにしてSCOモードを設定すると、ブートマットTmatとユーザマットMmatが自動的に切り替わり、ブートマットTmatのある番地からプログラムがスタートし、ブートマットTmat上の消去及び書き込み処理プログラムがRAM3に転送され、プログラムの転送が終了したらユーザマットMmatとブートマットTmatが自動的に切り替えられて、ユーザの処理へ復帰し、ユーザのプログラムで前記消去及び書き込み処理プログラムが利用されて、ユーザマットMmatに対する消去及び書き込みが可能にされる。要するに、ユーザプログラムモードでは、後述するSCOモードを使用してブートマットTmat上の消去及び書き込み処理プログラムをRAM3上に転送しそのプログラムを利用可能にしている。このユーザモードは、オンボードでユーザ制御プログラム実行中にユーザマットMmat上のパラメータなどを書き換えるのに適している。
図4の(A),(B)には各マットの各動作モードによるアクセス態様が示される。同図に示されるアクセス態様は上記動作モードで説明したアクセス態様を整理したものである。同図からも明らかなように、リペア及びトリミングマットRmatとブートマットTmatは何れの動作モードにおいても消去及び書き込み不可能にされ、ユーザブートマットUmatはユーザ制御プログラムが実行可能にされるユーザブートモード及びユーザモード(ユーザプログラムモード)において消去及び書き込み不可能にされる。このユーザブートモードは、ユーザのシステムボードが備えているオンボードインタフェースを使用して、ユーザの制御プログラムなどをユーザマットMmatに書き込むのに適している。この動作においてユーザブートマットUmatの消去及び書込みは阻止される。したがって、ユーザのシステムボードがシリアルインタフェースを備えず、オンボードでブートモードを利用できなくても、これに代えて、ユーザのシステムボードが備えているオンボードインタフェースを介する書き込みを保証することができる。尚、図4においてアクセスとはリードアクセスを意味し、記号△はブートマットに格納されたプログラムにしたがってリードアクセス可能であることを意味し、ユーザ制御プログラムにしたがって任意にリードアクセスできることは意味しない。
ユーザ専用の通信プロトコルを格納可能なユーザブートマットUmatを用意したので、マイクロコンピュータ1が備える任意のインタフェースをフラッシュメモリ13の消去及び書込みに流用することができる。フラッシュメモリ13の消去及び書き込みにユーザ任意のインタフェースを採用する事が可能となったことにより、ホスト装置に必ずシリアルインタフェースを用意しなくてもよい。ユーザブートマットUmatとユーザマットMmatを分けた事により、ユーザマットMmatに専用通信プロトコルを書かなくても、消去及び書き込み用にユーザ任意の書きこみインタフェースが実現できるから、ユーザマットMmatに格納して使用する制御プログラムの作成が容易になる。要するに、ユーザプログラムモードで使用する通信制御プログラムの消去防止などについて特別な考慮を払わなくてもよい。ユーザブートマットUmatから立ち上がるユーザブートモードでは、ハードウェア的にユーザブートマットUmatを消去及び書込み不可にするので、暴走等でユーザブートマットUmatの記憶情報が破壊される事はなく、デバック時にCPU2が暴走しても、外部インタフェースを制御するプログラムの破壊には至らないので、実装したマイクロコンピュータチップを取り外さなくても、オンボードでユーザマットMmatの書換えを自由に行うことができる。
《SCOモード》
図5には図1の構成からSCOモードの説明に必要な回路ブロックを抜き出して図示してある。同図では、SCOモードは前記ユーザブートマットUmat又はユーザマットMmatの何れからでも指定できるがここではユーザマットMmatから指定する場合を一例とする。フラッシュコントロールモジュール6にはマット切換え制御部60及びSCO起動要求生成部61が例示される。マット切換え制御部60は制御レジスタROMCRを有し、その1ビットBTS=1でブートマットの選択を指定し、BTS=0でユーザマットの非選択を指定する。このレジスタROMCRはCPU2のアドレス空間には配置されておらずユーザ非公開である。SCO起動要求生成部61は制御レジスタFCCSを有し、その1ビットSCO=0がリセット後の初期値であり、SCO=1によりSCOモードを指定する。ブートマットTmatは転送制御プログラムの格納エリア50と、転送対象とされる処理プログラムである被転送プログラムの格納エリア51を含んでいる。RAM3はその処理プログラムの格納領域(転送プログラム格納領域)30とユーザ制御プログラム実行領域31などを含んでいる。
図6はユーザモードが指定された状態であり第2状態の一例とされる。ユーザモードが指定されるとCPU2はユーザマットMmatのファーストベクタをフェッチしてユーザプログラムを実行する。図6の状態は、CPUがRAM2にダウンロードされたユーザプログラムを実行している。フラッシュコントローラモジュール6は初期状態にされている。
図7はSCOビットをセットした状態が例示される。ユーザプログラムを実行するCPU2はレジスタFCCSの制御ビットSCO=1をセットするレジスタライトサイクルを実行する。これによりフラッシュコントロールモジュール6は割込みコントローラ9に所定の割込み要求を行う。この割込み要求として、特に制限されないが、ブレーク割込み要求を利用する。このブレーク割込み要求は、特に制限されないが、本来、評価用マイクロコンピュータにおけるユーザプログラムの実行を停止してシステムプログラムに復帰するための割込みに用いるデバッグサポート機能を実現する割り込みであり、優先度はNMI(マスク不可能な割込み要求)よりも高く、CPU2の割込みマスクビットに拘わらず、常に受付可能な優先度を有し、独立のベクタアドレス(ベクタ番号2)が割り当てられている。優先度が高い割込みは、他の割込み要求と競合した場合においても優先的に受付けられる。実チップとしてのマイクロコンピュータではそのようなユーザブレーク割込み要求は実質的に必要ないが、その制御機能は実チップとしてのマイクロコンピュータのCPU2及びINTC9にも搭載することは容易である。この機能をSCOモードの設定に利用する。それによりINTC9はCPU2に割込み信号IRQ及び割込み要因を与えて、ブレーク例外処理の発生を通知する。
図8にはブレーク例外処理の判定とSCOモードへの遷移の様子が示される。CPU2によるSCO=1をセットするレジスタライトサイクルの直後にブレーク例外処理の発生が割込みコントローラからCPUに通知される。CPU2はブレーク例外処理の発生が通知されると、命令実行を終了して、通知された割込みの種類を割込み要因から判別し、ブレークモード、ここではSCOモードへ遷移するサイクル(内部処理とスタック処理)の直前に、ブレーク例外処理が始まる事を割込みコントローラ9に通知する。通知を受けた割込みコントローラ9は、先ず、ブレーク例外処理よりも割込み優先レベルの低い別の割込み受付を拒否し、リセット割込みだけを受付け可能にし、多重割込みが生じないようにする。第2に、通知を受けた割込みコントローラ9は、バスステートコントローラ4とフラッシュコントロールモジュール6にブレーク例外処理への状態遷移を通知する。これに応答してフラッシュコントロールモジュール6は、レジスタROMCRの制御ビットBTSに“1”をセットし、これにより、フラッシュコントロールモジュール6はフラッシュメモリモジュール5に対してブートマットTmatの選択状態に切換える。この選択は前述の如くデコーダXDE/DV,YDEにて実現される。一方、割込みコントローラ9から前記通知を受けたバスステートコントローラ4は、SCOモード中にDMAC17に代表される他のバスマスタがブートマットTmatにアクセスするのを防ぐため、前記他のバスマスタからのバス権要求を排除し、CPU2以外にはバス権が渡されないようにされる。
上記割込みコントローラ9によるリセット以外の割込みマスク処理、そしてバスステートコントローラ4によるCPU以外へのバス権拒否により、SCOモード中に、ブートマットTmatが他から外部のプログラムなどによって不所望にアクセスされる事態の発生を未然に防止することができる。
但し、SCOモードにおいて割込みコントローラ9は、リセット以外の割込要求は拒否するが、その他の割込要求の全て又は一部について、SCOモードからユーザモードへ復帰した後に処理可能なように、内部に保持する。
図9にはSCOモードが指示されたときのベクタフェッチの様子が例示される。ユーザマットTmatの選択状態において当該マットTmatはH’00000000〜H’00002000にマッピングされ、その先頭エリアにベクタテーブル52が形成されている。CPU2は割込みコントローラ9から前記ブレーク例外に対応されるベクタ番号が通知され、其のベクタ番号で示されるアドレスのベクタをベクタテーブル52からフェッチする。ここでフェッチされたベクタはブートモードが指定された時にフェッチされるベクタとは当然相違されている。例えばブレーク割込みはベクタ番号2にアサインされており、それに対応するベクタには、SCOモードで実行すべき処理ルーチン(ソースプログラムを転送するルーチン)の先頭アドレスが格納されている。ソースプログラムを転送するルーチンとは、前記転送制御プログラム格納領域50に格納されている転送制御プログラムである。ソースプログラムとは前記被転送プログラム格納領域51に格納された消去及び書込み処理プログラム等を意味する。
図10にはRAM3へのソースプログラムの転送処理の様子が示される。CPU2は前記ベクタで示される領域50の域転送制御プログラムの先頭から命令をフェッチし、ソースプログラム転送ルーチンに分岐する。CPU2はその転送ルーチンに従って、ブートマットTmatの領域51に格納されているソースプログラムを、RAM2の領域32に転送する。
SCOモードにおいて処理プログラムをRAM3へ転送するとき、RAM3への転送先アドレスをプログラマブルに指定可能な転送先指定レジスタFTABを利用してよい。これにより、処理プログラムをRAM3に転送するとき、転送先領域は可変になる可能性(書き込み/消去プログラムの最適化)があり、転送すべき情報サイズがユーザの意図していたサイズより大きくなる場合は、内蔵RAM3に既に記憶されている情報を破壊する可能性がある。これを防ぐために、転送先指定レジスタFTABによりユーザが目的とするアドレスを指定できるようになる。
同様の観点より、SCOモードで転送制御プログラムによってRAM3に転送されるべき処理プログラムの情報量が返される転送情報量レジスタFTDQを利用する。即ち、SCOモードで転送制御プログラムが実行されると、このレジスタにFTDQは、処理プログラムの転送前に、転送されるべき処理プログラムの転送長(情報量)が返される。ユーザがメモリ管理を実施していれば、その管理情報を参照し、転送長に見合う、RAM3上の未使用領域に処理プログラムを動的に転送することが可能になる。
図11にはSCOモードの解除、即ちブレーク例外処理から通常モードへの復帰処理の様子が示される。RAM2への転送が終了した後、CPU2はソースプログラム転送ルーチンの最後に格納されているリターン・ブレーク命令(RTB:割込みサービスルーチンからの復帰命令)をフェッチする。これにより、CPU2はブレーク例外処理から復帰するサイクル(アンスタック及び内部処理)を行ない、その中で、割込みコントローラ9、バスステートコントローラ4、及びフラッシュコントロールモジュール6に対してブレーク例外処理の終了を通知する。これにより、バスステートコントローラ4はバス権要求に対して競合を排除するための通常のバスアービトレーション制御を開始する。フラッシュコントロールモジュール6はレジスタROMCRの制御ビットBST、レジスタFCCSの制御ビットSCOを“0”にクリアして、ユーザマットMmatを選択させる。
図12にはソースプログラムルーチンへの分岐処理の様子が示される。アンスタックによりユーザプログラム31のプログラムカウンタPCの値に復帰する。ユーザ制御に復帰した時には、RAM3の領域32にソースプログラムがコピーされており、ユーザプログラムによりソースプログラムにジャンプする。このとき、割込みコントローラ9がSCOモード中に発生された割込要求を保持している場合には、特に制限されないが、前記ユーザプログラムのプログラムカウンタPCの値に復帰する前に、当該保持した割込要求に応ずる指示が割込みコントローラ9からCPU2に与えられて処理される。
図13にはユーザプログラムに復帰後のソースプログラムによる処理の一例が示される。例えば、ブートマットTmatからRAM3の領域32に転送されたソースプログラムを実行し、例えば、外部のホスト装置から書込みデータをRAMに取り込み、取り込んだデータをユーザマットMmatの所望のエリアに書込みする処理などが行われる。尚、ソースプログラムの転送終了後にRTB命令を実行せず、そのまま転送先のRAM領域に分岐してフラッシュメモリの書換え処理などを実施する事も可能である。書き換え処理を完了してからRTB命令を実行すれば、書き換え処理中の割込みもマスクする事ができる。
図14には割込要求を保存可能な割込みコントローラ9の一例が示される。割込みコントローラ9は、バッファ90、優先順位制御部91、ベクタ生成部92、及び保持部93によって構成される。バッファ90は割込み要求信号94が入力される。優先順位制御部91は入力された割込要求に対して割込み優先レベル及び割込みマスクデータを考慮して、競合する割込み要求に対してどの割込み要求を受付けるかの判定を行う。ベクタ生成部92は受付けられた割込み要求が有ると、割込み信号IRQをアサートし、割込み要因を出力し、割込みベクタを出力する。前記優先順位判定部91はベクタ割込みの要求を検出すると、割込み要求を割込み優先レベル順にソートして保持部に保持させ、ベクタ生成部92による割込み信号等の出力動作を抑止させる。前記ブレーク例外処理の終了通知が有ると、優先順位判定部91は、保持部93に割込み要求が保持されているかを判定し、保持されている場合は、特に制限されないが、ブレーク割込み発生直前のユーザプログラムに復帰する前に、保持部93に保持されている優先レベルの高い順に割込み要求情報をベクタ生成部92に与えて、割り込み処理を実行させる。保存された割込み要求が全て実行された後、ブレーク割込み発生直前のユーザプログラムに復帰する。尚、保持部93に全ての割込み要求を保持させず、緊急度の高いマスク不可能なNMIのような割込みだけに限定してもよい。
《消去及び書き込みのプロテクト》
図15にはフラッシュメモリ13の消去及び書き込みに対するプロテクトのための論理構成が例示される。同図の論理は正論理とされ、その構成はフラッシュコントロールモジュール6によって実現される。
フラッシュメモリに対する消去及び書き込み動作は、書込み消去関係レジスタ群PECNTの初期値に対して、処理に必要な制御データを設定することによって可能にされる。書込み消去関係レジスタ群PECNTに対する制御データの設定は制御ビットSWEが論理値“1”で可能になる。要するに、制御ビットSWEが論理値“1”にされない限り、フラッシュメモリ13の消去及び書込みは不可能にされる。
制御ビットSWEを論理値“1”にする第1の条件は外部端子PfweによりレジスタFCCSのイネーブルビットFWEを論理値“1”にセットすることである。
第2の条件は、ナンドゲート55の出力を論理値“1”とする動作モードの選択状態とフラッシュメモリのマット選択状態を得ることである。即ち、動作モードがテストモード(TESTTM=1)、ライタモード(WRTM=1)、又はブートモード(BOOT=1)であること。或は、ユーザモード又はユーザブートモードにおいてユーザブートマットUmatが選択されていないこと(UMATSEL=0)である。尚、テストモードとはマイクロコンピュータの製造メーカがデバイステストに用いる動作モードであり、全ての動作が可能にされるが、ユーザには非公開な動作モード、即ち、ユーザによる設定が不可能な考慮が払われている。
前記信号UMATSELはレジスタFMATS及び当該レジスタFMATSの設定値に対するAA判定回路56の判定結果とされる。レジスタFMATSは、ユーザマットMmatとユーザブートマットUmatを切換えるときに使用する。このレジスタFMATSを使用することによって、CPU2のオペレーションをユーザマットMmatからユーザブートマットUmatへ遷移する事が可能になる。ただし、マットの切換えには制限事項がある。即ち、レジスタFMATSのユーザブートマット選択ビットをセットできる条件は、CPU2のオペレーションがRAM3のプログラムを実行していることである。この条件は、CPU2による命令フェッチのアドレスエリアがRAM3のアドレスエリアであることをBSC4が検出して判定する。レジスタFMATSの初期値はH’AA以外であり、ユーザマット選択状態を示す。H’AAによってユーザブートマット選択状態を示す。
この第2の条件により、ユーザブートマットUmatのアクセスは、どのモードでも可能であるが、書き込み/消去は、ライターモードとブートモード(及びテストモード)のみ可能になる。
第3の条件はレジスタFKEYが消去及び書き込み許容値に設定されていることである。前記レジスタFKEYは、電圧降下やノイズ等が原因で、プログラムが暴走し、それによるプログラムの破壊を防ぐために設けられている。消去及び書込み制御プログラム(書き込み/消去プログラム)が転送された後にプログラムが暴走した場合を考慮してレジスタFKEYを使用する。基本的には、端子Pfweと制御ビットSWEにより、CPU2が暴走しても、書き込み/消去が実施されないようになっているが、さらに信頼性を上げる為にユーザは、書き込み/消去を実施する前に、レジスタFKEYに“5A”の値をセットする。この“5A”をストアしてない時は、FWEがイネーブル(“1”)になっていたとしても、制御ビットSWEをセットする事ができないようになる。レジスタFKEYに“5A”がストアされている状態は、A5,5A判定回路57で検出され、信号fwemkp=1にされ、これによって、SWEが論理値“1”にセット可能にされる。
前記レジスタFKEYは上述の書き込み/消去プログラム関係として機能される他に、プログラム転送関係として機能される。即ち、フラッシュッメモリ13の消去及び書き込み処理プログラムをブートマットTmatに格納し、ブートモードの他に、ユーザブートモード及びユーザモードで利用可能にする関係上、ブートマットTmatの当該消去及び書き込み処理プログラムをRAM3に転送させるため、レジスタFCCSに制御ビットSCOを設け、制御ビットSCOをイネーブルすると、自動的にユーザマットMmatとブートマットTmatが切り替えられ、ブートマットTmatから消去及び書込み制御プログラムがRAM3に転送され、処理終了後にリターン命令が実行されてユーザの処理へ復帰するようになっている。このとき、ユーザが書き込み/消去を実施したくない所で、プログラムが暴走し、書き込み/消去プログラムが転送されると、ユーザプログラムを破壊する可能性が高くなる。これを回避するために、レジスタFKEYを使用する。ユーザは、制御ビットSCOをセットする前に、このレジスタFKEYに“A5”をストアする。この“A5”をストアしてない時は、制御ビットSCOをセットする事はできない。また、CPU2がRAM3上のプログラムをオペレーションしていることも条件にされる。“A5”がストアされ、RAM3上でCPU2のオペレーションが行われている時は、SCOビットがセット可能となり、消去及び書き込み処理プログラムをブートマットTmatからRAM3へ転送することが許容される。
上述のように、フラッシュメモリ13に対する消去及び書込みに関しては、レジスタFKEYでプログラムの転送と消去書き込みを排他制御しているので、プログラムが転送されない状態で暴走した場合は、書き込み/消去が実行され難い。
《SCOモードを用いる消去及び書込み》
次に、SCOモードで転送したプログラムを用いた消去及び書きこみ処理について説明する。
前記SCOモードは図16に例示されるユーザブートモードによる処理中の所定タイミング(S41)、或は図17に例示されるユーザモードによる処理中(S53)で指定可能である。或は図18のブートモード中の任意タイミング(S23)でも流用可能である。
図16にはユーザブートモード処理のフローチャートが例示される。ユーザブートモードでは、特に制限されないが、ブートマットTmatの先頭ベクタからオペレーションを開始し、ユーザブートマットUmatへの切換えプログラムをブートマットTmatからRAM3に転送し(S30)、RAM3上でのオペレーションに遷移し(S31)、レジスタFMATSにH’AAをセットして、レジスタFMATSによるユーザマット指示状態(初期値)をユーザブートマットに切換える(S32)。ここで、ユーザブートマットUmatのエリア設定に誤りが有るかを判定し(S33,S34)誤りが無ければユーザブートマットUmatの先頭ベクタアドレスをリードし(S35)、リードしたベクタアドレスにサブルーチンジャンプする(S36)。CPU2はユーザブートマットUmat上のプログラムを実行し、先ず、ユーザ定義の通信を確立し、書込みに必要なユーザプログラムをRAM3に転送する(S37)。CPU2はRAM3上のプログラム実行に遷移し(S38)、再度レジスタFMATSの操作を行なって、処理対象マットをユーザブートマットUmatからユーザマットMmatに切換える(S39)。そして、RAM3上のユーザプログラムを実行して制御ビットSCOを“1”にセットし(S40)、SCOモード処理に遷移して、ブートマットTmat内の消去及び書き込み処理プログラムをRAM3に転送させ(S41)、転送された消去及び書き込み処理プログラムを用いた書込み/消去の処理が行なわれる(S42)。
図17にはユーザモード処理のフローチャートが例示される。ユーザモードが指定されると、ユーザマットMmatの先頭からベクタフェッチが行なわれて(S50)、ユーザの制御プログラムが実行される(S51)。ユーザプログラムの実行中にユーザマットMmatへの書込みが必要になると、RAM3上でオペレーションを行なってSCOビットを“1”にセットし(S52)、SCOモード処理に遷移して、ブートマット内の消去及び書き込み処理プログラムをRAM3に転送させ(S53)、転送された消去及び書き込み処理プログラムを用いた書込み/消去の処理が行なわれる(S54)。
図18にはブートモード処理のフローチャートが例示される。先ず、オンボードのシリアルインタフェースとSCI12との送受信を確立し(S20)、マイクロコンピュータ1の発振周波数等の必要なパラメータをダウンロードして設定する(S21)。次いで、ホスト装置からのコマンドを判定し、マイクロコンピュータの製品名や消去ブロック数などのステータスをホスト装置に返し(S22)、コマンド判定プログラムと消去プログラムをRAM3に転送して(ブートプログラム上でSCOモードを利用することも可能)、RAM3上でのオペレーションに遷移する(S23)。そして、ユーザマットMmat及びユーザブートマットUmatを全面消去した(S24)後、コマンドに応答しながら、ユーザマット書込み処理(S25)、ユーザブートマット書込み処理(S26)、書込みベリファイ処理(S27,S28)等を行なう。
図19にはSCOモードを利用するソースプログラムの転送処理が例示される。先ず、転送したいソースコードを選択し(T1)する。ソースコードの選択は、レジスタFEPSに対して行われる。選択可能なソースコードは、特に制限されないが、書き込み及び書き込みベリファイプログラム、消去及び消去ベリファイプログラム等である。そして、制御ビットSCOを“1”にセットする前に、レジスタFKEYを“A5”に設定し(T2)、CPU2のオペレーションをフラッシュッメモリ13以外の領域例えばRAM3上のプログラム領域に切換える(T3)。T2の処理は、SCOモードによる転送時にブートマットをアクセスするので、CPUの暴走により当該マットの情報が破壊されないように、書込みに対するソフトウェアマスクを施す意味が有る。T3の処理は、SCOビットのセットによりユーザマットとブートマットが切換えられるから、ビットセット前にCPUを継続してオペレーション可能な領域に変更しておく必要が有るからである。
そして制御ビットSCOが“1”にセットされる(T4)。これにより、前記図7〜図10で説明したように、選択されたソースコードがRAM3の所定エリアに転送される。制御ビットSCOのイネーブルを実施したら、自動的にブートマットTmatからプログラムがスタートする。最後に転送が正常に終了したかの判別が行われる(T5)。
図20にはSCOモード解除後にRAMに転送され処理プログラムを利用して行われる初期化処理が例示される。同図に示される初期化処理は、書込み処理/消去処理の前に行われる処理である。
先ずレジスタFPEFEQにマイクロコンピュータ1の動作周波数がセットされ(T10)、レジスタFUBRAにユーザブランチアドレスがセットされる(T11)。レジスタFPEFEQ、FUBRAにはCPU2の汎用レジスタを割り当てよい。そして、サブルーチンジャンプにより書き込み初期化プログラムが実行される(T12)。例えば、書き込み関係の初期化プログラムは、設定されたチップ動作周波数の値を参照し、ウェイトタイムループ回数を決定する。決定したウェイトタイム時間をRAM3上に転送された書き込み制御プログラムに埋め込む処理を行なう。また、書き込み初期化プログラムは、レジスタFUBRAの値を参照して、ユーザブランチを実施するか、実施した場合に何処のアドレスにジャンプするかの書き込みプログラム変更を実施する。要するに、ユーザブランチを実施するサブルーチンジャンプ命令に、レジスタFUBRAの値が、分岐先アドレスとして埋め込まれる。尚、レジスタFUBRAにH’00000000のアドレスが設定された場合はユーザブランチ不実施を意味する。最後に、初期化処理が正常に終了したことを判別して(T13)、処理を終了する。
尚、前記サブルーチンとしての初期化プログラムはSCOモードで前記RAM3に転送されたソースコードの一部である。
上述のように、内部シーケンサを持たずに第1領域からRAMに転送された消去及び書き込み処理プログラムを用いて消去及び書き込みを実施する手法は、消去電圧や書き込み電圧印加のパルス幅の変更が容易であるが、マイクロコンピュータチップの動作周波数によって、書きこみ/消去パルス幅が変わってしまう。これを回避するのに、チップ内部に動作周波数情報設定用のレジスタFPEFEQを利用する。ユーザは、書き込み/消去時に、動作周波数情報設定用のレジスタFPEFEQにチップ動作周波数をセットする。消去及び書き込み処理プログラムは、実行時に、このチップ動作周波数のレジスタFPEFEQを参照し、現在の動作周波数を知る。このチップ動作周波数を元に、前記初期化プログラムは、書き込み/消去時に必要なパルス時間や遷移時間のウェイトループ回数やタイマーのセット条件を決定する。
また、マイクロコンピュータ2を構成する半導体集積回路の製造プロセスのばらつきにより、ウェハ内で、書き込み/消去特性等にばらつきを生ずる。このばらつきに応じて回路特性を調整するには、書き込み時間等をトリミングで調整する技術があり、これは、デバイステスト時に書き込み消去を実施し、書き込みや消去時間を測定して、書き込み/消去時の電圧を自己整合的に調整するものである。これと同じ様に、テスト時に書き込み/消去を実施して、ブート領域Tmatに、フラッシュメモリ13の書き込み/消去特性を保存しておき、この特性データを使用して、前記初期化プログラムにより、消去及び書き込み処理プログラムのパラメータを決定してもよい。
図21には初期化処理の後に行われる消去プログラムの実行処理が例示される。先ず、マスク不可能な割込み(NMI)を受け付けたときの分岐先をRAM3アドレスエリアに変更する(T20)。例えばベクタベースレジスタをRAM3のアドレスエリアに設定変更すればよい。これは、消去途上のフラッシュメモリエリアを避けることが誤動作防止の点より望ましいからである。そのようなNMIはユーザ定義のエラー処理ルーチンをコールするために利用すればよい。そして、NMIよりも割込み優先レベルの低い割込みをマスクする(T21)。例えばステータスレジスタSRに割込みマスクデータIMSKのNMIの次に低い割込み優先レベルを設定すればよい。これは、消去中は、状態によってフラッシュメモリに高電圧が掛かっている。この状態でIRQ等の割り込みが入ったとしても、フラッシュメモリのベクターを読める事は保証できない。よって、消去中は、NMI以外の割り込みは禁止にする。
そして、消去ブロック番号を汎用レジスタR4にセットする(T22)。其の後、レジスタFKEYに書き込み/消去コード“5A”をセットし(T23)、消去プログラムにサブルーチンジャンプして実行する(T24)。サブルーチンとしての消去プログラムはSCOモードで前記RAM3に転送されたソースコードの一部である。最後に消去正常終了を判別する(T25)。
図22には図21のステップT24でジャンプされる消去プログラムの処理フローが例示される。この処理フローは、消去データラッチ(T30)、消去パルスの印加(T31)、消去ベリファイ(T32)の処理サイクル中に、ユーザブランチアドレスにサブルーチンジャンプするかを判定するステップ(T33)を有し、初期化処理による設定値にしたがって、サブルーチンジャンプの指示がされている場合(ユーザブランチアドレスがH’00000000以外のとき)には、ユーザブランチアドレスに分岐して、サブルーチンを実行する(T34)。実行後に再び消去動作ルーチンに戻ってくる。消去ベリファイで所定の閾値状態を得られないときは、パルス印加回数Nをインクリメントして再度同じループを繰返し(T35)、くり返し回数が最大回数(EMAX)に達する前に消去正常状態を得られれば其の時点で図21のフローに戻り(T36)、最大回数に達しても正常終了できないときは消去エラー処理を行なって(T37)、図21のフローに戻る。
消去パルス印可と消去ベリファイのサイクル中に、ユーザブランチアドレスで示されたサブルーチン処理に分岐可能であるから、消去中であっても、ユーザの制御プログラムに、ある一定間隔で制御を戻すことができる。消去中でも、ユーザ制御プログラムに一定間隔で戻ってくることにより、このマクロコンピュータ1を使用したシステムを長い時間停止させなくても、消去が実施可能になる。
図23には初期化処理の後に行われる書込みプログラムの実行処理が例示される。先ず、マスク不可能な割込み(NMI)を受け付けたときの分岐先をRAM3アドレスエリアに変更する(T40)。例えばベクタベースレジスタをRAM3のアドレスエリアに設定変更すればよい。これは、書き込み途上のフラッシュメモリエリアを避けることが誤動作防止の点より望ましいからである。そのようなNMIはユーザ定義のエラー処理ルーチンをコールするために利用すればよい。そして、NMIよりも割込み優先レベルの低い割込みをマスクする(T41)。例えばステータスレジスタSRに割込みマスクデータIMSKのNMIの次に低い割込み優先レベルを設定すればよい。これは、書き込み/消去中は、状態によってフラッシュメモリに高電圧が掛かっている。この状態でIRQ等の割り込みが入ったとしても、フラッシュメモリのベクターを読める事は保証できない。よって、書き込み/消去中は、NMI以外の割り込みは禁止にする。
そして、書き込みアドレスの設定エリアを汎用レジスタR5にセットする(T42)。すなわち、内蔵RAM3に書かれている書き込みアドレスエリアの先頭アドレスを汎用レジスタR5にセットする。そして、書き込みデータアドレスの設定エリアを汎用レジスタR4にセットする(T43)。即ち、内蔵RAM3に書かれている書き込みデータアドレスエリアの先頭アドレスを汎用レジスタR4にセットする。其の後、レジスタFKEYに書き込み/消去コード“5A”をセットし(T44)、書き込みプログラムにジャンプして実行する(T45)。最後に書き込みが正常に終了したかを判別する(T46)。サブルーチンとしての書込みプログラムは前記SCOモードでRAMに転送されたソースコードの一部を成す。
図24には図23のステップT45でジャンプされる書込みプログラムの処理フローが例示される。書込みデータラッチ(T50)、書込みパルスの印加(T51)、書込みベリファイ(T52)の処理サイクル中に、ユーザブランチアドレスにサブルーチンジャンプするかを判定するステップ(T53)を有し、初期化処理による設定値にしたがって、サブルーチンジャンプの指示がされている場合(ユーザブランチアドレスがH’00000000以外のとき)には、ユーザブランチアドレスに分岐して、サブルーチンを実行する(T54)。実行後に再び書き込み動作ルーチンに戻ってくる。書込みベリファイで所定の閾値状態を得られないときは、パルス印加回数Nをインクリメントして再度同じループを繰返し(T55)、くり返し回数が最大回数(WMAX)に達する前に書込み正常状態を得られれば其の時点で図23のフローに戻り(T56)、最大回数に達しても正常終了できないときは書込みエラー処理を行なって(T57)、図23のフローに戻る。
書込みパルス印可と書込みベリファイのサイクル中に、ユーザブランチアドレスで示されたサブルーチン処理に分岐可能であるから、書き込み中であっても、ユーザの制御プログラムに、ある一定間隔で制御を戻すことができる。しかも、ソフトウェアで実施しているので、ユーザの制御に戻ってくる間隔をソフトウェアで変更することも可能である。書き込み中でも、ユーザ制御プログラムに一定間隔で戻ってくることにより、このマクロコンピュータ1を使用したシステムを長い時間停止させなくても、消去及び書き込みが実施可能になる。
以上説明したSCOモード有するマイクロコンピュータ1によれば以下の作用効果がある。すなわち、リセットスタートの後にブートモードのような動作モードの指定によって利用可能なフラッシュメモリ13上のブートマットTmatにフラッシュメモリ13の消去プログラム、書き込みプログラム、初期化プログラム等の処理プログラムを格納し、更にそこに、処理プログラムの転送制御プログラムを格納しておく。オンチップCPU2がユーザプログラムを実行している状態からレジスタFCCSの制御ビットSCOに“1”を設定することをトリガとして、CPU2を前記ブートマットTmat内の転送制御プログラムを実行させる状態に遷移させ、前記処理プログラムをオンチップRAM3に転送し、CPU2を再びユーザプログラムを実行する状態に復帰させる。CPU2が転送制御プログラムを実行するとき、バスステートコントローラ4には外部からのバス権要求を排除させ、ブートマットTmat内に対する不所望な任意アクセスを不可能にする。また、CPU2が転送制御プログラムを実行しているとき、割り込みコントローラ9にはCPU2が任意プログラム実行状態に復帰した後で処理可能なように割り込み要求を保存させる。
上記により、処理プログラムの転送には所定のレジスタFCCSの制御ビットSCOをセットすればよく、ユーザから見て自動的に消去及び書き込み処理プログラムのような処理プログラムをオンチップRAM3に転送させることができるから、ユーザは簡単なソフトウェアにより、オンチップフラッシュメモリ13に対する消去及び書き込みなどの処理が可能になる。ブートモードのようにモード端子の設定を変更してリセットスタートするというようなシーケンスは不要である。
前記処理プログラムをブートマットTmatに格納してユーザの利用に供するから、消去及び書込みの制御シーケンスが複雑になってもユーザの負担を大幅に軽減できる。
処理プログラムの転送が終了すれば、転送処理プログラムの実行開始直前の状態に復帰することができるため、ユーザプログラムに代表される任意プログラムの実行状態の一環としてダイナミックなプログラム転送が可能であり、マイクロコンピュータ1の使い勝手を向上させることができる。
前記処理プログラムの転送処理中は外部からのバス権要求が排除されるから、ブートマット内に対する不所望な任意アクセスが不可能にされ、ブートマット内のその他の情報に対する機密性を保つことができる。前記処理プログラムの転送処理中に割込み処理などの要求が入ってもその要因は保持されており、転送終了後にその割り込み処理が実行されるから、ユーザプログラムに代表される任意プログラムの実行中におけるシステムの応答性が損なわれることはない。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、消去及び書込み可能な不揮発性メモリは2値のフラッシュメモリに限定されない。多値フラッシュメモリ、例えば、1個のフラッシュッメモリセルに2ビット以上の記憶情報を保持させることが可能な多値フラッシュメモリであってもよい。すなわち、1個のフラッシュメモリセルは、情報記憶に際して複数ビットの書き込みデータで指定される4種類以上の閾値電圧の中の一つの閾値電圧に設定され、情報読み出しに際して閾値電圧の状態を対応する複数ビットの記憶情報として出力する、1個のフラッシュメモリセルの記憶情報を複数ビット化したメモリである。ここでは、一つのフラッシュメモリセルに2ビットの情報を書き込むことができ、かつその情報を読み出すことができるフラッシュメモリを一例とする。このようなフラッシュメモリが実現しようとする多値情報記憶技術において、一つのメモリセルの情報記憶状態は、例えば消去状態(“11”)、第1の書き込み状態(“10”)、第2の書き込み状態(“00”)、第3の書き込み状態(“01”)の中から選ばれた一つの状態とされる。全部で4通りの情報記憶状態は、2ビットのデータによって決定される状態とされる。即ち、2ビットのデータを一つのメモリセルで記憶する。
また、フラッシュメモリセルはフローティングゲートとコントロールゲートの縦積み構造に限定されず、MOSトランジスタのゲート電極をフローティングゲート電極とし当該ゲート電極を延在させて形成したMOSゲート容量を介してチャネル領域をコントロールゲートに用いるようなデバイス構造などを採用してもよい。また、不揮発性記憶素子はフラッシュメモリに限定されず、MNOS(メタル・ナイトライド・オキサイド・セミコンダクタ)トランジスタを記憶素子とするEEPROM(エレクトリカリ・イレーザブル・アンド・プログラマブル・リード・オンリ・メモリ)のような不揮発性メモリ、或いは強誘電体メモリ等であってもよい。
また、マイクロコンピュータがオンチップで備える回路モジュールは上記の例に限定されず、適宜変更可能である。
また、各種レジスタ手段はフラッシュメモリ内蔵の周辺レジスタであっても、CPU内蔵の汎用レジスタであっても、或は、SRAMなどのメモリで構成されるメモリマップドI/Oレジスタであってもよい。