Computer Science 252: Graduate Computer Architecture

Fall 2007

Prof. Krste Asanović

Lectures: Tuesday and Thursday, 9:30-11AM, 203 McLaughlin

Course Info
Computer architecture, the art of designing hardware to run software, is a vibrant and ever changing field. This course will attempt to convey this excitement to students. Students will learn about styles of computer implementation and organization from a historical and modern perspective. We emphasize the broad array of factors that influence architecture including technology, applications, and software systems. We describe a wide range of architectural mechanisms and show how they arose given the design constraints at the time, and how old ideas can become attractive again as technology and applications change. Our goal is to help you understand not just the what but also the why and the why now behind the various mechanisms to prepare you for future developments.

We will cover traditional foundations such as pipelining, instruction-level parallelism (superscalar and VLIW), vector processing, multithreading, memory hierarchies, and input/output architectures. The course will also examine contemporary developments in chip-scale multiprocessors (multicore/manycore) in the context of earlier work on cache coherency and memory models, communication networks, and synchronization mechanisms. We will also discuss the impact of technology scaling trends including power consumption, variability, and reliability.