Wann fing das mit dem DMA an?

Warum dauert die Installation von Windows 2000 in einer modernen VM auf einer SSD trotzdem noch sooo lange, wo die Daten heute schon in 5 Minuten fertig sein müssten?

Ich habe keine Ahnung … aber eine Vermutung.
Denn früher war es mein erster Job nach einer Windows Installation, DMA zu aktivieren.


Um das Jahr 2000 war man als interessierter Tüftler gerne gefragt, um aus dem PC mehr Leistung herauszubekommen.
Neben einigen Tricks, die man jedes Monat von einer anderen PC-Zeitschrift vorgekaut bekam, gab es eine interessante Einstellung für Festplatten und CD bzw. DVD Laufwerke, die bei manchen Systemen wahre Wunder auslöste.

Ich meine die “Direct Memory Access” Option, kurz D.M.A. für Festplatten und CD Laufwerke.

Wenn ein Programm unter DOS Daten von einem Datenträger lesen oder schreiben wollte, war der Ablauf sehr linar und synchron.

  • Programm nutzt eine Datei-API
  • DOS (INT 21h) übersetzte das Dateisystem in Hardware-Aufrufe
  • Der BIOS-Code (INT 13h) las Sektor für Sektor und kopierte die Bytes in kleine Datenpuffer

Bei jedem dieser Schritte war die CPU voll ausgelastet.

Und dann kam präemptives Multitasking womit Threads es möglich machten, dass sich mehrere Prozesse die CPU-Leistung aufteilten.
Doch nach dem alten Schema bedeutete jede IO-Operation auf den Datenträgern, dass keine CPU-Zeit für die Prozesse da war, weil die CPU voll und ganz mit IO und Bytekopierereien beschäftig war.

Und dann kam DMA. … naja, eigentlich gab es das Konzept schon recht lange, aber der PC lernte es erst recht spät und die Windows Treiber noch später.

Die Idee: Eine Hardware-Komponente darf direkt ins RAM schreiben, hat also eigene Datenleitungen und die CPU sagt ihr lediglich, woher sie Daten lesen und wohin sie diese speichern soll.
Und schon ist die CPU kein Flaschenhals mehr, der tausende Taktzyklen blockiert ist, sondern gibt nur noch Kommandos weiter, die dann von “untergebenen” Mikrokontrollerschaltungen erledigt werden.

Und die Welt wäre so schön, wenn das auch alles gleich von Anfang an funktioniert hätte …
Doch leider war die Unterschützung von DMA für Festplatten (oder allgemeiner IDE-Geräten) bei einigen wenigen Chip-Modellen fehlerhaft.

Das wiederum rief die OS-Hersteller auf den Plan, die diese Technologie zwar implementierten aber deaktiviert liesen, zumindest während der Installation bis sie von am Ende installierten speziellen Treibersetups für den eigenen PC aktiviert wurden.

Tja, und so hatte ich bei vielen Besuchen von Freunden, Verwandten und Bekannten die Aufgabe, ihre PCs durch die Aktivierung der DMA-Funktion auf Vordermann zu bringen.

Tatsächlich kamen da so Fragen wie:

Du, der PC geht eigentlich, aber wir können keine Videos ansehen.

Ja klar, Videos brauchen viele Daten auf einmal und ohne DMA schaffte es auch eine schnelle CPU nicht, die nötigen Bytes einzeln von A nach B zu übertragen.

Sobald also im entsprechenden Reiter des “Primären oder Sekundären IDE Controllers” der DMA Modus aktiviert war, durft man sich als Wunderheiler feiern lassen, der das Ansehen von Filmen am PC möglich gemacht hatte.

Windows DMA

… ach, das war schon auch eine schöne Zeit.
Nicht wegen den schlechten Hardware/Treibergegebenheiten, sondern weil man noch mit einfachsten Handgriffen “was erreichen” konnte.

Das wurde in den folgenden Jahren bedeutungslos und seit dem Updates automatisch über das Internet eingespielt werden, sollte es gar nicht erst möglich sein, dass ein Windows im uralt-Modus Daten herumschiebt. Da kann man nur noch 5% Leistung mit ein paar Registry-Einstellungen verbessern, und nicht wie damals 50-100% “gefühlten” Geschwindigkeitsgewinn herbeizaubern.

In sofern vermisse ich diese Tage als Wunderheiler … … und bin trotzdem froh, dass man sich mit so einem Blödsinn heutzutage nicht mehr beschäftigen muss.


Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!