Quantitative principles, instruction set design, methods for performance improvements, pipelining, multiple instruction issue, dynamic scheduling, branch prediction, memory systems, caches, multi-core, multiple views of the design space, other advanced architectures. Credit will be given for only one of CPSC 313 or CPEN 411. [3-0-2]
In this course we study how computers are designed. First we learn about the microarchitecture of a single microprocessor ―core‖ and then we learn how multiple such ―cores‖ are put together into a larger ―multi-core‖ microprocessor. We learn the mechanisms used within microprocessors to improve performance given a fixed implementation technology (a recent example being 45 nm silicon used to manufacture microprocessors from Intel and AMD). We learn how to apply techniques used in designing computer systems at both the microarchitecture and architecture level. If you end up creating software for a living, this course will help you by providing the understanding required to write software that takes full advantage of modern hardware. If you end up designing hardware for a living (whether a microprocessor or any other digital system) this course will help you by providing a framework for understanding how hardware design affects overall system performance. The course combines both theoretical and practical components and students will be evaluated on their proficiency in both aspects.
Computer Architecture: A Quantitative Approach 4th Edition, John L. Hennessy and David A. Patterson, Morgan Kaufmann, 2006.
|CPEN 311 – Digital Systems Design|
|CPEN 312 – Digital Systems and Microcomputers|