Takésystémová sběrnice, datová sběrnice, I/O sběrniceZákladní

Definice

Sběrnice je komunikační cesta, po které si části počítače nebo vestavěného systému předávají data, adresy a řídicí signály. Určuje, kdo může mluvit, jak rychle přenos probíhá a jak zařízení poznají správného příjemce; fyzicky může jít o vodiče, konektor, protokol nebo jejich kombinaci.

Kategorie: Počítačová architekturaAktualizováno

Nezaměňujte: V informatice se sběrnice nejčastěji chápe jako hardwarové propojení částí počítače, ale stejný český výraz se používá i pro softwarové message bus nebo event bus.

Proč počítač potřebuje sběrnici

Sběrnice řeší praktický problém: procesor, paměť, úložiště, grafická karta a řadiče vstupů a výstupů si musí vyměňovat informace, ale není účelné vést mezi každou dvojicí zařízení samostatné spojení. Společná komunikační cesta s jasnými pravidly snižuje počet vodičů, zjednodušuje návrh desky a umožňuje připojit zařízení od různých výrobců.

Sběrnice může být velmi jednoduchá, například několik vodičů mezi mikrokontrolérem a čidlem, nebo složitá, například PCI Express v osobním počítači. V obou případech nejde jen o kovové spoje. Důležitá jsou také pravidla časování, adresování, potvrzování přenosu a řešení chyb.

Adresy, data a řízení přenosu

Klasický popis sběrnice rozlišuje datovou, adresovou a řídicí část. Datová část nese samotné hodnoty, adresová část říká, kam přenos míří, a řídicí část oznamuje, zda se čte, zapisuje, čeká na odpověď nebo potvrzuje dokončení. V reálných systémech mohou být tyto role oddělené, sdílené v čase nebo zabalené do paketů.

Procesor při čtení z paměti typicky vyšle adresu, řídicí signál pro čtení a čeká na data. Řadič paměti odpoví hodnotou a přenos skončí. U pomalejších periferií může zařízení požádat o prodloužení cyklu, protože fyzický svět, například senzor nebo flash paměť, nereaguje stejně rychle jako cache uvnitř procesoru.

Úzké hrdlo a arbitráž

Společná sběrnice je sdílený zdroj. Pokud se o ni současně hlásí procesor, síťová karta a diskový řadič, musí rozhodnout arbitráž: mechanismus, který přidělí právo vysílat jednomu účastníkovi. Bez arbitráže by zařízení mohla mluvit přes sebe a přenos by byl nečitelný.

Výkon sběrnice závisí na šířce přenosu, frekvenci, režii protokolu, latenci a schopnosti obsloužit více požadavků najednou. Širší sběrnice proto sama o sobě nezaručuje rychlejší systém. Úzké hrdlo se často přesune do paměti, řadiče, softwarového ovladače nebo do čekání na odpověď zařízení.

Paralelní, sériová a paketová podoba

Starší sběrnice bývaly často paralelní: více bitů cestovalo současně po více vodičích. Paralelní přenos vypadá přímočaře, ale s rostoucí rychlostí se hůře hlídá, aby všechny signály dorazily v použitelném okamžiku. Moderní rozhraní proto často používají rychlé sériové linky, diferenciální páry a paketový přenos.

PCI Express je dobrý příklad posunu od společné paralelní sběrnice k přepínané topologii s linkami. USB zase ukazuje sběrnici navrženou pro periferní zařízení, napájení a automatické rozpoznání. I2C a SPI se používají ve vestavěných systémech, kde je důležitá jednoduchost, levné propojení a malé vzdálenosti.

Sběrnice mimo základní desku

Sběrnice se v češtině používá i v přeneseném významu. Softwarová message bus nebo event bus propojuje části aplikace pomocí zpráv místo vodičů. Smysl zůstává podobný: více účastníků sdílí komunikační mechanismus a dodržuje dohodnutý protokol. Rozdíl je v tom, že limity neurčuje elektrika, ale fronty, serializace, doručování, transakce a provozní spolehlivost.

