A TimeStamp Based Multi-version STM Algorithm

Software Transactional Memory Systems STM are a promising alternative for concurrency control in shared memory systems. Multiversion STM systems maintain multiple versions for each t-object. The advantage of storing multiple versions is that it facilitates successful execution of higher number of read operations than otherwise. Multi-Version permissiveness mv-permissiveness is a progress condition for multi-version STMs that states that a read-only transaction never aborts. Recently a STM system was proposed that maintains only a single version but is mv-permissive. This raises a natural question: how much concurrency can be achieved by multi-version STM. We show that fewer transactions are aborted in multi-version STMs than single-version systems. We also show that any STM system that is permissive w.r.t opacity must maintain at least as many versions as the number of live transactions. A direct implication of this result is that no single-version STM can be permissive w.r.t opacity. In this paper we present a time-stamp based multiversion STM system that satisfies opacity and is easy to implement. We formally prove the correctness of the proposed STM system. Although many multi-version STM systems have been proposed in literature that satisfy opacity, to the best of our knowledge none of them has been formally proved to be opaque. We also present garbage collection procedure which deletes unwanted versions of the transaction objects. We show that with garbage collection the number of versions maintained is bounded by number of live transactions.

[1]  Petr Kuznetsov,et al.  On Non-Interference of Transactions , 2012, arXiv.org.

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

[3]  Hagit Attiya,et al.  A Single-Version STM that Is Multi-Versioned Permissive , 2012, Theory of Computing Systems.

[4]  João P. Cachopo,et al.  Lock-free and scalable multi-version software transactional memory , 2011, PPoPP '11.

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

[6]  Christos H. Papadimitriou,et al.  On concurrency control by multiple versions , 1982 .

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

[8]  Michael L. Scott,et al.  Generic Multiversion STM , 2013, DISC.

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

[10]  Petr Kuznetsov,et al.  On the Cost of Concurrency in Transactional Memory , 2011, OPODIS.

[11]  Rachid Guerraoui,et al.  Principles of Transactional Memory , 2010, Synthesis Lectures on Distributed Computing Theory.

[13]  Idit Keidar,et al.  On maintaining multiple versions in STM , 2010, PODC.

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

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

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

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

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

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

[20]  Sathya Peri,et al.  A TimeStamp based Multi-version STM Protocol that satisfies Opacity and Multi-Version Permissiveness , 2013, ArXiv.

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

[22]  Philip A. Bernstein,et al.  Categories and Subject Descriptors: H.2.4 [Database Management]: Systems. , 2022 .