Centrální procesorová jednotka
Centrální procesorová jednotka (CPU) je důležitou součástí každého počítače. Procesor vysílá signály k ovládání ostatních částí počítače, podobně jako mozek ovládá tělo.
Procesor je elektronický stroj, který pracuje na základě seznamu počítačových úkonů, tzv. instrukcí. Čte seznam instrukcí a každou z nich postupně spouští (vykonává). Seznam instrukcí, které může CPU spustit, je počítačový program.
Taktovací frekvence neboli rychlost vnitřních částí procesoru se měří v hertzích (Hz). Moderní procesory často pracují tak rychle, že se místo toho používá hodnota gigahertz (GHz). Jeden GHz je 1 000 000 000 cyklů za sekundu.
Většina procesorů používaných ve stolních (domácích) počítačích jsou mikroprocesory společnosti Intel nebo Advanced Micro Devices (obvykle zkráceně AMD). Dalšími společnostmi, které vyrábějí procesory, jsou ARM, IBM a AMD pod hlavičkou ATI Technologies, která je v současné době lídrem. Většina jejich procesorů se používá ve vestavěných systémech pro specializovanější věci, například v mobilních telefonech, automobilech, herních konzolích nebo v armádě.
Procesor Pentium uvnitř počítače
Typy procesorů
Ve 20. století vynalezli inženýři mnoho různých počítačových architektur. V současné době většina stolních počítačů používá buď 32bitové, nebo 64bitové procesory. Instrukce v 32bitovém procesoru umí dobře zpracovávat data o velikosti 32 bitů (většina instrukcí v 32bitovém procesoru "myslí" ve 32 bitech). Podobně 64bitový procesor umí dobře zpracovávat data o velikosti 64 bitů (a často umí dobře zpracovávat i 32bitová data). Velikost dat, která procesor nejlépe zpracovává, se často nazývá velikost slova procesoru. Mnoho starých procesorů ze 70., 80. a počátku 90. let (a mnoho moderních vestavných systémů) má 8bitovou nebo 16bitovou velikost slova. Když byly v polovině 20. století vynalezeny procesory, měly mnoho různých velikostí slov. Některé měly různé velikosti slov pro instrukce a data. Méně oblíbené velikosti slov se později přestaly používat.
Většina procesorů jsou mikroprocesory. To znamená, že procesor je pouze jeden čip. Některé čipy s mikroprocesory v sobě obsahují i další komponenty a jsou to kompletní jednočipové "počítače". Takovému čipu se říká mikrokontrolér.
Registry
Když procesor spouští počítačový program, potřebuje někam uložit data, se kterými instrukce pracují (data, která čtou a zapisují). Toto úložiště se nazývá registr. Procesor má obvykle mnoho registrů. Přístup k registrům (čtení a zápis) musí být velmi rychlý. Proto jsou součástí samotného čipu procesoru.
Paměť
Ukládání všech dat do registrů by většinu procesorů příliš zkomplikovalo (a prodražilo). Proto se do registrů obvykle ukládají pouze data, se kterými procesor pracuje "právě teď". Zbytek dat používaných programem je uložen v operační paměti (RAM). S výjimkou mikrokontrolérů je paměť RAM obvykle uložena mimo procesor v samostatných čipech.
Když chce procesor číst nebo zapisovat data do paměti RAM, zadá k nim adresu. Každý bajt v paměti RAM má svou paměťovou adresu. Velikost adres je často stejná jako velikost slova: 32bitový procesor používá 32bitové adresy atd. Menší procesory, například 8bitové, však často používají adresy, které jsou větší než velikost slova. Jinak by byla maximální délka programu příliš krátká.
Protože velikost adres je omezena, je omezena i maximální velikost paměti. 32bitové procesory obvykle zvládnou pouze 4 GB paměti RAM. To je počet různých bajtů, které lze vybrat pomocí 32bitové adresy (každý bit může mít dvě hodnoty - 0 a 1 a 2 32bajty jsou 4 GB). 64bitový procesor by mohl zvládnout až 16 EB paměti RAM (16 exabajtů, přibližně 16 miliard GB nebo 16 miliard miliard bajtů). Operační systém jej může omezit na použití menšího množství.
Informace uložené v paměti RAM jsou obvykle nestálé. To znamená, že po vypnutí počítače zmizí.
Cache
V moderních počítačích je paměť RAM mnohem pomalejší než registry, takže přístup do paměti RAM zpomaluje programy. Pro urychlení přístupu do paměti se mezi operační paměť a hlavní části procesoru často umisťuje rychlejší typ paměti nazývaný cache. Cache je obvykle součástí samotného čipu procesoru a je v přepočtu na bajt mnohem dražší než paměť RAM. Do mezipaměti se ukládají stejná data jako do paměti RAM, ale obvykle je mnohem menší. Proto se do mezipaměti nemusí vejít všechna data používaná programem. Do mezipaměti se snaží ukládat data, která budou pravděpodobně často používána. Příkladem jsou nedávno použitá data a data, která jsou v paměti blízko nedávno použitých dat.
Často má smysl mít "cache pro cache", stejně jako má smysl mít cache pro RAM. V případě víceúrovňové mezipaměti existuje mnoho mezipamětí, které se nazývají mezipaměť L1, mezipaměť L2 atd. Mezipaměť L1 je nejrychlejší (a nejdražší na bajt) mezipaměť a je "nejblíže" procesoru. Cache L2 je o krok dál a je pomalejší než cache L1 atd. Na mezipaměť L1 lze často pohlížet jako na mezipaměť pro mezipaměť L2 atd.
Autobusy
Počítačové sběrnice jsou vodiče používané procesorem ke komunikaci s pamětí RAM a dalšími součástmi počítače. Téměř všechny procesory mají alespoň datovou sběrnici - slouží ke čtení a zápisu dat - a adresovou sběrnici - slouží k výstupu adres. Další sběrnice uvnitř procesoru přenášejí data do různých částí procesoru.
Sady instrukcí
Instrukční sada (nazývaná také ISA - Instruction Set Architecture) je jazyk, kterému rozumí přímo konkrétní procesor. Těmto jazykům se také říká strojový kód nebo binární kód. Říkají, jak říci procesoru, aby provedl různé úkony, například načtení dat z paměti do registru nebo sečtení hodnot ze dvou registrů. Každá instrukce v instrukční sadě má své kódování, což je způsob, jakým je instrukce zapsána jako posloupnost bitů.
Programy napsané v programovacích jazycích, jako jsou C a C++, nelze spouštět přímo procesorem. Musí být přeloženy do strojového kódu, aby je procesor mohl spustit. Překladač je počítačový program, který tento překlad provádí.
Strojový kód je pouze posloupnost nul a jedniček, což lidem znesnadňuje jeho čtení. Aby byl čitelnější, jsou programy ve strojovém kódu obvykle psány v assembleru. Jazyk assembleru používá místo nul a jedniček text: Například pro načtení hodnoty 0 do registru A můžete napsat "LD A,0". Program, který překládá jazyk assembleru do strojového kódu, se nazývá assembler.
Funkčnost
Zde jsou uvedeny některé základní funkce, které procesor umí:
- Čtení dat z paměti a zápis dat do paměti.
- Přičtěte jedno číslo k jinému číslu.
- Zjistěte, zda je jedno číslo větší než druhé.
- Přesun čísla z jednoho místa na druhé (například z jednoho registru do druhého nebo mezi registrem a pamětí).
- Přeskočí na jiné místo v seznamu instrukcí, ale pouze pokud je splněn nějaký test (například pouze pokud je jedno číslo větší než druhé).
I velmi složité programy lze vytvořit kombinací mnoha jednoduchých instrukcí, jako jsou tyto. To je možné, protože každá instrukce trvá velmi krátkou dobu. Mnoho dnešních procesorů dokáže za jedinou sekundu provést více než 1 miliardu (1 000 000 000) instrukcí. Obecně platí, že čím více toho procesor za daný čas zvládne, tím je rychlejší. Jedním ze způsobů měření rychlosti procesoru je MIPS (Million Instructions Per Second). Flops (operace s plovoucí desetinnou čárkou za sekundu) a taktovací frekvence procesoru (obvykle se měří v gigahertzech) jsou také způsoby, jak měřit, kolik práce dokáže procesor za určitý čas vykonat.
Procesor je sestaven z logických hradel a nemá žádné pohyblivé části. Procesor počítače je elektronicky propojen s dalšími částmi počítače, jako je grafická karta nebo systém BIOS. Počítačový program může tyto periferie ovládat čtením nebo zápisem čísel na speciální místa v paměti počítače.
Instrukční potrubí
Každá instrukce prováděná procesorem obvykle probíhá v mnoha krocích. Například instrukce "INC A" (zvýšení hodnoty uložené v registru A o jedničku) se na jednoduchém procesoru provede takto:
- Načtení instrukce z paměti,
- dekódovat instrukci (zjistit, co instrukce dělá) a
- přidat jednu do rejstříku A.
Různé části procesoru dělají různé věci. Často je možné provádět některé kroky z různých instrukcí současně, což zrychluje procesor. Například můžeme číst instrukci z paměti ve stejnou dobu, kdy dekódujeme jinou instrukci, protože tyto kroky využívají různé moduly. To si lze představit tak, že máme "uvnitř pipeline" mnoho instrukcí najednou. V nejlepším případě pracují všechny moduly na různých instrukcích najednou, ale to není vždy možné.
Jednotky správy paměti (MMU) a virtuální paměť
Moderní procesory často používají jednotku správy paměti (MMU). MMU je komponenta, která překládá adresy z CPU na (obvykle) různé adresy RAM. Při použití jednotky MMU nejsou adresy používané v programu (obvykle) "skutečnými" adresami, na kterých jsou uložena data. Tomu se říká virtuální (opak "skutečné") paměť. Níže je uvedeno několik důvodů, proč je dobré mít jednotku MMU:
- Jednotka MMU může před programem "skrýt" paměť jiných programů. To se provádí tak, že během běhu programu nepřekládá žádné adresy na "skryté" adresy. To je dobré, protože to znamená, že programy nemohou číst a modifikovat paměť jiných programů, což zvyšuje bezpečnost a stabilitu. (Programy se nemohou navzájem "špehovat" nebo si "šlapat na paty").
- Mnoho jednotek MMU může některé části paměti učinit nezapisovatelnými, nečitelnými nebo nespustitelnými (což znamená, že kód uložený v této části paměti nelze spustit). To může být dobré z důvodů stability a bezpečnosti i z jiných důvodů.
- Jednotky MMU umožňují různým programům různé "pohledy" na paměť. To se hodí v mnoha různých situacích. Například bude vždy možné mít "hlavní" kód programu na stejné (virtuální) adrese, aniž by docházelo ke kolizi s jinými programy. Hodí se to také v případě, kdy existuje mnoho různých částí kódu (z knihoven), které jsou sdíleny mezi programy.
- Jednotky MMU umožňují, aby se kód z knihoven při každém spuštění programu objevil na různých adresách. To je dobré, protože když nevíte, kde se co v paměti nachází, je pro hackery často obtížnější přimět programy, aby dělaly špatné věci. Tomu se říká randomizace adresního prostoru.
- Pokročilé programy a operační systémy mohou používat triky s jednotkami MMU, aby se vyhnuly nutnosti kopírovat data mezi různými místy v paměti.
Více jader
Vícejádrové procesory se staly běžnými na počátku 21. století. To znamená, že mají na jednom čipu zabudováno více procesorů, takže mohou spouštět mnoho instrukcí najednou. Některé procesory mohou mít až dvaatřicet jader, jako například AMD Epyc 7601.
Výrobci
Následující společnosti vyrábějí počítačové procesory:
- ARM
- Intel
- Advanced Micro Devices
- MCST
- SRISA
- Sun Microsystems
Další informace
- Mikroprocesor
- ALU
- Prováděcí jednotka
- Jednotka s pohyblivou řádovou čárkou
- Intel
- AMD
Otázky a odpovědi
Otázka: Co je to procesor?
Odpověď: Centrální procesor (CPU) je důležitou součástí každého počítače. Vysílá signály k ovládání ostatních částí počítače, téměř jako mozek ovládá tělo. Procesor je elektronický stroj, který pracuje na základě seznamu instrukcí pro provádění určitých úkolů.
Otázka: Jak procesor pracuje?
Odpověď: Procesor čte seznam instrukcí a každou z nich postupně spouští (vykonává). Seznam instrukcí, které může CPU spustit, je počítačový program.
Otázka: V jakých hodnotách se měří taktovací frekvence nebo rychlost procesoru?
Odpověď: Taktovací frekvence nebo rychlost vnitřních částí procesoru se měří v hertzích (Hz). Moderní procesory často pracují tak rychle, že se místo toho používá označení gigahertz (GHz) - jeden GHz je 1 000 000 000 cyklů za sekundu.
Otázka: Které společnosti vyrábějí procesory?
Odpověď: Mezi společnosti, které vyrábějí procesory, patří Intel, Advanced Micro Devices (AMD), ARM (nedávno koupený společností Nvidia), IBM a AMD pod hlavičkou ATI Technologies, která v současné době vede na trhu.
Otázka: Kde se používá nejvíce procesorů?
Odpověď: Většina procesorů používaných ve stolních počítačích jsou mikroprocesory vyráběné společnostmi Intel nebo AMD, zatímco většina ostatních se používá ve vestavěných systémech pro specializovanější věci, jako jsou mobilní telefony, automobily, herní konzole nebo vojenské aplikace.