# 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.