In der Informatik ist die serielle Präsenzerkennung ( SPD ) ein standardisiertes Verfahren zum automatischen Zugriff auf Informationen über ein Speichermodul . Frühere 72-polige SIMMs enthielten fünf Pins, die fünf Bit paralleler Präsenzerkennungsdaten (PPD) lieferten, aber der 168-polige DIMM- Standard wurde auf serielle Präsenzerkennung umgestellt, um mehr Informationen zu kodieren. [ 1 ]
Beim Einschalten führt ein moderner Computer zunächst einen Power-On Self-Test (POST) durch. Seit Mitte der 1990er-Jahre beinhaltet dieser Prozess die automatische Konfiguration der vorhandenen Hardware. SPD (Speed Pre-Integrated Memory) ist eine Speicherfunktion, die es dem Computer ermöglicht, den verfügbaren Speicher und die entsprechenden Speicherzugriffszeiten zu ermitteln.
Manche Computer passen sich Hardwareänderungen vollautomatisch an. In den meisten Fällen gibt es ein optionales Verfahren, um auf die BIOS- Parameter zuzugreifen und Einstellungen einzusehen und gegebenenfalls zu ändern. Es ist unter Umständen möglich, die Verwendung der SPD-Daten des Arbeitsspeichers zu steuern – Einstellungen auszuwählen, Speichertimings gezielt anzupassen oder die SPD-Daten sogar vollständig zu überschreiben (siehe Übertakten ).
Gespeicherte Informationen
Damit ein Speichermodul SPD unterstützt, schreiben die JEDEC -Standards vor, dass bestimmte Parameter in den unteren 128 Bytes (oder mehr, je nach Generation) eines EEPROMs auf dem Speichermodul gespeichert sein müssen. Diese Bytes enthalten Timing-Parameter, Hersteller, Seriennummer und weitere nützliche Informationen über das Modul. Geräte, die den Speicher nutzen, ermitteln automatisch wichtige Parameter des Moduls, indem sie diese Informationen auslesen. Beispielsweise können die SPD-Daten eines SDRAM- Moduls Informationen über die CAS-Latenz liefern , sodass das System diese ohne Benutzereingriff korrekt einstellen kann.
Die Firmware des SPD-EEPROMs wird über SMBus , eine Variante des I²C - Protokolls , angesteuert . Dadurch reduziert sich die Anzahl der Kommunikationspins am Modul auf nur zwei: ein Taktsignal und ein Datensignal. Das EEPROM teilt sich die Masse mit dem RAM, verfügt über einen eigenen Stromversorgungspin und drei zusätzliche Pins (SA0–2) zur Steckplatzidentifizierung, mit denen dem EEPROM eine eindeutige Adresse im Bereich 0x50–0x57 zugewiesen wird. Die Kommunikationsleitungen können nicht nur von bis zu acht Speichermodulen gemeinsam genutzt werden, sondern derselbe SMBus wird auch häufig auf Motherboards für Systemüberwachungsaufgaben wie das Auslesen von Versorgungsspannungen, CPU- Temperaturen und Lüfterdrehzahlen verwendet.
Vor der Einführung von SPD wurden Speicherchips mittels paralleler Präsenzerkennung (PPD) identifiziert. PPD nutzte für jedes Informationsbit einen separaten Pin, was bedeutete, dass aufgrund des begrenzten Platzes für Pins nur die Geschwindigkeit und Dichte des Speichermoduls gespeichert werden konnten.
SDR SDRAM

