please note:
- the content below is remote from Wikipedia
- it has been imported raw for GetWiki
{{Short description|Standardized way to automatically access information about a memory module}}{{Use dmy dates|date=March 2020}}In
computing,
serial presence detect (
SPD) is a standardized way to automatically access information about a
memory module. Earlier 72-pin
SIMMs included five pins that provided five bits of
parallel presence detect (PPD) data, but the 168-pin
DIMM standard changed to a serial presence detect to encode more information.{{Citation |url=http://findarticles.com/p/articles/mi_m0EKF/is_n2153_v43/ai_19102210/ |title=Serial Presence Detection poised for limelight |author1=Thomas P. Koenig |author2=Nathan John |journal=Electronic News |date=1997-02-03 |volume=43 |issue=2153}}When an ordinary modern computer is turned on, it starts by doing a
power-on self-test (POST). Since about the mid-1990s, this process includes automatically configuring the hardware currently present. SPD is a memory hardware feature that makes it possible for the computer to know what memory is present, and what
memory timings to use to access the memory.Some computers adapt to hardware changes completely automatically. In most cases, there is a special optional procedure for accessing
BIOS parameters, to view and potentially make changes in settings. It may be possible to control how the computer uses the memory SPD dataâto choose settings, selectively modify memory timings, or possibly to completely override the SPD data (see
overclocking).
Stored information
For a memory module to support SPD, the
JEDEC standards require that certain parameters be 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. Devices utilizing the memory automatically determine key parameters of the module by reading this information. For example, the SPD data on an
SDRAM module might provide information about the
CAS latency so the system can set this correctly without user intervention.The SPD EEPROM firmware is accessed using
SMBus, a variant of the
I2C protocol. This reduces the number of communication pins on the module to just two: a clock signal and a data signal. The EEPROM shares ground pins with the RAM, has its own power pin, and has three additional pins (SA0â2) to identify the slot, which are used to assign the EEPROM a unique address in the range 0x50â0x57. Not only can the communication lines be shared among 8 memory modules, the same SMBus is commonly used on motherboards for system health monitoring tasks such as reading power supply voltages,
CPU temperatures, and fan speeds.SPD EEPROMs also respond to I2C addresses 0x30â0x37 if they have not been write protected, and an extension (TSE series) uses addresses 0x18â0x1F to access an optional on-chip temperature sensor. All those values are
seven-bit I2C addresses formed by a Device Type Identifier Code prefix (DTIC) with SA0-2: to read (1100) from slot 3, one uses
110 0011 = 0x33. With a final R/W bit it forms the 8-bit Device Select Code.
JEDEC Standard 21-C section 4.1.4 "Definition of the TSE2002av Serial Presence Detect (SPD) EEPROM with Temperature Sensor (TS) for Memory Module Applications" Note that the semantics of slot-id is different for write-protection operations: for them they can be not passed by the SA pins at all.WEB, TN-04-42: Memory Module Serial Presence-Detect Write Protection,
weblink Micron, Before SPD, memory chips were spotted with parallel presence detect (PPD). PPD used a separate pin for each bit of information, which meant that only the speed and density of the memory module could be stored because of the limited space for pins.
SDR SDRAM
File:SPD SDRAM.jpg|thumb|Memory device on an
SDRAMSDRAMThe first SPD specification was issued by JEDEC and tightened up by Intel as part of its
PC100 memory specification introduced in 1998.WEB,
weblink Ram Guide, Dean Kent, 24 October 1998, Tom's Hardware, WEB,
weblink PC100 SDRAM: An Introduction, Anand Lal, Shimpi, www.anandtech.com,
Application note INN-8668-APN3: SDRAM SPD Data Standards, memorytesters.com Most values specified are in
binary-coded decimal form. The most significant
nibble can contain values from 10 to 15, and in some cases extends higher. In such cases, the encodings for 1, 2 and 3 are instead used to encode 16, 17 and 18. A most significant nibble of 0 is reserved to represent "undefined".The SPD ROM defines up to three DRAM timings, for three CAS latencies specified by set bits in byte 18. First comes the highest CAS latency (fastest clock), then two lower CAS latencies with progressively lower clock speeds.{|class=wikitable
url=http://www.taricorp.net/wp-content/uploads/2012/04/SPDSDRAM1.2a1.pdf |title=PC SDRAM Serial Presence Detect (SPD) Specification |date=December 1997 |version=1.2A |page=28}}! colspan=2 | Byte! colspan=8 | Bit! rowspan=2 | Notes|
! (dec.) !! (hex.)! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0
|
| | Number of bytes present | Typically 128 |
|
| | log2(size of SPD EEPROM) | Typically 8 (256 bytes) |
|
| | Basic memory type (4: SPD SDRAM) | |
|
| | Bank 2 row address bits (0â15) | colspan=4 | | Bank 2 is 0 if same as bank 1 |
|
| | Bank 2 column address bits (0â15) | colspan=4 | | Bank 2 is 0 if same as bank 1 |
|
| | Number of RAM banks on module (1â255) | Commonly 1 or 2 |
|
| | Module data width low byte | Commonly 64, or 72 for ECC DIMMs |
|
| | Module data width high byte | 0, unless width ⥠256 bits |
|
| | Interface voltage level of this assembly (not the same as Vcc supply voltage) (0â4) | Decoded by table lookup |
|
| | Nanoseconds (0â15) | colspan=4 | | Clock cycle time at highest CAS latency |
|
| | Nanoseconds (0â15) | colspan=4 | | SDRAM access time from clock (tAC) |
|
| | DIMM configuration type (0â2): non-ECC, parity, ECC | Table lookup |
|
| | | Refresh period (0â5): 64, 256, 128, 32, 16, 8 kHz | Refresh requirements |
|
| | | Bank 1 primary SDRAM width (1â127, usually 8) | Width of bank 1 data SDRAM devices. Bank 2 may be same width, or 2Ã width if bit 7 is set. |
|
| | | Bank 1 ECC SDRAM width (0â127) | Width of bank 1 ECC/parity SDRAM devices. Bank 2 may be same width, or 2Ã width if bit 7 is set. |
|
| | Clock delay for random column reads | Typically 1 |
|
| | | | | | | | | | Burst lengths supported (bitmap) |
|
| | Banks per SDRAM device (1â255) | Typically 2 or 4 |
|
| | | | | | | | | | CAS}} latencies supported (bitmap) |
|
| | | | | | | | | | CS}} latencies supported (bitmap) |
|
| | | | | | | | | | WE}} latencies supported (bitmap) |
|
| | | | | | | | | | Memory module feature bitmap |
|
| | | | | | | | | RAS}} precharge | Memory chip feature support bitmap |
|
| | Nanoseconds (4â18) | colspan=4 | | Clock cycle time at medium CAS latency |
|
| | Nanoseconds (4â18) | colspan=4 | | Data access time from clock (tAC) |
|
| | Nanoseconds (1â63) | colspan=2 | | Clock cycle time at short CAS latency. |
|
| | Nanoseconds (1â63) | colspan=2 | | Data access time from clock (tAC) |
|
| | Nanoseconds (1â255) | Minimum row precharge time (tRP) |
|
| | Nanoseconds (1â255) | Minimum row activeârow active delay (tRRD) |
|
| | Nanoseconds (1â255) | Minimum {{overline | CAS}} delay (tRCD) |
|
| | Nanoseconds (1â255) | Minimum active to precharge time (tRAS) |
|
| | | | | | | | | | Module bank density (bitmap). Two bits set if different size banks. |
|
| | | Nanoseconds (0â7) | colspan=4 | | Address/command setup time from clock |
|
| | | Nanoseconds (0â7) | colspan=4 | | Address/command hold time after clock |
|
| | | Nanoseconds (0â7) | colspan=4 | | Data input setup time from clock |
|
| | | Nanoseconds (0â7) | colspan=4 | | Data input hold time after clock |
|
| 0x24â0x3d | Reserved}}| For future standardization |
|
| | Major revision (0â9) | colspan=4 | | SPD revision level; e.g., 1.2 |
|
| | Checksum | Sum of bytes 0â62, not then negated |
|
| | Manufacturer JEDEC id. | Stored little-endian, trailing zero-padded |
|
| | Module manufacturing location | Vendor-specific code |
|
| | Module part number | ASCII, space-padded |
|
| | Module revision code | Vendor-specific code |
|
| | Tens of years (0â9: 0â90) | colspan=4 | | Manufacturing date (YYWW) |
|
| | Tens of weeks (0â5: 0â50) | colspan=4| Weeks (0â9) |
|
| | Module serial number | Vendor-specific code |
|
| | Manufacturer-specific data | Could be enhanced performance profile |
|
| | 0x66{{sic}} for 66 MHz, 0x64 for 100 MHz | Intel frequency support |
DDR SDRAM
The DDR DIMM SPD format is an extension of the SDR SDRAM format. Mostly, parameter ranges are rescaled to accommodate higher speeds.{|class=wikitable|+ SPD contents for DDR SDRAM! colspan=2 | Byte! colspan=8 | Bit! rowspan=2 | Notes|
! (dec.) !! (hex.)! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0
|
| | Number of bytes written | Typically 128 |
|
| | log2(size of SPD EEPROM) | Typically 8 (256 bytes) |
|
| | Basic memory type (7 = DDR SDRAM) | |
|
| | Bank 2 row address bits (0â15) | colspan=4 | | Bank 2 is 0 if same as bank 1. |
|
| | Bank 2 column address bits (0â15) | colspan=4 | | Bank 2 is 0 if same as bank 1. |
|
| | Number of RAM banks on module (1â255) | Commonly 1 or 2 |
|
| | Module data width low byte | Commonly 64, or 72 for ECC DIMMs |
|
| | Module data width high byte | 0, unless width ⥠256 bits |
|
| | Interface voltage level of this assembly (not the same as Vcc supply voltage) (0â5) | Decoded by table lookup |
|
| | Nanoseconds (0â15) | colspan=4 | | Clock cycle time at highest CAS latency. |
|
| | Tenths of nanoseconds (0.0â0.9) | colspan=4 | | SDRAM access time from clock (tAC) |
|
| | DIMM configuration type (0â2): non-ECC, parity, ECC | Table lookup |
|
| | | Refresh period (0â5): 64, 256, 128, 32, 16, 8 kHz | Refresh requirements |
|
| | | Bank 1 primary SDRAM width (1â127) | Width of bank 1 data SDRAM devices. Bank 2 may be same width, or 2Ã width if bit 7 is set. |
|
| | | Bank 1 ECC SDRAM width (0â127) | Width of bank 1 ECC/parity SDRAM devices. Bank 2 may be same width, or 2Ã width if bit 7 is set. |
|
| | Clock delay for random column reads | Typically 1 |
|
| | | | | | | | | | Burst lengths supported (bitmap) |
|
| | Banks per SDRAM device (1â255) | Typically 4 |
|
| | | | | | | | | | CAS}} latencies supported (bitmap) |
|
| | | | | | | | | | CS}} latencies supported (bitmap) |
|
| | | | | | | | | | WE}} latencies supported (bitmap) |
|
| | | | | | | | | | Memory module feature bitmap |
|
| | | | | | | | | | Memory chip feature bitmap |
|
| | Nanoseconds (0â15) | colspan=4 | | Clock cycle time at medium CAS latency. |
|
| | Tenths of nanoseconds (0.0â0.9) | colspan=4 | | Data access time from clock (tAC) |
|
| | Nanoseconds (0â15) | colspan=4 | | Clock cycle time at short CAS latency. |
|
| | Tenths of nanoseconds (0.0â0.9) | colspan=4 | | Data access time from clock (tAC) |
|
| | Nanoseconds (1â63) | colspan=2 | | Minimum row precharge time (tRP) |
|
| | Nanoseconds (1â63) | colspan=2 | | Minimum row activeârow active delay (tRRD) |
|
| | Nanoseconds (1â63) | colspan=2 | | RAS}} to {{overline|CAS}} delay (tRCD) |
|
| | Nanoseconds (1â255) | Minimum active to precharge time (tRAS) |
|
| | | | | | | | | | Module bank density (bitmap). Two bits set if different size banks. |
|
| | Tenths of nanoseconds (0.0â0.9) | colspan=4 | | Address/command setup time from clock |
|
| | Tenths of nanoseconds (0.0â0.9) | colspan=4 | | Address/command hold time after clock |
|
| | Tenths of nanoseconds (0.0â0.9) | colspan=4 | | Data input setup time from clock |
|
| | Tenths of nanoseconds (0.0â0.9) | colspan=4 | | Data input hold time after clock |
|
| 36â40 | Reserved}}| Superset information |
|
| | Nanoseconds (1â255) | Minimum active to active/refresh time (tRC) |
|
| | Nanoseconds (1â255) | Minimum refresh to active/refresh time (tRFC) |
|
| | Nanoseconds (1â63, or 255: no maximum) | colspan=2 | | Maximum clock cycle time (tCK max.) |
|
| | Hundredths of nanoseconds (0.01â2.55) | Maximum skew, DQS to any DQ. (tDQSQ max.) |
|
| | Tenths of nanoseconds (0.0â1.2) | colspan=4 | | Read data hold skew factor (tQHS) |
|
| 0x2e | Reserved}}| For future standardization |
|
| | â | colspan=2 | | Height of DIMM module, table lookup |
|
| 0x30â0x3d | Reserved}}| For future standardization |
|
| | Major revision (0â9) | colspan=4 | | SPD revision level, 0.0 or 1.0 |
|
| | Checksum | Sum of bytes 0â62, not then negated |
|
| | Manufacturer JEDEC id. | Stored little-endian, trailing zero-padded |
|
| | Module manufacturing location | Vendor-specific code |
|
| | Module part number | ASCII, space-padded |
|
| | Module revision code | Vendor-specific code |
|
| | Tens of years (0â90) | colspan=4 | | Manufacturing date (YYWW) |
|
| | Tens of weeks (0â50) | colspan=4| Weeks (0â9) |
|
| | Module serial number | Vendor-specific code |
|
| | Manufacturer-specific data | Could be enhanced performance profile |
DDR2 SDRAM
The DDR2 SPD standard makes a number of changes, but is roughly similar to the above. One notable deletion is the confusing and little-used support for DIMMs with two ranks of different sizes.For cycle time fields (bytes 9, 23, 25 and 49), which are encoded in BCD, some additional encodings are defined for the tenths digit to represent some common timings exactly:{|class=wikitable|+ DDR2 BCD extensions! Hex !! Binary !! Significance|
| | 1|4}}) |
|
| | 1|3}}) |
|
| | 2|3}}) |
|
| | 3|4}}) |
|
| | 7|8}}, Nvidia XMP extension) |
{|class=wikitable|+ SPD contents for DDR2 SDRAM|
! colspan=2 | Byte! colspan=8 | Bit! rowspan=2 | Notes
|
! Dec !! Hex !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0
|
| | Number of bytes written | Typically 128 |
|
| | log2(size of SPD EEPROM) | Typically 8 (256 bytes) |
|
| | Basic memory type (8 = DDR2 SDRAM) | |
|
| | Reserved}} | colspan=4 | | |
|
| | Reserved}} | colspan=4 | | |
|
| | Vertical height | Stack? | ConC? | colspan=3 | | Commonly 0 or 1, meaning 1 or 2 |
|
| | Module data width | Commonly 64, or 72 for ECC DIMMs |
|
| | Reserved}} | |
|
| | Interface voltage level of this assembly (not the same as Vcc supply voltage) (0â5) | Decoded by table lookup.Commonly 5 = SSTL 1.8 V |
|
| | Nanoseconds (0â15) | colspan=4 | | Clock cycle time at highest CAS latency. |
|
| | Tenths of nanoseconds (0.0â0.9) | colspan=4 | | SDRAM access time from clock (tAC) |
|
| | DIMM configuration type (0â2): non-ECC, parity, ECC | Table lookup |
|
| | | Refresh period (0â5): 64, 256, 128, 32, 16, 8 kHz | Refresh requirements |
|
| | Primary SDRAM width (1â255) | Commonly 8 (module built from Ã8 parts) or 16 |
|
| | ECC SDRAM width (0â255) | Width of bank ECC/parity SDRAM devices. Commonly 0 or 8. |
|
| | Reserved}} | |
|
| | â | â | â | â | 8 | 4 | â | â | Burst lengths supported (bitmap) |
|
| | Banks per SDRAM device (1â255) | Typically 4 or 8 |
|
| | | | | | | | | | CAS}} latencies supported (bitmap) |
|
| | Reserved}} | |
|
| | | | | | | | | | DIMM type of this assembly (bitmap) |
|
| | | | | | | | | | Memory module feature bitmap |
|
| | | | | | | | | | Memory chip feature bitmap |
|
| | Nanoseconds (0â15) | colspan=4 | | Clock cycle time at medium CAS latency. |
|
| | Tenths of nanoseconds (0.0â0.9) | colspan=4 | | Data access time from clock (tAC) |
|
| | Nanoseconds (0â15) | colspan=4 | | Clock cycle time at short CAS latency. |
|
| | Tenths of nanoseconds (0.0â0.9) | colspan=4 | | Data access time from clock (tAC) |
|
| | Nanoseconds (1â63) | colspan=2 | | Minimum row precharge time (tRP) |
|
| | Nanoseconds (1â63) | colspan=2 | | Minimum row activeârow active delay (tRRD) |
|
| | Nanoseconds (1â63) | colspan=2 | | RAS}} to {{overline|CAS}} delay (tRCD) |
|
| | Nanoseconds (1â255) | Minimum active to precharge time (tRAS) |
|
| | | | | | | | | | Size of each rank (bitmap). |
|
| | Tenths of nanoseconds (0.0â1.2) | colspan=4 | | Address/command setup time from clock |
|
| | Tenths of nanoseconds (0.0â1.2) | colspan=4 | | Address/command hold time after clock |
|
| | Tenths of nanoseconds (0.0â0.9) | colspan=4 | | Data input setup time from strobe |
|
| | Tenths of nanoseconds (0.0â0.9) | colspan=4 | | Data input hold time after strobe |
|
| | Nanoseconds (1â63) | colspan=2 | | Minimum write recovery time (tWR) |
|
| | Nanoseconds (1â63) | colspan=2 | | Internal write to read command delay (tWTR) |
|
| | Nanoseconds (1â63) | colspan=2 | | Internal read to precharge command delay (tRTP) |
|
| | Reserved}} | Reserved for "memory analysis probe characteristics" |
|
| | | tRC fractional ns (0â5):0, 0.25, 0.33, 0.5, 0.66, 0.75 | colspan=3 | | | Extension of bytes 41 and 42. |
|
| | Nanoseconds (1â255) | Minimum active to active/refresh time (tRC) |
|
| | Nanoseconds (1â255) | Minimum refresh to active/refresh time (tRFC) |
|
| | Nanoseconds (0â15) | colspan=4 | | Maximum clock cycle time (tCK max) |
|
| | Hundredths of nanoseconds (0.01â2.55) | Maximum skew, DQS to any DQ. (tDQSQ max) |
|
| | Hundredths of nanoseconds (0.01â2.55) | Read data hold skew factor (tQHS) |
|
| | Microseconds (1â255) | PLL relock time |
|
| | Reserved}} | For future standardization. |
|
| | Major revision (0â9) | colspan=4 | | SPD revision level, usually 1.0 |
|
| | Checksum | Sum of bytes 0â62, not negated |
|
| | Manufacturer JEDEC ID | Stored little-endian, trailing zero-pad |
|
| | Module manufacturing location | Vendor-specific code |
|
| | Module part number | ASCII, space-padded (limited to (,-,), AâZ, aâz, 0â9, space) |
|
| | Module revision code | Vendor-specific code |
|
| | Years since 2000 (0â255) | rowspan=2| Manufacturing date (YYWW) |
|
| | Weeks (1â52) |
|
| | Module serial number | Vendor-specific code |
|
| | Manufacturer-specific data | Could be enhanced performance profile |
DDR3 SDRAM
The DDR3 SDRAM standard significantly overhauls and simplifies the SPD contents layout. Instead of a number of BCD-encoded nanosecond fields, some "timebase" units are specified to high precision, and various timing parameters are encoded as multiples of that base unit.WEB,weblink Understanding DDR3 Serial Presence Detect (SPD) Table, Further, the practice of specifying different time values depending on the CAS latency has been dropped; now there are just a single set of timing parameters.Revision 1.1 lets some parameters be expressed as a "medium time base" value plus a (signed, â128 +127) "fine time base" correction. Generally, the medium time base is 1/8 ns (125 ps), and the fine time base is 1, 2.5 or 5 ps. For compatibility with earlier versions that lack the correction, the medium time base number is usually rounded up and the correction is negative. Values that work this way are:{|class=wikitable|+ DDR3 SPD two-part timing parameters! MTB byte || FTB byte || Value|
| | tCKmin, minimum clock period |
|
| | tAAmin, minimum CAS latency time |
|
| | tRCDmin, minimum RAS# to CAS# delay |
|
| | tRPmin, minimum row precharge delay |
|
| | tRCmin, minimum active to active/precharge delay |
{|class=wikitable|+ SPD contents for DDR3 SDRAMJESD21-C Annex K: Serial Presence Detect for DDR3 SDRAM Modules, Release 4, SPD Revision 1.1JESD21-C Annex K: Serial Presence Detect for DDR3 SDRAM Modules, Release 6, SPD Revision 1.3|
! colspan=2 | Byte! colspan=8 | Bit! rowspan=2 | Notes
|
! Dec !! Hex !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0
|
| | | SPD bytes total (undef/256) | colspan=4 | | |
|
| | SPD major revision | colspan=4 | |1.0, 1.1, 1.2 or 1.3 |
|
| | Basic memory type (11 = DDR3 SDRAM) | Type of RAM chips |
|
| | Reserved}} | colspan=4 | | Type of module; e.g., 2 = Unbuffered DIMM, 3 = SO-DIMM, 11=LRDIMM |
|
| | | Bank address bitsâ3 | colspan=4 | | Zero means 8 banks, 256 Mibit. |
|
| | | Row address bitsâ12 | colspan=3 | | |
|
| | Reserved}} | 1.25 V | 1.35 V | Not 1.5 V | Modules voltages supported. 1.5 V is default. |
|
| | | ranksâ1 | colspan=3 | | Module organization |
|
| | | ECC bits (001=8) | colspan=3 | | 0x03 for 64-bit, non-ECC DIMM. |
|
| | Dividend, picoseconds (1â15) | colspan=4 | | Fine Time Base, dividend/divisor |
|
| | Dividend, nanoseconds (1â255) | rowspan=2| Medium Time Base, dividend/divisor; commonly 1/8 |
|
| | Divisor, nanoseconds (1â255) |
|
| | Minimum cycle time tCKmin | In multiples of MTB |
|
| | Reserved}} | |
|
| | | | | | | | | | CAS latencies supported (bitmap) |
|
| | | | | | | | | 12 |
|
| | Minimum CAS latency time, tAAmin | In multiples of MTB; e.g., 80/8 ns. |
|
| | Minimum write recovery time, tWRmin | In multiples of MTB; e.g., 120/8 ns. |
|
| | Minimum RAS to CAS delay time, tRCDmin | In multiples of MTB; e.g., 100/8 ns. |
|
| | Minimum row to row active delay time, tRRDmin | In multiples of MTB; e.g., 60/8 ns. |
|
| | Minimum row precharge time, tRPmin | In multiples of MTB; e.g., 100/8 ns. |
|
| | tRCmin, bits 11:8 | colspan=4 | | Upper 4 bits of bytes 23 and 22 |
|
| | Minimum active to time, tRASmin, bits 7:0 | In multiples of MTB; e.g., 280/8 ns. |
|
| | Minimum active to active/refresh, tRCmin, bits 7:0 | In multiples of MTB; e.g., 396/8 ns. |
|
| | Minimum refresh recovery delay, tRFCmin, bits 7:0 | rowspan=2| In multiples of MTB; e.g., 1280/8 ns. |
|
| | Minimum refresh recovery delay, tRFCmin, bits 15:8 |
|
| | Minimum internal write to read delay, tWTRmin | In multiples of MTB; e.g., 60/8 ns. |
|
| | Minimum internal read to precharge delay, tRTPmin | In multiples of MTB; e.g., 60/8 ns. |
|
| | Reserved}} | colspan=4 | | In multiples of MTB; e.g., 240/8 ns. |
|
| | Minimum four activate window delay tFAWmin, bits 7:0 |
|
| | | | | | SDRAM optional features support bitmap |
|
| | | | | | | | SDRAM thermal and refresh options |
|
| | | Accuracy (TBD; currently 0 = undefined) | DIMM thermal sensor present? |
|
| | | Die count | colspan=2 {{n/a}} | colspan=2 | | Nonstandard SDRAM device type (e.g., stacked die) |
|
| | tCKmin correction (new for 1.1) | Signed multiple of FTB, added to byte 12 |
|
| | tAAmin correction (new for 1.1) | Signed multiple of FTB, added to byte 16 |
|
| | tRCDmin correction (new for 1.1) | Signed multiple of FTB, added to byte 18 |
|
| | tRPmin correction (new for 1.1) | Signed multiple of FTB, added to byte 20 |
|
| | tRCmin correction (new for 1.1) | Signed multiple of FTB, added to byte 23 |
|
| | Reserved}} | For future standardization. |
|
| | Vendor specific | colspan=2 | | Maximum Activate Count (MAC) (untested/700k/600k/.../200k/reserved/â) | For row hammer mitigation |
|
| | Reserved}} | For future standardization. |
|
| | | Module height, mm (1â31, >45) | Module nominal height |
|
| | Back thickness, mm (1â16) | colspan=4 | | Module thickness, value = ceil(mm) â 1 |
|
| | | Revision | colspan=5 | | JEDEC reference design used (11111=none) |
|
| | Module-specific section | Differs between registered/unbuffered |
|
| | Module manufacturer ID, lsbyte | rowspan=2| Assigned by JEP-106 |
|
| | Module manufacturer ID, msbyte |
|
| | Module manufacturing location | Vendor-specific code |
|
| | Tens of years | colspan=4 | | Manufacturing year (BCD) |
|
| | Tens of weeks | colspan=4 | | Manufacturing week (BCD) |
|
| | Module serial number | Vendor-specific code |
|
| | SPD CRC-16 | Includes bytes 0â116 or 0â125; see byte 0 bit 7 |
|
| | Module part number | ASCII subset, space-padded |
|
| | Module revision code | Vendor-defined |
|
| | DRAM manufacturer ID | As distinct from module manufacturer |
|
| | Manufacturer-specific data |
|
| | Available for customer use |
The memory capacity of a module can be computed from bytes 4, 7 and 8. The module width (byte 8) divided by the number of bits per chip (byte 7) gives the number of chips per rank. That can then be multiplied by the per-chip capacity (byte 4) and the number of ranks of chips on the module (usually 1 or 2, from byte 7). DDR4 SDRAM
The DDR4 SDRAM "Annex L" standard for SPD changes the EEPROM module used. Instead of the old AT24C02-compatible 256-byte EEPROMs, JEDEC now defines a new nonstandard EE1004 type with two pages at the SMBus level each with 256 bytes. The new memory still uses the old 0x50â0x57 addresses, but two additional address at 0x36 (SPA0) and 0x37 (SPA1) are now used to receive commands to select the currently-active page for the bus, a form of bank switching.WEB, Delvare, Jean, [PATCH] eeprom: New ee1004 driver for DDR4 memory,weblink LKML, 7 November 2019, Internally each logical page is further divided into two physical blocks of 128 bytes each, totaling four blocks and 512 bytes.WEB, JEDEC, Annex L: Serial Presence Detect (SPD) for DDR4 SDRAM Modules,weblink Other semantics for "special" address ranges remain the same, although write protection is now addressed by blocks and a high voltage at SA0 is now required to change its status.WEB, JEDEC, EE1004 and TSE2004 Device Specification (Draft),weblink 7 November 2019, Annex L defines a few different layouts that can be plugged into a 512-byte (of which a maximum of 320 bytes are defined) template, depending on the type of the memory module. The bit definitions are similar to DDR3.{|class=wikitable|+ SPD contents for DDR4 SDRAMJESD21-C Annex L: Serial Presence Detect for DDR4 SDRAM Modules, Release 5|
! colspan=2 | Byte! colspan=8 | Bit! rowspan=2 | Notes
|
! Dec !! Hex !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0
|
| | SPD bytes used |
|
| | SPD revision n | Typically 0x10, 0x11, 0x12 |
|
| | Basic memory type (12 = DDR4 SDRAM) | Type of RAM chips |
|
| | Reserved}} | colspan=4 | | Type of module; e.g., 2 = Unbuffered DIMM, 3 = SO-DIMM, 11=LRDIMM |
|
| | Bank group bits | colspan=2 | | Total SDRAM capacity per die in megabits | Zero means no bank groups, 4 banks, 256 Mibit. |
|
| | Reserved}} | colspan=3 | | Column address bitsâ9 | |
|
| | | Die count | colspan=2 {{n/a | | Signal loading |
|
| | Reserved}} | colspan=2 | | Maximum activate count (MAC) | SDRAM optional features |
|
| | Reserved}} | SDRAM thermal and refresh options |
|
| | Post package repair (PPR) | Soft PPR | colspan=5 {{n/a | | Other SDRAM optional features |
|
| | | Die countâ1 | colspan=2 | | Signal loading | Secondary SDRAM package type |
|
| | Reserved}} | Endurant flag | Operable flag | Module nominal voltage, VDD |
|
| | Reserved}} | Rank mix | colspan=3 | | SDRAM device width | Module organization |
|
| | Reserved}} | colspan=2 | | Primary bus width | Module memory bus width in bits |
|
| | | Reserved}} | Module thermal sensor |