CS 281 System Architecture I Syllabus
- Course Description
-
Covers internal function and organization of digital computers,
including instruction set design, machine and assembly language,
computer arithmetic, ALU design, central processor organization
and implementation. Also covered are interpreters, assemblers,
linkers, and loaders.
-
- Course Objective and Goals
To obtain an understanding of how a computer is organized and how it works.
To develop a model of how a program executes on a computer.
To be able to understand an assembly language program. There will be
some assignments involving assembly language programming; however, the
objective is to understand the instruction set of a machine and how
a program executes on a computer, rather than to be able to write full length
assembly language programs.
To understand how a computer can be implemented (down to the gate level).
In the lab associated with the course, students will implement a subset
of the MIPS architecture using the hardware definition language VHDL.
- Audience
-
This is a core computer science course required by all Computer Science
majors. It is the first part of a two term sequence (both parts are
required by Computer Science majors. It should be taken in the 3rd year.
The coures is also required for the computer science minor.
- Prerequisites
- Introductory programming sequence (CS172)>
- Logic design course (ECE 200 or ECE-C 211)
- What Students Should Know Prior to this Course
- Should be familiar with Boolean expressions, truth tables,
normal forms.
- Should be able to design a simple logic circuit.
- Should be familiar with basic components of combinational logic:
encoders, decoders, and multiplexors.
- Should be familiar with elements of sequential logic: latches,
flip flops, registers, memory.
- Should be able to understand and design a finite state machine.
- Solid programming experience.
- Must be comfortable with the basic programming constructs in C/C++.
- Must be comfortable with recursion and pointers.
- Knowledge and the ability to use data structures such as arrays and lists.
- What Students will be able to do upon Successfully Completing this Course
- Understand what a compiler, interpreter, assembler, linker and loader does.
- Understand the components and format of a machine instruction set.
- Be able to write a simple assembly language program.
- To be able to understand how an assembly language program executes
on a computer.
- To understand how a computer represents numbers and performs arithmetic.
- To build a simple ALU.
- To undersand the datapath and control of a simple computer.
- To implement a simple instruction set: create an appropriate datapath
and describe the control using microcode or a finite state machine.
- To describe and simulate a processor using a hardware definition language.
-
Textbook
- David A. Patterson and John L. Hennessy,
Computer Organization and Design: The
Hardware/Software Interface, Second Edition,
Morgan Kaufman Publishers, 1997.
- Sudhakar Yalamanchili,
VHDL Starter's Guide, Prentice Hall, 1998.
Topics:
- Computer Abstractions (Chapter 1)
- Review of Digital Circuits and Logic Design (Appendix B)
- History of Computers (Chapter 1)
- Instructions: Language of the Machine (Chapter 3)
- Assembly Language Programming (Chapter 3 and Appendix A)
- Assemblers, Linkers, and the SPIM Simulator (Appendix A)
- Computer Arithmetic (Chapter 4)
- The Processor: Datapath and Control (Chapter 5 and Appendix C)
- VHDL and hardware simulation (VHDL Starter's Guide)
Grading:
- Written and Programming Assignments (three) 30% (10% each)
- Lab 20% (regular lab exercises to make sure students understand
what is covered in lectures and can use necessary tools
for the course
- Midterm Exam 25%
- Final Exam 25%
Labs, and assignments, and exams will be returned on a regular basis
to provide feedback to students.
Last edited: 09/20/2001
by jjohnson@mcs.drexel.edu