600.333/433
CSF Course Overview
Fall 2002
600.333/433 Computer Systems Fundamentals offers a system-level
perspective to modern computer architecture. The course focuses on
the boundary between hardware and software operations, and explores
various levels of hardware from the perspective of the design and
performance of a reduced instruction set computer (RISC) systems
architecture. This hardware/software boundary is characterized and
studied in terms of the computer's architectural specifications. The
specifications covered in 600.333/433 Computer Systems range broadly
from designs of functional modules for the manipulation/processing
of data to the implementation and use of a machine-level instruction
set capable of efficiently supporting a modern programming language.
600.333/433 Computer Systems intends to provide a student with a
fundamental conceptual understanding of the primary components of a
microprocessor system together with associated analytical techniques
sufficient to design and quantitatively assess the performance of
variations of a family of computer systems architectures based on
detailed specifications of the clock-cycle by clock-cycle functional
and control module operations. The execution of benchmarks
represented by MIPS machine-level instruction code sequences
implementing commonly used programming methodologies (e.g., iteration,
recursion, and searching) serves as a framework for evaluating the
MIPS pipelined computer systems architecture. Inherently conflicting
design tradeoffs such as clock rate and module functionality/control
are explored. The successful 600.333/433 Computer Systems student must
demonstrate an awareness of the role played by fundamental
relationships among resource parameters in the operational performance
of a computer systems architecture.
600.333/433 Computer Systems is generally taught twice each academic
year in the Department of Computer Science: during the fall semester,
usually with an enrollment of about 100 students, and during the first
term of the summer session (June), usually with an enrollment of about
30 students. A commonly taken more advanced follow-up course,
600.334/434 Computer Systems Architecture, is usually taught once
each academic year in the spring semester with an enrollment of about
50+ students.
Course Grading
A student's
success in achieving the course goals is assessed in 600.333/433
Computer Systems by means of a Mid-Term Exam, an End-Term Exam, and a
Final Exam (comprised of two equally weighted components, each,
respectively, covering the material on the Mid-Term Exam and End-Term
Exam), weekly homework assignments, and MIPS assembly language
programming projects (using the SPIM simulator). The Mid-Term Exam is
counted as 25% of the final grade and End-Term Exam is counted as 25%
of the final grade. The Final Exam, which is optional, is counted as
25% of the final grade if taken. The programming projects count as 12.5% of the
final grade and the homeworks are counted as 12.5% of the final grade.
A CSF student can elect not to take the Final Exam. If a student
elects this option, Mid-Term Exam is
counted as 37.5% of the final grade and End-Term Exam is counted as 37.5%
of the final grade.
Exams and projects for students in 600.333 Computer Systems have
optional components; students in 600.433 Computer Systems are required
to complete all components of exams and projects.
All exams in
600.333/433 Computer Systems are taken with an open standard text
book, but closed notes. Supplementing a textbook with inserts is not
permitted, but obviously written comments or markings in a standard
textbook are acceptable.
Exam scores on the Mid-Term Exam or End-Term Exam can be improved by
means of performance on the Final Exam as follows. The Final Exam will
be divided into two parts, each worth 120 points and graded
separately. To understand this grade improvement opportunity, in the
following discussion, consider Mid-Term Exam 1 to be the regular
Mid-Term Exam given in mid-October, and Mid-Term Exam 2 to be the
End-Term Exam given in early December. If the score on the Final Exam
part corresponding to the Mid-Term Exam i, (where i is either 1 or 2),
is higher than the score on the corresponding Mid-Term Exam i, then in
computing the final grade for the course, the score on the Mid-Term
Exam i will be replaced by the average of the actual score on the
Mid-Term Exam i and the score on the Final Exam part corresponding to
the Mid-Term Exam i. If the score on the Final Exam part
corresponding to the Mid-Term Exam i is lower than the score on the
Mid-Term Exam, i, no change will be made to the score on the Mid-Term
Exam i in computing the final grade.
Pre-requisites
The pre-requisite for 600.333/433 Computer Systems is a general
understanding of a high-level programming language such as C or
C++. However, this should not be interpreted as a need for programming
proficiency, as the course is essentially self-contained. 600.333/433
Computer Systems is commonly taken by a broad spectrum of students
including Computer Science (B.S. and B.A.) and Computer Engineering
undergraduate majors, Computer Science minors, Computer Science
masters and doctoral students (600.433 version), as well as many other
Whiting School of Engineering and Krieger School of Arts and Sciences
undergraduate and graduate students interested in attaining a
fundamental understanding of operations and performance of modern
microprocessor architectures.
Course Topics
Topics covered in 600.333/433 Computer Systems are outlined in the
following list. Each topic listed is covered in approximately 2 to 4
class periods (50 minute per class period). The ordering and number of class periods
can vary
slightly in different course offerings.
- Basics of Logic Design [2 class periods]:
Gates, Truth Tables and Logic Equations,
Combinational Logic, Multiplexers and Conditional Control,
Clocks and Timing Methodologies,
Memory Elements,
Finite State Machines.
- Computer Abstractions and Technology [3 class periods]:
The Role of Performance,
Measuring Performance,
Amdahl's Law,
Relationships Among Performance Metrics.
- Machine Level Instructions [4 class periods]: Operations of Computer Hardware,
MIPS R2000 Microprocessor,
Operands for the Computer Hardware,
Representing Instructions in the Computer,
Instructions for Making Decisions,
Register Stacks and Pointers,
Supporting Iterative and Recursive Procedures in Computer Hardware.
- The SPIM Simulator for MIPS [4 class periods]:
Assemblers,
Linkers,
Loading Program,
Memory Usage,
Procedure Call Conventions, Stack Pointers,
Exceptions and Interrupts,
Input and Output,
SPIM,
MIPS R2000 Assembly Language.
- Arithmetic for Computers [4 class periods]: Signed and Unsigned Numbers,
Addition and Subtraction,
Logical Operations,
Constructing an Arithmetic Logic Unit,
Multiplication, Generalized Booth's 2's Complement Multiplication
Algorithm, Baugh-Wooley 2's Complement Multiplier Arrays,
Division,
Floating Point Operations.
- Processor Architecture: [4 class periods] Datapath and Control,
Building a Datapath,
Single Clock Cycle Implementation Scheme,
Multicycle Implementation,
Microprogramming, Simplifying Control Design,
Exceptions.
- Pipelining [4 class periods]:
A Pipelined Datapath,
Pipelined Control,
Data Hazards and Forwarding,
Data Hazards and Stalls,
Branch Hazards,
Exceptions,
Superscalar and Dynamic Pipelining.
- Memory Hierarchy [4 class periods]:
The Memory Bottleneck,
Caches,
Measuring and Improving Cache Performance,
Virtual Memory,
A Common Framework for Memory Hierarchies.
- Interfacing Processors and Peripherals [3 class periods]:
I/O Performance Measures, Disk and File Systems,
Types and Characteristics of I/O Devices,
Buses, Connecting I/O Devices to Processor and Memory,
Interfacing I/O Devices to the Memory, Operating System Interactions,
Designing an I/O System.
- Programming Projects [5 class periods]: Interactive Input/Output and Display
Techniques, Iterative Sorting, Interactive Recursive Fibonacci Number
Generator, Booth's Multiplier Algorithm for 2's Complement Numbers,
Floating Point Number Operations with Exception Handling.
Textbook
There are many
possible choices for textbooks for 600.333/433 Computer Systems
Fundamentals. Some are provided in the list below. However, the broad
range of students usually co-resident within the same 600.333/433
Computer Systems class is possible because of the availability and use
of a particular comprehensive course textbook. 600.333/433 Computer
Systems closely follows the contents of the first 7 chapters and
Appendices A and B of the text: ``Computer Organization and Design:
The Hardware/Software Interface,'' Second Edition, Morgan Kaufmann
Publishers, by David A. Patterson and John L. Hennessy [Reference 1
below]. (It might be of interest that John Hennessy became the
President of Stanford University in the spring, 2000, probably making
CSF the only CS course you will ever take using a textbook written by
a president of a major university.) The second Patterson/Hennessy
textbook [2] cited below provides a more advanced perspective to
computer architecture, and assumes that the material in the CSF
textbook [1] is understood.
-
Patterson, D., and Hennessy, J.,
"Computer organization and design: the hardware/software interface,"
Second Edition,
Morgan-Kaufmann, 1998.
-
Hennessy, J., and Patterson, D.,
"Computer architecture: a quantitative approach,"
Third Edition,
Morgan-Kaufmann, 2002.
-
Mano, M.,
"Computer system architecture,"
Prentice-Hall, (Third edition), 1993.
Last modified: Wed Sep 18 16:57:36 EDT 2002