(57)【要約】【課題】  不揮発性メモリのデータを管理する機械読出媒体および方法を開示している。【解決手段】    本方法は、以下のステップを有する。複数の第１の論理オフセットが、第１のメモリブロックの複数の第１の断片に割り当てられる。複数の第１の断片のうちの第１の断片はデータを保存する。複数の第２の論理オフセットが、第２のメモリブロックの複数の第２の断片に割り当てられてもよい。複数の第２の断片のうちの一つの第２の断片が第１の断片に関連づけられる。この第２の断片に割り当てられる第２の論理オフセットは第１の断片に割り当てられる第１の論理オフセットと同一でもよい。そして、データは、第１の断片から第２の断片にコピーされる。【特許請求の範囲】
【請求項１】
複数の第１の論理オフセットを第１のメモリブロックの複数の第１の断片に割り当てるステップであって、複数の第１の断片の第１の断片はデータを格納するところのステップ；および
複数の第２の論理オフセットを第２のメモリブロックの複数の第２の断片に割り当てるステップであって、複数の第２の断片の第２の断片が前記第１の断片と関連づけられ、かつ、前記第２の断片に割り当てられた前記複数の第２の論理オフセットの第２の論理オフセットは、前記第１の断片に割り当てられた複数の第１の論理オフセットの第１の論理オフセットと同一であるところのステップ；および
前記第１の断片から前記第２の断片に前記データをコピーするステップ；
を有する方法。
【請求項２】
前記第１のメモリブロックのための第１のテーブルを定めるステップであって、前記第１のテーブルは、前記第１の断片の前記第１の論理オフセットを第１の物理オフセットにマップしているところのステップ；および
前記第２のメモリブロックのための第２のテーブルを定めるステップであって、前記第２のテーブルは、前記第２の断片の前記第２の論理オフセットを第２の物理オフセットにマップしているところのステップ；
を更に有する請求項１記載の方法。
【請求項３】
前記第１のメモリブロックの第１の論理アドレス、および前記第１の断片の前記第１の論理オフセットを保存するための第３のテーブルを定めるステップ、
を更に有する請求項１記載の方法。
【請求項４】
第１の論理アドレスを前記第１のメモリブロックの第１の物理アドレスにマップするための第４のテーブルを定めるステップ、
を更に有する請求項１記載の方法。
【請求項５】
前記第４のテーブルの前記第１の物理アドレスを前記第２のメモリブロックの第２の物理アドレスに変換するステップ、
を更に有する請求項４記載の方法。
【請求項６】
前記第３のテーブルに影響を及ぼすことなく、前記第１のメモリブロックを消去するステップ、
を更に有する請求項３記載の方法。
【請求項７】
前記第１のメモリブロックの第１の論理アドレス、および前記第１の断片の前記第１の論理オフセットを取得するステップ；
前記第１のメモリブロックの第１の前記第１の論理アドレスを物理アドレスに変換するステップ；
前記第１の断片の前記第１の論理オフセットを第１の物理オフセットに変換するステップ；および
前記第１の断片から前記データを読み込むステップ、
を更に有する請求項１記載の方法。
【請求項８】
前記第１のメモリブロックの第１の論理アドレス、および前記第１の断片の前記第１の論理オフセットを取得するステップ；；
前記第１の論理アドレスを前記第２のメモリブロックの第２の物理アドレスに変換するステップ；
前記第１の論理オフセットを前記第２のセグメントの第２の物理オフセットに変換するステップ；および
前記第２の断片から前記データを読み込むステップ、
を更に有する請求項１記載の方法。
【請求項９】
前記第１のメモリブロック、および前記第２のメモリブロックは、不揮発性メモリブロックである、請求項１記載の方法。
【請求項１０】
機械可読媒体であって、
複数の第１の論理オフセットを第１のメモリブロックの複数の第１の断片に割り当てるステップであって、複数の第１の断片の第１の断片はデータを格納するところのステップ；および
複数の第２の論理オフセットを第２のメモリブロックの複数の第２の断片に割り当てるステップであって、複数の第２の断片の第２の断片が前記第１の断片と関連づけられ、かつ、前記第２の断片に割り当てられた前記複数の第２の論理オフセットの第２の論理オフセットは、前記第１の断片に割り当てられた複数の第１の論理オフセットの第１の論理オフセットと同一であるところのステップ；および
前記第１の断片から前記第２の断片に前記データをコピーするステップ；
をコンピュータシステムに実行させるためのプログラムを記録した機械可読媒体。
【請求項１１】
請求項１０記載の機械可読媒体であって、
前記第１のメモリブロックのための第１のテーブルを定めるステップであって、前記第１のテーブルは、前記第１の断片の前記第１の論理オフセットを第１の物理オフセットにマップしているところのステップ；および
前記第２のメモリブロックのための第２のテーブルを定めるステップであって、前記第２のテーブルは、前記第２の断片の前記第２の論理オフセットを第２の物理オフセットにマップしているところのステップ；
をコンピュータシステムに実行させるためのプログラムを記録した機械可読媒体。
【請求項１２】
請求項１０記載の機械可読媒体であって、
前記第１のメモリブロックの第１の論理アドレス、および前記第１の断片の前記第１の論理オフセットを保存するための第３のテーブルを定めるステップ、
をコンピュータシステムに実行させるためのプログラムを記録した機械可読媒体。
【請求項１３】
請求項１０記載の機械可読媒体であって、
第１の論理アドレスを前記第１のメモリブロックの第１の物理アドレスにマップするための第４のテーブルを定めるステップ、
をコンピュータシステムに実行させるためのプログラムを記録した機械可読媒体。
【請求項１４】
請求項１３記載の機械可読媒体であって、
前記第４のテーブルの前記第１の物理アドレスを前記第２のメモリブロックの第２の物理アドレスに変換するステップ、
をコンピュータシステムに実行させるためのプログラムを記録した機械可読媒体。
【請求項１５】
請求項１２記載の機械可読媒体であって、
前記第３のテーブルに影響を及ぼすことなく、前記第１のメモリブロックを消去するステップ、
をコンピュータシステムに実行させるためのプログラムを記録した機械可読媒体。
【請求項１６】
請求項１０記載の機械可読媒体であって、
前記第１のメモリブロックの第１の論理アドレス、および前記第１の断片の前記第１の論理オフセットを取得するステップ；
前記第１のメモリブロックの第１の前記第１の論理アドレスを物理アドレスに変換するステップ；
前記第１の断片の前記第１の論理オフセットを第１の物理オフセットに変換するステップ；および
前記第１の断片から前記データを読み込むステップ、
をコンピュータシステムに実行させるためのプログラムを記録した機械可読媒体。
【請求項１７】
請求項１０記載の機械可読媒体であって、
前記第１のメモリブロックの第１の論理アドレス、および前記第１の断片の前記第１の論理オフセットを取得するステップ；；
前記第１の論理アドレスを前記第２のメモリブロックの第２の物理アドレスに変換するステップ；
前記第１の論理オフセットを前記第２のセグメントの第２の物理オフセットに変換するステップ；および
前記第２の断片から前記データを読み込むステップ、
をコンピュータシステムに実行させるためのプログラムを記録した機械可読媒体。
【請求項１８】
請求項１０記載の機械可読媒体であって、前記第１のメモリブロック、および前記第２のメモリブロックは、不揮発性メモリブロックである、機械可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、不揮発性メモリにおけるデータを管理する方法に関する。
【背景技術】
【０００２】
電子機器（例えばＮＯＲフラッシュメモリ、および、ＮＡＮＤフラッシュメモリ）用の不揮発性メモリ製品が、広く用いられている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
不揮発性メモリは、複数のメモリブロックを有し、各々のブロックは、複数のデータの断片を含み得る。不揮発性メモリにおけるデータを管理する方法の提供が望まれる。
【課題を解決するための手段】
【０００４】
通常、ファイルの複数のセグメントの各々は、不揮発性メモリの別々の断片に保存される。したがって、ファイルリンキングテーブルは、この複数の断片のメモリーアドレスを保存することによって、ファイルの複数のセグメントを結合してリンクするために利用される。このメモリーアドレスは、断片が帰属するブロックのアドレス、および、ブロックの中の断片のオフセットを含んでもよい。
【０００５】
本発明は、本願明細書において実施例として記載される。なお、添付の図面によって本発明が限定されることはない。説明を分かりやすくし、かつ明瞭にするために、図において例示する要素が必ずしも一定の比率で描かれない場合がある。例えば、一部の要素の寸法は、明確にするために他の要素と関連して誇張されることがある。また、適切な場合には、参照ラベルは、対応または類似した要素を示すために、図の中で繰り返し記載されることがある。
【０００６】
以下、不揮発性メモリのデータを管理する方法に関する技術を説明する。以下の説明では、本発明のより完全な理解のために、ロジックの実装、擬似コード、オペランドを特定する手段、資源分割／シェアリング／多重実装、システムコンポーネントのタイプおよび相互関連性、およびロジック分割／統合選択のような多数の具体的な詳細が記載されている。しかしながら、本発明は、この種の具体的な詳細な事項なしで実施されてもよい。他の例においては、制御の構造、ゲートレベルの回路、および、完全なソフトウェア命令シーケンスは、本発明を不明確にするのを避けるために、詳細には示されていない。当業者は、記載された説明によって、過度の実験を行わなくても、適切な機能をインプリメントすることが可能である。
【０００７】
「一実施例」、「実施例」、「例示の実施例」等の参照は、記載されている実施例が特定の特徴、構造または特性を含んでもよいことを意味するが、あらゆる実施例が、特定の特徴、構造または性質を必ずしも含まなければならないというわけではない。さらに、この種の表現は、同じ実施例に必ずしも関連しているというわけではない。更に、特定の特徴、構造または性質が実施例と関連して記載されている場合、他の実施例において、明確に記載されているかいないかに関わらず、この種の特徴、構造または性質を達成することは当業者にとって知識の範囲内である。
【０００８】
本発明の実施例は、これらについて、ハードウェア、ファームウェア、ソフトウェアまたはいかなるこれらの組合せによってインプリメントされてもよい。本発明の実施例は、同様に、機械読み取り可能な媒体に命令を保存した形でインプリメントされてもよい。この命令は、一つ以上のプロセッサによって読み込まれ実行される。機械読み取り可能な媒体は、機械（例えばコンピューティング装置）によって読み取り可能な形式の情報を保存するかまたは送信するためのいかなる手法を含んでもよい。例えば、機械読み取り可能な媒体は、読取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ素子等を含んでもよい。
【図面の簡単な説明】
【０００９】
【図１】計算機のプラットフォームのメモリシステムに保存されるファイルを管理するためのファイルマネージャを有する計算機のプラットフォームを示す図である。
【図２】メモリシステムの実施例を示す図である。
【００１０】
【図３】ファイルのためのファイルリンキングテーブルの実施例を示す図である。
【図４】メモリシステムのメモリブロックのための論理物理ブロックアドレス変換テーブル（ＬＰＢＡＭＴ）の実施例を示す図である。
【図５Ａ】メモリシステムのメモリブロックの断片のための論理物理オフセットマッピングテーブル（ＬＰＯＭＴ）の実施例を示す図である。
【図５Ｂ】メモリシステムのメモリブロックの断片のための論理物理オフセットマッピングテーブル（ＬＰＯＭＴ）の実施例を示す図である。
【図５Ｃ】メモリシステムのメモリブロックの断片のための論理物理オフセットマッピングテーブル（ＬＰＯＭＴ）の実施例を示す図である。
【００１１】
【図６】メモリシステムから古いメモリブロックを再利用する方法の実施例を示す図である。
【００１２】
【図７】メモリシステムからファイルを読み込む方法の実施例を示す図である。
【発明を実施するための形態】
【００１３】
図１は、コンピューティングシステムの実施例を示す。図示するように、コンピューティングシステム１０は、一つ以上のプロセッサ１１、メモリシステム１２、チップセット１３、入出力デバイス１４、および、他の構成要素を有してもよい。コンピューティングシステム１０の例としては、データを処理し保存するための携帯電話、デジタルカメラ、コンピュータ、および、他のデバイスが含まれる。
【実施例】
【００１４】
一つ以上のプロセッサ１１は、一つ以上のバス（例えばプロセッサバス）を経て、各種要素（例えばチップセット１３）に、コミュニケーションできるよう接続される。プロセッサ１１は、例えば、適切なアーキテクチュアの下でコードを実行できる一つ以上の処理コアを有する集積回路（ＩＣ）としてインプリメントされてもよい。例えば、サンタクララ（カリフォルニア）のインテル社から入手可能な、Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）、Ｉｎｔｅｌ（登録商標）Ｉｔａｎｉｕｍ（登録商標）、Ｉｎｔｅｌ（登録商標）Ｃｏｒｅ（登録商標）Ｄｕｏアーキテクチュアを含む。
【００１５】
メモリシステム１２は、一つ以上のメモリ素子（図示せず）を有してもよい。なお、メモリは同一のものでなくてもよい。例えば、あるメモリは、揮発性のメモリ素子であってもよく、他のメモリ素子は不揮発性メモリデバイスであってもよい。不揮発性メモリデバイスの例としては、ＮＯＲフラッシュメモリデバイス、および、ＮＡＮＤフラッシュメモリ素子がある。揮発性のメモリ素子の例としては、同期型随時書き込み読み出しメモリ（ＳＤＲＡＭ）デバイス、ＲＡＭＢＵＳダイナミックランダムアクセスメモリ（ＲＤＲＡＭ）デバイス、二重データレート（ＤＤＲ）メモリ素子、および、スタティックランダムアクセスメモリ（ＳＲＡＭ）等がある。メモリ素子は、複数のデータの断片を含むことができる複数のメモリブロックを有してもよい。
【００１６】
メモリシステム１２は、命令、および、データをファイル１０１およびファイルマネージャ１０２として保存してもよい。ファイル１０１は複数のファイルセグメントを有する。複数のファイルセグメントは、メモリシステムの別々の場所に各々保存されてもよい。例えば、別々のファイルセグメントは、別々のメモリブロックに保存されてもよい。また、別々のデータの断片が１つのメモリブロックの中に保存されてもよい。
【００１７】
ファイルマネージャ１０２は、ファイルリンキングモジュール１０３、ブロックアドレスマッピングモジュール１０４、オフセットマッピングモジュール１０５、論理オフセット割当モジュール１０６、その他管理ファイル１０１のための他の構成要素を含む。ファイルリンキングモジュール１０３は、メモリシステム１２の別々の場所に保存されたファイルセグメントを結合してリンクするために、ファイル１０１のためのファイルリンキングテーブル１０３０をセットアップすると共に維持する。
【００１８】
図３は、ファイルリンキングテーブル１０３０の実施例を示す。図示するように、ファイルリンキングテーブルは、複数のエントリを含んでもよい。各々のエントリは各々のファイルセグメントのためのものである。各々のエントリは、ファイルセグメントを保存するデータ断片のブロックの論理ブロックアドレスと、ブロック内のデータ断片の論理オフセットとを保存してもよい。この代わりに、ブロックの論理ブロックアドレス、および、データ断片の論理オフセットは、データ断片の論理アドレスを示すようにしてもよい。
【００１９】
ブロックアドレスマッピングモジュール１０４は、論理物理変換ブロックアドレスマッピングテーブル（ＬＰＢＡＭＴ）１０４０をセットアップし維持してもよい。図示するように、ＬＰＢＡＭＴ１０４０は、複数のエントリを有する。各ブロックの各エントリは、ファイルセグメントを保存する断片を含んでもよい。図４は、ＬＰＢＡＭＴ１０４０の実施例である。図示するように、ＬＰＢＡＭＴ１０４０の各々のエントリは、ファイルを保存する各々のブロックの物理ブロックアドレスに、論理ブロックアドレスをマップしてもよい。
【００２０】
オフセットマッピングモジュール１０５は、ファイルを保存する各々のブロックの論理物理オフセットマッピングテーブル（ＬＰＯＭＴ）１０５０をセットアップし、維持してもよい。ＬＰＯＭＴ１０５０は、複数のエントリを有してもよい。各々のエントリは、ブロックの各々のデータ断片のためのものである。図５Ａ−５Ｃは、３ブロックに係る３つのＬＰＯＭＴを示す。図示するように、ＬＰＯＭＴ１０５０の各々のエントリは、論理オフセットを、各々のデータ断片の物理オフセットにマップしてもよい。
【００２１】
論理オフセット割当モジュール１０６は、論理オフセットを１ブロックの各々のデータ断片に割り当ててもよい。
【００２２】
ファイル１０１を読むために、ファイルリンキングテーブル１０３０は、ファイルマネージャ１０２がファイル１０１のセグメントを保存しているデータの断片の論理アドレスを取得するのを助けてもよい。ＬＰＢＡＭＴ１０４０、および、ＬＰＯＭＴ１０５０は、ファイルマネージャ１０２がファイルリンキングテーブル１０３０の論理アドレスに従ってデータの断片の物理アドレスを取得するのを助けてもよい。
【００２３】
ファイルセグメントを保存している古い断片を有する古いブロックを再利用するために、メモリシステム１２は、再利用の前に古いブロックを置き換えるよう、新規なブロックを割り当ててもよい。それから、論理オフセット割当モジュール１０６は、論理オフセットを新規なブロックの新しい断片に割り当ててもよい。特に、古い断片から複製されるファイルセグメントを保存するために新しい断片が選ばれる場合、論理オフセット割当モジュール１０６は、論理オフセットを、古い断片に割り当てられていた同一の論理オフセットから新しい断片に割り当ててもよい。
【００２４】
オフセットマッピングモジュール１０５は、新規なデータの断片に割り当てられる論理オフセットに基づく新規なブロックのための新規なＬＰＯＭＴを構築してもよい。ブロックアドレスマッピングモジュール１０４は、古いブロックの物理アドレスを新規なブロックの物理アドレスに変えることによって、ＬＰＢＡＭＴ１０４０を更新してもよい。ファイルセグメントが古い断片から新しい断片に複製された場合、古いブロックは消去され、そしてファイルリンキングテーブル１０３０を更新することなく、新規なブロックを古いブロックと置き換えてもよい。
【００２５】
チップセット１３は、一つ以上のプロセッサ１１、メモリ１２、および、例えば入出力デバイス１４などのその他の構成要素の間に、一つ以上のコミュニケーションのパスを提供してもよい。入出力デバイス１４は、コンピューティングシステム１に対するデータ入出力を行う。入出力デバイス１４の例としては、ネットワークカード、ブルートゥース、アンテナ、その他データ入出力を行うためのデバイスが含まれる。
【００２６】
他の実施例は、コンピューティングシステム１のための他の技術をインプリメントしてもよい。例えば、ファイルリンキングテーブル１０３０は、論理ブロックアドレスよりむしろ物理ブロックアドレスを保存してもよい。したがって、ブロックアドレスマッピングモジュール１０４は、省略されてもよい。
【００２７】
図２は、メモリシステム１０２の実施例を示す。メモリシステム１０２は、複数のメモリブロックを有する。メモリブロックは、同一であっても、同一でなくてもよい。例えば、図２に示すように、メモリシステム１０２は、ブロック０、ブロック１、ブロック２を有してもよい。ブロックの全ては、同一（例えば不揮発性メモリブロック）であってもよい。あるいは、ブロック１、および、ブロック２が不揮発性メモリブロックであり、ブロック０が揮発性のメモリブロックであってもよい。
【００２８】
各々のブロックは複数のデータの断片を有してもよい。そして、各々のデータ断片はブロック内にデータ断片の物理位置を示す物理オフセットを有してもよい。図２の実施例において、ブロック０ないし２の中の同じ場所にあるデータの断片は、同じ物理オフセットを有してもよい。例えば、ブロック０ないし２の第３の断片は、各々同じ物理オフセット（すなわち２Ｐ）を有してもよい。各々のデータ断片は、ブロック内のデータ断片の論理位置を特定する論理オフセットを更に有してもよい。図２の実施例において、説明をわかりやすくするために、同一セットの論理オフセット（すなわち、０Ｉ、１Ｉ、２Ｉ．．．８Ｉ）が使われている。
【００２９】
ファイル１０１は、複数のファイルセグメント（例えばｆｉｌｅ＿ｓｅｇｍｅｎｔ＿１、ｆｉｌｅ＿ｓｅｇｍｅｎｔ＿２、ｆｉｌｅ＿ｓｅｇｍｅｎｔ＿３、および、ｆｉｌｅ＿ｓｅｇｍｅｎｔ＿４）を有してもよい。各々のファイルセグメントは、メモリシステム１２の別のデータの断片に保存されてもよい。例えば、ｆｉｌｅ＿ｆｒａｇｍｅｎｔ＿１はブロック０の第７の断片に保存されてもよい。ｆｉｌｅ＿ｆｒａｇｍｅｎｔ＿２はブロック１の第３セグメントに保存されてもよい。ｆｉｌｅ＿ｆｒａｇｍｅｎｔ＿３はブロック１の第７の断片に保存されてもよい。そして、ｆｉｌｅ＿ｆｒａｇｍｅｎｔ＿４はブロック１の第８の断片に保存されてもよい。
【００３０】
したがって、ファイルの断片のアドレスを保存することによって、ファイルセグメントをリンクするファイルリンキングテーブルが構築されてもよい。上述したように、ファイルリンキングテーブルは、ファイルを保存する各々のデータ断片の論理ブロックアドレス、および、論理オフセットを保存してもよい。ファイルを保存するデータ断片を有する各々のブロックの論理アドレスを物理アドレスにマップする論理物理ブロックアドレス変換テーブル（ＬＰＢＡＭＴ）は、論理ブロックアドレスに基づいて物理ブロックアドレスを取得するために定められてもよい。
【００３１】
論理オフセットに基づいて物理オフセットを獲得するために、ファイルを保存している各々のブロックのための論理物理オフセットマッピングテーブル（ＬＰＯＭＴ）が定められてもよい。（例えばブロック０のためのＬＰＯＭＴ＿０（図５Ａ）、および、ブロック１のためのＬＰＯＭＴ＿１（図５Ｂ））
【００３２】
ブロック１が汚染データ（例えば無効データ）を保存している場合、ブロック２は、ブロック１の代わりに割り当てられてもよい。ブロック１を再利用する前に、ブロック２の一つ以上のデータの断片は、ブロック１から複製されるファイルセグメントを保存するためにランダムに選ばれてもよい。例えば、ブロック２の第２、第３、および第４のブロックのそれぞれのｆｉｌｅ＿ｓｅｇｍｅｎｔ＿２、ｆｉｌｅ＿ｓｅｇｍｅｎｔ＿３、および、ｆｉｌｅ＿ｓｅｇｍｅｎｔ＿４は、ブロック１の第３，第７、および、第８の断片から複製される。
【００３３】
それから、論理オフセットが、ブロック２の各々のデータの断片に指定される。ブロック１の第３、第７、および、第８の断片の同じ論理オフセットが、ブロック２の第２、第３、および、第４の断片に割り当てられてもよいことが分かる。そして、論理オフセットをブロック２の各々のデータ断片の物理オフセットにマップするために、ブロック２（例えば図５ＣのＬＰＯＭＴ＿２）のためのＬＰＯＭＴが定められてもよい。さらにまた、ＬＰＢＡＭＴは、ブロック１の物理アドレスをブロック２の物理アドレスに変えるために更新されてもよい。
【００３４】
ファイルセグメントをブロック１からブロック２に複製した後に、ブロック１は消去されてもよい。そして、ファイルリンキングテーブルを変えることなしに、ブロック１がブロック２に置き換えられてもよい。ブロック２のファイルデータを保存する断片を選ぶことに関して柔軟性があるため、図２に示すメモリシステムは、シーケンシャルなアドレッシングの制約があるタイプのメモリ（例えばＮＡＮＤメモリ）のスペースを節約することができる。これは、ファイルデータを保存するのにブロック２のシーケンシャルな断片を選び、残りの断片を空のままにすることによって達成できる。
【００３５】
他の実施例は、図２のメモリシステムに、他の技術をインプリメントしてもよい。例えば、同じファイルセグメントを保存する２つのブロックからの２つのデータの断片が同じ論理オフセットを使用している限り、異なるブロックに別のセットの論理オフセットが使われてもよい。
【００３６】
図６は、メモリシステム１２のブロックにファイル１０１を書き込む方法、および、古いブロックを保存しているファイル１０１をメモリシステム１２から再利用する方法の実施例を例示する。図示するように、ブロック６０１で、ブロックアドレスマッピングモジュール１０４は、ファイル１０１によって書かれるブロック（例えば、ブロック０、および１）の全てのためのＬＰＢＡＭＴを定めてもよい。ＬＰＢＡＭＴは、論理ブロックアドレスを各々のブロックのための物理ブロックアドレスにマップしてもよい。ブロック６０２において、オフセットマッピングモジュール１０５は、各々のブロックに対してＬＰＯＭＴを定めてもよい（例えばブロック０のためのＬＰＯＭＴ＿０、および、ブロック１のためのＬＰＯＭＴ＿１）。ＬＰＯＭＴは、論理オフセットをブロックの各々のデータ断片のための物理オフセットにマップしてもよい。
【００３７】
ブロック６０３において、ファイル１０１の異なるセグメントは、ブロックの別のデータの断片に書き込まれてもよい（例えばブロック０の第７の断片、ブロック１の第３の断片、第７の断片、および、第８の断片）。ブロック６０４において、ファイルリンキングモジュール１０３は、ファイルセグメントを結合してリンクするために、ファイルリンキングテーブルを定めてもよい。その際、ファイルを保存しているデータの断片の論理アドレスを保存する。ここで、論理アドレスには、ブロックの論理アドレス、および、ブロック内のデータの断片の論理オフセットが含まれる。
【００３８】
ブロック６０５において、メモリシステム１２からファイル１０１を保存している古いブロック（例えば、ブロック１）を再利用するべきかどうかが判断される。古いブロックを再利用することに応答して、ブロック６０６で、新規なブロック（例えばブロック２）が、古いブロックを置き換えるために割り当てられてもよい。そして、論理オフセット割当モジュール１０６は論理オフセットを新規なブロックの各々の断片に指定してもよい。上述したように、新規なブロックからの新しい断片が、古いブロックの古い断片から複製されるファイルデータを保存するために選ばれた場合、論理オフセット割当モジュール１０６は、古い断片に割り当てたのと同じ論理オフセットを新しい断片に割り当ててもよい。
【００３９】
ブロック６０７において、オフセットマッピングモジュール１０５は、論理オフセット割当モジュール１０６によって割り当てられた論理オフセットに基づいて、新規なブロックのための新規なＬＰＯＭＴを定めてもよい。新規なＬＰＯＭＴは、論理オフセットを、新規なブロックの各々の断片のための物理オフセットにマップしてもよい。ブロック６０８において、ブロックアドレスマッピングモジュール１０４は、古いブロックの物理アドレスを新規なブロックの物理アドレスに変えるためにＬＰＢＡＭＴを変更してもよい。ブロック６０９において、有効なデータを含んでいるファイルデータは古いブロックから新規なブロックにコピーされてもよい。そして、ブロック６１０で、古いブロックは消去されてもよい。
【００４０】
図７は、メモリシステム１２からファイル１０１を読み出す方法の実施例を例示している。ブロック７０１において、メモリシステム１２からファイル１０１を読み込むことが決定される。ブロック７０２において、ファイルリンキングテーブルモジュール１０３は、ファイル１０１のためのファイルリンキングテーブルを取り出してもよい。ブロック７０３において、ファイルリンキングテーブルモジュール１０３は、ブロックのデータ断片に保存されたファイルセグメントのエントリを探すためのファイルリンキングテーブルを検索してもよい。ブロック７０４において、ファイルリンキングテーブルモジュール１０３は、ブロックのための論理ブロックアドレス、および、データ断片のための論理オフセットを、ファイルリンキングテーブルのエントリから取り出してもよい。
【００４１】
ブロック７０５において、ブロックアドレスマッピングモジュール１０４は、ＬＰＢＡＭＴに基づいて、ファイルリンキングテーブルから検索された論理ブロックアドレスを、物理ブロックアドレスに変換してもよい。ブロック７０６において、オフセットマッピングモジュール１０５は、ＬＰＯＭＴに基づいて、ファイルリンキングテーブルから検索された論理オフセットを物理オフセットに変換してもよい。ブロック７０７において、ファイルマネージャ１０２は、物理ブロックアドレス、および、物理オフセットによって示されるデータ断片に保存されたファイルセグメントを読み込んでもよい。それから、ブロック７０８で、ファイルセグメントがファイル１０１の最後の一つであるかどうかが判断される。ファイルセグメントが最後のものでない場合、上に述べたブロック７０３ないし７０７が、他のファイルセグメントを読み込むためにもう一度実行されてもよい。
【００４２】
本発明が特定の実施例と連動して記載されていたとしても、本発明の精神と範囲から逸脱することなく、修正変更が行われてもよいことが当業者に理解される。この種の修正変更は、本発明、および添付の請求の範囲の範囲内であると考慮される。
【図１】
2010515128.tif 000002
【図２】
2010515128.tif 000003
【図３】
2010515128.tif 000004
【図４】
2010515128.tif 000005
【図５Ａ】
2010515128.tif 000006
【図５Ｂ】
2010515128.tif 000007
【図５Ｃ】
2010515128.tif 000008
【図６】
2010515128.tif 000009
【図７】
2010515128.tif 000010
【国際調査報告】
2010515128.tif 000011
2010515128.tif 000012