ECE Course Outline



ECE3055 -  Computer Architecture and Operating Systems  (3-3-4)
 
Prerequisites:  ECE 2031
Corequisites:  None
 
Catalog Description:  Core concepts of computer architecture and operating systems. Instruction set architectures (ISA), compiler/ISA relationships, pipelined datapaths. Memory hierarchy, memory management, and protection. Processes, threads, CPU scheduling and associated techniques.
 
Textbook(s): 
Silberschatz, Galvin, and Gagne, Operating System Concepts with Java (6th edition), John Wiley, 2004. ISBN 0471489050 (required)

Patterson & Hennessey, Computer Organization & Design: The Hardware/Software Interface (3 edition), Morgan Kaufmann, 2004. ISBN 1-55860-604-1 (required) (comment: Will be using 2nd edition through Summer, 2004. 3rd edition available for Fall 2004)

Course Objectives - As part of this course, students:
1.  build on ECE 2030 to enhance their understanding of core concepts of computer architecture related to processor, memory, and I/O subsystems. [6,8,11]
2.  are introduced to core concepts of operating systems related to memory management, process and thread management, and I/O. [6]
3.  will understand the interactions of hardware and software in a general-purpose computer system. [6,8,11]
4.  gain laboratory-based experience in designing, implementing, and simulating hardware and software components of a computer system. [7,10,11]
5.  utilize modern hardware and software design tools and languages in state-of-the-art facilities. [1,7,11]
		
Course Outcomes - Upon successful completion of this course, students should be able to:
1.  evaluate cycles per instruction (CPI) for multi-cycle and pipelined data paths.
2.  schedule machine-instruction-level programs on a pipelined datapath both with and without hazard handling.
3.  define different types of data and control dependences and describe multiple methods of handling them.
4.  design, using standard digital components, cache memories of different sizes and associativities.
5.  describe several replacement policies for associative memory structures; e.g., set-associative caches or virtual memory pages.
6.  determine the contents of a cache after execution of a memory trace.
7.  define and understand virtual memory, including the concepts of paging, TLB, and page table.
8.  determine the contents of a page table and TLB after execution of a memory trace.
9.  describe I/O operation in a general-purpose computer system, including synchronous/asynchronous bus characteristics, bus arbitration schemes, and DMA.
10.  define processes and threads.
11.  construct and evaluate CPU schedules for a variety of scheduling algorithms.
12.  define the problem of process/thread synchronization and describe several alternative mechanisms for handling synchronization.
13.  define deadlock and describe several mechanisms for handling it.
14.  step through an algorithm to determine if a given set of processes and resources are deadlocked.
		
Topical Outline: 

Instruction Set Architectures (2 weeks)
  CISC and RISC: ISA evolution and tradeoffs
  Instruction formats, number of operands, addressing modes
  Controller implementation: state machine vs. microprogramming
  Effect of ISA on microarchitecture implementation
  Effect of ISA on the compiler 

Pipelining (4 weeks)
  Pipelining basics
  Pipeline stages: fetch, decode, execute, memory write-back
  Hazards and solutions
  Branch prediction and delayed branches
  Case Studies

Memory Systems (3 weeks)
  Memory hierarchy
  Basic organization of caches, interleaved memory
  Virtual memory basics, memory management
  Deadlocks
  Segmentation and protection
  Case Studies

Process Management (3 weeks)
  Processes, threads, and CPU scheduling
  Synchronization and concurrency management
  Deadlocks, protection, and security
  Case Studies

I/O Architectures (2 weeks)
  Bus hierarchies, device drives
  Interrupts, DMA, polling
  Disk structures, I/O scheduling
  File allocation and file systems
  LANs, network interfaces, basic interprocessor communciation
  Case Studies

Laboratory Assignments
  Architecture simulation
  Operating system project