(57)【要約】【課題】フラッシュ式格納システムにてページディファレンシャルロギングと呼ばれる効率的なデータ格納方法を提案する。【解決手段】ページディファレンシャルロギングでは、フラッシュメモリー内のオリジナルページとメモリー内の最新ページとの差異であるディファレンシャルのみが記録される。ディファレンシャルは、ページがメモリー上で更新される度に計算されて記録されるのではなく、更新ページをフラッシュメモリーに反映する必要がある時にのみ計算されて記録される。このため、データの変更部分と非変更部分を含むページ全体を記録する既存のページ方式や、ページ内の変更事項の記録をすべて維持する既存のログ方式と異なる。フラッシュメモリードライバーを変更して既存のディスク式ＤＢＭＳをフラッシュ式ＤＢＭＳとして再使用できるのでＤＢＭＳに独立的な方法であり、書き込み演算の回数を減らしてフラッシュメモリーの寿命を伸ばす。【選択図】図１５
2010218529.tif 000002
【特許請求の範囲】
【請求項１】
ページ−ディファレンシャルを使用して、ＤＢＭＳに独立的な方法でフラッシュメモリーにデータを格納する方法であって、
論理的ページをフラッシュメモリー内にベースページとディファレンシャルページに分けて記録する記録工程と、
前記ベースページと前記ディファレンシャルページを読んだ後、前記ベースページと前記ディファレンシャルページ内のディファレンシャルを併合して論理的ページを生成する再生成工程と
を含む方法。
【請求項２】
前記記録工程が、
論理的ページとフラッシュメモリー内のベースページを比較してディファレンシャルを生成するディファレンシャル生成工程と、
前記ディファレンシャル生成工程後、生成されたディファレンシャルを書き込みバッファーに記録するディファレンシャル記録工程と、
前記書き込みバッファーがすべていっぱいになると、これをフラッシュメモリーに格納するバッファー記録工程と
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ベースページが、論理的ページ全体を含むことを特徴とする請求項１または請求項２に記載の方法。
【請求項４】
前記ディファレンシャルページが、一つ以上の論理的ページのディファレンシャルを含むことを特徴とする請求項１または請求項２に記載の方法。
【請求項５】
前記ディファレンシャルが、前記ベースページと前記論理的ページとの間の差異であることを特徴とする請求項１または請求項２に記載の方法。
【請求項６】
前記記録工程が、更新された論理的ページがフラッシュメモリーに反映される必要がある場合にのみ遂行されることを特徴とする請求項１または請求項２に記載の方法。
【請求項７】
前記記録工程が、
フラッシュメモリーから論理的ページに対するベースページを読む第１工程と、
前記第１工程で読んだベースページと前記論理的ページを比較することで論理的ページに対するディファレンシャルを生成する第２工程と、
前記第２工程後、書き込みバッファーに以前のディファレンシャルが存在する場合にはこれを先に削除した後、ディファレンシャルを前記書き込みバッファーに記録する第３工程と
を含むことを特徴とする請求項１または請求項２に記載の方法。
【請求項８】
前記第３工程は、前記ディファレンシャルのサイズが前記書き込みバッファーの余裕空間と同じか小さい場合に、前記ディファレンシャルを書き込みバッファーに記録する工程であることを特徴とする請求項７に記載の方法。
【請求項９】
前記第３工程は、前記ディファレンシャルのサイズが前記書き込みバッファーの余裕空間よりは大きいが、物理的ページ一つのサイズと同じか小さい場合に、前記書き込みバッファーの内容をフラッシュメモリーに記録する工程と、前記書き込みバッファーを空にする工程と、前記ディファレンシャルを前記書き込みバッファーに記録する工程とで構成されることを特徴とする請求項７に記載の方法。
【請求項１０】
前記フラッシュメモリーに記録する工程が、
前記書き込みバッファーの内容をフラッシュメモリーから割り当てられた新しい物理的ページに記録する工程と、
物理的ページマッピングテーブルと有効ディファレンシャルカウントテーブルを更新するテーブル更新工程と
を含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記テーブル更新工程が、
前記書き込みバッファー内の各ディファレンシャルに対して、前記各ディファレンシャルが属する論理的ページのディファレンシャルページが前記物理的ページになるように物理的ページマッピングテーブルを更新する工程と、
前記各ディファレンシャルが属する論理的ページの以前のディファレンシャルページがｎｏｎｅではない場合、有効ディファレンシャルカウントテーブルの以前のディファレンシャルページのカウント値を１減少させる工程と、
有効ディファレンシャルカウントテーブルの新しいディファレンシャルページのカウント値を１増加させる工程と
を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記第３工程が、前記ディファレンシャルのサイズが物理的ページ一つのサイズよりさらに大きい場合、前記ディファレンシャルを捨てる工程と、ベースページを記録する工程とで構成されることを特徴とする請求項７に記載の方法。
【請求項１３】
前記ベースページを記録する工程が、
前記ベースページをフラッシュメモリーから割り当てられた新しい物理的ページに記録する工程と、
物理的ページマッピングテーブルと有効ディファレンシャルカウントテーブルを更新するテーブル更新工程と
を含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記テーブル更新工程が、
前記論理的ページのベースページとディファレンシャルページがそれぞれ前記物理的ページとｎｏｎｅになるように物理的ページマッピングテーブルを更新する工程と、
前記論理的ページの以前のディファレンシャルページがｎｏｎｅではない場合、有効ディファレンシャルカウントテーブルの以前のディファレンシャルページのカウント値を１減少させる工程と、
前記論理的ページの以前のベースページを廃止状態に設定する工程と
を含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記以前のディファレンシャルページのカウント値を１減少させる工程以後に、前記減少された以前のディファレンシャルページのカウント値が０の場合、前記ディファレンシャルページを廃止状態に設定する工程をさらに含むことを特徴とする請求項１１または請求項１４に記載の方法。
【請求項１６】
前記再生成工程が、
前記フラッシュメモリーから前記論理的ページに対する前記ベースページを読む第１過程と、
前記論理的ページに対するディファレンシャルを捜す第２過程と、
前記第１過程で読んだベースページと前記第２過程で捜したディファレンシャルを併合して論理的ページを生成した後、これを結果として返還する第３過程と
を含むことを特徴とする請求項１または請求項２に記載の方法。
【請求項１７】
前記第２過程は、前記ディファレンシャルが前記書き込みバッファーに存在する場合に、前記書き込みバッファーから前記論理的ページに対するディファレンシャルを捜す工程であることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記第２過程は、前記ディファレンシャルが前記書き込みバッファーに存在しない場合に、前記論理的ページに対するディファレンシャルページを読む工程と、前記読んだディファレンシャルページからディファレンシャルを捜す工程とで構成されることを特徴とする請求項１６に記載の方法。
【請求項１９】
前記論理的ページに対するディファレンシャルページを読む工程以前に、前記論理的ページに対するディファレンシャルページがフラッシュメモリーに存在しない場合に前記第１過程で読んだベースページを結果として返還する工程をさらに含むことを特徴とする請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ページ−ディファレンシャルを使用して、ＤＢＭＳに独立的な方法でフラッシュメモリーにデータを格納する方法に関するものである。
【背景技術】
【０００２】
フラッシュメモリーは、メモリーセルの構造によって、ＮＡＮＤとＮＯＲの二つのタイプがある。ＮＡＮＤタイプは、データを格納するのに相応しく、ＮＯＲタイプは、コードを格納するのに相応しい。本発明で「フラッシュメモリー」という用語は、フラッシュ式格納システムで広く使用されるＮＡＮＤタイプのフラッシュメモリーを示す。
【０００３】
図１は、フラッシュメモリーの構造を示す。フラッシュメモリーは、Ｎｂｌｏｃｋ個のブロックで構成されて、各ブロックは、Ｎｐａｇｅ個のページで構成される。ページは、データの読み書きの演算が遂行される最小単位であり、ブロックは、データを削除する演算が遂行される最小単位である。各ページは、データを格納するためのデータ領域と有効（ｖａｌｉｄ）及び廃止（ｏｂｓｏｌｅｔｅ）状態ビット、バッドブロック識別、エラーチェックのような補助情報を格納するためのスペア領域で構成される。
【０００４】
フラッシュメモリー内のデータを読み書きするために、読み取り、書き込み、削除の三種類の演算が存在する。
−読み取り演算：特定ページ内のすべてのビット値を返還する
−書き込み演算：特定ページ内の選択されたビットの値を１から０に変える
−削除演算：特定ブロック内のすべてのビット値を１に設定する
フラッシュメモリーに対する演算は、磁気ディスクに対する演算と異なる。まず、フラッシュメモリー内のすべてのビットは、初期に１に設定される。よって、フラッシュメモリーに対する書き込み演算は、特定ページ内の一部ビット値を１から０に変えることを意味する。次に、フラッシュメモリーに対する削除演算は、特定ブロック内のすべてのビット値を１に戻すことができる。各ブロックに対して、おおよそ１００，０００回程度に制限された回数のみ削除演算の遂行が可能で、それ以上、遂行される場合、データを信頼することができなくなる。
【０００５】
書き込みと削除演算の制約によってページを上書きするためには、一般的に削除演算が書き込み演算に先行して遂行される。削除演算を遂行してブロック内のすべてのビット値を１に変化させた後、書き込み演算を遂行してページ内の一部ビット値を０に変化させる。また、削除演算は、書き込み演算よりずっと大きい単位に対して遂行される。すなわち、書き込み演算は、ページに対して遂行される一方、削除演算はブロックに対して遂行される。ページを上書きするための具体的な方法は、使用しているページ更新方法によって決定される。
【０００６】
フラッシュメモリーは、メモリーセルの容量によって単一レベルセル（ＳＬＣ）と多重レベルセル（ＭＬＣ）の二つのタイプがある。前者は、セルごとに一つのデータビット値のみを格納することができるのと比較して、後者は、セルごとに二つの（またはそれ以上の）データビット値を格納することができる。よって、ＭＬＣタイプのフラッシュメモリーは、ＳＬＣタイプと比較して容量がさらに大きくて、大容量のフラッシュ格納装置に広く使用されることが予想される。表１は、ＭＬＣタイプのフラッシュメモリーのパラメーターとその値を要約したものである。ページサイズは、２，０４８バイトであり、ブロックは、６４個のページで構成される。また、演算のアクセス時間は、読み取り、書き込み、削除の順序で増加する。読み取り演算は、書き込み演算と比較して７．９倍速く、書き込み演算は、削除演算と比較して１．６倍速い。
【０００７】
【表１】
2010218529.tif 000003
以後、本発明での不明確さを減らすために、物理的ページと論理的ページを区別する。メモリー内のページを論理的ページと呼び、フラッシュメモリー内のページを物理的ページと呼ぶ。また、説明の便宜上、論理的ページのサイズが物理的ページのサイズと同一であると仮定する。
【０００８】
今までフラッシュ式格納システムのために更新されたページをフラッシュメモリーに格納する方法に対する多くの研究が行なわれた。本発明では、このような方法をページ更新方法と呼ぶことにする。ページ更新方法は、ページ式とログ式の二つのカテゴリーに分けられる。
【０００９】
ページ式方法では、一つの論理的ページが一つの物理的ページに格納される。更新されたページがフラッシュメモリーに反映される必要がある場合（例えば、更新されたページが、ＤＢＭＳバッファーでデータベースにスワップアウトされる場合）、一つの論理的ページ全体が一つの物理的ページに記録される。論理的ページがフラッシュメモリーから再生成される場合（例えば、ページをＤＢＭＳバッファーで読み込む場合）、論理的ページは一つの物理的ページから読まれる。この方法は、フラッシュ変換階層（Ｆｌａｓｈ  Ｔｒａｎｓｌａｔｉｏｎ  Ｌａｙｅｒ、ＦＴＬ）と呼ばれる中間階層に具現されるので、格納システムと緩く結合される。ここで、ＦＴＬは、図２のように論理的ページと物理的ページ間の論理的住所と物理的住所のマッピングを管理する。ＦＴＬは、ＳＳＤ’ｓ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｉｓｋｓ）内に存在するコントローラーにファームウエア形態で具現することもでき、組込みボードのための運営体制内にソフトウェア形態で具現することもできる。
【００１０】
ページ式方法は、論理的ページがいつも同一物理的ページに記録されるのかいなかによって、インプレースアップデート（ｉｎ−ｐｌａｃｅ  ｕｐｄａｔｅ）とアウトプレースアップデート（ｏｕｔ−ｐｌａｃｅ  ｕｐｄａｔｅ）の二つの方法に分けられる。論理的ページが、フラッシュメモリーに反映される必要がある場合、インプレースアップデートは、論理的ページを以前に読んだ特定物理的ページに上書きして、アウトプレースアップデートは、論理的ページを新しい物理的ページに記録する。
【００１１】
フラッシュメモリーでの書き込み演算は、ページ内のビット値を１に変えることができないので、ブロックｂ１内の物理的ページｐ１から読み込んだ論理的ページｍ１を同一な物理的ページｐ１に上書きする場合、インプレースアップデートは、次の四種類の工程を遂行する。
【００１２】
第一工程：ｐ１を除いたブロックｂ１内のすべてのページを読む。
第二工程：ブロックｂ１に対して削除演算を遂行する。
第三工程：論理的ページｍ１を物理的ページｐ１に記録する。
【００１３】
第四工程：ｍ１を除く工程１で読んだすべてのページをブロックｂ１内の該当のページに記録する。
したがって、インプレースアップデートは、論理的ページをフラッシュメモリーに反映しなければならない度に一回の削除演算と数回の読み取り及び書き込み演算を発生させるので深刻な性能低下問題を有し、フラッシュ式格納システムでは、ほとんど使用されない。
【００１４】
インプレースアップデートの短所を克復するために、アウトプレースアップデートは、論理的ページｍ１をフラッシュメモリーに反映しなければならない場合、論理的ページ ｍ１を新しい物理的ページｐ２に記録した後、物理的ページｐ１を廃止（ｏｂｓｏｌｅｔｅ）状態に設定する。フラッシュメモリー内のフリー状態のページが不足な場合、廃止状態のページは、ガベージコレクションによってフリー状態のページに変換されて再使用される。
【００１５】
アウトプレースアップデートは、論理的ページをフラッシュメモリーに反映しなければならない度に、削除演算を発生させないのでフラッシュ式格納システムで、広く使用される。これに対して、図３と図４は、アウトプレースアップデートを示す。図３は、ブロックｂ１内の物理的ページｐ１から読んだ論理的ページｍ１を示し、図４は、更新された論理的ページｍ１とこれを物理的ページｐ２に記録する過程を示す。ここで、ｐ１は、以前に読んだオリジナルページで、ｐ２は新たに記録されたページである。
【００１６】
ログ式方法では、一つの論理的ページが一般的にいくつかの物理的ページに格納される。論理的ページが更新される度に、多くの論理的ページの更新ログが先にメモリー上の書き込みバッファーに集められる。ここで、更新ログは、一つの更新命令によって発生するページ内の変更事項である。そして、もしバッファーがすべていっぱいになるとそれを一つの物理的ページに記録する。よって、論理的ページが頻繁に更新される場合、それに対する更新ログがいくつかの物理的ページに格納されるので、一つの論理的ページを再生成する場合、いくつかの物理的ページが読まれなければならないし、併合されなければならない。のみならず、ログ式方法は格納システムが論理的ページの更新ログを識別することができるように直されなければならないので、システムに密結合になる（システム依存性が高い）。
【００１７】
ログ式方法には、ＬＦＳ（Ｌｏｇ−ｓｔｒｕｃｔｕｒｅｄ  Ｆｉｌｅ  ｓｙｓｔｅｍ）、ＪＦＦＳ（Ｊｏｕｒｎａｌｉｎｇ  Ｆｌａｓｈ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＹＡＦＦＳ（Ｙｅｔ  Ａｎｏｔｈｅｒ  Ｆｌａｓｈ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、そしてＩＰＬ（Ｉｎ−Ｐａｇｅ  Ｌｏｇｇｉｎｇ）がある。ＬＦＳ、ＪＦＦＳ、そしてＹＡＦＦＳでは、論理的ページの更新ログがフラッシュメモリー内の任意のログページに記録され得る一方、ＩＰＬでは更新ログが特定ログページに記録される。ＩＰＬは、各ブロック内のページを固定された個数のオリジナルページとログページに分ける。この方法は、論理的ページの更新ログをその論理的ページのオリジナルページを含んだブロック内のログページにのみ記録する。よって、ＩＰＬは論理的ページを再生成する場合、ブロック内のオリジナルページとログページのみを読む。ＩＰＬは、ブロック内にフリー状態のログページがない場合、ブロック内のオリジナルページとログページを併合した後、併合されたページを新しいブロック内のページに記録する（この過程は、合併（ｍｅｒｇｉｎｇ）と呼ばれる）。
【００１８】
結果的に、他のログ式方法と比較した時、ＩＰＬは合併によってログページが無限に増加しないので、論理的ページを再生成する場合にフラッシュメモリーから読まなければならないログページの個数を減らすことにより、読み取り性能を向上させる。ＩＰＬは、合併の効果を除き、ログ式方法の長短所を受け継ぐため、他のログ式方法と性能が類似している。
【００１９】
図５から図９までは、ログ式方法の典型的な例を示す。
図５は、メモリー上の論理的ページｍ１，ｍ２を示す。
図６は、論理的ページｍ１，ｍ２の更新ログｑ１、ｑ２とこれらをフラッシュメモリーに記録する過程を示す。ここで、更新ログｑ１、ｑ２は、先に書き込みバッファーに記録された後、バッファーの内容がログページｐ３に記録される。よって、更新ログｑ１、ｑ２は、同一ログページｐ３に集められる。
【００２０】
図７は、論理的ページｍ１，ｍ２の更新ログｑ３、ｑ４とこれらをフラッシュメモリーに記録する過程を示す。ここで、更新ログｑ３、ｑ４は、先に書き込みバッファーに記録された後、バッファーの内容がログページｐ４に記録される。よって、更新ログｑ３、ｑ４は、同一ログページｐ４に集められる。
【００２１】
図８は、フラッシュメモリーから再生成された論理的ページｍ１を示す。
図９は、図８で再生成された論理的ページｍ１の生成過程を示す。ここで、論理的ページｍ１は、オリジナルページｐ１とログページｐ３、ｐ４それぞれから読んだ更新ログｑ１、ｑ３を併合することで再生成される。
【００２２】
ページ式方法とログ式方法を比較すると、論理的ページを更新するためにページ式方法は、ページ内の変更された部分だけではなく変更されない部分までも記録するのと比較して、ログ式方法は、ただ更新ログのみを記録する。よって、更新が頻繁に発生しない場合、ページ式方法がログ式方法と比較してさらに悪い書き込み性能を有する。ページ式方法は、更新されたページがフラッシュメモリーに反映される必要がある場合にのみ、更新されたページをフラッシュメモリーに記録する。しかし、ログ式方法は、論理的ページを更新する度に更新ログを使用するバッファーに記録する。ここで、書き込みバッファーがすべていっぱいになるとこれをフラッシュメモリーに記録する。よって、更新が頻繁に発生する場合、論理的ページが何回も更新されてページ一つの更新ログの総量が、ページ一つのサイズよりもっと大きくなることがある。この場合には、ページ式方法がログ式方法と比較してより良い書き込み性能を有する。
【００２３】
次に、フラッシュメモリーから論理的ページを再生成する場合、ページ式方法は、論理的ページが一つの物理的ページに格納されているので、一回の読み取り演算のみを必要とする。一方、ログ式方法は、論理的ページがいくつかの物理的ページに格納されているので、何回かの読み取り演算を必要とする。結果的に、ページ式方法は、ログ式方法と比較してより良い読み取り性能を有する。
【００２４】
最後に、ページ式方法は、ＤＢＭＳ依存性がないのに対して、ログ式方法は、ＤＢＭＳ依存性がある。
【００２５】
【表２】
2010218529.tif 000004
【先行技術文献】
【非特許文献】
【００２６】
【非特許文献１】Chang, L. and Kuo, T., “An Efficient Management Scheme for Large-Scale Flash Memory Storage Systems”, In ACM Symposium on Applied Computing (SAC), Nicosia,  Cyprus, Mar. 2004.
【非特許文献２】Gal, E. and Toledo, S., “Algorithms and Data Structures for Flash Memories”, In ACM Computing Surveys, Vol.37, No.2, 2005.
【非特許文献３】Kawaguchi, A., Nishioka, S., and Motoda, H., “A Flash-Memory Based File System”, In Proc. USENIX Annual Technical Conference, New Orleans, Louisiana, Jan. 1995.
【非特許文献４】Koltsidas, I. and Viglas, S. D., “Flashing Up the Storage Layer”, In Proc. Int’l Conf. on Very Large Data Bases (VLDB), Auckland, New Zealand, Aug. 2008.
【非特許文献５】Lee, S., Choi, W., Park, D., “FAST: An Efficient Flash Translation Layer for Flash Memory”, In Proc. 1st Int’l Workshop on Embedded Software Optimization (ESO), Seoul, Korea, Aug. 2006.
【非特許文献６】Lee, S. and Moon, B., “Design of Flash-Based DBMS: An In-Page Logging Approach”, In Proc. Int’l Conf. on Management of Data, ACM SIGMOD, Beijing, China, June 2007.
【非特許文献７】Nath, S. and Gibbons, P. B., “Online Maintenance of Very Large Random Samples on Flash Srorage”, In Proc. Int’l Conf. on Very Large Data Bases (VLDB), Auckland, New Zealand, Aug. 2008.
【非特許文献８】Park, C., Seo, J., Seo, D., Kim, S., and Kim, B., “Cost-Efficient Memory Architecture Design of NAND Flash Memory Embedded Systems”, In Proc. Int’l Conf. on Computer Design (ICCD), San Jose, California, Oct. 2003.
【非特許文献９】Rosenblum, M. and Ousterhout, J. K., “The Design and Implementation of a Log-Structured File System”, In ACM Transactions on Computer Systems (TOCS), Vol.10, No.1, 1992.
【非特許文献１０】Samsung Electronics, Datasheet: 1G×8bit/2G×8bit/4G×8bit NAND Flash Memory, 2005 (http://www.DataSheet4U.com).
【非特許文献１１】Woodhouse, D., “JFFS: The Journaling Flash File System”, In Proc. OttawaLinux Symposium, Ottawa, Canada, July 2001.
【非特許文献１２】Wu, C., Kuo, T., and Chang, L., “An Efficient B-Tree Layer for Flash-Memory Storage Systems”, In ACM Transactions on Embedded Computing Systems, Vol.6, No.3, 2007.
【特許文献】
【００２７】
【特許文献１】米国特許出願公開２００８／００６８８９４Ａ１明細書
【発明の概要】
【発明が解決しようとする課題】
【００２８】
本発明では、読み取り及び書き込み演算すべてに対して良い性能を有することで、フラッシュメモリー式格納システムの性能を顕著に向上させるページ−ディファレンシャルロギング（ｐａｇｅ−ｄｉｆｆｅｒｅｎｔｉａｌ  ｌｏｇｇｉｎｇ）と呼ばれるページ更新方法を提案する。
【課題を解決するための手段】
【００２９】
上述した課題を解決するために、本発明によるＤＢＭＳに独立的な方法でフラッシュメモリーにデータを格納する方法は、論理的ページをフラッシュメモリーのベースページとディファレンシャルページに分けて記録する記録工程と、ベースページとディファレンシャルページを読んだ後、ベースページとディファレンシャルページ内のディファレンシャルを併合して論理的ページを生成する再生成工程とを含むことを特徴とする。
【００３０】
また、前記記録工程は、論理的ページとベースページを比較してディファレンシャルを生成するディファレンシャル生成工程と、前記ディファレンシャル生成工程後、生成されたディファレンシャルを書き込みバッファーに記録するディファレンシャル記録工程と、前記書き込みバッファーがすべていっぱいになると、これをフラッシュメモリーに記録するバッファー記録工程とを含むことを特徴とする。
【００３１】
また、前記ベースページは、論理的ページ全体を含むことを特徴とする。
また、前記ディファレンシャルページは、一つ以上の論理的ページのディファレンシャルを含むことができることを特徴とする。
【００３２】
また、前記ディファレンシャルは、前記ベースページと前記論理的ページ間の差異点であることを特徴とする。
また、前記記録工程は、論理的ページがメモリー上で更新される度に遂行されるのではなく、更新された論理的ページがフラッシュメモリーに反映される必要がある場合にのみ遂行されることを特徴とする。
【００３３】
また、前記記録工程は、フラッシュメモリーから論理的ページに対するベースページを読む第１工程と、前記第１工程で読んだベースページと論理的ページを比較することによって、論理的ページに対するディファレンシャルを生成する第２工程と、前記第２工程後、ディファレンシャルを書き込みバッファーに記録する第３工程とを含むことを特徴とする。
【００３４】
また、前記第３工程は、前記ディファレンシャルのサイズが前記書き込みバッファーの余裕空間と同じか小さな場合に、前記ディファレンシャルを書き込むバッファーに記録する工程であることを特徴とする。
【００３５】
また、前記第３工程は、前記ディファレンシャルのサイズが前記書き込みバッファーの余裕空間よりは大きいが、物理的ページ一つのサイズと同じか小さな場合、前記書き込みバッファーの内容をフラッシュメモリーに記録した後、前記書き込みバッファーを空にして、前記ディファレンシャルを前記書き込みバッファーに記録する工程であることを特徴とする。
【００３６】
また、前記第３工程は、前記ディファレンシャルのサイズが物理的ページ一つのサイズよりもさらに大きい場合、前記ディファレンシャルを捨てて論理的ページ自体をフラッシュメモリーに新しいベースページとして記録する工程であることを特徴とする。
【００３７】
また、前記再生成工程は、前記フラッシュメモリーから前記論理的ページに対する前記ベースページを読む第１過程と、前記論理的ページに対するディファレンシャルを捜す第２過程と、前記第１過程で読んだベースページと前記第２過程で捜したディファレンシャルを併合して論理的ページを生成する第３過程とを含むことを特徴とする。
【００３８】
また、前記第２過程は、前記ディファレンシャルが前記書き込みバッファーに存在する場合には、前記書き込みバッファーから論理的ページに対するディファレンシャルを捜す工程であることを特徴とする。
【００３９】
また、前記第２過程は、前記ディファレンシャルが前記書き込みバッファーに存在しない場合には、論理的ページに対するディファレンシャルページをフラッシュメモリーから読み出した後、読んだディファレンシャルページからディファレンシャルを捜す工程であることを特徴とする。
【発明の効果】
【００４０】
上述したように、本発明によるページ−ディファレンシャルロギング方法は、フラッシュ式格納システムの性能を顕著に向上させる効果的で効率的なページ更新方法であり、この方法によれば、更新されたページのディファレンシャルのみが記録され、ディファレンシャルは、ページがメモリー上で更新される度に計算され記録されるのではなく、更新されたページがフラッシュメモリーに反映される必要がある場合にのみ計算され記録される。フラッシュメモリーからページを再生成する場合、ログ式方法と比較して読み取り演算の回数を少なくすることができ、更新されたページをフラッシュメモリーに反映しなければならない場合、ログ式及びページ式方法と比較して書き込み演算の回数を少なくすることができる。また、この方法は、フラッシュメモリードライバーのみを直すことで、既存ディスク式ＤＢＭＳをフラッシュ式ＤＢＭＳに再使用可能となるので、経済的で速度が速く、かつ性能がさらに向上する。
【図面の簡単な説明】
【００４１】
【図１】フラッシュメモリーの構造を示した図である。
【図２】ページ式アプローチのアーキテクチャーを示した図である。
【図３】アウトプレースアップデート過程の中でブロックｂ１内の物理的ページｐ１から読んだ論理的ページｍ１を示した図である。
【図４】アウトプレースアップデート過程の中で更新された論理的ページｍ１と、それを物理的ページｐ２に記録する過程を示した図である。
【図５】ログ式アプローチを説明するために過程開始前のメモリー状態を示した図である。
【図６】ログ式アプローチ過程の中で、論理的ページｍ１，ｍ２とそれぞれの更新ログｑ１、ｑ２がフラッシュメモリーに記録される過程を示した図である。
【図７】ログ式アプローチ過程の中で、論理的ページｍ１，ｍ２とそれぞれの更新ログｑ３、ｑ４がフラッシュメモリーに記録される過程を示した図である。
【図８】ログ式アプローチ過程の中で、フラッシュメモリーから再生成された論理的ページｍ１を示した図である。
【図９】ログ式アプローチ過程の中で、図８で再生成された論理的ページｍ１の生成方法を示した図である。
【図１０】ディファレンシャル式アプローチを説明するために過程開始前のメモリー状態を示した図である。
【図１１】ディファレンシャル式アプローチ過程の中で、更新された論理的ページｍ１，ｍ２と、これらがフラッシュメモリーに記録される過程を示した図である。
【図１２】ディファレンシャル式アプローチ過程の中で、更新された論理的ページｍ１，ｍ２と、これら各々のベースページとの比較によるディファレンシャルの生成を示す。
【図１３】ディファレンシャル式アプローチ過程の中で、フラッシュメモリーから再生成された論理的ページｍ１を示す図である。
【図１４】ディファレンシャル式アプローチ過程の中で、フラッシュメモリーから再生成された論理的ページｍ１の生成方法を示した図である。
【図１５】ページ−ディファレンシャルロギング方法の資料構造を示した図である。
【図１６】論理的ページをフラッシュメモリーに記録するアルゴリズムを示した図である。
【図１７】図１６に記載したアルゴリズムで使用されるｗｒｉｔｉｎｇＤｉｆｆｅｒｅｎｔｉａｌＷｒｉｔｅＢｕｆｆｅｒ関数を示した図である。
【図１８】図１６に記載したアルゴリズムで使用されるｗｒｉｔｉｎｇＮｅｗＢａｓｅＰａｇｅ関数を示した図である。
【図１９】論理的ページをフラッシュメモリーに記録するアルゴリズムである図１６〜図１８を工程として示した図である。
【図２０】図１６と図１９の中でディファレンシャルのサイズによる論理的ページの記録工程を示した図である。
【図２１】図２０の中で、ディファレンシャルのサイズが書き込みバッファーの余裕サイズよりは大きいが、物理的ページ一つのサイズよりは小さいか同じ場合の図１７で示された関数であるｗｒｉｔｉｎｇＤｉｆｆｅｒｅｎｔｉａｌＷｒｉｔｅＢｕｆｆｅｒ工程を示した図である。
【図２２】図２０の中でディファレンシャルのサイズが、物理的ページ一つのサイズよりは大きい場合の図１８の工程である該当のディファレンシャルを捨てた後に実行されるｗｒｉｔｉｎｇＮｅｗＢａｓｅＰａｇｅ工程を示した図である。
【図２３】フラッシュメモリーから論理的ページを再生成するアルゴリズムを示した図である。
【図２４】フラッシュメモリーから論理的ページを再生成するアルゴリズムである図２３を工程で示した図である。
【発明を実施するための形態】
【００４２】
以下、添付された図面を参照して本発明の実施例を詳しく説明する。
本発明は、フラッシュ式格納システムのためのページ−ディファレンシャルロギング（ｐａｇｅ−ｄｉｆｆｅｒｅｎｔｉａｌ  ｌｏｇｇｉｎｇ）方法を提案する。ページ−ディファレンシャル（簡単にディファレンシャルと呼ぶ）とは、フラッシュメモリー内のオリジナルページとメモリー内の最新ページとの間の差異である。この方法は、データをフラッシュメモリーに格納するための新しいアプローチであり、次のようないくつかの点でページ式方法またはログ式方法と非常に異なる。
【００４３】
（１）ページ−ディファレンシャルロギング方法は、更新されたページのディファレンシャルのみを記録する。このような特徴は、データの変更された部分及び変更されない部分を含むページ全体を記録する既存のページ式方法またはページ内の変更事項（すなわち、いくつかの更新ログ）の記録をすべて維持する既存のログ式方法と区別される。のみならず、ディファレンシャルは、ページがメモリー上で更新される度に計算され記録されるのではなく、更新されたページがフラッシュメモリーに反映される必要がある時にのみ計算され記録される。本方法は、フラッシュメモリーから論理的ページのオリジナルページを読んだ後、更新された論理的ページとの差異を計算することで更新されたページに対するディファレンシャルを生成する。フラッシュメモリーでは、読み取り演算の速度が書き込みまたは削除演算の速度と比較して非常に速いので、ディファレンシャルを生成するためのオーバーヘッドは、相対的に小さい。
【００４４】
（２）フラッシュメモリーからページを再生成する場合、ページ−ディファレンシャルロギング方法は、最大二つのページ（オリジナルページとディファレンシャルを含んでいる一つのページ）のみを読み取るので、ログ式方法と比較して読み取り演算の回数を少なくすることができる。
【００４５】
（３）更新されたページをフラッシュメモリーに反映しなければならない必要がある場合、ページ−ディファレンシャルロギング方法は、ディファレンシャルを記録するので、ログ式またはページ式方法と比較して書き込み演算の回数を少なくすることができる。
【００４６】
（４）ログ式方法は、格納システムに密結合になる（システム依存性が高い）一方、ページ−ディファレンシャルロギング方法は、システムに緩く結合される（システム依存性が低い）。ログ式方法では、ページが更新される度にページ内の変更事項を識別しなければならないので、ＤＢＭＳの格納装置管理モジュールを直さなければならず、また、変更事項は、システムによって内部的に管理されるので、格納装置モジュール内部でのみ識別され得る。一方、ページ−ディファレンシャルロギング方法は、格納装置管理モジュール外部でフラッシュメモリーに反映される必要があるページをフラッシュメモリー内のオリジナルページと比較することによってディファレンシャルを計算するので、ＤＢＭＳのモジュールを直す必要がない。
【００４７】
読み取り演算と書き込み演算すべてに対して良い性能を得るために、ページ−ディファレンシャルロギングのための三種類の原則を提示する。
一番目の原則は、ｗｒｉｔｉｎｇ  ｄｉｆｆｅｒｅｎｃｅ  ｏｎｌｙであり、論理的ページがフラッシュメモリーに反映される必要がある場合に差異点のみを記録する。
【００４８】
二番目の原則は、ａｔ−ｍｏｓｔ−ｏｎｅ−ｐａｇｅ  ｗｒｉｔｉｎｇであり、論理的ページがフラッシュメモリーに反映される必要がある場合、ページがメモリー上で何回更新されたとしても、最大一つの物理的ページのみを記録する。
【００４９】
三番目の原則は、ａｔ−ｍｏｓｔ−ｔｗｏ−ｐａｇｅ  ｒｅａｄｉｎｇであり、フラッシュメモリーから論理的ページを再生成する場合、最大二つの物理的ページのみを読む。
本発明は、上で言及した三種類の原則によるページ−ディファレンシャルロギング方法を提案する。
【００５０】
ページ−ディファレンシャルロギングでは、一つの論理的ページが、二つの物理的ページであるベースページとディファレンシャルページに格納される。ここで、ベースページは、論理的ページ全体を含み、ディファレンシャルページは、ベースページと最新の論理的ページ間の差異点であるディファレンシャルを含む。ディファレンシャルページは、空の空間が浪費されることを防ぐために、いくつかの論理的ページのディファレンシャルを含むことができる。
【００５１】
ディファレンシャルは、ログ式方法での更新ログの集合と比較して次の二つの長所を有する。（１）ディファレンシャルは、論理的ページの更新ログをすべて維持しなくても計算することができる。言い換えれば、ディファレンシャルは、更新された論理的ページがフラッシュメモリーに反映される必要がある場合に、更新された論理的ページとベースページを比較することで計算することができる。（２）ディファレンシャルは、論理的ページ内の何回も更新された部分に対してオリジナルページと最新論理的ページとの差異点のみを含む。論理的ページ内の特定部分がメモリー上で何回も更新される場合、更新ログの集合は、変更事項をすべて含むのと比較して、ディファレンシャルは、オリジナルデータと最新データとの差異点のみを含む。例えば、論理的ページが［．．ａａａａａａ．．−＞．．ｂｂｂｂｂａ．．−＞．．ｂｃｃｃｂａ．．］のように二度更新されたと仮定しよう。ここで、更新ログの集合は変更事項である「ｂｂｂｂｂ」と「ｃｃｃ」すべて含む一方、ディファレンシャルは差異点である「ｂｃｃｃｂ」だけを含む。
【００５２】
更新された論理的ページをフラッシュメモリーに反映する必要がある場合、ページディファレンシャルロギングは、論理的ページとフラッシュメモリー内のベースページを比較することでディファレンシャルを生成した後、このディファレンシャルを一つのページで構成された書き込みバッファーに記録する。そして、バッファーがすべていっぱいになると、これをフラッシュメモリーに記録する。よって、本方法は、ｗｒｉｔｉｎｇ  ｄｉｆｆｅｒｅｎｃｅ  ｏｎｌｙ原則を満足する。
【００５３】
本方法は、論理的ページが更新される場合、別途のログを記録しないまま、メモリー上の論理的ページのみを更新する。ディファレンシャルを生成して記録することは、更新された論理的ページがフラッシュメモリーに反映される必要があるまで延期される。よって、本方法は、ａｔ−ｍｏｓｔ−ｏｎｅ−ｐａｇｅ  ｗｒｉｔｉｎｇ原則を満足する。
【００５４】
理論的に、ディファレンシャルのサイズは、ページ一つのサイズより大きくなることができない。しかし、実際には、ディファレンシャルは、ページ内の変更されたデータだけではなく、オフセットと長さのようなメタデータを含むので、もしページの大きな部分が変更された場合には、ディファレンシャルのサイズがページ一つのサイズよりさらに大きくなることがある。この場合には、ａｔ−ｍｏｓｔ−ｏｎｅ−ｐａｇｅ  ｗｒｉｔｉｎｇ原則を満足するために生成されたディファレンシャルを捨てて、更新された論理的ページ自体を新しいベースページとしてフラッシュメモリーに記録する（この特別な場合には、ページ−ディファレンシャルロギングは、ページ式方法と同じになる）。
【００５５】
フラッシュメモリーから論理的ページを再生成する場合、ページ−ディファレンシャルロギングは、ベースページとそれのディファレンシャルページを読んだ後、ベースページとディファレンシャルページ内のディファレンシャルを併合することで論理的ページを生成する。ここで、もしベースページが更新されなかった場合（すなわち、ディファレンシャルページがない場合）には、一つの物理的ページのみを読む。よって、本方法は、最大二つの物理的ページのみを読み取るので、ａｔ−ｍｏｓｔ−ｔｗｏ−ｐａｇｅ  ｒｅａｄｉｎｇ原則を満足する。
【００５６】
図１０〜図１４は、ページ−ディファレンシャルロギング方法を示す。ここで、ｂａｓｅ＿ｐａｇｅ（ｐ）、ｄｉｆｆｅｒｅｎｔｉａｌ＿ｐａｇｅ（ｐ）、そしてｄｉｆｆｅｒｅｎｔｉａｌ（ｐ）は、それぞれ論理的ページｐに対するベースページ、ディファレンシャルページ、そしてディファレンシャルを示す。
【００５７】
図１０は、メモリー上の論理的ページ、ｍ１，ｍ２を示す。
図１１は、更新された論理的ページ、ｍ１，ｍ２とこれらをフラッシュメモリーに記録する過程を示す。
【００５８】
図１２は、更新された論理的ページ、ｍ１，ｍ２とこれらそれぞれのベースページとの比較によるディファレンシャルの生成を示す。
図１１で更新された論理的ページｍ１，ｍ２が、フラッシュメモリーに反映される必要がある場合、ページ−ディファレンシャルロギング方法は、次の三工程を遂行する。
【００５９】
（１）フラッシュメモリーからベースページｐ１、ｐ２を読む。
（２）更新された論理的ページｍ１，ｍ２とベースページｐ１、ｐ２をそれぞれ比較することで、ｄｉｆｆｅｒｅｎｔｉａｌ（ｍ１）、ｄｉｆｆｅｒｅｎｔｉａｌ（ｍ２）を生成する。
【００６０】
（３）ｄｉｆｆｅｒｅｎｔｉａｌ（ｍ１）、ｄｉｆｆｅｒｅｎｔｉａｌ（ｍ２）を使用するバッファーに記録する。もしバッファーがすべていっぱいになると、これを物理的ページｐ３に記録する。
【００６１】
したがって、更新された論理的ページｍ１，ｍ２のディファレンシャルは、同一なディファレンシャルページｐ３に記録される。
図１３は、フラッシュメモリーから再生成された論理的ページｍ１を示す。
【００６２】
図１４は、図１３でフラッシュメモリーから再生成された論理的ページｍ１の生成方法を示す。ここで、論理的ページｍ１は、ベースページｐ１とディファレンシャルページｐ３内のｄｉｆｆｅｒｅｎｔｉａｌ（ｍ１）を併合することで生成される。
【００６３】
フラッシュメモリー内で使用される資料構造には、ベースページ、ディファレンシャルページ、そしてディファレンシャルがある。ベースページは、データ領域内に論理的ページを格納して、スペア領域内に物理的ページ識別子を格納する。物理的ページ識別子はデータベース内のページの唯一の識別子を示す。ディファレンシャルページは、論理的ページのディファレンシャルを格納する。ディファレンシャルが属するベースページを識別するために物理的ページ識別子がディファレンシャル内に格納される。よって、ディファレンシャルの構造は＜物理的ページ識別子、［オフセット、長さ、変更されたデータ］＋＞のような形態を有する。
【００６４】
メモリー内で使用される資料構造には、物理的ページマッピングテーブル、有効なディファレンシャルカウントテーブル、そしてディファレンシャル書き込みバッファーがある。物理的ページマッピングテーブルは、物理的ページ識別子を＜ベースページ住所、ディファレンシャルページ住所＞にマッピングする。フラッシュメモリーでは、アウトプレース方式によってページ内の位置が変わり得るので、このテーブルは、フラッシュメモリー内のベースページとディファレンシャルページの対を間接的に参照するのに使用される。
【００６５】
有効なディファレンシャルカウントテーブルは、有効なディファレンシャル（すなわち、廃止（ｏｂｓｏｌｅｔｅ）にしないディファレンシャル）の個数をカウントする。ここで、カウントの値が０になれば、そのディファレンシャルページは、廃止状態（ｏｂｓｏｌｅｔｅ状態）に設定されて、ガベージコレクションによって再使用される。
【００６６】
ディファレンシャル書き込みバッファーは、論理的ページのディファレンシャルをメモリー上で集めた後、バッファーがすべていっぱいになると、これらをフラッシュメモリー内のディファレンシャルページに記録するために使用される。ディファレンシャル書き込みバッファーは、一つのページで成り立つのでメモリー使用量が非常に少ない。図１５は、前記で説明されたページディファレンシャルロギング方法の資料構造を示す。
【００６７】
論理的ページをフラッシュメモリーに記録するためのアルゴリズムとフラッシュメモリーから論理的ページを再生成するためのアルゴリズムを紹介する。
これらアルゴリズムをそれぞれＰａｇｅＤｉｆｆｅｒｅｎｔｉａｌＬｏｇｇｉｎｇ＿ＷｒｉｔｉｎｇとＰａｇｅＤｉｆｆｅｒｅｎｔｉａｌＬｏｇｇｉｎｇ＿Ｒｅａｄｉｎｇと呼ぶ。
【００６８】
図１６と図１９は、論理的ページをフラッシュメモリーに記録するのに使用されるＰａｇｅＤｉｆｆｅｒｅｎｔｉａｌＬｏｇｇｉｎｇ＿Ｗｒｉｔｉｎｇアルゴリズムを示す。
ＰａｇｅＤｉｆｆｅｒｅｎｔｉａｌＬｏｇｇｉｎｇ＿Ｗｒｉｔｉｎｇの入力は、論理的ページｐとヘッダー領域に格納された物理的ページ識別子ｐｉｄである。このアルゴリズムは、次の三工程で成り立つ。
【００６９】
工程１では、フラッシュメモリーからｂａｓｅ＿ｐａｇｅ（ｐｉｄ）を読む。
工程２では、工程１で読んだｂａｓｅ＿ｐａｇｅ（ｐｉｄ）と入力として与えられた論理的ページｐと比較することで、ｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）を生成する。
【００７０】
工程３では、工程２で生成したｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）をディファレンシャル書き込みバッファーに記録する。ここで、ｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）のサイズにしたがって三種類の場合が存在する。ここで、論理的ページｐの以前のディファレンシャルがバッファーに存在する場合には、以前のディファレンシャルをバッファーで先に削除した後、下の過程を遂行する。
【００７１】
第一の場合：ｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）のサイズが、ディファレンシャル書き込みバッファーの余裕空間と同じか小さな場合（場合１）には、単純にｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）をディファレンシャル書き込みバッファーに記録する。
【００７２】
第二の場合：ｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）のサイズが、ディファレンシャル書き込みバッファーの余裕空間よりは大きいが、物理的ページ一つのサイズと同じかそれよりは小さい場合（場合２）には、ｗｒｉｔｉｎｇＤｉｆｆｅｒｅｎｔｉａｌＷｒｉｔｅＢｕｆｆｅｒ（）関数を呼び出した後、バッファーを空にして、ｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）をバッファーに記録する。図１７と図２１は、ｗｒｉｔｉｎｇＤｉｆｆｅｒｅｎｔｉａｌＷｒｉｔｅＢｕｆｆｅｒ関数の内容を示す。この関数は、バッファーの内容をディファレンシャルページとしてフラッシュメモリーに記録した後、バッファー内のそれぞれのディファレンシャルに対して物理的ページマッピングテーブルと有効なディファレンシャルカウントテーブルを更新する。ここで、カウントの値が０になれば、そのディファレンシャルページは、廃止（ｏｂｓｏｌｅｔｅ）に設定されて、ガベージコレクションのために再使用される。
【００７３】
第三の場合：ｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）のサイズが、物理的ページ一つのサイズよりもっと大きい場合（場合３）には、生成したｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）を捨てて、ｗｒｉｔｉｎｇＮｅｗＢａｓｅＰａｇｅ（）関数を呼び出す。図１８と図２２は、ｗｒｉｔｉｎｇＮｅｗＢａｓｅＰａｇｅ関数の内容を示す。この関数は、論理的ページｐ自体を新しいベースページとしてフラッシュメモリーに記録した後、物理的ページマッピングテーブルと有効なディファレンシャルカウントテーブルを更新して、以前のベースページを廃止状態に設定する。
【００７４】
図２３〜図２４は、フラッシュメモリーから論理的ページを再生成するために使用されるＰａｇｅＤｉｆｆｅｒｅｎｔｉａｌＬｏｇｇｉｎｇ＿Ｒｅａｄｉｎｇアルゴリズムを示す。
【００７５】
ＰａｇｅＤｉｆｆｅｒｅｎｔｉａｌＬｏｇｇｉｎｇ＿Ｒｅａｄｉｎｇの入力は、読もうとする論理的ページの物理的ページ識別子ｐｉｄである。このアルゴリズムは、次の三工程で成り立つ。
【００７６】
工程１では、フラッシュメモリーからｂａｓｅ＿ｐａｇｅ（ｐｉｄ）を読む。
工程２では、ｂａｓｅ＿ｐａｇｅ（ｐｉｄ）のｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）を捜す。ここで、ｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）がどこに存在するかによって二つの場合が存在する。
【００７７】
第一の場合：ｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）が、ディファレンシャル書き込みバッファー内に存在する場合、すなわち、バッファーがいまだにフラッシュメモリーに記録されていない場合には、ディファレンシャル書き込みバッファーでｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）を捜す。
【００７８】
第二の場合：ｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）が、ディファレンシャル書き込みバッファー内に存在しない場合、フラッシュメモリーからｄｉｆｆｅｒｅｎｔｉａｌ＿ｐａｇｅ（ｐｉｄ）を読んで、ｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）を捜す。ここで、もしｄｉｆｆｅｒｅｎｔｉａｌ＿ｐａｇｅ（ｐｉｄ）がフラッシュメモリーに存在しない場合には（物理的ページマッピングテーブルから分かる）、工程１で読んだｂａｓｅ＿ｐａｇｅ（ｐｉｄ）を結果として返還する。
【００７９】
工程３では、工程１で読んだｂａｓｅ＿ｐａｇｅ（ｐｉｄ）と工程２で捜したｄｉｆｆｅｒｅｎｔｉａｌ（ｐｉｄ）を併合することで論理的ページｐを再生成した後、これを結果として返還する。
【００８０】
以上のように本発明によるＤＢＭＳに独立的な方法でフラッシュメモリーにデータを格納する新しいアプローチであるページディファレンシャルロギングを例示した図面を参考にして説明したが、本明細書に開示された実施例と図面によって本発明が限定されるのではなく、本発明の技術思想の範囲内で当業者によって多様な変形がなされ得ることは、もちろんである。
【図１】
2010218529.tif 000005
【図２】
2010218529.tif 000006
【図３】
2010218529.tif 000007
【図４】
2010218529.tif 000008
【図５】
2010218529.tif 000009
【図６】
2010218529.tif 000010
【図７】
2010218529.tif 000011
【図８】
2010218529.tif 000012
【図９】
2010218529.tif 000013
【図１０】
2010218529.tif 000014
【図１１】
2010218529.tif 000015
【図１２】
2010218529.tif 000016
【図１３】
2010218529.tif 000017
【図１４】
2010218529.tif 000018
【図１６】
2010218529.tif 000019
【図１７】
2010218529.tif 000020
【図１８】
2010218529.tif 000021
【図１９】
2010218529.tif 000022
【図２０】
2010218529.tif 000023
【図２１】
2010218529.tif 000024
【図２２】
2010218529.tif 000025
【図２３】
2010218529.tif 000026
【図２４】
2010218529.tif 000027
【図１５】
2010218529.tif 000028