JP2010539609A - トランザクショナルメモリにおける並列入れ子状トランザクション - Google Patents

トランザクショナルメモリにおける並列入れ子状トランザクション Download PDF

Info

Publication number
JP2010539609A
JP2010539609A JP2010525101A JP2010525101A JP2010539609A JP 2010539609 A JP2010539609 A JP 2010539609A JP 2010525101 A JP2010525101 A JP 2010525101A JP 2010525101 A JP2010525101 A JP 2010525101A JP 2010539609 A JP2010539609 A JP 2010539609A
Authority
JP
Japan
Prior art keywords
transaction
transactions
computer
lock
parallel
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.)
Pending
Application number
JP2010525101A
Other languages
English (en)
Other versions
JP2010539609A5 (ja
Inventor
エム.マグルーダー マイケル
デトレフス デイビッド
ジョセフ ダフィ ジョン
グレーフェ ゴッツ
ケー.グローバー ビノッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2010539609A publication Critical patent/JP2010539609A/ja
Publication of JP2010539609A5 publication Critical patent/JP2010539609A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

トランザクショナルメモリシステムにおける並列入れ子状トランザクションをサポートする様々な技術及び技法を開示する。複数の閉じた入れ子状トランザクションが、単一の親トランザクションについて作成され、閉じた入れ子状トランザクションは、並列入れ子状トランザクションとして並行して実行される。様々な技術を用いて、並列入れ子状トランザクションの作用は、親トランザクションがコミット処理する迄、親トランザクション外部の他のトランザクションから隠されるのを保証する。例えば、版数化書込ロックが並列入れ子状トランザクションによって用いられる。トランザクショナルメモリワードが書込ロックから版数化書込ロックに変化する時、エントリがグローバル版数化書込ロックマップに作られ、版数化書込ロックが置き換えた書込ログエントリへのポインタを記憶する。版数化書込ロックがトランザクション処理中に遭遇された時、グローバル版数化書込ロックマップが参照され、版数化書込ロックを書込ログエントリへのポインタに変換する。

Description

本発明は、トランザクショナルメモリにおける並列入れ子状トランザクションに関する。
ソフトウェアトランザクショナルメモリ(STM)とは、並行コンピューティングにおいて共有メモリへのアクセス制御をなすデータベーストランザクションに類似する並行制御メカニズムである。トランザクショナルメモリの分野におけるトランザクションとは、共有メモリに対する一連の読込及び書込を実行する一片のコードである。換言すれば、トランザクションは、1つ以上のオブジェクト内のデータにアクセスする。トランザクショナルメモリの分野におけるオブジェクトとは、1つのエンティティとしてロックされた1組の連結されたメモリロケーションである。また、この分野におけるオブジェクトは、静的変数又は1組のかかる変数であるかもしれないし、1組のキャッシュライン(cache line)であるかもしれない。
STMは、伝統的なロック機構に代わるものとして用いられる。STMは、並行プログラムがより単純に書かれるのを可能とする。トランザクションは、あたかも一連のコードが隔離されて実行されているかのように想定される一連のコードを示す。隔離のこの錯覚は、オブジェクトのきめの細かいロック処理によって達成されるし、トランザクションが他の何らかのトランザクションと衝突すると発見された場合に、トランザクションの副作用がロールバック処理されるのを可能とするモードで実行されることによって達成される。我々は、当該アクセスのために生成されたコードがこれらロック処理及びロールバック処理機構のサポートを含むように改変された場合に、あるデータアクセスが「トランザクションにされる(transacted)」と称する。
トランザクションは、入れ子状にされてもよく、開いたか又は閉じた入れ子状として分類され得る。あるスレッドがトランザクションを現在実行し、新たな不可分ブロック(atomic block)の始点に達する場合、この不可分ブロックは、現在時点で実行されている親トランザクションの閉じた入れ子状子トランザクションとして実行される。この入れ子状トランザクションは、囲んでいるトランザクション(enclosing transaction)と同一の隔離境界(isolation boundary)内で実行され、ちょうど当該囲んでいるトランザクション内でアクセスされる他のメモリの如く、入れ子状トランザクションの作用は、当該囲んでいるトランザクションがコミット処理する時に見えるようになるだけである。換言すれば、親トランザクションが有効に一時停止され、閉じた入れ子状トランザクションは、当該親トランザクションにおける処理が再開される前に、完了に向って実行することが許される。入れ子状トランザクションがロールバック処理される時、その暫定的な作用は元通りにされ、親トランザクションの状態は入れ子状トランザクションが開始された時点に回復される。
所与のスレッドよって実行されている「最も外側の」トランザクションは入れ子状にされていない。我々は、これをトップレベルのトランザクションと称する。このトップレベルのトランザクションは、入れ子状トランザクションがその1部分になるように不可分的に実行しなければならない。入れ子状にするのが発生するのは、例えば、ある抽象作用(abstraction)A及びBの各々が内部表現不変量(internal representation invariants)を有する場合であり、従って、それら抽象作用は、並行スレッドによる使用中にさえ維持することを欲し、これら不変量が並行アクセスよって侵害されないことを保証するために、それらのメソッドの実行において不可分ブロックを用いた場合である。ここで、あるより高レベルの抽象作用Cが、その実行においてインスタンスA及びBを用い、これらインスタンスA及びBに関係するある不変量を有すると仮定する。メソッドCは、トランザクションを用いてこの不変量が侵害されないことを保証するであろう。もしメソッドA及びBがCのトランザクション内で使われる場合、メソッドA及びBにおけるトランザクションは(この使用において)入れ子状にされる。
現行のトランザクションナルメモリシステムは、1つのトランザクションの隔離境界内で実行される作業が、実行中の複数の並行スレッド間で分散されるのを可能とはしていない。現行のシステムにおいて、1つのトランザクションは、1つの入れ子状子トランザクションを有するだけかもしれない。かかるシステムのセマンティクス(semantics)は、トランザクション内でのかかる並列化を単純には可能とはしないし、1つ以上の入れ子状トランザクションを一度に実行する試みは、親トランザクションのログ中で順序無くして混在された入れ子状トランザクションログのエントリや他のエラーを生むであろうし、基本的な基礎をなすように細かく粒状化されたロック処理プロトコルの故障は隔離の錯覚を提供することとなる。
トランザクショナルメモリシステムにおける並列入れ子状トランザクション(parallel nested transaction)をサポートする様々な技術及び技法を開示する。複数の閉じた入れ子状トランザクションが単一の親トランザクションについて作成され、当該閉じた入れ子状トランザクションは、並列入れ子状トランザクションとして並行して実行される。様々な技術を用いて、並列入れ子状トランザクションの作用が、親トランザクションがコミット処理する迄、親トランザクション外側の他のトランザクションから隠されるのを保証する。
一実施形態では、版数化された書込ロック(versioned write lock)が並列入れ子状トランザクションと共に用いられる。トランザクショナルメモリワード(transactional memory word)が書込ロックから版数化書込ロックに変わるとき、グローバル版数化書込ロックマップ(global versioned write lock map)にエントリが作られ、当該版数化書込ロックが置き換えた書込ログエントリへのポインタを記憶する。版数化書込ロックがトランザクション処理中に遭遇(encountered)されたとき、グローバル版数化書込ロックマップが参照され、版数化書込ロックを書込ログエントリへのポインタに変換する。
他の実施形態では、ロールバック処理のための複製の書込ロックの解除が並列トランザクションのためにサポートされる。並列入れ子状トランザクションのロールバック処理中、書込ロックを表す第1の書込ログエントリが遭遇される。当該書込ロックが複製であると判定された場合、グローバルロックが獲得され、グローバル版数化書込ロックマップへのアクセスを同期するのに用いられる。
さらに他の実施形態では、楽観的な読込検証(optimistic read validation)が並列入れ子状トランザクションについてサポートされる。楽観的な読込の検証中、版数化書込ロックが兄弟(sibling)並列入れ子状トランザクションからの衝突を示す場合、並列入れ子状トランザクションがドゥーム(doom)処理されるべきか否かを決定する情報が参照される。一実施形態において、当該情報は、版数化書込ロック内及びグローバル版数化書込ロックマップ内に格納される。
更なる実施形態では、書込ロック獲得(write lock acquisition)が並列入れ子状トランザクションについてサポートされる。並列入れ子状トランザクションのための書込ロックを獲得する試みに応じて、トランザクショナルメモリワードが読み込まれ、書込ロックが得られる否かを判定するために分析される。トランザクショナルメモリワードが版数化書込ロックを示す場合、グローバル版数化書込ロックマップがアクセスされ、第1の書込ログエントリを指示する書込ログエントリポインタが読み出される。
さらに他の実施形態では、悲観的な読込(pessimistic read)が並列入れ子状トランザクションについてサポートされる。悲観的な複製化検出データ構造(duplication detection data structure)が並列入れ子状トランザクションのために作成される。並列入れ子状トランザクションにおける各悲観的な読込毎に、エントリが当該データ構造内に作られる。並列入れ子状トランザクションをコミット処理するとき、新たな悲観的な読込ロックが直近の親トランザクションに渡され、当該直近の親トランザクションの別の悲観的な複製化検出データ構造内に、兄弟トランザクション間の同期によってエントリが作られる。悲観的な複製化検出データ構造は、悲観的な読込から書込ロックへの格上げ(upgrade)にも用いられ得る。
さらに他の実施形態では、再試行動作(retry operation)が並列入れ子状トランザクションについてサポートされる。並列入れ子状トランザクションであるか又は並列入れ子状トランザクションの子トランザクションであるトランザクションが再試行を実行する時に、当該トランザクションの読込セット(read set)が再試行のために登録される。再試行を当該トランザクションの親である並列入れ子状トランザクションを過ぎて伝播する判定がなされた時、読込セットは、登録されたままで親の読込セットの部分をなす。
更なる実施形態では、書込アボート処理補償マップ(write abort compensation map)が並列入れ子状トランザクションに用いられて、不正にドゥーム処理された親トランザクションを検出及び処置する。書込アボート処理補償マップは、ロールバック処理中の並列入れ子状トランザクションについて新たな書込ロックを解除する時に作られる。並列入れ子状トランザクションがロールバック処理される時、解除された新たな書込ロック毎に、エントリが書込アボート処理補償マップ内に作られる。
上述した概要は、以下の発明の詳細な説明で更に説明される内容を単純化した形式で概念の抜粋を紹介するために提供される。本概要は、請求される発明の内容の鍵となる特徴又は本質的な特徴を識別することを意図せず、請求される発明の範囲を決定することを目的として用いられることも意図しない。
一実施形態のコンピュータシステムのブロック図である。 図1のコンピュータシステム上で動作する、一実施形態のトランザクショナルメモリアプリケーションのブロック図である。 図1のシステムの一実施形態における処理フローチャートであり、複数の並列トランザクションが単一の親トランザクションの下で入れ子状にされるのを可能とするステージを示す。 図1のシステムの一実施形態における処理フローチャートであり、並列入れ子状トランザクションの数が前もって既知である時、並列入れ子状トランザクションエントリを親ログに割り当てるステージを示す。 図1のシステムの一実施形態における処理フローチャートであり、並列入れ子状トランザクションの数が前もって既知ではない時、並列入れ子状トランザクションエントリを親ログに割り当てるステージを示す。 一実施形態におけるトランザクショナルメモリワードの構造例を示す図である。 図1のシステムの一実施形態における処理フローチャートであり、版数化書込ロックを用いて、並列入れ子状トランザクションの入れ子を保証すると共に適切に構成するステージを示す。 図1のシステムの一実施形態における処理フローチャートであり、書込ロックを獲得して入れ子状トランザクションを適切に処置するステージを示す。 図1のシステムの一実施形態における処理フローチャートであり、書込ロックを獲得して、入れ子状トランザクションを適切に処置するステージを示す。 図1のシステムの一実施形態における処理フローチャートであり、コミット処理のために何らかの種類の書込を解除して入れ子状トランザクションを適切に処置するステージを示す。 図1のシステムの一実施形態における処理フローチャートであり、ロールバック処理のために新たな書込ロックを解除して入れ子状トランザクションを適切に処置するステージを示す。 図1のシステムの一実施形態における処理フローチャートであり、ロールバック処理のために複製書込ロックを解除して入れ子状トランザクションを適切に処置するのに伴われるステージを示す。 図1のシステムの一実施形態における処理フローチャートであり、楽観的な読込ロックの獲得の実行を示す。 図1のシステムの一実施形態における処理フローチャートであり、楽観的な読込の検証実行を示す。 図1のシステムの一実施形態における処理フローチャートであり、楽観的な読込の検証実行を示す。 図1のシステムの一実施形態における処理フローチャートであり、楽観的な読込の検証実行を示す。 図1のシステムの一実施形態における処理フローチャートであり、楽観的な読込の検証実行を示す。 図1のシステムの一実施形態における処理フローチャートであり、並列入れ子状トランザクションによる悲観的な読込の正しい動作を保証するステージを示す。 図1のシステムの一実施形態の場合における処理フローチャートであり、悲観的な読込ロックを書込ロックに格上げするステージを示す。 図1のシステムの一実施形態における処理フローチャートであり、悲観的な読込ロックの獲得の実行を示す。 図1のシステムの一実施形態における処理フローチャートであり、悲観的な読込ロックの獲得の実行を示す。 図1のシステムの一実施形態における処理フローチャートであり、悲観的な読込ロックの獲得の実行を示す。 図1のシステムの一実施形態における処理フローチャートであり、悲観的な読込ロックの獲得の実行を示す。 図1のシステムの一実施形態における処理フローチャートであり、再試行が並列入れ子状トランザクションによって正しく働くのを可能とするステージを示す。 図1のシステムの一実施形態における処理フローチャートであり、書込アボート処理補償マップを並列入れ子状トランザクションによって用いるステージを示す。
本明細書における技術及び技法は、トランザクショナルメモリシステムとしての一般的な文脈において説明されるが、本システムはトランザクショナルメモリシステムに加えて他の目的に供されてもよい。一実施形態において、本明細書において説明される技術の1つ以上は、MICROSOFT(登録商標).NETフレームワークの如きフレームワークプログラム内の態様として実施され得るか、又はソフトウェアアプリケーションを開発する開発者にプラットフォームを提供する他の何らかのタイプのプログラム又はサービスから実施され得る。他の実施形態において、本明細書において説明される技術の1つ以上は、並行環境において実行されるアプリケーションの開発を取扱う他のアプリケーションを備える態様においても実施される。
背景技術において説明したように、入れ子状トランザクションは、自身が含んでいる隔離境界か又は親のトランザクションと同一の隔離境界の部分にその作用が及ぶ場合に閉じられていると見做される。本明細書において説明される様々な技術及び技法を用いることよって、トランザクションは同時に複数の閉じた入れ子状トランザクションを有してもよい。これらは、「複数の並列入れ子状トランザクション(parallel nested transactions)」(複数のPNT)と称される。囲んでいる単一のトランザクション下の複数のPNTの全ては、トランザクションの「並列子トランザクション」と称され、当該囲んでいるトランザクションは「並列親トランザクション」と称される。並列親トランザクション及びその子トランザクションは「並列入れ子」と称される。1つのPNTの「兄弟トランザクション」は、(ある入れ子レベルで)同一の並列親トランザクション内に囲まれた他のPNTである。一実施形態において、各PNTは、ほとんど通常の閉じた入れ子状トランザクションのように実行され、その作用は囲んでいるトランザクション内に隔離され、並列親トランザクションがコミット処理する時にのみ並列入れ子を越えてその作用が見えるようになる。しかし、各PNTは、あたかもそれがトップレベルのトランザクションであるかのように、その兄弟トランザクションから隔離されている。PNTの作用は、それ自身がコミット処理する時のみ、その兄弟トランザクションから見えるようになる。
図1に示されるように、本システムの1つ以上の部分の実装に用いる例示的なコンピュータシステムは、コンピュータ装置100の如きコンピュータ装置を含む。その最も基本的な構成において、コンピュータ100は、典型的には少なくとも1つの処理装置102とシステムメモリ104とを含む。コンピュータ装置の実際の構成及びタイプに依存して、システムメモリ104は(RAMの如き)揮発性媒体、(ROM、フラッシュメモリ、その他の如き)不揮発性媒体、又はかかる2つのタイプの組み合わせであってもよい。この最も基本的な構成は破線106によって示されている。
さらに、装置100は、また、付加的な態様/機能を有してもよい。例えば、装置100は、また、限定するものではないが、磁気又は光学ディスク又はテープを含む(着脱可能及び/又は着脱不能な)付加的な記憶装置を含んでもよい。かかる付加的な記憶装置は、着脱可能な記憶装置108及び着脱不能な記憶装置110として図1に示されている。コンピュータ記憶媒体としては、コンピュータ読取可能命令、データ構造、プログラムモジュール又は他のデータの如き情報記憶のための何らかの方法又は技術で実現される、揮発性及び不揮発性の着脱可能及び着脱不能な媒体を含む。メモリ104、着脱可能記憶装置108及び着脱不能記憶装置110は、コンピュータ記憶媒体の全ての例である。コンピュータ記憶媒体は、限定されるものではないが、RAM、ROM、EEPROM、フラッシュメモリ若しくはその他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)若しくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶装置、又は所望の情報を記憶するのに用いられると共に装置100よってアクセスされ得る何らかの他の媒体であってもよい。かかる何らかのコンピュータ記憶媒体は、装置100の一部であってもよい。
コンピュータ装置100は、コンピュータ装置100が他のコンピュータ/アプリケーション115と通信するのを可能とする1つ以上の通信接続部114を含む。装置100は、また、キーボード、マウス、ペン、音声入力装置、タッチ入力装置、その他の如き入力装置112を含んでもよい。ディスプレイ、スピーカ、プリンタ、その他の如き出力装置111が含まれてもよい。これらの装置は、周知の技術であり、ここで詳細に説明しない。一実施形態において、コンピュータ100はトランザクショナルメモリアプリケーション200を含む。トランザクショナルメモリアプリケーション200は、図2において更に詳細に説明する。
図1に続いて図2を参照すると、コンピュータ100上で動作しているトランザクショナルメモリアプリケーション200が示されている。トランザクショナルメモリアプリケーション200は、コンピュータ100上に存在するアプリケーションプログラムの1つである。しかし、トランザクショナルメモリアプリケーション200は、1つ以上のコンピュータ及び/又は図1に示されたものとは異なるコンピュータ上で、コンピュータ実行命令として代替的に又は付加的に実施され得ることが理解されるであろう。代替的に又は付加的に、トランザクショナルメモリアプリケーション200の1つ以上の部分は、他のコンピュータ及び/又はアプリケーション115において、システムメモリ104の部分であることが可能であり、又はコンピュータソフトウェア技術においてあり得る他のかかる変容が可能である。
トランザクショナルメモリアプリケーション200はプログラム論理部204を含み、これは本明細書において説明される技術のある部分又は全てを実行することを担う。プログラム論理部204は、複数の並列のトランザクションが単一の親トランザクションの下で入れ子にされるのを可能とする論理部206を(図3に関して以下に説明されるように)含み、並列入れ子状トランザクションが入れ子にされ、他の閉じた入れ子状トランザクションと適切に合成されるのを(図7〜図14に関して以下に説明されるように)可能とする論理部208と、並列入れ子状トランザクションが独立したログを伴って実行され、ロック所有権及びログを、親トランザクションへ低い競合で以て移転するのを(図4及び5に関して以下に説明されるように)可能とする論理部210と、並列入れ子状トランザクションを同一のトランザクションにおいて楽観的及び悲観的な読込のために(図15〜図17に関して以下に説明されるように)活性化(enabling)する論理部212と、並列入れ子状トランザクションをインプレース(in-place)書込又はバッファード(buffered)書込のために(図7、図11及び図12に関して以下に説明されるように)活性化する論理部214と、再試行が並列入れ子状トランザクションによって正しく働くのを(図18に関して以下に説明されるように)可能とする論理部216と、書込アボート処理補償マップが並列入れ子状トランザクションによって正しく働くのを(図19に関して以下に説明されるように)可能とする論理部218と、アプリケーションを動作せしめる他の論理部220とを含む。
図1〜図2に続いて図3〜図19を参照して、トランザクショナルメモリアプリケーション200の1つ以上の実施形態による複数のステージを更に詳細に説明する。ある実施形態において、図3〜図19のプロセスは、コンピュータ装置100で動作する論理部で少なくとも部分的に実行される。図3は、複数の並列トランザクションが単一の親トランザクションの下で入れ子にされるのを可能とする複数のステージからなる一実施形態を示す。このプロセスは、機能又は他の態様を提供する始点240で始まり、実行可能状態にある1組の並列入れ子状トランザクションを作成する(ステージ242)。1組の並列入れ子状トランザクションは、所与の親トランザクションについて全て一度に又は必要に応じて遅延されて作成される(ステージ244)。特別な論理部が用いられてトランザクション方式で並列入れ子状トランザクションを、実行、コミット処理、ロールバック処理、再実行及び再試行する(ステージ246)。並列入れ子状トランザクションが終了する時、当該並列入れ子状トランザクションは、それ自身及びその兄弟トランザクションの全てが完了した後に破壊されなければならない(ステージ248)。このプロセスは終点250で終わる。
図4及び図5は、並列入れ子状トランザクションエントリを親ログにおいて割り当てるプロセスを示す。並列入れ子状トランザクションは、図4及び5で説明される割当技術の1つによって割り当てられた後に、独立したログを伴って実行され、ロック所有権、ログ及び他のデータを親トランザクションに低い競合で以て移転することが可能である。図4に戻ると、並列入れ子状トランザクションの数が事前に既知である時、並列入れ子状トランザクションエントリを親ログにおいて割り当てる一実施形態が示されている。このプロセスは、始点270で開始され、並列入れ子状トランザクションの数が事前に既知であることから、何らかのPNTが実行開始される前に、入れ子における各並列入れ子状トランザクション(PNT)毎に、1つの並列入れ子状トランザクションエントリ(PNTE)が作成される(ステージ272)。ロールバック処理又はコミット処理中に必要な時、並列入れ子状トランザクションは、親トランザクションから並列入れ子状トランザクションエントリを最小同期で読み出す。一実施形態において、予め割り当られたPNTEは、親トランザクションにおいて配列状で保持される。PNTは、次に利用可能なPNTEへのポインタを、次に利用可能な並列入れ子状トランザクションインデックスに基づいた単純な比較処理及びスワップ処理によって、取得してもよい(ステージ274)。比較処理及びスワップ処理(CAS)は、所与の値と所与のメモリロケーションとの間の比較を微細に実行する処理であり、それらが一致する場合、所与の新しい値がメモリロケーションに記憶される。それらが一致しない場合、何ら動作はなされない。異なる複数のCPU及びオペレーティングシステムにおいて、CAS処理、ハードウェア及びソフトウェアを実行する多くの方法が存在する。本明細書において用いられる用語CASは、これらの方法の全てをカバーする一般的な意味で用いられる。
並列入れ子状トランザクションは、親ログにおける並列入れ子状トランザクションエントリに情報を充填する(ステージ276)。一実施形態において、当該情報は、子トランザクションについて、子ログへのポインタと、書込アボート処理補償マップへのポインタとを含み、及び/又は適用可能ならば悲観的な読込オブジェクトテーブルを含む。書込アボート処理補償マップは、図19で更に詳細で説明する。悲観的な読込オブジェクトテーブルは、図15で更に詳細に説明する。このプロセスは終点278で終わる。
図5は、並列入れ子状トランザクションの数が事前に既知ではない時、並列入れ子状トランザクションエントリを親ログに割り当てる複数のステージからなる一実施形態を示す。このプロセスは、始点290で始まり、並列入れ子状トランザクションが作成される時、新たな並列入れ子状トランザクションエントリのために領域(room)を親ログにおいて割り当てる(ステージ292)。並列入れ子状トランザクションがコミット処理する時、並列入れ子状トランザクションエントリが親ログに作成される(ステージ294)。親ログへのアクセスは、親トランザクションの現在ログポイントを動かすように同期化され、並列入れ子状トランザクションエントリのための次に利用可能なスペースへのアクセスを獲得する(ステージ296)。並列入れ子状トランザクションは、親ログにおける並列入れ子状トランザクションエントリに情報を充填する(ステージ298)。一実施形態において、当該情報は、子トランザクションについて、子ログへのポインタと、書込アボート処理補償マップへのポインタとを含み、及び/又は適用可能ならば悲観的な読込オブジェクトテーブルを含む。書込アボート処理補償マップは、図19で更に詳細で説明する。悲観的な読込オブジェクトテーブルは、図15で更に詳細に説明する。このプロセスは終点300で終わる。
図6は、一実施形態のトランザクショナルメモリワード(TMW)の構造例320を示し、様々なロック状態に印を与えるのに用いられる様々なビット322を備えている。一実施形態では、TMWは各オブジェクトに関連付けられる。一実施形態では、単一のハードウェアワード表現が用いられるが、複数のTMWについては、記憶されるべき情報をロック可能とする幾つかの他の表現があり得る。本明細書で説明される構造例において、TMWは、関連付けられたオブジェクトが書込ロックされるか又は解除されていることを示してもよい。TMWの1つのビットはこの区別にあてがわれる。TMWが書込ロックされていない場合、TMWは、版数番号(version number)/総数(count)ペア324(V/Cペア)と称される悲観的な読込側の版数番号及び総数を含む。この状態において、TMWの幾数のビットがオブジェクトの版数番号を記録し、オブジェクト上の悲観的な読込ロックを現在保持しているトランザクションの総数を残りのビットが表す。トランザクションがオブジェクトに書込ロックを保持する時、このロックは2つの種類からなり得る(当該TMWにおける他のビットよって区別される)。通常、書込ロックされたTMWの残りのビットは、ロックしているトランザクションの書込ログにおけるエントリへのポインタ326を含み、この書込ログエントリ(WLE)は、オブジェクト及びロックすることに関する他の情報を含む。例えば、WLEは、書込ロックが取得される前のオブジェクトについてのTMW値を含んでもよく、他の実施形態において、WLEは、オブジェクトの「シャドウ・コピー」を含んでもよく、その場合、オブジェクトへはコミット処理されない変形がなされる。他の状態において、書込ロックされたTMWは、版数化された書込ロック(VWL)を含む。ここで、TMWの残りのビット(VWL(V/C)328と称される)は、V/Cペアと同様に、なお書込ロックされているオブジェクトの版数番号、及び悲観的な読込側の総数を表す。
如何にして版数化書込ロックが用いられるかに関する詳細な説明の前に、版数化書込ロック(複数のVWL)の必要性を例示するのを助ける例を説明する。インプレースSTMシステムと、オブジェクトO1上に書込ロックを獲得するトップレベルのトランザクションTx1とがあると仮定する。O1についてのTMWがWLE1に設定され、WLE1は、O1上のTx1の書込ロックを表している、Tx1のログ内の書込ログエントリである。ここで、親トランザクションとしてのTx1と共に、2つのPNT、すなわちTx2及びTx3が導入されると仮定する。Tx2及びTx3は、並列入れ子において兄弟トランザクションであり、並行して実行される。Tx2及びTx3は、Tx1よってロックされたデータにアクセスしてもよいが、それらは互いに隔離されなければならない。従って、Tx2及びTx3が双方ともO1にアクセスしてもよい一方で、それらは並行してアクセスすることが許されてはならない。ここで、O1からの読込を望むTx3を仮定する。Tx3は、O1のTMWの値をWLE1として記録する楽観的な読込ログエントリをそのログ内に作成して、楽観的な読込処理を実行する。次に、Tx2がO1に書込を行うと仮定する。Tx2はO1上に書込ロックを獲得し、Tx2のログにおいて書込ログエントリであるWLE2にO1のTMWを設定することになる。WLE2は、WLE1がO1のTMWの以前の値であることを記録している。Tx2は、ここでO1のフィールドに書き込んでもよいし、インプレース書込によって書込みを行ってもよい。Tx3が実行を続けるにつれて、Tx2からコミット処理されていない書込を含むO1のフィールドをTx3が読込む。Tx3は規定によってドゥーム処理され、ロールバック処理するべきことになる。しかし、Tx3がコミット処理を試みる前にもしTx2が何らかの理由でロールバック処理する場合には、Tx2はO1上の書込ロックを解除しなければならない。これをするために、Tx2は通常O1のTMWをWLE1へ戻す設定をすることになる。しかしここで、Tx3がコミット処理を試みる時、Tx3が最初にO1を読込んだ時にTx3がした同一の値をO1のTMWが含むことをTx3が認識することになる。この状況において、Tx3は正しいと見えることになり、Tx2からコミット処理されていない書込を読込むことを認識するのにTx3は失敗することになる。従って、Tx2がロールバック処理する時、Tx2はO1のTMWをWLE1以外のある値に設定しなければならず、そして、O1はTx1よってなおロックされていることを、本システムにおける他のトランザクション(兄弟PNT又は他のトップレベルのトランザクション)が認識するのを保証する形で、Tx2はロールバック処理をしなければならない。これは次のように達成され、すなわち、O1のTMWを版数化書込ロック(VWL)に設定することと、Tx1がO1上に書込ロックを保持していることを示すエントリをグローバル版数化書込ロックマップ(VWLM)内に作ることとによって達成される。複数のVWL及びVWLMの詳細及び使用については以下に説明する。この実施形態は、VWLが必要である1つのケースを示している。しかし、VWLが用いられ得る複数のシナリオが在ることが、ロック獲得及び解除のプロセスが本節の残りで詳細に説明されるにつれて、当業者によって認められるであろう。
図7は、版数化書込ロックを用いることによって並列入れ子状トランザクションの入れ子を保証し且つ適切に構成する複数のステージからなる一実施形態を示す。このプロセスは、始点340で始まり、版数番号/総数ペア、書込ログエントリ(WLE)、又は版数化書込ロック(VWL)のうちの1つであり得るトランザクショナルメモリワードを提供する(ステージ342)。トランザクショナルメモリワード(TMW)が版数化書込ロックに変化する時、インデックスが付けられているグローバル版数化書込ロックマップ(VWLM)にエントリが作られ、当該エントリは、版数化書込ロックが置き換えた旧い書込ログエントリポインタを参照している(ステージ344)。版数化書込ロックが見出される時、グローバル版数化書込ロックマップが参照されて、版数化書込ロックを書込ログエントリポインタに変換し、通常の処理が書込ログエントリポインタに基づいて発生する(ステージ346)。トランザクショナルメモリワードにおける版数番号は、V/Cペア又は版数化書込ロックに保持されるか否かに関わらず、コミット処理又はアボート処理中に常に増分される(ステージ348)。版数化書込ロックがトランザクショナルメモリワードに置かれる直前に、エントリがグローバル版数化書込ロックマップに作られ、トランザクショナルメモリワードに版数化書込ロックを含む限り、当該エントリは残る(ステージ350)。どの時点においても、トランザクションは、グローバル版数化書込ロックマップにアクセスするのに、グローバルロックを獲得しなければならない(ステージ352)。このプロセスは終点354で終わる。
図8及び図9は、書込ロックを獲得している入れ子状トランザクションを適切に処置する複数のステージからなる一実施形態を示す。新たな書込ロックは、トランザクションの入れ子内で初めて獲得される書込ロックであり、複製書込ロックは、祖先トランザクションが現在書込みロックしたオブジェクト上に、入れ子状トランザクションが獲得しているかもしれない書込ロックである。このプロセスは、始点370で始まり、入れ子状トランザクションがトランザクショナルメモリワードを読み込む(ステージ372)。トランザクショナルメモリワードがV/Cペアではない場合(判定ポイント374)、このプロセスは図9に続き(ステージ404)、次節で説明される。トランザクショナルメモリワードが零より大きいC(悲観的な読込側の総数)を有するV/Cペアである場合(判定ポイント375)、図16のプロセスが実行されて、悲観的な読込を処置して書込ロック格上げを行う。トランザクショナルメモリワードが零に等しいCを有するV/Cペアである場合(判定ポイント375)、これは、トランザクショナルメモリワードが何らかのトランザクションよって読込又は書込が悲観的にはロックされていないことを示し、従って新たな書込ロックの獲得を可能としている。書込ロック獲得のためには、このシステムは、新たな書込ログエントリを形成して版数番号を記録し、書込ログエントリをトランザクションの書込ログに追加する(ステージ376)。比較処理及びスワップ処理が次いで実行され、トランザクショナルメモリワード値を、V/Cペアから書込ログエントリポインタ(例えばWLE*)に切り替える(ステージ378)。比較処理及びスワップ処理が成功した場合(判定ポイント380)、ロックは成功裏に取得される(ステージ382)。比較処理及びスワップ処理が成功しなかった場合(判定ポイント380)、衝突が存在し、ロックは成功裏には取得されない(ステージ384)。このプロセスは終点386で終わる。
図9を続けて参照して、TMWがV/Cペアでない場合(図8の判定ポイント374)且つトランザクショナルメモリワードが版数化書込ロックではない場合(判定ポイント404)、トランザクショナルメモリワードはWLEAに対するポインタWLE*であり、このプロセスはステージ408に続く。トランザクショナルメモリワードが版数化書込ロックである場合(判定ポイント404)、グローバル版数化書込ロックマップが用いられてWLEAに対して基礎をなすWLE*を読み出す(ステージ406)。WLEAがトランザクションの何らかの祖先トランザクションによって所有されていない場合(判定ポイント408)、衝突が存在し(ステージ410)、このプロセスは終点420で終わる。WLEAが祖先トランザクションによって所有されている場合(判定ポイント408)、新たなWLEBが形成されWLEAを記録し、WLEBがトランザクションの書込ログに追加される(ステージ412)。比較処理及びスワップ処理が次いで実行され、トランザクショナルメモリワード値をWLEA *からWLEB *に切り替える(ステージ414)。比較処理及びスワップ処理が成功した場合(判定ポイント416)、ロックは成功裏に取得される(ステージ418)。比較処理及びスワップ処理が成功しなかった場合(判定ポイント416)、衝突が存在し(ステージ410)、ロックは成功裏に取得されない。このプロセスは終点420で終わる。
図10は、コミット処理のために何らかの種類の書込ロックを解除して入れ子状トランザクションを適切に処置する複数のステージからなる一実施形態を示す。このプロセスは、始点440で始まり、WLEXがコミット処理中にトランザクション書込ログにおいて遭遇される(ステージ442)。書込ロックの所有権及びWLEXは、直近の親トランザクションに単純に移転される(ステージ444)。所有権を並列入れ子状トランザクションからコミット処理にある親トランザクションに移転することよって、他の兄弟トランザクションは、彼等自身のための書込ロックをこの時点で彼等が獲得できることを発見する。同様に、複製書込ロックを獲得する動作は、兄弟トランザクションが彼等自身のための書込ロックを獲得できるのを防止する。このプロセスは終点446で終わる。
図11は、ロールバック処理のために新たな書込ロックを解除して入れ子状トランザクションを適切に処置する複数のステージからなる一実施形態を示す。このプロセスは、始点460で始まり、WLEXがロールバック処理中にトランザクションで書込ログにおいて遭遇される(ステージ462)。このシステムは、WLEXがどのタイプの書込ロックを表しているかをチェックする(ステージ464)。WLEXが新たな書込ロックを表していない場合(判定ポイント466)、図12において一実施形態について説明されたように、複製書込ロックを解除する論理部が実行される(ステージ471)。WLEXが新たな書込ロックを表している場合(判定ポイント466)、WLEXで記憶されている以前の版数番号が読み出される(ステージ468)。トランザクショナルメモリワードのロケーションがWLEXから読み出され、書込ロックが通常の記憶動作を用いて解除され、トランザクショナルメモリワード値をシステムのタイプ(インプレース又はバッファード)にとって適当なV/Cペアに変更する(ステージ470)。バッファードシステムの一実施形態では、トランザクショナルメモリワード値が元の版数番号を表す値に戻す変更がなされる。インプレースシステムの一実施形態では、トランザクショナルメモリワードの値は、元の版数番号+1を表す値に変更される。このプロセスは終点472で終わる。
図12は、ロールバック処理のために複製書込ロックを解除して入れ子状トランザクションを適切に処置する複数のステージからなる一実施形態を示す。一実施形態では、このプロセスは、ロールバック処理中にオブジェクトの版数番号を増分するシステム、すなわちインプレースシステムの用途にだけ用いられる。バッファードシステムの実施形態では、版数番号はロールバック処理中に増加されない。これらのシステムにおいて、新たな書込ロックを解除する(図11)ためのプロセスは、複製書込ロックを解除するために用いられてもよい。このプロセスは、始点490で始まり、WLEXがロールバック処理中にトランザクション書込ログにおいて遭遇される(ステージ492)。システムは、どのタイプの書込ロックかをWLEXが表すかチェックする(ステージ494)。ロックが複製書込ロックではない場合(判定ポイント496)、一実施形態について図11で説明されたように、新たな書込ロックを解除する論理部が実行される(ステージ511)。ロックが複製書込ロックである場合、グローバル版数化書込ロックマップへのアクセスに同期するのに用いられるグローバルロックが獲得される(ステージ498)。元の書込ログエントリポインタWLEY *とトランザクショナルメモリワードのロケーションとがWLEXから読み出される(ステージ500)。新たなグローバル版数化書込ロックマップエントリが、WLEYを参照して、オブジェクトのために形成される(ステージ502)。グローバル版数化書込ロックマップへのアクセスに同期するのに用いられるグローバルロックが次いで解除される(ステージ504)。元の版数番号かWLEXから読み出され(ステージ506)、新しい版数化書込ロック値が元の版数番号+1として形成される(ステージ508)。書込ロックは通常の記憶動作を用いて解除され、トランザクショナルメモリワード値をWLEX *から新たな版数化書込ロックに変更される(ステージ510)。このプロセスは終点512で終わる。
図13は、図1のシステムの一実施形態のための処理フローチャートであり、楽観的な読込ロック獲得の実行を示す。このプロセスは、始点530で始まり、トランザクションがオブジェクト上に楽観的な読込を実行する時、オブジェクトの現在のTMW値が読み込まれる(ステージ532)。楽観的な読込ログエントリが作成され(ステージ534)、現在のTMW値及びTMWのロケーションによって占有させる(ステージ536)。読込ログエントリがトランザクションの読込ログに追加される(ステージ538)。一実施形態において、このプロセスは、トップレベルの、単純な入れ子状の、又は並列入れ子状のトランザクションの如きトランザクションの全てのタイプについて同一である。このプロセスは終点540で終わる。
図14A〜図14Dは、図1のシステムの一実施形態のための処理フローチャートであり、楽観的な読込の検証の実行を示す。このプロセスは、始点560で始まり、トランザクションをコミット処理しようとするか或いはトランザクションが有効か否かを判定しようとする時、トランザクション読込ログにおける各楽観的な読込ログエントリを考慮する(ステージ562)。TMWの元の値は読込ログエントリから読み出され(ステージ564)、TMWの現在値が読み込まれる(ステージ566)。尚、各ケースにおいて、システムが書込アボート処理補償マップ(WACM)を(図19で説明されるように)用いている場合、現在の集積された(検証処理又はコミット処理中に形成される)WACMが、2つの版数番号に違いがあるにも関わらず、参照される。元のTMWがV/Cペアである場合(判定ポイント568)、図14Bで説明されるプロセスが実行される。元のTMWがWLE*である場合(判定ポイント570)、図14Cで説明されるプロセスが実行される。元のTMWがV/CペアでもWLE*でもない場合、元のTMWはVWLであり(ステージ572)、図14Dのプロセスが実行される。これらのシナリオの各々について更に詳細に説明する。
図14Bは、元のTMWがV/Cペアである時に(判定ポイント568)、一実施形態における楽観的な読込の検証中に実行される例示的なプロセスをより詳細に示す。現在のTMWがV/Cペアであり(判定ポイント590)且つ元のTMWと現在のTMWとで版数番号が一致する場合(判定ポイント592)、トランザクションは有効である(ステージ594)。現在のTMWがV/Cペアであり(判定ポイント590)且つ元のTMWと現在のTMWとで版数番号が一致しない場合(判定ポイント592)、トランザクションは無効である(ステージ596)。
現在のTMWが代わりにWLE*であり(判定ポイント598)且つWLEがトランザクションによって所有されていて且つWLEにおいて記憶されている版数番号が旧いTMWに一致する(判定ポイント600)場合、トランザクションは有効である(ステージ594)。現在のTMWがV/Cペアではなく(判定ポイント590)且つ現在のTMWがWLE*ではない(判定ポイント598)場合、TMWはVWLである(ステージ602)。同期化されたルックアップ処理が、VWLMにおいてロックされたオブジェクトのアドレスを用いてなされる。VWLMエントリが無い場合(判定ポイント604)、トランザクションは無効である(ステージ596)。エントリがある場合(判定ポイント604)、当該VWLMエントリはVWLが置き換えたWLE*を読み出すのに用いられる。WLEがトランザクションよって所有され且つWLEに記憶された版数番号が旧いTMWに一致する場合(判定ポイント606)、トランザクションは有効である(ステージ594)。それ以外の場合、トランザクションは無効である(ステージ596)。このプロセスは終点608で終わる。
図14Cを参照すると、元のTMWがWLE*である時に一実施形態において楽観的な読込確認中に実行される例示的なプロセスが示されている。現在のTMWがV/Cペアである場合(判定ポイント620)、現在のトランザクションは有効ではない(ステージ630)。現在のTMWがV/Cペアではなく(判定ポイント620)、その代わりにWLE*である場合(判定ポイント624)、システムは、元のTMWと現在のTMWとが一致することをチェックすると共に、WLEが現在のトランザクション又は何らかの祖先トランザクションによって所有されていることをチェックする(判定ポイント626)。これら判定基準が双方とも充足された場合、トランザクションは有効である(ステージ628)。それ以外の場合、トランザクションは無効である(ステージ630)。
現在のTMWがV/Cペアではなく(判定ポイント620)且つWLE*ではない場合(判定ポイント624)、現在のTMWはVWLである(ステージ632)。元のWLEからのTMWが、このトランザクション又は何らかの祖先トランザクションによって所有されていて且つWLEに記憶されている版数番号がVWLにおける版数番号に一致する場合(判定ポイント634)、トランザクションは有効である(ステージ628)。それ以外の場合、トランザクションは有効ではない(ステージ630)。このプロセスは終点636で終わる。
図14Dを参照すると、元のTMWがVWLである時に、一実施形態における楽観的な読込検証中に実行される例示的なプロセスが示されている。現在のTMWがV/Cペアである場合(判定ポイント650)、トランザクションは衝突のために有効ではない(ステージ660)。現在のTMWがV/Cペアではなくて(判定ポイント650)、その代わりにWLE*である場合(判定ポイント654)、システムは、WLEが現在のトランザクション又は何らかの祖先トランザクションによって所有されていることをチェックすると共にWLEに記憶されている版数番号がVWLにおける版数番号に一致していることをチェックする(判定ポイント656)。これらの判定基準が双方とも充足される場合、トランザクションは有効である(ステージ658)。それ以外の場合、トランザクションは有効ではない(ステージ660)。
現在のTMWがV/Cペアではなく(判定ポイント650)且つ現在のTMWがWLE*ではない場合(判定ポイント654)、現在のTMWはVWLである(ステージ662)。VWLMにおいてルックアップ処理が実行されてVWLをWLE*に変換する(ステージ664)。エントリが発見されない場合(判定ポイント666)、トランザクションは有効ではない(ステージ660)。それ以外の場合で、エントリが発見された場合(判定ポイント666)、システムは、元のVWLと現在のVWLとで版数番号が一致することをチェックすると共に、TMWについてVWLMで発見されたWLEが、このトランザクション又は何らかの祖先トランザクションによって所有されていることをチェックする(判定ポイント668)。双方の判定基準が充足された場合、トランザクションは有効である(ステージ658)。それ以外の場合、トランザクションは無効である(ステージ660)。このプロセスは終点670で終わる。
単純な閉じた入れ子状トランザクションによる、システムにおける悲観的な読込の正しい動作は、悲観的読込オブジェクトテーブル(PROT)と称される複製検知データ構造の使用を要求する。各トップレベルのトランザクションは、トランザクション開始時又は遅延して最初の悲観的な読込動作時点の何れかでPROTを作成する。トランザクション又は何らかの子孫トランザクションがオブジェクト上に悲観的な読込ロックを獲得しようとする時、トランザクションは、PROTを参照して、悲観的な読込ロックが既に獲得されているか否かを判定する。オブジェクトがPROTにある場合、オブジェクトはトランザクションの入れ子によって既に読込ロックされている。オブジェクトがPROTに無く且つオブジェクトが他のトランザクションによって現在書込ロックされていない場合、悲観的な読込ロックがCAS処理を用いて獲得されてオブジェクトのTMWに記憶されているV/CペアにおけるC(悲観的な読込側の総数)を増分する。CAS処理が成功した場合、エントリがPROTにおいて作られ、悲観的な読込のためにロックされたオブジェクトを入れ子が現在有している事実を記録する。悲観的な読込ロックが解除される時、トップレベルのコミット処理中又はロールバック処理中の何れかでCが(再びCASによって)減分され、PROTエントリが除去される。次に、如何にして複数のPROTが並列入れ子状トランザクションによって用いられるかを説明する。
図15は、悲観的な読込の正しい動作を並列入れ子状トランザクションによって保証する複数のステージからなる一実施形態を示す。このプロセスは、始点690で始まり、並列入れ子状トランザクションは、初期化中又は遅延して並列入れ子状トランザクションによる第1の悲観的な読込ロックの獲得中に、悲観的な複製検知データ構造(先の説明のようにPROTと称される)を作成する(ステージ692)。このデータ構造は、トランザクションが悲観的な読込ロックを書込ロックに格上げしようとする時にシステムよって用いられる。並列入れ子状トランザクション又は何らかの連続した子トランザクションによって作られたオブジェクトの第1の悲観的な読込のためのエントリがPROT中に作られる(ステージ694)。コミット処理に基づいて、新たな悲観的な読込ロックが直近の親トランザクションに渡され、適切な親PROTエントリが作られる(ステージ696)。複製読込ロックが解除され、並列子トランザクションがコミット処理した後に兄弟トランザクションが書込アクセスを取得するのを可能とする(ステージ698)。システムは、次いで、複製の悲観的な読込ロックに関連付けられたログエントリを破壊する(ステージ700)。コミット処理の後、子トランザクションのPROTは、トランザクションの残りによって破壊され得る(ステージ702)。このプロセスは終点704で終わる。
図16は、悲観的な読込ロックを書込ロックに格上げする複数のステージからなる一実施形態を示す。このプロセスは、始点720で始まり、あるオブジェクトにとって望ましい書込ロックが既に悲観的な読込のために開かれていることを発見する(ステージ722)。子トランザクションのPROTがクエリ処理され(ステージ724)、読込側の現在の総数を見て、現在のトランザクションがそれらの全ての読込を総数処理できるか否かを判定する(ステージ726)。その結果が悲観的な読込側の全てを総数処理できる場合、子トランザクションは、書込ロックへの格上げを通常のように試みてもよい(ステージ728)。総数処理できない読込側がなおある場合、子トランザクションは、全ての祖先トランザクションの複数のPROTをクエリ処理して、子トランザクションが書込ロックに格上げしてもよいか否かを判定する(ステージ730)。祖先トランザクションが並列親トランザクションである場合、既にコミット処理を行った何らかの並列兄弟トランザクションのPROTと同様に、並列親トランザクションのPROTを考慮しなければならない。これら兄弟トランザクションのPROTは、並列親トランザクションのログに複数のPNTEを介して保持されている。適切な同期処理が、これら兄弟トランザクションのPROTへの競争の無い(race-free)アクセスを保証するのに要求される。この同期処理は、PNTがそのPROTに、関連付けられたPNTE内にPROTを置いた後には、アクセスしないことを保証することよって達成される。祖先トランザクション及び何らかのコミット処理された並列兄弟トランザクションが、余分の悲観的な読込側を埋め合わせる場合、子トランザクションは、書込ロックに格上げしようと通常のように試みてもよい(ステージ732)。一実施形態において、格上げは次のように達成される。新たな書込ログエントリが形成されてPNTのログに追加される。TMWの現在値は、ロールバック処理及びコミット処理中の使用のためにWLEに置かれる。TMWの現在値がVWLである場合、VWLMが用いられて適切な同期化によって当該VWLを最初にWLE*に変換する。CAS処理が用いられて書込ロックを獲得する。CAS処理が成功した場合、格上げが働き、そうではない場合には衝突がある。このプロセスは終点734で終わる。
ここで、並列入れ子状トランザクションにおける悲観的な読込ロック獲得を実行する、図17A〜図17Dに示される例示的なプロセスを説明する。プロセスは、図17Aで始まり、現在のTMWを読み込む(ステージ752)。TMWがV/Cペアである場合(判定ポイント754)、図17Bで説明されるプロセスが実行される。TMWがWLE*である場合(判定ポイント756)、図17Cで説明されるプロセスが実行される。TMWがV/Cペアではなく(判定ポイント754)且つWLE*ではない場合(判定ポイント756)、TMWはVWLであり(ステージ758)、図17Dで説明されるプロセスが実行される。これらシナリオの各々を、以下に更に詳細に説明する。
図17Bを参照すると、TMWがV/Cペアである場合、トランザクションのPROTが参照されて、PROTがオブジェクト上の悲観的な読込ロックを既に保持しているか否かを判定する(判定ポイント769)。PROTエントリがある場合、プロセスは終点776で終わる。PROTエントリが無い場合(判定ポイント769)、比較処理及びスワップ処理(CAS)が用いられて、悲観的な読込側の総数であるCを増分する(ステージ770)。CASが成功した場合(判定ポイント772)、ロックが獲得され、PROTエントリが作られる(ステージ774)。CAS処理が失敗した場合(判定ポイント772)、図17Aに示されるステージ752の処理が再度なされる。
図17Cに示されるように、TMWがWLE*であり且つWLEが現在のトランザクション又は何らかの祖先トランザクションによって所有されている場合(判定ポイント790)、システムは、所有しているトランザクションが並列親トランザクションより下にあるか又はより上にあるかを判定する(判定ポイント792)。所有しているトランザクションが並列親トランザクションより下にある場合(判定ポイント792)、悲観的な読込を続行する(ステージ794)。所有しているトランザクションが並列親トランザクションより上にある場合(判定ポイント792)、システムは、TMWをVWLに切り替えて兄弟トランザクションと連携する。そうするために、VWLMエントリが作られてWLE*を適当な同期化によって記録し(ステージ796)、VWLが当該VWLに記憶された版数番号から形成され、C(悲観的な読込側の総数)が1に設定される。新たなVWLは、TMWにCAS処理によって設定される(ステージ800)。CAS処理が成功した場合、PROTエントリが作られ、悲観的な読込ロックが獲得される(ステージ806)。CAS処理が成功しなかった場合、VWLMエントリは除去され(ステージ804)、次いで、図17Aに戻ることよってステージ752の処理を再度行う。このプロセスは終点810で終わる。
図17Dに示されるように、TMWがVWLである場合、VWLは、WLE*にVWLMを介して適切な同期化処理によって変換される(ステージ820)。WLEがこのトランザクション又は何らかの祖先トランザクションよって所有されている場合(判定ポイント822)、CAS処理が用いられてTMWにおけるVWLにおけるC(悲観的な読込側の総数)を増分する(ステージ824)。CAS処理が成功した場合(判定ポイント826)、PROTエントリが作られ、ロックが獲得される。CASが失敗した場合、図17Aのステージ752の処理を再度行う。WLEがこのトランザクション又は何らかの祖先トランザクションによって所有されていない場合(判定ポイント822)、衝突が在る(ステージ830)。このプロセスは終点832で終わる。
図18は、再試行が並列入れ子状トランザクションと正しく働く複数のステージからなる一実施形態を示す。図18の詳細に立ち入って再試行が並列入れ子状トランザクションと正しく働くのを可能とする説明をする前に、先ず一実施形態の再試行動作に関する背景情報を提供する。再試行動作はトランザクション間の基本的通信を可能とする。トランザクションが再試行動作を実行する時、その作用はロールバック処理され、トランザクションの読込が変化する所迄、実行が停止される。変化が検出された時、トランザクションは再実行される。再試行動作は、キュー遮断のような非常に一般的なあるデータ構造について用いられ得る。例えば、トランザクションは、キューが空であるか否かについてチェックし、キューが空である場合には再試行を行い、列が空ではない場合にはエレメントを除去することができる。トランザクションはキューが不変のままである間は遮断し、キューの状態が変化する時には再実行を行うことになり、かかる態様はトランザクションが完了する別の機会を与える。
一実施形態において、トランザクションが再試行動作を実行する時、システムは、再実行を行うトランザクションの読込セットにおける全ての読込を待つ登録を行う。再試行するトランザクションは、読込セットにおける何らかが変化したことの通知を待つ。待ち通知は、書込ロックを解除している特定のトランザクションから始動される。トランザクションは、2つの方法のうちの1つで通知が必要か否かを知る。第1の方法において、書込ロック獲得中にトランザクショナルメモリワードが待ち側(waiter)ビットを含んでいた場合、解除中にトランザクショナルメモリワードがオブジェクト待ち側マップで調べられ、各待っているトランザクションに知らされる。第2の方法において、書込をするトランザクションは、全ての書込ロックを解除した後に、待っているトランザクションのグローバル総数が零より大きいと判る場合、書込をするトランザクションは、トランザクション待ち側マップを用いて、どのトランザクションが、少なくとも書き込まれるロケーションを待っていて知らされる必要があるかを判定する。各方法において、書込ロックは通常の記憶動作を用いて解除される。
他の実施形態において、漸進的な再試行動作は、まさに入れ子状トランザクションのロールバック処理及びその読込セットを待つことによって開始される。ある特定の時間又は遭遇されるある他の条件を待った後に、バックオフプロセスが実行されて、元の待ちセットのサイズを大きくして、再試行を行うトランザクションの直近の親トランザクションをロールバック処理する。バックオフプロセスは、各次の親トランザクション毎に追加的な待ちを追加して、最もトップレベルの親トランザクションのロールバック処理迄反復される。漸進的な待ちセットは、最もトップレベルの親トランザクションに関連付けられ、何らかの通知が最もトップレベルの親トランザクションの再実行をもたらす。
図18に戻り、如何にして再試行が並列入れ子状トランザクションによって用いられ得るかをここで説明する。このプロセスは、始点850で始まり、並列入れ子状トランザクション又は何らかの連続した子孫トランザクションの再試行が実行される時、システムは、再試行のトランザクションの読込セットを通常のように登録する(ステージ852)。システムは、再試行を行うトランザクションの祖先トランザクションからなるあるサブセットを含むように当該再実行を拡張する前に、当該再試行を行うトランザクションがどの位長く待つべきかを決定する発見的方法(heuristics)を含む(ステージ854)。この方法は、並列入れ子状トランザクションについて調整され、他の並列兄弟トランザクションがアクティブである限り延長された待ち時間を可能とする。延長待ち時間を超えた場合、当該再試行動作が親トランザクションを含むように拡張される(ステージ856)。兄弟トランザクションの状態が更なる伝播の前に考慮される(ステージ858)。再試行が並列入れ子状トランザクションの親を越えて伝播するような決定がなされた時、全ての子トランザクションはドゥーム(doom)処理され、次いで、再試行する親トランザクションがロールバック処理される前に、子トランザクションは終了しなければならない(ステージ860)。再試行が親トランザクションを越えて伝播するような決定がなされた時、並列入れ子状トランザクションの読込セットは登録されたままであり、親トランザクションの読込セットの一部となる(ステージ862)。尚、親トランザクション中に既にコミット処理された何らかの並列兄弟トランザクションの読込セットは、親トランザクションの読込セットと一緒に待ちセットの一部をなす。当該決定よってアボート処理されて当該再試行を親トランザクションに迄伝播された何らかの並列兄弟トランザクションは待ちセットに寄与しない。このプロセスは終点864で終わる。
図19は、並列入れ子状トランザクションによって書込アボート処理補償マップを用いる複数のステージからなる一実施形態を示す。図19の詳細並びに如何にして書込アボート処理補償マップが並列入れ子状トランザクションによって用いられ得るかについて詳細に説明する前に、一実施形態の書込アボート処理補償マップに関する背景情報を提供する。
書込アボート処理補償マップが用いられて、インプレース書込を用いるトランザクショナルメモリシステムにおいて入れ子状子トランザクションの誤ってドゥーム処理された親トランザクションを検出する。書込アボート処理補償マップ(又は他の記憶メカニズム)は、ロールバック処理する各入れ子状トランザクション毎に解除された各ロック毎に解除総数を追跡する。入れ子状トランザクションの各々が書込ロックを解除する回数は、それら各々の書込アボート処理補償マップに各々記録される。解除総数が、親トランザクションの検証中に用いられ、明白に無効な楽観的な読込が本当は有効であるか否かを判定することができる。
一実施形態において、親トランザクションログを処理する間、入れ子状子トランザクションについて見られる何らかの書込アボート処理補償マップは、親トランザクションにおいて集積された書込アボート処理補償マップ中に結合される。楽観的な読込が版数番号不一致に起因して検証に失敗した場合、当該集積された書込アボート処理補償マップが参照され、入れ子状子トランザクションについて特定変数の書込ロック解除総数を読み出す。版数番号における差が、入れ子状子トランザクションについての書込ロック解除総数に実際には一致する場合、楽観的な読込は有効である。
図19に戻り、如何にして書込アボート処理補償マップが並列入れ子状トランザクションによって用いられるかについて説明する。このプロセスは、始点880で始まり、並列入れ子状トランザクションのロールバック処理中に新たな書込ロックを解除する時、書込アボート処理補償マップ(WACM)を作成する(ステージ882)。入れ子状トランザクションがロールバック処理する時、入れ子状トランザクションは、解除される新たな各書込ロック毎にWACMエントリを作成する(ステージ884)。ログの所有権が親トランザクションにコミット処理中に移転される時、並列入れ子状トランザクションのログの前にWACMが論理的に置かれる(ステージ886)。これらPNTの複数のWACMは、親トランザクションのロールバック処理中に、まるで何れかの他の入れ子状トランザクションのWACMのように上記の如く用いられることになり、親トランザクションの楽観的な読込の正しい検証を保証することになる(ステージ888)。このプロセスは終点890で終わる。
本発明の内容を、構造上の態様及び/又は方法上の動作に特有の言語で説明したが、添付の特許請求の範囲で画定される本発明の内容は必ずしも上記した特定の態様又は動作に限定されるものではないことが理解されよう。むしろ、上記に説明された特定の態様及び動作は、請求項の内容を実施する形態例として開示されている。本明細書及び/又は請求項によって説明された如き実施形態の思想に含まれる全ての均等物、変更及び改変が保護されるべきである。
例えば、コンピュータソフトウェア分野における当業者は、本明細書で説明した実施形態が、1つ以上のコンピュータ上で異なって組織されることができ、例として示されたものより少ないか又は別の選択肢又は態様を含むことがきることを認識するであろう。

Claims (15)

  1. コンピュータ実行可能命令が記録されたコンピュータ読取可能媒体であって、
    単一の親トランザクションについて複数の閉じた入れ子状トランザクションを作成するステップ(206)と、
    前記複数の閉じた入れ子状トランザクションを、並列入れ子状トランザクションとして並行実行するステップ(208)と
    をコンピュータに実行させるコンピュータ実行可能命令が記録されていることを特徴とするコンピュータ読取可能媒体。
  2. 前記並列入れ子状トランザクションが一度に全て作成される(244)ことを特徴とする請求項1に記載のコンピュータ読取可能媒体。
  3. 前記並列入れ子状トランザクションの各々の作成時に、並列入れ子状トランザクションエントリが前記単一の親トランザクションのログに作成される(272)ことを特徴とする請求項2に記載のコンピュータ読取可能媒体。
  4. 前記並列入れ子状トランザクションエントリの各々は、前記単一の親トランザクションのログから、前記並列入れ子状トランザクションのうちの対応する1つによって、次に利用可能な並列入れ子状トランザクションインデックスに基づいた比較処理及びスワップ処理を用いて、読み出される(274)ことを特徴とする請求項3に記載のコンピュータ読取可能媒体。
  5. ロックエントリが所与の並列入れ子状トランザクションのログにおいてコミット処理中に遭遇される時、ロック所有権及び前記ログエントリが、前記単一の親トランザクションに移転される(444)ことを特徴とする請求項1に記載のコンピュータ読取可能媒体。
  6. 前記並列入れ子状トランザクションは、必要に応じて作成される(244)ことを特徴とする請求項1に記載のコンピュータ読取可能媒体。
  7. 前記並列入れ子状トランザクションの各々が作成される際に、前記単一の親トランザクションのログにおいて、対応する並列入れ子状トランザクションエントリのために領域(room)が割り当てられる(292)ことを特徴とする請求項6に記載のコンピュータ読取可能媒体。
  8. 前記並列入れ子状トランザクションの各々がコミット処理する時、対応する並列入れ子状トランザクションエントリが、前記単一の親トランザクションのログにおいて作成される(294)ことを特徴とする請求項7に記載のコンピュータ読取可能媒体。
  9. 前記単一の親トランザクションのログは、複数の並列入れ子状兄弟トランザクション中のアクセスのために同期化される(296)ことを特徴とする請求項7に記載のコンピュータ読取可能媒体。
  10. 前記並列入れ子状トランザクションの作用を、前記親トランザクションがコミット処理する迄、前記親トランザクション外部にある他のトランザクションから隠すステップ(208)をコンピュータに実行させるコンピュータ実行可能命令を更に含むことを特徴とする請求項1に記載のコンピュータ読取可能媒体。
  11. 所与の並列入れ子状トランザクションの作用を、前記所与の並列入れ子状トランザクションが前記親トランザクション中にコミット処理される迄、前記所与の親トランザクション外部にある他のトランザクションから隠すステップ(444)をコンピュータに実行させるコンピュータ実行可能命令を更に含むことを特徴とする請求項10に記載のコンピュータ読取可能媒体。
  12. 並列入れ子状トランザクションに版数化書込ロックを用いる方法であって、
    トランザクショナルメモリワードが書込ロックから版数化書込ロックに変化する時、グローバル版数化書込ロックマップにエントリを作り、前記版数化書込ロックが置き換えた書込ログエントリへのポインタを記憶するステップ(344)と、
    前記版数化書込ロックがトランザクション処理中に遭遇される時、前記グローバル版数化書込ロックマップを参照して、前記版数化書込ロックを前記書込ログエントリへのポインタに変換するステップ(346)と
    を含むことを特徴とする方法。
  13. 前記版数化書込ロックを用いて、並列入れ子状トランザクションが、親トランザクションによって保持されたロックを獲得及び解除できることによって、前記親トランザクションの隔離境界を破ることなく適切に同期化する(352)ことを特徴とする請求項12に記載の方法。
  14. 前記トランザクショナルメモリワードに記憶される版数番号が、版数及び総数ペア内又は前記版数化書込ロック内に保持されているか否かに関わらず、常に増分される(348)ことを特徴とする請求項12に記載の方法。
  15. 悲観的な読込を獲得する時、前記トランザクショナルメモリワードは、前記版数化書込ロックに切り替えられて、悲観的な読込側の総数を記憶する領域を提供するステップをさらに含み、前記版数化書込ロックが、親トランザクションが既に書込ロックしたオブジェクト上に兄弟トランザクションが悲観的な読込を実行したであろうことを示す(796)ことを特徴とする請求項12に記載の方法。
