JP2017509083A - バイナリトランザクションベースのプロセッサによるロックエリジョン - Google Patents

バイナリトランザクションベースのプロセッサによるロックエリジョン Download PDF

Info

Publication number
JP2017509083A
JP2017509083A JP2016559164A JP2016559164A JP2017509083A JP 2017509083 A JP2017509083 A JP 2017509083A JP 2016559164 A JP2016559164 A JP 2016559164A JP 2016559164 A JP2016559164 A JP 2016559164A JP 2017509083 A JP2017509083 A JP 2017509083A
Authority
JP
Japan
Prior art keywords
lock
code
dbt
processor
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016559164A
Other languages
English (en)
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 JP2017509083A publication Critical patent/JP2017509083A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Retry When Errors Occur (AREA)

Abstract

概して本開示はバイナリ変換ベースのプロセッサとともにロックエリジョンの機会を検出及び利用するシステム、デバイス、方法及びコンピュータ読み取り可能な媒体を提供する。デバイスは、第1命令セットアーキテクチャ(ISA)のうちのコード領域を第2ISAにおける変換されたコードに変換し、コード領域のクリティカルセクションに関連するロックを検出及び除外するダイナミックバイナリ変換(DBT)モジュールを含む。デバイスは、クリティカルセクションにおける変換されたコードを投機的に実行するプロセッサも含む。デバイスは、投機的実行の最中に、ロック及び/又はクリティカルセクションに関連するメモリアクセスのコンフリクトを検出し、その検出に応じて投機的な実行をロールバックし、及び、その検出が無い場合に投機的な実行をコミットするトランザクションサポートプロセッサを更に含む。

Description

