Computer Architecture and Design
Computer Architecture: A Quantitative Approach, J.L. Hennessy and D.A. Patterson, 5th Edition. Morgan Kaufmann Publishers, 2011.
Other reading material will be either presented in class or made available online.
This course aims to provide a strong foundation for students to understand modern computer system architecture and to apply these insights and principles to future computer designs. It provides basic knowledge, fundamental concepts, design techniques and trade-offs, machine structures, technology factors, software implications, and evaluation methods and tools required for understanding and designing modern computer architectures, including multicores, embedded systems and parallel systems.
The course is structured around the three primary building blocks of general-purpose computing systems: processors, memories, and networks.
The first part of the course focuses on the fundamentals of each building block. Topics include processor microcoding and pipelining; cache microarchitecture and optimization; and network topology, routing, and flow control.
The second part goes into more advanced techniques and will enable students to understand how these three building blocks can be integrated to build a modern computing system. Topics include superscalar execution; branch prediction; out-of-order execution; register renaming and memory disambiguation; VLIW, vector and multithreaded processors; memory protection, translation and virtualization; and memory synchronization, consistency and coherence.
The third part addresses parallel computing, including multicore architectures, datacenters and cloud computing, and others.
Graduate-level students will be required to complete a term paper and extra homework.
Intended to provide students with an in-depth study of computer architecture and design. Provides a basic knowledge and ability required for understanding and designing standard and novel computer architectures. Topics include design methodologies at various levels, instruction set design, ALU design, memory organization and design, cache design, virtual memories, interleaved memories, associative memories, control organization and design, hardwired control, micro-programmed control, pipelining, superscalar and super-pipelining, RISC design, vector processing, and others.
- Homework: 4-6 homework problem sets
- Exams: 2 in-class exams
- Project: 1 semester-long project completed in 3 phases
- Computer usage: Assembly and C programming exercises