computer organization cs224
DESCRIPTION
Computer Organization CS224. Fall 2012 Lessons 33 & 34. Branch Hazards. If branch outcome determined in MEM. §4.8 Control Hazards. Flush these instructions (Set control values to 0). PC. Reducing Branch Delay. Move hardware to determine outcome to ID stage Target address adder - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/1.jpg)
Computer OrganizationCS224
Fall 2012
Lessons 33 & 34
![Page 2: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/2.jpg)
Branch Hazards
If branch outcome determined in MEM
§4.8 Control H
azards
PC
Flush theseinstructions(Set controlvalues to 0)
![Page 3: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/3.jpg)
Reducing Branch Delay
Move hardware to determine outcome to ID stage
Target address adder Register comparator
Example: branch taken36: sub $10, $4, $840: beq $1, $3, 7 # PC + 4 + (7x4) = 7244: and $12, $2, $548: or $13, $2, $652: add $14, $4, $256: slt $15, $6, $7 ...72: lw $4, 50($7)
![Page 4: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/4.jpg)
Example: Branch Taken
![Page 5: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/5.jpg)
Example: Branch Taken
![Page 6: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/6.jpg)
Data Hazards for Branches
If a comparison register is a destination of 2nd or 3rd preceding ALU instruction
…
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
add $4, $5, $6
add $1, $2, $3
beq $1, $4, target
Can resolve using forwarding
![Page 7: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/7.jpg)
Data Hazards for Branches
If a comparison register is a destination of preceding ALU instruction or 2nd preceding load instruction
Need 1 stall cycle
beq stalled
IF ID EX MEM WB
IF ID EX MEM WB
IF ID
ID EX MEM WB
add $4, $5, $6
lw $1, addr
beq $1, $4, target
![Page 8: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/8.jpg)
Data Hazards for Branches
If a comparison register is a destination of immediately preceding load instruction
Need 2 stall cycles
beq stalled
IF ID EX MEM WB
IF ID
ID
ID EX MEM WB
beq stalled
lw $1, addr
beq $1, $0, target
![Page 9: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/9.jpg)
Dynamic Branch Prediction
In deeper and superscalar pipelines, branch penalty is more significant
Use dynamic prediction Branch prediction buffer (a.k.a. branch history table) Indexed by recent branch instruction addresses Stores outcome (taken/not taken) To execute a branch
- Check table, expect the same outcome
- Start fetching from fall-through or target
- If wrong, flush pipeline and flip prediction
![Page 10: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/10.jpg)
1-Bit Predictor: Shortcoming
Inner loop branches mispredicted twice!
outer: … …inner: … … beq …, …, inner … beq …, …, outer
Mispredict as “taken” on last iteration of inner loop (so will change prediction to “not taken”)
Then mispredict as “not taken” on first iteration of inner loop next time around
![Page 11: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/11.jpg)
2-Bit Predictor
Only change prediction on two successive mispredictions
![Page 12: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/12.jpg)
Calculating the Branch Target
Even with predictor, still need to calculate the target address
1-cycle penalty for a taken branch, if calculated in ID
Branch target buffer in IF stage Cache of target addresses Indexed by PC when instruction fetched
- If a hit, and if instruction is predicted to be “taken”, then PC can be loaded with the predicted target address. Thus, it can fetch the target instruction in next clock cycle, with no stall !
![Page 13: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/13.jpg)
Exceptions and Interrupts
“Unexpected” events requiring changein flow of control
Different ISAs use the terms differently
Exception Arises within the CPU
- e.g., undefined opcode, overflow, syscall, …
Interrupt From an external I/O controller
Dealing with them without sacrificing performance is hard
Read Section B.7 in Appendix
§4.9 Exceptions
![Page 14: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/14.jpg)
Handling Exceptions
In MIPS, exceptions managed by a System Control Coprocessor (CP0)
CP0 has own registers (EPC, Cause, Status, etc) and special instructions (mtc0, mfc0, eret). [Fig. B.10.1 and B-33 ]
Save PC of offending (or interrupted) instruction In MIPS: Exception Program Counter (EPC)
Save indication of the problem In MIPS: Cause register [Fig. B.7.2 ] 5-bit field for exception code
- 10 for undefined opcode, 12 for overflow
Jump to exception handler at 8000 0180
![Page 15: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/15.jpg)
An Alternate Mechanism
Vectored Interrupts Handler address determined by the cause
Example: Undefined opcode: C000 0000 Overflow: C000 0020 …: C000 0040
Instructions at the vectored addresses either Deal with the interrupt (in 32 bytes), or Jump to real handler
![Page 16: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/16.jpg)
Handler Actions
Read cause, and transfer to relevant handler
Determine action required
If restartable Take corrective action use EPC to return to program
Otherwise Terminate program Report error using EPC, Cause, …
![Page 17: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/17.jpg)
Exceptions in a Pipeline
Another form of control hazard
Consider overflow on add in EX stageadd $1, $2, $1 Prevent $1 from being changed Complete the earlier instructions Flush add and subsequent instructions Set Cause and EPC register values Transfer control to handler
Similar to mispredicted branch Use much of the same hardware
![Page 18: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/18.jpg)
Pipeline with Exceptions
![Page 19: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/19.jpg)
Exception Properties
Restartable exceptions Pipeline can flush the instruction Handler executes, then returns to the instruction
- Refetched and executed from scratch
PC saved in EPC register Identifies causing instruction Actually PC + 4 is saved
- Handler must adjust
![Page 20: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/20.jpg)
Exception Example
Exception on add in40 sub $11, $2, $444 and $12, $2, $5 # WB in cycle 648 or $13, $2, $6 # WB in cycle 7 4C add $1, $2, $150 slt $15, $6, $754 lw $16, 50($7)…
Handler80000180 sw $26, 1000($0) # 26=$k0 80000184 sw $27, 1004($0) # 27=$k1 … # (for OS)
![Page 21: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/21.jpg)
Exception Example
![Page 22: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/22.jpg)
Exception Example
Should be sw $26 here, and in Fig 4.67 !
![Page 23: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/23.jpg)
Multiple Exceptions
Pipelining overlaps multiple instructions Could have multiple exceptions at once
Simple approach: deal with exception from earliest instruction
Flush subsequent instructions “Precise” exceptions
In complex pipelines Multiple instructions issued per cycle Out-of-order completion Maintaining precise exceptions is difficult!
![Page 24: Computer Organization CS224](https://reader034.vdocuments.us/reader034/viewer/2022052401/56814e41550346895dbbafdb/html5/thumbnails/24.jpg)
Imprecise Exceptions
Just stop pipeline and save state Including exception cause(s)
Let the handler work out Which instruction(s) had exceptions Which to complete or flush
- May require “manual” completion
Simplifies hardware, but more complex handler software
Not feasible for complex multiple-issueout-of-order pipelines