Computer Architecture and Design
The recommended textbook is "Computer Architecture: A Quantitative Approach" (Sixth Edition) by John Hennessy and David Patterson. However, you are not required to purchase this textbook to get the most out of the class. Given the rapidly evolving nature of computer architecture, a lot of the class contents will also be based on freely accessible research papers.
Specific Course Information:
2021-2022 Catalog Data: 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, data enters and cloud computing.d others.
Specific Goals for the Course:
Outcomes of Instruction: By the end of this course the student will be able to:
- Understand the fundamentals of computer architecture and system design.
- Appreciate and understand the various design issues and tradeoffs of computer design.
- Apply this knowledge to new computer architecture design problems with the context of balancing application requirements against technology constraints.
- Understand current trends and future directions of computer architecture.
Brief list of topics to be covered:
- Fundamentals of computer design (Week 1)
- Pipelining overview (Week 2)
- Memory hierarchy design (Week 3 -4)
- Instruction-level parallelism (Week 5 - 7)
- Thread-level parallelism/multiprocessor systems (Week 8 - 9)
- Heterogeneous multiprocessing (Week 10)
- Data-level parallelism (Week 11)
- Storage systems (Week 12 -13)
- Warehouse-scale computers (Week 14)
- Emerging computer architectures (Week 15)
Relationship to Student Outcomes
ECE 462 contributes directly to the following specific electrical and computer engineering student outcomes of the ECE department:
1. An ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics.
2. An ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors.
3. An ability to communicate effectively with a range of audiences
6. An ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions