JP2012509529A - トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録 - Google Patents

トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録 Download PDF

Info

Publication number
JP2012509529A
JP2012509529A JP2011536630A JP2011536630A JP2012509529A JP 2012509529 A JP2012509529 A JP 2012509529A JP 2011536630 A JP2011536630 A JP 2011536630A JP 2011536630 A JP2011536630 A JP 2011536630A JP 2012509529 A JP2012509529 A JP 2012509529A
Authority
JP
Japan
Prior art keywords
handler
execution
transactional
event
transaction
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.)
Granted
Application number
JP2011536630A
Other languages
English (en)
Other versions
JP5650123B2 (ja
Inventor
シェーファー,ガド
ライキン,シュロモ
バッシン,ヴァディム
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2012509529A publication Critical patent/JP2012509529A/ja
Application granted granted Critical
Publication of JP5650123B2 publication Critical patent/JP5650123B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms

Abstract

トランザクショナル・メモリのハードウェアにユーザハンドラを登録する方法及び装置。ユーザ・アクセス可能なレジスタは、トランザクショナル・ハンドラへの参照を保持する。イベント・レジスタは、更に、ユーザレベルのソフトウェア、特権ソフトウェアを利用して、又はハードウェアによって行い得る、ハンドラ・イベントの規定のために提供し得る。イベントが検出されると、ユーザ・アクセス可能なレジスタに保持されたトランザクショナル・ハンドラへの参照に基づいて、実行がトランザクション・ハンドラに向けられる。トランザクショナル・ハンドラはイベントを処理し、次いで、実行は通常フローに戻る。

Description

(技術分野)
本発明は、プロセッサ実行の分野に関し、特に、命令群の実行に関する。
(関連出願への相互参照)
本出願は、本出願とともに出願された、 Gad Sheafferらによる、「Extending Cache Coherency Protocols to Support Locally Buffered Data」と題する、西暦2008年12月30日付け出願の米国特許出願第12/346543号(代理人整理番号P29132)、Gad Sheafferらによる、「Memory Model for Hardware Attributes Within a Transactional Memory System」と題する、西暦2008年12月30日付け出願の米国特許出願第12/346539号(代理人整理番号P29131)、Gad Sheafferらによる、「Read and Write Monitoring Attributes in Transactional Memory (TM) Systems」と題する、西暦2008年12月30日付け出願の米国特許出願第12/346530号(代理人整理番号P29130)、及びGad Sheafferらによる、「Metaphysical Address Space for Holding Lossy Meta−data in Hardware」と題する、西暦2008年12月30日付け出願の米国特許出願第12/346500号(代理人整理番号P29128)の特許出願に関連している。
半導体処理及びロジック・デザインにおける進歩は、集積回路デバイス上に存在し得るロジックの量の増加を可能にしてきた。その結果、コンピュータ・システム構成は、システムにおける単一又は複数の集積回路から、個々の集積回路上に存在している複数のコア及び複数の論理プロセッサへと発展してきた。プロセッサ又は集積回路は通常、単一のプロセッサ・ダイを含んでおり、プロセッサ・ダイは、何れかの数のコア又は論理プロセッサを含み得る。
集積回路上のコア及び論理プロセッサの数がますます増加していることにより、より多くのソフトウェア・スレッドが同時に実行されることが可能になっている。しかし、同時に実行することができるソフトウェア・スレッドの数の増加は、ソフトウェア・スレッド間で共有されるデータの同期化の問題をもたらしている。複数のコア又は複数の論理プロセッサ・システムにおける共有データへのアクセスに対する一般的な解決策の1つは、共有データへの複数のアクセスにわたる相互排除を保証するためにロックを使用することである。しかし、複数のソフトウェア・スレッドを実行する能力がますます向上していることは、潜在的には、フォールス・コンテンション、及び実行の逐次化をもたらす。
例えば、共有データを保持しているハッシュ・テーブルを考えてみる。ロック・システムにより、プログラマは、ハッシュ・テーブル全体をロックし、一スレッドがハッシュ・テーブル全体にアクセスすることを可能にする。しかし、他のスレッドのスループット及び性能は、潜在的には悪影響を受ける。ロックが解放されるまで、ハッシュ・テーブル内のエントリには何れもアクセスすることができないからである。あるいは、ハッシュ・テーブル内の各エントリはロックし得る。いずれにせよ、この単純な例を大規模のスケーラブルなプログラムに外挿した後、ロック・コンテンション、逐次化、ファイングレイン同期化、及びデッドロック回避の複雑度は、プログラマにとって極めて厄介な負担になる。
最近の別のデータ同期化手法には、トランザクショナル・メモリ(TM)の使用が含まれる。多くの場合、トランザクショナル実行は、複数のマイクロ動作、動作、又は命令の群の実行を含む。上記例では、何れのスレッドもハッシュ・テーブル内で実行し、それらのメモリ・アクセスは監視/追跡される。何れのスレッドも、同じエントリにアクセスし/同じエントリを変える場合、データのバリディティを保証するために競合解消を行い得る。トランザクショナル実行の一タイプには、ソフトウェア・トランザクショナル・メモリ(STM)が含まれ、STMでは、メモリ・アクセスの追跡、競合解消、アボート・タスク、及び、他のトランザクショナル・タスクが、多くの場合、ハードウェアのサポートなしで行われる。別のタイプのトランザクショナル実行は、ハードウェア・トランザクショナル・メモリ(HTM)システムであり、ここで、ハードウェアは、アクセス追跡、競合解消、及び他のトランザクショナル・タスクをサポートするために含まれる。
トランザクション内の一部の動作は、トランザクションによって読み出されるか、又は生成されるデータに基づく。このデータ、又はこのデータに対するアクセスを監視する情報がそこなわれた場合、予期しない副作用が生じ得る。例えば、トランザクションが分岐の宛先を特定の変数Xに書き込んだとする。トランザクショナル・メモリの意味論により、Xの値は変更し得る(例えば、Xは、バッファリングされたやり方で書き込まれ、バッファは失われている)。変更の後、トランザクションは、アドレスXから読み出された、当該時点では無効な値に基づいて分岐しようとし、その結果、予期しない結果が生じる。トランザクションの最後に、又は、ポーリングなどの全くシンクロナスなソフトウェア(OS又はVMM)手法によって処理される上述のものなどのイベントは、予期しない結果が生じる前に変更又は競合を処理するのに十分差し迫っている訳でないことがあり得る。
本発明は、例示の目的で例証しており、添付図面の図によって限定されることを意図するものでない。
複数のソフトウェア・スレッドを同時に実行することができる複数の処理エレメントを含むプロセッサの実施例を示す図である。 ハンドラ・イベントに応じてハンドラに対する制御移行をサポートするためのプロセッサ内の実施例を示す図である。 特権レベルのソフトウェア介入なしで、トランザクショナル・ハンドラに実行を向ける方法のフロー図の実施例を示す図である。 ハードウェアを利用したソフトウェア・ハンドラに制御フローを移す方法のフロー図の別の実施例を示す図である。
以下の明細書では、本発明の詳細な理解をもたらすために、特定のタイプのメモリ・アクセス及び場所、特定のデータ粒度、特定のタイプのキャッシュ・コヒーレンシ・モデル、特定のキャッシュ実現形態、アクセス・モニタの特定のタイプ及び実現形態、トランザクショナル実行の特定のハードウェア構造の例等などの数多くの具体的な詳細を記載している。しかし、前述の具体的な詳細は、本発明を実施するために使用しなくてよいということが当業者には明らかになるであろう。他の場合には、周知の構成部分又は手法(ソフトウェアにおけるトランザクションのコーディング、トランザクションの境界設定、特定並びに別のマルチコア及びマルチスレッドのプロセッサ・アーキテクチャ、特定のコンパイラ手法/実現形態、及びマイクロプロセッサの特定の動作の詳細は、本発明を不必要に分かりにくくすることを避けるために、詳細に説明していていない。
本明細書及び特許請求の範囲記載の方法及び装置は、ハンドラへの、最適化された制御フロー移行をサポートするために、ハードウェアにおいてハンドラを登録する。特に、ハンドラの登録は主に、ハードウェア・トランザクションナル・メモリ・システムに関して説明している。しかし、ハンドラを登録する方法及び装置は、前述に限定されるものでない。ハンドラの介入を必要とする何れのハードウェア実行のためにも実現し得るからである。
図1を参照すれば、複数のスレッドを同時に実行することができるプロセッサの実施例を示す。なお、プロセッサ100は、ハードウェア・トランザクショナル実行のためのハードウェア・サポートを含み得る。ハードウェア・トランザクショナル実行とともに、又は別個に、プロセッサ100は、ソフトウェア・トランザクショナル・メモリ(STM)のハードウェア・アクセラレーション、STMの別個の実行、又は、ハイブリッド・トランザクショナル・メモリ(TM)システムなどのそれらの組み合わせのためのハードウェア・サポートも提供し得る。プロセッサ100は、マイクロプロセッサ、組み込み型プロセッサ、ディジタル信号プロセッサ(DSP)、ネットワーク・プロセッサなどの何れかのプロセッサ、又はコードを実行するための他のデバイスを含む。図示したプロセッサ100は複数の処理エレメントを含む。
一実施例では、処理エレメントは、スレッド装置、処理装置、コンテキスト、論理プロセッサ、ハードウェア・スレッド、コア、及び/又は、実行状態又はアーキテクチャ状態などのプロセッサの状態を保持することができる何れかの他のエレメントを表す。すなわち、一実施例における処理エレメントは、ソフトウェア・スレッド、オペレーティング・システム、アプリケーション又は他のコードなどのコードに独立して関連付けることが可能な何れかのハードウェアを表す。物理プロセッサは通常、コアやハードウェア・スレッドなどの何れかの数の他の処理エレメントを潜在的に含む集積回路を表す。
コアは多くの場合、独立アーキテクチャ状態を維持することができる集積回路上に配置されたロジックを表す。ここで、独立して維持されるアーキテクチャ状態はそれぞれ、少なくとも一部の専用実行リソースと関連付けられる。コアと対照的に、ハードウェア・スレッドは通常、独立アーキテクチャ状態を維持することができる集積回路上に配置された何れかのロジックを表し、独立して維持されたアーキテクチャ状態は、実行リソースへのアクセスを共有する。特定のリソースが共有され、他が、一アーキテクチャ状態専用の場合、コア及びハードウェア・スレッドの用語間の線が重なる。しかし、多くの場合、コア及びハードウェア・スレッドは、オペレーティング・システムにより、個々の論理プロセッサとしてみられており、オペレーティング・システムは、各論理プロセッサ上の動作を個々にスケジューリングすることができる。
図1に示す物理プロセッサ100は、より高いレベルのキャッシュ110へのアクセスを共有する2つのコア(コア101及び102)を含む。プロセッサ100は、非対称コア(すなわち、異なる構成、機能的装置、及び/又はロジックを有するコア)を含み得るが、対称コアを示す。その結果、コア101と同一として示すコア102は、反復する記載を避けるために詳細に説明しない。更に、コア101は2つのハードウェア・スレッド101a及び101bを含む一方、コア102は2つのハードウェア・スレッド102a及び102bを含む。したがって、オペレーティング・システムなどのソフトウェア・エンティティは潜在的には、プロセッサ100を別個の4つのプロセッサ(すなわち、4つのソフトウェア・スレッドを同時に実行することができる4つの論理プロセッサ又は処理エレメント)とみる。
ここで、第1のスレッドはアーキテクチャ状態レジスタ101aと関連付けられ、第2のスレッドはアーキテクチャ状態レジスタ101bと関連付けられ、第3のスレッドはアーキテクチャ状態レジスタ102aと関連付けられ、第4のスレッドはアーキテクチャ状態レジスタ102bと関連付けられる。図示したように、アーキテクチャ状態レジスタ101aは、アーキテクチャ状態レジスタ101bに複製されるので、個々のアーキテクチャ状態/コンテキストは、論理プロセッサ101a/論理プロセッサ101bに記憶することができる。リネーム・アロケータ・ロジック130におけるリネーム・ロジック及び命令ポインタなどの他の小容量のリソースも、スレッド101a及び101bに対して複製し得る。キュー、ロード/記憶バッファ、ILTB120、及び再配列/退避装置135における再配列バッファなどの一部のリソースは区画化によって共有し得る。汎用内部レジスタ、ページテーブル・ベース・レジスタ、低レベル・データ・キャッシュ及びデータTLB115、実行装置140、及びアウトオブオーダ装置135の一部分などの他のリソースは潜在的に完全に共有されている。
プロセッサ100は多くの場合、完全に共有されているか、区画化によって共有化されているか、又は、処理エレメントに専用であり得る他のリソースを含む。図1では、プロセッサの例証的な機能的装置/リソースを有する全く例示的なプロセッサの実施例を示す。プロセッサは、前述の機能的装置の何れかを含めるか、又は省略することができ、かつ、表していない何れかの他の既知の機能的装置、ロジック又はファームウェアを含み得る。
図示したように、プロセッサ100は、システム・メモリ175、チップセット、ノースブリッジ、又は他の集積回路などの、プロセッサ100に対して外部のデバイスと通信するためのバス・インタフェース・モジュール105を含む。メモリ175は、プロセッサ100に専用であるか、又はシステム内の他のデバイスと共有し得る。より高いレベルの、又は更に遠隔のキャッシュ110は、より高いレベルのキャッシュ110から最近フェッチされたエレメントをキャッシュする。「より高いレベルの、又は更に遠隔の」は、増加しているか、又は実行装置から更に遠隔になっているキャッシュ・レベルを表す。一実施例では、より高いレベルのキャッシュ110は、第2のレベルのデータ・キャッシュである。しかし、より高いレベルのキャッシュ110は、命令キャッシュに関連付けられるか、又は命令キャッシュを含み得るので、前述に限定されるものでない。トレース・キャッシュ(すなわち、命令コードの一タイプ)はその代わりに、最近デコードされたトレースを記憶するためにデコーダ125の後に結合し得る。モジュール120は更に潜在的には、実行され/とられる分岐を予測するための分岐目標バッファ、及び命令のアドレス変換エントリを記憶するための命令変換バッファ(I−TLB)を含む。
デコード・モジュール125は、フェッチされたエレメントをデコードするためにフェッチ装置120に結合される。一実施例では、プロセッサ100は、プロセッサ100上で実行可能な命令を定義/規定する命令セット・アーキテクチャ(ISA)に関連付けられる。ここでは、多くの場合、ISAによって認識されるマシン・コード命令は、行う対象の命令又は動作を参照/規定するオプコードとして表される、命令の一部分を含む。
一例では、アロケータ及びリネーマ・ブロック130は、命令処理結果を記憶するためのレジスタ・ファイルなどのリソースを予約するためのアロケータを含む。しかし、スレッド101a及び101bは潜在的には、アウトオブオーダ実行ができ、ここで、アロケータ及びリネーマ・ブロック130は更に、命令結果を追跡するための再配列バッファなどの他のリソースを予約する。装置130は、プロセッサ100の内部の他のレジスタに、プログラム/命令参照レジスタをリネイムするためのレジスタ・リネイマも含み得る。再配列/退避装置135は、上記再配列バッファなどの構成部分を含み、バッファをロードし、バッファを記憶して、アウトオブオーダ実行をサポートし、後に、アウトオブオーダで実行された命令のインオーダ退避をサポートする。
スケジューラ及び実行装置ブロック140は、一実施例では、実行装置に対する命令/動作をスケジューリングするためのスケジューラ装置を含む。例えば、浮動小数点命令が、利用可能な浮動小数点実行装置を有する実行装置のポートに対してスケジューリングされる。実行装置に関連付けられたレジスタ・ファイルも、情報命令処理結果を記憶するために含まれる。例示的な実行装置は、浮動小数点実行装置、整数実行装置、ジャンプ実行装置、ロード実行装置、記憶実行装置、及び他の既知の実行装置を含む。
より低いレベルのデータ・キャッシュ及びデータ変換バッファ(D−TLB)150は、実行装置140に結合される。デ―タ・キャッシュは、メモリ・コヒーレンシ状態に潜在的に保持された、データ・オペランドなどの、最近使用された/処理されたエレメントを記憶する。D−TLBは、仮想/線形アドレスから物理アドレスへの変換を記憶する。具体例として、プロセッサは、物理メモリを複数の仮想ページに分解するためのページ・テーブル構造を含み得る。
一実施例では、プロセッサ100は、ハードウェア・トランザクショナル実行、ソフトウェア・トランザクショナル実行、又はそれらの組み合わせ又は混合ができる。コードのクリティカル・セクション又はアトミック・セクションとしても表し得るトランザクションは、アトミック群として実行する対象の命令、動作又はマイクロ動作の群を含む。例えば、命令又は動作は、トランザクション又はクリティカル・セクションを区別するために使用し得る。以下に更に詳細に説明する一実施例では、前述の命令は、上記デコーダなどのプロセッサ100のハードウェアによって認識可能な命令セット・アーキテクチャ(ISA)などの命令セットの一部である。多くの場合、前述の命令は、ハイレベル言語から、ハードウェアによって認識可能なアセンブラ言語にコンパイルされると、デコード段階中にデコーダが認識する動作コード(オプコード)、又は命令の他の部分を含む。
通常、トランザクションの実行中、メモリに対する更新は、トランザクションがコミットされるまで大局的に可視にされる訳でない。例として、1つの位置に対するトランザクショナル書き込みは、潜在的には、局所スレッドに可視であるが、しかし、別のスレッドからの読み出しに応じて、書き込みデータは、トランザクショナル書き込みを含むトランザクションがコミットされるまで転送されない。トランザクションがなお保留中の間、メモリからロードされ、メモリ内に書き込まれるデータ項目/エレメントが、以下に更に詳細に説明するように追跡される。トランザクションがコミット点に達すると、競合が、トランザクションについて検出されていない場合、トランザクションはコミットされ、トランザクション中に行われた更新は大局的に可視にされる。
しかし、トランザクションがその保留状態中に無効にされた場合、更新を大局的に可視にすることなく、トランザクションはアボートされ、潜在的に再起動される。その結果、本明細書及び特許請求の範囲記載のトランザクションが保留状態にあることは、実行を開始しており、コミットもアボートもしていない(すなわち、保留中である)トランザクションを表す。
ソフトウェア・トランザクショナル・メモリ(STM)システムは多くの場合、ソフトウェアにおける、又は、少なくとも部分的に、ソフトウェアにおける、アクセス追跡、競合解消、又は他のトランザクショナル・メモリ・タスクの実行を表す。一実施例では、プロセッサ100は、トランザクショナル実行をサポートするためのプログラム・コードをコンパイルするためのコンパイラを実行することができる。ここで、コンパイラは、トランザクションの実行を可能にするために動作、コ―ル、ファンクション及び他のコードを導入し得る。
コンパイラは多くの場合、ソース・テキスト/コードを目標テキスト/コードに変換するためのプログラム又はプログラムの組を含む。通常、コンパイラによる、プログラム/アプリケーション・コードのコンパイルは、ハイレベル・プログラミング言語のコードをローレベルのマシン言語コード又はアセンブラ言語コ―ドに変換するために複数の段階及びパスにおいて行われる。しかし、単一パスのコンパイラはなお、単純なコンパイルに利用し得る。コンパイラは、字句解析、前処理、構文解析、意味解析、コード生成、コード変換、及びコード最適化などの何れかの既知のコンパイラ動作を行い得る。
より大きなコンパイラは、多くの場合、複数の段階を含むが、多くの場合、前述の段階は、一般的な2つの段階((1)フロントエンド(すなわち、一般に、構文処理、意味処理、及び特定の変換/最適化を行い得る)、及び(2)バックエンド(すなわち、一般に、解析、変換、最適化、及びコード生成が行われる))内に含まれる。一部のコンパイラは、コンパイラのフロントエンドとバックエンドとの間に描かれた輪郭のぼやけを示すミドルエンドを表す。その結果、コンパイラの挿入、関連付け、生成又は他の動作に対する参照は、上述の句若しくはパス、及びコンパイラの何れかの他の既知の句又はパスにおいて行い得る。例証した例では、コンパイラは潜在的には、コンパイルの1つ又は複数の段階においてトランザクショナル動作、コール、ファンクション等を挿入する(コンパイルのフロントエンド段階におけるコール/動作の挿入、及び、次いで、トランザクショナル・メモリ変換段階中の、コール/動作のより低いレベルのコードへの変換など)。
しかし、コンパイラの動的特性又は静的特性及び実行環境にもかかわらず、コンパイラは一実施例では、トランザクショナル実行を可能にするようプログラム・コードをコンパイルする。したがって、プログラム・コードの実行に言及していることは、一実施例では、(1)主プログラム・コードをコンパイルし、トランザクショナル構造を維持し、又は、他のトランザクション関連動作を行うための、動的又は静的なコンパイラ・プログラムの実行、(2)トランザクショナル動作/コールを含む主プログラム・コードの実行、(3)主プログラム・コードに関連付けられた、ライブラリなどの他のプログラム・コードの実行、又は(4)これらの組み合わせを表す。
一実施例では、プロセッサ100は、ハードウェア・トランスアクショナル・メモリ(HTM)システム内で、ハ―ドウェア/ロジックを利用するトランザクションを実行することができる。数多くの特定の実現形態の詳細が、HTMを実現する場合に、アーキテクチャ及びマイクロアーキテクチャの観点から存在し、その大半は、本発明を不必要に分かりにくくすることを避けるよう本明細書及び特許請求の範囲では説明していない。しかし、一部の構造及び実現形態は、例証の目的で開示している。しかし、前述の構造及び実現形態は必須でなく、異なる実現形態の詳細を有する他の構造により、強化し、かつ/又は置き換え得る。
実現形態の設計の選択の例として、HTMは、置き換え更新により、又は書き込みバッファリングで動作し得る。置き換え更新HTMでは、トランザクショナル書き込みは、保持された先行データを修正するために、参照されたメモリ・アドレスに対して行われる。しかし、この修正されたデータは、外部要求スレッドに提供されず、すなわち、データは、大局的に可視に行われないが、局所メモリの配列の目的で、局所読み出しに提供される。更に、先行データは多くの場合、「記録されており」、よって、トランザクションのアボートがあると、先行データは、トランザクションの開始の実行前にスレッドの状態を達成するために回復することができる。
例証すれば、データ・キャッシュ150は、キャッシュ110及びシステム・メモリ175などの、より高いレベルのメモリからのデータを保持するための第1のレベルのデータ・キャッシュを含む。よって、デ―タ・キャッシュ150に対するトランザクショナル書き込みに遭遇すると、先行データ項目は、ライトバック・キャッシュの一実施例では、先行データ項目をもう一度、より高いレベル・キャッシュ110に書き込む。あるいは、先行データは、プロセッサ100内又はその外の別の別個のメモリに記録し得る。先行データ項目を記録した後、キャッシュ150内のデータ項目を更新するためにトランザクショナル書き込みが行われる。したがって、(トランザンクショナル書き込みに関連付けられたスレッドである)局所スレッド101aなどの局所スレッドは、キャッシュ150内の修正されたデータ項目から読み出し得る。しかし、トランザクショナル書き込みを含むトランザクションがまだコミットされていない場合、スレッド102bなどの別のスレッドには、読み出し要求に応じて、修正されたデータでなく、記録されたデータが与えられる。
トランザクションがコミットすると、ログインされたデータは、無効にされるか、又は無視される。しかし、トランザクションがアボートした場合、先行データは、再ロードされるか、又は有効データとして、大局的に識別される。
対照的に、書き込みバッファリングHTMでは、トランザクショナル書き込みは書き込みバッファにバッファリングされる一方、先行データはその元の位置に常駐する。スレッド102bなどの局所スレッドが、トランザクショナル書き込みされたデータの読み出しを行った場合、修正されたデータが書き込みバッファから転送される。当然の結果として、トランザクショナル書き込みを含むトランザクションがなお保留中である間にデータの読み出しを外部スレッドが要求した場合、元の位置からの先行データが供給される。更に、トランザクションのコミットにより、修正されたデータが、対応するメモリ・アドレスに複製される一方、アボートにより、バッファリングされたデータは無視される。
上述のように、局所処理エレメントにより、かつ、潜在的には、他の処理エレメントにより、アクセス及び要求をデータ項目に対して行い得る。安全機構なしでは、前述のアクセスの一部は、潜在的には、無効なデータ及び実行(すなわち、読み出しを無効にするデータへの書き込み、又は無効データの読み出し)をもたらす。その結果、プロセッサ100は、潜在的には、潜在的な競合の識別のためにデータ項目との間のメモリ・アクセスを追跡又は監視するためのロジックを含む。
データ項目又はデータ・エレメントは、ハードウェア、ソフトウェア、又はそれらの組み合わせによって規定される何れかの粒度レベルでのデータを含み得る。データ、データ・レメント、データ項目、又はそれらへの参照の例の包括的でないリストには、メモリ・アドレス、データ・オブジェクト、クラス、動的言語コードのタイプのフィールド、動的言語コードのタイプ、変数、オペランド、データ構造、及びメモリ・アドレスに対する間接的な参照が含まれる。しかし、何れの既知のデータ群も、データ・エレメント又はデータ項目として表し得る。動的言語コードのタイプ、及び動的言語コードのタイプのフィールドなどの上記例のいくつかは、動的言語コードのデータ構造を表す。例証するに、サン・マイクロシステムズ社によるジャバ(商標)などの動的言語コードは、強く型付けされた言語である。各変数は、コンパイル時に知られているタイプを有する。上記タイプは、2つのカテゴリ(すなわち、プリミティブ・タイプ(ブーリアン及びニューメリック、例えば、整数、浮動小数点)及び参照タイプ(クラス、インタフェース、及びアレイ)に分けられる。参照タイプの値は、オブジェクトに対する参照である。ジャバ(商標)では、フィールドを含むオブジェクトは、クラス・インスタンス又はアレイであり得る。クラスAのオブジェクトaを考えると、タイプAのフィールドxを表すために表記A::xを使用することが通例であり、クラスAのオブジェクトaのフィールドxを表すためにa.xを使用することが通例である。例えば、a.x=a.y+a.zとして式を表し得る。ここで、フィールドy及びフィールドzが、加算されるようロードされ、その結果がフィールドxに書き込まれる。
したがって、データ項目に対するメモリ・アクセスの監視は、何れのデータ・レベル粒度でも行い得る。例えば、一実施例では、データに対するメモリ・アクセスはタイプのレベルで監視される。ここでは、フィールドA::xに対するトランザクショナル書き込み及びフィールドA::yの非トランザクショナル・ロードは、同じデータ項目(すなわち、タイプA)に対するアクセスとして監視し得る。別の実施例では、メモリ・アクセス監視はフィールド・レベル粒度で行われる。ここでは、A::xへのトランザクショナル書き込み及びA::yの非トランザクショナル・ロードは、別個のフィールドに対する参照であるので、同じデ―タ項目に対するアクセスとして監視されない。なお、他のデータ構造又はプログラミング手法は、データ項目に対するメモリ・アクセスの追跡を考慮に入れ得る。例として、クラスAのオブジェクトのフィールドx及びy(すなわち、A::x及びA::y)が、クラスBのオブジェクトを指し示し、新たに割り当てられたオブジェクトに初期化され、初期化後は決して書き込まれないものとする。一実施例では、A::xによって指し示されるオブジェクトのフィールドB::zに対するトランザクショナル書き込みは、A::yによって指し示されるオブジェクトのフィールドB::zの非トランザクショナル・ロードに関し、同じデータ項目へメモリ・アクセスとして監視されない。前述の例から推定すれば、何れのデータ粒度レベルでもモニタがモニタリングを行い得ると判定することが可能である。
一実施例では、モニタは、適宜、監視されると判定されたロード及び記憶を追跡するための読み出しモニタ及び書き込みモニタを含む。例として、ハードウェア読み出しモニタ及び書き込みモニタは、データ項目を保持するための記憶構造の粒度にもかかわらず、少なくとも、データ項目の粒度でデータ項目を監視する。データ項目を監視するために読み出しモニタ/属性を利用する例は、本出願とともに出願された、Gad Sheafferらによる、「Read and Write Monitoring Attributes in Transactional Memory (TM) Systems」と題する、代理人整理番号P29130を有する同時係属中の米国特許出願第12/346530号に更に詳細に説明している。しかし、モニタ、属性、注釈、又は他の追跡機構は、データを保持するための何れかの粒度のデータ又は構造を利用するトランザクショナル実行に関連付けられた競合を検出するよう利用し得る。
読み出し又は書き込み属性は、データ項目に関連付けられた状態を保持するための何れかのロジック、ファームウェア又は構造を含む。例えば、データ項目の属性は、ビット・ベクトルを含み、ビット・ベクトル内の各ビットは、トランザクショナル・ロードされたか、トランザクショナル書き込みされたか、非トランザクショナル・ロードされたか、非トランザクショナル書き込みされたか、トランザクショナル・ロードされていないか、トランザクショナル書き込みされていないか、非トランザクショナル・ロードされていないか、非トランザクショナル書き込みされていないか、アクセス競合が検出されたか、アクセス競合が検出されていないか、読み出し要求であるか、読み出し要求でない、書き込み要求でありか、書き込み要求でない、保有要求であるか、保有要求でないか、又は、データ項目を保持するためのデータ項目又はメモリ位置に関連付けられた何れかの他の属性又は状態などの)デ―タ項目の属性を表す。
別の例として、データ項目の属性はコード化された値を含む。例えば、4つの状態(すなわち、(1)トランザクショナル書き込みされた、(2)トランザクショナル読み出しされた、(3)トランザクショナル書き込みされていない、及び(4)トランザクショナル読み出しされていない)などの状態は、2つの属性ビット(すなわち、4つの2進値00、01、10及び00)を利用してコード化される。
更に別の例として、属性は、データ・キャッシュ150などのキャッシュ・メモリに関連付けられたコヒーレンシ状態アレイの一部として含まれる。例示的なキャッシュ・コヒーレンシ状態の網羅的でないリストには、(1)修正された(M420)状態(すなわち、アドレスが、書き込まれており、関連付けられた属性を有していない)、(2)修正された読み出し(MR430)状態(すなわち、アドレスは書き込まれており、関連付けられた読み出し属性を有する(例えば、アドレスに対する先行する読み出し、及び、それに続く、アドレスへのトランザクション書き込み)、(3)修正された書き込み(MW425)状態、すなわち、アドレスは書き込まれ、それに書き込み属性を関連付けさせている、(4)修正された読み出し書き込み(MRW435)状態(すなわち、アドレスは書き込まれており、読み出し及び書き込み属性を関連付けている)、(5)排他的(E440)状態(すなわち、アドレスが、読み出されており、関連付けられた属性がない)、(6)排他的読み出し(ER445)状態(すなわち、アドレスが、読み出されており、関連付けられた読み出し属性を有する)、(7)共有(S410)(すなわち、アドレスが、読み出されており、関連付けられた属性を有しない)、(8)共有読み出し(SR415)状態、すなわち、アドレスが読み出されており、関連付けられた読み出し状態を有する。
ここでは、監視されたコヒーレンシ状態などの更なるキャッシュ・コヒーレンシ状態を、伝統的な修正排他的共有及び無効(MESI)キャッシュ・コヒーレンシ状態に加え得る。その結果、既存の既知のコヒーレンシ及び通信/スヌープ・プロトコルを、競合を検出するためのハードウェア・モニタ/属性と組み合わせて利用し得る。
当該設計に基づくに、キャッシュ・ラインの監視されたコヒーレンシ状態及びキャッシュ・コヒーレンシ要求の別々の組み合わせは、潜在的な競合(キャッシュ・ラインが、共有読み出し状態にあるデータ項目を保持しており、スヌープが、データ項目に対する書き込み要求を示しているなど)をもたらす。逆に、修正された書き込み状態にあるデータ項目を保持しているキャッシュ・ラインと、上記データ項目に対する読み出し要求を示しているスヌープは、潜在的に競合しているとみなし得る。一実施例では、アクセス要求及び属性状態の前述の組み合わせを検出するために、スヌープ・ロジックが、競合検出/報告のためのモニタ及び/又はロジックなどの競合検出/報告ロジックに結合される。
一実施例では、キャッシュ150に保有されたデータ項目に関連付けられた属性は、エフェミラル記憶装置又は専用記憶装置を利用して実現される。ここで、属性は、キャッシュ150のライン自体内などのキャッシュ150内の何れかの場所に保持し得る。例えば、上記HTMの一例は、置き換え更新HTMを含む。ここで、トランザクショナル修正データが現在のメモリ位置に保持される一方、先行データは、より高いレベルのメモリ内などに記録/バックアップされる。その結果、一実施例では、キャッシュ150が、データ項目に対してアクセスされると、属性は、キャッシュ150におけるデータ項目とともに短い間、記憶される。ここでは、データ項目は、専用コヒーレンシ状態又はエフェメラル・コヒーレンシ状態に保持され、このことは、トランザクショナル意味論が維持されることをキャッシュ制御ロジックが確実にすることを可能にする。すなわち、エフェメラル状態に保持されたデータ項目は他のスレッドに供給されない。
しかし、データ項目をキャッシュ150から退出させた場合、専用で保持された属性は潜在的に失われる。基本的に、属性は、データ項目を監視するために作成されたシステムであり、より高いレベルのメモリにもう一度書き込まれるものでない。属性が崩壊する(すなわち、退出又は他のイベントによって失われる)シナリオでは、潜在的な競合は、上述の通り、潜在的なアクセス競合の検出と同様にトリガし得る。バッファリングされた記憶装置及びバッファリングされた状態などのエフェメラル記憶装置及び専用状態のバ―ジョンは、「Extending the MESI protocol to support locally buffered data」と題する、代理人整理番号P29132を有する、本出願とともに出願された関連出願に記載している。
一実施例では、ハンドラは、アクセス競合、モニタ競合の喪失、データ競合の喪失等などの競合の効率的な処理をサポートするためにハードウェアに登録される。例えば、ソフトウェア書き込み可能なレジスタが、トランザクション・ハンドラのアドレスを登録するために、トランザクション・ランタイム又はアプリケーション・コードなどのソフトウェアに対して提供される。上記情報の喪失又は競合などの関心イベントが検出されると、一実施例では、制御フローが、オペレーティング・システム(OS)などの特権ソフトウェアの介入なしで、ソフトウェア書き込み可能なレジスタに登録されたトランザクション・ハンドラに対して向けられる。
一実施例では、関心のイベント(すなわち、トランザクション・ハンドラの呼出しをもたらすためのハンドラ・イベント)は、トランザクショナル・ランタイム又はアプリケーション・コードなどの非特権ソフトウェアによって規定することができる。別々の実施例における関心のイベントは、同期、非同期、又はそれらの組み合わせであり得る。その結果、OSの介入なしで同期イベント及び非同期イベントのためのソフトウェア・ハンドラに制御を移す機能が提供される。これは、潜在的には、ハンドラの実行を開始するために、特権レベルのソフトウェア・ディスパッチ処理を待つことに関係する遅延をなくす。したがって、予期しない実行及び結果をもたらす前の低レーテンシ反応を必要とするハンドラ・イベントは、効率的にかつすばやく処理される。
最初に図1を参照して上述した通り、プロセッサ100のアーキテクチャは、説明の目的で、例証しているに過ぎない。同様に、種々の粒度のデータ項目におけるハードウェア・モニタ及び属性を関連付ける方法を利用し得るので、データ項目/エレメントと属性を関連付ける具体例も例示的である。
図2を参照すれば、システムの一実施例は、ハードウェア内にハンドラを登録するためのサポートを提供するためのプロセッサを含む。プロセッサ205は、図1を参照して説明した機能的装置又はモジュールの何れかを含んでよく、又は省略してよく、プロセッサの何れかの他の既知の装置又はロジックを含んでよい。更に、記憶エレメントの収集物も表す。しかし、別個の記憶エレメントに関して後述する動作及び方法は、何れの数の記憶エレメントとも組み合わせ得る。
図示したように、プロセッサ205はコントローラ・ハブ230を介してシステム・メモリ250に結合される。システム・メモリ250は、ランダム・アクセス・メモリ(RAM)などの何れかのメモリ・デバイスを含む。ここで、システム・メモリ250は、プロセッサ205上で実行する対象の1つ又は複数のトランザクションを含み得るアプリケーション・コード260を保持し、後述するように、ハンドラ255は、アプリケーション・コード260の実行中に生じるトランザクショナル関連ハンドラ・イベントを処理するためにプロセッサ205のハードウェアに登録し得る。
一実施例では、コントローラ・ハブ230は、多くの場合、2つのハブ(すなわち、システム・メモリ250と通信し、グラフィクス・プロセッサなどの入出力(I/O)デバイスと潜在的にインタフェースするためのメモリ・コントローラ・ハブ、及び、ネットワーク・インタフェース・コントローラ(NIC)、オーディオ・デバイス、又は他の既知のI/Oデバイスなどの他のI/Oデバイスと通信するためのI/Oコントローラ・ハブ)を含むチップセットを含む。
プロセッサ205は記憶エレメント210を含む。記憶エレメントは、2進値、デ―タ、コード、命令、アドレス、又は他の既知のコンピュータ関連情報などの情報又はエレメントを保持するための何れかのロジック、構成部分又はデバイスを表す。一般的な例として、記憶エレメントはレジスタを含む。プロセッサ内にみられる通常のレジスタは、汎用レジスタ、データ・レジスタ、アドレス・レジスタ、コンディショナル・レジスタ、浮動小数点レジスタ、定数レジスタ、ベクトル・レジスタ、特殊用途レジスタ、プログラム・カウンタ(別名、命令ポインタ)レジスタ、ステータス・レジスタ、命令レジスタ、マシン/モデル特有レジスタ(MSR)、制御レジスタ、及び一般的なユーザ・アクセス可能なレジスタを含む。その結果、記憶エレメント210乃至255はそれぞれ、個々に、別々の実施例において、上述のレジスタのうちの何れか1つであり得る。
一実施例では、ハンドラ255などのハンドラは記憶エレメント210に登録される。プロセッサ205のハードウェアにハンドラ255を登録することは、プロセッサ205に対する、ハンドラ255又はその位置の識別を含む。例として、記憶エレメント210にハンドラ255を登録することは、記憶エレメント210に、ハンドラ255への参照を記憶することを含む。すなわち、登録されると、記憶エレメント210は、ハンドラ255に対する参照を保有する。
コードへの参照を登録する何れかの方法を、ハンドラ255への参照を保持するための記憶エレメント210を更新するよう利用し得る。一実施例では、非特権ソフトウェア/コードは、記憶エレメント210にハンドラ255を登録する。非特権ソフトウェアは、特定の高特権レベル(すなわち、特権レベル0)で実行することが可能でないソフトウェアなどの、特権化されていない何れかのコードを含み得る。しかし、一実施例では、非特権化ソフトウェアはユーザレベル・コードを含む。すなわち、トランザクショナル・ランタイム・コード、アプリケーション・コード、又は仮想マシン・コードは、トランザクションの実行前にプロセッサ205のハードウェアにハンドラ255を登録することができる。したがって、記憶エレメント210は、一実施例では、ハンドラ255への参照を保持するために更新されるよう、ユーザレベル又は非特権レベルのコードによって修正可能である。
例えば、アプリケーション・コードは、トランザクションを実行する前に、トランザクションの実行中にハンドラ・イベントが生じた場合、ユーザ登録されたハンドラ255がイベントを処理するために呼び出されるように記憶エレメント210にハンドラ255を登録する。よって、この実施例では、ユーザは、トランザクショナル・ハンドラ・イベントの場合に利用する対象のハンドラを定義し、ハンドラに対する最適化された制御フロー移行を提供するためにハードウェアに登録することができる。しかし、ハンドラは、他の実施例では、OSなどの特権レベル・ソフトウェアによって登録し得る。
一実施例では、ハンドラ255への参照は、システム・メモリ250に保持されたハンドラ255の開始アドレス256への参照を含む。プロセッサにおいて利用されるアドレス指定手法が数多く存在しているので、メモリ・アドレスへの参照は潜在的には、アドレスへの何れかの既知のコンピュータ参照を含む。一例として、仮想アドレス及びオフセットは、ハンドラ255の開始アドレス256への参照として利用される。ここでは、プロセッサ205の記憶装置に保持された変換テーブル及びページ・テーブルは、仮想アドレスを参照ベース物理アドレスに変換し、それに対するオフセットを加えて物理アドレスを得る(ハンドラ255を参照する物理アドレス256)。コード・セグメントの値、又はオフセットの省略は、ハンドラの使用を現在のコード・セグメントに制限し得る。これは、潜在的には、実行されているトランザクション内の法的な命令も制限する。参照の別の例は、ハンドラ255を直接参照するための、記憶エレメント210に保持された直接物理アドレスを含む。
一実施例では、記憶エレメント220は、複数のハンドラ・イベントを特定する/示す。上述の通り、ハンドラ・イベントは、非同期ハンドラ・イベント、同期ハンドラ・イベント、又はそれらの組み合わせを含み得る。同期ハンドラ・イベントは、不正の命令/動作の実行や、無効な場所へのアクセスの実行などの命令に接続された/関連付けられたイベントを示す。対照的に、非同期イベントは、多くの場合、プログラム又は命令の制御フローに直接関係しないイベントを表す。ハンドラ・イベントの例は、属性情報の欠如、属性情報の喪失、トランザクションの範囲内で不正な命令の実行、不正の制御移行、非チェックポイント・レジスタへのアクセス、バッファリングされたデータの喪失、トランザクションの範囲内で禁止されたメモリ・タイプへのアクセス、例外、システム・コール、及び監視されたデータの喪失を含む。ここで、同期命令の一般的な例は、保護されたドメインに対して制御を不正に移行する旨の命令などの不正な命令の実行である一方、非同期イベントの通常の例は、属性情報の喪失を含む。しかし、ハンドラ・イベントは、ソフトウェア・ハンドラによって処理する対象の同期又は非同期の何れかの既知のイベントを含み得る。
一実施例では、記憶エレメント220は、ビット・ベクトル221などのビット・ベクトルを保持する。ビット・ベクトル221内の各ビットは、イベント270乃至274などのハンドラ・イベントに対応する。例えば、イベント270乃至274は、上述のイベント、及び本明細書に記載していない何れかの他の既知のハンドラ・イベントの何れかの組み合わせを表す。ビットがセットされると、対応するハンドラ・イベントがイネーブルされ、逆に、ビットがアンセットされると、対応するハンドラ・イベントがディセーブルされる。
図示したように、記憶エレメント220に保持する対象のベクトル221の第1のビットは、アンセットされ(すなわち、論理0にセットされ)、よって、ハンドラ・イベント274はディセーブルされる。論理値は例証的であり、反転し得る。すなわち、論理0はイネーブルし、論理1はディセーブルする。基本的に、ベクトル221はマスクとして動作する。ここでは、非チェックポイント・レジスタへのアクセスなどのイベント274は、検出されても、ディセーブルされていることが理由で、ハンドラ255の呼出しをもたらすものでない。このシナリオでは、前述のアクセスは、トランザクションの、変更できないか、又は頑強な特性によって許容可能であり得る。すなわち、トランザクションは、アボートする可能性が高くならないように優先度が与えられる。しかし、他のイネーブルされたイベント270乃至273の何れかが検出されると、記憶エレメント210に保持された参照に基づいてハンドラ255が実行される。ビット・ベクトルが例として利用されるが、コ―ド化された値又は命令の使用などによって、特定されたイベントを記憶する方法も利用し得る。
一実施例では、記憶エレメント220の一部分又は全部が、非特権ソフトウェアによって修正されていない。ここで、ソフトウェアは、記憶エレメント210にハンドラ255を登録し、ハンドラ255を実行させるようハンドラ・イベントを特定/登録することができる。しかし、一例では、記憶エレメント220の一部分が予約される。その結果、ハードウェアは、他のイベントがソフトウェアによってイネーブルすることができる一方で、ソフトウェアがディセーブルすることができない一部の予約されたハンドラ・イベントを定義することができる。
多くの場合、ハンドラは、検出されたハンドラ・イベントの状況に関して特定の通信を受け取る。したがって、一実施例では、記憶エレメント225は、ハンドラ255によって処理する対象のハンドラ・イベント(すなわち、検出されたハンドラ・イベント)を示すためのステータス値を保持するためのステータス記憶エレメントを含む。上記例から続ければ、スタータス記憶レメント225は、ビット・ベクトル226などのビット・ベクトルも保持し得る。ここで、ハンドラ・イベントをイネーブル又はディセーブルする代わりに、第1の論理値にセットされたビットは、ハンドラ・イベントが検出された旨を示す一方、第2の論理値にセットされたビットは、ハンドラ・イベントが検出されていない旨を示す。
一ビットのみが論理1にセットされてとして示しているが、複数のイベントが生じており、複数のイベントを処理する旨を示すために複数のビットをセットし得る。一実施例では、記憶エレメント225は、ユーザレベル又は非特権ソフトウェアによって読み出し可能である。その結果、アプリケーション・コード260又はハンドラ255は、プロファイリング目的で、又は実際のイベントの処理目的で、実行中に生じたハンドラ・イベントを判定するために記憶エレメント225を読み出すことができる。記憶エレメント210との記憶エレメント220の相互接続、又はプロセッサ205に保持された記憶エレメント210への参照により、ハンドラ・イベントの検出に応じて、記憶エレメント210に保持された参照(すなわち、アドレス256の表現)に基づいて、実行が、現在の点におけるアプリケーション・コード(すなわち、アドレス257における命令)の実行からハンドラ255(例えば、アドレス256)の実行に向けられる。
アプリケーション・コード260からハンドラ255に、制御フローを移行すること、又は実行を向けることは、プログラムの制御フローを誘導すること、又は実行を向けることの何れかの既知のやり方で行い得る。上述の通り、先行するシステムは多くの場合、ハンドラなどの、別々のプログラムに制御を渡す、OSなどの制御ソフトウェアに依存する。ここで、イベントが発生したかを判定するようOSが情報をポーリングしている間に、イベントを検出し、収集し得る。OSは、イベントが生じたことを知ると、ハンドラの実行のための時間をスケジューリングする。しかし、背景技術の部分の例に示すように、同期又は非同期であり得るトランザクショナル・イベントが更に効率的に(すなわち、より少ないスキッドで)処理される訳でない場合、無効な目標アドレスに基づいた分岐などの予期しない実行結果が生じ得る。
スキッドは通常、ハンドラ・シナリオの生起(すなわち、ハンドラ・イベントの検出)と、ハンドラの実際の呼出しとの間のレーテンシとして定義される。例えば、ハンドラ255は、バッファリングされた/専用で保持された読み出しデータの喪失が理由で、呼び出されており、スキッド値が3である場合、ハンドラが呼び出されるまで、バッファリングされたデータの喪失から最大、3命令分とり得る。スキッドを指し示すために命令カウントが利用されると、実行サイクルなどの何れかの他の処理メトリックも利用し得る。その結果、ハンドラ255への制御フロー移行は、潜在的には、より少ないスキッドを伴って行う。
制御フロー移行の例には、障害に似た態様(すなわち、スキッド・レベル0を示唆する、障害/イベントの退避を識別する命令の前)、トラップに似た態様(すなわち、これは、スキッド・レベル1を示唆する、割り込み可能な次ウィンドウにおいて)、又は、別々のイベントに対するそれらの組み合わせを含む。時には、スキッドはタイプ・イベントに基づく。例えば、予期しない実行結果を潜在的にもたらす一部の動作は、(スキッド・レベル0という)予期しない結果がシステム内で観測されないということを確実にするために退避させないものとする。一例は、先行してチェックポイントされなかった状態を変更する、トランザクションの範囲内の不正な動作を含む。ここでは、状態の変更が生じた場合、先行状態は失われ、トランザクション・アボートに応じて、先行状態を復元することは可能でない。その結果、動作の退避前に、実行がハンドラに向けられ、この場合、先行状態をチェックポイントし、次いで、動作が行われることを可能にし得る。
一実施例では、最適化された制御フロー移行は、特権レベル・ソフトウェアの介入なしで制御をハンドラ255に移行するためにプロセッサ205のハードウェアを利用して行われる。特権レベルのソフトウェアの例は、OSソフトウェア、カーネル・コード、及び仮想マシン・モニタ(VMM)コードを含む。ここでは、プロセッサ205は、記憶エレメント210に登録された参照に基づいてハンドラ255にアプリケーション・コード260の実行を向け得る。例証するに、仮想アドレスなどの参照がレジスタ210に保持され、物理アドレス256に関連付けられたオフセットが、アプリケーション・コード260により、レジスタ210に記憶される。更に、ユーザレベル・コード260などにより、ハンドラ・イベントがレジスタ220において特定されており、前述のハンドラ・イベントのうちのイベントが検出されており、これは、ステータス値を保持するためのレジスタ225に対する更新によって示される。
その結果、実行ロジックは、現在のプログラム・カウンタに対する参照(すなわち、現在の命令アドレス257に対する命令ポインタ)をレジスタ215に記憶する。レジスタ210に保持された参照と同様に、命令ポインタ・アドレスは、命令ポインタの実現形態に基づいた現在又は次の命令のアドレスなどの、実行が向けられる直前の現在の位置に対するオフセット又は他の参照、及び仮想アドレスを含み得る。基本的には、レジスタ215は、レジスタ210と同様に、戻りレジスタとして動作する。すなわち、レジスタ210内の参照は、ハンドラ255への制御フロー移行を最適化するよう利用され、戻りレジスタ215に保持された参照は、ハンドラ255からアプリケーション・コード260への制御フローの戻りを最適化するよう利用される。
この例では、プログラム260内の現在の位置がレジスタ215に記録された後、アプリケーション・コード260を実行する実行リソースは、レジスタ210に保持された参照に基づいてアプリケーション・コード260に実行を向けるよう利用される。ここでは、アドレス256への参照は基本的には、新たな命令ポインタになり、ハンドラ255の開始時の(すなわち、第1の命令の)実行が開始される。実行リソースは、図1を参照して上述した実行ロジックの何れか、又は何れかの他の既知の実行関連ロジックを含む。例えば、トランザクションの動作(すなわち、ロード/記憶実行装置上の実行がスケジューリングされたロード動作又は記憶動作)はアプリケーション・コード260で実行し得る。次に、ハンドラ・イベントに応じて、ジャンプ実行装置は、特権レベル・ソフトウェアの介入なしで、命令アドレス257からアドレス256へ実行をジャンプするためのジャンプ・タイプ動作を実行する。ここでは、ジャンプ対応動作は、通常ジャンプ動作、又はファー・ジャンプ動作を含み得る。
アドレス256に変換される対象のオフセット及び仮想アドレスなどの、レジスタ210において参照されるアドレスは、アプリケーション・コード260からハンドラ255に実行を向けるためのジャンプ・タイプ動作の目標アドレスとして利用される。このフレームワーク内では、ハンドラ255が実行を終えた後、すなわち、ハンドラ・イベントの処理を終了した後、アプリケーション・コード260に戻るために、同様なジャンプ・タイプ命令/動作が行われる。しかし、今回は、目標アドレスとしてレジスタ210に保持された参照の代わりに、戻りレジスタ215に保持された先行命令ポインタ参照が、アプリケーション・コード260内の先行位置への戻りジャンプの目標アドレスとして利用される。
ハンドラ255への上記参照は、同期イベント又は非同期イベントを処理するための何れかの既知のコードである。実際に、ハンドラ255は、検出されたハンドラ・イベントに応じて種々の動作を行い得る。例えば、一ハンドラ255は、一部のハンドラ・イベントに遭遇するとコミット機能又はアボート機能を行い、他のハンドラ・イベントに遭遇すると、レジスタ又は位置のチェックポイントなどの他の動作を行うことを試行し得る。その結果、ユーザは、ハンドラ・イベントを特定し、利用する対象のハンドラをハードウェアにおいて定義し得るので、ハンドラ・イベントに遭遇すると、ハードウェアは、特権ソフトウェアの介入の遅延なしで、ユーザレベル・コードによって特定されるハンドラに制御を移行することができる。更に、ハードウェアは、イベント、イベントに関連付けられたアドレス、及び他のイベント関連情報などの、ハンドラ・イベントに関する情報を通信するために提供し得る。図3乃至図4は、ハンドラに制御を向ける実施例を表している。
図3に移れば、特権レベルのソフトウェア介入なしで、トランザクショナル・ハンドラに実行を向ける方法のフロー図の実施例を表す。図3乃至図4におけるフローは、実質的に直列に示す。しかし、図示したフローは、他の実施例では、異なる順序で実行するか、互いに並列に実行するか、又は、全く実行しないことがあり得る。例えば、図4では、ハンドラ・アドレスは、ハンドラ・イベントがフロー410で規定される前にフロー405において第1のレジスタに記憶される。しかし、図4の目的から逸脱しない限り、イベントは、ハンドラ・アドレスが第1のレジスタに記憶される前に記憶し得る。
フロー305では、トランザクショナル・ハンドラがプロセッサのハードウェアに登録される。プロセッサにおいて保持されたテーブル又はスタックにハンドラへの参照を加えるなどの、ハードウェアにハンドラを登録する何れかの方法を利用することができる。一実施例では、トランザクショナル・ハンドラに関連付けられたアドレスへの参照がレジスタに入れられる。アドレスに対する参照は、何れかの既知のアドレス参照を含む。例として、参照は、プロセッサ内のハードウェア構造(すなわち、変換バッファ及び/又はページ・テーブル)によって変換することができるオフセット及び仮想アドレスを含む。上述のように、アプリケーション・コード又はトランザクショナル・ランタイム・コードが、トランザクションの開始時などのコードの本体内又はコードの初期化の際に、登録を行うようにレジスタはユーザ・アクセス可能であり得る。
フロー310では、ハンドラ・イベントが検出されたかを判定する。ハンドラ・イベントの例は、属性情報の欠如、属性情報の喪失、トランザクションの範囲内で不正な命令の実行、不正の制御移行、非チェックポイント・レジスタへのアクセス、バッファリングされたデータの喪失、トランザクションの範囲内で禁止されたメモリ・タイプへのアクセス、例外、システム・コール、及び監視されたデータの喪失を含む。この例におけるハンドラ・イベントは、同期イベント及び非同期イベントを含み得る。しかし、以下に更に詳細に説明するように、一実施例では、レーテンシに悩まされたソフトウェア・ポーリングを利用してイベントを処理する代わりに、同期イベント及び非同期イベントは、最適化されたスキッド処理を提供するためにすばやい非同期ハードウェア態様で処理し得る。図2は、ユーザレベル・コード又は特権コード及びユーザレベル・コードの組み合わせがハンドラ・イベントを規定する実施例を示す。しかし、ハンドラ・イベントは、ハードウェア、ファームウェア、又は他のソフトウェアによっても規定し得る。
イベントが検出されなかった場合、フロー315で、実行が通常通りに実行する。しかし、イベントがフロー310で検出された場合、フロー320で、特権レベル・ソフトウェアの介入なしで、実行が、トランザクショナル・ハンドラに向けられる。OS、カーネル、又は仮想マシン・モニタ・コードが実行されることなく、ハンドラに実行を向ける何れかの方法を利用し得る。図4を参照して説明した例は、プロセッサのレジスタに保持された値に基づいて実行を向ける工程を含む。
図4は、ハードウェアを利用したソフトウェア・ハンドラに制御フローを移す方法のフロー図の実施例を示す。フロー405では、トランザクショナル・ハンドラのハンドラ・アドレスは第1のレジスタに記憶され/書き込まれる。ここで、ユーザレベル・ソフトウェアは、仮想アドレス及びオフセットなどの、アドレスへの参照を書き込む。フロー410では、ユ―ザレベル・ソフトウェアは、第2のレジスタにおいて複数のハンドラ・イベントを規定する。上記例として、ユーザレベル・ソフトウェアは、ハードウェア定義されたハンドラ・イベントに対応するビット・ベクトルのビットをセットし/リセットする。ハンドラ・イベントは、同期イベント、非同期イベント、又はそれらの組み合わせであり得る。
フロー415では、複数のハンドラ・イベントのうちのハンドラ・イベントが検出される。イベント検出は、複数の機能的装置に及ぶいくつかの方法を含み得る。例えば、属性データ又は監視されたデータの喪失を検出するために、キャッシュ制御ロジックは、監視されたラインの退出を検出し、適宜、報告し得る。しかし、不正な命令の場合、不正な動作に関連付けられたオプコードをデコーダが検出することにより、イベントが潜在的に検出され、報告される。別の例として、レジスタの状態を更新するための動作は、プロセッサのパイプラインの段階で検出され、その段階に関連付けられたロジックはハンドラ・イベントを検出する。他のロジック、及びハードウェア・イベント又はハンドラ関連イベントを検出する方法を利用し得る。
イベントが検出されると、フロー420で、第3のレジスタは、複数のハンドラ・イベントのうちのハンドラ・イベントが検出されている旨を示すために、状態値に更新される。ここでは、ハードウェアがイベントを検出すると、報告ロジックはイベントをステータス・レジスタに報告する。例として、ハンドラ・イベントに対応するビットは、ハンドラ・イベントの生起を報告するために第3のレジスタに保持されたビット・ベクトルにセットされる。第3のレジスタは、ユーザレベル・ソフトウェアによって読み出し可能であるので、ハンドラは、どのハンドラ・イベントが検出されたかを判定することができる。第3のレジスタ、又は第3のレジスタに関する他のレジスタは、イベントに関連付けられ得た動作、イベントに関連付けられたレジスタ、及びイベントに関連付けられたアドレス/データ項目などの、ハンドラ・イベントに関する更なる情報を提供し得る。
ハンドラに実行を向ける前に、現在のプログラム・カウンタ値又は命令ポインタ値/アドレスが、ハンドラの実行後の現在の実行位置に戻ることを可能にするために、フロー425における第4のレジスタに書き込まれる。プロセッサ設計に基づいて、命令ポインタは、現在の命令又は次の命令を参照し得る。したがって、何れの実現形態においても、「現在の命令ポインタ」への参照は、現在の命令又は次命令であり得る現在の命令ポインタ値を含む。例として、適切な命令のアドレスを参照するための仮想アドレス及びオフセットがレジスタに記憶される。
フロー430では、実行が、第1のレジスタに保持されたハンドラ・アドレスにジャンプする。上記例から続ければ、ジャンプ・タイプの動作は、第1のレジスタに保持された仮想アドレス及びオフセットにジャンプするよう実行される。基本的には、フロー425では、現在の命令ポインタが記録され、フロー430では、現在の命令ポインタを、トランザクション・ハンドラの開始命令に対する「命令ポインタ」で置き換える。
フロー435では、トランザクショナル・ハンドラは、適宜、イベントを処理するよう実行される。上述の通り、ハンドラは、検出されたイベント、イベント・タイプ、イベントに関連付けられたアドレス若しくは動作、又は他のハンドラ関連情報を判定するための第3のレジスタなどのレジスタにアクセスすることができる。イベントが処理された後、フロー440で、実行は、第4のレジスタに保持された命令ポインタ・アドレスにもう一度、ジャンプする。上記とは逆に、ハンドラ内の命令ポインタは、次いで、先行して記録された命令ポインタで置き換える。その結果、ハンドラが呼び出された直前にもう一度、実行が向けられる。一実施例では、アボート又はコミットに応じて、ソフトウェア・ハンドラは、別の位置に実行をもう一度向けさせ得る。
本明細書及び特許請求の範囲記載のモジュールは、何れかのハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせを表す。多くの場合、別個のものとして示すモジュール境界は一般に、変動し、潜在的に重なる。例えば、第1のモジュール及び第2のモジュールは、特定の独立したハードウェア、ソフトウェア、又はファームウェアを潜在的に維持しながら、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせを共有し得る。一実施例では、ロジックという語の使用は、トランジスタ、レジスタ、又はプログラマブル論理デバイスなどの他のハードウェアなどのハードウェアを含む。しかし、別の実施例では、ロジックは、ファームウェアやマイクロコードなどの、ハードウェアと一体化されたソフトウェア又はコードも含む。
本明細書及び特許請求の範囲記載の値は、数、状態、論理状態、又は2進論理状態の何れかの既知の表現を含む。多くの場合、論理レベル、及び論理値の使用は、2進論理状態を単に表す1及び0としても表す。例えば、1は高論理レベルを表し、0は低論理レベルを表す。一実施例では、トランジスタ又はフラッシュ・セルなどの蓄電池は、単一の論理値又は複数の論理値を保持することができる。しかし、コンピュータ・システム内の値の他の表現を使用し得る。例えば、10進数10は、2進値「1010」及び16進文字「A」としても表し得る。よって、値は、コンピュータ・システムに保持することができる情報の何れかの表現を含む。
更に、状態は、値、又は値の一部分として表し得る。例として、論理0などの第2の値は非デフォルト状態を表し得る一方、論理1などの第1の値はデフォルト又は初期状態を表し得る。更に、一実施例では、リセット及びセットの語は、デフォルト、及び更新された値又は状態を表す。例えば、デフォルト値は潜在的には、高論理値(すなわち、リセット)を含む一方、更新された値は潜在的には、低論理値(すなわち、セット)を含む。値の何れかの組み合わせを、何れかの数の状態を表すために利用し得る。
上述の方法、ハードウェア、ソフトウェア、ファームウェア、又はコードの実施例は、処理エレメントによって実行可能なマシン・アクセス可能な媒体又はマシン読み取り可能な媒体上に記憶された命令又はコードによって実現し得る。マシン・アクセス可能/マシン読み取り可能な媒体は、コンピュータ又は電子システムなどのマシンによって読み取り可能な形式で情報を提供する(すなわち、記憶し、かつ/又は伝送する)何れかの機構を含む。例えば、マシン・アクセス可能な媒体は、スタティックRAM(SRAM)又はダイナミックRAM(DRAM)などのランダム・アクセス可能なメモリ(RAM)、ROM、磁気記憶媒体又は光記憶媒体、フラッシュ・メモリ・デバイス、電気記憶デバイス、光記憶デバイス、音響記憶デバイス、又は他の形式の伝搬信号(例えば、キャリア信号、赤外線信号、ディジタル信号)記憶デバイス等を含む。例えば、マシンは、伝搬信号上で伝送される対象の情報を保持することができる媒体から、キャリア波などの伝搬信号を受け取ることにより、記憶装置にアクセスし得る。
本明細書を通して、「一実施例」又は「実施例」に言及されていることは、実施例に関して説明した特定の構成、構造、又は特性が、本発明の少なくとも1つの実施例に含まれているということを意味する。よって、本明細書の随所に「一実施例」又は「実施例」の句が存在していることは、必ずしも、全て、同じ実施例を参照している訳でない。更に、特定の構成、構造、又は特性は、1つ又は複数の実施例において何れかの適切なやり方で組み合わせ得る。
上記明細書では、特定の例示的な実施例を参照して、詳細な説明を記載している。しかし、特許請求の範囲記載の本発明のより広い趣旨及び範囲から逸脱しない限り、種々の修正及び変更を行うことができるということは明らかとなるであろう。よって、本願の明細書及び図面は、限定的な意味合いでなく例証的な意味合いで解されるものとする。更に、実施例及び他の例示的な文言を上述していることは、同じ実施例又は同じ例を必ずしも表している訳でない一方、別々でかつ別個の実施例を表し得、更に、潜在的には、同じ実施例を表し得る。

Claims (38)

  1. 装置であって、
    トランザクショナル・ハンドラへの参照を保持するための、非特権ソフトウェアによって修正可能である記憶エレメントと、
    前記記憶エレメントに結合され、トランザクションを実行し、ハンドラ・イベントに応じて前記記憶エレメントに保持される対象の、前記トランザクショナル・ハンドラへの前記参照に基づいて前記トランザクションから前記トランザクショナル・ハンドラに実行を向けるための実行リソースと
    を備える装置。
  2. 請求項1記載の装置であって、前記記憶エレメントはレジスタを含み、前記トランザクショナル・ハンドラに対する前記参照は仮想アドレスを含む装置。
  3. 請求項2記載の装置であって、前記トランザクションから前記トランザクショナル・ハンドラに実行を向けるための実行リソースは、前記仮想アドレス及びオフセットに関連付けられた目標アドレスにより、ジャンプ・タイプの動作を行うための前記実行リソースを含む装置。
  4. 請求項1記載の装置であって、前記非特権ソフトウェアはトランザクショナル・ランタイム・コードを含む装置。
  5. 請求項1記載の装置であって、前記ハンドラ・イベントは非同期ハンドラ・イベントを含む装置。
  6. 請求項1記載の装置であって、前記ハンドラ・イベントは同期ハンドラ・イベントを含む装置。
  7. 請求項1記載の装置であって、前記ハンドラ・イベントは、属性情報の欠如、属性情報の喪失、トランザクションの範囲内で不正な命令の実行、非チェックポイント・レジスタへのアクセス、監視されたデータの喪失、バッファリングされたデータの喪失、トランザクションの範囲内で禁止されたメモリ・タイプへのアクセス、例外、及びシステム・コールを含む群から選択されるイベントを含む装置。
  8. 請求項1記載の装置であって、第2の記憶エレメントを更に備え、前記第2の記憶エレメントも、前記ハンドラ・イベントを含む複数のハンドラ・イベントを規定するために、前記非特権ソフトウェアによって修正可能である装置。
  9. 請求項8記載の装置であって、複数のハンドラ・イベントを規定するための前記第2の記憶エレメントは、ビット・ベクトルを保持するための前記第2の記憶エレメントを含み、前記ビット・ベクトルのビットはそれぞれ、前記複数のハンドラ・イベントのうちの1つに対応し、前記ハンドラ・イベントに対応するビットは、前記ハンドラ・イベントに応じて、前記トランザクショナル・ハンドラに実行を前記実行リソースが向けることを可能にするために前記非特権ソフトウェアによってセットされる装置。
  10. 請求項8記載の装置であって、前記非特権ソフトウェアによって読み出し可能な第3の記憶エレメントを更に備え、前記第3の記憶エレメントは、前記ハンドラ・イベントに応じて前記トランザクショナル・ハンドラへの前記参照に基づいて前記トランザクショナル・ハンドラから実行を向ける前記ハンドラ・イベントを前記実行リソースに応じて規定するためのステータス値を保持する装置。
  11. 請求項10記載の装置であって、前記トランザクションから前記トランザクショナル・ハンドラへの実行リソース・ベクトル実行前に、現在の命令ポインタへの参照により、更新される対象の第4の記憶エレメントを更に備える装置。
  12. 請求項11記載の装置であって、前記ハンドラ・イベントを処理する前記トランザクショナル・ハンドラに応じて、前記実行リソースは、前記トランザクションに実行を戻すために前記目標として前記現在の命令ポインタにより、ジャンプ・タイプの命令を実行する装置。
  13. プロセッサであって、
    トランザクショナル・ハンドラのアドレスへの参照を保持するために非特権レベル・ソフトウェアによって更新することができるレジスタと、
    前記トランザクショナル・ハンドラの前記アドレスへの前記参照に基づいてトランザクションの実行中にハンドラ・イベントに応じて特権レベル・ソフトウェアの介入なしで制御フローを前記トランザクショナル・ハンドラに移行するための実行ロジックと
    を備えるプロセッサ。
  14. 請求項13記載のプロセッサであって、前記トランザクショナル・ハンドラの前記アドレスは、前記トランザクショナル・ハンドラの開始アドレスであり、前記トランザクショナル・ハンドラの前記アドレスへの前記参照は仮想アドレスを含むプロセッサ。
  15. 請求項13記載のプロセッサであって、前記トランザクショナル・ハンドラの前記アドレスへの前記参照に基づいてトランザクションの実行中にハンドラ・イベントに応じて特権レベル・ソフトウェアの介入なしで前記制御フローを前記トランザクショナル・ハンドラに移行するための前記実行ロジックは、目標アドレスとして前記レジスタに保持された前記トランザクショナル・ハンドラの前記アドレスへの前記参照からの、前記トランザクション・ハンドラの前記アドレスを利用した第1のジャンプ・タイプ動作を実行するための実行ロジックを含むプロセッサ。
  16. 請求項15記載のプロセッサであって、戻りレジスタを更に備え、前記目標アドレスとして前記レジスタに保持された前記トランザクショナル・ハンドラの前記アドレスへの前記参照からの前記トランザクショナル・ハンドラの前記アドレスを利用した前記ジャンプ・タイプ動作を前記実行ロジックが実行する前に、前記戻りレジスタは、前記実行ロジックが前記第1のジャンプ・タイプ動作を実行する直前の現在の位置において命令ポインタ・アドレスへの参照によって更新されるプロセッサ。
  17. 請求項16記載のプロセッサであって、前記実行ロジックは、前記第1のジャンプ・タイプ動作の実行に応じて前記ハンドラ・イベントを処理するために前記トランザクション・ハンドラを更に実行し、前記ハンドラ・イベントを処理するために前記実行ロジックが前記トランザクション・ハンドラを実行した後、前記実行ロジックは、前記実行ロジックが前記第1のジャンプ・タイプ動作を実行する直前に前記現在の位置に戻るために前記戻りレジスタに保持された前記命令ポインタ・アドレスへの前記参照からの、前記命令ポインタ・アドレスを利用した第2のジャンプ・タイプ動作を実行するプロセッサ。
  18. 請求項13記載のプロセッサであって、前記ハンドラ・イベントは、属性情報の欠如、属性情報の喪失、及びバッファリングされたデータの喪失を含む群から選択された非同期イベントを含むプロセッサ。
  19. 請求項13記載のプロセッサであって、前記ハンドラ・イベントは、前記トランザクションの範囲内の不正な命令の実行、非チェックポイント・レジスタに対するアクセス動作、不正なメモリ・タイプ、例外、及びシステム・コールを含む群から選択される同期イベントを含むプロセッサ。
  20. 請求項13記載のプロセッサであって、非特権レベル・ソフトウェアは、オペレーティング・システム・ソフトウェア、カーネル・ソフトウェア、及び仮想マシン・モニタ(VMM)ソフトウェアを含む群から選択されるソフトウェアを含むプロセッサ。
  21. 装置であって、
    複数のトランザクショナル・ハンドラ・イベントを規定するためにユーザレベル・ソフトウェアによって更新することができる記憶エレメントと、
    前記複数のトランザクショナル・ハンドラ・イベントのうちのトランザクショナル・ハンドラ・イベントの検出に応じてトランザクションからトランザクショナル・ハンドラへ実行を向けるための実行ロジックと
    を備える装置。
  22. 請求項21記載の装置であって、実行リソースは、オペレーティング・システム(OS)介入なしで、前記トランザクションから前記トランザクショナル・ハンドラへ実行を向ける装置。
  23. 請求項22記載の装置であって、非特権ソフトウェアは、トランザクショナル・ランタイム・ソフトウェア、前記トランザクションを含むアプリケーション・コード、及び仮想マシン・コードを含む群から選択される装置。
  24. 請求項21記載の装置であって、前記複数のイベントのうちの第1のトランザクショナル・ハンドラ・イベントは非同期ハンドラ・イベントを含み、前記複数のイベントのうちの第2のトランザクショナル・ハンドラ・イベントは同期ハンドラ・イベントを含む装置。
  25. 請求項21記載の装置であって、前記複数のイベントのうちの第1のトランザクショナル・ハンドラ・イベントは非同期ハンドラ・イベントを含み、前記複数のイベントのうちの第2のトランザクショナル・ハンドラ・イベントは同期ハンドラ・イベントを含む装置。
  26. 請求項21記載の装置であって、前記複数のハンドラ・イベントはそれぞれ、属性情報の欠如、属性情報の喪失、トランザクションの範囲内で不正な命令の実行、非チェックポイント・レジスタへのアクセス、及び監視されたデータの喪失を含む群から個々に選択される装置。
  27. システムであって、
    トランザクショナル・ハンドラへの参照を保持するためのユーザ・アドレス指定可能なレジスタ、第2のレジスタ、及び第1のレジスタと前記第2のレジスタに結合された実行ロジックを含むプロセッサであって、トランザクションの実行中のハンドラ・イベントに応じて、前記実行ロジックは、前記トランザクション内の現在の命令位置への参照により、前記第2のレジスタを更新し、前記ハンドラ・イベントを処理するために、前記ユーザ・アドレス指定可能なレジスタに保持された前記トランザクショナル・ハンドラへの前記参照に基づいて前記トランザクショナル・ハンドラに制御フローを向け、前記ハンドラ・イベントを処理するための前記トランザクション・ハンドラの実行後に、前記第2のレジスタに保持された前記現在の命令位置への前記参照に基づいて前記現在の命令の位置にもう一度、制御のフローを向けるプロセッサと、
    前記プロセッサに結合された入出力(IO)デバイスと
    を備えるシステム。
  28. 請求項27記載のシステムであって、前記トランザクショナル・ハンドラへの前記参照は、物理アドレスに変換されると、前記トランザクショナル・ハンドラの開始物理アドレスを参照するためのオフセット及び仮想アドレスを含むシステム。
  29. 請求項28記載のシステムであって、前記トランザクションを含むユーザコードは、実行されると、前記トランザクションの実行前に前記オフセット及び前記仮想アドレスを前記ユーザ・アドレス指定可能なレジスタにロードするシステム。
  30. 請求項27記載のシステムであって、前記トランザクション内の前記現在の命令位置への前記参照は、前記現在の命令位置に関連付けられた命令ポインタ・アドレスへの参照を含み、前記第2のレジスタに保持された命令ポインタ・アドレスへの前記参照に基づいて前記現在の命令位置にもう一度制御フローを向けるための前記実行ロジックは、戻り目標アドレスとしての前記命令ポインタ・アドレスにより、戻りジャンプ動作を実行するための前記実行ロジックを含むシステム。
  31. 請求項30記載のシステムであって、前記ハンドラ・イベントを処理するために前記ユーザ・アドレス指定可能なレジスタに保持された前記トランザクショナル・ハンドラへの前記参照に基づいて前記トランザクショナル・ハンドラに制御フローを向けるための前記実行ロジックは、目標アドレスとして前記ユーザ・アドレス指定可能なレジスタに保持された前記トランザクショナル・ハンドラへの前記参照に関連付けられた目標アドレスにより、ジャンプ動作を実行するための前記実行ロジックを備えるシステム。
  32. 方法であって、
    プロセッサのハードウェア内の非特権レベル・ソフトウェアでトランザクショナル・ハンドラを登録する工程と、
    前記プロセッサによるトランザクションの実行中にハンドラ・イベントを検出する工程と、
    特権レベル・ソフトウェアの介入なしでハードウェアにおける前記トランザクショナル・ハンドラの実行に、前記トランザクションの実行から制御フローを向ける工程と、
    前記トランザクショナル・ハンドラにより、前記ハンドラ・イベントを処理した後、前記特権レベル・ソフトウェアの介入なしで前記トランザクションの実行に前記制御フローを戻す工程と
    を含む方法。
  33. 請求項32記載の方法であって、プロセッサのハードウェア内の非特権化レベル・ソフトウェアでトランザクショナル・ハンドラを登録する工程は、前記トランザクショナル・ハンドラに関連付けられたアドレスの表現を第1のレジスタにロードする工程を含む方法。
  34. 請求項33記載の方法であって、前記トランザクションの実行から前記トランザクショナル・ハンドラの実行に制御フローを向ける前に命令ポインタ・アドレスを第2のレジスタに記憶する工程を更に含む方法。
  35. 請求項34記載の方法であって、特権レベル・ソフトウェアの介入なしで、ハードウェア内の前記トランザクショナル・ハンドラの実行に前記トランザクションの実行から制御フローを向ける工程は、前記トランザクショナル・ハンドラの実行のために前記特権レベル・ソフトウェアの介入なしで前記トランザクショナル・ハンドラに関連付けられた前記アドレスへ実行をジャンプさせる工程を含む方法。
  36. 請求項35記載の方法であって、前記トランザクショナル・ハンドラにより、前記ハンドラ・イベントを処理した後、前記特権レベル・ソフトウェアの介入なしで前記トランザクションの実行に前記制御フローを戻す工程は、前記トランザクショナル・ハンドラにより、前記ハンドラ・イベントを処理した後、前記特権レベル・ソフトウェアの介入なしで、前記第2のレジスタに記憶された前記命令ポインタ・アドレスへ実行をジャンプさせる工程を含む方法。
  37. 請求項34記載の方法であって、前記ハンドラ・イベントを検出する前に第3のレジスタ内の前記非特権レベル・ソフトウェアにより、前記ハンドラ・イベントを特定する工程を更に含む方法。
  38. 請求項37記載の方法であって、前記ハンドラ・イベントの検出に応じて前記トランザクションの実行から前記トランザクショナル・ハードウェアの実行に前記制御フローを向ける前に前記ハンドラ・イベントの表現を保持するために第4のレジスタを更新する工程を更に含む方法。
JP2011536630A 2008-12-30 2009-12-15 トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録 Expired - Fee Related JP5650123B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/346,518 2008-12-30
US12/346,518 US9785462B2 (en) 2008-12-30 2008-12-30 Registering a user-handler in hardware for transactional memory event handling
PCT/US2009/068081 WO2010077872A2 (en) 2008-12-30 2009-12-15 Registering a user-handler in hardware for transactional memory event handling

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014003360A Division JP5944417B2 (ja) 2008-12-30 2014-01-10 トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録

Publications (2)

Publication Number Publication Date
JP2012509529A true JP2012509529A (ja) 2012-04-19
JP5650123B2 JP5650123B2 (ja) 2015-01-07

Family

ID=42286511

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011536630A Expired - Fee Related JP5650123B2 (ja) 2008-12-30 2009-12-15 トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録
JP2014003360A Expired - Fee Related JP5944417B2 (ja) 2008-12-30 2014-01-10 トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2014003360A Expired - Fee Related JP5944417B2 (ja) 2008-12-30 2014-01-10 トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録

Country Status (7)

Country Link
US (1) US9785462B2 (ja)
JP (2) JP5650123B2 (ja)
KR (1) KR101291016B1 (ja)
CN (1) CN101950259B (ja)
BR (1) BRPI0920789A2 (ja)
TW (1) TWI476595B (ja)
WO (1) WO2010077872A2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2891984A2 (en) 2014-01-06 2015-07-08 Fujitsu Limited Transaction abort method in a multi-core CPU
JP2015523654A (ja) * 2012-06-15 2015-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 制約付きトランザクションの実行
JP2015526789A (ja) * 2012-06-15 2015-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション実行におけるプログラム割り込みフィルタ処理
JP2015526788A (ja) * 2012-06-15 2015-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション診断ブロック

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799582B2 (en) 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US9110808B2 (en) * 2009-12-30 2015-08-18 International Business Machines Corporation Formation of an exclusive ownership coherence state in a lower level cache upon replacement from an upper level cache of a cache line in a private shared owner state
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
US8606907B1 (en) 2011-07-20 2013-12-10 Google Inc. Multi-tiered system for receiving and reporting web site traffic data
US8606825B1 (en) 2011-07-20 2013-12-10 Google Inc. Query response streams based on dynamic query library
US8560685B1 (en) 2011-07-20 2013-10-15 Google Inc. Probabilistic data storage owner election and replication protocol
US10387324B2 (en) 2011-12-08 2019-08-20 Intel Corporation Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution
WO2013089767A1 (en) * 2011-12-16 2013-06-20 Intel Corporation Method and system using exceptions for code specialization in a computer architecture that supports transactions
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9619345B2 (en) 2012-09-13 2017-04-11 International Business Machines Corporation Apparatus for determining failure context in hardware transactional memories
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
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
US9411739B2 (en) * 2012-11-30 2016-08-09 Intel Corporation System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators
US9424198B2 (en) * 2012-11-30 2016-08-23 Intel Corporation Method, system and apparatus including logic to manage multiple memories as a unified exclusive memory
US10061609B2 (en) 2013-06-26 2018-08-28 Intel Corporation Method and system using exceptions for code specialization in a computer architecture that supports transactions
US9916161B2 (en) * 2015-06-25 2018-03-13 Intel Corporation Instruction and logic for tracking fetch performance bottlenecks
US9733689B2 (en) * 2015-06-27 2017-08-15 Intel Corporation Hardware apparatuses and methods to perform transactional power management
WO2017012667A1 (en) * 2015-07-22 2017-01-26 Huawei Technologies Co., Ltd. Hardware transactional memory in non volatile memory with log and no lock
US10037147B2 (en) * 2015-12-14 2018-07-31 International Business Machines Corporation Sharing files in a multisystem environment
US10324728B2 (en) 2015-12-17 2019-06-18 International Business Machines Corporation Lightweight interrupts for condition checking
US10318295B2 (en) * 2015-12-22 2019-06-11 Intel Corporation Transaction end plus commit to persistence instructions, processors, methods, and systems
US10552212B2 (en) * 2016-11-28 2020-02-04 Arm Limited Data processing
CN108345471B (zh) * 2017-05-08 2019-10-25 清华大学 检测装置处理异步事件的方法及检测装置
US10684896B2 (en) 2017-02-20 2020-06-16 Tsinghua University Method for processing asynchronous event by checking device and checking device
US10783011B2 (en) 2017-09-21 2020-09-22 Qualcomm Incorporated Deadlock free resource management in block based computing architectures
US10990369B2 (en) * 2018-04-30 2021-04-27 EMC IP Holding Company LLC Repurposing serverless application copies
US11615023B2 (en) 2018-09-17 2023-03-28 Telefonaktiebolaget Lm Ericsson (Publ) Bit register in shared memory indicating the processor and the software handlers
CN110333935B (zh) * 2019-06-05 2022-12-02 创新先进技术有限公司 事务请求处理方法及装置
CN113227975B (zh) * 2021-03-31 2023-03-17 华为技术有限公司 一种同步方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007002550A2 (en) * 2005-06-23 2007-01-04 Intel Corporation Primitives to enhance thread-level speculation
US20070239942A1 (en) * 2006-03-30 2007-10-11 Ravi Rajwar Transactional memory virtualization
WO2007115003A1 (en) * 2006-03-30 2007-10-11 Intel Corporation Transactional memory in out-of-order processors
JP2007531167A (ja) * 2004-03-31 2007-11-01 インテル コーポレイション ユーザーレベルのマルチスレッドを提供する方法およびシステム
JP2008525921A (ja) * 2004-12-30 2008-07-17 インテル コーポレイション オペレーティング・システム介入なしにos隔離シーケンサー上でスレッドをスケジューリングする機構

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8728494D0 (en) 1987-12-05 1988-01-13 Int Computers Ltd Multi-cache data storage system
JP2651037B2 (ja) 1990-04-23 1997-09-10 株式会社日立製作所 アドレスバス制御装置
US6216200B1 (en) 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
JP3546694B2 (ja) 1998-03-31 2004-07-28 日本電気株式会社 マルチスレッド計算機システム及びマルチスレッド実行制御方法
US6526481B1 (en) 1998-12-17 2003-02-25 Massachusetts Institute Of Technology Adaptive cache coherence protocols
US6272602B1 (en) 1999-03-08 2001-08-07 Sun Microsystems, Inc. Multiprocessing system employing pending tags to maintain cache coherence
US6549996B1 (en) 1999-07-02 2003-04-15 Oracle Corporation Scalable multiple address space server
US6490668B2 (en) 2000-12-15 2002-12-03 Hewlett-Packard Company System and method for dynamically moving checksums to different memory locations
US7035963B2 (en) 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US6499085B2 (en) 2000-12-29 2002-12-24 Intel Corporation Method and system for servicing cache line in response to partial cache line request
US20030005219A1 (en) 2001-06-29 2003-01-02 Royer Robert J. Partitioning cache metadata state
US7272622B2 (en) 2001-10-29 2007-09-18 Intel Corporation Method and apparatus for parallel shift right merge of data
US7565687B2 (en) 2002-02-08 2009-07-21 International Business Machines Corporation Transmission control system, server, terminal station, transmission control method, program and storage medium
US7032125B2 (en) 2002-04-25 2006-04-18 Lsi Logic Corporation Method for loosely coupling metadata and data in a storage array
US7003631B2 (en) 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency
US6944796B2 (en) * 2002-06-27 2005-09-13 Intel Corporation Method and system to implement a system event log for system manageability
US7062610B2 (en) 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
US20040111593A1 (en) 2002-12-05 2004-06-10 International Business Machines Corporation Interrupt handler prediction method and system
FR2859307A1 (fr) 2003-08-27 2005-03-04 St Microelectronics Sa Memoire cache a lecture asynchrone et dispositif de controle de l'acces a une memoire de donnees comprenant une telle memoire cache
US20050050305A1 (en) * 2003-08-28 2005-03-03 Kissell Kevin D. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7587615B2 (en) 2003-09-12 2009-09-08 International Business Machines Corporation Utilizing hardware transactional approach to execute code after initially utilizing software locking by employing pseudo-transactions
US20050086446A1 (en) * 2003-10-04 2005-04-21 Mckenney Paul E. Utilizing software locking approach to execute code upon failure of hardware transactional approach
US20050091459A1 (en) 2003-10-23 2005-04-28 Nhon Quach Flexible mechanism for enforcing coherency among caching structures
US7237131B2 (en) 2003-12-30 2007-06-26 Intel Corporation Transaction-based power management in a computer system
US7177987B2 (en) 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
US7395374B2 (en) 2004-01-20 2008-07-01 Hewlett-Packard Company, L.P. System and method for conflict responses in a cache coherency protocol with ordering point migration
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
PT1735983E (pt) 2004-04-14 2008-05-15 Telecom Italia Spa Método e sistema para gerir distribuição de conteúdos em redes de comunicação
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7395382B1 (en) * 2004-08-10 2008-07-01 Sun Microsystems, Inc. Hybrid software/hardware transactional memory
JP4431022B2 (ja) 2004-10-18 2010-03-10 株式会社日立製作所 コンピュータシステム及びその制御方法
US7337280B2 (en) 2005-02-10 2008-02-26 International Business Machines Corporation Data processing system and method for efficient L3 cache directory management
US7627784B1 (en) * 2005-04-06 2009-12-01 Altera Corporation Modular processor debug core connection for programmable chip systems
KR100704037B1 (ko) 2005-04-15 2007-04-04 삼성전자주식회사 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법
US20060236039A1 (en) 2005-04-19 2006-10-19 International Business Machines Corporation Method and apparatus for synchronizing shared data between components in a group
US7490199B2 (en) 2005-05-09 2009-02-10 Noam Camiel System and method for safe removal of a removable device from a digital appliance
US7350034B2 (en) * 2005-06-20 2008-03-25 International Business Machines Corporation Architecture support of best-effort atomic transactions for multiprocessor systems
US7533215B2 (en) 2005-09-15 2009-05-12 Intel Corporation Distributed and packed metadata structure for disk cache
US8001538B2 (en) 2005-12-07 2011-08-16 Microsoft Corporation Software accessible cache metadata
US8225297B2 (en) 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
US20070300238A1 (en) 2006-06-21 2007-12-27 Leonidas Kontothanassis Adapting software programs to operate in software transactional memory environments
US20080005504A1 (en) 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US9798590B2 (en) * 2006-09-07 2017-10-24 Intel Corporation Post-retire scheme for tracking tentative accesses during transactional execution
US7949794B2 (en) 2006-11-02 2011-05-24 Intel Corporation PCI express enhancements and extensions
US7783805B2 (en) 2006-11-29 2010-08-24 Cisco Technology, Inc. Interlocking input/outputs on a virtual logic unit number
US7669040B2 (en) * 2006-12-15 2010-02-23 Sun Microsystems, Inc. Method and apparatus for executing a long transaction
US7937535B2 (en) 2007-02-22 2011-05-03 Arm Limited Managing cache coherency in a data processing apparatus
US7917701B2 (en) 2007-03-12 2011-03-29 Arm Limited Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation
US8751859B2 (en) 2007-05-10 2014-06-10 International Business Machines Corporation Monitoring lost data in a storage system
US9009452B2 (en) * 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US8095741B2 (en) 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory computing system with support for chained transactions
US20080307169A1 (en) 2007-06-06 2008-12-11 Duane Arlyn Averill Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory
US9292436B2 (en) 2007-06-25 2016-03-22 Sonics, Inc. Various methods and apparatus to support transactions whose data address sequence within that transaction crosses an interleaved channel address boundary
US9280397B2 (en) 2007-06-27 2016-03-08 Intel Corporation Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
US8195832B2 (en) 2007-12-12 2012-06-05 Alcatel Lucent Facilitating management of layer 2 hardware address table based on packet priority information
US8078807B2 (en) 2007-12-27 2011-12-13 Intel Corporation Accelerating software lookups by using buffered or ephemeral stores
US8108619B2 (en) 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US20100122073A1 (en) 2008-11-10 2010-05-13 Ravi Narayanaswamy Handling exceptions in software transactional memory systems
US8555016B2 (en) 2008-12-17 2013-10-08 Intel Corporation Unified optimistic and pessimistic concurrency control for a software transactional memory (STM) system
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8627017B2 (en) 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8627014B2 (en) 2008-12-30 2014-01-07 Intel Corporation Memory model for hardware attributes within a transactional memory system
US8799582B2 (en) 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
US8806101B2 (en) 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8095824B2 (en) 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007531167A (ja) * 2004-03-31 2007-11-01 インテル コーポレイション ユーザーレベルのマルチスレッドを提供する方法およびシステム
JP2008525921A (ja) * 2004-12-30 2008-07-17 インテル コーポレイション オペレーティング・システム介入なしにos隔離シーケンサー上でスレッドをスケジューリングする機構
WO2007002550A2 (en) * 2005-06-23 2007-01-04 Intel Corporation Primitives to enhance thread-level speculation
US20070239942A1 (en) * 2006-03-30 2007-10-11 Ravi Rajwar Transactional memory virtualization
WO2007115003A1 (en) * 2006-03-30 2007-10-11 Intel Corporation Transactional memory in out-of-order processors

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015523654A (ja) * 2012-06-15 2015-08-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 制約付きトランザクションの実行
JP2015526789A (ja) * 2012-06-15 2015-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション実行におけるプログラム割り込みフィルタ処理
JP2015526788A (ja) * 2012-06-15 2015-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トランザクション診断ブロック
EP2891984A2 (en) 2014-01-06 2015-07-08 Fujitsu Limited Transaction abort method in a multi-core CPU
US9535839B2 (en) 2014-01-06 2017-01-03 Fujitsu Limited Arithmetic processing device, method of controlling arithmetic processing device, and information processing device
EP3131018A1 (en) 2014-01-06 2017-02-15 Fujitsu Limited Transaction abort method in a multi-core cpu

Also Published As

Publication number Publication date
JP5944417B2 (ja) 2016-07-05
US9785462B2 (en) 2017-10-10
US20100169894A1 (en) 2010-07-01
WO2010077872A2 (en) 2010-07-08
KR101291016B1 (ko) 2013-07-30
JP5650123B2 (ja) 2015-01-07
CN101950259B (zh) 2014-08-20
WO2010077872A3 (en) 2010-09-23
TWI476595B (zh) 2015-03-11
BRPI0920789A2 (pt) 2015-12-22
JP2014089752A (ja) 2014-05-15
KR20110050724A (ko) 2011-05-16
CN101950259A (zh) 2011-01-19
TW201037524A (en) 2010-10-16

Similar Documents

Publication Publication Date Title
JP5944417B2 (ja) トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録
JP6342970B2 (ja) トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
JP5860450B2 (ja) ローカルにバッファリングされたデータをサポートするためのキャッシュコヒーレンスプロトコルの拡張
JP5608738B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
JP5416223B2 (ja) トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル
US8612950B2 (en) Dynamic optimization for removal of strong atomicity barriers
US20100122073A1 (en) Handling exceptions in software transactional memory systems
JP6023765B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
JP6318440B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130115

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130410

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130417

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130510

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130517

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130612

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130619

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130716

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130910

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140110

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140204

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140430

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140509

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140530

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140606

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140701

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140708

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140801

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141014

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141112

R150 Certificate of patent or registration of utility model

Ref document number: 5650123

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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