JP5160006B2 - 論理フラッシュメモリ装置を用いて原子的更新を実行する方法および装置 - Google Patents
論理フラッシュメモリ装置を用いて原子的更新を実行する方法および装置 Download PDFInfo
- Publication number
- JP5160006B2 JP5160006B2 JP2001533526A JP2001533526A JP5160006B2 JP 5160006 B2 JP5160006 B2 JP 5160006B2 JP 2001533526 A JP2001533526 A JP 2001533526A JP 2001533526 A JP2001533526 A JP 2001533526A JP 5160006 B2 JP5160006 B2 JP 5160006B2
- Authority
- JP
- Japan
- Prior art keywords
- memory location
- data
- volatile memory
- block
- transaction identifier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/006—Identification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99954—Version management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Non-Volatile Memory (AREA)
Description
(技術分野)
本発明は、一般的には、一貫して成功あるいは失敗となる数段階の下位レベル操作からなる更新処理の技術に関する。特に、本発明は、トランザクション実行時にメモリアドレス変換層を利用する技術に関する。
【0002】
(背景技術)
トランザクション実行の概念は、データの保全性(整合性)と特定のビジネスルールへ従うことが一番の関心事であるファイルシステム保守の分野で幅広く用いられている。一例として、銀行業務用途が挙げられる。この場合、口座ファイルにすべての口座と各口座の現在有効残高が記載され、別の口座記帳ファイルに実行された全ての口座記帳処理が記載される。ここで、口座記帳ファイルに新規の記録が生じ、ある口座に対して、またはその口座からある金額の払込みがなされたことを記述したとする。しかし、口座ファイルに対しては対応する更新処理がなされなかったとする。その結果は、ファイルシステムにおけるデータ保全性(整合性)への侵害となる。すなわち、口座ファイルから読み出された口座の残高と、口座記帳ファイルの記録から得られた残高とが食い違う。この種の矛盾は、通常、取引の整合性侵害として知られている。他の危機的状況例として、いわゆるビジネスルール侵害があり、これは、特定用途向けルールに違反することを意味する。例えば、承認を得るため既に停止されている口座に記帳がなされた場合などである。
【0003】
トランザクションの概念は、ファイルシステムのデータに変化を起こさせる全ての下位レベル操作をひとまとめにし、それら操作が一貫して成功か失敗の何れかになる1つのエンティティを生じることを意味する。これら下位レベルの操作は更新操作としても知られている。トランザクションは、通常、連続する3つの段階に分けられる。すなわち、トランザクションの開始、データの更新、及びトランザクションのコミット(確定)の3段階である。致命的なシステムの故障(例えば、システムリセット)が生じる場合、トランザクションをコミットする段階に達しているかいないかによって、全ての更新操作が実行されるか、あるいはデータに対する変更が全くなされないかの何れかになる。コミット段階が既に開始している時に致命的なシステム故障が起これば、コミット段階は中断され、次のシステム起動時に終了する。トランザクションがコミット段階に至る前に致命的な故障が発生すれば、そのトランザクションの全記録は次のシステム起動時に自動的に削除される。
【0004】
トランザクション機構は、通常、ロールバックトランザクションとして知られる後退復帰動作をサポートしている。これは、更新段階で生成されたすべての更新操作を、コミット処理により確定させるのではなく、取り消す事を意味する。
【0005】
図1は、トランザクションを実行するのに用いられる従来の簡易ファイルシステムを示す。制御部101は、ログファイル102とデータベースファイル103の両方を管理している。制御部101は、トランザクションを構成する操作を矢印104に従いまずログファイル102に書き込む。全ての操作が首尾よくログファイル102に書き込まれた後、制御部101はそれらの上書処理を行う。すなわち、データベースファイル103に対応する変更を加える。この処理は、矢印105に従いログファイル102からデータベースファイル103へ変更の転送を行う処理として見ることができる。
【0006】
図1のログファイル構成と、データベースファイル103における直通非トランザクション志向型のデータ更新とを較べると、前者はファイル書込み操作量が倍となり、後者には無いファイルの読み込み操作を取り入れているのがわかる。このようなファイルシステムのローディングは、特に、毎日のトランザクション数が少なくとも数十万から数百万にも上る銀行業務用途のような大規模なシステムにある種の弊害をもたらすことは明らかである。
【0007】
(発明の開示)
本発明は、図1の従来構成におけるよりファイルシステムへのローディング量を減らしてトランザクションを実行する方法と装置とを提供することを目的とする。また、本発明は、確実に、かつ経済的にトランザクションを実行する方法と装置とを提供することを目的とする。さらに、本発明は、単位時間ごとのトランザクション数を考慮に入れて容易に規模拡張できる方法と装置とを提供することを目的とする。
【0008】
本発明の目的は、フラッシュメモリ、またはデータ記憶装置として同様に機能する装置を用い、ペイロードデータ内容及び上記データ記憶装置のメモリアドレス情報に対して一定の順番で処理を実行することにより達成される。
【0009】
本発明に係わるデジタルデータの第1ブロックを更新する方法は、データの第1ブロックに関係すると共に、一貫して成功あるいは失敗となる更新操作全てに共通する第1の識別子を起動するステップと、データの第1ブロックに関係すると共に、一貫して成功あるいは失敗となる更新操作全てを実行するステップと、更新されたデータの第1ブロックを前記第1の識別子に関連づける値と共に前記更新されたデジタルデータの第1ブロックを論理フラッシュメモリ装置に記憶するステップと、前記第1の識別子の動作を停止するステップとをこの順番通りに備えることを特徴とする。
【0010】
本発明は、論理フラッシュメモリ装置に基づくファイルシステムにおいてシステム故障を復旧する方法にも適用される。本方法は、システム故障発生時にいずれの識別子が起動していたかを、起動中の識別子リストからチェックするステップと、データブロックをシステム故障発生時に起動していた識別子に関連づける数値を含むデータブロックの場所を見出すために物理メモリ位置をチェックし、そのようなデータブロックを含む各不揮発性メモリ位置の状態インジケータを、前記メモリ位置が無効データを含むことを示す値に設定するステップとを備えることを特徴とする。
【0011】
また、本発明は、論理フラッシュメモリ装置と、データの第1ブロックに関連すると共に、一貫して成功あるいは失敗となる更新操作全てに共通する第1の識別子を起動する手段と、データの第1ブロックに関係すると共に、一貫して成功あるいは失敗となる更新操作全てを実行する手段と、更新されたデータの第1ブロックを前記第1の識別子に関連づける値と共に、前記更新されたデジタルデータの第1ブロックを論理フラッシュメモリ装置に記憶する手段と、前記第1の識別子の動作を停止する手段とを備えることを特徴とする装置にも適用される。
【0012】
フラッシュメモリに典型的な第1の特徴は、物理メモリ位置が使い捨て可能なことにある。他の特徴は、前記第1の特徴から導かれる1つの結果であるが、1セットのアクセスルールを用いて個別にアクセス可能なブロックでメモリが構成されることである。本発明によると、トランザクションによりその内容が更新されるペイロードデータの未更新及び更新バーションを格納するために多数のブロックが用いられる。そして、前記ブロックのアドレス及びヘッダ情報を用い、ある任意の時点においてどのブロックが最も有効なバージョンのペイロードデータを含んでいるかを宣言する。
【0013】
フラッシュメモリの概念は、論理的フラッシュメモリ装置やLFMDを網羅するよう拡大解釈可能である。すなわち、フラッシュメモリの前記特徴に従って動作するよう構成された任意のメモリ手段も含めて考えることができる。フラッシュメモリの前記特徴とは、格納データをブロックに構成すること、ブロックへの1回限りの書込み特性、及び、ブロックにおけるデータの状態を示す状態インジケータである。LFMDの一般的な定義には、少なくとも2つの物理的に分離された記憶場所(メモリ位置)を用いてデータの論理統合ブロックを記憶するハイブリッドソリューションも含まれる。
【0014】
例えば、従来の磁気ディスクドライブ、またはスタティックRAM(Random Access Memory)は、LFMDの様に動作するよう構成される場合がある。フラッシュメモリの特徴であるフル・エミュレーションは、通常磁気ディスクドライブには必要とされない。すなわち、データブロックの物理的消去は、通常磁気ディスクドライブで実行されることはない。磁気ディスクドライブと実際の固体フラッシュメモリとの組み合わせは、ハイブリッドソリューションには有利な機構となる。例えば、データブロックのヘッダ(または、状態インジケータ等、ヘッダの一部)がフラッシュメモリに記憶され、このブロックの残り部分、特にデータペイロードが、磁気ディスクドライブに記憶されるような場合である。2つの物理的に分離された位置を用いるにもかかわらず、そのデータブロックは論理的に一体となる。本発明は、LFMDが物理的にフラッシュ技術に基づいているかどうかにかかわらず、全てのLFMDに等しく適用できる。
【0015】
本発明に付与された特徴として、更新可能な最小データ単位のフェイルセーフ(危険防止)原子的更新手順が提供される。このようなデータ単位は、限られた数の許容値を有する状態インジケータを伴うヘッダフィールドを備える。更新されたデータ単位の状態インジケータは、更新されたデータがそこに書き込まれた場合に対応するペイロードデータの有効性を示すように変更される。その後、対応する古いデータ単位の状態インジケータは、古いペイロードデータが廃止されたことを示すように変更される。
【0016】
特定のトランザクション識別子は、対応するトランザクションが実行中であることを示すよう、一時的に記憶される。前記トランザクションの一部分をなす全ての更新操作には、同一のトランザクション識別子、あるいは、明らかにそれと関連する識別子が付される。全ての更新操作が実行された後、一時的記憶領域からトランザクション識別子を除去するか、あるいは、トランザクションの終了を示すマークを付けることによって、トランザクションはコミット(確定)される。
【0017】
単一の更新可能なブロック内に格納されたデータの非オーバーラップ部分に作用する多重並列トランザクションに関しても、各並列トランザクションごとに更新されるデータに対して個別の一時記憶場所を割り当てることによりサポート可能となる。並列更新操作はそれぞれ一時記憶場所内で実行され、その一時記憶場所における操作実行が終了して初めて実際の記憶場所であるメモリ位置が更新される。
【0018】
本発明は、トランザクションを非常に低い階層レベルで(ファイルシステムで)取り扱うことを可能にすると共に、さらに多くの利点を提供する。高次階層レベルを表しファイルシステムをデータ記憶に使用する用途では、実際のトランザクション処理がどのように実行されているかを知る必要が無い。トランザクション処理のファイルシステムレベルでの実行は、上位レベル用途での実行から独立しているので、そのトランザクション処理の実現を強固にすると共に、異なる種類の用途にも容易に適応可能になる。続いて、上位階層レベルでは、下位部分の全てが完結するか、全てが完結しないかのいずれかになる原則に依存する、より複雑な操作からなる。
【0019】
本発明の特徴と考えられる新規な特徴は、特に添付の特許請求の範囲に示される。しかしながら、本発明それ自体は、その構成及び動作方法に関して、さらなる目的及び効果と共に、添付図面に関連づけて示す以下の特定の実施形態の詳細説明から最良の理解が得られるものである。
【0020】
(発明を実施するための最良の形態)
図1は従来技術の説明で既に論じられており、以下の実施形態に伴う本発明の説明は図2乃至12に注目する。
【0021】
本発明を十分理解するために、フラッシュメモリ及び論理的に類似した構成及び動作を有する他の装置の既知特徴を最初に手短に説明する。フラッシュメモリのデータは、最初にメモリの全論理ブロックを消去しないかぎり、通常同一の物理メモリ位置に更新することができない。ブロックレべルの消去後、消去されたブロック内の全ビットは通常1である共通の第1定数値を持つ。このブロック内の各ビットは、その値を通常0である第2の定数値に変更することにより、個別に1回書き込まれる。その後、ビットの値を変更するには、再びそのブロック全体を消去する以外に方法はない。
【0022】
図2はフラッシュメモリ装置201の概略を示し、ここでフラッシュメモリ装置201はフラッシュメモリ消去ブロック、すなわちFMEBに分割されている。通常、数的に大きな正の整数Mで表されるM個のFMEBがあり、そのうち4個(202、203、204及び205)が図2で別々に示されている。1つのFMEBが最小論理メモリ単位であり、メモリ装置の他の部分とは関係なく消去可能となる。1つのFMEBのサイズはメモリ装置のタイプによって異なるが、キロバイトをkBで表すと、通常4kBから64kBである。
【0023】
各FMEBは、1つ以上の論理データブロック、すなわちLDBから構成される。図2では、第1のFMEB202がN個のLDBに分割されている様子が示され、そのうち5個(206、207、208、209及び210)が別々に示されている。1つのLDBが論理フラッシュデータブロック装置において更新可能な最小データ単位となる。概念上、ハードディスクドライブの1つのデータセクタに相当する。各LDBは、LDBヘッダ、すなわち図2で211として示されるLDBHと、ペイロードデータ、すなわち頭字語LDBDで知られるLDBデータ部212にさらに分割される。前者は、特に、LDB識別子フィールド213と状態フィールド214とからなり、LDB識別子フィールド213の内容は、各LDBを明確に識別するのに用いられ、状態フィールド214は、対応する物理的記憶領域のデータの有効性を示す。
【0024】
LDB内のビットの値は一度しか書き込めないので、LDBにおけるペイロードデータの任意更新処理は、最近のブロックレベルでの消去がなされて以来タッチされていない「汚れていない」すなわち「クリーンな(変更無しの)」メモリ位置にLDB全体を書き込むことによってのみ可能となる。古い記憶場所については、対応する値をLDBH内の状態インジケータに付与することにより、ダーティ(変更済み)であると宣言がなされる。
【0025】
LDBが少なくとも2つの物理的に分離された位置に記憶され得ることは既に示唆した通りである。論理的な観点から見ると、物理的変換に適した論理を設けてデータブロックを論理的に1つの実体として現出させる限りは、物理的記憶のフォーマットが問題になることはない。このような変換及びそれらの実際的なインプリメンテーション(実用化)は、当業者にとって公知なものである。
【0026】
図3は、論理物理フラッシュメモリアドレス変換層、すなわちLTPTLの概略を示す。LTPTLは一種の変換テーブルであり、物理メモリ位置アドレスを各LDB識別子に関連づける。あるLDBの読み込みが必要な場合、このシステムはLTPTLを参照し、その特定LDBを現在含む物理的メモリアドレスを得る。この手順は、論理物理アドレスマッピング、すなわちLPAMとして知られている。LDBの更新は、物理的フラッシュメモリにおけるその位置が変わることを意味する。対応する変更はLTPTLにおいてなされ、新しい物理的記憶アドレスが更新されたLDBを含む新しい記憶場所を指し示す。
【0027】
メモリ装置は、上記したように、その物理的インプリメンテーション(実装)が実際のフラッシュ技術に基づいているかどうか、あるいはデータブロックの物理的記憶が1つ以上の異なる位置に生じるかどうかにかかわらず、図2及び3に関して説明した原理に従って動作する。
【0028】
図4は、データの更新をフラッシュメモリ内の「適所で」行う既知の方法を示す。第1のステップで、FMEB401全体の内容は、通常はランダムアクセスメモリ、すなわちRAMである揮発性メモリ402に読み込まれる。このようなメモリは、制限なくビット値の変換を前後に(往復方向に)繰返し実行できるので、第2のステップでは、RAM402内のデータが更新される。第3のステップでは、元のFMEB位置が消去され、第4のステップでは、更新されたデータがその元のフラッシュメモリ位置に書き戻される。第3または第4のステップのいずれかで致命的エラーが発生する場合、有効データは揮発性のメモリだけに存在しているため失われる可能性がある。図4の方法の他の欠点としては、書込時消去(erase-on-write)タイプの更新処理は、通常かなり非効率なものとなり、フラッシュメモリの寿命を早める恐れがある。
【0029】
図5(a)及び(b)はLDBのフェイルセーフ原子的更新手順を示す。すなわち、1つのLDBサイズの2つの物理メモリ位置501及び502が示される。ここで、少なくとも「未使用」、「書込み済み」、「有効」、「ダーティ(変更済み)」及び「ブロークン(破壊)」といった状態を示すように、1セットの許容値がLDBH内の状態フィールドに対して既に定義されているものとする。これらの状態のうち、「ブロークン(破壊)」状態は、対応する物理メモリ位置が正常に機能しておらず、使用すべきではないことを意味する。この「ブロークン(破壊)」状態は、メモリ装置の一般的な使用に関するものであり、本発明にとってなんら重要ではない。さらに、作業領域として利用できる揮発性メモリ503を図5に示してある。
【0030】
現在第1のメモリ位置501に存在しているLDBのペイロード部に格納されているデータを更新する第1のステップ551は、揮発性メモリ503にペイロード部を読み込むものである。揮発性メモリ503におけるデータの更新は、次のステップ552を構成する。ここまでのところ、本方法は図4の従来の非フェイルセーフ方法に類似しているが、更新されたデータが同一の物理メモリ位置に書き込まれず、新メモリ位置502に書き込まれるところが異なる。周到に設計された一連の連続ステップは、たとえ予期せぬシステム故障の後であってもデータの有効なコピーを常に確実に使用可能にするように動作する。
【0031】
ステップ553では、第2のメモリ位置502の状態インジケータフィールド522が「未使用」から「書込み済み」に変更される。ステップ554では、LDB識別子が、第1のメモリ位置501のLDB識別子フィールド511から第2のメモリ位置502のLDB識別子フィールド521にコピーされる。LDB識別子は、ステップ551で既にペイロードデータと共に第1のメモリ位置から読み込まれているか、あるいはそれ以外の場所(例えば、LTPTL)から既に取得されているとすれば、第1のメモリ位置から実際に読込む動作がステップ554ではもはや必要ないことは言うまでもない。しかし、概念上、新メモリ位置502を準備する手順の一部が旧メモリ位置501から直接LDB識別子をコピーすることであると考えるのが一番手っ取り早い。次いで、ステップ555では、更新されたペイロードデータが新メモリ位置502のペイロードデータフィールド523に書き込まれる。なお、ステップ554及びステップ555の相互順位関係は、本発明の適用性に特に影響を与えることなく変更することができる。
【0032】
そして、LDB識別子及び更新されたペイロードデータ双方の新メモリ位置502への書込みが首尾よく終了した場合のみ、新メモリ位置502の対応するフィールド522にある状態インジケータが「書込み済み」から「有効」に変更される。その後、論理物理フラッシュメモリアドレスマッピングをステップ557で更新し、(新旧メモリ位置の両識別子フィールド511及び521において現在同一である)LDB識別子を新物理メモリ位置502に関連づける。そして、ステップ558では、旧メモリ位置501の対応するフィールド512における状態インジケータを「有効」から「ダーティ(変更済み)」に変更する。その後少し間をおいて、ステップ559に入り、旧メモリ位置が属するFMEB(図示せず)が消去され、同時に旧メモリ位置501の対応するフィールド512における状態インジケータが「ダーティ(変更済み)」から「未使用」に変更される。
【0033】
論理物理フラッシュメモリアドレスマッピングが更新されるステップの順序関係は重要でないが、更新されたペイロードデータが新メモリ位置に書き込まれるステップの後、かつ、旧メモリ位置が消去されるステップの前か、あるいは少なくとも更新されたペイロードデータが次回の処理に利用される前に実行されるのが最も有効である。以下、論理物理フラッシュメモリアドレスマッピングの更新ステップの位置に関して考慮すべき事柄について述べる。
【0034】
図5(a)及び(b)に示した方法のトランザクション処理に対する適応性は、通常、不揮発性フラッシュメモリで利用可能なデータのコピーがそれら各瞬間に存在するかどうかに関わる。以下の状態テーブルは、図5(b)に示した各ステップ後の状態インジケータの値を示す。
【0035】
【表1】
【0036】
予期せぬ致命的な故障から復旧するための一般的な原則は、データが有効であることを示すLDB状態インジケータのメモリ位置からデータを選ぶことである。しかし、表1によると、ステップ556の終了後、かつ、ステップ558の開始前に短い間隔があり、その間に、両メモリ位置は有効なデータを備えていると主張するが、新メモリ位置のデータは更新され、旧メモリ位置のデータは更新されない。この様な状況から復旧するために取られる簡単な原則は、LDB識別子が等しくなるメモリ位置から1つ無作為に選択して他を捨てること、すなわち、その状態インジケータを「有効」から「ダーティ(変更済み)」に変更することである。その結果、旧メモリ位置が有効として選ばれる場合、未更新データが引き続き有効とみなされ、更新の試みが全くなされなかったとみなされる。一方、新メモリ位置が選ばれる場合、試みられた更新処理が成功したとみなされる。
【0037】
なお、「有効+有効」の状況を処理する方法もあり、これは上記の無作為選択よりも若干複雑であるが、無作為選択の不明確さを最大限の決定論に置き換えるものである。この場合、LDBは、年代順の周期的インジケータとして機能する多数のビットからなるという特徴によって特定される。最も単純な周期的インジケータ例としては、2ビットで構成されるものがある。この例では、LDBがフラッシュメモリに書き込まれる度に、インジケータビットの値がその周期パターンに従い前の値から前進する、すなわち、最も端的には、00から01、10、11を介して00に至る等(あるいは、単一ビット値の毎回の変化が好まれる場合には、00から01、11、10を介して00に至る等)のパターンに従う。同一のLDBの2つのコピーがメモリで発見された場合、周期的インジケータビットを比較することにより、いずれが古くいずれが新しいかを容易に見分けることができる。この場合、特定数のビットを有する周期的インジケータの有用性は、同一のLDBの旧コピーに「ダーティ(変更済み)」が付されるか、あるいはインジケータ値のこの周期が切れる前に消去されるという仮定に基づいている。周期的インジケータの数が増えるほど、値の周期は長くなり、周期的インジケータ値を見ることにより明らかとなる「LDB履歴」も長くなる。
表1において、有効に読めるデータからのメモリ位置は下線及び太字体で強調されている。
【0038】
フェイルセーフ原子的更新手順の上記説明に基づいて、1つのフラッシュメモリ・トランザクションの実施形態を説明する。ここでは、システムにおける各LDBのLDBヘッダにさらなるフィールドが付加されているものとする。図6はLDB601の概略を示し、そのヘッダ部は、LDB識別子フィールド602と、LDB状態インジケータフィールド603と、トランザクション識別子フィールド604とからなる。さらに、LDB状態インジケータフィールド603の許容値が、「未使用」、「書込み済み」、「トランザクション書込み済み」、「有効」、「ダーティ(更新済み)」及び「ブロークン(破壊)」の各状態に対応していると仮定する。なお、ここでは、「トランザクション書込み済み」の状態が上述したものに付加されている。さらに、システムは概念上その処理時にトランザクション識別子の選択肢を持ち、各トランザクション識別子はある時点において使用中(「起動中」)であるか、開放されている(「作動していない」)かのいずれかになるように、少なくとも1つのLDBが起動LDBのメモリ位置として割り当てられているとする。この特定のLDBをLDB#Tと称する。
【0039】
次に、図7を参照すると、ステップ701ではトランザクション識別子を起動し、1つのトランザクションを開始する。すなわち、これまで起動されていないトランザクション識別子を選択してLDB#Tに書き込む。この特定トランザクション識別子を#TIDと称する。この書込みは、図5(a)及び(b)に関して上述したフェイルセーフ原子的更新手順を用いることによって実行される。#TIDの起動が首尾よく行われたら、このトランザクションが開始したものと考えることができる。
【0040】
トランザクション識別子起動の概念は本発明全体にとって重要であるが、それをLDB#Tに書き込むことが唯一可能な具体的インプリメンテーション(実現法)ではない。本発明のコンテキストにおいて、トランザクション識別子を起動することは、トランザクション識別子をある第1の状態にし、たとえシステム故障の後であっても確実にその第1の状態からこのトランザクション識別子を復旧できるような全ての手順を意味すると考えられる。同様に、あるトランザクション識別子の動作を停止するとは、トランザクション識別子を、たとえシステム故障の後であっても明確に前記第1の状態から区別できるある第2の状態にすることを意味している。この様に、起動されているがその後まだ動作が停止されていない全てのトランザクション識別子が起動中のトランザクション識別子として指定されてもよい。
【0041】
フラッシュメモリ・トランザクションのコンテキストにおいて、実際のデータ更新処理は多数の更新操作からなり、各更新操作はそれぞれ単一のLDBに関係している。ステップ702では、あるLDB識別子、LDB#Xによって識別されるLDBの内容が第1のフラッシュメモリ位置から揮発性作業領域メモリに読み込まれ、ステップ703では、そのペイロードデータ部に含まれるデータが更新される。ステップ704では、新しい第2のフラッシュメモリ位置の状態インジケータフィールドが「未使用」から「書込み済み」に変更され、ステップ705では、LDB#Xが第2のメモリ位置のLDB識別子フィールドに書き込まれる。そして、ステップ706では、#TIDが第2のメモリ位置のトランザクション識別子フィールドに書き込まれ、ステップ707では、更新されたデータが第2のメモリ位置のペイロードデータ部に書き込まれる。ここで、ステップ705、706、及び707は、互いに異なる順序であってもよい。第2のメモリ位置が首尾よく正しいLDB識別子(LDB#X)、トランザクション識別子(#TID)及び更新されたペイロードデータを備えた後、その状態インジケータフィールドの値は、ステップ708で「書込み済み」から「トランザクション書込み済み」に変更される。
【0042】
ステップ709では、終了したLDBの更新操作がフラッシュメモリ・トランザクションの最後の操作であったかをチェックする。ステップ709における判定が否定的である場合、現行トランザクションのコンテキストにおいて実行されるべき他のLDB更新操作が残っていることを意味するので、開始地点は前回と異なるLDBであるという例外付きで手順がステップ702に戻され、その更新結果は前回と異なる第2のメモリ位置に書き込まれる。一方、ステップ709における判定が肯定的である場合、現行トランザクションに関連したデータ更新が終了したことを意味するので、トランザクションはコミット段階に進むことができる。
【0043】
図7に示すフラッシュメモリ・トランザクションのコミット段階は、#TIDがLDB#Tから除去されるステップ710で構成される。フェイルセーフ原子的更新手順はその除去の実行にも用いられる。なお、この時点で、このトランザクションに関連して更新された全ての旧メモリ位置は、それらの状態インジケータフィールドによって未だ有効と宣言されている。そのため、このトランザクションは、ステップ711、712、713及び714で構成されるループで動作を継続する。ステップ711では、論理物理フラッシュメモリアドレスマッピングが更新され、LDB識別子LDB#Xを新物理メモリ位置に関連づける。フェイルセーフ原子的更新手順に関連して前述したように、他の方法ステップに関連するアドレスマッピング更新ステップの実際の位置が問題になることはない。次いで、ステップ712では、LDB#Xとして知られた古い未更新バーションのデータブロックを収容する第1のメモリ位置の状態インジケータが「有効」から「ダーティ(更新済み)」に変更される。
【0044】
ステップ713では、LDB#Xとして知られた新しい更新バージョンのデータブロックを収容する、対応する第2メモリ位置の状態インジケータが「トランザクション書込み済み」から「有効」に変更される。ここで、同一のトランザクション識別子が再利用される場合を除き、ステップ713を系統立てて実行する必要はない。なお、ステップ713が遅延されて実行される場合については後述する。次いで、ステップ714では、コミット(確定)されたトランザクションに関連する全てのLDBがステップ711、712及び713でなされた変更を受けているかどうかがチェックされる。判定が否定的である場合、ステップ711に戻り他の第1及び第2メモリ位置対を処理することを意味し、ステップ714における判定が肯定的である場合、このトランザクション処理が完了したことを意味する。
【0045】
以下に示す状態テーブルは、図7に示す各ステップ後の新旧メモリ位置における状態インジケータの値を示している。省略して、Uが「未使用」、Wが「書込み済み」、Tが「トランザクション書込み済み」、Vが「有効」及びDが「ダーティ(更新済み)」として使用されている。
【0046】
【表2】
【0047】
表2において、いつでも有効データが利用可能なメモリ位置は太字体及び下線で強調されている。ここで、トランザクション処理の原則に照らして、データの有効性を分析してみる。
1つのトランザクションの全更新操作は、全て成功あるいは失敗のいずれかになることは前述した通りである。これら2つの二者択一を分けるボーダーラインとなるのがトランザクションのコミット段階である。図7において、ステップ710はコミットステップをなす。
【0048】
トランザクションがステップ710に達する前、すなわち、トランザクション識別子#TIDが起動中のトランザクション識別子に割り当てられたメモリ位置から除去される前に致命的エラーが発生する場合、基本的に、全てのLDB更新が正しく実行されたかどうか不確かである。それゆえ、唯一理にかなって取りえる1つの手段は、トランザクションを後退復帰させること、すなわち、全更新操作を無効にすることである。言い換えると、致命的エラー発生後の次のシステム起動時に、このような物理メモリ位置の全てが以下の2つの判定基準の1つを満たす場合はダーティ(変更済み)という判定が付される。2つの判定基準とは以下の通りである。
【0049】
・それら状態インジケータフィールドの値が「書込み済み」の状態を示す。
・それら状態インジケータフィールドの値が「トランザクション書込み済み」の状態を示し、それらトランザクション識別子フィールドに現れたトランザクション識別子が起動中のトランザクション識別子に割当てられたメモリ位置にも出現している。
【0050】
ダーティとして宣言される物理メモリ位置によっては、それらLDB識別子フィールドの値が他の(古い)物理メモリ位置の対応するフィールドにも出現するという判定基準を満たす場合もある。しかしながら、種々の理由で、そのような特徴がダーティとして宣言される物理メモリ位置の信頼性を保証するものではないことがわかる。それら理由のうち最も重要な点は、旧物理メモリ位置が消去されるまでどれだけの間その状態にとどまるのかが通常予測できないことである。バックグランドクリーンアップルーチンはフラッシュメモリの状態を継続的に監視し、データブロックを周辺に移動させてFMEBを消去することによって記憶空間を開放するよう試みる。付け加えて言えば、動作の初期段階でシステムの故障が発生する場合もある。そのような初期段階では、実行される第1のトランザクションがフラッシュメモリに書き込まれるべき「新」コピーを生じる前にクリーン(変更無し)であったため、LDBの「旧」コピーは存在していない。
【0051】
一方、ステップ710が完了した後、すなわち、起動中のトランザクション識別子に割り当てられたメモリ位置からトランザクション識別子#TIDが除去された後にシステムの致命的エラーが発生する場合、全てのLDB更新が正しく実行されたことは確かである。そのため、トランザクションが首尾よく実行され、次のシステム起動時には、更新されたLDBが「新」メモリ位置から読み込まれることを確実に宣言できる。この場合、それら物理メモリ位置全てが以下の3つの判定基準を満たす場合はダーティ(更新済み)という判定が付される。3つの判定基準とは以下の通りである。
【0052】
・それらLDB識別子フィールドの値が他の(新)物理メモリ位置の対応フィールドにも出現する。
・それら状態インジケータフィールドの値が「有効」の状態を示す。
・同一のLDB識別子を有する他の(新)物理メモリ位置のトランザクション識別子フィールドに現れるトランザクション識別子が、起動中のトランザクション識別子に割り当てられたメモリ位置に出現することはない。
【0053】
さらに、それら物理メモリ位置全てが以下の2つの判定基準を満たす場合は有効という判定が付される。2つの判定基準とは以下の通りである。
・それら状態インジケータフィールドの値が「トランザクション書込み済み」の状態を示す。
・それらトランザクション識別子フィールドに現れるトランザクション識別子が、起動中のトランザクション識別子に割り当てられたメモリ位置に出現することはない。
【0054】
それらトランザクション識別子フィールドに記憶される同一のTIDが次回に起動されるか、あるいはこれら特定ブロックが新規更新処理を受けるかの何れかの状態になるまで、「トランザクション書込み済み」ブロックを「有効」に変更する上記ステップを延期することができる。
【0055】
システムがステップ710を実行している間に致命的なエラーが発生すればどうなるかを分析するにあたり、図5(a)及び(b)に関連して説明したフェイルセーフ原子的更新処理の説明に触れる必要がある。そこで、予期せぬ故障からの復旧のためのルールを付与したので、ほとんどの場合、不確定性が派生する可能性はない。しかしながら、新旧物理メモリ位置が共に有効として示されていて、それら新旧いずれかのメモリ位置を無作為に選択するような場合に限り、致命的エラーの瞬間にフラッシュメモリが置かれている状態を判断し、次回の起動時に中断されたトランザクションを後退復帰させるか、あるいはコミット(確定)するかの選択肢を決定することができない。LDB#Tを更新する場合、このような「有効+有効」の状況においては、例えば、そこに記憶されているトランザクション識別子の数が少ない(多い)メモリ位置を常時選択することにより、ステップ710が終了したと解釈される可能性がより高く(低く)なると規定できる。本願の優先日時点において、上記偶発性を排除すべくLDB#T更新処理の一部として周期的インジケータを使用することが最も有効な方法だと考えられる。
【0056】
次に、本発明が並列トランザクションにも利用可能であることを述べる。トランザクション処理の基本原理の1つに、2つの並列トランザクションが全く同一の論理データ領域を並行して(パラレルに)更新することができないということがある。しかしながら、トランザクションのコミット段階が連続して(シリアルに)発生する限り、すなわち、並列トランザクションの一方がコミット段階にない場合のみ並列トランザクションの他方のコミット段階が始まるような場合に限り、2つ以上の並列トランザクションは、LDBのオーバーラップしていない部分を並行して(パラレルに)更新することができる。
【0057】
説明を簡潔にするため、単一LDBについての並列トランザクションの結果についてだけ述べる。とは言っても、多数のLDBを更新する場合に並列トランザクションを適用することを除外するものではない。以下、そのような場合をも網羅すべく平易に一般化して説明する。
【0058】
図8、9、および10は、フラッシュメモリを用いて並列トランザクションを実行するための装置及び方法を示す。図8において、旧物理メモリ位置800、複数の新物理メモリ位置及び複数の揮発性(RAM)メモリバッファが示されている。並列トランザクションを処理するために、単一のLDBに影響を及ぼす並列トランザクションと同数の新物理メモリ位置及び揮発性メモリバッファを備えると都合がよい。ここで、並列トランザクションの数が3であり、3つの新物理メモリ位置810、820及び830と、3つの揮発性メモリバッファ841、842及び843とが存在するとする。この3つの並列トランザクションは、それぞれトランザクション識別子TID#A、TID#B及びTID#Cに関連付けられる。一般的に、正の整数Nによって並列トランザクション数は示される。LDBの構成は上記と同一である。すなわち、LDBヘッダ部には、LDB識別子用のフィールド、LDB状態インジケータ用のフィールド、そしてトランザクション識別子用のフィールドがある。ここで、並列更新の対象となるLDBをLDB#Xとする。ここで、並列トランザクションの実行開始時のTIDフィールドの内容は問題にならないので、それをTID#?で示すとする。
【0059】
ただし、並列トランザクションがかなり異なった時間に起動され、そのうちの一部が比較的早期に完了となってそれらに割り当てられていたリソースが開放されるような場合には、並列トランザクションと同数の新物理メモリ位置及び揮発性メモリバッファを揃えるという必要条件を消去することができる。同様に、揮発性メモリバッファのサイズも、各揮発性メモリバッファが、この揮発性メモリバッファを用いる特定トランザクションが更新処理できるデータビットを入れられるだけの大きさに最適化される。特に、揮発性メモリバッファは、更新すべきLDBのヘッダフィールド用の格納空間を備える必要がなく、この事は図面上にて対応部分を破線で描くことにより強調されている。実際には、更新処理の過程で新データが旧データにとって代わる各ステップ毎に新しいメモリ位置を用いるようにすれば、揮発性メモリバッファが全く無かったとしてもトランザクションを実現させる事は可能である。しかしながら、このような「新規から新規への」更新は、データが論理フラッシュメモリ装置から比較的大きなブロックにある揮発性作業メモリ領域に読み込まれ、全ての更新処理が揮発性作業メモリ領域にて行われ、更新されたブロックが再びフラッシュに書き込まれるといった場合のソリューションに比べ、通常かなり非効率なものとなる。
【0060】
LDB#Xの未更新コピー内にあり、あるトランザクションTID#iが更新可能なデータビットがi1(i=A,B,C)とマークされる。ここで、並列トランザクションがほぼ同時に開始されるとする。しかし、これは拘束条件ではなく、一方のトランザクションが、他方が開始される前にかなり長い時間先に進んでいたとしても差し支えない。この例で、並列トランザクション処理は、起動中のトランザクション識別子850のメモリ位置にトランザクション識別子TID#A、TID#B及びTID#Cを書き込むことによって始まる。そして、データの更新は、旧物理メモリ位置800からLDB#Xを読み出し、割り当てられた全ての揮発性メモリバッファ841、842及び843に読み込むことによって始まる。図9(a)は読込み動作後の状態を示す。この段階では、トランザクションが同時に開始された状態なので、まだ更新処理はなされていない。
【0061】
並列トランザクション中の各トランザクションは、揮発性メモリバッファの1つに関連付けられたデータ区間だけを更新できる。そこで、TIDA#がバッファ841のAビットを更新し、TID#Bがバッファ842のBビットを更新し、TID#Cがバッファ843のCビットを更新すると仮定する。この時、新物理メモリ位置810、820及び830の内容には何の変化も無い。
【0062】
図9(b)は、並列トランザクションのうちで最速のトランザクション(例えば、TID#A)が、対応する揮発性メモリバッファ841で実行されるべき全ての更新処理を終了したばかりの状態を示す。ここでは、全A1ビットが更新済みA2ビットに置き換えられている。そして、その揮発性メモリバッファの内容は、単一トランザクションに関連して前述した方法ステップに従って、対応する新フラッシュメモリ位置810に書き込まれる。すなわち、図9(b)は、状態識別子を「未使用」から「書込み済み」に変更し、LDB識別子LDB#X及びトランザクション識別子TID#Aをしかるべきヘッダフィールドに書き込むことによって、書込み動作がどのようにして開始したかを示している。
【0063】
図9(c)は、第1の揮発性メモリバッファ841の内容がどのようにして対応する新フラッシュメモリ位置810に書き込まれたかを示す。つけ加えて言えば、図9(c)は並列トランザクション処理の重要な一部をなす1ステップを示しており、そこでは、第1のトランザクションによってなされる更新A1→A2が、他の揮発性メモリバッファ842及び843にもコピーされる。そして、完了した新フラッシュメモリ位置810の状態識別子が「書込み済み」から「トランザクション書込み済み」に変更される。
【0064】
図9(d)は、並列トランザクション処理におけるさらなる2つの展開ステップを示す。ここでは、起動中のトランザクション識別子850のメモリ位置から完了したトランザクションTID#Aの識別子を除去し、旧物理メモリ位置800の状態インジケータを「有効」から「ダーティ(更新済み)」に変更し、完了した新物理メモリ位置の状態インジケータを「トランザクション書込み済み」から「有効」に変更することによって、この完了トランザクションTID#Aがコミット(確定)される。同時に、二番目に速いトランザクションTID#Bは揮発性バッファ842での更新が全てなされた段階に達し、状態識別子を「未使用」から「書込み済み」に変更し、LDB識別子LDB#X及びトランザクション識別子TID#Bをしかるべきヘッダフィールドに書き込むことによって対応するフラッシュメモリ位置820への書込みを開始する。
【0065】
図10(a)及び(b)は、図9(c)及び(d)にそれぞれ示したステップの繰返しを示すが、各図の状態に固有の例外は以下の通りである。
・図10(a)において、第2のフラッシュメモリ位置820への書込みが終了となり、B1→B2の更新が残りの揮発性メモリバッファにコピーされる(ここで、括弧でくくられたバッファ841がこの段階で最も有効に割当て解除されている)。
・図10(b)において、トランザクションTID#Bがコミット(確定)され、(既に有効となっている物理メモリ位置810をダーティ(更新済み)にし、)第3のフラッシュメモリ位置830への書込みが始まるように、最後のトランザクションTID#Cが揮発性メモリバッファ843における更新を終了する。
【0066】
図10(c)は図10(a)に示したステップの繰り返しを示すが、それ固有の例外として、第3のフラッシュメモリ位置830への書込みが終了となっても、他の全ての揮発性メモリバッファがこの段階で最も有効に割当て解除されているので、C1→C2の更新が他のいずれの揮発性メモリバッファにもコピーされることはない。図10(d)においては、識別子TID#Cを起動中のトランザクション識別子850のメモリ位置から除去し、対応する識別子を「トランザクション書込み済み」から「有効」に変更し、既に有効となっている物理メモリ位置820を「ダーティ(更新済み)」とマークすることにより、完了したトランザクションTID#Cがコミット(確定)される。
【0067】
原子的更新処理に関して先述したように、LTPTLテーブルを更新してLDBの最新有効コピーを指し示すステップの位置は重要ではないが、前記最新有効コピーがフラッシュメモリに書き込まれた後、かつ、無効の旧コピーが削除される前に位置づけされるのが最も有効である。
【0068】
上述した手順がトランザクション処理の原則に準拠しているかは、並列トランザクションのコミット段階を個別に分析することにより容易に確認できる。最終的なシステムエラー以前に起動中のトランザクション識別子850のメモリ位置から識別子が削除されたトランザクションは、次のシステム起動時にもコミット(確定)された状態のままとなる。なぜなら、それらトランザクションによって更新されたデータを有するフラッシュメモリ位置が「有効」状態で検出されるためである。そして、識別子が未だ起動中として記憶されているそれらトランザクション全てを後退復帰させる。
【0069】
本発明の実施形態のこれまでの説明においては、論理フラッシュメモリ装置から旧LDBを読み出すステップの後、かつ、全面的に更新された新バージョンをフラッシュに書き込む前に、データの全更新処理が揮発性の作業メモリ領域において実行されるものと仮定してきた。以下では、完全を期して、本発明の他の実施形態を図11(a)から(f)を参照して説明する。この実施形態においては、フラッシュメモリに対する書込み動作として、いわゆる連鎖式書込み動作が用いられる。説明を簡略化するために、単一で非並列型のトランザクションについてのみ検討するが、同一の原理が並列トランザクションにも適していると考えて差し支えない。
【0070】
図11(a)は、起動段階における旧物理メモリ位置1000と、2つの新物理メモリ位置1010、1020とを示す。この起動段階では、最初の更新時に先頭のデータから揮発性作業メモリ領域(図示せず)への読み込みが行われる。そして、図11(b)に示すステップにおいて、TID#Yとして知られたトランザクションによってなされる最初の更新処理が準備完了状態となり、部分的に更新されているLDBの第1の新物理メモリ位置1010への書込み動作が始まる。ここで再び、ヘッダフィールドが先ず書き込まれ、その状態インジケータの値が「書込み済み」になると仮定する。次いで、図11(c)に示すステップにおいて、部分的に更新されたコピーの書込みが終了し、その状態インジケータが「トランザクション書込み済み」に変更される。同時に、第2の更新処理が終了に近づいて、第2の新物理メモリ位置1020への書込みが始まる。
【0071】
図11(d)は、完全に更新されたコピーの書込みが終了し、その状態インジケータも「トランザクション書込み済み」に変更されるステップを示す。図11(e)は、このトランザクションがコミット(確定)されずにいる内に、部分的に更新されたバージョンのうちで古い方の状態インジケータがどのようにして「ダーティ(更新済み)」に変更されるかを示す。そして、次のステップで、起動中のトランザクション識別子(図示せず)のメモリ位置からTID#Yを除去することにより、このトランザクションのコミット処理が行われる。このコミット処理は、ただ1つの更新バージョンのデータが「トランザクション書込み済み」の状態に置かれている段階で実行されなければならない。なぜならば、多数の更新バージョンがコミットされずに残されると、システムエラーがコミット処理の直後に発生した場合、その状態におかれた多数の更新バージョンが次の起動時における曖昧さの原因となってしまうからである。そして、図11(f)に示す最終ステップにおいて、第2の新物理メモリ位置1020が現在有効データを有し、その他の物理メモリ位置がダーティ(更新済み)となるように状態インジケータの更新がなされる。
【0072】
なお、連鎖式書込み操作の場合に、物理メモリ位置の状態インジケータを変更する順番は、他にもいくつか代わりの順番が考えられる。例えば、第2の新物理メモリ位置1020への書込みが始まる前であっても、第1の新物理メモリ位置1010における部分的に更新されたコピーの状態を「ダーティ(更新済み)」に変更することができる。すなわち、この場合、図11(c)における状態インジケータは、上から下へ、V、D及びWの順であって、かつ、続く全ステップにおいて第1の新物理メモリ位置が「ダーティ(更新済み)」のままとなる。他の可能性としては、第2の新物理メモリ位置1020への書込みが始まった後、しかしその状態が「書込み済み」から「トランザクション書込み済み」に変更される前に、第1の新物理メモリ位置1010において部分的に更新されたコピーの状態を「ダーティ(更新済み)」に変更することも考えられる。すなわち、第1の新物理メモリ位置が、図11(d)、(e)及び(f)において「ダーティ(更新済み)」になることを意味する。
【0073】
並列トランザクションと関連して前述した一般的手法は、連鎖式書込み操作の処理法の無駄を省くのに役立つRAM搭載のフラッシュメモリ書込みキャッシュを実装するのに利用できる。これは、トランザクションTID#XがLDB#Xを最初に更新している時には何時でも、LDBD#Xのフラッシュコピーが既にRAMに読み込まれていて、部分的に更新されたバージョンがキャッシュにしか書き込まれない事を意味する。すなわち、現在同一のLDBを更新している他のトランザクションが無かったとしても、データはフラッシュメモリからRAMバッファに読み込まれる。このLDBを他のトランザクションが同時に更新した場合には、並列トランザクション処理のプロセスが直接適用される。1つのトランザクション実行中であるがそのコミット段階の前に行われる書込みキャッシュ処理は、データの保全性(整合性)の観点から見て安全である。特に、トランザクションのコンテキストにおいて、LDBに対してなされる通常の更新がほんの1ビットか1バイト分だけの場合、上記書込みキャッシュ処理はファイルシステムの処理能力を著しく向上させることができる。
【0074】
図12は本発明の他の実施形態に関わる装置構成1100の概略を示す。ここで、フラッシュメモリ1101は、読取り書込み部1103を介して作業領域RAM1102に連結されている。読取り書込み部1103は二者間で実際のデータ転送を実行し、アドレスマッピングブロック1104を用いて論理データブロック識別子をフラッシュの物理メモリ位置に対してマッピングする。そして、プログラム実行ブロック1105がメモリ1106から読み込まれた、および/または、入出力インターフェース1107を介して得られた指示を実行することによりその動作を制御する。バックグラウンドクリーンアップ部1108はフラッシュメモリ1101の状態を既知の方法で維持する。
【0075】
上述した本発明の好適実施形態は、他の形態や代わりの実施形態に対する本発明の適用性に制限を加えるものであってはならず、それら他の形態も前述の説明に鑑みて添付の特許請求の範囲内に入ることは当業者にとって明らかである。例えば、トランザクション識別子が更新されたLDBと共にフラッシュメモリに記憶されると述べてあったとしても、その更新LDBをあるトランザクション識別子に明確に関連づける他の更新LDB値と共に記憶しても同様の結果を得ることができる。
【図面の簡単な説明】
【図1】 従来のファイルシステム更新を示す。
【図2】 フラッシュメモリにおける既知の階層概念を示す。
【図3】 既知のアドレス変換層を示す。
【図4】 既知のデータ更新方法を示す。
【図5】 (a)はフェイルセーフ原子的更新動作のための装置を示し、(b)はフェイルセーフ原子的更新動作のための方法を示す。
【図6】 本発明に関連して使用可能なデータブロック構成を示す。
【図7】 フラッシュメモリ・トランザクションを実行する方法を示す。
【図8】 並列フラッシュメモリ・トランザクションを実行する構成を示す。
【図9】 (a)から(d)は並列フラッシュメモリ・トランザクションを実行する方法を示す。(その1)
【図10】 (a)から(d)は並列フラッシュメモリ・トランザクションを実行する方法を示す。(その2)
【図11】 (a)から(f)は連鎖式書込操作でフラッシュメモリ・トランザクションを実行する方法を示す。
【図12】 本発明の1つの実施形態による装置を示す。
Claims (22)
- 少なくとも1回の更新操作を実行することによって、第1ブロックのデジタルデータ(601)を更新する方法であって、前記更新操作は全体として成功あるいは失敗となり、前記更新する方法において、
前記第1ブロックのデジタルデータに対する前記更新操作であって、全体として成功あるいは失敗となる前記更新操作の全てに共通する第1のトランザクション識別子(TID)を活性化するステップ(701)と、
前記第1ブロックのデジタルデータに対する前記更新操作であって、全体として成功あるいは失敗となる前記更新操作の全てを実行するステップ(703)と、
論理フラッシュメモリ装置(1101)内のメモリ位置の状態インジケータを前記メモリ位置に対して書込み処理が行われていることを示す値に設定するステップ(704)と、
更新された前記第1ブロックのデジタルデータを前記第1のトランザクション識別子に関連づける値と共に、前記更新された第1ブロックのデジタルデータを前記論理フラッシュメモリ装置(1101)の前記メモリ位置に記憶するステップ(707)と、
前記状態インジケータを前記メモリ位置に対して書込み済みであることを示す値に設定するステップ(708)と、
前記第1のトランザクション識別子を非活性化するステップ(710)とをこの順番通りに備えることを特徴とする方法。 - 請求項1に記載の方法において、
第1のトランザクション識別子を活性化する前記ステップ(701)が、活性化されたトランザクション識別子のメモリ位置に割り当てられた不揮発性メモリ位置(850)に前記第1のトランザクション識別子を記憶するサブステップを備えることを特徴とする方法。 - 請求項2に記載の方法において、
第1のトランザクション識別子を活性化する前記ステップ(701)が、
a)活性化されたトランザクション識別子のメモリ位置に割り当てられた第1の不揮発性メモリ位置(501)の内容のコピーを作業領域メモリ(503)に読み込むサブステップ(551)と、
b)活性化されるべき第1のトランザクション識別子(604)と共に前記作業領域メモリ(503)に読み込まれるコピーを補い完全なものにして更新コピーを生成するサブステップ(552)と、
c)第2の不揮発性メモリ位置(502)の状態インジケータ(522)を、前記メモリ位置に対して書込処理が行われていることを示す第1の値に設定するサブステップ(553)と、
d)前記第2の不揮発性メモリ位置(502)のデータブロック識別子(521)が、前記第1の不揮発性メモリ位置(501)の対応するデータブロック識別子(511)と同一になるように設定を行うサブステップ(554)と、
e)前記更新コピーを前記第2の不揮発性メモリ位置(502)に書き込むサブステップ(555)と、
f)前記第2の不揮発性メモリ位置(502)の前記状態インジケータ(522)を、前記メモリ位置が有効データを含むことを示す第2の値に設定するサブステップ(556)と、
g)アドレスマッピング実体を更新し、前記第2の不揮発性メモリ位置(502)の前記データブロック識別子(521)を前記第2の不揮発性メモリ位置(502)の物理アドレスに関連付けるサブステップ(557)と、
h)前記第1の不揮発性メモリ位置(501)の状態インジケータ(512)を、前記メモリ位置が無効データを含んでいることを示す第3の値に設定するサブステップとからなることを特徴とする方法。 - 請求項3に記載の方法において、
前記サブステップe)が、前記更新済みのコピーと共に、前記第1の不揮発性メモリ位置(501)の対応する周期的インジケータ値から1だけ進んだ周期的インジケータ値を前記第2の不揮発性メモリ位置(502)に書き込むサブステップを備えることを特徴とする方法。 - 請求項2に記載の方法において、
前記第1のトランザクション識別子を非活性化する前記ステップ(710)が、活性化しているトランザクション識別子のメモリ位置に割り当てられた前記不揮発性メモリ位置(850)から前記第1のトランザクション識別子を削除するサブステップを備えることを特徴とする方法。 - 請求項5に記載の方法において、
前記第1のトランザクション識別子を削除する前記サブステップが、
a)活性化されているトランザクション識別子のメモリ位置に割り当てられた第2の不揮発性メモリ位置(502)の内容のコピーを作業領域メモリ(503)に読み込むサブステップ(551)と、
b)非活性化されるべき第1のトランザクション識別子を作業領域メモリ(503)に読み込まれたコピーから削除して更新コピーを生成するサブステップ(552)と、
c)第3の不揮発性メモリ位置の状態インジケータを、前記メモリ位置に対して書込みが行われていることを示す第1の値に設定するサブステップ(553)と、
d)前記第3の不揮発性メモリ位置のデータブロック識別子が、前記第2の不揮発性メモリ位置(502)の対応するデータブロック識別子と同一になるように設定を行うサブステップ(554)と、
e)前記更新コピーを前記第3の不揮発性メモリ位置に書き込むサブステップ(555)と、
f)前記第3の不揮発性メモリ位置の前記状態インジケータを、前記メモリ位置が有効データを含むことを示す第2の値に設定するサブステップ(556)と、
g)アドレスマッピング実体を更新し、前記第3の不揮発性メモリ位置の前記データブロック識別子を前記第3の不揮発性メモリ位置の物理アドレスに関連付けるサブステップ(557)と、
h)前記第2の不揮発性メモリ位置(502)の状態インジケータ(522)を、前記メモリ位置が無効データを含んでいることを示す第3の値に設定するサブステップ(558)とからなることを特徴とする方法。 - 請求項6に記載の方法において、
前記サブステップe)が、前記更新コピーと共に、前記第2の不揮発性メモリ位置(502)の対応する周期的インジケータ値から1だけ進んだ周期的インジケータ値を前記第3の不揮発性メモリ位置に書き込むサブステップを備えることを特徴とする方法。 - 請求項2に記載の方法において、
前記第1のトランザクション識別子を非活性化する前記ステップ(710)が、前記第1のトランクザクション識別子を非活性化中のトランザクション識別子のメモリ位置に割り当てられた不揮発性メモリ位置に記憶するサブステップを備えることを特徴とする方法。 - 請求項1に記載の方法において、
更新操作を実行し、更新した第1ブロックのデジタルデータを記憶する前記ステップが、
a)更新されるデータのメモリ位置に割り当てられた第1の不揮発性メモリ位置の内容のコピーを作業領域メモリに読み込むサブステップ(702)と、
b)前記作業領域メモリに読まれたコピーを更新して更新コピーを生成するサブステップ(703)と、
c)第2の不揮発性メモリ位置の状態インジケータを、前記メモリ位置に対して書込みが行われていることを示す第1の値に設定するサブステップ(704)と、
d)前記第2の不揮発性メモリ位置のデータブロック識別子が、前記第1の不揮発性メモリ位置の対応するデータブロック識別子と同一になるように設定を行うサブステップ(705)と、
e)前記活性化された第1のトランザクション識別子を前記第2の不揮発性メモリ位置に書き込むサブステップ(706)と、
f)前記更新コピーを前記第2の不揮発性メモリ位置に書き込むサブステップ(707)と、
g)前記第2の不揮発性メモリ位置の前記状態インジケータを、前記メモリ位置が、一貫して成功あるいは失敗となる複数の更新操作の一部として更新されたデータを含むことを示す第2の値に設定するサブステップ(708)と、
h)一貫して成功あるいは失敗となる前記複数の更新操作の全てが実行されたかどうかをチェックし、全てが実行されていない場合、前記ステップa)からの処理を再び開始し、前記ステップc)、d)、e)、f)及びg)において、異なる第2の不揮発性メモリ位置を関係させるサブステップ(709)とからなることを特徴とする方法。 - 請求項9に記載の方法において、
i)アドレスマッピング実体を更新し、不揮発性メモリ位置の各データブロック識別子を前記不揮発性メモリ位置の物理アドレスに関連付けるサブステップ(711)と、
j)前記サブステップa)の対象であった各不揮発性メモリ位置の状態インジケータを、前記メモリ位置が無効データを含んでいることを示す第3の値に設定するサブステップ(712)と、
k)各第2の不揮発性メモリ位置の前記状態インジケータを、前記メモリ位置が有効データを含むことを示す第4の値に設定するサブステップ(713)とをさらに備えることを特徴とする方法。 - 請求項1に記載の方法において、
一貫して成功あるいは失敗となる更新操作全てに共通する第1のトランザクション識別子を活性化する前記ステップ(701)と、前記第1のトランザクション識別子を非活性化する前記ステップ(710)との間のステップとして、
前記第1ブロックのデータに関係する前記更新操作と共に、一貫して成功あるいは失敗となり、前記第1ブロックのデータ以外の他のブロックのデータに関係する更新操作を実行するステップ(703)と、
各更新ブロックのデータを前記第1のトランザクション識別子に関連付ける値と共に、各更新ブロックのデジタルデータを論理フラッシュメモリ装置に記憶するステップ(707)とをさらに備えることを特徴とする方法。 - 請求項1に記載の方法において、
一貫して成功あるいは失敗となり、前記第1ブロックのデータに関係する更新操作の全てを実行する前記ステップが、前記第1のトランザクション識別子(TID#A)に関係する更新操作の対象として第1ブロックのデータの第1の部分(A1)を選択するサブステップを備えることを特徴とする方法。 - 請求項12に記載の方法において、
前記第1ブロックのデータ(800)に関係すると共に、一貫して成功あるいは失敗となるが、前記第1のトランザクション識別子(TID#A)に関連した更新操作に関して必ずしも一貫して成功あるいは失敗となる必要のない複数の更新操作に共通する第2のトランザクション識別子(TID#B)を活性化するステップと、
前記第2のトランザクション識別子(TID#B)に関連する更新操作の対象として、前記第1の部分(A1)と重ならない前記第1ブロックのデータの第2の部分(B1)を選択するステップと、
前記第1ブロックのデータに関係し、前記第2のトランザクション識別子(TID#B)に関連付けられると共に、一貫して成功あるいは失敗となる更新操作全てを実行するステップと、
前記第1のトランザクション識別子(TID#A)の1つに関連付けられると共に、前記第2のトランザクション識別子(TID#B)に関連付けられた更新操作の前に完了する更新操作の更新結果(A2)を、前記第2のトランザクション識別子に関連付けられた更新操作の作用を受けるデータブロックのコピーに転送するステップと、
前記更新された第1ブロックのデータを前記第2のトランザクション識別子(TID#B)に関連付ける値と共に、前記更新された第1ブロックのデジタルデータを論理フラッシュメモリ装置に記憶するステップと、
前記第2のトランザクション識別子(TID#B)を非活性化するステップとをさらに備えることを特徴とする方法。 - 請求項13に記載の方法において、
前記更新された第1ブロックのデータを前記第1のトランザクション識別子(TID#A)に関連付ける値と共に、前記更新された第1ブロックのデジタルデータを論理フラッシュメモリ装置に記憶するステップと、前記更新された第1ブロックのデータを前記第2のトランザクション識別子(TID#B)に関連付ける値と共に、前記更新された第1ブロックのデジタルデータを論理フラッシュメモリ装置に記憶するステップとが、
a)第1の不揮発性メモリ位置(810)の状態インジケータを、前記メモリ位置に対して書込みが行われていることを示す第1の値(W)に設定するサブステップと、
b)前記第1のトランザクション識別子(TID#A)の1つに関連付けられ、前記第1のトランザクション識別子の他の1つに関連した更新操作の前に完了する更新操作によって生じた更新コピーを、前記第1の不揮発性メモリ位置(810)に書込むサブステップと、
c)前記サブステップb)で書き込まれた更新コピーを生成した更新操作に関連する第1のトランザクション識別子(TID#A)を、前記第1の不揮発性メモリ位置(810)に書込むサブステップと、
d)前記第1の不揮発性メモリ位置(810)の前記状態インジケータを、前記メモリ位置が、一貫して成功あるいは失敗となる複数の更新操作の一部として更新されたデータを含むことを示す第2の値(T)に設定するサブステップと、
e)前記サブステップb)で書き込まれた更新コピーを生成した更新操作に関連する第1のトランザクション識別子(TID#A)を非活性化するサブステップと、
f)そこから更新処理の対象としてのブロックデータがとられた前記不揮発性メモリ位置(800)の状態インジケータを、前記メモリ位置が無効なデータを含んでいることを示す第3の値(D)に設定するサブステップと、
g)第1の不揮発性メモリ位置(810)の前記状態インジケータを、前記メモリ位置が有効データを含むことを示す第4の値(V)に設定するサブステップと、
h)第2の不揮発性メモリ位置(820)の状態インジケータを、前記メモリ位置に対して書込みが行われていることを示す第1の値(W)に設定するサブステップと、
i)前記第2のトランザクション識別子(TID#B)の中で活性化中の残りの1つに関連付けられた更新操作によって生成された更新コピーを前記第2の不揮発性メモリ位置(820)に書込むサブステップと、
j)前記サブステップi)で書込まれた更新コピーを生成した更新操作に関連する第2のトランザクション識別子(TID#B)も前記第2の不揮発性メモリ位置(820)に書き込むサブステップと、
k)前記第2の不揮発性メモリ位置(820)の前記状態インジケータを、前記メモリ位置が、一貫して成功あるいは失敗となる複数の更新操作の一部として更新されたデータを含むことを示す第2の値(T)に設定するサブステップと、
l)前記サブステップi)で書き込まれた更新コピーを生成した更新操作に関連する第2のトランザクション識別子(TID#B)を非活性化するサブステップと、
m)前記第1の不揮発性メモリ位置(810)の前記状態インジケータを、前記メモリ位置が無効なデータを含んでいることを示す第3の値(D)に設定するサブステップと、
n)前記第2の不揮発性メモリ位置(820)の前記状態インジケータを、前記メモリ位置が有効データを含むことを示す第4の値(V)に設定するサブステップとを備えることを特徴とする方法。 - 請求項1に記載の方法において、論理フラッシュメモリ装置に基づくファイルシステムでシステム故障から復旧する方法が、
活性化されているトランザクション識別子のリスト(850)から、前記システム故障が発生した時に何れのトランザクション識別子が活性化されているかをチェックするステップと、
前記システム故障発生時に活性化されていた1つのトランザクション識別子に関連付ける値を含むデータブロックの位置を見つけるために物理メモリ位置をチェックし、そのようなデータブロックを含む各不揮発性メモリ位置の状態インジケータを前記メモリ位置が無効データを含むことを示す値に設定するステップとからなることを特徴とする方法。 - 請求項15に記載の方法において、
同一のデータブロック識別子(602)がデータブロック対内の各データブロックに出現し、
前記データブロック対内のどのデータブロックも前記システム故障発生時に活性化されていた1つのトランザクション識別子に関連付けられず、
前記データブロック対内の第1ブロックのデータが、前記メモリ位置が有効データを含むことを示す状態インジケータ(603)を有するメモリ位置に記憶され、
前記データブロック対内の第2ブロックのデータが、前記メモリ位置が一貫して成功あるいは失敗となる複数の更新操作の一部として更新されたデータを含むことを示す状態インジケータ(603)を有するメモリ位置に記憶される、データブロック対の位置を見つけるために、物理メモリ位置をチェックするステップと、
1対のデータブロック内の第1ブロックのデータを含む各不揮発性メモリ位置の状態インジケータ(603)を、前記メモリ位置が無効データを含むことを示す値(D)に設定するステップと、
1対のデータブロック内の第2ブロックのデータを含む各不揮発性メモリ位置の状態インジケータ(603)を、前記メモリ位置が有効データを含むことを示す値(V)に設定するステップとを含むことを特徴とする方法。 - 請求項15に記載の方法において、
前記システム故障発生時に活性化されていた1つのトランザクション識別子に関連付けられてなく、
メモリ位置が一貫して成功あるいは失敗となる複数の更新操作の一部として更新されたデータを含むことを示す状態インジケータ(603)を有する前記メモリ位置に記憶される、データブロックの位置を見つけるために物理メモリ位置をチェックするステップと、
そのようなデータブロックを含む各不揮発性メモリ位置の状態インジケータ(603)を、前記メモリ位置が有効データを含むことを示す値(V)に設定するステップとを含むことを特徴とする方法。 - 請求項15に記載の方法において、
活性化されているトランザクション識別子(850)のリストから、システム故障発生時に何れのトランザクション識別子が活性化されていたかをチェックする前記ステップが、
a)活性化されているトランザクション識別子のリスト及びそのメモリ位置が有効データを含むことを示す状態インジケータを有する、論理フラッシュメモリ装置の全ての不揮発性メモリ位置を発見するサブステップと、
b)1つの不揮発性メモリ位置だけが前記サブステップa)で発見された場合、前記メモリ位置に含まれる活性化されているトランザクション識別子のリストを、活性化されているトランザクション識別子の有効リストとして選択するサブステップと、
c)1つ以上の不揮発性メモリ位置が前記サブステップa)で発見された場合、前記発見された不揮発性メモリ位置の1つに含まれる活性化されているトランザクション識別子リストを、活性化されているトランザクション識別子の有効リストとして選択するサブステップとからなることを特徴とする方法。 - 請求項18に記載の方法において、
前記サブステップc)が、
c1)前記発見された各不揮発性メモリ位置から周期的インジケータの値を読み出すサブステップと、
c2)周期的インジケータの最高値に関連付けられる活性化されているトランザクション識別子の有効リストとして、前記発見された不揮発性メモリ位置に含まれる活性化されているトランザクション識別子リストを選択するサブステップとからなることを特徴とする方法。 - 少なくとも1回の更新操作を実行することにより第1ブロックのデジタルデータを更新する装置であって、前記更新操作は全体として成功あるいは失敗となり、前記装置は、
論理フラッシュメモリ装置(1101)と、
前記第1ブロックのデジタルデータに対する前記更新操作であって、全体として成功あるいは失敗となる前記更新操作の全てに共通する第1のトランザクション識別子を活性化する手段(1102、1103、1104及び1105)と、
前記第1ブロックのデジタルデータに対する前記更新操作であって、全体として成功あるいは失敗となる前記更新操作の全てを実行する手段(1102、1103,1104,1105)と、
更新された前記第1ブロックのデジタルデータを前記第1のトランザクション識別子に関連付ける値と共に、前記更新された第1ブロックのデジタルデータを前記論理フラッシュメモリ装置(1101)に記憶する手段(1102、1103,1104,1105)と、
前記第1のトランザクション識別子を非活性化する手段(1102、1103,1104,1105)とからなり、
前記更新された第1ブロックのデジタルデータを前記論理フラッシュメモリ装置に記憶する手段(1102、1103、1104、1105)は、
前記論理フラッシュメモリ装置(1101)内のメモリ位置の状態インジケータを前記メモリ位置に対して書込み処理が行われていることを示す値に設定し、
前記第1のトランザクション識別子を非活性化する前に、前記状態インジケータを前記メモリ位置に対して書込み済みであることを示す値に設定するように構成されることを特徴とする装置。 - 請求項20に記載の装置において、
前記論理フラッシュメモリ装置(1101)が、物理的に分離した少なくとも2つのメモリ装置からなり、前記少なくとも2つのメモリ装置が論理的に一体となるメモリ装置を構成することを特徴とする装置。 - 請求項21に記載の装置において、
前記物理的に分離した少なくとも2つのメモリ装置が、固体フラッシュメモリと磁気ディスクドライブとを含むことを特徴とする装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FI19992308 | 1999-10-26 | ||
FI992308A FI109620B (fi) | 1999-10-26 | 1999-10-26 | Menetelmä ja järjestely atomaaristen päivitysten toteuttamiseksi loogista flashmuistilaitetta käyttäen |
PCT/FI2000/000921 WO2001031458A1 (en) | 1999-10-26 | 2000-10-25 | Method and arrangement for performing atomic updates using a logical flash memory device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003513357A JP2003513357A (ja) | 2003-04-08 |
JP5160006B2 true JP5160006B2 (ja) | 2013-03-13 |
Family
ID=8555501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001533526A Expired - Fee Related JP5160006B2 (ja) | 1999-10-26 | 2000-10-25 | 論理フラッシュメモリ装置を用いて原子的更新を実行する方法および装置 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7254592B1 (ja) |
EP (1) | EP1224558B1 (ja) |
JP (1) | JP5160006B2 (ja) |
CN (1) | CN1179281C (ja) |
AT (1) | ATE340387T1 (ja) |
AU (1) | AU7929100A (ja) |
DE (1) | DE60030872T2 (ja) |
FI (1) | FI109620B (ja) |
WO (1) | WO2001031458A1 (ja) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1276116B1 (de) * | 2001-07-12 | 2008-09-10 | Siemens Aktiengesellschaft | Verfahren zur Speicherung zusammengehöriger Datensätze |
FR2838536B1 (fr) * | 2002-04-16 | 2005-06-24 | A S K | Procede de modification des donnees d'une carte a memoire lors d'une transaction |
KR100453053B1 (ko) * | 2002-06-10 | 2004-10-15 | 삼성전자주식회사 | 플래쉬 메모리용 파일 시스템 |
US8942834B2 (en) | 2005-06-27 | 2015-01-27 | Rockwell Automation Technologies, Inc. | Method and apparatus for communicating transactions between an industrial controller and a programming interface |
FI120220B (fi) * | 2006-06-08 | 2009-07-31 | Tellabs Oy | Menetelmä ja järjestely transaktioiden käsittelemiseksi flash-tyyppisessä muistivälineessä |
US7647454B2 (en) | 2006-06-12 | 2010-01-12 | Hewlett-Packard Development Company, L.P. | Transactional shared memory system and method of control |
US20070300013A1 (en) * | 2006-06-21 | 2007-12-27 | Manabu Kitamura | Storage system having transaction monitoring capability |
US7650458B2 (en) | 2006-06-23 | 2010-01-19 | Microsoft Corporation | Flash memory driver |
KR100809319B1 (ko) * | 2006-09-13 | 2008-03-05 | 삼성전자주식회사 | 플래시 메모리에서 연속한 섹터 쓰기 요청에 대해 원자성을제공하는 장치 및 방법 |
JP4468407B2 (ja) * | 2007-05-14 | 2010-05-26 | フェリカネットワークス株式会社 | データ管理システム、管理サーバ、データ管理方法、およびプログラム |
KR101336258B1 (ko) * | 2007-05-29 | 2013-12-03 | 삼성전자 주식회사 | 비휘발성 메모리의 데이터 처리 장치 및 방법 |
US8266391B2 (en) * | 2007-06-19 | 2012-09-11 | SanDisk Technologies, Inc. | Method for writing data of an atomic transaction to a memory device |
WO2008156682A1 (en) * | 2007-06-19 | 2008-12-24 | Sandisk Corporation | Memory device and method for writing data of an atomic transaction |
US20080320253A1 (en) * | 2007-06-19 | 2008-12-25 | Andrew Tomlin | Memory device with circuitry for writing data of an atomic transaction |
FI120422B (fi) | 2007-07-02 | 2009-10-15 | Tellabs Oy | Menetelmä ja laitteita muutoslokin kompressoimiseksi käyttäen flash-transaktioita |
US8775758B2 (en) | 2007-12-28 | 2014-07-08 | Sandisk Technologies Inc. | Memory device and method for performing a write-abort-safe firmware update |
PL2294504T3 (pl) * | 2008-05-29 | 2016-07-29 | Hewlett Packard Development Co | Wymienny element drukarki zawierający pamięć aktualizowaną atomistycznie |
KR101097245B1 (ko) * | 2009-09-28 | 2011-12-21 | 삼성에스디아이 주식회사 | 배터리 팩, 및 데이터 플래시 동작 제어 방법 |
US8850151B2 (en) * | 2010-03-24 | 2014-09-30 | Apple Inc. | Hybrid-device storage based on environmental state |
US8799557B1 (en) * | 2011-10-13 | 2014-08-05 | Netapp, Inc. | System and method for non-volatile random access memory emulation |
FR2988878B1 (fr) * | 2012-04-02 | 2015-01-16 | Morpho | Procede de modification en memoire d'un ensemble de donnees |
CN102696955B (zh) * | 2012-06-28 | 2016-06-15 | 贵州西汇魔芋实业有限公司 | 一种用鲜生魔芋制作的多纤维的安全营养魔芋方便粥 |
KR20140128819A (ko) * | 2013-04-29 | 2014-11-06 | 삼성전자주식회사 | 아토믹 라이트 방법 |
US9336258B2 (en) * | 2013-10-25 | 2016-05-10 | International Business Machines Corporation | Reducing database locking contention using multi-version data record concurrency control |
JP6242711B2 (ja) * | 2014-02-24 | 2017-12-06 | 株式会社東芝 | ストレージ装置及びデータ管理方法 |
KR102275706B1 (ko) | 2014-06-30 | 2021-07-09 | 삼성전자주식회사 | 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법 |
CN108259613B (zh) * | 2018-01-24 | 2019-12-24 | 平安科技(深圳)有限公司 | 容灾数据的在线同步装置、方法及计算机可读存储介质 |
JP2019169101A (ja) * | 2018-03-26 | 2019-10-03 | 東芝メモリ株式会社 | 電子機器、コンピュータシステム、および制御方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2582487B2 (ja) | 1991-07-12 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 半導体メモリを用いた外部記憶システム及びその制御方法 |
JP3621433B2 (ja) * | 1993-05-24 | 2005-02-16 | 日本電信電話株式会社 | データベース排他制御方法 |
US5566314A (en) * | 1993-08-30 | 1996-10-15 | Lucent Technologies Inc. | Flash memory device employing unused cell arrays to update files |
US5684944A (en) | 1995-08-14 | 1997-11-04 | Lubbers; Clark E. | Atomic update of EDC protected data |
US5954818A (en) * | 1997-02-03 | 1999-09-21 | Intel Corporation | Method of programming, erasing, and reading block lock-bits and a master lock-bit in a flash memory device |
US6035401A (en) * | 1997-02-03 | 2000-03-07 | Intel Corporation | Block locking apparatus for flash memory |
US5832493A (en) * | 1997-04-24 | 1998-11-03 | Trimble Navigation Limited | Flash file management system |
-
1999
- 1999-10-26 FI FI992308A patent/FI109620B/fi not_active IP Right Cessation
-
2000
- 2000-10-25 JP JP2001533526A patent/JP5160006B2/ja not_active Expired - Fee Related
- 2000-10-25 CN CNB008149569A patent/CN1179281C/zh not_active Expired - Fee Related
- 2000-10-25 WO PCT/FI2000/000921 patent/WO2001031458A1/en active IP Right Grant
- 2000-10-25 AT AT00969620T patent/ATE340387T1/de not_active IP Right Cessation
- 2000-10-25 DE DE60030872T patent/DE60030872T2/de not_active Expired - Lifetime
- 2000-10-25 US US10/110,418 patent/US7254592B1/en not_active Expired - Fee Related
- 2000-10-25 AU AU79291/00A patent/AU7929100A/en not_active Abandoned
- 2000-10-25 EP EP00969620A patent/EP1224558B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
AU7929100A (en) | 2001-05-08 |
DE60030872T2 (de) | 2007-01-18 |
EP1224558A1 (en) | 2002-07-24 |
CN1384937A (zh) | 2002-12-11 |
WO2001031458A1 (en) | 2001-05-03 |
ATE340387T1 (de) | 2006-10-15 |
CN1179281C (zh) | 2004-12-08 |
FI109620B (fi) | 2002-09-13 |
JP2003513357A (ja) | 2003-04-08 |
DE60030872D1 (de) | 2006-11-02 |
US7254592B1 (en) | 2007-08-07 |
EP1224558B1 (en) | 2006-09-20 |
FI19992308A (fi) | 2001-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5160006B2 (ja) | 論理フラッシュメモリ装置を用いて原子的更新を実行する方法および装置 | |
US7676691B2 (en) | Systems and methods for providing nonlinear journaling | |
US7822932B2 (en) | Systems and methods for providing nonlinear journaling | |
US7899800B2 (en) | Systems and methods for providing nonlinear journaling | |
EP0566966B1 (en) | Method and system for incremental backup copying of data | |
US7752402B2 (en) | Systems and methods for allowing incremental journaling | |
US7293146B1 (en) | Method and apparatus for restoring a corrupted data volume | |
JPH0560617B2 (ja) | ||
WO2009028828A2 (en) | Apparatus using flash memory as storage and method of operating the same | |
US6944635B2 (en) | Method for file deletion and recovery against system failures in database management system | |
EP3405870B1 (en) | Versioned records management using restart era | |
JP3135714B2 (ja) | チェックポイントリスタート方式 | |
Lomet et al. | Logical logging to extend recovery to new domains | |
CN116225779A (zh) | 一种基于预写日志机制提高缓存和数据源数据一致性的方法和装置 | |
JPH06149485A (ja) | データ完結性保証処理方法 | |
KR100365891B1 (ko) | 주기억장치 상주형 데이터베이스 시스템에서 로그 처리를하지 않는 백업/회복 장치 및 그 방법 | |
US9075819B1 (en) | Method and apparatus for providing parallel backup set processing for creating a synthetic backup | |
KR100775141B1 (ko) | 저널링이 적용된 fat 파일 시스템의 구현 방법 | |
JPS63133240A (ja) | 常駐テ−ブルの内容保証方式 | |
US11150940B2 (en) | System and method for recording transaction associated with a page-oriented non-volatile memory | |
JP2551563B2 (ja) | 不変メモリ装置 | |
JP3667703B2 (ja) | エラー訂正制御回路 | |
CN114880277A (zh) | 块设备快照方法、***和存储介质 | |
CN118012669A (zh) | 一种分布式文件***的文件元数据恢复***与方法 | |
JPS63195755A (ja) | 主記憶装置上の情報の内容保証方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070905 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100720 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101020 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101116 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110215 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110308 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121101 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121212 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151221 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |