(57)【要約】      （修正有）【課題】相補型等の初期値不定のメモリにおいても、効率的に書き換え可能回数を増加させる。【解決手段】各記憶ブロックＢ0，Ｂ1，Ｂ2は、ユーザデータを格納するデータ格納領域２１と、各データ格納領域２１に一対一で対応するように設けられ、データ格納領域２１へのデータの書き込み状態を示す判別データを格納する判別領域２２とを備え、制御手段は、各記憶ブロックＢ0，Ｂ1，Ｂ2の判別データ間の相対的な異同関係に基づいて、ユーザデータの格納先となるデータ格納領域２１を決定し、ユーザデータの書き込みを行ったデータ格納領域２１に対応する判別領域２２の判別データを、書き込み前と異なる値に変更する。【選択図】図２
2010170599.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶領域を構成する各セクタが複数の記憶ブロックに分割され、複数のメモリセルから構成される前記記憶ブロックへのユーザデータの書き込みを制御する制御手段を備え、一対の前記メモリセルの電位差により１ビットのデータを表す相補型の不揮発性メモリであって、
前記各記憶ブロックは、
前記ユーザデータを格納するデータ格納領域と、
前記各データ格納領域に一対一で対応するように設けられ、前記データ格納領域へのデータの書き込み状態を示す判別データを格納する判別領域とを備え、
前記制御手段は、
前記各記憶ブロックの前記判別データ間の相対的な異同関係に基づいて、前記ユーザデータの格納先となる前記データ格納領域を決定し、
前記ユーザデータの書き込みを行った前記データ格納領域に対応する前記判別領域の前記判別データを、書き込み前と異なる値に変更する、
不揮発性メモリ。
【請求項２】
前記制御手段は、
前記各判別データに異なる値が含まれる場合、前記各記憶ブロックの配列順における前記異なる値の境界位置に基づいて、前記ユーザデータを書き込む前記データ格納領域を決定する、
請求項１記載の不揮発性メモリ。
【請求項３】
前記制御手段は、
前記データ格納領域に前記ユーザデータを書き込む際に、先ず前記データ格納領域とこれに対応する前記判別領域とを初期化し、次いで前記データ格納領域に所望のユーザデータを格納し、次いで前記初期化前に前記判別領域に格納されていた前記判別データを異なる値に変更する、
請求項１記載の不揮発性メモリ。
【請求項４】
前記判別データは、２つのメモリセルのうち一方のメモリセルを消去状態、他方のメモリセルを書き込み状態とした第１の状態と、２つのメモリセルの両方を書き込み状態とした第２の状態とを含み、
前記第２の状態は、前記第１の状態において消去状態にある一方のメモリセルに、前記第１の状態において書き込み状態にある他方のメモリセルへの書き込み時よりも時間的に遅れて書き込みを実施することにより得られる状態である、
請求項１記載の不揮発性メモリ。
【請求項５】
データ記憶領域を構成する各セクタが複数の記憶ブロックに分割され、複数のメモリセルから構成される前記各記憶ブロックが、ユーザデータを格納するデータ格納領域と、前記各データ格納領域に一対一で対応するように設けられ、前記データ格納領域へのデータの書き込み状態を示す判別データを格納する判別領域とを備え、一対の前記メモリセルの電位差により１ビットのデータを表す相補型の不揮発性メモリの制御方法であって、
前記各記憶ブロックの前記判別データ間の相対的な異同関係に基づいて、前記ユーザデータの格納先となる前記データ格納領域を決定するステップと、
前記ユーザデータの書き込みを行った前記データ格納領域に対応する前記判別領域の前記判別データを、書き込み前と異なる値に変換するステップと、
を備える不揮発性メモリの制御方法。
【請求項６】
前記各判別データに異なる値が含まれる場合、前記各記憶ブロックの配列順における前記異なる値の境界位置に基づいて、前記ユーザデータを書き込む前記データ格納領域を決定するステップ、
を備える請求項５記載の不揮発性メモリの制御方法。
【請求項７】
前記データ格納領域に前記ユーザデータを書き込む際に、
前記データ格納領域とこれに対応する前記判別領域とを初期化するステップと、
前記データ格納領域に前記ユーザデータを格納するステップと、
前記初期化前に前記判別領域に格納されていた前記判別データを異なる値に変更するステップと、
を備える請求項５記載の不揮発性メモリの制御方法。
【請求項８】
前記判別データは、２つのメモリセルのうち一方のメモリセルを消去状態、他方のメモリセルを書き込み状態とした第１の状態と、２つのメモリセルの両方を書き込み状態とした第２の状態とを含み、
前記第２の状態は、前記第１の状態において消去状態にある一方のメモリセルに、前記第１の状態において書き込み状態にある他方のメモリセルへの書き込み時よりも時間的に遅れて書き込みを実施することにより得られる状態である、
請求項５記載の不揮発性メモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＥＥＰＲＯＭ(Electrically Erasable and Programmable Read Only Memory)等の書き換え可能な不揮発性メモリに関し、特にその書き換え可能回数を増加させるための技術に関するものである。
【背景技術】
【０００２】
近年、フラッシュメモリに代表されるＥＥＰＲＯＭの開発が進んでいる。ＥＥＰＲＯＭは、データの書き換えが可能なものであるが、その書き換え回数には上限があり、この書き換え回数の増加が求められている。しかし、ＬＳＩ(Large Scale Integration)の高集積化に伴い、メモリには低電圧化が求められ、書き換え回数向上の妨げとなっている。
【０００３】
フラッシュメモリの書き換え回数の増加を目的とする発明として、データ記憶領域を構成するセクタを、ユーザ調整データのデータサイズと等しいかそれ以上のサイズの記憶ブロックに複数分割し、この記憶ブロック内に、ユーザ調整データを格納するユーザ調整データ領域と、ユーザ調整データが書き込み済みであるかどうかを示す書き込み判別領域とを備える構成が開示されている（特許文献１参照）。この構成においては、書き込み判別領域に未書き込み状態を示す値が格納されている記憶ブロックを検索し、この記憶ブロックのユーザ調整データ領域に新しいユーザ調整データを格納する。
【０００４】
図２２は、従来型のメモリの構成を示している。この構成においては、選択されたメモリセル５０１の値とリファレンス回路５０２の値とをセンスアンプＳＡで比較して増幅することにより、リード値が決定される。従って、消去後のセル値をリファレンス回路５０２より低く、書き込み後のセル値をリファレンス回路５０２より高く設定することにより、前記リード値「１」「０」の判定を行うことができる。上記特許文献１は、このような従来型のメモリへの適用を前提とするものである。
【０００５】
また、図２３は、相補型のメモリの構成を示している。この構成においては、対となる２つのセルａ，ｂの値をセンスアンプＳＡで比較し、いずれが高いかで「１」「０」の判定が行われる。この構成は、リファレンス回路を必要としないので、低電圧化に有利である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−７２２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述したような相補型の構成では、消去後のセルａ，ｂが初期状態（例えば「１」）となるため、この時のＳＡの出力は不定となる。そのため、相補型のメモリに上記特許文献１のような構成を適用する場合、事前にセルａ又はｂに初期値を書き込む必要があるが、このような処理は、書き換え回数をロスする。従って、相補型のメモリにおいては、上記特許文献１に示されるような構成を採用しても、書き換え可能回数を効率的に増加させることができないという問題がある。
【課題を解決するための手段】
【０００８】
上記課題の解決を図る本発明は、データ記憶領域を構成する各セクタが複数の記憶ブロックに分割され、複数のメモリセルから構成される前記記憶ブロックへのユーザデータの書き込みを制御する制御手段を備え、一対の前記メモリセルの電位差により１ビットのデータを表す相補型の不揮発性メモリであって、前記各記憶ブロックは、前記ユーザデータを格納するデータ格納領域と、前記各データ格納領域に一対一で対応するように設けられ、前記データ格納領域へのデータの書き込み状態を示す判別データを格納する判別領域とを備え、前記制御手段は、前記各記憶ブロックの前記判別データ間の相対的な異同関係に基づいて、前記ユーザデータの格納先となる前記データ格納領域を決定し、前記ユーザデータの書き込みを行った前記データ格納領域に対応する前記判別領域の前記判別データを、書き込み前と異なる値に変更するものである。
【０００９】
上記本発明によれば、ある記憶ブロックのデータ格納領域にユーザデータが書き込まれると、この記憶ブロックの判別領域の判別データが変更される。例えば、判別データとして「０」が格納されていた判別領域に対応するデータ格納領域にユーザデータが書き込まれると、この判別データが「１」に反転される。そして、各記憶ブロックの判別データ間の相対的な異同関係を調べることにより、どの記憶ブロックに最新の（又は最も古い）ユーザデータが格納されているか等を判断することができ、新しいユーザデータの格納先を適切に決定することが可能となる。これにより、１つのセクタの書き換え可能回数を、このセクタを構成する記憶ブロックの数に応じて増加させることができる。例えば、１００Ｋの書き換え可能回数を有する各セクタを、第１〜第３の３つの記憶ブロックに分割した場合には、ユーザデータの書き換えを、例えば第１→第２→第３→第１→第２→・・のように順番に繰り返して各記憶ブロックのデータ格納領域に格納していくことにより、およそ３００Ｋの書き換えが可能となる。また、本発明によれば、ユーザデータの書き換え時に、判別領域に初期値を事前に書き込む必要がないので、リファレンス信号を生成する回路等を備えない相補型メモリであっても、書き換え回数をロスすることはない。
【００１０】
また、本発明は、データ記憶領域を構成する各セクタが複数の記憶ブロックに分割され、複数のメモリセルから構成される前記各記憶ブロックが、ユーザデータを格納するデータ格納領域と、前記各データ格納領域に一対一で対応するように設けられ、前記データ格納領域へのデータの書き込み状態を示す判別データを格納する判別領域とを備え、一対の前記メモリセルの電位差により１ビットのデータを表す相補型の不揮発性メモリの制御方法であって、前記各記憶ブロックの前記判別データ間の相対的な異同関係に基づいて、前記ユーザデータの格納先となる前記データ格納領域を決定するステップと、前記ユーザデータの書き込みを行った前記データ格納領域に対応する前記判別領域の前記判別データを、書き込み前と異なる値に変換するステップとを備えるものである。
【００１１】
この制御方法による作用効果は、上記本発明に係る不揮発性メモリと同様である。
【発明の効果】
【００１２】
本発明によれば、相補型等の初期値不定のメモリにおいても、効率的に書き換え可能回数を増加させることができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明が適用されるコンピュータシステムの構成例を示すブロック図である。
【図２】図２は、本実施の形態１に係る不揮発性メモリの記憶領域の構造を示すブロック図である。
【図３】図３は、本実施の形態１に係るユーザデータの書き込み処理の流れを示すフローチャートである。
【図４】図４は、本実施の形態１に係る書き込み処理において、記憶ブロックを初期化する際の状態を示す図である。
【図５】図５は、本実施の形態１に係る書き込み処理において、１回目の書き込み処理の状態を示す図である。
【図６】図６は、本実施の形態１に係る書き込み処理において、２回目の書き込み処理の状態を示す図である。
【図７】図７は、本実施の形態１に係る書き込み処理において、３回目の書き込み処理の状態を示す図である。
【図８】図８は、本実施の形態１に係る書き込み処理において、４回目の書き込み処理の状態を示す図である。
【図９】図９は、本実施の形態１に係る書き込み処理において、５回目の書き込み処理の状態を示す図である。
【図１０】図１０は、本実施の形態１に係る書き込み処理において、６回目の書き込み処理の状態を示す図である。
【図１１】図１１は、本実施の形態１に係る書き込み処理において、７回目の書き込み処理の状態を示す図である。
【図１２】図１２は、本実施の形態１に係る書き込み処理において、８回目の書き込み処理の状態を示す図である。
【図１３】図１３は、本実施の形態１に係るユーザデータの読み出し処理の流れを示すフローチャートである。
【図１４】図１４は、本実施の形態２に係る不揮発性メモリの記憶領域の構造を示すブロック図である。
【図１５】図１５は、本実施の形態２におけるメモリセルの値と判別データとの関係を示す図である。
【図１６】図１６は、メモリセルの保持電圧値と時間との関係を示すと共に、本実施の形態２におけるセル値、判別データ、及びセンスアンプのリード値の関係を示す図である。
【図１７】図１７は、本実施の形態２に係るユーザデータの書き込み処理の流れを示すフローチャートである。
【図１８】図１８は、本実施の形態２に係る書き込み処理において、１回目の書き込み処理の状態を示す図である。
【図１９】図１９は、本実施の形態２に係る書き込み処理において、２回目の書き込み処理の状態を示す図である。
【図２０】図２０は、本実施の形態２に係る書き込み処理において、３回目の書き込み処理の状態を示す図である。
【図２１】図２１は、本実施の形態２に係るユーザデータの読み出し処理の流れを示すフローチャートである。
【図２２】図２２は、従来型のメモリの構成例を示す図である。
【図２３】図２３は、相補型のメモリの構成例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本発明の実施の形態を、添付した図面を参照して説明する。尚、異なる実施の形態において、同一又は同様の作用効果を奏する箇所については同一の符号を付してその説明を省略する。
【００１５】
実施の形態１
図１は、本発明が適用されるコンピュータシステムの構成例を示すブロック図である。このコンピュータシステムは、ＣＰＵ(Central Processing Unit)１、命令メモリ２、データ格納用メモリ３、アドレスバス４、データバス５を備えている。
【００１６】
前記ＣＰＵ１は、前記命令メモリ２に格納されたプログラムに従って、後述するユーザデータの書き込み等の各種情報処理を行う電子回路である。前記命令メモリ２は、ＲＯＭ(Read Only Memory)、ＲＡＭ(Random Access Memory)、又はこれらの協働により構成され、前記ＣＰＵ１を駆動させるためのプログラムを格納する。前記データ格納用メモリ３は、ＥＥＰＲＯＭ（フラッシュメモリを含む）等の書き換え可能な不揮発性メモリを含んで構成され、各種データ（ユーザデータ）の書き込み及び読み出しを可能にするものである。前記アドレスバス４は、前記データ格納用メモリ３に格納されるデータの要素や位置の物理アドレスを伝達し、前記データバス５は、データそのものを伝達する。尚、本発明は、このようなコンピュータシステムの構成に限定されるものではなく、各種の設計的変更を許容するものである。例えば、本発明に係る制御を実行する手段を、前記ＣＰＵ１及び前記命令メモリ２を使用せずに、全て前記データ格納用メモリ３にハード的に実装することも可能である。
【００１７】
図２は、前記データ格納用メモリ３の一部を構成する不揮発性メモリ１０の構成を示している。この不揮発性メモリ１０のデータ記憶領域は、複数のセクタｉ，ｉ＋１，ｉ＋２，・・に分割され、更に各セクタｉ，ｉ＋１，ｉ＋２，・・は、複数の記憶ブロックＢ0，Ｂ1，Ｂ2に分割されている。本実施の形態においては、各セクタｉ，ｉ＋１，ｉ＋２，・・は、第１の記憶ブロックＢ0、第２の記憶ブロックＢ1、第３の記憶ブロックＢ2により構成されている。尚、本発明は、上記記憶ブロックの数に限定されるものではないが、ここでは説明の簡略化のため、上記３つの記憶ブロックＢ0，Ｂ1，Ｂ2を備える構成について説明する。もちろん、各セクタｉ，ｉ＋１，ｉ＋２毎にブロックの数が異なることも可能である。
【００１８】
前記各記憶ブロックＢ0，Ｂ1，Ｂ2は、それぞれデータ格納領域２１及び判別領域２２を備えている。前記データ格納領域２１は、任意のユーザデータ、即ち前記コンピュータシステムの使用者の操作により生成されたデータ、プログラム更新用データ、その他各種処理により生成されたデータを格納する領域である。前記判別領域２２は、前記各データ格納領域２１に一対一で対応するように設けられ、この対応するデータ格納領域２１へのデータ書き込み状態を示す判別データを格納する領域である。本実施の形態における前記判別データは、対応する前記データ格納領域２１へのデータ書き込み状態に応じて、互いに反転関係にある値「０」又は「１」となり、又初期時においては不定値を示す「ｎ」となる。
【００１９】
前記判別データ「０」が、上述した図２３に示す相補型のメモリにおいて、センスアンプＳＡに保持値が入力される２つのメモリセルａ，ｂの値が「０１」である時の前記ＳＡの出力値（リード値）であるとすると、前記判別データ「１」は、メモリセルａ，ｂの値が「１０」である時のＳＡのリード値である。また、前記判別データ「ｎ」は、メモリセルａ，ｂの値が「００」又は「１１」であり、ＳＡのリード値が不定となる場合の値である。
【００２０】
図３は、本実施の形態において前記ユーザデータを前記データ格納領域２１に書き込む際の処理を示している。この処理において、先ず前記各記憶ブロックＢ0，Ｂ1，Ｂ2の判別データの値が全て同じか否かを判定する（Ｓ１０１）。このＳ１０１において、前記判別データが全て同一であると判定された場合（Ｙ）には、前記第１の記憶ブロックＢ0の前記判別領域２２及び前記データ格納領域２１を消去（初期化）し、前記ユーザデータを前記データ格納領域２１に書き込むと共に、前記判別領域２２の判別データを反転させる（Ｓ１０２）。即ち、書き込み前の前記判別データが「０」であった場合には「１」に変更し、書き込み前の前記判別データが「１」であった場合には「０」に変更する。この判別データの変更（反転）処理は、当該判別領域２２に対応する前記メモリセルａ，ｂの値を、それぞれ反転させることにより行われる。
【００２１】
一方、前記Ｓ１０１において、前記判別データが全て同一ではないと判定された場合（Ｎ）には、前記記憶ブロックＢiの第１〜第３の階層を示す変数i（０〜２）の値を０とし（Ｓ１０３）、記憶ブロックＢiの判別データと、その次の記憶ブロックＢ(i+1)の判別データとが、一致するか否かを判定する（Ｓ１０４）。このＳ１０４において、両記憶ブロックＢi，Ｂ(i+1)が一致する場合（Ｙ）には、ｉに１を加算し（Ｓ１０５）、再度Ｓ１０４を実行する。この時、i＝２の場合には、Ｂ(i+1)はＢ0であるとする。
【００２２】
そして、前記Ｓ１０４において、両記憶ブロックＢi，Ｂ(i+1)が一致しないと判定された場合（Ｎ）には、この記憶ブロックＢ(i+1)の前記判別領域２２及び前記データ格納領域２１を消去（初期化）し、前記ユーザデータを前記データ格納領域２１に書き込むと共に、前記判別領域２２の判別データを反転させる（「０」に変更する）（Ｓ１０２）。前記Ｓ１０４により、前記各記憶ブロックＢ0，Ｂ1，Ｂ2の判別データが相対的に異なる境界位置を判定することが可能となる。
【００２３】
図４〜図１２において、上記処理により、各記憶ブロックＢ0，Ｂ1，Ｂ2に８回の書き込みを行った場合の移行状態が示されている。先ず、図４において、前記各記憶ブロックＢ0，Ｂ1，Ｂ2を初期化する時の状態が示されている。この時、先ず前記データ格納領域２１及び前記判別領域２２にそれぞれ格納されている所定のデータ「ｕ」が消去され、両領域２１，２２は不定状態を示す「ｎ」となる。次いで、前記判別領域２２が初期化され、全ての領域に判別データ「０」が格納される。
【００２４】
図５は、１回目の書き込み時の状態を示している。この時、前記ＣＰＵ１から前記データ格納メモリ３に対して、第１のユーザデータＤａｔａ0の書き込み命令が出されたものとする。この時、先ず前記第１の記憶ブロックＢ0の判別領域２２が消去され、その判別データが「ｎ」となる。次いで、前記第１のユーザデータＤａｔａ0が、前記第１の記憶ブロックＢ0のデータ格納領域２１に書き込まれる。そして、前記第１の記憶ブロックＢ0の判別領域２２の判別データが、書き込み前の値を反転させた「１」に変更され格納される。このような処理は、図３に示す前記Ｓ１０１における前記判別領域２２の全ての値が同一であるとの判定に導かれて行われる。
【００２５】
図６は、２回目の書き込み時の状態を示している。この時、前記ＣＰＵ１からは、第２のユーザデータＤａｔａ1の書き込み命令が出されたものとする。この時、先ず前記第２の記憶ブロックＢ1の判別領域２２が消去され、その判別データが「ｎ」となる。次いで、前記第２のユーザデータＤａｔａ1が、前記第２の記憶ブロックＢ1のデータ格納領域２１に書き込まれる。そして、前記第２の記憶ブロックＢ1の判別領域２２の判別データが、書き込み前の値を反転させた「１」に変更され格納される。このような処理は、図３に示す前記Ｓ１０１における前記判別領域２２の全ての値が同一ではないとの判定、及び前記Ｓ１０４において判明する各判別データが相対的に異なる境界位置に導かれて行われるものである。
【００２６】
図７は、３回目の書き込み時の状態を示している。この時、上記２回目の書き込み時と同様の処理により、先ず第３の記憶ボックスＢ2の判別領域２２が消去されその判別データが「０」から「ｎ」となり、次いでこの第３の記憶ボックスＢ2のデータ格納領域２１に第３のユーザデータＤａｔａ2が書き込まれ、最後に第３の記憶ボックスＢ2の判別領域２２の判別データが「１」となる。
【００２７】
図８は、４回目の書き込み時の状態を示している。この時、全ての前記判別領域２２の判別データが「１」であるため、上記図５に示す１回目の書き込み時と同様に、前記第１の記憶ボックスＢ0のデータ格納領域２１に第４のユーザデータＤａｔａ3を書き込むと共に、前記第１の記憶ボックスＢ0の判別領域２２の判別データを「１」から「０」に変更する。このように、３つ全ての記憶ボックスＢ0，Ｂ1，Ｂ2にユーザデータを書き込んだ後は、最も古いユーザデータＤａｔａ0が格納されているデータ格納領域２１に、新しいユーザデータＤａｔａ4を上書きする。
【００２８】
図９は、５回目の書き込み時の状態を示している。この時、前記第１の記憶ボックスＢ0の判別データが「０」であり、前記第２の記憶ボックスＢ1の判別データが「１」となるため、上記図６に示す２回目の書き込み時と同様に、前記第２の記憶ボックスＢ1のデータ格納領域２１に第５のユーザデータＤａｔａ4を書き込むと共に、前記第２の記憶ボックスＢ1の判別領域２２の判別データを「１」から「０」に変更する。
【００２９】
図１０は、６回目の書き込み時の状態を示している。この時、前記第２の記憶ボックスＢ1の判別データが「０」であり、前記第３の記憶ボックスＢ2の判別データが「１」となるため、上記図７に示す３回目の書き込み時と同様に、前記第３の記憶ボックスＢ2のデータ格納領域２１に第６のユーザデータＤａｔａ5を書き込むと共に、前記第３の記憶ボックスＢ2の判別領域２２の判別データを「１」から「０」に変更する。
【００３０】
図１１は、７回目の書き込み時の状態を示している。この時、全ての前記判別領域２２の判別データが、再び「０」となるため、上記図５若しくは図８に示す１回目若しくは４回目の書き込み時と同様に、前記第１の記憶ボックスＢ0のデータ格納領域２１に第７のユーザデータＤａｔａ6を書き込むと共に、前記第１の記憶ボックスＢ0の判別領域２２の判別データを「０」から「１」に変更する。
【００３１】
図１２は、８回目の書き込み時の状態を示している。この時、前記第１の記憶ボックスＢ0の判別データが「１」であり、前記第２の記憶ボックスＢ1の判別データが「０」となるため、上記図６若しくは９に示す２回目若しくは５回目の書き込み時と同様に、前記第２の記憶ボックスＢ1のデータ格納領域２１に第８のユーザデータＤａｔａ7を書き込むと共に、前記第２の記憶ボックスＢ1の判別領域２２の判別データを「０」から「１」に変更する。
【００３２】
また、図１３は、上記のようにして格納されたユーザデータを読み出す際の処理を示している。この処理において、先ず前記各記憶ブロックＢ0，Ｂ1，Ｂ2の判別データの値が全て同じか否かを判定する（Ｓ２０１）。このＳ２０１において、前記判別データが全て同一であると判定された場合（Ｙ）には、前記第３の記憶ブロックＢ2に最終（最新）のユーザデータが格納されていると判定する（Ｓ２０２）。
【００３３】
一方、前記Ｓ２０１において、前記判別データが全て同一ではないと判定された場合（Ｎ）には、前記記憶ブロックＢiの第１〜第３の階層を示す変数ｉ（０〜２）の値を０とし（Ｓ２０３）、ある記憶ブロックＢiの判別データと、その次の記憶ブロックＢ(i+1)の判別データとが、一致するか否かを判定する（Ｓ２０４）。このＳ２０４において、両記憶ブロックＢi，Ｂ(i+1)が一致する場合（Ｙ）には、ｉに１を加算し（Ｓ２０５）、再度Ｓ２０４を実行する。この時、i＝２の場合には、Ｂ(i+1)はＢ0であるとする。
【００３４】
そして、前記Ｓ２０４において、両記憶ブロックＢi，Ｂ(i+1)が一致しないと判定された場合（Ｎ）には、この記憶ブロックＢ(i+1)に最終のユーザデータが格納されていると判定する（Ｓ２０６）。これにより、常に最新のユーザデータを読み出すことが可能となる。
【００３５】
上記のように、本構成によれば、各記憶ブロックＢ0，Ｂ1，Ｂ2の前記判別データ間の相対的な異同関係に基づいて、どの記憶ブロックに最新の（又は最も古い）ユーザデータが格納されているか等を判断することができ、新しいユーザデータの格納先を適切に決定することができる。また、ユーザデータの書き換え時に、前記判別領域２２に初期値を事前に書き込む必要がないので、リファレンス信号を生成する回路等を備えない相補型メモリであっても、書き換え回数をロスすることはない。
【００３６】
実施の形態２
以下に、図１４〜図２５を参照して、本実施の形態に係る不揮発性メモリについて説明する。図１４に示すように、本実施の形態に係る不揮発性メモリ３０は、前記判別データとして、「０」，「ｖ」，「ｎ」を用いる。前記判別データ「０」，「ｎ」は、上記実施の形態１と同様である。前記判別データ「ｖ」は、後述するｖｏｉｄ状態を示している。
【００３７】
図１５及び図１６は、本実施の形態における前記メモリセルａ，ｂの値と前記判別データとの関係を示している。図１５中最も左の図は、メモリセルａ，ｂの初期化前の状態を示しており、この時の状態（判別データ）を「ｕ(unknown)」とし、ＳＡのリード値を不定とする。図１５中左から２番目の図は、メモリセルａ，ｂの初期化後（メモリセルａ，ｂの値が［１１］）、書き込み前の状態を示しており、この時前記判別データは「ｎ(null)」となり、ＳＡのリード値は不定となる。図１５中真中の図は、メモリセルａ，ｂの値が「１０」であり、前記判別データが「０」となる状態を示している。図１５中右から二番目の図は、メモリセルａ，ｂの値が「０１」であり、前記判別データが「１」となる状態を示している。そして、図１５中最も右の図は、メモリセルａ，ｂの値が「００」であり、前記判別データが「ｖ(void)」となる。この時のＳＡのリード値は不定となる。しかし、真中の図（リード値「０」）の状態から時間差を置いて、最も右の図の状態となった場合、最も右の図のリード値を「１」と考えることができる。また同様に、右から二番目の図（リード値「１」）の状態から時間差を置いて、最も右の図の状態となった場合、最も右の図のリード値を「０」と考えることができる。これについて、図１６を用いて説明する。
【００３８】
図１６は、前記メモリセルａ，ｂの保持値、前記判別データ、及び前記ＳＡのリード値の関係を示しており、ここでは、前記判別データが「ｕ」→「ｎ」→「０」→「ｖ」のように遷移する例を示している。同図が示すように、初期化前の段階Ａでは、前記リード値は不定（前記判別データが「ｕ」）である。初期化後且つセル書き込み前の段階Ｂでは、前記リード値が不定（前記判別データが「ｎ」）となる。その後、セルｂに「０」が書き込まれた段階Ｃでは、前記リード値が「０」（前記判別データが「０」）となる。そして、段階Ｄにおいて、前記段階Ｃにおける消去側のセルａに「０」を書き込むことにより、段階Ｃのリード値「０」が反転され、「１」となる。この時の判別データが、前記ｖｏｉｄ状態「ｖ」となる。
【００３９】
前記段階Ｄにおいて、消去側のセルａに「０」が書き込まれると、理論上では両セルａ，ｂの電圧値に差がなくなるため、セル値を「１１」と表現することができ、この時のリード値は「ｎ」となる。しかしながら、現実では、図１６の線Ｘ，Ｙに示すように、セルの電圧値は時間経過と共に徐々に減少する傾向があるため、後から書き込まれたセルａの電圧値の方が、先に書き込まれたセルｂの電圧値より大きくなる。このため、セルａへの書き込み後のリード値は、「１」となる。図１６では、セルｂへの書き込みを先に実施した場合（「１０」）について説明したが、反対の場合も同様である。
【００４０】
本実施の形態は、上記のようなｖｏｉｄ状態を示す判別データ「ｖ」（リード値「１」）を利用して、前記不揮発性メモリ３０に対する書き込み制御を行うものである。図１７は、本実施の形態における書き込み制御の流れを示している。この制御において、先ず前記記憶ブロックＢ0，Ｂ1，Ｂ2（図１４参照）の階層を示すi（i＝０，１，２）の値を「０」とし（Ｓ３０１）、次いでＢiの前記リード値が「１」（前記判別データが「ｖ」）で且つＢ(i+1)の前記リード値が「０」であるか否かが判定される（Ｓ３０２）。このＳ３０２において、前記両リード値の関係性が満たされない場合（Ｎ）には、iに１を加算し（Ｓ３０３）、再び前記Ｓ３０２を実行する。この時、i＝２の場合には、Ｂ(i+1)はＢ0であるとする。
【００４１】
前記Ｓ３０２において、前記両リード値の関係性が満たされる場合（Ｙ）には、Ｂ(i+1)に所望のユーザデータを書き込んだ後（Ｓ３０４）、Ｂ(i+1)の前記判別領域２２に前記判別データ「ｖ」（前記リード値「１」）を書き込む（Ｓ３０５）。その後、Ｂiの前記判別領域２２及び前記データ領域２１を消去（初期化）し（Ｓ３０６）、Ｂiの前記判別領域２２に前記判別データ（前記リード値）「０」を格納する（Ｓ３０７）。
【００４２】
図１８〜図２４において、上記処理により、各記憶ブロックＢ0，Ｂ1，Ｂ2に書き込みを行う際の移行状態が示されている。尚、前記各記憶ブロックＢ0，Ｂ1，Ｂ2の初期化に関しては、上記実施の形態１の図４で示した場合と同様である。図１８は、１回目の書き込み時の状態を示している。この時、先ず前記第１の記憶ブロックＢ0のデータ格納領域２１に、第１のユーザデータＤａｔａ0が書き込まれる。次いで、前記第１の記憶ブロックＢ0の判別領域２２に格納されている前記判別データ「０」を、「ｖ」に変更する。即ち、上述したように、前記判別データ「０」を生成する前記メモリ値（「０１」又は「１０」）の消去側のセルに、「０」を書き込むことにより、前記判別データ「ｖ」を書き込む。
【００４３】
図１９は、２回目の書き込み時の状態を示している。この時、先ず前記第２の記憶ブロックＢ1のデータ格納領域２１に第２のユーザデータＤａｔａ1を書き込む。次いで、前記第２の記憶ブロックＢ1の判別領域２２に、前記判別データ「ｖ」を書き込む。次いで、前記第１の記憶ブロックＢ0の前記判別領域２２及び前記データ格納領域２１を消去する。最後に、前記第１の記憶ブロックＢ0の判別領域２２の判別データを「０」に変更する。
【００４４】
図２０は、３回目の書き込み時の状態を示している。この時、上記２回目の書き込み時と同様の処理により、前記第３の記憶ブロックＢ2のデータ格納領域２１に第３のユーザデータＤａｔａ2を書き込み、前記第３の記憶ブロックＢ2の判別領域に前記判別データ「ｖ」を書き込み、前記第２の記憶ブロックＢ1の両領域２１，２２を消去し、前記第２の記憶ブロックＢ1の判別領域２２の判別データを「０」に変更する。
【００４５】
以降、上記２回目又は３回目の書き込み時と同様の処理を繰り返すことにより、書き換え可能回数まで書き換え処理を実行することができる。
【００４６】
図２１は、上記のようにして格納されたユーザデータを読み出す際の処理を示している。この処理において、先ず前記記憶ブロックＢ0，Ｂ1，Ｂ2の階層を示すi（i＝０，１，２）の値を「０」とし（Ｓ４０１）、次いでＢiの前記リード値が「１」（前記判別データ「ｖ」）で且つＢ(i+1)の前記リード値が「０」であるか否かが判定される（Ｓ４０２）。この時、i＝２の場合には、Ｂ(i+1)はＢ0であるとする。
【００４７】
前記Ｓ４０２において、前記両リード値の関係性が満たされる場合（Ｙ）には、Ｂiの前記データ格納領域２１に格納されているユーザデータが最新であると判定し、これを読み出す（Ｓ４０３）。一方、前記Ｓ４０２において、前記両リード値の関係性が満たされない場合（Ｎ）には、iに１を加算し（Ｓ４０４）、次いでi＞２が満たされるか否かが判定される（Ｓ４０５）。このＳ４０５において、i＞２ではないと判定された場合（Ｎ）には、前記Ｓ４０２を再度実行し、i＞２であると判定された場合（Ｙ）には、エラーが発生したと判定する（Ｓ４０６）。これにより、常に最新のユーザデータを読み出すことが可能となる。
【００４８】
上記本実施の形態のように、ｖｏｉｄ状態を示す判別データ「ｖ」を利用することによって、上記実施の形態と同様に、各記憶ブロックＢ0，Ｂ1，Ｂ2の前記判別データ間の相対的な異同関係に基づいて、ユーザデータの効率的な書き込み及び読み出しが可能となる。また、本実施の形態においては、図１７のＳ３０２及び図２１のＳ４０２に示す関係性を持つ記憶ブロックＢ0，Ｂ1，Ｂ2は、常に１組だけであるのため、不意に電源が落ちた場合等にも、最新のユーザデータがどれであるかを判定することが可能となる。
【符号の説明】
【００４９】
１０，３０  不揮発性メモリ
１１  セクタ
２１  データ格納領域
２２  判別領域
Ｂ0，Ｂ1，Ｂ2  記憶ブロック
【図１】
2010170599.tif 000003
【図２】
2010170599.tif 000004
【図３】
2010170599.tif 000005
【図４】
2010170599.tif 000006
【図５】
2010170599.tif 000007
【図６】
2010170599.tif 000008
【図７】
2010170599.tif 000009
【図８】
2010170599.tif 000010
【図９】
2010170599.tif 000011
【図１０】
2010170599.tif 000012
【図１１】
2010170599.tif 000013
【図１２】
2010170599.tif 000014
【図１３】
2010170599.tif 000015
【図１４】
2010170599.tif 000016
【図１５】
2010170599.tif 000017
【図１６】
2010170599.tif 000018
【図１７】
2010170599.tif 000019
【図１８】
2010170599.tif 000020
【図１９】
2010170599.tif 000021
【図２０】
2010170599.tif 000022
【図２１】
2010170599.tif 000023
【図２２】
2010170599.tif 000024
【図２３】
2010170599.tif 000025