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 --> Facebook)
Daniel Marino (UCLA --> Symantec Research Labs)
Abhayendra Singh (Michigan --> Google)
Todd Millstein (UCLA)
Madanlal Musuvathi (Microsoft Research)
Satish Narayanasamy (Michigan)

Publications

Safe-by-default Concurrency for Modern Programming Langauges  (TOPLAS 2021)
       Lun Liu, Todd Millstein, Madanlal Musuvathi

Accelerating Sequential Consistency for Java with Speculative Compilation  (PLDI 2019)
       Lun Liu, Todd Millstein, Madanlal Musuvathi

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, as described in the TOPLAS 2021 paper (and earlier OOPSLA 2017 and PLDI 2019 papers), is available for both x86 and ARM hardware.

Our volatile-by-default modification to the Julia compiler, as described in the TOPLAS 2021 paper, is available here.

Click here to download our SC-preserving version of the LLVM compiler, which is described in the PLDI 2011 paper above.