Taming Release-Acquire Consistency


This paper introduces a strengthening of the release-acquire fragment of the C11 memory model that

  1. forbids dubious behaviors of programs such as 2+2W that are not observed in any implementation;
  2. supports fence instructions that restore sequential consistency; and
  3. admits an equivalent intuitive operational semantics based on point-to-point communication.

This strengthening has no additional implementation cost: it allows the same local optimizations as C11 release and acquire accesses, and has exactly the same compilation schemes to the x86-TSO and Power architectures. In fact, the compilation to Power is complete with respect to a recent axiomatic model of Power; that is, the compiled program exhibits exactly the same behaviors as the source one. Moreover, we provide criteria for placing enough fence instructions to ensure sequential consistency, and apply them to an efficient RCU implementation.



Coq formalisation

Some of the proofs in the paper have been formalized in Coq (latest version 1.1, released 2016-12-20).

MD5 hashes for all the downloads can be found here.

Related projects

Valid XHTML 1.0 Transitional