Fact-checked by Grok 2 weeks ago

Serial presence detect

Serial Presence Detect (SPD) is a standardized hardware feature for computer memory modules that stores configuration data in an electrically erasable programmable read-only memory (EEPROM) chip, allowing the system's basic input/output system (BIOS) or unified extensible firmware interface (UEFI) to automatically detect the module's characteristics and apply appropriate operating parameters during initialization. Developed by the Engineering Council (), SPD evolved from the presence detect (PPD) used in earlier 72-pin in-line memory modules (SIMMs), which was limited to basic detection, to a serial interface approach introduced with 168-pin dual in-line memory modules (DIMMs) for greater data capacity and flexibility across memory technologies. The data is accessed via a two-wire serial bus, such as or (SMBus), using a specific device address, enabling the host controller to read a structured byte array without manual configuration. Key information encoded in SPD includes the memory type (e.g., , DDR4, DDR5), total capacity and organization, operating speed and voltage, timing parameters for read/write operations, support for features like error-correcting code (), refresh rates, and manufacturer-specific details such as part numbers and serial identifiers, all validated by a for . This standardization ensures compatibility and performance optimization across diverse systems, with ongoing updates to accommodate advancements like LPDDR5 and DDR5 modules.

Overview and History

Definition and Purpose

Serial Presence Detect (SPD) is a standardized mechanism defined by the JEDEC organization under the JESD-21-C specification for storing configuration data within a non-volatile electrically erasable programmable read-only memory (EEPROM) integrated on dynamic random-access memory (DRAM) modules. This embedded EEPROM, typically accessible via a serial interface such as I²C, holds essential details about the memory module produced by the manufacturer. The primary purpose of SPD is to enable automatic detection and configuration of RAM parameters by the system's BIOS, UEFI firmware, or memory controller during initialization, eliminating the need for manual user intervention. Key parameters retrieved include module size, operating speed, access timings, required voltage levels, and organization (such as rank and bank configuration), allowing the system to optimize memory operation without relying on predefined defaults or user-specified settings. By querying the EEPROM serially through dedicated pins on the module's edge connector, the host can read this data in a plug-and-play manner, ensuring compatibility and correct setup for diverse memory types. SPD addresses the increasing complexity of memory modules emerging in the mid-1990s, particularly as systems transitioned from simpler extended data out (EDO) and fast page mode (FPM) RAM to more advanced synchronous DRAM (SDRAM) technologies with variable timings and densities. Its benefits include minimizing configuration errors that could lead to instability or suboptimal performance, facilitating easier installation of compatible modules, and providing access to manufacturer-specific optimizations for enhanced reliability and efficiency. Overall, this automation supports scalable memory upgrades in personal computers, workstations, and servers by ensuring the hardware adapts seamlessly to installed components.

Development and Standards

Serial Presence Detect (SPD) originated from efforts by the Joint Electron Device Engineering Council () to standardize configuration during the mid-1990s transition from proprietary setups to (SDRAM). This development addressed the need for automated detection of module parameters in systems, enabling plug-and-play compatibility without manual adjustments. The initial framework was integrated with the first SDRAM modules in 1996, marking a key milestone in industry-wide adoption. The core SPD specification is defined in JEDEC Standard No. 21-C, Section 4.1.2, which outlines the serial interface and data structure for presence detection across various memory technologies and form factors. This standard has been revised multiple times through the 2010s to accommodate evolving requirements, with specific annexes added for double data rate (DDR) variants, such as Annex K for DDR3 SDRAM modules (initially released in 2008 and updated to Release 6 in 2014) and Annex L for DDR4 SDRAM modules (first published in 2014). These updates supported higher memory densities and faster clock speeds, ensuring SPD's adaptability to technological advancements. JEDEC plays a central role in mandating SPD for in all modules, promoting among manufacturers. Optional extensions have arisen through collaborations with platform vendors like and ; for instance, Intel's PC100 specification in 1998 refined SPD parameters for 100 MHz SDRAM to enhance system stability. In the , SPD expanded to cover the DDR series, including initial support for in 2000, DDR2 in 2003, and DDR3 in 2007, aligning with broader DDR standardization efforts. In the 2020s, JEDEC continued SPD evolution with dedicated standards for next-generation memories, such as JESD400-5 for DDR5 modules (first released in 2020 and updated annually, with version 1.4 in October 2025 supporting speeds up to DDR5-9200) and JESD406-5 for LPDDR5/5X modules (first published in 2024, with an update to JESD406-5B in October 2025). As of November 2025, SPD remains foundational to memory ecosystems, providing backward compatibility in DDR5 and LPDDR5X designs while coexisting with emerging interconnects like Compute Express Link (CXL) for coherent memory expansion.

Technical Foundation

EEPROM Storage Mechanism

Serial Presence Detect (SPD) relies on an electrically erasable programmable read-only memory (EEPROM) chip to store configuration data for memory modules such as DIMMs and SO-DIMMs. This nonvolatile storage device is typically an I²C-compatible serial EEPROM from the EE1002 family or equivalents, with capacities ranging from 128 bytes in early implementations to larger sizes in modern standards. In initial SDRAM modules, the EEPROM capacity was 256 bytes (2048 bits), as specified in early JEDEC and Intel standards for PC SDRAM. For DDR4 modules, the standard evolved to support 512-byte EEPROM devices to handle expanded data requirements, including module-specific parameters. DDR5 further increased this to 1024 bytes, incorporating hub functions and additional thermal sensor integration to accommodate fine-grained timings and denser configurations. Common examples include the AT24C02 for 256-byte devices and specialized variants like the AT34C02D tailored for SPD applications. The EEPROM interfaces with the system via the System Management Bus (SMBus), a subset of the I²C protocol, using two dedicated pins: SCL for the serial clock and SDA for bidirectional data transmission. These pins are integrated into the memory module's edge connector, allowing the host memory controller or chipset to access the device without interfering with DRAM operations. In DDR5, the interface may extend to I³C for enhanced speed, but SMBus remains the baseline for compatibility. Reliability is ensured through features like software-configurable write protection, which prevents unauthorized modifications via lock bits or session controls. These EEPROMs offer an endurance rating of at least 1 million write/erase cycles per byte and data retention exceeding 40 years under normal operating conditions, making them suitable for long-term module deployment. Physically, the EEPROM is soldered directly onto the memory module's printed circuit board (PCB), positioned near the connector notch for optimal signal integrity and accessibility. This placement allows the chipset to read the SPD data during the Power-On Self-Test (POST) phase, enabling automatic system configuration without manual intervention.

Data Structure and Format

Serial Presence Detect (SPD) data is structured as a contiguous of 128 to bytes stored in an device on the memory module, with the exact size and organization defined by standards for each memory generation to ensure compatibility and readability by host systems. The is logically divided into sections, including a header for , core module parameters, and optional manufacturer-specific , allowing for scalable extensions across technologies from SDRAM to DDR5. For instance, early SDRAM implementations use 256 bytes total, with the first 128 bytes dedicated to essential configuration, while DDR4 expands to 512 bytes and DDR5 to bytes to accommodate advanced features like higher densities and error correction. The header begins with bytes 0 and 1, where byte 0 encodes the number of bytes written by the manufacturer and the coverage range (e.g., 23h indicating 384 bytes used and coverage up to byte 125 in DDR4), and byte 1 specifies the SPD revision level (e.g., 10h for revision 1.0 in SDRAM or 40h for 4.0 in DDR4). Bytes 2 and 3 follow as part of the initial , with byte 2 indicating the type (e.g., 04h for SDRAM or 0Ch for DDR4) and byte 3 providing additional header details, such as row addressing bits in SDRAM or module memory bus width in DDR4. Manufacturer identification is encoded later using JEP-106 codes, such as in bytes 64–71 for SDRAM (an 8-byte sequence representing the ID) or bytes 320–321 for DDR4 (a 2-byte code, e.g., 04h/80h for certain vendors). Subsequent bytes cover module information, including device size in log base 2 encoding (e.g., byte 4 in DDR4 as 95h for 8 Gbit with 4 bank groups and 8 internal s, using a code that combines and banking ), row and column counts (e.g., byte 5 in DDR4 as 21h for 16 rows and 10 columns), intervals (e.g., bytes 30–31 in DDR4 encoding 260 ns as 20h/08h for standard operation), and support (e.g., bytes 20–23 in DDR4 as bit flags for supported latencies from 7 to 24 cycles). Dates, such as manufacturing year and week, are stored in (BCD) format for readability (e.g., bytes 93–94 in SDRAM as 61h/05h for 1997 week 5, or bytes 323–324 in DDR4). Data integrity is maintained through checksum mechanisms tailored to the revision. In basic SDRAM SPD (revision 1.0), a simple 8-bit checksum occupies byte 63, calculated as the sum of bytes 0–62 modulo 256, allowing systems to detect read errors during access. Advanced implementations like DDR4 (revision 4.0 and later) employ a more robust CRC-8 polynomial over bytes 0–125, stored in bytes 126–127, supplemented by a sum modulo 256 on bytes 117–125 for partial verification, ensuring reliable detection of corruption in extended fields supporting 3D-stacked DRAM and on-die ECC. Revision 1.0 provides a foundational format for SDRAM with core parameters like size and timings in the first 64 bytes, while revisions 4.0+ for DDR4 and DDR5 introduce expanded layouts with additional bytes for high-speed operations and features like on-die ECC, maintaining backward compatibility through consistent header placement. Specific fields use compact encodings to optimize space. Speed bins are represented as nibble values in dedicated bytes; for example, in DDR4, byte 18 uses 05h to denote support for 3200 MT/s maximum data rate. Voltage levels are encoded via bit fields or codes, such as in byte 11 of DDR4 where a 2-bit value of 00b indicates 1.2 V operation, 01b for 1.35 V, and other combinations for extended ranges like 1.5 V. These encodings prioritize efficiency, using logarithmic scales for sizes and bitmasks for multi-option parameters like latencies, enabling precise configuration without excessive byte usage.

Core Stored Information

Fundamental Module Parameters

The fundamental module parameters in Serial Presence Detect (SPD) encompass the core attributes of a memory module that are universally applicable across DRAM generations, enabling systems to configure memory access without type-specific knowledge. These parameters include details on the module's physical and logical structure, such as total capacity, which is typically expressed in bits (e.g., 8 GB as $2^{33} bits) and encoded to reflect the aggregate density of all devices on the module. Ranks, indicating the number of independent memory banks accessible in parallel (commonly single-rank or dual-rank configurations), and the number of internal banks per device (e.g., 8 or 16 banks) are also specified to define the module's organization for addressing and interleaving. Module organization is detailed through the number of row and column address bits required to access data locations, such as 15 row bits by 10 column bits in many DDR4 configurations, which determines the internal array structure and influences burst access patterns. Primary timings, including the CAS latency (tCL), RAS-to-CAS delay (tRCD), and row precharge time (tRP), are provided in clock cycles or nanoseconds (e.g., tCL of 16 cycles at a given frequency) to establish baseline operational speeds for reliable data retrieval and refresh cycles. These timings ensure compatibility with the system's memory controller by specifying minimum delays in standardized units. Electrical specifications cover operating voltage, typically in the 1.2 V to 1.8 V range depending on the generation (e.g., 1.2 V nominal for DDR4), along with drive strength options (e.g., moderate or strong output drivers calibrated to RZQ/7 impedance) and input/output capacitance values (often around 1-2 pF per pin) to match signaling requirements and prevent signal integrity issues. Manufacturing information includes a unique serial number, the manufacturer's JEDEC-assigned part number in ASCII format, the manufacturing date encoded in binary-coded decimal (BCD) as week and year (e.g., week 45 of 2023), and an assembly location code to trace production origins and support quality control. Error handling indicators denote the presence of error-correcting code (ECC) support, such as single-error correction capabilities on the module, and on-module registers (e.g., for registered DIMMs) that buffer address and control signals to enhance stability in high-capacity setups. These fields collectively allow BIOS or firmware to detect and initialize the module correctly, with ECC presence often widening the data bus by 8 bits (e.g., 72-bit for x64 ECC).
Parameter CategoryKey ExamplesTypical Encoding
Size and Density8 GB total (2^33 bits), 8 banksDensity code (e.g., 95h for 8 Gb per device)
Organization15 row x 10 column bits, dual ranksAddressing code (e.g., 29h), rank count (e.g., 09h)
Primary TimingstCL=16 cycles, tRCD=14 ns, tRP=14 nsTiming values in ns or cycles (e.g., 6Eh for 110 ps base)
Electrical1.2 V nominal, RZQ/7 drive, 1.5 pF capacitanceVoltage code (e.g., 03h), driver option (e.g., 01h)
ManufacturingSerial: 0x12345678, Part: "MT40ATF...", Date: Week 45/2023BCD week/year (e.g., 2Dh/7B7h), ASCII string
Error HandlingECC supported, registers presentBus width (e.g., 0Bh for 64+8), config type (e.g., 00h)
This table illustrates representative values from JEDEC-compliant SPD implementations, emphasizing scalability across module types.

