This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
buzzword [2015/02/11 19:20] rachata |
buzzword [2015/02/13 19:19] rachata |
||
---|---|---|---|
Line 414: | Line 414: | ||
- | ===== Lecture 11 (2/11 Mon.) ===== | + | ===== Lecture 11 (2/11 Wed.) ===== |
* Geometric GHR length for branch prediction | * Geometric GHR length for branch prediction | ||
* Perceptron branch predictor | * Perceptron branch predictor | ||
- | * Multi-cycle executions (Different functional units take different number of cycles) | + | * Multi-cycle executions (Different functional units take different number of cycles) |
* Instructions can retire out-of-order | * Instructions can retire out-of-order | ||
* How to deal with this case? Stall? Throw exceptions if there are problems? | * How to deal with this case? Stall? Throw exceptions if there are problems? | ||
* Exceptions and Interrupts | * Exceptions and Interrupts | ||
* When they are handled? | * When they are handled? | ||
- | * Why are some interrupts should be handled right away? | + | * Why are some interrupts should be handled right away? |
* Precise exception | * Precise exception | ||
* arch. state should be consistent before handling the exception/interrupts | * arch. state should be consistent before handling the exception/interrupts | ||
Line 431: | Line 431: | ||
* Easier to restart the processes | * Easier to restart the processes | ||
* How to ensure precise exception? | * How to ensure precise exception? | ||
- | * Tradeoffs between each method | + | * Tradeoffs between each method |
* Reorder buffer | * Reorder buffer | ||
* Reorder results before they are visible to the arch. state | * Reorder results before they are visible to the arch. state | ||
Line 438: | Line 438: | ||
* Where to get the value from (forwarding path? reorder buffer?) | * Where to get the value from (forwarding path? reorder buffer?) | ||
* Extra logic to check where the youngest instructions/value is | * Extra logic to check where the youngest instructions/value is | ||
- | * Content addressible search | + | * Content addressible search (CAM) |
* A lot of comparators | * A lot of comparators | ||
* Different ways to simplify the reorder buffer | * Different ways to simplify the reorder buffer | ||
Line 448: | Line 448: | ||
* Future file (commonly used, along with reorder buffer) | * Future file (commonly used, along with reorder buffer) | ||
* Keep two set of register files | * Keep two set of register files | ||
- | * An updated value (Speculative), called fiture file | + | * An updated value (Speculative), called future file |
* A backup value (to restore the state quickly | * A backup value (to restore the state quickly | ||
* Double the cost of the regfile, but reduce the area as you don't have to use a content addressible memory (compared to ROB alone) | * Double the cost of the regfile, but reduce the area as you don't have to use a content addressible memory (compared to ROB alone) | ||
Line 460: | Line 460: | ||
* Advantages? | * Advantages? | ||
+ | ===== Lecture 12 (2/13 Fri.) ===== | ||
+ | * Renaming | ||
+ | * Register renaming table | ||
+ | * Predictor (branch predictor, cache line predictor ...) | ||
+ | * Power budget (and its importance) | ||
+ | * Architectural state, precise state | ||
+ | * Memory dependence is known dynamically | ||
+ | * Register state is not shared across threads/processors | ||
+ | * Memory state is shared across threads/processors | ||
+ | * How to maintain speculative memory states | ||
+ | * Write buffers (helps simplify the process of checking the reorder buffer) | ||
+ | * Overall OoO mechanism | ||
+ | * What are other ways of eliminating dispatch stalls | ||
+ | * Dispatch when the sources are ready | ||
+ | * Retired instructions make the source available | ||
+ | * Register renaming | ||
+ | * Reservation station | ||
+ | * What goes into the reservation station | ||
+ | * Tags required in the reservation station | ||
+ | * Tomasulo's algorithm | ||
+ | * Without precise exception, OoO is hard to debug | ||
+ | * Arch. register ID | ||
+ | * Examples in the slides | ||
+ | * Slides 28 --> register renaming | ||
+ | * Slides 30-35 --> Exercise (also on the board) | ||
+ | * This will be usefull for the midterm | ||
+ | * Register aliasing table | ||
+ | * Broadcasting tags | ||
+ | * Using dataflow |