本開示はロックエリジョン(lock elision)に関連し、特に、バイナリベースのプロセッサによるロックエリジョンの機会を検出及び活用することに関連する。
コンピューティングシステムはしばしば複数のプロセッサ又はプロセシングコアを有し、その複数のプロセッサ等にわたって、所与のワークロードが分散され、演算スループットを向上させる。複数のスレッド又はプロセッサは、各々のプロセッサコアで並列的に動作し、共通のメモリ領域を共有してよい。メモリのうちこれらのクリティカルなセクションについての同期及び2つ以上のプロセッサによるアクセス競合からの保護のため、一般に、ロックが使用される。しかしながら、そのようなロックを利用することは、一般に、パフォーマンスの低下を招く結果となってしまうが、その原因は、マルチプロセッサシステムにおけるメモリアクセスのシリアル化及び複数のスレッド検査やロック有効性の待機に関連するコヒーレンストラフィックである。
ロックは、比較的高くつくランタイムコストを招くが、適切なプログラムの実行についてロックはしばしば不要であり、その理由は、複数のスレッドがクリティカルセクションの異なる(分離した)領域のデータにアクセスするからである、或いは、アクセスがリードライトのコンフリクトを含まないからである。あるプロセッサは、ソフトウェア開発者がコード中に注釈を含めることを可能にするトランザクションセマンティクスを利用して、ロック変数がハードウェアにより除外されてよい(elided)ことを指し示す。しかしながら、このアプローチは、その能力をサポートするようにソフトウェアが修正されることを要し、それは高価である又は非現実的であり、そうでない場合、従来のコードにとって利点を提供しない。更に、プログラムは、ロック排除を示すこれらの注釈を意図せずにうっかり使用し、静的には未知のランタイムで動的なコンフリクトを実際に生じてしまう可能性がある。そのように不適切に除外されたロックは、パフォーマンスを更に劣化させてしまう。
対象とされる特定事項の実施例についての特徴及び利点は、図面を参照しながら以下の詳細な説明が進むにつれて更に明らかになるであろう。図中、同様な番号は同様な部分を示す。
図1は、本開示による一実施例の上位概念的なシステムを示す図である。
図2は、本開示による一実施例のブロック図を示す。
図3は、本開示による別の実施例のトランザクション領域を示す図である。
図4は、本開示による別の実施例のブロック図を示す。
図5は、本開示による別の実施例のブロック図を示す。
図6は、本開示の一実施例による動作のフローチャートを示す図である。
図7は、本開示の別の実施例のプラットフォームについての上位概念的なシステムを示す図である。
以下の詳細な説明は実施例を示すリファレンスとともに進行するが、多くの代替例、修正例及び変形例が当業者にとって明らかになるであろう。
一般に、本開示はバイナリトランザクションに基づくプロセッサによるロックエリジョンの機会(lock elision opportunities)を検出及び活用するためのシステム、デバイス、方法、コンピュータ可読媒体を提供する。ロックは、コード、メモリ又はその他のリソースのクリティカルセクションの同期及びマルチスレッドアプリケーションによるアクセスの競合を可能にし、マルチスレッドアプリケーションは複数のプロセッサ又はプロセッサコアにおいて動作している。本開示で説明されるようなロックエリジョンは、従来のハードウェアロックエリジョン(Hardware Lock Elision:HLE)システムで必要とされているような、アプリケーションソフトウェアに対するユーザーの目に見えるセマンティックな修正を必要とすることなく、同期のオーバーヘッドを回避する能力を、ハードウェア、ソフトウェア又はそれらの何らかの組み合わせに提供する。この意味において、本開示のロックエリジョンは自動的であると考えられてよい。
以下において詳細に説明されるように、ロックエリジョンプロセスの一部分は、例えばx86アーキテクチャのようなパブリック命令セットアーキテクチャ(instruction set architecture:ISA)から、プロセッサ又はコアにより実行されるネイティブISAへの、アプリケーションソフトウェアの動的なバイナリ変換(dynamic binary translation:DBT)の間に実行されてよい。命令リオーダリングを含む他の最適化が実行されてもよい場合、ロックはDBTの間に検出され除外されてよい。ロックエリジョンプロセスは、アトミック性(atomicity)によりイネーブルにされてもよいし、或いは、プロセッサにより提供されるトランザクションのサポートであってもよく、変換されたセクションの投機的な実行(speculative execution)及び競合や不具合の検出を可能にし、競合や不具合は実行されるセクションのロールバック又は取り消し(roll back)のトリガを与える。一実施例において、ロックを除外することがパフォーマンスを低下させる旨の判定がなされた場合、ロックエリジョンプロセス(又は最適化)は、抑制される(throttle back)。ここで使用されるような「最適化(optimization)」という用語は、一般に、例えばコード実行の効率における改善のような、絶対的な状態ではなく相対的な改善を指す。
図1は、本開示の一実施例についての上位概念的なシステム100を示す図である。ロックエリジョン104のDBTモジュールは、以下において詳細に説明されるように、トランザクションサポートのマルチコアシステム106とアプリケーションソフトウェア102との間のインターフェースを為すように構成される。アプリケーションソフトウェア102は、コードのうち重要な部分(又はクリティカルセクション)を保護するためにロック又はその他の同期メカニズムを含んでよい。DBTモジュール104は、マイクロプロセッサシステム106により提供されるハードウェアサポートに関するこれらのクリティカルコードセクションに関連付けされるロックエリジョン機会を動的に検出及び利用するように構成される。
図2は、本開示による一実施例のブロック図200を示す。アプリケーションソフトウェア又はコード102は、ベーシック入出力システム(Basic Input-Output System:BIOS)、オペレーティングシステム(OS)204、デバイスドライバ及び他の何らかのソフトウェア206を含み、ソフトウェアはシステムで動作する上位レベルアプリケーション又は他のユーザー提供コードを含む。アプリケーションソフトウェア102は、一般に、マルチスレッドコンポーネントを含む。アプリケーションソフトウェア102は、例えばx86アーキテクチャ又はその変形のようなパブリックISAとして提供されてもよいし、それにコンパイルされてもよいし、或いは、それに準拠するように構成されてよい。
DBTモジュール104は、ロックエリジョンモジュール208を含むように示されている。DBTモジュール104は、パブリックISAから、プロセッサ106で実行されるネイティブISAへ、コードを変換するように構成されてよい。ネイティブISAは、一般に、パブリックISAとほとんど又は全く類似性を持っていない。パブリックISAは、既存のソフトウェアの大きな集まりに対するアクセスを可能にするレガシーコードのサポートを提供する一方、ネイティブISAは、例えばプロセッサパフォーマンスの増進又は電力消費の改善などのようなターゲット目標に対して設計される。プロセッサは、新たなテクノロジを活用するために定期的に更新され、及び、既存のソフトウェアを動作させる機能を維持しつつネイティブISAを変更する。DBTプロセスの間に、ロック及び関連するクリティカルセクションが検出され、ロックエリジョンの機会が利用される。
マルチプロセッサシステム106は、ネイティブISAにおいてコードを実行するように構成される任意の数のプロセッサ又はプロセシングコアを含んでよい。マルチプロセッサシステム106は、ネイティブコードにおけるトランザクションセマンティックサポート(例えば、アトミック性)を提供するように構成されるトランザクションサポートプロセッサ210(又は他の適切なハードウェア)を含んでよい。コードのトランザクション又はアトミック領域は、プロセッサの現在のアーキテクチャ状態(キャッシュメモリやレジスタの内容など)が有効化されて内部ハードウェアバッファに保存される「チェックポイント」から始まってもよい。そして、コードのアトミック領域は投機的に実行され、不具合又は競合が生じるならば、プロセッサの状態は前に保存されたチェックポイントまでロールバックされ、投機的な実行の影響が出ないようにする。そうでない場合、投機的な実行はコミット又は確定され(committed)、以後、新たなチェックポイントが、先行するものの代わりに設定され、コード実行の順方向への進行が達成される。
マルチコアシステム106は、コード及び/又はデータを保存するため又は他の何らかの目的のためにメモリ212を含んでよい。メモリは、メインメモリ、キャッシュメモリ、レジスタ、メモリマップI/O、状態コードレジスタ、及び、他の任意の状態情報のためのストレージ等のうちの任意のもの又は全てを含んでよい。何らかの適切なキャッシュメモリコヒーレンシープロトコルを利用して、トランザクションサポートプロセッサ210は、システムの何れかのプロセッサ又はコアにより、読み込み及び書き込みアクセスを含むメモリ212に対するアクセスを監視するように構成されてもよい。
図3は、本開示による別の実施例のトランザクション領域300を示す。例えばDBTモジュール104により生成されるような変換コード領域は、変換境界302により制限される。コードのクリティカルセクション306は、DBTモジュール104により検出されるスピンロック(spin lock)304により保護される。スピンロックは、比較的簡易なロック手段の具体例であり、或るスレッドがクリティカルセクションに対するロックを取得し、他のスレッドはロックの獲得を待機している間ループ(又はスピン)する。ロックを獲得したスレッドがクリティカルセクションとともに終了した場合、ロックを解放し、スピンアンロック308とする。一実施例に関連してスピンロックがここで議論されているが、本開示の方法及びシステムは、当然に、任意のタイプのロック動作に一般化されてよいことが、理解されるであろう。
以下、スピンロックに関する例示的なDBTを説明する。この例における「オリジナル」又は変換前のコードは、x86アセンブリ言語で示されており、コードのクリティカルセクションは、スピンロック処理及びスピンアンロック処理により制限される。
オリジナルコード:
Figure 2017509083
この例では、メモリに対してアトミックな読み込み及び書き込み動作を実行する交換命令(xchg)は、今やプロセッサがロックをホールドしていることを示す‘0’を読み込み処理(リード)が返すまで、メモリアドレスLOCKを継続的にポーリングする。ロックのオーナーがspin_unlockコールでLOCKに‘0’を書き込むまで、他の全てのプロセッサはspin_lockをコールする場合に‘1’に設定されたLOCK変数を見ることになるであろう。多くのプロセッサがロック変数に‘1’を書き込む一方、他の多くのプロセッサが変数を読み込むことに起因して、ロック変数が競合する場合に、この手順は、比較的大量のコヒーレンストラフィックを生成する。
DBTモジュールは、以下に示されるように、このコードをプロセッサのネイティブISAに変換する。命令は、ロード(LDs)及びストア(STs)のような基本動作に分解される。FENCE及びCOMMIT動作が、同期及びトランザクションセマンティクスを達成するために加えられる。FENCE動作は、他のプロセッサにとってグローバルに可視的であるように先行するメモリ動作を強制し、及び/又は、プロセッサの実行パイプラインでメモリ動作の投機的なリオーダリングをブロックすることにより、メモリオーダリング特性を提供する。ストアバッファ又は書き込みキューは、FENCE(又はフェンス)動作がリタイヤ(retirement)に達すると排出され、他のプロセッサがFENCEの前に生じた保存動作を観察することを保証する。COMMIT(コミット又は確定)動作は、プロセッサが、現在の(適切であるように有効化された)キャッシュメモリ及びレジスタの状態をチェックポイントとし、次の投機的に最適化されたコードインターバルで実行が進行するようにする。COMMIT動作は、投機的な実行が前方への進行を行わせること(すなわち、任意的な大きなアトミック領域を回避する)、及び、プロセッサにとって利用可能な適切な状態情報が常に存在すること(不具合などの場合には、投機的なコードの実行はロールバックされる)等を保証する。
ネイティブコードへの変換:
オリジナル −> ネイティブ
Figure 2017509083
しかしながら、変換されるコードにパフォーマンスペナルティが存在し、その理由は、クリティカルセクションにおける動作がまれにしか競合しない場合でさえ、保存命令(ST rl, [LOCK] and ST r0, [LOCK])はプロセッサ間で競合するからである。
従って、DBTは例えば以下に示すようにネイティブコードを最適化するように構成されてよい。
ネイティブコードの最適化:
Figure 2017509083
第1のロード(LD r0, [LOCK])は、プロセッサのトランザクションメモリハードウェア(又はメモリリオーダリングハードウェア)に対して、ロック変数を可視化する。他のプロセッサが[LOCK]に対する書き込みを試みる場合、アトミック領域は中断される。第1ストア(ST r1, [LOCK])は、第2ストア(ST r0, [LOCK])がメモリの[LOCK]に同じ値を書き込もうとしていることが仮定される場合、除外されてもよい。第2ロード(LD r2, [LOCK])は、デッドストア(“dead” store)が実行されて以来、ロックが変更されていないことが仮定される場合、削除されてもよい。第2ストア(ST r0, [LOCK])は、チェック動作(STCHK [LOCK])により置換され、この動作は、プロセッサのトランザクション又は命令のリオーダリングハードウェアを利用して、クリティカルセクションにおいて他のストア(命令)がロック変数を修正しないことを保証する。
この例では、変換が、変換エグジットブランチに到達すると、プロセッサのハードウェアサポート(例えば、モジュール210)により保証されるように、以下のことが判明する:
1.この変換の実行の最中に、他の何れのプロセッサもロック変数を修正しない。
2.このプロセッサの変換においてロック変数の修正は生じない。
3.このクリティカルセクション中のメモリ動作と他の任意のプロセッサにおけるメモリ動作との間に、読み込み-書き込みの競合は存在せず、プロセッサはロックによって保護されるクリティカルセクション内で動作していてもよいし或いはしていなくてもよい。
これらの条件の下で、ロックは適切に除外される。クリティカルセクションに関してアトミック性の違反が検出された場合、或いは、ストア検査(STCHK)がロック違反に対する修正に起因して失敗した場合、障害又はフォールト(fault)が生成される。その場合、コードの実行は、最後に成功した確定したチェックポイント状態までロールバックされ、DBTは、例えばロックを排除しない、よりいっそう保存形式で、不具合を越えて前進するように、その地点から実行を進めてもよい。
一実施例において、DBTは障害のカウント値を追跡し、及び、その特定のロックに対して閾値に到達した場合、ロックエリジョン無しにコードの一部分を再変換し、静的なロックエリジョンの実施例では不可能な適合化をもたらし、その場合において、類似するメカニズムが公のISAにより明示的に提供される(又はそこに含まれる)。
図4は、本開示による別の実施例のブロック図400を示す。DBTモジュール104の一形態は、多数のサブモジュールを含むように詳細に示されている。モジュールについての或る並び方が示されているが、様々な実施例は適切な任意の順番を使用してよいこと、或るモジュールは選択的であってよいこと、及び、他の追加的なモジュール(図示せず)が使用されてもよいことが、認められるであろう。DBTは、(モジュール412により生成される)ネイティブコードへの変換を実行することにより動作するように構成され、そのネイティブコードは、オリジナルプログラムのパブリックISA命令のうちの或る領域に実質的に対応している。変換される領域は、例えば、モジュール404により検出されるようなロックされたクリティカルセクションであってもよい。変換は、モジュール402でコードを表現した後に、DBTにより生成されてもよい。DBTは、全ての変換されたコードを検査し及びそのコードを最適化するように構成されてよい。
最適化モジュール406は、例えば、発見的及び実行時間的な動作(heuristics and runtime behavior)に基づいて最適化を実行するように構成されてもよい。変換は投機的に実行され、実行の影響は、コミット処理により永続的にされてもよいし、或いは、非投機的イベント、外的なイベント又はDBTにより実行される無効な最適化の発見の際にロールバックされてもよい。各々のコミット動作は、1つ以上のパブリックISA命令により、プロセッサの状態を進行させる。本システムは、DBTにおいて静的にメモリ動作をスケジューリングし直すため(又はリオーダリングするため)(例えば、モジュール408)、及び、パブリックISA命令メモリオーダリングが動的な実行の際に乱されないことを有効化するための手段をサポートするように構成されてよい。
適切なロックとともに実行することが一層効率的である場合が存在するので、ロックエリジョン判定モジュール410は、例えばモジュール414のパフォーマンスモニタリングに基づいて、ロックが除外されるべきか否かを判断するように構成されてもよい。ロックを除外する判断は、以下の条件が充足されることの確認に基づいてもよい。
1.DBTは、1つの変換において、ロック動作及び対応するアンロック動作の双方を発見する。変換は、ロック変数のアドレスが、実行時のロック及びアンロックに関して同じであることを確認する。
2.アンロック動作はクリティカルセクションを事後支配する(post-dominate)。すなわち、変換の中で障害のない全ての制御フローは、アンロック動作を含むブロックに導く。
3.ロック、クリティカルセクション及びアンロックは、すべて、プロセッサのトランザクションハードウェアによりサポートされる単独のアトミック領域に適合させられる。
図5は、本開示による別の実施例のブロック図500を示す。トランザクションサポートプロセッサ210の一実施例が複数のモジュールを含むことが詳細に示されており、それらのモジュールは各自の実行の際に最適化ネイティブISAコード領域と相互運用する。モジュールについての或る並び方が示されているが、様々な実施形態は適切な任意の順番を使用してよいこと、或るモジュールは選択的であってよいこと、及び、他の追加的なモジュール(図示せず)が使用されてもよいことが、認められるであろう。コンフリクト検出モジュール502は、投機的実行の間に生じるコンフリクト(又は競合)を検出するように構成される。例えば、変換におけるメモリの読み込み及び書き込み動作は、投機的実行を行うプロセッサのキャッシュメモリの或るライン(領域)に関連するストアのための投機的属性ビット(speculative attribute bit)(又はロードに対するオブザベーションビット(observation bit))を設定する。その属性ビットは、キャッシュに書き込まれるデータが正しいものであることは未だ不明であること、或いは、データが本来のメモリ順序から逸脱してキャッシュから読み込まれたことを示す。属性ビットは、外部エンティティ(例えば、他のスレッド又は他のプロセッサ)がそのキャッシュラインのオーナーシップを要求すべき場合に、ロールバック(又は取り消し)の出現を強制するように構成されてもよい。投機的実行がコミット動作に到達することに成功した場合、キャッシュに関連付けられていた属性ビットはクリアされる(例えば、モジュール508)。すなわち、キャッシュ内のデータ及びそれらに対するメモリアクセスの順序が有効化される。ただし、キャッシュメモリコヒーレンシープロトコルで規定されるように、唯一のライター(writer)がキャッシュラインに対する排他的アクセス権を獲得することが保証される限り、ロールバック無しに、複数のプロセッサで動作する複数の同時リーダー(reader)が許容される。しかしながら、投機失敗(misspeculation)が生じ、プロセッサが、コミットに成功した最後の状態へのロールバックを実行する場合、データキャッシュは、投機的属性ビットが設定されている全てのキャッシュラインを破棄してよい。これは、自動的に、最新の有効な非投機的状態を復元することになる。
命令リオーダリング確認モジュール504は、実行の最中に、DBTにより静的に実行されてよい命令リオーダリングを動的に有効化するように構成されてよい。無効なリオーダリングのイベントが発生した場合、ロールバックが強制され(モジュール506)、再変換がDBTにより実行され、提示している命令のリオーダリングを変更又は削除する。
図6は、本開示の別の実施例による動作のフローチャート600を示す。この動作はロックエリジョンのための方法を提供する。動作610において、第1命令ISAから第2ISAにおける変換されたコードへ、コード領域に関するDBTが実行される。第1ISAはパブリックISAである一方、第2ISAはプロセッサに対してネイティブである。動作620において、DBTの最中に、コード領域のうちのクリティカルセクションに関連するロックが検出される。動作630において、変換されたコードからロックが除外される。動作640において、クリティカルセクション内の変換されたコードが投機的に実行される。動作650において、トランザクションの障害を検出したことに応じて、投機的実行はロールバックされる。動作660において、トランザクションの障害が無かった場合、投機的実行はコミットされる。
図7は、本開示の一実施例についての上位概念的なシステムを示す図700である。システム700はハードウェアプラットフォーム又はコンピューティングデバイス710であってもよく、例えば、スマートフォン、スマートタブレット、パーソナルディジタルアシスタント(PDA)、モジュールインターネットデバイス(MID)、コンバーチブルタブレット、ノートブックコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバー、スマートテレビジョン、或いは、固定されるか移動可能であるかを問わない他の任意のデバイスであってよい。デバイスは、一般に、ディスプレイ780を介してユーザーに様々なインターフェースを提示し、ディスプレイは、例えばタッチスクリーン、液晶ディスプレイ(LCD)又は適切な他の任意の形式のディスプレイであってよい。
システム700はプロセッサ720を含むように示されている。一実施例において、プロセッサ720は任意の個数のプロセッサコアとして実施されてよい。プロセッサ(又はプロセッサコア)は任意のタイプのプロセッサであってもよく、例えば、マイクロプロセッサ、内蔵プロセッサ、ディジタル信号プロセッサ(DSP)、ネットワークプロセッサ、フィールドプログラマブルゲートアレイ、或いは、コードを実行するように構成される他のデバイス等であってよい。プロセッサ720は、シングルスレッドコア又はマルチスレッドコアであってよく、1つのコアに対して1つより多いハードウェアスレッドコンテキスト(又は「論理プロセッサ」)を含んでよい。システム700はプロセッサ720に結合されたメモリ730を含むように示されている。メモリ730は、既知の又は当業者に利用可能な多種多様なメモリのうちの何れであってもよい(メモリは、様々なメモリ階層及び/又はメモリキャッシュを含んでよい)。システム700は、入力/出力(IO)システム又はコントローラ740を含み、IOシステム又はコントローラ740は、プロセッサ720とシステム700のうちの他の要素との間、又は、プロセッサ720とシステム700にとって外部の他の要素(図示せず)との間でデータ通信を可能にする又は管理するように構成される。システム700は、システム700と任意の外的なエンティティとの間の無線通信を可能にするように構成される無線通信インターフェース750を含んでよい。無線通信は、移動電話の通信規格を含む既存の又は将来発展する何らかの通信規格に従っていてもよいし或いはそれにコンパチブルであってよい。
システム700は、上述したように、アプリケーション102におけるロックエリジョンの機会を検出及び利用しつつ、プロセッサ720のネイティブコードISAへのDBTを実行するように構成される。
一実施例では、システム700の様々なコンポーネントがシステムオンチップ(SoC)アーキテクチャにおいて組み合わせられてよいことが、認められるであろう。一実施例では、コンポーネントは、ハードウェアコンポーネント、ファームウェアコンポーネント、ソフトウェアコンポーネント、或いは、ハードウェア、ファームウェア又はソフトウェアの適切な任意の組み合わせであってよい。
本願で説明される方法の実施例は、個別的に又は集合的に命令を保存する1つ以上の記憶媒体(又は記録媒体)を含むシステムで実現されてもよく、命令は本方法を実行するように1つ以上のプロセッサにより実行される。ここで、プロセッサは例えばシステムCPU(例えば、コアプロセッサ)及び/又はプログラム可能な回路を含んでよい。従って、本願で説明される方法による動作は、例えば複数の異なる物理的ロケーションにおける処理構造のような複数の物理デバイスにわたって分散されてもよいことが、意図されている。また、方法の動作は、当業者に理解されるように、個別的に又はサブコンビネーションで実行されてよいことも、意図されている。従って、各フローチャートの動作の全てが実行されることは必須でなく、本開示は、そのような動作の全てのサブコンビネーションが、当業者に理解されているように動作可能であることを、明示的に意図している。
記憶媒体は、任意のタイプの有形媒体を含み、例えば、フロッピディスク、光ディスク、コンパクトディスクリードオンリメモリ(CD-ROM)、再書き込み可能なコンパクトディスク(CD-RW)、ディジタル多用途ディスク(DVD)及び磁気光ディスクを含む任意のタイプのディスク、リードオンリメモリ(ROM)、ダイナミック及びスタティックRAMのようなランダムアクセスメモリ(RAM)、消去可能なプログラマブルリードオンリメモリ(EPROM)、電気的に消去可能なプログラマブルリードオンリメモリ(EEPROM)、フラッシュメモリ、磁気又は光カード等のような任意のタイプの半導体デバイス、或いは、電子的な命令を保存するのに相応しい任意のタイプの媒体を含んでよい。
本願における何らかの実施例で使用される「回路」は、例えば、有線接続された回路、プログラマブル回路、状態マシン回路及び/又はファームウェアを単独で又は何らかの組み合わせで含んでよく、プログラム可能な回路によって実行可能な命令を保存する。アプリケーションは、ホストプロセッサ又は他のプログラム可能な回路等のようなプログラム可能な回路で実行されるコード又は命令として実現されてよい。本願の何らかの実施例で使用されるモジュールは、回路として実現されてもよい。回路は、集積回路チップ等のような集積回路として実現されてもよい。
本開示は、バイナリ変換ベースのプロセッサとともにロックエリジョンの機会を検出及び利用するシステム、デバイス、方法、コンピュータ読み取り可能な媒体及びコンピュータプログラム等を提供する。以下、更なる形態を例示的に列挙する。
デバイスは、第1命令セットアーキテクチャ(ISA)のうちのコード領域を第2ISAにおける変換されたコードに変換し、コード領域のクリティカルセクションに関連するロックを検出及び除外するダイナミックバイナリ変換(DBT)モジュールを含む。デバイスは、クリティカルセクションにおける変換されたコードを投機的に実行するプロセッサも含む。デバイスは、投機的実行の最中に、ロック及び/又はクリティカルセクションに関連するメモリアクセスのコンフリクトを検出し、その検出に応じて投機的な実行をロールバックし、及び、その検出が無い場合に投機的な実行をコミットするトランザクションサポートプロセッサを更に含む。
他のデバイス例は、上記のコンポーネント(又は構成)を含み、メモリアクセスコンフリクトがロックに関連する。
他のデバイス例は、上記のコンポーネントを含み、前記プロセッサは、前記メモリアクセスのコンフリクトが検出されたことに応じてロールバックが実行された後に、前記ロックの下で前記クリティカルセクションにおける前記変換されたコードを再実行する。
他のデバイス例は、上記のコンポーネントを含み、前記DBTモジュールは前記コード領域の命令を静的にリオーダリングし、前記トランザクションサポートプロセッサは実行の最中に前記リオーダリングを動的に有効化する。
他のデバイス例は、上記のコンポーネントを含み、前記DBTモジュールは、前記ロックに関連する検出されたメモリアクセスのコンフリクト数を監視し、コンフリクト数が閾値を超える場合、前記ロックエリジョンを含まない新たなDBTを実行する。
他のデバイス例は、上記のコンポーネントを含み、前記メモリアクセスのコンフリクトは、マルチプロセシングシステムの2つ以上のプロセッサ間のメモリ読み込み及び/又は書き込みのコンフリクトを含む。
他のデバイス例は、上記のコンポーネントを含み、前記DBTモジュールは、実行パフォーマンスのメジャーメント(又は測定)に基づいて、変換されるコードを動的に最適化する。
他のデバイス例は、上記のコンポーネントを含み、前記DBTモジュールは変換されたコードに命令を挿入し、当該命令は、除外されるロックに先行するメモリ動作の影響が、マルチプロセシングシステムのプロセッサにとってグローバルに可視的であるようにする。
他のデバイス例は、上記のコンポーネントを含み、前記デバイスはスマートフォン、ラップトップコンピューティングデバイス、スマートTV又はスマートタブレットである。
他のデバイス例は、上記のコンポーネントを含み、タッチスクリーンであるユーザーインターフェースを更に有する。
別の実施例によれば方法が提供される。本方法は、第1命令セットアーキテクチャ(ISA)のうちのコード領域の、第2ISAにおける変換されたコードへのダイナミックバイナリ変換(DBT)を実行するステップを含む。本方法例は、前記DBTの間に、前記コード領域のクリティカルセクションに関連するロックを検出するステップを含む。本方法例は、前記変換されたコードから前記ロックを除外するステップを更に含む。本方法例は、前記クリティカルセクションにおける変換されたコードを投機的に実行するステップを更に含む。本方法例は、トランザクション障害の検出に応じて、前記投機的な実行をロールバックするステップを更に含む。本方法例は、トランザクション障害が無い場合に投機的な実行をコミットするステップを更に含む。
別の方法例は、上記の動作を含み、前記トランザクション障害に応じてロールバックを実行した後に、前記ロックの下で前記クリティカルセクションにおける前記変換されたコードを再実行するステップを更に有する。
別の方法例は、上記の動作を含み、前記DBTの間に前記コード領域の命令を静的にリオーダリングし、実行の最中に前記リオーダリングを動的に有効化するステップを更に有する。
別の方法例は、上記の動作を含み、前記ロックに関連するトランザクション障害数を監視し、トランザクション障害数が閾値を超える場合、前記ロックエリジョンを含まない新たなDBTを実行するステップを更に有する。
別の方法例は、上記の動作を含み、前記トランザクション障害は、前記ロック及び/又はクリティカルセクションに関連するメモリへのアクセスコンフリクトにより生じる。
別の方法例は、上記の動作を含み、前記DBTは、実行パフォーマンスのメジャーメントに基づいて、変換されるコードを動的に最適化することを更に含む。
別の方法例は、上記の動作を含み、前記DBTは変換されたコードに命令を挿入することを更に含み、当該命令は、除外されるロックに先行するメモリ動作の影響が、マルチプロセシングシステムのプロセッサにとってグローバルに可視的であるようにする。
別の実施例によればシステムが提供される。本システムは、第1命令セットアーキテクチャ(ISA)のうちのコード領域の、第2ISAにおける変換されたコードへのダイナミックバイナリ変換(DBT)を実行する手段を含む。本システム例は、前記DBTの間に、前記コード領域のクリティカルセクションに関連するロックを検出する手段も含む。本システム例は、前記変換されたコードから前記ロックを除外する手段を更に含む。本システム例は、前記クリティカルセクションにおける変換されたコードを投機的に実行する手段を更に有する。本システム例は、トランザクション障害の検出に応じて投機的な実行をロールバックする手段を更に含む。本システム例は、トランザクション障害が無い場合に投機的な実行をコミットする手段を含む。
別のシステム例は、上記のコンポーネントを含み、前記トランザクション障害に応じてロールバックを実行した後に、前記ロックの下で前記クリティカルセクションにおける前記変換されたコードを再実行する手段を更に含む。
別のシステム例は、上記のコンポーネントを含み、前記DBTの間に前記コード領域の命令を静的にリオーダリングする手段と、実行の最中に前記リオーダリングを動的に有効化するステップを更に有する手段とを更に含む。
別のシステム例は、上記のコンポーネントを含み、前記ロックに関連するトランザクション障害数を監視し、トランザクション障害数が閾値を超える場合、前記ロックエリジョンを含まない新たなDBTを実行する手段を更に含む。
別のシステム例は、上記のコンポーネントを含み、前記トランザクション障害は、前記ロック及び/又はクリティカルセクションに関連するメモリへのアクセスコンフリクトにより生じる。
別のシステム例は、上記のコンポーネントを含み、前記DBTは、実行パフォーマンスのメジャーメントに基づいて、変換されるコードを動的に最適化する手段を更に含む。
別のシステム例は、上記のコンポーネントを含み、前記DBTは変換されたコードに命令を挿入することを更に含み、当該命令は、除外されるロックに先行するメモリ動作の影響が、マルチプロセシングシステムのプロセッサにとってグローバルに可視的であるようにする。
別の実施例によれば、命令を保存した少なくとも1つのコンピュータ読み取り可能な記録媒体が提供され、前記命令は、上記の何れかの例に示される方法の動作をプロセッサに実行させる。
別の実施例によれば、上記の何れかの例に示される方法を実行する手段を含む装置が提供される。
本願で使用されている用語及び表現は、説明の用語として非限定的に使用されており、そのような用語及び表現を使用する場合に、図示及び説明された特徴(又はその一部分)についての何らかの均等物を排除するような意図は無く、様々な変形例が特許請求の範囲に属することが認められる。従って、特許請求の範囲はそのような全ての均等物をカバーするように意図されている。様々な特徴、側面及び形態が本願で説明されている。特徴、側面及び形態は、当業者に理解されるように、互いに組み合わせることに加えて変形及び修正する余地がある。従って本開示はそのような組み合わせ、変形及び修正を包含するように解釈されるべきである。

