Rozšiřující sběrnice, IRQ, DMA

Z MediaWiki SPŠ a VOŠ Písek
Verze z 11. 6. 2010, 08:22, kterou vytvořil Maprochazka (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání

IRQ

IRQ je zkratka z anglického Interrupt ReQuest (česky požadavek na přerušení). Označuje signál, kterým požádá zařízení (např. klávesnice, časovač atd.) procesor o věnování pozornosti, tedy požádá o přerušení probíhajícího procesu za účelem provedení důležitější akce.

IRQ (přerušení) se provádí následovně: Zařízení sdělí řadiči přerušení, že potřebuje provést přerušení (například při stisknutí klávesy na klávesnici je také vyslán požadavek na přerušení). Řadič přerušení poté upozorní CPU, že jsou čekající (pending) přerušení. Když se CPU dostane do stavu kdy je ochotné přerušení přijmout, přeruší probíhající výpočet, zeptá se řadiče na nejdůležitější nezamaskované čekající přerušení a spustí jeho obsluhu. Ta typicky odloží právě probíhající proces (uloží si jeho stav), provede základní obsluhu zařízení (složitější věci může naplánovat na provedení později), informuje řadič přerušení o dokončení obsluhy přerušení, obnoví stav procesu a pokračuje dále …

Některé procesory mají řadič přerušení integrovaný, ale častější je uvedený stav kdy je řadič logicky oddělen (není nutné aby byl oddělen fyzicky). Řadič obvykle vyhodnocuje priority přerušení, umožňuje některá přerušení ignorovat (maskovat) a pamatuje si, která přerušení čekají na vyřízení.


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).

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 problémy s tzv. paměťovou koherencí. 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í ovladač konkrétního zařízení nastavit tyto registry spolu se směrem toku dat - zápis nebo čtení. Poté řadič požádá zařízení 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).

Zdroje:

http://cs.wikipedia.org/wiki/IRQ

http://cs.wikipedia.org/wiki/DMA

http://support.microsoft.com/kb/182628/cs

http://www.fccps.cz/download/adv/frr/pci-e/msg.gif

http://www.pctuning.cz/ilustrace/granitebay/gb_chipset.jpg

http://www.cesnet.cz/doc/2009/zprava/xl-dma_hwarch_multirxtx.png

http://programujte.com/galerie/2006/07/200607201307_pci-mb.jpg

Vytvořil: --Maprochazka 11. 6. 2010, 08:15 (UTC)