22C:060 Computer Organization
Spring 2010

Instructor

Sukumar Ghosh, 201P Maclean Hall, 319-335-0738, ghosh@@cs.uiowa.edu
Class meeting time: 1:05 - 2:20 TTh 217 MLH
Semester hours: 3
Office hours: 11:00-12:00 PM TTh

TA

Cheng Wang, cheng-wang-1@uiowa.edu, B20J MLH
Office hours: Tuesdays 4-5 PM, Fridays 1-3 PM.

Textbook

David Patterson and John Hennessy, Computer Organization & Design, 4th Edition Elsevier, 2008.

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 describe 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, 2009, Thursday, (in class)
Final Exam: May 10, 2009, Monday, 217 MLH, 9:45-11:45 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.

MIPS Assembly Language Handout

Homework

Homework 1
Homework 2
Homework 3
Homework 4
Homework 5 (Corrected version)
Homework 6

Lecture Notes

January 19, 2010
Lecture 1. Introduction to Computer Organization
January 21, 2010
Lecture 2. High-level vs Assembly Language Programming
January 26, 2010
Lecture 3. MIPS instruction formats
January 28, 2010
Lecture 4. MIPS logical instructions
Using the SPIM simulator
Homework 1 assigned. Due February 4.
February 2, 2010
Lecture 5. Pseudo instructions, Branch and Jump, Addressing modes
February 4, 2010
Lecture 6. Subroutine linking
February 9, 2010
Lecture 7. Recursive procedure call
February 11, 2010
Lecture 8. General view of Instruction Sets. Exceptions: Overflow in Arithmetic Operations
Homework 2 assigned.
February 16, 2010
Lecture 9. Exception Handling Example. Introduction to Logic Design
Read Appendix C from the CD at the end of the book.
February 18, 2010
Lecture 10. Boolean Algebra
Read Appendix C from the CD at the end of the book.
A copy of this appendix has been posted on ICON.
February 23, 2010
Lecture 11. The building blocks: adder, decoder, encoder, multiplexor, demultiplexor
Read Appendix C from the CD at the end of the book.
February 25, 2010
Lecture 12. A 1-bit Arithmetic Logic Unit (ALU)
Homework 3 has been assigned.
March 2, 2010
Lecture 13. 32-bit adder -- Carry look-ahead
Review for Exam 1.
March 9, 2010
Lecture 14. Floating point representation
March 11, 2010
Lecture 15. Floating Point instructions in MIPS. Introduction to Flip-flop, registers, counters
March 23, 2010
Lecture 16. Multiplication and Division
Read the material from Chapter 3.
March 25, 2010
Lecture 17. Register file & Memory
Homework 4 has been assigned.
March 30, 2010
Lecture 18. Inside RAM and ROM
April 1, 2010
Lecture 19. Cache Memory
April 6, 2010
Lecture 20. Cache Memory (continued)
April 8, 2010
Lecture 21. 1-cycle implementation of MIPS
April 13, 2010
Lecture 22. 1-cycle MIPS processor (continued)
April 15, 2010
Lecture 23. Multicycle implementation of MIPS
April 20, 2010
Lecture 24. Pipelined MIPS
April 22, 2010
Lecture 25. Input Output Operations
Polled I/O
interrupt-driven I/O
April 27, 2010
Lecture 26. Intel Pentium
April 29, 2010
Lecture 27. Virtual Memory
May 4, 2010
Lecture 28. Virtual Memory (continued). Error detection and correction

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 fo r 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 m achines of the CS department, so you don't have to do anything extra. Both Spim and its X-window version Xspim have been installed.

Appendix A of your textbook contains detailed description of the assembly language.

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 ow n 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 line 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