Idea - deferred core activation

VirtualLarry

No Lifer
Aug 25, 2001
56,475
10,137
126
I was thinking, to save power, instead of halting each CPU core depending on load, why not have one core active, and then only bring the other cores out of power-save mode when that core hits 90% utilization or better. The idea being that if you have multiple threads running, other cores would only be utilized when the first was maxed out, and so on.

This would be a power optimization, not a performance optimization. I don't know if some OS cooperation would be required or not. It would require multi-core CPUs to be able to individually power-down cores when not in use.

Think of it as an enhancement to SpeedStep, or CnQ.
 

Acanthus

Lifer
Aug 28, 2001
19,915
2
76
ostif.org
I think they are headed in that direction now. Although atom seems to be the king of power optomization right now, performance needs are going to raise the bar above what atom can provide in the future.

As far as speedstep goes it can fully power down unused cores now, as well as throttle back voltage and speed independantly based each cores utilization. Your suggestion seems to go one step further in forcing the OS to use one thread until the CPU approaches 100% utilization.

I guess it would come down whether one core at 100% uses more power than 2-4 throttled back and undervolted cores at 25%.
 

Idontcare

Elite Member
Oct 10, 1999
21,118
59
91
I always figured they'd get to the point where the CPU is always kept at 95-99% load (iso-utilization) and the clockspeed/Vcc of the core was what scaled dynamically from zero to some max allowed GHz.

When I see a CPU utilization of 40% I just think why not reduce the clockspeed to 1/2 and have the utilization be 80%? You are still getting the same amount of work done in the same time, just at much lower power consumption.

I though CnQ was headed in that direction but it never fully got there.

This could be implemented in addition to VirtualLarry's idea, and if implemented with independent core clock domains like Phenom has then it could in theory be improved even further.
 

taltamir

Lifer
Mar 21, 2004
13,576
6
76
how is it any different than what i7 does? turning off a core that is not in use is ust another way of saying start with them all turned off and turn them on when needed... the i7 already has a method of cutting power completely to an individual core, and does exactly that.

Anyways, sometimes having multiple cores work at lower mhz might consume less power than having one core working at full mhz, so that might also be taken into account. I am sure they have optimizations done to chose how much cores and at what speed to run each one depending on load.
 

Idontcare

Elite Member
Oct 10, 1999
21,118
59
91
Originally posted by: taltamir
how is it any different than what i7 does? turning off a core that is not in use is ust another way of saying start with them all turned off and turn them on when needed... the i7 already has a method of cutting power completely to an individual core, and does exactly that.

Anyways, sometimes having multiple cores work at lower mhz might consume less power than having one core working at full mhz, so that might also be taken into account. I am sure they have optimizations done to chose how much cores and at what speed to run each one depending on load.

Well the i7 turns off a core only when it is completely unused. If you have two threads, each consuming maybe 10% of a single core's processing ability, then you are going soo two cores fully powered up and running at any given time, each with 10% utilization.

VirtualLarry's idea is to keep just one core on, handling two threads so total utilization would be 20% and intentionally keep the remaining three cores powered down.

Once you reach 4 threads with any given thread having more than around 5% core utilization you will see all four cores fully powered up but no more utilized than the paltry single-digit percentage.

Having lower mhz cores versus higher ones was the idea I posited...as you can move Vcc down as the mhz moves down so your power savings is even further optimized. This was why I suggested they have circuitry that monitors core utilization and dynamically scale the clockspeed such that whatever the processing needs the clockspeed is always low enough (or high enough) such that the utilization is kept somewhere above 90%.

Maybe that means your i7 is running at 400MHz with a Vcc of 0.85V while you surf the web with core utilization showing as 90% in task manager...if power savings were the objective then something like this could be a potential solution.
 

taltamir

Lifer
Mar 21, 2004
13,576
6
76
are you sure? because windows has at least 40 background processes running at any one time... that means that none of the cores will ever, EVER, shut down if this is how the i7 worked.

my computer is running 79 processes at the moment.
 

Idontcare

