Hlavní navigace

Grafické akcelerátory IBM 8514/A a TIGA

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

Sdílet

V dnešní části seriálu o architekturách počítačů navážeme na předchozí díl, ve kterém byl popsán první grafický akcelerátor pro počítače IBM PC – „trojkarta“ PGC. Dnes si popíšeme další dva grafické akcelerátory, jež se od sebe v mnoha ohledech liší. Jedná se o IBM 8514/A se specializovaným čipem a kartu TIGA vybavenou programovatelným grafickým procesorem.

Obsah

1. Grafický akcelerátor IBM 8514/A

2. Grafické režimy podporované na originálním monitoru 8514/A

3. Konfigurace grafického akcelerátoru IBM 8514/A

4. Funkce nabízené grafickým akcelerátorem IBM 8514/A

5. Grafické karty zpětně kompatibilní s IBM 8514/A: ATI Mach 8 a ATI Mach 32

6. Grafický akcelerátor TIGA

7. Grafický procesor TMS32010

8. Rastrové operace a instrukce specializované pro práci s grafikou

9. Odkazy na Internetu

1. Grafický akcelerátor IBM 8514/A

Grafický akcelerátor IBM 8514/A byl navržen, podobně jako minule popsaný akcelerátor PGC, firmou IBM, která ho začala nabízet již v roce 1987 ve formě rozšiřující karty do počítačů IBM PS/2, které byly povětšinou vybaveny grafickým adaptérem VGA popř. u nejlev­nějšího modelu i adaptérem MCGA. Vzhledem k tomu, že se v počítačích IBM PS/2 používala pouze sběrnice MCA (Micro Channel Architecture), byl grafický akcelerátor 8514/A určený právě pro tuto sběrnici, což se však negativně projevilo na jeho poměrně malém rozšíření mezi uživateli (sběrnice MCA nemohla být „klonována“ tak, jako ISA, protože IBM vyžadovala za její použití poplatky, což je škoda, protože z technologického hlediska se jednalo o velký krok kupředu). Důvodů relativně malého rozšíření IBM 8514/A však bylo více – vedle poměrně vysoké ceny grafického akcelerátoru (3000 dolarů i s monitorem) byla problematická i uzavřenost celého systému, nutnost instalace „běžné“ grafické karty spolu s tímto grafickým akcelerátorem a taktéž podpora pouze prokládaného řádkování u grafického režimu s vysokým rozlišením.

pc89

Obrázek 1: Osobní počítač PS/2 vybavený grafickým adaptérem VGA i grafickým akcelerátorem 8514/A. Povšimněte si, že PS/2 neobsahovaly sběrnici ISA, což bylo nepraktické ve chvíli, kdy uživatel potřeboval pracovat se specializovanou ISA kartou.

Nicméně přes výše uvedené nedostatky se IBM 8514/A stal známým grafickým akcelerátorem podporovaným v minulosti prakticky všemi významnými profesionálními grafickými aplikacemi (například AutoCADem, programem pro přípravu prezentací Harvard Graphics, operačními systémy Microsoft Windows a dodnes i ovladači pro X-Window), protože další výrobci grafických karet navrhli čipy, které jsou s IBM 8514/A zpětně kompatibilní. Tyto čipy byly následně použity v grafických kartách určených pro sběrnici ISA a později i EISA, Vesa Local Bus (VLB) či PCI. Jedná se především o grafické karty postavené na čipech ATI Mach 8 a ATI Mach 32, kterým je v tomto článku věnována samostatná kapitola.

pc89

Obrázek 2: Grafický akcelerátor IBM 8514/A (nahoře) a rozšiřující karta (dole) s paměťovými moduly.

2. Grafické režimy podporované na originálním monitoru 8514/A

