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 />

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

Loadl/Commit/Reconcile<br />

Clean<br />

Storel<br />

Send Flush<br />

Figure 6.5: <strong>Cache</strong> State Transitions <strong>of</strong> Migratory<br />

Loadl/Storel/Commit/Reconcile<br />

ensures that a cache request cannot be blocked forever while cache requests from other sites<br />

are serviced repeatedly. The Migratory protocol assumes proper bu er management that can<br />

be characterized as follows:<br />

Migratory's bu er management:<br />

msg1 msg2 msg2 msg1<br />

if (Cmd(msg1)=<strong>Cache</strong>Req _ Cmd(msg2)=<strong>Cache</strong>Req) ^<br />

(Src(msg1) 6=Src(msg2) _ Addr(msg1) 6=Addr(msg2))<br />

Voluntary Rules: At any time, a cache can purge a clean copy <strong>and</strong> notify the memory <strong>of</strong><br />

the purge operation via a Purge message. It can also ush a dirty copy <strong>and</strong> write the data<br />

back to the memory via a Flush message. Acache can send a cache request to the memory to<br />

request an exclusive copy for an uncached address. Figure 6.5 shows the cache state transitions<br />

<strong>of</strong> Migratory.<br />

On the other h<strong>and</strong>, the memory can voluntarily send an exclusive copy to a cache, if the<br />

address is currently not cached in any cache. If the memory state shows that an address is<br />

cached in some cache, the memory can voluntarily send a ush request to the cache to force<br />

the data to be ushed from the cache.<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 ush a data copy without a request from the memory. This can cause unexpected<br />

Dirty<br />

situations if a request is received after the requested action has been performed.<br />

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

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

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

memory (Rules MM3 & MM5).<br />

Simultaneous Purge <strong>and</strong> FlushReq. 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 FlushReq message to the cache. The FlushReq message will<br />

be discarded when it received at the cache (Rules MC5 <strong>and</strong> MC6).<br />

Simultaneous Flush <strong>and</strong> FlushReq. Suppose initially a dirty copy <strong>of</strong> the address is cached<br />

in a cache site. The cache ushes the dirtycopy <strong>and</strong> sends a Flush message to the memory,<br />

120

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

Saved successfully!

Ooh no, something went wrong!