Optimizing memory transactions

Tim Harris, Mark Plesko, Avraham Shinnar, and David Tarditi.

Abstract
Atomic blocks allow programmers to delimit sections of code as`atomic', leaving the language's implementation to enforce atomicity. Existing work has shown how to implement atomic blocks overword-based transactional memory that provides scalable multiprocessor performance without requiring changes to the basic structure of objects in the heap. However, these implementations perform poorly because they interpose on all accesses to shared memory in the atomic block, redirecting updates to a thread-private log which must be searched by reads in the block and later reconciled with the heap when leaving the block.
This paper takes a four-pronged approach to improving performance:
  1. we introduce a new `direct access' implementation that avoids searching thread-private logs.
  2. we develop compiler optimizations to reduce the amount of logging (e.g. when a thread accesses the same data repeatedly in an atomic block),
  3. we use runtime filtering to detect duplicate log entries that are missed statically, and (
  4. we present a series of GC-time techniques to compact the logs generated by long-running atomic blocks.
Our implementation supports short-running scalable concurrent benchmarks with less than 50% overhead over a non-thread-safe baseline. We support long atomic blocks containing millions of shared memory accesses with a 2.5-4.5x slowdown.
Full Paper
The full paper is available as a PDF.
Citation
Bibtex Citation
@InProceedings{harris06,
  author =       {Tim Harris and Mark Plesko and Avraham Shinnar and
                  David Tarditi},
  title =        {Optimizing Memory Transactions},
  booktitle =    {Conference on Programming Language Design and
                  Implementation},
  pages =        {14--25},
  year =         2006,
  series =       {ACM SIGPLAN},
  month =        {June}
}
ACM Link
The ACM page has more information and more citation formats.

Random Info

I did this work while I was a Summer Intern at Microsoft Research (Redmond) during the Summer of 2005. I was working with David Tarditi and the Advanced Compiler Technology group. Some of the implementation was based on earlier work (done during the Summer of 2004), available as a tech report: Integrating support for undo with exception handling