Procesor (mikroprocesor)


Rychlost

Procesor počítače je synchronní zařízení, které pracuje podle hodinových kmitů generovaných krystalem umístěným na základní desce. Během jednoho kmitu provede procesor jednu operaci. Pokud je procesor schopen pracovat s vyšší frekvencí těchto hodinových kmitů, provede za jednu sekundu více operací, tzn. bude vykazovat vyšší výkon oproti stejnému typu procesoru pracujícímu na nižší frekvenci.

Základní deska může být navržena tak, aby podporovala více různých frekvencí procesorů. V takovém případě se nastavení konkrétní frekvence provede pomocí nastavovacích propojek (jumperů), popř. přepínačů (DIP).

Nastavovací propojka (Jumper) a přepínač (DIP)

Poznámka: Pokud je na základní desce nastavena vyšší frekvence, než pro kterou je procesor určen, je možné, že bude bezchybně pracovat i s touto vyšší frekvencí a bude tak poskytovat vyšší výkon. Každý procesor je totiž vyráběn s jistou rezervou, tak aby na své frekvenci pracoval naprosto bezpečně. Při vyšší frekvenci je procesor také více tepelně zatížen, takže je nutné dbát i na jeho odpovídající chlazení.

V dřívější době rychlost procesoru určovala většinu vlastností celého počítače. Základní deska byla navržena tak, aby pracovala se stejnou frekvencí jako procesor. Se vzrůstem rychlosti procesoru vzrostla i rychlost základní desky. Postavit základní desku, která by pracovala s vysokou frekvencí odpovídající frekvencím dnešních procesorů (200 MHz), je technicky velmi náročné.

Jako alternativu pro zrychlování CPU je možné použít tzv. zdvojovače frekvence (clock doubler). Původní zdvojovač frekvence byl speciální obvod 80486, který se osadil do patice pro procesor na základní desce 25 MHz. Byla to základní deska pracující s frekvencí 25 MHz navržená pro procesor 80486DX. Tento speciální obvod 80486 byl navržen tak, aby z hlediska základní desky pracoval s frekvencí 25 MHz, ale interně pracoval s rychlostí dvojnásobnou - 50 MHz. Jakákoliv interní činnost, např. matematický výpočet nebo přesun dat z jedné interní oblasti do druhé, se prováděla s frekvencí 50 MHz. Vnější operace, např. přenos dat z paměti nebo uložení dat do paměti, se uskutečňovaly pomaleji - s frekvencí 25 MHz. Tento procesor později dostal označení 80486DX2 / 50. Kromě tohoto procesoru existují i jiné typy s podobným chováním, např. 80486DX2 / 66, který interně pracuje s frekvencí 66 MHz a je možné jej použít v základní desce pracující s taktem 33 MHz.

V roce 1994 byla na trh uvedena další varianta procesoru 80486, který byl tzv. ztrojovačem frekvence (clock tripler). Tyto čipy byly prodávány ve verzi 75 MHz a 100 MHz, pracovaly na základních deskách s frekvencemi 25 MHz a 33 MHz. Do těchto procesorů bylo také integrováno dvojnásobné množství interní cache paměti (16 kB), které přineslo ještě o něco větší zvýšení výkonu. Tyto čipy byly nakonec označeny 80486DX4 / 75 (100).

Kromě výše uvedených odlišností ve frekvenci procesoru a základní desky existují také některé modely procesoru Pentium, jejichž interní frekvence je zvýšena o 50%. Původní modely Pentium byly nabízeny s frekvencemi 60 a 66 MHz. Pozdější typy tohoto procesoru byly označovány jako P54C a měly frekvenci 90 a 100 MHz. Tyto procesory používaly základní desky s frekvencí 60 a 66 MHz.



Efektivita mikrokódu

Jiným způsobem, jak zvýšit výkon procesoru kromě zvyšování jeho frekvence, je navrhnout čip tak, aby lépe využíval každý hodinový cyklus. Jednotlivé instrukce procesoru jsou naprogramovány pomocí malých mikroprogramů (tzv. mikrokódu). Výkonnost mikrokódu udává, kolik hodinových taktů trvá, než procesor provede určitou činnost.

Například procesor 8088 je schopen provádět dělení celých čísel (dělení bez desetinných míst). K vydělení dvou čísel potřebuje až 70 hodinových taktů. Procesor 80188 díky efektivnějšímu mikrokódu, pomocí něhož je dělení prováděno, potřebuje ke stejné operaci pouze 25 cyklů. Při porovnání těchto dvou procesorů tedy vychází procesor 80188 jako rychlejší.

Podobně se liší i procesory 80386 a 80486. Jednoduchá instrukce, která přesouvá data mezi registry, potřebuje ke svému provedení na procesoru 80486 dva takty. Díky efektivněji navrženému mikrokódu procesoru 80486 se tato instrukce na tomto procesoru provede během jediného taktu.



