JP5906325B2 - トランザクションをサポートするコンピューターアーキテクチャにおけるコード特殊化のための例外を用いるプログラム及びコンピューティングデバイス - Google Patents

トランザクションをサポートするコンピューターアーキテクチャにおけるコード特殊化のための例外を用いるプログラム及びコンピューティングデバイス Download PDF

Info

Publication number
JP5906325B2
JP5906325B2 JP2014547162A JP2014547162A JP5906325B2 JP 5906325 B2 JP5906325 B2 JP 5906325B2 JP 2014547162 A JP2014547162 A JP 2014547162A JP 2014547162 A JP2014547162 A JP 2014547162A JP 5906325 B2 JP5906325 B2 JP 5906325B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
computing device
exception
response
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014547162A
Other languages
English (en)
Other versions
JP2015507254A (ja
Inventor
クリシュナスワミー、アービンド
エム. ラベリー、ダニエル
エム. ラベリー、ダニエル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2015507254A publication Critical patent/JP2015507254A/ja
Application granted granted Critical
Publication of JP5906325B2 publication Critical patent/JP5906325B2/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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/49Partial evaluation
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/45525Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Description

いくつかのコンピューターアーキテクチャは、制限付きトランザクショナルメモリ(RTM)システム及びソフトウェアトランザクショナルメモリ(STM)システム等のハードウェアトランザクショナルメモリシステム及び/又はソフトウェアトランザクショナルメモリシステムをサポートすることができる。トランザクショナルメモリシステムでは、コンピューター命令は、例えば、マルチスレッドアプリケーションのシングルスレッド演算として同時並行して実行することが認められている。これを行うために、コンピュータープログラムにおける命令のシーケンスは、他のスレッド上で実行されている命令とは独立に共有メモリに対して読み出し命令及び書き込み命令を実行することができるトランザクションとして定義される。トランザクションは、例えば、トランザクショナルシステムのタイプに応じて、インタープリター、トランスレーター、プログラムコンパイラー、オプティマイザー、又はアプリケーションプログラミングインターフェース(API)によって定義することができる。
トランザクショナルメモリシステムは、同時並行して実行されている命令が共有メモリに同時に又は間違った順序でアクセスすることを防止する制御メカニズムを備える。例えば、妥当性確認メカニズムは、例えば、トランザクションが完了する前に、他のプログラムスレッドがそのトランザクションによってアクセスされたメモリを変更することなく、そのトランザクションが完了に成功したことを検証する。妥当性確認が成功した場合、トランザクションの結果は、(例えば、「コミット」演算によって)不変のものとされる。
トランザクションをコミットすることができない場合、例外が生成される場合もあるし、トランザクションがアボートされる場合もある。例外が生成された場合又はトランザクションがアボートされた場合、トランザクションの実行は、プログラムコードにおけるそれよりも前のポイント、例えば、「チェックポイント」にロールバックすることができる。トランザクションがアボートされた場合、トランザクションが完了に成功するまで又は単に終了するまで、トランザクションを最初から再実行することができる。
コンピュータープログラムコードは、多くの特殊化命令(specialized instructions)を含むことができる。これらの特殊化命令のそれぞれは、プログラムの実行中に満たすことができる特定の条件をハンドリングするように設計することができる。コード特殊化は、ランタイムにおいて、通常発生する条件(commonly occurring condition)についてコンピュータープログラム又はその一部分の最適化を試みるプログラム最適化技法である。しかしながら、コード特殊化は、通常、性能に影響を与える可能性がある分岐命令を追加する。
本明細書に説明される本発明は、限定としてではなく例として、添付図に示されている。説明図を単純明瞭にするために、図に示されている要素は、必ずしも一律の縮尺で描かれているとは限らない。例えば、いくつかの要素の寸法は、明瞭にするために他の要素に対して相対的に誇張されている場合がある。さらに、適切とみなされる場合には、対応する要素又は類似する要素を示すために、参照符号が図の間で繰り返されている。
コンピューティングデバイスの少なくとも1つの実施形態の単純化したブロック図である。 図1のコンピューティングデバイスのプロセッサコアの少なくとも1つの実施形態の単純化したブロック図である。 コード特殊化のための方法の少なくとも1つの実施形態の単純化したモジュール図である。 コード特殊化のための方法の少なくとも1つの実施形態の単純化した流れ図である。 比較命令及び分岐命令を含む特殊化コンピューター命令の少なくとも1つの実施形態の単純化した擬似コード説明図である。 比較命令及び分岐命令を含まない特殊化コンピューター命令の少なくとも1つの実施形態の単純化した擬似コード説明図である。
本開示の概念は、様々な変更及び代替の形態を受ける入れることができるが、それらの概念の特定の例示的な実施形態が図面に例として示され、本明細書において詳細に説明される。しかしながら、本開示の概念を開示された特定の形態に限定する意図はなく、それとは逆に、意図するものは、添付の特許請求の範囲によって画定される本発明の趣旨及び範囲内に含まれる全ての変更、均等物、及び代替形態を包含することであることが理解されるべきである。
以下の説明では、本開示のより十分な理解を提供するために、ロジックの実施態様、オペコード、オペランドを指定する手段、リソース分割/共有/複製の実施態様、システム構成要素のタイプ及び相互関係、並びにロジック分割/統合の選択肢等の多数の具体的な詳細が述べられている。しかしながら、本開示の実施形態は、そのような具体的な詳細がなくても実施することができることが当業者によって理解されるであろう。それ以外の場合には、制御構造、ゲートレベル回路、及び完全なソフトウェア命令シーケンスは、本発明を分かりにくくしないために詳細に示されていない。当業者であれば、含まれた説明を用いると、必要以上の実験を行うことなく、適切な機能を実施することができるであろう。
本明細書において「1つの実施形態」、「一実施形態」、「一例の実施形態」等と言うとき、これは、説明される実施形態が特定の特徴、構造、又は特性を含むことができるが、あらゆる実施形態がその特定の特徴、構造、又は特性を必ずしも含んでいるとは限らない場合があることを示す。その上、そのような語句は、必ずしも同じ実施形態を指しているとは限らない。さらに、特定の特徴、構造、又は特性が一実施形態に関して説明されるとき、明示的に説明されているか否かを問わず、そのような特徴、構造、又は特性を他の実施形態に関して実施することが当業者の知識の範囲内にあることを述べておく。
本発明の実施形態は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの任意の組み合わせで実施することができる。コンピューターシステムにおいて実施される本発明の実施形態は、構成要素間の1つ又は複数のバスベースの相互接続部及び/又は構成要素間の1つ又は複数のポイントツーポイント相互接続部を備えることができる。本発明の実施形態は、一時的又は非一時的な機械可読媒体によって担持されるか又はこの機械可読媒体上にストアされる命令として実施することもできる。これらの命令は、1つ又は複数のプロセッサが読み出して実行することができる。機械可読媒体は、機械(例えば、コンピューティングデバイス)によって可読な形態で情報をストア又は送信するための任意のデバイス、メカニズム、又は物理構造体として具現化することができる。例えば、機械可読媒体は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、ミニSDカード又はマイクロSDカード、メモリスティック、電気信号等として具現化することができる。
図面において、デバイス、モジュール、命令ブロック、及びデータ要素を表す要素等の図的要素の特定の配列又は順序付けは、説明を容易にするために示されている場合がある。しかしながら、図面におけるこれらの図的要素の特定の順序付け又は配列は、プロセスの特定の順序又はシーケンスが必要とされていることも、プロセスの分離が必要とされていることも暗に意味するように意図しているものではないことが当業者によって理解されるべきである。さらに、図的要素が図面に含まれているということは、そのような要素が全ての実施形態において必要とされることを暗に意味するように意図しているものでもなければ、そのような要素によって表される特徴部をいくつかの実施形態における他の要素に含めることができないか又は他の要素と組み合わせることができないことを暗に意味するように意図しているものでもない。
一般に、命令ブロックを表すのに用いられる図的要素は、任意の好適な形態の機械可読命令を用いて実施することができる。この任意の好適な形態の機械可読命令は、ソフトウェアアプリケーション又はファームウェアアプリケーション、プログラム、関数、モジュール、ルーチン、プロセス、プロシージャ、プラグイン、アプレット、ウィジェット、コードフラグメント等である。そのような各命令は、任意の好適なプログラム言語、ライブラリー、アプリケーションプログラミングインターフェース(API)、及び/又は他のソフトウェア開発ツールを用いて実施することができる。例えば、いくつかの実施形態は、Java、C++、及び/又は他のプログラム言語を用いて実施することができる。
同様に、データ又は情報を表すのに用いられる図的要素は、レジスタ、データストア、テーブル、レコード、アレイ、インデックス、ハッシュ、マップ、ツリー、リスト、グラフ、ファイル(任意のファイルタイプ)、フォルダー、ディレクトリー、データベース等の任意の好適な電子的配列体又は電子的構造体を用いて実施することができる。
さらに、図面において、実線若しくは破線又は矢印等の接続要素が、2つ以上の他の図的要素間の接続、関係、又は関連付けを示すのに用いられている場合、そのような接続のいかなる要素がないことも、接続、関係、又は関連付けが存在する可能性がないことを暗に意味するように意図するものではない。換言すれば、要素間のいくつかの接続、関係、又は関連付けは、本開示を分かりにくくしないように図面に示されていない場合がある。また、図示を容易にするために、要素間の複数の接続、関係、又は関連付けを表すのに、単一の接続要素が用いられる場合がある。例えば、接続要素が、信号、データ、又は命令の通信を表す場合、そのような要素は、通信を実施するために必要に応じて、1つ又は複数の信号パス(例えば、バス)を表すことができることが当業者によって理解されるべきである。
次に図1を参照すると、一例示のコンピューティングデバイス100が、少なくとも1つのプロセッサ110、メモリ120、入力/出力(I/O)サブシステム122、記憶デバイス124、及び1つ又は複数の周辺デバイス140を備える。プロセッサ110は、図2に示すようなトランザクショナルメモリシステム222をサポートする。以下でより詳細に説明するように、コンピュータープログラムコードが実行中に解析される。スペシャライザー228は、トランザクショナルメモリシステム222とインターフェースして、1つ又は複数の通常発生する条件についてのコード領域又はトランザクションを特殊化する。スペシャライザー228は、従来のコード特殊化技法が用いられるときにしばしば行われるように分岐命令をプログラムコードに追加するのではなく、トランザクショナルメモリシステム222の例外ハンドリング特徴部を利用するように構成された1つ又は複数の無分岐命令(branchless instructions)をコード領域又はトランザクションに挿入する。より具体的には、スペシャライザー228によって挿入された命令(複数の場合もある)は、通常発生する条件が満たされない場合に例外を生成するように構成されている。このようにして、通常のプログラムの流れが、通常発生する条件が満たされることに応答して割り込まれることなく、また分岐することなく継続することが可能になる。
コンピューティングデバイス100は、特定のアプリケーションに応じて、例えば、デスクトップコンピューターシステム、ラップトップコンピューターシステム若しくはタブレットコンピューターシステム、サーバー、エンタープライズコンピューターシステム、コンピューターのネットワーク、ハンドヘルドコンピューティングデバイス、又は他の電子デバイス等の任意のタイプのコンピューティングデバイス内に又は任意のタイプのコンピューティングデバイスとして具現化することができる。
例示のプロセッサ110は、単一のコア112、114、116から構成される複数のプロセッサコア又は論理セクションを備える。これらのプロセッサコア又は論理セクションは、本明細書では、説明を容易にするために単に「コア」と呼ばれる。コア112、114、116のうちの1つ又は複数は、マルチスレッドコンピュータープログラムを処理するように構成することができる。コア112、114、116は、1つ又は複数のキャッシュメモリ118を備えるか又はそれらのキャッシュメモリに通信結合される。キャッシュメモリ118は、スペシャライザー228及び/又はコンピューティングデバイス100の他の構成要素の演算中にデータ及び/又は命令を一時的にストアするのに利用することができる。
キャッシュメモリ118に加えて、プロセッサ110及び/又はそのコア112、114、116は、メモリ120を備えるか、又はそうでない場合にはメモリ120に通信結合される。メモリ120のいくつかの部分は、ダイナミックランダムアクセスメモリデバイス(DRAM)、同期ダイナミックランダムアクセスメモリデバイス(SDRAM)、ダブルデータレートダイナミックランダムアクセスメモリデバイス(DDR SDRAM)、及び/又は他の揮発性メモリデバイス等の任意のタイプの好適なメモリデバイスとして具現化することができる。
プロセッサ110は、I/Oサブシステム122にも通信結合されている。具体的には図示していないが、I/Oサブシステム122は、通常、メモリコントローラー(例えば、メモリコントローラーハブ(MCH)又はノースブリッジ)と、入力/出力コントローラー(例えば、入力/出力コントローラーハブ(ICH)又はサウスブリッジ)と、ファームウェアデバイスとを備える。もちろん、他の実施形態では、他の構成を有するI/Oサブシステムを用いることができる。例えば、いくつかの実施形態では、I/Oサブシステム122は、システムオンチップ(SoC)の一部分を成すことができ、プロセッサ110及びコンピューティングデバイス100の他の構成要素とともに、単一の集積回路チップ上に組み込むことができる。したがって、I/Oサブシステム122の各構成要素は、いくつかの実施形態では、共通の集積回路チップ上に位置することができることが理解されるであろう。
I/Oサブシステム122は、1つ又は複数の記憶デバイス124に通信結合されている。記憶デバイス124のいくつかの部分は、ディスク記憶デバイス(例えば、ハードディスク)、メモリカード、メモリスティック等の、データ及び/又は命令をストアするための任意の好適なデバイスとして具現化することができる。いくつかの実施形態では、オペレーティングシステム(O/S)126、プログラムコード(例えば、アプリケーションコード)128の1つ又は複数のシーケンス、プログラムコンパイラー130、及び/又はデータベース管理システム(DBMS)132を記憶デバイス124において具現化することができる。実行中に、O/S126、コード128、コンパイラー130、及び/又はDBMS132のいくつかの部分を、より高速な処理又は他の理由のためにメモリ120及び/又はキャッシュ118内にロードすることができる。
I/Oサブシステム122は、1つ又は複数の周辺デバイス140に通信結合することができる。周辺デバイス(複数の場合もある)140は、例えば、コンピューティングデバイス100の使用目的に応じて、1つ又は複数のネットワークインターフェース、グラフィックスアダプター及び/又はビデオアダプター、キーボード、タッチスクリーン、ディスプレイ、プリンター、データ記憶デバイス、及び/又は他の周辺デバイスを含むことができる。さらに、コンピューティングデバイス100は、説明を明瞭にするために図1に図示していない他の構成要素、部分構成要素、及びデバイスを備えることができることが理解されるべきである。
一般に、コンピューティングデバイス100の構成要素は、1つ又は複数の信号パスによって図1に示すように通信結合される。これらの信号パスは、双方向矢印として図的に表されている。そのような信号パスは、それぞれのデバイス間の通信を容易にすることが可能な任意のタイプの有線又は無線の信号パスとして具現化することができる。例えば、信号パスは、任意の数のワイヤー、プリント回路基板トレース、ビア、バス、ポイントツーポイント相互接続、介在デバイス等として具現化することができる。
次に図2を参照すると、例示のプロセッサコア112は、フェッチユニット210、論理ユニット212、1つ又は複数のレジスタ214、実行ユニット216、及びリタイアメントユニット218を備える。具体的に図示していないが、コア114、116のうちの1つ又は複数は、コア112と同じ又は類似の構成を有することができることが理解されるべきである。フェッチユニット210、論理ユニット212、レジスタ214、実行ユニット216、及びリタイアメントユニット218のそれぞれは、コンピューター回路部として、例えば、コア112の中央処理ユニットの電子構成要素として具現化することができる。
コンピューティングデバイス100の動作中、フェッチユニット210は、コア112によって実行される命令を、キャッシュ118、メモリ120、及び/又は記憶デバイス124から取得する。論理ユニット212は、命令を処理し、実行ユニット216が実行することができる形態(例えば、機械レベルの命令)に変換する。トランザクショナルメモリシステム222の設計によれば、実行ユニット216が命令の実行に成功した後、リタイアメントユニット218は、それらの命令をコミットし、次いで、(例えば、レジスタをデアロケートすること又はプロセッサ状態を更新することによって)それらの命令をリタイアさせることができる。レジスタ214は、データ値、ポインターアドレス、及び/又はトリップカウント等の、命令の処理及び/又は実行に関与する値をストアするのに用いることができる。
一般に、トランスレーター220は、プログラマーがアクセス可能なコンピューター命令を、プロセッサアーキテクチャと適合した実行可能形態にトランスレートするように構成されている。例示の実施形態では、トランスレーター220は、プログラムコードを、トランザクショナルメモリシステム222をサポートするコンピューターアーキテクチャ上で実行されるように適応させる。例えば、ソフトウェアトランザクショナルメモリシステムを備えることができる他の実施形態では、トランスレーター220は、特定の実施態様に応じて、コンパイラー、アプリケーションプログラミングインターフェース(API)、データベース管理システム等として具現化することができる。
トランスレーター220は、オプティマイザー226を備える。一般的に言えば、オプティマイザー226は、コンピュータープログラムの1つ又は複数の属性を、そのプログラムの実行中に最小又は最大にするように構成されている。当業者が理解すべきであるように、特定のアプリケーション又はシステム設計の要件に応じて、用いることができる多くのタイプの最適化が存在する。例えば、いくつかのオプティマイザーは、プログラムコードを検査して、実行頻度の高い特定のシーケンスにおいて、コンピューター命令のいずれかのシーケンスがより少ないコードと置き換えることができるか否かを確かめる。
例示の実施形態では、オプティマイザー226は、共有メモリへのアクセスを必要とするコードの領域(例えば、ロード命令又はストア命令を含むコード領域)を識別し、それらのコードの領域をトランザクションと定義する。オプティマイザー226は、トランザクションを定義するために必要に応じてチェックポイント及びコミット命令をコード領域内に挿入する。いくつかの実施形態では、バイナリートランスレーションダイナミックオプティマイザー、又は命令のシーケンスに遭遇すると、それらを最適化し、次いで、最適化した命令をキャッシュするように構成された類似のデバイスを用いることができる。他の実施形態では、スタティックオプティマイザーを用いることができる。
オプティマイザー226は、スペシャライザー228を部分構成要素として備えることもできるし、スペシャライザー228は、図示するように、トランスレーター220の別個の構成要素として具現化することもできる。スペシャライザー228は、通常発生する条件について、コンピューター命令のシーケンスを最適化するように構成されている。特定の条件が通常発生するものであるとみなされるか否かは、(例えば、プログラマーが)事前に決定することもできるし、(例えば、コンピューター命令の以前の実行の結果として)「オンザフライ」で決定することもできる。コンピューター命令を特殊化することが望ましいとすることができる通常発生する条件のいくつかの例には、ランタイム曖昧性除去チェック(runtime disambiguation checks)(例えば、コードは、特定のエイリアスが発生する場合又はエイリアスがない場合に特殊化される)、値特殊化(例えば、コードは、NULL等の変数の高頻度で生じる値が発生する場合に特殊化される)、及びループマルチバージョニング(loop multiversioning)(例えば、コードは、特定のループトリップカウントが発生する場合に特殊化される)が含まれる。
図3〜図6に関して以下で説明するように、例示のスペシャライザー228は、新たな分岐命令を何ら導入することなく、トランザクショナルメモリシステム222の特徴部を用いて、通常発生する条件についてコンピューター命令のシーケンスを最適化するように構成されている。
例示のトランザクショナルメモリシステム222は、制限付きトランザクショナルメモリ(RTM)システム等の、トランザクションをサポートするハードウェアシステムとして具現化される。ただし、他の実施形態では、ソフトウェアトランザクショナルメモリシステム(STM)又は例外に対する制御を暗黙的に転送する他のシステムを用いることができることが理解されるべきである。トランザクショナルメモリシステム222は、チェックポイントロジック230、トランザクション実行セマンティクス232、オーバーフローロジック234、及び例外ハンドラー236を備える。
チェックポイントロジック230は、オプティマイザー226とインターフェースして、チェックポイントを確立するとともにコンピューター命令のシーケンス内にコード領域又はトランザクションを定義するように構成されたコンピューター命令を備える。加えて、チェックポイントロジック230は、チェックポイント命令に応答して行われる動作(複数の場合もある)を指定することができる。例えば、チェックポイントロジック222は、チェックポイント命令に応答して、コア112又はコンピューティングデバイス100の他の構成要素の特定の状態に関係したデータのストアを開始することができる。
トランザクション実行セマンティクス232は、プログラムコードにおいてトランザクショナルメモリシステム222の特徴部を起動して利用するのに用いることができるセマンティクス(例えば、命令又はコードライブラリー)を備える。例えば、トランザクション実行セマンティクス232は、例外に対する制御の(例えば、システム設計に応じて、インタープリター又はネイティブ実行への)暗黙的な転送を可能にする。例示の実施形態では、トランザクション実行セマンティクス232は、チェックポイントセマンティクス、ロールバックセマンティクス、及びコミットセマンティクス、並びにブール又はビット単位の論理のためのセマンティクス、算術のためのセマンティクス、及び例外ハンドラー236を起動するためのセマンティクスを備える。
オーバーフローロジック234は、オーバーフローが発生した(例えば、或る値が、キャッシュ118又はメモリ120にストアすることができる最大サイズを超えた)場合に行われる動作(複数の場合もある)を指定するように構成されたロジックを備える。例えば、オーバーフローロジック234は、オーバーフローイベントに応答して、コンピューティングデバイス100又はその構成要素の状態に関係したデータをストアすることができる。
例外ハンドラー236は、フェッチユニット210によって取得された命令によって例外が生成された場合に行われる動作(複数の場合もある)を決定するように構成されたロジックを備える。例えば、例外ハンドラー236は、プログラム実行を命令のシーケンス内の以前のチェックポイントにロールバックし、そのチェックポイントから実行を続けるか、又はトランザクションをアボートするように構成されたロジックを備えることができる。
算術論理ユニット(ALU)224は、算術ユニット240及び論理ユニット242を備える。算術ユニット240は、加算、減算、除算、乗算等の算術演算をハンドリングするように構成されている。論理ユニット242は、アンド演算、オア演算、及び排他的オア演算等のブール及び/又はビット単位の論理演算をハンドリングするように構成されている。
次に図3を参照すると、動作中、コンピューター命令322のシーケンスが、トランスレーター220に入力される。命令322は、オプティマイザー226及び/又はスペシャライザー228によってまだ処理されていないので、「特殊化されていない」コードと呼ばれる。本明細書において説明したようなトランスレーター220(オプティマイザー226及びスペシャライザー228を備える)による処理後、命令322の最適化及び/又は特殊化バージョン330が生成される。これらの最適化及び/又は特殊化命令330は、実行ユニット216による実行までキャッシュ118にストアすることができる。
次に図4を参照すると、コードスペシャライザー228によって実行可能な例示の方法400が示されている。ブロック410において、方法400は、オプティマイザー226によってコード領域又はトランザクションと定義された1つ又は複数の命令を(例えば、キャッシュ118又はメモリ120から)取得する。この開示において、「コード領域」は、トランスレーター220(例えば、オプティマイザー226)によって、少なくとも1つのトランザクションを含むものと判断されたコンピューター命令のシーケンスを含むことができる。換言すれば、いくつかの実施形態では、コード領域は、1つ又は複数のトランザクションを含むことができる一方、他の実施形態では、コード領域は、単一のトランザクションを含むことができる。
例示の実施形態では、トランザクションは、チェックポイント命令及びその後に続くコミット命令によって定義される。ブロック412において、方法400は、コード領域内の各トランザクションを解析して、トランザクション内の1つ又は複数の命令のうちのいずれが、通常発生する条件に応答して実行可能であるように所望されているのかを決定する。この決定を行うために、方法400は、通常発生する条件が満たされた場合にのみ実行される或る特定の命令が存在するか否かを検討することができる。代替的に又は追加的に、方法400は、通常発生する条件に応答して、トランザクション内の命令の全て又は複数を実行することができるが、通常発生する条件に応答して、それらの命令のうちのいくつかのみを実行することが望ましい場合があると判断することができる。これは、例えば、コードのいくつかの部分が異なる条件について最適化されているときに当てはまる場合がある。
ブロック414において、方法400は、1つ又は複数の無分岐命令をコード領域内に挿入する。これらの無分岐命令は、通常発生する条件についての通常のプログラムの流れ(例えば、分岐を有しない)を保存するように構成されている。例示の実施形態では、無分岐命令(複数の場合もある)は、通常発生する条件が満たされないことに応答して、例外を生成する(それによって、例外ハンドラー236を起動する)ように構成された少なくとも1つの命令を含む。無分岐命令は、ALU224がサポートすることができる任意の形態の非分岐(non-branching)の論理演算及び/又は算術演算を含むことができる。換言すれば、ブロック414の結果として、比較命令及び分岐命令はコード領域内に挿入されない。
ブロック416において、方法400は、特定のアプリケーション又は設計に適切な場合があるように、通常発生する条件に応答して実行可能であるように所望されていないいずれかの命令をコード領域内に識別し、例外ハンドラー236とインターフェースして、それらの命令を例外ハンドリングメカニズム(例えば、ロールバック命令又はアボート命令)に関連付ける。トランザクショナルメモリシステム及び例外に対する制御を暗黙的に転送する他のシステムでは、通常発生する条件に応答して実行可能でない命令の制御及び実行の転送は、例外ハンドラー236によって暗黙的にハンドリングされる。
ブロック418において、方法400は、通常発生する条件に応答して実行可能であるように所望されていない命令(例えば、ブロック416において例外に関連付けられた命令)をコード領域から除去する。これは、例えば、命令の周囲にコメント括弧を挿入することによって行うことができる。命令は、(例えば、通常発生しない条件(uncommonly occurring condition:まれに発生する条件)が生じた場合に、プログラムがアボートするように)完全に除去することもできるし、プログラムコードのシーケンシャルリスト内の別のロケーションに移動させることもできる。このようにして、コード領域又はトランザクションは、通常発生する条件を対象にするコードのみを含むように特殊化することができる。その上、通常発生する条件に応答して実行可能であるように所望されているコードが最適化された場合、コード領域は、最適化されたコードのみを含むことができる。通常発生しない条件のハンドリングを対象にするか、又は通常発生する条件に応答して実行可能であるように所望されていないいずれのコードも、最適化されないまま残すこともできるし、オプティマイザー226によって別個に処理することもできる。
次に図5を参照すると、従来のコード特殊化技法を用いて特殊化されたコンピューター命令522のシーケンスの一例が示されている。命令522は、コード領域532を含む。図示していないが、コード522は、他のコンピューター命令及び/又はコード領域も同様に含むことができることが理解されるべきである。
従来のコード特殊化技法を用いて処理した後、コード領域532が、その後にコミット命令550がシーケンシャルに続くチェックポイント命令540によって定義される。チェックポイント命令540とコミット命令550との間において、比較命令及び分岐命令542がコード領域532に追加されている。比較命令及び分岐命令542は、2つのレジスタr1及びr2にストアされたデータを比較する。r1及びr2にストアされた値が等しい場合、プログラム実行は、「Unoptimized version」(最適化されていないバージョン)というラベルによって示されているように、通常発生する条件が満たされない場合に実行されるように構成された命令544をスキップする。
プログラムフローは、「Optimized version」(最適化されたバージョン)ラベルにジャンプし、それから、通常発生する条件が満たされた場合に実行されるように構成された命令546の実行を継続する。命令546が実行を終了すると、プログラムフローは、コミット命令550に進む。
比較命令及び分岐命令542の結果が、r1及びr2にストアされたデータが等しくないことを示す場合、プログラムフローは、命令544の実行に進む。命令544が実行を終了すると、プログラムフローは、Fallthroughラベル548にジャンプする。上記例から見て取ることができるように、分岐は、通常発生する条件(例えば、r1がr2に等しい)が満たされるときと、通常発生しない条件(例えば、r1がr2に等しくない)が満たされるときとの双方のときに行われる。
次に図6を参照すると、本明細書において開示したようなスペシャライザー228によって処理された後のコード領域632を含むコンピューター命令622のシーケンスが示されている。この命令のシーケンスの残りの部分(例えば、命令622のシーケンスのうち、コード領域632の外部にある部分)は、コード領域632の処理による影響を受けないまま維持される場合もあるし、コード領域632の処理によって変更される場合もある。例えば、通常発生しない条件の発生に応答して実行されるように構成された命令は、コード領域632から除去して命令622のシーケンス内の他の箇所に配置することができる。
特殊化されたコード領域632は、比較命令及び分岐命令を含まない。特殊化されたコード領域632は、チェックポイント命令640及びコミット命令650によって定義される。チェックポイント命令640とコミット命令650との間において、例外発生命令642、644、646のシーケンスがコード領域632内に挿入される。図示した例では、例外発生命令642、644、646は、ブール又はビット単位の論理命令(642)、算術関数(644)、及び例外生成命令646を含む。
より具体的には、図示した例では、排他的OR(XOR)関数が、レジスタr1及びr2にストアされたデータを比較するのに用いられる。r1及びr2にストアされたデータが等しい場合、XOR関数の結果は0であり、この値0はr1にストアされる。加算関数(例えば、ADD)が、r1の値を最大許容整数(例えば、$INT_MAX)に加算する。r1の値が0以外である場合、r1及び$INT_MAXの和が最大許容整数よりも大きいので、オーバーフローフラグがセットされる。
オーバーフローフラグがセットされている場合、例外生成命令(例えば、INTO)が、例外ハンドラー236を起動する例外を生成する。オーバーフローフラグがセットされていない場合、レジスタr1及びr2にストアされたデータは等しく、プログラムフローは、割り込みを受けることも分岐することもなく、通常発生する条件(この例では、r1及びr2が等しいという条件)について最適化された命令のシーケンスを継続する。例えば、いくつかの実施形態では、オーバーフローフラグがセットされていない場合、NOP(演算が実行されない)命令を発行することができる。通常発生する条件についての命令の実行に続いて、プログラムフローはコミット命令650に進む。
オーバーフローフラグがセットされ、それによって、通常発生しない条件が満たされていることが示されている場合、例外ハンドラー236は、トランザクションをロールバックし及び/又はプログラムフローを、通常発生しない条件の場合に実行される命令のロケーションにリダイレクトするように構成することもできるし、トランザクションをアボートすることもできる。
本開示を図面及び上記説明に詳細に図示及び説明してきたが、そのような図示及び説明は、その性質上、限定ではなく例示であるとみなされるべきである。単に例示の実施形態が図示及び説明されていること、並びに、本開示の趣旨に含まれる全ての改変及び変更は保護されるように所望されていることが理解される。さらに、本開示の態様は、ハードウェアベースのトランザクショナルメモリシステムとの関連で説明されているが、様々な態様は、他の用途、例えば、トランザクションメモリシステム又は例外に対する制御を暗黙的に転送する他のシステムの特徴部が利用可能である、1つ又は複数の通常発生する条件についてプログラムコードを特殊化することが所望されている任意の用途(例えば、ハードウェアベースのトランザクショナルシステム及び/又はソフトウェアベースのトランザクショナルシステム)を有することが理解されるであろう。そのような用途は、例えば、コンパイラー、システムソフトウェア若しくはアプリケーションソフトウェア、及び/又はデータベースシステムを含むことができる。ここで本実施形態の例を項目として示す。
[項目1]
方法であって、
実行中に、通常発生する条件が満たされることに応答して、トランザクショナルメモリシステムによって実行可能な少なくとも1つの第1の命令を含むコンピューター命令のシーケンスを解析することと、
通常発生する条件が満たされるか否かを判断するとともに、通常発生する条件が満たされないことに応答してトランザクショナルメモリシステムの例外ハンドリング特徴部とインターフェースするように構成された少なくとも1つの無分岐命令をコンピューター命令のシーケンスに挿入することと、
を含む、方法。
[項目2]
コンピューター命令のシーケンス内において少なくとも1つの第2の命令を識別することであって、該少なくとも1つの第2の命令は、通常発生する条件が満たされないことに応答して実行可能であることと、少なくとも1つの第2の命令を、通常発生する条件が満たされないことに応答してトランザクショナルメモリシステムの例外ハンドリング特徴部を起動するように構成された少なくとも1つの例外発生命令に関連付けることとを含む、項目1に記載の方法。
[項目3]
少なくとも1つの第2の命令をコンピューター命令のシーケンスから除去することを含む、項目1に記載の方法。
[項目4]
少なくとも1つの第1の命令を通常発生する条件について最適化することを含む、項目1に記載の方法。
[項目5]
少なくとも1つの無分岐命令を比較命令及び分岐命令の代わりにコンピューター命令のシーケンスに挿入することを含む、項目1に記載の方法。
[項目6]
少なくとも1つの無分岐命令において、メモリレジスタが特定の値を保持するか否かを判断することを含む、項目1に記載の方法。
[項目7]
特定の値が符号付きであるか否かを判断することと、特定の値が符号付きである場合に、特定の値に関連付けられた符号ビットをマスクすることとを含む、項目6に記載の方法。
[項目8]
少なくとも1つの無分岐命令において、ポインターが特定のメモリアドレスに関連付けられているか否かを判断することを含む、項目1に記載の方法。
[項目9]
少なくとも1つの無分岐命令において、データの一部が特定の値を有するか否かを判断することを含む、項目1に記載の方法。
[項目10]
少なくとも1つの無分岐命令において、トリップカウントが特定の値を有するか否かを判断することを含む、項目1に記載の方法。
[項目11]
少なくとも1つの無分岐命令において、少なくとも1つの例外ハンドリング命令を起動することであって、コンピューター命令のシーケンスの実行をチェックポイントにロールバックするか又はコンピューター命令のシーケンスの実行をアボートすることを含む、項目1に記載の方法。
[項目12]
通常発生する条件が満たされないことに応答して少なくとも1つの例外ハンドリング命令を起動することと、少なくとも1つの例外ハンドリング命令の起動することに応答して最適化されていない命令を実行することとを含む、項目1に記載の方法。
[項目13]
少なくとも1つの第1の命令の前に、少なくとも1つの無分岐命令をコンピューター命令のシーケンスに挿入することを含む、項目1に記載の方法。
[項目14]
チェックポイント命令及びコミット命令をコンピューター命令のシーケンス内に挿入することによって、コンピューター命令のシーケンスの少なくとも1つの命令を、トランザクショナルメモリシステムによって実行するように構成されたトランザクションとして定義することを含む、項目1に記載の方法。
[項目15]
通常発生する条件が満たされないことに応答して、ハードウェアベースのトランザクショナルメモリシステム及びソフトウェアベースのトランザクショナルメモリシステムのうちの少なくとも一方とインターフェースすることを含む、項目1に記載の方法。
[項目16]
コンピューティングデバイスであって、
少なくとも1つのプロセッサと、
該少なくとも1つのプロセッサに結合されたコンピューター回路部であって、少なくとも1つのプロセッサに項目1〜15のいずれか1項に記載の方法を実行させるように構成されている、コンピューター回路部と、
を備える、コンピューティングデバイス。
[項目17]
少なくとも1つのコンピューターアクセス可能媒体であって、実行されたことに応答して、コンピューティングデバイスが項目1〜15のいずれか1項に記載の方法を実行することをもたらす複数の命令を含む、少なくとも1つのコンピューターアクセス可能媒体。
[項目18]
方法であって、
コンピューター命令のシーケンスを、コンピューティングデバイスのトランザクショナルメモリシステムによって実行するように構成されたトランザクションとして識別することであって、該トランザクションは、チェックポイント命令及びコミット命令によって定義され、該トランザクションは、通常発生する条件が満たされることに応答して実行可能な少なくとも1つの第1の命令と、通常発生する条件が満たされないことに応答して実行可能な少なくとも1つの第2の命令とを含むことと、
少なくとも1つの例外発生命令をコンピューター命令のシーケンスに挿入することであって、該少なくとも1つの例外発生命令は、少なくとも1つの第1の命令が分岐することなく実行されることを可能にするように構成されるとともに、通常発生する条件が満たされないことに応答してトランザクショナルメモリシステムの例外ハンドリング特徴部を起動するように構成されていることと、
少なくとも1つの第2の命令をトランザクションから除去することと、
を含む、方法。
[項目19]
通常発生する条件が満たされることに応答して少なくとも1つの最適化された命令を実行し、通常発生する条件が満たされないことに応答してトランザクションの実行をチェックポイントにロールバックして、少なくとも1つの最適化されていない命令を実行するように構成される、項目18に記載の方法。
[項目20]
コンピューティングデバイスであって、
少なくとも1つのプロセッサと、
少なくとも1つのプロセッサに結合されたコンピューター回路部であって、少なくとも1つのプロセッサに項目18又は19に記載の方法を実行させるように構成されている、コンピューター回路部と、
を備える、コンピューティングデバイス。
[項目21]
少なくとも1つのコンピューターアクセス可能媒体であって、実行されたことに応答して、コンピューティングデバイスが項目18又は19に記載の方法を実行することをもたらす複数の命令を含む、少なくとも1つのコンピューターアクセス可能媒体。
[項目22]
方法であって、
コンピューター命令のシーケンスを解析することと、
コンピューター命令のシーケンスの少なくとも1つのコード領域を識別するように構成されたコード特殊化ルーチンを実行することであって、少なくとも1つのコード領域は、コンピューティングデバイスのトランザクショナルメモリシステムによってトランザクションとして実行可能であることと、
コード領域のうちの1つ又は複数について、
該コード領域に、通常発生する条件が満たされたか否かを判断するように構成された少なくとも1つの無分岐命令を挿入することと、
該コード領域に、通常発生する条件が満たされないことに応答して例外を生成するように構成された少なくとも1つの例外発生命令を挿入することと、
を含む、方法。
[項目23]
少なくとも1つの無分岐命令は、ビット単位論理オペレーション及び算術オペレーションを含む、項目22に記載の方法。
[項目24]
ビット単位論理オペレーションは、排他的OR(XOR)命令であり、少なくとも1つの例外発生命令は、オーバーフローフラグをセットすることを含む、項目23に記載の方法。
[項目25]
コンピューティングデバイスであって、
少なくとも1つのプロセッサと、
少なくとも1つのプロセッサに結合されたコンピューター回路部であって、少なくとも1つのプロセッサに項目22〜24のいずれか1項に記載の方法を実行させるように構成されている、コンピューター回路部と、
を備える、コンピューティングデバイス。
[項目26]
少なくとも1つのコンピューターアクセス可能媒体であって、実行されたことに応答して、コンピューティングデバイスが項目22〜24のいずれか1項に記載の方法を実行することをもたらす複数の命令を含む、少なくとも1つのコンピューターアクセス可能媒体。

Claims (18)

  1. 実行されることに応答して、コンピューティングデバイスに、
    実行中に、通常発生する条件が満たされることに応答してトランザクショナルメモリシステムによって実行可能な少なくとも1つの第1の命令を含むコンピューター命令のシーケンスを解析させ、
    前記通常発生する条件が満たされるか否かを判断し、前記通常発生する条件が満たされないことに応答して前記トランザクショナルメモリシステムの例外ハンドリング機能とインターフェースするように構成された分岐命令である、少なくとも1つの例外発生命令を前記コンピューター命令のシーケンスにおける前記第1の命令の前に挿入させる、
    複数の命令を含み、
    前記複数の命令は、コンピューティングデバイスに、前記コンピューター命令のシーケンスにおいて、前記通常発生する条件が満たされないことに応答して実行可能な少なくとも1つの第2の命令を識別させ前記通常発生する条件が満たされないことに応答して前記少なくとも1つの例外発生命令の1つに基づき起動される前記トランザクショナルメモリシステムの前記例外ハンドリング機能を、前記少なくとも1つの第2の命令に関連付けさせる、プログラム。
  2. 前記複数の命令は、コンピューティングデバイスに、少なくとも1つの第2の命令を前記コンピューター命令のシーケンスから除去させる、請求項1に記載のプログラム。
  3. 前記複数の命令は、コンピューティングデバイスに、前記少なくとも1つの第1の命令を前記通常発生する条件について最適化させる、請求項1または2に記載のプログラム。
  4. 前記複数の命令は、コンピューティングデバイスに、前記少なくとも1つの例外発生命令を比較命令及び分岐命令の代わりに前記コンピューター命令のシーケンスに挿入させる、請求項1から3のいずれか1項に記載のプログラム。
  5. 前記少なくとも1つの例外発生命令のうちの少なくとも1つは、コンピューティングデバイスに、メモリレジスタが特定の値を保持するか否かを判断させる、請求項1から4のいずれか1項に記載のプログラム。
  6. 前記少なくとも1つの例外発生命令のうちの少なくとも1つは、コンピューティングデバイスに、前記特定の値が符号付きであるか否かを判断させ、前記特定の値が符号付きである場合に、前記特定の値に関連付けられた符号ビットをマスクさせる、請求項5に記載のプログラム。
  7. 前記少なくとも1つの例外発生命令のうちの別の少なくとも1つは、コンピューティングデバイスに、ポインターが特定のメモリアドレスに関連付けられているか否かを判断させる、請求項1から6のいずれか1項に記載のプログラム。
  8. 前記少なくとも1つの例外発生命令のうちのさらに別の少なくとも1つは、コンピューティングデバイスに、データの一部が特定の値を有するか否かを判断させる、請求項1から7のいずれか1項に記載のプログラム。
  9. 前記少なくとも1つの例外発生命令のうちのさらに別の少なくとも1つは、コンピューティングデバイスに、トリップカウントが特定の値を有するか否かを判断させる、請求項1から7のいずれか1項に記載のプログラム。
  10. 前記少なくとも1つの例外発生命令の1つは、コンピューティングデバイスに、前記例外ハンドリング機能を起動させ、前記例外ハンドリング機能に基づいて、前記少なくとも1つの例外発生命令は、コンピューティングデバイスに、前記コンピューター命令のシーケンスの実行をチェックポイントにロールバックさせるか又は前記コンピューター命令のシーケンスの前記実行をアボートさせる、請求項1から9のいずれか1項に記載のプログラム。
  11. 前記複数の命令は、コンピューティングデバイスに、前記通常発生する条件が満たされないことに応答して前記例外ハンドリング機能を起動させるように前記コンピューター命令のシーケンスを特殊化させ、起動した前記例外ハンドリングは、コンピューティングデバイスに、最適化されていない命令を実行させる、請求項1から10のいずれか1項に記載のプログラム。
  12. 前記複数の命令は、コンピューティングデバイスに、チェックポイント命令及びコミット命令を前記コンピューター命令のシーケンス内に挿入させることによって、前記コンピューター命令のシーケンスの少なくとも1つの命令を、前記トランザクショナルメモリシステムによって実行されるトランザクションとして定義させる、請求項1から1のいずれか1項に記載のプログラム。
  13. 前記複数の命令は、コンピューティングデバイスに、前記通常発生する条件が満たされないことに応答して、ハードウェアベースのトランザクショナルメモリシステム又はソフトウェアベースのトランザクショナルメモリシステムとインターフェースさせるように、前記コンピューター命令のシーケンスを特殊化させる、請求項1から1のいずれか1項に記載のプログラム。
  14. コンピューティングデバイスであって、
    少なくとも1つのプロセッサコアと、
    該少なくとも1つのプロセッサコアに結合されたコンピューター回路部であって、
    コンピューター命令のシーケンスを、該コンピューティングデバイスのトランザクショナルメモリシステムによって実行するように構成されたトランザクションとして識別することであって、該トランザクションは、チェックポイント命令及びコミット命令によって定義され、該トランザクションは、通常発生する条件が満たされることに応答して実行可能な少なくとも1つの第1の命令と、前記通常発生する条件が満たされないことに応答して実行可能な少なくとも1つの第2の命令とを含むことと、
    少なくとも1つの例外発生命令を前記コンピューター命令のシーケンスにおける前記第1の命令の前に挿入することであって、該少なくとも1つの例外発生命令は、前記少なくとも1つの第1の命令が分岐することなく実行されることを可能にするように構成されるとともに、前記通常発生する条件が満たされないことに応答して前記トランザクショナルメモリシステムの、前記第2の命令に関連付けられた例外ハンドリング機能を起動するように構成されている、挿入することと、
    前記少なくとも1つの第2の命令を前記トランザクションから除去することと、
    を前記少なくとも1つのプロセッサコアに行わせるように構成されている、コンピューター回路部と、
    を備える、コンピューティングデバイス。
  15. 前記通常発生する条件が満たされることに応答して少なくとも1つの最適化された命令を実行し、前記通常発生する条件が満たされないことに応答して前記トランザクションの実行を前記チェックポイントにロールバックして、少なくとも1つの最適化されていない命令を実行するように構成される、請求項1に記載のコンピューティングデバイス。
  16. 実行されたことに応答して、コンピューティングデバイスが、
    通常発生する条件が満たされることに応答して前記コンピューティングデバイスのトランザクショナルメモリシステムによって実行可能な少なくとも1つの第1の命令と、前記通常発生する条件が満たされないことに応答して前記トランザクショナルメモリシステムによって実行可能な少なくとも1つの第2の命令とを含むコンピューター命令のシーケンスを解析することと、
    前記コンピューター命令のシーケンスの少なくとも1つのコード領域を識別するように構成されたコード特殊化ルーチンを実行することであって、前記少なくとも1つのコード領域は、前記トランザクショナルメモリシステムによってトランザクションとして実行可能であることと、
    前記コード領域のうちの1つ又は複数について、前記第1の命令の前に、無分岐命令である複数の例外発生命令を挿入することと
    をもたらす複数の命令を含み、
    無分岐命令である前記複数の例外発生命令は、
    通常発生する条件が満たされたか否かを判断するように構成された少なくとも1つの論理命令または算術命令と、
    前記通常発生する条件が満たされないことに応答して前記トランザクショナルメモリシステムの、前記第2の命令に関連付けられた例外ハンドリング機能を起動するように構成された少なくとも1つの例外生成命令
    含む、プログラム。
  17. 前記少なくとも1つの論理命令または算術命令は、ビット単位論理オペレーションまたは算術オペレーションを行うためのものである、請求項1に記載のプログラム。
  18. 前記ビット単位論理オペレーションは、排他的OR(XOR)命令であり、前記少なくとも1つの算術命令は、コンピューティングデバイスに、オーバーフローフラグをセットするか否かを制御させる、請求項1に記載のプログラム。
JP2014547162A 2011-12-16 2011-12-16 トランザクションをサポートするコンピューターアーキテクチャにおけるコード特殊化のための例外を用いるプログラム及びコンピューティングデバイス Expired - Fee Related JP5906325B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/065391 WO2013089767A1 (en) 2011-12-16 2011-12-16 Method and system using exceptions for code specialization in a computer architecture that supports transactions

Publications (2)

Publication Number Publication Date
JP2015507254A JP2015507254A (ja) 2015-03-05
JP5906325B2 true JP5906325B2 (ja) 2016-04-20

Family

ID=48613040

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014547162A Expired - Fee Related JP5906325B2 (ja) 2011-12-16 2011-12-16 トランザクションをサポートするコンピューターアーキテクチャにおけるコード特殊化のための例外を用いるプログラム及びコンピューティングデバイス

Country Status (6)

Country Link
US (1) US9483275B2 (ja)
EP (1) EP2791785B1 (ja)
JP (1) JP5906325B2 (ja)
KR (1) KR101615907B1 (ja)
CN (1) CN103999036B (ja)
WO (1) WO2013089767A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103999036B (zh) 2011-12-16 2017-07-14 英特尔公司 在支持事务的计算机体系结构中使用异常进行代码专业化的方法和系统
US20140223062A1 (en) * 2013-02-01 2014-08-07 International Business Machines Corporation Non-authorized transaction processing in a multiprocessing environment
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
US10528253B2 (en) * 2014-11-05 2020-01-07 International Business Machines Corporation Increased bandwidth of ordered stores in a non-uniform memory subsystem
GB2538091B (en) * 2015-05-07 2018-03-14 Advanced Risc Mach Ltd Verifying correct code execution context
WO2017106351A1 (en) * 2015-12-14 2017-06-22 Dataware Ventures, Llc Broadening field specialization
CN108121566A (zh) * 2017-12-06 2018-06-05 中国航空工业集团公司西安航空计算技术研究所 一种图形指令解析设计方法
US11334469B2 (en) * 2018-04-13 2022-05-17 Microsoft Technology Licensing, Llc Compound conditional reordering for faster short-circuiting
EP3594804B1 (en) * 2018-07-09 2021-11-03 ARM Limited Transactional compare-and-discard instruction
KR20200031402A (ko) 2018-09-14 2020-03-24 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20200058867A (ko) 2018-11-20 2020-05-28 에스케이하이닉스 주식회사 메모리 시스템의 복구 동작 중 비휘발성 메모리 블록의 반복 접근을 줄이는 방법 및 장치
KR20200113387A (ko) 2019-03-25 2020-10-07 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
CN113632432B (zh) * 2019-09-12 2023-09-19 奇安信安全技术(珠海)有限公司 一种攻击行为的判定方法、装置及计算机存储介质
US11960730B2 (en) 2021-06-28 2024-04-16 Western Digital Technologies, Inc. Distributed exception handling in solid state drives

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004252508A (ja) * 2003-02-18 2004-09-09 Nec Corp 単一プロセッサ用ソフトウェアプログラムをマルチプロセッサ用ソフトウェアプログラムに変換する方法
US20070043934A1 (en) 2005-08-22 2007-02-22 Intel Corporation Early misprediction recovery through periodic checkpoints
US7861237B2 (en) * 2005-12-07 2010-12-28 Microsoft Corporation Reducing unnecessary software transactional memory operations on newly-allocated data
US7870545B2 (en) 2005-12-16 2011-01-11 Intel Corporation Protecting shared variables in a software transactional memory system
US8180967B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
US8566568B2 (en) * 2006-08-16 2013-10-22 Qualcomm Incorporated Method and apparatus for executing processor instructions based on a dynamically alterable delay
US7865885B2 (en) * 2006-09-27 2011-01-04 Intel Corporation Using transactional memory for precise exception handling in aggressive dynamic binary optimizations
US20080244544A1 (en) 2007-03-29 2008-10-02 Naveen Neelakantam Using hardware checkpoints to support software based speculation
US8813057B2 (en) * 2007-03-31 2014-08-19 Intel Corporation Branch pruning in architectures with speculation support
US20100122073A1 (en) * 2008-11-10 2010-05-13 Ravi Narayanaswamy Handling exceptions in software transactional memory systems
US20100274972A1 (en) 2008-11-24 2010-10-28 Boris Babayan Systems, methods, and apparatuses for parallel computing
US9785462B2 (en) * 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US20100262813A1 (en) * 2009-04-14 2010-10-14 International Business Machines Corporation Detecting and Handling Short Forward Branch Conversion Candidates
US8694974B2 (en) 2009-04-29 2014-04-08 Hewlett-Packard Development Company, L.P. Load-checking atomic section
US8458403B2 (en) * 2009-11-24 2013-06-04 Honeywell International Inc. Architecture and method for cache-based checkpointing and rollback
US8495607B2 (en) 2010-03-01 2013-07-23 International Business Machines Corporation Performing aggressive code optimization with an ability to rollback changes made by the aggressive optimizations
US8560816B2 (en) * 2010-06-30 2013-10-15 Oracle International Corporation System and method for performing incremental register checkpointing in transactional memory
CN103999036B (zh) 2011-12-16 2017-07-14 英特尔公司 在支持事务的计算机体系结构中使用异常进行代码专业化的方法和系统
US8688661B2 (en) * 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing

Also Published As

Publication number Publication date
EP2791785B1 (en) 2019-07-17
EP2791785A4 (en) 2017-01-18
US9483275B2 (en) 2016-11-01
JP2015507254A (ja) 2015-03-05
US20130305024A1 (en) 2013-11-14
CN103999036A (zh) 2014-08-20
CN103999036B (zh) 2017-07-14
WO2013089767A1 (en) 2013-06-20
KR101615907B1 (ko) 2016-04-27
KR20140091747A (ko) 2014-07-22
EP2791785A1 (en) 2014-10-22

Similar Documents

Publication Publication Date Title
JP5906325B2 (ja) トランザクションをサポートするコンピューターアーキテクチャにおけるコード特殊化のための例外を用いるプログラム及びコンピューティングデバイス
US8990786B2 (en) Program optimizing apparatus, program optimizing method, and program optimizing article of manufacture
US8495607B2 (en) Performing aggressive code optimization with an ability to rollback changes made by the aggressive optimizations
CN108633309B (zh) 协同程序的编译器优化
US9720667B2 (en) Automatic loop vectorization using hardware transactional memory
JP5416223B2 (ja) トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル
US8176299B2 (en) Generating stop indicators based on conditional data dependency in vector processors
US8181001B2 (en) Conditional data-dependency resolution in vector processors
EP2176763B1 (en) Memory transaction grouping
US7730463B2 (en) Efficient generation of SIMD code in presence of multi-threading and other false sharing conditions and in machines having memory protection support
US20120246658A1 (en) Transactional Memory Preemption Mechanism
US20130013899A1 (en) Using Hardware Transaction Primitives for Implementing Non-Transactional Escape Actions Inside Transactions
US8745360B2 (en) Generating predicate values based on conditional data dependency in vector processors
US8180986B2 (en) Memory conflict detection via mapping of the physical heap to control access permissions to the memory
US20120221837A1 (en) Running multiply-accumulate instructions for processing vectors
US7937695B2 (en) Reducing number of exception checks
US10496433B2 (en) Modification of context saving functions
US9081607B2 (en) Conditional transaction abort and precise abort handling
EP3871081B1 (en) Register renaming-based techniques for block-based processors
US10061609B2 (en) Method and system using exceptions for code specialization in a computer architecture that supports transactions
US20130173682A1 (en) Floating-point error propagation in dataflow

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150602

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151228

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160318

R150 Certificate of patent or registration of utility model

Ref document number: 5906325

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees