====== 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