RyZen Pstate Overclocking, method, calculation and Calculator

noko

Supreme [H]ardness
Joined
Apr 14, 2010
Messages
7,262
Processors use Pstates (power-performance states) of different frequency and voltage for different load conditions:

P0 – max power, voltage and frequency
P1 – less than P0
P2 – less than P1
. . .

This allows lower clock speeds per core when you don’t need it and higher clock speeds automatically. Less power, noise, heat but most importantly performance when you need it. Performance wise you should not be able to tell the difference between using Pstate 0 or just using straight multiplier Overclocking with fixed frequency.

The ASUS ROG Crosshair VI Hero is being used to show how to accomplish Pstate Overclocking. Other motherboards may or not support Pstate overclocking but should be similar if they do.

With the Rog Crosshair VI Hero Pstate customization is in the Bios under: Advance – AMD CBS – Zen Common Options – Custom Core

AMDCBS.png ZenCommonOptions.png CustomCorePstates.png

When you open the tab for Custom Core you get a warning, don’t wuss out and accept your destiny. Changing from Auto to Custom will expose the current setting.

Warning.png CustomPstate.png

You only need to change Pstate 0 to maximize clock speed depending upon your CPU capability and leave the other Pstates alone. The other Pstates can be change if desired.
 
CustomPstate.png


Each Pstate has three inputs which is used to calculate frequency and voltage:

· FID – Frequency ID in Hex
· VID – Voltage ID in Hex
· DID – Divisor ID in Hex

DID
  • RyZen uses a divisor of 8 which in Hex happens to be 8 – leave this as is or just ignore it.
VID
  • For 1700x and 1800x hexadecimal 20, which corresponds to 1.35v, 1700 the value is 3A for 1.1875v
  • Current ASUS Bios 1002 and before if you change the default VID value, the Pstate0 (P0) will not work and will go to P1. This may change with a future bios or on other motherboards
  • To change CPU core voltage - use + or - offset values so you are not stuck with 1.35v or 1.1875v on a 1700
  • CPUcoreVolt.png
To calculate a given FID to get you that overclocked frequency the following formula is used. Once solved the FID value is converted to hexadecimal, then entered the value for FID: (I will give a much easier method later)

FID = (CPU ratio/.25) X (DID x .125)

Input the CPU ratio or multiplier that will give you the CPU clock speed wanted, for example BCLK of 100mhz and a multiplier of 36 gives you 3.6ghz. If you want 4.05ghz you would plug in a CPU ratio of 40.05. Then convert the decimal value to hex for the FID value to put in the bios.

The bios gives you feedback on a given HEX FID value which you should always check to see if that is what you want for the frequency right above where you enter the FID value. The easy way is next.
 
Last edited:
The easy way

As mentioned previously the only value you need to change is FID in P0.
  • VID and DID are left alone or kept as is.
Also of note the BCLK will need to be at default, Auto or set at 100mhz, this could change in the future but Pstate overclocking does not work with BCLK overclocking. (Edit: With ASUS new CH6 bios 79,81,82 and 83 you can now use PState and BCLK overclocking - ASUS also mention that next bios should allow VID modification as well.)
  • AIocTuner.png BCLK.png

Instead of calculating repeatedly a spread of FID values to get the CPU speed you want, use a spreadsheet that does all the calculations for you automatically. Just plug in the desired ratio and it will calculate the FID hexadecimal value. Attached is an Excel worksheet that does just that.

PStateCalc.png

Enter you desired multiplier, for example 40.05:

PStateCalc2.png

The resulting Hex value A0 is calculated which is what you put in your bios FID:

PStateCalc3.png

Change your offset voltage by adding or subtracting, save to bios and reboot -> you should now be overclocking using Pstate 0 to 4.05ghz! That is if your CPU can hack it.

Below I entered 98 in VID for a 3.8ghz OC, you can see using Aida 64 the different Pstates in action including P0 at 3.8ghz for threads that need it. Notice CPU temperature and fan speeds which are low. Fan2 is the water pump. Playing a game or anything needing CPU processing, all cores will go to 3.8ghz. Cool!

ChangeFID.pngCPUcoreVolt.png Aida64.jpg

Also, you probably noticed on the work sheet is a VID calculator which may be useful in the future for P0. P1 and P2 VID can be changed and those voltages will work, just P0 does not. Any questions or comments please let me know.

Excel:
http://www.mediafire.com/file/u7l54s89dri3e4y/RyZenPstateCalc.xlsx

XML:
http://www.mediafire.com/file/7llkso80lqk2dp6/RyZenPstateCalcXML.xml
 
Last edited:
Should make it a public Google Document :D

Regardless, nice thorough job!

I think AMD sorta intended PState to be available by default. So far I've seen it in my Titanium's BIOS (but hidden) AND the ASUS Prime B350-Plus board, which is a rather low-end model. They are the exact same in both as far as wording and format, so I suspect it was provided by AMD in the "starter BIOS" code that everyone has based their's off of initially.
 
I think you are right and was hoping for that. Now I hope it works for others as well as it works on the ASUS boards. It is nice when doing simple stuff or browsing seeing your cpu voltage at .5v, fans almost inaudible with cpu temperature even with the added 20c offset at 50c. Vice having the cpu at full speed all the time with all the added heat and noise. Now why a Google Document? I may do that come to think about it.

Thanks for the kind words.
 
Brilliant work Noko, very impressive.

Thank you, will definitely try this out later today :)
 
Wow thanks noko, I was wandering what all the hype was about the pstate overclocking. Excellent work!
 
Shame the Tomahawk doesn't seem to have this feature. Is it something that could be rolled into a BIOS update?
 
Brilliant work Noko, very impressive.

Thank you, will definitely try this out later today :)

Wow thanks noko, I was wandering what all the hype was about the pstate overclocking. Excellent work!

Thanks!

This probably goes along with PState overclocking and can add some extra performance, AMD recommends the Performance power plan enabled in Windows:

“The company does recommend that consumers use Ryzen with the High-Performance power plan enabled in Windows because of the following:
  • Core Parking OFF: Idle CPU cores are instantaneously available for thread scheduling. In contrast, the Balanced plan aggressively places idle CPU cores into low power states. This can cause additional latency when un-parking cores to accommodate varying loads.
  • Fast frequency change: The AMD Ryzen processor can alter its voltage and frequency states in the one millisecond intervals natively supported by the "Zen" architecture. In contrast, the Balanced plan may take longer for voltage and frequency (V/f) changes due to software participation in power state changes.”
http://www.windowscentral.com/amd-says-windows-scheduler-isnt-blame-ryzen-performance
So High-Performance turns off Core Parking but is normally setup for 100% cpu speed all the time. So this is how to configure the High Performance setting to allow the different PStates to be used but also give full performance when needed:

  • Change to High Performance under settings in Windows and select Change plan settings
    • highPerf.png
  • Select Change advanced power settings
    • chgadv.png
  • With Power Options window open scroll down to Processor power management and select Minimum processor state which will be at 100%, change that to like 20% and apply. Now you have core parking off and will allow faster frequency and voltage changes that RyZen can do quickly giving you full performance when you need it.
    • 100min.png
    • 20Min.png
 
Last edited:
Shame the Tomahawk doesn't seem to have this feature. Is it something that could be rolled into a BIOS update?
I would say yes but not sure if MSI will. Looks like the Titanium has it in the bios and hopefully functional from Formula.350 above, he also indicated ASUS Prime B350-Plus board has it. I do believe it is basically AMD Microcode and just a matter of it being exposed or not in the bios.
 
Should make it a public Google Document :D

Regardless, nice thorough job!

I think AMD sorta intended PState to be available by default. So far I've seen it in my Titanium's BIOS (but hidden) AND the ASUS Prime B350-Plus board, which is a rather low-end model. They are the exact same in both as far as wording and format, so I suspect it was provided by AMD in the "starter BIOS" code that everyone has based their's off of initially.

