(57)【特許請求の範囲】
【請求項１】
不揮発性メモリ及び揮発性メモリを含む記憶デバイスにおいて、前記不揮発性メモリにおけるデータ記憶を管理するために使用される管理情報を記憶する少なくとも１つのデータ構造を維持するステップであって、それにより、前記データ構造の少なくとも一部分が前記揮発性メモリに記憶される、少なくとも１つのデータ構造を維持するステップと、
前記記憶デバイスの動作中にジャーナリングチャンクのシーケンスを作成するステップと、ここで、前記ジャーナリングチャンクのシーケンスにおける各ジャーナリングチャンクは、前記データ構造の各スライス及び前記シーケンスにおける前のジャーナリングチャンク以降に前記データ構造において生じた１つ以上の変更を有する、
前記ジャーナリングチャンクの前記シーケンスを前記不揮発性メモリに記憶するステップと、
前記記憶デバイスにおける電力遮断から回復したときに、前記記憶されたジャーナリングチャンクのシーケンスを使用して前記データ構造を再構成するステップと
を含むことを特徴とする方法。
【請求項２】
前記データ構造は、前記不揮発性メモリ中の各物理的記憶位置への論理アドレスのマッピングを備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記データ構造は、前記不揮発性メモリの各メモリブロックのパラメータのデータベースを備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記ジャーナリングチャンクの前記シーケンスを作成するステップは、前記以上の変更を累積するステップを含み、
前記ジャーナリングチャンクの前記シーケンスを記憶するステップは、特定のチャンクに対応する累積された変更が予め定義されたデータサイズ以上になったと判定されたことに応じて、前記ジャーナリングチャンクの前記シーケンスの前記特定のチャンクを記憶するステップを含み、
当該特定のチャンクを記憶するステップは、前記累積された変更及び前記データ構造の前記スライスを記憶するステップを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記ジャーナリングチャンクの前記シーケンスを作成するステップは、所与のジャーナリングチャンクに記憶された前記変更に、前記所与のジャーナリングチャンクに記憶された前記データ構造の前記スライスに関連しない少なくとも１つの変更を含めるステップとを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記ジャーナリングチャンクの前記シーケンスを作成するステップは、前記データ構造を巡回走査する各連続するスライスを、連続するジャーナリングチャンクに記憶するステップを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記ジャーナリングチャンクの前記シーケンスを作成するステップは、前記各スライスがそこから得られた前記データ構造中の各位置を指す表示を、各ジャーナリングチャンクに記憶するステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記少なくとも１つのデータ構造は、複数のデータ構造を備え、
各ジャーナリングチャンクは、前記複数のデータ構造の各スライスを備える
ことを特徴とする請求項１に記載の方法。
【請求項９】
前記データ構造を再構成するステップは、
前記電力遮断の前に前記不揮発性メモリに直近に書き込まれた最終ジャーナリングチャンクを識別するステップと、
前記データ構造の第１の有効スライスを含む第１のジャーナリングチャンクを識別するステップと、
ここで、前記第１の有効スライスは、それぞれの変更が適用されたデータのスライスを含む、
前記識別された第１のジャーナリングチャンクから前記識別された最終ジャーナリングチャンクまでの前記ジャーナリングチャンクを前記不揮発性メモリから前記揮発性メモリにコピーするステップとを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記ジャーナリングチャンクを回復するステップは、所与のジャーナリングチャンクから読み取られた所与の変更によって参照された前記スライスがすでに回復されたことを確認したときにのみ、前記所与の変更を適用するステップとを含むことを特徴とする請求項９に記載の方法。
【請求項１１】
記憶デバイスであって、
不揮発性メモリと、
揮発性メモリと、
プロセッサとを有し、当該プロセッサは、
前記不揮発性メモリにおけるデータ記憶を管理するために使用される管理情報を記憶する少なくとも１つのデータ構造を維持し、それにより、前記データ構造の少なくとも一部分が、前記揮発性メモリに記憶される；
前記記憶デバイスの動作中に、ジャーナリングチャンクのシーケンスを作成し、
ここで、前記ジャーナリングチャンクのシーケンスにおける各ジャーナリングチャンクは、前記データ構造の各スライス及び前記シーケンスにおける前のジャーナリングチャンク以降に前記データ構造において生じた１つ以上の変更を有する、
前記ジャーナリングチャンクの前記シーケンスを前記不揮発性メモリに記憶し、
前記記憶デバイスにおける電力遮断から回復したときに、前記記憶されたジャーナリングチャンクのシーケンスを使用して前記データ構造を再構成する
ことを特徴とする記憶デバイス。
【請求項１２】
前記データ構造は、前記不揮発性メモリ中の各物理的記憶位置への論理アドレスのマッピングを備えることを特徴とする請求項１１に記載の記憶デバイス。
【請求項１３】
前記データ構造は、前記不揮発性メモリの各メモリブロックのパラメータのデータベースを備えることを特徴とする請求項１１に記載の記憶デバイス。
【請求項１４】
前記プロセッサは、前記変更を累積し、前記累積された変更が既定のデータサイズに達したときに、前記累積された変更及び前記データ構造の前記スライスを含む前記ジャーナリングチャンクを記憶するように構成されることを特徴とする請求項１１に記載の記憶デバイス。
【請求項１５】
前記プロセッサは、所与のジャーナリングチャンクに記憶された前記変更に、前記所与のジャーナリングチャンクに記憶された前記データ構造の前記スライスに関連しない少なくとも１つの変更を含めるように構成されることを特徴とする請求項１１に記載の記憶デバイス。
【請求項１６】
前記プロセッサは、前記データ構造を巡回走査する各連続するスライスを、連続するジャーナリングチャンクに記憶するように構成されることを特徴とする請求項１１に記載の記憶デバイス。
【請求項１７】
前記プロセッサは、前記各スライスがそこから得られた前記データ構造中の各位置を指す表示を、各ジャーナリングチャンクに記憶するように構成されることを特徴とする請求項１１に記載の記憶デバイス。
【請求項１８】
前記少なくとも１つのデータ構造がは数のデータ構造を備え、
各ジャーナリングチャンクが、前記複数のデータ構造の各スライスを備える
ことを特徴とする請求項１１に記載の記憶デバイス。
【請求項１９】
前記プロセッサは、
前記電力遮断の前に前記不揮発性メモリに直近に書き込まれた最終ジャーナリングチャンクを識別し、
前記データ構造の第１の有効スライスを備える第１のジャーナリングチャンクを識別し、
ここで、前記第１の有効スライスは、それぞれの変更が適用されたデータのスライスを含む、
前記識別された第１のジャーナリングチャンクから前記識別された最終ジャーナリングチャンクまでの前記ジャーナリングチャンクを前記不揮発性メモリから前記揮発性メモリにコピーする
ことによって、前記データ構造を再構成するように構成されることを特徴とする請求項１１に記載の記憶デバイス。
【請求項２０】
前記プロセッサは、所与のジャーナリングチャンクから読み取られた所与の変更によって参照された前記スライスがすでに回復されたことを確認したときにのみ、前記所与の変更を適用するように構成されることを特徴とする請求項１９に記載の記憶デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的に、データ記憶に関し、特に、不揮発性記憶デバイスにおけるジャーナリングのための方法及びシステムに関する。
【発明の背景】
【０００２】
種々のメモリシステムは、フラッシュメモリなど、データを記憶するための不揮発性メモリを使用する。フラッシュメモリデバイスは、一般的に、フラッシュ管理又はフラッシュトランスレーションレイヤ（ＦＴＬ）と呼ばれる管理レイヤによって管理される。ＦＴＬは、一般的に、タスクの中でもとりわけ、電力遮断の前後のフラッシュメモリの動作を管理する。
【発明の概要】
【０００３】
本明細書で説明される本発明の一実施形態は、不揮発性メモリ及び揮発性メモリを含む記憶デバイスにおける方法を提供する。本方法は、不揮発性メモリにおけるデータ記憶を管理するために使用される管理情報を記憶する少なくとも１つのデータ構造を維持することであって、それにより、データ構造の少なくとも一部分が揮発性メモリに記憶されるような、少なくとも１つのデータ構造を維持することを含む。記憶デバイスの動作中にジャーナリングチャンクのシーケンスが作成され、各ジャーナリングチャンクは、データ構造の対応するスライス、及びシーケンスにおける前のジャーナリングチャンク以降にデータ構造において生じた１つ以上の変更を含む。ジャーナリングチャンクのシーケンスは、不揮発性メモリに記憶される。記憶デバイスにおける電力遮断から回復したときに、記憶されたジャーナリングチャンクを使用してデータ構造が再構成される。
【０００４】
いくつかの実施形態において、データ構造は、不揮発性メモリ中の対応する物理的記憶位置への論理アドレスのマッピングを含む。それに加えて、又は代替として、データ構造は、不揮発性メモリの対応するメモリブロックのパラメータのデータベースを含む。
【０００５】
開示された実施形態において、ジャーナリングチャンクのシーケンスを作成することは、変更を累積することと、累積された変更が既定のデータサイズに達したときに、累積された変更及びデータ構造のスライスを含むジャーナリングチャンクを記憶することとを含む。一実施形態では、ジャーナリングチャンクのシーケンスを作成することは、所与のジャーナリングチャンクに記憶された変更に、所与のジャーナリングチャンクに記憶されたデータ構造のスライスに関連しない少なくとも１つの変更を含めることを含む。
【０００６】
別の実施形態では、ジャーナリングチャンクのシーケンスを作成することは、データ構造を巡回走査する対応する連続するスライスを、連続するジャーナリングチャンクに記憶することを含む。更に別の実施形態では、ジャーナリングチャンクのシーケンスを作成することは、対応するスライスがそこから得られたデータ構造中の対応する位置を指す表示を、各ジャーナリングチャンクに記憶すること含む。
【０００７】
更に別の実施形態では、少なくとも１つのデータ構造が複数のデータ構造を含み、各ジャーナリングチャンクは、複数のデータ構造の対応するスライスを含む。更に別の実施形態では、データ構造を再構成することは、電力遮断の前に不揮発性メモリに直近に書き込まれた最終ジャーナリングチャンクを識別することと、データ構造の第１の有効スライスを備える第１のジャーナリングチャンクを識別することと、識別された第１のジャーナリングスライスから識別された最終ジャーナリングチャンクまでのジャーナリングチャンクを不揮発性メモリから回復することとを含む。ジャーナリングチャンクを回復することは、所与のジャーナリングチャンクから読み取られた所与の変更によって参照されたスライスがすでに回復されたことを確認したときにのみ、所与の変更を適用することを含むことができる。
【０００８】
更に、本発明の一実施形態によれば、不揮発性メモリ、揮発性メモリ及びプロセッサを含む記憶デバイスが提供される。プロセッサは、不揮発性メモリにおけるデータ記憶を管理するために使用される管理情報を記憶する少なくとも１つのデータ構造を維持するよう構成され、それにより、データ構造の少なくとも一部分は、記憶デバイスの動作中にジャーナリングチャンクのシーケンスを作成するために、揮発性メモリに記憶され、各ジャーナリングチャンクは、ジャーナリングチャンクのシーケンスを不揮発性メモリに記憶し、記憶デバイスにおける電力遮断から回復したときに、記憶されたジャーナリングチャンクを使用してデータ構造を再構成するために、データ構造の対応するスライス、及びシーケンスにおける前のジャーナリングチャンク以降にデータ構造において生じた１つ以上の変更を含む。
【０００９】
本発明は、下記の図面と併せて以下の本発明の実施形態の詳細な説明からより完全に理解できるであろう。
【図面の簡単な説明】
【００１０】
【図１】本発明のある実施形態に係るメモリシステムを模式的に例示したブロック図である。
【図２】本発明の一実施形態に係るデータベースジャーナリングスキームを模式的に示す図である。
【図３】本発明の一実施形態に係るデータベースジャーナリングのための方法を模式的に示すフローチャートである。
【図４】本発明の一実施形態に係るデータベース回復スキームを模式的に示す図である。
【発明を実施するための形態】
【００１１】
概要
本明細書で説明する本発明の実施形態は、不揮発性記憶デバイスにおける電力遮断からの保護のための向上した方法及びシステムを提供する。
【００１２】
いくつかの実施形態において、記憶デバイスは、ＮＡＮＤフラッシュメモリなどの不揮発性メモリと、不揮発性メモリにおけるデータ記憶を管理するプロセッサとを備える。プロセッサは、不揮発性メモリにおけるデータ記憶のために使用される管理情報を記憶する少なくとも１つのデータ構造を維持する。データ構造は、例えば、論理−物理アドレス変換テーブル及び／又はメモリブロックパラメータデータベースを備えることができる。
【００１３】
データ構造の少なくとも一部は、記憶デバイスのランダムアクセスメモリ（ＲＡＭ）などの揮発性メモリに記憶される。したがって、データ構造は、電力遮断から保護されなければならない。本明細書で説明するいくつかの実施形態では、プロセッサは、周期ジャーナリングスキームを適用することによってデータ構造を保護する。
【００１４】
典型的な実装では、プロセッサは、データ構造を多数の連続するスライスへと分割する。記憶デバイスの動作中に、プロセッサは、データ構造において生じる変更を、徐々に累積する。累積された変更が既定のデータサイズに達したとき、プロセッサは、「ジャーナリングチャンク」を作成し、ジャーナリングチャンクは、前のジャーナリングチャンク以降に生じた変更を備え、また、データ構造の次のスライスも備える。次いで、プロセッサは、ジャーナリングチャンクを不揮発性メモリに記憶する。
【００１５】
換言すると、プロセッサは、ジャーナリングチャンクのシーケンスを継続的に作成し記憶し、それにより、各チャンクは、データ構造の対応するスライスと前のチャンク以降にデータ構造において生じた変更とを備える。しかしながら、所与のチャンクに記憶された変更は、データ構造全体に関連することがあり、必ずしも所与のチャンクに記憶された個別のスライスに関連するとは限らない。
【００１６】
ジャーナリングチャンクのシーケンスにより、プロセッサは、電力遮断の発生時にデータ構造を再構成することが可能になる。例示的な回復スキームについて以下に更に説明する。
【００１７】
プロセッサは、データ構造と変更とを、バルクではなくスモールチャンクでバックアップするので、開示されるジャーナリングスキームの記憶パフォーマンスは、ほとんど又はまったくない低下しない。更に、このスキームにより、プロセッサは、電力遮断の後、高速でデータ構造を再構成することが可能になる。
【００１８】
データ構造のスライスは頻繁にバックアップされるので、バックアップする必要がある変更の数は比較的少ない。したがって、回復中、少数の変更しか適用する必要がない。また、この特徴は、所与の時間において不揮発性メモリへのバックアップが行われない変更、すなわち、電力遮断に起因して失われることになる変更の数を低減する。
【００１９】
更に、チャンクサイズ及びチャンクにおける個々のフィールドのサイズの選択における柔軟性により、ジャーナリングスキームをランタイム記憶パフォーマンスと回復時間との間の任意の所望のトレードオフに調整することが可能になる。プロセッサがジャーナリングチャンクを記憶するレートは一般的に可変であり、アクティビティのレベルに依存する：集中的な記憶時、変更は急速に累積し、ジャーナリングチャンクは急速に満たされ、ジャーナリングレートは高い。アイドル時間中、変更はゆっくりと累積し、それにしたがって、ジャーナリングレートが減少する。
【００２０】
システムの説明
図１は、本発明の一実施形態に係るメモリシステムを模式的に示す。本実施例では、メモリシステムは、ソリッドステートドライブ（ＳＳＤ）２４にデータを記憶するコンピュータ２０を備える。コンピュータ２０は、例えば、モバイル、タブレット又はパーソナルコンピュータを備えることができる。コンピュータは、ホストとして働く中央処理装置（ＣＰＵ）２６を備える。
【００２１】
代替実施形態では、ホストは、任意の他の好適なプロセッサ又はコントローラを備えることができ、記憶デバイスは、任意の他の好適なデバイスを備えることができる。例えば、ホストは、エンタープライズ記憶システムの記憶コントローラを備えることができ、記憶デバイスは、ＳＳＤ又はＳＳＤのアレイを備えることができる。不揮発性記憶デバイスにデータを記憶するホストの他の例は、モバイル電話、デジタルカメラ、メディアプレーヤ、並びに取外し可能なメモリーカード又はデバイスを備える。
【００２２】
ＳＳＤ  ２４は、不揮発性メモリに、本実施例では１つ以上のＮＡＮＤフラッシュメモリデバイス３４に、ＣＰＵ  ２６についてのデータを記憶する。代替実施形態では、ＳＳＤ  ２４中の不揮発性メモリは、例えば、ＮＯＲフラッシュ、チャージトラップフラッシュ（ＣＴＦ）、相変化ＲＡＭ（ＰＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）又は強誘電体ＲＡＭ（ＦｅＲＡＭ）など、任意の他の好適なタイプの不揮発性メモリを備えることができる。
【００２３】
ＳＳＤコントローラ３０は、ＳＳＤの種々の記憶タスク及び管理タスクを実行する。ＳＳＤコントローラは、一般に、メモリコントローラとも呼ばれる。ＳＳＤコントローラ３０は、ＣＰＵ  ２６と通信するためのホストインタフェース３８、フラッシュデバイス３４と通信するためのメモリインタフェース４６、及びＳＳＤの種々の処理タスクを実行するプロセッサ４２を備える。
【００２４】
ＳＳＤ  ２４は、揮発性メモリを、本実施例ではランダムアクセスメモリ（ＲＡＭ）５０、を更に備える。図１の実施形態では、ＲＡＭ  ５０は、ＳＳＤコントローラ３０の一部として示されているが、代替的には、ＲＡＭは、ＳＳＤコントローラとは別個であってもよい。ＲＡＭ  ５０は、例えば、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、２つのＲＡＭタイプの組み合わせ、又は任意の他の好適なタイプの揮発性メモリを備えることができる。
【００２５】
ＳＳＤコントローラ３０は、詳細にはプロセッサ４２は、ハードウェアで実装することができる。代替的には、ＳＳＤコントローラは、好適なソフトウェアを実行するマイクロプロセッサ、あるいはハードウェア要素とソフトウェア要素との組み合わせを備えることができる。
【００２６】
図１の構成は例示的な構成であり、概念を明快するためにのみ示される。任意の他の好適なＳＳＤ又は他のメモリシステム構成を使用することもできる。種々のインタフェース、アドレス指定回路、タイミング及びシーケンス回路、並びにデバッギング回路などの、本発明の原理を理解する上で必要ではない要素は、明瞭性のために図から省略されている。いくつかのアプリケーション、例えば、非ＳＳＤアプリケーションでは、ＳＳＤコントローラ３０の機能は、好適なメモリコントローラによって実行される。
【００２７】
図１に示される例示的なシステム構成では、メモリデバイス３４及びＳＳＤコントローラ３０は、別個の集積回路（ＩＣ）として実装される。しかしながら、代替実施形態では、メモリデバイス及びＳＳＤコントローラは、単一のマルチチップパッケージ（ＭＣＰ）又はシステムオンチップ（ＳｏＣ）において別個の半導体ダイ上に一体化することができ、また、内部バスにより相互接続することができる。更に代替的には、ＳＳＤコントローラ回路の一部又は全部は、メモリデバイス３４のうちの１つ以上が配設される同じダイ上に常駐することができる。更に代替的には、ＳＳＤコントローラ３０の機能の一部又は全部は、ソフトウェア中に実装することができ、コンピュータ中のＣＰＵ  ２６又は他のプロセッサにより実行することができる。いくつかの実施形態において、ＣＰＵ  ２６及びＳＳＤコントローラ３０は、同じダイ上に、又は、同じデバイスパッケージ中の別個のダイ上に作り込むことができる。
【００２８】
いくつかの実施形態において、プロセッサ４２は、本明細書で説明する機能を実行するようにソフトウェアにプログラムされた汎用プロセッサを備える。ソフトウェアは、例えばネットワーク経由で電子的な形態でプロセッサにダウンロードすることができ、又は別の方法によって、あるいは追加的に、磁気メモリ、光学的メモリ、若しくは電子メモリなどの永続的な有形的媒体によって提供でき、かつ／又は記憶することができる。
【００２９】
いくつかの実施形態において、ＳＳＤコントローラ３０のプロセッサ４２は、典型的にはソフトウェア中に実装される、フラッシュデバイス３４におけるデータ記憶を管理する管理レイヤを実行する。管理レイヤは、フラッシュトランスレーションレイヤ（ＦＴＬ）又はフラッシュ管理と呼ばれる。この管理レイヤの一部として、プロセッサ４２は、フラッシュデバイスにおけるデータ記憶において使用される管理情報を記憶する１つ以上のデータ構造を維持する。プロセッサは、ＳＳＤの動作中、管理情報を継続的に更新する。
【００３０】
プロセッサ４２は、任意の好適なタイプの管理情報を含めて、任意の好適な数及びタイプのデータ構造を維持することができる。データ構造の１つの例示的なタイプは、ホストによって指定された論理アドレス（論理ブロックアドレス−ＬＢＡ（Logical Block Address）とも呼ばれる）を、フラッシュデバイス３４中の対応する物理的記憶位置にマッピングする論理−物理アドレス変換を備える。
【００３１】
別の実施例では、データ構造は、フラッシュデバイス３４のメモリブロックのパラメータのデータベース、例えば、メモリブロックにおけるデータプログラミング及び読出しのために使用されるメモリブロック、ブロックステータス、並びに／あるいは記憶パラメータの使用情報を備えることができる。
【００３２】
以下の説明において、プロセッサ４２は、２つのデータ構造−論理−物理アドレス変換テーブル（仮想−物理マッピング−Ｖ２Ｐ−とも呼ばれる）及びブロックデータベース（ＢＤＢ）−を維持する。Ｖ２Ｐ及びＢＤＢの少なくとも一部は、ＲＡＭ  ５０に記憶される。管理情報の損失を回避するために、ＲＡＭ  ５０に記憶された管理情報を電力遮断から保護することが重要である。多くの実際のケースでは、管理情報の損失は、大量の記憶データに対する深刻なダメージを生じることがある。
【００３３】
ロバストなジャーナリングスキーム
図２は、本発明の一実施形態に係るデータベースジャーナリングスキームを模式的に示す図である。本実施例は、Ｖ２Ｐテーブル６０及びＢＤＢ  ６４を示す。プロセッサ４２は、Ｖ２Ｐテーブル６０を複数のスライス６２へと分割し、ＢＤＢ  ６４を複数のスライス６６へと分割する。所与のデータ構造のスライスは、一般的に、均一なサイズである。
【００３４】
Ｖ２Ｐテーブル及びＢＤＢをフラッシュデバイス３４にバックアップするために、プロセッサ４２は、ＳＳＤの動作中にジャーナリングチャンク６８のシーケンスを作成する。各ジャーナリングチャンク６８は、Ｖ２Ｐテーブル６０の対応するスライス６２を記憶するためのＶ２Ｐスナップショットフィールド７０と、ＢＤＢ  ６４の対応するスライス６６を記憶するためのＢＤＢスナップショットフィールド７２と、前のジャーナリングチャンク６８以降にＶ２Ｐテーブル及びＢＤＢにおいて生じた変更を記憶するための変更フィールド７４とを備える。一実施形態では、各チャンクは、対応するスライスがそこから得られたＶ２Ｐテーブル及びＢＤＢ中の位置を指す表示を備える。
【００３５】
一般的には、プロセッサ４２は、チャンクの変更フィールド７４が満たされるとすぐに、各ジャーナリングチャンク６８をフラッシュデバイス３４に記憶する。換言すると、プロセッサ４２は、現在のチャンクの変更フィールド７４を、Ｖ２Ｐテーブル及びＢＤＢにおいて生じた変更で継続的に更新する。変更フィールドが満たされたとき、すなわち、累積された変更がフィールド７４のサイズに達したとき、プロセッサ４２は、ジャーナリングチャンクをフラッシュデバイス３４に書き込む。
【００３６】
この動作モードでは、チャンクを記憶するレートは可変であり、データ構造の変動性のレベルに依存する。アイドル時間中には、変更はゆっくりと累積し、フィールド７４は、比較的長い期間経過後に満たされる。集中的な記憶アクティビティ時には、変更は急速に累積し、フィールド７４は急速に満たされ、したがって、フラッシュデバイスにチャンクを書き込むレートが増大する。
【００３７】
一般的には、プロセッサ４２は、Ｖ２Ｐテーブル６０及びＢＤＢ  ６４をスライスごとに巡回走査する。所与のデータ構造の最後のスライスをチャンク６８に記憶した後に、プロセッサ４２は、一般的には、データ構造の第１のスライスをラップアラウンドし、それの再バックアップを開始する。プロセッサ４２は、フラッシュデバイスに直近にバックアップされたスライス６２及び６６の位置を追跡するポインタを保持する。所与のデータ構造の末尾に達したとき、対応するポインタはデータ構造の先頭へとラップアラウンドする。
【００３８】
チャンク６８を記憶するために必要とされるメモリ空間は、一般的には、各データ構造の単一のインスタンスを記憶することを可能にし、更に、インクリメンタルな変更を記憶するための追加のメモリ空間を可能にするべきである。一般的には、プロセッサ４２は、ジャーナリングチャンクが記憶されるフラッシュデバイス３４中の位置を追跡する。これらの位置も電力遮断の発生時に紛失され得るので、これらの位置は、一般的には、フラッシュデバイスにバックアップされる。
【００３９】
所与のチャンク６８において、フィールド７４における変更は、必ずしも、同じチャンクのフィールド７０及び７２に記憶される特定のスライス６６及び６２に関連するとは限らないことを留意されたい。一般に、所与のチャンクに記憶された変更は、データ構造の任意の部分に関連し得る。
【００４０】
チャック６８に所与のスライス（６２又は６６）を書き込むことは、一般的には、原子動作と定義される。換言すると、プロセッサ４２は、一般的には、所与のスライスの書き込み中、データ構造へのいかなる変更も許可しない。チャンク６８に記憶された変更は、様々なタイプの変更を備えることができる。しかしながら、一般には、変更は、スライス及び変更に基づいてデータ構造全体の再構成を可能にするように定義される。
【００４１】
図３は、本発明の一実施形態に係るデータベースジャーナリングの方法を模式的に示すフローチャートである。方法は、初期化ステップ８０において、ＳＳＤコントローラ３０のプロセッサ４２が、新しいチャンクを初期化し、バックアップすべき次のスライス６２及び６６を指すために巡回ポインタをインクリメントすることから始まる。
【００４２】
プロセッサ４２は、チャンクポピュレーションステップ８４において、現在のチャンクを次のデータ構造スライスでポピュレートする。本実施例では、プロセッサ４２は、次のＶ２Ｐテーブルスライス６２を現在のチャンクのフィールド７０にコピーし、次のＢＤＢテーブルスライス６６を現在のチャンクのフィールド７２にコピーする。
【００４３】
プロセッサ４２は、変更累積ステップ８８において、ＳＳＤにおけるデータ記憶中に、データ構造において（例えば、Ｖ２Ｐマッピング及びＢＤＢにおいて）実行される変更の累算を開始する。プロセッサ４２は、今回作成されたチャンク６８の変更フィールド７４に新しい変更を追加する。プロセッサ４２は、チェックステップ８４において、変更フィールドが満たされているかどうかチェックする。
【００４４】
変更フィールドがまだ満たされていない場合、方法は、上のステップ８８にループバックし、プロセッサ４２は、Ｖ２Ｐ及びＢＤＢの変更の累積を継続する。変更フィールドが満たされている場合、プロセッサ４２は、チャンク記憶ステップ９６において、現在のチャンク６８をフラッシュデバイス３４に記憶する。次いで、方法は、次のチャンクを初期化し、それを満たし始めるために、上のステップ８０にループバックする。
【００４５】
図３のフローは、明快のためにのみ選択された例示的なフローである。代替実施形態では、動作の任意の他の好適なフローを使用することができる。
【００４６】
電力遮断後のデータベース再構成
電力遮断から回復すると、プロセッサ４２は、フラッシュデバイス３４に記憶されたジャーナリングチャンクを使用してＶ２Ｐテーブル６０及びＢＤＢ  ６４を再構成する。例示的な一実施形態において、プロセッサ４２は、（所与のデータ構造について）以下のような回復プロセスを実行する。
・プロセッサ４２は、フラッシュデバイスに書き込まれた直近のチャンク６８を識別する。このチャンクは、最終チャンクと呼ばれる。
・既知のサイズの各データ構造を使用して、プロセッサ４２は、データ構造の第１の有効スライスを保持する記憶されたチャンク６８を識別する。このチャンクは第１のチャンクと呼ばれる。
・プロセッサ４２は、フラッシュデバイスから、上記の識別された第１のチャンクから上記の識別された最終チャンクまでの記憶されたチャンクを読み出す。
・読み出されたチャンクの各々について、プロセッサ４２は、チャンクからのスライスをＲＡＭ  ５０中の適切な位置にコピーする。次いで、プロセッサ４２は、読み出されたチャンクにおける変更を検討する。所与の変更が、ＲＡＭへ回復済みのスライスに関連する場合、プロセッサ４２は、特定の変更を適用する。そうでない場合、プロセッサは、その変更を適用することなく変更を廃棄する（その変更は、後のチャンクからコピーされる後のスライスにより考慮されるべきである）。
【００４７】
このプロセスの後、プロセッサ４２は、種々のポインタをデータ構造に復元し、通常のランタイム動作に移動する。この時点から、プロセッサ４２は、図３の方法を使用して、データ構造のバックアップを継続する。必要に応じて、第１の回復の前に記憶されたチャンクを使用して第２の回復プロセスを実行することができる。換言すると、プロセッサ４２が電力遮断からの回復後にデータ構造のフルベースラインバックアップを実行することは必要でない。
【００４８】
図４は、本発明の一実施形態に係るデータベース回復スキームを模式的に示す図である。本実施例は、開示する技術のいくつかの追加の特徴を実証する。この実施例では、複数のジャーナリングチャンク６８は、例えば、マルチプレーン書き込みコマンドを使用して、Ｎ個のフラッシュダイに渡って並列に記憶される。また、記憶されたチャンクの回復は、マルチプレーン読み取りコマンドを使用して実行することができる。この種の記憶は、バックアップと回復の両方の速度を増大させる。
【００４９】
図４の矢印は、ジャーナリングチャンクのＶ２Ｐスライス及びＢＤＢスライスをＲＡＭ  ５０中のＶ２Ｐ及びＢＤＢにコピーし、そのチャンクにおいて指定された変更を適用するプロセスを示す。矢印のうちのいくつかは「有効」と示され、プロセッサ４２が対応する変更を適用することを意味する。上述したようなプロセッサにより廃棄される変更は、「不適当」と示される。
【００５０】
上述の実施形態は例として挙げられており、本発明は、以上に具体的に図示され説明されたものに限定されないことが理解されるであろう。むしろ、本発明の範囲は、以上に説明した様々な特徴の組み合わせ及び部分的組み合わせの両方、並びに当業者であれば前述の説明を読むことによって想到するであろう従来技術に開示されていないそれらの変型及び修正を含む。この参照により本特許出願に組み込まれる文献は、何らかの用語が、これらの組み込まれた文献の中で本明細書内で明示的又は暗示的になされた定義と対立する方法で定義されている範囲において、本明細書内の定義のみが考慮されるべきである点を除き、本願の必須部分であるとみなされるべきである。
【図１】
0005982576.tif 000002
【図２】
0005982576.tif 000003
【図３】
0005982576.tif 000004
【図４】
0005982576.tif 000005