Reading Guidelines
The following reading guidelines are divided into the six course modules. Please consider this page and prepare yourself before the lectures and the laboratory exercises. In the following, the course books are referred to as H&H for the book Digital Design and Computer Architecture by Harris and Harris, edition 2, (2012), and P&H5 for Computer Organization and Design – the Hardware/Software Interface by Patterson and Hennessy, edition 5 (2013). Because the 5th edition is not available online, we will also refer to P&H4 for the 4th edition that is available online. Please see the literature webpage for more information.
General Study Advice
- Lecture slides: Read through the pre-slides before the lectures. Attend the lectures. Go through all slides very carefully after the lectures.
- Read selected parts of the textbooks. See the guidelines below. You can both read in advance before the lectures and check out concepts that you did not understand during the lectures. Please note also that you can easily find concepts in the books by using the Index (at the end of the books).
- Exercises and seminars. Attend the exercises and seminars. To get most out of it, try to solve some of the exercises before the exercise occasions. Prepare the seminar exercises by consulting both the textbooks and the lecture slides. A good idea is to form small student groups and study together.
- A4 sheet (handwritten notes) and MIPS Reference Sheet. Make notes on formulas, structures, and key concepts during the semester. Make sure you understand every detail of the MIPS reference sheet. By doing this well in advance of the exam, you have saved a lot of pain the days before the exam.
- Write questions and answers on Canvas. Ask questions and try to help your fellow students by making a Q&A on Canvas! The teaching assistants will be there to help you.
- Attend lunch office hours. Every Wednesday there is a virtual lunch hour office slot. During this hour, you can come and ask informal questions to the teachers and assistants. Please come by and ask your questions.
Module 1: C and Assembly Programming
Key concepts: Variables, if-statements, expressions, loops, ISA, function calls, registers, instructions, translation from C to ASM and back, pointers, arrays, two's complement, sign extension, machine instruction encoding, R, I, and J types, stack, parameters, arguments, big-, and little-endian.
Introduction
- P&H5 Chapters 1.1-1.4, or P&H4 1.1-1.3
These introduction chapters give an overview of the subject. You should understand the main concepts of these chapters, especially the things that are emphasized on the lectures.
Number systems
- H&H Chapter 1.4
It is extremely important to understand the fundaments of decimal numbers, hexadecimal numbers, bytes, words, signed numbers etc. Please read this chapter carefully if this is new to you. We will use these terms extensively during the course.
Assembly and Machine Languages
- H&H Chapters 6.1-6.9, 5.3
- The MIPS sheet (see the literature page)
All sections are part of the course, but if you would like to focus on some sections, start with 6.1-6.4. P&H5 and P&H4 have alternative explanations of these concepts (chapter 2 in these books). However, I would recommend that you start with the lectures, followed by reading H&H.
C Programming
- H&H Appendix C
- Online links on the literature webpage
Please use H&H appendix C as a short guide for the C programming language. On the literature page, there are also links to other online tutorials and reference pages about programming in C. Note that although you should read these texts, the only way to really learn to program in C is to use a text editor, write programs, compile, and run. Study advice: cut and paste code from the lectures and try out different examples on your own computer. Play around with pointers and arrays. Try things out!
Module 2: I/O Systems
Key concepts: Memory mapped I/O, serial I/O, volatile keyword in C, GPIO, timers, exceptions, interrupts, buses (synchronous vs. asynchronous), and DMA.
- H&H Chapters 8.5-8.7
For the labs, focus on 8.6.2-8.6.5 (GPIO, Timers, and Interrupts). Besides these chapters, more details about I/O will be given at the lectures and in the labs. Also, look carefully at the solutions of Exercise 2. The later parts of 8.6 can be very useful in the project. You do not have to read the details of section 8.7: it is enough to get an overview of the PC I/O Systems.
Module 3: Logic Design (optional for IS1200)
Key concepts: Combinational Logic, Sequential Logic, Boolean algebra, proof by perfect induction, truth tables, multiplexers, decoders, carry propagate adder, latch, flip-flop, register, and register-file.
Combinational Logic Design
- H&H Chapters 1.5, 2.1-2.4, 2.6, 2.8-2.9
Note the fundamental idea of combinational logic, that is, logic that does not have any "memory". Read all these sections as an overview, and read chapter 2.8 extra carefully. Section 2.9 can be regarded as advanced material.
Sequential Logic Design
- H&H Chapters 3.1-3.3 (not 3.2.7), 3.4.1-3.4.3, 5.2.1-5.2.2, 5.5.5
The most fundamental part of sequential logic design (circuits with memory) is presented in sections 3.2.1-3.2.4 and sections 5.2.1-5.2.2. Please read these sections carefully. The sections in chapter 3.4 can be seen as advanced material.
Module 4: Processor Design
Key concepts: ALU, datapath, control unit, single cycle processor (details of signals), performance analysis, critical path, CPI, IPC, pipelining (concept), pipelined data path, data hazards, control hazards, forwarding, and stalling.
ALU and Single-Cycled Processors
- H&H Chapters 5.2.4, 7.1-7.3.
Sections 7.1 and 7.3 are extremely important to understand in detail. H&H describes these concepts very well.
Pipelined Processors
- H&H Chapters 7.5, 7.8.1-7.8.2, 7.9
Pipelines are very well described in H&H, but chapter 4 of both P&H4 and P&H5 also gives a very good alternative explanation.
Module 5: Memory Hierarchy
Key concepts: Temporal Locality, spatial locality, miss rate, hit rate, capacity, sets, blocks, associativity, direct mapped cache, instruction vs. data cache, N-way set associative cache, replacement policy, write policy, virtual memory, MMU, and page table.
Caches and Memory Overview
- H&H Chapters 5.5.1-5.5.6, 8.1-8.3
Section 8.3 is one of the key chapters of this module. In particular, it is important to understand both direct mapped caches and N-way set associative caches, both how addresses are divided and how the cache itself is organized. H&H has a very good description, but chapter 5 of P&H5 or P&H4 is also a good alternative to read.
Virtual Memory
- H&H Chapter 8.4 (except 8.4.6)
Virtual memory is a fundamental concept that is fairly well described in H&H. You may also check chapter 5 of P&H5 or P&H4.
Module 6: Parallel Processors and Programs
Key concepts: Moore's law, power wall, parallelism vs. concurrency, speedup, Amdahl’s law, data-level vs. task-level parallelism, SISD, SIMD, MIMD, Instruction-Level Parallelism (ILP), VLIW vs. Superscalar (basic idea), hardware multithreading, shared memory multiprocessor, cache coherence, false sharing, threads, multicore, semaphores, clusters, and message passing
Parallelism, Concurrency, Speedup, and ILP
- H&H Chapter 1.8, 3.6, 7.8.3-7.8.5
- P&H5 Chapters 1.7-1.8, 1.10, 4.10, 6.1-6.2
or P&H4 Chapters 1.5-1.6, 1.8, 4.10, 7.1-7.2
P&H cover a bit more material than H&H for module 6. As a consequence, the chapters in P&H may be seen as the key material for Module 6, but the H&H chapters are also very informative. This module covers a lot of different concept, meaning that the focus is rather breadth than depth.
SIMD, MIMD, and Parallel Programming
- H&H Chapter 7.8.6-7.8.9
- P&H5 Chapters 2.11, 3.6, 5.10, 6.3-6.7
or P&H4 Chapters 2.11, 3,6, 5.8, 7.3-7.7
Also for this part, P&H cover a bit more material than H&H. For module 6, it is very important to read and understand the lecture slides. Reading the selected chapters in the course books may be seen as a way to get deeper into the subject.