22C:060 Computer Organization
Fall 2013

Instructor

Sukumar Ghosh, 201P Maclean Hall, 319-335-0738, sukumar-ghosh@@uiowa.edu
Class meeting time: 11:00AM - 12:15PM W128 CB
Semester hours: 3
Office hours: 2:00-3:30 PM TTh
[DEO: Professor Alberto Segre]

Teaching Assistants

Thamer AlSulaiman, thamer-alsualiman@uiowa.edu,201N MLH, Office hours: 2:00-3:30 MW
Rahil Sharma, rahil-sharma@uiowa.edu, 101C MLH, Office hours: 12:45-2:00 MW

Textbook

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

To buy the textbook from the publisher at a discounted price, follow this link

Course Outline

This course 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, multicore processors performance issues. For the purpose of illustration, we will use examples from the MIPS processor.

Tests and assignments

There will be 6 homeworks, two quizzes and two examinations. The homeworks will account for 30% of the final grade. Each homework and quiz is worth 5% of the final grade, and the tests are worth 60% (midterm 25% and final 35%) of the final grade. The tests will be scheduled as follows:

Midterm Exam: Tuesday, October 8, 2013 (in class)
Final Exam: To be announced

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.

Schedule of events

Homework

Homework 1 Assigned Sep 10, due Sep 17
Homework 2 Assigned Sep 24, due Oct 1
Homework 3 Assigned Oct 15, due Oct 22
Homework 4 Assigned Oct 29, due Nov 5
Homework 5 Assigned Nov 12, due Nov 19
Homework 6 Assigned Nov 21, due Dec 5

THE SPIM SIMULATOR

Information about downloading and different versions
MIPS Assembly Language Handout
A SPIM Tutorial
Sample Assembly Language Program

Lecture Notes

August 27, 2013
Lecture 1. Introduction to Computer Organization
To review Binary Number Systems, read this tutorial. Also read about hexadecimal numbers here
August 29, 2013
Start reading Chapter 2 of your textbook.
Lecture 2. Introduction to Assembly Language Programming
September 3, 2013
Lecture 3. Assembly Language Programming
September 5, 2013
Lecture 4. Assembly Language Programming
September 10, 2013
Lecture 5. Dealing with branches
September 12, 2013
Lecture 6. Procedure call
September 17, 2013
Lecture 7. Nested and recursive procedure call
September 19, 2013
Lecture 8. Assembler, RISC vs CISC
September 24, 2013
Lecture 9. Exception Handling in MIPS
September 26, 2013
Lecture 10. Introduction to Digital Logic
October 1, 2013
Lecture 11. The Building Blocks of Digital Circuits
October 3, 2013
Lecture 12. The Building Blocks of Digital Circuits (continued)
October 10, 2013
Lecture 13. 1-bit Arithmetic Logic Unit
October 15, 2013
Read Chapter 3, Section 3.5
Lecture 14. Dealing with Floating Point Numbers
Here is an excellent article on IEEE Floating Point Arithmetic
October 17, 2013
Lecture 15. Flip-flops, registers, counters
October 22, 2013
Lecture 16. Multiplicaiton and Division
October 24, 2013
Lecture 17. Register file, Memory
October 29, 2013
Lecture 18. RAM and ROM
Read the handout "The Basics of Logic Design" posted on ICON
October 31, 2013
Lecture 19. Cache memory
November 5, 2013
Lecture 20. Cache Memory (continued)
November 7, 2013
Lecture 21. Processor design
November 12, 2013
Lecture 22. Introduction to Multicore Architecture: thanks to MIT Open Courseware Video Lectures
November 14, 2013
Lecture 23. Review
November 19, 2013
Lecture 24. Processor design (continued)
November 21, 2013
Lecture 25. Processor design (continued)
December 3, 2013
Lecture 26. Pipelining
December 5, 2013
Lecture 27. Virtual Memory
December 12, 2013
Lecture 28. Virtual Memory (continued)
Pentium Architecture