Skip to main content

Learning Resources

This module is populated from the local chunked books in library/raw/semester-04-systems-programming/books and from a short list of validated external resources. Use this page as a source map, not as an instruction to read everything.

Source Stack

SourceRoleHow to use it in this module
Computer Organization and Design (Patterson & Hennessy)Primary teaching sourceDefault escalation for ISA, arithmetic, pipelining, cache, virtual memory, and I/O
CODE (Petzold)Conceptual foundationUse when the Patterson treatment is too abstract and you want a from-scratch, hardware-first picture
The C Programming Language (K&R)Cross-referenceUse when mapping C constructs onto the assembly you are reading
SICPPeripheralOccasional reinforcement for the abstract-machine mental model; not the main path for this module

Note: Computer Systems: A Programmer's Perspective (CSAPP) is referenced widely in the field but is not available in the local book chunks. If you want a second take on caches, virtual memory, and exceptions at the same depth as Patterson, CSAPP is the best alternative external source.

Resource Map by Cluster

Cluster 1: The ISA and the Stored-Program Machine

NeedBest local chunkWhy
what an ISA isCOD 2.1 IntroductionCleanest first pass at "the computer's language"
operands and registersCOD 2.3 Operands of the Computer HardwareGrounds the idea of a register file
calling conventionCOD 2.8 Supporting Procedures in Computer HardwareBest explanation of stack frames
x86 specificsCOD 2.17 Real Stuff -- x86 InstructionsPragmatic side-by-side with MIPS
ARM specificsCOD 2.16 Real Stuff -- ARM InstructionsUseful comparative read
from C to machineCOD 2.12 Translating and Starting a ProgramEnd-to-end view of compilation and linking
hardware ground truthCODE: Registers and BussesLow-level construction of the register file

Cluster 2: Arithmetic, Logic, and Control

NeedBest local chunkWhy
two's complementCOD 2.4 Signed and Unsigned NumbersClean derivation of the representation
addition and subtractionCOD 3.2 Addition and SubtractionEstablishes flag semantics
multiplicationCOD 3.3 MultiplicationShift-and-add baseline, Booth cited
decisions and branchesCOD 2.7 Instructions for Making DecisionsCanonical branch taxonomy
floating pointCOD 3.5 Floating PointBest IEEE-754 walkthrough in the book
ALU built from scratchCODE: The Arithmetic Logic UnitReinforces what an ALU is by building one

Cluster 3: Memory Hierarchy and Cache

NeedBest local chunkWhy
why the hierarchy existsCOD 5.1 IntroductionBest first pass on locality and levels
cache geometryCOD 5.2 The Basics of CachesFull cache mechanics, with examples
associativity and replacementCOD 5.2 Caches (Part 6)Trade-offs across geometries
measuring cache performanceCOD 5.3 Measuring and Improving Cache PerformanceClassic miss-rate analysis
cache on real hardwareCOD 5.10 Real Stuff -- Nehalem/Opteron Memory HierarchiesGrounds the model in real chips

Cluster 4: Pipelining and Parallel Execution

NeedBest local chunkWhy
pipelining intuitionCOD 4.5 An Overview of PipeliningBest first motivation
datapath and controlCOD 4.6 Pipelined Datapath and ControlWalks the stages with actual registers
data hazardsCOD 4.7 Data Hazards -- Forwarding vs StallingCanonical load-use discussion
control hazardsCOD 4.8 Control HazardsPrediction, resolution, and misprediction cost
real superscalar coreCOD 4.11 Opteron X4 PipelineAnchors the abstract model to a real core
SIMD and vectorCOD 7.6 SISD/MIMD/SIMD/SPMD and VectorShort and clear SIMD introduction

Cluster 5: I/O and Virtual Memory Basics

NeedBest local chunkWhy
virtual memoryCOD 5.4 Virtual MemoryStandard address-translation walkthrough
page tables and TLBCOD 5.4 Virtual Memory (Part 5)Focused on the TLB's role
protection and permissionsCOD 5.4 Virtual Memory (Part 8)PTE bits and privilege
exceptionsCOD 4.9 ExceptionsHow the CPU enters the OS
MMIO and busesCOD 6.5 Connecting Processors, Memory, and I/O DevicesTopology of the I/O subsystem
performance framingCOD 7.10 Roofline -- A Simple Performance ModelUnifies memory- vs compute-bound reasoning
early performance framingCOD 1.4 PerformanceCPU performance equation baseline

External Resources (validated)

Use Rules

  • For any topic, start with the concept page. Only open a book chunk when the concept page and practice sheet have not fixed the gap.
  • Use CODE when the Patterson treatment assumes too much; use CODE first if you have never seen hardware at all.
  • When chasing a performance question, favour measurement (perf, objdump, Compiler Explorer) over reading. Books describe the model; your machine tells you what is actually happening.
  • Save CSAPP as an optional second source -- it is not available locally in this repo's chunks.