Priamy prístup
do pamäte - DMA
Teoreticky (nie v PC ) pomocou priameho prístupu
do pamäte (DMA - Direct Memory Access -, prenos, ktorého organizáciu riadi
iné zariadenie ako mikroprocesor), možno realizovať vysoko rýchlostný prenos
dát. Nevýhodou takéhoto prenosu je nemožnosť predspracovania prenášaných
dát. Nutnosť obnovovania obsahu dynamických pamätí v PC neumožňuje plne
využívať súvislý prenos (dávkový a blokový) ale len pomalší prenos DMA
v jednom cykle s následným pozastavením PC po 1 cykle.
 |
Obr. 83. Pripojenie
DMAC typu 8237A v počítači s 16 bitovou adresovou zbernicou. |
 |
Obr. 84. DMAC 8237 v
systéme zberníc PC pre zabezpečenie DMA prenosu pre 4 zariadenia. DMAC
8237 priamo môže zadať len 8 LSb adresy. Zvyšné adresné bity sa ukladajú
po častiach pomocou synchronizačného signálu ADSTB do registra stránky
74LS373 , takže nakoniec sa vytvorí potrebná napríklad 20 bit adresa pamäti. |
DMA prenos je špeciálny typ prenosu, bez účasti
mikroprocesora (výstupy mikroprocesora ako aj ďalšie buffere na zbernici
sú signálom BUSEN, generovaným mikroprocesorom, počas prenosu uvedené do
tzv. tretieho stavu a sú nevodivé), kde špeciálny programovateľný obvod
- kontrolér DMA (DMAC - často typ 8237A) preberá kontrolu nad riadením
zberníc. Vlastnosti kontroléra DMAC (typu 8237A) možno zhrnúť do nasledujúcich
bodov:
-
DMAC obsahuje 4 prenosové kanály a každý z nich môže
adresovať až 64 KB pamäti.
-
Na základe požiadavky DREQ od I/O zariadenia preberá
DMAC funkciu riadenia zbernice. V prípade, že žiadajúcich zariadení je
viacej, uplatní sa vstavaný prioritný systém (voľba pevnej alebo rotujúcej
priority).
-
Hoci obvod DMAC možno naprogramovať aj do režimu
súvislého prenosu dát, v PC sa činnosť DMAC pozastavuje len na vykonanie
prenosu jedného slova, aby sa nenarušili podmienky obnovovania obsahu dynamických
pamätí.
 |
Obr. 85.
Postupnosť činností pri obsluhe žiadosti o DMA prenos. |
Inicializácia
prenosu DMA
Pred vykonaním konkrétneho prenosu cez niektorý z
kanálov DMA musí byť nastavený:
-
Typ a smer prenosu (z pamäti alebo do pamäti, pre
8 alebo 16 bitové dáta).
-
Register začiatočnej adresy pamäte. Pretože v PC
je adresa najmenej 20 bitov, používa sa na doplnenie adresy z 8 bitov na
potrebných 20 bitov, resp. 32 bitov ešte ďalší tzv. register stránky (na
obrázku 84 označený ako 74LS373). Adresa sa teda ukladá po častiach pomocou
špeciálneho synchronizačného signálu ADSTB (Address strobe).
-
Register dĺžky prenosu (počet bajtov). V PC sa používa
DMA prenos po 1 slove.
Inicializácia kontroléra DMAC sa uskutočňuje zápisom
niekoľkých riadiacich slov do vnútorných registrov DMAC, ktoré sú adresované
pomocu adries na zbernicových vodičoch A0 - A3. Pretože DMAC 8237A má len
8 bitovú dátovú zbernicu, tak niektoré adresy predstavujúce 16 bit bunky
sa nahrávajú na dva krát po 8 bitových slovách.
 |
