説明

ページ−ディファレンシャルを使用して、DBMSに独立的な方法でフラッシュメモリーにデータを格納する方法

【課題】フラッシュ式格納システムにてページディファレンシャルロギングと呼ばれる効率的なデータ格納方法を提案する。
【解決手段】ページディファレンシャルロギングでは、フラッシュメモリー内のオリジナルページとメモリー内の最新ページとの差異であるディファレンシャルのみが記録される。ディファレンシャルは、ページがメモリー上で更新される度に計算されて記録されるのではなく、更新ページをフラッシュメモリーに反映する必要がある時にのみ計算されて記録される。このため、データの変更部分と非変更部分を含むページ全体を記録する既存のページ方式や、ページ内の変更事項の記録をすべて維持する既存のログ方式と異なる。フラッシュメモリードライバーを変更して既存のディスク式DBMSをフラッシュ式DBMSとして再使用できるのでDBMSに独立的な方法であり、書き込み演算の回数を減らしてフラッシュメモリーの寿命を伸ばす。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ページ−ディファレンシャルを使用して、DBMSに独立的な方法でフラッシュメモリーにデータを格納する方法に関するものである。
【背景技術】
【0002】
フラッシュメモリーは、メモリーセルの構造によって、NANDとNORの二つのタイプがある。NANDタイプは、データを格納するのに相応しく、NORタイプは、コードを格納するのに相応しい。本発明で「フラッシュメモリー」という用語は、フラッシュ式格納システムで広く使用されるNANDタイプのフラッシュメモリーを示す。
【0003】
図1は、フラッシュメモリーの構造を示す。フラッシュメモリーは、Nblock個のブロックで構成されて、各ブロックは、Npage個のページで構成される。ページは、データの読み書きの演算が遂行される最小単位であり、ブロックは、データを削除する演算が遂行される最小単位である。各ページは、データを格納するためのデータ領域と有効(valid)及び廃止(obsolete)状態ビット、バッドブロック識別、エラーチェックのような補助情報を格納するためのスペア領域で構成される。
【0004】
フラッシュメモリー内のデータを読み書きするために、読み取り、書き込み、削除の三種類の演算が存在する。
−読み取り演算:特定ページ内のすべてのビット値を返還する
−書き込み演算:特定ページ内の選択されたビットの値を1から0に変える
−削除演算:特定ブロック内のすべてのビット値を1に設定する
フラッシュメモリーに対する演算は、磁気ディスクに対する演算と異なる。まず、フラッシュメモリー内のすべてのビットは、初期に1に設定される。よって、フラッシュメモリーに対する書き込み演算は、特定ページ内の一部ビット値を1から0に変えることを意味する。次に、フラッシュメモリーに対する削除演算は、特定ブロック内のすべてのビット値を1に戻すことができる。各ブロックに対して、おおよそ100,000回程度に制限された回数のみ削除演算の遂行が可能で、それ以上、遂行される場合、データを信頼することができなくなる。
【0005】
書き込みと削除演算の制約によってページを上書きするためには、一般的に削除演算が書き込み演算に先行して遂行される。削除演算を遂行してブロック内のすべてのビット値を1に変化させた後、書き込み演算を遂行してページ内の一部ビット値を0に変化させる。また、削除演算は、書き込み演算よりずっと大きい単位に対して遂行される。すなわち、書き込み演算は、ページに対して遂行される一方、削除演算はブロックに対して遂行される。ページを上書きするための具体的な方法は、使用しているページ更新方法によって決定される。
【0006】
フラッシュメモリーは、メモリーセルの容量によって単一レベルセル(SLC)と多重レベルセル(MLC)の二つのタイプがある。前者は、セルごとに一つのデータビット値のみを格納することができるのと比較して、後者は、セルごとに二つの(またはそれ以上の)データビット値を格納することができる。よって、MLCタイプのフラッシュメモリーは、SLCタイプと比較して容量がさらに大きくて、大容量のフラッシュ格納装置に広く使用されることが予想される。表1は、MLCタイプのフラッシュメモリーのパラメーターとその値を要約したものである。ページサイズは、2,048バイトであり、ブロックは、64個のページで構成される。また、演算のアクセス時間は、読み取り、書き込み、削除の順序で増加する。読み取り演算は、書き込み演算と比較して7.9倍速く、書き込み演算は、削除演算と比較して1.6倍速い。
【0007】
【表1】

