PC World 8/2000

autor: Tomáš Bučina

Cesta do hlbín procesora
"Z čoho sa skladá mozog počítača?"


Miliony malých robotníkov
     Pre pochopenie toho, ako vovnútri pracuje procesor, musíme najskôr vedieť, z čoho je vlastne vyrobený. CPU sa skladá z milionov maličkých tranzistorov, nanesených fotografickou cestou na kremíkovú doštičku veľkosti nechtu na malíčku. Ono ani slovo nanesených nie je príliš presné, pretože práve v kremíkovej doštičke sú polovodičové prechody v skutočnosti vytvorené.
     Tieto maličké tranzistory vedia jedno jediné - nastaviť sa do polohy nuly alebo jednotky ("zapnutý" a "vypnutý"), alebo inak povedané "otvorené", "zavreté". Mnohé z nich sú určené k obyčajnému ukladaniu hodnôt, skupinky tisícov a tisícov tranzistorov zaisťujú vykonávanie matematických operácií, daľšie tisíce realizujú logické rozhodovanie atď. Celkom je v procesore použitých až niekoľko desiatok miliónov tranzistorov. Aj keď počítanie tranzistorov a porovnávanie procesorov podľa ich množstva je tak trocha ošemetná záležitosť. Mnoho polovodičových prechodov je v procesore aj tak použitých na to, aby poslúžili ako vyrovnávacia pamäť (cache) pre rýchlejšie spracovávanie údajov prichádzajúcich z pamäti, a v skutočnosti nemajú žiadnu "aktívnu" funkciu.

Cesta inštrukcie (príkazu) procesorom
     Když poklepete na ikonku programu, stane se spousta věcí. Odhlédněme od toho, že Windows nějakým způsobem servisně zajistí, aby program mohl být spuštěn, že mu podle informací v hlavičce vyhradí paměť, že zaregistrují proces programu v režimu multitaskingu a mnoha dalších věcí. Zásadní je až to, že program je zkopírován do operační paměti. Tam se usídlí a procesor dostane adresu, na které spuštěná aplikace začíná. Na tuto adresu se nastaví zvláštní registry, zejména pak instruction pointer (instrukční ukazatel), podle kterého procesor určuje, kde v programu se právě nachází.
Z takto určené adresy paměti si procesor vyžádá několik bajtů, které se jen tak mimochodem zapíší do vyrovnávací paměti pro další použití a předají se dál do procesoru, kde je jako první čeká instrukční dekodér. Instrukční dekodér je poměrně vychytralé zařízení, které se stará o to, aby procesor věděl, co má vlastně dělat, jakou instrukci má zpracovávat, jaké jsou její parametry a jak je vlastně dlouhá. Je třeba si uvědomit zásadní věc architektura x86 nemá pevnou délku instrukcí! Proto až po dekódování instrukce procesor pozná, jak je dlouhá a kde začíná instrukce následující. Jakmile se tento problém vyřeší, řadič určí, kam rozkódovaná instrukce poputuje. Zda se o ni bude starat ALU jako o instrukci aritmetickou, nebo či poputuje do jiného bloku procesoru. Zároveň se posune instruction pointer na další instrukci v paměti, protože teď už je zřejmé, kde vlastně začíná.
Podle toho, o jakou instrukci se jedná, zajistí jádro CPU její provedení. Změny se mohou promítnout buď do paměti, nebo pouze do vnitřních registrů, případně může program ovlivňovat i chování periferií prostřednictvím vstupně/výstupních portů. Aby toho ještě nebylo málo, může i samotná instrukce požadovat další údaje z paměti, na které se pak čeká. Také ty se ale zapisují do vyrovnávací paměti a jsou zde k dispozici pro případ, že by ještě někdy byly třeba.
Aby to všechno fungovalo nějak synchronizovaně, je součástí procesoru také generátor impulzů. Ten jako bubeník určuje momenty, kdy se instrukce předává mezi jednotlivými částmi procesoru, počítá také tiky pro jednotlivé bloky procesoru v případě, že jim zpracování instrukce trvá déle, než je hodinový takt (a takových instrukcí je mnoho).

