A közvetlen memória-hozzáférés (DMA) Flashcards
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.
kép68
Feltétele
• a vezérlő képes legyen memóriacímek generálására
• képes legyen adatátvitelre
• képes legyen buszfoglalásra (igénylés), vezérlésre (ez a busz arbitrálás tulajdonképpen)
Az adatátvitelt itt is a CPU kezdeményezi.
Előnye: megszakítások száma nagyságrendekkel csökken.
Megvalósítása
kép69
Előkészítés: (ezek a lépések megegyeznek mind a blokkos, mind a cikluslopásos átvitel esetében)
A DMA vezérlő „felprogramozása”: programozott I/O-val átvisszük a processzorból a DMA vezérlőbe az adatátvitelhez szükséges információkat (mit, hová kell vinni): (felhelyezzük az adatokat az adatsínre (1.))
• a DC-be beírjuk az átvinni kívánt adategységek számát (2.)
• IOAR-be beírjuk az adat leendő memóriabeli kezdőcímét, (3.) továbbá:
o az egységet (byte, félszó, szó)
o ad átvitel irányát
o a periféria címét
o az átvitel jellegét blokkos vagy cikluslopásos módon
o a részvevő egységeket (mem. – mem. vagy I/O – I/O átvitel)
Működés blokkos (burst) átvitel esetén: (pl.: winchester esetén)
- CPU felprogramozza a DMA vezérlőt (előkészítés fázisa) (1-3)
- A DMA vezérlő DMA request jelzést küld a processzornak (kéri a rendszersín használati jogot) (4)
- A processzor DMA acknowledge jelzéssel lemond a rendszersín használati jogról (5)
- A DMA vezérlő a kapott adatok alapján a perifériáról beírja az első átvinni kívánt adatot az IODR-be (6)
- 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 (7-9)
- A DMA vezérlő dekrementálja a DC-ben tárolt értéket, és inkrementálja az IOAR-ben tárolt értéket (egy adategységgel növel – 1, 2, 4 byte) (10)
- DMA ellenőrzi a DC tartalmát. Ha nem 0, vissza a (6)-ra, ha igen, megszakításkéréssel jelzi a CPU felé, hogy befejeződött egy blokk átvitele (pl.: 3200 byte lehet egy HDD esetén)
Cikluslopásos átvitel (cycle stealing)
Kevés, de gyors adatátvitele esetén használatos. (pl.: karakteres nyomtatók)
DMA vezérlő és CPU időosztásosan közösen használja a rendszerbuszt.
kép70
• Nincs értelmezve a címgenerálás
• Míg az utasítás-töréspontban a megszakítás feldolgozással a processzorra további munka várhat, addig a DMA töréspontban a DMA vezérlő a processzor helyett végezhet munkát
• Ez a processzor és a DMA vezérlő általi időosztásos rendszersín használat előnye
• Elve: utasítás feldolgozás felbontása pl.: a következő lépésekre: lehívás, dekódolás, operandusok lehívása, végrehajtás, visszaírás a memóriába (ezek látszanak az ábrán is rövidítve)