Hardware transactional memory with software-defined conflicts

In this paper we investigate the benefits of turning the concept of transactional conflict from its traditionally fixed definition into a variable one that can be dynamically controlled in software. We propose the extension of the atomic language construct with an attribute that specifies the definition of conflict, so that programmers can write code which adjusts what kinds of conflicts are to be detected, relaxing or tightening the conditions according to the forms of interference that can be tolerated by a particular algorithm. Using this performance-motivated construct, specific conflict information can be associated with portions of code, as each transaction is provided with a local definition that applies while it executes. We find that defining conflicts in software makes possible the removal of dependencies which arise as a result of the coarse synchronization style encouraged by the TM programming model. We illustrate the use of the proposed construct in a variety of use cases with real applications, showing how programmers can take advantage of their knowledge about the problem and other global information not available at run-time. We describe how to implement a hardware TM design that utilizes this software construct. Our experiments reveal that leveraging software-defined conflicts, the programmer is able to achieve significant reductions in the number of aborts--over 50% for most applications. At 16 threads, our system with software-defined conflicts outperforms LogTM-SE in nearly all benchmarks, reaching an average reduction in execution time of 18%.

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

[2]  David A. Wood,et al.  A Case for Deconstructing Hardware Transactional Memory Systems , 2007, Programming Models for Ubiquitous Parallelism.

[3]  Kunle Olukotun,et al.  Transactional memory coherence and consistency , 2004, Proceedings. 31st Annual International Symposium on Computer Architecture, 2004..

[4]  Bradley C. Kuszmaul,et al.  Unbounded transactional memory , 2005, 11th International Symposium on High-Performance Computer Architecture.

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

[6]  Mateo Valero,et al.  Taking the heat off transactions: Dynamic selection of pessimistic concurrency control , 2009, 2009 IEEE International Symposium on Parallel & Distributed Processing.

[7]  Maurice Herlihy,et al.  Transactional boosting: a methodology for highly-concurrent transactional objects , 2008, PPoPP.

[8]  Kunle Olukotun,et al.  Transactional collection classes , 2007, PPOPP.

[9]  Michael M. Swift,et al.  Pathological Interaction of Locks with Transactional Memory , 2008 .

[10]  David A. Wood,et al.  Performance Pathologies in Hardware Transactional Memory , 2007, IEEE Micro.

[11]  M. V. Velzen,et al.  Self-organizing maps , 2007 .

[12]  Mikel Luján,et al.  A Study of a Transactional Parallel Routing Algorithm , 2007, 16th International Conference on Parallel Architecture and Compilation Techniques (PACT 2007).

[13]  Stefanos Kaxiras,et al.  Improving CC-NUMA performance using Instruction-based Prediction , 1999, Proceedings Fifth International Symposium on High-Performance Computer Architecture.

[14]  R. Fisher THE USE OF MULTIPLE MEASUREMENTS IN TAXONOMIC PROBLEMS , 1936 .

[15]  Emmett Witchel,et al.  Dependence-aware transactional memory for increased concurrency , 2008, 2008 41st IEEE/ACM International Symposium on Microarchitecture.

[16]  Milo M. K. Martin,et al.  Multifacet's general execution-driven multiprocessor simulator (GEMS) toolset , 2005, CARN.

[17]  C. Kozyrakis,et al.  Early Release : Friend or Foe ? , 2006 .

[18]  Michael L. Scott,et al.  Flexible Decoupled Transactional Memory Support , 2008, 2008 International Symposium on Computer Architecture.

[19]  Bradley C. Kuszmaul,et al.  Unbounded Transactional Memory , 2005, HPCA.

[20]  David A. Wood,et al.  LogTM-SE: Decoupling Hardware Transactional Memory from Caches , 2007, 2007 IEEE 13th International Symposium on High Performance Computer Architecture.

[21]  Fredrik Larsson,et al.  Simics: A Full System Simulation Platform , 2002, Computer.

[22]  Anoop Gupta,et al.  The SPLASH-2 programs: characterization and methodological considerations , 1995, ISCA.

[23]  Kunle Olukotun,et al.  STAMP: Stanford Transactional Applications for Multi-Processing , 2008, 2008 IEEE International Symposium on Workload Characterization.

[24]  Teuvo Kohonen,et al.  Self-Organizing Maps , 2010 .

[25]  Kunle Olukotun,et al.  Architectural Semantics for Practical Transactional Memory , 2006, 33rd International Symposium on Computer Architecture (ISCA'06).

[26]  Hany E. Ramadan,et al.  Dependence-Aware Transactional Memory , 2007 .

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