(57)【要約】【課題】複数のセクタを使用してデータを保存するとともに、常時一定量の書き込みデータをフラッシュメモリ内に確保しておくことができるフラッシュメモリの制御システムを提供する。【解決手段】  複数のセクタを使用してデータの書き込みを行うフラッシュメモリの制御システムにおいて、  各セクタの状態を示す状態フラグに基づいてデータの書き込みを行う書き込み制御部を有することを特徴とする。【選択図】図２
2011248834.tif 000002
【特許請求の範囲】
【請求項１】
複数のセクタを使用してデータの書き込みを行うフラッシュメモリの制御システムにおいて、
各セクタの状態を示す状態フラグに基づいてデータの書き込みを行う書き込み制御部を有することを特徴とするフラッシュメモリの制御システム。
【請求項２】
前記状態フラグは各セクタの一部として設けられていることを特徴とする請求項１に記載のフラッシュメモリの制御システム。
【請求項３】
前記書き込み制御部は、各セクタの書き込み可能データ数と、次に書き込むセクタ名とを含むセクタ制御情報を保持することを特徴とする請求項１または２に記載のフラッシュメモリの制御システム。
【請求項４】
前記書き込み制御部は、
前記状態フラグを参照して書き込み可能なセクタを検索し、発見されたセクタに対してデータの書き込みを行い、
書き込み可能なセクタが発見されない場合には、前記セクタ制御情報を参照して最も古いデータが保存されたセクタ内のデータを消去し、そのセクタに対してデータの書き込みを行うことを特徴とする請求項１〜３のいずれかに記載のフラッシュメモリの制御システム。
【請求項５】
前記状態フラグは、
そのセクタが未だ制御されていない初期状態であることを示す第１の状態と、
そのセクタ内のデータがすべて消去された状態であることを示す第２の状態と、
そのセクタがデータの書き込み中であることを示す第３の状態と、
そのセクタが最大容量までデータが書き込まれた状態であることを示す第４の状態と、
を備えることを特徴とする請求項１〜４のいずれかに記載のフラッシュメモリの制御システム。
【請求項６】
前記状態フラグは、前記第１〜第４の状態までセクタ単位でデータを消去することなく順次状態遷移が可能な値を設定値として有することを特徴とする請求項５に記載のフラッシュメモリの制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のセクタを使用してデータの書き込みを行うフラッシュメモリの制御システムに関する。
【背景技術】
【０００２】
従来より、制御部がバイト単位で取得したデータを書き込む記憶媒体としてフラッシュメモリが使用されている。
【０００３】
一般的にフラッシュメモリには以下の特徴がある。
１）セクタと呼ばれるブロック単位で構成されている。
２）バイト単位でのデータの書き換えはできない。データを書き換える場合には一旦セクタ単位でデータを消去する必要がある。
３）データを消去するとセクタの全ビットが“１”となる。
４）図１２に示すように、ビット単位で“１”から“０”へ変更するのみのデータ変更である場合には、セクタ単位でデータを消去することなくデータの書き換えが可能である。
下記非特許文献１には、セクタ単位でのデータ消去についてなど、フラッシュメモリの概要が記載されている。
【０００４】
図１３は従来のフラッシュメモリの制御システムの一例を示すブロック図である。
図１３の制御システム１００において、制御部１０１は、周期的にバイト単位で取得した一定長のデータ１０３をフラッシュメモリ１０２に書き込む。そして、必要に応じてフラッシュメモリ１０２からバイト単位で一定長のデータ１０３を読み出し、処理を行う。制御部１０１は、処理に必要なデータを保存するメモリ領域１０１ａとＲＯＭ領域１０１ｂを備えている。
【０００５】
データ１０３は、フラッシュメモリ内にてデータが書き込まれている部分と書き込まれていない部分とを判別できるようにするために、全ビット“１”とならないようなデータ構造をとる。
【０００６】
図１４はフラッシュメモリ１０２の詳細を示す図である。本図では、フラッシュメモリ１０２がセクタ１〜セクタ１０で構成された例を示している。これらのセクタの中から１つのセクタ（たとえばセクタ１０）を使用して、取得したデータ１０３の書き込みを行う。
【０００７】
電源ＯＮ等による起動時に、制御部はセクタ１０内で最初にデータを書き込むアドレスを検索する。発見されたアドレスは、制御部１０１のメモリ領域１０１ａに用意したデータ書き込みポインタＷＰＴに設定される。
【０００８】
セクタはデータが消去されると全ビットが“１”になる。そのため、データ１０３を書き込むアドレスは、データ１０３の一定長を単位とし、セクタ１０内で全ビットが“１”になっている最初のアドレスを先頭とした部分になる。
【０００９】
制御部１０１は、データを書き込むごとに書き込みポインタＷＰＴをインクリメントし、順次データをセクタ１０に書き込んで行く。セクタ１０の最終アドレスまでデータを書き込む（すなわち、セクタ１０の最大容量までデータを書き込む）と、制御部１０１はセクタ１０へのデータの書き込みを終了する。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】「フラッシュメモリガイドブック」、Spansion Japan株式会社、2008年9月25日、p4-5
【発明の概要】
【発明が解決しようとする課題】
【００１１】
セクタ１０の最大容量までデータが書き込まれた状態でさらに新しいデータを書き込む場合には、書き込み領域を作るために一旦セクタ１０のデータを全て消去し、その上で新たなデータを書き込む必要がある。
【００１２】
しかしながら、フラッシュメモリ１０２に保存するデータ１０３が、たとえば操作履歴やアラーム状態のログデータ等のように時系列で保存する必要がある場合には、セクタ１０を消去することによりそれまでにセクタ１０に書き込まれたデータが全て失われることとなり、データとしての価値が損なわれてしまう。
【００１３】
本発明は、従来の問題をなくし、複数のセクタを使用してデータを保存するとともに、常時一定量の書き込みデータをフラッシュメモリ内に確保しておくことができるフラッシュメモリの制御システムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
このような課題を解決するために、請求項１に記載の発明は、
複数のセクタを使用してデータの書き込みを行うフラッシュメモリの制御システムにおいて、
各セクタの状態を示す状態フラグに基づいてデータの書き込みを行う書き込み制御部を有することを特徴とする。
【００１５】
請求項２に記載の発明は、
請求項１に記載のフラッシュメモリの制御システムにおいて、
前記状態フラグは各セクタの一部として設けられていることを特徴とする。
【００１６】
請求項３に記載の発明は、
請求項１または２に記載のフラッシュメモリの制御システムにおいて、
前記書き込み制御部は、各セクタの書き込み可能データ数と、次に書き込むセクタ名とを含むセクタ制御情報を保持することを特徴とする。
【００１７】
請求項４に記載の発明は、
請求項１〜３のいずれかに記載のフラッシュメモリの制御システムにおいて、
前記書き込み制御部は、
前記状態フラグを参照して書き込み可能なセクタを検索し、発見されたセクタに対してデータの書き込みを行い、
書き込み可能なセクタが発見されない場合には、前記セクタ制御情報を参照して最も古いデータが保存されたセクタ内のデータを消去し、そのセクタに対してデータの書き込みを行うことを特徴とする。
【００１８】
請求項５に記載の発明は、
請求項１〜４のいずれかに記載のフラッシュメモリの制御システムにおいて、
前記状態フラグは、
そのセクタが未だ制御されていない初期状態であることを示す第１の状態と、
そのセクタ内のデータがすべて消去された状態であることを示す第２の状態と、
そのセクタがデータの書き込み中であることを示す第３の状態と、
そのセクタが最大容量までデータが書き込まれた状態であることを示す第４の状態と、
を備えることを特徴とする。
【００１９】
請求項６に記載の発明は、
請求項５に記載のフラッシュメモリの制御システムにおいて、
前記状態フラグは、前記第１〜第４の状態までセクタ単位でデータを消去することなく順次状態遷移が可能な値を設定値として有することを特徴とする。
【発明の効果】
【００２０】
本発明によれば、
複数のセクタを使用してデータの書き込みを行うフラッシュメモリの制御システムにおいて、各セクタの状態を示す状態フラグに基づいてデータの書き込みを行う書き込み制御部を有することにより、
複数のセクタを使用してデータを保存するとともに、常時一定量の書き込みデータをフラッシュメモリ内に確保しておくことができるフラッシュメモリの制御システムを提供できる。
【図面の簡単な説明】
【００２１】
【図１】本発明のフラッシュメモリの制御システムの一実施例を示す図である。
【図２】図１のフラッシュメモリの詳細を示す図である。
【図３】セクタの状態遷移を示す図である。
【図４】状態フラグの設定値を示す図である。
【図５】セクタ制御情報の例を示す図である。
【図６】セクタ１，２へのデータの書き込み処理のフローを示す図である。
【図７】セクタの書き込みと消去を示す図である。
【図８】データの書き込みセクタとして４セクタを割り当てた例を示す図である。
【図９】図８に示す書き込みセクタ構成における、セクタの書き込みと消去を示す図である。
【図１０】データの書き込みセクタに不連続なセクタを含む例を示す図である。
【図１１】セクタ状態と読み出すデータの先頭アドレスおよびデータ数の関係を示す図である。
【図１２】フラッシュメモリのデータ書き換えについての説明図である。
【図１３】従来のフラッシュメモリの制御システムの一例を示すブロック図である。
【図１４】図１３に示すフラッシュメモリの詳細を示す図である。
【発明を実施するための形態】
【実施例１】
【００２２】
図１は、本発明のフラッシュメモリの制御システムの一実施例を示す図である。
図１の制御システム１において、制御部１１は、周期的にバイト単位で取得した一定長のデータ１３をフラッシュメモリ１２に書き込む。そして、必要に応じてフラッシュメモリ１２からバイト単位で一定長のデータ１３を読み出し、処理を行う。制御部１１は、処理に必要なデータを保存するメモリ領域１１ａとＲＯＭ領域１１ｂを備えている。
【００２３】
データ１３は、フラッシュメモリ内にてデータが書き込まれている部分と書き込まれていない部分とを判別できるようにするために、全ビット“１”とならないようなデータ構造をとる。
【００２４】
図２はフラッシュメモリ１２の詳細を示す図である。本図では、フラッシュメモリ１２がセクタ１〜セクタ１１で構成された例を示している。本実施例では、これらのセクタのうちセクタ１とセクタ２をデータ書き込みセクタとして使用し、データ１３の保存を行う。
【００２５】
セクタ１およびセクタ２には、それぞれのセクタの状態を示す２つの状態フラグを設ける。各セクタの先頭アドレスを「状態フラグ１」、最終アドレスを「状態フラグ２」として、フラグの役割を担わせる。先頭アドレスと最終アドレス以外の中間のアドレスは、データ書き込み用のアドレスとして用いる。
【００２６】
セクタ１に書き込み可能なデータ数はデータＤ１１〜データＤ１Ｎ１までのＮ１個、セクタ２に書き込み可能なデータ数はデータＤ２１〜データＤ２Ｎ２までのＮ２個とする。セクタ１の状態フラグ１はＦＬＧ１１、状態フラグ２はＦＬＧ１２とする。セクタ２の状態フラグ１はＦＬＧ２１、状態フラグ２はＦＬＧ２２とする。セクタ１およびセクタ２は、両セクタに共通して用いられる書き込みポインタＷＰＴにて指定されるアドレスにデータが書き込まれる。
【００２７】
状態フラグ１，２には、「初期状態」、「クリア状態」、「書き込み状態」、「ＦＵＬＬ状態」の４つの状態を用意する。
「初期状態」：セクタ内が未制御の状態、または、セクタ内のデータを消去中の状態。
「クリア状態」：セクタ内のデータがすべて消去され、その後まだ１度もデータが書き込まれていない状態。
「書き込み状態」：最初のデータが書き込まれてから、セクタの最大容量に至るまでの状態。
「ＦＵＬＬ状態」：セクタの最大容量までデータが書き込まれ、新たなデータの書き込みができなくなった状態。
【００２８】
図３はセクタの状態遷移を示す図である。フラッシュメモリが未制御の状態（フラッシュメモリは出荷時の状態のまま、すなわち一度もデータが書かれていない状態）から本フローはスタートする。
未制御の状態は、セクタにデータが書き込まれていないため「初期状態」と定義し、データの消去を実行し、「クリア状態」に遷移する。この状態でデータの書き込みが可能な状態になる。データの書き込みが開始されると、セクタは「クリア状態」から「書き込み状態」に遷移する。データの書き込み中はこの「書き込み状態」が保持される。セクタの最大容量までデータが書き込まれ、新たなデータの書き込みができなくなると、セクタは「ＦＵＬＬ状態」に遷移する。新たなデータを書き込むためには、それまでにセクタ内に書き込まれたデータを消去する必要がある。データの消去が開始されると、セクタは「初期状態」に遷移する。データ消去が完了すると「クリア状態」に遷移し、再びデータの書き込みが可能な状態となる。
【００２９】
状態フラグ１，２は各書き込みセクタの一部として設ける。すなわち、状態フラグを不揮発性メモリであるフラッシュメモリ内に設けることにより、一旦電源をＯＦＦして再起動したような場合であっても、再起動前の状態を継続して動作可能となる。
【００３０】
なお、状態フラグ１，２はセクタデータの一部として設けられるため、データを書き換える場合にはセクタ単位でデータを消去する必要があるというフラッシュメモリの制約を受ける。この制約を回避するため、状態フラグ１，２の設定値はセクタ単位でのデータ消去を行わずともデータの書き換えが可能な値とする。すなわち、セクタの状態変化によりフラグ情報を書き換える場合に、セクタ単位でのデータ消去が必要ない値とした。
【００３１】
図４は状態フラグの設定値を示す図である。「初期状態」では、状態フラグ１，２ともに０ｘＦＦＦＦＦＦＦＦ（１６進数）を設定値とする。「クリア状態」では状態フラグ１は０ｘ７７７７７７７７、状態フラグ２は０ｘＦＦＦＦＦＦＦＦとする。「書き込み状態」では、状態フラグ１は０ｘ３３３３３３３３、状態フラグ２は０ｘＦＦＦＦＦＦＦＦとする。「ＦＵＬＬ状態」では、状態フラグ１は０ｘ３３３３３３３３、状態フラグ２は０ｘ７７７７７７７７とする。
【００３２】
セクタ内が未制御のとき、またはセクタの消去中は、セクタ内のデータが自動的に全ビット“１”となる。そのため、「初期状態」では状態フラグ１，２ともに０ｘＦＦＦＦＦＦＦＦ（１６進数）を設定値とする。
【００３３】
セクタの消去が終了した時点で、制御部１１は書き込みポインタＷＰＴを状態フラグ１である先頭アドレスに設定し、値を０ｘ７７７７７７７７に書き換える。なお、１６進数のＦはビットデータでは“１１１１”であり、１６進数の７は“０１１１”である。１６進数のＦ（“１１１１”）を７（“０１１１”）に変更するのは、“１”のビットを“０”に書き換えるだけの変更であるため、セクタの消去を行うことなくデータの書き換えが可能である。同様に、１６進数の７（“０１１１”）を３（“００１１”）に変更するのも、セクタの消去を行うことなく可能である。
【００３４】
制御部１１には、図５に示すようなセクタ制御情報を保持させておく。図５の（ａ）は書き込み対象となるセクタ、図５の（ｂ）は各書き込み対象セクタの制御情報の内容を示している。セクタの制御情報には、各セクタのセクタ種別（先頭セクタ、中間セクタ、最終セクタ）、次に書き込むセクタ名、書き込み可能なデータ数が含まれている。
先頭セクタは書き込み対象セクタのうち最初にデータの書き込みを行うセクタ、最終セクタは最後にデータの書き込みを行うセクタ、中間セクタは先頭セクタと最終セクタの間のセクタである。
【００３５】
図５の（ｂ）において、セクタ１はセクタ種別が先頭セクタ、次に書き込むセクタはセクタ２、書き込み可能なデータ数はＮ１個となっている。また、セクタ２はセクタ種別が最終セクタ、次に書き込むセクタはセクタ２、書き込み可能なデータ数はＮ２個となっている。なお、図５の例では、書き込み対象セクタが２つであるため、中間セクタがない。
【００３６】
図６はセクタ１，２へのデータの書き込み処理のフローを示す図である。
ユーザによりデータの書き込み動作を伴う作業が指示されると本フローはスタートする。
【００３７】
まず、ステップＳ１において、制御部１はセクタ１，２のセクタ状態をチェックし、「初期状態」のセクタがあるかどうかをチェックする。具体的には、制御部１はセクタ１，２の状態フラグ（状態フラグ１，２）を確認し、「初期状態」となっているセクタがあるかを検索する。「初期状態」のセクタが発見された場合には、ステップＳ２に進む。「初期状態」のセクタが発見されなかった場合には、ステップＳ４に進む。
【００３８】
ステップＳ２では、「初期状態」のセクタ内のデータを消去し、ステップＳ３に進む。
ステップＳ３では、ステップＳ２でデータを消去したセクタのセクタ状態を「クリア状態」に設定し、ステップＳ４に進む。
【００３９】
ステップＳ４では、全てのセクタ（すなわち、セクタ１、２）が「クリア状態」になっているかをチェックする。セクタ１，２が両方とも「クリア状態」である場合にはステップＳ５に進み、それ以外の場合にはステップＳ７に進む。
【００４０】
セクタ１，２が「クリア状態」の場合には、書き込み対象セクタであるセクタ１，２内のデータが全て消去され、かつ消去後まだ一度もデータが書き込まれていない状態である。ステップＳ５では、制御部１１はセクタ１（書き込み先頭セクタ）のセクタ状態を「書き込み状態」に設定する。具体的には、制御部１１はセクタ１の先頭アドレスに書き込みポインタＷＰＴを設定するとともに、この先頭アドレスに割り振られている状態フラグ１を「書き込み状態」の設定値に書き換える。その後ステップＳ６に進む。
【００４１】
ステップＳ６では、制御部１１は書き込みポインタＷＰＴをセクタ１のデータ先頭アドレスに設定し、ステップＳ８に進む。
【００４２】
ステップＳ７では、まず「書き込み状態」となっているセクタを検索する。「書き込み状態」のセクタが発見された場合には、そのセクタでデータがまだ書き込まれていない最初のアドレスを検索する。アドレスの検索は全ビット“１”となっているアドレスを検索することにより行う。制御部１１は、発見された未書き込みアドレスに書き込みポインタＷＰＴを設定し、ステップＳ８に進む。
これにより、再起動等した場合であっても、再起動前の状態を継続して動作させることが可能となる。また、書き込みポインタＷＰＴを設定すべきアドレス検索の対象も、全セクタではなく、「書き込み状態」のセクタのみでよいため、検索時間を短縮できる。
【００４３】
ステップＳ７において、「書き込み状態」のセクタが発見されない場合には、「クリア状態」のセクタを検索する。発見されたセクタのセクタ状態を「書き込み状態」に変更し、書き込みポインタＷＰＴをそのセクタのデータ先頭アドレスに設定し、ステップＳ８に進む。
【００４４】
ステップＳ８では、制御部１１は、書き込みポインタＷＰＴが設定されたアドレスにデータ１３のデータを書き込み、ステップＳ９に進む。
ステップＳ９では、制御部１１は、書き込みポインタＷＰＴをインクリメントし、書き込みアドレスを次のアドレスに設定し、ステップＳ１０に進む。
【００４５】
ステップＳ１０では、そのセクタの最大容量までデータを書き込んだかどうかをチェックする。具体的には、書き込みポインタＷＰＴに設定された値とそのセクタに書き込み可能なデータ数とを比較し、書き込みポインタＷＰＴに設定された値が書き込み可能データ数を超える場合にはステップＳ１１に進む。書き込みポインタＷＰＴに設定された値が書き込み可能データ数を超えていない場合には、ステップＳ８に戻り、そのセクタにデータの書き込みを繰り返す。
【００４６】
ステップＳ１１では、それまでデータを書き込んでいたセクタのセクタ状態を「ＦＵＬＬ状態」に設定する。具体的には、そのセクタの状態フラグ２を「ＦＵＬＬ状態」の設定値に書き換える。その後ステップＳ１２に進む。
【００４７】
ステップＳ１２では、制御部１１はセクタ制御情報を参照して次の書き込みセクタを把握し、次の書き込みセクタのセクタ状態を確認する。具体的には、現在の書き込みセクタがセクタ１であった場合には次の書き込みセクタとしてセクタ２のセクタ状態を確認し、現在の書き込みセクタがセクタ２であった場合にはセクタ１のセクタ状態を確認する。次の書き込みセクタが「ＦＵＬＬ状態」である場合にはステップＳ１３に進み、それ以外の場合にはステップＳ１５に進む。
【００４８】
ステップＳ１３では、次の書き込みセクタが「ＦＵＬＬ状態」のため、新たなデータを書き込めるようにするよう、次の書き込みセクタ内のデータを消去し、ステップＳ１４に進む。
【００４９】
ステップＳ１４では、消去した次の書き込みセクタのセクタ状態を「クリア状態」に設定する。具体的には、そのセクタの状態フラグ１を「クリア状態」の設定値に書き換える。その後Ｓ１５に進む。
【００５０】
ステップＳ１５では、次の書き込みセクタのセクタ状態を「書き込み状態」に設定し、ステップＳ１６に進む。具体的には、そのセクタの状態フラグ１を「書き込み状態」の設定値に書き換える。その後ステップＳ１６に進む。
【００５１】
ステップＳ１６では、書き込みポインタＷＰＴを次の書き込みセクタのデータ先頭アドレスに設定し、ステップＳ８に戻る。以降、ステップＳ８〜ステップＳ１６を繰り返すことで、データ１３のデータを順次フラッシュメモリに保存していく。
【００５２】
図７はセクタの書き込みと消去を示す図である。
図７の（ａ）は、セクタ１，２が両方とも「クリア状態」となっている状態である。書き込みポインタＷＰＴは先頭セクタとなるセクタ１の先頭アドレスに設定される（図７の（ａ））。
【００５３】
セクタ１にデータ１３が書き込まれていき、書き込みポインタＷＰＴもインクリメントされていく（図７の（ｂ））。セクタ１の最大容量までデータが書き込まれると、セクタ１は「ＦＵＬＬ状態」となり、引き続き次の書き込みセクタであるセクタ２にデータ１３が書き込まれていく（図７の（ｃ））。
【００５４】
セクタ２にも最大容量までデータが書き込まれると、セクタ２も「ＦＵＬＬ状態」となる（図７の（ｄ））。セクタ２の次の書き込みセクタはセクタ１である。そこで、制御部１１は、セクタ１に保存されたデータをセクタ単位で消去し、一旦セクタ１を「クリア状態」に戻す（図７の（ｅ））。その後、セクタ１に新たなデータの書き込みを行う（図７の（ｆ））。
【００５５】
セクタ１の最大容量までデータが書き込まれると、セクタ１は再び「ＦＵＬＬ状態」になる（図７の（ｇ））。セクタ１の次の書き込みセクタはセクタ２である。そこで、制御部１１は、セクタ２に保存されたデータをセクタ単位で消去し、一旦セクタ２を「クリア状態」に戻す（図７の（ｈ））。その後、セクタ２に新たなデータの書き込みを行う（図７の（ｉ））。
【００５６】
セクタ２が再び「ＦＵＬＬ状態」に達すると（図７の（ｊ））、再度セクタ１を消去し、セクタ１に新たなデータの書き込みを行う（図７の（ｅ））。以降、図７の（ｅ）〜（ｊ）までの流れを繰り返す。
【００５７】
このように、制御部１１にてデータ書き込みセクタのセクタ状態を把握し、取得時間が古いデータが書き込まれているセクタのみデータを消去して新たな書き込みを行い、他のセクタのデータは保存する。これにより、常時一定量のデータをフラッシュメモリ内に残しておくことができる。このような制御を可能とするために、フラッシュメモリの書き込み対象セクタに状態フラグ１，２を用意し、制御部１１内にセクタ制御情報を設けている。
【００５８】
本実施例は以上のように構成され、
複数のセクタを使用してデータ１３の書き込みを行うフラッシュメモリの制御システムにおいて、書き込みセクタ１，２の状態を示す状態フラグＦＬＧ１１〜ＦＬＧ２２に基づいてデータ１３の書き込みを行う書き込み制御部１１を有するため、
常時一定量の書き込みデータをフラッシュメモリ内に確保しておくことができるフラッシュメモリの制御システムを提供できる。
【００５９】
取得時間が最も古いデータが保存されたセクタを消去して新たなデータを書き込み、取得時間が新しいデータは保存されるため、たとえば操作履歴やアラーム状態のログデータ等のように時系列で保存する必要があるデータの管理が可能となる。
【００６０】
また、状態フラグＦＬＧ１１〜ＦＬＧ２２は書き込みセクタ１，２の一部として設けられているため、一旦電源をＯＦＦして再起動したような場合であっても、再起動前の状態を継続して動作可能となる。
【００６１】
なお、本実施例では、データの書き込みセクタとしてフラッシュメモリ内の２セクタを割り当てた例で説明したが、書き込みセクタの数はより多くてもよい。
【００６２】
図８はデータの書き込みセクタとして４セクタを割り当てた例を示す図である。図８の（ａ）は書き込み対象セクタ、図８の（ｂ）は書き込み対象セクタの制御情報の内容を示している。図８では、フラッシュメモリ内のセクタ１〜セクタ４を書き込みセクタに割り当て、セクタ１を書き込み先頭セクタ、セクタ２，３を中間セクタ、セクタ４を最終セクタとしている。
【００６３】
図９は、図８に示す書き込みセクタ構成における、セクタの書き込みと消去を示す図である。書き込み先頭セクタであるセクタ１からデータ１３を書き込む（図９の（ａ））。セクタ１が「ＦＵＬＬ状態」になると、引き続きセクタ２（図９の（ｂ））、セクタ３（図９の（ｃ））、セクタ４（図９の（ｄ））と順次データを書き込んで行く。セクタ４の次に書き込むセクタはセクタ１であるが、セクタ１はすでに「ＦＵＬＬ状態」となっている。そのため、さらに新たなデータを書き込む場合には、セクタ１を消去し、そこに新たなデータを書き込む（図９の（ｅ））。さらにセクタ１が「ＦＵＬＬ状態」になった場合には、セクタ２を消去した上で新たなデータを書き込む（図９の（ｆ））。以降、次に書き込むセクタが「ＦＵＬＬ状態」であれば、そのセクタに書き込まれているデータを消去し、そこに新しいデータを書き込む制御を繰り返す（図９の（ｇ）、（ｈ））。
これにより、取得時間が最も古いデータが書き込まれているセクタのみが消去されるとともに、一旦セクタ１〜４までデータが書き込まれた後は、常時一定量のデータ（３セクタ分）をフラッシュメモリ内に残しておくことができる。
【００６４】
なお、図８の例では４つの連続するセクタを書き込みセクタとして使用したが、書き込みセクタは必ずしも連続していなくてもよい。
【００６５】
図１０はデータの書き込みセクタに不連続なセクタを含む例を示す図である。図１０の（ａ）は書き込み対象セクタ、図１０の（ｂ）は書き込み対象セクタの制御情報の内容を示している。図１０では、フラッシュメモリ内のセクタ２，５，７，１０，１１を書き込みセクタに割り当て、セクタ２を書き込み先頭セクタ、セクタ５，７，１０を中間セクタ、セクタ１１を最終セクタとしている。
【００６６】
図１０のように書き込みセクタが不連続であっても、制御部１１に図１０の（ｂ）のようなセクタ制御情報を保持させることによって、割り当てる書き込みセクタのセクタ数、セクタ容量、セクタ配置に制限なく、本発明のフラッシュメモリ制御システムを適用できる。
【００６７】
なお、フラッシュメモリに書き込まれたデータを読み出すには、書き込みデータの先頭アドレスと書き込みデータ数を取得することが必要となる。これらの情報は状態フラグと書き込みポインタＷＰＴの位置から取得可能である。
【００６８】
図１１は、セクタ状態と読み出すデータの先頭アドレスおよびデータ数の関係を示す図である。図１１の（ａ１）〜（ａ５）はセクタ状態を示し、図１１の（ｂ）は（ａ１）〜（ａ５）の各セクタ状態における読み出すデータの先頭アドレスとデータ数をまとめたものである。図１１の（ａ１）〜（ａ５）において、書き込みポインタＷＰＴはそれぞれセクタ１、セクタ３、セクタ４、セクタ１、セクタ３内のアドレスに設定され、そのセクタ内にＮ個のデータが書き込まれた状態になっているものとする。
【００６９】
図１１の（ａ１）の状態では、次の書き込みセクタは「クリア状態」であることから、セクタ２〜セクタ４には一切データが書き込まれていないことがわかる。したがって、データの読み出しを行う際は、データの先頭アドレスはセクタ１のデータ先頭アドレス、データ数はセクタ１に書き込んだデータ数Ｎであることが把握できる。
【００７０】
図１１の（ａ２）の状態では、次の書き込みセクタは「クリア状態」であることから、セクタ１〜セクタ３までデータが書き込まれており、かつ、セクタ４には一切データが書き込まれていないことがわかる。したがって、データの読み出しを行う際は、データの先頭アドレスはセクタ１のデータ先頭アドレス、データ数はセクタ１，２に書き込んだデータ数＋セクタ３に書き込んだデータ数Ｎの合計（Ｎ１＋Ｎ２＋Ｎ）として求められる。
【００７１】
図１１の（ａ３）の状態では、次の書き込みセクタは「ＦＵＬＬ状態」であることから、セクタ１〜セクタ３までデータが書き込まれていることがわかる。したがって、データの読み出しを行う際は、データの先頭アドレスはセクタ１のデータ先頭アドレス、データ数はセクタ１〜３に書き込んだデータ数＋セクタ４に書き込んだデータ数Ｎの合計（Ｎ１＋Ｎ２＋Ｎ３＋Ｎ）として求められる。
【００７２】
図１１の（ａ４）の状態では、次の書き込みセクタは「ＦＵＬＬ状態」であることから、セクタ２〜セクタ４までデータが書き込まれていることがわかる。したがって、データの読み出しを行う際は、データの先頭アドレスはセクタ２のデータ先頭アドレス、データ数はセクタ２〜４に書き込んだデータ数＋セクタ１に書き込んだデータ数Ｎの合計（Ｎ２＋Ｎ３＋Ｎ４＋Ｎ）として求められる。
【００７３】
図１１の（ａ５）の状態では、次の書き込みセクタは「ＦＵＬＬ状態」であることから、セクタ４，１，２にデータが書き込まれていることがわかる。したがって、データの読み出しを行う際は、データの先頭アドレスはセクタ４のデータ先頭アドレス、データ数はセクタ４，１，２に書き込んだデータ数＋セクタ３に書き込んだデータ数Ｎの合計（Ｎ４＋Ｎ１＋Ｎ２＋Ｎ）として求められる。
【００７４】
このように、本発明では、データの読み出しにあたり、読み出すデータの先頭アドレスとデータ数を、書き込み制御で使用する書き込みポインタＷＰＴとセクタ状態から取得でき、読み出し制御専用にポインタ等を用意する必要がない。そのため、制御部１１はデータの書き込みに集中でき、書き込み制御の時間短縮を図ることが可能となる。
【００７５】
なお、本実施例における制御部１１は特許請求の範囲における書き込み制御部に相当する。また、本実施例におけるセクタの「初期状態」は特許請求の範囲における「第１の状態」に相当し、「クリア状態」は「第２の状態」に相当し、「書き込み状態」は「第３の状態」に相当し、「ＦＵＬＬ状態」は「第４の状態」に相当する。
【符号の説明】
【００７６】
１１    制御部
１２    フラッシュメモリ
１３    データ
【図１】
2011248834.tif 000003
【図２】
2011248834.tif 000004
【図３】
2011248834.tif 000005
【図４】
2011248834.tif 000006
【図５】
2011248834.tif 000007
【図６】
2011248834.tif 000008
【図８】
2011248834.tif 000009
【図１０】
2011248834.tif 000010
【図１２】
2011248834.tif 000011
【図１３】
2011248834.tif 000012
【図１４】
2011248834.tif 000013
【図７】
2011248834.tif 000014
【図９】
2011248834.tif 000015
【図１１】
2011248834.tif 000016