How does TurboBoost technology work with software applications?

jana519

Senior member
Jul 12, 2014
771
100
106
I have a question about this. Say I am playing a game like Skyrim on my PC, and also using x264 recording software (like OBS) to record the game to my hard drive. As an example, if I have a Core i5-4570 (3.2Ghz/3.6 Turbo), would it TurboBoost those cores that are doing the encoding? How does TurboBoost work with the scheduler when there are differing workloads across all 4 cores, does it discriminate or not?
 

Bubbleawsome

Diamond Member
Apr 14, 2013
4,833
1,204
146
If all 4 cores are under high load, all 4 cores will turbo, but to a slightly lower speed than max turbo. If only two cores are under high load, they will turbo. Whatever process is causing running on the cores to load them that much will naturally be the program that turbos.

I could be horribly wrong though.
 

ShintaiDK

Lifer
Apr 22, 2012
20,378
145
106
Turbo doesn't care how many applications you run. The PCU in the CPU manages it depending on power draw, temperature etc.

It will boost all used cores to whatever it can within parameters.
 

jana519

Senior member
Jul 12, 2014
771
100
106
Turbo doesn't care how many applications you run. The PCU in the CPU manages it depending on power draw, temperature etc.

It will boost all used cores to whatever it can within parameters.

So if the CPU hits the temp ceiling and has to drop 3 cores to base clock and only 1 core can turbo (+400 Mhz), is there any discrimination on how the Turbo is applied? if I have 4 applications running which all use one core, and 3 applications are light workloads and one application is a heavy processor intensive workload, does the intensive workload get the Turbo core?

I guess it implicitly does, because if the other workloads are light they wouldn't need 3Ghz on a core anyways. Guess I answered my own question lol. :p
 
Last edited:

TheELF

Diamond Member
Dec 22, 2012
3,967
720
126
Also look into quicksync which does x264 compression through the iGPU.
Look into your bios as well it's pretty usual that you can lock all your cores to the top turbo speed,just keep an eye at the temps.
 

VirtualLarry

No Lifer
Aug 25, 2001
56,226
9,990
126
So if the CPU hits the temp ceiling and has to drop 3 cores to base clock and only 1 core can turbo (+400 Mhz)

We've had this discussion before, but my understanding is that there is only one clock frequency for the whole CPU, with Intel. (This may be different with Skylake's PCU, and SST tech.)

AMD implemented independent clock domains per core in hardware, and they were too hard to effectively manage in Windows, so they dropped that idea, AFAIK, in later CPUs.

Edit: For example, the OCCT graphs only have a single value for CPU freq. on Intel.
 

mikeymikec

Lifer
May 19, 2011
17,575
9,266
136
@ VL

Running CPUID HWMonitor on my Haswell i5 suggests that you're not correct; while the core clock speeds match most of the time, while loading a tab or typing, I've definitely seen variations in core clock speeds (sometimes 3 cores run at a higher speed, sometimes just one).
 

VirtualLarry

No Lifer
Aug 25, 2001
56,226
9,990
126
@ VL

Running CPUID HWMonitor on my Haswell i5 suggests that you're not correct; while the core clock speeds match most of the time, while loading a tab or typing, I've definitely seen variations in core clock speeds (sometimes 3 cores run at a higher speed, sometimes just one).

That was the argument against it, but reading the sensor on each core, or running a short benchmark on each core, is not going to be perfectly syncronized, thus each measurement happens at a slightly different offset in time, thus those are not an accurate picture.

In the other discussion, I quoted Intel documentation that pretty-much stated what I said, that there is only one frequency for the chip. (The operating frequency of the enabled CPU Cores, I mean.)

https://software.intel.com/en-us/articles/intel-power-gadget-20

Does this Intel software, display multiple core frequencies, or just one. And if just one, then you have to ask yourself, Why?
 
Last edited:

tcsenter

