(57)【要約】【課題】高速にデータを検索することが可能な、データ記憶装置、メモリ管理方法、及びプログラムを提供すること。【解決手段】メモリ領域が物理的に分割され、分割された各メモリ領域内に書き換え用のバッファ領域が設けられた不揮発性メモリ１１２と、分割された各メモリ領域内に設けられた書換え用のバッファ領域を利用して、分割された各メモリ領域に記録されたデータを更新するメモリ管理部１０６と、を備えることを特徴とする、データ記憶装置が提供される。かかる構成により、所定のメモリ領域に属するデータを検索する範囲を該当するメモリ領域内に限定することが可能になり、所望のデータに対するアクセスが高速化する。【選択図】図１
2008040594.tif 000002
【特許請求の範囲】
【請求項１】
メモリ領域が物理的に分割され、前記分割された各メモリ領域内に書き換え用のバッファ領域が設けられたメモリと；
前記分割された各メモリ領域内に設けられた前記書換え用のバッファ領域を利用して、前記分割された各メモリ領域に記録されたデータを更新するメモリ管理部と；
を備えることを特徴とする、データ記憶装置。
【請求項２】
前記メモリ管理部は、
前記分割された各メモリ領域毎に、前記分割された各メモリ領域に記録されたデータの断片化を修復することを特徴とする、請求項１に記載のデータ記憶装置。
【請求項３】
前記メモリ管理部は、
前記データ記憶装置の起動時に、前記分割された各メモリ領域に記録されたデータの断片化を修復することを特徴とする、請求項２に記載のデータ記憶装置。
【請求項４】
前記メモリ管理部は、
前記分割されたメモリ領域に記録されているデータを削除する際に、前記分割されたメモリ領域に記録されたデータの断片化を修復することを特徴とする、請求項２に記載のデータ記憶装置。
【請求項５】
前記書換え用のバッファ領域は、
前記メモリに対してデータを書込むことが可能な最小単位と同じサイズであることを特徴とする、請求項１に記載のデータ記憶装置。
【請求項６】
メモリ領域が物理的に分割されたメモリの前記分割された各メモリ領域に設けられた書換え用のバッファ領域を利用して、前記分割された各メモリ領域に記録されているデータを更新することを特徴とする、メモリ管理方法。
【請求項７】
メモリ領域が物理的に分割されたメモリの前記分割された各メモリ領域内に設けられた書換え用のバッファ領域を利用して、前記分割された各メモリ領域に記録されているデータを更新する機能をコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記憶装置、メモリ管理方法、及びプログラムに関する。
【背景技術】
【０００２】
通常、非接触ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カード、又は非接触ＩＣチップを搭載した携帯電話に代表される、非接触通信が可能な通信デバイスには、リーダ／ライタとの間で通信したデータや、サービスの提供に必要な処理を行うアプリケーションを格納するためのメモリが搭載されている。このメモリとしては、例えば、バッファ等の用途に用いられる揮発性メモリと、ユーザデータやアプリケーションを記録する用途に用いられる不揮発性メモリとがある。不揮発性メモリには、ユーザ情報や、該ユーザ情報にアクセスするためのファイルシステム情報が記録されている。
【０００３】
さらに、この不揮発性メモリは、複数のメモリ領域に分割されており、メモリ領域毎に異なるシステムが割り当てられている。ここで言うシステムとは、例えば、１枚の単機能な非接触ＩＣカードに対応する論理的なＩＣカード機能のことをいう。
【０００４】
一般に、データ領域の分割方法には、仮想的な記録位置を示す論理アドレスによってメモリ領域の範囲が定義される論理分割方式と、実メモリ上の記録位置を示す物理アドレスによってメモリ領域の範囲が定義される物理分割方式とがある。通常、論理アドレスにより特定されるデータの位置は、対応する物理アドレスにアドレスマッピングされている。しかし、連続した論理アドレスは、連続した物理アドレスに対応するとは限らない。つまり、論理分割されたメモリ領域に属する論理アドレスは、ばらばらの物理アドレスにマッピングされる可能性がある。従って、メモリ領域が論理的に分割されていても、所定のメモリ領域に属するデータを検索する際に、実メモリ上の全領域を検索しなくてはならないという問題がある。
【０００５】
一方、物理分割方式によると、物理アドレス空間内の各々独立した領域が、各メモリ領域に割り当てられている為、所定のメモリ領域に属するデータを検索する場合には、該当するメモリ領域に割り当てられた物理アドレスの範囲のみを検索すればよい（例えば、特許文献１を参照）。しかし、物理分割方式を採用したとしても、常に、メモリ領域の独立性を維持できるわけではない。例えば、通信デバイス等に備えられた不揮発性メモリにおけるメモリ管理方法を利用する際に問題が生じる場合がある。
【０００６】
通常、通信デバイス等に備えられた不揮発性メモリは、情報の書き込み途中に、電源供給が途絶えてしまった場合や、通信が未了のまま断絶してしまった場合に備えて、データの滅失を防止することが可能なメモリ管理方式が採られている。例えば、あるメモリ管理方式によると、データを更新する際、メモリ管理部は、既存のデータを上書きするのではなく、空き領域（バッファ領域）に一旦、更新データを記録した後、当該記録処理が完了した時点で更新前データを消去する。
【０００７】
【特許文献１】特開２０００−１７２４９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
このように、バッファ領域を利用したメモリ管理方式を利用すると、物理分割されたメモリ領域毎にシステムが割り当てられていたとしても、データの更新処理を繰り返すことにより、各システムに属するデータが、実メモリ上にばらばらに配置されてしまう場合がある。具体的には、あるシステムに属するデータを更新する際に、更新後データを任意位置にあるバッファ領域に記録し、この領域を当該システムの一部として有効にすると、当該システムに属するデータが実メモリ上の離れた位置に存在することになる。その結果、当該システムに属するデータを検索する際に、メモリ上の全領域を検索範囲としなくてはならず、所望のデータに対するアクセスが遅延するという問題が生じうる。
【０００９】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、データの検索処理にかかる時間を短縮可能な、新規かつ改良されたデータ記憶装置、メモリ管理方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明のある観点によれば、メモリ領域が物理的に分割され、分割された各メモリ領域内に書き換え用のバッファ領域が設けられたメモリと、分割された各メモリ領域内に設けられた書換え用のバッファ領域を利用して、分割された各メモリ領域に記録されたデータを更新するメモリ管理部と、を備えることを特徴とする、データ記憶装置が提供される。
【００１１】
上記のデータ記憶装置が備えるメモリは、メモリ領域が物理的に分割され、分割された各メモリ領域内に書き換え用のバッファ領域が設けられている。また、上記のメモリ管理部は、分割された各メモリ領域内に設けられた書換え用のバッファ領域を利用して、分割された各メモリ領域に記録されたデータを更新する。かかる構成により、分割された各メモリ領域毎に、バッファ領域を利用した安全なデータ更新処理が可能になり、データ更新処理の高速性、及びデータの信頼性が向上する。
【００１２】
メモリ管理部は、分割された各メモリ領域毎に、分割された各メモリ領域に記録されたデータの断片化を修復してもよい。かかる構成により、分割された各メモリ領域毎にデータの断片化修復が可能になり、断片化修復に必要な処理時間を短縮することが可能になる。
【００１３】
メモリ管理部は、データ記憶装置の起動時に、分割された各メモリ領域に記録されたデータの断片化を修復してもよい。このように、データ記憶装置の駆動前に断片化修復を実行することによって、その後のデータ処理をより効率的に行うことが可能になる。
【００１４】
メモリ管理部は、分割されたメモリ領域に記録されているデータを削除する際に、分割されたメモリ領域に記録されたデータの断片化を修復してもよい。このように、データの断片化が発生しやすい削除処理の都度、断片化修復処理を実行することにより、断片化が悪化する前に修復することが可能になる為、１度に行う断片化修復処理の時間が短くて済むだけでなく、断片化が比較的軽度な状態を保つことができる。
【００１５】
書換え用のバッファ領域は、メモリに対してデータを書込むことが可能な最小単位と同じサイズであってもよい。
【００１６】
また、本発明の別の観点によれば、メモリ領域が物理的に分割されたメモリの分割された各メモリ領域に設けられた書換え用のバッファ領域を利用して、分割された各メモリ領域に記録されているデータを更新することを特徴とする、メモリ管理方法が提供される。
【００１７】
上記のメモリ管理方法は、メモリ領域が物理的に分割されたメモリの分割された各メモリ領域に設けられた書換え用のバッファ領域を利用して、分割された各メモリ領域に記録されているデータを更新する。かかる構成により、分割された各メモリ領域毎に、バッファ領域を利用した安全なデータ更新処理が可能になり、データ更新処理の高速性、及びデータの信頼性が向上する。
【００１８】
また、本発明のさらに別の観点によれば、メモリ領域が物理的に分割されたメモリの分割された各メモリ領域内に設けられた書換え用のバッファ領域を利用して、分割された各メモリ領域に記録されているデータを更新する機能をコンピュータに実現させるためのプログラムが提供される。
【００１９】
上記のプログラムは、メモリ領域が物理的に分割されたメモリの分割された各メモリ領域内に設けられた書換え用のバッファ領域を利用して、分割された各メモリ領域に記録されているデータを更新する機能をコンピュータに実現させる。かかる構成により、分割された各メモリ領域毎に、バッファ領域を利用した安全なデータ更新処理が可能になり、データ更新処理の高速性、及びデータの信頼性が向上する。
【発明の効果】
【００２０】
以上説明したように本発明によれば、データ検索処理にかかる時間を短縮することが可能になる。また、データの断片化を修復するために要する時間を短縮することもできる。
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２２】
＜第１の実施形態＞
まず、本発明の第１の実施形態に係るデータ記憶装置の詳細について説明する。ここでは、データ記憶装置の利用形態について、通信デバイスを例に挙げて具体的に説明した後、本実施形態に係るデータの更新方法について説明する。
【００２３】
（データ記憶装置の構成）
まず、当該データ記憶装置を搭載した通信デバイス１００を例に挙げ、その構成について具体的に説明する。ここでは、通信デバイス１００の具体例として、非接触ＩＣカードを想定して説明するが、本発明を適用可能な通信デバイス１００は、これに限定されるものではない。例えば、非接触ＩＣカードや、非接触ＩＣチップを搭載した携帯電話等であってもよい。また、当該データ記憶装置は、例えば、携帯型音楽プレーヤ、腕時計、パーソナル・コンピュータ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）又は情報家電等、非接触ＩＣカード機能を備えた任意の電子機器に搭載して利用されうる。
【００２４】
ここで、図１を参照しながら、通信デバイス１００の構成について説明する。通信デバイス１００は、主に、アンテナ１０２と、通信部１０４と、メモリ管理部１０６と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０８と、揮発性メモリ１１０と、不揮発性メモリ１１２と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１６と、を備えている。
【００２５】
アンテナ１０２は、ループ・アンテナであってもよく、非接触ＩＣカード用のリーダ／ライタ（図示せず）との間で搬送波を送受信することができる。通信デバイス１００は、当該搬送波を介して情報を送受信すると同時に、リーダ／ライタからの電力供給を受けることができる。
【００２６】
通信部１０４は、主に、フロントエンド回路（図示せず）と、電源再生回路（図示せず）と、により構成される。フロントエンド回路は、リーダ／ライタが発信した搬送波から情報を受信すると同時に、該搬送波を分周して、通信デバイス１００内の各回路を駆動するクロックを再生する。一方、電源再生回路は、リーダ／ライタから受信した搬送波から、通信デバイス１００内の各回路を駆動するための電源を再生する。このように、通信部１０４は、リーダ／ライタから供給された電力とデータとを、バス１１４を通じて、他の構成要素に供給する。
【００２７】
ＲＯＭ１０８は、ＣＰＵ１１６又はメモリ管理部１０６の動作に必要なプログラムやデータが格納されていてもよく、例えば、不揮発性メモリ１１２のデータ領域を分割するプログラム、又は有効なデータ領域を選択するプログラム等が格納されていてもよい。なお、ＲＯＭ１０８は、製造時にデータが書き込まれた後、データの書換えは不可能であり、読出し専用に用いられる。
【００２８】
ＣＰＵ１１６は、通信部１０４、又はメモリ管理部１０６を含む、通信デバイス１００に備えられた各部の動作を制御する役割を担う。例えば、ＣＰＵ１１６が制御する処理としては、揮発性メモリ１１０に対するデータの書込み又は読出し処理や、不揮発性メモリ１１２に対するデータ更新処理等である。なお、図中では、メモリ管理部１０６とＣＰＵ１１６とを分けて描画しているが、メモリ管理部１０６の機能は、所定のプログラムに基づいてＣＰＵ１１６が実現することも可能である。当該所定のプログラムは、ＲＯＭ１０８に予め記録されていてもよい。
【００２９】
揮発性メモリ１１０は、通信部１０４を介してリーダ／ライタから受信したデータを一時的に格納しておく為のバッファの役割を担うことができる。揮発性メモリ１１０に記憶されたデータは、リーダ／ライタからの給電が停止すると消失する。なお、揮発性メモリ１１０は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）により構成され、電源が供給されている間は、自由にデータの書換えが行われる。
【００３０】
メモリ管理部１０６は、ＲＯＭ１０８に記録されたプログラム等に基づいて、揮発性メモリ１１０、及び不揮発性メモリ１１２の記録制御を実行する。例えば、メモリ管理部１０６は、揮発性メモリ１１０や不揮発性メモリ１１２に対して、データの書換え処理等を実行する。なお、これらの処理は、ＲＯＭ１０８に記録されたプログラムに基づいて実行されてもよい。
【００３１】
不揮発性メモリ１１２は、物理的に分割された複数のメモリ領域と、各メモリ領域内に設けられた書換え用のバッファ領域と、を有する。一般に、データの記憶領域を分割する際には、物理的に分割する方法と、論理的に分割する方法とがある。物理的に分割する方法は、実メモリ上の記録位置を示す物理アドレスに基づいて、記憶領域を分割する方法である。つまり、各メモリ領域には、所定の連続した物理アドレスの範囲が割り当てられる。従って、物理分割方法は、実際のデータ記録に使用される実メモリ上の領域が分割される方法であるといえる。本実施形態は、以下に説明する論理分割方式ではなく、上記の物理分割方式を利用したメモリ管理方法を提供する。
【００３２】
なお、論理的に分割する方法は、仮想的な記録位置を示す論理アドレスに基づいて、記憶領域を分割する方法である。通常、データ記憶装置は、実メモリの記憶容量を超える単位データを扱えるように、仮想記憶という機能を備えている場合が多い。仮想記憶を用いる場合、記録されるデータは、仮想アドレス空間内にマッピングされる。この際に、仮想アドレス空間内の記録位置を示すのが論理アドレスである。従って、論理分割方式によると、各メモリ領域には、所定の論理アドレスの範囲が割り当てられる。なお、データが割り当てられた論理アドレスは、アドレス変換機構を介して物理アドレスにアドレスマッピングされる。この際、仮想アドレス空間における論理アドレスの連続性は、常に、物理アドレス空間において維持されるわけではない。従って、連続した論理アドレスにより定義されたメモリ領域は、不連続な物理アドレスにマッピングされる場合がある。
【００３３】
本実施形態に係る不揮発性メモリ１１２は、連続する物理アドレスの範囲により定義される複数のメモリ領域を有し、さらに、各メモリ領域には、データ書換え用のバッファ領域を備えている。通常、メモリ上のデータは、旧データを新データで上書きすることにより更新される。しかし、非接触ＩＣカード等は、その駆動電源をリーダ／ライタから受信した搬送波により享受している場合が一般的であり、メモリ内へのデータの書込み途中に電源供給が断絶するという状況が容易に生じうる。旧データを新データで上書きする更新方法を利用する場合、新データの記録処理が完了していない時点で電源供給が停止されてしまうと、非接触ＩＣカード等は、新データと旧データとが共にメモリ上から消去された状態になる可能性がある。通常、不揮発性メモリ１１２へのデータ書込みには数ミリ秒の処理時間を要する為、その間に給電が途絶えた場合、不揮発性メモリ１１２は、データが不完全に書き込まれた不安定な状態になる可能性もある。
【００３４】
そこで、メモリ管理部１０６は、新データを旧データに上書きするのではなく、バッファ領域に記録し、当該記録処理が完了した後に旧データを消去する。また、旧データが消去されてできた空き領域は、新たなバッファ領域として設定される。本実施形態に係る不揮発性メモリ１１２には、物理分割された各メモリ領域にバッファ領域が設けられており、メモリ管理部１０６は、各領域内のデータを更新する際、それぞれのメモリ領域に設けられたバッファ領域を利用する。上記のような構成により、メモリ管理部１０６は、物理分割された各メモリ領域の独立性を保持した状態で、安全なデータの更新処理を実現することができる。また、メモリ管理部１０６は、一のメモリ領域のデータを更新する際に、他のメモリ領域に割り当てられたメモリ領域を検索する必要がなくなり、高速にデータを更新することが可能になる。但し、ここで言う独立性とは、所定のデータに対するデータ処理が、当該データが属するメモリ領域の内部で完結することをいい、データの更新や並び替えに伴って、当該メモリ領域の物理アドレス範囲が変化しないことを言う。
【００３５】
なお、メモリ管理部１０６は、ページ単位でデータを更新してもよい。通常、不揮発性メモリ１１２に対してデータを書込むことが可能な書込み最小単位は、１バイト単位のみならず、複数バイト単位であることも多い。このような書込み最小単位はページと呼ばれる。例えば、４バイト単位で書込み処理が実行されるメモリの場合には１ページが４バイトである。
【００３６】
また、具体的な不揮発性メモリ１１２の種類は、例えば、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、又はＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等であってもよい。
【００３７】
以上のように、本実施形態に係るデータ記憶装置は、不揮発性メモリ１１２と、メモリ管理部１０６とに特徴を有する。特に、不揮発性メモリ１１２は、複数の物理分割されたメモリ領域を有し、各メモリ領域にバッファ領域が設けられたことを特徴とする。また、メモリ管理部１０６は、一のメモリ領域に属するデータを更新する際に、該一のメモリ領域に設けられたバッファ領域を利用してデータの更新処理を実行することを特徴とする。このような構成にすることで、メモリ領域の独立性を維持したまま、データを更新することが可能になり、当該更新処理の際に、参照すべきメモリ領域の範囲を限定することができる。結果として、所望のデータへのアクセス速度が向上し、データの更新処理の効率を向上させることができる。
【００３８】
以上では、本実施形態に係るデータ記憶装置を搭載した通信デバイス１００の構成について詳細に説明したが、以下では、当該データ記憶装置における具体的なメモリ管理方法について説明する。上記のように、本実施形態の特徴は、複数のメモリ領域毎に、書換え用のバッファ領域（以下、ライトバッファと呼ぶ）を利用したデータ更新処理を実行可能な点にある。しかし、この点について詳細に説明するに先立ち、ライトバッファを利用したデータ更新方法について、一のメモリ領域内のデータ更新過程を例に挙げて説明する。また、物理アドレスと論理アドレスとを関連付ける管理テーブルを冗長な構成にするデータ更新方法の例についても、ここで、予め説明する。これらのデータ更新方法は、本実施形態に係るデータ更新方法を実現する為に前提となる技術であり、当該データ記憶装置の利用形態に応じて、さらなる技術的工夫を加える為の基礎となる。
【００３９】
そこで、メモリ管理部１０６が不揮発性メモリ１１０に記録されたデータを管理する際に利用する概念的なデータ構造について説明し、さらに、論理アドレス空間におけるデータ配置、物理アドレス空間におけるデータ配置、及び管理テーブルの更新方法について順に説明する。
【００４０】
（概念的なデータ構造）
まず、図２を参照しながら、本実施形態に係るデータ記憶装置が保持するデータの概念的なデータ構造について説明する。当該データ記憶装置は、管理情報として、システム定義情報１２０と、エリア定義情報１２２と、サービス定義情報１２４と、を有する。また、当該データ記憶装置は、サービス定義情報１２４で定義された各サービス毎に、具体的なユーザ情報１２６、１２８、１３０、１３２を保持している。
【００４１】
システム定義情報１２０は、例えば、システムコードと、システム鍵情報と、システム鍵バージョン情報と、により構成される。システムコードは、システムの所有者を示す２バイト長のコードである。また、システム鍵情報は、システム単位で設定され、リーダ／ライタとの間で相互認証を行う際に利用される。システム鍵バージョン情報は、システム鍵の世代情報を管理する。つまり、システム定義情報１２０は、不揮発性メモリ１１２内で管理されるシステムの種類等を定義する情報である。
【００４２】
エリア定義情報１２２は、例えば、エリアコードと、エンドサービスコードと、割り当てブロック数情報と、空きブロック数情報と、エリア鍵情報と、エリア鍵バージョン情報と、により構成される。エリアコードは、エリアを識別するためのコードである。通常、非接触ＩＣカード等のシステムは、ユーザ情報をサービスという単位で管理し、さらに、複数のサービスを纏めて管理するためにエリアという単位を利用している。エリアとサービスとは階層構造になっており、エリアとは、サービスの上位に該当する概念である。より具体的な例を挙げると、エリア定義情報１２２には、改札エリア情報、入退場エリア情報、又は決済エリア情報等が含まれる。
【００４３】
また、エンドサービスコードは、当該エリアに属するサービスコード範囲の上限値を規定するコードである。割り当てブロック数情報は、当該エリアに割り当てられているブロック数を示す。空きブロック数情報は、当該エリアに属するサービスのいずれにも割り当てられていないブロック数を示す。エリア鍵情報は、当該エリア又は当該エリアの下位に位置するサービスと相互認証する為に、エリア単位で指定された鍵情報である。エリア鍵バージョン情報は、エリア鍵の世代情報を管理するための情報である。
【００４４】
サービス定義情報１２４は、例えば、サービスコードと、割り当てブロック数情報と、サービス鍵情報と、サービス鍵バージョン情報と、により構成される。サービスコードは、サービスを識別するためのコードである。ここで言うサービスとは、例えば、氏名、住所、残高、乗車区間、又は乗車履歴等である。改札エリアの下位に属するサービスを例に挙げると、サービス定義情報１２４には、主に、氏名サービス、残高サービス、乗車区間サービス、及び乗車履歴サービス等が定義されている。また、割り当てブロック数情報は、当該サービスに割り当てられているユーザ情報のブロック数を示す。サービス鍵情報は、サービス単位で指定された鍵情報である。サービス鍵バージョン情報は、当該サービス鍵の世代情報を管理するための情報である。
【００４５】
ユーザ情報１２６、１２８、１３０、１３２は、実際に読み書きされる情報である。例えば、顧客番号、電子マネーのバリュー、又は入退場履歴等である。さらに具体例を挙げると、残高サービスに属するユーザ情報は残額を示す数値情報等である。また、一例として、ユーザ情報１２６を読み書きする場合、メモリ管理部１０６は、サービス定義情報１２４のサービスコードとブロック情報とを参照して、ユーザ情報１２６が記録されたブロックにアクセスすることができる。
【００４６】
以上、図２を参照しながら、本実施形態に係るデータ記憶装置に記憶されたデータの概念的なデータ構造について説明した。上記のように、当該データ構造は、システム定義情報（Ｓｙｓ）１２０、エリア定義情報（Ａｒｅａ）１２２、サービス定義情報（Ｓｖｃ）１２４の順に階層構造を形成している。さらに、当該データ記憶装置には、サービス定義情報１２４で定義された各サービス毎に、具体的なユーザ情報（Ｄａ）１２６、（Ｄｂ）１２８、（Ｄｃ）１３０、（Ｄｄ）１３２が記録されている。このように、各データは、システム毎、エリア毎、又はサービス毎に参照され、効率的なデータ管理が実現されている。しかし、実際には、このような概念的なデータ構造は、論理アドレス空間におけるデータ配置を示す論理テーブルと、論理アドレスに対応付けされた実メモリ上のデータ配置を示す物理テーブルと、論理テーブルのデータ位置と物理テーブルのデータ位置とを関係付ける管理テーブルと、により管理される。そこで、以下では、論理テーブル、物理テーブル、及び管理テーブルの構成について説明した後、本実施形態に係るデータの更新方法について詳述する。
【００４７】
（論理テーブルの構成）
まず、図３を参照しながら、論理テーブル１３４について説明する。図３は、論理アドレス空間におけるデータ配置を示す論理テーブル１３４の一例である。但し、図中の「＃」は論理アドレスであることを示す。まず、図３を参照すると、論理テーブル１３４の＃０ｘ００−＃０ｘ０２には、それぞれ、システム定義情報Ｓｙｓ、エリア定義情報Ａｒｅａ、及びサービス定義情報Ｓｖｃが順に記録されている。さらに、論理テーブル１３４の＃０ｘ０Ｃ−＃０ｘ０Ｆには、ユーザ情報Ｄａ，Ｄｂ，Ｄｃ，Ｄｄが記録されている。また、＃０ｘ０３−＃０ｘ０Ｂは未使用ブロックである。なお、論理テーブル１３４は、あくまでも仮想的なデータ配置を定義したものである。従って、図３の例では、Ｄａ，Ｄｂ，Ｄｃ，Ｄｄが連続した論理アドレスに割り当てられているが、実メモリ上では、連続した物理アドレスに割り当てられているとは限らない。また、論理テーブル１３４のサイズは、実メモリ上のメモリ領域に記録可能なサイズに制限されない。
【００４８】
（物理テーブルの構成）
次に、図４を参照しながら、物理テーブル１３６について説明する。図４は、物理アドレス空間におけるデータ配置を示す物理テーブル１３６の一例である。但し、図中の「＆」は物理アドレスであることを示す。例えば、＆０ｘ０４は、物理テーブル１３６の第２行１列のブロックを示す。また、行方向に向かって、順次、物理アドレスが増加するように配置されている。例えば、物理テーブル１３６の第３行４列に位置するブロックは、＆０ｘ０Ｂの物理アドレスにより特定される。このような表記法を念頭に置いて図４を参照すると、物理テーブル１３６には、＆０ｘ００−＆０ｘ０３に、それぞれ、ユーザ情報Ｄａ，Ｄｂ，Ｄｃ，Ｄｄが配置され、＆０ｘ０４にシステム定義情報Ｓｙｓが配置され、＆０ｘ０５にエリア定義情報Ａｒｅａが配置され、そして、＆０ｘ０８にサービス定義情報Ｓｖｃが配置されていることが分かる。また、「ｂｌｋ」は空き領域を表し、「ｗｂ」は書換え用のバッファ領域を表す。なお、図４では、ライトバッファに割り当てられたブロックを明示する為、当該ブロックをハッチング表示している。
【００４９】
（管理テーブルの構成）
次に、図５を参照しながら、管理テーブル１３８について説明する。管理テーブル１３８には、図３に示した論理テーブル１３４と、図４に示した物理テーブル１３６とを対応付ける情報が記録されている。図５の例では、管理テーブル１３８は、＆０ｘ８０−＆０ｘ９Ｆに割り当てられている。本実施形態に係る管理テーブル１３８は、例えば、二の管理領域を有しており、一の管理領域を有効に設定し、かつ、他の管理領域を無効に設定することができる。図５は、＆０ｘ８０−＆０ｘ８Ｆを有効な管理領域とし、＆０ｘ９０−＆０ｘ９Ｆを無効な管理領域に設定した例である。図中では、無効な管理領域を明示する為、無効な管理領域に該当する範囲は、ハッチング表示にされている。なお、本実施形態に係る管理テーブル１３８は、三以上の管理領域に分割されていてもよいし、一の管理領域のみにより構成されていてもよい。
【００５０】
さらに、管理テーブル１３８の有効な管理領域には、先頭ブロックから順番に、論理テーブル１３４の各ブロックに対応する物理アドレスが記録されている。例えば、＆０ｘ８０で特定される当該有効な管理領域の先頭ブロックには、論理テーブル１３４の先頭ブロック＃０ｘ００に対応する物理アドレス＆０ｘ０４が記録されている。また、論理テーブル１３４の先頭から４番目の論理アドレス＃０ｘ０３に対応するブロックは未使用ブロックである為、管理テーブル１３４の先頭から４番目の物理アドレス＆０ｘ８３が示すブロックには、＆０ｘＦＦが記録されている。
【００５１】
以上、論理テーブル１３４の構成、物理テーブル１３６の構成、及び管理テーブル１３８の構成について説明した。上記の構成は、物理アドレス１３６にライトバッファを有する点、及び管理テーブル１３８に冗長な管理領域を有する点に特徴がある。しかし、本実施形態に係る各テーブルの構成は、上記の例に限定されるものではない。例えば、物理テーブル１３６に複数のライトバッファを設けてもよいし、ライトバッファを１ページ以上のサイズとしてもよい。また、管理テーブル１３８は、一の管理領域に構成されてもよいし、三以上の管理領域により構成されてもよい。このように、各テーブルは、多様な構成が可能である。以下では、上記の構成に基づき、本実施形態に係るデータ更新方法について説明する。
【００５２】
（データ更新方法）
上記のように、物理テーブル１３６には、１ページ分のライトバッファが設けられており、メモリ管理部１０６は、このライトバッファを利用してデータ更新処理を実行する。また、管理テーブル１３８には、二の管理領域が設けられており、データを更新する際、メモリ管理部１０６は、現在有効な管理領域のデータを直接更新するのではなく、冗長に構成された他の管理領域に更新後のデータを書込み、該書込み処理が完了した時点で、有効な管理領域を切り替える。このような更新処理について、以下で具体的に説明する。
【００５３】
ここでは、具体例として、論理テーブル１３４の＃０ｘ０Ｅに記録されていたユーザ情報ＤｃをＤｃ’に書き換える場合について説明する。上記のように、論理テーブル１３４と物理テーブル１３６とは、管理テーブル１３８により関連付けられている。管理テーブル１３８を参照すると、論理アドレス＃０ｘ０Ｅに対応する物理アドレスは、管理テーブル１３８の＆０ｘ８Ｅに記録された＆０ｘ０２であることが分かる。従って、メモリ管理部１０６は、物理アドレス＆０ｘ０２に記録されたユーザ情報ＤｃがＤｃ’を更新する。
【００５４】
まず、メモリ管理部１０６は、論理アドレス＃０ｘ０Ｅに記録されたユーザ情報Ｄｃを更新した後、管理テーブル１３８を参照して、該論理アドレス＃０ｘ０Ｅに対応する物理アドレス＆０ｘ０２を更新する。このとき、メモリ管理部１０６は、＆０ｘ０２にあるユーザ情報Ｄｃを直接更新後データＤｃ’に書き換えるのではなく、更新後データＤｃ’をライトバッファに記録する。このとき、メモリ管理部１０６は、物理テーブル１３６に記録されたデータのうち、更新前データＤｃを含む行＆０ｘ００−＆０ｘ０３に記録された他のデータもライトバッファに記録する。例えば、ライトバッファ＆０ｘ０Ｃ−＆０ｘ０Ｆは、それぞれ、Ｄａ，Ｄｂ，Ｄｃ’，Ｄｄが記録された状態となる。このように、メモリ領域への書換え処理はページ単位で実行されなくてはならない為、メモリ管理部１０６は、上記のように、少なくとも１ページ分のライトバッファに対して、更新後データを含むデータ群を記録しなくてはならない。
【００５５】
図６に示すように、ライトバッファへの記録が完了した後、メモリ管理部１０６は、更新前データＤｃを含む物理テーブル１３６の行＆０ｘ００−＆０ｘ０３のデータを消去して、新たなライトバッファとして設定し、物理テーブル１３６の更新処理を完了する。このような構成を採ることで、万が一、更新後データの記録処理が中断することがあっても、メモリ管理部１０６は、残存している更新前データを利用してシステムを復旧することが可能になる。
【００５６】
次に、図７を参照しながら、管理テーブル１３８の更新処理について説明する。なお、管理テーブル１３８の更新時点は、物理テーブル１３６のライトバッファに対する更新後データの書き込み処理が完了した時点であってもよい。つまり、メモリ管理部１０６は、物理テーブル１３６内に更新後データと更新前データとが並存している状態で、管理テーブル１３８の更新処理を実行する。そして、メモリ管理部１０６は、管理テーブル１３８の更新処理が完了した時点で、物理テーブル１３６の更新前データを消去し、新たなライトバッファを設定する。
【００５７】
上記のように、ライトバッファを利用して物理テーブル１３６が更新されると、物理テーブル１３６上のデータ配置が変更される為、メモリ管理部１０６は、論理アドレスと物理アドレスとの関係付けが記載された管理テーブル１３８を更新しなくてはならない。しかし、管理テーブル１３８の更新途中で、不意に更新処理が中断してしまうことにより、管理テーブル１３８のデータが損壊した場合、上記のような物理テーブル１３６の更新方法を利用したとしても、メモリ管理部１０６は、システムを復旧することができなくなる。そこで、本実施形態に係る管理テーブル１３８は、更新前データを残したまま、更新後データを書き込めるように、冗長な管理領域を有している。
【００５８】
まず、物理テーブル１３６が更新されると、メモリ管理部１０６は、更新後の物理テーブル１３６と論理テーブル１３４とを関係付ける情報を、管理テーブル１３８の無効な管理領域に書き込む。さらに、当該書込み処理が完了した後、メモリ管理部１０６は、更新前の有効な管理領域を無効にすると同時に、当該書込み処理が完了した管理領域を有効な管理領域として設定する。図７は、上記の更新処理が完了した後の管理テーブル１３８を示している。このような方法を利用すると、更新前のデータは、無効な管理領域＆０ｘ８０−＆０ｘ８Ｆに残存したまま、更新処理を完了することが可能になる。上記のように、当該更新処理が完了した後、メモリ管理部１０６は、物理テーブル１３６の更新前データを消去し、新たなライトバッファを設定して、データの更新処理を完了する。
【００５９】
以上、図３〜図７を参照しながら、本実施形態に係るデータ更新方法の基本的過程について述べた。ここでは、管理テーブルの更新方法も含めて説明した為、全体として、やや複雑な更新処理の過程となってしまったが、本実施形態に係るデータ更新方法の基本部分は比較的単純である。そこで、当該基本部分について、図８のフローチャートを参照しながら簡単に纏めておくことにする。
【００６０】
図８は、ライトバッファを利用して、物理テーブル１３６に記録されたデータを更新する過程を示すフローチャートである。まず、メモリ管理部１０６は、更新されるページ（＆０ｘ００−＆０ｘ０３）に記録されたデータ（Ｄａ，Ｄｂ，Ｄｃ，Ｄｄ）を揮発性メモリ１１０にコピーする（Ｓ１０２）。その後、メモリ管理部１０６は、揮発性メモリ１１０にコピーしたデータ（Ｄｃ）を更新データ（Ｄｃ’）に書き換える（Ｓ１０３）。更新データの書換えが完了した後、メモリ管理部１０６は、揮発性メモリ１１０上のデータ（Ｄａ，Ｄｂ，Ｄｃ’，Ｄｄ）をライトバッファ（＆０ｘ０Ｃ−＆０ｘ０Ｆ）に書込む（Ｓ１０４）。そして、メモリ管理部１０６は、更新されたページ（＆０ｘ００−＆０ｘ０３）をクリアした後、新たなライトバッファとして設定する（Ｓ１０６）。
【００６１】
以上のように、データの更新処理は、１ページ分のサイズを有するライトバッファを利用して、ページ単位で実行される。当該ページのサイズは、記憶デバイス毎に固有の書込み可能サイズにより規定されている。上記の例では、１ページ＝４バイト（４ブロック）であるとして説明したが、実際に本発明を実施する際には、個々の記憶デバイスに応じて、適宜、設定することが可能である。このような構成により、データの更新処理の途中で電源が途絶したような状況においても、メモリ管理部１０６は、更新前データを用いてシステムを復旧することが可能になる。なお、上記の物理テーブル１３６、又は管理テーブル１３８には、更新データの書込みが完了したか否かを示すＣＲＣ（Ｃｙｃｌｅ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）情報等のエラーフラグが設けられていてもよい。
【００６２】
以上、一のメモリ領域に対するライトバッファを利用したデータ更新方法について説明した。先にも述べたように、本実施形態に係るデータ更新方法は、物理的に分割されたメモリ領域に対して、上記のデータ更新処理に係る基礎的な技術を適用する点に特徴を有する。そこで、以下では、物理的に分割されたメモリ領域に対するデータ更新方法について詳細に説明する。まず、物理的に分割されたメモリ領域に対して、上記のデータ更新方法を適用する場合に生じる問題点を指摘した上で、これを解決可能な実施形態を具体的に示す。つまり、上記の基礎的な技術と、物理分割の技術とを単純に組み合わせただけでは、本実施形態が目的とする課題の解決を達成することができない為、本実施形態の特徴点を明確にすると同時に、本実施形態が一の解決手段を提供する技術であることを明示する。
【００６３】
（問題点）
まず、図９を参照しながら、物理的に分割されたメモリ領域に対して、上記のデータ更新方法を適用した場合の問題点について述べる。
【００６４】
図９（Ａ）は、分割前の物理テーブル１４４を示す。図中のＳ０は、システム０に属するデータが記録されていることを示し、システム定義情報、エリア定義情報、サービス定義情報、又はユーザ情報のいずれかが記録されている。同様に、図中のＳ１は、システム１に属するデータが記録されていることを示す。また、ｗｂはライトバッファであることを示し、Ｓ０ｂｌｋは、システム０に属する空き領域であることを示す。
【００６５】
図９（Ｂ）は、分割後の物理テーブル１４４を示す。一例として、図９（Ｂ）に示すように、システム０の空き領域のうち、物理アドレスの範囲＆０ｘ１Ｅ−＆０ｘ２３により指定される領域が、システム２のメモリ領域として分割された場合について考える。図中のＳ２は、システム２に属するデータが記録されていることを表し、Ｓ２ｂｌｋは、システム２に属する空き領域であることを表す。また、データＤｃが、物理アドレス＆０ｘ２１に記録されているものとする。
【００６６】
このように、システム毎に、メモリ領域が物理的に分割されている場合、メモリ管理部１０６は、システム２に属するデータＤｃを検索する際に、＆０ｘ１Ｅ−＆０ｘ２３の範囲のみを検索すればよい。逆に、システム０又は１に属するデータを検索する際、メモリ管理部１０６は、＆０ｘ００−＆０ｘ１Ｄの範囲のみを検索すれば足り、検索領域を限定することが可能になる。その結果、メモリ管理部１０６は、所望のデータにアクセスするまでの時間を短縮することが可能になり、データの検索処理はもちろんのこと、データの更新処理等についても高速化することができる。従って、記憶容量の大きなメモリを利用する場合や、高速な検索処理が要求される場合には、上記のような物理的にメモリ領域を分割する方法が有効である。
【００６７】
しかし、上記のような物理分割のメリットを享受するためには、分割された各メモリ領域が、所定の連続した物理アドレスの範囲により定義され、各範囲の独立性を各々維持している必要がある。メモリ管理部１０６は、所定のシステムに属するデータを検索する際に、当該システムの先頭物理アドレスから終端物理アドレスまでを検索する。もし、当該システムの先頭アドレスと終端アドレスとの間に、他のシステムのデータが記録されている領域が存在する場合、メモリ管理部１０６は、検索したいデータが含まれていない領域をも走査する必要が生じてしまう。メモリ領域を物理分割した直後、各システムに属するデータは、連続する物理アドレスに割り振られる為、このような状況にはならない。しかし、上記のライトバッファを利用したデータの更新処理を繰り返すと、徐々に物理分割した各領域の独立性が損なわれてしまう。
【００６８】
このような状況を具体的に示したのが、図９（Ｃ）である。図９（Ｃ）は、分割直後の物理テーブル１４４のデータをライトバッファを利用して更新処理した後の物理テーブル１４４を示している。ここでは、具体例として、分割直後の物理テーブル１４４の＆０ｘ２１に記録されていたデータＤｃを、データＤｃ’に更新する処理について考えている。
【００６９】
更新前（分割直後）の物理テーブル１４４には、＆０ｘ０Ｃ−＆０ｘ０Ｆにライトバッファが設定されている。ここで、＆０ｘ２１のデータＤｃを更新するには、例えば、メモリ管理部１０６は、＆０ｘ２０−＆０ｘ２３のデータをライトバッファにコピーし、さらに更新後データＤｃ’をライトバッファに書き込んだ後、更新前データのあった行＆０ｘ２０−＆０ｘ２３のデータを消去して、新たなライトバッファとして設定する。図９（Ｃ）からも明らかなように、システム２の領域は、＆０ｘ０Ｃ−＆０ｘ０Ｆと、＆０ｘ１Ｅ−＆０ｘ１Ｆとに分割される。その結果、システム２に記録されたデータを検索する際、メモリ管理部１０６は、他のシステムに属するデータを含む広い領域＆０ｘ０Ｃ−＆０ｘ１Ｆを走査しなくてはならない。
【００７０】
このように、メモリ領域を物理的に分割したとしても、一のライトバッファを利用してデータの更新処理を実行する場合、各システム毎に割り当てられたメモリ領域の独立性を維持することが困難であるという問題点がある。しかし、非接触ＩＣカード等に用いられる不揮発性メモリ１１０等において、データ更新処理の安全性と高速性とを両立することは、利用者の利便性を向上させるという目的に留まらず、当該非接触ＩＣカード等の利用可能性を拡大することにも繋がるものと思われる。そこで、本実施形態は、上記のような問題を解決することが可能な構成を有するデータ記憶装置と、これを利用したメモリ管理方法を提供するものである。以下では、このようなデータ記憶装置が備える不揮発性メモリ１１０のメモリ管理方法について説明する。
【００７１】
（メモリ管理方法）
まず、図１０（Ａ）を参照しながら、不揮発性メモリ１１０の構成について説明する。図１０（Ａ）は、データ領域である物理テーブル１５０と、システム分割情報が記録されたシステム分割領域１５２とにより構成される。
【００７２】
物理テーブル１５０は、物理的に分割する前のデータ配置を示しており、システム０のデータとシステム１のデータとが混在した状態である。一方、システム分割領域１５２には、各システムのデータが存在する可能性のある物理アドレスの始点と終点とが保持されている。図１０（Ａ）の例では、システム０とシステム１とが物理的に分割されていない為、システム分割領域１５２に記録された情報は、システム０のデータ（Ｓ０）が存在する可能性のある物理アドレス範囲の始点＆０ｘ００及び終点＆０ｘ２Ｂと、システム１のデータ（Ｓ１）が存在する可能性のある物理アドレス範囲の始点＆０ｘ００及び終点＆０ｘ２Ｂと、である。
【００７３】
ここで、システム０の空き領域の一部をシステム２のメモリ領域として分割する場合を考える。メモリ管理部１０６は、例えば、図１０（Ｂ）に示すように、システム０の空き領域であった物理アドレス範囲＆０ｘ２０−＆０ｘ２Ｂをシステム２の分割領域として設定する。このとき、システム２専用のライトバッファは、他のシステム用のライトバッファとは独立してシステム２の領域内に設けられる。このように、メモリ領域を物理的に分割すると、システム０及び１に属するデータが存在する可能性のある領域は、＆０ｘ００−＆０ｘ１Ｆに限定され、同時に、システム２に属するデータが存在する可能性のある領域は、＆０ｘ２０−＆０ｘ２Ｂに限定される。メモリ領域の物理分割が完了すると、メモリ管理部１０６は、システム分割領域１５２に示すように、システム０及び１に関するシステム情報を更新し、さらに、システム２の情報を追加する。
【００７４】
このような構成によると、所定のシステムに属するデータを更新する際に、メモリ管理部１０６は、システム分割領域１５２に記録されたシステム分割情報を参照し、当該システムに該当する物理アドレス範囲の始点から終点までを無駄なく走査することができる。例えば、システム２のデータを検索する際、メモリ管理部１０６は、システム分割領域１５２に記録されたＳ２の欄を参照し、システム２の物理アドレス範囲が＆０ｘ２０−＆０ｘ２Ｂであることを認識する。その後、メモリ管理部１０６は、物理アドレス範囲の始点＆０ｘ２０から終点＆０ｘ２Ｂまでを走査し、所望のデータを検知することができる。その結果、システム２には関係しない物理アドレス範囲＆０ｘ００−＆０ｘ１Ｆにアクセスする必要がなく、非常に短い時間で所望のデータに到達することができる。
【００７５】
次に、図１０（Ｃ）を参照しながら、本実施形態に係るデータ更新処理について説明し、上記の構成が奏する効果について詳述する。
【００７６】
再び図９を参照しながら指摘した問題点について想起する。これまでの構成にあった問題点は、物理分割された複数のメモリ領域に対して、共通のライトバッファを有していたということである。つまり、ライトバッファが物理分割されたメモリ領域の区分とは関係なく配置され、所定のシステムに属するデータを更新する際に、当該システムが割り当てられたメモリ領域とは無関係の位置にあるライトバッファが更新後のデータ領域として設定されてしまう点に問題があった。
【００７７】
図１０（Ａ）及び（Ｂ）を参照しながら説明したように、本実施形態に係るデータ記憶装置の特徴は、物理分割された各メモリ領域にライトバッファを設けた点である。この点において、当該データ記憶装置は、図９で説明したデータ記憶装置の構成と異なり、上記のような問題点を解消することが可能な構成を有している。そこで、以下では、図１０（Ｂ）及び（Ｃ）を参照しながら、本実施形態に係るデータ更新方法について具体的に説明する。
【００７８】
一例として、分割後の物理テーブル１５０の＆０ｘ２６に記録されたデータＤｃをＤｃ’に更新する方法について述べる。データＤｃは、システム２に属するデータであり、システム２のライトバッファを利用して更新される。
【００７９】
まず、メモリ管理部１０６は、更新前データＤｃを含むページに記録された各データをシステム２のライトバッファに書込む。その後、メモリ管理部１０６は、更新後データＤｃ’をライトバッファに書込む。さらに、メモリ管理部１０６は、当該ライトバッファへの書込み処理が完了した後、更新前データを含むページに記録されたデータを消去し、新たなライトバッファとして設定する。この場合、ライトバッファがシステム２の物理アドレス範囲内に位置し、かつ、システム２に属するデータの更新にのみ当該ライトバッファを利用する為、物理分割されたメモリ領域の物理アドレス範囲は変化しない。もちろん、物理分割した後、メモリ管理部１０６は、システム分割情報を更新する必要もない。
【００８０】
以上、具体例を交えて説明したように、本実施形態に係るデータ記憶装置は、不揮発性メモリ１１０が複数のメモリ領域に物理分割されている点と、当該分割された各メモリ領域にライトバッファを有する点と、分割されたメモリ領域毎にシステムが割り当てられ、当該システムに属するデータを更新する際にのみ、該当するメモリ領域内のライトバッファが利用される点と、を特徴としている。なお、分割されたメモリ領域の物理アドレス範囲は、システム分割情報として、システム分割領域に記録されていてもよい。このような構成により、所定のシステムに属するデータを検索する際、メモリ管理部１０６は、ライトバッファを利用した安全なデータ更新処理を実行することができると共に、所望のデータを高速に検知することが可能になる。
【００８１】
＜第２実施形態＞
これまで、本発明の第１の実施形態に係るデータ記憶装置の構成とメモリ管理方法とについて説明してきた。以下で述べる第２の実施形態においても、基本的なデータ記憶装置の構成については実質的に同一であり、重複する説明は省略する。第２の実施形態の特徴は、物理的に分割されたメモリ領域毎に、データの断片化を修復する手段を提供することにある。そこで、以下では、図１１を参照しながら、第２の実施形態に係るデータの断片化修復方法について詳細に説明する。
【００８２】
なお、データの断片化とは、所謂、フラグメンテーション（Ｆｒａｇｍｅｎｔａｔｉｏｎ）の事である。フラグメンテーションとは、ディスクに対して書き込みと削除を繰り返し行なうことで、ディスク内のファイルの配置が不連続になり、連続した空き領域が少なくなることである。その結果、どの空き領域にも格納しきれないデータファイルが増加し、メモリ管理部１０６は、例えば、当該データファイルを分割して二以上の空き領域に分けて保存しなくてはならない。その結果、データの読み書き速度が低下するという弊害が生じる。そこで、メモリ管理部１０６は、データの断片化を修復するように、データの並べ替えを行う。このような断片化の修復処理は、所謂、デフラグ（Ｄｅｆｒａｇ）と呼ばれ、メモリ内のデータを先頭から再配置し、データの分割状態を解消して、連続した空き領域を増やす処理である。
【００８３】
図１１（Ａ）は、データの断片化を修復する前の物理テーブル１６２と、システム分割領域１６４と、を示す一例である。物理テーブル１６２は、三のシステムに物理分割されており、各システムに該当するメモリ領域には、それぞれ、専用のライトバッファが設けられている。また、第１の実施形態と同様に、所定のシステムに属するデータを更新する際には、当該システムに該当するライトバッファを利用してデータの更新処理が実行される。従って、物理的に分割された各メモリ領域は、それぞれ独立した物理アドレス範囲により定義されており、当該物理アドレス範囲の情報は、システム分割情報として、システム分割領域１６４に記録されている。かかる構成によると、所定のシステムに属するデータを更新したとしても、分割された各メモリ領域の独立性を破壊することはない。
【００８４】
上記のような構成の下でデータの断片化を修復する方法について、図１１（Ａ）及び（Ｂ）の例を参照しながら具体的に説明する。
【００８５】
図１１（Ａ）を参照すると、物理テーブル１６２のシステム０に対応するメモリ領域には、空き領域Ｓ０ｂｌｋが不連続に配置されており、断片化された状態であると言える。そこで、メモリ管理部１０６は、当該不連続に配置された空き領域が連続に配置されるように、データの並べ替えを行う。データの並べ替えは、既に説明したデータの更新方法と同様に、当該システムに対応するメモリ領域に設けられたライトバッファを利用して実行される。例えば、メモリ管理部１０６は、当該データの並べ替えを繰り返して、＆０ｘ０２にある空き領域と、＆０ｘ０７にある空き領域とを連続に配置させる。
【００８６】
まず、メモリ管理部１０６は、＆０ｘ００−＆０ｘ０３に含まれるデータをライトバッファ＆０ｘ１４−＆０ｘ１７に記録すると同時に、＆０ｘ０６にあるデータをライトバッファ＆０ｘ１６に記録する。その後、メモリ管理部１０６は、＆０ｘ００−＆０ｘ０３のデータを消去して、＆０ｘ００−＆０ｘ０３を新たなライトバッファとして設定する。このとき、＆０ｘ０６にあるデータは、既に＆０ｘ１６にコピーされている。従って、＆０ｘ０６のデータは不要なデータである。そこで、メモリ管理部１０６は、＆０ｘ０４−＆０ｘ０５のデータのみを新たなライトバッファ＆０ｘ００−＆０ｘ０１に記録し、＆０ｘ０４−＆０ｘ０７に記録されたデータを消去して、新たなライトバッファに設定する。
【００８７】
上記のように、メモリ管理部１０６は、データの並べ替え処理を実行して、不連続であった空き領域の配置を連続化し、図１１（Ｂ）に示すように、データの断片化を修復することができる。なお、上記の断片化修復処理は一例であり、空き領域の連続化が図れるのであれば、データ並べ替えの過程は、これに限定されるものではない。また、メモリ管理部１０６は、空き領域を物理分割されたメモリ領域の後方に詰めて再配置することも可能である。このような構成によると、メモリ管理部１０６は、より効率的に所望のデータへとアクセスすることが可能になり、データの検索速度が向上する。
【００８８】
以上、本発明の第２実施形態として、データの断片化を修復する処理について述べた。第２実施形態に係る不揮発性メモリ１１０においても、物理的に分割されたメモリ領域毎にライトバッファを備えており、メモリ管理部１０６は、分割された各メモリ領域内のデータを並び替える際、当該メモリ領域に設けられたライトバッファを利用してデータの並び替えを実行する。従って、当該データの並び替えを実行したとしても、物理的に分割されたメモリ領域の構成が変更されることはない。つまり、分割されたメモリ領域の物理アドレス範囲は当該データの並び替えの際に変化しない。その結果、分割された各メモリ領域の独立性は保持され、メモリ管理領域１０６は、所定のシステムに属するデータを高速に検索することが可能になる。結果的に、断片化の修復処理を高速化することに繋がる。なお、当該断片化の修復処理は、データ記憶装置の起動時に実行されてもよいし、データの消去時に実行されてもよい。もちろん、断片化処理のタイミングは、これに限定されるものではなく、データ記憶装置の利用形態に応じて、適宜、自由に設定されうるものである。
【００８９】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【図面の簡単な説明】
【００９０】
【図１】本発明の一実施形態に係る通信装置の構成を示すブロック図である。
【図２】本実施形態に係る概念的なデータ構造を示す説明図である。
【図３】本実施形態に係る論理的なデータ配置を示す説明図である。
【図４】本実施形態に係る更新前の物理テーブルを示す説明図である。
【図５】本実施形態に係る更新前の管理テーブルを示す説明図である。
【図６】本実施形態に係る更新後の物理テーブルを示す説明図である。
【図７】本実施形態に係る更新後の管理テーブルを示す説明図である。
【図８】本実施形態に係るライトバッファを用いたデータ更新過程を示すフローチャートである。
【図９】従来のメモリ領域の物理分割過程とデータ更新過程とを示す説明図である。
【図１０】本実施形態に係るメモリ領域の物理分割過程とデータ更新過程とを示す説明図である。
【図１１】本実施形態に係るデータの断片化修復過程を示す説明図である。
【符号の説明】
【００９１】
１０６      メモリ管理部
１１２      不揮発性メモリ
【図１】
2008040594.tif 000003
【図２】
2008040594.tif 000004
【図３】
2008040594.tif 000005
【図４】
2008040594.tif 000006
【図５】
2008040594.tif 000007
【図６】
2008040594.tif 000008
【図７】
2008040594.tif 000009
【図８】
2008040594.tif 000010
【図９】
2008040594.tif 000011
【図１０】
2008040594.tif 000012
【図１１】
2008040594.tif 000013