Výrok "Pokud nejste príliš bohatí a velmi excentričtí, nebudete mít důvod, proč si dopřát luxus počítače ve vaší domácnosti." (E.Yourdon, 1975)
Komunikace periférií s CPU mohou nastat čtyři základní situace periferie vyžaduje pozornost CPU periferie zasílá data CPU CPU zasílá data periferii periferie zasílá data do RAM CPU musí v každém okamžiku vědět s jakou periferií komunikuje jednoznačnost komunikace zajistí tzv. systémové prostředky
Systémové prostředky adresy I/O portů hardwarová přerušení IRQ kanály DMA Poznámka - není možné přidělit stejný systémový prostředek (stejné IRQ, stejný rozsah adres I/O, stejné DMA) více periferiím, protože by došlo ke konfliktu
Adresy I/O portů umožňují komunikovat CPU s každým zařízením v PC zvlášť každý PC má 64 K adres I/O každá periférie má pro komunikaci s CPU vyhrazen určitý rozsah těchto adres adresace probíhá po adresových vodičích sběrnice (CPU sdělí řadiči sběrnice co adresuje - RAM či I/O) příklad použití sběrnice ISA má k dispozici 1K spodních 256 adres (000h-0FFh) vyhrazeno komponentám základní desky horních 768 adres (100h-3FFh) vyhrazeno pro přídavné desky ostatní sběrnice mohou adresovat 64K adres (0000h-FFFFh)
Přenos dat mezi pamětí a periférií 1) PIO (Programable I/O) CPU posílá příkazy periferii prostřednictvím adres I/O CPU vyhradí sběrnici pro danou periferii periferie připraví k přenosu požadovaná data CPU přenese data po sběrnici z periferie do RAM (příp. naopak) celý přenos řídí CPU => velké zatížení 2) DMA (Direct Memory Access) CPU pošle počáteční příkaz periferii prostřednictvím adres I/O periferie požádá CPU o přímý přístup do RAM - vybudí vodič DREQ (DMA Request) CPU povolí přímý přístup-vybudí vodič DACK (DMA Acknowledge) vodič DREQ a vodič DACK tvoří jeden tzv. DMA kanál pak se data přenesou po datových vodičích sběrnice přímo do paměti RAM 3) řízené sdílení sběrnice (bus mastering)
Řízené sdílení sběrnice umožňuje přímou komunikaci periférií mezi sebou rychlost přenosu dat mezi periferiemi je omezena pouze parametry sběrnice při přenosu není zatížen CPU při přenosu není zatížena RAM nevýhoda – sběrnice ISA umožňuje sdílené řízení sběrnice, ale v systému může být pouze jedna řídící deska. Sběrnice EISA, MCA, PCI umožňují větší počet řídících desek
Obvyklé použití DMA kanálů
Nevýhody PIO a DMA nevýhody PIO je pomalejší než DMA zatěžuje CPU CPU musí řídit komunikaci periférie nemohou komunikovat přímo mezi sebou nevýhody DMA periférie nemohou komunikovat přímo mezi sebou DMA na sběrnici ISA je pomalé (frekvence 4,77 MHz - zpětná kompatibilita) kanály 0-3 mohou někdy využívat pouze 8-bitový přístup na sběrnic pro 16-ti bitové karty raději použít kanál DMA 5-7 raději nepoužívat DMA 4 (kaskáda)
Přehled režimů PIO a DMA
Volání CPU periférií periferie může získat pozornost CPU dvěma způsoby výběrem (polling) CPU neustále sleduje činnost periferie nevýhoda – pomalé, zatěžuje CPU používá se u jednoúlohových systémů (DOS) příklad - tisk pod DOSem hardwarovým přerušením CPU nesleduje činnost zařízení pokud periférie vyžaduje činnost procesoru, aktivuje určitý vodič na sběrnici (tzv. kanál přerušení - IRQ) každá periferie má své číslo IRQ (jednoznačně identifikuje periferii v systému) dvě periferie nesmějí používat stejné IRQ, jinak vznikne konflikt
Rozdělení přerušení přerušení způsobí, že procesor (dočasně) přestane provádět právě probíhající program a místo něj začne provádět program jiný, který přerušení tzv. obslouží (tj. reaguje na jev, který přerušení vyvolal) 1) vnější - periférie, uživatel, havarijní stavy… nemaskovatelné – nelze ho zakázat (NMI) maskovatelné lze ho zakázat (INTR) 2) vnitřní – chyby operandů, výsledku, krokování… instrukce INT co je nutné uložit před obsloužením přerušení? 1) IP (Instruction Pointer) – adresa následující instrukce 2) CS (Code Segment) – segment paměti, kde se nachází program 3) registr Flags – příznaky instrukcí (Zero, Signum, Carry, Overflow…) o obsloužení přerušení se stará řadič přerušení (obvod 8259)
Zpracování přerušení 1) periferie aktivuje linku přerušení na sběrnici (kanál přerušení - IRQ) 2) řadič IRQ (čip Intel 8259) zpracuje žádosti o přerušení dle priority (přeruší činnost CPU) 3) CPU uloží rozpracovaná data do zásobníku 4) CPU vyhledá příslušný vektor přerušení (odkaz na program řídící příslušnou periferii) 5) po nalezení IVA (Interrupt Vector Address) se spustí program přerušení (interrupt handler) 6) CPU obslouží periferii, která přerušení vyvolala 7) CPU se vrátí k původní práci
Zpracování přerušení Hlavní program Obslužný program Přerušení Pokračování hlavního programu
Příčiny přerušení 1) programová přerušení, patří sem např.: nepřípustný operační znak přeplnění nenaplnění dělení nulou nesprávná adresa (není v paměti) nesprávný tvar operandu 2) technická přerušení, patří sem např.: výpadek napájení (např. zásah meteoritu ) porucha technického vybavení
Příčiny přerušení 3) I/O (V/V) přerušení od periférie reprezentuje informaci, že nějaká periférie změnila stav 4) vnější přerušení příchod signálu na tzv. přerušovací vstupy procesoru 5) instrukční přerušení pomocí speciálních instrukcí INT (INTerrupt) SVC (SuperVisor Call)
Maska přerušení maska přerušení - registr, kde je každému bitu přiřazena jedna nebo více příčin přerušení 1…příčina odmaskována 0…příčina zamaskována nastane-li nějaká příčina, pak dojde k přerušení jen je-li příčina v registru odmaskována je-li zamaskována, je možné ji vést v patrnosti (paměti) a provést ji při nejbližším odmaskování instrukce CLI n – odmaskuj přerušení STI n – zamaskuj přerušení
Obvyklé použití kanálů IRQ
Konfigurace systémových prostředků zjistit pomocí softwaru aktuální využití systémových prostředků pro každou periferii nastavit samostatné IRQ, DMA a I/O nastavit nejprve periferie s malým množstvím možností konfigurace může být hardwarová (jumpery) softwarová
Hardwarová konfigurace
Softwarová konfigurace automatická – systém Plug&Play (musí být podporován) ruční v systému DOS soubory Config.sys, Autoexec.bat v systému Windows soubory *.INI nebo Správce zařízení