Claims (18)

  1. ロックエリジョンのためのデバイスであって:
    第1命令セットアーキテクチャ(ISA)のうちのコード領域を第2ISAにおける変換されたコードに変換し、前記コード領域のクリティカルセクションに関連するロックを検出及び除外するダイナミックバイナリ変換(DBT)モジュールと、
    前記クリティカルセクションにおける変換されたコードを投機的に実行するプロセッサと、
    トランザクションサポートプロセッサと、
    を有し、前記トランザクションサポートプロセッサは:
    投機的な実行の最中に、前記クリティカルセクションに関連するメモリアクセスのコンフリクトを検出し;
    当該検出に応じて投機的な実行をロールバックし;
    当該検出が無い場合に投機的な実行をコミットする;
    ことを特徴とするデバイス。
  2. 前記プロセッサは、前記メモリアクセスのコンフリクトが検出されたことに応じてロールバックが実行された後に、前記ロックの下で前記クリティカルセクションにおける前記変換されたコードを再実行する、請求項1に記載のデバイス。
  3. 前記DBTモジュールは前記コード領域の命令を静的にリオーダリングし、前記トランザクションサポートプロセッサは実行の最中に前記リオーダリングを動的に有効化する、請求項1に記載のデバイス。
  4. 前記DBTモジュールは、前記ロックに関連する検出されたメモリアクセスのコンフリクト数を監視し、コンフリクト数が閾値を超える場合、前記ロックエリジョンを含まない新たなDBTを実行する、請求項1に記載のデバイス。
  5. 前記メモリアクセスのコンフリクトは、マルチプロセシングシステムの2つ以上のプロセッサ間のメモリ読み込み又は書き込みのコンフリクトを含む、請求項1に記載のデバイス。
  6. 前記DBTモジュールは、実行パフォーマンスのメジャーメントに基づいて、変換されるコードを動的に最適化する、請求項1に記載のデバイス。
  7. 前記DBTモジュールは変換されたコードに命令を挿入し、当該命令は、除外されるロックに先行するメモリ動作の影響が、マルチプロセシングシステムのプロセッサにとってグローバルに可視的であるようにする、請求項1に記載のデバイス。
  8. 前記デバイスはスマートフォン、ラップトップコンピューティングデバイス、スマートTV又はスマートタブレットである、請求項1に記載のデバイス。
  9. タッチスクリーンであるユーザーインターフェースを更に有する請求項1に記載のデバイス。
  10. ロックエリジョンのための方法であって:
    第1命令セットアーキテクチャ(ISA)のうちのコード領域の、第2ISAにおける変換されたコードへのダイナミックバイナリ変換(DBT)を実行するステップ;
    前記DBTの間に、前記コード領域のクリティカルセクションに関連するロックを検出するステップ;
    前記変換されたコードから前記ロックを除外するステップ;
    前記クリティカルセクションにおける変換されたコードを投機的に実行するステップ;
    トランザクション障害の検出に応じて投機的な実行をロールバックするステップ;
    トランザクション障害が無い場合に投機的な実行をコミットするステップ;
    を有する方法。
  11. 前記トランザクション障害に応じてロールバックを実行した後に、前記ロックの下で前記クリティカルセクションにおける前記変換されたコードを再実行するステップを更に有する請求項10に記載の方法。
  12. 前記DBTの間に前記コード領域の命令を静的にリオーダリングし、実行の最中に前記リオーダリングを動的に有効化するステップを更に有する請求項10に記載の方法。
  13. 前記ロックに関連するトランザクション障害数を監視し、トランザクション障害数が閾値を超える場合、前記ロックエリジョンを含まない新たなDBTを実行するステップを更に有する請求項10に記載の方法。
  14. 前記トランザクション障害は、前記クリティカルセクションに関連するメモリへのアクセスコンフリクトにより生じる、請求項10に記載の方法。
  15. 前記DBTは、実行パフォーマンスのメジャーメントに基づいて、変換されるコードを動的に最適化することを含む、請求項10に記載の方法。
  16. 前記DBTは変換されたコードに命令を挿入することを更に含み、当該命令は、除外されるロックに先行するメモリ動作の影響が、マルチプロセシングシステムのプロセッサにとってグローバルに可視的であるようにする、請求項10に記載の方法。
  17. 請求項10ないし16のうちの何れか1項に記載の方法を、デバイスのコンピュータに実行させるコンピュータプログラム。
  18. 請求項17に記載のコンピュータプログラムを記録する記録媒体。
JP2016559164A 2014-03-27 2015-03-10 バイナリトランザクションベースのプロセッサによるロックエリジョン Pending JP2017509083A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/227,014 US20150277914A1 (en) 2014-03-27 2014-03-27 Lock elision with binary translation based processors
US14/227,014 2014-03-27
PCT/US2015/019562 WO2015148099A1 (en) 2014-03-27 2015-03-10 Lock elision with binary translation based processors

Publications (1)

Publication Number Publication Date
JP2017509083A true JP2017509083A (ja) 2017-03-30

Family

ID=54190472

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016559164A Pending JP2017509083A (ja) 2014-03-27 2015-03-10 バイナリトランザクションベースのプロセッサによるロックエリジョン

Country Status (6)

Country Link
US (1) US20150277914A1 (ja)
EP (1) EP3123307A4 (ja)
JP (1) JP2017509083A (ja)
KR (1) KR101970390B1 (ja)
CN (1) CN106030522B (ja)
WO (1) WO2015148099A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507938B2 (en) * 2014-12-23 2016-11-29 Mcafee, Inc. Real-time code and data protection via CPU transactional memory support
US20160283247A1 (en) * 2015-03-25 2016-09-29 Intel Corporation Apparatuses and methods to selectively execute a commit instruction
US10162616B2 (en) * 2015-06-26 2018-12-25 Intel Corporation System for binary translation version protection
CN106897123B (zh) * 2015-12-21 2021-07-16 阿里巴巴集团控股有限公司 数据库操作方法及装置
US10169106B2 (en) * 2016-06-30 2019-01-01 International Business Machines Corporation Method for managing control-loss processing during critical processing sections while maintaining transaction scope integrity
US10073687B2 (en) * 2016-08-25 2018-09-11 American Megatrends, Inc. System and method for cross-building and maximizing performance of non-native applications using host resources
US10282109B1 (en) * 2016-09-15 2019-05-07 Altera Corporation Memory interface circuitry with distributed data reordering capabilities
TWI650648B (zh) * 2018-02-09 2019-02-11 慧榮科技股份有限公司 系統晶片及存取系統晶片中記憶體的方法
DE102018122920A1 (de) * 2018-09-19 2020-03-19 Endress+Hauser Conducta Gmbh+Co. Kg Verfahren zur Installation eines Programms auf einem eingebetteten System, ein eingebettetes System für ein derartiges Verfahren sowie ein Verfahren zur Erstellung einer Zusatzinformation
CN111241010B (zh) * 2020-01-17 2022-08-02 中国科学院计算技术研究所 一种基于缓存划分及回滚的处理器瞬态攻击防御方法
CN117407003B (zh) * 2023-12-05 2024-03-19 飞腾信息技术有限公司 代码翻译处理方法、装置、处理器及计算机设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006518077A (ja) * 2003-02-13 2006-08-03 サン・マイクロシステムズ・インコーポレイテッド 臨界領域を投機的に実行することによりロックを回避するための方法および装置
US20080126755A1 (en) * 2006-09-26 2008-05-29 Youfeng Wu Methods and apparatus to form a transactional objective instruction construct from lock-based critical sections
JP2009508187A (ja) * 2005-08-01 2009-02-26 サン・マイクロシステムズ・インコーポレーテッド クリティカルセクションをトランザクション的に実行することによるロックの回避
JP2012003761A (ja) * 2010-06-14 2012-01-05 Intel Corp 効率的な動的バイナリ変換のためのレジスタマッピング技術を用いた方法、物品及びシステム
WO2013043350A1 (en) * 2011-09-20 2013-03-28 Qualcomm Incorporated Dynamic power optimization for computing devices

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5872990A (en) * 1997-01-07 1999-02-16 International Business Machines Corporation Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
US7930694B2 (en) * 2004-09-08 2011-04-19 Oracle America, Inc. Method and apparatus for critical section prediction for intelligent lock elision
US8190859B2 (en) * 2006-11-13 2012-05-29 Intel Corporation Critical section detection and prediction mechanism for hardware lock elision
CN101470627B (zh) * 2007-12-29 2011-06-08 北京天融信网络安全技术有限公司 一种mips平台下并行多核配置锁的实现方法
US8201169B2 (en) * 2009-06-15 2012-06-12 Vmware, Inc. Virtual machine fault tolerance
US8402227B2 (en) * 2010-03-31 2013-03-19 Oracle International Corporation System and method for committing results of a software transaction using a hardware transaction
US20150032998A1 (en) * 2012-02-02 2015-01-29 Ravi Rajwar Method, apparatus, and system for transactional speculation control instructions
WO2013115816A1 (en) * 2012-02-02 2013-08-08 Intel Corporation A method, apparatus, and system for speculative abort control mechanisms
US9223550B1 (en) * 2013-10-17 2015-12-29 Google Inc. Portable handling of primitives for concurrent execution

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006518077A (ja) * 2003-02-13 2006-08-03 サン・マイクロシステムズ・インコーポレイテッド 臨界領域を投機的に実行することによりロックを回避するための方法および装置
JP2009508187A (ja) * 2005-08-01 2009-02-26 サン・マイクロシステムズ・インコーポレーテッド クリティカルセクションをトランザクション的に実行することによるロックの回避
US20080126755A1 (en) * 2006-09-26 2008-05-29 Youfeng Wu Methods and apparatus to form a transactional objective instruction construct from lock-based critical sections
JP2012003761A (ja) * 2010-06-14 2012-01-05 Intel Corp 効率的な動的バイナリ変換のためのレジスタマッピング技術を用いた方法、物品及びシステム
WO2013043350A1 (en) * 2011-09-20 2013-03-28 Qualcomm Incorporated Dynamic power optimization for computing devices

