Dvě polohy a nic mezi tím
Počítač nerozlišuje odstíny. Umí jen „teče proud“ a „neteče proud“, a přesto se do něj vejde text, hudba i model, který odpovídá na otázky. Začneme u toho, proč je právě tahle chudoba výhoda.
Tohle je první díl série Jak funguje počítač. Od jediného drátu v ní poskládáme celý počítač a skončíme u toho, proč provoz umělé inteligence stojí, co stojí. Každý díl vysvětlí jednu věc a staví na předchozím.
Stojíte večer na jedné straně údolí, kamarád na druhé. Máte baterku a potřebujete mu sdělit jedno číslo od nuly do devítky. Mluvit nejde, je to daleko.
První nápad bývá jas. Devítku pošlu naplno, pětku z poloviny, jedničku skoro potmě. Na papíře to vypadá dobře. V údolí to selže, protože kamarád nemá s čím porovnávat. Mezi čtyřkou a pětkou je rozdíl pár procent jasu a do toho se plete vzdálenost, mlha a jeho vlastní oko.
Horší než samotná chyba je, že o ní nevíte. Kamarád vám nenahlásí „asi pětka, ale nejsem si jistý“. Řekne pětka a vy budete počítat dál s pětkou.
Co ale pozná spolehlivě, je rozsvíceno a zhasnuto. To se nedá splést ani přes celé údolí, ani v mlze.
Někdo vám po drátu poslal číslo a signál se cestou rozkmital. Zkuste přečíst, které to bylo. Pak přepněte na dvě úrovně a zkuste to znovu, se stejně silným rušením.
Ten rozdíl není v šikovnosti. Je v tom, kolik místa zbylo mezi sousedními hodnotami. Na stupnici s deseti dílky je mezi nimi jedna devítina rozsahu, takže signálu stačí zakmitat o polovinu téhle mezery a už nevíte, na čem jste. Na stupnici se dvěma dílky je mezi nimi celý rozsah a stejně silné chvění je úplně jedno.
Uvnitř procesoru je to přitom mnohem horší než na tom údolí. Vedle sebe běží miliardy drátů, navzájem se ovlivňují, čip se zahřívá a napětí kolísá podle toho, co zrovna počítá. Kdyby se rozlišovalo deset úrovní, počítač by se pletl. Se dvěma se neplete.
Má to ještě jeden důsledek, bez kterého by počítač nemohl existovat. Když drát přijme hodnotu blízkou jedničce, nepředá ji dál takovou, jaká přišla. Vyrobí novou, čistou jedničku a pošle tu. Drobná odchylka se tím zahodí a další článek dostane signál jako nový.
Zkuste si představit, co by se dělo bez toho. Signál v procesoru projde na cestě stovkami součástek za sebou. Kdyby každá přidala kousek nepřesnosti jako při kopírování kopie, na konci by nezbylo nic. Protože se ale na každém kroku hodnota narovná na nulu nebo jedničku, může řetěz pokračovat libovolně dlouho a výsledek zůstane přesný.
Rozdíl mezi obojím znáte z gramofonu a z cédéčka. Škrábanec na desce slyšíte, protože jehla čte tvar drážky a každé poškození se promítne rovnou do zvuku. Škrábanec na cédéčku obvykle neslyšíte vůbec. Přehrávač totiž nečte tvar, čte jen jedničky a nuly, a dokud odchylka nepřeroste přes půlku mezery, přečte přesně to, co tam bylo zapsáno. Pod hranicí je poškození neslyšitelné, nad hranicí hudba naopak přeskočí nebo zmlkne. Analogová deska se kazí plynule, digitální záznam dlouho vydrží bez úhony a pak selže naráz.
Dvě polohy tedy nejsou nouzovka ani následek toho, že by to tvůrci neuměli líp. Je to výměna: koupíte si spolehlivost za to, že jeden drát toho moc neřekne. A je to výhodná koupě, protože drátů se dá přidat víc.
Počítače, které počítaly po desítkách a po trojkách
Že to je rozhodnutí, a ne nutnost, je nejlíp vidět na strojích, které se rozhodly jinak.
ENIAC, dokončený v roce 1946, počítal v desítkové soustavě. Číslice se v něm držely v kruhových čítačích, kde každý čítač měl deset stavů a v jednu chvíli byl aktivní právě jeden z nich. Na každou číslici jedno kolečko o deseti polohách. Pro lidi, kteří výsledky četli, to bylo pohodlné; na součástky to bylo drahé.
Ještě dál zašel sovětský Setun z Moskevské státní univerzity, postavený koncem padesátých let. Ten počítal trojkově, se stavy minus jedna, nula a plus jedna. Trojková soustava má své matematické výhody a Setun opravdu fungoval.
Oba směry prohrály ze stejného důvodu. Čím víc stavů po jednom vodiči rozlišujete, tím menší je mezi nimi mezera a tím dražší je spolehlivá součástka. U dvou stavů je mezera největší možná.
Jeden drát, dvě polohy
Od téhle chvíle bude v celé sérii platit jedna dohoda. Kouknete se na ni, než ji začnu používat.
Přepněte vypínač. Takhle bude drát pod proudem a drát bez proudu vypadat ve všech dalších dílech.
Drát, kterým teče proud, čteme jako jedničku. Drát bez proudu jako nulu. Je to dohoda, ne přírodní zákon; klidně by to šlo naopak a v některých obvodech to tak opravdu je. Podstatné je, že se na jedné verzi dohodnou obě strany drátu.
Téhle jedné informaci, téhle odpovědi na jedinou otázku ano, nebo ne, se říká bit.
Co ta otázka je, drát netuší a je mu to jedno. Může znamenat, jestli jsou dvířka zavřená, jestli je uživatel přihlášený, nebo jestli je sedmý obrazový bod zleva černý. Význam nesedí v drátu, ale v dohodě mezi tím, kdo signál posílá, a tím, kdo ho čte. Tahle lhostejnost je důvod, proč se stejnými součástkami dá zpracovat text i zvuk.
Odkud se vzalo slovo bit
Je to srostlina z anglického „binary digit“, tedy dvojková číslice. Vymyslel ji matematik John Tukey v interní zprávě Bellových laboratoří z 9. ledna 1947 a do světa ji pustil Claude Shannon ve článku A Mathematical Theory of Communication z roku 1948. Shannon tam píše, že při základu dva se výsledné jednotky dají nazývat binary digits, zkráceně bits, a autorství výslovně přiznává Tukeymu.
Jedna věc, kterou tahle série jinak nechává stranou: Shannon nezaváděl bit jako kus drátu, ale jako jednotku množství informace. Jeden bit je tolik informace, kolik jí získáte zodpovězením jedné otázky, u které jste předtím považovali obě odpovědi za stejně pravděpodobné.
Když tedy někde narazíte na větu, že nějaký text „nese jen několik bitů informace“, nemluví se o jeho velikosti na disku. Mluví se o tom, jak málo nového jste se dozvěděli.
Druhý drát
Jeden bit je na cokoli zajímavého málo. Dva dráty vedle sebe už ale umí čtyři různé kombinace: obě nuly, nula a jednička, jednička a nula, obě jedničky. Tři dráty osm.
Přidávejte dráty a sledujte číslo pod schématem. Všimněte si, kdy přestane být možné vypsat všechny kombinace pod sebe.
Každý přidaný drát počet zdvojnásobí, a důvod je jednoduchý. Vezměte všechny kombinace, které jste měli, a přidejte jeden drát. Každá stará kombinace teď existuje dvakrát, jednou s novým drátem vypnutým a jednou se zapnutým. Nic víc, nic míň.
Zdvojnásobování vypadá ze začátku nevinně. Čtyři, osm, šestnáct. U deseti drátů je to ale 1 024, u dvaceti přes milion a u třiceti přes miliardu. Třicet drátů se vejde do dlaně.
Tohle je ten moment, kvůli kterému celá věc funguje. Jeden drát je beznadějně chudý, jenže chudoba s přibývajícími dráty neklesá pomalu, mizí překotně. Nepotřebujeme proto složitější součástku, stačí jich dát vedle sebe víc.
Zbývá se dohodnout, jak z té kombinace přečíst číslo. Dělá se to stejně, jako to děláte celý život s běžnými čísly. V zápisu 274 neznamená dvojka dva, ale dvě stovky, protože na svém místě má váhu sto. U každého dalšího místa doleva se váha násobí deseti.
U drátů se váha násobí dvěma. Krajní drát má váhu jedna, vedlejší dvě, pak čtyři, osm a tak dál. Číslo přečtete tak, že sečtete váhy drátů, kterými teče proud. Osm drátů má váhy od jedné do 128 a dohromady pokryje čísla od nuly do 255, což je právě těch 2⁸ neboli 256 kombinací.
Poskládejte si číslo z vah, nebo ho rovnou napište a dívejte se, které dráty se přepnou. Osmi drátům vedle sebe se říká bajt.
Proč zrovna osm, není dáno ničím hlubokým. Je to dohoda, která se ustálila v šedesátých letech a udržela se, protože osm bitů pohodlně pokryje písmena abecedy i číslice a protože mocnina dvojky se dobře dělí na poloviny. Starší stroje pracovaly i se šesticemi. Dneska je bajt tak zažitý, že se v něm měří všechno od zprávy v telefonu po disková pole.
Kde došly dráty
Zdvojnásobování má i odvrácenou stranu. Funguje totiž jen tak daleko, kam jste si ho předem pustili. Kolik drátů na co vyhradíte, je rozhodnutí, které se dělá jednou a žije desítky let.
Dokud se do vyhrazeného počtu vejdete, máte místa nazbyt a připadá vám, že jste byli zbytečně velkorysí. Jakmile ho přerostete, nepřibude vám jeden drát navíc. Předělat se musí všechno, co s tím číslem pracuje, a to naráz na obou stranách každého spojení.
Nejdražší takový omyl v historii sítí má na svědomí adresa, kterou má v internetu každé zařízení. Při návrhu v roce 1981 pro ni bylo vyhrazeno 32 bitů, tedy 32 drátů. Zdvojnásobte dvojku dvaatřicetkrát a vyjde 4 294 967 296 adres. V roce 1981 bylo k síti připojeno 213 počítačů a přibýval zhruba jeden za dvacet dní. Čtyři miliardy adres tehdy vypadaly jako číslo, které nikdo nikdy nevyčerpá. Centrální zásoba došla 3. února 2011, regionální registrátoři ji dojeli během následujících let a internet se s následky pere dodnes.
Řešení existují dvě a obě jsou vidět dodnes. Buď se za jednu veřejnou adresu schová celá domácnost nebo firma a zařízení uvnitř se navenek tváří jako jedno, nebo se přejde na novější adresu se 128 bity. Těch je tolik, že se o ně dalších pár generací nebude muset nikdo starat. Přechod se vleče od devadesátých let.
Druhý důsledek těch vah potkáte pokaždé, když koupíte disk. Výrobce napíše na krabici 1 TB a myslí tím bilion bajtů, protože počítá po tisících. Operační systém ale počítá po mocninách dvojky a za „giga“ považuje 1 073 741 824 bajtů. Vydělíte jedno druhým a dostanete 931. Disk tedy neukazuje míň, než jste koupili; obě strany jen počítají ve své vlastní soustavě.
Co se stane, když se rušení přece jen trefí
Mezera mezi nulou a jedničkou je veliká, ale ne nekonečná. Občas se stane, že se bit cestou převrátí, a čím víc dat přenesete, tím jistěji k tomu dojde.
Nejlevnější obrana je parita: k osmi bitům se přidá devátý tak, aby byl počet jedniček vždycky sudý. Když přijde skupina s lichým počtem, něco se cestou pokazilo. Chybu to najde, ale neopraví, a dvě chyby naráz přehlédne.
Serverové paměti proto používají ECC, kde se ke každým 64 bitům přidává osm kontrolních. Jednobitovou chybu umí rovnou spravit a dvoubitovou aspoň nahlásit. Platí se za to zhruba o osminu víc paměťových čipů a kousek propustnosti.
V praxi se to rozhoduje takhle: u serveru, kde běží databáze a tiché přepsání jednoho bitu znamená poškozená data, se ECC vyplatí. U notebooku se obvykle neřeší, protože důsledkem bývá nanejvýš spadlá aplikace.
Zpátky k té baterce v údolí. Dohodli jsme se, jak číslo zapsat, a víme, že na to stačí osm drátů. Máme zápis, kterým se dá vyjádřit cokoli, co se dá spočítat nebo rozlišit, a je dost odolný, aby přežil cestu přes mlhu i přes křemík.
Jednu věc jsme ale celou dobu obcházeli. Každý vypínač v tomhle článku přepnula vaše ruka. V údolí je to v pořádku. Uvnitř počítače u toho žádná ruka není a dráty se přesto přepínají pořád dokola, mnohem rychleji, než by to kdokoli stihl.
Co tedy umí přepnout drát?