3 Hours/Week, 3 Credits

Introduction to Computer Architecture: Overview and history; Cost factor; Performance metrics and evaluating computer designs. Instruction set design: Von Neumann machine cycle, Memory addressing, Classifying instruction set architectures, RISC versus CISC, Micro programmed vs. hardwired control unit. Memory System Design: Cache memory; Basic cache structure and design; Fully associative, direct, and set associative mapping; Analyzing cache effectiveness; Replacement policies; Writing to a cache; Multiple caches; Upgrading a cache; Main Memory; Virtual memory structure, and design; Paging; Replacement strategies. Pipelining: General considerations; Comparison of pipelined and nonpipelined computers; Instruction and arithmetic pipelines, Structural, Data and Branch hazards. Multiprocessors and Multi-core Computers: SISD, SIMD, and MIMD architectures; Centralized and distributed shared memory- architectures; Multi-core Processor architecture. Input/output Devices: Performance measure, Types of I/O device, Buses and interface to CPU, RAID. Pipelining: Basic pipelining, Pipeline Hazards. Parallel Processing. Course Text: John P.Hayes, "Computer Architecture and Organization", 3rd Edition, McGraw Hill David A.Patterson and John L.Hennessy, "Computer Organization and Design: The hardware / software interface"