Title: Elementary Microarchitecture Algebra
1Elementary Microarchitecture Algebra
- John Matthews and John Launchbury
- Oregon Graduate Institute
2Hawk Goals
- Develop specifications that are clear and
concise - Simulate the specifications, both concretely and
symbolically - Formally verify specifications at the source-code
level
3Algebraic Verification
- Developed a domain-specific algebra for
microarchitectures - Proved equational laws that hold between
microarchitecture components - We simplify pipelines using these laws while
preserving functional (cycle-accurate) behavior - But clock cycle period may change!
4Transactions
- Group data and control information together
- Transactions - containing destinations, sources,
and operations - flow through the model - Decide control locally whenever possible
R3 lt- Add R1 R2
16
5
11
5Example The SuperSimple Pipeline
Reg
ALU
Reference machine
- Each transaction is completed in one (long) clock
cycle - Results are written back to register file on the
next clock cycle
6Example The SuperSimple Pipeline
Reg
ALU
Reference machine
R3 lt- Add R1 R2
-
-
-
7Example The SuperSimple Pipeline
Reg
ALU
Reference machine
R3 lt- Add R1 R2
R3 lt- Add R1 R2
-
-
-
-
5
11
8Example The SuperSimple Pipeline
Reg
ALU
Reference machine
R3 lt- Add R1 R2
R3 lt- Add R1 R2
R3 lt- Add R1 R2
-
-
-
-
5
11
16
5
11
9Example The SuperSimple Pipeline
Reg
ALU
Reference machine
R3 lt- Add R1 R2
R3 lt- Add R1 R2
R3 lt- Add R1 R2
-
-
-
-
5
11
16
5
11
R3 lt- Add R1 R2
16
5
11
10Example The SuperSimple Pipeline
Reg
ALU
Reference machine
Reg
ALU
Pipelined machine
11Verifying SuperSimple
- Pipelined machine should behave the same as
reference machine, except the pipelined machine
has one more cycle of latency
Reg
ALU
Reg
ALU
12Verifying SuperSimple
- We incrementally simplify the pipeline
- Use local algebraic laws, each proved by
induction over time
Reg
ALU
Reg
ALU
13Circuit Duplication Law
- We can always duplicate a circuit without
changing its functional behavior
F
F
F
14Retiming the Pipeline
- We first move delay circuits forward, using the
circuit duplication law
Reg
ALU
Reg
ALU
15Retiming the Pipeline
- We first move delay circuits forward, using the
circuit duplication law
Reg
ALU
Reg
ALU
16Retiming the Pipeline
- We first move delay circuits forward, using the
circuit duplication law
Reg
ALU
Reg
ALU
17Time-Invariance Laws
- Delay circuits can be moved across time-invariant
circuits without changing behavior
ALU
ALU
18Retiming the Pipeline
- Apply time-invariance laws to continue moving
delay circuits
Reg
ALU
Reg
ALU
19Retiming the Pipeline
- Apply time-invariance laws to continue moving
delay circuits
Reg
ALU
Reg
ALU
20Retiming the Pipeline
- Apply time-invariance laws to continue moving
delay circuits
Reg
ALU
Reg
ALU
21Removing Forwarding Logic
- The register-bypass laws allow us to remove a
bypass circuit on the output of a registerFile
Reg
Reg
Reg
Reg
22Removing Forwarding Logic
- Apply register-bypass law to remove bypass circuit
Reg
ALU
Reg
ALU
23Removing Forwarding Logic
- Apply register-bypass law to remove bypass circuit
Reg
ALU
Reg
ALU
24Removing Forwarding Logic
Reg
ALU
Reg
ALU
25Removing Forwarding Logic
Reg
ALU
Reg
ALU
26Removing Forwarding Logic
Reg
ALU
Reg
ALU
27Removing Forwarding Logic
Reg
ALU
Reg
ALU
28Removing Forwarding Logic
Reg
ALU
Reg
ALU
29Removing Forwarding Logic
Reg
ALU
Reg
ALU
30Removing Forwarding Logic
Reg
ALU
Reg
ALU
31Simplification Complete!
- Pipeline has been reduced to reference machine,
but delayed by one clock cycle
Reg
ALU
Reg
ALU
32Simplifying Stalling Pipelines
- More complex pipelines often have to stall to
resolve hazards or mis-speculation - A stalling pipeline wont be cycle-accurate with
respect to a reference machine - We still simplify as much as possible
- Then use other verification techniques on
simplified pipeline - Simplified pipeline should be easier to verify
33The SomewhatSimple Pipeline
- Resolves mem-alu data hazards by stalling
- Resolves branch mispredictions by squashing
misp ?
hazard?
ICache
Reg
ALU
Mem
Kill
34misp ?
hazard?
ICache
Reg
ALU
Mem
Kill
Original Pipeline
35misp ?
hazard?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
36misp ?
hazard?
ICache
Reg
ALU
Mem
Kill
Various Retiming Laws
Simplifying pipeline .....
37misp ?
hazard?
ICache
Reg
ALU
Mem
Kill
Various Retiming Laws
Simplifying pipeline .....
38hazard?
misp ?
ICache
ALU
Mem
Reg
Kill
Simplifying pipeline .....
39hazard?
misp ?
ICache
ALU
Mem
Reg
Kill
Simplifying pipeline .....
40misp ?
hazard?
ICache
ALU
Mem
Reg
Kill
Simplifying pipeline .....
41hazard?
misp ?
ICache
ALU
Mem
Reg
Kill
Simplifying pipeline .....
42hazard?
misp ?
ICache
ALU
Mem
Reg
Kill
Simplifying pipeline .....
43hazard?
misp ?
ICache
ALU
Mem
Reg
Kill
Simplifying pipeline .....
44hazard?
misp ?
ICache
ALU
Mem
Reg
Kill
Simplifying pipeline .....
45hazard?
misp ?
ICache
ALU
Mem
Reg
Kill
Simplifying pipeline .....
46hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
47hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
48hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
49hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
50hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
51hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
52hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
53hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
54hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
55hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
56hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
57hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
58Projection Laws
- Projections are circuits that reset selected
transaction fields to default values - Used to indicate that only a portion of a
transaction is needed - Also used to capture constraints holding on a
wire - Projections can express conditional laws
ICache
ICache
br
59More Projection Laws
br
misp ?
misp ?
hazard?
hazard?
ctrl
ctrl
60hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Various Projection Laws
Simplifying pipeline .....
61br
hazard?
misp ?
br
ICache
Reg
ALU
Mem
Kill
Various Projection Laws
Simplifying pipeline .....
62br
hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
63br
hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
64hazard?
misp ?
br
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
65Conditional Laws
- Many components never modify branch info
- Expressed with branch projections
br
br
br
br
Mem
Mem
66hazard?
misp ?
br
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
67hazard?
misp ?
br
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
68hazard?
misp ?
br
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
69br
hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
70br
hazard?
misp ?
br
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
71hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
72Hazard Projection
- Kill logic guarantees no data hazards on output
wire - H is a sequential circuit projecting out all
hazards
hazard?
hazard?
H
Kill
Kill
73Hazard-Bypass Law
- Conditional law that allows us to remove
forwarding logic between pipeline stages - But only if no hazards occur on the input
- Applicable to any two execution-unit like stages
Exec1
Exec2
H
Exec1
Exec2
H
74hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
75hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
76hazard?
misp ?
ICache
Reg
ALU
Mem
H
Kill
Simplifying pipeline .....
77hazard?
misp ?
ICache
Reg
ALU
Mem
H
Kill
Simplifying pipeline .....
78hazard?
misp ?
ICache
Reg
ALU
Mem
H
Kill
Hazard-bypass Law
Simplifying pipeline .....
79hazard?
misp ?
ICache
Reg
ALU
Mem
H
Kill
Hazard-bypass Law
Simplifying pipeline .....
80hazard?
misp ?
ICache
Reg
ALU
Mem
H
Kill
Simplifying pipeline .....
81hazard?
misp ?
ICache
Reg
ALU
Mem
H
Kill
Simplifying pipeline .....
82hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
83hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
84hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
85hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
86hazard?
misp ?
ctrl
ctrl
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
87hazard?
misp ?
ctrl
ctrl
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
88hazard?
misp ?
ctrl
ctrl
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
89hazard?
misp ?
ctrl
ctrl
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
90hazard?
misp ?
ctrl
ctrl
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
91hazard?
misp ?
ctrl
ctrl
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
92hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
93hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Register-bypass Law
Simplifying pipeline .....
94hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Register-bypass Law
Simplifying pipeline .....
95hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Register-bypass Law
Simplifying pipeline .....
96hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
97hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Simplifying pipeline .....
98hazard?
misp ?
ICache
Reg
ALU
Mem
Kill
Final Pipeline
99Finishing the Verification
- Pipeline is as close to reference machine as
possible without breaking cycle-accurate behavior - Use other techniques to finish the verification
- Removal of forwarding and delay logic makes
verification simpler
100Related Work
- Recursive signal definitions (Johnson)
- Transactions (Aagaard Leeser)
- Retiming (Leiserson, Saxe et al)
- Ruby (Sheeran et al) Lustre (Halbwachs)
- Term-rewriting systems (Arvind et al)
- Much work on state-machine-based verification
(Birch Dill, McMillan, Hosabettu) - Unpipelining (Levitt Olukotun)
101Future Work
- Perform complete verification algebraically
- Create a remove-NOP component
- Discover appropriate simplification laws
- Extend verification to superscalar and
out-of-order microarchitectures - Add sequence numbers to transactions
- Create a reorder-transactions component
- Discover appropriate simplification laws
102Conclusions
- Algebraic verification can be used to simplify
microarchitectures prior to verification - Can reason about microarchitectures at the
source-code level - Laws can be expressed visually
- Using laws doesnt require theorem-prover
expertise - Proving laws does perhaps use decision
procedures - Discovering laws can be challenging
- But laws tend to be reusable across similar
pipelines
103Further Reading
- Most of these laws and transformations are
described in the following paper - Elementary Microarchitecture Algebra, by John
Matthews and John Launchbury, in CAV 99. - We have several other papers introducing Hawk and
describing microarchitecture verification based
on transactions. - All of these papers can be found
at http/www.cse.ogi.edu/PacSoft/Hawk