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.

technique can be used to allow a cache to retrieve a data copy directly from another cache.<br />

This can reduce the latency to service cache misses for programs that exhibit access patterns<br />

such as the producer-consumer pattern.<br />

The <strong>Cache</strong>t protocol is designed for NUMA systems. It can be extended with COMA-like<br />

coherence operations to provide more adaptivity. This allows a cache to switch between NUMA<br />

<strong>and</strong> COMA styles for the same memory region dynamically.<br />

Heuristic Policies The <strong>Cache</strong>t protocol provides enormous adaptivity for programs with var-<br />

ious access patterns. Arelevant question is what mechanisms <strong>and</strong> heuristic policies are needed<br />

to discover the access patterns <strong>and</strong> how appropriate heuristic information can be conveyed to<br />

protocol engines. Access patterns can be detected through compiler analysis or runtime statis-<br />

tic collection. The <strong>Cache</strong>t protocol de nes a framework in which various heuristic policies can<br />

be examined while the correctness <strong>of</strong> the protocol is always guaranteed. Customized protocols<br />

can be built dynamically with guaranteed soundness <strong>and</strong> liveness.<br />

Access patterns can also be given by the programmer as program annotations. The voluntary<br />

rules <strong>of</strong> <strong>Cache</strong>t represent a set <strong>of</strong> coherence primitives that can be safely invoked by programmers<br />

whenever necessary. Programmers can therefore build application speci c protocols by selecting<br />

appropriate coherence primitives. The primitive selection is just a performance issue, <strong>and</strong> the<br />

correctness <strong>of</strong> the system can never be compromised, regardless <strong>of</strong> when <strong>and</strong> how the primitives<br />

are executed.<br />

Automatic Veri cation <strong>and</strong> Synthesis <strong>of</strong> <strong>Protocols</strong> When a system or protocol has<br />

many rewriting rules, the correctness pro<strong>of</strong>s can quickly become tedious <strong>and</strong> error-prone. This<br />

problem can be alleviated by the use <strong>of</strong> theorem provers <strong>and</strong> model checkers. We are currently<br />

using theorem provers such as PVS [95, 108] in our veri cation e ort <strong>of</strong> sophisticated protocols<br />

such as the complete <strong>Cache</strong>t protocol. Theorem provers are usually better at proving things<br />

correct than at nding <strong>and</strong> diagnosing errors. Therefore, it can also be useful to be able to do<br />

initial \sanity checking" using nite-state veri ers such as Murphi [35] or SPIN [59]. This <strong>of</strong>ten<br />

requires scaling down the example so that it has a small number <strong>of</strong> nite-state processes.<br />

TRS descriptions, augmented with proper information about the system building blocks,<br />

hold the promise <strong>of</strong> high-level synthesis. A TRS compiler [58] compiles high-level behavioral<br />

descriptions in TRSs into Verilog that can be simulated <strong>and</strong> synthesized using commercial<br />

tools. This can e ectively reduce the hardware design hurdle by allowing direct synthesis <strong>of</strong><br />

TRS descriptions. We are currently exploring hardware synthesis <strong>of</strong> cache coherence protocols<br />

based on their TRS speci cations.<br />

165

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

Saved successfully!

Ooh no, something went wrong!