A comparison of two verification methods for speculative instruction execution
T. Arons and A. Pnueli
In this paper we describe and compare two methodologies for verifying
the correctness of
a speculative out-of-order execution system with interrupts.
Both methods are deductive (we use PVS) and are based on refinement.
The first proof is by direct refinement to a sequential system; the
second proof combines refinement with induction over the number of
retirement buffer slots.
TACAS00: Tools and Algorithms for the Construction and Analysis of Systems
Gzipped PostScript
PDF
PVS dump files
We provide the PVS dump files for the
direct proof
and for the
inductive proof.
Both include a file called "allTheories" which includes all the necessary
files and gives a brief explanation of the different files.
Notes:
-
We used PVS version 2.2
-
The speculative design, called DES in the paper, is referred to as
"Spec" in the proofs.
-
The proof of "liveness" and that the split transition relation does
not exclude any behaviours of the joint transition relation is
identical for the two systems (modulo auxiliary variables) and is
included in the dump file for the direct proof (as live.pvs and
SplitEqual.pvs, respectively).
-
When running the indirect proof, one may get "extra" type-checks not
included in the given proofs. This occurs if RefB or RefMapB is in the
context when one is running other theories (Ref1 etc). It is therefore
suggested that these files be left for last (the logical order).
If such typechecks do occur, exit PVS, erase the .pvscontext file, and
start the troubled proof again.
Please refer any queries to
Tamarah.