Memory Type-Specific Details

Serial Presence Detect (SPD) for Synchronous Dynamic Random-Access Memory (SDRAM) utilizes a basic 128-byte structure within a 256-byte EEPROM, accommodating early memory configurations including fields for compatibility with Extended Data Out (EDO) and Fast Page Mode (FPM) technologies through byte 2, which specifies the memory type such as EDO (02h) or SDRAM (04h). Initial clock speeds ranging from 66 MHz to 133 MHz are encoded in bytes 9 and 10 for cycle and access times (e.g., 10 ns for 100 MHz CL3, 7.5 ns for 133 MHz CL3), with additional Intel-specific frequency details in bytes 126-127. For Double Data Rate (DDR) SDRAM, the SPD expands on the 128-byte format to include fields for burst lengths of 4 or 8, as defined in the mode register and reflected in SPD byte mappings for operational configuration. The architecture supports 4 internal banks per device, with SPD bytes 3-5 detailing row/column addressing and bank count to enable proper memory mapping. Preamble support, indicating the presence of a write preamble for signal integrity, is incorporated into timing parameters within the SPD to align with DDR's double-pumped data transfers. DDR2 SDRAM SPD introduces indicators for on-die termination (ODT) in byte 49, allowing dynamic impedance matching to reduce reflections on the bus, which is essential for higher speeds up to 800 MT/s. Fly-by topology hints are provided through module configuration fields in bytes 5 and 117-125, guiding BIOS in routing address and command signals daisy-chain style for improved signal integrity over multi-drop stubs. Density support extends to up to 4 GB per module, calculated via rank density in byte 116 multiplied by the number of ranks in byte 5, accommodating larger 512 Mb to 1 Gb devices. The DDR3 SDRAM SPD doubles to a 256-byte format to store expanded parameters, including ZQ calibration data in bytes 174-177 for on-die impedance calibration commands that adjust output drivers and termination over PVT variations. Presence of an integrated thermal sensor is flagged in byte 117 (bit 7), enabling temperature monitoring via the SPD EEPROM for thermal throttling decisions. Support for green modes at 1.5 V standard and 1.35 V low-voltage operation is indicated in bytes 8 and 161, optimizing power efficiency for high-density modules up to 16 GB. In DDR4 SDRAM, SPD fields for gear-down mode are located in byte 18 (bit 6 of the fine offset offsets), enabling half-rate address and command latching on every other clock edge to enhance stability at speeds beyond 2400 MT/s. Data bus inversion (DBI) flags in byte 117 (bits 4-5) signal support for inverting data bytes to minimize bus transitions and electromagnetic interference, particularly beneficial for x8 devices. Maximum module capacity reaches 128 GB through 3D stacked (3DS) configurations, with stacking details and rank counts in bytes 5, 116, and 129-131 supporting up to 4 high-density ranks per package. DDR5 SDRAM employs a 512-byte SPD format under JESD400-5D, providing extensive configuration for dual-channel modules with fields for decision feedback equalization (DFE) in bytes 300-307 to mitigate inter-symbol interference at data rates up to 6400 MT/s. As of October 2025, the JESD400-5D standard (version 1.4) supports modules up to DDR5-9200 speeds and includes codes for new form factors like Small Outline Compression Attached Memory Module (SO-CAMM). Per-DRAM addressability (PDA) is supported via byte 380 flags, allowing independent chip select and command addressing for up to 32 DRAMs per channel. Capacity fields in bytes 240-247 accommodate 8-64 GB per channel, scaling with on-die ECC and PMIC integration for higher densities. For emerging Low-Power DDR5 (LPDDR5) and LPDDR5X, the SPD under JESD406-5 (released August 2024) includes mobile-optimized fields for low-voltage operation ranging from 0.5 V to 1.1 V core supply, detailed in bytes 80-95 for VDD/VDDQ scaling to minimize power in battery-constrained devices. Adaptive refresh management is encoded in bytes 200-215, enabling directed or partial-array refreshes to reduce power by up to 20% in idle states while maintaining data integrity, as per 2023-2025 standards.

Performance Extensions

Standard Profiles

Standard profiles in Serial Presence Detect (SPD) encompass the JEDEC-defined configurations for DDR memory modules, providing essential timing, voltage, and operational parameters to enable automatic system configuration for stable, non-overclocked performance. These profiles are encoded in the SPD EEPROM and allow the BIOS or memory controller to select the highest supported speed bin compatible with the system's capabilities, ensuring interoperability across compliant hardware. JEDEC specifies up to eight speed bins per DDR4 module type, ranging from DDR4-2133 (with timings such as CL=15 at 1.2V) to DDR4-3200 (CL=22 at 1.2V), each associated with predefined AC and DC timings, including parameters like tRCD, tRP, and tRAS, as well as slew rates for signal integrity. The SPD stores these details in dedicated bytes—such as byte 18 for minimum clock cycle time (tCKAVG_min) and bytes 20-21 for supported CAS latency values (tCL)—allowing the system to read and apply the appropriate bin without manual intervention. For instance, a DDR4-2666 module's SPD would include timings optimized for that bin while supporting fallback to lower bins like DDR4-2400 if needed. Profile selection occurs during boot, where the BIOS scans the SPD across all modules, identifies the common highest speed bin, and programs the memory controller accordingly, incorporating details like voltage (typically 1.2V for standard operation) and refresh rates to maintain reliability. Modules bearing the JEDEC logo are validated against these profiles, confirming compliance through rigorous testing for stability under standard conditions. Enhanced Performance Profiles (EPP), introduced as an optional extension in 2006, enable higher-speed configurations beyond the baseline bins for certified modules, storing additional timing sets in unused SPD space to support validated overclocks while adhering to JEDEC guidelines. These profiles include extended voltage tolerances and refined timings but remain optional and require system support for activation. Despite their robustness, standard profiles prioritize conservative speeds and voltages to guarantee broad compatibility, limiting support for extreme settings that could compromise stability or longevity.

