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.

Voluntary C-engine Rules<br />

Cstate Action Next Cstate<br />

Cell(a,-,Cleanb) a =2 cache VC1<br />

Cell(a,v,Dirtyb) hWbb,a,vi!H Cell(a,v,WbPending) VC2<br />

Cell(a,v,Cleanw) hDownwb,ai!H Cell(a,v,Cleanb) VC3<br />

Cell(a,v,Dirtyw) hDownwb,ai!H Cell(a,v,Dirtyb) VC4<br />

Cell(a,v,Cleanm) hDownmw,ai!H Cell(a,v,Cleanw) VC5<br />

Cell(a,v,Dirtym) hDownVmw,a,vi!H Cell(a,v,Cleanw) VC6<br />

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

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

Msg from H Cstate Action Next Cstate<br />

h<strong>Cache</strong>b,a,vi Cell(a,-,<strong>Cache</strong>Pending) Cell(a,v,Cleanb) MC1<br />

h<strong>Cache</strong>w,a,vi Cell(a,-,Cleanb) Cell(a,v,Cleanw) MC2<br />

Cell(a,v1,Dirtyb) Cell(a,v1,Dirtyw) MC3<br />

Cell(a,v1,WbPending) Cell(a,v1,WbPending) MC4<br />

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

a =2 cache Cell(a,v,Cleanw) MC6<br />

hUpwm,ai Cell(a,v,Cleanb) Cell(a,v,Cleanb) MC7<br />

Cell(a,v,Dirtyb) Cell(a,v,Dirtyb) MC8<br />

Cell(a,v,Cleanw) Cell(a,v,Cleanm) MC9<br />

Cell(a,v,Dirtyw) Cell(a,v,Dirtym) MC10<br />

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

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

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

hWbAckb,ai Cell(a,v,WbPending) Cell(a,v,Cleanb) MC14<br />

hWbAckw,ai Cell(a,v,WbPending) Cell(a,v,Cleanw) MC15<br />

hDownReqwb,ai Cell(a,v,Cleanb) Cell(a,v,Cleanb) MC16<br />

Cell(a,v,Dirtyb) Cell(a,v,Dirtyb) MC17<br />

Cell(a,v,Cleanw) hDownwb,ai!H Cell(a,v,Cleanb) MC18<br />

Cell(a,v,Dirtyw) hDownwb,ai!H Cell(a,v,Dirtyb) MC19<br />

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

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

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

hDownReqmw,ai Cell(a,v,Cleanb) Cell(a,v,Cleanb) MC23<br />

Cell(a,v,Dirtyb) Cell(a,v,Dirtyb) MC24<br />

Cell(a,v,Cleanw) Cell(a,v,Cleanw) MC25<br />

Cell(a,v,Dirtyw) Cell(a,v,Dirtyw) MC26<br />

Cell(a,v,Cleanm) hDownmw,ai!H Cell(a,v,Cleanw) MC27<br />

Cell(a,v,Dirtym) hDownVmw,a,vi!H Cell(a,v,Cleanw) MC28<br />

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

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

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

Figure 7.12: <strong>Cache</strong> Engine Rules <strong>of</strong> <strong>Cache</strong>t<br />

This is because the cache has already downgraded the cell before the downgrade request<br />

is received.<br />

7.4.3 Memory Engine Rules <strong>of</strong> <strong>Cache</strong>t<br />

Figure 7.13 de nes the memory engine rules <strong>of</strong> <strong>Cache</strong>t. The memory engine rules consist <strong>of</strong><br />

voluntary rules <strong>and</strong> m<strong>and</strong>atory rules. An incoming message can be processed or stalled when<br />

it is received. When a message is processed, it is removed from the incoming queue when<br />

a message is stalled, it remains in the incoming queue for later processing. Note that only<br />

<strong>Cache</strong>Req messages can be stalled a stalled message cannot block following messages from<br />

being processed.<br />

149

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

Saved successfully!

Ooh no, something went wrong!