Computer Architecture
Every abstraction eventually runs on real silicon. Architecture is where code meets voltages, gates, and clock ticks.
It begins with a switch. A transistor that is either on or off gives you a bit, and a handful of transistors wired together give you a gate that computes AND, OR, or NOT.
Start from that switch and build up: gates become adders, adders become a datapath, and a datapath plus control becomes a processor that actually executes instructions.
The instruction set is the seam between hardware and software — a small, fixed vocabulary the hardware implements and every compiler and program above it is written against.
Performance is decided here. Pipelining, caches, and the memory hierarchy explain why one loop runs ten times faster than another that looks identical — and how to write code that uses the hardware well.
Modern processors preserve a simple sequential model while executing very differently underneath: pipelining, out-of-order execution, branch prediction, and caches all hide latency behind that model.
Understand the machine and you stop being surprised by it. You’ll know why things are slow, where the limits are, and how to work with the hardware instead of against it.
Everything above depends on this layer. Every language, framework, and abstraction eventually compiles down to instructions this machine runs, one clock tick at a time.