Simple and Efficient Semantics for Concurrent Programming Languages

A memory consistency model (or simply memory model) forms the foundation of shared-memory multi-threaded programming. It defines the set of possible orders in which memory operations can execute and the possible values a read can return, thereby providing a contract that programmers can assume and that compilers and hardware must obey. While it is desirable to provide programmers with a simple and strong guarantee about the behavior of their programs, doing so can reduce the flexibility of compilers and hardware to perform optimizations and thereby negatively impact performance. As a result, the memory models in mainstream languages are weak and complex, compromising the safety and debuggability of programs. This project seeks to dramatically simplify language-level memory models versus the state of the art (as represented by the Java and C++ memory models) while still allowing most traditional compiler and hardware optimizations.

Project Members

Daniel Marino (UCLA --> Symantec Research Labs)
Abhayendra Singh (Michigan)
Todd Millstein (UCLA)
Madanlal Musuvathi (Microsoft Research)
Satish Narayanasamy (Michigan)

Publications

A Safety-First Approach to Memory Models  (IEEE Micro)
       Abhayendra Singh, Satish Narayanasamy, Daniel Marino, Todd Millstein, Madanlal Musuvathi

End-to-End Sequential Consistency    (ISCA 2012)
        Abhayendra Singh, Satish Narayanasamy, Daniel Marino, Todd Millstein, and Madanlal Musuvathi
        IEEE Micro Top Pick

A Case for an SC-Preserving Compiler    (PLDI 2011)
        Daniel Marino, Abhayendra Singh, Todd Millstein, Madanlal Musuvathi, and Satish Narayanasamy

Efficient Processor Support for DRFx, a Memory Model with Exceptions    (ASPLOS 2011)
        Abhayendra Singh, Daniel Marino, Satish Narayanasamy, Todd Millstein, and Madanlal Musuvathi

DRFx: A Simple and Efficient Memory Model for Concurrent Programming Languages    (PLDI 2010)
        Daniel Marino, Abhayendra Singh, Todd Millstein, Madanlal Musuvathi, and Satish Narayanasamy

Software

Click here to download our SC-preserving version of the LLVM compiler.