====== Principy řízení a připojování periferních zařízení ======
===== Sběrnice =====
Prostředek pro připojení zařízení v počítači. **Šířka sběrnice** je prakticky počet drátů sběrnice (kromě režijních signálů). **Rychlost sběrnice** je počet bitů přenášených na jednom drátě za sekundu. **Šířka pásma** je pak objem dat za jednotku času.
Na sběrnici jsou tři typy informací: adresa, data a řízení. Řízení určuje operaci, adresa cíl operace (například že data mají přijít do RAMky a kam v té ramce) a data jsou jasná.
==== Nesdílená sběrnice ====
Má pro adresu, data a řídící signály oddělené sady vodičů. Po vystavení adresy a dat se aktivuje signál (řídící), který říká, že jsou data na sběrnici úplná a lze je v pohodě číst. Např. ISA.
==== Sdílená sběrnice ====
Používá stejné vodiče pro přenos adresy a dat. Musí se odlišovat, kdy je na sběrnici adresa a kdy data (k tomu slouží řídící signály). Např. PCI.
==== Systémová sběrnice ====
Slouží k připojení procesoru, řadiče prerušení, řadiče paměti, řadiče přímého přístupu do paměti (DMA), řadiče periferních zařízení, mostů mezi sběrnicemi.
=== ISA (Industry Standard Architecture) ===
{{http://upload.wikimedia.org/wikipedia/commons/3/36/Isa1.jpg?200 }}
[[wp>Industry Standard Architecture]]
Nesdílená systémová sběrnice, dnes celkem zastaralá. Označuje se někdy AT bus. Umí přerušení, DMA, chybové signály... 16bitová, pak byla Extended ISA 32bitová. Nemá synchronizační signály.
=== PCI (Peripheral Component Interconnect ===
{{http://upload.wikimedia.org/wikipedia/commons/6/67/PCI_Slots_Digon3.JPG?200 }}
[[wp>Conventional PCI]]
Sdílená systémová sběrnice. Umí bus mastering: zařízení může řídit sběrnicit (stát se masterem). Umí plug and play. PCI-X je rychlejší verze. Má synchronizaci vedenou zvláštním vodičem.
=== PCI-Express ===
{{http://upload.wikimedia.org/wikipedia/commons/f/fc/PCIExpress.jpg?200 }}
[[wp>PCI Express]]
Point-to-point architektura. Nejde ani o sběrnici -- na každé straně pci expressu je jen jedno zařízení. Přenos je sériový. Synchronizační signál je kódován do dat, používá kódování 8--10 FIXME. Šířka sběrnice je "nastavitelná" (všimněte si, že na obrázku je každá jinak dlouhá), to se pak označuje jako násobek, např PCI-e 8×.
==== IO sběrnice (periferií) ====
Slouží k připojení periferií.
=== Centronics ===
{{http://upload.wikimedia.org/wikipedia/commons/c/c5/Centronics.jpg?200 }}
[[wp>Micro ribbon]]
Ubohá sběrnice pro připojení tiskárny. Nemá chybové slabiky, chyby indikuje stavem.
=== IDE ===
{{http://upload.wikimedia.org/wikipedia/commons/c/c4/Ata_20070127_002.jpg?200 }}
[[wp>Parallel ATA]]
Připojení disků (zastaralé). Jde o podmnožinu signálů ISA.
=== SCSI ===
{{http://upload.wikimedia.org/wikipedia/commons/1/1b/Scsi-1_gehaeuse.jpg?200 }}
[[wp>SCSI]]
Slouží pro připojení obecných zařízení (které umí SCSI :-)). Pro adresaci zařízení používá 1 z N (řadič má adresu např. ''00000001'', první zařízení má ''00000010'' atd.).
===== Řízení periferních zařízení =====
O to se stará **Řadič periferních zařízení**. Procesor řekne řadiči, že chce provést periferní operaci. Nastaví parametry a nakonec "start bit". Řadič kontroluje start bit a pokud je tam 1, začne provádět operaci na zařízení. Po dokončení může informovat procesor pomocí přerušení (lepší varianta), nebo výsledek vystaví na výstup a procesor ho pomocí tzv. pollingu programově (v nějakém cyklu) kontroluje (to zaměstnává procesor, horší varianta). Polling je **programová obsluha**.
===== DMA (Direct Memory Access) =====
Zařízení může požádat o DMA (obvykle přes řadič DMA). Pokud dostane svolení, může zařízení přes sběrnici rovnou pracovat s pamětí.
Po otevření DMA komunikace mluví zařízení PŘÍMO s pamětí -- ani procesor, ani řadič DMA do toho už nezasahuje!
===== Přerušení =====
[[wp>Interrupt request]]
Jde o mechanismus, kterým mohou zařízení asynchronně oznámit procesoru nějakou událost. Probíhá to tak, že zařízení kontaktuje řadic prerušení, který podle priority vybere nejdůležitější přerušení. Vyhledá si v tabulce adresu, kam má skočit v programu procesor pro obsluhu tohoto přerušení. Procesor obdrží informaci o přerušení spolu s touto adresou a postará se o obsluhu. Potom skočí zpátky.
Opakem přerušení je polling -- neustále dotazování jestli někdo něco nechce. Používá se např. u USB.
To je jak rozdíl mezi manželkou a prostitutkou -- manželky se furt ptáte (polling) jestli nechce sex, ale jí furt bolí hlava, nebo musí ještě něco dodělat. Naproti tomu k prostitutce příjdete, zeptáte se, a ona hned všeho nechá a obslouží vás (IRQ).
===== Shrnutí (na co nezapomenout) =====
* různé typy zařízení a odpovídajících zběrnic v průběhu času
* se zařízením na sběrnici komunikuje řadič instruovaný procesorem, na jedné sběrnici může být víc zařízení
* vědět: šířka sběrnice, rychlost sběrnice, šířka pásma
* nesdílená (zvlášť dráty pro data, adresy, řízení) vs. sdílená (sdílí vodiče pro adresy a data)
* systémové sběrnice jsou pro komunikaci cpu a hw karet -- tohle je sice ke sběrnicím, ale nespadá to moc do zadání samotné otázky, takže spíš to jen zmínit
* ISA - nesdílená
* PCI - sdílená, umí bus mastering a plug&play, má synchronizační vodič
* PCI Express - point-to-point architektura, sériový přenos, embedded clock
* IO sběrnice - připojení periferií
* Centronics - nemá chybové slabiky, stará
* IDE
* SCSI - pro připojení obecných zařízení, adresace 1 z N
* zahájení operace - cpu nastaví parametry a start bit, řadič tento bit dokola kontroluje, při jedničce začne provádět operaci, po dokončení může vyvolat přerušení nebo nastaví nějaký registr (polling, programová obsluha)
* DMA (direct memory access) - zařízení přes řadič DMA požádá o přímý přístup do paměti a pak přímo zapisuje do paměti (bez účasti cpu či řadiče)
* přerušení využívá řadič přerušení a vektor přerušení podle priorit
==== Co je třeba vědět kdyby se zeptali ====
* PCI 16x znamená, že je tam paralelně 16 sériových přenosů, každý kabel má svoje vlastní řízení
* chybová slabika je hodnota, kde každý bit indikuje přítomnost nějaké chyby, vyžádává se od zařízení po indikaci obecné chyby
* při přerušení se uloží všechny registry do zásobníku, skočí se na adresu z vektoru přerušení, po dokončení obsluhy se zase vše obnoví
* polling využívá napr. USB