Computer Architecture deals with the art and science of designing modern computer systems, defines the HW/SW interface (Instruction Set Architecture), and codifies a large body of implementation techniques for achieving performance improvement and power efficiency. This graduate level course covers the three main subsystems of Processor, Memory, and I/O, and addresses Performance and Power optimizations. Processor design is the primary focus covering: pipelined and superscalar processor design; multi-core and multi-processor systems; special-purpose processors. Memory and I/O topics include: memory hierarchy and virtual memory; shared-memory model and cache coherence; I/O devices and storage systems. Performance and Power topics include: instruction-level, memory-level and thread-level parallelisms; instruction flow and data flow optimizations; performance vs. power tradeoffs; iron laws governing performance, power, and energy efficiency.
Prerequisite: undergraduate course on Computer Architecture, e.g. 18-447 or equivalent.