Efficient placement of software transactional memory operations around procedure calls
First Claim
1. A method for compiling an efficient program utilizing software transactional memory operations, the method comprising:
- identifying one or more procedures in the program which comprise one or more software transactional memory operations which are able to be optimized outside of the procedure;
creating, for each of the one or more procedures, a cloned version of the procedure which allows the calling of the software transactional memory operations which are able to be optimized outside of the cloned version;
moving the one or more software transactional memory operations which are able to be optimized outside of the procedures; and
replacing calls to each of the one or more procedures with calls to its cloned version.
2 Assignments
0 Petitions
Accused Products
Abstract
A software transactional memory system is described which utilizes decomposed software transactional memory instructions as well as runtime optimizations to achieve efficient performance. The decomposed instructions allow a compiler with knowledge of the instruction semantics to perform optimizations which would be unavailable on traditional software transactional memory systems. Additionally, high-level software transactional memory optimizations are performed such as code movement around procedure calls, addition of operations to provide strong atomicity, removal of unnecessary read-to-update upgrades, and removal of operations for newly-allocated objects. During execution, multi-use header words for objects are extended to provide for per-object housekeeping, as well as fast snapshots which illustrate changes to objects. Additionally, entries to software transactional memory logs are filtered using an associative table during execution, preventing needless writes to the logs. Finally a garbage collector with knowledge of the software transactional memory system compacts software transactional memory logs during garbage collection.
-
Citations
20 Claims
-
1. A method for compiling an efficient program utilizing software transactional memory operations, the method comprising:
-
identifying one or more procedures in the program which comprise one or more software transactional memory operations which are able to be optimized outside of the procedure;
creating, for each of the one or more procedures, a cloned version of the procedure which allows the calling of the software transactional memory operations which are able to be optimized outside of the cloned version;
moving the one or more software transactional memory operations which are able to be optimized outside of the procedures; and
replacing calls to each of the one or more procedures with calls to its cloned version. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A compiler system for removing redundant instructions from a program containing software transactional memory operations, the system comprising an optimization module, the optimization module configured to:
-
locate methods in the program which contain software transactional memory operations which are able to be hoisted outside of the methods;
hoist the software transactional memory operations which are able to be hoisted out of the methods;
replace calls to the located methods with calls to specialized methods which do not contain the software transactional memory operations which are able to be hoisted; and
optimize the program, including the software transactional memory operations. - View Dependent Claims (12, 13, 14, 15, 16)
-
-
17. One or more computer-readable media containing instructions which, when executed by a computer, cause the computer to perform a method for optimizing a program comprising software transactional memory instructions, the method comprising:
-
receiving an intermediate representation of the program, the intermediate representation including representations of procedures which comprise software transactional memory instructions which can be optimized outside of the procedures;
cloning procedures which comprise software transactional memory instructions which can be optimized outside of the procedures to create procedures which relies on the software transactional memory instructions which can be optimized outside of the procedures being performed before the procedures are called; and
moving the software transactional memory instructions which can be optimized outside of the procedures to call sites for the procedures. - View Dependent Claims (18, 19, 20)
-
Specification