Computer Systems Organization
Instructor: Benjamin Goldberg
- Mondays and Wednesdays 11:00am - 12:15pm
Room 101 Warren Weaver Hall
There are NO required textbooks for this course. You will
be given handouts and links to technical material during the semester.
You will need a reference on the C programming language. In addition
to lots of on-line resources, I recommend the following:
- The C Programming Language, 2nd. ed.
by Brian Kernighan and Dennis Ritchie
Prentice Hall 1988.
Class Mailing List
- Programming Assignments
- The Project
The project for this class involves building a
simulated MIPS processor in C. The project has three parts.
This is an individual project. Do not work with or obtain assistance from
anyone but Prof. Goldberg
Programs written in class
- Answers to this year's midterm exam.
- There will be a short quiz on Monday, September 19, based on a handout in class.
- Materials to help prepare for the mid-term exam:
- Materials to help prepare for the final exam:
You will need to use the gcc C compiler and the emacs editor
to write your code. You can download GCC and emacs for your computer from
the following sources:
- For Windows:
(click on "setup.exe").
- Cygwin - A UNIX environment for Windows
When asked to select packages, click "devel" and then
scroll down to make sure that the box in the "bin" column
next to "gcc" is checked. This will ensure that gcc is included
with the cygwin installation. Also in "devel", click on the box in
the "bin" column next to"make: The GNU version of the "make" utility".
- Click here
for emacs for Windows.
- For Mac OS X: Download the XCode package from Apple Developer Connection.
You will need to register at the site. A nice version of emacs, Carbon Emacs, can be found
Note: You will not be using the Xcode environment (editor, etc.). You will be
invoking GCC on the shell command line.
As discussed in class, GCC on Mac OX will not work with assembly in Intel syntax. You can
either work in AT&T syntax, or run Linux or Windows using Boot Camp, Parallels, or VMware.
- For Linux: Most Linux implementations come with gcc and emacs already installed, or with
easily installable gcc and emacs packages. See the documentation for the version of Linux
you are running.
Link to a document entitled "Some Basic Unix Commands", by Donald Hyatt.
Link to a web page listing the x86 Instruction Set
Link at a A Tiny Guide to Programming in 32-bit x86 Assembly Language from the University of Virginia.
Intel Architecture Software Developers Manual (Intel Syntax for Assembly). It's huge, don't print it out.
386 Assembly Reference Manual (AT&T Syntax)
Debugging with GDB
Another x86 assembly language reference found at the University of Virginia
Link to the Wikipedia page for the x86 FLAGS register
Link to the Wikipedia page for cache memory
Here is a link to Prof. Gottlieb's
201 Course Notes.
Simple explanation of x86 addressing modes
Prof. Grishman's lecture notes on caches for Computer Architecture (contains links to Prof. Gottlieb's lecture notes on caches)
My handwritten lecture notes on caches. These are not so helpful, because they don't discuss multi-word cache lines.
My handwritten lecture notes on digital logic.
An Introduction to Digital Logic at a Swarthmore web site.
Link to the Logisim digital logic design tool and simulator.
My brief handwritten lecture notes on floating point numbers.
- These are NOT the lecture notes for my class. I will be covering different
material. Prof Gottlieb's notes can be used as a valuable reference for C and Assembly programming, though.