Also Published As

Publication number Publication date
US20150277914A1 (en) 2015-10-01
WO2015148099A1 (en) 2015-10-01
KR101970390B1 (ko) 2019-04-18
KR20160113651A (ko) 2016-09-30
EP3123307A1 (en) 2017-02-01
CN106030522A (zh) 2016-10-12
EP3123307A4 (en) 2017-10-04
CN106030522B (zh) 2019-07-23

Similar Documents

Publication Publication Date Title
JP2017509083A (ja) バイナリトランザクションベースのプロセッサによるロックエリジョン
JP5592015B2 (ja) ハードウェア制限に基づく調整可能なトランザクション・サイズを利用してコードを動的に最適化する装置、方法およびシステム
US8365016B2 (en) Performing mode switching in an unbounded transactional memory (UTM) system
EP2619654B1 (en) Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
JP5255614B2 (ja) マルチプロセッサ環境におけるトランザクションベースの共有データオペレーション
CN101308462B (zh) 管理对共享存储器单元的存储器访问的方法和计算系统
US10019263B2 (en) Reordered speculative instruction sequences with a disambiguation-free out of order load store queue
US8255626B2 (en) Atomic commit predicated on consistency of watches
US8539465B2 (en) Accelerating unbounded memory transactions using nested cache resident transactions
US8316366B2 (en) Facilitating transactional execution in a processor that supports simultaneous speculative threading
US20070198978A1 (en) Methods and apparatus to implement parallel transactions
US9710280B2 (en) Overlapping atomic regions in a processor
EP2862058B1 (en) A semaphore method and system with out of order loads in a memory consistency model that constitutes loads reading from memory in order
US9990198B2 (en) Instruction definition to implement load store reordering and optimization
US20150095588A1 (en) Lock-based and synch-based method for out of order loads in a memory consistency model using shared memory resources
US20090187906A1 (en) Semi-ordered transactions
US20150095591A1 (en) Method and system for filtering the stores to prevent all stores from having to snoop check against all words of a cache
Zacharopoulos Employing hardware transactional memory in prefetching for energy efficiency

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160926

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180105

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180612