JP2011529603A - バーチャル化可能な高度な同期機構 - Google Patents

バーチャル化可能な高度な同期機構 Download PDF

Info

Publication number
JP2011529603A
JP2011529603A JP2011521116A JP2011521116A JP2011529603A JP 2011529603 A JP2011529603 A JP 2011529603A JP 2011521116 A JP2011521116 A JP 2011521116A JP 2011521116 A JP2011521116 A JP 2011521116A JP 2011529603 A JP2011529603 A JP 2011529603A
Authority
JP
Japan
Prior art keywords
transaction
instructions
processor
memory
instruction
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
JP2011521116A
Other languages
English (en)
Other versions
JP2011529603A5 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2011529603A publication Critical patent/JP2011529603A/ja
Publication of JP2011529603A5 publication Critical patent/JP2011529603A5/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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/468Specific access rights for resources, e.g. using capability register
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Advance Control (AREA)

Abstract

【解決手段】
トランザクションのメモリシステムにおけるトランザクションを実行するためのシステム及び方法が開示される。システムは、共有メモリに結合される複数のプロセッサの1つのプロセッサを含み、プロセッサは、複数のプロセッサの実行に関するアトミックなトランザクションとしての、共有メモリへの複数のメモリアクセス動作を含むコードのセクションを実行するように構成される。実施形態によると、プロセッサは、許可されていない命令の任意のセットを複数のメモリアクセス動作が含むかどうかを決定するように構成されてよく、セットは、バーチャル化されたコンピューティング環境内で自然コンピューティング環境内におけるのと異なるように動作する1つ以上の命令を含む。メモリアクセス動作が、許可されていない命令のそれである場合には、プロセッサはトランザクションを中断する。
【選択図】図3

Description

