The CPU: Fetch, Decode, Execute
A CPU does one conceptually simple thing, billions of times per second: fetch the next instruction from memory, decode what it means, execute it. Every program ever written reduces to this loop.
Machine instructions are tiny: load this memory address into a register, add two registers, compare, jump somewhere else if the result was zero. Registers are the CPU's hands — a few dozen ultra-fast storage slots (64 bits each on modern machines) where all actual work happens. The program counter register holds the address of the next instruction; jumps just overwrite it.
Clock speed (say 3 GHz — 3 billion cycles per second) sets the rhythm, but modern CPUs don't do one instruction per cycle. They pipeline (overlap the fetch/decode/execute stages of many instructions like an assembly line), execute out of order when instructions don't depend on each other, and are superscalar (multiple instructions per cycle). A modern core juggles hundreds of instructions in flight.
Branch prediction: pipelines only stay full if the CPU guesses which way an if will go before it's computed. Predictors are right ~95%+ of the time; a wrong guess flushes the pipeline (~15-20 cycles wasted). This is why sorting data before a branchy loop over it can make the loop dramatically faster — famous StackOverflow question, real effect.