Mixed-Size Concurrency: ARM, POWER, C/C++11, and SC

被引:20
|
作者
Flur, Shaked [1 ]
Sarkar, Susmit [2 ]
Pulte, Christopher [1 ]
Nienhuis, Kyndylan [1 ]
Maranget, Luc [3 ]
Gray, Kathryn E. [1 ]
Sezgin, Ali [1 ]
Batty, Mark [4 ]
Sewell, Peter [1 ]
机构
[1] Univ Cambridge, Cambridge, England
[2] Univ St Andrews, St Andrews, Fife, Scotland
[3] INRIA, Le Chesnay, France
[4] Univ Kent, Canterbury, Kent, England
基金
英国工程与自然科学研究理事会;
关键词
Relaxed Memory Models; mixed-size; semantics; ISA; SHARED-MEMORY; MODEL;
D O I
10.1145/3093333.3009839
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Previous work on the semantics of relaxed shared-memory concurrency has only considered the case in which each load reads the data of exactly one store. In practice, however, multiprocessors support mixed-size accesses, and these are used by systems software and (to some degree) exposed at the C/C++ language level. A semantic foundation for software, therefore, has to address them. We investigate the mixed-size behaviour of ARMv8 and IBM POWER architectures and implementations: by experiment, by developing semantic models, by testing the correspondence between these, and by discussion with ARM and IBM staff. This turns out to be surprisingly subtle, and on the way we have to revisit the fundamental concepts of coherence and sequential consistency, which change in this setting. In particular, we show that adding a memory barrier between each instruction does not restore sequential consistency. We go on to also extend the C/C++11 model to support non-atomic mixed-size memory accesses. This is a necessary step towards semantics for real-world shared-memory concurrent code, beyond litmus tests.
引用
收藏
页码:429 / 442
页数:14
相关论文
共 50 条
  • [1] Mixed-size concurrency: ARM, POWER, C/C++11, and SC
    Flur, Shaked
    Sarkar, Susmit
    Pulte, Christopher
    Nienhuis, Kyndylan
    Maranget, Luc
    Gray, Kathryn E.
    Sezgin, Ali
    Batty, Mark
    Sewell, Peter
    [J]. ACM SIGPLAN Notices, 2017, 52 (01): : 429 - 442
  • [2] An operational semantics for C/C++11 concurrency
    [J]. 2016, Association for Computing Machinery, 2 Penn Plaza, Suite 701, New York, NY 10121-0701, United States (51):
  • [3] Clarifying and Compiling C/C++ Concurrency: from C++11 to POWER
    Batty, Mark
    Memarian, Kayvan
    Owens, Scott
    Sarkar, Susmit
    Sewell, Peter
    [J]. ACM SIGPLAN NOTICES, 2012, 47 (01) : 509 - 520
  • [4] An Operational Semantics for C/C++11 Concurrency
    Nienhuis, Kyndylan
    Memarian, Kayvan
    Sewell, Peter
    [J]. ACM SIGPLAN NOTICES, 2016, 51 (10) : 111 - 128
  • [5] Clarifying and Compiling C/C plus plus Concurrency: from C++11 to POWER
    Batty, Mark
    Memarian, Kayvan
    Owens, Scott
    Sarkar, Susmit
    Sewell, Peter
    [J]. POPL 12: PROCEEDINGS OF THE 39TH ANNUAL ACM SIGPLAN-SIGACT SYMPOSIUM ON PRINCIPLES OF PROGRAMMING LANGUAGES, 2012, : 509 - 520
  • [6] C++11 in Parallel
    Hummel, Joseph E.
    [J]. SIGCSE 12: PROCEEDINGS OF THE 43RD ACM TECHNICAL SYMPOSIUM ON COMPUTER SCIENCE EDUCATION, 2011, : 656 - 656
  • [7] Repairing Sequential Consistency in C/C++11
    Lahav, Ori
    Vafeiadis, Viktor
    Kang, Jeehoon
    Hur, Chung-Kil
    Dreyer, Derek
    [J]. ACM SIGPLAN NOTICES, 2017, 52 (06) : 618 - 632
  • [8] Preparing for the new C++11 standard
    Naumann, Axel
    [J]. INTERNATIONAL CONFERENCE ON COMPUTING IN HIGH ENERGY AND NUCLEAR PHYSICS 2012 (CHEP2012), PTS 1-6, 2012, 396
  • [9] Dynamic Race Detection for C++11
    Lidbury, Christopher
    Donaldson, Alastair F.
    [J]. ACM SIGPLAN NOTICES, 2017, 52 (01) : 443 - 457
  • [10] A Practical Approach for Model Checking C/C++11 Code
    Norris, Brian
    Demsky, Brian
    [J]. ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2016, 38 (03):