(57)【要約】【課題】既に記録されているデータへのアクセスを高速化するデータ記録方法を提供すること。【解決手段】複数のデータを識別するデータＩＤにブロック１０の領域のアドレス情報が対応づけられたテーブル１５を、ブロック１０に書き込むデータのデータＩＤに基づき参照するステップＳ１０と、テーブル１５から書き込むデータのアドレス情報を読み出すステップＳ２０と、領域でデータが記録されていない、最も上位又は下位のアドレスを検出するステップＳ３０と、アドレスにデータを書き込むステップＳ４０と、空きメモリが少ない領域を検出するステップＳ５０ステップと、空きメモリが少ない領域がある場合、領域それぞれの使用状況を検出するステップＳ１５０と、使用状況に応じて調整された領域それぞれのサイズに、切り替え後のブロックの領域を再構成するステップＳ１７０と、を有する。【選択図】図１
2010140346.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位で切り替え可能なデータ用メモリにデータを記録するデータ記録方法において、
複数のデータを識別するデータＩＤにブロックの領域のアドレス情報が対応づけられたテーブルを、前記ブロックに書き込むデータのデータＩＤに基づき参照するステップと、
前記テーブルから書き込むデータの前記アドレス情報を読み出すステップと、
前記アドレス情報が指定する前記領域でデータが記録されていない、最も上位又は下位のアドレスを検出するステップと、
前記アドレスにデータを書き込むステップと、
空きメモリが少ない前記領域を検出するステップと、
空きメモリが少ない前記領域がある場合、前記領域それぞれの使用状況を検出するステップと、
前記使用状況に応じて調整された前記領域それぞれのサイズに、切り替え後のブロックの前記領域を再構成するステップと、
を有することを特徴とするデータ記録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体メモリの予め定められた大きさのブロックにデータを記録するデータ記録方法に関し、特に、ブロックに空きメモリがなくなるとブロックを切り替えて記録するデータ記録方法に関する。
【背景技術】
【０００２】
フラッシュメモリなどの半導体メモリに記録されているデータへのアクセス時間を短縮する試みがなされている（例えば、特許文献１参照。）。特許文献１には、データを格納する複数の消去ブロックに、格納されているデータが有効か無効かをブロック制御情報にて管理するデータ管理システムが開示されている。無効のデータが多い消去ブロックから再構築することでデータへのアクセス時間を短縮するとしている。
【０００３】
ところで、半導体メモリへデータを格納する態様として、プログラム格納用の半導体メモリとは別又はその一部に、主にデータを記録する専用に設けられた半導体メモリがマイコンに搭載されることがある（以下、データ用メモリという）。
【０００４】
図４（ａ）は、従来のデータ用メモリにデータを記録する手順を模式的に説明する図の一例である。データ用メモリは複数のブロックからなり、まず所定のブロックにアドレスを変えながらデータを記録していく。例えば、対象の状態を示すデータであれば変化した状態に応じて同じデータだが値の異なるものが次々と記録される。このため、記録するデータには識別するためのＩＤが付与され、同じＩＤのデータがアドレス順に記録されることになる。
【０００５】
したがって、同じＩＤのデータでは、アドレスから判別される最新のデータがその対象の現在の状態を表す値を保持していることになる。しかしながら、半導体メモリにデータを記録する際にＩＤが化けることがあるため、ＩＤだけでは最新のデータにアクセスできない場合が生じる。このため、最新のデータを記録する際は、記録するまで最新だった同じＩＤのデータを無効化する。図では、「Ｄａｔａ」と「ＩＤ」に続いて「無効化」記されたデータが無効化されたデータであることを示す。「無効化」されたデータであることはフラグを立てたり管理用のデータベースを設けることで識別される。
【０００６】
そして、図４（ａ）に示すブロックのように書き込み可能なセクタがなくなると、例えばドライバが別のブロックを用意し、各ＩＤ毎に最新のデータのみを転記する。元のブロックのデータは全て消去される。その新しいブロックに書き込み可能な領域がなくなると、ドライバが同じ作業を繰り返す。
【特許文献１】特開２００２−１５７１４９
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、このようなデータ記録方法では２つの問題がある。
【０００８】
・ブロックからブロックへデータを転記する際、最新のデータを検索するが、同じＩＤのデータが多く記録されていると、最新のデータを検索するまでに時間がかかる。例えば、図４（ａ）では、最新のData１、Data３又はData4は比較的早期に抽出できるが、Data２はデータ用メモリの最後から２番目のアドレスまで検索しないと抽出できない。Data２のような状況は、Data2が記録された後、その後一度も新しいData2が記録されないような場合に生じる。また、そもそも書き込みがないデータがあればアドレスの最後まで検索する必要が生じる場合もある。すなわち、従来のデータ記録方法では、最新のデータを抽出するまでに時間がかかるという問題があった。
【０００９】
・また、最新のデータをブロックに記録する際、記録するまで最新だった同じＩＤのデータを無効化するが、この同じＩＤの最も新しいデータを検索する際も時間がかかるという問題がある。図４（ｂ）は、無効化を模式的に示す図である。最新のData4を新たに記録するため既に記録されているData4を無効化するが、Data4はアドレスの最後の方に記録されているので、抽出するまでに時間がかかってしまう。
【００１０】
本発明は、上記課題に鑑み、ブロック単位で切り替え可能なデータ用メモリにデータを記録するデータ記録方法において、既に記録されているデータへのアクセスを高速化するデータ記録方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題に鑑み、本発明は、ブロック単位で切り替え可能なデータ用メモリにデータを記録するデータ記録方法において、複数のデータを識別するデータＩＤにブロックの領域のアドレス情報が対応づけられたテーブルを、ブロックに書き込むデータのデータＩＤに基づき参照するステップと、テーブルから書き込むデータのアドレス情報を読み出すステップと、アドレス情報が指定する領域でデータが記録されていない、最も上位又は下位のアドレスを検出するステップと、アドレスにデータを書き込むステップと、空きメモリが少ない領域を検出するステップと、空きメモリが少ない領域がある場合、領域それぞれの使用状況を検出するステップと、使用状況に応じて調整された領域それぞれのサイズに、切り替え後のブロックの領域を再構成するステップと、を有することを特徴とする。
【発明の効果】
【００１２】
ブロック単位で切り替え可能なデータ用メモリにデータを記録するデータ記録方法において、既に記録されているデータへのアクセスを高速化するデータ記録方法を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明を実施するための最良の形態について図面を参照しながら説明する。
図１は、本実施形態のデータ用メモリ１２におけるブロックの構造を模式的に説明する図の一例を示す。このブロック構造は２つの特徴を備える。なお、少なくとも２つのブロックＡ，Ｂが用意されており、随時切り替えて使用される（以下、両者を区別しない場合、単にブロック１０という）。
（１）図示するように、１つのブロックＡが複数のデータ領域に区分されている。例えば、アドレス００００〜４０００がData４を記録する「Data４領域」、アドレス５０００〜９０００がData３を記録する「Data３領域」、アドレス１００００〜１７０００がData１を記録する「Data１領域」、アドレス１８０００〜１９０００がData２を記録する「Data２領域」である。なお、いずれかのデータ領域に書き込み可能なセクタがなくなると（以下、データフラッシュという場合がある）、新しいブロックＢに最新のデータのみが転記される。
【００１４】
このようにブロック１０をデータのＩＤ毎に区分することで、各データ領域のサイズ（以下、サイズをセクタ数という場合がある）が小さくなりデータの最大検索時間を短くすることができる。例えば、最大検索時間が最も長いData1でも８つのセクタを検索すれば最新のData１を抽出することができる。また、Data２のように書き込み回数が少ないデータでも、Data2領域が限定されている（サイズが小さい）ので最大検索時間を短時間にすることができる。
【００１５】
また、この結果、あるデータ領域に記録されるデータは必ず同じＩＤのデータとなるので、ブロック１０にデータを記録する際にＩＤ化けが生じても、データを識別することができる。すなわち、各データ領域において最も新しいデータが有効なデータであり、それ以外は無効であることが分かるので、従来のように「無効」であることを示す情報を付加する必要がない。仮にＩＤが化けていれば、そのデータは異常なデータであると推定でき、使用しない等の処理が可能となる。
（２）また、本実施形態のデータ記録方法では、いずれかのデータ領域に書き込み可能なセクタがなくなると、他方のブロックＢに最新のData１〜Data４を転記するが、転記の際、各データ領域を再構成する。すなわち、書き込み数の多いデータほど多くのセクタが割り当てられるようにデータ領域を再構成するので、データフラッシュの間隔を長くできる。以下、詳細に説明する。
【００１６】
図２（ａ）はデータ用メモリ１２のハードウェア構造の一例を、図２（ｂ）はデータ用メモリ１２とそれを利用するソフトウェアの構造の一例を、模式的に示す図の一例である。図２（ａ）のマイコン１１は、ＣＰＵ、ＲＡＭ及び入出力インターフェイス、等をそなえたコンピュータである。マイコン１１は、例えば車両に搭載される電子制御ユニット（ＥＣＵ：Electronic  Control  Unit）である。電子制御ユニットには種々のものがありその機能も多様化しているが、例えばエンジンの燃料噴射タイミング、燃料噴射量、回転速度等を制御するエンジンＥＣＵ、ナビゲーションシステムに用いられるナビＥＣＵ等、多くの電子制御ユニットが知られている。したがって、記録されるデータは、例えば水温や位置情報等多岐にわたる。本実施形態のデータ用メモリ１２は電子制御ユニットを問わずに搭載できる。
【００１７】
データ用メモリ１２は、例えばＮＡＮＤ型又はＮＯＲ型のフラッシュメモリ、ＭＲＡＭ（Magnetoresistive  Random  Access  Memory）、ＦｅＲＡＭ（Ferroelectric  Random  Access  Memory）、ＯＵＭ（Ovonics  Unified  Memory）等の不揮発メモリである。主に、ＥＥＰＲＯＭ（Electrically  Erasable  PROM）の代わりに採用され、マイコン１１内に搭載できるので基板実装面積を削減することができる。また、外付けのＥＥＰＲＯＭと接続するピンの割り当てが不要になり、ノイズ対策も不要となる。ブロック１０のサイズは例えば１ｋバイト〜２ｋバイト、又は、数ｋ〜数十ｋバイトである。したがって、ブロック１０がブロックＡ，Ｂの２つの場合、データ用メモリ１２の容量はこの２倍となる。また、１つのセクタは例えば２バイト程度であるが、セクタの大きさは可変である。
【００１８】
データ用メモリ１２はデータ記録用として用いられるが、データ用メモリ１２の一部にプログラムが記録されている。このプログラムには、アプリケーションプログラム１３やドライバ１４のプログラムが含まれ、マイコン１１がこれらを実行することで図２（ｂ）のソフトウェア構造が実現される。データ用メモリ１２へのアクセスはアプリケーションプログラム１３又はドライバ１４のいずれでも可能であるが、ドライバ１４を利用することでアプリケーションプログラム１３からＡＰＩ（Application  Programming  Interface）関数を呼び出すだけで、ドライバ１４がデータ用メモリ１２にアクセスし、ＡＰＩ関数に応じて、データの書き込み、読み出し、初期化（ブロック１０の消去）等を実行することができる。以下では、原則的にドライバ１４により提供される機能を利用し、ドライバ１４が提供しない機能はアプリケーションプログラム１３が提供するものとする。すなわち、本実施形態の各機能はアプリケーションプログラム１３とドライバ１４のいずれにより提供されてもよい。なお、ドライバ１４の実行にはＯＳ（Operating  System）は不要であるがアプリケーションプログラム１３の実行のためＯＳを実装していてもよい。
【００１９】
＜データ領域の区分＞
データのＩＤ毎に区分されるデータ領域について説明する。データ領域区分部２１は、１つのブロック１０を複数のデータ領域に区分する。アプリケーションプログラム１３にとってデータ用メモリ１２に記録するデータの種類（Data１〜Data４）は既知なので、データ領域区分部２１はいくつのデータ領域に区分すべきかアプリケーションプログラム１３から取得する。
【００２０】
まず、マイコン１１に電力が供給された初期状態では、データ領域区分部２１は、各データ毎に予め設定されたデータ領域又は等分にブロック１０を区分する。そして、データ領域区分部２１は、ＩＤ毎にアドレスを対応づけたテーブル１５をデータ用メモリ１２やＲＡＭに記録する。例えば、ＩＤ１：００００〜００ＦＦ、ＩＤ２：０１００〜０２ＦＦ、ＩＤ３：０３００〜０８ＦＦ、ＩＤ４：０９００〜０９５Ｆ、のようにブロック１０を区分する。データの検索時にはテーブル１５を参照してＩＤからデータ領域のアドレスを検出できるので、ドライバ１４はブロック全体を検索することなく短時間にデータを抽出することができる。
【００２１】
＜データの読み出し＞
データ読み出し部２２は、ブロック１０からデータを読み出す。この機能はドライバ１４が提供するＡＰＩ関数のうちデータ読み出し関数を呼び出すことで実現できる。例えば、データ読み出し関数の引数「ＩＤ」「読み出し先ＲＡＭアドレス」を指定すればよい。しかしながら、本実施形態ではデータ領域が区分されているので、さらに読み出すデータのデータ領域のアドレスを示す引数を指定する。例えば、Data１を読み出す場合は「ＩＤ１」「読み出し先ＲＡＭアドレス」「００００〜００ＦＦ」を引数に指定する。なお、アドレスを指定するので、「ＩＤ１」を省略してもよい。
【００２２】
なお、ＩＤ毎にアドレスを対応づけたテーブル１５をデータ用メモリ１２が有するのであれば、データ読み出し部２２は、データ領域のアドレス「００００〜００ＦＦ」を引数にすることなく、「ＩＤ１」「読み出し先ＲＡＭアドレス」だけでData１を読み出すことができる。
【００２３】
引数を指定されたデータ読み出し部２２は、読み出すデータのデータ領域のアドレスに降順又は昇順にアクセスし、最新のデータを読み出し、ＲＡＭの読み出し先ＲＡＭアドレスに記録する。図１に示したように、各データ領域の各セクタには同じＩＤのデータが記憶されていくので、読み出したいデータ以外のデータが格納されているデータ領域を検索する必要がない。したがって、極めて短時間で所望のデータを読み出すことができる。
【００２４】
＜データの書き込み＞
データ書き込み部２３は、ブロック１０にデータを書き込む。この機能もドライバ１４が提供するＡＰＩ関数のうちデータ更新関数を呼び出すことで実現できる。例えば、データ更新関数に「ＩＤ」「書き込み元ＲＡＭアドレス」を引数で指定すればよい。しかしながら、本実施形態ではデータ領域が区分されているので、さらに書き込むデータのデータ領域のアドレスを示す引数を指定する。例えば、Data１に書き込む場合は「ＩＤ１」「書き込み元ＲＡＭアドレス」「００００〜００ＦＦ」を引数に指定する。なお、アドレスを指定するので、「ＩＤ１」を省略してもよい。
【００２５】
引数を指定されたデータ書き込み部２３は、書き込むデータのデータ領域のアドレスに降順又は昇順にアクセスし、それまで最新であったデータの次のアドレスに、書き込み元ＲＡＭアドレスに記録されているデータを書き込む。したがって、図１に示したように、データ領域毎に、アドレスの降順又は昇順に新しいデータを記録していくことができる。
【００２６】
なお、引数「ＩＤ」で指定したデータのデータ領域に書き込み可能なセクタがない場合、データ書き込み部２３はデータ更新関数の戻り値によりそれを検出する。これにより、データ書き込み部２３は、一連のブロック管理処理に移行する。
【００２７】
＜ブロック管理処理＞
ブロック管理処理は、ブロックＡの各データから最新データを読み出す最新データ取得処理、ブロックＢのデータ領域を再構成する再構成処理、ブロックＡを初期化するブロック初期化処理、及び、最新データの記録、の一連の処理をいう。
【００２８】
・最新データ取得処理
最新データ取得部２４は、データ領域毎に最新のデータをブロックＡから読み出す。図１の場合、Data１〜Data４それぞれの最新のデータを読み出すので、計４つのデータを読み出す。読み出された最新のData１〜Data４は、いったん例えばＲＡＭに記録される。したがって、この処理はデータの読み出しと同じ手順で実現でき、最新データ取得部２４は、例えばＩＤ毎にデータ読み出し部２２にデータの読み出しを要求することで実現できる。
【００２９】
・再構成処理
再構成部２５は、ブロックＢの各データ領域のサイズをブロックＡにおける各データ領域の使用状況に応じて再構成する。図１に示したように、Data１領域に書き込み可能なセクタがなくなった場合、再構成部２５は、Data２領域、Data３領域及びData領域４の空きセクタ数を検出する。ＡＰＩ関数にはブロック内の書き込み可能なセクタ数を取得するものがあるが、ここではデータ領域毎に空きセクタ数を検出する必要がある。このため、再構成部２５は、例えばデータ読み出し部２２又はデータ書き込み部２３と同様に、データ領域毎に最新のデータが記録されているアドレスとテーブル１５に登録されたデータ領域のアドレスから、空きセクタ数を検出する。
【００３０】
ブロックＡからブロックＢに切り替えた後も、それまでと同様のアプリケーションプログラム１３をマイコンが実行するであれば、データ用メモリ１２に書き込むData１〜Data４の頻度は同程度と考えられる。そこで、再構成部２５は、いずれかのデータ領域に空きセクタのなくなった時の、他のデータ領域の空きセクタの数に応じて、各データ領域のサイズを決定する。各データ領域のサイズは、いずれかのデータ領域に空きセクタのなくなった時に記録されているデータ数に若干のマージンを見込んで決定される。マージンは、例えば記録されているデータ数の数〜数十％、又は、予め定められた固定値、等である。
【００３１】
例えば、Data１領域に空きセクタがなくなり、マージンを１０％とした場合、再構成部２５は、次のようにデータ領域のサイズ（セクタ数）を決定する。
ブロックＡのData４領域に１０個のData４が記録されている
→    Data４領域のセクタ数を１０＋１  に決定する
ブロックＡのData３領域に２０個のData３が記録されている
→    Data３領域のセクタ数を２０＋２  に決定する
ブロックＡのData２領域に３０個のData２が記録されている
→    Data２領域のセクタ数を１０＋３  に決定する
また、再構成部２５は、ブロック１０の残ったセクタをData１領域に決定する。
【００３２】
こうすることで、余裕のあった各データ領域を最小限に小さくし、空きセクタがなくなったデータ領域を最大にすることができる。一方、頻繁に書き込まれないデータのデータ領域は、ブロック１０の切り替え時に確保されるサイズがほぼ一定になる。したがって、データの書き込み頻度が大きいデータに対しサイズの大きいデータ領域を確保しやすくなる。
【００３３】
なお、この再構成によりブロックＡでは空きセクタがなくなったデータ領域のサイズが大きすぎた場合には、ブロックＢからブロックＡに再度切り替わる際に、大きすぎたデータ領域のサイズが、記録されているデータ数に若干のマージンを加えたサイズに小さくされる。したがって、ブロック１０の切り替わり度にデータ領域のサイズの最適化が進行する。
【００３４】
このようにして各データ領域のサイズを決定すると、再構成部２５はデータ領域区分部２１に決定後の各データ領域のサイズを通知する。これにより、データ領域区分部２１は上記のように、ＩＤ毎にアドレスを対応づけたテーブル１５をＲＡＭに記録する。
【００３５】
・ブロック初期化処理
初期化部２６は、ブロックＡを初期化する。この機能もドライバ１４が提供するＡＰＩ関数のうちブロック消去関数を呼び出すことで実現できる。なお、ブロック毎に指定した初期化が可能であれば、ブロックＡの初期化は次にブロックＡからブロックＢに切り替わるまでに実行すればよい。しかし、ブロック消去関数で初期化するブロック１０はドライバ１４が管理していて、初期化部２６が初期化するブロックＡ、Ｂを指定することが困難な場合があるので、その場合にはブロックＢに切り替える前にブロックＡを初期化する。
【００３６】
・最新データの記録
ブロックＢの各データ領域のアドレスが決定したので、データ書き込み部２３は、ブロックＢにデータを書き込む。データ書き込み部２３は、ＲＡＭに退避されている最新のData１〜４を、ブロックＢの各データ領域に記録する。記録するセクタは、書き込むデータのデータ領域の最も小さい又は大きいアドレスのセクタである。以上で、ブロック管理処理が終了する。
【００３７】
＜データの書き込み、ブロック管理処理の手順＞
図３（ａ）はデータの書き込み手順を、図３（ｂ）はブロック管理処理の手順をそれぞれ示すフローチャート図の一例である。
【００３８】
図３（ａ）のフローチャートを実行する前に、既にデータ領域区分部２１がＩＤ毎にアドレスを対応づけたテーブル１５をＲＡＭに記録しているものとする。
【００３９】
アプリケーションプログラム１３やI/Oから書き込みたいデータが生成されると、データ書き込み部２３はそのデータのＩＤを取得する（Ｓ１０）。アプリケーションプログラム１３はデータを変数名等で扱うが、データ書き込み部２３には「ＩＤ」が引数の形で渡される。
【００４０】
ついで、データ書き込み部２３はＩＤに基づきテーブル１５を参照し、書き込むデータのデータ領域のアドレスを読み出す（Ｓ２０）。
【００４１】
ついで、データ書き込み部２３は、読み出したデータ領域のアドレスに降順又は昇順にアクセスし、それまで最新であったデータの次のアドレスを検出する（Ｓ３０）。
【００４２】
ついで、データ書き込み部２３は、ＲＡＭの書き込み元ＲＡＭアドレスに記録されているデータをステップＳ３０で検出したデータ領域のアドレスが指定するセクタに書き込む（Ｓ４０）。したがって、データ領域のアドレス順に新たしいデータを記録できた。
【００４３】
そして、データ書き込み部２３は書き込んだデータのデータ領域に、次のデータも書き込み可能なセクタがあるか否かを判定する（Ｓ５０）。書き込み可能なセクタがある場合（Ｓ５０のＹｅｓ）、ブロック管理処理は不要なので図３（ａ）の処理は終了する。書き込み可能なセクタがない場合（Ｓ５０のＮｏ）、最新データ取得部２４等がブロック管理処理を実行する（Ｓ６０）。
【００４４】
図３（ｂ）に移行し、最新データ取得部２４は、テーブル１５に登録されたＩＤを順番に読み出す（Ｓ１１０）。そして、そのＩＤのデータのデータ領域のアドレスをテーブル１５から取得する（Ｓ１２０）。
【００４５】
ついで、最新データ取得部２４は、読み出したデータ領域のアドレスに降順又は昇順にアクセスし、最新のデータのアドレスを検出し（Ｓ１３０）、そのアドレスに記録されている最新のデータを読み出す（Ｓ１４０）。読み出されたデータはＲＡＭに記録される。
【００４６】
また、再構成部２５は、そのＩＤのデータ領域の空きセクタ数を検出する（Ｓ１５０）。
【００４７】
最新データ取得部２４と再構成部２５は、テーブル１５に登録された全てのＩＤについてステップＳ１１０〜Ｓ１５０を繰り返す（Ｓ１６０）。
【００４８】
全てのＩＤのデータについて、最新のデータをＲＡＭに記録すると（Ｓ１６０のＹｅｓ）、再構成部２５はブロックＡにおける各データ領域の使用状況に応じてデータ領域のサイズを再構成する（Ｓ１７０）。これによりブロックＢの各データ領域のアドレスが決定し、テーブル１５には、ＩＤ毎に新たな（再構成後の）アドレスが対応づけられる。データの書き込み頻度が大きいデータに対しサイズの大きいデータ領域を確保できたことになる。
【００４９】
ついで、データ書き込み部２３は、ＲＡＭに退避されている最新のデータをブロックＢの各データ領域に記録する。このため、データ書き込み部２３は、テーブル１５に登録されたＩＤを順番に読み出す（Ｓ１８０）。そして、そのＩＤのデータのデータ領域のアドレスをテーブル１５から読み出す（Ｓ１９０）。
【００５０】
ブロック管理処理で最新のデータを記録するアドレスは、テーブル１５に登録されたアドレスの最も小さい又は最も大きいアドレスが指定するセクタなので、最新のデータを記録するセクタのアドレスを検出する必要はない。
【００５１】
したがって、データ書き込み部２３は、ＲＡＭに退避してある最新のデータを、テーブル１５に登録されたアドレスの最も小さい又は最も大きいアドレスが指定するセクタに記録する（Ｓ２００）。
【００５２】
データ書き込み部２３は、ＲＡＭに退避してある最新のデータについてステップＳ１８０〜Ｓ２００の処理を繰り返す（Ｓ２１０）。
【００５３】
以上説明したように、本実施形態のデータ記録方法では、ブロックをデータのＩＤ毎に区分することで、１つのサイズが小さくなりデータの最大検索時間を短くすることができる。また、書き込みの多いデータほど多くのサイズを割り当てるようにデータ領域を再構成するので、データフラッシュの間隔を最小限にできる。
【図面の簡単な説明】
【００５４】
【図１】データ用メモリにおけるブロックの構造を模式的に説明する図の一例である。
【図２】データ用メモリのハードウェア構造、ソフトウェア構造の一例を示す図である。
【図３】データの書き込み手順、ブロック管理処理の手順をそれぞれ示すフローチャート図の一例である。
【図４】従来のデータ用メモリにデータを記録する手順を模式的に説明する図の一例である。
【符号の説明】
【００５５】
１１    マイコン
１２    データ用メモリ
１３    アプリケーションプログラム
１４    ドライバ
１５    テーブル
【図１】
2010140346.tif 000003
【図２】
2010140346.tif 000004
【図３】
2010140346.tif 000005
【図４】
2010140346.tif 000006