Skip to main content

Learn · Topic path

Computer Architecture

Start with a single transistor and finish with a machine that fetches, decodes and executes instructions. Each step adds one layer, so by the end the CPU, its caches and its buses are parts you can name rather than a black box.

Chapters
7
Explorers
3

Recommended path

  1. Read Computer Architecture · ch. 1–2

    From transistors to logic gates, adders and memory cells

  2. Read Computer Architecture · ch. 3–4

    The ALU and the control unit

  3. Explore Explorer

    Floating-Point Explorer: what an FPU actually stores

    Flip the bits of an IEEE 754 float and see sign, exponent, fraction and rounding error update.

  4. Read Computer Architecture · ch. 5 · 27 min read

    Computer Memory Hierarchy: Registers, Cache, RAM, and Virtual Memory

  5. Explore Explorer

    CPU Cache Explorer: watch locality turn misses into hits

    Tune associativity and block size, replay access patterns, see every hit and miss.

  6. Read Computer Architecture · ch. 6 · 23 min read

    How a CPU Executes Instructions: The Fetch-Decode-Execute Cycle

  7. Read Computer Architecture · ch. 7 · 27 min read

    How Computer I/O Works: Buses, DMA, GPUs, Multicore CPUs, and SoCs

  8. Build Article · 12 min read

    x86-64 Assembly Hello World in Docker (NASM & Linux Guide)

    Your first program at the instruction level

Every chapter

Frequently asked questions

Do I need an electronics background to start?

No. The path starts from what a transistor does as a switch and builds every later idea, from logic gates to the control unit, on top of that. No circuit design or physics beyond that is assumed.

Why learn computer architecture as a programmer?

Performance and correctness problems often come from layers below your code: cache misses, memory layout, how instructions are executed. Knowing those layers lets you reason about them instead of guessing.

Should I learn architecture before operating systems?

It helps. The memory chapter and the CPU chapter introduce caches, virtual memory and the fetch-decode-execute cycle, which the operating systems path then relies on. The operating systems path starts with the memory chapter for that reason.

Is there code to write on this path?

Mostly reading and experimenting. The CPU Cache Explorer lets you try the memory chapter's ideas interactively, and the final step writes and runs an x86-64 assembly Hello World in Docker.