…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
© Copyright 2026 Paperzz