Cache první stupeň pro zrychlení procesoru
Jak už bylo zmíněno, na klíčových místech procesoru jsou umístěny vyrovnávací paměti. Jejich jedinou funkcí je uchovávat si veškeré informace, které jimi projdou. Cache se skládá z vlastní velmi rychlé paměti a řadiče cache. Veškeré požadavky na čtení z paměti jdou přes řadič cache, který rozhoduje, zda je požadovaný údaj k dispozici ve vyrovnávací paměti, či zda se musí načíst z paměti operační (RAM). Zpočátku se řadič může snažit jak chce, ale přesto procesor neuspokojí. Všechny údaje požadované CPU z paměti jsou totiž zcela nové a ještě neexistuje jejich kopie ve vyrovnávací paměti. Řadič cache však vyžaduje kopie od každého přenášeného bajtu spolu s informací, z jaké oblasti paměti data vlastně pocházejí. Ty si ukládá do paměti cache a vyčkává. Za chvíli (což může být třeba pouhých pár tisíc tiků hodinového generátoru procesoru) nastane situace, kdy si procesor vyžádá informace z operační paměti, které již ale jsou k dispozici v cache. Řadič cache ví, zda data, která má k dispozici, jsou platná, má informace o tom, jestli se procesor sám nepokusil hlídanou oblast paměti změnit. Najde-li v paměti cache procesorem požadovaná data, dá mu je k dispozici rychlostí, která několikanásobně přesahuje možnosti přenosu sběrnice mezi procesorem a pamětí RAM. Vzhledem k tomu, že program se velmi často "točí na místě" a požaduje stále stejné údaje, je úspěšnost vyrovnávací paměti poměrně vysoká.
Tento princip vyrovnávací paměti lze aplikovat na různé fáze práce s pamětí. Cache může zrychlovat čtení dat z paměti, může ale pomáhat také při čtení instrukcí a dokonce zvládne zrychlit i zápis do paměti. Aby ještě nebyl možnostem vyrovnávací paměti konec, dnešní procesory využívají dvě, a někdy dokonce i tři zřetězené cache za sebou, každou vždy s nižší rychlostí a vyšší kapacitou. Všechny se ale chovají několikrát rychleji než vlastní operační paměť počítače. Při požadování instrukcí procesorem pak systém prochází vyrovnávací paměti postupně podle rychlosti a hledá v nich požadovanou instrukci. Vzhledem k tomu, že velikosti cache 2. úrovně jsou na úrovni megabajtů, bývá procesor velmi často uspokojen ještě před operační pamětí.

Všechno je vlastně jinak
V části o cestě instrukce procesorem jsme si nastínili, jak vypadá procesor uvnitř. Bohužel, realita je taková, že popsaným způsobem se procesor choval v dávné minulosti a dnes se tak jeví pouze programu, který je jím prováděn. Uvnitř současných CPU se nachází celá řada systémů pro zrychlení zpracovávání a provádění instrukcí. Jen díky nim je možné, že frekvence, na které pracuje dnešní Pentium III 500 MHz (které má výkonnostní index CPUMark99 kolem 44) je jen desetkrát vyšší, než frekvence historické 486/DX2 50 MHz (dosahující CPUMark99 jen něco přes 1,6), zatímco rozdíl jejich výkonu je bezmála 30násobný! Takže i kdyby zmíněná čtyřiosmšestka pracovala na zázračných 500 MHz, beztak by bylo Pentium III na stejné frekvenci 3x rychlejší.
Hlavním problémem, se kterým se moderní procesory musejí potýkat, je již zmiňovaná nestejná délka příliš komplikovaných instrukcí x86. Když už se ale instrukce dekóduje, musí čekat na zpracování, které také není příliš rychlé, a složitější instrukce se tak zpracovávají i několik taktů procesoru.
Jak tohle všechno zrychlit? Základem výkonu dnešních procesorů je to, že instrukce nejsou zpracovávány jako komplikované dlouhé instrukce systému x86, ale jsou instrukčním dekodérem rozloženy na několik malinkých, ale stejně dlouhých instrukcí RISC, jež je procesor schopen zpracovat rychleji. Způsobů, které umožňují tyto instrukce provádět rychleji, je mnoho, mezi ty nejzákladnější patří paralelní zpracování (parallel tasking) a zřetězení (pipelining).
Při paralelním zpracování jsou v procesoru současně zpracovávány, tedy pouštěny do jednotlivých jednotek CPU, instrukce, které nemají vliv na stejné registry. Je totiž třeba si uvědomit, že v procesoru je řada jednotek, které instrukce v klasickém pojetí nemohou používat současně, čímž je vlastně potenciál CPU nevyužit. Současné procesory mají implementovány pro využití této funkce ještě další jednotky ALU či FPU navíc, aby bylo možné zpracovávat současně také několik instrukcí, z nichž více využívá právě např. jednotku ALU.
Zřetězení je umožněno vnitřním rozdělením cesty instrukce v jednotkách procesoru na několik stupňů, které jsou na sobě nezávislé, a v okamžiku, kdy je instrukce posunuta do dalšího stupně zpracování, může se ten právě uvolněný zabývat instrukcí následující. V jedné chvíli jsou tedy v procesoru dvě, tři i více instrukcí v různém stupni rozpracování a celý výkon procesoru je naplno využit. Připomínám, že slovo "instrukce" v této souvislosti neznamená už instrukci klasickou x86, ale zjednodušenou mikroinstrukci RISC, která vznikla v instrukčním dekodéru procesoru.
Když už je možné provádět instrukce, které neovlivňují stejné registry paralelně, co brání tomu, aby je procesor mohl provádět také v jiném pořadí, než v jakém jsou zapsány v programu? Tato technika se nazývá out-of-order execution (zpracovávání instrukcí mimo pořadí). K její realizaci je třeba, aby mezi instrukčním dekodérem a řadičem byl ještě navíc malý kousek vyrovnávací paměti, tzv. instruction pool, do kterého dekodér ukládá instrukce x86 přeložené do jazyka RISC. Z něj si pak řadič vytahuje mikroinstrukce podle potřeby, a podle aktuálního stavu jednotlivých jednotek procesoru je rozesílá ke zpracování. To se ale děje už bez ohledu na to, v jakém pořadí šly instrukce v programu.
Avšak ani dekódování instrukcí x86 není tak jednoduchou záležitostí. Krátké instrukce jsou dekódovány přímo tak, že je dekodér zpracuje a pošle do instruction poolu. U delších a komplikovanějších instrukcí ale nastupuje u dekodéru malá paměť ROM, ve které jsou zapsány dlouhé x86 instrukce a jejich riscové ekvivalenty.
K těmto hlavním nástrojům zvyšujícím výkon se přidávají také další drobné pomůcky. Zajímavou funkcí je cachování návratových adres. V jazyku assembler se do podprogramů vskakuje pomocí instrukce CALL a z podprogramu se vrací instrukcí RET. Při této operaci se adresa, kam se má program vrátit z podprogramu, až dojde na instrukci RET, ukládá do zásobníku. Zásobník však není nic jiného než místo v operační paměti počítače, na které směřují ukazatele typu stack pointer (ukazatel zásobníku). A jak jsme si řekli, operační paměť je z pohledu procesoru velmi pomalé zařízení. Proto jsou ještě navíc návratové adresy ukládány do zvláštní velmi rychlé vyrovnávací mezipaměti, odkud při požadavku na čtení (které vyvolá právě instrukce RET) budou bleskurychle vytaženy a použity procesorem jako nový instruction pointer (instrukční ukazatel).
Skutečně špičkovou záležitostí je systém pro branch prediction (předpovědi větvení) a speculative execution (spekulativní provádění instrukcí). Princip je opět velmi jednoduchý větvení v programu, tedy místa, kde se rozhoduje, jakým způsobem se bude program provádět dále, jsou relativně častá. Mnoho z nich však opakovaně proběhne se zcela stejným výsledkem. Jednotka pro předpovědi větvení (resp. pro odhady výsledků jednotlivých rozhodování) sleduje, jak probíhají instrukce pro větvení a především s jakým výsledkem. Všechna rozhodnutí si zapisuje a v době, kdy program opět dojde ke stejnému větvení, je schopna odhadnout, jak toto rozhodování dopadne. Vzhledem k tomu, že řada větvení dopadá, laicky řečeno, pořád stejně, pohybuje se úspěšnost systému branch prediction v hodnotách přes 70 %.
Na předpovědi větvení úzce navazuje technika spekulativního provádění instrukcí. Když se totiž dekodér dostane k větvení a branch prediction unit odhadne, jak větvení dopadne (uvědomme si, že v této fázi je skutečné zpracování programu o několik instrukcí zpožděno), nechá do instrukčního dekodéru poslat větev, kterou považuje za pravděpodobnou. Ta je pak zcela standardně zpracovávána jednotkami procesoru, ale stále se čeká na skutečný výsledek větvení. Dopadne-li vše podle předpokladů a rozhodování skončí tak, jak branch prediction unit předpokládal, jsou k dispozici instrukce, které následují za skokem okamžitě, a dokonce už jsou některé z nich zpracovány se známým výsledkem (opět se uplatňuje parallel tasking a pipelining).
Když náhodou výsledek rozhodování dopadne jinak, než se očekávalo, předpřipravené instrukce se zahodí, procesor si zcela klasicky vyžádá instrukce z druhé větve a postupuje běžným způsobem.

Novinky pro programátory
I procesory přinášejí čas od času některé novinky, se kterými se musejí programátoři vyrovnávat. Před několika lety to byla jednotka MMX pro zrychlení zpracovávání multimédií, na kterou navázaly proprietární systémy AMD 3Dnow! a Intel KNI. Jejich základem je systém SIMD (single instruction multiple data), tedy postup, při kterém nemá instrukce klasicky jeden či dva operandy, ale hned několik navíc. Cílem je zrychlit zpracovávání rozsáhlých polí relativně stejných dat, kterými jsou obrázky, videosekvence, zvuky a podobně, případně navíc ztrátově komprimované některou z technik JPEG či MPEG. Principem je aplikování například instrukce pro sčítání na 8 operandů během jedné instrukce, což je samozřejmě velmi vhodné pro zmíněné paralelní zpracování v několika jednotkách ALU či zřetězení instrukcí.

Závěrem
Technologie skryté uvnitř procesoru jsou v neustálém překotném vývoji, ale zdá se, že se pomalu dostávají na úroveň, kde už není možné provádění programu příliš zrychlit. S napětím a nadějí se tedy čeká na příchod nové generace procesorů architektury IA-64, z nichž prvním zástupcem bude Intel Itanium. Vzhledem k tomu, že programy pro nové procesory už nebudou zatíženy problémy přinesenými z archaické minulosti architektury x86, lze předpokládat, že také na ně budou mít procesory různé fígle, jak zrychlit jejich provádění.

Patice procesorů
Plastový rámeček či plůtek mezi procesorem a základní deskou je zodpovědný za to, který procesor lze do jaké základní desky vložit. Přestože zajišťuje v podstatě jen spojení mezi čipovou sadou na desce a samotným procesorem, a to navíc jen to mechanické, jeho marketingová síla je značná. Patice totiž určují možnosti záměn procesorů bez nutnosti obměnit i základní desku počítače.

V súčasnosti sú na trhu procesory vyžadujúce pätice týchto typov:

