09.08.2013 Views

Design and Verification of Adaptive Cache Coherence Protocols ...

Design and Verification of Adaptive Cache Coherence Protocols ...

Design and Verification of Adaptive Cache Coherence Protocols ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Commit/Reconcile<br />

Invalid<br />

Send Purge<br />

Send <strong>Cache</strong>Req <strong>Cache</strong>- Receive <strong>Cache</strong><br />

Pending<br />

Loadl/Commit/Reconcile Storel<br />

Loadl/Storel/Reconcile<br />

Wb-<br />

Clean Receive WbAck Pending Send Wb Dirty<br />

Receive <strong>Cache</strong> Receive FlushAck<br />

Figure 5.6: <strong>Cache</strong> State Transitions <strong>of</strong> WP<br />

On the other h<strong>and</strong>, a cache responds to a purge request on a clean cell by purging the clean<br />

data <strong>and</strong> sending a Purge message to the memory. In the case that the cache copy is dirty, the<br />

dirty copy is forced to be written back via a Wb message.<br />

5.3.2 Voluntary Rules<br />

At any time, a cache can purge a clean cell, <strong>and</strong> notify the memory <strong>of</strong> the purge operation<br />

via a Purge message. It can also write a dirty copy back to the memory via a Wb message.<br />

Furthermore, a cache can send a message to the memory to request a data copy forany uncached<br />

address, even though no Loadl or Storel instruction is performed. Figure 5.6 shows the cache<br />

state transitions <strong>of</strong> WP.<br />

The memory can voluntarily send a data copy to any cache, provided the directory shows<br />

that the address is not cached in that cache. This implies that a cache may receive a data copy<br />

even though it has not requested for it. The memory can also voluntarily multicast a purge<br />

request to purge clean copies <strong>of</strong> an address.<br />

The voluntary rules allow the memory to supply a data copy without a request from the cache,<br />

<strong>and</strong> a cache to purge or write back a data copy without a request from the memory. This<br />

can cause unexpected situations if a request is received after the requested action has been<br />

performed. For example,<br />

Simultaneous <strong>Cache</strong> <strong>and</strong> <strong>Cache</strong>Req. Suppose initially the address is not cached in a cache<br />

site. The memory sends a <strong>Cache</strong> message to the cache, while the cache sends a <strong>Cache</strong>Req<br />

message to the memory. The <strong>Cache</strong>Req message will be discarded when it is received at<br />

the memory (Rules MM2 & MM4).<br />

Simultaneous Purge <strong>and</strong> PurgeReq. Suppose initially a clean copy <strong>of</strong> the address is cached<br />

in a cache site. The cache purges the clean copy <strong>and</strong> sends a Purge message to the memory,<br />

while the memory sends a PurgeReq message to the cache. The PurgeReq message will<br />

be discarded when it is received at the cache (Rules MC8 & MC9).<br />

Simultaneous Wb <strong>and</strong> PurgeReq. Suppose initially a dirty copy <strong>of</strong> the address is cached in<br />

acache site. The cache sends a Wb message to write the dirty copyback to the memory,<br />

while the memory sends a PurgeReq message to the cache. The PurgeReq message will<br />

be discarded when it is received at the cache (Rule MC7).<br />

94

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!