November 5, 2010
Francesco Zappa
Multiprocessors provide an abstraction of shared memory, accessible by concurrently executing threads, which supports a wide range of software. However, exactly what this key abstraction is —what the hardware designers implement, and what programmers can depend on— is surprisingly elusive. The sophisticated optimizations implemented by modern multiprocessors have various programmer-visible effects: for some these effects are captured in a well-defined relaxed memory model, making it possible (if challenging) to reason with confidence about the behavior of concurrent programs; for others, however, it has been very unclear what a reasonable model is, despite extensive research over the last three decades. In this talk, I will present relaxed memory models and will reflect on the experience of trying to establish usable models for x86, Power and ARM multiprocessors, and, briefly, for the C++ and Java programming languages.