Mi a közvetlen memória-hozzáférés (DMA) és hogyan működik? [MiniTool Wiki]
What Is Direct Memory Access
Gyors navigáció:
Elfogadhatja a RDMA technológia, amely lehetővé teszi a hálózat számítógépeinek adatcserét a fő memóriában anélkül, hogy bármelyik számítógép processzorát, gyorsítótárát vagy operációs rendszerét bevonnák. De a DMA funkció használatával közvetlenül is csatolhat adatokat egy csatolt eszközről a számítógép alaplapjának memóriájába. Ez a bejegyzés innen: MiniTool elsősorban a DMA-ról beszél.
A közvetlen memória-hozzáférés meghatározása
Először is, mi a közvetlen memória-hozzáférés? A közvetlen memória-hozzáférést rövidíthetjük DMA-nak, ami a számítógépes rendszerek jellemzője. Lehetővé teszi a bemeneti / kimeneti (I / O) eszközök hozzáférését a fő rendszer memóriájához ( véletlen hozzáférésű memória ), függetlenül a központi processzortól (CPU), amely felgyorsítja a memória műveleteit.
Tipp: Érdekelheti ez a bejegyzés - 8 hasznos megoldás a CPU 100% -os javításához a Windows 10 rendszerben .
Közvetlen memória-hozzáférés nélkül, amikor a CPU programozott bemeneteket / kimeneteket használ, akkor általában az egész olvasási vagy írási művelet alatt teljesen elfoglalt, így más feladatokat nem tud végrehajtani. A DMA-val a CPU először megkezdi az átvitelt, majd az átvitel közben további műveleteket hajt végre, és végül a művelet befejezése után megszakítást kap a DMA vezérlőtől (DMAC).
A közvetlen memóriakapcsolat akkor hasznos, ha a CPU nem képes lépést tartani az adatátviteli sebességgel, vagy amikor a CPU-nak munkát kell végeznie, miközben viszonylag lassú I / O adatátvitelt vár.
Több hardveres rendszer képes közvetlen memória-hozzáférést biztosítani, például lemezmeghajtó-vezérlők, grafikus kártyák, hálózati kártyák és hangkártyák. A DMA-t a chipes adatátvitelre is használják többmagos processzorokban. A közvetlen memória-hozzáférési csatornákkal nem rendelkező számítógépekhez képest a DMA-csatornákkal rendelkező számítógépek sokkal kevesebb CPU-rezsivel tudnak adatokat továbbítani az eszközök között.
A közvetlen memóriakapcsolat „memóriából memóriába” is használható, hogy adatokat másoljon vagy mozgasson a memóriában. Drága memóriaműveleteket (például nagy másolatokat vagy szórványgyűjtő műveleteket) tud átvinni a CPU-ból egy dedikált DMA motorba. A DMA fontos a hálózat-chip-en és a memória kiszámításában.
Hogyan működik a közvetlen memóriaelérés?
Akkor hogyan működik a közvetlen memória-hozzáférés? A normál közvetlen memória-hozzáférés (más néven harmadik féltől származó DMA) DMA-vezérlőt alkalmaz. A DMA vezérlő memóriacímeket állíthat elő, és elindíthatja a memória olvasási vagy írási ciklusait. Több olyan hardverregiszterre is kiterjed, amelyeket a CPU olvashat és írhat.
Ezek a regiszterek memóriacím-regiszterből, bájtszám-regiszterből és egy vagy több vezérlő regiszterből állnak. A közvetlen memória-hozzáférés vezérlő szolgáltatásaitól függően ezek a vezérlő regiszterek meghatározhatják a forrás, a cél, az átviteli irány (beolvasási / kiírási eszközről írása vagy írása), az átviteli egység méretének és / vagy a bájtokat egy sorozatban átadni.
A bemeneti, kimeneti vagy memória-memória műveletek végrehajtásához a gazdagép processzor inicializálja a DMA vezérlőt az átvihető szavak számával és a használni kívánt memória címmel. Ezután a CPU utasítja a perifériát az adatátvitel megkezdésére.
Ezután a Direct Memory Access vezérlő felajánlja a címeket és az olvasási / írási vonalakat a rendszermemóriába. Minden alkalommal, amikor egy byte adat előkészítésre kerül a perifériás eszköz és a memória közötti átvitelre, a DMA vezérlő addig növeli a belső címregiszterét, amíg a teljes adatblokk át nem kerül.
Működési módok
A közvetlen memória-hozzáférés különböző működési módokban eltérő módon működik.
Folyamatos üzemmód
Burst módban a teljes adatblokkot folyamatos sorrendben továbbítják. Amint a CPU lehetővé teszi a DMA-vezérlő számára a rendszersínhez való hozzáférést, a DMA-vezérlő az adatblokkban lévő összes bájtot átviszi, mielőtt a rendszerbuszok vezérlését visszaengedné a CPU-ba, de ez a CPU-t inaktívvá teszi jelentős hosszú ideig. Ezt az üzemmódot „Block Transfer Mode” -nak is hívják.
Ciklus lopási mód
A ciklus lopási módot olyan rendszerben alkalmazzák, ahol a CPU-t nem lehet kikapcsolni a sorozatfelvételi módhoz szükséges ideig. A ciklikus lopás módban a DMA vezérlő a BR (Bus Request) és a BG (Bus Grant) jelek segítségével szerzi meg a hozzáférést a rendszersínhez, amelyek megegyeznek a sorozatkép móddal. Ez a két jel vezérli a CPU és a DMA vezérlő közötti interfészt.
Egyrészt a ciklus lopási módban az adatblokk átviteli sebessége nem olyan gyors, mint a sorozatkép módban, másrészt a CPU üresjárati ideje nem olyan hosszú, mint a sorozatkép módban.
Átlátszó mód
Az átlátszó mód a leghosszabb időt veszi igénybe az adatblokkok átvitele során, de ez a leghatékonyabb mód a rendszer teljes teljesítményét tekintve is. Átlátszó módban a Direct Memory Access vezérlő csak akkor továbbít adatokat, ha a CPU olyan műveleteket hajt végre, amelyek nem használják a rendszerbuszokat.
Az átlátszó mód fő előnye, hogy a CPU soha nem hagyja abba a programjainak végrehajtását, és a közvetlen memória-hozzáférés átvitele időben ingyenes, míg hátránya, hogy a hardvernek meg kell határoznia, hogy a CPU mikor nem használja a rendszerbuszokat, ami képes bonyolult legyen. Ezt „rejtett DMA adatátviteli módnak” is nevezik.