I see nothing in my Prime X370 Pro board though. :( Is it hidden or just not there?
 
I see nothing in my Prime X370 Pro board though. :( Is it hidden or just not there?
Shame the Tomahawk doesn't seem to have this feature. Is it something that could be rolled into a BIOS update?
I'm willing to bet if I downloaded either of those BIOSes, they're in there but not set to be visible by normal users.
The ONLY reason I can guess as to why that is, is because it's all slightly cryptic on how to properly setup these PStates. Consider us not having Noko's guide, who here would be able to set it up as they want it?
AMD actually had a bad-ass windows program to do all of this, but they never released it to the public... Back when Bulldozer came out I saw in one of their sponsored Extreme Overclockers screenshot that program and just so happened to find out it was on AMD's Developers page that was SUPPOSED to be locked out, but had accidentally been made public lol I grabbed it and a couple other programs and realsed them unto the world! :shame:
It worked fine on my Llano APU system, but unfortunately even later revisions of Bulldozer like my Excavator-core Carrizo laptop will result in "Not a supported CPU" error :( What was so damn beautiful about this program was the simplicity of use, that and being able to do it all easily from within windows. It's really not much different than K10Stat or CPUMSR, except in a far nicer and way more robust package...

Why AMD has kept it to themselves all this time, I can't imagine. Particularly now with Ryzen when it's mentally handicapped little brother has been coded into the BIOS...

Chew* @ XS forums will be dumping me his B350-Plus BIOS hopefully tomorrow and then I'll mod it for him to make all sorts of goodies available, and he'll flash it to see if it bricks the motherboard or not. IF it doesn't, and IF none of the unlocked goodies end up being dangerous to the point they create all sorts of problems (instability, or worse, CPU/Mobo death), then I'll happily go on a modding spree and toss up the BIOSes! The two biggest things seem to be access to these PStates and DRAM Sub-Timings. In the v1.41Beta version of the Titanium BIOS there's even BCLK, but whether that works is yet to be seen, so fingers firmly crossed Chew*'s results turn out good. :D
 
Has anyone had a problem with P0 not being recognized? I have changed P0 to 4.0ghz, but the max it will go is 3.2ghz for P1. It will clock down below 3.2 automatically. If I set P1 to match P0, then it locks in at 4ghz and will not drop down to the next P state. Any ideas? I have tried it with only changing P0 and changing P0, P1, P2. They all have the same behavior. CPU max in windows is set to 100% and min set at 20% on high power profile.

Also, I found the reg hack to add core parking to the power profile. I tried it on balanced, with core parking at 100%. Core parking alone does not fixed balanced mode. I did revert my registry back to pre core parking settings and still did not change my P state overclock.
 
Also, I found the reg hack to add core parking to the power profile. I tried it on balanced, with core parking at 100%. Core parking alone does not fixed balanced mode. I did revert my registry back to pre core parking settings and still did not change my P state overclock.
Reg hack to add core parking? Core parking works just fine on Balanced though... Does for me at least. Even on a 100% unpatched Win10 RTM install, as well as my latest ISO download from M$ using their ISO tool.
 
Has anyone had a problem with P0 not being recognized? I have changed P0 to 4.0ghz, but the max it will go is 3.2ghz for P1. It will clock down below 3.2 automatically. If I set P1 to match P0, then it locks in at 4ghz and will not drop down to the next P state. Any ideas? I have tried it with only changing P0 and changing P0, P1, P2. They all have the same behavior. CPU max in windows is set to 100% and min set at 20% on high power profile.

Also, I found the reg hack to add core parking to the power profile. I tried it on balanced, with core parking at 100%. Core parking alone does not fixed balanced mode. I did revert my registry back to pre core parking settings and still did not change my P state overclock.
Only time I had issue with P0 going to P1 is if I changed VID from default in P0. Also your CPU voltage should be in offset mode.
 
I will give offset a try tomorrow.

AMD reported Core Parking was an issue with balanced mode. After testing, I can say it's not the only issue. I get a significant FPS decrease when using balanced over high power mode with the CPU allowed to a 5% minimum state.
 
Use high power but edit it to allow less than 100%. That editing in register sounds like it did more then just core parking. High power setting gets rid of core parking anyways.
 
I will give offset a try tomorrow.

AMD reported Core Parking was an issue with balanced mode. After testing, I can say it's not the only issue. I get a significant FPS decrease when using balanced over high power mode with the CPU allowed to a 5% minimum state.
I believe the Parking works as intended, but it simply isn't quick enough to UNpark and assign loads as it should, which ends up handing them over to the HT thread of the active cores.

Using Balanced has the benefit of allowing for Full Boost (during 1 or 2 threads) to function to its full extent since cores will park, causing overall (CPU+SoC) Power draw to drop quite a bit, at the expense of potentially slower performance in heavily multithreaded conditions.

Using High Performance has the benefit of allowing for Boost to function, but due to all cores remaining active all the time it cannot achieve Full Boost mode, but the trade-off is there is full performance since no cores have to be unparked.

However, as soon as you overclock via the traditional means (through Multiplier, not PStates), I'm pretty certain you'll lose ANY Boost, thus why it is ideal then to overclock as high as your cooling solution can handle, and then edit the High Performance power profile and under the Processor section set the "Min Usage" to 5%. It'll still use more power due to not parking cores, but it will offer quite a bit more performance since the cores are guaranteed to run at the speed you set it too, instead of being conditional and at the mercy of the Boost feature.
 
Looks like most if not all the AsRock boards support PState modification/OCing:

 
This video from Tech City shows PState Overclocking on an AsRock Taichi motherboard going through the bios. First part that last a little over 7 min is the straight multiplier type OCing. After that the second part he shows what he does for PState overclocking. Hope some with Asrock boards share their findings here. It is virtually the same as on the CrossHair VI Hero board since really it is AMD bios section, calculator should work exactly the same. Now he did go a little into the divisor DID which also works in the calculator if you want to fool around with the DID numbers. I have not done that yet. More later.

 
I just attempted this on a Taichi, 2.00 BIOS.

Only works part-way--if I have the first 3 enabled with custom settings as shown in the video above from noko it still stays stuck at my overclock speed.

But, if I set my overclock speed on P0 and leave 2 more on Auto, it downclocks...while refusing to upclock even if I bust out, say Intel Burn Test to load it.

Bug?
 
I just attempted this on a Taichi, 2.00 BIOS.

Only works part-way--if I have the first 3 enabled with custom settings as shown in the video above from noko it still stays stuck at my overclock speed.

But, if I set my overclock speed on P0 and leave 2 more on Auto, it downclocks...while refusing to upclock even if I bust out, say Intel Burn Test to load it.

Bug?
The CH6 also will not work if P2 is not in Auto. Also if you change VID it will not work either - ASUS tried to have a Windows VID software solution but that didn't work either and said it was an AMD side bug. Now P0 is the only one that really needs to be adjusted for an OC, the other PStates will still do what they did before to downclock and reduce the voltage. So I recommend just customize PO and leave the others alone, have you tried that?

What power plan are you using and did you adjust the min and max? Anyways yes it does sound like a bug but thanks for sharing. I wished I had other boards to test.

Now if you do get it working please share settings and any images (y)
 
Image1.png


If you do not see settings in Power Options for Processor Power Management, it is most likely because you are in Overclock mode. Windows only shows power options that are available at startup, this can change when you change the bios.

If you have a fixed cpu ratio for example these options will not show. If you start up with like optimized defaults or default Auto clocks for the cpu these options should show back up.

With PState 0 customization with only FID being changed - this should not remove the Processor Power Management settings.

For the Rog CrossHair Vi Hero, bios 79, 81,82 and 83 you may have to enable Global C-state Control in the bios (normally on Auto) - Advance Options - AMD CBS - Zen Common Options - Global C-state Control. (Edit: I just tested with this Enabled and Disabled and it did not make a difference for the Power Plan or cpu downclocking but did stop the voltages from dropping. I will have to test more to re-verify this. Anyways looks like with Global C-state disabled it will stop the voltage from dropping to the lower PStates which when it was enabled you saw the clocks and voltage drop in low usage conditions.)
GlobaCstateControl.png

The above listed bios's also enabled BCLK overclocking with PStates which I want to cover once the official bios is released - bios 81 is supposed to be the new bios but nothing is final until it actually is released.

If you still have power option setting issues so that you can't set the min power level or your PStates don't go to the lower power states please let me know. There is a way to set the settings via command line without the window. Not sure

Edit: Corrections and additions are in Italics.

Addition:

Forcing Ryzen in OC mode by setting cpu multiplier to 36, starting up Windows the Power Options, the menu for Proceessor power management was missing the Minimum and Maximum processor state settings.
36multiplier.png HPnoSetting.png
Going back into the bios and setting CPU Core Ratio back to Auto and PState for 3.875ghz, starting up Windows, the Power Options was restored or had the Minimum and Maximum processor state settings and was down clocking as expected
AutoCPUcoreRatio.png PS03875mhz.jpg
 
Last edited:
I'm going to be doing more experimenting with my LLC level (4 when 5 is lowest) since I saw (in CPU-Z) my volts drop to 1.312 under P95 load when it's set to 1.33625 (I think) in BIOS.

Once I figure that out, I'll take a stab at these.

Thanks for the details!
 
Hi Noko im having some trouble with this on my C6H.

BIOS 0082

Loaded optimised defaults to start fresh

Voltage offset + 0.1

P0 9C/8/20 = 3.9Ghz/1.35V
P1 onwards = auto

Power Plan High Performance min state 20% max 100%

Booting like this I range from 1Ghz to 2.7 under load...

Same as above except P1 is now the same as P0, rest auto

Booting like this Im stuck at 3.892GHz (default BCLK is 99.8)

Thoughts?

TY in advance for your time :)
 
Hi Noko im having some trouble with this on my C6H.

BIOS 0082

Loaded optimised defaults to start fresh

Voltage offset + 0.1

P0 9C/8/20 = 3.9Ghz/1.35V
P1 onwards = auto

Power Plan High Performance min state 20% max 100%

Booting like this I range from 1Ghz to 2.7 under load...

Same as above except P1 is now the same as P0, rest auto

Booting like this Im stuck at 3.892GHz (default BCLK is 99.8)

Thoughts?

TY in advance for your time :)
See what cpuz/AISute3 or any other software shows as maxed clock when just customizing P0.

You might want to try these if you have not:
  • Try FID of 98 - 3.8ghz to see if that sticks for P0, leaving the rest in Auto
  • Try Manual Vcore voltage and set to 1.35 vice using Offset
  • If you have a 1700 you need to set VID to 3A (default setting) and not 20. That would do exactly what you describe. What cpu do you have?
 
Last edited:
Hi Noko im having some trouble with this on my C6H.

BIOS 0082

Loaded optimised defaults to start fresh

Voltage offset + 0.1

P0 9C/8/20 = 3.9Ghz/1.35V
P1 onwards = auto

Power Plan High Performance min state 20% max 100%

Booting like this I range from 1Ghz to 2.7 under load...

Same as above except P1 is now the same as P0, rest auto

Booting like this Im stuck at 3.892GHz (default BCLK is 99.8)

Thoughts?

TY in advance for your time :)

