Windows XP hat einen Bug in der Ansteuerung von Laufwerken mit DMA. Wenn das Laufwerk, die CD, aber auch die Festplatte 6 mal einen Lesefehler hatte, dann schaltet Windows XP den DMA Modus aus und schaltet in den PIO Modus.
Daß dieser Effekt auftritt, bemerkt man daran, daß der PC gähnend langsam wird, sobald man auf die Platte zugreift, aber normal arbeitet, solange man nichts von der Platte liest oder auf diese schreibt.
Hat man den TaskManager von Sysinternals, dann kann man den Effekt auch an der Zeile “Interrupts” sehen, die weist bei Plattenzugriffen bis zu 50% CPU Last aus.
Im Device Manager sieht man dann unter den IDE Channels
den Primary IDE Channel 0, also denjenigen, wo die Platte angeschlossen ist, im PIO Mode:
Zur Korrektur des Fehlers legt man im Registry Editor unter
HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0001
einen neuen DWORD Wert
ResetErrorCountersOnSuccess
an und setzt diesen auf 1. Danach muß man Windows XP zweimal neu starten (Bei manchen XP Installationen kann es auch ein anderer Schlüssel sein, 0002 oder 0003).
Dieser Wert führt dazu, daß Windows XP, wenn es erfolgreich per DMA auf die Platte zugreifen kann, den Fehlerzähler zurücksetzt und sich selbst damit ermöglicht, den PIO Mode auszuschalten.
Kleine Erklärung dazu: PIO Modus bedeutet, daß jeder Zugriff auf die Festplatte einen Interrupt im Prozessor auslöst, denn der gesamte Festplattenzugriff wird von der CPU durchgeführt (Programmed Input/Output Mode). Im heutzutage “normalen” DMA Mode (Direct Memory Access) schreibt der Plattencontroller die Zugriffsergebnisse direkt in den Hauptspeicher (wenn die CPU gerade nicht zugreift).
Nachtrag:
Weitere Informationen (auf Englisch) und ein kleines VB Script zu diesem Problem findet man auf der Seite http://winhlp.com/node/10.
Mai 18th, 2010 at 09:01
Weitere Informationen (auf Englisch) und ein kleines VB Script zu diesem Problem findet man auf der Seite http://winhlp.com/node/10.