DMA

Kategorie: Nezařazeno (celkem: 23179 referátů a seminárek)

Informace o referátu:

Příbuzná témata



DMA

DMA (Direct Memory Access) je způsob, kterým počítače umožňují hardwarovému subsystému přímý přístup do operační paměti tzn. bez účasti procesoru. Pomocí DMA mohou počítače přenášet data mezi zařízeními a operační pamětí s podstatně menšími nároky na procesor. DMA používá mnoho komponent například řadiče disků, grafické karty, síťové karty nebo zvukové karty.

S pomocí DMA procesor pouze zprostředkuje přenos a během samotného přenosu dat může pokračovat ve své předchozí činnosti. Jakmile je přenos hotový procesor obdrží přerušení od DMA řadiče, že je přenos dokončen. Bez použití DMA v tzv. PIO (Programmed Input/Output) režimu je procesor zatížen během celého přenosu. DMA řadič poskytuje pouze několik kanálů, které se mohou použít na přenos dat. U starších počítačů typu PC/XT to byly kanály čtyři (0-3). U dnešních počítačů PC/AT jsou přidány další čtyři (4-7).

Obsah

Princip

Bez DMA by musel procesor kopírovat zdrojová data přímo na cílové zařízení. To je mnohem pomalejší než práce s pamětí RAM a to kvůli rychlosti vstupních a výstupních zařízení. Po celou dobu přenosu by procesor nemohl vykonávat žádné jiné operace vyžadující přístup na datovou sběrnici. Mohl by však pokračovat v práci na operacích, které přístup na datovou sběrnici nevyžadují.

DMA přenos v podstatě kopíruje bloky dat z jednoho zařízení do druhého. Procesor iniciuje přenos, ale už ho sám nevykonává. U sběrnice ISA byl samotný přenos proveden DMA řadičem, který je obvykle součástí čipové sady. Sběrnice PCI běžně používá bus mastering, kdy zařízení převezme kontrolu nad sběrnicí a přenos provede samo.

Typické použití DMA je přenos bloků dat z operační paměti do nebo z vyrovnávací paměti (cache) vstupně/výstupního zařízení. Poskytuje efektivní způsob komunikace pro řadiče a také pomáhá zprostředkovat například přehrávání videa či audia.

Problém koherence vyrovnávací paměti

DMA může způsobovat tzv. paměťovou koherenci. Představte si procesor vybaven pamětí cache a externí pamětí, která je přístupná zařízením používající DMA. Když procesor načte pozici X z paměti, bude načtena i do vyrovnávací paměti cache. Následné operace na X aktualizují X ve vyrovnávací paměti, ale nezmění X v externí paměti. Pokud se však před dalším přístupem zařízení na pozici X v externí paměti neaktualizuje tato hodnota z cache, zařízení přistupující na tuto hodnotu přes DMA obdrží původní hodnotu X. Podobně pokud hodnota X v cache není aktualizována, jakmile je změněna hodnota v paměti zařízením skrze DMA, po té bude procesor pracovat se starou hodnotou X.

Paměťová koherence


Příklady

Sběrnice ISA

DMA řadič má 16 kanálů, z toho sedm dostupných pro procesor počítače. Každý kanál má přiřazen 16-bitový adresový registr a 16-bitový čítač. Pro zahájení přenosu musí řadič konkrétního zařízení nastavit tyto registry spolu se směrem toku dat - zápis nebo čtení. Po té řadič požádá DMA o provedení přenosu. Jakmile je přenos dokončen, zařízení vyvolá přerušení.

Tzv. scatter-gather DMA umožňuje přenést data do nebo z několika částí paměti v jedné DMA operaci. Lze to přirovnat k provedení několika jednoduchých DMA operací za sebou. Důvod je prostý a to snížení počtu vstupně/výstupních operací, ve kterých by musel procesor DMA řadič opakovaně naprogramovat.

Sběrnice PCI

Jak již bylo uvedeno výše, PCI architektura nemá hlavní DMA řadič jako ISA. Místo toho může každé zařízení na sběrnici PCI požádat o kontrolu nad sběrnicí a stát se tzv. bus masterem a požádat o přístup do operační paměti. Přesněji PCI zařízení požádá o kontrolu nad sběrnicí řadič PCI sběrnice (obvykle je to jižní můstek čipové sady) a ten rozhodne, které zařízení bude nyní bus master. Kontrolu nad sběrnicí může mít vždy jen jedno zařízení, pokud tedy zažádá o kontrolu více zařízení najednou, o prioritě rozhodne arbitr sběrnice. Jakmile má dané zařízení kontrolu nad sběrnicí, bude generovat standardní příkazy pro čtení/zápis na sběrnici PCI. Tyto příkazy budou dále předány paměťovému řadiči. Přesný průběh této operace je vlastní každé čipové sadě.

Pro představu dnešní moderní počítače s procesorem AMD na socketu AM2 přesměrují DMA přenos z jižního můstku pomocí HyperTransportu na můstek severní, který je obsažen spolu s řadičem paměti přímo uvnitř procesoru. Řadič převede DMA na DDR2 operaci a pošle ji na DDR2 sběrnici. PCI DMA přenosy tedy probíhají v několika krocích, což může být malý problém, protože PCI sběrnice a její komponenty jsou řádově pomalejší nežli okolní zařízení (RAM, CPU).

Moderní x86 procesory jsou pomocí PAE nebo 64-bitového režimu schopny využívat více, než 4 GiB paměti. To však způsobuje některým zařízením s DMA problém, protože používají jen 32-bitovou adresu, a tak je pro ně paměť nad hranicí 4 GiB nedostupná. Nicméně v takzvaném dvojnásobném adresovacím módu (DAC) lze nadvakrát přenést po 32-bitové PCI sběrnici 64-bitovou adresu a je tedy v tomto případě možné adresovat teoreticky až 16 exbibytů (procesory/jejich MMU v současné době nicméně umí adresovat jen 64 GiB fyzické paměti).



Nový příspěvek


Ochrana proti spamu. Kolik je 2x4?



Na-mobil.cz

Spřátelené weby

Přidat stránku k oblíbeným

Nejnovější v diskusi

Diskusní fórum »

TIP: Chcete zkrátit dlouho chvíli sobě nebo blízkému?
Klikněte na Puzzle-prodej.cz a vyberte si z 5000 motivů skladem!
TIP: Hračky a hry za dobré ceny?
Klikněte na Hračky obchod.cz a vyberte si z tisícovky hraček skladem!