SzA13. A közvetlen memória-hozzáférés (DMA) Flashcards
DMA Fogalma
Használata nagy tömegű adat esetén célszerű, ahol gyors perifériákat alkalmazunk. DMA használatával az átvitelt a processzor használata nélkül valósítjuk meg.
DMA feltétele, előnye
Feltétele:
- képes legyen memóriacímek generálására
- képes legyen adatátvitelre
- képes legyen busz vezérlési funkciókra (foglalás, vezérlés)
Lényege: több adatot tudunk átvinni CPU nélkül
Előnye: megszakítások száma nagyságrendekkel csökken.
DMA megvalósítása
DMA működése (előkészítés)
Előkészítés (felparaméterezés), programozott I/O-val történik, átvitelhez szükséges információk átvitele pld.:
- átvitel iránya,
- I/O egység címe,
- memóriacím kezdőértéke,
- átvivendő egységek száma
- átviendő adatok jellege (bájt, félszó, szó)
- átvitel módja (ciklus lopásos, blokkos)
- részt vevő egységek
- prioritási értékek rendelése
DMA működése (Blokkos átvitel)
Blokkos (burst cycle mode)
- CPU felparaméterezi a DM vezérlőt (előkészítés fázisa)
- A DM vezérlő DMA request jelzést küld a CPU-nak (kéri a rendszersín használati jogot)
- A processzor DMA acknowledge jelzéssel lemond a rendszersín használati jogáról
- DMA vezérlő a kapott adatok alapján perifériáról beírja az első átvinni kívánt adatot IODR-be
- A DMA vezérlő az IODR-ben lévő adatot a rendszersínen keresztül beírja az IOAR általá meghatározott memóriacímre
- A DMA vezérlő dekrementálja a DC-ben tárolt értéket, és inkrementálja az IOAR-ben tárolt értéket
- DMA ellenőrzi a DC tartalmát. Ha nem 0, vissza a 4. lépésre, ha igen, akkor megszakításkéréssel jelzi a CPU felé, hogy befejeződött egy blokk átvitele (pl 3200 bájt lehet egy HDD esetén)
DMA működése (cikluslopásos átvitel)
egy-egy adat átvitele esetén (karakteres nyomtatók) DMA vezérlő és CPU időosztásosan közösen használja a rendszerbuszt.
1. felprogramozás
2. DMA request vezérlővonal aktiválása
3. a DMA töréspontban a CPU lemond a buszhasználatról (DMA acknowledge)
4. Adatátvitel I/O és a memória között
5. Ha DC nem 0, de az I/O nincs “ready” állapotban, akkor a vezérlést visszaadja a CPU-nak
6. Ha DC 0, akkor megszakítás jelzést küld és befejezi az adatátvitelt