A Constraint-Based Approach for Specifying Memory Consistency Models

Conforming to the underlying memory consistency rules is a fundamental requirement for implementing shared memory systems and writing multiprocessor software. In order to promote understanding and enable rigorous analysis, it is highly desirable that a memory model speciflcation be both declarative and executable. In this paper, we explore the practicality of analyzing memory consistency models using constraint solving. By precisely deflning a memory model as a set of constraints in an axiomatic and compositional style, our approach provides a generic formalism for specifying memory consistency models. Furthermore, this framework ofiers a unique advantage for program veriflcation, i.e., it enables an accurate and exhaustive analysis of program properties which covers all execution paths for a given shared memory system. With this constraint-base approach, this paper formalizes a collection of classical memory models as well as the memory ordering rules of the Intel Itanium processor families. We also discuss how logic programming and constraint solving can be used to make these axiomatic speciflcations executable to support automated analysis.

[1]  Vicente Cholvi-Juan Formalizing Memory Coherency Models , 1994 .

[2]  William Pugh The Java memory model is fatally flawed , 2000 .

[3]  Alba Cristina Magalhaes Alves de Melo,et al.  Visual-MCM: Visualising Execution Histories on Multiple Memory Consistency Models , 1999, ACPC.

[4]  Sarita V. Adve,et al.  Shared Memory Consistency Models: A Tutorial , 1996, Computer.

[5]  Gil Neiger,et al.  Causal memory: definitions, implementation, and programming , 1995, Distributed Computing.

[6]  Brian N. Bershad,et al.  Midway : shared memory parallel programming with entry consistency for distributed memory multiprocessors , 1991 .

[7]  Rida A. Bazzi,et al.  The power of processor consistency , 1993, SPAA '93.

[8]  Sanjit A. Seshia,et al.  A hybrid SAT-based decision procedure for separation logic with uninterpreted functions , 2003, Proceedings 2003. Design Automation Conference (IEEE Cat. No.03CH37451).

[9]  M. Gordon,et al.  Introduction to HOL: a theorem proving environment for higher order logic , 1993 .

[10]  William W. Collier,et al.  Reasoning about parallel architectures , 1992 .

[11]  Tulika Mitra,et al.  Specifying multithreaded Java semantics for program verification , 2002, ICSE '02.

[12]  Gil Neiger,et al.  A Characterization of Scalable Shared Memories , 1993, 1993 International Conference on Parallel Processing - ICPP'93.

[13]  Yue Yang,et al.  UMM: an operational memory model specification framework with integrated model checking capability , 2005, Concurr. Pract. Exp..

[14]  Alba Cristina Magalhaes Alves de Melo Defining Uniform and Hybrid Memory Consistency Models on a Unified Framework , 1999, HICSS.

[15]  Ganesh Gopalakrishnan,et al.  Rigorous Concurrency Analysis of Multithreaded Programs , 2003 .

[16]  Gary J. Nutt,et al.  A lattice based framework of shared memory consistency models , 2001, Proceedings 21st International Conference on Distributed Computing Systems.

[17]  David L. Dill,et al.  An Executable Specification and Verifier for Relaxed Memory Order , 1999, IEEE Trans. Computers.

[18]  Matthew W. Moskewicz,et al.  Cha : Engineering an e cient SAT solver , 2001, DAC 2001.

[19]  Anoop Gupta,et al.  Memory consistency and event ordering in scalable shared-memory multiprocessors , 1990, ISCA '90.

[20]  Nicolas Beldiceanu,et al.  Constraint Logic Programming , 1997 .

[21]  Gary L. Peterson,et al.  Myths About the Mutual Exclusion Problem , 1981, Inf. Process. Lett..

[22]  Ganesh Gopalakrishnan,et al.  Analyzing the CRF Java memory model , 2001, Proceedings Eighth Asia-Pacific Software Engineering Conference.

[23]  Sharad Malik,et al.  Chaff: engineering an efficient SAT solver , 2001, Proceedings of the 38th Design Automation Conference (IEEE Cat. No.01CH37232).

[24]  Leslie Lamport,et al.  Checking Cache-Coherence Protocols with TLA+ , 2003, Formal Methods Syst. Des..

[25]  Leslie Lamport,et al.  How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs , 2016, IEEE Transactions on Computers.

[26]  James R. Goodman,et al.  Cache Consistency and Sequential Consistency , 1991 .

[27]  Yue Yang,et al.  Specifying Java thread semantics using a uniform memory model , 2002, JGI '02.

[28]  Eugene Goldberg,et al.  BerkMin: A Fast and Robust Sat-Solver , 2002, Discret. Appl. Math..

[29]  M. Raynal,et al.  A Suite of Formal Definitions for Consistency Criteria in Distributed Shared Memories , 1996 .

[30]  Jalal Kawash,et al.  DEFINING AND COMPARING MEMORY CONSISTENCY MODELS , 1997 .

[31]  K. Gharachodoo,et al.  Memory consistency models for shared memory multiprocessors , 1996 .

[32]  Vivek Sarkar,et al.  Location Consistency-A New Memory Model and Cache Consistency Protocol , 2000, IEEE Trans. Computers.

[33]  Mark D. Hill,et al.  A Unified Formalization of Four Shared-Memory Models , 1993, IEEE Trans. Parallel Distributed Syst..

[34]  David Mosberger,et al.  Memory consistency models , 1993, OPSR.