• Welcome to Overclockers Forums! Join us to reply in threads, receive reduced ads, and to customize your site experience!

Prevent XTU from resetting the Processor Graphics Frequency Ratio

Overclockers is supported by our readers. When you click a link to make a purchase, we may earn a commission. Learn More.

ragp

New Member
Joined
Jun 13, 2016
After searching on the Googles I figured this would be the best place to ask some advice. I'll immediately admit that this isn't the most exciting overclocking going on, but here goes:

I'm on a MacBook Air 2013 running Windows in Bootcamp. The MacBook has the i7-4650U processor, which I know is an ultra-low voltage cpu.
Actually I'm not looking for overclocking at all, especially considering the poor cooling, instead I'm just looking for maximum steady fps while gaming (I know I could buy a proper gaming rig. Call me sick, I enjoy getting these slow things to work the best they can).

Now here's the problem: the iGPU (Intel HD Graphics 5000) seems to draw most of the power while gaming. It can go up to 1100mhz, but then I get current limit throttling and the iGPU gets too hot so I get thermal throttling as well. Besides tinkering in Throttlestop, I've tried decreasing the processor graphics frequency ratio in XTU to 6.0-7.0x (600-700mhz). While this helps quite a bit, as soon as the temp gets too high for a split second, the setting seem to be ignored and reset. Meaning the processor suddenly ignores the limit of 600-700 mhz and jumps as high as 1050. As a consequence, I will have to go back to XTU and reapply the processor graphics frequency ratio.

The question: Is there any way to force the graphics frequency ratio to stay put, or automatically reapply?

Someone on another forum said: 'There is an override limit at MCHBAR + 0x5994 that should keep your graphics multi in check. If you have Windows you can try using RWEverything to set this.' But I have no experience in that area. So any advice would be much appreciated.
 

unclewebb

The Real Temp Programmer
Joined
Aug 6, 2008
Here is an example of what Dufus was talking about on NBR.

9OvpeWl.png


Intel uses a base clock (BCLK) speed of 100 MHz for the CPU but only 50 MHz for the Intel GPU. Let's say you want to run your Intel GPU at 800 MHz. To do that, you would need to use a GPU multiplier of 16.

16 x 50 MHz = 800 MHz

To enter this into MCHBAR + 0x5994, you first need to covert 16 decimal to 0x10 hexadecimal. Open up RW Everything. To open the Memory window, click on the 3rd icon on the tool bar from the left hand side. Enter in the base memory address of FED15900

So it looks like my screenshot, click on the DWORD 32 bit button in the tool bar. Go down to the 90 row and change that second value from whatever it is so the last two digits are 10

This will limit the Intel GPU to 800 MHz. I know XTU can change this value so if this happens, do not run XTU.

I think the problem you are having is your U CPU is changing TDP Levels. When this happens, this register might get reset which will reset your Intel GPU speed. If the CPU changes TDP Levels, it might also change this value.

I think MCHBAR + 0x5F50 is where the TDP Level is located. Bit[31] is the lock bit so you could try locking this to TDP Level 0 by entering.

80000000

Locking your CPU to TDP Level 1 would be

80000001

I would try setting this and the TDP Level adjustment in ThrottleStop to the same thing. I think both of these can be overridden by another setting but they might be able to fix your issue when combined with some ThrottleStop CPU speed adjustments. Make sure the Non Turbo Ratio in the FIVR window is set to 0.
 
OP
R

ragp

New Member
Joined
Jun 13, 2016
Here is an example of what Dufus was talking about on NBR.

9OvpeWl.png


Intel uses a base clock (BCLK) speed of 100 MHz for the CPU but only 50 MHz for the Intel GPU. Let's say you want to run your Intel GPU at 800 MHz. To do that, you would need to use a GPU multiplier of 16.

16 x 50 MHz = 800 MHz

To enter this into MCHBAR + 0x5994, you first need to covert 16 decimal to 0x10 hexadecimal. Open up RW Everything. To open the Memory window, click on the 3rd icon on the tool bar from the left hand side. Enter in the base memory address of FED15900

So it looks like my screenshot, click on the DWORD 32 bit button in the tool bar. Go down to the 90 row and change that second value from whatever it is so the last two digits are 10

This will limit the Intel GPU to 800 MHz. I know XTU can change this value so if this happens, do not run XTU.

I think the problem you are having is your U CPU is changing TDP Levels. When this happens, this register might get reset which will reset your Intel GPU speed. If the CPU changes TDP Levels, it might also change this value.

I think MCHBAR + 0x5F50 is where the TDP Level is located. Bit[31] is the lock bit so you could try locking this to TDP Level 0 by entering.

80000000

Locking your CPU to TDP Level 1 would be

80000001

I would try setting this and the TDP Level adjustment in ThrottleStop to the same thing. I think both of these can be overridden by another setting but they might be able to fix your issue when combined with some ThrottleStop CPU speed adjustments. Make sure the Non Turbo Ratio in the FIVR window is set to 0.

Great stuff and thanks for the quick reply!

I did set and lock the TDP to level 2 in Throttlestop. It might be that it resets that as well, although I do see a sustained power consumption over 20 Watts, whereas TDP 0 is 15W, even when the Graphics Ratio Frequency has been reset.

I'll have a go at it tomorrow and report back.
 

unclewebb

The Real Temp Programmer
Joined
Aug 6, 2008
After setting the TDP Level in ThrottleStop, double check the Memory location at 0xFED15F50. Unfortunately, I think there is a third method that is used to also set the TDP Level. ThrottleStop does not have access to this so on most devices with U CPUs, the TDP Level can change regardless of any settings.

I suggested trying Level 0 because this might give you the best overall performance without the CPU over doing it in high TDP mode and then being forced down to low TDP mode. I hope you can learn some more about these. I have never had one to play with so I am not sure how to fully control a U.
 
OP
R

ragp

New Member
Joined
Jun 13, 2016
After setting the TDP Level in ThrottleStop, double check the Memory location at 0xFED15F50. Unfortunately, I think there is a third method that is used to also set the TDP Level. ThrottleStop does not have access to this so on most devices with U CPUs, the TDP Level can change regardless of any settings.

I suggested trying Level 0 because this might give you the best overall performance without the CPU over doing it in high TDP mode and then being forced down to low TDP mode. I hope you can learn some more about these. I have never had one to play with so I am not sure how to fully control a U.

Ok, so I managed to do a few things but failed at others, mainly because I have no experience with the memory addresses thingy :)

Changing the last two digits to 10 in FED15900, row 90 column two, does change the graphics frequency ratio to 8.0x = 800mhz. However, this got reset as soon as temperatures started to reach 90+. Manually changing TDP from 2 to 0 in Throttlestop seemed to delay the reset somewhat, but this may have been because throttling was initiated less abruptly due to the lower clockspeeds at TDP 0.

However, I don't really get which memory address to change to 80000001. How do 0xFED15F50 and the 31th bit relate to the address I have to change?

I did change the first 80000000 to 80000001, but this got immediately reset.


Qe61AT1.png



Edit:

Ok some additional testing revealed that the first Address of oxFED15F50 is 00000000 when TDP is set to 0. If TDP is set to 1, the address changes to 00000001, and TDP 2 to 00000002 respectively.

If I then increase the CPU speed so the CPU/GPU temp reaches into the 90C's, the GPU frequency will drop again, but the TDP will stay at level 2!

So it seems the GPU throttles back independent of TDP level throttling.


By the way. I do get a red MPO warning with Limit Reasons, and I'm not really sure what it refers to.
 
Last edited:

unclewebb

The Real Temp Programmer
Joined
Aug 6, 2008
If FED15F50 is already set to 80000000, that means that register is already locked to TDP Level 0. The first 8 represents the lock bit and the last digit represents the TDP Level. Once a register is locked, it cannot be changed until you reboot. If you try to enter 80000001 or 80000002 after the register is already locked, these changes will be ignored as you found out.

If you used the TDP Level - Lock option in ThrottleStop, it might have also locked memory location 5F50 at the same time.

Can you post a screenshot of ThrottleStop? What temperature does it show beside the PROCHOT word at the lower right? Intel sets the default thermal throttling temperature to 100°C but some laptop and tablet manufacturers have decided to offset this to a lower value. ThrottleStop will show you this value. At TDP Level 0, if your CPU is hitting over 90°C then that means the manufacturer really did not spend enough money on the cooling solution they are using. Inadequate heatsink or inadequate fan or likely both. Consumers want small and quiet so that is what manufacturers build but at the expense of performance.

You either have to find a way to improve cooling or you are going to have to run your CPU and GPU at speeds far less than Intel intended. U CPUs are designed more for short bursts of high speed. Trying to run the CPU and GPU at a continuously high speed with poor cooling is not going to happen without a lot of up and down throttling.