Hlavní navigace

Sběrnice v domácích a osobních počítačích

2. 10. 2008
Doba čtení: 13 minut

Sdílet

V dnešní části seriálu o architekturách počítačů se budeme zabývat popisem sběrnicových systémů, s jejichž pomocí se ke dvěma základním jednotkám počítače (mikroprocesoru a operační paměti) připojují další zařízení, například řadiče pevných disků, grafický a zvukový subsystém, síťové rozhraní atd.

Obsah

1. Sběrnice v domácích a osobních počítačích
2. Interní a externí sběrnice
3. Universální sběrnice a lokální sběrnice
4. Jednoduchá sběrnice použitá u systému s mikrořadičem
5. Typická sběrnice osmibitových domácích počítačů – ZX-81
6. Universální interní sběrnice ISA
7. Literatura a odkazy na Internetu
8. Obsah dalšího pokračování seriálu

1. Sběrnice v domácích a osobních počítačích

Pojmem sběrnice (bus) se ve výpočetní technice označuje soustava minimálně dvou, většinou však až několika desítek vodičů, které slouží k přenosu dat i řídicích instrukcí mezi různými částmi počítače, přičemž se pro přenos používá (mnohdy standardizovaný) protokol, který musí akceptovat všechny části počítače, jež jsou ke sběrnici připojeny. Vodiče tvořící sběrnici se podle své funkce rozdělují do tří základních skupin. Jedná se o adresové vodiče, datové vodiče a vodiče, po nichž jsou rozváděny řídicí signály. U sériových sběrnic je situace poněkud odlišná, protože tam jsou adresy, data a řídicí signály přenášeny sériovým protokolem po jednom či několika málo vodičích. U běžných desktopových počítačů slouží sběrnice ke vzájemnému propojení mikroprocesoru, operační paměti a dalších zařízení, například grafických a zvukových karet, síťového rozhraní a řadičů pevných disků, disket, vnějších sběrnic (USB, I2C) atd.

pc3101

Obrázek 1: Schéma typického (i když poněkud staršího) desktopového PC s dvojicí standardních sběrnic PCI a ISA, AGP portem a sběrnicí určenou pouze pro připojení synchronních dynamických operačních pamětí.

Mikroprocesor, jeho vyrovnávací paměť první i druhé úrovně (L1 cache, L2 cache) a operační paměť jsou na sběrnici zapojeny buď přímo (což je případ především architektonicky jednodušších počítačů, viz navazující kapitoly) nebo přes takzvaný most (bridge), který sběrnici od mikroprocesoru elektricky odděluje, čímž se snižuje logická zátěž na obou stranách mostu. V případě, že je sběrnice standardizována, bývá součástí její specifikace většinou i popis funkce jednotlivých vodičů, řídicích signálů, jejichž časování a vzájemné návaznosti odpovídá přenosovému protokolu, napěťové (či proudové) úrovně všech signálů, časování signálů a v neposlední řadě také popis konektorů, které slouží k připojení zařízení na sběrnici. Výrobci zařízení určených pro danou sběrnici by měli standard dodržovat, což se však mnohdy neděje. O některých známých problémech a způsobech jejich řešení se v tomto seriálu ještě na vhodném místě zmíníme.

V následujících kapitolách si popíšeme jak velmi jednoduché interní sběrnice, které se například používají v zařízeních osazených osmibitovými mikroprocesory nebo mikrořadiči, tak i sběrnice, které jsou již složitější, například v tom smyslu, že používají sofistikovanější přenosový protokol, jednotlivá zařízení mohou převzít řízení sběrnice (řízení tedy nemusí provádět pouze mikroprocesor) atd. Popsány budou především vývojově starší sběrnice, které jsou velmi jednoduché, což je při jejich popisu spíše výhoda. Až v navazující části tohoto seriálu si popíšeme ty interní i externí sběrnice, které lze najít v moderních počítačích a jejichž parametry (zejména přenosová rychlost) odpovídají vysokým požadavkům kladeným dnešními desktopovými i serverovými aplikacemi.

pc3102

Obrázek 2: Většina interních sběrnic bývá vytvořena přímo na základní desce úhlednými spojovacími cestičkami v několikavrstvém plošném spoji, ovšem – jak je patrné z tohoto obrázku – je možné vytvořit i interní sběrnici typu „vrabčí hnízdo“, která kupodivu i funguje.

