(57)【要約】      【目的】  制御機器における各種設定値を電源が切れても保持する必要があるもの、例えばデジタイザでは座標の補正値や出力フォーマットの種類を設定する等の設定値を記録することを目的とする。      【構成】  フラッシュメモリにＥＥＰＲＯＭの様に使用する場合に必要な容量のバイト数確保したデータ格納部とデータ格納部のバイト毎に対応した未書き込み時”１”の値を設定する１ビットのデータ書き込み状態を表す管理情報を集めたデータ管理部を合わせた容量の記憶領域に分割した上で、連続した２つの記憶領域を読み出し用と書き込み用として使い分け書き込み判断と管理データにより効率の良い使用を可能とする。      【選択図】  図２
2005339450.tif 000002
【特許請求の範囲】
【請求項１】
１つのチップ内に複数個のメモリブロックを備え、上記メモリブロック単位での消去を可能に構成されたフラッシュメモリのデータ管理方式において、必要な容量のバイト数を確保したデータ格納部と、データ格納部のバイト毎に対応した未書き込み時に、１の値を設定する１ビットのデータ書き込み状態を表す管理情報を集めたデータ管理部を合わせた容量の記憶領域に分割した上で、新規書き込みデータ時に、前記管理情報を０の値に設定することを特徴とするフラッシュメモリのデータ管理方式。
【請求項２】
１つのチップ内のメモリブロックを上記したように、分割した記憶領域内のバイト全てが未書き込みのＦＦｈである場所を、メモリブロック先頭から順番に検索し、合致した領域を新規書き込み用のデータ格納部及びデータ管理部をもつ記憶領域とし、その一つ前の領域を最新のデータとして、読み出す為の記憶領域とすることを特徴とする請求項１記載のフラッシュメモリのデータ管理方式。
【請求項３】
データの書き込み要求が発生した場合に、読み出し用のデータ格納部に書かれているデータと、新たに書き込むデータをビット単位で比較し、１から０への変化のみの場合は、読み出し用のデータ格納部に１バイトデータを上書きするだけで処理を終了し、それ以外の場合は書き込み用のデータ格納部に、データを書き込み、さらにデータ管理部の該当ビットに０を書き込むことを特徴とする請求項１、或いは、請求項２記載のフラッシュメモリのデータ管理方式。
【請求項４】
前記、書き込み用の記憶領域に書き込みが発生した場合のみ、書き換え要求が終了した時点で、書き込み用の記憶領域のデータ管理部のビットの値が１である場所に、該当する読み込み用のデータ格納部のデータを読み込み、書き込み用のデータ格納部へ、データを書き込むことを特徴とする請求項１乃至請求項３の何れかに記載のフラッシュメモリのデータ管理方式。
【請求項５】
前記データ格納部及びデータ管理部を複数設けたメモリブロックを複数用意して、順にメモリブロックを使用し、全てのブロックを使い切った場合に、次に検索対象となるブロックを消去して、新規データ格納部及びデータ管理部とし、書き込み用の記憶領域を確保することを特徴とする請求項１乃至請求項４の何れかに記載のフラッシュメモリのデータ管理方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置等に使用するフラッシュメモリのデータ管理方式に関するもので、制御機器における各種設定値を電源が切れても保持する必要があるもの、例えばデジタイザでは座標の補正値や出力フォーマットの種類を設定する等の設定値を記録しなければならない機器に関するものである。
【背景技術】
【０００２】
従来制御機器において、その機器の設定値等を記憶しておくために１バイト単位で消去、書き込みが行えるＥＥＰＲＯＭが用いられるが、近年シングルチップマイクロコンピュータ等で安価でありフラッシュメモリを内蔵したものがある。フラッシュメモリを使用した制御装置等のシステムにおいては、データの書き込み、更新をオンボードで実現しようとする場合には、書き込みデータ種別毎にメモリブロックを割り当て、データを更新する場合には、メモリブロック単位で消去、書き込みを行うブロック単位消去方法と、データ更新を行う度に、更新対象データを除いた全てのデータを他のメモリに退避し、フラッシュメモリを消去後、再度全てのデータ書き込みを行う全消去方法との２つの方法が考えられている。                フラッシュメモリはデータを書き込む際に、バイト単位で行えるが、消去は８Ｋバイトや６４Ｋバイトなどのブロック単位で行うようにして内部構造を簡略化し、大容量化を図っている。フラッシュメモリへのデータ書き込みは、ビットを１から０にすることによって行われ、１度、０にしてしまったビットはブロック消去するまで１に変更することができず、また消去回数には制限がある。
【特許文献１】特開平１１−３２８９８２号公報。
【特許文献２】特開２００２−１７５２１１号公報。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記ブロック単位消去方法にあっては、１つのメモリブロックに対する書き込みデータサイズが１バイト単位の場合、メモリの使用効率が悪くなるばかりか、消去回数が増大し、フラッシュメモリにおける消去回数の制限が存在する事から、適応が困難となる課題がある。
また、全消去方法にあっては、データを退避するため、フラッシュメモリの他に、それと同等の容量を有するメモリを必要とするばかりか、１つのデータを更新するために、毎回全てのデータの退避、書き込み処理を行わなければならず、前記同様消去回数が増大するという課題がある。
【０００４】
そこで本発明は、上記従来例の課題に着目してなされたものであり、フラッシュメモリに対してＥＥＰＲＯＭの様に１バイト単位のデータの書き込み、更新、読み出し等のデータ管理を行う場合に、データの消去に制限（データ消去回数の制限）があるメモリに対するアクセスや、他のメモリ資源を使用することなく、効率よい処理を行うフラッシュメモリのデータ管理方法を提供することを目的としている。
【課題を解決するための手段】
【０００５】
１つのチップ内に複数個のメモリブロックを備え、上記メモリブロック単位での消去を可能に構成されたフラッシュメモリのデータ管理方式において、必要な容量のバイト数を確保したデータ格納部と、データ格納部のバイト毎に対応した未書き込み時に、１の値を設定する１ビットのデータ書き込み状態を表す管理情報を集めたデータ管理部を合わせた容量の記憶領域に分割した上で、新規書き込みデータ時に、前記管理情報を０の値に設定するフラッシュメモリのデータ管理方式を提案するものである。
【発明の効果】
【０００６】
以上説明したように、本発明のフラッシュメモリのデータ管理方式によれば、書込データの更新時に、更新データによっては読み込み領域に書き込むだけで、管理データを更新する必要が無く、また新規データを書き込んでも管理データの１ビットのみの書き換えで済むので、データ書き込み時、更新時の管理情報検索を容易に行うことができると共に、データサイズにとらわれることなく、データの書き込み／更新及び読み出し処理を行うことかでき、メモリ使用効率を向上させることが出来るという効果が得られる。また消去する場合は最小限の消去しか行わないのでフラッシュメモリの消去回数の制限に対して有効であり、書き込みが失敗しても古いデータを保持することでき、他のメモリ資源を用いることなく、より安全なデータ更新が可能となる。
【発明を実施するための最良の形態】
【０００７】
上記目的を達成するために、１つのチップ内に複数個のメモリブロックを備え、上記メモリブロック単位での消去を可能に構成されたフラッシュメモリのデータ管理方式において、前記メモリブロックをＥＥＰＲＯＭの様に使用する場合に必要な容量のバイト数確保したデータ格納部とデータ格納部のバイト毎に対応した未書き込み時、１の値を設定する１ビットのデータ書き込み状態を表す管理情報を集めたデータ管理部を合わせた容量の記憶領域に分割した上で、新規書き込みデータの時に前記管理情報を０の値を設定する。
【０００８】
前記処理を開始する前には、１つのチップ内のメモリブロックを分割した記憶領域内のバイト全てが、未書き込みのＦＦｈである場所をメモリブロック先頭から順番に検索し、合致した領域を新規書き込み用のデータ格納部及びデータ管理部をもつ書き込み用記憶領域とし、その一つ前の領域を最新のデータとして読み出し用の記憶領域とする。
【０００９】
以上の状態から、書き込み要求が発生した場合に、読み出し用のデータ格納部に書かれているデータと、新たに書き込むデータをビット単位で比較し、１から０への変化のみの場合は読み出し、データ格納部に１バイトデータを上書きするだけで処理を終了し、それ以外の場合は書き込み用のデータ格納部へデータを書き込みさらにデータ管理部の該当ビットに０を書き込む。
【００１０】
前記のように書き込み用の記憶領域に書き込みが発生した場合のみ、書き換え要求が終了した時点で、書き込み用の記憶領域のデータ管理部のビットの値が１である場所に該当する読み込み用のデータ格納部のデータを読み込み、書き込み用のデータ格納部へデータを書き込む。
【００１１】
ここで、データ格納部及びデータ管理部を複数設けたメモリブロックを複数用意して、順にメモリブロックを使用し、全てのブロックを使い切った場合に、一番古い格納先となる次のブロックを消去して新規データ格納部及びデータ管理部とすることで書き込みデータ領域を確保することで全ての古いデータを消すこと無く更新出来る。
【００１２】
以下、本発明のデータ管理方式の実施形態を図面を参照しながら説明する。図１は、本発明の実施形態を実行する装置の概略構成図であって、演算処理装置１にバス６を介して制御プログラム２、ワークメモリ４、フラッシュメモリ５および外部インタフェース３が接続され、演算処理装置１は、制御プログラム２に従ってワークメモリ４を使用しながら外部インタフェース３より得られたデータを演算処理装置１がアクセスできる特定のアドレスに配置されているフラッシュメモリ５に書き込むと共に、フラッシュメモリ５に書き込まれたデータを読み出して外部インタフェース３の制御を行う。
【００１３】
ここで、フラッシュメモリ５は、図２に示すように、複数の消去単位であるメモリブロック７によって構成され、メモリブロック７は制御プログラム２によって決定される任意容量の複数個の記憶領域８で構成され、さらに記憶領域８はデータ格納部９とデータ管理部１０を有する。データ管理部１０は、図３に示すように、データ格納部９の１バイト毎に対応する１ビットの管理情報１１として定義され、この管理情報がデータ格納部９のデータに対応できるだけの容量が記憶領域８に確保され格納されている。
【００１４】
ここで、１ビットの管理情報１１は、新規書き込みがあった場合の有効性を表すものであり初期状態でデータ未書き込み状態を”１”、データ書き込み状態でデータが有効状態を０として定義されており、データ格納９の１バイト毎の順に１ビット毎に順に対応させている。
【００１５】
次に、図４に示す読み込みアドレスと書き込みアドレスはワークメモリ４内に一時的に確保した所に記憶しておき、連続した記憶領域の先頭を指し示すものであり、オフセット指定された位置のデータの読み込み要求があった場合には読み込みアドレスにオフセットを加算したアドレスが示す先のデータを読み出して返す。書き込みアドレスは新規に書き込む際のデータ位置を算出する為の先頭アドレスとデータ管理ビットを読み書きする為のアドレスとなる。
【００１６】
次に、上記実施形態において動作を、演算処理装置１が実行する制御プログラム２のデータ管理処理手順として図６、図７、図８、図９のフローチャートで説明する。処理開始にあたり必要な情報を設定する為に図６に示す読み込み・書き込みアドレスの初期化を実行する。先ずステップＳ１でフラッシュメモリ５の先頭アドレスを書き込みアドレスとしてワークメモリ４に記憶する。さらにステップＳ２で制御プログラム２の中で従来ＥＥＰＲＯＭとして使用していた容量と同容量を確保したデータ格納部９とその管理部１０をあわせた記憶領域８のサイズでフラッシュを図２に示すように分割した時の最後の分割場所である記憶領域８の先頭アドレスを読み込みアドレスとしてワークメモリ４に記憶する。
【００１７】
読み込みアドレスと書き込みアドレスの初期設定後、ステップＳ３で書き込みアドレスから記憶領域８の全てが”ＦＦｈ”であることを判定し、全てが”ＦＦｈ”であった場合は読み込みアドレスと書き込みアドレスが図４に示す形で設定される。しかしステップＳ３で１バイトでも”ＦＦｈ”でない場合は、ステップＳ４へ移行して読み込みアドレスへ書き込みアドレスをコピーした後書き込みアドレスには記憶領域８のサイズを加算する。さらにステップＳ５で読み込みアドレスがステップＳ１で設定した値と等しいか判定し、等しくない場合はステップＳ３へ移行し処理を繰り返す。
【００１８】
ステップＳ５で等しい場合は、ステップＳ６へ移行し書き込みアドレスが示すアドレスに位置するフラッシュメモリ５の消去単位であるブロックを消去した後、読み込みアドレスと書き込みアドレスが設定される。
【００１９】
次に図７で書き込み記憶領域更新について説明する。この処理は後で説明する１バイトデータの書き込みや読み込みの処理内で実行される処理である。まずステップＳ８でワークメモリ４に一時的に変数Ｉを確保し０を設定する。次にステップＳ９で初期設定された書き込みアドレスに変数Ｉを加算したアドレスが示す１バイトのデータＮを読み込む。そしてステップＳ１０でデータＮがＦＦｈであるか判定し、ＦＦｈである場合はステップＳ１１へ移行し、対応する管理ビットを判定する。
【００２０】
ここで対応する管理ビットを読み出す場合は、記憶領域８が図３に示す形式になっているので書き込みアドレスに対してデータ格納部９のサイズを加算しさらに変数Ｉを８で割った整数値を加算したアドレスから管理情報である１バイトデータを読み込み、さらに変数Ｉを８で割った場合の余りの値がビット位置となり管理ビットを特定する。
【００２１】
ステップＳ１１で管理ビットが１の場合は、ステップＳ１２へ移行し読み込みアドレスに変数Ｉを加算したアドレスで示されるデータＫを読み込み、書き込みアドレスに変数Ｉを加算したアドレスで示される場所へ読み込んだデータＫを書き込みステップＳ１３へ移行する。またステップＳ１０でデータＮがＦＦｈでは無いと判定された場合と、ステップＳ１１で管理ビットが１では無い、すなわち０と判定された場合もステップＳ１３へ移行する。
【００２２】
ステップＳ１３では変数Ｉに１を加算し、ステップＳ１４で変数Ｉがデータ格納部９のサイズと等しくなったか判定し、等しく無い場合はステップＳ９へ移行し以降処理を繰り返す。またステップＳ１４で変数Ｉがデータ格納部９のサイズと等しくなった場合はステップＳ１５へ移行し読み込みアドレスに書き込みアドレスをコピーし、書き込みアドレスには記憶領域８のサイズを加算する。書き込みアドレスの加算結果がフラッシュメモリ５の中の最終の記憶領域８を超えてしまった場合は、フラッシュメモリ５の先頭アドレスを格納する。
【００２３】
そしてステップＳ１６で書き込みアドレスで示される記憶領域が全てＦＦｈであるか判定し、１バイトでもＦＦｈで無い場合はステップＳ１７へ移行し書き込みアドレスで示されるブロックを消去し書き込み記憶領域更新処理を終了する。ステップＳ１６で全てＦＦｈである場合も同様に終了する。
【００２４】
次に図８に従って１バイトデータＢの書き込み要求の処理を説明する。ここで説明する処理はＥＥＰＲＯＭにおいて指定したアドレスへ保存すべきデータ書き込む動作と同等の動作を行うものである。本処理ではＥＥＰＲＯＭであればアドレスとなる値をオフセットとして扱う。まずステップＳ１８で書き込みアドレスに対してデータ格納部のサイズを加算しさらにオフセットを８で割った整数値を加算したアドレスから管理情報である１バイトデータを読み込み、さらにオフセットを８で割った場合の余りの値が示すビット位置の管理ビットＦを読み込む。次にステップＳ１９で管理ビットＦが１ならばステップＳ２０に移行する。ここでステップＳ２０からステップＳ２４までの値は、図５に示す値の例に該当し書き込むデータが元のデータに対してビット毎の変化が無い、または１から０への変化のみかを判断する。
【００２５】
ステップＳ２０で読み込みアドレスにオフセットを加算したアドレスで示される位置のデータＡを読み込む。ステップＳ２１では現在書き込まれているデータＡとこれから書き込むデータＢを比較し、等しければ書き込み要求の処理を終了する。ステップＳ２１で等しく無いと判断された場合はステップ２２へ移行しデータＡとデータＢの排他的論理和を行い結果をデータＣとする。更にデータＣとデータＡで論理積を行い結果をデータＤとする。
そしてステップＳ２３でデータＣとデータＤを比較し等しい場合は、ステップＳ２４へ移行し読み込みアドレスにオフセットを加算したアドレスへデータＢを上書きし処理を終了する。またステップＳ２３で、データＣとデータＤが等しく無いと判断された場合は、ステップＳ２５（図９参照）へ移行し、書き込みアドレスにオフセットを加算したアドレスにデータＢを書き込み、さらに対応するデータの管理ビットＦに０を書き込むと共に、ワークメモリ４に配置する新規更新フラグをセットし処理を終了する。
【００２６】
ステップＳ１９において、データの管理ビットＦが０の場合はステップＳ２６へ移行する（図１０参照）。ステップＳ２６で書き込みアドレスにオフセットを加算したアドレスで示される位置のデータＡを読み込む。ステップＳ２７では、読み込んだデータＡとこれから書き込むデータＢを比較し、等しければ書き込み要求の処理を終了する。ステップＳ２７で等しく無いと判断された場合は、ステップＳ２８へ移行しデータＡと、データＢの排他的論理和を行い結果をデータＣとする。更にデータＣとデータＡで論理積を行い結果をデータＤとする。
【００２７】
そして、ステップＳ２９でデータＣとデータＤを比較し、等しい場合はステップＳ３０へ移行し書き込みアドレスにオフセットを加算したアドレスへデータＢを上書きし処理を終了する。またステップＳ２９でデータＣとデータＤが等しく無いと判断された場合はステップＳ３１（図１１参照）へ移行し、ステップＳ８からの書き込み記憶領域更新処理を実行し、終了後に新規更新フラグをクリアしステップＳ２０へ戻り処理を繰り返す。
【００２８】
次に図１２で１バイトデータの読み込み要求の処理について説明する。１バイトデータ書き込み要求と、同様にオフセットが指定されるものとする。まずステップＳ３２で新規更新フラグがセットされている場合は、ステップＳ８からの書き込み記憶領域更新処理を実行し、終了後に新規更新フラグをクリアしステップＳ３３へ移行する。ステップＳ３３で読み込みアドレスにオフセットを加算したアドレスで示されるデータを読み出して返す事で処理を終了する。
【００２９】
以上の読み込み、書き込みアドレス初期化処理を行った後必要なバイト数だけ１バイトデータの書き込み要求で記憶し、データを利用する場合は１バイトデータの読み込み要求で読み出す事で、書込データの更新時に、更新データによっては読み込み領域に書き込むだけで、管理データを更新する必要が無く、また新規データを書き込んでも管理データの１ビットのみの書き換えで済むので、データ書き込み時、更新時の管理情報検索を容易に行うことができると共に、データサイズにとらわれることなく、データの書き込み／更新及び読み出し処理を行うことかでき、メモリ使用効率を向上させることが出来るという効果が得られる。また消去する場合は最小限の消去しか行わないのでフラッシュメモリの消去回数の制限に対して有効であり、書き込みが失敗しても古いデータを保持することでき、他のメモリ資源を用いることなく、より安全なデータ更新が可能となる。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施形態を実行する装置の概略構成図。
【図２】図１のフラッシュメモリの構成例を示す図。
【図３】図２の記憶領域の詳細構成を示す図。
【図４】図２フラッシュメモリの記憶領域のアクセス開始を示す図。
【図５】上書きを行う際のデータ確認方法を説明する表。
【図６】読み込み・書き込みアドレス初期化フローチャート。
【図７】書き込み記憶領域更新フローチャート。
【図８】１バイトデータ書き込みフローチャート。
【図９】１バイトデータ読み込みフローチャート。
【図１０】１バイトデータ読み込みフローチャート。
【図１１】１バイトデータ読み込みフローチャート。
【図１２】１バイトデータの読み込み要求処理のフローチャート。
【符号の説明】
【００３１】
１ 演算処理装置
２ 制御プログラム
３ 外部インタフェース装置
４ ワークメモリ
５ フラッシュメモリ
６ バス
７ フラッシュメモリの消去単位のブロック
８ 管理する単位の記憶領域
９ 記憶領域内のデータ格納部
１０ 記憶領域内のデータ管理部
１１ データ格納部１バイトに対応したデータ管理部の１ビット
【図１】
2005339450.tif 000003
【図２】
2005339450.tif 000004
【図３】
2005339450.tif 000005
【図４】
2005339450.tif 000006
【図５】
2005339450.tif 000007
【図６】
2005339450.tif 000008
【図７】
2005339450.tif 000009
【図８】
2005339450.tif 000010
【図９】
2005339450.tif 000011
【図１０】
2005339450.tif 000012
【図１１】
2005339450.tif 000013
【図１２】
2005339450.tif 000014