(57)【要約】【課題】ブロックの消去途中で電源が遮断されてもフラグの内容が正しく表現でき且つそのフラグを設ける際にメモリのコストを抑える。【解決手段】不揮発性メモリ１３は、その一つ一つが消去単位となる複数のブロック＃０〜＃４を備える。特にブロック＃０、＃１に対しデータの消去及び書き込みが行なわれる。ブロック＃０の消去に関する情報を示すフラグＦ０Ｓ、Ｆ０Ｃはブロック＃１に設けられ、ブロック＃１の消去に関する情報を示すフラグＦ１Ｓ、Ｆ１Ｃはブロック＃０に設けられる。フラグＦ０Ｓ、Ｆ０Ｃ、Ｆ１Ｓ、Ｆ１Ｃを参照してブロックの消去状態を把握する。ブロック＃０が消去途中に電源遮断されても対応のフラグＦ０Ｓ、Ｆ０Ｃの内容が不意に変わることはない。【選択図】　　　　図２
2004118937.tif 000002
【特許請求の範囲】
【請求項１】
その一つ一つが消去の単位となる第１及び第２のブロックを含んだ不揮発性メモリであって、前記第１及び第２のブロックにそれぞれ対応して設けられ前記第１及び第２のブロックそれぞれに関する情報を表すフラグを有し、前記第１及び第２のブロックの一方に対応する前記フラグを前記第１及び第２のブロックの他方に持たせた、不揮発性メモリ。
【請求項２】
前記第１及び第２のブロックの他方に対応した前記フラグを前記第１及び第２のブロックの一方に持たせた、請求項１記載の不揮発性メモリ。
【請求項３】
その一つ一つが消去の単位となる複数のブロックを含んだ不揮発性メモリであって、前記複数のブロックにそれぞれ対応して設けられ前記複数のブロックそれぞれに関する情報を表すフラグを有し、前記複数のブロックの各々に対応する前記フラグは、前記複数のブロックのうちの他のブロックに設けた、不揮発性メモリ。
【請求項４】
前記フラグ各々は、対応のブロックが消去可能な状態であることを示す第１のフラグと、対応のブロックの消去が完了したことを示す第２のフラグとを含む、請求項１ないし請求項３のいずれか一項に記載の不揮発性メモリ。
【請求項５】
前記フラグ各々は、各々が複数のビットからなる複数のフラグ領域を有し、前記複数のフラグ領域の任意の少なくとも一つがある特定の値を有するとき各フラグがある特定の状態を示すようにした請求項１ないし請求項３のいずれか一項に記載の不揮発性メモリ。
【請求項６】
その一つ一つが消去の単位となる第１及び第２のブロックを含んだ不揮発性メモリ、および、
前記不揮発性メモリの書き込み及び消去を制御するコントローラを備え、
前記第１及び第２のブロックの各々は、それぞれフラグを記憶する第１および第２のフラグ領域と、データを記憶するデータ記憶領域とを有し、
前記コントローラは、
前記第１のブロックのデータ記憶領域にこれ以上データを書き込まないとき前記第２のブロックにおける第１のフラグ領域のフラグをある値にセットし、
前記第１のブロックの消去が完了したとき前記第２のブロックにおける第２のフラグ領域のフラグをある値にセットし、
前記第２のブロックのデータ記憶領域にこれ以上データを書き込まないとき前記第１のブロックにおける第１のフラグ領域のフラグをある値にセットし、
前記第２のブロックの消去が完了したとき前記第１のブロックにおける第２のフラグ領域のフラグをある値にセットするように、前記不揮発性メモリを制御するデータ記憶装置。
【請求項７】
前記第１ないし第４のフラグ領域の各フラグは、各々が複数のビットからなる複数のフラグ領域を有し、前記コントローラは前記複数のフラグ領域の任意の少なくとも一つがある特定の値を有するとき各フラグがセットされたと判断する請求項６記載のデータ記憶装置。
【請求項８】
その一つ一つが消去の単位となる複数のブロックを含んだ不揮発性メモリと、
前記不揮発性メモリに設けられたフラグを参照して前記不揮発性メモリを制御するコントローラを備え、
前記フラグは、各々が複数のビットからなるフラグ複数の領域を有し、
前記コントローラは、前記複数のフラグ領域の任意の少なくとも一つがある特定の値を有するとき前記フラグがある特定の状態であると判断するデータ記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、消去などの自身の制御のために参照されるフラグを記憶する不揮発性メモリおよびこれを有したデータ記憶装置に関する。
【０００２】
【従来の技術】
フラッシュメモリ等の不揮発性メモリは、記憶されたデータを更新することができるものとして知られている。しかしフラッシュメモリの記憶データを更新する際には、元のデータに上書きするのではなく、元のデータを一旦消去した後に新たなデータを書き込むことになる。
フラッシュメモリの記憶領域は複数のブロックで構成され、各ブロックには複数個のメモリセルが含まれている。データの消去はブロック単位に行なわれる。データを書き込む単位に比べて大きなブロック単位で記憶内容を消去される。例えば、書き込む領域を指定する一つのアドレスによりデータが書き込める容量は数バイトであるに対し、消去するブロックを指定する一つのアドレスによりデータが消去される容量は数Ｋバイトになる。
【０００３】
ここで一つ問題となるのは、ブロックの消去動作の途中に電源が遮断された場合である。再び電源を投入したときにブロック内の消去が完全に行なわれていない状態となる。正常に消去されていないブロックに書き込みを行なうと正常なデータの記憶ができず不揮発性メモリの動作にエラーが生じる。
この問題を防ぐため、ある従来技術によると、複数のブロックにそれぞれ対応した消去情報ビットを不揮発性メモリに設けている。この消去情報ビットは対応のブロックの消去状態を示す。電源が投入されたときに消去情報ビットを参照することにより対応のブロックが完全に消去されたかどうかが判断できる。もし完全に消去されていないならば、対応のブロックに再度消去を施せばよい。このような技術は、例えば次の特許文献１に開示されている。
【０００４】
【特許文献１】
特開２００１−２５０３８８号公報
【０００５】
【発明が解決しようとする課題】
この特許文献１の図１を参照すると、データの記憶領域であるブロック（メモリセル領域）とは別の領域（消去情報記憶領域）を設け、この領域に各ブロックに対応する消去情報ビットが記憶されている。この領域は、ブロックとは独立に消去可能な不揮発性の記憶素子で構成される。しかしながら、消去情報ビットの記憶専用にこの独立に消去可能な領域を別途設けることとなり、不揮発性メモリのコスト上昇を招く。
【０００６】
そこで特許文献１の図３において、専用の記憶領域を設けるのでなくデータを記憶するブロック内に消去情報ビットを設ける例が開示されている。しかし、各ブロック内にそのブロック自身の消去情報ビットを設けている。したがってこの例でもブロックの消去動作中に不意に電源が遮断されたときやはり問題がある。ブロックの消去動作中に電源が遮断されたときブロックの一部の領域は消去され他の部分は消去されない不完全消去の状態がありえる。よってそのブロックに関する消去情報がこの消去情報が誤った情報をもつ可能性がある。例えば特許文献１の図４によると、ステップＳ１５の途中で電源が遮断されると、消去情報の部分が「１０」と誤った値となりうる。この状態で再度電源が投入される場合、誤って消去か完了したと判断され、ブロックが不完全のままデータの書き込みが行われることになる。
【０００７】
また不揮発性メモリには書き込みにより記憶した状態が途中で変化してしまう揮発エラーが存在する。特許文献１でも一つの消去情報として“００”、“１０”、“１１”の３値でそれぞれ異なる状態を示している。例えば“１１”が揮発エラーにより“１０”に変化してしまうと、消去情報を誤って判断することになる。特に特許文献１の図３のようにブロック内に消去情報ビットをもたせるような場合に、不揮発性メモリによっては、揮発エラーを修正するためにはブロックを一旦消去しなければならないものもある。そのとき、ブロック内などのデータを別のメモリに待避させた後ブロックを消去するなどの処置を要する。
【０００８】
よってこの発明の目的は、自身の制御のために参照されるフラグを記憶する不揮発性メモリに関し、ブロックの消去途中に電源が遮断されてもそのフラグの内容を正しく表現できるとともに、フラグを設けるにあたってはコストを抑えた不揮発性メモリを提供することにある。
この発明の別の目的は、電源が遮断されてもブロックの消去状態を正しく把握することのできる不揮発性メモリおよびこれを有したデータ記憶装置を提供することにある。
この発明のさらに別の目的は、不揮発性エラーが発生しても参照されるべき情報を正しく認識することのできる不揮発性メモリおよびこれを有したデータ記憶装置を提供することにある。
【０００９】
【課題を解決するための手段】
この発明に係る不揮発性メモリは、その一つ一つが消去の単位となる第１及び第２のブロックにそれぞれ対応して設けられ第１及び第２のブロックそれぞれに関する情報を表すフラグを有する。第１及び第２のブロックの一方に対応したフラグを第１及び第２のブロックの他方に持たせている。第１及び第２のブロックの一方の消去動作中に電源が遮断されても、フラグの内容は不意に変化することはないので、フラグは正しい内容を保持している。しかもその一方のブロックに対応するフラグを設けるために特別な記憶領域を設ける必要もないので、コストも抑えられる。
またその他方のブロックに対応するフラグもその一方のブロックに持たせることにより、その他方のブロックの消去途中に電源が遮断されても、対応するフラグの内容が不意に変化することもない。よってフラグは正しい内容を保持している。しかもその他方のブロックに対応するフラグを設けるために特別な記憶領域を設ける必要もないので、さらにコストが抑えられる。
【００１０】
またこの発明に係る不揮発性メモリは、その一つ一つが消去の単位となる複数のブロックにそれぞれ対応して設けられブロックそれぞれに関する情報を表すそれぞれフラグを有するときに、各フラグをその複数のブロックの他のブロック内に持たせている。複数のブロックのいずれかの消去動作中に電源が遮断されたとしてもフラグの内容が不意に変化することはない。しかも複数のブロックそれぞれ対応するフラグを設けるために特別な記憶領域を持たせる必要もない。
【００１１】
フラグは特にブロックの消去に関する状態を示すものとし、例えば、ブロックが消去可能な状態であることを示す第１のフラグと、ブロックの消去が完了したことを示す第２のフラグとを含む。これにより電源が途中で遮断されてもこれらのフラグを参照すればブロックの消去状態を正しく知ることができる。
第１のフラグがセットされたが第２のフラグがセットされていない場合には、対応のブロックが消去できる状態にあると判断でき、第１及び第２のフラグが共にセットされている場合には、ブロックは消去が終了しておりデータの書きこみが行なえる状態にあるかすでに書きこみに使用している状態にあると判断できる。このように電源再投入後にブロックの消去状態がわかるので、ブロックを消去不充分のままデータが書きこまれるのを防げる。
【００１２】
また各フラグは各々が複数のビットからなる複数のフラグ領域を有する。この複数のフラグ領域のうち少なくとも一つがある特定の値を有するとき各フラグがある特定の状態を示すこととする。複数のフラグ領域のいずれかに揮発エラーが生じても別の領域で一つでも揮発エラーを起こしていなければ、フラグは正常な状態を示すことになる。
【００１３】
従ってこの発明に係るデータ記憶装置に従えば、不揮発性メモリに設けられたフラグを参照して不揮発性メモリを制御するコントローラは、フラグにおける複数のフラグ領域の少なくとも一つがある特定の値を有するときにフラグがある特定の状態であると判断するようにし、その状態に応じて適切な処理を行なうことができる。
【００１４】
【発明の実施の形態】
本発明の実施の形態を、図面を用いて説明する。なお図面において同一の符号は、同一のもの又は相当するものを表す。
実施の形態１．
図１は実施の形態１によるセキュリティ機能付きコンピュータシステム１０の構成図を示す。このシステム１０は単一の半導体チップ上に形成された集積回路で構成され、バス１１に共通に接続されたマイクロコントローラ（ＭＣＵ）１２、不揮発性メモリ１３、ランダムアクセスメモリ（ＲＡＭ）１４、リードオンリーメモリ（ＲＯＭ）１５及び暗号／復号回路１６を備える。データ及びプログラムはバス１１を介してＭＣＵ１２と不揮発性メモリ１３、ＲＡＭ１４、ＲＯＭ１５及び暗号／復号回路１６との間で転送される。ＭＣＵ１２はＲＯＭ１５又は不揮発性メモリ１３に記憶されたプログラムを実行してシステム全体を制御する。またシステム１０とその外部との間でデータの通信が行なわれる際、暗号／復号回路１６は送信データを暗号化し、その暗号化データが外部に送信される。また暗号／復号回路１６は外部から受信した暗号化データを復号し、その復号データはシステム１０内で処理される。
【００１５】
不揮発性メモリ１３は、従来技術と同様、その一つ一つがデータの消去単位（一回のアドレス指定で消去されるメモリセルの単位）となる複数のブロックを有する再書き込み可能なメモリで、よく知られているフラッシュメモリが好ましい。複数のブロックはそれぞれ同じ容量を有し、一ブロック当たり例えば２Ｋないし６４Ｋバイト程度である。一方データの書き込み単位（一回のアドレス指定で書き込めるデータのビット数）は、消去単位（一つのブロックの容量）よりも少ない。例えば書き込み単位は２バイト（＝１６ビット）である。
【００１６】
図２は、不揮発性メモリ１３の構造およびその記憶内容を示す。不揮発性メモリ１３は、例えば５つのブロック＃０〜＃４を有する。３つのブロック＃２〜＃４には、書換えないことを前提とした内容が記憶される。ＭＣＵ１２が実行するプログラム、管理番号、暗号／復号回路１６がデータの暗号化及び復号化の際に使用する秘密鍵及び公開鍵、等が不揮発性メモリ１３に記憶される。
一方、２つのブロック＃０、＃１各々は、システム１０の動作中に頻繁にデータが書き込まれるデータ記憶領域２１と、それぞれフラグを格納する２つのフラグ領域２２、２３が記憶される。
【００１７】
ブロック＃０、＃１にそれぞれ対応するフラグが設けられる。フラグは対応のブロックの消去に関する情報を示す。各ブロックに対応するフラグは、ブロック＃０、＃１のうち対応のブロックとは異なる別のブロックのフラグ領域２２、２３に記憶される。消去に関する情報を意味するフラグを参照しながらＭＣＵ１２は不揮発性メモリ１３の消去及びデータ書きこみを制御する。したがって不揮発性メモリ１３およびそれを制御するＭＣＵ１２により一つのデータ記憶装置が構成される。
【００１８】
消去に関する情報を示すフラグは、具体的には消去開始フラグと消去完了フラグとを含む。消去開始フラグは対応のブロックが消去可能な状態かどうかを示し、消去完了フラグは対応のブロックの消去が完了したかどうかを示す。ブロックが消去可能な状態にあるとき、対応の消去開始フラグはオンし、ブロックの消去が完了した状態にあるとき、対応の消去開始フラグはオンする。ブロック＃０の消去開始フラグＦ０Ｓ、Ｆ０Ｃはブロック＃１に記憶され、ブロック＃１の消去開始フラグＦ１Ｓ、Ｆ１Ｃはブロック＃０に記憶される。
【００１９】
データが消去されるとブロック内の全メモリセルはゼロクリアされるものとする。よってブロック＃０が消去されればブロック＃１に対応する２つのフラグＦ１Ｓ、Ｆ１Ｃもゼロにクリアされる。このクリアされた状態をフラグＦ１Ｓ、Ｆ１Ｃのオフとする。同じくブロック＃１が消去されればブロック＃０に対応する２つのフラグＦ０Ｓ、Ｆ０Ｃもクリアされる。このクリアされた状態をフラグＦ０Ｓ、Ｆ０Ｃのオフとする。またフラグＦ０Ｓ、Ｆ０Ｃ、Ｆ１Ｓ、Ｆ１Ｃの各々に特定の値が書き込まれた状態をフラグＦ０Ｓ、Ｆ０Ｃのオンとする。
【００２０】
図３はフラグＦ０Ｓ、Ｆ０Ｃ、Ｆ１Ｓ、Ｆ１Ｃ各々のフラグの具体的構成例を示す。
フラグは複数のビットで構成され、特に不揮発性メモリ１３の書き込み単位と同じビット数（１６ビット）とする。フラグが図３（ａ）のように全ビットがすべて０である“００００Ｈ”の値（第１の値）を有するとき、フラグのオフとする（Ｈはその前の４桁“００００”が１６進数で表現されていることを示す。以下同じ）。フラグが第２の値、ここでは図３（ｂ）のようにフラグの全ビットが１である“１１１１Ｈ”の値（第２の値）を有するとき、フラグのオンとする。またフラグの１６ビットが他の値を有するときはフラグエラーとされる。例えばフラグのオフ状態時にフラグ内の１ビットに揮発エラーが生じた場合（例えば“０００１Ｈ”と変化するような場合）、それはエラーとして判断され、言い換えればオン状態とは判断されない。
【００２１】
ＭＣＵ１２は、４つのフラグＦ０Ｓ、Ｆ０Ｃ、Ｆ１Ｓ、Ｆ１Ｃの内容を参照し、ブロック＃０、＃１がいかなる状態にあるかを判定する。
図４は４つのフラグに対するブロック＃０、＃１の状態を示したものである。４つのフラグがすべてオフである状態▲１▼では、ブロック＃０、＃１がともに使用されていない初期状態（セットアップ前）にある。消去開始フラグＦ１Ｓがオンで他の３つのフラグがオフである状態▲２▼では、ブロック＃０は書き込み及び読み出しで使用されている状態（使用中）にあり、ブロック＃１はこれ以上データの書き込みができず消去を待っている状態（消去待ち）にある。消去開始フラグＦ１Ｓ、消去完了フラグＦ１Ｃがともにオンし、消去開始フラグＦ０Ｓ、消去完了フラグＦ０Ｃがともにオフしている状態▲３▼では、ブロック＃０は使用中の状態にあり、ブロック＃１は消去が完了し使用されることを待っている状態（消去完了）にある。消去開始フラグＦ０Ｓがオンし他の３つのフラグがともにオフしている状態▲４▼では、ブロック＃０が消去待ちの状態にあり、ブロック＃１は使用中の状態にある。
【００２２】
消去完了フラグＦ０Ｃがオフし他の３つのフラグがオンしている状態▲５▼では、ブロック＃０は消去待ちの状態にありブロック＃１は使用中の状態にある。消去開始フラグＦ０Ｓ、消去完了フラグＦ０Ｃがともにオフし、消去開始フラグＦ１Ｓ、消去完了フラグＦ１Ｃがともにオフしている状態▲６▼では、ブロック＃０が消去完了の状態にあり、ブロック＃１は使用中の状態にある。消去完了フラグＦ１Ｃがオフし他の３つのフラグがオンしている状態▲５▼では、ブロック＃０は使用中の状態にありブロック＃１は消去待ちの状態にある。状態▲１▼〜▲７▼以外の状態▲８▼はフラグエラーである。
【００２３】
次に不揮発性メモリ１３の消去及び書き込み動作について説明する。図５は電源投入時における不揮発性メモリ１３の動作を示すフローチャート図である。
本実施の形態では、不揮発性メモリ１３のブロック内の消去は電源の投入時に行われるようになっている。電源が投入されると、ＭＣＵ１２は先ず不揮発性メモリ１３に記憶されているフラグＦ０Ｓ、Ｆ０Ｃ、Ｆ１Ｓ、Ｆ１ＣをＲＡＭ１４にコピーする（Ｓ２１）。次いでＭＣＵ１２は、ＲＡＭ１４に保持されたフラグＦ０Ｓ、Ｆ０Ｃ、Ｆ１Ｓ、Ｆ１Ｃの内容をチェックする（Ｓ２３）。
【００２４】
フラグのチェックの結果、状態▲１▼にある場合はセットアップ前と判断され、ブロック＃０、＃１のどちらにも書き込みが可能である。ここではブロック＃０に最初にデータが書き込まれる側のブロックとし、ＭＣＵ１２はブロック＃１に対応する消去開始フラグＦ１Ｓ、Ｆ１Ｃをともにオンする（Ｓ２５）。その結果、全フラグは状態▲３▼となる。そして電源投入後にデータが最初に書き込まれるブロック＃０の記憶場所を特定するために、ＭＣＵ１２はブロック＃０内の先頭アドレスをＲＡＭ１４に記憶する（Ｓ２７）。
【００２５】
ステップＳ２３で全フラグが状態▲７▼であると判断されると、ＭＣＵ１２は消去待ちであるブロック＃１を選択しその記憶内容を消去する（Ｓ２９）。ブロック＃１の消去により消去開始フラグＦ０Ｓ、消去完了フラグＦ０Ｃはともにオフとなる。このとき全フラグは状態▲２▼を示す。その後、ＭＣＵ１２はブロック＃０上の消去完了フラグＦ１Ｃをオンする（Ｓ３１）。このとき全フラグは状態▲３▼となる。そして電源投入後にデータが最初に書き込まれるブロック＃０の記憶場所、すなわち、ブロック＃０に最後にデータ書き込みのあった場所に後続する場所を決定する（Ｓ３３）。ＭＣＵ１２はブロック＃０の記憶内容を先頭アドレスから順に読み出し、最後に書き込まれたデータのアドレスをサーチする。例えば書き込みデータには必ず「１」が含まれるようにすれば、その最後に記憶された「１」がどのデータに存在するかを探せば、最後に書き込まれたデータのアドレスは容易にわかる。そして、その次アドレスをデータが最初に書き込まれる記憶場所としてＲＡＭ１４に記憶される（Ｓ３５）。
【００２６】
なお、ステップＳ２９において消去途中で電源がオフされると、フラグは状態▲２▼に変化したにも拘わらずブロック＃１が完全に消去されていない場合もある。このときは電源を再度投入し再度ブロック＃１を消去すればよい。よってステップＳ２３で全フラグが状態▲２▼であると判断されたときＭＣＵ１２はステップＳ２９の消去を行う。
【００２７】
ステップＳ２３で全フラグが状態▲５▼であると判断されると、ＭＣＵ１２は消去待ちであるブロック＃０を選択しその記憶内容を消去する（Ｓ３７）。ブロック＃０の消去により消去開始フラグＦ１Ｓ、消去完了フラグＦ１Ｃはともにオフとなり、フラグ全体は状態▲４▼を示す。その後、ＭＣＵ１２は不揮発性メモリ１３上の消去完了フラグＦ０Ｃをオンにセットする（Ｓ３９）。このときフラグは状態▲６▼となる（Ｓ３９）。そして電源投入後にデータが最初に書き込まれるブロック＃１の記憶場所を決定する（Ｓ４１）。ステップＳ３３と同様にして、ＭＣＵ１２はブロック＃１の記憶内容を先頭アドレスから順に読み出し、最後に書き込まれたデータのアドレスをサーチする。その次アドレスをデータが最初に書き込まれる記憶場所としてＲＡＭ１４に記憶される（Ｓ４３）。
【００２８】
なお、ステップＳ３７で消去途中に電源がオフされると、フラグは状態▲４▼に変化したにも拘わらずブロック＃０が完全に消去されていない場合もある。このときは電源を再度投入して再度ブロック＃０を消去すればよい。よってステップＳ２３で全フラグが状態▲４▼であると判断されたときにもステップＳ３７の処理を行う。
【００２９】
ステップＳ２３で全フラグが状態▲３▼であると判断されると、ブロックの消去動作を行なうことなくＭＣＵ１２はステップＳ３３、Ｓ３５の処理を行う。さらにステップＳ２３で全フラグが状態▲６▼であると判断されると、ブロックの消去動作を行なうことなくＭＣＵ１２はステップＳ４１、Ｓ４３の処理を行う。ステップＳ２３で全フラグが状態▲８▼と判断されると、ＭＣＵ１２はエラーと判断し、必要に応じてエラー処理を行なう。
【００３０】
なおＭＣＵ１２は、ステップＳ２５、Ｓ３１、Ｓ３９で書き換えられた不揮発性メモリ１３のフラグの状態を、ＲＡＭ１４にコピーされたフラグにも反映するようＲＡＭ１４のデータも書き換える。
【００３１】
電源投入後に実際にデータが書き込まれる場合の不揮発性メモリ１３の動作を図６のフローチャートを用いて説明する。
図６を参照し、書き込み処理が開始されると、まず不揮発性メモリ１３と同じ内容がコピーされているＲＡＭ１４のフラグＦ０Ｓ、Ｆ０Ｃ、Ｆ１Ｓ、Ｆ１Ｃの内容をチェックする（Ｓ５１）。ステップＳ５１で全フラグが状態▲３▼であると判断されたときブロック＃０が現在使用中であることがわかるので、ＭＣＵ１２はブロック＃０にデータを書き込む（Ｓ５３）。ステップＳ２７、Ｓ３５等で、データが書き込まれるべきブロック＃０のアドレスがＲＡＭ１４に保持されているので、そのアドレスを参照してデータが書き込まれる。
【００３２】
次いでＭＣＵ１２は、ブロック＃０のデータを記憶する領域に次のデータが書き込むことができるどうか判断する（Ｓ５５）。これは、ブロック＃０のデータ記憶領域の全体に書きこみが行なわれたかどうかで判断され、例えばステップＳ５３で参照したアドレスがブロック＃０におけるデータの記憶領域の最終アドレスであるかどうかで容易に判断される。ステップＳ５５でＹｅｓの場合、ＭＣＵ１２は、ステップＳ５３でデータを書き込んだ場所のアドレスに所定の値を加算して次にデータが書き込まれるべきブロック＃０内のアドレスを生成する。そしてＲＡＭ１４に記憶されたアドレスをその生成された新たなアドレスに書き換える（Ｓ５７）。一方ステップＳ５５で、フラグが状態▲３▼のときＮｏの場合には、ＭＣＵ１２はブロック＃１内の消去開始フラグＦ０Ｓをオンにセットする（Ｓ５９）。またＭＣＵ１２はＲＡＭ１４にコピーされた消去開始フラグＦ０Ｓにもオン状態を反映させる。このとき全フラグは状態▲５▼となる。次にデータが書き込まれるのは消去済みのブロック＃１であり、ＲＡＭ１４に記憶されたアドレスをブロック＃１の先頭アドレスに書き換える（Ｓ６１）。
【００３３】
ステップＳ５１で全フラグが状態▲６▼であると判断されたときブロック＃１が現在使用中であることがわかるので、ＭＣＵ１２はブロック＃１にデータを書き込む（Ｓ６３）。ステップＳ４３等でＲＡＭ１４にはデータが書き込まれるべきブロック＃１のアドレスが保持されるので、そのアドレスを参照してデータが書き込まれる。
【００３４】
次いでＭＣＵ１２は、ブロック＃１のデータの記憶領域に次のデータが書きこむことができるかどうか判断する（Ｓ６５）。これは、ブロック＃１のデータ記憶領域の全体に書きこみが行なわれたかどうかで判断され、例えば、ステップＳ６３で参照したアドレスがブロック＃１におけるデータ記憶領域の最終アドレスであるかどうかで容易に判断される。ステップＳ６５でＹｅｓの場合、ＭＣＵ１２は、ステップＳ６３でデータを書き込んだ場所のアドレスに所定の値を加算して次のデータが書き込まれるブロック＃１内のアドレスを生成する。ＲＡＭ１４に記憶されたアドレスをその生成された新たなアドレスに書き換える（Ｓ６７）。ステップＳ６５でＮｏの場合には、ＭＣＵ１２はブロック＃０内の消去開始フラグＦ１Ｓをオンにセットする（Ｓ６９）。またＭＣＵ１２はＲＡＭ１４にコピーされた消去開始フラグＦ１Ｓにもオン状態を反映させる。このとき全フラグは状態▲７▼となる。次にデータが書き込まれるのは消去済みのブロック＃０であり、ＲＡＭ１４に記憶されたアドレスをブロック＃０の先頭アドレスに書き換える（Ｓ７１）。
【００３５】
ステップＳ５１で全フラグが状態▲７▼であると判断されたときは、状態▲３▼の場合と同様にＭＣＵ１２はステップＳ５３の処理を行なう。次いでステップＳ５５でＹｅｓの場合、状態▲３▼の場合と同様にステップ５７の処理を行なう。状態▲７▼は、ブロック＃０が使用中で且つブロック＃１はまだ消去されていない消去待ちの状態にある。よってステップＳ５５でＮｏの場合には、ブロック＃０、＃１のいずれかが消去されない限り書きこみができない。よってＭＣＵ１２はエラーと判断し、必要に応じてエラー処理を行なう。
【００３６】
ステップＳ５１で全フラグが状態▲５▼であると判断されたときは、状態▲６▼の場合と同様にＭＣＵ１２はステップＳ６３の処理を行なう。次いでステップＳ６５でＹｅｓの場合、状態▲６▼の場合と同様にステップ６７の処理を行なう。状態▲６▼は、ブロック＃１が使用中で且つブロック＃０はまだ消去されていない消去待ちの状態にある。よってステップＳ６５でＮｏの場合には、ブロック＃０、＃１のいずれかが消去されない限り書きこみができない。よってＭＣＵ１２はエラーと判断し、必要に応じてエラー処理を行なう。
【００３７】
ステップＳ５１で全フラグが状態▲８▼にあると判断されたときには、ＭＣＵ１１２はエラーと判定し、必要に応じてエラー処理を行なう。
【００３８】
ステップＳ６１の終了時で全フラグが状態▲５▼である場合、電源が遮断されることなく次データの書きこみがあるならば、ＭＣＵ１２はステップＳ５１のフラグチェックによりステップＳ６３に移行しブロック＃１へ次データを書きこむ。また次データの書きこみがなく電源が遮断されるならば、電源再投入によりＭＣＵ１２は、図５のステップＳ２３のフラグチェックによりステップＳ３７に移行しブロック＃０の消去を行なう。
【００３９】
ステップＳ７１の終了時で全フラグが状態▲７▼である場合、電源が遮断されることなく次データの書きこみがあるならば、ＭＣＵ１２はステップＳ５１のフラグチェックによりステップＳ５３に移行しブロック＃０へ次データを書きこむ。逆に次データの書きこみが発生せずに電源が遮断されるならば、電源再投入によりＭＣＵ１２は、図５のステップＳ２３のフラグチェックによりステップＳ２９に移行しブロック＃１の消去を行なう。
【００４０】
ステップＳ５７の終了後、次データの書きこみがなく電源が遮断された場合、そのときのフラグ状態が状態▲７▼であれば図５を参照して、ステップＳ２３のチェックによりステップＳ２９に移行しＭＣＵ１２はブロック＃１を消去する。また全フラグが状態▲３▼であればブロック＃１の消去はすでに完了しているから図５のステップ２３のフラグチェックにより処理はステップＳ３３に移行する。ステップＳ５７の後に電源が遮断されることなく次のデータの書きこみがある場合には、そのときのフラグが状態▲７▼であろうと状態▲３▼であろうとステップＳ５１のチェックによりＭＣＵ１２は再度ステップＳ５３の処理を行ないブロック＃０へ次データを書きこむことになる。
【００４１】
ステップＳ６７の終了後、次データの書きこみがなく電源が遮断された場合、そのときのフラグ状態が状態▲５▼であれば図５を参照して、ステップＳ２３のチェックによりステップＳ３７に移行しＭＣＵ１２はブロック＃０を消去する。また全フラグが状態▲６▼であればブロック＃０の消去はすでに完了しているから図５のステップ２３のフラグチェックにより処理はステップＳ４１に移行する。ステップＳ６７の後に電源が遮断されることなく次のデータの書きこみがある場合には、そのときのフラグが状態▲５▼であろうと状態▲６▼であろうと、ステップＳ５１のチェックによりＭＣＵ１２は再度ステップＳ６３の処理を行ないブロック＃１へ次データを書きこむことになる。
【００４２】
この実施の形態によれば、複数のブロック（ブロック＃０、＃１）の各々の消去に関する情報を示すフラグをその複数のブロック内の他のブロック（ブロック＃１、＃０）に設けることで、ブロック自身が消去されても、その消去されたブロックに対応するフラグは変化しない。従ってブロックの消去途中で電源が遮断されてもブロックに対応するフラグの状態が不用意に変化することはなくフラグは正常な状態を示すことができる。またブロックとは独立に消去可能な記憶領域をこのフラグの保持専用に不揮発性メモリ１３内に設ける必要もないので、メモリのコストも抑えられる。
【００４３】
このとき、ブロックの消去に関する情報を示すフラグとして、消去開始フィラグ及び消去完了フラグの２種類が用意されたことにより、ブロックの消去途中に電源が遮断されても、またはブロックの消去完了の後に電源が遮断されても、フラグからブロックの正しい状態を知ることができる。
例えば図５を参照して、ステップＳ２９でブロック＃１の消去途中で電源が遮断されても、ブロック＃０に存在する対応の消去開始フラグＦ１Ｓ、消去完了フラグＦ１Ｃはそれぞれオンおよびオフを維持する。電源が再度投入されたときブロック＃１は消去待ち状態と判断できるので、ブロック＃１を再び消去する処理を行うことで、消去された状態のブロック＃１に正常にデータ書き込みができる。またステップＳ２９でブロック＃１の消去完了後に電源が遮断されても、ブロック＃０に存在する対応の消去開始フラグＦ１Ｓ、消去完了フラグＦ１Ｃはともにオンを示す。電源が再度投入されたときブロック＃１は消去完了であると判断できるので、ブロック＃１の消去処理は不要となる。
【００４４】
この実施の形態では、システム１０が動作中にデータが逐次書き込まれる不揮発性メモリ１３内のブロック数は２つで説明したが、３以上の任意のＮ個であってもよい。このとき各ブロックの消去に関する情報（消去開始フラグおよび消去完了フラグ）は、データが書き込まれる他の（Ｎ−１）個のブロックの各々に設ければよい。例えば３個のブロックであれば、図７を参照して、ブロック＃０に対応する消去開始フラグＦ０Ｓ−１、Ｆ０Ｓ−２及び消去完了フラグＦ０Ｃ−１、Ｆ０Ｃ−２は、他の２つのブロックの各々に設け、ブロック＃１に対応する消去開始フラグＦ１Ｓ−２、Ｆ１Ｓ−０及び消去完了フラグＦ１Ｃ−２、Ｆ２Ｃ−０は、他の２つのブロックの各々に設け、ブロック＃２に対応する消去開始フラグＦ２Ｓ−０、Ｆ２Ｓ−１及び消去完了フラグＦ２Ｃ−０、Ｆ２Ｃ−１は、他の２つのブロックの各々に設ける。
【００４５】
また、ＭＣＵ１２は、システム１０の他のユニットを制御するため、不揮発性メモリ１３の制御以外にも種々の機能を実現している。しかし、ＭＣＵ１２に不揮発性メモリ１３の書きこみおよび消去の制御をさせるのではなく、別途専用のメモリコントローラを設け、この専用コントローラにメモリ１３の書き込み、消去の制御をさせてもよい。このコントローラは、プログラムを実行して機能するマイクロコンピュータでもよいし、ハードワイヤードロジック回路で構成してもよい。
【００４６】
実施の形態２．
図７は、フラグＦ０Ｓ、Ｆ０Ｃ、Ｆ１Ｓ、Ｆ１Ｃの各々の別の構成例を示す。各フラグは、図７（ａ）のように、各々が複数のビットからなる複数のフラグ領域８０ａ〜８０ｈを有する。各フラグ領域は、例えば一回のアドレス指定で書き込まれるデータのビット数（２バイト＝１６ビット）で表現される。フラグ領域８０の数は例えば８個とする。
【００４７】
フラグをオフにするためにブロックが消去されると、その消去されるブロックに設けられたフラグの全ビットは図７（ｂ）のようにゼロとなり、フラグ領域すべてが“００００Ｈ”の第１の値をもつ。またフラグをオンにセットするときには、図７（ｃ）のようにフラグの全ビットを“１”とする、つまり、フラグ領域すべてが“ＦＦＦＦＨ”の第２の値をもつ。
【００４８】
ここで、図７（ｂ）のようにブロック消去により全ビットがゼロとなったとしても、不揮発性メモリの揮発エラーによりビットの状態が変化する可能性がある。例えば図７（ｄ）では揮発エラーが生じた一例を示す。フラグ領域８０ａが“００１０Ｈ”、フラグ領域８０ｃが“００３０Ｈ”、フラグ領域８０ｄが“００ｄ０”と状態が変化している。この不揮発性メモリ１３では、ある１ビットでも状態が０から１に変化すると、その変化したビットを含む書き込み単位の２バイトは追加書き込みすることができないものを想定している。よって揮発エラーを修正するためにはブロックを一旦消去するしかない。
【００４９】
そこで複数のフラグ領域８０ａ〜８０ｈのうち任意の少なくとも一つのフラグ領域に第１の値である“００００Ｈ”の値を有するときにフラグがオフ状態であるとＭＣＵ１２が判定するようにする。したがって、図７（ｂ）の状態から一部に揮発エラーが生じても、揮発エラーを修正するためにブロックを消去することなく、フラグをオフと正しく判定できる。
【００５０】
さらに図７（ｄ）のように揮発エラーが発生しているがオフ状態を示すフラグをオンにセットするとき、ＭＣＵ１２は、フラグ内の複数のフラグ領域を読み出し揮発エラーが生じているかどうか判断する。そしてＭＣＵ１２は、図７（ｅ）のように、全ビットがゼロであるフラグ領域すべて（８０ｂ、８０ｅ〜８０ｈの５つ）に対し“ＦＦＦＦＨ”を書き込み、揮発エラーが生じているフラグ領域（８０ａ、８０ｃ、８０ｄの３つ）はそのままの状態にしておく。そして複数のフラグ領域８０ａ〜８０ｈのうち任意の少なくとも一つのフラグ領域に第２の値である“ＦＦＦＦＨ”の値を有するときフラグがオン状態にあるとＭＣＵ１２が判断するようにする。したがって、揮発エラーが一部のフラグ領域に発生しても、フラグをオンと正しく判定できる。また図７（ｅ）で“ＦＦＦＦＨ”を保持する複数のフラグ領域のうちさらに揮発エラーを起こし別の状態に変化してしまう可能性もある。この場合でもサブ領域のいずれか一つでも“ＦＦＦＦＨ”の値があればフラグはオン状態と判断できる。よって揮発エラーが生じても、そのエラーを適宜修正することなくフラグのオン状態及びオフ状態を正しく判定できる。
【００５１】
なお、フラグ内の複数のフラグ領域８０ａ〜８０ｈに、“００００Ｈ”の値を有するものと“ＦＦＦＦＨ”の値を有するものとが混在する場合、または複数のフラグ領域８０ａ〜８０ｈに“００００Ｈ”、“ＦＦＦＦＨ”のいずれの値とも存在しない場合には、フラグエラーとして扱う。
【００５２】
この実施の形態ではフラグ領域の数および各フラグ領域を構成するビットの数は、上記のそれぞれ８個及び１６個ビットに限定されるものではなく、他の複数個の値でもよい。
【図面の簡単な説明】
【図１】この発明の実施の形態１によるコンピュータシステムを示すブロック図である。
【図２】図１のシステムで使用される不揮発性メモリ１３の記憶領域の構成を示す構成図である。
【図３】消去開始フラグＦ０Ｓ、Ｆ１Ｓ、消去完了フラグＦ０Ｃ、Ｆ１Ｃの具体的な構成を示す構成図である。
【図４】消去開始フラグＦ０Ｓ、Ｆ１Ｓ、消去完了フラグＦ０Ｃ、Ｆ１Ｃにより示されるブロック＃０、＃１の状態を説明するための説明図である。
【図５】不揮発性メモリ１３の電源投入時の動作を示すフローチャート図である。
【図６】不揮発性メモリ１３の書き込み動作を示すフローチャート図である。
【図７】不揮発性メモリ１３の記憶領域の別の構成を示す構成図である。
【図８】この発明の実施の形態２による消去開始フラグＦ０Ｓ、Ｆ１Ｓ、消去完了フラグＦ０Ｃ、Ｆ１Ｃの具体的な構成図である。
【符号の説明】１０…コンピュータシステム、１２…マイクロコントローラ（ＭＣＵ）、１３…不揮発性メモリ、１４…ランダムアクセスメモリ（らＭ）、Ｆ０Ｓ、Ｆ１Ｓ…消去開始フラグ、Ｆ０Ｃ、Ｆ１Ｃ…消去完了フラグ
【図１】
2004118937.tif 000003
【図２】
2004118937.tif 000004
【図３】
2004118937.tif 000005
【図４】
2004118937.tif 000006
【図５】
2004118937.tif 000007
【図６】
2004118937.tif 000008
【図７】
2004118937.tif 000009
【図８】
2004118937.tif 000010