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
OG exemplary drawing
 
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.