e-gradiva     Sistemi Motorola Omrežja      
  logotip  
SERŠ Maribor    

Neposreden dostop do pomnilnika

Večina srednjih in velikih računalnikov ima enega ali več vhodno-izhodnih procesorjev, ki skrbijo za vse operacije z vhodno-izhodnimi napravami. Pri tem načinu CPE nima neposrednega dostopa do registrov naprav. Svoje vhodno-izhodne zahteve sporoča vhodno-izhodnim procesorjem, ki imajo dostop do registrov ter poskrbijo, da se bodo zahteve izvršile.

Na računalnikih z vhodno-izhodni procesorji so vhodno/izhodne naprave priključene na posebna vodila, ki služijo za njihovo komuniciranje z vhodno-izhodnimi procesorji. Ti so z drugimi vodili povezani z glavnim pomnilnikom običajno preko krmilnika pomnilnika. Povezovalne strukture, ki se uporabljajo za priključevanje vhodno-izhodnih naprav, se pri različnih računalnikih precej razlikujejo.

Vhodno/izhodni procesorji so zaradi manjših stroškov včasih realizirani tako, da uporabljajo oziroma si delijo določene funkcije s CPE. V takih primerih vhodno-izhodnih procesorjev kot fizično samostojnih enot pogosto sploh ni. Obstajajo pa v logičnem smislu kot samostojne enote, od katerih programer lahko zahteva izvedbo vhodno-izhodnih operacij.

Z izrazom neposreden dostop do pomnilnika ali DMA, se želi poudariti, da je možen dostop do pomnilnika mimo mikroprocesorja. V sistemih, ki DMA ne uporabljajo, ima namreč dostop do pomnilnika samo mikroprocesor. Vhodno-izhodne naprave (oziroma njihovi krmilniki) lahko prenašajo podatke v ali iz pomnilnika samo s sodelovanjem mikroprocesorja. Ker mikroprocesor pri teh prenosih izvaja program, se ta vrsta vhodno-izhodnih prenosov označuje kot programski vhod-izhod.

Za vsako preneseno pomnilniško besedo je pri programskem vhodu-izhodu potrebno izvršiti nekaj (tipično od 4 do 8) ukazov. Če upoštevamo, da mikroprocesor za vsak ukaz potrebuje čas v trajanju več urnih period, je razvidna počasnost programskega vhoda-izhoda. Pri neposrednem dostopu do pomnilnika je seveda za prenos ene besede potreben samo pas v tajanju enega dostopa do pomnilnika. Značilno za vhodno-izhodne prenose je, da skoraj vedno želimo prenesti v ali iz pomnilnika polje besed določene dolžine. Tipične dolžine polj so nekaj sto besed n‐ le redko manj. Za te vrste prenosov so proizvajalci mikroprocesorjev razvili posebne elemente, ki so znani pod imenom DMA krmilnik.

Večina DMA krmilnikov je namenjena prenosu med pomnilnikom in krmilniki vhodno-izhodnih naprav, obstajajo pa tudi DMA krmilniki, ki lahko vršijo prenose iz enega dela v drug del krmilnika. Nekateri lahko med prenosi tudi iščejo v naprej določen vzorcebitov v pomnilniški besedi. DMA krmilniki niso vedno realizirani kot posebni elementi (čipi). V principu je namreč mogoče integrirati DMA krmilnik v krmilnik vhodno-izhodne naprave in danes obstaja kar nekaj čipov te vrste. Tu je pomembno poudariti, da se s tako integracijo lastnosti DMA prenosov ne spremenijo.

PrenaŠanje podatkov z DMA

Vsak prenos polja besed vhodno-izhodne naprave v pomnilnik (ali obratno) obsega pri prenosu vsake besede naslednje zaporedje šesti operacij:

  1. Ugotavljanje pripravljenosti vhodno-izhodne naprave.
  2. Branje podatka iz naprave.
  3. Pisanje podatka v pomnilnik.
  4. Izračun pomnilniškega naslova naslednjega podatka.
  5. Štetje prenešenih podatkov.
  6. Primerjava števila prenešenih podatkov z dolžino polja.