以後、本発明での不明確さを減らすために、物理的ページと論理的ページを区別する。メモリー内のページを論理的ページと呼び、フラッシュメモリー内のページを物理的ページと呼ぶ。また、説明の便宜上、論理的ページのサイズが物理的ページのサイズと同一であると仮定する。
【0008】
今までフラッシュ式格納システムのために更新されたページをフラッシュメモリーに格納する方法に対する多くの研究が行なわれた。本発明では、このような方法をページ更新方法と呼ぶことにする。ページ更新方法は、ページ式とログ式の二つのカテゴリーに分けられる。
【0009】
ページ式方法では、一つの論理的ページが一つの物理的ページに格納される。更新されたページがフラッシュメモリーに反映される必要がある場合(例えば、更新されたページが、DBMSバッファーでデータベースにスワップアウトされる場合)、一つの論理的ページ全体が一つの物理的ページに記録される。論理的ページがフラッシュメモリーから再生成される場合(例えば、ページをDBMSバッファーで読み込む場合)、論理的ページは一つの物理的ページから読まれる。この方法は、フラッシュ変換階層(Flash Translation Layer、FTL)と呼ばれる中間階層に具現されるので、格納システムと緩く結合される。ここで、FTLは、図2のように論理的ページと物理的ページ間の論理的住所と物理的住所のマッピングを管理する。FTLは、SSD’s(solid state disks)内に存在するコントローラーにファームウエア形態で具現することもでき、組込みボードのための運営体制内にソフトウェア形態で具現することもできる。
【0010】
ページ式方法は、論理的ページがいつも同一物理的ページに記録されるのかいなかによって、インプレースアップデート(in−place update)とアウトプレースアップデート(out−place update)の二つの方法に分けられる。論理的ページが、フラッシュメモリーに反映される必要がある場合、インプレースアップデートは、論理的ページを以前に読んだ特定物理的ページに上書きして、アウトプレースアップデートは、論理的ページを新しい物理的ページに記録する。
【0011】
フラッシュメモリーでの書き込み演算は、ページ内のビット値を1に変えることができないので、ブロックb内の物理的ページpから読み込んだ論理的ページmを同一な物理的ページpに上書きする場合、インプレースアップデートは、次の四種類の工程を遂行する。
【0012】
第一工程:pを除いたブロックb内のすべてのページを読む。
第二工程:ブロックbに対して削除演算を遂行する。
第三工程:論理的ページmを物理的ページpに記録する。
【0013】
第四工程:mを除く工程1で読んだすべてのページをブロックb内の該当のページに記録する。
したがって、インプレースアップデートは、論理的ページをフラッシュメモリーに反映しなければならない度に一回の削除演算と数回の読み取り及び書き込み演算を発生させるので深刻な性能低下問題を有し、フラッシュ式格納システムでは、ほとんど使用されない。
【0014】
インプレースアップデートの短所を克復するために、アウトプレースアップデートは、論理的ページmをフラッシュメモリーに反映しなければならない場合、論理的ページ mを新しい物理的ページpに記録した後、物理的ページpを廃止(obsolete)状態に設定する。フラッシュメモリー内のフリー状態のページが不足な場合、廃止状態のページは、ガベージコレクションによってフリー状態のページに変換されて再使用される。
【0015】
アウトプレースアップデートは、論理的ページをフラッシュメモリーに反映しなければならない度に、削除演算を発生させないのでフラッシュ式格納システムで、広く使用される。これに対して、図3と図4は、アウトプレースアップデートを示す。図3は、ブロックb内の物理的ページpから読んだ論理的ページmを示し、図4は、更新された論理的ページmとこれを物理的ページpに記録する過程を示す。ここで、pは、以前に読んだオリジナルページで、pは新たに記録されたページである。
【0016】
ログ式方法では、一つの論理的ページが一般的にいくつかの物理的ページに格納される。論理的ページが更新される度に、多くの論理的ページの更新ログが先にメモリー上の書き込みバッファーに集められる。ここで、更新ログは、一つの更新命令によって発生するページ内の変更事項である。そして、もしバッファーがすべていっぱいになるとそれを一つの物理的ページに記録する。よって、論理的ページが頻繁に更新される場合、それに対する更新ログがいくつかの物理的ページに格納されるので、一つの論理的ページを再生成する場合、いくつかの物理的ページが読まれなければならないし、併合されなければならない。のみならず、ログ式方法は格納システムが論理的ページの更新ログを識別することができるように直されなければならないので、システムに密結合になる(システム依存性が高い)。
【0017】
ログ式方法には、LFS(Log−structured File system)、JFFS(Journaling Flash File System)、YAFFS(Yet Another Flash File System)、そしてIPL(In−Page Logging)がある。LFS、JFFS、そしてYAFFSでは、論理的ページの更新ログがフラッシュメモリー内の任意のログページに記録され得る一方、IPLでは更新ログが特定ログページに記録される。IPLは、各ブロック内のページを固定された個数のオリジナルページとログページに分ける。この方法は、論理的ページの更新ログをその論理的ページのオリジナルページを含んだブロック内のログページにのみ記録する。よって、IPLは論理的ページを再生成する場合、ブロック内のオリジナルページとログページのみを読む。IPLは、ブロック内にフリー状態のログページがない場合、ブロック内のオリジナルページとログページを併合した後、併合されたページを新しいブロック内のページに記録する(この過程は、合併(merging)と呼ばれる)。
【0018】
結果的に、他のログ式方法と比較した時、IPLは合併によってログページが無限に増加しないので、論理的ページを再生成する場合にフラッシュメモリーから読まなければならないログページの個数を減らすことにより、読み取り性能を向上させる。IPLは、合併の効果を除き、ログ式方法の長短所を受け継ぐため、他のログ式方法と性能が類似している。
【0019】
図5から図9までは、ログ式方法の典型的な例を示す。
図5は、メモリー上の論理的ページm,mを示す。
図6は、論理的ページm,mの更新ログq、qとこれらをフラッシュメモリーに記録する過程を示す。ここで、更新ログq、qは、先に書き込みバッファーに記録された後、バッファーの内容がログページpに記録される。よって、更新ログq、qは、同一ログページpに集められる。
【0020】
図7は、論理的ページm,mの更新ログq、qとこれらをフラッシュメモリーに記録する過程を示す。ここで、更新ログq、qは、先に書き込みバッファーに記録された後、バッファーの内容がログページpに記録される。よって、更新ログq、qは、同一ログページpに集められる。
【0021】
図8は、フラッシュメモリーから再生成された論理的ページmを示す。
図9は、図8で再生成された論理的ページmの生成過程を示す。ここで、論理的ページmは、オリジナルページpとログページp、pそれぞれから読んだ更新ログq、qを併合することで再生成される。
【0022】
ページ式方法とログ式方法を比較すると、論理的ページを更新するためにページ式方法は、ページ内の変更された部分だけではなく変更されない部分までも記録するのと比較して、ログ式方法は、ただ更新ログのみを記録する。よって、更新が頻繁に発生しない場合、ページ式方法がログ式方法と比較してさらに悪い書き込み性能を有する。ページ式方法は、更新されたページがフラッシュメモリーに反映される必要がある場合にのみ、更新されたページをフラッシュメモリーに記録する。しかし、ログ式方法は、論理的ページを更新する度に更新ログを使用するバッファーに記録する。ここで、書き込みバッファーがすべていっぱいになるとこれをフラッシュメモリーに記録する。よって、更新が頻繁に発生する場合、論理的ページが何回も更新されてページ一つの更新ログの総量が、ページ一つのサイズよりもっと大きくなることがある。この場合には、ページ式方法がログ式方法と比較してより良い書き込み性能を有する。
【0023】
次に、フラッシュメモリーから論理的ページを再生成する場合、ページ式方法は、論理的ページが一つの物理的ページに格納されているので、一回の読み取り演算のみを必要とする。一方、ログ式方法は、論理的ページがいくつかの物理的ページに格納されているので、何回かの読み取り演算を必要とする。結果的に、ページ式方法は、ログ式方法と比較してより良い読み取り性能を有する。
【0024】
最後に、ページ式方法は、DBMS依存性がないのに対して、ログ式方法は、DBMS依存性がある。
【0025】
【表2】

