O čem to je
Notebook, mobil, chytrá pračka i server v datacentru vypadají úplně jinak. Uvnitř ale fungují podle stejného plánu, který popsal matematik John von Neumann v roce 1945.
Když ten plán znáš, rozumíš, proč má počítač procesor, paměť a disk, proč se zpomaluje a co vlastně dělá, když „počítá“.
Nové pojmy
Architektura počítačePlán, z jakých hlavních částí se počítač skládá a jak spolu spolupracují. Neříká, jak je která součástka vyrobená.Notebook i herní PC mají stejnou architekturu, jen jiné výkonné součástky.
InstrukceJeden jednoduchý příkaz pro procesor, například „sečti dvě čísla“ nebo „načti číslo z paměti“.Program je dlouhá řada instrukcí, třeba miliony.
ProgramPosloupnost instrukcí, která řeší nějaký úkol.Kalkulačka, prohlížeč, hra.
DataÚdaje, se kterými program pracuje: čísla, texty, obrázky.Čísla, která sčítá kalkulačka.
Počítač jako kuchyně
Představ si restaurační kuchyni. Kuchař vaří podle receptu. Recept i suroviny leží v jedné spíži. Objednávky přicházejí okénkem a hotová jídla odcházejí jiným okénkem. Mezi spíží a kuchařem chodí pomocník s podnosem.
Procesor (CPU)Část, která provádí instrukce. Skládá se z řadiče a ALU.V kuchyni je to kuchař.
ŘadičČást procesoru, která čte instrukce, rozumí jim a řídí ostatní části: kdy se má co načíst, spočítat a uložit.Kuchařova hlava, která čte recept a rozhoduje, co dělat.
ALU (aritmeticko-logická jednotka)Část procesoru, která opravdu počítá: sčítá, odčítá, porovnává a dělá logické operace.Kuchařovy ruce, které krájí a míchají.
Operační paměťPaměť, ve které jsou uložené zároveň program i data, se kterými se právě pracuje.Spíž, kde je recept i suroviny.
Vstupní a výstupní zařízeníČásti, kterými se data dostávají do počítače (vstup) a ven (výstup).Klávesnice a myš jsou vstup, monitor a tiskárna výstup. V kuchyni okénko pro objednávky a pro hotová jídla.
SběrniceSoustava vodičů, po kterých si části počítače posílají data, adresy a řídicí signály.Pomocník s podnosem mezi spíží a kuchařem.
⌨️ ➡️ 🧑🍳 ↔️ 🗄️ ➡️ 🖥️Vstup → procesor ↔ paměť → výstup
Jak kuchař pracuje
Kuchař neudělá celý recept naráz. Přečte jeden řádek, pochopí ho, provede ho a jde na další. Procesor to dělá stejně, jen miliardkrát za sekundu. Tomuto koloběhu se říká cyklus instrukce. Klepej na šipky a projdi ho.
- Fetch: načti instrukci z paměti
- Decode: řadič ji dekóduje (pochopí)
- Execute: ALU ji provede
- Výsledek ulož a posuň se na další instrukci
Kde je slabé místo
Kuchař je velmi rychlý, ale pomocník s podnosem je jen jeden. Pro recept i pro suroviny musí chodit stejnou cestou. Kuchař pak často čeká. V počítači se tomu říká von Neumannovo úzké hrdlo: procesor je rychlejší, než stačí sběrnice a paměť dodávat instrukce a data.
Harvardská architekturaJiný plán: program a data jsou ve dvou oddělených pamětech s vlastními sběrnicemi, takže se dají číst současně.Kuchyně se dvěma pomocníky: jeden nosí recepty, druhý suroviny. Používá se hlavně v mikrokontrolérech, např. v pračce nebo v Arduinu.
Ve kterém kroku cyklu instrukce se sečtou dvě čísla?
Nejdřív se instrukce „sečti“ načte z paměti (fetch), pak ji řadič dekóduje (decode). Samotné sečtení udělá ALU až v kroku execute.
Mikrokontrolér v pračce má program v paměti flash a data v malé paměti RAM, každou na vlastní sběrnici. Jaká je to architektura a proč?
Program a data jsou v oddělených pamětech s oddělenými sběrnicemi. To je přesně definice harvardské architektury. Výhoda: procesor může zároveň číst instrukci i data.
✗Program je uložený jinde než data, data jsou v paměti a program v procesoru.
✓Ve von Neumannově architektuře jsou program i data ve stejné operační paměti.
Procesor si instrukce programu z paměti načítá jednu po druhé. Sám o sobě program „neobsahuje“.
Von Neumannův počítač má procesor (řadič + ALU), operační paměť pro program i data, vstup a výstup a vše spojují sběrnice. Procesor opakuje cyklus fetch–decode–execute. Sdílená cesta k paměti je úzké hrdlo; harvardská architektura má paměť programu a dat oddělenou.