Lifer
Sep 7, 2001
18,338
253
126
High loading on ALL cores will result in Turbo Boost of like 200 or 300MHz over default. Turbo Boost really benefits very short periods of high utilization but far less so for long periods.
 
Last edited:

Timur Born

Senior member
Feb 14, 2016
277
139
116
All cores are clocked the same. When some cores are turned *off* (C3/5/7) you get higher frequencies on the remaining core(s).

If HwMonitor displays different clocks because C1E clocks cores down and some cores might be in deeper C states or higher Turbo from a moment before in between measurements while the display is averaged over a time-span. You can turn on/off C1E via Throttlestop and then use the "More Data" option to get an idea of how many transitions happen in even a single second.

When only one or two cores are used then the load is switched around between cores, so the active core(s) are permanently switched around, too. As a consequence the turbo clocks are switched around between whatever cores are active at a given time and thus the (time interval) readings between cores differ.

On Windows installations where Core Parking is active in the power profiles there might be less switching around of active cores, so the frequency readings might also be more stable. But it doesn't really matter.

1 core active = highest Turbo on that single core, other cores are off
2 cores active = 2nd highest Turbo on both cores, other cores are off
3-4 cores active = lowest Turbo on all cores
 

Timur Born

Senior member
Feb 14, 2016
277
139
116
For single cores to get maximum turbo clock the other cores have to be at least in C3 ("The core flushes the contents of its L1 instruction cache, L1 data cache, and L2 cache to the shared L3 cache, while maintaining its architectural state. All core clocks are stopped at this point. No snoops."). Of course you can set some BIOS/EFI so that it doesn't care about the number of cores, the results then depend on your CPU.

My 4790K at 1.271v doesn't run stable at higher than 4.4 gHz with all cores being active. It does run at 4.5 to 4.6 gHz with one or two cores, though. And since most software only uses 1-2 cores regularly it makes sense to set my BIOS in such a way that 1-2 cores get higher clocks.

This is the default behavior, too. The idea behind that behavior is that less cores draw less power and create less heat, thus they can be clocked higher without issues while the whole CPU package is getting cooled (heat spreads to offline parts of the CPU as well).
 
Last edited:

Socio

Golden Member
May 19, 2002
1,730
2
81
For single cores to get maximum turbo clock the other cores have to be at least in C3 ("The core flushes the contents of its L1 instruction cache, L1 data cache, and L2 cache to the shared L3 cache, while maintaining its architectural state. All core clocks are stopped at this point. No snoops."). Of course you can set some BIOS/EFI so that it doesn't care about the number of cores, the results then depend on your CPU.

My 4790K at 1.271v doesn't run stable at higher than 4.4 gHz with all cores being active. It does run at 4.5 to 4.6 gHz with one or two cores, though. And since most software only uses 1-2 cores regularly it makes sense to set my BIOS in such a way that 1-2 cores get higher clocks.

This is the default behavior, too. The idea behind that behavior is that less cores draw less power and create less heat, thus they can be clocked higher without issues while the whole CPU package is getting cooled (heat spreads to offline parts of the CPU as well).

Seems to me they would be much better off and attain much better performance forcing the spreading of the workload between cores rather than have one getting pegged and boosting it.

Core one say gets over 75% then work load overflow is transferred to Core two and so on. Or if you have dual multi-core processors the Core one on processor one transfers to Core one on processor two etc... spreading the power draw and lowering the heat.

It is a given software companies are slow to adopt/use multi-cores but if it could be done at the hardware level it takes it out of their hands.
 

Timur Born

Senior member
Feb 14, 2016
277
139
116
It is my understanding that spreading low load over multiple cores serves the need for power-efficiency, because then the CPU package can enter a lower P state. But that's just for savings and heat, not for performance.

For the example given earlier, where several cores are utilized only lightly I argue that a single core at higher clock-rate can perform equally well or even better, especially when cache data is shared between threads.

