ABSTRACT
This paper presents a software transactional memory system that introduces first-class C++ language constructs for transactional programming. We describe new C++ language extensions, a production-quality optimizing C++ compiler that translates and optimizes these extensions, and a high-performance STM runtime library. The transactional language constructs support C++ language features including classes, inheritance, virtual functions, exception handling, and templates. The compiler automatically instruments the program for transactional execution and optimizes TM overheads. The runtime library implements multiple execution modes and implements a novel STM algorithm that supports both optimistic and pessimistic concurrency control. The runtime switches a transaction's execution mode dynamically to improve performance and to handle calls to precompiled functions and I/O libraries. We present experimental results on 8 cores (two quad-core CPUs) running a set of 20 non-trivial parallel programs. Our measurements show that our system scales well as the numbers of cores increases and that our compiler and runtime optimizations improve scalability.
- M. Abadi, A. Birrell, T. Harris, and M. Isard. Semantics of transactional memory and automatic mutual exclusion. In POPL 2008. Google Scholar
Digital Library
- A.-R. Adl-Tabatabai, B. T. Lewis, V. S. Menon, B. R. Murphy, B. Saha, and T. Shpeisman. Compiler and runtime support for efficient software transactional memory. In PLDI 2006. Google Scholar
Digital Library
- W. Baek, C. C. Minh, M. Trautmann, C. Kozyrakis, and K. Olukotun. The OpenTM transactional application programming interface. In PACT 2007. Google Scholar
Digital Library
- C. Bienia, S. Kumar, J. Singh, and K. Li. The parsec benchmark suite: Characterization and architectural implications. Technical Report 811-08, Princeton University, 2008.Google Scholar
Digital Library
- C. Blundell, E. C. Lewis, and M. Martin. Subtleties of transactional memory atomicity semantics. Computer Architecture Letters, 5(2), Nov. 2006. Google Scholar
Digital Library
- C. Blundell, E. C. Lewis, and M. Martin. Unrestricted transactional memory: Supporting I/O and system calls within transactions. Technical Report CIS-06-09, University of Pennsylvania, Department of Comp. and Info. Science, 2006.Google Scholar
- J. Bobba, K. E. Moore, L. Yen, H. Volos, M. D. Hill, M. M. Swift, and D. A.Wood. Performance pathologies in hardware transactional memory. In ISCA 2007. Google Scholar
Digital Library
- H. J. Boehm and S. Adve. Foundations of the C++ concurrency memory model. In PLDI 2008. Google Scholar
Digital Library
- C. Cao Minh, M. Trautmann, J. Chung, A. McDonald, N. Bronson, J. Casper, C. Kozyrakis, and K. Olukotun. An effective hybrid transactional memory system with strong isolation guarantees. In ISCA 2007. Google Scholar
Digital Library
- L. Crowl, Y. Lev, V. Luchangco, M. Moir, and D. Nussbaum. Integrating transactional memory into C++. In TRANSACT 2007.Google Scholar
- L. Dalessandro, V. J. Marathe, M. F. Spear, and M. L. Scott. Capabilities and limitations of library-based software transactional memory in C++. In TRANSACT 2007.Google Scholar
- P. Damron, A. Fedorova, Y. Lev, V. Luchangco, M. Moir, and D. Nussbaum. Hybrid transactional memory. In ASPLOS 2006. Google Scholar
Digital Library
- D. Dice, O. Shalev, and N. Shavit. Transactional locking II. In DISC 2006. Google Scholar
Digital Library
- R. Ennals. Software transactional memory should not be obstruction-free. http://www.cambridge.intel-research.net/rennals/notlockfree.pdf, 2005.Google Scholar
- P. Felber, C. Fetzer, U. Müller, T. Riegel, M. Süβkraut, and H. Sturzrehm. Transactifying applications using an open compiler framework. In TRANSACT 2007.Google Scholar
- J. Gottschlich and D. A. Connors. DracoSTM: A practical C++ approach to software transactional memory. In LCSD 2007. Google Scholar
Digital Library
- J. Gray and A. Reuter. Transaction Processing: Concepts and Techniques. Morgan Kaufmann, 1993. Google Scholar
Digital Library
- D. Grossman, J. Manson, and W. Pugh. What do high-level memory models mean for transactions? In MSPC 2006. Google Scholar
Digital Library
- R. Guerraoui, M. Herlihy, M. Kapalka, and B. Pochon. Robust contention management in software transactional memory. In SCOOL 2005.Google Scholar
- T. Harris and K. Fraser. Language support for lightweight transactions. In OOPSLA 2003. Google Scholar
Digital Library
- T. Harris, S. Marlow, S. P. Jones, and M. Herlihy. Composable memory transactions. In PPoPP 2005. Google Scholar
Digital Library
- T. Harris, M. Plesko, A. Shinnar, and D. Tarditi. Optimizing memory transactions. In PLDI 2006. Google Scholar
Digital Library
- M. Herlihy and E. Koskinen. Transactional boosting: a methodology for highly-concurrent transactional objects. In PPoPP 2008. Google Scholar
Digital Library
- M. Herlihy, V. Luchangco, M. Moir, and I. William N. Scherer. Software transactional memory for dynamicsized data structures. In PODC 2003. Google Scholar
Digital Library
- M. Herlihy, V. Luchangco, and M. Moir. A flexible framework for implementing software transactional memory. In OOPSLA 2006. Google Scholar
Digital Library
- B. Hindman and D. Grossman. Atomicity via source-to source translation. In MSPC 2006. Google Scholar
Digital Library
- R. L. Hudson, B. Saha, A.-R. Adl-Tabatabai, and B. C. Hertzberg. McRT-Malloc: A scalable transactional memory allocator. In ISMM 2006. Google Scholar
Digital Library
- IBM. IBM C/C++ for Transactional Memory, for AIX, V0.9, Language Extensions and User's Guide. http://dl.alphaworks.ibm.com/technologies/xlcstm/xlcstmwhitepaper.pdf.Google Scholar
- Y. Lev, M. Moir, and D. Nussbaum. PhTM: Phased transactional memory. In TRANSACT 2007.Google Scholar
- J. Manson, W. Pugh, and S. V. Adve. The Java memory model. In POPL 2005. Google Scholar
Digital Library
- V. J. Marathe, M. F. Spear, C. Heriot, A. Acharya, D. Eisenstat, I. William N. Scherer, and M. L. Scott. Lowering the overhead of software transactional memory. In TRANSACT 2006.Google Scholar
- P. McGachey, A.-R. Adl-Tabatabai, R. L. Hudson, V. Menon, B. Saha, and T. Shpeisman. Concurrent GC leveraging transactional memory. In PPoPP 2008. Google Scholar
Digital Library
- V. Menon, S. Balensiefer, T. Shpeisman, A.-R. Adl-Tabatabai, R. L. Hudson, B. Saha, and A.Welc. Practical weak-atomicity semantics for Java STM. In SPAA 2008. Google Scholar
Digital Library
- V. Menon, S. Balensiefer, T. Shpeisman, A.-R. Adl-Tabatabai, R. L. Hudson, B. Saha, and A. Welc. Single global lock semantics in a weakly atomic STM. In TRANSACT 2008.Google Scholar
- M. Milovanović, R. Ferrer, V. Gajinov, O. S. Unsal, A. Cristal, E. Ayguadé, and M. Valero. Multithreaded software transactional memory and OpenMP. In MEDEA 2007. Google Scholar
Digital Library
- K. F. Moore and D. Grossman. High-level small-step operational semantics for transactions. In POPL 2008. Google Scholar
Digital Library
- J. E. B. Moss and A. L. Hosking. Nested transactional memory: model and preliminary architecture sketches. In SCOOL 2005.Google Scholar
- Y. Ni, V. Menon, A.-R. Adl-Tabatabai, A. L. Hosking, R. L. Hudson, J. E. B. Moss, B. Saha, and T. Shpeisman. Open nesting in software transactional memory. In PPoPP 2007. Google Scholar
Digital Library
- M. F. Ringenburg and D. Grossman. AtomCaml: first-class atomicity via rollback. In ICFP 2005. Google Scholar
Digital Library
- B. Saha, A.-R. Adl-Tabatabai, R. Hudson, C. C. Minh, and B. Hertzberg. McRT-STM: A high performance software transactional memory system for a multi-core runtime. In PPoPP 2006. Google Scholar
Digital Library
- B. Saha, A.-R. Adl-Tabatabai, and Q. Jacobson. Architectural support for software transactional memory. In MICRO 2006. Google Scholar
Digital Library
- T. Shpeisman, V. Menon, A.-R. Adl-Tabatabai, S. Balensiefer, D. Grossman, R. L. Hudson, K. F. Moore, and S. Bratin. Enforcing isolation and ordering in STM. In PLDI 2007. Google Scholar
Digital Library
- A. Shriraman, V. J. Marathe, S. Dwarkadas, M. L. Scott, D. Eisenstata, C. Heriot, I. William N. Scherer, and M. F. Spear. Hardware acceleration of software transactional memory. In TRANSACT 2006.Google Scholar
- M. Spear, M. Michael, and M. Scott. Inevitability mechanisms for software transactional memory. In TRANSACT 2008.Google Scholar
- M. F. Spear, V. J. Marathe, L. Dalessandro, and M. L. Scott. Privatization techniques for software transactional memory. Technical Report 915, University of Rochester, Computer Science Dept., 2007.Google Scholar
Digital Library
- C. Wang, W.-Y. Chen, Y. Wu, B. Saha, and A.-R. Adl-Tabatabai. Code generation and optimization for transactional memory constructs in an unmanaged language. In CGO 2007. Google Scholar
Digital Library
- A. Welc, A. L. Hosking, and S. Jagannathan. Transparently reconciling transactions with locking for Java synchronization. In ECOOP 2006. Google Scholar
Digital Library
- A. Welc, B. Saha, and A.-R. Adl-Tabatabai. Irrevocable transactions and their applications. In SPAA 2008. Google Scholar
Digital Library
- I. William N. Scherer and M. L. Scott. Advanced contention management for dynamic software transactional memory. In PODC 2003. Google Scholar
Digital Library
- I. William N. Scherer and M. L. Scott. Contention management in dynamic software transactional memory. In CSJP 2004.Google Scholar
- S. C.Woo, M. Ohara, E. Torrie, J. P. Singh, and A. Gupta. The SPLASH-2 programs: Characterization and methodological considerations. In ISCA 1995. Google Scholar
Digital Library
Index Terms
Design and implementation of transactional constructs for C/C++
Recommendations
Design and implementation of transactional constructs for C/C++
This paper presents a software transactional memory system that introduces first-class C++ language constructs for transactional programming. We describe new C++ language extensions, a production-quality optimizing C++ compiler that translates and ...
Open nesting in software transactional memory
PPoPP '07: Proceedings of the 12th ACM SIGPLAN symposium on Principles and practice of parallel programmingTransactional memory (TM) promises to simplify concurrent programming while providing scalability competitive to fine-grained locking. Language-based constructs allow programmers to denote atomic regions declaratively and to rely on the underlying ...
Language constructs for transactional memory
POPL '09Building concurrent shared-memory data structures is a notoriously difficult problem, and so the widespread move to multi-core and multi-processor hardware has led to increasing interest in language constructs that may make concurrent programming ...







Comments