This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
buzzword [2014/01/29 19:14] rachata |
buzzword [2014/01/31 19:15] rachata |
||
---|---|---|---|
Line 275: | Line 275: | ||
===== Lecture 7 (1/29 Wed.) ===== | ===== Lecture 7 (1/29 Wed.) ===== | ||
+ | |||
* Pipelining | * Pipelining | ||
* Limitations of the multi-programmed design | * Limitations of the multi-programmed design | ||
Line 304: | Line 305: | ||
* No-op (Bubbles in the pipeline) | * No-op (Bubbles in the pipeline) | ||
* Valid bits in the instructions | * Valid bits in the instructions | ||
+ | |||
+ | ===== Lecture 8 (1/31 Fri.) ===== | ||
+ | * Branch prediction | ||
+ | * Different types of data dependence | ||
+ | * Pipeline stalls | ||
+ | * bubbles | ||
+ | * How to handle stalls | ||
+ | * Stall conditions | ||
+ | * Stall signals | ||
+ | * Dependences | ||
+ | * Distant between dependences | ||
+ | * Data forwarding/bypassing | ||
+ | * Maintaining the correct dataflow | ||
+ | * Different ways to design data forwarding path/logic | ||
+ | * Different techniques to handle interlockings | ||
+ | * SW based | ||
+ | * HW based | ||
+ | * Profiling | ||
+ | * Static profiling | ||
+ | * Helps from the software (compiler) | ||
+ | * Superblock optimization | ||
+ | * Analyzing basic blocks | ||
+ | * How to deal with branches? | ||
+ | * Branch prediction | ||
+ | * Delayed branching (branch delay slot) | ||
+ | * Forward control flow/backward control flow | ||
+ | * Branch prediction accuracy | ||
+ | * Profile guided code positioning | ||
+ | * Based on the profile info. position the code based on it | ||
+ | * Try to make the next sequential instruction be the next inst. to be executed | ||
+ | * Trace cache | ||
+ | * Predicate combining (combine predicate for a branch instruction) | ||
+ | * Predicated execution (control dependence becomes data dependence) | ||
+ | * Definition of basic blocks | ||
+ | * Control flow graph |