Hlavní navigace

Od grafického adaptéru VGA ke kartám SVGA

3. 12. 2009
Doba čtení: 11 minut

Sdílet

V dnešní části seriálu o architekturách počítačů budeme pokračovat v popisu vývoje grafických karet určených pro počítače PC. Zaměříme se především na ty grafické karty, které jsou zpětně kompatibilní se standardem VGA, ale kromě kompatibility s VGA nabízí svým uživatelům i další nové vlastnosti, především textové a grafické režimy s vyšším rozlišením nebo rychlejší přístup do video paměti.

Obsah

1. Od grafického adaptéru VGA ke kartám SVGA

2. Společné vlastnosti grafických karet SVGA

3. Organizace obrazové paměti v šestnáctibarevném režimu 800×600

4. Paměťové banky u grafických režimů s vyšším rozlišením a počtem barev

5. Nestandardní grafický režim Xtended

6. Nastavení grafických a textových režimů SVGA

7. Standard VESA aneb částečné zmírnění chaosu

8. Odkazy na Internetu

1. Od grafického adaptéru VGA ke kartám SVGA

V předešlých částech seriálu o architekturách počítačů jsme si popsali jak vlastnosti grafické karty VGA, tak i vlastnosti některých starších grafických akcelerátorů určených především pro profesionální použití, například pro aplikace typu CAD. Kromě těchto specializovaných (a také poměrně drahých) akcelerátorů však začaly vznikat i grafické karty určené pro běžné uživatele – jednalo se o relativně levné karty vhodné například pro kancelářské aplikace a hry, jenž byly nezávisle na sobě vyvíjeny několika výrobci (celkem se jednalo o cca 20 firem, které se později navzájem slučovaly). Tyto grafické karty se začaly označovat zkratkou SVGA (Super VGA), ale oproti kartám firmy IBM popsaných v předchozích částech tohoto seriálu (MDA, CGA, EGA, MCGA a VGA) nebyly karty SVGA i přes jednotné označení navzájem plně kompatibilní – týkalo se to jak různých metod nastavování textových a grafických režimů, tak i rozličných způsobů přístupu do obrazové paměti a v neposlední řadě i rychlosti přístupu k obrazové paměti a z toho vyplývajících řádkových a obrazových frekvencí.

pc90

Obrázek 1: Grafická karta Trident 8916 osazená max. 1 MB video paměti (viz volné místo pro paměťové moduly vlevo nahoře), která je určená pro šestnáctibitovou sběrnici ISA.

2. Společné vlastnosti grafických karet SVGA

Společným znakem většiny grafických karet SVGA je podpora nových textových a především grafických režimů, které mají vyšší rozlišení než grafické režimy karty VGA, popř. i vyšší počet barev. Připomeňme si, že u grafické karty VGA bylo možné nastavit hned několik standardních grafických režimů, především šestnáctibarevný režim s rozlišením 640×480 pixelů a 256barevný režim s rozlišením 320×200 pixelů (na tomto režimu byly postavené i další nestandardní 256barevné režimy s rozlišeními od 320×240 až cca 400×300 pixelů). Naproti tomu bylo možné u většiny karet SVGA použít 256 barev i u režimu s rozlišením 640×480 pixelů, popř. šestnác­tibarevný režim 800×600. Později, spolu s růstem kapacity i rychlosti paměťových modulů použitých pro obrazovou paměť, se začala objevovat i podpora pro grafické režimy s vyšším rozlišením, popř. pro módy s patnáctibitovou (32768 barev), šestnáctibitovou (65536 barev) či dokonce 24bitovou (16 milionů barev) barevnou hloubkou.

pc90

Obrázek 2: Firma S3 vyráběla grafické čipy i v dobách kralování šestnáctibitové sběrnice ISA a třicetidvoubitové sběrnice VESA Local Bus. Na tomto obrázku je vyfocena grafická karta určená právě pro sběrnici VLB – VESA Local Bus s grafickým čipem firmy S3.

Každá grafická karta typu SVGA by měla být zpětně kompatibilní s kartou VGA, a to jak způsobem organizace 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ů (což mj. znamená, že by tyto karty měly být schopné pracovat i ve všech nestandardních režimech VGA). Ne všechny grafické karty SVGA jsou kompatibilní na sto procent, většina funkcí z původní VGA však zůstává (dodnes) zachována, zejména způsob nastavení základních textových a grafických režimů pomocí funkcí BIOSu a metod přístupu do video paměti při čtení či zápisu barev jednotlivých pixelů. Zpětná kompatibilita byla důležitá především v dobách DOSu, kdy existovalo velké množství aplikací, především her, které přímo manipulovaly s řídicími registry grafické karty, popř. nastavovaly nestandardní grafické režimy. Vzhledem k tomu, že v DOSu prakticky neexistovala podpora pro jednotnou práci s grafikou, byly graficky zaměřené aplikace dodávány spolu s ovladači různých karet (příkladem může být AutoCAD, WordPerfect atd.). Později byl kvůli jednotnosti zaveden standard VESA, který si popíšeme v následujících kapitolách.

