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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

7.4 The <strong>Cache</strong>t <strong>Cache</strong> <strong>Coherence</strong> Protocol<br />

In this section, we de ne the <strong>Cache</strong>t protocol that employs basic messages only. To ensure<br />

liveness, we introduce two basic directive messages, DownReqmw <strong>and</strong> DownReqwb. Whenever<br />

necessary, the memory can send a DownReqmw message to downgrade a cache cell from Mi-<br />

gratory to WP, or a DownReqwb message to downgrade a cache cell from WP to Base. Some<br />

memory states in the imperative rules need to incorporate proper information about outst<strong>and</strong>-<br />

ing directive messages in the integrated rules. The Tw[dir, ] state in the imperative rules is<br />

split into Cw[dir] <strong>and</strong> Tw[dir, ] in the integrated rules, where Tw[dir, ] implies that the memory<br />

has issued a DownReqwb message to cache sites dir. The Tm[id , ] state in the imperative rules<br />

is split into Cm[id ], T0 m [id ] <strong>and</strong> Tm[id , ] in the integrated rules, where T0 m [id ] implies that<br />

the memory has issued a DownReqmw message to cache site id , <strong>and</strong> Tm[id , ] implies that the<br />

memory has issued a DownReqmw followed by aDownReqwb to cache site id .<br />

7.4.1 Processor Rules <strong>of</strong> <strong>Cache</strong>t<br />

Figure 7.11 gives the processor rules <strong>of</strong> <strong>Cache</strong>t. The processor rules include the imperative<br />

processor rules, <strong>and</strong> additional rules to deal with stalled instructions. All the processor rules<br />

are m<strong>and</strong>atory rules. Processor rules marked with `SF' are strongly fair. When an instruction<br />

is retired, it is removed from the processor-to-memory bu er when an instruction is stalled, it<br />

remains in the processor-to-memory bu er.<br />

For a Loadl or Storel instruction, if the address is cached in the Clean or Dirty state <strong>of</strong><br />

any protocol, the cache supplies the accessed data or an acknowledgment to retire the<br />

instruction. If the address is uncached, the cache sends a <strong>Cache</strong>Req message to request a<br />

cache copy from the memory the instruction remains stalled until the requested data is<br />

received.<br />

For a Commit instruction, if the address is uncached or cached in the Clean state <strong>of</strong> any<br />

protocol or the Dirty state <strong>of</strong> Migratory, the cache supplies an acknowledgment to retire<br />

the instruction. If the address is cached in the Dirty state <strong>of</strong> Base, the cache sends a Wbb<br />

message to write the data back to the memory. If the address is cached in the Dirty state<br />

<strong>of</strong> WP, the cache sends a Downwb message followed by aWbb message to the memory.<br />

For a Reconcile instruction, if the address is uncached or cached in the Clean state <strong>of</strong> WP<br />

or Migratory or the Dirty state <strong>of</strong> any protocol, the cache supplies an acknowledgment<br />

to retire the instruction. If the address is cached in the Clean state <strong>of</strong> Base, the cache<br />

purges the cache cell to allow the instruction to complete.<br />

7.4.2 <strong>Cache</strong> Engine Rules <strong>of</strong> <strong>Cache</strong>t<br />

Figure 7.12 de nes the cache engine rules <strong>of</strong> <strong>Cache</strong>t. The cache engine rules contain voluntary<br />

rules <strong>and</strong> m<strong>and</strong>atory rules. When a cache engine receives a message, it removes the message<br />

from the incoming queue. No message needs to be stalled at the cache side. The cache engine<br />

147

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

Saved successfully!

Ooh no, something went wrong!