CS251a: Advanced Computer Architecture

About / Contact

Description

Computer architecture is the glue that binds the worlds of hardware and software. Developing new architectures is the art and science of understanding the intrinsic properties of applications, developing and interconnecting hardware components to meet cost and performance goals, and creating abstractions that enable efficient use of hardware without sacrificing generality. This course qualitatively and quantitatively explores the tradeoffs of architecture and hardware design for general purpose computers. For example, we will learn how applications exhibit different forms of instruction-level parallelism, and how these are exploited with concurrent execution, even though the OS remains completely oblivious. We will study evolution of ISAs, how VLSI technology has influenced processor design, how modern out-of-order pipelines work, and how locality is exploited in to create efficient memory systems.

This course will also emphasize evaluation methods, including simulation and analytical modeling, and will teach the use through homeworks with gem5. The final will also typically involve gem5.

Prerequisites

It is recommended that you have taken the equivalent of UCLA’s CS151b. Expected background includes basic knowledge of ISAs and architecture principles, hardware pipelines, and operating systems. Ie. if push comes to shove, it is expected that you could design a simple low-performance processor.

All of that said, we will spend time starting with simple concepts, and working our way through to the more advanced architecture/microarchitecture concepts.