Course Review for Midterm Exam
CS 441 Lecture, Dr. Lawlor
Just a reminder: the midterm is in class this Tuesday, October 19.
What we've covered so far:
- History of computing: gears, relays, vacuum tubes, transistors, chips, cellular automata, DNA?
- Transistors, and building logic gates from FET transistors. Power usage both static (leakage) & dynamic (switching).
- Arithmetic circuitry, including overflow.
- Basic CPU closed-loop circuit: read from registers, operate, write back.
- Instruction encoding choices: CISC vs. RISC, and in particular B5000 vs x86 vs x86-64 vs MIPS.
- Pipelining: latches between pipeline stages, operand forwarding (register bypass), hazards + stalls.
- Superscalar dependency analysis (RAW, WAR, WAW) and issuing multiple instructions at once.
- Superscalar in practice:
- Large instruction prefetch window
- Branch prediction & branch speculation
- Register renaming to eliminate WAR and WAW dependencies
- Out of order execution, in-order instruction retirement
- Storage hierarchy design:
- Load and store queues, with interlinks between them
- L1+L2+L3 cache
- Tags and the cache lookup process
- direct-mapped vs associative cache, and programmer-visible effects
- SSE vector floats:
- basic operations
- SoA vs AoS
- SSE per-float branching trick
- GPU-style SIMD parallel languages