JP6463367B2 - ハードウェア・トランザクションのサルベージ - Google Patents
ハードウェア・トランザクションのサルベージ Download PDFInfo
- Publication number
- JP6463367B2 JP6463367B2 JP2016548363A JP2016548363A JP6463367B2 JP 6463367 B2 JP6463367 B2 JP 6463367B2 JP 2016548363 A JP2016548363 A JP 2016548363A JP 2016548363 A JP2016548363 A JP 2016548363A JP 6463367 B2 JP6463367 B2 JP 6463367B2
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- processor
- execution
- instruction
- failure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
- G06F11/0724—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0778—Dumping, i.e. gathering error/state information after a fault for later diagnosis
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operations
- G06F11/1402—Saving, restoring, recovering or retrying
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operations
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/1407—Checkpointing the instruction stream
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operations
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operations
- G06F11/1474—Error detection or correction of the data by redundancy in operations in transactions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
- G06F11/167—Error detection by comparing the memory output
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
Description
非特許文献1において、第8章は、部分的に、マルチスレッド・アプリケーションが、より高い性能を達成するためにCPUコアの数の増大を利用できることを教示する。しかしながら、マルチスレッド・アプリケーションの書き込みでは、プログラマーが、複数のスレッド間のデータ共有を理解し、考慮に入れる必要がある。共有データへのアクセスは、一般的に、同期機構を必要とする。これらの同期機構を用いて、多くの場合、ロックで保護されたクリティカル・セクション(critical section)を用いて、共有データに適用される動作をシリアル化することにより、複数のスレッドが共有データを更新することを保証する。シリアル化により、並行性(concurrency)が制限されるので、プログラマーは、同期に起因するオーバーヘッドを制限しようと試みる。
Hardware Lock Elision(HLE)は、プログラマーがトランザクション実行を使用するための従来の互換命令セット・インターフェースである。HLEは、2つの新しい命令プリフィックス・ヒント、即ちXACQUIRE及びXRELEASEを提供する。
Restricted Transactional Memory(RTM)は、トランザクション実行用の柔軟なソフトウェア・インターフェースを提供する。RTMは、プログラマーがトランザクション実行を開始、コミット、アボートする3つの新しい命令(XBEGIN、XEND、及びXABORT)を提供する。
プロセッサは、CPUID.07H.EBX.HLE[bit4]=1の場合に、HLE実行をサポートする。しかしながら、アプリケーションは、プロセッサがHLEをサポートするかどうかをチェックすることなく、HLEプリフィックス(XACQUIRE及びXRELEASE)を使用することができる。HLEサポートを有していないプロセッサは、これらのプリフィックスを無視し、トランザクション実行に入ることなく、コードを実行する。
プロセッサは、CPUID.07H.EBX.RTM[bit11]=1の場合に、RTM実行をサポートする。アプリケーションは、RTM命令(XBEGIN、XEND、XABORT)を使用する前に、プロセッサがRTMをサポートしているかどうかをチェックする必要がある。これらの命令は、RTMをサポートしていないプロセッサで使用されると、#UD例外が発生する。
プロセッサが、HLE又はRTMのいずれかをサポートしている場合、XTEST命令をサポートする。アプリケーションは、XTEST命令を使用する前に、これらの特徴フラグのどちらかをチェックする必要がある。この命令は、HLE又はRTMのいずれもサポートしていないプロセッサで使用されると、#UD例外が発生する。
XTEST命令は、HLE又はRTMによって指定されたトランザクション領域のトランザクション状態を判断するために使用することができる。HLEプリフィックスは、HLEをサポートしていないプロセッサ上で無視されるが、XTEST命令は、HLE又はRTMのいずれもサポートしていないプロセッサ上で使用されると、#UD例外が発生することに留意されたい。
HLE実行がトランザクション・コミットに成功するために、ロックが特定の特性を満たし、ロックへのアクセスが次の特定のガイドラインに従っていなければならない。
HLE及びRTMの両方とも、ネスト化された(nested)トランザクション領域をサポートする。しかしながら、トランザクション・アボートは、状態を、トランザクション実行を開始した操作に、即ち、最外(outermost)XACQUIREプリフィックスの付いたHLE適格(HLE-eligible)命令、又は最外XBEGIN命令のいずれかに復元する。プロセッサは、全てのネスト化トランザクションを1つのトランザクションとして扱う。
プログラマーは、HLE領域を、MAX_HLE_NEST_COUNTの実装指定深さまでネスト化することができる。各論理プロセッサは、ネスト化カウントを内部で追跡するが、このカウントはソフトウェアに利用可能でない。XACQUIREプリフィックスの付いたHLE適格命令はネスト化カウントをインクリメントし、XRELEASEプリフィックスの付いたHLE適格命令はこれをデクリメントする。論理プロセッサは、ネスト化カウントがゼロから1になったとき、トランザクション実行に入る。論理プロセッサは、ネスト化カウントがゼロになったときにのみ、コミットしようと試みる。ネスト化カウントがMAX_HLE_NEST_COUNTを上回った場合には、トランザクション・アボートが発生することがある。
プログラマーは、RTM領域を、実装指定のMAX_RTM_NEST_COUNTまでネスト化することができる。論理プロセッサは、ネスト化カウントを内部で追跡するが、このカウントはソフトウェアに利用可能でない。XBEGIN命令はネスト化カウントをインクリメントし、XEND命令はネスト化カウントをデクリメントする。論理プロセッサは、ネスト化カウントがゼロになった場合にのみ、コミットを試みる。ネスト化カウントがMAX_RTM_NEST_COUNTを上回った場合には、トランザクション・アボートが発生する。
HLE及びRTMは、2つの代替的なソフトウェア・インターフェースを一般的なトランザクション実行機能に提供する。トランザクション処理の挙動は、例えばHLEがRTMの内部にある又はRTMがHLEの内部にあるなど、HLE及びRTMが互いにネスト化された場合、実装固有のものである。しかしながら、全ての場合において、実装は、HLE及びRTMのセマンティクスを維持する。ある実装は、RTM領域内で使用されるとき、HLEヒントを無視するように選択することができ、RTM命令がHLE領域内で使用されるとき、トランザクション・アボートを発生させることがある。後者の場合、プロセッサは実際に無効化を行わずにHLE領域を再実行し、次にRTM命令を実行するので、トランザクション実行から非トランザクション実行への遷移はシームレスに行われる。
RTMがコミットに成功すると、RTM領域内の全てのメモリ操作はアトミックに実行されるように見える。RTM領域内でメモリ操作が行われない場合でも、XBEGINの後にXENDが続き、コミットに成功したRTM領域は、LOCKプリフィックス命令と同じ順序付けセマンティクスを有する。
デフォルトでは、RTM領域内部のあらゆるデバッグ例外がトランザクション・アボートを引き起こし、アーキテクチャ状態が復旧し、ビット4がEAX内に設定された状態で、制御フローをフォールバック命令アドレスにリダイレクトする。しかしながら、ソフトウェア・デバッガが、デバッグ例外時に実行をインターセプトするのを可能にするために、RTMアーキテクチャは付加的な機能を提供する。
一般的に、通常プログラマーが指定した領域は、トランザクション実行及びコミットに成功することが想定される。しかしながら、Intel TSXでは、そうした保証はない。トランザクション実行は、様々な理由によりアボートされることがある。トランザクション機能を最大限に利用するために、プログラマーは、特定のガイドラインに従い、トランザクション実行のコミットが成功する可能性を高める必要がある。
プログラマーは、トランザクション(HLE又はRTM)の内部であらゆる命令を安全に使用することができ、あらゆる特権レベルでトランザクションを使用することができる。しかしながら、一部の命令は常にトランザクション実行をアボートさせ、実行は非トランザクション経路にシームレスかつ安全に遷移される。
・命令ポインタ・レジスタ、汎用レジスタ(GPR)及びステータス・ラグ(CF、OF、SF、PF、AF、及びZF)に対する操作、及び、
・XMMレジスタ及びYMMレジスタ、並びにMXCSRレジスタに対する操作。
・XABORT
・CPUID
・PAUSE
・X87及びMMX(商標)のアーキテクチャ状態に対する操作。これには、FXRSTOR及びFXSAVE命令を含む、全てのMMX及びX87命令が含まれる。
・EFLAGの非ステータス部分の更新:CLI、STI、POPFD、POPFQ、CLTS。
・セグメント・レジスタ、デバッグ・レジスタ、及び/又は制御レジスタを更新する命令:DS/ES/FS/GS/SSに対するMOV、POP DS/ES/FS/GS/SS、LDS、LES、LFS、LGS、LSS、SWAPGS、WRFSBASE、WRGSBASE、LGDT、SGDT、LIDT、SIDT、LLDT、SLDT、LTR、STR、Far CALL、Far JMP、Far RET、IRET、DRxに対するMOV、CR0/CR2/CR3/CR4/CR8に対するMOV、及びLMSW。
・リング遷移:SYSENTER、SYSCALL、SYSEXIT、及びSYSRET。
・TLB及びキャッシュ可能な制御:CLFLUSH、INVD、WBINVD、INVLPG、INVPCID、及び非一時的ヒントを有するメモリ命令(MOVNTDQA、MOVNTDQ、MOVNTI、MOVNTPD、MOVNTPS、及びMOVNTQ)。
・プロセッサ状態の保存:XSAVE、XSAVEOPT、及びXRSTOR。
・割り込み:INTn、INTO。
・IO:IN、INS、REP INS、OUT、OUTS、REP OUTS、及びその変形。
・VMX:VMPTRLD、VMPTRST、VMCLEAR、VMREAD、VMWRITE、VMCALL、VMLAUNCH、VMRESUME、VMXOFF、VMXON、INVEPT、及びINVVPID。
・SMX:GETSEC。
・UD2、RSM、RDMSR、WRMSR、HLT、MONITOR、MWAIT、XSETBV、VZEROUPPER、MASKMOVQ、及びV/MASKMOVDQU。
命令ベースの考慮事項に加えて、ランタイム・イベントによりトランザクション実行がアボートされる場合がある。これは、データ・アクセス・パターン又はマイクロ・アーキテクチャの実装機能に起因し得る。以下のリストは、全てのアボートの原因を包括的に説明したものではない。
非特許文献2によれば、基本的に、アトミックな及び分離された(isolated)トランザクション領域を実装するのに必要な3つの機構:即ち、バージョニング(versioning)、競合検出、及びコンテンション管理(contentionmanagement)が存在する。
後述するこの最初のTM設計は、Eager−悲観的として知られる。EPシステムは、その書き込みセットを「イン・プレースに」格納し(従って、「eager」の名がある)、かつ、ロールバックをサポートするために、上書きされたラインの古い値を「undoログ」に格納する。プロセッサは、W138キャッシュ・ビット及びR132キャッシュ・ビットを用いて、読み取り及び書き込みセットを追跡し、スヌープした(snooped)ロード要求を受信したときに競合を検出する。恐らく、既知の文献におけるEPシステムの最も顕著な例は、LogTM及びUTMである。
別の一般的なTM設計は、Lazy−楽観的(LO)であり、これは、その書き込みセットを「書き込みバッファ」又は「redoログ」に格納し、コミット時に競合を検出する(依然として、R132及びW138ビットを使用する)。
Lazy−悲観的(LP)は、EPとLOとの間のどこかに位置する第3のTM設計選択肢を表し:新しく書き込まれたラインを書き込みバッファに格納するが、アクセスごとに競合を検出する。
バージョニングと競合検出の最終的な組み合わせは、Eager−楽観的(EO)である。EOは、ハードウェアTMシステムにとって最適とはいえない選択肢であり得る:新しいトランザクション・バージョンはイン・プレースに書き込まれるので、競合の発生時に(即ち、キャッシュ・ミスの発生時に)競合に気付かざるを得ない。しかしながら、EOはコミット時まで競合の検出を待つので、これらのトランザクションは「ゾンビー(zombie)」になり、実行を続行し、リソースを浪費し、しかもアボートする「運命にある」。
ひとたびシステムがそのトランザクションのアボートを決定すると、トランザクションがどのようにロールバックするかについて上述したが、競合には2つのトランザクションが関与するので、どのトランザクションをアボートすべきか、そのアボートをどのように開始すべきか、及びアボートされたトランザクションをいつ再試行すべきかのトピックを検討する必要がある。これらは、トランザクション・メモリの重要なコンポーネントである、コンテンション管理(CM)により対処されるトピックである。システムがどのようにアボートを開始するか、及び、競合においてどのトランザクションをアボートすべきかを管理する種々の確立された方法が後述される。
コンテンション管理(CM)ポリシーは、競合に関与するどのトランザクションをアボートすべきか、及び、アボートされたトランザクションをいつ再試行すべきかを決定する機構である。例えば、アボートされたトランザクションを瞬時に再試行することが最良の性能につながらない場合が多い。逆に、アボートされたトランザクションの再試行を遅延させるバックオフ機構を用いるが、より良い性能をもたらすことがある。ソフトウェアTMは最初に最良のコンテンション管理ポリシーを見出すことに取り組んでおり、以下に概説したポリシーの多くは、もともとソフトウェアTM向けに開発されたものである。
Modified(M):キャッシュラインは現キャッシュ内にのみ存在し、ダーティである。即ち、キャッシュラインは、メインメモリ内の値から修正されている。キャッシュは、(もはや有効ではない)メインメモリ状態のいずれかの他の読み取りを可能にする前に、将来のいずれかの時点で、データをメインメモリにライトバックしなければならない。ライトバックによりラインはExclusive状態に変化する。
Exclusive(E):キャッシュラインは現キャッシュ内にのみ存在するが、クリーンである。即ち、キャッシュラインはメインメモリと一致する。キャッシュラインは、読み取り要求に応答して、いつでもShared状態に変わることが可能である。代替的に、キャッシュラインは、書き込みがなされると、Modified状態に変わることが可能である。
Shared(S):このキャッシュラインは、マシンの他のキャッシュ内に格納することができ、「クリーン」であることを示す。即ち、このキャッシュラインはメインメモリと一致する。ラインは、いつでも廃棄する(Invalid状態に変更する)ことができる。
Invalid(I):このキャッシュラインが、無効である(未使用である)ことを示す。
IBM zEnterprise EC12エンタープライズ・サーバは、トランザクション・メモリにトランザクション実行(TX)を導入し、非特許文献3に部分的に説明される。
図3は、CPU114及びこれが対話するキャッシュ/コンポーネント(図1及び図2に示されるもののような)を含む、例示的なCPU環境112の例示的なコンポーネントを示す。命令デコード・ユニット(IDU)208は、現トランザクション・ネスト化深さ212(TND)を常時監視している。IDU208がTBEGIN命令を受信すると、ネスト化深さ212がインクリメントされ、逆に、TEND命令時にはデクリメントされる。あらゆるディスパッチされた命令について、ネスト化深さ212がGCT232に書き込まれる。TBEGIN又はTENDが、後でフラッシュされる投機的経路上でデコードされると、IDU208のネスト化深さ212は、フラッシュされない最も若いGCT232エントリからリフレッシュされる。実行ユニットによる、大部分はロード/ストア・ユニット(LSU)280による消費のために、トランザクション状態も発行キュー216内に書き込まれ、実効アドレス計算器236もLSU280内に含まれる。TBEGIN命令は、TEND命令に到達する前にトランザクションがアボートした場合に状態情報を記録するためのトランザクション診断ブロック(TDB)を指定することができる。
ロード/ストア・ユニット280は、トランザクション実行中にアクセスされたキャッシュラインを追跡し、別のCPUからのXI(又はLRU−XI)がフットプリントと競合する場合にアボートをトリガする。競合するXIがexclusive又はdemote XIである場合、L3 272がXIを繰り返す前にトランザクションが終了することを期待して、LSU 280はXIを拒否してL3 272に戻す。この「押しのけ(stiff-arming)」は、高競合状態のトランザクションにおいて非常に有効である。2つのCPUが互いに押しのけ合う際のハングアップを防止するために、XI拒否カウンタが実装され、該XI拒否カウンタは、閾値が満たされると、トランザクション・アボートをトリガする。
従来のシステムにおいて、L1 240及びL2 268はストアスルー・キャッシュであるので、全てのストア命令は、L3 272ストア・アクセスを引き起こし、今やL3 272ごとに6つのコアがあり、各コアの性能がさらに改善され、L3 272に関する(及びより少ない程度ではあるがL2 268に関する)ストア速度が、特定のワークロードに関して問題になる。ストア・キューイングの遅延を避けるために、ストアをL3 272に送信する前にストアを近隣のアドレスと組み合わせる、収集ストア・キャッシュ264を付加する必要がある。
従来より、IBMメインフレーム・サーバ・プロセッサは、特定のCISC命令実行、割り込み処理、システム同期、及びRASのような複雑な機能を実施する、ミリコードと呼ばれるファームウェアの層を含む。ミリコードは、マシン依存命令、並びに、アプリケーション・プログラム及びオペレーティング・システム(OS)の命令と同様にメモリからフェッチされ、実行される命令セット・アーキテクチャ(ISA)の命令を含む。ファームウェアは、顧客プログラムがアクセスできないメインメモリの制限区域内に常駐する。ハードウェアが、ミリコードを呼び出す必要がある状況を検出すると、命令フェッチ・ユニット204が「ミリコード・モード」に切り替わり、ミリコード・メモリ領域内の適切な位置でフェッチを開始する。ミリコードは、命令セット・アーキテクチャ(ISA)の命令と同じ手法でフェッチ及び実行することができ、ISA命令を含むことができる。
112:CPU環境
114、114a、114b:CPU
116a、116b:命令キャッシュ
118a、118b、240:データ・キャッシュ
120a、120b:相互接続制御
122:相互接続
124:共有キャッシュ
126:レジスタ・チェックポイント
128:トランザクション・メモリ(TM)レジスタ
208:命令デコード・ユニット(IDU)
212:ネスト化深さ
216:発行キュー
224:TXバックアップGRs
228:汎用レジスタ(GRs)
232:グローバル完了テーブル(GCT)
232b:micro−op
236:アドレス計算器
240:データ・キャッシュ
264:収集ストア・キャッシュ
280:ロード/ストア・ユニット(LSU)
1000:コンピュータ・システム
1012:コンピュータ
1016:処理ユニット
1018:バス
1028:メモリ
1030:ランダム・アクセス・メモリ(RAM)
1032:キャッシュ
1040:プログラム
1042:プログラム・モジュール
1060:失敗直前ハンドラ情報決定器
1062:サルベージ・レジスタ
1064:失敗直前条件検出器
1066:ハードウェア・トランザクション・トランスファラ
Claims (10)
- 部分的に実行されたハードウェア・トランザクションをサルベージするための方法であって、
プロセッサにより、ハードウェア・トランザクションのコード領域のトランザクション実行のために、失敗直前ハンドラについての情報を判断することと、
前記プロセッサにより、前記ハードウェア・トランザクションの状態情報を保存することであって、前記状態情報は、前記ハードウェア・トランザクションがサルベージされるか又はアボートされるかを判断するのに使用可能である、保存することと、
前記プロセッサにより、前記ハードウェア・トランザクションの前記トランザクション実行中、失敗直前条件を検出することと、
前記検出に基づいて、前記プロセッサにより、前記失敗直前ハンドラについての前記情報を用いて、前記失敗直前ハンドラを実行することであって、前記失敗直前ハンドラは、前記ハードウェア・トランザクションがサルベージされるか又はアボートされるかを判断するためのものである、実行することと、
を含む、方法。 - 前記プロセッサにより、前記失敗直前ハンドラについての情報を判断することは、前記失敗直前ハンドラについてのアドレスを与える命令を受け取ること、失敗直前インジケータを与えること、前記失敗直前ハンドラのアドレスを受け取ること、のうちの1つ又は複数を含む、請求項1に記載の方法。
- 前記プロセッサにより、前記ハードウェア・トランザクションの状態情報を保存することは、前記ハードウェア・トランザクションの各命令の完了後、前記状態情報を保存することをさらに含む、請求項1に記載の方法。
- 前記プロセッサにより、前記失敗直前ハンドラを実行することは、前記ハードウェア・トランザクションの制御を、ソフトウェアの失敗直前ハンドラに移すことをさらに含む、請求項1に記載の方法。
- 前記ハードウェア・トランザクションの前記状態情報は、前記ハードウェア・トランザクションのトランザクション実行を完了するために必要な情報を含む、請求項1に記載の方法。
- 前記プロセッサにより、前記ハードウェア・トランザクションの前記トランザクション実行中、前記失敗直前条件を検出することは、次の命令を評価して、その実行が失敗を引き起こすかどうかを判断することを含む、請求項1に記載の方法。
- 前記プロセッサにより、前記ハードウェア・トランザクションの前記トランザクション実行中、前記失敗直前条件を検出することは、前記コード領域内の命令の実行時に、格納された投機的状態の量に対する制限を超えるかどうかを判断することを含む、請求項1に記載の方法。
- 前記プロセッサにより、前記ハードウェア・トランザクションの前記トランザクション実行中、前記失敗直前条件を検出することは、別のプロセッサが、競合するキャッシュラインに格納していることを判断することを含む、請求項1に記載の方法。
- 請求項1乃至8のいずれかに記載の方法における全てのステップを実行するように適合された手段を含むシステム。
- コンピュータ・プログラムがコンピュータ・システム上で実行されたとき、請求項1乃至8のいずれかに記載の方法における全てのステップを実行するための命令を含む、コンピュータ・プログラム。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/191,726 | 2014-02-27 | ||
| US14/191,726 US9336097B2 (en) | 2014-02-27 | 2014-02-27 | Salvaging hardware transactions |
| PCT/IB2015/051264 WO2015128781A1 (en) | 2014-02-27 | 2015-02-19 | Salvaging hardware transactions |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2017510878A JP2017510878A (ja) | 2017-04-13 |
| JP6463367B2 true JP6463367B2 (ja) | 2019-01-30 |
Family
ID=53882328
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2016548363A Active JP6463367B2 (ja) | 2014-02-27 | 2015-02-19 | ハードウェア・トランザクションのサルベージ |
Country Status (6)
| Country | Link |
|---|---|
| US (3) | US9336097B2 (ja) |
| JP (1) | JP6463367B2 (ja) |
| CN (1) | CN106030534B (ja) |
| DE (1) | DE112015000294T5 (ja) |
| GB (1) | GB2539129B (ja) |
| WO (1) | WO2015128781A1 (ja) |
Families Citing this family (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9317379B2 (en) * | 2014-01-24 | 2016-04-19 | International Business Machines Corporation | Using transactional execution for reliability and recovery of transient failures |
| US9645879B2 (en) | 2014-02-27 | 2017-05-09 | International Business Machines Corporation | Salvaging hardware transactions with instructions |
| US9329946B2 (en) | 2014-02-27 | 2016-05-03 | International Business Machines Corporation | Salvaging hardware transactions |
| US9424072B2 (en) | 2014-02-27 | 2016-08-23 | International Business Machines Corporation | Alerting hardware transactions that are about to run out of space |
| US9336097B2 (en) | 2014-02-27 | 2016-05-10 | International Business Machines Corporation | Salvaging hardware transactions |
| US9442853B2 (en) | 2014-02-27 | 2016-09-13 | International Business Machines Corporation | Salvaging lock elision transactions with instructions to change execution type |
| US9361041B2 (en) | 2014-02-27 | 2016-06-07 | International Business Machines Corporation | Hint instruction for managing transactional aborts in transactional memory computing environments |
| US9442775B2 (en) * | 2014-02-27 | 2016-09-13 | International Business Machines Corporation | Salvaging hardware transactions with instructions to transfer transaction execution control |
| US20150242216A1 (en) | 2014-02-27 | 2015-08-27 | International Business Machines Corporation | Committing hardware transactions that are about to run out of resource |
| KR102410692B1 (ko) * | 2015-03-30 | 2022-06-17 | 삼성전자주식회사 | 슬레이브와 데이터 통신을 할 수 있는 마스터와 상기 마스터를 포함하는 데이터 처리 시스템 |
| CN107193768B (zh) * | 2016-03-15 | 2021-06-29 | 厦门旌存半导体技术有限公司 | 查询队列状态的方法与装置 |
| WO2018192645A1 (en) | 2017-04-19 | 2018-10-25 | Huawei Technologies Co., Ltd. | Updating metadata in hardware transactional memory user aborts |
| CN107220175B (zh) * | 2017-05-08 | 2020-01-21 | 百富计算机技术(深圳)有限公司 | 应用程序死循环定位方法、装置、计算机设备和存储介质 |
| US10956166B2 (en) | 2019-03-08 | 2021-03-23 | Arm Limited | Instruction ordering |
| CN111104253B (zh) * | 2019-11-22 | 2023-06-06 | 江苏恒宝智能系统技术有限公司 | 一种掉电保护智能卡及其工作方法 |
| CN111638996B (zh) * | 2020-05-14 | 2023-04-11 | 华中科技大学 | 一种保证非易失内存中故障原子性的方法及系统 |
| CN112148556B (zh) * | 2020-09-14 | 2022-08-12 | 烽火通信科技股份有限公司 | 一种基于位运算的软件防抖方法和装置 |
| US11436073B2 (en) * | 2020-11-18 | 2022-09-06 | Hewlett Packard Enterprise Development Lp | Fault indications for storage system commands |
| CN113885887B (zh) * | 2021-06-18 | 2025-07-29 | 中国科学院信息工程研究所 | 一种并发应用运行时加固方法与装置 |
Family Cites Families (77)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH05197604A (ja) | 1991-05-21 | 1993-08-06 | Digital Equip Corp <Dec> | マルチプロセッサ・コンピュータ及びその動作方法 |
| EP0554854A3 (en) | 1992-02-04 | 1996-02-28 | Digital Equipment Corp | System and method for executing, tracking and recovering long running computations |
| US5586297A (en) | 1994-03-24 | 1996-12-17 | Hewlett-Packard Company | Partial cache line write transactions in a computing system with a write back cache |
| US6434555B1 (en) * | 2000-01-24 | 2002-08-13 | Hewlett Packard Company | Method for transaction recovery in three-tier applications |
| US6349361B1 (en) | 2000-03-31 | 2002-02-19 | International Business Machines Corporation | Methods and apparatus for reordering and renaming memory references in a multiprocessor computer system |
| US7234076B2 (en) | 2002-02-15 | 2007-06-19 | Sun Microsystems, Inc. | Multi-level undo of main-memory and volatile resources |
| US7546422B2 (en) | 2002-08-28 | 2009-06-09 | Intel Corporation | Method and apparatus for the synchronization of distributed caches |
| JP4334251B2 (ja) * | 2003-03-14 | 2009-09-30 | 株式会社東芝 | トランザクション実行管理プログラムおよびトランザクション処理装置 |
| US20040243511A1 (en) | 2003-05-28 | 2004-12-02 | Corillian Corporation | Method and apparatus to create and execute time-bound constraints |
| US7587615B2 (en) | 2003-09-12 | 2009-09-08 | International Business Machines Corporation | Utilizing hardware transactional approach to execute code after initially utilizing software locking by employing pseudo-transactions |
| US20050086446A1 (en) | 2003-10-04 | 2005-04-21 | Mckenney Paul E. | Utilizing software locking approach to execute code upon failure of hardware transactional approach |
| GB0414291D0 (en) | 2004-06-25 | 2004-07-28 | Ibm | Methods, apparatus and computer programs for data replication |
| US8074030B1 (en) | 2004-07-20 | 2011-12-06 | Oracle America, Inc. | Using transactional memory with early release to implement non-blocking dynamic-sized data structure |
| US7930694B2 (en) | 2004-09-08 | 2011-04-19 | Oracle America, Inc. | Method and apparatus for critical section prediction for intelligent lock elision |
| US7340582B2 (en) | 2004-09-30 | 2008-03-04 | Intel Corporation | Fault processing for direct memory access address translation |
| US7984248B2 (en) | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
| US7966495B2 (en) | 2005-03-21 | 2011-06-21 | Revinetix, Inc. | Conserving file system with backup and validation |
| US7536517B2 (en) | 2005-07-29 | 2009-05-19 | Microsoft Corporation | Direct-update software transactional memory |
| ATE519163T1 (de) | 2006-01-04 | 2011-08-15 | Nxp Bv | Verfahren und vorrichtung zur interrupt- verteilung in einem multiprozessorsystem |
| US7805577B1 (en) | 2006-04-14 | 2010-09-28 | Tilera Corporation | Managing memory access in a parallel processing environment |
| EP1873642B1 (en) | 2006-06-29 | 2009-08-19 | Incard SA | Transaction method for managing the storing of persistent data in a transaction stack |
| US8606998B2 (en) | 2006-08-24 | 2013-12-10 | Advanced Micro Devices, Inc. | System and method for instruction-based cache allocation policies |
| US7627723B1 (en) | 2006-09-21 | 2009-12-01 | Nvidia Corporation | Atomic memory operators in a parallel processor |
| US8291379B2 (en) | 2006-12-13 | 2012-10-16 | International Business Machines Corporation | Runtime analysis of a computer program to identify improper memory accesses that cause further problems |
| US8032711B2 (en) | 2006-12-22 | 2011-10-04 | Intel Corporation | Prefetching from dynamic random access memory to a static random access memory |
| US9009452B2 (en) | 2007-05-14 | 2015-04-14 | International Business Machines Corporation | Computing system with transactional memory using millicode assists |
| US8661204B2 (en) | 2007-08-15 | 2014-02-25 | University Of Rochester, Office Of Technology Transfer | Mechanism to support flexible decoupled transactional memory |
| US9513959B2 (en) | 2007-11-21 | 2016-12-06 | Arm Limited | Contention management for a hardware transactional memory |
| US7685347B2 (en) | 2007-12-11 | 2010-03-23 | Xilinx, Inc. | Interrupt controller for invoking service routines with associated priorities |
| US7966459B2 (en) | 2007-12-31 | 2011-06-21 | Oracle America, Inc. | System and method for supporting phased transactional memory modes |
| US20090183159A1 (en) | 2008-01-11 | 2009-07-16 | Michael Maged M | Managing concurrent transactions using bloom filters |
| CN101587447B (zh) * | 2008-05-23 | 2013-03-27 | 国际商业机器公司 | 基于预测的事务执行系统和方法 |
| US20090327556A1 (en) | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Processor Interrupt Selection |
| CN101739298B (zh) | 2008-11-27 | 2013-07-31 | 国际商业机器公司 | 共享缓存管理方法和系统 |
| US8612929B2 (en) * | 2008-12-10 | 2013-12-17 | Oracle America, Inc. | Compiler implementation of lock/unlock using hardware transactional memory |
| US20100162045A1 (en) | 2008-12-22 | 2010-06-24 | Russ Craig F | Method, apparatus and system for restarting an emulated mainframe iop |
| US9424013B2 (en) | 2008-12-29 | 2016-08-23 | Oracle America, Inc. | System and method for reducing transactional abort rates using compiler optimization techniques |
| US8914620B2 (en) | 2008-12-29 | 2014-12-16 | Oracle America, Inc. | Method and system for reducing abort rates in speculative lock elision using contention management mechanisms |
| US8627017B2 (en) | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
| US8969001B2 (en) | 2009-03-12 | 2015-03-03 | Rush University Medical Center | Materials and methods for predicting recurrence of non-small cell lung cancer |
| US20100235587A1 (en) | 2009-03-16 | 2010-09-16 | Argilsoft Llc | Staged Software Transactional Memory |
| US7996595B2 (en) | 2009-04-14 | 2011-08-09 | Lstar Technologies Llc | Interrupt arbitration for multiprocessors |
| US8499137B2 (en) | 2010-03-12 | 2013-07-30 | Lsi Corporation | Memory manager for a network communications processor architecture |
| US8244988B2 (en) | 2009-04-30 | 2012-08-14 | International Business Machines Corporation | Predictive ownership control of shared memory computing system data |
| US8229907B2 (en) | 2009-06-30 | 2012-07-24 | Microsoft Corporation | Hardware accelerated transactional memory system with open nested transactions |
| US8539486B2 (en) | 2009-07-17 | 2013-09-17 | International Business Machines Corporation | Transactional block conflict resolution based on the determination of executing threads in parallel or in serial mode |
| US8234431B2 (en) | 2009-10-13 | 2012-07-31 | Empire Technology Development Llc | Interrupt masking for multi-core processors |
| US8327188B2 (en) | 2009-11-13 | 2012-12-04 | Oracle America, Inc. | Hardware transactional memory acceleration through multiple failure recovery |
| US8516202B2 (en) | 2009-11-16 | 2013-08-20 | International Business Machines Corporation | Hybrid transactional memory system (HybridTM) and method |
| US8595446B2 (en) | 2009-11-25 | 2013-11-26 | Oracle America, Inc. | System and method for performing dynamic mixed mode read validation in a software transactional memory |
| US8375175B2 (en) | 2009-12-09 | 2013-02-12 | Oracle America, Inc. | Fast and efficient reacquisition of locks for transactional memory systems |
| US8316194B2 (en) | 2009-12-15 | 2012-11-20 | Intel Corporation | Mechanisms to accelerate transactions using buffered stores |
| US8095824B2 (en) | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
| US9092253B2 (en) | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted transactional memory system |
| US20110208921A1 (en) | 2010-02-19 | 2011-08-25 | Pohlack Martin T | Inverted default semantics for in-speculative-region memory accesses |
| 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 |
| US8417897B2 (en) | 2010-03-31 | 2013-04-09 | Oracle International Corporation | System and method for providing locale-based optimizations in a transactional memory |
| US8799583B2 (en) | 2010-05-25 | 2014-08-05 | International Business Machines Corporation | Atomic execution over accesses to multiple memory locations in a multiprocessor system |
| US9626187B2 (en) | 2010-05-27 | 2017-04-18 | International Business Machines Corporation | Transactional memory system supporting unbroken suspended execution |
| US8560816B2 (en) | 2010-06-30 | 2013-10-15 | Oracle International Corporation | System and method for performing incremental register checkpointing in transactional memory |
| CN101872299B (zh) * | 2010-07-06 | 2013-05-01 | 浙江大学 | 冲突预测实现方法及所用冲突预测处理装置事务存储器 |
| US8549504B2 (en) * | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
| US8424015B2 (en) | 2010-09-30 | 2013-04-16 | International Business Machines Corporation | Transactional memory preemption mechanism |
| US8484241B2 (en) * | 2010-10-29 | 2013-07-09 | Russell Kent Bouse | Systems and methods to consolidate and communicate user profiles and modality preferences information for content delivery or interaction experiences |
| US8959270B2 (en) | 2010-12-07 | 2015-02-17 | Apple Inc. | Interrupt distribution scheme |
| US8612694B2 (en) | 2011-03-07 | 2013-12-17 | Advanced Micro Devices, Inc. | Protecting large objects within an advanced synchronization facility |
| US8533699B2 (en) | 2011-03-31 | 2013-09-10 | Oracle International Corporation | System and method for optimizing a code section by forcing a code section to be executed atomically |
| US9430275B2 (en) | 2011-06-03 | 2016-08-30 | Oracle International Corporation | Synchronization between concurrent notifier and waiter transactions using transaction condition variables |
| US20130013899A1 (en) | 2011-07-06 | 2013-01-10 | International Business Machines Corporation | Using Hardware Transaction Primitives for Implementing Non-Transactional Escape Actions Inside Transactions |
| US9442737B2 (en) * | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
| US9740549B2 (en) * | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
| CN103019826B (zh) * | 2012-12-27 | 2016-08-03 | 亚信科技(中国)有限公司 | 一种事务处理的方法和装置 |
| US9329946B2 (en) | 2014-02-27 | 2016-05-03 | International Business Machines Corporation | Salvaging hardware transactions |
| US9311178B2 (en) | 2014-02-27 | 2016-04-12 | International Business Machines Corporation | Salvaging hardware transactions with instructions |
| US9336097B2 (en) | 2014-02-27 | 2016-05-10 | International Business Machines Corporation | Salvaging hardware transactions |
| US9645879B2 (en) | 2014-02-27 | 2017-05-09 | International Business Machines Corporation | Salvaging hardware transactions with instructions |
| US9442775B2 (en) | 2014-02-27 | 2016-09-13 | International Business Machines Corporation | Salvaging hardware transactions with instructions to transfer transaction execution control |
-
2014
- 2014-02-27 US US14/191,726 patent/US9336097B2/en not_active Expired - Fee Related
-
2015
- 2015-02-19 JP JP2016548363A patent/JP6463367B2/ja active Active
- 2015-02-19 GB GB1615597.0A patent/GB2539129B/en active Active
- 2015-02-19 DE DE112015000294.4T patent/DE112015000294T5/de not_active Ceased
- 2015-02-19 WO PCT/IB2015/051264 patent/WO2015128781A1/en not_active Ceased
- 2015-02-19 CN CN201580010841.3A patent/CN106030534B/zh active Active
- 2015-08-17 US US14/827,985 patent/US9244781B2/en not_active Expired - Fee Related
-
2016
- 2016-03-11 US US15/067,264 patent/US9971628B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US20150242298A1 (en) | 2015-08-27 |
| GB201615597D0 (en) | 2016-10-26 |
| US9244781B2 (en) | 2016-01-26 |
| US20160196161A1 (en) | 2016-07-07 |
| CN106030534B (zh) | 2019-04-12 |
| US9971628B2 (en) | 2018-05-15 |
| US20150355958A1 (en) | 2015-12-10 |
| DE112015000294T5 (de) | 2016-09-08 |
| CN106030534A (zh) | 2016-10-12 |
| US9336097B2 (en) | 2016-05-10 |
| GB2539129A (en) | 2016-12-07 |
| JP2017510878A (ja) | 2017-04-13 |
| GB2539129B (en) | 2017-06-21 |
| WO2015128781A1 (en) | 2015-09-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6463367B2 (ja) | ハードウェア・トランザクションのサルベージ | |
| JP6490092B2 (ja) | トランザクション・ステータスを示すためのコヒーレンス・プロトコルの強化 | |
| JP6642806B2 (ja) | ロック無効化とロックの選択を用いたデータ共有のための適応プロセス | |
| US9952943B2 (en) | Salvaging hardware transactions | |
| US9753764B2 (en) | Alerting hardware transactions that are about to run out of space | |
| US9442776B2 (en) | Salvaging hardware transactions with instructions to transfer transaction execution control | |
| US9311178B2 (en) | Salvaging hardware transactions with instructions | |
| US9547595B2 (en) | Salvaging lock elision transactions | |
| US10083076B2 (en) | Salvaging lock elision transactions with instructions to change execution type | |
| US10740106B2 (en) | Determining if transactions that are about to run out of resources can be salvaged or need to be aborted | |
| US20160357596A1 (en) | Alerting hardware transactions that are about to run out of space | |
| JP6734760B2 (ja) | プリフェッチ・インセンシティブのトランザクション・メモリ |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171025 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180724 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180828 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181126 |
|
| 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: 20181211 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181228 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6463367 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |