Hlavní navigace

Grafické karty a grafické akcelerátory (15)

8. 6. 2005
Doba čtení: 11 minut

Sdílet

V dnešním pokračování seriálu o grafických kartách a grafických akcelerátorech se budeme zabývat popisem základních funkcí grafických karet typu SVGA. Tyto grafické karty nabízely velmi široké spektrum funkcí, některé z nich v sobě dokonce obsahovaly zárodek grafických akcelerátorů. Mimo to si řekneme základní informace o prozatím posledních grafických kartách navržených a dodávaných firmou IBM. Jedná se o grafické karty řady IBM 8514/A a XGA.

Obsah

1. Grafická karta IBM 8514/A
2. Konfigurace grafické karty IBM 8514/A
3. Klony IBM 8514/A a další vývoj grafických karet na počítačích PC
4. Následníci grafické karty VGA v podobě SVGA
5. Přístup do obrazové paměti u karet SVGA
6. Grafická karta XGA – prozatím poslední pokus IBM
7. Standard VESA aneb částečné zmírnění chaosu na trhu s grafickými kartami
8. Obsah dalšího pokračování tohoto seriálu

1. Grafická karta IBM 8514/A

Grafická karta IBM 8514/A byla vytvořena v roce 1987 firmou IBM jako doplňková grafická karta ke kartě VGA, ve skutečnosti ji však bylo po malých úpravách možné použít i s dalšími grafickými kartami, zejména s Herculesem (změny se týkaly zejména úpravy řádkových frekvencí). Současně se jednalo i o první široce dostupný grafický akcelerátor určený pro počítače IBM PC, protože předchozí grafické akcelerátory (například dříve popsaná trojkarta PGA či mnohé verze grafických karet typu TARGA a TIGA) byly velmi drahé, a jejich použití tak bylo limitováno pouze pro profesionální účely, čemuž odpovídalo i spektrum aplikací, kterými byly tyto karty podporovány. Grafická karta IBM 8514/A byla použitelná prakticky na všech počítačích řady IBM PC/AT, které však musely obsahovat poměrně málo úspěšnou sběrnici MCA (Micro Channel Architecture). V pozdějších letech se objevily i klony této grafické karty, které bylo možné zapojit i do rozšířenějších sběrnic ISA či VESA Local Bus, sběrnice MCA se totiž mimo originální počítače od firmy IBM příliš neujala, částečně to bylo zapříčiněno způsobem licencování.

Grafická karta IBM 8514/A patří do skupiny grafických prostředků určených zejména pro aplikace typu CAD, tedy pro aplikace orientované na zpracování a rychlé zobrazování vektorů (i písmo se v CAD systémech vykresluje, resp. v minulosti vykreslovalo pomocí vektorů – jen tak je možné zajistit uspokojivé vykreslení na perových plotterech). Při použití tohoto grafického adaptéru bylo pomocí dodávané programové knihovny (ve své podstatě se jednalo o rozsáhlé rozšíření BIOSu) nazvané AI-Adapter Interface (s umělou inteligencí tato knihovna samozřejmě nemá nic společného) podporováno vykreslování základních geometrických tvarů, jakými jsou například úsečka, lomená čára (polyčára), polygon nebo kružnice. Kromě toho obsahoval tento grafický adaptér také podpůrný modul pro rychlé vykreslování rastrových obrazců pomocí operací typu BitBlt – Bit Block Transfer. Byla také dodržena částečná zpětná kompatibilita s grafickými adaptéry typu VGA (viz předchozí díl tohoto seriálu), což bylo důležité pro zaručení funkčnosti adaptéru v mnoha aplikacích, které byly vytvořeny právě pro tento rozšířený typ grafických karet.

2. Konfigurace grafické karty IBM 8514/A

Grafický adaptér IBM 8514/A byl do výpočetního systému zapojován jako přídavná (tj. druhá) grafická karta. Toto řešení, zejména způsob „sériového” napojení karet do jednoho monitoru, bylo nazýváno AVE – Auxiliary Video Extension. Primární kartou nainstalovanou v počítači byl většinou grafický adaptér VGA, který zajišťoval podporu základních i rozšířených textových a grafických režimů. Přídavná karta IBM 8514/A dokázala generovat rastrový obraz pouze v rozlišení 1024×768 pixelů prokládaně (interlaced) nebo v režimu 640×480 pixelů neprokládaně (non-interlaced). Barevná hloubka dosahovala podle kapacity nainstalované video paměti na tomto adaptéru buď šestnácti, nebo 256 současně zobrazitelných barev. V grafickém režimu s vyšším rozlišením (tj. 1024×768 pixelů) se řádková frekvence rovnala 38 kHz, snímková frekvence však byla rovna pouhým 43,5 Hz (IBM o tomto rozlišení tvrdila, že má obnovovací frekvenci rovnu 88 Hz, ovšem prokládaně). V nižším grafickém rozlišení (tj. 640×480 pixelů) byla obrazová frekvence stejná jako na kartě VGA ve stejném grafickém režimu, tj. 60 Hz. Kromě zmíněných dvou grafických režimů neumožňovala tato grafická karta zobrazovat ani textové režimy, ani další grafické režimy – vše ostatní tedy muselo být zobrazováno pomocí primární grafické karty. Tento způsob kooperace dvou grafických karet se ukázal jako výhodný, protože IBM 8514/A mohla být díky tomu poměrně jednoduchá, práce v grafických režimech je totiž o mnoho jednodušší než v režimech textových.

Hardwarová konfigurace této grafické karty je taktéž velmi zajímavá. Pro synchronizaci sériového čtení jednotlivých pixelů z video paměti během zobrazování snímku jsou použity dva krystaly, první má rezonanční frekvenci „vybroušenou” na 44,9 MHz, druhý má frekvenci nastavenou na 25,175 MHz. Vyšší frekvence se používala u rozlišení 1024×768, nižší frekvence je plně kompatibilní s grafickou kartou VGA (viz předchozí díl tohoto seriálu, kde je podrobně uvedeno časování v grafických režimech). Kapacita video paměti byla rovna buď 1 MB, nebo 1,5 MB – podle instalované kapacity se odvozoval i počet maximálně zobrazitelných barev. Zjednodušené schéma grafického adaptéru IBM 8514/A spolu s jeho připojením do počítače je zobrazeno na následujícím obrázku:

GFX 15

Zjednodušené schéma grafického adaptéru IBM 8514/A

3. Klony IBM 8514/A a další vývoj grafických karet na počítačích PC

Design grafické karty IBM 8514/A byl samozřejmě kopírován různými výrobci periferních zařízení. Mezi úspešné klony, které v ledasčem svůj originál převyšují, patří například grafické karty ATI 38800 (Mach 8), ATI 68800 (Mach 32), Chips and Technologies 82c480, Paradise WD95C00 a Paradise WD95C01. Většina klonů byla připojitelná do sběrnice ISA či VLB, zatímco originální karta IBM 8514/A byla dostupná, jak již víme z předchozích odstavců, pro sběrnici MCA.

Vzhledem k omezením, která tato grafická karta měla (zejména kvůli závislosti na primární grafické kartě), se však další výrobci grafických karet zaměřili především na rozšiřování funkcionality původní grafické karty VGA. Výsledkem jsou grafické karty označované jako Super VGA, zkráceně SVGA. Nejedná se však o žádný oficiální standard, pouze o označení grafických karet, které nabízejí vyšší rozlišení či počet současně zobrazitelných karet než karta VGA.

4. Následníci grafické karty VGA v podobě SVGA

Termínem SVGA nebo také Super VGA jsou obecně označovány všechny grafické karty vytvořené pro počítače řady IBM PC, které umožňovaly či umožňují používat rozšířené grafické režimy, tj. režimy s rozlišením vyšším, než je nejvyšší rozlišení karty VGA: 640×480 pixelů. Tyto karty současně mohou podporovat režimy s vyšším počtem barev, v některých případech je dostupná patnáctibitová, šestnáctibitová či dokonce čtyřiadvacetibitová barevná hloubka. Podívejme se nyní blíže na možnosti, které grafické karty typu SVGA nabízejí.

Každá grafická karta typu SVGA by měla být zpětně kompatibilní s kartou VGA, a to jak organizací video paměti do bitových rovin, tak i časováním horizontálních a vertikálních synchronizačních signálů a v neposlední řadě významem řídicích registrů. Ne všechny grafické karty SVGA jsou kompatibilní na sto procent, většina funkcí z původní VGA však zůstává zachována, zejména způsob nastavení základních textových a grafických režimů pomocí funkcí BIOSu a metody přístupu do video paměti při čtení či zápisu barev jednotlivých pixelů.

Grafické karty SVGA nabízejí grafické režimy s vyšším rozlišením než 640×480 pixelů, typicky jsou dostupná rozlišení 800×600 pixelů a 1024×768 pixelů. Tyto režimy je možné používat s různou barevnou hloubkou a s různou obnovovací frekvencí obrazu i řádkovou frekvencí. Minimálním základem pro všechny rozšířené grafické režimy je zobrazení šestnácti barev – v tomto případě postačuje pro grafický režim 800×600×16 kapacita video paměti 256 kB, což odpovídá původním grafickým kartám typu VGA. Pokud je použit grafický režim s vyšším rozlišením či větší barevná hloubka, musí se patřičně zvýšit i kapacita video paměti, která tak postupně dosahovala hodnot 512 kB, 1 MB, 2 MB atd. (stále bereme v úvahu kapacitu nutnou pro zobrazení pouze jednoho rastrového obrázku, v případě použití předního a zadního bufferu se samozřejmě kapacita video paměti musí dále zvyšovat). Principy přístupu do obrazové paměti budou popsány v následující kapitole.

5. Přístup do obrazové paměti u karet SVGA

V grafickém režimu 800×600×16 je možné při čtení či zápisu jednotlivých pixelů použít klasický přístup přes bitové roviny. Je to možné z toho důvodu, že počet pixelů v jedné bitové rovině je při tomto rozlišení roven 480000, což odpovídá 60000 bytům, tj. zhruba kapacitě jedné bitové roviny (připomeňme si, že barvy pixelů jsou umístěny ve všech čtyřech barvových bitových rovinách). Podobný případ nastává u grafického režimu 640×400×256, který je většinou možné (nestandardními postupy) nastavit tak, aby se choval jako minule popsaný Mód X, tj. dva sousední pixely jsou vždy uloženy ve dvou nezřetězených bitových rovinách.

Problémy však nastávají ve všech ostatních rozšířených grafických režimech, například v režimu 1024×768×16, 640×480×256 či 800×600×256, a samozřejmě u všech režimů s větší barvovou hloubkou. Zde se již překračuje adresovatelná kapacita jednotlivých bitových rovin, proto se přístup do obrazové paměti musí řešit odlišným způsobem. V reálném režimu procesoru (tj. zejména v DOSu) je nutné použít takzvané paměťové banky. Jejich princip spočívá v tom, že se pomocí konfiguračních registrů grafické karty zvolí, do které paměťové banky se mohou zapisovat pixely a ze které paměťové banky se budou pixely číst – čtení a zápis může obecně probíhat v odlišných bankách. Celá video paměť je potom rozdělena do pruhů, každý pruh odpovídá jednomu paměťovému banku. Zápis pixelu se touto organizací video paměti podstatným způsobem komplikuje, protože je nejdříve nutné rozhodnout, do kterého banku čtený či zapisovaný pixel padne, tento bank se posléze vybere, a teprve poté je již možné provést čtení/zápis. I při vykreslování spritů může nastat případ, kdy různé části spritu padnou do jiného banku.

Situace se poněkud zlepšuje v chráněném režimu procesoru – tam je totiž možné celou video paměť „virtuálně” mapovat do jednoho souvislého paměťového úseku, který se nachází za nejvyšší adresou operační paměti. Paměťové banky jsou sice stále fyzicky přítomné (tj. musí se přepínat), ale aplikace je nemusí ovládat přímo – ve skutečnosti o jejich přítomnosti nemusí vůbec vědět. Pokud se totiž provede zápis do oblasti video paměti, která neodpovídá aktuálně nastavenému banku, dojde k výjimce (jsme v chráněném režimu, oblasti čtení a zápisu se definují pomocí deskriptorů), kterou odchytí ovladač grafické karty, ten potřebný bank nastaví a zápis posléze provede. Novější grafické karty řady SVGA, zejména ty, které jsou připojeny na sběrnici PCI, nemusí banky používat vůbec, tam je možné celou grafickou paměť mapovat do adresové oblasti procesoru. Konkrétní počáteční adresa se nastaví při inicializaci zařízení typu plug-and-play, bližší informace o práci sběrnice PCI jsou uvedeny v desáté části tohoto seriálu).

Ovládání banků (a současně i jejich velikost) je však závislá na typu grafické karty, tj. například karta Trident 8900 (ve své době velmi oblíbená) se ovládá jiným způsobem než karta OTI či Chips and Technologies. Chaos v ovládání grafických karet v rozšířených grafických režimech částečně odstranila až norma VESA, která je popsána v sedmé kapitole.

6. Grafická karta XGA – prozatím poslední pokus IBM

Grafická karta XGA (Extended Graphics Architecture)) začala být prodávána firmou IBM v roce 1990. Jednalo se o reakci na vzrůst počtu typů grafických karet typu SVGA od různých výrobců. Poměrně brzy však začalo být patrné, že firma IBM nedokáže držet krok s ostatními výrobci grafických čipů, kteří doslova chrlili jednu novinku za druhou (již tato grafická karta se na trhu objevila pozdě, zejména v porovnání s konkurencí). Grafická karta XGA je tedy prozatím poslední významnou grafickou kartou, kterou dodává firma IBM pro počítače PC. Novější počítače IBM jsou již dodávány s jinými grafickými čipy – osobně mám například na stole postarší počítač IBM Personal Computer 300PL s procesorem Pentium PIII, na jehož základní desce je přitom zabudovaný grafický čip od firmy S3, konkrétně Trio 3D.

