Warum zeigt memtest einen Bitflip desselben Bits über mehrere Adressen hinweg an?

2

Ich hatte die unglückliche Erfahrung, heute einen Memtest nicht bestanden zu haben, aber die Ergebnisse scheinen etwas eigenartig zu sein, und ich habe mehrere Fragen dazu. Natürlich wird dies wahrscheinlich dazu führen, dass ich den RAM zurückgebe, aber ich möchte immer noch verstehen, was schief gelaufen ist.

Pastebin für Memtest-Protokoll.

Was ich merkwürdig bemerkte, war, dass über mehrere Adressen hinweg immer das letzte Bit des ersten Bytes fehlgeschlagen ist. Hier ist ein Abschnitt des Protokolls, der dies zeigt.

2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 1, Address: 252A019F8, Expected: FEF7FFFF, Actual: FFF7FFFF
2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 1, Address: 253201A38, Expected: FEFEFFFF, Actual: FFFEFFFF
2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 2, Address: 255641A98, Expected: FEF7FFFF, Actual: FFF7FFFF
2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 2, Address: 255E41CB8, Expected: 00000000, Actual: 01000000
2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 2, Address: 257641A78, Expected: FEF7FFFF, Actual: FFF7FFFF
2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 2, Address: 257E41C98, Expected: 00000000, Actual: 01000000
2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 259201A58, Expected: FEFEFFFF, Actual: FFFEFFFF
2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 259201B58, Expected: FEEFFFFF, Actual: FFEFFFFF
2018-01-27 07:19:35 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 259645310, Expected: 01004000, Actual: 00004000
2018-01-27 07:19:36 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 259A01A18, Expected: FEFFF7FF, Actual: FFFFF7FF
2018-01-27 07:19:36 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 259A01AD8, Expected: FEFFBFFF, Actual: FFFFBFFF
2018-01-27 07:19:36 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 25B201A38, Expected: FEFEFFFF, Actual: FFFEFFFF
2018-01-27 07:19:36 - [MEM ERROR - Data] Test: 6, CPU: 3, Address: 25B201B38, Expected: FEEFFFFF, Actual: FFEFFFFF

Ich habe den Arbeitsspeicher auf zwei verschiedenen Computern getestet und dabei den gleichen Fehler festgestellt. Sagen mir diese Ergebnisse etwas über den Fehler in der internen Logik, der auftritt? Ich würde denken, es ist, weil ein Satz von Bytes die gleiche Adressierungslogik teilt, aber ich würde erwarten, dass die Fehler dann in Speicherbytes sequentiell sind. Oder kann es sein, dass das fehlerhafte Bit für alle diese Adressen gleich ist und aus irgendeinem Grund dasselbe Byte bei jeder erneuten Ausführung eine andere Adresse erhält?

Zweitens hat der memtest nur wenige Tests nicht bestanden, insbesondere die Tests 0 bis 2, auch nach mehreren memtests. Ich habe nur Grundkenntnisse über die einzelnen Tests, bin jedoch überrascht, dass die ersten Tests nie zu Fehlern geführt haben. Irgendein Grund warum?

Styil
quelle

Antworten:

2

Dies kann an dem in diesem Wikipedia-Artikel beschriebenen Layout liegen: Reihenhammer .

Im dynamischen RAM (DRAM) belegt jedes Bit gespeicherter Daten eine separate Speicherzelle […]

Speicherzellen (blaue Quadrate in der Abbildung) sind weiter in Matrizen organisiert und durch Zeilen und Spalten adressiert. Eine auf eine Matrix angewendete Speicheradresse wird in die Zeilenadresse und die Spaltenadresse aufgeteilt, die von den Zeilen- und Spaltenadressendecodierern verarbeitet werden (in der Abbildung vertikale bzw. horizontale grüne Rechtecke). Nachdem eine Zeilenadresse die Zeile für eine Leseoperation ausgewählt hat (die Auswahl wird auch als Zeilenaktivierung bezeichnet), werden Bits aus allen Zellen in der Zeile in die Leseverstärker übertragen, die den Zeilenpuffer bilden (rote Quadrate in der Abbildung) Das genaue Bit wird anhand der Spaltenadresse ausgewählt.

Bild

Bildquelle (gemeinfrei)

Hypothese: Es stimmt etwas nicht mit einem Bit eines bestimmten Zeilenpuffers (rote Quadrate); Es beeinflusst das Lesen jeder Zeile, der der Puffer entspricht. Ich behaupte nicht, dass es jedes Mal passieren wird, für jede Zeile und alle geschriebenen Daten. Dennoch glaube ich, dass diese Matrixform und der Zeilenpuffer (oder ähnliches) etwas damit zu tun haben, dass immer das letzte Bit des ersten Bytes fehlgeschlagen ist.


Zweitens hat der memtest nur einige Tests nicht bestanden, insbesondere die Tests 0 bis 2 […]. Ich bin überrascht, dass die ersten Tests nie zu einem Fehler geführt haben. Irgendein Grund warum?

In diesem Handbuch werden die folgenden Tests erläutert:

  • Test 0 [Adressentest, Laufende, kein Cache]

Testet alle Adreßbits in allen Speicherbänken unter Verwendung eines laufenden Adreßmusters.

  • Test 1 [Adresstest, eigene Adresse, sequentiell]

Jede Adresse wird mit einer eigenen Adresse geschrieben und anschließend auf Konsistenz überprüft. In der Theorie sollten frühere Tests Probleme mit der Speicheradressierung festgestellt haben. Dieser Test sollte alle Adressierungsfehler erkennen, die zuvor nicht erkannt wurden. Dieser Test wird nacheinander mit jeder verfügbaren CPU durchgeführt.

  • Test 2 [Adresstest, eigene Adresse, parallel]

Wie Test 1, aber der Test wird parallel mit allen CPUs und überlappenden Adressen durchgeführt.

Ich verstehe, dass die Tests 0-2 so ausgelegt sind, dass Adressierungsfehler abgefangen werden, nicht unbedingt tatsächliche Datenfehler. Beachten Sie, wenn sie alle Fehler abfangen könnten, wären keine weiteren Tests erforderlich.

Kamil Maciorowski
quelle