How CPUs Use Multiple Cores