2. Interní a externí sběrnice

Již v úvodních odstavcích tohoto článku jsem napsal, že sběrnice je možné rozdělit podle několika kritérií. Jedno z kritérií, které se vyznačuje tím, že je snadno rozpozná i běžný uživatel, je rozdělení sběrnic na sběrnice interní a sběrnice externí. Rozdíl mezi těmito sběrnicemi je zřejmý – zatímco interní sběrnice jsou navrženy s ohledem na jejich použití uvnitř počítače, externí sběrnice se používají především pro připojení vnějších zařízení. Obecně je možné říci, že interní sběrnice umožňují dosažení větších přenosových rychlostí, protože bývá ekonomicky únosné použít větší počet adresových i datových vodičů a také vyšší frekvence hodinových signálů. U sběrnic externích se naopak jejich tvůrci většinou snaží o konstrukci kvalitních konektorů, použití přenosového protokolu odolného vůči chybám, jež vznikají například kvůli rušení přenosu a v neposlední řadě také o prodloužení maximální délky vodičů, z čehož vyplývají i maximální vzdálenosti mezi zařízeními, které jsou sběrnicí propojené (u sběrnic interních totiž platí mnohdy velmi přísná omezení na maximální délku vodičů, což vyplývá z vysokých přenosových rychlostí).

Představitelem interních sběrnic jsou sběrnice ISA a PCI. Obě zmíněné sběrnice jsou paralelní, tj. adresy, data a řídicí signály se přenáší po několika vodičích současně (některé vodiče však přesto mají více funkcí, například slouží pro přenos adresy v jednom taktu synchronizačních hodin i dat v taktu dalším). Z externích sběrnic je dnes snad nejvíce známá universální sériová sběrnice neboli Universal Serial Bus (USB), existují ovšem i sběrnice další, z nichž některé jsou velmi rozšířené – jedná se například o průmyslovou sběrnici I2C, která je použita v mnoha zařízeních. Při popisu externích sběrnic budu dbát na rozlišení skutečných sběrnic od portů. Port je z hlediska připojení zařízení mnohem jednodušší, protože umožňuje vzájemně propojit vždy jen dvojici zařízení, z čehož vyplývají i rozdíly v řízení či přenosovém protokolu. Ke sběrnici může být zapojeno více zařízení, což je nutné zohlednit při návrhu přenosového protokolu, adresování zařízení i například řešení kolizí více zařízení, jež se snaží připojit se ve stejný čas ke sběrnici (jedná se o takzvanou arbitráž).

pc3103

Obrázek 3: Standardizovaný konektor externí sériové sběrnice USB.

3. Universální sběrnice a lokální sběrnice

Sběrnice je možné dělit také na universální a lokální. Universální i lokální sběrnice slouží k vzájemnému propojení přídavných zařízení uvnitř výpočetního systému. Na tyto sběrnice je, jak jsme si již řekli v první kapitole, buď přímo nebo přes takzvaný most (bridge) připojen i mikroprocesor spolu s lokální pamětí cache a operační pamětí. Rozdíl mezi universálními a lokálními sběrnicemi spočívá především ve stupni oddělení mikroprocesoru od sběrnice. U lokálních sběrnic je procesor ke sběrnici připojen přímo, nebo pouze přes případný budič sběrnice. To s sebou přináší (snad kromě jednoduchosti řešení a z toho vyplývající nízké ceny) značné nevýhody, protože vlastnosti lokální sběrnice jsou determinovány vlastnostmi procesoru, například jeho externím taktovacím kmitočtem a napěťovými úrovněmi signálů. Na lokální sběrnice je také obecně možné připojit méně zařízení, což souvisí zejména se signálovými poměry datových a řídicích vodičích a logickém zatížení výstupů samotného mikroprocesoru. Příklad použití lokální sběrnice je zobrazen na čtvrtém obrázku.

pc3104

Obrázek 4: Připojení mikroprocesoru, operační paměti, grafické karty a řadiče dalších zařízení na lokální sběrnici počítače.

