System and method for implementing nonblocking zero-indirection transactional memory
First Claim
1. A computer-implemented method, comprising:
- a transaction initiating opening a shared object for writing;
the transaction determining that the shared object is owned for writing by another transaction, wherein the shared object comprises an indicator of the owning transaction, and wherein said determining comprises reading the value of the indicator;
in response to said determining, the transaction requesting that the owning transaction abort itself;
wherein said requesting comprises indicating to the owning transaction that an abort is requested, wherein said indicating comprises setting a flag associated with the owning transaction to indicate a request that the owning transaction abort itself, and wherein setting the flag does not force the owning transaction to abort itself.
2 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods for implementing and using nonblocking zero-indirection software transactional memory (NZSTM) are disclosed. NZSTM systems implement object-based software transactional memory that eliminates all levels of indirection except in the uncommon case of a conflict with an unresponsive thread. Shared data is co-located with a header in an NZObject, and is addressable at a fixed offset from the header. Conflicting transactions are requested to abort themselves without being forced to abort. NZObjects are modified in place when there are no conflicts, and when a conflicting transaction acknowledges the abort request. In the uncommon case, NZObjects are inflated to introduce a locator and some levels of indirection, and are restored to their un-inflated form following resolution of the conflict. In some embodiments, transactions are executed using best effort hardware transactional memory if it is available and effective, and software transactional memory if not, yielding a hybrid transactional memory system, NZTM.
-
Citations
19 Claims
-
1. A computer-implemented method, comprising:
-
a transaction initiating opening a shared object for writing; the transaction determining that the shared object is owned for writing by another transaction, wherein the shared object comprises an indicator of the owning transaction, and wherein said determining comprises reading the value of the indicator; in response to said determining, the transaction requesting that the owning transaction abort itself; wherein said requesting comprises indicating to the owning transaction that an abort is requested, wherein said indicating comprises setting a flag associated with the owning transaction to indicate a request that the owning transaction abort itself, and wherein setting the flag does not force the owning transaction to abort itself. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system, comprising:
-
one or more processors; and a memory coupled to the one or more processors and comprising a shared object accessible by one or more threads executing on the one or more processors; wherein the memory further comprises program instructions executable by the one or more processors to implement; a transaction initiating opening the shared object for writing; the transaction determining that the shared object is owned for writing by another transaction, wherein the shared object comprises an indicator of the owning transaction, and wherein said determining comprises reading the value of the indicator; in response to said determining, the transaction requesting that the owning transaction abort itself; wherein said requesting comprises indicating to the owning transaction that an abort is requested, wherein said indicating comprises setting a flag associated with the owning transaction to indicate a request that the owning transaction abort itself, and wherein setting the flag does not force the owning transaction to abort itself. - View Dependent Claims (12, 13, 14, 15, 16)
-
-
17. A computer-readable storage medium comprising program instructions computer-executable to implement:
-
a transaction initiating opening a shared object for writing; the transaction determining that the shared object is owned for writing by another transaction; in response to said determining, the transaction requesting that the owning transaction abort itself; wherein the shared object comprises; a header portion; and a data portion co-located with the header portion and addressable at a fixed offset from the header portion; wherein the header portion comprises one or more of;
an indicator of the owning transaction, an indicator of a reader list comprising one or more transactions having read ownership of the shared object, an indicator of a location of a backup copy of the data portion, or an indicator of a clone function usable for creating backup copies of the data portion;wherein said requesting comprises indicating to the owning transaction that an abort is requested, wherein said indicating comprises setting a flag associated with the owning transaction to indicate a request that the owning transaction abort itself, and wherein setting the flag does not force the owning transaction to abort itself. - View Dependent Claims (18, 19)
-
Specification