Review of Nesting in Transactional Memory

In face of the multicore paradigm that is now standard in most machines, we are left with the challenge of how to take advantage of all the potential parallelism: Programming applications that explore concurrency is far from trivial. It is in this context that the Transactional Memory (TM) abstraction promises to simplify this task. So far, each part of an application identified as atomic is typically a sequential set of instructions. However, these may account for a large part of the program which is thus running sequentially and may represent bottlenecks in the system. These atomic blocks could be executed faster if they contained latent parallelism that could be used efficiently. In the context of Transactional Memories, however, there has been little work to allow a transaction to be split in several parts, all executed concurrently. Such behavior may be attained through parallel nested transactions. Besides providing a more flexible TM, using parallel nested transactions may actually yield better performance in applications resorting to TM for synchronizing access to shared data. In this work we describe how we may still reduce the time to execute a highly-contending write dominated workload despite the inherent conflicts that arise in it. We expect to provide an adaptation of a lock-free and multi-version STM, the JVSTM, to use a parallel nesting model that allows the aforementioned flexibility.

[1]  Michel Raynal,et al.  A Lock-Based STM Protocol That Satisfies Opacity and Progressiveness , 2008, OPODIS.

[2]  Bratin Saha,et al.  Open nesting in software transactional memory , 2007, PPOPP.

[3]  Kunal Agrawal,et al.  Safe open-nested transactions through ownership , 2009, PPoPP '09.

[4]  Michael F. Spear,et al.  NOrec: streamlining STM by abolishing ownership records , 2010, PPoPP '10.

[5]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[6]  Herb Sutter,et al.  The Free Lunch Is Over A Fundamental Turn Toward Concurrency in Software , 2013 .

[7]  Brian T. Lewis,et al.  Compiler and runtime support for efficient software transactional memory , 2006, PLDI '06.

[8]  Maurice Herlihy,et al.  Obstruction-free synchronization: double-ended queues as an example , 2003, 23rd International Conference on Distributed Computing Systems, 2003. Proceedings..

[9]  Tauno Kekäle,et al.  Beautiful Code. Leading Programmers Explain How They Think , 2009 .

[10]  Bradley C. Kuszmaul,et al.  Cilk: an efficient multithreaded runtime system , 1995, PPOPP '95.

[11]  Adam Welc,et al.  NePaLTM: Design and Implementation of Nested Parallelism for Transactional Memory Systems , 2009, ECOOP.

[12]  K. Vidyasankar,et al.  HParSTM: A Hierarchy-based STM Protocol for Supporting Nested Parallelism , 2011 .

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

[14]  David Eisenstat,et al.  Lowering the Overhead of Software Transactional Memory , 2006 .

[15]  Torvald Riegel,et al.  Dynamic performance tuning of word-based software transactional memory , 2008, PPoPP.

[16]  Maurice Herlihy,et al.  The art of multiprocessor programming , 2020, PODC '06.

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

[18]  Emmett Witchel,et al.  The Xfork in the Road to Coordinated Sibling Transactions , 2009 .

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

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

[21]  Antony L. Hosking,et al.  Nested transactional memory: Model and architecture sketches , 2006, Sci. Comput. Program..

[22]  Hagit Attiya,et al.  Inherent limitations on disjoint-access parallel implementations of transactional memory , 2009, SPAA '09.

[23]  Rachid Guerraoui,et al.  Why STM can be more than a research toy , 2011, Commun. ACM.

[24]  Jeremy T. Fineman,et al.  Nested parallelism in transactional memory , 2008, PPoPP.

[25]  Michael F. Spear,et al.  Conflict Detection and Validation Strategies for Software Transactional Memory , 2006, DISC.

[26]  Bratin Saha,et al.  McRT-STM: a high performance software transactional memory system for a multi-core runtime , 2006, PPoPP '06.

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

[28]  Robert D. Blumofe,et al.  Scheduling multithreaded computations by work stealing , 1994, Proceedings 35th Annual Symposium on Foundations of Computer Science.

[29]  Simon L. Peyton Jones,et al.  Composable memory transactions , 2005, CACM.

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

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

[32]  Virendra J. Marathe,et al.  Adaptive Software Transactional Memory , 2005, DISC.

[33]  J. Eliot B. Moss Open Nested Transactions: Semantics and Support , 2006 .

[34]  Victor Luchangco,et al.  Transaction communicators: enabling cooperation among concurrent transactions , 2011, PPoPP '11.

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

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

[37]  Emmett Witchel,et al.  Is transactional programming actually easier? , 2010, PPoPP '10.

[38]  Kunle Olukotun,et al.  The Future of Microprocessors , 2005, ACM Queue.

[39]  Kunle Olukotun,et al.  The Atomos transactional programming language , 2006, PLDI '06.

[40]  Rachid Guerraoui,et al.  Stretching transactional memory , 2009, PLDI '09.

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

[42]  Tim Harris,et al.  Abstract Nested Transactions , 2007 .

[43]  Martín Abadi,et al.  Transactional memory with strong atomicity using off-the-shelf memory protection hardware , 2009, PPoPP '09.

[44]  Hagit Attiya,et al.  Single-Version STMs Can Be Multi-version Permissive (Extended Abstract) , 2011, ICDCN.

[45]  David A. Wood,et al.  Supporting nested transactional memory in logTM , 2006, ASPLOS XII.

[46]  Rachid Guerraoui,et al.  Leveraging parallel nesting in transactional memory , 2010, PPoPP '10.

[47]  Victor Pankratius,et al.  A study of transactional memory vs. locks in practice , 2011, SPAA '11.

[48]  Maged M. Michael,et al.  Software Transactional Memory: Why Is It Only a Research Toy? , 2008, ACM Queue.

[49]  Daniel A. Connors,et al.  DracoSTM: a practical C++ approach to software transactional memory , 2007, LCSD '07.

[50]  David A. Wood,et al.  LogTM: log-based transactional memory , 2006, The Twelfth International Symposium on High-Performance Computer Architecture, 2006..

[51]  Rachid Guerraoui,et al.  The semantics of progress in lock-based transactional memory , 2009, POPL '09.

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

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

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