| US 7,542,977 B2 | ||
| Transactional memory with automatic object versioning | ||
| Richard L. Hudson, Florence, Mass. (US); Ali-Reza Adl-tabatabai, Santa Clara, Calif. (US); and Bratin Saha, San Jose, Calif. (US) | ||
| Assigned to Intel Corporation, Santa Clara, Calif. (US) | ||
| Filed on Jun. 29, 2006, as Appl. No. 11/477,848. | ||
| Prior Publication US 2008/0021934 A1, Jan. 24, 2008 | ||
| Int. Cl. G06F 17/00 (2006.01) | ||
| U.S. Cl. 707—100 [711/6] | 12 Claims |

| 1. A computer-implemented transactional memory (TM) method, implemented on a processor, comprising:
determining a version of an object, the version indicating that the object is one of a definitive version wherein at most
one definitive version exists for the object, a previously definitive version, or a speculative version created by a transaction
writing to the object;
automatically indicating the version of the object using pointers associated with the object, wherein automatically indicating
comprises
indicating the object version is definitive by modifying one of the pointers associated with the object to be a self-referential
pointer that points to the object itself,
indicating the object is a previously definitive version of the object by modifying the object's self-referential pointer
to point to a definitive version of the object, and
indicating the object version is speculative by modifying one of the pointers associated with the object to point to a transaction
descriptor of the transaction that created the speculative object, the transaction descriptor describing at least the transaction
state as active, aborted, or committed wherein any speculative object pointing to a transaction descriptor describing the
state of the transaction as aborted is subject to reclamation by a memory manager;
providing access to the object for a transaction T1 by traversing the pointers associated with the object wherein when the object version is speculative,
determining that the speculative version of the object includes a pointer to one of a transaction descriptor associated with
T1 and a transaction descriptor associated with another transaction T2, and
executing a contention strategy for the speculative version of the object when it includes a pointer to the transaction descriptor
associated with T2, wherein the speculative version of the object is modified to be a definitive version of the object.
|