In computing, a memory model describes the interactions of threads through memory and their shared use of the data.
Sequential Consistency (SC) Model [Lamport 1979]

- No muticore processor implements SC
- Compiler optimizations invalidate SC
Weak/Relaxed Memory Models
Every hardware architecture has its own WMM
- x86-TSO memory model
- ARMv8 memory model


More than just reorderings [FM'16]

SC model prohibits many optimizations

WMM for High-Level Languages

Design Criteria
Usability: DRF guarantee
- DRF programs have the same behaviors as in SC model
Not too strong:
- Allow common optimization techniques
- Allow standard compilation schemes to major modern architectures
- In some sense hijacked by the mainstream compiler
Preserve type-safety and security guarantee
- Cannot be too weak
Very challenging to satisfy all the requirements!
Data-Race-Freedom (DRF)

A data race occurs when we have two concurrent conflicting operations
- Conflicting: the two operations both access the same memory location and at least one is a write
- Concurrent ?
- Differs across memory models
- Java: the two operations are not ordered by “happens-before”
DRF Guarantee
DRF programs have the same behaviors as in SC model
For DRF programs, the programmer does not need to worry that reorderings will affect her code.
Compiler Optimization Can Be Smart

Efforts for Java Memory Model (JMM)
- First edition in Java Language Spec
- Fatally flawed, not support key optimizations [Pough 2000]
- Current JMM [Manson et al. 2005]
- Based on 5-year discussion and many failed proposals
- “very complex” [Adve & Boehm 2010]
- Surprising behaviors and bugs [Aspinall & Sevcik 2007]
- Next generation: JEP 188, Dec. 2013
Happens-Before Order [Lamport 1978]
Program execution: a set of events, and some orders between them.

Happens-Before Memory Model (HMM)
Read can see:
- the most recent write that happens-before it, or
- a write that has no happens-before relation.
r could see both w1 (which happens-before it) and w2 (with which there is no happens-before relation)
HMM – Relaxed Ordering

HMM – Examples with Global Analysis

HMM – Out-of-Thin-Air Read



TODO:这几个例子看不明白
JMM
Take HMM as the core, and try hard to distinguish good speculation from bad speculation!
Introduce 9 axioms to constrain causality.
Very complex, with surprising results and bugs.
JMM – Surprising Results


More Examples
Load buffering (LB)

Independent reads of independent writes (IRIW)

Out-of-thin-air read


HMM does not have DRF-guarantee


Summary
- Why need weak memory models
- Design criteria of weak memory models
- The happens-before memory model
- Out-of-thin-air read