Kde sú do pekla tie 100 GHz procesory? Prečo už frekvencia CPU niekoľko rokov stojí na tých istých hodnotách a všetko prešľapuje na mieste? Je to snáď nejaké spolčenie výrobcov?

Ak vývoj hardvéru počítačov sledujete už dlhší čas, určite si pamätáte dobu rýchleho rastu frekvencie procesorov. Ako štart si môžeme zvoliť napríklad originálny koncept IBM PC z roku 1981, ktorý obsahoval procesor Intel 8088 s frekvenciou 4,7 MHz. Ako to vyzeralo o desať rokov? Nuž veru 10× lepšie, pretože v roku 1991 už procesory ako Intel 80486 pracovali na frekvencii 50 MHz.

Tempo následne začalo naberať ešte viac na obrátkach a za necelých desať rokov frekvencia poskočila už dvadsaťnásobne. V roku 2000 totiž AMD prelomila gigahertzovú hranicu a to sme všetci veru vypliešťali oči. Pamätám si, ako som v tom čase sedel za novučičkým počítačom s 600 MHz procesorom Intel Celeron a zasnil som sa, že možno aj ja si jedného dňa tie megavýkonné delá s 1 GHz frekvenciou budem môcť dovoliť.

Bolo jasné, že okolo roku 2007 môžeme očakávať 10 GHz procesory, niekedy v roku 2012 už 100 GHz no a napokon v roku 2017 si všetci kúpime prvé CPU s frekvenciou 1 THz. Ono to ešte tak aj nejakú dobu vyzeralo, pretože keď v roku 2003 Intel predstavil svoje Pentium 4 na frekvencii 3 GHz, z pohľadu bežného človeka sa mohlo zdať, že rýchle tempo pokračuje. Od tej doby sa však ale situácia prakticky nezmenila a frekvencie na úrovni 3 až 4 GHz sú v rámci segmentu notebookov a desktopov bežné aj v súčasnosti.

Kam sa teda podel ten raketový rast frekvencie, ktorý spôsoboval, že dvojročný či trojročný počítač bol už nepoužiteľný šrot a nový bol mnohonásobne výkonnejší? Čo nás zasiahol nejaký zmrazujúci lúč z ďalekého vesmíru?

Prečo už dnes tie procesory nechcú tikať rýchlejšie?

Jednoduchá odpoveď:  Frekvenciu procesora si možno predstaviť ako metronóm, ktorý zvukom (tik-tak, tik-tak) určuje, ako rýchlo hráte napríklad na klavír. Predstavte si, že ste robot a nemáte žiadny limit, ako rýchlo môžete hrať. Každé jedno tiknutie metronómu vám pritom povolí úder do klávesy alebo viacerých kláves naraz. Čím metronóm rýchlejšie tiká, tým klávesy klavíra stláčate v rýchlejšom tempe a rýchlosť hudby je tak čím ďalej tým väčšia. Ako však metronóm stále zrýchľujete, zistíte, že narážate na problém. Vy síce môžete hrať akokoľvek rýchlo, ale v určitom momente už tón konkrétnej klávesy nestihne doznieť do doby, než ju je treba stlačiť znova!

Tento „tón“ je v našom príklade krok inštrukcie procesora. V rokoch, ktoré vidieť na grafe ako zlom v raste frekvencie, sme sa so súčasnými architektúrami procesorov dostali na hranicu toho, ako krátke kroky inštrukcie procesoru môžu byť. Nejde teda o to, že by frekvencia „metronómu“ už zrýchliť nešla. Problémom je, že zrýchlenie tempa už neprináša efekt, pretože počas „tiknutia“ sa už nestihne potrebná časť inštrukcie vykonať. Aj keď sa nám ich stále darí upravovať a spracovávať ich stále efektívnejšie, pokrok už je veľmi pomalý.

