Podręcznik
6. Układy we/wy, DMA, magistrale
6.3. Układ DMA
Układ DMA (ang. Direct Memory Access) to inaczej układ bezpośredniego dostępu do pamięci (układ ten nazywamy też sterownikiem lub kontrolerem DMA). Schemat blokowy układu i sposób współpracy z innymi fragmentami systemu komputerowego pokazany jest na rys. 3.
Celem stosowania układu jest odciążenie mikroprocesora od czynności związanych z przekazywaniem danych przez szynę systemową i jednocześnie przyśpieszenie transmisji. W architekturze mikrokomputera DMA podporządkowany jest mikroprocesorowi, który pełni funkcję jednostki nadrzędnej.
Układ DMA musi być przed transmisją zaprogramowany przez procesor przez przesłanie do DMA 3 podstawowych parametrów transmisji:
- kierunku przesyłania (skąd, dokąd)
- długości transmitowanego bloku
- początkowego adresu obszaru pamięci na który będziemy zapisywać dane lub z którego będziemy czytać dane. Z reguły operujemy spójnymi obszarami pamięci.
Rys. 3. Współpraca układu DMA z mikroprocesorem, PAO i układem we/wy (tutaj sterownikiem twardego dysku)
Typowy prosty sterownik DMA składa się z licznika słów LS, licznika adresów LA, rejestru sterującego C i rejestru stanu S. Sterownik ma następujące wejścia i wyjścia:
D | - dwukierunkowa szyna danych |
A | - magistrala adresowa np. linie A0-A15 (A0, A1 są we/wy) |
HOLD (wy) | - sygnał żądania dostępu do szyny |
HOLDA(we) | - sygnał akceptacji dostępu do szyny |
DRQ (we) | - sygnał zgłaszający gotowość urządzenia |
DACK (wy) | - polecenie przesłania słowa danych np. bajt |
Rys. 4. Schemat blokowy typowego sterownika DMA
Rys. 5. Sygnały sterujące DMA
DMA zgłasza sygnałem HOLD żądanie dostępu do szyny. W momencie gdy mikroprocesor zaakceptuje żądanie dostępu do szyny, wystawia sygnał HOLDA i „przechodzi w trzeci stan”. Kontrolę nad szyną systemową i transmisją danych przejmuje DMA.
Układy DMA są stosowane w systemach mikrokomputerowych przede wszystkim do sterowania przesyłaniem bloków danych między pamięcią operacyjną PAO a szybkimi pamięciami zewnętrznymi np. twardym dyskiem.
Typowy układ DMA to np. Intel 8257