IP Library › Granted Patent US 9,342,454
Granted Patent B2
US 9,342,454 · App. 13/650,448 · Granted May 17, 2016

Nested rewind only and non rewind only transactions in a data processing system supporting transactional storage accesses

Inventors: Bradly G. Frey (Austin, TX); Guy L. Guthrie (Austin, TX); Cathy May (Ossining, NY); Derek E. Williams (Austin, TX)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F12/084G06F9/467G06F12/0815
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,342,454
App. No.
13/650,448
Granted
May 17, 2016
Kind
B2
Abstract

In a multiprocessor data processing system having a distributed shared memory system, first and second nested memory transactions are executed, where the first memory transaction is a rewind-only transaction (ROT) and the second memory transaction is a non-ROT memory transaction. The first memory transaction has a transaction body including the second memory transaction and an additional plurality of transactional memory access instructions. In response to execution of the transactional memory access instructions, memory accesses are performed to the distributed shared memory system. Conflicts between memory accesses not within the first memory transaction and at least a load footprint of any of the transactional memory access instructions preceding the second memory transaction are not tracked. However, conflicts between memory accesses not within the first memory transaction and store and load footprints of any of the transactional memory access instructions that follow initiation the second memory transaction are tracked.

Claims (61)

1. A method, comprising:

in a multiprocessor data processing system having a shared memory system, executing a first memory transaction and a nested second memory transaction, wherein the first memory transaction has a transaction body including the second memory transaction and an additional plurality of transactional memory access instructions, and wherein the first memory transaction is a rewind-only transaction (ROT) and the second memory transaction is a non-ROT memory transaction;

in response to execution of the plurality of transactional memory access instructions, performing one or more memory accesses to the shared memory system indicated by the one or more transactional memory access instructions;

refraining from tracking conflicts between memory accesses not within the first memory transaction and at least a load footprint of any of the plurality of transactional memory access instructions preceding the second memory transaction; and

tracking conflicts between memory accesses not within the first memory transaction and store and load footprints of any of the plurality of transactional memory access instructions that follow initiation of the second memory transaction.

2. The method of claim 1 , and further comprising:

during execution of the first memory transaction, tracking conflicts between a store footprint of the first memory transaction and memory accesses not within the first memory transaction.

3. The method of claim 1 , and further comprising:

setting a transaction mode register to indicate whether or not to track conflicts for the transactional memory accesses of the first memory transaction responsive to execution of instructions initiating the first and second memory transactions; and

determining whether to track conflicts for the transactional memory accesses of the first memory transaction based on the setting of the transaction mode register.

4. The method of claim 1 , and further comprising:

tracking a current memory transaction nesting level in a nesting level register; and

determining whether an instruction delimiting an end of the second memory transaction should invoke commitment of execution results of one or more transactional memory accesses within the second memory transaction to the shared memory system by reference to the current memory transaction nesting level indicated by the nesting level register.

5. The method of claim 1 , wherein:

the transaction body of the first memory transaction includes an explicit transactional abort instruction; and

the method further comprises in response to execution of the transactional abort instruction, discarding execution results of any of the plurality of memory access instructions that have been executed and passing control to a fail handler.

6. The method of claim 5 , and further comprising:

committing the first memory transaction in response to bypassing execution of the transactional abort instruction and in response to detecting no conflict between a store footprint of the first memory transaction and memory accesses not within the first memory transaction.

7. The method of claim 1 , and further comprising:

in response to detecting a conflict between a store footprint of the plurality of transactional memory accesses of the first memory transaction and a memory access not within the first memory transaction, refraining from committing the first memory transaction to the shared memory system.

8. A processing unit for a multiprocessor data processing system, the processing unit comprising:

at least one execution unit that executes a first memory transaction and a nested second memory transaction, wherein the first memory transaction has a transaction body including the second memory transaction and an additional plurality of transactional memory access instructions, and wherein the first memory transaction is a rewind-only transaction (ROT) and the second memory transaction is a non-ROT memory transaction;

a cache that, responsive to execution of the plurality of transactional memory access instructions, performs one or more memory accesses to the shared memory system indicated by the one or more transactional memory access instructions;

transactional memory logic that refrains from tracking conflicts between memory accesses not within the first memory transaction and at least a load footprint of any of the plurality of transactional memory access instructions preceding the second memory transaction and tracks conflicts between memory accesses not within the first memory transaction and store and load footprints of any of the plurality of transactional memory access instructions that follow initiation of the second memory transaction.

9. The processing unit of claim 8 , wherein the transactional memory logic, during execution of the first memory transaction, tracks conflicts between a store footprint of the first memory transaction and memory accesses not within the first memory transaction.

