Clarifying and compiling C/C++ concurrency: from C++11 to POWER

Mark Batty*, Kayvan Memarian, Scott Owens, Susmit Sarkar, Peter Sewell

*Corresponding author for this work

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

The upcoming C and C++ revised standards add concurrency to the languages, for the first time, in the form of a subtle relaxed memory model (the C++11 model). This aims to permit compiler optimisation and to accommodate the differing relaxed-memory behaviours of mainstream multiprocessors, combining simple semantics for most code with high-performance low-level atomics for concurrency libraries. In this paper, we first establish two simpler but provably equivalent models for C++11, one for the full language and another for the subset without consume operations. Subsetting further to the fragment without low-level atomics, we identify a subtlety arising from atomic initialisation and prove that, under an additional condition, the model is equivalent to sequential consistency for race-free programs. We then prove our main result, the correctness of two proposed compilation schemes for the C++11 load and store concurrency primitives to Power assembly, having noted that an earlier proposal was flawed. (The main ideas apply also to ARM, which has a similar relaxed memory architecture.) This should inform the ongoing development of production compilers for C++11 and C1x, clarifies what properties of the machine architecture are required, and builds confidence in the C++11 and Power semantics.
Original languageEnglish
Title of host publicationProceedings of the 39th annual ACM SIGPLAN-SIGCAT symposium on Principles of programming languages (POPL 12)
Place of PublicationNew York, NY
PublisherACM
Pages509-520
Number of pages12
ISBN (Print)9781450310833
DOIs
Publication statusPublished - 25 Jan 2012
Event39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages - Philadelphia, Panama
Duration: 25 Jan 201227 Jan 2012

Conference

Conference39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Country/TerritoryPanama
CityPhiladelphia
Period25/01/1227/01/12

Keywords

  • Programs
  • Relaxed memory models
  • Semantics

Fingerprint

Dive into the research topics of 'Clarifying and compiling C/C++ concurrency: from C++11 to POWER'. Together they form a unique fingerprint.

Cite this