Foto: © makaule / Dollar Photo Club

Skutečný a idealizovaný procesor

I elementární aritmetické operace je možné zpracovávat natolik rozdílně, že je těžké srovnávat procesory jeden s druhým.

Skutečné procesory
Odsud – začátek úryvku Dosud jsme mluvili o zjednodušené verzi CPU. Skutečné procesory jsou v detailech složitější, protože u nich navíc hraje roli efektivita a výkon.
CPU provádí cyklus načítání, dekódování a vykonání stále znovu. Načítá z paměti další instrukci, což obvykle bývá instrukce uložená na dalším paměťovém místě, mohla by to ale být i instrukce z místa určeného instrukcemi GOTO nebo IFZERO. CPU tuto instrukci dekóduje, to znamená, že zjišťuje, co dělá, a provádí přípravy k jejímu provedení. Pak ji vykoná – načtením informace z paměti, aritmetickou nebo logickou operací a uložením výsledků, to vše v takové kombinaci, jakou daná instrukce vyžaduje. Poté se procesor vrací zpět k načítací fázi cyklu. Cyklus načtení–dekódování–vykonání se ve skutečném procesoru uskutečňuje komplikovaným mechanismem, v jehož rámci celý proces proběhne velmi rychle, v podstatě to však není nic jiného než smyčka toho typu, který jsme si ukázali výše u programu pro přičítání čísel.
Skutečný počítač má více instrukcí než náš model, v zásadě jsou ale oba stejné. Skutečné počítače využívají více způsobů přesunování dat, mají více možností provádění aritmetických výpočtů s čísly o různé velikosti a různých typů, disponují více způsoby srovnávání a větvení prostřednictvím skoků a mají více možností, jak řídit zbytek stroje. Běžný CPU má několik desítek až stovek instrukcí; instrukce a data obvykle zabírají mnoho paměťových míst, zpravidla o kapacitě od 1 do 8 bajtů. Skutečný procesor bude mít více střadačů (říká se jim registry), obvykle 16 nebo 32, které ukládají průběžné výsledky a umožňují jejich mimořádně rychlé zpracování.
Opravdové programy jsou ve srovnání s našimi simulovanými příklady obrovské a nezřídka obsahují miliony instrukcí. V dalších kapitolách věnovaných softwaru se vrátíme k tomu, jak se takové programy píšou.
Architektura počítačů je obor, který se zabývá projektováním procesorů a jejich propojením se zbytkem počítače; na vysokých školách to bývá podobor na pomezí informatiky a elektroinženýrství.
Jednou z věcí, kterou se architektura počítačů zabývá, je instrukční sada – repertoár instrukcí, které procesor vykonává. Je lepší mít větší počet instrukcí, s nimiž by se dala zvládnout široká škála výpočetních operací, nebo je výhodnější mít méně instrukcí, s nimiž by se dal procesor postavit jednodušeji a mohl by běžet rychleji? Architektura se snaží nacházet komplikované kompromisy mezi funkčností, rychlostí, složitostí, spotřebou energie a programovatelností: pokud je příliš komplikovaná, programátoři nebudou schopni jejích prvků dostatečně využít. K tomu se vyjádřil i von Neumann: „Obecně je vnitřní ekonomika výpočetní jednotky určena kompromisem mezi touhou po rychlostí operace […] a touhou po jednoduchosti nebo nízké ceně stroje.“
Jak je CPU propojen s RAM a zbytkem počítače? Procesory jsou velmi rychlé a vykonání jedné instrukce jim obvykle zabere mnohem méně než jednu nanosekundu. (Připomeňme si, že „nano“ je jedna miliardtina čili 10–9.) RAM je ve srovnání s tím mučivě pomalá – načtení data nebo instrukce z RAM může trvat 25 až 50 nanosekund. To je samozřejmě v absolutních číslech hodně rychlé, je to ale pomalé z pohledu CPU, který by při čekání na data z RAM mohl vykonat kolem stovky instrukcí.
Moderní počítače používají mezi CPU a RAM malý počet velmi rychlých mezipamětí zvaných cache, které ukládají nedávno použité instrukce a data. Přístup k informacím v cache je mnohem rychlejší než přístup do paměti RAM. O tomto tématu si řekneme více v následující kapitolce.
Konstruktéři počítačů mají v záloze sbírku triků, jak zpracování dat urychlit. CPU může být navržen tak, aby se v něm překrývalo načítání a vykonávání, takže zpracovává zároveň několik instrukcí v různé fázi dokončení: říká se tomu pipelining čili zřetězené zpracování a v podstatě se to podobá sestavování aut na pohyblivé montážní lince. Výsledkem je, že provedení jedné instrukce sice trvá stejný čas, ten se však překrývá s předzpracováním dalších instrukcí, a tak jich procesor z dlouhodobějšího hlediska zpracuje několikrát více. Další možností je zpracovávat souběžně více instrukcí, které se vzájemně nenarušují nebo na sobě nezávisejí; je to jako mít v automobilové továrně paralelní montážní linky. Někdy je možné zpracovávat instrukce i v jiném pořadí, ale jen v případě, že se tyto operace vzájemně neovlivňují.
Ještě další možností je mít v chodu více procesorů najednou. Něco takového je v dnešních noteboocích a mobilních telefonech běžné. Procesor Intel v mém počítači má dva CPU na jednom integrovaném obvodu; vládne trend umisťovat na jeden čip stále více procesorů a dávat do jednoho přístroje více než jeden čip. Se zmenšováním integrovaných obvodů je možné vměstnat na čip více tranzistorů, které slouží více procesorům a více mezipamětím.
Jiný soubor kompromisů se ve stavbě procesorů uplatňuje při úvahách, k čemu bude procesor sloužit. Jejich hlavním místem určení byly dlouhou dobu stolní počítače, které mají k dispozici relativně hodně prostoru a elektrické energie. Když se ví, že nebude problém s energií a že je možné vzniklé teplo odvádět ventilátory, mohou se návrháři soustředit na to, aby procesor běžel co nejrychleji. Notebooky tento přístup ke kompromisu mezi požadavky změnily, protože začal hrát roli faktor stísněného prostoru a to, že notebook potřebuje energii z těžké a drahé baterie. Procesory pro notebooky tak bývají proti procesorům srovnatelných stolních počítačů pomalejší a energeticky úspornější.
Mobilní telefony, tablety a další snadno přenosné přístroje to posunuly ještě dál, protože je velikost, hmotnost a energie omezují ještě mnohem více. Na tomto poli už pouhé vylepšení designu nestačí. Intel je sice dominantním dodavatelem procesorů pro stolní počítače a notebooky, ale téměř všechny telefony a tablety používají procesorovou architekturu zvanou ARM a navrženou tak, aby spotřebovávala co nejméně energie. Procesory ARM vyvinula britská firma ARM Holdings, s jejíž licencí je nyní vyrábějí další firmy.
Srovnávat rychlost různých CPU je ošemetné a nemá to příliš velký význam. I elementární aritmetické operace je možné zpracovávat natolik rozdílně, že je těžké srovnávat procesory jeden s druhým. Kupříkladu jeden procesor může k sečtení dvou čísel a uložení výsledku potřebovat tři instrukce, tak jako náš model počítače, druhý procesor na to potřebuje dvě instrukce, zatímco třetímu na to stačí instrukce jedna a další dokáže paralelně zpracovávat několik instrukcí s jejich postupným překrýváním. Procesory běžně obětují rychlejší vykonání operací nižší spotřebě energie, a dokonce umějí svou rychlost dynamicky upravovat v závislosti na zdroji energie. K tvrzením, že jeden procesor je „rychlejší“ než druhý, bychom tedy měli přistupovat obezřetně, protože to může záviset na požadované spotřebě.

Práce s cache
Stojí za to udělat si krátkou odbočku na téma mezipaměti, což je princip, který má ve výpočetních technologiích široké využití. Její typ v procesoru, cache, je malá a velmi rychlá paměť, kterou CPU využívá k ukládání nedávno použitých informací tak, aby pro ně nemusel jít do RAM. CPU obvykle musí získávat přístup ke skupinám dat a instrukcí mnohokrát rychle za sebou. Například oněch půl tuctu instrukcí cyklu z programu pro přičítání čísel na obrázku 3.9 se provede jednou na každé zadané číslo. Pokud budou tyto instrukce uloženy v cache, pak je nebude nutné načítat pokaždé z RAM a program poběží rychleji, protože se nebude muset čekat na pomalou RAM. Podobně urychlí přístup k datům i uložení paměťového místa Sum v datové cache, i když hlavním úzkým hrdlem tohoto programu je vstup dat z klávesnice.
Typický CPU má dvě nebo tři cache, které se označují L1, L2 a L3, od nejmenší a nejrychlejší po největší a nejpomalejší; ta největší může ukládat data o velikosti několika megabajtů. (Můj nový notebook má v cache L2 256 kB na každé jádro a 4 MB v jediné cache L3.) Rozsáhlé používání cache je výhodné proto, že nedávno použité informace budou pravděpodobně brzy použity znovu – mít je v cache znamená méně čekání na přístup k datům v RAM. V procesu ukládání na cache se nahrávají najednou celé bloky informací – když je například zapotřebí informace obnášející jediný bajt, nahraje se celý blok po sobě jdoucích míst v RAM. Dělá se to proto, že brzy zřejmě budou zapotřebí i okolní informace, a je dobré, když už budou v cache také, aby se pak na ně nemuselo čekat.

tento text je úryvkem z knihy:
Brian W. Kernighan: Jak porozumět digitálnímu světu
Argo a Dokořán 2019
O knize na stránkách vydavatele
obalka-knihy

Poznámka PH: Jedná se o text spíše začátečnický, jakýsi „úvod do IT pro studenty humanitních oborů“. Nicméně je zde třeba i kapitola o programování v JavaScriptu.

Středověk - ilustrační obrázek. Rukopis rukopisu Ruralia commoda, 14. století, licence obrázku public domain

Středověká Praha

Praha se od říšských i polských velkoměst lišila tím, že nebyla multifunkční. Pražská řemeslná produkce …

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *