Causal Memory

We define and implement one member of a family of causal memories that we have developed. Causal memories are weakly consistent and admit more executions, hence allowing more concurrency, than either atomic or sequentially consistent memories. Informally, causal memories require the apparent order of writes to respect a shared memory analog of Lamport's potential causality. In this paper we: 9 motivate weakly consistent memories, particularly their use as distributed shared memories; 9 precisely and formally characterize one causal memory; 9 demonstrate that our causal memory can be effectively programmed; 9 present a simple implementation using reliable, "FIFO" message passing, and prove it correct; 9 present a fanlt-tolerant causal memory implementation that tolerates lossy channels and stopping failures and prove it correct. 1 I n t r o d u c t i o n Lamport [21] introduced and axiomatically defined three related classes of memory called safe, regular and atomic registers. He has also defined sequential consistency [19], which can be viewed as another class of memory. In an earlier work [16], we showed that sequentially consistent memory is weaker than atomic memory and incomparable to safe and regular memories 1 and suggested an approach for developing new weakly consistent memories. We advocate the study and use of weakly consistent memories and believe this area represents a rich source of research that may yield insight into the nature of concurrency. Moreover, weakly consistent memories are the subject of active research in the hardware community and serve as a promising bridge between theoretical and practical work. In this paper we present the first formal study, to our knowledge, of a memory strictly weaker than sequential consistency. In this paper, we precisely define, implement and prove correct one member of a family of weakly consistent causal memories that we have developed. *This work was supported in part by the National Science Foundation under grants CCR-8619886, CCR-8806358, CCR-8909665, and CCR-9106627. 1Sequentially consistent memory is weaker than multi-writer atomic memory and incomparable to both single-writer and multi-writer safe and regular memories.

[1]  Mustaque Ahamad,et al.  Slow memory: weakening consistency to enhance concurrency in distributed shared memories , 1990, Proceedings.,10th International Conference on Distributed Computing Systems.

[2]  Brett D. Fleisch,et al.  Mirage: a coherent distributed shared memory design , 1989, SOSP '89.

[3]  Jayadev Misra Axioms for Memory Access in Asynchronous Hardware Systems , 1984, Seminar on Concurrency.

[4]  Mustaque Ahamad,et al.  Implementing and programming causal distributed shared memory , 1991, [1991] Proceedings. 11th International Conference on Distributed Computing Systems.

[5]  André Schiper,et al.  Lightweight causal and atomic group multicast , 1991, TOCS.

[6]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[7]  Richard J. Lipton,et al.  Uniform-Cost Communication in Scalable Multiprocessors , 1990, ICPP.

[8]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[9]  Umakishore Ramachandran,et al.  Coherence of Distributed Shared Memory: Unifying Synchronization and Data Transfer , 1989, International Conference on Parallel Processing.

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

[11]  Andreas Nowatzyk,et al.  Coherent Shared Memory on a Distributed Memory Machine , 1989, International Conference on Parallel Processing.

[12]  Yehuda Afek,et al.  A lazy cache algorithm , 1989, SPAA '89.

[13]  Michel Dubois,et al.  Synchronization, coherence, and event ordering in multiprocessors , 1988, Computer.

[14]  Richard E. Kessler,et al.  An analysis of distributed shared memory algorithms , 1989, [1989] Proceedings. The 9th International Conference on Distributed Computing Systems.

[15]  Henri E. Bal,et al.  Distributed programming with shared data , 1988, Proceedings. 1988 International Conference on Computer Languages.

[16]  Willy Zwaenepoel,et al.  Munin: distributed shared memory based on type-specific memory coherence , 1990, PPOPP '90.

[17]  Nir Shavit,et al.  Bounded concurrrent time-stamp systems are constructible , 1989, STOC '89.

[18]  Willy Zwaenepoel,et al.  Adaptive software cache management for distributed shared memory architectures , 1990, [1990] Proceedings. The 17th Annual International Symposium on Computer Architecture.

[19]  Colin J. Fidge,et al.  Timestamps in Message-Passing Systems That Preserve the Partial Ordering , 1988 .

[20]  Paul Hudak,et al.  Memory coherence in shared virtual memory systems , 1986, PODC '86.

[21]  M. Hill,et al.  Weak ordering-a new definition , 1990, [1990] Proceedings. The 17th Annual International Symposium on Computer Architecture.

[22]  Anoop Gupta,et al.  Memory consistency and event ordering in scalable shared-memory multiprocessors , 1990, [1990] Proceedings. The 17th Annual International Symposium on Computer Architecture.