DM548, 2020 — Material¶
The main text book is
William Stallings: Computer Organization and Architecture — Designing for Performance, Global Edition, 10th edition, Pearson, 2015.
It can be bought in the book store.
Introduction¶
Chapter 1 and 2.
Supplemental Material¶
Video, “What’s Your Computer Actually Doing?”, Tom Scott
Video, “Von Neumann Architecture”, Computerphile
Video, “EDSAC Rebuild (Cambridge University’s 1st Computer)”, Computerphile
Video, “Punch Card Programming”, Computerphile
Video, “Mainframes and the Unix Revolution”, Computerphile
Video, “The Factory of Ideas: Working at Bell Labs”, Computerphile
Video, “UNIX Special: Profs Kernighan & Brailsford”, Computerphile
Video, “Bell Labs’ Research (Prof Brian Kernighan)”, Computerphile
Video, “Is it the End for Moore’s Law?”, Computerphile
Video, “Hello (World) Abstraction!”, Computerphile
Instruction Sets and x86-64 Assembly¶
Chapter 12 and 13.
Lab 4 (the last assembly lab): unsolved exercises from previous labs, and then Assignment 1.
Additional Resources¶
x86(-64) Instruction Reference (note that the order of operands is the reverse of the AT&T syntax)
Table of x86-64 Linux system calls
Use “
man 2 <syscall name>
” to get the man page for a specific system call.
-
SSE, Streaming SIMD Extensions
Getting started on Windows 10:
Install WSL (or WSL 2), e.g., see Ubuntu/Linux on Windows.
See the Ubuntu instructions.
Getting started on Ubuntu: install the package
build-essential
. This is already installed on the machines in the IMADA Computer Lab.Getting started on macOS: unfortunately I have not yet found a good way to install the required programs. Please install your favorite Linux distribution in a virtual machine, or use the IMADA Computer Lab instead.
Supplemental Material¶
Video, “Characters, Symbols and the Unicode Miracle”, Computerphile
Video, “Endianness Explained With an Egg”, Computerphile
Video, “GOTO, Goto & Goto”, Computerphile
Video, “Essentials: Hidden Pointers”, Computerphile
Video, “Bootstrapping EDSAC: Initial Order”, Computerphile
Video, “Hello World (Assemblers, Considered Harmful?!)”, Computerphile
Video, “Wheeler Jump”, Computerphile
Video, “ESSENTIALS: Subroutines & The Wheeler Jump”, Computerphile
Video, “What is Bootstrapping?”, Computerphile
Computer Arithmetic¶
Chapter 9 and 10.
Lecture slides (updated 14 Sep)
Exercises: Sheet 1
Supplemental Material¶
Video, “Binary Addition & Overflow”, Computerphile
Video, “Binary: Plusses & Minuses (Why We Use Two’s Complement)”, Computerphile
Video, “Floating Point Numbers”, Computerphile
Video, “Floating Point Numbers (Part1: Fp vs Fixed)”, Computerphile
Video, “Floating Point Numbers (Part2: Fp Addition)”, Computerphile
Video, “Why Use Binary?”, Computerphile
Video, “Where did Bytes Come From?”, Computerphile
Digital Logic¶
Chapter 11.
Lecture slides (updated 17 Sep)
A Top-Level View and Interconnection Structures¶
Chapter 3 and Appendix C.
Internal and External Memory¶
Chapter 5 and 6.
Supplemental Material¶
Video, “Magnetic Media (Floppies and Tapes)”, Computerphile
Video, “Error Detection and Flipping the Bits”, Computerphile
Video, “Error Correction”, Computerphile
Video, “Multiple Dimension Error Correction”, Computerphile
Video, “Correcting Those Errors”, Computerphile
Video, “The Perfect Code”, Computerphile
Video, “Error Correction & International Book Codes”, Computerphile
Video, “Reed Solomon Encoding”, Computerphile
Video, “Hamming codes, h■w to ov■rco■e n■ise”, 3Blue1Brown
Video, “Hamming codes part 2, the elegance of it all”, 3Blue1Brown
I/O¶
Chapter 7.
Processor Structure and Function¶
Chapter 14.
RISC¶
Chapter 15.
Superscalar Processors¶
Chapter 16.
Parallel Processing and Multicore¶
Chapter 17 and 18.
System Programming in C¶
Introduction: lecture slides, examples
I/O: lecture slides
User-defined types: lecture slides, examples
Dynamic memory: lecture slides, examples
Various: lecture slides, examples
Libraries: lecture slides, examples
Lab 1: exercises
Lab 2: exercises, LinkedList_String.h
Lab 3: exercises, BinaryTree.h, BinaryTree.c
Additional Resources¶
Sanitizers: