Allgemeine Beschreibung - WinBoard

Transcription

Allgemeine Beschreibung - WinBoard
DMA fällt zurück auf PIO
Das stotternde DVD-Laufwerk
Allgemeine Beschreibung
Suche freiberufliche Tätigkeit als
Software-Entwickler
Suchen Sie einen Software-Entwickler
mit umfangreichen Erfahrungen für
schwierige Aufgaben? Mehr
Informationen finden Sie hier.
Ich bin der Autor dieser Webseite und
wohne in München (Ottobrunn),
arbeite aber weltweit. Bitte senden Sie
mir eine Email.
Object 1
Dieser Artikel trifft auch auf Windows 2000 zu. (Peter Frank berichtete eine erfolgreiche
Anwendung auf Windows 2000 mit Service Pack 4.)
DMA ist eine Abkürzung für Direct Memory Access, ein Zugriffsverfahren für externe Geräte, bei
dem die Datenübertragung nicht durch den Prozessor erfolgt, sondern durch einen kleinen
Spezialprozessor, den DMA-Controller. Dieser benutzt ein Verfahren namens Cycle Stealing
(Stehlen von Zyklen), bei dem der Prozessor für einzelne Speicherzugriffszyklen, also sehr kurz,
aufgehalten wird, damit der DMA-Controller eine kleine Datenmenge vom oder zum Hauptspeicher
übertragen kann. Die neueren, schnelleren DMA-Modi heißen UDMA (Ultra DMA).
Der alternative, langsame und wenig effiziente Datenübertragungsmodus heißt PIO, Programmed
Input-Output, bei dem der Prozessor Byte für Byte oder Wort für Wort übertragen muss, was pro
Datenwort viele Programmbefehle erfordert und daher zu einer hohen und unerwünschten
Prozessorbelastung führt.
Mögliche Ursachen für den Rückfall auf PIO
Die häufigste Ursache dafür, dass ein IDE-Port von DMA auf PIO zurückfällt, ist eine zerkratzte
oder anderweitig unlesbare CD oder DVD.
Allerdings gibt es noch andere Gründe, warum ein Computer PIO statt DMA verwendet. Z.B.
berichtete David Duberman 2005, dass einige Dell-Computer als Standardeinstellung im BIOS
DMA für die zweite Festplatte deaktiviert haben. Es ist daher eine gute Idee, zuerst die BIOSEinstellungen zu prüfen.
Other reasons can show up in the event log, so check this first and see if you can find repeated
Atapi errors recorded. If so, you likely have a hardware defect. You can use the procedure described
below, but your computer will probably fall back to PIO mode again and again, until you solve the
underlying problem, which may be located inside the device, on the motherboard, or in the IDE data
cable and its connectors.
Andere Ursachen können in der Ereignisanzeige auftauchen, also prüfen Sie diese zuerst und sehen
Sie nach, ob Sie wiederholte Atapi-Fehler darin finden. Wenn ja, dann liegt wahrscheinlich ein
Hardware-Fehler vor. Sie können die im Folgenden beschriebene Prozedur verwenden, aber Ihr
Computer wird wahrscheinlich immer wieder in den PIO-Modus zurückfallen, bis Sie den
zugrundeliegenden Fehler beheben. Dieser kann sich im Laufwerk befinden, auf der Hauptplatine
(Motherboard), oder im IDE-Datenkabel und seinen Anschlusskontakten.
Die Falle
Windows enthält eine Falle, in die viele Computer früher oder später einmal hineintappen. Diese
Falle wurde in einem Artikel (und auch in einem weiter unten erwähnten) genauer beschrieben.
Die entscheidenden Absätze (ins Deutsche übertragen) lauten:
Der PIO-Modus wird automatisch in den folgenden Situationen aktiviert:
...
Bei wiederholten DMA-Fehlern. Windows XP schaltet den DMA-Modus für ein Gerät
aus, nachdem bestimmte Fehler beim Datentransfer auftraten. Wenn mehr als sechs
DMA-Transfer-Zeitüberschreitungen auftreten, dann deaktiviert Windows DMA und
benutzt für dieses Gerät den PIO-Modus.
In diesem Falle kann der Benutzer DMA für dieses Gerät nicht mehr einschalten. Die
einzige Möglichkeit für den Benutzer, der DMA wieder aktivieren möchte, ist, das
Gerät zu deinstallieren und neu zu installieren.
Windows XP schaltet den Ultra-DMA-Transfermodus herunter, nachdem es mehr als
sechs CRC-(Cyclic Redundancy Check)-Fehler erhalten hat. Wenn immer möglich,
schaltet das Betriebssystem den DMA-Modus jedes Mal nur um eine Stufe herunter
(von UDMA-Modus 4 auf UDMA-Modus 3 usw.).
...
Natürlich ist es bei der heutzutage ziemlich komplizierten Geräte-Firmware (fest eingebaute
Software), die mit an Sicherheit grenzender Wahrscheinlichkeit selbst auch Programmfehler enthält,
nicht allzu schwierig, solche Fehler zu erzeugen. In meinem Falle genügte eine zerkratzte DVD und
später noch einmal eine unlesbare (overburn) CD, um das Laufwerk sich verschlucken zu lassen,
und um Windows dazu zu bringen, für immer auf den PIO-Modus zurückzuschalten.
Ich hatte meinen Laptop schon jahrelang zum Anschauen von DVDs benutzt, bis ich eine geborgte
und schwer zerkratzte DVD einlegte. Das DVD-Abspielprogramm und auch das Lauferk stolperte
über die vielen Fehler, und als ich die DVD schließlich zum Abspielen brachte, fand ich, dass der
Film ruckelte und die Prozessorleistung auf 100% anstieg, von dem etwa die Hälfte SystemOverhead war.
Dies zeigt an, dass das Laufwerk vom sonst üblichen UDMA-Modus 2 auf PIO zurückgefallen war.
Alle Versuche, dies zurückzusetzen oder die relevanten Registry-Einträge von 1 (DMA versuchen)
auf 2 (DMA erzwingen), schlugen fehl. Störrisch beharrte das Laufwerk auf dem PIO-Modus, und
Windows stellte sogar die Registry-Parameter auf 0 (Nur PIO benutzen) zurück.
Der folgende Text bezieht sich auf den sekundären IDE-Port, weil dieser am häufigsten betroffen
ist, aber dasselbe gilt im Prinzip auch für den primären IDE-Port, an dem in den meisten Computern
die Festplatte angeschlossen ist. Nur treten dort nicht so häufig Fehler auf, denn wer benutzt schon
zerkratzte Festplatten?
Bevor Sie beginnen, am Problem zu arbeiten, loggen Sie sich als Administrator oder als ein
Benutzer mit Administratorrechten ein.
Prüfen Sie den Übertragungsmodus Ihres
IDE-Ports
Prüfen Sie zuerst, in welchem Modus Ihr sekundärer IDE-Port gerade arbeitet. Wenn er in einem
schnellen UDMA-Modus läuft, dann können Sie den Rest dieses Kapitels vorläufig ignorieren,
sollten aber im Kopf behalten, dass dieser Fehler Sie in der Zukunft noch treffen kann. Dann sollten
Sie wissen, was zu tun ist.
Sie brauchen dazu den Geräte-Manager. Ein Weg, diesen zu öffnen, ist der folgende. Klicken Sie
mit der rechten Maustaste auf Arbeitsplatz und wählen Sie Eigenschaften. Klicken Sie auf den
Reiter Hardware und dort auf den Knopf Geräte-Manager. Klicken Sie auf das Pluszeichen links
neben dem IDE ATA/ATAPI-Controller. Doppelklicken Sie auf Sekundärer IDE-Kanal. Ein neues
Fenster Eigenschaften von Sekundärer IDE-Kanal öffnet sich.
Dort klicken Sie auf den Reiter Erweiterte Einstellungen. Sie sehen nun die beiden Geräte, die am
sekundären IDE-Kanal angeschlossen sein können. Gerät 0 ist das Gerät, dessen Jumper auf Master
gesteckt ist, Gerät 1 das mit dem Jumper in der Position Slave, falls überhaupt ein zweites Gerät
angeschlossen ist.
Normalerweise möchte man, dass jedes der beiden Geräte so eingestellt ist, dass DMA, wenn
verfügbar, verwendet wird. Unter dieser Einstellung sehen Sie ein graues Feld, in dem angezeigt
wird, welchen DMA- oder PIO-Modus das Gerät tatsächlich verwendet. Dort möchten Sie den
höchstmöglichen DMA- oder UDMA-Modus sehen und zumindest bei CD- oder DVD-Laufwerken
auf keinen Fall PIO.
Normalerweise brauchen Sie hierfür den Registry-Editor nicht, weil die normalen Einstellungen
auch durch diesen Eigenschaften-Dialog für die IDE-Ports verfügbar sind, aber wenn Sie trotzdem
dort hineinschauen möchten, finden Sie die Parameter für den sekundären IDE-Port mittels
regedit.exe bei
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 1
Er wird nur aus historischen Gründen Scsi genannt. Scsi Port 0 ist der primäre IDE-Port, an dem
wahrscheinlich Ihre Festplatte angeschlossen ist.
Nachdem ich—vergeblich—verschiedene Einstellungen zu ändern versuchte, fand ich den oben
zitierten Artikel und machte mich mit diesen Informationen erneut an die Arbeit. Ich deinstallierte
das DVD-Laufwerk im Geräte-Manager und bootete den Computer erneut, aber das half immer
noch nicht.
Nach weiterer Informationssuche fand ich schließlich die Lösung.
DMA mit dem Registry Editor reaktivieren
Mein Dank gilt meinem MVP-Kollegen Alexander Grigoriev, der mich diese Methode lehrte.
Starten Sie den Registry Editor REGEDIT. Sie können diesen u.a. aufrufen, indem Sie auf den
Start-Knopf klicken, dann auf den Befehl Ausführen... und dort das Wort regedit eingeben.
Suchen Sie jetzt, indem Sie auf die Pluszeichen links neben den Schlüsselnamen klicken, den
Registry-Schlüssel:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CEBFC1-08002BE10318}
Dieser enthält weitere Schlüssel namens 0000, 0001, 0002, usw. Normalerweise ist 0001 der
primäre IDE-Kanal und 0002 der sekundäre, aber unter bestimmten Umständen können auch andere
Nummern auftreten. Sie müssen daher durch diese Schlüssel gehen und den Wert DriverDesc
(Treiber-Beschreibung) anschauen, der eine lesbare Bezeichnung des jeweiligen Kanals enthält. So
können Sie sicherstellen, dass Sie den richtigen IDE-Kanal gefunden haben.
Löschen Sie nun den Wert MasterIdDataChecksum oder SlaveIdDataChecksum, je nachdem, ob
das fragliche Gerät als Master oder als Slave angeschlossen ist (Gerät 0 oder Gerät 1), aber es kann
nicht schaden, einfach beide zu löschen. Sie können einen Wert löschen, indem Sie seinen Namen
auswählen, indem Sie darauf klicken, und dann die Löschtaste [Entf] drücken. Windows wird beim
nächsten Systemstart die DMA-Fähigkeiten des Laufwerks oder der Laufwerke neu feststellen.
Booten Sie also Ihren Computer neu.
Öffnen Sie zur Sicherheit wie oben beschrieben noch einmal den Geräte-Manager und prüfen Sie,
ob Ihr Gerät nun tatsächlich wieder den DMA-Modus verwendet. Wenn ja, Gratulation, Sie haben
es geschafft (mindestens bis Windows das nächste Mal DMA wieder ausschaltet).
2005-10-24 – Tomáš Souček schrieb, wenn dies das Problem nicht löst, prüfen Sie auch den
DWORD-Wert MasterDeviceTimingModeAllowed, dessen Standardwert hex 0xFFFFFFFF ist.
Wenn Sie einen viel kleineren Wert vorfinden, dann können Sie versuchen, diesen für einen Test
auf den Standardwert zurückzusetzen und dann neu zu booten.
Alternative Methode—Port deinstallieren
1. Deinstallieren Sie den sekundären IDE-Port
To do that, open Device Manager as follows. Right-click on My Computer, select Properties, click
on the Hardware tag, click on the Device Manager button, click on the plus sign to the left of IDA
ATA/ATAPI Controller, right-click on Secondary IDE Channel, click on Uninstall. Deactivating is
not enough.
Um dies zu tun, öffnen Sie wie oben beschrieben den Geräte-Manager und finden Sie wieder den
Zweig Sekundärer IDE-Kanal. Klicken Sie mit der rechten Maustaste auf Sekundärer IDE-Kanal
und klicken Sie auf Deinstallieren. Deaktivieren reicht nicht.
Starten Sie Ihren Computer neu, um diese Änderung auszuführen.
After this first reboot Windows will automatically reinstall the IDE channel and the DVD (or CD)
drive. This Plug-n-Play process can take a little while, so give it a minute after the boot process
finishes.
Nach dem Neustart wird Windows automatisch den IDE-Kanal finden und den Treiber dafür neu
installieren, ebenso wie die dort angeschlossenen Laufwerke (z.B. DVD oder CD). Dieser Plug-andPlay-Vorgang kann ein Weilchen dauern. Geben Sie dem Computer also eine extra Minute,
nachdem der Bootvorgang beendet ist.
2. DMA reaktivieren
Aber dies ist nicht genug, weil Windows leider den DMA-Modus auf dem DVD- oder CDLaufwerk nicht wieder automatisch reaktiviert. Sie müssen Windows erst noch mitteilen, dass es
versuchen soll, DMA zu benutzen.
Um dies zu tun, gehen Sie noch einmal in den Geräte-Manager, klicken Sie dort auf das Pluszeichen
links von IDE ATA/ATAPI-Controller, doppelklicken Sie auf Sekundärer IDE-Kanal, klicken Sie
auf Erweiterte Einstellungen und stellen Sie die Einstellung von Nur PIO auf DMA, wenn
verfügbar.
Starten Sie Ihren Computer noch einmal neu, gehen Sie wieder in den Geräte-Manager und prüfen
Sie an derselben Stelle, ob das Laufwerk nun wirklich den DMA-Modus benutzt. Wenn ja, dann ist
alles in Ordnung.
3. Treiber ist für diese Plattform nicht vorgesehen
Wenn Sie die folgende oder eine ähnliche Fehlermeldung erhalten:
Problem bei der Hardware-Installation
IDE-Kanal
Während der Geräteinstallation ist ein Fehler aufgetreten. Treiber ist für diese Plattform
nicht vorgesehen.
2005-03-30 – Johannes B. schrieb: Der Grund für diese Meldung ist meistens, dass Daemon Tools
oder Alcohol 120% auf dem betroffenen System installiert ist. In diesem Fall funktioniert der unten
beschriebene Lösungsweg nicht. Wenn man aber diese Programme deinstalliert und dann Windows
neu startet, installiert Windows problemlos die Gerätetreiber.
Wenn keines dieser beiden Programme installiert ist, dann ist ein möglicher Ausweg, die
Treiberdatei C:\WINDOWS\system32\drivers\atapi.sys (oder ein ähnlicher Pfad auf Ihrem
Computer) in atapi.old o.ä. umzubenennen.
Wenn das nicht möglich ist, dann versuchen Sie es von der Reparatorkonsole aus (Booten von der
Windows-Installations-CD, dann Reparaturkonsole aufrufen).
Sollte Windows dann automatisch wieder eine Datei atapi.sys erstellen, dann können Sie noch
versuchen, die Datei im Safe Mode oder von einem Kommandozeilenfenster aus umzubenennen,
oder Sie können versuchen, die Datei auch im Treiber-Cache-Ordner umzubenennen oder zu
entfernen.
Desensibilisieren Sie die IDE-Kanäle Ihres
Computers
Es gibt noch etwas mehr, das Sie tun können, um dieses Problem wenigstens etwas abzuschwächen,
obwohl es sich nicht ganz vermeiden lässt. Der folgende (englische) Artikel beschreibt die Lösung.
Sie besteht darin, Windows so einzustellen, dass es den Fehlerzähler nach jedem erfolgreichen
Lese- oder Schreibvorgang wieder auf Null zurücksetzt. Das hat zur Folge, dass das Zurückschalten
des DMA-Modus nur noch passiert, wenn Sie 6 Fehler hintereinander bekommen, statt 6 Fehler
über eine Sitzung am Computer verstreut.
IDE ATA- und ATAPI-Laufwerke arbeiten nach mehreren Zeitüberschreitungs- und CRC-Fehlern
im PIO-Modus
http://support.microsoft.com/kb/817472/de
Englische Version:
IDE ATA and ATAPI Disks Use PIO Mode After Multiple Time-Out or CRC Errors Occur
http://support.microsoft.com/kb/817472/
Lesen Sie den Artikel, denn er enthält eine langfristig wirkende Fehlerumgehung. Aber Sie müssen
vorher die weiter oben beschriebene Prozedur absolvieren, um DMA erst einmal zu aktivieren,
wenn es schon deaktiviert worden war.
Nachdem Sie das getan haben, setzen Sie die Registry-Werte ResetErrorCountersOnSuccess in die
Registry-Schlüssel sowohl des primären als auch des sekundären IDE-Ports ein, wie im oben
genannten Artikel beschrieben.
Leider ist auch dies nur eine halbe Lösung, weil Sie, wenn Sie eine unlesbare CD oder DVD
einlegen, leicht 6 Fehler hintereinander bekommen können, aber wenigstens passiert es nun nicht
mehr, wenn Sie die fehlerhafte CD oder DVD rechtzeitig aus dem Laufwerk nehmen und das
nächste Mal eine bessere einlegen. Nach einem erfolgreichen Lesevorgang wird der Fehlerzähler
nun zurückgesetzt, die magische Zahl 6 ist hoffentlich noch nicht erreicht worden, und so ist es
wenigstens etwas schwieriger für Windows, Ihr Laufwerk mit PIO auszubremsen.