Causal memory

  • Mustaque Ahamad
  • James E. Burns
  • Phillip W. Hutto
  • Gil Neiger
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 579)


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:
  • motivate weakly consistent memories, particularly their use as distributed shared memories;

  • precisely and formally characterize one causal memory;

  • demonstrate that our causal memory can be effectively programmed;

  • present a simple implementation using reliable, “FIFO” message passing, and prove it correct;

  • present a fault-tolerant causal memory implementation that tolerates lossy channels and stopping failures and prove it correct.


Shared Memory Message Passing Correct Process Read Operation Robust Algorithm 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    Sarita V. Adve and Mark D. Hill. Weak ordering — a new definition. In Proceedings of the 17th Annual International Symposium on Computer Architecture, pages 2–4, 1990.Google Scholar
  2. [2]
    Yehuda Afek, Geoffrey Brown, and Michael Merritt. A lazy cache algorithm. In Proceedings of the 1989 ACM Symposium on Parallel Algorithms and Architectures, pages 209–23, June 1989.Google Scholar
  3. [3]
    Mustaque Ahamad, Phillip W. Hutto, and Ranjit John. Implementing and programming causal distributed shared memory. In 11th International Conference on Dist. Comput., May 1991.Google Scholar
  4. [4]
    Henri E. Bal and Andrew S. Tanenbaum. Distributed programming with shared data. In Proceedings of the IEEE 1988 International Conference on Computer Languages, pages 82–1, October 1988.Google Scholar
  5. [5]
    J. K. Bennett, J. B. Carter, and W. Zwaenepoel. Adaptive software cache management for distributed shared memory architectures. In Proceedings of the 17th Annual International Symposium on Computer Architecture, May 1990.Google Scholar
  6. [6]
    J. K. Bennett, J. B. Carter, and W. Zwaenepoel. Munin: Distributed shared memory based on type-specific memory coherence. In Proceedings of the 2nd ACM Symposium on Principles and Practice of Parallel Programming, pages 168–177, March 1990.Google Scholar
  7. [7]
    Kenneth Birman, Andre Shiper, and Pat Stephenson. Lightweight causal and atomic group multicast. Technical Report 91-1192, Department of Computer Science, Cornell University, February 1991. To appear in ACM Transactions on Computer Systems. Google Scholar
  8. [8]
    Roberto Bisiani, Andreas Nowatzyk, and Mosur Ravishankar. Coherent shared memory on a distributed memory machine. In Proceedings of the 1989 International Conference on Parallel Processing, volume I, pages 133–141, 1989.Google Scholar
  9. [9]
    Patrick M. Clancey and Joan M. Francioni. Distribution of pages in distributed shared memory. In Proceedings of the 1990 International Conference on Parallel Processing, volume II, pages 258–265, August 1990.Google Scholar
  10. [10]
    Danny Dolev and Nir Shavit. Bounded concurrent time-stamp systems are constructible. In Proceedings of the Twenty-First ACM Symposium on Theory of Computing, pages 454–66, May 1989.Google Scholar
  11. [11]
    Michel Dubois, Christoph Scheurich, and Faye Briggs. Synchronization, coherence, and event ordering in multiprocessors. IEEE Computer, 21(2): 9–22, February 1988.Google Scholar
  12. [12]
    Colin Fidge. Timestamps in message-passing systems that preserve the partial ordering. In Proceedings of the Eleventh Australian Computer Science Conference, University of Queensland, Australia, 1988.Google Scholar
  13. [13]
    Brett D. Fleisch and Gerald J. Popek. Mirage: A coherent distributed shared memory design. In Proceedings of the Twelfth ACM Symposium on Operating Systems Principles, pages 211–224, December 1989.Google Scholar
  14. [14]
    Kourosh Gharachorloo, Daniel Lenoski, James Laudon, Phillip Gibbons, Anoop Gupta, and John Hennessy. Memory consistency and event ordering in scalable shared-memory multiprocessors. In Proceedings of the 17th Annual International Symposium on Computer Architecture, pages 15–26, 1990.Google Scholar
  15. [15]
    Maurice P. Herlihy and Jeannette M. Wing. Linearizability: A correctness condition for concurrent objects. ACM Transactions on Programming Languages and Systems, 12(3):463–492, July 1990.Google Scholar
  16. [16]
    Phillip W. Hutto and Mustaque Ahamad. Slow memory: Weakening consistency to enhance concurrency in distributed shared memories. In Proceedings of the 10th International Conference on Distributed Computing Systems, pages 302–311, 1990.Google Scholar
  17. [17]
    R. E. Kessler and M. Livny. An analysis of distributed shared memory algorithms. In Proceedings of the 9th International Conference on Distributed Computing, pages 498–505, June 1989.Google Scholar
  18. [18]
    Leslie Lamport. Time, clocks, and the ordering of events in a distributed system. Communications of the ACM, 21(7):558–565, July 1978.Google Scholar
  19. [19]
    Leslie Lamport. How to make a multiprocessor computer that correct executes multiprocess programs. IEEE Transactions on Computers, C-28(9):690–691, September 1979.Google Scholar
  20. [20]
    Leslie Lamport. On interprocess communication; part I: Basic formalism. Distributed Computing, 1(2):77–85, 1986.Google Scholar
  21. [21]
    Leslie Lamport. On interprocess communication; part II: Algorithms. Distributed Computing, 1(2):86–101, 1986.Google Scholar
  22. [22]
    Kai Li and Paul Hudak. Memory coherence in shared virtual memory systems. ACM Transactions on Computer Systems, 7(4):321–359, November 1989.Google Scholar
  23. [23]
    Richard J. Lipton and Jonathan S. Sandberg. PRAM: A scalable shared memory. Technical Report 180-88, Princeton University, Department of Computer Science, September 1988.Google Scholar
  24. [24]
    Richard J. Lipton and D. N. Serpanos. Uniform-cost communication in scalable multiprocessors. In Proceedings of the 1990 International Conference on Parallel Processing, pages I429–I432, August 1990.Google Scholar
  25. [25]
    Friedemann Mattern. Time and global states of distributed systems. In Michel Cosnard, Patrice Quinton, Yves Robert, and Michel Raynal, editors, Proceedings of the International Workshop on Parallel and Distributed Algorithms. North-Holland, October 1988.Google Scholar
  26. [26]
    J. Misra. Axioms for memory access in asynchronous hardware systems. ACM Transactions on Programming Languages and Systems, 8(1):142–153, January 1986.Google Scholar
  27. [27]
    Umakishore Ramachandran, Mustaque Ahamad, and M. Yousef Khalidi. Coherence of distributed shared memory: Unifying synchronization and data transfer. In Proceedings of the 18th International Conference on Parallel Processing, pages 160–169, August 1989.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • Mustaque Ahamad
    • 1
  • James E. Burns
    • 1
  • Phillip W. Hutto
    • 1
  • Gil Neiger
    • 1
  1. 1.College of Computing, Georgia Institute of TechnologyAtlantaUSA

Personalised recommendations