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,v,WbPending) stall Cell(a,v,WbPending) P3<br />

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

a =2 cache stall Cell(a,-,<strong>Cache</strong>Pending) P5<br />

h<strong>Cache</strong>Req,ai !H<br />

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

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

Cell(a,v1,WbPending) stall Cell(a,v1,WbPending) P8<br />

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

a =2 cache stall Cell(a,-,<strong>Cache</strong>Pending) P10<br />

h<strong>Cache</strong>Req,ai !H<br />

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

Cell(a,v,Dirty) stall Cell(a,v,WbPending) P12<br />

hWb,a,vi!H<br />

Cell(a,v,WbPending) stall Cell(a,v,WbPending) P13<br />

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

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

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

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

Cell(a,v,WbPending) stall Cell(a,v,WbPending) P18<br />

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

a =2 cache retire a =2 cache P20 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) hWb,a,vi!H Cell(a,v,WbPending) 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 />

hWbAck,ai Cell(a,v,WbPending) Cell(a,v,Clean) MC3<br />

hFlushAck,ai Cell(a,-,WbPending) a =2 cache MC4<br />

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

Cell(a,v,Dirty) hWb,a,vi!H Cell(a,v,WbPending) MC6<br />

Cell(a,v,WbPending) Cell(a,v,WbPending) MC7<br />

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

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

Voluntary M-engine Rules<br />

Mstate Action Next Mstate<br />

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

Cell(a,v,C[dir]) (dir 6= ) hPurgeReq,ai!dir Cell(a,v,T[dir, ]) 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[dir]) (id =2 dir) h<strong>Cache</strong>,a,vi!id Cell(a,v,C[id jdir]) MM1 SF<br />

Cell(a,v,C[dir]) (id 2 dir) Cell(a,v,C[dir]) MM2<br />

Cell(a,v,T[dir,sm]) (id =2 dir) stall message Cell(a,v,T[dir,sm]) MM3<br />

Cell(a,v,T[dir,sm]) (id 2 dir) Cell(a,v,T[dir,sm]) MM4<br />

hWb,a,vi Cell(a,v1,C[id jdir]) hPurgeReq,ai!dir Cell(a,v1,T[dir,(id ,v)]) MM5<br />

Cell(a,v1,T[id jdir,sm]) Cell(a,v1,T[dir,(id ,v)jsm]) MM6<br />

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

Cell(a,v,T[id jdir,sm]) Cell(a,v,T[dir,sm]) MM8<br />

Cell(a,-,T[ ,(id ,v)jsm]) hFlushAck,ai!id Cell(a,v,T[ ,sm]) MM9<br />

Cell(a,-,T[ ,(id ,v)]) hWbAck,ai !id Cell(a,v,C[id ]) MM10<br />

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

Figure 5.5: The WP Protocol<br />

92

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

Saved successfully!

Ooh no, something went wrong!