sběrnic universálních je mezi interní sběrnicí procesoru (procesorovou sběrnicí) a samotnou universální sběrnicí umístěno přesně definované rozhraní, takže zařízení připojená na tuto sběrnici mezi sebou komunikují relativně nezávisle na mikroprocesoru. Vzhledem k oddělení interní sběrnice od universální sběrnice sice může docházet k určitému zpomalení (latenci) při přenosu dat, což je však vyváženo možností připojení většího množství zařízení na sběrnici. Také je možné převzetí řízení sběrnice jedním ze zařízení, přičemž vzájemná komunikace zařízení mezi sebou může probíhat bez zásahu mikroprocesoru. Použití universální sběrnice je uvedeno na pátém obrázku (konkrétní způsob použití byl zobrazen i na obrázku prvním). Z universálních sběrnic si postupně popíšeme dnes již poněkud zastaralou sběrnici typu ISA, dále pak stále používanou sběrnici PCI a její pokračovatele. Z lokálních sběrnic bude popsána sběrnice VESA Local Bus, kterou je dnes také možné považovat za zastaralou. Na této sběrnici jsou však prezentovány vlastnosti společné všem lokálním sběrnicím, zejména jejich poměrně velká závislost na procesorové architektuře.

pc3105

Obrázek 5: Připojení mikroprocesoru, operační paměti, grafické karty a dalších zařízení na universální sběrnici.

4. Jednoduchá sběrnice použitá u systému s mikrořadičem

Velmi jednoduché (lokální) sběrnice jsou použity například v systémech, ve kterých je použit mikrořadič, tj. čip, který v sobě integruje mikroprocesor, operační paměť s relativně malou kapacitou, nevolatilní paměť (také s relativně malou kapacitou) a další podpůrné obvody, například A/D převodník či sériový port. V případě, že kapacity pamětí vytvořených přímo v čipu mikrořadiče pro některou aplikaci nejsou dostačující, připojují se k nim externí paměťové čipy. Vzniká tak jednoduchá sběrnice, na kterou je možné v případě potřeby připojit i další obvody sloužící například k ovládání LCD či čtení kláves stisknutých na připojené klávesnici. V dalším odstavci si popíšeme jednoduchou sběrnici používanou mikrořadičem 8051 (jedná se o mikrořadič původně navržený a vyráběný firmou Intel, dnes je v mnoha konfiguracích nabízen celou řadou dalších výrobců; předchůdcem tohoto čipu je první komerčně úspěšný mikrořadič – Intel 8048).

pc3106

Obrázek 6: Příklad jednoduché sběrnice, která slouží ke komunikaci mezi mikrořadičem 8051 a pamětmi RAM, ROM, popř. i dalšími zařízeními, které lze ke sběrnici připojit.

Na šestém obrázku je zobrazeno schéma připojení pamětí RAM a ROM k mikrořadiči. Vodiče vedoucí od mikrořadiče tvoří sběrnici, která je rozdělena – jak je ostatně pro paralelní sběrnice typické – do tří částí: na adresové vodiče, datové vodiče a řídicí vodiče (některé vodiče plní dvojí funkci, jsou multiplexovány). Vzhledem k tomu, že mikrořadič typu 8051 při adresování externích pamětí nejprve vytvoří šestnáctibitovou adresu na portu 0 a 2 (každý port je představován osmi vývody) a teprve poté zapisuje či naopak čte data z portu 0, musí být spodních osm bitů adresy zachyceno a zapamatováno pomocí obvodu 74HCT573 (nebo jiného záchytného registru), který je řízen signálem ALE (Address Latch Enable). Tento signál a k němu příslušný vývod tvoří část řídicí sběrnice. Horních osm bitů adresy nemusí být zachyceno, jsou totiž přístupné na portu 2, který jinou funkci neprovádí.

Port 2 tedy tvoří spolu s portem 0 adresovou část sběrnice, port 0 současně i datovou část. Řídicí část sběrnice je navíc doplněna o signály RD (Read), WR (Write) a PSEN (povolení čtení z externí paměti programu). I u dalších lokálních a universálních sběrnic se můžeme setkat s podobným využitím vodičů – adresy a data bývají multiplexovány, protože ve většině případů stejně nějaký čas trvá, než paměť (či jiné zařízení) adresu nějakým způsobem zpracuje, takže je zbytečné, aby sběrnice měla například 32 adresových a navíc ještě samostatných 32 datových vodičů. V případě, že by se mikrořadičem mělo ovládat další zařízení, lze na sběrnici připojit například obvod 8255 (paralelní rozhraní). Rozhodnutí, zda mají být data čtena/zapisována do paměti či obvodu 8255, lze provést například tak, že se pomocí nejvyššího adresového vodiče bude příslušný koncový bod vybírat (ovšem využitelná kapacita paměti RAM bude poloviční).

