Zkratka proCentral Processing UnitTaképrocesor, mikroprocesor, processorZákladní

Definice

CPU je hlavní výpočetní část počítače, která načítá a vykonává instrukce programů, řídí tok dat mezi pamětí a periferiemi a provádí aritmetické i logické operace. V praxi rozhoduje o tom, jak rychle běží sekvenční kód, kolik úloh lze obsluhovat paralelně a kde vzniká výpočetní úzké hrdlo.

Kategorie: Počítačová architekturaAktualizováno

Co CPU dělá v počítači

CPU vykonává program jako sled strojových instrukcí. Typický cyklus začíná načtením instrukce z paměti, pokračuje jejím dekódováním a končí provedením operace, například součtem, porovnáním, skokem v programu nebo přesunem dat. Výsledky se ukládají do registrů, cache nebo operační paměti.

Procesor není sám celý počítač. CPU spolupracuje s RAM, úložištěm, grafickým čipem, síťovou kartou a operačním systémem. Operační systém rozhoduje, které procesy a vlákna dostanou čas na jádře, a při přepínání ukládá jejich stav. Vývojář proto často neřeší jen rychlost procesoru, ale i plánování vláken, čekání na I/O a přístup do paměti.

Jádra, vlákna a takt

Jádro je samostatná výpočetní část CPU schopná provádět instrukce. Vícejádrový procesor zvládne současně obsluhovat více běžících úloh, pokud program nebo operační systém dokáže práci rozdělit. Hardwarové vlákno, často označované jako SMT nebo Hyper-Threading, umožňuje jednomu fyzickému jádru lépe využít neobsazené jednotky, ale nenahradí plnohodnotné druhé jádro.

Takt popisuje tempo interních kroků procesoru, ale samotná frekvence není univerzální měřítko výkonu. Důležitá je také architektura, počet instrukcí dokončených za cyklus, velikost cache, propustnost paměti, spotřeba, chlazení a typ zátěže. Dva procesory se stejným taktem se mohou v reálné aplikaci chovat výrazně odlišně.

Proč vytížení CPU skáče

Vytížení CPU ukazuje, kolik času procesor strávil prací místo nečinnosti. Hodnota 100 % na jednom jádře může znamenat jedinou nekonečnou smyčku, špatně paralelizovaný výpočet nebo běžný batch job. Na serveru s více jádry je potřeba číst metriky opatrně: 100 % jednoho procesu nemusí znamenat plné vytížení celého stroje.

Kolísání vytížení často způsobují dávky požadavků, garbage collector, komprese, šifrování, serializace JSON, kompilace, indexování nebo zpracování obrázků. Nízké CPU zároveň neznamená rychlou aplikaci. Program může čekat na databázi, disk, síť nebo zámek, a procesor přitom vypadá téměř nevyužitý.

CPU a limity výkonu aplikací

CPU-bound aplikace tráví většinu času výpočtem. Typickým příkladem je renderování, komprese, kryptografie, simulace, parsování velkých souborů nebo inference menšího modelu bez GPU. V takové situaci pomáhá efektivnější algoritmus, lepší datové struktury, vektorové instrukce, paralelizace nebo přesun části práce na specializovaný hardware.

I/O-bound aplikace naopak čeká hlavně na externí zdroje. Přidání silnějšího procesoru pak nemusí pomoci, protože úzké hrdlo leží jinde. Praktická diagnostika proto kombinuje profilování kódu, metriky operačního systému, měření latence a znalost toho, zda program opravdu počítá, nebo jen čeká.

Příklady z praxe

  1. Skript vytíží jedno jádro

    Vývojář spustí jednoduchý výpočetní skript a ve správci úloh vidí vysoké využití jednoho jádra. Program téměř nečeká na disk ani síť, takže běh omezuje hlavně CPU. Zrychlení nepřinese rychlejší databáze, ale lepší algoritmus, kompilovaná knihovna nebo rozdělení práce mezi více procesů.

    python3 - <<'PY'
    import time
    
    start = time.perf_counter()
    total = 0
    for n in range(50_000_000):
        total += n * n
    print(total, round(time.perf_counter() - start, 2), 's')
    PY
  2. API pálí CPU na serializaci

    Backend po nasazení začne mít špičky CPU při každé dávce požadavků na export dat. Profilování ukáže, že nejvíce času zabírá opakovaná serializace velkých objektů do JSON a komprese odpovědi. Po zavedení cache pro hotové exporty klesne spotřeba procesoru i latence požadavků.

Časté omyly

MýtusČím víc GHz, tím rychlejší CPU.
Ve skutečnostiTakt je jen jedna část výkonu. Reálnou rychlost ovlivňuje architektura, počet jader, cache, paměť, typ instrukcí i to, zda program umí paralelizovat práci.
MýtusKdyž je CPU na 100 %, počítač je špatně nastavený.
Ve skutečnostiPlné využití CPU může být u výpočtu, renderu, buildu nebo komprese úplně normální. Problém vzniká až tehdy, když vysoké vytížení zhoršuje odezvu, spotřebu nebo stabilitu služby.
MýtusVíce jader automaticky zrychlí každý program.
Ve skutečnostiVíce jader zrychlí jen práci, kterou lze rozdělit. Jednovláknový úsek programu zůstává omezen výkonem jednoho jádra a často také pamětí nebo zámky.

Časté dotazy

Co znamená CPU-bound aplikace?
CPU-bound aplikace je program, jehož rychlost omezuje hlavně výpočet na procesoru. Typické projevy jsou vysoké využití jader, malý objem čekání na síť nebo disk a zrychlení po optimalizaci algoritmu. U webové služby může jít například o kompresi, šifrování, generování PDF, parsování velkých dokumentů nebo náročnou validaci dat.
Kdy CPU využije více jader naplno?
Více jader pomůže CPU zátěži tehdy, když lze práci bezpečně rozdělit na nezávislé části. Webový server může obsloužit více požadavků najednou, build systém může kompilovat více souborů a datová úloha může zpracovat více bloků paralelně. Sekvenční algoritmus, kritická sekce se zámkem nebo jediný hlavní thread ale zůstane omezen jedním jádrem.
Proč rychlejší takt CPU nezaručí rychlejší program?
Vyšší takt CPU nezaručí rychlejší program, protože výkon závisí i na architektuře, cache, paměťové propustnosti a chování konkrétního kódu. Program čekající na RAM, disk nebo síť se nemusí zrychlit vůbec. Moderní procesory navíc mění frekvenci podle teploty, spotřeby a počtu aktivních jader.
Co dělat, když má server dlouhodobě vysoké CPU?
Vysoké CPU na serveru znamená, že procesor tráví hodně času prací, ale příčina může být různá. Backend může počítat, komprimovat, šifrovat, serializovat data, běžet v nekonečné smyčce nebo trpět příliš častým garbage collectorem. Správná reakce začíná profilováním procesu, ne automatickým přidáním silnějšího serveru.

Zdroje

  1. Central processing unit(otevře se v novém okně)Wikimedia Foundation
  2. Instruction cycle(otevře se v novém okně)Wikimedia Foundation
  3. Multi-core processor(otevře se v novém okně)Wikimedia Foundation
  4. CPU cache(otevře se v novém okně)Wikimedia Foundation
  5. The Linux Kernel documentation(otevře se v novém okně)The Linux kernel development community

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.