JP5906325B2 - トランザクションをサポートするコンピューターアーキテクチャにおけるコード特殊化のための例外を用いるプログラム及びコンピューティングデバイス - Google Patents
トランザクションをサポートするコンピューターアーキテクチャにおけるコード特殊化のための例外を用いるプログラム及びコンピューティングデバイス Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 claims description 65
- 230000004044 response Effects 0.000 claims description 47
- 230000006870 function Effects 0.000 claims description 13
- 238000005457 optimization Methods 0.000 claims description 3
- 238000005096 rolling process Methods 0.000 claims description 2
- 230000003213 activating effect Effects 0.000 claims 1
- 238000000034 method Methods 0.000 description 49
- 238000004590 computer program Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/49—Partial evaluation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/45525—Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional 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
[項目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つの第2の命令を識別させ、前記通常発生する条件が満たされないことに応答して前記少なくとも1つの例外発生命令の1つに基づき起動される前記トランザクショナルメモリシステムの前記例外ハンドリング機能を、前記少なくとも1つの第2の命令に関連付けさせる、プログラム。 - 前記複数の命令は、コンピューティングデバイスに、少なくとも1つの第2の命令を前記コンピューター命令のシーケンスから除去させる、請求項1に記載のプログラム。
- 前記複数の命令は、コンピューティングデバイスに、前記少なくとも1つの第1の命令を前記通常発生する条件について最適化させる、請求項1または2に記載のプログラム。
- 前記複数の命令は、コンピューティングデバイスに、前記少なくとも1つの例外発生命令を比較命令及び分岐命令の代わりに前記コンピューター命令のシーケンスに挿入させる、請求項1から3のいずれか1項に記載のプログラム。
- 前記少なくとも1つの例外発生命令のうちの少なくとも1つは、コンピューティングデバイスに、メモリレジスタが特定の値を保持するか否かを判断させる、請求項1から4のいずれか1項に記載のプログラム。
- 前記少なくとも1つの例外発生命令のうちの少なくとも1つは、コンピューティングデバイスに、前記特定の値が符号付きであるか否かを判断させ、前記特定の値が符号付きである場合に、前記特定の値に関連付けられた符号ビットをマスクさせる、請求項5に記載のプログラム。
- 前記少なくとも1つの例外発生命令のうちの別の少なくとも1つは、コンピューティングデバイスに、ポインターが特定のメモリアドレスに関連付けられているか否かを判断させる、請求項1から6のいずれか1項に記載のプログラム。
- 前記少なくとも1つの例外発生命令のうちのさらに別の少なくとも1つは、コンピューティングデバイスに、データの一部が特定の値を有するか否かを判断させる、請求項1から7のいずれか1項に記載のプログラム。
- 前記少なくとも1つの例外発生命令のうちのさらに別の少なくとも1つは、コンピューティングデバイスに、トリップカウントが特定の値を有するか否かを判断させる、請求項1から7のいずれか1項に記載のプログラム。
- 前記少なくとも1つの例外発生命令の1つは、コンピューティングデバイスに、前記例外ハンドリング機能を起動させ、前記例外ハンドリング機能に基づいて、前記少なくとも1つの例外発生命令は、コンピューティングデバイスに、前記コンピューター命令のシーケンスの実行をチェックポイントにロールバックさせるか又は前記コンピューター命令のシーケンスの前記実行をアボートさせる、請求項1から9のいずれか1項に記載のプログラム。
- 前記複数の命令は、コンピューティングデバイスに、前記通常発生する条件が満たされないことに応答して前記例外ハンドリング機能を起動させるように前記コンピューター命令のシーケンスを特殊化させ、起動した前記例外ハンドリングは、コンピューティングデバイスに、最適化されていない命令を実行させる、請求項1から10のいずれか1項に記載のプログラム。
- 前記複数の命令は、コンピューティングデバイスに、チェックポイント命令及びコミット命令を前記コンピューター命令のシーケンス内に挿入させることによって、前記コンピューター命令のシーケンスの少なくとも1つの命令を、前記トランザクショナルメモリシステムによって実行されるトランザクションとして定義させる、請求項1から11のいずれか1項に記載のプログラム。
- 前記複数の命令は、コンピューティングデバイスに、前記通常発生する条件が満たされないことに応答して、ハードウェアベースのトランザクショナルメモリシステム又はソフトウェアベースのトランザクショナルメモリシステムとインターフェースさせるように、前記コンピューター命令のシーケンスを特殊化させる、請求項1から12のいずれか1項に記載のプログラム。
- コンピューティングデバイスであって、
少なくとも1つのプロセッサコアと、
該少なくとも1つのプロセッサコアに結合されたコンピューター回路部であって、
コンピューター命令のシーケンスを、該コンピューティングデバイスのトランザクショナルメモリシステムによって実行するように構成されたトランザクションとして識別することであって、該トランザクションは、チェックポイント命令及びコミット命令によって定義され、該トランザクションは、通常発生する条件が満たされることに応答して実行可能な少なくとも1つの第1の命令と、前記通常発生する条件が満たされないことに応答して実行可能な少なくとも1つの第2の命令とを含むことと、
少なくとも1つの例外発生命令を前記コンピューター命令のシーケンスにおける前記第1の命令の前に挿入することであって、該少なくとも1つの例外発生命令は、前記少なくとも1つの第1の命令が分岐することなく実行されることを可能にするように構成されるとともに、前記通常発生する条件が満たされないことに応答して前記トランザクショナルメモリシステムの、前記第2の命令に関連付けられた例外ハンドリング機能を起動するように構成されている、挿入することと、
前記少なくとも1つの第2の命令を前記トランザクションから除去することと、
を前記少なくとも1つのプロセッサコアに行わせるように構成されている、コンピューター回路部と、
を備える、コンピューティングデバイス。 - 前記通常発生する条件が満たされることに応答して少なくとも1つの最適化された命令を実行し、前記通常発生する条件が満たされないことに応答して前記トランザクションの実行を前記チェックポイントにロールバックして、少なくとも1つの最適化されていない命令を実行するように構成される、請求項14に記載のコンピューティングデバイス。
- 実行されたことに応答して、コンピューティングデバイスが、
通常発生する条件が満たされることに応答して前記コンピューティングデバイスのトランザクショナルメモリシステムによって実行可能な少なくとも1つの第1の命令と、前記通常発生する条件が満たされないことに応答して前記トランザクショナルメモリシステムによって実行可能な少なくとも1つの第2の命令とを含むコンピューター命令のシーケンスを解析することと、
前記コンピューター命令のシーケンスの少なくとも1つのコード領域を識別するように構成されたコード特殊化ルーチンを実行することであって、前記少なくとも1つのコード領域は、前記トランザクショナルメモリシステムによってトランザクションとして実行可能であることと、
前記コード領域のうちの1つ又は複数について、前記第1の命令の前に、無分岐命令である複数の例外発生命令を挿入することと
をもたらす複数の命令を含み、
無分岐命令である前記複数の例外発生命令は、
通常発生する条件が満たされたか否かを判断するように構成された少なくとも1つの論理命令または算術命令と、
前記通常発生する条件が満たされないことに応答して前記トランザクショナルメモリシステムの、前記第2の命令に関連付けられた例外ハンドリング機能を起動するように構成された少なくとも1つの例外生成命令と、
を含む、プログラム。 - 前記少なくとも1つの論理命令または算術命令は、ビット単位論理オペレーションまたは算術オペレーションを行うためのものである、請求項16に記載のプログラム。
- 前記ビット単位論理オペレーションは、排他的OR(XOR)命令であり、前記少なくとも1つの算術命令は、コンピューティングデバイスに、オーバーフローフラグをセットするか否かを制御させる、請求項17に記載のプログラム。
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)
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)
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 |
-
2011
- 2011-12-16 CN CN201180075572.0A patent/CN103999036B/zh not_active Expired - Fee Related
- 2011-12-16 US US13/976,046 patent/US9483275B2/en active Active
- 2011-12-16 KR KR1020147015915A patent/KR101615907B1/ko not_active IP Right Cessation
- 2011-12-16 WO PCT/US2011/065391 patent/WO2013089767A1/en active Application Filing
- 2011-12-16 JP JP2014547162A patent/JP5906325B2/ja not_active Expired - Fee Related
- 2011-12-16 EP EP11877535.2A patent/EP2791785B1/en active Active
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 |