pc90

Obrázek 3: Hra Warcraft II využívala grafického režimu SVGA s rozlišením 640×480 pixelů.

3. Organizace obrazové paměti v šestnáctibarevném režimu 800×600

V první kapitole jsme si řekli, že grafické karty SVGA se od standardního grafického adaptéru VGA odlišovaly mj. i v tom, že podporovaly textové a grafické režimy s vyšším rozlišením či vyšším počtem současně zobrazitelných barev. Prvním novým grafickým režimem byl šestnáctibarevný režim s rozlišením 800×600 pixelů. U tohoto režimu bylo možné pro organizaci obrazové paměti použít již zavedený přístup spočívající v použití čtveřice bitových rovin. Je to možné především z toho důvodu, že počet pixelů je v tomto grafickém režimu roven 800×600=480000, což znamená, že v každé bitové rovině je nutné alokovat 480000/8=60000 bajtů (barva každého pixelu je určena na základě čtyř bitů, přičemž každý bit je uložený v jiné bitové rovině). Vzhledem k tomu, že 60000 bajtů je adresovatelných v rámci 64 kB a obrazová paměť je mapována do adresového prostoru 0×A000:0000 až 0×A000:FFFF (tj. právě 64 kB), spočívá jediný rozdíl od standardního VGA režimu s rozlišením 640×480 pixelů v odlišném počtu bajtů na jednom obrazovém řádku (samozřejmě také muselo dojít ke změně řádkové a snímkové frekvence). Navíc bylo možné tento režim použít i u karet vybavených pouhými 256 kB video paměti.

pc90

Obrázek 4: Šestnáctibarevný režim s rozlišením 800×600 pixelů se uplatnil například v CADech či textových procesorech pracujících v grafickém režimu (z našich textových editorů byl tento grafický režim podporován například MATem).

4. Paměťové banky u grafických režimů s vyšším rozlišením a počtem barev

U výše popsaného šestnáctibarevného režimu s rozlišením 800×600 pixelů se používala stejná organizace video paměti jako u grafické karty VGA, tj. obrazová paměť byla rozdělena do čtyř bitových rovin a každá rovina měla kapacitu 64 kB. 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 se již překračuje adresovatelná kapacita jednotlivých bitových rovin (jejich maximální velikost je rovna 64 kB kvůli omezení vynuceného DOSem a reálným režimem procesorů Intel řady 8086). Z tohoto důvodu se přístup do obrazové paměti musí v těchto případech ř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 z které paměťové banky se budou pixely číst – čtení a zápis může obecně probíhat v odlišných bankách (záleží to na vlastnostech grafické karty).

pc90

Obrázek 5: Grafická karta Trident VGA 9000.

Celá video paměť je v tomto případě rozdělena do pruhů (strips), kde 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í či zápis (přepínaní banků je relativně pomalé, takže tento způsob vykreslování pixelů je značně neefektivní). 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, jenž potřebný bank nastaví a zápis či čtení posléze skutečně provede.

Novější grafické karty řady SVGA, zejména ty, které jsou připojeny na sběrnici PCI, nemusí banky používat vůbec, jelikož je v tomto případě 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. Ovládání banků (a současně i jejich velikost) je však závislá na typu grafického čipu, tj. například karta Trident 8900 (ve své době velmi oblíbená, viz další část tohoto seriálu) se ovládá odlišný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, jejíž princip je popsaný v dalším textu.

5. Nestandardní grafický režim Xtended

V encyklopedii PCGPE (viz odkazy v poslední kapitole) byl uveden způsob práce v nestandardním grafickém režimu nazvaném Xtended. Jedná se o grafický režim s rozlišením 640×400 pixelů s 256 barvami. Tento režim je nejdříve nastaven pomocí volání služeb BIOSu dané grafické karty – číslo tohoto grafického režimu se liší podle toho, o jaký grafický čip se jedná. Po inicializaci grafického režimu je však proveden nestandardní a poměrně nápaditý krok – řídicí registry grafické karty se nastaví tak, jak je tomu u X-módu, tj. je vypnuto zřetězení bitových rovin, povoleno adresování pixelů po slovech atd. Výsledkem tohoto kroku je, že programátor má k dispozici čtyři bitové roviny organizované tímtéž způsobem jako v režimu X. V každé bitové rovině je obsazeno 640×400/4=64000 bajtů z dostupných 65536 bajtů, to znamená, že tento netradiční způsob práce s obrazovou pamětí není možné použít například u běžnějšího režimu s rozlišením 640×480 pixelů. Zajímavé je, že režim Xtended funguje na většině tehdejších grafických karet SVGA, i když přístup do pamětí přes bitové roviny je na první pohled zcela odlišný od přístupu pomocí přepínaných paměťových banků.

