Bridging the Gap Between Programming Languages and Hardware Weak Memory Models

07/20/2018
by   Anton Podkopaev, et al.
0

We develop a new intermediate weak memory model, IMM, as a way of modularizing the proofs of correctness of compilation from concurrent programming languages with weak memory consistency semantics to mainstream multi-core architectures, such as POWER and ARM. We use IMM to prove the correctness of compilation from the promising semantics of Kang et al. to POWER (thereby correcting and improving their result) and ARMv7, as well as to the recently revised ARMv8 model. Our results are mechanized in Coq, and to the best of our knowledge, these are the first machine-verified compilation correctness results for models that are weaker than x86-TSO.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
10/13/2017

The Semantics of Transactions and Weak Memory in x86, Power, ARM, and C++

Weak memory models provide a complex, system-centric semantics for concu...
research
11/30/2021

Verifying and Optimizing Compact NUMA-Aware Locks on Weak Memory Models

Developing concurrent software is challenging, especially if it has to r...
research
10/13/2017

The Semantics of Transactions and Weak Memory in x86, Power, ARMv8, and C++

Weak memory models trade programmability for performance, while transact...
research
11/15/2019

Reconciling Event Structures with Modern Multiprocessors

Weakestmo is a recently proposed memory consistency model that uses even...
research
10/23/2018

Correctness of Concurrent Objects under Weak Memory Models

In this paper we develop a theory for correctness of concurrent objects ...
research
07/01/2019

On consistency types for lattice-based distributed programming languages

Distributed systems address an increasing demand for fast access to reso...
research
08/07/2017

On the Learnability of Programming Language Semantics

Game semantics is a powerful method of semantic analysis for programming...

Please sign up or login with your details

Forgot password? Click here to reset