Počet instrukčních kanálů (pipelines)

Předchozí kapitola podávala úvahu ohledně počtu taktů potřebných k provedení jedné instrukce. Ve skutečnosti je možné provést téměř každou instrukci během jediného taktu. Způsob, kterým se tato jednotaktová operace provádí, se nazývá zřetězené zpracování instrukcí (pipelining). Tento způsob vychází ze skutečnosti, že zpracování každé instrukce procesorem lze rozdělit do pěti základních fází:

Každou z těchto fází může provádět samostatně pracující jednotka a v okamžiku, kdy je tato jednotka se svou prací hotova, předá svůj výsledek jednotce provádějící následující fázi zpracování a pokračuje ve své práci nad další instrukcí.

Klasické zpracování instrukcí

T1 T2 T3 T4 T5 T6 T7 T8 T9 T10
PF I1 I2
D1 I1 I2
D2 I1 I2
EX I1 I2
WB I1 I2

Pipeline zpracování instrukcí

T1 T2 T3 T4 T5 T6 T7 T8 T9 T10
PF I1 I2 I3 I4 I5 I6 I7 I8 I9 I10
D1 I1 I2 I3 I4 I5 I6 I7 I8 I9
D2 I1 I2 I3 I4 I5 I6 I7 I8
EX I1 I2 I3 I4 I5 I6 I7
WB I1 I2 I3 I4 I5 I6

Jednotlivé sloupce značí takt procesoru a v řádcích jsou vždy uvedeny instrukce v patřičné fázi zpracování. Při klasickém zpracování se tak zpracuje v prvních pěti taktech kompletně první instrukce. V dalších pěti taktech se pak kompletně zpracuje druhá instrukce. Při zřetězeném zpracování je v prvních pěti taktech opět zcela zpracována první instrukce, ale další instrukce jsou již rozpracovány, takže v každém dalším taktu je pak zpracována vždy jedna další instrukce. V optimálním případě tedy po deseti taktech je úplně zpracováno šest instrukcí.

Při zřetězeném zpracování však vyvstává problém v okamžiku, kdy některá z instrukcí způsobí skok. V tomto okamžiku je nutné provést tzv. pipeline flush, tj. vyprázdnění fronty. Předzpracované instrukce totiž vůbec nebudou prováděny, protože chod programu bude pokračovat na místě, kam byl uskutečněn skok. Od tohoto místa se tedy začne opět plnit fronta instrukcí.

Procesor, který má právě jednu frontu pro takové zřetězené zpracování intsrukcí, se nazývá skalární procesor

Zřetězené zpracování instrukcí je možné provádět i ve více než jedné frontě. Procesor, který má více než jednu frontu pro zřetězené zpracování, se nazývá superskalární procesor. Díky této technice je možné, aby procesor během jednoho taktu zpracoval více než jednu instrukci.

Superskalární zpracování (dvě fronty)

T1 T2 T3 T4 T5 T6 T7 T8 T9 T10
PF I1 I3 I5 I7 I9 I11 I13 I15 I17 I19
I2 I4 I6 I8 I10 I12 I14 I16 I18 I20
D1 I1 I3 I5 I7 I9 I11 I13 I15 I17
I2 I4 I6 I8 I10 I12 I14 I16 I18
D2 I1 I3 I5 I7 I9 I11 I13 I15
I2 I4 I6 I8 I10 I12 I14 I16
EX I1 I3 I5 I7 I9 I11 I13
I2 I4 I6 I8 I10 I12 I14
WB I1 I3 I5 I7 I9
I2 I4 I6 I8 I10

Během prvních pěti taktů jsou provedeny dvě instrukce a při každém dalším taktu se opět dokončí další dvě instrukce.



Šířka slova

Jiným způsobem, jak zvýšit výkon procesoru, je možnost zvětšit jeho šířku slova. Tento parametr procesoru určuje, jaké největší číslo dokáže procesor zpracovat během jediné operace. Šířka slova se udává v počtech bitů a je jí určeno, kolikabitový daný procesor je. Procesor, který má šířku slova 8 bitů, tedy dokáže v jediné instrukci manipulovat s číslem uloženým maximálně na 8 bitech (tj. číslem z intervalu 0 - 255). Analogicky je tomu u procesorů, jejichž šířka slova je 16 či 32 bitů. Větší čísla musí být rozdělena na menší a musí být zpracována po částech. Výhodou procesoru s větší šířkou slova je, že může v jedné operaci zpracovat větší číslo. Z toho vyplývá i větší rychlost takového procesoru oproti procesoru, který musí toto číslo nejdříve rozdělit a potom v několika instrukcích po částech zpracovat.



Šířka přenosu dat