Vendor and Platform-Specific Profiles

Intel's Extreme Memory Profile (XMP), introduced in 2007 as an extension to the standard JEDEC Serial Presence Detect (SPD) specification, enables one-click of DDR memory modules by storing pre-configured performance profiles directly in the SPD EEPROM. These profiles, typically up to two per module, occupy dedicated byte ranges in the SPD—such as bytes 176-250 for DDR3 implementations and 384-511 for DDR4—to encode optimized settings beyond JEDEC defaults. For example, XMP allows DDR4 modules to achieve speeds like 4000 MT/s with timings such as CL18-22-22 at 1.35V or higher, improving for and workloads on platforms. In response to the DDR5 era, AMD launched Extended Profiles for Overclocking (EXPO) in 2022, tailored for Ryzen processors on the AM5 socket to simplify memory overclocking similar to XMP but with optimizations for AMD's Infinity Fabric architecture. EXPO profiles, stored in the SPD, support DDR5 speeds of 6000 MT/s and beyond, often synchronized with the fabric clock (FCLK) at 2000-2100 MHz for 1:1 ratios to maximize latency-sensitive performance in applications like simulations and rendering. Beyond platform leaders, memory vendors implement proprietary SPD extensions for specialized use cases. G.Skill, for instance, embeds custom XMP timings in their Trident Z series modules, fine-tuned for extreme overclocking with low-latency primaries like CL14 at 3600 MT/s on DDR4, allowing enthusiasts to push beyond standard profiles while maintaining stability through validated secondary timings. Corsair integrates SPD profile management via their iCUE software for DDR5 modules, enabling users to create and write custom overclocking configurations—such as adjusted voltages and timings—directly to the EEPROM after enabling SPD Write in the BIOS, facilitating RGB-synced performance tweaks. For enterprise environments, Samsung's server-oriented RDIMM and LRDIMM modules incorporate SPD profiles optimized for registered ECC DDR5 operation, supporting high-capacity configurations up to 96GB per module at 6400 MT/s with on-die ECC for reliability in data centers, though these prioritize error correction over consumer overclocking. JEDEC continues to update DDR5 SPD standards, with the latest revision (JESD400-5D) released in October 2025 to support advanced performance configurations. These vendor and platform-specific profiles generally encode key parameters including operating frequency, primary/secondary latencies (e.g., , tRCD), DRAM voltage (often 1.25-1.4V for DDR5), and command rate (1T or 2T), which are applied by selecting the profile in the . Activation involves navigating to the or settings and toggling the desired XMP or option, followed by a to load the settings automatically from the SPD. Compatibility enhancements include XMP 3.0, rolled out around for DDR5 support on Intel's 12th-generation Core processors, which expands profile storage to 384 bytes and incorporates fine-grained timings like tREFI and read/write preambles for better precision in high-speed configurations. EXPO is native to AM5 platforms but offers partial with XMP on many AMD motherboards, allowing Intel-certified modules to load profiles via translation, though optimal results require AMD-tuned kits to align with the integrated . While these profiles enhance performance, they carry risks such as system instability from mismatched timings or excessive voltage, potentially leading to crashes, data corruption, or hardware degradation under sustained loads. Additionally, enabling XMP or EXPO constitutes overclocking, which may void CPU or motherboard warranties if damage occurs, as stated by both Intel and AMD policies, though memory module warranties from vendors like G.Skill and Corsair typically cover profile usage.

Access Methods

Reading SPD Data

The reading of SPD data utilizes the I²C or SMBus protocol, which employs a serial transaction sequence to retrieve information from the EEPROM on each memory module. The process begins with the host controller issuing a Start condition on the bus, followed by the 7-bit slave address (ranging from 0x50 to 0x57 to accommodate up to eight modules per channel) shifted left by one bit with the read/write bit set to 1 for read operations; the targeted slave acknowledges if present. For a selective read from a specific byte address, the host first performs a "dataless" write transaction—Start, slave address with read/write bit 0, the desired byte address, and repeated Start—before proceeding to the read phase. In the read phase, the slave transmits data bytes sequentially from the current or specified address, with the host acknowledging each byte via ACK (low) until the final byte, which receives a NoACK (high), followed by a Stop condition to end the transaction. Sequential reads auto-increment the internal address pointer, allowing continuous retrieval across the EEPROM's capacity, which wraps around at the bank end. The SMBus operates at a standard clock speed of up to 100 kHz, ensuring compatibility with system initialization phases, though some implementations support faster modes up to 1 MHz. During system boot, the BIOS or UEFI firmware systematically scans the address range 0x50–0x57 on the memory controller's SMBus channel to detect and read SPD data from installed modules, using this information to configure memory timings, speeds, and population details. This read occurs early in the POST (Power-On Self-Test) sequence, enabling the firmware to populate system configuration structures, such as memory descriptors in ACPI tables, for subsequent operating system handoff. In multi-module configurations, the shared bus handles access to up to eight DIMMs per channel through address-based selection, with the protocol's arbitration mechanism preventing collisions by ensuring only the addressed slave responds during transactions. User-accessible tools facilitate runtime reading of SPD data without disrupting system operation. On Windows, applications like CPU-Z and HWiNFO interface with the SMBus to dump and decode SPD contents, displaying parameters such as module capacity and timings in a user-friendly format. In Linux environments, the i2c-tools package (e.g., via the i2cdump command targeting addresses 0x50–0x57 on the relevant bus) or the decode-dimms utility from the i2c-tools suite extracts and interprets the raw data, often combined with kernel modules like eeprom for direct access. These tools typically operate through the system's SMBus driver, providing non-destructive reads for diagnostic purposes. To ensure , SPD EEPROMs include a (bytes 126–127 for DDR4, calculated over bytes 0–125 using CRC-16-CCITT) that the reader validates upon retrieval; if the fails, indicating potential or read errors, the system falls back to conservative default parameters to maintain stability. This validation is performed both during by and in software tools, with failures logged for .

