(57)【特許請求の範囲】
【請求項１】
複数種類のデータを識別するための識別子であるデータ識別子及び前記データ識別子ごとのデータの値であるデータ値を記録するための領域であるデータ部（７０，６００）と、前記データ部に記録されている前記データ値が有効か無効かを示すフラグを記録するための領域である管理部（８０，６１０）と、の組であるレコード（３０）を、データの管理単位として複数備えるフラッシュメモリ（３）に対して、データの更新を管理する情報管理装置（１）であって、
特定のデータ識別子の前記データ値を第１の値から第２の値に更新する際、前記データ部に前記特定のデータ識別子及び前記第２の値が記録され、前記管理部に無効を示す前記フラグが記録されている前記レコードである再利用可能レコードを、複数の前記レコードから検索する処理を行う検索部（５、Ｓ１１０、Ｓ７１０）と、
前記検索部により前記再利用可能レコードが検索された場合、前記再利用可能レコードの前記管理部に記録されている前記フラグを、無効を示す状態から有効を示す状態に変更する処理である有効化処理を行う有効化部（５、Ｓ１２０〜Ｓ１３０、Ｓ７２０〜Ｓ７３０）と、
前記データ部に前記特定のデータ識別子及び前記第１の値が記録され、前記管理部に有効を示す前記フラグが記録されている前記レコードである更新前レコードの前記管理部に記録されている前記フラグを、有効を示す状態から無効を示す状態に変更する処理である無効化処理を行う無効化部（５、Ｓ１４０〜Ｓ１６０、Ｓ７４０〜Ｓ７６０）と、
を備える情報管理装置。
【請求項２】
請求項１に記載の情報管理装置であって、
前記フラグは、前記データ部に記録されている前記データ値が有効か無効かを複数のビット値で管理されている、情報管理装置。
【請求項３】
請求項１又は請求項２に記載の情報管理装置であって、
前記フラッシュメモリは、ビット値を消去する処理が行われた領域が、ビット値が確定しない状態である消去状態となり、前記消去状態の領域に「０」又は「１」のビット値が書き込まれると、ビット値が確定した状態である非消去状態となるように構成され、
前記管理部（８０）は、複数の領域に区分され、
前記フラグは、前記管理部を構成する複数の領域のうち、前記非消去状態である領域の数である非消去領域数により、前記データ部（７０）に記録されている前記データ値が有効か無効かを示す、情報管理装置。
【請求項４】
請求項３に記載の情報管理装置であって、
前記無効化部（５、Ｓ１４０〜Ｓ１６０）は、前記有効化処理の後に前記無効化処理を行い、
前記有効化部（５、Ｓ１２０、Ｓ１３０）は、前記有効化処理で変更される前記フラグの前記有効化処理後の前記非消去領域数が、前記有効化処理の後の前記無効化処理で変更される前記フラグの前記無効化処理前の前記非消去領域数と同数にならないように、前記非消去領域数を変更する、情報管理装置。
【請求項５】
請求項１又は請求項２に記載の情報管理装置であって、
前記管理部（６１０）は、複数ビットの値を前記フラグとして記録し、
前記フラグは、前記管理部に記録されている前記複数ビットの値により、前記データ部（６００）に記録されている前記データ値が有効か無効かを示す、情報管理装置。
【請求項６】
請求項１、請求項２又は請求項５に記載の情報管理装置であって、
前記管理部は、複数のビット値を前記フラグとして記録し、
前記フラグは、前記管理部に記録されている前記複数のビット値のうち、特定のビット値の数である特定ビット数により、前記データ部に記録されている前記データ値が有効か無効かを示す、情報管理装置。
【請求項７】
請求項６に記載の情報管理装置であって、
前記無効化部（５、Ｓ７４０〜Ｓ７６０）は、前記有効化処理の後に前記無効化処理を行い、
前記有効化部（５、Ｓ７２０、Ｓ７３０）は、前記有効化処理で変更される前記フラグの前記有効化処理後の前記特定ビット数が、前記有効化処理の後の前記無効化処理で変更される前記フラグの前記無効化処理前の前記特定ビット数と同数にならないように、前記特定ビット数を変更する、情報管理装置。
【請求項８】
請求項１から請求項７までのいずれか１項に記載の情報管理装置であって、
前記フラッシュメモリには、車両に装備されたエアコン及びメータのうち少なくとも一方の有する機能がオン状態であるかオフ状態であるかを表す値が、前記データ値として記録される、情報管理装置。
【請求項９】
複数種類のデータを識別するための識別子であるデータ識別子及び前記データ識別子ごとのデータの値であるデータ値を記録するための領域であるデータ部（７０，６００）と、前記データ部に記録されている前記データ値が有効か無効かを示すフラグを記録するための領域である管理部（８０，６１０）と、の組であるレコード（３０）を、データの管理単位として複数備えるフラッシュメモリ（３）に対して、データの更新を管理する情報管理方法であって、
特定のデータ識別子の前記データ値を第１の値から第２の値に更新する際、前記データ部に前記特定のデータ識別子及び前記第２の値が記録され、前記管理部に無効を示す前記フラグが記録されている前記レコードである再利用可能レコードを、複数の前記レコードから検索する処理である検索処理（５、Ｓ１１０、Ｓ７１０）を行い、
前記検索処理により前記再利用可能レコードが検索された場合、前記再利用可能レコードの前記管理部に記録されている前記フラグを、無効を示す状態から有効を示す状態に変更する処理である有効化処理（５、Ｓ１２０〜Ｓ１３０、Ｓ７２０〜Ｓ７３０）を行い、
前記データ部に前記特定のデータ識別子及び前記第１の値が記録され、前記管理部に有効を示す前記フラグが記録されている前記レコードである更新前レコードの前記管理部に記録されている前記フラグを、有効を示す状態から無効を示す状態に変更する処理である無効化処理（５、Ｓ１４０〜Ｓ１６０、Ｓ７４０〜Ｓ７６０）を行う、情報管理方法。
【請求項１０】
複数種類のデータを識別するための識別子であるデータ識別子及び前記データ識別子ごとのデータの値であるデータ値を記録するための領域であるデータ部（７０，６００）と、前記データ部に記録されている前記データ値が有効か無効かを示すフラグを記録するための領域である管理部（８０，６１０）と、の組であるレコード（３０）を、データの管理単位として複数備えるフラッシュメモリ（３）に対して、データの更新を管理する情報管理装置（１）としてコンピュータを機能させるための情報管理プログラムであって、
特定のデータ識別子の前記データ値を第１の値から第２の値に更新する際、前記データ部に前記特定のデータ識別子及び前記第２の値が記録され、前記管理部に無効を示す前記フラグが記録されている前記レコードである再利用可能レコードを、複数の前記レコードから検索する処理を行う検索部（５、Ｓ１１０、Ｓ７１０）、
前記検索部により前記再利用可能レコードが検索された場合、前記再利用可能レコードの前記管理部に記録されている前記フラグを、無効を示す状態から有効を示す状態に変更する処理である有効化処理を行う有効化部（５、Ｓ１２０〜Ｓ１３０、Ｓ７２０〜Ｓ７３０）、及び、
前記データ部に前記特定のデータ識別子及び前記第１の値が記録され、前記管理部に有効を示す前記フラグが記録されている前記レコードである更新前レコードの前記管理部に記録されている前記フラグを、有効を示す状態から無効を示す状態に変更する処理である無効化処理を行う無効化部（５、Ｓ１４０〜Ｓ１６０、Ｓ７４０〜Ｓ７６０）、
としてコンピュータを機能させる情報管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、フラッシュメモリに対するデータの更新を管理する情報管理装置に関する。
【背景技術】
【０００２】
フラッシュメモリは、データの消去及び書き込みが可能な記録媒体であり、広く利用されている。フラッシュメモリの記録領域は、１ビットの値であるビット値を記録可能なセルが多数集まって構成されている。フラッシュメモリのセルは、ビット値「１」が書き込まれたセルにビット値「０」を直接書き込むことが可能である一方、ビット値「０」が書き込まれたセルにビット値「１」を直接書き込むことができないという特性を有する。このため、フラッシュメモリにおいて、セルに記録されたビット値「０」をビット値「１」に書き換えるには、セルに記録されたビット値をいったん消去する必要がある。また、このような特性を有するフラッシュメモリ以外に、消去状態（ビット値が「０」にも「１」にも確定していない）に対して書き込みが行われると、非消去状態（ビット値が「０」又は「１」に確定している）になる特性を有するフラッシュメモリがある。このようなフラッシュメモリの場合、非消去状態のビット値を書き換えるには、いったん消去して非消去状態を消去状態にする必要がある。ただし、フラッシュメモリは、ビット値の消去が、セル単位ではなく、複数のセルで構成されたブロック単位でしか行えないという特性を有する。ブロック単位での消去には時間を要することや、データの書き込み及び消去の回数には制限があることなどから、データを消去する頻度をできるだけ減らすことが求められる。
【０００３】
特許文献１には、記録されるデータごとに、そのデータが有効であるか無効であるかを示すフラグが記録され、フラグの書き換えによりデータの更新を行う構成が提案されている。すなわち、この構成では、データ更新の際、既に記録されている更新前のデータについてのフラグが無効を示すように書き換えられるとともに、更新後のデータが有効を示すフラグとともに空き領域に新たに書き込まれる。したがって、更新前のデータを消去することなくデータの更新が可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２１３２６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述したような構成では、データが更新されるたびに無効化されたデータが増加するため、記録領域における無効化されたデータの割合が高くなり、記録効率が低下してしまう。
【０００６】
本開示の一側面は、フラッシュメモリの記録効率の低下を抑制することを目的としている。
【課題を解決するための手段】
【０００７】
本開示の一側面は、複数種類のデータを識別するための識別子であるデータ識別子及びデータ識別子ごとのデータの値であるデータ値を記録するための領域であるデータ部（７０，６００）と、データ部に記録されているデータ値が有効か無効かを示すフラグを記録するための領域である管理部（８０，６１０）と、の組であるレコード（３０）を、データの管理単位として複数備えるフラッシュメモリ（３）に対して、データの更新を管理する情報管理装置（１）であって、検索部（５、Ｓ１１０、Ｓ７１０）、有効化部（５、Ｓ１２０〜Ｓ１３０、Ｓ７２０〜Ｓ７３０）及び無効化部（５、Ｓ１４０〜Ｓ１６０、Ｓ７４０〜Ｓ７６０）を備える。検索部は、特定のデータ識別子のデータ値を第１の値から第２の値に更新する際、データ部に特定のデータ識別子及び第２の値が記録され、管理部に無効を示すフラグが記録されているレコードである再利用可能レコードを、複数のレコードから検索する処理を行う。有効化部は、検索部により再利用可能レコードが検索された場合、再利用可能レコードの管理部に記録されているフラグを、無効を示す状態から有効を示す状態に変更する処理である有効化処理を行う。無効化部は、データ部に特定のデータ識別子及び第１の値が記録され、管理部に有効を示すフラグが記録されているレコードである更新前レコードの管理部に記録されているフラグを、有効を示す状態から無効を示す状態に変更する処理である無効化処理を行う。
【０００８】
また、本開示の別の側面は、複数種類のデータを識別するための識別子であるデータ識別子及びデータ識別子ごとのデータの値であるデータ値を記録するための領域であるデータ部（７０，６００）と、データ部に記録されているデータ値が有効か無効かを示すフラグを記録するための領域である管理部（８０，６１０）と、の組であるレコード（３０）を、データの管理単位として複数備えるフラッシュメモリ（３）に対して、データの更新を管理する情報管理方法である。この情報管理方法では、特定のデータ識別子のデータ値を第１の値から第２の値に更新する際、データ部に特定のデータ識別子及び第２の値が記録され、管理部に無効を示すフラグが記録されているレコードである再利用可能レコードを、複数のレコードから検索する処理（５、Ｓ１１０、Ｓ７１０）を行い、検索部により再利用可能レコードが検索された場合、再利用可能レコードの管理部に記録されているフラグを、無効を示す状態から有効を示す状態に変更する処理である有効化処理（５、Ｓ１２０〜Ｓ１３０、Ｓ７２０〜Ｓ７３０）を行い、データ部に特定のデータ識別子及び第１の値が記録され、管理部に有効を示すフラグが記録されているレコードである更新前レコードの管理部に記録されているフラグを、有効を示す状態から無効を示す状態に変更する処理である無効化処理（５、Ｓ１４０〜Ｓ１６０、Ｓ７４０〜Ｓ７６０）を行う。
【０００９】
さらに、本開示の別の側面は、複数種類のデータを識別するための識別子であるデータ識別子及びデータ識別子ごとのデータの値であるデータ値を記録するための領域であるデータ部（７０，６００）と、データ部に記録されているデータ値が有効か無効かを示すフラグを記録するための領域である管理部（８０，６１０）と、の組であるレコード（３０）を、データの管理単位として複数備えるフラッシュメモリ（３）に対して、データの更新を管理する情報管理装置（１）としてコンピュータを機能させるための情報管理プログラムであって、検索部（５、Ｓ１１０、Ｓ７１０）、有効化部（５、Ｓ１２０〜Ｓ１３０、Ｓ７２０〜Ｓ７３０）及び無効化部（５、Ｓ１４０〜Ｓ１６０、Ｓ７４０〜Ｓ７６０）としてコンピュータを機能させる。検索部は、特定のデータ識別子のデータ値を第１の値から第２の値に更新する際、データ部に特定のデータ識別子及び第２の値が記録され、管理部に無効を示すフラグが記録されているレコードである再利用可能レコードを、複数のレコードから検索する処理を行う。有効化部は、検索部により再利用可能レコードが検索された場合、再利用可能レコードの管理部に記録されているフラグを、無効を示す状態から有効を示す状態に変更する処理である有効化処理を行う。無効化部は、データ部に特定のデータ識別子及び第１の値が記録され、管理部に有効を示すフラグが記録されているレコードである更新前レコードの管理部に記録されているフラグを、有効を示す状態から無効を示す状態に変更する処理である無効化処理を行う。
【００１０】
このような構成によれば、特定のデータ識別子のデータ値を更新する際、フラグを無効を示す状態から有効を示す状態に変更する処理を行うことで、無効を示すフラグが記録されていたレコードを再利用することができる。そのため、データ値を更新するたびに、無効を示すフラグが記録されているレコードが増加することを抑制することができる。したがって、フラッシュメモリに記録されている全データ中において、有効を示すフラグが記録されているレコードの割合が増加し、記録効率の低下を抑制することができる。
【００１１】
なお、この欄及び特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態の情報管理装置の構成を示すブロック図である。
【図２】第１実施形態のフラッシュメモリにおける複数の仮想ブロックを示す図である。
【図３】第１実施形態のフラッシュメモリにおける仮想ブロックを示す図である。
【図４】第１実施形態のフラッシュメモリにおけるレコードを示す図である。
【図５】第１実施形態のフラッシュメモリにおけるレコードの具体例を示す図である。
【図６】第１実施形態のフラッシュメモリにおける消去動作を示す図である。
【図７】第１実施形態のフラッシュメモリにおけるフラグの書き換えを示す図である。
【図８】第１実施形態のフラッシュメモリにおけるデータの更新処理を示すフローチャートである。
【図９】第１実施形態のフラッシュメモリにおけるデータの更新処理の具体的事例である。
【図１０】本開示及び従来技術のフラッシュメモリにおける更新処理を示す図である。
【図１１】第２実施形態のフラッシュメモリにおける消去動作を示す図である。
【図１２】第２実施形態のフラッシュメモリにおけるフラグの書き換えを示す図である。
【図１３】第２実施形態のフラッシュメモリにおけるデータの更新処理を示すフローチャートである。
【図１４】第２実施形態のフラッシュメモリにおけるデータの更新処理の具体的事例である。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、本開示を実施するための形態を説明する。
［１．第１実施形態］
［１−１．構成］
図１に示す情報管理装置１は、記録媒体であるフラッシュメモリ３にデータを書き込んだり、そのデータを消去したりすることができる装置である。情報管理装置１は、各種の演算処理を行う周知のＣＰＵ５と、外部装置との入出力部として機能するＩ／Ｏ７と、フラッシュメモリ３へのデータの書き込みやデータの消去を行うフラッシュコントローラ９と、各種のソフトウェア等を記録しているＲＯＭ１１と、周知のＲＡＭ１３と、を備えている。
【００１４】
このうち、ＲＯＭ１１には、フラッシュコントローラ９の動作を制御するソフトウェアであるフラッシュドライバのプログラムや各種のアプリケーションソフトウェアのプログラムが記録されている。
【００１５】
なお、情報管理装置１やフラッシュメモリ３等へは、電源１５から電力が供給されている。
［１−２．ブロック構造］
フラッシュメモリ３のデータ記録領域は、図２に示すように、複数の仮想ブロック２０に区分される。図３に示すように、各仮想ブロック２０は、フラッシュメモリ３におけるデータの消去単位であるブロックが複数集まって構成された仮想的なブロックである。換言すれば、第１実施形態は、データの消去単位としてのブロックのサイズが比較的小さいフラッシュメモリ３が用いられることを前提としている。図２に示すように、仮想ブロック２０は、データの管理単位として複数のレコード３０を備える。
【００１６】
図４に示すように、レコード３０は、それぞれがブロック１つ分の領域であるデータブロック７０と管理ブロック８０とに区分される。つまり、レコード３０は、データブロック７０と管理ブロック８０との組である。具体的には、データブロック７０は、複数種類のデータを識別するための識別子であるデータ識別子と、データ識別子ごとのデータの値であるデータ値と、を記録するための領域である。図５に示すように、データ識別子は、例えば変数の名前であり、データ値は、例えば変数の値である。また、管理ブロック８０は、データブロックに記録されているデータ値が有効か無効かを示すフラグを記録するための領域である。
【００１７】
あるデータ識別子のデータのデータ値は、そのデータがとり得る複数種類のデータ値のうちの１つに選択的に定まる。換言すれば、同じデータ識別子を有するレコード３０が複数存在する場合にも、後述する更新処理の途中の状態を除き、有効を示すフラグを有するレコード３０は１つである。つまり、特定のデータ識別子のデータのデータ値は、そのデータ識別子を有するレコードに記録されているフラグを有効又は無効に切り替えることにより更新される。具体的には、フラグが有効を示していることは、当該フラグを有するレコード３０のデータ値が、同じデータ識別子を有するレコード３０のうち、最新のデータ値であることを意味している。逆に、フラグが無効を示していることは、当該フラグを有するレコード３０のデータ値が、同じデータ識別子を有するレコード３０のうち、最新のデータ値でないことを意味している。
【００１８】
［１−３．消去動作］
第１実施形態におけるフラッシュメモリ３の消去動作について説明する。第１実施形態で用いられるフラッシュメモリ３は、ビット値を消去する処理が行われた領域が、ビット値が確定しない状態である消去状態となり、消去状態の領域に「０」又は「１」のビット値が書き込まれると、ビット値が確定した状態である非消去状態となるように構成されている。なお、このような消去状態はブランクと呼ばれる。
【００１９】
以下、第１実施形態におけるフラッシュメモリ３の消去動作の具体例を図６を用いて説明する。
例えば図６の（Ａ）のように「００００１１１１」という８つのビット値が書き込まれた非消去状態のブロックに対し、データを消去する処理が行われると、図６の（Ｂ）のように、当該ブロック内のビット値が不定の状態になる。なお、上述したように、消去状態は、ビット値が「０」にも「１」にも確定せず、読み出すタイミングによっていずれのビット値が読み出されるか分からない状態であり、図６の（Ｂ）に示した８つのビット値「１０１１００１１」は、ある時点におけるビット値の一例を示している。消去状態か否かは、ＣＰＵ５に付随するブランクチェックという機能を用いることで特定することができる。この状態から例えば図６の（Ｃ）のように「１１１１００００」という８つのビット値が書き込まれると、書き込まれたビット値に確定し、非消去状態になる。
【００２０】
［１−４．データの更新処理］
図７を用いて、第１実施形態におけるフラグの書き換えについて説明する。フラグの書き換えは、［１−３］項で示したような第１実施形態におけるフラッシュメモリ３の特性を活用して行う。
【００２１】
図７に示すように、管理ブロック８０は、複数の領域、本実施形態では８つの領域に区分される。これらの領域のうち、非消去状態の領域の数である非消去領域数が偶数のとき、フラグは有効を示し、非消去領域数が奇数のとき、フラグは無効を示す。
【００２２】
次に図８を用いて、ＣＰＵ５がＲＯＭ１１に記録されているフラッシュドライバのプログラムに従い実行する更新処理（更新方法）について説明する。更新処理とは、更新対象データのデータ識別子について、データ値を第１の値から第２の値に更新することである。以下の説明では、データブロック７０に更新対象データのデータ識別子及び第１の値が記録され、管理ブロック８０に有効を示すフラグが記録されているレコード３０を、更新前レコードと称する。また、データブロック７０に更新対象データのデータ識別子及び第２の値が記録され、管理ブロック８０に無効を示すフラグが記録されているレコード３０を、再利用可能レコードと称する。
【００２３】
更新処理は、ＣＰＵ５が、データの更新要求を受け取ることにより開始される。ステップ１１０では、再利用可能レコードを検索し、検索された再利用可能レコードの管理ブロック８０に対し、データを消去する処理を行う必要があるか否かを判断する。ここで肯定判断されるとステップ１２０に進む。一方、否定判断されると、ステップ１３０に進む。なお、再利用可能レコードが検索されなかった場合には、更新後のデータ値のレコードを追記してステップ１３０に進み、再利用可能レコードに対する処理を、追記したレコードに対して行う。
【００２４】
再利用可能レコードの管理ブロック８０のデータを消去する必要がある場合とは、データを消去しない限り、当該管理ブロック８０の非消去領域数を、更新前レコードの管理ブロック８０の非消去領域数の次の偶数にすることができない場合である。すなわち、第１実施形態では、再利用可能レコードの非消去領域数を、更新前レコードの非消去領域数の次の偶数となるように更新する。非消去領域数の最大値は８であるため、ここでいう「次の偶数」は、２→４→６→８→２→…の順で循環的に連続すると考える。例えば、再利用可能レコードの非消去領域数が、更新前レコードの非消去領域数の次の偶数よりも大きな値である場合、いったんデータを消去する必要がある。このため、更新前レコードを検索し、検索された更新前レコードの非消去領域数に基づいて、再利用可能レコードの管理ブロック８０のデータを消去する必要があるか否かを判断する。
【００２５】
ステップ１２０では、再利用可能レコードの管理ブロック８０のデータを消去する。これにより、再利用可能レコードの管理ブロック８０を構成する領域はすべて消去領域になる。ステップ１２０の後、ステップ１３０に進む。
【００２６】
ステップ１３０では、再利用可能レコードの非消去領域数が、更新前レコードの管理ブロック８０の非消去領域数の次の偶数となるように、データの書き込みを行う。つまり、管理ブロック８０における必要数の消去領域を非消去領域にする。例えば、更新前レコードの非消去領域数が２であり、再利用可能レコードの非消去領域数が１である場合、再利用可能レコードの非消去領域数が４になるように、３つの消去領域を非消去領域にする。これにより、再利用可能レコードの非消去領域数が偶数となり、再利用可能レコードのフラグを無効を示す状態から有効を示す状態に変更する処理である有効化処理が行われる。
【００２７】
続くステップ１４０では、更新前レコードの管理ブロック８０に消去領域があるか、換言すれば、管理ブロック８０を構成する領域がすべて非消去領域であるか判断する。ここで否定判断されるとステップ１５０に進む。一方、肯定判断されるとステップ１６０に進む。
【００２８】
ステップ１５０では、更新前レコードの管理ブロック８０のデータを消去する。これにより、更新前レコードの管理ブロック８０を構成する領域はすべて消去領域になる。ステップ１５０の後、ステップ１６０に進む。
【００２９】
ステップ１６０では、更新前レコードの管理ブロック８０の消去領域の１つの領域に対して、データの書き込みを行い、非消去領域にする。これにより、更新前レコードの非消去領域数が奇数となり、更新前レコードのフラグを有効を示す状態から無効を示す状態に変更する処理である無効化処理が行われる。
【００３０】
ステップ１６０の後、データの更新処理は終了する。
以下、図９を用いて、データの更新処理の具体的事例について説明する。
更新対象データのデータ識別子であるデータＡが、３種類のデータ値“０”、“１”、“２”をとり得るとし、“０”、“２”、“１”の順にデータ値を更新する処理について説明する。
【００３１】
まず、データＡ“０”からデータＡ“２”に更新する場合について説明する。この場合、図９の（Ａ）に示すように、データブロック７０にデータＡ“０”が記録され、管理ブロック８０Ａの非消去領域数が６である、つまり有効を示すフラグが記録されたレコードが更新前レコードに該当する。また、データブロック７０にデータＡ“２”が記録され、管理ブロック８０Ｃの非消去領域数が３である、つまり無効を示すフラグが記録されたレコードが再利用可能レコードに該当する。
【００３２】
まず、再利用可能レコードの管理ブロック８０Ｃに対して、有効化処理を行う。有効化処理は、図９の（Ｂ）に示すように、再利用可能レコードの管理ブロック８０Ｃの消去領域に、更新前レコードの管理ブロック８０Ａの非消去領域数（６つ）の次の偶数（８つ）まで書き込み、非消去領域にする。これにより、再利用可能レコードの管理ブロック８０Ｃの非消去領域数は偶数となり、再利用可能レコードのフラグを無効を示す状態から有効を示す状態に変更される。次に、更新前レコードの管理ブロック８０Ａに対して、無効化処理を行う。無効化処理は、図９の（Ｃ）に示すように、更新前レコードの管理ブロック８０Ａの消去領域の１つの領域に対して、書き込みを実施し、非消去領域にする。これにより、更新前レコードの管理ブロック８０Ａの非消去領域数は奇数（７つ）となり、更新前レコードのフラグを有効を示す状態から無効を示す状態に変更される。このような処理により、データＡ“０”からデータＡ“２”に更新される。
【００３３】
次に、データＡ“２”からデータＡ“１”に更新する場合について説明する。この場合、図９の（Ｃ）に示すように、データブロック７０にデータＡ“２”が記録され、管理ブロック８０Ｃの非消去領域数が８つである、つまり有効を示すフラグが記録されたレコードが更新前レコードに該当する。また、データブロック７０にデータＡ“１”が記録され、管理ブロック８０Ｂの非消去領域数が５である、つまり無効を示すフラグが記録されたレコードが再利用可能レコードに該当する。
【００３４】
まず、再利用可能レコードの管理ブロック８０Ｂの非消去領域数を、更新前レコードの管理ブロック８０Ｃの非消去領域数（８つ）の次の偶数（２個）にするため、再利用可能レコードの管理ブロック８０Ｂをいったん消去する。そして、図９の（Ｄ）に示すように、すべて消去領域となった再利用可能レコードの管理ブロック８０Ｂのうち２つの消去領域に書き込みを行い、非消去領域にする。これにより、再利用可能レコードの管理ブロック８０Ｂの非消去領域数は偶数（２つ）となり、再利用可能レコードのフラグを無効を示す状態から有効を示す状態に変更される。次に、更新前レコードの管理ブロック８０Ｃに消去領域がないため、更新前レコードの管理ブロック８０Ｃを消去する。図９の（Ｅ）に示すように、すべて消去領域となった更新前レコードの管理ブロック８０Ｃの消去領域の１つの領域に対して、書き込みを実施し、非消去領域にする。これにより、更新前レコードの管理ブロック８０Ｃの非消去領域数（１つ）は奇数となり、更新前レコードのフラグを有効を示す状態から無効を示す状態に変更される。このような処理により、データＡ“２”からデータＡ“１”に更新される。
【００３５】
［１−５．効果］
以上詳述した第１実施形態によれば、以下の効果が得られる。
（１ａ）第１実施形態のフラグは、管理ブロック８０を構成する複数の領域のうち、非消去領域数が偶数のとき、データブロック７０に記録されているデータ値が有効であることを示す。第１実施形態のフラグは、管理ブロック８０を構成する複数の領域のうち、非消去領域数が奇数のとき、データブロック７０に記録されているデータ値が無効であることを示す。
【００３６】
このような構成によれば、更新対象のデータのデータ識別子のデータ値を更新する際、管理ブロック８０の非消去領域数が奇数の無効を示す状態から、書き込みを実施することで、非消去領域数が偶数になり、有効を示す状態になる。そのため、無効を示すフラグが記録されていたレコード３０を再利用することができる。
【００３７】
図１０の（Ｂ）に示すように、データＡ“０”からデータＡ“１”に更新する場合、従来の手法では、データＡ“１”のレコード３０をフラッシュメモリ３に追記する必要があった。しかし、図１０の（Ａ）に示すように、本開示の手法を用いると、レコード３０を追記することなく、フラグを無効から有効に変更することにより、無効を示すフラグが記録されていたレコード３０を再利用することができる。したがって、データ値を更新するたびに、無効を示すフラグが記録されているレコード３０が増加することを抑制することができる。その結果、フラッシュメモリ３に記録されている全データ中において、有効を示すフラグが記録されているレコード３０の割合が増加し、記録効率の低下を抑制することができる。
【００３８】
（１ｂ）第１実施形態のフラグは、データブロック７０に記録されているデータ値が有効か無効かを複数のビット値で管理されている。このような構成によれば、更新対象データのデータ識別子のデータ値を更新するたびに、管理ブロック８０のデータを消去する必要はなく、データの更新が複数回できる。
【００３９】
（１ｃ）第１実施形態のフラグは、管理ブロック８０を構成する複数の領域のうち非消去状態となっている領域の数によって、データブロック７０に記録されているデータ値が有効か無効かを示す。このような構成によれば、レコード３０を追記することなく、フラグを無効から有効に変更することにより、無効を示すフラグが記録されていたレコード３０を再利用することができる。
【００４０】
（１ｄ）第１実施形態の更新処理は、有効化処理の後に無効化処理を行う。具体的には、有効化処理では、再利用可能レコードの管理ブロック８０の非消去領域数を、更新前レコードの管理ブロック８０の非消去領域数の次の偶数にする。このような更新処理によれば、更新対象データのデータ識別子を有するレコード３０について、フラグが有効を示すレコード３０がどのタイミングにも必ず存在する。しかも、再利用可能レコードの非消去領域数と更新前レコードの非消去領域数とが同数になることがない。例えば、図１０の（Ａ）に示す本開示の手法では、データＡ“０”からデータＡ“１”に更新する場合、有効化処理後に、データＡ“１”が有効を示すフラグのレコード３０とデータＡ“０”が有効を示すフラグのレコード３０とが生じる。このタイミングで電源断等で更新処理が止まってしまった時、それぞれのレコード３０の非消去領域数が同数ではないため、前に有効であったデータＡ“０”又は次に有効にすべきデータＡ“１”を判別することができる。
【００４１】
したがって、第１実施形態の更新処理によれば、電源断等で更新処理が止まってしまったとしても、どのデータ値が更新処理の停止前に有効であったデータなのか、あるいは、次に有効にすべきデータなのかを特定することができる。
【００４２】
なお、第１実施形態では、データブロック７０がデータ部に相当し、管理ブロック８０が管理部に相当する。また、Ｓ１１０が検索部としての処理に相当し、Ｓ１２０〜Ｓ１３０が有効化部としての処理に相当し、Ｓ１４０〜Ｓ１６０が無効化部としての処理に相当する。また、フラッシュドライバのプログラムが情報管理プログラムに相当し、更新処理に従った更新方法が情報管理方法に相当する。
【００４３】
［２．第２実施形態］
［２−１．第１実施形態との相違点］
第２実施形態は、基本的な構成は第１実施形態と同様であるため、共通する構成については説明を省略し、相違点を中心に説明する。なお、第１実施形態と同じ符号は、同一の構成を示すものであって、先行する説明を参照する。
【００４４】
前述した第１実施形態では、非消去領域数によりフラグの書き換えを行う。これに対し、第２実施形態では、複数ビットの値によりフラグの書き換えを行う点で第１実施形態と相違し、その相違点に伴い更新処理等が異なる。以下、異なる点を説明する。
【００４５】
［２−２．ブロック構造］
第２実施形態におけるフラッシュメモリ３は、図１２に示すように、レコード３０がデータ部６００及び管理部６１０に区分されている。なお、第１実施形態では、データブロック７０及び管理ブロック８０のそれぞれが、消去単位としてのブロック１つ分で構成されていたが、第２実施形態では、データ部６００及び管理部６１０は同一ブロックの一部で構成されている。つまり、第２実施形態における消去単位としてのブロックのサイズは、第１実施形態におけるブロックのサイズよりも大きいことが前提とされている。具体的には、第２実施形態のブロックのサイズは、第１実施形態における仮想ブロック２０のサイズに相当する。
【００４６】
［２−３．消去動作］
第２実施形態におけるフラッシュメモリ３の消去動作について説明する。第２実施形態で用いられるフラッシュメモリ３は、ビット値「１」が書き込まれた領域にビット値「０」を書き込むことが可能である一方、ビット値「０」が書き込まれた領域にビット値「１」を書き込むことができず、データを消去する必要がある。データを消去すると、ブロック内のビットの値がすべて「１」になる。
【００４７】
例えば図１１の（Ａ）のように「００００００００」という８つのビット値が書き込まれた状態で、データの消去が行われると、図１１の（Ｂ）のように８つのビット値がすべて「１」になる。次に、図１１の（Ｃ）のように、左端の１ビットの領域にビット値「０」が書き込まれると、ビット値は「０１１１１１１１」になる。
【００４８】
［２−４．データの更新処理］
図１２を用いて、第２実施形態におけるフラグの書き換えについて説明する。フラグの書き換えは、［２−３］項で示したような第２実施形態におけるフラッシュメモリ３の特性を活用して行う。まず、管理部６１０の複数ビットの値、本実施形態では８ビットの値が「１１１１１１１１」のとき、フラグはデータ値が無効であることを示す。次に、「１１１１１１１１」の左端の１ビットに書き込みを実施すると、「０１１１１１１１」になり、フラグはデータ値が有効であることを示す。次に、「０１１１１１１１」の書き込みが行われていない複数ビットの値「１１１１１１１」の左端の１ビットに書き込みを実施すると、「００１１１１１１」となり、フラグはデータ値が無効であることを示す。つまり、管理部６１０の８つのビット値のうち、「０」の数が奇数のとき、フラグは有効を示し、「０」の数が偶数のとき、フラグは無効を示す。このように管理部６１０の複数ビットの値に書き込みを繰り返し実施することにより、フラグは循環的に有効無効を切り替えることができる。有効無効を８回書き換えて、「００００００００」になったら、管理部６１０の複数ビットの値が「１１１１１１１１」のレコードを追記する。
【００４９】
次に図１３を用いて、ＣＰＵ５がＲＯＭ１１に記録されているフラッシュドライバのプログラムに従い実行する更新処理（更新方法）について説明する。更新処理とは、更新対象データのデータ識別子について、データ値を第１の値から第２の値に更新することである。以下の説明では、データ部６００に更新対象データのデータ識別子及び第１の値が記録され、管理部６１０に有効を示すフラグが記録されているレコード３０を、更新前レコードと称する。また、データ部６００に更新対象データのデータ識別子及び第２の値が記録され、管理部６１０に無効を示すフラグが記録されているレコード３０を、再利用可能レコードと称する。
【００５０】
更新処理は、ＣＰＵ５が、データの更新要求を受け取ることにより開始される。ステップ７１０では、再利用可能レコードを検索し、データ値を更新するために更新後のデータ値のレコード３０を追記する必要があるか否かを判断する。ここで肯定判断されるとステップ７２０に進む。一方、否定判断されると、ステップ７３０に進む。
【００５１】
更新後のデータ値のレコードを追記する必要がある場合とは、再利用可能レコードが検索されなかった場合、又は、検索された再利用可能レコードの管理部６１０の「０」の数を、更新前レコードの管理部６１０の「０」の数の次の奇数にすることができない場合である。すなわち、第２実施形態では、再利用可能レコードの管理部６１０の「０」の数を、更新前レコードの管理部６１０の「０」の数の次の奇数となるように更新する。「０」の数の最大値は８であるため、ここでいう「次の奇数」は、１→３→５→７→１…の順で循環的に連続すると考える。例えば、再利用可能レコードの管理部６１０のビット値がすべて「０」で埋まっている場合、再利用可能レコードの管理部６１０に更新前レコードの管理部６１０の「０」の数の次の奇数まで書き込むことができない。また例えば、再利用可能レコードの管理部６１０の「０」の数が、更新前レコードの管理部６１０の「０」の数の次の奇数よりも大きな値である場合も該当する。
【００５２】
ステップ７２０では、更新後のデータ値のレコードを追記する。具体的には、データ部６００に更新対象データのデータ識別子及び第２の値が記録され、管理部６１０のビット値がすべて「１」のレコード３０を追記する。ステップ７２０の後、ステップ７３０に進み、再利用可能レコードに対する処理を、追記したレコードに対して行う。
【００５３】
ステップ７３０では、再利用可能レコードの管理部６１０の「０」の数が、更新前レコードの管理部６１０の「０」の数の次の奇数となるように書き込みを行う。これにより、再利用可能レコードのフラグを無効を示す状態から有効を示す状態に変更する処理である有効化処理が行われる。具体的には、更新前レコードの管理部６１０の「０」の数が２であり、再利用可能レコードの管理部６１０の「０」の数が３の場合、再利用可能レコードの管理部６１０の「０」の数が５になるように、３つのビット値を書き込む。
【００５４】
続くステップ７４０では、更新前レコードの管理部６１０にビット値「１」が存在するか判断する。ここで否定判断されるとステップ７５０に進む。一方、肯定判断されるとステップ７６０に進む。
【００５５】
ステップ７５０では、更新前レコードを追記する。ただし、第２実施形態では、管理部６１０の８つのビット値のうち、「０」の数が奇数のときフラグが有効を示すことを前提としており、更新前レコードの管理部６１０にビット値「１」が存在しない場合がないため、ステップ７５０は実施せずにステップ７６０に進むことになる。換言すれば、例えば「０」の数が偶数のときフラグが有効を示すことを前提とした構成であれば、ステップ７５０の処理が実行され得る。ステップ７５０の後、ステップ７６０に進む。
【００５６】
ステップ７６０では、更新前レコードの管理部６１０の最小書き込み単位の「１」を「０」にする。具体的には、更新前レコードの管理部６１０「０００１１１１１」に、最小の書き込み単位の「１」を「０」にして、「００００１１１１」にする。その結果、更新前レコードのフラグを有効を示す状態から無効を示す状態に変更する処理である無効化処理が行われる。
【００５７】
ステップ７６０の後、データの更新処理は終了する。
以下、図１４を用いて、データの更新処理の具体的事例について説明する。
更新対象データのデータ識別子であるデータＡが、３種類のデータ値“０”、“１”、“２”をとり得るとし、“０”、“２”、“１”の順にデータ値を更新する処理について説明する。
【００５８】
まず、データＡ“０”からデータＡ“２”に更新する場合について説明する。この場合、図１４の（Ａ）に示すように、データ部６００にデータＡ“０”が記録され、管理部６１０Ａに「０００００１１１」が記録されている、つまり有効を示すフラグが記録されたレコードが更新前レコードに該当する。また、データ部６００にデータＡ“２”が記録され、管理部６１０Ｃに「００１１１１１１」が記録されている、つまり無効を示すフラグが記録されたレコードが再利用可能レコードに該当する。
【００５９】
まず、再利用可能レコードの管理部６１０Ｃに対して、有効化処理を行う。有効化処理は、図１４の（Ｂ）に示すように、再利用可能レコードの管理部６１０Ｃの「０」の数（２つ）が、更新前レコードの管理部６１０Ａの「０」の数（５つ）の次の奇数（７つ）となるように、５つのビット値に「０」を書き込む。これにより、再利用可能レコードのフラグを無効を示す状態から有効を示す状態に変更される。次に、更新前レコードの管理部６１０Ａに対して、無効化処理を行う。無効化処理は、図１４の（Ｃ）に示すように、更新前レコードの管理部６１０Ａの最小書き込み単位の「１」を「０」にする。これにより、更新前レコードのフラグを有効を示す状態から無効を示す状態に変更される。このような処理により、データＡ“０”からデータＡ“２”に更新される。
【００６０】
次に、データＡ“２”からデータＡ“１”に更新する場合について説明する。この場合、図１４の（Ｃ）に示すように、データ部６００にデータＡ“２”が記録され、管理部６１０Ｃに「０００００００１」が記録されている、つまり有効を示すフラグが記録されたレコードが更新前レコードに該当する。また、データ部６００にデータＡ“１”が記録され、管理部６１０Ｂに「００００１１１１」が記録されている、つまり無効を示すフラグが記録されたレコードが再利用可能レコードに該当する。
【００６１】
まず、再利用可能レコードの管理部６１０Ｂの「０」の数（４つ）を、更新前レコードの管理部６１０Ｃの「０」の数（７つ）の次の奇数（１つ）にすることができないため、更新後のデータ値“１”のレコードを追記する。つまり、データ部６００にデータＡ“１”が記録され、管理部６１０Ｄのビット値がすべて「１」のレコード３０を追記する。そして、図１４の（Ｄ）に示すように、更新後のデータ値のレコードの管理部６１０Ｄの「０」の数が、更新前レコードの管理部６１０Ｃの「０」の数（７つ）の次の奇数（１つ）となるように書き込む。これにより、更新後のデータ値“１”のレコードのフラグを無効を示す状態から有効を示す状態に変更される。次に、更新前レコードの管理部６１０Ｃの最小書き込み単位の「１」を「０」にする。これにより、更新前レコードのフラグを有効を示す状態から無効を示す状態に変更される。このような処理により、データＡ“２”からデータＡ“１”に更新される。
【００６２】
［２−５．効果］
以上詳述した第２実施形態によれば、前述した第１実施形態の効果に加え、以下の効果が得られる。
【００６３】
（２ａ）第２実施形態のフラグは、管理部６１０の８つのビット値のうち、「０」の数が奇数のとき有効を示し、「０」の数が偶数のとき無効を示す。このような構成によれば、フラグを無効から有効に変更することにより、無効を示すフラグが記録されていたレコード３０を複数回再利用することができる。したがって、データ値を更新するたびに、無効を示すフラグが記録されているレコード３０が増加することを抑制することができる。その結果、フラッシュメモリ３に記録されている全データ中において、有効を示すフラグが記録されているレコード３０の割合が増加し、記録効率の低下を抑制することができる。
【００６４】
（２ｂ）第２実施形態の更新処理は、有効化処理の後に無効化処理を行う。具体的には、有効化処理では、再利用可能レコードの管理部６１０に更新前レコードの管理部６１０の「０」の数の次の奇数にする。このような更新処理によれば、更新対象データのデータ識別子を有するレコード３０について、フラグが有効を示すレコード３０がどのタイミングにも必ず存在する。しかも、再利用可能レコードの「０」の数と更新前レコードの「０」の数とが同数になることがない。例えば、図１０の（Ａ）に示す本開示の手法では、データＡ“０”からデータＡ“１”に更新する場合、有効化処理後に、データＡ“１”が有効を示すフラグのレコード３０とデータＡ“０”が有効を示すフラグのレコード３０とが生じる。このタイミングで電源断等で更新処理が止まってしまった時、それぞれのレコード３０の「０」の数が同数ではないため、前に有効であったデータＡ“０”又は次に有効にすべきデータＡ“１”を判別することができる。
【００６５】
したがって、第２実施形態の更新処理によれば、電源断等で更新処理が止まってしまったとしても、どのデータ値が更新処理の停止前に有効であったデータなのか、あるいは、次に有効にすべきデータなのかを特定することができる。
【００６６】
なお、第２実施形態では、Ｓ７１０が検索部としての処理に相当し、Ｓ７２０〜Ｓ７３０が有効化部としての処理に相当し、Ｓ７４０〜Ｓ７６０が無効化部としての処理に相当する。
【００６７】
［３．他の実施形態］
以上、本開示を実施するための形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
【００６８】
（３ａ）上記第１実施形態において、フラグは、管理ブロック８０を構成する複数の領域のうち、非消去領域数が偶数のとき、データブロック７０に記録されているデータ値が有効であり、非消去領域数が奇数のとき、データブロック７０に記録されているデータ値が無効である例を示したが、これに限定されるものではない。例えば、フラグは、管理ブロック８０を構成する複数の領域のうち、非消去領域数が奇数のとき、データブロック７０に記録されているデータ値が無効であり、非消去領域数が偶数のとき、データブロック７０に記録されているデータ値が有効であってもよい。また、非消去領域数により、データブロック７０に記録されているデータ値が有効か無効かを示すことができればよい。
【００６９】
（３ｂ）上記第１実施形態において、管理ブロック８０は８つの領域に区分される例を示したが、これに限定されるものではなく、７つ以下の領域や９つ以上の領域に区分されていてもよい。
【００７０】
（３ｃ）上記第２実施形態において、フラグは、管理部６１０の８つのビット値のうち、「０」の数が奇数のとき有効を示し、「０」の数が偶数のとき無効を示す例を示したが、これに限定されるものではない。例えば、フラグは、管理部６１０の８つのビット値のうち、「０」の数が偶数のとき有効を示し、「０」の数が奇数のとき無効を示してもよい。
【００７１】
（３ｄ）上記第２実施形態において、管理部６１０は８ビットの値である例を示したが、これに限定されるものではなく、７ビット以下の値や９ビット以上の値であってもよい。
【００７２】
（３ｅ）上記実施形態の構成は、ボデー系車両制御システムに適用されてもよい。例えば、車両に装備されたエアコン及びメータのうち少なくとも一方の有する機能がオン状態であるかオフ状態であるかを表す値が、データ値としてフラッシュメモリに記録されていてもよい。
【００７３】
（３ｆ）上記第１実施形態において、レコード３０はデータブロック７０と管理ブロック８０の組である例を示したが、これに限定されるものではない。レコード３０に少なくとも、データブロック７０と管理ブロック８０が記録されていればよい。
【００７４】
同様に、上記第２実施形態において、レコード３０はデータ部６００及び管理部６１０の組である例を示したが、これに限定されるものではない。レコード３０に少なくとも、データ部６００及び管理部６１０が記録されていればよい。
【００７５】
（３ｇ）上記実施形態における１つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、１つの構成要素が有する１つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、１つの構成要素によって実現したり、複数の構成要素によって実現される１つの機能を、１つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。なお、特許請求の範囲に記載した文言のみによって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。
【符号の説明】
【００７６】
１…情報管理装置、３…フラッシュメモリ、５…ＣＰＵ、７…Ｉ／Ｏ、９…フラッシュコントローラ、１１…ＲＯＭ、１３…ＲＡＭ、１５…電源、２０…仮想ブロック、３０…レコード、７０…データブロック、８０，８０Ａ，８０Ｂ，８０Ｃ…管理ブロック、６００…データ部、６１０，６１０Ａ，６１０Ｂ，６１０Ｃ，６１０Ｄ…管理部
【図１】
0006512091.tif 000002
【図２】
0006512091.tif 000003
【図３】
0006512091.tif 000004
【図４】
0006512091.tif 000005
【図５】
0006512091.tif 000006
【図６】
0006512091.tif 000007
【図７】
0006512091.tif 000008
【図８】
0006512091.tif 000009
【図９】
0006512091.tif 000010
【図１０】
0006512091.tif 000011
【図１１】
0006512091.tif 000012
【図１２】
0006512091.tif 000013
【図１３】
0006512091.tif 000014
【図１４】
0006512091.tif 000015