Komunikace procesoru s okolím Obvody umožňující komunikaci procesoru s okolím, zahrnujeme do tzv. podpůrných obvodů, které jsou součástí čipové sady základní desky. Ke komunikaci s okolím procesor používá tyto prostředky: -
kanály přímého přístupu k operační paměti (DMA) požadavky přerušení (IRQ) adresy paměti adresy vstupně/výstupních portů sběrnice (fyzické, vodivé propojení obvodů
Podpůrné obvody CPU Úkolem podpůrných obvodů procesoru je: a) maximálně urychlit komunikaci procesoru s obvody základní desky počítače a s připojenými periferními zařízeními, b) odlehčit procesoru při vykonávaní některých stále se opakujících rutinních operací, c) zastoupit procesor při některých činnostech. Dále to jsou obvody nezbytné pro chod a řízení procesoru a jiných sekvenčních obvodů. Všechny tyto obvody jsou integrovány v čipové sadě základní desky. S každým novým procesorem se vyvíjí nová čipová sada s parametry pro maximálně účinnou podporu procesoru. Kvalita čipové sady má konečný vliv na výkon celého počítače. Výkonové obvody, které jsou schopné interpretovat instrukce a vysílat řídící signály, se nazývají řadiče. Řadiče Řadiče jsou výkonové obvody, které na základě zpracovaných instrukcí generují řídící signály a tím řídí určitou část počítače. Pracují jako podpůrné obvody CPU (DMA, IRQ) nebo jako překladače mezi CPU a periferním zařízením (řadič disků, klávesnice, síťová karta, grafická karta, zvuková karta, atd.) Řadiče jsou integrovány na základní desce nebo jsou ve formě přídavné desky. Hlavní funkce řadičů: -
oddělují hardware od software,
-
vzájemně přizpůsobují rychlost zpracování dat mezi jednotlivými obvody pracující různou rychlostí,
-
převádějí data z formátu CPU na formát používaný přídavným zařízením,
-
případně zesilují elektrické signály
Mezi podpůrné obvody řadíme: Generátor hodin, systémový budič, systémový časovač, řadiče pamětí, řadič přímého přístupu k paměti DMA, řadič přerušení IRQ. Jako překladače pracují: Řadiče rozhraní COM, LPT, USB, řadiče disků IDE, EIDE, SCSI, SATA, RAID, řadič grafické karty, atd.
Generátor hodin -
je řízen krystalovým oscilátorem umístěným na základní desce
-
generuje hodinové impulzy pro CPU
-
generuje signál RESET
Systémový budič -
řídí směr přenosu dat po datové sběrnici
-
udržuje požadované úrovně napětí na sběrnici
-
umožňuje odpojení sběrnice od procesoru (signál HLDA)
Systémový časovač -
generuje hodiny reálného času
-
generuje časové intervaly pro přerušení činnosti procesoru (signál INT) na základě odpočítávání hodinových impulsů
Řadič DMA (Direct Memory Access ) – přímý přístup zařízení k paměti Řadič DMA je realizován obvodem Intel 8237A. Umožňuje periferním zařízením přímý přístup do operační paměti bez účasti CPU.
Princip činnosti řadiče DMA Řadič DMA provádí 2 typy operací: -
přenos dat z OP do periferních zařízení
-
přenos dat z periferních zařízení do OP (popsáno níže v principu činnosti DMA)
Princip činnosti řadiče DMA 1. Periferní zařízení vyšle na řadič DMA žádost o přenos dat. Tuto situaci indikuje řadič DMA signálem DRQ (Data Request1). Po naplnění datového registru je IO řadič připraven k předání dat. Přijde-li těchto žádosti více, pak blok prioritního rozhodování vybere žádost s nejvyšší prioritou (DRQ 0-3, DRQ 5-7). 2. Provede se programová inicializace IO řadiče a DMA řadiče - nastavení adresního a datového registru, určení směru přenosu (čtení nebo zápis), délka přenášeného bloku, způsobu indikace konce přenosu atd. 3. DMA řadič musí nyní přečíst obsah datového registru IO řadiče a zapsat jej do paměti. Proto musí nejprve získat právo na sběrnici. Vysílá proto do procesoru signál BREQ (Bus Request), tedy žádost o uvolnění sběrnice. 4. Procesor nejprve dokončí probíhající cyklus sběrnice. Potom sběrnici uvolní, tj. převede adresní výstupy, řídicí výstupy a datovou sběrnici do stavu vysoké impedance (Hi Z). Pokud není procesor vybaven nějakým typem vnitřní paměti (např. CACHE), nemůže až do zpětného obsazení sběrnice vykonávat program. Uvolnění sběrnice procesorem je DMA řadiči indikováno signálem BUSACK (Bus Acknowledge2). 5. DMA řadič nyní může převzít řízení sběrnice. Na adresní sběrnici vysílá obsah adresního registru, tj. adresu, na kterou mají být v paměti zapsána přenášená data. Současně generuje na řídicí sběrnici signály „zápis do paměti“. Zároveň je aktivován signál DACK (DMA Acknowledge). 6. Jako reakci na signál DACK vysílá IO řadič na datovou sběrnici obsah datového registru. 7. Na vstupech paměti je nyní platná adresa (z DMA řadiče), data (z IO řadiče) a DMA řadičem jsou aktivovány signály pro zápis. Popsaný stav trvá určitou dobu, která je potřebná pro spolehlivý zápis do paměti. Tuto dobu určuje DMA řadič. Detaily časování jednotlivých signálů a trvání zápisu je obvykle možné v DMA řadiči předem naprogramovat. 8. Po dokončení zápisového cyklu je zrušena aktivita signálu DACK a BREQ. Procesor může obsadit sběrnici a pokračovat ve vykonávání programu. 9. Po každém elementárním přenosu zvýší DMA řadič obsah adresního registru a posune tak adresu na další pozici v paměti. Podle délky slova přenášených dat (8, 16, … bitů) a podle způsobu adresování paměti se obsah adresního registru zvětšuje o 1, o 2 atd. Současně je snížen obsah registru délky přenosu. Je-li jeho obsah nenulový, pokračuje DMA řadič v činnosti. 10. Nulový obsah registru délky dat znamená, že byl dokončen celý blokový přenos.
1 2
Request = požadavek, žádost Acknowledge = potvrzení
Sdílení sběrnice při DMA přenosu Při DMA přenosu se na sběrnici střídají cykly procesoru a cykly DMA řadiče. Pro střídání procesoru a DMA řadiče na sběrnici lze použít různá pravidla: Kradení cyklů - Jedním ze základních způsobů přidělování sběrnice DMA řadiči. DMA řadič v případě požadavku na přenos obsadí sběrnici a provede jeden elementární přenos dat. Potom sběrnici opět uvolní. Na sběrnici se tak střídají přenosové cykly procesoru a přenosové cykly DMA řadiče.
Blokový režim (Burst Mode) - Při extrémních požadavcích na rychlost přenosu lze přidělování sběrnice řešit tak, že DMA řadič obsadí sběrnici na začátku blokového přenosu a v průběhu celého blokového přenosu ji drží obsazenou. Tímto způsobem lze zvýšit rychlost přenosu v porovnání s technikou kradení cyklů, protože odpadají zpoždění potřebná k přidělení sběrnice před každým elementárním přenosem. Procesor je však po celou dobu blokového přenosu ve stavu HOLD.
Použití DMA řadiče je vhodné pro přenosy blokového charakteru, u kterých je kladen důraz na velkou rychlost. Příkladem mohou být připojení diskových pamětí, zvukových karet, rychlých síťových karet apod.
Řadič přerušení IRQ (Interrupt ReQuest) 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 (vykonávání sledu instrukcí) za účelem provedení obsluhy požadavku. Řadič přerušení IRQ - jeho úkolem je zajistit synchronizaci programu probíhajícího v CPU s požadavky na obsluhu od vnějších zařízení. Řadič přerušení má určitý počet IRQ vstupů, přes které vstupují do registru požadavků žádosti periferních zařízení. Některé vstupy jsou fixně použity systémovými zařízeními (systémový časovač, koprocesor, klávesnice, myš, atd.), ostatní jsou pak k dispozici a mohou být využity rozšiřujícími kartami (modem, zvuková karta, síťová karta, řadiče disků, atd.) Požadavky s nejnižším číslem mají nejvyšší prioritu. (např. klávesnice má žádost přerušení č.1, tedy druhá nejvyšší priorita). Řadič obsahuje obvody prioritního rozhodování, které vybírají požadavek s nejvyšší prioritou. Po vybrání požadavku se spustí inicializační fáze a po ní následuje spolupráce s CPU. Řadič IRQ „hlídá“ stav periferních zařízení, sám je neobsluhuje. Počítače PC XT využívaly jeden programovatelný řadič přerušení (Programmable Interrupt Controller – PIC) Intel 8259A. Tento obvod byl vybaven 8 linkami přerušení IRQ (vstupy) což bylo pro pozdější počítače nedostačující. U počítače PC AT byl přidán další řadič přerušení Intel 8259A, který byl propojen s prvním řadičem linkou přerušení IRQ 2 do kaskády (viz. blokové schéma níže). Tím byl počet linek přerušení IRQ zvýšen z 8 na 16. U současných počítačů je v čipové sadě integrován řadič přerušení APIC (Advanced PIC), který byl původně určen pouze pro víceprocesorové systémy a nabízí více IRQ vstupních linek než 16. Je rychlejší než předchozí obvod a umožňuje, aby více zařízení sdílelo jednu IRQ vstupní linku.
Posloupnost činností při obsluze přerušení
Průběh obsluhy hardwarového přerušení (Počítač standardu PC AT) 1. Vnější zařízení vyvolá požadavek o přerušení (např. při stisku klávesy, pohybem myši, atd.). Požadavek vstupuje do řadiče přerušení pomocí linky IRQ. 2. IRQ 2 slouží u počítačů PC AT se sběrnicí ISA ke zpřístupnění IRQ 8 - IRQ 15. BIOS počítače pak ví, že musí zjistit, které z vyšších přerušení je skutečně aktivní, a to obsloužit. 3. Řadič přerušení vybere požadavek s nejvyšší prioritou a vygeneruje signál INTR („někdo“ žádá o přerušení) a vyšle ho k procesoru. Zároveň dochází k inicializaci řadiče. Do jeho datového registru se zapíše typ přerušení a ukazatel do tabulky vektorů. 4. Procesor dokončí rozpracovanou instrukci a začne vysílat potvrzovací signál INTA, čím se dotazuje, jaké zařízení žádá o přerušení. 5. Řadič přerušení identifikuje zařízení, které žádá o přerušení a odešle po datové sběrnici 8-bitové číslo typu přerušení k procesoru. 6. Procesor uloží obsah svých registrů (právě zpracovávané instrukce) do zásobníku. 7. Procesor zpracuje typ přerušení (instrukci) a na základě vyhodnocení vyšle po adresové sběrnici adresu místa v paměti, na kterém se nachází údaj (vektor), který ukáže na příslušný obslužný program v operační paměti. 8. Vyhledá obslužný podprogram obsluhy přerušení v paměti a vykoná ho (provede obsluhu přerušení). 9. Po provedení obslužného programu opět obnoví původní obsah registrů ze zásobníku a přerušený program pokračuje dál. Cyklus přerušení končí vynulováním registru požadavků.
Typy přerušení 1. Vnější přerušení (též hardwarové přerušení) je označováno podle toho, že přichází ze vstupně-výstupních zařízení (tj. z pohledu procesoru přicházejí z vnějšku). Vstupně-výstupní zařízení tak má možnost vyžádat si pozornost procesoru a zajistit tak svoji obsluhu ve chvíli, kdy to právě potřebuje bez ohledu na právě zpracovávanou úlohu. Vnější přerušení jsou do procesoru doručována prostřednictvím řadiče přerušení, což je specializovaný obvod, který umožňuje stanovit prioritu jednotlivým přerušením, rozdělovat je mezi různé procesory a další související akce. 2. Vnitřní přerušení vyvolává sám procesor, který tak signalizuje problémy při zpracování strojových instrukcí a umožňuje operačnímu systému na tyto události nejvhodnějším způsobem zareagovat. Jedná se například o pokus dělení nulou, porušení ochrany paměti, nepřítomnost matematického koprocesoru, apod. 3. Softwarové přerušení je speciální strojové instrukce (obvykle je jich v procesoru k dispozici několik). Tento typ přerušení je na rozdíl od předchozích dvou typů vyvoláno zcela záměrně umístěním příslušné strojové instrukce přímo do prováděného programu. Instrukce softwarového přerušení bývá využívána pro vyvolání služeb operačního systému z běžícího procesu. Adresy paměti Adresování operační paměti je spojeno s jejím logickým rozvržením a režimem práce procesoru. Základní oblasti systémové paměti jsou: -
konvenční (základní) paměť horní oblast paměti (Upper Memory Area - UMA) vysoká oblast paměti (High Memory Area – HMA) rozšířená paměť (Extended Memory – XMS) expandovaná paměť (Expanded Memory – EMS) rezervovaná oblast pro grafickou kartu rezervovaná oblast pro ROM rozšiřujících karet rezervovaná oblast pro ROM BIOS základní desky
Způsob využití a správy takto rozdělené paměti se mění v závislosti na použití 16-bitového nebo 32-bitového operačního systému. Například při zapnutí je počítač schopen činnosti díky základnímu sytému BIOSU, procesor pracuje v tzv. reálném režimu a má přístupný pouze 1 MB paměti, po spuštění operačního systému už je přístupná celá paměť.
Adresy vstupně/výstupních portů Adresy vstupně/výstupních portů umožňují vzájemnou komunikaci mezi hardwarovým zařízením a softwarem. Pokud se například posílají data ne sériový port, musí se vědět, na které adrese tento port data přijímá. Každý vstupně/výstupní port má přiřazenou svou adresu. Těchto adres může systém přiřadit 65 536. Některá zařízení používají více než jednu adresu. Z hlediska softwaru platí, že s různými zařízeními sytému komunikují především různé ovladače zařízení.To znamená, že ovladače zařízení musí vědět, která vstupně/výstupní adresa je využívána daným zařízením.Tyto adresy se nacházejí v konvenční části operační paměti.