Die erste SPD-Spezifikation wurde von JEDEC herausgegeben und von Intel im Rahmen der 1998 eingeführten PC100- Speicherspezifikation verschärft. [ 2 ] [ 3 ] [ 4 ] Die meisten Werte sind in binärkodierter Dezimalform angegeben . Das höchstwertige Nibble kann Werte von 10 bis 15 enthalten und in einigen Fällen auch höhere Werte. In solchen Fällen werden die Kodierungen für 1, 2 und 3 verwendet, um 16, 17 und 18 zu kodieren. Ein höchstwertiges Nibble von 0 ist für die Darstellung von „undefiniert“ reserviert.
Der SPD-ROM definiert bis zu drei DRAM-Timings für drei CAS-Latenzen, die durch gesetzte Bits in Byte 18 spezifiziert werden. Zuerst kommt die höchste CAS-Latenz (schnellster Takt), dann zwei niedrigere CAS-Latenzen mit progressiv niedrigeren Taktraten.
| Byte | Bisschen | Anmerkungen | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| (Dez.) | (verhexen.) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| 0 | 0x00 | Anzahl der vorhandenen Bytes | Typischerweise 128 | |||||||
| 1 | 0x01 | log 2 (Größe des SPD-EEPROMs) | Typischerweise 8 (256 Bytes) | |||||||
| 2 | 0x02 | Grundlegender Speichertyp (4: SPD SDRAM) | ||||||||
| 3 | 0x03 | Bank 2 Zeilenadressbits (0–15) | Bank 1 Zeilenadressbits (1–15) | Bank 2 ist 0, wenn sie mit Bank 1 übereinstimmt. | ||||||
| 4 | 0x04 | Bank 2 Spaltenadressbits (0–15) | Adressbits der Spalte Bank 1 (1–15) | Bank 2 ist 0, wenn sie mit Bank 1 übereinstimmt. | ||||||
| 5 | 0x05 | Anzahl der RAM-Bänke auf dem Modul (1–255) | Üblicherweise 1 oder 2 | |||||||
| 6 | 0x06 | Moduldatenbreite niedrigstes Byte | Üblicherweise 64 oder 72 für ECC-DIMMs | |||||||
| 7 | 0x07 | Moduldatenbreite High Byte | 0, es sei denn, die Breite beträgt mindestens 256 Bit | |||||||
| 8 | 0x08 | Schnittstellenspannungspegel dieser Baugruppe (nicht identisch mit der Versorgungsspannung Vcc) (0–4 ) | Dekodiert durch Tabellennachschlagen | |||||||
| 9 | 0x09 | Nanosekunden (0–15) | Zehntel Nanosekunden (0,0–0,9) | Taktzykluszeit bei höchster CAS-Latenz | ||||||
| 10 | 0x0a | Nanosekunden (0–15) | Zehntel Nanosekunden (0,0–0,9) | SDRAM-Zugriffszeit vom Taktgeber (t AC ) | ||||||
| 11 | 0x0b | DIMM-Konfigurationstyp (0–2): Nicht-ECC, Parität, ECC | Tabellensuche | |||||||
| 12 | 0x0c | Selbst | Aktualisierungsperiode (0–5): 64, 256, 128, 32, 16, 8 kHz | Aktualisierungsanforderungen | ||||||
| 13 | 0x0d | Bank 2 2× | Breite des primären SDRAM von Bank 1 (1–127, üblicherweise 8) | Breite der SDRAM-Datenbausteine von Bank 1. Bank 2 kann die gleiche Breite haben oder die doppelte Breite, wenn Bit 7 gesetzt ist. | ||||||
| 14 | 0x0e | Bank 2 2× | Bank 1 ECC SDRAM Breite (0–127) | Breite der ECC/Paritäts-SDRAM-Bausteine von Bank 1. Bank 2 kann die gleiche Breite haben oder die doppelte Breite, wenn Bit 7 gesetzt ist. | ||||||
| 15 | 0x0f | Taktverzögerung für zufällige Spaltenlesungen | Typischerweise 1 | |||||||
| 16 | 0x10 | Seite | — | — | — | 8 | 4 | 2 | 1 | Unterstützte Burst-Längen (Bitmap) |
| 17 | 0x11 | Bänke pro SDRAM-Baustein (1–255) | Typischerweise 2 oder 4 | |||||||
| 18 | 0x12 | — | 7 | 6 | 5 | 4 | 3 | 2 | 1 | Unterstützte CAS -Latenzen (Bitmap) |
| 19 | 0x13 | — | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Unterstützte CS- Latenzen (Bitmap) |
| 20 | 0x14 | — | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Unterstützte WE -Latenzen (Bitmap) |
| 21 | 0x15 | — | Überflüssig | Differenzialuhr | Registrierte Daten | Gepufferte Daten | On-Card PLL | Registrierte Adresse. | Gepufferte Adresse. | Speichermodul-Funktions-Bitmap |
| 22 | 0x16 | — | — | Toleranz der oberen Versorgungsspannung ( Vcc ) | Niedrigere Vcc - Toleranz (Versorgungsspannung) | Schreiben/1 Lese-Burst | Alle vorladen | Automatische Vorladung | Frühe RAS- Vorladung | Speicherchip-Funktion unterstützt Bitmap |
| 23 | 0x17 | Nanosekunden (4–18) | Zehntel Nanosekunden (0–9: 0,0–0,9) | Taktzykluszeit bei mittlerer CAS-Latenz | ||||||
| 24 | 0x18 | Nanosekunden (4–18) | Zehntel Nanosekunden (0–9: 0,0–0,9) | Datenzugriffszeit von der Uhr (t AC ) | ||||||
| 25 | 0x19 | Nanosekunden (1–63) | 0,25 ns (0–3: 0,00–0,75) | Taktzykluszeit bei kurzer CAS-Latenz. | ||||||
| 26 | 0x1a | Nanosekunden (1–63) | 0,25 ns (0–3: 0,00–0,75) | Datenzugriffszeit von der Uhr (t AC ) | ||||||
| 27 | 0x1b | Nanosekunden (1–255) | Minimale Reihenvorladezeit (t RP ) | |||||||
| 28 | 0x1c | Nanosekunden (1–255) | Minimale Zeilenaktiv-Zeilenaktiv-Verzögerung (t RRD ) | |||||||
| 29 | 0x1d | Nanosekunden (1–255) | Minimale Verzögerung zwischen RAS und CAS (t RCD ) | |||||||
| 30 | 0x1e | Nanosekunden (1–255) | Minimale Aktivierungs- bis Vorladezeit (t RAS ) | |||||||
| 31 | 0x1f | 512 MiB | 256 MiB | 128 MiB | 64 MiB | 32 MiB | 16 MiB | 8 MiB | 4 MiB | Modulbankdichte (Bitmap). Zwei Bits werden gesetzt, wenn die Bänke unterschiedliche Größen haben. |
| 32 | 0x20 | Vorzeichen (1: −) | Nanosekunden (0–7) | Zehntel Nanosekunden (0–9: 0,0–0,9) | Einrichtungszeit für Adressen/Befehle von der Uhrzeit | |||||
| 33 | 0x21 | Vorzeichen (1: −) | Nanosekunden (0–7) | Zehntel Nanosekunden (0–9: 0,0–0,9) | Haltezeit für Adressen/Befehle nach dem Umschalten | |||||
| 34 | 0x22 | Vorzeichen (1: −) | Nanosekunden (0–7) | Zehntel Nanosekunden (0–9: 0,0–0,9) | Dateneingabe-Setup-Zeit von der Uhr | |||||
| 35 | 0x23 | Vorzeichen (1: −) | Nanosekunden (0–7) | Zehntel Nanosekunden (0–9: 0,0–0,9) | Dateneingabe-Haltezeit nach dem Takt | |||||
| 36–61 | 0x24–0x3d | Reserviert | Für die zukünftige Standardisierung | |||||||
| 62 | 0x3e | Hauptrevision (0–9) | Geringfügige Überarbeitung (0–9) | SPD-Revisionsstufe; z. B. 1.2 | ||||||
| 63 | 0x3f | Prüfsumme | Summe der Bytes 0–62, nicht negiert | |||||||
| 64–71 | 0x40–47 | Hersteller-JEDEC-ID. | Gespeichert im Little-Endian-Format, mit nachfolgenden Nullen aufgefüllt | |||||||
| 72 | 0x48 | Standort der Modulfertigung | Herstellerspezifischer Code | |||||||
| 73–90 | 0x49–0x5a | Modul-Teilenummer | ASCII, mit Leerzeichen aufgefüllt | |||||||
| 91–92 | 0x5b–0x5c | Modulrevisionscode | Herstellerspezifischer Code | |||||||
| 93 | 0x5d | Jahrzehnte (0–9: 0–90) | Jahre (0–9) | Herstellungsdatum (JJWW) | ||||||
| 94 | 0x5e | Zehnerwochen (0–5: 0–50) | Wochen (0–9) | |||||||
| 95–98 | 0x5f–0x62 | Modulseriennummer | Herstellerspezifischer Code | |||||||
| 99–125 | 0x63–0x7f | Herstellerspezifische Daten | Könnte ein verbessertes Leistungsprofil sein | |||||||
| 126 | 0x7e | 0x66 [ sic ] für 66 MHz, 0x64 für 100 MHz | Intel-Frequenzunterstützung | |||||||
| 127 | 0x7f | CLK0 | CLK1 | CLK3 | CLK3 | 90/100 °C | CL3 | CL2 | Gleichzeitiger AP | Intel-Funktionsbitmap |
DDR SDRAM
Das DDR-DIMM-SPD-Format ist eine Erweiterung des SDR-SDRAM-Formats. Hauptsächlich werden die Parameterbereiche neu skaliert, um höhere Geschwindigkeiten zu ermöglichen.
| Byte | Bisschen | Anmerkungen | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| (Dez.) | (verhexen.) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| 0 | 0x00 | Anzahl der geschriebenen Bytes | Typischerweise 128 | |||||||
| 1 | 0x01 | log 2 (Größe des SPD-EEPROMs) | Typischerweise 8 (256 Bytes) | |||||||
| 2 | 0x02 | Grundlegender Speichertyp (7 = DDR SDRAM) | ||||||||
| 3 | 0x03 | Bank 2 Zeilenadressbits (0–15) | Bank 1 Zeilenadressbits (1–15) | Bank 2 ist 0, wenn sie mit Bank 1 übereinstimmt. | ||||||
| 4 | 0x04 | Bank 2 Spaltenadressbits (0–15) | Adressbits der Spalte Bank 1 (1–15) | Bank 2 ist 0, wenn sie mit Bank 1 übereinstimmt. | ||||||
| 5 | 0x05 | Anzahl der RAM-Bänke auf dem Modul (1–255) | Üblicherweise 1 oder 2 | |||||||
| 6 | 0x06 | Moduldatenbreite niedrigstes Byte | Üblicherweise 64 oder 72 für ECC-DIMMs | |||||||
| 7 | 0x07 | Moduldatenbreite High Byte | 0, es sei denn, die Breite beträgt mindestens 256 Bit | |||||||
| 8 | 0x08 | Schnittstellenspannungspegel dieser Baugruppe (nicht identisch mit der Versorgungsspannung Vcc) (0–5 ) | Dekodiert durch Tabellennachschlagen | |||||||
| 9 | 0x09 | Nanosekunden (0–15) | Zehntel Nanosekunden (0,0–0,9) | Taktzykluszeit bei höchster CAS-Latenz. | ||||||
| 10 | 0x0a | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | SDRAM-Zugriffszeit vom Taktgeber (t AC ) | ||||||
| 11 | 0x0b | DIMM-Konfigurationstyp (0–2): Nicht-ECC, Parität, ECC | Tabellensuche | |||||||
| 12 | 0x0c | Selbst | Aktualisierungsperiode (0–5): 64, 256, 128, 32, 16, 8 kHz | Aktualisierungsanforderungen | ||||||
| 13 | 0x0d | Bank 2 2× | Bank 1 primäre SDRAM-Breite (1–127) | Breite der SDRAM-Datenbausteine von Bank 1. Bank 2 kann die gleiche Breite haben oder die doppelte Breite, wenn Bit 7 gesetzt ist. | ||||||
| 14 | 0x0e | Bank 2 2× | Bank 1 ECC SDRAM Breite (0–127) | Breite der ECC/Paritäts-SDRAM-Bausteine von Bank 1. Bank 2 kann die gleiche Breite haben oder die doppelte Breite, wenn Bit 7 gesetzt ist. | ||||||
| 15 | 0x0f | Taktverzögerung für zufällige Spaltenlesungen | Typischerweise 1 | |||||||
| 16 | 0x10 | Seite | — | — | — | 8 | 4 | 2 | 1 | Unterstützte Burst-Längen (Bitmap) |
| 17 | 0x11 | Bänke pro SDRAM-Baustein (1–255) | Typischerweise 4 | |||||||
| 18 | 0x12 | — | 4 | 3,5 | 3 | 2,5 | 2 | 1,5 | 1 | Unterstützte CAS -Latenzen (Bitmap) |
| 19 | 0x13 | — | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Unterstützte CS- Latenzen (Bitmap) |
| 20 | 0x14 | — | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Unterstützte WE -Latenzen (Bitmap) |
| 21 | 0x15 | — | X | Differenztakt | Externe Aktivierung des FET-Schalters | FET-Schalter auf der Platine aktivieren | On-Card PLL | Eingetragen | Gepuffert | Speichermodul-Funktions-Bitmap |
| 22 | 0x16 | Schneller AP | Gleichzeitige automatische Vorladung | Toleranz der oberen Versorgungsspannung ( Vcc ) | Niedrigere Vcc - Toleranz (Versorgungsspannung) | — | — | — | Beinhaltet einen schwachen Fahrer | Speicherchip-Funktions-Bitmap |
| 23 | 0x17 | Nanosekunden (0–15) | Zehntel Nanosekunden (0,0–0,9) | Taktzykluszeit bei mittlerer CAS-Latenz. | ||||||
| 24 | 0x18 | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | Datenzugriffszeit von der Uhr (t AC ) | ||||||
| 25 | 0x19 | Nanosekunden (0–15) | Zehntel Nanosekunden (0,0–0,9) | Taktzykluszeit bei kurzer CAS-Latenz. | ||||||
| 26 | 0x1a | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | Datenzugriffszeit von der Uhr (t AC ) | ||||||
| 27 | 0x1b | Nanosekunden (1–63) | 0,25 ns (0–0,75) | Minimale Reihenvorladezeit (t RP ) | ||||||
| 28 | 0x1c | Nanosekunden (1–63) | 0,25 ns (0–0,75) | Minimale Zeilenaktiv-Zeilenaktiv-Verzögerung (t RRD ) | ||||||
| 29 | 0x1d | Nanosekunden (1–63) | 0,25 ns (0–0,75) | Minimale Verzögerung zwischen RAS und CAS (t RCD ) | ||||||
| 30 | 0x1e | Nanosekunden (1–255) | Minimale Aktivierungs- bis Vorladezeit (t RAS ) | |||||||
| 31 | 0x1f | 512 MiB | 256 MiB | 128 MiB | 64 MiB | 32 MiB | 16 MiB / 4 GiB | 8 MiB / 2 GiB | 4 MiB / 1 GiB | Modulbankdichte (Bitmap). Zwei Bits werden gesetzt, wenn die Bänke unterschiedliche Größen haben. |
| 32 | 0x20 | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | Einrichtungszeit für Adressen/Befehle von der Uhrzeit | ||||||
| 33 | 0x21 | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | Haltezeit für Adressen/Befehle nach dem Umschalten | ||||||
| 34 | 0x22 | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | Dateneingabe-Setup-Zeit von der Uhr | ||||||
| 35 | 0x23 | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | Dateneingabe-Haltezeit nach dem Takt | ||||||
| 36–40 | 0x24–0x28 | Reserviert | Informationen zu Obermengen | |||||||
| 41 | 0x29 | Nanosekunden (1–255) | Minimale Zeit bis zur Aktivierung/Aktualisierung (t RC ) | |||||||
| 42 | 0x2a | Nanosekunden (1–255) | Minimale Aktualisierungszeit bis zur Aktivierung/Aktualisierung (t RFC ) | |||||||
| 43 | 0x2b | Nanosekunden (1–63 oder 255: kein Maximum) | 0,25 ns (0–0,75) | Maximale Taktzykluszeit (t CK max.) | ||||||
| 44 | 0x2c | Hundertstel Nanosekunden (0,01–2,55) | Maximale Abweichung, DQS zu beliebiger DQ. (t DQSQ max.) | |||||||
| 45 | 0x2d | Zehntel Nanosekunden (0,0–1,2) | Hundertstel Nanosekunden (0,00–0,09) | Lesedaten halten Schiefefaktor (t QHS ) | ||||||
| 46 | 0x2e | Reserviert | Für die zukünftige Standardisierung | |||||||
| 47 | 0x2f | — | Höhe | Höhe des DIMM-Moduls, Tabellensuche | ||||||
| 48–61 | 0x30–0x3d | Reserviert | Für die zukünftige Standardisierung | |||||||
| 62 | 0x3e | Hauptrevision (0–9) | Geringfügige Überarbeitung (0–9) | SPD-Revisionsstufe, 0.0 oder 1.0 | ||||||
| 63 | 0x3f | Prüfsumme | Summe der Bytes 0–62, nicht negiert | |||||||
| 64–71 | 0x40–47 | Hersteller-JEDEC-ID. | Gespeichert im Little-Endian-Format, mit nachfolgenden Nullen aufgefüllt | |||||||
| 72 | 0x48 | Standort der Modulfertigung | Herstellerspezifischer Code | |||||||
| 73–90 | 0x49–0x5a | Modul-Teilenummer | ASCII, mit Leerzeichen aufgefüllt | |||||||
| 91–92 | 0x5b–0x5c | Modulrevisionscode | Herstellerspezifischer Code | |||||||
| 93 | 0x5d | Jahrzehnte (0–90) | Jahre (0–9) | Herstellungsdatum (JJWW) | ||||||
| 94 | 0x5e | Zehn Wochen (0–50) | Wochen (0–9) | |||||||
| 95–98 | 0x5f–0x62 | Modulseriennummer | Herstellerspezifischer Code | |||||||
| 99–127 | 0x63–0x7f | Herstellerspezifische Daten | Könnte ein verbessertes Leistungsprofil sein | |||||||
DDR2 SDRAM
Der DDR2-SPD-Standard bringt einige Änderungen mit sich, ist aber im Großen und Ganzen mit dem oben genannten Standard vergleichbar. Eine bemerkenswerte Streichung ist die verwirrende und wenig genutzte Unterstützung für DIMMs mit zwei Ranks unterschiedlicher Größe.
Für die Zykluszeitfelder (Bytes 9, 23, 25 und 49), die im BCD-Format kodiert sind , sind einige zusätzliche Kodierungen für die Zehntelstelle definiert, um einige gängige Zeitangaben exakt darzustellen:
| Verhexen | Binär | Bedeutung |
|---|---|---|
| A | 1010 | 0,25 ( 1 ⁄ 4 ) |
| B | 1011 | 0,33 ( 1 ⁄ 3 ) |
| C | 1100 | 0,66 ( 2 ⁄ 3 ) |
| D | 1101 | 0,75 ( 3 ⁄ 4 ) |
| E | 1110 | 0,875 ( 7 ⁄ 8 , Nvidia XMP-Erweiterung) |
| F | 1111 | Reserviert |
| Byte | Bisschen | Anmerkungen | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Dezember | Verhexen | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| 0 | 0x00 | Anzahl der geschriebenen Bytes | Typischerweise 128 | |||||||
| 1 | 0x01 | log 2 (Größe des SPD-EEPROMs) | Typischerweise 8 (256 Bytes) | |||||||
| 2 | 0x02 | Grundlegender Speichertyp (8 = DDR2 SDRAM) | ||||||||
| 3 | 0x03 | Reserviert | Zeilenadressbits (1–15) | |||||||
| 4 | 0x04 | Reserviert | Spaltenadressbits (1–15) | |||||||
| 5 | 0x05 | Vertikale Höhe | Stapel? | ConC? | Ränge−1 (1–8) | Üblicherweise 0 oder 1, was 1 oder 2 bedeutet. | ||||
| 6 | 0x06 | Moduldatenbreite | Üblicherweise 64 oder 72 für ECC-DIMMs | |||||||
| 7 | 0x07 | Reserviert | ||||||||
| 8 | 0x08 | Schnittstellenspannungspegel dieser Baugruppe (nicht identisch mit der Versorgungsspannung Vcc) (0–5 ) | Dekodiert durch Tabellennachschlagetabelle. Üblicherweise 5 = SSTL 1,8 V | |||||||
| 9 | 0x09 | Nanosekunden (0–15) | Zehntel Nanosekunden (0,0–0,9) | Taktzykluszeit bei höchster CAS-Latenz. | ||||||
| 10 | 0x0a | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | SDRAM-Zugriffszeit vom Taktgeber (t AC ) | ||||||
| 11 | 0x0b | DIMM-Konfigurationstyp (0–2): Nicht-ECC, Parität, ECC | Tabellensuche | |||||||
| 12 | 0x0c | Selbst | Aktualisierungsperiode (0–5): 64, 256, 128, 32, 16, 8 kHz | Aktualisierungsanforderungen | ||||||
| 13 | 0x0d | Primäre SDRAM-Breite (1–255) | Üblicherweise 8 (Modul aus ×8 Teilen zusammengesetzt) oder 16 | |||||||
| 14 | 0x0e | ECC SDRAM Breite (0–255) | Breite der ECC/Paritäts-SDRAM-Blöcke. Üblicherweise 0 oder 8. | |||||||
| 15 | 0x0f | Reserviert | ||||||||
| 16 | 0x10 | — | — | — | — | 8 | 4 | — | — | Unterstützte Burst-Längen (Bitmap) |
| 17 | 0x11 | Bänke pro SDRAM-Baustein (1–255) | Typischerweise 4 oder 8 | |||||||
| 18 | 0x12 | 7 | 6 | 5 | 4 | 3 | 2 | — | — | Unterstützte CAS -Latenzen (Bitmap) |
| 19 | 0x13 | Reserviert | ||||||||
| 20 | 0x14 | — | — | Mini-UDIMM | Mini-RDIMM | Micro-DIMM | SO-DIMM | UDIMM | RDIMM | DIMM-Typ dieser Baugruppe (Bitmap) |
| 21 | 0x15 | — | Das Modul ist eine Analysesonde. | — | Externe Aktivierung des FET-Schalters | — | — | — | — | Memory module feature bitmap |
| 22 | 0x16 | — | — | — | — | — | — | — | Includes weak driver | Memory chip feature bitmap |
| 23 | 0x17 | Nanoseconds (0–15) | Tenths of nanoseconds (0.0–0.9) | Clock cycle time at medium CAS latency. | ||||||
| 24 | 0x18 | Tenths of nanoseconds (0.0–0.9) | Hundredths of nanoseconds (0.00–0.09) | Data access time from clock (tAC) | ||||||
| 25 | 0x19 | Nanoseconds (0–15) | Tenths of nanoseconds (0.0–0.9) | Clock cycle time at short CAS latency. | ||||||
| 26 | 0x1a | Tenths of nanoseconds (0.0–0.9) | Hundredths of nanoseconds (0.00–0.09) | Data access time from clock (tAC) | ||||||
| 27 | 0x1b | Nanoseconds (1–63) | 1/4 ns (0–0.75) | Minimum row precharge time (tRP) | ||||||
| 28 | 0x1c | Nanoseconds (1–63) | 1/4 ns (0–0.75) | Minimum row active–row active delay (tRRD) | ||||||
| 29 | 0x1d | Nanoseconds (1–63) | 1/4 ns (0–0.75) | Minimum RAS to CAS delay (tRCD) | ||||||
| 30 | 0x1e | Nanoseconds (1–255) | Minimum active to precharge time (tRAS) | |||||||
| 31 | 0x1f | 512 MiB | 256 MiB | 128 MiB | 16 GiB | 8 GiB | 4 GiB | 2 GiB | 1 GiB | Size of each rank (bitmap). |
| 32 | 0x20 | Tenths of nanoseconds (0.0–1.2) | Hundredths of nanoseconds (0.00–0.09) | Address/command setup time from clock | ||||||
| 33 | 0x21 | Tenths of nanoseconds (0.0–1.2) | Hundredths of nanoseconds (0.00–0.09) | Address/command hold time after clock | ||||||
| 34 | 0x22 | Tenths of nanoseconds (0.0–0.9) | Hundredths of nanoseconds (0.00–0.09) | Data input setup time from strobe | ||||||
| 35 | 0x23 | Tenths of nanoseconds (0.0–0.9) | Hundredths of nanoseconds (0.00–0.09) | Data input hold time after strobe | ||||||
| 36 | 0x24 | Nanoseconds (1–63) | 0.25 ns (0–0.75) | Minimum write recovery time (tWR) | ||||||
| 37 | 0x25 | Nanoseconds (1–63) | 0.25 ns (0–0.75) | Internal write to read command delay (tWTR) | ||||||
| 38 | 0x26 | Nanoseconds (1–63) | 0.25 ns (0–0.75) | Internal read to precharge command delay (tRTP) | ||||||
| 39 | 0x27 | Reserved | Reserved for "memory analysis probe characteristics" | |||||||
| 40 | 0x28 | — | tRC fractional ns (0–5):0, 0.25, 0.33, 0.5, 0.66, 0.75 | tRFC fractional ns (0–5):0, 0.25, 0.33, 0.5, 0.66, 0.75 | tRFC + 256 ns | Extension of bytes 41 and 42. | ||||
| 41 | 0x29 | Nanoseconds (1–255) | Minimum active to active/refresh time (tRC) | |||||||
| 42 | 0x2a | Nanoseconds (1–255) | Minimum refresh to active/refresh time (tRFC) | |||||||
| 43 | 0x2b | Nanoseconds (0–15) | Tenths of nanoseconds (0.0–0.9) | Maximum clock cycle time (tCK max) | ||||||
| 44 | 0x2c | Hundredths of nanoseconds (0.01–2.55) | Maximum skew, DQS to any DQ. (tDQSQ max) | |||||||
| 45 | 0x2d | Hundredths of nanoseconds (0.01–2.55) | Read data hold skew factor (tQHS) | |||||||
| 46 | 0x2e | Microseconds (1–255) | PLL relock time | |||||||
| 47–61 | 0x2f–0x3d | Reserved | For future standardization. | |||||||
| 62 | 0x3e | Major revision (0–9) | Minor revision (0.0–0.9) | SPD revision level, usually 1.0 | ||||||
| 63 | 0x3f | Checksum | Sum of bytes 0–62, not negated | |||||||
| 64–71 | 0x40–47 | Manufacturer JEDEC ID | Stored little-endian, trailing zero-pad | |||||||
| 72 | 0x48 | Module manufacturing location | Vendor-specific code | |||||||
| 73–90 | 0x49–0x5a | Module part number | ASCII, space-padded (limited to (,-,), A–Z, a–z, 0–9, space) | |||||||
| 91–92 | 0x5b–0x5c | Module revision code | Vendor-specific code | |||||||
| 93 | 0x5d | Years since 2000 (0–255) | Manufacturing date (YYWW) | |||||||
| 94 | 0x5e | Weeks (1–52) | ||||||||
| 95–98 | 0x5f–0x62 | Module serial number | Vendor-specific code | |||||||
| 99–127 | 0x63–0x7f | Manufacturer-specific data | Could be enhanced performance profile | |||||||
DDR3 SDRAM
Der DDR3-SDRAM-Standard überarbeitet und vereinfacht das SPD-Inhaltslayout grundlegend. Anstelle mehrerer BCD-kodierter Nanosekundenfelder werden einige „Zeitbasis“-Einheiten hochpräzise spezifiziert, und verschiedene Timing-Parameter werden als Vielfache dieser Basiseinheit kodiert. [ 8 ] Darüber hinaus wurde die Praxis, unterschiedliche Zeitwerte abhängig von der CAS-Latenz anzugeben, aufgegeben; es gibt nun nur noch einen einzigen Satz von Timing-Parametern.
Revision 1.1 ermöglicht es, einige Parameter als „mittlere Zeitbasis“ plus eine (vorzeichenbehaftete, −128 + 127) „feine Zeitbasis“-Korrektur anzugeben. Die mittlere Zeitbasis beträgt üblicherweise 1/8 ns (125 ps), die feine Zeitbasis 1, 2,5 oder 5 ps. Aus Kompatibilitätsgründen mit früheren Versionen, denen diese Korrektur fehlt, wird der Wert der mittleren Zeitbasis in der Regel aufgerundet und die Korrektur negativ. Folgende Werte funktionieren auf diese Weise:
| MTB Byte | FTB-Byte | Wert |
|---|---|---|
| 12 | 34 | t CK min, minimale Taktperiode |
| 16 | 35 | t AA min, minimale CAS-Latenzzeit |
| 18 | 36 | t RCD min, minimale Verzögerung von RAS# zu CAS# |
| 20 | 37 | t RP min, minimale Zeilenvorladeverzögerung |
| 21, 23 | 38 | t RC min, minimale Verzögerung zwischen aktiver und aktiver/Vorladeverzögerung |
| Byte | Bisschen | Anmerkungen | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Dezember | Verhexen | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| 0 | 0x00 | Seriennummer von der CRC ausschließen | SPD-Bytes insgesamt (undef/256) | Verwendete SPD-Bytes (undef/128/176/256) | ||||||
| 1 | 0x01 | SPD grundlegend überarbeitet | SPD geringfügige Überarbeitung | 1.0, 1.1, 1.2 oder 1.3 | ||||||
| 2 | 0x02 | Grundlegender Speichertyp (11 = DDR3 SDRAM) | RAM-Chiptypen | |||||||
| 3 | 0x03 | Reserviert | Modultyp | Art des Moduls; z. B. 2 = ungepuffertes DIMM, 3 = SO-DIMM, 11 = LRDIMM | ||||||
| 4 | 0x04 | N / A | Bankadressenbits−3 | log 2 (Bits pro Chip)−28 | Null bedeutet 8 Banken, 256 Mibit. | |||||
| 5 | 0x05 | N / A | Zeilenadressbits −12 | Spaltenadressenbits−9 | ||||||
| 6 | 0x06 | Reserviert | 1,25 V | 1,35 V | Nicht 1,5 V | Unterstützte Modulspannungen. Standardwert: 1,5 V. | ||||
| 7 | 0x07 | N / A | Rang−1 | log 2 (I/O-Bits/Chip)−2 | Modulorganisation | |||||
| 8 | 0x08 | N / A | ECC-Bits (001=8) | log 2 (Datenbits)−3 | 0x03 für 64-Bit, nicht-ECC DIMM. | |||||
| 9 | 0x09 | Dividend, Pikosekunden (1–15) | Teiler, Pikosekunden (1–15) | Feine Zeitbasis, Dividende/Divisor | ||||||
| 10 | 0x0a | Dividend, Nanosekunden (1–255) | Mittlere Laufzeit, Dividend/Divisor; üblicherweise 1/8 | |||||||
| 11 | 0x0b | Teiler, Nanosekunden (1–255) | ||||||||
| 12 | 0x0c | Minimale Zykluszeit t CK min | In Vielfachen von MTB | |||||||
| 13 | 0x0d | Reserviert | ||||||||
| 14 | 0x0e | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | Unterstützte CAS-Latenzen (Bitmap) |
| 15 | 0x0f | N / A | 18 | 17 | 16 | 15 | 14 | 13 | 12 | |
| 16 | 0x10 | Minimale CAS-Latenzzeit, t AA min | In Vielfachen von MTB; z. B. 80/8 ns. | |||||||
| 17 | 0x11 | Minimale Schreibwiederherstellungszeit, t WR min | In Vielfachen von MTB; z. B. 120/8 ns. | |||||||
| 18 | 0x12 | Minimale Verzögerungszeit von RAS zu CAS, t RCD min | In Vielfachen von MTB; z. B. 100/8 ns. | |||||||
| 19 | 0x13 | Minimale aktive Verzögerungszeit zwischen Zeilen, t RRD min | In Vielfachen von MTB; z. B. 60/8 ns. | |||||||
| 20 | 0x14 | Minimale Reihenvorladezeit, t RP min | In Vielfachen von MTB; z. B. 100/8 ns. | |||||||
| 21 | 0x15 | t RC min, Bits 11:8 | t RAS min, Bits 11:8 | Die oberen 4 Bits der Bytes 23 und 22 | ||||||
| 22 | 0x16 | Mindestaktivitätszeit, t RAS min, Bits 7:0 | In Vielfachen von MTB; z. B. 280/8 ns. | |||||||
| 23 | 0x17 | Minimale Aktivierungs-/Aktualisierungszeit, t RC min, Bits 7:0 | In Vielfachen von MTB; z. B. 396/8 ns. | |||||||
| 24 | 0x18 | Minimale Aktualisierungsverzögerung, t RFC min, Bits 7:0 | In Vielfachen von MTB; z. B. 1280/8 ns. | |||||||
| 25 | 0x19 | Minimale Aktualisierungsverzögerung, t RFC min, Bits 15:8 | ||||||||
| 26 | 0x1a | Minimale interne Schreib-zu-Lese-Verzögerung, t WTR min | In Vielfachen von MTB; z. B. 60/8 ns. | |||||||
| 27 | 0x1b | Minimale interne Leseverzögerung bis zum Vorladen, t RTP min | In Vielfachen von MTB; z. B. 60/8 ns. | |||||||
| 28 | 0x1c | Reserviert | t FAW min, Bits 11:8 | In Vielfachen von MTB; z. B. 240/8 ns. | ||||||
| 29 | 0x1d | Mindestens vier Aktivierungsfensterverzögerungen t FAW min, Bits 7:0 | ||||||||
| 30 | 0x1e | DLL-Aus | N / A | RZQ/7 | RZQ/6 | SDRAM-Optionalfunktionen unterstützen Bitmap | ||||
| 31 | 0x1f | PASR | N / A | ODTS | ASR | ETR 1× | ETR (95 °C) | SDRAM-Thermo- und Refresh-Optionen | ||
| 32 | 0x20 | Gegenwärtig | Genauigkeit (noch festzulegen; derzeit 0 = undefiniert) | DIMM-Temperatursensor vorhanden? | ||||||
| 33 | 0x21 | Nicht standardmäßig. | Würfel zählen | N / A | Signallast | Nicht standardmäßiger SDRAM-Gerätetyp (z. B. gestapelter Chip) | ||||
| 34 | 0x22 | t CK min Korrektur (neu für 1.1) | Signiertes Vielfaches von FTB, addiert zu Byte 12 | |||||||
| 35 | 0x23 | t AA min Korrektur (neu für 1.1) | Signiertes Vielfaches von FTB, addiert zu Byte 16 | |||||||
| 36 | 0x24 | t RCD -Mindestkorrektur (neu für 1.1) | Signiertes Vielfaches von FTB, addiert zu Byte 18 | |||||||
| 37 | 0x25 | t RP min Korrektur (neu für 1.1) | Signiertes Vielfaches von FTB, addiert zu Byte 20 | |||||||
| 38 | 0x26 | t RC min correction (neu für 1.1) | Signiertes Vielfaches von FTB, addiert zu Byte 23 | |||||||
| 39–40 | 0x27–0x28 | Reserviert | Für die zukünftige Standardisierung. | |||||||
| 41 | 0x29 | Anbieterspezifisch | t MAW | Maximale Aktivierungsanzahl (MAC) (ungetestet/700k/600k/.../200k/reserviert/∞) | Zur Minderung der Schäden durch Reihenhammer | |||||
| 42–59 | 0x2a–0x3b | Reserviert | Für die zukünftige Standardisierung. | |||||||
| 60 | 0x3c | N / A | Modulhöhe, mm (1–31, >45) | Modul nominale Höhe | ||||||
| 61 | 0x3d | Rückseitenstärke, mm (1–16) | Frontdicke, mm (1–16) | Moduldicke, Wert = ceil(mm) − 1 | ||||||
| 62 | 0x3e | Design | Revision | JEDEC-Designnummer | JEDEC-Referenzdesign verwendet (11111=kein) | |||||
| 63–116 | 0x3f–0x74 | Modulspezifischer Abschnitt | Unterscheidet sich zwischen registrierten/ungepufferten | |||||||
| 117 | 0x75 | Modulhersteller-ID, lsbyte | Zugewiesen von JEP-106 | |||||||
| 118 | 0x76 | Modulhersteller-ID, msbyte | ||||||||
| 119 | 0x77 | Standort der Modulfertigung | Herstellerspezifischer Code | |||||||
| 120 | 0x78 | Jahrzehnte | Jahre | Herstellungsjahr (BCD) | ||||||
| 121 | 0x79 | Zehn Wochen | Wochen | Produktionswoche (BCD) | ||||||
| 122–125 | 0x7a–0x7d | Modulseriennummer | Herstellerspezifischer Code | |||||||
| 126–127 | 0x7e–0x7f | SPD CRC-16 | Beinhaltet die Bytes 0–116 oder 0–125; siehe Byte 0, Bit 7 | |||||||
| 128–145 | 0x80–0x91 | Modul-Teilenummer | ASCII-Teilmenge, mit Leerzeichen aufgefüllt | |||||||
| 146–147 | 0x92–0x93 | Modulrevisionscode | vom Anbieter definiert | |||||||
| 148–149 | 0x94–0x95 | DRAM-Hersteller-ID | Im Gegensatz zum Modulhersteller | |||||||
| 150–175 | 0x96–0xAF | Herstellerspezifische Daten | ||||||||
| 176–255 | 0xB0–0xFF | Für den Kunden verfügbar | ||||||||
Die Speicherkapazität eines Moduls lässt sich aus den Bytes 4, 7 und 8 berechnen. Die Modulbreite (Byte 8) geteilt durch die Anzahl der Bits pro Chip (Byte 7) ergibt die Anzahl der Chips pro Rank. Diese kann dann mit der Kapazität pro Chip (Byte 4) und der Anzahl der Chip-Ränge auf dem Modul (üblicherweise 1 oder 2, aus Byte 7) multipliziert werden.
DDR4 SDRAM
Der DDR4-SDRAM-Standard „Annex L“ für SPD ändert das verwendete EEPROM-Modul. Anstelle der alten AT24C02-kompatiblen 256-Byte-EEPROMs definiert JEDEC nun einen neuen, nicht standardisierten Typ EE1004 mit zwei Seiten auf SMBus-Ebene, die jeweils 256 Byte groß sind. Der neue Speicher verwendet weiterhin die alten Adressen 0x50–0x57, jedoch werden nun zusätzlich die Adressen 0x36 (SPA0) und 0x37 (SPA1) verwendet, um Befehle zur Auswahl der aktuell aktiven Seite für den Bus zu empfangen – eine Form des Bank-Switchings . [ 11 ] Intern ist jede logische Seite in zwei physische Blöcke mit je 128 Byte unterteilt, insgesamt also vier Blöcke mit 512 Byte. [ 12 ] Die übrige Semantik für „spezielle“ Adressbereiche bleibt unverändert, der Schreibschutz wird jedoch nun blockweise adressiert, und zum Ändern des Status ist eine hohe Spannung an SA0 erforderlich. [ 13 ]
Anhang L definiert verschiedene Layouts, die je nach Speichermodultyp in eine 512-Byte-Vorlage (von der maximal 320 Byte definiert sind) eingefügt werden können. Die Bitdefinitionen ähneln DDR3. [ 12 ]
| Byte | Bisschen | Anmerkungen | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Dezember | Verhexen | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| 0 | 0x00 | SPD-Bytes verwendet | ||||||||
| 1 | 0x01 | SPD-Revision Nr. | Typischerweise 0x10, 0x11, 0x12 | |||||||
| 2 | 0x02 | Grundlegender Speichertyp (12 = DDR4 SDRAM) | RAM-Chiptypen | |||||||
| 3 | 0x03 | Reserviert | Modultyp | Art des Moduls; z. B. 2 = ungepuffertes DIMM, 3 = SO-DIMM, 11 = LRDIMM | ||||||
| 4 | 0x04 | Teile der Bankengruppe | Bankadressenbits−2 | Gesamtkapazität des SDRAM pro Chip in Megabit | Null bedeutet keine Bankengruppen, 4 Banken, 256 Mibit. | |||||
| 5 | 0x05 | Reserviert | Zeilenadressbits −12 | Spaltenadressenbits−9 | ||||||
| 6 | 0x06 | Primärer SDRAM-Gehäusetyp | Würfel zählen | Reserviert | Signalbeladung | |||||
| 7 | 0x07 | Reserviert | Maximales Aktivierungsfenster (tMAW) | Maximale Aktivierungsanzahl (MAC) | SDRAM optionale Funktionen | |||||
| 8 | 0x08 | Reserviert | SDRAM-Thermo- und Refresh-Optionen | |||||||
| 9 | 0x09 | Postpaketreparatur (PPR) | Soft PPR | Reserviert | Weitere optionale SDRAM-Funktionen | |||||
| 10 | 0x0a | SDRAM-Gehäusetyp | Würfelanzahl−1 | DRAM-Dichteverhältnis | Signalbeladung | Sekundärer SDRAM-Gehäusetyp | ||||
| 11 | 0x0b | Reserviert | Endurant-Flagge | Funktionsfähige Flagge | Modul-Nennspannung, VDD | |||||
| 12 | 0x0c | Reserviert | Rangmischung | Paketränge pro DIMM−1 | SDRAM-Gerätebreite | Modulorganisation | ||||
| 13 | 0x0d | Reserviert | Busbreitenerweiterung | Primäre Busbreite | Modulspeicherbusbreite in Bit | |||||
| 14 | 0x0e | Thermischer Sensor | Reserviert | Modul-Thermosensor | ||||||
| 15 | 0x0f | Reserviert | Erweiterter Basismodultyp | |||||||
| 16 | 0x10 | Reserviert | ||||||||
| 17 | 0x11 | Reserviert | Mittlere Zeitbasis (MTB) | Feine Zeitbasis (FTB) | Gemessen in ps. | |||||
| 18 | 0x12 | Minimale SDRAM-Zykluszeit, t CKAVG min | In Vielfachen von MTB; z. B. 100/8 ns. | |||||||
| 19 | 0x13 | Maximale SDRAM-Zykluszeit, t CKAVG max | In Vielfachen von MTB; z. B. 60/8 ns. | |||||||
| 20 | 0x14 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | Unterstützte CAS-Latenzen Bitmaske |
| 21 | 0x15 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | Unterstützte CAS-Latenzen Bitmaske |
| 22 | 0x16 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | Unterstützte CAS-Latenzen Bitmaske |
| 23 | 0x17 | Niedriger CL-Bereich | Reserviert | 36 | 35 | 34 | 33 | 32 | 31 | Unterstützte CAS-Latenzen Bitmaske |
| 24 | 0x18 | Minimale CAS-Latenzzeit, t AA min | In Vielfachen von MTB; z. B. 1280/8 ns. | |||||||
| 25 | 0x19 | Minimale Verzögerungszeit von RAS zu CAS, t RCD min | In Vielfachen von MTB; z. B. 60/8 ns. | |||||||
| 26 | 0x1a | Minimale Vorladeverzögerungszeit der Reihe, t RP min | In Vielfachen von MTB; z. B. 60/8 ns. | |||||||
| 27 | 0x1b | Obere Nibbles für t RAS min und t RC min | ||||||||
| 28 | 0x1c | Minimale Verzögerungszeit zwischen aktiver und Vorladung, t RAS min niederwertigstes Byte | In Vielfachen von MTB | |||||||
| 29 | 0x1d | Minimale Verzögerungszeit zwischen aktiver und aktiver Aktualisierung, t RC min niedrigstwertiges Byte | In Vielfachen von MTB | |||||||
| 30 | 0x1e | Minimale Aktualisierungsverzögerungszeit, t RFC1 min niedrigstwertiges Byte | In Vielfachen von MTB | |||||||
| 31 | 0x1f | Minimale Aktualisierungsverzögerungszeit, t RFC1 min höchstwertiges Byte | In Vielfachen von MTB | |||||||
| 32 | 0x20 | Minimale Aktualisierungswiederherstellungsverzögerungszeit, t RFC2 min niedrigstwertiges Byte | In Vielfachen von MTB | |||||||
| 33 | 0x21 | Minimale Aktualisierungs-Wiederherstellungsverzögerungszeit, t RFC2 min höchstwertiges Byte | In Vielfachen von MTB | |||||||
| 34 | 0x22 | Minimale Aktualisierungswiederherstellungsverzögerungszeit, t RFC4 min niedrigstwertiges Byte | In Vielfachen von MTB | |||||||
| 35 | 0x23 | Minimale Aktualisierungs-Wiederherstellungsverzögerungszeit, t RFC4 min höchstwertiges Byte | In Vielfachen von MTB | |||||||
| 36 | 0x24 | Reserviert | t FAW min bedeutendstes Nibble | |||||||
| 37 | 0x25 | Mindestens vier Aktivierungsfensterverzögerungszeiten, t FAW min niederwertigstes Byte | In Vielfachen von MTB | |||||||
| 38 | 0x26 | Minimale Aktivierungsverzögerungszeit, t RRD_S min, verschiedene Bankgruppen | In Vielfachen von MTB | |||||||
| 39 | 0x27 | Minimale Aktivierungsverzögerungszeit, t RRD_L min, gleiche Bankgruppe | In Vielfachen von MTB | |||||||
| 40 | 0x28 | Minimale CAS-zu-CAS-Verzögerungszeit, t CCD_L min, gleiche Bankgruppe | In Vielfachen von MTB | |||||||
| 41 | 0x29 | Oberes Knabbern für t WR min | ||||||||
| 42 | 0x2a | Minimale Schreibwiederherstellungszeit, t WR min | In Vielfachen von MTB | |||||||
| 43 | 0x2b | Obere Knabbereien für t WTR min | ||||||||
| 44 | 0x2c | Minimale Schreib-Lese-Zeit, t WTR_S min, verschiedene Bankgruppen | In Vielfachen von MTB | |||||||
| 45 | 0x2d | Minimale Schreib-Lese-Zeit, t WTR_L min, gleiche Bankgruppe | In Vielfachen von MTB | |||||||
| 49–59 | 0x2e–0x3b | Reserviert | Abschnitt „Basiskonfiguration“ | |||||||
| 60–77 | 0x3c–0x4d | Anschluss-zu-SDRAM-Bitbelegung | ||||||||
| 78–116 | 0x4e–0x74 | Reserviert | Abschnitt „Basiskonfiguration“ | |||||||
| 117 | 0x75 | Feinjustierung für minimale CAS-zu-CAS-Verzögerungszeit, t CCD_L min, gleiche Bank | Zweierkomplement-Multiplikator für FTB-Einheiten | |||||||
| 118 | 0x76 | Feinjustierung für minimale Aktivierungsverzögerungszeit, t RRD_L min, gleiche Bankgruppe | Zweierkomplement-Multiplikator für FTB-Einheiten | |||||||
| 119 | 0x77 | Feinjustierung für minimale Aktivierungsverzögerungszeit, t RRD_S min, verschiedene Bankgruppe | Zweierkomplement-Multiplikator für FTB-Einheiten | |||||||
| 120 | 0x78 | Feinjustierung für minimale Verzögerungszeit zwischen aktivem und aktivem/Aktualisieren, t RC min | Zweierkomplement-Multiplikator für FTB-Einheiten | |||||||
| 121 | 0x79 | Feinjustierung für minimale Reihenvorladeverzögerungszeit, t RP min | Zweierkomplement-Multiplikator für FTB-Einheiten | |||||||
| 122 | 0x7a | Feinjustierung für minimale RAS-zu-CAS-Verzögerungszeit, t RCD min | Zweierkomplement-Multiplikator für FTB-Einheiten | |||||||
| 123 | 0x7b | Feinjustierung für minimale CAS-Latenzzeit, t AA min | Zweierkomplement-Multiplikator für FTB-Einheiten | |||||||
| 124 | 0x7c | Feinjustierung der maximalen Zykluszeit des SDRAM, t CKAVG max | Zweierkomplement-Multiplikator für FTB-Einheiten | |||||||
| 125 | 0x7d | Feinjustierung der minimalen Zykluszeit des SDRAM, t CKAVG min | Zweierkomplement-Multiplikator für FTB-Einheiten | |||||||
| 126 | 0x7e | Zyklischer Redundanzcode (CRC) für den Basiskonfigurationsabschnitt, niedrigstwertiges Byte | CRC16-Algorithmus | |||||||
| 127 | 0x7f | Zyklischer Redundanzcode (CRC) für den Basiskonfigurationsabschnitt, höchstwertiges Byte | CRC16-Algorithmus | |||||||
| 128–191 | 0x80–0xbf | Modulspezifischer Abschnitt | Abhängig von der Speichermodulfamilie (UDIMM, RDIMM, LRDIMM) | |||||||
| 192–255 | 0xc0–0xff | Spezifische Parameter der Hybrid-Speicherarchitektur | ||||||||
| 256–319 | 0x100–0x13f | Erweiterter Funktionsparameterblock | ||||||||
| 320–321 | 0x140–0x141 | Modulhersteller | Siehe JEP-106 | |||||||
| 322 | 0x142 | Standort der Modulfertigung | Vom Hersteller definierter Fertigungsstandortcode | |||||||
| 323 | 0x143 | Modulherstellungsjahr | Dargestellt im binär codierten Dezimalsystem (BCD) | |||||||
| 324 | 0x144 | Modulfertigungswoche | Dargestellt im binär codierten Dezimalsystem (BCD) | |||||||
| 325–328 | 0x145–0x148 | Modulseriennummer | Vom Hersteller definiertes Format für eine eindeutige Seriennummer über verschiedene Teilenummern hinweg | |||||||
| 329–348 | 0x149–0x15c | Modul-Teilenummer | ASCII-Teilenummer, ungenutzte Ziffern sollten auf 0x20 gesetzt werden. | |||||||
| 349 | 0x15d | Modulrevisionscode | Vom Hersteller definierter Revisionscode | |||||||
| 350–351 | 0x15e–0x15f | DRAM-Hersteller-ID-Code | Siehe JEP-106 | |||||||
| 352 | 0x160 | DRAM-Stepping | Vom Hersteller festgelegte Schrittweite oder 0xFF, falls nicht verwendet | |||||||
| 353–381 | 0x161–0x17d | Herstellerspezifische Daten | ||||||||
| 382–383 | 0x17e–0x17f | Reserviert | ||||||||
DDR5 SDRAM
Vorläufige Tabelle für DDR5, basierend auf der JESD400-5-Spezifikation. [ 15 ]
DDR5 erweitert die SPD-Tabelle auf 1024 Byte. Die SPD von DDR5 nutzt den I3C- Bus.
| Byte | Bisschen | Anmerkungen | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Dezember | Verhexen | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| 0 | 0x00 | Anzahl der Bytes im SPD-Gerät | ||||||||
| 1 | 0x01 | SPD-Revision für Basiskonfigurationsparameter | ||||||||
| 2 | 0x02 | Schlüsselbyte / Hostbus-Befehlsprotokolltyp | ||||||||
| 3 | 0x03 | Schlüsselbyte / Modultyp | ||||||||
| 4 | 0x04 | Erste SDRAM-Dichte und -Gehäuse | ||||||||
| 5 | 0x05 | Erste SDRAM-Adressierung | ||||||||
| 6 | 0x06 | Erste SDRAM-E/A-Breite | ||||||||
| 7 | 0x07 | Erste SDRAM-Bankengruppen und Banken pro Bankengruppe | ||||||||
| 8 | 0x08 | Zweite SDRAM-Dichte und -Gehäuse | ||||||||
| 9 | 0x09 | Zweite SDRAM-Adressierung | ||||||||
| 10 | 0x0a | Zweite SDRAM-E/A-Breite | ||||||||
| 11 | 0x0b | Zweite SDRAM-Bankengruppen und Banken pro Bankengruppe | ||||||||
| 12 | 0x0c | SDRAM optionale Funktionen | ||||||||
| 13 | 0x0d | Thermische und Kühloptionen | ||||||||
| 14 | 0x0e | Reserviert | ||||||||
| 15 | 0x0f | Reserviert | ||||||||
| 16 | 0x10 | SDRAM-Nennspannung, VDD | ||||||||
EEPROM-Chip
Es gibt drei Hauptgenerationen von EEPROMs gemäß JEDEC-Standards: den 256 Byte großen EE1002 für DDR3 und ältere Speichertypen, den 512 Byte großen EE1004 für DDR4 und den 1024 Byte großen „Hub“-EEPROM SPD5118 für DDR5. Der EE1002 ist der Standard-EEPROM der 24er-Serie. Der EE1004 ist der neuere EEPROM der 34er-Serie und unterscheidet sich hauptsächlich durch einen „Seitenumschalt“-Befehl, der den Zugriff auf den gesamten Inhalt ermöglicht (neben anderen Unterschieden). Der SPD5118 ist grundlegend anders.
Es gibt auch thermische Sensorversionen von EE1002 und EE1004, aber sie sprechen das gleiche Protokoll für ihren SPD-Teil.
Adressierung
Wie bereits erwähnt, verwendet SPD drei Pins zur Adressierung von bis zu 8 separaten Modulen von 0 bis 7. Dies trifft nur auf EE1002 und EE1004 zu; SPD5118 verwendet einen einzelnen Pin mit Erdungswiderständen zur Angabe der Modulidentität von 0 bis 7. [ 16 ] : §2.7
Für EE1002 und EE1004 liegt der I²C - Adressbereich zwischen 0x50 und 0x57. Sie verwenden außerdem den Adressbereich 0x30 bis 0x37, sofern sie nicht schreibgeschützt sind (siehe unten). Bei Verwendung eines zugehörigen Temperatursensors wird der Adressbereich 0x18 bis 0x1F genutzt. Alle diese Werte sind 7-Bit-I²C - Adressen, die aus einem Gerätetyp-Identifikationscode-Präfix (DTIC) mit SA0-2 bestehen: Um beispielsweise (1100) aus Steckplatz 3 zu lesen 110 0011 = 0x33, wird dies mit einem abschließenden Lese-/Schreibbit (R/W) kombiniert, um den 8-Bit-Geräteauswahlcode (Device Select Code) zu bilden. [ 17 ]
Der 5118 enthält zahlreiche Geräte. Der Hub selbst befindet sich wie zuvor im Bereich 0x50–0x57. Die lokalen Geräte werden über den Hub mittels I²C adressiert . [ 16 ] : §2.7
Schreibschutz
Der EE1002 verfügt über drei Schreibschutzebenen. Die Hardwareebene ist in Form eines WC#-Pins realisiert; bei Low-Pegel werden alle Schreibvorgänge verhindert. Die Softwareebene besteht aus wenigen Befehlen. Um den Software-Schreibschutz zu ändern, muss am Adresspin SA0 die Spannung V<sub> HV</sub> (anstelle der üblichen Logikspannungen 0 oder 1) angelegt werden, wobei für die anderen SA-Pins bestimmte Kombinationen erforderlich sind. Dadurch wird keine Unterscheidung der Steckplatz-IDs mehr vorgenommen. [ 18 ] Die letzte Ebene ist die „permanente“ Ebene; ein Befehl kann gesendet werden, um die ersten 128 Bytes dauerhaft unveränderlich zu machen. [ 19 ]
Der EE1004 besitzt keinen WC#-Pin und keine „permanente“ Schicht. Er verfügt über vier Befehle, um den Schreibschutzstatus jedes 64-Byte-Slices des Bausteins separat festzulegen (mit unterschiedlichen Parametern) und einen Befehl, um alle gleichzeitig zu löschen. Für diese Befehle ist wie zuvor die Ansteuerung von V<sub> HV</sub> erforderlich . [ 20 ]
The SPD5118 has two modes of protection. In the normal operating mode with the address pin connected to GND via a resistor, protection can only be added to 64-byte slices, not removed. In the "tester" mode with the address pin connected to GND directly however, these bits can be freely removed.[16]: §2.7 (The hub itself also has a number of volatile and non-volatile registers independent of the EEPROM part. Some registers are "password-protected", being neither readable nor writable unless the correct value is filled to the "password registers".)
On many newer computers with DDR4 or DDR5 DIMM, the UEFI/BIOS will mark SPD EEPROM as read-only if the boot-time memory initialization is completed. This makes software like Thaiphoon Burner difficult to modify SPD EEPROM.
Extensions
The JEDEC standard only specifies some of the SPD bytes. The truly critical data (for up to DDR3) fits into the first 64 bytes,[6][7][21][22][23] while some of the remainder is earmarked for manufacturer identification. However, a 256-byte EEPROM is standardized (for up to DDR3). A number of uses have been made of the remaining space.
Memory generally comes with conservative timing recommendations in the SPD ROM, to ensure basic functionality on all systems. Enthusiasts often spend considerable time manually adjusting the memory timings for higher speed. Enabling special configurations such as Intel XMP or AMD EXPO often requires additional testing to ensure system stability[24] and may void CPU warranty if used out of the manufacturer’s published specifications.[25][26][27]
Enhanced Performance Profiles (EPP)
Enhanced Performance Profiles is an extension of SPD, developed by Nvidia and Corsair, which includes additional information for higher-performance operation of DDR2 SDRAM, including supply voltages and command timing information not included in the JEDEC SPD spec. The EPP information is stored in the same EEPROM, but in bytes 99–127, which are unused by standard DDR2 SPD.[28]
| Bytes | Size | Full profiles | Abbreviated profiles |
|---|---|---|---|
| 99–103 | 5 | EPP header | |
| 104–109 | 6 | Profile FP1 | Profile AP1 |
| 110–115 | 6 | Profile AP2 | |
| 116–121 | 6 | Profile FP2 | Profile AP3 |
| 122–127 | 6 | Profile AP4 | |
Die Parameter sind speziell auf den Speichercontroller der nForce 5- , nForce 6- und nForce 7 -Chipsätze abgestimmt. Nvidia empfiehlt die Unterstützung von EPP im BIOS für seine High-End-Mainboard-Chipsätze. Dies soll ein „ Übertakten mit einem Klick “ ermöglichen und so mit minimalem Aufwand eine höhere Leistung erzielen.
Nvidias Bezeichnung für EPP-Speicher, der hinsichtlich Leistung und Stabilität qualifiziert ist, lautet „SLI-fähiger Speicher“. [ 29 ] Der Begriff „SLI-fähiger Speicher“ hat zu Verwirrung geführt, da er nichts mit SLI-Video zu tun hat . EPP/SLI-Speicher kann mit einer einzelnen Grafikkarte (auch einer Nicht-Nvidia-Karte) verwendet werden, und ein SLI-Videosystem mit mehreren Grafikkarten ist auch ohne EPP/SLI-Speicher möglich.
Eine erweiterte Version, EPP 2.0, unterstützt auch DDR3-Speicher. [ 30 ]
Intel Extreme Memory Profile (XMP)
Eine ähnliche, von Intel entwickelte JEDEC-SPD-Erweiterung wurde für DDR3-SDRAM -DIMMs entwickelt und später auch in DDR4- und DDR5-SDRAM verwendet . XMP nutzt die von JEDEC nicht zugewiesenen Bytes 176–255, um höherwertige Speichertimings zu kodieren. [ 31 ]
Später entwickelte AMD AMP, eine Technologie, die XMP entspricht, für seine „Radeon Memory“-Speichermodule, die für AMD-Plattformen optimiert sind. [ 32 ] [ 33 ] Darüber hinaus implementierten Mainboard-Hersteller eigene Technologien, um ihren AMD-basierten Mainboards das Auslesen von XMP-Profilen zu ermöglichen: MSI bietet A-XMP, [ 34 ] ASUS DOCP (Direct Over Clock Profile) und Gigabyte EOCP (Extended Over Clock Profile). [ 35 ]
DDR3 XMP
| DDR3 Bytes | Größe | Verwenden |
|---|---|---|
| 176–184 | 9 | XMP-Header |
| 185–219 | 35 | XMP-Profil 1 („Enthusiasten“-Einstellungen) |
| 220–254 | 35 | XMP-Profil 2 ("extreme" Einstellungen) |
Der Header enthält die folgenden Daten. Am wichtigsten ist der Wert für die „mittlere Zeitbasis“ MTB, angegeben als rationale Zahl in Nanosekunden (gängige Werte sind 1/8, 1/12 und 1/16 ns). Viele weitere Zeitwerte werden als ganzzahlige Anzahl von MTB-Einheiten ausgedrückt.
Ebenfalls im Header enthalten ist die Anzahl der DIMMs pro Speicherkanal, die das Profil unterstützen soll; die Einbeziehung von mehr DIMMs kann zu Problemen führen.
| DDR3 Byte | Bits | Verwenden |
|---|---|---|
| 176 | 7:0 | XMP- Magic-Number -Byte 1 0x0C |
| 177 | 7:0 | XMP-Magic-Number-Byte 2 0x4A |
| 178 | 0 | Profil 1 aktiviert (bei 0 deaktiviert) |
| 1 | Profil 2 aktiviert | |
| 3:2 | Profil 1 DIMMs pro Kanal (1–4 als 0–3 kodiert) | |
| 5:4 | Profil 2 DIMMs pro Kanal | |
| 7:6 | Reserviert | |
| 179 | 3:0 | XMP-Nebenversionsnummer (x.0 oder x.1) |
| 7:4 | XMP-Hauptversionsnummer (0.x oder 1.x) | |
| 180 | 7:0 | Dividende mit mittlerem Zeithorizont für Profil 1 |
| 181 | 7:0 | Mittlerer Zeitbasisdivisor für Profil 1 (MTB = Dividend/Divisor ns) |
| 182 | 7:0 | Dividende mit mittlerer Zeitbasis für Profil 2 (z. B. 8) |
| 183 | 7:0 | Mittlerer Zeitbasisdivisor für Profil 2 (z. B. 1, was MTB = 1/8 ns ergibt) |
| 184 | 7:0 | Reserviert |
| DDR3 Byte 1 | DDR3 Byte 2 | Bits | Verwenden |
|---|---|---|---|
| 185 | 220 | 0 | Modul Vdd Spannung Zwanzigstel (0,00 oder 0,05) |
| 4:1 | Modul Vdd Spannung Zehntel (0,0–0,9) | ||
| 6:5 | Modul Vdd Spannungseinheiten (0–2) | ||
| 7 | Reserviert | ||
| 186 | 221 | 7:0 | Minimale SDRAM-Taktperiode t CK min (MTB-Einheiten) |
| 187 | 222 | 7:0 | Minimale CAS-Latenzzeit t AA min (MTB-Einheiten) |
| 188 | 223 | 7:0 | Unterstützte CAS-Latenzen (Bitmap, 4–11 kodiert als Bits 0–7) |
| 189 | 224 | 6:0 | Unterstützte CAS-Latenzen (Bitmap, 12–18 kodiert als Bits 0–6) |
| 7 | Reserviert | ||
| 190 | 225 | 7:0 | Minimale CAS-Schreiblatenzzeit t CWL min (MTB-Einheiten) |
| 191 | 226 | 7:0 | Minimale Zeilenvorladeverzögerungszeit t RP min (MTB-Einheiten) |
| 192 | 227 | 7:0 | Minimale Verzögerungszeit von RAS zu CAS t RCD min (MTB-Einheiten) |
| 193 | 228 | 7:0 | Minimale Schreibwiederherstellungszeit t WR min (MTB-Einheiten) |
| 194 | 229 | 3:0 | t RAS min upper nibble (bits 11:8) |
| 7:4 | t RC min upper nibble (bits 11:8) | ||
| 195 | 230 | 7:0 | Minimale Verzögerungszeit zwischen aktiver und Vorladung t RAS min Bits 7:0 (MTB-Einheiten) |
| 196 | 231 | 7:0 | Minimale Verzögerungszeit zwischen aktivem und aktivem/Aktualisieren t RC min Bits 7:0 (MTB-Einheiten) |
| 197 | 232 | 7:0 | Maximales durchschnittliches Aktualisierungsintervall t REFIlsbyte (MTB-Einheiten) |
| 198 | 233 | 7:0 | Maximales durchschnittliches Aktualisierungsintervall t REFI msbyte (MTB-Einheiten) |
| 199 | 234 | 7:0 | Minimale Aktualisierungs-Wiederherstellungsverzögerungszeit t RFC min lsbyte (MTB-Einheiten) |
| 200 | 235 | 7:0 | Minimale Aktualisierungsverzögerungszeit t RFC min msbyte (MTB-Einheiten) |
| 201 | 236 | 7:0 | Minimale interne Leseverzögerungszeit für den Vorladebefehl t RTP min (MTB-Einheiten) |
| 202 | 237 | 7:0 | Minimale Verzögerungszeit zwischen aktiven Zeilen t RRD min (MTB-Einheiten) |
| 203 | 238 | 3:0 | t FAW min upper nibble (bits 11:8) |
| 7:4 | Reserviert | ||
| 204 | 239 | 7:0 | Mindestens vier Aktivierungsfenster-Verzögerungszeiten t FAW min Bits 7:0 (MTB-Einheiten) |
| 205 | 240 | 7:0 | Minimale interne Verzögerungszeit zwischen Schreib- und Lesebefehl t WTR min (MTB-Einheiten) |
| 206 | 241 | 2:0 | Anpassung der Bearbeitungszeit von Schreib- und Lesebefehlen (0–7 Taktzyklen) |
| 3 | Schreiben Sie, um das Vorzeichen für die Drehrichtungsanpassung des Befehls zu lesen (0=Anziehen, 1=Ausschieben) | ||
| 6:4 | Anpassung der Bearbeitungszeit für Lese- und Schreibbefehle (0–7 Taktzyklen) | ||
| 7 | Lesen Sie, um das Befehlsdrehungseinstellungszeichen zu schreiben (0=einziehen, 1=ausschieben) | ||
| 207 | 242 | 2:0 | Anpassung der Bearbeitungszeit für aufeinanderfolgende Befehle (0–7 Taktzyklen) |
| 3 | Einstellschild für die Drehung (0 = Einziehen, 1 = Ausschieben) | ||
| 7:4 | Reserviert | ||
| 208 | 243 | 7:0 | System-CMD-Ratenmodus. 0 = JTAG-Standard, ansonsten in speziellen Einheiten von MTB × t CK /ns. Beispiel: Bei MTB = 1/8 ns erfolgt die Angabe in Einheiten von 1/8 Taktzyklus. |
| 209 | 244 | 7:0 | Leistung der automatischen Selbstaktualisierung des SDRAM. Laut Standardversion 1.1 ist die Dokumentation noch in Arbeit . |
| 210–218 | 245–253 | 7:0 | Reserviert |
| 219 | 254 | 7:0 | Reservierter , herstellerspezifischer Persönlichkeitscode. |
AMD Erweiterte Profile für Übertaktung (EXPO)
AMDs Extended Profiles for Overclocking (EXPO) ist eine JEDEC SPD-Erweiterung für DDR5 -DIMMs, die mit einem Klick ein automatisches Übertaktungsprofil auf den Arbeitsspeicher anwendet. [ 37 ] [ 38 ] AMD EXPO-zertifizierte DIMMs bieten optimierte Timings, die für Zen-4 -Prozessoren zertifiziert sind. [ 39 ] Im Gegensatz zu Intels geschlossenem XMP-Standard ist EXPO offen und lizenzgebührenfrei . [ 38 ] Er kann auf Intel-Plattformen verwendet werden. [ 38 ] Zum Marktstart im September 2022 sind 15 Partner-RAM-Kits mit EXPO-Zertifizierung und Geschwindigkeiten von bis zu 6400 MT/s erhältlich. [ 40 ]
EXPO Ultra Low Latency (ULL)
Auf der Computex 2026 kündigte AMD EXPO Ultra Low Latency (EXPO ULL) an, eine Erweiterung von EXPO, die die Angabe zusätzlicher Sub-Timings ermöglicht, darunter t<sub> REFI</sub> (Refresh-Intervall), t<sub> RRD_S </sub> (RAS-zu-RAS-Verzögerung, kurz) und t <sub>WR</sub> (Schreibwiederherstellungszeit), sowie die Angabe der V<sub> DDP </sub>-Spannung. [ 41 ] [ 42 ] EXPO ULL ist mit bestehenden EXPO-kompatiblen Mainboards kompatibel, allerdings ist wahrscheinlich ein BIOS-Update erforderlich. [ 42 ] Für DDR5-6000 gab AMD eine Steigerung der durchschnittlichen FPS um 4 % und der Low-FPS um 1 % in 30 getesteten Spielen auf einem Ryzen 7 9700X Prozessor im Vergleich zu EXPO-DIMMs ohne ULL an. [ 42 ] AMD behauptete, dass EXPO-ULL-RAM-Kits „praktisch zum gleichen Preis“ wie EXPO-Kits ohne ULL angeboten würden. [ 42 ] G.Skill hingegen erwartete höhere Preise und begründete dies mit der Notwendigkeit einer strengeren Kategorisierung. [ 43 ]
Herstellerspezifischer Speicher
Ein häufiger Missbrauch besteht darin, Informationen in bestimmte Speicherbereiche zu schreiben, um herstellerspezifische Speichermodule an ein bestimmtes System zu binden. Fujitsu Technology Solutions ist dafür bekannt, dies zu tun. Das Hinzufügen anderer Speichermodule zum System führt in der Regel zu einer Ablehnung oder anderen Gegenmaßnahmen (wie dem Drücken von F1 bei jedem Systemstart).
02 0E 00 01-00 00 00 EF-02 03 19 4D-BC 47 C3 46 ...........MGF 53 43 00 04-EF 4F 8D 1F-00 01 70 00-01 03 C1 CF SC...O....p.....
Dies ist die Ausgabe eines 512-MB-Speichermoduls von Micron Technologies, das für Fujitsu-Siemens Computers gebrandet wurde. Beachten Sie die Zeichenfolge „FSC“ (46 53 43). Das System-BIOS lehnt Speichermodule ab, die diese Information nicht enthalten (ab Offset 128h).
Einige Packard Bell AMD-Laptops verwenden ebenfalls diese Methode. In diesem Fall können die Symptome variieren, es kann aber zu einem blinkenden Cursor anstelle eines Pieptonmusters führen. Dies kann übrigens auch ein Anzeichen für eine Beschädigung des BIOS sein. [ 44 ] Auch ein Upgrade von 2 GB auf 4 GB kann Probleme verursachen.
Informationen zur Lese- und Schreibfähigkeit
Die Hersteller von Speichermodulen schreiben die SPD-Informationen in den EEPROM des Moduls. Das BIOS des Motherboards liest die SPD-Informationen, um den Speichercontroller zu konfigurieren.
An Bord des SMBus
Der SMBus- Controller des Motherboards ermöglicht den direkten Zugriff auf SPDs (Single-Point-Distribution) eines angeschlossenen Speichermoduls. Einige Motherboard-Chipsätze erlauben die Auswahl eines Schreibschutzes für SPDs. Um diesen Zugriff zu ermöglichen, muss das Betriebssystem SMBus unterstützen, über geeignete Treiber für die EEPROMs verfügen und der SMBus des Motherboards muss mit den SPD-EEPROMs verbunden sein.
- (R) Unter Linux und FreeBSD dekodiert und gibt das von lm_sensors bereitgestellte Benutzerprogramm JEDEC-Standardinformationen zu jedem Speicher mit SPD-Informationen im Computer aus. Für SPD vor DDR4 wird entweder der Treiber „eeprom“ oder „at24“ (EEPROM der 24er-Serie) benötigt. Für DDR4 SPD wird entweder der Treiber „eeprom“ oder der Treiber „ee1004“ (EEPROMs der 34er-Serie gemäß JEDEC EE1004) benötigt. [ 45 ] [ 46 ] Auf älteren Linux-Distributionen war decode-dimms.pl Teil von lm_sensors .
decode-dimmsi2c-tools- (W) Das
eeprogTool von i2c-tools ermöglicht das Schreiben auf EEPROMs der Serie 24, d.h. bis zu DDR3.
- (W) Das
- (RW) Unter Linux und FreeBSD liest und beschreibt das Python-Skript
spd-eepromEEPROMs der Serien AT24 und EE1004. Es bietet ausschließlich rohes Lesen und Schreiben von SMBus-Daten, jedoch keine Dekodierung. Die Treiberanforderungen sind dieselben wie in [ 47 ]i2c-tools. - (R) Bei OpenBSD 4.3+ und NetBSD 5.0+ greift der spdmem(4) -Treiber über den SMBus auf das EEPROM zu, um Informationen über Speichermodule bereitzustellen (nur den JEDEC-Standardteil).
- (R) Coreboot liest und verwendet SPD-Informationen, um alle Speichercontroller eines Computers hinsichtlich Timing, Größe und anderer Eigenschaften zu initialisieren. Coreboot ist als Firmware des Computers konzipiert und ersetzt das BIOS (oder ein UEFI -fähiges BIOS).
- (R) HWiNFO , CPU-Z und Speccy sind Microsoft Windows- Programme, die SPD-Informationen, einschließlich XMP und anderer Erweiterungen, lesen und anzeigen. [ 48 ]
- (RW) Thaiphoon Burner ( Abandonware ) ist ein Windows-Programm, das das Lesen und Schreiben von SPD-Daten von Speichermodulen bis zu DDR4 (einschließlich XMP) ermöglicht. SPDtool ist eine weitere Abandonware mit ähnlichem Zweck.
Weitere SMBus-Funktionen
Temperatursensor
JEDEC definiert Standards für SMBus-adressierbare Temperatursensoren auf Speichermodulen. TS3000 ist der unabhängige Sensor für Speichermodule bis DDR3. TSE2002 ist der kombinierte SPD- und Temperatursensor für Speichermodule bis DDR3. TSE2004 ist der kombinierte SPD- und Temperatursensor für DDR4. SPD5118 ist der „Hub“, der Temperatur- und SPD-Sensoren für DDR5 integriert.
RGB-LED-Steuerung
Einige Speichermodule (insbesondere in Gaming-PCs ) [ 49 ] unterstützen RGB-LEDs, die über proprietäre SMBus-Befehle gesteuert werden. Dies ermöglicht die Steuerung der LED-Farbe ohne zusätzliche Anschlüsse und Kabel. Windows-Kernel-Treiber verschiedener Hersteller, die zur Steuerung der LEDs benötigt werden, wurden allein im Jahr 2020 mehrfach ausgenutzt, um Zugriffe zu erlangen, die vom vollständigen Kernel-Speicherzugriff bis hin zur Steuerung von MSR und I/O-Ports reichen. [ 50 ] [ 51 ] [ 52 ]
SMBIOS
Das SMBIOS übermittelt Daten über den Arbeitsspeicher vom BIOS an den Computer. Diese Informationen werden vom Programm dmidecode abgerufen, das unter Linux , FreeBSD , NetBSD , OpenBSD , BeOS , Cygwin und Solaris läuft . Es greift jedoch nicht auf die SPD-Informationen, sondern auf die SMBIOS-Informationen zu, weshalb die Daten möglicherweise unvollständig oder fehlerhaft sind. [ 53 ]
Ex situ SMBus
Durch Ausbau des EEPROM-Chips und dessen Verpflanzung an eine andere Stelle lässt sich ein direkterer SMBus-Zugriff erzielen. Dies trägt dazu bei, Störungen durch Chipsätze zu beseitigen.
Laptops und Webcams
Eine eher ungewöhnliche Verwendung alter Laptops ist die als universelle SMBus-Lesegeräte. Der interne EEPROM des Moduls kann deaktiviert werden, sobald das BIOS ihn ausgelesen hat, sodass der Bus frei zugänglich ist. Dazu werden die A0- und A1-Leitungen auf Low-Pegel gezogen, wodurch der interne Speicher abgeschaltet wird und das externe Gerät auf den SMBus zugreifen kann. Anschließend kann eine angepasste Linux-Distribution oder eine DOS-Anwendung auf das externe Gerät zugreifen. Ein häufiges Anwendungsbeispiel ist das Auslesen von Daten aus den Speicherchips von LCD-Panels, um ein universelles Panel in einen proprietären Laptop einzubauen.
Eine verwandte Technik besteht darin, den Chip von Webcams, die häufig in Laptops verbaut sind, neu zu beschreiben, da die Busgeschwindigkeit deutlich höher ist. Sie können sogar so modifiziert werden, dass Chips der 25er-Serie, die üblicherweise zur Speicherung des UEFI-ROMs eines Motherboards verwendet werden, zum Schutz vor Chipausfällen gelesen und beschrieben werden können.
Bei einigen Chips ist es außerdem ratsam, separate Schreibschutzleitungen zu verwenden, damit die Onboard-Chips während der Neuprogrammierung nicht gelöscht werden.
Probleme bei der Chip-Generation
Dies funktioniert leider nur mit DDR3 und älteren Speichergenerationen, da DDR4 einen anderen Chip (Serie 34) verwendet, um den 512 Byte großen SPD (im Gegensatz zu den 256 Byte der früheren Generationen) zu unterstützen. Diese Chipschnittstelle (EE1004/TSE2004) teilt ihren Speicher in zwei Seiten auf und erfordert einen Seitenwechsel, um den gesamten Chip zu lesen oder zu beschreiben.
Manche Chipsätze können das Auslesen von EEPROM-Chips der 34er-Serie nicht korrekt ausführen, sodass das Auslesen unter Umständen fehlschlägt. Die Software gibt dann möglicherweise die Meldung „Inkompatibler SMBus-Treiber?“ zurück.
DDR5 verwendet ein noch komplexeres Design, den SPD5118 "Hub", der die Kapazität nochmals verdoppelt.
Bei älteren Geräten
Ältere Geräte benötigen teilweise SIMMs mit paralleler Anwesenheitserkennung (häufiger einfach Anwesenheitserkennung oder PD genannt). Einige dieser Geräte, insbesondere IBM- Computer und Hewlett-Packard LaserJet -Drucker, verwenden nicht standardisierte PD-Codierung.
Siehe auch
Referenzen
- ^ Thomas P. Koenig; Nathan John (3. Februar 1997), „Serielle Anwesenheitserkennung im Rampenlicht“ , Electronic News , 43 (2153)
- ^ Dean Kent (24. Oktober 1998). „Ram Guide“ . Tom's Hardware .
- ^ Shimpi, Anand Lal. „PC100 SDRAM: Eine Einführung“ . www.anandtech.com . Archiviert vom Original am 24. Mai 2011.
- ^ Anwendungshinweis INN-8668-APN3: SDRAM SPD-Datenstandards , memorytesters.com
- ^ PC SDRAM Serial Presence Detect (SPD) Specification (PDF) , 1.2A, Dezember 1997, S. 28, archiviert vom Original (PDF) am 31. Mai 2014 , abgerufen am 30. Mai 2014
- ^ a b JEDEC-Standard 21-C Abschnitt 4.1.2.4 „SPDs für DDR SDRAM“
- ^ a b JEDEC-Standard 21-C Abschnitt 4.1.2.10 „Spezifische SPDs für DDR2 SDRAM“
- ^ „Understanding DDR3 Serial Presence Detect (SPD) Table“ . Archiviert vom Original am 22. Dezember 2015. Abgerufen am 29. Mai 2010 .
- ^ JESD21-C Anhang K: Serielle Anwesenheitserkennung für DDR3-SDRAM-Module , Version 4, SPD Revision 1.1
- ^ JESD21-C Anhang K: Serielle Anwesenheitserkennung für DDR3-SDRAM-Module , Version 6, SPD Revision 1.3
- ^ Delvare, Jean. "[PATCH] eeprom: Neuer ee1004-Treiber für DDR4-Speicher" . LKML . Abgerufen am 7. November 2019 .
- ^ a b JEDEC. „Anhang L: Serielle Anwesenheitserkennung (SPD) für DDR4-SDRAM-Module“ (PDF) . Archiviert vom Original am 21. Februar 2020.
- ^ JEDEC. „EE1004- und TSE2004-Gerätespezifikation (Entwurf)“ (PDF) . Archiviert vom Original am 9. Juli 2017. Abgerufen am 7. November 2019 .
- ^ JESD21-C Anhang L: Serielle Anwesenheitserkennung für DDR4-SDRAM-Module , Version 5
- ^ „JESD400-5B(JESD400-5B)“ . jedec . 2023 . Abgerufen am 31. Dezember 2023 .
- ^ a b c SPD5118 Hub und serielles Präsenzerkennungsgerät Standard JESD300-5B.01 Version 1.5.1 Mai 2023
- ^ JEDEC-Standard 21-C Abschnitt 4.1.4 „Definition des TSE2002av Serial Presence Detect (SPD) EEPROM mit Temperatursensor (TS) für Speichermodulanwendungen“
- ^ „TN-04-42: Schreibschutz für serielle Anwesenheitserkennung von Speichermodulen“ (PDF) . Micron .
- ^ JEDEC-Standard Nr. 21-C 4.1.3 Definition der EE1002- und EE1002A-EEPROMs zur seriellen Anwesenheitserkennung (SPD) 4_01_03R19-01.pdf
- ^ JEDEC-Standard Nr. 21-C 4.1.6 Definitionen des EE1004-v 4-Kbit-Seriellen Präsenzerkennungs-EEPROMs (SPD) und des TSE2004av 4-Kbit-SPD-EEPROMs mit Temperatursensor (TS) für Speichermodulanwendungen 4_01_06R26-01-1.pdf
- ^ JEDEC-Standard 21-C Abschnitt 4.1.2.11 „Serielle Anwesenheitserkennung (SPD) für DDR3-SDRAM-Module“
- ^ JEDEC-Standard 21-C Abschnitt 4.1.2 „SERIAL PRESENCE DETECT STANDARD, General Standard“
- ^ JEDEC-Standard 21-C Abschnitt 4.1.2.5 „Spezifische PDs für synchrones DRAM (SDRAM)“
- ^ „Was ist XMP und warum ist es für den Arbeitsspeicher wichtig?“ How-To Geek. 21. September 2023. Abgerufen am 19. Mai 2025 .
- ^ „Warum XMP und Speicherübertaktung in Ordnung sind, auch wenn dadurch die Garantie erlischt“ . PCWorld. 16. März 2021. Abgerufen am 19. Mai 2025 .
- ^ „AMD Ryzen 7000 brennt durch: EXPO- und SoC-Spannungen sind schuld (AMD reagiert)“ . Tom's Hardware. 25. April 2023. Abgerufen am 19. Mai 2025 .
- ^ „Intel® Extreme Memory Profile (Intel® XMP)“ . Intel . Abgerufen am 19. Mai 2025. Änderungen der
Taktfrequenz oder Spannung können den Prozessor und andere Systemkomponenten beschädigen oder deren Lebensdauer verkürzen sowie die Systemstabilität und -leistung beeinträchtigen. Die Produktgarantie erlischt möglicherweise, wenn der Prozessor außerhalb seiner Spezifikationen betrieben wird.
- ^ DDR2 UDIMM Enhanced Performance Profiles Design Specification (PDF) , Nvidia , 12. Mai 2006 , abgerufen am 5. Mai 2009
- ^ „Technische Kurzbeschreibung – SLI-fähiger Speicher mit erweiterten Leistungsprofilen: Leistungssteigerung mit einem Klick – Problemlos“ (PDF) . Archiviert vom Original (PDF) am 7. Dezember 2008.
- ^ Verbesserte Leistungsprofile 2.0 (S. 2–3)
- ^ „Was ist Intel Extreme Memory Profile (Intel XMP)?“ . Intel . Abgerufen am 26. September 2022 .
- ^ „Memory Profile Technology – AMP up your RAM“ . AMD . 2012. Abgerufen am 8. Januar 2018 .
- ^ Martin, Ryan (23. Juli 2012). „AMD stellt seinen XMP-äquivalenten AMP vor – eTeknix“ . eTeknix . Abgerufen am 8. Januar 2018 .
- „ MSI ist die weltweit erste Marke, die A-XMP auf Ryzen für beste DDR4-Leistung aktiviert und neue Modelle auf den Markt bringt . “ MSI . 21. März 2017. Abgerufen am 8. Januar 2018 .
- ^ Tradesman1 (26. August 2016). „Was bedeuten XMP, DOCP, EOCP? – Gelöst – Speicher“ . Tom’s Hardware Forum . Abgerufen am 8. Januar 2018 .
{{cite web}}: CS1 Wartung: numerische Namen: Autorenliste ( Link ) - ^ a b c „Intel Extreme Memory Profile (XMP) Specification, Rev 1.1“ (PDF) . Intel . Oktober 2007. Archiviert vom Original am 6. März 2012. Abgerufen am 25. Mai 2010 .
- ^ „AMD Extended Profiles for Overclocking“ . AMD . Abgerufen am 26. September 2022 .
- ^ a b c Roach, Jacob (6. September 2022). „Was ist die AMD EXPO und sollte mein DDR5-Speicher sie unterstützen?“ . Digital Trends . Abgerufen am 26. September 2022 .
- ^ Bonshor, Gavin (30. August 2022). „AMD EXPO Speichertechnologie: Übertaktungsprofile mit einem Klick für Ryzen 7000“ . AnandTech . Archiviert vom Original am 30. August 2022. Abgerufen am 26. September 2022 .
- ^ „AMD kündigt EXPO-Technologie für DDR5-Speicherübertaktung an“ . VideoCardz . 30. August 2022. Abgerufen am 26. September 2022 .
- AMD -Speicher mit extrem niedriger Latenz steigert die FPS in Spielen, G.Skill bestätigt präzisere Timings! Hardware Unboxed (Video) . Taipeh: Hardware Unboxed. 6. Juni 2026. Die Veranstaltung fand um 5:33 Uhr statt . Abgerufen am 6. Juni 2026 – via YouTube .
- ^ a b c d Roach, Jake (3. Juni 2026). „AMD gibt an, dass der neue EXPO ‚Ultra Low Latency‘ DDR5-Speicher ‚praktisch zum gleichen Preis‘ wie aktuelle Kits sein sollte – die Funktion wird auf bestehenden Chipsätzen funktionieren, erfordert aber neue DIMMs“ . Tom’s Hardware . Abgerufen am 6. Juni 2026 .
- ^ Kampman, Jeffrey (6. Juni 2026). „G.Skill erklärt, wie AMD EXPO ULL zusätzliche Leistung freisetzt – erweiterte Profile ermöglichen Speicherherstellern erstmals die Integration von Subtiming-Optimierungen“ . Tom's Hardware . Abgerufen am 6. Juni 2026 .
- ^ „Packard Bell LJ65 RAM-Upgrade“ . Tom's Hardware Forum . 9. Januar 2014.
- ^ „decode-dimms(1)“ . Debian-Manpage . Abgerufen am 16. Dezember 2020 .
- ^ "decode-dimms" . www.freebsd.org . Abgerufen am 24. Januar 2021 .
- ^ Chen, Jack (25. Mai 2025). "redchenjs/spd-eeprom" . GitHub .
- ^ "HWiNFO - Professionelle Systeminformationen und Diagnose" . HWiNFO .
- ^ „VENGEANCE RGB PRO Serie DDR4-Speicher | Desktop-Speicher | CORSAIR“ . www.corsair.com . Abgerufen am 26. November 2020 .
- ^ ActiveCyber. Lokale Rechteausweitung im Viper RGB-Treiber (Technischer Bericht). CVE - 2019-18845 – via MITRE Corporation.
- ^ ActiveCyber. Lokale Rechteausweitung im CORSAIR iCUE-Treiber (CVE-2020-8808) (Technischer Bericht). CVE - 2020-8808 – via MITRE Corporation.
- ^ ActiveCyber. ACTIVE-2020-003: Lokale Rechteausweitung im Trident Z Lighting Control Driver (Technischer Bericht). CVE - 2020-12446 – via MITRE Corporation.
- ^ „dmidecode: Wozu ist es gut?“ . Linux.com | Die Quelle für Linux-Informationen . 29. November 2004.