Grafický akcelerátor IBM 8514/A obsahoval dvojici krystalů použitých při generování obrazu pro vytváření horizontálních i vertikálních synchronizačních signálů i pro řízení přístupu do obrazové paměti. První krystal s rezonančním kmitočtem 25,175 MHz byl použit v grafickém režimu s rozlišením 640×480 pixelů a obrazovou frekvencí 60 Hz. Jedná se o režim kompatibilní s předminule popsanou grafickou kartou VGA. Druhý krystal s rezonančním kmitočtem 44,9 MHz byl využit při práci v grafickém režimu s rozlišením 1024×768 pixelů a prokládaným zobrazením obrazových řádků. Monitor dodávaný spolu s grafickým adaptérem IBM 8514/A (který mimochodem nesl stejné označení, tj. taktéž 8514), však musel umět zobrazovat i všechny standardní grafické režimy karty VGA, které jsou vypsány v následující tabulce. V některých případech (mód 720×400 pixelů) se jedná o rozlišení textových režimů. Poslední grafický režim má snímkovou frekvenci rovnu 43,5 Hz, ovšem díky prokládání sudých a lichých řádků se pracuje s půlsnímky (podobně jako v klasické televizi), jichž je za sekundu zobrazeno 87:

Horizontální rozlišení Vertikální rozlišení Obrazová frekvence (V-sync) Frekvence H-sync
640 350 70 31.5
640 400 70 31.5
640 480 60 31.5
720 350 70 31.5
720 400 70 31.5
1024 768 87 (43,5 prokl.). 35.5

Vzhledem k tomu, že monitor IBM 8514/A nedokázal, na rozdíl od současných multifrekvenčních monitorů, automaticky rozeznat právě aktivní grafický režim, bylo nutné, aby ho o nastaveném režimu informovala přímo grafická karta. Inženýři z firmy IBM tento problém (který se ostatně vyskytoval již karet EGA a především VGA) vyřešili následujícím způsobem – monitor dokázal rozeznat počet obrazových řádků z polarity vertikálních a horizontálních synchronizačních signálů. Na základě těchto hodnot se změnila časová základna vertikálního vychylování. Informaci o nastaveném horizontálním rozlišení nebylo nutné přenášet, protože CRT monitory nerozeznávaly jednotlivé pixely – celý obrazový řádek byl na straně monitoru považován za konstantní dobu trvající spojitý signál (resp. tři signály – pro každou barvovou složku jeden) ukončený horizontálním synchronizačním pulsem. V následující tabulce jsou vypsány všechny čtyři standardní vertikální rozlišení:

Vertikální sync Horizontální sync Počet obrazových řádků
V+ H+ 350
V+ H- 400
V- H- 480
V+ H- 768

K výše uvedené tabulce je vhodné říci dvě poznámky: grafický režim karty VGA s rozlišením 320×200 pixelů je identifikován jako režim s 400 obrazovými řádky (řádky mají dvojitou tloušťku); podobně předminule zmíněný X-mode je identifikován jako režim s 480 obrazovými řádky. Mnohé další monitory a grafické karty používaly stejný způsob přenosu vertikálního rozlišení, ostatně možnost změny polarit synchronizačních signálů byly dostupné i v populárním U­niVBE (rezidentním programu, který zpřístupňoval grafické funkce definované ve standardu VESA i na starších grafických kartách).

3. Konfigurace grafického akcelerátoru IBM 8514/A

Grafický akcelerátor IBM 8514/A byl do osobního počítače připojován jako přídavná (tj. v podstatě druhá) grafická karta. Toto řešení, zejména způsob „sériového“ napojení karet s výstupem na jeden monitor, bylo nazýváno AVE – Auxiliary Video Extension a o mnoho let později se s ním uživatelé mohli setkat u prvních 3D akcelerátorů (Voodoo). 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ů (to bylo důležité, protože 8514/A například nepodporoval textové režimy a ani nebyl ovládán přes BIOS, tj. počítač by nebylo možné bez primární grafické karty nabootovat ani ovládat). Akcelerátor IBM 8514/A dokázal generovat rastrový obraz pouze v rozlišení 1024×768 pixelů prokládaně (interlaced) nebo v režimu o rozlišení 640×480 pixelů neprokládaně (non-interlaced) – viz též předchozí kapitolu, ve které jsou uvedeny řádkové a snímkové frekvence použité u obou zmíněných grafických režimů.

