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.

CRF-Storel-on-Invalid Rule<br />

Site(sache, ht,Storel(a,v)ipmb, mpb, proc) if a =2 sache<br />

! Site(Cell(a,v,Dirty) j sache, pmb, mpbjht,Acki, proc)<br />

CRF-Commit-on-Dirty Rule<br />

Sys(mem, Site(Cell(a,v,Dirty) j sache, ht,Commit(a)ipmb, mpb, proc) j sites)<br />

! Sys(mem[a:=v], Site(Cell(a,v,Clean) j sache, pmb, mpbjht,Acki, proc) j sites)<br />

CRF-Reconcile-on-Clean Rule<br />

Site(Cell(a,-,Clean) j sache, ht,Reconcile(a)ipmb, mpb, proc)<br />

! Site(sache, pmb, mpbjht,Acki, proc)<br />

It is obvious that the stalled instruction rules given above can be derived from CRF rules:<br />

CRF-Loadl-on-Invalid = CRF-<strong>Cache</strong> + CRF-Loadl<br />

CRF-Storel-on-Invalid = CRF-<strong>Cache</strong> + CRF-Storel<br />

CRF-Commit-on-Dirty = CRF-Writeback + CRF-Commit<br />

CRF-Reconcile-on-Clean = CRF-Purge + CRF-Reconcile<br />

3.2.2 Relaxed Execution Rules<br />

CRF gives precise conditions under which memory instructions can be reordered. In CRF, an<br />

instruction must be brought to the front <strong>of</strong> the processor-to-memory bu er before it can be<br />

executed. This constraint can be relaxed without a ecting program behaviors. For example, a<br />

Loadl instruction can be performed if there is no preceding Storel or Reconcile instruction to<br />

the same address. It is easy to derive the predicates under which a CRF instruction can be<br />

performed in the presence <strong>of</strong> other outst<strong>and</strong>ing instructions:<br />

Loadl(a): no preceding Storel(a,-) or Reconcile(a)<br />

Storel(a,-): no preceding Loadl(a), Storel(a,-) or Fence w(-,a)<br />

Commit(a): no preceding Storel(a,-)<br />

Reconcile(a): no preceding Fence r(-,a)<br />

Fencer (a,-): no preceding Loadl(a)<br />

Fencew (a,-): no preceding Commit(a)<br />

The relaxed execution rules below allow a memory instruction to be performed before its<br />

preceding instructions are completed:<br />

CRF-Relaxed-Loadl Rule<br />

Site(sache, pmb1ht,Loadl(a)ipmb2, mpb, proc)<br />

if Cell(a,v,-) 2 sache ^ Storel(a,-), Reconcile(a) =2 pmb1<br />

! Site(sache, pmb1pmb2, mpbjht,vi, proc)<br />

CRF-Relaxed-Storel Rule<br />

Site(Cell(a,-,-) j sache, pmb1ht,Storel(a,v)ipmb2, mpb, proc)<br />

if Loadl(a), Storel(a,-), Fence w(-,a) =2 pmb1<br />

! Site(Cell(a,v,Dirty) j sache, pmb1pmb2, mpbjht,Acki, proc)<br />

56

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

Saved successfully!

Ooh no, something went wrong!