Course description and objectives
The speed of development in the field of computer system design has been absolutely breakneck and without a parallel. This course will cover the core, foundational elements of the organization and architecture of a digital computer system including instruction sets, pipelining, memory systems, data paths, input/output, and multi-processors. As we cover these elements, performance in general will be a focus, along with gaining a historical perspective. We will also critically evaulate the design decisions and tradeoffs that are common in this field. The course will also cover the basics of digital logic.
The course will be somewhat more intense as compared to others, but by the end you will have a solid, foundational, and in-depth answer to the questions, “What is a computer? How does it work? How can it work better? What is the future of this field?”
Resources
- SPIM documentation
- ASCII Chart
- Unicode in 5 minutes!
- What Every programmer should know about memory!
Assignments
(Send all assignments to rahmad@manchester.edu. Make sure that subject line starts with CPTR308.)- Assignment 6. Due Dec. 8.
- Assignment 5. Due Nov. 17. Solutions
- Assignment 4. Due Nov. 10. Solutions
- Assignment 3. Due Oct. 31.
- Assignment 2. Due Sept. 22.
- Assignment 1. Due Sept. 8. Describe the fetch–execute cycle in a processor.
Slides
- Lecture 1, Sept. 3. Introduction and Objectives
- Lecture 2, Sept. 5. Introduction to Instrutcion Set Architecture of MIPS
- Lecture 3, Sept. 8. Load and Store instructions, Introduction to Digital Logic
- Lecture 4, Sept. 10. Digital Logic: Functions, Truth Tables, Boolean Algebra and Gates
- Lecture 5, Sept. 12. From C to binary code
- Lecture 6, Sept. 15. Instructions for Control Flow and Procedures
- Lecture 7, Sept. 17. Supporting procedures
- Lecture 8, Sept. 19. Nested procedures
- Lecture 9, Sept. 22. Where are variables stored?
- Lecture 12, Sept. 29. Character and strings
- Oct. 1. PC-relative addressing, Solution to assignment 2
- Oct. 3. Addressing modes
- Oct. 6. Translating and Executing a program
- Introducing Assembler
- Linker, Loader
- Introduction to SPIM
- Two's Complement
- Multiplication
- Floating Point
- More about floating point numbers
- Computer Performance
- Processor: Datapath and Control