When we go to buy a memory module we know its characteristics by the fact that the manufacturer tells us in the specifications, but how does the CPU know? It does not understand the same language as we do and only understands a particular dialect of the binary. Well, it does it through a piece of hardware that gives it this information.
What is Serial Presence Detect or SPD?
First of all, we must bear in mind that we are talking about a component that It is found in the RAM memories of PC, and it is a EEPROM that stores the DRAM information. Often it is usually located on a small chip which usually accompanies all DIMMs or SO-DIMMs as shown in the picture above.
By using a programmable ROM through electrical impulses, its content is written to the SPD once the memory chip has been manufactured and therefore tests have been carried out to determine its operating speed. When tools like HWinfo or CPU-Z give the specifications of the RAM memory, what they ask the CPU is to ask for its information in the SPD.
The SPD is also found in other types of memory such as the VRAM used in graphics cards. In this case, the SPD is not on a separate chip as the memory is soldered onto the board, but on each of the memory chips in the case that it is GDDR-type memory or in the base where the logic of each HBM stack is .
What does the Serial Presence Detect do on the PC?
When starting a PC the first thing the processor does is access the SPD, and the latter informs you of access times and memory speed. This is important due to the fact that the compass at the time of accessing the RAM, not only by the processor but for the entire system, is an access carried out at the wrong time that ends up sending the communication with the memory to the fret, for which it is key.
Today there are cases such as AMD Ryzen processors that access the RAM of the system with variable clock speed, so they have to know the specifications of the RAM to which they are connected in order to operate in conditions and that do not cause problems at the time of said access. And it is that you have to take into account that there is a window to access the RAM limited in time.
If the information sent by the CPU to the RAM arrives outside the exact period, then the RAM can return erroneous data or write in a part that is not the address of the RAM memory that we wanted to access for it.
How does the CPU communicate to the RAM memory SPD?
It is obvious that it does this through the interface that is located on the perimeter of the processor and that is wired to the RAM of the system.
Access to the EEPROM on the SSD however is not done through the data pins and addressing with the RAM. For this, they add more communications that are assigned to the SMBus, which is a variant of the I²C that uses only four poles: one is used as a clock, the second transmits data and the third and fourth inform which of the four modules it is. To finish, the SPD shares the ground pin with the rest of the DIMM, but uses its own pin for power supply.
What information can the SPD contain inside?
The direct and simple answer is the one that requires the CPU to function, we cannot forget that it is a very small ROM memory and therefore it must have its data arranged in the most compact way possible.
That is why the way in which such information is stored within the SPD’s EEPROM is always the same, which helps save space and facilitates not only communication with the CPU, but also with the motherboard chipset. And what is the order and who dictates it? Well, the committee that is the JEDEC does it, which is the one that sets the memory standards for both NAND Flash and RAM that we use in our computing devices.
In each JEDEC standard the content of the SPD varies, but the data it contains is not only about speed, but also information like now:
- The type of RAM it is: DDR, LPDDR, etc.
- How many chips are there and the storage capacity of each one.
- Serial number and manufacturer.
- Voltages supported by the DIMM for overclocking.
- And so on.
What happens when we overclock the RAM?
Memories that have the ability to vary their clock speed use a different Serial Presence Detect than standard modules. Luckily, the JEDEC allows you to add extensions at the end of the Serial Presence Detect.
The most famous of all is Intel’s XMP, which was designed first for DDR3 and later ported to DDR4. The answer to this was the AMD AMP that they used in their failed line of RAM memory modules, although over time they have ended up adopting the extension of their rival, which has become universal in the vast majority of DIMMs and motherboards.
So without Serial Presence Detect then memory overclocking wouldn’t even work. The reason for this is that they depend on your information so that there are no communication errors and also in scenarios such as the fact of increasing the speed of the RAM (and with it the voltage) which could be fatal for the health of the memory.