Socket 7 - Pôvodne bola určená pre procesory Pentium. Postupne sa používala aj pre mikroprocesory Pentium MMX a prevzali ju aj výrobcovia ako AMD, Cyrix, IBM či IDT. Aj AMD ustupuje od jej využívání a Athlon či nový Duron ju nepoužívají. Socket 7 bol k dispozícii na doskách so 66 MHz zbernicou. Modernejšie procesory si vyžiadali zvýšenie frekvencie zbernice na 100 MHz a tak sa vylepšená pätica pre tieto procesory nazývá Super 7. Rozdiel nastal aj v podpore zbernice AGP. Vo fyzickej konštrukcii plastového výlisku špecifikácie Socket7 a Super7 niet žiadneho rozdielu. Procesory s päticou Socket 7 majú 321 nožičiek.
Socket 8 - O patici určené procesorům Pentium Pro (DCPGA dual-cavity-pin-grid-array) se tvrdilo, že bude poslední socketovou variantou na trhu a že Intel půjde dále cestou slotů. Realita však dala zapravdu těm, kteří Intelu v tomto směru nevěřili. Na patici je velmi zajímavě vidět oddělení vlastního procesoru a cache, které jsou sice v jedné plastové schránce, ale nikoliv na stejném plátku křemíku (není to procesor s cache on-die).
Slot 1 - Pomerne revolučnou päticou bol vo svojej dobe Slot 1 v tvare prídavnej karty. Prvý procesor, ktorý ju využíval, bolo Pentium II kapotované do formátu SECC (single-edge-contact-cartidge), teda vo veľkej čiernej plastovej krabičke, z ktorej na jednej strane vykukovali len stovky kontaktných plošiek karty. Jako další používá Slot 1 procesor Celeron, tedy odlehčená varianta Pentia II ve formátu SEPP (single-edge-processor-package), který vypadá jako takové nahé Pentium II. A konečně zatím posledním produktem určteným do Slotu 1 je Pentium III v kapotáži SECC2.
Slot 2 - Pro serverové varianty Pentia II a Pentia III je určen Slot 2. Fyzicky vypadá velmi podobně jako Slot 1, ale lze do něj zasunout jen procesor Pentium II Xeon a Pentium III Xeon (oba ve formátu kartridge SECC).
Socket 370 - Socket370 byl návratem Intelu k socketovým paticím. Na první pohled vypadá velmi podobně jako Socket7, jen má větší počet kontaktních vývodů (370 oproti 321 u Socketu). Do Socketu370 lze nainstalovat procesory Celeron ve formátu PPGA (plastic-pin-grid-array) a Pentium III kapotované typem FCPGA (flip-chip-pin-grid-array).
Vzhledem k tomu, že patice Slot 1 a Socket370 jsou vývodově a elektricky velmi podobné, je možné na trhu najít také redukce, které umožňují použít procesory typu PPGA či FCPGA (Socket370) v základních deskách s paticí Slot 1. Redukce nejsou jen prosté "drátové propojky", ale obsahují i elektroniku, čímž je možné na nich i řadu věcí nastavovat. Proto by se do instalace procesoru do redukce a následného zapojení do základní desky měl pouštět jen zkušenější uživatel. Na druhou stranu jsou procesory ve formátech PGA (Socket370) levnější, než odpovídající slotové varianty a příslušná redukce.
Slot A - Po definitivním vyčerpání možnosti architektury postavené na patici Socket7 se firma AMD rozhodla k poměrně riskantnímu kroku, kterým byl přechod na vlastní patici procesoru nekompatibilní se standardy určenými Intelem. AMD Athlon byl tedy první procesor využívající nové rozhraní typu Slot A, tedy vizuálně podobné patice, jako je Slot 1, avšak připojená ke sběrnici Alpha EV6. Stejně tak následník Athlonu určený pro levné stanice, AMD Duron, využívá patici typu Slot A se stejnou sběrnicí.  


Historie procesorů

1970 Intel 4004
1972 Intel 8008
1974 Intel 8080
1978 Intel 8086
1979 Intel 8088
1982 Intel 80286
1985 Intel 80386
1988 Intel 80386SX
1989 Intel 486
1991 AMD Am386DX
1993 Intel Pentium, AMD Am486
1995 Intel Pentium Pro
1996 AMD zakoupil NexGen
1997 Intel Pentium MMX, Intel Pentium II, AMD K6

Slovníček

