Course Description.
This course provides students with a solid understanding of fundamental architectural techniques used to build today's high-performance processors and systems. Course topics include pipelining, superscalar, out of order execution, multithreading, caches, virtual memory, and multiprocessors. Some emphasis will be placed on hardware/software interaction to achieve performance. Issues affecting the nexus of architecture, compilers and operating systems will be briefly touched upon.
Nearly all engineers, regardless of sub-specialty, utilize programming in the course of their job; to write high performance computer programs, it is necessary to understand the underlying hardware that those programs will run on. Two-thirds of this course will focus on high performance architectures and memory systems. The final third of the course will focus on multiprocessors. Significant challenges face today's computer hardware industry. At the forefront of these challenges is the multi-core revolution. The transition from single processor designs to multi-core design requires hardware and software designers knowledgeable about a range of issues in parallel computing including hardware.
Course Outcomes. Students who successfully fulfills the course requirements will have demonstrated:
- an ability to understand the design of a pipelined CPU and cache hierarchy
- an ability to analyze and evaluate CPU and memory hierarchy performance
- an understanding of trade-offs in modern CPU design including issues affecting superscalar and dynamically scheduled architectures
- an understanding of hardware design of multiprocessors including cache coherence and synchronization
- experience with a complex simulation tool to study various microarchitectural features.
|