Source: https://patents.google.com/patent/US9372693B2/en
Timestamp: 2018-10-17 03:11:48
Document Index: 731436028

Matched Legal Cases: ['Application No. 201380014676', 'Application No. 13760324', 'Application No. 13761271', 'Application No. 13762008', 'Application No. 13760299', 'art 1', 'art 2']

US9372693B2 - Run-time instrumentation sampling in transactional-execution mode - Google Patents
Run-time instrumentation sampling in transactional-execution mode Download PDF
US9372693B2
US9372693B2 US13788490 US201313788490A US9372693B2 US 9372693 B2 US9372693 B2 US 9372693B2 US 13788490 US13788490 US 13788490 US 201313788490 A US201313788490 A US 201313788490A US 9372693 B2 US9372693 B2 US 9372693B2
US13788490
US20130246775A1 (en )
Embodiments of the invention relate to implementing run-time instrumentation sampling in transactional-execution mode. An aspect of the invention includes a method for implementing run-time instrumentation sampling in transactional-execution mode. The method includes determining, by a processor, that the processor is configured to execute instructions of an instruction stream in a transactional-execution mode, the instructions defining a transaction. The method also includes interlocking completion of storage operations of the instructions to prevent instruction-directed storage until completion of the transaction. The method further includes recognizing a sample point during execution of the instructions while in the transactional-execution mode. The method additionally includes run-time-instrumentation-directed storing, upon successful completion of the transaction, run-time instrumentation information obtained at the sample point.
This is a continuation application that claims the benefit of U.S. patent application Ser. No. 13/422,588 filed Mar. 16, 2012, the contents of which are incorporated by reference herein in their entirety.
The present invention relates generally to processing within a computing environment, and more specifically, to sampling of collected events during a transactional-execution mode using run-time instrumentation.
Embodiments include a method for implementing run-time instrumentation sampling in transactional-execution mode. The method includes determining, by a processor, that the processor is configured to execute instructions of an instruction stream in a transactional-execution mode, the instructions defining a transaction. The method also includes interlocking completion of storage operations of the instructions to prevent instruction-directed storage until completion of the transaction. The method further includes recognizing a sample point during execution of the instructions while in the transactional-execution mode. The method additionally includes run-time-instrumentation-directed storing, upon successful completion of the transaction, run-time instrumentation information obtained at the sample point.
FIG. 9 depicts a process flow for implementing run-time instrumentation sampling in transactional-execution mode in accordance with an embodiment; and
FIG. 10 illustrates a computer program product in accordance with an embodiment.
An embodiment of the present invention enables sampling of events in a transactional-execution mode using run-time instrumentation. Run-time instrumentation is a facility capable of being used in not just a laboratory or just for off-line analysis, but also in customer environments during program run-time under program control on a processor (CPU). A sequence of instructions fetched and executed to run a program may be referred to as an instruction stream. To enhance data collection flexibility, events can be collected based on configurable intervals. CPU controls, which are settable by a program, manage run-time instrumentation. Run-time instrumentation normally reports events on a regular sampling basis; however, additional points of interest in an instrumented instruction stream may be directed by use of a run-time instrumentation next (RINEXT) instruction. A regular sampling interval is determined by either instruction count or by cycle count. Indirect sampling may also be supported based on detecting a targeted instruction operational code or an address in the instruction stream. Specific information in the instrumented instruction stream can be very useful when subsequent analysis is performed.
A processor may support multiple instruction execution modes, including a transactional-execution mode. In transactional-execution mode, a sequence of instructions may be test executed to confirm that the complete sequence can successfully complete before actually allowing effects of the instructions to impact a current state of the system. This may be accomplished by interlocking the sequence of instructions, storing system state information prior to execution of the sequence, and holding all instruction-directed system updates as a block update once the sequence of instructions completes without aborting. A transaction abort event may result from a specific abort instruction intentionally executed as part of the sequence of instructions in the transactional-execution mode or can result from a failure or interruption of the sequence of instructions while in the transactional-execution mode.
Outside of a transaction, each sample point results in storing of a multiple-record reporting group which includes recently-collected data from a collection buffer as well as data associated with the execution of the instruction at the sample point. Within a transaction, transactional-execution mode interlocks completion of storage operations of the instructions to prevent instruction-directed storage changes until completion of the transaction. A run-time-instrumentation-directed store of a reporting group recognized at a sample point within a transaction can be deferred until the successful end of the transaction where, in addition to whatever normal stores would be performed by instructions within the transaction, a deferred side-effect store of the reporting group is also performed. Alternatively, run-time-instrumentation-directed stores of reporting groups can be made to a transactional-execution scratchpad buffer before completion of the transaction, and the reporting groups copied to the program buffer as a side-effect store based on successful completion of the transaction. As a further alternative, run-time-instrumentation-directed stores of reporting groups can be implemented as non-transactional stores to the program buffer while in the transactional-execution mode, with a program buffer current address provisionally advanced in the transactional-execution mode, retaining the provisional advancement upon successful completion of the transaction and being reset upon a failure of the transaction.
The mode field 708 (M field) is a 4-bit unsigned integer whose value in the run-time-instrumentation controls specifies the sampling mode for the run-time-instrumentation controls. Supported sampling modes, may include sampling based on counting CPU cycles, counting instructions, indirect instruction operational code, indirect address, or be directed to sample in response to a sample instruction, such as RINEXT.
Indirect sampling modes may also be supported based on detecting a targeted instruction operational code or an address in the instruction stream. A buffer or array can be used to store a number of instruction operational codes, instruction addresses, and/or addresses in instruction operands. The sample instruction is an instruction that matches one of the indirect operational codes or address values.
In transactional-execution mode, multiple instructions may be grouped to form a single transaction. Instrumentation module 506 may coordinate with a transactional-execution (TX) module 526 to store run-time instrumentation events to a transactional-execution scratchpad buffer 524 while in transactional-execution mode. The transactional-execution scratchpad buffer 524 may be used when a potential number of sample points that can occur during a transaction is greater what can be temporarily saved within the processor 106 for the remaining duration of the transaction. The transactional-execution scratchpad buffer 524 provides for temporary storage such that one or more reporting groups can be conditionally stored to the program buffer 522 on a successful transaction completion. It will be understood that the TX module 526 can be combined into the instrumentation module 506 or another portion of the processor 106.
The header section 802 may include a begin record or a timestamp record to hold status, tracking, and/or timing information. A begin record is stored in the header section 802 for the first reporting group stored in a program buffer (i.e., when the RCA 706 is equal to the ROA 702). In an embodiment, the begin record includes a record type field of “02”, a number of reporting groups (NRG) field for indicating how many reporting groups are currently stored in the program buffer, a RGS field to indicate the size of the reporting groups, a stopped (S) field for indicating whether or not the program buffer 522 is full, a halted (H) field for indicting whether the run-time instrumentation is halted, and a time of day (TOD) clock field for indicating when the begin record was written. In an embodiment, at least a subset of the fields in the begin record are sourced from the RI control block (e.g., RICCB). An embodiment of the timestamp record has a record type of “03” and includes a TOD clock field for indicating when the record was stored. In an embodiment, a timestamp record is stored in the header section 802 for each reporting group other than the first reporting group.
In an embodiment, a transfer record has a record type field of “14” and is created by execution of a return type branch instruction such as: a. BRANCH ON CONDITION (BCR) when the R2 field is nonzero and the mask is in the range 1-14; b. BRANCH ON CONDITION (BC) when the J bit is zero or the mask is in the range 1-14; c. BRANCH ON COUNT (BCT, BCTR, BCTG,BCTGR); d. BRANCH ON INDEX HIGH (BXH, BXHG); e. BRANCH ON INDEX LOW OR EQUAL(BXLE, BXLEG); f. BRANCH RELATIVE ON CONDITION(BRC); g. BRANCH RELATIVE ON CONDITION LONG (BRCL); h. BRANCH RELATIVE ON COUNT (BRCT,BRCTG); i. BRANCH RELATIVE ON COUNT HIGH(BRCTH); j. BRANCH RELATIVE ON INDEX HIGH(BRXH, BRXHG); k. BRANCH RELATIVE ON INDEX LOW OR EQUAL (BRXLE, BRXLG); 1. COMPARE AND BRANCH (CRB, CGRB); m. COMPARE AND BRANCH RELATIVE (CRJ,CGRJ); n. COMPARE IMMEDIATE AND BRANCH(CIB, CGIB); o. COMPARE IMMEDIATE AND BRANCH RELATIVE (CIJ, CGIJ); p. COMPARE LOGICAL AND BRANCH(CLRB, CLGRB); q. COMPARE LOGICAL AND BRANCH RELATIVE(CLRJ, CLGRJ); r. COMPARE LOGICAL IMMEDIATE AND BRANCH (CLIB, CLGIB); and s. COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CLIJ, CLGIJ). The transfer record is created when the branch is taken. For the transfer record, the instruction address field contains the address of the branch instruction or execute type instruction if the branch is the target of an execute type instruction, and the target address field contains the return location.
The footer section 808 can include an instruction record containing information about execution of a sample instruction. An instruction record is created when a reporting group is stored for a sample instruction. An embodiment of the instruction record includes a record type field of “04”, an instruction address code field to indicate how the instruction address bit positions of the current PSW are represented in the instruction record, an instruction address field which varies depending on the addressing mode (e.g., 64, 31 or 24 bit) and contains the instruction address of the sample instruction or execute type instruction if the sample instruction was the target of an execute type instruction, and an instruction-data buffer (IDB) field containing any model dependent data collected from the IDB.
FIG. 9 depicts a process flow 900 that may implement run-time instrumentation sampling in transactional-execution mode. The process flow 900 may be implemented by processor 106. The process flow 900 may alternatively be implemented by emulated processor 29 of FIG. 1B. For ease of explanation, the process flow 900 is described herein in reference to processor 106.
Initially, the run-time instrumentation module 506 and register 510 of FIG. 5 can be configured to support interval-based, indirect, or directed sampling using the LRIC operand to load control blocks 600 and 700 of FIGS. 6 and 7 as previously described. Once run-time instrumentation controls are configured and enabled, information such as events and data can be collected in collection buffer 508. Periodically, indirectly, or as directed, sample instructions are reached that trigger storing of a reporting group into the program buffer 522. Storage to the program buffer 522, also referred to as run-time instrumentation program buffer 522, may be deferred until a transaction completes successfully. Optionally, transactional-execution scratchpad buffer 524 can be used to accommodate storage of multiple reporting groups until the transaction completes and the reporting groups are transferred to the run-time instrumentation program buffer 522.
At block 902, the processor 106 determines whether it is configured to execute instructions of an instruction stream in a transactional-execution mode, where the instructions define a transaction. The instruction stream can be a problem-state program or a supervisor-state program from run-time memory 504.
At block 904, the processor 106 interlocks completion of storage operations of the instructions to prevent instruction-directed storage until completion of the transaction. At block 906, the processor 106 recognizes a sample point during execution of the instructions while in the transactional-execution mode. The sample point can be based on an interval count reaching a threshold value (e.g., instruction count or cycle count), by an indirect instruction operation code, by an indirect address, or by an RINEXT instruction.
At block 908, if a sample point was identified, the processor 106 performs run-time-instrumentation-directed storing of run-time instrumentation information obtained at the sample point. The run-time-instrumentation-directed storing can be performed a number of ways. Run-time instrumentation events are collected in collection buffer 508 while the processor 106 is in the transactional-execution mode. In an embodiment, storage of the collected run-time instrumentation events as a reporting group in run-time instrumentation program buffer 522 is deferred while in the transactional-execution mode. At block 910, side-effect storing of the reporting group in the run-time instrumentation program buffer 522 is performed based on the completion of the transaction. The side-effect storing advances the RCA 706 to account for the newly stored reporting group and in preparation to store the next reporting group. Side-effect storing is storage that is not directly requested by the instructions executing on the processor 106 but occurs indirectly as a side-effect.
As an alternative, if the processor 106 includes transactional-execution scratchpad buffer 524, then reporting groups are temporarily stored in the transactional-execution scratchpad buffer 524 while the processor 106 is in the transactional-execution mode. Storage of reporting groups from the transactional-execution scratchpad buffer 524 to run-time instrumentation program buffer 522 is deferred while in the transactional-execution mode. This allows for subsequent sample points to be recognized during execution of the instructions while in the transactional-execution mode, with subsequent reporting groups stored in the transactional-execution scratchpad buffer 524. An alternate implementation of block 910 side-effect stores the reporting groups from the transactional-execution scratchpad buffer 524 to the run-time instrumentation program buffer 522 based on the completion of the transaction. The side-effect storing advances the RCA 706 to account for the newly stored reporting groups and in preparation to store the next reporting group.
As a further alternative, the processor 106 may store a copy of RCA 706 responsive to a transition from a non-transactional-execution mode to the transactional-execution mode. The processor 106 performs the run-time-instrumentation-directed storing as a non-transactional store of a reporting group written to the address identified by the RCA 706. The RCA 706 is updated based on storing the reporting group to the run-time instrumentation program buffer 522. The update provisionally advances the RCA 706 to account for the newly stored reporting group and in preparation to store the next reporting group. This is referred to as conditional management of the run-time instrumentation program buffer 522. At block 912, if conditional management is employed, advancement of RCA 706 is maintained based on successful completion of transaction. The processor 106 may detect a transaction abort event associated with the transaction. The RCA 706 can be restored to the copy of the RCA 706 upon detecting the transaction abort event. A transaction abort record associated with the transaction abort event is collected and stored in a next reporting group in the program buffer 522. Restoring the RCA 706 recovers space that may have been used to store reporting groups of the transaction and still reports data associated with the transaction abort event. Alternatively, the RCA 706 need not be copied and restored if space recovery is not desired. In either case, a transaction failure code may be stored in the transaction abort record to indicate a transaction failure reason.
Data collected related to transactional-execution mode can be made available to sample software equipped to read the run-time instrumentation records and provide analysis of transaction execution results and failure codes. The output of the analysis can be used to adaptively recompile a just-in-time program to avoid or reduce a number of transactional-execution mode failures.
As described above, embodiments can be embodied in the form of computer-implemented processes and apparatuses for practicing those processes. An embodiment may include a computer program product 1000 as depicted in FIG. 10 on a computer readable/usable medium 1002 with computer program code logic 1004 containing instructions embodied in tangible media as an article of manufacture. Exemplary articles of manufacture for computer readable/usable medium 1002 may include floppy diskettes, CD-ROMs, hard drives, universal serial bus (USB) flash drives, or any other computer-readable storage medium, wherein, when the computer program code logic 1004 is loaded into and executed by a computer, the computer becomes an apparatus for practicing the invention. Embodiments include computer program code logic 1004, for example, whether stored in a storage medium, loaded into and/or executed by a computer, or transmitted over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via electromagnetic radiation, wherein, when the computer program code logic 1004 is loaded into and executed by a computer, the computer becomes an apparatus for practicing the invention. When implemented on a general-purpose microprocessor, the computer program code logic 1004 segments configure the microprocessor to create specific logic circuits.
Technical effects and benefits include sampling events in a transactional-execution mode using run-time instrumentation. Support for sampling while a processor is in a transactional-execution mode that would otherwise block storage during a transaction enables one or more sample points to be collected during transaction execution. A separate transactional-execution scratchpad buffer can provide an intermediate storage area to defer writing reporting groups to a program buffer prior to transaction completion. Tracking a value of a program buffer current address can enable space recovery in the program buffer by resetting the program buffer current address to an earlier location in response to a transaction abort event. Support for sampling in transactional-execution mode can also be included in an emulated or virtual processor using emulation routines.
1. A computer implemented method for implementing run-time instrumentation sampling in transactional-execution mode, the method comprising:
determining, by a processor, that the processor is configured to execute instructions of an instruction stream in a transactional-execution mode, the instructions defining a transaction;
interlocking completion of storage operations of the instructions to prevent instruction-directed storage until completion of the transaction;
collecting run-time instrumentation events in a collection buffer while in the transactional-execution mode, the collection buffer located within the processor, wherein the run-time instrumentation events are events recognized by the processor during execution of the instructions;
recognizing a sample point during execution of the instructions while in the transactional-execution mode, the sample point corresponding to an instruction executed inside of the transaction;
run-time-instrumentation-directed storing, upon successful completion of the transaction, run-time instrumentation information obtained at the sample point; and
performing the run-time-instrumentation-directed storing as a non-transactional store of a reporting group based on the run-time instrumentation events in the collection buffer to a run-time instrumentation program buffer in a main memory.
2. The method of claim 1, wherein run-time-instrumentation-directed storing the run-time instrumentation information obtained at the sample point further comprises:
deferring storage of the run-time instrumentation events as the reporting group in the run-time instrumentation program buffer while in the transactional-execution mode; and
side-effect storing the reporting group in the run-time instrumentation program buffer based on the completion of the transaction.
3. The method of claim 1, wherein run-time-instrumentation-directed storing the run-time instrumentation information obtained at the sample point further comprises:
storing the reporting group comprising the run-time instrumentation information in a transactional-execution scratchpad buffer; and
deferring storage of the reporting group from the transactional-execution scratchpad buffer to the run-time instrumentation program buffer while in the transactional-execution mode.
recognizing a subsequent sample point during execution of the instructions while in the transactional-execution mode;
run-time-instrumentation-directed storing subsequent run-time instrumentation information obtained at the subsequent sample point as a subsequent reporting group in the transactional-execution scratchpad buffer;
deferring storage of the subsequent reporting group in the run-time instrumentation program buffer while in the transactional-execution mode; and
side-effect storing the reporting group and the subsequent reporting group from the transactional-execution scratchpad buffer to the run-time instrumentation program buffer based on the completion of the transaction.
5. A computer implemented method for implementing run-time instrumentation sampling in transactional-execution mode, the method comprising:
storing a copy of a program buffer current address pointing to a current location in a run-time instrumentation program buffer upon a transition from a non-transactional-execution mode to the transactional-execution mode;
recognizing a sample point during execution of the instructions while in the transactional-execution mode;
run-time-instrumentation-directed storing, upon successful completion of the transaction, run-time instrumentation information obtained at the sample point;
performing the run-time-instrumentation-directed storing as a non-transactional store of a reporting group written to the program buffer current address;
updating the program buffer current address based on the storing the reporting group;
detecting a transaction abort event associated with the transaction;
restoring the program buffer current address to the copy of the program buffer current address upon detecting the transaction abort event; and
storing a transaction abort record associated with the transaction abort event in a next reporting group in the run-time instrumentation program buffer.
detecting a transaction abort event as a failure to successfully complete the transaction;
collecting a transaction abort record associated with the transaction abort event in the collection buffer; and
storing the reporting group containing the transaction abort record.
storing a transaction failure code in the transaction abort record to indicate a transaction failure reason.
8. The method of claim 1, wherein the sample point is identified based on one of: cycle-count sampling, instruction-count sampling, indirect sampling, and directed sampling.
US13788490 2012-03-16 2013-03-07 Run-time instrumentation sampling in transactional-execution mode Active US9372693B2 (en)
US13422588 US9411591B2 (en) 2012-03-16 2012-03-16 Run-time instrumentation sampling in transactional-execution mode
US13788490 US9372693B2 (en) 2012-03-16 2013-03-07 Run-time instrumentation sampling in transactional-execution mode
US13422588 Continuation US9411591B2 (en) 2012-03-16 2012-03-16 Run-time instrumentation sampling in transactional-execution mode
US20130246775A1 true US20130246775A1 (en) 2013-09-19
US9372693B2 true US9372693B2 (en) 2016-06-21
ID=49158818
US13422588 Active 2032-10-04 US9411591B2 (en) 2012-03-16 2012-03-16 Run-time instrumentation sampling in transactional-execution mode
US13788490 Active US9372693B2 (en) 2012-03-16 2013-03-07 Run-time instrumentation sampling in transactional-execution mode
US (2) US9411591B2 (en)
EP (1) EP2810168B1 (en)
JP (1) JP6058020B2 (en)
CN (1) CN104169889B (en)
WO (1) WO2013136737A1 (en)
CN103513958B (en) * 2012-06-27 2017-01-25 上海芯豪微电子有限公司 System and method for high performance instruction cache
US9996387B2 (en) * 2013-11-04 2018-06-12 Lewis Rhodes Labs, Inc. Context switching for computing architecture operating on sequential data
US9524257B2 (en) * 2014-06-27 2016-12-20 International Business Machines Corporation Transactional execution enabled supervisor call interruption while in TX mode
GB2533650A (en) * 2014-12-23 2016-06-29 Advanced Risc Mach Ltd Debugging data processing transactions
GB2533604A (en) * 2014-12-23 2016-06-29 Advanced Risc Mach Ltd Instruction sampling within transactions
JPS6421546A (en) * 1987-07-16 1989-01-24 Nec Corp Device for collecting program execution history
CN1912849A (en) 2006-09-01 2007-02-14 上海大学 Chip dynamic tracing method of microprocessor
US20070261033A1 (en) 2006-05-05 2007-11-08 Chen Wen-Tzer T Method and apparatus for selectively marking and executing instrumentation code
CN101165658A (en) 2006-10-18 2008-04-23 国际商业机器公司 Method and system for automatically generating unit test case of reproduced operation problem
US20080189529A1 (en) 2007-02-01 2008-08-07 International Business Machines Corporation Controlling instruction execution in a processing environment
US20090113398A1 (en) 2007-10-25 2009-04-30 International Business Machines Corporation Managing the tracing of the execution of a computer program
US20110153960A1 (en) 2009-12-23 2011-06-23 Ravi Rajwar Transactional memory in out-of-order processors with xabort having immediate argument
CN101278265B (en) 2005-09-30 2012-06-06 英特尔公司 Method for collecting and analyzing information and system for optimizing code segment
JPH0830519B2 (en) * 1987-07-17 1996-03-27 日本カ−ボン株式会社 Heat resistance Choi - down
CN101952806A (en) 2007-12-18 2011-01-19 格罗方德半导体公司 Mechanism for profiling program software running on a processor
US7870438B2 (en) 2008-02-15 2011-01-11 International Business Machines Corporation Method, system and computer program product for sampling computer system performance data
Anonymous Disclosed: "Embedded Trace Macrocell-ETMv1.0 to ETMv3.5" Architecture Specification, ARM, Jan. 2011, pp. 1-420. *
BJ Bruetsch, et al., Hardware Assist for Program Event Recording, http://www.ip.com/pubview/IPCOM000059699D; Jan. 1, 1986, 3 pages.
Chinese Office Action for Chinese Application No. 201380014676.X, Mailed Apr. 18, 2016; 11 pages.
Chinese Office Action for Chinese Application Serial No. 201380014669.X, Mailed Apr. 14, 2016, 9 pages.
European Application No. 13760324.7 Extended European Search Report dated Jan. 21, 2015, 7 pages. *
European Application No. 13761271.9 Extended European Search Report dated Mar. 2, 2015, 7 pages. *
European Patent Application No. 13762008.4 Extended European Search Report dated Mar. 16, 2015, 7 pages.
Extended European Search Report, Application No. 13760299.1 (PCT/JP2013001240); Mailing Date: Jun. 25, 2015; 8 pages.
International Search Report for International Application No. PCT/JP2013/001240; International Filing Date Feb. 28 2013; Date of Mailing: May 14, 2013; 3 pages.
International Search Report for International Application No. PCT/JP2013/001264; International Filing Date Mar. 1, 2013; Date of Mailing: May 14, 2013; 3 pages. *
Matthew C. Merten et al. "A Hardware-Driven Profiling Scheme for Identifying Program Hot Spots to Support Runtime Optimization"; Appears in Proceedings of the 26th Annual Intl. Symposium on Compjer Architecture (ISCA); pp. 136-147; May 1999.
RJ Bullions, et al., Dynamic Enabling/Disabling of Program Event Recording Range Compare, IBM Technical Disclosure Bulletin, vol. 20, No. 9, 1978, 3 pages.
U.S. Appl. No. 13/422,552; Notice of Allowance, Date Filed: Mar. 16, 2012/ Date Mailed: Jan. 8, 2016; 19 pages.
U.S. Appl. No. 13/422,552;Non-Final Office Action; Date Filed: Mar. 16, 2012; Date Mailed: Aug. 27, 2014; 55 pages.
U.S. Appl. No. 13/792,283; Notice of Allowance, Date Filed: Mar. 11, 2013; Date Mailed: Nov. 20, 2015; 22 pages.
U.S. Appl. No. 13/792,290; Non-Final Office Action, Date Filed: Mar. 11, 2013; Date Mailed: Jun. 5, 2015; 80 pages.
Yoshioka Hirotaka, Developing memory profiling tools, Interface, 2003.08.01, vol. 29, No. 8, pp. 132-142.
z/Architecture: "Principles of Operation," Ninth Edition, Aug. 2010, Publication No. SA22-7832-08, copyright IBM Corp., 700 pp. (Part 1); and, 776 pages (Part 2), separated into 2 electronic attachments.
JP6058020B2 (en) 2017-01-11 grant
US9411591B2 (en) 2016-08-09 grant
EP2810168A4 (en) 2015-04-08 application
US20130247010A1 (en) 2013-09-19 application
EP2810168A1 (en) 2014-12-10 application
WO2013136737A1 (en) 2013-09-19 application
EP2810168B1 (en) 2016-07-20 grant
CN104169889B (en) 2017-10-24 grant
JP2015513375A (en) 2015-05-11 application
CN104169889A (en) 2014-11-26 application
US20130246775A1 (en) 2013-09-19 application
US20130339975A1 (en) 2013-12-19 Management of shared transactional resources
US20130339703A1 (en) 2013-12-19 Restricting processing within a processor to facilitate transaction completion
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BRADBURY, JONATHAN D.;GAINEY, CHARLES W., JR.;GSCHWIND, MICHAEL K.;SIGNING DATES FROM 20130220 TO 20130227;REEL/FRAME:029942/0544