Napětí a overclocking

  • 270
Každý jen trochu zkušenější overclocker ví, že pokud mu jeho základní deska umožňuje pustit do procesoru více „šťávy“ než je jeho nominální příděl, skýtá to naději na lepší přetaktování. Všichni tento fakt bereme jako samozřejmost, ale málokdo ví, proč tomu tak vlastně je. Pokud vás zajímá podstata zmíněného jevu, přečtěte si tento článek.

Je to součást overclockerské abecedy...
... a každý zájemce o tuto vědecko-hazardérskou disciplínu se dozví velmi brzy, že bez zvýšení napětí proudícího do čipu nad nominální hodnotu se mu špičkových pracovních frekvencí docílit nepodaří. To se týká čipů všeho druhu – procesory (CPU) počínaje, paměťmi pokračuje a grafickými čipy (GPU) konče. Víme to všichni, ale exaktně vysvětlit, proč tomu tak je, by nám mohlo činit jisté potíže. Z ryze praktického hlediska nám samozřejmě postačuje, ŽE to funguje; tento článek je ovšem určen pro ty, které také zajímá PROČ a JAK to funguje. Nedávno jsem na serveru Hardware Analysis objevil dle mého názoru velmi pěkné a názorné vysvětlení uvedeného jevu, z něhož budu po laskavém dovolení autora původního článku čerpat.

Špetka teorie o nulách a jedničkách
Asi nemusím příliš rozebírat, že veškeré výpočty, které počítač provádí, probíhají hardwarově ve dvojkové číselné soustavě – tj. soustavě, která pracuje pouze s číslicemi 0 a 1. Je tomu tak proto, že čipy jsou na té nejnižší úrovni tvořeny miniaturními tranzistory, což jsou součástky, které se v daný okamžik mohou nacházet právě v jednom ze dvou stavů. Nuže, sneseme-li se na úroveň hardwaru, můžeme si položit otázku, jak je v procesoru fyzicky reprezentována hodnota 0 a jak hodnota 1. A zde se už setkáváme s napětím: obě zmíněné hodnoty jsou totiž reprezentovány dvěma odlišnými hladinami napětí. Ačkoli konkrétní hodnoty závisí na použité technologii, za nulu bývá považováno napětí 0 V (toto napětí se obvykle označuje jako Vss) a za jedničku napětí jádra procesoru (označováno jako Vcore nebo Vcc).

Napětí Vss a Vcc jsou pro daný procesor pevně definována; v praxi ovšem nelze (z mnoha důvodů) počítat s tím, že by do procesoru přicházela ve svých přesných hodnotách. Místo v BIOSu nastavených 1,70 V tedy může být skutečné napětí v procesoru např. 1,68 V). Proto zde musí existovat určitá tolerance, jakési mantinely, uvnitř nichž bude napětí považováno za logickou jedničku a mimo ně za logickou nulu. Tyto mantinely se vzhledem k současným výrobním technologiím pohybují do 10 % Vcc, takže při nominálním Vcc 2,0 V můžeme zhruba očekávat, že za logickou jedničku budou považovány hodnoty napětí z intervalu 1,80 až 2,20 V.

Je vám asi zřejmé, že pokud napětí, které má reprezentovat jedničku, klesne pod tolerovaných 10 %, a procesor ho tedy bude interpretovat jako nulu, nebudou z toho běžící programy právě nadšeny. Jejich reakce mohou být roztodivné; kdo někdy programoval na úrovni assembleru, ví, že udělat byť jen z jedné jedničky nulu může znamenat konec běhu programu i operačního systému. Jestli vám to připomíná efekty nadměrného přetaktování, není to náhoda. Jak nám tedy ale overclocking vyrábí z logických jedniček nuly?

Přechodové stavy aneb „ono to chvíli trvá“
Celá potíž je v tom, že než tranzistor přejde ze stavu 0 do stavu 1 (a samozřejmě i naopak), chvíli mu to trvá. Dobře to ilustruje následující obrázek, který ukazuje, jak probíhá v čase přechod z jedné hladiny napětí na druhou.

Přechodové stavy

Nejlépe vám pomůže si celou věc představit, když si sami zahrajete na tranzistor: stoupnete si ke dveřím, za logickou 0 prohlásíte stav „dveře dokořán“ a za logickou 1 stav „dveře zavřeny“. Jistě z vlastní zkušenosti víte, že dveře nelze převést z jednoho výše uvedeného stavu do druhého okamžitě, a to i kdybyste vyvinuli schwarzeneggerovskou sílu – mezi stavy lze přecházet vždy jen s určitým zpožděním.

Overclocking zvyšuje tempo!
A nyní přicházíme k jadérku věci. Uvědomte si, co se stane, když procesor přetaktujete: zrychlí se frekvence (počet MHz) a tím pádem i počet pracovních cyklů za jednotku času. Stav tranzistoru (0 nebo 1) je čten vždy na konci cyklu; zvýšíte-li frekvenci nad určitou úroveň, stane se, že z tranzistoru měnícího svůj stav z 0 na 1 bude čtena hodnota ještě předtím, než stihla naběhnout mezi „jedničkové mantinely“! Plánovaná jednička pak bude přečtena jako nula a i kdyby se neštěstí nezrodilo hned v prvním takovémto případě, dá se při dané frekvenci očekávat, že se tato situace bude brzy opakovat. Vrátíme-li se k představě kombinace vás a dveří jako tranzistoru, jistě dokážete měnit stav řekněme 1x za sekundu – jenže co když vás někdo „přetaktuje“ z 1 na 5 Hz a bude chtít, abyste měnili stav 5krát za sekundu? Za jednu pětinu sekundy svůj stav prostě kompletně změnit nedokážete.

Jak pomůže vyšší napětí?
Tím, že zvýšíte Vcc (v obrázku označeno jako Vcc+), zvýšíte samozřejmě také rozdíl mezi Vss a Vcc, tedy mezi logickou nulou a jedničkou. Jedničkové mantinely zůstávají stejné, tedy Vcc +/- cca 10 %. Napětí však bude nyní při cestě z 0 na 1 nabíhat místo na Vcc na Vcc+ a jeho cesta vzhůru bude strmější! Z toho plyne, že dosáhne hodnoty považované za logickou 1 dříve než předtím – a v tom tkví celé kouzlo této procedury. Získali jsme rychlejší přechod mezi stavy a tím i lepší toleranci k vyšším frekvencím.

Přechodové stavy se zvýšeným napětím

Závěrem jen poznamenejme, že mezi zvyšováním napětí a zkracováním přechodového stavu není v žádném případě přímá úměrnost; nad určitou hodnotou napětí (cca Vcc + 20 %) už při dalším zvyšování vidíme jen nepatrné nebo vůbec žádné pokroky v přetaktovatelnosti.

Zdroj: Hardware Analysis