DMA

Napsal Mgr.Radovan Kaluža (») 11. 5. 2006 v kategorii IT, internet, přečteno: 1208×
DMA (Direct Memory Access) je medota kopírování dat z paměti do paměti (například mezi dvěma disky) bez použití procesoru. Je to hlavně z důvodu, že přenášet data uvnitř počítače, mezi jeho jednotlivými částmi, nemusí být vždy úplně jednoduché. Různá periferní zařízení totiž mohou mít dosti specifické požadavky na to, jak rychle jim mají být data poskytována (při výstupních operacích), resp. jak rychle mají být od nich přebírána (v rámci vstupních operací). Kdyby měl být přenos dat mezi řadičem disku a operační pamětí zajišťován procesorem, mohlo by se stát, že by to ani při nejlepší vůli nedokázal "stíhat". Proč?
Činnost procesoru je řízena strojovými instrukcemi, které procesor sám načítá z operační paměti. I kdyby byl procesor vybaven strojovou instrukcí, která přenáší data z paměti rovnou do vstupně-výstupních registrů (V/V bran, portů) periferních zařízení, resp. naopak, musel by ji procesor vždy nejprve sám načíst z paměti - na přenesení každého bytu "užitečných dat" by tak ve skutečnosti bylo nutné přenést hned několik bytů (tvořících strojovou instrukci) z paměti do procesoru
Je zde však ještě jeden zajímavý moment: žádná strojová instrukce nikdy nemůže přenést byte (slovo, dvojslovo) ze zadaného vstupně-výstupního registru na zadanou adresu do paměti přímo - vždy to musí být "nadvakrát": nejprve z V/V registru do procesoru (do některého jeho pomocného registru, který je jinak pro uživatele neviditelný) a odsud, ještě v rámci téže instrukce, do paměti (analogicky pro obrácený směr).
Otázkou ovšem je, zda by tuto maximální rychlost nedokázal využít někdo jiný než procesor a jak.
Jedinou možností, jak "obejít" procesor a zajistit přenos dat po adresové sběrnici z paměti přímo do V/V registru resp. naopak, je využít adresovou sběrnici pro adresování jednoho účastníka přenosu (nejspíše paměti), a druhého adresovat jiným způsobem. Teprve pak je možné implementovat techniku, které se příznačně říká Direct Memory Access (zkratkou DMA), česky: přímý přístup do paměti.
U mikroprocesorových systémů má realizaci této techniky na starosti specializovaný obvod, tzv. řadič přímého přístupu do paměti (DMA-řadič). Jeho úkolem je tedy zajišťovat přenos dat po datové sběrnici přímo mezi vstupně-výstupními zařízeními a pamětí, bez dočasného ukládání těchto dat kdekoli v pomocných registrech a bez účasti a bez zprostředkování procesorem.
Má-li ovšem DMA řadič zajistit takovýto přímý přístup do paměti, musí umět ovládat operační paměť - posílat jí adresy po adresové sběrnici a generovat nezbytné řídicí signály, jež jsou předávanz po řídicí sběrnici. Kromě toho se DMA-řadič musí umět také dohodnout s procesorem, protože v daném okamžiku může i procesor chtít pracovat s pamětí. Nejčastější řešení je takové, že o využití paměti rozhoduje procesor a DMA-řadič v okamžiku skutečné potřeby žádá procesor o přidělení sběrnic a s nimi o právo přístupu k paměti. Jakmile procesor této žádosti vyhoví, stává se DMA-řadič výlučným pánem paměti a všech sběrnic a může zprostředkovat přímý přenos dat mezi V/V zařízením a pamětí. Po jeho skončení pak zase vrací sběrnice (a s nimi i paměť) zpět procesoru.
V praxi jsou DMA-řadiče tvořeny několika samostatnými kanály, z nichž každý je pevně vyhrazen určitému zařízení - proto, aby jej mohl adresovat již dříve naznačeným "jiným způsobem". Ten spočívá v tom, že mezi zařízením a jemu vyhrazeným kanálem DMA-řadiče vedou dva signály: jedním zařízení signalizuje svou připravenost a žádá o zprostředkování přenosu dat z pamětia do ní a druhým kanál DMA-řadiče odpovídá na tuto výzvu.
DMA řadič přitom může pracovat v různých režimech - může zajišťovat jednotlivé přenosy, tedy po každém jednotlivém přístupu do paměti zase sběrnice vrátit procesoru, nebo si je může ponechat tak dlouho, dokud je co přenášet. Tímto způsobem pak dokáže skutečně využít maximální možnou rychlost přenosu dat po datové sběrnici. DMA řadič není řízen programem, resp. strojovými instrukcemi, a nemá tudíž režii, která by připadala na načítání z paměti




Facebook Twitter Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
z IP *** | 16.5.2006 22:51
Clovece ... psychicke a fyzicke zdravi mas v poradku?

Neblbni s tema vlasama.

--==[FReeZ]==-- z IP *** | 17.6.2006 20:51
Vlasy katastrofa, clanek sice zajimavy, avsak znacne nepresny a malo srozumitelny, kvuli tomu jsem ho nedocetl cely, presto si myslim, ze v nem neni ani zminka o mape pameti, ve ktere jsou ulozene pametove bloky, vyhrazene specialne pro DMA, take mi v clanku chyby priklad vyuziti, hodil by se zejmena v x86 assembleru, mozna by nebylo na skodu se zminit o vzniku teto technologie a pocatecnich limitech adresovani.

PS: Byte neni ani slovo, ani dvojslovo, byte je slabika

z IP 88.100.82.*** | 5.7.2007 20:36
jsem jeden z těch postižených spamováním tohoto nafoukanýho ubožáka. on se tu vytahuje co všechno dokázal, holky se na něj věšej a přitom debil po nocích rozesílá spamy s takovými zhovadilostmi, že jsem tři dny čistil stránky, jsem rád, že tady má svou fotku alespoň ho poznám. no myslím že toto smázne,
marty z IP 62.168.45.*** | 10.9.2007 14:57
no teda...kopirovat clanky je neslusne... smile
Squad_leader z IP 85.71.197.*** | 20.5.2008 02:10
Radovan je IT-Geek smile


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
[*1*] [*2*] [*3*] [*4*] [*5*] [*6*] [*7*] [*8*] [*9*] [*10*] [*11*] [*12*] [*13*] [*14*] [*15*] [*16*] [*17*] [*18*] [*19*] [*20*] [*21*] [*22*] [*23*] [*24*] [*25*] [*26*] [*27*] [*28*] [*29*] [*30*] [*31*] [*32*] [*33*] [*34*] [*35*] [*36*] [*37*] [*38*] [*39*] [*40*] [*41*] [*42*] [*43*] [*44*] [*45*] [*46*] [*47*] [*48*] [*49*] [*50*]   [b] [obr]
Odpovězte prosím číslicemi: Součet čísel sedm a osm