« poprzedni punkt |
Mechanizm bezpośredniego dostępu do pamięci jest wykorzystywany po to, aby szybkie urządzenia wejściowe (np. pamięć dyskowa) mogły zapisywać dane do pamięci operacyjnej bez udziału procesora. Taki cykl nazywa się cyklem zapisu. Podobnie dla urządzeń wyjściowych można zorganizować transmisję danych bezpośrednio z pamięci operacyjnej. Taki cykl nazywa się cyklem odczytu. W systemach mikroprocesorowych transmisja pomiędzy pamięcią i urządzeniem zewnętrznym odbywa się pod kontrolą specjalnego sterownika, tzw. sterownika DMA. Przed rozpoczęciem pracy należy dokonać inicjalizacji pracy sterownika DMA, czyli go odpowiednio zaprogramować. Podstawowe parametry do zaprogramowania to:
- liczba transmitowanych bajtów,
- adres początkowy odpowiedniego obszaru pamięci,
- rodzaj transmisji.
Transmisja DMA dotyczy zawsze spójnego obszaru pamięci. Obszar ten jest zapisywany przez urządzenie wejściowe w czasie cyklu zapisu lub jest odczytywany (i dane są transmitowane do urządzenia wyjściowego) w czasie cyklu odczytu. Jak zostało powiedziane w wykładzie XIII system magistralowy ma tę cechę, że z magistrali mogą jednocześnie korzystać tylko dwa urządzenia. Ponieważ w czasie transmisji DMA do magistrali dołączona jest pamięć i sterownik urządzenia, to mikroprocesor musi być odłączony. Mikroprocesor jest wyposażony w odpowiednie wejście wstrzymujące jego pracę. W przykładowym mikroprocesorze Z-80 wejście to nazywa się BUSRQ. Gdy mikroprocesor otrzyma ten sygnał, to dokończy wykonanie aktualnego cyklu maszynowego (nie musi kończyć cyklu rozkazowego) i wysyła sygnał BUSACK informujący inne układy o wstrzymaniu pracy. Wtedy magistrala systemowa przechodzi pod kontrolę sterownika DMA, który musi zapewnić odpowiednie sygnały na magistrali adresowej (adresy pamięci) i odpowiednie sygnały sterujące. W czasie cyklu zapisu sterownik generuje sygnały i
oraz
i
. W czasie cyklu odczytu sterownik generuje sygnały
i
oraz
i
.
Rysunek XV.5 Konfiguracja układów i połączenia w systemie DMA
Na rysunku XV.5 pokazano jak współpracują ze sobą poszczególne układy w systemie mikroprocesorowym wykorzystującym transmisję DMA. Akcja zaczyna się od tego, że sterownik danego urządzenia zewnętrznego wysyła sygnał DRQ do sterownika DMA czyli zgłasza chęć transmisji. Wtedy sterownik DMA wysyła do mikroprocesora sygnał BUSRQ żądając wstrzymania pracy. Mikroprocesor po zakończeniu cyklu maszynowego oddaje sterowanie magistralą wysyłając sygnał BUSACK. Po tym sygnale sterownik DMA inicjuje samą transmisję. Po zakończeniu transmisji sterownik zwalnia magistralę wyłączając sygnał BUSREQ i znowu przejmuje ją mikroprocesor wyłączając sygnał BUSACK.
W najprostszym przypadku wyróżnia się dwa rodzaje transmisji:
Transmisja blokowa polega na tym, że sterownik DMA prowadzi transmisję bez przerwy, aż do wyczerpania zaprogramowanej liczby bajtów. Transmisja naprzemienna polega na tym, że po każdym przesłaniu jednego bajtu sterownik oddaje magistralę mikroprocesorowi, aby on wykonał jeden cykl maszynowy. W ten sposób w systemie wykonują się dwa procesy równolegle. Wykonywany jest jeden cykl maszynowy programu i przesyła się jeden bajt transmisji DMA. Taki sposób transmisji nazywany jest czasem transmisją z kradzieżą cykli i jest wygodny w przypadku długich transmisji DMA.
« poprzedni punkt |