[Ryzen 5000] Optimizing the CPU and RAM OC (1 Viewer)

Exited

Senior Member
Staff
#TeamRSR
Joined
Oct 28, 2018
Messages
526
Reaction score
942
Hey guys,

as I was struggling a bit with the framrate in my HP Reverb G2 in ACC at the last races, especially at race starts, I tried to get some more grunt out of my CPU and RAM to limit the CPU bottleneck you have in ACC in scenarios with a lot of enviroment and/or cars visible. I optimized my CPU by using the AMD curve optimizer and the Boost Override in the BIOS settings of the mainboard and the RAM by increasing the frequency and tighten the timings. I will show you what improvements I could achive and how I done this optimizations.

CPU Optimizazions​

Needed SW-Tools​

Like I said the CPU Optimizations are only options in the mainboard BIOS, so you don't really need any tools to improve the performance here. But you can test the stability of your settings much better and easier if you use the following little tool. For performance measurements we use Cinebench R23.

What to do?​

Before I write down, what we actually change in the BIOS I will start with a short explanation what I understood the AMD Curve Optimizer is actually doing to give a direction where we need to go afterwards. Each core in our Ryzen CPU needs a certain voltage to get to a certain frequency. The processor checks which frequency he needs (workload, temperature, etc.) and tells the motherboard which voltage should be applied per core. This requested voltage seems to be higher for "bad" cores (core needs more voltage for certain frequency than other cores) than for "good" processor cores. AMD does that to be safe with the bad cores, so that even those cores are achieving a reasonable frequency and performance.
What we do now with the Curve Optimizer, is to find an optimium per core of frequency and the requested voltage. This itself does not really improve performance, but it makes the processor using a bit less energy and thus running a bit cooler to get the same results.
Performance is then improved by the Boost Override setting. This setting just ups the processor frequency curve in 50Mhz steps up to an increase of 200Mhz (on my Gigabyte Board).
Lets get started!
  1. Download the tools
  2. Do one SC and MC run with CB23 to get your stock results
    1. Set 'Minium Test Duration' to Off
  3. Reboot your PC and go into the BIOS
  4. Set the PBO Limits to the Limits of your processor so that we don't violate the recommended values by AMD by some error
    1. 1622376097630.png
  5. Navigate to the Curve Optimizer option (can be different on every manufacturer BIOS)
    1. Activate it
    2. Set the Sign to 'Negative'
    3. Change the value for all cores
      1. on single CCD processors like the 5600X and 5800X you can start with 15
      2. on two CCD processors like the 5900X and 5950X I would start with 10
  6. Save that and Boot up your PC
We now reduced the requested voltage by the CPU by 10 points on every core. I actually don't really now what every point stands for, but doesn't really matter on the other hand, as long as the PC is still running stable and with good performance :)
For stability test we now use the CoreCycler Tool.
  1. Open up HWInfo
  2. Go to the Core Cycler directory
  3. Open up the Config.ini File
  4. Set 'RuntimePerCore' to 2-4min
    1. The longer the better the result, but bear in mind that a 2min test per core takes already 16min on a 8core processor for an initial conclusion how stable your system is still running
  5. Set 'NumberofThreads' to 2 to active Hyperthreading
  6. Set 'maxIterations' to something like 20
  7. Save the Config and run the tool with the 'Run CoreCycler.bat' File
  8. A console window opens we you can see the progress and in case of an error, which core produced the error
  9. Check the CPU temps, they should be always below 90°C, otherwise your CPU is too hot and you have thermal throttling
We now letting check the tool every core at least once, write down which core passed the test and if there were errors which core produced the error. After that we reboot the PC once again and do the following:
  • every core which passed the test
    • increase the magnitude by 5, this means we are going from e.g. -15 to -20
  • every core which failed the test
    • decrease the magnitude by 3, this means we are going from e.g. -15 to -12
Then safe and boot up the PC, run the CoreCycler tool, write down the cores who passed/failed, go into the BIOS and change the values again. We repeat that so long until we maxed out the worst cores by going to -30 and found a stable limit for the good cores.
When you finished that step, we want to check if our system is fully stable, so we increase the 'RuntimePerCore' to something like 20-30min and perform a stability test run over night. If you find any errors now, you still need to increase the value by 3 again and rerun the long test, so this step can be very time consuming.

After we found a stable setting for an overnight run, we want to increase the performance with the Boost Override setting. You can either start directly with +200Mhz, which gives the highest performance but on the other hand could be unstable, or you take the safe way and only use +100Mhz first and increase that if another overnight run was stable. There is no best way to do it, maybe the only advise I could give is to go the safe route with big processors like the 5900X and 5950X and use only +100Mhz at first. With the 5600X and the 5800X you can probably be a bit more aggressive at the beginning and go straight to +200Mhz.

Results​

Stock 5800X
CB23_Stock.png
Optimized CPU with 200Mhz Boost Override
CB23_UVOpt_200Mhz_2.png

RAM OC​

Needed SW-Tools​

For RAM OC you also don't really need SW-Tools, but they make life much easier, even more when you are doing this for the first time.

What to do?​

I can actually tell you details of what we are doing here. On one hand we are trying to speed up our internal memory controller of the CPU, the Infinity Fabric, we are trying to speed up the RAM for the same amount and we try to minizie those preparation, write, copy and end timings in our RAM memory to make data transfer faster. What especially every timing does for the RAM, I have no clue, but it is actually not really needed on the other hand :)