Barevná hloubka dosahovala podle kapacity nainstalované video paměti ( 1 MB nebo 1,5 MB) na tomto adaptéru buď 16, nebo 256 současně zobrazitelných barev. 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 – obraz se generoval buď pomocí primární grafické karty (VGA) nebo jen pomocí 8514/A. V praxi tedy uživatelé některé moduly (obrazovou paměť, řadič CRT, sekvencér) museli mít v počítači zdvojené a tedy je i dvakrát zaplatit, i když v daný časový okamžik používali vždy jen jednu z karet. 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:

pc89

Obrázek 3: Zjednodušené schéma grafického akcelerátoru IBM 8514/A a způsob jeho zapojení do počítače (pro zjednodušení zde není uveden blok představující primární grafickou kartu).

4. Funkce nabízené grafickým akcelerátorem IBM 8514/A

Grafický akcelerátor IBM 8514/A patří do skupiny grafických systémů určených především pro aplikace typu CAD, tedy pro programy orientované převážně na zpracování a rychlé zobrazování vektorů (i písmo se v CAD systémech vykresluje, resp. v minulosti téměř výhradně vykreslovalo pomocí vektorů – jen tak bylo možné zajistit uspokojivé vykreslení na perových plotterech a současně rychlou práci s výkresem). Při použití tohoto grafického akcelerátoru bylo pomocí dodávané programové knihovny (v 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, kružnice nebo řetězec (v datových souborech AI se nacházely i bitmapové fonty se znaky v rozlišení 7×15, 8×14 a 12×20 pixelů).

pc89

Obrázek 4: Historický screenshot – jeden z prvních obrázků vypočítaných raytracingem (na superpočítači Cray doplněném několika VAXy), kterým se mohli kochat i majitelé 8514/A v plném rozlišení.

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. Na rozdíl od minule popsaného akcelerátoru PGC však měli programátoři přímý přístup do obrazové paměti, což je samozřejmě velmi důležité, zejména tehdy, když funkce nabízené AI nestačily pokrýt požadavky aplikací. Obrazová paměť byla organizována planárně – v grafickém režimu s rozlišením 1024×768 pixelů tedy bylo přístupných osm bitových rovin, do nichž mohl programátor přímo zapisovat údaje (složky pixelů) či si naopak tyto údaje zpětně přečíst.

pc89

Obrázek 5: Grafický akcelerátor IBM 8514/A je podporován i v MS Windows 3. Ostatně právě po uvedení tohoto akcelerátoru na trh se firma Microsoft rozhodla, že se rutiny pro řízení grafických karet přesunou z jádra Windows do ovladačů, protože 8514/A již nebyla zpětně kompatibilní s předchozími kartami.

5. Grafické karty zpětně kompatibilní s IBM 8514/A: ATI Mach 8 a ATI Mach 32

Design grafické karty IBM 8514/A byl samozřejmě kopírován různými výrobci periferních zařízení. Mezi úspěšné klony, které v mnoha ohledech svůj originál převyšují, patří například grafické karty postavené na čipech 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, VLB či později PCI, zatímco originální karta IBM 8514/A byla dostupná, jak již víme z předchozích kapitol, pouze pro nepříliš rozšířenou sběrnici MCA. Jednou z nejúspěšnějších grafických čipů zpětně kompatibilních s 8514/A je čip ATI Mach8 použitý například v grafických kartách Graphics Vantage, Graphics Ultra či VGA Wonder GT. Jedná se o čip, který nabízí zpětnou kompatibilitu s kartou VGA8514/A s tím, že je možné ho připojit jak ke sběrnici ISA, tak i MCA. Navíc lze pro obrazovou paměť použít paměťové moduly DRAM i VRAM (celková kapacita 256 nebo 512 kB), což znamenalo, že výrobci grafických karet mohli nad jedním čipem postavit hned několik výrobků s různou výkonností a samozřejmě i cenou.

pc89

Obrázek 6: Grafická karta určená pro sběrnici ISA, která obsahuje čip ATI Mach 8 a je tedy zpětně kompatibilní s dnes popisovaným grafickým akcelerátorem IBM 8514/A.

Druhým čipem zajišťujícím zpětnou kompatibilitu s 8514/A je čip ATI Mach 32 vyráběný od roku 1992. Tento čip bylo možné použít na grafických kartách určených pro sběrnici ISA, EISA, VESA Local Bus, MCA i PCI, nové grafické režimy mohly mít bitovou hloubku 15bpp, 16bpp či dokonce 24bpp a, podobně jako u předchozího čipu, i zde byly podporovány paměťové moduly DRAM i VRAM. Poněkud paradoxní je, že interní datová sběrnice pro přenos dat z a do obrazové paměti měla šířku 64 bitů, což bylo 2× více, než šířka datové sběrnice v hostitelském počítači. Tento čip byl použit mj. v následujících grafických kartách:

  • Graphics Wonder (DRAM)
  • Graphics Ultra + (DRAM, fast RAMDAC)
  • Graphics Ultra CLX (DRAM, cost-reduced OEM version)
  • Graphics Ultra Pro (VRAM)
  • Graphics Ultra XLR (VRAM, cost-reduced OEM version)
pc89

Obrázek 7: Grafická karta určená pro sběrnici VESA Local Bus, která obsahuje čip ATI Mach 32.

6. Grafický akcelerátor TIGA

Dalším známým a po technické stránce velmi zajímavým grafickým akcelerátorem je TIGA, což je zkratka plného názvu Texas Instruments Graphics Architecture. Tento akcelerátor je zajímavý především striktním oddělením video paměti (VRAM) z adresového prostoru mikroprocesoru a použitím specializovaného programovatelného grafického procesoru namísto „obyčejného“ procesoru (PGC) či pevně naprogramovaného čipu (8514/A). Vzhledem k tomu, že mikroprocesor nemá k této paměti přímý přístup, jsou veškeré vykreslovací operace řízeny grafickým procesorem (v této kartě se jedná o dále popsaný procesor TMS34010 nebo TMS34020 – pozor, neplést se slavnými signálovými procesory 32010). Oproti jednodušší grafické kartě IBM 8514A je u akcelerátoru TIGA také přítomna paměť, do které je možné nahrávat vlastní podprogramy pro řízení vykreslování. Tato paměť se podle svého významu nazývá Program RAM a po uvedení TIGA na trh vzniklo poměrně velké množství článků popisujících nové grafické algoritmy, které je možné na tomto akcelerátoru implementovat a spouštět.

Grafická karta TIGA podporovala grafický režim s rozlišením 1024×768 pixelů; na rozdíl od výše popsané karty IBM 8514/A se však obraz na monitoru zobrazoval neprokládaně, což mu zajistilo větší stabilitu (ostatně použití prokládaného režimu zrovna na kartě 8514/A je paradoxní, protože se jednalo o kartu určenou pro CAD systémy; přitom výkresy kreslené v CADech obsahují velké množství vodorovných úseček se šířkou jednoho pixelu, které při použití prokládaných režimů nepříjemně poblikávají). Zjednodušené schéma grafické karty TIGA je, spolu s jejím začleněním do celého výpočetního systému, uvedeno na následujícím obrázku:

pc89

Obrázek 8: Zjednodušené schéma grafického adaptéru TIGA

7. Grafický procesor TMS32010

Grafický procesor TMS34010 obsahuje 31 třiceti dvoubitových pracovních registrů rozdělených do dvou částí (banků), z nichž každá obsahovala 15 pracovních registrů a společný ukazatel na vrchol zásobníku (SP – stack pointer). Funkce pracovních registrů uložených v první skupině mohla být libovolná (jejich obsazení plně záviselo na programátorovi ovladače), avšak registry ve druhé skupině se používaly v průběhu některých grafických operací, například při přesunu bitmap (operace PixBlt) apod. Pokud programátor chtěl těchto patnáct pracovních registrů používat ve svých programech, musel sám zajistit korektní ukládání a obnovu jejich obsahu. Kromě zmíněných pracovních registrů a ukazatele na vrchol zásobníku obsahoval tento grafický procesor samozřejmě také čítač instrukcí o šířce 32 bitů. Vzhledem k tomu, že instrukce (resp. jejich operační kódy) byly vždy zarovnány na šestnáct bitů (dva bajty), byly nejnižší čtyři bity registru PC vždy nulové (procesor totiž na logické úrovni pracoval s jednotlivými bity, což je kvůli podpoře grafických režimů s různou bitovou hloubkou rozumné, i když na úrovni fyzické vždy adresoval šestnáctibitová slova).

Posledním registrem přístupným programátorům byl stavový registr, taktéž o šířce 32 bitů, který obsahoval jak klasické příznaky výsledků aritmetických a logických operací (N – negative, C – carry, Z – zero, V – overflow), tak i vícebitové hodnoty používané například při přesunech bitmap nebo při přístupu do obrazové paměti (zejména bylo možné nastavit bitovou hloubku v rozsahu 1 až 32 bitů na pixel). Pro urychlení vykonávání grafických operací obsahoval procesor TMS34010 i rychlou vyrovnávací paměť pro kódy instrukcí, která měla kapacitu 256 bajtů.

8. Rastrové operace a instrukce specializované pro práci s grafikou

Velmi zajímavý je instrukční soubor procesoru TMS34010. Kromě zcela běžných instrukcí, které programátor většinou očekává od 32bitového procesoru (aritmetické a logické instrukce, bitové posuvy a rotace, podmíněné i nepodmíněné skoky, práce se zásobníkem atd.) totiž tento procesor obsahoval i několik instrukcí určených především pro práci s grafikou. Jedná se zejména o instrukce, které chápaly obsah pracovního registru (třiceti dvoubitové číslo) jako dvojici šestnáctibitových souřadnic X a Y:

Instrukce Význam
ADDXY součet dvou registrů nebo registru a dvojice konstant po složkách (souřadnicích)
CMPXY porovnání --
SUBXY rozdíl --
MOVX přesun hodnoty souřadnice X do či z registru
MOVY přesun hodnoty souřadnice Y do či z registru

Dále o instrukce pro kreslení základních geometrických útvarů:

Instrukce Význam
LINE vykreslení úsečky
FILL výplň obrazce

A konečně poměrně složité instrukce provádějící blokové přesuny dat (pixelů) či operace nad blokem pixelů:

CS24_early

Instrukce Význam
PIXT pixel transfer
PIXBLT pixel block transfer

Při přesunech bloků pixelů se mohlo provádět maskování průhledných pixelů (v podstatě podpora spritů), kontrola, zda kopírované pixely náleží do specifikovaného obdélníkového okna, maskování obrázku bitovou rovinou atd. Právě podpora této grafické operace učinila z grafického akcelerátoru TIGA velmi zajímavý výrobek, který měl velký vliv na další vývoj grafických karet, především takzvaných „windows akcelerátorů“ (karet podporujících operace typu přesunu oken, maskování obdélníkovou oblastí atd.).

9. Odkazy na Internetu

  1. Texas Instruments Graphics Architecture
    http://en.wikipedia.org/…Architecture
  2. TMS34010
    http://en.wikipedia.org/wiki/TMS34010
  3. Trident SuperVGA
    http://world.std.com/…/trident.txt
  4. TMS34010 Graphics System Processor
    http://focus.ti.com/…ms34010.html
  5. TMS34020A Graphics Processor
    http://focus.ti.com/…s34020a.html
  6. 25 Microchips That Shook the World
    http://www.synbio.org.uk/…ws/1351.html
  7. IBM 8514
    http://en.wikipedia.org/wiki/IBM_8514
  8. IBM 8514 hardware
    http://pdos.csail.mit.edu/…doc/8514.TXT
  9. 8514/A info
    http://www.tavi.co.uk/…d/8514A.html

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.