JP2010525101A 2007-09-18 2008-09-16 トランザクショナルメモリにおける並列入れ子状トランザクション Pending JP2010539609A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/901,647 US7890472B2 (en) 2007-09-18 2007-09-18 Parallel nested transactions in transactional memory
PCT/US2008/076563 WO2009039118A2 (en) 2007-09-18 2008-09-16 Parallel nested transactions in transactional memory

Publications (2)

Publication Number Publication Date
JP2010539609A true JP2010539609A (ja) 2010-12-16
JP2010539609A5 JP2010539609A5 (ja) 2011-10-27

Family

ID=40455684

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010525101A Pending JP2010539609A (ja) 2007-09-18 2008-09-16 トランザクショナルメモリにおける並列入れ子状トランザクション

Country Status (8)

Country Link
US (3) US7890472B2 (ja)
EP (1) EP2191372B1 (ja)
JP (1) JP2010539609A (ja)
CN (2) CN102929702B (ja)
BR (1) BRPI0814455A2 (ja)
HK (1) HK1179718A1 (ja)
TW (1) TWI431474B (ja)
WO (1) WO2009039118A2 (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7756846B2 (en) * 2005-07-01 2010-07-13 Sap Aktiengesellschaft Methods and systems for propagating locks through nested logical units of work
US7962456B2 (en) * 2007-06-27 2011-06-14 Microsoft Corporation Parallel nested transactions in transactional memory
US7840530B2 (en) * 2007-09-18 2010-11-23 Microsoft Corporation Parallel nested transactions in transactional memory
US7890472B2 (en) 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US8555016B2 (en) * 2008-12-17 2013-10-08 Intel Corporation Unified optimistic and pessimistic concurrency control for a software transactional memory (STM) system
US8935703B2 (en) * 2009-12-11 2015-01-13 Red Hat, Inc. Performance counter inheritance
US8954664B1 (en) 2010-10-01 2015-02-10 Western Digital Technologies, Inc. Writing metadata files on a disk
US8756361B1 (en) * 2010-10-01 2014-06-17 Western Digital Technologies, Inc. Disk drive modifying metadata cached in a circular buffer when a write operation is aborted
US8793429B1 (en) * 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
US8756382B1 (en) 2011-06-30 2014-06-17 Western Digital Technologies, Inc. Method for file based shingled data storage utilizing multiple media types
US8612706B1 (en) 2011-12-21 2013-12-17 Western Digital Technologies, Inc. Metadata recovery in a disk drive
US9542227B2 (en) 2012-01-30 2017-01-10 Nvidia Corporation Parallel dynamic memory allocation using a lock-free FIFO
US9417881B2 (en) * 2012-01-30 2016-08-16 Nvidia Corporation Parallel dynamic memory allocation using a lock-free pop-only FIFO
US9870384B2 (en) * 2012-03-30 2018-01-16 International Business Machines Corporation Database system transaction management
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9953294B2 (en) * 2012-10-15 2018-04-24 Sap Se Enabling an in-memory transactional application
US20150074219A1 (en) * 2013-07-12 2015-03-12 Brocade Communications Systems, Inc. High availability networking using transactional memory
US9348523B2 (en) 2013-12-12 2016-05-24 International Business Machines Corporation Code optimization to enable and disable coalescing of memory transactions
US9146774B2 (en) * 2013-12-12 2015-09-29 International Business Machines Corporation Coalescing memory transactions
US9348522B2 (en) 2013-12-12 2016-05-24 International Business Machines Corporation Software indications and hints for coalescing memory transactions
US9158573B2 (en) 2013-12-12 2015-10-13 International Business Machines Corporation Dynamic predictor for coalescing memory transactions
US9292337B2 (en) 2013-12-12 2016-03-22 International Business Machines Corporation Software enabled and disabled coalescing of memory transactions
US10019476B2 (en) 2015-05-27 2018-07-10 Microsoft Technology Licensing, Llc Multi-version data system nested transactions isolation
US10067960B2 (en) * 2015-06-04 2018-09-04 Microsoft Technology Licensing, Llc Controlling atomic updates of indexes using hardware transactional memory
WO2017095388A1 (en) * 2015-11-30 2017-06-08 Hewlett-Packard Enterprise Development LP Managing an isolation context
US10223268B2 (en) * 2016-02-23 2019-03-05 International Business Systems Corporation Transactional memory system including cache versioning architecture to implement nested transactions
US11113262B2 (en) * 2019-04-01 2021-09-07 Sap Se Time-efficient lock release in database systems
CN111984379B (zh) * 2020-07-14 2023-04-07 上海金仕达软件科技股份有限公司 读写事务控制方法、系统、终端设备及存储介质
CN114661816B (zh) * 2020-12-24 2023-03-24 金篆信科有限责任公司 数据同步方法、装置、电子设备、存储介质
CN116244041B (zh) * 2022-12-02 2023-10-27 湖南亚信安慧科技有限公司 一种数据库子事务的性能优化方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001188696A (ja) * 2000-11-20 2001-07-10 Toshiba Corp トランザクション処理の管理方法

Family Cites Families (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5251318A (en) 1988-09-02 1993-10-05 Hitachi, Ltd. Multiprocessing system comparing information copied from extended storage before and after processing for serializing access to shared resource
US5305196A (en) * 1989-05-01 1994-04-19 Credit Verification Corporation Check transaction processing, database building and marketing method and system utilizing automatic check reading
US5263155A (en) 1991-02-21 1993-11-16 Texas Instruments Incorporated System for selectively registering and blocking requests initiated by optimistic and pessimistic transactions respectively for shared objects based upon associated locks
US5287501A (en) * 1991-07-11 1994-02-15 Digital Equipment Corporation Multilevel transaction recovery in a database system which loss parent transaction undo operation upon commit of child transaction
US5701480A (en) 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
JPH05173988A (ja) * 1991-12-26 1993-07-13 Toshiba Corp 分散処理方式および該分散処理に適用されるトランザクション処理方式
US5241675A (en) 1992-04-09 1993-08-31 Bell Communications Research, Inc. Method for enforcing the serialization of global multidatabase transactions through committing only on consistent subtransaction serialization by the local database managers
US5335343A (en) 1992-07-06 1994-08-02 Digital Equipment Corporation Distributed transaction processing using two-phase commit protocol with presumed-commit without log force
EP0613083B1 (en) * 1993-02-25 2002-01-23 Sun Microsystems, Inc. Transaction management in object oriented systems
US5764977A (en) 1994-03-30 1998-06-09 Siemens Stromberg-Carlson Distributed database architecture and distributed database management system for open network evolution
US5721909A (en) 1994-03-30 1998-02-24 Siemens Stromberg-Carlson Distributed database architecture and distributed database management system for open network evolution
US5687363A (en) 1994-03-30 1997-11-11 Siemens Stromberg-Carlson Distributed database architecture and distributed database management system for open network evolution
US5835757A (en) 1994-03-30 1998-11-10 Siemens Telecom Networks Distributed database management system for servicing application requests in a telecommunications switching system
US6052695A (en) 1995-02-28 2000-04-18 Ntt Data Communications Systems Corporation Accurate completion of transaction in cooperative type distributed system and recovery procedure for same
US5581729A (en) * 1995-03-31 1996-12-03 Sun Microsystems, Inc. Parallelized coherent read and writeback transaction processing system for use in a packet switched cache coherent multiprocessor system
US6647510B1 (en) 1996-03-19 2003-11-11 Oracle International Corporation Method and apparatus for making available data that was locked by a dead transaction before rolling back the entire dead transaction
GB2312766A (en) * 1996-05-01 1997-11-05 Ibm Transactional layer for object management system
JP3672208B2 (ja) 1996-07-02 2005-07-20 インターナショナル・ビジネス・マシーンズ・コーポレーション 階層化トランザクション処理方法
FR2751106B1 (fr) * 1996-07-11 1999-01-08 Alsthom Cge Alcatel Methode de planification de transactions distribuees
US5903891A (en) * 1997-02-25 1999-05-11 Hewlett-Packard Company Hierarchial information processes that share intermediate data and formulate contract data
US5878206A (en) * 1997-03-25 1999-03-02 Hewlett-Packard Company Commit scope control in hierarchical information processes
EP0990214A2 (en) 1998-01-26 2000-04-05 Telenor AS Database management system and method for conditional conflict serializaility of transactions and for combining meta-data of varying degrees of reliability
US5983225A (en) 1998-01-26 1999-11-09 Telenor As Parameterized lock management system and method for conditional conflict serializability of transactions
US6148300A (en) 1998-06-19 2000-11-14 Sun Microsystems, Inc. Hybrid queue and backoff computer resource lock featuring different spin speeds corresponding to multiple-states
US6182186B1 (en) 1998-06-30 2001-01-30 Sun Microsystems, Inc. Method and apparatus that utilizes lock states to lock resources
US6295610B1 (en) 1998-09-17 2001-09-25 Oracle Corporation Recovering resources in parallel
US6298478B1 (en) 1998-12-31 2001-10-02 International Business Machines Corporation Technique for managing enterprise JavaBeans (™) which are the target of multiple concurrent and/or nested transactions
US6457065B1 (en) * 1999-01-05 2002-09-24 International Business Machines Corporation Transaction-scoped replication for distributed object systems
TW429705B (en) 1999-05-15 2001-04-11 Via Tech Inc Shared memory allocation method to improve the accessing efficiency
JP2001216259A (ja) * 2000-02-04 2001-08-10 Hitachi Ltd マルチプロセッサシステム及びそのトランザックション制御方法
US6651073B1 (en) * 2000-05-23 2003-11-18 International Business Machines Corporation Method and apparatus for insuring database data integrity without data recovery logging
EP1323071A2 (en) * 2000-07-28 2003-07-02 Xymphonic Systems AS Method, system and data structures for implementing nested databases
US6671686B2 (en) * 2000-11-02 2003-12-30 Guy Pardon Decentralized, distributed internet data management
US6772154B1 (en) 2000-11-16 2004-08-03 Sun Microsystems, Inc. Implementation of nested databases using flexible locking mechanisms
US6993523B1 (en) * 2000-12-05 2006-01-31 Silicon Graphics, Inc. System and method for maintaining and recovering data consistency in a data base page
US6850938B1 (en) 2001-02-08 2005-02-01 Cisco Technology, Inc. Method and apparatus providing optimistic locking of shared computer resources
US7346632B2 (en) * 2001-02-22 2008-03-18 International Business Machines Corporation Mechanism for executing nested transactions in an execution environment supporting flat transactions only
JP3732113B2 (ja) 2001-05-14 2006-01-05 株式会社八十二銀行 トランザクション制御システム、方法及びプログラム
US6983395B2 (en) * 2001-05-23 2006-01-03 Hewlett-Packard Development Company, L.P. Multi-agent cooperative transaction method and system
US6901491B2 (en) 2001-10-22 2005-05-31 Sun Microsystems, Inc. Method and apparatus for integration of communication links with a remote direct memory access protocol
GB0130399D0 (en) 2001-12-19 2002-02-06 Ibm Message ordering in a messaging system
US6754737B2 (en) * 2001-12-24 2004-06-22 Hewlett-Packard Development Company, L.P. Method and apparatus to allow dynamic variation of ordering enforcement between transactions in a strongly ordered computer interconnect
US6785779B2 (en) 2002-01-09 2004-08-31 International Business Machines Company Multi-level classification method for transaction address conflicts for ensuring efficient ordering in a two-level snoopy cache architecture
US7234076B2 (en) 2002-02-15 2007-06-19 Sun Microsystems, Inc. Multi-level undo of main-memory and volatile resources
US6990503B1 (en) 2002-04-12 2006-01-24 Ncr Corporation Rescheduling transactions in a database system
US9886309B2 (en) 2002-06-28 2018-02-06 Microsoft Technology Licensing, Llc Identity-based distributed computing for device resources
GB0215808D0 (en) * 2002-07-09 2002-08-14 Ibm A system and method for managing transactions in a messaging system
US7328316B2 (en) * 2002-07-16 2008-02-05 Sun Microsystems, Inc. Software transactional memory for dynamically sizable shared data structures
US7076508B2 (en) 2002-08-12 2006-07-11 International Business Machines Corporation Method, system, and program for merging log entries from multiple recovery log files
US7089253B2 (en) 2002-09-13 2006-08-08 Netezza Corporation Computer method and system for concurrency control using dynamic serialization ordering
JP2004157776A (ja) 2002-11-06 2004-06-03 Nec Corp アプリケーションの処理方法およびシステム
US7116011B2 (en) 2002-12-31 2006-10-03 Intel Corporation CPU surge reduction and protection
US6898685B2 (en) 2003-03-25 2005-05-24 Emc Corporation Ordering data writes from a local storage device to a remote storage device
US7289992B2 (en) 2003-05-01 2007-10-30 International Business Machines Corporation Method, system, and program for lock and transaction management
US7496574B2 (en) 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
US7418706B1 (en) 2003-05-08 2008-08-26 Teradota Us, Inc. Rescheduling table scan transactions
US7673307B2 (en) * 2003-05-29 2010-03-02 International Business Machines Corporation Managing transactions in a messaging system
US7739252B2 (en) 2003-07-14 2010-06-15 Oracle America, Inc. Read/write lock transaction manager freezing
TW200532560A (en) 2003-11-13 2005-10-01 Qualcomm Inc System and method for dynamically simulating devices at a computing device
US7240054B2 (en) * 2004-02-27 2007-07-03 International Business Machines Corporation Techniques to preserve data constraints and referential integrity in asynchronous transactional replication of relational tables
US7574274B2 (en) 2004-04-14 2009-08-11 Nvidia Corporation Method and system for synchronizing audio processing modules
GB0409326D0 (en) 2004-04-27 2004-06-02 Ibm Locker manager for managing access to shared resources
US7428539B2 (en) 2004-06-21 2008-09-23 Microsoft Corporation Method, system, and apparatus for managing access to a data object
US7266571B2 (en) * 2004-07-27 2007-09-04 International Business Machines Corporation Method and system for scheduling a partial ordered transactions for event correlation
US7685365B2 (en) * 2004-09-30 2010-03-23 Intel Corporation Transactional memory execution utilizing virtual memory
ITMI20041957A1 (it) * 2004-10-15 2005-01-15 St Microelectronics Srl Dispositivo di memoria
US7318064B2 (en) * 2004-10-28 2008-01-08 International Business Machines Corporation Using MD4 checksum as primary keys to link transactions across machines
ATE521207T1 (de) 2004-11-30 2011-09-15 Ericsson Telefon Ab L M Verfahren zur smm-fähigkeitsverteilung
US8363730B2 (en) 2004-12-16 2013-01-29 Intel Corporation Local macroblock information buffer
US7490215B2 (en) 2004-12-22 2009-02-10 Intel Corporation Media memory system and method for providing concurrent memory access to a plurality of processors through separate translation table information
US7593943B2 (en) 2005-01-14 2009-09-22 Microsoft Corporation Method and system for synchronizing multiple user revisions to a shared object
US7376675B2 (en) 2005-02-18 2008-05-20 International Business Machines Corporation Simulating multi-user activity while maintaining original linear request order for asynchronous transactional events
US7334076B2 (en) 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7949551B2 (en) * 2005-04-06 2011-05-24 International Business Machines Corporation Processing of compensation scopes in workflow management systems
EP1872555A4 (en) * 2005-04-18 2008-07-02 Research In Motion Ltd TRANSACTION MANAGEMENT SYSTEM AT TANK LEVEL AND METHOD THEREFOR
US7756846B2 (en) 2005-07-01 2010-07-13 Sap Aktiengesellschaft Methods and systems for propagating locks through nested logical units of work
US7702686B2 (en) 2005-07-29 2010-04-20 Microsoft Corporation Retrieving and persisting objects from/to relational databases
US8099726B2 (en) * 2005-12-07 2012-01-17 Microsoft Corporation Implementing strong atomicity in software transactional memory
US20070136725A1 (en) 2005-12-12 2007-06-14 International Business Machines Corporation System and method for optimized preemption and reservation of software locks
US7730286B2 (en) 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US20070186056A1 (en) 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US8065499B2 (en) * 2006-02-22 2011-11-22 Oracle America, Inc. Methods and apparatus to implement parallel transactions
US8099538B2 (en) 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
US7840540B2 (en) * 2006-04-20 2010-11-23 Datascout, Inc. Surrogate hashing
US7792805B2 (en) * 2006-05-30 2010-09-07 Oracle America, Inc. Fine-locked transactional memory
US7478210B2 (en) 2006-06-09 2009-01-13 Intel Corporation Memory reclamation with optimistic concurrency
US7434010B2 (en) * 2006-08-04 2008-10-07 Microsoft Corporation Combined pessimistic and optimisitic concurrency control
US7650371B2 (en) * 2006-12-14 2010-01-19 Microsoft Corporation Finalizable object usage in software transactions
US7669040B2 (en) * 2006-12-15 2010-02-23 Sun Microsystems, Inc. Method and apparatus for executing a long transaction
US8321637B2 (en) * 2007-05-14 2012-11-27 International Business Machines Corporation Computing system with optimized support for transactional memory
US7962456B2 (en) 2007-06-27 2011-06-14 Microsoft Corporation Parallel nested transactions in transactional memory
US8719514B2 (en) * 2007-06-27 2014-05-06 Intel Corporation Software filtering in a transactional memory system
US7890707B2 (en) * 2007-06-27 2011-02-15 Microsoft Corporation Efficient retry for transactional memory
US7899999B2 (en) * 2007-06-27 2011-03-01 Microsoft Corporation Handling falsely doomed parents of nested transactions
US7516365B2 (en) * 2007-07-27 2009-04-07 Sun Microsystems, Inc. System and method for split hardware transactions
US7890472B2 (en) * 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US7840530B2 (en) 2007-09-18 2010-11-23 Microsoft Corporation Parallel nested transactions in transactional memory
CN100568184C (zh) * 2007-12-27 2009-12-09 电子科技大学 协同编辑中数据冲突模块的加锁方法
US10210018B2 (en) 2008-12-24 2019-02-19 Intel Corporation Optimizing quiescence in a software transactional memory (STM) system
US8095824B2 (en) * 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001188696A (ja) * 2000-11-20 2001-07-10 Toshiba Corp トランザクション処理の管理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6013014756; Kunal AGRAWAL et al.: 'Nested Parallelism in Transactional Memory' THE SECOND ACM SIGPLAN WORKSHOP ON TRANSACTIONAL COMPUTING , 20070816, pages1-12 *

Also Published As

Publication number Publication date
TW200915071A (en) 2009-04-01
US7890472B2 (en) 2011-02-15
TWI431474B (zh) 2014-03-21
EP2191372A4 (en) 2011-11-02
BRPI0814455A2 (pt) 2015-01-06
US9411635B2 (en) 2016-08-09
CN102929702A (zh) 2013-02-13
US20130018860A1 (en) 2013-01-17
CN101889266B (zh) 2013-06-12
WO2009039118A3 (en) 2009-05-28
EP2191372B1 (en) 2018-04-11
CN102929702B (zh) 2016-04-27
US8271465B2 (en) 2012-09-18
US20090077083A1 (en) 2009-03-19
US20110138145A1 (en) 2011-06-09
HK1179718A1 (zh) 2013-10-04
EP2191372A2 (en) 2010-06-02
WO2009039118A2 (en) 2009-03-26
CN101889266A (zh) 2010-11-17

Similar Documents

Publication Publication Date Title
JP2010539609A (ja) トランザクショナルメモリにおける並列入れ子状トランザクション
US7962456B2 (en) Parallel nested transactions in transactional memory
US8271464B2 (en) Parallel nested transactions in transactional memory
US8595446B2 (en) System and method for performing dynamic mixed mode read validation in a software transactional memory
US7676638B2 (en) Combined pessimistic and optimistic concurrency control
KR101203297B1 (ko) 직접 업데이트 소프트웨어 트랜잭션 메모리
US8473950B2 (en) Parallel nested transactions
US8700585B2 (en) Optimistic locking method and system for committing transactions on a file system
JP4923142B2 (ja) 入れ子トランザクションの親の不正な失敗への対処
EP0457473A2 (en) Apparatus and method for accessing shared data
US7895582B2 (en) Facilitating stack read and write operations in a software transactional memory system
Padhye et al. Scalable transaction management with snapshot isolation on cloud data management systems

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110908

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110908

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130318

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130329

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130701

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130717

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130828