Title
Optimizing memory transactions
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 over word-based transactional memory that provides scalable multi-processor 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.
Year
DOI
Venue
2006
10.1145/1133255.1133984
Special Interest Group on Programming Languages
Keywords
Field
DocType
atomicity,critical regions,transactional memory
Atomicity,Software transactional memory,Programming language,Shared memory,Computer science,Parallel computing,Double compare-and-swap,Real-time computing,Heap (data structure),Transactional memory,Optimizing compiler,Scalability
Conference
Volume
Issue
ISSN
41
6
0362-1340
ISBN
Citations 
PageRank 
1-59593-320-4
91
7.04
References 
Authors
18
4
Name
Order
Citations
PageRank
Tim Harris15393417.21
Mark Plesko218413.81
Avraham Shinnar330721.77
David Tarditi425825.74