共有メモリコンピュータシステムは、共有メモリロケーションへのアクセスの多重同時スレッドの実行を可能にする。残念なことに、正確な多重スレッドプログラムを書くことは、同時のメモリアクセスを連携させる複雑さに起因して難しい。
従来、プログラムの正確性を確保するために、プログラマは、共有メモリロケーションへのアクセスを連携させるのにロック(locks)又は他の相互排他的メカニズム(mutual exclusion mechanisms)を用いてきた。例えば従来のロックを用いて、スレッドは、排他的なアクセスを必要とする各メモリロケーションに対するロックを獲得して且つ保持するように構成され得る。スレッドはロックを保持する一方で他のスレッドはそのロックを獲得し得ないので、他のスレッドは当該ロックによって保護されているメモリロケーションにアクセスすることはできない。しかし、従来のロックする技術は、デッドロック(dead-lock)、競合状態、優先順序の逆転、ソフトウエア複雑性、及び性能制限を含む種々の潜在的危険性に対して脆弱である。
同時性制御のための代替的な手法は、トランザクションのメモリ(transactional memory)である。トランザクションのメモリのプログラミングモデルにおいては、プログラマは、他のスレッドの実行に対してアトミックに(atomically)実行されるべき「トランザクション」として、コードのセクション(即ち実行パス又はプログラム命令のセット)を指定することができる。例えば、トランザクションが2つのメモリ記憶動作を含む場合には、トランザクションメモリシステムは、他の全てのスレッドが、一方のみの効果ではなく、両方のメモリ動作の累積的効果を観察することができることあるいは両方とも観察することができないことのいずれかのみを確実にする。単純化されたプログラミングモデルに加えて、トランザクションのメモリシステムは、従来のロックよりもきめ細かなメモリ共有が可能になるので、アプリケーション性能を高めることができる。
これまで種々のトランザクションのメモリシステムが、ソフトウエア、ハードウエア、又はこれらの組み合わせにおいて実装されるものを含めて提案されてきた。しかし、従来の多くの概念及び実装は種々の制限に制約されている。例えば、ソフトウエアベースのトランザクションメモリシステム(STMs)は不所望な性能経費に悩まされる一方で、ハードウエア提案(HTMs)は実装するのに極めて複雑であることがある。
トランザクションのメモリシステムにおけるトランザクションを実行するためのシステム及び方法が開示される。システムは、共有メモリに結合される複数のプロセッサの1つのプロセッサを含む。プロセッサは、複数のプロセッサの実行に対するアトミックなトランザクション(atomic transaction)としての、共有メモリへの複数のメモリアクセス動作を含むコードのセクションを実行するように構成されてよい。
幾つかの実施形態によると、プロセッサは、許可されていない命令の任意のセットを複数のメモリアクセス動作が含むかどうかを決定するように構成されてよく、許可されていない命令のセットは、バーチャル化されたコンピューティング環境内で自然コンピューティング環境内におけるのと異なるように動作する1つ以上の命令を含む。任意のメモリアクセス動作が、許可されていない命令のそれである場合には、プロセッサはトランザクションを中断する。
図1は種々の実施形態に従いASFを実装するように構成される多重プロセッサコンピュータシステムの構成部分を示すブロック図である。
図2は1つの実施形態に従いプロセッサを備えている構成部分の更なる詳細を示すブロック図である。
図3は種々の実施形態に従いASFを用いるトランザクションを実行するための方法を示す一般的なフロー図である。
図4は1つの実施形態に従い入れ子にされたトランザクションの例を示すブロック図である。
図5は幾つかの実施形態に従い後退モードにおいて推測的なセクションを開始するためのSPECULATE命令の実装又は実施を示すフロー図である。
図6は幾つかの実施形態に従い記憶状態モードにおける推測的なセクションを開始するためのBEGIN命令を実行するステップを示すフロー図である。
図7は幾つかの実施形態に従い種々のASF実装がどのようにしてデータ競合を処理し得るのかを規定する一連の規則をまとめた表である。
図8は種々の実施形態に従ってASFメカニズムが後退モードにおけるトランザクションを実行可能な方法を示すフロー図である。
図9は幾つかの実施形態に従いCOMMIT命令を実行することによるようなトランザクションをコミットするための方法を示す図である。
図10は幾つかの実施形態に従い記憶状態モードにあるトランザクションを実行するための方法を示すフロー図である。
図11は1つの実施形態に従いロックベースのコードと相互運用するASFベースのトランザクションを設定するための方法を示すフローチャートである。
図12はここで説明されるASFの種々の実施形態を実装するように構成されるコンピュータシステムの1つの実施形態を示している。
幾つかの実施形態及び例示的な図面のための例を目的として本発明がここに説明されるが、当業者であれば説明された実施形態又は図面に本発明が限定されないことを認識するであろう。ここでの図面及び詳細な説明は開示された特定の形態に本発明を限定することを意図したものではなく、むしろ本発明は、添付の特許請求の範囲によって画定されるような本発明の精神及び範囲内にある全ての修正、均等なもの、及び代替案に及ぶことが理解されるべきである。ここで用いられるいかなる表題も構成上の目的だけのためのものであり、明細書の範囲又は特許請求の範囲を限定することを意味しない。ここで用いられる「かもしれない、あり得る、し得る、であろう、ことがある、してよい、あってよい、することができる(may)」の語は、必須の意味(即ち「なければならない(must)」を意味する)ではなく、許容の意味(即ち「可能性がある」を意味する)である。同様に、「含む(include)」及び「含んでいる(including)」は含んでいることを意味し、限定することを意味しない。
トランザクションのメモリシステムは、ロックを用いる相互排他のような従来の同期メカニズムに付随する経費及びプログラム上の複雑性を必要とすることなしに、多重スレッドシステムにおけるソフトウエアスレッドが他のスレッドに関してアトミックに一連の共有メモリロケーションにアクセスする(読み出す及び/又は書き込む)ことを可能にし得る。しかし、トランザクションのメモリシステムの効率を高めるためには更なる技術が必要である。
幾つかの実施形態によると、ここで説明される効率的なトランザクションのメモリメカニズムを実装するために種々のハードウエアメカニズムが用いられてよい。幾つかの実施形態においては、高位の同期メカニズムを合成するのに用いることができる種々の同期機能をハードウエアが実行するように命令するために、コンピュータ的に高価でない基本命令(primitives)(例えばプログラム命令)が定義されてよい。ハードウエアメカニズム及び/又はプログラム命令は、ここでは集合的に高度な同期機構(Advanced Synchronization Facility)(ASF)と称されることがある。
幾つかの実施形態においては、既存のプロセッサアーキテクチャ(例えばx86)がASFメカニズムを実装するように補強されてよい。説明を明確にするために、この開示の残りは、既知の64ビットx86アーキテクチャAMD64が、トランザクションのメモリを実装するためにどのようにASFメカニズムと共に増強され得るかを説明している。しかし、これらの例示的な実施形態はASFメカニズムをこのアーキテクチャだけに限定することを意図されておらず、またこの開示の利点を与えられれば、他のプロセッサアーキテクチャにおけるASFメカニズムの実装は当業者に明らかであろう。
図1は種々の実施形態に従いASFを実装するように構成される多重プロセッサコンピュータシステムの構成部分を示すブロック図である。図示された実施形態によると、コンピュータシステム100は多重プロセッサ、例えばプロセッサ110a及び110bを含んでいてよい。幾つかの実施形態では、プロセッサ110は、多重化された物理的又は論理的(例えばSMT)コアを備えていてよく、また互いに結合され且つ/又は符号140で示されるような相互接続を介して共有メモリ150に結合されていてよい。種々の実施形態において、種々のトポグラフィにある共有システムバス又は点対点ネットワーク(例えば完全接続、トーラス、等)のような異なる相互接続が用いられてよい。
図示された実施形態によると、各プロセッサ110は1つ以上のレベルのメモリキャッシュ130を含んでいてよい。メモリキャッシュのレベルは階層的に配置されてよく(例えばL1キャッシュ、L2キャッシュ、L3キャッシュ、等)、また共有メモリ150に記憶されている複数の値のローカルコピーをキャッシュするために用いられてよい。
種々の実施形態において、メモリキャッシュ130は種々のキャッシュコヒーレンスメカニズム132を含んでいてよい。キャッシュコヒーレンスメカニズム132は、1つの実施形態においては、各プロセッサ110のメモリキャッシュ130内に含まれている複数の値が、共有メモリ内及び/又は他のプロセッサのメモリキャッシュ内に記憶されている複数の値に対してコヒーレントであることを確実にするために、相互接続された複数のプロセッサの間でのキャッシュコヒーレンス通信プロトコルを実装していてよい。幾つものそのようなプロトコル(MESI(即ちイリノイ(Illinois)プロトコル)及びMOESIプロトコルを含む)が存在し、また種々の実施形態において実装されてよい。キャッシュコヒーレンスプロトコルは、プロセッサ同士が共有データに対する修正を互いに伝えることを可能にするための一連のメッセージ及びルールを定義することができ、それによりキャッシュコヒーレンスが維持される。例えば、MESIプロトコルに従うと、キャッシュ内に記憶されている各ブロックは、4つの状態、即ち修正された、排他的な、共有された、又は無効な状態の1つにあるものとして標識付けられる必要がある。ある特定のプロトコルは、一連のメッセージ及びルールを、それらのメッセージを送信し且つ解釈するために定義し、それらのメッセージによりプロセッサは各ブロック上の適切な標識付けを維持する。所与のキャッシュブロックの状態に応じて、プロセッサは特定の動作を実行することを制限されてよい。例えば、プロセッサは、無効であると標識付けられているキャッシュブロックに依存するプログラム命令を実行しなくてよい。キャッシュコヒーレンスメカニズムは、種々の実施形態において、ハードウエア、ソフトウエア、又はそれらの組み合わせにおいて実装され得る。キャッシュコヒーレンスメッセージは、相互接続140を介して通信されてよく、またブロードキャスト又は点対点であってよい。
図示された実施形態によると、各プロセッサ110はまた、ここに説明されるように、トランザクションのメモリを実装するための種々のASFメカニズムを含んでいてよい。種々の実施形態において、より多くのプロセッサ110が相互接続140に接続されていてよく、また種々のレベルのキャッシュメモリがそのような多重のプロセッサの間で且つ/又は各プロセッサ上の多重コアの間で共有されてよい。
図2は1つの実施形態に従いプロセッサ110のようなプロセッサを備えている構成部分の更なる詳細を示すブロック図である。図示された図2の実施形態によると、プロセッサ200はレジスタファイル210を備えており、レジスタファイル210は、各々が任意のサイズ(例えば16ビット、32ビット、64ビット、128ビット、等)であってよい種々のレジスタを含んでいてよい。例えばレジスタファイル210は、種々の既知のx86レジスタ、例えばrSPレジスタ212(スタックポインタ)、rIPレジスタ214(命令ポインタ)、rAXレジスタ216(アキュムレータレジスタ)、及び/又はrFLAGSレジスタ218(プロセッサ状態を示すフラグレジスタ)を含んでいてよい。幾つかの実施形態では、レジスタファイル210は任意の数の汎用レジスタ220及び/又は浮動小数点レジスタ222を更に備えていてよい。幾つかの実施形態では、レジスタファイル210は1つ以上の128ビットレジスタ、例えばXMMレジスタ224を含んでいてよいい。種々の実施形態において、レジスタファイル210は種々のサイズであってよい任意の数の他のレジスタ226を備えていてよい。
図示された実施形態によると、プロセッサ200は、共有メモリ内の複数の値のローカルコピーを記憶するためのメモリキャッシュ230と、それらの値の無矛盾性を、共有メモリ、キャッシュ、及び他のキャッシュ内に分散されている種々のコピーにわたって維持するためのキャッシュコヒーレンスメカニズム232とを含んでいてよい。プロセッサ200はまた、ここで説明されているようなトランザクション同期メカニズムを実施するためのASFメカニズム240を含んでいてよい。ASFメカニズム240は、種々の実施形態に従ってここに説明されているようなメモリトランザクションを実施するためにデータ構造及び/又は論理を含んでいてよい。幾つかの実施形態では、ASFメカニズム240は固定ラインバッファ(locked line buffer)242を含んでいてよく、固定ラインバッファ242は、後で説明されるような部分的に実行されるトランザクションによって生じるメモリ変化を後退させる(roll back)ための中断(abort)の場合に用いられてよい。幾つかの実施形態では、ASFメカニズム240はネスティングレベルレジスタ(nesting level register)244を含んでいてよく、ネスティングレベルレジスタ244は、後で更に詳細に説明されるような、その時点でのトランザクションが他のトランザクションにおいて入れ子にされている(nested)深さを示す値を保持することができる。幾つかの実施形態では、ASFメカニズムは、トランザクションがアクティブであるかどうかを示すためのフラグ、例えばトランザクションアクティブフラグ246を含んでいてよい。幾つかの実施形態では、ASFメカニズムは、トランザクションモードを示すフラグ、例えば記憶状態モードフラグ248を含んでいてよく、記憶状態モードフラグ248は、実行中のトランザクションが記憶状態モード又は他のモードのいずれにおいて実行中であるかを示すためにセットされてよい。更なる実施形態においては、トランザクション実行を支援するためにASFメカニズム240内に他のフラグ及び/又はレジスタが実装されていてよい。
図3は種々の実施形態に従いASFを用いるトランザクションを実行するための方法を示す一般的なフロー図である。図示された実施形態によると、ASFは、ステップ310にあるように、ソフトウエア(例えばスレッド)がトランザクションの開始を示す所与の命令(又は多重命令)を実行することによってトランザクション(即ちコードのクリティカルセクション)を実行することを許可してよい。後で論じられるように、種々の実施形態においては、クリティカルセクションの開始を示すために、SPECULATE又はBEGINのようなASF命令を用いることができる。
トランザクションを開始した後、スレッドは、ステップ320にあるように、トランザクション本体を備えた一連の命令を実行してよい。そのような命令は多くのメモリアクセス(読み出し及び/又は書き込み)動作を含んでいてよく、その幾つかはアクセスされたメモリロケーションが保護されるべきであることを指定することができる。スレッドは、所与のメモリロケーションがASFにより提供される1つ以上の特別な宣言子(declaratory)命令を用いることによって保護されるべきであることを指定することができる。ASFメカニズムは、保護されたメモリ(宣言子命令によって指定された)へのアクセスがシステム内の同時に実行中の他の全てのスレッドに関してアトミックに起こること(即ち一斉に又は全くないように)を確実にすることができる。例えば、メモリへの多重の保護された書き込みをトランザクションが含む場合には、ASFメカニズムは、メモリへの当該保護された書き込みのサブセットのみの結果を確実に他のスレッドが観察することができないようにしてよい。他の例においては、幾つかの実施形態によると、トランザクションが1つ以上の保護されたメモリ読み出し動作を含む場合には、ASFメカニズムは、トランザクションが完了する前に他のスレッドが保護された読み出しロケーションを修正していないときに限りそのトランザクションが成功して完了することを確実にしてよい。種々の実施形態においては、宣言子動作によって保護される「メモリロケーション」は、システム依存キャッシュブロックのサイズのような異なるサイズのもの又は他のサイズのものであってよい。
そのような実施形態によると、ASFは、指定された宣言子命令を用いて特定されたメモリラインだけを保護するように構成されてよい。そのような実施形態においては、他の全てのメモリロケーションは、保護されていないままであってよく、また標準的なx86命令を用いてクリティカルセクション内を修正されてよい。保護されていないメモリへのこれらの修正は、例えばプログラム順序での実行に際して即座に他のCPUに対して可視的になってよい。幾つかの実施形態においては、トランザクション本体(例えばステップ320において実行される命令)は、1つ以上の他のトランザクション(即ち入れ子にされたトランザクション)を備えていてよい。
種々の実施形態によると、トランザクション実行の1つ以上の状態が妨害された場合には、当該トランザクションは中断してよい(ステップ330からの肯定の出口で示される)。種々の実施形態においては、トランザクションの試行は、他のプロセッサとの競合、遠方(far)制御転送(例えば割り込み及び障害に起因するもの)、明示的なソフトウエアABORT命令の実行、不十分なハードウエア資源、他の実装固有の状態、等を理由として、任意の点で中断されてよい。
種々の実施形態においては、トランザクションの試行が中断した場合には、トランザクションの実行のモードに応じて種々のリカバリ動作がとられてよい。種々の実施形態においては、各トランザクションに対して、ASFは、後退(rollback)モードの実行及び/又は記憶状態モードの実行を支援することができる。幾つかの実施形態では、モードの実行は、中断されているトランザクションの試行に応答して何の動作が実行されているのかを決定してよい。例えば、幾つかの実施形態においては、後退モードでトランザクションを中断することは、実行をそのトランザクションの開始へ「後退させる」ことができ、一方、記憶状態モードでトランザクションの試行を中断することは、そのトランザクションの記憶動作が実行されないままでそのトランザクションを継続させることができる(即ちトランザクションの記憶の実行はそのトランザクションが中断されなかったことを条件としてよい)。
図示された実施形態によると、後退モードにおいて実行しているトランザクションが中断した場合(ステップ340からの肯定の出口によって示される)、ステップ350にあるようにASFメカニズムがリカバリ動作を実行するように設定されてよく、リカバリ動作は保護されたラインの内容に対する修正を破棄することを含んでいてよい。ステップ350にあるように当該修正を破棄することによって、ASFメカニズムは、当該修正をシステム内の他のスレッドから観測することができないようにすることができ、それによりトランザクションのアトミック性(atomicity property)に適合することができる。しかし、ASFメカニズムは、保護されていないメモリへの修正、例えば標準的なx86メモリ命令を用いて実行された修正を後退させないように設定されてもよい。幾つかの実施形態においては、アプリケーションプログラマは、これらの保護されていない修正を収容するためのソフトウエア、例えばクリティカルセクションに至るまでの初期化シーケンスに再び入るように構成されるソフトウエアリカバリルーチンを提供してよい。
種々の実施形態においては、ステップ350のリカバリ動作は、全てのレジスタよりはむしろシステムレジスタの一部(例えばrIP及びrSP)のみを後退させるように設定されてよい。従ってそのような実施形態においては、トランザクションの実行に入るときに種々のレジスタの内容に頼らないようにソフトウエアが書かれてよい(例えば、中断イベントの後に幾つかのレジスタの初期内容を無視することによって、及び/又はトランザクションの実行の間に種々のレジスタを修正しないことに対して)。
幾つかの例では、割り込み又は例外ハンドラがリターンする前に、オペレーティングシステムコード又は他のプロセスが暫定的に実行されてしまっていてよい。更に、幾つかの例では、割り込まれたトランザクションが目標としていたロケーションを調査し及び/又は修正するASFトランザクションを他のプロセスが実行してしまっていてもよい。幾つかの実施形態においては、ASFメカニズムは、複数のコンテキストスイッチにわたる任意のASF関連状態を維持しないことによる懸念を未然に防止してよい。その代わりに、そのような実施形態においては、割り込まれたスレッドがプロセッサにリターンしたときに、ASFメカニズムは当該トランザクションを自動的に中断すると共に再試行するように設定されてよい。
図示された実施形態によると、1つ以上のリカバリ動作を実行した後に、スレッドは次いで、ステップ350からステップ310までのフィードバックループで示されるように、当該トランザクションを再試行してよい。
幾つかの実施形態においては、記憶状態モードにおけるトランザクション実行の中断(ステップ340からの否定の出口によって示される)は、後退におけるトランザクション実行の中断(ステップ340からの肯定の出口によって示される)とは異なるように処理されてよい。例えば、後退モードトランザクションの中断は実行フローをクリティカルセクションの開始へ(又は他のリカバリコードへ)自動的にリセットしてよいのに対して、記憶状態モードにおけるトランザクションの中断は、保護されたメモリロケーション内の値に対してクリティカルセクションによって作成された変更を取り消すかさもなければ破棄した後に、ステップ360にあるように当該トランザクションを「解除する(deactivating)」ことによって処理されてよい。種々の実施形態においては、トランザクションを解除することは、中断が発生したこと及び/又はトランザクションがもはやアクティブでないことを示す状態コードをセットすることを含んでいてよい。記憶状態モードにおいては、トランザクションが解除され(ステップ360にあるように)た後、保護されたメモリロケーションへの任意の記憶動作を実行することなしに、システムはクリティカルセクションの実行を継続して(ステップ370において)よい。例えば、トランザクションが解除された後、保護されたメモリロケーションに対する後続の記憶動作は動作不能(no-ops)として処理されてよい。
幾つかの実施形態においては、中断されたトランザクションが完了した場合、トランザクションが中断されていたことを示すために状態コードがレジスタ、例えばrAXレジスタ216内にセットされてよい。幾つかの実施形態においては、ステップ370からステップ350へのフィードバックループによって示されるように、中断状態コードが設定されたことを検知すると共に1つ以上のリカバリ動作を実行するようにスレッドが設定されてよい。種々の実施形態では、ステップ350のリカバリ動作は、記憶状態モードにおいて(即ちステップ370からの)中断されたトランザクションに対するのと、後退モードにおいて(即ちステップ340からの)中断されたトランザクションに対するのとで異なっていてよい。後退及び記憶状態モードにおけるトランザクションの更に詳細な議論は後で提供される。
図示された実施形態によると、一旦トランザクション本体が完了したら、スレッドは、ステップ380にあるように、ASFメカニズムに対するトランザクションの終了を示す1つ以上の命令、例えば以下に論じられるようなCOMMIT命令を実行してよい。ステップ380にあるようにトランザクションをコミットした後、スレッドはステップ390にあるように実行を継続してよい。
幾つかの実施形態においては、ASFは1つ以上の他のトランザクション内の1つ以上のトランザクションのネスティング(nesting)を支援することができる。例えば、ステップ310にあるようにトランザクションが開始された後(例えばSPECULATE命令を実行することによって)、ステップ320において実行中のトランザクション本体の命令は、その第1のトランザクションが完了する前に他のトランザクションを開始することができる(例えば他のSPECULATE命令を実行することによって)。この場合、第2の(「子」)トランザクションは第1の(「親」)トランザクション内で「入れ子にされている(nested)」と言われることがある。いかなる他のトランザクション内においても入れ子にされていないトランザクションは、ここでは「トップレベル」トランザクションと称されることがある。
図4は1つの実施形態に従い入れ子にされたトランザクションの例を示している。図4によると、トップレベル親トランザクション400は後退モードトランザクションであり、2つの入れ子にされたトランザクション、即ち同じく入れ子にされた親トランザクション410と、記憶状態モードにある入れ子にされたトランザクション440とを備えている。図示された実施形態によると、入れ子にされた親トランザクション410は、2つの入れ子にされたトランザクション、即ちそれぞれ後退モード及び記憶状態モードにある入れ子にされたトランザクション420及び入れ子にされたトランザクション430を含む。
幾つかの実施形態においては、ASFメカニズムは、入れ子にされた複数のトランザクション(例えば多重のSPECULATE−COMMIT複数対から構成される)を単一のトランザクションに平坦化するするように設定されてよい。幾つかの実施形態においては、入れ子にされたトランザクションはASFハードウエア資源を共有することができる。即ち、幾つかの実施形態においては、入れ子にされたトランザクションの実行の間、親トランザクションによって保護されているメモリロケーションは、子トランザクションにおいても保護され続ける。また、幾つかの実施形態においては、入れ子にされたトランザクションにおいて保護されているメモリロケーションは、その入れ子にされたトランザクションが完了した後にも親トランザクション内で保護され続け得る。このように幾つかの実施形態においては、子トランザクションによって保護されているメモリロケーションを取り扱うときに、保護されているメモリ動作を親トランザクションが継続して用いる必要があることがある。そのような実施形態においては、子トランザクションによって保護されているメモリロケーションに対する親による標準的メモリ書き込み動作の使用は、一般的な保護障害(即ち#GP例外)を引き起こす可能性がある。
幾つかの実施形態においては、1つ以上の記憶状態トランザクションは1つ以上の後退トランザクション内で入れ子にされてよい。幾つかの実施形態においては、入れ子にされた複数のトランザクションの平坦化を理由として、ASFメカニズムは、トップレベル親トランザクション(ステップ350にあるような)のリカバリ動作を実行することによって、入れ子にされた記憶状態トランザクションの中断に応答するように設定されてよい。しかし、幾つかの実施形態によると、入れ子にされたトランザクションは記憶状態トランザクションの内部で許可されなくてよい。
トランザクションの実行を可能にするために、ASFメカニズムは、ソフトウエアスレッドによって呼び出され得る種々のコヒーレンシ制御命令を定義すると共に顕在化してよい。幾つかの命令が異なる実施形態において異なるように命名されてよいが、種々の実施形態は、以下の1つ以上に一致し又は類似するコヒーレンシ制御命令を顕在化すことができる。
図5は幾つかの実施形態に従うSPECULATE命令の実装又は実施を示している。上で論じられたように、幾つかの実施形態においては、SPECULATE命令は、後退モードにおけるトランザクションの開始を示すためにスレッドによって実行されてよい。図示された実施形態によると、SPECULATE動作を実行することは、ステップ505にあるように、システムによって支持される最大ネスティング深さを超えてトランザクションが入れ子にされているかどうかを照合することを備えていてよい。種々の実施形態においては、その時点で実行しているトランザクションの深さを保持するために、様々なレジスタ及び/又はメモリロケーションが用いられてよい。ステップ505からの肯定の出口によって示されるように、トランザクションがシステム規定最大ネスティング深さよりも深い場合には、ASFメカニズムは、ステップ515にあるように、一般的な保護障害(#GP[0])を提起するように設定されていてよい。
図示された実施形態によると、SPECULATE命令を実行することは、ステップ510にあるように、トランザクションが記憶状態トランザクション内で入れ子にされているかどうかを決定することを更に備えていてよい。トランザクションが記憶状態トランザクション内で入れ子にされ得ない幾つかの実施形態においては、ステップ510からの肯定の出口によって示されるように、親トランザクションが記憶状態トランザクションであることの検知に応答して、ASFメカニズムは、ステップ515にあるように、一般的な保護障害を提起するように(又は何らかの他の動作をとるように)設定されてよい。幾つかの実施形態においては、その時点での実行のモードを示すために用いられるレジスタ又はメモリロケーションが、親トランザクションが記憶状態モードで実行しているかどうかを決定するために読み込まれてよい。更なる実施形態においては、トランザクションの有効性に対する種々の他の照合が実行されてよく、また1つ以上が違反している場合にはGP障害が提起されてよい。
図示された実施形態によると、トランザクションが有効である(例えば、最大ネスティング深さを超えておらず且つ記憶状態トランザクション内で入れ子にされていない)場合には、rAXレジスタ(又は他の適切なレジスタ)が、例えばそれをゼロ値にセットすることによってリセットされてよい。幾つかの実施形態においては、rAXレジスタは、以下に説明されるようにトランザクション実行状態を示す種々の値及びコードを保持することができる。
図示された実施形態によると、SPECULATEの実行は、次いでステップ530にあるようにトランザクションがトップレベルトランザクションであるかどうかを決定してよい。幾つかの実施形態においては、この決定は、その時点のトランザクションが入れ子にされているかどうかを決定するために、インクリメントされたネスティングレベルの値を照合することを備えていてよい。ステップ530からの肯定の出口によって示されるように、トランザクションがトップレベルトランザクションである場合には、SPECULATEを実行することは、トランザクションが中断されたときにプロセッサが所与の後退点まで実行を戻すのに用いることができる情報を含む照合点を記録することを備えていてよい。幾つかの実施形態では、照合点を記録することは、SPECULATE命令が実行された後に、ステップ535及び540にあるように、命令ポインタ(例えばrIP214)及びスタックポインタ(例えばrSP212)が即座に有することになる値を記録することを含んでいてよい。従って、中断の場合には、記録された照合点は、SPECULATE命令のすぐ後に続く命令に制御を移管するために用いることができる。幾つかの実施形態においては、SPECULATE命令を実行することは、1つ以上の他のレジスタ、例えばrFLAGSレジスタ218における値がプロセッサ状態を示すようにこれらを設定又は修正することを更に備えていてよい。
幾つかの実施形態においては、SPECULATE命令は後退モードにあるトランザクションを開始してよいが、異なる命令(例えばBEGIN)が記憶状態モードにあるトランザクションを開始してもよい。
図6は幾つかの実施形態に従いBEGIN命令を実行するステップを示している。方法600はトランザクションに対する1つ以上の有効状態を決定することによって開始してよい。幾つかの実施形態においては、これらの状態は、SPECULATEトランザクションを実行するときに照合される状態と類似していてよい。例えば方法600においては、BEGINを実行することは、最大ネスティングレベルに到達したかどうか(ステップ605にあるように)を決定することと、その時点でのトランザクションが他の記憶状態セクション内で入れ子にされているかどうか(ステップ610にあるように)を決定することとを備えている。いずれかの条件が真である場合には(ステップ605及び610からの肯定の出口によってそれぞれ示されている)、ASFメカニズムは、ステップ615にあるように、GP又は他の障害を提起するように設定されてよい。そうでない場合には、方法600によると、BEGINを実行することは、ステップ620にあるようにrAX又は他のレジスタをリセット(例えばゼロに)することと、ネスティングレベルをインクリメントすることと(ステップ625にあるように)、その時点でのトランザクションが記憶状態モードにあることを示すフラグをセットすることと(ステップ630にあるように)、トランザクション本体のトランザクションの実行に進むことと(ステップ635にあるように)を含んでいてよい。種々の実施形態においては、ステップ630におけるフラグセットは、ステップ510及び610にあるように、その時点でのトランザクションが記憶状態モードにあるかどうかを決定するために用いることができる。
幾つかの実施形態においては、ASFメカニズムは、どのメモリロケーションがトランザクションの一部として保護されるべきか(即ちアトミックアクセスが望まれるメモリロケーション)を指定するために、宣言子と称される種々のメモリ参照命令を定義することができる。例えば幾つかの実施形態においては、ASFメカニズムは、標準的なx86_MOV命令に類似する、メモリを読み出すための宣言子メモリアクセス命令を顕在化することができる。従来のMOV命令と同様に、メモリからの複数の値をロードするために、ASF定義のLOCK_MOV命令を用いることができる。しかし、幾つかの実施形態によると、スレッドがLOCK_MOV命令を用いてトランザクション内のメモリロケーションを読み出す場合、ASFメカニズムは、参照されたメモリロケーションの第1バイトを含むメモリキャッシュブロックを一連の保護されたキャッシュブロックに付加してよい。幾つかの実施形態においては、ソフトウエアメカニズムは、整列させられていない(unaligned)メモリアクセスが、保護されたライン及び保護されていないラインの両方に渡る(span)ことがないことを確実にすることができる。幾つかの実施形態によると、既に保護されているキャッシュブロックを参照する宣言子命令は、通常のメモリ参照と同様の挙動を示してよく、またブロックの保護された状態を変化させないであろう。幾つかの実施形態においては、宣言子はクリティカルセクションの外側では許可されなくてよい(例えば例外が提起されてよい)。幾つかの実施形態においては、クリティカルセクションの外側での宣言子は、通常のメモリ動作と同様に処理されてよい。これは記憶状態モードが利用可能な幾つかの実施形態の場合となろう。
幾つかの実施形態においては、ASFメカニズムはLOCK_MOV命令の他に宣言子も定義してよい。例えば、x86_PREFETCH及び/又はPREFETCHWに類似した命令が用いられてよい(例えばLOCK_PREFETCH、LOCK_PREFETCHW)。これらと同様、x86アナログ、LOCK_PREFETCH及びLOCK_PREFETCHWが、(PREFETCH)の読み出し又は(PREFETCHW)の書き込みに対してメモリからキャッシュへ値をフェッチ(fetch)するために用いられてよい。しかし、LOCK接頭辞のない標準的なプリフェッチ(prefetches)と異なり、LOCK_PREFETCH及びLOCK_PREFETCHWはメモリロケーションを保護させることができる。また幾つかの実施形態においては、LOCK_PREFETCH及びLOCK_PREFETCHWは、解釈障害(translation faults)及びメモリアクセス許可(それぞれ読み出し又は書き込み)に対して、指定されたメモリアドレスを照合することもでき、また不成功の場合にはページ障害を生成することができる。幾つかの実施形態においては、LOCK_PREFETCH及びLOCK_PREFETCHWは、データ分断点が構成されたメモリアドレスを参照する場合における#DB例外を生成することができる。
幾つかの実施形態においては、メモリロケーションが宣言子を用いて一旦保護されたならば、当該メモリロケーションは、当該トランザクション内で再度推測的に、しかし非推測的にではなく修正されてよい。例えば幾つかの実施形態においては、LOCK_MOV読み出し命令を用いてメモリロケーションが読み出された後、そのメモリロケーションに記憶されている値は、ASF定義のLOCK_MOV記憶命令を用いて推測的に修正されてよい。実施形態によると、そのような推測的な更新は、そのトランザクションがコミットされている場合にのみ可視的になってよい。そのような実施形態によると、トランザクションの試行が中断された場合、推測的な更新は後退され且つ/又は破棄される。幾つかの実施形態においては、トランザクションの実行の間、宣言子を用いて保護されたメモリロケーションは、推測的な記憶命令を用いてのみ修正されてよい。そのような実施形態においては、トランザクションのモードにあるスレッドが、従来の非推測的な記憶動作を用いて、保護されたメモリロケーションの値を修正しようとする場合、ASFメカニズムは例外/障害(例えば#GP(0))を提起することがある。
幾つかの実施形態においては、推測的な記憶命令(例えばLOCK_MOV)がクリティカルセクション外で実行されている場合には、例外が提起されてよい。記憶状態モードが利用可能であるような他の実施形態においては、クリティカルセクション外での推測的な記憶は動作不能(no-op)として取り扱われてよい。
種々の実施形態において、宣言子メモリ命令はシステムのキャッシュコヒーレンスプロトコルに関与してよい。例えば、メモリロケーションを読み込むためのLOCK_MOV又はLOCK_PREFETCH命令がキャッシュ内でミスした場合、システムのキャッシュコヒーレンスプロトコルによる指示に従って、非無効化プローブ(probe)が他のプロセッサへ送られてよい。他の例においては、排他的な/所有に係る状態にあるローカルキャッシュ内に所与のキャッシュラインが既にない場合には、LOCK_MOV命令を用いてそれを修正しようとすることは、結果として、システムのキャッシュコヒーレンスプロトコルの指示に従って無効化プローブを他のプロセッサに送ることをもたらすことがある。幾つかの実施形態においては、LOCK_PREFETCHW命令の実行もまた、無効化プローブ等を送ることを結果としてもたらすであろう。
種々のASFメカニズムが、保護されたメモリロケーション(例えば保護されたキャッシュブロック)を監視し且つ/又は強化するために用いられてよい。幾つかの実施形態においては、どのキャッシュライン(即ちブロック)が保護されているのかを示すために、ASFメカニズムは1つ以上のシステムのキャッシュへの拡張を含んでいてよい。例えば1つの実施形態においては、所与のキャッシュ内の各ラインは「保護された」フラグを備えていてよく、そのフラグは、その時点で実行中のトランザクション内でそのキャッシュラインが保護されている場合にセットされ、また保護されていない場合に非セットにされる。幾つかの実施形態においては、保護されているフラグは1つ以上のビットを備えていてよい。
幾つかの実施形態においては、保護されたキャッシュラインを追跡するためのASFメカニズムは固定ラインバッファを備えていてよい。そのような実施形態においては、保護されたメモリロケーション内の値が修正されている場合には(例えばLOCK_MOV命令によって)、キャッシュブロック及びそれによって保持されている修正前の値を示すために、固定ラインバッファへのエントリが作成されてよい。そのような実施形態では、トランザクションの中断のイベントにおいて、固定ラインバッファのエントリは、各保護されたキャッシュラインのトランザクション前の値をローカルキャッシュに再記憶させるのに用いることができる。そのような実施形態においては、以下に説明されるように、固定ラインバッファはシステムのキャッシュコヒーレンスプロトコルに関与していてよい。
他の実施形態においては、上述のようにメモリ記憶を取り消すために固定ラインバッファを用いることの代わりに、種々のASF実装は、クリティカルセクション内の保護されたメモリロケーションに対する記憶命令が、トランザクションがコミットされるよりも前にキャッシュ及び/又はメモリへ書き込まれることを防止することができる。例えば、ASFは、内部記憶バッファ内の全てのメモリ修正を保持し且つバッファリングされた複数の値をトランザクションにおける後続のロード動作へ転送するように構成されてよい。そのような実施形態においては、一旦トランザクションがコミットすると、ASFメカニズムは、内部記憶バッファ内にバッファリングされた複数の記憶動作がキャッシュへ書き戻されることを許容することができる。
幾つかの実施形態においては、種々のASFハードウエア構成部分の固定された能力に起因して、トランザクション(又は一連の入れ子にされたトランザクション)の間に同時に保護することのできるメモリロケーションの数に関して種々の制限が存在し得る。例えば上述したように幾つかの実施形態によると、クリティカルセクションの期間のために全ての保護されたメモリロケーションがデータキャッシュ(例えばメモリキャッシュ230)内に同時にあるような実装が必要になり得る。そのような実施形態においては、保護されたラインがトランザクションの間にキャッシュから退避させられた場合には(例えば容量の制約に起因して)、クリティカルセクションは中断されてよい。例えば、保護されたメモリロケーションN+1がアクセスされるときに少なくとも1つの保護されたキャッシュラインは退避させられているであろうから、Nウエイアソシアティブ(N-way associative)データキャッシュ内の同一のセットに全てマッピングされたN+1メモリロケーションを参照するように発生したクリティカルセクションは、完了しなくてよい。しかし、更に分散された参照パターンをトランザクションが実行する場合には、任意の1つのキャッシュインデックスが超えられる前であって且つ保護されたラインがデータキャッシュから移される前のNよりも多くのメモリロケーションを同時に保護することが可能になるであろう。
種々の実施形態においては、キャッシュアソシアティビティ(cache associativity)以外にも容量制限があり得る。例えば固定ラインバッファが用いられている実施形態においては、同時に保護され修正されるメモリロケーションの最大数は、固定ラインバッファの容量によって決定され得る。他の例において記憶バッファリングスキームを利用する実施形態では、ASFハードウエア能力は、記憶バッファの容量(即ちシステムパイプラインによって支持されている未解決の(outstanding)記憶の最大数)に依存するであろう。
種々の実施形態では、ASFメカニズムは、保護されたロケーションの数が所与の最大保証容量を超えない限りにおいて、不十分なハードウエア能力に起因してクリティカルセクションが機能しなくなることのないように保証することができる。種々の実施形態においては、保護されたメモリロケーションが、キャッシュ可能なアドレス空間内の何処にあるかにかかわらず、この保証が可能である。例えば、保護された全てのメモリロケーションがデータキャッシュ内に同時にあることを必要とする実施形態においては、最小保証容量はデータキャッシュのアソシアティビティ(即ちアソシアティビティセットのサイズ)に依存するであろう。種々の実施形態においては、トランザクションがハードウエア能力を超えた場合には、トランザクションの試行は中断してよい。
幾つかの実施形態においては、ASFメカニズムは、トランザクションを実行しているスレッドが、修正されずに保護されているメモリロケーションをトランザクションの一連の保護されているメモリロケーションから取り除くことを可能にしてよい。幾つかの実施形態においては、このことは、ASFによって提供される明示的なRELEASE命令を当該スレッドが実行することによって達成され得る。幾つかの実施形態においては、保護されているメモリロケーションが解除された(released)場合(例えばRELEASE命令を用いて)、そのメモリロケーションはもはや他のスレッドとの競合を監視されない。例えば、保護されたフラグが利用される実施形態においては、解除されたキャッシュブロックに関連するその保護されたフラグの値は、当該ブロックがもはや保護されていないことを示すように修正されてよい。このように、修正されずに保護されているメモリロケーションを一連の保護されているメモリロケーションから取り除くことによって、スレッドは、トランザクション中断を招くであろう、他のスレッドとの不必要なデータ矛盾、及び/又はASF実装のハードウエア能力を超えることを回避することができる。幾つかの実施形態においては、RELEASE命令は、指定された保護されているメモリロケーションが解除されるであろうことを保証してよいし、保証しなくてもよい。幾つかの実施形態においては、修正されたことのない保護されたキャッシュラインのみが解除されてよい。
上述したように、幾つかの実施形態においては、ASF実装の容量よりも多くのメモリロケーション(例えばキャッシュブロック)を保護する(宣言子を用いて)ことをトランザクションが試行た場合には、そのトランザクションは中断されてよい。他の実施形態においては、中断は提起されている障害に応答して実行されてよい。
種々の実施形態において、トランザクション中断は、不十分なハードウエア能力以外の条件によっても生じることがある。例えば、メモリ競合、つまり保護されているメモリロケーションにアクセスしようと試行している他のプロセッサに起因する干渉によっても中断が生じ得る。種々の実施形態において、ASFメカニズムは、1つ以上の保護されたキャッシュラインに関連していてよくまたデータ矛盾が存在することを当該プローブが示しているかどうかを決定してよい種々のキャッシュコヒーレンスメッセージ(例えば無効化及び/又は非無効化プローブ)を検知するように構成されてよい。データ矛盾を検知することに応答して、ASFメカニズムはトランザクションの試行を中断してよい。例えば、トランザクションのモードで実行中であり且つメモリロケーションを保護している(即ち宣言子命令を用いてメモリロケーションを読み出している)第1のスレッドを想定する。次いでその保護されているメモリロケーションへの記憶を第2のスレッドが試行する場合、第2のスレッドを実行しているプロセッサは、システムによって展開されている特定のキャッシュコヒーレンスプロトコルに従って、第1のスレッドを実行しているプロセッサに無効化プローブを送ってよい。もしメモリロケーションがまだ保護されている間に(例えば第1のスレッドがそのトランザクションをコミットするかさもなければメモリロケーションを解除するよりも前に)第1のプロセッサが無効化プローブを受け取れば、データ矛盾が存在しているであろう。そのような例においては、ASFメカニズムは、保護されているメモリロケーションに無効化プローブが関連していることを検知し、それに応答して第1のスレッドのトランザクションを中断するように構成されていてよい。
種々の実施形態によると、保護されているキャッシュラインに関連する無効化プローブが受け取られたことをASFメカニズムが検知した場合に、トランザクションは中断されてよい。幾つかの実施形態においては、修正され保護されているキャッシュラインに関連する非無効化プローブが受け取られたことをASFメカニズムが検知した場合にも、トランザクションは中断されてよい。
図7は幾つかの実施形態に従い種々のASF実装がどのようにしてデータ競合を処理し得るのかを規定する一連の規則をまとめた表である。図7の表は、第1のプロセッサ(CPU_A)上で実行中の第1のスレッドが所与のメモリロケーションでの所与のメモリアクセス動作を実行している一方で第2のプロセッサ(CPU_B)上の第2のスレッドが当該ロケーションを保護してきたトランザクションを実行しているときの結果を説明している。上述したように、種々のコヒーレンスプロトコルは、メモリキャッシュが、リードオンリアクセスのための異なる「状態」、例えば「共有された」状態で、又は書き込みアクセスのための「所有された」若しくは「排他的な」状態でメモリ値をキャッシュすることを可能にする。「保護され共有されている」及び「保護され所有されている」の列は、それぞれ共有され及び所有された状態での保護されたキャッシュラインに対応している。
例えば、図7の表の上段の項目は、1つの実施形態に従って状況をどのように処理するのかを列挙しており、CPU_Aは任意のモード(クリティカルセクションの内側又は外側)で実行中であると共に、共有された又は所有された状態のいずれかでCPU_Bが保護しているメモリロケーションに対する読み出し動作を実行している。図示された実施形態によると、所有された状態でCPU_Bがロケーションを保護している場合には、CPU_Bのトランザクションは中断し、さもなければCPU_Bのトランザクションは中断しない。CPU_Aが任意のモードでプリフェッチ動作を実行したか又はCPU_Aがトランザクションの内部からのLOCK_MOV若しくはLOCK_PREFETCH動作を実行した場合には、同様の結果となることになる。しかし、図示された実施形態によると、CPU_Aが、任意のモードでメモリロケーションに対して書き込み若しくはPREFETCHW動作を実行し又はトランザクションのモードでメモリロケーションに対してLOCK_PREFETCHW動作を実行することになっていた場合には、共有された又は所有された状態でメモリを保持しているかどうかにかかわらず、CPU_Bは当該トランザクションを中断することになる。
幾つかの実施形態においては、トランザクションはASF定義のABORT命令を用いて明示的に中断することができる。幾つかの実施形態においては、許可されていない命令、例えば遠方制御転送をもたらすような命令を試行ていることを理由として、トランザクションは中断され得る。種々の実施形態において、遠方制御転送は、例えばx86実装におけるCSレジスタの内容を変更することにより制御を他のセグメント内のロケーションへ転送する命令を含んでいてよい。遠方制御転送は、トラップ(traps)、フォールト(faults)、例外、NMIs、SMIs、マスクされず且つ非繰り延べの割り込み、例外に変換される許可されていない命令、等を含んでいてよい。幾つかの実施形態においては、許可されない命令は、高められた特権レベル(例えばCPL=0)で実行される必要のある命令のような特権のある(privileged)命令、遠方制御転送又は例外を生じさせる命令、及びセキュアバーチャルマシン(SVM)ハイパーバイザ(hypervisor)によって割り込まれる可能性のある任意の命令を含む。幾つかの実施形態において、許可されない命令は以下を含むことがある。
・FAR_JMP、FAR_CALL、FAR_RET
・SYSCALL、SYSRET、SYSENTER、SYSEXIT
・INT、INTx、IRET、RSM
・BOUND、UD2
・PUSHF、POPF、PAUSE、HLT、CPUID、MONITOR、MWAIT、RDTSC、RDTSCP、RDPMC
・IN、OUT
・全ての特権のある命令
・全てのSVM命令
ここで用いられるSVM命令という用語は、バーチャルマシンモニタ及び/又はバーチャルマシンが複数のバーチャルマシンの境界を越えて相互作用するために用いることのできる任意の命令を参照する。種々の実施形態において、そのような命令は、限定はされないが、VMRUN(即ちバーチャルマシンを動作させる)、VMLOAD/VMSAVE(即ち種々のバーチャルマシン状態をプロセッサ及び/又はメモリ内のセーブ領域にロード/セーブする)、及び/又はVMMCALL(即ちバーチャルマシンモニタに対するシステム呼び出しを実行する)を含んでいてよい。
種々の実施形態において、バーチャルマシンは、プロセッサにおいて設定可能な一連の命令の実行を、例えば当該動作を遮断することによって阻んでよい。そのような命令はここでは「遮断可能(interceptable)」と称されることがある。幾つかの実施形態によると、種々の又は全てのSVM命令は遮断可能である。幾つかの実施形態においては、トランザクション内での任意の遮断可能な命令の実行は、そのトランザクションを中断させてよい。
幾つかの実施形態においては、ASFメカニズムは、バーチャル化された環境(例えばバーチャルマシン)において自然の環境とは異なるように動作するトランザクション内で命令を禁止することができる。そのような制限を課すことによって、実施形態を完全にバーチャル化可能にすることができ、従って当該命令がバーチャル環境で実行されたときに引き起こすであろう予測不能な又は不正確な挙動に煩わされることなく実施形態をバーチャルマシン内で用いることができる。例えば幾つかの実施形態においては、全ての遮断可能な命令はトランザクション内で禁止されてよい。幾つかの実施形態においては、バーチャルマシン特有の命令及び/又は特権のある命令は禁止されてよい。
幾つかの実施形態においては、クリティカルセクション内で許可されていない又は遠方制御転送を引き起こす命令の実行を試みることは、例外(例えば#GP例外)を生じさせることがあり、その例外はトランザクションの試行を中断させてるかもしれない。幾つかの実施形態においては、遠方制御転送は中断の後に実行されてよい。そのような実施形態においては、遠方制御転送(又は許可されていないトランザクションにより生じる例外によって呼び出される障害ハンドラ)からのリターンの場合には、ソフトウエアリカバリルーチンが実行されてよい。
上述したように、種々の実施形態においては、ASFメカニズムは、ハードウエア能力制限、他のスレッドとのメモリ競合、許可されていない命令(例えば遠方制御転送)を実行しているスレッド、及び/又はスレッドが明示的なABORT命令を実行していることに起因して、トランザクションの試行を中断してよい。
図8は種々の実施形態に従ってASFメカニズムが後退モードにおけるトランザクションを実行可能な方法を示すフロー図である。方法800によると、スレッドは、先ずSPECULATE命令を実行することによって後退モードにおけるトランザクションを開始してよい。図5に詳しくあるように、SPECULATEを実行することは、命令及びスタックポインタ値を後での使用のために照合点付けること(checkpointing)(即ち保存すること)を含んでいてよい。しかし、幾つかの実施形態においては、トランザクションが他のトランザクション内で入れ子にされている場合には、照合点は既に存在していることがあり、また図5にあるように、SPECULATE命令は他の照合点が記録されることを結果としてもたらさないであろう。
SPECULATE命令を実行した後、スレッドは、ステップ810にあるように中断状態がセットされたかどうかを決定してよく、セットされていれば、ステップ815にあるようにリカバリルーチンへジャンプしてこれを実行してよい。幾つかの実施形態においては、種々の中断状態コードが配置されているであろう1つ以上のレジスタ(例えばrAXレジスタ)を調べることによって、中断状態コードがセットされたかどうかをソフトウエアが決定してよい。幾つかの実施形態においては、前回のトランザクションの試行が中断されたかどうか及びその理由を、異なる複数の中断状態コードが示してよい。種々の実施形態においては、前回のトランザクションの試行が中断されなかったこと又は競合、容量の制約、許可されていない命令の実行、遠方制御転送、若しくは他の理由によって中断されたことを示すような異なる複数の中断状態コードがセットされてよい。幾つかの実施形態においては、単一又は複数のリカバリルーチン815が、決定された中断状態コードに応じて異なる複数のリカバリ動作をとってよい。例えば幾つかの例では、単一又は複数のリカバリルーチン815は、ASFを用いるトランザクションの実行をスレッドが再試行すべきでないことを決定してよい。
方法800によると、スレッドは次いでトランザクション本体の実行を開始してよく、トランザクション本体は、ステップ820にあるように、幾つかの保護されているメモリロケーションを保護することを含んでいてよい。幾つかの実施形態においては、メモリロケーションを保護することは、LOCK_MOVのような上述した種々の宣言子命令を用いて実行することができる。幾つかの実施形態においては、各保護されているメモリロケーションのキャッシュブロックに対応する保護されているフラッグが、当該ロケーションが保護されていることを示すためにセットされてよい。図8の図示された例によると、トランザクション本体を実行することは、ステップ825にあるように、1つ以上の保護されているメモリロケーションへ書き込むことを更に含んでいてよい。幾つかの実施形態においては、このことは、LOCK_MOVのような上述した種々の推測的な記憶動作を用いて実行することができる。固定ラインバッファを利用する実施形態においては、保護されているメモリロケーションへ書き込むことは、修正されていない値をその固定ラインバッファに記憶することと、次いでローカルキャッシュに対する書き込み動作を実行することとを含んでいてよい。
方法800によると、ステップ830からの肯定の出口で示されるように、実行の間に中断状態が引き起こされてよい。上述したように、種々の例において、中断状態は、他のスレッドとの競合、容量の制約、遠方制御転送、許可されなかった命令、及び/又は明示的なABORT命令を実行しているスレッドによって生じ得る。中断状態が検知された場合(ステップ830からの肯定の出口)、ASFメカニズムは、全ての保護されているメモリロケーションに対して部分的に実行されたトランザクションによって作成されたいかなる修正をも破棄するように設定されてよい。
種々の実施形態においては、ステップ835にあるように全ての保護されているメモリロケーションに対する修正を破棄することは、使用されている特定の推測的な実行メカニズムに応じて種々の方法により達成することができる。例えば上述したように、保護されているメモリへの記憶動作の書き戻し段階を遅延するためにASFが記憶バッファを利用している幾つかの実施形態においては、修正を破棄すること(ステップ835にあるような)は、記憶バッファ内で待機している保護されたメモリロケーションに対するいかなる記憶動作をも破棄することを備えていてよい。固定ラインバッファが用いられる幾つかの実施形態においては、修正を破棄すること(ステップ835におけるような)は、固定ラインバッファ内に記憶されている各メモリロケーションの複数の古い値(トランザクションによって修正される前における各メモリロケーションの複数の値)をローカルキャッシュに書き戻すことを備えていてよい。
方法800によると、後退モードにあるトランザクションを中断することは、ステップ840にあるように、全ての保護されているメモリロケーションをそれらがもはや保護されないように解除することを更に備えていてよい。例えば、保護されているメモリロケーションを解除することは、中断されたトランザクションによって保護されている各メモリロケーションに付随する1つ以上の保護されているフラグをセットしないことを含んでいてよい。固定ラインバッファを利用する実施形態においては、保護されているメモリロケーションを解除することは、トランザクションにおいて修正された保護されているメモリロケーションに対応する固定ラインバッファのエントリを取り除くことを更に含んでいてよい。
図示された実施形態によると、ASFメカニズムは次いで、適切な中断状態コードを決定するために中断の原因を決定してよい。幾つかの実施形態においては、ステップ845にあるように、ASFメカニズムは、当該コードを状態レジスタ(例えばrAXレジスタ216)内に符号化することによって、中断状態コードを複数のソフトウエアメカニズムへ伝えることができる。
幾つかの実施形態においては、状態レジスタ(例えばrAXレジスタ)は複数の状態コードを同時に保持するために用いることができる。例えば、状態レジスタビットの幾つかのサブセットは中断状態コードを保持するために用いることができる一方で、1つ以上の他のサブセットは付加的な情報を保持することができる。例えば、ABORT命令を実行しているスレッドによって中断が生じていた場合には、状態レジスタのビットのサブセットは、呼び出されたときにそのスレッドによってABORT命令に渡される1つ以上の値を保持していてよい。幾つかの実施形態においては、状態レジスタのビットのサブセットは、その時点でのトランザクションのネスティング深さの表示を保持することもできる。更なる実施形態においては、状態レジスタにおけるビットの種々のサブセットは、状態情報の他の種々のセットを保持していてよい。
方法800によると、ASFメカニズムは次いで、例えばステップ850にあるように命令及びスタックポインタを照合点付けられた値まで後退させることによって、トランザクションの開始まで実行を後退させてよい。幾つかの例においては、トランザクションがトップレベルトランザクションである場合には、照合点は、SPECULATEを実行すること(ステップ805にあるような)の一部として記録されたものであってよく、また後退の実行は、ステップ850からステップ810へのフィードバックループによって示されるように、制御フローをトランザクション本体の開始へ戻すことをもたらしてよい。他の実施形態においては、トランザクションが入れ子にされたトランザクションである場合には、照合点は、トップレベルトランザクション内に記録されたものであってよく、また後退の実行は、制御フローをトップレベルトランザクションの本体の開始へ戻すことをもたらしてよい。このように、幾つかの実施形態においては、入れ子にされたトランザクションを中断することは、その入れ子にされたトランザクションが入れ子にされている全ての親トランザクションを中断することを備えていてよい。
方法800によると、トランザクション本体は、中断状態が検知されなくなるまで試みられてよい。ステップ830の否定の出口によって示されるようにトランザクションの試行が中断なしに完了した場合には、ステップ855にあるようにスレッドはトランザクションをコミットしてよい。幾つかの実施形態においては、トランザクションをコミットすることはCOMMIT命令を実行することを備えていてよい。
図9は幾つかの実施形態に従いCOMMIT命令を実行することによるようなトランザクションをコミットするための方法を示している。
図9は種々の実施形態に従いASFメカニズムが記憶状態モードで実行中のトランザクションを中断することができる方法を示すフロー図である。図示された実施形態によると、方法900はステップ905にあるようにトランザクションがアクティブであるかどうかを決定することによって開始してよい。ステップ905からの肯定の出口によって示されるように、トランザクションがアクティブである場合には、トランザクションは実行の間に中断しなかったことになる。このように幾つかの実施形態においては、成功した実行を示すコードが状態レジスタ内に記憶されてよい。例えば幾つかの実施形態においては、ステップ910にあるように、例えばレジスタ内にゼロの値を記憶することによってrAXレジスタがクリアされてよい。
方法900によると、トランザクションをコミットすることは、ステップ915にあるように実行が記憶状態モードにないことを示すフラグをセットすることと、ステップ920にあるようにアクティブトランザクションのネスティングレベルを示すカウンタをデクリメントすることとを更に備えていてよい。幾つかの実施形態においては、ステップ925からの否定の出口で示されるように、コミットされつつあるトランザクションが入れ子にされたトランザクションである場合には、トランザクションはステップ940にあるように終了してよい。このように幾つかの実施形態においては、入れ子にされたトランザクション内で実行されている推測的な記憶は、入れ子にされたトランザクションがコミットされた後であっても推測的な(且つ競合の影響を受けやすい)ままであってよい。
図9の実施形態によると、ステップ925の肯定の出口によって示されているように、トランザクションがトップレベルトランザクションである場合には、ASFメカニズムは、ステップ930にあるように、保護されているメモリロケーションがシステム内の他のスレッドに対してグローバルに可視的(globally visible)であるようにするために、保護されているメモリロケーションに対して全ての修正をコミットしてよい。種々の実施形態においては、保護されているメモリロケーションに対して修正をコミットすることは、用いられている推測的なメカニズムに依存するであろう種々の動作を含んでいてよい。例えば、保護されているメモリに対する推測的な記憶動作が、トランザクションがコミットするまで記憶バッファ内で遅延させられる実施形態においては、修正をコミットすることは、当該値のメモリへの(例えばローカルキャッシュへの及び/又は主メモリへの)書き戻しを実行することを意味するであろう。種々の実施形態においては、トップレベルトランザクションをコミットすることは、ステップ935にあるように、全ての保護されているメモリロケーションをそれらがもはやASFメカニズムによって保護されないように解除することを更に備えていてよい。例えば、保護されているキャッシュブロックを示すために保護されているフラグが用いられる実施形態においては、各保護されているキャッシュブロックに付随する各フラグの値は、キャッシュブロックがもはや保護されていないことを示すようにセットされてよい。このようにASFメカニズムは、解除されたメモリロケーションに関するアトミック性を確保しておく必要はない。
幾つかの実施形態においては、ステップ905からの否定の出口によって示されるように、アクティブでないトランザクションをスレッドがコミットすることを試みると、動作は、実行のモードが記憶状態若しくは後退であるか又はそれ以外であるかに依存するであろう。ステップ945からの否定の出口によって示されるように、実行モードが後退である場合には、ASFメカニズムは例外、例えば#GP例外を提起するように設定されてよい。一方、実行モードが記憶状態である場合には(ステップ945からの肯定の出口で示されるように)、ASFメカニズムは、中断状態コードを状態レジスタ、例えばrAX(ステップ955にあるように)内に記憶すると共にステップ960にあるようにリカバリルーチンへジャンプするように設定されてよい。トランザクションは次いで必要に応じて再試行されてよい。
図10は幾つかの実施形態に従い記憶状態モードにあるトランザクションを実行するための方法を示すフロー図である。方法1000によると、記憶状態モードにあるトランザクションを実行することは、ステップ1005にあるように、BEGIN命令を実行することにより開始してよい。幾つかの実施形態においては、BEGIN命令を実行することは、図6の方法600を実行することを含んでいてよい。種々の実施形態においては、BEGIN命令は、記憶状態モードにあるトランザクション実行がアクティブであることを決定するために用いられてよい1つ以上のフラグをセットすることができる。
図示された実施形態によると、トランザクションは次いで、ステップ1010にあるように、宣言子命令を用いて1つ以上のメモリロケーションを保護してよい。幾つかの実施形態においては、トランザクションはまた、ステップ1015にあるように、ステップ1010で保護された1つ以上のメモリロケーションに書き込むことを試行してよい。
方法1000によると、ステップ1025からの否定の出口にあるように、ASFメカニズムが中断状態(例えば競合、容量制限超過、遠方制御転送、許可されていないトランザクション、等)を検知しない場合には、ステップ1040にあるようにスレッドはトランザクションをコミットしてよい。幾つかの実施形態においては、ステップ1025にあるようにトランザクションをコミットすることは、図9によって示されるようなコミット命令を実行することを含んでいてよい。
幾つかの実施形態においては、ステップ1025からの肯定の出口によって示されるように、実行の間に中断状態が検知された場合には、トランザクションはステップ1030にあるように中断されてよい。幾つかの実施形態においては、トランザクションを中断することは、そのトランザクションの記憶動作によって作成された保護されているメモリロケーションへの任意の修正を取り消すかさもなければ破棄することを含んでいてよい。幾つかの実施形態においては、中断の理由(例えば矛盾、容量、許可されなかったトランザクション、等)を示す中断状態コードは、ステップ1030にあるように、トランザクションを中断することの一部として記録されてよい。
図示された実施形態によると、トランザクションが中断され(ステップ1030にあるように)た後、制御フローはトランザクション本体において継続してよく、またトランザクションは、ステップ1035にあるように、保護されているメモリロケーションに対する推測的な記憶を除いて実行され続けてよい。幾つかの実施形態においては、トランザクションの試行が中断された後に、トランザクション本体内に現れる宣言子命令が標準的なメモリ参照(例えば保護されているフラグをメモリロケーションに対してセットしない読み出し命令)として実行されてよく、且つ/又は保護されているメモリロケーションへのアクセスが無視されてよい(例えば動作不能命令として処理されてよい)。
幾つかの実施形態によると、記憶状態モードにあるトランザクションを実行しているスレッドは、そのトランザクションが中断されたか否かを検証するように設定されてよい。例えば幾つかの実施形態においては、スレッドは、トランザクションが未だにアクティブであるかどうか(即ち未だ中断されていないか)を決定するために、ステップ1040にあるようにVALIDATE命令を実行してよい。幾つかの実施形態においては、VALIDATE命令は、その時点の中断状態コードを、値をソフトウエアによって読み出すことができるプログラム可読状態レジスタ内に(例えばrAXレジスタ内に)コピーすることを実行可能であってよい。トランザクションが中断されなかった場合には、VALIDATE命令は、状態レジスタをトランザクションが未だにアクティブであることを示す値にセットする(例えばrAXを値ゼロにセットする)ことを実行可能であってよい。
図示された実施形態によると、スレッドがVALIDATE命令を実行する場合、トランザクションが中断されたかどうかを決定するために状態(例えばrAX)レジスタが次いで照合されてよい。ステップ1045からの否定の出口によって示されるように、トランザクションがアクティブでない場合には、ステップ1055にあるようにスレッドは幾つかのリカバリ動作を実行してよい。種々の実施形態によると、リカバリ動作を実行することは、任意の保護されているメモリロケーションを解除し且つ/又は再実行のためにプログラム制御をトランザクションの開始に戻すことを含んでいてよい。ステップ1045からの肯定の出口によって示されるように、トランザクションが未だにアクティブである場合には、スレッドはステップ1050にあるようにトランザクションの実行を継続し且つ/又はトランザクションをコミットしてよい。
図示された実施形態によると、一旦スレッドがトランザクションの実行を終了すると、ステップ1050にあるように、トランザクションをコミットすることが試行されてよい。既に示したように、トランザクションをコミットすることは、例えば図9に示されるようなコミット命令を実行することを含んでいてよい。コミット命令を実行することの一部として、ASFメカニズムは、トランザクションがアクティブであるかどうか(ステップ905にあるように)を検知してよく、アクティブでない場合には、中断状態をソフトウエア可読レジスタ内(例えばステップ955にあるようなrAX内)に記憶すると共にリカバリルーチン(ステップ960にあるような)にジャンプしてよく、これらはリカバリ動作1055に類似し又は同一であってよい。リカバリルーチンを実行することは、任意の保護されているメモリロケーションを解除し且つ/又は再実行のためにプログラム制御をトランザクションの開始に戻すことを含んでいてよい。幾つかの実施形態においては、1つ以上の後退モードトランザクションにおいてセクションが入れ子にされている場合には、図8を参照して上述したように、当該親トランザクションは中断されてよくまた制御はSPECULATE命令の最上位レベルによってとられた照合点に戻されてよい。
種々の実施形態においては、プログラマは、ASF有効のシステム(ASF-enabled system)のためのトランザクションのメモリプログラミングモデルを利用するアプリケーションを作成することができる。そのような実施形態においては、プログラマは、プログラムが、トランザクションの開始命令(例えばSPECULATE、BEGIN、等)を実行することによりトランザクションを開始し、保護されているメモリへの1つ以上のアクセス(例えばLOCK_MOV、等)を実行し、次いでトランザクションをコミットするために1つ以上の命令(例えばCOMMIT)を実行するように、プログラムを作成することができる。
幾つかの実施形態においては、プログラムは、ASF有効トランザクションのメモリプログラミングモデルを他の並行制御メカニズム、例えば非ASF、固定ベースのコードと共に利用して書かれていてよい。例えばBツリー(B-tree)のようなデータ構造が考えられる。共有メモリアプリケーションにおける並行スレッドは、ASFベースのトランザクション用メモリを用いてトランザクション的なロックフリーな方法でBツリーに対して頻繁な挿入及び削除動作を実行することができる。場合によってはBツリーは、Bツリーの多くのメモリロケーション上でアトミックに動作することを含んでよい動作について効率に対して再度バランスを取られる必要があるかもしれない。しかし、この動作は多くのメモリロケーションを保護することを含むであろうから、それをトランザクションとして完了しようと試行することは、頻繁な中断をもたらす可能性がある。例えば、Bツリー上で削除及び/又は挿入動作を実行する他の同時実行中スレッドとの矛盾に起因する矛盾中断が生じることがある。他の例では、同時に多数のメモリロケーションを保護することは、ASF実装の容量を超える可能性があり、トランザクションの容量中断をもたらすかもしれない。そのような状況においては、再度バランスをとる動作を実行するトランザクションのメモリを用いるよりはむしろ、従来のロックベースの相互排他(lock-based mutual exclusion)を用いるように構成することによって、動作をより効率的にすることができる。例えば、ロックは、Bツリー全体に関連していてよく、またBツリーへの相互排他的なアクセスに対して獲得され得る。この例では、再度バランスを取る動作は、Bツリーに対するロックを獲得し、次いで再度バランスをとることを実行し、その後にロックを解除することによって開始してよい。しかし、そのような例においては、ロックベースの相互排他セマンティックス(semantics)を利用するコードが、ASFベーストランザクションのメモリセマンティックスを利用するコードと安全に相互運用することを確実にするよう注意が必要である。
図11は1つの実施形態に従いロックベースのコードと相互運用するASFベースのトランザクションを設定するための方法を示すフローチャートである。図示された実施形態によると、ステップ1110にあるように、例えば上述したようにSPECULATE又はBEGIN命令を実行することによって、スレッドがトランザクションを開始してよい。
トランザクション内で保護されている一連のメモリロケーションは、ここではトランザクションの読み出しセットと称されることがある。ロックベースのコードがある場合、トランザクションの読み出しセットはロック(locks)に関連する1つ以上のメモリロケーションを含んでいてよい。あるロックに関連し且つそのロックによって保護されている任意のメモリロケーションは、ここではロック保護されていると称されることがある。
図示された実施形態によると、ステップ1120にあるように、スレッドは、トランザクションの読み出しセット内の各ロック保護されたメモリロケーションに関連する各ロックの値をアトミックに読み出す(例えば宣言子動作を用いて)ように構成されてよい。このように、複数のロックの値をアトミックに読み出すことによって、スレッドはそれらロックをトランザクションの読み出しセットに付加する(即ちASFメカニズムはロックをトランザクションの一部として監視すると共にそれらを保護する)。例えば、上述のBツリーの例では、先ずBツリー構造の全体に関連するロックの値をアトミックに読み出すことによって、トランザクション挿入動作が開始してよい。幾つかの実施形態においては、ロックの値をアトミックに読み出すことは、宣言子動作を用いてロック値を読み出すことを含んでいてよい。
図示された実施形態によると、スレッドは次いで、ステップ1120で読み出された任意のロックが保持されているかどうかを決定してよい。ステップ1130からの肯定の出口によって示されるようにどれかが保持されていれば、スレッドはトランザクションを再試行してよい。幾つかの実施形態においては、ステップ1130からの否定の出口によって示されるように、全てのロックが自由になるまで、スレッドは各ロックの値を再読み込みすることを継続してよい。幾つかの実施形態においては、任意のロックが保持されていれば、スレッドはトランザクションを中断してよく(例えばABORT命令を実行することによって)、次いでトランザクションの実行を再試行してよい。他の実施形態においては、任意のロックが保持されていれば、スレッドは、保護されているメモリロケーション内の値に対してトランザクションが作成した任意の修正を後退させることと、次いでトランザクションをコミットすることとを試行してよい。
図示された実施形態によると、ステップ1130からの否定の出口によって示されるように、一旦スレッドがステップ1120で読み出されたロックが保持されていないことを検知すると、スレッドはステップ1140にあるようにトランザクション本体の実行を継続してよい。図示された実施形態においては、種々のロックのメモリロケーションは宣言子動作を用いて保護されるので、ロックの値に対する任意の変化(例えばロックを獲得している異なるスレッド)はトランザクションの矛盾中断を引き起こすかもしれない。従って、トランザクション実行の間に中断状態が検知され(例えば獲得されているロックに起因する矛盾中断)、次いでASFメカニズム及び/又はスレッドは、トランザクションを中断してよく、幾つかのリカバリ動作を実行してよく(ステップ1160にあるように)、またトランザクションを再試行してよい(ステップ1160からステップ1120へのフィードバックループによって示される)。例えば、上述のようなBツリーの例を継続しながら、Bツリーに関連するロックを獲得することを異なるスレッドが試行する(例えば再度バランスをとる動作を実行することの一部として)場合、キャッシュコヒーレンスメッセージが実行中のスレッドへ送られてよく、挿入動作トランザクションの矛盾中断を引き起こすかもしれない。
図示された実施形態によると、中断状態が検出されない場合(ステップ1150からの否定の出口によって示される)、ステップ1160にあるようにスレッドはトランザクションをコミットしてよい。
図12はここで説明されるASFの種々の実施形態を実装するように構成されるコンピュータシステムの1つの実施形態を示している。コンピュータシステム1200は、限定はされないが、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ又はノートブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、コンシューマデバイス、アプリケーションサーバ、記憶デバイス、周辺デバイス、例えばスイッチ、モデム、ルータ等、又は概して任意の種類のコンピューティングデバイスを含む任意の種類のデバイスであってよい。
コンピュータシステム1200は複数のプロセッサ1270を含んでいてよく、各プロセッサ1270は多重コアを含んでいてよく、任意のコアは単一又は多重スレッドのもの(例えば同時多重プロセシング、ハイパースレッディング(Hyperthreading)(商標)、等)であってよい。幾つかの実施形態では、プロセッサ1270は、ここで説明されるような推測的記憶バッファを実装するためのロード/記憶キュー1274内の推測的な記憶を遅延させることが可能なような動的スケジューリングメカニズム1272を含んでいてよい。幾つかの実施形態においては、プロセッサ1270は、プロセッサパイプライン内での機内(in-flight)メモリ動作を保持するための種々のロードキュー、記憶キュー、及び/又はロード/記憶キュー、例えばロード/記憶キュー1274を含んでいてよい。プロセッサ1270はまた、ネスティング深さ、トランザクションのモード、又はトランザクションの状態(アクティブ対非アクティブ)を記録するために用いられるようなレジスタ1276、例えばrAX、rFLAGS又は他の特定目的レジスタを含んでいてよい。幾つかの実施形態においては、プロセッサ1270は、ここで説明されるような任意の数のASFハードウエアトランザクションのメモリメカニズム1278を含んでいてよい。例えばASFメカニズム1278は、アクティブなトランザクションによって保護されているメモリロケーションを監視するための固定ラインバッファ及び/又はハードウエア論理を含んでいてよい。幾つかの実施形態においては、プロセッサ1270はまた種々のキャッシュコヒーレンスメカニズム1279を含んでいてよく、キャッシュコヒーレンスメカニズム1279は、種々のキャッシュコヒーレンスプロトコル(例えばMESI、MOESI、等)を実装するために用いられてよく、またここで説明されるような矛盾中断を検知するためにASFメカニズムによって用いられてよい。
コンピュータシステム1200はまた1つ以上の永続的な記憶デバイス1260(例えば光学的記憶装置、磁気的記憶装置、ハードドライブ、テープドライブ、ソリッドステートメモリ、等)を含んでいてよく、記憶デバイス1260は例えばファイルシステム1262のようなファイルシステムを用いることによってファイルを記憶することができる。コンピュータシステム1200は多重プロセッサによって共有される1つ以上のメモリ1210(例えば1つ以上のキャッシュ、SRAM、DRAM、RDRAM、EDO_RAM、DDR_10_RAM、SDRAM、ラムバスRAM、EEPROM、等)を含んでいてよい。種々の実施形態は、図12には図示されていない少数の又は付加的な構成部分(例えばビデオカード、オーディオカード、付加的ネットワークインタフェース、周辺デバイス、ネットワークインタフェース、例えばATMインタフェース、イーサネットインタフェース、フレームリレーインタフェース、等)を含んでいてよい。
プロセッサ1270、単一又は複数の記憶デバイス1260、及び共有メモリ1210はシステム相互接続1250と結合されていてよい。1つ以上のシステムメモリ1210はプログラム命令1220を含んでいてよい。プログラム命令1220は、プラットフォーム固有バイナリ、JAVA(商標)バイトコードのような任意のインタープリタ型言語、若しくはC/C++、JAVA(商標)等のような任意の他の言語、又はこれらの組み合わせにおいて符号化されてよい。
プログラム命令1220は、1つ以上のASFベーストランザクションのメモリアプリケーション1222を実装するように実行可能なプログラム命令を含んでいてよい。各アプリケーション1222は多重スレッド化されていてよく、またASFトランザクションのメモリメカニズムを利用するように構成されていてよい。幾つかの実施形態においては、1つ以上のアプリケーション1222は、ここで説明されるようにASFトランザクションのメモリ命令及び相互排他ロックの両方を用いて動作するように構成されてよい。そのような実施形態においては、共有メモリ1210は種々のデータ構造及び変数1230を含んでいてよく、そのどれかは1つ以上の相互排他ロック1240と関連していてよい。
幾つかの実施形態においては、プログラム命令1220及び/又はASFベーストランザクションのメモリアプリケーション1222は、コンピュータシステム(又は他の電子デバイス)が種々の実施形態に従うプロセスを実行するようにプログラムするために用いることができる命令が記憶されたコンピュータ可読記憶媒体を含んでいてよい製品として提供され得る。コンピュータ可読記憶媒体は、機械(例えばコンピュータ)によって読み出され得る形態(例えばソフトウエア、処理アプリケーション)にある情報を記憶するための任意のメカニズムを含んでいてよい。機械可読記憶媒体は、限定はされないが、磁気記憶媒体(例えばフロッピーディスケット)、光学的記憶媒体(例えばCD−ROM)、磁気光学的記憶媒体、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、イレーザブルプログラマブルメモリ(例えばEPROM及びEEPROM)、フラッシュメモリ、プログラム命令を記憶するのに適した電気的な又は他の種類の有形媒体を含み得る。また、プログラム命令は、無形媒体、即ち光学的、音響学的又は他の形態の伝搬信号(例えば搬送波、赤外線信号、デジタル信号、等)を用いて伝えられ得る。
上述の実施形態は極めて詳細に説明されてきたが、上述の開示が完全に理解されれば種々の変形及び修正が当業者には明らかになろう。後述の特許請求の範囲はそのような全ての変形及び修正を包含するように解釈されることが意図されている。
この発明は概して共有メモリコンピュータシステムに適用可能である。

Claims (15)

  1. 1つ以上の他のプロセッサによって共有される共有メモリに結合可能なプロセッサを備えた装置であって、
    前記プロセッサは、前記1つ以上の他のプロセッサに対するアトミックなトランザクションとしての、前記共有メモリへの複数のメモリアクセス動作を含むコードのセクションを実行するように構成され、
    前記プロセッサは、許可されていない命令の少なくとも1つのセットを前記複数のメモリアクセス動作が含むかどうかを決定するように構成され、許可されていない命令の前記セットは、バーチャル化されたコンピューティング環境内で自然コンピューティング環境内におけるのと異なるように動作する1つ以上の命令を含み、
    前記プロセッサは、許可されていない命令の少なくとも1つの前記セットを含む前記複数のメモリアクセス動作の1つに応答して前記トランザクションを中断するように構成されている装置。
  2. 請求項1の装置であって、許可されていない命令の前記セットは少なくとも1つの命令を含み、前記少なくとも1つの命令は、前記少なくとも1つの命令がバーチャルマシン内にあるか否かに応じて前記プロセッサ上で異なるように実行する装置。
  3. 請求項1の装置であって、許可されていない命令の前記セットは遠方制御転送命令を含み、前記遠方制御転送命令は、前記プロセッサのセグメントレジスタ内の値を修正することによる命令を含む以外のメモリセグメントへプログラム制御を転送するように実行可能である装置。
  4. 請求項1の装置であって、許可されていない命令の前記セットは前記プロセッサの最も高い特権レベルでのみ実行され得る1つ以上の命令を含む装置。
  5. 請求項1の装置であって、前記プロセッサは前記複数のメモリアクセス動作の1つ以上の実行によって作成される前記共有メモリ内の1つ以上の値に対する任意の修正を破棄することによって前記トランザクションを中断するように構成される装置。
  6. 共有メモリに結合される複数のプロセッサの第1のプロセッサが、前記複数のプロセッサに関するアトミックなトランザクションとしての共有メモリへの複数のメモリアクセス動作を含むコードのセクションを実行することと、
    前記第1のプロセッサが、許可されていない命令の少なくとも1つのセットを前記複数のメモリアクセス動作が含むかどうかを決定することと、
    許可されていない命令の少なくとも1つの前記セットを含む前記複数のメモリアクセス動作に応答して前記第1のプロセッサが前記トランザクションを中断することとを備えた方法であって、
    許可されていない命令の前記セットは、前記命令がバーチャルマシン内で実行されるか否かに応じて異なるように動作する1つ以上の命令を含む方法。
  7. 請求項6の方法であって、許可されていない命令の前記セットは遠方制御転送命令を備えており、前記遠方制御転送命令は、前記プロセッサのセグメントレジスタ内の値を修正することによる命令を含む以外のメモリセグメントへプログラム制御を転送するように実行可能である方法。
  8. 請求項6の方法であって、許可されていない命令の前記セットは前記第1のプロセッサの最も高い特権レベルでのみ実行され得る命令を備えている方法。
  9. 請求項6の方法であって、前記中断することは前記複数のメモリアクセス動作の1つ以上の実行によって作成される前記共有メモリ内の1つ以上の値に対する任意の修正を破棄することを備えている方法。
  10. 共有メモリと、前記共有メモリに結合される複数のプロセッサとを備えたシステムであって、
    前記複数のプロセッサの第1のプロセッサは、前記共有メモリへの複数のメモリアクセス動作を含むコードのセクションを実行するように構成され、前記第1のプロセッサは、前記複数のプロセッサの残りに対するアトミックなトランザクションとして前記複数のメモリアクセス動作を実行するように構成され、
    前記第1のプロセッサは、許可されていない命令のセットにおける少なくとも1つの命令を前記複数のメモリアクセス動作が含むかどうかを決定するように構成され、許可されていない命令の前記セットにおける少なくとも1つの命令の実行は、前記第1のプロセッサの特権レベルに基いており、
    前記第1のプロセッサは、許可されていない命令の前記セットの少なくとも1つの前記セットを含む前記複数のメモリアクセス動作の1つに応答して前記トランザクションを中断するように構成されているシステム。
  11. 請求項10のシステムであって、許可されていない命令の前記セットは、前記命令がバーチャルマシン内で実行されるか否かに応じて前記プロセッサ上で異なるように実行する命令を含むシステム。
  12. 請求項10のシステムであって、許可されていない命令の前記セットは特権の命令を含むシステム。
  13. 請求項10のシステムであって、許可されていない命令の前記セットは遠方制御転送命令を含むシステム。
  14. 請求項10のシステムであって、前記第1のプロセッサは前記複数のメモリアクセス動作の1つ以上の実行によって作成される前記共有メモリ内の1つ以上の値に対する任意の修正を破棄することによって前記トランザクションを中断するように構成されるシステム。
  15. 請求項10のシステムであって、許可されていない命令の前記セットはハイパーバイザに関連する1つ以上の命令を含むシステム。
JP2011521116A 2008-07-28 2009-07-28 バーチャル化可能な高度な同期機構 Pending JP2011529603A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8400808P 2008-07-28 2008-07-28
US61/084,008 2008-07-28
PCT/US2009/004349 WO2010014200A1 (en) 2008-07-28 2009-07-28 Virtualizable advanced synchronization facility

Publications (2)

Publication Number Publication Date
JP2011529603A true JP2011529603A (ja) 2011-12-08
JP2011529603A5 JP2011529603A5 (ja) 2012-09-13

Family

ID=41090366

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011521116A Pending JP2011529603A (ja) 2008-07-28 2009-07-28 バーチャル化可能な高度な同期機構

Country Status (6)

Country Link
US (5) US8621183B2 (ja)
EP (1) EP2332043B1 (ja)
JP (1) JP2011529603A (ja)
KR (1) KR20110044884A (ja)
CN (1) CN102144218A (ja)
WO (1) WO2010014200A1 (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015523655A (ja) * 2012-06-15 2015-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション処理における命令実行の選択的制御
JP2015523654A (ja) * 2012-06-15 2015-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 制約付きトランザクションの実行
JP2015523651A (ja) * 2012-06-15 2015-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピューティング環境においてマシン命令を実行するための方法、システム、およびプログラム(トランザクション開始/終了命令)
JP2015523653A (ja) * 2012-06-15 2015-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Nontransactionalstore命令
JP2015525408A (ja) * 2012-06-15 2015-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション処理
JP2015525406A (ja) * 2012-06-15 2015-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピューティング環境においてトランザクション実行に関連付けられた処理を実行するための方法、システム、およびプログラム(トランザクション実行における制限された命令)
JP2015525405A (ja) * 2012-06-15 2015-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Transactionabort命令
JP2015526790A (ja) * 2012-06-15 2015-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション処理における選択されたレジスタの保存/復元
JP2015526788A (ja) * 2012-06-15 2015-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション診断ブロック
JP2015527631A (ja) * 2012-06-15 2015-09-17 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プロセッサ支援ファシリティ
JP2015528935A (ja) * 2012-06-15 2015-10-01 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション実行内でのランダム化されたテスト
JP2017539008A (ja) * 2014-12-24 2017-12-28 インテル・コーポレーション データ投機実行のためのシステム、装置および方法
JP2018500662A (ja) * 2014-12-24 2018-01-11 インテル・コーポレーション データ投機実行のためのシステム、装置および方法
JP2020507152A (ja) * 2017-01-19 2020-03-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション実行中の保護ストレージ・イベント処理

Families Citing this family (157)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2332043B1 (en) 2008-07-28 2018-06-13 Advanced Micro Devices, Inc. Virtualizable advanced synchronization facility
US8479166B2 (en) * 2008-08-25 2013-07-02 International Business Machines Corporation Detecting locking discipline violations on shared resources
US9021502B2 (en) * 2008-12-29 2015-04-28 Oracle America Inc. Method and system for inter-thread communication using processor messaging
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US8375175B2 (en) * 2009-12-09 2013-02-12 Oracle America, Inc. Fast and efficient reacquisition of locks for transactional memory systems
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8972994B2 (en) * 2009-12-23 2015-03-03 Intel Corporation Method and apparatus to bypass object lock by speculative execution of generated bypass code shell based on bypass failure threshold in managed runtime environment
US8924692B2 (en) 2009-12-26 2014-12-30 Intel Corporation Event counter checkpointing and restoring
US20110208921A1 (en) * 2010-02-19 2011-08-25 Pohlack Martin T Inverted default semantics for in-speculative-region memory accesses
US9626187B2 (en) 2010-05-27 2017-04-18 International Business Machines Corporation Transactional memory system supporting unbroken suspended execution
US9880848B2 (en) * 2010-06-11 2018-01-30 Advanced Micro Devices, Inc. Processor support for hardware transactional memory
US8782435B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
US8782434B1 (en) * 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US20120079212A1 (en) 2010-09-23 2012-03-29 International Business Machines Corporation Architecture for sharing caches among multiple processes
US20120079245A1 (en) * 2010-09-25 2012-03-29 Cheng Wang Dynamic optimization for conditional commit
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
US8424015B2 (en) * 2010-09-30 2013-04-16 International Business Machines Corporation Transactional memory preemption mechanism
US9110691B2 (en) * 2010-11-16 2015-08-18 Advanced Micro Devices, Inc. Compiler support technique for hardware transactional memory systems
US8468169B2 (en) 2010-12-01 2013-06-18 Microsoft Corporation Hierarchical software locking
US9274962B2 (en) * 2010-12-07 2016-03-01 Intel Corporation Apparatus, method, and system for instantaneous cache state recovery from speculative abort/commit
US8788794B2 (en) * 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Programmable atomic memory using stored atomic procedures
US9122476B2 (en) 2010-12-07 2015-09-01 Advanced Micro Devices, Inc. Programmable atomic memory using hardware validation agent
US8612694B2 (en) 2011-03-07 2013-12-17 Advanced Micro Devices, Inc. Protecting large objects within an advanced synchronization facility
US8990823B2 (en) 2011-03-10 2015-03-24 International Business Machines Corporation Optimizing virtual machine synchronization for application software
US8533699B2 (en) * 2011-03-31 2013-09-10 Oracle International Corporation System and method for optimizing a code section by forcing a code section to be executed atomically
KR20130022091A (ko) 2011-08-24 2013-03-06 주식회사 케이티 클라우드 컴퓨팅 서버 시스템의 가상머신 제어 장치 및 방법
US8677331B2 (en) * 2011-09-30 2014-03-18 Oracle International Corporation Lock-clustering compilation for software transactional memory
US8954680B2 (en) 2011-11-20 2015-02-10 International Business Machines Corporation Modifying data prefetching operation based on a past prefetching attempt
WO2013095569A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Method, apparatus and system for selective execution of a commit instruction
CN104126166A (zh) * 2011-12-23 2014-10-29 英特尔公司 用于执行使用掩码的向量打包一元编码的系统、装置和方法
US20130326196A1 (en) * 2011-12-23 2013-12-05 Elmoustapha Ould-Ahmed-Vall Systems, apparatuses, and methods for performing vector packed unary decoding using masks
US8893094B2 (en) 2011-12-30 2014-11-18 Intel Corporation Hardware compilation and/or translation with fault detection and roll back functionality
US9280398B2 (en) * 2012-01-31 2016-03-08 International Business Machines Corporation Major branch instructions
US9229722B2 (en) * 2012-01-31 2016-01-05 International Business Machines Corporation Major branch instructions with transactional memory
WO2013115816A1 (en) * 2012-02-02 2013-08-08 Intel Corporation A method, apparatus, and system for speculative abort control mechanisms
US9268596B2 (en) 2012-02-02 2016-02-23 Intel Corparation Instruction and logic to test transactional execution status
US9891962B2 (en) * 2012-05-23 2018-02-13 Nec Corporation Lock management system, lock management method and lock management program
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9740549B2 (en) * 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9298469B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9262320B2 (en) 2012-06-15 2016-02-16 International Business Machines Corporation Tracking transactional execution footprint
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9298631B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Managing transactional and non-transactional store observability
US9336046B2 (en) * 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9223687B2 (en) 2012-06-15 2015-12-29 International Business Machines Corporation Determining the logical address of a transaction abort
WO2013185220A1 (en) * 2012-06-15 2013-12-19 Edatanetworks Inc. Systems and methods for incenting consumers
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
CN105760265B (zh) * 2012-06-29 2019-11-05 英特尔公司 用于测试事务性执行状态的指令和逻辑
US9535768B2 (en) * 2012-07-16 2017-01-03 Sony Corporation Managing multi-threaded operations in a multimedia authoring environment
US9274963B2 (en) 2012-07-20 2016-03-01 International Business Machines Corporation Cache replacement for shared memory caches
CN104541248B (zh) * 2012-07-27 2017-12-22 华为技术有限公司 计算系统对屏障命令的处理
US8914586B2 (en) 2012-07-31 2014-12-16 Advanced Micro Devices, Inc. TLB-walk controlled abort policy for hardware transactional memory
US8943278B2 (en) 2012-07-31 2015-01-27 Advanced Micro Devices, Inc. Protecting large regions without operating-system support
US9342454B2 (en) 2012-08-02 2016-05-17 International Business Machines Corporation Nested rewind only and non rewind only transactions in a data processing system supporting transactional storage accesses
US9396115B2 (en) 2012-08-02 2016-07-19 International Business Machines Corporation Rewind only transactions in a data processing system supporting transactional storage accesses
US9430166B2 (en) 2012-08-10 2016-08-30 International Business Machines Corporation Interaction of transactional storage accesses with other atomic semantics
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9471317B2 (en) * 2012-09-27 2016-10-18 Texas Instruments Deutschland Gmbh Execution of additional instructions in conjunction atomically as specified in instruction field
US9612834B2 (en) * 2012-09-27 2017-04-04 Texas Instruments Deutschland Gmbh Processor with variable instruction atomicity
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9081607B2 (en) 2012-10-24 2015-07-14 International Business Machines Corporation Conditional transaction abort and precise abort handling
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US9459877B2 (en) * 2012-12-21 2016-10-04 Advanced Micro Devices, Inc. Nested speculative regions for a synchronization facility
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9569223B2 (en) * 2013-02-13 2017-02-14 Red Hat Israel, Ltd. Mixed shared/non-shared memory transport for virtual machines
US20140281236A1 (en) * 2013-03-14 2014-09-18 William C. Rash Systems and methods for implementing transactional memory
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
US9588801B2 (en) * 2013-09-11 2017-03-07 Intel Corporation Apparatus and method for improved lock elision techniques
US9158573B2 (en) 2013-12-12 2015-10-13 International Business Machines Corporation Dynamic predictor for coalescing memory transactions
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
US9292337B2 (en) 2013-12-12 2016-03-22 International Business Machines Corporation Software enabled and disabled coalescing of memory transactions
US9424072B2 (en) * 2014-02-27 2016-08-23 International Business Machines Corporation Alerting hardware transactions that are about to run out of space
US9361041B2 (en) 2014-02-27 2016-06-07 International Business Machines Corporation Hint instruction for managing transactional aborts in transactional memory computing environments
US9524187B2 (en) * 2014-03-02 2016-12-20 International Business Machines Corporation Executing instruction with threshold indicating nearing of completion of transaction
US10120681B2 (en) 2014-03-14 2018-11-06 International Business Machines Corporation Compare and delay instructions
US9454370B2 (en) * 2014-03-14 2016-09-27 International Business Machines Corporation Conditional transaction end instruction
US9558032B2 (en) 2014-03-14 2017-01-31 International Business Machines Corporation Conditional instruction end operation
US9262343B2 (en) 2014-03-26 2016-02-16 International Business Machines Corporation Transactional processing based upon run-time conditions
US9256553B2 (en) 2014-03-26 2016-02-09 International Business Machines Corporation Transactional processing based upon run-time storage values
US20150278123A1 (en) * 2014-03-28 2015-10-01 Alex Nayshtut Low-overhead detection of unauthorized memory modification using transactional memory
US9778949B2 (en) 2014-05-05 2017-10-03 Google Inc. Thread waiting in a multithreaded processor architecture
US10261764B2 (en) * 2014-05-13 2019-04-16 Oracle International Corporation Handling value types
US9448939B2 (en) 2014-06-30 2016-09-20 International Business Machines Corporation Collecting memory operand access characteristics during transactional execution
US9710271B2 (en) 2014-06-30 2017-07-18 International Business Machines Corporation Collecting transactional execution characteristics during transactional execution
US9336047B2 (en) 2014-06-30 2016-05-10 International Business Machines Corporation Prefetching of discontiguous storage locations in anticipation of transactional execution
US9600286B2 (en) * 2014-06-30 2017-03-21 International Business Machines Corporation Latent modification instruction for transactional execution
US9348643B2 (en) 2014-06-30 2016-05-24 International Business Machines Corporation Prefetching of discontiguous storage locations as part of transactional execution
GB2528270A (en) 2014-07-15 2016-01-20 Advanced Risc Mach Ltd Call stack maintenance for a transactional data processing execution mode
GB2529148B (en) 2014-08-04 2020-05-27 Advanced Risc Mach Ltd Write operations to non-volatile memory
WO2016037048A1 (en) 2014-09-05 2016-03-10 Sequitur Labs, Inc. Policy-managed secure code execution and messaging for computing devices and computing device security
GB2533414B (en) * 2014-12-19 2021-12-01 Advanced Risc Mach Ltd Apparatus with shared transactional processing resource, and data processing method
GB2533415B (en) * 2014-12-19 2022-01-19 Advanced Risc Mach Ltd Apparatus with at least one resource having thread mode and transaction mode, and method
US10942744B2 (en) * 2014-12-24 2021-03-09 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10540524B2 (en) 2014-12-31 2020-01-21 Mcafee, Llc Memory access protection using processor transactional memory support
US10685130B2 (en) 2015-04-21 2020-06-16 Sequitur Labs Inc. System and methods for context-aware and situation-aware secure, policy-based access control for computing devices
US11847237B1 (en) 2015-04-28 2023-12-19 Sequitur Labs, Inc. Secure data protection and encryption techniques for computing devices and information storage
US11425168B2 (en) 2015-05-14 2022-08-23 Sequitur Labs, Inc. System and methods for facilitating secure computing device control and operation
US9870253B2 (en) 2015-05-27 2018-01-16 International Business Machines Corporation Enabling end of transaction detection using speculative look ahead
US11228458B2 (en) * 2015-09-10 2022-01-18 Lightfleet Corporation Group-coherent memory
US20170083331A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Memory synchronization in block-based processors
US9513960B1 (en) 2015-09-22 2016-12-06 International Business Machines Corporation Inducing transactional aborts in other processing threads
US10558582B2 (en) 2015-10-02 2020-02-11 Intel Corporation Technologies for execute only transactional memory
US9916179B2 (en) 2015-10-29 2018-03-13 International Business Machines Corporation Interprocessor memory status communication
US9563467B1 (en) 2015-10-29 2017-02-07 International Business Machines Corporation Interprocessor memory status communication
US9760397B2 (en) 2015-10-29 2017-09-12 International Business Machines Corporation Interprocessor memory status communication
US10261827B2 (en) 2015-10-29 2019-04-16 International Business Machines Corporation Interprocessor memory status communication
US9690623B2 (en) * 2015-11-06 2017-06-27 International Business Machines Corporation Regulating hardware speculative processing around a transaction
US9652385B1 (en) * 2015-11-27 2017-05-16 Arm Limited Apparatus and method for handling atomic update operations
US10318295B2 (en) * 2015-12-22 2019-06-11 Intel Corporation Transaction end plus commit to persistence instructions, processors, methods, and systems
US10649773B2 (en) * 2016-04-07 2020-05-12 MIPS Tech, LLC Processors supporting atomic writes to multiword memory locations and methods
US10248564B2 (en) 2016-06-24 2019-04-02 Advanced Micro Devices, Inc. Contended lock request elision scheme
EP3264317B1 (en) * 2016-06-29 2019-11-20 Arm Ltd Permission control for contingent memory access program instruction
US10169106B2 (en) * 2016-06-30 2019-01-01 International Business Machines Corporation Method for managing control-loss processing during critical processing sections while maintaining transaction scope integrity
CN107766080B (zh) * 2016-08-23 2021-11-09 阿里巴巴集团控股有限公司 事务消息处理方法、装置、设备及系统
US10802971B2 (en) 2016-10-13 2020-10-13 International Business Machines Corporation Cache memory transaction shielding via prefetch suppression
US10700865B1 (en) 2016-10-21 2020-06-30 Sequitur Labs Inc. System and method for granting secure access to computing services hidden in trusted computing environments to an unsecure requestor
CN106502920B (zh) * 2016-11-08 2019-09-24 郑州云海信息技术有限公司 一种基于mesi的缓存方法、装置和处理器
US10402327B2 (en) 2016-11-22 2019-09-03 Advanced Micro Devices, Inc. Network-aware cache coherence protocol enhancement
US10162757B2 (en) * 2016-12-06 2018-12-25 Advanced Micro Devices, Inc. Proactive cache coherence
US10180827B2 (en) 2016-12-14 2019-01-15 International Business Machines Corporation Suppressing storing of context information
US10235190B2 (en) 2016-12-14 2019-03-19 International Business Machines Corporation Executing instructions to store context information based on routine to be executed
US10152338B2 (en) 2016-12-14 2018-12-11 International Business Machines Corporation Marking external sibling caller routines
US10241769B2 (en) 2016-12-14 2019-03-26 International Business Machines Corporation Marking sibling caller routines
US20180165073A1 (en) 2016-12-14 2018-06-14 International Business Machines Corporation Context information based on type of routine being called
US10095493B2 (en) 2016-12-14 2018-10-09 International Business Machines Corporation Call sequence generation based on type of routine
US10496292B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10725685B2 (en) 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
US10496311B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
GB201708439D0 (en) 2017-05-26 2017-07-12 Microsoft Technology Licensing Llc Compute node security
GB2564097B (en) * 2017-06-28 2019-10-23 Advanced Risc Mach Ltd Memory region locking
US11016910B2 (en) 2017-06-28 2021-05-25 Arm Limited Memory region locking using lock/unlock flag state for exclusive rights to control memory access
EP3462308B1 (en) * 2017-09-29 2022-03-02 ARM Limited Transaction nesting depth testing instruction
GB2567433B (en) * 2017-10-10 2020-02-26 Advanced Risc Mach Ltd Checking lock variables for transactions in a system with transactional memory support
US10621103B2 (en) 2017-12-05 2020-04-14 Arm Limited Apparatus and method for handling write operations
US10657057B2 (en) * 2018-04-04 2020-05-19 Nxp B.V. Secure speculative instruction execution in a data processing system
GB2579246B (en) * 2018-11-28 2021-10-13 Advanced Risc Mach Ltd Apparatus and data processing method for transactional memory
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11403234B2 (en) 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11144322B2 (en) * 2019-11-05 2021-10-12 Mediatek Inc. Code and data sharing among multiple independent processors
US11436187B2 (en) * 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps
US12020062B2 (en) 2020-10-20 2024-06-25 Micron Technology, Inc. Method of executing programmable atomic unit resources within a multi-process system
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
US11740929B2 (en) 2020-10-20 2023-08-29 Micron Technology, Inc. Registering a custom atomic operation with the operating system
US11693690B2 (en) 2020-10-20 2023-07-04 Micron Technology, Inc. Method of completing a programmable atomic transaction by ensuring memory locks are cleared
US11403023B2 (en) 2020-10-20 2022-08-02 Micron Technology, Inc. Method of organizing a programmable atomic unit instruction memory
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US20210318961A1 (en) * 2021-06-23 2021-10-14 Intel Corporation Mitigating pooled memory cache miss latency with cache miss faults and transaction aborts

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070239942A1 (en) * 2006-03-30 2007-10-11 Ravi Rajwar Transactional memory virtualization

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5239633A (en) 1989-03-24 1993-08-24 Mitsubishi Denki Kabushiki Kaisha Data processor executing memory indirect addressing and register indirect addressing
US7395274B2 (en) * 2002-07-16 2008-07-01 Sun Microsystems, Inc. Space- and time-adaptive nonblocking algorithms
US7418577B2 (en) * 2003-02-13 2008-08-26 Sun Microsystems, Inc. Fail instruction to support transactional program execution
US7206903B1 (en) 2004-07-20 2007-04-17 Sun Microsystems, Inc. Method and apparatus for releasing memory locations during transactional execution
US8041958B2 (en) * 2006-02-14 2011-10-18 Lenovo (Singapore) Pte. Ltd. Method for preventing malicious software from execution within a computer system
US8180977B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US20080005504A1 (en) * 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US8516201B2 (en) * 2006-12-05 2013-08-20 Intel Corporation Protecting private data from cache attacks
US7516365B2 (en) * 2007-07-27 2009-04-07 Sun Microsystems, Inc. System and method for split hardware transactions
EP2332043B1 (en) 2008-07-28 2018-06-13 Advanced Micro Devices, Inc. Virtualizable advanced synchronization facility
US8229907B2 (en) 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070239942A1 (en) * 2006-03-30 2007-10-11 Ravi Rajwar Transactional memory virtualization

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSNG200400482028; 梅野英典ほか: '仮想計算機システムにおける論理プロセッサをスケジュールする新方式の開発と評価' 情報処理学会論文誌 第44巻 第3号, 200303, 868-882頁, 社団法人情報処理学会 *
JPN5013003668; MICHELLE J MORAVAN et al.: 'SUPPORTING NESTED TRANSACTIONAL MEMORY IN LOGTM' PROCEEDINGS OF THE 12TH INTERNATIONAL CONFERENCE ON ARCHITECTURAL SUPPORT FOR PROGRAMMING LANGUAGES , 20061021, Pages1-12, ASSOCIATION FOR COMPUTING MACHINERY *
JPN6013014756; Kunal AGRAWAL et al.: 'Nested Parallelism in Transactional Memory' THE SECOND ACM SIGPLAN WORKSHOP ON TRANSACTIONAL COMPUTING , 20070816, pages1-12 *
JPN6014033546; 梅野英典ほか: '仮想計算機システムにおける論理プロセッサをスケジュールする新方式の開発と評価' 情報処理学会論文誌 第44巻 第3号, 200303, 868-882頁, 社団法人情報処理学会 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015523655A (ja) * 2012-06-15 2015-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション処理における命令実行の選択的制御
JP2015523654A (ja) * 2012-06-15 2015-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 制約付きトランザクションの実行
JP2015523651A (ja) * 2012-06-15 2015-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピューティング環境においてマシン命令を実行するための方法、システム、およびプログラム(トランザクション開始/終了命令)
JP2015523653A (ja) * 2012-06-15 2015-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Nontransactionalstore命令
JP2015525408A (ja) * 2012-06-15 2015-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション処理
JP2015525406A (ja) * 2012-06-15 2015-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピューティング環境においてトランザクション実行に関連付けられた処理を実行するための方法、システム、およびプログラム(トランザクション実行における制限された命令)
JP2015525405A (ja) * 2012-06-15 2015-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Transactionabort命令
JP2015526790A (ja) * 2012-06-15 2015-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション処理における選択されたレジスタの保存/復元
JP2015526788A (ja) * 2012-06-15 2015-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション診断ブロック
JP2015527631A (ja) * 2012-06-15 2015-09-17 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プロセッサ支援ファシリティ
JP2015528935A (ja) * 2012-06-15 2015-10-01 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション実行内でのランダム化されたテスト
JP2017539008A (ja) * 2014-12-24 2017-12-28 インテル・コーポレーション データ投機実行のためのシステム、装置および方法
JP2018500662A (ja) * 2014-12-24 2018-01-11 インテル・コーポレーション データ投機実行のためのシステム、装置および方法
JP2020507152A (ja) * 2017-01-19 2020-03-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション実行中の保護ストレージ・イベント処理
JP6995124B2 (ja) 2017-01-19 2022-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクション実行中の保護ストレージ・イベント処理

Also Published As

Publication number Publication date
US20100023703A1 (en) 2010-01-28
EP2332043B1 (en) 2018-06-13
US9372718B2 (en) 2016-06-21
US20100205408A1 (en) 2010-08-12
US8407455B2 (en) 2013-03-26
CN102144218A (zh) 2011-08-03
EP2332043A1 (en) 2011-06-15
WO2010014200A1 (en) 2010-02-04
KR20110044884A (ko) 2011-05-02
US8621183B2 (en) 2013-12-31
US20100023706A1 (en) 2010-01-28
US20100023704A1 (en) 2010-01-28
US20100023707A1 (en) 2010-01-28

Similar Documents

Publication Publication Date Title
US8621183B2 (en) Processor with support for nested speculative sections with different transactional modes
US8612694B2 (en) Protecting large objects within an advanced synchronization facility
JP5615384B2 (ja) ハードウエアトランザクショナルメモリにおける自動サスペンド及び再開
Jacobi et al. Transactional memory architecture and implementation for IBM System z
US8190859B2 (en) Critical section detection and prediction mechanism for hardware lock elision
Bobba et al. Tokentm: Efficient execution of large transactions with hardware transactional memory
TWI476595B (zh) 用於交易式記憶體事件處置之硬體中使用者處置器的登錄
US8914586B2 (en) TLB-walk controlled abort policy for hardware transactional memory
US9898331B2 (en) Dynamic releasing of cache lines
EP2641171B1 (en) Preventing unintended loss of transactional data in hardware transactional memory systems
US9514006B1 (en) Transaction tracking within a microprocessor
US8943278B2 (en) Protecting large regions without operating-system support
TWI801603B (zh) 處理獨佔式載入指令的資料處理設備、方法及電腦程式
US10346196B2 (en) Techniques for enhancing progress for hardware transactional memory
Harris et al. Hardware-Supported Transactional Memory

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120726

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120726

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131009

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131023

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140123

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140224

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140303

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140320

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140423

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140806

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150113