pc90

Obrázek 6: Známá hra Duke 3D běžící v režimu s rozlišením 800×600 pixelů.

6. Nastavení grafických a textových režimů SVGA

Již v předchozí kapitole jsem se zmínil o tom, že grafické a textové režimy karet SVGA je možné nastavit pomocí služeb BIOSu, konkrétně služby číslo 10. Jedná se sice o stejnou službu, jaká se používá pro nastavení standardních grafických režimů karet MDA, CGA, EGA, MCGA či VGA, ovšem s jedním podstatným rozdílem – zatímco u všech zmíněných grafických karet jsou režimy definovány přímo firmou IBM (a ostatní výrobci je v zásadě dodržovali), u karet SVGA již firma IBM neměla takové postavení, aby mohla čísla jednotlivých režimů předepsat. Výsledkem bylo, že si každý výrobce zvolil vlastní čísla grafických režimů z dostupných cca 100 kombinací (číslo režimu se předávalo v jednom bajtu, nejvyšší bit určoval, zda se má vymazat obrazová paměť, prvních 19 režimů definovala právě firma IBM). V následujících tabulkách jsou pro ilustraci vypsány režimy některých známých grafických karet:

Čip Tseng ET4000:

Číslo režimu Rozlišení Počet barev
25h 640×480 16
29h 800×600 16
2Dh 640×350 256
2Eh 640×480 256
2Fh 640×400 256
30h 800×600 256
37h 1024×768 16
38h 1024×768 256

Grafické karty Paradise (čipy WDC90cxx):

Číslo režimu Rozlišení Počet barev
58h 800×600 16
59h 800×600 2
5Eh 640×400 256
5Fh 640×480 256
5Ah 1024×768 2
5Bh 1024×768 4
5Dh 1024×768 16
5Ch 800×600 256

Grafické karty Trident (čipy 8900 a 9000):

Číslo režimu Text/grafika Rozlišení Počet barev
50h T 80× 30 16
51h T 80× 43 16
52h T 80× 60 16
53h T 132× 25 16
54h T 132× 30 16
55h T 132× 43 16
56h T 132× 60 16
57h T 132× 25 16
58h T 132× 30 16
59h T 132× 43 16
5Ah T 132× 60 16
5Bh G 800×600 16
5Ch G 640×400 256
5Dh G 640×480 256
5Eh G 800×600 256
5Fh G 1024×768 16
60h G 1024×768 4
61h G 768×1024 16
62h G 1024×768 256

7. Standard VESA aneb částečné zmírnění chaosu

V předchozích kapitolách jsme si popsali základní vlastnosti karet SVGA. 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. Firma IBM se sice nastálý chaos pokusila vyřešit uvedením grafické karty XGA, ta se však, jak si řekneme v navazující části seriálu, 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čů.

pc90

Obrázek 7: Grafická karta vybavená čipem Trident VGA 8900.

Kromě pokusu firmy IBM o řešení chaosu v ovládání grafických karet 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ětší 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 byla uvedena 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 bylo 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ávalo (popř. dodávalo jen BIOS pro starší normu VESA 1.1). 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 díky pomalé práci s video pamětí diskutabilní (viz například posun obsahu okna bez podpory grafické akcelerace).

CS24_early

pc90

Obrázek 8: Slavná hra Transport Tycoon Deluxe využívající grafický režim s rozlišením 640×480 pixelů.

8. Odkazy na Internetu

  1. PC Game Programmer's En­cyclopedia
    http://www.qzx.com/pc-gpe/
  2. Xtended Mode – Unchained 640×400×256
    http://www.bluemg.de/…xtended.html
  3. PC-GPE: Tseng
    http://www.qzx.com/…pe/tseng.txt
  4. PC-GPE: Trident
    http://www.qzx.com/…/trident.txt
  5. ISA Video Cards and Graphic Accelerators
    http://www.baber.com/…eo_cards.htm
  6. Number Nine Visual Technology: Imagine 128 Series 2
     http://stason.org/…128-SER.html
  7. #9GXI LITE video card Settings and Configuration
     http://stason.org/…XI-LITE.html
  8. Oak Technology
    http://en.wikipedia.org/…k_Technology
  9. Computer Hardware: Information about Number Nine Video Cards
     http://www.computerhope.com/help/vnine.htm
  10. Number Nine ships the first 128-bit Graphics Accelerator Board
     http://www.encyclopedia.com/…5918685.html
  11. Number Nine Visual Technology
    http://en.wikipedia.org/…l_Technology

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.