Ide o jeden z hlavných dôvodov, prečo sme sa za cieľom zvyšovania výkonu posunuli smerom k viacerým jadrám a vláknam. Namiesto snahy o zrýchlenie taktu sa tak snažíme o to, aby toho procesor za jeden takt vykonal viac (vďaka tomu, že pracuje paralelne). Nástup mobilnej éry zároveň znamenal preskupenie snahy o vyšší výkon k čo najvyššej efektivite, z dôvodu výdrže na batériu. Výsledkom týchto faktorov je to, že frekvencia procesorov prakticky prestala rásť.

Pokročilejšia odpoveď: Ak máte chuť na podrobnejšie vysvetlenie, pozrime sa na to, čo sa deje v procesore naozaj a prečo to tikanie došlo prakticky na hranicu.

Každá spracovávaná inštrukcia procesoru je rozdelená do niekoľkých krokov, ktoré je potrebné vykonať v správnom poradí. Toto poradie je pri tom nemenné a celkom esenciálne. Ak by ste boli procesor vy a vaša inštrukcia by bola „upeč pizzu“, vykonáte to v štyroch krokoch. Urobíme cesto, rozvaľkáme ho, dáme naň ingrediencie a šupneme ho do pece. Ak by ste začali tretím a štvrtým krokom, teda ozdobením a daním do pece, úkon by nedával zmysel, pretože nemáme žiadne cesto.

Každý jeden krok je vykonaný počas jedného taktu procesoru. Keďže poradie musí byť dodržané, potrebujeme na to štyri tiknutia. Ide teda o tik (urobenie cesta), tak (rozvaľkanie), tik (ozdobenie), tak (danie do pece).

Predstavme si, že robenie pizze je príšerne zložité a každý jeden z týchto štyroch krokov musí robiť iný človek, ktorý je presne na danú úlohu odborník. Tak je to v rámci procesoru, kde každý krok vykonáva špecializovaná časť výpočtového mechanizmu.

V našom príklade s pizzou to znamená, že v každom kroku (ktorý trvá napríklad 1 minútu) bude pracovať len jeden odborník, zatiaľ čo ostatní sa budú nudiť. Najprv totiž musí cestár urobiť cesto a až potom ho rozvaľkávač môže rozvaľkať. Kým ho on vaľká, zdobič a pekár sa na neho pozerajú, rovnako ako cestár, ktorý už má hotovo. Jedna pizza nám tak trvá 4 minúty a štyri pizze 16 minút.

Avšak v pizzerii a takisto v rámci superskalárnej architektúry CPU je možné prácu zefektívniť tak, že začneme robiť viac pízz naraz. Keďže ale každý jeden odborník môže v jeden moment robiť len jednu, urobíme to takto:

Ako vidíme, cestár (1) robí vždy v jeden moment len jedno cesto, takisto ako rozvaľkávač (2) vždy vaľká jedno a zdobič (3) vždy jedno zdobí. Celý proces je značne rýchlejší. Kým predtým nám jedna pizza trvala 4 tiknutia (4 minúty) a štyri pizze by nám trvali 16 tiknutí (16 minút), takto štyri spravíme už za 7 tiknutí, teda 7 minút. Každé jedno tiknutie pritom ďalšiu pizzu pridá. Za 8 minút bude 5 pízz, za 9 minút už 6 a za 11 minút už 8.

OK, tak čo keby sme frekvenciu CPU zvýšili a začali tikať dvakrát rýchlejšie? Bolo by 2× tak rýchlo hotovo? A tu je ten problém. Ako sme frekvenciu čoraz viac zvyšovali, dostali sme sa na hranicu toho, ako sú vôbec dlhé samotné činnosti. Ich dĺžka je pritom odlišná, pretože sú aj rozdielne komplexné.

