Welcome to my memory overclocking guide. Before we get started, there are a few things I want to get out of the way, along with a few people to thank. First of all, thank you to @SteveGrabowski0 for being my partner in crime in this sub-forum, spreading the word about memory and it's impact on gaming performance. I would also like to thank @done12many2 for reigniting my passion for memory overclocking. Seeing you take to it so quickly, gave me hope that I could improve upon what I already had, and I did. Lastly, I would like to thank a friend who is not a part of this forum, but he's the man that got me into computers in the first place. He was also the one to teach me every timing in explicit details. Thanks Matt, a man could never ask for a better OCD stricken, unrealistically high standards friend.
Now, for the disclaimer: Memory overclocking will drive you insane. There is no one-stop overclock that will work for all boards, CPU's, etc. When I say it's trial and error, I mean it. You will either hate it, and never do it again, or become so addicted to it that it consumes your free time. Normally with a disclaimer; someone would say "this is your own doing, I am not liable for damage, bla bla bla" but let's face it, the only way you will damage your system with memory overclocking, is if you completely abandon all common sense. Stay within the voltages I put in this guide, and you will be perfectly fine. Now... let's get this show on the road.
Part 1: Intel
For this first part, we will be focusing on Intel boards and CPU's, since this is where I have the most expertise. Most of the timings we will be touching, are available on both DDR3 and DDR4, so a lot of this knowledge is interchangeable. Let's start with terminology:
Voltages: Below, are a list of voltages we will use when overclocking our memory to improve stability. I'll include both DDR3 and DDR4 voltages, along with Intel's "recommended max" voltages for the users that wish to have peace of mind. These voltages are:
vDIMM (Sometimes called VDDQ or DRAM Voltage, supplied from the board to the memory itself)
VCCIO (Voltage for the path going into and out of the IMC)
VCCSA (Sometimes called System Agent Voltage, it's your IMC and PCIe subdomain voltage)
For DDR3, typical voltages are 1.35v (DDR3L), 1.5v (JEDEC DDR3), and 1.65v (OC'd DDR3). Intel's max recommended voltage for DDR3 on Sandy/Ivy/Haswell, is 1.5v +5%, which is 1.575v. For DDR4, typical voltages are 1.2v (JEDEC DDR4), and 1.35v (OC'd DDR4). Intel's max recommended voltage for Skylake's DDR4 half of it's IMC is 1.2v + 5%, which is 1.26v. For the DDR3 half of Skylake's IMC, it's 1.35v + 5% which is 1.4175v. Sources to these claims (and why I think they are bogus) can be found here:
For VCCIO/VCCSA, I do not recommend exceeding a value of 1.25v for each. I personally use a value of 1.14v for VCCIO, and 1.15v for VCCSA. Going beyond 1.25v is silly, and may potentially damage your IMC or traces on your board.
Primary Timings: These are timings that are normally listed on every sales page of your ram. They include:
CAS Latency (tCL)
RAS to CAS delay (tRCD)
Row Precharge Time (tRP)
RAS Active Time (tRAS)
Command Rate (CR) (Note: Command Rate is not a timing, but it's listed under Primary Timings, so I included it here)
They are also commonly available to tinker on most chipsets, and are often made available for tuning in software like XTU.
Secondary Timings: These are timings that are seldom ever listed anywhere on a marketing page, but you can find them within your BIOS on some chipsets. They include:
Write Recovery Time (tWR)
Refresh Cycle Time (tRFC)
RAS to RAS Delay Long (tRDD_L)
RAS to RAS Delay Short (tRDD_S)
Write to Read Delay Long (tWTR_L)
Write to Read Delay Short (tWTR_S)
Read to Precharge (tRTP)
Four Active Window (tFAW)
CAS Write Latency (tCWL)
Most of these timings are inaccessible on lower-end chipsets and more restrictive BIOS's. Very rarely will you have access to them on lower-end configurations, and even XTU lacks control over most of these timings.
Tertiary Timings: These are timings that are NEVER listed anywhere on a marketing page, and are different per motherboard/CPU IMC/ ram IC. They are generated by your IMC, after your board probes it repeatedly looking for a stable configuration. Some of you might have noticed your PC restarting a few times when installing new memory kits. These timings are often the cause of that, as they need special training in order for you to post properly. They include:
tRDRD (_SG, _DG, _DD, _DR)
tRDWR (_SG, _DG, _DD, _DR)
tWRRD (_SG, _DG, _DD, _DR)
tWRWR (_SG, _DG, _DD, _DR)
Very specific boards and chipsets will allow modification of these timings. They are by far one of the most important groups of timings you can adjust, and are directly involved in improving your bandwidth efficiency. More on that later.
Round Trip Latency: Since these settings are not timings, and are not always listed under tertiary timings, I feel they need their own section, as they are probably the single most important settings you can adjust to see the biggest impact on performance. They include two settings:
RTL (the title of this section should give you hints as to what this is)
As the title of this section hints at, Round Trip Latency is directly involved in how long it takes your ram to complete it's total cycles. The tighter this value is, the lower your overall latency is. Sounds great, right? Well, the problem is: literally every timing is associated with this setting, and tightening other settings, makes it harder to tighten this. It's also annoying to adjust, as you cannot adjust it without also adjusting IO-L settings (the two must be adjusted as a pair) and there is no secret formula for doing so. All I can tell you is: your RTL channels cannot be more than 1 apart in either direction. Example: If RTL of Channel A is 50, RTL of Channel B can be 51 or 49. It cannot be 52 or 48, as this will result in extremely terrible performance, or worse, system instability.
Now that we have the timing terminology out of the way, let's first discuss stability testing. After all, you cannot overclock until you know how to validate that overclock.
Stress Testing (Validating Stability)
This part is always met with some sort of controversy, as everyone has their own way of doing things. That being said, I too have my own way, and it's the only way I've ever done it, so I'll have to stick by what I know. When making adjustments in your BIOS for timings or frequency, I always recommend running a full pass of memtest86. Memtest86 is not a stress test, but it will test things that can potentially show your IMC not liking your current memory configuration. I use it as a precursor to actual memory stress testing, as it helps prevent instant crashing in Windows due to IMC outright hating your memory configuration. We use memtest86 in two phases:
Phase 1: Full Pass
Phase 2: IMC Smackdown.
Phase 1 is pretty self explanatory. It's running memtest86, using all 13 tests. Phase 2 is where the fun begins, as we disable all tests excluding test 6, and run it several times. I personally do 10 runs of test 6, but feel free to do however many you wish to do. It will test different rows and addresses with each subsequent test, so the more you run it, the better your chances are for finding IMC/RAM incompatibility. This phase is critical when making adjustments to tertiary timings, as this test will find issues quicker than any other. When using Memtest86, make sure you hit C, and select "All Cores: Parallel". This will make the test go much quicker. Believe me, you will want to save as much time as you can, as memory overclocking takes a long time to validate 100% stability.
Next, we have my tool of choice for basically all forms of stress testing, Prime95. I know, some of you are scared when you see this come up. In fact, pretty sure I felt someone's heartbeat increase somewhere in the world due to the sheer mention of it. Relax. For this purpose, Prime95 is going to be 100% harmless. In fact, we won't be using an FFT size small enough for it to get hot, so you should be fine. If you are absolutely terrified, feel free to use the non-AVX version, as it shouldn't matter for ram stability (unless you are stress testing specific AVX-based tertiary timings, such as tRDWR_DD/DR, but more on that later. For now, let's focus on how to stress it. Open up Prime95 of your choice (I am currently using 28.10 as of this guide) and input the following settings:
(Do note: Number of threads should be equivalent to the amount of threads available on your processor. For example, a 7700k has 8 threads, while an R7 1700 has 16)
Now, for "Memory To Use", make sure you enter your own value. I highly recommend 75% of your total capacity. If you have say, 16GB, then your capacity = 16 x 1024 - 25% = 12288MB. For 8GB, that value would be 6144MB. Since I have 32GB, I'll be using 24576 to stress test. Once this starts, let it run for several hours. I personally let mine run for about 8-12 hours, depending on how I feel and how much I've tinkered from my last stable profile, but I do not recommend running for less than 8 hours. I know it's tempting to cut corners, but memory instability is not a game you want to play. It can seriously corrupt your windows installation, and require a fresh install. Take this part seriously.
As for why we use the settings above, allow me to explain. 512k-1024k is hard on the IMC and IO lanes. 2048k+ is hard on your ram. By setting the range at 512-4096, we not only stress the IMC and IO Lanes, we also stress the memory itself. Be warned: 1344k and 2688k are also included in this range, and are the hardest stress on vCore. If your CPU is unstable by any means, it will fail this, and will likely hold you back on memory overclocking. Always make sure your CPU is 100% stable before attempting memory overclocking. The less variables involved, the better. For those of you with Haswell, and worried about that old myth of Prime95 killing CPU's, understand this. This range lacks 448k, which was the hardest FFT to test on FIVR. You should be fine here.
Overclocking Memory (Intel Platforms)
Precautions: The very first thing I advise you do, is locate your CLEAR_CMOS button on your motherboard (if you have one) or put your system in a location that adjusting your CMOS jumpers/battery is easily accessible. You are certainly going to be using them, no exceptions. Next be sure to have your power supply's power cable near you. Sometimes, removing this and holding down the power button for 60 seconds, results in enough of a clear to allow you to get back into BIOS without completely resetting everything. Lastly, save all of your "pseudostable" profiles, so that you can continue to adjust them for better stability without starting over.
Overclocking Time!: Now that we have the precautions out of the way, it's time to start tinkering. I recommend focusing on Frequency first, while keeping your primary timings the same. I personally dial in a vDIMM of 1.35v, and then I start increasing my memory frequency one memory strap at a time. If I was at 3000 C15, I would try 3200 C15, then 3333 C15, 3466 C15, and so on. When you reach a point to where it no longer posts, you have 3 options. Option 1: Throw more voltage at it. Option 2: Loosen your primary timings. Option 3: settle for last bootable configuration.
I advise trying option 1 first, as it might only take a little bit more vDIMM to make it stable. For example: My 3600 C14 profile is unstable at 1.35v, but stable at 1.39v. Since it's still under the "1.4175v" that Intel suggested for the DDR3 half of the IMC, I just pretend the DDR4 half of my IMC will tolerate it just as well. As I've ranted about before, you won't be killing an IMC with vDIMM. Now, your VRM components near your ram on the motherboard, that's a different story entirely. Use common sense, and try to avoid going over 1.45v for 24/7 vDIMM and you should be fine. Some 4266 kits even use a value of 1.4v on their XMP's, and nobody has killed a board or CPU with those yet.
Option 2 is what we call "compromising". You have to be careful when making compromises on timings for speed. The end must justify the means. If you gain a slight amount of bandwidth, but lose on latency at all, it's a bad trade. Memory is already so ridiculously fast in regards to bandwidth, that latency should ALWAYS come first in your mind. That being said, frequency can be just as good for latency as it is with bandwidth. It just takes a little balance. If you increase frequency while keeping timings the same, latency improves. If you loosen latency while increasing bandwidth, one of two things can happen. #1: you have faster bandwidth, and latency remains the same as a result. This is a good trade with no negative side effects, so I tend to allow this. #2: you gain bandwidth, but latency suffers. This is a terrible trade, and should never be made. Go back to your last configuration, and work on making that stable instead.
When making minor tweaks, I recommend using software like Aida64's memory bandwidth test (cachemem test) to see your gains in performance. Yes, I know it sucks using paid software, but it seriously helps with knowing whether or not your timings are making a positive or negative impact in performance. While I do intend to provide the list of timings that benefit performance regardless of your memory IC's, you must understand that certain IC's have specific tertiary timings that they benefit from being loose, or tight. I cannot tell you a Samsung timing configuration, that will also boost your Hynix timing configuration, because they both enjoy completely different values. You can also have two different Samsung IC's (B Die, D Die, etc) that also prefer different values. The best course of action in this scenario, is trial and error.
Now that we've gotten frequency and primary timings taken care of, it's time for secondary timings. While you will see small gains from most of these timings, I want to focus on one very important secondary timing. tRFC. You see, memory is a matrix of billions of capacitors that need to be recharged. You have tRFC, a secondary timing, that works alongside tREFI, a tertiary timing. Every <tREFI>, they are recharged in order, for <tRFC> amount of time. Simply put: tRFC is the mount of time your ram can do nothing, while being recharged. tREFI = the amount of time your ram can do things, before needing recharged. Both are very important, and have significant impact on your latency. tRFC works best as low as you can get it, and tREFI functions best as high as you can get it. tRFC, in my testing, is best left at 270, as it's the easiest value to keep stable, while having the best gains in performance. tREFI on the other hand, can go as high as 65535 and not really matter, but can potentially lead to corruption if your motherboard's quality is lackluster. The warmer your DIMMS, the more often they need recharged. If mobo is bad, it can't recharge high enough to meet the required interval. Basically, if motherboard is bad, stick to the JEDEC standard of 7.8usec refresh interval. If your ram is 3000mhz, the formula is 1500 x 7.8 = 11700. If your ram is 3600mhz, the formula would be 1800 x 7.8 = 14040 tREFI.
There are other formula's for your secondary timings worth following, such as: tFAW = tRRD x 4. The others, they tend to take trial and error. Gain's can be small, or big, depending on whether or not you are using DDR3 or DDR4. I can say that with DDR4, the gains are not as massive as touching tertiary timings. Speaking of which...
Tertiary timings: Depending on your level of masochism, this will be the part you love the most, or absolutely dread. There is no in-between. As you saw above during the terminology half, tertiary timings tend to have a few suffixes after their name. These are SG, DG, DD, and DR. I'll be frank here. I have no idea what SG or DG means, I just know that they severely impact your bandwidth, no matter what kind of memory you use. As for DD, I believe these are related to 2DPC (DIMMS Per Channel) and only matter if you have 2 DIMMS per channel (ITX users rejoice, less complication) while DR matters when using multi-rank kits. It's easier to associate DR with "Dual Rank". If you have a single rank kit, touching _DR timings does literally nothing. No positive or negative, and no instability issues either. I recommend taking these one at a time, or at the very least, one group at a time. Focus on tRDRD (and all of it's suffixes), followed by tRDWR, and so on. Fun fact about tRDWR: these timings directly impact AVX. The tighter they are, the hotter AVX is. The looser they are, the cooler AVX is. Those of you that fear AVX, you might be able to use this to your advantage, and make those stress tests easier on yourself. I promise not to judge you.
Once you've finally settled on your tertiary timings, and have gone through countless hours of stress tests, it's time for the bane of my existence. RTL/IO-L's. I honestly cannot give you any better advice, other than "You gotta feel it". There is no magical value that I can tell you to dial in, and have it work. You can ask me until you are blue in the face, and I simply will not be able to help you. RTL has one very specific value it likes, and a few others that it "tolerates", and that's it. Either it works, trains poorly, or doesn't work at all. Now, with DDR4, we do have a trick up our sleeves to at least prevent it from training poorly. It's a very simple formula for a specific setting, called RTL Init. This formula is: IO-L + IO-L Offset + CL (x2) + 10. Let's say your IO-L is 4, and your offset is 21. You have a CAS Latency of 14. The formula would be: 4 + 21 + 14 (x2) + 10 = 63. Once you input 63 in the RTL Init setting, your IMC will no longer train RTL's beyond it's current threshold. This is great, as it at least prevents performance from getting worse. However, this is only a band-aid. You should still strive to find optimal settings for RTL/IO-L. That being said, do not beat yourself up dwelling on this. If you've gained significant strides in all other aspects of your ram, then feel proud of what you've accomplished. It's still worlds beyond what XMP can offer you, and you've gotten one step closer to mastering one of the most difficult "overclocking disciplines" there is.
For those of you that expected more than this, I am sorry. I am still learning myself, and I do not feel that I understand every aspect yet, so bare with me as I continue to learn and update this "guide" with what I discover in the future. If I forgot to tag anyone that was waiting to read this, I apologize, as my mind has been elsewhere and I honestly cannot remember who was waiting to read this. Part 2 (AMD Classic) and Part 3 (AMD Ryzen) will be coming as soon as I get the time. It may take weeks or even months for those to be completed, as my free-time is very scarce at the moment. As for why I need two entirely different parts for AMD, It's simple. Ryzens IMC is a complete overhaul over AMD's older architectures. It resembles absolutely nothing if it's former IMC (for better or for worse) and is currently lacking in many features. Simply put: Overclocking Ryzen's memory isn't an easy task, even for veterans. It requires a lot of tricks and luck, far more than any other platform I've encountered.
When I get additional time, I'll amend some of this guide to try to make it easier to understand, as well as add my experiences and additional tricks to save time during this process. Good luck everyone, hope it helps.