3Dnow! - rozšíření instrukční sady x86 zavedené společností AMD. Obsahuje řadu nových instrukcí pro zrychlení zpracovávání videa, grafiky a zvuku.
ALU - Arithmetic Logic Unit (jednotka pro aritmetické a logické operace) jedna ze základních a nejdůležitějších jednotek v procesoru. Realizuje drtivou většinu instrukcí.
Assembler - velmi nízký, systémový programovací jazyk. Velmi se blíží tomu, jak skutečně procesor chápe jednotlivé instrukce.
Byte (bajt) - jedna z dvoch základných jednotiek kapacity informácií . 1 Byte = 8 bitov.
cache (vyrovnávacia pamäť) - rýchla medzipamäť využívaná pre zníženie počtu prístupov do operačnej pamäte RAM.
FPU - Floating Point Unit (jednotka pro práci s desetinnou čárkou) jednotka, která realizuje neceločíselné numerické operace.
IA-64 - architektura 64bitových procesorů, reprezentovaná jako první procesorem Itanium.
instrukce - příkaz pro procesor. Jeden z nejzákladnějších stavebních prvků programu.
JPEG - Join Picture Experts Group velmi účinný způsob ztrátové komprese grafiky.
KNI - Katmai New Instruction rozšíření instrukční sady zavedené společností Intel od procesoru Pentium III. Opět určeno speciálně pro rychlejší dekódování streamového videa a audia poskytovaného prostřednictvím Internetu.
kremík (silikon) - jeden z polovodičů, na zemi poměrně hojný a relativně lehce zpracovatelný.
MMX - první větší rozšíření instrukční sady x86. Dnes je obsahují všechny nové procesory.
MPEG - Motion Pictures Expert Group ztrátový způsob komprese videa, tedy pohyblivých obrázků stejně jako zvuku. Dnes už je součástí norem ISO.
procesor (CPU) - základní prvek počítače.
operand - zpracovávaná hodnota.
RAM - operační paměť paměť počítače sloužící k dočasnému ukládání dat a programů. Při vypnutí se kompletně smaže.
register - malý kousek paměti uvnitř procesoru. Je extrémně využívaný, a proto musí být také extrémně rychlý. Procesor obsahuje registrů několik desítek.
RISC - Reduced Instruction Set Code redukovaná instrukční sada obsahující pouze malý počet stejně dlouhých instrukcí. Rychleji se zpracovávají, ale k reprezentaci jedné instrukce x86 je jich třeba několik.
radič - jakékoliv zařízení, které sice přímo data či instrukce nezpracovává, ale zajišťuje koordinaci mezi bloky, jež se na zpracovávání přímo podílejí.
strojový kód - programovací jazyk, kterému rozumí procesor.
tranzistor - základní polovodičový prvek. Spojení tří částí křemíku s nestejnou vodivostí. Principem funkce tranzistoru je to, že přivedením napětí na jednu jeho část je možné ovládat, zda bude proud moci protékat mezi dvěma zbylými částmi.
x86 - instrukční sada původních procesorů 8086, 80286 a dalších. Vyznačuje se nestejně dlouhými a komplikovanými instrukcemi.


