# 20 — Architektura počítače > [!abstract] O tématu > ==**Architektura počítače**== = ==**základní koncepce, jak jsou propojené části počítače**== a jak spolu komunikují. Nejznámější je ==**von Neumannova architektura**==, na které stojí prakticky všechny dnešní PC. > [!info] Maturitní otázka > **a)** Nakreslit a vysvětlit von Neumannovu architekturu · **b)** Princip a funkce částí · **c)** Non von Neumannovy architektury --- ## a) Von Neumannova architektura ==**John von Neumann**== (1945) — americký matematik navrhl schéma jako model ==**samočinného počítače**==. Tento koncept zůstává až na výjimky **dodnes**. > [!note] Architektura vs Implementace > - ==**Architektura**== = specifikace programového modelu (co od počítače chceme — reprezentace dat, formát instrukce, adresování...) > - ==**Implementace**== = volba technologie, vlastní zapojení, obvodový návrh ### Schéma ``` ┌──────────────────────────────────┐ │ CPU (Procesor) │ │ ┌────────────┐ ┌────────────┐ │ │ │ ALU │ │ Řadič (CU) │ │ │ └────────────┘ └────────────┘ │ │ ┌──────────────────────────────┐│ │ │ Registry ││ │ └──────────────────────────────┘│ └─────────────┬────────────────────┘ │ ↕ (sběrnice) ┌─────────────┴────────────────────┐ │ Operační paměť (RAM) │ │ ── společná pro program i data ──│ └─────────────┬────────────────────┘ │ ↕ ┌─────────────┴────────────────────┐ │ Vstupní a výstupní zařízení │ │ (klávesnice, monitor, disk...) │ └──────────────────────────────────┘ ``` ### Klíčové principy - ==**Instrukce i operandy jsou ve stejné paměti**== (jeden adresový prostor) - ==**Struktura počítače je nezávislá na typu úlohy**== → ==**univerzálnost**== - ==**Paměť = buňky stejné velikosti**==, očíslované → ==**adresy**== - ==**Program = posloupnost instrukcí**==, vykonávaných **sekvenčně** v pořadí, jak jsou v paměti - ==**Dvojková soustava**== pro reprezentaci instrukcí i čísel - Při změně dat se program **nemění** > [!tip] Pozor na pojmy z prezentace > - ==**Procesor = řadič + ALU**== > - ==**CPU = procesor + operační paměť**== (Central Processing Unit) ### 5 hlavních modulů (blokové schéma) 1. ==**Operační paměť**== — uchovává program a data 2. ==**ALU**== (aritmeticko-logická jednotka) — výpočty 3. ==**Řadič**== (Control Unit) — řízení 4. ==**Vstupní zařízení**== — klávesnice, myš, scanner 5. ==**Výstupní zařízení**== — monitor, tiskárna, reproduktory Vše propojeno ==**sběrnicemi**==. --- ## b) Princip a funkce jednotlivých částí ### Procesor (CPU) ==**„Mozek" počítače**== — vykonává instrukce. #### ALU (Arithmetic Logic Unit) ==**Aritmeticko-logická jednotka**== — provádí všechny aritmetické a logické operace. Obsahuje: - ==**sčítačky, násobičky**== — aritmetické výpočty (+, −, ×, /) - ==**komparátory**== — porovnávání (>, <, =) - ==**logické operace**== (AND, OR, NOT, XOR) - ==**bitové posuny**== #### Řadič (Control Unit, CU) ==**Řídící jednotka**== — řídí činnost **všech částí počítače**: - ==**řídicí signály**== posílá jednotlivým modulům - moduly mu posílají zpět ==**stavová hlášení**== (reakce na signály) - ==**dekóduje instrukci**== z paměti - ==**řídí instrukční cyklus**== (Fetch → Decode → Execute) #### Registry ==**Velmi malá, velmi rychlá paměť v CPU**==. Příklady: - ==**PC**== (Program Counter) — ==**adresa další instrukce**== - ==**IR**== (Instruction Register) — aktuálně vykonávaná instrukce - ==**ACC**== (Accumulator) — pro mezivýsledky aritmetiky - ==**Flag registr**== — příznaky (carry, zero, sign…) - ==**Obecné registry**== (R0, R1...) — pro proměnné ### Operační paměť (RAM) ==**Hlavní paměť počítače**==. Obsahuje: - ==**spuštěný program**== (instrukce) - ==**data programu**== (proměnné, mezivýsledky) - ==**operační systém**== ==**Vlastnosti RAM**==: rychlá, ==**volatilní**== (po vypnutí se obsah **navždy ztratí**), ==**náhodný přístup**== (Random Access). Slouží jen ke **krátkodobému uložení** — narozdíl od HDD/SSD, které informace udrží i bez napájení. ### Sběrnice (bus) ==**Vodiče propojující všechny části**==. Viz [[04 - Sbernice a komunikace periferii\|otázka 4]]: - ==**datová**== — přenáší data - ==**adresová**== — přenáší adresy - ==**řídicí**== — přenáší řídicí signály ### Vstup/výstup (I/O) Komunikace s ==**periferiemi**== (klávesnice, myš, disk, monitor...). Přes ==**IRQ, DMA, I/O porty**==. ### Instrukční cyklus (Fetch-Decode-Execute) ==**Základní opakující se cyklus CPU**==: 1. ==**Fetch**== — ==**načti instrukci z paměti**== (adresa z PC) 2. ==**Decode**== — ==**dekóduj**==, co instrukce znamená 3. ==**Execute**== — ==**proveď**== (ALU, paměť, registry) 4. ==**Writeback**== — uložit výsledek 5. ==**Increment PC**== — posunout na další instrukci 6. ==**Opakování**== ### Princip činnosti počítače (podle von Neumanna) 1. Přes ==**vstupní zařízení**== se přes ALU **umístí do paměti program** 2. Stejným způsobem se do paměti umístí ==**data ke zpracování**== 3. ==**ALU provádí výpočet**==, řízena řadičem; mezivýsledky se ukládají do paměti 4. Po skončení se výsledky pošlou přes ALU na ==**výstupní zařízení**== --- ## c) Non von Neumann architektury ### Harvardská architektura Navrhl ==**Howard Aiken**== ve **30. letech** na **Harvardské univerzitě**. Tehdejší technologie ji neumožnila realizovat → převzala se von Neumannova. Asi po **40 letech** (s pokrokem integrovaných obvodů) byla realizována — první **signálový procesor s harvardskou architekturou** v 80. letech. ==**Hlavní rozdíl: oddělená paměť pro program a data**==. Pro programovou paměť lze použít např. ==**ROM**== (Read Only Memory). Oproti von Neumannovi umožňuje ==**zdvojnásobení paměti**==. | | Von Neumann | ==**Harvardská**== | |---|---|---| | Paměť | **jedna společná** | **dvě oddělené** (program + data) | | Sběrnice | jedna | **dvě** (program + data) | | Rychlost | sériová (bottleneck) | **paralelní přístup** | | Instrukce jako data? | **ano** (lze měnit za běhu) | **ne** | | Použití | desktop, server | ==**mikrokontroléry, DSP, embedded**== | ### Modifikovaná Harvardská (dnešní CPU) Moderní CPU ==**kombinují oba přístupy**==: - ==**Cache L1 je oddělená**== na **L1i (instructions)** a **L1d (data)** → Harvardský princip - ==**Hlavní RAM je společná**== → von Neumannův princip ### Další non-Von Neumann architektury - ==**Neuronové počítače**== — založené na **učení neuronových sítí** - ==**Paralelní systémy**== — ==**multiprocesorové systémy**== - ==**Kvantové počítače**== — qubity místo bitů ### Bottleneck (úzké hrdlo) von Neumannovy architektury > [!warning] „Von Neumann bottleneck" > ==**Jedna sběrnice mezi CPU a RAM = úzké hrdlo**==. CPU často čeká na data z paměti. Řešení: > - ==**Cache hierarchy**== (L1/L2/L3) > - ==**Prefetching**== > - ==**Pipelining**== > - ==**Modifikovaná Harvardská**== (oddělené L1) --- ## Shrnutí > [!summary] Co si pamatovat > **a) Von Neumann (1945):** ==**5 modulů — paměť (společná pro program i data), ALU, řadič, vstup, výstup**==, propojené **sběrnicemi**. Sekvenční zpracování, univerzálnost, dvojková soustava, paměťové buňky s adresami. > **b) Části:** ==**Procesor = řadič + ALU**==, CPU = procesor + RAM. **ALU** (sčítačky, násobičky, komparátory). **Řadič** (řídicí signály ↔ stavová hlášení). **Registry** (PC, IR, ACC, Flag). **RAM** (volatilní). ==**Instrukční cyklus: Fetch → Decode → Execute → Writeback**==. > **c) Non-Neumann:** ==**Harvardská**== (Howard Aiken, 30. léta) = **oddělená paměť** pro program a data → zdvojnásobení paměti, ROM pro program (embedded, DSP). Dále: **neuronové počítače, paralelní systémy, kvantové**. **Moderní CPU** = ==**modifikovaná Harvardská**== (L1i + L1d, ale společná RAM).