You can't change the VID or you won't get the clock you want. For me, to get to 3.850 GHz, I set FID to 9A and left the rest of the pstate settings at default. On the voltage settings page, you set the vcore to + offset to whatever you need. For example, my 1700 requires a +0.1625v vcore offset to bring it up to 1.35v.
 
See what cpuz/AISute3 or any other software shows as maxed clock when just customizing P0.

You might want to try these if you have not:
  • Try FID of 98 - 3.8ghz to see if that sticks for P0, leaving the rest in Auto
  • Try Manual Vcore voltage and set to 1.35 vice using Offset
  • If you have a 1700 you need to set VID to 3A (default setting) and not 20. That would do exactly what you describe. What cpu do you have?

You can't change the VID or you won't get the clock you want. For me, to get to 3.850 GHz, I set FID to 9A and left the rest of the pstate settings at default. On the voltage settings page, you set the vcore to + offset to whatever you need. For example, my 1700 requires a +0.1625v vcore offset to bring it up to 1.35v.

Interesting didn't know i couldn't change that. Will look tonight. Thanks guys/girls :) I have a 1700 btw noko
 
Interesting didn't know i couldn't change that. Will look tonight. Thanks guys/girls :) I have a 1700 btw noko
ahhh, set PState0 VID to 3A for that 1700 and you should be good to go since you were seeing P1 and P2. Once AMD straightens out VID settings (hopefully sooner than later) we just have to walk around them now.

