Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory...
Transcript of Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory...
![Page 1: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/1.jpg)
Introduction to weakmemory consistency
Ori Lahav Viktor Vafeiadis
28 August 2017
![Page 2: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/2.jpg)
Weak memory consistencyis about the
semantics of concurrent programstaking into account the effects of:
I multicore hardware implementationsI and compiler optimizations.
![Page 3: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/3.jpg)
CPU trends: Parallelism is here!
3
![Page 4: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/4.jpg)
Concurrent programming is hard!
If you can get away with it, avoid using threads.Threads can be difficult to use, and they makeprograms harder to debug.
(Java documentation, ≈ 15 years ago)“Difficult to use”
I Requires a fundamentally different way of thinking.I Interference among threads.
“Harder to debug”I Huge non-determinism ; testing is ineffective.
X := X + 1 X := X + 1 might increment X only once.
Thread 1:Thread 2:
Read X=0 Write X=1Read X=0 Write X=1
4
![Page 5: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/5.jpg)
The illusion of sequential consistency
Sequential consistency (SC)I The standard simplistic concurrency model.I Threads access shared memory in an interleaved fashion.
cpu 1writeread
cpu n. . .
Memory
But. . .I No multicore processor implements SC.I Compiler optimizations invalidate SC.
5
![Page 6: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/6.jpg)
The illusion of sequential consistency
Sequential consistency (SC)I The standard simplistic concurrency model.I Threads access shared memory in an interleaved fashion.
cpu 1writeread
cpu n. . .
Memory
But. . .I No multicore processor implements SC.I Compiler optimizations invalidate SC.
5
![Page 7: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/7.jpg)
Weak consistency
Hardware provides weak consistency.I Weak memory models ; semantics of shared memory.I Every hardware architecture has its own WMM:
x86-TSO, ARM, Power, Itanium.
x86-TSO model (2010)
CPUwrite
write-back
read
CPU
. . .
. . .
Memory
ARMv8 model (2016)
Memory
6
![Page 8: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/8.jpg)
Weak consistency examples
Store buffering (SB)Initially, x = y = 0
x := 1;a := y //0
y := 1;b := x //0
x86-TSOCPU
write
write-back
read
CPU
. . .
. . .
Memory
Load buffering (LB)Initially, x = y = 0
a := y ; //1x := 1
b := x ; //1y := 1
ARMv8
Memory
7
![Page 9: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/9.jpg)
There is more to WMC than just reorderings [FM’16]
Independent reads of independent writes (IRIW)Initially, x = y = 0
x := 1a := x ; //1lwsync;b := y //0
c := y ; //1lwsync;d := x //0
y := 1
I Thread II and III can observethe x := 1 and y := 1 writeshappen in different orders.
I Because of the lwsync fences,no reorderings are possible!
Power
8
![Page 10: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/10.jpg)
WMC is not just about hardware
Power ARMx86
C/C++/Java/. . .
9
![Page 11: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/11.jpg)
Quiz. Should these transformations be allowed?
1. CSE over acquiring a lock:
a = x ;lock();b = x ;
;a = x ;lock();b = a;
2. Load hoisting:
if (c)a = x ; ;
t = x ;a = c ? t : a;
[x is a global variable; a, b, c are local; t is a fresh temporary.]
10
![Page 12: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/12.jpg)
Allowing both is clearly wrong! [CGO’16,CGO’17]
Consider the transformation sequence:
if (c)a = x ;
lock();b = x ;
hoist;
t = x ;a = c ? t : a;lock();b = x ;
CSE;
t = x ;a = c ? t : a;lock();b = t;
When c is false, x is moved out of the critical region!
So we have to forbid one transfomation.I C11 forbids load hoisting, allows CSE over lock().I LLVM allows load hoisting, forbids CSE over lock().
11
![Page 13: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/13.jpg)
Weak consistency in “real life”
I Messages may be delayed.
MsgX := 1;a := MsgY ; //0
MsgY := 1;b := MsgX ; //0
I Messages may be sent/received out of order.
Email := 1;Sms := 1;
a := Sms; //1b := Email ; //0
12
![Page 14: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/14.jpg)
Embracing weak consistency
Weak consistency is not a threat, but an opportunity.I Can lead to more scalable concurrent algorithms.I Several open research problems.
I What is a good memory model?
Reasoning under WMC is often easier than under SC.I Avoid thinking about thread interleavings.I Many/most concurrent algorithms do not need SC!I Positive vs negative knowledge.
13
![Page 15: Introduction to weak memory consistencyviktor/wmc/intro.pdf · 2017-09-01 · Weak memory consistency isaboutthe semantics of concurrent programs takingintoaccounttheeffectsof: I](https://reader030.fdocuments.net/reader030/viewer/2022040303/5e8631036ce8d03e902685a2/html5/thumbnails/15.jpg)
Syllabus
Memory model definitionsI Operational memory modelsI Axiomatic/declarative memory modelsI Promising semantics
WMM metatheoryI Relating memory modelsI Correctness of compilation and program transformationsI Programming guarantees: the DRF theorem
Verification techniques for WMMI Program logics (relaxed separation logic, OGRA)I Model checking
14