B - EECS @ Michigan - University of Michigan

…and region
serializability for all
JESSICA OUYANG, PETER CHEN, JASON FLINN &
SATISH NARAYANASAMY
U N I V ERSITY OF MI CHI G AN
Language-level guarantees for programs with races
More potential
optimizations
Fewer possible
program behaviors
DRF0
SC
RS
No
guarantees
Global, serial
order of all
instructions
Global, serial
order of
regions
2
a = 0
b = 0
lock(B)
...
lock(A)
lock(A)
a = 1
a = a + 1
unlock(A)
b = a
unlock(A)
...
unlock(B)
JESSICA OUYANG
3
a = 0
b = 0
lock(B)
...
lock(A)
lock(A)
a = 1
a = a + 1
unlock(A)
b = a
unlock(A)
...
unlock(B)
JESSICA OUYANG
4
a = 0
b = 0
lock(B)
...
lock(A)
lock(A)
a = 1
a = a + 1
unlock(A)
b = a
unlock(A)
...
unlock(B)
JESSICA OUYANG
5
a = 0
b = 0
lock(B)
...
lock(A)
lock(A)
a = 1
a = a + 1
unlock(A)
b = a
unlock(A)
...
unlock(B)
JESSICA OUYANG
6
a = 0
b = 0
lock(B)
...
lock(A)
lock(A)
a = 1
a = a + 1
unlock(A)
b = a
unlock(A)
...
unlock(B)
JESSICA OUYANG
7
a = 0
b = 0
lock(B)
...
lock(A)
a = 1
a = a + 1
unlock(A)
b = a
...
unlock(B)
JESSICA OUYANG
8
a = 0
b = 0
lock(B)
...
lock(A)
a = 1
a = a + 1
unlock(A)
b = a
...
unlock(B)
JESSICA OUYANG
9
a = 0
b = 0
lock(B)
...
lock(A)
a = 1
a = a + 1
unlock(A)
b = a
...
unlock(B)
JESSICA OUYANG
10
CPU 1
CPU 2
lock(A)
lock(B)
a = 1
...
unlock(A)
a = a + 1
b = a
...
unlock(B)
time
JESSICA OUYANG
11
CPU 1
CPU 2
lock(A)
lock(B)
a = 1
...
unlock(A)
a = a + 1
b = a
...
unlock(B)
time
JESSICA OUYANG
12
CPU 1
CPU 2
lock(A)
lock(B)
a = 1
...
unlock(A)
a = a + 1
b = a
...
unlock(B)
time
JESSICA OUYANG
13
CPU 1
CPU 2
lock(A)
lock(B)
a = 1
...
unlock(A)
a =NaN
b =yourPassword
...
unlock(B)
time
JESSICA OUYANG
14
JESSICA OUYANG
15
JESSICA OUYANG
16
JESSICA OUYANG
17
JESSICA OUYANG
18
a = 0
b = 0
lock(B)
...
lock(A)
a = 1
a = a + 1
unlock(A)
b = a
...
unlock(B)
JESSICA OUYANG
19
a = 0
b = 0
lock(B)
...
lock(A)
a = 1
a = a + 1
unlock(A)
b = a
...
unlock(B)
JESSICA OUYANG
20
Region serializability for all programs
Guarantees
◦ Atomic synchronization-free regions
◦ Global, serial order of all regions
Benefits
◦ Easy for programmers & tools to reason about
◦ Compilers can reorder freely within regions
JESSICA OUYANG
21
How to provide region serializability
Compiler
◦ Preserve regions from source code
Runtime
◦ Run one thread at a time
◦ Only preempt at synchronization boundaries
JESSICA OUYANG
22
CPU 1
CPU 2
CPU 3
lock(A)
lock(B)
lock(A)
a = 1
...
a = 1
unlock(A)
CPU 4
unlock(A)
a = a + 1
lock(B)
b = a
...
...
a = a + 1
unlock(B)
b = a
a:1
...
time
unlock(B)
JESSICA OUYANG
23
CPU 1
CPU 2
CPU 3
CPU 4
E0
E0
time
JESSICA OUYANG
24
CPU 1
CPU 2
Thread-parallel
execution
CPU 3
CPU 4
Epochparallel
execution
time
JESSICA OUYANG
25
Uniparallel execution [Veeraraghavan ’11]
E0
E0
E1
E2
E1
==?
!=
E3
1. Checkpoint
E2
E3
2. Start epoch
state
Roll back
3.4.Check
state&
Re-execute
time
E3
E3
JESSICA OUYANG
26
JESSICA OUYANG
27
JESSICA OUYANG
28
Conclusion
Strong guarantees for all programs
◦ Region serializability
One way of providing region serializability
◦ Uniparallelism
JESSICA OUYANG
29