Multicore processor
A multicore processor puts several complete CPUs (cores) on one chip, so they can run different tasks — or pieces of the same task — genuinely at the same time. Instead of one chef cooking faster and faster, you hire four chefs. The shift happened around 2005 not by choice but by necessity: clock speeds hit a power-and-heat wall (Dennard scaling ended), and adding cores became the only way to keep delivering more performance per chip.
The catch is that software has to be written to use many cores in parallel, and most problems don't split perfectly. Amdahl's law is the cold shower: if even 10% of a program must run sequentially, no number of cores can speed it up more than 10×. Cores must also share caches and main memory coherently, so that when one core writes a value, the others see the update — cache coherence protocols and the network-on-chip that connects cores are where much of the engineering difficulty now lives.
Modern chips often mix big high-performance cores with small efficient ones (Arm big.LITTLE, Apple's P/E cores) so the OS can match the right core to each task — performance when you need it, battery life when you don't.