Grafická karta XGA podporuje poměrně velké množství textových a grafických režimů včetně režimů svých předchůdců, tj. karet CGA, EGA a VGA. V grafickém režimu s nejvyšším rozlišením je možné zobrazit rastr 1024×768 pixelů v 256 barvách. Díky tomuto režimu bylo nutné, aby byla kapacita video paměti rovna minimálně 1 MB, kapacitu však bylo možné také zvýšit a zbylou video paměť využít pro další účely, například scrolling či double buffering. V současné době se zkratka XGA – poněkud nepřesně – používá právě pro označení grafických režimů s rozlišením 1024×768 pixelů. Toto označení můžeme vidět například na projektorech či noteboocích.

7. Standard VESA aneb částečné zmírnění chaosu na trhu s grafickými kartami

V předchozích dvou kapitolách jsme si popsali grafické karty typu SVGA a XGA. Tyto karty nabízely poměrně mnoho funkcí i grafických režimů, jejich největší nevýhodou však byla vzájemná nekompatibilita – neexistoval jednotný způsob nastavení rozšířených grafických režimů, lišily se režimy přístupu do video paměti, způsob přepínání paměťových banků apod. IBM se nastálý chaos pokusila vyřešit uvedením grafické karty XGA, ta se však, jak již víme z předchozí kapitoly, objevila na trhu poměrně pozdě a ostatní výrobci grafických čipů tuto kartu celkem úspěšně ignorovali a navrhovali si vlastní řešení a pseudostandardy. Výsledkem poměrně rychlého vývoje grafických karet tak bylo paradoxně zaostávání aplikací za technickými možnostmi grafických karet, protože softwarové firmy z celkem pochopitelných důvodů reagovaly na nové výrobky se zpožděním – tento stav, který začal být evidentní v devadesátých letech minulého století, ostatně trvá dodnes a netýká se pouze grafických karet, ale veškerého technického příslušenství počítačů.

Kromě pokusu firmy IBM o řešení zmatku v grafických kartách se objevil i standard navržený sdružením VESA (Video Electronics Standards Association). Do tohoto sdružení se dříve či později zapojili prakticky všichni výrobci grafických čipů a významné softwarové firmy. Výsledkem práce tohoto sdružení bylo několik verzí norem, které byly v počítačové literatuře zkráceně nazývány pouze termínem VESA, například VESA 1.1 či VESA 2.0. V těchto normách byly uvedeny zejména čísla rozšířených grafických režimů tak, aby je bylo možné nastavit pomocí služeb takzvaného VESA BIOSu. Kromě toho byly specifikovány služby pro zjištění parametrů grafických karet, tj. výrobce grafického čipu, typu grafické karty, podporovaných rozlišení a podporovaných obnovovacích frekvencí obrazu (některé grafické režimy bylo možné zobrazovat s odlišnými frekvencemi vertikálních a horizontálních synchronizačních signálů). Kromě toho je specifikováno uspořádání grafických dat v obrazové paměti a způsob přepínání jednotlivých banků v reálném režimu procesoru. Pozdější norma VESA obsahovala i doporučení o (alespoň virtuálně) lineárním uspořádání obrazové paměti v chráněném režimu. Výše zmíněný VESA BIOS může být implementován buď přímo na grafické kartě, nebo přes ovladač grafické karty, který je typicky dodávaný třetím výrobcem, protože mnoho výrobců grafických čipů tyto ovladače kupodivu nedodává.

Standard VESA byl v minulosti použit zejména v operačním systému DOS, v dnešní době má význam pouze jako nejmenší společný prvek, který by (alespoň teoreticky) měly podporovat všechny moderní grafické karty – z toho také mimo jiné vyplývá, že X-server s podporou VESA by měl být funkční na prakticky všech počítačích typu PC, jeho reálná použitelnost je však vinou pomalé práce s video pamětí diskutabilní.

CS24_early

8. Obsah dalšího pokračování tohoto seriálu

V navazujícím pokračování tohoto seriálu si popíšeme způsob práce grafických akcelerátorů určených pro urychlení vizualizačních a grafických algoritmů, zejména pro vykreslování plošných primitiv, rastrových obrázků a zpracování videa. Jedná se o funkce, které jsou do jisté míry podporovány i na nejnovějších grafických akcelerátorech, jejichž určení však směřuje téměř výhradně do 3D prostoru.

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.