Elite Member
Oct 10, 1999
21,118
59
91
Originally posted by: taltamir
are you sure? because windows has at least 40 background processes running at any one time... that means that none of the cores will ever, EVER, shut down if this is how the i7 worked.

my computer is running 79 processes at the moment.

Yes, I am quite positive.

Having threads != having active threads

Your 79 processes are not active, you have maybe 2-3 that are active but in any event they use less than the threshold minimum utilization required to activate the P0 state on your CPU.

My QX6700 has no problem staying in idle state (1.6GHz and 1.12 Vcore) under C1E/EIST in Win XP with 65 processes showing in task manager and Nero Showtime playing a DVD ripped to my hard-drive...CPU utilization is ~6%. The utilization has to get above 10% (roughly, not sure on precise trigger value) before the full-load power-state is activated.

Obligatory screenshot with proof
 

nOOky

Platinum Member
Aug 17, 2004
2,904
1,924
136
I'm not quite sure of this, but won't one core then wear out faster? If it utilizes the same core every time, and that core happens to be running at 80% constantly, while the others are off, heat alone will kill it quicker correct?
 

exar333

Diamond Member
Feb 7, 2004
8,518
8
91
Originally posted by: Idontcare
Originally posted by: taltamir
how is it any different than what i7 does? turning off a core that is not in use is ust another way of saying start with them all turned off and turn them on when needed... the i7 already has a method of cutting power completely to an individual core, and does exactly that.

Anyways, sometimes having multiple cores work at lower mhz might consume less power than having one core working at full mhz, so that might also be taken into account. I am sure they have optimizations done to chose how much cores and at what speed to run each one depending on load.

Well the i7 turns off a core only when it is completely unused. If you have two threads, each consuming maybe 10% of a single core's processing ability, then you are going soo two cores fully powered up and running at any given time, each with 10% utilization.

VirtualLarry's idea is to keep just one core on, handling two threads so total utilization would be 20% and intentionally keep the remaining three cores powered down.

Once you reach 4 threads with any given thread having more than around 5% core utilization you will see all four cores fully powered up but no more utilized than the paltry single-digit percentage.

Having lower mhz cores versus higher ones was the idea I posited...as you can move Vcc down as the mhz moves down so your power savings is even further optimized. This was why I suggested they have circuitry that monitors core utilization and dynamically scale the clockspeed such that whatever the processing needs the clockspeed is always low enough (or high enough) such that the utilization is kept somewhere above 90%.

Maybe that means your i7 is running at 400MHz with a Vcc of 0.85V while you surf the web with core utilization showing as 90% in task manager...if power savings were the objective then something like this could be a potential solution.

Since the i7 uses Hyperthreading, would it still have two cores running at 10% utilization in your example or would it be one core with two threads each utilizing 10%? (effectively utilizing 20% of the one activated core).

I am not nick-picking, but I want to be sure I understand your clarification on how this works. :)
 

Idontcare

Elite Member
Oct 10, 1999
21,118
59
91
Originally posted by: nOOky
I'm not quite sure of this, but won't one core then wear out faster? If it utilizes the same core every time, and that core happens to be running at 80% constantly, while the others are off, heat alone will kill it quicker correct?

Yes, this is technically true, but we are talking about shortening a 500yr lifespan to something around maybe 100-200 yrs. Still shorter, but of absolutely zero practical consequence.

Originally posted by: ExarKun333
Since the i7 uses Hyperthreading, would it still have two cores running at 10% utilization in your example or would it be one core with two threads each utilizing 10%? (effectively utilizing 20% of the one activated core).

I am not nick-picking, but I want to be sure I understand your clarification on how this works. :)

In practice, for those brief moments of time in which both threads are residing on the same physical core then SMT will do what it was designed to do and each thread will be forced to run in parallel on the SMT hardware on that core. So the physical core will be 20% utilized but in task manager it will report two logical cores as being 10% utilized each.

Originally posted by: SunnyD
"Core utilization" is an arbitrary metric.

Tell me a metric which isn't.