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)
Abhayendra Singh (Michigan)
Todd Millstein (UCLA)
Madanlal Musuvathi (Microsoft Research)
Satish Narayanasamy (Michigan)
Publications
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.