PipeCheck: Specifying and Verifying Microarchitectural Enforcement of Memory Consistency Models

Daniel Lustig, Michael Pellauer, Margaret Martonosi
<span title="">2014</span> <i title="IEEE"> <a target="_blank" rel="noopener" href="https://fatcat.wiki/container/sbn7zssnbfcjpjzmgy24brukwi" style="color: black;">2014 47th Annual IEEE/ACM International Symposium on Microarchitecture</a> </i> &nbsp;
We present PipeCheck, a methodology and automated tool for verifying that a particular microarchitecture correctly implements the consistency model required by its architectural specification. PipeCheck adapts the notion of a "happens before" graph from architecture-level analysis techniques to the microarchitecture space. Each node in the "microarchitecturally happens before" (µhb) graph represents not only a memory instruction, but also a particular location (e.g., pipeline stage) within the
more &raquo; ... icroarchitecture. Architectural specifications such as "preserved program order" are then treated as propositions to be verified, rather than simply as assumptions. PipeCheck allows an architect to easily and rigorously test whether a microarchitecture is stronger than, equal in strength to, or weaker than its architecturally-specified consistency model. We also specify and analyze the behavior of common microarchitectural optimizations such as speculative load reordering which technically violate formal architecture-level definitions. We evaluate PipeCheck using a library of established litmus tests on a set of open-source pipelines. Using PipeCheck, we were able to validate the largest pipeline, the OpenSPARC T2, in just minutes. We also identified a bug in the O3 pipeline of the gem5 simulator. 47th Annual IEEE/ACM International Symposium on Microarchitecture, 2014
<span class="external-identifiers"> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.1109/micro.2014.38">doi:10.1109/micro.2014.38</a> <a target="_blank" rel="external noopener" href="https://dblp.org/rec/conf/micro/LustigPM14.html">dblp:conf/micro/LustigPM14</a> <a target="_blank" rel="external noopener" href="https://fatcat.wiki/release/a5gu36zgsfhipimbsommyuwbn4">fatcat:a5gu36zgsfhipimbsommyuwbn4</a> </span>
<a target="_blank" rel="noopener" href="https://web.archive.org/web/20160506021257/http://mrmgroup.cs.princeton.edu/papers/dlustig_MICRO14header.pdf" title="fulltext PDF download" data-goatcounter-click="serp-fulltext" data-goatcounter-title="serp-fulltext"> <button class="ui simple right pointing dropdown compact black labeled icon button serp-button"> <i class="icon ia-icon"></i> Web Archive [PDF] <div class="menu fulltext-thumbnail"> <img src="https://blobs.fatcat.wiki/thumbnail/pdf/94/9e/949e7d81a0b4fc04fbb0cdd320137664a726989f.180px.jpg" alt="fulltext thumbnail" loading="lazy"> </div> </button> </a> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.1109/micro.2014.38"> <button class="ui left aligned compact blue labeled icon button serp-button"> <i class="external alternate icon"></i> ieee.com </button> </a>