(57)【要約】【課題】  フラッシュメモリにおいてデータの更新回数によらず最新データヘのアクセス時間をほぼ一定にすることができるデータ管理方法を得る。【解決手段】  フラッシュメモリ内に複数個のバッファーを配列状に並べ、データを書き込む際は、複数個のバッファーの先頭のバッファーから順番に、書き込むべきデータを書き込み、次のバッファーに、データを書き込んだバッファーの全アドレスを順番に書き込み、古いデータを新たなデータに書き換える際は、書き込み済みのバッファー群の次にある空きバッファーに新たなデータを書き込み、更に次のバッファーに、読み出すべきデータを書き込んだバッファーの全アドレスを順番に書き込み、その際、古いデータを書き込んだバッファーのアドレスの書込場所に、新たなデータを書き込んだバッファーのアドレスを替わりに書き込む。【選択図】      図１
2006331025.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリ内に複数個のバッファーを配列状に並べ、
データを書き込む際は、前記複数個のバッファーの先頭のバッファーから順番に、書き込むべきデータを書き込み、次のバッファーに、前記データを書き込んだバッファーの全アドレスを順番に書き込み、
古いデータを新たなデータに書き換える際は、書き込み済みのバッファー群の次にある空きバッファーに前記新たなデータを書き込み、更に次のバッファーに、読み出すべきデータを書き込んだバッファーの全アドレスを順番に書き込み、その際、前記古いデータを書き込んだバッファーのアドレスの書込場所に、前記新たなデータを書き込んだバッファーのアドレスを替わりに書き込むことを特徴とするデータ管理方法。
【請求項２】
前記複数個のバッファーと同数の複数個のフラッグを一定のサイズで設け、
前記複数個のフラッグを前記複数個のバッファーと１対１で対応させ、
前記複数個のフラッグの何れかに、読み出すべきデータの全アドレスが書き込まれたバッファーの場所を示す値を入れることを特徴とする請求項１に記載のデータ管理方法。
【請求項３】
前記フラッグの値を検索する際に二分探索を行うことを特徴とする請求項２に記載のデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリのデータ管理方法に関し、特に、データの更新回数によらず最新データヘのアクセス時間をほぼ一定にすることができるデータ管理方法に関するものである。
【背景技術】
【０００２】
データを記録する媒体としてフラッシュメモリがある。フラッシュメモリには、一般に、消去されている状態の論理値は１、書き込まれている場合の論理値は０と記載される。
【０００３】
データを更新する際には、一旦消去（０→１）し、書き込み（１→０）を行なう必要がある。しかし、消去には書き込みの１００倍以上の時間を要するため、データを消去してから新たに書き込む作業には時間がかかる。
【０００４】
そこで、データを更新する際に古いデータの消去を伴わない技術が提案されている（例えば、特許文献１又は特許文献２）。この技術においては、データを更新した際に古いデータに「次の物理アドレス部」を添付し、「次の物理アドレス部」が示す箇所に更新データを書き込む。再度更新する場合はその処理を繰り返す。また、読み出し時には、「次の物理アドレス部」に記載されているアドレスを最初から追跡していくことで最新のデータを見つけ、データの読み出しを行なう。これにより、データの変更時にデータ消去を伴わなくなるため、変更時間を短縮することができる。
【０００５】
【特許文献１】特開２００２−１９６９７６号公報
【特許文献２】特開２００３−１２２６４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、従来技術では、データを更新する度に追跡すべきアドレスの数が増えるため、最新データヘのアクセスに時間がかかるという問題があった。
【０００７】
本発明は、上述のような課題を解決するためになされたもので、その目的は、フラッシュメモリにおいてデータの更新回数によらず最新データヘのアクセス時間をほぼ一定にすることができるデータ管理方法を得るものである。
【課題を解決するための手段】
【０００８】
本発明に係るデータ管理方法は、フラッシュメモリ内に複数個のバッファーを配列状に並べ、データを書き込む際は、複数個のバッファーの先頭のバッファーから順番に、書き込むべきデータを書き込み、次のバッファーに、データを書き込んだバッファーの全アドレスを順番に書き込み、古いデータを新たなデータに書き換える際は、書き込み済みのバッファー群の次にある空きバッファーに新たなデータを書き込み、更に次のバッファーに、読み出すべきデータを書き込んだバッファーの全アドレスを順番に書き込み、その際、古いデータを書き込んだバッファーのアドレスの書込場所に、新たなデータを書き込んだバッファーのアドレスを替わりに書き込む。本発明のその他の特徴は以下に明らかにする。
【発明の効果】
【０００９】
本発明により、読み出すべきデータの全アドレスは書き込み済みのバッファー群の端に常にあることになるため、フラッシュメモリにおいてデータの更新回数によらず最新データヘのアクセス時間をほぼ一定にすることができる。
【発明を実施するための最良の形態】
【００１０】
実施の形態１．
以下、本発明の実施の形態１に係るデータ管理方法について図１を参照しながら説明する。
【００１１】
まず、フラッシュメモリ内に、図１（ａ）に示すように、書き込みが可能な領域であるバッファーＡ，Ｂ，Ｃ・・・を複数個、配列状に並べて設ける。次に、１個のデータを書き込む場合は、例えば、アドレスαにあるバッファーＡにデータ１を書き込む。そして、次のバッファーＢの１番目の書込場所にアドレスαを書き込む。これにより、読み出し時には、バッファーＢにアクセスすることによりアドレスαに書き込んでいるデータ１を読み出すことができる。
【００１２】
また、複数個のデータを書き込む場合は、複数個のバッファーの先頭のバッファーから順番に、書き込むべきデータを１個のバッファーにつき１個ずつ書き込む。書き込むべきデータのサイズが１つのバッファーサイズよりも大きい場合は、１個のデータを複数個のバッファーに書き込むことも可能である。この場合は、書き込んだデータの先頭のアドレスを書き込めばよい。ただし、既にアドレスを書き込んだバッファーが他にあれば、そこから全アドレスをコピーして書き込む。例えば、図１（ｂ）に示すように、アドレスαのバッファーＡにデータ１、アドレスβのバッファーＢにデータ２を書き込む。そして、次のバッファーＣの１番目の書込場所にアドレスαを書き込み、２番目の書込場所にアドレスβを書き込む。
【００１３】
このように複数個のデータを書き込む場合は、次のバッファーに、データを書き込んだバッファーの全アドレスを順番に書き込む。これにより、データを読み出す際に、アドレスを書き込んだバッファーにアクセスすることにより、目的のデータを読み出すことができる。
【００１４】
次に、バッファーＡに書き込まれた古いデータ１を新たなデータ１１に書き換える場合について説明する。まず、図１（ｃ）に示すように、書き込み済みのバッファー群Ａ〜Ｃの次にある空きバッファーＤに新たなデータ１１を書き込む。そして、更に次のバッファーＥに、読み出すべきデータを書き込んだバッファーの全アドレスを順番に書き込む。
【００１５】
その際、古いデータ１を書き込んだバッファーＡのアドレスαの書込場所（１番目）に、新たなデータ１１を書き込んだバッファーＤのアドレスγを替わりに書き込む。これにより、データ１１がデータ１に書き換えられたことを判断することができる。
【００１６】
また、データが新しくなっていないデータ２については、バッファーＣの２番目の書込場所に書き込んであるアドレスβをバッファーＥの２番目の書込場所にそのままコピーする。
【００１７】
これにより、読み出すべきデータの全アドレスは書き込み済みのバッファー群の端に常にあることになるため、フラッシュメモリにおいてデータの更新回数によらず最新データヘのアクセス時間をほぼ一定にすることができる。
【００１８】
実施の形態２．
以下、本発明の実施の形態２に係るデータ管理方法について図面を参照しながら説明する。
【００１９】
まず、図２に示すように、複数個のバッファーＡ，Ｂ，Ｃ・・・と同数の複数個のフラッグａ，ｂ，ｃ・・・を一定のサイズで設け、複数個のフラッグを複数個のバッファーと１対１で対応させる。そして、各フラッグに、対応するバッファーの状態が分かる値を入れる。少なくとも何れかのフラッグに、読み出すべきデータの全アドレスが書き込まれたバッファーの場所を示す値を入れる。
【００２０】
また、書き込み時や読み出し時にフラッグの値を検索する際に二分探索を行う。これによって、更新回数が多くなっても、最新データヘのアクセス時間がほぼ一定となる。
【００２１】
データを書き込む際の流れについて図３を参照しながら説明する。ただし、フラッグは２ビットとし、対応するバッファーに書き込みされていない状態のフラッグの値を「１１」（未使用）とし、バッファーにデータが書き込まれている状態のフラッグの値を「１０」（使用済）とし、バッファーにアドレスが書き込まれている状態のフラッグの値を「００」（アドレス格納済）とする。
【００２２】
まず、フラッグを二分探索し、書き込み可能なバッファーに対応するフラッグを検索する。ここでは、探索条件を「未使用で、先頭にあるフラッグ」とする。図３（ａ）に示すようにフラッグａが「１１」（未使用）の場合、フラッグａに対応するバッファーＡは書き込みが可能である。
【００２３】
次に、図３（ｂ）に示すように、フラッグａを「１１」から「１０」に変更する。そして、図３（ｃ）に示すように、フラッグａに対応するバッファーＡ（アドレスα）にデータを書き込む。１つのバッファーに書き込むデータの数は１個なので、複数のデータを書き込む場合には、次のバッファーに同様の手順でデータを書き込む。ここでは、フラッグｂを「１１」から「１０」にし、バッファーＢ（アドレスβ）にデータ２を書き込む。
【００２４】
全てのデータが書き込まれた後に、データが書き込まれたバッファーの次のバッファーにアドレスを書き込む。ここでは、フラッグｃを「１１」から「１０」にした後、データ１を書き込んだバッファーＡ、データ２を書き込んだバッファーＢのそれぞれのアドレスα、βを、バッファーＣに順番に書き込む。このとき、各アドレスは、バッファーＣのどこに書き込まれたかが分かるようにする。ここでは、図３（ｄ）に示すように、アドレスαをバッファーＣの１番目の書込場所に書き込み、アドレスβをバッファーＣの２番目の書込場所に書き込む。全てのアドレスの書き込みが終わった後に、図３（ｅ）に示すように、フラッグｃを「１０」から「００」にして、バッファーＣにアドレスが書き込まれていることを表示する。
【００２５】
次に、古いデータを新たなデータに書き換える際の流れについて図４を参照しながら説明する。まず、書き換え前は、図４（ａ）に示すように、バッファーＡ（アドレスα）にデータ１が書き込まれ、バッファーＢ（アドレスβ）にデータ２が書き込まれ、バッファーＣの１番目にアドレスα、２番目にアドレスβが書き込まれている。そして、バッファーＡに書き込まれた古いデータ１を新たなデータ１１に書き換えるには以下のようにする。
【００２６】
まず、書き込み時と同様に二分探索を行ない、書き込み可能なバッファーに対応しているフラッグを検索する（ここではフラッグｄ）。そして、図４（ｂ）に示すように、フラッグｄの値を「１１」から「１０」にして、対応するバッファーＤ（アドレスγ）にデータ１１を書き込む。
【００２７】
次に、図４（ｃ）に示すように、データの書き込み後、次のバッファーＥに対応するフラッグｅを「１１」から「１０」にする。そして、バッファーＥの１番目の書込場所にアドレスγを書き込み、２番目の書込場所にアドレスβを書き込む。即ち、バッファーＣにおいてアドレスαを書き込んでいた書込場所（１番目）にアドレスγを書き込む。また、書き換えられていないバッファーＢのアドレスβは、バッファーＥにおいても、バッファーＣにおいてアドレスが書き込まれた書込場所（２番目）に書き込む。その後、図４（ｄ）に示すように、フラッグｅの値を「１０」から「００」に変更し、アドレスを書き込んでいることを表示する。
【００２８】
次に、データを読み出す際の流れについて図５を参照しながら説明する。フラッシュメモリには、図５（ａ）に示すように、バッファーＡ（アドレスα）にデータ１、バッファーＢ（アドレスβ）にデータ２、バッファーＣにアドレスαとアドレスβ、バッファーＤ（アドレスγ）にデータ１を書き換えたデータ１１、バッファーＥにアドレスγとアドレスβが書き込まれている。
【００２９】
データの書き込みと同様に、フラッグを二分探索し、書き込み可能なフラッグを検索する。ここでは、図５（ｂ）に示すように、フラッグｆが未使用で先頭にあるフラッグである。そこで、フラッグｅから先頭に向かってフラッグの値が「００」であるフラッグを１つずつ検索する。そして、図５（ｃ）に示すように、値が「００」のフラッグｅに対応するバッファーＥに書き込んであるアドレスγとアドレスβにアクセスすることで、最新データのデータ１１とデータ２を読み出す。
【００３０】
これにより、実施の形態１と同様に、読み出すべきデータの全アドレスは書き込み済みのバッファー群の端に常にあることになるため、フラッシュメモリにおいてデータの更新回数によらず最新データヘのアクセス時間をほぼ一定にすることができる。また、フラッグの値を検索する際に二分探索を行うことにより、検索時間はフラッグの値の場所によらず一定時間内に収まる。
【００３１】
具体的には、１ｋのバイナリーデータの読み出しに要する時間は、従来技術では５５．４ｍｓだったのに対し、本発明では１７．４ｍｓに短縮することができる。また、１ｋのバイナリーデータの書き込みに要する時間は、従来技術では５７５．４ｍｓだったのに対し、本発明では４９．２ｍｓに短縮することができる。
【００３２】
なお、フラッグは、フラッシュメモリの中に設置するのに限らず、フラッシュメモリ外に設置してもよい。この場合、書き込み処理の完了後に、フラッシュメモリ外にあるフラッグをフラッシュメモリ内に書き写すことによって、バッファーをどこまで使用したのか、という情報を継続的に保持することができる。また、フラッグの状態は２ビットで表示する必要はなく、３段階の状態が表示できればよい。
【００３３】
実施の形態３．
実施の形態１及び２では、データが書き込まれているバッファーのアドレスを参照することによって、最新のデータが書き込まれているバッファーにアクセスしていた。これに対し、実施の形態３では、図６に示すように、バッファーＧにアドレスεとアドレスζを書き込む。このアドレスεにはアドレスαとアドレスβが書き込まれ、アドレスζにはアドレスγとアドレスδが書き込まれている。即ち、読み出すべきデータのアドレスが書き込まれたバッファーＣ，Ｆのアドレスε，ζをバッファーＧに書き込む。これにより、更に多くのデータを参照することができる。
【００３４】
なお、図６では、フラッグｃとフラッグｆの値を「１０」としていている。これはバッファーＣとＦに情報をアドレス情報としてではなく通常の情報として書き込んだ場合である。一方、バッファーＣとＦに情報をアドレス情報として書き込む場合は、対応するフラッグの値を「００」とする。この場合、バッファーに書き込むアドレス情報にアドレスの階層情報を含めることで、アドレス情報が上位層なのか、下位層なのかが分かるようにすればよい。
【図面の簡単な説明】
【００３５】
【図１】本発明の実施の形態１に係るデータ管理方法を説明するための図である。
【図２】本発明の実施の形態２に係るデータ管理方法で用いるバッファー及びフラッグを示す図である。
【図３】本発明の実施の形態２に係るデータ管理方法におけるデータを書き込む際の流れを説明するための図である。
【図４】本発明の実施の形態２に係るデータ管理方法における古いデータを新たなデータに書き換える際の流れを説明するための図である。
【図５】本発明の実施の形態２に係るデータ管理方法におけるデータを読み出す際の流れを説明するための図である。
【図６】本発明の実施の形態３に係るデータ管理方法を説明するための図である。
【図１】
2006331025.tif 000003
【図２】
2006331025.tif 000004
【図３】
2006331025.tif 000005
【図４】
2006331025.tif 000006
【図５】
2006331025.tif 000007
【図６】
2006331025.tif 000008