Computer Architecture

Computer Architecture
The purpose of this course is to give you a broad understanding of the concepts behind several advanced microarchitectural features in today’s microprocessors and to illustrate those concepts with appropriate (usually modern) machine examples. We will cover the rationale for and the designs of strategies for instruction sets, dynamic branch prediction, multiple-instruction issue, dynamic (out-of-order) instruction scheduling, multithreaded processors, shared memory multiprocessors, and, if there is time, dataflow machines. Some of these topics require some understanding from what is normally thought of as undergraduate material; for these, we’ll briefly review that material, and then go on from there.

You will augment your knowledge of the architectural schemes by doing experimental studies that examine and compare the performance of several alternative implementations for a particular feature. Here you will learn how to design architectural experiments, how to choose metrics that best illustrate a feature’s performance, how to analyze performance data and how to write up your experiment and results - all skills computer architects, and, actually, researchers and developers in any applied subfield of computer science, use on a regular basis.