# 03 — Procesory
> [!abstract] O tématu
> ==**Procesor (CPU — Central Processing Unit)**== je „mozek" počítače — ==**křemíkový čip**==, který řídí všechno dění v počítači. Skládá se z mikroskopických ==**tranzistorů**==, jejichž **spínáním** provádí výpočty. **Rychlost spínání** udává ==**frekvenci procesoru (Hz)**==. Vykonává **instrukce** programu, provádí **aritmetické a logické operace** a řídí komunikaci s pamětí a periferiemi.
> [!info] Maturitní otázka
> **a)** Rozdělení, výrobci a použití
> **b)** Základní parametry
> **c)** Instalace na základní desku
> **d)** Zvyšování výkonu
> **e)** Architektury procesorů
---
## a) Rozdělení, výrobci a použití
### Rozdělení podle použití
| Kategorie | Příklad | Charakteristika |
|---|---|---|
| ==**Desktopové**== | Intel Core, AMD Ryzen | vysoký výkon, vyšší spotřeba |
| ==**Serverové**== | Intel Xeon, AMD EPYC | hodně jader, ECC RAM, 24/7 provoz |
| ==**Notebookové**== | Intel Core U/H, AMD Ryzen Mobile | nižší TDP, úsporné |
| ==**Mobilní**== | Apple A/M, Qualcomm Snapdragon | ARM, nízká spotřeba, smartphone/tablet |
| ==**Embedded**== | ARM Cortex-M, RISC-V | mikrokontroléry, IoT, auta |
### Hlavní výrobci
| Výrobce | Architektura | Použití |
|---|---|---|
| ==**Intel**== | x86-64 (CISC) | desktop, server, notebook |
| ==**AMD**== | x86-64 (CISC) | desktop, server, notebook |
| ==**ARM**== | ARM (RISC) | mobil, embedded, **Apple Silicon** (M1/M2/M3/M4) |
| **Qualcomm** | ARM (RISC) | smartphony (Snapdragon) |
| **RISC-V** (otevřená architektura) | RISC | embedded, výzkum |
---
## b) Základní parametry
- ==**Taktovací frekvence**== (GHz) — kolikrát za sekundu CPU vykoná takt. **Vyšší = rychlejší** (v rámci stejné architektury).
- ==**Počet jader (cores)**== — kolik **fyzických** výpočetních jednotek. Více jader = více úloh paralelně.
- ==**Počet vláken (threads)**== — kolik **logických** vláken zvládne najednou. S ==**SMT / Hyper-Threading**== = 2 vlákna na jádro.
- ==**Sada instrukcí**== — ==**CISC vs RISC**== (viz [[#e) Architektury procesorů|sekce e]]).
- ==**Šířka datové sběrnice**== (b) — kolik bitů dat CPU přenese najednou (32 b, 64 b).
- ==**Šířka adresové sběrnice**== (b) — určuje **maximální velikost adresovatelné paměti** (32 b → 4 GB, 64 b → mnohem víc).
- ==**Cache**== — rychlá vyrovnávací paměť v CPU (L1, L2, L3). Větší cache = méně přístupů do RAM.
- ==**Registry**== — nejrychlejší paměť přímo v CPU (velikost a počet podle architektury).
- ==**TDP**== (Thermal Design Power, W) — ==**tepelný výkon, který musí odvést chlazení**==. **Není to spotřeba**, ale vodítko pro chladič.
- ==**Výrobní proces**== (nm — např. 7 nm, 5 nm, 3 nm) — velikost tranzistorů. ==**Menší proces = víc tranzistorů a nižší spotřeba**==.
- ==**Napájecí napětí**== (V) — nižší napětí = nižší spotřeba a méně tepla.
- ==**Socket (patice)**== — fyzický konektor pro připojení k desce (viz [[01 - Zakladni deska|01 — Základní deska]]).
- ==**IPC**== (Instructions Per Cycle) — kolik instrukcí CPU vykoná za jeden takt. Závisí na architektuře.
> [!info] Výkon ≠ jen frekvence
> ==**Frekvence sama o sobě nestačí**==. Záleží i na IPC, počtu jader, cache a architektuře. Moderní 3 GHz CPU je často rychlejší než starší 4 GHz CPU.
### Vnitřní stavba CPU
- ==**ALU**== (Arithmetic-Logic Unit) — ==**aritmeticko-logická jednotka**==, provádí matematické a logické operace, bitové posuvy.
- ==**FPU**== (Floating-Point Unit) — ==**numerický koprocesor**==, operace s čísly s plovoucí desetinnou čárkou.
- ==**Řadič**== (Control Unit) — společně s ALU tvoří **základní řídicí jednotku**, řídí všechny procesy v CPU.
- ==**Registry**== — nejrychlejší paměť uvnitř CPU pro mezivýsledky.
- ==**Cache**== — vyrovnávací paměť (L1/L2/L3).
---
## c) Instalace na základní desku
### Před instalací
- ==**Zkontrolovat kompatibilitu**==: socket CPU musí odpovídat socketu desky (viz [[01 - Zakladni deska|01 — Základní deska]])
- Zkontrolovat **podporu CPU v BIOSu** — u nových generací může být potřeba **update BIOSu** (často `BIOS Flashback` bez CPU)
### Postup
1. ==**Vypnout PC a odpojit napájení**==.
2. ==**Otevřít patici**== (zvednout páčku u LGA, povolit šroub u některých socketů).
3. ==**Vložit CPU**== — pozor na **orientaci** (značka šipky nebo zářez musí být zarovnaná s páticí).
4. ==**Zavřít patici**== — CPU musí sedět rovně, žádný odpor.
5. ==**Nanést teplovodivou pastu**== — kapka velikosti hrachu uprostřed.
6. ==**Připevnit chladič**== — našroubovat křížově (rovnoměrný tlak).
7. ==**Připojit napájení chladiče**== do **CPU FAN** headeru.
> [!warning] Pozor
> - **LGA**: piny jsou na desce — ohnutý pin = znehodnocená deska
> - **PGA**: piny jsou na CPU — ohnutý pin = znehodnocené CPU
> - **Nikdy** nepoužívat nadměrnou sílu — CPU musí sednout volně
---
## d) Zvyšování výkonu
### Architektonické postupy (uvnitř CPU)
- ==**Pipelining**== — ==**rozdělení instrukce na fáze**== a paralelní zpracování. Zvyšuje **propustnost**, ne latenci (viz [[#e) Architektury procesorů|sekce e]]).
- ==**Branch prediction**== (predikce skoků) — CPU se snaží **uhodnout výsledek podmíněného skoku**, aby pipeline neztrácela čas.
- ==**Out-of-order execution**== — CPU ==**vykonává nezávislé instrukce mimo původní pořadí**==, lépe využívá zdroje.
- ==**SMT / Hyper-Threading**== — ==**dvě vlákna na jedno fyzické jádro**==. Lépe využívá zdroje, když jedno vlákno čeká (např. na paměť).
- ==**ILP**== (Instruction-Level Parallelism) — paralelní vykonávání **nezávislých instrukcí** v jednom taktu.
- ==**Větší cache**== a víc úrovní (L1/L2/L3) — méně přístupů do pomalé RAM.
- ==**Skalární zpracování**== — zdvojení funkčních celků (např. dvě ALU) → více instrukcí za takt.
### Hardwarové postupy
- ==**Více jader**== — paralelní zpracování více úloh.
- ==**Vyšší frekvence**== (==**přetaktování / overclocking**==) — riziko poškození komponentu (přehřátí). Software: **CPU-Z**, **SpeedFan** (monitoring), **MemTest** (testování stability).
- ==**Menší výrobní proces**== (3 nm, 5 nm) — víc tranzistorů, nižší spotřeba.
- ==**Lepší chlazení**== — umožní vyšší frekvence (vzduch → AIO vodní → custom loop).
> [!quote] Pipeline stall („bublinky")
> Pipeline se může „zaseknout" (stall) a vznikají ==**prázdná místa („bublinky")**== → snížení výkonu. Hlavní příčiny:
> - ==**Datová závislost**== — instrukce čeká na výsledek předchozí.
> - ==**Adresová závislost**== — instrukce nezná adresu, odkud má číst data.
> - ==**Podmíněný skok**== — neví se, která instrukce bude následovat.
>
> Branch prediction a out-of-order execution to mírní. **Delší pipeline = víc závislostí a víc bublinek** — proto se počet stupňů u moderních CPU spíš zase snižoval.
---
## e) Architektury procesorů
### Sekvenční vs skalární zpracování
| | ==**Sekvenční**== | ==**Skalární**== |
|---|---|---|
| Princip | instrukce **jedna po druhé** (další začne až po skončení předchozí) | **více instrukcí najednou** v různých sekcích |
| Efektivita | velmi malá | vysoká — průměr ≈ **1 takt / instrukci** |
| Použití | starší typy ==**do Intel 486**== | Pentium a novější |
| Zrychlující prvek | — | ==**pipelining**==, zdvojení funkčních celků |
### Pipelining — klasická 5-stupňová pipeline
==**Instrukce je rozdělena do 5 fází**==, každá v jiném hodinovém cyklu. Během každého taktu se začne nová instrukce a jedna se dokončí:
1. ==**Fetch**== — výběr (načtení) instrukce
2. ==**Decode**== — dekódování instrukce
3. ==**Výběr operandů**== — načtení dat z registrů
4. ==**Execute**== — vykonání operace
5. ==**Writeback**== — zápis výsledku
> [!info] Delší pipeline = lepší?
> Pozdější procesory měly až ==**20-stupňovou pipeline**==, ale to ne vždy pomohlo — víc datových a adresových závislostí znamená víc „bublinek", takže se počet stupňů později **opět snižoval**.
### CISC vs RISC — klíčové rozlišení
| | ==**CISC**== | ==**RISC**== |
|---|---|---|
| Plný název | Complex Instruction Set Computer | Reduced Instruction Set Computer |
| Instrukční repertoár | **rozsáhlý** | **minimální** |
| Formát instrukcí | **proměnlivý (1–3 B)** | **pevný** (většinou stejná délka) |
| Adresování | více způsobů, komplikované | jednoduché |
| Délka instrukce | proměnná, **více taktů** | typicky ==**1 takt**== |
| Práce s pamětí | více instrukcí | **pouze `load` / `save`** |
| Registry | **málo** pomocných | ==**hodně pomocných registrů**== |
| Řadič | **mikroprogramový** | **obvodový** |
| Programy | jednoduché, krátké | složité, dlouhé |
| Spotřeba | vyšší | **nižší** |
| Použití | desktop, server (==**x86-64**==) | mobil, embedded (==**ARM**==, ==**RISC-V**==) |
> [!info] Proč vznikl RISC?
> Výzkum konce 70. let zjistil, že v ==**50 % případů se používají jen 3 instrukce a v 75 % jen 8 instrukcí**== — zbytek se používá v promile. To vedlo k myšlence redukovaného repertoáru. Intel rozšiřoval instrukce **až do i486**, pak už šlo o kombinaci obou.
> [!info] Modernost
> Dnes je rozdíl menší — moderní CISC procesory (x86-64) ==**interně dekódují komplexní instrukce na jednoduché μops (mikrooperace)**==, takže fungují podobně jako RISC uvnitř.
### Hlavní architektury dnes
- ==**x86-64**== — Intel a AMD desktop/server CPU. Historický standard PC. CISC.
- ==**ARM**== — mobil, tablet, Apple Silicon, moderní notebooky (např. ARM Windows). RISC. Velmi úsporná.
- ==**RISC-V**== — ==**otevřená a modulární architektura**==. Embedded systémy, výzkum, IoT.
- **Historičtí představitelé RISC:** Alpha (Digital), PA-RISC (HP), PowerPC (IBM + Motorola), MIPS (SGI), SPARC (Sun).
### Architekturní techniky
- ==**Cache hierarchy**==:
- **L1** — nejmenší, nejrychlejší, na jádro
- **L2** — větší, pomalejší, často na jádro
- **L3** — největší, ==**sdílená mezi jádry**==
- ==**big.LITTLE**== (asymetrická multi-core architektura) — ==**kombinace výkonných a úsporných jader**==. Operační systém dle zátěže přidělí úlohu vhodnému jádru. Používá **ARM** a moderní Intel (P-cores + E-cores).
### Von Neumann vs Harvardská architektura
Pro celkový pohled — detail v [[20 - Architektura pocitace|otázce 20]]:
- ==**Von Neumann**== — **společná paměť** pro program i data. Standard PC.
- ==**Harvardská**== — **oddělená paměť** pro program a data. Embedded, mikrokontroléry.
---
## Shrnutí
> [!summary] Co si pamatovat
> **a) Rozdělení/výrobci:** Desktop/server/mobile/embedded. ==**Intel & AMD (x86-64)**==, ==**ARM (mobil, Apple Silicon)**==, ==**RISC-V (embedded)**==.
>
> **b) Parametry:** ==frekvence (GHz)==, ==jádra==, ==vlákna (SMT)==, sada instrukcí, ==šířka datové/adresové sběrnice==, ==cache (L1/L2/L3)==, registry, ==TDP==, ==výrobní proces (nm)==, napájení, socket, IPC. **Vnitřní stavba:** ==ALU + FPU + řadič + registry + cache==.
>
> **c) Instalace:** kontrola socketu + BIOSu → otevřít patici → vložit CPU (orientace!) → zavřít → ==**teplovodivá pasta (hrách)**== → chladič → CPU FAN. ==**LGA: piny v desce, PGA: piny na CPU**==.
>
> **d) Zvyšování výkonu:** ==pipelining==, ==branch prediction==, ==out-of-order==, ==SMT==, ==ILP==, větší cache, víc jader, vyšší frekvence (overclocking), menší proces, lepší chlazení. ==**Bublinky v pipeline**== = datové/adresové závislosti + skoky.
>
> **e) Architektury:** ==**Sekvenční (do 486) vs skalární (pipelining)**==. 5-stupňová pipeline: ==Fetch → Decode → výběr operandů → Execute → Writeback==. ==**CISC (x86-64) vs RISC (ARM, RISC-V)**==: CISC = složité instr. + mikroprogramový řadič; RISC = jednoduché + 1 takt + load/save + obvodový řadič + hodně registrů. ==**big.LITTLE**== = výkonná + úsporná jádra. Moderní CISC interně používá ==**μops**== jako RISC.