(57)【特許請求の範囲】
【請求項１】
電気的にデータを読み出し及び書き込み可能で、且つデータを独立に消去可能な２つの記憶領域を有する不揮発性記憶媒体に、データを書き込む不揮発性記憶媒体のデータ書込方法において、
データを記憶するデータ記憶領域と、前記記憶領域の状態を識別するための状態データを記憶する状態データ記憶領域と、を前記記憶領域ごとに定め、
前記一方の記憶領域に最新データが書き込まれており、前記他方の記憶領域に更新データを書き込もうとするときには、まず、前記他方の記憶領域のデータの消去及び前記他方の記憶領域の前記状態データ記憶領域を第１の状態とする処理を実行し、次いで、前記一方の記憶領域の前記状態データ記憶領域を第２の状態とする処理を実行し、次いで、前記他方の記憶領域の前記データ記憶領域への前記更新データの書き込みを実行し、そして、前記他方の記憶領域の前記状態データ記憶領域を第３の状態とする処理を実行し、
書き込み動作中に異常が発生したときには、前記各状態データ記憶領域に記憶されている前記状態データに基づいて、いずれか一方の前記記憶領域に記憶されているデータを最新データであると判定することを特徴とする不揮発性記憶媒体のデータ書込方法。
【請求項２】
前記第１の状態であることを示す前記状態データは、前記記憶領域のデータを消去したときの初期化データであり、前記第３の状態であることを示す前記状態データは、前記第１の状態であることを示す前記状態データを消去せずに上書き設定することができるデータであり、前記第２の状態であることを示す前記状態データは、前記第３の状態であることを示す前記状態データを消去せずに上書き設定することができるデータであることを特徴とする請求項１記載の不揮発性記憶媒体のデータ書込方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術の分野】
本発明は、不揮発性記憶媒体にデータを書き込む不揮発性記憶媒体のデータ書込方法に係り、特に、書き込み動作中に異常が発生したときに、データを好適に保護することのできる不揮発性記憶媒体のデータ書込方法に関する。
【０００２】
【従来の技術】
従来、フラッシュＲＯＭなどの不揮発性記憶媒体にデータを書き込む方法としては、所定データ量の記憶領域に記憶されているデータを一括して消去してから、その記憶領域に１バイトづつデータを書き込むようにしていた。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来、不揮発性記憶媒体にデータを書き込む方法にあっては、書き込み動作中に電源遮断などの異常が発生すると、書き込む前に記憶されていたデータはもとより、書き込んだデータまでもが失われる可能性があった。データの書き込みは、比較的大きなデータ量の記憶領域に渡って行われるため、書き込む前に記憶されていたデータや書き込んだデータが失われると、その損害も著しいものであった。
【０００４】
そこで、本発明は、このような従来の問題を解決することを課題としており、書き込み動作中に異常が発生しても、データを好適に保護することのできる不揮発性記憶媒体のデータ書込方法を提供することを目的としている。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る請求項１記載の不揮発性記憶媒体のデータ書込方法は、電気的にデータを読み出しおよび書き込み可能で、かつデータを独立に消去可能な２つの記憶領域を有する不揮発性記憶媒体に、データを書き込む不揮発性記憶媒体のデータ書込方法において、データを記憶するデータ記憶領域と、前記記憶領域の状態を識別するための状態データを記憶する状態データ記憶領域と、を前記記憶領域ごとに定め、前記一方の記憶領域に最新データが書き込まれており、前記他方の記憶領域に更新データを書き込もうとするときには、まず、前記他方の記憶領域のデータの消去および前記他方の記憶領域の前記状態データ記憶領域を第１の状態とする処理を実行し、次いで、前記一方の記憶領域の前記状態データ記憶領域を第２の状態とする処理を実行し、次いで、前記他方の記憶領域の前記データ記憶領域への前記更新データの書き込みを実行し、そして、前記他方の記憶領域の前記状態データ記憶領域を第３の状態とする処理を実行し、書き込み動作中に異常が発生したときには、前記各状態データ記憶領域に記憶されている前記状態データに基づいて、いずれか一方の前記記憶領域に記憶されているデータを最新データであると判定する。
【０００９】
このような構成であれば、一方の記憶領域に最新データが書き込まれており、他方の記憶領域に更新データを書き込もうとするときには、まず、他方の記憶領域のデータの消去および他方の記憶領域の状態データ記憶領域を第１の状態とする処理が実行され、次いで、一方の記憶領域の状態データ記憶領域を第２の状態とする処理が実行され、次いで、他方の記憶領域への更新データの書き込みが実行され、そして、他方の記憶領域の状態データ記憶領域を第３の状態とする処理が実行される。この場合に、他方の記憶領域の状態データ記憶領域を第１の状態とする処理としては、他方の記憶領域のデータを消去したときの初期化データを第１の状態であることを示す状態データとして設定してもよいし、これとは別のデータを第１の状態であることを示す状態データとして設定してもよい。
【００１０】
一方、このような書き込み動作中に電源遮断などの異常が発生したときには、状態データ記憶領域に記憶されている状態データに基づいて、例えば、状態データ記憶領域の状態が高い方の記憶領域に記憶されているデータが最新のものとして判別される。このとき、状態データ記憶領域の状態は、第３、第２、第１の状態の順序で高い状態である。
【００１１】
すなわち、他方の記憶領域のデータが消去されている最中に異常が発生したときには、他方の記憶領域の状態データ記憶領域が第１の状態とされていることにより、少なくとも一方の記憶領域の状態の方が高い状態であるので、一方の記憶領域に記憶されているデータが最新のものであると判定される。また、他方の記憶領域にデータが書き込まれている最中に異常が発生したときには、一方の記憶領域の状態データ記憶領域が第２の状態とされ、かつ、他方の記憶領域の状態データ記憶領域が第１の状態とされているので、一方の記憶領域に記憶されているデータが最新のものであると判定される。また、他方の記憶領域にデータが書き込まれた後に異常が発生したときには、一方の記憶領域の状態データ記憶領域が第２または第１の状態とされ、かつ、他方の記憶領域の状態データ記憶領域が第３の状態とされているので、他方の記憶領域に記憶されているデータが最新のものであると判定される。
【００１２】
また、本発明に係る請求項２記載の不揮発性記憶媒体のデータ書込方法は、請求項１記載の不揮発性記憶媒体のデータ書き込み方法において、前記第１の状態であることを示す前記状態データは、前記記憶領域のデータを消去したときの初期化データであり、前記第３の状態であることを示す前記状態データは、前記第１の状態であることを示す前記状態データを消去せずに上書き設定することができるデータであり、前記第２の状態であることを示す前記状態データは、前記第３の状態であることを示す前記状態データを消去せずに上書き設定することができるデータである。
【００１３】
このような構成であれば、第１の状態であることを示す前記状態データは、記憶領域のデータを消去したときの初期化データが利用され、第３の状態であることを示す状態データは、第１の状態であることを示す状態データが消去されずに上書き設定され、第２の状態であることを示す状態データは、第３の状態であることを示す状態データが消去されずに上書き設定される。
【００１４】
各記憶領域の状態データ記憶領域には、データが消去されるのに応じて、第１の状態であることを示す状態データが設定され、次いで、新たなデータが書き込まれるのに応じて、第３の状態であることを示す状態データが設定され、最後に、他の記憶領域に新たなデータが書き込まれようとするのに応じて、第２の状態であることを示す状態データが設定され、これらが繰り返される。すなわち、このように第１、第３、第２の状態の順に上書き設定できるようにすれば、第２の状態から第１の状態に移行するときにのみ、データを消去するようにすればよい。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら説明する。図１は、本発明に係る不揮発性記憶媒体のデータ書込方法による実施の形態を示すブロック図である。
【００１６】
この実施の形態は、本発明に係る不揮発性記憶媒体のデータ書込方法を、図１に示すように、データを独立に消去可能な２つの記憶領域を有するフラッシュＲＯＭにデータを書き込み、書き込み動作中に異常が発生したときには、更新前データおよび更新データの少なくともいずれか一方を復旧するのに適用したものである。
【００１７】
図中、演算およびシステム全体を制御する演算処理装置１と、データの読み出しおよび書き込みが可能でかつデータを独立に消去可能な２つの記憶領域を有するフラッシュＲＯＭ２と、データの読み出しおよび書き込みが可能な主記憶装置３とは、データを伝送するための信号線であるバスで相互に接続されている。
【００１８】
フラッシュＲＯＭ２は、図２に示すように、外部からの制御信号を入力してフラッシュＲＯＭ内に備える回路の動作を制御する制御部２ａと、データを記憶する記憶部２ｂと、外部から入力するアドレスデータを記憶部２ｂに記憶されているデータの位置を特定する信号に変換するデコーダ２ｃと、外部とデータの入出力を行う入出力部２ｄと、で構成されている。
【００１９】
制御部２ａは、外部からの制御信号ＷＥ、ＯＥ、ＣＥを入力する入力信号バッファ２ａａと、入出力バッファ２ａａに接続し入出力部２ｄを介して外部からの制御コマンドを入力するコマンドレジスタＣＲと、入出力バッファ２ａａに接続してコマンドレジスタＣＲが入力した制御コマンドに基づいて動作モードを設定するコマンドデコーダＣＤと、コマンドデコーダＣＤに接続して動作モードがベリファイモードに設定されたときにベリファイ動作電圧を発生するベリファイ電圧発生回路２ａｂと、ベリファイ電圧発生回路２ａｂに接続して動作モードが書き込みモードに設定されたときに書き込み動作電圧を発生するプログラム電圧発生回路２ａｃと、で構成されている。
【００２０】
記憶部２ｂは、行方向および列方向にマトリクス状に配列された複数のメモリセルＭＣを備えるメモリアレイ２ｂａと、入出力部２ｄとメモリアレイ２ｂａとの間のデータの通過を制御するＹゲート２ｂｂと、動作モードが消去モードに設定されたときにメモリアレイ２ｂａ内の共通のソース線に供給する消去動作電圧のスイッチングを行うソース線スイッチ２ｂｃと、で構成されている。
【００２１】
デコーダ２ｃは、外部からアドレスデータを入力するアドレスレジスタＡＲと、Ｙゲート２ｂｂおよびメモリアレイ２ｂａに接続しアドレスレジスタＡＲが入力するアドレスデータを解読してメモリアレイ２ｂａ内に記憶されているデータの位置を特定するＸデコーダ２ｃａおよびＹデコーダ２ｃｂと、で構成されている。
【００２２】
入出力部２ｄは、外部からの制御コマンドや外部との入出力データを保持する入出力バッファ２ｄａと、入出力バッファ２ｄａが入力したデータをＹゲート２ｂｂに受け渡す入力データレジスタ２ｄｃと、Ｙゲート２ｂｂからの出力データを入出力バッファ２ｄａに受け渡すセンスアンプ２ｄｃと、で構成されている。
【００２３】
メモリアレイ２ｂａは、図３に示すように、３行×３列のマトリクス状に配列された９個のメモリセルＭＣからなり、各メモリセル行を構成するＦＡＭＯＳトランジスタのコントロールゲートに共通に接続するワード線ＷＬ１〜ＷＬ３と、各メモリセル列を構成するＦＡＭＯＳトランジスタのドレインに共通に接続するビット線ＢＬ１〜ＢＬ３と、メモリセルＭＣを構成するすべてのＦＡＭＯＳトランジスタのソースに共通に接続するソース線ＳＬと、で構成されている。
【００２４】
ワード線ＷＬ１〜ＷＬ３は、Ｘデコーダ２ｃａに接続され、ビット線ＢＬ１〜ＢＬ３は、Ｙゲート２ｂｂに接続されている。Ｙゲート２ｂｂは、入力データレジスタ２ｄｂおよびセンスアンプ２ｄｃに接続する入出力線２ｂｅと、入出力線２ｂｅとメモリアレイ２ｂａ内のビット線ＢＬ１〜ＢＬ３のそれぞれとの間にトランスファゲートとして設けられる複数のＮチャネルＭＯＳトランジスタ２ｂｄと、で構成されている。トランジスタ２ｂｄの各ゲートは、互いに異なる接続線Ｙ１〜Ｙ３を介してＹデコーダ５に接続されている。
【００２５】
データを消去する際には、まず、Ｘデコーダ２ｃａを非アクティブ状態にし、メモリアレイ２ｂａ内のすべてのワード線ＷＬ１〜ＷＬ３を接地電位にすると、すべてのメモリセルＭＣのコントロールゲート２ｇが接地電位となる。同様に、Ｙデコーダ２ｃｂを非アクティブ状態にし、Ｙゲート２ｂｂ内のすべてのトランジスタ２ｂｄに接続する接続線Ｙ１〜Ｙ３をローレベルにすると、Ｙゲート２ｂｂ内のすべてのトランジスタ２ｂｄがＯＦＦ状態となり、各ドレインがフローティング状態となる。
【００２６】
ソース線スイッチ２ｂｃは、ソース線ＳＬをハイレベルにする。そうすると、すべてのメモリセルＭＣでフローティングゲートおよびソース間にソースを高電位側とする高電界が発生し、トンネル現象が生じる。このため、フローティングゲートから電子が流出し、メモリセルアレイ２ｂａ内のすべてのメモリセルＭＣに記憶されているデータが一括して消去される。
【００２７】
データを書き込む際には、まず、Ｘデコーダ４が、メモリアレイ２ｂａ内のワード線ＷＬ１〜ＷＬ３のうちのいすれか１本を選択的にハイレベルにする。Ｙデコーダ２ｃｂは、Ｙゲート２ｂｂ内のトランジスタ２ｂｄのうちのいずれか１つを選択的にＯＮ状態とするために、接続線Ｙ１〜Ｙ３のうちのいずれか１本が選択的にハイレベルにされる。これにより、メモリアレイ２ｂａ内のハイレベルにされた接続線に対応する１本のビット線が、入出力線２ｂｅに電気的に接続する。
【００２８】
入力データレジスタ２ｄｂは、入出力バッファ２ａａからの制御信号に応じてアクティブ状態となり、入出力線２ｂｅをハイレベルにする。入出力線２ｂｅは、１本のビット線にのみ電気的に接続するため、すなわち、その１本のビット線もハイレベルになる。一方、ソース線スイッチ２ｂｃは、接地電位をソース線ＳＬに与え、入出力バッファ２ａａは、入出力端子Ｏ0 〜Ｏ7 に外部からの制御信号を増幅して入力データレジスタ２ｄｂに与える。
【００２９】
したがって、１本のワード線およびビット線によって特定されたメモリアレイ２ｂａ内のメモリセルＭＣでは、そのコントロールゲートおよびドレインの両方がハイレベルとなる。このとき、ホットエレクトロンが発生し、フローティングゲートに注入され、この１つのメモリセルＭＣにデータ“０”が書き込まれることになる。
【００３０】
なお、入出力バッファ２ａａから入力データレジスタ２ｄｂに与えられた制御信号が“１”であるならば、入力データレジスタ２ｄｂはアクティブ状態とならない。したがって、Ｙデコーダ２ｃｂによってハイレベルにされた１本の接続線に対応する１本のビット線もハイレベルとならない。このため、その１本のビット線とＸデコーダ２ｃａによってハイレベルにされた１本のワード線とに接続するメモリセルＭＣでは、ホットエレクトロンが発生しない。したがって、このメモリセルＭＣに記憶されているデータは、書換えが行われず“１”のままである。
【００３１】
データを読み出す際には、まず、Ｘデコーダ２ｃａが、メモリアレイ２ｂａ内のワード線ＷＬ１〜ＷＬ３のうちいずれか１本を選択的にハイレベルにし、他のワード線をすべてローレベルにする。そうすると、選択された１本のワード線に接続するすべてのメモリセルＭＣのコントロールゲートがハイレベルとなる。
【００３２】
Ｙデコーダ２ｃｂは、Ｙゲート２ｂｂ内のトランジスタ２ｂｄのうちいずれか１つのゲートを選択的にハイレベルにする。そうすると、この１つのトランジスタ２ｂｄに接続するビット線は、入出力線２ｂｅを介してセンスアンプ２ｄｃに電気的に接続する。一方、ソース線スイッチ２ｂｃは、接地電位をソース線ＳＬに与える。
【００３３】
したがって、このとき、Ｙデコーダ２ｃｂによってハイレベルにされた１本のビット線とＸデコーダ２ｃａによってハイレベルにされた１本のワード線とで特定された１つのメモリセルＭＣから、センスアンプ２ｄｃにより、記憶されているデータが読み出される。
【００３４】
また一方、フラッシュＲＯＭ２は、図４（ａ）に示すように、データを独立に消去可能な２つの記憶領域３ａ，３ｂとを有し、各記憶領域３ａ，３ｂは、データを記憶するデータ記憶領域と、記憶領域３ａ，３ｂの状態を識別するための状態データを記憶する状態データ記憶領域と、で構成されている。
【００３５】
状態データは、図４（ｂ）に示すように、第１の状態であることを示す状態データ“0xＦＦ”と、第２の状態であることを示す状態データ“0x００”と、第３の状態であることを示す状態データ“0x５５”と、からなっており、各状態は、第３、第２、第１の状態の順序で高い状態とされる。
【００３６】
主記憶装置３は、あらかじめ演算処理装置１の制御プログラム等が格納されているＲＯＭと、演算処理装置１の演算過程で必要な演算結果を格納するＲＡＭと、で構成されている。
【００３７】
演算処理装置１は、マイクロプロセスユニットＭＰＵ等からなり、フラッシュＲＯＭ２にデータを書き込もうとするときには、主記憶装置３のＲＯＭの所定領域に格納されている所定のプログラムを起動させ、図５のフローチャートに示す処理を実行し、フラッシュＲＯＭ２にデータを書き込んでいる最中に異常が発生し、更新前データまたは更新データを復旧させようとするときには、図６のフローチャートに示す処理を実行するようになっている。
【００３８】
つまり、演算処理装置１で、フラッシュＲＯＭ２にデータを書き込もうとするときに実行される処理は、次のように構成されている。まず、図５に示すように、ステップＳ１に移行して、記憶領域２Ｐに設定されている状態データを参照し、記憶領域２Ｐの状態が第３の状態（0x５５）であるか否かを判定し、第３の状態であると判定されたときには、ステップＳ２に移行して、記憶領域２Ｑに記憶されているデータを消去し、ステップＳ３に移行するようになっている。なお、ステップＳ２で、記憶領域２Ｑに記憶されているデータを消去すると、記憶領域２Ｑに記憶されているすべてのビットは、“１”になるので、同時に、記憶領域２Ｑの状態が第１の状態（0xＦＦ）に設定されることになる。
【００３９】
ステップＳ３では、記憶領域２Ｐの状態を第２の状態（0x００）に設定し、ステップＳ４に移行して、記憶領域２Ｑにデータを書き込み、ステップＳ５に移行して、記憶領域２Ｑの状態を第３の状態に設定し、一連の処理を終了するようになっている。
【００４０】
一方、ステップＳ１で、記憶領域２Ｐの状態が第３の状態ではないと判定されたときには、ステップＳ６に移行して、記憶領域２Ｑに設定されている状態データを参照し、記憶領域２Ｑの状態が第３の状態であるか否かを判定し、第３の状態であると判定されたときには、ステップＳ７に移行して、記憶領域２Ｐに記憶されているデータを消去し、ステップＳ８に移行するようになっている。なお、ステップＳ７で、記憶領域２Ｐに記憶されているデータを消去すると、同時に、記憶領域２Ｐの状態が第１の状態に設定されることになる。
【００４１】
ステップＳ８では、記憶領域２Ｑの状態を第２の状態に設定し、ステップＳ９に移行して、記憶領域２Ｐにデータを書き込み、ステップＳ１０に移行して、記憶領域２Ｐの状態を第３の状態に設定し、一連の処理を終了するようになっている。
【００４２】
一方、ステップＳ６で、記憶領域２Ｑの状態が第３の状態ではないと判定されたときには、ステップＳ１１に移行して、記憶領域２Ｐに記憶されているデータを消去し、ステップＳ１２に移行して、記憶領域２Ｐにデータを書き込み、ステップＳ１３に移行して、記憶領域２Ｐの状態を第３の状態に設定し、一連の処理を終了するようになっている。
【００４３】
また、演算処理装置１で、フラッシュＲＯＭ２にデータを書き込んでいる最中に異常が発生し、更新前データまたは更新データを復旧させようとするときに実行される処理は、次のように構成されている。まず、図６に示すように、ステップＳ２１に移行して、記憶領域２Ｐに設定されている状態よりも記憶領域２Ｑに設定されている状態の方が高いか否かを判定し、高いと判定されたときには、ステップ２２に移行して、記憶領域２Ｑに記憶されているデータを最新データと判定し、一連の処理を終了するようになっている。例えば、記憶領域２Ｐの状態が第３の状態に設定され、記憶領域２Ｑの状態が第２の状態に設定されているときは、ステップＳ２１で、記憶領域２Ｐに設定されている状態よりも記憶領域２Ｑに設定されている状態の方が高いと判定される。
【００４４】
しかし、ステップＳ２１で、記憶領域２Ｐに設定されている状態よりも記憶領域２Ｑに設定されている状態の方が高くないと判定されたときには、ステップＳ２３に移行して、記憶領域２Ｐに記憶されているデータを最新データと判定し、一連の処理を終了するようになっている。
【００４５】
次に、上記実施の形態の動作を説明する。
始めに、フラッシュＲＯＭ２にデータを書き込む場合について説明する。
まず、記憶領域２Ｐ，２Ｑのいずれにもデータが記憶されていないときに、フラッシュＲＯＭ２にデータを書き込もうとすると、記憶領域２Ｐがデータを書き込むための記憶領域として選択される。
【００４６】
そうすると、記憶領域２Ｐを確実に初期化状態とするために記憶領域２Ｐに対してデータの消去が実行され、記憶領域２Ｐにデータが書き込まれ、記憶領域２Ｐの状態が第３の状態に設定される。
【００４７】
このように記憶領域２Ｐにデータが書き込まれたのち、さらにそのデータが更新されたものとし、その更新データをフラッシュＲＯＭ２に書き込もうとすると、この場合、記憶領域２Ｐの状態が第３の状態に設定されているので、第３の状態に設定されていない記憶領域２Ｑが更新データを書き込むための記憶領域として選択される。
【００４８】
そうすると、記憶領域２Ｑを確実に初期化状態とするために記憶領域２Ｑに対してデータの消去が実行されるとともに、記憶領域２Ｑの状態が第１の状態に設定され、記憶領域２Ｐの状態が第２の状態に設定される。次いで、記憶領域２Ｑに更新データが書き込まれ、記憶領域２Ｑの状態が第３の状態に設定される。
【００４９】
このように記憶領域２Ｑにデータが書き込まれたのち、さらにそのデータが更新されたものとし、その更新データをフラッシュＲＯＭ２に書き込もうとすると、この場合、記憶領域２Ｑの状態が第３の状態に設定されているので、第３の状態に設定されていない記憶領域２Ｐが更新データを書き込むための記憶領域として選択される。
【００５０】
そうすると、記憶領域２Ｐに記憶されているデータが消去されるとともに、記憶領域２Ｐの状態が第１の状態に設定され、記憶領域２Ｑの状態が第２の状態に設定される。次いで、記憶領域２Ｐに更新データが書き込まれ、記憶領域２Ｐの状態が第３の状態に設定される。
【００５１】
その次に、フラッシュＲＯＭ２に更新データを書き込んでいる最中に電源遮断などの異常が発生し、更新前データおよび更新データのいずれか一方を復旧する場合について説明する。
【００５２】
まず、記憶領域２Ｑが更新データを記憶するための記憶領域として選択されているときであって、記憶領域２Ｑに記憶されているデータを消去している最中に異常が発生したときには、記憶領域２Ｐの状態が第３の状態に設定されているので、記憶領域２Ｐに記憶されている更新前データが最新データであると判定される。そうすると、演算処理装置１がフラッシュＲＯＭ２から主記憶装置３にデータを読み込むときには、記憶領域２Ｐに記憶されている更新前データが読み込まれる。
【００５３】
次いで、記憶領域２Ｑに更新データを書き込んでいる最中に異常が発生したときには、記憶領域２Ｐの状態が第２の状態に設定され、かつ、記憶領域２Ｑの状態が第１の状態に設定されているので、記憶領域２Ｐに記憶されている更新前データが最新データであると判定される。そうすると、演算処理装置１がフラッシュＲＯＭ２から主記憶装置３にデータを読み込むときには、記憶領域２Ｐに記憶されている更新前データが読み込まれる。
【００５４】
次いで、記憶領域２Ｑに更新データを書き込んだ後に異常が発生したときには、記憶領域２Ｐの状態が第２または第１の状態に設定され、かつ、記憶領域２Ｑの状態が第３の状態に設定されているので、記憶領域２Ｑに記憶されている更新データが最新データであると判定される。そうすると、演算処理装置１がフラッシュＲＯＭ２から主記憶装置３にデータを読み込むときには、記憶領域２Ｑに記憶されている更新データが読み込まれる。
【００５５】
次いで、記憶領域２Ｐが更新データを記憶するための記憶領域として選択されているときであって、記憶領域２Ｐに記憶されているデータを消去している最中に異常が発生したときには、記憶領域２Ｑの状態が第３の状態に設定されているので、記憶領域２Ｑに記憶されている更新前データが最新データであると判定される。そうすると、演算処理装置１がフラッシュＲＯＭ２から主記憶装置３にデータを読み込むときには、記憶領域２Ｑに記憶されている更新前データが読み込まれる。
【００５６】
次いで、記憶領域２Ｐに更新データを書き込んでいる最中に異常が発生したときには、記憶領域２Ｐの状態が第１の状態に設定され、かつ、記憶領域２Ｑの状態が第２の状態に設定されているので、記憶領域２Ｑに記憶されている更新前データが最新データであると判定される。そうすると、演算処理装置１がフラッシュＲＯＭ２から主記憶装置３にデータを読み込むときには、記憶領域２Ｑに記憶されている更新前データが読み込まれる。
【００５７】
次いで、記憶領域２Ｐに更新データを書き込んだ後に異常が発生したときには、記憶領域２Ｐの状態が第３の状態に設定され、かつ、記憶領域２Ｑの状態が第２または第１の状態に設定されているので、記憶領域２Ｐに記憶されている更新データが最新データであると判定される。そうすると、演算処理装置１がフラッシュＲＯＭ２から主記憶装置３にデータを読み込むときには、記憶領域２Ｐに記憶されている更新データが読み込まれる。
【００５８】
このようにして、データを独立に消去可能な２つの記憶領域２Ｐ，２Ｑに、データを記憶するデータ記憶領域と、記憶領域の状態を識別するための状態データを記憶する状態データ記憶領域と、それぞれを定め、記憶領域２Ｐに更新前データが書き込まれており、記憶領域２Ｑに更新データを書き込もうとするときには、まず、記憶領域２Ｑに記憶されているデータを消去し、データの消去により記憶領域２Ｑを第１の状態に設定し、次いで、記憶領域２Ｐを第２の状態に設定し、次いで、記憶領域２Ｑに更新データを書き込み、そして、記憶領域２Ｑを第３の状態に設定し、書き込み動作中に異常が発生したときには、各状態データ記憶領域に記憶されている状態データに基づいて、状態が高い方の記憶領域２Ｐ，２Ｑに記憶されているデータを最新データであると判定するようにしたから、書き込み動作中に異常が発生しても、更新前データおよび更新データが両方とも失われる可能性を低減することができるとともに、いずれの記憶領域に記憶されているデータが最新のものであるかを判定することができる。
【００５９】
また、第３の状態であることを示す状態データは、第１の状態であることを示す状態データ“0xＦＦ”を消去せずに上書き設定することができるデータ“0x５５”であり、第２の状態であることを示す状態データは、第３の状態であることを示す状態データ“0x５５”を消去せずに上書き設定することができるデータ“0x００”であるから、上記のように第１、第３、第２と状態が移行していくときに、データを一度だけ消去すればよく、消去する動作回数を低減することができる。
【００６０】
さらに、第１の状態であることを示す状態データは、データを消去したときの初期化データ“0xＦＦ”であるから、データ記憶領域に記憶されているデータを消去するのと同時に第１の状態に設定することができる。このため、データを書き込む動作回数を低減することができる。
【００６１】
なお、上記実施の形態においては、不揮発性記憶媒体としてフラッシュＲＯＭ２を用いて構成したが、これに限らず、不揮発性記憶媒体としてＵＶ−ＲＯＭ（紫外線消去型ＰＲＯＭ）、ＥＥＰＲＯＭ（電気的消去型ＰＲＯＭ）を用いて構成してもよい。
【００６２】
また、上記実施の形態においては、データを独立に消去可能な２つの記憶領域を有するフラッシュＲＯＭ２を用いて構成したが、これに限らず、データを独立に消去可能な多数の記憶領域を有するフラッシュＲＯＭ２を用いて構成してもよい。すなわち、ある記憶領域に記憶されている更新前データに新たな更新データを上書きしようとするときには、上記のような方法で更新データを書き込むようにすればよく、データを独立に消去可能なｎ＋１個の記憶領域を有している場合には、１個の記憶領域を更新データを記憶するための記憶領域として用い、ｎ個の記憶領域にデータを記憶するようにすればよい。
【００６３】
さらに、上記実施の形態において、演算処理装置１で、図５および図６のフローチャートに示す処理を実行するにあたってはいずれも、主記憶装置３のＲＯＭにあらかじめ格納されているプログラムを実行する場合について説明したが、これに限らず、これらの手順を示したプログラムが記憶された記憶媒体から、そのプログラムを主記憶装置３のＲＡＭに読み込んで実行するようにしてもよい。
【００６４】
ここで、記憶媒体とは、ＲＡＭ、ＲＯＭ、ＦＤ、コンパクトディスク、ハードディスク、光磁気ディスクまたは紙等の記憶媒体であって、電子的、磁気的、光学的等の読み取り方法のいかんにかかわらず、コンピュータで読み取り可能な記憶媒体であれば、あらゆる記憶媒体を含むものである。
【００６５】
さらに、上記実施の形態において、演算処理装置１で、図５および図６のフローチャートに示す処理はいずれも、ソフトウェアで構成した場合について説明したが、これに代えて、比較回路、演算回路、論理回路等の電子回路を組み合わせるように構成してもよい。
【００６６】
【発明の効果】
以上説明したように、本発明に係る不揮発性記憶媒体のデータ書込方法によれば、書き込み動作中に異常が発生しても、更新前データおよび更新データが両方とも失われる可能性を低減することができるとともに、いずれの記憶領域に記憶されているデータが最新のものであるかを判定することができるという効果が得られる。
【００６７】
また、本発明に係る請求項２記載の不揮発性記憶媒体のデータ書込方法によれば、記憶領域の状態を移行させるときに、データを消去する動作回数およびデータを書き込む動作回数を低減することができるという効果も得られる。
【図面の簡単な説明】
【図１】実施の形態の構成を示すブロック図である。
【図２】フラッシュＲＯＭ２の構成を示すブロック図である。
【図３】フラッシュＲＯＭ２の記憶部２ｂの構成を示すブロック図である。
【図４】フラッシュＲＯＭ２の記憶領域および状態データ格納領域に記憶される情報データの構成を示すブロック図である。
【図５】フラッシュＲＯＭ２にデータを書き込むときに実行される処理を示すフローチャートである。
【図６】書き込み動作中に異常が発生したときに実行される処理を示すフローチャートである。
【符号の説明】
１                演算処理装置
２                フラッシュＲＯＭ
２ａ              制御部
２ｂ              記憶部
２ｃ              デコーダ
２ｄ              入出力部
２Ｐ，２Ｑ        記憶領域
３                主記憶装置
【図１】
0003755626.tif 000002
【図２】
0003755626.tif 000003
【図３】
0003755626.tif 000004
【図４】
0003755626.tif 000005
【図５】
0003755626.tif 000006
【図６】
0003755626.tif 000007