To raise voltage for that 1700 use Offset. I recommend you start at a low multiplier and voltage and work your way up making sure everything is working.
 
ahhh, set PState0 VID to 3A for that 1700 and you should be good to go since you were seeing P1 and P2. Once AMD straightens out VID settings (hopefully sooner than later) we just have to walk around them now.

To raise voltage for that 1700 use Offset. I recommend you start at a low multiplier and voltage and work your way up making sure everything is working.

Got it working now cheers :) 3.9GHz and yes i set my voltage with the offset. Its nice to see those clocks and voltage drop when idle! Phew
 
Is there some secret to BCLK + pstate OC, pstate OC alone works nicely but as soon as I touch BCLK from auto the board goes into OC mode (pstates disabled). I tried it on both 0083 and the new 0003 bios.
 
Is there some secret to BCLK + pstate OC, pstate OC alone works nicely but as soon as I touch BCLK from auto the board goes into OC mode (pstates disabled). I tried it on both 0083 and the new 0003 bios.
It worked for me on the CH6 with bios 81, it should work with 83, don't know about 0003 (did you have cold boot problems?). Anyways I will try tomorrow and let you know settings that I used.

Results:

First thing I did was to figure out what settings I was going to use. Since I've played around with BCLK I already knew 109mhz was good. So I plugged in 109.4mhz for the BCLK, added another calculation to the worksheet for final memory speed based upon strap being used. In this case the strap was DDR4 3200 giving DDR4 3500 should result.
BCLK_Overclock.png