Obr. 86. DMAC s používa
signály MEMR/W a IOR/W, čo umožňuje 3 typy prenosov dát (Prenos DMA typu
MEMR - MEMW vyžaduje 2 prenosové kanály DMA.). |
Priebeh prenosu
DMA
Prenos DMA sa vykonáva na žiadosť DREQ niektorého
z vonkajších adaptérov.
-
DMAC rozhodne o priorite žiadosti konkrétnej DREQ
s ohľadom na prioritu ostatných DREQia vyšle na zbernicu signál
HRQ. Tento sa zosynchronizuje s hodinami mikroprocesora na zbernicový signál
HOLD.
-
Mikroprocesor v reakcii na signál HOLD zakončí prebiehajúci
strojový cyklus, uvedie svoje výstupy na zbernici do nevodivého stavu a
vyšle naspäť k DMAC signál odpovede HOLDA (Hold Acknowledge) , čím signalizuje
že zbernica bude počnúc nasledúcim cyklom voľná pre začatie DMA prenosu.
Podobný signál (BUSEN - Bus enable) vyšle mikroprocesor aj smerom k budičom
zberníc AB, DB, a CB, ktoré odpoja mikroprocesor od systémovej zbernice.
-
DMAC na príchod signálu HLDA zareaguje vyslaním signálu
DACK k príslušnému adaptéru. (Pre žiadajúci adaptér je tento signál stane
výberovým, umožňujúcim mu prístup na zbernicu).
-
DMAC sa teraz môže ujať riadenia prenosu. V zapojení
na obr.84 najprv vyšle hornú časť adresy (cez vodiče dátovej zbernice D0
- D7, D8 - D12) v sprievode riadiacich signálov AEN a ADSTB, ktorá reprezentuje
časť adresy zdroja alebo cieľa prenosu. Po uložení hornej časti adresy
pomocou signálu ADSTB sa vodiče D0 - D7 stanú znova súčasťou zbernice DB
a vodiče A0 - A7 znovu dolnou časťou zbernice AB. Signál AEN súčastne inicializuje
výstup signálu BUSEN.
-
DMAC odteraz už ovláda ridenie prenosu dát cez zbernicu
a počas niekoľkých hodinových cyklov uskutoční prenos jednej položky údajov.
Na rozdiel od mikroprocesora pomocou signálov MEMR a IOW ovláda súčastne
prenos dát z pamäti na I/O zariadenie, resp. súčastne prenos opačným smerom
pomocou signálov MEMW a IOR. ( Na takýto typ prenosu stačí jeden kanál
DMA. Na prenos typu pamäť - pamäť sú však potrené 2 kanály DMA, pretože
signály MEMR a MEMW sa nemožu generovať súčastne. Napríklad kanál DMA0
môže špecifikovať zdroj dát a kanál DMA1 zase cieľ prenosu dát. V tomto
prípade sa nevyžaduje dialog DREQ - DACK.)
-
Obecne v prípade dávkového alebo blokového prenosu
by DMA prenos dát riadený DMAC typu 8237A pokračoval až do zakončenia prenosu
celého bloku dát (terminal count - keď počítadlo bajtov dopočíta do 0 )
alebo do okamihu pozastavenia DMA prenosu vonkajším signálom EOP (End of
process). Z dôvodov potreby obnovy obsahu dynamických pamätí sa v však
v PC používa len jednoslovný DMA prenos. Preto po skončení 1 prenosu DMA
sa preruší žiadosť HRQ a mikroprocesor prestane vysielať aktívny signál
HLDA. Budiče systémovej zbernice sa pripoja k mikroprocesoru a začne prebiehať
normálny procesorový zbernicový cyklus.
 |
Obr. 87.
Kontrolér DMA 8237A v PC. V súčinnosti so signálom ADSTB . (Address Strobe)
sa na uloženie adries A8 až A15 používa register 74LS373, zatiaľ čo pre
časť adresy A16 až A19 sa používa register 74LS670. Adresy A0 až A7 určuje
DMA kontrolér priamo cez výkonový budič 74LS244. Na adresovanie obvodu
8237A sa používa oddelená zbernica XA. Na adresovanie 12 vnútorných registrov
kontroléra sa používajú vývody A0 až A3. Požiadavky DMA sa vyhodnocujú
podľa priority. DRQ0 má najvyššiu prioritu (každých 15 ms refresh cyklus
obnovy dynamických pamätí). |
Zbernicové cykly mikroprocesora sa teda prekladajú
podľa požiadavky (realizovanej pomocou prerušenia INT) zbernicovými cyklami
DMA. Najvyšší dosažiteľný výkon DMA podsystému by nastal teda v prípade
pravidelneho striedania zbernicových cyklov DMA a zbernicových cykov mikroprocesora.
V skutočnosti z dôvodov zabezpečenia synchronizácie mikroprocesor prekladá
viacej svojich cyklov s cyklom DMA a preto je výsledná rýchlosť DMA prenosu
nižšia.
`
 |
Win 1250 |
Návrat na stránku |
HTML 4.0 |
 |
Back |
|
|
|
Next |
|