22C:060 Computer Organization
Spring 2008

Instructor

Sukumar Ghosh, 201P Maclean Hall, 319-335-0738, ghosh@@cs.uiowa.edu
Class meeting time: 2:30P - 3:45P TTh 118 Macbride Hall (not Maclean)
Semester hours: 3
Office hours: 11:00-12:00 PM TTh

TA

Jonathan Hall, B20J Maclean Hall, 319-335-3650, jonathan-hall@uiowa.edu
Office hours: 12:40-2:10 PM Tuesdays and Thursdays.

Textbook

David Patterson and John Hennessy, Computer Organization & Design, 3rd Edition Elsevier, 1998.

Course Outline

We will take a top-down approach towards understanding computer organization. We will begin with how high-level language programs are translated into assembly language programs, and how the translated version is interpreted by a basic digital computer. Subsequently, we will discuss how to design the basic building blocks of a digital computer from simpler hardware components.

The software component of the course will introduce assembly language programming of the MIPS processor. It will describes instructions for control-flow, load and store, arithmetic and logical operations, stack handling, various addressing modes and their utility. The hardware components will include logic gates, combinatorial circuits, sequential circuits, ALU design, control unit, memory peripheral interfacing, pipelining, RISC vs. CISC, performance issues. For the purpose of illustration, we will use examples from the MIPS processor.

Tests and assignments

There will be 6 homeworks, and two examinations. The homeworks will account for 30% of the final grade, and the tests will be worth 70% of the final grade. The tests will be scheduled as follows:

Midterm Exam: March 4, 2008, Tuesday, (in class)
Final Exam: May 16, 2008, Friday, 118 MH, 7:30-9:30 AM

Letter grades will be assigned roughly as follows:

A+ = 95-100     B+ = 80-84      C+ = 65-69      D+ = 50-54      F = 0-39
A  = 90-94      B  = 75-79      C  = 60-64      D  = 45-49
A- = 85-89      B- = 70-74      C- = 55-59      D- = 40-44

The instructor reserves the right to make minor modifications in the grading scale.

Homework

Homework 1
Homework 2
Homework 3
Sample solution to Exam 1 questions
Homework 4
Homework 5
Here is a note on SPIM procedure call prepared by Jonathan Hall
Homework 6

Lecture Notes

1-22-08
1-24-08
1-29-08
1-31-08
2-5-08
2-7-08
2-12-08
2-14-08
2-19-08
2-21-08
2-26-08
Review for Exam 1 on 2-28-08
3-6-08
3-11-08
3-13-08
3-25-08
3-27-08
4-1-08
4-3-08
4-8-08
4-10-08
4-15-08
4-17-08
4-22-08
4-24-08
4-29-08
5-1-08
5-6-08
Review of Exam 2 on 5-8-08

MIPS handout (prepared by Aravind Mereddi)

THE SPIM SIMULATOR SPIM is a MIPS R2000/R3000 simulator that can be downloaded from http://www.cs.wisc.edu/~larus/spim.html. MIPSter is a free text editor specifically designed for MIPS assembly language programmers. The text editor is currently available at http://www.downcastsystems.com/mipster.asp. However, you can use any word processor such as Notepad to create an assembly language source program file and then save it as "text only" for launching PCSpim. PCSpim runs on Pcs only, running Windows.The contact information of the author is James Larus (larus@@microsoft.com). SPIM has been loaded on our Linux machines, and you can use it using your class accounts. If you want to run SPIM on your own home PC, then you have to download and install it yourself.

Download and Installation 1. (Windows Users). You can download from here and save on your PC. Unzip this file and run setup.exe
2. (Linux Users). Download this file . However, note that this is already installed on all Linux machines of the CS department, so you don’t have to do anything. Both Spim and its X-window version Xspim have been installed.

Resources 1. Appendix A of your textbook contains detailed description of the assembly language.
2. One copy of a paperback: MIPS Assembly language Programming by Robert Britton (Prentice hall 2004) will be available on reserve in the Math Library. This is a useful resource for understanding, as well as using the MIPS Simulator.

A test file is available here . This program computes the sum 1+2+3+…+N. test the simulator, you can use this file, or write your own program.

Important Reminders

1. The assembly language program should be stored as a text file (.txt) and not as a word file.
2. Always leave a blank line at the end of your text file.
3. Be familiar with the assembler directives. Do not forget to leave a blank like at the end of the (.text) section, otherwise the program will not run.
4. Know the pseudo-instructions. They will simplify your life. Try to use the system calls whenever required.

Miscellaneous Topics Atanasoff Berry Computer