Writing and Modifying SPD Data

Writing and modifying Serial Presence Detect (SPD) data involves programming the EEPROM chip on memory modules using the protocol, typically reserved for manufacturing or specialized repair scenarios. The process begins by addressing the SPD EEPROM with a slave (commonly 0x50 to 0x57, depending on the ), followed by specifying the internal word and transmitting one or more data bytes. For -byte writes, the sequence ends with a stop condition, initiating an internal write lasting approximately ms, during which the device becomes unresponsive to further commands. Page writes allow up to 16 bytes to be sent sequentially after the word , still concluding with a single ms write per page, and acknowledge polling—repeated read attempts until an acknowledgment is received—verifies completion to ensure data integrity. Tools for writing SPD data include hardware programmers like the CH341A USB-to-I²C adapter, which connects directly to the module's EEPROM pins (SCL, SDA, and ground) for in-circuit programming without desoldering. This device pairs with open-source software such as IMSProg or AsProgrammer to send I²C commands and flash custom data. For SPD-specific operations, Thaiphoon Burner provides a user-friendly interface to read, edit, and reprogram EEPROM contents, including support for DDR4 and DDR5 modules, though its writing features require a paid license. These tools enable precise byte-level modifications but demand careful pin mapping to avoid short circuits. Primary use cases encompass factory programming, where manufacturers encode module-specific parameters like capacity, speed, and timings into the first 128 bytes of the EEPROM immediately after assembly to comply with JEDEC layouts. Advanced users may modify timings for overclocking or compatibility tweaks, such as adjusting voltage or latency values to enable XMP profiles on non-standard hardware, though this carries significant risks of instability. In rare repair contexts, firmware updates to vendor-specific profiles can restore functionality on mismatched modules. Protections against unauthorized or erroneous writes include hardware features like a dedicated write-protect pin on the , which must be pulled low to enable writing, and software-based temporary or permanent write locks that safeguard critical sections, such as the initial 128 bytes containing JEDEC-mandated data. Some SPD EEPROMs, like STMicroelectronics' , incorporate settable fuses for permanent protection after initial programming. Additionally, modern / implementations often enforce "SPD Write Disable" settings to block runtime modifications, preventing boot-time alterations that could destabilize the system. JEDEC standards emphasize one-time programming of SPD EEPROMs post-module assembly to embed immutable configuration data, ensuring reliable system detection without subsequent user intervention. Repeated write operations accelerate EEPROM degradation due to limited endurance—typically 100,000 to 4 million cycles per byte before cell reliability declines—potentially leading to data corruption over time. Modifying SPD data typically voids the memory module's warranty, as it alters factory-calibrated settings and exposes the hardware to potential failure. Incorrect programming, such as failing to recalculate the CRC (bytes 126–127 for DDR4 base configuration), can render the module unrecognizable to the BIOS, resulting in boot failures or complete bricking where the system refuses to initialize the memory.

Special Features and Applications

Integrated Lighting Control

Integrated lighting control emerged in the mid-2010s alongside the rise of gaming-oriented DDR4 modules, where vendors began incorporating RGB and addressable RGB (ARGB) LEDs to enhance aesthetic appeal. Systems detect via SMBus access to an onboard LED controller at a distinct address separate from the SPD (e.g., 0x72 for controller vs. 0x52 for SPD). The control mechanism relies on an extension of the SMBus (a two-wire I²C variant used for SPD access), enabling communication with onboard LED controllers at distinct I²C addresses separate from the SPD EEPROM. These controllers support synchronization with popular protocols like Aura Sync and Mystic Light, with software applying color modes, effects, and sync parameters via direct bus communication. However, some RGB software has been known to improperly write to the SPD EEPROM, potentially causing and boot issues; enabling SPD write protection is recommended to mitigate this. In practice, vendors such as Corsair implement this in products like the Vengeance RGB series, where the iCUE software queries the LED controller via SMBus for control of lighting capabilities and applies dynamic effects across multiple zones. This integration allows seamless coordination with other system components, though it requires BIOS settings like SPD write enablement for full functionality. Despite its popularity, integrated lighting remains an optional, vendor-proprietary feature outside JEDEC standards, lacking mandatory specifications in core SPD definitions. Power consumption can reach up to 3 W per module due to the LEDs and controller, potentially impacting thermal performance in densely populated systems. Compatibility often demands specific BIOS or firmware support to access the SMBus extensions reliably. As of 2025, the feature has evolved in DDR5 modules to support advanced ARGB setups with per-LED addressing, enabling finer-grained control over individual LEDs (e.g., 10 zones per Vengeance DDR5 stick) for more complex patterns and synchronization.

Compatibility with Legacy Systems

In the pre-SPD of the 1990s, systems such as those based on I and II processors typically employed Fast Page Mode (FPM) or Extended Data Out () memory modules using 72-pin SIMMs with Parallel Presence Detect (PPD), a resistor-based method limited to basic speed and size identification via dedicated pins. These platforms ignored any SPD present on modules, as lacked the to read from it, necessitating manual configuration of in the setup to . By the early 2000s, with the adoption of 168-pin DIMMs for SDRAM and DDR memory on platforms like Socket 478 motherboards for Pentium 4 processors, partial SPD support emerged, allowing BIOS to read EEPROM data for automatic timing configuration. However, if the SPD data was incompatible or unreadable, systems often reverted to conservative default settings to avoid instability, potentially underutilizing module capabilities. Common issues in mixed or legacy environments include boot loops or failure to initialize memory when SPD data is corrupted, as the BIOS misinterprets timings or module parameters, leading to repeated restarts. High-density modules, such as DDR3 installed in DDR2 slots on older chipsets, may fail recognition entirely due to mismatched electrical or protocol expectations. Workarounds for such incompatibilities involve BIOS options to disable SPD reading and enforce manual timings, effectively bypassing the EEPROM for user-defined parameters. In server environments, some firmware supports virtual SPD emulation to simulate compatible data, while third-party blank EEPROM replacements can mimic pre-SPD modules by providing no detectable serial information. In modern legacy scenarios, such as virtual machine hypervisors or retro builds using adapters, SPD-equipped modules face ongoing challenges; for instance, DDR5 is fully incompatible with pre-2014 platforms designed for DDR3 or earlier due to distinct physical slot keying and signaling requirements. As of 2025, these issues remain relevant primarily for hardware collectors and enthusiasts, with no major new developments, though open-source firmware like enhances through customizable SPD handling on platforms.

