integrated memory controller + DDR

hardwareuser

Member
Jun 13, 2005
136
0
0
I'm really confused with how the integrated memory controller works with DDR. First, I should probably state how I think they work, so that it's easy to see where I'm going wrong.

The maximum rate at which memory can provide data is dependent on the clock rate and the CAS latencies. A DDR 200MHz (PC3200) can provide data faster than a DDR 166MHz (PC2700) because they run at the same CAS latencies but each clock is faster in the 200MHz one. Is that right? I'm getting the feeling that it's not.

Having said that, I hear that the integrated memory controller on the Opterons runs the memory at the same clock as the CPU. How does it run the memory at such insane clocks speeds without requiring a change in the CAS latencies? From what I understand, the bus between the memory and the CPU is 128 bits (dual channel). How does it result in a 5.3GB/s transfer rate?

Sorry if it's such a newb question.

Thanks.
 

Peter

Elite Member
Oct 15, 1999
9,640
1
0
The memory _controller_ runs at CPU core frequency. The memory _bus_ frequency is divided down from there, e.g. by 12 when you got a 2.4 GHz CPU and PC3200 RAM for a 200 MHz result.

Raw theoretical pump rate on PC3200 RAM is 3200 MB/s, hence the name. Two channels of that, 6400. Minus latency overhead and other misc housekeeping, a real world result of 5300 MB/s is quite what one would expect.
 

icarus4586

Senior member
Jun 10, 2004
219
0
0
Probably the main reason for the increased efficiency of onboard memory controllers is latency, but not DRAM latencies like CAS. There is a lag (latency) added when the CPU has to ask the memory controller for some bytes that it didn't have in cache. If the memory controller is on the CPU, this lag is small. However, if the request has to go over a bus to an outside chip, this obvously adds extra time.
In a K8 CPU, the onboard memory controller runs at the same clock frequency as the CPU. A divider is used to derive the memory frequency. K8 memory controllers become faster when the rest of the CPU gets faster. This allows them to process memory requests faster and hence decrease overall latency. The system memory still operates at whatever frequency it's set at.
 

BitByBit

Senior member
Jan 2, 2005
474
2
81
One of the biggest misconceptions is that there is no memory bus on an Athlon 64 system.
There is no 'Front side bus', since that is by definition the bus that connects the memory to the Northbridge, and the Northbridge to the processor.
There is, however, a memory bus, which runs as has been stated at a speed derived from the processor clock and a divider, which usually results in a speed of 200MHz (at stock).
The Athlon 64 still uses the double-pumped EV6 bus that XP used, resulting at an effective bus speed of 400MHz.
Using the equation:

Bandwidth = Clock speed X Data Rate X Bus width, and putting in the variables for a dual channel S939 system, which we know can supply 6400 MB/s of bandwidth to the processor, we get:

6400 = Clock Speed X 2 X 16 bytes*
Giving us a clock speed of 200Mhz, or 400MHz if you take into account the data rate (twice every clock cycle).

* - Bandwidth is measured Bytes per second, where bus widths are usually stated in Bits, so the Socket 939's 128-bit interface becomes 16 bytes when divided by 8.

 

hardwareuser

Member
Jun 13, 2005
136
0
0
I don't know why those other places didn't mention that the memory will still run at 200MHz (or whatever clock).

Thanks for the answers.
 

hardwareuser

Member
Jun 13, 2005
136
0
0
Another question:

How does this affect overclocking? If I overclock my CPU, regardless of whether it's by increasing bus clock or multiplier, will that also overclock the memory? In other words, is the divider still based on processor clock, or will the memory have some independent clock?

Thanks.
 

imported_whatever

Platinum Member
Jul 9, 2004
2,019
0
0
Originally posted by: hardwareuser
Another question:

How does this affect overclocking? If I overclock my CPU, regardless of whether it's by increasing bus clock or multiplier, will that also overclock the memory? In other words, is the divider still based on processor clock, or will the memory have some independent clock?

Thanks.

OCing the CPU by increasing the FSB will increase the memory clock unless you set up a divider. increaseing the multi will not increae the RAM clock, but it will put more stress on the controller, meaning that in some situations a CPU can run a certain amount of RAM @ 200*8 2-2-2 1T but not 200*12 2-2-2 1T, even if the CPU is stable at 2.4
 

Peter

Elite Member
Oct 15, 1999
9,640
1
0
"unless you setup a divider" ... hello ... you are ALWAYS on a divider, down from CPU _core_ clock. The divider needs to be higher if you overclock, that's all.