(57)【要約】【課題】記憶効率の低下を抑制する情報管理装置を提供すること。【解決手段】情報管理装置は、フラッシュメモリと書込部とを備える。フラッシュメモリは、データの消去及び書き込みが可能な第１の領域２００において、データを消去する処理が行われた領域が、データが書き込まれる前の状態である第１の状態となり、第１の状態であるブランク領域にデータを書き込む処理が行われると、データが書き込まれた後の状態である第２の状態になるように構成される。書込部は、複数のデータをブランク領域で区分して第１の領域２００に順に書き込むように構成される。【選択図】図５
2018045595.tif 000002
【特許請求の範囲】
【請求項１】
データの消去及び書き込みが可能な記憶領域において、データを消去する処理が行われた領域が、データが書き込まれる前の状態である第１の状態となり、前記第１の状態の領域であるブランク領域にデータを書き込む処理が行われると、データが書き込まれた後の状態である第２の状態になるように構成された不揮発性メモリ（６）と、
複数のデータを前記ブランク領域で区分して前記記憶領域に順に書き込むように構成された書込部（２，Ｓ３２，Ｓ３６，Ｓ９２，Ｓ９４）と、
を備えた情報管理装置（１）。
【請求項２】
請求項１に記載の情報管理装置であって、
前記記憶領域から読出対象のデータを読み出すように構成された読出部（２，Ｓ７１〜Ｓ７５）を更に備え、
前記読出部は、前記記憶領域から前記ブランク領域を検出することにより、前記読出対象のデータを読み出すように構成された（２，Ｓ７１）、情報管理装置。
【請求項３】
請求項２に記載の情報管理装置であって、
前記書込部は前記データの先頭にデータを識別する識別子を書き込むように構成され、
前記読出部は前記データの先頭の前記識別子に基づき前記読出対象のデータを読み出すように構成された（２，Ｓ７４）、情報管理装置。
【請求項４】
請求項１から請求項３までのいずれか１項に記載の情報管理装置であって、
前記記憶領域において、前記ブランク領域が第１の単位数以上連続している部分を前記記憶領域の先頭から順に検出するように構成されたブランク検出部（２，Ｓ２１，Ｓ２２，Ｓ８１，Ｓ８２）を更に備え、
前記書込部は、前記ブランク検出部によって検出された部分を書き込み開始位置として、前記第１の単位数よりも少ない第２の単位数の前記ブランク領域に続けてデータを書き込むように構成された、情報管理装置。
【請求項５】
請求項４に記載の情報管理装置であって、
書込対象のデータを書き込むことにより矛盾することになる有効なデータを検出するように構成されたデータ検出部（２，Ｓ２３，Ｓ２４，Ｓ８３，Ｓ８４）と、
前記データ検出部により前記有効なデータが検出された場合、前記書込対象のデータを書き込む代わりに前記有効なデータを無効にするように構成された無効処理部（２，Ｓ２６，Ｓ８６）と、
を更に備え、
前記第２の単位数の前記ブランク領域のうちの一部は前記第１の状態である場合に直後のデータが有効であることを示し、前記第２の状態である場合に直後のデータが無効であることを示すフラグ用領域（１３）であり、
前記無効処理部は、前記有効なデータの直前の前記フラグ用領域に値を書き込むことにより、前記有効なデータを無効にするように構成された、情報管理装置。
【請求項６】
請求項５に記載の情報管理装置であって、
前記書込対象を書き込み可能な領域が前記記憶領域に存在しない場合、前記記憶領域に記憶されている有効なデータを前記不揮発性メモリとは別の記憶部（４）に退避させた後に、前記記憶領域に記憶されているデータを消去し、退避させた有効なデータを消去した後の前記記憶領域に戻すように構成された退避処理部（２，Ｓ３３〜Ｓ３５）を更に備え、
前記書込部は、前記退避処理部によって有効なデータが戻された前記記憶領域において、前記書込対象を書き込むように構成された（２，Ｓ３６）、情報管理装置。
【請求項７】
請求項５に記載の情報管理装置であって、
前記記憶領域は消去単位である第１の領域（２００）及び第２の領域（３００）を有し、
前記書込対象を書き込み可能な領域が前記第１の領域に存在しない場合、前記第１の領域に記憶されている有効なデータを、前記書込対象を書き込み可能な領域が存在する前記第２の領域に移動させた後に、前記第１の領域に記憶されているデータを消去するように構成された移動処理部（２，Ｓ９３，Ｓ９５）を更に備え、
前記書込部は、前記移動処理部によって有効なデータが移動された前記第２の領域において、前記書込対象を書き込むように構成された（２，Ｓ９４）、情報管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報管理装置に関する。
【背景技術】
【０００２】
一般的にフラッシュメモリは、データの書き込み及び消去が可能であり、データの書き込み単位は２バイト或いは４バイトであるのに対して、データの消去単位は数十バイト〜数Ｋバイトのブロック単位である。また、フラッシュメモリにおいて、データの消去回数は限られている。このようなフラッシュメモリの特性により、データをできるだけ長く保持するために、１ブロックに複数のデータを記憶する手法がとられている。
【０００３】
この手法を用いた場合、複数のデータの中から所望のデータを検出するためには、各データの先頭の識別子を確実に判断する必要がある。しかし、先頭の識別子が「１」及び「０」のビット値で表現されていると、同じようにビット値で表現されているデータと混同してしまうおそれがあり、その誤判断を防止することが難しい。
【０００４】
そのため、特許文献１では、記憶領域をあらかじめ複数に分割することで、各分割領域の先頭のアドレスを固定値とし、各分割領域にデータを書き込む技術が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−１１９７７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の特許文献１では、例えばある分割領域において当該分割領域の長さよりも短いデータ長のデータを書き込む場合、使用されない領域が発生してしまい、記憶効率が低下してしまう。
【０００７】
本開示の一側面は、こうした問題に鑑みてなされたものであり、記憶効率の低下を抑制する情報管理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本開示の一態様は、情報管理装置（１）であって、不揮発性メモリ（６）と、書込部（２，Ｓ３２，Ｓ３６，Ｓ９２，Ｓ９４）と、を備える。不揮発性メモリは、データの消去及び書き込みが可能な記憶領域において、データを消去する処理が行われた領域が、データが書き込まれる前の状態である第１の状態となり、第１の状態の領域であるブランク領域にデータを書き込む処理が行われると、データが書き込まれた後の状態である第２の状態になるように構成される。書込部は、複数のデータをブランク領域で区分して記憶領域に順に書き込むように構成される。
【０００９】
本開示の情報管理装置によれば、複数のデータをブランク領域で区分して記憶領域に順に書き込むため、使用されない領域が発生しにくい。そのため、記憶効率の低下を抑制することができる。
【００１０】
なお、この欄及び特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１１】
【図１】情報管理装置の構成を示すブロック図である。
【図２】フラッシュメモリの記憶領域を示す図である。
【図３】セルの状態の検出方法を示す図である。
【図４】記憶されるデータの様式を示す図である。
【図５】第１の領域に複数のデータが記憶される例を示した図である。
【図６】第１実施形態における書込処理を示すフローチャートである。
【図７】第１実施形態におけるデータ書込処理を示すフローチャートである。
【図８】書込対象のデータを書き込む処理の一例を示す図である。
【図９】退避処理の一例を示す図である。
【図１０】データを無効にする処理の一例を示す図である。
【図１１】読出処理を示すフローチャートである。
【図１２】第２実施形態における書込処理を示すフローチャートである。
【図１３】第２実施形態におけるデータ書込処理を示すフローチャートである。
【図１４】移動処理の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、本開示を実施するための形態を説明する。
［１．第１実施形態］
［１−１．構成］
図１を用いて情報管理装置１について説明する。情報管理装置１は、記憶媒体であるフラッシュメモリ６にデータを書き込んだり、そのデータを消去したりすることができる装置である。情報管理装置１は、ＣＰＵ２と、ＲＯＭ３と、ＲＡＭ４と、フラッシュコントローラ５と、フラッシュメモリ６と、Ｉ／Ｏ７と、を備えている。情報管理装置１の各部へは、電源１１から電力が供給されている。Ｉ／Ｏ７は、外部装置との入出力部として機能する入出力インターフェースである。
【００１３】
ＣＰＵ２は、ＲＯＭ３に記憶されているプログラムであるフラッシュドライバソフト８及びアプリケーションソフト９を実行することにより、情報管理装置１を統括制御する。具体的には、ＣＰＵ２は、アプリケーションソフト９からのフラッシュメモリ６へのアクセス要求に応じてフラッシュドライバソフト８を実行することにより、フラッシュコントローラ５を介して、フラッシュメモリ６に対するデータの読み出し及び書き込みを制御する。
【００１４】
ＲＡＭ４は、ＣＰＵ２により使用される作業領域を有する揮発性メモリである。ＲＡＭ４は、フラッシュメモリ６から読み出されたデータと、フラッシュメモリ６に書き込むデータと、を一時的に保持する機能を有する。
【００１５】
フラッシュコントローラ５は、ＣＰＵ２から与えられる指令に基づいてフラッシュメモリ６に対する書込処理、読出処理、消去処理等を実行する。
フラッシュメモリ６は、ＣＰＵ２により使用される記憶領域を有する不揮発性メモリである。フラッシュメモリ６の記憶領域は、消去単位であるブロック１０を複数有している。
【００１６】
フラッシュメモリ６は、セルに「０」又は「１」のビット値を書き込むことでデータを記憶する。図２に示すように、データの書き込みは、数バイトのワードという単位で行われる。一方、データの消去は、書込単位であるワード単位よりも大きく、数十バイト〜数Ｋバイトのブロック１０という単位で行われる。つまり、データの書き込みは、１ワードを１単位とするワード単位で行われ、データの消去は、１ブロックを１単位とするブロック単位で行われる。
【００１７】
データの消去が行われた後の状態をブランクといい、ブランクである領域をブランク領域という。データが書き込み済みの領域には、更なるデータの書き込み、つまり上書きができないため、データの書き込みはブランク領域に対して行われる。したがって、ブランク領域はデータが書き込まれる前の状態である第１の状態である。第１の状態であるブランク領域にデータを書き込む処理が行われると、書き込まれた後の状態である第２の状態の領域になる。
【００１８】
具体的には、フラッシュメモリ６は、データを消去するとビット値が「０」にも「１」にも確定しない第１の状態となり、第１の状態に対して書き込みが行われると、ビット値が「０」又は「１」に確定する第２の状態になる。
【００１９】
図３に示すように、ブランク領域であるか否かはブランクチェックというコマンドにより検出可能である。ブランクチェックはセルに対して行われる。ブランクチェックによって第１の状態であると判定された場合、つまりブランク領域である場合、「０」及び「１」のビット値のいずれかが読み出せるが、どちらが読み出せるかは定まらない。一方、ブランクチェックによって第２の状態であると判定された場合、つまりブランクでない場合、「０」又は「１」のビット値を読み出すことができる。
【００２０】
［１−２．書込処理］
図４を用いて、フラッシュメモリ６の記憶領域に記憶されるデータの様式について説明する。記憶されるデータは、先頭部１２、管理部１３、データ部１４の順序の組み合わせを単位として記憶領域に記憶される。組み合わせ単位１５は、先頭部１２、管理部１３、及びデータ部１４の組み合わせを１単位とする。複数の組み合わせ単位１５が記憶領域の先頭から連続して記憶されることにより、複数のデータが記憶される。例えば、図５に示すように、フラッシュメモリ６の記憶領域のうち特定のブロック１０である第１の領域２００に複数のデータが組み合わせ単位１５として記憶される。なお、図中では、先頭部をＳ、後述するフラグをＦ、及び後述する識別子をＩＤで示している。
【００２１】
データ部１４に記憶されるデータは、複数種類のデータを識別するための識別子、及び、識別子ごとのデータの値であるデータ値である。識別子は、データ部１４の先頭に記憶され、例えば変数の名前である。データ値は、例えば変数の値である。識別子のデータ長及びデータ値のデータ長は任意の長さである。
【００２２】
先頭部１２は、組み合わせ単位１５の先頭に位置する、ワード単位１個分の領域である。この領域は常に第１の状態、つまりブランク領域である。複数の組み合わせ単位１５が連続して記憶されることにより複数のデータが記憶されるため、それぞれの先頭部１２によりデータの記憶位置が特定可能となる。
【００２３】
管理部１３は、データ部１４に記憶されているデータが有効か無効かを示すフラグを記憶するための領域であり、ワード単位１個分の領域である。管理部１３が第１の状態であるブランク領域の場合フラグはデータが有効であることを示し、管理部１３が第２の状態である場合フラグはデータが無効であることを示す。以下、データが有効であることを単に有効なデータともいい、データが無効であることを単に無効なデータともいう。
【００２４】
ここで、データが有効であるとは、当該有効なデータのデータ値が、同じ識別子を有するデータ値のうち、最新のデータ値であることを意味している。逆に、データが無効であるとは、当該無効なデータのデータ値が、同じ識別子を有するデータ値のうち、最新のデータ値でないことを意味している。つまり、同じ識別子を有するデータ値が複数存在する場合でも、原則、有効なデータを示すフラグを有するデータ値は一つである。そして、データを有効又は無効に切り替えること、つまり、フラグを第１の状態又は第２の状態に切り替えることにより、特定の識別子のデータは更新される。
【００２５】
次に図６を用いて、フラッシュメモリ６の記憶領域の第１の領域２００にデータを書き込む書込処理について説明する。書込処理はＣＰＵ２が書込対象のデータを書き込む要求を受け取ることにより開始される。
【００２６】
ステップ２１では、ＣＰＵ２は、第１の領域２００の先頭からブランクチェックを行い、ブランク領域を検出する処理を行う。ワード単位１個分のブランク領域が検出されると、ステップ２２に進む。
【００２７】
ステップ２２では、ＣＰＵ２は、ステップ２１で検出された領域を先頭部１２とする組み合わせ単位１５にデータが存在するか否を判定する処理を行う。換言すれば、ＣＰＵ２は、ステップ２１で検出されたワード単位の領域を１番目の領域とし、それに続く２番目のワード単位の領域を管理部１３とみなし、３番目のワード単位の領域をデータ部１４の先頭部分とみなして、データが存在するか否かの判定をする処理を行う。
【００２８】
具体的には、ＣＰＵ２は、３番目のワード単位の領域に対してブランクチェックを行う。ＣＰＵ２は、３番目のワード単位の領域が第２の状態である場合、データ部１４の先頭に書き込みが行われているため、ステップ２１で検出された領域を先頭部１２とする組み合わせ単位１５にデータが存在すると判定する処理を行う。一方、ＣＰＵ２は、３番目のワード単位の領域が第１の状態、つまりブランク領域である場合、データ部１４の先頭に書き込みが行われていないため、ステップ２１で検出された領域を先頭部１２とする組み合わせ単位１５にデータが存在しないと判定する処理を行う。ここで、ステップ２１で検出された領域を先頭部１２とする組み合わせ単位１５にデータが存在しないことは、第１の領域２００の先頭から連続して記憶されている組み合わせ単位１５のうち末尾の組み合わせ単位１５に続くブランク領域、つまり空き領域であることを意味する。
【００２９】
ステップ２２で肯定判定されると、ステップ２３に進む。ステップ２３では、ＣＰＵ２は、ステップ２２で判定されたデータが有効なデータであるか否かを判定する処理を行う。具体的には、ＣＰＵ２は、ステップ２２で処理された３番目のワード単位の領域の前の２番目のワード単位の領域に対してブランクチェックを行うことにより、ステップ２２で判定されたデータが有効なデータであるか否かを判定する処理を行う。ＣＰＵ２は、２番目のワード単位の領域つまりフラグが第１の状態である場合、ステップ２２で判定されたデータが有効であると判定する処理を行う。一方、ＣＰＵ２は、２番目のワード単位の領域つまりフラグが第２の状態である場合、ステップ２２で判定されたデータが無効であると判定する処理を行う。
【００３０】
ステップ２３で否定判定されると、ステップ２１に戻る。ステップ２１では、ＣＰＵ２は、１つ前のステップ２１で検出された領域を先頭部１２とする組み合わせ単位１５の次の組み合わせ単位１５の先頭部１２としてのブランク領域を検出する処理を行う。ステップ２３で肯定判定されると、ステップ２４に進む。
【００３１】
ステップ２４では、ＣＰＵ２は、ステップ２３で判定された有効なデータを有する組み合わせ単位１５の識別子が書込対象の識別子と同じ識別子であるか否かを判定する処理を行う。具体的には、ＣＰＵ２は、ステップ２３で処理された２番目のワード単位の領域の次の３番目のワード単位の領域以降の領域に書き込まれたビット値に基づいて、識別子を判定する処理を行う。
【００３２】
ステップ２４で否定判定されると、ステップ２１に戻る。ステップ２１では、ステップ２３で否定判定された場合と同様に、ＣＰＵ２は、１つ前のステップ２１で検出された領域を先頭部１２とする組み合わせ単位１５の次の組み合わせ単位１５の先頭部１２としてのブランク領域を検出する処理を行う。ステップ２４で肯定判定されると、ステップ２５に進む。
【００３３】
ステップ２５では、ＣＰＵ２はデータ書込処理を行う。データ書込処理の具体的内容は、図７を用いて説明する。
まず、ステップ３１では、ＣＰＵ２は、空き領域に書込対象のデータを組み合わせ単位１５として書き込む領域があるか否かを判定する処理を行う。ステップ３１で肯定判定されると、ステップ３２に進む。
【００３４】
ステップ３２では、ＣＰＵ２は、第１の領域２００の先頭から連続して記憶されている組み合わせ単位１５のうち末尾の組み合わせ単位１５からワード単位２個分のブランク領域を空けて、３個目のワード単位のブランク領域から書込対象の識別子及びデータ値を書き込む処理を行う。具体例として、図５に記載した第１の領域２００に対してステップ３２の処理を行った後の図である図８を用いて説明する。図８に示すように、ＣＰＵ２は、書込対象のデータを、ワード単位２個分のブランク領域５１，５２を先頭部１２及び管理部１３とし、３個目のワード単位以降の領域５３をデータ部１４とする組み合わせ単位１５として、書き込む処理を行う。書き込まれた組み合わせ単位１５の管理部１３がブランク領域５２であるため、書込対象のデータは有効なものとして書き込まれる。また、第１の領域２００に記憶されている末尾の組み合わせ単位１５の直後に書込対象の組み合わせ単位１５が書き込まれることにより、複数の組み合わせ単位１５が連続して記憶される。ステップ３２の後、ＣＰＵ２はデータ書込処理を終了し、ステップ２６に進む。
【００３５】
一方、ステップ３１で否定判定されると、ステップ３３に進む。ステップ３３では、ＣＰＵ２は、データ部１４に記憶されている有効なデータをＲＡＭ４に退避する処理を行う。具体例を図９に示す。図９の（Ａ）に示すように第１の領域２００に書込対象のデータを書き込む領域がない場合、矢印Ａ１に示すようにフラグが第１の状態である組み合わせ単位６１，６２，６３のデータ部１４に記憶されている有効なデータをＲＡＭ４に退避する処理を行う。
【００３６】
ステップ３３に続くステップ３４では、ＣＰＵ２は、ステップ３３で退避する処理が行われた第１の領域２００に記憶されているデータを消去する処理を行う。図９の（Ｂ）に示すように、消去後の領域は第１の状態であるブランク領域になる。
【００３７】
ステップ３４に続くステップ３５では、ＣＰＵ２は、ステップ３３で退避した有効なデータを、ステップ３４でデータの消去が行われた第１の領域２００に戻す処理を行う。例えば、図９に示す矢印Ａ２に示すような処理が行われる。
【００３８】
ステップ３５に続くステップ３６では、ＣＰＵ２は、ステップ３５でデータが戻された第１の領域２００の先頭から連続して記憶されている組み合わせ単位１５のうち末尾の組み合わせ単位１５からワード単位２個分のブランク領域を空けて、３個目のワード単位のブランク領域から書込対象の識別子及びデータ値を書き込む処理を行う。つまり、図９の（Ｃ）に示すように、書込対象のデータを組み合わせ単位６６として記憶する。ステップ３６の後、ＣＰＵ２はデータ書込処理は終了し、ステップ２６に進む。
【００３９】
ステップ２６では、ステップ２４で肯定判定された識別子を有する組み合わせ単位１５のデータを無効にする処理を行う。ステップ２６の具体例を図１０に示す。図１０は、図８に記載した第１の領域２００に対してステップ２６の処理を行った後の図である。図１０に示すように、ＣＰＵ２は、書込対象と同じ識別子を有する組み合わせ単位１５のフラグを有する領域５４に書き込みを行うことにより、データを無効にする処理を行う。これにより、書込処理を実行した直後に最新であったデータを古いデータとする。
【００４０】
このように、ステップ２５及びステップ２６の処理によって、書込対象のデータを最新のデータとして書き込み、書込対象と同じ識別子を有する組み合わせ単位１５のデータを古いデータとすることで、データが更新される。ステップ２６の後、ＣＰＵ２は書込処理を終了する。
【００４１】
ステップ２２で否定判定されると、ステップ２７に進む。ステップ２７では、ＣＰＵ２は、ステップ２５と同様に、データ書込処理を行う。つまり、ステップ３１に続くステップ３２の処理、又は、ステップ３１に続くステップ３３〜ステップ３６の処理が行われる。ステップ３２又はステップ３６の後、ＣＰＵ２はデータ書込処理を終了し、書込処理を終了する。
【００４２】
［１−３．読出処理］
図１１を用いて、フラッシュメモリ６の記憶領域の第１の領域２００に記憶されたデータを読み出す読出処理について説明する。読出処理はＣＰＵ２が読出対象のデータを読み出す要求を受け取ることにより開始される。
【００４３】
ステップ７１では、ＣＰＵ２は、第１の領域２００の先頭からブランクチェックを行い、ブランク領域を検出する処理を行う。ワード単位１個分のブランク領域が検出されると、ステップ７２に進む。
【００４４】
ステップ７２では、ＣＰＵ２は、ステップ７１で検出された領域を先頭部１２とする組み合わせ単位１５にデータが存在するか否を判定する処理を行う。換言すれば、ＣＰＵ２は、ステップ７１で検出されたワード単位の領域を１番目の領域とし、それに続く２番目のワード単位の領域を管理部１３とみなし、３番目のワード単位の領域をデータ部１４の先頭部分とみなして、データが存在するか否かの判定をする処理を行う。具体的には、ＣＰＵ２は、３番目のワード単位の領域に対してブランクチェックを行う。ＣＰＵ２は、３番目のワード単位の領域が第２の状態である場合、ステップ７１で検出された領域を先頭部１２とする組み合わせ単位１５にデータが存在すると判定する処理を行う。一方、ＣＰＵ２は、３番目のワード単位の領域が第１の状態、つまりブランク領域である場合、ステップ７１で検出された領域を先頭部１２とする組み合わせ単位１５にデータが存在しないと判定する処理を行う。ここで、ステップ７１で検出された領域を先頭部１２とする組み合わせ単位１５にデータが存在しないことは、第１の領域２００の先頭から連続して記憶されている組み合わせ単位１５のうち末尾の組み合わせ単位１５に続くブランク領域、つまり空き領域であることを意味する。
【００４５】
ステップ７２で肯定判定されると、ステップ７３に進む。ステップ７３では、ＣＰＵ２は、ステップ７２で判定されたデータが有効なデータであるか否かを判定する処理を行う。具体的には、ＣＰＵ２は、ステップ７２で処理された３番目のワード単位の領域の前の２番目のワード単位の領域に対してブランクチェックを行うことにより、ステップ７２で判定されたデータが有効なデータであるか否かを判定する処理を行う。ＣＰＵ２は、２番目のワード単位の領域つまりフラグが第１の状態である場合、ステップ７２で判定されたデータが有効であると判定する処理を行う。一方、ＣＰＵ２は、２番目のワード単位の領域つまりフラグが第２の状態である場合、ステップ７２で判定されたデータが無効であると判定する処理を行う。
【００４６】
ステップ７３で否定判定されると、ステップ７１に戻る。ステップ７１では、ＣＰＵ２は、１つ前のステップ７１で検出された領域を先頭部１２とする組み合わせ単位１５の次の組み合わせ単位１５の先頭部１２としてのブランク領域を検出する処理を行う。ステップ７３で肯定判定されると、ステップ７４に進む。
【００４７】
ステップ７４では、ＣＰＵ２は、ステップ７３で判定された有効なデータを有する組み合わせ単位１５の識別子が読出対象の識別子であるか否かを判定する処理を行う。具体的には、ＣＰＵ２は、ステップ７３で処理された２番目のワード単位の領域の次の３番目のワード単位の領域以降の領域に書き込まれたビット値に基づいて、読出対象の識別子であるか否かを判定する処理を行う。
【００４８】
ステップ７４で否定判定されると、ステップ７１に戻る。ステップ７１では、ステップ７３で否定判定された場合と同様に、ＣＰＵ２は、１つ前のステップ７１で検出された領域を先頭部１２とする組み合わせ単位１５の次の組み合わせ単位１５の先頭部１２としてのブランク領域を検出する処理を行う。ステップ７４で肯定判定されると、ステップ７５に進む。
【００４９】
ステップ７５では、ＣＰＵ２は、ステップ７４で読出対象の識別子であると判定された識別子を有する組み合わせ単位１５のデータ部１４に記憶されているデータを読み出す処理を行う。ステップ７５の後、ＣＰＵ２は読出処理を終了する。
【００５０】
ステップ７２で否定判定されると、ＣＰＵ２は、読出対象のデータが無いと判定して読出処理を終了する。
［１−４．効果］
以上詳述した第１実施形態によれば、以下の効果が得られる。
【００５１】
（１ａ）第１実施形態のＣＰＵ２は、複数の組み合わせ単位１５が第１の領域２００の先頭から連続して記憶されるようにデータを書き込む処理を行う。つまり、ＣＰＵ２は、複数のデータをブランク領域で区分して記憶領域に順に書き込む処理を行う。そのため、例えば、記憶領域をあらかじめ複数に分割し各分割領域にデータを書き込むような情報管理装置ではデータ長の長さによっては使用されない領域が発生してしまうが、第１実施形態の情報管理装置１ではこのような使用されない領域が発生しにくい。そのため、記憶領域を効率的に使用することができる。
【００５２】
（１ｂ）第１実施形態のＣＰＵ２は、第１の領域２００からブランク領域を検出する処理を行う。そのため、データの先頭にアドレスを定めなくても、ブランク領域を検出することにより、データの記憶位置が特定可能となる。したがって、データの記憶位置に基づいて、読出対象のデータを読み出すことができる。
【００５３】
（１ｃ）第１実施形態のＣＰＵ２は、データの先頭に識別子を書き込む処理を行う。また、ＣＰＵ２は、データの先頭の識別子に基づき読出対象のデータを読み出す処理を行う。そのため、特定の識別子のデータを書き込むことができ、また、特定の識別子のデータを読み出すことができる。したがって、複数種類のデータを識別することができる。
【００５４】
（１ｄ）第１実施形態のＣＰＵ２は、第１の領域２００の先頭から連続して記憶されている組み合わせ単位１５のうち末尾の組み合わせ単位１５から書込対象を組み合わせ単位１５として書き込む処理を行う。このように末尾に書き込むことにより、データ長にとらわれずにデータを書き込むことができる。
【００５５】
（１ｅ）第１実施形態のＣＰＵ２は、書込対象の識別子と同じ有効なデータが存在する場合には、書込対象のデータの先頭にワード単位２個分のブランク領域を空けて書き込み、当該有効なデータを無効にする処理を行う。そのため、書込対象のデータを最新のデータとして書き込み、書込処理を実行した直後に最新であったデータを古いデータとすることができる。したがって、古いデータを消去することなく、データを更新することができる。
【００５６】
また、第１実施形態のＣＰＵ２は、データの有効又は無効、及びデータの識別子を判定する処理を行う。そのため、複数種類のデータの更新状態を識別できる。したがって、読出対象の最新のデータを読み出すことができる。
【００５７】
（１ｆ）第１実施形態のＣＰＵ２は、書込対象のデータを組み合わせ単位１５として第１の領域２００の空き領域に書き込むことができない場合、つまり書き込み可能な領域が第１の領域２００に不足している場合、有効なデータをＲＡＭ４に退避し、当該第１の領域２００のデータを消去する処理を行う。そのため、記憶領域の第１の領域２００すべてがデータで満たされたとしてもフラッシュメモリ６の記憶領域に書き込み可能な領域を確保することができ、データの書き込みが可能になる。
【００５８】
なお、第１実施形態では、フラッシュメモリ６が不揮発性メモリに相当し、Ｓ３２及びＳ３６を行うＣＰＵ２が書込部に相当し、Ｓ７１〜Ｓ７５を行うＣＰＵ２が読出部に相当する。また、Ｓ２１及びＳ２２を行うＣＰＵ２がブランク検出部に相当し、Ｓ２３及びＳ２４を行うＣＰＵ２がデータ検出部に相当し、Ｓ２６を行うＣＰＵ２が無効処理部に相当し、管理部１３がフラグ用領域に相当する。また、ＲＡＭ４が記憶部に相当し、Ｓ３３〜Ｓ３５を行うＣＰＵ２が退避処理部に相当する。
【００５９】
［２．第２実施形態］
［２−１．第１実施形態との相違点］
第２実施形態は、基本的な構成は第１実施形態と同様であるため、相違点について以下に説明する。なお、第１実施形態と同じ符号は、同一の構成を示すものであって、先行する説明を参照する。
【００６０】
前述した第１実施形態では、書込処理においてＣＰＵ２は第１の領域２００に記憶された有効なデータをＲＡＭ４に退避させる処理を行う。これに対し、第２実施形態では、ＣＰＵ２が第１の領域２００に記憶された有効なデータを別のブロック１０である第２の領域３００に退避する処理を行う点で、第１実施形態と相違する。なお、第２の領域３００は、フラッシュメモリ６の記憶領域の複数のブロック１０のうちの１つであり、かつ第１の領域２００とは異なるブロック１０である。
【００６１】
［２−２．書込処理］
第２実施形態のＣＰＵ２が、図６及び図７に示す第１実施形態の書込処理に代えて実行する書込処理について、図１２及び図１３のフローチャートを用いて説明する。なお、図１２におけるステップ８１〜ステップ８４の処理は、図６におけるステップ２１〜ステップ２４の処理と同様であるため、説明を省略する。
【００６２】
ステップ８４で肯定判定されると、ステップ８５に進む。ステップ８５では、ＣＰＵ２はデータ書込処理を行う。データ書込処理の具体的内容は、図１３を用いて説明する。
まず、ステップ９１では、ＣＰＵ２は、空き領域に書込対象のデータを組み合わせ単位１５として書き込む領域があるか否かを判定する処理を行う。ステップ９１で肯定判定されると、ステップ９２に進む。
【００６３】
ステップ９２では、ＣＰＵ２は、第１の領域２００の先頭から連続して記憶されている組み合わせ単位１５のうち末尾の組み合わせ単位１５からワード単位２個分のブランク領域を空けて、３個目のワード単位のブランク領域から書込対象の識別子及びデータ値を書き込む処理を行う。ステップ９２の後、ＣＰＵ２はデータ書込処理を終了し、ステップ８６に進む。
【００６４】
一方、ステップ９１で否定判定されると、ステップ９３に進む。ステップ９３では、ＣＰＵ２は、データ部１４に記憶されている有効なデータを第２の領域３００に退避する処理、換言すれば移動する処理を行う。具体例を図１４に示す。図１４の（Ａ）に示すように第１の領域２００に書込対象のデータを書き込む領域がない場合、矢印Ｂ１に示すようにフラグが第１の状態である組み合わせ単位１０１，１０２，１０３のデータ部１４に記憶されている有効なデータを第２の領域３００に退避する処理を行う。なお、退避する処理を行う前の第２の領域３００は、図１２の（Ｂ）に示すように、ブランク領域である。
【００６５】
ステップ９３に続くステップ９４では、ＣＰＵ２は、有効なデータを退避した後の第２の領域３００の先頭から連続して記憶されている組み合わせ単位１５のうち末尾の組み合わせ単位１５からワード単位２個分のブランク領域を空けて、３個目のワード単位のブランク領域から書込対象の識別子及びデータ値を書き込む処理を行う。つまり、図１４の（Ｄ）に示すように、書込対象のデータを組み合わせ単位１０５として記憶する。
【００６６】
続くステップ９５では、ＣＰＵ２は、第１の領域２００に記憶されているデータを消去する処理を行う。図１２の（Ｃ）及び（Ｅ）に示すように、第１の領域２００に記憶されているデータは消去される。ステップ９５の後、ＣＰＵ２はデータ書込処理を終了し、ステップ８６に進む。
【００６７】
ステップ８６では、ステップ８４で肯定判定された識別子を有する組み合わせ単位１５のデータを無効にする処理を行う。ステップ８６の後、ＣＰＵ２は書込処理を終了する。
ステップ８２で否定判定されると、ステップ８７に進む。ステップ８７では、ＣＰＵ２は、ステップ８５と同様に、データ書込処理を行う。つまり、ステップ９１に続くステップ９２の処理、又は、ステップ９１に続くステップ９３〜ステップ９５の処理が行われる。ステップ９２又はステップ９５の後、ＣＰＵ２はデータ書込処理を終了し、書込処理を終了する。
【００６８】
［２−３．効果］
以上詳述した第２実施形態によれば、前述した第１実施形態の効果（１ａ）〜（１ｅ）効果を奏し、さらに、以下の効果を奏する。
【００６９】
（２ａ）第２実施形態のＣＰＵ２は、書込対象のデータを組み合わせ単位１５として書き込み可能な領域が第１の領域２００に不足している場合、第２の領域３００に退避させる処理を行う。第２の領域３００は不揮発性メモリの記憶領域であるため、データの消去中に情報管理装置１の電源が遮断されたとしても、第２の領域３００に記憶されているデータを保持し続けることができる。
【００７０】
なお、第２実施形態では、Ｓ９２及びＳ９４を行うＣＰＵ２が書込部に相当し、Ｓ８１及びＳ８２を行うＣＰＵ２がブランク検出部に相当し、Ｓ８３及びＳ８４を行うＣＰＵ２がデータ検出部に相当し、Ｓ８６を行うＣＰＵ２が無効処理部に相当し、Ｓ９３及びＳ９５を行うＣＰＵ２が移動処理部に相当する。
【００７１】
［３．他の実施形態］
以上、本開示の実施形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
【００７２】
（３ａ）上記実施形態では、組み合わせ単位１５は管理部１３を含む組み合わせで構成されているが、組み合わせ単位は管理部を含んでいなくてもよい。組み合わせ単位が先頭部及びデータ部の組み合わせで構成されていてもよい。例えば、ＣＰＵが、ブロックの先頭から連続して記憶されている組み合わせ単位のうち末尾の組み合わせ単位からワード単位１個分のブランク領域を空けて、２個目のワード単位のブランク領域から書込対象のデータを書き込む処理を行う。これにより、組み合わせ単位が先頭部及びデータ部で構成されていたとしても、複数の組み合わせ単位が連続して記憶されるようにデータを書き込むことができる。また、読出対象のデータを読み出す場合、ＣＰＵは、後から書き込んだデータ、つまり第１の領域に記憶されている組み合わせ単位の末尾に近い側のデータを有効なデータと判断して、当該データを読み出す処理を行う。これにより、組み合わせ単位が先頭部及びデータ部で構成されていたとしても、読出対象の最新のデータを読み出すことができる。
【００７３】
（３ｂ）上記実施形態では、データ部１４に記憶されるデータが識別子及びデータ値である例を示したが、これに限定されるものではない。例えば、データ部に記憶されるデータがデータ値のみであってもよい。
【００７４】
（３ｃ）上記実施形態では、ＣＰＵ２が第１の領域２００又は第２の領域３００の先頭から検出されたブランク領域を１番目の領域とし更に３番目の領域を検出する処理を行うことにより、書込対象の書き込み開始位置を特定するが、書き込み開始位置の特定はこれに限定されるものではない。例えば、ＣＰＵがあるブロックの先頭からブランク領域が３つ以上連続している部分を検出する処理を行うことにより、書込対象の書き込み開始位置を特定してもよい。
【００７５】
（３ｄ）上記実施形態では、先頭部１２及び管理部１３はワード単位１個分の領域である例を示したが、これに限定されるものではない。例えば、先頭部はワード単位２個以上としてもよく、管理部はワード単位２個以上としてもよい。
【００７６】
また、上記実施形態では、ブランク領域が第１の単位数としてワード単位３個連続している部分を記憶領域の先頭から順に検出する例を示したが、ワード単位４個以上連続している部分を検出してもよい。
【００７７】
また、上記実施形態では、第２の単位数としてワード単位２個分のブランク領域に続けてデータを書き込む例を示したが、第１の単位数よりも少ない第２の単位数のブランク領域に続けてデータを書き込んでもよい。なお、第２の単位数は少なくともワード単位１個分である。
【００７８】
（３ｅ）上記第１実施形態では、ＣＰＵ２は第１の領域２００に記憶された有効なデータをＲＡＭ４に退避させる処理を行う例を示したが、退避先はＲＡＭ４に限定されるものではない。例えば、ＲＡＭ４以外の揮発性メモリであってもよい。
【００７９】
（３ｆ）上記実施形態では、ビット値が「０」にも「１」にも確定しない状態を第１の状態、ビット値が「０」又は「１」に確定した状態を第２の状態としたが、これに限定されるものではない。第１の状態はデータが書き込まれる前の状態であり、第２の状態はデータが書き込まれた後の状態であってもよい。
【００８０】
（３ｇ）上記実施形態の情報管理装置１は、車両に搭載されて用いられてもよい。例えば、情報管理装置は、エンジン制御等の車両制御における学習値の記憶を更新する装置として使用してもよい。また、例えば、情報管理装置は、ダイアグ検出時に、故障時の自動車使用状況データであるフリーズフレームデータ等を記憶する装置として使用してもよい。本開示の情報管理装置は、例えば記憶領域をあらかじめ複数に分割し各分割領域にデータを書き込むような情報管理装置とは異なり、異なるデータ長の長さのデータを書き込んでも、使用されない領域が発生しにくい。そのため、異なるデータ長のデータを大量に有する当該自動車使用状況データを本開示の情報管理装置を用いて記憶するのは有効である。
【００８１】
（３ｈ）上記実施形態における１つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、１つの構成要素が有する１つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、１つの構成要素によって実現したり、複数の構成要素によって実現される１つの機能を、１つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言から特定される技術思想に含まれるあらゆる態様が本開示の実施形態である。
【００８２】
（３ｉ）上述したＣＰＵ２の他、当該ＣＰＵ２を構成要素とする情報管理システム、上述した書込処理又は読出処理をコンピュータに実行させるための情報管理プログラム、この情報管理プログラムを記録した半導体メモリ等の非遷移的実態的記録媒体、情報管理方法など、種々の形態で本開示を実現することもできる。
【符号の説明】
【００８３】
１…情報管理装置、２…ＣＰＵ、６…フラッシュメモリ。
【図１】
2018045595.tif 000003
【図２】
2018045595.tif 000004
【図３】
2018045595.tif 000005
【図４】
2018045595.tif 000006
【図５】
2018045595.tif 000007
【図６】
2018045595.tif 000008
【図７】
2018045595.tif 000009
【図８】
2018045595.tif 000010
【図９】
2018045595.tif 000011
【図１０】
2018045595.tif 000012
【図１１】
2018045595.tif 000013
【図１２】
2018045595.tif 000014
【図１３】
2018045595.tif 000015
【図１４】
2018045595.tif 000016