To zaporedje se ponavlja, dokler pri nekem prenosu v zadnji točki ne ugotovimo, da je prenešeno celo polje. Pri programskem vhodu-izhodu lahko pri nekaterih mikroprocesorjih realiziramo več operacij z enim ukazom. Kljub temu da so v programih včasih skrite, ni nobenega dvoma, da je vsaka od naštetih operacij nujno potrebna.

Ugotavljanje pripravljenosti vhodno-izhodne naprave
Pri opisu programskega vhoda-izhoda sem povedal, da se tam pripravljenost ugotavljaali z branjem registraali s prekinitvenim signalom .branje registra je počasno - zahteva najmanj en dodatenbralnicikel in zato za moj namen ni prava rešitev. Pač pa je zelo hitra rešitev uporaba posebnega signala, ki spremeni stanje ob prehodu naprave v pripravljeno stanje in obratno. Ta signal je podoben prekinitvenemu pri programskem vhodu-izhodu z uporabo prekinitev, vendar sedaj vodi v DMA krmilnik.
Branje podatka iz naprave
To imamo pri prenosu podatkov iz naprave - pri prenosu podatkov v napravo imamo seveda operacijo pisanja podatka v naprave. Za obe velja, da ju lahko realiziramo podobno kot bralni in pisalnicikel pri mikroprocesorju. Eden od načinov za realizacijo te operacije je, da krmilnik generira naslove (z njimi izbere napravo) in kontrolne signale na enak način kot mikroprocesor.
Pisanje podatka v pomnilnik
To velja pri prenosu iz naprave - pri prenosu v napravo imamo namesto pisanja sevedabranje. V obeh primerih je rešitev preprosta: DMA krmilnik morabiti sposoben generirati naslovne (naslov pomnilniške lokacije) in kontrolne signale na enak način kot mikroprocesor.
Izračun pomnilniškega naslova naslednjega podatka
Prenos polja besed v ali iz pomnilnika pomeni, da potrebujemo nek register, ki vsebuje pomnilniški naslov prenašane besede. Po prenosu se mora naslov spremeniti tako, da kaže na naslednjo besedo v polju. Večina DMA krmilnikov deluje tako, da se pred pričetkom prenosa vpiše v ta register začetni naslov polja, ki se po vsakem prenosu poveča za ena.
Štetje prenešenih podatkov
Vsako polje besed ima določeno dolžino, ki se lahko giblje v intervalu od 1 do neke zgornje meje (tipično 216). Vsak DMA krmilnik vsebuje register dolžine polja - ta se vpiše vanj pred pričetkom prenosa. Večina DMA krmilnikov deluje tako, da se o vsakem prenosu vsebina tega registra zmanjša za 1. Možne so seveda tudi drugačne rešitve, ki pa se ne uporabljajo veliko. Podobno kot pri operaciji računanja naslova, je tudi čas za to operacijo zanemarljiv; običajno se izvrši že med izvajanjem operacije 3.
Primerjava števila prenešenih podatkov z dolžino polja
Ta primerjava je potrebna za ugotavljanje konca DMA prenosa. Če je štetje prenešenih podatkov realizirano tako kot smo pisali v točki 6, je vrednost nič v registru dolžine polja znak, da sobile prenesene vsebesede. V tem primeru preide DMA krmilnik v tako imenovano neaktivno stanje in prepusti vodilo mikroprocesorju. Program mora seveda na nek način zvedeti, da je prenos opravljen. Večina krmilnikov je zato narejenih tako, da se takrat postavi ustrezne bite v enem od registrov krmilnika, lahko pa se aktivira tudi prekinitvena zahteva.

Iz opisa operacij sledita dve pomembni ugotovitvi. Prva je, da mora vsak DMA krmilnik vsebovati najmanj naslednje sposobnosti in dele:

Druga ugotovitev je, da so DMA prenosi vedno bistveno hitrejši od programskega vhoda-izhoda.

SERŠ Maribor, Strokovna gimnazija, leto: 2002, avtor: Jure Štern