The Xfork in the Road to Coordinated Sibling Transactions

Hany E. Ramadan, Emmett Witchel · 2009

The architectural shift towards multi-core processors is focusing renewed attention on parallel programming. Transactional memory (TM) is a promising paradigm for making parallel programming easier. Programmers simply define the parallel work, and atomic execution is handled by the TM system. In this paper, we pose the next question: Can programmers find parallel work within their transactions? And, if so, can they exploit this parallelism easily? This paper answers in the affirmative on both counts. This paper presents the notion of coordinated sibling transactions, a more powerful and expressive generalization of the traditional model of parallel closed-nested transactions. Coordinated siblings transactions are accessed via a new API we define, the xfork primitive, which is designed to make parallel closed-nested transaction a general commodity. This API allows programmers to specify the forms of coordination among the siblings, while not worrying about how these semantics are implemented by the runtime. Programmers can thus structure concurrent work in ways which would be extremely burdensome, if not impossible, to achieve on existing systems. This paper also presents the design and implementation of sibling STM (SSTM), the first STM to implement these features. SSTM is built on the .NET Common Language Runtime (CLR) [17], so we discuss how this runtime’s features (transaction and threading libraries) can be leveraged to produce a parallel nested STM system. The evaluation of our prototype demonstrates that programmers, using xfork to express intra-transaction parallelism, can improve transaction performance.

Read the paper · More papers on PaperTik