# Memtest86+

Memtest86+ ist eine freie Software zum Testen des Arbeitsspeichers eines Computersystems.

## Geschichte

Samuel Demeulemeester veröffentlichte es als Abspaltung von Memtest86 auf Basis der Version 3.0, nachdem diese von Mai 2002 bis März 2004 nicht aktualisiert worden war. Memtest86+ steht wie seine damalige Vorlage weiterhin unter der GNU General Public License, während Memtest86 mittlerweile als proprietäre Software weiterentwickelt wird.
Ab Version 4.10 wird Memtest86+ mit Installer für Speicherkarten, USB-Sticks und für das Booten im Netzwerk (PXE) im Modus legacy-BIOS angeboten.
Auf Basis von Version 5.01 spaltete Martin Whitaker das Programm PCMemTest ab, zwischen 2020 und 2021 erschienen dessen Versionen 1.0 bis 1.5. 2022 wurde die Codebasis beider Programme wieder als Memtest86+ Version 6.0 zusammengeführt, an dem nunmehr Sam Demeulemeester und Martin Whitaker gemeinsam arbeiten.

## Arbeitsweise

Memtest86+ arbeitet unabhängig von einem installierten Betriebssystem direkt auf der Hardware als so genanntes Bare metal program und kann von einem USB-Stick oder über das Netzwerk mittels Preboot Execution Environment (PXE) gestartet werden. Es läuft sowohl im BIOS- als auch im UEFI-Modus.
Die Software überprüft den Arbeitsspeicher mit 11 unterschiedlichen Tests, durchnummeriert von 0 bis 10. In jedem davon wird der komplette Speicher abschnittsweise mit bestimmten Testmustern beschrieben, die anschließend wieder ausgelesen und auf Korrektheit überprüft werden. Abweichungen zwischen den ausgelesenen und den ursprünglich geschriebenen Mustern werden als Fehler gemeldet und aufgelistet. Neben reinen Zufallswerten sind die meisten Testmuster so gestaltet, dass darin einzelne oder abwechselnde Bits wiederholt verschoben oder invertiert werden, um bewusst sämtliche Speicherzellen technisch auszulasten:
* Tests 0 bis 2: Adresstests. Dies sind noch keine Stresstests, hier wird nur die Ansprechbarkeit jedes Speicherbereichs geprüft. Als Testwerte werden einzelne Bits oder die Adresse des Speicherbereichs selbst verwendet. Test 0 läuft auf aktuellen Systemen sehr schnell, mitunter fast unmerklich durch.
* Tests 3 bis 6: „Moving inversions“. Unterschiedliche Bitmuster werden abwechselnd mit ihren Inversionen geschrieben, wobei sich Besonderheiten innerhalb der Muster weiterbewegen.
* Test 7: „Block move“. Der Speicherbereich wird vollgeschrieben, dann werden die einzelnen Blöcke direkt im Speicher verschoben. Ausgewertet wird dieser Test erst nach allen Verschiebungen, daher erlaubt er keine genaue Lokalisierung aufgetretener Fehler. Dieser Test ist vergleichbar mit dem Spiel Stille Post.
* Test 8: Schreiben von Zufallszahlenfolgen und ihren Inversionen.
* Test 9: „Modulo 20“. Erneuter Test mit Zufallszahlen nach einem anderen Algorithmus.
* Test 10: „Bit fade“. Der Speicherbereich wird vollständig mit einheitlichen Bitwerten gefüllt und dann eine Zeitlang (in der aktuellen Version 80 Sekunden) ruhen gelassen. Danach müssen alle Werte noch korrekt auslesbar sein.
Die Software selbst, die ja auch im Arbeitsspeicher gehalten werden muss, arbeitet positionsunabhängig und verschiebt sich selbst während der Laufzeit im Speicher, so dass sie sich nicht im Wege ist und der gesamte Speicher getestet werden kann.
Ein vollständiger Durchlauf aller 11 Tests wird Pass genannt und benötigt auf aktuellen Systemen rund 15 bis 30 Minuten, kann aber je nach CPU-Geschwindigkeit und Speichervolumen auch eine Stunde oder länger dauern. Anschließend beginnt sofort der nächste Pass; die Software läuft weiter, bis sie gestoppt wird. Mindestens ein vollständiger Pass ohne Fehler wird als Nachweis eines fehlerfrei arbeitenden Speichers betrachtet, wobei manche Fehler sich auch erst nach mehreren Passes zeigen. Andererseits bedeuten aufgetretene Fehler nicht zwingend einen defekten Arbeitsspeicher; die Ursache kann auch in der CPU, im Mainboard oder in der Konfiguration (etwa Übertakten) liegen.