EEC170 - Introduction To Computer Architecture

4 units - Fall Quarter

Lecture: 3 hours

Discussion: 1 hour

Prerequisite: Course 180A; Course 70 or ECS50

Grading: Letter

Catalog Description: Introduces basic aspects of computer architecture, including computer performance measurement, instruction set design, computer arithmetic, pipelined/non-pipelined implementation, and memory hierarchies (cache and virtual memory). Presents a simplified Reduced Instruction Set Computer using logic design methods from the prerequisite course.

Relationship to Outcomes:
Students who have successfully completed this course should have achieved:

Course Outcomes ABET Outcomes
An ability to apply knowledge of mathematics, science, and engineering A
An ability to design and conduct experiments, as well as to analyze and interpret data B
An ability to identify, formulate, and solve engineering problems E
An ability to use the techniques, skills, and modern engineering tools necessary for engineering practice. K

Expanded Course Description:

  1. Computer Performance
    1. Measuring Performance
    2. Benchmark Selection
    3. Comparing and Summarizing Performance
  2. Instruction Sets
    1. Addressing
    2. Instruction Representation
    3. Branching
    4. Support for Procedures
    5. Complex Instructions
  3. Computer Arithmetic
    1. Integer Representation
    2. Addition and Subtraction
    3. Logical Operations
    4. ALU Design
    5. Multiplication
    6. Division
    7. Floating Point
  4. Non-Pipelined Processor Design
    1. Datapath
    2. Simple Control Unit
    3. Finite State Machine Control Unit
  5. Pipelined Processor Design
    1. Pipelined Datapath
    2. Pipelined Control
    3. Data Hazards
    4. Branch Hazards
    5. Exceptions
  6. Memory System Design
    1. Memory Hierarchy
    2. Mapping and Replacement Techniques
    3. Cache
    4. Virtual Memory
Textbook: D. Patterson and J. Hennessy, Computer Organization and Design: The Hardware Software Interface. Morgan Kaufmann Publishers.

Computer Use: The students use a computer to execute a RISC assembly language simulator that is used for various assembly language programming projects, and/or use a computer to run logic design software that is used to design various processor modules.

Laboratory Projects: The students may be given hardware and/or software design assignments:


Assembly language programming assignments may be given to familiarize the students with the RISC assembly language and to reinforce certain architecture concepts. Example assignment:

  • Floating point arithmetic: design a routine that emulates floating point addition or multiplication.


Various processor modules may be implemented at the gate level. Example projects include:

  • Design a simple ALU to support a RISC instruction subset.
  • Design a simple control unit to support a RISC instruction subset.
  • Design a pipeline hazard detection unit. 
  • Design a pipeline forwarding unit.

Engineering Design Statement:
The course emphasizes techniques for designing processors, from the architecture level to the gate level. In projects, homework assignments, and exams students are presented with problems that require them to explore various approaches to processor design, to choose between alternatives, and to justify solutions based on performance, cost, and/or complexity considerations.

Professional Component: Engineering Breadth
Engineering Science: 2 units
Engineering Design: 2 units