On maintaining multiple versions in STM

An effective way to reduce the number of aborts in software transactional memory (STM) is to keep multiple versions of transactional objects. In this paper, we study inherent properties of STMs that use multiple versions to guarantee successful commits of all read-only transactions. We first show that these STMs cannot be disjoint-access parallel. We then consider the problem of garbage collecting old object versions, and show that no STM can be optimal in the number of previous versions kept. Moreover, we show that garbage collecting useless versions is impossible in STMs that implement invisible reads. Finally, we present an STM algorithm using visible reads that efficiently garbage collects useless object versions.

[1]  Torvald Riegel,et al.  From causal to z-linearizable transactional memory , 2007, PODC '07.

[2]  Maurice Herlihy,et al.  Software transactional memory for dynamic-sized data structures , 2003, PODC '03.

[3]  Nir Shavit,et al.  Transactional Locking II , 2006, DISC.

[4]  João P. Cachopo,et al.  Versioned boxes as the basis for memory transactions , 2006, Sci. Comput. Program..

[5]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.

[6]  Hagit Attiya,et al.  Inherent Limitations on Disjoint-Access Parallel Implementations of Transactional Memory , 2010, Theory of Computing Systems.

[7]  Idit Keidar,et al.  SMV: Selective Multi-Versioning STM , 2011, DISC.

[8]  P. Strevens Iii , 1985 .

[9]  U. Aydonat Serializability of Transactions in Software Transactional Memory , 2008 .

[10]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[11]  Torvald Riegel,et al.  A Lazy Snapshot Algorithm with Eager Validation , 2006, DISC.

[12]  Rachid Guerraoui,et al.  On obstruction-free transactions , 2008, SPAA '08.

[13]  Mark Moir,et al.  SNZI: scalable NonZero indicators , 2007, PODC '07.

[14]  Rachid Guerraoui,et al.  Permissiveness in Transactional Memories , 2008, DISC.

[15]  Rachid Guerraoui,et al.  On the correctness of transactional memory , 2008, PPoPP.

[16]  Christos H. Papadimitriou,et al.  The serializability of concurrent database updates , 1979, JACM.

[17]  Keir Fraser,et al.  Practical lock-freedom , 2003 .