Podręcznik

10. Bezpośredni dostęp do pamięci (DMA)

Użycie portów do komunikacji z urządzeniem, czyli programowanego wejścia/wyjścia (PIO) powoduje duże wykorzystanie procesora. Istnieje inna metoda, która pozwala transferować znaczne ilości danych pomiędzy urządzeniem i pamięcią RAM ze znikomym wykorzystaniem procesora. Jest to właśnie bezpośredni dostęp do pamięci (DMA – ang. Direct Memory Access) (Rys.24).

 

Rys. 24. Idea DMA

 

W rozwiązaniu tym jest wykorzystywany specjalny kontroler DMA, który organizuje transfer danych pomiędzy urządzeniem i pamięcią bez udziału procesora. Podczas transferu danych procesor jest jednak odcięty od pamięci RAM. Historycznie kontroler DMA był montowany na płycie głównej.  Jest to tzw. standardowe DMA („third party”). Rozwiązanie to jest przestarzałe (związane z magistralą ISA) i obecnie w zasadzie nie jest wykorzystywane. Obecne urządzenia (szczególnie dyski twarde, karty graficzne) mają wbudowane kontrolery DMA. Wykorzystują one tzw. bus mastering („first party” DMA). Urządzenie peryferyjne wykonujące transfer DMA przejmuje kontrolę nad magistralą systemową (PCI, PCI Express). Jest ono wtedy jedynym sterownikiem kontrolującym magistralę (bus mastering). Następnie układ DMA urządzenia zostaje odpowiednio zaprogramowany (podawane są informacje: odczyt czy zapis, adres urządzenia I/O, adres początkowy pamięci do odczytu lub zapisu, liczba słów do transmisji) i jest realizowany transfer danych. Po przesłaniu danych urządzenie zwalnia magistralę.