Nehalem Memory Speed Information
The memory controller in Intel's new Nehalem processor is a radical departure from previous Intel processor architectures, in that the processor die now contains a memory controller. As a result of this change, much of the system builder community is confused as to the proper memory speed to use for Nehalem processors.
This paper provides information to system builders so that the proper memory can be selected.
This information is extracted from Intel documentation. It is correct, to the best of our knowledge, as of the time it was written.
The base clock for the Nehalem line of processors is 133MHz and all other clocks in the processor are derived from this. The UnCore uses multipliers of 12, 16 and 20, and is set when the processor is programmed (Extreme Edition processors are unlocked - the Core-i7 965 and 975 are in this category). The memory controller uses multipliers of 3 (400MHz - DDR3-800), 4 (533MHz - DDR3-1066) and 5 (666MHz - DDR3-1333), with a maximum of 1/4 the UnCore multiplier.
A single-rank or dual-rank memory module (unbuffered or registered) counts as a single load, while a quad-rank module (registered only) counts as two loads. The clock multiplier that is used by all the memory controllers in a system (applies to the single memory controller in a 1S system, and the two memory controllers in a 2S system) is determined by the largest number of loads on any memory bus in the system, but can be no higher than the multiplier described above. For one load, the highest multiplier is 5. For two loads, the highest multiplier is 4. For three or four loads, the multiplier is 3.
No more than four memory loads are allowed on a channel. Additionally, no more than two memory loads are allowed with unbuffered memory. It is not possible to mix unbuffered memory and registered memory in the same system.
Some of the HP Gainstown systems have the ability to run two memory modules (single-rank or dual-rank) per channel at 666MHz. This is above the officil Intel support memory clock, but it appears to work. Also, the Lynnfield CPUs are capable of the same thing, but it's within spec for these CPUs.
As previously stated, the clock speed at which the memory is run is a combination of the processor specifications, the memory specifications, and the memory loading. As an example, if a processor is rated to drive memory at 666MHz, and it has two memory modules on at least one of it's memory channels, the memory will run at 533MHz (400MHz if one of the modules is quad-rank). If the memory used is only rated for 400MHz operation, the memory controller will be limited to that speed.
The command timing is one clock, except when Unbuffered DIMMs are used, and any channel has more than one DIMM. In that case, the command timing is two clocks.
Command timing is the time between when a memory chip is activated, and when the chip is ready to receive a command. The Nehalem memory controller supports command timings of 1 and 2 clocks.
There are a few special rules that must be followed when quad-rank memory modules are used in a system:
A new technology called MetaSDRAM is supported by the Nehalem processors. This technology places a memory controller on the memory module to decrease the number of ranks seen by the host memory controller (in this case, the memory controller on the processor chip). This allows high-capacity (8GB or 16GB) memory modules to be manufactured using low capacity (1Gb) memory chips. There is no bandwidth penalty for using this technology, but there is a slight latency penalty.
This technology is supported by the Intel Nehalem processor (8GB modules only), but it also requires support in the motherboard BIOS. Up to three MetaSDRAM modules per channel are supported on the Dual-Processor Xeon. This technology functions similar to registered memory, so it will not work on any of the single-socket Nehalem processors.
Mixing MetaSDRAM with other types of memory is not supported.
On a related note, the MetaRAM company fell prey to the current economic downturn, so don't expect to see this memory available any time soon.
Sometimes, memory is underclocked. This could be due to adding memory to a system, causing the memory bus to run at a lower clock, or purchasing faster memory than was originally required. Underclocking effects the memory timing values. The actual timings can only be determined by using the memory, but it is possible to estimate any specific timing value at a specific underclock. To calculate the timings of an underclocked module, you need to multiply the base-clock timings by the new clock, and divide by the base clock, and round up. The actual timings will be either the computed timing, or one less than the computed timing, depending on the exact information in the SPD chom on the DIMM.
As an example, 666MHz CAS-9 memory run at 533MHz computes to CAS-7.2 (CAS-8 when rounded up). This means that the specified memory should run at either CAS-7 or CAS-8.
If you have any comments or suggestions, please E-mail firstname.lastname@example.org
© 2009 - Ashford Computer Consulting Service