Architektura počítačů
Architektura počítače definuje logickou strukturu a chování počítačového systému – jaké funkční bloky obsahuje, jak jsou propojeny, jak zpracovávají instrukce a jak komunikují s pamětí. Jde o konceptuální model, nikoliv o fyzickou implementaci – dvě různé realizace stejné architektury mohou používat odlišné technologie, ale programátorovi se jeví stejně.
Základní architektury počítačů
Von Neumannova architektura
Von Neumannova architektura (1945) je dnes nejrozšířenější model – počítač je řízen programem uloženým v paměti. Program i data sídlí ve stejné paměti a jsou přenášeny po společné sběrnici. To umožňuje flexibilitu – změnou programu v paměti změníme chování stroje bez fyzického zásahu do hardware.
Funkční bloky Von Neumannovy architektury
- Paměť – uchovává program, zpracovávaná data a mezivýsledky. Společná pro instrukce i data.
- Řadič (Control Unit) – řídí činnost počítače, načítá instrukce z paměti, dekóduje je a vydává řídicí signály ostatním blokům.
- ALU (Aritmeticko-logická jednotka) – provádí aritmetické a logické operace nad daty.
- Vstupní jednotka – zprostředkovává vstup programu a dat z vnějšího světa.
- Výstupní jednotka – předává výsledky zpracování vnějšímu světu.
Von Neumannovo úzké hrdlo
Protože instrukce i data sdílejí stejnou sběrnici a paměť, nemohou být přenášeny současně. Procesor musí při načítání instrukce čekat, i když by zároveň mohl číst data. Toto omezení se nazývá Von Neumann bottleneck a je hlavním důvodem, proč výkon procesorů roste pomaleji, než by umožňovala samotná rychlost výpočetních jednotek.
Harvardská architektura
Harvardská architektura odděluje paměť programu od paměti dat – každá má vlastní sběrnici. Instrukce a data lze přenášet současně, což zvyšuje propustnost. Oddělení také chrání program před nechtěným přepsáním chybou programátora.
Porovnání s Von Neumannem
| Vlastnost | Von Neumann | Harvard |
|---|---|---|
| Paměť programu a dat | Společná | Oddělená |
| Sběrnice | Jedna společná | Dvě nezávislé |
| Rychlost | Pomalejší (úzké hrdlo) | Rychlejší (paralelní přenos) |
| Flexibilita | Vysoká – program lze měnit za běhu | Nižší – oddělené paměti komplikují self-modifying code |
| Typické použití | Univerzální počítače, PC, servery | Mikrořadiče, DSP, vestavěné systémy |
Modifikovaná Harvardská architektura
Moderní procesory používají hybridní přístup – Modifikovanou Harvardskou architekturu: navenek se tváří jako Von Neumann (společný adresní prostor), ale uvnitř mají oddělené cache pro instrukce (L1-I) a data (L1-D). Tím získávají výhody obou přístupů – rychlost Harvardu s flexibilitou Von Neumanna.
Mikroprocesory
Mikroprocesor je integrovaný obvod obsahující centrální procesorovou jednotku (CPU) na jednom čipu. Je to „mozek" univerzálního počítače – vykonává instrukce programů uložených v paměti.
Vykonávání instrukcí
Každá instrukce prochází sekvencí kroků nazývanou instrukční cyklus:
- Instruction Fetch – načtení instrukce z paměti na adrese dané programovým čítačem (PC).
- Decode – dekódování instrukce – co se má provést a s jakými operandy.
- Read operands – načtení operandů z registrů nebo paměti.
- Execute – provedení operace v ALU.
- Writeback – uložení výsledku zpět do registru nebo paměti.
Moderní procesory tyto kroky zřetězují (pipelining) – zatímco jedna instrukce se vykonává, další se dekóduje a ještě další načítá. Tím se zvyšuje propustnost, i když jedna instrukce stále trvá několik cyklů.
Funkční bloky mikroprocesoru
| Blok | Funkce |
|---|---|
| ALU | Provádí aritmetické (sčítání, násobení) a logické (AND, OR, XOR) operace. |
| Řadič | Řídí tok instrukcí – načítá, dekóduje a generuje řídicí signály. |
| Registry | Rychlá paměť uvnitř procesoru – pracovní registry, akumulátor, programový čítač (PC), instrukční registr (IR). |
| Dekodér instrukcí | Převádí binární kód instrukce na signály pro ostatní bloky. |
| Sběrnice | Adresní, datová a řídicí sběrnice pro komunikaci s pamětí a periferiemi. |
| Cache | Rychlá vyrovnávací paměť mezi procesorem a hlavní pamětí – L1, L2, L3. |
Režimy procesoru
Procesor rozlišuje minimálně dva režimy, které chrání kritické části systému:
- Kernel mode (privilegovaný/nechráněný): Plný přístup k celé paměti, všem instrukcím a hardwarovým prostředkům. Běží v něm jádro OS a obsluha přerušení.
- User mode (chráněný): Omezená instrukční sada, omezený přístup k paměti (jen vlastní adresní prostor), chráněné důležité registry. Běží v něm běžné aplikace.
Přechod z user do kernel mode nastává výhradně přes systémová volání, výjimky (dělení nulou, neplatná adresa) nebo přerušení od hardwaru.
Architektury signálových procesorů (DSP)
DSP (Digital Signal Processor) je specializovaný mikroprocesor optimalizovaný pro zpracování signálů v reálném čase – audio, video, radar, telekomunikace, analýza vibrací. Na rozdíl od univerzálního CPU je navržen pro opakované výpočty typu násobení a akumulace (MAC – Multiply-Accumulate) nad proudem dat.
Klíčové rysy DSP architektury
- Harvardská architektura – oddělená paměť programu a dat umožňuje současné načítání instrukce a dvou operandů.
- Single-cycle MAC – jednotka, která za jeden hodinový cyklus provede \(a = b \cdot c + d\) – základní operace digitálních filtrů, FFT, korelací.
- Hardwarové smyčky – speciální instrukce pro opakování bloku kódu bez režie větvení (tzv. zero-overhead loops).
- Adresovací jednotky – podpora kruhových bufferů (circular addressing) a bitově reverzního adresování pro FFT.
- Pevná desetinná čárka (fixed-point) – mnoho DSP čipů používá fixní aritmetiku místo plovoucí – je energeticky úspornější a levnější na výrobu.
Příklady DSP čipů
- Texas Instruments TMS320 – rodina DSP pro audio, průmysl a automotiv.
- Analog Devices SHARC / Blackfin – pro audio a video zpracování.
- Qualcomm Hexagon – DSP v Snapdragon SoC pro mobilní zpracování audia a obrazu.
Architektury grafických procesorů (GPU)
GPU (Graphics Processing Unit) je masivně paralelní procesor navržený pro simultánní zpracování tisíců vláken. Od CPU se zásadně liší poměrem mezi výpočetními jednotkami a řídicí logikou.
CPU vs. GPU – architektonické rozdíly
| Vlastnost | CPU | GPU |
|---|---|---|
| Počet jader | Jednotky až desítky (typicky 4–64) | Tisíce (např. RTX 4090 = 16 384) |
| Charakter jader | Pár výkonných, komplexních jader (out-of-order, spekulativní) | Mnoho jednoduchých, energeticky efektivních (in-order) |
| Řídicí logika | Velká – branch prediction, spekulativní vykonávání | Minimální – mnoho jader sdílí jeden řadič |
| Cache | Velká (MB L3 cache) | Malá – cache chování je jen doplněk |
| Paměť | DDR (nízká latence) | GDDR/HBM (vysoká propustnost, vyšší latence) |
| Paradigma | MIMD – každé jádro běží nezávisle | SIMT – skupina 32 vláken (warp) vykonává stejnou instrukci |
Architektura SIMT
GPU používá model SIMT (Single Instruction, Multiple Threads) – warp 32 vláken vykonává stejnou instrukci, každé vlákno nad jinými daty. To je hardwarová realizace modelu SIMD, ale s flexibilitou – pokud se vlákna ve warpu rozvětví (např. if/else), obě větve se provedou sekvenčně a neaktivní vlákna čekají (warp divergence).
Klíčové funkční bloky GPU
- Streaming Multiprocessor (SM) – základní výpočetní jednotka obsahující desítky CUDA jader, warp scheduler, registry a sdílenou paměť.
- CUDA Core / Shader Core – jednoduché jádro provádějící operace FP32/INT32.
- Tensor Core – specializovaná jednotka pro maticové násobení (AI, DLSS, ray tracing denoising).
- RT Core – hardwarová akcelerace průsečíků paprsku s geometrií (ray tracing).
- Texture Unit – hardwarová jednotka pro vzorkování a filtrování textur.
- VRAM (GDDR6X/HBM) – dedikovaná grafická paměť s extrémní propustností (až ~1 TB/s).
Architektury mikrořadičů
Mikrořadič (MCU – Microcontroller Unit) je jednočipový počítač integrující procesor, paměť i periferie na jednom čipu. Na rozdíl od mikroprocesoru, který potřebuje externí paměť a periferie, je mikrořadič soběstačný – stačí mu napájení a pár pasivních součástek.
Klíčové rysy mikrořadičů
- Harvardská (nebo modifikovaná Harvardská) architektura – oddělená paměť programu (Flash) a dat (SRAM).
- Integrované periferie – GPIO, ADC, UART, SPI, I²C, PWM, časovače, watchdog, vše na čipu.
- Nízká spotřeba – spánkové režimy (sleep, deep sleep), řádově μA až nA.
- Deterministické chování – žádný operační systém; kód běží přímo na hardware (bare metal), ideální pro řízení v reálném čase.
- Nízká cena – jednotky dolarů, často i méně.
Příklady mikrořadičových architektur
| Architektura | Příklad | Použití |
|---|---|---|
| ARM Cortex-M (M0–M7) | STM32, NXP Kinetis, nRF52 | Průmysl, IoT, zdravotnictví, drony, spotřební elektronika |
| AVR | ATmega328 (Arduino Uno), ATtiny | Hobby, prototypování, jednoduché automatizace |
| PIC | Microchip PIC16, PIC32 | Automotiv, levná průmyslová řízení |
| RISC-V (MCU implementace) | ESP32-C3, GD32V | Nová otevřená alternativa k ARM – nízkonákladové IoT |
| ESP32 (Xtensa LX6 / RISC-V) | ESP32, ESP32-S3 | IoT s WiFi a Bluetooth na čipu |
Porovnání mikrořadič vs. mikroprocesor vs. DSP
| Vlastnost | Mikrořadič (MCU) | Mikroprocesor (CPU) | DSP |
|---|---|---|---|
| Integrace | Vše na čipu (CPU + RAM + Flash + periferie) | Jen CPU jádro – externí RAM, chipset | CPU jádro + specializované jednotky |
| Operační systém | Bare metal / RTOS | Plnohodnotný OS (Linux, Windows) | Bare metal / RTOS / DSP/BIOS |
| Výkon | Desítky až stovky DMIPS | Desetitisíce DMIPS | Optimalizováno pro MAC/s |
| Spotřeba | mW až μW | Desítky wattů | Stovky mW až jednotky wattů |
| Cena | \(0.50–\)10 | \(50–\)5000 | \(5–\)100 |
| Typická úloha | Řízení motoru, senzor, IoT uzel | Desktop, server, notebook | Zpracování audia, filtrace, FFT |
Hodnocení výkonnosti počítačů
Výkon počítače nelze redukovat na jediné číslo – závisí na kombinaci mnoha faktorů. Používají se různé metriky pro různé účely:
| Metrika | Co měří | Použití |
|---|---|---|
| MIPS (Million Instructions Per Second) | Počet vykonaných instrukcí za sekundu. | Zavádějící – instrukce různých architektur nejsou srovnatelné (CISC vs. RISC). |
| FLOPS (Floating-point Operations Per Second) | Počet operací v plovoucí řádové čárce za sekundu. | Vědecké výpočty, simulace, AI. |
| Clock rate (frekvence) | Rychlost hodinového signálu v GHz. | Omezená vypovídací hodnota – IPC (Instructions Per Cycle) se liší. |
| Benchmarky (SPEC, Geekbench) | Standardizované testovací sady simulující reálné zátěže. | Objektivnější – měří celkovou propustnost na konkrétních úlohách. |
| Latence | Doba od zadání požadavku do jeho dokončení. | Realtime systémy, interaktivní aplikace. |
| Propustnost (Throughput) | Množství práce dokončené za jednotku času. | Servery, dávkové zpracování. |
| Efektivita (Performance/Watt) | Výkon na watt spotřeby. | Mobilní zařízení, datová centra, superpočítače. |
Amdahlův zákon
Amdahlův zákon (Gene Amdahl, 1967) určuje teoretické maximum zrychlení, kterého lze dosáhnout paralelizací části výpočtu. Jeho klíčovým sdělením je, že zrychlení je omezeno sériovou částí, kterou nelze paralelizovat.
kde:
- \(S\) = zrychlení (speedup) oproti sekvenčnímu provedení
- \(P\) = podíl programu, který lze paralelizovat (\(0 \le P \le 1\))
- \(N\) = počet procesorů (vláken)
- \((1 - P)\) = sériová část, kterou nelze paralelizovat
Příklad – Amdahlův zákon v praxi
Program běží 100 sekund, z toho 80 sekund lze paralelizovat (\(P = 0{,}8\)). Spustíme ho na 4 jádrech (\(N = 4\)):
Se 4 jádry získáme jen 2,5× zrychlení – nikoliv 4×! Sériových 20 % dominuje.
S nekonečným počtem jader (\(N \to \infty\)): $\(S_{\max} = \frac{1}{1 - P} = \frac{1}{0{,}2} = 5\times\)$ I s nekonečnem jader program nikdy nepoběží rychleji než 5× – to je Amdahlův strop.
Důsledky Amdahlova zákona
- Malá sériová část drasticky omezuje škálovatelnost. Pokud \(P = 0{,}99\) (99 % lze paralelizovat), \(S_{\max} = 100\times\) – stále omezeno.
- V distribuovaných systémech se přidává režie komunikace, která dále snižuje reálné zrychlení.
- Amdahlův zákon předpokládá pevnou velikost problému – při větším problému se může sériová část zmenšit (Gustafsonův zákon).
Výkonnostní rovnice procesoru
Výkon procesoru lze vyjádřit jako součin tří faktorů – to je základní rámec pro analýzu, kde hledat úzká hrdla:
| Symbol | Význam | Jednotka | Jak ji ovlivnit |
|---|---|---|---|
| IC (Instruction Count) | Počet instrukcí vykonaných programem. | Počet instrukcí | Lepší kompilátor, efektivnější algoritmus, redukce redundantního kódu. |
| CPI (Cycles Per Instruction) | Průměrný počet hodinových cyklů na jednu instrukci. | Cykly / instrukce | Pipelining, superskalarita, lepší branch prediction, cache. |
| Clock Cycle Time | Délka jednoho hodinového cyklu (\(1/f\)). | Sekundy (typicky ns) | Vyšší frekvence, lepší výrobní proces (nm), nižší napětí. |
Alternativní vyjádření přes frekvenci: \(\text{Execution Time} = \frac{\text{IC} \times \text{CPI}}{f}\)
Příklad výpočtu
Program obsahuje 1 000 000 instrukcí. Procesor má CPI = 1{,}5 a frekvenci 3 GHz.
Srovnání RISC a CISC
Dvě základní filozofie návrhu instrukčních sad – RISC a CISC – představují odlišné přístupy k tomu, co má umět procesor přímo v hardwaru a co se má řešit softwarem.
RISC – Reduced Instruction Set Computer
Filozofie: jednoduchý hardware, složitější kompilátor. Malá sada jednoduchých instrukcí, z nichž každá se vykoná za jeden cyklus. Složitější operace se skládají z těchto primitiv.
Klíčové vlastnosti RISC:
- Fixní délka instrukce (typicky 32 bitů) – jednoduché, rychlé dekódování.
- Load/Store architektura – pouze instrukce
LOADaSTOREpřistupují do paměti; všechny ostatní pracují jen s registry. - Velký počet univerzálních registrů (typicky 32) – méně přístupů do paměti.
- Single-cycle execution – většina instrukcí za 1 cyklus, ideální pro pipelining.
- Pevné formáty – málo adresovacích režimů, ortogonální instrukční sada.
CISC – Complex Instruction Set Computer
Filozofie: jedna instrukce = mnoho práce. Sada komplexních instrukcí, které přímo v hardwaru provádějí složité operace. Snižuje počet instrukcí programu (IC), ale za cenu vyššího CPI.
Klíčové vlastnosti CISC:
- Proměnlivá délka instrukce (1–15 bajtů) – hustší kód, složitější dekódování.
- Paměťové operandy – instrukce mohou přímo pracovat s pamětí (např.
ADD [adresa], R1). - Málo registrů (typicky 8) – více přístupů do paměti.
- Mikrokód – komplexní instrukce jsou interně rozloženy na sekvenci jednodušších mikro-operací.
- Mnoho adresovacích režimů a specializovaných instrukcí.
Souhrnné porovnání
| Vlastnost | RISC | CISC |
|---|---|---|
| Délka instrukce | Fixní (32 bit) | Proměnlivá (1–15 bajtů) |
| Počet instrukcí v programu (IC) | Vyšší | Nižší |
| CPI (cykly na instrukci) | Blízko 1 | Vyšší (mikrokód) |
| Počet registrů | 32+ | 8–16 |
| Přístup do paměti | Jen LOAD/STORE | Libovolná instrukce může |
| Dekódování | Jednoduché, rychlé | Složité, pomalé |
| Pipelining | Snadný | Obtížný (složité instrukce) |
| Hustota kódu | Nižší (fixní délka) | Vyšší (proměnlivá délka) |
| Spotřeba | Nižší (jednodušší HW) | Vyšší (složitější dekodér) |
| Příklady | ARM, RISC-V, MIPS, PowerPC | x86 (Intel, AMD) |
Konvergence RISC a CISC
V praxi se rozdíly stírají:
- Moderní x86 procesory (CISC) interně překládají CISC instrukce do RISC-like mikro-operací (μops) a vykonávají je na RISCovém jádře.
- Moderní ARM procesory (RISC) přidávají komplexnější instrukce (NEON SIMD, kryptografické akcelerace).
- Rozhodujícím faktorem dnes není samotná filozofie ISA, ale mikroarchitektura – pipelining, superskalarita, cache hierarchie, branch prediction.