So, it's time to tweak your memory to get maximum performance out of it eh? After playing around with a LOT of memory, I've sorta settled on what I think is a good way to overclock memory. It might not be the fastest, as there is a lot of testing and tweaking involved, but you'll be sure to learn a lot about what the memory can do, and see if there's any hitches along the way.
Introduction of Basics
Before we really get started however, we should go over a few things about memory first. Most notably voltage and timings, as they have a large impact on the clock speeds, performance, stability and lifespan of your memory. First, the timings. I'm only gonna go over the 4 main ones in this article, the rest can be covered another time. Typically, memory comes with a rating that looks like "2.5-3-3-7" or something along that line. those 4 timings are:
Cas latency (Tcl or cas)
- with ddr1 you have the option of 2.0, 2.5 or 3.0, ddr2 give 3, 4, 5 and 6.. we may see higher, but I certainly hope not. Some boards allow the use of cas1.5 for ddr1, but in most cases (except the DFI Expert and Venus, and maybe another board or two I don't know of), cas1.5 is actually just a wee smidge slower than cas2.0, because it's not really setting 1.5. Moderate effect on performance, in most cases, Trcd and Trp have a bigger effect
Ras to Cas Delay (Trcd)
- This timing tends to have the largest effect on performance. Options range from 0 to 7, with 0 and 1 being basically unobtainable except for in the rarest of BH-5 sticks. Anything over 4 is usually overkill, and incurs a pretty hefty performance hit.
Ras Precharge (Trp)
- Slightly less of an effect on performance than Trcd, but more than Tcl. Same options as Trcd though, and same for the <2 is hard to get and >4 is overkill for getting clocks and hurts performance needlessly.
Minimum RAS Active Time (Tras)
- A very small effect on performance and clocks, enough so that I typically disregard it and set it to cas + trcd + 2. Options range from 0 to 15.
For the voltage, keep two things in mind:
1. More voltage isn't always better. Know which memory IC your sticks have, and keep voltages within known ranges. If you don't know what chips you have, staying below 2.9v is a safe bet.
2. More voltage increases temps and decreases lifespan. Some IC's can take it, some can't. A good example would be Samsung TCCD vs Winbond BH-5. The former usually dies pretty rapidly if left at 2.9-3.0v for 24/7 use, while the latter can take 3.6v in a stride, and most likely the components on the PCB would fail before the IC's themselves.
Ok, for the testing, I like to do something like this: Find lowest timings possible at whatever the stock speed of your motherboard is. Say that I have some pc4400 (275mhz) and put it into a Athlon64 rig, the memory will automatically run at 200mhz. Find the tightest timings at these speeds.
Next, raise the timings one at a time until you find the one that makes the largest mhz increase over your previous timings, and find the max. repeat until you get to 3-4-4 timings.
For a more explicit breakdown, I'll explain what to do more explicitly, and at the same time, give examples with a pair of memory I have sitting around.
Get memtest and install it on a floppy or cd if you don't have a motherboard that has it on the bios (DFI). Boot with the memtest floppy/cd in to make sure it boots into that instead of your normal OS. Once you have confirmed this, hit escape to reboot and then go into the bios.
What we're gonna do first is find the tightest timings the ram can run at stock speeds. First, set all the timings to the rated speed of the ram, no auto's should be seen for Tcl, Trcd, Trp or Tras :D
From here, we will work on one timing at a time. start with cas latency (Tcl)
1. lower it one step, save bios and restart, boot into memtest
2. In memtest, change to test #5, loop it two or three times
3. if you get no errors, go back to step 1, if you do get errors, continue to 4
4. raise timing one step, and go back into memtest and let it run through a few full passes. If you do not have the patience for this, loop test 5, 6 and 8 at least 3-4 times each. you should not get errors.
Repeat the above for Trcd, and Trp. Adjust Tras when needed to keep it equal to Tcl + Trcd + 2
When completed all 3 timings, write down what they are somewhere safe. We have just completed the first step!
Now, the where the real fun begins. We're gonna find the maximum speed at each set of timings, however, it's gonna take a long time :)
1. Bump up the fsb/htt 2-3 mhz
2. Boot into memtest, do 2-3 loops of test #5
3. If no errors, go to 1, if errors, continue to 4
4. Lower fsb/htt 1mhz
5. Go into memtest, and let memtest run. If you get
any errors, go back to 4. Once you can loop memtest for ~3 hours per gigabyte in your system, write down the mhz obtained along with the timings and voltage it took to get there. I recommend making a chart for this, tabulating the maximum mhz at each set of timings and voltage.
Now we have two options: bump up memory voltage, or raise the timings. Either way you go, follow the above steps. You should always test things systematically.
If you decide to increase voltage, be sure to only change voltage, leave all the timings alone. One rule I try to follow at all times when overclocking is only change one variable at a time. If more than one is changed at once, you don't know how much each is effecting things.
Start out at stock voltage (2.6v for ddr1 and 1.8v for ddr2) and test .1v higher, find max, .1v higher, find max, etc.. until you decide that the voltage is high enough.
This will vary for all IC's, refer to the quick guide for IC's at the end of this guide. Be very careful with voltage, as some can fail prematurely if you give it too much. Also, always be aware of the temps your sticks are running at when overclocking.
For the timings, you should change one timing at a time until you find which ones make a significant effect on max mhz. This is something that will take a bit of playing around and guesswork until you find something that works out well. Again, be sure to only change on timing at once, and do not touch the voltage at this time.
Example of Procedure
Here's an example to give an idea of what exactly all that means:
Let's say I want to overclock my crucial Ballistix PC3200 2x512mb kit. I have found it's tightest timings at 200mhz to be 2-2-2-6. I find the max mhz with these timings to be 217mhz with 2.6v.
I try the following combinations and find the max speed at each:
2.5-2-2-6 = 250mhz
2.0-3-2-6 = 219mhz
2.0-2-3-6 = 217mhz
So from this, it's obvious that the timings I should work on next would be 2.5-2-2-6, as it had the highest mhz increase over the previous set of timings. I now write down 2.5-2-2-6 in my chart, and that it does 250mhz at 2.6v
Then from 2.5-2-2, I would find the next set of timings that give me the highest bump, I test:
3.0-2-2-7 = 250mhz
2.5-3-2-7 = 259mhz
2.5-2-3-7 = 250mhz
This time, I find that the difference is less noticable, but raising Trp raises the speed to 259mhz while Tcl and Trcd don't get a single mhz. This means the next set of timings I would write down in my chart would be 2.5-3-2-7, 259mhz at 2.6v
Just keep working along the lines of the above examples until you reach 3-4-4. Higher than this is not worthwhile testing for ddr1, for ddr2, I think I would stop at 6-6-6-15
When you're all done with your testing with both timings and voltage, you should have a chart that looks somewhat like this:
Now, it's important to note that even though there are no errors in memtest, the above settings may still be a bit unstable in windows. I would reccommend dropping the fsb/htt down ~10-15mhz, go into windows, and use clockgen to slowly approach the number you wrote down while running prime95 in blend mode. Most likely, the number of mhz that one setting is off from being stable, the rest will be pretty close to being the same, which should be something handy to keep in mind when finalizing the above numbers. Luckily, you don't need to test them all, only the ones that seem like they'll match up with your desired settings well. If you get exceptionally bored one day, you know what to do to keep occupied!
If at any point along the way you find that you can't get higher mhz, try to figure out what is holding you back. It can be your cpu running at too high mhz, your memory controller maxing out, your motherboard hitting a limit, or your memory simply not scaling well past the timings you're at. Just use some common sense and see if you can get around the limitation by fiddling around with stuff :D
Also, this is just the tip of the iceberg for some boards. With boards that are oriented towards overclockers like DFI, you get the aforementioned 4 timings, Trc, Trfc, Trrd, Twr, Twtr, Trwt, Tref, bank interleaving, the drive strength from the memory controller, the max async latency and read preamble, idle cycle limit, and ability to toggle the counter that limit controls, along with read/write queue bypass, and the bypass max.
Once you start messing with all those to fine tune an ram oc to get the last couple mhz, or get better performance at a given mhz and primary 4 timings, things get pretty intense. Fortunately, there's a few rules of thumb you can follow, and tweaking those aren't too different than the primary 4, but looser isn't always better ;)
Small IC Guide
Now, the quick guide on some common performance ram chips..
(old + new school)
basically the ram that has turned into a myth of sorts. normally does around 240-270mhz.. not great in itself, but the thing to remember is that it can do it at 2-2-2 timings. the downside is that it typically needs 3.2-3.5v to do that. Also, higher latencies do not help much.. forget about cas3, it shouldn't boot. cas2.5 often isn't as stable, or simply does not get many more mhz. Try not to go higher than 3.5-3.6v unless benching, and be sure that your system is up to taking that much voltage for long term use.
known to be in OCZ VX, twinmosSP and some Mushkin Redline modules. It's similar to bh-5, in the fact that it likes lots of voltage and generally likes 2-2-2 timings. CH seems to scale with voltage better than BH, but it needs around 3.1v to to get down to 2-2-2 to begin with. Being a smaller process size, it's not as safe to pump CH dies as much voltage as BH. I wouldn't go over 3.4v for 24/7
Been around for a little while. It had.. a cult like following for a while, which I find amusing, though it's for a good reason.. anywho, the premise of this stuff is that you can do really high speeds (often 300mhz+ with good sticks) and doesn't need much voltage. The downside is that it needs higher timings to get there. Expect to have to raise timings to 2.5-4-4 or 2.5-4-3 to get the most out TCCD/TCC5. Also be prepared to do a little bit of testing to find which voltage works best, some sticks actually start decreasing performance if you give them more than 2.7-2.8v, while some can take up to 3v. with newer tccd/tcc5, it seems that more than 2.8v will hurt then after prolonged periods of time, while the older chips can take a bit more, and actually scale really well at cas2 with lots of voltage, but die really fast if you do that.
Though it is kinda "value-oriented" as far as 64mb IC's go, proper binning can get you 250MHz 3-4-4-8 or 3-4-3-8. Typically top out around 270-280MHz, though sticks have been recorded at 300MHz. OCZ and G.Skill have a wide variety of sticks with these chips. Other manufacturers known to use them are Corsair, Mushkin, Teamgroup, and Crucial.
Micron 5b G:
this is sorta a mix between BH-5 and TCCD. With properly binned sticks, it can do 2-2-2 timings up to a moderate speed (typically 220-225mhz without going nuts with voltage). The sweet spot is usually with 2.5-2-2; 250mhz at 2.7-2.9v and 2.5-2-2 seems typical with 5b G, with more possible with additional voltage. It also scales well with timings too, though not as well as TCCD does, with 3-3-3 being best for hitting highest mhz (around 275-310 usually). 5b G can take 3.0-3.2v pretty reliably when properly cooled, though it will cut into it's lifespan a bit. if you get it in value ram, simply subtract ~10-40mhz from the above numbers, depending on your luck :)
Micron 5b D & 5b F:
Similar to 5b G, but is typically a 64mb IC instead of 32mb. Being a smaller process, 110nm for D and 95nm for F, don't give these as much voltage, around 2.9v and 2.7-2.8v seems to be best, and at 3-3-3. Be exceptionally careful with 5b D, as it seems to have a very high failure rate.
These can be considered the BH series of 1GB sticks (though not to me), minus the high voltage. Though they are usually limited to around 260-270MHz, they make up for that with lower timings than the other 64mb IC's. Infineon chips are usually binned to 250MHz 3-3-2, which is not half-bad at all. Usually they will go up to 260-270MHz 3-3-2.