Kontroler DMA.doc

(226 KB) Pobierz

Kontroler DMA              213

Rozdział 4. Kontroler DMA

DMA jest skrótem od angielskiego określenia Direct Memory Access, oznaczającego bezpośredni dostęp do pamięci. Mowa tu oczywiście o dostępie do pamięci dla urzą­dzeń peryferyjnych, gdyż kontaktu z nią procesora nie należy już w żaden sposób usprawniać. Ten stosunkowo skąpo opisany element architektury komputera IBM PC wymaga wyjaśnień.

W pierwowzorze nowoczesnych komputerów AT-386 i 486, tj. w IBM PC, zastoso­wano 8-bitowy kontroler DMA typu 823 7A. Stanowiło to w tamtych czasach znaczne ułatwienie pracy procesorów 8-bitowych przy realizacji cykli dostępu do pamięci, zdejmując z nich obowiązek bezpośredniej realizacji transmisji między blokowymi urządzeniami peryferyjnymi a pamięcią oraz przeadresowywania bloków pamięci. Obecnie nowoczesne procesory 80386 i 80486, dysponujące 32-bitową szyną danych, stały się tak szybkie, że realizowane w mikrokodzie procesora rozkazy transmisji bloko­wej typu rep movsw są bardziej wydajne niż transmisje blokowe w cyklu DMA. Co gorsza, kilka generacji wzwyż od IBM PC, tj. w nowoczesnych AT, doskonała skądinąd idea DMA napotyka na wąskie gardło 8-bitowych kontrolerów DMA (spowalnianych dodatkowo stosowaniem zegara 4.77 MHz), które powstały dla potrzeb procesorów 8086/88.

Począwszy od IBM PC/AT dodano drugi kontroler 8237A, co pozwoliło na realizację obsługi urządzeń 16-bitowych. Dopiero jednak systemy EISA i MCA, o odmiennej filo­zofii i architekturze, powróciły do stosowania „na poważnie" idei DMA, wykorzystując szybkie, 32-bitowe układy scalone nowej generacji. Ideę bezpośredniej komunikacji urządzeń wejścia-wyjścia z pamięcią przedstawia rysunek 4.1.

Urządzeniem wejścia-wyjścia jest kontroler napędu dysków elastycznych (zarówno ten zainstalowany na płycie głównej jak i ten umieszczony na karcie wkładanej w złącza rozszerzenia), kontroler jednostki pamięci taśmowej (ang. streamer) lub inne podobne urządzenie. Każdemu z nich przyporządkowany jest jeden z tzw. kanałów DMA, tj. logicznych strumieni danych, których przepływ jest inicjowany przez procesor.


214

Anatomia PC

 

 

Rysunek 4.1.                 Ukł

Idea                                  vve

ady      Xl               r\

Procesor

<f               ^>     Pamięć

komunikacji                       / układów wejścia-wyjścia                    l

f     ,

 

/i             M

Kontroler DMA

>

 

z pamięcią

IX

N

Każdy z układów 8237A może obsługiwać cztery takie strumienie. Możliwy jest też kaskadowy sposób łączenia kontrolerów 8237A; jedno z wejść układu głównego (Master) obsługuje wtedy następny kontroler (Slave) i jest tym samym „stracone". To rozwiązanie stosowane jest w IBM PC/AT i udostępnia siedem kanałów DMA.

Żądające obsługi urządzenie, stowarzyszone z danym kanałem DMA, wysyła sygnał DREQ (DMA Reąuesi). Układ 8237A reaguje na to przejęciem kontroli nad magistra­lami systemu i przeprowadzeniem wymaganej transmisji, np. jednego sektora odczyta­nego z dyskietki do bufora w pamięci operacyjnej (RAM), gdzie odbywa się połączenie sektorów w plik danych. W tym czasie procesor jest wolny i może, do czasu wystą­pienia przerwania od kontrolera napędu dysków elastycznych (IRQ 6 - odczytano kolej­ny sektor), zajmować się obróbką tekstu lub grafiki. Należy tu dodać, że oczywiście nie zawsze oznacza to dalsze wykonywanie programu. Trzeba bowiem pamiętać, że szyny: danych i adresowa, są we władaniu kontrolera DMA, a więc procesor może przetwarzać tylko to, co ma w swoich rejestrach. Wszelkie odwołania do pamięci muszą czekać. Sytuację ratuje trochę pamięć podręczna procesora (ang. cache memory) — stosowana w procesorze 80486 wewnętrzna pamięć o wielkości 8 kB. Może w niej być jednak umieszczany tylko kod programu, a nie dane. Dopiero następca procesora 80486 -Pentium - posiada podręczną pamięć danych.

Ta sama akcja realizowana bez układu DMA składałaby się z kolejnych zapisów i od­czytów portu kontrolera napędu dysków elastycznych. Kolejne etapy to: załadowanie akumulatora, przesłanie zawartości akumulatora do portu sterującego, odczyt portu danych do akumulatora, przesłanie zawartości akumulatora do komórki pamięci. To dopiero jeden bajt. Oczywiście przy każdym z tych kroków procesor ma „pełne ręce roboty" i nie ma mowy o wielozadaniowości.

Układ scalony 8237A

Rysunek 4.2 przedstawia wyprowadzenia układu scalonego typu 8237A. Jak wiele innych układów, jest on obecnie zawarty w jednym z kilku układów scalonych wysokiej skali integracji, które znajdują się na nowoczesnej płycie głównej. Przykładowo układ 82C206 zawiera programowalne generatory przebiegów czasowych, kontroler DMA, kontroler przerwań i pamięć nieulotną CMOS. Jednak funkcje i znaczenie poszczegól­nych układów pozostały, ze względu na zachowanie kompatybilności w dół, te same.


215

Kontroler DMA

 

Rysunek 4.2.

Rozkład wyprowadzeń układu 823 7 A

 

 

Z] A7

Z] A5 Zł A4

2 3 4 5

40 39 38 37 36

IOR d

IOW  d

MEMR  d

MEMW  d PIN5  d

Z] EOP

 

READY  d

6

35

Z] A3

 

HLDA  d

7

34

ZD A2

 

ADSTB  d

8

33

Z] A1

 

AEN  d

9

32

ZJ AO

 

HRQ  d CS  d

"   8237

31 30

=3 Vcc Z3 DBO

 

CLK  d

12

29

Z] DB1

 

RESET  d

13

28

Z] DB2

 

DACK2  d

14

27

...

Zgłoś jeśli naruszono regulamin