Serial Presence Detect
) refers to a standardized way to automatically access information about a computer memory module
. It is the serial version of Parallel Presence Detect
In order for a memory module to support SPD, the JEDEC
standards require certain parameters to be placed in the lower 128 bytes of an EEPROM
located on the memory module. These bytes contain timing parameters, manufacturer, serial number and other useful information about the module. This data allows a device utilizing the memory to automatically determine key parameters of the module. For example, the SPD data on an SDRAM
module might provide information about the CAS latency
, allowing this to be correctly set without user intervention.
The SPD EEPROM is accessed using SMBus, a variant of the I²C protocol. This reduces the number of communication pins on the module to just two: a clock signal and a data signal. (There are three additional pins to provide each EEPROM with a unique device address.) The same SMBus is commonly used on motherboards for system health monitoring tasks such as reading power supply voltages, CPU temperatures, and fan speeds.
Enhanced Performance Profiles (EPP)
EPP is an enhancement of SPD and provides additional performance-specific information needed for overclocking applications. The EPP information is stored in the same EEPROM, but in bytes 99-127 which are unused by standard SPD.
SPD information readers
Motherboard BIOSes read the SPD information to configure the memory controller. Other programs that read SPD information, with full source code available, includes:
- dmidecode program can decode information about memory (and other things) and runs on Linux, FreeBSD, NetBSD, OpenBSD, BeOS, Cygwin and Solaris.
- On Linux systems, the user space program decode-dimms.pl provided with lm_sensors decodes and prints information on any memory with SPD information in the computer. On more recent Linux distributions, decode-dimms is available as part of i2c-tools.
- OpenBSD has included a driver (spdmem(4)) since version 4.3 to provide information about memory modules.
- coreboot reads and uses SPD information to initialize all memory controllers in a computer with timing, size and other properties.
- On Windows systems, there are programs like AIDA32, CPU-Z and PCWizard 2007 that are able to display SPD information.