JP6306261B2 - トランザクションメモリプログラムのためのソフトウェアリプレイヤ - Google Patents

トランザクションメモリプログラムのためのソフトウェアリプレイヤ Download PDF

Info

Publication number
JP6306261B2
JP6306261B2 JP2017501141A JP2017501141A JP6306261B2 JP 6306261 B2 JP6306261 B2 JP 6306261B2 JP 2017501141 A JP2017501141 A JP 2017501141A JP 2017501141 A JP2017501141 A JP 2017501141A JP 6306261 B2 JP6306261 B2 JP 6306261B2
Authority
JP
Japan
Prior art keywords
program
instructions
transaction
memory
htm
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017501141A
Other languages
English (en)
Other versions
JP2017510014A (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 JP2017510014A publication Critical patent/JP2017510014A/ja
Application granted granted Critical
Publication of JP6306261B2 publication Critical patent/JP6306261B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Multimedia (AREA)

Description

本発明は、トランザクションメモリに関する。
ハードウェアトランザクションメモリ(hardware transactional memory、HTM)システムは、近い将来において幅広いスケールでの適合のために利用可能であり得る。HTMシステムは、テストされて安定なソフトウェアトランザクションメモリシステムと組み合わされて、プログラム可能性とパフォーマンスの観点で、ロックベース(lock−base)の並行(parallel)プログラミングよりも魅力的な代替案になり得るものである。
ハイブリッドトランザクションメモリ(TM)システム(”HyTM”)は、HTMとソフトウェアトランザクションメモリ(STM)の両方を利用するシステムである。従来のデバッキング技術、ブレイクポイント(breakpoint)およびアドホック(ad hoc)I/Oデバッキングといったものは、HyTMに対して適用されない。従来のデバッキング技術は、デバッキング技術が、ハードウェアトランザクションについてイリーガル(illegal)な所定のインストラクション(例えば、インタラプト、I/O、コンテクストスイッチ、等)を使用する場合に、ハードウェアトランザクションをアボート(abort)させ得るからである。従って、HyTMシステムについて生じる疑問は、いくつかのハードウェアトランザクションを実行するトランザクションメモリプログラムをどのようにデバッグするかである。
図1は、本発明の実施例に従った、レコードとリプレイ(RnR)システムのブロックダイヤグラムである。 図2は、本発明の実施例に従った、リプレイヤ/トランザクションデバッガのブロックダイヤグラムである。 図3は、本発明の一つの実施例に従った、トランザクションプログラムのデバッキングを促進するためのフローチャートである。 図4は、本発明の一つの実施例に従った、プロセッサコアのブロックダイヤグラムである。 図5は、本発明の一つの実施例に従った、システムのブロックダイヤグラムである。
レコードとリプレイ(record−and−replay、RnR)システムが、ここにおいて提示される。RnRソフトウェアリプレイヤ(software replyer)を含むものである。RnRシステムは、HTMを使用するHyTMシステム(ここにおいては「HyTM」も同様)のためのデバッキング(debugging)支援を提供し得る。ここにおいて提示されるレコードとリプレイシステム(RnR system)においては、ハードウェアシステムによって、トランザクションメモリ(TM)プログラムが実行され、かつ、記録(record)される。そして、次に、根底にある(underlying)ハードウェアのエミュレーションとHyTMシステムのソフトウェア部分の実施との組み合わせを使用するソフトウェアシステムによってリプレイされる。
ハードウェアベースのレコーディング(recording)を使用して、ここにおいて提示されるRnRシステムは、TMプログラムのコンテンションシグネチャ(contention signature)をそのままにしておき、コレクトネス(correctness)TMバグ(例えば、プログラミングエラー)とパフォーマンスTMバグ(例えば、効率関連の問題)が記録され得るようにしている。ソフトウェアベースのリプレイを使用することで、記録されたTMプログラムは、役に立つコレクトネスとパフォーマンスのデバッキング分析を提供するように、STMとHTMのエミュレーションとの組み合わせを使用してリプレイされ得る。
ここにおいて提示されるRnRトランザクションデバッガ(TDB)システムは、TMプログラムの実行に対する無視できるほどの摂動(perturbation)を伴って、TMプログラムを正確に記録し、リプレイすることができる。ここにおいて提示される方法および装置は、バグのある(buggy)TMプログラムのコンテンションシグネチャを変更しない。RnR TDBシステムは、トランザクションのアボートの正確なロケーション(location)と原因を取得(capture)することができ、実行失敗(failure)の原因を判断するために、プログラマが、TMプログラムを分析できるようにし得る。
図1は、本発明の実施例に従った、RnRシステム100のブロックダイヤグラムである。システム100は、ハードウェアレコーディングロジック102、ストレージ106、および、ソフトウェアトランザクションデバッガ(TDB)リプレイソフトウェア110と仮想マシン編成(instrumentation)ツール112とを含むソフトウェアリプレイヤ108、を含んでいる。
オペレーションにおいて、(ハードウェア)レコーディングロジック102は、TMプログラム104の実行の最中に生じるイベントを記録し得る。イベントは、これらに限定されるわけではないが、トランザクション開始、トランザクション終了、および、トランザクションアボート、を含んでよい。イベントは、記録されたログ(log)ファイルのように、ストレージの中に記録され得る。
ソフトウェアリプレイヤ108は、プログラムレコーディングにおいて使用されるハードウェアトランザクションメモリ(HTM)を含むレコーディングロジック102をエミュレート(emulate)するように構成されてよい。仮想マシン編成ツール112は、アプリケーションバイナリコードを測定(instrument)し、リプレイするように構成されてよい。ソフトウェアリプレイヤ108は、TDプログラム104をリプレイし、かつ、結果を分析し得る。例えば、コレクトネスエラーおよびパフォーマンスエラーを特定することである。
TMシステムは、典型的には、フルエスケープアクション(escape action)をサポートしない、そして、従って、ハードウェアトランザクションのコンテクスト(context)の中で実行されるインストラクションは、ハードウェアトランザクションの実行の一部になり得る。リプレイヤ108が、ハードウェアレコーディングロジック102(例えば、HTMを含んでいるもの)を使用するとすれば、プログラムスレッド(program thread)の順序を調整するための全ての管理オペレーションが、ハードウェアトランザクションの中に現れるだろうし、そして、オリジナルに記録されていたプログラムのビヘイビア(behavior)の変更を結果として生じるだろう。つまり、ハードウェアトランザクションは、ハードウェアトランザクションの実行ビヘイビアをおそらく変えるであろう追加のインストラクションを含むであろう。
加えて、たとえエスケープアクション(escape action)がサポートされていたとしても、コンテクストスイッチおよび入力/出力(I/O)オペレーションといった、いくつかのオペレーションは、ハードウェアトランザクションに対して未だにイリーガルなものであり得る。ハードウェアトランザクションの中でそうしたイリーガルオペレーションが実行されるとすれば、ハードウェアトランザクションは直ちにアボートされてよいだろう。コンテクストスイッチング、インタラプト、および、I/Oコマンドは、記録されたプログラムのリプレイにおいて考慮され得るオペレーションである。例えば、スレッド間の共有メモリインターリーブは、別のスレッド(例えば、コンテクストスイッチング)の実行を再開(resume)するために一つのスレッドの実行を停止(stall)することによって、典型的にはリプレイにおいて管理される。
正確なエラーコードを用いたトランザクションアボートの再生産(reproduction)が、HTMエミュレーションの中に含まれている。そうしたエラーコードはコンテンションマネージャ(contention manager)によって使用され得るからであり、それぞれのエラーコードに対して異なるコンテンション管理のビヘイビアを結果として生じている。
トランザクションコミット再生産は、また、上述のように、トランザクションアボートに関して同様な理由でエミュレートされてもよい。ソフトウェアフォールバック(fallback)は、典型的には、あらゆるベストエフォート(best−effort)HTMについて存在する。従って、ソフトウェアフォールバックは、HTMがフォワードプログレス(forward progress)をなし得るようにする。このように、記録されたHTMベースのプログラムをリプレイするために、ソフトウェアトランザクションメモリ(STM)は、プログラム実行の記録、および、記録されたプログラムのリプレイの両方を行うために使用されてよい。レコーディングで使用されたSTMがリプレイにおいて使用される限り、プログラムは正しくリプレイすることができる。
図2は、本発明の実施例に従った、リプレイヤ/トランザクションデバッガシステム200のブロックダイヤグラムである。システム200のコントロールは、リプレイヤエンジン202、非トランザクション実行(non−toransactional execution)204、トランザクション実行206、STM実施208、HTMエミュレーション210、ポストトランザクションインストラクションハンドラ212、および、HyTMコンテンションマネージャ216を含んでいる。
(チャンク(chunk)ベースの)リプレイヤエンジン202は、TMプログラムをリプレイし、そして、それぞれのインストラクションが、トランザクションインストラクションであるか、または、非トランザクションインストラクションであるか判断する。インストラクションが非トランザクションであると判断された場合に、204においてインストラクションがリプレイされる(例えば、ノーマル(normal)実行)。非トランザクション実行は、コレクトネスデバッキングのために強力なSTM分離(isolation)を用いて実施されてよい。ノーマルリプレイ実行204がアボートされたインストラクションを検出した場合に、インストラクションは、HyTMコンテンションマネージャ216に対して送付され得る。
リプレイエンジン202においてリプレイされているインストラクションがトランザクションインストラクションである場合に、インストラクションは、トランザクション実行206へ送付される。インストラクションが、ソフトウェアトランザクションに関連するトランザクションインストラクションである場合には、STM(STM実施)208を使用してリプレイが実行される。トランザクションインストラクションがハードウェアトランザクションに関連する場合に、インストラクションはHTMエミュレーション210へ送付される。ポストトランザクションインストラクションハンドラ212は、発生したコンフリクト(conflict)に関する情報を決定することができ、そして、コンフリクトを分析して、それぞれのコンフリクトの原因を決定するための精密コンフリクト検出コンポーネント214を含んでいる。インストラクションが、アボートまたはコミットされる場合に、インストラクションは、解決のためにハイブリッドトランザクションメモリ(HyTM)コンテンションマネージャ216へ送付され得る。
ハイブリッドトランザクションメモリコンテンションマネージャ(HyTM CM)216は、コミットおよびアボートの再生産が記録されたプログラムと同一であるように、プログラムレコーディングにおいて使用されたHyTM CMをエミュレーションする。HyTM CMがレプリカ(replicate)されない場合には、そうして、リプレイされるプログラムが、出力において、記録されたプログラムと同一でない可能性が存在する。HyTM CM216は、どのトランザクションがアボートされ、かつ、どのトランザクションがコミットされるか、および、ハードウェアトランザクションまたはソフトウェアトランザクションが、トランザクションアボートの際に、いつ再実行(re−execute)されるべきか、を決定する。HyTM CM216がプログラムレコーディングにおいて使用されたHyTM CM216をエミュレーションしていない場合には、次に、トランザクションアボートおよびコミットのオーダー(order)の違反となり得る。最終的にリプレイされた状態が最初に記録されたものとは異なる可能性を結果として生じ得るものである。
HTMのために、コンテンション管理のアボート意思決定部分が、根底にあるハードウェアによって自動的に提供されている。従って、HTMインストラクションのアボート意思決定は、HTMエミュレーション206によって操作される。HyTM CMの残りの部分は、ソフトウェアにおいて実施されてよく、そして、STM実施208の範囲の外側であってよい。HyTM CM216がダイナミックコンテンション管理ストラテジ(strategy)をサポートしているか否かに応じたものであり、その場合に、STMコンテンションマネージャは、補助ライブラリ(auxiliary library)において見い出され得る。少なくともこの理由のため、HyTM CM216は、STM実施208から分離したコンポーネントとして示されている。
リプレイヤエンジン202は、インストラクションのチャンクの中でインストラクションをリプレイする。チャンクは、認識可能な開始マーカ(beginning marker)と認識可能な終了マーカ(end marker)によって定められる。例えば、チャンクは、トランザクションの開始から始まり、そして、トランザクションの終わり、もしくは、コンフリクトが発生したとき、または、サポートされていないインストラクションが発見されたとき、等において終了してよい。リプレイヤエンジン202は、同時に実行しているスレッドに係る共有メモリのアクセス間のカジュアルな順序(casual ordering)がリプレイにおいて維持されるように、インストラクションをリプレイするものであり、そして、全てのタイプの共有メモリ同期化(synchronization)メカニズムを含んでいる。ロックを取得すること、および、リリースすること、アトミック(atomic)インストラクションを実行し得ること、等を含むものである。加えて、リプレイエンジン202は、非決定性(nondeterministic)の入力システムイベント(OSレベル)が、それらが記録されたように正しくリプレイするものである。
リプレイヤエンジン202は、チャンクベースのレコーディングのためチャンクベースであってよい。チャンクベースのリプレイなしでは、記録されたプログラムは正しくリプレイされないであろう。チャンクベースのリプレイヤエンジン202は、記録された非決定性のメモリイベントに対するパーサ(parser)、記録された非決定性の入力イベントに対するパーサ、および、インストラクション毎のリプレイエンジン、を含んでよい。リプレイヤエンジン202は、非HTMインストラクションのエミュレーションを実行し、そして、また、マクロインストラクションのアトミック性違反(atimicity violation)もリプレイし得る。
ポストトランザクションインストラクションハンドラ210は、リプレイされるトランザクションのための精密コンフリクト検出コンポーネント214を含んでいる。ハードウェアとソフトウェアトランザクション間での精密なコンフリクト検出は、ハードウェアとソフトウェアトランザクションについてプログラムのトランザクション分離セマンティック(semantic)を最初に記録されたように保持しながら、実行されるものである。ここにおいて説明される精密コンフリクト検出は、(チャンクベースの)リプレイヤエンジン202によって、トランザクションコンフリクトのソース(source)を追跡するために使用され、そして、プログラムのセマンティックまたはビヘイビアを、最初に記録されたように、変更しない。
精密コンフリクト検出は、以降の実施例において実施されてよい。ソフトウェアトランザクションがハードウェアトランザクションによってアボートされることを仮定しており、ソフトウェアトランザクションとハードウェアトランザクションとの間のコンフリクトの特定に関して精度を欠くことがある。STMは、ソフトウェアトランザクションをアボートさせるハードウェアトランザクションの直接的な知識を有しないからである。ソフトウェアトランザクションとハードウェアトランザクションとの間の精密コンフリクト検出を(例えば、コンフリクト特定の目的だけのために)含むことによって、システム200は、コンフリクトの正確なロケーションを(プログラムの中で)特定することができ、例えば、そうでなければ発生し得るメモリコンフリクトに対する誤検知(false positive)または推測ロケーションを取り除くことによって、デバッキングの品質を改善することができる。
非トランザクションリプレイ実行204は、強力なSTM分離を含んでいる。RnRシステム200を用いて達成可能な特性の一つは、リプレイされたソフトウェアトランザクションに対する強力なSTM分離のシミュレーションである。根底にあるRnRレコーディングハードウェア、インターリーブされた共有メモリアクセスを順序付け(order)することができるもの、のおかげでこのことは当初から可能である。リプレイの最中に、共有メモリインターリーブは、弱く分離されたソフトウェアトランザクション間のコレクトネスバグを特定するために使用され得る。ソフトウェアトランザクションは、メモリをアクセスし、かつ、トランザクションの外側で同時にアクセスされ得るものである。強力な分離は、リプレイされたビヘイビアを変更しない。むしろ、強力な分離は、ソフトウェアトランザクション分離が、ロー(raw)メモリアクセスによって、いつ違反さるかを特定することができる。
図3は、本発明の一つの実施例に従った、トランザクションプログラムのデバッキングを促進するための方法300に係るフローチャートである。ブロック302において、リプレイヤエンジンは、TMプログラムにおける次のインストラクションをリプレイする。判断ダイヤモンドへ続いて、インストラクションがトランザクションインストラクションでない場合は、ブロック306に進み、インストラクションは、ノーマル(例えば、非トランザクション)インストラクションとして扱われて、強力なSTM分離を用いて評価される。判断ダイヤモンド308へ移動して、インストラクションがアボートされていない場合には、ブロック302に戻り、リプレイヤエンジンはプログラムの次のインストラクションをリプレイする。インストラクションがアボートされた場合には、ブロック318に進んで、コンフリクトを解決するために、インストラクションがハイブリッドトランザクションコンテンションマネージャに対して送付される。
判断ダイヤモンド304へ戻ると、インストラクションがトランザクションインストラクションであると判断される場合には、判断ダイヤモンド310へ進み、インストラクションがハードウェアトランザクションインストラクションであるか否かが判断される。そして、そうである場合には、ブロック312へ進み、HTMがンストラクションのリプレイに関してエミュレーションされて、コレクトネス及び/又はパフォーマンスTMエラー(「バグ」)の識別ができるようになし得る。
判断ダイヤモンド310において、インストラクションがソフトウェアインストラクションであると判断される場合には、ブロック314へ進み、インストラクションをリプレイし、かつ、バグを特定するためにSTMが使用され得る。例えば、インストラクションに関連するコレクトネスエラー及び/又はパフォーマンスエラーを含み得る一つまたはそれ以上のエラーである。
判断ダイヤモンド316に進み、トランザクションインストラクションハンドラによってインストラクションに関連するコンフリクトが検出された場合には、ブロック318へ移動し、コンフリクトを解決するために、インストラクション(トランザクションインストラクションであろうと非トランザクションインストラクションであろうとも)がハイブリッドトランザクションコンテンションマネージャに対して送付される。そして、判断ダイヤモンド320へ進み、現在のチャンクにおける全てのインストラクションがリプレイされてきたか否かが判断される。現在のチャンクにおける追加のインストラクションがリプレイされていない場合には、ブロック302に戻り、リプレイヤエンジンがプログラムの次のインストラクションをリプレイする。現在のチャンクにおける全てのインストラクションがリプレイされた場合に、方法は320において終了する。
判断ダイヤモンド316において、コンフリクトがポストトランザクションインストラクションハンドラによって検出されない場合には、判断ダイヤモンド320へ進み、現在のチャンクにおける追加のインストラクションがリプレイされていない場合に、ブロック302へ戻り、リプレイエンジンがプログラムの次のインストラクションをリプレイする。現在のチャンクにおける全てのインストラクションがリプレイされた場合に、方法は320において終了する。
実施例は、多くの異なるプロセッサタイプにおいて実施され得るものである。例えば、実施例は、マルチコアプロセッサといったプロセッサにおいて具現化され得る。ここで図4を参照すると、本発明の一つの実施例に従った、プロセッサコアのブロックダイヤグラムが示されている。図4に示されるように、プロセッサコア400は、マルチステージパイプラインアウトオブオーダープロセッサ(multi−stage paipelined out−of−order processor)であってよい。
図4に示されるように、コア400は、フロントエンドユニット410を含んでおり、実行されるべきインストラクションをフェッチ(fetch)して、プロセッサにおける後の使用のためにそれらを準備するために使用され得る。例えば、フロントエンドユニット410は、フェッチユニット401、インストラクションキャッシュ403、および、インストラクションデコーダ405を含んでよい。いくつかの実施例において、フロントエンドユニット410は、さらに、インストラクションストレージと同様にマイクロコードストレージに加えて、トレースキャッシュを含んでよい。フェッチユニット401は、例えば、メモリ(図示なし)から、または、インストラクションキャッシュ403からマクロインストラクションをフェッチし、そして、マクロインストラクションを、プロセッサによる実行のためのインストラクションといった、プリミティブ(primitive)へとデコードするために、それらをインストラクションデコーダ405へフィードする。
フロントエンドユニット410と実行ユニット420との間には、アウトオブオーダー(OOO)エンジン415が接続されており、インストラクションを受け取り、かつ、実行のためにそれらを準備するために使用され得る。より特定的に、OOOエンジン415は、種々のバッファを含んでよく、インストラクションフローをリオーダー(reorder)して、実行のために必要な種々のリソースを割り当てる。レジスタファイル430および拡張レジスタファイル435といった、種々のレジスタファイルの中のストレージロケーション構成されたにロジカルレジスタのリネーム(renaming)を提供することも、同様である。レジスタファイル430は、整数および浮動小数点オペレーションのために別個のレジスタファイルを含んでよい。拡張レジスタファイル435は、ベクトルサイズ(vector−sized)ユニットのためにストレージを提供してよい。例えば、レジスタごとに256または512ビットである。
種々のリソースが実行ユニット420の中に存在してよい。例えば、種々の、整数、小数点、およびシングルインストラクションマルチデータ(SIMD)ロジックユニット、他の特殊化されたハードウェアを一緒に含むものである。例えば、そうした実行ユニットは、一つまたはそれ以上の算術論理演算装置(ALU)442を含んでよい。実行ユニット420は、ハイブリッドトランザクションメモリ(HyTM)472を含んでよく、HyTM472のHTM部分においてプロセッサを実行し、記録し得る。HyTM472は、リプレイおよびプログラム(または、コードのチャンク)のエラー検出を実行するように構成されたリプレイヤ/トランザクションデバッガを含んでよい。本発明の実施例に従って、HyTM472のソフトウェア(例えば、STM)、及び/又は、HyTM472のハードウェアトランザクションメモリHTMのソフトウェアエミュレーションを使用するものである。
実行ユニットの中のデータ上でオペレーションが実行される場合、結果がリタイヤメントロジック(retirement logic)、つまり、リオーダーバッファ(ROB)440に対して提供されてよい。より特定的に、ROB440は、実行されるインストラクションに関連する情報を受け取るための種々のアレイおよびロジックを含んでよい。この情報は、次に、ROB440によって検査され、インストラクションが有効にリタイヤされて、プロセッサのアーキテクチャ状態(architectural state)に対してコミットされたデータを結果的に生じるか否か、もしくは、インストラクションの適切なリタイヤメントを妨げる一つまたはそれ以上の例外(exception)が生じたか否かを判断する。本発明の実施例において、ROB440は、ハイブリッドトランザクションコンテンションマネージャ(図示なし)を含んでよく、本発明の実施例に従って、HyTM472のリプレイヤによって検出されたコンフリクトを解決する。従って、ROB440は、リタイヤメントに関連する他のオペレーションを取り扱い得る。
図4に示されるように、ROB440は、キャッシュ450に接続されており、一つの実施例においては、ローレベルキャッシュ(例えば、L1キャッシュ)であってよく、そして、トランスレーションルックアサイドバッファ(translation lookaside buffer、TLB)455も含んでよいが、本発明の範囲は、この観点に限定されるものではない。キャッシュ450から、よりハイレベルキャッシュ、システムメモリ、などを用いてデータ通信が生じ得る。
図4のプロセッサの実施例は、いわゆるx86 ISAアーキテクチャといったアウトオブオーダーマシンに関するものである一方で、本発明の範囲は、この件に限定されるものではないことに留意する。つまり、他の実施例は、インオーダー(in−order)プロセッサ、ARMベースプロセッサといった縮小命令セットコンピューティング(RISC)プロセッサ、または、エミュレーションエンジンと関連ロジック回路を介して、異なるISAのインストラクションおよびオペレーションをエミュレーションすることができる別のタイプのISAに係るプロセッサにおいて、実行されてよい。さらに、他の実施例は、グラフィクスプロセッサにおいて実行されてよい。
実施例は、多くの異なるタイプのシステムにおいて実行されてよい。ここで図5を参照すると、本発明の一つの実施例に従った、システムのブロックダイヤグラムが示されている。図5に示されるように、マルチプロセッサシステム500は、ポイントツーポイント(point−to−point)相互接続システムであり、ポイントツーポイント相互接続550を介して接続された第1プロセッサ570と第2プロセッサ580を含んでいる。(図示されていない他の実施例において、プロセッサは、スタートポロジー(star topology)、メッシュトポロジー、クロスバートポロジー、または、別の接続スキームによって接続されてよい。)図5に示されるように、プロセッサ570と580それぞれは、マルチコアプロセッサであってよく、第1および第2プロセッサコア(例えば、プロセッサコア574aと574b、および、プロセッサコア584aと584b)を含んでいるが、プロセッサの中には潜在的により多くのコアが存在してよい。
いまだに図5を参照すると、第1プロセッサ570は、さらに、メモリコントローラハブ(MCH)572およびポイントツーポイント(P−P)インターフェイス576と578を含んでいる。同様に、第2プロセッサ580は、MCH582およびP−Pインターフェイス586と588を含んでいる。図5に示されるように、MCH572と582は、プロセッサをそれぞれのメモリに対して接続している。すなわち、メモリ532とメモリ534であり、それぞれのプロセッサに対してローカルの取り付けられたシステムメモリ(例えば、DRAM)の一部分であってよい。第1プロセッサ570と第2プロセッサ580は、P−P相互接続562と554を介して、それぞれにチップセット590に対して接続されてよい。図5に示されるように、チップセット590は、P−Pインターフェイス594と598を含んでいる。さらに、チップセット590は、P−P相互接続539によってチップセット590とグラフィクスエンジン538を接続するためのインターフェイス592を含んでいる。
プロセッサコア574aと584aそれぞれは、本発明の実施例に従って、ハイブリッドトランザクションメモリ(HyTM)502と504をそれぞれに含んでよい。それぞれのHyTM(502、504)は、HyTMのHTM部分における対応するプログラミングを実行し、かつ、記録してよい。それぞれのHyTM(502、504)は、リプレイおよび対応するプログラム(または、コードのチャンク)のエラー検出を実行するように構成されたリプレイヤ/トランザクションデバッガを含んでよい。本発明の実施例に従って、対応するHyTMのソフトウェア、及び/又は、対応するHyTMのハードウェアトランザクションメモリ(HTM)部分のソフトウェアエミュレーションを使用するものである。
チップセット590は、インターフェイス596を介して第1バス516に対して接続されてよい。図5に示されるように、種々の入力/出力(I/O)デバイス514が、バスブリッジ518と共に、第1バス516に対して接続されてよい。バスブリッジは、第1バス516を第2バスへ接続するものである。種々のデバイスが第2バスに対して接続されてよい。例えば、一つの実施例においては、キーボード/マウス522、通信デバイス526、および、ディスクドライブまたはコード530を保管し得る他の大容量記憶装置といったデータストレージユニット528、を含んでいる。さらに、オーディオI/O524が第2バスに接続されてよい。実施例は、スマート携帯電話、タブレットコンピュータ、ウルトラブックTM、ノートブック、デスクトップコンピュータ、等といった、モバイルデバイスを含む他のタイプのシステムの中に包含され得るものである。
他の実施例が以下に説明される。
一つの実施例において、システムは、ハードウェアトランザクションメモリ(HTM)を含むハイブリッドトランザクションメモリ(HyTM)を有するプロセッサを含む。プロセッサは、また、ハードウェアトランザクションメモリ(HTM)インストラクションを含み、HyTMを使用して実行されてきたプログラムを、リプレイするためのプログラムデバッガも含む。プログラムデバッガは、HTMのエミュレーションによってHTMインストラクションをリプレイするためのソフトウェアエミュレータを含んでいる。システムは、また、プログラムを保管するためのダイナミックランダムアクセスメモリ(DRAM)を含む。
一つの実施例において、プログラムデバッガは、さらに、ソフトウェアトランザクションメモリ(STM)の使用を通じて、プログラムのソフトウェアトランザクションインストラクションをリプレイする。
一つの実施例において、プログラムデバッガは、強力なソフトウェアトランザクションメモリ(STM)分離を用いて、プログラムの非トランザクションインストラクションをリプレイする。
一つの実施例において、プログラムデバッガは、プログラムにおけるコレクトネスエラーおよびパフォーマンスエラーのうち少なくとも一つを特定する。
別の実施例において、少なくとも一つのコンピュータで読取り可能な記録媒体は、インストラクションを保管しており、システムに、ハードウェアトランザクションメモリ(HTM)を含むハイブリッドトランザクションメモリ(HyTM)によって実行されてきたプログラムをリプレイさせる。リプレイは、少なくとも部分的にHTMのソフトウェアエミュレーションを通じて実行される。
一つの実施例において、HyTMは、また、ソフトウェアトランザクションメモリ(STM)を含む。一つの実施例において、リプレイされるプログラムインストラクションがソフトウェアトランザクションに関連するトランザクションインストラクションである場合に、リプレイは、STMを使用して実行される。
一つの実施例において、少なくとも一つのコンピュータで読取り可能な記録媒体は、さらに、コレクトネスエラーおよびパフォーマンスエラーのうち少なくとも一つを特定するインストラクションを含んでいるプログラムのリプレイを介して、プログラムにおける一つまたはそれ以上のコンフリクトを検出するインストラクションを含む。
一つの実施例において、リプレイは、HyTMによって実施されたプログラムの実行の記録を正確にエミュレーションする。
一つの実施例において、プログラムをリプレイするインストラクションは、プログラムのプログラムインストラクションが、トランザクションインストラクションであるか、または、非トランザクションインストラクションであるかを判断するインストラクションを含む。プログラムインストラクションが非トランザクションインストラクションである場合に、リプレイは、強力なソフトウェアトランザクションメモリ(STM)分離を用いて実行される。
一つの実施例において、リプレイされるプログラムインストラクションがハードウェアトランザクションに関連するトランザクションインストラクションである場合に、リプレイは、HTMのソフトウェアエミュレーションによって実行される。
一つの実施例において、保管されたインストラクションは、システムに、プログラムの摂動なく、プログラムをリプレイさせる。
一つの実施例において、少なくとも一つのコンピュータで読取り可能な記録媒体は、さらに、システムに、トランザクションアボートのロケーションと原因のうち少なくとも一つを取得させるインストラクションを含む。
一つの実施例において、プログラムのリプレイは、第1スレッドの実行の停止および第2スレッドの実行の再開を生じさせる少なくとも一つのコンテクストスイッチを含み、かつ、リプレイは、HTMのソフトウェアエミュレーションを使用して実行される。
一つの実施例において、少なくとも一つのコンピュータで読取り可能な記録媒体は、さらに、ソフトウェアエミュレーションを介して、HTMのトランザクションメモリコンテンションマネージャのアボート意思決定部分をエミュレーションするインストラクションを含む。
別の実施例において、方法は、ハードウェアトランザクションメモリ(HTM)を含むハイブリッドトランザクションメモリ(HyTM)システムにおいて実行されてきたプログラムをリプレイするステップを含み、リプレイは、少なくとも部分的にHTMのソフトウェアエミュレーションを使用して実行される。方法は、また、プログラムのリプレイを介して、プログラムにおける一つまたはそれ以上のコンフリクトを特定するステップも含む。
一つの実施例において、方法は、ソフトウェアエミュレーションを介して、HTMのトランザクションメモリコンテンションマネージャのアボート意思決定部分をエミュレーションするステップを含む。
一つの実施例において、HyTMは、ソフトウェアトランザクションメモリ(STM)を含み、方法は、さらに、プログラムの一つまたはそれ以上のソフトウェアトランザクションインストラクションをリプレイするためにSTMを使用するステップを含む。
一つの実施例において、プログラムの非トランザクションインストラクションのリプレイは、強力なソフトウェアトランザクションメモリ(STM)分離を用いて実行される。
一つの実施例において、方法は、プログラムに関連するトランザクションアボートのロケーションと原因のうち少なくとも一つを取得するステップを含む。
一つの実施例において、装置は、上述の方法のうちいずれかを実行し得る。
一つの実施例において、マシンで読取り可能なストレージは、マシンで実行されると、上述の方法のうちいずれかを実施する、マシンで読取り可能なインストラクションを含む。
実施例は、多くの異なるタイプのシステムにおいて使用されてよい。例えば、一つの実施例において、通信デバイスは、ここにおいて説明された種々の方法および技術を実行するように配置されてよい。もちろん、本発明の範囲は、通信デバイスに限定されるものではなく、そして、代わりに、他の実施例は、インストラクションを処理するための他のタイプの装置、もしくは、コンピューティングデバイス上で実行されることに応じて、ここにおいて説明された一つまたはそれ以上の方法および技術をデバイスに実行させるインストラクションを含んでいる一つまたはそれ以上のマシンで読取り可能な媒体、に向けられてよい。
実施例は、コードにおいて実施されてよく、そして、インストラクションを実行するためのシステムをプログラムするために使用され得るインストラクションが保管された有形のストレージ媒体上に保管されてよい。ストレージ媒体は、これらに限定されるわけではないが、あらゆるタイプのディスクを含んでよい。フロッピー(登録商標)ディスク、光ディスク、半導体ドライブ(SSD)、コンパクトディスク読取り専用メモリ(CD−ROM)、書込み可能コンパクトディスク(CD−RW)、および、光磁気ディスク、読み出し専用メモリ(ROM)といった半導体デバイス、ダイナミックランダムアクセスメモリ(DRAM)といったランダムアクセスメモリ(RAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能プログラム可能読み出し専用メモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラム可能読み出し専用メモリ(EEPROM)、磁気または光カード、もしくは、電子的インストラクションを保管するのに適切な他のあらゆるタイプの媒体、を含んでいる。
本発明は、限られた数の実施例に関して説明されてきたが、当業者であれば、そこからの数多くの変更および変形を正しく理解するであろう。添付の請求項は、そうした全ての変更および変形が、この本発明の真の精神および範囲の中に在るように意図されたものである。

Claims (19)

  1. プロセッサとダイナミックランダムアクセスメモリ(DRAM)とを含むシステムであって、
    前記プロセッサ
    トランザクションメモリ(TM)プログラムを実行し、かつ、ハードウェアレコーディングロジックを介して前記TMプログラムを記録するためのハードウェアトランザクションメモリ(HTM)とソフトウェアトランザクションメモリ(STM)とを含むハイブリッドトランザクションメモリ(HyTM)と、
    記録された前記TMプログラムをリプレイするためのプログラムデバッガであり、
    前記プログラムデバッガは、前記TMプログラムのインストラクションをリプレイし、一つまたはそれ以上のリプレイされたインストラクションが非トランザクションインストラクションである場合には、非トランザクション実行のために前記一つまたはそれ以上のリプレイされたインストラクションを提供し、かつ、トランザクション実行のために一つまたはそれ以上の他のリプレイされたインストラクションを提供する、リプレイヤエンジンであり、さらに、前記HTMのエミュレーションによってHTMインストラクションをリプレイするためのソフトウェアエミュレータに対してHTMインストラクションを提供し、かつ、前記STMの使用を通じたリプレイのためにSTMインストラクションを提供する、リプレイヤエンジンを含み、
    前記プログラムデバッガは、さらに、前記一つまたはそれ以上のリプレイされたインストラクションにおけるコンフリクトを分析するためのポストトランザクションインストラクションハンドラと、前記コンフリクトを解消するためのHyTMコンテンションマネージャと、を含み、前記HyTMコンテンションマネージャは、前記TMプログラムの記録において使用される第2HyTMコンテンションマネージャをエミュレートする、
    プログラムデバッガと、
    を含み、
    前記ダイナミックランダムアクセスメモリは、前記プログラムを保管する、
    システム。
  2. 前記プログラムデバッガは、さらに、
    フトウェアトランザクションメモリ(STM)分離の後で、前記TMプログラムのトランザクションインストラクションをリプレイする、
    請求項1に記載のシステム。
  3. 前記プログラムデバッガは、
    前記TMプログラムにおけるパフォーマンスエラーを特定する、
    請求項に記載のシステム。
  4. 前記プログラムデバッガは、
    ソフトウェアトランザクションの中のメモリアクセスと非トランザクションメモリアクセスとの間のコレクトネスバグを特定するために共有メモリインターリーブを使用する、
    請求項に記載のシステム。
  5. 前記プログラムデバッガは、
    前記HTMインストラクションまたは前記STMインストラクションのリプレイの後で、前記ポストトランザクションインストラクションハンドラに対して前記リプレイされたHTMインストラクションまたは前記リプレイされたSTMインストラクションを提供し、コンフリクトが前記リプレイされたHTMインストラクションに関連するか、または前記リプレイされたSTMインストラクションに関連するかを判断する、
    請求項に記載のシステム。
  6. インストラクションを含むコンピュータプログラムであって、実行されると、システム
    ハードウェアレコーディングロジックを介して、ハードウェアトランザクションメモリ(HTM)とソフトウェアトランザクションメモリ(STM)とを含むハイブリッドトランザクションメモリ(HyTM)によって実行されたプログラムを記録し、かつ、
    前記プログラムのインストラクションをリプレイするためのリプレイヤエンジンを含むデバッガを介して前記記録されたプログラムをリプレイ、かつ、一つまたはそれ以上のリプレイされたインストラクションが非トランザクションインストラクションである場合には、非トランザクション実行のために前記一つまたはそれ以上のリプレイされたインストラクションを提供し、かつ、トランザクション実行のために一つまたはそれ以上の他のリプレイされたインストラクションを提供し、さらに、前記HTMのエミュレーションによってHTMインストラクションをリプレイするためのソフトウェアエミュレータに対してHTMインストラクションを提供し、かつ、前記STMの使用を通じたリプレイのためにSTMインストラクションを提供し、
    ポストトランザクションインストラクションハンドラにおいて、前記一つまたはそれ以上のリプレイされたインストラクションにおけるコンフリクトを分析し、かつ、
    HyTMコンテンションマネージャにおいて、前記コンフリクトを解消し、
    前記HyTMコンテンションマネージャは、前記TMプログラムの記録において使用される第2HyTMコンテンションマネージャをエミュレートし、
    前記デバッガは、ソフトウェアトランザクションの中のメモリアクセスと非トランザクションメモリアクセスとの間のコレクトネスバグを特定するために、前記ハードウェアレコーディングロジックによって順序付けされた共有メモリインターリーブを使用する、
    コンピュータプログラム。
  7. 前記コンピュータプログラムは、さらに、
    コレクトネスエラーを特定するインストラクションを含んでいるプログラムのリプレイを介して、前記プログラムにおける一つまたはそれ以上のコンフリクトを検出するインストラクション、を含む、
    請求項6に記載のコンピュータプログラム。
  8. 前記リプレイは、
    前記HyTMによって実施された前記プログラムの実行の記録を正確にエミュレーションする、
    請求項6に記載のコンピュータプログラム。
  9. プログラムをリプレイする前記インストラクションは、前記プログラムのプログラムインストラクションが、トランザクションインストラクションであるか、または、非トランザクションインストラクションであるかを判断するインストラクションを含み、
    前記プログラムインストラクションが非トランザクションインストラクションである場合に、ソフトウェアトランザクションメモリ(STM)の後で、リプレイが実行される、
    請求項6に記載のコンピュータプログラム。
  10. 前記コンピュータプログラムは、さらに、
    前記システムに、トランザクションアボートのロケーションと前記トランザクションアボートの原因のうち少なくとも一つを取得させるインストラクション、を含む、
    請求項に記載のコンピュータプログラム。
  11. 前記プログラムのリプレイは、第1スレッドの実行の停止および第2スレッドの実行の再開を生じさせる少なくとも一つのコンテクストスイッチを含み、かつ、
    前記リプレイは、前記HTMのソフトウェアエミュレーションを使用して実行される、
    請求項6に記載のコンピュータプログラム。
  12. 前記コンピュータプログラムは、さらに、
    ソフトウェアエミュレーションを介して、前記HTMのトランザクションメモリコンテンションマネージャのアボート意思決定部分をエミュレーションするインストラクション、を含む、
    請求項6に記載のコンピュータプログラム。
  13. コンピュータシステムにおいて、プロセッサによって実施される方法であって、
    ハードウェアレコーディングロジックを介して、ハードウェアトランザクションメモリ(HTM)とソフトウェアトランザクションメモリ(STM)とを含むハイブリッドトランザクションメモリ(HyTM)によって実行されたプログラムを記録する、ステップと、
    前記プログラムのインストラクションをリプレイするためのリプレイヤエンジンを含むデバッガを介して、前記記録されたプログラムをリプレイするステップであり、
    一つまたはそれ以上のリプレイされたインストラクションが非トランザクションインストラクションである場合に、非トランザクション実行のために前記一つまたはそれ以上のリプレイされたインストラクションを提供するステップ、および、トランザクション実行のために一つまたはそれ以上の他のリプレイされたインストラクションを提供するステップ、を含み、
    前記HTMのエミュレーションによってHTMインストラクションをリプレイするためのソフトウェアエミュレータに対してHTMインストラクションを提供するステップ、および、前記STMの使用を通じたリプレイのためにSTMインストラクションを提供するステップ、を含む、
    リプレイするステップと、
    前記プログラムリプレイするステップを介して、前記プログラムにおける一つまたはそれ以上のコンフリクトを特定するステップであり、ポストトランザクションインストラクションハンドラにおいて、前記一つまたはそれ以上のリプレイされたインストラクションにおける前記一つまたはそれ以上のコンフリクトを分析するステップを含む、ステップと、
    HyTMコンテンションマネージャにおいて、前記コンフリクトを解消するステップであり、前記HyTMコンテンションマネージャは、前記TMプログラムの記録において使用される第2HyTMコンテンションマネージャをエミュレートする、ステップと、
    を含む、方法。
  14. 前記方法は、さらに、
    ソフトウェアエミュレーションを介して、前記HTMのトランザクションメモリコンテンションマネージャのアボート意思決定部分をエミュレーションするステップ、
    を含む、請求項13に記載の方法。
  15. 前記プログラムの非トランザクションインストラクションのリプレイは、ソフトウェアトランザクションメモリ(STM)分離の後で実行される、
    請求項13に記載の方法。
  16. 前記方法は、さらに、
    前記プログラムに関連するトランザクションアボートのロケーションと前記トランザクションアボートの原因のうち少なくとも一つを取得するステップ、
    を含む、請求項13に記載の方法。
  17. 前記方法は、さらに、
    前記ハードウェアレコーディングロジックを介して、ソフトウェアトランザクションと非トランザクションメモリアクセスによってインターリーブされた共有メモリアクセスを順序付けするステップ、
    を含む、請求項13に記載の方法。
  18. 前記方法は、さらに、
    ソフトウェアトランザクションの中のメモリアクセスと非トランザクションメモリアクセスとの間のコレクトネスバグを特定するために、前記ハードウェアレコーディングロジックによって順序付けされた共有メモリインターリーブを使用するステップ、
    を含む、請求項13に記載の方法。
  19. 請求項6乃至12いずれか一項に記載のコンピュータプログラムを記憶したコンピュータで読取り可能な記憶媒体。
JP2017501141A 2014-03-26 2015-03-23 トランザクションメモリプログラムのためのソフトウェアリプレイヤ Active JP6306261B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/226,312 US9697040B2 (en) 2014-03-26 2014-03-26 Software replayer for transactional memory programs
US14/226,312 2014-03-26
PCT/US2015/021929 WO2015148339A1 (en) 2014-03-26 2015-03-23 Software replayer for transactional memory programs

Publications (2)

Publication Number Publication Date
JP2017510014A JP2017510014A (ja) 2017-04-06
JP6306261B2 true JP6306261B2 (ja) 2018-04-04

Family

ID=54190496

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017501141A Active JP6306261B2 (ja) 2014-03-26 2015-03-23 トランザクションメモリプログラムのためのソフトウェアリプレイヤ

Country Status (6)

Country Link
US (1) US9697040B2 (ja)
EP (1) EP3123321A4 (ja)
JP (1) JP6306261B2 (ja)
KR (1) KR101862094B1 (ja)
CN (1) CN106030532B (ja)
WO (1) WO2015148339A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9697040B2 (en) 2014-03-26 2017-07-04 Intel Corporation Software replayer for transactional memory programs
US11188336B2 (en) 2015-12-28 2021-11-30 Qualcomm Incorporated Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model
US20170344602A1 (en) * 2016-05-24 2017-11-30 Joan Hada System and method for abstracted and fragmented data retrieval
KR101885030B1 (ko) * 2017-04-21 2018-08-02 전북대학교산학협력단 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치
KR102007117B1 (ko) * 2018-01-19 2019-08-02 전북대학교산학협력단 트랜잭션 처리 방법 및 트랜잭션 처리 시스템
KR102186719B1 (ko) * 2018-11-15 2020-12-08 주식회사 마르시스 블록형 무선 코딩 명령어 입력 장치 및 방법

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3542463B2 (ja) * 1997-07-29 2004-07-14 Necエレクトロニクス株式会社 集積回路装置、その動作制御方法
US7870545B2 (en) * 2005-12-16 2011-01-11 Intel Corporation Protecting shared variables in a software transactional memory system
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US8180967B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8316352B2 (en) * 2006-06-09 2012-11-20 Oracle America, Inc. Watchpoints on transactional variables
US7849446B2 (en) * 2006-06-09 2010-12-07 Oracle America, Inc. Replay debugging
US8307346B2 (en) * 2006-06-09 2012-11-06 Oracle America, Inc. Atomic groups for debugging
US8533681B2 (en) * 2007-03-07 2013-09-10 The Board Of Trustees Of The University Of Illinois Atomicity violation detection using access interleaving invariants
US8688920B2 (en) * 2007-05-14 2014-04-01 International Business Machines Corporation Computing system with guest code support of transactional memory
US8099719B2 (en) 2007-06-19 2012-01-17 Microsoft Corporation Transactional debugger for a transactional memory system and detecting conflicts
US9043553B2 (en) * 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
US8266387B2 (en) * 2007-06-27 2012-09-11 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization emulation
US7941411B2 (en) * 2007-06-29 2011-05-10 Microsoft Corporation Memory transaction grouping
US9772751B2 (en) * 2007-06-29 2017-09-26 Apple Inc. Using gestures to slide between user interfaces
JP4856023B2 (ja) * 2007-08-08 2012-01-18 パナソニック株式会社 リアルタイムウォッチ装置及びその方法
US8661204B2 (en) * 2007-08-15 2014-02-25 University Of Rochester, Office Of Technology Transfer Mechanism to support flexible decoupled transactional memory
US8140497B2 (en) * 2007-12-31 2012-03-20 Oracle America, Inc. System and method for implementing nonblocking zero-indirection transactional memory
US8972794B2 (en) * 2008-02-26 2015-03-03 International Business Machines Corporation Method and apparatus for diagnostic recording using transactional memory
JP5255887B2 (ja) * 2008-04-08 2013-08-07 ルネサスエレクトロニクス株式会社 情報処理装置及びデバッグ方法
US8612950B2 (en) * 2008-06-19 2013-12-17 Intel Corporation Dynamic optimization for removal of strong atomicity barriers
US8555016B2 (en) * 2008-12-17 2013-10-08 Intel Corporation Unified optimistic and pessimistic concurrency control for a software transactional memory (STM) system
CN102460376B (zh) * 2009-06-26 2016-05-18 英特尔公司 无约束事务存储器(utm)系统的优化
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US8516202B2 (en) 2009-11-16 2013-08-20 International Business Machines Corporation Hybrid transactional memory system (HybridTM) and method
US8095824B2 (en) * 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
US20110258613A1 (en) 2010-04-15 2011-10-20 International Business Machines Corporation Software debugger activation based on key performance indicators
US8453120B2 (en) * 2010-05-11 2013-05-28 F5 Networks, Inc. Enhanced reliability using deterministic multiprocessing-based synchronized replication
US8639981B2 (en) * 2011-08-29 2014-01-28 Apple Inc. Flexible SoC design verification environment
WO2013095441A1 (en) 2011-12-21 2013-06-27 Intel Corporation Methods and systems to identify and reproduce concurrency violations in multi-threaded programs
US9311101B2 (en) * 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9135139B2 (en) 2012-06-27 2015-09-15 Intel Corporation Methods and systems to identify and reproduce concurrency violations in multi-threaded programs using expressions
US9268598B2 (en) * 2012-09-13 2016-02-23 International Business Machines Corporation Recording and profiling transaction failure source addresses and states of validity indicator corresponding to addresses of aborted transaction in hardware transactional memories
US9317297B2 (en) 2012-09-27 2016-04-19 Intel Corporation Replay execution of instructions in thread chunks in the chunk order recorded during previous execution
US9836316B2 (en) 2012-09-28 2017-12-05 Intel Corporation Flexible acceleration of code execution
WO2014100698A1 (en) * 2012-12-20 2014-06-26 Massachusetts Institute Of Technology Methods and systems for enhancing hardware transactions using hardware transactions in software slow-path
US9128781B2 (en) 2012-12-28 2015-09-08 Intel Corporation Processor with memory race recorder to record thread interleavings in multi-threaded software
CN105009089B (zh) * 2013-03-15 2018-12-25 英特尔公司 用于促进对指令违反行为的管理的设备和方法
US9361152B2 (en) 2013-07-15 2016-06-07 Intel Corporation Transactional memory management techniques
US9183043B2 (en) * 2013-07-16 2015-11-10 Oracle International Corporation Systems and methods for adaptive integration of hardware and software lock elision techniques
US9244724B2 (en) * 2013-08-15 2016-01-26 Globalfoundries Inc. Management of transactional memory access requests by a cache memory
US9086974B2 (en) * 2013-09-26 2015-07-21 International Business Machines Corporation Centralized management of high-contention cache lines in multi-processor computing environments
US9146774B2 (en) * 2013-12-12 2015-09-29 International Business Machines Corporation Coalescing memory transactions
US9965320B2 (en) * 2013-12-27 2018-05-08 Intel Corporation Processor with transactional capability and logging circuitry to report transactional operations
US9697040B2 (en) 2014-03-26 2017-07-04 Intel Corporation Software replayer for transactional memory programs
US10007549B2 (en) * 2014-12-23 2018-06-26 Intel Corporation Apparatus and method for a profiler for hardware transactional memory programs

Also Published As

Publication number Publication date
EP3123321A1 (en) 2017-02-01
CN106030532A (zh) 2016-10-12
CN106030532B (zh) 2020-06-12
US9697040B2 (en) 2017-07-04
JP2017510014A (ja) 2017-04-06
WO2015148339A1 (en) 2015-10-01
US20150277968A1 (en) 2015-10-01
KR101862094B1 (ko) 2018-05-29
EP3123321A4 (en) 2017-11-29
KR20160113205A (ko) 2016-09-28

Similar Documents

Publication Publication Date Title
JP6306261B2 (ja) トランザクションメモリプログラムのためのソフトウェアリプレイヤ
TWI468937B (zh) 產生分支記錄的方法與系統及儲存分支記錄的處理器
US8738862B2 (en) Transactional memory system with efficient cache support
KR101655713B1 (ko) 이동 제거 연산들에서의 플래그 트래킹을 위한 시스템들 및 방법들
US20140281236A1 (en) Systems and methods for implementing transactional memory
US9558118B2 (en) Tracing mechanism for recording shared memory interleavings on multi-core processors
CN109328341B (zh) 识别引起远程事务执行中止的存储的处理器、方法和系统
US20110179399A1 (en) Establishing a useful debugging state for multithreaded computer program
US10007549B2 (en) Apparatus and method for a profiler for hardware transactional memory programs
CN111133418B (zh) 在例外屏蔽更新指令之后允许未中止的事务处理
TWI812750B (zh) 交易式比較及丟棄指令
Bai et al. {DSAC}: Effective Static Analysis of {Sleep-in-Atomic-Context} Bugs in Kernel Modules
US9244746B2 (en) Automatic transaction coarsening
Jiang et al. DRDDR: a lightweight method to detect data races in Linux kernel
US11030075B2 (en) Efficient register breakpoints
US10133655B1 (en) Emulation of target system using JIT compiler and bypassing translation of selected target code blocks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160920

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170815

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171114

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: 20180206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180307

R150 Certificate of patent or registration of utility model

Ref document number: 6306261

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250