DynaBusLSpecs.tioga
Written by: Sindhu, May 22, 1986 12:55:46 pm PDT
Last Edited by:
Pradeep Sindhu June 17, 1986 2:50:28 pm PDT
DYNABUS CONSISTENCY ALGORITHM
DYNABUS CONSISTENCY ALGORITHM
DYNABUS CONSISTENCY ALGORITHM
DRAGON PROJECT — FOR INTERNAL XEROX USE ONLY
DRAGON PROJECT — FOR INTERNAL XEROX USE ONLY
DRAGON PROJECT — FOR INTERNAL XEROX USE ONLY
DynaBus Consistency Algorithm
Specification and Proof of Correctness
Release as[Indigo]<Dragon>Documentation>DynaBusConsistencyAlgorithm.tioga, .press

© Copyright 1984 Xerox Corporation. All rights reserved.
Abstract: This document specifies the algorithm used to maintain cache consistency on the DynaBus and provides a proof of its correctness. It is recommended that the reader familiarize himself with the DynaBus Logical Specifications before reading this document.
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304



For Internal Xerox Use Only
Contents
1. Introduction
2. Definition of Consistency
3. Bus Side Specification
4. Processor Side Specification
5. Proof of Correctness
1. Introduction
A basic design decision in the Dragon memory system is that multiple copies of read/write data are allowed to exist when data is cached. Without some means for keeping these copies consistent, computations would in general produce unpredictable results. The DynaBus consistency algorithm ensures that this does not happen.
This consistency algorithm is necessarily more complex than the corresponding algorithm for a circuit switched bus because bus transactions are not atomic anymore. Given this added complexity, and the importance of getting the algorithm right before building the hardware, we considered it important to specify the algorithm carefully and to provide a proof of its correctness.
We begin in Section 2 with the definition of consistency. In Sections 3 and 4 we specify the algorithm. And in Section 5 we develop the proof. The reader would find this document considerably easier if he first familiarized himself with the DynaBus Logical Specifications.
2. Definition of Consistency
One way to define consistency is to say that for each datum A all copies of A have the same value on a cycle by cycle basis—ie. during each cycle of the system clock. This definition is sufficient in the sense that correct programs can be written on a system that satisfies this definition, and is also easy to understand. The problem is that it is fundamentally hard to build an efficient system that embodies this definition when the potential number of caches is large. Fortunately, there is a weaker definition that is still adequate for correctness and is also compatible with the requirement of a large system. It is based on the notion of serializability.
To define serializability, consider the abstract model of a shared memory multiprocessor shown in Figure 5. There are some number of processors connected to a shared memory. Each processor has a private line to shared memory; over this line the processor issues the commands Fetch(A) and Store(A, D), where A is an address and D is data. For Fetch(A) the memory returns the value currently stored at A; for Store(A, D) it writes the value D into A and returns an indication that the write has completed. Let the starting time of an operation be the moment the request is sent over the line and the ending time be the moment either the return value or an indication of completion is received by the processor.
[Artwork node; type 'ArtworkInterpress on' to command tool]
 Figure 1. Abstract Model of Shared Memory Multiprocessor
Let S be the state of the shared memory before the start of some computation C, and F be the state after C has completed. The Fetches and Stores of C are said to be serializable if there exists some serial order such that if these operations were performed in this order, without overlap, the same final state F would be reached starting from the initial state S. Two operations are said to overlap if the starting time of one is before the ending time of the other and the starting of the other is before the ending time of the one.
3. Bus Side Specification
Copy the latest version from the file SCAlgorithm.tioga
4. Processor Side Specification
Copy the latest version from the file SCAlgorithm.tioga
5. Proof of Correctness
TBD.