V našom príklade teda cestár pracuje pol minúty, tak ako rozvaľkávač, ale zdobič potrebuje minútu. Pekárovi zas stačí už len pol minúta. Je teda vhodné nastaviť takt tak, ako trvá tá najdlhšia úloha. V rámci procesoru sú pravdaže intervaly taktu extrémne rýchle. Napríklad pri 2 GHz frekvencii jeden takt trvá 500 pikosekúnd, takže kroky 1,2 a 4 by v tom prípade trvali 250 pikosekúnd.

Možno vás napadne, že čo keby sme zrýchlili takt aj napriek tomu. Veď kroky 1,2 a 4 by sa vykonali rýchlejšie a mohlo by sa ich teda urobiť dva krát toľko. To je pravda, ale tretí krok už by netrval jeden takt, ale dva. Došlo by teda k tomuto:

Ako vidíme, tempo je síce sprvu naozaj rýchlejšie, ale medzera ktorú nám bude spôsobovať tretí krok bude čoraz väčšia, takže rozdiel už nebude narastať. Keďže namiesto 1 minútových krokov už máme 30 sekundové,  štyri pizze budú naozaj rýchlejšie, konkrétne o 1,5 minúty (11 krokov = 5,5 minúty vs. 7 krokov = 7 minút). Lenže to už bude platiť stále. Aj 8 pízz bude len o 1,5 minúty rýchlejšie, aj 16, aj 32 aj 128. Rozdiel 1,5 minúty už zostane naveky.

A pamätajte, že v prípade procesorov hovoríme o 750 pikosekundách. Počet inštrukcií, ktoré CPU za jednu sekundu stihne vykonať, sa rátajú na miliardy. Čo sme teda zvýšením frekvencie o 100 % dosiahli? Obrovské zvýšenie produkcie tepla, obrovské zvýšenie spotreby a to všetko len kvôli 750 pikosekundám, ktoré sa nadbehnú v prvom momente. Je preto jasné, že skracovať takt pod hodnotu najdlhšej úlohy nemá zmysel.

No ale veď som videl CPU pretaktované na 6 či 8 GHz! Čo je to nejaký zázrak?

Jednoduchá odpoveď: Pretaktovači zvyšujú frekvenciu CPU tak, že nútia jeho tranzistory k tomu, aby sa rýchlejšie prepínali a kroky inštrukcie robili rýchlejšie. To urobia tým, že zvýšia elektrické napätie. Touto cestou ale nie je možné procesory vyvíjať, pretože v nasledujúcom kroku, ktorý by frekvencie dnešných pretaktovačov prekonal, by sa procesor zmenil na nukleárny reaktor.

Presnejšia odpoveď: OK, tak to s tým nukleárnym reaktorom bol len žart. Avšak nie celkom nemiestny. Dĺžka úloh v rámci inštrukcií nám za posledné roky umožňuje frekvencie na úrovni 3 až 4 GHz. Ak zvýšime napätie, tranzistory sa začnú prepínať rýchlejšie, čím sa kroky stanú kratšími. A ak kroky skrátime o polovicu, skráti sa na polovicu aj ten problémový tretí zdobič pizze a frekvenciu tak naozaj môžeme zdvojnásobiť. Paráda!

No, až na to, že zvýšenie napätia nie je len tak. Daňou za to je obrovská produkcia tepla. A nie hocaká. Kým frekvencia porastie lineárne, potrebná energia porastie kubicky. Inak povedané, zdvojnásobenie frekvencie takýmto spôsobom nám prinesie osemnásobnú produkciu tepla. Štvornásobná frekvencia? To je 64× väčšie teplo! Osemnásobná frekvencia? Ha, uži si 512× väčšie teplo ty frajer.

Už vás asi neprekvapí, prečo sa pri extrémnom pretaktovaní používa na chladenie tekutí dusík a súčasné rekordy sú na úrovni 7 až 8 GHz, čiže viac menej dvojnásobku bežných frekvencií. Z tohto dôvodu je jasné, že cesta pretaktovania v podobe zvyšovania napätí nikdy nemôže byť cestou, ako nové generácie procesorov vyvíjame.

