US8464261B2

System and method for executing a transaction using parallel co-transactions

Summary by NHIP

Parallel Co-Transaction Execution

The system initiates concurrent execution of multiple code sequences as atomic transactions within a shared memory set. At most one transaction commits its results while all others abort without subsequent retry, managed by a shared done flag and lazy write ownership.

Claim Score by NHIP

Read claim 16, the broadest

Abstract

The transactional memory system described herein may implement parallel co-transactions that access a shared memory such that at most one of the co-transactions in a set will succeed and all others will fail (e.g., be aborted). Co-transactions may improve the performance of programs that use transactional memory by attempting to perform the same high-level operation using multiple algorithmic approaches, transactional memory implementations and/or speculation options in parallel, and allowing only the first to complete to commit its results. If none of the co-transactions succeeds, one or more may be retried, possibly using a different approach and/or transactional memory implementation. The at-most-one property may be managed through the use of a shared "done" flag. Conflicts between co-transactions in a set and accesses made by transactions or activities outside the set may be managed using lazy write ownership acquisition and/or a priority-based approach. Each co-transaction may execute on a different processor resource.

US8464261B2, drawing sheet 1
Sheet 1 of 11

Term

4.7 yearsleft in the term

Expires 12 June 2031, including 438 days of term adjustment.

  1. Priority and filed
  2. Granted
  3. Today
  4. Expires

20 claims: 3 independent, 17 dependent

  1. 1
    A method, comprising:using a computer to perform: initiating concurrent execution of two or more different code sequences, each of which is executable to perform a respective task as an atomic transaction, wherein each of the atomic transactions is a transaction in a set of co-transactions, wherein at most one of the atomic transactions in the set of co-transactions is to be allowed to succeed and commit its results, and wherein each of the two or more code sequences comprises one or more memory access operations to locations in a shared memory that is accessible to a plurality of concurrently executing transactions;committing results of at most one of the atomic transactions being performed by the two or more code sequences;and aborting all of the atomic transactions being performed by the two or more code sequences other than the at most one of the atomic transactions for which results are committed, wherein aborted ones of the atomic transactions in the set of co-transactions are not subsequently retried if results of one of the atomic transactions being performed by the two or more code sequences have been committed.
  2. 9
    A system comprising:one or more processors;and a memory coupled to the one or more processors and storing program instructions executable by the one or more processors to cause the one or more processors to perform: initiating concurrent execution of two or more different code sequences, each of which is executable to perform a respective task as an atomic transaction, wherein each of the atomic transactions is a transaction in a set of co-transactions, wherein at most one of the atomic transactions in the set of co-transactions is to be allowed to succeed and commit its results, and wherein each of the two or more code sequences comprises one or more memory access operations to locations in a shared memory that is accessible to a plurality of concurrently executing transactions;committing results of at most one of the atomic transactions being performed by the two or more code sequences;and aborting all of the atomic transactions being performed by the two or more code sequences other than the at most one of the atomic transactions for which results are committed, wherein aborted ones of the atomic transactions in the set of co-transactions are not subsequently retried if results of one of the atomic transactions being performed by the two or more code sequences have been committed.
  3. 16
    Broadest claimClaim Score 69, broad(NHIP)A computer readable storage medium storing program instructions computer-executable to perform:initiating concurrent execution of two or more different code sequences, each of which is executable to perform a respective task as an atomic transaction, wherein each of the atomic transactions is a transaction in a set of co-transactions, wherein at most one of the atomic transactions in the set of co-transactions is to be allowed to succeed and commit its results, and wherein each of the two or more code sequences comprises one or more transactions has committed its results.