Multitasking a úloha procesoru
Veškeré dnešní operační systémy pracují na principu multitaskingu, tedy zpracovávání více programů současně. Jak je ale vidět z hlavního článku, procesor žádnou přirozenou podporu pro takovou funkci nemá. Je sice schopen paralelně zpracovávat instrukce, ale jen ty, které přísluší jedinému programu. V praxi se proto multitasking realizuje velmi rychlým přepínáním mezi několika programy. Každý program dostává od systému určitý kousek času (timeslice), po který má možnost aplikace pracovat. Po jeho vypršení systém poskytne timeslice dalšímu programu, a tak postupuje stále dokola a obsluhuje všechny běžící aplikace.
V instrukčním souboru už od procesoru 386 je k dispozici několik funkcí, které multitasking sice nezajišťují, ale velmi usnadňují. Především jde o podporu tzv. chráněného režimu. V něm pracují programy odděleně, ve vlastních oblastech paměti, které do sebe nezasahují. Navíc procesor podporuje i několik tzv. úrovní oprávnění (ringů), pomocí nichž lze relativně snadno určit, který z programů je jádro systému (kernel), který je důležitý ovladač (servis) nebo co je pouhá spuštěná aplikace.
Na nejvyšší úrovni oprávnění pracuje jádro systému spolu s klíčovou součástí, kterou je manažer procesů (process manager). Manažer procesů zajišťuje právě zmíněné rozdělování času procesoru mezi jednotlivé programy a procesy. Moderní operační systémy už netrpí neduhem například Windows 3.1, který byl známý jako kooperativní multitasking. V něm musí aplikace, jež obdržela od manažeru procesů timeslice, sama požádat o jeho ukončení a předání času dalšímu procesu. Zcela nevyhnutelně se tak často stávalo, že aplikace, která přestala reagovat či se zhroutila, obdržela timeslice, ale nebyla schopna zajistit jeho předání zpátky process manageru. To v praxi znamená samozřejmě zhroucení celého systému multitaskingu, a co je nehorší, také procesů, které nebyly s tímto problémem v žádné souvislosti.
Dnes je situace o poznání lepší, neboť kooperativní multitasking byl zcela vytlačen preemptivním multitaskingem. Klíčový rozdíl mezi kooperativním a preemptivním multitaskingem je v tom, že process manager v preemptivním multitaskingu běží na vyšším ringu (v této souvislosti je samozřejmě myšleno na systémovější úrovni), než jednotlivé aplikace, a proto nemusí čekat, až mu proces vrátí řízení, ale sám si jej po uběhnutí timeslice přebere bez jakékoliv spolupráce s aplikací. Je pochopitelné, že takový systém je mnohokrát stabilnější, neboť ani špatně napsaná aplikace, která způsobuje chybu, nemůže ohrozit běh kernelu ani process manageru. Procesor má k dispozici nástroje, kterými je možné uložit současný stav rozpracování příslušící jednotlivému programu a naopak načíst stav rozpracovanosti jiného.
Zároveň procesor obsahuje obsluhu tzv. výjimek (exeptions), což jsou v podstatě chyby způsobené běžícím programem. Dobře napsaný operační systém je schopen se tedy z jakékoliv chyby běžící aplikace plně zotavit na takové úrovni, že ostatní procesy ani uživatel nemusejí poznat, že došlo k nějakému problému. Samozřejmě je třeba, aby jádro systému obsluhující výjimky bylo naprogramováno tak kvalitně, aby v něm samotném k problémům nedocházelo.


Procesory pro notebooky
Na procesory používané v mobilních počítačích jsou kladeny kromě obvyklých požadavků na výkon i další nároky související s největším problémem notebooků, jímž je nedostatek energie. Notebookové procesory jsou vyráběny s ohledem na nízký příkon, který se ale samozřejmě projevuje na snížení výpočetního výkonu. To je také jeden z důvodů, proč formálně stejné počítače, jeden notebook a druhý běžné stolní PC, mají odlišný výkon, logicky v neprospěch právě notebooku.
Zároveň stěsnaná montáž na základní desce mobilního počítače nedovoluje zajistit odpovídající chlazení procesoru, což s sebou přináší další problémy. Naštěstí je snížení příkonu realizováno především prostřednictvím snížení produkce zbytkového tepla, což samo o sobě částečně řeší i zmíněnou obtíž s nedostatečným chlazením.
Z důvodu šetření elektrickou energií napájecích článků notebooku musí být procesor schopen reagovat na různé požadavky tzv. power managementu. Ať už jde o prosté uspání procesoru v režimu sleep, při kterém neustává napájení, nebo o uložení rozpracovaného stavu paměti i procesoru na disk do stavu hibernace, notebookový procesor musí být za všech okolností plně podřízen požadavkům uživatele.
Zajímavým postupem pro šetření energie je snižování frekvence procesoru. U běžného čipu ve stolním počítači se změna frekvence neobejde bez restartu, avšak v notebooku se to vše musí dít zcela transparentně, bez zásahu uživatele a dokonce za plného chodu operačního systému. Běžnou metodou je snížení frekvence procesoru a úrovně podsvícení displeje při přechodu z napájení prostřednictvím síťového zdroje na chod z akumulátorů. Vše je vyřešeno tak čistě, že si uživatel povšimne jen nepatrného snížení jasu displeje, ale chod operačního systému včetně všech aplikací zůstává neovlivněn.
Je logické, že tyto vymoženosti jsou vykoupeny vyšší cenou procesorů pro notebooky, která se také odráží na celkově vyšší ceně mobilních počítačů oproti stolním variantám vůbec.


