[ongoing] Ryzen OC - Memory Timings explained (and related settings)

Discussion in 'Processors and motherboards AMD' started by 386SX, Jan 17, 2020.

  1. 386SX

    386SX Master Guru

    Likes Received:
    AMD Vega64 RedDevil
    NOTICE: This project is still unfinished as long as this disclaimer is written here. But even if removed, it's an ongoing project. Please keep that in mind. Thank you.

    Hi there.

    Because there are hundreds if not thousands of sources all across the internet telling all sorts of either useful or stupid information, I thought it would be a good thing to create a thread about memory timings and other related settings.

    Because I only own a 1st gen Ryzen and an ASUS X370-F motherboard with G.SKILL b-die RAM this project will be very limited, but nevertheless I want to describe everything as general applicable as possible. Timings are general, only the max OC and some less important settings may differ for each generation. But let's start ....

    This guide is NOT complete, nor should you see any value as "fixed". Different systems behave differently and what worked for me may not work for you. I take no responsibility for any damages caused.

    Tools you should prepare:
    - Ryzen Timing Checker (to set correct ProcODT, CADBUS, RTT values): LINK
    - Typhoon Burner (to get a manual profile): LINK
    - AIDA64 (demo is sufficient; for finding correct voltages & "advanced stress test"): LINK
    - HWINFO (temperature overview; check "sensors only" at start): LINK
    - Ryzen Memory Calculator (to get base values for the intended speed of your DIMMs)
    - Testmem 0.12 with 1usmus profile (at least in version 2; quick but reliable stability test!): LINK
    - Instead of Testmem you may want to use "MemTest for Windows" instead: LINK
    - USB drive with Memtestx86 (ultimate memory test for the "last test" before considering a setup "rock solid / stable"): LINK (to USB installer)

    The basics:
    There are some standard values for some settings:

    Voltage for DDR4 DIMMs:
    JEDEC specified voltage to be within the range of 1.2V and 1.5V.
    ASUS and AMD recommend to never set more than 1.45V without additional RAM cooling!
    My max value was 1.42V, anything higher caused RAM sticks getting too hot over time, resulting in memory errors. With this value I had to ramp my fans to full speed and open the top of my case.

    Standard voltage for SOC:
    This is important!
    Up to 2666 MHz DIMM speed = 0,9V
    2666+ MHz = 1.1V

    absolute max: 1.2V (Never exceed that value! NEVER!)
    => Does scale almost linear until the SOC limit is reached! You notice you are over the SOC limit if you need MASSIVELY more voltage for even the slightest raise of RAM speed.
    Example (on my system):
    3200MHz = 1.025V
    3400MHz = 1.05V
    3466MHz = 1.075V (!!)
    3600MHz = 1.18V (!!)
    Pushing RAM into the SOC limit will raise both temps and latency, sometimes you only get a speed stable if lowering CAS latency (CL).
    The board sets this itself automatically! That is one reason why most people complained about not reaching high clock speeds! Standard is 2133MHz (XMP is not recognized) and they set speed to say 3200MHz without keeping SOC in mind, so some boards try 3200MHz with 0,9V, which is too less or they overshoot and set this to insane values like 1.4V (!!!)! Set this manually! Always!

    Standard value for Vcore:
    This depends on your specific CPU and silicon lottery.
    Ranges I saw on X370/1st gen: 0,8V - 1,4V
    "Safe" range: 1.1V - 1.38V
    => I heard newer Ryzen may even exceed 1.4V when turbo kicks in and this should be "normal" behaviour. I still would stay within the safe ranges if possible to prolong CPU life.

    Values for LLC:
    LLC is Load Line Calibration, a method from your board to counter drop in voltages which happen because of system load. As soon as your components are under stress, the voltage will drop. If the drop is too much, you will encounter instability or hangs or even worse. Therefore LLC was created.
    Optimal settings would be:
    LLC for CPU: Level 2 - 3
    LLC for SOC: Level 2

    Values for Phase Control:
    Phase Control is an option on some ASUS boards at least, probably others, too. It defines how many of your board's phases are active. Higher settings produce more heat but give more stability.
    Set them all to at least OPTIMIZED.
    If pushing memory or CPU to the limits EXTREME (all phases active) is recommended.

    Switching speed:
    I dont have much info on that, but FAST or ULTRA-FAST would be recommended, if you need to enter a value set it to 300 (better / faster) or 400 (still good, less heat)

    "Special" options:
    There are a few options which should be seen as a "base setup", as those values wont change much if at all. Those differ A LOT, even with the same setup!

    Processor On-Die Termination, which could be seen as a "safety termination of voltages coming to your CPU" (I know this is wrong regarding the genuine definition, but for novice users it may give a good picture to work with). The correct value depends on: mainboard, BIOS, memory, CPU.
    Recommended ranges (from AMD) for 1st gen are: 40 - 60 ohms.
    => My setup is stable with 53.3 ohms from 2133 to 3400 MHz.
    This influences CADBUS and RTT values as well! A working and stable setup will have to have all those set manually.
    => Lower / higher isnt better automatically. The correct value is rock stable, "near misses" (say one step near the correct one) are stable 90% of the time (or 100% if lucky), but may get unstable at higher frequencies.

    RTT[nom(inal), wr(ite), park]:
    Those are sub-timings related to ProcODT and CADBUS and describe resistances. There seems to be no "straight" formula to get those, but some reported these values helped them, so I name those as "recommended" because they worked for a lot of people:
    Values (nom / wr / park):
    RZQ 7/0/5
    RZQ 0/0/5

    If you have to enter values as a number, here is the calculation scheme:
    RZQ is always "240".
    So RZQ/5 would be 240 : 5 = 48 ohms
    RZQ/7 = 240 : 7 = 34,28 (= 34,3 ohms)

    ... and so on ...

    CADBUS is a bitch. Really! I cannot find any reliable info on that, this is trial and error, literally. It drove me mad and still bugs me a lot to play with these, as some "near miss" may result in endless boot loops, RAM training failing constantly, massive memory errors and more buggy stuff.
    Recommended values which proved useful are:
    But again, those values may differ from setup to setup. So I thought about finding a way to get YOUR values as fast and as easy as possible.

    ProcODT/CADBUS/RTT values setup for beginners:
    So there you are, sitting in front of your computer and searching for the default values to start somewhere. Try this (already recommended to 3 gurus with gen1 and proven helpful):
    - Reset your BIOS to default values and reboot.
    - Enter BIOS again to set your critically needed values like RAID and stuff. Postpone any other setup for later.
    - Boot into Windows and run Ryzen Timing Checker. It will show you the values for CADBUS and RTT and ProcODT. Note those and reboot.
    - Enter BIOS again and set the values you noted.
    --> Then set SOC voltage to fixed value of 1.1v and set your XMP memory speed (no timings!), together with the recommended voltage for it (say: 3200MHz with 1.35V). DO NOT TOUCH ANYTHING ELSE YET! And reboot.
    - You should boot into Windows after memory training. Timings will be WAYYYY off, but the setup should be rock stable, you may try to run 5 cycles of Testmem 0.12 to verify this.
    - Reboot into BIOS.
    - Set the primary timings written on your RAM (say: 14-14-14-34) into BIOS. Please note there is one more in this row in BIOS, so you should set 14-14-14-14-34 (or whatever your timings on your sticks are, so 16-16-16-36 = 16-16-16-16-36!)!
    - Set LLC, switching speed, Phase Control and probable other values in this screen.
    - Increase RAM voltage a bit, to be on a safe side (say 1.37 or 1.38V).
    - Reboot into Windows and "Testmem" your new values.
    => On some boards it seems vCore has an impact on stability, so you may set it as fixed value, too. I use 1.32V for setting my Ryzen7-1700 to multiplier 38. HT is enabled of course!
    You should have a stable setup at XMP speeds now, so save the values somewhere, take a photo with your mobile, or whatever. So if anything fails during OC, you may revert to those proven values.

    Finding correct vCore and SOC voltage with AIDA64:
    This is still ongoing and far from finished, but ....
    - Start AIDA64 and do a memory / cache benchmark.
    - When you see the values, watch for:
    ==> difference (more than about 20GB/s) in READ vs. WRITE in LvL2 cache = vCore wrong
    ==> difference (more than about 20GB/s) in READ vs. WRITE in LvL3 cache = SOC voltage wrong
    ==> memory latency of more than 72ns = untuned RAM
    Cache latency should be somewhere around:
    L1 = 0.9 - 1.6ns (my rig: 1.1 - 1.2, cannot get below 1.1)
    L2 = 4.2 - 4.7ns (my rig: 4.4 - 4.5)
    L3 = 11.4 - 12.6 (my rig: 11.9 - 12.2)

    Bad scenario:
    L1 = more than 1.4
    L2 = more than 4.6
    L3 = more than 12.4

    Note: These values differ per Ryzen gen! The higher the generation, the lower the latencies! 3rd gen can archieve 0.9ns L1 easily from what I see.
    => If the values per cache level differ, your combo of vCore, SOC voltage and sometimes even memory voltage is "not good". I am still trying to find a reasonable fast way of getting to a solution, but my way is "trial and error" (a lot of trial, even more errors!). Please note changing those values may have an impact on memory stability, so always "testmem" any changes before proceeding.

    !!!---> to be continued <---!!!

    Bad recommendations anyone? :D
    Here: https://www.overclock.net/forum/180...le-posting-resuts-using-rule-appreciated.html
    But no wonder, thats his rig:
    (If I find more, I will post them here, so you can laugh and be shocked about it at the same time) ;)

    Special thanks:
    This thread wouldnt have been possible without the input from a lot of gurus like @OnnA , @Clouseau , @Kool64 , @gerardfraser and a lot of others I already have forgotten (sorry guys!).
    Thank all of you for pointing me into the right directions when fecal matters impacted with the rotary air impeller, for giving tips, suggestions and offering help when I was so short (==>||<==) before giving up and throwing the whole rig out of the window.
    Last edited: Feb 17, 2020
    NightWind, Morax, Clouseau and 6 others like this.
  2. 386SX

    386SX Master Guru

    Likes Received:
    AMD Vega64 RedDevil
    -placeholder for future posts-
  3. 386SX

    386SX Master Guru

    Likes Received:
    AMD Vega64 RedDevil
    2nd placeholder, just in case ...

Share This Page