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
Cheng Wang, cheng-wang-1@uiowa.edu, B20J MLH
Office hours: Tuesdays 4-5 PM, Fridays 1-3 PM.
David Patterson and John Hennessy, Computer Organization & Design, 4th Edition Elsevier, 2008.
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.
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 |
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.