Sunday, May 6, 2007

MEMORY Overclocking Guide

So, it's time to tweak your memory to get maximum performance out of it.
The process is a little bit boring, like all overclocking procedures. You will have to change the memory clock, save the new configuration, reboot your PC and check if your computer is still working correctly.
I personally recommend that your run 2 programs, Sandra, on its Memory Bandwidth Benchmark module to check the increase on memory performance (download it HERE), and SuperPI, to check the increase on the overall PC performance (download it HERE).

Introduction of Basics

-------------------------------------
Before we really get started however, we should go over a few things about memory first., which is Voltage and Timings, as they have a large impact on the clock speeds, performance, stability and lifespan of your memory.
Typically, memory comes with a rating that looks like "2.5-3-3-7" or something along that line. those 4 timings are:
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>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.

STEP-by-STEP Guide
------------------------------

1) 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.

2) 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.

3) From here, we will work on one timing at a time.
start with cas latency (Tcl)
-3.1 )lower it one step, save bios and restart, boot into memtest
-3.2 )In memtest, change to test #5, loop it two or three times
-3.3 )if you get no errors, go back to step 1, if you do get errors, continue to 4
-3.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

4)
When completed all 3 timings, write down what they are somewhere safe. We have just completed the first step!


5) 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 :)
-5.1) Bump up the fsb/htt 2-3 mhz
-5.2) Boot into memtest, do 2-3 loops of test #5
-5.3) If no errors, go to 1, if errors, continue to 4
-5.4) Lower fsb/htt 1mhz
-5.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.


6) 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.


7) 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.

note:
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.

No comments: