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
-
Read Computer Architecture · ch. 1–2
From transistors to logic gates, adders and memory cells
-
Read Computer Architecture · ch. 3–4
The ALU and the control unit
-
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.
-
Read Computer Architecture · ch. 5 · 27 min read
Computer Memory Hierarchy: Registers, Cache, RAM, and Virtual Memory
-
Explore Explorer
CPU Cache Explorer: watch locality turn misses into hits
Tune associativity and block size, replay access patterns, see every hit and miss.
-
Read Computer Architecture · ch. 6 · 23 min read
How a CPU Executes Instructions: The Fetch-Decode-Execute Cycle
-
Read Computer Architecture · ch. 7 · 27 min read
How Computer I/O Works: Buses, DMA, GPUs, Multicore CPUs, and SoCs
-
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.