11

Does a CPU consume less power when it is idle?

Now, I know that my CPU is capable of speedstepping, and will do so between 800MHz and 4.0GHz.

I do know that when running at 800MHz, the CPU will pull less power then when running at full speed;

My question is, if I were to disable speedstepping, and let my clock run at 4.0GHz all the time;

Is there a difference in power consumption when CPU cycles are spent in an application vs in idle cycles?

edit

On my system - runnig CPU-Z, I can see that when running at a static 4.0GHz, my CPU's core voltage is .512V, if I disable speed stepping, I never see that decrease;

I do not have a meter handy to actually test this, which is the reason for my question.

Here is a final rewording that may be better

Will a CPU, running at a static 4.0GHz and running at 100% user usage, consume more power then a CPU whose idle cycles are spent in the system idle process?

if this is too technical for SE, migration request to electrical engineering SE please.

5
  • Yes. Absolutely. I know for a fact that I'll drain my laptop battery in no time at all when I keep it under high CPU load. Same with my cell phone. Actually one of the biggest changes in power saving mode is to drop the CPU speed, that and the display backlight. – Jason C Sep 6 '16 at 23:41
  • ... Again, I am saying that I have set my clock to a static 4.0GHz. There is NO SPEEDSTEPPING. – Matt Clark Sep 6 '16 at 23:43
  • Right, my comment consisted of more than just its last sentence. Sometimes I like to present more than one idea at a time, using groups of words separated by e.g. a period. – Jason C Sep 6 '16 at 23:44
  • I understand that, however, both of those things speedstep... – Matt Clark Sep 6 '16 at 23:45
  • Nah not my laptop when it's in high performance mode. Cell phone, yeah. A good rough indicator of power usage is heat output. Monitor your CPU temp under load at a fixed clock. – Jason C Sep 6 '16 at 23:45
13

Does a CPU consume less power when it is idle?

Any modern CPU: yes. And old 6502 at 980KHz or similar from that era probably would not. It always drew more or less the same current at the same voltage, and if it had nothing to do, it entered busy waiting. Essentially it was always busy, even if only doing this: 1. 'Do I have some work?' 2. 'no, then let's go back to point 1.`

However, the speeds you mentioned (800MHz and 4.0GHz) point to a modern setup, as does the term SpeedStep, which I mostly remember from early intel CPUs in laptops.

Work on a CPU usually follows this pattern:

  • The instruction counter on a core is read, increased by one.
  • An instruction is read from that place.
  • that instruction is decoded (if needed) and acted upon.
  • Usually, go back to the start.

This means a CPU is continually busy doing things. They are doing things mean state changes in transistors, which consumes power. Higher speeds mean more changes, thus more power used.

Now, if we could stop the whole CPU by using the HLT instruction when it has nothing to do, then it would draw no (or significantly less) power. This means that you do not gain anything from having a faster CPU do the same operations in less time.

E.g.

  • Slow CPU taking 20 seconds for a job, drawing 35 Watt all the time.
  • Fast CPU doing the same job in 10 seconds but needing 70 Watt during this time.

Power used (CPU wise only) would come out the same in both cases.


There is a catch though, and the faster CPU often wants a higher voltage to be able to change it states faster. That means it may draw the same current, but power used is increased.

Thus it makes sense to scale back the CPU frequency (and the voltage) when it has significant periods with no productive tasks.


To answer this part:

If I were to disable speedstepping, and let my clock run at 4.0GHz all the time; Is there a difference in power consumption when CPU cycles are spent in an application vs. in idle cycles?

Yes, it would. If clock speed is always 4.0GHz, the voltage should always be sufficient for operation at that speed. No lowered voltages, no power saved.


As for SpeedStep:

First, I heard of this was around the Pentium mobile era (P-2, P3's, Pentium mobiles CPU's, ...). Windows/Intel platforms from that era shipped with something called SpeedStep, allowing the OS the lower the speed or your CPU and to lower the voltage supplied our CPU.

These days more of this functionality is in hardware or with help from ACPI, and the CPU is not just lowered in speed, but it can be placed in one of several lower powered states (C-states). Some of these merely halt the execution of instructions, some power down part of the chip. This part is a lot more complex since powering down a whole core, flushing its cache before that, and shutting down its memory interface also takes time (and power). Ditto for bringing it back on-line. Modern schedulers do a complex dance with multiple cores, speed of cores, heat budgets, and power states. They do not do this because making a more complex chip is fun. They do it because they can temporarily increase speed (turbo boost) and save power.

Disabling all this and always running at the same speed negates these advantages. It is only sensible to do when you are going to push the chip to its limits (e.g., when overclocking) since it causes fewer power fluctuations.

11
  • I am actually a little bit confused as to your answer here, lets throw out your second paragraph, that is irrelevant, I know shutting down a core, or slowing the clock ( and reducing voltage ) will consume less power. My question is regarding if I disable speedstepping - CPU-Z shows no change in core voltages. ( i do not have a meter handy ;) ) – Matt Clark Sep 6 '16 at 23:19
  • Also, please see the edit to my question. – Matt Clark Sep 6 '16 at 23:30
  • 7
    @MattClark Speedstepping is a different thing. Any remotely modern OS calls the halt instruction when it has nothing to do apart from waiting for the next interrupt, and the CPU consumes a lot less power while it's in this idle wait-for-interrupt mode. The voltage doesn't change but the current draw is vastly reduced. – Gilles 'SO- stop being evil' Sep 6 '16 at 23:49
  • 1
    The halt instruction has been in the Windows NT-family idle loop since day 1 (that is, NT 3.1). This was long before speedstepping or core parking was even possible in the hardware. (in the latter, the entire core is mostly powered down) – Jamie Hanrahan Sep 6 '16 at 23:51
  • @Gilles, thank you very much for this - this was a drastically different answer, and actually gave me more to look into. If you were to add this as an answer, it would be acceptable. – Matt Clark Sep 6 '16 at 23:52
0

At the same frequency, voltage and multiplier, if the cpu heats up when loaded, it means there is more power dissipation and that means it draws more power when doing the instructions the load requires.

Therefore, it is logical to assume that the power consumption is linearly correlated to the power dissipation difference of two different CPU speeds when both are idle.

For example: Under 23C room temperature, same cpu iddle 1 GHZ vs iddle 4 GHZ -> 28 Celsius vs 32 Celsius however under load it goes to 70 Celsius assuming that fan speed is constant , decreasing cpu speed will lead to %10 more saving of TDP (Thermal Design Power in Watts) when idle. And it seems at same Speed load differs %80 of power consumption.

Personally, i think, simple thinking gives you more advances for less effort than acquiring and using information (especially formal and academic). Building a knowledge base and utilization of it is rather an organisational task.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.