【先行技術文献】
【非特許文献】
【0026】
【非特許文献1】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.
【非特許文献2】Gal, E. and Toledo, S., “Algorithms and Data Structures for Flash Memories”, In ACM Computing Surveys, Vol.37, No.2, 2005.
【非特許文献3】Kawaguchi, A., Nishioka, S., and Motoda, H., “A Flash-Memory Based File System”, In Proc. USENIX Annual Technical Conference, New Orleans, Louisiana, Jan. 1995.
【非特許文献4】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.
【非特許文献5】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.
【非特許文献6】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.
【非特許文献7】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.
【非特許文献8】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.
【非特許文献9】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.
【非特許文献10】Samsung Electronics, Datasheet: 1G×8bit/2G×8bit/4G×8bit NAND Flash Memory, 2005 (http://www.DataSheet4U.com).
【非特許文献11】Woodhouse, D., “JFFS: The Journaling Flash File System”, In Proc. OttawaLinux Symposium, Ottawa, Canada, July 2001.
【非特許文献12】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.
【特許文献】
【0027】
【特許文献1】米国特許出願公開2008/0068894A1明細書
【発明の概要】
【発明が解決しようとする課題】
【0028】
本発明では、読み取り及び書き込み演算すべてに対して良い性能を有することで、フラッシュメモリー式格納システムの性能を顕著に向上させるページ−ディファレンシャルロギング(page−differential logging)と呼ばれるページ更新方法を提案する。
【課題を解決するための手段】
【0029】
上述した課題を解決するために、本発明によるDBMSに独立的な方法でフラッシュメモリーにデータを格納する方法は、論理的ページをフラッシュメモリーのベースページとディファレンシャルページに分けて記録する記録工程と、ベースページとディファレンシャルページを読んだ後、ベースページとディファレンシャルページ内のディファレンシャルを併合して論理的ページを生成する再生成工程とを含むことを特徴とする。
【0030】
また、前記記録工程は、論理的ページとベースページを比較してディファレンシャルを生成するディファレンシャル生成工程と、前記ディファレンシャル生成工程後、生成されたディファレンシャルを書き込みバッファーに記録するディファレンシャル記録工程と、前記書き込みバッファーがすべていっぱいになると、これをフラッシュメモリーに記録するバッファー記録工程とを含むことを特徴とする。
【0031】
また、前記ベースページは、論理的ページ全体を含むことを特徴とする。
また、前記ディファレンシャルページは、一つ以上の論理的ページのディファレンシャルを含むことができることを特徴とする。
【0032】
また、前記ディファレンシャルは、前記ベースページと前記論理的ページ間の差異点であることを特徴とする。
また、前記記録工程は、論理的ページがメモリー上で更新される度に遂行されるのではなく、更新された論理的ページがフラッシュメモリーに反映される必要がある場合にのみ遂行されることを特徴とする。
【0033】
また、前記記録工程は、フラッシュメモリーから論理的ページに対するベースページを読む第1工程と、前記第1工程で読んだベースページと論理的ページを比較することによって、論理的ページに対するディファレンシャルを生成する第2工程と、前記第2工程後、ディファレンシャルを書き込みバッファーに記録する第3工程とを含むことを特徴とする。
【0034】
また、前記第3工程は、前記ディファレンシャルのサイズが前記書き込みバッファーの余裕空間と同じか小さな場合に、前記ディファレンシャルを書き込むバッファーに記録する工程であることを特徴とする。
【0035】
また、前記第3工程は、前記ディファレンシャルのサイズが前記書き込みバッファーの余裕空間よりは大きいが、物理的ページ一つのサイズと同じか小さな場合、前記書き込みバッファーの内容をフラッシュメモリーに記録した後、前記書き込みバッファーを空にして、前記ディファレンシャルを前記書き込みバッファーに記録する工程であることを特徴とする。
【0036】
また、前記第3工程は、前記ディファレンシャルのサイズが物理的ページ一つのサイズよりもさらに大きい場合、前記ディファレンシャルを捨てて論理的ページ自体をフラッシュメモリーに新しいベースページとして記録する工程であることを特徴とする。
【0037】
また、前記再生成工程は、前記フラッシュメモリーから前記論理的ページに対する前記ベースページを読む第1過程と、前記論理的ページに対するディファレンシャルを捜す第2過程と、前記第1過程で読んだベースページと前記第2過程で捜したディファレンシャルを併合して論理的ページを生成する第3過程とを含むことを特徴とする。
【0038】
また、前記第2過程は、前記ディファレンシャルが前記書き込みバッファーに存在する場合には、前記書き込みバッファーから論理的ページに対するディファレンシャルを捜す工程であることを特徴とする。
【0039】
また、前記第2過程は、前記ディファレンシャルが前記書き込みバッファーに存在しない場合には、論理的ページに対するディファレンシャルページをフラッシュメモリーから読み出した後、読んだディファレンシャルページからディファレンシャルを捜す工程であることを特徴とする。
【発明の効果】
【0040】
上述したように、本発明によるページ−ディファレンシャルロギング方法は、フラッシュ式格納システムの性能を顕著に向上させる効果的で効率的なページ更新方法であり、この方法によれば、更新されたページのディファレンシャルのみが記録され、ディファレンシャルは、ページがメモリー上で更新される度に計算され記録されるのではなく、更新されたページがフラッシュメモリーに反映される必要がある場合にのみ計算され記録される。フラッシュメモリーからページを再生成する場合、ログ式方法と比較して読み取り演算の回数を少なくすることができ、更新されたページをフラッシュメモリーに反映しなければならない場合、ログ式及びページ式方法と比較して書き込み演算の回数を少なくすることができる。また、この方法は、フラッシュメモリードライバーのみを直すことで、既存ディスク式DBMSをフラッシュ式DBMSに再使用可能となるので、経済的で速度が速く、かつ性能がさらに向上する。
【図面の簡単な説明】
【0041】
【図1】フラッシュメモリーの構造を示した図である。
【図2】ページ式アプローチのアーキテクチャーを示した図である。
【図3】アウトプレースアップデート過程の中でブロックb内の物理的ページpから読んだ論理的ページmを示した図である。
【図4】アウトプレースアップデート過程の中で更新された論理的ページmと、それを物理的ページpに記録する過程を示した図である。
【図5】ログ式アプローチを説明するために過程開始前のメモリー状態を示した図である。
【図6】ログ式アプローチ過程の中で、論理的ページm,mとそれぞれの更新ログq、qがフラッシュメモリーに記録される過程を示した図である。
【図7】ログ式アプローチ過程の中で、論理的ページm,mとそれぞれの更新ログq、qがフラッシュメモリーに記録される過程を示した図である。
【図8】ログ式アプローチ過程の中で、フラッシュメモリーから再生成された論理的ページmを示した図である。
【図9】ログ式アプローチ過程の中で、図8で再生成された論理的ページmの生成方法を示した図である。
【図10】ディファレンシャル式アプローチを説明するために過程開始前のメモリー状態を示した図である。
【図11】ディファレンシャル式アプローチ過程の中で、更新された論理的ページm,mと、これらがフラッシュメモリーに記録される過程を示した図である。
【図12】ディファレンシャル式アプローチ過程の中で、更新された論理的ページm,mと、これら各々のベースページとの比較によるディファレンシャルの生成を示す。
【図13】ディファレンシャル式アプローチ過程の中で、フラッシュメモリーから再生成された論理的ページmを示す図である。
【図14】ディファレンシャル式アプローチ過程の中で、フラッシュメモリーから再生成された論理的ページmの生成方法を示した図である。
【図15】ページ−ディファレンシャルロギング方法の資料構造を示した図である。
【図16】論理的ページをフラッシュメモリーに記録するアルゴリズムを示した図である。
【図17】図16に記載したアルゴリズムで使用されるwritingDifferentialWriteBuffer関数を示した図である。
【図18】図16に記載したアルゴリズムで使用されるwritingNewBasePage関数を示した図である。
【図19】論理的ページをフラッシュメモリーに記録するアルゴリズムである図16〜図18を工程として示した図である。
【図20】図16と図19の中でディファレンシャルのサイズによる論理的ページの記録工程を示した図である。
【図21】図20の中で、ディファレンシャルのサイズが書き込みバッファーの余裕サイズよりは大きいが、物理的ページ一つのサイズよりは小さいか同じ場合の図17で示された関数であるwritingDifferentialWriteBuffer工程を示した図である。
【図22】図20の中でディファレンシャルのサイズが、物理的ページ一つのサイズよりは大きい場合の図18の工程である該当のディファレンシャルを捨てた後に実行されるwritingNewBasePage工程を示した図である。
【図23】フラッシュメモリーから論理的ページを再生成するアルゴリズムを示した図である。
【図24】フラッシュメモリーから論理的ページを再生成するアルゴリズムである図23を工程で示した図である。
【発明を実施するための形態】
【0042】
以下、添付された図面を参照して本発明の実施例を詳しく説明する。
本発明は、フラッシュ式格納システムのためのページ−ディファレンシャルロギング(page−differential logging)方法を提案する。ページ−ディファレンシャル(簡単にディファレンシャルと呼ぶ)とは、フラッシュメモリー内のオリジナルページとメモリー内の最新ページとの間の差異である。この方法は、データをフラッシュメモリーに格納するための新しいアプローチであり、次のようないくつかの点でページ式方法またはログ式方法と非常に異なる。
【0043】
(1)ページ−ディファレンシャルロギング方法は、更新されたページのディファレンシャルのみを記録する。このような特徴は、データの変更された部分及び変更されない部分を含むページ全体を記録する既存のページ式方法またはページ内の変更事項(すなわち、いくつかの更新ログ)の記録をすべて維持する既存のログ式方法と区別される。のみならず、ディファレンシャルは、ページがメモリー上で更新される度に計算され記録されるのではなく、更新されたページがフラッシュメモリーに反映される必要がある時にのみ計算され記録される。本方法は、フラッシュメモリーから論理的ページのオリジナルページを読んだ後、更新された論理的ページとの差異を計算することで更新されたページに対するディファレンシャルを生成する。フラッシュメモリーでは、読み取り演算の速度が書き込みまたは削除演算の速度と比較して非常に速いので、ディファレンシャルを生成するためのオーバーヘッドは、相対的に小さい。
【0044】
(2)フラッシュメモリーからページを再生成する場合、ページ−ディファレンシャルロギング方法は、最大二つのページ(オリジナルページとディファレンシャルを含んでいる一つのページ)のみを読み取るので、ログ式方法と比較して読み取り演算の回数を少なくすることができる。
【0045】
(3)更新されたページをフラッシュメモリーに反映しなければならない必要がある場合、ページ−ディファレンシャルロギング方法は、ディファレンシャルを記録するので、ログ式またはページ式方法と比較して書き込み演算の回数を少なくすることができる。
【0046】
(4)ログ式方法は、格納システムに密結合になる(システム依存性が高い)一方、ページ−ディファレンシャルロギング方法は、システムに緩く結合される(システム依存性が低い)。ログ式方法では、ページが更新される度にページ内の変更事項を識別しなければならないので、DBMSの格納装置管理モジュールを直さなければならず、また、変更事項は、システムによって内部的に管理されるので、格納装置モジュール内部でのみ識別され得る。一方、ページ−ディファレンシャルロギング方法は、格納装置管理モジュール外部でフラッシュメモリーに反映される必要があるページをフラッシュメモリー内のオリジナルページと比較することによってディファレンシャルを計算するので、DBMSのモジュールを直す必要がない。
【0047】
読み取り演算と書き込み演算すべてに対して良い性能を得るために、ページ−ディファレンシャルロギングのための三種類の原則を提示する。
一番目の原則は、writing difference onlyであり、論理的ページがフラッシュメモリーに反映される必要がある場合に差異点のみを記録する。
【0048】
二番目の原則は、at−most−one−page writingであり、論理的ページがフラッシュメモリーに反映される必要がある場合、ページがメモリー上で何回更新されたとしても、最大一つの物理的ページのみを記録する。
【0049】
三番目の原則は、at−most−two−page readingであり、フラッシュメモリーから論理的ページを再生成する場合、最大二つの物理的ページのみを読む。
本発明は、上で言及した三種類の原則によるページ−ディファレンシャルロギング方法を提案する。
【0050】
ページ−ディファレンシャルロギングでは、一つの論理的ページが、二つの物理的ページであるベースページとディファレンシャルページに格納される。ここで、ベースページは、論理的ページ全体を含み、ディファレンシャルページは、ベースページと最新の論理的ページ間の差異点であるディファレンシャルを含む。ディファレンシャルページは、空の空間が浪費されることを防ぐために、いくつかの論理的ページのディファレンシャルを含むことができる。
【0051】
ディファレンシャルは、ログ式方法での更新ログの集合と比較して次の二つの長所を有する。(1)ディファレンシャルは、論理的ページの更新ログをすべて維持しなくても計算することができる。言い換えれば、ディファレンシャルは、更新された論理的ページがフラッシュメモリーに反映される必要がある場合に、更新された論理的ページとベースページを比較することで計算することができる。(2)ディファレンシャルは、論理的ページ内の何回も更新された部分に対してオリジナルページと最新論理的ページとの差異点のみを含む。論理的ページ内の特定部分がメモリー上で何回も更新される場合、更新ログの集合は、変更事項をすべて含むのと比較して、ディファレンシャルは、オリジナルデータと最新データとの差異点のみを含む。例えば、論理的ページが[..aaaaaa..−>..bbbbba..−>..bcccba..]のように二度更新されたと仮定しよう。ここで、更新ログの集合は変更事項である「bbbbb」と「ccc」すべて含む一方、ディファレンシャルは差異点である「bcccb」だけを含む。
【0052】
更新された論理的ページをフラッシュメモリーに反映する必要がある場合、ページディファレンシャルロギングは、論理的ページとフラッシュメモリー内のベースページを比較することでディファレンシャルを生成した後、このディファレンシャルを一つのページで構成された書き込みバッファーに記録する。そして、バッファーがすべていっぱいになると、これをフラッシュメモリーに記録する。よって、本方法は、writing difference only原則を満足する。
【0053】
本方法は、論理的ページが更新される場合、別途のログを記録しないまま、メモリー上の論理的ページのみを更新する。ディファレンシャルを生成して記録することは、更新された論理的ページがフラッシュメモリーに反映される必要があるまで延期される。よって、本方法は、at−most−one−page writing原則を満足する。
【0054】
理論的に、ディファレンシャルのサイズは、ページ一つのサイズより大きくなることができない。しかし、実際には、ディファレンシャルは、ページ内の変更されたデータだけではなく、オフセットと長さのようなメタデータを含むので、もしページの大きな部分が変更された場合には、ディファレンシャルのサイズがページ一つのサイズよりさらに大きくなることがある。この場合には、at−most−one−page writing原則を満足するために生成されたディファレンシャルを捨てて、更新された論理的ページ自体を新しいベースページとしてフラッシュメモリーに記録する(この特別な場合には、ページ−ディファレンシャルロギングは、ページ式方法と同じになる)。
【0055】
フラッシュメモリーから論理的ページを再生成する場合、ページ−ディファレンシャルロギングは、ベースページとそれのディファレンシャルページを読んだ後、ベースページとディファレンシャルページ内のディファレンシャルを併合することで論理的ページを生成する。ここで、もしベースページが更新されなかった場合(すなわち、ディファレンシャルページがない場合)には、一つの物理的ページのみを読む。よって、本方法は、最大二つの物理的ページのみを読み取るので、at−most−two−page reading原則を満足する。
【0056】
図10〜図14は、ページ−ディファレンシャルロギング方法を示す。ここで、base_page(p)、differential_page(p)、そしてdifferential(p)は、それぞれ論理的ページpに対するベースページ、ディファレンシャルページ、そしてディファレンシャルを示す。
【0057】
図10は、メモリー上の論理的ページ、m,mを示す。
図11は、更新された論理的ページ、m,mとこれらをフラッシュメモリーに記録する過程を示す。
【0058】
図12は、更新された論理的ページ、m,mとこれらそれぞれのベースページとの比較によるディファレンシャルの生成を示す。
図11で更新された論理的ページm,mが、フラッシュメモリーに反映される必要がある場合、ページ−ディファレンシャルロギング方法は、次の三工程を遂行する。
【0059】
(1)フラッシュメモリーからベースページp、pを読む。
(2)更新された論理的ページm,mとベースページp、pをそれぞれ比較することで、differential(m)、differential(m)を生成する。
【0060】
(3)differential(m)、differential(m)を使用するバッファーに記録する。もしバッファーがすべていっぱいになると、これを物理的ページpに記録する。
【0061】
したがって、更新された論理的ページm,mのディファレンシャルは、同一なディファレンシャルページpに記録される。
図13は、フラッシュメモリーから再生成された論理的ページmを示す。
【0062】
図14は、図13でフラッシュメモリーから再生成された論理的ページmの生成方法を示す。ここで、論理的ページmは、ベースページpとディファレンシャルページp内のdifferential(m)を併合することで生成される。
【0063】
フラッシュメモリー内で使用される資料構造には、ベースページ、ディファレンシャルページ、そしてディファレンシャルがある。ベースページは、データ領域内に論理的ページを格納して、スペア領域内に物理的ページ識別子を格納する。物理的ページ識別子はデータベース内のページの唯一の識別子を示す。ディファレンシャルページは、論理的ページのディファレンシャルを格納する。ディファレンシャルが属するベースページを識別するために物理的ページ識別子がディファレンシャル内に格納される。よって、ディファレンシャルの構造は<物理的ページ識別子、[オフセット、長さ、変更されたデータ]>のような形態を有する。
【0064】
メモリー内で使用される資料構造には、物理的ページマッピングテーブル、有効なディファレンシャルカウントテーブル、そしてディファレンシャル書き込みバッファーがある。物理的ページマッピングテーブルは、物理的ページ識別子を<ベースページ住所、ディファレンシャルページ住所>にマッピングする。フラッシュメモリーでは、アウトプレース方式によってページ内の位置が変わり得るので、このテーブルは、フラッシュメモリー内のベースページとディファレンシャルページの対を間接的に参照するのに使用される。
【0065】
有効なディファレンシャルカウントテーブルは、有効なディファレンシャル(すなわち、廃止(obsolete)にしないディファレンシャル)の個数をカウントする。ここで、カウントの値が0になれば、そのディファレンシャルページは、廃止状態(obsolete状態)に設定されて、ガベージコレクションによって再使用される。
【0066】
ディファレンシャル書き込みバッファーは、論理的ページのディファレンシャルをメモリー上で集めた後、バッファーがすべていっぱいになると、これらをフラッシュメモリー内のディファレンシャルページに記録するために使用される。ディファレンシャル書き込みバッファーは、一つのページで成り立つのでメモリー使用量が非常に少ない。図15は、前記で説明されたページディファレンシャルロギング方法の資料構造を示す。
【0067】
論理的ページをフラッシュメモリーに記録するためのアルゴリズムとフラッシュメモリーから論理的ページを再生成するためのアルゴリズムを紹介する。
これらアルゴリズムをそれぞれPageDifferentialLogging_WritingとPageDifferentialLogging_Readingと呼ぶ。
【0068】
図16と図19は、論理的ページをフラッシュメモリーに記録するのに使用されるPageDifferentialLogging_Writingアルゴリズムを示す。
PageDifferentialLogging_Writingの入力は、論理的ページpとヘッダー領域に格納された物理的ページ識別子pidである。このアルゴリズムは、次の三工程で成り立つ。
【0069】
工程1では、フラッシュメモリーからbase_page(pid)を読む。
工程2では、工程1で読んだbase_page(pid)と入力として与えられた論理的ページpと比較することで、differential(pid)を生成する。
【0070】
工程3では、工程2で生成したdifferential(pid)をディファレンシャル書き込みバッファーに記録する。ここで、differential(pid)のサイズにしたがって三種類の場合が存在する。ここで、論理的ページpの以前のディファレンシャルがバッファーに存在する場合には、以前のディファレンシャルをバッファーで先に削除した後、下の過程を遂行する。
【0071】
第一の場合:differential(pid)のサイズが、ディファレンシャル書き込みバッファーの余裕空間と同じか小さな場合(場合1)には、単純にdifferential(pid)をディファレンシャル書き込みバッファーに記録する。
【0072】
第二の場合:differential(pid)のサイズが、ディファレンシャル書き込みバッファーの余裕空間よりは大きいが、物理的ページ一つのサイズと同じかそれよりは小さい場合(場合2)には、writingDifferentialWriteBuffer()関数を呼び出した後、バッファーを空にして、differential(pid)をバッファーに記録する。図17と図21は、writingDifferentialWriteBuffer関数の内容を示す。この関数は、バッファーの内容をディファレンシャルページとしてフラッシュメモリーに記録した後、バッファー内のそれぞれのディファレンシャルに対して物理的ページマッピングテーブルと有効なディファレンシャルカウントテーブルを更新する。ここで、カウントの値が0になれば、そのディファレンシャルページは、廃止(obsolete)に設定されて、ガベージコレクションのために再使用される。
【0073】
第三の場合:differential(pid)のサイズが、物理的ページ一つのサイズよりもっと大きい場合(場合3)には、生成したdifferential(pid)を捨てて、writingNewBasePage()関数を呼び出す。図18と図22は、writingNewBasePage関数の内容を示す。この関数は、論理的ページp自体を新しいベースページとしてフラッシュメモリーに記録した後、物理的ページマッピングテーブルと有効なディファレンシャルカウントテーブルを更新して、以前のベースページを廃止状態に設定する。
【0074】
図23〜図24は、フラッシュメモリーから論理的ページを再生成するために使用されるPageDifferentialLogging_Readingアルゴリズムを示す。
【0075】
PageDifferentialLogging_Readingの入力は、読もうとする論理的ページの物理的ページ識別子pidである。このアルゴリズムは、次の三工程で成り立つ。
【0076】
工程1では、フラッシュメモリーからbase_page(pid)を読む。
工程2では、base_page(pid)のdifferential(pid)を捜す。ここで、differential(pid)がどこに存在するかによって二つの場合が存在する。
【0077】
第一の場合:differential(pid)が、ディファレンシャル書き込みバッファー内に存在する場合、すなわち、バッファーがいまだにフラッシュメモリーに記録されていない場合には、ディファレンシャル書き込みバッファーでdifferential(pid)を捜す。
【0078】
第二の場合:differential(pid)が、ディファレンシャル書き込みバッファー内に存在しない場合、フラッシュメモリーからdifferential_page(pid)を読んで、differential(pid)を捜す。ここで、もしdifferential_page(pid)がフラッシュメモリーに存在しない場合には(物理的ページマッピングテーブルから分かる)、工程1で読んだbase_page(pid)を結果として返還する。
【0079】
工程3では、工程1で読んだbase_page(pid)と工程2で捜したdifferential(pid)を併合することで論理的ページpを再生成した後、これを結果として返還する。
【0080】
以上のように本発明によるDBMSに独立的な方法でフラッシュメモリーにデータを格納する新しいアプローチであるページディファレンシャルロギングを例示した図面を参考にして説明したが、本明細書に開示された実施例と図面によって本発明が限定されるのではなく、本発明の技術思想の範囲内で当業者によって多様な変形がなされ得ることは、もちろんである。

【特許請求の範囲】
【請求項1】
ページ−ディファレンシャルを使用して、DBMSに独立的な方法でフラッシュメモリーにデータを格納する方法であって、
論理的ページをフラッシュメモリー内にベースページとディファレンシャルページに分けて記録する記録工程と、
前記ベースページと前記ディファレンシャルページを読んだ後、前記ベースページと前記ディファレンシャルページ内のディファレンシャルを併合して論理的ページを生成する再生成工程と
を含む方法。
【請求項2】
前記記録工程が、
論理的ページとフラッシュメモリー内のベースページを比較してディファレンシャルを生成するディファレンシャル生成工程と、
前記ディファレンシャル生成工程後、生成されたディファレンシャルを書き込みバッファーに記録するディファレンシャル記録工程と、
前記書き込みバッファーがすべていっぱいになると、これをフラッシュメモリーに格納するバッファー記録工程と
を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記ベースページが、論理的ページ全体を含むことを特徴とする請求項1または請求項2に記載の方法。
【請求項4】
前記ディファレンシャルページが、一つ以上の論理的ページのディファレンシャルを含むことを特徴とする請求項1または請求項2に記載の方法。
【請求項5】
前記ディファレンシャルが、前記ベースページと前記論理的ページとの間の差異であることを特徴とする請求項1または請求項2に記載の方法。
【請求項6】
前記記録工程が、更新された論理的ページがフラッシュメモリーに反映される必要がある場合にのみ遂行されることを特徴とする請求項1または請求項2に記載の方法。
【請求項7】
前記記録工程が、
フラッシュメモリーから論理的ページに対するベースページを読む第1工程と、
前記第1工程で読んだベースページと前記論理的ページを比較することで論理的ページに対するディファレンシャルを生成する第2工程と、
前記第2工程後、書き込みバッファーに以前のディファレンシャルが存在する場合にはこれを先に削除した後、ディファレンシャルを前記書き込みバッファーに記録する第3工程と
を含むことを特徴とする請求項1または請求項2に記載の方法。
【請求項8】
前記第3工程は、前記ディファレンシャルのサイズが前記書き込みバッファーの余裕空間と同じか小さい場合に、前記ディファレンシャルを書き込みバッファーに記録する工程であることを特徴とする請求項7に記載の方法。
【請求項9】
前記第3工程は、前記ディファレンシャルのサイズが前記書き込みバッファーの余裕空間よりは大きいが、物理的ページ一つのサイズと同じか小さい場合に、前記書き込みバッファーの内容をフラッシュメモリーに記録する工程と、前記書き込みバッファーを空にする工程と、前記ディファレンシャルを前記書き込みバッファーに記録する工程とで構成されることを特徴とする請求項7に記載の方法。
【請求項10】
前記フラッシュメモリーに記録する工程が、
前記書き込みバッファーの内容をフラッシュメモリーから割り当てられた新しい物理的ページに記録する工程と、
物理的ページマッピングテーブルと有効ディファレンシャルカウントテーブルを更新するテーブル更新工程と
を含むことを特徴とする請求項9に記載の方法。
【請求項11】
前記テーブル更新工程が、
前記書き込みバッファー内の各ディファレンシャルに対して、前記各ディファレンシャルが属する論理的ページのディファレンシャルページが前記物理的ページになるように物理的ページマッピングテーブルを更新する工程と、
前記各ディファレンシャルが属する論理的ページの以前のディファレンシャルページがnoneではない場合、有効ディファレンシャルカウントテーブルの以前のディファレンシャルページのカウント値を1減少させる工程と、
有効ディファレンシャルカウントテーブルの新しいディファレンシャルページのカウント値を1増加させる工程と
を含むことを特徴とする請求項10に記載の方法。
【請求項12】
前記第3工程が、前記ディファレンシャルのサイズが物理的ページ一つのサイズよりさらに大きい場合、前記ディファレンシャルを捨てる工程と、ベースページを記録する工程とで構成されることを特徴とする請求項7に記載の方法。
【請求項13】
前記ベースページを記録する工程が、
前記ベースページをフラッシュメモリーから割り当てられた新しい物理的ページに記録する工程と、
物理的ページマッピングテーブルと有効ディファレンシャルカウントテーブルを更新するテーブル更新工程と
を含むことを特徴とする請求項12に記載の方法。
【請求項14】
前記テーブル更新工程が、
前記論理的ページのベースページとディファレンシャルページがそれぞれ前記物理的ページとnoneになるように物理的ページマッピングテーブルを更新する工程と、
前記論理的ページの以前のディファレンシャルページがnoneではない場合、有効ディファレンシャルカウントテーブルの以前のディファレンシャルページのカウント値を1減少させる工程と、
前記論理的ページの以前のベースページを廃止状態に設定する工程と
を含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記以前のディファレンシャルページのカウント値を1減少させる工程以後に、前記減少された以前のディファレンシャルページのカウント値が0の場合、前記ディファレンシャルページを廃止状態に設定する工程をさらに含むことを特徴とする請求項11または請求項14に記載の方法。
【請求項16】
前記再生成工程が、
前記フラッシュメモリーから前記論理的ページに対する前記ベースページを読む第1過程と、
前記論理的ページに対するディファレンシャルを捜す第2過程と、
前記第1過程で読んだベースページと前記第2過程で捜したディファレンシャルを併合して論理的ページを生成した後、これを結果として返還する第3過程と
を含むことを特徴とする請求項1または請求項2に記載の方法。
【請求項17】
前記第2過程は、前記ディファレンシャルが前記書き込みバッファーに存在する場合に、前記書き込みバッファーから前記論理的ページに対するディファレンシャルを捜す工程であることを特徴とする請求項16に記載の方法。
【請求項18】
前記第2過程は、前記ディファレンシャルが前記書き込みバッファーに存在しない場合に、前記論理的ページに対するディファレンシャルページを読む工程と、前記読んだディファレンシャルページからディファレンシャルを捜す工程とで構成されることを特徴とする請求項16に記載の方法。
【請求項19】
前記論理的ページに対するディファレンシャルページを読む工程以前に、前記論理的ページに対するディファレンシャルページがフラッシュメモリーに存在しない場合に前記第1過程で読んだベースページを結果として返還する工程をさらに含むことを特徴とする請求項18に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図15】
image rotate