Program is a set of instructions (binary code written for a specific CPU)
CPU has a Pipeline, Execution Engine, Math Processesor, etc. CPU runs on a clock (i.e. 2GHz)
System Memory (RAM) holds program before sending to CPU
Multi-threaded application
Threads are units of execution (Word app: Keyboard, Print, Save file)
Scheduler is a software switch that can switches between threads according to timeslice (1ms) and priority. The timeslice is so short that user believes it is simultaneous.
CPUs
Nowdays we have multi-tasking OS + multi-threaded applications
Hyperthreading split a CPU's Pipeline but would be blocked if threads encountered the Math Processor.
Multi-core CPUs have "cores" where each core has it's own Pipeline, Execution Engine, Math Processor, etc. This is where the industry has seemed to go.
Multi-CPU is the most powerful but is expensive. A lot of servers use multi-CPU.