close

Közvetlen memória hozzáférés

Ugrás a navigációhoz Ugrás a kereséshez
Image
Rendszer működtetése DMAC -val

A számítástechnikában a számítógép DMA ( közvetlen memóriahozzáférése , " közvetlen memóriaelérés ") az a mechanizmus, amely lehetővé teszi más alrendszerek számára, például a perifériák számára, hogy közvetlenül hozzáférjenek a belső memóriához adatcsere céljából olvasás és/vagy írás közben bevonva a vezérlőegységet (CPU) minden egyes átvitt bájthoz a szokásos megszakítási mechanizmuson keresztül , és az azt követő kérést a kívánt műveletre vonatkozóan, de átvitt blokkonként egyetlen megszakítást generálva. [1] [2]

Leírás

A DMA-nak tehát a közvetlen hozzáférés-vezérlőn (DMAC) keresztül az a feladata, hogy a buszon áthaladó adatokat kezelje, lehetővé téve a különböző sebességgel dolgozó perifériák közötti kommunikációt anélkül, hogy a CPU-t hatalmas megszakítási terhelésnek lenne kitéve, amely folyamatosan megszakítaná a megfelelő feldolgozást . ciklus .

A DMA-t számos hardverrendszer használja, például lemezmeghajtó - vezérlők , grafikus kártyák , hálózati kártyák és hangkártyák .

Lényegében a DMA átvitel során egy memóriablokkot másolnak át egyik eszközről a másikra. Az adatbusz leválasztása a processzorról , hogy azt a DMA vezérléséhez rendelje, amelyet ez utóbbi a két periféria közötti adatátvitelre használ, a DMAC kérésére buszkapcsolókon keresztül történik. A CPU egyszerűen kezdeményezi az átvitelt az adatbusz felszabadításával, míg a tényleges átvitelt a DMA vezérlő (DMAC) végzi. Tipikus eset egy memóriablokk áthelyezése egy külső memóriameghajtóról a fő memóriába . Ha ez a művelet – ahogy az a DMA-nak köszönhetően megtörténik – nem blokkolja a processzort, akkor folytathatja az egyéb műveletek végrehajtását.

A DMA a CPU és a perifériák közötti átvitelt különböző vonalak (nyugtázás, kérés, vezérlés) és a két DC (Data Counter) és IOAR (Input / Output Address Register) regiszterek segítségével kezeli . Amikor a CPU-nak adatra van szüksége a memóriában, betölti azt a címet, ahonnan a műveletet elindítja az IOAR-ban, és az egymást követő, DC-ben feldolgozandó adatok számát, tájékoztatva a DMA-t egy további bitről, ha olvasási vagy írási műveletről van szó. Ezen a ponton a DMA elküldi a kérést a perifériának, és amikor megkapja a nyugtázó jelet, megkezdi az átvitelt. Minden lépésben az IOAR-t növeljük és a DC-t addig csökkentjük, amíg a DC egyenlő nem lesz 0-val.

A DMA és az I/O közötti átvitel többféle módon történhet:

  • Burst Transfer : Az átvitel megkezdése után a DMA a CPU költségére fenntartja a BUS vezérlését, egészen addig, amíg le nem fejeződik: a CPU hozzáférése a buszhoz az átvitel során mindvégig megtagadva marad. Ez azt feltételezi, hogy az eszköz és a memória olyan gyors és tartós átvitelt tesz lehetővé, amennyire a DMA-vezérlőnek szüksége van;
  • Cikluslopás : A DMA egyszerre csak egy teljes ciklust hajt végre (azaz minden ciklushoz interfész a perifériával, és csak akkor hajtja végre az átvitelt, ha készen áll, azaz kézfogással). Ennek eredményeképpen az az idő, amely alatt a CPU-tól megtagadják az adatbuszhoz való hozzáférést, töredezettebb;
  • Átlátszó / Rejtett : A DMA csak akkor foglalja el a buszt, ha a CPU-nak nincs rá szüksége. Ennek érdekében a DMA figyeli a CPU-t, és csak akkor indít buszciklust, ha a CPU-ban végrehajtott utasítás elég hosszú ahhoz, hogy lehetővé tegye, és ha ez az utasítás nem vonatkozik a BUS-on történő átvitelekre.

A scatter-gather DMA technika lehetővé teszi az adatok több memóriarégióba történő átvitelét egyetlen DMA tranzakció során. Az eredmény megegyezik a normál DMA kérések láncolatával, de ez tovább mentesíti a CPU-t a megszakításoktól és az adatmásolási műveletektől.

A DMREQ mozaikszó a DMA REQuest rövidítése . A DMACK a DMA nyugtázás rövidítése .

Művelet

A DMA chip belsejében legalább négy regiszter van, amelyekhez a CPU-ban futó szoftver hozzáfér:

  1. Az első az olvasás vagy írás kezdő memóriacímét tartalmazza
  2. A második megszámolja az átvinni kívánt bájtok (vagy szavak) számát
  3. A harmadik a használandó eszközszámot vagy I/O-címteret határozza meg, amely meghatározza a kívánt I/O-eszközt
  4. A negyedik határozza meg, hogy az adatokat az I / O eszközről kell-e olvasni, vagy arra kell írni

Ezért egy 32 bájtos blokk átviteléhez a 100-as memóriacímről a terminálra (ez a 4-es eszköz) a CPU beírja a 100-as, 32-es és 4-es számokat az első három DMA-regiszterbe, valamint az írási kódot (ebben az esetben mi tegyük fel, hogy 1) a negyedik regiszterben. Ezen a ponton a DMA buszkérést ad a 100. bájt memóriából való olvasására, hasonlóan ahhoz, ahogy a CPU tenné. A bájt megszerzése után a DMA vezérlő I/O kérést küld a 4. eszköznek, hogy megírja a bájtot. A műveletek befejezése után a DMA vezérlő 1-gyel növeli a címregiszterét, és 1-gyel csökkenti a számlálóregiszterét. Ha a számlálóregiszter továbbra is pozitív, akkor egy másik bájt beolvasásával és a készülékbe történő beírásával folytatja.

Végül, amikor a számláló törlődik, a DMA vezérlő leállítja az adatátvitelt, és impulzust küld a CPU chiphez csatlakoztatott megszakítási vonalon. DMA jelenlétében a CPU-nak csak néhány regisztert kell inicializálnia, ami után szabadon végezhet egyéb feladatokat az átvitel befejezéséig, amit a DMA vezérlő megszakítása jelez. Egyes DMA-vezérlők két, három vagy több regiszterkészlettel rendelkeznek az egyidejű átvitelek vezérlésére.

Míg a DMA megszabadítja a CPU-t az I/O nagy terhelésétől, a folyamat nem teljesen ingyenes. Ha egy nagy sebességű eszközt, például lemezt, DMA továbbít, sok buszciklusra lesz szükség a memória és az eszköz eléréséhez. Ezen ciklusok alatt a CPU-nak várnia kell (a DMA-nak mindig magasabb a buszprioritása, mint a CPU-é, mivel az I/O eszközök alig tolerálják a késéseket). Azt a jelenséget, amely akkor fordul elő, amikor a DMA-vezérlő buszciklusokat lop el a CPU-tól, cikluslopásnak nevezzük . Még az a haszon sem téríti meg nagyrészt a hurkok kisajátítása által okozott kárt, ha nem kell bájtonként (vagy szónként) megszakítást kezelni.

Jegyzetek

  1. ^ Tanenbaum , pp. 374-375 .
  2. ^ Bucci 137-143

Bibliográfia

Kapcsolódó elemek

Egyéb projektek

Külső linkek