JP5284103B2 - ソフトウェアトランザクショナルメモリ動作の最適化 - Google Patents
ソフトウェアトランザクショナルメモリ動作の最適化 Download PDFInfo
- Publication number
- JP5284103B2 JP5284103B2 JP2008544369A JP2008544369A JP5284103B2 JP 5284103 B2 JP5284103 B2 JP 5284103B2 JP 2008544369 A JP2008544369 A JP 2008544369A JP 2008544369 A JP2008544369 A JP 2008544369A JP 5284103 B2 JP5284103 B2 JP 5284103B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- stm
- transaction
- memory
- log
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Description
原子的ブロックは、並行プログラムを記述するという問題に対する有望な単純化を提供する。本明細書で説明するシステムでは、あるコードブロックが、原子的とマークされ、コンパイラおよびランタイムシステムは、関数呼出しを含むそのブロック内の動作が原子的に見えることを提供する。プログラマは、もはや、手動ロック、低水準競合条件、またはデッドロックを気にする必要がなくなる。原子的ブロックは、例外回復をも提供することができ、これによって、あるブロックが例外によって終了される場合に、そのブロックの副作用がロールバックされる。これは、シングルスレッドアプリケーションにおいても貴重である。というのは、エラーハンドリングコードが、しばしば、記述しテストするのが難しいからである。原子的ブロックの実施態様は、大規模マルチプロセッサマシンにもスケーリングされる。というのは、この実施態様が、並列性を保存するからであり、原子的ブロックは、あるブロックで更新される位置が他のブロックのいずれにおいてもアクセスされない限り、並行に実行することができる。これは、従来のデータキャッシュで許容される種類の共有を保存する。
本明細書で説明する技法は、原子的ブロックの実行に焦点を合わせたものである。様々な実施態様は、ロックするコードとの原子的ブロックの相互作用、およびこれらの技法を利用し続けながらの原子的ブロックとの入出力動作の組合せを含めて、正確なセマンティクスにおいて異なる可能性がある。
本明細書で説明する例では、原子的ブロックをどのように使用するかに関していくつかの仮定を行う。これらは、必ずしも本明細書で説明する実施態様に対する限定を表すのではなく、説明を容易にするように働くものである。
ワードベースのSTMの1つの従来のインターフェースは、次の2セットの動作を提供する。
分解された直接アクセスSTM実施態様は、本明細書で提供する例で使用されるが、これらの問題に対処する。第1の問題は、トランザクションが、ヒープに対して直接に読取動作および書込動作を実行できるようになり、読取が、先行するトランザクショナルストアを検索なしで自然に見られるようになるシステムを設計することによって対処される。ログは、それでも、異常終了するトランザクションをロールバックするため、およびアクセスされた位置のバージョニング情報を追跡するために、必要である。短いトランザクションの場合に、これらのログはアペンド専用である。したがって、検索は、トランザクションサイズに関わりなく不要である。
セクション2では、STM動作の知識を用いて構成されたコンパイラを利用する、分解されたSTM動作の最適化を説明する。本願で使用されるときに、用語「最適化する」、「最適化された」、「最適化」、および類似物が、全般的に特定の改善の度合に一切言及せずに改善を指す技術用語であることに留意されたい。したがって、様々なシナリオで、「最適化」が、システムまたは技法の性能の1つまたは複数の態様を改善する場合があるが、そのシステムまたは技法のすべての態様が改善されることは、必ずしも要求されない。さらに、様々な状況で、「最適化」は、必ずしも任意の特定の最小の度合または最大の度合までの任意の態様の改善を暗示しない。さらに、「最適化された」システムまたは技法が、1つまたは複数の領域での性能改善を示す場合があるが、そのシステムまたは技法が、他の領域での性能の低下を同様に示す場合がある。最後に、「最適化」が、いくつかの状況で、あるシステムまたは技法の性能を改善する場合があるが、その「最適化」が他の状況で性能を低下させることが可能である場合がある。下で説明する特定の状況では、最適化が、冗長なまたは余分なSTM命令またはログ書込の除去をもたらし、おそらくは高められた性能を提供するが、これらの最適化は、決して、すべての可能な冗長なまたは余分な命令の除去をもたらすことを暗示しない。
図6は、STM命令に対して最適化を実行する、例のプロセス600の流れ図である。プロセス600は、図4のブロック480に対応する。様々な実施態様で、図示のプロセスブロックを、マージし、サブブロックに分割し、あるいは省略することができる。さらに、図示の実施態様は、各アクションが1回実行される例を与えるが、代替実施態様では、アクションを繰り返すことができる。したがって、例えば、下で説明する共通部分式除去アクションを、コード移動最適化を実行した後にもう一度実行することができる。図6には、非STM命令の最適化が示されていないが、これは、図を単純にするために行われたものであり、本明細書で説明するプロセスに対する限定を示すものではない。
2.2.1 強い原子性の実施
上で説明した技法は、ある原子的ブロック内のメモリアクセスが第2の原子的ブロック内のアクセスに関して分割不能に発生する「原子的」ブロックを作成するのに使用することができる。しかし、あるスレッドによって実行される「原子的」ブロックは、第2スレッドが「原子的」ブロックを使用せずに衝突するメモリアクセスを実行するときに、分割不能に実行するように見えない場合がある。この特徴を有する設計を、「弱い原子性」を提供すると言うことができる。
STMコンパイラの様々な実施態様によって実行されるもう1つの高水準最適化は、DTMOpenForRead動作にDTMOpenForUpdate動作が続くときに発生する不必要なログ記録を避けるためのものである。本明細書で説明する技法に固有の1つの設計の仮定は、読取が書込より一般的であることであり、これは、これらの技法がDTMOpenForUpdate動作とDTMOpenForRead動作とを分離する理由である、すなわち、open−for−read命令は、よりすばやく完了することができる。しかし、時々、オブジェクトが、読み取られ、その後に書き込まれる(規範的な例が「obj.field++」である)。この場合に、オープン動作を伴うIRは、次のようになる。
多数の既存のコンパイラ最適化は、その技法がプログラム全体のグラフに適用するには一般に高価に過ぎるので、関数内のコードを比較し、除去し、移動することしかできない。しかし、プロシージャ境界にまたがってSTM動作を移動する高水準STM最適化を介して、これらの最適化をより効率的に実行することができる。
最後の高水準最適化は、あるトランザクション内で新たに割り振られたオブジェクトに関する、そのトランザクション内のログ動作を除去することによって、ログ動作の個数を減らすように働く。具体的に言うと、それが作成されたトランザクションから絶対に漏れ出ないオブジェクトに関するアンドゥログ情報を維持する必要はない。これは、そのようなオブジェクトのアンドゥログ内の情報が、そのトランザクションが異常終了した場合に限って使用され、その点で、そのオブジェクトがいずれにせよ削除されるからである。
このセクションでは、分解された直接アクセスSTMの実施態様を説明する。概要では、トランザクションは、更新に厳密な2フェーズロックを使用し、衝突する更新を検出できるように、そのトランザクションが読み取るオブジェクトのバージョン番号を記録する。ロールバックログは、衝突またはデッドロックの際の回復に使用される。ある最適化は、コミット動作によって使用されるバージョン番号をサポートするためにオブジェクトフォーマットを拡張することならびにこの拡張に基づいてオブジェクトに対する変更を判定する高速技法を伴う。トランザクショナルメモリのログへのエントリのランタイムフィルタリングも、説明する。
オブジェクト構造の拡張は、本明細書で説明するSTM実施態様内の原子的コミット動作の文脈で理解することができる。原子的コミットの一例で、DTMStartが呼び出され、オブジェクトは、読取および更新のためにオープンされ、コミットは、これらのアクセスを原子的に実行することを試みるためにDTMCommitを呼び出すことによって終了する。
図13は、ランタイム環境1300内でランタイム中にSTM性能を最適化するように動作する、オブジェクトおよびソフトウェアモジュールの例を示すブロック図である。図13は、特定のモジュールを別々に示すが、様々な実施態様で、モジュールを、様々な組合せでマージするか分割することができ、モジュールが、図示されていない他のランタイムソフトウェア構造の一部として動作することができることを理解されたい。図13は、膨張させられたワードヘッダ1315と共に、ランタイム環境内で動作するオブジェクト1310を示す。その膨張させられたワードヘッダを伴うオブジェクトの動作を、次のセクションで説明する。図13には、上で説明したSTM実施態様の妥当性検査プロシージャおよびクローズプロシージャを実施する、読取妥当性検査モジュール1320およびオブジェクト更新クローズモジュール1330も示されている。ランタイム環境内のオブジェクトに関するこれらのモジュールの特定の諸面を、本明細書で説明する。図13には、さらに、フィルタリングアソシアティブテーブル1350が示され、フィルタリングアソシアティブテーブル1350は、いくつかの実施態様で、不必要なエントリをフィルタリングし、これらがアンドゥログ1360、更新済みオブジェクトログ1370、および読取オブジェクトログ1380の様々な組合せにログ記録されるのを防ぐ。このフィルタリングプロセスの特定の実施態様は、下でより詳細に説明する。最後に、図13は、ガーベジコレクションモジュール1390を示し、ガーベジコレクションモジュール1390は、オブジェクトがもはや実行中プログラム内で到達可能ではなくなったときにそれらのオブジェクトを割振り解除し、ガーベジコレクション中にSTMログを圧縮するように働く。このガーベジコレクションモジュールの特定の実施態様を、下で説明する。
このセクションでは、読取専用オブジェクトの妥当性検査ならびに更新されるオブジェクトに対するオープン動作およびクローズ動作をサポートするのに使用される構造体の例を説明する。一実施態様で、STMは、オブジェクトに対する動作のために各オブジェクトに対する2つの抽象エンティティすなわち、どのトランザクションがオブジェクトを更新のためにオープンさせたかを調整するのに使用されるSTMワードと、トランザクションが読み取ったオブジェクトに対する衝突する更新を検出するのに高速パスコード内で使用されるSTMスナップショットとを利用する。これらのデータ構造体を使用する動作の例は、次の通りである。
4.1.STMログ構造の例
各スレッドは、3つのログと共に別々のトランザクションマネージャを有する。読取オブジェクトログおよび更新済みオブジェクトログは、トランザクションが読取または更新のためにオープンしたオブジェクトを追跡する。アンドゥログは、異常終了時にアンドゥされなければならない更新を追跡する。すべてのログが、シーケンシャルに書き込まれ、絶対に検索されない。別々のログが使用されるのは、それらの中のエントリが、異なるフォーマットを有するからであり、また、コミット中に、システムが異なる種類のエントリにまたがって反復する必要があるからである。各ログは、エントリのアレイのリストに編成され、したがって、コピーなしで大きくなることができる。
本明細書で説明する実施態様のDTMCommitには2つのフェーズがあり、第1のフェーズは、読取のためにオープンされるオブジェクトに対する衝突する更新をチェックし、第2のフェーズは、更新のためにオープンされたオブジェクトをクローズする。明示的に読取のためにオープンされたオブジェクトをクローズする必要はない。というのは、その事実が、スレッドプライベートトランザクションログだけに記録されるからである。
・ V2 オブジェクトは、持続時間全体について現在のトランザクションによって更新のためにオープンされた。
・ V3 オブジェクトは、最初は更新のためにオープンされず、現在のトランザクションは、更新のためにそのオブジェクトをオープンする次のトランザクションであった。
・ V4 オブジェクトは、持続時間全体について別のトランザクションによって更新のためにオープンされた。
・ V5 オブジェクトは、最初は更新のためにオープンされず、別のトランザクションが、更新のためにそのオブジェクトをオープンした次のトランザクションであった。
このセクションでは、読取オブジェクトログおよびアンドゥログから重複をフィルタリングするのに確率的ハッシング方式を利用する、重複をフィルタリングするランタイム技法を説明する。ログフィルタリングは、一般に、a)ログがかなりのスペースを占め、システムリソースを奪い去る可能性があり、b)特定のメモリ位置が書き込まれたか読み取られたものとしてログ記録されたならば、さらにログ記録する必要がないので、有用である。これは、妥当性検査中に、読取オブジェクトログから必要な唯一の情報が、トランザクションの前のそのオブジェクトのSTMスナップショットであり、アンドゥログから必要な唯一の情報が、トランザクションの前の更新されたメモリ位置の値であるからである。これは、トランザクション内で変化しないので、トランザクションごとに、所与のメモリ位置について1つのログエントリだけが必要である。
本明細書で説明するフィルタリング方式は、読取オブジェクトログおよびアンドゥログへの重複するログ記録要求を、アソシアティブテーブルを使用して確率的に検出する。本明細書で説明する実施態様は、ハッシュテーブルへの参照を用いるが、代替実施態様で、フィルタリングの技法およびシステムが、アソシアティブテーブルの異なる実施態様を使用できることを理解されたい。一実施態様は、アドレスのハッシュを、そのハッシュを有するアドレスに関連する最も最近のログ記録動作の詳細にマッピングするスレッドごとのテーブルを使用する。
一実施態様で、本明細書で説明するSTMのシステムおよび技法は、現在のトランザクションによって割り振られたオブジェクトに関するすべてのアンドゥログエントリの書込を避けるために、それらのオブジェクトを識別する。これは、上で説明した静的コンパイルタイム分析が、新たに割り振られたオブジェクトの特定のログ動作を見逃すか除去できない場合のバックアップを提供する。このランタイム技法は、現在のトランザクションが異常終了する場合にオブジェクトが死ぬので、安全である。一実施態様で、これは、新たに割り振られたオブジェクトに作用するように特殊化されたバージョンのDTMOpenForUpdateを使用し、この動作に、トランザクショナルに割り振られるものとしてオブジェクトをマークするために指定されたSTMワード値を書き込ませることによって行われる。
一般に、ガーベジコレクション(「GC」)は、メモリオブジェクトがもはやプログラム内のどのスレッドによっても要求されないのでそのメモリオブジェクトを安全に割振り解除できるときを自動的に判定する機構を提供する。ガーベジコレクションは、多数の近代プログラミング言語に組み込まれ、Microsoft .NETフレームワークの一部を形成する。
上のソフトウェアトランザクショナルメモリ技法は、様々なコンピューティングデバイスのいずれにおいても実行することができる。これらの技法は、ハードウェア回路で、ならびに図16に示されたものなどのコンピュータもしくは他のコンピューティング環境内で実行されるソフトウェアで実施することができる。
Claims (3)
- 処理ユニットおよびコンパイラを含むコンピュータシステムが実行する方法であって、前記方法は、前記コンパイラがプログラムをコンパイルするために実行され、前記プログラムは、「atomic{」という文字列と「}」で囲まれた箇所である原子的ブロックを含み、前記方法は、
処理ユニットが、ソフトウェアトランザクショナルメモリへの命令であるソフトウェアトランザクショナルメモリ(以下、STMともいう)命令を、各原子的ブロック内に挿入すること(420)であって、原子的ブロック内の読取または書込の全てのソースコードの前後に正しいワードベースの読取STM命令および書込STM命令を挿入することによって、STM命令を各原子的ブロック内に挿入すること(420)と、
処理ユニットが、前記ワードベースの読取STM命令および書込STM命令を分解された命令に置き換えること(440)と、
処理ユニットが、ソフトウェアトランザクショナルメモリ命令を含む最適化されたプログラムを作成するために前記プログラムを最適化すること(460)であって、該最適化することは、前記分解されたソフトウェアトランザクショナルメモリ命令を処理するよう構成された所定の関数による処理である除去手順を実行することを含む、最適化すること(460)と、
コンパイラが、前記最適化されたプログラムをコンパイルすること(340)とを含み、
除去手順は、同じトランザクション内で更新のためにオブジェクトをオープンする命令の後に発生する読み出しのためのオブジェクトをオープンする命令を除去するか、またはトランザクション内での、メモリアドレスに対する重複する読み出し命令および書き込み命令を除去または、メモリアドレスに対する重複するログを除去し、
プログラムを最適化することは、他の原子的ブロック内で行われるメモリアクセスだけではなく、全てのメモリアクセスに関して分割不能に実行するように見える強い原子性を原子的ブロックに与えることにより、原子的ブロックの外部で発生する原子的ブロック内のフィールドに対するメモリアクセスである非トランザクショナルなメモリ動作を増補することを含み、
非トランザクショナルなメモリ動作を増補することは、
前記非トランザクショナルなメモリ動作の前に、非トランザクショナルなメモリ動作によるアクセスのためにオブジェクトをオープンするオープン処理を挿入することと、
前記非トランザクショナルなメモリ動作の後に、非トランザクショナルなメモリ動作の実行中にオブジェクトに対する衝突するアクセスがあったか否かを決定するコミット処理を挿入することとを含み、
前記非トランザクショナルなメモリ動作が読み出し処理である場合は、
前記オープン処理は、非トランザクショナルなメモリ動作の実行の前にオブジェクトの状態の表示を取り出すように構成され、
前記コミット処理は、
前記非トランザクショナルなメモリ動作の実行の後に、オブジェクトの状態の表示を取り出し、
前記オブジェクトの状態が衝突するアクセスを示す場合に、読み出しが可能となるまで、前記オープン動作、前記読取動作、および前記コミット動作をループさせ、または、
前記非トランザクショナルなメモリ動作が書込み処理である場合は、
前記オープン処理は、オブジェクトに対する書き込みアクセスを取得するよう構成され、
コミット処理は、オブジェクトに対してなされる書き込みをコミットするよう構成されていることを特徴とする方法。 - プログラムを最適化する最適化を実行することは、コード移動最適化を実行することを含むことを特徴とする請求項1に記載の方法。
- メモリトランザクションの外部のオブジェクトをアクセスする1つまたはそれ以上のメモリ処理を識別することを含むことを特徴とする請求項1または2に記載の方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US74838605P | 2005-12-07 | 2005-12-07 | |
US60/748,386 | 2005-12-07 | ||
US11/389,451 US8799882B2 (en) | 2005-12-07 | 2006-03-23 | Compiler support for optimizing decomposed software transactional memory operations |
US11/389,451 | 2006-03-23 | ||
PCT/US2006/045526 WO2007067390A2 (en) | 2005-12-07 | 2006-11-27 | Optimization of software transactional memory operations |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009523271A JP2009523271A (ja) | 2009-06-18 |
JP5284103B2 true JP5284103B2 (ja) | 2013-09-11 |
Family
ID=38123382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008544369A Expired - Fee Related JP5284103B2 (ja) | 2005-12-07 | 2006-11-27 | ソフトウェアトランザクショナルメモリ動作の最適化 |
Country Status (9)
Country | Link |
---|---|
US (1) | US8799882B2 (ja) |
EP (1) | EP1958063A4 (ja) |
JP (1) | JP5284103B2 (ja) |
KR (1) | KR101354796B1 (ja) |
AU (1) | AU2006322227B2 (ja) |
BR (1) | BRPI0619137A2 (ja) |
NO (1) | NO20081583L (ja) |
RU (1) | RU2433453C2 (ja) |
WO (1) | WO2007067390A2 (ja) |
Families Citing this family (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7747659B2 (en) * | 2004-01-05 | 2010-06-29 | International Business Machines Corporation | Garbage collector with eager read barrier |
US7747565B2 (en) * | 2005-12-07 | 2010-06-29 | Microsoft Corporation | Garbage collector support for transactional memory |
US8799882B2 (en) | 2005-12-07 | 2014-08-05 | Microsoft Corporation | Compiler support for optimizing decomposed software transactional memory operations |
US7797329B2 (en) * | 2006-06-09 | 2010-09-14 | Oracle America Inc. | Method and system for enabling a synchronization-free and parallel commit phase |
US7865885B2 (en) * | 2006-09-27 | 2011-01-04 | Intel Corporation | Using transactional memory for precise exception handling in aggressive dynamic binary optimizations |
US7913236B2 (en) * | 2006-09-29 | 2011-03-22 | Intel Corporation | Method and apparatus for performing dynamic optimization for software transactional memory |
CN101681282A (zh) | 2006-12-06 | 2010-03-24 | 弗森多系统公司(dba弗森-艾奥) | 用于共享的、前端、分布式raid的装置、系统和方法 |
US8719807B2 (en) * | 2006-12-28 | 2014-05-06 | Intel Corporation | Handling precompiled binaries in a hardware accelerated software transactional memory system |
US8924782B2 (en) * | 2007-01-26 | 2014-12-30 | The Trustees Of Columbia University In The City Of New York | Systems, methods, and media for recovering an application from a fault or attack |
US8095750B2 (en) * | 2007-05-14 | 2012-01-10 | International Business Machines Corporation | Transactional memory system with fast processing of common conflicts |
US8095741B2 (en) | 2007-05-14 | 2012-01-10 | International Business Machines Corporation | Transactional memory computing system with support for chained transactions |
US8117403B2 (en) | 2007-05-14 | 2012-02-14 | International Business Machines Corporation | Transactional memory system which employs thread assists using address history tables |
US9009452B2 (en) | 2007-05-14 | 2015-04-14 | International Business Machines Corporation | Computing system with transactional memory using millicode assists |
CN101821721B (zh) * | 2007-07-26 | 2017-04-12 | 起元技术有限责任公司 | 具有误差处理的事务型基于图的计算 |
US8359586B1 (en) * | 2007-08-20 | 2013-01-22 | The Mathworks, Inc. | Code generation |
US8140483B2 (en) * | 2007-09-28 | 2012-03-20 | International Business Machines Corporation | Transaction log management |
WO2009076654A1 (en) * | 2007-12-12 | 2009-06-18 | University Of Washington | Deterministic multiprocessing |
US8341607B2 (en) * | 2008-03-13 | 2012-12-25 | International Business Machines Corporation | Condensing pattern matcher generation for intermediate language patterns |
US8214833B2 (en) | 2008-05-12 | 2012-07-03 | Oracle America, Inc. | Systems and methods for supporting software transactional memory using inconsistency-aware compilers and libraries |
US8839213B2 (en) | 2008-06-27 | 2014-09-16 | Microsoft Corporation | Optimizing primitives in software transactional memory |
US9047139B2 (en) * | 2008-06-27 | 2015-06-02 | Microsoft Technology Licensing, Llc | Primitives for software transactional memory |
US8769514B2 (en) * | 2008-06-27 | 2014-07-01 | Microsoft Corporation | Detecting race conditions with a software transactional memory system |
CN101425052B (zh) * | 2008-12-04 | 2010-06-09 | 中国科学院计算技术研究所 | 一种事务性内存的实现方法 |
US8612929B2 (en) * | 2008-12-10 | 2013-12-17 | Oracle America, Inc. | Compiler implementation of lock/unlock using hardware transactional memory |
US9424013B2 (en) * | 2008-12-29 | 2016-08-23 | Oracle America, Inc. | System and method for reducing transactional abort rates using compiler optimization techniques |
US8266604B2 (en) * | 2009-01-26 | 2012-09-11 | Microsoft Corporation | Transactional memory compatibility management |
US8688921B2 (en) * | 2009-03-03 | 2014-04-01 | Microsoft Corporation | STM with multiple global version counters |
US20100228929A1 (en) * | 2009-03-09 | 2010-09-09 | Microsoft Corporation | Expedited completion of a transaction in stm |
US8838656B1 (en) * | 2009-07-31 | 2014-09-16 | Hiscamp Systems, Inc. | Hardware-protected reference count-based memory management using weak references |
US8566524B2 (en) | 2009-08-31 | 2013-10-22 | International Business Machines Corporation | Transactional memory system with efficient cache support |
US9639392B2 (en) * | 2013-12-17 | 2017-05-02 | Intel Corporation | Unbounded transactional memory with forward progress guarantees using a hardware global lock |
US9122579B2 (en) | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
US8495607B2 (en) * | 2010-03-01 | 2013-07-23 | International Business Machines Corporation | Performing aggressive code optimization with an ability to rollback changes made by the aggressive optimizations |
WO2011143628A2 (en) | 2010-05-13 | 2011-11-17 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
US8789025B2 (en) * | 2010-07-14 | 2014-07-22 | International Business Machines Corporation | Path-sensitive analysis for reducing rollback overheads |
WO2012016089A2 (en) | 2010-07-28 | 2012-02-02 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
US8719581B2 (en) * | 2010-09-22 | 2014-05-06 | Savant Systems, Llc | Programmable multimedia controller with flexible user access and shared device configurations |
US8549504B2 (en) * | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
US9189297B2 (en) | 2010-12-14 | 2015-11-17 | Hewlett-Packard Development Company, L.P. | Managing shared memory |
WO2012129191A2 (en) | 2011-03-18 | 2012-09-27 | Fusion-Io, Inc. | Logical interfaces for contextual storage |
US8600949B2 (en) * | 2011-06-21 | 2013-12-03 | Netapp, Inc. | Deduplication in an extent-based architecture |
CN103092742B (zh) * | 2011-10-31 | 2015-08-19 | 国际商业机器公司 | 程序日志记录优化方法和系统 |
US9274937B2 (en) | 2011-12-22 | 2016-03-01 | Longitude Enterprise Flash S.A.R.L. | Systems, methods, and interfaces for vector input/output operations |
US10133662B2 (en) | 2012-06-29 | 2018-11-20 | Sandisk Technologies Llc | Systems, methods, and interfaces for managing persistent data of atomic storage operations |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US9715388B2 (en) * | 2012-03-30 | 2017-07-25 | Intel Corporation | Instruction and logic to monitor loop trip count and remove loop optimizations |
US9141351B2 (en) * | 2012-05-01 | 2015-09-22 | Oracle International Corporation | Indicators for resources with idempotent close methods in software programs |
US8880959B2 (en) * | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US8688661B2 (en) * | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US20130339680A1 (en) * | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9367323B2 (en) * | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US10437602B2 (en) * | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9292288B2 (en) * | 2013-04-11 | 2016-03-22 | Intel Corporation | Systems and methods for flag tracking in move elimination operations |
US10255158B2 (en) | 2013-10-15 | 2019-04-09 | Oracle International Corporation | Monitoring and diagnostics of business transaction failures |
US9652353B2 (en) * | 2013-10-15 | 2017-05-16 | Oracle International Corporation | Monitoring business transaction failures involving database procedure calls |
GB2539958B (en) * | 2015-07-03 | 2019-09-25 | Advanced Risc Mach Ltd | Data processing systems |
US9928064B2 (en) | 2015-11-10 | 2018-03-27 | International Business Machines Corporation | Instruction stream modification for memory transaction protection |
US10133561B1 (en) | 2017-08-30 | 2018-11-20 | International Business Machines Corporation | Partial redundancy elimination with a fixed number of temporaries |
KR102600283B1 (ko) | 2017-12-05 | 2023-11-08 | 삼성전자주식회사 | 전자 장치 및 이를 이용한 명령어 처리 방법 |
CN110119274A (zh) * | 2018-02-05 | 2019-08-13 | 北京智明星通科技股份有限公司 | 一种数据编译的方法、装置以及电子终端、计算机可读存储介质 |
US11474943B2 (en) | 2018-12-21 | 2022-10-18 | Home Box Office, Inc. | Preloaded content selection graph for rapid retrieval |
US11829294B2 (en) | 2018-12-21 | 2023-11-28 | Home Box Office, Inc. | Preloaded content selection graph generation |
US11474974B2 (en) | 2018-12-21 | 2022-10-18 | Home Box Office, Inc. | Coordinator for preloading time-based content selection graphs |
US11269768B2 (en) | 2018-12-21 | 2022-03-08 | Home Box Office, Inc. | Garbage collection of preloaded time-based graph data |
US11204924B2 (en) * | 2018-12-21 | 2021-12-21 | Home Box Office, Inc. | Collection of timepoints and mapping preloaded graphs |
US11475092B2 (en) | 2018-12-21 | 2022-10-18 | Home Box Office, Inc. | Preloaded content selection graph validation |
US11361400B1 (en) | 2021-05-06 | 2022-06-14 | Arm Limited | Full tile primitives in tile-based graphics processing |
WO2023050147A1 (zh) * | 2021-09-29 | 2023-04-06 | 长江存储科技有限责任公司 | 用于存储器的数据保护方法及其存储装置 |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5535352A (en) | 1994-03-24 | 1996-07-09 | Hewlett-Packard Company | Access hints for input/output address translation mechanisms |
KR970076271A (ko) * | 1996-05-17 | 1997-12-12 | 문정환 | 확장 메모리 모듈 |
US5949088A (en) * | 1996-10-25 | 1999-09-07 | Micron Technology, Inc. | Intermediate SRAM array product and method of conditioning memory elements thereof |
US6067550A (en) | 1997-03-10 | 2000-05-23 | Microsoft Corporation | Database computer system with application recovery and dependency handling write cache |
US6059840A (en) | 1997-03-17 | 2000-05-09 | Motorola, Inc. | Automatic scheduling of instructions to reduce code size |
US6151704A (en) | 1997-04-01 | 2000-11-21 | Intel Corporation | Method for optimizing a loop in a computer program by speculatively removing loads from within the loop |
US6216218B1 (en) * | 1997-11-03 | 2001-04-10 | Donald L. Sollars | Processor having a datapath and control logic constituted with basis execution blocks |
US6560773B1 (en) | 1997-12-12 | 2003-05-06 | International Business Machines Corporation | Method and system for memory leak detection in an object-oriented environment during real-time trace processing |
US6247174B1 (en) | 1998-01-02 | 2001-06-12 | Hewlett-Packard Company | Optimization of source code with embedded machine instructions |
US6289357B1 (en) | 1998-04-24 | 2001-09-11 | Platinum Technology Ip, Inc. | Method of automatically synchronizing mirrored database objects |
US6272607B1 (en) * | 1998-08-28 | 2001-08-07 | International Business Machines Corporation | Method and apparatus for transactional writing of data into a persistent memory |
US6694340B1 (en) | 1998-09-24 | 2004-02-17 | International Business Machines Corporation | Technique for determining the age of the oldest reading transaction with a database object |
US6553392B1 (en) | 1999-02-04 | 2003-04-22 | Hewlett-Packard Development Company, L.P. | System and method for purging database update image files after completion of associated transactions |
US6622300B1 (en) * | 1999-04-21 | 2003-09-16 | Hewlett-Packard Development Company, L.P. | Dynamic optimization of computer programs using code-rewriting kernal module |
US6341285B1 (en) | 1999-06-28 | 2002-01-22 | Lucent Technologies Inc. | Serial protocol for transaction execution in main-memory database systems |
JP2001101044A (ja) * | 1999-09-29 | 2001-04-13 | Toshiba Corp | トランザクショナルファイル管理方法、トランザクショナルファイルシステム及び複合トランザクショナルファイルシステム |
US6427154B1 (en) | 1999-12-16 | 2002-07-30 | International Business Machines Corporation | Method of delaying space allocation for parallel copying garbage collection |
US6658652B1 (en) | 2000-06-08 | 2003-12-02 | International Business Machines Corporation | Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing |
US6662362B1 (en) | 2000-07-06 | 2003-12-09 | International Business Machines Corporation | Method and system for improving performance of applications that employ a cross-language interface |
US6502111B1 (en) | 2000-07-31 | 2002-12-31 | Microsoft Corporation | Method and system for concurrent garbage collection |
RU2206119C2 (ru) | 2000-09-22 | 2003-06-10 | Закрытое акционерное общество "МЦСТ" | Способ получения объектного кода |
US6457023B1 (en) | 2000-12-28 | 2002-09-24 | International Business Machines Corporation | Estimation of object lifetime using static analysis |
US6795836B2 (en) | 2000-12-29 | 2004-09-21 | International Business Machines Corporation | Accurately determining an object's lifetime |
US7210122B2 (en) | 2001-03-22 | 2007-04-24 | International Business Machines, Corporation | Method for reducing write barrier overhead |
WO2002098048A2 (en) | 2001-05-31 | 2002-12-05 | Computer Associates Think, Inc. | A method and system for online reorganization of databases |
WO2003038683A1 (en) | 2001-11-01 | 2003-05-08 | Verisign, Inc. | Transactional memory manager |
JP3939975B2 (ja) | 2001-12-14 | 2007-07-04 | 松下電器産業株式会社 | ガベージコレクション装置、ガベージコレクション方法及びガベージコレクションプログラム |
US6970981B2 (en) | 2001-12-21 | 2005-11-29 | Tibco Software, Inc. | Method and apparatus to maintain consistency between an object store and a plurality of caches utilizing transactional updates to data caches |
US7278137B1 (en) | 2001-12-26 | 2007-10-02 | Arc International | Methods and apparatus for compiling instructions for a data processor |
US7010553B2 (en) | 2002-03-19 | 2006-03-07 | Network Appliance, Inc. | System and method for redirecting access to a remote mirrored snapshot |
US6898602B2 (en) | 2002-04-22 | 2005-05-24 | Sun Microsystems Inc. | Measuring the exact memory requirement of an application through intensive use of garbage collector |
US9052944B2 (en) | 2002-07-16 | 2015-06-09 | Oracle America, Inc. | Obstruction-free data structures and mechanisms with separable and/or substitutable contention management mechanisms |
US7103597B2 (en) | 2002-10-03 | 2006-09-05 | Mcgoveran David O | Adaptive transaction manager for complex transactions and business process |
US7069279B1 (en) | 2002-11-04 | 2006-06-27 | Savaje Technologies, Inc. | Timely finalization of system resources |
US7784044B2 (en) | 2002-12-02 | 2010-08-24 | Microsoft Corporation | Patching of in-use functions on a running computer system |
US6993540B2 (en) | 2002-12-20 | 2006-01-31 | Intel Corporation | Prefetching memory objects into a shared cache during garbage collection with a three-finger Cheney scan in a multithreaded processing environment |
US6862664B2 (en) | 2003-02-13 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for avoiding locks by speculatively executing critical sections |
US7089374B2 (en) | 2003-02-13 | 2006-08-08 | Sun Microsystems, Inc. | Selectively unmarking load-marked cache lines during transactional program execution |
US20050044538A1 (en) | 2003-08-18 | 2005-02-24 | Srinivas Mantripragada | Interprocedural computing code optimization method and system |
US7383246B2 (en) | 2003-10-31 | 2008-06-03 | International Business Machines Corporation | System, method, and computer program product for progressive query processing |
ATE526628T1 (de) * | 2004-01-22 | 2011-10-15 | Nec Lab America Inc | System und verfahren zum modellieren, abstrahieren und analysieren von software |
US7240171B2 (en) | 2004-01-23 | 2007-07-03 | International Business Machines Corporation | Method and system for ensuring consistency of a group |
US7587429B2 (en) | 2004-05-24 | 2009-09-08 | Solid Information Technology Oy | Method for checkpointing a main-memory database |
US7487497B2 (en) * | 2004-08-26 | 2009-02-03 | International Business Machines Corporation | Method and system for auto parallelization of zero-trip loops through induction variable substitution |
US7607123B2 (en) | 2004-09-21 | 2009-10-20 | Hewlett-Packard Development Company, L.P. | Systems and methods for validating debug information for optimized code |
US7325108B2 (en) | 2005-03-15 | 2008-01-29 | International Business Machines Corporation | Method and system for page-out and page-in of stale objects in memory |
US7716645B2 (en) * | 2005-06-10 | 2010-05-11 | International Business Machines Corporation | Using atomic sets of memory locations |
US7716630B2 (en) * | 2005-06-27 | 2010-05-11 | Ab Initio Technology Llc | Managing parameters for graph-based computations |
US7810086B2 (en) | 2005-06-30 | 2010-10-05 | Intel Corporation | Safe code-motion of dangerous instructions during compiler optimization |
US7536517B2 (en) | 2005-07-29 | 2009-05-19 | Microsoft Corporation | Direct-update software transactional memory |
US8799882B2 (en) | 2005-12-07 | 2014-08-05 | Microsoft Corporation | Compiler support for optimizing decomposed software transactional memory operations |
US7747565B2 (en) | 2005-12-07 | 2010-06-29 | Microsoft Corporation | Garbage collector support for transactional memory |
US7809903B2 (en) | 2005-12-15 | 2010-10-05 | Intel Corporation | Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions |
US7962923B2 (en) | 2005-12-30 | 2011-06-14 | Level 3 Communications, Llc | System and method for generating a lock-free dual queue |
US8214813B2 (en) | 2007-01-12 | 2012-07-03 | Microsoft Corporation | Code optimization across interfaces |
-
2006
- 2006-03-23 US US11/389,451 patent/US8799882B2/en active Active
- 2006-11-27 WO PCT/US2006/045526 patent/WO2007067390A2/en active Application Filing
- 2006-11-27 JP JP2008544369A patent/JP5284103B2/ja not_active Expired - Fee Related
- 2006-11-27 AU AU2006322227A patent/AU2006322227B2/en not_active Ceased
- 2006-11-27 EP EP06838476A patent/EP1958063A4/en not_active Withdrawn
- 2006-11-27 KR KR1020087011218A patent/KR101354796B1/ko not_active IP Right Cessation
- 2006-11-27 BR BRPI0619137-1A patent/BRPI0619137A2/pt active Search and Examination
- 2006-11-27 RU RU2008122968/08A patent/RU2433453C2/ru not_active IP Right Cessation
-
2008
- 2008-04-01 NO NO20081583A patent/NO20081583L/no not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
NO20081583L (no) | 2008-05-22 |
RU2008122968A (ru) | 2009-12-20 |
AU2006322227A1 (en) | 2007-06-14 |
KR20080071135A (ko) | 2008-08-01 |
JP2009523271A (ja) | 2009-06-18 |
US20070169030A1 (en) | 2007-07-19 |
US8799882B2 (en) | 2014-08-05 |
WO2007067390A3 (en) | 2009-04-30 |
WO2007067390A2 (en) | 2007-06-14 |
RU2433453C2 (ru) | 2011-11-10 |
AU2006322227B2 (en) | 2012-01-19 |
BRPI0619137A2 (pt) | 2011-09-13 |
KR101354796B1 (ko) | 2014-01-22 |
EP1958063A2 (en) | 2008-08-20 |
EP1958063A4 (en) | 2011-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5284103B2 (ja) | ソフトウェアトランザクショナルメモリ動作の最適化 | |
US7590806B2 (en) | Filtering of transactional memory operations using associative tables | |
US7669015B2 (en) | Methods and apparatus to implement parallel transactions | |
US6530079B1 (en) | Method for optimizing locks in computer programs | |
US9619281B2 (en) | Systems and methods for adaptive integration of hardware and software lock elision techniques | |
JP2012128628A (ja) | プログラムの最適化装置、最適化方法および最適化プログラム | |
US8769514B2 (en) | Detecting race conditions with a software transactional memory system | |
US9239803B2 (en) | Array object concurrency in STM | |
US8839213B2 (en) | Optimizing primitives in software transactional memory | |
US9047139B2 (en) | Primitives for software transactional memory | |
US20100228929A1 (en) | Expedited completion of a transaction in stm | |
Sreeram et al. | Hybrid transactions: Lock allocation and assignment for irrevocability |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20091028 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110506 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110808 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110815 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110906 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120413 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120713 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20121012 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130212 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20130213 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20130213 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20130305 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130430 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130529 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |