Centrální procesorová jednotka
Centrální procesorová jednotka (zkratka CPU, anglicky central processing unit)[1] je v informatice označení základní elektronické součásti v počítači, která umí vykonávat strojové instrukce, ze kterých je tvořen počítačový program a obsluhovat jeho vstupy a výstupy. Historicky byl CPU složen z velmi mnoha elektronických součástek, avšak kolem roku 1970 byly všechny potřebné obvody sloučeny do jednoho integrovaného obvodu, který je označován jako mikroprocesor.
Následující článek se zabývá obecnou stavbou procesoru. Informace o současných procesorech najdete v článku mikroprocesor.
Charakteristika
Procesor, který by vykonával program zapsaný ve vyšším programovacím jazyku, by byl příliš složitý, a především omezený zaměřením daného jazyka. Proto jsou i moderní procesory stále založeny na zpracování strojového kódu, to jest nevelké sady strojových instrukcí, které více odpovídají způsobu práce procesoru (např. přesun čísla z registru do registru) než způsobu práce programátora. Každá architektura procesorů definuje svůj vlastní strojový jazyk. Například procesory x86 od firmy Intel používají jiný strojový kód než architektura ARM. Programy psané ve vyšších jazycích se obvykle překládají do strojového kódu dané architektury – ať už předem (pomoci tzv. překladače) nebo až za běhu programu (pomoci interpretu).
Centrální procesorová jednotka (CPU) provádí strojové instrukce. Mezi hlavní součásti procesoru patří aritmeticko-logická jednotka, registry a řadič, který řídí činnost procesoru (načítání strojových instrukcí z paměti, jejich dekódování, provedení a uložení výsledků). V současných počítačích je obvykle několik dalších procesorových jednotek, které s hlavní procesorovou jednotkou spolupracují (zajišťují například vstup/výstup, příjem GPS signálu, komunikaci s bezdrátovou sítí Wi-Fi atd.). Má-li obvod v sobě více procesorových jednotek, je označována jako vícejádrový procesor.
Ve stolních počítačích IBM PC kompatibilních se prosadily složité CISC procesory architektury x86. V přenosných počítačích naopak jednodušší RISC procesory architektury ARM, které jsou méně energeticky náročné. V malých zařízeních jako jsou kardiostimulátory nebo IoT jsou používány jednoduché procesory s vysokou integrací (system on a chip), případně jsou používány jednoúčelové procesory navržené pro konkrétní použití (např. digitální hodinky).
Historie
Procesory prvních počítačů se skládaly z obvodů obsahujících množství tzv. diskrétních součástek – elektronek, tranzistorů, rezistorů a kondenzátorů. Takový procesor mohl zabírat i několik skříní. V 60. letech 20. století se začaly používat hybridní i monolitické integrované obvody, kterých bylo pro vytvoření CPU potřeba několik desítek nebo stovek. V 70. letech 20. století miniaturizace a zvyšování integrace dosáhly stádia, kdy podstatnou část CPU bylo možné umístit do jediného integrovaného obvodu, který nazýváme mikroprocesor. První mikroprocesory měly nepatrný výkon v porovnání s CPU tehdejších počítačů, ale postupně se tento rozdíl snižoval, takže v současné době prakticky všechny počítače mají CPU tvořené mikroprocesory.
Tranzistorové procesory
Konstrukční složitost procesorů byla zvýšena různými technologiemi, usnadňující budování menších a spolehlivější elektronických zařízení. První takové zlepšení přišlo s příchodem tranzistoru. Tranzistorové procesory už v 50. a 60. letech nebyly stavěny z objemných, nespolehlivých, a křehkých spínacích prvků jako jsou elektronky a elektromagnetická relé. Pomocí tranzistorů byly stavěny komplexnější a spolehlivější procesory na jedné nebo několika deskách s plošnými spoji, které obsahovaly potřebné diskrétní součástky.
V roce 1964 představila firma IBM svou architekturu počítače System/360, který byl použit v sérii počítačů schopných běhu programů s různou rychlostí a výkonem. Význam spočíval v tom, že tehdy většina elektronických počítačů byla vzájemně nekompatibilních a to dokonce i počítače dodávané stejným výrobcem. Pro dosažení této výhody použila firma IBM mikroprogram (často nazývané „mikrokód“). Architektura IBM System/360 byla tak populární že ovládala trh střediskových počítačů po celá desetiletí a zanechala dědictví, které ještě pokračuje v podobných moderních počítačích jako IBM System z. V roce 1965 firma Digital Equipment Corporation (DEC) představila jiný vlivný počítač mířící na vědecký a výzkumný trh, kterým byl PDP-8.
Tranzistorové procesory měly několik výrazných výhod před jejich předchůdci – kromě zjednodušení, zvýšené spolehlivosti a nižší spotřeby energie dovolily tranzistory také použít pro procesor vyšší operační rychlost, což umožnila kratší přepínací doba tranzistoru (v porovnání s relé). Díky zvýšení spolehlivosti a zvýšené rychlosti spínacích prvků (které byly téměř výhradně tranzistory) byly v tomto období vyvinuty procesory s taktováním v desítkách megahertz.
Procesory s malou integrací
Na začátku vývoje obsahovaly integrované obvody méně tranzistorů na vymezeném prostoru (malá polovodičová destička uvnitř integrovaného obvodu – die), a proto byly vyráběny jen základní nespecializované obvody, jako například NOR hradla. Procesory založené na těchto jednoduchých „stavebních kamenech“ jsou obecně označovány jako zařízení „Integrace v malém měřítku“ (SSI, Small-scale integration). Konstrukce procesoru pomocí SSI obvodů vyžadovalo tisíce samostatných čipů, ale přesto takové řešení ve výsledku zabralo mnohem méně prostoru, mělo nižší příkon a vyšší spolehlivost, než dřívější návrhy s jednotlivými tranzistory.
Počítač IBM System/370 vycházející z IBM Systemu/360 používal více SSI obvodů, než diskrétních součástek (tranzistorů). Počítač DEC PDP-8/I a KI10 PDP-10 také přešly z konstrukce pomocí jednotlivých tranzistorů (použitých v PDP-8 a PDP-10) k integrovaným obvodům typu SSI. Jeho velmi populární série PDP-11 byla původně postavena za použití integrovaných obvodů SSI, ale jakmile se osvědčily LSI (large-scale integration) komponenty v praxi, byl představen model PDP-11/03 (LSI-11).
Procesory s velkou integrací
Lee Boysel publikoval slavné články včetně „manifestu“ v roce 1967, který popisoval, jak sestavit ekvivalent 32bitového sálového počítače z relativně malého počtu integrovaných obvodů s vysokou úrovní integrace (large-scale integration, LSI). V tuto dobu jediným způsobem, jak vyrobit LSI čipy (tj. čipy se sto nebo více branami), bylo použití MOS čipů (tj. s PMOS, NMOS nebo CMOS logikou), které však byly pomalé. Proto v té době některé společnosti i nadále stavěly procesory pomocí bipolárních čipů a pomalé MOS obvody byly považovány za užitečné jen v několika specializovaných nasazeních, které vyžadovaly nízký příkon.
Ještě v roce 1970 byly konstruovány procesory pro superpočítače z obvodů s malou integrací (SSI) nebo z obvodů s integrací středního měřítka (MSI) z řady 74xx, tj. za použití TTL hradel. Firma Datapoint používala TTL čipy ještě na začátku 80. let 20. století.
Mikroprocesory
V sedmdesátých letech dvacátého století vynálezce Federico Faggin svými vynálezy (MOSFET) navždy změnil vzhled a implementaci mikroprocesorů. Od představení prvního, komerčně dostupného, mikroprocesoru (Intel 4004) v roce 1970 a široce využívaného mikroprocesoru Intel 8080 v roce 1974, tato kategorie procesorů téměř naprosto převzala všechny ostatní metody realizace centrálních procesorových jednotek. Výrobci sálových počítačů a minipočítačů spustili vývoj proprietárních IC programů pro vylepšení starších počítačových architektur a nakonec vyrobili mikroprocesory s kompatibilní instrukční sadou, které byly zpětně kompatibilní se starších hardwarem a softwarem. S úspěšným příchodem všudypřítomného osobního počítače se termín CPU používá, téměř výlučně, pro mikroprocesory. Několik procesorů (často označovaných jako jádra) mohou být kombinovány do jednoho procesorového čipu.
Předchozí generace procesorů byly realizovány jako jednotlivé komponenty (elektronické součástky) a mnoho drobných integrovaných obvodů (IC) na jedné, nebo na více obvodových deskách. Avšak, mikroprocesory jsou vyráběny na velmi malém množství integrovaných obvodů, běžně pouze na jednom. Celková menší velikost mikroprocesoru, která je výsledkem jeho realizace na jeden čip, znamená rychlejší přepínací čas díky fyzickým faktorům, jako je například snížená hodnota parazitní kapacity. Toto umožňuje synchronním mikroprocesorům mít frekvenci v rozmezí od desítek MHz po několik GHz. Navíc se schopností vytvořit extrémně malé tranzistory na integrovaných obvodech se také zvýšila složitost a množství na jednom procesoru, a to přímo několikanásobně. Tento široce pozorovatelný trend je popsán Mooreovým zákonem, který byl prokázán jako velmi přesným předpovídatelem pro růst komplikovanosti a složitosti procesorů a integrovaných obvodů.
Stavba procesoru
Současné procesory zachovávají tradiční vnitřní uspořádání procesoru, které bylo rozpoznatelné i u prvních procesorů. Procesory obsahují:
- Řadič nebo řídicí jednotka, která zajišťuje součinnost jednotlivých částí procesoru dle prováděných strojových instrukcí (jejich dekódování, načítání operandů instrukcí z operační paměti a ukládání výsledků zpracování instrukcí).
- Sada registrů pro uchování operandů a mezivýsledků. Přístup k registrům je mnohem rychlejší než přístup do operační paměti připojené k procesoru pomocí sběrnice. Registry dělíme na obecné (pracovní, univerzální) a řídící (např. čítač instrukcí, stavové registry, registr vrcholu zásobníku, indexregistry). Bitová šířka pracovních registrů je jednou ze základních charakteristik procesoru.
- Jedna nebo více aritmeticko-logických jednotek (ALU, anglicky Arithmetic-Logic Unit), které provádí nad daty aritmetické a logické operace.
- Současné CPU obsahují také matematický koprocesor (FPU, anglicky Floating Point Unit), který provádí operace s desetinnými čísly.
- Současné CPU většinou obsahují také vektorovou jednotku, která je v podstatě matematickým koprocesorem optimalizovaným pro operace s vektory desetinných čísel.
Výkon procesoru
Nejčastěji používaným vyjádřením rychlosti procesoru je takt procesoru (taktovací frekvence). V jednom taktu jsou uvnitř procesoru provedeny přesně definované operace. Kvůli různým technikám zvýšení výkonu však již dnes není frekvence rozhodujícím faktorem a nelze ji využít jako srovnání ani mezi kompatibilními procesory.
Skutečnou rychlost procesu je kombinace taktovací frekvence a dalších jeho vlastností. V procesorech typu RISC trvala každá strojová instrukce právě jeden takt, avšak instrukce byly velmi jednoduché (např. jen sečtení dvou registrů nebo přesun z registru do paměti). Naproti tomu v procesorech typu CISC trvala každá strojová instrukce různý počet taktů (jeden až řádově desítky taktů), ale instrukce byly složitější (např. vyzvednutí operandu z paměti, sečtení s obsahem registru a uložení zpět do paměti). Proto nelze tyto dvě různé rodiny procesorů přímo porovnávat na základě taktovací frekvence.
Dnes se však rozdíly mezi oběma architekturami stírají, takže díky superskalární architektuře může CISC procesor za jeden takt vykonat i několik složitých instrukcí, avšak RISC procesory mohou vykonat za takt až kolem dvanácti jednoduchých instrukcí.
Pokud je v procesoru implementován pipelining, je v procesoru najednou v různém stupni rozpracování více strojových instrukcí. Je-li současně k dispozici i superskalarita, mohou být strojové instrukce prováděny mimo pořadí (anglicky out-of-order execution), kdy je pořadí provedení strojových instrukcí změněno (při zachování správnosti výsledků) pro maximalizaci využití všech částí procesoru a tím i pro zvýšení výkonu.
Rychlost procesoru ovlivňuje též přítomnost procesorové cache, která urychluje přístupy do operační paměti typu RAM. Pokud cache není přítomna, musí procesor při čtení nebo zápisu do paměti čekat na dokončení této operace, což je typicky několik taktů sběrnice, která paměť spojuje s procesorem. Rychlost této sběrnice je typicky nižší, než takt procesoru (ve většině současných procesorů je dokonce interní takt procesoru násobkem této frekvence), a proto je toto zdržení velmi významné. Vřazení rychlé cache mezi procesor a paměť může tyto čekací stavy omezit nebo dokonce úplně eliminovat, což závisí na úspěšnosti cache v predikci následujících operací s pamětí a také na celkové velikosti cache. Proto mají současné procesory integrovánu cache ve velikosti řádově jednotek MiB. Cache může být několikastupňová (L1, L2, L3 – čím nižší číslo, tím blíže k procesoru) a může být umístěna i na základní desce počítače. Na výkonnost cache má též vliv optimalizace programu.
Rychlost procesoru je jen jedním z faktorů, které ovlivňují celkovou rychlost počítače. Mezi další faktory patří velikost dostupné operační paměti RAM, rychlost pevného disku, propustnost propojujících sběrnic, ale i rychlost dalších vstupně/výstupních součástí počítače (pro hraní her například grafická karta) a v neposlední řadě režie operačního systému.
Reference
- Weik, Martin H. A Third Survey of Domestic Electronic Digital Computing Systems. ed-thelen.org. Ballistic Research Laboratories, 1961. Dostupné online. (anglicky)
Související články
- Historie procesorů
- Mikroprocesor
- System on a chip
Externí odkazy
- Obrázky, zvuky či videa k tématu centrální procesorová jednotka na Wikimedia Commons
- Centrální procesorová jednotka v České terminologické databázi knihovnictví a informační vědy (TDKIV)