References

  1. [1]
    [PDF] 4.1.2 Serial Presence Detect (SPD), General Standard ... - JEDEC
    This Serial Presence Detect. (SPD) standard is intended for use on any memory module, independent of memory technology or module form factor. At the point of ...
  2. [2]
    [PDF] MEMORY MODULE SERIAL PRESENCE DETECT (SPD)
    The SPD common landing pattern is shown in Figure-4 (JEDEC Standard No. 21C) and its parameters are explained in Table-3 (JEDEC Standard No. 21C). The ...
  3. [3]
    RAM SPD Issues - MemTest86
    SPD or Serial Presence Detect is a JEDEC standard for storing and accessing static memory specifications on the memory module. This information is retrieved by ...
  4. [4]
    DDR5 SERIAL PRESENCE DETECT (SPD) CONTENTS - JEDEC
    JESD400-5D ... This standard describes the serial presence detect (SPD) values for all DDR5 memory modules. In this context, “modules” applies to memory modules ...
  5. [5]
    An Insight Into BIOS/UEFI and SPD Data - ATP Electronics
    Sep 27, 2024 · SPD. This stands for “Serial Presence Detect.” It is a memory hardware feature that allows the computer to determine what memory is available ...
  6. [6]
    LPDDR5/5X Serial Presence Detect (SPD) Contents - JEDEC
    This standard describes the serial presence detect (SPD) values for all LPDDR5/5X memory modules. In this context, “modules” applies to memory modules like ...
  7. [7]
    [PDF] SERIAL PRESENCE DETECT TECHNICAL REFERENCE
    All features follow the JEDEC standard on the serial presence detect and will be updated when changes or new features become available. Table A–1 outlines these ...
  8. [8]
    [PDF] PC SDRAM Serial Presence Detect (SPD) Specification - Bitsavers.org
    This specification largely follows the JEDEC defined 168-pin and SO-144 SDRAM DIMM SPD specs as of July 1996. Changes in process are currently shown in italics.
  9. [9]
  10. [10]
    Serial Presence Detect (SPD) for DDR3 SDRAM Modules, Release 6
    SPD Annex K - Serial Presence Detect (SPD) for DDR3 SDRAM Modules, Release 6. SPD4.1.2.11. Published: Feb 2014. Release No. 24. Item 2065.47A.Missing: revision | Show results with:revision
  11. [11]
    [PDF] Annex L: Serial Presence Detect (SPD) for DDR4 SDRAM Modules
    This annex describes the serial presence detect (SPD) values for all DDR4 modules. The SPD data provides critical information about all modules on the memory ...
  12. [12]
    JEDEC History
    JEDEC initially functioned within the engineering department of EIA where its primary activity was to develop and assign part numbers to devices.Missing: SPD introduction
  13. [13]
    JEDEC® Announces Annual Update of DDR5 Serial Presence ...
    JEDEC® Announces Annual Update of DDR5 Serial Presence Detect (SPD) Contents Standard. ARLINGTON, Va., USA – October 14, 2025 – JEDEC Solid ...
  14. [14]
    JEDEC Releases New Standard for LPDDR5/5X Serial Presence ...
    JESD406-5 documents the contents of the SPD non-volatile configuration device included on all JEDEC standard memory modules using LPDDR5/5X SDRAMs.
  15. [15]
    [PDF] Annex L: Serial Presence Detect (SPD) for DDR4 SDRAM Modules
    1.0 Introduction. This annex describes the serial presence detect (SPD) values for all DDR4 modules. Differences between module types.
  16. [16]
  17. [17]
    [PDF] 2-Kbit I²C Serial Presence Detect (SPD) EEPROM with Software ...
    • JEDEC EE1002 and EE1002A Serial Presence Detect (SPD) Compliant: – EEPROM Specification for use in DDR, DDR2, and DDR3 DIMM Modules. • Industrial ...
  18. [18]
    [PDF] 4.1.3 Definition of the EE1002 and EE1002A Serial Presence Detect ...
    The purpose is to provide a standard for the EE1002 and EE1002A SPD logic devices for uniformity, multiplicity of sources, elimination of confusion, ease of ...
  19. [19]
    [PDF] S-34HTS08AB DDR5 SPD EEPROM - ABLIC Inc.
    • JEDEC standard compliant: SPD5118. • Two-wire I2C or I3C bus serial interface. • Operation voltage range (VDDSPD): 1.7 V to 1.98 V. • Operation voltage range ...
  20. [20]
    [PDF] GT34C02 2Kb SPD EEPROM
    • More than 1 million Erase/Write Endurance Cycles. • More than 40 years Data Retention. • Packages: SOIC/SOP, TSSOP and UDFN. • Operating Temperature range ...
  21. [21]
    [PDF] AT34C04 I²C-Compatible 4-Kbit Serial EEPROM with Reversible ...
    – Data retention: 100 years. • Green ... The Serial EEPROM operation is tailored specifically for DRAM memory modules with Serial Presence Detect (SPD).
  22. [22]
    Understanding DDR4 Serial Presence Detect (SPD) Table
    Nov 25, 2013 · This article attempts to guide you through the construction of an SPD table with “Turbo-Tax” type of multiple choices questions.Missing: history mid- 1990s
  23. [23]
    MTA36ASF8G72PZ-2G9E1 SPD data
    ### Summary of SPD Data for MTA36ASF8G72PZ-2G9E1
  24. [24]
    [PDF] DOUBLE DATA RATE (DDR) SDRAM SPECIFICATION - JEDEC
    Note: This specification defines the minimum set of requirements for JEDEC X4/X8/X16 DDR SDRAMs. Vendors will provide individual data sheets in their specific ...
  25. [25]
    [PDF] JEDEC Standard No. 21C
    Jul 3, 2010 · Annex C, SPD for FP and EDO DRAM ... 4.20.21.C. Annex C, R/C C, in EP3-6400/EP3-8500/EP3-10600/EP3-12800 DDR3 SDRAM. 72b-SO-DIMM Design ...
  26. [26]
    [PDF] jesd79-2f - JEDEC
    JESD79-2F is a DDR2 SDRAM specification, a revision of JESD79-2E, and a JEDEC standard (No. 79-2F) from November 2009.
  27. [27]
    [PDF] Serial Presence Detects for DDR2 SDRAM (Revision 1.3 ... - JEDEC
    This SPD field needs to correspond to the respective Registered DIMM configuration. Please refer to Notes 9 & 11 of the “1.1 Address Map table” of this spec for ...
  28. [28]
    [PDF] DDR3 SDRAM Standard JESD79-3F - JEDEC
    This document defines the DDR3 SDRAM specification, including features, functionalities, AC and DC ... Users should refer to the DRAM supplier data sheet and/or ...
  29. [29]
    [PDF] Annex K: Serial Presence Detect (SPD) for DDR3 SDRAM Modules
    SPD for DDR3 modules contains values for module types, stored in a serial EEPROM, and includes fields like device type, density, and voltage.
  30. [30]
    [PDF] ddr4 sdram jesd79-4 - JEDEC STANDARD
    ... parameters ... byte lanes should be leveled independently. Therefore, a separate feedback mechanism should be available for each byte lane. The upper data ...Missing: fundamental | Show results with:fundamental
  31. [31]
    [PDF] DDR4 SDRAM Registered DIMM Design Specification Revision ...
    used and the data contents must adhere to the most recent version of the JEDEC DDR4 Module Serial ... bb = JEDEC SPD Revision Encoding and Additions level used on ...
  32. [32]
    [PDF] Low Power Double Data Rate (LPDDR) 5/5X - JEDEC
    The information included in JEDEC standards and publications represents a sound approach to product specification and application, principally from the solid ...
  33. [33]
    Serial Presence Detect (SPD) for DDR4 SDRAM Modules, Release 3
    This annex describes the serial presence detect (SPD) values for all DDR4 modules. Differences between module types are encapsulated in subsections of this ...
  34. [34]
    [PDF] Design Specification - NVIDIA
    May 12, 2006 · This document defines an enhanced SPD which contains additional performance-specific information known as Enhanced Performance Profiles (EPP).Missing: Annex L 2007
  35. [35]
    Intel's XMP memory overclocking gets its first big upgrade since 2007
    Oct 27, 2021 · Intel has unveiled the first major update to its eXtreme Memory Profile (XMP) technology since the standard was introduced in 2007.Missing: bytes | Show results with:bytes<|separator|>
  36. [36]
    [PDF] Intel® Extreme Memory Profile (Intel® XMP) supporting Intel® X48 ...
    The following is the breakdown of the XMP SPD space. •. Bytes 176 -185: Global Parameters for Intel Extreme Memory used across all profiles. •. Bytes 186 – 218 ...Missing: 2007 | Show results with:2007
  37. [37]
    Intel Extreme Memory Profile 2.0 - SkatterBencher
    XMP DDR4 DIMMs use bytes 384–511 to program specific profile details as defined in the Intel Extreme Memory Profile 2.0 Specification. Global Bytes 384 to ...Missing: 2007 | Show results with:2007
  38. [38]
    Intel® Extreme Memory Profile (Intel® XMP) and Overclock RAM
    Intel® XMP allows you to overclock DDR3/DDR4 RAM memory with unlocked Intel® processors to perform beyond standard for the best gaming performance.Missing: introduction 2007 bytes
  39. [39]
    AMD EXPO™ Technology for AMD Ryzen™ Processors for Socket ...
    The AMD Extended Profiles for Overclocking (AMD EXPO™ Technology) was developed to allow for user-friendly memory overclocking support of all types of memory, ...Features · Partners · Amd Ryzentm Processor...
  40. [40]
    AMD preparing EXPO (EXtended Profiles for Overclocking) for ...
    Apr 25, 2022 · According to our information, EXPO will be responsible for storing two memory overclocking profiles for ...Missing: SPD | Show results with:SPD
  41. [41]
    AMD Confirms DDR5-6000 as "Sweetspot" Memory OC Frequency ...
    Sep 1, 2022 · AMD in its Discord AMA confirmed DDR5-6000 to be the "sweetspot" memory overclock for its upcoming Ryzen 7000 "Zen 4" processors.
  42. [42]
    AM5 - DDR5 Tuning Cheat Sheet, observations and notes - Reddit
    Apr 20, 2025 · vSOC default is 1.2V with EXPO 6000MT/s enabled (typically you need less to run 6000 1:1 unless extremely unlucky with CPU silicon lottery).EXPO vs XMP on AMD Ryzen | UCLK, MCLK, FCLK explainedFool-Proof DDR5 Overclocking Guide for AM5 (Focus on 64GB ...More results from www.reddit.com
  43. [43]
    About Memory Overclocking - G.SKILL International Enterprise Co ...
    Mar 11, 2022 · Memory overclocking can be an effective way to increase PC performance, through increasing the frequency speed or decreasing the latency timing of the memory.
  44. [44]
  45. [45]
    Setting Up Custom Memory Performance Profiles in CORSAIR iCUE
    Mar 26, 2024 · CORSAIR DDR5 memory, when paired with the iCUE Software, allows for greater control over system performance, letting you customize your own ...Missing: integration | Show results with:integration
  46. [46]
    Optimized DDR5 DIMM Solutions: Powering Leading-Edge Server ...
    Apr 9, 2025 · DDR5 addresses these issues by mounting PMICs internally, directly onto the module. This adjustment improves system level efficiency.
  47. [47]
  48. [48]
    How to Enable XMP/EXPO (for DDR4 & DDR5) - G Skill
    Mar 11, 2022 · Enabling XMP involves 3 simple steps: 1. Enter BIOS 2. Enable XMPEXPO 3. Save and Reset.
  49. [49]
    Intel Extreme Memory Profile 3.0 - SkatterBencher
    Intel Extreme Memory Profile 3.0 is the new XMP standard for DDR5 memory and is the successor to XMP 2.0 for DDR4 memory.
  50. [50]
    HWiNFO lists Intel XMP 3.0 for DDR5 memory in upcoming software ...
    Jun 22, 2021 · Intel Extreme Memory Profile (XMP) is an extension of Serial Presence Detect (SPD) data on the memory modules. This extension provides ...
  51. [51]
    What are XMP and EXPO profiles and how do I use them? - PC Gamer
    Feb 29, 2024 · XMP or Extreme Memory Profiles, is an Intel technology that allows you to change multiple memory settings, whereas EXPO is the AMD equivalent.
  52. [52]
    AMD DDR5 OC And 24/7 Daily Memory Stability Thread | Page 269
    Sep 23, 2022 · So, in effect what your saying here is at 6000 MT/S then FCLK of 2066 is ideal. Daily Gamer & other rigs. Never ending upgrades....
  53. [53]
    Why XMP and memory overclocking are OK even if they void your ...
    Mar 16, 2021 · “AMD's product warranty does not cover damages caused by overclocking, even when overclocking is enabled via AMD hardware and/or software. This ...
  54. [54]
    6 myths about AMD EXPO and Intel XMP you shouldn't believe
    Apr 1, 2025 · Intel in the past has said that RAM overclocking can void your warranty, but the company's site, when it comes to XMP 3.0, says that ...
  55. [55]
    [PDF] N34C04 - EEPROM Serial 4-Kb SPD for DDR4 DIMM - onsemi
    EEPROM Page Write. Each of the two 2−Kb banks is organized as 16 pages of. 16 bytes each (not to be confused with the SPD page, which refers to the entire 2 ...Missing: capacity | Show results with:capacity
  56. [56]
    memory - SPD I2c Address for DDR4 SODIMM
    Mar 22, 2021 · ... Serial Presence Detect (SPD) EEPROM so the CPU can identify the memory. ... address of a slot between 0x50 to 0x57. Share. Share a link to ...Single I2C EEPROM 24C02 uses all eight addresses by itselfI2C response to "Ghost Address" 0x5F - Electronics Stack ExchangeMore results from electronics.stackexchange.comMissing: process | Show results with:process
  57. [57]
    [PDF] Interfacing I2C* Devices to an Intel® SMBus Controller
    It contains information on the type and speed of the DIMM. It's read by BIOS during IA32 boot-up in order to properly configure the memory array. EEPROM ...
  58. [58]
    How Does BIOS initialize DRAM? - Stack Overflow
    Jul 29, 2020 · The SPD EEPROMs (there can be more than one, of course, one per DIMM) are reserved the addresses from 0x50 to 0x57 (on the series 200 PCH). It's ...
  59. [59]
    How to check RAM Timings and SPD information on Linux
    Dec 2, 2023 · On Windows there are plenty of gui tools to check the ram timings for example Rammon, HwInfo, CPU-Z etc. ... For example, the cpu-z windows ...
  60. [60]
    Linux Fu: Reading Your Memory's Memory | Hackaday
    Apr 18, 2023 · A modern stick of DRAM has a little EEPROM on it that the CPU can read via I2C. This is the “serial presence detect” or SPD memory.
  61. [61]
    Application Note INN-8668-APN9 - SPD Warning Messages
    If RAMCHECK finds that the SPD's checksum is incorrect with the SPD data, it shows the following error: SPD Checksum error. You can disable the SPD warning ...
  62. [62]
    IMSProg - software for CH341A-based programmers to work with ...
    IMSProg - I2C, MicroWire and SPI EEPROM/Flash chip Programmer - is a program to read, write EEPROM chips use the CH341A programmer device.<|separator|>
  63. [63]
    Thaiphoon Burner - Download Free (Latest Version)
    Thaiphoon Burner is an excellent software that allows users to identify, read, edit, and update the SPD characteristics of their computer's RAM.
  64. [64]
    SPD EEPROM - STMicroelectronics
    The set temporary write protection, reset temporary write protection, set permanent write protection and hardware write control are special features acting as ...
  65. [65]
    [PDF] Serial EEPROM Standard & SPD series - STMicroelectronics
    Today ST guarantees high cycling performance with 4 million Erase/Write cycles per byte and 200 years of data retention.
  66. [66]
    How do I read/modify/flash SPD/XMP profiles on DDR4 EEPROM?
    Apr 13, 2017 · What are the risks and how do I avoid them? Click to expand... Risks. Bricking your RAM Only way to avoid it is to not do it.Missing: failure | Show results with:failure
  67. [67]
    Documentation/SMBusAccess.md · master - OpenRGB - GitLab
    Sep 8, 2025 · Some RGB control devices are attached via SMBus. These include all DDR4 and DDR5 RAM modules with integrated RGB lighting as well as the ...
  68. [68]
    iCUE:What to do if iCUE cannot detect your Corsair RGB memory or ...
    If iCUE doesn't detect RAM, check for software conflicts, ensure SPD Write is enabled, update BIOS, uninstall conflicting software, or deactivate RGB controls.
  69. [69]
  70. [70]
    Memory Presence Detection - Pctechguide.com
    For a number of years, Parallel Presence Detect (PPD) was the traditional method of relaying the required information by using a number of resistors. PPD used ...Missing: history | Show results with:history
  71. [71]
    CORRUPTED DDR5 SPD FIX - TUTORIAL - Overclock.net
    Dec 31, 2021 · 1- Since we'll be WRITTING and replacing the corrupted SPD with a GOOD one, we'll need to Enable SPD WRITE in bios first, so locate the option in your BIOS and ...
  72. [72]
    [PDF] BIOS Setup - Gigabyte
    Allows you to determine whether to disable SPD Write. ▻TRUE Disables SPD ... Enables or disables UEFI CSM (Compatibility Support Module) to support a legacy PC ...
  73. [73]
    DDR4 vs. DDR5 RAM: What's the Difference? - WIRED
    Jan 13, 2025 · DDR4 and DDR5 are not compatible with each other, despite how similar they look. Memory manufacturers will still stock both varieties for a ...
  74. [74]
    For End Users - coreboot
    We support legacy OS boot through SeaBIOS, network boot with an integrated iPXE ROM, or the latest UEFI payload. Customized payloads can be created using ...