5. Typická sběrnice osmibitových domácích počítačů – ZX-81

V první části tohoto seriálu jsme slíbil, že si některé principy práce počítačů budeme vysvětlovat na příkladu slavného domácího osmibitového počítače ZX-81. I přes svoji jednoduchost měl ZX-81 vytvořenou sběrnici s možností připojení dalších externích zařízení. Původně se jednalo například o jednoduché tiskárny, v pozdější době se však objevily i návody, kterak k ZX-81 připojit například disketovou jednotku z počítačů Commodore.

pc3107

Obrázek 7: Slavný ZX-81

Tento počítač obsahuje pouze šest hlavních součástek. Především se jedná o mikroprocesor, kterým je Z80, přesněji řečeno jeho klon vyráběný firmou NEC (vedle mikroprocesoru se skrývá i krystal s oscilací 6,5 MHz, což je přesně dvojnásobek taktovací frekvence mikroprocesoru). Dále můžeme na plošném spoji vidět dva menší integrované obvody představující paměť typu RAM, tj. paměť, do které se dají zapisovat informace. Důvod, proč jsou použity dva obvody je jednoduchý – jednalo se totiž o čtyřbitové paměti, tj. pro jejich připojení k osmibitovému procesoru se muselo použít paralelní spojení dvou pamětí. Statické i dynamické paměti RAM se běžně dávaly do obalů s malým počtem vývodů, z toho vyplývají i ony čtyři bity (je totiž výhodnější „obětovat“ vývody na rozšíření adresové sběrnice na úkor sběrnice datové, což je snadné ověřit jednoduchým výpočtem.

pc3108

Obrázek 8: Plošný spoj ZX-81, vpravo nahoře je konektor pro připojení dalšího zařízení na interní sběrnici

Další součástkou je paměť typu ROM, která obsahovala základní rutiny pro ovládání počítače (zobrazení na televizi, vstup z klávesnice) a především interpret programovacího jazyka BASIC – jde tedy o jednoduchou obdobu dnešních EEPROM či Flash pamětí s BIOSem; mimochodem starší „originální“ počítače PC od IBM také obsahovaly BASIC zapsaný v ROM. Po levé straně se nachází čip ULA, což je zákaznický obvod, který v ZX81 sloužil především ke generování obrazu (k tomu však také využíval mikroprocesor, proto zobrazování poměrně značně zdržovalo běh programů). Všechny zmiňované obvody jsou zapojené na společnou sběrnici, která je rozdělená (jak jinak), na adresovou, datovou a řídicí část. Při vytváření sběrnice tvůrci ZX-81 využili známé vlastnosti Z80 – ten je schopen sám celou sběrnici řídit, dokonce dokáže občerstvovat i dynamické paměti. Naproti tomu předchůdce Z80, tj. mikroprocesor Intel 8080, k řízení sběrnice potřebovat další dva podpůrné obvody, které nesly označení 8224 a 8228.

pc3109

Obrázek 9: Schéma zapojení ZX-81, vpravo nahoře jsou popisy vývodů konektoru, na nějž lze připojit další zařízení

Adresové vodiče, jichž je šestnáct, jsou rozvedeny do všech připojených součástek, slouží také k podpoře čtení stisknutých kláves. Kromě toho jsou všechny adresové vodiče vyvedeny na externí konektor. Datová část sběrnice obsahuje osm vodičů, které jsou taktéž vyvedeny na externí konektor. Z řídicích signálů jsou přítomny nám již známé signály RW (Read) a WR (Write), nově se však objevují signály, které mohou na určitou dobu mikroprocesor zastavit (HALT) či přerušit jeho běžnou činnost a vyvolat obsluhu přerušení (MI, NMI). Vzhledem k tomu, že i tyto signály jsou vyvedeny na externí konektor, lze k počítači připojit zařízení, které bude samo vyžadovat „pozornost“ mikroprocesoru. Samotný způsob řízení sběrnice je v případě ZX-81 poněkud složitý, protože mikroprocesor spolu s ULA generuje obrazový signál. Externí přerušení tedy může způsobit viditelné změny v obraze, čehož je však možné využít a udělat ze ZX-81 zajímavý hybrid mezi osciloskopem a logickým analyzátorem. Bližší informace o způsobu generování obrazového signálu a přebírání řízení sběrnice mezi CPU a ULA si řekneme v části věnované grafickým kartám.

6. Universální interní sběrnice ISA

Mezi nejstarší a současně i nejjednodušší sběrnice používané v osobních počítačích typu IBM PC a kompatibilních, patří sběrnice typu ISA. Zkratka ISA vychází z anglického názvu Industry Standard Architecture. Tato sběrnice byla navržena firmou IBM v roce 1980 v laboratořích IBM Development Lab Bocaraton na Floridě. V roce 1981 byla použita osmibitová verze této sběrnice pro první počítače typu IBM PC. Tato verze podporovala připojení přídavných karet s osmibitovým rozhraním a konektorem, který obsahoval celkem 62 pinů. Od roku 1984 se začíná v počítačích IBM PC AT a kompatibilních používat šestnáctibitová verze této sběrnice, která podporuje karty s 98pinovým konektorem. Tato sběrnice se ve firemních materiálech IBM také nazývá AT Bus, ostatní výrobci však používají označení ISA. Šestnáctibitová sběrnice ISA se ve výpočetní technice používala velmi dlouho, zejména díky její konstrukční jednoduchosti (konektor šlo vytvořit přímo na plošném spoji bez dalších konstrukčních součástí) a detailnímu popisu komunikačního protokolu a průběhů signálů. Dnes ji lze spatřit například v mnoha průmyslových PC.

pc3110

Obrázek 10: Na této desce určené pro průmyslová PC (takzvaná backplane) je osm černých konektorů šestnáctibitové sběrnice ISA. Na konektorech je patrné oddělení původní osmibitové ISA od „šestnáctibitového“ rozšíření

Šestnáctibitová sběrnice ISA obsahovala adresovou část, která měla šířku 24 bitů, což odpovídá možnostem adresování až 16MB paměti (pomocí čtyř nejvyšších adresových bitů bylo možné ovládat takzvaný latch, tj. záchytný registr). Kromě paměti bylo možné obsluhovat maximálně 64kB vstupně/výstupních portů pomocí šestnáctibitové IO sběrnice (adresová část IO sběrnice měla šířku šestnácti bitů, maximální počet portů je tedy 216=65536). Datová část sběrnice měla šířku osm či šestnáct bitů. Blokový přenos dat byl řešen buď pomocí převzetí řízení sběrnice zařízením (jednodušší obdoba bus master přenosu používaného ve vyspělejších sběrnicích) nebo pomocí čtyř (později osmi) DMA kanálů. Pro přenos dat se používal synchronní protokol, oscilátor měl časovou základnu 70 ns, což odpovídá frekvenci 14,285 MHz. Tato frekvence byla dále dělena třemi, takže skutečná taktovací frekvence sběrnice byla u prvních verzí rovna necelým 4,77 MHz. Existovaly také rychlejší varianty s taktovací frekvencí 8 MHz, 8.33 MHz, 10 MHz, 12 MHz a 16 MHz.

pc3111

Obrázek 11: Uspořádání signálů na konektoru původní osmibitové sběrnice ISA

7. Literatura a odkazy na Internetu

  1. Wikipedia CZ: Sběrnice:
    http://cs.wiki­pedia.org/wiki/Sb%C4%9Br­nice
  2. Wikipedia EN: Industry Standard Architecture:
    http://en.wiki­pedia.org/wiki/In­dustry_Standar­d_Architecture
pc3112

Obrázek 12: Karta určená pro relativně neúspěšnou (protože drahou a současně i nevýkonnou) sběrnici EISA

CS24_early

8. Obsah dalšího pokračování seriálu

V následujícím pokračování seriálu o architekturách počítačů si popíšeme nechvalně známou lokální sběrnici VESA Local Bus, universální sběrnici PCI a její moderní následovníky. Také nezapomeneme na modifikaci sběrnice PCI ve formě portu AGP, který slouží k připojení grafických akcelerátorů.

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.