An overview of pipelining, MIPS pipelining implementation, pipelined datapath design, pipelined control design, data hazards, forwarding, stalls, control/branch hazards, static branch prediction, reducing branch delay, dynamic branch prediction, delayed branch, exceptions, and exception handling in pipelining, introduction to advanced pipelining, instruction-level parallelism, static and dynamic multiple issue, the concept of speculation, exploiting memory hierarchy, the basics of caches, measuring and improving cache performance, virtual memory, a common framework for memory hierarchies, disc storage and dependability, buses and other connections between processors, memory and I/O devices, interfacing I/O devices to the processor, memory and operating system, I/O system design.