| Course Description |
This course provides an introduction to the fundamental concepts in computer architecture. Topics include: Basic system components, Performance measurements, Instructions and their representation, Number representation, Implementation of Arithmetic operations, Processor organization, Pipelining, The memory hierarchy and concurrent programming
| Course Prerequisites |
(Computer Systems Programming (CS 367)) / Digital Electronics (ECE 301)) OR ECE 303. Students not satisfying the prerequisites will be dropped from the class.
| Course Format |
Lectures will be given by the instructor. Besides material from the textbook, topics not discussed in the book may also be covered. Grading will be based on homework assignments and exams. Homework assignments will require some programming. Exams and homework assignments must be done on an individual basis unless stated. Any deviation from this policy will be considered a violation of the GMU Honor Code.
|Course Outcomes |
| As an outcome of taking this class, a student will be able to
- Be able to explain the organization of the classical von Neumann machine and its major functional components
- Be able to compare performance of simple system configurations and understand the performance implications of architectural choices
- Be able to show how instructions are represented at both the machine level and in the context of a symbolic assembler; be able to understand small MIPS programs and write MIPS assembly program segments
- Be able to use different formats to represent numerical data and convert numerical data from one format to another
- Be able to explain how an instruction is executed and the concept of datapaths and control
- Be able to explain basic instruction level parallelism using pipelining and the major hazards that may occur
- Be able to explain the effect of memory latency on running time; be able to describe the use of memory hierarchy to reduce the effective memory latency, in particular, the role of cache and virtual memory; be able to understand the principles of memory management
- Be able to explain the basic issues related to concurrent programming