The Wisconsin multicube architecture employs row and column buses constructing a two-dimensional grid structure as shown in the figure. The three-dimensional generalization will appear in a cube structure.
It can describe the cache coherence protocol of the Wisconsin multicube architecture, the following definitions must be given −
Unmodified − The value in the main memory is correct and it can have several correct cache copies.
Modified − The value in the main memory is stale and there exists exactly one correct cache copy.
Data blocks in a particular cache can have three different local states: shared (its copy in the main memory is in a global unmodified state), modified (its copy in the main memory is in a global modified state), invalid. Each cache controller contains a special data structure called the modified line table. This table stores the addresses of all modified data blocks residing in caches in that column.
A cache controller can issue four types of consistency commands −
READ − The associated processor wishes to read a data block that is not present in its cache.
READ-MOD − The associated processor wishes to write a data block that is not in a modified state in its cache.
ALLOCATE − An entire block is to be written regardless of its current contents.
WRITE-BACK − The data block in the main memory should be updated and set into an unmodified state.
Definitions of state transitions in caches and memories, and definition of transmission routes of commands. Here, only the execution mechanisms of the READ and READ-MOD command are explained. Interested readers can consult Goodman and Woest (1988) for details of the other consistency transaction.
READ request for a data block X which is in state modified − The READ request is issued on the row bus and accepted by the controller whose modified line table contains the address of X. Assume the requester is C00, the modified copy of X is held by C11 and the home column of X in column 2. In this case, C01 accepts the request and broadcasts it on the column bus where all the controllers change the state of X to unmodified.
READ request for a data block X which is in a state unmodified − In this case, the home column controller C02 accepts the request. If X has a copy in C02, it is directly sent back to C00 on the row bus.
READ-MOD request for a data block X which is in state modified − After the first two bus operations pick up the request, invalidates the copy of X, and transmits it on the column bus. Finally, C00 picks up X, updates it, and stores it in a modified state.
READ request for a data block X which is in state unmodified − In this case, the home column controller C02 accepts the request and forwards it to the main memory which sends back an invalidate request along with a copy of X. Each controller on the column bus accepts the case invalidate request and broadcasts it on the associated row bus.