Professional Documents
Culture Documents
PrRd
value S
Main Memory
PrRd
value S value S
Main Memory
P2 wants to read the value. Its cache does not have the
data, so it places a BusRd to notify other processors
and ask for the data. The memory controller provides
the data.
w3
P1 P2 P3
PrWr
Main Memory
Main Memory
Main Memory
Main Memory
Main Memory
Main Memory
Main Memory
w0 E w2 E
Main Memory
PrWr
PrWr
w0 E M w2 M w2 E I
Main Memory
PrWr PrRd
w0 M S w2 M w2 w0 I S
Main Memory
w0 S I w2 M w0 S M
Main Memory
PrRd
w0 w2 S S w2 M S w0 M
Main Memory
P1 wants to load w2. P1’s cache does not have w2, so it issues
a BusRd transaction. P2’s cache turns on the S signal, so P1’s
cache knows to load w2 in the S state. P2’s cache provides w2
for P1 and cancels the access to main memory through a
Flush.
P2 ld w1
P1 P2 P3
PrRd
w2 S w2 w1 S E w0 M
Main Memory
w2 S w1 E S w0 w1 M S
Flush
Snooper Snooper Snooper
Flush BusRd(S)
Main Memory
PrRd
w2,w3 E
Main Memory
w2, w3 E w0, w1 E
Main Memory
Main Memory
PrRd
Main Memory
w2, w3 M Sm w0, w3
w2, w1 Sc w0, w1 Sm ???
Main Memory
P2 wants to load w3. This generates a cache miss. P2’s cache issues a
BusRd transaction. P1 asserts the S signal, so P2 will load the cache line
in Sc state. P1’s cache has a modified version of the cache line, so it will
provide the data for P2 with a flush transaction. P1’s cache will update the
line’s state to Sm. Should P3 change w0/w1’s state to M?
P2 ld w2
P3 st w0 P1 P2 P3
PrRd PrWr
Main Memory