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