Computer Architecture and Design
Technical Elective for ECE
ECE 462 -- Computer Architecture and Design (3 units)
Description: 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.
Grading: Regular grades are awarded for this course: A B C D E.
Usually offered: Fall.
Computer Architecture: A Quantitative Approach, J. L. Hennessy and D. A. Patterson, Fifth Edition, Morgan Kaufmann Publishers, 2011, and other reading material will be either 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 - The Changing Face of Computing and the Task of the Computer Designer, Technology Trends, Measuring and Reporting Performance, Principles of Computer Design [2 lectures].
- Instruction Level Parallelism and Its Exploitation - Basic Compiler Techniques for Exposing ILP, Reducing Branch Costs with Prediction, Overcoming Data Hazards with Dynamic Scheduling, Dynamic Scheduling: Examples and the Algorithm [5 lectures].
- Data-Level Parallelism in Vector, SIMD, and GPU Architectures – Vector Architecture, SIMD Instruction Set Extensions for Multimedia, Graphics Processing Units, Detecting and Enhancing Lop Level Parallelism [4 lectures].
- Multiprocessors and Thread-Level Parallelism - Symmetric Shared-Memory Architectures, Distributed Shared Memory and Directory-Based Coherence, Models of Memory Consistency: An Introduction [6 lectures].
- Memory Hierarchy Design – Advanced Optimizations of Cache Performance, Virtual Memory and Virtual Machines, The Design of Memory Hierarchies [4 lectures].
- Warehouse-Scale Computers to exploit Request-Level and Data-Level Parallelism – Programming Models and Workloads , Computer Architecture of Warehouse-Scale Computers, Cloud Computing [2 lectures]
- Storage Systems - 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 [3 lectures].
- Interconnection Networks - Interconnecting Two vs Many Devices, Network Topology , Network Routing, Arbitration, and Switching [2 lectures].
Two 75-minute lecture sessions per week.
4-6 homework problem sets during semester.
Two in-class examinations.
Semester long project completed in 3 phases
Computer Usage: Assembly and C programming exercises
Relationship to Student Outcomes:
a) an ability to apply knowledge of mathematics, science, and engineering (High)
b) an ability to design and conduct experiments, as well as to analyze and interpret data (High)
c) 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)
e) an ability to identify, formulate, and solve engineering problems (High)
g) an ability to communicate effectively (Medium)
i) a recognition of the need for, and an ability to engage in life-long learning (Medium)
j) a knowledge of contemporary issues (High)
k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering