I am new to superuser. I posted a question (DDR3 SDRAM compatibility: clock speed and timings), got no answer, did some more reading on the topic and decided to write an answer. But I cannot submit my answer because it “looks like spam”.
May I suggest that you revise your spam detection algorithm, because I cannot fathom what looks like spam in my answer. Ok, it’s really long. But it has no links, it’s reasonably formatted, contains no off-topic keywords that I can see, … I have seen plenty of spam and it would’t take long to a human eye to realise that my answer is nothing like it.
In the meantime, is there anything that I can do to get past the cerberus and post my answer?
To assist with troubleshooting, I am posting the problematic answer below, as suggested by Psycogeek.
Answer that I am trying to post:
Since nobody has yet answered my questions, I ended up reading quite a bit on the topic. I will attempt to summarise what I understood, and to answer my own questions.
If you are (like me) a beginner, please take this with caution and even suspicion because (1) I may have misunderstood what I have read and (2) I may have read incorrect explanations. Indeed, a lot of what I’ve read (aside from the JEDEC standard itself) seems to largely consist of totally unsubstantiated and, often, perfectly contradictory claims.
Summary of findings
Compatibility can be assessed by reviewing the detailed specifications of the memory controller (now typically built into the CPU), the mainboard and the memory modules to be installed (particularly, their SPD data).
In the absence of detailed specifications, the safest choice obviously consists of following the recommendations of the mainboard and/or CPU manufacturer and to match (in capacity and performance) all memory modules on a channel. But you knew that already.
SPD (serial presence detect) is a standardised way of retrieving manufacturing and performance information from memory modules. Most DDR SDRAM memory modules have an EEPROM storing SPD data (the specifications of the memory module will normally confirm whether that is the case). The startup firmware on most mainboards support reading SPD data from memory modules.
At startup, the POST (power-on self-test) process will read the SPD data from all memory modules and automatically select a speed profile compatible with all modules (and with the controller), unless a manual configuration override was entered by the user (assuming that the mainboard and its BIOS support such manual configuration). It will load the relevant values into the registers of the memory controller and then send an initialisation sequence to each memory module.
Many mainboards (particularly, those designed for desktop computers) also support manual configuration in the BIOS setup utility.
Automatic configuration will generally not cause hardware damage and generally guarantees that the components will run reliably, if not at peak performance.
Manual selection could cause damage to (or reduce the lifespan of) hardware components (memory modules, mainboard, chipset or CPU). For example, a CPU may not tolerate the voltage required by a memory module for maximal performance. The safest choice is to never exceed 1.5 V for DDR3 and DDR3L (1.25 V for DDR3U). Incorrect manual configuration of performance parameters (operating frequency, timing parameters) will merely result in system instability and operational failure. Manual configuration may be required to obtain peak performance operation of components, but the practical gains (in the context of desktop applications) are generally insignificant.
Automatic (SPD-data driven) configuration will select, for the entire channel, the operational configuration (operating frequency and timing parameters) accommodating the slowest component (this could be one of the memory modules in the channel, or the memory controller).
Because the same voltage is applied to all modules in the channel, DDR3U (1.25 V) must not be mixed with DDR3L (1.35 and 1.5 V) and DDR3 (1.5 V) modules.
DDR3L modules are designed to operate not only at 1.35 V but also at 1.5 V, so they may be mixed with ordinary DDR3 modules and installed on mainboards designed for ordinary DDR3 modules; in those cases, they will operate at 1.5 V, like ordinary DDR3 modules. In other words, DDR3L modules will operate at 1.35 V only if not mixed with 1.5 V DDR3 modules and installed on a mainboard specifically designed to support 1.35 V DDR3L modules. Note that the same cannot said of DDR3U modules, which only operate at 1.25 V.
Multi-channel operation generally comes with conditions for it to be enabled:
Memory modules must be installed in multiples (of 2 for dual-channel operation, 3 for triple-channel, etc.).
Memory modules must be installed in the right slots: fill the first slots of all channels; then the second slot of all channels, etc.; the slots may be colour-coded, but different manufacturers use contradictory schemes, so check the specifications of the mainboard.
Memory modules may need to match in capacity and/or (less frequently) performance, depending on implementation (capabilities of the memory controller) and mode of operation (interleaving is likely to require matching capacity).
If those conditions are not satisfied, the memory controller will normally simply revert to single-channel operation with little impact on actual system performance.
The impact on performance of relatively small variations in data transfer rate and latency (as obtained by switching grades of DDR3 memory and tweaking parameters) are debated and often considered mostly (or totally) insignificant in the context of desktop applications.
Compared to single-channel operation, dual-channel operation seems to only offer a very small improvement (a few percent) in overall system performance.
Interleaving seems undesirable for typical desktop and server applications (multi-threaded operation).
Answers to my questions
Yes, automatic configuration is normally the default scenario.
Most DDR3 SDRAM memory modules support SPD (serial presence detect), which enables software to retrieve the manufacturing and operational properties of the memory module.
At POST, the system firmware will read the SPD data from all memory modules and automatically select a speed profile compatible with all modules (and with the controller), unless a manual configuration override was entered by the user (assuming that the mainboard and its BIOS support such manual configuration).
In all likelihood, the system will simply select a speed profile compatible with all components (controller and memory modules) and no operational problem will arise.
It is true that most DDR3 SDRAM memory controllers only support a few DDR3 speed profiles (all standard speed profiles up to a maximum speed that depends on the controller itself).
Additionally, the highest speed profile supported by a controller may be dependent on the hardware configuration: number of memory module slots on the motherboard (whether they are populated or not), number of installed modules, number of ranks in the installed memory modules, etc.
However, when installing modules that support a speed higher than the controller can handle, a lower operational speed can safely be selected. Indeed, automatic configuration will do just that.
2.2. Very unlikely.
Most systems will adjust operating frequency and timing parameters automatically, using SPD data retrieved from the memory modules and a speed profile selection algorithm specified in the JESD79 DDR3 SDRAM standard.
The controller can support all standard timing parameters for the standard DDR3 speed profiles that it supports. Timing parameters are specified by the JEDEC standard, for each speed profile.
A DDR3 memory module will support all standard DDR3 operating frequencies up to its rated maximum. This enables a memory controller to use any DDR3 SDRAM memory module, though not necessarily at the highest speed supported by the module.
Several CAS latency values are specified by the DDR3 standard for each speed profile, and all DDR3 must support, at least, CL 6. Therefore, the controller is always able to select timings suitable for the selected operating frequency.
If the new memory is added to a system with an older memory module, and the capacity and/or performance profile of the new module does not match those of the old module:
The upgraded system will operate at a speed accommodating the slowest component. This could be less than the maximal speed of the new module. If the new module is slower than the old module, this could even be less than the speed previously selected. However, the impact on overall system performance is unlikely to be noticeable.
Multi-channel operation may not be possible (depending on the controller; in that case, single-channel operation will be used). However, the impact on overall system performance is unlikely to be noticeable.
3.1. No. A memory module normally supports several CAS latency values, enabling it to be used at different operating frequencies. The system will pick a single CAS latency value for all modules in the channel, ensuring (using SPD data) that it is compatible with all modules.
In short, installing a DDR3 memory module of higher speed than specified is safe, even if it is installed side by side with slower modules. On the other hand, installing dissimilar modules may hamper or prevent some type of enhanced operation such as interleaving. However, that is unlikely to noticeably affect overall system performance (for example, interleaving is generally best avoided for most workstations).
Note, however, that there are many other causes of incompatibility: form factor (DIMM versus SODIMM, low profile versus regular height), registered or fully-buffered memory (incompatible with most workstations), etc. So you still need to pay attention to what you’re buying.
With sincere apologies if this turns out to be a load of ignorant hogwash! Corrections appreciated.