Computer Architecture
Description
This course presents the core concepts of computer architecture and design ideas embodied in many machines, and emphasises a quantitative approach to cost/performance tradeoffs. This course concentrates on uniprocessor systems. A few machines are studied to illustrate how these concepts are implemented; how various tradeoffs that exist among design choices are treated; and how good designs make efficient use of technology. Future trends in computer architecture are also discussed. Topics covered may include fundamentals of computer design; performance and cost; instruction set design and measurements of use; pipeline design techniques; memory-hierarchy design; Input-output subsystems;
Learning outcomes for the course:
Upon the completion of this course, the student should be able to
- Design cache, memory hierarchy, and virtual memory using different techniques to improve cost/performance ratio.
- Demonstrate how dynamic scheduling and speculative execution can improve the system performance and explain how it is implemented in modern processors.
- Evaluate different design alternatives and make quantitative/qualitative argument for one design over the other.
- Identity the different types of parallelism (data, instruction, thread, transaction) for a given application.
- Compare and evaluate different techniques (such as multithreading, multicore, or vector) to improve CPU performance.
Lecture Times
- Section E: Tuesdays and Thursdays, 10:00am - 11:15pm, HNE 031