Bez ohledu na to, jaké je maximální číslo zpracovatelné jednou instrukcí, musí být data přesouvána do (z) procesoru. Šířka přenosu dat určuje, jaké maximální číslo může být během jedné operace přeneseno do (z) procesoru. Udává se podobně jako šířka slova v bitech a je dána velikostí datové sběrnice procesoru, která slouží právě pro přenosy dat do (z) čipu. Je-li šířka datové sběrnice větší, je i šířka přenosu větší a tím je možné za kratší dobu přenést větší množství dat.

Například procesory 8086 a 8088 se liší pouze v šířce datové sběrnice (8088 má 8bitovou datovou sběrnici a 8086 má 16bitovou datovou sběrnici). Šířka slova je u obou procesorů stejná (16 bitů). Program tedy pro zpracování 16bitového čísla použije stejné instrukce. Toto číslo však musí být do procesoru přeneseno z operační paměti. Zatímco procesor 8086 je přenese najednou, procesor 8088 je bude přenášet na dvakrát a zabere mu to dvojnásobek času. Z tohoto je zřejmé, že i když oba procesory budou pracovat na stejné frekvenci, bude procesor 8086 vykazovat díky rychlejšímu přenášení dat vyšší výkon.

Podobná situace je i mezi procesory 80386 a 80386SX.



Interní cache paměť

S postupným zvyšováním výkonu procesoru tím, že je zvyšována jeho frekvence, se objevuje problém vysokých přístupových dob operačních pamětí. Pokud se zvýší frekvence procesoru, je nutné, aby operační paměti byly schopny rychleji reagovat na požadavky o přístupy k datům. Operační paměť bývá realizována jako dynamická paměť (DRAM), která je poměrně jednoduchá a levná oproti statické paměti SRAM. Dynamická paměť však má poměrně dlouhou přístupovou dobu a nemá tedy potřebnou rychlost k tomu, aby stačila odbavovat požadavky rychlého procesoru.

Pokud by počítač s rychlým procesorem byl vybaven pouze dynamickými paměťmi, bylo by nezbytné, aby procesor vždy čekal určitou dobu na paměť, než bude schopna poskytnout požadovaná data. Tím by ovšem byl výkon procesoru silně degradován. Teoreticky by bylo možné počítač vybavit statickými paměťmi, které mají podstatně nižší přístupovou dobu, ale vzhledem k jejich vysoké ceně je toto řešení nereálné.

V konkrétním případě se dnes volí kompromis, kdy operační paměť je realizována pomocí DRAM. Mezi procesor a operační paměť se pak vkládá tzv. externí (L2, sekundární) vyrovnávací paměť označovaná jako cache paměť. Cache paměť má podstatně menší kapacitu než operační paměť (32 - 1024 kB) a je realizována pomocí rychlých statických pamětí.

Toto řešení bylo samo o sobě dostačující pouze u procesoru 80386. U procesorů vyšších se přistoupilo ještě k integraci tzv. interní (L1, primární) cache paměti přímo na čip procesoru. Kapacita této paměti bývá poměrně malá (8 - 32 kB).



Numerický koprocesor

U prvních počítačů řady PC byla na základní desku integrována patice pro obvod numerického (matematického) koprocesoru. Podrobněji o numerických koprocesorech pojednává kapitola Numerické koprocesory .

Toto řešení se používalo prakticky u všech PC s procesory 80386 a nižšími a u PC s procesorem 80486SX. U vyšších procesorů se z důvodů vyššího výkonu přistoupilo k integraci těchto koprocesorů přímo na čip vlastního procesoru. Tyto procesory mají tedy numerický koprocesor integrován přímo v sobě a není již nutné (ani možné) do počítače osazovat další speciální obvod určený speciálně pro matematické výpočty.



Velikost adresovatelné paměti

Při práci počítače je nezbytné, aby procesor přistupoval k operační paměti a načítal z ní data (popř. data do této paměti ukládal). Pokud procesor potřebuje přistoupit k paměti, musí být zadána adresa paměťové buňky, se kterou bude pracovat. V programu bývá tato adresa zadána jako tzv. logická (virtuální) adresa. Tato virtuální adresa se potom určitým mechanismem (závislým na typu procesoru) postupně převádí na tzv. fyzickou adresu, která je již adresou ukazující na konkrétní paměťovou buňku v operační paměti. Mechanismy převodu logické adresy na fyzickou jsou uvedeny podrobně v kapitolách pojednávajících o konkrétních typech procesorů. (Procesory Intel 80x86)

Každý procesor má k dispozici pouze určitý počet bitů, na kterých může být fyzická adresa vytvořena. Tímto počtem bitů a tím i maximálním číslem, jež pomocí nich můžeme vytvořit, je omezena maximální paměť, kterou může procesor využívat. Počet bitů určených k vytváření fyzické adresy také úzce souvisí s adresovou sběrnicí procesoru. Adresová sběrnice je využívána procesorem při přístupech k operační paměti a je na ní posílána adresa paměťového místa (buňky), s níž bude procesor pracovat (číst z ní data, zapisovat do ní data).


Procesor: strana 2