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. This course will focus on high performance architectures and memory systems. Also, 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.