To achieve good multi-core performance, modern microprocessors have weak memory models, rather than enforce sequential consistency. This gives the programmer a wide scope for choosing exactly how to implement various aspects of inter-thread communication through the system’s shared memory. However, these choices come with both semantic and performance consequences, often in tension with each other. In this paper, we focus on the performance side, and define techniques for evaluating the impact of various choices in using weak memory models, such as where to put fences, and which fences to use. We make no attempt to judge certain strategies as best or most efficient, and instead provide the techniques that will allow the programmer to understand the performance implications when identifying and resolving any semantic/performance trade-offs. In particular, our technique supports the reasoned selection of macrobenchmarks to use in investigating trade-offs in using weak memory models. We demonstrate our technique on both synthetic benchmarks and real-world applications for the Linux Kernel and OpenJDK Hotspot Virtual Machine on the ARMv8 and POWERv7 architectures.
Wed 16 MarDisplayed time zone: Belfast change
10:00 - 11:15 | |||
10:00 25mTalk | Benchmarking Weak Memory Models Main conference Link to publication DOI | ||
10:25 25mTalk | The Virtues of Conflict: Analysing Modern Concurrency Main conference Ganesh Narayanswamy Department of Computer Science, University of Oxford, Saurabh Joshi Department of Computer Science and Engineering, IIT Guwahati, Daniel Kroening University of Oxford Link to publication DOI | ||
10:50 25mTalk | Causal Consistency: Beyond Memory Main conference Matthieu Perrin University of Nantes, Achour Mostefaoui University of Nantes, Claude Jard University of Nantes Link to publication DOI |