Zvýšenie výkonu grafiky pretaktovaním jej procesora a RAMDAC

Nasledujúci článok sa týka zvýšenia výkonu prevádzkovaním hardware mimo špecifikácií výrobcu a patrí do teda rodiny tých kontroverznejších. Existuje nenulové riziko, že popisované nastavenie môže poškodiť Vašu grafickú kartu. Pokiaľ nie ste pripravení toto riziko niesť alebo máte proti tomuto postupu iné námietky, neskúšajte ho. Nezodpovedám za žiadne škody, ktoré jeho použitím vzniknú.

Procesor

Pretaktovanie procesorov je známa vec - sieťou kolujú úspešné prípady pretaktovania 300 MHz Celeronov na 450 MHz, existujú Web stránky venované čisto pretaktovaniu a výrobcovia sa snažia viac či menej úspešne proti tomu niečo podniknúť. Vaša CPU však nie je jediným procesorom vo Vašom počítači a prehadzovanie jumperov na motherboarde nie je jedinou cestou k zrýchleniu práce.

Moderná grafická karta je tiež počítačom so všetkým, čo k tomu patrí. Má procesor (občas aj viac), operačnú pamäť, rozhranie pre prijímanie príkazov a odovzdávanie hlásení. Pokiaľ poviete grafickej karte "chcem posunúť tento obdĺžnik o 20 pixelov ďalej", CPU tieto dáta vôbec neuvidí - celé kopírovanie vykoná procesor na grafickej karte.

Grafická karta obsahuje hodinový čip, ktorý riadi jednak časovanie obrazu (ovplyvňujúce počet bodov na riadku, obnovovaciu frekvenciu synchronizačné impulzy, ...), jednak aj taktovanie grafického procesora. Tak, ako v prípade CPU maximálnu frekvenciu ovplyvňujú aj vlastnosti hlavnej pamäti, platí tento vzťah aj v prípade grafickej karty.

Výrobcovia grafických kariet preto často používajú pesimistické nastavenia, aby zaručili funkčnosť aj v prípade pomalších pamätí. Rovnako aj procesor má určité rezervy. S trochou šťastia je možné tieto rezervy využiť a dosiahnuť tým znateľné zrýchlenie operácií typu "posuň okno".

Nasledovný postup je funkčný minimálne pre grafické karty založené na čipoch S3, ovládané X serverom XF86_S3. Je pravdepodobné, že bude fungovať aj inde, ale nemal som možnosť to vyskúšať.

Najprv zistíme, aká frekvencia je momentálne nastavená. V prípade štartu X Window pomocou príkazu startx ju nájdeme vo výpise X servera na aktuálnej obrazovke, v prípade štartu cez xdm napr. v súbore /var/log/xdm-error.log:

  (--) S3: Using Trio32/64 programmable clock (MCLK 51.009 MHz)

Číslo, ktoré nás zaujíma, je v tomto prípade 51 MHz. V súbore XF86Config (/etc/X11 alebo /usr/lib/X11) nájdeme sekciu Device a doplníme do nej príkaz set_mclk:

  Section "Device"
      Identifier  "My Video Card"
      VendorName  "Unknown"
      BoardName   "Unknown"
      set_mclk     51
      Option	"power_saver"
  EndSection

Hodnotu set_mclk opatrne zvyšujeme. Po každom zvýšení reštartujeme server a vyskúšame prácu s nejakým graficky intenzívnym programom, rýchlo hýbať oknami, myšou, rôzne režimy a vôbec všetko, čo nás napadne. "Prestrelená" hodnota set_mclk sa prejaví napr. tým, že okná po sebe zanechávajú stopy a.p. Nájdeme nastavenie, ktoré je od takejto hodnoty aspoň o 5-10 MHz nižšie.

V mojom prípade (S3 Trio64V+) karta cca rok beží na frekvencii 80 MHz bez najmenších problémov. Porovnanie výkonnosti pôvodnej a pretaktovanej verzie pomocou programu x11perf ukazuje aspoň 50% zrýchlenie akcelerovaných operácií, u niektorých aj o viac, ako by zodpovedalo iba zmene frekvencie (pravdepodobne sa niečo stihne ešte pred nejakou udalosťou, pri ktorej inak bolo treba na niečo čakať).

RAMDAC

Na dobrý monitor treba v dnešných časoch väčšinou chvíľu šetriť. Mnoho používateľov potom zistí, že kúpili lepší monitor, ako je karta schopná obslúžiť. Nie inak to bolo v mojom prípade - 19-palcový Philips Brilliance nemá problémy s 1600x1200 pri 75 Hz alebo 1280x1024 pri 85 Hz, ale ouvej - karta má 135 MHz RAMDAC a tým pádom končí niekde pri 1280x1024 @ 75 Hz.

Našťastie aj tu platí zásada Unixových prostredí nesnažiť sa byť za každú cenu byť múdrejší ako používateľ a keď si tento myslí, že vie čo robí, nebudeme mu brániť. Do vyššie zmienenej sekcie Device je možné pridať aj svoj názor na hraničnú frekvenciu RAMDACu pomocou riadku DACSpeed:

  Section "Device"
      Identifier  "My Video Card"
      VendorName  "Unknown"
      BoardName   "Unknown"
      set_mclk     80
      DACSpeed     225
      Option      "power_saver"
  EndSection

Server potom dovolí definovať aj režimy s vyššou frekvenciou. Sám používam s vyššie spomenutou kartou nastavenie

  # 1440x1080 (100x100 dpi, 4:3) @ 79 Hz, 90.2 kHz hsync
  Modeline "1440x1080"  170    1440 1464 1664 1894  1080 1083 1088 1136

Nepríjemné je to, že kým set_mclk varuje používateľa drobnými chybami, že zašiel príliš ďaleko, prestrelená DACSpeed sa prejaví maximálne miernou neostrosťou a zahrievaním čipu. Správny prístup je tu teda "ak zhorí, aj tak bolo treba kúpiť novú kartu" :-).

Bratislava, 13. 3. 1999

Stanislav Meduna
stano (AT) meduna.org