3 ms·
Another thing you're not taking into account is that on modern CPUs, execution units that aren't being used are put in low-power states. So in the simplest case
by pmjordan 18y ago
Another thing you're not taking into account is that on modern CPUs, execution units that aren't being used are put in low-power states. So in the simplest case, pure integer code uses less power than integer/floating-point code, and a core doing nothing at all goes into "deep sleep".
A practical consequence of this appears on a modern Core2 laptop, if you have a computational task of fixed size and let it run, once with speedstep locked to the lowest level and once with dynamic clocks. Obviously the dynamically clocked one will finish more quickly and sit idle after that. If you let it sit idle until the low-clocked one has finished, you'll find the low-clocked one will have consumed more total energy. This means that for occasional-load scenarios, the dynamic clocking gives longer battery life, and for heavy load it gives shorter waits.
Spreading does make sense even in this light of course, as things like shared caches, memory and bus controllers need to run as soon as at least one core is active.