V tomto sa dá procesor veľmi pekne prirovnať k závodnému koňovi. Ak naň nasadnete, cválate rýchlosťou, ktorá je koňovi príjemná. Ak chcete ako džokej extrémne zrýchliť, použijete malý bičík a udriete koňa pár krát po stehne. Kôň zrýchli (pretaktuje sa), ale nie je to zadarmo. Omnoho viac sa zahrieva a rýchlejšie sa unaví. Vo svete procesorov to znamená väčšiu produkciu tepla a väčšiu spotrebu energie.

Rôzne kone sú v základe rozlične rýchle, podobne ako sú rozlične rýchle rôzne modely procesorov. Jeden beží rýchlosťou 35 km/h, iný 40 km/h. Každého môžete do extrému popohnať bičíkom, podobne ako každý procesor môžete až na hranicu jeho schopností pretaktovať. Efekt bičíku je ale na každého koňa rôzny. Kým jeden zrýchli o 10 km/h, iný o 15 km/h. To je ale všetko. Ak si na koňa zoberiete dva, tri či hoc aj desať bičíkov, výsledné „pretaktovanie“ je len jedno a rýchlejšie už bežať nebude, nech ho budete biť akokoľvek.

Ak chcete koňa zrýchliť ešte viac, skrátka to nejde. Jediné riešenie je mať iného koňa, ktorý je rýchlejší už v základe a toho potom tiež „pretaktovať“ bičíkom. Rýchlejším koňom v rámci procesorov je lepšie mikroarchitektúra či lepší výrobný proces. Vo výsledku je tak aj pri CPU každý model možné pretaktovať odlišne úspešne, ale len na doraz a to je všetko.

Podobne ako vlastnosti koňa, ani vlastnosti procesoru nie je možné oddeliť. Nejde teda len o to, koľko tepla dokážeme odviesť, ale aj to, aké napätia a rýchlosti sú tranzistory bez poškodenia schopné zvládnuť.

Počas vývoja procesorov bolo v minulosti možné robiť obrovské pokroky vďaka tomu, že každý menší výrobný proces priniesol automaticky zvýšenie rýchlosti ich práce a zníženie spotreby. Ešte na prelome storočí, pri prechode z 250 nm procesu na 180 nm, jazda pokračovala ďalej, avšak pri 90 nm výrobnom procese (rok 2004) sa situácia obrátila a vďaka zmenšujúcim sa rozmerom a narastajúcim parazitickým únikom sa spotreba začala naopak zvyšovať.

Namiesto automatického zníženie spotreby sme sa naopak museli pustiť s ňou do boja, aby sa pri ďalších krokoch nezvyšovala. Najprv sa zdalo, že sa s tým bude dať bojovať obmedzovaním hrúbky izolačného oxidu pod hradlom tranzistora, ale to nebolo možné naveky. Pri 65 nm výrobnom procese už pod hradlom Intel používal len 1,2 nm hrubé dielektrikum z oxidu kremičitého (päť atómov) a aby úniky stále nenarastali, ďalšie zmenšenie si vyžiadalo významnú zmenu. Tou sa stala zmena konštrukcie tranzistorov pri 22 nm na FinFET. Ak vás téma zaujíma viac, dozviete sa o nej v článku Dobrodružná cesta vývojárov k 5 nanometrom.

Tak ako tak, na 100 GHz či 1 THz procesory si budete musieť nechať zájsť chuť. Ako bude vývoj vyzerať za ďalších 30 či 40 rokov pravdaže nikto nevie, ale isté je, že po najbližšie roky počítajte s tým, že frekvencia zostane viac menej zamrznutá tak, ako za posledných desať rokov.

František Urban

František Urban
Zameriavam sa najmä na prehľadové a analytické články z oblasti najrôznejších technológií a ich vývoja. Nájdete ma takisto pri diagnostike HW a SW problémov.