Computer Architecture and Design
ECE 462 -- Computer Architecture and Design (3 units)
Description: 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.
Grading: Regular grades are awarded for this course: A B C D E
Hennessy, John L. and David A Patterson. Computer Architecture: A Quantitative Approach. 5th Ed. Morgan Kaufmann. 2011.
Other reading material will be presented in the class or available as online papers.
Course Learning Outcomes:
By the end of this course, the student will be able to:
- Understand the techniques of quantitative analysis and evaluation of modern computing systems.
- Articulate the cost-performance-energy trade-offs and good engineering design.
- Design and implement major component subsystems of high performance computers: pipelining, instruction level parallelism, memory hierarchies, input/output, and network-oriented interconnections.
- Undertake a major computing system analysis and design.
- Identify the types of parallelism (data, instruction, thread, request-levels) that could be extracted from a given application.
- Identify the hardware architecture type that matches with the program architecture for a given application.
- Evaluate the close relation between the instruction set architecture design, datapath design, and algorithm design.
- Evaluate and analyze the state of the art multicore architectures including the datapath and memory subcomponents along with the hardware and software structures enabling cache coherence, dynamic scheduling and out-of-order execution.
- Quantify and the discuss the design trade-offs involved in warehouse scale computers in terms of cost, energy-efficiency, reliability, and network structure.
- Identify the relationship between the programming models, workloads and architectures for warehouse-scale computers (cloud computing).
Fundamentals of quantitative design and analysis (2 lectures)
- The changing face of computing
- The task of the computer designer
- Technology trends
- Measuring and reporting performance
- Principles of computer design
Instruction level parallelism and its exploitation (5 lectures)
- Basic compiler techniques for exposing ILP
- Reducing branch costs with prediction
- Overcoming data hazards with dynamic scheduling
- Dynamic scheduling: examples and the algorithm
Data-level parallelism in vector, SIMD, and GPU architectures (4 lectures)
- Vector architecture
- SIMD instruction set extensions for multimedia
- Graphics Processing Units (GPU)
- Detecting and enhancing lop level parallelism
Multiprocessors and thread-level parallelism (6 lectures)
- Symmetric shared memory architectures
- Distributed shared memory and directory-based coherence
- Models of memory consistency
Memory hierarchy design (4 lectures)
- Advanced optimizations of cache performance
- Virtual memory and virtual machines
- The design of memory hierarchies
Warehouse-scale computers (2 lectures)
- Their use in exploiting request-level and data-level parallelism
- Programming models and workloads
- Computer architecture of warehouse-scale computers
- Cloud computing
Storage systems (3 lectures)
- Definition and examples of real faults and failures
- I/O performance
- Reliability measures and benchmarks
- A little queuing theory
- Designing and evaluating an I/O system
- The Internet Archive Cluster
Interconnection networks (2 lectures)
- Interconnecting two vs many devices
- Network topology
- Network routing
Two, 75-minute lectures per week
Relationship to Student Outcomes:
ECE 462 contributes directly to the following specific Electrical and Computer Engineering Student Outcomes of the ECE department:
- an ability to apply knowledge of mathematics, science and engineering (High)
- an ability to design and conduct experiments, as well as to analyze and interpret data (High)
- an ability to design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability,, and sustainability (High)
- an ability to identify, formulate and solve engineering problems (High)
- an ability to communicate effectively (Medium)
- a recognition of the need for, and an ability to engage in life-long learning (Medium)
- a knowledge of contemporary issues (High)
- an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice (High)