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

The Silently Shifting Semicolon  (SNAPL 2015)
       Daniel Marino, Todd Millstein, Madanlal Musuvathi, Satish Narayanasamy, Abhayendra Singh

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.