Simple and Efficient Concurrency Semantics

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. Unfortunately, the memory models of mainstream programming languages have largely been designed from a system-centric point of view that protects, at all costs, compiler and hardware optimizations that were originally designed for sequential programs. As a result, the guarantees to programmers are weak and complex, compromising the safety and debuggability of programs.

This project seeks to provide the guarantees of the memory model known as sequential consistency (SC), which is the simple interleaving semantics of threads, at a reasonable performance cost. We argue that "safe" languages in particular, like Java, must support SC, as it protects fundamental abstractions like program order and atomic memory operations for all programs.

Project Members

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

Publications

A Volatile-by-Default JVM for Server Applications  (OOPSLA 2017)
       Lun Liu, Todd Millstein, Madanlal Musuvathi

DRFx: An Understandable, High Performance, and Flexible Memory Model for Concurrent Languages  (TOPLAS 2016)
       Daniel Marino, Abhayendra Singh, Todd Millstein, Madanlal Musuvathi, Satish Narayanasamy

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

Our volatile-by-default modification to the HotSpot JVM is here.

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