Sdílená paměť grafických karet – 1.díl: Intel
Posledním hitem diskusních fór je, po SATA driveru pro XPčka a UAA driveru na zprovoznění HD zvukové karty, jednoznačně dotaz na změnu velikosti sdílené paměti grafické karty. Teď je to tak moc v módě, že se objeví za týden klidně přes 5 takových dotazů. Je úplně jedno, že na stejné stránce výpisu vláken už je nějaké podobné téma. Lidé, kteří se ptají na podobné věci většinou patří znalostmi spíše do té nižší kategorie - to se týká jak znalosti hardware, tak i schopnosti hledat na diskusních forech, potažmo internetu obecně. První jim nemám za zlé. Druhé už docela ano, ale žíly mi to netrhá.
Jak to všechno začalo?
Vzhledem k tomu, že je to teď tak „in", tak jsem se rozhodl do toho vnést trochu světla, jak to vlastně všechno je. Pokud si to ještě dobře pamatuji, tak se sdílenou pamětí přišel léta páně 1998 (s odchylkou 1 rok :-)) Intel. Ten chtěl ukázat, jak rychlá je AGP sběrnice, takže si vytvořil vlastní samostatnou kartu (týmem odkoupených jiných společností, ale to je zas jiná historie), která měla na sobě jen minimum paměti (pro základní buffery) a byla optimalizována pro co nejrychlejší práci se systémovou pamětí skrze AGP (odtud tahala textury). Tenkrát to byla grafická karta Intel i740, která se stala základem první sdílené grafiky integrované v čipsetu - Intel 810 (ano, správně - do té doby měl každý notebook grafickou kartu s vlastní video pamětí).
Ta ještě také neměla paměť plně sdílenou. Pro DOS aplikace (textový režim) a start BIOSu měla vlastní paměť o velikosti 1MB. Další paměť už se ovšem sdílela. Velikost této sdílené paměti šla nastavit v setupu BIOSu. O nastavenou hodnotu se paměť RAM ořízla a do „sdíleného" prostoru měla přístup pouze grafická karta.
Kde je problém?
Tohle všechno má jeden malý nedostatek. Pokud si člověk nastaví málo paměti, může se stát, že některé programy potřebují více a je pak nutné restartovat systém a v BIOSu hodnotu přenastavit. Jenže pak zase zrovna nepotřebujete nic náročného na grafiku a paměť prostě leží ladem. Systém si dejme tomu vezme 16MB pro vykreslování a zbylých 112MB (pro případ 128MB) leží ladem bez ohledu na to, že zbytek paměti vám třeba právě dochází a systém musí swapovat. Pak je zas nutná návštěva BIOSu a celý proces je velmi otravný.
Jak to Intel vyřešil?
Už v první Intel 810 byla implementována technologie DVMT (Dynamic Video Memory Technology). V dnešních sdílených Intel grafikách už je někde tuším u verze 4.0 a je poměrně použitelnou. V BIOSu většiny dnešních notebooků už není možné nastavit velikost sdílené paměti. Jde to jen na několika málo modelech a většinou je pak například na výběr něco jako: 128M, 224M, DVMT. První dvě možnosti nasdílí fixní hodnotu RAM a všechno se chová tak, jak jsem popsal v minulém odstavci. Při volbě DVMT (která je automaticky vybrána u notebooků jenž tuto volbu nemají) se grafika chová tak, jako by měla nasdílenu maximální hodnotu paměti. Pokud si program vyžádá tolik video paměti, tak se jí dočká.
Technicky je to realizováno tak, že si grafika ukousne fixně pouze základních 8MB a zbytek si alokuje dynamicky přesně podle potřeby. Pokud tedy děláte v rozlišení 1280x800 ve Windows XP (nebo Windows Vista bez Aero), grafika bude brát z paměti nějakých 12MB. Pokud spustíte nějakou hru, tak to bude klidně přes 100MB, ale po ukončení se zas hodnota vrátí. Tento způsob řešení má jen samá pozitiva, protože nevzniká nevyužitá paměť.
Proč se tedy lidé na forech stále ptají?
To má jednoduchou příčinu. Běžný uživatel přechází ze stolního počítače na notebook. Stolní počítač měl jen nějaký jednojádrový Sempron a „nějakou starou" grafiku a jeho oblíbené hry mu tam běhaly v pořádku. Jenže na notebooku, který se zdá být parametrově výkonnější jsou hry velmi sekané. Takový uživatel se mrkne do nějakých systémových dialogů a zděsí se, že jeho karta sdílí jen 8MB a přitom výrobce sliboval 128 a více. Logickou úvahou dojde k tomu, že to bude tím hlavním problémem. Jenže není! Intelovské grafiky jsou prostě pomalé. Velikost sdílené paměti dnes není ani nijak rozhodující, protože zbytek se dá namapovat jiným způsobem. Problém je rychlost přenosu dat z RAM (pomalejší než při vlastní paměti) a především velmi osekaný grafický čip (absence některých hlavních částí, které supluje procesor, a malý počet vertex a pixel procesorů).
Co tedy nastavit? Jak a kde?
Na dnešních noteboocích není potřeba nastavovat ohledně grafiky vůbec nic. Paměť se přiděluje sama automaticky. Když ji grafika nepotřebuje, tak si nasdílí málo. Když ji potřebuje, tak si nasdílí dle potřeby až do pevně definovaného maxima. Pokud chcete jen tak informativně zjistit, kolik je to maximum, tak si otevřete „Vlastnosti grafiky..." a v této utilitě od Intelu klikněte na tlačítko „Informace". Vyskočí na vás nějaký takový dialog a v něm si můžete přečíst všechno podstatné (na tomto obrázku je vidět vytížení paměti při zapnutém rozhraní Aero a rozlišení 1280x800).