In der Datenverarbeitung ist Serielle Präsenzerkennung ( SPD ) eine standardisierte Methode, um automatisch auf Informationen über ein Speichermodul zuzugreifen. Frühere 72-Pin-SIMMs enthielten fünf Pins, die fünf Bits von (PPD) -Daten (19459006) zur Verfügung stellten, aber der 168-Pin-DIMM-Standard wurde in eine serielle Präsenzerkennung geändert, um viel mehr Informationen zu codieren. [1]
When Wenn ein normaler moderner Computer eingeschaltet ist, wird zunächst ein Power-On-Self-Test (POST) durchgeführt. Seit etwa Mitte der 1990er Jahre umfasst dieser Prozess die automatische Konfiguration der derzeit vorhandenen Hardware. SPD ist eine Speicherhardware-Funktion, mit der der Computer wissen kann, welcher Speicher vorhanden ist und welche Zeitpunkte für den Zugriff auf den Speicher verwendet werden.
Einige Computer passen sich vollständig automatisch an Hardwareänderungen an. In den meisten Fällen gibt es ein spezielles optionales Verfahren für den Zugriff auf die BIOS-Parameter, um Einstellungen anzuzeigen und möglicherweise Änderungen daran vorzunehmen. Sie können möglicherweise steuern, wie der Computer die Speicher-SPD-Daten verwendet, um Einstellungen zu wählen, Speicherzeiten gezielt zu ändern oder die SPD-Daten möglicherweise vollständig zu überschreiben (siehe Übertakten).
Gespeicherte Informationen [ edit ]
In diesem Abschnitt fehlen Informationen zu DDR4 (Anhang L, 4 Blöcke * ≥128 bytes) . Januar 2019 ) ( |
Für ein Speichermodul zur Unterstützung von SPD erfordern die JEDEC-Standards, dass bestimmte Parameter in den unteren 128 Bytes eines EEPROM liegen auf dem Speichermodul. Diese Bytes enthalten Timing-Parameter, Hersteller, Seriennummer und andere nützliche Informationen zum Modul. Geräte, die den Speicher nutzen, ermitteln automatisch die Schlüsselparameter des Moduls, indem sie diese Informationen lesen. Beispielsweise können die SPD-Daten auf einem SDRAM-Modul Informationen über die CAS-Latenzzeit enthalten, sodass das System diese ohne Eingreifen des Benutzers korrekt einstellen kann.
Der Zugriff auf das SPD-EEPROM erfolgt mit SMBus, einer Variante des I²C-Protokolls. Dies reduziert die Anzahl der Kommunikations-Pins auf dem Modul auf nur zwei: ein Taktsignal und ein Datensignal. Das EEPROM hat Masse-Pins mit dem RAM, hat einen eigenen Power-Pin und verfügt über drei zusätzliche Pins (SA0–2) zur Identifizierung des Steckplatzes, mit denen dem EEPROM eine eindeutige Adresse im Bereich 0x50–0x57 zugewiesen wird. Die Kommunikationsleitungen können nicht nur von acht Speichermodulen gemeinsam genutzt werden, sondern auf Motherboards wird derselbe SMBus häufig für Systemzustandsüberwachungsaufgaben wie das Lesen von Spannungsversorgungen, CPU-Temperaturen und Lüftergeschwindigkeiten verwendet.
Vor der SPD wurden Speicherchips mit paralleler Präsenzerkennung (PPD) gesichtet. PPD verwendete einen separaten Pin für jedes Informationsbit, was bedeutete, dass aufgrund des begrenzten Platzes für Pins nur die Geschwindigkeit und Dichte des Speichermoduls gespeichert werden konnte.
(SPD-EEPROMs reagieren auch auf die I²C-Adressen 0x30-0x37, wenn sie nicht schreibgeschützt sind, und eine Erweiterung verwendet die Adressen 0x18-0x1F, um auf einen optionalen integrierten Temperatursensor zuzugreifen. [2])
SDR SDRAM [ edit ]
Die erste SPD-Spezifikation wurde von veröffentlicht JEDEC und von Intel im Rahmen seiner PC100-Speicherspezifikation verschärft. [3] Die meisten Werte werden in binär codierter Dezimalform angegeben. Das höchstwertige Halbbyte kann Werte zwischen 10 und 15 enthalten und reicht in manchen Fällen auch höher aus. In solchen Fällen werden stattdessen die Kodierungen für 1, 2 und 3 zum Kodieren von 16, 17 und 18 verwendet. Ein höchstwertiges Halbbyte von 0 ist reserviert, um "undefiniert" zu repräsentieren.
Das SPD-ROM definiert bis zu drei DRAM-Timings für drei durch gesetzte Bits in Byte 18 festgelegte CAS-Latenzzeiten. Zuerst die höchste CAS-Latenzzeit (schnellster Takt), dann zwei niedrigere CAS-Latenzzeiten mit fortschreitend niedrigeren Taktgeschwindigkeiten.
Byte | Bit | Hinweise | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
(dec.) | (Hex.) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
0 | 0x00 | Anzahl der vorhandenen Bytes | Typischerweise 128 | ||||||||
1 | 0x01 | log 2 (Größe des SPD-EEPROM) | Typisch 8 (256 Bytes) | ||||||||
2 | 0x02 | Grundspeichertyp (4: SPD-SDRAM) | |||||||||
3 | 0x03 | Reihenbits der Bank 2 (0–15) | Reihenbits der Bank 1 (1–15) | Bank 2 ist 0, wenn sie mit Bank 1 identisch ist | |||||||
4 | 0x04 | Spalten-Adressbits der Bank 2 (0–15) | Spalten-Adressbits der Bank 1 (1–15) | Bank 2 ist 0, wenn sie mit Bank 1 identisch ist | |||||||
5 | 0x05 | Anzahl der RAM-Bänke auf dem Modul (1–255) | Üblicherweise 1 oder 2 | ||||||||
6 | 0x06 | Niedriges Byte für Moduldatenbreite | Üblicherweise 64 oder 72 für ECC-DIMMs | ||||||||
7 | 0x07 | Hochbyte für Moduldatenbreite | 0, es sei denn, die Breite ist ≥ 256 Bits | ||||||||
8 | 0x08 | Schnittstellenspannungspegel dieser Baugruppe (nicht identisch mit V cc Versorgungsspannung) (0–4) | Decodiert durch Tabellensuche | ||||||||
9 | 0x09 | Nanosekunden (0–15) | Zehntel von Nanosekunden (0.0–0.9) | Taktzykluszeit bei höchster CAS-Latenz | |||||||
10 | 0x0a | Nanosekunden (0-15) | Zehntel Nanosekunden (0.0-0.9) | SDRAM-Zugriffszeit von der Uhr (t AC ) | |||||||
11 | 0x0b | DIMM-Konfigurationstyp (0–2): Nicht-ECC, Parität, ECC | Tabellensuche | ||||||||
12 | 0x0c | Self | Aktualisierungszeitraum (0–5): 64, 256, 128, 32, 16, 8 kHz | Aktualisierungsanforderungen | |||||||
13 | 0x0d | Bank 2 2 × | Primäre SDRAM-Breite der Bank 1 (1–127, normalerweise 8) | Breite der SDRAM-Vorrichtungen der Bank 1. Bank 2 kann dieselbe Breite haben oder 2 × Breite, wenn Bit 7 gesetzt ist. | |||||||
14 | 0x0e | Bank 2 2 × | Bank 1 ECC SDRAM Breite (0–127) | Breite von Bank 1 ECC / Parity-SDRAM-Geräten. Bank 2 kann dieselbe Breite haben oder 2 × Breite, wenn Bit 7 gesetzt ist. | |||||||
15 | 0x0f | Taktverzögerung für zufällige Spaltenlesevorgänge | Typisch 1 | ||||||||
16 | 0x10 | Seite | - | - | - | 8 | 4 | 2 | 1 | 1 | Unterstützte Berstlängen (Bitmap) |
17 | 0x11 | Bänke pro SDRAM-Gerät (1–255) | Typisch 2 oder 4 | ||||||||
18 | 0x12 | - | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 1 | [1945655] CAS Unterstützte Latenzen (Bitmap) |
19 | 0x13 | - | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 0 | Unterstützte Latenzen (Bitmap) |
20 | 0x14 | - | 6 | 5 | 4 | 3 | 2 | 1 | 0 | [19456556] Unterstützte Latenzen (Bitmap) | |
21 | 0x15 | - | Redundant | Diff. clock | Registrierte Daten | Gepufferte Daten | On-Card-PLL | Registrierte Adr. | Gepufferte Adr. | Speichermodul-Funktionsbitmap | |
22 | 0x16 | - | - | Upper V cc (Versorgungsspannung) Toleranz | Unterer V cc (Versorgungsspannung) Toleranz | Write / 1 Read Burst | Alle vorladen | Autovorladung | Früh RAS Vorladung | Speicherbit unterstützt die Bitmap | |
23 | 0x17 | Nanosekunden (4–18) | Zehntel von Nanosekunden (0–9: 0.0–0.9) | Taktzykluszeit bei mittlerer CAS-Latenz | |||||||
24 | 0x18 | Nanosekunden (4–18) | Zehntel von 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 Zeilenvorladezeit (t RP ) | ||||||||
28 | 0x1c | Nanosekunden (1–255) | Minimale aktive Zeilenverzögerung für aktive Zeilen (t RRD ) | ||||||||
29 | 0x1d | Nanosekunden (1–255) | Minimum RAS bis CAS Verzögerung (t RCD ) | ||||||||
30 | 0x1e | Nanosekunden (1–255) | Minimale aktive Vorladezeit (t RAS ) | ||||||||
31 | 0x1f | 512 MiB | 256 MiB | 128 MiB | 64 MiB | 32 MiB | 16 MiB | 8 MiB | 4 MiB | 4 MiB | ] Modulbankdichte (Bitmap). Bei unterschiedlichen Bankgrößen werden zwei Bits gesetzt. |
32 | 0x20 | Zeichen (1: -) | Nanosekunden (0–7) | Zehntel von Nanosekunden (0–9: 0,0–0,9) | Adresse / Befehlseinstellzeit von Uhr | ||||||
33 | 0x21 | Zeichen (1: -) | Nanosekunden (0–7) | Zehntel von Nanosekunden (0–9: 0,0–0,9) | Adresse / Befehlshaltezeit danach Uhr | ||||||
34 | 0x22 | Zeichen (1: -) | Nanosekunden (0–7) | Zehntel von Nanosekunden (0–9: 0,0–0,9) | Einstellungszeit der Dateneingabe vom Takt | ||||||
35 | 0x23 | Zeichen (1: -) | Nanosekunden (0–7) | Zehntel von Nanosekunden (0–9: 0,0–0,9) | Haltezeit der Dateneingabe nach dem Takt | ||||||
36–61 | 0x24–0x3d | Reserviert | Zur zukünftigen Standardisierung | ||||||||
62 | 0x3e | Hauptrevision (0–9) | Kleinere Revision (0–9) | SPD-Revisionsstand; z. B. 1,2 | |||||||
63 | 0x3f | Checksum | Summe der Bytes 0–62, nicht negiert | ||||||||
64–71 | 0x40–47 | Hersteller JEDEC-ID. | Gespeichertes Little-Endian, hinter Null gepolstert | ||||||||
72 | 0x48 | Standort der Modulherstellung | Herstellerspezifischer Code | ||||||||
73–90 | 0x49-0x5a | Modul-Teilenummer | ASCII, mit Leerzeichen aufgefüllt | ||||||||
91–92 | 0x5b – 0x5c | Modul-Revisionscode | Herstellerspezifischer Code | ||||||||
93 | 0x5d | Dutzende von Jahren (0–9: 0–90) | Jahre (0–9) | Herstellungsdatum (YYWW) | |||||||
94 | 0x5e | Dutzende von Wochen (0–5: 0–50) | Wochen (0–9) | ||||||||
95–98 | 0x5f – 0x62 | Seriennummer des Moduls | Herstellerspezifischer Code | ||||||||
99–125 | 0x63–0x7f | Herstellerspezifische Daten | Könnte das Leistungsprofil verbessern | ||||||||
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 | Concurrent AP | Bitmap |
DDR-SDRAM [ edit ]
Das DDR-DIMM-SPD-Format ist eine Erweiterung des SDR-SDRAM-Formats. Meistens werden die Parameterbereiche für höhere Geschwindigkeiten neu skaliert.
Byte | Bit | Hinweise | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
(dec.) | (Hex.) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
0 | 0x00 | Anzahl der geschriebenen Bytes | Typischerweise 128 | ||||||||
1 | 0x01 | log 2 (Größe des SPD-EEPROM) | Typisch 8 (256 Bytes) | ||||||||
2 | 0x02 | Grundspeichertyp (7 = DDR-SDRAM) | |||||||||
3 | 0x03 | Reihenbits der Bank 2 (0–15) | Reihenbits der Bank 1 (1–15) | Bank 2 ist 0, wenn sie mit Bank 1 identisch ist. | |||||||
4 | 0x04 | Spalten-Adressbits der Bank 2 (0–15) | Spalten-Adressbits der Bank 1 (1–15) | Bank 2 ist 0, wenn sie mit Bank 1 identisch ist. | |||||||
5 | 0x05 | Anzahl der RAM-Bänke auf dem Modul (1–255) | Üblicherweise 1 oder 2 | ||||||||
6 | 0x06 | Niedriges Byte für Moduldatenbreite | Üblicherweise 64 oder 72 für ECC-DIMMs | ||||||||
7 | 0x07 | Hochbyte für Moduldatenbreite | 0, es sei denn, die Breite ist ≥ 256 Bits | ||||||||
8 | 0x08 | Schnittstellenspannungspegel dieser Baugruppe (nicht identisch mit V cc Versorgungsspannung) (0–5) | Dekodiert durch Tabellensuche | ||||||||
9 | 0x09 | Nanosekunden (0–15) | Zehntel von 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 ab Takt (t AC ) | |||||||
11 | 0x0b | DIMM-Konfigurationstyp (0–2): Nicht-ECC, Parität, ECC | Tabellensuche | ||||||||
12 | 0x0c | Self | Aktualisierungszeitraum (0–5): 64, 256, 128, 32, 16, 8 kHz | Aktualisierungsanforderungen | |||||||
13 | 0x0d | Bank 2 2 × | Primäre SDRAM-Breite der Bank 1 (1–127) | Breite der SDRAM-Vorrichtungen der Bank 1. Bank 2 kann dieselbe Breite haben oder 2 × Breite, wenn Bit 7 gesetzt ist. | |||||||
14 | 0x0e | Bank 2 2 × | Bank 1 ECC SDRAM Breite (0–127) | Breite von Bank 1 ECC / Parity-SDRAM-Geräten. Bank 2 kann dieselbe Breite haben oder 2 × Breite, wenn Bit 7 gesetzt ist. | |||||||
15 | 0x0f | Taktverzögerung für zufällige Spaltenlesevorgänge | Typisch 1 | ||||||||
16 | 0x10 | Seite | - | - | - | 8 | 4 | 2 | 1 | 1 | Unterstützte Berstlängen (Bitmap) |
17 | 0x11 | Bänke pro SDRAM-Gerät (1–255) | Typisch 4 | ||||||||
18 | 0x12 | - | 4 | 3.5 | 3 | 2.5 | 2 | 1.5 | 1 | 1 | [1945655] CAS Unterstützte Latenzen (Bitmap) |
19 | 0x13 | - | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 0 | Unterstützte Latenzen (Bitmap) |
20 | 0x14 | - | 6 | 5 | 4 | 3 | 2 | 1 | 0 | [19456556] Unterstützte Latenzen (Bitmap) | |
21 | 0x15 | - | x | Diff-Takt | Externe FET-Schalterfreigabe | Integrierter FET-Schalter | On-Card-PLL | Eingetragen | ] Buffered | Bitmap für Merkmalsspeicher | |
22 | 0x16 | Schnelle AP | Gleichzeitige Autovorladung | Oberes V cm³ (Versorgungsspannung) Toleranz | Unteres V cm³ (Versorgung) Spannung) Toleranz | - | - | - | Enthält einen schwachen Treiber | Speicherchip-Merkmalsbitmap | |
23 | 0x17 | Nanosekunden (0-15) | Zehntel von 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 von 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 Zeilenvorladezeit (t RP ) | |||||||
28 | 0x1c | Nanosekunden (1–63) | 0,25 ns (0–0,75) | Minimale aktive Zeilenreihenverzögerung (t RRD ) | |||||||
29 | 0x1d | Nanosekunden (1–63) | 0,25 ns (0–0,75) | Minimum RAS CAS Verzögerung (t RCD ) | |||||||
30 | 0x1e | Nanosekunden (1–255) | Minimale aktive 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). Bei unterschiedlichen Bankgrößen werden zwei Bits gesetzt. | |
32 | 0x20 | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | Adresse / Befehlseinstellungszeit ab der Uhr | |||||||
33 | 0x21 | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | Adresse / Befehlshaltezeit nach Uhr | |||||||
34 | 0x22 | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | Zeit für die Dateneingabe von der Uhrzeit | |||||||
35 | 0x23 | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | Haltezeit der Dateneingabe nach dem Takt | |||||||
36–40 | 0x24-0x28 | Reserviert | Superset-Informationen | ||||||||
41 | 0x29 | Nanosekunden (1–255) | Minimale aktive Aktivierungs- / Aktualisierungszeit (t RC ) | ||||||||
42 | 0x2a | Nanosekunden (1–255) | Minimale Aktualisierung zur Aktivierungs- / Aktualisierungszeit (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) | Maximaler Versatz, DQS zu einem beliebigen DQ. (t DQSQ max.) | ||||||||
45 | 0x2d | Zehntel von Nanosekunden (0,0–1,2) | Hundertstel Nanosekunden (0,00–0,09) | Lesedaten halten Skew-Faktor (t QHS ) | |||||||
46 | 0x2e | Reserviert | Zur zukünftigen Standardisierung | ||||||||
47 | 0x2f | - | Height | Höhe des DIMM-Moduls, Nachschlagetabelle | |||||||
48–61 | 0x30–0x3d | Reserviert | Zur zukünftigen Standardisierung | ||||||||
62 | 0x3e | Hauptrevision (0–9) | Kleinere Revision (0–9) | SPD-Revisionsstand 0,0 oder 1,0 | |||||||
63 | 0x3f | Checksum | Summe der Bytes 0–62, nicht negiert | ||||||||
64–71 | 0x40–47 | Hersteller JEDEC-ID. | Gespeichertes Little-Endian, hinter Null gepolstert | ||||||||
72 | 0x48 | Standort der Modulherstellung | Herstellerspezifischer Code | ||||||||
73–90 | 0x49-0x5a | Modul-Teilenummer | ASCII, mit Leerzeichen aufgefüllt | ||||||||
91–92 | 0x5b – 0x5c | Modul-Revisionscode | Herstellerspezifischer Code | ||||||||
93 | 0x5d | Dutzende von Jahren (0–90) | Jahre (0–9) | Herstellungsdatum (YYWW) | |||||||
94 | 0x5e | Dutzende von Wochen (0–50) | Wochen (0–9) | ||||||||
95–98 | 0x5f – 0x62 | Seriennummer des Moduls | Herstellerspezifischer Code | ||||||||
99–127 | 0x63–0x7f | Herstellerspezifische Daten | Könnte das Leistungsprofil verbessern |
DDR2-SDRAM [ edit ]
Der DDR2-SPD-Standard nimmt einige Änderungen vor, ähnelt jedoch in etwa der oben genannten. Eine bemerkenswerte Streichung ist die verwirrende und wenig genutzte Unterstützung für DIMMs mit zwei Rängen unterschiedlicher Größe.
Für Zykluszeitfelder (Bytes 9, 23, 25 und 49), die in BCD codiert sind, sind einige zusätzliche Codierungen für die Zehntelstelle definiert, um einige allgemeine Timings genau darzustellen:
Hex | Binär | Bedeutung |
---|---|---|
A | 1010 | 0,25 (1/4) |
B | 1011 | 0.33 (l) |
C | 1100 | 0,66 (l) |
D | 1101 | 0.75 (l) |
E | 1110 | 0.875 (⅞, nVidia-XMP-Erweiterung) |
F | 1111 | Reserviert |
Byte | Bit | Hinweise | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||||
0 | 0x00 | Anzahl der geschriebenen Bytes | Typischerweise 128 | ||||||||||||
1 | 0x01 | log 2 (Größe des SPD-EEPROM) | Typisch 8 (256 Bytes) | ||||||||||||
2 | 0x02 | Grundspeichertyp (8 = DDR2-SDRAM) | |||||||||||||
3 | 0x03 | Reserviert | Zeilenadreßbits (1-15) | ||||||||||||
4 | 0x04 | Reserviert | Spaltenadreßbits (1–15) | ||||||||||||
5 | 0x05 | Vertikale Höhe | Stack? | ConC? | Ranks-1 (1–8) | Üblicherweise 0 oder 1, dh 1 oder 2 | |||||||||
6 | 0x06 | Moduldatenbreite | Üblicherweise 64 oder 72 für ECC-DIMMs | ||||||||||||
7 | 0x07 | Reserviert | |||||||||||||
8 | 0x08 | Schnittstellenspannungspegel dieser Baugruppe (nicht identisch mit V cc Versorgungsspannung) (0–5) | Häufig decodiert durch Tabellensuche 5 = SSTL 1,8 V | ||||||||||||
9 | 0x09 | Nanosekunden (0–15) | Zehntel von 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 ab Takt (t AC ) | |||||||||||
11 | 0x0b | DIMM-Konfigurationstyp (0–2): Nicht-ECC, Parität, ECC | Tabellensuche | ||||||||||||
12 | 0x0c | Self | Aktualisierungszeitraum (0–5): 64, 256, 128, 32, 16, 8 kHz | Aktualisierungsanforderungen | |||||||||||
13 | 0x0d | Primäre SDRAM-Breite (1–255) | Üblicherweise 8 (Modul aus × 8 Teilen gebaut) oder 16 | ||||||||||||
14 | 0x0e | Breite des ECC-SDRAM (0–255) | Breite der ECC / Parity-SDRAM-Geräte der Bank. Normalerweise 0 oder 8. | ||||||||||||
15 | 0x0f | Reserviert | |||||||||||||
16 | 0x10 | - | - | - | - | 8 | 4 | - | - | Unterstützte Berstlängen (Bitmap) | |||||
17 | 0x11 | Banks pro SDRAM-Gerät (1–255) | Typisch 4 oder 8 | ||||||||||||
18 | 0x12 | 7 | 6 | 5 | 4 | 3 | 2 | - | - | - | - | - | - | - | Unterstützte Latenzen (Bitmap) |
19 | 0x13 | Reserviert | |||||||||||||
20 | 0x14 | - | - | Mini-UDIMM | Mini-RDIMM | Micro-DIMM | SO-DIMM | RDIMM | RDIMM | ] DIMM-Typ dieser Baugruppe (Bitmap) | |||||
21 | 0x15 | - | Modul ist Analysesonde | - | Externe Freigabe des FET-Schalters | - | - | - | - | - Memory Modul-Feature-Bitmap | |||||
22 | 0x16 | - | - | - | - | - | - | - | Enthält einen schwachen Treiber | ||||||
23 | 0x17 | Nanosekunden (0-15) | Zehntel von 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 von 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) | 1/4 ns (0–0,75) | Minimale Zeilenvorladezeit (t RP ) | |||||||||||
28 | 0x1c | Nanosekunden (1–63) | 1/4 ns (0–0,75) | Minimale aktive Zeilenreihenverzögerung (t RRD ) | |||||||||||
29 | 0x1d | Nanosekunden (1–63) | 1/4 ns (0–0,75) | Minimum RAS bis CAS Verzögerung ( t RCD ) | |||||||||||
30 | 0x1e | Nanosekunden (1–255) | Minimale aktive Vorladezeit (t RAS ) | ||||||||||||
31 | 0x1f | 512 MiB | 256 MiB | 128 MiB | 16 GiB | 8 GiB | 4 GiB | 2 GiB | 1 GiB | 1 GiB | 1 GiB | ] Größe jedes Ranges (Bitmap). | |||
32 | 0x20 | Zehntel Nanosekunden (0,0–1,2) | Hundertstel Nanosekunden (0,00–0,09) | Adresse / Befehlseinstellungszeit ab der Uhr | |||||||||||
33 | 0x21 | Zehntel Nanosekunden (0,0–1,2) | Hundertstel Nanosekunden (0,00–0,09) | Adresse / Befehlshaltezeit nach Uhr | |||||||||||
34 | 0x22 | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | Einstellungszeit der Dateneingabe von Strobe | |||||||||||
35 | 0x23 | Zehntel Nanosekunden (0,0–0,9) | Hundertstel Nanosekunden (0,00–0,09) | Haltezeit der Dateneingabe nach einem Strobe | |||||||||||
36 | 0x24 | Nanosekunden (1–63) | 0,25 ns (0–0,75) | Minimale Schreibwiederherstellungszeit (t WR ) | |||||||||||
37 | 0x25 | Nanosekunden (1–63) | 0,25 ns (0–0,75) | Interne Schreib-Lese-Befehlsverzögerung (t WTR ) | |||||||||||
38 | 0x26 | Nanosekunden (1–63) | 0,25 ns (0–0,75) | Interner Lesevorgang zur Vorladebefehlsverzögerung (t RTP ) | |||||||||||
39 | 0x27 | Reserviert | Reserviert für "Merkmale der Speicheranalyse-Sonde". | ||||||||||||
40 | 0x28 | - | t RC Bruchzahl ns (0–5): 0, 0,25, 0,33, 0,5, 0,66, 0,75 | t RFC gebrochene ns (0–5): 0, 0,25, 0,33, 0,5, 0,66, 0,75 | t RFC + 256 ns | Erweiterung der Bytes 41 und 42. | |||||||||
41 | 0x29 | Nanosekunden (1–255) | Minimale aktive Aktivierungs- / Aktualisierungszeit (t RC ) | ||||||||||||
42 | 0x2a | Nanosekunden (1–255) | Minimale Aktualisierung zur Aktivierungs- / Aktualisierungszeit (t RFC ) | ||||||||||||
43 | 0x2b | Nanosekunden (0–15) | Zehntel von Nanosekunden (0.0–0.9) | Maximale Taktzykluszeit (t CK max) | |||||||||||
44 | 0x2c | Hundertstel Nanosekunden (0,01–2,55) | Maximaler Versatz, DQS zu einem beliebigen DQ. (t DQSQ max) | ||||||||||||
45 | 0x2d | Hundertstel Nanosekunden (0,01–2,55) | Lesedaten-Halteversatzfaktor (t QHS ) | ||||||||||||
46 | 0x2e | Mikrosekunden (1–255) | PLL-Relock-Zeit | ||||||||||||
47–61 | 0x2f – 0x3d | Reserviert | Für die zukünftige Standardisierung. | ||||||||||||
62 | 0x3e | Hauptrevision (0–9) | Kleinere Revision (0,0–0,9) | SPD-Revisionsstand, normalerweise 1,0 | |||||||||||
63 | 0x3f | Checksum | Summe der Bytes 0–62, nicht negiert | ||||||||||||
64–71 | 0x40–47 | Hersteller JEDEC ID | Gespeichertes Little-Endian-Protokoll, hinter dem Nullpunkt | ||||||||||||
72 | 0x48 | Standort der Modulherstellung | Herstellerspezifischer Code | ||||||||||||
73–90 | 0x49–0x5a | Modul-Teilenummer | ASCII, mit Leerzeichen aufgefüllt (begrenzt auf (, -,), A – Z, a – z, 0–9, Leerzeichen) | ||||||||||||
91–92 | 0x5b – 0x5c | Modul-Revisionscode | Herstellerspezifischer Code | ||||||||||||
93 | 0x5d | Jahre seit 2000 (0–255) | Herstellungsdatum (YYWW) | ||||||||||||
94 | 0x5e | Wochen (1–52) | |||||||||||||
95–98 | 0x5f – 0x62 | Seriennummer des Moduls | Herstellerspezifischer Code | ||||||||||||
99–127 | 0x63–0x7f | Herstellerspezifische Daten | Könnte das Leistungsprofil verbessern |
DDR3-SDRAM [ edit ]
Der DDR3-SDRAM-Standard überarbeitet und vereinfacht das Layout der SPD-Inhalte. Anstelle einer Anzahl von BCD-kodierten Nanosekundenfeldern werden einige "Zeitbasis" -Einheiten mit hoher Genauigkeit spezifiziert, und verschiedene Zeitsteuerungsparameter werden als Vielfache dieser Basiseinheit kodiert. [7] Ferner ist es üblich, unterschiedliche Zeitwerte in Abhängigkeit von der Die CAS-Latenzzeit wurde gesenkt. Jetzt gibt es nur noch einen einzigen Satz von Timing-Parametern.
In Version 1.1 können einige Parameter als "mittlere Zeitbasis" plus einer (vorzeichenbehafteten, -128 +127) "feinen Zeitbasis" -Korrektur ausgedrückt werden. Im Allgemeinen beträgt die mittlere Zeitbasis 1/8 ns (125 ps) und die feine Zeitbasis 1, 2,5 oder 5 ps. Zur Kompatibilität mit früheren Versionen, denen die Korrektur fehlt, wird normalerweise die mittlere Zeitbasisnummer aufgerundet und die Korrektur ist negativ. Werte, die auf diese Weise funktionieren, sind:
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 RAS # bis CAS # -Verzögerung |
20 | 37 | t RP min, minimale Zeilenvorladeverzögerung |
21,23 | 38 | t RC min, minimale aktive bis aktive / Vorladeverzögerung |
Byte | Bit | Hinweise | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0 | 0x00 | Seriennummer von CRC ausschließen | SPD-Bytes insgesamt (undef / 256) | Verwendete SPD-Bytes (undef / 128/176/256) | ||||||
1 | 0x01 | SPD-Hauptversion | SPD-Nebenversion | Typisch 1,0 oder 1,1 | ||||||
2 | 0x02 | Grundlegender Speichertyp (11 = DDR3-SDRAM) | Typ von RAM-Chips | |||||||
3 | 0x03 | Reserviert | Modultyp | Modultyp; z. B. 2 = ungepuffertes DIMM, 3 = SO-DIMM, 11 = LRDIMM | ||||||
4 | 0x04 | - | Bankadressbits-3 | log 2 (Bits pro Chip) -28 | Null bedeutet 8 Banken, 256 Mibit. | |||||
5 | 0x05 | — | Row address bits−12 | Column address bits−9 | ||||||
6 | 0x06 | Reserved | 1.25 V | 1.35 V | Not 1.5 V | Modules voltages supported. 1.5 V is default. | ||||
7 | 0x07 | — | ranks−1 | log2(I/O bits/chip)−2 | Module organization | |||||
8 | 0x08 | — | ECC bits (001=8) | log2(data bits)−3 | 0x03 for 64-bit, non-ECC DIMM. | |||||
9 | 0x09 | Dividend, picoseconds (1–15) | Divisor, picoseconds (1–15) | Fine Time Base, dividend/divisor | ||||||
10 | 0x0a | Dividend, nanoseconds (1–255) | Medium Time Base, dividend/divisor; commonly 1/8 | |||||||
11 | 0x0b | Divisor, nanoseconds (1–255) | ||||||||
12 | 0x0c | Minimum cycle time tCKmin | In multiples of MTB | |||||||
13 | 0x0d | Reserved | ||||||||
14 | 0x0e | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | CAS latencies supported (bitmap) |
15 | 0x0f | — | 18 | 17 | 16 | 15 | 14 | 13 | 12 | |
16 | 0x10 | Minimum CAS latency time, tAAmin | In multiples of MTB; e.g., 80/8 ns. | |||||||
17 | 0x11 | Minimum write recovery time, tWRmin | In multiples of MTB; e.g., 120/8 ns. | |||||||
18 | 0x12 | Minimum RAS to CAS delay time, tRCDmin | In multiples of MTB; e.g., 100/8 ns. | |||||||
19 | 0x13 | Minimum row to row active delay time, tRRDmin | In multiples of MTB; e.g., 60/8 ns. | |||||||
20 | 0x14 | Minimum row precharge time, tRPmin | In multiples of MTB; e.g., 100/8 ns. | |||||||
21 | 0x15 | tRCmin, bits 11:8 | tRASmin, bits 11:8 | Upper 4 bits of bytes 23 and 22 | ||||||
22 | 0x16 | Minimum active to time, tRASmin, bits 7:0 | In multiples of MTB; e.g., 280/8 ns. | |||||||
23 | 0x17 | Minimum active to active/refresh, tRCmin, bits 7:0 | In multiples of MTB; e.g., 396/8 ns. | |||||||
24 | 0x18 | Minimum refresh recovery delay, tRFCmin, bits 7:0 | In multiples of MTB; e.g., 1280/8 ns. | |||||||
25 | 0x19 | Minimum refresh recovery delay, tRFCmin, bits 15:8 | ||||||||
26 | 0x1a | Minimum internal write to read delay, tWTRmin | In multiples of MTB; e.g., 60/8 ns. | |||||||
27 | 0x1b | Minimum internal read to precharge delay, tRTPmin | In multiples of MTB; e.g., 60/8 ns. | |||||||
28 | 0x1c | Reserved | tFAWmin, bits 11:8 | In multiples of MTB; e.g., 240/8 ns. | ||||||
29 | 0x1d | Minimum four activate window delay tFAWmin, bits 7:0 | ||||||||
30 | 0x1e | DLL-off | — | — | — | — | — | RZQ/7 | RZQ/6 | SDRAM optional features support bitmap |
31 | 0x1f | PASR | — | — | — | ODTS | ASR | ETR 1× | ETR (95 °C) | SDRAM thermal and refresh options |
32 | 0x20 | Present | Accuracy (TBD; currently 0 = undefined) | DIMM thermal sensor present? | ||||||
33 | 0x21 | Nonstd. | Die count | — | — | Signal load | Nonstandard SDRAM device type (e.g., stacked die) | |||
34 | 0x22 | tCKmin correction (new for 1.1) | Signed multiple of FTB, added to byte 12 | |||||||
35 | 0x23 | tAAmin correction (new for 1.1) | Signed multiple of FTB, added to byte 16 | |||||||
36 | 0x24 | tRCDmin correction (new for 1.1) | Signed multiple of FTB, added to byte 18 | |||||||
37 | 0x25 | tRPmin correction (new for 1.1) | Signed multiple of FTB, added to byte 20 | |||||||
38 | 0x26 | tRCmin correction (new for 1.1) | Signed multiple of FTB, added to byte 23 | |||||||
39–59 | 0x27–0x3b | Reserved | For future standardization. | |||||||
60 | 0x3c | — | Module height, mm (1–31, >45) | Module nominal height | ||||||
61 | 0x3d | Back thickness, mm (1–16) | Front thickness, mm (1–16) | Module thickness, value = ceil(mm) − 1 | ||||||
62 | 0x3e | Design | Revision | JEDEC design number | JEDEC reference design used (11111=none) | |||||
63–116 | 0x3f–0x74 | Module-specific section | Differs between registered/unbuffered | |||||||
117 | 0x75 | Module manufacturer ID, lsbyte | Assigned by JEP-106 | |||||||
118 | 0x76 | Module manufacturer ID, msbyte | ||||||||
119 | 0x77 | Module manufacturing location | Vendor-specific code | |||||||
120 | 0x78 | Tens of years | Years | Manufacturing year (BCD) | ||||||
121 | 0x79 | Tens of weeks | Weeks | Manufacturing week (BCD) | ||||||
122–125 | 0x7a–0x7d | Module serial number | Vendor-specific code | |||||||
126–127 | 0x7e–0x7f | SPD CRC-16 | Includes bytes 0–116 or 0–125; see byte 0 bit 7 | |||||||
128–145 | 0x80–0x91 | Module part number | ASCII subset, space-padded | |||||||
146–147 | 0x92–0x93 | Module revision code | Vendor-defined | |||||||
148–149 | 0x94–0x95 | DRAM manufacturer ID | As distinct from module manufacturer | |||||||
150–175 | 0x96–0xAF | Manufacturer-specific data |
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).
Extensions[edit]
The JEDEC standard only specifies some of the SPD bytes. The truly critical data fits into the first 64 bytes,[5][6][9][10][11] while some of the remainder is earmarked for manufacturer identification. However, a 256-byte EEPROM is generally provided. A number of uses have been made of the remaining space.
Enhanced Performance Profiles (EPP)[edit]
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.
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.[12]
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 |
The parameters are particularly designed to fit the memory controller on the nForce 5, nForce 6 and nForce 7 chipsets. Nvidia encourages support for EPP in the BIOS for its high-end motherboard chipsets. This is intended to provide "one-click overclocking" to get better performance with minimal effort.
Nvidia's name for EPP memory that has been qualified for performance and stability is "SLI-ready memory".[13] The term "SLI-ready-memory" has caused some confusion, as it has nothing to do with SLI video. One can use EPP/SLI memory with a single video card (even a non-Nvidia card), and one can run a multi-card SLI video setup without EPP/SLI memory.
An extended version, EPP 2.0, supports DDR3 memory as well.[14]
Extreme Memory Profile (XMP)[edit]
A similar, Intel-developed JEDEC SPD extension for DDR3 SDRAM DIMMs. This uses bytes 176–255, which are unallocated by JEDEC, to encode higher-performance memory timings.[15]
(Note: AMP is AMD equivalent technology of XMP[16][17]A-XMP is MSI version of AMP[18]DOCP (Direct Over Clock Profile) is Asus XMP-to-AMP conversion and EOCP (Extended Over Clock Profiles) is Gigabyte version of DOCP[19].)
Bytes | Size | Use |
---|---|---|
176–184 | 10 | XMP header |
185–219 | 33 | XMP profile 1 ("enthusiast" settings) |
220–254 | 36 | XMP profile 2 ("extreme" settings) |
The header contains the following data. Most importantly, it contains a "medium timebase" value MTB, as a rational number of nanoseconds (common values are 1/8, 1/12 and 1/16 ns). Many other later timing values are expressed as an integer number of MTB units.
Also included in the header is the number of DIMMs per memory channel that the profile is designed to support; including more DIMMs may not work well.
Byte | Bits | Use |
---|---|---|
176 | 7:0 | XMP magic number byte 1 0x0C |
177 | 7:0 | XMP magic number byte 2 0x4A |
178 | 0 | Profile 1 enabled (if 0, disabled) |
1 | Profile 2 enabled | |
3:2 | Profile 1 DIMMs per channel (1–4 encoded as 0–3) | |
5:4 | Profile 2 DIMMs per channel | |
7:6 | Reserved | |
179 | 3:0 | XMP minor version number (x.0 or x.1) |
7:4 | XMP major version number (0.x or 1.x) | |
180 | 7:0 | Medium timebase dividend for profile 1 |
181 | 7:0 | Medium timebase divisor for profile 1 (MTB = dividend/divisor ns) |
182 | 7:0 | Medium timebase dividend for profile 2 (e.g. 8) |
183 | 7:0 | Medium timebase divisor for profile 2 (e.g. 1, giving MTB = 1/8 ns) |
184 | 7:0 | Reserved |
Byte 1 | Byte 2 | Bits | Use |
---|---|---|---|
185 | 220 | 0 | Module Vdd voltage twentieths (0.00 or 0.05) |
4:1 | Module Vdd voltage tenths (0.0–0.9) | ||
6:5 | Module Vdd voltage units (0–2) | ||
7 | Reserved | ||
186 | 221 | 7:0 | Minimum SDRAM clock period tCKmin (MTB units) |
187 | 222 | 7:0 | Minimum CAS latency time tAAmin (MTB units) |
188 | 223 | 7:0 | CAS latencies supported (bitmap, 4–11 encoded as bits 0–7) |
189 | 224 | 6:0 | CAS latencies supported (bitmap, 12–18 encoded as bits 0–6) |
7 | Reserved | ||
190 | 225 | 7:0 | Minimum CAS write latency time tCWLmin (MTB units) |
191 | 226 | 7:0 | Minimum row precharge delay time tRPmin (MTB units) |
192 | 227 | 7:0 | Minimum RAS to CAS delay time tRCDmin (MTB units) |
193 | 228 | 7:0 | Minimum write recovery time tWRmin (MTB units) |
194 | 229 | 3:0 | tRASmin upper nibble (bits 11:8) |
7:4 | tRCmin upper nibble (bits 11:8) | ||
195 | 230 | 7:0 | Minimum active to precharge delay time tRASmin bits 7:0 (MTB units) |
196 | 231 | 7:0 | Minimum active to active/refresh delay time tRCmin bits 7:0 (MTB units) |
197 | 232 | 7:0 | Maximum average refresh interval tREFI lsbyte (MTB units) |
198 | 233 | 7:0 | Maximum average refresh interval tREFI msbyte (MTB units) |
199 | 234 | 7:0 | Minimum refresh recovery delay time tRFCmin lsbyte (MTB units) |
200 | 235 | 7:0 | Minimum refresh recovery delay time tRFCmin msbyte (MTB units) |
201 | 236 | 7:0 | Minimum internal read to precharge command delay time tRTPmin (MTB units) |
202 | 237 | 7:0 | Minimum row active to row active delay time tRRDmin (MTB units) |
203 | 238 | 3:0 | tFAWmin upper nibble (bits 11:8) |
7:4 | Reserved | ||
204 | 239 | 7:0 | Minimum four activate window delay time tFAWmin bits 7:0 (MTB units) |
205 | 240 | 7:0 | Minimum internal write to read command delay time tWTRmin (MTB units) |
206 | 241 | 2:0 | Write to read command turnaround time adjustment (0–7 clock cycles) |
3 | Write to read command turnaround adjustment sign (0=pull-in, 1=push-out) | ||
6:4 | Read to write command turnaround time adjustment (0–7 clock cycles) | ||
7 | Read to write command turnaround adjustment sign (0=pull-in, 1=push-out) | ||
207 | 242 | 2:0 | Back-to-back command turnaround time adjustment (0–7 clock cycles) |
3 | Back-to-back turnaround adjustment sign (0=pull-in, 1=push-out) | ||
7:4 | Reserved | ||
208 | 243 | 7:0 | System CMD rate mode. 0=JTAG default, otherwise in peculiar units of MTB × tCK/ns. E.g. if MTB is 1/8 ns, then this is in units of 1/8 clock cycle. |
209 | 244 | 7:0 | SDRAM auto self refresh performance. Standard version 1.1 says documentation is TBD. |
210–218 | 245–253 | 7:0 | Reserved |
219 | 254 | 7:0 | Reservedvendor-specific personality code. |
Vendor-specific memory[edit]
A common misuse is to write information to certain memory regions to bind vendor-specific memory modules to a specific system. Fujitsu Technology Solutions is known to do this. Adding different memory module to the system usually results in a refusal or other counter-measures (like pressing F1 on every boot).
02 0E 00 01-00 00 00 EF-02 03 19 4D-BC 47 C3 46 ...........M.G.F
53 43 00 04-EF 4F 8D 1F-00 01 70 00-01 03 C1 CF SC...O....p.....
This is the output of a 512 MB memory module from Micron Technologies, branded for Fujitsu-Siemens Computers, note the "FSC" string.
The system BIOS rejects memory modules that don't have this information starting at offset 128h.
Reading and writing SPD information[edit]
Memory module manufacturers write the SPD information to the EEPROM on the module. Motherboard BIOSes read the SPD information to configure the memory controller. There exist several programs that are able to read and modify SPD information on most, but not all motherboard chipsets.
- dmidecode program that can decode information about memory (and other things) and runs on Linux, FreeBSD, NetBSD, OpenBSD, BeOS, Cygwin and Solaris. dmidecode does not access SPD information directly; it reports the BIOS data about the memory.[21] This information may be limited or incorrect.
- On Linux systems, the user space program decode-dimms[22] provided with i2c-tools [23] decodes and prints information on any memory with SPD information in the computer. It requires SMBus controller support in the kernel, the EEPROM kernel driver, and also that the SPD EEPROMs are connected to the SMBus. On older Linux distributions, decode-dimms.pl was available as part of lm_sensors.
- OpenBSD has included a driver (spdmem(4)) since version 4.3 to provide information about memory modules. The driver was ported from NetBSD, where it is available since release 5.0.
- Coreboot reads and uses SPD information to initialize all memory controllers in a computer with timing, size and other properties.
- Windows systems use programs like HWiNFO32,[24]CPU-Z and Speccy, which can read and display DRAM module information from SPD.
Chipset-independent reading and writing of SPD information is done by accessing the memory's EEPROM directly with eeprom programmer hardware and software.
A not so common use for old laptops is as generic SMBus readers, as the internal EEPROM on the module can be disabled once the BIOS has read it so the bus is essentially available for use. The method used is to pull low the A0,A1 lines so the internal memory shuts down, allowing the external device to access the SMBus. Once this is done, a custom Linux build or DOS application can then access the external device. A common use is recovering data from LCD panel memory chips to retrofit a generic panel into a proprietary laptop.
On some chips it is also a good idea to separate write protect lines so that the onboard chips do not get wiped during reprogramming.
A related technique is rewriting the chip on webcams often included with many laptops as the bus speed is substantially higher and can even be modified so that 25x series chips can be read back for later cloning of the uEFI in the event of a chip failure.
On older equipment[edit]
Some older equipment require the use of SIMMs with parallel presence detect (more commonly called simply presence detect or PD). Some of this equipment uses non-standard PD coding, IBM computers and Hewlett-Packard LaserJet and other printers in particular.
See also[edit]
References[edit]
- ^ Thomas P. Koenig; Nathan John (1997-02-03), "Serial Presence Detection poised for limelight", Electronic News43 (2153)
- ^ 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"
- ^ Application note INN-8668-APN3: SDRAM SPD Data Standards, memorytesters.com
- ^ PC SDRAM Serial Presence Detect (SPD) Specification (PDF)1.2A, December 1997, p. 28
- ^ a b JEDEC Standard 21-C section 4.1.2.4 "SPDs for DDR SDRAM"
- ^ a b JEDEC Standard 21-C section 4.1.2.10 "Specific SPDs for DDR2 SDRAM"
- ^ Understanding DDR3 Serial Presence Detect (SPD) Table
- ^ JESD21-C Annex K: Serial Presence Detect for DDR3 SDRAM Modules, Release 4, SPD Revision 1.1
- ^ JEDEC Standard 21-C section 4.1.2.11 "Serial Presence Detect (SPD) for DDR3 SDRAM Modules"
- ^ JEDEC Standard 21-C section 4.1.2 "SERIAL PRESENCE DETECT STANDARD, General Standard"
- ^ JEDEC Standard 21-C section 4.1.2.5 "Specific PDs for Synchronous DRAM (SDRAM)"
- ^ DDR2 UDIMM Enhanced Performance Profiles Design Specification (PDF)Nvidia, 2006-05-12retrieved 2009-05-05
- ^ http://www.nvidia.com/docs/CP/45121/sli_memory.pdf
- ^ Enhanced Performance Profiles 2.0 (pages 2–3)
- ^ Intel Extreme Memory Profile (Intel XMP) DDR3 Technology
- ^ Advanced Micro Devices, Inc (2012). "Memory Profile Technology - AMP up your RAM". Retrieved 2018-01-08.
- ^ Ryan Martin (2012-07-23). "AMD introduces its XMP-equivalent AMP - eTeknix". Retrieved 2018-01-08.
- ^ Micro-Star Int'l Co., Ltd (2017-03-21). "MSI is worlds first brand to enable A-XMP on Ryzen for best DDR4 performance, launches new models". Retrieved 2018-01-08.
- ^ Tradesman1 (2016-08-26). "What does XMP, DOCP, EOCP mean - Solved - Memory". Retrieved 2018-01-08.
- ^ a b c Intel® Extreme Memory Profile (XMP) Specification, Rev 1.1 (PDF)October 2007, archived from the original (PDF) on 2012-03-06retrieved 2010-05-25
- ^ dmidecode: What's it good for?
- ^ "Archived copy". Archived from the original on 2 December 2008. Retrieved 2009-07-16.CS1 maint: Archived copy as title (link)
decode-dimms Perl program - ^ "I2CTools – lm-sensors". Lm-sensors.org. Archived from the original on 11 March 2012. Retrieved 14 August 2014.
- ^ HWiNFO32
Không có nhận xét nào:
Đăng nhận xét