Getting the stock values​

  1. Load the XMP profile of your RAM in the BIOS
  2. Boot up the PC
  3. Launch Aida64
  4. Launch the Cache and Memory Benchmark
    1. Tools -> Cache and Memory Benchmark

Testing out the Infinity Fabric​

The first thing we want to do, is to check how fast our memory controller is able to run.
  1. Set the SoC voltage to 1.05-1.125V (start with the higher)
  2. manipulate the IF frequency (or FCLK frequency) to 1900Mhz
  3. Try to boot up
    1. if not, reduce the frequency one setting
  4. Once booted, start Aida64 and launch the Stabiliy Test
    1. Tools -> Stability Test
    2. Check 'Stress cache' and 'Stress System memory'
    3. everything else is Off
    4. Test for up 10min
  5. If this setting was stable, go to Bios again and up that Frequency
  6. Test with Aida again until you reach 2100Mhz FCLK clock
  7. If this is still stable -> Congrats your CPU has a very very good memory controller :)
Note the FCLK or IF frequency that was stable, we will need it for the next step.

Get an initial RAM setting from the DRAM Calculator​

Now we know how fast our memory controller is able to run, but how fast will our RAM kit be? For that we do the following.
  1. Open up Thaipoon
  2. Click on Read and then on the first memory bank
  3. Click on Report, scroll all the way down to 'Show delay in nanoseconds' and click that one time
  4. Click on Export and save the file
This generates an html. file export on our RAM configuration which can be loaded into the DRAM calculator. We do the following
  1. Open up the DRAM Calculator.exe
  2. click on 'Import XMP' and import your html file
  3. set the frequency in the left column to your max stable FCLK/IF frequency * 2
    1. A frequency of the IF od 1900Mhz runs in a 1:1 ratio with the RAM at 3800Mhz
  4. Click 'Calculate Safe' and 'Calculate Fast' and export a screenshot for each calculation
    1. if that frequency is not supported just go setting for setting lower until you can calcuate a RAM timing setting
  5. Send those screenshots to your laptop or mobile, becase we will need them in a second the Bios
Reboot your PC and go into the BIOS. We will try and see if the Stable settings from the DRAM calculator are stable with our CPU/ RAM combo.
  1. set your DRAM voltage to the Max. value suggest by the DRAM calculator
    1. should be around 1,42-1,5V
    2. I would not exceed 1,5V as this cause quite high RAM temperatures
  2. Set UCLK DIV1 Mode to 'UCLK==MEMCLK' to make the IF and the RAM run at a 1:1 ratio
  3. now copy all those values of the middle red rectangle into your BIOS (Stable calculation!)
    1. 1622380668119.png
    2. be aware, on my Gigabyte board there was another submenu, where I had to enable the Gear Down Mode again, could be also the true for your board
  4. Safe those values in a profile in your BIOS and try to boot up your PC
    1. If this is not working, try to up the DRAM voltage a click (don't exceed 1,5V) or reduce the frequency of IF and RAM one click

Test the settings for performance and stability​

For performance we again run a Aida64 Cache and Memory benchmark and check if our Read Value increased and the latency decreased. This is the direction we want to have.
For stability test we launch the DRAM calculator again.
  1. Go to 'Membench'
  2. Set 'Membench mode' to Custom
  3. Set a 'RAM Size' which is 2-3Gb below your free physical RAM memory (see bottom right corner)
  4. Set 'Taskscope' to 10000% (this takes already 3-4h)

Optimizing RAM further​

If the stable setting of the DRAM calculator works fine on your system you can try and see if the Fast setting is also running stable. If this is also running stable you can begin to decrease the timings manually even further. The following picture will help you to find the most beneficial settings in terms of performance and latency.
1622381966966.png
Green is most beneficial, red the least.
This chapture is almost endless as you can always try to optimize the timings of the RAM a bit further and then test it again. Takes endless hours and a lot of nights to find the final setting :)

Results​

Aida​

Stock - 3200Mhz CL14
Aida_Trident_StockXMP.png
DRAM Calculator Safe - 3800Mhz CL16
Aida_Trident_3800_Safe.png
Tuned - 3800Mhz CL16 with tight subtimings
Aida_Trident_3800_Opt11.png

Assetto Corsa Competizione​

I took the Nürburgring setting of my graphic card comparison and only changed the ingame time to 8am and upped the AI number to 29. Then I did the benchmarks by following the AI for two laps and captured the frame rate. For details check the other thread:

Lap1 - XMP setting vs. 3800Mhz Safe settings
RAM_OC_ACC_1080p_L1.png

Lap2 - XMP setting vs. 3800Mhz Safe settings
RAM_OC_ACC_1080p_L2.png

Avg. framerate and the percentils are increased by around 12-13% and thats only the Safe setting from the DRAM calculator. The results in ACC for my the Tuned settings I used in the AIDA benchmark are a little bit cropped as they are worse than the Safe settings from the calculator. I try to redo them in the next days to see where I ended up for now.
Next step will be, to try to increase the frequency a bit more or to get to 3800Mhz CL14. But for now I have done enough overnight runs, my system needs a cooldown lap :)

Cheers,
Exited
 
Last edited:

m4nu

Head of RSR
Staff
#TeamRSR
Joined
Aug 2, 2016
Messages
6,203
Reaction score
5,643
I only understand "Bahnhof" but crazy stuff! :D
 

Users who are viewing this thread

Top