…and region serializability for all JESSICA OUYANG, PETER CHEN, JASON FLINN & SATISH NARAYANASAMY UNIVERSITY OF MICHIGAN
Language-level guarantees for programs with races 2 Fewer possible program behaviors More potential optimizations No guarantee s DRF0 Global, serial order of all instructions SC Global, serial order of regions RS
JESSICA OUYANG 3 a = 0 b = 0 lock(A) a = 1 unlock(A) lock(B)... lock(A) a = a + 1 b = a unlock(A)... unlock(B)
JESSICA OUYANG 4 a = 0 b = 0 lock(A) a = 1 unlock(A) lock(B)... lock(A) a = a + 1 b = a unlock(A)... unlock(B)
JESSICA OUYANG 5 a = 0 b = 0 lock(A) a = 1 unlock(A) lock(B)... lock(A) a = a + 1 b = a unlock(A)... unlock(B)
JESSICA OUYANG 6 a = 0 b = 0 lock(A) a = 1 unlock(A) lock(B)... lock(A) a = a + 1 b = a unlock(A)... unlock(B)
JESSICA OUYANG 7 a = 0 b = 0 lock(A) a = 1 unlock(A) lock(B)... lock(A) a = a + 1 b = a unlock(A)... unlock(B)
JESSICA OUYANG 8 a = 0 b = 0 lock(A) a = 1 unlock(A) lock(B)... a = a + 1 b = a... unlock(B)
JESSICA OUYANG 9 a = 0 b = 0 lock(A) a = 1 unlock(A) lock(B)... a = a + 1 b = a... unlock(B)
JESSICA OUYANG 10 a = 0 b = 0 lock(A) a = 1 unlock(A) lock(B)... a = a + 1 b = a... unlock(B)
JESSICA OUYANG 11 CPU 1CPU 2 time lock(A) a = 1 unlock(A) lock(B)... a = a + 1 b = a... unlock(B)
JESSICA OUYANG 12 CPU 1CPU 2 time lock(A) a = 1 unlock(A) lock(B)... a = a + 1 b = a... unlock(B)
JESSICA OUYANG 13 CPU 1CPU 2 time lock(A) a = 1 unlock(A) lock(B)... a = a + 1 b = a... unlock(B)
JESSICA OUYANG 14 CPU 1CPU 2 time lock(A) a = 1 unlock(A) lock(B)... a =NaN b =yourPassword... unlock(B)
JESSICA OUYANG 15
JESSICA OUYANG 16 DRF0
JESSICA OUYANG 17 DRF0
JESSICA OUYANG 18 DRF0
JESSICA OUYANG 19 a = 0 b = 0 lock(A) a = 1 unlock(A) lock(B)... a = a + 1 b = a... unlock(B)
JESSICA OUYANG 20 a = 0 b = 0 lock(A) a = 1 unlock(A) lock(B)... a = a + 1 b = a... unlock(B)
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
JESSICA OUYANG 23 time lock(A) a = 1 unlock(A) lock(B)... a = a + 1 b = a... unlock(B) CPU 3CPU 2CPU 4CPU 1 a:1 lock(A) a = 1 unlock(A) lock(B)... a = a + 1 b = a... unlock(B)
JESSICA OUYANG 24 time CPU 3CPU 2CPU 4CPU 1 E0
JESSICA OUYANG 25 time CPU 3CPU 2CPU 4CPU 1 Epoch- parallel execution Thread-parallel execution
E1 E3 E2 E0 == ? 2. Start epoch 1. Checkpoint state E1 E0 E2 E3 != 3. Check state 4. Roll back & Re-execute time JESSICA OUYANG 26 Uniparallel execution [Veeraraghavan ’11]
JESSICA OUYANG 27
JESSICA OUYANG 28
Conclusion Strong guarantees for all programs ◦ Region serializability One way of providing region serializability ◦ Uniparallelism JESSICA OUYANG 29