
4-6
PowerPC Microprocessor Family: The Bus Interface for 32-Bit Microprocessors
To maintain a coherent memory system, each processor follows simple rules for managing
the cache state such as broadcasting its intention to read a cache block not in the cache and
its intention to write into a block not owned exclusively. Other devices respond by snooping
the broadcast addresses and reporting cache status back to the originating processor.
The status returned includes a shared indicator (the SHD signal) and an address retry
indicator (the ARTRY signal). The snooping processor asserts SHD if it has a copy of the
addressed block; it asserts ARTRY if it has a modified copy of the addressed cache block
that must be written back to memory or if another processor had a problem that kept it from
snooping the address. For additional information about snooping, see Section 4.7.1,
“General Comments on 60x Snooping.”
To maximize performance, the 601 and 604 provide a second path into the data cache
directory for snooping that allows the mainstream instruction processing to operate
concurrently with snooping. Instruction processing is affected only when snoop-control
logic requires a snoop push of modified data to maintain memory coherency.
4.3 Memory Coherency—MESI Protocol
Each cache block is in one of the four MESI states. Addresses presented to the cache are
indexed into the cache directory and are compared against the cache directory tags. If no
tags match, the result is a cache miss. If a tag match occurs, a cache hit has occurred and
the directory indicates the state of the block through three state bits kept with the tag.
The four possible states for a cache block are invalid (I), shared (S), exclusive (E), and
modified (M), which are defined in Table 4-1
.
Table 4-1. MESI State Definitions
MESI State
Definition
Modified (M)
The addressed block is valid in the cache and in only this cache. The block is modified with respect
to system memory—that is, the modified data in the block has not been written back to memory.
Note that some documentation identifies this as XM (exclusive modified) state.
Exclusive (E)
The addressed block is in this cache only. The data in this block is consistent with system memory.
Note that some documentation identifies this as XU (exclusive unmodified) state.
Shared (S)
The addressed block is valid in the cache and in at least one other cache. This block is always
consistent with system memory. That is, the shared state is shared-unmodified; there is no shared-
modified state. The 603, which is not optimized for multiprocessor implementations, does not
support the shared (S) state.
Invalid (I)
This state indicates that the addressed block is not resident in the cache and/or any data contained
is considered not useful.