Description -- This course covers advanced concepts and principles of computer architecture and design. It will start by examining the changing face of computer architecture and the task of the computer designer. Quantitative principles of computer design will be applied to the evaluation of performance and reliability. Topics covered include: Exploitation of Instruction Level Parallelism in modern processors, including the hazards of instruction scheduling and the limits of ILP; advanced techniques for exploiting ILP, in particular support for thread-level parallelism; multiprocessors and thread-level parallelism; memory hierarchy design, including cache optimization; and advanced topics in storage systems. Topics will be illustrated using case studies of actual processor/system designs.