10. The processing unit of claim 8 , wherein:

the transactional memory logic sets a transaction mode register to indicate whether or not to track conflicts for the transactional memory accesses of the first memory transaction responsive to execution of instructions initiating the first and second memory transactions; and

the transactional memory logic determines whether to track conflicts for the transactional memory accesses of the first memory transaction based on the setting of the transaction mode register.

11. The processing unit of claim 8 , wherein:

the transactional memory logic tracks a current memory transaction nesting level in a nesting level register; and

the transactional memory logic determines whether an instruction delimiting an end of the second memory transaction should invoke commitment of execution results of one or more transactional memory accesses within the second memory transaction to the shared memory system by reference to the current memory transaction nesting level indicated by the nesting level register.

12. The processing unit of claim 8 , wherein:

the transaction body of the first memory transaction includes an explicit transactional abort instruction; and

the processing unit, responsive to execution of the transactional abort instruction, discards execution results of any of the plurality of memory access instructions that have been executed and passes control to a fail handler.

13. The processing unit of claim 12 , wherein:

the processing unit, responsive to bypassing execution of the transactional abort instruction and detecting no conflict between a store footprint of the first memory transaction and memory accesses not within the first memory transaction, commits the first memory transaction.

14. The processing unit of claim 8 , wherein:

the processing unit, responsive to detecting a conflict between a store footprint of the plurality of transactional memory accesses of the first memory transaction and a memory access not within the first memory transaction, refrains from committing the first memory transaction to the shared memory system.

15. A data processing system, comprising:

a plurality of processing units in accordance with claim 8 ; and

an interconnect fabric coupling the plurality of processing units.

16. A design structure tangibly embodied in a non-transitory machine-readable storage device for designing, manufacturing, or testing an integrated circuit, the design structure comprising:

a processing unit for a multiprocessor data processing system, the processing unit including:

at least one execution unit that executes a first memory transaction and a nested second memory transaction, wherein the first memory transaction has a transaction body including the second memory transaction and an additional plurality of transactional memory access instructions, and wherein the first memory transaction is a rewind-only transaction (ROT) and the second memory transaction is a non-ROT memory transaction;

a cache that, responsive to execution of the plurality of transactional memory access instructions, performs one or more memory accesses to the shared memory system indicated by the one or more transactional memory access instructions;

transactional memory logic that refrains from tracking conflicts between memory accesses not within the first memory transaction and at least a load footprint of any of the plurality of transactional memory access instructions preceding the second memory transaction and tracks conflicts between memory accesses not within the first memory transaction and store and load footprints of any of the plurality of transactional memory access instructions that follow initiation of the second memory transaction.

17. The design structure of claim 16 , wherein the transactional memory logic, during execution of the first memory transaction, tracks conflicts between a store footprint of the first memory transaction and memory accesses not within the first memory transaction.

18. The design structure of claim 16 , wherein:

the transactional memory logic sets a transaction mode register to indicate whether or not to track conflicts for the transactional memory accesses of the first memory transaction responsive to execution of instructions initiating the first and second memory transactions; and

the transactional memory logic determines whether to track conflicts for the transactional memory accesses of the first memory transaction based on the setting of the transaction mode register.

19. The design structure of claim 16 , wherein:

the transactional memory logic tracks a current memory transaction nesting level in a nesting level register; and

the transactional memory logic determines whether an instruction delimiting an end of the second memory transaction should invoke commitment of execution results of one or more transactional memory accesses within the second memory transaction to the shared memory system by reference to the current memory transaction nesting level indicated by the nesting level register.

20. The design structure of claim 16 , wherein:

the transaction body of the first memory transaction includes an explicit transactional abort instruction; and

the processing unit, responsive to execution of the transactional abort instruction, discards execution results of any of the plurality of memory access instructions that have been executed and passes control to a fail handler.

21. The design structure of claim 20 , wherein:

the processing unit, responsive to bypassing execution of the transactional abort instruction and detecting no conflict between a store footprint of the first memory transaction and memory accesses not within the first memory transaction, commits the first memory transaction.

22. The design structure of claim 16 , wherein:

the processing unit, responsive to detecting a conflict between a store footprint of the plurality of transactional memory accesses of the first memory transaction and a memory access not within the first memory transaction, refrains from committing the first memory transaction to the shared memory system.

23. The design structure of claim 16 , wherein the design structure comprises a hardware description language (HDL) design structure.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2012
From: FREY, BRADLY G.; GUTHRIE, GUY L.; MAY, CATHY; WILLIAMS, DEREK E.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 029455/0720 →
Continuity (2)
Provisional Application 61678717 · Aug 2, 2012
Related Publication 20140040557A1 · Feb 6, 2014