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.

M<strong>and</strong>atory Processor Rules<br />

Instruction Cstate Action Next Cstate<br />

Loadl(a) Cell(a,v,Clean) retire Cell(a,v,Clean) P1 SF<br />

Cell(a,v,Dirty) retire Cell(a,v,Dirty) P2 SF<br />

Cell(a,-,<strong>Cache</strong>Pending) stall Cell(a,-,<strong>Cache</strong>Pending) P3<br />

a =2 cache stall, h<strong>Cache</strong>Req,ai !H Cell(a,-,<strong>Cache</strong>Pending) P4<br />

Storel(a,v) Cell(a,-,Clean) retire Cell(a,v,Dirty) P5 SF<br />

Cell(a,-,Dirty) retire Cell(a,v,Dirty) P6 SF<br />

Cell(a,-,<strong>Cache</strong>Pending) stall Cell(a,-,<strong>Cache</strong>Pending) P7<br />

a =2 cache stall, h<strong>Cache</strong>Req,ai !H Cell(a,-,<strong>Cache</strong>Pending) P8<br />

Commit(a) Cell(a,v,Clean) retire Cell(a,v,Clean) P9 SF<br />

Cell(a,v,Dirty) retire Cell(a,v,Dirty) P10 SF<br />

Cell(a,-,<strong>Cache</strong>Pending) stall Cell(a,-,<strong>Cache</strong>Pending) P11<br />

a =2 cache retire a =2 cache P12 SF<br />

Reconcile(a) Cell(a,v,Clean) retire Cell(a,v,Clean) P13 SF<br />

Cell(a,v,Dirty) retire Cell(a,v,Dirty) P14 SF<br />

Cell(a,-,<strong>Cache</strong>Pending) stall Cell(a,-,<strong>Cache</strong>Pending) P15<br />

a =2 cache retire a =2 cache P16 SF<br />

Voluntary C-engine Rules<br />

Cstate Action Next Cstate<br />

Cell(a,-,Clean) hPurge,ai!H a =2 cache VC1<br />

Cell(a,v,Dirty) hFlush,a,vi!H a =2 cache VC2<br />

a =2 cache h<strong>Cache</strong>Req,ai !H Cell(a,-,<strong>Cache</strong>Pending) VC3<br />

M<strong>and</strong>atory C-engine Rules<br />

Msg from H Cstate Action Next Cstate<br />

h<strong>Cache</strong>,a,vi a =2 cache Cell(a,v,Clean) MC1<br />

Cell(a,-,<strong>Cache</strong>Pending) Cell(a,v,Clean) MC2<br />

hFlushReq,ai Cell(a,-,Clean) hPurge,ai!H a =2 cache MC3<br />

Cell(a,v,Dirty) hFlush,a,vi!H a =2 cache MC4<br />

Cell(a,-,<strong>Cache</strong>Pending) Cell(a,-,<strong>Cache</strong>Pending) MC5<br />

a =2 cache a =2 cache MC6<br />

Voluntary M-engine Rules<br />

Mstate Action Next Mstate<br />

Cell(a,v,C[ ]) h<strong>Cache</strong>,a,vi !id Cell(a,v,C[id ]) VM1<br />

Cell(a,v,C[id ]) hFlushReq,ai!id Cell(a,v,T[id ]) VM2<br />

M<strong>and</strong>atory M-engine Rules<br />

Msg from id Mstate Action Next Mstate<br />

h<strong>Cache</strong>Req,ai Cell(a,v,C[ ]) h<strong>Cache</strong>,a,vi !id Cell(a,v,C[id ]) MM1 SF<br />

Cell(a,v,C[id1]) (id1 6= id ) stall message Cell(a,v,T[id1]) MM2<br />

hFlushReq,ai!id1<br />

Cell(a,v,C[id ]) Cell(a,v,C[id ]) MM3<br />

Cell(a,-,T[id1]) (id1 6= id ) stall message Cell(a,-,T[id1]) MM4<br />

Cell(a,-,T[id ]) Cell(a,-,T[id ]) MM5<br />

hPurge,ai Cell(a,v,C[id ]) Cell(a,v,C[ ]) MM6<br />

Cell(a,v,T[id ]) Cell(a,v,C[ ]) MM7<br />

hFlush,a,vi Cell(a,-,C[id ]) Cell(a,v,C[ ]) MM8<br />

Cell(a,-,T[id ]) Cell(a,v,C[ ]) MM9<br />

Figure 6.4: The Migratory Protocol<br />

119

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

Saved successfully!

Ooh no, something went wrong!