Then I went into the bios and adjusted the Base clock to my worksheet and cpu core voltage offset I thought would be sound: (You can see it took on the right side of the bios screen after a save)
  • BCLKBios.png OffsetVoltageBios.png
Adjusted my PCIe settings, maintain Gen 3 for the two 1070's, and Gen2 for the Intel NVMe drive. Then the new PState 0 settings
  • SetupPCIeBios.png PStateBios.png
The computer booted right up into the new settings and subsequently into Windows where I did some stress testing using Aida64 for over an hour and TPU MemTest64 at the same time plus some other tests as well. Diskmark was a little bit slower on the read, about 200mb/s slower - Gen 2 pcie for the M.2 drive. The 1070's were at Gen 3 pcie with the 3DMark Score (http://www.3dmark.com/spy/1615193). Looking at Aida64 readings PState0 is also working.

109Bclk.jpg
 
Last edited:
Not having much luck with my attempts at a custom BCLK with custom P state. (bios 082)

1] So, to start with, on the CH6 board, with no P state set, I can manually overclock at 4015, which needs a 110 BCLK and 36.5 multiplier to get my Vengeance 3200 RAM working at 2933mhz. Works fine, no boot problems etc.

Next then, go to set a custom P state at 4Ghz (A0), leave everything else auto (AI overclock tuner), boot up fine, P state works but memory defaults back down to 2133mhz.

So, to try to get the memory back up to speed, I then try to set a custom BCLK with custom P state, I switch from 'AI Overclock Tuner' being auto, to the same strap as in 1] set BCLK to 110. Result, system fails to boot. Try lowering BCLK, system fails to boot, try raising BCLK, system fails to boot. In fact, with a custom P state set, system will not boot for me with any setting for 'AI overclock tuner', any strap, any BCLK, other than it being set to 'auto'

Any suggestions as to why its failing ?

edit, having reread this thread a few times, I think I might need to enter different values than I have been doing, based on that, plus playing around with the excel sheet. Will report back if that works !
 
Last edited:
Back
Top