(57)【要約】【課題】ＰＲＡＭを用いたデータ管理システム及びデータ管理方法、並びにデータ管理方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体を提供する。【解決手段】本発明の一特徴によるデータ管理システムは、フラッシュメモリ（ｆｌａｓｈ  ｍｅｍｏｒｙ）においてブロック単位で第１データを保存するファイルシステムモジュールと、該ファイルシステムモジュールから第２データを受信し、サブブロック単位でＰＲＡＭに第２データを保存するフィルタレイヤーモジュールと、を備える。【選択図】図１
2009003934.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリ（ｆｌａｓｈ  ｍｅｍｏｒｙ）においてブロック単位で第１データを保存するファイルシステムモジュールと、
前記ファイルシステムモジュールから第２データを受信し、サブブロック単位でＰＲＡＭに第２データを保存するフィルタレイヤーモジュールと、を備えることを特徴とするデータ管理システム。
【請求項２】
前記フィルタレイヤーモジュールは、
前記ＰＲＡＭに保存されている第３データと常時受信された第２データとを比較することによって前記ファイルシステムモジュールから受信された第２データでの変動データを抽出することを特徴とする請求項１に記載のデータ管理システム。
【請求項３】
前記第２データはファイルメタデータを含み、前記第１データはファイルメタデータ以外のデータを含むことを特徴とする請求項１に記載のデータ管理システム。
【請求項４】
前記サブブロック単位はバイト単位であることを特徴とする請求項１に記載のデータ管理システム。
【請求項５】
前記フィルタレイヤーモジュールは、
前記ファイルシステムモジュールによってサポートされる論理ブロックに前記ＰＲＡＭのブロックがマッピングされるようにすることを特徴とする請求項１に記載のデータ管理システム。
【請求項６】
ＰＲＡＭ又はフラッシュメモリを更に備えることを特徴とする請求項１に記載のデータ管理システム。
【請求項７】
ブロック単位でデータを送るファイルシステムモジュールと、
前記ファイルシステムモジュールからデータブロックを受信し、ＰＲＡＭに保存されているデータブロックと比較することによって該受信されたデータブロックでの変動データを抽出し、該抽出された変動データを前記ＰＲＡＭに保存するフィルタレイヤーモジュールと、を備えることを特徴とするデータ管理システム。
【請求項８】
前記フィルタレイヤーモジュールは、
前記ＰＲＡＭにおいてサブブロック単位で前記変動データを書き込むことを特徴とする請求項７に記載のデータ管理システム。
【請求項９】
前記サブブロック単位はバイト単位であることを特徴とする請求項８に記載のデータ管理システム。
【請求項１０】
前記ＰＲＡＭは、
前記ブロック単位でフォーマット（Ｆｏｒｍａｔ）されることを特徴とする請求項７に記載のデータ管理システム。
【請求項１１】
前記フィルタレイヤーモジュールは、
前記ＰＲＡＭのブロックを前記ファイルシステムモジュールによってサポートされる論理ブロックにマッピングされるようにすることを特徴とする請求項７に記載のデータ管理システム。
【請求項１２】
データプロセッサーによって実行されるデータ管理方法において、
ファイルシステムで定義される論理ブロックにデータブロックの書き込み命令を受信する段階と、
前記受信されたデータブロックでの変動データを抽出するためにＰＲＡＭに保存されているデータブロックと前記受信されたデータブロックとを比較する段階と、
前記ＰＲＡＭに前記変動データを書き込む段階と、を有することを特徴とするデータ管理方法。
【請求項１３】
前記ＰＲＡＭに前記変動データを書き込む段階は、
前記ＰＲＡＭにおいてサブブロック単位で前記変動データを書き込む段階を含むことを特徴とする請求項１２に記載のデータ管理方法。
【請求項１４】
前記サブブロック単位は、バイト単位であることを特徴とする請求項１３に記載のデータ管理方法。
【請求項１５】
前記ＰＲＡＭをブロック単位でフォーマットする段階を更に有することを特徴とする請求項１２に記載のデータ管理方法。
【請求項１６】
請求項１２の方法を実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項１７】
データプロセッサーによって実行されるデータ管理方法において、
フラッシュメモリにおいてブロック単位で、ファイルシステムで定義される第１データを書き込む段階と、
ＰＲＡＭにおいてサブブロック単位で、前記ファイルシステムで定義されている第２データを書き込む段階と、を有することを特徴とするデータ管理方法。
【請求項１８】
前記第２データを書き込む段階は、
第２データブロックでの変動データを抽出するために該第２データブロックと前記ＰＲＡＭに保存されている第３データブロックとを比較する段階と、
前記ＰＲＡＭに前記抽出された変動データを書き込む段階と、を含むことを特徴とする請求項１７に記載のデータ管理方法。
【請求項１９】
前記第２データはファイルメタデータを含み、前記第１データはファイルメタデータ以外のデータを含むことを特徴とする請求項１７に記載のデータ管理方法。
【請求項２０】
請求項１７の方法を実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＲＡＭを用いたデータ管理システム及びデータ管理方法、並びにデータ管理方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体に関するものである。
【背景技術】
【０００２】
近年、デジタルカメラ、ＭＰ３プレーヤ、携帯電話、携帯情報端末（ＰＤＡ）のようなデジタル機器が多く使われている。このようなデジタル機器には大容量のデータを保存できるフラッシュメモリが主に適用される。
【０００３】
フラッシュメモリは一般的に低電力、不揮発性、高性能、物理的な安全性、携帯性などの特徴があり、上述した携帯用デジタル機器の保存装置として多く使われており、例えば、フラッシュメモリの容量が大きくなるに伴い、ディスク装置がフラッシュメモリで置換えられている。
【０００４】
しかし、一般的なフラッシュメモリはＳＲＡＭ、ＤＲＡＭ、ＰＲＡＭ、ＭＲＡＭ、ＦｅＲＡＭのようなメモリなどがサポートするバイト（Ｂｙｔｅ）単位のランダムアクセス（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ）をサポートすることができない。その代わり、フラッシュメモリは一般的にデータの読み込みをページ単位で行う。
【０００５】
フラッシュメモリは物理的な特性によって書き込み前の消去（Ｅｒａｓｅ−Ｂｅｆｏｒｅ−Ｗｒｉｔｅ）演算を実行する。これはフラッシュメモリのセクター（Ｓｅｃｔｏｒ）に書き込み演算をする場合、そのセクターが属するブロック（Ｂｌｏｃｋ）の消去演算を実行した後、書き込み演算を実行するものである。従って、セクターに上書き演算を実行できるハードディスクに比較して入出力（Ｉ／Ｏ）に対して更に多くの時間が必要とされる。
【０００６】
また、フラッシュメモリのブロックは、１０万回程度の消去演算を実行すると、ブロック上のメモリ素子が故障する確率が顕著に高まる。このような特性によって、フラッシュメモリの特定のセクターに対する書き込み演算を実行する場合には、フラッシュメモリは、現在割り当てられたブロックで空いている領域を探したり或いは消去演算の回数が少ないブロックを割り当てて、書き込み演算を実行したりするが、このような演算を実行するレイヤーはフラッシュトランスレーションレイヤー（Ｆｌａｓｈ  Ｔｒａｎｓｌａｔｉｏｎ  Ｌａｙｅｒ、以下ＦＴＬと称する）と呼ばれる。ＦＴＬは、ファイルシステムの論理的セクターアドレスをフラッシュメモリの物理的セクターアドレスにマッピングする機能を実現する。
【０００７】
フラッシュメモリの性能は、ＦＴＬを用いるファイルシステムのアクセスパターン及びＦＴＬアルゴリズムの影響を受ける。ファイルシステムに対するランダムアクセスが多いほどＦＴＬのオーバーヘッド（Ｏｖｅｒｈｅａｄ）が増加し、フラッシュメモリの性能の低下及び書き込み／消去（Ｗｒｉｔｅ／Ｅｒａｓｅ）サイクルの増加によってフラッシュメモリの寿命が早く短くなり得る。
【０００８】
ファイルシステムの負荷（Ｗｏｒｋｌｏａｄ）は、大きくファイルシステムのユーザデータを処理するアクセスと、ファイルシステム自体のメタデータ（Ｍｅｔａ  ｄａｔａ）を処理するアクセスに分けることができる。ここで、ファイルシステムのメタデータのデータ変更がフラッシュメモリに頻繁にランダムアクセス（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ）を実行させる場合もある。
【０００９】
しかし、ブロック単位で書き込み演算を実行するフラッシュメモリと、ＦＴＬアルゴリズムではユーザデータ又はメタデータの微細な変動事項がある場合にもこれをブロック単位で再び書き込み演算を実行するようになる。従って、実際変更されて記録しなければならないデータより多い量のデータを変更しなければならないため、デバイスに過度な負荷を与えることになるという問題点がある。
【００１０】
このような問題の暫定対策として、ブロック単位の入出力をサポートするファイルシステムを、バイト単位で入出力をサポートするように変更する場合もあるが、ファイルシステムを大規模に変更する必要がある。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
そこで、本発明は上記従来の問題点に鑑みてなされたものであって、本発明の目的は、ブロック単位でデータ入出力をサポートするデバイスにおいて、ブロック単位より小さい単位であるサブブロック単位でデータを記録するデータ管理システム及びデータ管理方法を提供することにある。
また、本発明の目的は、ブロック単位でデータ入出力をサポートするデバイスにおいて、ファイルシステムを変更せずにＰＲＡＭを用いてサブブロック単位でデータを書き込むことができるデータ管理システム及びデータ管理方法を提供することにある。
【００１２】
また、本発明の目的は、上記データ管理方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体を提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するためになされた本発明の一特徴によるデータ管理システムは、フラッシュメモリ（ｆｌａｓｈ  ｍｅｍｏｒｙ）においてブロック単位で第１データを保存するファイルシステムモジュールと、該ファイルシステムモジュールから第２データを受信し、サブブロック単位でＰＲＡＭに第２データを保存するフィルタレイヤーモジュールと、を備える。
【００１４】
上記目的を達成するためになされた本発明の他の特徴によるデータ管理システムは、ブロック単位でデータを送るファイルシステムモジュールと、前記ファイルシステムモジュールからデータブロックを受信し、ＰＲＡＭに保存されているデータブロックと比較することによって該受信されたデータブロックでの変動データを抽出し、該抽出された変動データを前記ＰＲＡＭに保存するフィルタレイヤーモジュールと、を備える。
【００１５】
上記目的を達成するためになされた本発明の一特徴によるデータプロセッサーによって実行される管理方法は、ファイルシステムで定義される論理ブロックにデータブロックの書き込み命令を受信する段階と、前記受信されたデータブロックでの変動データを抽出するためにＰＲＡＭに保存されているデータブロックと前記受信されたデータブロックとを比較する段階と、前記ＰＲＡＭに前記変動データを書き込む段階と、を有する。
【００１６】
上記目的を達成するためになされた本発明の他の特徴によるデータプロセッサーによって実行される管理方法は、フラッシュメモリにおいてブロック単位で、ファイルシステムで定義される第１データを書き込む段階と、ＰＲＡＭにおいてサブブロック単位で、前記ファイルシステムで定義されている第２データを書き込む段階と、を有する。
【００１７】
その他、本発明の特徴の具体的な事項は詳細な説明及び図に含まれている。
【発明の効果】
【００１８】
本発明のデータ管理システム及びデータ管理方法によれば、ブロック単位で入出力をサポートするデバイスにおいて、サブブロック単位でデータ入出力をサポートすることができる。
【００１９】
これに伴い、ブロック単位でデータ入出力をサポートするデバイスにおいて、ＰＲＡＭを用いてサブブロック単位でデータの書き込み機能をサポートすることができる。
【００２０】
また、ブロック単位のデータ入出力をサポートするファイルシステムを変更せずにサブブロック単位のデータ入力をサポートすることができる。
【発明を実施するための最良の形態】
【００２１】
本発明の利点及び特徴、並びにそれらを達成する方法は、図面と共に後述する実施形態を参照することにより明確になる。しかし、本発明の目的は、以下に開示される実施形態に限定されず、異なる多様な形態によっても達成可能である。従って、以下の実施形態は単に、本発明の開示を完全たるものとし、当業者に本発明の範囲を認識させるために提供するものである。
【００２２】
以下、本発明のデータ管理システム及びデータ管理方法、並びにデータ管理方法を実施するための最良の形態の具体例を、ブロック図又は処理フローチャートに関する図面を参照しながら説明する。ここで、処理フローチャートの各ブロックとフローチャートの組合せは、コンピュータプログラムのインストラクションによって実行させることができることが理解される。
【００２３】
これらコンピュータプログラムのインストラクションは、汎用コンピュータ、特殊用途コンピュータ又はその他のプログラマブルデータプロセッシング装置のプロセッサーに搭載され得るので、コンピュータ又はその他のプログラマブルデータプロセッシング装置のプロセッサーを通じて実行されるそのインストラクションがフローチャートのブロックで説明された機能を実現する手段を成すようにその機構を作れる。これらコンピュータプログラムのインストラクションは特定方式でその機能を具現するためにコンピュータ又はその他のプログラマブルデータプロセッシング装置を指向できるコンピュータ利用可能又はコンピュータ読み取り可能なメモリに保存され得るので、そのコンピュータ利用可能又はコンピュータ読み取り可能なメモリに保存されたインストラクションはフローチャートのブロックで説明された機能を実現するインストラクション手段を内包する製造品目を生産することも可能である。コンピュータプログラムインストラクションはコンピュータ又はその他のプログラム可能なデータプロセッシング装置上に搭載することも可能なので、コンピュータ又はその他のプログラマブルデータプロセッシング装置上で一連の動作段階が実行されてコンピュータで実行されるプロセスを生成し、コンピュータ又はその他のプログラマブルデータプロセッシング装置のインストラクションはフローチャートのブロックで説明された機能を実行させるための段階を提供することも可能である。
【００２４】
また、各ブロックは特定の論理的機能を行うための一つ以上の実行可能なインストラクションを含むモジュール、セグメント又はコードの一部を示すことができる。また、いくつの代替実行例では、ブロックで言及された機能が順序を外れて発生することも可能であるということに注目せねばならない。例えば、連続して図示されている２つのブロックは、実質的に同時に行われてもよく、又はそのブロックが時々該当する機能によって逆順に行われてもよい。
【００２５】
本明細書で言及される「モジュール」という用語は、ある役割を果たす構成要素を意味する。モジュールは、該当する役割を果たすため、プログラムされたデータプロセッサーを用いて具現することができる。プログラムされたデータプロセッサー上で実行されるようにプログラムコードを含むソフトウェア又はファームウェアを実行することによって、該当するモジュールの役割を果たすようにすることができる。ソフトウェア又はファームウェアは、例えば、ソフトウェア構成要素、オブジェクト指向ソフトウェア構成要素、クラス構成要素及びタスク構成要素のような構成要素と、プロセス、関数、属性、プロシージャ、サブルーチン、プログラムコードのセグメント、ドライバ、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、及び変数を含む。構成要素とモジュールのうちから提供される機能は更に小さい数の構成要素及びモジュールに結合されたり追加的な構成要素とモジュールに更に分離されたりすることができる。
【００２６】
以下、図面を参照しながら本発明の最良の形態について詳細に説明する。
【００２７】
図１は、本発明の一実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭ１５０を用いたデータ管理システム１００のブロック図である。データ管理システム１００は、アプリケーション実行モジュール１１０、オペレーティングシステムモジュール１２０、ファイルシステムモジュール１３０、フィルタレイヤーモジュール１４０、ＦＴＬモジュール１７０、ＰＲＡＭ１５０及びフラッシュメモリ１８０を含み得る。
【００２８】
アプリケーション実行モジュール１１０は、オペレーティングシステムモジュール１２０によって駆動される一般的なユーザプログラムを実行させる役割をする。例えば、ＭＰ３ファイルをプレーさせる実行部、動画ファイルをプレーさせる実行部、ゲームを実行させる実行部、コンテンツを検索する実行部など、多様なアプリケーション実行モジュール１１０を含み得る。
【００２９】
オペレーティングシステムモジュール１２０は、ファイルシステムモジュール１３０を管理し、ユーザがハードウェアをより容易に使用できるようにインターフェースを提供するプログラムの集合であって、プロセッサー、記憶装置、入出力装置、通信装置、データなどの資源を管理する。
【００３０】
ファイルシステムモジュール１３０は、データの読み書き、及び使用するための方法と機能を提供する。ファイルシステムモジュール１３０は、データの集合であるファイルの効率的な管理のための機能を実現し、データの速い検索、復旧、大容量データのサポートなどを提供している。ファイルシステムモジュール１３０は、ＣＰＵのようなプロセッサーに比べ、相対的に遅い処理速度を有する保存媒体がシステムにもたらす隘路現象を減らし、ファイルの処理を円滑にさせ、全体システムの性能を向上させることを目的とする。
【００３１】
ＦＴＬモジュール１７０は、ファイルシステムモジュール１３０の論理的セクターアドレスをフラッシュメモリの物理的セクターアドレスにマッピングする機能を実現する。ＦＴＬモジュール１７０は、フラッシュメモリの特定セクターに対する書き込み演算を実行する場合、フラッシュメモリは、現在割り当てられたブロックで空いている領域を探したり或いは消去演算の回数が少ないブロックを割り当てて、書き込み演算を実行するようにソフトウェア的に制御したりする機能を実現する。
【００３２】
ファイルシステムモジュール１３０は、データを複数のバイト集合体で構成されるブロック（Ｂｌｏｃｋ）単位でデータ入出力を実行する。ここで、ブロック（Ｂｌｏｃｋ）とは、ファイルシステムモジュール１３０又はＦＴＬモジュール１７０の基本的な入出力単位を意味する。例えば、ブロックは５１２バイト又は５１２バイトの倍数単位のサイズとなり得る。しかし、ブロックのサイズは５１２、１０２４等の数に制限されない。データブロック（Ｂｌｏｃｋ）は、クラスター、セクター、ページなどのデータの入出力単位を意味する他の用語で使用されることもある。
【００３３】
フィルタレイヤーモジュール１４０は、ファイルシステムモジュール１３０又はＦＴＬモジュール１７０がＰＲＡＭ１５０に書き込み演算を実行するように仲介の役割をする。フィルタレイヤーモジュール１４０はブロック単位よりサイズが小さい単位であるサブブロック単位でＰＲＡＭ１５０に書き込み演算を実行する。ここで、サブブロックはブロックのデータサイズより相対的に小さいデータサイズ単位を意味するものであり、サブブロックのデータサイズの整数倍がブロックのデータサイズとなるようにサブブロックのデータサイズが決定され得る。例えば、ブロックのデータサイズが１０２４バイトであれば、サブブロックは５１２バイト、２５６バイト、…、１バイトとなり得る。例えば、バイト（Ｂｙｔｅ）単位で入出力を制御すると、バイト単位がサブブロック単位となり得る。
【００３４】
ブロック単位で入出力をサポートするファイルシステムモジュール１３０では一般的にフラッシュメモリ１８０に対してブロック単位で書き込み演算を実行することができる。ブロック単位のうち一部のデータに対してのみデータ変更がある場合には、該当ブロック全体を改めて書き込まなければならない。しかし、ＰＲＡＭの特性上、書き込み演算の速度が読み込み演算の速度より遅いため、該当ブロック全体を書き込むことは全体システムの速度を非常に落とし得る。
【００３５】
フィルタレイヤーモジュール１４０は、ブロック単位で入出力を実行するファイルシステムモジュール１３０において、データを保存するＰＲＡＭ１５０には変更されたデータのみの書き込み演算を実行することができるようにする。フィルタレイヤーモジュール１４０は、ファイルシステムモジュール１３０又はＦＴＬモジュール１７０から所定のブロックに対する書き込み命令の伝達を受けて、ＰＲＡＭ１５０には該当ブロックのうち変更された部分に対してのみサブブロック単位で書き込み演算を実行するようにする。
【００３６】
フィルタレイヤーモジュール１４０は、一種のフィルタリングレイヤーである。フィルタレイヤーモジュール１４０は、ブロック単位で入出力を実行するファイルシステムモジュール１３０又はＦＴＬモジュール１７０を修正せず、ブロック単位より小さいデータ単位であるサブブロック単位でメモリに書き込み演算を実行できるようにする。フィルタレイヤーモジュール１４０は、ファイルシステムモジュール１３０又はＦＴＬモジュール１７０のブロック書き込み演算命令に対してブロックをフィルタリングし、サブブロック単位で書き込み演算を実行することができるようにする。
【００３７】
ＰＲＡＭ１５０は、相変化メモリ、状態変化メモリ又は相転移メモリともいう。電源が切れても保存した情報が消されないフラッシュメモリの長所と速い処理速度を得意とするＤＲＡＭの長所をすべて有している。但し、書き込み速度が読み込み速度より相対的に遅いため、書き込み演算を実行する場合に速度が遅くなり得る。
【００３８】
フラッシュメモリ１８０は、電源が切れても保存されている情報が維持される特性を有する不揮発性メモリである。フラッシュメモリ１８０はデータの入出力も自由であり、デジタルビデオカメラ、携帯電話、デジタルカメラ、携帯端末機、ＭＰ３プレーヤなどに広く用いられる。フラッシュメモリ１８０はＦＴＬモジュール１７０を通して、ブロック単位で入出力が行われ、大容量のデータの読み込み及び書き込みに適し得る。
【００３９】
図２は、データ管理システム１００の動作を示す。
【００４０】
データ管理システム１００は、アプリケーション実行モジュール１１０又はオペレーティングシステムモジュール１２０によってＰＲＡＭ１５０又はフラッシュメモリ１８０に保存されたデータにアクセスを試みることができる。例えば、フラッシュメモリ１８０にはユーザデータが保存され、ＰＲＡＭ１５０にはファイルシステムモジュール１３０及び／又はＦＴＬモジュール１７０のメタデータが保存されると仮定する。ここで、ファイルシステムモジュール１３０のメタデータは、ユーザデータファイルに対する情報を示すデータであり、ＦＴＬモジュール１７０のメタデータは、論理アドレスと物理アドレスとの間のマッピング情報、物理的デバイスの状態情報などを示すデータである。メタデータは、ユーザデータに比べ、容量が小さく頻繁に変更され得る。
【００４１】
ファイルシステムモジュール１３０は、フラッシュメモリ１８０に保存されているユーザデータにはブロック単位で読み書きを実行する。ユーザデータを「第１データ」と称する。ＦＴＬモジュール１７０は、ファイルシステムの論理的セクターアドレスにマッピングされたフラッシュメモリの物理的セクターアドレスを検索し、フラッシュメモリの特定セクターにブロック単位で読み書きを実行する。
【００４２】
一方、ＰＲＡＭ１５０に保存されたデータを読み込むためには、ファイルシステムモジュール１３０又はＦＴＬモジュール１７０はブロック単位でアクセスする。従って、ＰＲＡＭ１５０に保存されたデータに対してもブロック単位でアクセスすることによって既存のブロック単位の入出力を実行するファイルシステムモジュール１３０及びＦＴＬモジュール１７０を修正せずに使用することができる。
【００４３】
但し、ＰＲＡＭ１５０にデータを書き込みするためにはサブブロック単位を用いる。ファイルシステムモジュール１３０とＦＴＬモジュール１７０はサブブロック単位の入出力をサポートしないので、フィルタレイヤーモジュール１４０を通してサブブロック単位の書き込みをサポートするようにする。
【００４４】
ファイルシステムモジュール１３０又はＦＴＬモジュール１７０はＰＲＡＭ１５０の所定ブロックにデータを書き込むために保存する論理ブロックのアドレス、論理ブロックの数、データなどの情報をフィルタレイヤーに伝達する。ＰＲＡＭ１５０が所定ブロックに書き込まなければならないデータを「第２データ」とする。第２データはブロック単位で構成される。従って第２データは少なくとも一つ以上のブロックで構成される。
【００４５】
フィルタレイヤーモジュール１４０は、マッピング情報によってファイルシステム１３０又はＦＴＬモジュール１７０の論理ブロックに対応するＰＲＡＭ１５０のブロックを検索する。但し、ＰＲＡＭ１５０のブロックはＰＲＡＭに実質的にデータが保存される物理的媒体を意味する。
【００４６】
フィルタレイヤーモジュール１４０は、検索されたＰＲＡＭ１５０のブロックを読み込む。読み込んだデータを「第３データ」とする。第３データは第２データと同一な数のブロックを有することで、第２データと第３データは同一なサイズを有する。第３データはフィルタレイヤーモジュール１４０のバッファ部（図示せず）に臨時に保存され得る。
【００４７】
フィルタレイヤーモジュール１４０は第２データを基準として第３データと比較して変動データを検出する。第２データを基準として第３データとの差を変動データという。例えば、第２データと第３データが全く異なるデータであれば、変動データは第２データとなる。又は第２データと第３データがブロックの前半部のみが同一であれば、変動データは第２データの後半部となる。変動データの単位はサブブロック単位で構成される。
【００４８】
フィルタレイヤーモジュール１４０は、検出された変動データを用いてＰＲＡＭ１５０のブロックに書き込みを実行する。ファイルシステムモジュール１３０又はＦＴＬモジュール１７０はＰＲＡＭ１５０にブロック単位の第２データの書き込みを命令したが、フィルタレイヤーモジュール１４０を通してサブブロック単位の変動データをＰＲＡＭ１５０のブロックに書き込む。従って、外部的にブロック単位で書き込みを実行するが、内部的にはＰＲＡＭ１５０にサブブロック単位で書き込みを実行する。これに伴い、変更された部分に対してのみデータを書き込むことによって、データの更新の効率を高めることができ、ブロック単位の入出力を実行するファイルシステムモジュール１３０及び／又はＦＴＬモジュール１７０の変更をせずにデータの読み書きをすることができる。
【００４９】
上述したように、フラッシュメモリ１８０はブロック単位で入出力を実行し、ＰＲＡＭ１５０は外部的にブロック単位で入出力を実行するが、内部的にはサブブロック単位でＰＲＡＭ１５０にデータを書き込むことができる。これは、容量が大きくて頻繁に内容の変更が起こらないユーザデータはフラッシュメモリ１８０に保存し、容量が小さく頻繁に内容の変更が起こるメタデータなどに対してはＰＲＡＭ１５０に保存することによって効率的なデータ管理を実行することができることを意味する。
【００５０】
このように、サブブロック単位で入出力を実行するＰＲＡＭ１５０に対してフィルタレイヤーモジュール１４０を導入することによって、ブロック単位の入出力を実行するファイルシステムモジュール１３０及び／又はＦＴＬモジュール１７０の変更をせずにデータの読み書きをすることができる。
【００５１】
また、読み込む速度に比較して書き込む速度が遅く、ブロック単位ではないサブブロック単位（例えば、バイト単位）でデータを書き込むことができるＰＲＡＭの特性を用い、変更された部分のデータのみを抽出してサブブロック単位で書き込みするようにすることによって、フラッシュメモリ１８０とＰＲＡＭ１５０を効果的に併用することができる。
【００５２】
図３は、本発明の他の実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ管理システム１００のブロック図であり、図４は、本発明の他の実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ管理システム１００の動作を示す。
【００５３】
図３を参照すると、本発明の他の実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ管理システム１００は、アプリケーション実行モジュール１１０、オペレーティングシステムモジュール１２０、ファイルシステムモジュール１３０、フィルタレイヤーモジュール１４０及びＰＲＡＭ１５０を含み得る。
【００５４】
アプリケーション実行モジュール１１０、オペレーティングシステムモジュール１２０、ファイルシステムモジュール１３０、フィルタレイヤーモジュール１４０及びＰＲＡＭ１５０に対してはすでに上述した実施形態で詳細に説明したので省略する。但し、フィルタレイヤーモジュール１４０による、本発明の他の実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ記録システムの動作を説明する。
【００５５】
フィルタレイヤーモジュール１４０は、マッピング情報提供モジュール２１０、データリーディングモジュール２２０及び変動データ抽出モジュール２３０を含み得る。
【００５６】
マッピング情報提供モジュール２１０は、ファイルシステムモジュール１３０の論理ブロックをＰＲＡＭ１５０のブロックにマッピングさせる情報を提供する。マッピング情報提供モジュール２１０は、ファイルシステムの論理ブロックをＰＲＡＭの物理的なブロックに対応するマッピング情報を提供する。ファイルシステムモジュール１３０から所定の論理ブロックに「第１データを記録する」という命令に対し、マッピング情報提供モジュール２１０によって対応するＰＲＡＭ１５０のブロックを検索する。ここで、「第１データ」はブロック単位で入出力を管理するファイルシステムによってブロック単位で構成されるデータをいう。例えば、ＰＲＡＭ１５０に書き込みを実行するデータがブロック単位より小さいサイズであっても第１データは一つのブロックに乗せられる。又はＰＲＡＭ１５０に書き込みを実行するデータが一つのブロック単位より大きい場合であれば、第１データは二つのブロックに乗せられる。但し、マッピング情報提供モジュール２１０は、ファイルシステム１３０又は他の構成要素に位置するか独立した構成要素となり得る。
【００５７】
データリーディングモジュール２２０は、マッピング情報提供モジュール２１０によって検索されたＰＲＡＭ１５０のブロックを読み込む。データリーディングモジュール２２０は、ＲＡＭのブロックをサブブロック単位で読み込むことができる。例えば、サブブロックがバイト単位であれば、データリーディングモジュール２２０はバイト単位で、検索されたＰＲＡＭのブロックを読み込み、バッファ部（図示せず）に臨時に保存することができる。データリーディングモジュール２２０によって読み取られたデータを「第２データ」と称する。
【００５８】
変動データ抽出モジュール２３０は、第１データと第２データを比較して変動データを抽出する。ここで、変動データは第１データを基準として第２データとの差があるデータを意味する。例えば、第１データと第２データが全く異なるデータであれば、変動データは第１データと同一である。又は第１データと第２データがブロックの前半部のみが同一であれば、変動データは第１データの後半部となる。但し、変動データの単位はサブブロック単位で構成される。
【００５９】
従って、抽出された変動データサイズがブロックのサイズに比較して小さければ、ブロックを全体的に改めて書き込むよりは変動データの部分のみを改めて書き込み演算を実行することによって、デバイス自体のオーバーヘッド及び書き込みの速度を非常に向上させることができる。ＰＲＡＭのように書き込みの速度が読み込みの速度に比較して遅い場合には、書き込み演算を減らすことによって、ブロック単位のデータの書き込みを効率的に実行することができる。
【００６０】
図４を参照すると、本発明の他の実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ管理システム１００の動作は次のとおりである。
【００６１】
ファイルシステムモジュール１３０は、「第１データ４３０をメモリに保存する」という命令をオペレーティングシステムモジュール１２０又はアプリケーション実行モジュール１１０から伝達を受ける。ファイルシステムモジュール１３０は、第１データ４３０を保存する論理ブロックのアドレス、論理ブロック数、データなどの情報をフィルタレイヤーモジュール１４０に伝達する。
【００６２】
フィルタレイヤーモジュール１４０は、論理ブロックに対応するＰＲＡＭのブロック４００を検索する。ＰＲＡＭのブロック４００は、複数のサブブロック４１０で構成される。フィルタレイヤーモジュール１４０は検索されたＰＲＡＭのブロック４００を読み込み、第２データ４５０で臨時に保存する。このため、第１データ４３０と第２データ４５０を比較して変動データ４２０を抽出する。フィルタレイヤーモジュール１４０は、抽出された変動データ４２０をサブブロック単位でＰＲＡＭに書き込むようにする。
【００６３】
例えば、変動データ４２０が一つのサブブロック４１０であれば、一つのサブブロックのみの書き込み演算を実行することによって、第１データ４３０をＰＲＡＭ１５０に書き込む効果を有し得る。従って、データの変更が小さく、頻繁にデータの変更が起こる場合に効果的にデータを更新することができる。
【００６４】
例えば、ユーザデータに対する情報を含むメタデータ又はフラッシュメモリに保存されているデータに対する情報を含むメタデータは、サイズは相対的に小さいが、相対的に頻繁に変更される。なぜなら、メタデータはユーザデータサイズ、ユーザデータの属性などユーザデータの固有の情報だけではなく、ユーザデータの保存時間、最近アクセス時間及びＦＴＬのマッピング情報などの可変する情報を含むからである。
【００６５】
従って、データ書き込み要請の単位が小さいメタデータの変更が頻繁に行われることによって、ブロック単位でデータを入出力するデバイスに過度なオーバーヘッドが加わることもある。これに伴い、ブロック単位の入出力によって微細なデータの変更にもブロック全体を改めて書き込むことになり、システムの浪費が過度となり得る。
【００６６】
本発明による一実施形態によれば、外部的にはブロック単位の入出力を維持しつつ、内部的にＰＲＡＭ１５０にサブブロック４１０単位で記録するようにすることによってブロック単位の入出力をするファイルシステムを修正せずにサブブロック単位でデータを記録することができる。
【００６７】
これにより、変更されたデータの部分のみを記録することによってブロックを改めて書き込まなければならない負担を減らし、データを記録する時間を減らすことができる。
【００６８】
但し、データの変更をせずにデータを読み込む場合には、フィルタレイヤーモジュール１４０を通さずにブロック単位でデータを読み込むことができる。
【００６９】
図５は、本発明の一実施形態によるブロック単位の入出力デバイスにおいて、ＰＲＡＭを用いたデータ管理システム１００でのＰＲＡＭ１５０の構造及びマッピングテーブル５００を示す。
【００７０】
図５を参照すると、ＰＲＡＭ１５０はファイルシステムモジュール１３０又はＦＴＬモジュール１７０と同一な入出力単位であるブロック単位でフォーマット（Ｆｏｒｍａｔ）されて初期化される。ＰＲＡＭ１５０は、物理的に複数のブロックで初期化され、例えば順にＰ−Ｂｌｏｃｋ  １、Ｐ−Ｂｌｏｃｋ  ２、…、Ｐ−Ｂｌｏｃｋ  ｎで構成され得る。
【００７１】
ＰＲＡＭの各ブロック４００はマッピングテーブル５００によってアクセスされ得る。マッピングテーブル５００はマッピング情報提供部２１０によって形成され、ファイルシステムモジュール１３０又はＦＴＬモジュール１７０の論理ブロックに対応するＰＲＡＭのブロック４００アドレスを有する。従って、マッピング情報提供モジュール２１０は、マッピングテーブル５００を用いてファイルシステムモジュール１３０、ＦＴＬモジュール１７０又はフィルタレイヤーモジュール１４０などにマッピング情報を提供し、ファイルシステムモジュール１３０、ＦＴＬモジュール１７０又はフィルタレイヤーモジュール１４０などはＰＲＡＭのブロック４００にアクセスすることができる。
【００７２】
図６は、本発明のまた他の実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ管理動作のフローチャートを示す。
【００７３】
図６を参照すると、先にオペレーティングシステムモジュール１２０又はアプリケーション実行モジュール１１０はファイルシステムモジュール１３０又はＦＴＬモジュール１７０に第１データ書き込み命令を伝達する。ここで、第１データはブロック単位で構成されるデータであり、更新されなければならないデータである。ファイルシステムモジュール１３０又はＦＴＬモジュール１７０は、フィルタレイヤーモジュール１７０に第１データ書き込み命令を伝達する（ステップＳ６００）。この時、第１データの書き込み命令を伝達しつつ、第１データの書き込みを実行する論理ブロックのアドレス、第１データを共に伝達する。これに伴い、ファイルシステムモジュール１３０、ＦＴＬモジュール１７０又はフィルタレイヤーモジュール１４０は、マッピング情報を用いて論理ブロックに対応するＰＲＡＭのブロック４００を検索する（ステップＳ６１０）。マッピング情報を用いてＰＲＡＭのブロック４００を検索した後、ＰＲＡＭのブロック４００に保存された第２データを読み込む（ステップＳ６２０）。ここで、第１データと第２データサイズは同一であり、従って、ブロックの数も同一であり、第１データと第２データを一対一で比較することができる。
【００７４】
第２データを読んだ後に、第１データを基準とし、第２データと比較して変動データ４２０を検出する（ステップＳ６３０）。検出された変動データ４２０はサブブロック単位で構成される。変動データ４２０は既存のＰＲＡＭに保存された第２データで第１データの変動された部分をサブブロック単位で抽出したデータである。
【００７５】
変動データ４２０が検出されれば、第２データが位置するＰＲＡＭのブロックに変動データ４２０をサブブロック単位で書き込む（ステップＳ６４０）。例えば、サブブロック単位がバイト単位であり、ブロック単位が１０２４バイトであるとする。第１データが第２データで１０バイトが変動されると、抽出される変動データ４２０は１０バイトとなる。従って、ＰＲＡＭに１０２４バイトをすべて書き込むのではなく、変動データ１０バイトのみを書き込めば良いので書き込み速度を向上させることができる。
【００７６】
このように、容量が小さいながら、データが頻繁に変動される場合には、変動データのみを改めて書き込むことによって、ＰＲＡＭの特性が読み込む速度に比較して書き込む速度が遅いという特性を効率的に用いることができる。
【００７７】
また、ブロック単位で入出力を実行するデバイスのファイルシステムモジュール１３０又はＦＴＬモジュール１７０を変更させずに、ＰＲＡＭ１５０に対してサブブロック単位で書き込みを実行することによってデータの更新を効果的に実行することができる。
【００７８】
図７は、本発明のまた他の実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ管理動作のフローチャートを示す。
【００７９】
図７を参照すると、ファイルシステムモジュール１３０又はＦＴＬモジュール１７０はＰＲＡＭ１５０のデータに対する読み込み命令をオペレーティングシステムモジュール１２０又はアプリケーション実行モジュール１１０から伝達を受ける。ファイルシステムモジュール１３０又はＦＴＬモジュール１７０は、読み込もうとする論理ブロックアドレス、読み込む論理ブロックの数の情報の伝達を受けて、フィルタレイヤーモジュール１４０に読み込み要請を伝達する（ステップＳ７００）。
【００８０】
フィルタレイヤーモジュール１４０は、マッピング情報を用いて読み込もうとする論理ブロックに対応するＰＲＡＭのブロック４００を検索する（ステップＳ７１０）。フィルタレイヤーモジュール１４０は、マッピング情報提供モジュール２１０に要請してＰＲＡＭのブロック４００を検索することもできる。
【００８１】
ＰＲＡＭのブロック４００を探した後、ＰＲＡＭのブロック４００に保存されたデータを読み込む（ステップＳ７２０）。この時、ＰＲＡＭのブロック４００をサブブロック単位で読み込みつつ、ブロックの最後まで読み込む。
【００８２】
上述したように、フィルタレイヤー１４０を通してＰＲＡＭ１５０のデータを読み込み、これを書き込もうとするデータと比較して変動データ４２０を抽出することができる。ＰＲＡＭの特性である読み込む速度が書き込む速度に比較して速い点を用いることでブロック全体を書き込む代わりにブロック全体を読み込んで変動された部分のみを書き込むことができる。従って、ＰＲＡＭのデータアクセスを、フィルタレイヤーを通して速くさせることができる。
【００８３】
本発明のデータ管理システム及びその方法は、上述したようにコンピュータ又はその他のプログラマブルデータプロセッシング装置のプロセッサーを通じ、そのプログラムのインストラクションによって機能させ実行させることができ、その方法を実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体として提供することができる。
【００８４】
以上、図面を参照しながら本発明の実施形態について説明したが、本発明は、上述の実施形態に限られるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【図面の簡単な説明】
【００８５】
【図１】本発明の一実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ管理システムのブロック図である。
【図２】本発明の一実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ管理システムの動作を示す図である。
【図３】本発明の他の実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ管理システムのブロック図である。
【図４】本発明の他の実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ管理システムの動作を示す図である。
【図５】本発明の一実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ管理システムでのＰＲＡＭ及びマッピングテーブルを示す図である。
【図６】本発明のまた他の実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ管理動作のフローチャートである。
【図７】本発明のまた他の実施形態によるブロック単位の入出力デバイスにおいてＰＲＡＭを用いたデータ管理動作のフローチャートである。
【符号の説明】
【００８６】
１００    データ管理システム、
１１０    アプリケーション実行モジュール、
１２０    オペレーティングシステムモジュール、
１３０    ファイルシステムモジュール、
１４０    フィルタレイヤーモジュール、
１５０    ＰＲＡＭ、
１７０    ＦＴＬ（Ｆｌａｓｈ  Ｔｒａｎｓｌａｔｉｏｎ  Ｌａｙｅｒ）モジュール、
１８０    フラッシュメモリ。
２１０    マッピング情報提供モジュール
２２０    データリーディングモジュール
２３０    変動データ抽出モジュール
４００    ＰＲＡＭのブロック
４１０    サブブロック
４２０    変動データ
４３０    第１データ
４５０    第２データ
５００    マッピングテーブル
【図１】
2009003934.tif 000003
【図２】
2009003934.tif 000004
【図３】
2009003934.tif 000005
【図４】
2009003934.tif 000006
【図５】
2009003934.tif 000007
【図６】
2009003934.tif 000008
【図７】
2009003934.tif 000009