Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Can anyone explain how Windows effectively limits the CPU?

Last time I tried some tricks to let my laptop not overheat, so I tried limiting the CPU to 70%.

As for my suprise it stopped my laptop from overheating - even when launching CPU intensive applications which caused my laptop to overheat and shut down, didn't overheat my laptop anymore!

I looked at task manager but the "CPU intensive" application still uses ~95% of CPU and the windows task manager shows a total of 100% CPU usage.

I have limited the CPU usage here ("plugged in" option was on 70% [both min and max] when testing the CPU intensive application):

enter image description here

How does Windows do this magic?

I see 100% CPU usage yet my CPU does not overheat. And I do not see any performance differences.

Does Windows limit the CPU speed? Like, if I have a 2.4 GHz processor, on 70% it will only have 1.68 GHz when limited? How is this possible (changing the CPU speed)? I thought you can only underclock when in BIOS?

If not, how does Windows accomplish this if not by changing the speed?


Side question: If it's about the speed, is there a way to set the CPU max state to 200% ?

share|improve this question
    
Yes Windows limits the CPU speed. Using ACPI frequency, multipliers and voltage can be changed 'actively' (i.e. when required without needing to manually change in the BIOS). With your above settings watch the frequency actively change in Resource Monitor (rather than just in Task Manager (which only show's the usage of the current processor speed, not the speed). – HaydnWVN Apr 9 '13 at 10:45

This phenomenon is called processor Frequency Scaling, and it is done to address power-savings and thermal considerations. Scaling is performed by reducing the clock multiplier on the CPU, and thus reducing its overall frequency (GHz). Most processors operate at 100-166Mhz, but the clock rate allows it to perform multiple operations per cycle. My 3.8GHz CPU is actually a 100Mhz with a clock multiplier of x38. Scaling as you describe it is most common with Laptops, to balance performance with battery life and the systems limited ability to evacuate heat.

Frequency Scaling occurs below the OS, such that the OS will see the reduced capacity as 100%, so you will still see processes taking 100% CPU; its just 100% of the available CPU, not 100% of the total unscaled capacity.

Though Scaling occurs at the firmware level, Windows can automatically adjust the the Scale of the CPU based on its current needs, and accomplishes this via the Advanced Configuration and Power Interface (ACPI) to the BIOS/UEFI firmware. Windows will still throttle down the frequency when it can, but when the OS determines it is useful, it will raise the multiplier to whatever level it believes is appropriate. In your case you may want to reduce the minimum state while On-Battery, just to save some power and wear-n-tear on the CPU.

As for your side question, increasing the clock rate on a CPU is exactly what overclocking does, but of course there are limitations. your firmware needs to support the operations, and the hardware needs to be able to actually function with the altered specs, without burning out or producing an incompatibility with adjacent components (ram speed must be supported by ram, etc). I certainly would never OC hardware I cared about to 200%. I start getting Bluescreens and thermal problems when I add more than 6x to my default 34x system.

share|improve this answer
    
Much more info here on Wikipedia – HaydnWVN Apr 9 '13 at 10:41
    
I'm curious, what processor is yours (with a 38x multiplier)? – Marc.2377 Jan 27 at 20:52

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.