Přetaktování procesoru
Přetaktování nebo též "přetáčení" procesorů je postup, při kterém je čip nainstalován a spuštěn na vyšší hodinové frekvenci, než která je pro něj nominální. Jak bylo řečeno, frekvence, na níž procesor pracuje, určuje rychlost předávání dat a instrukcí mezi procesorem a vyrovnávacími paměťmi, rychlost předávání rozpracovaných instrukcí uvnitř procesoru a také rychlost komunikace se sběrnicemi. Zvýšením hodinové frekvence se zároveň zvyšuje i rychlost procesoru, a tedy i jeho výkon.
Při přetaktování se využívá toho, že procesory, stejně jako všechny ostatní výrobky, jsou vyráběny s určitou rezervou. Procesor originálně určený pro frekvenci 333 MHz je tedy schopen pracovat většinou bez problémů na 366 MHz a více, samozřejmě s výkonem, který odpovídá procesoru originálně taktovanému na 366 MHz či více.
Je pochopitelné, že takto nejde postupovat donekonečna. Při zvýšení frekvence nad určitou mez začne docházet k tomu, že chlazení procesoru není schopno odvádět reziduální teplo, které je vedlejším produktem činnosti procesoru. V běžném provozu zajišťuje chladič či větrák na procesoru dostatečnou cirkulaci vzduchu odvádějícího teplo, ale při zvýšení produkce tepla, což je nevyhnutelné při přetaktování, už konstrukce procesoru nedovolí zajistit jeho dostatečné chlazení. Procesor se začne rychle zahřívat. Při překročení určité teploty se elektrické vlastnosti křemíku, resp. polovodičových přechodů v křemíkovém plátku procesoru, začnou radikálně měnit. Omezuje se spínací funkce tranzistorů, neboť přechody zůstávají trvale otevřené. To se okamžitě projeví na obrovském generování chyb, na špatném dekódování instrukcí, na jejich chybném provádění. Vadná práce cache začne do procesoru posílat stovky a tisíce fiktivních instrukcí, vzniklých v útrobách křemíkového pekla. Není-li přehřátí ještě příliš vysoké, vyvolá chyby v běžící aplikaci, které někdy stačí kernel zachytit, a tak se "jen" drasticky sníží stabilita systému. V případě většího přehřátí procesoru se počítač sám restartuje nebo přestane zcela reagovat a zastaví se.
Ošemetné je to, že při dalším spuštění po několika minutách může počítač zcela normálně pracovat. Až poté, co je od procesoru požadován vyšší výkon, dojde opět k přehřívání a k vyvolávání chyb a následně k definitivnímu zastavení systému.
Přetaktování nelze rozhodně doporučit pro počítače, od kterých je vyžadována stabilní a stoprocentní funkce za všech okolností. Zároveň není v žádném případě podporováno samotnými výrobci procesorů. Na druhou stranu jsou za běžných okolností všechny výše popsané změny pouze dočasné a úprava frekvence na původní hodnotu spojená s dostatečným ochlazením procesoru je většinou zcela odstraní.
Ale ani dostatečné chlazení procesoru není vždy výhrou. Zvýšení hodinové frekvence má vliv také na frekvenci sběrnic, na které jsou připojeny rozšiřující karty. A právě karty nemusejí být schopné snést vyšší než nominální frekvenci sběrnice. Není tedy možné napsat nějaká obecná pravidla přetaktování, neboť situace vždy závisí na konkrétním počítači, na jeho konfiguraci, komponentech a fyzickém umístění procesoru na základní desce.
Každopádně by se do přetaktování měl pouštět jen ten, kdo má velmi dobrý přehled o konstrukci počítače a dostatečnou důvěru ve své zkušenosti.