Computer Organization and Design
CS U380
Spring, 2008
Monday, Wednesday, Thursday at 4:35 - 5:40, Room 110 WVH
Final Exam: April 23 at 1:00
Instructor
John Casey, jcasey@ccs.neu.edu
617 - 373 - 3550
Course Calendar
Click
here
for the current calendar.
News
Watch here for updates: assignments,etc.
Course Description
Prerequisites
Prerequisites: Some programming experience, or a course
like CS U211, plus some data structures. If you are currently
taking CS U213, that should be OK.
Course Requirements
What does this course teach?
The one phrase answer is: the hardware/software interface.
Another part of the answer is: the hierarchical nature of all
computer systems.
To get experience working at that interface, we make choices:
our hardware is the MIPS family of chips; our software is in
MIPS assembly langauge, and in C.
Why learn this material now?
We believe that learning in computer science and engineering
should reflect the current state of the field, as well as introduce
the principles that are shaping computing. We also feel that readers in
every specialty of computing need to appreciate the organizational
paradigms that determine the capabilities, performance, and,
ultimately, the success of computer systems.
Modern computer technology requires professionals of every
computing specialty to understand both hardware and software. The interaction
between hardware and software at a variety of levels also offers a
framework for understanding the fundamentals of computing. Whether
your primary interest is computer science or electrical engineering,
the central ideas in computer organization and design are the same.
Thus, our emphasis in the book is to show the relationship between
hardware and software and to focus on the concepts that are the basis for
current computers.
...
The performance of future software systems will be dramatically
affected by how well software designers understand the basic hardware
techniques at work in a system. Thus, compiler writers, operating
system designers, database programmers, and most other software
engineers need a firm grounding in the principles presented in this book.
- from the first pages of the textbook(page xi, xii)
Topics
The topics covered will include C and assembly language programming,
how higher level programs are translated into machine language,
how object-oriented languages are implemented,
the general structure of computers, interrupts, caches,
address translation,
and related subjects.
Objectives
By the end of the quarter, you should know:
what operations the chip can perform
what data structure represents each of those operations
how the hardware decodes each operation, and carries it out
what happens when the hardware detects an exception or interrupt
all operations are carried out by doing boolean algebra on single bits
how all this affects performance
how to write small programs in assembly language
Student responsibilities
1. Students are expected to attend classes regularly, to be on time, and not
to leave the classroom before the class is over.
2. Weekly labs: these will be held in the big lab on the first
floor of West Village H.
More information about them will be posted later.
2. Readings, exercises, quizzes, four
programming assignments,
one exam, and a final.
Plagiarism
We encourage people to get together and discuss the assignments,
prepare for tests, etc. But this is not the same as copying
some one else's code or answers to assignments. If I find
material that is substantially the same in two submissions, then
the minimum penalty will be twice the full credit for that work. That is,
if something were worth 100 points, it will be as if you scored -100.
This Week's Schedule
Reading Assignment: Patterson and Hennessy,
Chapter 1(easy reading), and
Sections 3.1, 3.2(leaving out Fig. 3.1).
Tools
Required Materials
1. David A. Patterson and John L. Hennessy.
Computer Organization
and Design: The Hardware/Software Interface.
Morgan Kaufmann, San Mateo, 2005.
Third edition, revised printing.
Often referred to as P&H.
Much improved from the second edition. This is recent -
copyright 2005 -
and more exciting. The revised printing includes helpful
detailed info.
2. You'll need a reference for C. We require:
Brian Kernighan and Dennis Ritchie.
The C Programming Language: Second Edition.
Prentice Hall, 1988.
Sometimes referred to as the New Testament;
commonly called K&R.
Readings from this will be assigned, but you may
be able to avoid buying the book. The readings
will be short, perhaps 5 to 20 pages; you
may be able to keep up by using
someone else's copy.
Other Ways to Learn
"The 1990s saw the emergence of the Internet
and the World Wide Web, the first successful handheld
computing devices(personal digital assistants or PDAs),
and the emergence of high-performance digital
consumer electronics, from video games to set-top
boxes.
These changes have set the stage for a dramatic change in
how we view computing."(Quoted from H&P's other book)
And this has lead to an explosion of new ways
of teaching about the place where software meets
hardware.
Three wonderful books with very different
approaches are in the collection at Snell library:
Randal E. Bryant and David O'Hallaron.
Computer Systems: A Programmer's Perspective.
Prentice-Hall, 2002.
A strong emphasis on optimizing performance, and
a way of seeing programs run on real machines.
Yale N. Patt and Sanjay J. Patel.
Introduction to Computing Systems: From Bits and Gates
to C and Beyond.
McGraw-Hill, 200.
Second edition.
The title says it: start from transistors and logic gates,
and work through the design of a tiny, but real,
machine, and arrive, bottom-up, at C programs.
Andrew S. Tanenbaum.
Structured Computer Organization.
Prentice-Hall,2006.
Fifth edition.
Also a bottom-up approach: start with digital logic
and end with assembly language.
Software tools
Our chip
The xspim simulator for the MIPS processor, by James R. Larus.
Type the command "xspim" on any Solaris machine and look into the
hardware of a
current
RISC-based chip.