Design and Verification of Adaptive Cache Coherence Protocols ...
Design and Verification of Adaptive Cache Coherence Protocols ...
Design and Verification of Adaptive Cache Coherence Protocols ...
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