Good efficiency needs low load spread over many low frequency cores to allow for lower p-states than when a single core is utilized.

Good performance needs high load to be concentrated on fewer high frequency cores, unless there is so much parallel workload available that many low frequency cores can be highly (!) utilized.
 

hhhd1

Senior member
Apr 8, 2012
667
3
71
Yes, they do. The Cores are all clocked the same, they don't clock separately.
on laptops running linux, you can set core multiplier independently, this has been the case since the introducing of dual cores.

and in windows on sandybridge, running a stress test on cpu, while putting affinity to one core only, result on that cores achiving higher constant turbo, and the other core(s) remain at lower turbo.
 

GammaLaser

Member
May 31, 2011
173
0
0
All cores are clocked the same.

The Cores are all clocked the same, they don't clock separately.

Not necessarily, for newer server chips anyway. Not sure if the same technology has trickled down to desktop/mobile too.

AnandTech said:
http://www.anandtech.com/show/8423/intel-xeon-e5-version-3-up-to-18-haswell-ep-cores-/5


PowerHEp.png
 
Last edited:

know of fence

Senior member
May 28, 2009
555
2
71
Not necessarily, for newer server chips anyway. Not sure if the same technology has trickled down to desktop/mobile too.

Great find, it makes sense for servers, boosting even 4 cores out of 16 at the same frequency would be a giant waste. Only boosting with 1,2,3 or 4 active out of 16 cores would be pointless...
However servers probably can separate the tasks/VMs, so running them at different clocks becomes possible. Running parallelized multi-threaded desktop tasks, implies a synchronicity. As far as trickle down theories are concerned... apologies for posting a meme, but I think it's relevant.

b761280d88e97a1a4be9daaaeca7d145e4cb01a55a6208043f5b2db23976fb6b.jpg


 

JoeRambo

Golden Member
Jun 13, 2013
1,814
2,105
136
Haswell is overall epic in power management side. In other thread here i got idea about running cores at 100% windows power plan. So now they are @3.5Ghz (and turbo to 4.4Ghz as needed) all the time and seem snappier due to this result.
SURE I am running fixed voltage, but looking at CPU power usages it either is the same or even improved? Incredible stuff if you ask me :)
 

sm625

Diamond Member
May 6, 2011
8,172
137
106
It will turbo boost when the FP load is low even if you are stressing multiple cores with integer heavy code. While playing skyrim while encoding, I would expect the average clock speed to be 3.3GHz.
 

TheRyuu

Diamond Member
Dec 3, 2005
5,479
14
81
Seems to me they would be much better off and attain much better performance forcing the spreading of the workload between cores rather than have one getting pegged and boosting it.

Core one say gets over 75% then work load overflow is transferred to Core two and so on. Or if you have dual multi-core processors the Core one on processor one transfers to Core one on processor two etc... spreading the power draw and lowering the heat.

It is a given software companies are slow to adopt/use multi-cores but if it could be done at the hardware level it takes it out of their hands.

This would likely not be good for both power and performance though. You want to keep it moving around the least amount possible for cache locality. Also switching between the power saving states is not free and is progressively worse the deeper the sleep is (e.g. C6/C7 will be the slowest to wake up).

It also highly depends on the load as to what will occur when it comes to CPU scheduling (which Windows takes care of not the hardware). For example Windows is aware of SMT (Hyperthreading) and will schedule around it so that the workload is split between "real" cores first[1]. Windows also doesn't use core parking anymore with hyperthreaded CPU's as far as I can tell. They did away with that in Windows 8/8.1 sometime and still don't use it in W10 AFAIK although the options are there. I don't know if there's certain hardware where it does get enabled by default.

[1] Yes I am aware there is no such thing as real cores and hyperthreaded cores. I am just using it as a way to describe the behavior here. The only thing the OS sees is two virtual threads per core, they are both the same.
 
Last edited: