How do you figure AM2 memory frequency properly?

Pyrokinetic

Senior member
Dec 4, 2005
296
0
0
I am a bit stumped. I have two sticks of Corsair XMS DDR2 and I am trying to figure out what frequency they are running at with the following settings:

HTT = 302
CPU multiplier = 9
Memory divider = 5/6 (DDR2 667)

Nvidia MonitorView reports the memory is at 1009Mhz (I don't think that is correct).
The BIOS & CPU-Z report 906Mhz, and CPU-Z reports the effective CPU divisor is 6.

I always thought the AMD memory controller used the following formula:
DRAM Clock = CPU Clock / (ceil(CPU Clock Multiplier/Memory Divider))

Thus, according to the abouve formula, I should get:
302 * 9 = 2718 / (ceil(9/(5/6))) = 2718/ceil 10.8 = 2718/11 = 247
thus DDR2 frequency would be 247 * 4 = DDR2 988.

What is wrong with my calculation, and what memory frequency is correct?
Thanx.
 

ReefaMadness

Golden Member
Mar 28, 2005
1,075
4
81
My calculations show the 906 in BIOS to be the correct answer (see calculations below)...it is the "odd multiplier issue" is what is throwing off your calculations. Here are a few links that discuss it.

http://www.anandtech.com/cpuch...owdoc.aspx?i=2762&p=10

http://www.legitreviews.com/article/347/1/

http://www.hardwaresecrets.com/article/328

quoted from above linked article:

The memory controller integrated on AM2 CPUs can support DDR2-533, DDR2-667 and DDR2-800 memories. The problem, however, is how the memory bus clock is achieved. Instead of being generated thru the CPU base clock (HTT clock, which is of 200 MHz), it divides the CPU internal clock. The value of this divider is half the value of the CPU multiplier.

For example, an AMD64 CPU with a clock multiplier of 12x will have a memory bus divider of 6. So this CPU will work at 2.4 GHz (200 MHz x 12) and its memories will work at 400 MHz (DDR2-800, 2,400 MHz / 6). Keep in mind that DDR and DDR2 memories are rated with double their real clock rate.

The problem is when the CPU clock multiplier is an odd number. For an AM2 CPU with a clock multiplier of 13x, theoretically its memory bus divider would be of 6.5. Since the AMD64 memory bus doesn?t work with ?broken? dividers, it is rounded up to the next higher number, seven in this case. So while this CPU will work at 2.6 GHz (200 MHz x 13), its memory bus will work at 371 MHz (742 MHz DDR) and not at 400 MHz (800 MHz DDR), making the CPU to not achieve the maximum bandwidth the DDR2 memory can provide.

This is the case of Athlon 64 X2 5000+. As it works internally at 2.6 GHz multiplying its HTT clock by 13x, it can access memory only up to 742 MHz and not 800 MHz.



In your case, I believe that the calculations would be as follows, substituting the odd multi of "9" with the next even multiplier, which would be "10" in your case:

302 x 9 = 2718

2718 / [10 / (5/6)]

2718 / [10 / .8333]

2718 / 12.005 = 226.5 x 4 = 906

Or at least I'm making the same mistake as your BIOS and CPU-Z (certainly possible :) )

 

ryderOCZ

Senior member
Feb 2, 2005
482
0
76
Reefa is close.

NOTE: All discussion in this post, applies to all AM2 socket CPU's prior to the Phenom, nothing I am saying here applies to a Phenom CPU.

The only divider on an AM2 system that is 1/2 the CPU divider is the DDR2-800 divider.

Any AM2 CPU has a default FSB (HTT is proper term, its not an FSB) of 200. So in order to reach DDR2-800 with things at stock, you have the following:

200 x (CPU Multi) = CPU speed / (CPU multi/2) = 400 MHz = DDR2-800.

Example: 200 x 10 = 2000 / 5 = 400 MHz = DDR2-800.

Now, if you have an odd multiplier... dividing by 2 on the DDR2-800 divider will net you a 1/2 ram divider (which does not exist on the AMD memory controller) so you round up to the next whole (never down)

Example: 200 x 13 = 2600 / 6.5 (can't exist..so you have 7 here) = 371.4 = DDR2-743. You will not see DDR2-800 at stock HTT with an odd CPU multiplier when using the DDR2-800 ram divider.

Now, the other dividers available are the 667, 533, and 400.
400 divider being 1:1 with the HTT so the ram divider is the same as the CPU multi (accept in the case of odd CPU multi, still)

The actual ram divider changes with the CPU multi and the chosen divider in the bios. Here is a table that makes it easier...just find your CPU multiplier, then your ram divider will be shown under the appropriate choice from the bios. The table then shows some HTT settings and the applicable ram speeds.

http://www.ryderocz.info/ocz/ramspeed.jpg
 

T9246ED

Junior Member
May 15, 2008
1
0
0
Originally posted by: Pyrokinetic
I am a bit stumped. I have two sticks of Corsair XMS DDR2 and I am trying to figure out what frequency they are running at with the following settings:

HTT = 302
CPU multiplier = 9
Memory divider = 5/6 (DDR2 667)

Nvidia MonitorView reports the memory is at 1009Mhz (I don't think that is correct).
The BIOS & CPU-Z report 906Mhz, and CPU-Z reports the effective CPU divisor is 6.

I always thought the AMD memory controller used the following formula:
DRAM Clock = CPU Clock / (ceil(CPU Clock Multiplier/Memory Divider))

Thus, according to the abouve formula, I should get:
302 * 9 = 2718 / (ceil(9/(5/6))) = 2718/ceil 10.8 = 2718/11 = 247
thus DDR2 frequency would be 247 * 4 = DDR2 988.

What is wrong with my calculation, and what memory frequency is correct?
Thanx.


Your formula and math are correct,{except the last calc. should be *2, instead *4} but you have wrong results in meantime.
Because there is wrong value used which makes results invalid.

Memory ratio used is wrong, 5/6 is for DDR1 e.g. 166 (DDR333), for DDR 667 correct ratio is 5/3.

Example:
302 * 9 = 2718 / (ceil(9/(5/3))) = 2718/ceil 5.42 = 2718/6 = 453*2=906DDR
or if we take your example:
302 * 9 = 2718 / (ceil(9/(5/6*2))) = 2718/ceil 5.42 = 2718/6 = 453*2=906DDR


Originally posted by: Pyrokinetic
thus DDR2 frequency would be 247 * 4 = DDR2 988.

In a fact you have calculated memory frequency for DDR1 instead:) {Not for AM2} with 333 memory index, ergo your results if you are running s.754 or s.939 as followed:
302 * 9 = 2718 with 333 mem. Index ==> 247*2 (DDR494) /* Without divisor corrector, with divisor corrector memory divider will increase from 11 to 12 which will reduce memory frequency from 247 to 226(DDR453) */