Příklady z praxe

  1. Čtení čidla přes I2C

    Mikropočítač čte teplotní čidlo na I2C sběrnici. Program pošle adresu zařízení a číslo registru, sběrnice zajistí, že odpoví právě čidlo s adresou 0x48. Výsledkem jsou dva bajty, které aplikace převede na měřenou hodnotu podle dokumentace senzoru.

    from smbus2 import SMBus
    
    I2C_BUS = 1
    SENSOR_ADDR = 0x48
    TEMP_REG = 0x00
    
    with SMBus(I2C_BUS) as bus:
        raw = bus.read_i2c_block_data(SENSOR_ADDR, TEMP_REG, 2)
        value = (raw[0] << 8) | raw[1]
        print(value)
  2. Grafická karta na PCI Express

    Počítač spustí hru a grafická karta potřebuje rychle přijímat textury z operační paměti. PCI Express poskytne mezi čipsetem a kartou několik sériových linek, přes které putují pakety s daty a příkazy. Pokud karta běží v menším počtu linek, hra nemusí zpomalit vždy, ale velké přenosy textur mohou čekat déle.

Časté omyly

MýtusČím širší sběrnice, tím je počítač vždy rychlejší.
Ve skutečnostiŠířka pomáhá jen tehdy, když ostatní části systému stíhají data dodávat a odebírat. Výkon mohou omezit latence, protokolová režie, paměť, řadič nebo software.
MýtusSběrnice je prostě kabel nebo pár vodičů.
Ve skutečnostiSběrnice zahrnuje také pravidla komunikace, časování, adresování a řešení konfliktů. Stejné fyzické propojení by bez protokolu neříkalo, kdo právě vysílá a jak má příjemce data vyložit.

Časté dotazy

Co znamená šířka sběrnice v bitech?
Šířka sběrnice v bitech říká, kolik bitů může dané rozhraní přenést v jednom taktu nebo jednom přenosovém kroku podle svého návrhu. Širší datová část může zvýšit propustnost, ale skutečný výkon závisí také na frekvenci, latenci, režii protokolu a schopnosti zařízení data připravit. U moderních sériových rozhraní se navíc výkon často popisuje spíše počtem linek a rychlostí signalizace než klasickou šířkou paralelní sběrnice.
Proč se sběrnice nedá chápat jen jako kabel?
Sběrnice nemůže být spolehlivá jen jako další kabel, protože přenos potřebuje dohodnuté elektrické vlastnosti, časování a pravidla komunikace. Zařízení musí vědět, kdy může vysílat, jak pozná adresáta, jak se potvrdí přenos a co se stane při chybě. Bez těchto pravidel by stejné vodiče mohly nést nejednoznačné signály, zařízení by si navzájem rušila komunikaci a software by neuměl odhadnout stav připojeného hardwaru.
Proč se u rozšiřujících karet prosadil PCI Express?
PCI Express nahradil starší sdílené PCI hlavně proto, že přepínané sériové linky lépe škálují s rychlostí a počtem zařízení. Staré PCI používalo společnou paralelní sběrnici, kde se zařízení dělila o stejnou komunikační cestu. PCI Express vytváří samostatné spojení přes přepínače a kořenový komplex, takže více zařízení může přenášet data efektivněji a fyzické návrhy desek jsou zvládnutelnější při vyšších rychlostech.
Může být sběrnice i softwarová?
Softwarová sběrnice je architektonický vzor, ne fyzický spoj. Message bus nebo event bus předává zprávy mezi částmi systému, službami nebo procesy, aby spolu nemusely být pevně svázané. Podobnost s hardwarovou sběrnicí spočívá ve sdíleném komunikačním mechanismu a dohodnutém protokolu. Rozdíl spočívá v limitech: softwarovou sběrnici brzdí serializace, fronty, doručování, transakce a provozní výpadky.

Zdroje

  1. Bus (computing)(otevře se v novém okně)Wikipedia
  2. The Linux PCI driver implementer’s API guide(otevře se v novém okně)The Linux Kernel documentation

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.