Grafiskās Video Kartes (GPU) Attīstība (2001)


Grafiskā karte pēdējo gadu laikā ir strauji attīstijusies. Tā ir pāraugusi no visparastākās 2D kartes uz 3D, kā rezultātā mūsdienās ar datoru var apstrādāt un modelēt visdažādākos 3D objektus, tos var attēlot reālā telpā, vietā un kustībā. Respektīvi ir pavērusies liela multimediju iespēju pasaule, kura nepārtraukti attīstās. Tas par ko pirms dažiem gadiem atļāvāmies tikai sapņot šodien ir pārtapis realitātē. Bet visu no sākuma.

Parasta videokarte sastāv no četriem pamatmezgliem: atmiņas, kontroliera, RAMDAC un ROM.
Video atmiņa ir domāta attēlu glabāšanai. No tās apjoma ir atkarīga grafiskās kartes maksimālā izšķirtspēja: A*B*C, kur A – punktu skaits pa horizontāli, B – punktu skaits pa vertikāli, C – katra punkta iespējamais krāsu skaits. Piemēram, lai uzturētu izšķirtspēju 640*480*16 ir pietiekoši ar 256 KB, 800*600*256 ir pietiekoši ar 512 KB, 1024*768*64k ir pietiekoši ar 2 MB u.t.t.
No video kontroliera ir atkarīga video adaptera iespējas un ātrdarbība. Tas ir atbildīgs par attēla izvadīšanu no video atmiņas, signālu formēšanu priekš monitora un centrālā procesora pieprasījumu apstrādāšanu. Lai paātrinātu attēla izvadīšanu uz monitora un samazinātu konflikta rašanos griežoties pie atmiņas video kontrolierim un centrālajam procesoram, video kontrolierim ir neatkarīgs buferis, kur laikā, kad centrālais procesors negriežas pie tā, tiek uzkrāti dati no atmiņas. Ja tomēr rodas konflikts, tad kontrolieris aptur centrālā procesora griešanos pie video atmiņas, kas samazina sistēmas ātrdarbību. Lai to novērstu mūsdienās tiek uzstādītas tā sauktās divu portu atmiņa (VRAM, WRAM), kura atļauj pie atmiņas griezties vienlaicīgi diviem. Mūsdienās video kontroleru arhitektūra pēc sarežģītības maz atšķiras no centrālā procesora, bet reizēm to pat pārspēj tranzistora skaita ziņā. Mūsdienu video kontrolierim ir vairāki informācijas apstrādes bloki: 2D apstrādes bloks (kas sevī ietver SVGA kodolu un grafiskās apstrādes kodolu), 3D apstrādes bloks (kas parasti sevī ietver sevī virsotņu un virsmas aizpildījuma kodolus) un video datu apstrādes bloks. Bez tam noteikti ir video atmiņas kontrolieris un galveno kopņu porti (piemēram, AGP vai PCI). Video kontrolieris darbs parasti saistās ar daudzu grafiskas informācijas radīšanu un sajaukšanu. Parasti tas ir pamata attēls uz kura ir jāuzliek kursora attēls vai atsevišķs logs kurā attēlojas signāls, kurš nāk no TV-uztvērēja vai MPEG dekodera. Video kontrolieri ar plūsmas apstrādi, kā arī ar aparatūras atbalstu dažādu tipisku uzdevumu veikšanā sauc par akseleratoru vai paātrinātāju, kas kalpo lai atslogotu centrālo procesoru no attēlu formēšanas “rutīniskām” operācijām.
RAMDAC ir ciparu analogais pārveidotājs. Tā uzdevums ir pārveidot, video kontroliera noraidīto datu plūsmu, krāsu intensitātes līmeņos, ko tālāk pados uz monitoru. Praktiski visi monitori izmanto analogo video signālu (izņemot jaunos plānos monitorus), tāpēc iespējamais attēla krāsu diapazons tiek noteikts ar RAMDAC. Visbiežāk RAMDAC ir četri pamata bloki: trīs ciparu analogie pārveidotāji (DAC), pa vienam uz katru krāsas kanālu (sarkans, zaļš, zils, RGB), un SRAM (gammas korekcijas saglabāšanai).
Video ROM ir patstāvīgā atmiņas iekārta, kurā atrodas video-BIOS, ekrāna šrifti, darba tabulas un tamlīdzīgi. Video kontrolieris nevar vērsties tieši pie video ROM, jo pie video ROM vēršas tikai centrālais procesors. Daudzās mūsdienīgās kartēs tiek uzstādīti pārprogrammējami ROM (EEPROM, Flash ROM), kurus lietotājs ar no kartes komplektā ietilpstošās speciālas programmas palīdzību var pārprogrammēt. Video ROM ir nepieciešams tikai pie video adaptera sākuma palaišanas un darbam MS-DOS, Novell NetWare un citās OS, kuras strādā pārsvarā teksta režīmā. Tādas OS kā Windows, OS/2 un tamlīdzīgās, kuras strādā caur saviem video draiveriem, video ROM adaptera vadīšanai neizmanto vai arī to izmanto tikai MS-DOS komandu veikšanai.
Uz videokartes vēl mēdz būt arī viens vai vairāki kontakti iekšējiem pievienojumiem, viens no kuriem ir Feature Connector (kas domāts dažādu iekārtu piekļūšanai pie video atmiņas un attēliem). Šeit var pieslēgt tādas iekārtas, kā MPEG-dekoders, attēla ievades iekārta u.t.l.
Kādreiz ar grafisku attēlu sēriju veidošanu nodarbojās centrālais procesors, bet tagad to dara pati grafiskā karte, tādejādi CP ir pamatīgi atslogots. Mūsdienas 2D kartes īpašības ir tik tālu izpētītas, ka uzlabot tās veiktspēju nemainot krasi visu datora uzbūvi gandrīz nav iespējams, bet savukārt 3D karte ir tikai savas attīstības sākuma stadijās un šeit vēl daudz pārsteigumu ir priekšā. Piemēram, ieliekot Pentium I vienu no jaudīgākajām grafiskajām kartēm, bet Pentium II parastu grafisko karti, darbā ar Windows programmām nebūs īpašas starpības, bet grafiskā vidē, piemēram, spēlējot kādu spēli Pentium I būs pat krietni pārāks par Pentium II. Tālāk aplūkosim kā strādā 3D paātrinātājs.
3D paātrinātājs no daudziem daudzstūriem vai lauztām līnijām rada objektu. Objekts tiek apklāts ar virsmas aizpildījumu (respektīvi ar attēliem, kuri imitē materiālu no kura sastāv modelējamā objekta virsma), tiek ievadīti virsmas reljefa karte, atstarošanās karte u.t.l. Tālāk tiek izvietoti gaismas avoti (vai apgaismojošs vai aptumšojošais, piemēram, migla, lai simulētu nakts apstākļus) un tiek norādīts redzes leņķis no kura mēs monitorā vērojam šo scēnu. Tālāk objekts tiek apstrādāts sekojošā secībā:
1.          Tesselation. Šajā etapā objekts, kurš ir attēlots ar daudzstūriem vai lauztām līnijām tiek attēlots kā smalks siets, respektīvi virsma tiek sadalīta trīsstūros.
2.          Ģeometriskā transformācija (Geometry Transformation) ir 3D objekta griešana, pārvietošana un mēroga maiņa.
3.          Scēnas apgaismojuma aprēķināšana (Lighting). Šeit katrai virsotnei, izejot no gaismas avota novietojuma, tipa un izkliedes, tiek aprēķināts apgaismojums.
4.          Cliping. Šajā etapā tiek notušētas tās objekta daļas, kuras neiekļūst redzamības zonā (gan ārpus ekrāna, gan ļoti lielā attālumā), respektīvi tiek noteikts apgabals kurā scēnas kādas daļas ir neredzamas.
5.          Sietotā objekta projicēšana uz plakanas virsmas (Projection) ar vai bez nākotnes perspektīvām.
6.          Trīsstūru beigu sagatavošana (Triangle Setup) pirms izvadīšanas uz monitora. Šajā etapā tiek aprēķināts apgaismojums trīsstūra malās par pamatu ņemot virsotņu apgaismojumu, bet izejot no šiem datiem arī gradienta izmaiņu virzienu.
7.          Rasterizācija (Rasterisation). Šajā etapā tiek galīgi pabeigts apēnojums un neredzamo scēnas virsmu notušēšana (Hidden Surface Removal), respektīvi virsmu kam priekšā ir citas virsmas. Šeit arī tiek apstrādāts virsmas aizpildijums, ņemot vērā virsmu caurspīdīgumu, perspektīvas, detalizācijas līmeņus un metodes (LOD, Level Of Detail), filtrācijas metodes, aptumšojumu u.t.t.
8.          Beigu apstrāde (Post processing). Pēdējā etapā tiek strādāts ar gatavo attēlu. Piemēram, nosākuma attēls tiek aprēķināts lielā izšķirtspējā, nekā tiek izvadīts uz monitora. Izvadot uz ekrāna tas tiek pārrēķināts nedaudz mazāks, kā rezultātā krāsas attēlā labāk saplūst un tas ir daudz dabiskāks.
No 3D akseleratora var izdalīt šādas galvenās sastāvdaļas: ģeometrijas bloks, rasterizācijas bloks un atmiņa, kura ietver sevī kadru buferi (frame bufer), dziļuma buferi (Z-bufer), šablonu buferi un virsmas aizpildījuma atmiņu (Texture memory). Tālāk aplūkosim dažus no tiem nedaudz tuvāk.
Kadru buferis. Šī ir tā daļa kur tiek apstrādāta 3D scēnas beigu daļa. Parasti tiek izmantoti divi kadru buferi – priekšējais (front) un aizmugurējais (back). Priekšējā buferī atrodas tekošā kadra attēls, bet aizmugurējā buferī notiek nākošā kadra sagatavošana. Pēc tam kad kadrs parādīts buferi mainās vietām. Maiņai ir jānotiek tajā brīdi kad monitors ir beidzis rādīt kadru, pretējā gadījumā ekrāna augšējā daļā būs redzams vecais kadrs, bet apakšējā jau jaunais. Daži akseleratori ļauj izmantot arī trīs buferus (triple buffering). Šajā gadījumā viens kadrs tiek rādīts, nākamais tiek turēts gatavībā, bet trešais tiek sākts gatavot. No kadru bufera lieluma ir atkarīga arī maksimālā izšķirtspēja un krāsu daudzums. Piemēram, strādājot ar 1024*768 izšķirtspēju un 32 bītu krāsām, kur tiek izmantots trīs kadru buferis, nepieciešamā atmiņa būs : 1024*768*4*3=9437184 B t.i. 9 MB, bet ar 640*480 un 16 bītu, kur izmanto tikai priekšējo un aizmugurējo buferi, 640*480*2*2=1228800 B t.i. 1,2 MB.
Z-buferis tiek izmantots galvenokārt pārklājušos daļu noteikšanai, kad tiek sastādīti 3D objekti. Vienkārši runājot, tas ir masīvs, kurš satur dotā punkta dziļumu ( z koordinātu). Programma ar parastu dziļuma salīdzināšanu nosaka kuru punktu nepieciešams notušēt.
Šablonu buferis (Stencil buffer). To izmanto dažādu specifisku efektu iegūšanai pie objektu apstrādes. Piemēram, sagatavot beigu attēlu kadru buferī tikai tiem punktiem, kuriem šablonu buferī ir ierakstīta kaut kāda vērtība.
3D grafika ir cieši saistīta ar API interfeisu (Application Programming Interface). 3D paātrinātāju gadijumā API ir bibliotēku kopums, kas ir kā gatavs interfeiss darbam ar 3D paātrinātājiem. Uz šodienu eksistē ļoti daudz API, kurus var iedalīt divās klasēs: universālie un speciālie.
Universālie API ir kopēji visiem 3D paātrinātājiem. Šeit pirmām kārtām gribas nosaukt tādus API kā: OpenGL un Direct3D. OpenGL interfeiss ir izstrādāts firmā Silicon Graphics un tas atbalsta daudzas operētāj sistēmas. Savukārt Direct3D kompānijas Microssoft produkts. Abi šie produkti galvenokārt tiek izmantoti animāciju programmās un dažādās spēlēs.
Speciālie API ir domāti darbam ar paātrinātājiem, kuri ir būvēti noteiktās 3D kartēs. Vieni no pazīstamākajiem ir Glide API, kurš domāts darbam ar VooDoo karti, R-RedLine, kurš domāts darbam ar Rendition Verite karti, Metal ,kurš domāts darbam Savage 3D karti u.t.t. Speciālie API strādā tikai ar tām programmām kūrām tie tika rakstīti.


Literatūras saraksts.

Žurnāla “Computer Press” publikācijas.

Nav komentāru:

Ierakstīt komentāru