JP5435741B2 - 競合管理を容易にするための型固定性の使用 - Google Patents

競合管理を容易にするための型固定性の使用 Download PDF

Info

Publication number
JP5435741B2
JP5435741B2 JP2010514981A JP2010514981A JP5435741B2 JP 5435741 B2 JP5435741 B2 JP 5435741B2 JP 2010514981 A JP2010514981 A JP 2010514981A JP 2010514981 A JP2010514981 A JP 2010514981A JP 5435741 B2 JP5435741 B2 JP 5435741B2
Authority
JP
Japan
Prior art keywords
transaction
data structure
computer
transaction data
reference count
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.)
Active
Application number
JP2010514981A
Other languages
English (en)
Other versions
JP2010532531A (ja
JP2010532531A5 (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 JP2010532531A publication Critical patent/JP2010532531A/ja
Publication of JP2010532531A5 publication Critical patent/JP2010532531A5/ja
Application granted granted Critical
Publication of JP5435741B2 publication Critical patent/JP5435741B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

Landscapes

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

Description

本発明は、競合管理を向上させる方法に関する。より詳細には、本発明は、型固定方法を提供して競合管理を向上させる方法および参照カウントメカニズムを使用して競合管理を容易にする方法に関する。
トランザクショナルメモリ(transactional memory)は、並列プログラムがさらに単純に書き込みされることを可能とするメカニズムである。トランザクションは、実行するコードの順序を、あたかも当該コードが別々に実行されるが如く特定する。実際、トランザクションは、並列して実行可能なので、データアクセスのコンフリクト(conflict)が検出される。コンフリクトが発生したときに何をするかの判定、すなわち「競合管理(contention management)」は、トランザクションシステムの性能に大きな影響を及ぼす。
しかし、競合マネージャの実装においては重大な根本的問題が存在する。トランザクションTx1がトランザクションTx2との競合を検出すると仮定する。Tx2が、Tx1もロックすることを望むデータアイテムにおけるペシミスティック書き込みロック(pessimistic write lock)を保持するかもしれない。いくつかの場合において、競合マネージャがTx1にロックを取得することを可能とさせてTx2を停止することは、理にかなっている。Tx2が短くかつTx1が長いために、Tx2のワーク(work)を停止した後に再実行(Redo)するコストがTx1のワークを再実行するよりも著しく低いかもしれない。
しかし、この例示の場合、Tx1は競合を通知されるので、競合管理判定のロジックを実行するのに適していると思われる。しかし、このようにするためには、Tx1は、Tx2の実行に関する統計、Tx2のトランザクションログの内容等のTx2に関する情報が必要であるか、またはTx2を自発的に停止させて取得したロックを解放することを要求する必要があるかもしれない。この情報は、トランザクションTx2を示すデータ構造内に存在するのが最も普通である。効率性のために、当該データ構造は、任意のグローバル(広範)なデータ構造内ではなく、Tx2を実行するスレッドだけに保持されるのが望ましい。当該トランザクショナルメモリシステムは、共有され得るデータアイテムの各々をカバーするいくつかのロックデータ構造(locking data structure)を定義する。ある場所が書き込みロックされた場合、このロックデータ構造は、当該ロックを保持するトランザクションの何かしらの表示(indication)を含む。Tx1が、アクセスしようとしたデータアイテムが書き込みロックされていることを認識した場合、Tx1は、そのロックデータ構造を読み込んでTx2のID(identity)を認識することが可能である。この問題の最も困難な点は、Tx1が一度Tx2を示すデータ構造へのポインタを取得して当該データ構造から情報を読み込む準備をした時点で、Tx2が完了し得、当該データ構造の割り当てが解除され(deallocate)得、他の目的のために再割り当て(reallocate)されてしまうかもしれないことである。この場合、Tx1がTx2に関して読み込む情報は不安定である。
様々な技術及び方法は、競合管理を強化する型固定方法を提供するために開示される。トランザクショナルメモリシステムは、トランザクションに他のトランザクションを示すデータ構造を安全に分析することを可能とさせる参照カウント(reference counting)メカニズムを提供する。2つのトランザクション間のコンフリクトの解消(「競合管理」と称される)は、参照カウントメカニズムを使用することで容易になる。例えば、1のトランザクションが他のトランザクションが所有する排他的ロックを取得しようと試行する故に、所有トランザクション(owning transaction)に関する情報が取得される。当該所有トランザクションを示すデータ構造の参照カウントがインクリメントされる。当該システムは、正確なトランザクションデータ構造の参照カウントがインクリメントされることを保証して、当該データ構造の割り当てが解除されること及び当該データ構造が再割り当てされて他のトランザクションを示すことを防止する。当該所有トランザクションが、コンフリクトを起こしたロックを保持し続けている場合、当該所有トランザクションデータ構造内の情報は、2つのトランザクションの1つを停止するかまたは当該所有トランザクションが当該ロックを解放するのを待つかのどちらを行うかを決定する競合管理判定に情報を提供する。
競合管理判定が行われた場合、当該所有トランザクションデータ構造の参照カウントは、以前に当該参照カウントをインクリメントした当該コンフリクトしているトランザクションによってデクリメントされる。トランザクションデータ構造の各々の参照カウントは1から始まり、各々のトランザクションが完了すると、当該各々のトランザクションは、自身のデータ構造の参照カウントをデクリメントする。他のスレッド内のコンフリクトしているトランザクションが当該データ構造にアクセスしている間、0でない参照カウントがトランザクションデータ構造の割り当ての解除を防止する。データ構造は、参照カウントが0になった際に割り当てを解除され得る。
1つの実装例において、専用の型固定アロケーションプール(type stable allocation pool)は、不安定属性(unstable attribute)を使用して減少させられ得る。スレッド不安定属性は、トランザクションデータ構造へのポインタがスレッドによって取得される前に設定され、当該ポインタの使用が完了した後に解除される。ガーベジコレクションが停止している間、スレッド不安定属性がいずれのスレッドにおいても設定されていない場合、型固定アロケーションプール内のオブジェクトは、削除のみされ得る。
この発明の概要は、「発明を実施するための形態」において詳述されるいくつかの概念を、単純な形式で紹介するために提供される。この発明の概要は、特許請求の範囲に記載の発明の重要な特徴または本質的な特徴を特定することを意図しておらず、特許請求の範囲に記載の発明の範囲を決定するために使用されることも意図していない。
1つの実装例のコンピュータシステムの略図である。 図1のコンピュータシステム上で動作する1つの実装例のトランザクショナルメモリアプリケーションの略図である。 図1のシステムの1つの実装例のハイレベルプロセスフロー図である。 図1のシステムの1つの実装例のプロセスフロー図であって、トランザクションログセグメントを型固定とするステップに含まれるステージを示した図である。 図1のシステムの1つの実装例のプロセスフロー図であって、トランザクションデータ構造を型固定とするステップに含まれるステージを示した図である。 図1のシステムの1つの実装例のプロセスフロー図であって、参照カウントメカニズムを使用するロックを保持するトランザクションによって行われる動作を示す図である。 図1のシステムの1つの実装例のプロセスフロー図であって、競合を通知する参照カウントメカニズムを使用するトランザクションによって行われる動作を示す図である。 2つのトランザクション間で参照カウントメカニズムを使用する1つの実装例の略図である。 図1のシステムの1つの実装例のプロセスフロー図であって、不安定属性を使用して専用の型固定アロケーションプールを減少させるステップ内に含まれるステージを示す図である。 型固定メモリへのポインタの位置をトラッキングすることによって専用の型固定アロケーションプールを減少させる代替実装例を示したプロセスフロー図である。
本明細書内の技術及び方法は、全体としてトランザクショナルメモリに関して説明され得るが、当該技術及び方法はこれらに加えて他の用途も提供する。1つの実装例において、本明細書で説明される1または複数の方法がMicrosoft(登録商標).NET Framework等のフレームワークプログラム内の特徴として実装され得るか、または開発者にソフトウェアアプリケーションを開発するためのプラットフォームを提供する任意の他のタイプのプログラムもしくはサービスによって実装され得る。他の実装例において、本明細書で説明される1または複数の方法は、同時実行環境において実行されるアプリケーションの開発に対応する他のアプリケーションに特徴として実装される。
1つの実装例において、型固定方法を使用してロックフリーな競合管理が可能とされるトランザクショナルメモリシステムが提供される。1つの実装例において、1のトランザクションが他のトランザクションを示すデータ構造を安全に分析することが可能とされる参照カウントメカニズムが提供される。本明細書で使用される用語「参照カウントメカニズム」は、他のトランザクションが特定の時点において所与のトランザクションデータ構造に関心を有するかどうかを示す当該所与のトランザクションデータ構造に関する数または他のデータをトラッキングする方法、及び他のトランザクションが関心を有している間に当該所与のトランザクションデータ構造が割り当てを解除される(型固定アロケーションプールに戻される)ことを回避する方法を含む。本明細書で使用される用語「型固定アロケーションプール」は、メモリのプール(pool)を意味し、オブジェクトが当該メモリのプールから特別な方法で割り当てられる。すなわち、一度ブロックが割り当てられてオブジェクトの型Tが示されると、当該メモリは他の型Uを示すために再使用されることはない。従って、当該Tへのポインタは、いつでもTを示すと仮定され得る。本明細書で使用される用語「安全に分析する(safely examine)」は、分析の処理中に分析されているデータが割り当てを解除されることを許容しない態様でデータを分析する能力を含む。トランザクションデータ構造の参照カウントは、当該トランザクションデータ構造への関心を示すトランザクションによって互いにインクリメントされる。参照カウントの各々は、関心が無くなった際にデクリメントされる。もちろん、トランザクションの各々は、当該トランザクションの各々を示すデータ構造に「関心(interest)」を有するので、これらは参照カウント1とともに割り当てられ、トランザクションが完了すると、このトランザクションデータ構造の参照カウントはデクリメントされる。データ構造は、当該データ構造の参照カウントがゼロになるまで割り当てを解除され得ない。他の実装例において、専用の型固定アロケーションプールは、ガーベジコレクタによって認識される不安定属性を使用することによって安全に解放され得る。スレッド不安定属性は、トランザクションデータ構造へのポインタがスレッドによって取得され得る前に設定され、当該ポインタの全ての使用が完了した後にリセットされる。ガーベジコレクションが停止している間、スレッド不安定属性がいずれのスレッドにおいても設定されていない場合には、型固定アロケーションプール内のオブジェクトは、削除されることのみが可能である。
図1に示されているように、当該システムの1または複数の部分を実装するために使用する例示のコンピュータシステムは、コンピュータデバイス100などのコンピュータデバイスを含む。最も基本的な構成において、コンピュータデバイス100は、通常は、少なくとも1つの処理ユニット102及びメモリ104を含む。コンピュータデバイスの構成及びタイプに応じて、メモリ104は、揮発性(RAM等)、不揮発性(ROM、フラッシュメモリ等)またはこれら2つの組み合わせであり得る。この最も基本的な構成は、破線106によって図1に示されている。
さらに、デバイス100は、追加の特徴/機能を有してもよい。例えば、デバイス100は、追加の記憶装置(リムーバブル/非リムーバブル)を含んでも良く、当該記憶装置は、限定する訳はないが、磁気ディスクもしくはテープまたは光学ディスクもしくはテープを含む。このような追加の記憶装置は、リムーバブル記憶装置108及び非リムーバブル記憶装置110によって図1に示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータ等の情報を記憶する任意の方法または技術において実装される揮発性及び不揮発性媒体、リムーバブル及び非リムーバブル媒体を含む。メモリ104、リムーバブル記憶装置108及び非リムーバブル記憶装置110は、全てコンピュータ記憶媒体の例示である。コンピュータ記憶媒体は、限定するわけではないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、DVD(digital versatile disk)または他の光学記憶媒体、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイスまたは任意の他の媒体であって、所望の情報を保存するために使用可能でありかつデバイス100によってアクセスされることが可能である媒体を含む。このようなコンピュータ記憶媒体の全ては、デバイス100の一部であり得る。
コンピュータデバイス100は、1または複数の通信接続114を含み、通信接続114は、コンピュータデバイス100が他のコンピュータ/アプリケーション115と通信することを可能とする。デバイス100は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス等の入力デバイス112を有していてもよい。ディスプレイ、スピーカ、プリンタ等の出力デバイス111も含まれ得る。これらのデバイスは、当技術分野で周知であるので、ここにおいて詳細に説明する必要は無い。1つの実装例において、コンピュータデバイス100は、トランザクショナルメモリアプリケーション200を含む。トランザクショナルメモリアプリケーション200は、図2で詳述されるだろう。
図1を参照しつつ図2をみると、コンピュータデバイス100上で動作するトランザクショナルメモリアプリケーション200が示されている。トランザクショナルメモリアプリケーション200は、コンピュータデバイス100上に存在するアプリケーションプログラムの1つである。しかし、トランザクショナルメモリアプリケーション200は、代替的にまたは追加的に、1または複数のコンピュータ及び/または図1に示されたのと異なる変形例にコンピュータ実行可能命令として含まれ得ることが理解されるだろう。代替的にまたは追加的に、トランザクショナルメモリアプリケーション200の1または複数の部分は、システムメモリ104の一部であり得、これらは他のコンピュータ及び/またはアプリケーション115上に存在し得る。さらに、コンピュータソフトウェア技術分野の当業者が想到するだろう他の変形例も採用することができる。
トランザクショナルメモリアプリケーション200は、プログラムロジック(program logic)204を含む。プログラムロジック204は、本明細書で説明されるいくつかまたは全ての技術の実行に関与する。プログラムロジック204は、競合マネージャを提供するロジック206、トランザクションログセグメントを型固定とするロジック208(図4を参照して以下に説明される)、トランザクションデータ構造を型固定とするロジック210(図5を参照して以下に説明される)、参照カウントメカニズムを使用して第1のトランザクションが第2のトランザクションの状態を安全に分析することを可能とするロジック212(図6〜図8を参照して以下に説明される)、専用の型固定アロケーションプールを必要に応じて減少させるロジック214(図9〜図10を参照して以下に説明される)及びアプリケーションを動作させる他のロジック220を含む。
図1〜図2を参照しつつ図3〜図10をみると、トランザクショナルメモリアプリケーション200の1または複数の実装例の実装のためのステージが、さらに詳細に説明されている。いくつかの実装例において、図3〜図10のプロセスは、コンピュータデバイス100のロジックの動作において少なくとも部分的に実装される。図3は、トランザクショナルメモリアプリケーション200のハイレベルプロセスフロー図である。図3はある順序において記載されているが、順序は意図されたものではなく、図3に示された特徴及び/または動作は、他の順序で提供及び/または実行され得る。当該プロセスは、スタートポイント240で開始し、図4で詳述されているように、トランザクションログセグメントを型固定とする(ステージ242)。型固定は、型固定ポインタによって指し示されたオブジェクトが当該示されたタイプであることを保証する。同時実行環境において、指示対象のオブジェクトのコンテンツは、並列スレッドによって変更させられ得るが、当該オブジェクトの型は変化しないだろう。当該システムは、図5に詳述されているようにトランザクションデータ構造を型固定とする(ステージ244)。図6〜図8に詳述されているように、参照カウントメカニズムが使用されて、関心を持たれているトランザクションデータ構造の割り当て解除を他のトランザクションが防止することが可能とされる(ステージ246)。図9及び図10に詳述されているように、当該システムは、必要に応じて専用の型固定アロケーションプールを選択的に減少させる(ステージ248)。当該プロセスは、エンドポイント250で終了する。
図4は、トランザクションログセグメントを型固定とするステージの1つの実装例を示している。図4はある順序において記載されているが、順序は意図されたものではなく、図4に示された特徴及び/または動作は、他の順序で提供及び/または実行され得る。当該プロセスは、スタートポイント270で開始し、ポインタがログセグメント内へのポインタである場合に、その後も当該ポインタが同じ状態であり続けることを保証する(ステージ272)。当該システムは、全てのログセグメントを同一サイズとし、それらの割り当てサイズに従って整列させる(ステージ274)。当該システムは、データ構造の所有トランザクションを示すデータ構造へのポインタからログセグメントの各々を開始する(ステージ276)。ログセグメント内の書き込みログエントリへのポインタが与えられ、ログセグメントの開始点へのポインタが演算され得る(ステージ278)。当該プロセスは、エンドポイント280で終了する。
図5は、トランザクションデータ構造を型固定とすることに関するステージの1つの実装例を示している。当該プロセスは、スタートポイント290で開始し、増大するのみのトランザクションデータ構造のグローバルプール(global pool)を提供する(ステージ292)。割り当てをさらに効果的にするために、それらの中サイズの(medium sized)チャンク(chunk)がスレッドローカルアロケーションプールに与えられる(ステージ294)。このことは、トランザクションデータ構造への所与のポインタが安全にデリファレンス(dereference)できるようにする。当該プロセスは、エンドポイント298で終了する。
図6は、参照カウントメカニズムに関与しているロック保持トランザクションによって行われる動作の1つの実装例を示している。当該プロセスは、310で開始し、新規に割り当てられたトランザクションデータ構造に参照カウント1を与え、当該トランザクションデータ構造が示すトランザクションによる使用を示す(ステージ312)。トランザクションの各々が完了した際、当該トランザクションの各々は、自身のトランザクションデータ構造の参照カウントをデクリメントする(ステージ314)。参照カウントが0になる場合、当該データ構造は割り当てを解除され得る(ステージ316)。参照カウントが0よりも大きい場合、当該データ構造は割り当てを解除されず、割り当て解除義務は、最終的に参照カウントを0まで減少させるトランザクションに回される(ステージ318)。当該プロセスはエンドポイント320で終了する。
図7は、競合を通知する参照カウントメカニズムに関与しているトランザクションによって行われる動作の1つの実装例を示している。当該プロセスは、スタートポイント340で開始し、オブジェクト内のロック情報を追跡して、所有している可能性のあるトランザクションを示すデータ構造へのポインタを取得する(ステージ342)。参照カウントは、当該所有している可能性のあるトランザクションのデータ構造内でインクリメントされる(ステージ344)。当該オブジェクト内のロック情報を再度追跡し、正確なトランザクションデータ構造の参照カウントがインクリメントされたかを判定する(判定ポイント346)。当該ロック情報が同一のトランザクションデータ構造に付随し続けている場合、当該トランザクションデータ構造は、「正確なトランザクション」に関するものである。当該正確な参照カウントがインクリメントされていなかった場合、当該所有している可能性のあるトランザクションのデータ構造の参照カウントがデクリメントされ、ロックがさらに高いレベルで再試行される(ステージ348)。
当該正確なトランザクションデータ構造の参照カウントがインクリメントされていた場合(判定ポイント346)、競合しているトランザクションを停止するかもしくは自身(当該競合を知されたトランザクション)を停止するかまたは当該競合しているトランザクションが当該ロックを解放するのを待つか、について競合管理判定が行われる(ステージ350)。その後、所有トランザクションデータ構造の参照カウントがデクリメントされ、当該デクリメントが当該参照カウントを0にする場合、当該データ構造は削除される(ステージ352)。当該プロセスはエンドポイント354で終了する。
図8は、2つのトランザクション間での参照カウントメカニズムの使用の1つの実装例の略図である。第1のトランザクション362は、データ構造364及びトランザクションログセグメント366を有する。第2のトランザクション363も、データ構造365及びトランザクションログセグメント367を有する。第2のトランザクション363が、競合オブジェクト369の故に第1のトランザクション362のデータ構造に関心を示す場合、第2のトランザクション363は、当該競合オブジェクト369内のロック情報を読み込んで当該オブジェクトがロックされていることを認識し、第1のトランザクション362が当該ロックを保持していることを認識する。この実装例において、競合オブジェクト369内の当該ロック情報は、ロックしているトランザクション362のログ内のエントリ(entry)へのポインタを含み、当該ログは当該ロックに関するさらなる情報を含んでいる。上述したように、ログセグメントは、当該ログセグメントの所有トランザクションデータ構造364へのポインタを含んでいる。他の実装例において、他のロックメカニズムが使用されて、ロックを所有するトランザクションに関するデータ構造が認識され得る。例えば、ロック情報は、所有トランザクションを直接的に示してもよく、ログセグメント366内のログエントリ内に保存されたロックに関する他の情報は、当該ロックされたオブジェクトのアドレスによってインデックス化されたハッシュテーブル(hash table)内に保持されてもよい。
第2のトランザクションは、第1のトランザクション362のデータ構造364内の参照カウント(当該インクリメント後、2の値で示される)をインクリメントする。当該第1のトランザクションを実行しているスレッドは、このプロセスの間には停止されない。当該スレッドは、実行を継続して当該スレッドのトランザクションワーク(transactional work)362を完了し、それを示すデータ構造364の割り当てを解除する。このデータ構造は、再割り当てされて第3のトランザクションを示してもよい。参照カウントのインクリメントの目的は、割り当て解除を防止することであるが、当該インクリメントはこれらのステップの後に生起し得、当該データ構造が割り当てを解除されるかまたは他のトランザクションを示すこともある。従って、第2のトランザクション363は、当該参照カウントのインクリメントの後に、データ構造364が関心のあるトランザクションを示し続けているか確認する必要がある。第2のトランザクション363は、競合オブジェクト369内のロック情報を再度チェックし、競合オブジェクト369が同一のトランザクションデータ構造364に付随し続けているかを確認する。競合オブジェクト369が付随し続けていない場合、競合オブジェクト369のロック情報は、既に変更されている。従って、ロックプロセスが成功してから、最初からロックプロセスを再試行する。競合オブジェクト369が同一のトランザクションデータ構造364に付随し続けている場合、トランザクション363は、第1のトランザクション362のデータ構造364へのポインタ368を取得するので、データ構造364を安全に分析して競合オブジェクト369に関する競合管理判定を容易にすることが可能である。第2のトランザクション363が完了した場合、第2のトランザクション363は、第1のトランザクション362内のデータ構造364の参照カウントをデクリメントして、第2のトランザクション363が当該データ構造にはもう関心を有さないことを示す。特定のトランザクションデータ構造は、当該データ構造の参照カウントが、当該データ構造のデータに関心を有するトランザクションがもはや存在しないことを意味する0になるまで割り当てを解除され得ない。トランザクション362が以前に完了していた場合、トランザクション363によるデクリメントがトランザクションデータ構造364の参照カウントを0にし得る。この場合、トランザクション363は、当該データ構造の割り当てを解除しなければならない。
図9は、不安定属性を使用した専用の型固定アロケーションプールを減少させるステージの1つの実装例を示す。当該プロセスは、スタートポイント370で開始し、現在のスレッドに不安定ビットを設定する(ステージ372)。その後、競合しているトランザクションへのポインタが取得される(ステージ374)。1つの実装例において、スレッドの各々は、トランザクションデータ構造へのポインタの可能性のある取得の前に、不安定属性を設定しなければならない。競合管理判定が行われてコンフリクトが解消される(ステージ376)。競合管理判定が一度行われると、当該競合しているトランザクションへのポインタは、もはや使用されない(ステージ376)。従って、現在のスレッドにおいて不安定ビットが解除される(ステージ378)。1つの実装例において、全てのスレッドがガーベジコレクションで停止され、かついずれのスレッドもセットされた不安定属性を持たない場合、型固定アロケーションプール内のオブジェクトが割り当てを解除され得る。この割り当て解除は、削除されたメモリがオペレーティングシステムに返還され、再割り当てされて他の型を示し得るので型固定ではない。当該プロセスは、エンドポイント380で終了する。
図10は、図9の実装例の代替例を示しており、型固定メモリへのポインタの位置のトラッキングによって専用の型固定アロケーションプールを減少させるステージを示している。当該プロセスは、スタートポイント400で開始し、競合管理を実行しているスレッドを要求して、型固定メモリへのポインタの位置を宣言(declare)する(ステージ402)。当該システムは、型固定アロケーションプールにおいてガーベジコレクションのようなプロセスを実行し、使用されているエレメントを認識する(ステージ404)。当該システムは、残存する型固定アロケーションプールのいくつかの割り当てを選択的に解除する(ステージ406)。当該プロセスは、エンドポイント408で終了する。
本発明は、特に構造的特徴及び/または方法的動作に関して説明されてきたが、添付の特許請求の範囲によって画定された本発明は、上述の特定の特徴または動作に必ずしも限定されないと理解されるべきである。上述の特定の特徴及び動作は、特許請求の範囲記載発明の実施の例示の形態として開示されているだけである。本明細書及び/または添付の特許請求の範囲に記載されている実装例の精神内にある全ての均等物、変形例及び変更例は、保護されるべきものである。
例えば、コンピュータソフトウェア技術分野の当業者は、本明細書で説明された例が1または複数のコンピュータで組織されて、例示において示されたものより少ないもしくはさらに追加のオプションまたは特徴を含み得ることを理解するであろう。

Claims (4)

  1. 参照カウントメカニズムを使用して競合管理を容易にするコンピュータ実行方法であって、
    複数のトランザクションデータ構造をコンピュータが割り当てるステップであって、トランザクションデータ構造を型固定にし、前記トランザクションデータ構造の型が変化しないことを保証するが前記トランザクションデータ構造のコンテンツが並列して実行されているトランザクションによって変更されることを可能にすることを含む、ステップと、
    2つのトランザクション間でコンフリクトが発生したことが検出される場合に、2つのトランザクションのうちの1つである所有トランザクションに関する情報を前記コンピュータが取得するステップであって、前記検出および取得が前記2つのトランザクションのうちの第2のトランザクションによって行われる、ステップと、
    前記所有トランザクションに付随する特定のトランザクションデータ構造内の参照カウントを前記コンピュータがインクリメントするステップと、
    正確なトランザクションデータ構造の参照カウントがインクリメントされたかどうかを前記コンピュータが判定するステップと、
    前記正確なトランザクションデータ構造の参照カウントがインクリメントされたと判定される場合に、前記所有トランザクションを停止するか否か、前記第2のトランザクションを停止するか否か、または前記所有トランザクションを待つか否かを決定することを含む、前記コンフリクトを扱うやり方について前記コンピュータが競合管理判定を行うステップと、
    前記正確なトランザクションデータ構造の参照カウントがインクリメントされなかったと判定される場合に、前記コンピュータが、前記参照カウントをデクリメントし、さらに高いレベルでのロックを再試行するステップと
    を含むことを特徴とする方法。
  2. 前記判定するステップは、オブジェクト内のロック情報を追跡して前記所有トランザクション情報を取得することによって行われることを特徴とする請求項に記載の方法。
  3. 所有トランザクション情報が、オブジェクトに付随するロック情報を追跡することによって取得されることを特徴とする請求項に記載の方法。
  4. コンピュータによって実行されると、請求項に記載の方法を前記コンピュータに実行させるコンピュータ実行可能命令を有することを特徴とするコンピュータ読み取り可能な記憶媒体。
JP2010514981A 2007-06-29 2008-06-18 競合管理を容易にするための型固定性の使用 Active JP5435741B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/824,353 2007-06-29
US11/824,353 US7991967B2 (en) 2007-06-29 2007-06-29 Using type stability to facilitate contention management
PCT/US2008/067346 WO2009006025A2 (en) 2007-06-29 2008-06-18 Using type stability to facilitate contention management

Publications (3)

Publication Number Publication Date
JP2010532531A JP2010532531A (ja) 2010-10-07
JP2010532531A5 JP2010532531A5 (ja) 2011-07-21
JP5435741B2 true JP5435741B2 (ja) 2014-03-05

Family

ID=40161866

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010514981A Active JP5435741B2 (ja) 2007-06-29 2008-06-18 競合管理を容易にするための型固定性の使用

Country Status (6)

Country Link
US (2) US7991967B2 (ja)
EP (1) EP2176764B1 (ja)
JP (1) JP5435741B2 (ja)
CN (1) CN101689139B (ja)
TW (2) TWI515661B (ja)
WO (1) WO2009006025A2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6988161B2 (en) 2001-12-20 2006-01-17 Intel Corporation Multiple port allocation and configurations for different port operation modes on a host
US7991967B2 (en) 2007-06-29 2011-08-02 Microsoft Corporation Using type stability to facilitate contention management
US8924403B2 (en) * 2007-12-31 2014-12-30 Sap Se Method and system for central data querying
US8832401B2 (en) * 2011-01-26 2014-09-09 International Business Machines Corporation Iteratively de-allocating active objects associated with virtual functions of an adapter
US9411739B2 (en) * 2012-11-30 2016-08-09 Intel Corporation System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators
EP2972885B1 (en) * 2013-03-14 2020-04-22 Intel Corporation Memory object reference count management with improved scalability
US20160062655A1 (en) * 2014-08-28 2016-03-03 Endgame, Inc. System and Method for Improved Memory Allocation in a Computer System
WO2017011223A1 (en) * 2015-07-10 2017-01-19 Rambus, Inc. Thread associated memory allocation and memory architecture aware allocation
CN106599151A (zh) * 2016-12-07 2017-04-26 Tcl集团股份有限公司 一种Android工程无用资源并行清理的方法及系统

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4912629A (en) * 1986-06-26 1990-03-27 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Real-time garbage collection for list processing using restructured cells for increased reference counter size
US5701480A (en) * 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
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
US5842016A (en) * 1997-05-29 1998-11-24 Microsoft Corporation Thread synchronization in a garbage-collected system using execution barriers
WO2001016716A1 (en) * 1999-09-01 2001-03-08 Intel Corporation Branch instruction for processor architecture
US6513100B1 (en) * 2000-10-30 2003-01-28 Microsoft Corporation System and method for fast referencing a reference counted item
US7216136B2 (en) * 2000-12-11 2007-05-08 International Business Machines Corporation Concurrent collection of cyclic garbage in reference counting systems
US7769791B2 (en) * 2001-01-12 2010-08-03 Oracle America, Inc. Lightweight reference counting using single-target synchronization
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
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
US7003532B2 (en) * 2002-11-27 2006-02-21 Microsoft Corporation System and method for scaleable multiplexed transactional log recovery
US6898685B2 (en) * 2003-03-25 2005-05-24 Emc Corporation Ordering data writes from a local storage device to a remote storage device
CA2425033A1 (en) * 2003-04-08 2004-10-08 Ibm Canada Limited - Ibm Canada Limitee Multi-level locking hierarchy in a database with multi-dimensional clustering
US7343598B2 (en) * 2003-04-25 2008-03-11 Microsoft Corporation Cache-conscious coallocation of hot data streams
US7243088B2 (en) * 2003-08-06 2007-07-10 Oracle International Corporation Database management system with efficient version control
US7475093B2 (en) * 2004-10-15 2009-01-06 Microsoft Corporation Memory cache management in XML/relational data mapping
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
US8027288B2 (en) * 2005-04-22 2011-09-27 Nokia Corporation Reducing beacon slot acquisition time in distributed media access control network
US8065499B2 (en) * 2006-02-22 2011-11-22 Oracle America, Inc. Methods and apparatus to implement parallel transactions
US8028133B2 (en) * 2006-02-22 2011-09-27 Oracle America, Inc. Globally incremented variable or clock based methods and apparatus to implement parallel transactions
US7991967B2 (en) 2007-06-29 2011-08-02 Microsoft Corporation Using type stability to facilitate contention management

Also Published As

Publication number Publication date
TW200905568A (en) 2009-02-01
CN101689139A (zh) 2010-03-31
TWI455029B (zh) 2014-10-01
EP2176764A2 (en) 2010-04-21
US8578105B2 (en) 2013-11-05
US20110289288A1 (en) 2011-11-24
JP2010532531A (ja) 2010-10-07
EP2176764A4 (en) 2011-11-16
EP2176764B1 (en) 2015-07-15
US20090006405A1 (en) 2009-01-01
TW201426557A (zh) 2014-07-01
WO2009006025A2 (en) 2009-01-08
TWI515661B (zh) 2016-01-01
CN101689139B (zh) 2014-04-30
WO2009006025A3 (en) 2009-03-05
US7991967B2 (en) 2011-08-02

Similar Documents

Publication Publication Date Title
JP5435741B2 (ja) 競合管理を容易にするための型固定性の使用
EP2972885B1 (en) Memory object reference count management with improved scalability
US7908255B2 (en) Transactional memory using buffered writes and enforced serialization order
US8239635B2 (en) System and method for performing visible and semi-visible read operations in a software transactional memory
US8484438B2 (en) Hierarchical bloom filters for facilitating concurrency control
US8595446B2 (en) System and method for performing dynamic mixed mode read validation in a software transactional memory
KR101203297B1 (ko) 직접 업데이트 소프트웨어 트랜잭션 메모리
US8065490B2 (en) Hardware acceleration of strongly atomic software transactional memory
US9513959B2 (en) Contention management for a hardware transactional memory
US7899997B2 (en) Systems and methods for implementing key-based transactional memory conflict detection
US7860847B2 (en) Exception ordering in contention management to support speculative sequential semantics
US7840530B2 (en) Parallel nested transactions in transactional memory
US8180986B2 (en) Memory conflict detection via mapping of the physical heap to control access permissions to the memory
US20110246727A1 (en) System and Method for Tracking References to Shared Objects Using Byte-Addressable Per-Thread Reference Counters
Dice et al. Fast non-intrusive memory reclamation for highly-concurrent data structures
US8296742B2 (en) Automatic native generation
US8001084B2 (en) Memory allocator for optimistic data access
KR102546947B1 (ko) 시대 기반 메모리 수집 기법과 포인터 기반 메모리 수집 기법 혼합을 위한 컴퓨터 시스템 및 그의 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110601

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110601

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130125

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20130228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130423

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130625

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131024

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20131031

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131119

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131119

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20131120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131206

R150 Certificate of patent or registration of utility model

Ref document number: 5435741

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250