DMA
Priamy prístup do pamäte - DMA
Priamy prístup do pamäte - DMA
Inicializácia prenosu DMA
Priebeh prenosu DMA



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